Back

ⓘ Ортогоналан скуп наредби




                                     

ⓘ Ортогоналан скуп наредби

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

                                     

1. Ортогоналност у пракси

У многим CISCрачунарима, инструкција може да приступи или регистру или меморији, обично на више различитих начина. Ово чини CISC рачунаре лакшим за програмирање, јер уместо да морају да памте хиљаде појединачних инструкција, ортогонални скуп инструкција дозвољава да програмер запамти само неколико десетина до неколико стотина оперативнох кодова, и сет од три до десет адресних режима. DEC PDP-11 и Motorola 68000 рачунарске архитектуре су примери готово ортогоналних скупова инструкција.

                                     

1.1. Ортогоналност у пракси The PDP-11

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

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

                                     

1.2. Ортогоналност у пракси VAX-11

VAX-11 је продужена верзија PDP-11, овај систем био је ортогонални за све типове података, укључујући и децималне типове. Као и PDP-11, стек поинтер и програмски бројач били су у општем регистру фајла R14 и R15.

Општи облик VAX-11 инструкције био би:

opcode.

Свака компонента је један бајт, вредност 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 концептуалних адресних режима заједно са асемблером који је преводио изворни код у стварни стек поинтер или програмски бројач.



                                     

1.3. Ортогоналност у пракси MC68000

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

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

                                     

1.4. Ортогоналност у пракси 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 регистари и константе, и примарни акумулатор, ЕАКС, краће кодирање од других регистара на одређеним врстама операција.

                                     

1.5. Ортогоналност у пракси RISC доба

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

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



                                     
  • На сличан начин је изграђено још неколико булевара, чиме је добијена ортогонална мрежа улица преко онога што је раније била зракаста структура старог

Users also searched:

...