Ортогоналан скуп наредби
У рачунарском инжењерству, ортогонални скуп инструкција је скуп инструкција архитектуре где сви типови инструкција могу користити све начини адресирања. Он је „ортогонални“ у смислу да инструкцијски тип и адресни мод варирају независно. Ортогонални скуп инструкција не намеће ограничења која захтевају да одређена инструкција користи одређени регистар.

Ортогоналност у пракси 
У многим CISCрачунарима, инструкција може да приступи или регистру или меморији, обично на више различитих начина. Ово чини CISC рачунаре лакшим за програмирање, јер уместо да морају да памте хиљаде појединачних инструкција, ортогонални скуп инструкција дозвољава да програмер запамти само неколико десетина до неколико стотина оперативнох кодова (као што су: "ADD", "SUBTRACT", "MULTIPLY", "DIVIDE", и други), и сет од три до десет адресних режима (као што су: "FROM REGISTER 0", "FROM REGISTER 1", "FROM MEMORY", и други). DEC PDP-11 и Motorola 68000 рачунарске архитектуре су примери готово ортогоналних скупова инструкција.

The PDP-11 
Са изузетком његових инструкција у покретном зарезу, PDP-11 је скоро комплетно ортогонални сет. Свака по типу целобројна инструкција је могла радити на или 1-бајтном или 2-бајтном целобројном вредношћу и могла је да приступи подацима ускладиштеним у регистрима, укладиштеним као делови инструкција, ускладиштеним у меморију, или ускладиштеним у меморију са показивачем на адресу у регистру. Чак је и програмски бројач и показивач стека могао да буде погођен обичним инструкцијама користећи обичне типове података. У ствари, непостедни тип (у оквиру инструкција као што је: ADD #4, R1 (R1 = R1 + 4)) је имплементиран као тип „региструј индиректно, аутоматски припадај“ и наводећи програмски бројач (R7) као регистар у циљу коришћења референце за индиректност и аутоматско припадање.

Пошто је PDP-11 био октално-оријентисани рачунар (адресни режим 0-7, регистри R0–R7) имао је (електронски) осам начина адресирања. Кроз коришћење стек поинтера (R6) и програмског бројача (R7) као референцнног регистра, могли се адресирати на десет начина.

VAX-11 
VAX-11 је продужена верзија PDP-11, овај систем био је ортогонални за све типове података, укључујући и децималне типове (мада су инструкције као сто су 'ADD' биле подељене на варијанте као што су ADDB, ADDW, ADDL, ADDP, ADDF, или бајт, реч, дуга реч). Као и PDP-11, стек поинтер и програмски бројач били су у општем регистру фајла (R14 и R15).

Општи облик VAX-11 инструкције био би : 
      opcode [ operand ] [ operand ]  ...
Свака компонента је један бајт, вредност opcode је у опсегу 0-255, и сваки операнд се састоји од два дела, горња 4 бита одређују адресни режим, а доња 4 бита (обично) означавају број регистра (R0–R15). 

За разлику од октално-оријентисаних рачунара PDP-11, VAX-11 постојале су и хексадецимално-оријентисани рачунари (4-битни под-бајт). ово је довело до 16 логичких адресних режима (0–15), међутим, адресни режими 0-3 били су „кратко непосредни“ за непосредне податке од 6 бита или мање (2 доња бита адресног режима била су 2 горња бита непосредних података, када би примили осталих 4 бита тог адресираног податка). Пошто су начини адресирања режима 0-3 били идентични, ово је чинило 13 (електронских) адресних режима, али као и код PDP-11, употреба стек поинтера (R14) и програмског бројача (R15) чинила је укупно 15 концептуалних адресних режима (заједно са асемблером који је преводио изворни код у стварни стек поинтер или програмски бројач).

MC68000 
Моторолини дизајнери покушали су да направе склоп асемблерских језика ортогоналним док би основни машински језик био нешто мањи. За разлику од PDP-11, MC68000 је користио одвојене регистре за складиштење података и адреса података у меморији.

На нивоу бита, особа која би писала асемблер (или код са отклањање грешака) јасно би видела да симболичке инструкције могу постати било који или неколико различитих op-кодова. Овај компромис је дао скоро исте погодности као и тотално ортогонални рачунар, а ипак је дао процесорским дизајнерима слободу да користе битове у инструкцијама много ефикасније него на читно ортогоналном нивоу.

8080 и слични дизајни 
8-битни Интел 8080 (као и 8085 и 8051) микропроцесор био је у основи незнатно проширен акумулаторско-заснован дизајн и стога не ортогоналн. Програмер или компилатор асемблерког језика морао да буде свестан које операције су могуће на сваком регистру: Већина 8-битних операција могла је да се врши само на 8-битном акумулатору (A регистру), док је 16-битна операција могла да се врши само на 16-битном показивачу/акумулатору (ХЛ-регистар пар), док једноставне операције, као што су проширења, су биле могуће на свих седам 8-битних регистара. То је углавном због жеље да задрже сви opcodes дужине један бајт и да се одржи компатибилност изворног кода са оригиналним Интел 8008 (ЛСИ - имплементација процесора Датапоинт 2200-а).

Бинарно-компатибилан З80 касније додат префикс-код да побегне из овог 1-бајт ограничења и омогући моћнији скуп инструкција. Иста основна идеја је била за Интел 8086, мада, како би се омогућила радикалнија екстензија, бинарна-компатибилност са 8080 није овде покушана, већ је 8086 дизајниран као више редовно и потпуно 16-битни процесор који је компатибилан са 8008, 8080, 8085. Она одржава неки степен не-ортогоналности због високе густине кода. 32-битно продужење ове архитектуре која је уведена са 80386, била је нешто више ортогонална упркос чувању свих инструкција као и код 8086. Међутим, стратегија кодирања даље показује многе трагове из 8008 и 8080 (и З80); на пример, један-бајт кодирања остаје за одређене честе операције као што су push и pop регистари и константе, и примарни акумулатор, ЕАКС, краће кодирање од других регистара на одређеним врстама операција.

RISC доба 
Потпуно ортогонална архитектура можда није највише ефикасна архитектура. Касних 1970тих истраживање IBM-а (и слични пројекти) показали су да је већина ових „ортогоналних“ начина адресирања игнорисана од стране већине програма. Можда неки од битова који су коришћени да се изрази потпуно ортогонални скуп инструкција, уместо тога могли бити употребљени да изрази више виртуелних адреса бита или изабрати из редова више регистара.

У RISC доба, рачунарски дизајнери настојали да постигну баланс који су мислили да је најбољи. Конкретно, већина RISC рачунара, док је још увек била веома ортогонална у односу на које инструкције могу процесуирати који типова података, сада су се вратили на „учитај/сними“ архитектуру. У овим архитектурама, само врло мало меморије референтне инструкције може да приступи главној меморији и само у сврху утовара података у регистрима или чување регистара података назад у главну меморију, само неколико начина адресирања може бити на располагању, а ови режими могу да варирају у зависности од да ли се инструкција односи на податке или подразумева пренос контроле (скока). Насупрот томе, подаци морају бити у регистрима пре него што се може управљати на стране других упутства у сету инструкција рачунара. Ова трговина је направљена ван експлицитно да омогући коришћење много већих регистер сетова, продужених виртуелних адреса и више непосредних података (подаци уписани директно у оквиру наставе рачунара).

Референце 

Обрада инструкција
У рачунарском инжењерству , ортогонални скуп инструкција је скуп инструкција архитектуре где сви типови инструкција могу користити све начини адресирања . Он је „ ортогонални “ у смислу да инструкцијски тип и адресни мод варирају независно . Ортогонални скуп инструкција не намеће ограничења која захтевају да одређена инструкција користи одређени регистар . Ортогоналност у пракси У многим CISCрачунарима , инструкција може да приступи или регистру или меморији , обично на више различитих начина . Ово чини CISC рачунаре лакшим за програмирање , јер уместо да морају да памте хиљаде појединачних инструкција , ортогонални скуп инструкција дозвољава да програмер запамти само неколико десетина до неколико стотина оперативнох кодова ( као што су : " ADD " , " SUBTRACT " , " MULTIPLY " , " DIVIDE " , и други ) , и сет од три до десет адресних режима ( као што су : " FROM REGISTER , " FROM REGISTER , " FROM MEMORY " , и други ) . DEC PDP-11 и Motorolaрачунарске архитектуре су примери готово ортогоналних скупова инструкција . The PDP-11 Са изузетком његових инструкција у покретном зарезу , PDP-11 је скоро комплетно ортогонални сет . Свака по типу целобројна инструкција је могла радити на илибајтном илибајтном целобројном вредношћу и могла је да приступи подацима ускладиштеним у регистрима , укладиштеним као делови инструкција , ускладиштеним у меморију , или ускладиштеним у меморију са показивачем на адресу у регистру . Чак је и програмски бројач и показивач стека могао да буде погођен обичним инструкцијама користећи обичне типове података . У ствари , непостедни тип ( у оквиру инструкција као што је : ADD #4 , R1 ( R1 = R1 + је имплементиран као тип „ региструј индиректно , аутоматски припадај “ и наводећи програмски бројач ( R7 ) као регистар у циљу коришћења референце за индиректност и аутоматско припадање . Пошто је PDP-11 био октално-оријентисани рачунар ( адресни режим регистри R0–R7 ) имао је ( електронски ) осам начина адресирања . Кроз коришћење стек поинтера ( R6 ) и програмског бројача ( R7 ) као референцнног регистра , могли се адресирати на десет начина . VAX-11 VAX-11 је продужена верзија PDP-11 , овај систем био је ортогонални за све типове података , укључујући и децималне типове ( мада су инструкције као сто су ' ADD ' биле подељене на варијанте као што су ADDB , ADDW , ADDL , ADDP , ADDF , или бајт , реч , дуга реч ) . Као и PDP-11 , стек поинтер и програмски бројач били су у општем регистру фајла ( R14 и R15 ) . Општи облик VAX-11 инструкције био би \ : opcode [ operand ] [ operand ] \ ... Свака компонента је један бајт , вредност opcode је у опсегу и сваки операнд се састоји од два дела , горњабита одређују адресни режим , а доњабита ( обично ) означавају број регистра ( R0–R15 ) . За разлику од октално-оријентисаних рачунара PDP-11 , VAX-11 постојале су и хексадецимално-оријентисани рачунарибитни под-бајт ) . ово је довело дологичких адресних режима15 ) , међутим , адресни режимибили су „ кратко непосредни “ за непосредне податке одбита или мањедоња бита адресног режима била сугорња бита непосредних података , када би примили осталихбита тог адресираног податка ) . Пошто су начини адресирања режимабили идентични , ово је чинило( електронских ) адресних режима , али као и код PDP-11 , употреба стек поинтера ( R14 ) и програмског бројача ( R15 ) чинила је укупноконцептуалних адресних режима ( заједно са асемблером који је преводио изворни код у стварни стек поинтер или програмски бројач ) . MC68000 Моторолини дизајнери покушали су да направе склоп асемблерских језика ортогоналним док би основни машински језик био нешто мањи . За разлику од PDP-11 , MC68000 је користио одвојене регистре за складиштење података и адреса података у меморији . На нивоу бита , особа која би писала асемблер ( или код са отклањање грешака ) јасно би видела да симболичке инструкције могу постати било који или неколико различитих op-кодова . Овај компромис је дао скоро исте погодности као и тотално ортогонални рачунар , а ипак је дао процесорским дизајнерима слободу да користе битове у инструкцијама много ефикасније него на читно ортогоналном нивоу. 8080 и слични дизајни 8-битни Интел( као иимикропроцесор био је у основи незнатно проширен акумулаторско-заснован дизајн и стога не ортогоналн . Програмер или компилатор асемблерког језика морао да буде свестан које операције су могуће на сваком регистру : Већинабитних операција могла је да се врши само набитном акумулатору ( A регистру ) , док јебитна операција могла да се врши само набитном показивачу / акумулатору ( ХЛ-регистар пар ) , док једноставне операције , као што су проширења , су биле могуће на свих седамбитних регистара . То је углавном због жеље да задрже сви opcodes дужине један бајт и да се одржи компатибилност изворног кода са оригиналним Интел( ЛСИ - имплементација процесора Датапоинта ) . Бинарно-компатибилан З80 касније додат префикс-код да побегне из овогбајт ограничења и омогући моћнији скуп инструкција . Иста основна идеја је била за Интел мада , како би се омогућила радикалнија екстензија , бинарна-компатибилност саније овде покушана , већ једизајниран као више редовно и потпунобитни процесор који је компатибилан са Она одржава неки степен не-ортогоналности због високе густине кода.битно продужење ове архитектуре која је уведена са била је нешто више ортогонална упркос чувању свих инструкција као и код Међутим , стратегија кодирања даље показује многе трагове изи( и З80 ) ; на пример , један-бајт кодирања остаје за одређене честе операције као што су push и pop регистари и константе , и примарни акумулатор , ЕАКС , краће кодирање од других регистара на одређеним врстама операција . RISC доба Потпуно ортогонална архитектура можда није највише ефикасна архитектура . Каснихих истраживање IBM-а ( и слични пројекти ) показали су да је већина ових „ ортогоналних “ начина адресирања игнорисана од стране већине програма . Можда неки од битова који су коришћени да се изрази потпуно ортогонални скуп инструкција , уместо тога могли бити употребљени да изрази више виртуелних адреса бита или изабрати из редова више регистара . У RISC доба , рачунарски дизајнери настојали да постигну баланс који су мислили да је најбољи . Конкретно , већина RISC рачунара , док је још увек била веома ортогонална у односу на које инструкције могу процесуирати који типова података , сада су се вратили на „ учитај / сними “ архитектуру . У овим архитектурама , само врло мало меморије референтне инструкције може да приступи главној меморији и само у сврху утовара података у регистрима или чување регистара података назад у главну меморију , само неколико начина адресирања може бити на располагању , а ови режими могу да варирају у зависности од да ли се инструкција односи на податке или подразумева пренос контроле ( скока ) . Насупрот томе , подаци морају бити у регистрима пре него што се може управљати на стране других упутства у сету инструкција рачунара . Ова трговина је направљена ван експлицитно да омогући коришћење много већих регистер сетова , продужених виртуелних адреса и више непосредних података ( подаци уписани директно у оквиру наставе рачунара ) . Референце Обрада инструкција