6. Логическа организация на изчислителните системи. Модели на адресация



Дата01.06.2017
Размер44.32 Kb.
6. Логическа организация на изчислителните системи. Модели на адресация.


Една машинна команда се състои от:


Всеки операнд по някакъв начин специфицира данната. Методът на спецификация се нарича метод на адресация. Днес в КС се прилагат следните методи:

  1. Непосредствена адресация – стойността на данната е кодирана в самата адресация.

  2. Абсолютна адресация – полето за операнда съдържа абсолютния адрес (номера на клетката спрямо нулевата на оперативната памет) на мястото на данната.

Това е най-бързият и най-обемистият метод. Използва се в Mainframe компютрите.




  1. Регистрова адресация – полето за операнда съдържа номера на регистъра (на CPU), в която се съдържа самата данна.




  1. Пряка адресация – полето за операнда съдържа номера на регистъра, съдържащ адресната данна.




  1. Косвена адресация – полето за операнда съдържа номера на регистъра, съдържащ адреса на клетката, съдържаща адреса на данната. Може да бъде на няколко нива вложеност.




  1. Индексен режим на адресация – метод, при който едно или няколко полета от операндата съдържат номера на индексния регистър. Крайният адрес = базовият адрес + съдържанието на индексния регистър. Има компютри, където сърържанието на индексния регистър автоматично се увеличава или намалява: адресация с автоувеличаване (отзад напред), автонамаляване (отпред назад).

Към всеки един от тези методи на адресация имаме адресация с отместване (базова адресация): Адресът се разглежда като състоящ се от две части – номер на регистъра, съдържащ адрес на област от паметта, и отместване спрямо началото.



Този метод се използва в Intel CPU. При Intel CPU има три вида регистри:



  1. Сегментни – 5 на брой

  2. Регистри с общо предназначение – обикновено са 8 на брой

  3. Специализирани

Задължително има 4 управляващи CR0, CR1, CR2, CR3 – не се използват.
Смисълът на сегментните – счита се, че оперативната памет е видима от софтуерните модули само през определени „прозорци”, наречени сегменти. Всеки сегмент е голям точно 64КВ.

Тези видове сегменти са твърдо заложени в логиката на CPU.



  • Първият се нарича кодов сегмент – CPU третира това като команда. В code segment register (CSR) всеки има възможност да сменя тези стойности (RW достъп).

CS:=200 000, тоест този адрес се мести на адрес 200 000, тоест регистрите се движат и програмистът може да ги мести на необходимите му места.

  • Data segment (DSR) – клетки, съдържащи данни – съответното им представяне

  • Extended segment – съдържа разширението на областта с данни

  • Stack segment – служи за съхраняване вектора на състоянието на един програмен модул при обръщение към друг програмен модул

  • Пети – управлява прекъсването (т.нар. вектори на прекъсването – адреси на модули, управляващи прекъсването – protection segment).

Към всеки от тези сегменти се прикрепят регистри от общо предназначение. Такъв е Instruction Pointer (IP).

Адресацията в Intel CPU винаги се задава с двойка регистри. Към тази базова двойка регистри има възможност за други видове адресация.

Друг подход – в спецификацията си всеки операнд сам за себе си определя адресацията. Например във VAX.


Intel има два режима на работа – Real Mode и Protected Mode.

CR0 – в най-десен бит: 1 – Protected Mode;

0 – Real Mode.

При Intel процесорите цялата памет се разделя на прозорци (семантична особеност – през единия прозорец паметта се разглежда като съдържаща команди) (сегменти код). В CPU за всеки един от тези от тези сегменти има по един регистър, който сочи началото на съответния сегмент. Програмистът има достъп и може да променя съдържанието на кой да е от тези регистри. Промяната на съдържанието автоматично води до преместване на съответния сегмент в друга начална точка.

Има едни други регистри (8 на брой) с общо предназначение, които също са програмно достъпни. Те служат за задаване на отместването на адресната клетка от началото.

За другите три сегмента може да се използва кой да е от останалите регистри.

Следователно адресът на клетката се задава винаги чрез двойка регистри – сегментен регистър и регистър-отместване.

Intel CPU работи в два режима – Real mode (нар. още real address mode) и Protected mode (нар. още protected virtual address mode), като Pentium и Itanium CPU работят стандартно при Protected mode, а предните модели работят в Real mode. Pentium CPU позволява да се симулира Real mode. При Protected mode нововъведенията са с цел поддържане на многозадачност, стабилност на системата, защита на паметта, както и хардуерна поддръжка на виртуалната памет.

При Real mode адресите се получават по следния начин: съдържанието на сегментния регистър се измества с 4 позиции наляво и се събира с регистъра на отместване, като това, което се получава, е абсолютният адрес на клетката. Сегментните регистри са винаги 16 бита. В Real mode – дясната част (първите 16 десни бита). По този начин получаваме 20-битов адрес, тоест максималната адресура в Real mode е 220В или 1МВ. Този 1МВ – управляващи таблици, код на потребителската програма, ...

Този режим е предвиден с цел програмите, направени за Intel 286, 386 (16бита), да могат да работят директно без тяхното прекомпилиране.

Това е при нормален режим на работа Real mode. В защитния режим на работа (Protected Mode) паметта се организира по по-сложен начин:

П


24
отребителската програма се разполага на части в оперативната памет и за всяка такава част се създава един ред от една таблица – Локална Дескрипторна Таблица (ЛДТ). Може да има максимум 8152 части (реда). Всеки ред от тази таблица се нарича „дескриптор”. Операционната памет има една, т. нар. „Глобална Дескрипторна Таблица”, всеки ред на която сочи началото на всеки ЛДТ на тази програма. Тоест, ако има 500 програми, ще има 500 ЛДТ и 500 реда в ГДТ. Всеки елемент от ДТ се нарича „дескриптор” (8 байта) и има следната структура:

При ГДТ ограничителят е 24b (размерът на частта, която описва). При Pentium IV и Itanium 8b от 16-те допълващи спадат към ограничителя. Базата съдържа адреса на съответното начало. При Pentium IV и Itanium останалите 8b от 16-те допълващи са към базата и така тя става 32b. Следващите 8b са за флагове за защита (видът достъп до съответната част от паметта).

На всяка една от ЛДТ съответства по един регистър (Local Descriptor Table Register) и Global Descriptor Table Register (винаги сочи началото на GDT).

LDTR – променя съдържанието си.

Адресът се задава с двойка регистри – segment register и отместване или сегментен регистър и регистър-база. Винаги е 16-битов, като десният бит (стойност 1 или 0) показва дали да се адресира спрямо ЛДТ или ГДТ. В два бита се кодира в какъв mode е. Остават 13 бита – едно число, което е отместване в дескрипторната таблица (пореден номер на елемент, отместен х8).

Адресът на клетката, до която се иска достъп (32-битово число), спрямо Абстрактната Виртуална Памет дава линеен адрес (това не е истинската физическа част на паметта).



Това са моделите на адресация в Pentium и Itanium CPU.


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница