Bài giảng Vi xử lý nâng cao - Phần 1: Thiết kế CPU RISC - Bài 02: Kiến trúc tập lệnh ISA

Nhắc lại: tổ chức của bộ xử lý
Đơn vị điều khiển:
 Quyết định lệnh nào là lệnh tiếp theo
và nhập lệnh này từ bộ nhớ.
 Giải mã lệnh.
 Phân phát tín hiệu để điều khiển cách
thức mà luồng thông tin luân chuyển giữa
các thành phần của đường dữ liệu.
 Điều khiển những thao tác mà các đơn vị
chức năng của đường dữ liệu thực hiện.
 Thực thi lệnh – các đơn vị chức năng (như là mạch cộng)
và các vị trí nhớ (như là tập thanh ghi).
 Liên kết nối các đơn vị chức năng sao cho lệnh có thể
được thực thi theo yêu cầu.
 Nạp dữ liệu từ bộ nhớ và lưu dữ liệu vào bộ nhơ
pdf 51 trang thamphan 27/12/2022 1720
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý nâng cao - Phần 1: Thiết kế CPU RISC - Bài 02: Kiến trúc tập lệnh ISA", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_vi_xu_ly_nang_cao_phan_1_thiet_ke_cpu_risc_bai_02.pdf
  • pptLec2 - ISA - I.ppt

Nội dung text: Bài giảng Vi xử lý nâng cao - Phần 1: Thiết kế CPU RISC - Bài 02: Kiến trúc tập lệnh ISA

  1. Bài giảng “Vi xử lý nâng cao” Phần 1: Thiết kế CPU RISC Bài 02: Kiến trúc tập lệnh ISA (1) 1
  2. Nhắc lại: tổ chức của bộ xử lý  Đơn vị điều khiển: Fetch  Quyết định lệnh nào là lệnh tiếp theo và nhập lệnh này từ bộ nhớ. Exec Decode  Giải mã lệnh.  Phân phát tín hiệu để điều khiển cách thức mà luồng thông tin luân chuyển giữa các thành phần của đường dữ liệu.  Điều khiển những thao tác mà các đơn vị chức năng của đường dữ liệu thực hiện.  Đường dữ liệu:  Thực thi lệnh – các đơn vị chức năng (như là mạch cộng) và các vị trí nhớ (như là tập thanh ghi).  Liên kết nối các đơn vị chức năng sao cho lệnh có thể được thực thi theo yêu cầu.  Nạp dữ liệu từ bộ nhớ và lưu dữ liệu vào bộ nhớ. 3
  3. RISC – Máy tính có tập lệnh rút gọn  Triết lý RISC (reduced instruction set computer)  Chiều dài lệnh cố định.  Các lệnh nạp và lưu bộ nhớ ( load-store).  Số các chế độ định địa chỉ bị giới hạn.  Số các thao tác bị giới hạn.  MIPS, Sun SPARC, HP PA-RISC, IBM PowerPC  Các tập lệnh được so sánh theo cách trình biên dịch sử dụng chúng tốt ra sao chứ không phải theo cách những người lập trình hợp ngữ sử dụng chúng tốt ra sao.  CISC (C là phức tạp) , chẳng hạn như Intel x86. 5
  4. Các lệnh số học của MIPS  Các lệnh hợp ngữ số học của MIPS add $t0, $s1, $s2 sub $t0, $s1, $s2  Mỗi lệnh số học chỉ thực hiện một thao tác duy nhất.  Mỗi lệnh số học chỉ ra chính xác ba toán hạng destination ← source1 op source2  Thứ tự của toán hạng là cố định (toán hạng đích được chỉ ra trước tiên)  Các toán hạng được chứa trong tập thanh ghi (register file) của đường dữ liệu (như là $t0, $s1, $s2) 7
  5. Biên dịch các lệnh phức tạp hơn  Giả sử biến b được lưu trong thanh ghi $s1, c được lưu trong $s2, d được lưu trong $s3 và kết quả được cất vào trong $s0, tương đương hợp ngữ đối với phát biểu C sau đây là gì? h = (b - c) + d 9
  6. Tập thanh ghi của MIPS  Các toán hạng của lệnh số học cần xuất phát từ một số giới hạn những vị trí đặc biệt được chứa trong tập thanh ghi (register file) của đường dữ liệu.  32 thanh ghi 32-bit - Hai port đọc. - Một port ghi.  Các thanh ghi sẽ  Nhanh - Càng nhỏ càng nhanh & Làm cho trường hợp chung nhanh.  Dễ dàng được sử dụng bởi trình biên dịch - e.g., (A*B) – (C*D) – (E*F) có thể thực hiện các phép nhân theo thứ tự bất kỳ.  Cải thiện mật độ mã - Vì thanh ghi “được đặt tên” có ít bit hơn so với một ô nhớ.  Địa chỉ của thanh ghi được chỉ ra bằng $. 11
  7. Qui ước gọi tên các thanh ghi 0 $zero constant 0 (Hdware) 16 $s0 callee saves 1 $at reserved for assembler . . . (caller can clobber) 2 $v0 expression evaluation & 23 $s7 3 $v1 function results 24 $t8 temporary (cont’d) 4 $a0 arguments 25 $t9 5 $a1 26 $k0 reserved for OS kernel 6 $a2 27 $k1 7 $a3 28 $gp pointer to global area 8 $t0 temporary: caller saves 29 $sp stack pointer . . . (callee can clobber) 30 $fp frame pointer 15 $t7 31 $ra return address (Hdware) 13
  8. Thanh ghi và bộ nhớ  Các toán hạng của lệnh số học phải ở trong những thanh ghi.  Chỉ có 32 thanh ghi được cung cấp. Processor Devices Network Control Memory Input Datapath Output  Trình biên dịch kết hợp các biến với các thanh ghi.  Còn những chương trình có nhiều biến thì sao? 15
  9. Liên kết nối bộ xử lý – bộ nhớ  Bộ nhớ là dải một chiều, lớn.  Địa chỉ đóng vai trò chỉ số bên trong bộ nhớ. Memory read addr/ write addr Processor ? read data Các ô nhớ write data 10 8 101 4 1 0 32 bits 17
  10. Truy cập bộ nhớ  MIPS có hai lệnh chuyển dữ liệu cơ bản ( data transfer ) để truy cập bộ nhớ (thí dụ $s3 lưu 2410 ). lw $t0, 4($s3) # nạp “từ” từ bộ nhớ 28 sw $t0, 8($s3) # lưu “từ” vào bộ nhớ 32  Lệnh chuyển dữ liệu phải chỉ rõ  vị trí (ô nhớ) trong bộ nhớ để đọc (load) hoặc ghi (store) – địa chỉ bộ nhớ ( memory address).  vị trí trong tập thanh ghi để ghi (load) hoặc đọc (store) – register destination (source).  Địa chỉ bộ nhớ được tạo thành bằng cách tính tổng phần hằng số của lệnh và nội dung của thanh ghi thứ hai. 19
  11. Biên dịch với các lệnh load và store  Giả sử biến b được lưu trong $s2 và địa chỉ nền của dải A đang ở trong $s3, mã hợp ngữ của MIPS là gì đối với phát biểu của C A[8] = A[2] - b . . . . . . A[3] $s3 +12 A[2] $s3 +8 A[1] $s3 +4 A[0] $s3 21
  12. Biên dịch với chỉ số thay đổi của dải  Giả sử địa chỉ nền của dải A . . . . . . đang ở trong thanh ghi $s4, còn $s4 A[3] +12 các biến b, c, và i đang ở trong $s4 A[2] +8 $s1, $s2, and $s3, mã hợp ngữ A[1] $s4 +4 A[0] $s4 của MIPS là gì đối với phát biểu của C c = A[i] - b add $t1, $s3, $s3 #chỉ số i của dải ở trong $s3 add $t1, $t1, $t1 #thanh ghi tạm $t1 lưu 4*i 23
  13. Xử lý hằng số  Các hằng nhỏ thường được sử dụng (50% các toán hạng trong nhiều chương trình phổ biến). e.g., A = A + 5; B = B + 1; C = C - 18;  Các giải pháp? Tại sao không?  Đặt “các hằng đặc thù” trong bộ nhớ và load chúng.  Tạo các thanh ghi nối dây cứng (giống như $zero) cho các hằng như là 1, 2, 4, 10,  Ta thực hiện công việc này ra sao ?  Cách của ta sẽ làm cho trường hợp tổng quát nhanh ! 25
  14. Các lệnh của MIPS, cho đến lúc này Loại Lệnh Thí dụ Ý nghĩa Arithmetic add add $s1, $s2, $s3 $s1 = $s2 + $s3 subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 add addi $s1, $s2, 4 $s1 = $s2 + 4 immediate Data load word lw $s1, 32($s2) $s1 = Memory($s2+32) transfer store word sw $s1, 32($s2) Memory($s2+32) = $s1 27
  15. Nhắc lại: biểu diễn số nhị phân không dấu Hex Binary Decimal 0x00000000 0 0000 0 0x00000001 0 0001 1 231 230 229 . . . 2 3 22 21 20 bit weight 0x00000002 0 0010 2 0x00000003 0 0011 3 31 30 29 . . . 3 2 1 0 bit position 0x00000004 0 0100 4 1 1 1 . . . 1 1 1 1 bit 0x00000005 0 0101 5 0x00000006 0 0110 6 1 0 0 0 . . . 0 0 0 0 - 1 0x00000007 0 0111 7 0x00000008 0 1000 8 0x00000009 0 1001 9 232 - 1 0xFFFFFFFC 1 1100 232 - 4 0xFFFFFFFD 1 1101 232 - 3 0xFFFFFFFE 1 1110 232 - 2 0xFFFFFFFF 1 1111 232 - 1 29
  16. Nhắc lại: biểu diễn số nhị phân có dấu  Các số có dấu – giả sử dạng bù-2 – cho số 4- bit.  Lưu ý rằng msb là 1 chỉ ra số âm, chuỗi bit với mọi bit bằng 0 là zero, số dương lớn nhất có thể biểu diễn là 7 (2 (n-1) –1 với n bit) trong khi đó số âm lớn nhất có thể biểu diễn là –8 (-2 (n-1) với n bit). 31
  17. Ngôn ngữ máy – Lệnh số học  Các lệnh, như thanh ghi hoặc từ dữ liệu, cũng dài 32 bit.  Thí dụ: add $t0, $s1, $s2 các thanh ghi có số $t0=$8,$s1=$17,$s2=$18  Khuôn dạng lệnh: op rs rt rd shamt funct 000000 10001 10010 01000 00000 100000 Ta có thể đoán các tên “trường” đại diện cho điều gì ? 33
  18. Các “trường” của lệnh MIPS op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits = 32 bits  op op code chỉ ra thao tác cần thực hiện.  rs địa chỉ của toán hạng nguồn regi ster thứ nhất.  rt địa chỉ của toán hạng nguồn regi ster thứ hai.  rd địa chỉ của toán hạng đích register destination.  shamt sh ift amoun t (dành cho các lệnh dịch bit).  funct funct ion, mã chọn biến thể cụ thể của thao tác được chỉ ra trong trường opcode. 35
  19. Ngôn ngữ máy – Lệnh load  Khảo sát các lệnh load-word và store-word  Nguyên tắc của tính cân đối muốn ta làm gì? - Nhưng . . . thiết kế tốt đòi hỏi sự thỏa hiệp.  Đưa vào loại khuôn dạng lệnh mới.  Loại I cho các lệnh chuyển dữ liệu (khuôn dạng trước là loại R đối với thanh ghi)  Thí dụ: lw $t0, 24($s2) op rs rt 16 bit number 23 hex 18 8 24 100011 10010 01000 0000000000011000 Đâu là sự thỏa hiệp? 37
  20. Vị trí địa chỉ bộ nhớ  Thí dụ: lw $t0, 24($s2) Memory 0xf f f f f f f f 24 10 + $s2 = 0x00000002 $s2 0x12004094 Lưu ý rằng offset có 0x0000000c 0x00000008 thể dương hoặc âm 0x00000004 0x00000000 data Địa chỉ của từ (hex) 39
  21. Ngôn ngữ máy – Lệnh store  Thí dụ: sw $t0, 24($s2) op rs rt 16 bit number 43 18 8 24 101011 10010 01000 0000000000011000  Offset 16-bit có nghĩa là việc truy cập bị giới hạn đến các ô nhớ trong tầm ±213 = 8,192 words (±215 = 32,768 bytes ) của địa chỉ trong thanh ghi nền $s2.  Bù-2 (1 bit dấu + 15 bit độ lớn). 41
  22. Ngôn ngữ máy – Lệnh trực tiếp  Khuôn dạng lệnh nào được sử dụng cho addi? addi $s3, $s3, 4 #$s3 = $s3 + 4  Khuôn dạng mã máy: 43
  23. Ngôn ngữ máy – Các lệnh trực tiếp  Các lệnh addi và slti mở rộng dấu của toán hạng trực tiếp vào trong các bit cực trái của thanh ghi đích (ie., sao chép bit cực trái của giá trị trực tiếp 16-bit vào trong 16 bit cao)  Ngược lại, các lệnh ori và andi nạp các zero vào 16 bit cao và do vậy thường được sử dụng (thay cho lệnh addi) để xây dựng các hằng 32-bit. 45
  24. Mã hợp dịch  Nhớ lại mã hợp dịch mà ta đã dịch phát biểu C trong bài trước. A[8] = A[2] - b lw $t0, 8($s3) #load A[2] into $t0 sub $t0, $t0, $s2 #subtract b from A[2] sw $t0, 32($s3) #store result in A[8]  Hợp dịch mã đối tượng của MIPS cho 3 lệnh này (dạng thập phân) . lw sub sw 47
  25. Nhắc lại : các lệnh của MIPS, cho đến đây Loại Lệnh Op Thí dụ Ý nghĩa Code Arithmetic add 0 & add $s1, $s2, $s3 $s1 = $s2 + $s3 (R format) 32 subtract 0 & sub $s1, $s2, $s3 $s1 = $s2 - $s3 34 Arithmetic add 8 addi $s1, $s2, 4 $s1 = $s2 + 4 (I format) immediate Data load word 35 lw $s1, 100($s2) $s1 = Memory($s2+100) transfer store word 43 sw $s1, 100($s2) Memory($s2+100) = $s1 (I format) Sự giống nhau trong biểu diễn nhị phân các lệnh có liên quan sẽ làm đơn giản thiết kế phần cứng. 49
  26. Nhắc lại : ISA của MIPS R3000  Các loại lệnh Registers  Nạp/lưu ( load/store).  Tính tóan. R0 - R31  Nhảy và rẽ nhánh.  Dấu chấm động. - Bộ đồng xử lý. PC  Quản lý bộ nhơ.ù HI  Đặc biệt. LO  3 khuôn dạng lệnh: đều dài 32-bit 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits OP rs rt rd shamt funct R format OP rs rt 16 bit number I format OP 26 bit ( đích nhảy) 51