Паралелизъм на инстукциите
Конверизацията на инструкциите (КИ) е принцип, който позволява едновременното (паралелното) изпълнение на различните фази на няколко инструкции. Този принцип е ключов за съвременните архитектури.
За да бъде реализиран инструкциите се разбиват на фази с еднаква продължителност, всяка от които се обработва от отделно стъпало на изпълнителния конвейер.
При класическите последователни архитектури инструкциите по принцип са неделини (атомарни). В разглеждания случай това свойство на инструкциите е изпълнено. Конвейера се характеризира с два основни параметъра. Производителност Р (пропусквателна способност): P = ni/T ; латентност L = n.Tc , където n е броя стъпала на конвейера (дълбочина на конвейера) и отговаря на времето за престой на една инструкция в конвейера. При идеално балансиран конвейер (без загуби ) параметъра
CPI = nc/ni = 1 (брой машинни цикли/ брои инструкции). При CPI >>1 – последователна машина; CPI = 1 – машината е конвейерна с един конвейер; 0<<CPI <<1 – суперскаларна машина (има по-вече от един конвейер).
Papers\p8-patterson.pdf fig.2.a
Реализация на DLX без конвейер. Фази на изпълнение на инструкциите. Потоков модел на DLX с многоциклова реализация.
H&P\Figures\Zed\3[1].1.ps
А) IF – стъпалото, в което се изпълнява тази фаза включва следните апаратни компоненти: памет на инструкциите(Instruction memory IM), регистър на инструкциите (Instruction registry IR), програмен брояч (Program counter PC) , следваща стойност на програмния брояч (Next program counter NPC), адресен суматор (Add). Програмния брояч е свързан с адресната магистрала на IM .Извлечената инструкция от тази памет се записва в IR. Следващата стойност на програмния брояч (адреса на следващата инструкция ) е винаги по-голям с 4 от текущия адрес, това дава възможност адреса на следващата инструкция да се определи преди фазата на декодиране. Семантиката на фазата се описва по следния начин:
[IR]<-IM[[PC]]
[NPC]<-[PC]+ 4
Б) Фаза на декодиране на инструкцията и на извличане на регистровите операнди (ID) – стъпалото, което изпълнява тази фаза съдържа следните апаратни компоненти: целочислен регистров файл (GPR registers), 3 x 32bit регистъра (A,B,Imm) и комбинационна логика Sign Extend, която разширява 16 битовия непосредствен операнд на входа и в 32 битов изходен операнд със същата стойност. Семантиката на фазата е следната:
[A]<- Reg[[IR]6..10]
[B]<-Reg[[IR]11..15]
[Imm]<-32 [IR]1616 ##[IR]16..32 underlined – разширение на знака
На практика тук е посочено само извличането на регистровите операнди и записването им във временните регистри А и В. Това извличане е възможно да се извърши едновременно с декодирането, тъй като адресните полета на rs1, rs2 и rd са фиксирани и не зависят от типа инструкция. Поради същата причина 16 битовата константа Immediate от инструкциите от тип И също може да се формира паралелно с декодирането.
Фаза на изпълнение (EX) - апаратните компоненти, поддържащи фазата са следните : 32 битово целочислено АЛУ, изходен регистър ALU Output, 2 входни мултиплексора, служещи за избор на операнд на АЛУ-то, цифров компаратор (Zero?), който сравнява стойността на 32 битовия регистър А с нула. На изхода на компаратора се формила логическа 0 или 1, в зависимост от това дали съдържанието на регистър А се различава или съвпада с 0. Стойността на изхода на компаратора се фиксира в тригера Cond (condition). В зависимост от вида на инструкцията, в тази фаза се извършва една от следните операции:
- изпълнение в АЛУ-то на инструкции от тип R.
- [ALUOut]<-[A] func [B]
- Изпълнение в АЛУ-то на операция с непосредствен операнд от тип I.
- [ALUOut]<-[A] op [Imm]
- Изчисление не ефективен адрес при операции load-store от тип I.
- [ALUOut]<-[A] + [Imm]
- Изчисление на адреса на условния преход от тип I условен преход
- [ALUOut]<-[NPC]+[Imm]
- [Cond]<-[A] op φ
Фаза за обръщение към паметта за данни – такава фаза имат само инструкциите за обръщение към паметта load-store и условните преходи. Апаратните компоненти в стъпалото са паметта за данни (Data memory DM), буфера(Load memory data LMD) , в който се фиксира прочетената от паметта дума и мултиплексора определящ адреса на следващата инструкция. Връзката на паметта за данни с елементите на процесора е следната:
Обръщение към паметта
store DM[[ALUOut]]<-[B]
load [LMD]<-DM[[ALUOut]]
Условни преходи
If ( [Cond] )
[PC]<-[ALUOut]
Else
[PC]<-[NPC]
Д) фаза за обратен запис в регистровия файл
Апаратно фазата се поддържа само от един мултиплексор, който служи за избор на източник – LMD (load) или ALU Output при останалите инструкции.
Аритметико-логическа обработка при операции от тип R
rd Reg [[IR]16..20]<-[ALUOut]
- -||- -||- при инструкции от тип I
rd Reg[[IR]11..15]<-[ALUOut]
- Инструкция Load от тип I
rd Reg[[IR]11..15]<-[LMD]
Сходни статии:
- По-важни алгоритми Програма за преобразуване на еднобайтово число в допълнителен код Инструкцията NEG преобразува в допълнителен код, като инвертира всички 8 бита на числото и добавя единица. За знак използва флага N...
- Програмиране на AVR-контролери Програмен модел Аритметическите и логическите операции се изпълняват от така нареченото Аритметично-логическо устройство (АЛУ). То има два входа и един изход. На входовете се въвеждат операндите, а на изхода се...