Xử lý ngắt:

Một phần của tài liệu chức năng và cấu trúc của vi xử lý trong máy tính (Trang 55 - 59)

Xử lý ngắt trong một bộ xử lý là cơ sở cung cấp để hỗ trợ các hoạt động hệ thống. Nó cho phép một chương trình ứng dụng bị đình chỉ, để mà một loạt điều kiện gián đoạn có thể được phục vụ và sau đó tiếp tục.

Hai lớp của các sự kiện gây ra x86 tạm ngừng thực hiện của dòng lệnh hiện thời và đáp ứng với các sự kiện: ngắt và các ngoại lệ. Trong cả hai trường hợp, bộ vi xử lý tiết kiệm điều kiện của quá trình hiện tại và chuyển đến một thường trình xác định trước để phục vụ điều kiện. Một ngắt được tạo ra bởi một tín hiệu từ phần cứng, và nó có thể xảy ra ở thời điểm ngẫu nhiên trong quá trình thực hiện của một chương trình. Một ngoại lệ được tạo ra từ các phần mềm, và nó được kích hoạt bởi thực hiện của một lệnh. Có hai nguồn ngắt và hai nguồn các ngoại lệ:

1. Ngắt

• Ngắt maskable: Nhận trên chân INTR của bộ xử lý. Bộ vi xử lý không công nhận một ngắt maskable trừ khi ngắt cho phép cờ (IF) được thiết lập.

• Không ngắt maskable: Nhận trên chân NMI của bộ xử lý. công nhận ngắt đó không thể được ngăn chặn.

2. Trường hợp ngoại lệ

• Bộ xử lý-phát hiện các ngoại lệ: Kết quả khi xử lý gặp một lỗi khi cố gắng thực hiện một lệnh.

• Các ngoại lệ được lập trình: Đây là lệnh tạo ra một ngoại lệ (ví dụ, INTO, INT 3, INT, và BOUND).

Bảng vector ngắt:

Xử lý ngắt trên x86 sử dụng bảng vector ngắt. Tất cả các loại ngắt được gán một con số, và con số này được sử dụng để chỉ vào bảng table. Đó là vector ngắt chứa 256 32-bit ngắt vector, địa chỉ (phân đoạn và bù đắp) của quá trình thường xuyên ngắt. Bảng 12.3 trình bày phân cấp của con số trong các bảng vector ngắt; các mục thể hiện tô đậm ngắt, trong

khi các mục không được tô đậm là các ngoại lệ. các NMI phần cứng ngắt là loại 2. INTR ngắt phần cứng được chỉ định số trong khoảng 32-255; khi một ngắt INTR được tạo ra, nó phải được đi kèm trên bus với số lượng vector ngắt cho ngắt điều này. Phần còn lại số vector được sử dụng cho các ngoại lệ.

Nếu có nhiều hơn một ngoại lệ hoặc ngắt đang chờ, các dịch vụ xử lý chúng theo một thứ tự dự đoán được. Vị trí của số vector trong bảng không phản ánh ưu tiên. Thay vào đó, ưu tiên trong các ngoại lệ và ngắt được tổ chức vào năm lớp. Trong thứ tự giảm dần ưu tiên, đây là các lớp:

• Lớp 1: Bẫy trên lệnh trước (số vector 1). • Lớp 2: ngoài ngắt (2, 32-255).

• Lớp 3: Lỗi từ lấy lệnh kế tiếp (3, 14). • Lớp 4: Lỗi từ giải mã lệnh kế tiếp (6, 7).

• Lớp 5: Lỗi về việc thực hiện một lệnh (0, 4, 5, 8, 10-14, 16, 17).

Xử lý ngắt:

Chỉ với chuyển giao thực hiện bằng cách sử dụng một lệnh CALL, một chuyển giao cho một ngắt xử lý thường xuyên sử dụng hệ thống ngăn xếp để lưu trữ các bộ vi xử lý của trạng thái. Khi một ngắt xảy ra và được công nhận bởi bộ vi xử lý, một chuỗi các sự kiện diễn ra:

1. Nếu việc chuyển giao liên quan đến một sự thay đổi mức

độ đặc quyền, sau đó ngăn xếp đoạn hiện tại thanh ghi và hiện nay mở rộng con trỏ ngăn xếp (ESP) thanh ghi được đẩy vào ngăn xếp.

2. Giá trị hiện tại của thanh ghi EFLAGS được đẩy vào

stack.

3. Cả hai ngắt (IF) và bẫy (TF) cờ sẽ bị xóa. Điều này vô

hiệu hóa INTR ngắt và cái bẫy hoặc tính năng duy nhất bước.

4. Phân đoạn mã (CS) con trỏ lệnh hiện tại và con trỏ lệnh hiện thời (IP hoặc EIP) đều đẩy vào stack.

5. Nếu ngắt được đi kèm với một mã lỗi, sau đó mã lỗi được

đẩy vào ngăn xếp.

6. Nội dung vector ngắt được lấy và nạp vào CS và IP hoặc

EIP thanh ghi. Thực hiện tiếp tục từ dịch vụ thường xuyên bị ngắt.

Trở về từ một gián đoạn, các dịch vụ thường xuyên ngắt thực hiện một IRET lệnh. Điều này gây ra tất cả các giá trị được lưu trên stack được khôi phục; thực hiện sơ yếu lý lịch từ quan điểm của các bị ngắt.

Một phần của tài liệu chức năng và cấu trúc của vi xử lý trong máy tính (Trang 55 - 59)