Kiến trúc máy tính: Bàn phím USB có phản ứng kém hơn do phạm vi IRQ hẹp?


19

Đây là một tuyên bố tôi chỉ nghĩ đến. Bất cứ ai có thể cho tôi biết liệu, và tại sao, nó là sự thật?

Tuyên bố: Vì bàn phím USB dựa trên trình điều khiển và kiến ​​trúc chung USB chỉ có quyền truy cập vào (các) mức IRQ thấp hơn, nên nó không thể cấp cho bàn phím quyền truy cập vào IRQ ở mức ưu tiên cao như một bộ điều khiển khác (giả sử là PS2).

Điều này (nếu đúng) có nghĩa là bàn phím USB sẽ có mức độ ưu tiên thấp hơn (về tính khả dụng hơn tốc độ) so với bàn phím được cắm vào loại cổng khác (như PS2)?

Ví dụ, bàn phím USB được ánh xạ tới IRQ ưu tiên trung bình, trên hệ thống bị lỗi bị kẹt trên một thói quen ngắt ưu tiên trung bình khác. Do mức độ ưu tiên tương đối bằng nhau, các sự kiện bàn phím sẽ bị bỏ qua và bạn sẽ không thể gửi Ctrl-Alt-del hoặc bất kỳ tổ hợp phím khẩn cấp nào khác. Nếu bàn phím có mức độ ưu tiên cao hơn, hệ thống có thể nhập thói quen Ngắt phím.

Hoặc bộ điều khiển USB có đủ phạm vi IRQ (có thể ưu tiên liên tục hay không) để cung cấp cho bàn phím của bạn mức độ ưu tiên cần thiết (về cơ bản ngay dưới mức mất điện)?

Còn bàn phím ảo, được ánh xạ qua kết nối mạng trên phiên máy tính từ xa thì sao?

EDIT: Câu hỏi của tôi không liên quan nhiều đến tốc độ (xem bình luận): câu hỏi chính là: bàn phím PS2 có nhiều cơ hội để nói chuyện với CPU bị kẹt ở đâu đó trên mức ưu tiên ngắt cao hơn USB và thấp hơn bàn phím không?


2
Tự hỏi nếu điều tương tự là đúng với chuột USB. Của tôi chắc chắn có vẻ như vậy sau khi chuyển đổi giao diện (nhưng không phải là chuột) một vài tháng trước.
martineau

Nếu nó đúng với bàn phím thì rất có thể giống với chuột; nhưng có lẽ ít quan trọng hơn vì không có tổ hợp phím khẩn cấp cho chuột
PPC

Tôi không nghĩ rằng đây là một điều hợp lý để được quan tâm. Nếu bạn đã làm điều này và bàn phím bị kẹt, thì các giao diện mạng sẽ bị bỏ đói và bạn không thể điều khiển hệ thống từ xa. Có vẻ như bạn chỉ đang giao dịch một vấn đề khác.
David Schwartz

1
@DavidSchwartz: Đây chủ yếu là một câu hỏi lý thuyết, và được lấy từ quan điểm của kiến ​​trúc sư máy tính. Tuy nhiên, vẫn có một ứng dụng từ PoV của người dùng: "máy tính của tôi bị kẹt, không phản hồi với Ctrl-Alt-Backspace: tôi nên tìm bàn phím PS2 hoặc quên nó và khởi động lại khó khăn"
PPC

2
@PPC: Ctl-alt-del có thể sẽ không hoạt động. Quá trình khởi động lại được kiểm soát bởi phần mềm cấp cao giúp tắt các chương trình, xóa bộ nhớ cache, v.v. Với một cơn bão gián đoạn, phần mềm cấp cao sẽ không hoạt động.
David Schwartz

Câu trả lời:


17

Đó không phải là về phạm vi IRQ, đó là về ba yếu tố chính:

  1. Lượng xe buýt đông đúc
  2. Số lượng dữ liệu
  3. Độ dài đường dẫn dữ liệu

Trước đây, bàn phím và chuột sẽ có IRQ chuyên dụng (IRQ1 cho bàn phím, IRQ12 cho chuột PS / 2).

Điều này có nghĩa là khi một phím được nhấn, nó có một đường gần như trực tiếp đến CPU (thông qua PIC; nhưng vẫn chỉ có một bước nhảy). Điều này cho phép các sự kiện bàn phím được xử lý rất nhanh trong phần cứng, đặc biệt là khi nó có IRQ1. (Tất nhiên đây là tất cả về việc sử dụng bàn phím thông thường và bỏ qua dòng đặt lại đi từ bộ điều khiển bàn phím trực tiếp đến CPU.)

Mặt khác, các thiết bị USB đều có chung một bus và IRQ của bộ điều khiển USB (thường là một trong những thiết bị điều khiển IRQ được chia sẻ với các thiết bị khác như NIC, thẻ video, v.v.). Như vậy, với bàn phím USB, các sự kiện đi từ bộ điều khiển bàn phím, qua bus USB vào bộ điều khiển máy chủ USB, từ đó, đến PIC phụ, sau đó đến PIC chính, sau đó đến trình điều khiển trong HĐH hoặc BIOS , sau đó vào CPU. Ngoài ra, có dữ liệu kiểm tra lỗi được thêm vào dữ liệu được truyền qua USB.

Nói cách khác, đơn giản là có nhiều thứ xảy ra với bàn phím USB hơn là với bàn phím AT hoặc PS / 2. Đường dẫn dữ liệu dài hơn và có nhiều dữ liệu hơn và thậm chí có thể phải thông qua phần mềm . Mặc dù băng thông USB đủ lớn, việc có các thiết bị khác trên cùng một cổng gây ra va chạm và chậm trễ (bạn có thể thêm một hub, nhưng tất cả các cổng trên nó vẫn là cùng một cổng trên bộ điều khiển). Vì vậy, có rất nhiều chờ đợi đang diễn ra.

Ngoài ra, có riêng (IRQ có nghĩa là bàn phím cũ hơn có thể làm gián đoạn quá trình xử lý của CPU bất cứ khi nào cần. Với USB, bàn phím không có cơ chế như vậy và chỉ có thể gửi một số dữ liệu và chờ / hy vọng bộ điều khiển USB làm gián đoạn CPU ở một điểm nào đó.

Bàn phím ảo thậm chí còn tệ hơn bởi vì chúng chắc chắn đi qua phần mềm mà tất nhiên không thể cạnh tranh với một dòng phần cứng.

Dưới đây là một hình ảnh đơn giản về sự khác biệt giữa bàn phím AT hoặc PS / 2 và bàn phím USB:

nhập mô tả hình ảnh ở đây


Tôi không quan tâm nhiều đến tốc độ so với mức độ ưu tiên: Tôi hiểu rằng đường dẫn dữ liệu dài hơn có thể khiến tổ hợp phím của tôi phải chờ; nhưng tôi đang nghĩ về "nhiều khả năng tổ hợp phím sẽ bị mất trên một hệ thống bị lỗi", điều mà tôi nghĩ không phụ thuộc vào độ dài đường dẫn.
PPC

Làm thế nào IRQ có thể được xử lý trong phần mềm TRƯỚC KHI chạm CPU? APIC có bộ xử lý riêng không? Với thói quen của họ trong bộ nhớ trung tâm? Họ có 'mượn' thời gian CPU không?
PPC

> "có khả năng tổ hợp phím bị mất trên hệ thống bị lỗi" Điều này phụ thuộc vào lỗi, nhưng đúng vậy, rõ ràng bàn phím USB có khả năng mất tổ hợp phím cao hơn do độ phức tạp thêm. > Re: APIC Có, họ có bộ xử lý a xử lý ở mức độ nào đó, giống như bộ điều khiển bàn phím có bộ xử lý, thẻ video có GPU, v.v. Hầu hết phần cứng có một số loại chip xử lý một số xử lý.
Synetech

> Làm thế nào IRQ có thể được xử lý trong phần mềm TRƯỚC KHI chạm CPU? Bàn phím USB không chỉ có trình điều khiển mà bộ điều khiển USB cũng có trình điều khiển. Dữ liệu bàn phím không đi thẳng vào CPU, thay vào đó, nó đi qua bàn phím đến bộ điều khiển USB, tới trình điều khiển của nó, tới ổ đĩa bàn phím, sau đó đến CPU hoặc phần mềm khác khi cần, vì vậy một số thứ như Ctrl+Alt+Deldon ' T làm việc thông qua một dòng phần cứng nhưng được xử lý thông qua phần mềm.
Synetech

Vì vậy, nếu tôi hiểu rõ về cơ sở dữ liệu cơ bản của tổ hợp phím của tôi sẽ là: Bộ điều khiển USB, APIC, CPU Thông qua IRQ thấp, USB ISR / IST, IRQ tự tạo CPU (như TRAP), ISR / IST bàn phím? Bằng cách này, ưu tiên có liên quan là của bộ điều khiển USB ..? Trong câu hỏi của tôi, tôi nghĩ rằng bộ điều khiển USB có thể dịch (các) gói USB sang IRQ bàn phím thực.
PPC

14

Câu trả lời ngắn

Cả hai bàn phím sẽ thực hiện hoàn toàn như nhau cho mã cấp độ người dùng. Có thể có những khác biệt nhỏ (từ nano đến micro giây trên PC hiện đại) nếu bạn viết trình điều khiển thiết bị. Nếu hệ thống bị treo, cả hai bàn phím sẽ không giải quyết được vấn đề. Đi để khởi động lại cứng.


Câu trả lời dài TL; DR;

Ngắt là gì?

Khi phần cứng (hoặc một phần quan trọng của phần mềm nội bộ hệ điều hành, như kernel) yêu cầu dịch vụ xử lý, nó sẽ kích hoạt một thông báo hoặc ngắt , yêu cầu bộ xử lý hoãn bất cứ điều gì đang làm và xử lý yêu cầu này.

Làm thế nào nó hoạt động?

Khi phần cứng tạo ra một ngắt (ví dụ: nhấn phím), yêu cầu này sẽ đi vào bộ điều khiển ngắt. Bộ điều khiển sau đó ngay lập tức ngắt CPU trên một dòng mã máy của nó (CPU vẫn thực thi dòng cuối cùng này). Khi bộ xử lý sẵn sàng phục vụ yêu cầu này, nó sẽ yêu cầu bộ điều khiển ngắt cho Yêu cầu ngắt (IRQ) và quy trình xử lý. Bộ điều khiển ngắt có cấu trúc dữ liệu bên trong - Bảng phân phối ngắt có chứa một con trỏ tới một thường trình được CPU thực thi cho một IRQ cụ thể.

Tất cả các ngắt khác nhau tương ứng với Mức yêu cầu ngắt giới hạn (IRQL) được xác định rõ . Ví dụ: trên các hệ thống x86 có 32 IRQL và trên x64 và IA64 thực tế có ít hơn - 16 IRQL. Rõ ràng, có nhiều thiết bị phần cứng và dịch vụ phần mềm hơn IRQL, điều đó có nghĩa là tất cả một số đối tượng hệ thống sẽ chia sẻ IRQL.

Bảng IRQL cho x64

    IRQL | Sự miêu tả
--------------------------------------------
    15 | Tầm cỡ
    14 | Ngắt bộ xử lý / Nguồn
    13 | Đồng hồ
    12 | Đồng bộ hóa
    11 | Thiết bị N
    .. | ...
     3 | Thiết bị 1
     2 | Công văn / DPC
     1 | APC
     0 | Thụ động / Thấp

IRQL cao hơn (với số lượng lớn hơn) có mức độ ưu tiên cao hơn. Tất cả các thành phần của hệ thống cố gắng giữ IRQL hiện tại của bộ xử lý ở mức thấp nhất có thể - 0. Nếu xảy ra ngắt cấp cao hơn, thì mức IRQL hiện tại của bộ xử lý được nâng lên và các ngắt với mức thấp hơn sẽ không được xử lý cho đến khi tất cả các ngắt với mức cao hơn được giải quyết. IRQ có thể được xử lý hàng loạt nếu bộ lập lịch IRQ có thể xếp hàng một số IRQ cùng cấp để thực hiện bộ xử lý.

Điểm là gì?

Tất cả điều này đã được thiết kế thực sự tốt để tách người dùng cuối khỏi sự phức tạp của phần cứng và tạo ra một kiến ​​trúc phổ quát có thể hoạt động với nhiều loại phần cứng / phần mềm.

  1. Mã cấp độ người dùng (tức là không phải cấp độ kernel) chỉ được thực thi khi bộ xử lý ở IRQL thụ động / thấp (0). Vấn đề là, bạn chỉ có thể xử lý một sự kiện nhấn phím trong ứng dụng của mình sau khi tất cả các IRQL đã được xử lý. Do đó, đối với bàn phím, IRQL không được gán cho ngắt phần cứng.

  2. IRQL chỉ là trừu tượng hóa hệ điều hành và không được thiết lập . IRQ và IRQL tương ứng được lưu trữ trong sổ đăng ký Windows (ví dụ) và bất kỳ người dùng nhiệt tình nào cũng có thể thay đổi chúng theo cách thủ công.

Kết luận

Trích dẫn từ câu hỏi

Vì bàn phím USB dựa trên trình điều khiển chung và kiến ​​trúc USB chỉ có quyền truy cập vào một số kênh IRQ, nên nó không thể cấp cho bàn phím quyền truy cập vào IRQ ở mức ưu tiên cao như bộ điều khiển khác (giả sử là PS2).

Có lẽ tác giả có nghĩa là IRQL thấp hơn thay vì các kênh IRQ ít hơn . Dù sao, nó không thực sự quan trọng vì nó không hiển thị cho người dùng trên bất kỳ PC hiện đại nào. Sự khác biệt có thể là ở cấp độ nano đến micro giây và chúng chỉ xảy ra ở cấp độ hạt nhân. Trong cả hai trường hợp, mã cấp người dùng bị chặn bởi nhân hệ điều hành.

Điều này (nếu nó đúng) có nghĩa là bàn phím USB sẽ ít phản hồi hơn so với bàn phím được cắm vào loại cổng khác?

Điều đó không đúng vì cách thiết kế HĐH. Nếu hệ điều hành bận rộn với một cái gì đó và "chậm", cả hai bàn phím sẽ hoạt động giống hệt nhau.

Ví dụ, bàn phím USB được ánh xạ tới IRQ ưu tiên trung bình, trên hệ thống bị lỗi bị kẹt trên một thói quen ngắt ưu tiên trung bình khác

Trong trường hợp này, hệ thống sẽ BSOD, các quy trình xử lý IRQ phải được thiết kế theo một tiêu chuẩn nhất định (chẳng hạn như chúng phải nhanh, đồng bộ, không chặn như vậy). Bất kỳ sai lệch nào từ điều này và kernel sẽ BSOD.

Do mức độ ưu tiên tương đối bằng nhau, các sự kiện bàn phím sẽ bị bỏ qua và bạn sẽ không thể gửi Ctrl-Alt-del hoặc bất kỳ tổ hợp phím khẩn cấp nào khác.

Nếu hệ thống bị treo, có rất nhiều thứ có thể sai, nhưng rất có thể IRQL nhấn phím sẽ được xử lý ở cấp trình điều khiển. Vấn đề là, nó sẽ không được gửi đến ứng dụng đã đăng ký thông báo như vậy, vì HĐH đang bận làm việc khác.


Ứng dụng tôi nhắm mục tiêu là trình quản lý cửa sổ (trường hợp dễ) hoặc chính hệ điều hành. Tôi hy vọng CPU của tôi sẽ bỏ quá trình xử lý IRQL giống như USB của nó để nhận được một cách sạch sẽ các đĩa đồng bộ hóa của tôi trước khi tôi khởi động lại-bạn
PPC

>> Điều này có nghĩa là USB kbds ít phản hồi hơn: bạn có thể nói chi tiết câu trả lời 'không' của mình không?
PPC

@PPC nếu bạn thiết kế trình điều khiển thiết bị, thì USB kbds có thể chậm hơn từ nano đến micro giây. Nếu bạn quan tâm đến bất kỳ mã cấp độ người dùng nào, thì mã đó vẫn bị chặn khi bất kỳ IRQL cấp> 1 nào đang được xử lý. Vì vậy, không có vấn đề gì nếu kbd IRQL bằng với IRQL cao nhất hoặc IRQL trung bình. Mã người dùng bị chặn.
oleksii
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.