Mga laki ng PCI. Bakit kailangan mo ng pci-e pci adapter - isang detalyadong gabay

Saan ginagamit ang mga hindi nasusunog na tela www.algo-textile.ru. Mga gamit sa kulambo para sa kulambo 2-sklad.ru.

PCI at PCI-X

PCI at PCI-X bus

Panimula

Ang mga PCI at PCI-X bus ay ang mga pangunahing I/O expansion bus sa mga modernong computer; para sa pagkonekta ng mga video adapter ay dinadagdagan sila ng isang AGP port. Ang mga I/O expansion bus (Expansion Bus) ay system-level connectivity: pinapayagan nila ang mga adapter at peripheral controller na direktang gumamit ng mga mapagkukunan ng computer system - memory at I/O address space, mga interrupts, direktang pag-access sa memorya. Maaaring kontrolin ng mga device na konektado sa mga expansion bus ang mga bus na ito, na magkakaroon ng access sa iba pang mapagkukunan ng computer. Ang mga expansion bus ay mekanikal na ipinapatupad bilang mga slot (slot connectors) o pin connectors; Ang mga ito ay nailalarawan sa pamamagitan ng isang maikling haba ng mga konduktor, iyon ay, sila ay pulos lokal, na nagpapahintulot sa kanila na makamit ang mataas na bilis ng pagpapatakbo. Ang mga bus na ito ay maaaring hindi output sa mga konektor, ngunit ginagamit upang ikonekta ang mga device sa pinagsamang motherboard.

Sa una, ang PCI bus ay ipinakilala bilang extension (mezzanine bus) sa mga system na may ISA bus. Binuo ito na nasa isip ang mga processor ng Pentium, ngunit gumana rin nang maayos sa mga processor ng i486. Nang maglaon, ang PCI ay naging sentral na bus sa loob ng ilang panahon: ito ay konektado sa processor bus sa pamamagitan ng isang high-performance bridge ("north" bridge), na bahagi ng motherboard chipset. Ang mga natitirang I/O expansion bus (ISA/EISA o MCA), pati na rin ang lokal na ISA-like X-BUS bus at ang LPC interface, kung saan nakakonekta ang system board chips (ROM BIOS, interrupt controllers, keyboard, DMA , COM at LPT port, HDD at iba pang "maliit na bagay"), na konektado sa PCI bus sa pamamagitan ng "timog" na tulay. Sa mga modernong motherboard na may "hub" na arkitektura, ang PCI bus ay inilipat sa periphery, nang hindi nakompromiso ang kapangyarihan ng channel ng komunikasyon kasama ang processor at memorya, ngunit hindi rin naglo-load ng mga device sa iba pang mga bus na may trapiko sa transit.

Ang PCI bus ay kasabay - lahat ng mga signal ay nakuha ng positibong gilid (gilid) ng signal ng CLK. Ang nominal na dalas ng pag-synchronise ay itinuturing na 33.3 MHz kung kinakailangan, maaari itong babaan. Simula sa bersyon ng PCI 2.1, posibleng dagdagan ang dalas sa 66.6 MHz kung "sumasang-ayon" ang lahat ng device sa bus. Sa PCI-X, ang dalas ay maaaring umabot sa 133 MHz.

Ang PCI ay gumagamit ng parallel multiplexed address/data (AD) bus na may karaniwang lapad na 32 bits. Ang pagtutukoy ay tumutukoy sa posibilidad ng pagpapalawak ng bit depth sa 64 bits; Ang bersyon 2.0 ng PCI-X ay tumutukoy din sa isang 16-bit na opsyon sa bus. Sa dalas ng bus na 33 MHz, ang theoretical throughput ay umaabot sa 132 MB/s para sa isang 32-bit na bus at 264 MB/s para sa isang 64-bit na bus; sa dalas ng pag-synchronize na 66 MHz - 264 MB/s at 528 MB/s, ayon sa pagkakabanggit. Gayunpaman, ang mga peak value na ito ay naaabot lamang sa panahon ng packet transmission: dahil sa protocol overhead, ang aktwal na average na throughput ng bus ay mas mababa.

Ang mga paghahambing na katangian ng mga PCI at PCI-X bus at iba pang mga expansion bus ng mga PC-compatible na computer ay ibinibigay sa talahanayan. 1.1. Ang ISA bus ay umaalis sa mga desktop computer, ngunit nananatili ang posisyon nito sa mga pang-industriya at naka-embed na computer, kapwa sa tradisyonal na bersyon ng slot at sa bersyon ng "sandwich" na PC/104. Ang mga PCMCIA slot na may PC Card at Card Bus bus ay malawakang ginagamit sa mga notebook computer. Ang LPC bus ay isang moderno, murang paraan para sa pagkonekta ng mga non-resource-intensive device sa motherboard.

Gulong Peak throughput MB/s Mga channel ng DMA Bus Master ACFG Lapad ng data Laki ng address Dalas ng MHz
ISA-8 4 3 - - 8 20 8
ISA-16 8
7
+
-
16
24
8
LPC 6,7
7
+
-
8/16/32
32
33
EISA
33,3 7 +
+
32
32
8,33
MCA-16
16
-
+
+
16
24
10
MCA-32
20
-
+
+
32
32
10
VLB
132
-
(+)
-
32/64
32
33-50(66)
PCI
133-533
-
+
+
32/64
32/64
33/66
PCI-X
533-4256
-
+
+
16/32/64
32/64
66-133
PCI Express
496-15872
-
+
+
1/2/4/8/12/16/32
32/64
2.5 GHz
AGP 1x/2x/4x/8x
266/533/1066/2132
-
+
+
32
32/64
66
PCMCIA
10/22
+
-
+
8/16
26
10
Card Bus 132 - + + 32 32 33

ACFG1-Sinusuportahan ang awtomatikong pagsasaayos. Para sa ISA, ang PnP ay isang huli na karagdagan na ipinatupad ng mga adapter at software.

PCI at PCI-X bus signaling protocol

Ang pagpapalitan ng impormasyon sa PCI at PCI-X bus ay isinaayos sa anyo ng mga transaksyon - lohikal na nakumpleto ang mga pagpapatakbo ng palitan. Ang isang karaniwang transaksyon ay nagsasangkot ng dalawang device: isang exchange initiator, na kilala rin bilang master device, at isang target na device, na kilala rin bilang isang alipin. Ang mga patakaran para sa pakikipag-ugnayan sa pagitan ng mga device na ito ay tinutukoy ng PCI bus protocol. Ang aparato ay maaaring subaybayan ang mga transaksyon sa bus nang hindi isang kalahok (nang walang pagpasok ng anumang mga signal); Ang terminong Snooping ay tumutugma sa tracking mode. Mayroong isang espesyal na uri ng transaksyon (Special Cycle) - broadcast, kung saan ang initiator ay hindi nakikipag-ugnayan sa alinman sa mga device ayon sa protocol. Ang bawat transaksyon ay nagpapatupad ng isang utos, karaniwang nagbabasa o nagsusulat ng data sa isang tinukoy na address. Ang isang transaksyon ay nagsisimula sa isang yugto ng address, kung saan ang nagpasimula ay tumutukoy ng isang utos at isang target na address. Maaaring sumunod ang mga phase ng data, kung saan ang isang device (ang data source) ay naglalagay ng data sa bus at ang isa pa (ang lababo) ay nagbabasa nito. Ang mga transaksyon na may maraming mga phase ng data ay tinatawag na mga transaksyon sa batch. Mayroon ding mga iisang transaksyon (na may isang yugto ng data). Maaaring makumpleto ang isang transaksyon nang walang mga phase ng data kung ang target na device (o initiator) ay hindi pa handa para sa palitan. Nagdagdag ang PCI-X bus ng attribute phase kung saan ipinapadala ang karagdagang impormasyon tungkol sa transaksyon.

PCI at PCI-X bus signaling protocol

Ang komposisyon at layunin ng mga signal ng interface ng bus ay ipinapakita sa talahanayan sa ibaba. Ang mga estado ng lahat ng mga linya ng signal ay nakikita ng positibong gilid ng CLK, at ang mga sandaling ito sa karagdagang paglalarawan ay sinadya ng mga ikot ng bus (sa mga figure ay minarkahan sila ng mga patayong tuldok na linya). Sa iba't ibang oras, ang parehong mga linya ng signal ay kinokontrol ng iba't ibang mga aparato ng bus, at para sa tama (walang salungatan) "paglipat ng awtoridad" kinakailangan na mayroong isang yugto ng panahon kung saan walang aparato ang kumokontrol sa linya. Sa mga diagram ng oras, ang kaganapang ito - ang tinatawag na "pirouette" (turnaround) - ay ipinahiwatig ng isang pares ng kalahating bilog na mga arrow.

mesa. Mga signal ng PCI bus

Signal
Layunin
AD Address/Data - multiplexed address/data bus. Sa simula ng transaksyon, ang address ay ipinadala, sa kasunod na mga cycle - data
C/B# Command/Byte Enable - utos/pahintulot na ma-access ang mga byte. Ang utos na tumutukoy sa uri ng susunod na ikot ng bus ay tinukoy ng isang apat na bit na code sa yugto ng address
FRAME#
Frame. Ang pagpapakilala ng signal ay nagmamarka ng simula ng transaksyon (address phase), ang pag-alis ng signal ay nagpapahiwatig na ang kasunod na data transfer cycle ay ang huling sa transaksyon.
DEVSEL#
Piliin ang Device - napili ang device (ang tugon ng control center sa transaksyong naka-address dito)
IRDY#
Initiator Ready - kahandaan ng master device para sa pagpapalitan ng data
TRDY#
Target Ready - kahandaan ng control center para sa pagpapalitan ng data
STOP#
Humiling mula sa CPU sa master upang ihinto ang kasalukuyang transaksyon
LOCK#
Signal ng lock ng bus upang matiyak ang tuluy-tuloy na operasyon. Ginagamit ng isang tulay na nangangailangan ng maramihang mga transaksyon sa PCI upang makumpleto ang isang operasyon
REQ#
Kahilingan - kahilingan mula sa master device na sakupin ang bus
GNT#
Grant - pagbibigay ng kontrol sa bus sa master
PAR
Parity - karaniwang parity bit para sa mga linya ng AD at C/BE#
PERR#
Parity Error — parity error signal (para sa lahat ng cycle maliban sa mga espesyal). Binuo ng anumang device na may nakitang error
PME#
Power Management Event - isang senyales tungkol sa mga kaganapan na nagdudulot ng pagbabago sa mode ng pagkonsumo (isang karagdagang signal na ipinakilala sa PCI 2.2)
CLKRUN#
Tumatakbo ang orasan—ang bus ay tumatakbo sa nominal na dalas ng orasan. Ang pag-alis ng signal ay nangangahulugan ng pagbagal o paghinto ng pag-synchronize upang mabawasan ang pagkonsumo (para sa mga mobile application)
PRSN #
Kasalukuyan - mga tagapagpahiwatig ng presensya ng board na naka-encode sa kahilingan sa paggamit ng kuryente. Sa expansion card, isa o dalawang linya ng LED ang konektado sa GND bus, na nadarama ng motherboard
RST#
I-reset - i-reset ang lahat ng mga rehistro sa kanilang paunang estado (mag-click sa pindutang "I-reset".
at sa pag-reboot)
IDSEL
Initialization Device Select - pagpili ng device sa configuration ng read and write cycle; Ang mga cycle na ito ay tinutugunan ng isang device na nakakakita ng mataas na antas ng signal sa linyang ito
SERR#
System Error - error sa system. Isang address o data parity error sa isang espesyal na frame o iba pang sakuna na error na nakita ng device. Na-activate ng anumang PCI device at tumatawag sa NMI
REQ64#
Humiling ng 64 bit - humiling ng 64-bit na palitan. Ang signal ay ipinasok ng 64-bit na initiator; ito ay kasabay ng FRAME# signal. Sa panahon ng reset completion (RST# signal) signal sa 64-bit device na ito ay konektado sa 64-bit bus. Kung hindi na-detect ng 64-bit na device ang signal na ito, dapat itong muling i-configure ang sarili nito sa 32-bit mode sa pamamagitan ng hindi pagpapagana sa mga high-byte na buffer circuit.
ACK64#
Kumpirmasyon ng 64-bit exchange. Ang signal ay input ng 64-bit na CPU, na nakilala ang address nito, kasabay ng DEVSEL#. Ang kawalan ng kumpirmasyon na ito ay pipilitin ang nagpasimula na gawin ang palitan sa 32-bit
INTA#, INTB#, INTC#, INTD#
Interrupt A, B, C, D - interrupt request lines, level sensitivity, active level - mababa, na nagpapahintulot sa separability (sharing) ng mga linya
CLK
Orasan — dalas ng orasan ng bus. Dapat nasa hanay na 20-33 MHz, simula sa PCI 2.1 maaari itong maging hanggang 66 MHz, sa PCI-X hanggang 100 at 133 MHz
M66EN
66MHz Enable - resolution ng dalas ng orasan hanggang 66 MHz (sa mga card 33 MHz ay ​​grounded, sa 66 MHz ito ay libre)
PCIXCAP (38B)

Mga kakayahan ng PCI-X: sa mga PCI board - naka-ground, sa PCI-X133 na konektado sa ground sa pamamagitan ng 0.01 µF capacitor, sa PCI-X66 - sa pamamagitan ng parallel RC circuit na 10 kOhm, 0.01 µF.

SDONE
Snoop Done - hudyat na kumpleto na ang snoop cycle para sa kasalukuyang transaksyon. Ang mababang antas ay nagpapahiwatig na ang memory at cache coherence monitoring cycle ay hindi kumpleto. Opsyonal na signal, ginagamit lang ng mga bus device na may naka-cache na memory. Hindi na ginagamit noong PCI 2.2
SBO#
Snoop Backoff - ang kasalukuyang access sa memorya ng isang subscriber ng bus ay nagtatapos sa isang binagong linya ng cache. Isang opsyonal na signal, na ginagamit lamang ng mga subscriber ng bus na may naka-cache na memory sa panahon ng writeback algorithm. Hindi na ginagamit noong PCI 2.2
SMBCLK
SMBus Clock - signal ng orasan ng SMBus bus (I2C interface). Ipinakilala mula noong PCI 2.3
SMBDAT
SMBus Data - serial data ng SMBus bus (I2C interface). Ipinakilala mula noong PCI 2.3
TCK
Pagsubok na Orasan - Pag-synchronize ng interface ng pagsubok ng JTAG
TDI
Input ng Data ng Pagsubok - data ng input ng interface ng pagsubok ng JTAG
TDO
Output ng Data ng Pagsubok - data ng output ng interface ng pagsubok ng JTAG
TMS
Test Mode Select - piliin ang mode para sa JTAG test interface
TRST
Test Logic Reset - i-reset ang test logic

Sa anumang oras, ang bus ay makokontrol lamang ng isang master device, na nakatanggap ng karapatang gawin ito mula sa arbiter. Ang bawat master device ay may isang pares ng signal - REQ# para humiling ng bus control at GNT# para kumpirmahin na ang bus control ay naibigay na. Ang aparato ay maaaring magsimula ng isang transaksyon (itakda ang FRAME# signal) lamang kapag ito ay nakatanggap ng isang aktibong GNT# signal at maghintay hanggang sa walang aktibidad sa bus. Tandaan na habang naghihintay ng pahinga, ang arbiter ay maaaring "magbago ng kanyang isip" at bigyan ng kontrol ang bus sa isa pang device na may mas mataas na priyoridad. Ang pag-alis ng signal ng GNT# ay pumipigil sa device na simulan ang susunod na transaksyon, at sa ilalim ng ilang partikular na kundisyon (tingnan sa ibaba) ay maaaring pilitin itong wakasan ang kasalukuyang transaksyon. Ang arbitrasyon ng mga kahilingan na gamitin ang bus ay pinangangasiwaan ng isang espesyal na node - isang arbiter, na bahagi ng tulay na nagkokonekta sa bus na ito sa gitna. Ang priority scheme (fixed, round-robin, combined) ay tinutukoy ng arbiter programming.

Ang mga karaniwang multiplexed na linya ng AD ay ginagamit para sa address at data. Ang apat na multiplexed na linya ng C/BE ay nagbibigay ng pag-encode ng pagtuturo sa yugto ng address at resolution ng byte sa yugto ng data. Sa pagsulat ng mga transaksyon, pinahihintulutan ng mga linya ng C/BE ang paggamit ng mga byte ng data nang sabay-sabay sa kanilang presensya sa AD bus sa mga read transaction, ang mga signal na ito ay tumutukoy sa mga byte ng susunod na yugto ng data. Sa yugto ng address (pagsisimula ng transaksyon), ina-activate ng master ang signal ng FRAME#, ipinapadala ang target na address sa AD bus, at nagpapadala ng impormasyon tungkol sa uri ng transaksyon (utos) sa mga linya ng C/BE#. Tumutugon ang naka-address na target na device gamit ang isang DEVSEL# signal. Isinasaad ng master device ang kahandaan nitong makipagpalitan ng data gamit ang IRDY# signal ay maaaring itakda bago matanggap ang DEVSEL#. Kapag handa nang makipagpalitan ng data ang target na device, itatakda nito ang TRDY# signal. Ang data ay ipinapadala sa AD bus lamang kapag ang mga signal ng IRDY# at TRDY# ay naroroon nang sabay-sabay. Gamit ang mga signal na ito, pinag-uugnay ng master at target na device ang kanilang mga bilis sa pamamagitan ng pagpapakilala ng mga status ng paghihintay. Ang figure sa ibaba ay nagpapakita ng timing diagram ng isang exchange kung saan ang master at target na mga device ay pumasok sa mga wait clock. Kung pareho silang nagpasok ng mga handa na signal sa dulo ng yugto ng address at hindi inalis ang mga ito hanggang sa katapusan ng palitan, pagkatapos ay 32 bits ng data ang ipapadala sa bawat cycle ng orasan pagkatapos ng yugto ng address, na magbibigay ng pinakamataas na pagganap ng palitan. Sa mga nabasang transaksyon, pagkatapos ng yugto ng address, kinakailangan ng karagdagang orasan para sa pirouette, kung saan huminto ang initiator sa pagkontrol sa linya ng AD; Magagawa lang ng target na device ang kontrol sa AD bus sa susunod na clock cycle. Sa isang write transaction, hindi kailangan ang pirouette dahil ang initiator ang nagpapadala ng data.

Sa PCI bus, ang lahat ng mga transaksyon ay itinuturing bilang mga pagsabog: ang bawat transaksyon ay nagsisimula sa isang yugto ng address, na maaaring sundan ng isa o higit pang mga yugto ng data. Ang bilang ng mga phase ng data sa packet ay hindi tahasang ipinahiwatig, ngunit sa clock cycle ng huling yugto ng data, ang master device, kapag ang IRDY# signal ay ipinasok, ay nag-aalis ng FRAME# signal. Sa mga iisang transaksyon, ang signal ng FRAME# ay aktibo para lamang sa isang ikot ng orasan. Kung hindi sinusuportahan ng device ang mga batch na transaksyon sa slave mode, dapat nitong hilingin na wakasan ang batch transaction sa unang yugto ng data (sa pamamagitan ng paggigiit ng STOP# signal kasabay ng TRDY#). Bilang tugon dito, kukumpletuhin ng master ang ibinigay na transaksyon at patuloy na ipagpapalit ang kasunod na transaksyon sa susunod na halaga ng address. Pagkatapos ng huling yugto ng data, aalisin ng master device ang IRDY# signal, at ang bus ay mapupunta sa Idle state - parehong signal: FRAME# at IRDY# ay nasa passive state.

Maaaring simulan ng initiator ang susunod na transaksyon nang walang pahinga sa pamamagitan ng pagtatakda ng FRAME# kasabay ng pag-alis ng IRDY#. Ang mga ganoong mabilis na katabing transaksyon (Mabilis na Balik-Bumalik) ay maaaring i-address sa pareho o ibang target na device. Ang unang uri ng mabilis na magkakadikit na transaksyon ay sinusuportahan ng lahat ng PCI device na gumaganap bilang target na device. Ang suporta para sa pangalawang uri ng magkadikit na mga transaksyon (ang naturang suporta ay opsyonal) ay ipinapahiwatig ng bit 7 ng rehistro ng status. Ang nagpasimula ay pinapayagan (kung kaya niya) na gumamit ng mabilis na magkakadikit na mga transaksyon sa iba't ibang mga aparato (ang pahintulot ay tinutukoy ng bit 9 ng command register) kung ang lahat ng mga ahente ng bus ay nagpapahintulot ng mabilis na mga tawag. Kapag nagpapalitan ng data sa PCI-X mode, hindi pinapayagan ang mabilis na magkadikit na mga transaksyon.

Tinitiyak ng bus protocol ang pagiging maaasahan ng palitan - ang master device ay palaging tumatanggap ng impormasyon tungkol sa pagproseso ng transaksyon ng target na device. Ang isang paraan ng pagtaas ng pagiging maaasahan ng palitan ay ang paggamit ng parity control: ang AD at C/BE# na mga linya sa parehong yugto ng address at ang bahagi ng data ay protektado ng parity bit PAR (ang bilang ng mga set bit ng mga linyang ito, kasama ang PAR, dapat maging pantay). Ang aktwal na halaga ng PAR ay lumalabas sa bus na may pagkaantala ng isang ikot ng orasan na nauugnay sa mga linya ng AD at C/BE#. Kapag may nakitang error, bubuo ang device ng PERR# signal (inilipat ang isang orasan pagkatapos lumabas ang isang valid na parity bit sa bus). Kapag kinakalkula ang parity sa panahon ng paghahatid ng data, ang lahat ng byte ay isinasaalang-alang, kabilang ang mga di-wastong byte (minarkahan ng mataas na signal ng C/BEx#). Ang bit state, kahit na sa invalid na data byte, ay dapat manatiling stable sa panahon ng data phase.

Ang bawat transaksyon sa bus ay dapat makumpleto ayon sa pinlano o na-abort, at ang bus ay dapat pumunta sa isang rest state (ang FRAME# at IRDY# signal ay passive). Ang pagkumpleto ng transaksyon ay maaaring pinasimulan ng master device o pinasimulan ng target na device.

Maaaring kumpletuhin ng master ang transaksyon sa isa sa mga sumusunod na paraan:

  • pagkumpleto - normal na pagwawakas sa pagtatapos ng palitan ng data;
  • time-out — pagkumpleto sa pamamagitan ng timeout. Nangyayari kapag ang kontrol ng bus ng master ay tinanggal sa panahon ng isang transaksyon (sa pamamagitan ng pag-alis ng signal ng GNT#) at ang oras na tinukoy sa Latency Timer nito ay mag-e-expire. Ito ay maaaring mangyari kung ang na-address na target na device ay hindi inaasahang mabagal o ang transaksyon ay nakaiskedyul na masyadong mahaba. Mga maiikling transaksyon (na may isa o dalawang yugto ng data), kahit na tinanggal ang signal ng GNT# at na-trigger ang timer, kumpletuhin nang normal;
  • master-Abort - I-abort ang isang transaksyon kapag ang master device ay hindi nakatanggap ng tugon mula sa target na device (DEVSEL# signal) sa loob ng tinukoy na oras.

Maaaring wakasan ang transaksyon sa inisyatiba ng target na device; Upang gawin ito, maaari itong magpasok ng STOP# signal. May tatlong uri ng posibleng pagwawakas ng transaksyon:

  • muling subukan — pag-uulit, pagpapakilala ng STOP# signal na may passive TRDY# signal bago ang unang yugto ng data. Ang sitwasyong ito ay nangyayari kapag ang target na aparato, dahil sa panloob na abala, ay walang oras upang makagawa ng unang data sa oras (16 na mga cycle ng orasan). Ang muling pag-abort ay isang indikasyon sa master na i-restart ang parehong transaksyon;
  • disconnect - disconnection, pagpapakilala ng STOP# signal habang o pagkatapos ng unang yugto ng data. Kung ang STOP# signal ay ipinasok habang ang TRDY# signal ng susunod na data phase ay aktibo, ang data na ito ay ipinadala, at ang transaksyon ay nakumpleto. Kung ang STOP# signal ay nakatakda kapag ang TRDY# signal ay passive, ang transaksyon ay nakumpleto nang hindi nagpapadala ng data ng susunod na yugto. Ang pagdiskonekta ay nangyayari kapag ang target na aparato ay hindi makapagbigay o makatanggap ng susunod na bahagi ng packet data sa isang napapanahong paraan. Ang pagdiskonekta ay isang indikasyon sa master na i-restart ang transaksyong ito, ngunit may binagong panimulang address;
  • target-abort - pagkabigo, pagpapakilala ng STOP# signal kasabay ng pagtanggal ng DEVSEL# signal (sa mga nakaraang kaso, kapag lumitaw ang STOP# signal, ang DEVSEL# signal ay aktibo). Pagkatapos nito, hindi na naipapadala ang data. Nangyayari ang pagtanggi kapag naka-detect ang target na device ng nakamamatay na error o iba pang kundisyon kung saan hindi na nito maseserbisyuhan ang ibinigay na kahilingan (kabilang ang isang hindi sinusuportahang command).

Ang paggamit ng tatlong uri ng pagwawakas ng transaksyon ay hindi kinakailangan para sa lahat ng target na device, ngunit dapat na maging handa ang anumang master device upang wakasan ang mga transaksyon para sa alinman sa mga kadahilanang ito.

Ang uri ng pagwawakas na muling subukan ay ginagamit upang ayusin ang mga naantalang transaksyon. Ang mga ipinagpaliban na transaksyon ay ginagamit lamang ng mga mabagal na target na device, gayundin ng mga PCI bridge kapag nagsasalin ng mga transaksyon sa isa pang bus. Sa pamamagitan ng pag-abort (para sa nagpasimula) ng isang transaksyon na may kundisyon na muling subukan, panloob na isinasagawa ng target na device ang transaksyon. Kapag inulit ng nagpasimula ang transaksyong ito (nag-isyu ng parehong command na may parehong address at parehong hanay ng mga signal ng C/BE# sa yugto ng data), ang target na device (o tulay) ay handa na ang resulta (basahin ang data o isulat ang progreso status) na mabilis itong babalik sa initiator. Ang resulta ng isang nakabinbing transaksyon na isinagawa ng isang partikular na device ay dapat na naka-imbak ng device o bridge hanggang ang mga resulta ay hiniling ng nagpasimula. Gayunpaman, maaaring "makalimutan" niyang ulitin ang transaksyon (dahil sa ilang hindi normal na sitwasyon). Upang maiwasang umapaw ang buffer ng imbakan ng resulta, dapat itapon ng device ang mga resultang ito. Ang pag-drop ay maaaring isagawa nang walang mga side effect kung ang transaksyon ay ipinagpaliban sa memorya na nagbibigay-daan sa prefetching (na may prefetchable attribute, tingnan sa ibaba). Sa pangkalahatan, ang iba pang mga uri ng mga transaksyon ay hindi maaaring itapon nang walang parusa (ang integridad ng data ay maaaring lumabag para sa kanila, ang pagtatapon ay pinapayagan lamang pagkatapos ng hindi matagumpay na paghihintay para sa pag-uulit para sa 215 na mga cycle ng bus (kapag na-trigger ang discard timer). Maaaring iulat ng device ang pagbubukod na ito sa driver nito (o sa buong system).

Ang nagpasimula ng isang transaksyon ay maaaring humiling ng eksklusibong paggamit ng PCI bus para sa tagal ng pagpapatakbo ng palitan na nangangailangan ng maraming transaksyon sa bus. Kaya, halimbawa, kung ang CPU ay nagsasagawa ng pagtuturo ng pagbabago ng data sa isang memory cell na kabilang sa isang PCI device, kailangan nitong basahin ang data mula sa device, baguhin ito sa ALU nito, at ibalik ang resulta sa device. Upang maiwasan ang mga transaksyon mula sa ibang mga initiator na makagambala sa operasyong ito (na maaaring humantong sa mga paglabag sa integridad ng data), ginagawa ito ng pangunahing tulay bilang isang naka-block na operasyon - ang LOCK# bus signal ay ibinibigay para sa buong tagal ng operasyon. Ang signal na ito ay hindi ginagamit (o ginawa) sa anumang paraan ng mga kumbensyonal na PCI device (hindi mga tulay); ito ay ginagamit lamang ng mga tulay upang kontrolin ang arbitrasyon.

Naantala ang hardware sa mga computer na tugma sa PC

Ang mga PCI device ay may kakayahang magsenyas ng mga asynchronous na kaganapan gamit ang mga interrupt. Mayroong apat na uri ng interrupt signaling na available sa PCI bus:

  • tradisyonal na wired signaling sa pamamagitan ng mga linya ng INTx;
  • wired signaling ng mga kaganapan sa pamamahala ng enerhiya sa pamamagitan ng linya ng PME#;
  • pagbibigay ng senyas gamit ang mga mensahe - MSI;
  • pagbibigay ng senyales ng nakamamatay na error sa SERR# line.

Sinasaklaw ng kabanatang ito ang bawat isa sa mga uri ng pagbibigay ng senyas na ito, gayundin ang pangkalahatang larawan ng suporta sa pagkagambala ng hardware sa mga computer na tugma sa PC.

Naantala ang hardware sa mga computer na tugma sa PC

Tinitiyak ng mga pagkagambala ng hardware na tumutugon ang processor sa mga kaganapang nangyayari nang hindi magkakasabay na may paggalang sa code ng pagpapatupad ng programa. Alalahanin na ang mga pagkaantala ng hardware ay nahahati sa maskable at non-maskable. Ang x86 processor, kapag nakatanggap ng interrupt signal, ay sinuspinde ang pagpapatupad ng kasalukuyang stream ng mga tagubilin, i-save ang estado (mga flag at return address) sa stack, at isinasagawa ang interrupt handling procedure. Pinipili ang isang partikular na pamamaraan sa pagproseso mula sa interrupt table gamit ang interrupt vector—ang one-byte element number sa talahanayang ito. Ang interrupt vector ay dinadala sa processor sa iba't ibang paraan: para sa isang non-maskable interrupt ito ay naayos, para sa maskable interrupts ito ay iniulat ng isang espesyal na interrupt controller. Bilang karagdagan sa mga pagkagambala sa hardware, ang mga processor ng x86 ay mayroon ding mga panloob na interrupt - mga pagbubukod na nauugnay sa mga espesyal na kaso ng pagpapatupad ng pagtuturo, at mga pagkaantala ng software. Para sa mga exception, ang vector ay tinutukoy ng mismong espesyal na kundisyon, at inilalaan ng Intel ang unang 32 vectors (0-31 o 00-1Fh) para sa mga exception. Sa software interrupts, ang vector number ay nakapaloob sa mismong pagtuturo (software interrupts ay isang partikular na paraan lamang ng pagtawag sa mga procedure ayon sa numero, na may flag register na unang nakaimbak sa stack). Ang lahat ng mga interrupt na ito ay gumagamit ng parehong hanay ng 256 posibleng vectors. Sa kasaysayan, ang mga vector na ginamit para sa mga pagkagambala ng hardware ay nagsasapawan kasama ang mga pagbubukod ng mga vector at mga vector para sa mga pagkagambala ng software na ginagamit para sa mga tawag sa serbisyo ng BIOS at DOS. Kaya, para sa isang bilang ng mga numero ng vector, ang pamamaraang isinangguni ng interrupt table ay dapat munang naglalaman ng program code na tumutukoy kung bakit ito tinawag: dahil sa isang exception, isang hardware interrupt, o upang tumawag sa ilang serbisyo ng system. Kaya, ang pamamaraan na aktwal na nagsisiguro sa pagtugon ng processor sa parehong asynchronous na kaganapan ay tatawagin lamang pagkatapos ng isang serye ng mga aksyon upang matukoy ang interrupt source. Napansin din namin dito na ang parehong interrupt na vector ay maaaring gamitin ng ilang mga peripheral na aparato - ito ang tinatawag na ibinahaging paggamit ng mga interrupt, na tinalakay nang detalyado sa ibaba.

Ang pagtawag sa naka-interrupt na gawain sa serbisyo sa tunay at protektadong mga mode ng processor ay makabuluhang naiiba:

  • sa real mode, ang interrupt table ay naglalaman ng 4-byte far pointer (segment at offset) sa mga kaukulang pamamaraan na tinatawag ng isang malayong tawag (Tawagan ang Malayo na may mga naka-pre-store na flag). Ang laki (256 × 4 bytes) at posisyon ng talahanayan (nagsisimula sa address 0) ay naayos;
  • Sa protektadong mode (at sa partikular na kaso nito, V86 mode), naglalaman ang talahanayan ng 8-byte na interrupt descriptor, na maaaring maging Interrupt Gates, Trap Gates, o Task Gates. Maaaring bawasan ang laki ng talahanayan (maximum - 256 × 8 bytes), maaaring magbago ang posisyon ng talahanayan (natutukoy ng mga nilalaman ng rehistro ng processor IDT). Ang interrupt handler code ay dapat na hindi bababa sa pribilehiyo gaya ng naantala na task code (kung hindi, isang security exception ang ma-trigger). Para sa kadahilanang ito, dapat tumakbo ang mga humahawak ng interrupt sa OS kernel level (sa zero privilege level). Ang pagbabago sa antas ng pribilehiyo kapag tumatawag sa isang handler ay nagreresulta sa karagdagang oras na ginugol sa muling pagtukoy sa stack. Ang mga interrupt na nagdudulot ng paglipat ng gawain (sa pamamagitan ng Task Gate) ay gumugugol ng makabuluhang oras sa paglipat ng konteksto - ang pag-unload ng processor ay nagrerehistro sa segment ng estado ng lumang gawain at nilo-load ang mga ito mula sa segment ng estado ng bago.

Ang mga vector number na ginagamit para sa mga hardware interrupts sa protected mode operating system ay iba sa mga ginagamit sa real mode operating system upang matiyak na hindi sumasalungat ang mga ito sa mga vector na ginagamit para sa mga exception ng processor.

Palaging tumutugon ang processor sa isang non-maskable interrupt (NMI) (kung nakumpleto ang serbisyo sa nakaraang NMI); Ang interrupt na ito ay tumutugma sa fixed vector 2. Ang mga non-maskable interrupts sa mga PC ay ginagamit upang magsenyas ng mga nakamamatay na error sa hardware. Ang signal sa linya ng NMI ay nagmumula sa memory control circuits (parity o ECC), mula sa ISA bus control lines (IOCHK) at PCI bus (SERR#). Ang signal ng NMI ay naharang bago pumasok sa processor sa pamamagitan ng pagtatakda ng bit 7 ng port 070h sa 1, ang mga indibidwal na pinagmumulan ay pinagana at tinutukoy ng mga bit ng port 061h:

  • bit 2 R/W - ERP - pahintulot na kontrolin ang RAM at ang SERR# signal ng PCI bus;
  • bit 3 R/W - EIC - ISA bus control resolution;
  • bit 6 R - IOCHK - control error sa ISA bus (IOCHK# signal);
  • bit 7 R - PCK - RAM parity error o SERR# signal sa PCI bus.

Ang pagtugon ng processor sa mga naka-mask na interrupt ay maaaring maantala sa pamamagitan ng pag-reset ng panloob na IF flag nito (hindi pinapagana ng pagtuturo ng CLI ang mga interrupts, pinapagana ng pagtuturo ng STI). Ang mga naka-maskable na interrupt ay ginagamit upang magsenyas ng mga kaganapan sa mga device. Kapag may nangyaring kaganapan na nangangailangan ng tugon, ang device adapter (controller) ay bubuo ng isang interrupt request, na ipinapadala sa input ng interrupt controller. Ang gawain ng interrupt controller ay dalhin ang interrupt request sa processor at ipaalam ang vector kung saan napili ang software interrupt handling procedure.

Dapat na magsagawa ng mga pagkilos ang device sa interrupt routine upang maserbisyuhan ang device, kabilang ang pag-reset sa kahilingan nito na payagan itong tumugon sa mga kasunod na kaganapan, at pagpapadala ng mga command ng pagkumpleto sa interrupt controller. Kapag tumatawag sa processing routine, awtomatikong iniimbak ng processor ang halaga ng lahat ng flag sa stack at nire-reset ang IF flag, na hindi pinapagana ang mga maskable interrupts. Kapag bumalik mula sa pamamaraang ito (gamit ang pagtuturo ng IRET), ibinabalik ng processor ang mga naka-save na flag, kasama ang set (bago ang interrupt) IF, na muling nagbibigay-daan sa mga interrupts. Kung, sa panahon ng pagpapatakbo ng interrupt handler, ang isang reaksyon sa iba pang mga interrupts (mas mataas na priyoridad) ay kinakailangan, kung gayon ang pagtuturo ng STI ay dapat na naroroon sa handler. Ito ay totoo lalo na para sa mahabang humahawak; dito ang pagtuturo ng STI ay dapat ipasok nang maaga hangga't maaari, kaagad pagkatapos ng kritikal (hindi maaabala) na seksyon. Ang interrupt controller ay magseserbisyo ng mga kasunod na interrupts ng pareho o mas mababang antas ng priyoridad pagkatapos lamang matanggap ang EOI (End Of Interrupt) na utos.

Gumagamit ang mga IBM PC-compatible na computer ng dalawang pangunahing uri ng interrupt controllers:

  • Ang PIC (Peripheral Interrupt Controller) ay isang peripheral interrupt controller, software na tugma sa "historical" 8259A controller, na ginamit sa mga unang modelo ng IBM PC. Mula noong panahon ng IBM PC/AT, isang pares ng cascaded PIC ang ginamit, na nagbibigay-daan sa pagseserbisyo ng hanggang 15 interrupt request line;
  • Ang APIC (Advanced Peripheral Interrupt Controller) ay isang advanced na peripheral interrupt controller na ipinakilala upang suportahan ang mga multiprocessor system sa mga computer batay sa 4-5 generation processors (486 at Pentium) at ginagamit pa rin ngayon para sa mga susunod na modelo ng processor. Bilang karagdagan sa pagsuporta sa mga pagsasaayos ng multiprocessor, pinapayagan ka ng modernong APIC na dagdagan ang bilang ng mga available na linya ng interrupt at pangasiwaan ang mga kahilingan sa interrupt mula sa mga PCI device na ipinadala sa pamamagitan ng message engine (MSI). Ang isang computer na nilagyan ng APIC controller ay dapat na gumana sa isang mode na tugma sa isang karaniwang pares ng PIC. Ang mode na ito ay isinaaktibo sa pamamagitan ng pag-reset ng hardware (at power on), na nagbibigay-daan sa iyong gumamit ng mga lumang OS at MS DOS na application na hindi alam ang APIC at multiprocessing.

Ang tradisyunal na pamamaraan para sa pagbuo ng mga kahilingan sa interrupt gamit ang isang pares ng mga PIC ay ipinapakita sa figure sa ibaba.

Ang mga input ng interrupt na controller ay tumatanggap ng mga kahilingan mula sa mga device ng system (keyboard, timer ng system, timer ng CMOS, coprocessor), mga peripheral controller sa motherboard, at mga expansion card. Ayon sa kaugalian, lahat ng mga linya ng kahilingan na hindi inookupahan ng mga nakalistang device ay naroroon sa lahat ng ISA/EISA bus slots. Ang mga linyang ito ay itinalagang IRQx at may iisang layunin (tingnan ang talahanayan sa ibaba). Ang ilan sa mga linyang ito ay inilalaan sa PCI bus. Ipinapakita rin ng talahanayan ang mga priyoridad ng interrupt - inaayos ang mga kahilingan sa pababang pagkakasunud-sunod. Ang mga bilang ng mga vector na tumutugma sa mga linya ng kahilingan ng controller, ang sistema ng priyoridad at ilang iba pang mga parameter ay itinatakda sa programmatically kapag ang mga controller ay nasimulan. Ang mga pangunahing setting na ito ay nananatiling tradisyonal para sa pagiging tugma ng software, ngunit naiiba sa pagitan ng real-mode at protected-mode na mga OS. Halimbawa, sa Windows OS ang mga base vector para sa master at slave controllers ay 50h at 58h, ayon sa pagkakabanggit.

Pangalan (numero 1) Vector 2 Vector 3 Controller/maskara Paglalarawan
NMI 02h


IRQ0 08h 50h
#1/1h
Channel control, memory parity (sa XT - coprocessor)
IRQ1 09h 51h
#1/2h
Keyboard
IRQ2 0Ah 52h
#1/4h
XT - reserba, AT - hindi magagamit (ang IRQ8-IRQ15 cascade ay konektado)
IRQ8 70h
58h
#2/1h
CMOS RTC - Real Time Clock
IRQ9 71h
59h
#2/2h
Reserve
IRQ10 72h
5Ah
#2/4h
Reserve
IRQ11 73h
5Bh
#2/8h
Reserve
IRQ12 74h
5Ch
#2/10h
PS/2-Mouse (reserve)
IRQ13 75h
5Dh
#2/20h
Coprocessor sa matematika
IRQ14 76h
5Eh
#2/40h
HDC - HDD controller
IRQ15 77h
5Fh
#2/80h
Reserve
IRQ3 0Bh
52h
#1/4h
COM2, COM4
IRQ4 0Ch
53h
#1/10h
COM1, COM3
IRQ5I 0Dh
54h
#1/20h
XT - HDC, AT - LPT2, Tunog (reserba)
IRQ6 0Eh
55h
#1/40h
FDC - float drive controller
IRQ7 0Fh
56h
#1/80h
LPT1 - printer

*1 Ang mga kahilingan sa interrupt 0, 1, 8 at 13 ay hindi output sa mga expansion bus.
*2 Ang mga numero ng vector ay ipinahiwatig kapag tumatakbo sa real processor mode.
*3 Ang mga numero ng vector ay ipinahiwatig kapag nagtatrabaho sa Windows OS.

Ang bawat device na nangangailangan ng mga interrupt upang suportahan ang pagpapatakbo nito ay dapat magtalaga ng sarili nitong interrupt number. Ang mga pagtatalaga ng interrupt na numero ay ginawa mula sa dalawang panig: una, ang adapter na nangangailangan ng mga interrupt ay dapat na i-configure upang gumamit ng isang partikular na linya ng bus (alinman sa pamamagitan ng mga jumper o sa pamamagitan ng software). Pangalawa, ang software na sumusuporta sa adapter ay dapat ipaalam sa vector number na ginagamit. Ang sistema ng PnP para sa ISA at PCI bus ay maaaring lumahok sa proseso ng pagtatalaga ng mga interrupts ay ginagamit upang ipamahagi ang mga linya ng kahilingan sa pagitan ng mga bus. Ang mga modernong operating system ay may kakayahang baguhin ang pagtatalaga ng mga kahilingan tungkol sa paglalaan na ginawa sa pamamagitan ng CMOS Setup.

Pagkatapos ma-configure ang interrupt system (nasimulan ang interrupt controller, itinalaga ang mga linya ng kahilingan sa mga device, at itinakda ang mga pointer sa mga proseso ng pagproseso), pinoproseso ang mga maskable hardware interrupts tulad ng sumusunod:

  • sa isang interrupt na kaganapan, pinapasigla ng device ang interrupt request line na nakatalaga dito;
  • ang controller ay tumatanggap ng mga senyales ng kahilingan mula sa mga pinagmumulan ng interrupt (mga signal ng IRQx) at, kung mayroong isang nakabukas na kahilingan, nagpapadala ng signal ng pangkalahatang paghiling ng interrupt (INTR signal) sa processor ng x86;
  • ang processor, na tumutugon sa isang kahilingan (kapag naka-enable ang mga interrupts sa IF flag), iniimbak ang mga nilalaman ng flag register at ang return address sa stack, pagkatapos nito ay bumubuo ng isang INTA (Interrupt Acknowledge) bus cycle, na inihahatid sa ang interrupt controller;
  • sa sandaling natanggap ang signal ng INTA, itinatala ng interrupt controller ang estado ng mga input ng kahilingan nito - sa sandaling ito ay maaaring magbago ang kanilang estado: maaaring lumitaw ang mga bagong kahilingan o maaaring mawala ang isang kahilingan mula sa isang "impatient" na device. Sinusuri ng controller ang mga papasok na kahilingan alinsunod sa naka-program na priority scheme at nagpapadala sa processor ng interrupt vector na naaayon sa pinakamataas na priority unmasked request na nasa input ng controller sa oras na inilabas ang INTA bus command. Kasabay nito, ang controller ay nagsasagawa din ng ilang mga aksyon alinsunod sa itinatag na patakaran sa priyoridad, na isinasaalang-alang kung aling vector ang ipinadala (alin sa mga kahilingan ang napunta para sa serbisyo);
  • Ang pagkakaroon ng nakatanggap ng isang interrupt vector, ang processor ay tumatawag sa kaukulang interrupt handling procedure gamit ang numero nito. Kung ang isang naibigay na interrupt vector ay ginagamit hindi lamang para sa hardware interrupts, ngunit para din sa mga exception at/o software interrupts, dapat munang matukoy ng routine kung alin sa mga ganitong uri ang kaganapan. Upang gawin ito, ang pamamaraan ay maaaring makipag-ugnay sa PIC controller (basahin ang ISR register) at pag-aralan ang estado ng mga rehistro ng processor. Isinasaalang-alang ang mga karagdagang hakbang para sa kaso kung saan natukoy ang isang hardware interrupt;
  • Dapat matukoy ng pamamaraan sa paghawak ng interrupt ang pinagmulan ng interrupt - tukuyin ang device na naging sanhi nito. Sa kaso ng ibinahaging paggamit ng ibinigay na numero ng kahilingan (at samakatuwid ay vector) ng ilang device, ang pinagmulan ng interrupt ay maaari lamang matukoy sa pamamagitan ng sunud-sunod na pag-access sa mga rehistro ng bawat isa sa mga device na ito. Sa kasong ito, dapat isaalang-alang ng isa ang posibilidad na makatanggap ng mga kahilingan mula sa ilang mga aparato nang sabay-sabay o habang pinoproseso ang isang pagkagambala mula sa isa sa mga ito;
  • ang pamamaraan ay dapat na serbisyo sa interrupt source device - magsagawa ng "kapaki-pakinabang" na mga aksyon na may kaugnayan sa kaganapan na ang aparato ay nagsenyas. Dapat ding tiyakin ng serbisyong ito na ang signal ng interrupt request mula sa device na ito ay maalis. Sa kaso ng mga shared interrupts, maaaring mayroong ilang mga mapagkukunan, at lahat ng mga ito ay nangangailangan ng pagpapanatili;
  • kung ang interrupt processing ay tumatagal ng isang malaking tagal, kung saan ang system ay kailangang tumugon sa mas mataas na priyoridad na mga kahilingan, pagkatapos pagkatapos ng kritikal na seksyon, isang pagtuturo ng STI ay kasama sa handler, na nagtatakda ng interrupt enable flag (IF) sa processor . Mula sa sandaling ito, posible ang mga nested interrupts, na nakakaabala sa gawain ng isang naibigay na handler ng isa pang mas mataas na priyoridad na pamamaraan;
  • ang interrupt handling procedure ay dapat magpadala sa controller ng command para kumpletuhin ang interrupt processing EOI (End Of Interrupt), kung saan papayagan ng controller ang kasunod na pagtanggap ng signal mula sa serviced input at mas mababang priority. Dapat itong gawin pagkatapos alisin ang interrupt na signal mula sa mga naseserbisyuhan na device, kung hindi ay magpapadala ang controller ng pangalawang kahilingan pagkatapos ng EOI. Ang isang interrupt handler kung saan nagmula ang isang kahilingan mula sa isang slave controller ay dapat magpadala ng EOI sa parehong slave at master controllers. Ang seksyon ng handler mula sa pagpapalabas ng pagtuturo ng EOI hanggang sa pagwawakas (IRET na pagtuturo) ay dapat na hindi magambala, iyon ay, ito ay ang kritikal na seksyon. Kung pinahintulutan ng handler ang nested interrupts, dapat na mayroong CLI instruction disable interrupts bago ibigay ang EOI command;
  • Ang pagpoproseso ng interrupt ay nakumpleto sa pagtuturo ng IRET, kung saan ang processor ay babalik sa pagsasagawa ng nagambalang stream ng mga tagubilin, na dati nang nakuha ang mga nilalaman ng mga flag na rehistro mula sa stack. Sa kasong ito, muling paganahin ang mga pagkaantala ng hardware.

Ang pagkakasunud-sunod na ito ay inilalarawan kaugnay ng isang regular na interrupt controller (PIC), binabago ng mga system na may APIC ang paraan ng paghahatid ng interrupt vector mula sa controller patungo sa processor, at ang mga interrupt na MSI ay nagbabago sa paraan ng paghahatid ng signal mula sa device patungo sa APIC controller . Ang mga nuances na ito ay inilarawan sa kasunod na mga seksyon.

Pangkalahatang impormasyon

Ang mga PCI Bridge (PCI Bridge) ay espesyal na hardware para sa pagkonekta ng mga PCI (at PCI-X) na mga bus sa isa't isa at sa iba pang mga bus. Ang Host Bridge ay ginagamit upang ikonekta ang PCI sa gitna ng computer (system memory at processor). Ang "kagalang-galang na tungkulin" ng pangunahing tulay ay upang makabuo ng mga tawag sa espasyo ng pagsasaayos sa ilalim ng kontrol ng gitnang processor, na nagpapahintulot sa host (central processor) na i-configure ang buong subsystem ng PCI bus. Ang system ay maaari ding magkaroon ng ilang pangunahing tulay, na ginagawang posible na magbigay ng mataas na pagganap ng komunikasyon sa sentro sa isang mas malaking bilang ng mga aparato (ang bilang ng mga aparato sa isang bus ay limitado). Sa mga bus na ito, ang isa ay may kondisyong itinalaga bilang pangunahing isa (bus 0).

Ang mga PCI peer bridge (PeertoPeer Bridge) ay ginagamit upang ikonekta ang mga karagdagang PCI bus. Palaging nagpapakilala ang mga tulay na ito ng karagdagang overhead ng paglilipat ng data, upang bumaba ang epektibong pagganap ng mga komunikasyon sa device-to-hub sa bawat tulay na humahadlang.

Upang ikonekta ang PCMCIA, CardBus, MCA, ISA/EISA, X-Bus at LPC bus, ginagamit ang mga espesyal na tulay na kasama sa motherboard chipset o mga hiwalay na PCI device (chips). Kino-convert ng mga tulay na ito ang mga interface ng mga bus na kanilang ikinonekta, isina-synchronize at buffer data exchange.

Ang bawat tulay ay programmable - binibigyan ito ng mga hanay ng address sa memorya at mga puwang ng I/O na nakalaan sa mga device sa mga bus nito. Kung ang CPU address ng kasalukuyang transaksyon sa isang bus (gilid) ng tulay ay tumutukoy sa bus sa kabilang panig, isinasalin ng tulay ang transaksyon sa naaangkop na bus at tinitiyak ang negosasyon sa protocol ng bus. Kaya, ang isang koleksyon ng mga PCI bridge ay nagsasagawa ng pagruruta ng mga kahilingan kasama ang nauugnay na mga bus. Kung ang system ay may ilang pangunahing tulay, ang end-to-end na pagruruta sa pagitan ng mga device sa iba't ibang mga bus ay maaaring hindi posible: ang mga pangunahing tulay ay maaaring konektado sa isa't isa lamang sa pamamagitan ng backbone path ng memory controller. Ang pagsuporta sa pagsasalin ng lahat ng uri ng mga transaksyon sa PCI sa pamamagitan ng mga pangunahing tulay sa kasong ito ay lumalabas na masyadong kumplikado, at samakatuwid ay hindi mahigpit na kinakailangan ng detalye ng PCI. Kaya, lahat ng aktibong device sa lahat ng PCI bus ay maaaring ma-access ang memorya ng system, ngunit ang posibilidad ng peer-to-peer na komunikasyon ay maaaring depende sa kung ang mga device na ito ay kabilang sa isa o ibang PCI bus.

Ang paggamit ng mga tulay ng PCI ay nagbibigay ng mga pagkakataon tulad ng:

  • pagtaas ng posibleng bilang ng mga nakakonektang device, pagtagumpayan ang mga limitasyon ng mga de-koryenteng detalye ng bus;
  • dibisyon ng mga PCI device sa mga segment - PCI bus - na may iba't ibang katangian ng bit depth (32/64 bits), clock frequency (33/66/100/133 MHz), protocol (PCI, PC-X Mode 1, PCI-X Mode 2, PCI Express). Sa bawat bus, lahat ng subscriber ay katumbas ng pinakamahina na kalahok; ang tamang pag-aayos ng mga device sa mga bus ay nagpapahintulot sa iyo na gamitin ang mga kakayahan ng mga device at motherboard na may pinakamataas na kahusayan;
  • organisasyon ng mga segment na may "mainit" na koneksyon/pagdiskonekta ng mga device;
  • organisasyon ng sabay-sabay na parallel na pagpapatupad ng mga transaksyon mula sa mga initiator na matatagpuan sa iba't ibang mga bus.

Ang bawat tulay ng PCI ay nagkokonekta lamang ng dalawang bus: ang pangunahing bus, na matatagpuan mas malapit sa tuktok ng hierarchy, kasama ang pangalawang bus; Ang mga interface ng tulay kung saan ito ay konektado sa mga bus na ito ay tinatawag na pangunahin at pangalawa, ayon sa pagkakabanggit. Puro tree-like configuration lang ang pinapayagan, ibig sabihin, dalawang bus ang konektado sa isa't isa sa pamamagitan lamang ng isang tulay at walang "loops" ng mga tulay. Ang mga bus na konektado sa pangalawang interface ng isang naibigay na tulay ng ibang mga tulay ay tinatawag na mga subordinated na bus. Ang mga PCI bridge ay bumubuo ng isang hierarchy ng mga PCI bus, sa tuktok nito ay ang master bus, na may bilang na zero, na konektado sa master bridge. Kung mayroong ilang mga pangunahing tulay, kung gayon sa kanilang mga bus (katumbas sa ranggo), ang pangunahing isa ay ang itinalaga ng zero na numero.

Ang tulay ay dapat magsagawa ng ilang mandatoryong pag-andar:

  • serbisyo sa bus na konektado sa pangalawang interface nito:
  • magsagawa ng arbitrasyon - pagtanggap ng REQx# request signal mula sa bus masters at pagbibigay sa kanila ng karapatang kontrolin ang bus gamit ang GNTx# signals
  • iparada ang bus - magpadala ng signal ng GNTx# sa ilang device kapag ang kontrol ng bus ay hindi kinakailangan ng sinuman sa mga master;
  • bumuo ng mga siklo ng pagsasaayos ng uri 0 na may pagbuo ng mga indibidwal na signal ng IDSEL sa addressable na PCI device;
  • "pull" control signal sa isang mataas na antas;
  • matukoy ang mga kakayahan ng mga konektadong device at pumili ng bus operating mode na nakakatugon sa kanila (dalas, bit depth, protocol);
  • bumuo ng pag-reset ng hardware (RST#) sa pamamagitan ng pag-reset mula sa pangunahing interface at sa pamamagitan ng utos, pag-uulat ng napiling mode na may espesyal na alarma.
  • panatilihin ang mga mapa ng mga mapagkukunan na matatagpuan sa magkabilang panig ng tulay;
  • tumugon sa ilalim ng pagkukunwari ng isang target na device sa mga transaksyong pinasimulan ng isang master sa isang interface at naka-address sa isang mapagkukunan na matatagpuan sa isa pang interface; i-broadcast ang mga transaksyong ito sa isa pang interface, na kumikilos bilang isang master device, at ipinadala ang kanilang mga resulta sa tunay na nagpasimula.

Ang mga tulay na nagsasagawa ng mga tungkuling ito ay tinatawag na mga transparent na tulay; Upang gumana sa mga device na matatagpuan sa likod ng naturang mga tulay, walang karagdagang mga driver ng tulay ang kinakailangan. Ang mga tulay na ito ay inilarawan sa detalye ng PCI Bridge 1.1, at para sa kanila, bilang mga aparatong PCI, mayroong isang espesyal na klase (06). Sa kasong ito, ang ibig naming sabihin ay isang "flat" na modelo ng pagtugon sa mapagkukunan (memorya at I/O): ang bawat device ay may sariling mga address, natatangi (hindi nakikipag-intersecting sa iba) sa loob ng isang partikular na sistema (computer).

Mayroon ding mga opaque na tulay (di-transparent na tulay), na nagbibigay-daan sa iyong mag-ayos ng hiwalay na mga segment na may sariling mga lokal na puwang ng address. Ang isang opaque na tulay ay nagsasagawa ng pagsasalin ng address (conversion) para sa mga transaksyon kung saan ang initiator at target na device ay matatagpuan sa magkabilang panig ng tulay. Hindi lahat ng mapagkukunan (mga hanay ng address) ng kabilang panig ay maaaring maabot sa pamamagitan ng naturang tulay. Ang mga opaque na tulay ay ginagamit, halimbawa, kapag ang isang computer ay may "intelligent input/output" (I20) subsystem na may sarili nitong I/O processor at lokal na address space.

Pangkalahatang impormasyon

Ang PCI bus sa simula ay kasama ang kakayahang awtomatikong i-configure ang mga mapagkukunan ng system (mga puwang ng memory at I/O at mga linya ng pag-abala sa kahilingan). Ang awtomatikong pagsasaayos ng device (pagpili ng mga address at pagkagambala) ay sinusuportahan ng BIOS at mga tool sa OS; nakatutok ito sa teknolohiya ng PnP. Ang PCI standard ay tumutukoy para sa bawat function ng isang configuration space na hanggang 256 registers (8-bits), hindi nakatalaga sa alinman sa memory space o I/O space. Naa-access ang mga ito gamit ang mga espesyal na command ng bus Configuration Read at Configuration Write, na nabuo gamit ang isa sa mga mekanismo ng hardware at software na inilarawan sa ibaba. Sa espasyong ito mayroong mga lugar na kinakailangan para sa lahat ng device, at mga partikular. Ang isang partikular na device ay maaaring walang mga rehistro sa lahat ng mga address, ngunit dapat na sumusuporta sa normal na pagkumpleto para sa mga pagpapatakbo na naka-address sa kanila. Sa kasong ito, ang pagbabasa ng mga di-umiiral na rehistro ay dapat magbalik ng mga zero, at ang pagsulat ay dapat gawin bilang isang idle na operasyon.

Ang espasyo ng pagsasaayos ng isang function ay nagsisimula sa isang karaniwang header, na naglalaman ng mga identifier ng tagagawa, device at klase nito, pati na rin ang isang paglalarawan ng mga kinakailangan at inookupahan na mapagkukunan ng system. Ang istraktura ng header ay na-standardize para sa mga conventional device (type 0), PCI-PCI bridges (type 1), PCI-CardBus bridges (type 2). Tinutukoy ng uri ng header ang lokasyon ng mga kilalang rehistro at ang layunin ng kanilang mga bit. Pagkatapos ng header ay maaaring mayroong mga rehistrong partikular sa device. Para sa mga standardized na kakayahan (kakayahan) ng mga device (halimbawa, pamamahala ng enerhiya), mayroong mga bloke ng mga rehistro ng kilalang layunin sa espasyo ng pagsasaayos. Ang mga bloke na ito ay nakaayos sa mga kadena, ang unang naturang bloke ay isinangguni sa karaniwang header (CAP_PTR); sa unang rehistro ng bloke mayroong isang link sa susunod na bloke (o 0 kung ang bloke na ito ang huli). Kaya, sa pamamagitan ng pag-scan sa chain, natatanggap ng configuration software ang isang listahan ng lahat ng available na katangian ng device at ang kanilang mga posisyon sa function configuration space. Tinutukoy ng PCI 2.3 ang mga sumusunod na CAP_ID, ang ilan ay titingnan natin:

  • 01 - pamamahala ng enerhiya;
  • 02 - AGP port;
  • 03 - VPD (Vital Product Data), data na nagbibigay ng komprehensibong paglalarawan ng hardware (posibleng software din) na mga katangian ng mga device;
  • 04 — pagnunumero ng mga puwang at tsasis;
  • 05 - MSI interrupts;
  • 06 - Hot Swap, mainit na koneksyon para sa Compact PCI;
  • 07 - mga extension ng PCI-X protocol;
  • 08 - nakalaan para sa AMD;
  • 09 - sa pagpapasya ng tagagawa (Vendor Specific);
  • 0Ah — debug port (Debug Port);
  • 0Bh - PCI Hot Plug, karaniwang probisyon ng "hot plug".

Sa PCI-X para sa Mode 2 na mga device, ang espasyo sa pagsasaayos ay pinalawak sa 4096 bytes; sa pinalawak na espasyo ay maaaring may pinalawig na mga paglalarawan ng ari-arian.

Pagkatapos ng hard reset (o power-on), ang mga PCI device ay hindi tumutugon sa memory at I/O space access at available lang ito para sa configuration reads and writes. Sa mga operasyong ito, pinipili ang mga device gamit ang mga indibidwal na signal ng IDSEL, at sa pamamagitan ng pagbabasa ng mga rehistro, natututo ang configuration software tungkol sa mga kinakailangan sa mapagkukunan at posibleng mga opsyon sa configuration ng device. Pagkatapos maisagawa ang paglalaan ng mapagkukunan ng programa ng pagsasaayos (sa panahon ng POST o OS boot), ang mga parameter ng pagsasaayos (base address) ay isinulat sa mga rehistro ng pagsasaayos ng device. Pagkatapos lamang nito, ang mga device (mas tiyak, mga function) ay nakatakda sa mga bit na nagpapahintulot sa kanila na tumugon sa mga utos upang ma-access ang memory at I/O port, pati na rin ang kontrolin ang bus mismo. Upang palaging makahanap ng isang maisasagawa na configuration, ang lahat ng mapagkukunang inookupahan ng mga card ay dapat na magagalaw sa kanilang mga espasyo. Para sa mga multifunction device, ang bawat function ay dapat may sarili nitong configuration space. Maaaring imapa ng device ang parehong mga rehistro sa parehong memorya at I/O space. Sa kasong ito, ang parehong mga deskriptor ay dapat na naroroon sa kanilang mga rehistro ng pagsasaayos, ngunit ang driver ay dapat gumamit lamang ng isang paraan ng pag-access (mas mabuti sa pamamagitan ng memorya).

Inilalarawan ng header ng configuration space ang mga pangangailangan para sa tatlong uri ng mga address:

  • nagrerehistro sa I/O Space);
  • Ang mga rehistro ng I/O ay nakamapa sa memorya (Memory Mapped I/O). Ito ay isang lugar ng memorya na dapat ma-access nang mahigpit alinsunod sa hinihiling ng exchange initiator. Maaaring baguhin ng pag-access sa mga register na ito ang panloob na estado ng mga peripheral na device;
  • memorya na nagbibigay-daan sa prefetchable memory. Ito ay isang lugar ng memorya kung saan ang "dagdag" na pagbabasa (na may hindi nagamit na mga resulta) ay hindi humahantong sa mga side effect, ang lahat ng mga byte ay binabasa nang hiwalay sa mga BE# na signal, at ang mga pagsusulat ng mga indibidwal na byte ay maaaring i-bridge (iyon ay, ito ay memorya. sa pinakadalisay nitong anyo).

Ang mga kinakailangan sa address ay ipinahiwatig sa base address registers - BAR (Base Address Register). Ang programa ng pagsasaayos ay maaari ring matukoy ang laki ng mga kinakailangang lugar. Upang gawin ito, pagkatapos ng pag-reset ng hardware, dapat itong basahin at i-save ang mga halaga ng mga base address (ito ang magiging mga default na address), isulat ang FFFFFFFFh sa bawat rehistro at basahin muli ang kanilang halaga. Sa mga natanggap na salita, kailangan mong i-reset ang uri ng decoding bits (bits para sa memory at bits para sa input/output), baligtarin at dagdagan ang nagreresultang 32-bit na salita - ang resulta ay ang haba ng lugar (huwag pansinin ang mga bit para sa mga port ). Ipinapalagay ng pamamaraan na ang haba ng rehiyon ay ipinahayag bilang 2n at ang rehiyon ay natural na nakahanay. Ang karaniwang header ay tumatanggap ng hanggang 6 na base address registers, ngunit kapag gumagamit ng 64-bit addressing, ang bilang ng mga inilarawang block ay nababawasan. Ang mga hindi nagamit na rehistro ng BAR ay dapat palaging magbabalik ng mga zero kapag nabasa.

Ang PCI ay may suporta para sa mga legacy na device (VGA, IDE), na nagpapahayag ng kanilang sarili bilang ganoon sa pamamagitan ng class code sa header. Ang kanilang mga tradisyonal (nakapirming) port address ay hindi idineklara sa configuration space, ngunit sa sandaling ang port access enable bit ay naitakda, ang mga device ay pinapayagang tumugon sa mga address na iyon din.

AGP slot na may trangka para sa graphics card.

Karamihan sa mga graphics card sa mga consumer PC ay gumagamit ng Accelerated Graphics Port (AGP) na interface. Ginagamit ng mga pinakalumang system ang interface ng PCI para sa parehong layunin. Gayunpaman, ang PCI Express (PCIe) ay inilaan upang palitan ang parehong mga interface. Sa kabila ng pangalan, ang PCI Express ay isang serial bus, habang ang PCI (walang Express suffix) ay parallel. Sa pangkalahatan, ang mga bus ng PCI at PCI Express ay walang pagkakatulad maliban sa pangalan.

AGP graphics card (itaas) at PCI Express graphics card (ibaba).

Gumagamit ang mga motherboard ng workstation ng AGP Pro slot, na nagbibigay ng karagdagang kapangyarihan para sa mga OpenGL card na gutom sa kuryente. Gayunpaman, maaari ka ring mag-install ng mga regular na graphics card dito. Gayunpaman, ang AGP Pro ay hindi kailanman nakakuha ng malawakang pagtanggap. Karaniwan, ang mga graphics card na gutom sa kuryente ay nilagyan ng karagdagang power socket - para sa parehong Molex plug, halimbawa.

Karagdagang kapangyarihan para sa graphics card: 4- o 6-pin na socket.

Karagdagang kapangyarihan para sa graphics card: Molex socket.

Ang pamantayan ng AGP ay dumaan sa ilang mga pag-update.

Pamantayan Bandwidth
AGP 1X 256 MB/s
AGP 2X 533 MB/s
AGP 4X 1066 MB/s
AGP 8X 2133 MB/s

Kung gusto mong bungkalin ang hardware, dapat mong tandaan na mayroong dalawang antas ng boltahe ng interface. Ang mga pamantayan ng AGP 1X at 2X ay gumagana sa 3.3 V, habang ang AGP 4X at 8X ay nangangailangan lamang ng 1.5 V. Bilang karagdagan, may mga Universal AGP card na umaangkop sa anumang uri ng connector. Upang maiwasang maipasok ang mga card nang hindi sinasadya, ang mga slot ng AGP ay gumagamit ng mga espesyal na tab. At ang mga card ay mga hiwa.

Ang tuktok na card ay may puwang para sa AGP 3.3 V. Sa gitna: isang unibersal na card na may dalawang cutout (isa para sa AGP 3.3 V, ang pangalawa para sa AGP 1.5 V). Nasa ibaba ang isang card na may cutout sa kanan para sa AGP 1.5V.

Mga expansion slot ng motherboard: PCI Express x16 lane (itaas) at 2 PCI Express x1 lane (ibaba).

Dalawang PCI Express slot para sa pag-install ng dalawang nVidia SLi graphics card. Sa pagitan ng mga ito ay makikita mo ang isang maliit na slot ng PCI Express x1.

Ang PCI Express ay isang serial interface at hindi dapat malito sa mga PCI-X o PCI bus, na gumagamit ng parallel signaling.

Ang PCI Express (PCIe) ay ang pinaka-advanced na interface para sa mga graphics card. Kasabay nito, angkop din ito para sa pag-install ng iba pang mga expansion card, bagaman kakaunti lamang ang mga ito sa merkado sa ngayon. Ang PCIe x16 ay nagbibigay ng dalawang beses sa bandwidth ng AGP 8x. Ngunit sa pagsasagawa ang kalamangan na ito ay hindi kailanman nagpakita mismo.

AGP graphics card (itaas) kumpara sa isang PCI Express graphics card (ibaba).

Mula sa itaas hanggang sa ibaba: PCI Express x16 (serial), dalawang parallel na interface ng PCI at PCI Express x1 (serial).

Bilang ng mga linya ng PCI Express One-way throughput Kabuuang throughput
1 256 MB/s 512 MB/s
2 512 MB/s 1 GB/s
4 1 GB/s 2 GB/s
8 2 GB/s 4 GB/s
16 4 GB/s 8 GB/s

Ang PCI ay isang karaniwang bus para sa pagkonekta ng mga peripheral na aparato. Kabilang sa mga ito ang mga network card, modem, sound card at video capture card.

Sa mga motherboard para sa pangkalahatang merkado, ang pinakakaraniwang bus ay ang PCI standard 2.1, na tumatakbo sa dalas ng 33 MHz at may lapad na 32 bits. Mayroon itong throughput na hanggang 133 Mbit/s. Ang mga tagagawa ay hindi malawakang gumagamit ng mga PCI 2.3 bus na may mga frequency na hanggang 66 MHz. Iyon ang dahilan kung bakit kakaunti ang mga card ng pamantayang ito. Ngunit sinusuportahan ng ilang motherboard ang pamantayang ito.

Ang isa pang pag-unlad sa mundo ng parallel PCI bus ay kilala bilang PCI-X. Ang mga puwang na ito ay kadalasang matatagpuan sa mga motherboard ng server at workstation dahil nagbibigay ang PCI-X ng mas mataas na throughput para sa mga RAID controller o network card. Halimbawa, nag-aalok ang PCI-X 1.0 bus ng hanggang 1 Gbps ng bandwidth na may bilis ng bus na 133 MHz at 64 bits.

Ang detalye ng PCI 2.1 ngayon ay nangangailangan ng 3.3V na supply ng boltahe na pinipigilan ng kaliwang cutout/tab ang pag-install ng mga mas lumang 5V card, na ipinapakita sa larawan.

Isang card na may cutout, pati na rin isang PCI slot na may susi.

RAID controller para sa 64-bit PCI-X slot.

Isang klasikong 32-bit PCI slot sa itaas, at tatlong 64-bit PCI-X slot sa ibaba. Sinusuportahan ng berdeng slot ang ZCR (Zero Channel RAID).

Diksyunaryo

  • PCI = Peripheral Component Interconnect


NILALAMAN

Pagdating sa anumang mga interface sa konteksto ng mga computer system, kailangan mong maging maingat na hindi "matakbuhin" ang mga hindi tugmang interface para sa parehong mga bahagi sa loob ng system.

Sa kabutihang palad, pagdating sa interface ng PCI-Express para sa pagkonekta ng isang video card, halos walang mga problema sa hindi pagkakatugma. Sa artikulong ito ay titingnan natin ito nang mas detalyado, at pag-uusapan din kung ano ang PCI-Express.

Bakit kailangan ang PCI-Express at ano ito?

Magsimula tayo, gaya ng dati, gamit ang mga pangunahing kaalaman. interface ng PCI-Express (PCI-E).- ito ay isang paraan ng pakikipag-ugnayan, sa kontekstong ito, na binubuo ng isang bus controller at ang kaukulang slot (Fig. 2) sa motherboard(upang i-generalize).

Ang high-performance protocol na ito ay ginagamit, gaya ng nabanggit sa itaas, upang ikonekta ang isang video card sa system. Alinsunod dito, ang motherboard ay may kaukulang PCI-Express slot, kung saan naka-install ang video adapter. Noong nakaraan, ang mga video card ay konektado sa pamamagitan ng interface ng AGP, ngunit kapag ang interface na ito, sa madaling salita, "ay hindi na sapat," ang PCI-E ay dumating upang iligtas, ang mga detalyadong katangian na pag-uusapan natin ngayon.

Fig.2 (mga puwang ng PCI-Express 3.0 sa motherboard)

Mga Pangunahing Katangian ng PCI-Express (1.0, 2.0 at 3.0)

Sa kabila ng katotohanan na ang mga pangalan ng PCI at PCI-Express ay halos magkapareho, ang kanilang mga prinsipyo ng koneksyon (interaksyon) ay radikal na naiiba. Sa kaso ng PCI-Express, isang linya ang ginagamit - isang bidirectional na serial connection, ng point-to-point na uri ay maaaring mayroong ilan sa mga linyang ito. Sa kaso ng mga video card at motherboards (hindi namin isinasaalang-alang ang Cross Fire at SLI) na sumusuporta sa PCI-Express x16 (iyon ay, ang karamihan), madali mong mahulaan na mayroong 16 tulad na mga linya (Larawan 3), medyo madalas sa mga motherboard na may PCI-E 1.0, posible na makakita ng pangalawang x8 slot para sa operasyon sa SLI o Cross Fire mode.

Well, sa PCI, ang aparato ay konektado sa isang karaniwang 32-bit parallel bus.

kanin. 3. Halimbawa ng mga puwang na may iba't ibang bilang ng mga linya

(tulad ng nabanggit kanina, x16 ang kadalasang ginagamit)


Ang bandwidth ng interface ay 2.5 Gbit/s. Kailangan namin ang data na ito upang masubaybayan ang mga pagbabago sa parameter na ito sa iba't ibang bersyon ng PCI-E.

Dagdag pa, ang bersyon 1.0 ay umunlad sa PCI-E 2.0. Bilang resulta ng pagbabagong ito, nakatanggap kami ng dalawang beses sa throughput, iyon ay, 5 Gbit/s, ngunit nais kong tandaan na ang mga graphics adapter ay hindi gaanong nakakuha sa pagganap, dahil ito ay isang bersyon lamang ng interface. Karamihan sa pagganap ay nakasalalay sa mismong video card; ang bersyon ng interface ay maaari lamang bahagyang mapabuti o mapabagal ang paglipat ng data (sa kasong ito ay walang "pagpepreno", at mayroong isang magandang margin).

Sa parehong paraan, noong 2010, na may isang reserba, ang interface ay binuo PCI-E 3.0, sa sandaling ito ay ginagamit sa lahat ng mga bagong system, ngunit kung mayroon ka pa ring 1.0 o 2.0, pagkatapos ay huwag mag-alala - sa ibaba ay pag-uusapan natin ang tungkol sa kamag-anak na pabalik na pagkakatugma ng iba't ibang mga bersyon.

Sa PCI-E 3.0, nadoble ang bandwidth kumpara sa bersyon 2.0. Marami ring mga teknikal na pagbabago ang ginawa doon.

Inaasahang ipanganak sa 2015 PCI-E 4.0, na talagang hindi nakakagulat para sa dynamic na industriya ng IT.

Well, okay, tapusin natin ang mga bersyon at bandwidth figure na ito, at hawakan natin ang napakahalagang isyu ng backward compatibility ng iba't ibang bersyon ng PCI-Express.

Paatras na katugma sa mga bersyon ng PCI-Express 1.0, 2.0 at 3.0

Ang tanong na ito ay nag-aalala sa marami, lalo na kapag pagpili ng video card para sa kasalukuyang sistema. Dahil kontento na sa isang system na may motherboard na sumusuporta sa PCI-Express 1.0, may mga pagdududa kung gagana nang tama ang isang video card na may PCI-Express 2.0 o 3.0? Oo, ito ay magiging, hindi bababa sa iyon ang ipinangako ng mga developer na nagsisiguro sa pagiging tugma na ito. Ang tanging bagay ay ang video card ay hindi magagawang ganap na ihayag ang sarili sa lahat ng kaluwalhatian nito, ngunit ang mga pagkalugi sa pagganap, sa karamihan ng mga kaso, ay magiging hindi gaanong mahalaga.


Sa kabaligtaran, maaari mong ligtas na mai-install ang mga video card na may interface ng PCI-E 1.0 sa mga motherboard na sumusuporta sa PCI-E 3.0 o 2.0, walang mga paghihigpit sa lahat, kaya makatitiyak tungkol sa pagiging tugma. Kung, siyempre, ang lahat ay maayos sa iba pang mga kadahilanan, kabilang dito ang isang hindi sapat na malakas na supply ng kuryente, atbp.

Sa pangkalahatan, medyo napag-usapan namin ang tungkol sa PCI-Express, na dapat makatulong sa iyo na alisin ang maraming kalituhan at pagdududa tungkol sa pagiging tugma at pag-unawa sa mga pagkakaiba sa pagitan ng mga bersyon ng PCI-E.

Kung tatanungin mo kung aling interface ang dapat gamitin para sa isang solid-state drive na sumusuporta sa NVMe protocol, ang sinumang tao (na kahit alam kung ano ang NVMe) ay sasagot: siyempre PCIe 3.0 x4! Totoo, malamang na mahihirapan siya sa pagbibigay-katwiran. Sa pinakamaganda, makukuha namin ang sagot na sinusuportahan ng naturang mga drive ang PCIe 3.0 x4, at mahalaga ang bandwidth ng interface. Ito ay, ngunit ang lahat ng pag-uusap tungkol dito ay nagsimula lamang kapag ang ilang mga drive sa ilang mga operasyon ay naging masikip sa loob ng balangkas ng "regular" na SATA. Ngunit sa pagitan ng 600 MB/s nito at ng (parehong teoretikal) 4 GB/s ng interface ng PCIe 3.0 x4 ay may isang bangin, na puno ng isang toneladang pagpipilian! Paano kung sapat na ang isang linya ng PCIe 3.0, dahil isa at kalahating beses na itong mas malaki kaysa sa SATA600? Ang pagdaragdag ng gasolina sa apoy ay ang mga tagagawa ng controller na nagbabanta na lumipat sa PCIe 3.0 x2 sa mga produktong badyet, pati na rin ang katotohanan na maraming mga gumagamit ay walang ganito at ganoon. Mas tiyak, ayon sa teorya ay mayroon, ngunit maaari lamang silang ilabas sa pamamagitan ng muling pagsasaayos ng system o kahit na pagbabago ng isang bagay sa loob nito na hindi mo gustong gawin. Ngunit gusto kong bumili ng isang top-end na solid-state drive, ngunit may mga takot na walang pakinabang sa lahat mula dito (kahit na ang moral na kasiyahan mula sa mga resulta ng mga kagamitan sa pagsubok).

Pero totoo ba ito o hindi? Sa madaling salita, kailangan ba talagang mag-focus nang eksklusibo sa sinusuportahang operating mode - o posible pa rin ba ito sa pagsasanay? isuko ang mga prinsipyo? Ito mismo ang napagpasyahan naming suriin ngayon. Hayaan ang tseke na maging mabilis at hindi magpanggap na kumpleto, ngunit ang impormasyon na natanggap ay dapat sapat (tulad ng sa tingin natin) kahit paano upang isipin ito ... Sa ngayon, sa madaling sabi ay kilalanin natin ang teorya.

PCI Express: umiiral na mga pamantayan at ang kanilang bandwidth

Magsimula tayo sa kung ano ang PCIe at kung gaano kabilis gumagana ang interface na ito. Madalas itong tinatawag na "bus," na medyo mali sa ideolohiya: dahil dito, walang bus kung saan nakakonekta ang lahat ng device. Sa katotohanan, mayroong isang set ng mga point-to-point na koneksyon (katulad ng maraming iba pang mga serial interface) na may controller sa gitna at mga device na naka-attach dito (bawat isa ay maaaring maging isang next-level hub).

Ang unang bersyon ng PCI Express ay lumitaw halos 15 taon na ang nakakaraan. Ang pagtuon sa paggamit sa loob ng isang computer (kadalasan sa loob ng parehong board) ay naging posible na gawin ang karaniwang high-speed: 2.5 gigatransactions bawat segundo. Dahil serial at full-duplex ang interface, ang isang PCIe lane (x1; epektibong atomic unit) ay nagbibigay ng bilis ng paglilipat ng data na hanggang 5 Gbps. Gayunpaman, sa bawat direksyon ito ay kalahati lamang nito, i.e. 2.5 Gbps, at ito ang buong bilis ng interface, hindi ang "kapaki-pakinabang": upang mapabuti ang pagiging maaasahan, ang bawat byte ay naka-encode na may 10 bits, kaya ang theoretical throughput ng ang isang PCIe line 1.x ay humigit-kumulang 250 MB/s bawat daan. Sa pagsasagawa, kinakailangan pa ring maglipat ng impormasyon ng serbisyo, at sa huli ay mas tama na pag-usapan ang tungkol sa ≈200 MB/s ng paglilipat ng data ng user. Na, gayunpaman, sa oras na iyon ay hindi lamang sumasakop sa mga pangangailangan ng karamihan sa mga aparato, ngunit nagbigay din ng isang matatag na reserba: tandaan lamang na ang hinalinhan ng PCIe sa segment ng mga interface ng mass system, lalo na ang PCI bus, ay nagbigay ng throughput na 133 MB/ s. At kahit na isaalang-alang namin hindi lamang ang pagpapatupad ng masa, kundi pati na rin ang lahat ng mga pagpipilian sa PCI, ang maximum ay 533 MB/s, at para sa buong bus, ibig sabihin, ang naturang PS ay nahahati sa lahat ng mga device na konektado dito. Dito, 250 MB/s (dahil para sa PCI, masyadong, ang kabuuan at hindi ang kapaki-pakinabang na throughput ay karaniwang ibinibigay) bawat linya - sa eksklusibong paggamit. At para sa mga device na nangangailangan ng higit pa, sa simula ay posible na pagsama-samahin ang ilang linya sa isang solong interface, sa kapangyarihan ng dalawa - mula 2 hanggang 32, ibig sabihin, ang x32 na bersyon na ibinigay ng pamantayan ay maaaring magpadala ng hanggang 8 GB/s sa bawat isa. direksyon. Sa mga personal na computer, hindi ginamit ang x32 dahil sa pagiging kumplikado ng paglikha at pag-wire ng mga kaukulang controller at device, kaya ang maximum na opsyon ay 16 na linya. Ito ay (at hanggang ngayon) ginagamit pangunahin ng mga video card, dahil ang karamihan sa mga device ay hindi nangangailangan ng labis. Sa pangkalahatan, para sa isang malaking bilang ng mga ito, sapat na ang isang linya, ngunit ang ilan ay matagumpay na gumagamit ng parehong x4 at x8: sa paksa lamang ng imbakan - RAID controllers o SSDs.

Ang oras ay hindi tumigil, at humigit-kumulang 10 taon na ang nakakaraan ay lumitaw ang pangalawang bersyon ng PCIe. Ang mga pagpapabuti ay hindi lamang tungkol sa mga bilis, ngunit isang hakbang pasulong ay kinuha din sa bagay na ito - ang interface ay nagsimulang magbigay ng 5 gigatransactions bawat segundo habang pinapanatili ang parehong encoding scheme, ibig sabihin, ang throughput ay nadoble. At muli itong nadoble noong 2010: Nagbibigay ang PCIe 3.0 ng 8 (sa halip na 10) gigatransactions kada segundo, ngunit nabawasan na ang redundancy - ngayon ay 130 bits ang ginagamit upang i-encode ang 128, hindi 160 gaya ng dati. Sa prinsipyo, ang bersyon ng PCIe 4.0 na may isa pang pagdodoble ng mga bilis ay handa nang lumitaw sa papel, ngunit malamang na hindi namin ito makikita sa hardware sa malapit na hinaharap. Sa katunayan, ang PCIe 3.0 ay ginagamit pa rin sa maraming mga platform kasabay ng PCIe 2.0, dahil ang pagganap ng huli ay simple... hindi kailangan para sa maraming mga application. At kung saan kinakailangan, gumagana ang magandang lumang paraan ng pagsasama-sama ng linya. Bawat isa lang sa kanila ang naging apat na beses na mas mabilis sa mga nakaraang taon, ibig sabihin, ang PCIe 3.0 x4 ay PCIe 1.0 x16, ang pinakamabilis na slot sa mga computer noong kalagitnaan ng 2000s. Ang opsyong ito ay sinusuportahan ng mga top-end na SSD controllers, at inirerekomendang gamitin ito. Malinaw na kung may ganitong pagkakataon, marami ay hindi maliit. Paano kung wala siya? Magkakaroon ba ng anumang mga problema, at kung gayon, ano ang mga ito? Ito ang tanong na dapat nating harapin.

Pamamaraan ng pagsubok

Hindi mahirap magsagawa ng mga pagsubok na may iba't ibang mga bersyon ng pamantayan ng PCIe: halos lahat ng mga controller ay nagbibigay-daan sa iyo na gamitin hindi lamang ang sinusuportahan nila, kundi pati na rin ang lahat ng naunang mga. Mas mahirap sa bilang ng mga lane: gusto naming direktang subukan ang mga opsyon gamit ang isa o dalawang PCIe lane. Ang Asus H97-Pro Gamer board na karaniwan naming ginagamit sa Intel H97 chipset ay hindi sumusuporta sa buong set, ngunit bilang karagdagan sa x16 "processor" slot (na kadalasang ginagamit), mayroon itong isa pang gumagana sa PCIe 2.0 x2 o x4 na mga mode. Ginamit namin ang trio na ito, idinagdag dito ang PCIe 2.0 "processor" slot mode upang masuri kung may pagkakaiba. Gayunpaman, sa kasong ito, walang mga extraneous na "tagapamagitan" sa pagitan ng processor at SSD, ngunit kapag nagtatrabaho sa isang "chipset" slot, mayroong: ang chipset mismo, na aktwal na konektado sa processor ng parehong PCIe 2.0 x4 . Posibleng magdagdag ng ilan pang mga operating mode, ngunit magsasagawa pa rin kami ng pangunahing bahagi ng pag-aaral sa ibang system.

Ang katotohanan ay napagpasyahan naming kunin ang pagkakataong ito at sa parehong oras suriin ang isang "alamat ng lungsod", lalo na ang paniniwala tungkol sa pagiging kapaki-pakinabang ng paggamit ng mga nangungunang processor para sa mga pagsubok na drive. Kaya kinuha namin ang eight-core Core i7-5960X - isang kamag-anak ng Core i3-4170 na karaniwang ginagamit sa mga pagsubok (ito ay Haswell at Haswell-E), ngunit may apat na beses na mas maraming core. Bilang karagdagan, ang Asus Sabertooth X99 board na matatagpuan sa mga bin ay kapaki-pakinabang sa amin ngayon dahil sa pagkakaroon ng isang PCIe x4 slot, na sa katunayan ay maaaring gumana bilang x1 o x2. Sa system na ito, sinubukan namin ang tatlong x4 na opsyon (PCIe 1.0/2.0/3.0) mula sa processor at chipset PCIe 1.0 x1, PCIe 1.0 x2, PCIe 2.0 x1 at PCIe 2.0 x2 (sa lahat ng kaso, ang mga configuration ng chipset ay minarkahan sa mga diagram na may (c)). Makatuwiran bang bumaling sa unang bersyon ng PCIe ngayon, dahil sa katotohanan na halos walang iisang board na sumusuporta lamang sa bersyong ito ng pamantayan at maaaring mag-boot mula sa isang NVMe device? Mula sa isang praktikal na pananaw, hindi, ngunit upang suriin ang a priori na ipinapalagay na ratio ng PCIe 1.1 x4 = PCIe 2.0 x2 at mga katulad nito, ito ay magiging kapaki-pakinabang sa amin. Kung ang pagsubok ay nagpapakita na ang scalability ng bus ay tumutugma sa teorya, kung gayon hindi mahalaga na hindi pa kami nakakakuha ng mga praktikal na makabuluhang paraan upang ikonekta ang PCIe 3.0 x1/x2: ang una ay magiging magkapareho sa PCIe 1.1 x4 o PCIe 2.0 x2, at ang pangalawa ay magiging magkapareho sa PCIe 2.0 x4 . At mayroon tayo sa kanila.

Sa mga tuntunin ng software, nilimitahan namin ang aming sarili sa Anvil's Storage Utilities 1.1.0 lang: sinusukat nito ang iba't ibang mababang antas na katangian ng mga drive, at hindi na namin kailangan ng iba pa. Sa kabaligtaran: ang anumang impluwensya ng iba pang mga bahagi ng system ay lubhang hindi kanais-nais, kaya ang mababang antas ng synthetics ay walang alternatibo para sa aming mga layunin.

Gumamit kami ng 240 GB Patriot Hellfire bilang isang "working fluid". Dahil ito ay itinatag sa panahon ng pagsubok, hindi ito isang record-holder ng pagganap, ngunit ang mga katangian ng bilis nito ay medyo pare-pareho sa mga resulta ng pinakamahusay na SSD ng parehong klase at parehong kapasidad. Oo, at mayroon nang mas mabagal na mga aparato sa merkado, at magkakaroon ng higit pa at higit pa sa kanila. Sa prinsipyo, posible na ulitin ang mga pagsubok sa isang bagay nang mas mabilis, ngunit, sa aming opinyon, hindi na kailangan para dito - ang mga resulta ay mahuhulaan. Ngunit huwag nating unahan ang ating sarili, ngunit tingnan natin kung ano ang nakuha natin.

Mga resulta ng pagsubok

Kapag sinubukan ang Hellfire, napansin namin na ang maximum na bilis para sa mga sunud-sunod na operasyon ay maaari lamang "ma-squeezed out" ng isang multi-threaded load, kaya kailangan din itong isaalang-alang para sa hinaharap: ang theoretical throughput ay teoretikal lamang, dahil ang " tunay" na data na natanggap sa iba't ibang mga programa sa ilalim ng iba't ibang mga sitwasyon ay hindi na nakasalalay dito, ngunit sa mismong mga programa at mga senaryo na ito - sa kaso, siyempre, kapag ang mga pangyayari sa force majeure ay hindi nakakasagabal :) Ito ang eksaktong mga pangyayari na ating inoobserbahan ngayon : nasabi na sa itaas na ang PCIe 1.x x1 ay ≈200 MB/s, at iyon mismo ang nakikita natin. Dalawang PCIe 1.x lane o isang PCIe 2.0 ay dalawang beses na mas mabilis, at iyon mismo ang nakikita natin. Ang apat na PCIe 1.x lane, dalawang PCIe 2.0 o isang PCIe 3.0 ay doble pa rin ang bilis, na nakumpirma para sa unang dalawang opsyon, kaya malamang na hindi magkaiba ang pangatlo. Iyon ay, sa prinsipyo, ang scalability, tulad ng inaasahan, ay perpekto: ang mga operasyon ay linear, ang flash ay humahawak sa kanila nang maayos, kaya mahalaga ang interface. Huminto ang flash makayanan mong mabuti sa PCIe 2.0 x4 para sa pag-record (na nangangahulugang angkop din ang PCIe 3.0 x2). Ang pagbabasa ng "maaaring" ay higit pa, ngunit ang huling hakbang ay nagbibigay na ng isa't kalahati, at hindi dalawang beses (tulad ng posibleng dapat) pagtaas. Tandaan din namin na walang kapansin-pansing pagkakaiba sa pagitan ng mga controllers ng chipset at processor, at sa pagitan din ng mga platform. Gayunpaman, medyo nauuna ang LGA2011-3, ngunit kaunti lang.

Ang lahat ay makinis at maganda. Pero hindi nakakapunit ng mga template: ang maximum sa mga pagsubok na ito ay bahagyang higit lamang sa 500 MB/s, at ito ay lubos na may kakayahan kahit ng SATA600 o (sa application sa pagsubok ngayon) PCIe 1.0 x4 / PCIe 2.0 x2 / PCIe 3.0 x1. Tama iyan: huwag maalarma sa pagpapalabas ng mga controllers ng badyet para sa PCIe x2 o pagkakaroon ng napakaraming linya (at ang 2.0 na bersyon ng pamantayan) sa mga slot ng M.2 sa ilang board kapag hindi na kailangan ng higit pa. Minsan hindi mo gaanong kailangan: ang pinakamataas na resulta ay nakamit sa isang queue ng 16 na utos, na hindi karaniwan para sa mass-produced software. Mas madalas mayroong isang queue na may 1-4 na mga utos, at para dito maaari kang makakuha ng isang linya ng pinakaunang PCIe at kahit na ang pinakaunang SATA. Gayunpaman, may mga overhead at iba pang mga bagay, kaya kapaki-pakinabang ang isang mabilis na interface. Gayunpaman, ang pagiging masyadong mabilis ay marahil ay hindi nakakapinsala.

Gayundin, sa pagsubok na ito ang mga platform ay kumikilos nang iba, at sa isang solong command queue - sa panimula ay naiiba. Ang "gulo" ay hindi na maraming mga core ay masama. Hindi pa rin sila ginagamit dito, maliban sa isa, at hindi gaanong na-deploy ang boost mode. Kaya mayroon kaming isang pagkakaiba ng tungkol sa 20% sa core frequency at isa at kalahating beses sa cache memory - sa Haswell-E ito ay nagpapatakbo sa isang mas mababang frequency, at hindi kasabay ng mga core. Sa pangkalahatan, ang isang top-end na platform ay maaari lamang maging kapaki-pakinabang para sa pag-knock out ng maximum na "Yops" sa pamamagitan ng pinaka-multi-threaded mode na may malaking command queue depth. Ang tanging awa ay na mula sa punto ng view ng praktikal na trabaho, ito ay ganap na spherical synthetics sa isang vacuum :)

Sa pag-record, ang sitwasyon ay hindi nagbago sa panimula - sa bawat kahulugan. Ngunit ang nakakatuwa ay sa parehong mga system ang PCIe 2.0 x4 mode sa puwang ng "processor" ay naging pinakamabilis. Sa pareho! At sa maraming pagsusuri/pagsusuri. Sa puntong ito hindi mo maiwasang isipin kung kailangan mo ito ang iyong mga bagong pamantayan O mas mabuting huwag magmadali kahit saan...

Kapag nagtatrabaho sa mga bloke ng iba't ibang laki, ang teoretikal na idyll ay nasira ng katotohanan na ang pagtaas ng bilis ng interface ay may katuturan pa rin. Ang mga resultang figure ay tulad na ang isang pares ng PCIe 2.0 lane ay magiging sapat, ngunit sa katotohanan sa kasong ito ang pagganap ay mas mababa kaysa sa PCIe 3.0 x4, kahit na hindi ng ilang beses. At sa pangkalahatan, narito ang platform ng badyet ay "barado" sa tuktok sa isang mas malaking lawak. Ngunit ito ay tiyak na ganitong uri ng operasyon na higit sa lahat ay matatagpuan sa application software, ibig sabihin, ang diagram na ito ang pinakamalapit sa katotohanan. Bilang resulta, hindi nakakagulat na ang makapal na interface at mga naka-istilong protocol ay hindi nagbibigay ng anumang "wow" na epekto. Mas tiyak, ang mga lumipat mula sa mekanika ay ibibigay, ngunit eksaktong kapareho ng anumang solid-state drive na may anumang interface na ibibigay sa kanya.

Kabuuan

Upang mas madaling makita ang larawan ng ospital sa kabuuan, ginamit namin ang marka na ibinigay ng programa (kabuuan - para sa pagbabasa at pagsusulat), pag-normalize ito ayon sa mode na "chipset" ng PCIe 2.0 x4: sa sandaling ito ay ang pinaka-malawak na magagamit, dahil ito ay matatagpuan kahit na sa LGA1155 o AMD na mga platform nang hindi kinakailangang "masakitan" ang video card. Bilang karagdagan, ito ay katumbas ng PCIe 3.0 x2, kung saan ang mga controllers ng badyet ay naghahanda upang makabisado. At sa bagong platform ng AMD AM4, muli, ito mismo ang mode na maaaring makuha nang hindi naaapektuhan ang discrete video card.

Kaya ano ang nakikita natin? Ang paggamit ng PCIe 3.0 x4, kung maaari, ay tiyak na mas kanais-nais, ngunit hindi kinakailangan: ito ay nagdadala ng literal na 10% karagdagang pagganap sa mga mid-class na NVMe drive (sa una nitong nangungunang segment). At kahit na pagkatapos - dahil sa mga operasyon na sa pangkalahatan ay hindi karaniwan sa pagsasanay. Bakit ipinatupad ang partikular na opsyong ito sa kasong ito? Una, nagkaroon ng ganitong pagkakataon, ngunit ang reserba ay hindi sapat para sa bulsa. Pangalawa, may mga drive na mas mabilis kaysa sa aming pagsubok na Patriot Hellfire. Pangatlo, may mga lugar ng aktibidad kung saan ang mga "atypical" load para sa isang desktop system ay medyo pangkaraniwan. Bukod dito, ito ay kung saan ang pagganap ng sistema ng pag-iimbak ng data, o hindi bababa sa kakayahang gumawa ng bahagi nito nang napakabilis, ay pinaka-kritikal. Ngunit hindi ito nalalapat sa mga ordinaryong personal na computer.

Sa kanila, tulad ng nakikita natin, ang paggamit ng PCIe 2.0 x2 (o, nang naaayon, PCIe 3.0 x1) ay hindi humahantong sa isang dramatikong pagbaba sa pagganap - sa pamamagitan lamang ng 15-20%. At ito sa kabila ng katotohanan na sa kasong ito ay limitado namin ang mga potensyal na kakayahan ng controller ng apat na beses! Para sa maraming mga operasyon, ang throughput na ito ay sapat. Ang isang linya ng PCIe 2.0 ay hindi na sapat, kaya makatuwiran para sa mga controller na suportahan ang PCIe 3.0 - at dahil sa matinding kakulangan ng mga linya sa isang modernong sistema, gagana ito nang maayos. Bilang karagdagan, ang lapad ng x4 ay kapaki-pakinabang - kahit na walang suporta para sa mga modernong bersyon ng PCIe sa system, papayagan ka pa rin nitong magtrabaho sa normal na bilis (kahit na mas mabagal kaysa sa potensyal nito) kung mayroong higit pa o mas kaunting malawak na puwang. .

Sa prinsipyo, ang isang malaking bilang ng mga senaryo kung saan ang flash memory mismo ay naging bottleneck (oo, posible ito at likas hindi lamang sa mekanika) ay humahantong sa katotohanan na ang apat na linya ng ikatlong bersyon ng PCIe sa ito humigit-kumulang 3.5 beses na mas mabilis ang drive kaysa sa una - ang theoretical throughput ng dalawang kaso na ito ay naiiba ng 16 na beses. Na, siyempre, ay hindi nangangahulugan na kailangan mong magmadali upang makabisado ang napakabagal na mga interface - ang kanilang oras ay nawala magpakailanman. Kaya lang marami sa mga posibilidad ng mabilis na mga interface ay maisasakatuparan lamang sa hinaharap. O sa mga kondisyon na ang isang ordinaryong gumagamit ng isang ordinaryong computer ay hindi kailanman direktang makakatagpo sa kanyang buhay (maliban sa mga gustong ihambing ang kanilang sarili sa kung sino ang nakakaalam kung ano). Actually, yun lang.

Sa artikulong ito ay pag-uusapan natin ang mga dahilan para sa tagumpay ng PCI bus at ilarawan ang mataas na pagganap na teknolohiya na pinapalitan ito - ang PCI Express bus. Titingnan din natin ang kasaysayan ng pag-unlad, mga antas ng hardware at software ng PCI Express bus, mga tampok ng pagpapatupad nito at ilista ang mga pakinabang nito.

Noong unang bahagi ng 1990s. lumilitaw, ang mga teknikal na katangian nito ay higit na nalampasan ang lahat ng mga bus na umiiral hanggang sa puntong iyon, tulad ng ISA, EISA, MCA at VL-bus. Sa oras na iyon, ang PCI (Peripheral Component Interconnect) bus, na tumatakbo sa 33 MHz, ay angkop para sa karamihan ng mga peripheral na aparato. Ngunit ngayon ang sitwasyon ay nagbago sa maraming paraan. Una sa lahat, ang bilis ng orasan ng processor at memorya ay tumaas nang malaki. Halimbawa, ang mga bilis ng orasan ng processor ay tumaas mula 33 MHz hanggang sa ilang GHz, habang ang dalas ng pagpapatakbo ng PCI ay tumaas sa 66 MHz lamang. Ang paglitaw ng mga teknolohiya tulad ng Gigabit Ethernet at IEEE 1394B ay nagbanta na ang buong bandwidth ng PCI bus ay maaaring gastusin sa pagseserbisyo sa isang device batay sa mga teknolohiyang ito.

Kasabay nito, ang arkitektura ng PCI ay may isang bilang ng mga pakinabang kumpara sa mga nauna nito, kaya hindi makatwiran na ganap na baguhin ito. Una sa lahat, hindi ito nakadepende sa uri ng processor, sinusuportahan nito ang buffer isolation, bus mastering technology (bus capture) at PnP technology nang buo. Ang buffer isolation ay nangangahulugan na ang PCI bus ay gumagana nang hiwalay sa panloob na processor bus, na nagpapahintulot sa processor bus na gumana nang hiwalay sa bilis at load ng system bus. Salamat sa teknolohiya ng pagkuha ng bus, maaaring direktang kontrolin ng mga peripheral device ang proseso ng paglilipat ng data sa bus, sa halip na maghintay ng tulong mula sa central processor, na makakaapekto sa performance ng system. Sa wakas, ang suporta sa Plug and Play ay nagbibigay-daan sa iyo na awtomatikong mag-set up at mag-configure ng mga device gamit ito at maiwasan ang pag-aalinlangan sa mga jumper at switch, na medyo sumira sa buhay ng mga may-ari ng ISA device.

Sa kabila ng walang alinlangan na tagumpay ng PCI, kasalukuyan itong nahaharap sa mga seryosong problema. Kabilang dito ang limitadong bandwidth, kakulangan ng real-time na mga kakayahan sa paglilipat ng data, at kakulangan ng suporta para sa mga susunod na henerasyong teknolohiya ng network.

Mga paghahambing na katangian ng iba't ibang pamantayan ng PCI

Dapat itong isaalang-alang na ang aktwal na throughput ay maaaring mas mababa kaysa sa teoretikal dahil sa prinsipyo ng pagpapatakbo ng protocol at ang mga katangian ng topology ng bus. Bilang karagdagan, ang kabuuang bandwidth ay ipinamamahagi sa lahat ng mga device na nakakonekta dito, kaya kung mas maraming device sa bus, mas mababa ang bandwidth na nakukuha ng bawat isa sa kanila.

Ang mga pagpapabuti sa pamantayan tulad ng PCI-X at AGP ay idinisenyo upang alisin ang pangunahing disbentaha nito - mababang bilis ng orasan. Gayunpaman, ang pagtaas sa dalas ng orasan sa mga pagpapatupad na ito ay nangangailangan ng pagbaba sa epektibong haba ng bus at ang bilang ng mga konektor.

Ang bagong henerasyon ng bus, ang PCI Express (o PCI-E para sa maikling salita), ay unang ipinakilala noong 2004 at idinisenyo upang malutas ang lahat ng mga problemang hinarap ng hinalinhan nito. Ngayon, karamihan sa mga bagong computer ay nilagyan ng PCI Express bus. Bagama't mayroon din silang karaniwang mga puwang ng PCI, ang oras ay hindi malayo kung kailan ang bus ay magiging isang bagay ng kasaysayan.

Arkitektura ng PCI Express

Ang arkitektura ng bus ay may multi-level na istraktura, tulad ng ipinapakita sa figure.

Sinusuportahan ng bus ang modelo ng pag-address ng PCI, na nagpapahintulot sa lahat ng kasalukuyang kasalukuyang driver at application na gumana dito. Bilang karagdagan, ang PCI Express bus ay gumagamit ng karaniwang mekanismo ng PnP na ibinigay ng nakaraang pamantayan.

Isaalang-alang natin ang layunin ng iba't ibang antas ng organisasyon ng PCI-E. Sa antas ng software ng bus, nabubuo ang mga kahilingan sa pagbabasa/pagsusulat, na ipinapadala sa antas ng transportasyon gamit ang isang espesyal na packet protocol. Ang layer ng data ay responsable para sa pagwawasto ng error sa coding at tinitiyak ang integridad ng data. Ang pangunahing layer ng hardware ay binubuo ng isang dual simplex channel na binubuo ng isang transmit at receive na pares, na kung saan ay tinatawag na isang linya. Ang kabuuang bilis ng bus na 2.5 Gb/s ay nangangahulugan na ang throughput para sa bawat PCI Express lane ay 250 MB/s sa bawat direksyon. Kung isasaalang-alang namin ang mga pagkalugi dahil sa overhead ng protocol, mga 200 MB/s ang magagamit para sa bawat device. Ang throughput na ito ay 2-4 na beses na mas mataas kaysa sa kung ano ang available para sa mga PCI device. At, hindi tulad ng PCI, kung ang bandwidth ay ibinahagi sa lahat ng mga device, pagkatapos ay mapupunta ito sa bawat device nang buo.

Ngayon, mayroong ilang mga bersyon ng pamantayan ng PCI Express, na naiiba sa kanilang throughput.

PCI Express x16 bus bandwidth para sa iba't ibang bersyon ng PCI-E, Gb/s:

  • 32/64
  • 64/128
  • 128/256

Mga format ng bus ng PCI-E

Sa ngayon, magagamit ang iba't ibang mga opsyon para sa mga format ng PCI Express, depende sa layunin ng platform - desktop computer, laptop o server. Ang mga server na nangangailangan ng mas maraming bandwidth ay may mas maraming PCI-E slot, at ang mga slot na ito ay may mas maraming trunks. Sa kaibahan, ang mga laptop ay maaaring magkaroon lamang ng isang lane para sa mga medium-speed na device.

Video card na may interface ng PCI Express x16.

Ang mga PCI Express expansion card ay halos kapareho sa mga PCI card, ngunit ang mga PCI-E slot ay tumaas ang pagkakahawak upang matiyak na ang card ay hindi makaalis sa slot dahil sa vibration o sa panahon ng pagpapadala. Mayroong ilang mga form factor ng PCI Express slots, ang laki nito ay depende sa bilang ng mga lane na ginamit. Halimbawa, ang isang bus na may 16 na linya ay itinalagang PCI Express x16. Bagama't ang kabuuang bilang ng mga lane ay maaaring hanggang 32, sa pagsasanay karamihan sa mga motherboard ay nilagyan na ngayon ng PCI Express x16 bus.

Ang mga card na may mas maliliit na form factor ay maaaring isaksak sa mga slot para sa mas malalaking card nang hindi nakompromiso ang performance. Halimbawa, ang isang PCI Express x1 card ay maaaring ikonekta sa isang PCI Express x16 slot. Tulad ng PCI bus, maaari kang gumamit ng PCI Express extender upang ikonekta ang mga device kung kinakailangan.

Hitsura ng iba't ibang uri ng mga konektor sa motherboard. Mula sa itaas hanggang sa ibaba: PCI-X slot, PCI Express x8 slot, PCI slot, PCI Express x16 slot.

Express Card

Ang Express Card standard ay nag-aalok ng napakasimpleng paraan upang magdagdag ng kagamitan sa isang system. Ang target na merkado para sa mga module ng Express Card ay mga laptop at maliliit na PC. Hindi tulad ng mga tradisyonal na desktop expansion card, ang Express card ay maaaring ikonekta sa system anumang oras habang tumatakbo ang computer.

Ang isang sikat na uri ng Express Card ay ang PCI Express Mini Card, na idinisenyo bilang kapalit ng mga Mini PCI form factor card. Ang isang card na ginawa sa format na ito ay sumusuporta sa parehong PCI Express at USB 2.0. Ang mga sukat ng PCI Express Mini Card ay 30x56 mm. Ang PCI Express Mini Card ay maaaring kumonekta sa PCI Express x1.

Mga benepisyo ng PCI-E

Ang teknolohiya ng PCI Express ay nagbibigay ng mga pakinabang sa PCI sa sumusunod na limang lugar:

  1. Mas mataas na performance. Sa isang lane lang, ang PCI Express ay may dalawang beses sa throughput ng PCI. Sa kasong ito, ang throughput ay tumataas sa proporsyon sa bilang ng mga linya sa bus, ang maximum na bilang nito ay maaaring umabot sa 32. Ang karagdagang kalamangan ay ang impormasyon sa bus ay maaaring maipadala nang sabay-sabay sa parehong direksyon.
  2. Pasimplehin ang I/O. Sinasamantala ng PCI Express ang mga bus tulad ng AGP at PCI-X at may hindi gaanong kumplikadong arkitektura at comparative na kadalian ng pagpapatupad.
  3. Multi-level na arkitektura. Nag-aalok ang PCI Express ng isang arkitektura na maaaring umangkop sa mga bagong teknolohiya nang hindi nangangailangan ng makabuluhang pag-upgrade ng software.
  4. Mga bagong henerasyong teknolohiya ng input/output. Binibigyang-daan ng PCI Express ang mga bagong kakayahan sa pagkuha ng data na may sabay-sabay na teknolohiya sa paglilipat ng data na nagsisigurong natatanggap ang impormasyon sa isang napapanahong paraan.
  5. Dali ng paggamit. Pinapadali ng PCI-E para sa user na i-upgrade at palawakin ang system. Ang mga karagdagang format ng Express card, tulad ng ExpressCard, ay lubos na nagpapataas ng kakayahang magdagdag ng mga high-speed peripheral sa mga server at laptop.

Konklusyon

Ang PCI Express ay isang teknolohiya ng bus para sa pagkonekta ng mga peripheral device, na pinalitan ang mga teknolohiya tulad ng ISA, AGP at PCI. Ang paggamit nito ay makabuluhang nagpapataas ng pagganap ng computer, pati na rin ang kakayahan ng user na palawakin at i-update ang system.