PCI-E bağlantı genişliği anlaşması nerede gerçekleşir?


8

Sistemimde düşük performanslı bir PCI-E kartını teşhis etmeye çalışıyorum ve bunun yanlış bağlantı genişliğini müzakere ettiğini fark ettim. Özellikle, koşarken lspci -vv, görüyorum:

LnkCap: Port #1, Speed 8GT/s, Width x8, ASPM L1, Exit Latency L0s <4us, L1 <4us
        ClockPM- Surprise- LLActRep- BwNot-

süre

LnkSta: Speed 8GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-

Sorum şu: bu görüşme donanım düzeyinde mi yazılım seviyesinde mi? Başka bir deyişle, kart doğrudan PCI-E yuvası ile müzakere mi ediyor, yoksa bu sürücülerde bir yerde mi oluyor?

(Bu bariz bir cevap olarak ortaya çıkıyorsa, lütfen beni affet ... bunu bir hafta boyunca teşhis etmeye çalıştıktan sonra, aklım biraz kızarmış.)

Yanıtlar:


17

Elektrik seviyesinde yapılır, yazılım tarafından değil. Yukarıda listelediğiniz iki kayıt olan LNK_CAP ve LNK_STA, 'Bağlantının yapabildikleri şudur' ve 'Şu anki durum' olarak doğru bir şekilde not ettiğiniz şeydir. Makinede belirli bir 'yuvaya' özgü olduğu görülmeye değer SLT_CAP ve SLT_STA da var.

PCIe spesifikasyonu bir LTSSM - Link Eğitim ve Durum Durumu Makinesi tanımlar . PHY / cihaz seviyesinde, her iki cihazın desteklediği maksimum hızı, her iki cihazın da desteklediği maksimum bağlantı genişliğini belirleyen budur ve bu aynı zamanda polarite ters / şerit tersinin işlendiği yerdir (düzeni bizim için daha kolay hale getirmek için spesifikasyon P'ye izin verir. / N değiştirilecek vb.).

resim açıklamasını buraya girin

Cihazlar bilinen, sıralı sembol setlerini birbirlerine gönderiyor ve donanım 2,5GT / s'den başlıyor. Birbirine gönderilebilen hız değiştirme komutları vardır ve burada kanal eşitleme ayarları da tanımlanır.

Yanlış hızda bağlantı kuruyorsanız, PCIe kök bağlantı noktasının yanlış yapılandırılması veya daha düşük bağlantı genişliğini zorlayan bir sinyal bütünlüğü sorunu olabilir. Deneyimlerime göre, 8 GT / s yerine 5 GT / s'de bağlanıyorsanız, bu daha çok bir SI sorunudur - x8 8 GT / s yerine x4 8 GT / s'de bağlantı kurmak bir yapılandırma sorunu gibi görünüyor, veya x8 genişliğini desteklemeyen bir yuvaya kart eklemek olabilir.

Kök karmaşık yetenekler kaydı (Ofset 04h), tanılamanıza yardımcı olabilecek maksimum desteklenen genişliği ortaya çıkaracaktır. IIRC, -x, ilk 4K yapılandırma alanının dökümünü, -xx veya -xxx ise PCIe genişletilmiş yapılandırma alanını dökecektir. Tüm yapılandırma alanınızı buraya dökerseniz / yapıştırırsanız, muhtemelen sizin için kazabilirim, ancak Linux kayıtların ne yaptığını çözmek için iyi bir iş çıkarır.


2
Bu cevapla ilgili daha heyecan verici olan şeyden emin değilim - bu çok zarif bir şekilde ayrıntılı (ciddi olarak, bu güzel ve yeni şeyler öğrenmeyi seviyorum) veya sorunu yaklaşık 5 dakika içinde çözmeme yardımcı oldu. Kartımdaki yapılandırmaları değiştirmek zorunda kaldım - bu bir dev kartı ve bir noktada sıfırlanmış gibi görünüyor.
tonysdg
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.