2009-03-01 72 views
18

Tôi có ý tưởng về cách thức xử lý ngắt của CPU lõi kép. Tôi đã tự hỏi về cách xử lý ngắt được thực hiện trên một bảng với nhiều hơn một bộ xử lý vật lý.Các ngắt bị xử lý bởi các máy xử lý kép như thế nào?

Có bất kỳ trách nhiệm gián đoạn nào được xác định bởi cấu hình của bảng vật lý không? Mỗi bộ xử lý phải có khả năng xử lý một số loại ngắt, như đĩa I/O. Trừ khi có một số mạch để quản lý và gửi các ngắt tới bộ xử lý thích hợp? Tôi đoán là sơ đồ phải là bộ xử lý trung tính, để bất kỳ bộ xử lý và lõi nào có thể chạy trình xử lý ngắt.

Nếu lõi đang chờ trên đĩa được đọc, lõi đó có phải là lõi chạy trình xử lý ngắt khi đĩa đã sẵn sàng không?

+1

Tôi thấy bây giờ mà một lõi không bao giờ chờ đợi trên đọc, một chờ đợi chủ đề. Khi đọc xong, mặc dù có vẻ như nó sẽ có khả năng tốt hơn để chạy thread mới được đánh thức trên cùng một bộ xử lý như trước đây do cơ hội cho dữ liệu vẫn được lưu trữ trên bộ xử lý đó. – jeffD

Trả lời

8

Trên hệ thống x86 mỗi CPU được địa phương APIC riêng của mình (Advanced Programmable Interrupt Controller) cũng được nối với nhau và với một I/O APIC để xử lý thiết bị định tuyến ngắt đến APICs địa phương.

Hệ điều hành có thể lập trình các APIC để xác định ngắt nào được chuyển đến CPU nào (hoặc để cho APIC đưa ra quyết định đó).

Tôi tưởng tượng rằng một CPU đa lõi sẽ có APIC cục bộ cho từng lõi, nhưng tôi thực sự không chắc chắn về điều đó.

Xem những liên kết này để biết thêm chi tiết:

0

tôi sẽ nói rằng nó sẽ phụ thuộc vào các nhà sản xuất phần cứng ...

Tuy nhiên this link làm cho tôi tin rằng hầu hết có lẽ xử lý bởi bộ vi xử lý chính và/hoặc lõi đầu tiên.

Another link

3

gì bạn quan tâm trong SMP Processor Affinity là. Here là một bài viết tuyệt vời về cách nó được xử lý trong Linux. Advanced Programmable Interrupt Controller (APIC) là cách bạn quản lý điều này trong một hệ thống hiện đại. Về cơ bản, mặc định sẽ là tất cả đi đến bộ vi xử lý 0 trừ khi bạn có một hệ điều hành sử dụng giao diện này để thiết lập mọi thứ đúng cách. Ngoài ra, bạn không nhất thiết muốn lõi phát hành lệnh chờ một ngắt cụ thể. Bạn muốn các lõi được tải ít hơn để nhận nó.

+0

Cảm ơn, liên kết trên SMP trong Linux thật thú vị. Bạn nên biết rằng có thể sửa đổi máy chủ theo cách này. – jeffD

1

Tôi đã hỏi câu hỏi này một lúc trước. Có lẽ nó có thể cung cấp cho bạn một số cái nhìn sâu sắc :)

how do interrupts in multicore/multicpu machines work

+0

Thông tin hữu ích về cách thức I/O đĩa lập trình được chia nhỏ thành các hoạt động I/O của ngành và gián đoạn liên quan. – jeffD

Các vấn đề liên quan