Bài giảng Kiến trúc máy tính: Chương 3 - Võ Tấn Phương

72 33 0
Bài giảng Kiến trúc máy tính: Chương 3 - Võ Tấn Phương

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mời các bạn tham khảo bài giảng Kiến trúc máy tính: Chương 3 - MIPS Instruction Set Architecture sau đây để nắm bắt được những kiến thức về kiến trúc tập lệnh, kiến trúc bộ xử lý MIPS, các lệnh số học, luận lý, dịch; các lệnh số học, luận lý có hằng số; các lệnh nhảy và rẽ nhánh và một số kiến thức khác.

dce 2015 KIẾN TRÚC MÁY TÍNH KHOA HỌC & KỸ THUẬT MÁY TÍNH BK TP.HCM Võ Tấn Phương http://www.cse.hcmut.edu.vn/~vtphuong dce 2015 Chapter MIPS Instruction Set Architecture Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 Nội dung trình bày  Kiến trúc tập lệnh (Instruction Set Architecture)  Sơ kiến trúc xử lý MIPS  R-Type Các lệnh số học, luận lý, dịch  I-Type Các lệnh số học, luận lý có số  Các lệnh nhảy rẽ nhánh  Chuyển phát biểu If biểu thức boolean  Các lệnh truy xuất nhớ Load & Store  Chuyển đổi khối lặp duyệt mảng  Các chế độ định địa Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 Kiến trúc tập lệnh (ISA)  Là dao diện phần cứng phần mềm, nhìn trừu tượng phần cứng quan điểm phần mềm  Kiến trúc tập lệnh bao gồm…  Tập lệnh định dạng lệnh  Kiểu liệu, cách mã hóa biễu diễn  Đối tượng lưu trữ: Thanh ghi (Registers) nhớ (Memory)  Các chế độ định địa để truy xuất lệnh liệu  Xử lý điều kiện ngoại lệ (vd: chia cho 0)  Ví dụ (Phiên bản) Năm giới thiệu  Intel (8086, 80386, Pentium, ) 1978  MIPS (MIPS I, II, III, IV, V) 1986  PowerPC (601, 604, …) 1993 Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 Kiến trúc ghi tích lũy Accumulator latch ALU registers address Memory latch Ví dụ lệnh: a = b+c; load b; add c; store a; // accumulator is implicit operand Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 Kiến trúc Stack latch latch stack ALU latch Ví dụ lệnh: a = b+c; push b; push b push c; b stack: add; pop a; Kiến trúc Máy tính– Chương Memory stack pt push c c b add pop a b+c © Fall 2015 dce 2015 Các kiến trúc khác Ví dụ lệnh C = A + B Stack Architecture Accumulator Architecture RegisterMemory MemoryMemory Register (load-store) Push A Load A Load r1,A Add C,B,A Load r1,A Push B Add Add Add Store C Pop B C r1,B Store C,r1 Load r2,B Add r3,r1,r2 Store C,r3 Bài tập: C = A + B + chuyển sang lệnh dung kiến trúc Stack ghi tích lũy? Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 So sánh kiến trúc  Thanh ghi tích lũy  Một tốn hạn (có thể ghi memory), ghi tích lũy sử dụng ngầm định  Stack  Khơng tốn hạn: tốn hạn ngầm định đỉnh Stack (TOS)  Register (load store)  Ba toán hạn ghi  Load & Store lệnh dành riêng cho việc truy xuất memory (truy xuất gián tiếp thông qua ghi)  Register-Memory  Hai toán hạn, memory  Memory-Memory  Ba tốn hạn, tất memory Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 Tập lệnh  Tập lệnh ngôn ngữ xử lý  Kiến trúc tập lệnh MIPS dùng môn học  Loại: Reduced Instruction Set Computer (RISC)  Thiết kế đơn giản tinh tế  Giống với kiến trúc RISC phát triển thập niên 80 đến thập niên 90  Rất phổ biến, dùng  Silicon Graphics, ATI, Cisco, Sony, etc  Phổ biến sau xử lý Intel IA-32  Gần 100 triệu xử lý MIPS bán năm 2002  Ví dụ kiến thúc khác: Intel IA-32  Loại: Complex Instruction Set Computer (CISC) Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 Ví dụ chương trình hợp ngữ MIPS Kiến trúc Máy tính– Chương © Fall 2015 10 dce 2015 Ví dụ chi tiết liệu lệnh Store Kiến trúc Máy tính– Chương © Fall 2015 58 dce 2015 Ví dụ sử dụng Load & Store  Chuyển A[1] = A[2] + (A mảng kiểu word)  Giả sử địa mảng A lưu $s0 lw $s1, 8($s0) # $s1 = A[2] addiu $s2, $s1, # $s2 = A[2] + sw # A[1] = $s2 $s2, 4($s0)  Địa a[2] a[1] nhân Tại sao? Memory Registers $s0 = $16 address of A $s1 = $17 value of A[2] $s2 = $18 A[2] + lw sw A[3] A+12 A[2] A+8 A[1] A+4 A[0] A Kiến trúc Máy tính– Chương © Fall 2015 59 dce 2015 Load/Store Byte Halfword  MIPS hỗ trợ kiểu liệu: Byte = bits, Halfword = 16 bits, Word = 32 bits  Lệnh Load & store cho bytes halfwords lb = load byte, lbu = load byte unsigned, sb = store byte lh = load half, lhu = load half unsigned, halfword sh = store  Load mở rộng giá trị ô nhớ thành số 32-bit ghi 32-bit Register s sign – extend s s b zero – extend bu s sign – extend s s h zero – extend hu Kiến trúc Máy tính– Chương © Fall 2015 60 dce 2015 Các lệnh Load & Store Instruction lb lh lw lbu lhu sb sh sw rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) rt, imm16(rs) Meaning rt = MEM[rs+imm16] rt = MEM[rs+imm16] rt = MEM[rs+imm16] rt = MEM[rs+imm16] rt = MEM[rs+imm16] MEM[rs+imm16] = rt MEM[rs+imm16] = rt MEM[rs+imm16] = rt I-Type Format 0x20 0x21 0x23 0x24 0x25 0x28 0x29 0x2b rs5 rs5 rs5 rs5 rs5 rs5 rs5 rs5 rt5 rt5 rt5 rt5 rt5 rt5 rt5 rt5 imm16 imm16 imm16 imm16 imm16 imm16 imm16 imm16  Định địa theo địa độ dời  Memory Address = Rs (base) + Immediate16 (offset) Kiến trúc Máy tính– Chương © Fall 2015 61 dce 2015 Tiếp theo …  Kiến trúc tập lệnh (Instruction Set Architecture)  Sơ kiến trúc xử lý MIPS  R-Type Các lệnh số học, luận lý, dịch  I-Type Các lệnh số học, luận lý, dịch có số  Các lệnh nhảy rẽ nhánh  Chuyển phát biểu If biểu thức boolean  Các lệnh truy xuất nhớ Load & Store  Chuyển đổi khối lặp duyệt mảng  Các chế độ định địa Kiến trúc Máy tính– Chương © Fall 2015 62 dce 2015 Chuyển đổi khối lặp WHILE  Xét phát biểu WHILE: Memory i = 0; while (A[i] != k) i = i+1; Giả sử địa A, i, k tương ứng $s0, $s1, $s2  Chuyển phát biểu WHILE? $s1, $t0, $t1, $t1, $s1, $t0, $t0, loop Kiến trúc Máy tính– Chương $s1, $s1 $s0 0($t0) $s2, exit $s1, $s1, $s0, $t0 A[i] A+4×i A mảng số nguyên byte xor move loop: lw beq addiu sll addu j exit: A[2] A+8 A[1] A[0] A+4 A # # # # # # # i = $t0 = address A $t1 = A[i] exit if (A[i]== k) i = i+1 $t0 = 4*i $t0 = address A[i] © Fall 2015 63 dce 2015 Sử dụng trỏ để duyệt Arrays  Xét phát biểu WHILE: i = 0; while (A[i] != k) i = i+1; A mảng số nguyên byte Giả sử địa A, i, k tương ứng $s0, $s1, $s2  Sử dụng trỏ (Pointer) để duyệt mảng A Pointer tăng lên (faster than indexing) move $t0, $s0 # $t0 = $s0 = addr A j cond # test condition loop: addiu $s1, $s1, # i = i+1 addiu $t0, $t0, # point to next cond: lw $t1, 0($t0) # $t1 = A[i] bne $t1, $s2, loop # loop if A[i]!= k  Chỉ cịn lệnh (thay 6) thân vịng lặp Kiến trúc Máy tính– Chương © Fall 2015 64 dce 2015 Copying a String Copy chuỗi nguồn sang chuỗi đích Địa củ chuỗi nguồn $s0 đích $s1 Chuỗi kết thúc ký tự null (C strings) i = 0; {target[i]=source[i]; i++;} while (source[i]!=0); move move L1: lb sb addiu addiu bne $t0, $t1, $t2, $t2, $t0, $t1, $t2, $s0 $s1 0($t0) 0($t1) $t0, $t1, $zero, L1 Kiến trúc Máy tính– Chương # # # # # # # $t0 = pointer to source $t1 = pointer to target load byte into $t2 store byte into target increment source pointer increment target pointer loop until NULL char © Fall 2015 65 dce 2015 Tính tổng mảng nguyên sum = 0; for (i=0; i Forward, Hằng số âm => Backward  Khoảng cách xa ±215 lệnh (thông thường lệnh rẽ nhánh có địch đích lân cận vị trí lệnh) Kiến trúc Máy tính– Chương © Fall 2015 70 dce 2015 Summary of RISC Design  All instructions are typically of one size  Few instruction formats  All operations on data are register to register  Operands are read from registers  Result is stored in a register  General purpose integer and floating point registers  Typically, 32 integer and 32 floating-point registers  Memory access only via load and store instructions  Load and store: bytes, half words, words, and double words  Few simple addressing modes Kiến trúc Máy tính– Chương © Fall 2015 71 dce 2015 Four Design Principles Simplicity favors regularity  Fix the size of instructions (simplifies fetching & decoding)  Fix the number of operands per instruction  Three operands is the natural number for a typical instruction Smaller is faster  Limit the number of registers for faster access (typically 32) Make the common case fast  Include constants inside instructions (faster than loading them)  Design most instructions to be register-to-register Good design demands good compromises  Fixed-size instructions compromise the size of constants Kiến trúc Máy tính– Chương © Fall 2015 72 ... Half Word ? ?32 ,768 to +32 ,767 –215 to (215 – 1) Word –2,147,4 83, 648 to +2,147,4 83, 647 – 231 to ( 231 – 1) Double Word –9,2 23, 372, 036 ,854,775,808 to +9,2 23, 372, 036 ,854,775,807 –2 63 to (2 63 – 1) Câu... 26 Nhân $s1 với 31 , Gợi ý: 31 = 32 – sll $s2, $s1, subu $s2, $s2, $s1 Kiến trúc Máy tính– Chương ; $s2 = $s1 * 32 ; $s2 = $s1 * 31 © Fall 2015 33 dce 2015 Tiếp theo …  Kiến trúc tập lệnh (Instruction...  Ví dụ kiến thúc khác: Intel IA -3 2  Loại: Complex Instruction Set Computer (CISC) Kiến trúc Máy tính– Chương © Fall 2015 dce 2015 Ví dụ chương trình hợp ngữ MIPS Kiến trúc Máy tính– Chương ©

Ngày đăng: 20/05/2021, 02:54

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan