สถาปัตยกรรมคอมพิวเตอร์: คีย์บอร์ด USB ตอบสนองน้อยลงเนื่องจากช่วง IRQ แคบลงหรือไม่


19

นี่คือคำแถลงที่ฉันคิด มีใครบอกฉันได้ไหมว่าทำไมและเป็นจริง

คำแถลง: เนื่องจากคีย์บอร์ด USB นั้นต้องอาศัยไดร์เวอร์และสถาปัตยกรรม USB ทั่วไปที่มีการเข้าถึงระดับ IRQ ที่ต่ำกว่าเท่านั้นจึงไม่สามารถให้คีย์บอร์ดเข้าถึง IRQ ที่มีลำดับความสำคัญสูงเท่ากับคอนโทรลเลอร์อื่น (พูด PS2)

สิ่งนี้ (ถ้าเป็นจริง) หมายความว่าคีย์บอร์ด USB จะมีลำดับความสำคัญต่ำกว่า (ในแง่ของความพร้อมใช้งานมากกว่าความเร็ว) กว่าคีย์บอร์ดที่ต่อกับพอร์ตอื่น (เช่น PS2) หรือไม่

ยกตัวอย่างเช่นแป้นพิมพ์ USB ที่แมปกับ IRQ ที่มีลำดับความสำคัญปานกลางบนระบบที่มีข้อบกพร่อง เนื่องจากมีลำดับความสำคัญค่อนข้างเท่ากันกิจกรรมแป้นพิมพ์จะถูกละเว้นและคุณจะไม่สามารถส่ง Ctrl-Alt-del หรือการกดแป้นฉุกเฉินอื่น ๆ หากแป้นพิมพ์มีลำดับความสำคัญสูงกว่าระบบสามารถป้อนรูทีนการกดแป้น Interrupt

หรือคอนโทรลเลอร์ USB มีช่วง IRQ เพียงพอ (ไม่ว่าจะเป็นระดับความสำคัญต่อเนื่องหรือไม่ก็ตาม) เพื่อให้แป้นพิมพ์ของคุณมีระดับความสำคัญตามที่ต้องการ (โดยทั่วไปต่ำกว่าความล้มเหลวของพลังงาน)

และสิ่งที่เกี่ยวกับแป้นพิมพ์เสมือนแมปผ่านการเชื่อมต่อเครือข่ายในเซสชันเดสก์ท็อประยะไกล

แก้ไข: คำถามของฉันไม่ได้เกี่ยวกับความเร็ว (ดูความคิดเห็น): คำถามหลักคือ: แป้นพิมพ์ PS2 มีโอกาสพูดคุยกับ CPU ที่ติดอยู่ที่ใดที่หนึ่งบนลำดับความสำคัญสูงกว่า USB และต่ำกว่าแป้นพิมพ์หรือไม่


2
สงสัยว่าสิ่งเดียวกันนี้เป็นจริงสำหรับเมาส์ USB หรือไม่ ดูเหมือนว่าจะเป็นของฉันอย่างแน่นอนหลังจากเปลี่ยนอินเทอร์เฟซ (แต่ไม่ใช่ตัวเมาส์เอง) เมื่อไม่กี่เดือนที่ผ่านมา
martineau

ถ้าเป็นจริงสำหรับแป้นพิมพ์มันอาจเหมือนกันสำหรับเมาส์ แต่อาจมีความสำคัญน้อยลงเนื่องจากไม่มีการกดแป้นฉุกเฉินสำหรับเมาส์
PPC

ฉันไม่คิดว่านี่เป็นสิ่งที่สมเหตุสมผลที่จะต้องกังวล หากคุณทำสิ่งนี้และแป้นพิมพ์ค้างอยู่อินเทอร์เฟซเครือข่ายจะไม่ติดขัดและคุณไม่สามารถควบคุมระบบจากระยะไกลได้ ดูเหมือนว่าคุณกำลังแลกเปลี่ยนปัญหาหนึ่งกับอีกปัญหาหนึ่ง
David Schwartz

1
@DavidSchwartz: ส่วนใหญ่เป็นคำถามเชิงทฤษฎีและนำมาจากมุมมองของสถาปนิกคอมพิวเตอร์ ยังมีแอปพลิเคชันหนึ่งจาก PoV ของผู้ใช้: "คอมพิวเตอร์ของฉันติดอยู่ไม่ตอบสนองต่อ Ctrl-Alt-Backspace: ฉันควรมองหาแป้นพิมพ์ PS2 หรือลืมและรีบูต"
PPC

2
@PPC: Ctl-alt-del มีแนวโน้มว่าจะไม่ทำงาน กระบวนการรีบูตจะถูกควบคุมโดยซอฟต์แวร์ระดับสูงซึ่งจะปิดโปรแกรมล้างแคชและอื่น ๆ เมื่อเกิดพายุฝนฟ้าคะนองซอฟต์แวร์ระดับสูงจะไม่ทำงาน
David Schwartz

คำตอบ:


17

มันไม่เกี่ยวกับช่วง IRQ มันเป็นสามปัจจัยหลัก:

  1. จำนวนรถบัสหนาแน่น
  2. ปริมาณข้อมูล
  3. ความยาวของเส้นทางข้อมูล

ในอดีตคีย์บอร์ดและเมาส์จะมี IRQ เฉพาะ (IRQ1 สำหรับคีย์บอร์ด IRQ12 สำหรับเมาส์ PS / 2)

นี่หมายความว่าเมื่อกดคีย์มันมีสายเกือบตรงไปยัง CPU (ผ่าน PIC แต่ยังคงมีเพียงหนึ่งกระโดดออกไป) สิ่งนี้อนุญาตให้เหตุการณ์แป้นพิมพ์ถูกประมวลผลอย่างรวดเร็วในฮาร์ดแวร์โดยเฉพาะอย่างยิ่งเนื่องจากมี IRQ1 (แน่นอนว่านี่คือทั้งหมดที่เกี่ยวกับการใช้แป้นพิมพ์ปกติและไม่สนใจบรรทัดรีเซ็ตที่เปลี่ยนจากตัวควบคุมแป้นพิมพ์ไปยัง CPU โดยตรง)

อุปกรณ์ USB นั้นใช้บัสเดียวกันและ IRQ ของคอนโทรลเลอร์ USB (ซึ่งมักจะเป็นหนึ่งใน IRQ-steering steering ที่แชร์กับอุปกรณ์อื่นเช่น NICs, การ์ดวิดีโอและอื่น ๆ ) เช่นด้วยแป้นพิมพ์ USB เหตุการณ์จะเปลี่ยนไปจากตัวควบคุมแป้นพิมพ์ผ่านบัส USB ไปยังตัวควบคุมโฮสต์ USB จากตรงนั้นถึง PIC รองจากนั้นก็ไปสู่ ​​PIC หลักจากนั้นไปยังไดรเวอร์ใน OS หรือ BIOS จากนั้นเข้าสู่ซีพียู นอกจากนี้ยังมีข้อมูลการตรวจสอบข้อผิดพลาดที่เพิ่มเข้าไปในข้อมูลที่ถ่ายโอนผ่าน USB

กล่าวอีกอย่างหนึ่งคือมีแป้นพิมพ์ USB เกิดขึ้นมากกว่าคีย์บอร์ด AT หรือ PS / 2 ข้อมูลเส้นทางมีความยาวและมีข้อมูลมากขึ้นและก็อาจจะต้องไปผ่านซอฟแวร์ แม้ว่าแบนด์วิดท์ USB มีขนาดใหญ่เพียงพอการมีอุปกรณ์อื่นในพอร์ตเดียวกันทำให้เกิดการชนและความล่าช้า (คุณสามารถเพิ่มฮับได้ แต่พอร์ตทั้งหมดในนั้นยังคงเป็นพอร์ตเดียวกันบนคอนโทรลเลอร์) ดังนั้นจึงมีอีกมากที่รออยู่

นอกจากนี้การมีของตัวเอง (IRQ หมายความว่าคีย์บอร์ดรุ่นเก่าสามารถขัดจังหวะการประมวลผลของ CPU ได้ทุกเมื่อที่ต้องการด้วย USB คีย์บอร์ดไม่มีกลไกดังกล่าวและสามารถส่งข้อมูลบางอย่างและรอ / หวังว่าคอนโทรลเลอร์ USB จะขัดจังหวะ CPU ในบางจุด.

คีย์บอร์ดเสมือนจริงจะยิ่งแย่ลงเพราะพวกเขาแน่นอนไปผ่านซอฟแวร์ซึ่งแน่นอนว่าไม่สามารถแข่งขันกับสายฮาร์ดแวร์

นี่คือการสร้างภาพที่เรียบง่ายของความแตกต่างระหว่างแป้นพิมพ์ AT หรือ PS / 2 และแป้นพิมพ์ USB:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันไม่ได้ความเร็วมากไปกว่าการจัดลำดับความสำคัญฉันเข้าใจว่าเส้นทางข้อมูลที่ยาวขึ้นอาจทำให้การกดแป้นพิมพ์ของฉันรอ แต่ฉันคิดเกี่ยวกับ "โอกาสที่การกดแป้นจะหายไปในระบบที่ผิดพลาด" ซึ่งฉันคิดว่าไม่ขึ้นอยู่กับความยาวเส้นทาง
PPC

IRQ สามารถประมวลผลในซอฟต์แวร์ได้อย่างไรก่อนที่จะกดปุ่ม CPU APIC มีโปรเซสเซอร์ของตัวเองหรือไม่? ด้วยกิจวัตรประจำวันในหน่วยความจำกลาง พวกเขา 'ยืม' เวลา CPU หรือไม่
PPC

> "โอกาสที่การกดแป้นจะหายไปในระบบที่ผิดพลาด" มันขึ้นอยู่กับความผิดพลาด แต่ใช่แน่นอนว่าแป้นพิมพ์ USB มีโอกาสสูงกว่าที่จะสูญเสียการกดแป้นพิมพ์เนื่องจากความซับซ้อนเป็นพิเศษ > Re: APICs ใช่พวกเขามีตัวประมวลผล aa ที่ดำเนินการในระดับหนึ่งเช่นตัวควบคุมแป้นพิมพ์มีตัวประมวลผลการ์ดแสดงผลมี GPU ฯลฯ ฮาร์ดแวร์ส่วนใหญ่มีชิปประเภทหนึ่งที่จัดการการประมวลผลบางอย่าง
Synetech

> IRQ สามารถประมวลผลในซอฟต์แวร์ได้อย่างไรก่อนที่จะกดปุ่ม CPU คีย์บอร์ด USB ไม่เพียงมีไดรเวอร์ แต่คอนโทรลเลอร์ USB ยังมีไดรเวอร์ด้วย ข้อมูลแป้นพิมพ์ไม่ได้ตรงไปที่ CPU แต่ผ่านทางแป้นพิมพ์ไปยังตัวควบคุม USB ไปยังไดรเวอร์ของมันไปยังไดรฟ์ของแป้นพิมพ์จากนั้นไปที่ CPU หรือซอฟต์แวร์อื่น ๆ ตามต้องการดังนั้นบางสิ่งเช่นCtrl+Alt+Deldon ' ไม่ทำงานผ่านสายฮาร์ดแวร์ แต่ถูกประมวลผลผ่านซอฟต์แวร์
Synetech

ดังนั้นถ้าฉันให้คุณได้ดีดาต้าพื้นฐานของการกดแป้นพิมพ์ของฉันจะเป็น: คอนโทรลเลอร์ USB, APIC, CPU ผ่าน Low-pri IRQ, USB ISR / IST, CPU ที่สร้างขึ้นด้วยตัวเอง IRQ (เช่น TRAP), คีย์บอร์ด ISR / IST? วิธีนี้สิ่งสำคัญที่เกี่ยวข้องคือคอนโทรลเลอร์ USB .. ในคำถามของฉันฉันคิดว่าคอนโทรลเลอร์ USB สามารถแปลแพ็กเก็ต USB เป็นคีย์บอร์ด IRQ จริง
PPC

14

คำตอบสั้น ๆ

คีย์บอร์ดทั้งสองจะทำงานอย่างเท่าเทียมกันสำหรับรหัสระดับผู้ใช้ อาจมีความแตกต่างเล็กน้อย ( นาโนเป็นไมโครวินาทีบนพีซีที่ทันสมัย) ถ้าคุณเขียนไดรเวอร์อุปกรณ์ หากระบบค้างแป้นพิมพ์ทั้งสองจะไม่สามารถแก้ปัญหาได้ ไปสำหรับการรีบูตอย่างหนัก


คำตอบยาว TL; DR;

การขัดจังหวะคืออะไร

เมื่อฮาร์ดแวร์ (หรือบางส่วนที่สำคัญของซอฟต์แวร์ภายในระบบปฏิบัติการเช่นเคอร์เนล) ต้องใช้บริการตัวประมวลผลซึ่งจะส่งข้อความหรือขัดจังหวะซึ่งขอให้หน่วยประมวลผลเลื่อนสิ่งที่มันทำและจัดการคำขอนี้

มันทำงานอย่างไร?

เมื่อฮาร์ดแวร์สร้างการขัดจังหวะ (เช่นกดปุ่ม) คำขอนี้จะเข้าสู่ตัวควบคุมการขัดจังหวะ จากนั้นคอนโทรลเลอร์จะขัดจังหวะ CPU ทันทีในบรรทัดเดียวของรหัสเครื่อง (CPU ยังคงประมวลผลบรรทัดสุดท้ายนี้) เมื่อตัวประมวลผลพร้อมที่จะให้บริการตามคำขอนี้ก็จะถามตัวควบคุมการขัดจังหวะการร้องขอการขัดจังหวะ (IRQ) และการจัดการประจำ ตัวควบคุมขัดจังหวะมีโครงสร้างข้อมูลภายใน - ตารางส่งสัญญาณขัดจังหวะที่มีตัวชี้ไปยังรูทีนที่ควรถูกเรียกใช้งานโดย CPU สำหรับ IRQ เฉพาะ

การขัดจังหวะที่แตกต่างกันทั้งหมดสอดคล้องกับInterrupt Request Level (IRQL) ที่ จำกัด อย่างดี ตัวอย่างเช่นในระบบ x86 มี 32 IRQLs และบน x64 และ IA64 มีจริงน้อยกว่า - 16 IRQL เห็นได้ชัดว่ามีอุปกรณ์ฮาร์ดแวร์และบริการซอฟต์แวร์มากกว่า IRQL ซึ่งหมายความว่าบางวัตถุระบบจะใช้ IRQL ร่วมกัน

ตาราง IRQLs สำหรับ x64

    IRQL | ลักษณะ
--------------------------------------------
    15 | ประวัติดี
    14 | ผู้ขัดจังหวะ / พลังงาน
    13 | นาฬิกา
    12 | ซิงค์
    11 | อุปกรณ์ N
    .. | ...
     3 | อุปกรณ์ 1
     2 | จัดส่ง / DPC
     1 | APC
     0 | Passive / ต่ำ

IRQL ที่สูงขึ้น (ที่มีจำนวนมากกว่า) จะมีลำดับความสำคัญสูงกว่า ส่วนประกอบทั้งหมดของระบบพยายามรักษา IRQL ปัจจุบันของโปรเซสเซอร์ในระดับต่ำสุดที่เป็นไปได้ - 0 หากมีการขัดจังหวะในระดับที่สูงกว่าระดับ IRQL ปัจจุบันของโปรเซสเซอร์จะเพิ่มขึ้นและการขัดจังหวะที่มีระดับต่ำกว่าจะไม่ถูกจัดการจนถึง การขัดจังหวะทั้งหมดที่มีระดับสูงกว่าได้รับการแก้ไขแล้ว IRQ สามารถจัดการแบบแบตช์หากตัวจัดตารางเวลา IRQ สามารถคิว IRQ หลายตัวในระดับเดียวกันสำหรับการประมวลผลตัวประมวลผล

ประเด็นคืออะไร?

ทั้งหมดนี้ได้รับการออกแบบมาเป็นอย่างดีเพื่อแยกผู้ใช้ปลายทางออกจากความซับซ้อนของฮาร์ดแวร์และสร้างสถาปัตยกรรมสากลที่สามารถทำงานกับฮาร์ดแวร์ / ซอฟต์แวร์ได้หลายประเภท

  1. รหัสระดับผู้ใช้ (เช่นไม่ใช่ระดับเคอร์เนล) จะดำเนินการก็ต่อเมื่อโปรเซสเซอร์อยู่ในประเภท Passive / Low (0) IRQL จุดคือคุณสามารถจัดการเหตุการณ์กดปุ่มในแอปพลิเคชันของคุณหลังจาก IRQL ทั้งหมดได้รับการจัดการ ดังนั้นสำหรับคีย์บอร์ดมันไม่สำคัญว่า IRQL จะถูกกำหนดให้กับการขัดจังหวะของฮาร์ดแวร์

  2. IRQL เป็นเพียงนามธรรม OS และยังไม่ได้ตั้งอยู่ในหิน IRQ และ IRQL ที่สอดคล้องกันจะถูกเก็บไว้ในรีจิสทรีของ Windows (ตัวอย่าง) และผู้ใช้ที่กระตือรือร้นสามารถเปลี่ยนได้ด้วยตนเอง

สรุปผลการวิจัย

คำพูดจากคำถาม

เนื่องจากคีย์บอร์ด USB พึ่งพาไดร์เวอร์และสถาปัตยกรรม USB ทั่วไปที่มีการเข้าถึง IRQ เพียงไม่กี่ช่องเท่านั้นจึงไม่สามารถให้คีย์บอร์ดเข้าถึง IRQ ได้โดยมีลำดับความสำคัญสูงเท่ากับคอนโทรลเลอร์อื่น (พูด PS2)

บางทีผู้เขียนหมายIRQL ต่ำแทนที่จะเป็นช่อง IRQ น้อยลง อย่างไรก็ตามมันไม่สำคัญเพราะผู้ใช้ไม่สามารถมองเห็นได้บนพีซีที่ทันสมัยใด ๆ ความแตกต่างที่เป็นไปได้คือระดับนาโนถึงไมโครวินาทีและเกิดขึ้นที่ระดับเคอร์เนลเท่านั้น ในทั้งสองกรณีรหัสระดับผู้ใช้ถูกบล็อกโดยเคอร์เนลระบบปฏิบัติการ

สิ่งนี้ (ถ้าเป็นจริง) หมายความว่าคีย์บอร์ด USB จะตอบสนองน้อยกว่าคีย์บอร์ดที่ต่อกับพอร์ตอื่นหรือไม่?

มันไม่เป็นความจริงเพราะวิธีการออกแบบระบบปฏิบัติการ หากระบบปฏิบัติการไม่ว่างกับบางสิ่งและ "ช้า" ทั้งสองแป้นจะทำงานเหมือนกัน

ยกตัวอย่างเช่นแป้นพิมพ์ USB ที่แมปกับ IRQ ที่มีความสำคัญปานกลางบนระบบที่มีข้อบกพร่อง

ในกรณีนี้ระบบจะ BSOD การจัดการ IRQ ต้องได้รับการออกแบบตามมาตรฐานที่แน่นอน (เช่นจะต้องรวดเร็วซิงโครนัสและไม่ปิดกั้นเป็นต้น) ส่วนเบี่ยงเบนจากนี้และเคอร์เนลใด ๆ จะ BSOD

เนื่องจากมีลำดับความสำคัญค่อนข้างเท่ากันกิจกรรมแป้นพิมพ์จะถูกละเว้นและคุณจะไม่สามารถส่ง Ctrl-Alt-del หรือการกดแป้นฉุกเฉินอื่น ๆ

หากระบบหยุดทำงานมีสิ่งต่าง ๆ มากมายที่สามารถผิดพลาดได้ แต่ส่วนใหญ่ IRQL การกดแป้นพิมพ์จะถูกจัดการในระดับไดรเวอร์ ปัญหาคือมันจะไม่ถูกส่งไปยังแอปพลิเคชันที่สมัครรับการแจ้งเตือนดังกล่าวเนื่องจากระบบปฏิบัติการไม่ว่างทำอย่างอื่น


แอปพลิเคชันที่ฉันกำหนดเป้าหมายคือตัวจัดการหน้าต่าง (ตัวพิมพ์เล็ก) หรือระบบปฏิบัติการเอง ฉันคาดหวังว่า CPU ของฉันจะปล่อยการประมวลผลแบบ USB-IRQL ของมันเพื่อรับการซิงค์ดิสก์ของฉันก่อนที่จะรีบูตฉันอย่างสมบูรณ์
PPC

>> สิ่งนี้ .. หมายความว่า USB kbds ตอบสนองน้อยลง: คุณช่วยอธิบายรายละเอียดคำตอบ 'ไม่' ของคุณได้ไหม?
PPC

@PPC หากคุณออกแบบไดรเวอร์อุปกรณ์จากนั้น USB kbds อาจช้าลงเป็นเวลานานถึงนาโนวินาที หากคุณสนใจรหัสระดับผู้ใช้ใด ๆ รหัสนั้นจะยังคงถูกบล็อกเมื่อ IRQL ระดับ> 1 ถูกจัดการ ดังนั้นมันไม่สำคัญว่า kbd IRQL จะเท่ากับ IRQL สูงสุดหรือ IRQL ปานกลาง รหัสผู้ใช้ถูกบล็อค
oleksii
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.