Багатоцикловий прототип RISC машини. Його цикли.
Структуру багатоциклового (максимально наближеного до цільового конвеєрного варіанту) прототипу машини подано наступним рисунком.
Скороченням PC позначено лічильник інструкцій (Program Counter). Вмістиме РС визначає адресу інструкції у пам'яті інструкцій ІМ. Комбінаційний додавач Adder обраховує адресу наступної за чергою виконання інструкції. При цьому враховано, що впорядкована послідовність інструкцій (програма) складається з чотирьох байтових і тільки чотирьох байтових інструкцій (усі інструкції мають формати з довжиною 32 біти), які розміщено в IM за адресами 0, 4, 8, C і т.д. Через це константа зсуву адреси (пересування покажчика на наступну за чергою інструкцію) дорівнює +4. Визначене за допомогою додавача значення адреси вибирання наступної інструкції зберігають у регістрі NPC (next PC). Зчитаний з ІМ бінарний код поточної інструкції записують до регістру інструкції IR. Поля щойно вибраної інструкції (рис. 6), що містять бінарні коди-ідентифікатори регістрів-операндів, є фактично адресами комірок внутрішньо процесорної пам'яті, яка емулює пул (множину) програмно досяжних (видимих програмісту) регістрів. Вмістиме зазначених полів формату інструкції надсилають на адресні входи регістрового файлу Registers чи Regs, а відповідні надісланим адресам бінарні коди регістрових операндів завантажуються до внутрішніх, програмно недосяжних, тобто службових регістрів А і В. Існує ще один тип операнда з назвою “безпосередній” (Immediate чи Imm). Його задають прямо у форматі інструкції. Як правило, довжина безпосереднього операнда не перевищує половини довжини формату інструкції. В нас безпосередній операнд матимете довжину 32/2 = 16 бітів. В той самий час бажано зафіксувати таку довжину формату даних такою, що дорівнює довжині формату інструкції ( зауважимо без пояснень, що різноманіть довжин форматів суттєво пригальмовує машину). Якщо усі формати даних, як і формати інструкцій, матимуть довжину 32 біти, тоді безпосередньому операнду не вистачатиме ще 16 бітів аби бути стандартним за довжиною. Тому знакове розширення 16 бітового безпосереднього операнда до 32-х бітів виконує комбінаційний вузол Sign Extend. Результат знакового розширення тимчасово зберігають у службовому регістрі Imm. В цілому можна нарахувати чотири можливі операнди на вході АЛП: 1) з регістрів А, В, Imm; 2) вмістиме регістру адреси наступної для виконання інструкції NPC. Наперед зазначимо, що операнд-адресу NPC опрацьовують в АЛП при виконанні інструкцій умовного переходу, коли на додаток до натуральної потрібна ще одна адреса, яку утворюють додаванням до вмістимого NPC деякої константи переходу. Вибирання двох операндів АЛП із чотирьох можливих виконують за допомогою мультиплексорів операндів mux. Результат операції АЛП тимчасово запам'ятовують у проміжному службовому регістрі ALUoutput (ALUout). Якщо результатом операції є число, тоді його заносять до комірки регістрового файлу. Якщо результатом операції є адреса, тоді цю адресу надсилають до (верхнього на рисунку) мультиплексора вибору адреси mux. За допомогою зазначеного мультиплексора вибирають адресу переходу (чергова чи перехід), яку і надсилають до лічильника інструкцій PC аби коректно продовжити виконання програми. Керування мультиплексором вибору адреси наступної інструкції покладено на вузол Zero?, де вмістиме службового регістра А порівнюють із нулем (дорівнює нулю, більше нуля, менше нуля і т.д., в залежності від виду виконуваної у поточний час операції умовного переходу). Результат порівняння є бінарним логічним значенням (так або ні). Саме цей бінарний результат керує роботою мультиплексора вибирання адреси наступної інструкції. Результат-адресу з виходу АЛП надсилають до пам’яті даних як отриману адресу комірки цієї пам’яті (для інструкцій збереження/завантаження). Результатом на виході правого на рисунку мультиплексора може бути або вмістиме пам’яті даних (при виконанні інструкції завантаження LW слова з пам’яті даних до регістру регістрового файла), або результат виконання арифметичної, зсувної, логічної чи іншої операції в АЛП (наприклад, при виконанні інструкцій ADD, SUB і т.д.). Такий результат засобами мікропрограмування зберігають в регістрі регістрового файла. Отже, зазначений мультиплексор, керований регістром поточної інструкції, комутує на вхід регістрового файла потрібну інформацію.