WikiDer > 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.
Описание | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | код операции | S | Rn | Rd | сдвиг | 0 | Ш | 0 | Rm | Работа ALU, Rd = Rn op Rm сдвиг #сдвиг | ||||||||||||||||||||
0 | 0 | 0 | код операции | S | Rn | Rd | Рупий | 0 | Ш | 1 | Rm | Работа ALU, Rd = Rn op Rm сдвиг Рупий | ||||||||||||||||||||
0 | 0 | 1 | код операции | S | Rn | Rd | сдвиг | imm9 | Работа ALU, Rd = Rn op # imm9 ROTL #shift | |||||||||||||||||||||||
0 | 1 | 0 | п | U | B | W | L | Rn | Rd | сдвиг | 0 | Ш | 0 | Rm | Загрузить / сохранить Rd по адресу Rn ± Rm сдвиг #сдвиг | |||||||||||||||||
0 | 1 | 1 | п | U | B | W | L | Rn | Rd | смещение14 | Загрузить / сохранить Rd по адресу Rn ± смещение14 | |||||||||||||||||||||
1 | 0 | 0 | п | U | S | W | L | Rn | Растровое изображение высокое | 0 | 0 | ЧАС | Растровое изображение низкое | Загрузить / сохранить несколько регистров | ||||||||||||||||||
1 | 0 | 1 | cond | L | offset24 | Переход (и ссылка), если условие истинно | ||||||||||||||||||||||||||
1 | 1 | 0 | Инструкции сопроцессора (FPU) | |||||||||||||||||||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | Номер ловушки | Программное прерывание | |||||||||||||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | А | S | Rn | Rd | Рупий | 1 | 0 | 0 | 1 | Rm | Умножить, Rd = Rm * Rs (+ Rn) | ||||||||||||||||
0 | 0 | 0 | 1 | 0 | 0 | 0 | L | 11111 | 11111 | 00000 | 1 | 0 | 0 | 1 | Rm | Филиал и обмен (BX, BLX) | ||||||||||||||||
0 | 1 | 0 | п | U | 0 | W | L | Rn | Rd | 00000 | 1 | S | ЧАС | 1 | Rm | Загрузить / сохранить Rd по адресу Rn ± Rm (16 бит) | ||||||||||||||||
0 | 1 | 0 | п | U | 1 | W | L | Rn | Rd | imm_hi | 1 | S | ЧАС | 1 | imm_lo | Загрузить / сохранить Rd по адресу Rn ± # imm10 (16 бит) |
Значение различных битов флага (например, S = 1 позволяет устанавливать коды условий) идентично набору инструкций ARM. Команда загрузки / сохранения нескольких может обращаться только к половине набора регистров, в зависимости от бита H. Если H = 0, 16 битов указывают R0 – R15; если H = 1, R16 – R31.
Рекомендации
- ^ «Введение в MPRC». Центр исследований и разработок микропроцессоров, Пекинский университет.
- ^ Сюй Чэн; Сяоинь Ван; Цзюньлинь Лу; Цзянфан И; Донг Тонг; Сюэтао Гуань; Фэн Лю; Сяньхуа Лю; Чун Ян; И Фэн (март 2010 г.), «Прогресс в исследованиях процессоров UniCore и SoC PKUnity» (PDF), Журнал компьютерных наук и технологий (JCST), 25 (2): 200–213, получено 2012-07-11
- ^ Бергманн, Арнд (2012-07-09). "Re: [PATCH 00/36] AArch64 Linux kernel port". Linux-ядро (Список рассылки). Получено 2012-07-11.
Еще один интересный пример - unicore32, который на самом деле имеет больше кода с arch / arm, чем предлагаемый arch / aarch64. Я думаю, что кодовая база unicore32 выиграет, если будет снова объединена с arch / arm в качестве третьего набора инструкций, но дополнительные затраты на обслуживание для всех, кто работает над ARM, делают это нереалистичным.
- ^ "Окно слияния закрыто - 2.6.39-rc1 out". Линус Торвальдс.
- ^ "удалить поддержку unicore32". Майк Рапопорт.
- ^ Сюй-Хунг Чан; Хуан-Цзя Ченг; Юань-Шин Хван (25.02.2012), «Удвоение количества регистров на процессорах ARM» (PDF), 16-й семинар по взаимодействию компиляторов и компьютерных архитектур (INTERACT), стр. 1–8, Дои:10.1109 / INTERACT.2012.6339620, ISBN 1-4673-2613-5
- ^ Исходный код симулятора процессора Unicore. Форматы инструкций находятся в decode.c, дизассемблирование - в интерпретаторе, а эмуляция - в instEx.c.
- ^ Исходный код эмулятора QEMU Unicore32
Этот компьютерная инженерия-связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |