Шина (компютри)

от Уикипедия, свободната енциклопедия
(пренасочване от Шина за данни)
Вижте пояснителната страница за други значения на Шина.

Шина (на английски: computer bus) в компютърната техника е термин, използван в смисъл на компютърна шина или в смисъл на мрежа с топология тип „шина“. Компютърна шина и мрежа с топология тип „шина“ са две съвсем различни неща. Шината, в смисъл на компютърна шина е основна част от архитектурата на хардуера на компютъра. Шината, в смисъл на топология на мрежа е част от архитектурата на мрежата. Основно свойство на шината, и в двата смисъла, е че шината е обща среда (common media) за обмен на данни. Общата комуникационна среда изисква предавателят да поддържа трето, високоимпедансно състояние (изключено състояние) и приемника да разпознава високоимпедансно състояние т.е. липса на сигнал. Достъпът до общата среда е мултиплексиран по време (time division multiplexed).

Мултиплексирането на достъпа при мрежите с топология тип „шина“ се базира на откриване на конфликти (дали две устройства не предават едновременно). При откриване на конфликт устройството, включено в мрежата с шинна топология, повтаря опита за предаване след произволен период от време. Пример за мрежа с шинна топология е ранният Ethernet,[1] където шината е коаксиален кабел и управлението на конфликтите е част от протокола CSMA/CD (Carrier Sense Multiple Access/Collision Detection).[2] За сравнение, за управление на конфликтите в радио (wireless) мрежите се използва протокола CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance). С цел да се намалят конфликтите в мрежата, през 1987 г. DEC въведе топология тип разкъсана звезда (tiered star) в Ethernet мрежите, като част от Phase IV и PHASE IV+ от разработката на DECnet, и оттогава топология тип „шина“ не се използва.

Мултиплексирането на достъпа по време при компютърните шини се базира на арбитраж на приоритетите в съответствие с определена дисциплина (ротация, фиксирани приоритети и т.н.). За прототип на компютърната шина може да се приеме daisy-chain връзката на селекторните канали в големите машини на IBM. Първата универсална компютърна шина Unibus е изобретена от Alan Kotok и Gordon Bell и е използвана в миникомпютрите PDP-11 на DEC.[3]

Дефиниции[редактиране | редактиране на кода]

IEEE (на английски: Institute of Electrical and Electronics Engineers) дефинира компютърни термини в IEEE Std. 610.10 от 1994 г. Въпреки че това е стар документ, той е използван като начална точка.

Интерфейс ([4] – 3.1113) е:

1. обща граница между два обекта като устройства, системи или мрежи през която се обменя информация;

2. хардуер или софтуер, който осигурява точка за комуникация между физически обекти – процесори, компютри, хора и т.н.

В този смисъл интерфейсът може да бъде точка на свързване към компютърна шина (bus) или компютърна връзка (link), изображение (мониторът е човешки интерфейс), глас, музика и т.н.

В термините на IEEE компютърна шина може да се дефинира по следния начин.

Компютърна шина ([4] – 3.236) е многосигнална паралелна или паралелно-последователна (QPI, Hypertransport, PCI-Express) комуникационна система между ресурсите в една компютърна архитектура, която се състои от:

  • захранване (power);
  • адресна шина (address bus) – шина, използвана за пренасяне на адрес от процесора до паметта или периферното устройство ([4] – 3.34);
  • информационна шина (data bus)– шина за обмен на информация към и от процесорни устройства (processing units) или устройства за съхранение на данни (storage devices) ([4] – 3.484); и
  • управляваща шина (control bus) – шина за управление на системните операции ([4] – 3.420).

В тази дефиниция липсват няколко много важни свойства.

  • Адресът, генериран на адресната шина, е елемент от множество, върху елементите на което са дефинирани релациите за алгебрично пространство в термините на полетата на Галоа. С други думи, върху адресите е наложена релация за наредба, изпълняват се операции за събиране и умножение и е дефинирана функция за цикличност (address space wrap-around), т.е. адресът е елемент на пространство върху двоично поле на Галоа GF(2).[5] Това пространство е наречено системно адресно пространство (system address space) и операциите върху адресите позволяват въвеждането на различни адресни режими и въвеждането на виртуална адресация.
  • Това адресно пространство осигурява произволен достъп, т.е. достъп до информация разположена на произволно място в адресното пространство.
  • Комуникацията между устройствата е от тип управляващо устройства/подчинено устройство (master-slave). Подчиненото устройство е памет или входно-изходно устройство, което се управлява от управляващо устройство.([4] – 3.2058) Управляващото устройство управлява операцията за достъп до ресурсите на подчиненото устройство през компютърната шина. С други думи управляващото устройство знае как работи подчиненото устройство, т.е. за управляващото устройство, подчиненото устройство не е черна кутия.
  • Компютърната шина дефинира област с обща тактова честота (single clock domain). Това свойство е много важно, тъй като заедно с разредността на информационната шина и броя на тактовете за един цикъл на достъп определя пропускателната способност на компютърната шина и производителността на компютърната система като цяло. Нека да означим с f честотата на шината[MHz], с s – разредността на шината [брой байтове] и с n c броя на тактовете за един цикъл на достъп [без дименсия]. Тогава пропускателната способност на шината (bus bandwidth) e B = (f/nc).s

Ако тези свойства се добавят, дефиницията на компютърната шина е:

Компютърната шина е многосигнална паралелна или паралелно-последователна (QPI, Hypertransport, PCI-Express) комуникационна система между ресурсите в една компютърна архитектура, която се състои от:

  • захранване (power);
  • адресна шина (address bus) – шина използвана за пренасяне на адрес от процесора до паметта или периферното устройство ([4] – 3.35);
  • информационна шина (data bus)– шина за обмен на информация към и от процесорни устройства (processing units) или устройства за съхранение на данни (storage devices)([4] – 3.484); и
  • управляваща шина (control bus) – шина за управление на системните операции.([4] – 3.420).

дефинира ограничена физическа област със следните свойства:

  • обща тактова честота (clock domain) – това свойство важи за синхронните шини, но не и за асинхронните шини;
  • общо адресно пространство (common address space) с произволен достъп (random access), дефинирано в пълния математически смисъл на термина „пространство“ върху полета на Галоа;

и позволява изпълнение на операции за обмен на информационни единици от тип master-slave (управляващо устройство/подчинено устройство) в съответствие с определен протокол (хардуер и софтуер), при което управляващото устройство „знае“ как работи подчиненото устройство и има пълен контрол върху неговите ресурси (регистри, буфери, клетки от паметта и т.н.).

Компютърна връзка (link или path в термините на IBM 360) е многосигнална паралелна (MassBuss, IDE, ATA, AGP), паралелно-последователна (SATA, eSCSI) или последователна (Ethernet, Taken Ring, USB) комуникационна система между устройствата в една компютърна система от тип точка-до-точка (point-to-point, ([4] – 3.1196), която позволява обмен на символи между предавател и приемник в съответствие с определен протокол, като предавателят и приемникът са черни кутии един за друг т.е предавателят няма представа за архитектурата на приемника и приемникът няма представа за архитектурата на предавателя.

Накратко в компютърната връзка предавателят „не знае“ нищо за приемника (в USB, освен типа и идентификационния адрес от 0 – 127), няма достъп до неговите ресурси и не управлява приемника. Адресът, част от пакета, е елемент от просто множество на адресите, което не е алгебрично пространство, т.е. адресът е идентификационен символ.

Защо тогава USB е наречен „bus“? Към 1995 г. унифицирането на компютърната шина е приключено и PCI е приет за стандарт, но всяко периферно устройство се свързва към отделен порт – отделни портове за мишка, клавиатура, принтер, RS232, ISDN (модем), SCSI (външни дискове) и т.н. Идеята на USB е всички устройства да бъдат вързани към един унифициран порт, така както контролерите в компютърната система са свързани към една шина. Унифицирането намалява цената на проектирането, на производството и на поддръжката. По тази аналогия универсалната последователна връзка е наречена шина, въпреки че е топология „разкъсана звезда“ (tree or tiered star topology[6] – стр. 16) с предназначени връзки (dedicated lines) тип точка-до-точка (point-to-point). Топология „разкъсана звезда“ (топологиите „разкъсана звезда“ и „дърво“ си приличат) не е функционално еквивалентна на топология „шина“.

В мрежите с шинна топология няма станция, която управлява обмена, а всички станции се състезават за достъп до шината и която изпревари – предава, която закъснее – чака. Самата шина е област на конфликт. В мрежите с топология „звезда“ или „разкъсана звезда“ връзките не са „обща среда“, а предназначени връзки (dedicated lines) и целият трафик се управлява от централната станция.

При мрежите с топология „звезда“ централната станция управлява обмена между периферните станции, няма състезания за достъп, няма конфликти. Все пак, области на конфликти съществуват в портовете на мрежовите устройства (hub, switch, router) и конфликтите се разрешават с комуникационни опашки. Опашките въвеждат закъснения на пакетите в мрежата, но те подлежат на управление с въвеждане на приоритети на пакетите.

Защо след като USB не е компютърна шина([6] – стр. 16, Figure 4 – 1), PCI-Express е компютърна шина([7] – стр. 39, Figure 1 – 2) и при това, по топология си приличат? Защото PCI-Express е стробирано състояние на PCI шината([7] – стр.43, Figure 1 – 3) – адрес, данни и управление – превърнато в последователен вид, пакетирано, кодирано и изпратено по последователна линия (x1) или паралелно-последователна линия (x4, x8, x12, x16), като запазва всички свойства на шината, описани по дефиниция (адресно пространство, управление на ресурсите).[7] Всъщност, PCI-Express позволява да се увеличи скоростта, дължината и функционалните възможности (повече устройства) на PCI шината. Нещо повече, PCI-Express предава дори информация за управление на разредността на шината при конверсия в PCI ([7] – стр.67 – 68, Figure 2 – 11), във версия 2.1 се дефинират нови операции за информационен обмен (мултикаст).([7] – стр.633)

Паралелни шини (Parallel buses)[редактиране | редактиране на кода]

Паралелните шини управляват обмена на информация в паралелна форма, ограничена от разредността на системата – системният адрес се генерира в паралелно върху адресната шина, информацията се обменя паралелно върху информационната шина и част от управлението се генерира в паралелна форма (например, типа на операцията, вектора на прекъсване).

Двупосочни шини (Bidirectional buses)[редактиране | редактиране на кода]

При двупосочните шини една и съща информационна шина (data bus) е обща среда, която се използва за запис във или четене от подчинените устройства. Този начин на функциониране изисква трето, високоимпедансно състояние. Когато едно устройство е в трето състояние то е изключено. При операция запис в избрано подчинено устройство (slave device) всички останали управляващи устройства, които нямат достъп до шината, поддържат своите изходи към информационната шина в изключено състояние (трето състояние). При операция четене от избрано подчинено устройство всички останали подчинено устройства, поддържат своите изходи към информационната шина в изключено състояние.

Основно свойство на двупосочните шини е, че сигнала се разпространява (broadcast) до всички устройства свързани към шината (шината е обща среда) т.е. физически, двупосочните шини позволяват точка към много точки point-to-multipoint връзка. Това физическо свойство в двупосочните шини не се използва, защото операциите изпълняват достъп до ресурс, разположен на един произволен адрес (една произволна „точка“ от адресното пространство) т.е. операциите изпълняват информационен обмен тип точка-до-точка (point-to-point).

Асинхронни шини (Asynchronous buses)[редактиране | редактиране на кода]

Основна времедиаграма на асинхронна шина

Асинхронните шини свързват различни честотни области, всички устройства свързани към шината представляват отделни, несинхронизирани честотни области, които работят на независима тактова честота. Асинхронните шини нямат сигнал за тактова честота (CLK) в списъка на сигналите и синхронизират отделните честотни области чрез протоколи тип заявка/потвърждение (Request/Acknowledge). Управляващото устройство генерира заявка да синхронизация (SYNCH Request), а подчиненото устройство отговаря с потвърждение за синхронизация (SYNCH Acknowledge). Примери за асинхронни шини са Unibus[8] (1970 г.), Q-bus[9] (1975 г.) и Futurebus[10] (1993 г.).

В средата на 90-те години, асинхронните принципи за комуникация бяха приложени и към микропроцесорните системи и беше създаден първия асинхронен микропроцесор AMULET, проектиран от ARM и произведен от VLSI.[11] Вътрешната шина MARBLE Bus на микропроцесора е 32-разредна, асинхронна.[12]

Асинхронните шини не налагат временни ограничения и позволяват на всеки два модула включени към шината да адаптират скоростите си един към друг. Това предполага, че модулите генерират свои независими сигнали за заявка (request) и потвърждение (acknowledge), което усложнява временния модел на асинхронните шини.[13] При проектиране, временният анализ на асинхронните шини изисква статичен и динамичен временен анализ. Механизмът заявка/потвърждение (request/acknowledge)се нарича handshake.

Синхронни шини (Synchronous Buses)[редактиране | редактиране на кода]

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

Често в техническата литература може да се срещне твърдението, че в синхронните шини няма handshake механизъм (механизмът заявка/потвърждение). Това не е вярно. При синхронните шини също се използват handshake механизми, синхронизирани по фронт на тактовата честота. Примери са арбитрирането на шината (BRQ/GNT), принципът на работа на директния достъп (HRQ/HOLDA, DRQ/DACK), принципите на обработка на прекъсванията (INT/INTA). В някои шини, например VMEbus, достъпът до шината завършва с потвърждение (ACK). Вярно е обаче, че синхронните шини не използват handshake механизъм за самото четене или запис като събитие (event), защото шината е синхронизирана.

Многофронтови шини (Multi-edge buses)[редактиране | редактиране на кода]

Основна времедиаграма на многофронтова шина

При многофронтовите (multiedge) шини стобирането на данните се изпълнява спрямо един от фронтовете на управляващ сигнал. Например, в Multibus паметта възприема данните при положителен фронт на сигнала за запис в паметта (nMEMW), а входно-изходните устройства възприемат данните при положителен фронт на сигнала за входно-изходен запис (nIOW). Тези управляващи сигнали да изведени спрямо фронт на тактовата честота. Примери за многофронтови (multi-edge) шини са Multibus-I,[14] VME,[15] ISA.[16]

Под наименованието ISA има две шини – 8-разредната шина на персоналните компютри IBM PC и IBM PC/XT[17] и 16-разредното ѝ разширение на персоналния компютър IBM PC/AT.[18] Много често в техническата литература се дискутира ISA шината като 16-разредна шина, но всъщност тя е 8-разредна с 16-разредно разширение. Формално, ISA шината не е специфицирана, но лесно може да се види, че функционално е съкратена версия на Multibus-I тъй като принципите на функциониране на ISA шината се основават на принципите на функциониране на интегралните схеми на Intel.

Много често многофронтовите синхронни шини се бъркат с асинхронните шини, тъй като стробирането е спрямо управляващ сигнал както в асинхронните шини. Разликата е в това, че при многофронтовите синхронни шини всички управляващи сигнали, адрес и данни са генерирани в една честотна област спрямо една тактова честота, докато при асинхронните шини управляващите сигнали, адрес и данни са генерирани в различни честотни области спрямо различни тактови честоти на устройствата. Поради използването на управляваци сигнали за стобиране и в двете системи при симулация се използва динамичен временен амализ, поради което при висока интеграция проектирането е скъпо.

Еднофронтови шини (Single edge buses)[редактиране | редактиране на кода]

Основна времедиаграма на еднофронтова шина

При еднофронтовите (single edge) шини стобирането на данните се изпълнява спрямо един от фротовете на тактовата честота, а управляващия сигнал се използва като разрешение за стробиране. Първата еднофронтова шина е NuBus,[19] дефинирана от MIT r използвана в 32-разредните компютри Macintosh Quadra на Apple Inc. Texas Instruments също използва NuBus в продуктите си, но NuBus не успява да се наложи на пазара на IBM съвмесимите компютри. NuBus е първият опит да се направи процесорно независима шина.

През 1991 г. Intel дефинира 32-разредната еднофронтова шина PCI и през 1992 г. създава консорциума PCI SIG. През 1994 г. Intel стандартизира Multibus-II.[20]

Разцепване на шините (Split buses)[редактиране | редактиране на кода]

Производителността на компютърната шина като ресурс оказва много голямо влияние върху производителността на компютърната система като цяло. Производителността на компютърната шина се определя от нейната пропускателна способност т.е. от броя байтове предадени за единица време.

Има два начина да се увеличи пропускателната способност – увеличаване на разредността на компютърната шина или увеличаване на честотата. Увеличаването на разредността на шината е подход, използван още от началото на изчислителната техника. Като пример, IBM System 360/Models 30, 40 и 50 – IBM 36/30 е 8-разреден, IBM360/40 – 16-разреден и IBM 360/50 – 32-разреден. Увеличаването на честотата на шината изисква съкръщаване на времето на преходните процеси т.е. на фронтовете на сигналите. Времето на фронтовете на сигналите може да бъде намалено или чрез увеличаване на мощността на предавателите (но това изисква повече ток, води до по-висока консумирана мощност, повече отделена топлина и е по-скъпо) или чрез намаляване на амплитудата на сигналите.

Йерархия на шините (bus hierarchies)[редактиране | редактиране на кода]

AMBA-3 йерархия на шините

Увеличаването на мощността на предавателите доведе до поява на нови технологии интегрални схеми с малка интеграция – сериите 74S, 74ALS, 74F, ECL и т.н. Тези нови серии включваха по-мощни и по-бързи буфери и регистри, които позволиха да се увеличи скоростта на шините. Разделението на шините на бързи и бавни позволява да се въведе йерархия на шините. Бързите шини са на по-високо ниво в йерархията, бавните на по-ниско. Целта е да се намали времето за достъп до ресурсите.

Прехода от едно ниво на йерархията към друго се осъществява от устройства наречени bridge (мост). Тези устройства могат да бъдат отделни интегрални схеми (например PCI-to-PCI Express bridge) или ядра за приложение в интегрални схеми по поръчка. Ресурсите, които едно управляващо устройство (master) най-често използва се свързват към неговата локална шина (например, в ARM система това AHB шината). По този начин се локалните управляващи устройста получават относително повече време за достъп до локалните подчинени устройства отколкото отдалечените управляващи устройста.

Еднопосочни шини[редактиране | редактиране на кода]

Намаляването на амплитудата на сигналите води до появата на системи с 3.3 V захранване, 2.5 V захранване, 1.5 V и т.н. При 2.5 V захранване няма място за третото състояние, така че то да бъде ясно разпознато и около 2000 г. фирмите производители на интегрални схеми премахват третото състояние като метод за разрешаване на шината (bus resolving) и въвеждат еднопосочните шини (split bus). Последният чип, в който Xilinx (производител на програмируема логика) използва трето състояние за разрешаване на шина, е Spartan-2.

Опростена блокова диаграма на разцепена шина

При разцепените шини се използват отделни еднопосочни информационни шини за запис във или четене от подчинените устройства. Тези шини намират приложение предимно в „системи на чип“ (SOC – Systems on Chip). Разцепването на информационната шина замества третото състояние като метод за разрешаване на шината с екстензивни мултиплексорни структури. Разцепените шини не са обща среда, а множество от мултиплексирани предназначени връзки (dedicated lines), които образуват двустранни, едностепенни или многостепенни мрежи, наречени interconnect.[21] Примери за разцепени шини с мултиплексорни структури са OPB/PBL, AMBA AHB/AXI, Avalon.

Разцепените еднопосочни шини не са функционално еквивалентни на двупосочните шини. Двупосочните шини са обща среда и физическите връзките между устройствата са от тип точка-до-много точки (point-to-multipoint). Еднопосочните шини са множество от предназначени връзки (dedicated lines) и физическите връзките между устройствата са от тип точка-до-точка (point-to-point). С други думи в еднопосочните шини няма физически broadcast.

Многоканални еднопосочни шини[редактиране | редактиране на кода]

Интерфейсът е точката на свързване на устройството към информационната шина. В някои спецификации интерфейсът се нарича socket. В голямото си мнозинство интерфейсите са едноканални, независимо дали са двупосочни, или еднопосочни.

В AXI-4 интеркънекта на ARM[21] интерфейсът е многоканален. Входната и изходната информационна шина разполагат с отделни адресни шини (адресна шина за четене и адредна шина за запис) и отделно управление. Идеята не е нова – патентована е през 1964 г. от IBM.[22]

Многоканалните еднопосочни шини позволяват пълно припокриване на операциите за достъп, т.е. едновременно изпълнение на операции за четене и запис на различни адреси. Това оптимизира достъпа до двупортови ресурси. Недостатък е почти двойното увеличение на сигналите на шината, което увеличава значително мултиплексорната структура и намалява ефиктивното използване па площта на чипа.

Управление на операциите[редактиране | редактиране на кода]

Управляващите устройства, свързани към шината, използват ресурсите на подчинените устройства, като изпълняват операции за достъп. Операциите за достъп биват операции за обмен и управляващи операции. Операциите за обмен са част от изпълнението на инструкциите – операции за извличане на инструкциите (fetch operations), операции за четене на данни (read data operations), операции за запис на данни или резултат от изчислиния (write data operations). Управляваща операция е ооперацията за потвърждение на прекъсване.

Всяка операция се състои от определен брой цикли на тактовата честота и поради това операциите се наричат още цикли на шината. При изпълнение на операциите управляващото и избраното подчинено устройство трябва да се синхронизират. Синхронизацията може да се изпълни с въвеждане на тактови цикли за изчакване (wait states) или с прекъсване на операциите. В зависимост от начина на синхронизация компютърните шини са шини с цели операции (atomic transaction bus) и шини с прекъснати операции (split transaction bus).

Шини с цели операции (Atomic Transaction Bus)[редактиране | редактиране на кода]

При шините с цели операции, управляващото устройство запазва управлението на шина колкото е необходимо за изпълнение на операцията. Синхроницацията с подчиненото устройство се осъществява само с въвеждане на тактови цикли на изчакване.

Шини с прекъснати трансакции (Split Transaction Bus)[редактиране | редактиране на кода]

Шините с прекъснати тразакции (Split Transaction Bus) са известни в техническата литература още като шини с прекъснати цикли (Split Cycle Bus) и са предложени от Honeywell през 1975 г.[23] Трансакциите са разделени на две фази – адресна фаза и информационна фаза. Тези две фази могат да бъдат припокрити (overlapped) или разцепени (split). Когато фазите са припокрити адресната фаза на следващата операция (трансакцията се състои от една операция) се изпълнява по време на информационната фаза на текущата операция. Припокриването на фазите се използва при достъп до бързи подчинени устройства (slave).

При достъп до бавни подчинени устройства се използва прекъсване на трансакциите т.е. двете фази могат да бъдат разглеждани като отделни операции – операция за заявка на прекъсната трансакция и операция на завършване на прекъсната трансакция. Управляващото устройство изпълнява адресна фаза и генерира заявка за обслужване към подчиненото устройство. Тъй като устройството е бавно, то не потвърждава заявката и управляващото устройство прекъсва трансакцията. Управляващото устройство може да освободи шината на друго управляващо устройство или да започне адресна фаза на нов цикъл на обмен по шината. Когато подчиненото устройство е готово то потвърждава прекъснатата операция. В някои технически решение и управляващото устройство изпълнява информационната фаза, в други – подчиненото и управляващото устройство си разменят ролите. По този начин за времето, в което подчиненото устройство се подготвя за изпълнение на информационна фаза, управляващото устройство може до изпълни друга операция за достъп. Пример за шина с разцепени операции е PCI-X допълнението на PCI шината.[24] PCI шината без PCI-X допълнението не поддържа разцепени трансакции.

В PCI-X допълнението на PCI шината се дефинира трета фаза – атрибутна фаза, която допълнително дифинира трансакцията като номер на трансакцията, идентификатор на управляващото устройство, брой на байтовете и т.н.

Мултиплексиране на шините[редактиране | редактиране на кода]

По време на изпълнение на операция за достъп управляващото устройство генерира адрес и управлява информационната шина. В зависимост от начина на разпространение на адреса и данните има два вида компютърни шини – мултиплескирани и немултиплексирани.

Мултиплексирани шини[редактиране | редактиране на кода]

Мултиплексираните шини разпространяват адреса и данните по една и съща група от проводници на компютърната шина. Предимството на мултиплесксираните шини е, че изисква по-малко проводници. Недостатък е, че при шини с адресна и информационна фаза, фазите не се припокриват и се изпълняват последователно. Типичен пример за мултиплексирана шина без припокриване на фазите е PCI bus. В 32-разреден вариант, PCI шина изисква 47 проводника.

Немултиплексирани шини[редактиране | редактиране на кода]

Немултиплексираните шини разпространяват адреса и данните по различни групи от проводници на компютърната шина. Предимството е, че при шини с адресна и информационна фаза, фазите се припокриват и се изпълняват паралелно. Недастатък на немултиплесксираните шини е значителния брой проводници. Пример за немултиплексирана шина е VME bus на Motorola.

Разположение на информационните единици[редактиране | редактиране на кода]

Голяма/Малка крайна граница

Различните процесори разполагат битовете и байтовете върху шината по различен начин. Това създаде несъвметимост между ЦПУ (централните процесорни устройства) на различните призводители и е известен като „endian“ проблем. Дефинирането на „endian“ определя позициите на младшия и старшия бит и младшия и старшия байт върху шината. Подреждането на битовете и байтовете върху шината определя кой бит или байт се предава първи.[25] Форматите на представяне с голяма и малка нрайна граница могат да се илюстрират за 32-разредна система.

Голяма крайна граница (Big Endian Format)[редактиране | редактиране на кода]

При разположение на битовете на голяма крайна граница най-младшият бит (бит 0) се разполага на позиция 31 в регистрите, а най-старшият бит (бит 31) – на позиция 0. Най-младшият байт (байт 0)се разролага на позиции 31 – 24, а най-старшият байт (байт 3)на позиции 7 – 0. При предаване по последователна линия се предава в 31-ва позиция (най-младшия бит) напред. При приемате от последователна линия се приема от най-старшата позиция (позиция 0) и се премества на ляво. Този начин на представяне на информацията в регистрите е подобен на писане на латиница или кирилица – от ляво надясно. Всички процесори на Motorola и по-късно Freescale поддържат представяне на информацията във формат голяма крайна граница.

Малка крайна граница (Little Endian Format)[редактиране | редактиране на кода]

При разположение на битовете на малка крайна граница най-младшият бит (бит 0) се разполага на позиция 0 в регистрите, а най-старшият бит (бит 31) – на позиция 31. Най-младшият байт (байт 0)се разролага на позиции 7 – 0, а най-старшият байт (байт 3)на позиции 31 – 24. При предаване по последователна линия се предава в 0-ва позиция (най-младшия бит) напред. При приемате от последователна линия се приема от най-старшата позиция (позиция 31) и се премества на дясно. Този начин на представяне на информацията в регистрите е подобен на писане на еврид или на арабски – от дясно наляво. Всички процесори на Intel поддържат представяне на информацията във формат малка крайна граница.

Последователни и паралелно-последователни шини[редактиране | редактиране на кода]

Паралелните шини имат честотни ограничения, които се дължат на съотношението на нивото на шума към нивото на сигнала. Колкото е по-ниско е нивото на сигнала, толкова шината е по-чувствителна на шум. Източници на шум са нестабилността (ripple) на захранвашите релси (power rails) или захранващите плочи (power planes), взаимното електро-магнитно въздействие (crosstalk), отраженията на сигнала (всяка писта от шината е предавателна линия), поляризацията на пистите (източник на шум при високи честоти) и т.н.

През годините са прилагани различни методи за намаляване на влиянието на шума при провишаване на честотата в компютърните системи – въвеждането на многослойните платки и използването на захранващи плочи вместо захранващи релси, използването на защитни писти (свързани към земя) за намаляване на взаимното електро-магнитно въздействие (crosstalk), използване на меандри за изравняване на закъснението на шините, използване на диференциални сигнали, различни конфигурации за терминиране на шините и т.н..

През 1990-те години много фирми производители на мрежово оборудване започнаха да прилагат обединяване на последователни връзки (link aggregation) с цел увеличаване на пропускателната способност на комуникационните магистрали (trunks) и увеличаване на надеждността. Всяка последователна връзка от магистралата (trunk) се нарича лента (lane). През 2000 г. беше стандартизирана първата гигабитова (gigabit) Ethernet компютърна връзка[26] с възможност за обединение на връзки в магистрали. В клауза 43 на стандарта се дефинира обединението на връзките (link aggregation) като метод за изграждане на комуникационна магистрала (trunk). Стандартът позволява до 8 последователни връзки да се обединят и да образуват една магистрала. Магистралата позволява множество пакети да се предават паралелно, като всеки пакет се предава в последователна форма по една последователна лента от магистралата.

Това е прототипа на паралелно-последователните шини. Ррез 2001 г. AMD пуснка паралелно-последователната шина HyperTransport.[27] Разликата от обединените връзки е, че при паралелно-последователните шини пакета, който е състоянието на шината се предава по всички ленти едновременно т.е. пакета се разделя се на части наречени nibbles, разредността на които е равна на броя на лентите. Когато пакета се предава по една лента, частта (nibble) е равна на един бит и шината е посведователна. Когато пакета се предава по няколко ленти едновременно (x2, x4, x8, x12, x16, x32), частта (nibble) е равна на броя на лентите и шината е паралелно-последователна.

PCI-EXpress[редактиране | редактиране на кода]

Логическо съответствие между PCI и PCI-EXpress

PCI-EXpress е паралелно-последователна шина, производна на паралелната шина PCI. Паралелно-последователната шина е транспорно средство за пренасяне на информация, но обработката на информацията в процесора и съхранението на информацията в паметта се извършва в паралелна форма. Следователно, при обмен по паралелно-последователната шина между източник и приемник информацията трябва да се преобразува от паралелна в паралелно-последователната форма при източника и обратно, от паралелно-последователната в паралелна форма при приемника. Това преобразуване може да се изразява в подготовка на пакет или директно проебразуване чрез шинен анализатор. Логическото съответствие между времедиаграмата на паралелната PCI шина[28] и формата на пакета на паралелно-последователната PCI-EXpress шина[29] илюстрира преобразуването на последователността от физически PCI сигнали в последователност от логически полета на PCI-EXpress пакета.

Процесорни паралелно-последователни шини[редактиране | редактиране на кода]

Паралелно-последователната шина PCI Express е предназначена за информационен обмен с периферни устройства. Първоначалната идея е PCI Express да замени AGP шината за комуникация с видео контролера, но впоследствие се налага като шина за дънни панели (backplane bus).

Процесорните паралелно-последователни шини са предназначени за обмен между процесори в мултипроцесорни системи. Процесорните паралелно-последователни шини са HyperTransport на AMD (2001 г.) и QuickPath Interface (QPI) на Intel (2008 г.). Основната разлика е дължината на пакета – PCI Express пакета може да обменя до 4 КВ данни, пакета на HyperTransport – до 64 байта, т.е. един ред на кеш паметта.


Източници[редактиране | редактиране на кода]

  1. DEC Corp., „The Ethernet: A Local Area Network Data Link and Physical Layer Specification“ Version 1.0, 1980, The Blue Book
  2. IEEE, IEEE Standad for Ethernet, IEEE Std. 802.3 – 2012, Section 1, p.4.1.2
  3. Kotok A. Bell C.G., „Digital Computing System", US Pat. No. 3,376,554, Filed Apr. 5, 1965, Granted Apr. 2, 1968
  4. а б в г д е ж з и к IEEE Std. 610.10 – 1994, IEEE Standard Computer Dictionary: A Compilation of IEEE Standard Computer Glossaries[неработеща препратка]
  5. Cosnard M. et al., Data Migrations on the Hypercube, published in „Software for Parallel Computation“ edited by Janusz S. Kowalik and Lucio Grandineti, Springer, 1993
  6. а б „Universal Serial Bus Specification“ Revision 1.1 1998
  7. а б в г д PCI-SIG, PCI-Express Base Specification Revision 2.1, 2009
  8. DEC Inc., „PDP-11 Bus Handbook“, 1979, ftp://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp11/handbooks/PDP11_BusHandbook1979.pdf
  9. DEC Corp., „Microcomputer Products Handbook“, 1985
  10. IEEE Std. 896.3 „IEEE Recommended Practice for Futurebus+“, IEEE Xprore, 1993
  11. Furber S.B., „ARM System-on-Chip Architecture“, Addison-Westley Longman, ISDN 0-201-67519-6, 2000
  12. Bainbridge W., Asynchronous System-0n-Chip Interconnect, PhD Thesis, Department of Computer Science, University of Manchester, 2000
  13. Hawley D., „Timing Analysis of Synchronous and Asynchronous Buses“, National Semiconductor Application Note 514, 1998
  14. IEEE Std. 796, „Microcomputer System Bus“, IEEE Xplore, 1983
  15. IEEE Std. 1014, „IEEE Standard for A versitile Backplane Bus:VMEbus“, IEEE Xplore, 1987
  16. Shanley T., Anderson D., „ISA System Architecture“, MindShare Inc., ISBN 0-201-40996-8, 1995
  17. IBM Corp., „Personal Computer XT Hardware Refenece Library – Technical Reference“, 1981
  18. IBM Corp., „Personal Computer Hardware Refenece Library – Technical Reference“, 1502494, 1984
  19. IEEE Std.1196 „IEEE Standard for Simple 32-bit Backplane Bus: NuBus“, IEEE Xplore, 1987
  20. IEEE Std. 1296, „Information technology – Microprocessor systems – High-performance synchronous 32-bit bus: Multibus II“, IEEE Xplore, 1994
  21. а б Xilinx Corp., AXI Interconnect Ver. 2.1, 2016
  22. Beausoleil W. F. et al, „Interlocked Communication System", US Pat. No. 3,336,582, Filed Sept 1, 1964, Granted Aug. 5, 1967
  23. Cassarino F. V. et al, „Data Processing System Providing Split Bus Cycle operation", UP Pat. No. 3,997,896, Filed June 30, 1975, Granted Dec. 14, 1976
  24. PCI SIG, „PCI-X Protocol Addendum to PCI Local Bus Specification, Revision 2.0", July 29, 2002
  25. Cohen D., – „On Holy Wars and a Plea for Peace“, IEEE Computer Magazine, Oct. 1981
  26. IEEE Std. 802.3ad, „Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications“, IEEE Xplore, 2000
  27. HyperTransport Technology Consortium, HyperTransport I/O Link Specification, Revision 1.03 Архив на оригинала от 2016-03-25 в Wayback Machine., 2001
  28. PCI SIG, „PCI Local Bus Specification Rev. 2.3“, March 2002
  29. PCI SIG, „PCI Express Base Specification Rev. 1.0“, April 2002