Най-четените учебни материали
Най-новите учебни материали
***ДОСТЪП ДО САЙТА***
ДО МОМЕНТА НИ ПОСЕТИХА НАД 2 500 000 ПОТРЕБИТЕЛИ
БЕЗПЛАТНИТЕ УЧЕБНИ МАТЕРИАЛИ ПРИ НАС СА НАД 7 700
Ако сме Ви били полезни, моля да изпратите SMS с текст STG на номер 1092. Цената на SMS е 2,40 лв. с ДДС.
Вашият СМС ще допринесе за обогатяване съдържанието на сайта.
SMS Login
За да използвате ПЪЛНОТО съдържание на сайта изпратете SMS с текст STG на номер 1092 (обща стойност 2.40лв.)Компютърните Архитектури |
Целта на предмета “Компютърните Архитектури” е да ни въведе в конструкцията на компютрите и да разкрие основните принципи на тяхното действие; първият съвременен компютър се появява през 1945г. – военен проект на САЩ за бърз калкулатор; създава се от голяма група математици и инженери; името му е ENIAC; предкомпютърните машини на Чарлз Бабедж и Джон Атанасов не се основават на съвременните компютърни принципи; Джон фон-Нойман е основоположник на съвременните компютърни принципи; при Бабедж и Атанасов програмата е отделена от данните; при фон-Нойман програмата е вид данни и тя се запомня с данните в едно общо поле на оперативната памет; програмата представлява последователност от команди към процесора на компютъра, наречени инструкции; инструкциите са кратки и еднозначни и те определят какво трябва да прави процесора; те указват на процесора каква операция трябва да се извърши и къде се намират операндите, които участват (т.е. посочва се тяхния адрес); постулат на фон-Нойман: инструкциите се изпълняват от процесора последователно, т.е. в реда на тяхното записване; те се съхраняват в една и съща памет с операндите и в тази памет няма логическа разлика в това дали съдържанието е инструкция или операнд; постулатът на фон-Нойман е фундаментален принцип при създаване на съвременните компютри; компютърните архитектури, които се основават на този принцип се наричат фон-Нойманови архитектури; правени са неуспешни опити за създаване на друг вид архитектури; с развитието на технологиите се преминава от физически модел на фон-Нойман – физическа памет и физически процесор, а именно: - изтегля се инструкцията; - изтеглят се данните; - изпълнява се операцията; - записва се резултата; - преминава се към следващата инструкция; към концептуален модел на фон-Нойман – при него физическата реализация е по-сложна, например няколко инструкции влизат едновременно в процесора; това, обаче, остава скрито за програмиста и той планира програмите, основавайки се на постулата на фон-Нойман; това е изключително важно: например нека имаме операция x с операнд с адрес b и резултат с адрес a и операция y с операнд с адрес a и резултат с адрес c в следната последователност: x : a b y : c a това означава, че y използва като операнд резултата от x и за да се изпълни y трябва да завърши x; цялото програмиране се базира на това, че инструкциите се изпълняват последователно и ако поставим инструкция y след инструкция x, това означава че y ще използва резултата от x; работата на компютъра се определя от програмите и наредбата на инструкциите в тях; правени са опити да се изгради архитектура, при която данните също да имат роля – например, ако някакъв операнд е готов, програмата, използваща този операнд сама да се изпълни; оказва се, обаче, че е непостижимо за човешката мисъл да използва такива архитектури; процес на изчисление е събитие във времето, когато във фон-Нойманова машина под управление на запомнена програма се извършва изчисление върху конкретни данни; компонентите, които участват в процеса на изчисление са следните: - физическата среда (компютъра); - програмата, която представлява набор от инструкции; - логическата среда, която се създава от конкретните данни; - предисторията на процеса – често има голямо значение каква програма се е изпълнявала преди това; идеалният случай е една фиксирана последователност от инструкции с фиксиран набор от данни да поражда един и същи резултат на всички машини, на които се изпълнява; задължителният случай е на един и същ компютър една програма при един и същи входни данни да връща един и същи резултат при всяко нейно изпълнение; целта на предмета “Компютърни Архитектури” е да познаваме съществото на реалния изчислителен процес; това има голямо значение – може алгоритъмът, който реализираме да е правилно написан, но да има проблем при самото изчисление; задачата на компютрите е с тях да може да се моделират изчислителни процеси; представянето на данните в компютрите е основен момент; първите предкомпютърни устройства представят данните в десетична бройна система; това е физически много трудно постижимо – трябват ни изграждащи елементи с десет на брой различни, устойчиви състояния; пример е устройството на Чарлз Бабедж, което има механична постройка; основен елемент е колело, което чрез завъртане може да преминава в десет състояния; преминаването от едно състояние в друго става за няколко секунди; изчислителният процес се развива като съвкупност от изменения на състоянията на всички елементи, които участват в процеса; така времето за изпълнение на процеса съществено зависи от времето за преминаване от едно състояние в друго; не е важно изчислителният процес да е само коректен, той трябва да се включва в адекватни граници във времето; за пръв път през 1945 г. са създадени електронните лампи, които могат да се намират в две състояния – 0 (изключено), 1 (включено) и могат достатъчно бързо да преминават от едно състояние в друго; електронните лампи са сравнително обемисти – това е проблем, тъй като за представяне на информация ни трябват между три и четири пъти повече двоични елементи отколкото десетични елементи; под един бит разбираме количество информация, за която отговаря един електронен елемент; първият компонент на компютъра е паметта; първоначално паметта се изгражда като се определя основна структурна единица, наречена машинна дума – определя се нейната ширината в битове; паметта се изгражда като едномерен линеен масив от еднакви машинни думи; думите в линейния масив се номерират с последователни номера, наречени адреси; номерацията започва от 0 и стига да последния наличен физически адрес; концептуално, под адресация ще разбираме следното: формира се адрес, на паметта се подава адрес и тя връща съдържанието на машинната дума на този адрес; паметта се изгражда като устройство, което може да извършва следните две операции: - четене – подаване на адрес и извеждане съдържанието на съответната машинна дума; - писане – подаване на адрес и на машинна дума, която се записва на този адрес; старата информация в машинната дума се губи; това е логическият модел на паметта; от архитектурна гледна точка паметта се реализира физически като тримерни матрици; когато се подаде адрес (двоичен) има устройство, което го дешифрира – адресът насочва устройството към онези елементи, които съдържат съответните битове; времето за дешифрация и времето за прочитане са крайни времена; под време на достъп разбираме времето от подаването на адреса до извличането на данните; времето на достъп нараства с обема на паметта; вторият компонент на компютъра е процесора; той осъществява процеса на изчисление, по-точно той изпълнява инструкциите; структурно процесорът работи по следния начин: - процесорът взима поредната инструкция от паметта, т.е. адресира поредната инструкция; - след това дешифрира инструкцията – определят се операцията и се адресират операндите; - самото изчисление се извършва от аритметично логическо устройство (ALU); по технически причини ALU-то има най-много два операнда; на практика операции с много операнди се свеждат до операции с два операнда; след адресацията на ALU-то са подадени двата операнда, то изчислява резултата и го записва на адрес, посочен в инструкцията; - след записване на резултата се преминава към следващата инструкция; това е логически модел на фон-Нойманово изчисление; много важен елемент в процесора е броячът на командите (адрес на инструкциите); това е запомнящ елемент от регистров тип, т.е. в него се пише без адресиране; регистрите са единични машинни думи, които не са част от паметта; в регистъра на адреса на инструкциите се поддържа адресът на текущата инструкция, която изпълнява процесора; една фон-Нойманова машина се намира в постоянен цикъл: - адресиране и извличане на инструкцията – по съдържанието на брояча на командите; - дешифриране на инструкцията; - увеличаване на брояча на командите с дължината на инструкцията; (обновяване на брояча на командите) - адресиране на операндите; - изпълнение на операцията; - записване на резултата; - преминаване към следващата инструкция; инструкцията за преход е специална инструкция; тя има основен операнд адрес на инструкция – този адрес се записва в брояча на командите в предпоследната стъпка; инструкциите за преход могат да породят безкраен цикъл на изпълнение, въпреки линейното ограничение на паметта; смисълът на изчислителния процес – да се въздейства на входни данни за да се получат изходни данни; това предполага в компютъра да има входно-изходна система с която той да обменя данни с обкръжаващия свят; технологически, компютрите се развиват много през последните 50 години; през 1949 г. е създаден транзистор (електронен ключ), по-късно се осъществява интеграция на много транзистори върху силиконова пластина; днес на една пластина с размери два на два сантиметра се интегрират над 100000000 двоични елементи (ключове); напредъкът в компютърните технологии основно се дължи на развитието на полупроводниковата електроника; големият проблем на електронните елементи е, че трябва енергия, при която се отделя голямо количество топлина; днес интегрални схеми, наречени чипове, са основната съставна част на един компютър; с развитието на компютрите се оказва, че машинната дума не е най-удобната адресуема единица – това е следствие от нейното разширяване; въвежда се друга основна адресуема единица – байт (B); един байт е осем бита; ширината на машинната дума се определя от ширината на кой да е от входовете или изхода на ALU-то; в момента стандартът е машини с 32-битова дума, т.е. една машинна дума е 4B; капацитетът на паметта се мери в байтове; никоя памет концептуално не може да чете част от байт; физически, броят байтове, които се обменят е по-голям и зависи от броя линии върху шината; в един двоичен адрес най-десните десет бита могат да адресират един килобайт (KB); най-десните двайсет бита могат да адресират един мегабайт (MB); най-десните тридесет бита могат да адресират един гигабайт (GB); под един килобайт разбираме 210 = 1024 B, под един мегабайт 220 = 1048576 B, под един гигабайт 230 = 1073741824 B; така например, с три байта адресно поле могат да се адресират 16MB; с четири байта адресно поле могат да се адресират 4GB; увеличаването на адресното поле в крайна сметка налага увеличаване на ширината на машинната дума; капацитета на паметта вече се измерва в MB, GB; също, компютрите използват и външна памет – до нея достъпът е по-бавен, но тя има по-голям капацитет; основно за външна памет се използват магнитните дискове; тяхният капацитет се измерва в GB; понякога за удобство ще изобразяваме битовите количества в тетради и ще ги представяме с шестнадесетични цифри; в ALU-тата има операции за двоична аритметика; стандартно целите числа се представят по следния начин: знаков бит, старши бит, ... знаковият бит е 1 при отрицателните числа и те са представени в допълнителен код; знаковият бит е 0 при положителните числа и те са представени в прав код; колкото по-малко е едно положително число, толкова повече нули има в старшите битове; колкото по-малко (по абсолютна стойност) е едно отрицателно число, толкова повече единици има в старшите битове; когато се изпълнява операция с ALU-то и се получи резултат, който е по-широк от ширината на машинната дума, тогава се регистрира препълване; един прост критерий за препълване е следния – преносът от старши бит към знаков и преносът от знаков бит навън да са различни; препълването означава некоректен резултат и то трябва да се сигнализира архитекурно; друг начин за представяне на числата е чрез десетични цифри, кодирани като двоични (с четири бита); операциите върху такива числа могат да се извършват и от двоично ALU, стига да са осигурени операции за преобразуване от и към двоичното представяне от по-горе; съществуват и десетични ALU-та, които извършват директно операциите с числа, кодирани по този начин; числата с плаваща точка се представят чрез порядък p и мантиса m; повечето архитектури възприемат основа на числото да е 16; характеристика на числото е порядъкът със знак; така стойността на числото е m.16p или m.16-p в зависимост от знака на порядъка; характеристиките са фиксирани във всички архитектури – обикновено са 7-битови (един бит е за знак); най-често мантисата е три байта; мантисата има знаков бит, който обикновено е осмият бит в байта на характеристиката; под нормализация на мантисата разбираме долепяне на значещите битове до десетичната точка (и съответното отразяване в порядъка); мантисата винаги се поддържа нормализирана; обикновено в процесорите за нуждите на аритметиката с плаваща точка има друго ALU – FPU; в него няма логически операции; кое ALU ще се използва зависи от операцията, която се изпълнява; в общата структура на компютъра има два компонента – CPU (процесор) и STORAGE (запомняща част); в STORAGE се пазят инструкциите и данните; частта STORAGE се структурира в йерархия; CPU трябва да има постоянна връзка със STORAGE за да изтегля данни и инструкции и да записва резултата; в CPU имаме следните компоненти: - ALU – аритметично логическо устройство за операции с аритметика с фиксирана точка; - FPU – аритметично устройство за операции с аритметика с плаваща точка; - DEC – дешифратор на инструкции; - PC – брояч на командите, където се формира адресът на следващата инструкция; по-нататък структурата на процесора се определя от формата на инструкциите; по отношение на този формат развитието на компютърните архитектури е преминало през различни етапи: - инструкции с фиксирана дължина (обикновено 32 бита); важно е, че всички инструкции на дадена архитектура са с една и съща дължина; - инструкции с променлива дължина – при тях в зависимост от старшите байтове (обикновено от най-старшия) се определя дължината на инструкцията; тази дължина може да бъде различна; например инструкциите при архитектурата на машините VAX имат максимална дължина на инструкцията 321 байта; предимства и недостатъци на двата подхода: - при инструкциите с фиксирана дължина се опростява дешифрирането на инструкциите – ускорява се процеса на дешифрация; такъв формат на инструкциите е удобен за векторни и скаларни процесори; векторните процесори представляват масив от много еднакви процесорни блокове, които едновременно изпълняват една и съща операция, но върху различни операнди (например покомпонентно събиране на два вектора); недостатък на инструкциите с фиксирана дължина е разточителството на памет, тъй като не всички инструкции се нуждаят от цялото поле; също, при по-малка дължина на инструкциите има ограничение на възможността за адресация; - при инструкциите с променлива дължина дешифраторът постепенно обработва инструкцията и разбира нейната дължина в процеса на обработване; например при архитектурата VAX дължината не се познава още от първото поле; недостатък на инструкциите с променлива дължина е усложняването на дешифриращия блок; самото дешифриране се извършва на няколко цикъла – при архитектурата VAX инструкциите се дешифрират средно на четири цикъла; архитектурата VAX отпадна по икономически причини; понастоящем най-масово се приема повечето инструкции да са с фиксирана дължина 32 бита, но има изключение за определен набор от инструкции, които са дълги повече от 32 бита; в общия случай една инструкция съдържа следните компоненти: - поле за код на операция; - адрес на първия операнд или самия първи операнд; - адрес на втория операнд или самия втори операнд; - адрес на резултата; в този най-общ вид се разчита на бинарни операции; по отношение на адресите различаваме три типа архитектури – триадресни, двуадресни и едноадресни; ако в инструкцията присъстват три отделни полета, указващи адресация на три различни елемента имаме триадресна машина; при наличие на две отделни адресни полета имаме двуадресна машина; класическият случай е адреса на резултата да е адресът на първия операнд; в зависимост от кода на операцията в инструкцията резултатът може да се запише и във втория операнд; при едноадресните машини в инструкцията присъства само адресът на втория операнд; първият операнд се подразбира – нарича се акумулатор (ACC) и се намира в специален регистър на централния процесор; по този начин не е необходимо неговото задаване в инструкцията; резултатът се записва в акумулатора; в общия случай при едноадресни машини програмите не са по-къси; ако отделните инструкции в една програма работят с различни операнди, то трябва преди всяка инструкция акумулатора да се зарежда с първия операнд; акумулаторът има своето предимство – например при последователно събиране на десет числа той може да натрупва в себе си междинния резултат; по този начин, ако програмата е строго линейна и всяка инструкция използва резултатът от предишната инструкция, то се намалява дължината на програмата и се увеличава нейната бързина; тъй като акумулаторът е вътре в процесора времето за достъп до него е пренебрежимо малко в сравнение с времето за достъп до оперативната памет; съвременните компютри се изграждат на цифрови схеми; основата е преобръщането на малки изграждащи елементи, наречени тригери, които могат да заемат две устойчиви състояния, съответни на логическите стойности 0 и 1; тригерите се изграждат на базата на транзистори и техните свойства се определят от протичащия през тях електричен ток; преобръщането на тригер става за крайно ненулево време; при построяване на логически компютър се счита, че тригерите се преобръщат за безкрайно малко време; на практика това не може да е така, тъй като тригерите са съставени от физически елементи; най-често логическата стойност 1 се асоциира с физически висок потенциал – 5V, а логическата стойност 0 се асоциира с потенциал 0V; преобръщането на тригерите става за малък интервал от време, който се натрупва; тригерите може да са свързани каскадно и паралелно; при каскадното свързване тригерите се разполагат един след друг и преобръщането на първия тригер в каскадата води до последователно преобръщане на всички останали тригери в каскадата; броят на тригерите в една каскада е променлив; времената за преобръщане се натрупват и се появява време на закъснение или още време за преходния процес – това е времето за което се преобръщат всички тригери в каскадата; бързодействието на всеки блок в компютъра се определя от времето за преходния процес; конструкторите на компютрите трябва да могат да градят стабилни цифрови схеми, а времето на закъснение се наслагва от различните блокове; налага се синхронизация във времето – появяват се периодични временни интервали, които да указват началото на поредната стъпка на действие, което се извършва на етапи; например изпълнението на инструкция е многоетапно действие, като се засягат различни цифрови подблокове на процесора; синхронизацията се извършва по следния начин – подава се импулсна последователност от специален тактов генератор с коефициент на запълване 1 – периодичен импулсен сигнал; неговата продължителност се определя от времената на преходните процеси на отделните подблокове в централния процесор; най-дългия преходен процес на най-сложния подблок трябва да се побере в периода на импулса; смисълът е, че в началото на всеки такт всички микрооперации са завършени; така нареченият overcloaking намалява периода на импулса и схемите започват да работят нестабилно – например една микрооперация започва преди да е завършила предишната микрооперация; периодът се измерва във време: - в милисекунди (една хилядна от секундата) – mS; - в микросекунди (една милионна от секундата) - S; - в наносекунди (една милиардна от секундата) – nS; - в пикосекудни (една трилионна от секундата) – pS; по-нататък няма смисъл от мерни единици за по-малък период, тъй като скоростта на импулса достига скоростта на физичния максимум – скоростта на светлината; в развитието на компютрите последователно се преминава от периоди в S до периоди в nS; друга характеристика, реципрочна на периода е честотата – колко периода има за една секунда; честотата се измерва в херцове (Hz); - в една секунда има 1 Hz периода; - в една милисекунда има 1 KHz периода; - в една микросекунда има 1 MHz периода; - в една наносекунда има 1 GHz периода; - в една пикосекунда има 1 THz периода; в момента централните процесори имат честота в диапазона на гигахерците; за изпълнението на най-простите инструкции са необходими поне два такта, въпреки че теоретично, по схемата на фон-Нойман, една инструкция трябва да се изпълни на четири такта; това се постига чрез въвеждане на конвейеризация в работата на процесора – така наречения pipelining; мярка за скоростта на един процесор е неговата тактова честота; трудно може да се очаква физически постигане на повече от десет гигахерцови честоти; оттам нататък повишаване на производителността на процесора може да се постигне само с архитектурни промени; когато се проектира процесор се определя краен набор от инструкции, пригодени за този процесор; множеството от инструкции на конкретна архитектура (ISA) определя структурата на компютъра по отношение на програмистите на машинен език; те трябва да разбират тази структура, за да могат да създават коректни програми на този компютър; понастоящем програмистите на машинен език почти единствено създават компилатори за езици от по-високо ниво; ISA определя функционалността на процесора: - какви операции поддържа; - какви са механизмите за запомняне и адресация и как те се използват; - как се употребява процесора за комуникация с машинни програми и компилатори към машинни програми; в крайна сметка процесорът изпълнява само машинни програми; компилаторите са специални програми за конкретен процесор, които превеждат програми на езици на по-високо ниво към машинни програми; характеристики на едно добро ISA са следните: - реализуемост – как ISA ще се реализира в процесора; възможно е с едно и също ISA да се реализират процесори с различно ниво на производителност; всички добри ISA допускат това – например архитектурата INTEL поддържа едно и също ISA за процесори от 4MHz до 4GHz; възможно е да се направи реализация, в която по сложните инструкции се емулират чрез по-прости, т.е. да се изпълняват като последователност от по-прости инструкции; този подход е с ниска производителност и се счита за лош – смисълът е всяка една инструкция да се изпълнява директно от процесора; - програмируемост – разбираемост на инструкциите; например архитектурата INTEL X86 не е добра от гледна точка на разбираемост на програмите за нея; в началото няма почти никакви изследвания в областта на компилаторите; ASSEMBLER е език, който е директно свързан с машинния език на компютъра – той представлява еднозначно изображение на машинния език върху символи за изображение; до 1975 година масовият случай на програмиране е на асемблерски код; от 1975 до 1985 година повечето програми се компилират, но се счита че добрите програми се пишат на ASSEMBLER; от 1985 година до сега почти всички програми се компилират и се счита, че те са поне толкова добри колкото асемблерските; това се дължи на развитието на теорията на компилацията и на подобрението на някои езици от по-високо ниво; през последните 20 години архитектурите се развиват в посока, в която най-добър машинен код при компилиране се получава от програми на C; възможно е по-нататък от C да се премине към JAVA; - съвместимост на ISA във възходящ и низходящ ред в развитието на архитектурата; под възходяща съвместимост разбираме програми за по-стари процесори да могат да се използват в следващи генерации на процесори за тази архитектура; под низходяща съвместимост разбираме програми за по-нови процесори да могат да се изпълняват и на по-стари процесори; низходящата съвместимост е доста по-трудно постижима и практически не се постига сто процента; от гледна точка на семантичната сложност се получават два крайни лагера ISA: - инструкционни множества CISC (complicated instruction set computers); при тях ISA има огромно количество елементи; основна характеристика при CISC е наличието на инструкция за преход към подпрограма със запазване на състоянието на извикващата програма и също връщане от подпрограма с възстановяване на състоянието; - инструкционни множества RISC (reduced instruction set computers); при тях имаме минимално множество от ортогонални инструкции, т.е. действието на една инструкция не може да се опише чрез останалите; стремежът е за бързодействие и минималност по брой тактове за изпълнение – обикновено при RISC всички инструкции за един и същи брой тактове; за RISC-процесори е тежко програмирането на машинен код, тъй като са необходими много инструкции за описание на по-сложни операции; различни аспекти на ISA: - формат на инструкциите – определя дължината и начина на кодиране на инструкциите; - операции – какви операции се осигуряват, тип на данните, формат на числата, вид на операндите за всяка операция; различни архитектурни решения се опростяват с наличието на вътрешна процесорна памет (например PC и ACC); тя има голямо приложение при адресацията за двуадресни архитектури; вътрешната процесорна памет се въвежда като блок от регистри – някои общи и други със специално предназначение; общите регистри могат да се разглеждат като акумулатори; в началото регистрите са били 4 или 16 на брой и са се адресирали съответно с 2 или 4 бита; върховото постижение до момента е процесорът ITANIUM на INTEL, който има 128 регистъра, които се адресират със 7 бита; вътрешната памет касае структурата и състава на регистрите; например част от регистрите могат да се използват за цели числа със знак, други само за адреси; може да има регистри за числа с плаваща точка; един или повече регистри се наричат стекови указатели; стекът е специална структура за запомняне, която е удобна за адресиране в инструкциите; двете операции със стек са push – за включване и pop – за изключване; добавянето и изключването става само във върха на стека; стековият указател е специален брояч, който с всяка команда за работа със стека автоматично променя своето значение; когато се влиза в подпрограма, цялото състояние на извикващата програма се вмъква във върха на стека; състоянието на програмата е свързано с всички регистри и още някои структури от регистров тип; когато започне връщането от подпрограмата се възстановява състоянието на извикващата програма, което се намира във върха на стека; в паметта стекът може да се реализира по два начина – или дъното на стека е във висок адрес и върхът се движи към ниски адреси при добавяне или стекът нараства от ниски към високи адреси; първата реализация се използва по-често; когато се реализира стек трябва да има регистър, който указва къде е дъното на стека; стекът е празен, ако върхът и дъното съвпадат; мястото в паметта за стека се използва само от него и той има фиксиран максимален капацитет; физически стекът се намира в оперативната памет, но при него няма адресиране; логически стекът е част от вътрешната памет на процесора, тъй като работата с него се командва от стековия указател; основна характеристика на оперативната памет е размера на адресното поле, който съвпада с дължината на машинната дума; например 32 бита (4 байта) могат да адресират 4GB памет; съществуват различни режими на адресация: - абсолютна адресация – в инструкцията е записан самият адрес, т.е. всичките 4 байта; тази адресация е неудобна, тъй като заема много място в инструкцията; - относителна адресация – адресът се формира чрез базов адрес и отместване; например базов адрес може да е съдържанието на PC и тогава адресът е на някакво отместване от края на текущата инструкция; възможно е отместването да става спрямо съдържанието на предварително фиксиран общ (или адресен) регистър, наречен базов регистър; съдържанието на базовия регистър може да се променя само със специална операция; предимството на относителната адресация е в това, че отместването може да е по-късо от целия адрес; някои архитектури изискват изравняване на границите на данните (data alignment); например това означава двубайтови структури да започват на четен адрес, четирибайтови структури на адрес, кратен на 4 и т.н.; за да се преодолее линейното ограничение на паметта възниква нужда за нарушаване на естествения ред на изпълнение на инструкциите; това се постига чрез инструкции за условен и безусловен преход, инструкции за преход към подпрограма и връщане от подпрограма, инструкции за влизане в прекъсване и връщане от прекъсване; при RISC-процесорите няма запазване на състоянието при влизане в подпрограма; напоследък се появиха инструкции за предсказване; при тях се извършват действия без да се знае какви данни участват; стремежът е да се намалят броя на инструкциите за условен преход в програмите; видове операции: - аритметически и логически върху цели числа със знак – събиране, умножение, конюнкция, дизюнкция; изваждането, делението, отрицанието, сумата по модул 2 могат да се изразят чрез тях; - аритметически операции върху числа с плаваща точка – събиране, умножение, коренуване; - десетични операции върху цели числа – десетично събиране с корекции и конвертиране от двоични числа в десетични числа и обратно; - низови операции – прехвърляне на низове, сравнение на низове; - мултимедийни операции (MMX) – специални векторни операции, които имат голямо приложение при обработка на изображения; при тях ALU се използва наведнъж за няколко по-малки числа; - операция за прехвърляне на данни от едно място на паметта в друго (move); - операция за прехвърляне на данни от паметта в регистрите (load); - операция за прехвърляне на данни от регистрите в паметта (store);
|