Karh09 5

5. Модели на паметта в инструкциите: стек, акумулатор, регистрови и пр.


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


untitled14.JPG
Типът на вътрешната памет в процесора е най-основното разграничаване за архитектурата на набора инструкции. Основните типове са стек, акумулатор и множество от регистри. Операндите могат да бъдат посочени изрично или косвено.
При разглеждането на отделните типове вътрешна памет ще разглеждаме пример C=A+B

Стеков модел

При стековия модел операндите са посочени косвено на върха на стека. При него Top Of Stack register (TOS) сочи към върха на стека където се вкарва операнда, който се комбинира с операнда под него чрез операция в АЛУ-то. Първия операнд се премахва от стека, резултата се записва на мястото на втория операнд и TOS започва да сочи към резултата. Всички операнди са косвени.

push A     S[++TOS] = M[A];
push B     S[++TOS] = M[B];
add         T1=S[TOS--]; T2=S[TOS--]; S[++TOS]=T1+T2;
pop C     M[C] = S[TOS--];

Акумулаторен модел

В акумулаторния модел се използва само един регистър (наречен акумулатор). Първия операнд се подразбира и се взима от акумулатора, втория се взима от паметта(експлицитен е), извършва се операцията в АЛУ-то и резултата се записва в акумулатора. Счита се че при този модел има само един косвен операнд(този в акумулатора).

load A     accum = M[A];
add B     accum += M[B];
store C     M[C] = accum;

Модел памет - памет

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

add C,A,B M[C] = M[A] + M[B];

Модел памет – регистър

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

load R1,A     R1 = M[A];
add R1,B         R1 += M[B];
store C,R1     M[C] = R1;

Модел регистър – регистър

Още наричан load/store модел. Всички операнди и резултата се записват в регистри. В този модел се използват множество инструкции, което води до по-големи програми.

load R1,A     R1 = M[A];
load R2,B     R2 = M[B];
add R3,R1,R2     R3 = R1 + R2;
store C,R3    M[C] = R3;

Колко регистъра са необходими? Отговора зависи от ефективността на комилатора. Повечето компилатори използват определени регистри за определени операции. Архитектурите на наборите инструкции имат все повече регистри в сравнение с прародителите си.

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