PCI Express

**PCI Express** (**Peripheral Component Interconnect Express**, lyhennettynä **PCIe**) on suurinopeuksinen tietokoneen standardoitu väylätyyppi, joka on suunniteltu korvaamaan vanhemmat PCI, PCI-X ja AGP-liitäntästandardit. PCIe-liitäntä sisältää useita parannuksia edeltäjiinsä nähden, joita ovat muun muassa suurempi siirtokyky, siirtyminen sarjamuotoiseen tiedonsiirtoon rinnakkaisesta, väylän parempi skaalattavuus, sekä pienempi siirräntäpinnien määrä, jonka ansiosta PCIe-liittimillä on pienempi fyysinen tilantarve. PCIe:ssä on myös yksityiskohtaisempi virheiden havaitsemis- ja raportointimekanismi (Advanced Error Reporting (AER)) ja lisäksi sen viimeisimmät versiot tukevat I/O-virtualisointia. PCIe on vähitellen korvannut edeltäjänsä (AGP, PCI ja PCI-X), ja on tämän seurauksena noussut hallitsevaksi väylätyypiksi pöytätietokoneissa. PCIe:n sähköteknisiä puolia on hyödynnetty useissa siihen pohjautuvissa muunnelmissa, joista ehkä huomattavimpana voidaan mainita ExpressCard, PCIe:n kannettaville tietokoneille suunniteltu versio.

PCIe-liitäntästandardia ylläpitää PCI-SIG (PCI Special Interest Group), johon kuuluu yli 900 tietotekniikka-alan yritystä. Maaliskuussa 2015 viimeisin tuotannossa ja kuluttajamarkkinoilla saatavilla oleva PCIe-versio oli 3.1.

## Muutokset entiseen
PCIe poikkeaa arkkitehtuuriltaan huomattavasti aikaisemmista väylistä, ja tästä syystä se poikkeaa täysin myös PCI-väylästä. Yleensä väylä koostuu yhteisestä tiedonsiirtokanavasta, johon kaikki väylään kytketyt laitteet liittyvät, ja jota laitteet käyttävät vuorotellen. PCIe taas muistuttaa pakettikytkentäistä tiedonsiirtoverkkoa (erityisesti Ethernetin nykyaikaista tähtimäistä versiota) OSI-mallin mukaisella protokollapinolla, joten periaatteessa PCIe ei ole väylä sanan perinteisessä merkityksessä. PCIe:ssä jokaisella laitteella on oma tiedonsiirtokanava kytkimeen. Tiedonsiirtokanava koostuu linjoista (). Yksi linja koostuu kahdesta yksisuuntaisesta johdinparista, joista toinen siirtää tietoa kytkimen suuntaan ja toinen taas kytkimeltä laitteelle. Tämän ansiosta voidaan samanaikaisesti siirtää tietoa molempiin suuntiin. Standardi tukee 1, 2, 4, 8, 12, 16 ja 32&nbsp;linjan ratkaisuja, joista nykyään yleisimmin käytössä ovat yhden (×1), neljän (×4), kahdeksan (×8) ja 16 (×16) linjan kytkennät. Kytkin reitittää tietoa PCIe -laitteiden ja muun järjestelmän välillä tiedonsiirtopakettien otsikkokenttien sisältämän tiedon perusteella. Toisin kuin monet aiemmat väylätekniikat, PCIe käyttää CRC-summaa luotettavuuden parantamiseksi.

PCIe:tä käytetään myös keskeisenä osana IBM PC -yhteensopivien tietokoneiden arkkitehtuuria.
Suorittimelta tulee parikymmentä PCIe-linjaa (*lane*). Tyypillisesti 16 menee suoraan näytönohjaimelle, joka on ensimmäisessä PCIe-korttipaikassa, neljä menee piirisarjalle, jossa ovat mm. SATA- ja USB-ohjaimet. Toinen tärkeä käyttötarkoitus on M.2-liittimeen kytkettävät nopeat SSD-levyt. M.2 käyttää maksimissaan neljä linjaa.
Lisäksi emolevyn piirisarja saattaa tarjota lisää linjaa käytettäväksi omasta kaistastaan esim. PCIe-korttipaikoille ja M.2-liittimille.

## PCIe-tyypit ja -muunnokset

### Täysikokoinen PCI Express

Täysikokoisia PCIe kortteja käytetään etenkin pöytätietokoneissa. Kortit sopivat kantansa kokoiseen tai suurempaan PCIe-paikkaan, mutta eivät useimmissa tapauksissa pienempään ilman modifiointia. On tosin myös saatavilla emolevyjä, joissa PCIe-porttien toinen pää on avoin mahdollistaen pidempien korttien asentamisen pienempään liittimeen. Joissain emolevyissä on jätetty myös osa liitännöistä asentamatta, vaikka liittimen fyysinen koko olisi mahdollistanut niiden käytön. PCI Express -liittimien pituuserot johtuvat niiden vaihtelevasta pinnimäärästä. Lyhemmissä liittimissä on vähemmän pinnejä, ja ne pystyvät tämän takia pienempiin siirtonopeuksiin, mutta vaativat kuitenkin samalla vähemmän tilaa emolevyllä. Pidempien liitinten etuna on niiden tarjoama suurempi siirtonopeus, mutta ne vaativat vastaavasti enemmän tilaa emolevyllä.

Tästä esimerkkinä ×16-paikka, joka toimii ×4 nopeuksilla. Korttipaikkaan mahtuu mikä tahansa ×1, ×2, ×4, ×8 tai ×16 -kortti, mutta se antaa kortille vain ×4-nopeuden. Tällainen konfiguraatio voidaan ilmoittaa esimerkiksi seuraavilla tavoilla: ×16 (×4 mode); tai "×koko @ ×nopeudella" (×16 @ ×4). Tällaisten liittimien etuna on niiden tuoma mahdollisuus asentaa suurempia kortteja ilman, että emolevyn tarvitsee tukea kortin vaatimaa täyttä nopeutta.

#### Kytkennät
Seuraavassa taulukossa esitetään PCI Express kortin A- ja B-puolien nastojen käyttötarkoitukset.

### PCI Express Mini -kortti

*PCI Express Mini Card* (myös Mini PCI Express, Mini PCIe, Mini PCI-E, mPCIe tai PEM) on PCI Express -väylään pohjautuva korvaaja vanhemmalle Mini PCI -liitännälle. Sen on kehittänyt PCI-SIG, ja liitäntä tukee sekä PCIe- että USB 2.0 -toiminnallisuuksia. Monet vuoden 2005 jälkeen valmistetut kannettavat tietokoneet tukevat jotain PCIe-pohjaista liitäntästandardia.

#### Fyysiset mitat
PCI Express Mini -kortin ulkomitat ovat 30×50,95&nbsp;mm. Kytkentä kortin ja emolevyn välillä tapahtuu 52-pinnisellä liittimellä, jonka pinnit on jaettu kahdelle puolelle. Yhden pinnin leveys on 0,6&nbsp;mm. Kummallakin puolella on 26&nbsp;pinniä, jotka on jaettu yhteen kahdeksan ja yhteen 18 pinnin osaan. (katso kuva) Mini-kortista on olemassa myös puolet pienempi versio, jonka ulkomitat ovat 30×26,8&nbsp;mm. mPCIe piirilevyn paksuus on 1,0&nbsp;mm ilman komponentteja.

### PCIe-liitännän muunnoksia
Monet muut laajennusliitännät on kehitetty PCIe:n pohjalta. Näihin kuuluvat muun muassa:
* ExpressCard
* PCI Express ExpressModule
* XQD card
* XMC
* AdvancedTCA
* AMC
* FeaturePak
* Universal IO
* Thunderbolt
* Serial Digital Video Out
* M.2 (tunnettu myös nimellä NGFF)
* M-PCIe PCIe&nbsp;3.0 mobiililaitteille, kuten älypuhelimille ja tableteille.

## Historia ja versiot
PCIe-liitännän suunnitteluvaiheessa sitä kutsuttiin lyhenteellä *HSI* (for *High Speed Interconnect*), joka vaihtui vielä nimelle *3GIO* (for *3rd Generation I/O*) ennen lopullista asettumistaan *PCI Express* nimelle, jolla liitäntä nykyisin tunnetaan. Työ PCIe-standardin kanssa käynnisyi *Arapaho Work Group* (AWG) -ryhmässä, joka koostui alkuun vain Intelin insinööreistä. Myöhemmin siihen liittyi kuitenkin henkilöitä Intelin kanssa yhteistyötä tehneistä yrityksistä.

PCIe -tekniikkaa päivitetään edelleen.

### PCI Express 1.0a
PCI-SIG esitteli 2003 PCIe 1.0a -liitännän, joka pystyi siirtämään 250&nbsp;MB/s dataa linjaa kohden ja saavuttamaan 2,5 GT/s siirtonopeuden. GT viittaa "gigasiirtoihin" (ei gigatavuihin) sekunnissa, joka liittyy väylässä käytettyyn tiedon koodaustapaan. 8b/10b-koodausmenetelmällä kahdeksan bittiä on koodattu 10-bittisellä symbolilla, joka puretaan vastaanottajassa. Väylän on siis siirrettävä 10 bittiä kahdeksan databitin siirtoon.

PCIe-väylä on kaksisuuntainen: siirrettäessä 2.5 Gbps (gigabittiä sekunnissa) kokonaissiirtonopeus on 5 Gbps. Enkoodauksen myötä käytännön siirtonopeus on tällöin 4 Gbps. Väylässä voi olla useita linjoja moninkertaistaen siirtonopeuden: 16 linjan PCIe 1.1 -väylä voi siirtää 80 Gbps koodattua tietoa tai 64 Gbps koodaamatonta tietoa.
Linkki toimii  kellotaajuudella kuljettaen  tehollista tavua sekunnissa yhtä linjaa kohden () suurimmalla nopeudellaan.

### PCI Express 1.1
PCI-SIG julkaisi helmikuussa 2005 PCIe 1.1 -liitännän. Päivitys sisälsi useita täsmennyksiä ja parannuksia, mutta se oli täysin yhteensopiva edellisen PCIe 1.0a -standardin kanssa. Päivitys ei sisältänyt muutoksia tiedonsiirtonopeuksiin.

### PCI Express 2.0
PCI-SIG julkaisi PCI Express Base 2.0 -määritelmän 15. tammikuuta 2007. PCIe 2.0 -standardissa on kaksinkertaiset tiedonsiirtonopeudet 1.0 -standardiin nähden (2,5 GT/s vs 5 GT/s; 250&nbsp;MB/s vs 500&nbsp;MB/s). 32-kaistainen PCIe-liitäntä (×32) pystyy siirtämään yhteenlaskettuna 16&nbsp;GB/s.

PCIe 2.0 -emolevyliitännät ovat täysin yhteensopivia PCIe v1.x -korttien kanssa. PCIe 2.0 toimivat myös PCIe 1.x liitännässä, mutta niiden PCI Express 1.1 -standardin mukainen pienempi kaistanleveys rajoittaa niiden toimintaa. Yleisesti ottaen PCIe 2.0 -liitännälle suunnitellut näytönohjaimet toimivat v1.1 tai v1.0a emolevyjen kanssa ja päinvastoin.

The PCI-SIG kertoi myös, että PCIe 2.0 sisältää parannuksia Point-to-Point -siirtoprotokollaan ja ohjelmistoarkkitehtuuriin.

Intelin ensimmäinen PCIe 2.0 yhteensopiva piirisarja oli X38, ja ensimmäisten siihen pohjautuvien emolevyjen toimitukset alkoivat eri valmistajilta (Abit, Asus, Gigabyte) lokakuussa 2007. AMD alkoi tukea PCIe 2.0:aa AMD 700 -piirisarjasta ja NVIDIA MCP72 -piirisarjasta. Kaikki Intelin edelliset piirisarjat, mukaan lukien Intel P35 tukivat PCIe 1.1 tai 1.0a -standardia.

PCIe 2.0 käyttää 1.x -liitännän tapaan 8b/10b-koodausta, toimittaen tehollisen 4&nbsp;Gbit/s siirtonopeuden per kaista.

### PCI Express 2.1
PCI Express 2.1 tukee suurta osaa PCIe 3.0:lle suunnitelluista käsittely-, tuki- ja ongelmanratkaisupäivityksistä. Sen siirtonopeudet ovat tosin samat, kuin PCIe 2.0 -liitännässä, mutta osa 2.1-standardille suunnitelluista korteista ei ole yhteensopivia joidenkin vanhempien 1.0 tai 1.0a -emolevyjen kanssa, koska 2.1-standardin kortit ottavat enemmän tehoa PCIe-liitännästä. Useille 1.1-standardin emolevyille on saatavilla BIOS-päivitys, joka tekee niistä yhteensopivia 2.1-korttien kanssa.

### PCI Express 3.x

PCI Express 3.0 tuli saataville marraskuussa 2010 useiden viivästymisten jälkeen. Tätä ennen elokuussa 2007, PCI-SIG oli ilmoittanut, että tuleva PCI Express 3.0 pystyisi 8 GT/s siirtonopeuksiin, mutta olisi silti samalla taaksepäin yhteensopiva edellisten PCIe-versioiden kanssa. Samalla ilmoitettiin, että PCI Express 3.0 lopullinen määritelmä tulisi viivästymään vuodelle 2011.

Kuuden kuukauden tutkimusten jälkeen PCI-SIG totesi 8&nbsp;GT/s siirtonopeuksien toteuttamisen mahdolliseksi jo olemassa olevalla edullisilla materiaaleilla, tekniikalla ja infrastruktuurilla ilman, että menetetään yhteensopivuus PCIe-protokollapinoon (PCIe protocol stack).

PCIe 3.0 -standardissa siirrytään edellisissä versioissa käytetystä 8b/10b-koodauksesta 128b/130b-koodaukseen.

18. marraskuuta 2010 PCI Special Interest Group julkaisi lopullisen PCI Express 3.0 -standardin.

PCI Express 3.1 suunniteltiin julkaistavaksi vuoden 2013 lopulla tai 2014 alussa.

Siirtonopeuksien lisäksi kehityskohteita ovat olleet tuki IO:n virtualisoinnille ja laitteen jakamiselle useiden virtuaalikoneiden kanssa. Lisäksi vihjeitä välimuistin käytölle, atomisille toiminnoille ja alhaisen latenssin pääsy ovat olleet kehityskohteina. Myös alhaisemman virran tiloja on kehitetty kädessä pidettäviä laitteita varten.

### PCI Express 4.0
PCI-SIG julkaisi 29. marraskuuta 2011 PCI Express 4.0 -standardin, joka pystyy 16&nbsp;GT/s siirtonopeuksiin kuparipohjaisella tekniikalla. 4.0:n lopullinen julkaisu on PCI-SIGin mukaan vuoden 2016 loppupuolella. Määrittely julkaistiin virallisesti 8. kesäkuuta 2017.

Liitäntä käyttää PCIe 3.0:n tapaan 128b/130b-koodausta ja on edeltäjiensä tapaan yhteensopiva edellisten PCIe-sukupolvien kanssa.

### PCI Express 5.0
17. tammikuuta 2019 PCI-SIG ilmoitti ratifioineensa version 0.9 PCI Express 5.0 -määrittelystä.
Muutos 4.0:sta 5.0:aan koski pääasiassa nopeuden kasvattamista.
5.0:ssa tuli myös sisäänrakennettu tuki vaihtoehtoisille protokollille.

### PCI Express 6.0
18. kesäkuuta 2019 PCI-SIG ilmoitti PCIe 6.0 -määrittelyn tulevan vuonna 2021.
6.0 versiossa signaalin enkoodaus muuttuu aiemmin käytetystä.
PCIe 6.0 määrittely on julkaistu tammikuussa 2022.

Versiossa 6.0 aiemmin käytetyn NRZ (*Non-Return-to-Zero*) -tekniikan sijaan käytössä on PAM4 (*Pulse-Amplitude Modulation 4*). Kahden signaalitason (korkea/matala) sijaan PAM4 käyttää neljää signaalitasoa, jolloin signaali voi koodata neljä bittijaksoa: 00, 01, 10, 11. Tämän myötä PAM4 voi siirtää kaksi kertaa enemmän tietoa kuin NRZ ilman tarvetta kaistanleveyden kasvattamiselle.

PAM4-koodauksen haittana NRZ-koodaukseen verrattuna ovat korkeampi kustannus ja signaali on herkempi häiriöille, josta johtuen standardissa on mukana Forward Error Correction (FEC) virheenkorjausmekanismi. FEC lisää virheenkorjauskoodin jatkuvana virtana, jonka tarkoitus on varmistaa kriittistä tietoa kun uudelleen lähetykseen ei ole aikaa. FEC:n lisäksi käytössä CRC-summa viimeisenä tarkastuksena, jonka epäonnistuessa data on pakko lähettää uudelleen.

PAM4:n ja FEC:n lisäksi PCIe 6.0:ssa on FLIT-koodaus (*FLow control unIT*). PAM4 on fyysisen kerroksen koodaus ja FLIT-koodausta käytetään loogisella tasolla datan pilkkomiseen kiinteän kokoisiin paketteihin. Kiinteän kokoiset paketit tarvitaan FEC:n ja virheenkorjauksen vuoksi.

### PCI Express 7.0
PCI-SIG on tehnyt hahmotelman versiosta 7.0, jonka se aikoo viimeistellä vuoteen 2025 mennessä.

## Yhteensopivuus
PCIe -liittimiä on standardoitu muun muassa ×1, ×4, ×8 ja ×16 -väylille linjojen määrän mukaan. Pienemmällä liittimellä varustettuja laitteita voidaan liittää suurempaan liittimeen. Arkkitehtuurin ja signaloinnin puolesta suuremman väylän laite voitaisiin liittää myös pienempään väylään, sillä kytkettäessä laitteet säätävät nopeutensa käytössä olevien linjojen mukaan. Tosin useimmissa tapauksissa suuremmat liittimet eivät kuitenkaan ole fyysisesti yhteensopivia pienempien kanssa.

Vanhempia PCI-väylää käyttäviä laajennuskortteja ei voi liittää PCIe-väylään eikä toisinpäin, sillä väylät ovat täysin erilaisia eivätkä millään tasolla yhteensopivia tai samankaltaisia nimeään ja käyttötarkoitustaan lukuun ottamatta.

## Sovellukset ja käyttökohteet

Ensimmäisenä vanhoista väyläratkaisuista PCIe:hen ovat siirtyneet suuria tiedonsiirtonopeuksia tarvitsevat laitteet kuten esimerkiksi tehokkaat näytönohjaimet, verkkokortit ja kiintolevyohjaimet. Nykyään myös muita oheislaitteita on yhä enemmän tarjolla PCIe -liitännällä, esimerkkinä suurinopeuksiset SSD-levyt (M.2-liitäntä).

Muita käyttökohteita ovat koneoppimiseen ja tekoälyyn suunnatut kiihdyttimet.

## Katso myös
* PCI
* PCI-X
* ExpressCard

## Lähteet

## Aiheesta muualla

* PCI-SIG 
* PCI Express Architecture, *Intel Developer Network* 
* How PCI Express works