logo
AOM / Мельник А

4.2.5.2. Мікродії ярусів конвеєрного процесора

Відразу зазначимо, що всі мікродії одного ярусу конвеєра мають бути сумісними в часі та виконуються паралельно в рамках однієї фази (як правило, за один тактовий ін­тервал). Мікродії, що реалізуються в кожному ярусі конвеєра комп'ютера DLX, зведено в табл. 4.2.

156

Мікродії ярусу IF.

Перша мікродія вибирає нову команду з пам'яті команд за адресою, що зберігається в PC,і записує її до поля IR(InstructionRegister)конвеєрного регістра IF/ID.В той самий час друга мікродія змінює вміст поля NPCконвеєрного регістра і програмний лічиль­ник за алгоритмом: якщо бітове поле cond(condition- умова) попередньої команди, яка пройшла фазу ЕХ, є одиницею (true), тоді порушується природна черговість і вміст IF/ID.NPC та PC отримує значення поля EX/MEM.NPC конвеєрного регістра ЕХ/МЕМ; інакше записується наступна адреса (РС+4) з врахуванням байтової логічної структури адреси пам'яті.

Мікродії ярусу ID.

Усі чотири мікродії є сумісними і виконуються в часі паралельно. Перша мікродія вибирає перший операнд з програмно керованого регістра регістрового файла до служ­бового регістра А, що є інтегрованим до конвеєрного регістра ID/ЕХ. При цьому адреса програмно керованого регістра визначається вмістом розрядів 8.. 10 поля IRконвеєрно­го регістра IF/ID.Тут вибирається операнд. Такі ж за призначенням дії виконує друга мікрооперація, але з іншим джерелом і приймачем. Третя і четверта мікродії зберігають контекст команди, що знаходиться на поточній сходинці. Це необхідно для її коректного просування конвеєром. Четверта мікродія вибирає (та знаково розширює з 16 до 32-х бітів) до службового регістра Imm (immediate - безпосередній) операнд, який містився у розрядах 16...31 поля IR конвеєрного регістра. Поточну фазу ID можна розширити у назві додатковим означенням Operand Fetch (вибирання операндів).

Мікродії ярусу ЕХ (команди арифметико-догічного пристрою).

Важливо відзначити, що на фазі ЕХ вперше від початку виконання команди має бути визначеним її тип. Перша мікродія зберігає вміст регістра команди. Четверта мікродія забороняє командам ALU впливати на послідовність вибирання команд з пам'яті. Друга і третя мікродії утворюють альтернативу (або). Кожна з них визначає пару операндів для операції ор і при цьому записує результат ор до службового (програмно-некерованого) вихідного регістра ALUпід назвою ALUoutput.

Мікродії ярусу ЕХ (команди load/store).

Перша мікродія зберігає контекст регістра команди, друга вираховує виконавчу (ефективну) адресу пам'яті даних на основі бази (Immediate - безпосередній операнд), третя зберігає вміст службового, програмно-некерованого регістра В, четверта заборо­няє поточній команді змінювати природний порядок адресування команд.

Мікродії ярусу ЕХ (команда branch).

Перша мікродія вираховує цільову адресу можливого переходу та зберігає її у робо­чому (некерованому програмістом) вихідному регістрі ALUoutput,а конкретно - у полі ALUoutputконвеєрного регістра ЕХ/МЕМ. Друга мікродія вираховує істинне або хибне значення логічної умови, що визначається порівнянням в деякому, тобто ор розумінні, службового регістра А, визначеного за вмістом на фазі ID, з нулем (дорівнює нулю, не дорівнює нулю, тощо). Логічне значення умови записується до поля condконвеєрного регістра ЕХ/МЕМ з метою дозволу зміни природного порядку вибирання команд про­грами, коли cond=l.Контексти не зберігаються, що свідчить про неформальне завер­шення опрацювання цієї команди в конвеєрі.

157

Мікродії ярусу MEM (команди арифметико логічного пристрою).

Активних мікродій обробки інформації немає, що свідчить про транзитний харак­тер опрацювання команди на цій сходинці. Обидві мікродії лише зберігають для подаль­шого користування вміст регістра команд і вихідного регістра ALU.

Мікродії ярусу MEM ( команди load/store).

Перша мікродія виконує транзитне пересилання вмісту коду операції з відповідного поля вхідного конвеєрного регістра до відповідного поля вихідного конвеєрного регі­стра ярусу. Це свідчить про те, що виконання команди (лише - завантаження) має про­довжуватися в наступному ярусі конвеєра. При завантаженні виконується друга мікро­дія, а при збереженні - третя. Виконавча (ефективна) адреса пам'яті даних визначається вмістом службового вихідного регістра ALU.При завантаженні вміст комірки пам'яті даних зберігається в проміжному регістрі LMD(LoadMemoryData),а при збереженні вміст службового регістра В записується до комірки пам'яті даних

Важливо, що дана мікропрограма ігнорує існування відомого парадоксу пам'яті, що коректно тільки за умови використання кеш пам'яті даних та системи переривань у ви­падку «невлучення до кеш» («покарання» за невлучення - це певна кількістю додаткових тактових інтервалів, аби погодити швидкодію процесора і пам'яті даних за рахунок при­гальмовування операцій в скалярному процесорі).

Мікродії ярусу WB (команди арифметико логічного пристрою).

Завжди виконується лише одна мікрооперація з двох зазначених. В кожному випад­ку результат обробки операндів в ALUз поля конвеєрного регістра MEM/WB.ALUoutputзаписується до регістра регістрового файла процесора. Використання двох мікрокоманд замість однієї пояснюється тим, що у форматі команд load DLX повного дотримання правила «фіксоване розташування полів» немає. За рахунок цього адреса призначення у форматі команди рухається: може визначатися розрядами 16...20 або розрядами 11... 15 команди. Так чи інакше, але вказана «рухомість» адреси поля призначення ускладнює апаратний пристрій керування і може зменшити його швидкодію

Мікродії ярусу WB (команда load).

Зазначимо, що команда store(збереження) на цьому ярусі виконання не потребує мікродій. Тут завершується виконання лише команди завантаження операнда з комірки пам'яті даних до регістра регістрового файла процесора

Операнд зберігається у полі LMDвхідного конвеєрного регістра MEM/WB,а адреса ко­мірки (регістра) регістрового файла міститься у полі MEM/WB.IR11... 15. Важливо, що ре­гістровий файл повинен реалізувати два порти, а саме, два порти на читання та один порт на запис. При цьому, якщо дві адреси на читання постачає конвеєрний регістр (IF/ID), то адресу на запис і дані постачає щойно розглянутий конвеєрний регістр (MEM/WB).

4.3. Суперконвеєрні процесори

Можлива така організація виконання деякої послідовності команд в процесорі, коли всі однойменні фази виконання цих команди послідовно, тобто спочатку проводиться вибірка всіх команд, далі 'їх декодування і т. д., як це показано на рис. 4.13. для послідов­ності із двох команд

158

Такий підхід не прискорює роботу процесора, але при конвеєрному опрацюванні ко­манд може виявитися доцільним, оскільки в ярусах конвеєра (рис. 4.14) знаходяться ре­зультати виконання декількох фаз різних команд, що при наявності конфліктів дозволяє ефективніше їх вирішувати, аніж у звичайному конвеєрі команд. Процесор з конвеєром команд, в якому послідовно виконуються декілька фаз над різними командами, назива­ється суперконвеєрним.

Як видно з приведеної на рис. 4.14 діаграми, при послідовному виконанні фаз двох команд в одному такті роботи конвеєра кожна з фаз повинна виконуватись двічі. Коли послідовно виконується kфаз команд, то в кожному такті кожна з фаз має виконуватися kраз. Це говорить про те, що внутрішня частота роботи ярусів конвеєра суперконве-єрного процесора є в kразів вищою 'їх зовнішньої частоти, з якою відбувається обмін інформацією між ярусами.

Потрібно відзначити, що для організації суперконвеєрного опрацювання команд не­обхідне деяке додаткове обладнання порівняно з конвеєрним. Це, зокрема, регістри для зберігання проміжних результатів послідовно виконуваних фаз різних команд.

4.4. Суперскалярні процесори

Вище була розглянута конвеєрна структура процесора, коли засоби виконання яру­сів потокового графа алгоритму розділяються конвеєрними регістрами. Щоб підви­щити продуктивність конвеєрного процесора потрібно далі спрощувати операції його ярусів та поглиблювати глибину конвеєра. Це і робиться в сучасних процесорах, в яких глибина конвеєра досягає двадцяти і більше ярусів. Наприклад, процесор комп'ютера UltraSPARC III має 10 ярусів конвеєра, а процесор комп'ютера Pentium IV - 20 ярусів конвеєра. Однак процес спрощення операцій ярусів конвеєра має межу, коли операції не піддаються поділу. Наприклад, фаза вибірки команди з пам'яті не може бути поділеною на простіші фази. Тоді для підвищення продуктивності процесора необхідно використо­вувати паралельне включення декількох конвеєрів команд. Такі процесори з декількома конвеєрами команд дозволяють одночасно виконувати кілька скалярних команд, а тому дістали назву суперскалярних.

Першу суперскалярну архітектуру розробив Джон Коук (JohnCocke,IBM,1987 рік), що отримала назву America.Він і запропонував термін "суперскаляр". Вже потім моди­фікований варіант архітектури Americaпід назвою POWER-1 (Performance Optimizati­on With Enhanced RISC) впровадили до серійних систем RISC System/6000 фірми IBM.

159

Нарешті, підмножину архітектури POWER-1 реалізовано в процесорах Power PC, які є основою комп'ютерів Apple Macintosh. Іншими прикладами суперскалярних процесорів є процесори систем UltraSparc фірми Sun та Alpha фірми DEC.

Структура суперскалярного процесора та його зв'язки з кеш пам'яттю даних і ко­манд, показані на рис. 4.15.

Тут одночасно вибирається та декодується декілька команд, а блок виконання ко­манд включає кілька функціональних блоків. Для забезпечення одночасного читання та запису кількох операндів кеш пам'ять будується за модульним принципом.

Зрозуміло, що підвищення продуктивності такого процесора досягається шляхом його конвеєризації. Діаграма виконання команд в суперскалярному процесорі, який має два конвеєри команд, показана на рис. 4.16а.

160

Можливе суміщення суперскалярного та суперконвеєрного опрацювання команд, як це показано на рис. 4.16 b.

4.5. Процесор векторного комп'ютера

Вище були розглянуті скалярні та суперскалярні процесори, в яких операції викону­ються над скалярними даними. Однак існує значна кількість завдань, коли опрацюван­ню за одними процедурами підлягають великі масиви (вектори) даних. У цьому випадку виглядає доцільним розгляд можливості модифікації комп'ютера під виконання цього класу завдань. До цих пір така модифікація здійснювалась в потужних комп'ютерах, але на даний час вона почала поширюватись на всі типи комп'ютерів. Відповідно комп'юте­ри, орієнтовані на опрацювання векторів даних, дістали назву векторних.

Різницю між виконанням скалярної та векторної операції наглядно відображає рис. 4.17, з якого видно, що скалярна операція передбачає виконання додавання над двома дани­ми, тоді як векторна - над двома векторами даних.

Аби зрозуміти стиль програмування векторних комп'ютерів, наведемо приклад програми із скалярними і векторними кодами. Запишемо програму обчислення виразу Y=а * X+ Y,де Y,X- вектори, а а - скаляр. Нехай вектори мають довжину по 64 елемен­ти. Векторна програма має вигляд:

LD

F0, а

; load scalar a

LV

VI, Rx

; load vector X

MULTS

V2, F0, V1

; vector-scalar mult.

LV

V3, Ry

; load vector Y

ADDV

V4, V2, V3

;add

SV

Ry, V4

; store vector

Відповідна скалярна програма має вигляд:

І61

LD

F0,a

ADDI

R4,Rx,#512

; last address to

Loop:

load LD

F2,0(Rx)

; load X(l)

MULTD F2,F0,F2

; a*X(l)

LD

F4, 0(Ry)

; load Y(l)

ADDD

F4,Ґ2,F4

; a*X(l)+Y(l)

SD

F4,0(Ry)

; store into Y(l)

ADDI

Rx,Rx,#8

; increment index

ADDI

Ry,Ry,#8

; increment index

SUB

R20,R4,Rx

; compute bound

BNZ

R20, loop

; check if done

У скалярній програмі курсивом позначено залежності, яких немає у векторному ва­ріанті програми. Обидва варіанти програми можна порівняти за наступними кількісни­ми характеристиками:

  1. За кількістю операцій: 578(2+9*64) проти 321(1+5*64); кількість операцій у вектор­ній програмі зменшено в 1,8 разу.

  2. За кількістю команд: 578(2+9*64) проти 6-ти команд у векторній програмі; пере­вага в 96 разів.

В таблиці 4.3 наведені характеристики кількох промислових векторних комп'ютерів, з якої видно доцільність їх створення з огляду на досягнуту продуктивність.

Таблиця 4.3

Тип машини

Рік випуску

Частота, MHz

Кількість регістрів

Кількість елементів

Кількість пристроїв float point

Кількість пристроїв load/store

Продуктив

ність (MFLOPS)

Cray-1

1976

80

8

64

6

1

160

Cray XMP

1983

120

8

64

8

2L, IS

940

Cray YMP

1988

166

8

64

8

2L, IS

2667

Cray C-90

1991

240

8

128

8

4

15238(16)

Cray T-90

1996

455

8

128

8

4

57600(32)

Conv. C-l

1984

10

8

128

4

1

20(1)

Conv. C-4

1994

133

16

128

3

1

3240(4)

Fuj. VP200

1982

133

8-256

32-1024

3

2

533(1)

Fuj. VP300

1996

100

8-256

32-1024

3

2

N/A

NEC SX/2

1984

160

8 + 8К

256 + var

16

8

1300(1)

NEC SX/3

1995

400

8 + 8К

256 + var

16

8

25600(4)

Таким чином, процесори векторних комп'ютерів виконують команди над вектора­ми даних. Структура цих процесорів за складом та зв'язками повторює вже розглянуті вище структури процесорів, тобто це можуть бути процесори векторних комп'ютерів із

162

складною та простою системою команд, конвеєрні та суперконвеєрні, а також процесори супервекторних комп'ютерів, коли в процесорі є декілька конвеєрів команд. Основна їх відмінність - забезпечення одночасного виконання однієї команди над вектором даних. Це, зокрема, дозволяє будувати 'їх блоки виконання команд за конвеєрним принципом і при цьому позбутися конфліктів, які суттєво гальмують роботу конвеєра чи ускладню­ють його структуру.

Для вияснення базових принципів побудови процесорів векторних комп'ютерів роз­глянемо структуру та систему команд процесора векторного варіанта комп'ютера DLX,а саме комп'ютера DLXV.До складу процесора, структура якого приведена на рис. 4.18, входять пристрій векторного читання запису, регістрові файли з векторними та ска­лярними регістрами, а також операційний пристрій з набором конвеєрних операційних пристроїв додавання, множення та ділення з рухомою комою та виконання арифметич­них і логічних операцій над цілими числами.

Цей комп'ютер має векторні команди, які наведено в табл. 4.4.

Таблиця 4.4

Команда

Операнди

Операція

Коментар

ADDV

VI, V2.V3

V1=V2+V3

VECTOR+VECFOR

ADDSV

VI, F0.V2

V1=F0+V2

SCALAR+VECFOR

MULTV

V1,V2,V3

Vl=V2xV3

VECFORxVECFOR

MULSV

VI, F0.V2

V1=F0XV2

SCAFAR x VECTOR

LV

VI, Rl

Vl=M[Rl..Rl+63]

FOAD, SFRIDE=1

LVWS

V1,R1,R2

V1=[R1..R1+63*R2]

LOAD, SFRIDE=R2

LVI

V1,R1,V2

V1 = [R1+V2i,i=0..63

indirect ("gather")

CeqV

VM,V1,V2

VMASKi=(Vl I=V2I)

comp. Set mask

MOV

VLR,R1

Vec. Len. Reg = Rl

set vector length

MOV

VM, Rl

Vec. Mask=Rl

set vector mask

Приведений процесор є процесором комп'ютера з простою системою команд. До цього типу належать усі векторні суперкомп'ютери: Cray, Convex, Fujitsu, Hitachi, NEC.

163

Хоча потрібно зауважити, що існують і векторні комп'ютери з архітектурою «пам'ять-пам'ять», коли всі векторні операції є операціями типу пам'ять-пам'ять наприклад, CDC-6600.

Подібно до приведеного на рис, 4.18, процесори векторних комп'ютерів містять на­ступні основні компоненти

Перші векторні комп'ютери STAR-100 фірми CDC та ASC фірми ТІ були створені в 1972 році. Це були векторні комп'ютери з архітектурою типу пам'ять-пам'ять

Значний внесок в теорію побудови векторних комп'ютерів зробив видатний амери­канський конструктор векторних суперкомп'ютерів Сеймур Крей. Нарис. 4.19 зображе­но його перший векторний суперкомп'ютер Сгау-1 та векторні суперкомп'ютери Сгау-2 і Cray-YMP.

Комп'ютер CRAY-1був створений в 1976 році і мав архітектуру типу «регістр-ре-гістр», тому він був найшвидшим серед векторних та скалярних комп'ютерів свого часу. В 1981 році на ринку з'явився значно потужніший векторний комп'ютер CYBER-205 фір­ми CDC з тією ж базовою архітектурою, що і STAR-100, але більшою кількістю вектор­них функціональних блоків. Це були векторні комп'ютери з архітектурою типу "пам'ять-пам'ять". В 1983 році фірма Cray Research поставила на ринок векторний суперкомп'ютер CRAY X-MR а через кілька років - CRAY-2, який мав вищу тактову частоту та іще біль­ший рівень конвеєризації. В 1988 році фірма Cray Research створила значно швидший, ніж Х-МР суперкомп'ютер CRAY Y-MP, котрий мав 8 конвеєрних процесорів, кожний з яких працював з тактом 6 нc.

Одночасно потужні векторні суперкомп'ютери почали створюватись і в інших дер­жавах. Зокрема, в середині 80-х років в Японії були створені суперкомп'ютери Fujitsu

164

VP100і VP200,за ними HitachiS810і NECSX/2,які за технічними характеристиками не поступалися комп'ютерам фірми CrayResearch

Протягом наступних 20 років векторні комп'ютери мали швидкий розвиток і з екзо­тичних перетворились в широковживаний клас потужних комп'ютерів.

4.6. Класифікація архітектури комп'ютера за рівнем суміщення опрацювання команд та даних

Виходячи з вищенаведеного розгляду різних принципів побудови процесорів, мож­на зробити наступну класифікацію архітектури комп'ютера за рівнем суміщення в них опрацювання команд та даних

■ за відсутністю та наявністю конвеєра команд: комп'ютери без конвеєра команд та комп'ютери з конвеєром команд

■ за відсутністю та наявністю конвеєра даних: комп'ютери без конвеєра даних та комп'ютери з конвеєром даних

" за кількістю одночасно опрацьовуваних скалярних команд: скалярні та супер-скалярні

■ за кількістю одночасно опрацьовуваних векторних команд: векторні та супер- векторні

Проведений вище аналіз названих архітектур дозволяє зробити висновок про те, що для побудови високопродуктивних комп'ютерів потрібно, щоб вони мали суперконве-єрну суперскалярну та супервекторну архітектуру

4.7. Короткий зміст розділу

Розглянуто місце процесора в комп'ютері, його функції та склад. Приведена одно-шинна структура процесора комп'ютера із складною системою команд та розглянуто виконання на ній основних операцій процесора: вибірки слова із пам'яті, запам'ятову­вання слова в пам'яті, обміну між регістрами, виконання арифметичних і логічних опе­рацій. Проведено порівняння одношинної з багатошинною структурою процесора

Виділено особливості побудови процесора комп'ютера із складною системою команд та сформовано вимоги до процесора комп'ютера з простою системою команд. Описані базові принципи побудови процесора комп'ютера з простою системою команд, а також взаємодія процесора з основною пам'яттю в комп'ютері з простою системою команд

Розглянуто фази виконання команд в процесорі комп'ютера з простою системою ко­манд: вибирання та декодування команди, виконання та формування ефективної адре­си, звернення до пам'яті/завершення умовного переходу, зворотного запису. Описана конвеєрна структура процесора з простою системою команд на прикладі процесора комп'ютера DLX.Розглянуто принципи побудови суперконвеєрним та суперскалярних процесорів, а також процесорів векторних комп'ютерів. Виходячи з вищенаведеного розгляду різних принципів побудови процесорів, зроблено класифікацію архітектури комп'ютера за рівнем суміщення в ньому опрацювання команд та даних.

165