ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6815
Скачиваний: 22
147
архітектура узагальнює особливості архітектур наступних сучасних комп'ютерів: AMD 29000, DEC3100, НР850, ІВМ801, Inteli860, MIPS M/120A, MIPS М/1000, M88000, RISC1, SGI 4D/60, SPARCstation-1, SUN-4/110, SUN-4/260.
Регістровий файл процесора комп'ютера DLX вміщує 32 регістри загального призначення (R0...R31) для зберігання цілих чисел, 32 регістри (F0...31) для зберігання даних з рухомою комою. Набір команд цього комп'ютера включає типові арифметичні й логічні операції, операції з фіксованою та рухомою комою, операції пересилання даних, операції керування потоком команд і системні операції. У арифметичних командах використовується триадрес-ний формат, типовий для комп'ютерів з архітектурою КПСК, а для звернення до пам'яті використовуються операції завантаження і запису вмісту регістрів у пам'ять.
Основою проектування структури процесора комп'ютера з простою системою команд є часова діаграма виконання команд з найбільшою складністю, до числа яких належить, зокрема, команда завантаження слова. Розглянемо цикл виконання команди вибірки з основної пам'яті (завантаження) слова LW R5, 16(R26). В комп'ютері DLX командний цикл поділений на п'ять фаз. Тому для виконання вказаної команди потрібно виконати наступні фази:
-
вибрати зазначену команду з основної пам'яті (перша фаза виконання команди із назвою IF (Instruction Fetch);
-
декодувати команду та вибрати операнди (друга фаза виконання команди із назвою ID (Instruction Detecting);
-
виконати команду, тобто обрахувати виконавчу адресу операнда 16 + [R26] (третя фаза виконання команди із назвою EX (Execution);
" вибрати операнд із основної пам'яті (четверта фаза виконання команди із назвою MEM (Memory);
" переслати вибраний з основної пам'яті операнд до регістра R5 регістрового файла (п'ята фаза виконання команди із назвою WB (Write Back).
Використані назви фаз дещо узагальнюють притаманну лише команді LW семантику кожної окремої фази. Це коректно, бо нашою метою є наближення до такої послідовності фаз, яка задовольняє вимогам будь-якої команди із заданої до реалізації множини з метою досягнення найбільшої швидкодії. Інші команди не завжди вимагають реалізації усього переліченого набору фаз, тому що мають меншу часову складність.
На рис. 4.4 наведена часова діаграма виконання п'ятифазової команди завантаження LW. Залежно від структури процесора ця команда може бути виконаною за різний час, який буде складатися з суми проміжків часу, необхідних для виконання кожної фази. Розглянемо підхід до побудови процесора з тим, щоб задовольнити вимогу, згідно з якою довільна комп'ютерна команда, незалежно від її типу, має виконуватися за один такт (чи однотактовий цикл), яка ставиться до процесорів комп'ютера з простою системою команд.
142
Представимо алгоритм виконання команди у вигляді потокового графа, кожна з вершин якого позначає оператор відповідної фази виконання команди (рис. 4.5а).
Для того, щоб команда виконувалася за один такт, потрібно апаратно відобразити алгоритм її виконання, тобто поставити у відповідність кожному оператору алгоритму функціональні вузли процесора, які їх виконують, та з'єднати їх між собою згідно із зв'язками вершин потокового графа алгоритму. Тоді структура процесора комп'ютера з простою системою команд, який виконує названі фази, може бути подана наступним рисунком (рис. 4.5б). Як бачимо, процесор містить п'ять послідовно з'єднаних блоків: вибірки команди з основної пам'яті, декодування операндів та вибірки команди з регістрової пам'яті, операційний, вибірки та запису даних до основної пам'яті, запису даних до регістрової пам'яті. Кожен з цих блоків виконує відповідну фазу командного циклу та передає результати до наступного блоку. Результатом послідовної роботи цих блоків є виконання команди
Деталізована структура процесора комп'ютера DLX, яка побудована на основі описаного вище підходу, представлена на рис. 4.6.
143
На цій схемі
лініями відділені блоки процесора,
показані на рис. 4.5б, які виконують
відповідну фазу командного
циклу потокового графа алгоритму
виконання команди. Перший
оператор IF
виконується на наступних елементах:
програмному лічильнику PC
(Program
Counter),
суматорі Adder
та двох регістрах NPC
і IR. Вміст
програмного лічильника
PC визначає
адресу команди в основній пам'яті.
Комбінаційний суматор Adder
обраховує адресу наступної
за чергою виконання команди. При цьому
враховано, що впорядкована
послідовність команд (програма)
складається з чотирибайтових команд
(усі команди мають формати довжиною 32
біти), які розміщено в основній пам'яті
за послідовними адресами
0, 4, 8, С і т. д. Через це константа зсуву
адреси (пересування покажчика на
наступну за чергою команду) дорівнює
+4. Визначене за допомогою суматора
значення адреси вибирання наступної
команди зберігається у регістрі NPC
(next PC).
Зчитаний з основної пам'яті
код поточної команди записується до
регістра команди IR.
Поля щойно вибраної команди містять адреси програмно-доступних регістрів регістрової файла процесора. Вміст зазначених полів формату команди в рамках оператора ID надсилається на адресні входи регістрової пам'яті Regs, а відповідні надісланим адресам коди операндів завантажуються до внутрішніх, програмно-недосяжних, тобто службових, регістрів А і В.
Існує ще один тип операнда з назвою "безпосередній" (Imm). Його задають прямо у форматі команди. Як правило, довжина безпосереднього операнда не перевищує половини довжини формату команди. В комп'ютері DLX безпосередній операнд має довжину 32/2 = 16 бітів. У той самий час бажано зафіксувати довжину формату даних такою, що дорівнює довжині формату команди, адже різноманіть довжин форматів суттєво пригальмовує комп'ютер. Якщо усі формати даних, як і формати команд, матимуть довжину 32 біти, тоді безпосередньому операнду не вистачатиме ще 16 бітів, аби бути стандартним за довжиною. Тому тут використаний комбінаційний вузол Sign Extend, який виконує
144
знакове розширення 16-бітового безпосереднього операнда до 32-х бітів. Результат знакового розширення тимчасово зберігають у службовому регістрі Imm.
В цілому можна нарахувати чотири можливі операнди на вході арифметико логічного пристрою ALU процесора: з регістрів А, В, Imm та вміст регістра адреси наступної для виконання команди NPC, над якими виконується функціональний оператор ЕХ. Наперед зазначимо, що операнд-адреса NPC опрацьовується в ALU при виконанні команд умовного переходу, коли на додаток до наступної потрібна ще одна адреса, що утворена додаванням до вмісту NPC деякої константи переходу. Вибирання двох операндів на вхід ALU із чотирьох можливих виконується за допомогою мультиплексорів операндів mux, розташованих на його входах.
Результат операції з ALU тимчасово запам'ятовується у проміжному службовому регістрі ALUout. Якщо результатом операції є число, тоді воно заноситься до комірки регістрового файла. Якщо результатом операції є адреса, тоді ця адреса надсилається до (верхнього на рисунку) мультиплексора вибору адреси mux. За допомогою зазначеного мультиплексора вибирають адресу переходу (чергова чи перехід), яка і надсилається до програмного лічильника PC, аби коректно продовжити виконання програми.
Керування мультиплексором вибору адреси наступної команди покладено на вузол Zero?, де вміст службового регістра А порівнюється із нулем (дорівнює нулю, більше нуля, менше нуля і т. д., залежно від виду виконуваної у поточний час операції умовного переходу). Результат порівняння є бінарним логічним значенням (так або ні). Саме цей бінарний результат керує роботою мультиплексора вибирання адреси наступної команди.
При виконанні фази MEM результат-адреса з виходу ALU надсилається до основної пам'яті як отримана адреса комірки цієї пам'яті (для команд збереження/завантаження)
Результатом на виході правого на рисунку мультиплексора може бути або вміст основної пам'яті (при виконанні команди завантаження LW слова з основної пам'яті до регістра регістрового файла), або результат виконання арифметичної, зсувної, логічної чи іншої операції в ALU (наприклад, при виконанні команд ADD, SUB і т. д.). Такий результат в рамках виконання фази WB засобами мікропрограмування зберігають в регістрі регістрового файла. Отже, зазначений мультиплексор, керований регістром поточної команди, комутує на вхід регістрового файла потрібну інформацію
Таким чином, апаратно відобразивши потоковий граф алгоритму виконання команди, вдалося забезпечити вимогу, щоб вона виконувалася за один такт. Як видно з вище приведеного опису роботи процесора, для спрощення пояснення тут були використані проміжні регістри для запису операндів, які можуть бути видалені. Порівняно з процесором комп'ютера із складною системою команд виконання команди в приведеній структурі процесора суттєво спростилося. Далі розглянемо це детальніше, але спочатку проведемо аналіз взаємодії процесора з основною пам'яттю.
4.2.3. Взаємодія процесора з пам'яттю в комп'ютері з простою системою команд
Відомий так званий парадокс пам'яті - пам'ять може мати малий об'єм, проте бути швидкою і задовольняти вимоги процесора щодо швидкодії, або мати відносно великий об'єм і бути повільною. Немає пам'яті відносно великої і, водночас, швидкої. Ставити зараз питання про основну пам'ять, об'єм якої задовольняє системного програміста (сис-