Bài giảng Kiến trúc máy tính (Computer Architecture): Chương 5 - Nguyễn Kim Khánh

116 11 0
Bài giảng Kiến trúc máy tính (Computer Architecture): Chương 5 - Nguyễn Kim Khánh

Đ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

Chương 5 - Kiến trúc tập lệnh. Những nội dung chính được trình bày trong chương này gồm có: Giới thiệu chung về kiến trúc tập lệnh, lệnh hợp ngữ và toán hạng, mã máy, cơ bản về lập trình hợp ngữ, các phương pháp định địa chỉ, dịch và chạy chương trình hợp ngữ.

NKK-HUST c om Kiến trúc máy tính cu u du o ng th an co ng Chương KIẾN TRÚC TẬP LỆNH Nguyễn Kim Khánh Trường Đại học Bách khoa Hà Nội 2017 Kiến trúc máy tính CuuDuongThanCong.com 194 https://fb.com/tailieudientucntt NKK-HUST Nội dung học phần cu u du o ng th an co ng c om Chương Giới thiệu chung Chương Cơ logic số Chương Hệ thống máy tính Chương Số học máy tính Chương Kiến trúc tập lệnh Chương Bộ xử lý Chương Bộ nhớ máy tính Chương Hệ thống vào-ra Chương Các kiến trúc song song 2017 Kiến trúc máy tính CuuDuongThanCong.com 195 https://fb.com/tailieudientucntt NKK-HUST c om Nội dung chương cu u du o ng th an co ng 5.1 Giới thiệu chung kiến trúc tập lệnh 5.2 Lệnh hợp ngữ toán hạng 5.3 Mã máy 5.4 Cơ lập trình hợp ngữ 5.5 Các phương pháp định địa 5.6 Dịch chạy chương trình hợp ngữ 2017 Kiến trúc máy tính CuuDuongThanCong.com 196 https://fb.com/tailieudientucntt NKK-HUST 5.1 Giới thiệu chung kiến trúc tập lệnh c om n th ng Hợp ngữ (assembly language): dạng lệnh đọc người n biểu diễn dạng text du o n Ngôn ngữ máy (machine language): u n n n n cu n an co n Kiến trúc tập lệnh (Instruction Set Architecture): cách nhìn máy tính người lập trình Vi kiến trúc (Microarchitecture): cách thực kiến trúc tập lệnh phần cứng Ngơn ngữ máy tính: ng n gọi mã máy (machine code) dạng lệnh đọc máy tính biểu diễn bit 2017 Kiến trúc máy tính CuuDuongThanCong.com 197 https://fb.com/tailieudientucntt NKK-HUST Mơ hình lập trình máy tính c om Bộ nhớ CPU ng PC du o ng ALU th an co Đơn vị điều khiển u Tập ghi lệnh lệnh lệnh lệnh liệu liệu liệu liệu cu Vào-ra 2017 Kiến trúc máy tính CuuDuongThanCong.com 198 https://fb.com/tailieudientucntt NKK-HUST CPU nhận lệnh từ nhớ Bộ đếm chương trình PC (Program Counter) ghi CPU giữ địa lệnh cần nhận vào để thực c om n lệnh ng lệnh th Sau lệnh nhận vào, nội dung PC tự động tăng để trỏ sang lệnh PC lệnh nhận vào lệnh lệnh du o ng n lệnh co CPU phát địa từ PC đến nhớ, lệnh nhận vào an n u PC tăng bao nhiêu? n n cu n lệnh Tùy thuộc vào độ dài lệnh vừa nhận MIPS: lệnh có độ dài 32-bit, PC tăng 2017 Kiến trúc máy tính CuuDuongThanCong.com 199 https://fb.com/tailieudientucntt NKK-HUST Giải mã thực lệnh c om Bộ xử lý giải mã lệnh nhận phát tín hiệu điều khiển thực thao tác mà lệnh yêu cầu Trao đổi liệu CPU nhớ cổng vào-ra ng n an Các kiểu thao tác lệnh: th n co ng n du o Thực phép toán số học phép toán logic với liệu (được thực ALU) u n Chuyển điều khiển chương trình (rẽ nhánh, nhảy) cu n 2017 Kiến trúc máy tính CuuDuongThanCong.com 200 https://fb.com/tailieudientucntt NKK-HUST CPU đọc/ghi liệu nhớ c om Với lệnh trao đổi liệu với nhớ, CPU cần biết phát địa ngăn nhớ cần đọc/ghi Địa là: n an th cu u n Hằng số địa cho trực tiếp lệnh Giá trị địa nằm ghi trỏ Địa = Địa sở + giá trị dịch chuyển ng n du o n co ng n 2017 Kiến trúc máy tính CuuDuongThanCong.com 201 https://fb.com/tailieudientucntt NKK-HUST ng Hằng số địa liệu liệu liệu liệu cần đọc/ghi liệu liệu liệu liệu cu u du o ng th an n Trong lệnh cho số địa cụ thể CPU phát giá trị địa đến nhớ để tìm ngăn nhớ liệu cần đọc/ghi co n c om Hằng số địa 2017 Kiến trúc máy tính CuuDuongThanCong.com 202 https://fb.com/tailieudientucntt NKK-HUST ng liệu liệu liệu liệu cần đọc/ghi liệu liệu liệu liệu cu u du o ng n Thanh ghi th an n Trong lệnh cho biết tên ghi trỏ Thanh ghi trỏ chứa giá trị địa CPU phát địa để tìm ngăn nhớ liệu cần đọc/ghi co n c om Sử dụng ghi trỏ 2017 Kiến trúc máy tính CuuDuongThanCong.com 203 https://fb.com/tailieudientucntt NKK-HUST Ví dụ mã lệnh j jr L1 # nhảy đến vị trí có nhãn L1 jr $ra # nhảy đến vị trí có địa $ra; c om j jump target address co op 25 0 0 0 0 0 0 0 0 0 0 0 0 1 1 an J 31 ng # $ra chứa địa trở du o ng th j=2 x x x x 0 0 0 1 1 0 0 0 0 0 0 0 0 R op cu 31 u From PC 25 Effective target address (32 bits) rs 20 rt rd 15 10 sh fn 0 0 0 1 1 0 0 0 0 0 0 0 0 0 ALU instruction Source register 2017 Unused Unused Unused jr = Kiến trúc máy tính CuuDuongThanCong.com 295 https://fb.com/tailieudientucntt NKK-HUST 0x8000 0 19 add $t1, $t1, $s6 0x8004 22 32 lw $t0, 0($t1) 0x8008 35 bne $t0, $s5, Exit 0x800C 21 0x8010 19 19 0x8014 co ng 0x2000 0x8018 cu u Exit: … Loop du o j an addi $s3, $s3, ng $t1, $s3, th Loop: sll c om Ví dụ mã hóa lệnh 2017 Kiến trúc máy tính CuuDuongThanCong.com 296 https://fb.com/tailieudientucntt NKK-HUST Rẽ nhánh xa n Nếu đích rẽ nhánh q xa để mã hóa với offset 16-bit, assembler viết lại code Ví dụ c om n an co ng beq $s0, $s1, L1 (lệnh kế tiếp) du o ng th L1: cu u thay đoạn lệnh sau: bne $s0, $s1, L2 j L1 L2: (lệnh kế tiếp) L1: 2017 Kiến trúc máy tính CuuDuongThanCong.com 297 https://fb.com/tailieudientucntt NKK-HUST Tóm tắt phương pháp định địa 2.10 MIPS Addressing for 32-bit Immediates and Addresses Immediate addressing op rs rt Immediate c om Định địa tức Register addressing Định địa ghi rs rt rd funct co ng op Registers Register Base addressing op rs du o ng th an Định địa sở op u cu CuuDuongThanCong.com Register rs rt Memory + Address PC Byte Halfword Word Memory + Word Pseudodirect addressing op 2017 Address PC-relative addressing Định địa tương PC Định địa giả trực tiếp rt Address PC Memory Word Kiến2.18 trúc máy tính of the five MIPS addressing modes The operands are shaded298 FIGURE Illustration in color The operand of mode is in memory, whereas the operand for mode is a register Note that versions of load and store access bytes, halfwords, or words For mode 1, the operand is 16 bits of the instruction itself https://fb.com/tailieudientucntt Modes and address instructions in memory, with mode adding a 16-bit address shifted left bits to the NKK-HUST Các phần mềm lập trình hợp ngữ MIPS: n ng co MIPS Reference Data cu u du o n an n MARS MipsIt QtSpim th n ng n c om 5.6 Dịch chạy chương trình hợp ngữ 2017 Kiến trúc máy tính CuuDuongThanCong.com 299 https://fb.com/tailieudientucntt NKK-HUST Dịch chạy ứng dụng c om High Level Code ng Compiler co Assembly Code th an Assembler Object Files Library Files Linker cu u du o ng Object File Executable Loader Memory 2017 Kiến trúc máy tính CuuDuongThanCong.com 300 https://fb.com/tailieudientucntt NKK-HUST Chương trình nhớ Tồn cục/tĩnh: cấp phát trước chương trình bắt đầu thực Động: cấp phát chương trình thực Bộ nhớ: n 232 bytes = GiB Địa từ 0x00000000 đến 0xFFFFFFFF u n cu n du o ng th n an co n c om n Các lệnh (instructions) Dữ liệu ng n 2017 Kiến trúc máy tính CuuDuongThanCong.com 301 https://fb.com/tailieudientucntt NKK-HUST Bản đồ nhớ MIPS Segment Address c om 0xFFFFFFFC Reserved ng 0x80000000 0x7FFFFFFC co Stack an Dynamic Data 0x10010000 Heap cu Static Data 0x10000000 0x0FFFFFFC Text u du o ng th 0x1000FFFC 0x00400000 0x003FFFFC Reserved 0x00000000 2017 Kiến trúc máy tính CuuDuongThanCong.com 302 https://fb.com/tailieudientucntt NKK-HUST Ví dụ: Mã C cu u du o ng th an int main(void) { f = 2; g = 3; y = sum(f, g); return y; } ng c om // global co int f, g, y; variables int sum(int a, int b) { return (a + b); } 2017 Kiến trúc máy tính CuuDuongThanCong.com 303 https://fb.com/tailieudientucntt NKK-HUST du o y 0($sp) $sp, $v0, $a0, $a1 $ra 2017 ng co stack frame store $ra $a0 = f = $a1 = g = call sum y = sum() restore $ra restore $sp return to OS th an # # # # # # # # # # # ng $sp, -4 0($sp) $0, f $0, g u $sp, $ra, $a0, $a0, $a1, $a1, sum $v0, $ra, $sp, $ra cu data f: g: y: text main: addi sw addi sw addi sw jal sw lw addi jr sum: add jr c om Ví dụ chương trình hợp ngữ MIPS # $v0 = a + b # return Kiến trúc máy tính CuuDuongThanCong.com 304 https://fb.com/tailieudientucntt NKK-HUST Bảng ký hiệu Địa 0x10000000 g 0x10000004 y 0x10000008 0x00400000 0x0040002C cu u du o sum ng main th an ng f co c om Ký hiệu 2017 Kiến trúc máy tính CuuDuongThanCong.com 305 https://fb.com/tailieudientucntt includes only machine instructions The data segment gives the address of each global variable The global variables are addressed with respect NKK-HUST to the base address given by the global pointer, $gp For example, the first Chương trình thực thi Executable file header Data Size 0x34 (52 bytes) 0xC (12 bytes) Address Instruction 0x00400000 0x23BDFFFC addi $sp, $sp, –4 0xAFBF0000 sw 0x20040002 addi $a0, $0, 0xAF848000 sw 0x20050003 addi $a1, $0, 0x00400014 0xAF858004 sw $a1, 0x8004($gp) 0x00400018 0x0C10000B jal 0x0040002C 0x0040001C 0xAF828008 sw $v0, 0x8008($gp) 0x00400020 0x8FBF0000 lw $ra, 0($sp) 0x00400024 0x23BD0004 addi $sp, $sp, –4 0x00400028 0x03E00008 jr 0x0040002C 0x00851020 add $v0, $a0, $a1 0x00400030 0x03E00008 jr Address Data 0x10000000 f 0x10000004 g 0x10000008 y ng Text segment 0x00400008 0x0040000C an 0x00400010 co 0x00400004 u du o ng th xecutable cu Data segment 2017 c om Text Size $ra, 0($sp) $a0, 0x8000($gp) $ra $ra Kiến trúc máy tính CuuDuongThanCong.com 306 https://fb.com/tailieudientucntt NKK-HUST Chương trình nhớ Address Memory 0x10010000 Heap $sp = 0x7FFFFFFC ng Stack co 0x7FFFFFFC c om Reserved y th g f cu u du o ng 0x10000000 an $gp = 0x10008000 0x03E00008 0x00851020 0x03E00008 0x23BD0004 0x8FBF0000 0xAF828008 0x0C10000B 0xAF858004 0x20050003 0xAF848000 0x20040002 0xAFBF0000 0x00400000 0x23BDFFFC PC = 0x00400000 Reserved 2017 Kiến trúc máy tính CuuDuongThanCong.com 307 https://fb.com/tailieudientucntt NKK-HUST c om Ví dụ lệnh giả (Pseudoinstruction) Pseudoinstruction MIPS Instructions lui $s0, 0x1234 ori $s0, 0xAA77 mult $s1, $s2 mflo $s0 add $t0, $0, $0 an co ng li $s0, 0x1234AA77 du o clear $t0 ng th mul $s0, $s1, $s2 nop cu u move $s1, $s2 2017 add $s2, $s1, $0 sll $0, $0, Kiến trúc máy tính CuuDuongThanCong.com 308 https://fb.com/tailieudientucntt co ng c om NKK-HUST cu u du o ng th an Hết chương 2017 Kiến trúc máy tính CuuDuongThanCong.com 309 https://fb.com/tailieudientucntt ... ng 5. 1 Giới thiệu chung kiến trúc tập lệnh 5. 2 Lệnh hợp ngữ toán hạng 5. 3 Mã máy 5. 4 Cơ lập trình hợp ngữ 5. 5 Các phương pháp định địa 5. 6 Dịch chạy chương trình hợp ngữ 2017 Kiến trúc máy tính. .. Chương Bộ nhớ máy tính Chương Hệ thống vào-ra Chương Các kiến trúc song song 2017 Kiến trúc máy tính CuuDuongThanCong.com 1 95 https://fb.com/tailieudientucntt NKK-HUST c om Nội dung chương cu u...NKK-HUST Nội dung học phần cu u du o ng th an co ng c om Chương Giới thiệu chung Chương Cơ logic số Chương Hệ thống máy tính Chương Số học máy tính Chương Kiến trúc tập lệnh Chương Bộ xử lý Chương

Ngày đăng: 29/05/2021, 10:34

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

Tài liệu liên quan