Cỏc loại ngắt của mỏy PC

Một phần của tài liệu KĨ THUẬT GHÉP NỐI MÁY TÍNH (Trang 32 - 35)

Cỏc loại ngắt

Người ta chia ngắt thành hai loại: ngắt cứng và ngắt mềm

Ngắt cứng: cũn gọi là ngắt ngoài vỡ do nguyờn nhõn bờn ngoàị VXL cú cỏc lối vào dành cho ngắt ngoàị Khi cú tớn hiệu vào lối vào này, chương trỡnh VXL đang thực hiện sẽ bị dừng.

Ngắt NMI ( Non maskable Interrupt) - Ngắt khụng che được : Khi cú ngắt này, VXL dừng chương trỡnh sau lệnh đang thực hiện, thanh ghi địa chỉ lệnh (IP) và thanh ghi chỉ thị flag được lưu giữ, 2 bit IF (Interrupt Flag) va TF (Trap Flag) bị xoỏ về 0 để cấm ngắt ngoài tiếp theo và khụng cú bẫỵ Muốn cho phộp hay khụng cho phộp ngắt này xảy ra, chỳng ta dựng một triger (flip – flop) để mắc lối vào ngắt trước khi đưa vào lối vào ngắt NMỊ

Ngắt INTR:

o Ngắt này được cho phộp hay cấm ngắt bằng cỏch lập hay xoỏ bit IF của thanh ghi flag. Lập bởi lệnh STI (Set Interrupt), xoỏ bởi lệnh CLI (Clear interupt)

o Thường được nối với lối ra yờu cầu ngắt của vi mạch xử lý ưu tiờn ngắt (8214, 8259). Ngắt reset : Chương trỡnh Ngắt C h ư ơ ng t rỡnh c on ph ụ c v ụ ng ắ t

Ngắt mềm: (hay ngắt bờn trong do lệnh của chương trỡnh) do VXL gặp cỏc lệnh gõy ra ngắt hoặc tỡnh huống đặc biệt khi thực hiện lệnh (ngắt logic) và ngắt của hệ điều hành.

- Ngắt do lệnh: đú là ngắt khi thực hiện cỏc lệnh CALL, HLT, INT

- Ngắt logic hay cỏc ngoại trừ: xảy ra khi gặp cỏc tỡnh huống đặc biệt sau:

o Chia một số cho 0

o Tràn nội dung thanh ghi hay bộ nhớ

o Thực hiện từng bước (vector 1)

o Điểm dừng ( Break point) chương trỡnh do người dung chương trỡnh sử dụng định trước (Vectơ 3)

- Ngắt của hệđiều hành: đú là cỏc ngắt do hệđiều hành quy định để phục vụ trao đổi tin của cỏc TBN (bàn phớm, mỏy in, vv) như INT 10, INT 16, INT 21, .v.v..)

Ngắt của Mỏy tớnh – PC (8086, 80286 )

Cỏc ngắt khụng hoàn toàn được liờn kết với cỏc thiết bị ngoàị Họ VXL 8086 cung cấp 256 ngắt, đa phần trong số chỳng là chỉ để phục vụ như ngắt phần mềm. Họ 8086 cú một bảng vecter ngắt giữđịa chỉ của cỏc chương trỡnh phục vụ ngắt. Mỗi địa chỉ là 4 bytẹ

Trong cỏc mỏy PC, chỉ cú 15 ngắt dành cho phần cứng và 1 ngắt khụng che được. Phần cũn lại được sử dụng cho cỏc ngắt phần mềm và cỏc bộ xử lý ngoại lệ. Bộ xử lý ngoại lệ là cỏc chương trỡnh tương tự như ISR nhưng xử lý cỏc ngắt khi xuất hiện lỗị Vớ dụ như vector ngắt đầu tiờn giữ địa chỉ của ngoại lệ Divide by Zero (lỗi chia cho 0). Khi xuất hiện lỗi này VXL nhảy sang địa chỉ 0000:0000 và thực hiện chương trỡnh cú địa chỉ lưu ởđõỵ

INT

(Hex) IRQ Common Uses

00 - 01 Exception Handlers -

02 Non-Maskable IRQ Non-Maskable IRQ (Parity Errors)

03 - 07 Exception Handlers - 08 Hardware IRQ0 System Timer 09 Hardware IRQ1 Keyboard 0A Hardware IRQ2 Redirected

0B Hardware IRQ3 Serial Comms. COM2/COM4 0C Hardware IRQ4 Serial Comms. COM1/COM3 0D Hardware IRQ5 Reserved/Sound Card

0E Hardware IRQ6 Floppy Disk Controller 0F Hardware IRQ7 Parallel Comms.

10 - 6F Software Interrupts - 70 Hardware IRQ8 Real Time Clock

71 Hardware IRQ9 Redirected IRQ2 72 Hardware IRQ10 Reserved

73 Hardware IRQ11 Reserved 74 Hardware IRQ12 PS/2 Mouse

75 Hardware IRQ13 Math's Co-Processor 76 Hardware IRQ14 Hard Disk Drive 77 Hardware IRQ15 Reserved

78 - FF Software Interrupts -

Thủ tục xử lý (đỏp ứng) ngắt chương trỡnh (adsbygoogle = window.adsbygoogle || []).push({});

Khi cú một tin hiệu yờu cầu ngắt chương chỡnh đưa vào chõn yờu cầu ngắt (INTR), quỏ trỡnh ngắt chương trỡnh được diễn ra theo cỏc bước sau:

Lưu giữ tin về trạng thỏi của VXL lỳc cú tớn hiệu yờu cầu ngắt và nơi chương trỡnh bị giỏn đoạn.

VXL gửi tớn hiệu xỏc nhận hay cho phộp ngắt – INTA và đọc vector ngắt.

Chuyển sang chương trỡnh phục vụ ngắt.

Trở về chỗ chương trỡnh chớnh bị ngắt và tiếp tục thực hiện chương trỡnh đú. • Lưu giữ tin về chỗ bị ngắt chương trỡnh:

Ở cuối mỗi chu trỡnh lệnh, VXL 8086 ( cũng như 80286) kiểm tra xem cú yờu cầu ngắt nào gửi tới khụng. Nếu cú yờu cầu, VXL tiến hành lưu trữ tin về nơi bị ngắt chương trỡnh ( dựng lệnh PUSH vào vựng nhớ ngăn xếp mà địa chỉ chỉ thị bởi thanh ghi SP).

Cỏc tin đú là:

- Thanh ghi cờ Flag FR (Flag Register) - Con trỏ lệnh IP (Instruction Pointer)

- Thanh ghi đoạn lệnh CS (Code Segment register)

Gửi tớn hiệu cho phộp (xỏc nhận ) ngắt và đọc vector ngắt:

Sau khi đó lưu trữ tin về vị trớ bị ngắt của chương trỡnh chớnh, VXL gửi tớn hiệu xỏc nhận ngắt INTA (Interrupt Acknowledge) cho KGN của TBN. Tuỳ cỏch tổ chức ngắt và tạo vector ngắt, VXL sử dụng tớn hiệu này để đọc vector ngắt tương ứng của KGN vào thanh ghi chứa Ạ VXL đọc nội dung của ụ nhớ cú địa chỉ là vector ngắt để biết được địa chỉ đầu tiờn của chương trỡnh con phục vụ ngắt ( chương trỡnh trao đổi tin).

Thực hiện chương trỡnh con phục vụ ngắt

Đú là chương trỡnh mà địa chỉ lệnh đầu tiờn nằm trong ụ nhớ cú địa chỉ là vector ngắt. Kết thỳc chương trỡnh con này, cú lệnh trở về (RET - return) để VXL tiếp tục thực hiện chương trỡnh chớnh.

Sau khi gặp lệnh trở về (RET), VXL tiến hành đọc và hồi phục cỏc tin của VXL lỳc bị ngắt chương trỡnh đó ghi nhớ ở chỗ ngắt chương trỡnh (bằng lệnh POP cỏc ụ nhớ ngăn xếp). Qua trỡnh đọc ra này xảy ra ngược lại với quỏ trỡnh ghi vào (o quy luật LIFO – Last In First Out) và nội dung của:

Thanh ghi con trỏ lệnh (IP) trỏ vềđộ lệch (offset) của địa chỉ lệnh tiếp theo của chương trỡnh chớnh bị ngắt trong mảng nhớ lệnh (CS).

Thanh ghi mảng lệnh (CS) vềđịa chỉđoạn đầu tiờn của vựng nhớ dành cho chương trỡnh chớnh bị ngắt.

Thanh ghi flag lỳc bị ngắt chương trỡnh.

Một phần của tài liệu KĨ THUẬT GHÉP NỐI MÁY TÍNH (Trang 32 - 35)