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

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

Лекция 11 ОСНОВНИ КОМПЮТЪРНИ КОМАНДИ Класификация на командите по различни критерии Структура на компютърните команди Команди за пренос на данни Команди за обработка на данни Команди за прехвърляне на управление Команди за работа с подпрограми. Купчини. Други компютърни команди.

Компютърна командна система Цялото разнообразие от проблеми, решавани на компютър, се изпълнява с помощта на малък набор от много прости команди. Командната система на типичен компютър включва само 60-150 основни команди. Всички команди се използват главно за извършване на много прости действия, като четене, запомняне, добавяне, преместване, сравняване и т.н. Интелигентността на компютъра се постига благодарение на факта, че компютърът е способен да изпълнява програми, състоящи се от голям брой такива прости действия с огромна скорост, непостижима за хората. Когато се описва компютърна командна система, обикновено е обичайно командите да се класифицират според следните критерии.

Класификация на компютърните команди По функционално предназначение Команди за пренос на данни Команди за обработка на данни Команди за прехвърляне на управление Допълнителни (други) По брой адреси Нулев адрес или без адрес С един адрес С два адреса С три адреса По метод на кодиране на операцията По дължина С фиксирана дължина на кода на операцията С променлива дължина на кода на операцията Чрез метод на адресиране Един байт (дума) Два байта (думи) Три байта (думи)

Код на операция a 1 a 2 a 3 - Триадресна команда a 1, a 2 – адреси на клетки (регистри), където се намират участващите в операцията числа (операнди) и 3 – адрес на RAM клетка, където трябва да бъде резултатът поставен Операционен код a 1 a 2 - Двуадресна команда Резултатът се записва в клетка a 2 Операционен код a 1 - Uniaddress команда a 1 – адрес на клетката, където се съхранява номерът, участващ в операцията, или адресът на клетката, в която резултатът се записва Операционен код - Команда за нулев адрес Всички операнди в регистъра на процесора

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

Команди за обработка на данни Тази група команди, по отношение на операциите, извършвани върху данни, могат да бъдат разделени на аритметични (събиране, изваждане, умножение, сравняване), логически (операции И, ИЛИ, НЕ и др.) и команди за смяна. Инструкциите от този тип могат да имат един или два операнда. Операндите могат да се съхраняват в регистрите на процесора, в паметта или в самата инструкция.

Резултатът от операцията се формира в приемен регистър или в специализиран акумулаторен регистър. Командите от тази група също формират знаци за резултат, които се задават в регистъра на флаговете на процесора: прехвърляне от най-значимия бит, препълване, нулев резултат и др.

Научете повече за командата за сравнение Обикновено процесорът извършва операция за изваждане, за да сравни две числа. Въз основа на резултата от изваждането се задават флаговете в регистъра на флаговете. Очевидно, ако сравняваните числа са равни, резултатът от изваждането ще бъде нула и флагът за нулев резултат ще бъде зададен в регистъра. Ако първото от сравняваните числа е по-голямо, резултатът от изваждането ще бъде отрицателен и ще бъде зададен флагът за отрицателен резултат. Резултатът от изваждането не се съхранява в паметта, тъй като състоянието на флаговия регистър може да се използва за преценка на резултатите от сравняването на числа.

Команди за прехвърляне на контрол Те са важни, защото се използват за промяна на естествения ред на командите и организиране на циклични секции в програмите. Най-простата инструкция за прехвърляне на управление е JMP инструкцията за безусловен скок, която зарежда адреса за скок, посочен в инструкцията, в програмния брояч. Инструкциите за условно прескачане тестват условието, посочено в командата, и променят брояча на програмата, ако условието е вярно.

Src="http://present5.com/presentation/3/-29919247_13569617.pdf-img/-29919247_13569617.pdf-11.jpg" alt="Пример за команда за условно прескачане IF оператор (A>B) ) след това отидете на L на някакъв език"> Пример команды условного перехода Оператор IF (A>B) then go to L некоторого языка высокого уровня может быть реализован двумя командами ЭВМ: СРАВНИТЬ А и В ПЕРЕЙТИ ЕСЛИ БОЛЬШЕ К АДРЕСУ L Если А>В, то результат вычитания будет положителен и соответственно флаг знака во флаговом регистре не установится. Вторая команда (условный переход) проверяет состояние флага знака и, если он не установлен, модифицирует программный счетчик так, чтобы его значение указывало на адрес L.!}

Организация на подпрограмите В програмирането широко се използва техника, наречена организация на подпрограми. Една подпрограма е описана веднъж, но може да бъде извикана многократно от различни места в програмата. Една подпрограма може да извика друга, докато работи. След като подпрограмата приключи своята работа, управлението трябва да бъде прехвърлено на следващата команда в паметта непосредствено след командата за достъп до тази подпрограма. Адресът на командата, към която се прехвърля управлението след завършване на подпрограмата, се нарича адрес за връщане.

Къде да съхранявам адреса си за връщане? За да започне изпълнението на подпрограма, програмният брояч трябва да бъде зареден с адреса на първата команда от подпрограмата. За да се върнете от подпрограма, трябва да запомните адреса за връщане някъде. Можете например да съхраните обратния адрес в един от регистрите на процесора. Този метод за съхраняване на адреса за връщане е много прост и лесен за изпълнение. Обаче често се срещат подпрограми, които извикват други подпрограми. Нека главната програма извика подпрограма A. Тя от своя страна извика подпрограма B. Ако адресът за връщане за подпрограма A се съхранява в регистър на процесора, тогава къде трябва да бъде поставен адресът за връщане при извикване на подпрограма B?

Обобщен алгоритъм за работа на фон Нойманов компютър Инициализация Извличане на команда Увеличаване на програмния брояч Декриптиране и изпълнение на команда Не Команда „Спиране на процесора“ Да Инициализация

Концепцията за стека Повечето компютри използват поддържана от хардуер структура от данни, наречена стек. Стекът е структура от данни, организирана в съответствие с принципа последен влязъл, първи излязъл, т.е. последните данни, записани в стека, са първите, които се извличат от него. Превод от английски. стек - стек. Аналог на купчина може да бъде купчина чинии. Можете да поставите чиния в купчина само отгоре, можете да премахнете само горната чиния без никакви проблеми.

Организация на стека 1. В компютъра се разпределя област от RAM за организиране на стека и регистър на указателя на стека се използва за адресиране и достъп до стека. 2. Регистърът на указателя на стека съхранява адреса на клетката от паметта, съдържаща последната стойност, избутана в стека. 3. Когато число се запише в стека, указателят на стека се модифицира, за да сочи към следващото свободно място и данните се записват в него.

4. При изскачане от стека данните се четат от OP клетката, към която сочи указателят, след което указателят на стека се модифицира, за да сочи към предпоследната стойност, съхранена в стека. 5. Обикновено стековете растат в посока на намаляване на адресите, т.е. при запис на число указателят на стека намалява, а при изваждане на число от стека се увеличава.

Команди за работа с подпрограми. Стекове Стек = OP клетки + регистър - указател на стека (CPU ALU) Регистър - указателят на стека съхранява адреса на OP клетката, която съдържа последния адрес за връщане, поставен в стека Структура на данните на стека, използвайки пример A) Първоначално състояние: празни стекови OP клетки Клетъчни адреси 1000 Стек на указател 998 996 B) Два адреса за връщане се записват в стека: 1234 и 5678 1234 1000 Указател на стека 5678 998 Записване на адреси за връщане 996 C) Един адрес се изважда от стека, последният указател на стека 1234 1000 998 996 Четене 1000

Src="http://site/presentation/3/-29919247_13569617.pdf-img/-29919247_13569617.pdf-19.jpg" alt="Работа на командата за извикване на подпрограма CALL 1. Когато процесорът прочете CALL команда от паметта"> Работа команды вызова подпрограмм САLL 1. Когда процессор считывает из памяти команду САLL , программный счетчик увеличивается и показывает на команду, следующую за командой САLL. То есть программный счетчик теперь содержит адрес возврата, с которого должно продолжиться выполнение основной программы после окончания работы подпрограммы. 2. При выполнении обращения к подпрограмме процессор сохраняет содержимое программного счетчика в стеке, точнее, в его ячейках ОП. 3. Далее в программный счетчик загружается адрес команды, с которого начинается подпрограмма. Процессор приступает к выполнению подпрограммы.!}

Действие на командата RETURN 1. За да се върнете от подпрограма към основната програма, използвайте командите RETURN. 2. Инструкцията за връщане от подпрограмата изважда адреса за връщане, съхранен в стека, от стека и го поставя в програмния брояч. 3. Процесорът започва да изпълнява основната програма. 4. Ако е имало няколко вложени извиквания на подпрограми, тогава връщането ще се случи на адреса за връщане, записан от последното извикване (тъй като стекът се използва за съхраняване на адреси за връщане и последният записан адрес за връщане ще бъде извикан първи).

Други компютърни команди В компютъра може да има допълнителни (специални) команди. Те включват команди за спиране на централния процесор, нулиране на външни устройства, инсталиране или нулиране на отделни функции и т.н. И така, в тази лекция бяха накратко обсъдени основните команди, използвани в типичните компютри, и действията, изпълнявани от тези команди.

Важен компонент на компютърната архитектура е системата за инструкции. Въпреки големия брой видове компютри, на най-ниското („машинно“) ниво те имат много общи неща. Командната система на всеки компютър задължително съдържа следните групи команди за обработка на информация. 1. Команди за прехвърляне на данни (преброяване), които копират информация от едно място на друго. 2. Аритметични операции, на които компютърната технология всъщност дължи името си. Разбира се, делът на изчислителните действия в съвременния компютър значително е намалял, но те все още играят важна роля в програмите. Имайте предвид, че основните аритметични операции обикновено включват събиране и изваждане (последното в крайна сметка най-често се свежда до събиране по един или друг начин). Що се отнася до умножението и деленето, в много компютри те се извършват с помощта на специални програми. 3. Логически операции, които позволяват на компютъра да анализира обработваната информация. Най-простите примери са сравнението, както и добре познатите логически операции И, ИЛИ, НЕ (инверсия). В допълнение към тях често се добавя анализ на отделни кодови битове, тяхното нулиране и инсталиране. 4. Двоичният код се измества наляво и надясно. За да се докаже важността на тази група команди, е достатъчно да се припомни правилото за умножение по колони: всеки следващ продукт се записва в такава схема с изместване на една цифра наляво. В някои специални случаи умножението и делението обикновено могат да бъдат заменени с отместване (не забравяйте, че чрез добавяне или премахване на нула отдясно, т.е. действително преместване на десетично число, можете да го увеличите или намалите с 10 пъти). 5. Команди за въвеждане и извеждане на информация за обмен с външни устройства. В някои компютри външните устройства са специални служебни адреси на паметта, така че въвеждането и извеждането се извършва с помощта на команди за преброяване. 6. Команди за управление, които реализират нелинейни алгоритми. Това включва предимно условни и безусловни скокове, както и команди за извикване на подпрограма (скок с връщане). Някои компютри имат специални команди за организиране на цикли, но това не е необходимо: цикълът може да бъде намален до една или друга комбинация от условни и безусловни преходи. Често същата тази група от команди включва няколко операции за управление на процесора, като „стоп“ или NOP („без операция“). Понякога те са разделени в специална група. С нарастването на сложността на процесорното устройство се увеличава и броят на командите, които анализират състоянието на контролните битове и действат върху тях. Тук като пример можем да посочим битовете за режим на работа на процесора и битовете за управление на механизмите за прекъсване от външни устройства. Напоследък все по-важна роля в набора от команди играят командите за преобразуване от един формат на данни в друг (например от 8-битов в 16-битов и т.н.), които значително опростяват обработката на данни от различни типове, но по принцип може да се замени с поредица от няколко по-прости команди. Като се има предвид командната система, не може да не се споменат две съвременни взаимно конкуриращи се посоки в нейното изграждане: компютър с пълен набор от команди CISC (Complex Instruction Set Computer) и с ограничен набор - RISC (Reduced Instruction Set Computer). Разделението възниква поради факта, че през по-голямата част от времето компютърът трябва да изпълнява малка част от своя набор от инструкции, докато останалите се използват спорадично (една популярна статия шеговито формулира това под формата на следната визуална аналогия: „20 % от населението пие 80% от бирата. По този начин, ако значително ограничите набора от операции до най-простите и най-кратките, но внимателно ги оптимизирате, ще получите доста ефективна и бърза RISC машина. Вярно е, че ще трябва да платите за скорост от необходимостта да внедрите „изхвърлени“ команди в софтуера, но често това плащане е оправдано: например за научни изчисления или компютърна графика скоростта е много по-важна от проблемите с програмирането. Въпросите, свързани със системата за инструкции на съвременните микропроцесори, ще бъдат разгледани по-подробно по-късно в тази глава. За да обобщим, още веднъж подчертаваме, че основният набор от команди се е променил доста малко по време на бързото развитие на компютрите. В същото време методите за посочване на адреса на местоположението на информацията в паметта са претърпели значителни промени и заслужават специално внимание. Една компютърна команда обикновено се състои от две части – операционна и адресна. Оперативната част (иначе наричана код на операцията - OPC) показва какво действие трябва да се извърши с информацията. Адресната част описва къде се съхранява използваната информация. Няколко няколко команди за управление на работата на машината може да нямат адресна част, например в командата за спиране; работната част винаги е там. Операционният код може да се разглежда като определено условно число в общия списък на командните системи. По принцип този списък е изграден в съответствие с определени вътрешни модели, въпреки че те не винаги са очевидни. Адресната част има много по-голямо разнообразие и трябва да се разгледа по-подробно. На първо място, отбелязваме, че инструкциите могат да бъдат едно-, дву- или триадресни, в зависимост от броя на операндите, включени в тях. Първите компютри имаха най-простата и интуитивна триадресна командна система. Например: вземете числа от адресите на паметта A1 и A2, съберете ги и поставете сумата в адрес A3. Ако една операция изисква по-малък брой адреси, тогава допълнителните просто не се използват. Да кажем, че в операцията по преброяването бяха посочени само клетките източник и получател на информация A1 и A3, а съдържанието на A2 нямаше значение. Командата с три адреса беше лесна за дешифриране и удобна за използване, но с нарастването на обема на RAM, дължината й стана непосилно голяма. Всъщност дължината на командата е сумата от дължината на три адреса и кода на операцията. От това следва, например, че за скромна RAM от 1024 клетки, само писането на адресната част на една команда изисква 3 * 10 = 30 двоични бита, което не е много удобно за техническа реализация. Затова се появиха двуадресни машини, при които дължината на командата беше намалена чрез елиминиране на адреса за запис на резултата. В такива компютри резултатът от операцията оставаше в специален регистър (добавител) и беше подходящ за използване при последващи изчисления. В някои машини резултатът беше написан вместо един от операндите. По-нататъшното опростяване на командата доведе до създаването на уникаст машини. Нека разгледаме командната система на такъв компютър, използвайки конкретен прост пример. Да предположим, че трябва да съберем числата, съхранени в клетки с RAM адреси A1 и A2, и да поставим сумата в клетката с адрес A3. За да реши този проблем, машината за едноадресно предаване ще трябва да изпълни три команди: извличане на съдържанието на клетка A1 в суматора; съберете суматора с числото от А2; запишете резултата от суматора в A3. Може да изглежда, че една уникаст машина ще изисква три пъти повече команди за изпълнение на задача, отколкото машина с три адреса. Всъщност това не винаги е така. Опитайте се да планирате своя собствена програма за изчисляване на израза A5 = (A1 + A2)*AZ/A4 и ще откриете, че ще ви трябват три три-адресни команди и само пет едноадресни. По този начин едноадресната машина в някои отношения е дори по-ефективна, тъй като не записва ненужни междинни резултати в паметта. За пълнота трябва да се каже за възможността за внедряване на безадресна (нулева адресна) машина, която използва специален начин за организиране на паметта - стек. Разбирането на принципите на такава машина би изисквало някои доста подробни обяснения. В наши дни безадресните компютри практически не се използват. Затова ще се ограничим само да споменем факта, че командна система, подредена по подобен начин, е в основата на някои програмируеми микрокалкулатори (например като „BZ-21“ и „BZ-34“ и други подобни). Досега при описването на структурата на машинната инструкция използвахме интуитивната концепция за адреса на информацията. Нека сега разгледаме въпроса за адресирането на RAM елементите по-подробно и строго. Паметта беше организирана най-просто в компютрите от първите две поколения. Състои се от отделни клетки, съдържанието на всяка от които се чете или записва като едно цяло. Всяка клетка от паметта имаше свой номер, който се наричаше адрес. Очевидно адресите на съседните RAM клетки са последователни цели числа, т.е. се различават с едно. Разглежданите компютри използваха данни само от един тип (реални числа), като дължината им беше равна на дължината на машинната инструкция и съвпадаше с капацитета на паметта и всички други устройства на машината. Например, посочваме, че клетката на типичен компютър от второ поколение се състои от 36 двоични бита. Много често програмата е била предназначена да обработва, използвайки същите формули, определено количество от съдържанието на последователно разположени клетки (в езиците на високо ниво такива структури по-късно са наречени масиви). Първите две поколения компютри предоставяха специални механизми за циклична обработка на информационни масиви. За тази цел в машинните инструкции, в допълнение към обикновените адреси, беше възможно да се използват модифицируеми адреси, в които специален контролен бит беше зададен на единица. При изпълнение на командата така маркираните модифицирани адреси се добавят със стойността от специални индексни клетки. Чрез промяна на съдържанието на индексните клетки беше възможен достъп до различни елементи от масива. Особено подчертаваме, че формирането на получения адрес е извършено в контролния блок по време на изпълнение на командата, така че оригиналната команда в RAM е запазена без промени. Описаният механизъм за модифициране на адреси значително опрости писането на циклични програми, като намиране на сумата от последователни RAM клетки, копиране на отделни участъци от паметта и т.н. В компютрите от трето поколение идеологията на изграждане на паметта се промени значително: минималната част от информацията за обмен с RAM беше определена на 8 двоични цифри, т.е. един байт. Стана възможно да се обработват няколко типа данни: текстови знаци (1 байт), цели числа (2 байта), реални числа с обикновена или двойна точност (съответно 4 или 8 байта). В тази връзка беше въведена нова конвенционална единица за измерване на информация - машинната дума. То беше равно на 4 байта и съответстваше на дължината на стандартно реално число. Всички количества информация започват да се измерват в единици, кратни на една дума: двойна дума, половин дума и т.н. Естествено, адресът (номер на RAM клетка) в машини с байтова организация започна да се отнася до отделен байт; байтовете на паметта имат числа, увеличаващи се с единица. Една дума се състои от няколко последователни байта. Като адрес на дума е удобно да се вземе адресът на един от байтовете, които я образуват (обикновено се използва младият байт, който има най-малкото число). Така адресите на думите вече не се променят след една; нарастването им зависи от дължината на машинната дума в байтове и е равно на четири. Размерът на машинната дума очевидно е избран въз основа на форматите на обработваната информация, а не във връзка с битовия капацитет на устройствата. За да потвърдим това, ето няколко факта за типичните компютри от трето поколение от семейството EC. Аритметично-логическата единица на модела EC-1022 имаше 16 двоични бита, EC-1033 имаше 32 бита, а EC-1050 имаше 64 бита. В същото време за един достъп до RAM в ES-1022 и ES-1033 бяха избрани 4 байта, в ES-1050 - 8 байта (и в ES-1045 - 16 байта). По този начин разнообразието от числа показва, че 32 бита (4 байта) не са някакво технически разпределено количество информация. В машините от трето поколение се появиха още няколко функции: различна дължина на инструкциите в зависимост от метода на адресиране на данни, наличието на специална ултрапроизволна регистрова памет, изчисляване на ефективния RAM адрес като сума от няколко регистри и др. Всичко това беше доразвито в компютрите от четвърто поколение, за които капацитетът на микропроцесора стана една от най-важните характеристики. Ще отложим разглеждането на структурните характеристики на компютърната памет от четвърто поколение до следващия раздел.

Главна информация. Извиква се фиксираният набор от инструкции на определен микропроцесор командна система.Функционалността на процесора се определя от комбинация от основенкоманди с различни операционни кодове. Общият брой на командите (кодовете на операции) в системата винаги е по-голям от броя на основните команди. Например, основната команда включва командата MOV dst, scr, която осигурява функцията за изпращане на данни от източника scr към дестинацията dst. В системата може да има много такива команди. Командната система е представена под формата на таблица. Таблицата може да има различна структура, но обикновено съдържа следната информация за командата:

  • мнемоникакоманда, което е съкращение от името на командата. За да направите това, използвайте 3-4 латински букви от името на операцията, изпълнявана от командата. Мнемоникае удобна форма за представяне на кода на операцията на команда. Използва се и когато се описва команда на асемблер. Програмата за асемблер преобразува мнемоничната нотация на кодовете за операции в съответните двоични еквиваленти;
  • шестнадесетични кодовекоманди;
  • влияние на изпълнената команда върху флаговетерегистър на състоянието на програмата;
  • брой байтовев отбора и брой машинни цикли и цикли, изразходвани за изпълнение на командата;
  • глаголени/или символично описаниеоперацията, извършена от командата.

Често, за удобство, командната система е разделена на отделни групи въз основа на функционалност. Например, командната система на микропроцесора KR580VM80, съдържаща 78 основни команди, е разделена на 5 групи. По-долу е дадено кратко описание на функционалните характеристики на командите от всяка група.

Командите са с дължина от 1 до 3 байта. Операционният код винаги се поставя в първия байт на командата. Вторият байт на командата се разпределя за непосредствен операнд или адрес на порт, вторият и третият байт са адресът на клетката с памет. Командите позволяват изричното задаване само на един адрес на паметта, т.е. принадлежат към класа на unicast командите. Когато се описват команди, се използват следните обозначения:

  • src, dst – 8-битов източник и дестинация. Източникът или дестинацията може да бъде един от 8-битовите регистри A, B, C, D, E, H или клетка от паметта M, достъпът до която се осигурява от регистровата двойка H L, съдържаща адреса на изпращания байт. В кода на операцията източникът src и дестинацията dst са посочени като трибитов код SSS и DDD;
  • RP – двубитов код на регистрови двойки BC, DE, N L, A + RP (знаков регистър) или указател на стека SP;
  • данни, данни 16 – 8- и 16-битов операнд;
  • addr, port – 16-битов адрес на паметта и 8-битов адрес на порта;
  • (addr), (SP) – съдържанието на клетката от паметта на посочените адреси;
  • (SP)+, -(SP) – операции след инкремент и преди инкремент със стека. Препращане на команди. Групата съдържа най-често използваните инструкции за пренос на данни в програмите, чиито източници и дестинации могат да бъдат вътрешни регистри на процесора, основна памет и външни устройства. Командите нямат ефект върху флаговете на регистъра на състоянието.

Мнемониката на командата отразява характеристиките на изпълняваната операция и метода на адресиране. Например мнемониката MOV, MVI показва движението на операндите; LDA, LDAX, LXI, LHLD – за товарене (Load); STA, STAX, SHLD – за спестяване. За байтови операции се използва мнемоника MOV, MVI, LDA, STA, LDAX, STAX; за операции с думи – LXI, LHLD, SHLD. Директното адресиране при зареждане и запис на съдържанието на акумулатора се отразява от мнемоники LDA и STA, косвено адресиране от мнемоники LDAX и STAX.

Отборите в тази група са обобщени в табл. 5.8. Те ви позволяват да:

  • операция по пренос на даннимежду източник (src) и дестинация (dst), което се записва като dst ← src (команда 1). Източниците и дестинациите са вътрешни регистри с общо предназначение (A, B, C, D, E, H) и клетка с памет M. Всяка комбинация е разрешена, с изключение на M ← M, т.е. презареждането на клетка с памет M не е разрешено;
  • Зарежданерегистри с общо предназначение и клетка M с втория байт B2 (команда 2) и двойки регистри BC, DE, HL (включително указателя на стека SP) с втория B2 и третия B3 байт (команда 3), а B3 винаги се зарежда в двойки по-високи регистри (B, D, H), B2 – към ниски регистри (C, E, L);
  • препращанеданни между батерия А и основната памет (команди 4÷7), между батерията и външно устройство (команди 8, 9). При прехвърляне между батерия A и памет, адресите на клетките на паметта се намират в двойки регистри BC, DE или в третия и втория байт (B3B2) на командата;

Таблица 5.8

Мнемоника

Изпълнен

операция

операции

dst src

А (адрес)

Бележки: RP – 2-битов код на двойки регистри BC, DE, HL, A + RP (feature register) или указател на стека SP; B – байтове, U – цикли, T – цикли.

  • препращанеданни между двойка HL регистри и памет (отбори 10, 11). В този случай операндът от регистъра L се изпраща в клетката с адрес B3B2, образувана от третия и втория байт на командата, а от регистъра H на един по-висок адрес. При обратно пренасочване първо първият операнд се зарежда от клетката с адрес B3B2 в регистър L, след това вторият се зарежда от клетката с адрес B3B2+1 в регистър H;
  • препращанеданни между двойки регистри, включително двойка от акумулатор А и регистъра на характеристиките на RP, и стека (екипи 12, 13). Когато записвате в стека, съдържанието на указателя на стека се намалява с единица и на адрес SP-1 първият операнд се зарежда в един от регистрите B, D, H или A, след което съдържанието на указателя на стека се намалява с един отново, а вторият операнд се зарежда на адрес SP–2 от регистър C, E, L или RP. При изскачане от стека операндът, съхранен в местоположението SP на указателя на стека, първо се зарежда в един от регистрите C, E, L или RP. След това съдържанието се увеличава с единица от клетката на адрес SP + 1, вторият операнд се зарежда в един от регистрите B, D, H или A и съдържанието на указателя на стека отново се увеличава с единица и взема стойност SP + 2. Трябва да се отбележи, че при зареждане на регистровите двойки A, RP (неговият код RP = 11) от стека, състоянието на тригерите на регистъра на атрибутите RP се променя. Това е единствената команда (от всички команди за трансфер на данни), която засяга атрибути;
  • препращанесъдържанието на двойка регистри HL в указателя на стека SP и програмния брояч PC (инструкции 14, 15);
  • обменданни между двойките регистри HL и DE, двойката регистри HL и стека (инструкции 16, 17). При обмен съдържанието на регистровата двойка HL се поставя в DE двойката или стека, а съдържанието на DE регистровата двойка или стека се поставя в HL двойката. Операцията по обмен се обозначава със символа "↔".

Аритметични команди. Изчислителните възможности на микропроцесора са ограничени до прости инструкции за събиране и изваждане на 8-битови операнди. Операциите за умножение и деление са реализирани софтуерно. Наборът от команди (Таблица 5.9) ви позволява да изпълнявате:

  • допълнениеИ изваждане 8-битови операнди със и без пренасяне (инструкции l÷8), докато един от операндите винаги е в акумулатора, а вторият е в един от регистрите с общо предназначение (клетка с памет M) или е вторият байт на командата . При добавяне и изваждане на многобайтови числа се използват команди, които отчитат стойността на сигнала за прехвърляне C на регистъра на характеристиките. За същата цел можете да използвате команда 9, за да добавите съдържанието на двойка HL регистри с 16-битов адресируем регистър;
  • аритметика сравнениесъдържанието на акумулатор A със съдържанието на един от регистрите с общо предназначение Rn (клетка с памет M) или втория байт B2 (команди 10+11). В този случай се извършва изваждането A – Rn или A – B2. Резултатът от сравнението се определя от тригерните сигнали на регистъра на характеристиките: ако Z = 1, тогава A = Rn или A = B2; ако S = 1, тогава A > Rn или A > B2. Съдържанието на батерията не се променя;
  • нарастваИ намаляванеот 1 (увеличениеИ намаляване)съдържание на регистри и регистрови двойки. При програмиране често

Таблица 5.9

Мнемоника

Операция, която трябва да се извърши

операции

A ← A + src + C

A ←A – src – C

A ← A + данни + CY

A ← A – данни

A ← A – данни – CY

A – scr (сравнение)

A – scr (сравнение)

дст ← дст – 1

A ← 2/10-корекция A

има нужда от увеличаване или намаляване на стойността на операнда с единица. За да направите това, можете да използвате операциите събиране A + B2 или изваждане A – B2, записвайки B2 = 1 в програмата, но системата с инструкции предоставя специални инструкции (12-5-15) за увеличаване и намаляване на 8- и. 16-битови операнди;

десетична корекциясъдържанието на акумулатора след извършване на аритметични операции в BCD 8421 (инструкция 16). В този случай съдържанието на акумулатора се представя като две хапки, всяка от които съответства на десетична цифра. Корекцията се извършва чрез блок за десетична корекция съгласно правилата, посочени в § 5.2 (стр. 99).

Команди за логически операции. Командите на тази група (Таблица 5.10) ви позволяват да реализирате:

  • двойни логически операции умножение(И), допълнение(ИЛИ) и изключителенИЛИ над 8-битови операнди (инструкции 1÷6). Логическите операции са побитови и се изпълняват независимо за всеки от осемте операндни бита. Неадресируемият операнд се намира в акумулатора и резултатът от операцията също отива там. Вторият операнд е съдържанието на един от регистрите с общо предназначение (клетка с памет M) или вторият байт на инструкцията;
  • обръщамсъдържание на батерия А (команда 7);
  • флаг команди (8, 9) обръщанеИ инсталациибит С на тригера за прехвърляне на атрибутния регистър;
  • два вида циклични сменисъдържанието на батерията отляво и отдясно (команди Юл-13). Първият тип смени (смени без пренасяне) се реализират чрез затваряне на всички тригери на акумулатора в пръстен с втория тип смени (смени с пренасяне или разширени смени), тригер за пренасяне C на регистъра на атрибутите се въвежда допълнително в регистъра на атрибута; пръстен. Логическите и аритметични смени в двете посоки, които липсват в командната система, могат да бъдат реализирани, като първо се зададе C бит на 0 или 1 заедно с разширеното смяна.

Команди за прехвърляне на контрол. При прехвърляне на управлението последователният процес на извличане на съдържанието на клетките на паметта се нарушава и процесорът се адресира към друга област на паметта. Маркирайте

Таблица 5.10

Мнемоника

Изпълнен

операция

операции

A ← A l src – умножение

A ← A v src – допълнение

A ← A © src – изкл. ИЛИ

A ← A l данни

A ← A © данни

три типа команди за трансфер на управление: команди преходна даден адрес (JMP), обадете сеподпрограми (CALL) и връщанеот подпрограма (RET). Те включват безусловенИ условноекипи. Условните команди извършват преход, извикват подпрограма и се връщат от подпрограма в зависимост от състоянието на флага, зададен от стойността на сигнала на един от четирите тригера Z, C, S, P на атрибутния регистър (или състояние) . Процесорът 8080 използва и двете състояния (1 и 0) на четири флага (Z, C, P, S), позволявайки 8 опции за всяка команда (Таблица 5.11). Обозначението на атрибута (условието) е посочено в мнемониката на условните команди J**, C**, R** вместо звездички (**). Например атрибутът NC, за който условията на преход се считат за изпълнени, когато C = 0, съответства на командата JNC.

Както условните, така и безусловните скокове и извикванията на подпрограми използват пълен 16-битов препращащ адрес за прехвърляне на контрола към всяка точка в 64-килобайтовото пространство на паметта.

Таблица 5.11

Нека да разгледаме характеристиките на командите, представени в табл. 5.12.

С помощта на трибайтова JMP инструкция се реализира безусловенпрехвърляне на контрола. В този случай вторият и третият байт на командата (адресът за продължение на програмата) се въвеждат в брояча на командите на компютъра (съдържанието на B3 е в битовете от висок ред, B2 в битовете от нисък ред).

Екипи условноконтролни трансфери J** осъществяват разклоняване на изчислителния процес в зависимост от условието. Когато условието (ДА) е изпълнено, вторият и третият байт на командата се въвеждат в компютърния брояч, в противен случай (НЕ) съдържанието на брояча се увеличава с 3 единици. Програмата продължава на адреса, намиращ се в програмния брояч, т.е. от следващата команда.

Таблица 5.12

Мнемоника

Изпълнен

операция

операции

Екипи безусловен(ОБЪЖДАНЕ) и условно(С**) обажданиясе използват за достъп до подпрограми, съхранявани в друга част от основната памет. Тези инструкции винаги предоставят възможност за връщане към прекъснатата главна програма чрез съхраняване на съдържанието на компютърния програмен брояч в стека. След извършване на операцията по връщане:

  • при безусловенобадете се или изпълнение на условиетовторият и третият байт на командата се въвеждат в компютърния програмен брояч;
  • при неизпълнение на условиетосъдържанието на програмния брояч се увеличава с 3 единици.

Програмата продължава на адреса, който се намира в програмния брояч на компютъра.

Комплектът съдържа команди, които ви позволяват да изпълнявате безусловен(RET) и условно (K**) предаване на контрола за връщанекъм прекъснатата програма. Когато тези инструкции се изпълнят, адресът за връщане се пренаписва от стека в компютърния програмен брояч, за което се използва методът на адресиране след нарастване. Ако условието за връщане не е изпълнено (за команда с условие), преминаването към следващата команда се извършва чрез увеличаване на съдържанието на програмния брояч PC с единица. Инструкциите за връщане са еднобайтови инструкции, тъй като указателят на стека SP съхранява адреса на местоположението на стека с адреса за връщане към прекъснатата програма.

Инструкцията PCHL зарежда компютърния програмен брояч с адреса, съхранен в регистровата двойка HL.

Общи ръководни екипи. Командите от тази група (Таблица 5.13) се използват за настройка на режима на работа на микропроцесора. Инструкцията RST се използва за рестартиране на микропроцесора и при обслужване на прекъсвания. При изпълнението му:

  • съдържанието на програмния брояч се прехвърля в стека на адреси SP – 1, SP – 2, формирани в указателя на стека, което осигурява връщане към основната програма;
  • 16-битовият адрес на началото на една от 8-те обслужващи програми за прекъсване се изпраща на програмния брояч.

Таблица 5.13

Мнемоника

Изпълнен

операция

операции

–(SP) ← PC ← 8×n, n = 0 – 7

Активирайте прекъсванията

Деактивирайте прекъсванията

Четене на маската

Инсталиране на маската

Без операция

Командата за разрешаване на прекъсване на EI настройва тригера за разрешаване на прекъсване INTE в едно състояние, карайки микропроцесора да отговаря на заявки за прекъсване. Командата за деактивиране на прекъсване на DI настройва INTE тригера на нула. Празната NOP инструкция се използва в програмираните цикли на забавяне. Командата HLT stop причинява прекратяване на изпълнението на програмата.

^

2.8 Видове и формати на команди


Въпреки разликите в системите за инструкции на различните компютри, някои основни типове операции могат да бъдат намерени във всеки от тях. За да опишем тези типове, приемаме следната класификация:

    • команди за трансфер на данни;

    • команди за аритметична и логическа обработка;

    • команди за работа с низове;

    • SIMD команди;

    • команди за преобразуване;

    • входно/изходни команди;

    • команди за управление на потока на командите.
^

2.8.1 Команди за пренос на данни


Това е най-често срещаният тип машинни инструкции. Такива команди трябва да съдържат следната информация:

  • адреси на източника и местоназначението на операндите - адреси на клетки от паметта, номера на регистрите на процесора или информация, че операндите се намират в стека;

  • дължината на данните за изпращане (обикновено в байтове или думи), посочена изрично или косвено;

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

2.8.2 Команди за аритметична и логическа обработка


Тази група включва команди, които осигуряват аритметична и логическа обработка на информация в различни форми на нейното представяне. За всяка форма на представяне на числа в ACK обикновено се предоставя определен стандартен набор от операции.

В допълнение към изчисляването на резултата, изпълнението на аритметични и логически операции е придружено от формирането в ALU на знаци (флагове), характеризиращи този резултат. Най-често регистрираните признаци са:


  • Z (Zero) - нулев резултат;

  • N (Negative) - отрицателен резултат;

  • V (oVerflow) - битово препълване на мрежата;

  • C (Carry) - наличие на носи.
Стандартният набор от операции върху цели числа, представени във форма с фиксирана точка, включва:

  • двойни аритметични операции (операции с два операнда): събиране, изваждане, умножение и деление;

  • едноместни аритметични операции (операции с един операнд): изчисляване на абсолютната стойност (модул) на операнда, смяна на знака на операнда;

  • операции за сравнение, които осигуряват сравнение на две цели числа и разработване на характеристики, характеризиращи връзката между сравняваните стойности (=,<>, >, <, <=, >=).
Често този списък се допълва с такива операции като изчисляване на остатъка от целочислено деление, добавяне, като се вземе предвид пренасянето, изваждане, като се вземе предвид заемането, увеличаване на стойността на операнда с единица ( нарастване), намалявайки стойността на операнда с единица (намаляване).

Имайте предвид, че изпълнението на аритметични инструкции може допълнително да бъде придружено от движение на данни от входното устройство към ALU или от ALU към изходното устройство.

За работа с числа, представени във форма с плаваща запетая, ASC на повечето машини осигурява:


  • основни аритметични действия;

  • операции за сравнение, които осигуряват сравнение на две реални числа с развитието на характеристики;

  • операции за преобразуване: форма на представяне (между фиксирана и плаваща запетая), формат на представяне (единична и двойна точност).
Стандартната компютърна командна система съдържа команди за изпълнение на различни логически операциивърху отделни битове думи или други адресируеми единици. Такива команди са предназначени за обработка на символни и логически данни. Минималният набор от поддържани логически операции са „НЕ“, „И“, „ИЛИ“ и събиране по модул 2.

В допълнение към побитовите логически операции, почти всички ACK предоставят команди за изпълнение на логически, аритметични и циклични операции за преместване.

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

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

При цикличенПри смяна всички битове на думата се изместват и стойността на бита, който излиза отвъд думата, се въвежда в позицията, освободена от противоположната страна, тоест няма загуба на информация. Една възможна употреба на циклични смени е да се премести интересният бит в най-лявата (знакова) позиция, където може да бъде анализиран като знак на число.

За работа с низове ACK обикновено предоставя команди, които преместват, сравняват и търсят низове. В повечето машини изброените операции просто се имитират от други команди.

^ Команди за преобразуване промяна на формата за представяне на данните. Пример за това е преобразуването от десетичен в двоичен или преобразуването на 8-битов код от ASCII в EBCDIC и обратно.

2.8.3 SIMD команди

Името на този тип команда е съкращение от Single Instruction Multiple Data - буквално "една инструкция - много данни". За разлика от обикновените команди, които работят с два номера, SIMD командите обработват две групи номера наведнъж (по принцип те могат да се нарекат групови команди). Операндите на такива инструкции обикновено се представят в един от пакетираните формати.

Идеята за обработка на SIMD е представена в Института по прецизна механика и компютърни науки. S.A. Лебедев през 1978 г. като част от проекта Елбрус-1. От 1992 г. командите от тип SIMD се превърнаха в неразделна част от микропроцесорите ASK от Intel и AMD. Причината беше широкото използване на мултимедийни приложения. Видеото, триизмерната графика и звукът в компютъра са представени от големи масиви от данни, чиито елементи най-често се обработват идентично. По този начин, когато видеото се компресира и преобразува в MPEG, същият алгоритъм се прилага към хиляди битове данни. В триизмерната графика често има операции, които могат да се изпълняват в един такт: интерполация и нормализиране на вектори, изчисляване на скаларното произведение на вектори, интерполация на цветови компоненти и т.н. Включването на SIMD команди в ACK ви позволява значително да ускорите такива изчисления.

Intel беше първият, който отговори на мултимедийния бум, добавяйки 57 SIMD команди към командната система на своя микропроцесор Pentium MMX. Разработчиците оправдаха името MMX (MultiMedia eXtention - мултимедийно разширение) с факта, че при избора на състава на новите команди бяха анализирани алгоритмите, използвани в различни мултимедийни приложения. MMX инструкциите осигуряват паралелна обработка на опаковани цели числа. При извършване на аритметични операции всяко от числата, включени в групата, се счита за самостоятелно, без връзка със съседни числа. Като вземат предвид спецификата на обработваната информация, екипите на MMX прилагат така наречената аритметика на насищане: ако добавянето води до число, което надхвърля определените за него позиции, то се заменя с най-голямото двоично число, което се побира в тези позиции .

Следващата стъпка беше създаването на нови набори от SIMD инструкции, които също работят с операнди, представени като пакетирани числа с плаваща запетая. Такива команди в подходящи приложения приблизително удвояват производителността на процесора. AMD беше първата, която предложи такава технология в средата на 1998 г. Това мултимедийно разширение включваше 21 SIMD команди и се наричаше 3DNow!. 3DNега! в допълнение към обработката на SIMD на целочислена информация от типа MMX, той направи възможно работата с двойка опаковани числа във формат с плаваща запетая.

Шест месеца по-късно Intel въведе така наречените стрийминг SIMD команди в своите микропроцесори, обозначавайки ги с абревиатурата SSE - Streaming SIMD Extension (поточно обработване на принципа "една команда - много данни"). Първоначално бяха 70 инструкции в микропроцесора Pentium III. Командите допълват груповите цели числа на MMX и ги разширяват, за да включват групови операции върху 32-битови реални числа.
^

2.8.4 I/O команди


Командите от тази група могат да бъдат разделени на команди за управление на периферно устройство (ПУ), проверка на неговото състояние, вход и изход.

Екипи управление на периферни устройстваслужи за стартиране на контролния блок и му показва необходимото действие. Тълкуването на такива инструкции зависи от вида на управляващото устройство.

Екипи проверка на I/O статусасе използват за тестване на различни признаци, характеризиращи състоянието на входно-изходния модул и свързаните към него управляващи блокове. Благодарение на тези команди централният процесор може да разбере дали захранването на PU е включено, дали предишната I/O операция е завършена, дали са възникнали грешки по време на I/O процеса и т.н.

Реалният обмен на информация с блока за управление се осигурява чрез входни и изходни команди. Екипи входинструктирайте I/O модула да получи елемент от данни (байт или дума) от PU и да го постави на шината за данни и командите изход -принуждава входно/изходния модул да приеме елемент от данни от шината за данни и да го изпрати към контролния блок.
^

2.8.5 Команди за управление на системата


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

2.8.6 Команди за управление на потока от команди


Концепцията за компютър на фон Нойман предполага, че програмните инструкции обикновено се изпълняват в реда, в който са разположени в паметта. За да получите адреса на следващата команда, достатъчно е да увеличите съдържанието на програмния брояч с дължината на текущата команда. В същото време основните предимства на компютъра се състоят именно във възможността за промяна на хода на изчислението в зависимост от резултатите, възникващи в процеса на изчисление. За целта в ACK на компютъра се включват команди, които позволяват да се наруши естествената последователност и управлението да се прехвърли към друга точка от програмата. Адресната част на такива команди съдържа адреса на точката за прескачане (адреса на командата, която следва да бъде изпълнена). Разклонението се реализира чрез зареждане на адреса на точката на разклоняване в програмния брояч (вместо увеличаване на брояча с дължината на инструкцията).

В компютърната командна система могат да се разграничат три вида команди, които могат да променят последователността на изчисленията:


  • безусловни скокове;

  • условни преходи (клонове);

  • извикване на процедура и връщане на процедура.
Въпреки факта, че присъствието в програмата на голям брой команди за безусловен скоксе счита за признак на лош стил на програмиране; такива команди задължително се включват в ASK на всеки компютър. За обозначаването им на асемблер обикновено се използва английската дума jump. Командата за безусловен скок осигурява скок до даден адрес без проверка на каквито и да е условия.

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

В компютърната командна система всеки резултатен атрибут има своя собствена команда за разклоняване (понякога две: преход, ако атрибутът присъства, и преход, ако липсва). Повечето условни преходи са свързани с проверка на взаимната връзка на две величини или с равенството (неравенството) на определено количество на нула. Последният вид проверки се използва най-интензивно в програмите.

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

2.8.7 Формати на командите


Типичната команда, като цяло, трябва да показва:


  • операцията, която трябва да се извърши;

  • адреси на изходните данни (операнди), върху които се извършва операцията;

  • адреса, където трябва да бъде поставен резултатът от операцията.
В съответствие с това командата се състои от две части: оперативна и адресна, както е показано на фигура 2.24.

Фигура 2.24 – Командна структура на машината
Формат на командатаопределя нейната структура, т.е. броя на двоичните битове, разпределени за цялата команда, както и броя и местоположението на отделните командни полета. Полее набор от двоични битове, кодиращи компонент на команда. При разработването на ASK изборът на формат на командата засяга много характеристики на бъдещата машина. Когато оценявате възможните формати, трябва да имате предвид следните фактори:


  • общ брой различни команди;

  • обща дължина на командата;

  • вид на командните полета (с фиксирана или променлива дължина) и тяхната дължина;

  • лекота на декодиране;

  • адресируемост и методи за адресиране;

  • цената на оборудването за декодиране и изпълнение на команди.
Дължина на командата- това е най-важното обстоятелство, което влияе върху организацията и капацитета на паметта, структурата на шината, сложността и скоростта на процесора. От една страна, удобно е да разполагате с мощен набор от инструкции, тоест възможно най-много операционни кодове, операнди, методи за адресиране и максимално адресно пространство. Всичко това обаче налага заделянето на повече битове за всяко поле на командата, което води до увеличаване на нейната дължина. В същото време, за да се ускори достъпът до паметта, е желателно командата да бъде възможно най-кратка, а дължината й да е равна или кратна на ширината на шината за данни. За да се опрости оборудването и да се увеличи скоростта на компютъра, дължината на инструкцията обикновено се избира да бъде кратна на байт, тъй като в повечето компютри основната памет е организирана под формата на 8-битови клетки.

В рамките на командната система на един компютър могат да се използват различни командни формати. Това обикновено се дължи на използването на различни методи за адресиране. В този случай операционната част на командата съдържа поле за код на операция (OC) и поле за указване на метода на адресиране (CA).

Обща дължина на командата Р К може да се определи чрез следната връзка:

,

Където л– брой адреси в командата; Р Ai– брой цифри за запис аз-ти адрес; Р KOp– ширина на полето за код на операцията; Р SA– битова дълбочина на полето за метод на адресиране.

Брой двоични битове, разпределени за код на операцията, е избран така, че всяка от операциите да може да бъде представена. Ако командната система предполага н KOpразлични операции, тогава минималната ширина на полето за код на операция се определя, както следва:
Р KOp= int(log 2 ( н KOp)),
където int означава закръгляне до цяло число.

За дадена дължина на кода на инструкция трябва да се направи компромис между ширината на полето на операционния код и адресното поле. По-големият брой възможни операции изисква дълго поле на кода на операцията, което води до по-късо адресно поле, тоест по-тясно адресно пространство. За да се разреши това несъответствие, дължината на полето на операционния код понякога се променя. Първоначално за кода на операцията се отделя определен фиксиран брой битове, но за отделни команди това поле се разширява с няколко бита, взети от адресното поле.

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

Ширините на полето се изчисляват по формулите:
Р Ai= int(log 2 ( н аз)), Р C.A.= int(log 2 ( н C.A.)),
Където н аз, – броят на клетките на паметта, които могат да бъдат достъпни чрез аз-ro адреси; н SA– брой методи за адресиране.

За определяне брой адресивключени в адресната част, ще използваме термина насочване.В „максималната“ версия е необходимо да посочите три компонента: адреса на първия операнд, адреса на втория операнд и адреса на клетката, където е записан резултатът от операцията. По принцип може да се добави друг адрес, за да се посочи къде ще се съхранява следващата инструкция. В резултат на това се случва четириадресен команден формат. Този формат е показан на фигура 2.25.

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

За съжаление дори в триадресния формат дължината на командата може да бъде доста голяма. Така че, ако адресът на основна клетка от паметта е с дължина 32 бита и дължината на кода на операцията е 8 бита, тогава Дължината на командата ще бъде 104 бита (13 байта).

Фигура 2.25 – Формат на команда с четири адреса
Ако по подразбиране вземем адреса на един от операндите (обикновено втория) като резултатен адрес, тогава можем да направим без третия адрес и в резултат получаваме двуадресенкоманден формат. Естествено, в този случай съответният операнд се губи след приключване на операцията.

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

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

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

Когато избират броя на адресите в адресната част на командата, те обикновено се ръководят от следните критерии:


  • капацитетът за съхранение, необходим за съхраняване на програмата;

  • време за изпълнение на програмата;

  • ефективност на използването на клетки от паметта при съхраняване на програма.
преднинаВремето, необходимо за една инструкция, е сумата от времето за изпълнение на операцията и времето за достъп до паметта. За команда с три адреса, последният се сумира от четири времеви компонента:

  • командни образци;

  • взема проби от първия операнд;

  • взема проби от втория операнд;
Уникаст команда изисква два достъпа до паметта:

  • командни образци;

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