ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6819
Скачиваний: 22
150
ється до ще одного службового регістра LMD (Load Memory Data). I тільки на наступній фазі WB, яка поки що не розглядалася, зчитаний код пересилається з регістра LMD до конкретної комірки (в нашому прикладі - це комірка з адресою R6) регістрового файла.
Друга мікродія реалізується лише при виконанні команди Store (збереження). Тут до комірки пам'яті даних за адресою, що зберігається в службовому регістрі ALUoutput = (R3) + 112, засилається вміст службового регістра В. При цьому (в наведеному прикладі) для команди SW має місце тотожність (B)=(R6).
Умовний перехід.
Виконується наступна мікродія:
if (condition) PC = ALUoutput else PC = NPC.
Здійснюється природна (cond=0) або неприродна (cond =1) заміна вмісту програмного лічильника PC з метою реалізації наступної за умовним переходом команди.
4.2.4.5. Фаза зворотного запису
На цій, вже останній фазі виконання команди, у разі потреби результат, що отримано на попередніх фазах, записується до деякої комірки RX регістрового файла. Наприклад, в R1, якщо поточною є команда ADD R1,R2,R3, або в R6 для команди LW R6,#112(R3). Тому вона і має назву зворотного запису (write/back - WB).
Потрібно звернути увагу, що на цій фазі змінюється програмний стан комп'ютера. Після її виконання поновлення попереднього стану є неможливим.
Команди виконання операції арифметико-логічного пристрою типу "регістр-ре-гістр".
Виконується наступна мікродія:
Regs[IR16...20 ] = ALUoutput.
Мікродія зберігає результат операції ALU в регістрі призначення (наприклад, в регістрі R1 на прикладі команди ADD). Зрозуміло, що біти 16...20 відповідного формату команди містять бінарний номер регістра призначення.
Команди виконання операції арифметико-логічного пристрою типу "регістр-без-посередній операнд".
Виконується наступна мікродія:
Regs[IR11...15] = ALUoutput.
Ця мікродія також зберігає результат операції, наприклад, SUB R5, R4, #1002, в комірці R5 регістрового файла.
Команда завантаження.
Прикладом команди завантаження є команда LW R6,112(R3). Виконується наступна мікродія:
Regs[IR11...15]=LMD.
Наведена мікрокоманда надсилає до комірки R6 регістрового файла вміст комірки пам'яті даних за адресою 112 + (R3), яке на попередніх фазах вже було вибране з пам'яті і тимчасово зберігалося в службовому регістрі LMD. На цьому опис мікродій керування роботою комп'ютера DLX завершено. В табл. 4.1. наведено приклади алгоритмів виконання команд в комп'ютері DLX.
151
Пояснимо на прикладі синтаксис запису алгоритмів виконання окремих машинних команд комп'ютера DLX (див. таблицю 4.1). Розглянемо запис:
Regs[R19]16...31=16(DM[Regs[R8]]0)8## DM [ Regs[R8]].
Запис означає наступне. Оновлюють лише 16 молодших (правих) бітів регістра R19. До них пересилається двобайтовий бінарний код, в якому молодший правий байт береться з пам'яті даних DM за адресою, що є збіжною з вмістом регістра R8. Старший лівий байт утворюється восьмиразовим повторюванням нульового (старшого) розряду щойно згаданого правого байта. Парою символів ## позначено операцію конкатенації (зчеплення) двох байтів до двобайтового півслова. Наведеного таблицею 4.1 достатньо, аби синтезувати неподані алгоритми виконання інших команд комп'ютера DLX.
4.2.5. Конвеєрна структура процесора комп'ютера з простою системою команд
4.2.5.1. Конвеєрний процесор
Конвеєрну структуру процесора комп'ютера з простою системою команд розглянемо на прикладі вище описаного комп'ютера DLX. Вище виконання типової команди в комп'ютері DLX було розділено на наступні фази:
152
-
IF - вибірка команди (за адресою, заданою лічильником команд, із пам'яті зчитується команда).
-
ID - декодування команди/вибірка операндів з регістрів.
-
ЕХ - виконання операції та обчислення ефективної адреси пам'яті.
-
MEM - звернення до пам'яті.
-
WB - запам'ятовування результату.
На рис. 4.6 представлена схема процесора, що виконує вказані вище фази виконання команд без перекриття. Щоб конвеєризувати цю схему, можна просто розбити виконання команд на вказані вище фази, відвівши для виконання кожної фази один такт синхронізації, і починати в кожному такті виконання нової команди. Природно, для зберігання проміжних результатів кожної фази необхідно використовувати конвеєрні регістри. На рис. 4.9 показана схема процесора з конвеєрними регістрами, які забезпечують передачу даних і керуючих кодів з одного ярусу конвеєра на наступний. Хоча загальний час виконання однієї команди в такому конвеєрі складатиме п'ять тактів, у кожному такті апаратура виконуватиме в суміщеному режимі п'ять різних команд.
Конвеєрний процесор комп'ютера DLX структуровано наступними ярусами конвеєра: IF, ID, EX, MEM, WB. Апаратура кожного ярусу реалізує притаманні їй мікроопе-рації. Наприклад, на першому ярусі виконується вибирання команди з пам'яті команд ЇМ за вмістом програмного лічильника PC, приріст (інкремент) на +4 (з врахуванням логічного байтового адресування нам'яті команд) поточної адреси за допомогою комбінаційного суматора ADD та занесення значення наступної адреси до поля NPC (Next PC), інтегрованого до конвеєрного регістра IF/ID. Мультиплексор Mux, що керується відповідним однобітним полем конвеєрного регістра ЕХ/MEM, визначає джерело запису до NPC - або наступна за чергою адреса, або цільова адреса умовного чи безумовного переходу. Важливо, що обов'язок змінювати природне адресування послідовності вибирання команд з пам'яті команд покладено на вміст команди, яка пройшла фазу конвеєра MEM,
153
Конвеєрні регістри виконують функцію збереження вмісту інтегрованих до них регістра команди IR, робочих регістрів А, В тощо. Конвеєрні регістри розташовано на межах ярусів. Вони мають назви, відповідні граничним ярусам, наприклад IF/ID. Тоді поле А конвеєрного регістра позначається як ЕХ/МЕМ.А.
До апаратури другого ярусу ID належать регістровий файл Regs, який містить множину програмно-доступних регістрів, та поширювач знаку Sign extend, що конвертує 16-бітові безпосередні знакові константи у 32-бітові стандартні операнди формату з фіксованою комою.
Апаратура третього ярусу містить комбінаційний ALU із мультиплексорами на кожному вході і схему (Zero?) визначення істинності чи хибності умови команди умовного переходу.
Призначення інших вузлів є зрозумілим з рисунка. Можна на додачу зауважити, що регістровий файл має два порти на читання і один на запис. Ця особливість є прямим наслідком запроваджених в комп'ютері DLX системи команд і конвеєрного принципу роботи. Регістровий файл Regs працює у кожній команді на двох ярусах конвеєра - ID (два читання) та WB (один запис). Означені фази двох різних команд можуть збігатися у часі. Аби запобігти колізії, потрібна реалізація одночасного читання та подвійного запису до цього файла. Крім того, необхідно запобігати запису даних до того ж самого регістра.
Роботу конвеєра можна умовно представити у вигляді часової діаграми суміщеного в часі виконання фаз команди, як це було показано раніше, або у вигляді зміщених в часі схем тракту даних комп'ютера DLX (рис. 4.10), де кожна схема зображає ту ж саму фазу команди. Тут ССі - тактові інтервали, ЇМ - пам'ять команд, REG -- регістровий файл, ALU - арифметико логічний пристрій, DM - пам'ять даних.
Цей рисунок добре відображає поєднання в часі виконання різних етапів команд. Тут перша опрацьована команда знаходиться вгорі, остання - знизу, СС - тактовий інтервал. Проте частіше для представлення роботи конвеєра використовуються часові діаграми (рис. 4.11), на яких зазвичай зображаються виконувані команди, номери тактів і етапи виконання команд.
Номер команди |
|
|
|
|
Номер такту |
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
І |
IF |
ID |
EX |
MEM |
WB |
|
|
|
|
154
i+1 |
IF |
ID |
EX |
MEM |
WB |
|
|
|
|
i+2 |
|
|
IF |
ID |
EX |
MEM |
WB |
|
|
i+3 |
|
|
|
IF |
ID |
EX |
MEM |
WB |
|
i+4 |
|
|
|
|
IF |
ID |
EX |
MEM |
WB |
Рис. 4.11. Часова діаграма роботи конвеєра
З приведеної часової діаграми стає зрозуміло, для чого потрібні дві незалежні пам'яті - команд та даних. Це дозволить на тому ж самому тактовому інтервалі без колізії поєднувати виконання фаз IF та MEM двох команд. При цьому, безперечно, зростають вимоги до швидкодії запам'ятовуючих пристроїв. Такі пристрої повинні відпрацьовувати звертання за один цикл (в нашому випадку за один тактовий імпульс), що обумовлює раціональність застосування відокремлених кеш пам'ятей команд та даних.
Конвеєризація збільшує пропускну спроможність процесора (кількість виконаних команд за одиницю часу), але вона не скорочує час виконання окремої команди. Насправді, вона навіть дещо збільшує час виконання кожної команди із-за затримок в конвеєрних регістрах. Проте збільшення пропускної спроможності означає, що програма виконуватиметься швидше порівняно зі скалярною (не конвеєрною) схемою.
Той факт, що час виконання кожної команди в конвеєрі не зменшується, накладає деякі обмеження на практичну довжину конвеєра. Окрім обмежень, пов'язаних із затримкою конвеєра, є також обмеження, що виникають в результаті незбалансованості затримки на кожному його ярусі та із-за накладних витрат на конвеєризацію. Частота синхронізації не може бути вищою, а, отже, такт синхронізації не може бути меншим, ніж час, необхідний для роботи найбільш повільного ярусу конвеєра. Накладні витрати на організацію конвеєра виникають через затримку сигналів у конвеєрних регістрах та із-за перекосів сигналів синхронізації. Конвеєрні регістри до тривалості такту додають час установки і затримку розповсюдження сигналів.
Як приклад розглянемо скалярний комп'ютер із п'ятьма етапами виконання операцій, які мають тривалість 50, 50, 60, 50 і 50 не відповідно (рис. 4.12).