SuperH (или SH ) — это 32-битная архитектура набора инструкций (ISA) с сокращенным набором команд (RISC ), разработанная Hitachi и в настоящее время производимая Renesas . Она реализуется микроконтроллерами и микропроцессорами для встраиваемых систем .
На момент появления SuperH отличался наличием 16-битных инструкций фиксированной длины, несмотря на свою 32-битную архитектуру. Использование меньших инструкций имело последствия: регистровый файл был меньше, а инструкции, как правило, имели двухоперандный формат. Однако для рынка, на который был нацелен SuperH, это была небольшая цена за улучшенную память и эффективность кэша процессора .
Более поздние версии дизайна, начиная с SH-5, включали как 16-, так и 32-битные инструкции, причем 16-битные версии отображались на 32-битную версию внутри ЦП. Это позволяло машинному коду продолжать использовать более короткие инструкции для экономии памяти, не требуя при этом объема логики декодирования инструкций, необходимой, если бы они были полностью отдельными инструкциями. Эта концепция теперь известна как сжатый набор инструкций и также используется другими компаниями, наиболее ярким примером является ARM с ее набором инструкций Thumb .
В 2015 году срок действия многих первоначальных патентов на архитектуру SuperH истек, и процессор SH-2 был повторно реализован как аппаратное обеспечение с открытым исходным кодом под названием J2.
Семейство ядер процессоров SuperH было впервые разработано Hitachi в начале 1990-х годов. Концепция дизайна заключалась в едином наборе инструкций (ISA), который был бы совместим снизу вверх по ряду ядер ЦП .
В прошлом, такого рода проблемы проектирования решались с помощью микрокода , при этом младшие модели в серии выполняли нереализованные инструкции как ряд более базовых инструкций. Например, «длинное умножение» (умножение двух 32-битных регистров для получения 64-битного продукта) может быть реализовано аппаратно на старших моделях, но вместо этого выполняться как ряд сложений на младших моделях.
Одним из ключевых осознаний в ходе разработки концепции RISC было то, что микрокод имел конечное время декодирования, и по мере того, как процессоры становились быстрее, это представляло собой неприемлемую потерю производительности. Чтобы решить эту проблему, Hitachi вместо этого разработала единую ISA для всей линейки, с неподдерживаемыми инструкциями, вызывающими ловушки в тех реализациях, которые не включали аппаратную поддержку. Например, начальные модели в линейке, SH-1 и SH-2, отличались только поддержкой 64-битного умножения; SH-2 поддерживала MUL
, DMULS
и DMULU
, тогда как SH-1 вызывала ловушку, если они встречались. [3]
SH-1 была базовой моделью, поддерживая в общей сложности 56 инструкций. SH-2 добавила 64-битное умножение и несколько дополнительных команд для ветвления и других задач, доведя общее количество поддерживаемых инструкций до 62. [3] SH-1 и SH-2 использовались в Sega Saturn , Sega 32X и Capcom CPS-3 . [4]
ISA использует 16-битные инструкции для лучшей плотности кода, чем 32-битные инструкции, что было важно в то время из-за высокой стоимости основной памяти и стоимости реализации кэша. По состоянию на 2023 год плотность кода по-прежнему важна для небольших встраиваемых систем и многоядерных процессоров. Недостатками этого подхода было то, что для кодирования номера регистра или постоянного значения было доступно меньше бит. В оригинальной SuperH ISA было всего 16 общих регистров, требующих четыре бита для источника и еще четыре для назначения; однако некоторые инструкции имеют подразумеваемые R0, R15 или системный регистр в качестве дополнительного операнда. Код операции инструкции имеет длину четыре, восемь, двенадцать или шестнадцать бит, а оставшиеся четырехбитные поля используются для регистра или непосредственных операндов различными способами: существует двенадцать классов инструкций, что в общей сложности составляет 142 инструкции в SH-2. [5]
Отложенные переходы введены как для SH-1, так и для SH-2. Инструкции безусловного перехода имеют один слот задержки . [6]
Несколько лет спустя ядро SH-3 было добавлено в семейство; новые функции включали другую концепцию прерываний , блок управления памятью (MMU) и измененную концепцию кэша. Эти функции требовали расширенного набора инструкций, добавляя шесть новых инструкций, в общей сложности 68. [3] SH-3 был bi-endian , работая либо в big-endian, либо в little-endian порядке байтов.
Ядро SH-3 также добавило расширение DSP , тогда называемое SH-3-DSP. С расширенными путями данных для эффективной обработки DSP, специальными аккумуляторами и выделенным движком DSP типа MAC , это ядро объединило мир DSP и процессоров RISC. Производная DSP также использовалась с оригинальным ядром SH-2.
В период с 1994 по 1996 год по всему миру было продано 35,1 миллиона устройств SuperH. [7]
В 1997 году Hitachi и STMicroelectronics (STM) начали сотрудничать в разработке SH-4 для Dreamcast . SH-4 отличался суперскалярным (двусторонним) выполнением инструкций и векторным блоком с плавающей точкой (особенно подходящим для 3D-графики ). Стандартные чипы на основе SH-4 были представлены около 1998 года. [8]
В начале 2001 года Hitachi и STM сформировали IP-компанию SuperH, Inc., которая собиралась лицензировать ядро SH-4 другим компаниям и разрабатывала архитектуру SH-5, первый шаг SuperH в 64-битную область. Более ранние версии SH-1 по 3 оставались собственностью Hitachi. [8] [9]
В 2003 году Hitachi и Mitsubishi Electric создали совместное предприятие Renesas Technology , в котором Hitachi контролировала 55%. В 2004 году Renesas Technology выкупила долю STMicroelectronics в SuperH Inc., а вместе с ней и лицензию на ядра SH. [10] Позднее Renesas Technology стала Renesas Electronics после слияния с NEC Electronics .
Конструкция SH-5 поддерживала два режима работы: режим SHcompact, который эквивалентен инструкциям пользовательского режима набора инструкций SH-4; и режим SHmedia, который сильно отличается тем, что использует 32-битные инструкции с шестьюдесятью четырьмя 64-битными целочисленными регистрами и инструкциями SIMD . В режиме SHmedia назначение перехода ( перехода) загружается в регистр перехода отдельно от фактической инструкции перехода. Это позволяет процессору предварительно выбирать инструкции для перехода без необходимости отслеживать поток инструкций. Сочетание компактной 16-битной кодировки инструкций с более мощной 32-битной кодировкой инструкций не является уникальным для SH-5; процессоры ARM имеют 16-битный режим Thumb (ARM лицензировала несколько патентов от SuperH для Thumb [11] ), а процессоры MIPS имеют режим MIPS-16. Однако SH-5 отличается тем, что его режим обратной совместимости — это 16-битная кодировка, а не 32-битная кодировка.
Последний эволюционный шаг произошел около 2003 года, когда ядра от SH-2 до SH-4 были объединены в суперскалярное ядро SH-X, которое образовало своего рода надмножество наборов инструкций предыдущих архитектур и добавило поддержку симметричной многопроцессорной обработки .
С 2010 года ядра, архитектура и продукты ЦП SuperH принадлежат Renesas Electronics , а архитектура консолидирована вокруг платформ SH-2, SH-2A, SH-3, SH-4 и SH-4A. Продукты систем на кристалле на основе микропроцессоров SH-3, SH-4 и SH-4A впоследствии были заменены более новыми поколениями на основе лицензированных ядер ЦП от Arm Ltd. , при этом многие из существующих моделей все еще продаются и продаются до марта 2025 года через программу Renesas Product Longevity Program. [12]
Начиная с 2021 года компания Renesas продолжает продавать микроконтроллеры SH72xx на базе SH-2A с гарантированной доступностью до февраля 2029 года, наряду с новыми продуктами на базе нескольких других архитектур, включая Arm , RX и RH850 .
Последний из патентов SH-2 истек в 2014 году. На LinuxCon Japan 2015 разработчики j-core представили чистую переработку SH-2 ISA с расширениями (известную как «J2 core» из-за неистекших товарных знаков ). [11] [13] Впоследствии пошаговое руководство по проектированию было представлено на ELC 2016. [14]
Код VHDL с открытым исходным кодом , лицензированный BSD, для ядра J2 был проверен на ПЛИС Xilinx и на микросхемах ASIC, изготовленных по 180-нм техпроцессу TSMC , и способен загружать μClinux . [11] J2 обратно совместим с ISA SH-2, реализован как 5-ступенчатый конвейер с отдельными интерфейсами памяти инструкций и данных, а также сгенерированный машиной декодер инструкций, поддерживающий плотно упакованный и сложный (по сравнению с другими машинами RISC) ISA. Дополнительные инструкции легко добавлять. J2 реализует инструкции для динамического сдвига (используя шаблоны инструкций SH-3 и более поздние), расширенные атомарные операции (используемые для примитивов потоковой обработки) и блокировку/интерфейсы для поддержки симметричной многопроцессорной обработки. Планируется реализовать наборы инструкций SH-2A (как «J2+») и SH-4 (как «J4»), поскольку соответствующие патенты истекают в 2016–2017 годах. [11] [ требуется обновление ]
Несколько особенностей SuperH были названы в качестве мотиваций для проектирования новых ядер на основе этой архитектуры: [11]
Семейство ядер ЦП SuperH включает в себя:
SH-2 представляет собой 32-разрядную RISC-архитектуру с 16-разрядной фиксированной длиной инструкций для высокой плотности кода, оснащенную аппаратным блоком умножения-накопления (MAC) для алгоритмов цифровой обработки сигналов и пятиступенчатым конвейером.
SH-2 имеет кэш на всех устройствах без ПЗУ .
Он предоставляет 16 регистров общего назначения, векторный регистр, глобальный регистр и процедурный регистр.
Сегодня семейство SH-2 простирается от 32 КБ встроенной флэш-памяти до устройств без ПЗУ. Оно используется в различных устройствах с различными периферийными устройствами, такими как CAN, Ethernet, блок таймера управления двигателем, быстрый АЦП и другие.
SH-2A — это обновление ядра SH-2, в которое добавлены некоторые 32-битные инструкции. Он был анонсирован в начале 2006 года.
Новые функции ядра SH-2A включают в себя:
Семейство SH-2A сегодня охватывает широкий диапазон памяти от 16 КБ и включает в себя множество вариаций без ПЗУ. Устройства оснащены стандартными периферийными устройствами, такими как CAN , Ethernet , USB и т. д., а также более специализированными периферийными устройствами, такими как таймеры управления двигателем , контроллеры TFT и периферийные устройства, предназначенные для автомобильных силовых агрегатов.
SH-4 — это RISC-процессор, разработанный в первую очередь для использования в мультимедийных приложениях, таких как игровые системы Sega Dreamcast и NAOMI . Он включает в себя гораздо более мощный блок с плавающей точкой [примечание] и дополнительные встроенные функции, а также стандартную 32-битную целочисленную обработку и 16-битный размер инструкций.
Характеристики SH-4 включают в себя:
^ В кастомной модели SH-4, созданной для Casio, SH7305, FPU отсутствует.
SH-5 — это 64-битный RISC-процессор. [17]
Почти не было выпущено несимулированного оборудования SH-5 [18] и, в отличие от все еще работающего SH-4, поддержка SH-5 была прекращена в GCC [19] и Linux.
Hitachi создала семейство процессоров SH и разработала его первые четыре основные итерации, но сотрудничала с ST с 1997 г., когда компании договорились о совместном использовании общей дорожной карты высокопроизводительных микропроцессоров. Они совместно разработали 32-битное ядро процессора SH4 RISC и начали разработку архитектуры SH5, которая теперь будет завершена SuperH. Первоначальным продуктом SuperH станет ядро SH4. Более ранние версии SH не будут частью соглашения о выделении.