Xem mẫu

  1. Khoa KH & KT Máy tính Boä moân Kyõ thuaät Maùy tính Phaïm Töôøng ng Haûi Nguyeãn Quoác Tuaán
  2. Tài liệu tham khảo “Computer Organization and Design: the hardware/software interface”, John L. Hennessy & David A. Patterson, Second Edition, MORGAN KAUFMANN PUBLISHERS, INC. 1998 “Computer Architecture: a quantitative approach”, John L. Hennessy & David A. Patterson, Third Edition, MORGAN KAUFMANN PUBLISHERS, INC. 2002 Kiến trúc Máy tính - Chap 03 2
  3. Chương 3. Kiến trúc Máy tính - Chap 03 3
  4. 3.1 Dẫn nhập Kiến trúc của máy tính bao gồm 2 phần • Kiến trúc phần cứng • Kiến trúc tập lệnh Cả 2 phần trên có mối quan hệ tương hỗ với nhau Có 2 cách để tiếp cận đến kiến trúc máy tính • Tiếp cận từ phần cứng • Tiếp cận từ tập lệnh chúng ta chọn cách tiếp cận từ tập lệnh Sử dụng hợp ngữ để giới thiệu tập lệnh Dùng tập lệnh của bộ xử lý MIPS để minh họa chính Kiến trúc Máy tính - Chap 03 4
  5. 3.2 Phép toán Các máy tính đều có thể thực hiện các phép toán số học Xét câu lệnh sau (hợp ngữ MIPS) add a , b , c • Chỉ thị cho máy tính thực hiện phép toán cộng • Phép toán trên chỉ có thể thực hiện với 3 toán hạng Nếu muốn thực hiện phép toán với nhiều toán hạng ? • Phải dùng nhiều câu lệnh để chỉ thị add a , b , c # the sum of b and c is placed in a add a , a , d # the sum of b, c and d is placed in a add a , a , e # the sum of b, c, d and e is placed in a • Mỗi hàng dành để ghi 1 câu lệnh • Phần văn bản đi theo ký hiệu # dành cho chú thích Kiến trúc Máy tính - Chap 03 5
  6. ... Việc cố định số lượng toán hạng trong câu lệnh giúp đơn giản hóa đáng kể việc thiết kế mạch phần cứng Nguyên tắc thiết kế 1 Càng đơn giản, càng ổn định Thí dụ. Dịch đoạn chương trình C sau đây sang hợp ngữ a = b + c d = a - e Giải đáp. add a , b , c sub d , a , e Kiến trúc Máy tính - Chap 03 6
  7. ... Thí dụ. Dịch đoạn chương trình C sau đây sang hợp ngữ f = (g + h ) - (i + j) Giải đáp. add t0 , g , h # biến phụ t0 chứa g + h add t1 , i , j # biến phụ t1 chứa i + j sub f , t0 , t1 # f chính là kết quả cần tìm Kiến trúc Máy tính - Chap 03 7
  8. 3.3 Toán hạng Ở các chương trình viết bằng ngôn ngữ cấp cao, biến (variable) đóng vai trò của toán hạng Đối với các câu lệnh (instruction), ngôn ngữ cấp thấp, toán hạng thường được chứa trong các thanh ghi Kích thước thanh ghi ở bộ xử lý MIPS là 32 bit. kích thước toán hạng trong các câu lệnh MIPS bị giới hạn ở 32 bit, từ (word) Số lượng thanh ghi cũng giới hạn. Bộ xử lý MIPS chỉ có 32 thanh ghi 32 bit tham gia vào các phép toán số học Nguyên tắc thiết kế 2 Càng nhỏ, càng nhanh Kiến trúc Máy tính - Chap 03 8
  9. ... Trong các thí dụ kế tiếp, chúng ta sử dụng • Các thanh ghi $s0 , $s1 , ... chứa các biến trong mã nguồn C • Các thanh ghi $t0 , $t1 , ... chứa các biến tạm trong quá trình dịch từ C sang hợp ngữ MIPS Thí dụ. Dịch đoạn chương trình C sau đây sang hợp ngữ MIPS với các biến f , g , h , i và j được chứa sẵn trong các thanh ghi $s0 , $s1 , $s2 , $s3 và $s4 f = (g + h ) - (i + j) Giải đáp. add $t0 , $s1 , $s2 # biến phụ t0 chứa g + h add $t1 , $s3 , $s4 # biến phụ t1 chứa i + j sub $s0 , $t0 , $t1 # f chính là kết quả cần tìm Kiến trúc Máy tính - Chap 03 9
  10. ... Ngoài các biến đơn, còn có các biến phức tạp thể hiện nhiều kiểu cấu trúc dữ liệu khác nhau, td. array Các cấu trúc dữ liệu phức tạp có số phần tử dữ liệu nhiều hơn số thanh ghi của bộ xử lý Nếu các thanh ghi của bộ xử lý chỉ có thể chứa một lượng nhỏ dữ liệu thì bộ nhớ của máy tính có thể chứa được rất nhiều dữ liệu các cấu trúc dữ liệu phức tạp được chứa trong bộ nhớ của máy tính Cần thiết các câu lệnh thực hiện việc chuyển dữ liệu giữa thanh ghi và bộ nhớ nhóm lệnh chuyển dữ liệu (data transfer) Kiến trúc Máy tính - Chap 03 10
  11. ... Bộ nhớ có thể được xem như là array một chiều rất lớn của các ô nhớ Các ô nhớ được đánh số thứ tự từ 0 trở đi địa chỉ (address) ô nhớ Để có thể truy xuất (access) 1 từ nào đó trong bộ nhớ, cần phải cung cấp địa chỉ ô nhớ Hình vẽ dưới đây minh họa bộ nhớ . . . . . . 3 100 2 10 1 101 0 1 Địa chỉ Dữ liệu Kiến trúc Máy tính - Chap 03 11
  12. ... Lệnh chuyển dữ liệu từ bộ nhớ vào thanh ghi gọi là lệnh nạp (load) Từ gợi nhớ dùng trong hợp ngữ MIPS là lw (load word) Thí dụ. Giả sử A là 1 array gồm 100 từ với địa chỉ bắt đầu (starting address) hay địa chỉ nền (base address) chứa trong thanh ghi $s3 , các biến g , h chứa trong thanh ghi $s1 và $s2 . Hãy dịch phát biểu sau: g = h + A[8] Giải đáp. lw $t0 , 8($s3) # chứa A[8] vào $t0 add $s1 , $s2 , $t0 Kiến trúc Máy tính - Chap 03 12
  13. ... Ô nhớ có kích thước 8 bit (byte) Mỗi từ 32 bit cần dùng đến 4 ô nhớ • Mỗi từ phải được bắt đầu ở địa chỉ là bội số của 4 (alignment restriction) • Thứ tự của các byte trong 1 từ: Big Endian hay Little Endian Hình vẽ minh họa bộ nhớ 11 0 . . . . . . 10 1 12 100 9 0 8 10 8 0 4 101 Big Endian 11 0 0 1 10 0 Địa chỉ Dữ liệu 9 1 8 0 Little Endian Kiến trúc Máy tính - Chap 03 13
  14. ... Câu lệnh ngược lại với lw là sw (store word), ghi dữ liệu từ thanh ghi ra bộ nhớ Thí dụ. Giả sử biến h được gán vào thanh ghi $s2 và $s3 chứa địa chỉ nền của array A. Dịch phát biểu sau A[12] = h - A[8] Giải đáp. lw $t0 , 32($s3) # chứa A[8] vào $t0 add $t0 , $s2 , $t0 sw $t0 , 48($s3) # kết quả vào A[12] Số biến của chương trình thường nhiều hơn số thanh ghi của bộ xử lý • Thanh ghi chỉ chứa các biến đang xử lý hiện hành và các biến thường sử dụng • Kỹ thuật spilling registers Kiến trúc Máy tính - Chap 03 14
  15. 3.4 Biểu diễn câu lệnh Các thanh ghi trong bộ xử lý cũng được gán địa chỉ tương tự như đối với ô nhớ • Các thanh ghi $s0 ÷ $s7 có địa chỉ từ 16 đến 23 • Các thanh ghi $t0 ÷ $t7 có địa chỉ từ 8 đến 15 Xét câu lệnh hợp ngữ add $t0 , $s1 , $s2 • Dạng nhị phân 000000 10001 10010 01000 00000 100000 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits • Còn được gọi là dạng ngôn ngữ máy (machine language) hay mã máy (machine code) • Câu lệnh MIPS có độ dài cố định là 32 bits được chia ra thành nhiều trường (field) có độ dài là 5 hay 6 bits Kiến trúc Máy tính - Chap 03 15
  16. ... Các trường trong câu lệnh MIPS op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits • op : operation code tác vụ cơ bản của câu lệnh • rs : 1st source operand toán hạng nguồn thứ nhất • rt : 2nd source operand toán hạng nguồn thứ hai • rd : destination operand toán hạng đích (kết quả) • shamt : shift amount có ý nghĩa đối với lệnh dịch và mang giá trị 00000 đối với các lệnh khác • funct : function code bổ túc cho vùng op Làm sao giải quyết trường hợp nếu câu lệnh đòi hỏi trường dành cho toán hạng phải lớn hơn 5 bits ? • Td. Lệnh lw cần biểu diễn 2 địa chỉ thanh ghi và 1 hằng số, nếu giới hạn ở 5 bit, hằng số không lớn hơn 25 = 32 Kiến trúc Máy tính - Chap 03 16
  17. ... Nguyên tắc thiết kế 3 Thiết kế tốt đòi hỏi phải có sự dàn xếp tốt Đối với tập lệnh MIPS, để giữ cho độ dài câu lệnh không đổi xây dựng 2 dạng lệnh khác nhau • Dạng lệnh mà chúng ta đã xem xét là R-type • Dạng lệnh I-type op rs rt address 6 bits 5 bits 5 bits 16 bits • Thí dụ. Câu lệnh lw $t0 , 32($s3) 100011 10011 01000 0000 0000 0000 0000 0000 0010 0000 6 bits 5 bits 5 bits 16 bits • Ba trường đầu của cả 2 dạng lệnh là giống nhau Kiến trúc Máy tính - Chap 03 17
  18. ... Thí dụ. Tìm hiểu mã máy của đoạn hợp ngữ sau lw $t0 , 1200($t1) add $t0 , $s2 , $t0 sw $t0 , 1200($t1) Giải đáp. 35 9 8 1200 0 18 8 8 0 32 43 9 8 1200 100011 01001 01000 0000 0100 1011 0000 000000 10010 01000 01000 00000 100000 101011 01001 01000 0000 0100 1011 0000 Kiến trúc Máy tính - Chap 03 18
  19. 3.5 Lệnh ra quyết định Dựa trên dữ liệu đầu vào cùng với một số giá trị tính toán mà một câu lệnh khác (không phải là câu lệnh kế tiếp trong chương trình) được thực thi Hỗ trợ thực thi cho phát biểu rẽ nhánh ở ngôn ngữ cấp cao: if , goto , while , ... Làm quen với 2 câu lệnh hợp ngữ của MIPS • Branch if equal beq reg1 , reg2 , L1 • Branch if not equal bne reg1 , reg2 , L1 Hợp ngữ gọi chúng là các lệnh rẽ nhánh có điều kiện (conditional branch) Kiến trúc Máy tính - Chap 03 19
  20. ... Thí dụ. Dịch đoạn mã C sau đây sang hợp ngữ MIPS if ( i == j ) goto L1; f = g + h; L1: f = f - i; giả sử các biến từ f đến j tương ứng với các thanh ghi từ $s0 đến $s4 Bài giải. Kiến trúc Máy tính - Chap 03 20
nguon tai.lieu . vn