Bài giảng Kiến trúc máy tính: Chương II (tt)

Chia sẻ: TRẦN VĂN THUẤN THUẤN | Ngày: | Loại File: PPTX | Số trang:36

lượt xem

Bài giảng Kiến trúc máy tính: Chương II (tt)

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Kiến trúc máy tính - Chương II (tt): Kiến trúc tập lệnh 2, trình bày các nội dung: biên dịch mã máy, các định dạng lệnh, các hằng số lớn, các thủ tục gọi, tập các thanh ghi, bộ nhớ ngăn xếp, các ISA khác.

Chủ đề:

Nội dung Text: Bài giảng Kiến trúc máy tính: Chương II (tt)

  1. Kiến trúc tập lệnh 2
  2. Nội dung ¡ Biên dịch mã máy – Các định dạng lệnh – Các hằng số lớn ¡ Các thủ tục gọi – Tập các thanh ghi – Bộ nhớ ngăn xếp ¡ Các ISA khác
  3. Một số vấn đề không có trong bài giảng Đọc từ sách – Sign extension for two’s complement numbers (2.4) – Logical operations (2.6) – Assembler, linker, and loader (2.12) You will need 2.4 and 2.6 for this lecture. (2.12 will be on the exam.) The book has excellent descriptions of these topics. Please read the book before watching this lecture.
  4. Biên dịch thành mã máy Mã hóa và các định dạng
  5. Định dạng lệnh (mã máy) Ngôn ngữ máy – Máy tính không hiểu được chuỗi ký tự sau “add R8, R17, R18” – Các lệnh phải được chuyển đổi thành ngôn ngữ máy(1s and 0s) Ví dụ: add R8, R17, R18 → 00000010 00110010 01000000 00100000 Các trường lệnh MIPS • opcode mã lệnh xác định phép toán (e.g., “add” “lw”) • rs chỉ số thanh ghi chứa toán hạng nguồn 1 trong tệp thanh ghi • rt chỉ số thanh ghi chưa toán hạng nguồn 2 trong tệp thanh ghi • rd chỉ số thanh ghi lưu kết quả • shamt Số lượng dịch • funct mã chức năng thêm cho phần mã lệnh (add = 32, sub =34)
  6. Hằng số (tức thời – trực tiếp) How many bits  Các hằng số nhỏ (tức thì) được sử dụng ở hầu hết các đoạn needed to choose  mã (~50%) ví dụ : If (a==b) c=1; else c=2; from all those  • How can we support this in the processor? registers? – Put the “typical constants” in memory and load them (slow) – Create hard‐wired registers (like R0) for them (how many?) • MIPS does something in between: – Some instructions can have constants inside the instruction Store the constant  – The control logic then sends the constants to the ALU data in the  – addi R29, R29, 4 ← value 4 is inside the instruction instruction, not the  • But there’s a problem: register file. – Instructions have only 32 bits. Need some for opcode and registers. How do we tradeoff space for constants and instructions?
  7. Định dạng lệnh MIPS Câu hỏi: Lệnh cộng tức thời (addi) cần bao nhiêu bit? • MIPS có 3 dạng chỉ thị : Trả lời: I-format: – R: operation 3 registers no immediate 5+5+6 bits – I: operation 2 registers short immediate = 16 bits. 2’s complement – J: jump 0 registers long immediate -32,768 to +32767
  8. Tải các giá trị tức thì (hằng số) Control tells  the ALU to  take one  operand from  the Register  File and the  other from  the  Instruction.
  9. Các hằng số lớn và lệnh rẽ nhánh
  10. Tải các giá trị lớn • Trường lệnh trực tiếp giới hạn trong 16 bits (-32,768 to Question: Is the  +32,767) immediate sign‐ – Làm thế nào để tải được các giá trị lớn? extended for ori? • Sử dụng 2 lệnh để tải Answer: – Load Upper Immediate (lui): Loads upper 16 bits No. If it was we would  – Or Immediate (ori): Loads lower 16bits end up with all 1s in  • Example: 10101010 10101010 11110000 11110000 the top bits. (See the MIPS  reference data in the  book.)
  11. Đánh địa chỉ có lệnh rẽ nhánh và lệnh nhảy Question: Các lệnh rẽ nhánh How far can you  – bne/beq I-format 16 bit immediate jump with  –j J-format 26 bit immediate bne/beq? Answer: Địa chỉ là 32 bits! How do we handle this? ­32,767 to  – Treat bne/beq as relative offsets (add to current PC) +32,768  – Treat j as an absolute value (replace 26 bits of the PC) instructions from  the current  instruction
  12. Nhảy đến địa chỉ lệnh: loops
  13. Why do relative branches work? Question: What is “Int” and “FP”? Answer: Integer and Floating Point  programs. Most branches don’t go very far!
  14. What kind of branches are  common?
  15. Summary: machine code  and immediate Instructions have different encodings to store different types of data (3  register vs. immediate) MIPS has 3 types, for different uses Encodings limit how much data we can have These are tradeoffs in design: – Optimize for the common case (short immediate) – Support the general case (long immediate)
  16. Thủ tục gọi hàm
  17. Các thủ tục gọi hàm Procedures (functions/subroutines) are needed for structured  programming This procedure is  likely not in your  main( ) { for ( j=0; j
  18. More specifically: Caller: main() Callee: update() main( ) { for ( j=0; j
  19. Caller context Example procedure: f(g,h,i,j)=(g+h) – (i+j) Problems: • The callee does not know  add R1, R4, R5 ;          g=R4, h=R5 which registers the caller is  add R2, R6, R7 ;          i=R6, j=R7 using! (It could have multiple  sub  R3, R1, R2 different callers) • The caller does not know  If the caller (e.g., main()) uses R1, R2 or  which registers the callee will  R3 they would have to be saved because  use! the callee overwrites them when it  (Could call multiple sub­ executes procedures) MIPS has a convention on who saves which registers • Divided between the callee and caller • Following this convention allows any caller to call any callee • Callee and caller both know it what they need to save
  20. Saving registers: MIPS conventions Question: What  • MIPS Convention are registers – Agreed upon “contract” or “protocol” that everyone follows $s0 ­ $s8 and  – Specifies the correct (and expected) usage and some naming  $sp, $fp, $ra? conventions Answer: – Established as part of the architecture Just standard  – Used by all compilers, programs, and libraries names for R16 ‐  – Assures compatibility R23 and R29‐ R31. • Callee saves the following registers if it uses them: – $s0 ‐ $s7 (s=saved) – $sp, $fp,$ra • Caller must save anything else it uses



Đồng bộ tài khoản