Xem mẫu

  1. NKK-HUST Kiến trúc máy tính om .c Chương 5 ng co KIẾN TRÚC TẬP LỆNH an th o ng du u cu 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 194 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. NKK-HUST Nội dung học phần Chương 1. Giới thiệu chung om .c Chương 2. Cơ bản về logic số ng Chương 3. Hệ thống máy tính co Chương 4. Số học máy tính an Chương 5. Kiến trúc tập lệnh th Chương 6. Bộ xử lý o ng du Chương 7. Bộ nhớ máy tính u Chương 8. Hệ thống vào-ra cu Chương 9. Các kiến trúc song song 2017 Kiến trúc máy tính 195 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  3. NKK-HUST Nội dung của chương 5 om 5.1. Giới thiệu chung về kiến trúc tập lệnh .c 5.2. Lệnh hợp ngữ và toán hạng ng 5.3. Mã máy co an 5.4. Cơ bản về lập trình hợp ngữ th 5.5. Các phương pháp định địa chỉ o ng du 5.6. Dịch và chạy chương trình hợp ngữ u cu 2017 Kiến trúc máy tính 196 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  4. NKK-HUST 5.1. Giới thiệu chung về kiến trúc tập lệnh n Kiến trúc tập lệnh (Instruction Set Architecture): om cách nhìn máy tính bởi người lập trình .c n Vi kiến trúc (Microarchitecture): cách thực hiện ng kiến trúc tập lệnh bằng phần cứng co Ngôn ngữ trong máy tính: an n th n Hợp ngữ (assembly language): n o ng dạng lệnh có thể đọc được bởi con người biểu diễn dạng text du n Ngôn ngữ máy (machine language): u n cu n còn gọi là mã máy (machine code) n dạng lệnh có thể đọc được bởi máy tính n biểu diễn bằng các bit 0 và 1 2017 Kiến trúc máy tính 197 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  5. NKK-HUST Mô hình lập trình của máy tính Bộ nhớ chính om CPU PC lệnh .c lệnh lệnh ng Đơn vị lệnh điều khiển co . . . an dữ liệu th ALU dữ liệu dữ liệu o ng dữ liệu . Tập thanh ghi . du . u Vào-ra cu . . . 2017 Kiến trúc máy tính 198 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  6. NKK-HUST CPU nhận lệnh từ bộ nhớ n Bộ đếm chương trình PC om (Program Counter) là thanh ghi của CPU giữ địa chỉ của lệnh cần lệnh .c nhận vào để thực hiện lệnh ng lệnh CPU phát địa chỉ từ PC đến bộ co n lệnh được nhớ, lệnh được nhận vào PC an nhận vào lệnh kế tiếp th n Sau khi lệnh được nhận vào, nội lệnh dung PC tự động tăng để trỏ sang o ng lệnh lệnh kế tiếp du PC tăng bao nhiêu? u n cu n Tùy thuộc vào độ dài của lệnh vừa được nhận n MIPS: lệnh có độ dài 32-bit, PC tăng 4 2017 Kiến trúc máy tính 199 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  7. NKK-HUST Giải mã và thực hiện lệnh Bộ xử lý giải mã lệnh đã được nhận và phát các om n tín hiệu điều khiển thực hiện thao tác mà lệnh yêu .c cầu ng co n Các kiểu thao tác chính của lệnh: an n Trao đổi dữ liệu giữa CPU và bộ nhớ chính hoặc cổng th vào-ra n o ng Thực hiện các phép toán số học hoặc phép toán logic du với các dữ liệu (được thực hiện bởi ALU) u Chuyển điều khiển trong chương trình (rẽ nhánh, nhảy) cu n 2017 Kiến trúc máy tính 200 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  8. NKK-HUST CPU đọc/ghi dữ liệu bộ nhớ n Với các lệnh trao đổi dữ liệu với bộ nhớ, om CPU cần biết và phát ra địa chỉ của ngăn .c nhớ cần đọc/ghi ng co n Địa chỉ đó có thể là: an n Hằng số địa chỉ được cho trực tiếp trong lệnh th n Giá trị địa chỉ nằm trong thanh ghi con trỏ o ng Địa chỉ = Địa chỉ cơ sở + giá trị dịch chuyển du n u cu 2017 Kiến trúc máy tính 201 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  9. NKK-HUST Hằng số địa chỉ om n Trong lệnh cho hằng số dữ liệu địa chỉ cụ thể .c dữ liệu ng n CPU phát giá trị địa chỉ Hằng số địa chỉ dữ liệu co dữ liệu cần đọc/ghi này đến bộ nhớ để tìm an dữ liệu ra ngăn nhớ dữ liệu cần th dữ liệu đọc/ghi ng dữ liệu dữ liệu o du u cu 2017 Kiến trúc máy tính 202 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  10. NKK-HUST Sử dụng thanh ghi con trỏ om n Trong lệnh cho biết dữ liệu tên thanh ghi con trỏ .c dữ liệu ng n Thanh ghi con trỏ dữ liệu co chứa giá trị địa chỉ Thanh ghi dữ liệu cần đọc/ghi an dữ liệu CPU phát địa chỉ này th n dữ liệu ra để tìm ra ngăn ng dữ liệu nhớ dữ liệu cần o dữ liệu du đọc/ghi u cu 2017 Kiến trúc máy tính 203 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  11. NKK-HUST Sử dụng địa chỉ cơ sở và dịch chuyển n Địa chỉ cơ sở (base address): om địa chỉ của ngăn nhớ cơ sở .c n Giá trị dịch chuyển địa chỉ (offset): ng Địa chỉ cơ sở gia số địa chỉ giữa ngăn nhớ cần Ngăn nhớ cơ sở co đọc/ghi so với ngăn nhớ cơ sở an Offset n Địa chỉ của ngăn nhớ cần đọc/ghi th = (địa chỉ cơ sở) + (offset) n Có thể sử dụng các thanh ghi để o ng dữ liệu cần đoc/ghi du quản lý các tham số này u n Trường hợp riêng: cu n Địa chỉ cơ sở = 0 n Offset = 0 2017 Kiến trúc máy tính 204 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  12. NKK-HUST Ngăn xếp (Stack) Ngăn xếp là vùng nhớ dữ liệu có cấu trúc om n LIFO (Last In - First Out vào sau - ra trước) .c Ngăn xếp thường dùng để phục vụ cho ng n chương trình con co an n Đáy ngăn xếp là một ngăn nhớ xác định th n Đỉnh ngăn xếp là thông tin nằm ở vị trí trên ng cùng trong ngăn xếp o du n Đỉnh ngăn xếp có thể bị thay đổi u cu 2017 Kiến trúc máy tính 205 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  13. NKK-HUST Con trỏ ngăn xếp SP (Stack Pointer) n SP là thanh ghi chứa địa chỉ của om ngăn nhớ đỉnh ngăn xếp .c n Khi cất một thông tin vào ngăn ng xếp: SP đỉnh ngăn xếp co n Giảm nội dung của SP chiều địa Thông tin được cất vào ngăn nhớ an n chỉ tăng được trỏ bởi SP th dần n Khi lấy một thông tin ra khỏi ng ngăn xếp: o du n Thông tin được đọc từ ngăn nhớ đáy ngăn xếp được trỏ bởi SP u cu n Tăng nội dung của SP n Khi ngăn xếp rỗng, SP trỏ vào đáy 2017 Kiến trúc máy tính 206 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  14. NKK-HUST Thứ tự lưu trữ các byte trong bộ nhớ chính n Bộ nhớ chính được đánh địa chỉ cho từng byte om n Hai cách lưu trữ thông tin nhiều byte: .c n Đầu nhỏ (Little-endian): Byte có ý nghĩa thấp được ng lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa co cao được lưu trữ ở ngăn nhớ có địa chỉ lớn. an n Đầu to (Big-endian): Byte có ý nghĩa cao được lưu th trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa thấp ng được lưu trữ ở ngăn nhớ có địa chỉ lớn. o du n Các sản phẩm thực tế: u cu n Intel x86: little-endian n Motorola 680x0, SunSPARC: big-endian n MIPS, IA-64: bi-endian (cả hai kiểu) 2017 Kiến trúc máy tính 207 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  15. NKK-HUST Ví dụ lưu trữ dữ liệu 32-bit Số nhị phân 0001 1010 0010 1011 0011 1100 0100 1101 om .c Số Hexa 1A 2B 3C 4D ng co an th 4D 4000 1A 4000 3C o ng 4001 2B 4001 2B 4002 3C 4002 du 1A 4003 4D 4003 u cu little-endian big-endian 2017 Kiến trúc máy tính 208 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  16. NKK-HUST Tập lệnh Mỗi bộ xử lý có một tập lệnh xác định om n Tập lệnh thường có hàng chục đến hàng trăm .c n lệnh ng co n Mỗi lệnh máy (mã máy) là một chuỗi các bit (0,1) an mà bộ xử lý hiểu được để thực hiện một thao th tác xác định. ng Các lệnh được mô tả bằng các ký hiệu gợi nhớ o n du dạng text, đó chính là các lệnh của hợp ngữ u (assembly language) cu 2017 Kiến trúc máy tính 209 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  17. NKK-HUST Dạng lệnh hợp ngữ n Mã C: om a = b + c; .c n Ví dụ lệnh hợp ngữ: ng co add a, b, c #a=b+c an trong đó: th add: ký hiệu gợi nhớ chỉ ra thao tác (phép toán) n cần thực hiện. o ng du n Chú ý: mỗi lệnh chỉ thực hiện một thao tác u b, c: các toán hạng nguồn cho thao tác cu n n a: toán hạng đích (nơi ghi kết quả) n phần sau dấu # là lời giải thích (chỉ có tác dụng đến hết dòng) 2017 Kiến trúc máy tính 210 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  18. NKK-HUST Các thành phần của lệnh máy Mã thao tác Địa chỉ toán hạng om Mã thao tác (operation code hay opcode): mã .c n hóa cho thao tác mà bộ xử lý phải thực hiện ng Các thao tác chuyển dữ liệu co n Các phép toán số học an n th n Các phép toán logic n o ng Các thao tác chuyển điều khiển (rẽ nhánh, nhảy) Địa chỉ toán hạng: chỉ ra nơi chứa các toán du n hạng mà thao tác sẽ tác động u cu n Toán hạng có thể là: n Hằng số nằm ngay trong lệnh n Nội dung của thanh ghi n Nội dung của ngăn nhớ (hoặc cổng vào-ra) 2017 Kiến trúc máy tính 211 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  19. NKK-HUST Số lượng địa chỉ toán hạng trong lệnh n Ba địa chỉ toán hạng: om n add r1, r2, r3 # r1 = r2 + r3 .c n Sử dụng phổ biến trên các kiến trúc hiện nay ng n Hai địa chỉ toán hạng: co n add r1, r2 # r1 = r1 + r2 an Sử dụng trên Intel x86, Motorola 680x0 th n n Một địa chỉ toán hạng: o ng add r1 # Acc = Acc + r1 du n Được sử dụng trên kiến trúc thế hệ trước u n cu n 0 địa chỉ toán hạng: n Các toán hạng đều được ngầm định ở ngăn xếp n Không thông dụng 2017 Kiến trúc máy tính 212 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  20. NKK-HUST Các kiến trúc tập lệnh CISC và RISC n CISC: Complex Instruction Set Computer om n Máy tính với tập lệnh phức tạp .c Các bộ xử lý: Intel x86, Motorola 680x0 ng n co n RISC: Reduced Instruction Set Computer an n Máy tính với tập lệnh thu gọn th n SunSPARC, Power PC, MIPS, ARM ... o ng RISC đối nghịch với CISC du n Kiến trúc tập lệnh tiên tiến u n cu 2017 Kiến trúc máy tính 213 CuuDuongThanCong.com https://fb.com/tailieudientucntt
nguon tai.lieu . vn