Karh09 4

4. Инструкции – формати, операции, групи инструкции и формати на данните.


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


Аспекти на набора от инструкции

Ето ги основните аспекти на набора от инструкции

  1. Формата на инструкциите – дължина на инструкциите и начините за кодиране
  2. Операциите – какви операции се извършват, върху какви типове данни, брой и вид на операндите
  3. Моделите на паметта в инструкциите и начините за адресация в паметта. Моделите на запомняне са – стек, акумулатор, общи регистри памет.
  4. Контрол – условни преходи, специално поддържане на процедури

Формат на инструкциите

Инструкциите биват в няколко различни формата - тоест, възможни дължини и от какви полета се състоят. Теоретично една инструкция се състои от 4 полета, а именно код на операцията, адрес на операнд 1, адрес на операнд 2 и адрес на резултат.
untitled23.JPG
Като поле в инструкцията може да се сложи стойноста на операнда, но това е неудобно, защото инструкцията е трудна за промяна. Затова е широко прието да се работи с адреси.
Ако операндите са представени със стойности, първо се чете инструкцията, после се отделят операндите и това е най-бързият начин на работа. За сметка на което е много неудобен за работа - операндът има фиксиран размер, който обикновено трябва да е малък (често 1B), за да бъде къса (съответно, бърза) самата инструкция. Използва се понякога, за къси константи.
Тъй като 3 адресни полета може да са много, се решава Арез да се записва на мястото на Аоп1, подменяйки деструктивно съдържанието му. Прочитане на операнда от подаден адрес не влияе на стойността на самия операнд. Така получената инструкция е със следния вид:
untitled24.JPG
Кодът на операцията указва на АЛУ какво точно да извърши с операндите.
Върху тази обща форма са възможни три интерпретации на дължината на инструкцията:

  • Всички инструкции за набора(IS) да се изберат с еднаква дължина(примерно 4B). Това има предимството, че кешът(cache) ще работи много добре, тъй като ще се знае дължината на всяка следваща инструкция, ще се прочита цялата и няма да се налага да се дешифрира предварително (за да се разбере колко е дълга). Друго предимство е, че моментално се знае адресът на следващата инструкция. Недостатък е, че някои инструкции не се нуждаят от 4B за съхранението си(ще има празни битове), или пък, някои се нуждаят от повече от 4B. Още един плюс е, че работата с конвейер се улеснява.
  • С променлива дължина на инструкциите. При този вид формат на инструкциите програмата се получава по-компактна. При извличането се извличат на части. Ако най-малката инструкция е 1 byte се извличат по 1 byte. Тук проблемът е, че е трудна работатат с конвейер.
  • С 2 -3 фиксирани дължини. – компромисно решение. Пример IBM 360 има четири фиксирани дължини. При този случай дължината на инструкцията се намира в кода на операцията на инструкцията.

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

Операции

Видове операции в инструкцията

  • Аритметични и логически – add, mult, and, xor. Идват от класическото двоично АЛУ. Този вид операции имат една и съща спецификация независимо от архитектурата.
  • Трансфер на данни – move, load, store. Този тип операции не са задължителни, но са добра практика. move – прехвърляне на данни от една в друга област на оперативната памет. load – зареждане на данни от ОП в регистър на процесора. store – обратното – от регистър в ОП.
  • Управляващи инструкции – conditional branch – условен преход, jump – безусловен преход, call – извикване на подпрограми, return – връщане от подпрограма.
  • Във всяка ISA има специални системни инструкции – system call, traps – за създаване на изкуствени прекъсвания.
  • Инструкции за аритметични действия с числа с плаваща запетая – add, mul, div, sqrt.
  • инструкции за аритметични действия с десетични числа – имитира се работата им през двоични convert – превръща едно десетично в двоично число. BCD (binary coded decimal)
  • Операции с низове.
  • За работа с мултимедия.

Формат с плаваща запетая - характеристики

Форматът с плаваща запетая се основава на представянето на числата в нормализирана форма като произведение от мантиса с основата повдигнато на степен (експонентна част). Нормализираното представяне означава в ляво от десетичната точка да има само едно ненулево число. Нормализирано представяне на десетични чесла е например 5.1567х 106 ; 1.23х1050 ; 2.54х10-28 . При двоичния формат с плаваща запетая принципът на представянето е същият, но основата е 2 вместо 10. Числото g се представя чрез следните зависимости:
g = (-1)s x M x 2E-127
Знаковият бит е (-1)s като S= 0 е за положителни и S=1 за отрицателни числа. Променливата Е е осембитово двоично число между 0 и 255. Променливата Е се намалява 127, което означава, че експонентата ще варира от 2-127 до 2128 . Мантисата М се формира от 23 бита като двоична дроб.
На фигурата по-долу е илюстрирано представянето на числата от 32 битовата разредност. Всичките 32 разреда са разделени на три отделни групи:
- битове 0 до 22 са за мантисата;
- осем бита от 23 до 30 формират експонентата;
най-старшият MSB бит 31 е знаков
Като пример десетичната дроб 5,783 означава 5+7/10+8/100+3/1000;а двоичното представяне на числото 1,0101 е 1+ 0/2+1/4+0/8+1/16.
При нормализираното представяне на двоичните числа единственото число наляво от препинателния знак e само 1 и не е нужно да бъде представяне.
untitled12.JPG
Ако всички битове от 0 до 22 са нулеви, M придобива стойноост 1.
Ако всички битове от 0 до 22 са 1, M придобива стойноост почти равна на 2 и точно 2 – 2-23.
Най-голямото число, което може да се представи е
Mmax= ± (2-2-23) x 2128 = ± 6.8x 1038 ,
а най-малкото Mmin= ± 1.0 x 2-127 =± 5.9x 10-39.
Прецизността при формата с плаваща запетая не е фиксирана. Тя е около десет милиона пъти по-малка ( 2-24 до 2-23) от стойността на числото. Това е ключовото предимство на формата с плаваща запетая. По-големите числа имат по-големи разлика между съседните стойности, докато при малките числа тази разлика намалява. Някои операции с плаваща запетая изискват по-дълго време за обработка, но са ръзработени алгоритми с помощта на които групи изчислителни процедури се извършват многократно по-бързо.

Десетични числа

Десетичните числа са специален вид на представяне на числова информация, в основата на който е заложен принципа за кодиране на всяка десетична цифра на числото като набор от четири бита. При това всеки байт на числото съдържа една или две десетични цифри в така наречения двоично-десетичен код (BCD — Binary-Coded Decimal). Микропроцесорът съхранява BCD-числата в два различни формата:

  • опакован формат — в този формат всеки байт съдържа две десетични цифри. Десетичната цифра представлява двоичната стойност в диапазона от 0 до 9 с размер 4 бита. При което кодът на най-старшата цифра на числото заема старшите 4 бита. Следователно диапазонът на представене на десетичното опаковано число в един байт е от 00 до 99;
  • неопакован формат — в този формат всеки байт съдържа една десетична цифра в четирите си младши бита. Старшите четири бита имат нулева стойност. Наричат се зона. Следователно диапазонът на представяне на десетичното неопаковано число в един байт е от 0 до 9.

Пример за представяне на BCD-числа:
untitled13.JPG

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