БЕЛЛМАК-8
Общая информация | |
---|---|
Запущен | 1977 год |
Общий производитель | |
Производительность | |
Макс. процессора Тактовая частота | от 2 МГц до 2 МГц |
Ширина данных | 8 бит |
Ширина адреса | 16 бит |
Архитектура и классификация | |
Набор инструкций | МАК-8 |
Физические характеристики | |
Транзисторы |
|
Упаковка |
|
История | |
Преемник | БЕЛЛМАК-80 |
MAC -8 , более известный сегодня как BELLMAC-8 , представляет собой 8-битный микропроцессор , разработанный Bell Labs . Производство КМОП- матриц началось в Western Electric под названием WE212 в 1977 году. MAC-8 использовался только в продуктах AT&T, таких как 4ESS . Никаких коммерческих спецификаций не публиковалось, поэтому о нем мало что известно. Наиболее известным среди публики является MAC-TUTOR компьютерный тренажер , выпущенный в 1979 году.
MAC-8 был разработан для работы с языками программирования высокого уровня , в частности, собственным языком программирования C компании Bell . Необычной особенностью системы является то, что ее язык ассемблера был намеренно написан так, чтобы напоминать код C, включая поддержку переменных и конструкций высокого уровня, таких как циклы for . Напротив, большинство ассемблеров той эпохи гораздо более напрямую отображали низкоуровневые коды операций процессора и не имели функций более высокого уровня.
За MAC-8 последовала BELLMAC-80 , 32-битная система, сильно отличавшаяся от MAC-8 внутренне, но сохранявшая концепцию разработки для запуска C. За этим последовал экспериментальный дизайн CRISP и, наконец, 1992 год — AT&T Hobbit , который имел ограниченное коммерческое использование.
Описание
[ редактировать ]Концепции дизайна
[ редактировать ]MAC-8 — первая разработка, созданная в рамках продолжающегося проекта AT&T C Machine Project, который начался в 1975 году. Целью проекта было создание процессоров, которые могли бы напрямую работать с языками высокого уровня , в частности с собственным языком программирования C компании Bell . [1] [2]
Чтобы обеспечить приемлемую производительность в программах, в которых преобладает множество вызовов функций , важно иметь большое количество регистров процессора . Это небольшие объемы высокоскоростной памяти, к которым можно получить доступ без потери времени, в отличие от основной памяти , которая обычно требует некоторой задержки. Использование регистров позволяет очень быстро передавать данные в функции и из них. Регистры очень дороги с точки зрения количества необходимых им транзисторов и их соединений с остальной частью микросхемы. Учитывая цели Bell и доступные технологии, количество встроенных регистров было бы слишком мало для их нужд. [3] [2]
Вместо этого концепция C-машины помещает свои регистры в основную память. [2] Это не было редкостью в области миникомпьютеров в конце 1960-х годов, где основная память была относительно быстрой по сравнению с центральным процессором (ЦП), а это означало, что при доступе к данным была задержка всего в один цикл. Ценность наличия большого количества регистров компенсирует любые недостатки по сравнению с более медленным доступом. Те микропроцессоры, которые были разработаны для работы как старые миникомпьютеры, такие как Texas Instruments TMS9900 , часто использовали эту концепцию. MAC-8 также следовал этой схеме, используя блоки из шестнадцати ячеек памяти для представления регистров и выбирая начало блока в памяти с помощью указателя регистра или RP. Это означало, что компилятор мог передавать данные в функцию, записывая значения в память, перемещая RP так, чтобы они указывали на них, а затем переходя к функции. Когда функция завершилась, компилятор изменил RP на предыдущее значение, чтобы вернуть машину в предыдущее состояние. [4] Эта концепция известна как окно регистрации . В конструкциях с фиксированным количеством аппаратных регистров, таких как MOS 6502 , такого рода вызовы функций обычно требуют записи данных в регистрах в основную память или стек вызовов , и то, и другое требует нескольких циклов доступа к памяти. [5]
Система также включала четыре общедоступных аппаратных регистра. Это были 16-битный счетчик программ (PC), указатель стека (SP), указатель регистра (RP) и регистр условий (CR), последний более широко известен как регистр состояния на других платформах. Он также включал два внутренних 8-битных регистра, используемых только во время обработки текущей инструкции: регистр команд (IR), в котором хранился код операции последнего считывания инструкции , и регистр D/S, в котором хранились номера регистров назначения и источника, 0. до 15 за два укуса . Кроме того, во время обработки фиксировалось одно 16-битное значение адреса и его 8-битные данные. [4]
Система включала отдельный упрощенный математический блок, предназначенный для трансляции адресов, - блок арифметики адресов (AAU). Он может читать или записывать адрес на шине во внутренние регистры или из них, а также выполнять смещения и индексацию независимо от основного арифметико-логического устройства (АЛУ). Одной из причин выгрузки регистров в память было освобождение места для AAU. Это позволило ему предложить широкий выбор режимов адресации , не используя при этом ALU и, таким образом, страдая от задержек цикла для более сложных режимов. [6] Поскольку адреса были 16-битными и для хранения часто использовались регистры, инструкции по адресации всегда считывали и записывали регистры парами. В этих случаях их называли «базовым» регистром или «регистрами b», а инструкции, использующие только одно 8-битное значение, были известны как «регистры a». Поскольку регистры всегда были 16-битными в памяти, регистры использовали только младший байт пары. [7] Несколько сбивает с толку то, что при упоминании в документации регистры a обозначались R, а регистры b — B. [8]
Набор инструкций
[ редактировать ]MAC-8 Архитектура набора команд (ISA) была разделена на три широкие группы: арифметические и логические, передача управления (ветвление) и специальные. [6]
Арифметические и логические инструкции принимали один или два операнда , каждый из которых указывал на регистр, ячейку памяти или содержал непосредственное значение (константу). Инструкция содержалась в одном байте, причем старшие пять битов содержали код операции , а нижние три - режим адресации, указывая, где хранились операнды (если таковые имеются). Например, инструкция сложения может указать, что она хочет добавить значения в Rs (источник) к Rd (назначение), установив режим в 0 (регистр-регистр). Если бы значения находились в R1 и R2, то байт D/S был бы установлен в 00010010. [9] Альтернативно, то же самое добавление может использовать режим 6, который будет добавлять значение в исходном регистре b к значению в ячейке памяти, смещенной на значение в другом регистре (косвенная адресация). В этом случае регистр D/S содержит 16-битный регистр источника Bs, а регистр назначения содержит регистр назначения Rd. [6] [8]
Основной набор из восьми режимов включал регистрацию/регистрацию, регистрацию по базовому адресу или обратно в памяти (косвенный), регистрацию по базовому адресу или обратно плюс смещение (индексированное) и автоматическое приращение, которое добавляло единицу к значению выбранного B. зарегистрироваться, а затем получить доступ к данным в этом месте. Этот последний режим был полезен для реализации циклов по памяти путем помещения базового адреса в память, а затем многократного вызова кода операции с тем же номером регистра, заставляя его увеличиваться без явной инструкции. Если какой-либо полубайт был установлен на значение 15, значение восьми режимов менялось. В этом случае источником был уже не один из 16 регистров, а либо счетчик программ, либо счетчик стека в зависимости от режима, тогда как пункт назначения в основном ссылался на R15, но адреса брались из SP. Эти более поздние режимы в основном использовались с условными ветвями, позволяя команде, например, перейти на n мест вперед от текущего ПК на основе значения в источнике. [8] Отдельные инструкции PUSH и POP, а также BUMP и DEBUMP увеличивают и уменьшают указатель стека или указатель регистра соответственно. [6]
Функции передачи управления аналогичны логическим инструкциям, но в них отсутствуют дополнительные коды операций, и им требуется только одно значение регистра для выполнения таких операций, как смещения, поскольку базовым адресом обычно является программный счетчик. Безусловные переходы, вызовы подпрограмм и возвраты требуют только одного пункта назначения или вообще не требуют его. В случае условных ветвей необходимо использовать только один регистр, поскольку обратно ничего не записывается, поэтому вместо этого использовался младший полубайт байта D/S, чтобы указать, какое из 16 различных условий следует проверить, например, нужно ли проверять значение в указанном месте равно нулю. Условия включали типичные условия отрицательного значения, нуля, переноса и переполнения, а также включали, среди прочего, является ли значение всеми единицами (255), нечетными или четными, разрешены ли прерывания. [10]
Программирование
[ редактировать ]MAC-8 был разработан для программирования на языке C, и Bell предлагала поддержку кросс-компиляции и симулятор M8SIM, работающий под Unix на PDP-11 . [11] Система PLAID, работающая на PDP-11, обеспечивала поддержку отладчика систем MAC-8 с использованием кабельного соединения. Для тех приложений, которые требовали прямого программирования на языке ассемблера , система использовала совершенно другой тип языка, который был намеренно написан так, чтобы выглядеть как C. [12] Пример из знакомства с системой:
#define NBYTES 100char array[NBYTES];sum(){ b0 = &array; a1 = 0; for (a2 = 0; a2 < NBYTES; ++a2) { a1 =+ b0; ++b0; }}
Этот код выделяет 100 байт памяти и присваивает ей имя array
. sum
затем процедура находит адрес array
в памяти очищает регистр a1 для хранения полученной суммы, а затем циклически перебирает массив, суммируя записи в a1, одновременно увеличивая адрес в b0. При компиляции «переменные» b0, a1 и a2 будут помещены в регистры, а различные операции преобразованы в коды операций ISA — например, присвоение a1 = 0;
будет превращен в MOVE
инструкция с установленной адресацией, поэтому пунктом назначения является регистр R, а источником является нулевое постоянное значение. for
будет реализован как макрос с использованием других регистров в качестве источника индексной переменной. a2
. [12] Язык включает в себя структуры, определения переменных, функции и большинство других возможностей C. [13] [11]
Поскольку система была новой, а вся концепция микропроцессоров — новой для AT&T, компания также представила одноплатный компьютер MAC-TUTOR , который можно было использовать для тестирования и разработки. Инструменты Unix можно использовать для создания программы, загрузки ее в MAC-TUTOR, запуска и отладки, а также отправки статуса обратно на сторону Unix. [14] Базовый MAC-TUTOR включал в себя 2 КБ ОЗУ , 2 КБ ПЗУ с основными функциями аппаратного управления, три гнезда для микросхем PROM по 1 КБ , 28-кнопочную клавиатуру калькуляторного типа (4 на 7) и дисплей, состоящий из восьми 7 -сегментные светодиоды. Встроенные интерфейсы включали кассетную ленту , два порта RS-232 для компьютерных терминалов и 32-контактный расширитель шины, который можно было использовать для добавления дополнительной памяти или устройств, отображаемых в памяти. [15]
Выполнение
[ редактировать ]В WE212 использовалось более 7000 транзисторов, и он был реализован по 5-микронной КМОП- технологии, в результате чего размер кристалла составил 220x230 мил. [16] Обычно он работал при напряжении 12 В и частоте 2 МГц, что приводило к потреблению 200 милливатт. [16] значительно ниже, чем у современных процессоров, таких как 6502 или Z80. Второй источник питания на 5 В также требовался для питания частей транзисторно-транзисторной логики (TTL), которые взаимодействовали с остальным аппаратным обеспечением компьютера. [16]
КМОП была выбрана как из-за более низкого энергопотребления, чем существующие логические конструкции NMOS, так и из-за возможности иметь как NMOS, так и PMOS-транзисторы на одном кристалле, что, по мнению разработчиков, обеспечивает большую гибкость. [9] ALU был слишком сложен для реализации в CMOS, что потребовало бы вдвое большей площади, чем используемая ими реализация NMOS. Поскольку это приводило к увеличению рассеиваемой мощности, система отключала питание АЛУ в те периоды, когда оно не использовалось, например, во время доступа к памяти. Поскольку ALU был активен только около 20% времени, это представляло собой значительную экономию энергии. [16]
Он был упакован в 40-контактный DIP- разъем с 16-контактной адресной шиной и 8-контактной шиной данных, что означало, что ни один из основных контактов не был мультиплексирован, и данные можно было считывать за один цикл. Ввод/вывод отображался в памяти и не использовал отдельные контакты, как в Intel 8080 . Два контакта обеспечивали прямой доступ к памяти (DMA); устройство, желающее использовать DMA, поставит DMAREQ на низкий уровень, и когда процессор будет готов освободить шину, он укажет на это, поставив DMAACK на низкий уровень. Затем устройство могло получить доступ к памяти столько времени, сколько ему необходимо, и указало на завершение, выпустив DMA REQ. Еще три контакта, от S1 до S3, указывали внутреннее состояние ЦП и любые ошибки. Остальные контакты представляли собой типичную комбинацию контактов питания, управления прерываниями и тактовых импульсов. [17]
Известно, что существуют как минимум три версии WE212: от A до C. Различия между ними, за исключением упаковки, не описаны ни в каких доступных ссылках.
Использование и влияние
[ редактировать ]Помимо системы MAC-TUTOR, WE212 вскользь упоминается в ряде продуктов AT&T, включая, среди прочего, 4ESS. коммутатор [18] SLC-96 и несущая абонентского шлейфа . [19]
Хотя BELLMAC-8 использовался относительно мало, базовая концепция разработки процессора специально для запуска C и подобных языков постоянно исследовалась Bell в течение следующего десятилетия. Следующий BELLMAC-80 был по сути 32-битной реализацией машины C. От попытки высокопроизводительного проектирования ECL отказались, и в 1986 году была создана более простая реализация под названием CRISP, достигшая примерно 7,7 VAX MIPS . [20]
AT&T решила изменить цель разработки C-машин, переориентировавшись на маломощные приложения для мобильных компьютеров. Это привело к созданию AT&T Hobbit , первая версия которого — AT&T 92010 — была выпущена в 1992 году. [21] Отсутствие успеха на рынке привело к тому, что AT&T отозвала «Хоббита» с рынка в 1993 году. [22] и на этом разработка C Machine закончилась.
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Уинфилд 1978 , с. 494.
- ^ Перейти обратно: а б с Дитцель и Маклеллан 1982 , стр. 48.
- ^ Уинфилд 1978 , с. 495.
- ^ Перейти обратно: а б Уинфилд 1978 , с. 496.
- ^ Осборн и Кейн 1981 , с. 10.1, 21.10.
- ^ Перейти обратно: а б с д Уинфилд 1978 , с. 499.
- ^ НАСТАВНИК 1979 , стр. 3.1.
- ^ Перейти обратно: а б с РЕпетитор 1979 г. , стр. 3.3.
- ^ Перейти обратно: а б Уинфилд 1978 , с. 500.
- ^ НАСТАВНИК 1979 , стр. 3.4.
- ^ Перейти обратно: а б Уинфилд 1978 , с. 502.
- ^ Перейти обратно: а б Ровеньо 1978 , с. 2255.
- ^ Ровеньо 1978 , с. 2256.
- ^ Уинфилд 1978 , с. 503.
- ^ НАСТАВНИК 1979 , стр. 1.1.
- ^ Перейти обратно: а б с д Уинфилд 1978 , с. 501.
- ^ Уинфилд 1978 , с. 498.
- ^ Хоппнер и др. 1981 , с. 1134.
- ^ Каннифф 1981 , с. 124.
- ^ Дитцель и др. 1987 , стр. 309.
- ^ Райан, Боб (февраль 1993 г.). «Коммуникации становятся личными» . Байт . стр. 169–170, 172, 174, 176 . Проверено 27 марта 2023 г.
- ^ Гассе, Жан-Луи (31 января 2019 г.). «50 лет в сфере технологий. Часть 15. Быть: от концепции до смерти» . Середина . Проверено 31 августа 2020 г.
Библиография
[ редактировать ]- Уинфилд, Герберт (июль 1978 г.). «MAC-8: Микропроцессор для телекоммуникационных приложений» . Западный инженер-электрик . 21 .
- Дитцель, Дэвид; Маклеллан, Хьюберт (апрель 1982 г.). «Бесплатная регистрация распределения: кэш стека машины C» . Уведомления ACM SIGPLAN . 17 (4): 48–56. дои : 10.1145/960120.801825 .
- Дитцель, Дэвид; Маклеллан, Хьюберт; Беренбаум, Алан Д. (1987). «Аппаратная архитектура микропроцессора CRISP» . Материалы 14-го ежегодного международного симпозиума по компьютерной архитектуре - ISCA '87 . стр. 309–319. дои : 10.1145/30350.30385 . ISBN 0818607769 . S2CID 14954824 . Проверено 28 марта 2023 г.
- Ровеньо, HD (июль – август 1978 г.). «Система разделения времени Unix: среда поддержки для систем MAC-8» . Технический журнал Bell System . 57 (6): 2251–2263. дои : 10.1002/j.1538-7305.1978.tb02152.x . S2CID 33739380 .
- Хоппнер, К.М.; Манн, Х.; Паныко, СФ; Ван Зведен, Дж. (июль – август 1981 г.). «4ESS: Цифровой интерфейс» (PDF) . Технический журнал Bell System . 60 (6): 1131–1166. дои : 10.1002/j.1538-7305.1981.tb03401.x . S2CID 34441812 .
- Каннифф, Р.Дж. (февраль 1981 г.). «Цифровой концентратор для системы SCL-96» . Технический журнал Bell System . 60 (2): 123–158. дои : 10.1002/j.1538-7305.1981.tb00235.x .
- Справочное руководство MAC-TUTOR (PDF) . АТ&Т. Июль 1979 года.
- Осборн, Адам; Кейн, Джерри (1981). Справочник Osborne по 4- и 8-битным микропроцессорам . Осборн/МакГроу-Хилл. ISBN 0-931988-42-Х .