Pci-e

Gözden geçir

PCIe fiziksel katmanı daha çok bükümlü tel çifti “twisted pair” ethernet’e benzer bir seri bağlantılar ağıdır. Ana kart üzerinde çok bacağı olan tek bir göbek kullanılır, bu göbek geniş bir anahtarlama ve dönemdeşliğe olanak sağlar. Bu tasarımın tercih edilmesinin nedeni, saat hızı arttıkça, paralel bağlantıların senkronzasyonlarının zamanlama çarpıklığı “timing skew” nedeniyle engellenmesidir. PCIe paralel veri yollarından seri bağlantılara geçişe örneklerden sadece bir tanesidir. Diğer örenkler için HyperTransport, Serial ATA, USB, SAS veya FireWire’ı inceleyiniz. 
PCIe öncelikle Intel tarafından desteklenmektedir. Intel InfiniBand sisteminden ayrıldıktan sonra Arapahoe projesi olarak standart üzerinde çalışmaya başlamıştı. 
PCIe sadece yerel bağlantı “local interconnect” olarak kullanılmak üzere geliştirilmiştir. Mevcut PCI sistemi üzerine kurulduğu için kartlar ve sistemler sadece fiziksel katman değiştirilerek PCI Express’e dönüştürülebilirdi – mevcut sistemler hiçbir yazılım değiştirilmeden PCI Express’e uyarlanabilirdi. PCI Express üzerindeki artırılmış bant genişliği onun AGP ve PCI dahil olmak üzere neredeyse bütün dahili yuvaların yerine geçebilmesini sağlıyor. Intel böylece şimdiki makinelerde kullanılan northbridge/southbridge çözümlerinin aksine, bütün harici cihazlarla iletişim kurabilen bir PCI Express kontrol birimi tasavvur ediyor.

Donanım protokol özeti

PCIe linki geçit "lane" adı verilen tek yönlü özgülleştirilmiş seri (1 bit) noktadan noktaya bağlantılar etrafında kurulmuştur. Bu durum tüm cihazların aynı çok yönlü, 32 bit (veya 64 bit), paralel yuvayı paylaştıkları yuva tabanlı bir sistem olan PCI bağlantısı ile çok keskin bir tezat oluşturur.
PCI Express Hareket Katmanı, Veri Linki Katmanı ve Fiziksel Katmanı içeren bir protokoldür. Fiziksel katman kendi içerisinde mantıksal alt katmana ve elektriksel alt katmana bölünmüştür. Mantıksal alt katman da kendi içerisinde Fiziksel Kodlama Alt katmanına (PCS) ve bir Ortam Erişim Kontrolü Alt katmanına (MAC) ayrılmıştır (bu terimler IEEE 802 ağ oluşturma protokolü modelinden alınmıştır).

Fiziksel katman

Elektriksel seviyede her geçit iki adet 2,5 Gbit/s hızında tek yönlü düşük voltaj türevsel imleşim “low voltage differential signaling” (LVDS) çifti kullanır. Gönderme alma birbirinden farklı türevsel çiftlerdir, geçit başına 4 adet veri kablosu bulunur. 
DFI'ın LanParty nF4 Ultra-D’sinde görüldüğü gibi geleneksel bir 32 bit PCI yuvası (alt) ile karşılaştırıldığında PCI Express’in yuvaları (yukarıdan aşağıya: x4, x16, x1 ve x16’dır).
XFX marka nVidia GeForce 6600GT PCI-Express video adaptör kartı
Herhangi iki PCIe cihazı arasındaki bağlantı bir “link” olarak tanımlanır ve 1 veya daha fazla geçitin bir araya gelmesiyle oluşur. Kullanılan tüm cihazlar en azından tek geçitli (x1) linkini destekleyebiliyor olmalıdır. Cihazlar tercihe bağlı olarak; 2, 4, 8, 12, 16 veya 32 geçitli linkleri destekleyebilir. Bu sayede her iki yönde de çok iyi uyumluluk elde edilir. Bir PCIe kartı en azından kendisi kadar büyük olan herhangi bir yuvaya fiziksel olarak uyar (ve düzgün biçimde çalışır) (örneğin bir x1 kartı x4 veya x16 yuvasına rahatça takılabilir) ve fiziksel olarak daha büyük olan bir yuvaya (örneğin x16) daha az sayıdaki geçitle elektriksel olarak kablolanabilir (örneğin x1 veya x8, fakat yine de daha büyük fiziksel yuvanın gerektirdiği güç ve topraklama bağlantılarını sağlıyor olması gerekir). Her iki durumda da PCIe linki desteklenen en yüksek geçit sayısı üzerinden iletişim kuracaktır. Buna karşın herhangi bir chazın fiziksel olarak kendinden daha küçük bir yuvada çalışmasına imkân yoktur (örneğin bir x4 kartı bir x1 yuvasına fiziksel olarak yerleştirilemez – buna rağmen sadece tek geçit kablolanararak bir x4 yuvasında çalıştırılabilir).
PCIe duraklamalar da dahil olmak üzere bütün mesajları veri için kullanılan aynı link üzerinden gönderir. Seri protokol hiçbir zaman bloke edilemez, böylece PCI ile kıyaslanabilecek bir bekleme süresi (PCI’ın adanmış duraklama hatları vardır) elde edilir. 
Çoklu geçit linkleri üzerinden gönderilen verinin serpiştirilmiş özelliği vardır. Bunun anlamı her ardışık baytın yine ardışık geçitten gönderileceğidir. PCIe spesifikasyonu bu serpiştirme özelliğinden “ veri ayıklama “ (data striping) olarak söz eder. Gelen ayıklanmış verinin senkronize edilmesi (veya kayıklığını giderme) için önemli ölçüde karmaşık donanım gerekmesine rağmen ayıklama işlemi sonuç olarak linkten alınan iş miktarını önemli ölçüde yükseltir. Dolgu gereksinimlerine bağlı olarak, ayıklama işlemi link üzerindeki küçük veri paketlerinin bekleme süresinde kısalmaya neden olmaz.
Saat besleme bilgisinin bütün yüksek hızlı veri iletişim protokollerinde olduğu gibi sinyalin içerisine gömülü halde olması gerekir. Fiziksel seviyede PCI Express birbirini takip eden birler veya birbirini takip eden sıfırlar dizilerinin uzunluklarının sınırlandırılabilmesi için ortak bir 8B/10B encoding veri tanımlaması kullanır, böylece alıcı bit kenarlarının nerede olduğu bilgisini takip edebilir. Bu kodlama tanımlaması 8 adet kodlanmamış (yük) bit veriyi gönderilen verinin 10 adet kodlanmış bit verisiyle değiştirir, bu arada elektriksel bant genişliğinin %20’sini kullanır. 
(SONET gibi) diğer bazı protokoller saat besleme bilgisini veri akışına eklemek için çırpma "scrambling" adı verilen farklı bir şifreleme biçimi kullanırlar. PCI Express spesifikasyonu da bir scrambling algoritmasına sahip olmasına rağmen gerçekleştirdiği scrambling SONET içerisindeki scrambling ile birbirine karıştırılmamalıdır. PCI içerisindeki scrambling, saat bilgisini gömmek yerine gönderilen veri dizisi içerisinde RF yayım doruklarına neden olan tekrarlayan veri düzenlerini engellemeye yönelik olarak tasarlanmıştır. 
PCIe’nin birinci jenerasyonu 2,5 Gbit/s hızda tekli bir işaretleşme hızı ile kısıtlanmış durumdaydı. PCI Özel İlgi Grubu “Special Interest Group” (muhtelif PCI standartlarını geliştiren ve sahibi olan endüstriyel bir organizasyon) ileride çıkartacakları versiyonların hızlarının 5 ve 10 Gbit/s olmasını planlıyor.

Veri linki katmanı

Veri linki katmanı, Hareket Katmanı tarafından yaratılan Hareket Katmanı Paketlerinin ( TLP’ler ), 32 bit veri koruma çevrimsel artıklık kodlamasının “cyclic redundancy check” ( CRC, fakat bu kavram içerisinde LCRC olarak biliniyor ) ve bir alındı protokolünün (ACK ve NAK işaretleşme ) sıraya dizilmesi işlemini yerine getirir. TLP’ler LCRC kontrolünden geçtiğinde ve alındı bilgisi veren bir sıra numarası kontrolü yapıldığında ACK, bu testlerden geçemeyenler olumsuz alındı bilgisi verir, diğer bir ifadeyle NAK. NAK ile sonuçlanan TLP’ler veya ACK için beklerken zaman aşımına uğrayan TLP’ler Veri Linki Katmanının veri iletim geçidinde özel bir ara bellek tarafından yeniden oynatılır. Böylece cihazın herhangi bir şekilde ürettiği veya iletim ortamından kaynaklanan parazitler engellenir ve elektriksel gürültü yerine sadece TLP’lerin aktarılması sağlanır. 
ACK ve NAK işaretleri veri linki katmanı paketi veya DLLP olarak bilinen alt seviye bir paket olarak iletilir. DLLP’ler bağlantılı iki cihazın iletişim katmanları arasında akış kontrol bilgisinin paylaşılması için olduğu kadar bazı güç yönetim fonksiyonları için de kullanılmaktadır.

Hareket katmanı

PCI Express bölünmüş hareket uygular ( istek ve cevabın zaman olarak birbirinden ayrılmış olduğu hareketler ). Böylece hedef cihaz cevap vermek için veri toplarken linkin diğer veri trafiğine izin vermesini sağlar. 
PCI Express kredi tabanlı bir çeşit akış kontrolü kullanır. Bu düzende; bir cihaz Hareket Katmanı içerisindeki alış ara belleklerinin her biri için belirli miktarda bir kredi tanımlar. Linkin diğer ucundaki cihaz, bu cihaza hareket gönderdiğinde bu gönderim esnasında her TLP’nin kendi hesabından kullanmış olduğu krediyi sayar. Gönderen cihaz sadece TLP gönderir, bunu gerçekleştirirken kullanılan kredinin kendi kredi limitini aşmaması gerekir. Alan cihaz ara belleğinde TLP’leri işlemeyi bitirdiğinde veriyi gönderen cihaza kredilerinin geri yüklendiğini belirten bir sinyal gönderir. Böylece kredi limiti tekrar eski düzeyine yükseltilmiş olur. Kredi sayaçları modüler sayaçlardır ve kullanılan kredilerin kredi limitleri ile karşılaştırılması için modüler aritmetiğe “modular arithmetic” gerek duyulur. Bu düzeneğin avantajı ( bekleme durumları veya el sıkışma tabanlı transfer protokolleri gibi diğer yöntemlerle kıyaslandığında ) kredi geri dönüşündeki bekleme süresinin performansı etkilememesidir, bunun şartı kredi limitinin aşılmamıl olmasıdır. Bunun için de yeterince büyük ara belleğe sahip cihazlar kullanılması gerekir.
Birinci jenerasyon PCIe’nin genellikle her geçit için her yönde 250 MB/s veri hızını desteklediği belirtilir. Belirtilen bu rakam fiziksel işaretleşme hızının ( 2.5 Gbaud ) şifreleme yüküne ( 10bits/byte )bölümü ile bulunur. Bunun anlamı 16 geçitli ( x16 ) bir PCIe kartının teorik olarak her yönde 250 * 16 = 4 GB/s yeteneğine sahip olması gerektiğidir. Bu durum veri baytları yönünden doğrudur, daha anlamlı hesaplamalar için kullanılabilir veri yükü ile birlikte yapılacak çalışmalardan elde edilecek sonuçlara bakılması gerekir, bu durumda tarfiğin profili önem kazanacaktır. Trafik profili yüksek seviye ( yazılım ) uygulamasının ve orta protokol seviyelerinin bir faktörüdür. Diğer seri bağlantılı yüksek veri hızlı sistemlerde olduğu gibi, PCIe’ninde ilave transfer sağlamlığı ihtiyacından doğan bir protokolü ve fazladan işlem yükü vardır ( CRC ve Alındılar). Uzun ve devamlı tek yönlü transferlerde ( yüksek performanslı depolama kontrol birimlerinde olduğu gibi ) PCIe’nin ham ( geçit ) veri hızının %>95’ine ulaşılabilir. Bu transferler en çok faydayı sayısı artırılmış olan geçitlerden görürler (x2, x4, vb. ) Fakat daha tipik uygulamalarda ( USB veya Ethernet kontrol birimi gibi ) trafik profili, sık ve güçlendirilmiş alındılara sahip kısa veri paketleri olarak karakterize olur. Bu çeşit bir trafik paketlerin ayrıştırılmasını gerektirmesinden ve duraklamalara zorlanmasından ötürü doğan yükler nedeniyle linkin verimliliğini azaltır ( cihazın ana bilgisayar ara yüzü veya PC’nin CPU’sunun duraklamaya zorlanması ). Bu tür This type of traffic reduces the efficiency of the link, due to overhead from packet parsing and forced interrupts (either in the device's host interface or the PC's CPU.) Bu tür kayıplar sadece PCIe’ye mahsus kayıplar değildir.

Yarışan protokoller

Yüksek bant genişliğinde seri bağlantı mimarisi tabanına dayanan muhtelif iletişim standartları geliştirilmiştir. Bu standartlar sayılanlarla kısıtlı kalmamak kaydıyla HyperTransport, InfiniBand, RapidIO, ve StarFabric gibi standartları içerir. Endüstride bu sayılanların her birinin destekleyicileri vardır ve geliştirilmeleri için büyük harcamalar yapılmıştır, bu nedenle bu standartları geliştiren konsorsiyumlar kendi standartlarının diğerlerine kıyasla avantajlı taraflarını vurgulamaya özen gösterirler.
Gerçekte aralarındaki farklar esneklik ve genişleme yeteneği ile bekleme süresi ve yük faktörleri arasında yapmış oldukları dengededir. Bu dengelemeye bir örnek vermek gerekirse; karmaşık bir yönlendirme yapabilmek için gönderilen pakete yine karmaşık bir başlık atamak ( PCI Express bu yeteneğe sahip değildir ). Buradaki ilave yük ara yüzün etkili bant genişliğini azaltacaktır ve veri yolunun bulunması ile yazılımın ilklendirilmesini daha zor bir hale getirecektir. Aynı zamanda sistemi yazılım izleme ağ topolojisi değişikliklerine ihtiyaç duyacak hale getirecektir. Bu amaca uygun veri yolları arasında InfiniBand ve StarFabric sayılabilir.
Bir başka örnek ise bekleme süresini azaltmak için paket uzunluklarını daha kısa tutmaktır ( eğer bir veri yolu bellek ara yüzü olarak kullanılacaksa bu gerekir ). Paketlerin daha küçük olması demek, paket başlıklarının paketin daha büyük bir yüzdesini kaplayacağı demektir. Böylece etkin bant genişliği yine azalacaktır. Bu amaçla tasarlanmış veri yolu protokolleri arasında RapidIO ve HyperTransport’u sayabiliriz.
PCI Express bu anlatılanlar arasında ortalarda bir yerdedir. Tasarım olarak bir cihaz ara bağlantısı veya yönlendirilmiş ağ protokolü olamktan ziyade bir sistem ara bağlantıdır( yerel ara bellek “local bus” ). Buna ilaveten yazılımın şeffaflığı amaçlanmış olması nedeniyle protokol kısıtlamalara maruz kalmış bu da bir şekilde bekleme süresinin uzamasına neden oluyor.

Genel görünüm

yılı itibarıyla PCI Express’in, kişisel bilgisayarların arka yüzü standardı olma yolunda epey yol aldığı söylenebilir. Bu durumun çeşitli açıklamaları yapılabilir, fakat temel sebep bu ürünün yazılım geliştiriciler için tamamen şeffaf olacak biçimde tasarlanmış olmasıdır — PCI için tasarlanmış bir işletim sistemi hiçbir kod modifikasyonuna gereksinim duymadan PCI Express sistemi içerisinde önyükleme yapabilir. Diğer tali sebepler arasında geliştirilmiş performansı ve markanın sağlam ve tanınmış olmasını sayabiliriz.
Bugün ( 2006 yılında ) ATi ve NVIDIA tarafından piyasaya çıkartılan en son teknoloji ürünü grafik kartlarının “graphics cards” hemen hemen tamamı PCI Express kullanmaktadır. NVIDIA yeni geliştirdiği Ölçeklenebilir Link Arayüzü “Scalable Link Interface” (SLI) teknolojisinde PCIe’nin yüksek bant genişliği veri transferini kullanmaktadır. Bu sayede aynı tümleşik devre ailesine ve model numarasına sahip iki grafik kartı aynı anda çalıştırılabilmekte ve bu da performans artışı getirmektedir. ATi de CrossFire adını verdiği PCIe tabanlı bir dual-GPU sistemi geliştirmiştir. 
Pek çok yeni Gigabit Ethernet yongaları ve bazı 802.11 kablosuz yongalar da PCI Express kullanır. RAID controllers ve network kartları gibi diğer bazı donanımların üreticileri de yavaş yavaş kullanmaya başlamaktalar.
ExpressCard son zamanlarda laptoplarda görülmeye başladı. Buradaki sorun piyasadaki laptopların çoğunluğunda tek bir yuva olması ve bir ExpressCard yuvası elde etmek adına bu yuvadan vaz geçilmesi kararının kolay olmamasıdır. Masa üstü bilgisayarlarda böyle bir sorun yoktur. Bu bilgisayarların yeterince yuvası olduğundan aynı zamanda hem PCI Express hem de eski PCI yuvalarını kullanmaktadırlar.
PCI Express (PCIe) 2.0, çoğu kullanıcının özellikle ekran kartlarıyla tanıdığı (ama diğer genişleme kartları için de kullanılabilen) bilgisayar genişleme kartı arabirimi çeşidi olan PCIe spesifikasyonunun 2. sürümüdür. 2007 yılında temel spesifikasyonu yayınlanan sürümün, öncülüne göre getirdiği en belirgin özellik ikiye katlanmış transfer hızlarıdır. PCIe 1.1'de hat başına hız 250 MB/s olarak verilirken, PCIe 2.0 bunu 500 MB/s düzeyine çıkartır. Böylece ekran kartları için kullanılan PCIe x16 bağlantılarında PCIe 1.1 toplam 4000 MB/s, PCIe 2.0 ise 8000 MB/s verir.
PCIe aktarım hızlarında telaffuz edilen rakamları biraz açalım. Normalde PCIe 1.1 için "2.5 Giga-Transfers/second" denir. Bu değer saniyede aktarılan bit sayısıdır. Normal koşullar altında kaç MB aktarıldığını görmek için bit sayısını sekize bölmeliydik, ancak PCIe 8b/10b adı verilen bir kodlamayı kullanır. Yani PCIe'nin fiziksel iletim katmanında her byte, teknik nedenlerle 10 bitlik gruplar halinde iletilir. 8b/10b kodlamasından kaynaklanan %20'lik farkı hesaba kattığımızda, iletilebilecek en yüksek ham veri miktarını hat başına 250 MB/s olarak buluruz. PCIe 2.0 için de hat başına 500 MB/s sayısını elde ederiz; yukarıdaki grafik bunu gözeterek hazırlandı.
PCIe'nin diğer yenilikleri arasında dinamik bağlantı hızı yönetimi, bağlantı bant genişliği notifikasyonu gibi özelliklerin yanında, güç sınırı tanımlama olanağı da bulunuyor. Bu sonuncusu ile daha yüksek güç ihtiyacı olan kartlar için kart yuvasının güç limiti düzenlenebiliyor. Liste için şu sayfaya gözatabilirsiniz.
PCIe 2.0, PCIe 1.1 ile geriye doğru uyumlu olacak şekilde tasarlanıyor; yani PCIe 2.0 destekli bir yonga üzerine kurulu anakart satın aldığınızda, eski PCIe 1.1 ekran kartınız yeni anakartınızda çalışmaya devam edecek.
Geriye uyumluluk
PCIe 1.1 ekran kartıyla PCIe 2.0 yuvalı anakart: Çalışacak, ancak bir tanesi PCIe 1.1 olduğu için, ara bağlantı PCIe 1.1 hızında olacak. 
PCIe 2.0 ekran kartıyla PCIe 1.1 yuvalı anakart: Yeni alacağınız PCIe 2.0 ekran kartı, eski anakartınızla çalışacak, ancak aynı şekilde bir tanesi PCIe 1.1 olduğundan, ara bağlantı yine PCIe 1.1 hızında olacak. 
PCIe 2.0 ekran kartıyla PCIe 2.0 yuvalı anakart: Ancak bu durumda PCIe 2.0 hızlarında çalışmak mümkün olacak.