Bilgisayar mimarisi: USB klavyeler, dar IRQ aralığı nedeniyle daha az yanıt veriyor mu?


19

İşte yeni düşündüğüm bir ifade. Biri bana bunun doğru olup olmadığını ve neden doğru olduğunu söyleyebilir mi?

Açıklama: USB klavyeler, yalnızca daha düşük IRQ düzeylerine erişimi olan bir USB genel sürücüsüne ve mimarisine bağlı olduğu için, klavyenin başka bir (PS2 diyelim) denetleyicisinin yaptığı gibi öncelikli bir IRQ'ya erişmesine izin veremez.

Bu (doğruysa), USB klavyelerin başka bir bağlantı noktası türüne (PS2 gibi) takılan klavyelerden daha düşük önceliğe sahip olacağı (hızdan daha fazla kullanılabilirlik açısından) anlamına mı geliyor?

Örneğin, başka bir orta öncelikli kesme yordamına takılan hatalı bir sistemde orta öncelikli bir IRQ ile eşleştirilmiş bir USB klavye alın. Nispeten eşit önceliği nedeniyle, klavye olayları yok sayılır ve Ctrl-Alt-del veya başka bir acil durum tuş vuruşu gönderemezsiniz. Klavyenin önceliği daha yüksekse, sistem tuş vuruşu Kesme rutinine girebilir.

Veya USB denetleyicisinin klavyenize ihtiyacı olan önceliği vermesi için (temelde elektrik kesintisinin hemen altında) yeterli IRQ aralığı var mı (sürekli öncelikli olsun ya da olmasın)?

Ve uzak masaüstü oturumunda ağ bağlantısı üzerinden eşlenen sanal klavyelere ne dersiniz?

DÜZENLEME: Sorum hız hakkında çok fazla değil (yorumlara bakın): ana soru: PS2 klavyesi USB'den daha yüksek ve klavyeden daha düşük bir kesme önceliğinde bir yere sıkışmış bir CPU ile konuşmak için daha fazla şansa sahip mi?


2
Aynı şeyin USB fareler için de geçerli olup olmadığını merak edin. Benimki kesinlikle arayüzü değiştirdikten sonra (ancak farenin kendisi değil) birkaç ay önce öyle görünüyor.
martineau

Klavye için doğruysa, büyük olasılıkla fareler için aynıdır; ancak fare için acil durum tuş vuruşları olmadığından muhtemelen daha az önemli
PPC

Bunun endişelenilmesi mantıklı bir şey olduğunu düşünmüyorum. Bunu yaparsanız ve klavye takılırsa, ağ arabirimleri açlıktan ölür ve sistemi uzaktan kontrol edemezdiniz. Görünüşe göre sadece bir problemi diğeri için alıyorsunuz.
David Schwartz

1
@DavidSchwartz: Bu çoğunlukla teorik bir sorudur ve bilgisayar mimarı açısından alınmıştır. Yine de, bir kullanıcının PoV'sinden bir uygulama var: "bilgisayarım sıkıştı, Ctrl-Alt-Backspace'e yanıt vermiyor: PS2 klavyesi aramalı mıyım yoksa unutmalı mıyım"
PPC

2
@PPC: Ctl-alt-del muhtemelen işe yaramaz. Yeniden başlatma işlemi, programları kapatan, önbellekleri temizleyen ve benzeri yüksek düzey yazılımlarla kontrol edilir. Bir kesintili fırtınada, yüksek seviye yazılım çalışmaz.
David Schwartz

Yanıtlar:


17

IRQ serisi ile ilgili değil, üç ana faktörle ilgili:

  1. Otobüs kalabalık miktarı
  2. Data miktarı
  3. Veri yolunun uzunluğu

Geçmişte, klavyelerde ve farelerde özel bir IRQ (klavyeler için IRQ1, PS / 2 fareler için IRQ12) bulunuyordu.

Bu, bir tuşa basıldığında, CPU'ya neredeyse doğrudan bir çizgiye sahip olduğu anlamına geliyordu (PIC aracılığıyla; ama yine de sadece bir atlama uzakta). Bu, klavye olaylarının özellikle IRQ1'e sahip olduğu için donanımda çok hızlı işlenmesine izin verdi. (Tabii ki bu tamamen normal klavye kullanımı ile ilgilidir ve klavye denetleyicisinden doğrudan CPU'ya giden sıfırlama satırını yok sayar.)

Öte yandan USB cihazlarının hepsi aynı veri yolunu ve USB denetleyicisinin IRQ'unu (genellikle NIC'ler, video kartları ve benzeri diğer cihazlarla paylaşılan IRQ direksiyonlarından biri) paylaşır. Bu şekilde, bir USB klavyeyle olaylar klavye denetleyicisinden, USB veri yolundan USB ana bilgisayar denetleyicisine, oradan ikincil PIC'ye, ardından ana PIC'ye, ardından işletim sistemindeki sürücülere veya BIOS'a gider. , daha sonra CPU'ya. Ayrıca, USB üzerinden aktarılan verilere hata kontrol verileri eklenmiştir.

Başka bir deyişle, bir USB klavyede AT veya PS / 2 klavyeden daha fazla şey oluyor. Veri yolu daha uzun ve daha fazla veri var ve hatta yazılımdan geçmesi gerekebilir . USB bant genişliği yeterince büyük olsa da, aynı bağlantı noktasında başka aygıtlara sahip olmak çarpışmalara ve gecikmelere neden olur (hub ekleyebilirsiniz, ancak üzerindeki tüm bağlantı noktaları hala denetleyicideki aynı bağlantı noktasıdır). Yani çok daha fazlası var.

Buna ek olarak, kendine ait (IRQ, eski bir klavyenin CPU'nun işlemesini gerektiğinde kesintiye uğratabileceği anlamına geliyordu. USB ile klavyenin böyle bir mekanizması yoktur ve sadece bazı denetleyiciler gönderebilir ve USB denetleyicisinin CPU'yu kesmesini bekleyebilir / umabilir bir noktada.

Sanal klavyeler onlar çünkü daha kötüsü vardır kesinlikle tabii bir donanım hattı ile rekabet edemez yazılım aracılığıyla gidin.

AT veya PS / 2 klavye ve USB klavye arasındaki farkın basit bir görselleştirmesi:

resim açıklamasını buraya girin


Öncelikten daha hızlı değilim: Daha uzun bir veri yolunun tuş vuruşumu beklemesine neden olabileceğini anlıyorum; ama ben yol uzunluğuna bağlı olmadığını düşünüyorum "tuş vuruşu hatalı bir sistemde kaybolma şansı" düşünüyorum.
PPC

IRQ, CPU'ya vurmadan ÖNCE yazılımda nasıl işlenebilir? APIC'lerin kendi işlemcileri var mı? Merkezi hafızadaki rutinleriyle? CPU zamanını ödünç alıyorlar mı?
PPC

> "Tuş hatalı sistem üzerinde kayıp olacağını şansını" nedeniyle fazladan karmaşıklığı O fay bağlıdır, ama evet, açıkçası USB klavye tuş vuruşlarını kaybetme çok daha yüksek şansı var. > Re: APIC'ler Evet, klavye denetleyicisinin bir işlemcisi, video kartlarının GPU'ları vb.Gibi bir düzeyde işlem yapan bir işlemcileri var.
Synetech

> IRQ, CPU'ya çarpmadan ÖNCE yazılımda nasıl işlenebilir? Bir USB klavyenin sadece sürücüleri değil, aynı zamanda USB denetleyicisinin de sürücüleri vardır. Klavye verileri doğrudan CPU'ya gitmez, bunun yerine klavyeden USB denetleyicisine, sürücüsüne, klavye sürücüsüne, daha sonra gerektiğinde CPU'ya veya diğer yazılımlara gider, bu yüzden Ctrl+Alt+Deldon ' gibi bazı şeyler t bir donanım hattı üzerinden çalışır, ancak yazılım yoluyla işlenir.
Synetech

Bu yüzden, tuş vuruşumun temel veri akışı iyi olur: USB denetleyici, APIC, Düşük pri IRQ aracılığıyla CPU Girişi, USB ISR / IST, CPU tarafından oluşturulan IRQ (TRAP gibi), klavye ISR / IST? Bu şekilde, ilgili öncelik USB denetleyicisinin önceliği ..? Benim sorum USB denetleyicisinin USB paket (ler) ini gerçek klavye IRQ'ya çevirebileceğini düşündüm.
PPC

14

Kısa cevap

Her iki klavye de kullanıcı seviyesi kodu için kesinlikle eşit performans gösterir. Aygıt sürücüleri yazarsanız, küçük farklılıklar olabilir ( modern bir bilgisayarda nano - mikro saniye). Sistem kilitlenirse, her iki klavye de sorunu çözmez. Sabit yeniden başlatma için gidin.


Uzun cevap TL; DR;

Kesme nedir?

Donanım (veya çekirdek gibi bir işletim sistemi iç yazılımının kritik bir parçası) bir işlemci hizmeti gerektirdiğinde, işlemcinin yaptığı her şeyi ertelemesini ve bu isteği işlemesini isteyen bir mesaj veya kesinti başlatır.

Nasıl çalışır?

Donanım bir kesme ürettiğinde (örn. Tuşa basma), bu istek bir kesme denetleyicisine gider. Daha sonra kontrolör CPU'yu makine kodunun tek bir satırında derhal keser (CPU hala bu son satırı yürütür). İşlemci bu isteğe hizmet vermeye hazır olduğunda, bir Kesinti İsteği (IRQ) ve bir işleme rutini için bir kesme denetleyicisi ister . Kesme denetleyicisinin , belirli bir IRQ için CPU tarafından yürütülmesi gereken bir rutuya işaretçi içeren bir İç Veri Yapısı - Kesme Dağıtım Tablosu vardır.

Tüm farklı kesintiler, iyi tanımlanmış sınırlı Kesme İsteği Seviyesine (IRQL) karşılık gelir. Örneğin, x86 sistemlerde 32 IRQL vardır ve x64 ve IA64'te aslında daha az - 16 IRQL vardır. Açıkçası, IRQL'lerden daha fazla donanım aygıtı ve yazılım hizmeti olduğu anlamına gelir, bu da tüm sistem nesnelerinin IRQL'leri paylaşacağı anlamına gelir.

X64 için IRQL tablosu

    IRQL | Açıklama
--------------------------------------------
    15 | Yüksek / Profil
    14 | İşlemciler arası kesinti / Güç
    13 | Saat
    12 | Eşitleme
    11 | Cihaz N
    .. | ...
     3 | Cihaz 1
     2 | Sevk / DPC
     1 | APC
     0 | Pasif / Düşük

Daha yüksek IRQL (daha büyük sayı ile) daha yüksek önceliğe sahiptir. Bir sistemin tüm bileşenleri bir işlemcinin geçerli IRQL değerini mümkün olan en düşük seviyede tutmaya çalışır - 0. Daha yüksek düzeyde bir kesme oluşursa, bir işlemcinin geçerli IRQL seviyesi yükseltilir ve daha düşük seviyeli kesmeler işleme alınmaz. yüksek seviyeli tüm kesintiler giderilir. IRQ zamanlayıcı, işlemci yürütmesi için aynı düzeydeki birkaç IRQ'yu sıraya alabiliyorsa, IRQ toplu olarak işlenebilir.

Amaç ne?

Tüm bunlar, son kullanıcıyı donanımın karmaşıklıklarından ayırmak ve birçok donanım / yazılım türüyle çalışabilen evrensel bir mimari yapmak için gerçekten iyi tasarlanmıştır.

  1. Kullanıcı seviyesi kodu (yani çekirdek seviyesi değil) yalnızca işlemci Pasif / Düşük (0) IRQL'deyken yürütülür. Mesele şu ki, uygulamanızdaki bir tuşa basılı olayı ancak tüm IRQL'ler işlendikten sonra işleyebilirsiniz. Bu nedenle, bir klavye için donanım kesintisine hangi IRQL'in atandığı önemli değildir.

  2. IRQL sadece OS soyutlamalarıdır ve taş olarak ayarlanmamıştır . Karşılık gelen IRQ ve IRQL, Windows kayıt defterinde saklanır (örneğin) ve herhangi bir hevesli kullanıcı bunları manuel olarak değiştirebilir.

Sonuçlar

Sorudan alıntılar

USB klavyeler, yalnızca birkaç IRQ kanalına erişimi olan bir USB genel sürücüsüne ve mimarisine güvendiğinden, klavyenin bir IRQ'ya başka bir (PS2 diyelim) denetleyicisinin yaptığı gibi önceliğe erişmesine izin veremez.

Belki de yazar, daha az IRQ kanalı yerine daha düşük IRQL anlamına geliyordu . Her neyse, herhangi bir modern PC'de kullanıcı tarafından görülmediği için gerçekten önemli değil. Olası farklılıklar nano - mikro- saniye düzeyindedir ve sadece çekirdek düzeyinde gerçekleşir. Her iki durumda da kullanıcı seviyesi kodu işletim sistemi çekirdeği tarafından engellenir.

Bu (doğruysa), USB klavyelerin başka bir bağlantı noktası türüne takılan klavyelerden daha az duyarlı olacağı anlamına mı geliyor?

İşletim sistemi tasarlandığı için bu doğru değil. İşletim sistemi bir şeyle meşgulse ve "yavaş" ise, her iki klavye de aynı şekilde davranır.

Örneğin, başka bir orta öncelikli kesme yordamına yapışmış hatalı bir sistemde, orta öncelikli bir IRQ ile eşlenmiş bir USB klavye alın

Bu durumda sistem BSOD olacaktır, IRQ işleme rutinleri belirli bir standarda (örneğin hızlı, senkronize, tıkanmasız olmalıdır) göre tasarlanmalıdır. Bundan ve çekirdekten sapma BSOD olacaktır.

Nispeten eşit önceliği nedeniyle, klavye olayları yok sayılır ve Ctrl-Alt-del veya başka bir acil durum tuş vuruşu gönderemezsiniz.

Sistem takılırsa, yanlış gidebilecek birçok şey vardır, ancak büyük olasılıkla tuş vuruşu IRQL sürücü düzeyinde işlenir. Sorun, işletim sistemi başka bir şey yapmakla meşgul olduğundan, bu bildirim için abone olan uygulamaya teslim edilmeyecektir.


Hedeflediğim uygulama pencere yöneticisi (kolay durum) veya işletim sisteminin kendisidir. CPU'mun sizden yeniden başlatmadan önce senkronizasyon disklerimi temiz bir şekilde almak için USB benzeri IRQL işlemeyi bırakmasını bekliyorum
PPC

>> Bu .. USB kbds'lerin daha az duyarlı olduğu anlamına mı geliyor?
PPC

@PPC bir aygıt sürücüsü tasarlarsanız, USB kbds nano-mikro saniye için daha yavaş olabilir. Herhangi bir kullanıcı seviyesi koduyla ilgileniyorsanız,> 1 düzeyindeki herhangi bir IRQL işlendiğinde kod bloke olarak kalır. Bu nedenle kbd IRQL'in en yüksek IRQL veya orta IRQL değerine eşit olması önemli değildir. Kullanıcı kodu engellendi.
oleksii
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.