Памет. Организация и управление на основната памет и кеш паметта

Компютърна и комуникационна техника Лекция

1.3. Памет. Организация и управление на основната памет и кеш паметта
1. Вертикална (йерархична) организация на паметта. Същност на вертикалната организация
Идеалната структурна организация на паметта е очевидно тази, която е на едно ниво, т.е. процесорът чете и записва данни и команди само от една единствена памет. Такава организация се нарича ”плосък” модел на паметта. Това не е възможно поради следните причини:
• Един бит бърза памет е по скъпа от един бит бавна памет.
• Колкото е по-голям обемът на паметта, толкова по-голямо време е необходимо за достъп до данните, които са запомнени на произволни адреси (при една и съща технология на производство).
Ето защо в почти всички съвременни компютри паметта е структурирана йерархично. Принципът заложен в тази йерархична структура е следния: най-близо до процесора се намира най-бързата, но с малък обем памет, а най-голямата по обем, но и с най-голямо време за достъп памет се намира най-отдалечено от процесора – фиг.1:
Фиг.1. Структура на паметта

2. Регистрова памет
Регистровата памет, като върхов структурен елемент в йерархията на запомнящата система (), се реализира върху кристалната подложка на процесора, т.е. говорим, че тя е изпълнена в елементната база на процесора. Регистрите, които са свързани със структурата и с обслужването на АЛУ, обикновено имат размерите на разрядната мрежа. Наборът от регистри с общо предназначение може да бъде организиран като запомнящо устройство с произволен достъп. Съществуват реализации, в които наборът от такива регистри е организиран като запомнящо устройство с последователен достъп (например в АЛУ за работа с плаваща запетая). Обемът на отделните набори регистрова памет е малък, най-често в пределите максимум до 128 клетки за тези с общо предназначение или в обем, определен според функционалното предназначение и вида на устройството в чиято структура се намират.
Поради малкият обем на регистровата памет, достъпът до нейните клетки се осъществява с къс адрес - 4, 5 бита. Това води до намаляване на дължината на машинните инструкции, адресиращи тези клетки, а от там и до намаляване на обема на програмите. Регистровата памет осигурява на операционните и на функционалните устройства възможно най-бързия достъп до необходимите им данни. От една страна това се дължи на непосредствената близост, т.е. на късите логически връзки, а от друга страна на еднотактните микрооперации четене и запис. В резултат на всичко това се получава допълнителен ефект, изразяващ се в повишаване на скоростта на изчислителния процес.
Регистрите с общо (или специално) предназначение се използват от програмиста най-често за временно съхраняване на данни, представляващи междинни резултати (начални стойности, служебни данни, константи, адреси или части от адреси) или най-общо казано информация, до която е необходим възможно най-бърз достъп. По тази причина регистрите с общо предназначение се определят като програмно достъпни. За тези регистри са обичайни операциите от вида инкремент (увеличаване) или декремент (намаляване) на съдържанието (+1), (-1), запис на нула, прехвърляне на съдържанието от един в друг регистър, зареждане с начални стойности и други операции, специфични за всеки отделен процесор. Тези възможности ги правят удобни за използване и в качеството им на базови, или на индексни регистри, което улеснява програмиста при реализация на необходимите му алгоритмични структури. Машинните инструкции, които адресират операндите си в регистрите с общо предназначение са определени като команди от тип регистър/регистър.
Може да се твърди, че големият брой оператори от тип „за присвояване” , които представляват съществения дял в една програма, изискват от процесорите, в които се реализират, специална организация за бърз достъп до операндите. Тъй като голяма част от операндите представляват стойности на локални и в същото време скаларни променливи, то естествена е мотивацията за един увеличен брой на регистрите с общо предназначение. Освен тях в процесорите винаги съществува и неголяма група регистри, които са предназначени да съхраняват стойностите на глобални променливи. За програмиста това означава, че той следва да прилага такава политика (стратегия), която би довела до максимално използване на регистровата памет (както в смисъла на нейния обем, така и във времето) и би довела още до минимизиране броя на операциите за трансфер на данни между оперативната и регистровата памети. В същото време обаче, в противоречие с желанието за по-голям обем на регистровата памет, влиза желанието за бърз преход от един набор променливи към друг набор променливи. Такава подмяна на съдържанието на цялата регистрова памет се налага при преход към подпрограма и обратно при връщане от подпрограма. Използването на голям обем регистрова памет би довело в този случай до значително забавяне на преходите, вследствие на продължителното съхраняване и възстановяване на съдържанието на регистровата памет в или от стека. Нека поясним този факт като разгледаме логическата структура на FIFO паметта от тип с транзитен пренос, представена на фигура 2.

Фиг. 2 Логическа структура на FIFO памет с транзитен пренос
Запомнящият масив е образуван от k на брой М-битови изместващи регистри с общо управление. Управлението се постига чрез М-битовия регистър за управление на движението на данните от входния към изходния регистър. Записът на данни се синхронизира с управляващия сигнал SI (shift in), а четенето – с управляващия сигнал SO (shift out). Записът на данни е възможен само ако е вдигнат флага за готовност IR (input ready), а четенето – при готовност за извеждане OR (output ready). Управляващият сигнал R (reset) нулира всички тригери в регистъра за управление на движението.
При въвеждане, под действието на сигнала SI, входната дума преминава (пробягва) през всички клетки в запомнящия масив отляво надясно и се фиксира в най-дясната свободна клетка. С това тази клетка става вече заета, което й състояние се маркира чрез установяване в 1 на тригерът, който й съответства в регистъра за управление на движението. Става ясно, че тригерите в регистъра за управление на движението показват дали съответните клетки са заети или свободни. Когато състоянието на дясностоящия тригер в този регистър се промени на 0, данните автоматично се преместват към изхода. Поредното използване на буфера започва с подаване на сигнал R за нулиране на управляващите тригери. Така всички клетки се считат за свободни и се появява флагът IR. Чрез сигнал SI входната дума се зарежда в клетка №1, а управляващия й тригер се установява в 1, а флагът IR пада в 0. Връзката между клетките е реализирана така, че постъпилата в К1 дума “спонтанно” се копира във всички останали клетки и се появява на изхода. Така всички клетки в запомнящия масив съдържат едни и същи данни, управляващият тригер на най-дясната клетка с №М е установен в 1, а останалите управляващи тригери са нулирани при предаването на данните в съседните отдясно клетки. Състоянието на управляващия тригер №М е изведено на линията OR (признак “готови данни”). Операциите от тип запис могат да продължат до запълването на запомнящия масив, при което всички управляващи тригери се намират в състояние 1 и флагът IR=0.
Операция четене започва с подаване на управляващия сигнал SO. При този сигнал управляващият тригер на най-дясната клетка КМ се установява в 1, на изходната линия OR се появява 1 (признак “готови данни”), при което подсистема 2 трябва да приеме данните. След това управляващият тригер №М се нулира. Този процес се повтаря автоматично при което данните се изместват от клетка в клетка в посока на изхода, а нулата в управляващия регистър – в обратна посока към входа.
За състоянието на запомнящия масив може да се съди ако се реализира изходен признак за степента на неговото запълване. Така например съществуват реализации, при които се вдига флаг на признак за запълване на буфера наполовина.
Разгледаната принципна организация на FIFO паметта допуска едновременно и независимо изпълнение на операциите четене и запис. Скоростта на запис се определя от временния интервал, който е необходим за предаване на съдържанието на клетка К1, а извеждането на данни се изпълнява със същата скорост. Единственото ограничение е времето за разпространение на данните през запомнящия масив, което е равно на времето за което входната дума достига изхода на незапълнения буфер. Това време може да се оцени с произведението (М.), където с  е означено времето за превключване на запомнящия тригер в клетката. В това произведение се състои и основният недостатък на архитектурата с транзитен пренос – времето за закъснение на готовността нараства бързо с нарастване на обема на запомнящия масив.

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

Фиг. 3 Припокриване на регистровите прозорци

По време на изпълнение на програмата процесорът “вижда” само един регистров прозорец. Така той може да се обръща (чете и записва) единствено към регистрите принадлежащи на този текущ прозорец. Можем да приемем, че относителните им адреси са техните номера (от 0 до N-1), където с N е означен техният брой. Регистровият прозорец се състои от три части:
1. Област за параметрите на извиканата подпрограма от ниво k (действителни) – предавани и връщани.
2. Област на локалните променливи. Тук подпрограмата съхранява стойностите на вътрешните (работни) променливи. Таблицата на съответствие на всеки от тези регистри се съставя от компилатора.
3. Област за временни стойности. Тази област от текущия прозорец (ниво k) е предназначена за връзка с евентуално извикана от текущата подпрограма следваща подпрограма (т.е. следващото ниво k+1). За извиканата подпрограма (от следващото ниво) областта за временни стойности в текущата (викащата) подпрограма се явява о

Преглед на началото - целият файл след изтегляне

Описание

Дисциплина: Компютърни архитектури и организация на компютъра

0 коментара

Все още няма коментари. Бъдете първият, който ще коментира.

За да коментирате, трябва да сте влезли в профила си.

Влезте