Тема 18

Осъществяване на входно-изходен обмен. Входно-изходни процесори.


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


Простата Фон-Нойманова машина, дала живот на персоналния компютър, съдържа централен процесор (ЦП) и оперативна памет (ОП). ЦП чете информация от ОП и я записва обратно в ОП.
Този модел обаче има съществени недостатъци, що се отнася до практическото му приложение. Например:

  • Данните трябва първо да се заредят в ОП ;
  • Данните трябва да се изведат от ОП, за да се съхранят за дълъг период от време ;
  • Адресното пространство в ОП свършва след достатъчно дълъг период от време ;

Входно-изходна система

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

  1. По какъв начин ще се осъществяват входът и изходът в затворената система ЦП - кеш - ОП ?
  2. Откъде ще идва входящата информация, и къде ще отива изходящата?

Имаме 3 типа устройства: входни (Input) - например клавиатура, изходни (Output) - например принтер, монитор, и съхраняващи (Storage) - например магнитен диск. (Еднократните компактдискове не са чисто нито първото, нито второто, нито третото.)

Има два принципни структурни начина за включване на входно-изходна система в конфигурацията на компютъра.

Магистрала на паметта

memory_bus.PNG

Първият начин е да се постави магистрала на паметта (Memory Bus) между кеша и ОП. По този начин ОП става достъпна от три места: ЦП, контролер за директен достъп (DMAC, Direct Memory Access Controller), и адаптер за входно-изходен обмен.
Входно-изходният адаптер прехвърля данни между магистралата на паметта и втора магистрала - входно-изходна магистрала, към която се свързват ("закачват") различни входно-изходни устройства. Тази магистрала позволяват разнообразни устройства да се включват в системата по сходен начин; именно поради различията в устройствата обаче, те се включват не директно, а посредством входно-изходни контролери, които седят между устройството и магистралата.
Устройството може да има собствен контролер (например монитор, клавиатура), който да бъде реализиран по различни начини (схемотехнически или другояче), или може няколко групови устройства да бъдат управлявани от стандартизиран контролер (например твърди дискове).
DMA контролерът позволява трансферът на данните между устройството и ОП да се осъществява, без да се ангажира централният процесор. В този случай ЦП подава команда на DMAC, след което DMAC извършва цялата работа по прехвърлянето на информацията. Информацията минава по същия път (входно-изходен контролер, входно-изходна магистрала, входно-изходен адаптер, магистрала на паметта), но ЦП е частично или напълно свободен през това време и може да изпълнява други задачи.

Входно-изходен процесор

IOProcessors.PNG

Вторият начин е подобен на първия, но до оперативната памет има достъп през две различни шини - едната, между ОП и кеша (тоест, ЦП), и втора, между ОП и входно-изходен процесор. Входно-изходният процесор е подобен на централния, но изпълнява собствени програми, управляващи входно-изходните операции.
Тъй като паметта има два вход/изхода, двете магистрали работят паралелно или конкурентно. Конкуренцията решава проблеми като едновременен достъп до един и същи адрес, но на единия процесор се налага да изчаква. Обикновено прилаганият принцип е устройството, което което първо "хване" една страница от паметта, да я заключва за себе си, и след края на операцията да я отключва. Алтернативата е установяване на приоритети, в който случай ЦП има по-висок приоритет от входно-изходния процесор и работи с предимство. Всички тези механизми се реализират хардуерно и не се налага да бъдат разглеждани от софтуеъра.
Работата с памет с две шини поставя нетривиален проблем при работа с кеша: данните, постъпващи от входния процесор, се записват в ОП, но не минават през кеша, което създава възможност ЦП в даден момент да работи със стари, невалидни стойности. Компютърните системи с такава памет решават въпроса по различен начин.
Системите с входно-изходен процесор и двувходна памет са скъпи ($500 000 и нагоре), затова обикновено принципът се прилага в суперкомпютри (Cray), mainframes (IBM) и други големи машини. В персоналните компютри се използва първата схема.

Особености на магистралите

Магистралите имат 3 компонента: адресни линии, линии за данни, линии за управление.
При разглеждането на магистралите се открояват 4 основни пункта:

  1. Синхронизирани ли са те?
  2. Как се прехвърля управлението между устройствата?
  3. Как се определя кои устройства ще използват магистралата?
  4. Други

Clocking

Синхронизира ли се магистралата?

  • Не - магистралата е асинхронна. Едно устройство (активно) заявява, че иска да комуникира с друго (пасивно), след което изчаква второто да заяви готовност, след което започва трансферът - независимо дали от активното към пасивното, или обратно. Потвърждаването за получаване на информацията в края на транзакцията повишава сигурността на магистралата с цената на известно забавяне за потвърждаващия сигнал. Транзакцията не протича за фиксирано време, което има известни предимства - например обемът на предаваната информация. Примери за асинхронни магистрали са FireWire и USB 2.0 .
  • Да - магистралата е синхронна. Транзакцията се регулира от тактов сигнал и всички нейни етапи - заявката, потвърждаването на готовност, трансферът на данни, потвърждаването за получаване - а следователно и цялата транзакция, трябва да завършат за определен брой тактове. Една примерна тактова честота може да бъде 233 MHz, като тя няма подчертано нищо общо с тази на ЦП. Магистралата може да поддържа повече от един вида транзакции, които завършват за различен брой тактове. Не се налага да се изчаква потвърждаващ сигнал, поради което, като цяло, синхронните магистрали са по-бързи от асинхронните. Повечето компютърни магистрали са синхронни.

Switching

Транзакциите, въпреки, че се осъществяват през магистрала с много точки на достъп, са от типа point-to-point (точка-точка). Единият субект на транзакцията е ОП, а другият - устройство, свързано към шината. Как се прехвърля управлението между устройствата, които осъществяват транзакции? Схемите са три:

  • атомарно - двата субекта заемат магистралата само за пренасяне на една порция данни. При 64-битова магистрала, например, две устройства се включват, предават си 64 бита информация и се изключват. След тях се включват други две устройства, предават си 64 бита информация и се изключват, и така нататък. Този начин не се разглежда от курса.
  • цяла транзакция - двата субекта заемат магистралата, докато не завърши цялата транзакция. Например, ако се предава един блок от 16 B, устройствата ще заемат магистралата за времето на 4 (32-bit) или 2 (64-bit) атомарни транзакции. Останалите устройства изчакват да завърши транзакцията и магистралата да се освободи. По този начин работят магистралите на персоналните компютри.
  • split transaction (припокриване) - междинен вариант. Два субекта се включват, предават си 1 блок информация за 1 такт време, след което се изключват. Включват се нови два субекта, предават си 1 блок за 1 такт, изключват се, и отново. По този начин транзакциите се припокриват във времето. Двойки субекти могат да бъдат ЦП : ОП, ОП : входно-изходен контролер. Пример за реализация са VAX.

При входно-изходни транзакции, трябва да се внимава с кои области от ОП се работи. Ако се припокриват транзакции, свързани с една и съща област от паметта, тя може да остане в неопределено състояние.

Арбитраж

Често се случва няколко субекта по едно и също време да прехвърлят данни с паметта. Кой субект ще използва магистралата, се определя от специално устройство - арбитър. Арбитърът се призовава от старгейта след построяване на трибунал съдържа в себе си схеми на приоритет на субектите. Той е свързан към магистралата на паметта и всички конкуриращи се устройства имат линии за заявка към него. Арбитражът се извършва на две стъпки (цикъла). На първата стъпка ("цикъл на захващане"), по време на все още извършваща се предишна транзакция устройствата, на които се наложи да предават, изпращат заявки до арбитъра. От своя страна той определя източниците и приоритетите на заявките, избира едно устройство и му изпраща сигнал за избиране. На втората стъпка ("цикъл на заемане на магистралата") избраното устройство заема магистралата за транзакция. Заемането може да бъде "късо" (атомарно) - за 1 ширина данни (32/64 бита), "монополно" (цяла транзакция) - за цялата транзакция, или "split transaction" - няколко устройства за по няколко дължини.

ВАЖНО! Това разпределение на материала по теми, макар и спорно, отговаря на хронологията - ако доцентът е чел първо 18-ти въпрос, после 17-ти, след това 19-ти. Предишният вариант на тези три страници в уикито предполагаше да са четени в този ред: първо 18-та, после началото на 19-та, после 17-та, и след това краят на 19-та, в което няма логика.
По предишното разпределение, следващият надолу материал се отнасяше до 19-та тема. Според мен не е вярно, но го имайте предвид!

Магистрали в персоналния компютър

PC_bus.PNG

В най-новите процесори L3 се намира в процесора, но не е част от чипа.
В стремежа да се ускори връзката ЦП - ОП, между тях се поставя мост - чип, който свързва различни магистрали и извършва арбитраж между тях. Мостът между процесора и паметта, означен с "Мост PCI" (наричан иначе "северен" (northbridge, или MCH - Memory Controller Hub), е свързан към:

  • ОП - с бърза шина, наречена FSB (Front Side Bus);
  • кеша на дънната платка (респективно, процесора) - с бърза "локална шина" (Local bus/lane);
  • останалите устройства - посредством не толкова бърза магистрала.

ЦП имат приоритет на достъп към паметта, арбитражът се извършва между останалите устройства.

Всъщност FSB е бързата връзка между процесора и северния мост, а връзката мост - памет се нарича просто "memory bus"1. Шината между процесора и кеша не съществува в някои реализации, а иначе се нарича Back Side Bus. Local bus е шина, която се свързва директно към процесора и работи с неговата честота.

ISA/PCI

Устройствата, свързващи се към моста на паметта, са свързани чрез магистрала към моста. Някога, тази магистрала е била ISA (Industry Standard Architecture). Впоследствие, тъй като се оказва бавна, тя изчезва, като остава само мост, към който са включени серийните портове (COM, известни още като RS232), принтерният порт (LPT), PS/2 клавиатури и мишки, флопи, вътрешни модеми и звукови карти (вече не), и към който през специална шина се свързва IDE контролерът (отново, вече не). Вместо ISA, в момента основна компютърна шина е PCI (Peripheral Component Interconnect) - сравнително високоскоростна, синхронизирана магистрала, към която се свързват различни периферни устройства, както и мостове за други магистрали - например SCSI (Small Computer Serial Interface), или USB.

AGP

Преди време, видеокартите са били свързвани към PCI интерфейс. Поради ниските скорости и нуждата от изчакване, докато магистралата се освободи от транзакция, се въвежда AGP (Accelerated Graphics Port). Въпреки че на картинката той е свързан чрез мост към PCI, в действителност това е шина (point-to-point), свързваща видеоконтролера към северния мост, с цел обменът на голям обем видеоданни да става с висока скорост и по собствена връзка, на която не се налага да изчаква други устройства и да подава заявки към арбитър2 . В последно време AGP се измества от така наречения PCI Express стандарт.

Управление и обръщение към вход-изхода

Как се пренасят данните? Сравнително проста схема за това е следната: ЦП привилегировано се обръща към входно-изходно устройство, със специални инструкции прочита от него данни в свой регистър (Read) и ги съхранява в кеша (Store), а след това, според стратегията на запис (Write-back / Write-through), може да се запише в ОП. Въпреки примитивизма на този начин, негово хубаво свойство е, че запазва консистентността на кеша - данните в кеша съответстват на тези в ОП.

По какъв начин ЦП извършва обръщението към входно-изходното устройство? В Intel-ските процесори става така: Отделя се един блок адреси (да речем, от 0 до 65535), и се нарича входно-изходно адресно пространство. При подаване на адрес от ЦП, по две допълнителни управляващи линии се задава сигнал, който указва дали се адресира памет или В-И устройство, и каква операция се извършва. Възможностите са:

  • MemRead - подаваният адрес се отнася до паметта и от него ще се чете;
  • MemWrite - адресът се отнася до паметта и на него ще се записва;
  • IORead - адресът указва външен достъп за четене;
  • IOWrite - външен достъп за запис.

При IORead/Write от адреса се взимат десните 16 бита (за 16-битово входно-изходно адресно пространство) и се изпращат от PCI моста по адресните линии на PCI шината.

(?) По шината трябва да има единствен порт за писане или четене. Някога, това е ставало с настройка на jumper-и. Сега, всичко се конфигурира автоматично.

Interrupts или Polling?

Не всички компютърни системи имат система за входно-изходни прекъсвания. В някои е внедрен така нареченият polling принцип. Накратко, какво представляват двата принципа?

  • Polling – процес, при който обслужващата програма непрекъснато проверява за състоянието на контролерите (портовете, с които те са свързани), и по-точно казано, на техните указатели (регистри) за състояние, които сменят състоянието си, когато е завършила входно/изходна операция. В по-стари системи, ако състоянието не се е променило, процесорът седи мирен и чака то да се промени (операцията да завърши), а останалата процесорна работа се отлага. В по-нови системи, ако състоянието не е променено, процесорът продължава с други задачи и ги изпълнява до следващото запитване (poll) за състоянието на контролерите.
  • Система на прекъсване – ЦП дава на контролера да си върши работа, като му подава команди с параметри за извършване на входно/изходна операция, и (го заебава) продължава да върши други операции. След като контролерът си свърши работата, прекъсва работата на ЦП и се стартира обслужваща програма, която да обработи сигнала от контролера.

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

Клавиатурата има контролер с 3 порта, които се разглеждат като регистри с определени адрес (номер на адрес - 60, 61, 62).

  • порт 1 – за вкарване/изкарване на данни (двупосочен).
  • порт 2 – за управление на периферното устройство.
  • порт 3 – за статус на периферното устройство.

ЦП чете входна операция, като адресира първо порта за състояние (статус), който показва, че от клавиатурата в контролера са постъпили нови данни, прочита данните и записва в порта за управление, че ЦП е прочел данните, след което порта за статус показва, че ЦП е готов за нов вход.

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

След заявка за четене, първо главите на диска намират сектора, след това той се прочита от контролера, ЦП чете от контролера и чак тогава входните данни се записват в ОП.
Времето, през което дискът се върти, а главите търсят нужния сектор, и времето, през което секторът се чете, са в порядъци по-големи от времето за изпълнение на една инструкция от ЦП. Затова е хубаво през това време процесорът да изпълнява други задачи. Някога, със старите системи за polling, това не е било възможно; с по-новите, както и със системата на прекъсванията, изискването е изпълнено.

В заключение, системата със запитвания (polling), като цяло, се счита за по-неефективна от система с прекъсвания (interrupts). В някои ситуации, обаче, може и да не е така. Цитат:

Fred Brooks said that having to stack interrupts influenced Seymour Cray to design the CDC 6600 with polling rather than interrupts.

Източник

Полезни връзки

Повече по въпроса за синхронизацията на магистралите

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