Unicore - Википедия - Unicore

Для сеточные вычисления промежуточное ПО, видеть UNICORE.
Unicore
ДизайнерЦентр исследований и разработок микропроцессоров
Биты32-битный
Введено1999
ДизайнRISC
КодированиеФиксированный
РазветвлениеКод состояния
Порядок байтовМаленький
Размер страницы4 КБ
Регистры
Общее назначение31
Плавающая точка32

Unicore это имя компьютера Набор инструкций Архитектура разработана Центром исследований и разработок микропроцессоров (MPRC) Пекинский университет в КНР. Компьютер, построенный на этой архитектуре, называется Единство-863.[1]ЦП интегрирован в полнофункциональную SoC, чтобы создать систему, подобную ПК.[2]

Процессор очень похож на ARM архитектура, но использует другой набор инструкций.[3][нужен лучший источник ]

Поддерживается Ядро Linux начиная с версии 2.6.39.[4]Поддержка будет удалена через Ядро Linux версия 5.9, так как кажется, что никто не поддерживает ее, и код отстает от остального кода ядра и требований компилятора.[5]

Набор инструкций

Инструкции почти идентичны стандартным форматам ARM, за исключением того, что условное выполнение было удалено, а биты переназначены для расширения всех спецификаторов регистров до 5 бит.[6][7] Аналогично, непосредственный формат - это 9 бит, повернутых на 5-битную величину (а не 8 бит, повернутых на 4), размеры смещения загрузки / сохранения составляют 14 бит для байта / слова и 10 бит для байта со знаком или полуслова. Условные перемещения обеспечиваются кодированием условия во (не используемом ARM) поле второго исходного регистра Rn для инструкций MOV и MVN.

Обзор набора команд Unicore32[8]
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Описание
000код операцииSRnRdсдвиг0Ш0RmРабота ALU, Rd = Rn op Rm сдвиг #сдвиг
000код операцииSRnRdРупий0Ш1RmРабота ALU, Rd = Rn op Rm сдвиг Рупий
001код операцииSRnRdсдвигimm9Работа ALU, Rd = Rn op # imm9 ROTL #shift
010пUBWLRnRdсдвиг0Ш0RmЗагрузить / сохранить Rd по адресу Rn ± Rm сдвиг #сдвиг
011пUBWLRnRdсмещение14Загрузить / сохранить Rd по адресу Rn ± смещение14
100пUSWLRnРастровое изображение высокое00ЧАСРастровое изображение низкоеЗагрузить / сохранить несколько регистров
101condLoffset24Переход (и ссылка), если условие истинно
110Инструкции сопроцессора (FPU)
11111111Номер ловушкиПрограммное прерывание
000000АSRnRdРупий1001RmУмножить, Rd = Rm * Rs (+ Rn)
0001000L1111111111000001001RmФилиал и обмен (BX, BLX)
010пU0WLRnRd000001SЧАС1RmЗагрузить / сохранить Rd по адресу Rn ± Rm (16 бит)
010пU1WLRnRdimm_hi1SЧАС1imm_loЗагрузить / сохранить Rd по адресу Rn ± # imm10 (16 бит)

Значение различных битов флага (например, S = 1 позволяет устанавливать коды условий) идентично набору инструкций ARM. Команда загрузки / сохранения нескольких может обращаться только к половине набора регистров, в зависимости от бита H. Если H = 0, 16 битов указывают R0 – R15; если H = 1, R16 – R31.

Рекомендации

  1. ^ «Введение в MPRC». Центр исследований и разработок микропроцессоров, Пекинский университет.
  2. ^ Сюй Чэн; Сяоинь Ван; Цзюньлинь Лу; Цзянфан И; Донг Тонг; Сюэтао Гуань; Фэн Лю; Сяньхуа Лю; Чун Ян; И Фэн (март 2010 г.), «Прогресс в исследованиях процессоров UniCore и SoC PKUnity» (PDF), Журнал компьютерных наук и технологий (JCST), 25 (2): 200–213, получено 2012-07-11
  3. ^ Бергманн, Арнд (2012-07-09). "Re: [PATCH 00/36] AArch64 Linux kernel port". Linux-ядро (Список рассылки). Получено 2012-07-11. Еще один интересный пример - unicore32, который на самом деле имеет больше кода с arch / arm, чем предлагаемый arch / aarch64. Я думаю, что кодовая база unicore32 выиграет, если будет снова объединена с arch / arm в качестве третьего набора инструкций, но дополнительные затраты на обслуживание для всех, кто работает над ARM, делают это нереалистичным.
  4. ^ "Окно слияния закрыто - 2.6.39-rc1 out". Линус Торвальдс.
  5. ^ "удалить поддержку unicore32". Майк Рапопорт.
  6. ^ Сюй-Хунг Чан; Хуан-Цзя Ченг; Юань-Шин Хван (25.02.2012), «Удвоение количества регистров на процессорах ARM» (PDF), 16-й семинар по взаимодействию компиляторов и компьютерных архитектур (INTERACT), стр. 1–8, Дои:10.1109 / INTERACT.2012.6339620, ISBN  1-4673-2613-5
  7. ^ Исходный код симулятора процессора Unicore. Форматы инструкций находятся в decode.c, дизассемблирование - в интерпретаторе, а эмуляция - в instEx.c.
  8. ^ Исходный код эмулятора QEMU Unicore32