You are on page 1of 37

Процесор

Поглавје 4

1
Вовед

• Три фундаментални класи на инструкции


кои се имплементирани во секој процесор
1. Инструкции за работа со меморија: lw , sw
2. Аритметичко-логички инструкции: add , OR
3. Инструкции за скок: beq , j

Ќе разгледуваме имплементација што вклучува подмножество од јадрото на МИПС


инструкциското множество
Ова подмножество не ги вклучува сите целобројни инструкции (на пример,
недостасуваат помести, помножи и подели), ниту ги вклучува сите инструкции со
подвижна запирка. Сепак, клучните принципи во креирањето податочни патеки и
дизајнирањето на контролите се илустрирани. Имплементацијата на другите
инструкции е слична.

2
Вовед

• Инструкциите се процесираат во неколку


чекори
• Заеднички чекори на инструкциите се
– Преземање на инструкција од меморија од
адреса диктирана од програмскиот бројач PC
– Читање најмногу два регистри
– Аритметичка операција (освен jump j)

Инструкциите за мемориски пристап користат АЛУ за пресметување на адресите,


аритметичко-логичките инструкции за извршување на операцијата и разгранувањата
за споредување.
По користењето АЛУ, активностите потребни за комплетирање на различни
инструкциски класи се разликуваат.
• Инструкцијата за мемориска референца треба да пристапи до меморијата,
односно да прочита податок при полнење или запишување податок при
складирање.
• Аритметичко-логичката или инструкцијата за полнење мора да го запише
податокот од АЛУ или меморија назад во регистар.
• инструкции за разгранување, можеби, ќе треба да се смени адресата на следната
инструкција врз основа на споредба; инаку компјутерскиот бројач (PC) треба да
биде зголемен за 4 за да ја земе адресата на следната инструкција

3
High-level имплементација

- покажува основните функционални единици и главните врски меѓу нив


(slajd 5)
5.1. да се пресметува во мемориските адреси (за полнење и запишување), 5.2. да се
пресметува аритметички резултат (за целобројни не-аритметички инструкции), 5.3. да се
споредува (за разгранување).
6.1. Ако инструкцијата е аритметичко логичка инструкција, резултатот од АЛУ се запишува во
регистар, 6.2. Ако операцијата е полнење или складирање, АЛУ резултатот се користи како
адреса за да се складира или наполни вредноста од меморијата во регистрите, 6.3.
Резултатот од АЛУ во меморијата се запишува назад во регистарските датотеки.
Разгранувањата побаруваат ограничување на АЛУ излезот за наредните инструкциски
адреси, што доаѓаат или од АЛУ (каде се собира програмскиот бројач со поместувањето при
разгранувањето) или од собирачот кој моментниот програмски бројач го зголемува за 4.
- Дебелите линии што ги поврзуваат функциските единици претставуваат магистрали што
содржат повеќе сигнали. Стрелките се користат да го водат читателот да дознае како течат
податоците.
(slajd 6) (slajd 7)
сликата покажува податоци што доаѓаат од два различни извори и одат до одредена
единица.
1.1. вредноста запишана во програмскиот бројач (PC) може да дојде од два собирачи,
1.2. податокот запишан во регистарската датотека може да дојде или од АЛУ или од
податочната меморија и
1.3. вториот влез до АЛУ може да дојде од регистар или непосредно инструкциско поле
неколку од единиците мора да бидат контролирани во зависност од видот на инструкцијата:
2.1. податочната меморија мора да чита при полнење и запишува при складирање, 2.2.
Регистарската датотека мора да биде запишана при полнење и при аритметичко-логичка
инструкција, 2.3. ALU

4
High-level имплементација
1. Пред да започне извршувањето на инструкција,
операндите мора да се во регистрите
2. Извршувањето на инструкцијата започнува со
читање на нејзината адреса во програмскиот
бројач
3. Инструкцијата се презема од меморија
4. Операндите (полиња во инструкцијата) се
преземаат од регистрите
5. АЛУ пресметува резултат (обично собирање,
адреса во меморија, и сл)
6. Резултатот се запишува во регистар, програмски
бројач, или меморија

5
High-level имплементација

• High-level имплементацијата го покажува


патот на податоците
• Затоа уште се нарекува податочна патека
• Стрелките го покажуваат текот на
податоците
• Сигналните линии можат да се вкрстат.
• Ако вкрстени линии се спојуваат се става
точка врз нив.

6
High-level имплементација

1. Како може податоци од повеќе извори да


влегуваат во АЛУ?

2. Како процесорот ја контролира работата


на елементите од кои е составена
податочната патека?

7
Имплементација со повеќе детали

(слајд 9)
На Сликата се покажани податочните патеки од претходната слика со трите потребни
мултиплексери што се додадени, како и контролни линии за главните функциски
единици (Основна имплементација на МИПС множеството)
• Мултиплексерот најгоре на сликата („Mux“) контролира која вредност ја заменува
вредноста на програмскиот бројач (PC) (PC+4 или одредишната адреса на
разгранувањето); мултиплексерот е контролиран од портата која извршува „И“ на
Нула излезот од АЛУ и контролниот сигнал кој покажува дека инструкцијата е
разгранување.
• Средниот мултиплексер, чиј излез враќа во регистарската датотека, се користи за
да го насочува излезот од АЛУ (во случај на аритметичко-логички инструкции) или
излезот во податочната меморија (во случај на полнење) за запишување во
регистарската датотека.
• најдолниот мултиплексер се користи за да одреди дали вториот АЛУ влез е од
регистрите (за аритметичко-логичка инструкција или за разгранување) или од
полето за поместување на инструкцијата (при полнење или складирање).
Додадените контролни линии се насочувачки и ја определуваат операцијата
извршена од АЛУ, дали треба да се чита или запишува податочната меморија и дали
регистрите треба да извршат операција за запишување. Овие контролни линии се
покажани во боја за да може полесно да се гледаат.
СЛЕДНИТЕ НЕКОЛКУ ПРЕДАВАЊА ГО ПОДОБРУВАМЕ ОВОЈ ПОГЛЕД СО ДОПОЛНУВАЊЕ
НА ДЕТАЛИТЕ

8
Имплементација со повеќе детали

• Уредот со кој се врши селекција кои


податоци да се достават до АЛУ се вика
мултиплексер MUX
• Работата на елементите од податочната
патека се контролира со сигнали
• Контролна единица управува со
податочната патека со помош на сигнали

9
Логички конвенции
• Податочната патека е изградена од два типа логички
елементи:
– Комбинаторни елементи кои оперираат врз податоците
(АЛУ)
– Елементи на состојба (регистер, меморија)

• За сигнал кој е логички на високо ниво велиме дека е


”поставен” (англ. аsserted)
• За сигнал кој е логички на ниско ниво велиме дека е
”разрешен” (англ. deаsserted)

Сите елементи што оперираат над податочни вредности се комбинаторни, што значи
дека нивните излези зависат само од тековните влезови. При ист влез,
комбинаторниот елемент секогаш го создава истиот излез (пр. АЛУ )
Еден елемент чува состојба, ако има некој внатрешен простор за складирање. Овие
елементи се наречени елементи на состојба. Елементот на состојба има најмалку два
влеза и еден излез. Потребните влезови се податочните вредности што ќе се запишат
и тактот, кој одредува кога да биде запишана вредноста. Излезот од елемент на
состојба ја обезбедува вредноста што била запишана во претходен такт циклус .
Логичките компоненти што содржат состојба се нарекуваат и секвенцијални, бидејќи
нивните излези зависат од нивните влезови и содржината од внатрешната состојба
(На пример, излезот од функциската единица што ги претставува регистрите зависи од
пратените броеви на регистри и од тоа што било запишано во регистрите претходно. )

10
Логички конвенции
• Елемент на состојба не може во исто време да се чита и да се пишува
во него
• Часовник (такт) одредува кога може да се пишува во него.
• Рабно активирање – во некои елементи на состојба може да се
пишува само на предниот раб или само на задниот раб
• Времето на пропагација од елементот 1 до елементот 2 ја одредува
максималната фреквенција на тактот

преден раб
заден раб

Методологијата на задавање тактови одредува кога сигналите можат да бидат


прочитани и кога тие можат да бидат запишани. Тоа е важно за да го специфицира
времето на читање и запишување, бидејќи, ако сигналот е запишан во исто време
кога е и прочитан, вредноста на прочитаниот може да соодветствува на старата
вредност, новата запишана вредност, или дури и некоја комбинација од двете!

Слика: Во синхронизиран дигитален систем, фреквенцијата решава кога елементите


со состојбата ќе запишат вредности во внатрешната меморија. Сите влезови во
елементите на состојбите мора да достигнат стабилна вредност (т.е. мора да
достигнат вредност од која тие нема да се менуваат до наредната промена на тактот
која би предизвикала промена на состојбата. Сите елементи за состојбата од оваа
глава, вклучувајќи ја и меморијата, се сметаат за активирани на раб

11
Методологија на задавање такт
• Методологијата со рабно активирање им овозможува на
елементите на состојбата да бидат прочитани и запишани
во истиот такт

• Тактот е контролен сигнал во елементите на состојба

СЛИКА 4.4 Методологијата со рабно активирање им овозможува на елементите на


состојбата да бидат прочитани и запишани во истиот такт без да се креира трка која
може да доведе до неопределени податочни вредности. Се разбира, тактот сепак
мора да е доволно голем за влезните вредности да бидат стабилни кога ќе се случи
рабно активирање. Повратна информација не може да даде во текот на еден такт
бидејќи ажурирањето на елементот на состојбата е активирано од раб. Ако е можна
повратната информација, овој дизајн не би работел соодветно. Нашите дизајни во
оваа глава и во наредната се потпираат врз методологијата со рабно активирање и
врз структурите како онаа покажана на сликата.

12
Градење на податочна патека

Елементи од
податочната патека:
1. Инструкциска Сума
меморија
2. Програмски
бројач
3. Собирач

13
Елементи од податочната патека
1. Програмскиот бројач ја содржи мемориската адреса
на инструкцијата која во моментот се извршува
2. Инструкциската меморија е хардверски елемент кој
презема инструкции од меморија и ги доставува на
податочната патека . Адресата на инструкцијата што
треба да се преземе се прима како влезен
параметар од програмскиот бројач
3. Собирачот ја пресметува адресата на следната
инструкција што треба да се изврши. Пресметаната
адреса на следната инструкција се запишува во
програмскиот бројач во следниот такт

Елементи на состојба: инструкциската меморија и програмскиот бројач


PC register
Инструкциската меморија треба да овозможи само пристап за читање, бидејќи
податочната патека не запишува инструкции. Бидејќи инструкциската меморија само
чита, со неа постапуваме како со комбинаторна логика; излезот во секое време ја
покажува содржината на локацијата специфицирана од адресниот влез и не е
потребен контролен сигнал за читање.
Собирач комбинаторен АЛУ што прави само собирање
Се е 32 бита

14
Градење на податочна патека

Елементи од
податочната патека:

4. Регистерска
датотека
5. Аритметичко-
логичка RegWrite
единица
ALU операција

Разгледај R тип пр add $t1,$t2,$t3

15
Елементи од податочната патека
4. Регистерска датотека – структура која содржи 32
регистри за генерална намена.
– две порти за истовремено читање на содржината на два
регистри. Како влез се специфицира 5-битен број на
регистер. На излез се појавува 32-битна содржина на
регистерот.
– Една порта за запишување во регистер - се специфицира 5-
битен број на регистер и 32-битен збор што сака да се
запише во регистерот.
– Читањето од регистерската датотека се одвива нон-стоп
– Пишувањето е дозволено само ако сигналот RegWrite е
поставен
5. АЛУ два 32-битни влеза, еден 32-битен излез и 1-
битен излез кој кажува дали 32-битниот излез е 0. Се
управува со 4-битен контролен сигнал ALU операција

16
Градење на податочна патека
MemWrite

Елементи од
податочната патека:

6. Податочна
меморија
7. Проширувач со MemRead
знак

Разгледај lw $t1,offset_value($t2) или sw $t1,offset_ value ($t2).


Овие инструкции пресметуваат мемориски адреси преку собирање на основниот
регистар, кој е $t2, на 16-битното поле со знак (+/-) содржано во инструкцијата. Ако
инструкцијата е за зачувување, вредноста што треба да се зачува мора, исто така, да
биде прочитана од регистарската датотека каде што е поставена во $t1. Ако
инструкцијата е за читање, вредноста прочитана од меморијата мора да биде
впишана во регистарската датотека и тоа во специфициран регистар, што претставува
$t1. Според тоа ќе ни бидат потребни и регистарската датотека и АЛУ

17
Елементи од податочната патека
6. Податочна меморија – структура која запишува во
меморија и чита податоци од меморија.
– Еден влез за адреса во меморија
– Еден влез за податоците што треба да се запишат
– Еден излез за податоците што се преземени од меморија
– Два контролни сигнали MemWrite и MemRead кои
диктираат дали да се чита од меморија или да се пишува
во меморија
7. Проширувач со знак 16-битен број се копира во
долните 16 бита од 32-битен број. Горните 16 бита од
32-битниот број го содржат знакот на 16-битниот
број.

18
Градење на податочна патека
(елементи за извршување на beq)

beq $t1,$t2,offset

Ако t1==t2 скокни на PC←PC +4+ 4*offset

19
Елементи од податочната патека
beq $t1,$t2,offset
Ако t1==t2 скокни на PC←PC +4+ 4*offset
• За извршување beq на потребни се две
аритметички операции
– Споредување на $t1 со $t2
• Излезот Нула на АЛУ кажува дали $t1 == $t2
– Пресметување на адресата на скокот (branch target address)
1. Се пресметува PC+4 (со собирачот на слајд 13)
2. Проширувачот на знак го прави offset 32-битен број
– offset е број на инструкции кои треба да се прескокнат
3. Поместувачот го поместува 32-битниот offset на лево за 2 бита
– Со ова се добива број на бајти (адреси) кои треба да се прескокнат
4. Собирачот ги собира поместениот 32-битен offset со PC+4

20
Креирање единствена податочна патека

21
Креирање единствена податочна
патека
• Деловите доаѓаат од сликите на претходните слајдовите.
• Оваа податочна патека може да ги изврши основните
инструкции во еден такт циклус
– Ако некој елемент е потребен двапати за една инструкција во
еден такт – истиот мора да се дуплира (пр: инструкциска и
податочна меморија, две порти за читање од регистерската
датотека)
– Ако некој елемент се користи од различни инструкции во различни
тактови – мултиплексер и контролен сигнал до мултиплексерот го
координираат доведувањето на различните податоци до
елементот
• Дополнителен мултиплексер е потребен за интегрирање
на разгранувањата.
• Поддршката за j (jump) ќе биде додадена подоцна.

22
ALU контролна единица

АЛУ 4-битен контролен сигнал

funct[5:0]
АЛУОп

23
ALU контролна единица
• Рековме: АЛУ се управува со 4-битен контролен
сигнал
• АЛУ контролната единица го произведува тој 4-
битен контролен сигнал
• АЛУ контролната единица добива на влез:
– 2-битен АЛУОп сигнал
– Последните 6 бита од инструкциите (funct)
• ALUOp сигналот го произведува друга контролна
единица, врз база на првите 6 бита од
инструкциите (OPCODE)
• АЛУ контролната единица може да се дизајнира
со логички порти (како на вежби)

24
Едноставна шема на
имплементација
• Контола на МИПС АЛУОп

Како се поставени АЛУ контролните битови зависи од АЛУОп контролните битови и


различните функциски кодови за Р-тип инструкциите.
Операцискиот код, наведен во првата колона, ги определува поставувањата на АЛУОп
битовите. Сите кодирања се покажани бинарно. Да наспоменеме дека кога АЛУОп
кодот е 00 или 01, посакуваното АЛУ дејство не зависи од полето на кодот на
функцијата; во овој случај, можеме да кажеме дека нам „не ни е грижа“ за
вредностите на кодот на функцијата, и функциското поле е покажано како XXXXXX.
Кога АЛУОп вредноста е 10, тогаш кодот на функцијата се користи за поставување на
АЛУ контролниот влез.

25
Главна контролна единица

Инструкција[20:16]

Инструкција[15:11]

Инструкција[15:0]

Инструкција[5:0]

27
Главна контролна единица
• Податочната патека се состои од:
– 4 елементи кои влијаат врз извршувањето инструкциите
• PC, ALU, податочна меморија, регистерска датотека
– 4 мултиплексери со кои се селектира кои податоци да влегуваат во 4-те
елементи
• Главната контролна единица ја контролира работата на 4-те елементи
и кои податоци да влегуваат во нив со контролни сигнали.
• Потребни се 8 контролни сигнали:
– 7 1-битни контролни сигнали (податочната меморија се контролира со два сигнала)
– 1 2-битен контролен сигнал (АЛУОп)
• Го користи opcode полето на инструкциите како влезен параметар

opcode

28
Дизајнирање на главната
контролна единица

29
Дизајнирање на главната
контролна единица

Инструкција[20:16]

Инструкција[15:11]

Инструкција[15:0]

30
Дизајнирање на главната
контролна единица
• Влезот на контролната единица е 6-битно opcode поле на
инструкцијата.
• Излезите од контролната единица се состојат од
– три 1-битни сигнали што се користат за контролирање на
мултиплексерите: Регистарско одредиште, АЛУ влез, и Меморија
кон регистар
– три 1-битни сигнали за контролирање читаат и запишуваат во
регистарската датотека и податочната меморија:Регистарско
запишување, Мемориско читање, и Мемориско запишување
– 1-битен сигнал кој се користи при одредувањето дали да се
направи разгранување: Разгранување
– 2-битен контролен сигнал за АЛУ: АЛУОп
• PC влез е изведен сигнал, наместо да доаѓа директно од
контролната единица

31
Операции над податочните
патеки
• Поставувањето на контролните линии
целосно е одредено со полињата за
операциски код на инструкцијата

Првата колона на табелата одговара на инструкциите од Р-формат (add,sub,AND,OR,и slt). За сите овие
инструкции, полињата за изворен регистар се rs и rt, полето за одредишен регистар е rd; Ова дефинира
како се поставуваат сигналите АЛУ влез и Регистарско одредиште. Понатаму, инструкција од Р-тип
запишува регистар (Регистарско запишување=1), но ниту чита ниту запишува податочна меморија. Кога
контролниот сигнал за разгранување е 0, PC безусловно е заменет со PC+4; во спротивно, PC се
заменува со целта на разгранувањето, ако е поставен и Нула излезот на АЛУ. Полето АЛУОп за Р-тип на
инструкција е поставено на 10 за да означи дека АЛУ контролата
треба да биде генерирана од полето funct. Втората и третата колона од оваа тебела ги даваат
поставувањата на контролниот сигнал за
lw и sw. Полињата АЛУ влез и АЛУОп се поставени при пресметување на адресата. Мемориско читање
и Мемориско запишување се
поставени при пристап до меморијата. На крајот, Регистарско одредиште и Регистарско запишување се
поставуваат при полнење за да
предизвикаат резултатот да биде зачуван во регистарот rt. Инструкцијата за разгранување е слична на
операција од Р-формат, бидејќи
ги праќа регистрите rs и rt во АЛУ. Полето АЛУОп за разгранување е поставено при одземање (АЛУ
контрола = 01), што се користи
при тестирање на еднаквоста. Забележувате дека полето Меморија кон регистар е ирелевантно кога
сигналот Регистарско запишување
е 0; бидејќи не се запишува во регистар, вредноста на податоците на регистарската порта Податоци за
запишување не се користи. Затоа
влезот Меморија кон регистар во последните колони на табелата е заменет со X, за да означиме дека
тој влез не ни е потребен. Произволни
влезови може да се доделат на Регистарско одредиште кога Регистарско запишување е 0. Овој тип
мора на произволни вредности да
биде додаден од дизајнерот, бидејќи зависи од познавањето на работата на податочните патеки.њето
на контролните линии целосно е одредено со полињата за операциски код на инструкцијата

32
Дизајнирање на главната
контролна единица
Трите инструкциски класи со два
инструкциски формати:

Трите инструкциски класи (Р-тип, наполни и складирај и разгранување) употребуваат


два различни инструкциски формати. Инструкциите за прескок користат друг формат,
што ќе го разгледаме подоцна.

33
Дизајн на главната контролна единица

34
Извршување на add инструкција

add $t1,$t2,$t3

35
Извршување на add инструкција
add $t1,$t2,$t3

• [31:26] влегуваат во главната контрола


• [25:21] влегуваат во првата порта за читање
• [20:16] влегуваат во втората порта за читање
• Главната контрола поставува:
– Регистерско одредиште = 1
– [15:11] влегуваат во портата за пишување преку мултиплексерот
• Излезот од првата порта за читање на регистерската датотека влегува во
АЛУ
• Главната контрола поставува:
– АЛУ влез = 0
– Излезот од втората порта за читање на регистерската датотека
влегува во АЛУ

36
Извршување на add инструкција

• [5:0] влегуваат во АЛУ контролата


• Главната контрола поставува:
– АЛУОп = 10 (види го слајд 23)
– АЛУ ќе ја изврши операцијата собирање на влезните зборови
• Главната контрола поставува:
– Меморија кон регистер = 0
– Резултатот од АЛУ ќе се запише во регистерската датотека
• Главната контрола поставува:
– разгранување = 0
– PC+4 се запишува во програмскиот бројач
• Главната контрола поставува:
– Мемориско читање = 0
– Мемориско запишување = 0
– Податочната меморија е заклучена

37
Материјал за учење

• Овој час ги покрива лекциите 4.1-4.4 од


книгата на Патерсон Хенеси

49

You might also like