Дизайнер | Hewlett-Packard |
---|---|
Биты | Гибридный 64-битный GPR, 20-битная адресная шина, 4-битный тракт данных, 4-битный минимальный размер слова |
Введено | 1984 |
Версия | "Уровень 2" |
Дизайн | ЦИСК |
Тип | Сочетание архитектуры загрузки-хранения с некоторыми исключениями, которые попадают в семейство архитектур регистр-память |
Кодирование | Переменная |
Ветвление | Бит переноса, «липкий» бит и другие регистры флагов |
Порядковый номер байтов | Little-endian |
Размер страницы | Нет MMU или пейджинга |
Расширения | Только расширения для эмулируемых «виртуальных» процессоров на базе ARM |
Открыть | Запатентованный |
Предшественник | Орех |
Регистры | |
Девять 64-битных GPR и «скретч» регистров, два 20-битных регистра «указателя данных» и другие различные регистры | |
Универсальный | Четыре 64-битных георадара |
С плавающей точкой | Нет регистров FPU |
Вектор | Нет векторных регистров |
Семейство 4-битных ( datapath ) микропроцессоров Saturn было разработано Hewlett-Packard в 1980-х годах сначала для карманного компьютера HP-71B , выпущенного в 1984 году, а затем для различных калькуляторов HP (начиная с HP-18C ). Оно пришло на смену семейству процессоров Nut , использовавшихся в более ранних калькуляторах. HP48SX и HP48S были последними моделями, в которых использовались процессоры Saturn производства HP, более поздние модели использовали процессоры производства NEC . Серия HP 49 изначально использовала ЦП Saturn, пока фабрика NEC [nb 1] больше не могла производить процессор по техническим причинам в 2003 году. Начиная с модели HP 49g+ в 2003 году, калькуляторы перешли на процессор Samsung S3C2410 с ядром ARM920T (часть архитектуры ARMv4T ), который запускал программный эмулятор оборудования Saturn. В 2000 году HP 39G и HP 40G были последними калькуляторами, представленными на основе фактического оборудования Saturn, изготовленного NEC. Последними калькуляторами, представленными для использования эмулятора Saturn, были HP 39gs , HP 40gs и HP 50g в 2006 году, а также ревизия hp 48gII 2007 года . HP 50g был последним калькулятором, проданным HP с использованием этого эмулятора, когда он был снят с производства в 2015 году из-за того, что Samsung прекратила производство процессора ARM, на котором он был основан. [1] [2] [3]
Аппаратное обеспечение Saturn представляет собой полубайтовый последовательный дизайн [4] в отличие от его предшественника Nut , который был бит-последовательным . [5] Внутри процессор Saturn имеет четыре 4-битовые шины данных, которые обеспечивают производительность почти 1 цикла на полубайт, при этом одна или две шины действуют как источник, а одна или две — как получатель. [4] Наименьшее адресуемое слово — это 4-битовый полубайт, который может содержать одну двоично-десятичную (BCD) цифру. Любая единица данных в регистрах, превышающая полубайт, до 64 бит, может обрабатываться как единое целое, однако процессор Saturn выполняет операцию последовательно на основе полубайт за полубайтом внутри. [4]
Архитектура Saturn имеет внутреннюю ширину регистра 64 бита и 20 бит адреса, при этом память адресуется с 4-битной (полубайтной) гранулярностью. Инструкции Saturn ALU поддерживают переменную ширину данных, работая с одним-16 полубайтами слова. Первоначальные чипы ЦП Saturn обеспечивали четырехбитную внешнюю шину данных, но более поздние SoC на базе Saturn включали преобразование шины на чипе в 8-битную внешнюю шину данных и 19-битную внешнюю адресную шину.
Архитектура Saturn имеет четыре 64-битных GPR (регистра общего назначения), названных A, B, C и D. Кроме того, есть также пять 64-битных «скретч»-регистров, названных R0, R1, R2, R3 и R4. Они могут только хранить данные. Если для данных в скретч-регистре требуется операция ALU, то соответствующий регистр должен быть сначала передан в GPR. Другие регистры включают 1-ниббловый «указательный» регистр с именем P, обычно используемый для выбора ниббла в GPR или диапазона нибблов (или для выравнивания непосредственных данных по определенному нибблу в GPR с циклическим переходом). Для доступа к памяти есть два 20-битных регистра указателя данных с именами D0 и D1. Архитектура Saturn также имеет регистр счетчика ПК или программы , который может взаимодействовать с GPR. Также имеется 8-уровневый, кольцевой, LIFO 20-битный аппаратный стек возврата, называемый RSTK, используемый при выдаче инструкции вызова подпрограммы. Кроме того, процессор Saturn оснащен 16-битным программным регистром состояния, называемым ST, и 1-ниббловым аппаратным регистром состояния, называемым HS, который, в частности, содержит флаг SB или «липкий бит», указывающий, была ли двоичная 1 сдвинута вправо от GPR. Кроме того, архитектура Saturn имеет 12-битный регистр OUT и 16-битный регистр IN, которые в системах на кристалле Yorke и Clarke используются для захвата ввода с клавиатуры, а также для управления звуковым сигналом. Также имеется 1-битный регистр флага переноса.
В дополнение к вышесказанному, процессор Saturn имеет простую, неприоритетную систему прерываний. Когда происходит прерывание, процессор завершает выполнение текущей инструкции, сохраняет счетчик программ в стеке аппаратного возврата (RSTK) и переходит на адрес 0x0000Fh, где предыдущее значение находится в полубайтах. [4] Процессор также напрямую взаимодействует с логикой сканирования клавиатуры.
На следующей схеме изображены регистры (каждый белый квадрат представляет собой 4 бита / полубайт, за исключением флага переноса, который представляет собой 1 бит):
Формат и поля регистра Saturn 64-битного GPR:
Биты | 63–60 | 59–56 | 55–52 | 51–48 | 47–44 | 43–40 | 39–36 | 35–32 | 31–28 | 27–24 | 23–20 | 19–16 | 15–12 | 11–8 | 7–4 | 3–0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Клев | Ф | Э | Д | С | Б | А | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Поля | XS | Б | |||||||||||||||
А | |||||||||||||||||
С | М | Х | |||||||||||||||
Вт | |||||||||||||||||
Р=0 | П | ||||||||||||||||
Р=7 | ВП |
Данные в регистрах общего назначения могут быть доступны через поля, которые попадают на границы полубайтов, тогда как скретч-регистры допускают только операции загрузки и сохранения. Поля, как показано на схеме выше, это W (целые 64-битные GPR), A (адрес, первые 5 полубайтов GPR), S (знак мантиссы, старший полубайт GPR), XS (знак экспоненты, полубайт 2 GPR), M (мантисса, полубайты 3–14 GPR), X (экспонента, первые 3 полубайта GPR) и B (первый байт GPR). Кроме того, есть поле P, которое выбирает полубайт из GPR на основе 4-битного значения регистра P. Также есть поле WP, которое выбирает полубайты 0 через полубайт, выбранный в регистре P. 64 бита (16 полубайтов) могут хранить числа с плавающей точкой в формате BCD, закодированные в формате BCD, состоящие из полубайта со знаком (который равен «9», если число отрицательное), 12 цифр мантиссы и 3-значного порядка дополнения до 10, хранящегося в формате BCD (±499). [6] Внутреннее представление значений с плавающей точкой в формате BCD представляет собой 15-значную мантиссу с одним полубайтом со знаком в одном регистре, объединенную с 20-битным порядком в формате дополнения до 10 в другом регистре. Использование BCD вместо прямого двоичного представления выгодно для калькуляторов, поскольку позволяет избежать проблем округления , которые возникают при преобразовании двоичного числа в десятичное .
Адреса инструкций и данных процессора Saturn также основаны на полубайтах. Три регистра указателя (включая счетчик программ) и регистры адреса имеют ширину 20 бит. Благодаря этому архитектура Saturn может адресовать 1 М полубайтов или, что эквивалентно, 512 Кбайт . За пределами этого размера (например, в 48GX) используется переключение банков .
Оригинальный карманный компьютер HP-71B и HP-28C имели процессор Saturn в виде отдельного чипа. В сериях HP 48S/SX, 48G/GX и HP-28S, HP-27S, HP-42S, HP-32SII и HP-20S ядро ЦП Saturn интегрировано как часть более сложной интегральной схемы (ИС) SoC .
Ниже представлена целочисленная реализация алгоритма вычисления квадратного корня в десятичной системе счисления BCD в синтаксисе ассемблера Saturn Jazz / HP Tools:
** Далее предполагается, что AW содержит аргумент (< 1E14).** Результат (IP(SQRT(AW))) представлен в CW: SETDEС АСЛ W С=АВ А=А+АВ А=А+АВ А=А+CW АСР В С=0 Вт Р= 13 ЛК(1) 5 - КСО WP С=С-1 П -- С=С+1 П А=АС Вт ГОНК -- А=А+CW КСО W П=П-1 П=П-1 ГОНК - СЕТЕКС А=ХВ
Оригинальный процессор Saturn дал название всей архитектуре набора инструкций . Более поздние чипы имели собственные кодовые названия:
уровень ISA | Кодовое имя процессора | Используется в моделях калькуляторов | Характеристики |
---|---|---|---|
0 [7] [8] | Сатурн (1LF2) | HP-44A , HP-71B (1984) | |
1 [7] [8] | Сатурн (1LK7) | HP-18C (1986), HP-28C (1987), HP-71B | 640 кГц, дополнительные инструкции |
2 [7] [8] | Берт [9] (1LU7) [9] | ХП-10Б (1988 г.), ХП-20С (1988 г.), ХП-21С | 640 кГц, 10 КБ ПЗУ, 256 байт ОЗУ, драйвер ЖК-дисплея |
2 [7] [8] | Сакагавея [9] (1LR3) | HP-14B, HP-22S , HP-32S (1988), HP-32S+ , HP-32SII (1991) | 640 кГц, 16 КБ ПЗУ, 512 байт ОЗУ, драйвер ЖК-дисплея |
2 [7] [8] | Льюис [9] (1LR2) | HP-17B (1988 г.), HP 17BII (1990 г. ), HP -19B (1988 г.), HP 19BII (1990 г.), HP-27S (1988 г.), HP-28S (1988 г.), HP-42S (1988 г.) | 1 МГц, 64 КБ ПЗУ, драйвер ЖК-дисплея, контроллер памяти, ИК- управление, 3 В КМОП |
2 [7] [8] | Кларк [9] (1LT8) [9] | HP 48SX (1990), HP 48S (1991) | 2 МГц, контроллер ЖК-дисплея, контроллер памяти, управление по UART и ИК, дополнительные инструкции |
2 [7] [8] | Йорк [9] 00048-80063 [10] | HP 38G (1995), HP 38G+ (1998), HP 39G (2000) , HP 40G (2000), HP 48GX (1993), HP 48G (1993), [nb 1] HP 48G+ (1998), HP 49G (1999) | 3,68–4 МГц, контроллер ЖК-дисплея, контроллер памяти, управление UART и ИК, производитель NEC , дополнительные инструкции, иногда также известна как платформа Saturn 5 |
? | Нью-Йорк | Прототип HP 48GX | 8 МГц, контроллер ЖК-дисплея, контроллер памяти, UART и ИК-управление. Это было сделано только как внутренний прототип HP и никогда не выпускалось в свободном виде. [11] [12] |
2 [7] [8] [прим. 2] | Серия Apple ( Большое яблоко , [9] Среднее яблоко , [9] Маленькое яблоко ) | hp 39g+ (2003 г.), HP 39gs (2006 г.), HP 40gs (2006 г.), hp 49g+ (2003 г.), hp 48gII (2003/2007 г.), HP 50g (2006 г.) | Виртуальная версия процессора Yorke, эмулируемая членами семейства процессоров Samsung S3C2410 48/75 МГц с ядром ARM920T (архитектуры ARMv4T ), также известного как Saturn+ с дополнительными виртуальными инструкциями |
Кодовые названия ЦП вдохновлены участниками экспедиции Льюиса и Кларка 1804–1806 годов, первой сухопутной экспедиции США к побережью Тихого океана и обратно. Кодовые названия виртуальных ЦП/эмуляторов были вдохновлены прототипом «New-Yorke» на базе Saturn 8 МГц SoC, который так и не был запущен в производство. [12] По словам одного из членов ACO (Australian Calculator Operation), «Big Apple» произошло от кодового названия «New-Yorke» прототипа 8 МГц Saturn-based SoC в отсылке к Нью-Йорку, отсюда и названия «Big apple», «Mid apple» и «Little apple». [12]
Если показатель степени отрицательный, показатель степени кодируется как "1000 - ABS(показатель степени)"
[1]