Ядро RISC-процесора для реалізації у ПЛІС

⇓Завантажити PDF

Праці 1 міжнародної конференції InfoCom’2015, 24 − 25 листопада 2015 р. − К.:НТУУ “КПІ”, ВПІ “Політехніка”. – 2015. − С. 54-55.

СЕРГІЄНКО П.А.,
СЕРГІЄНКО А.М.,
СІМОНЕНКО А.В.

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

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

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

Вступ

Програмовані логічні інтегральні схеми (ПЛІС) дають змогу реалізувати процесори зі спеціалізованою системою команд, завдяки чому мінімізуються апаратні витрати, енергоспоживання, а також оптимізується продуктивність процесора при виконанні певної множини задач. У [1] показана ефективність реалізації 8-розрядного мікропроцесора у ПЛІС, у якого мінімізована система команд. Тепер розробка процесорних ядер зі спеціалізованою системою команд (application specific instruction set processor – 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. Результати конфігурування процесорів у ПЛІС

ПЛІС Xilinx Апаратні витрати, ЛТ Тактова частота, МГц Прим.
Kintex-7 780 237 1
Kintex-7 849 142
Spartan-6 721 87
Spartan-3 1265 48
Spartan-3 722 70 2
Spartan-3 3602 74 3

Примітки: 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 Gate Arrays. 4-th Ed. − Springer. − 2014. − 930 p.

4. Сергиенко А.М. VHDL для проектирования вычислительных устройств. −К.: −”ДиаСофт”. −2003. −210 с.

⇓Завантажити PDF