Xem mẫu

  1. NKK-HUT Kiến trúc máy tính Chương 4 KIẾN TRÚC TẬP LỆNH (Instruction Set Architecture) Nguyễn Kim Khánh Trường Đại học Bách khoa Hà Nội IT3030 1
  2. NKK-HUT Nội dung học phần n Chương 1. Giới thiệu chung n Chương 2. Cơ bản về logic số n Chương 3. Hệ thống máy tính n Chương 4. Kiến trúc tập lệnh n Chương 5. Số học máy tính n Chương 6. Bộ xử lý n Chương 7. Bộ nhớ n Chương 8. Vào-ra n Chương 9. Kiến trúc máy tính tiên tiến 24 July 2011 n IT3030 2
  3. NKK-HUT Nội dung của chương 4 4.1. Giới thiệu chung kiến trúc tập lệnh 4.2. Các kiểu thao tác 4.3. Các phương pháp định địa chỉ 4.4. Kiến trúc tập lệnh MIPS 4.5. Kiến trúc tập lệnh Intel x86 IT3030 3
  4. NKK-HUT 4.1. Giới thiệu chung về kiến trúc tập lệnh Mô hình lập trình của máy tính IT3030 4
  5. NKK-HUT Tập thanh ghi n Chức năng và đặc điểm: n Chứa các thông tin tạm thời phục vụ cho hoạt động ở thời điểm hiện tại của CPU n Được coi là mức đầu tiên của hệ thống nhớ n Số lượng thanh ghi nhiều à tăng hiệu năng của CPU n Có hai loại thanh ghi: n Các thanh ghi lập trình được n Các thanh ghi không lập trình được IT3030 5
  6. NKK-HUT Phân loại thanh ghi theo chức năng n Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ hay cổng vào-ra. n Thanh ghi dữ liệu: chứa tạm thời các dữ liệu. n Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ liệu. n Thanh ghi điều khiển/trạng thái: chứa các thông tin điều khiển và trạng thái của CPU. n Thanh ghi lệnh: chứa lệnh đang được thực hiện. IT3030 6
  7. NKK-HUT Một số thanh ghi điển hình n Các thanh ghi địa chỉ n Bộ đếm chương trình PC (Program Counter) n Con trỏ dữ liệu DP (Data Pointer) n Con trỏ ngăn xếp SP (Stack Pointer) n Thanh ghi cơ sở và Thanh ghi chỉ số (Base Register & Index Register) n Các thanh ghi dữ liệu n Thanh ghi trạng thái IT3030 7
  8. NKK-HUT Bộ đếm chương trình PC n Còn được gọi là con trỏ lệnh IP (Instruction Pointer) n Giữ địa chỉ của lệnh tiếp theo sẽ được nhận vào. n Sau khi một lệnh được nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tiếp. IT3030 8
  9. NKK-HUT Thanh ghi con trỏ dữ liệu n Chứa địa chỉ của ngăn nhớ dữ liệu mà CPU muốn truy nhập n Thường có một số thanh ghi con trỏ dữ liệu IT3030 9
  10. NKK-HUT Ngăn xếp (Stack) n Ngăn xếp là vùng nhớ có cấu trúc LIFO (Last In - First Out) n Ngăn xếp thường dùng để phục vụ cho chương trình con n Đáy ngăn xếp là một ngăn nhớ xác định n Đỉnh ngăn xếp là thông tin nằm ở vị trí trên cùng trong ngăn xếp n Đỉnh ngăn xếp có thể bị thay đổi IT3030 10
  11. NKK-HUT Con trỏ ngăn xếp SP (Stack Pointer) n Chứa địa chỉ của ngăn nhớ đỉnh ngăn xếp n Khi cất một thông tin vào ngăn xếp: n Nội dung của SP giảm n Thông tin được cất vào ngăn nhớ được trỏ bởi SP n Khi lấy một thông tin ra khỏi ngăn xếp: n Thông tin được đọc từ ngăn nhớ được trỏ bởi SP n Nội dung của SP tăng n Khi ngăn xếp rỗng, SP trỏ vào đáy IT3030 11
  12. NKK-HUT Thanh ghi cơ sở và thanh ghi chỉ số n Thanh ghi cơ sở: chứa địa chỉ của ngăn nhớ cơ sở (địa chỉ cơ sở) n Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa ngăn nhớ mà CPU cần truy nhập so với ngăn nhớ cơ sở (chỉ số) n Địa chỉ của ngăn nhớ cần truy nhập = địa chỉ cơ sở + chỉ số 24 July 2011 IT3030 12
  13. NKK-HUT Các thanh ghi dữ liệu n Chứa các dữ liệu tạm thời hoặc các kết quả trung gian n Cần có nhiều thanh ghi dữ liệu n Các thanh ghi số nguyên: 8, 16, 32, 64 bit n Các thanh ghi số dấu phẩy động IT3030 13
  14. NKK-HUT Thanh ghi trạng thái (Status Register) n Còn gọi là thanh ghi cờ (Flag Register) n Chứa các thông tin trạng thái của CPU n Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán n Các cờ điều khiển: biểu thị trạng thái điều khiển của CPU IT3030 14
  15. NKK-HUT Ví dụ cờ phép toán n Cờ Zero (cờ rỗng): được thiết lập lên 1 khi kết quả của phép toán bằng 0. n Cờ Sign (cờ dấu): được thiết lập lên 1 khi kết quả phép toán nhỏ hơn 0 n Cờ Carry (cờ nhớ): được thiết lập lên 1 nếu phép toán có nhớ ra ngoài bit cao nhất à cờ báo tràn với số không dấu. n Cờ Overflow (cờ tràn): được thiết lập lên 1 nếu cộng hai số nguyên cùng dấu mà kết quả có dấu ngược lại à cờ báo tràn với số có dấu . IT3030 15
  16. NKK-HUT Ví dụ cờ điều khiển n Cờ Interrupt (Cờ cho phép ngắt): n Nếu IF = 1 à CPU ở trạng thái cho phép ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới n Nếu IF = 0 à CPU ở trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới IT3030 16
  17. NKK-HUT Thứ tự lưu trữ các byte trong bộ nhớ chính n Bộ nhớ chính thường đánh địa chỉ theo byte n Hai cách lưu trữ thông tin nhiều byte: n Đầu nhỏ (Little-endian): Byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ lớn. n Đầu to (Big-endian): Byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ lớn. IT3030 17
  18. NKK-HUT Ví dụ lưu trữ dữ liệu 32-bit 0001 1010 0010 1011 0011 1100 0100 1101 24 July 2011 IT3030 18
  19. NKK-HUT Lưu trữ của các bộ xử lý điển hình n Intel 80x86 và các Pentium: little-endian n Motorola 680x0, MIPS, SunSPARC: big-endian n Power PC, Itanium: bi-endian 24 July 2011 IT3030 19
  20. NKK-HUT Giới thiệu chung về tập lệnh n Mỗi bộ xử lý có một tập lệnh xác định n Tập lệnh thường có hàng chục đến hàng trăm lệnh n Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu được để thực hiện một thao tác xác định. n Các lệnh được mô tả bằng các ký hiệu gợi nhớ dạng text à chính là các lệnh của hợp ngữ IT3030 20
nguon tai.lieu . vn