Nguyên tắc làm việc của Intel 80x86

Chia sẻ: Hoang Cuong | Ngày: | Loại File: PPT | Số trang:81

0
96
lượt xem
24
download

Nguyên tắc làm việc của Intel 80x86

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

AU đảm bảo việc quản lý, bảo vệ bộ nhớ, tuỳ theo chế độ địa chỉ các chương trình sẽ sử dụng các loại địa chỉ logic khác nhau, AU có nhiệm vụ chuyển các địa chỉ logic quản lý trong chương trình phần mềm thành địa chỉ vật lý, cung cấp tới BU để giao tiếp với bên ngoài. BU cung cấp các tín hiệu địa chỉ, dữ liệu và điều khiển để truy cập các bộ nhớ và vào ra.

Chủ đề:
Lưu

Nội dung Text: Nguyên tắc làm việc của Intel 80x86

  1. Nguyên tăc lam viêc cua ́ ̀ ̣ ̉ Intel 80x86 Pham Thế Duy ̣ (ptduy@yahoo.com)
  2. Sơ đồ khôi ́ ADDRESS UNIT (AU) ADDRESS LATCH AND DRIVER PHYSICAL PROCESSOR OFFSET ADDRESS EXTENTION ADDER PREFETCH INTERFACE ADDER SEGMENT BASE BUS CONTROL SEGMENT SEGMENT LIMIT SIZE DATA CHECK TRANSCEIVERS 6 BYTE PREFETCH QUEUE BUS UNIT (BU) ALU REGISTER LIMIT CONTROL 3 DECODER INSTRUCTION CHECK INSTRUCTION DECODER QUEUE EXECUTION UNIT (EU) INSTRUCTION UNIT (IU)
  3. Khối tạo địa chỉ (AU)  AU đảm bảo việc quản lý, bảo vệ bộ nhớ, tuỳ theo chế độ địa chỉ các chương trình sẽ sử dụng các loại địa chỉ logic khác nhau, AU có nhiệm vụ chuyển các địa chỉ logic quản lý trong chương trình phần mềm thành địa chỉ vật lý, cung cấp tới BU để giao tiếp với bên ngoài.  Địa chỉ vật lý là địa chỉ cung cấp trực tiếp cho bộ nhớ và vào ra, còn địa chỉ logic là các giá trị được chương trình quản lý sử dụng để tạo ra địa chỉ vật lý, đó chính là các địa chỉ đoạn (segment) và địa chỉ độ dời (offset).
  4. Khối giao tiếp BUS (BU)  BU cung cấp các tín hiệu địa chỉ, dữ liệu và điều khiển để truy cập các bộ nhớ và vào ra. Khối này cũng cho phép giao tiếp với bộ đồng xử lý hoặc các bộ vi xử lý khác.  Chức năng quan trong nhất của BU là tự động kích ̣ hoạt quá trình lấy lệnh từ bộ nhớ bằng bộ tiên truy ̀ câp lệnh (Prefetch). BU còn có chức năng cho phép ̣ quá trình lấy lệnh từ bộ nhớ thực hiện song song với các quá trình khác nhớ hàng đợi lệnh 6 byte (Prefetch queue).  Các địa chỉ mà AU tạo ra cung cấp tới các bộ cài (Address Latch) và sẽ được định thời cung cấp ra bên ngoài tại các thời điểm thích hợp. Dữ liệu truyền với CPU sẽ được chuyển qua các cổng đệm hai chiều (Data Transceivers).
  5. Khối giải mã lệnh (IU)  Lệnh được BU lấy vào hàng đợi, trong khi IU lấy lệnh đã lấy trước đó giải mã và chuyển tới hàng đợi lệnh đã giải mã (Decoded Instruction queue) để EU thực hiện.  Với chức năng giải mã lệnh, các lệnh ngoài bộ nhớ có thể mã hoá ngắn nhất có thể, IU sẽ tạo ra các tín hiệu điều khiển cần thiết từ các mã lệnh này.  Bằng cách sử dụng bộ giải mã lệnh, dung lượng nhớ của hệ thống sẽ yêu cầu ít hơn, thời gian lấy lệnh sẽ được giảm ngắn.
  6. Khối thực hiện lệnh (EU)  EU thực hiện các lệnh xử lý dữ liệu mà IU đã giải mã, nó giao tiếp dữ liệu với bên ngoài thông qua BU.  Các khối chức năng của EU bao gồm: - Bộ điều khiển (Control) thực hiện việc điều khiển việc thực hiện các lệnh trong EU. - ALU là khối thực hiện các phép toán số học logic, cấu trúc của ALU thông thường có hai ngõ vào nhận hai toán hạng và một ngõ ra cung cấp kết quả.  Các thanh ghi sử dụng làm nơi lưu trữ dữ liệu, sử dụng trong các phép tính, và các giá trị địa chỉ cho phép EU lấy các toán hạng từ bên ngoài.
  7. ́ ̉ Cac thanh ghi cua 80286  ́ Cac thanh ghi đa năng: AX, BX, CX, DX, DI, SI, BP, SP. ́ ̣  Cac thanh ghi đoan: CS, DS, ES, SS.  Thanh ghi cờ (Flags). ́ ̣ ̣  Cac thanh ghi đăc biêt: IP, MSW.
  8. ́ Cac thanh ghi đa năng (16bit)  Có thể sử dung chứa dữ liêu 16 bit. ̣ ̣  Có thể chia thanh hai phân 8 bit truy câp riêng ̀ ̣ ̃ re.
  9. Cac thanh ghi đa năng ́  AX (Accumulator) thanh chứa cho lênh nhân và chia. ̣ MUL BL ; AX = AL * BL  BX (Base): Sử dung lam thanh ghi đia chỉ cơ sở. ̣ ̀ ̣ MOV AL,[BX] ;chep nôi dung ô nhớ BX giữ đia chi. ́ ̣ ̣ ̉ MOV AH,[BX+03] ;chep nôi dung ô nhớ có đia chỉ [BX+3] vao AH. ́ ̣ ̣ ̀ MOV CH,[BX+DI+9]  CX (Counter): Sử dung lam bộ đêm số vong lăp. ̣ ̀ ́ ̀ ̣ LOOP N ;trừ CX đi 1, chuyên tới nhan N khi CX ≠0. ̉ ̃  DX (Data): Lam thanh ghi chứa dữ liêu trong cac lênh nhân chia 16 ̀ ̣ ́ ̣ bit. Lam thanh ghi giữ đia chỉ công vao ra. ̀ ̣ ̉ ̀ MUL BX ; DX AX = AX*BX OUT DX,BL ; chuyên BL ra công có đia chỉ DX ̉ ̉ ̣
  10. Cac thanh ghi đa năng (tiêp) ́ ́  DI (Destination Index): thanh ghi chỉ số đich – giữ đia chỉ đich dữ liêu ́ ̣ ́ ̣ trong cac lênh về chuôi. Lam thanh ghi đia chi. ́ ̣ ̃ ̀ ̣ ̉ MOV AH,[DI] ;chuyên nôi dung ô nhớ có đia chỉ chứa trong DI vao AH. ̉ ̣ ̣ ̀ MOV BH,[DI+7] ;Chuyên nôi dung ô nhớ [DI+7] vao thanh ghi BH ̉ ̣ ̀ MOVSB ; Chuyên nôi dung [SI] vao đia chỉ [DI] ̉ ̣ ̀ ̣  SI (Source Index): thanh ghi chỉ số nguôn – giữ đia chỉ nguôn dữ liêu ̀ ̣ ̀ ̣ trong cac lênh về chuôi. Lam thanh ghi đia chi. ́ ̣ ̃ ̀ ̣ ̉ MOV AH,[SI] MOV BH,[SI+7] MOVSW  BP (base pointer): thanh ghi con trỏ cơ sở – Lam thanh ghi đia chi. ̀ ̣ ̉ MOV AL,[BP] MOV AH,[BP+03] MOV CH,[BP+DI+9]
  11. Ngăn xêp ́  Ngăn xêp là môt vung nhớ sử dung cho viêc chứa ́ ̣ ̀ ̣ ̣ cac giá trị tam thời. ́ ̣  Ngăn xêp trong chế độ đia chỉ thực được truy xuât ́ ̣ ́ ̀ ̣ băng căp thanh ghi SS:SP segment/offset (StackSegment: StackPointer)  Môt số lênh tac đông tới vung nhớ ngăn xêp như: ̣ ̣ ́ ̣ ̀ ́ push, pop, call, ret, và nhiêu lênh khac nữa. ̀ ̣ ́  Ngăn xêp là nơi tôt nhât để lưu trữ cac giá trị tam ́ ́ ́ ́ ̣ thời vao bộ nhớ. ̀
  12. Chưa dư liêu vao ngăn xêp ́ ̃ ̣ ̀ ́ Từ ‘stack-ngăn xêp’ được sử dung là do cach lưu trữ và lây lai ́ ̣ ́ ́ ̣ dữ liêu trong vung nhớ ngăn xêp cung giông như viêc sử dung ̣ ̀ ́ ̃ ́ ̣ ̣ môt ngăn xêp trong thực tê. ̣ ́ ́ Có thể thực hiên ngăn xêp băng cac hôp. Để tao thanh ngăn xêp ̣ ́ ̀ ́ ̣ ̣ ̀ ́ trước hêt đăt hôp A, sau đó tới B và cuôi cung là C. ́ ̣ ̣ ́ ̀ C B B A A A Chú ý răng chung ta chỉ có thể lây được hôp xêp vao ngăn xêp ̀ ́ ́ ̣ ́ ̀ ́ cuôi cung (Đinh ngăn xêp - Top of Stack – TOS). Như vây trinh ́ ̀ ̉ ́ ̣ ̀ tự phuc hôi lai dữ liêu theo trinh tự ngược lai khi xêp vao ngăn ̣ ̀ ̣ ̣ ̀ ̣ ́ ̀ xêp (C tới B và cuôi cung là A). ́ ́ ̀
  13. Chưa dư liêu vao ngăn xêp băng lênh  ́ ̃ ̣ ̀ ́ ̀ ̣ PUSH  Thanh ghi con trỏ ngăn xêp SP (Stack Pointer) được sử ́ dung để truy câp ngăn xêp. SP luôn trỏ tới giá trị cuôi ̣ ̣ ́ ́ cung được cât vao ngăn xêp. ̀ ́ ̀ ́  Lênh PUSH chứa dữ liêu vao đinh ngăn xêp. ̣ ̣ ̀ ̉ ́ PUSH AX ; SP= SP-1, M[SP] ← AX  Lênh “PUSH AX” tương ứng với: ̣ SUB SP, 1 ̉ ; giam SP đi 1 MOV [SP], AX ; ghi giá trị cua AX vao đinh ngăn xêp ̉ ̀ ̉ ́  Cac lênh truy câp ngăn xêp có thể thực hiên với 16 ́ ̣ ̣ ́ ̣ ̣ hoăc 32 bit.
  14. Quan sat hoat đông lênh PUSH ́ ̣ ̣ ̣ Trước lênh PUSH AX ̣ ̣ Sau lênh PUSH AX Đia chỉ thâp ̣ ́ Đia chỉ thâp ̣ ́ ???? ???? ???? ???? ???? ???? Môi ô nhớ 16 ̃ ???? ́ bit, ngăn xêp ???? ???? được truy câp 16 ̣ ???? ???? ̣ hoăc 32 bit. ???? ???? ???? ???? ahal ← SP (SP mới = SP cũ -1) Last value ← SP Last value Đia chỉ cao ̣ Đia chỉ cao ̣
  15. Nhiêu lênh PUSH liên tiêp ̀ ̣ ́ Trước lênh PUSH ̣ ́ ̣ Sau cac lênh PUSH Đia chỉ thâp ̣ ́ Đia chỉ thâp ̣ ́ ???? ???? ???? ???? ???? PUSH AX ???? PUSH BX ???? ???? PUSH CX ???? ???? ???? cx ← SP ???? bx ???? ax Last value ← SP Last value Đia chỉ cao ̣ Đia chỉ cao ̣
  16. Đoc dư liêu trong ngăn xêp băng lênh POP ̣ ̃ ̣ ́ ̀ ̣ Lênh POP phuc hôi môt giá trị từ ngăn xêp: ̣ ̣ ̀ ̣ ́ POP AX ; AX ← M[SP] , SP= SP+1 Lênh “pop AX” tương đương với cac lênh: ̣ ́ ̣ mov AX, [SP] ; đoc giá trị từ đinh ngăn xêp ̣ ̉ ́ add sp, 1 ; tăng SP lên 1.
  17. Hoat đông cua lênh POP ̣ ̣ ̉ ̣ Trước POP AX Sau POP AX Đia chỉ thâp ̣ ́ Đia chỉ thâp ̣ ́ ???? ???? ???? ???? ???? Môi ô nhớ 16 ̃ ???? ́ bit, ngăn xêp ???? ???? ̣ truy câp 16 bit ???? ̣ hoăc 32 bits. ???? ???? ???? ???? ???? 23AB ← SP 23AB FF65 FF65 ← SP Đia chỉ cao ̣ Đia chỉ cao ̣ AX = 23AB
  18. Hoat đông nhiêu lênh POP liên tiêp ̣ ̣ ̀ ̣ ́ Trước ́ ̣ Sau cac lênh POP Đia chỉ thâp ̣ ́ Đia chỉ cao ̣ ???? ???? ???? ???? ???? ???? 23F4 pop AX 23F4 AX = 38AC 38AC ← SP pop BX 38AC BX = D21B D21B pop CX CX = 357F D21B 357F 357F 23AB 23AB ← SP FF65 FF65 Đia chỉ cao ̣ Đia chỉ thâp ̣ ́
  19. Ngăn xêp Overflow, Underflow ́  Nêu liên tuc cât dữ liêu vao ngăn xêp mà không lây dữ liêu ́ ̣ ́ ̣ ̀ ́ ́ ̣ ra thì ngăn xêp cuôi cung sẽ lớn hơn khoang dung lượng ́ ́ ̀ ̉ ̀ danh cho no. ́  Có thể dữ liêu ngăn xêp sẽ ghi tran qua vung nhớ ̣ ́ ̀ ̀ chứa mã lênh hoăc vung nhớ chứa dữ liêu khac ̣ ̣ ̀ ̣ ́ (không phai ngăn xêp). ̉ ́  Viêc nay goi là tran trên ngăn xêp (OVERFLOW). ̣ ̀ ̣ ̀ ́  Nêu lây dữ liêu ra khoi ngăn xêp nhiêu hơn cac giá trị đã ́ ́ ̣ ̉ ́ ̀ ́ cât vao ngăn xêp, con trỏ ngăn xêp có thể tăng lớn hơn ́ ̀ ́ ́ giá trị điêm khởi đông ngăn xêp. Điêu nay được goi là tran ̉ ̣ ́ ̀ ̀ ̣ ̀ dưới (UNDERFLOW).  Để ngăn xêp được sử dung tôt cân phai lây dữ liêu ra khoi ́ ̣ ́ ̀ ̉ ́ ̣ ̉ ngăn xêp băng đung số dữ liêu đã cât vao ngăn xêp. ́ ̀ ́ ̣ ́ ̀ ́
  20. Tông kêt vê ngăn xêp ̉ ́ ̀ ́  Là nơi chứa dữ liêu tam thời. ̣ ̣  Đoan và con trỏ ngăn xêp SS:SP ̣ ́  Push và Pop (LIFO-Last In First Out)  SP : Giữ đia chỉ đinh ngăn xêp ̣ ̉ ́  Sau lênh PUSH con trỏ SP sẽ giam. ̣ ̉
Đồng bộ tài khoản