Bài giảng Kiến trúc máy tính: Chương II (tt)
lượt xem 11
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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
- 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
- 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.
- Biên dịch thành mã máy Mã hóa và các định dạng
- Đị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)
- 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?
- Đị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
- 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.
- Các hằng số lớn và lệnh rẽ nhánh
- 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.)
- Đá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
- Nhảy đến địa chỉ lệnh: loops
- Why do relative branches work? Question: What is “Int” and “FP”? Answer: Integer and Floating Point programs. Most branches don’t go very far!
- What kind of branches are common?
- 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)
- Thủ tục gọi hàm
- 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
- More specifically: Caller: main() Callee: update() main( ) { for ( j=0; j
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kiến trúc máy tính: Chương 1 - TS. Nguyễn Qúy Sỹ
46 p | 269 | 52
-
Bài giảng Kiến trúc máy tính: Chương 3 - Cấu trúc phần cứng của máy tính
12 p | 269 | 48
-
Bài giảng Kiến trúc máy tính - ĐH Hàng Hải
95 p | 207 | 32
-
Bài giảng Kiến trúc máy tính (238tr)
238 p | 149 | 23
-
Bài giảng Kiến trúc máy tính: Chương 1 - Phạm Hoàng Sơn
70 p | 138 | 20
-
Bài giảng Kiến trúc máy tính: Chương 1 - ThS. Lê Văn Hùng
17 p | 147 | 11
-
Bài giảng Kiến trúc máy tính - Chương 1: Tổng quan về kiến trúc máy tính
40 p | 29 | 9
-
Bài giảng Kiến trúc máy tính: Chương 1 - ThS. Nguyễn Hằng Phương
24 p | 110 | 9
-
Bài giảng Kiến trúc máy tính và hệ điều hành: Chương 1 - Nguyễn Ngọc Duy
30 p | 56 | 6
-
Bài giảng Kiến trúc máy tính: Chương 7 - ThS. Lê Văn Hùng
18 p | 122 | 5
-
Bài giảng Kiến trúc máy tính - Kiến trúc bộ lệnh
78 p | 82 | 4
-
Bài giảng Kiến trúc máy tính - Chương 1: Giới thiệu
51 p | 78 | 3
-
Bài giảng Kiến trúc máy tính và Hệ điều hành: Chương 3 - Vũ Thị Thúy Hà
89 p | 12 | 3
-
Bài giảng Kiến trúc máy tính và Hệ điều hành: Chương 1 - Vũ Thị Thúy Hà
83 p | 9 | 2
-
Bài giảng Kiến trúc máy tính và Hệ điều hành: Chương 2 - Vũ Thị Thúy Hà
106 p | 4 | 2
-
Bài giảng Kiến trúc máy tính và Hệ điều hành: Chương 4 - Vũ Thị Thúy Hà
64 p | 5 | 2
-
Bài giảng Kiến trúc máy tính và Hệ điều hành: Chương 5 - Vũ Thị Thúy Hà
20 p | 6 | 2
-
Bài giảng Kiến trúc máy tính và Hệ điều hành: Chương 6 - Vũ Thị Thúy Hà
74 p | 13 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn