ЯДРО RISC-ПРОЦЕСОРА ДЛЯ РЕАЛІЗАЦІЇ У ПЛІС



Сергієнко П.А., Сергієнко А.М., Сімоненко А.В. Рассмотрен проект шестнадцатиразрядного процессорного ядра, реализованного в ПЛИС. Система команд ядра адаптирована для исполнения алгоритмов компрессии и управления.

A soft IP core of the 16-bit RISC microprocessor forthe FPGA implementation is considered. The core instruction set is adapted to implement the lossless compression, and control algorithms.

УДК 004.383

Вступ

Програмовані логічні інтегральні схеми (ПЛІС) дають змогу реалізувати процесори зі спеціалізо­ваною системою команд, завдяки чому мінімізуються апаратні витрати, енерго­спо­жи­вання, а також оптимізується продуктив­ність процесора при виконанні певної множини задач. У [1] показана ефективність реалізації 8-розрядного мікропроцесора у ПЛІС, у якого мі­ні­міз­ова­на система команд. Тепер розробка про­це­сор­них ядер зі спеціалізо­ваною системою команд (application specific instruction set proces­sor – ASIP) є сталою тенденцією. Така розробка підтри­­м­у­ється засобами САПР, такими як Synopsys Processor Designer, який використовує методику LISA [2].

Але множина архітектур таких процесорів обмежена 8- та 32-розрядни­ми процесорами. Крім того, більшість процесорів орієнтована на виконання кількох обчислювальних процесів, включаючи роботу операційної системи. На виконання таких проце­сів потрібні суттєві часові та апаратні витрати [3].

У доповіді показано проекту­вання 16-роз­ряд­­ного мікропроцесора RISC-ST2, система ко­манд якого орієнтова на навиконання алгорит­мів компресії та керування та може бути швид­ко налаш­тована вручну.

Особливості архітектури процесорного ядра

Метою розробки RISC-ST2 було 16-розрядне процесорне ядро, яке має невеликі апаратні витрати і може бути налаштоване на виконання однієї задачі, яка має багато логічних опера­торів та обробку потоків даних з полями змін­ної довжини. Це, наприклад, пакування даних за алгоритмом LZW. Програма повинна пов­ністю вмі­щу­ватись всередині ПЛІС і тому ба­жано міні­мізувати її довжину. При необхідності виконан­ня кількох паралельних задач кожна з них може викону­ватись на окремому ядрі. Кілька ядер можуть бути обʼєднані у систему через свої регістри вводу-виводу та систему переривань.

За основу було взяте ядро RISC-ST, яке опи­сане в [4]. При формуванні структури прийма­лись до уваги рекомендації проектування про­це­сорів для ПЛІС, які приведені у [1]. Довжина команди була збільшена до 18 розрядів, що дало змогу збільшити кількість команд, опти­мі­зувати ефективність їхньої реалізації та краще задіяти обʼєм вбудованої памʼяті ПЛІС.

Завдяки тому, що сучасні ПЛІС мають шес­ти­розрядні логічні таблиці (ЛТ) замість чоти­рьох­розрядних ЛТ, як у ПЛІС старих поколінь, зʼявляється можливість додавати велику кіль­кість різних команд, несуттєво збільшуючи апа­ратні витрати та період тактового інтервалу.

Так, до ядра додано команди обробки окре­мих бітів слів, виділення бітових полів заданої довжини, злиття полів, зсуву слів, підрахунку числа ну­льових старших розрядів. Для реаліза­ції швид­кого доступу до асоціативної таблиці вве­дено команду обчислення хеш-функції. У про­­цесорі кри­тичний шлях сигнали проходять по мережах, які забезпечують виконання коман­ди DJNZ – декременту вказаного регістра та переходу при нерівності результату нулю.

Регістрова памʼять процесора має 32 регіс­т­ри. Причому командно доступ­ними є 16 молод­ших регістрів. 16 старших регістрів доступні піс­­­ля перемикання банку регістрів чи входу у режим переривання, причому вони мають адре­си від 8 до 15. Щоби максимально задіяти мож­ливості регістрової памʼяті, яка реалізована на ЛТ, у процесорі протягом одного такту вико­ну­ється читання з трьох регістрів та запис у один регістр. При цьому операнд, на місце яко­го за­пи­сується результат, зберігається у додат­ко­во­му регістрі і може бути збережений у ре­гіс­т­ро­вій памʼяті за наступною командою.

Використовуються такі види адресації, як регістрова, базова, індексна з преінкрементом. Адресно доступні до 256 периферійних регіс­т­рів. Такі регістри можуть слугувати регістрами вводу-виводу спецпроцесорів, які виконують швидкісні обчислення, як наприклад, обчислен­ня елементарних функцій, цифрову обробку сигналів, шифрування.

Памʼять даних розбита на сторінки по 256 байт і має максимальну ємність 16 мегабайт. Для доступу до памʼяті даних використовується стандартний відкритий інтерфейс Wishbone.

Завдяки тому, що конвеєр команд є трьох­сту­пеневим, більшість команд виконується за один такт, а команди переходу та читання памʼяті – за два такти. Причому при виконанні команд переходу та тривалого доступу до памʼяті даних конвеєр призупиняється.

Виклик підпрограм виконується також за два такти, під час чого адреса повернення та пра­порціумов зберігаються у апаратному стеку. Пе­реривання реалізовані як виклик підпро­гра­ми за адресою, яка є вектором переривання. При­чому контекст задачі, який зберігається у старших регістрах, змінюється автоматично зі входом у переривання та виходом з нього зав­дяки перемиканню банків регістрів. Зарезерво­вано 16 векторів переривань.

Результати реалізації ядра

Ядро мікропроцесора описане мовою VHDL і не має обмежень для синтезута конфігу­руван­ня у ПЛІС будь-якої серії. Модель процесора має вбудований дизасемблер, який спрощує тестування та відлагодження програм. Розроб­лено програму дизасемблера на мові Java, виходом якої є VHDL-файли блоків памʼяті даних та програм процесора.

У таблиці 1 показані результати синтезу про­цесора для різних серій ПЛІС. У останньому ряд­ку приведено для порівняння параметри 16-розрядного триступеневого RISC-процесора, який був розроблений за методикою LISA [3].

Табл. 1. Результати конфігурування процесорів у ПЛІС

Примітки: 1. Процесор безускладнених команд. 2. Процесор RISC-ST [4]. 3. Процесор NanoBlaze[3].

Cлід відмітити, що в ПЛІС Kintex-7та Spartan-6 використовуються шестивходові ЛТ, а в Spartan-3 – чотирьохвходові ЛТ.

За статистикою, у сучасних ПЛІС на один блок памʼяті припадає, в середньому, 300 ЛТ. Отже, процесор має доволі невеликі апаратні ви­трати – стільки, скільки припадає на 2-3 блоки памʼяті. Ці витрати є значно меншими, ніж у аналога та у семеро разів менше, ніж у 32-розрядного MicroBlaze [3]. Наприклад, у порів­няно дешевій ПЛІС Artix-35T вміщується до 45 процесор­них ядер.

Тактова частота, яка є нижчою на 67% від можливої, зобумовлена використан­ням усклад­не­них команд, таких як DJNZ. Але такі коман­ди замінюють собою кілька простіших команд і спрощують програмування.

Висновки

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

Перелік посилань

  1. Сергієнко А.М., Лепеха В.Л. Деякі особливості проектування мікро­контролерів для СНК // Вісник НТУУ «КПІ», сер. Інформатика, управління та обчислювальна техніка. –Т.50. –2009. –с.70-73.

  2. Synopsys Processor Designer. Automating the Design and Implementation of Custom Processors and Programmable Accelerators// Synopsys, Inc. - 2010. – 3p. Available at www.synopsys.com.

  3. Meyer-Baese U. Digital Signal Processing with Field Programmable GateArrays. 4-th Ed. - Springer. - 2014. - 930 p.

  4. Сергиенко А.М. VHDL для проектирования вычислительных уст­ройств. - К.: -"ДиаСофт". - 2003. -210 с.
Jun 13, 2016