Những yêu cầu ngắt PCI bạn cần biết
Những kênh yêu cầu ngắt, hay còn gọi là những ngắt phần cứng được sử dụng bởi những thiết bị phần cứng để chuyển tín hiệu bo mạch chủ. Tiến trình này thì tương tự như một sinh viên thể hiện rằng anh ta đang cần sự chú ý.
Cách thức hoạt động
Những kênh ngắt này được thực hiện bởi những dây kim loại trên bo mạch chủ và trong những đầu nối khe cắm. Khi một ngắt riêng biệt được yêu cầu, một trình thủ tục đặc biệt tiếp quan hệ thống trước tiên lưu trữ toàn thanh ghi CPU chứa trong ngăn xếp và sau đó quản lý hệ thống vào bằng vector ngắt. Băng vector này chứa một danh sách địa chỉ bộ nhớ tương ứng với những kênh ngắt. Tùy thuộc trên ngắt nào được yêu cầu, chương trình tương ứng với kênh đó sẽ được chạy.
Những con trỏ trên bảng vector chỉ địa chỉ của bất cứ trình điều khiển phần mềm nào được sử dụng để phục vụ card phát sinh ra yêu cầu ngắt. Đối với card mạng, cho ví dụ, vector có thể chỉ địa chỉ của trình điều khiển mạng được tải để vận hành card, đối với bộ điều khiển đĩa cứng, vector có thể chỉ mã BIOS để vận hành bộ điều khiển.
Sau khi thủ tục phần mềm riêng biệt hoàn tất thực thi, bất cứ chức năng nào card cần thiết sẽ được phần mềm kiểm soát cho quay về ngăn xếp chứa những thanh ghi CPU và hệ thống vẫn tiếp tục bất kể cái gì nó đang thực hiện trước khi ngắt xảy ra.
Thông qua việc dùng những ngắt, hệ thống có thể trả lời những sự kiện ngoài đúng lúc. Mỗi lần cổng serial truyền 1 byte vào hệ thống, một ngắt được phát sinh để đảm bảo hệ thống đọc byte đó trước khi byte khác đến. Ghi nhớ rằng trong một số trường hợp thiết bị cổng cụ thể, một modem với chip 16550 hoặc chip UART cao hơn có thể kết hợp tầng đệm byte cho phép nhiều chữ số dữ liệu được lưu trữ trước khi một ngắt phát sinh.
Những ngắt phần cứng thông thường được dành ưu tiên bởi những số của chúng; Với một số ngoại lệ, những ngắt ưu tiên cao nhất có những số thấp nhất. Những ngắt ưu tiên cao hơn lấy quyền ưu tiên hơn những ngắt ưu tiên thấp hơn bằng cách tạm thời chặn chúng lại. Kết quả là, vài ngắt có thể xảy ra trong hệ thống đồng thời, với mỗi ngắt xếp lồng trong cái kia.
Bus ISA sử dụng cảm ứng ngắt trích khơi mép (edge-triggered interrupt sensing), trong đó một ngắt được cảm nhận bởi một tín hiệu thay đổi được gửi đi trên dây kim loại riêng biệt định vị trên đầu nối khe cắm. Một dây kim loại khác tương ứng với mỗi ngắt phần cứng có thể. Do bo mạch chủ không nhận ra khe cắm nào chứa card dùng dòng ngắt và do đó phát sinh ngắt, sự rối rắm xuất hiện nếu nhiều hơn một card được thiết lập để sử dụng ngắt riêng biệt. Cho nên mỗi ngắt thường được định rõ cho một thiết bị phần cứng. Phần lớn thời gian, những ngắt không thể được chia sẻ.
Biện pháp cải thiện
Trước tiên, IBM phát triển những phương thức để chia sẻ những ngắt trên bus ISA, nhưng một ít thiết bị theo những quy luật cần thiết để làm điều này có tính xác thực. Bus PCI vốn đã cho phép chia sẻ ngắt; thực tế, thực sự tất cả card PCI được thiết lập ngắt PCI là chia sẻ ngắt này trên bus PCI. Vấn đề thực sự là về mặt kỹ thuật có hai bộ ngắt phần cứng trong hệ thống: những bộ ngắt PCI và những bộ ngắt ISA. Với card PCI làm việc trên PC, những ngắt PCI trước tiên ánh xạ những ngắt ISA, kế tiếp được cấu hình như không chia sẻ được. Do vậy, trong nhiều trường hợp bạn phải gán ngắt không xung đột cho mỗi card, thậm chí cả những card PCI. Sự xung đột giữa gán các ISA IRQ cho những ngắt PCI gây ra nhiều sự cố cấu hình máy tính do bo mạch chủ PCI và tiếp tục gây sự cố sau sự phát triển của Windows và công nghệ cắm là chạy (Plug and Play) của nó.
Giải pháp cho vấn đề chia sẻ ngắt của card PCI đôi khi được gọi là PCI IRQ Steering, được hỗ trợ trong nhiều hệ điều hành (bất đầu với Windows OSR 2.x) là BIOS hơn một thập ký. PCI IRQ Steering cho phép hệ điều hành như Windows tự ánh xạ động (dvnamically map) hoặc “lái (steer)” những card PCI (hầu hết dùng PCI INTA#) đến những ngắt PC tiêu chuẩn và cho phép vài card PCI được ánh xạ đến ngắt tương tự.
Những ngắt phần cứng đôi khi được xem như những ngắt ngụy trang (maskable interrupt), nghĩa là những ngắt có thể được che giấu hoặc tắt đi trong thời gian ngắn trong lúc CPU được sử dụng cho những hoạt động then chốt khác. Nó tùy thuộc vào hệ thống BIOS và chương trình để quản lý ngắt chính xác và hữu hiệu cho sự thực thi hệ thống tốt nhất.
Những ngắt bus ISA 8 Bit
PC và XT (Những hệ thống dựa trên CPU 8 bit 8086) cung cấp cho tám ngắt phần cứng ngoài khác biệt.
Nếu một hệ thống có một trong các bus ISA 8 bit đầu tiên, bạn sẽ tìm thấy các nguồn IRQ được cung cấp bởi hệ thống có một giới hạn chặt chẽ. Cài đặt vài thiết bị cần những dịch vụ của hệ thống IRQ trong hệ thống loại PC/XT có thể là một nghiên cứu trong sự thất vọng bởi vì cách duy nhất để giải quyết vấn đề thiếu ngắt là gỡ bỏ bo tiếp hợp.
Những ngắt bus EISA, ISA 16 Bit và MCA
Kèm theo sự giới thiệu AT, dựa trên bộ xử lý 286, là sự gia tăng số lượng ngắt phần cứng ngoài mà một bus có thể hỗ trợ. Số lượng ngắt tăng gấp đôi đến 16 bởi dùng đến hai bộ điều khiển ngắt Intel 8259, thắng những ngắt được phát sinh bởi cái thứ hai thông qua IRQ2 không sử dụng trên bộ điều khiển thứ nhất. Sự sắp đặt này tạo hữu hiệu chi 15 phép gán IRQ có thể và IRQ2 trở nên không thể sử dụng được.
Bằng cách dẫn tất cả những ngắt từ bộ điều khiển IRQ thứ hai xuyên qua IRQ2 trên cái thứ nhất, tất cả những ngắt mới này được gán một mức ưu tiên được xếp lồng vào nhau giữa IRQ1 và IRQ3. Do đó IRQ 15 có sự ưu tiên hơn IRQ3. Để ngăn ngừa những sự cố với những bộ bo sử dụng IRQ2, những nhà thiết kế hệ thống AT dẫn đường một trong những ngắt mới (IRQ9) chiếm vị trí slot sau khi gỡ bỏ IRQ2. Nghĩa là bất kỳ card nào bạn cài đặt trong hệ thống hiện đại yêu cầu dùng IRQ2 thì thực sự sử dụng IRQ9.
Lưu ý:
Mặc dầu bus ISA 16 bit có gấp đôi số ngắt trong hệ thống bus ISA 8 bit, bạn vẫn có thể chạy ra khỏi khả năng những ngắt bởi vì chỉ những thiết bị tiếp hợp 16 bit có thể dùng phần lớn những ngắt mới. Bất kì card tiếp hợp PCI 32 bit đều có thể được ánh xạ đến bất kì ISA IRQ nào.
Những dòng IRQ dư trong hệ thống ISA 16 bit là sự trợ giúp trừ khi những bo tiếp hợp bạn cần sử dụng cho phép cấu hình chúng cho một trong những IRQ không được dùng đến. Một số thiết bị được kiểm soát bằng mạch điện điện tử nên chúng chỉ dùng một IRQ riêng biệt, một số card tiếp hợp ISA 16 bit cũ hơn không được thiết kế để dùng với IRQ 16 bit (9-15). Nếu có một thiết bị dùng IRQ, bạn phải giải quyết sự xung đột trước khi cài đặt card tiếp hợp thứ hai. Nếu không có card tiếp hợp nào cho phép bạn tái cấu hình sử dụng IRQ của nó thì cơ hội để bạn sử dụng hai thiết bị trong cùng hệ thống là không được.