Önceki makale, Type0 yapılandırma alanı Başlığında BAR'ın rolünü ve kullanımını tanıttı, ancak PCIe'deki köprü cihazı (Switch and Root'ta P2P) bir isteğin kendisine mi yoksa kendi şubesine mi ait olduğunu nasıl belirler? Ya altındaki ekipman? Bu aslında Type1 yapılandırma alanı Başlığındaki Base ve Limit yazmaçları aracılığıyla elde edilir.Bu makale kısaca tanıtacaktır.
Type1 Header'daki Base ve Limit kayıtlarının konumu aşağıdaki şekilde gösterilmektedir:
Baz ve Limit kayıtları sırasıyla şube altındaki tüm cihazların (bu köprünün altında yaşayan cihaz) adreslerinin başlangıç ve bitiş adreslerini belirler. Farklı LimitBase kombinasyonlarına karşılık gelen farklı istek türlerine göre:
· Önceden Getirilebilir Bellek Alanı (P-MMIO)
· Önceden Getirilemeyen Bellek Alanı (NP-MMIO)
· IO Space (IO)
Köprü kolu altındaki herhangi bir cihazın BAR değeri değiştiğinde, köprünün BaseLimit kaydının buna göre değiştirilmesi gerekir.
Basit bir örnekle inceleyelim:
Yukarıdaki şekilde gösterildiği gibi, Anahtarın PortB'sine bağlı PCIe Uç Noktası NP-MMIO, P-MMIO ve IO alanları ile yapılandırılır. PortB'nin Başlığındaki Base ve Limit yazmacını kısaca inceleyelim.
P-MMIO Tabanı ve Sınırı
NP-MMIO Tabanı ve Sınırı
Endpoint için gereken NP-MMIO boyutunun açıkça sadece 4KB olduğu, ancak PortB Başlığının ona 1MB (minimum 1MB) verdiğine dikkat edilmelidir, bu da kalan alanın boşa harcanacağı anlamına gelir ve diğer Uç Noktalar Bu alan kullanılamayacak.
IO Tabanı ve Sınırı
Not: Ayrılabilecek minimum IO alanı 4KB'dir ve maksimum değer işletim sistemi ve BIOS'a bağlıdır.
Kullanılmayan Baz ve Limit Yazmaçları
Çoğu durumda, tüm adres alanı türlerine ihtiyacımız yoktur, örneğin, IO Space belirli bir Uç Noktada kullanılmaz. Bu zamanda, ilgili köprünün Üstbilgisi Bazın adresini Sınırdan daha büyük bir adrese, yani adres aralığını geçersiz olarak ayarlayacaktır.
Not: Mindshare kitabı yanlış gibi görünüyor. PCIe Spec geçerli olacaktır.
Aşağıda eksiksiz bir örnek gösterilmektedir: