Karh09 16

16. PCI магистрала.


страницата се нуждае от дописване/преглеждане


Характеристики

PCI магистралата е високо производителна 32 или 64 битова магистрала с мултиплексирани адресни и информационни линии. Магистралата е замислена като свързващ механизъм мъжду контролери на периферни устройства и процесор/паметни системи.
През началото на деведесетте на миналия век Intel представя Peripheral Component Interconnect (PCI) шината. PCI представляна хибрид между добрите страни на ISA и VL-Bus. PCI осигурява директен достъп до паметта на устройствата, които са закачени за нея, но се свързва с процесора през FSB шината използвайки отделен чип.

FSB свързва процесора с паметта и останалите устройства. Обичайните честоти на които работи в днешни дни са от 400MHz до 800MHz.

Друга магистрала свързва процесора с L2 кеша. Тя работи на честотата на процесора. Този тип магистрала доста се разви през последните години. В началото тя представляваше жица, която свързваше процесора с чип памет, който беше доста скъп. Днес L2 кешът е интегриран към процесора, което увеличава производителността и намалява цената. Тъй като L2 cache-ът се намира върху процесора, тази магистрала всъщност вече дори не е магистрала

PCI може да свързва до 5 устройства външно или 10 върху платката. Също така е възможно да има повече от една PCI шина на компютър, макар това да се среща рядко. PCI чипът контролира скоростта на шината.

untitled53.JPG
PCI картите използват 47 пина

PCI отвачало рабоше на 33MHz @ 32bits. Следващите версии на стандарта качват честотата от 33 MHz на 66 MHz и дължината на думата от 32 на 64 бита. Понастоящем, PCI-X осигурява 64-bit трансфер при скорост 133 MHz и 1-GBps!

PCI картите използват 47 пина (49 пина за master карти, които могат да контролират шината без намесата на процесора). PCI може да работи с толкова малко пинове, заради хардуерното мултиплексиране, което ще рече, че устройството може да изпраща повече от един сигнал по даден пин. В началото PCI шините са специфицирани да работят смао на 3.3V или само на 5V. Днес PCI работи с устройства на 3.3V и 5V.
untitled54.JPG

Въпреки, че Intel пуска PCI стандарта през 1991 година, той не печели популярност до излизането на Windows 95. Причината за това е, че Windows 95 поддържа функция наречена Plug and Play. Plug and Play (PnP) означава, че можете да включите устройство към системата си и то автоматично да бъде разпознато и конфигурирано. Intel прави своето отроче PCI PnP съвестимо.

PCI-X (PCI eXtended)(Да не се бърка с PCI Express (PCI-E or PCIe), друга магистрална архитектура) е компютърнза шина и стандарт за увеличаване възможностите на картата на която е последовател (32-bit PCI Local Bus). Тя е два пъти по широка версия на PCI с около четири пъти по бърз тактов сигнал, но от друга страна подобна по отношение на електрическата имплементация и използва същия протокол. Вече е заменена в модерния дизайн на архитектури от PCI Express, която има различен логически дизайн.
untitled55.JPG
Интерфейса на магистралата PCI Local Bus изисква минимум от 47 пина за target устройство и 49 за master устройство за успешното предаване на информация между тях. На фигурата са показани пиновете разделени по функционални групи със задължителните пинове от ляво и не задължителните от дясно.
untitled56.JPG
На картинката се предвижда списъкът от пинове да е комбинация от задължителните за target и master устройство.
Описание на част от най-важните линии в 32-битова реализация (скобите обозначават броя линии от страната на устройството):

  • CLK(1) (clock) - по нея се задава основният синхронизиращ сигнал;
  • AD(32) (address/data) - по тези линии се движат данните и адресите. Линиите са мултиплексирани - ползват се и за адреси, и за данни;
  • PAR(1) (parity) - проверка по четност на AD - xоr на всички битове от AD + PAR дава винаги 0 (или 1 - зависи от реализацията);
  • C/BE(4) (command / byte enable) - линия за команди. Мултиплексирана - по време на предаването на адреси по линиите AD, тук се предават команди; по време на предаване на данни по AD, тук се подава кои байтове, от подаваните общо 4 по AD, трябва да бъдат възприети: например, C/BE0 - младши байт, C/BE3 - старши байт. Описание на командите, образувани от 4те линии C/BE, по време на етапа на подаване на команда:

1. 0000 Interrupt Acknowledge
2. 0001 Special Cycle
3. 0010 I/O Read
4. 0011 I/O Write
5. 0100 Reserved
6. 0101 Reserved
7. 0110 Memory Read
8. 0111 Memory Write
9. 1000 Reserved
10. 1001 Reserved
11. 1010 Configuration Read
12. 1011 Configuration Write
13. 1100 Memory Read Multiple
14. 1101 Dual Address Cycle
15. 1110 Memory Read Line
16. 1111 Memory Write and Invalidate

  • FRAME(1) - 1 линия. Чрез този канал се определя кога точно започва и кога точно завършва дадена транзакция - в момента на започването нивото на токовия сигнал по FRAME става "ниско", в края на транзакцията FRAME става "високо". По-специално, когато сигналът премине от "високо" към "ниско", започва подаването на адреса по AD - началото на транзакцията; когато сигналът премине от "ниско" към "високо", транзакцията приключва.
  • IRDY(1) (initiator ready) - задаващо устройство е готово да започне транзакция с подчиненото устройство (изпраща се само от задаващото устройство)
  • IDSEL(1) (initialization device select) - всяко устройство, включено към PCI шината, има собствена IDSEL линия към PCI моста.
    • Накратко, тази линия се използва при първоначална настройка на включено в магистралата устройство, както и при read/write транзакзия, за да потвърди, че устройството е точно това, което се изисква, и че е включено в магистралата и готово за работа.
    • Надълго (и ненужно за курса) - тя се използва за "избор на чипа" по време на PCI транзакция, в контекста на PCI конфигурационно пространство. Всяко PCI устройство има собствено такова пространство, където се пази информации за типа устройство, марката и производителя, както и един куп други регистри, ID и други неразбираеми за мен неща. Тъй като PCI шината има възможност динамично (т.е по време на работа на компютъра) да се добавят нови устройства и тези устройства да бъдат автоматично разпознати (без джъмпери и други подобни), тази линия се използва за адресиране на устройството, карайки го да "издаде" информация от конфигурационното пространство, след което да му се зададе уникален 8-битов адрес, и да се настроят разни други неща. При четене/писане, чрез тази пътека механизмът за комуникация индивидуално адресира всяко PCI устройство. PCI устройство се избира за транзакция, само ако IDSEL е "високо", старшите два бита във AD са 00, и командата във C/BE e Configuration Read (1010) или configuration Write (1011).
  • DEVSEL(1) (device selected) - сигнал от подчинено устройство към задаващото; означава, че адресираното устройство е разпознато;
  • TRDY(1) (translation ready) - подчиненото устройство е готово да изпълни транзакцията;
  • STOP(1) - подчиненото устройство иска спиране на транзакцията;
  • PERR(1) (parity error) - грешка по четност (тоест, когато PAR, събран със AD, не дава, колкото трябва);
  • SERR(1) - грешки по четност или системна грешка;
  • REQ(1) (request) - индивидуална линия за заявка за транзакция - използва се от задаващото устройство;
  • GNT(1) (granted) - индивидуална линия за удовлетворяване на заявката (поискана чрез REQ) - използва се от арбитъра;
  • RST(1) (reset) - Reset сигнал; например, при натискане на спасителния бутон RESET.

Транзакция за четене.

untitled57.JPG
Figure 3-5: стр 47 от спецификация 2.2 на PCI
По време на фронта на 2-я такт всичко е стабилно. IRDY# чака DEVSEL#. IRDY става активен(пада надолу) когато усети, че има DEVSEL. По време на втория такт нищо не става, понеже TRDY# го няма. Мастера ще ги прочете при 4. На 6 минава втора шина данни, след което мастера докато ги обработва прави пасивен сигнал, и таргета е извадил трета шина и понеже няма IRDY ги държи. Фрейма е свален още на 7, но DEVSEL още не е завършило работа. Има една адресация и три фази данни.

Tранзакция за запис.

untitled58.JPG
Figure 3-6:стр 48 от същата спецификация
По време на 3 фронт минават данните и влизат в таргета, веднага мастера засича, че TRDY е бил активен. Мастера не чака потвърждение от таргета, че е получил данните. За мастера щом е имало TRDY значи таргета е длъжен да ги е приел тези данни, така че при следащото падане се слагат нови данни(на 4 минава втора серия данни). за три такта TRDY е офф. През това време инициатора държи данните понеже вижда, че TRDY е активен.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License