Jump to content

БЕЛЛМАК-8

БЕЛЛМАК-8
Общая информация
Запущен 1977 год ; 47 лет назад ( 1977 )
Общий производитель
Производительность
Макс. процессора Тактовая частота от 2 МГц до 2 МГц
Ширина данных 8 бит
Ширина адреса 16 бит
Архитектура и классификация
Набор инструкций МАК-8
Физические характеристики
Транзисторы
  • более 7000
Упаковка
История
Преемник БЕЛЛМАК-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]

Выполнение

[ редактировать ]
Фотография матрицы MAC-8.

В 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 закончилась.

  1. ^ Уинфилд 1978 , с. 494.
  2. ^ Перейти обратно: а б с Дитцель и Маклеллан 1982 , стр. 48.
  3. ^ Уинфилд 1978 , с. 495.
  4. ^ Перейти обратно: а б Уинфилд 1978 , с. 496.
  5. ^ Осборн и Кейн 1981 , с. 10.1, 21.10.
  6. ^ Перейти обратно: а б с д Уинфилд 1978 , с. 499.
  7. ^ НАСТАВНИК 1979 , стр. 3.1.
  8. ^ Перейти обратно: а б с РЕпетитор 1979 г. , стр. 3.3.
  9. ^ Перейти обратно: а б Уинфилд 1978 , с. 500.
  10. ^ НАСТАВНИК 1979 , стр. 3.4.
  11. ^ Перейти обратно: а б Уинфилд 1978 , с. 502.
  12. ^ Перейти обратно: а б Ровеньо 1978 , с. 2255.
  13. ^ Ровеньо 1978 , с. 2256.
  14. ^ Уинфилд 1978 , с. 503.
  15. ^ НАСТАВНИК 1979 , стр. 1.1.
  16. ^ Перейти обратно: а б с д Уинфилд 1978 , с. 501.
  17. ^ Уинфилд 1978 , с. 498.
  18. ^ Хоппнер и др. 1981 , с. 1134.
  19. ^ Каннифф 1981 , с. 124.
  20. ^ Дитцель и др. 1987 , стр. 309.
  21. ^ Райан, Боб (февраль 1993 г.). «Коммуникации становятся личными» . Байт . стр. 169–170, 172, 174, 176 . Проверено 27 марта 2023 г.
  22. ^ Гассе, Жан-Луи (31 января 2019 г.). «50 лет в сфере технологий. Часть 15. Быть: от концепции до смерти» . Середина . Проверено 31 августа 2020 г.

Библиография

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0a1ac04b1230ee920fb8cf384b53aa1f__1691917080
URL1:https://arc.ask3.ru/arc/aa/0a/1f/0a1ac04b1230ee920fb8cf384b53aa1f.html
Заголовок, (Title) документа по адресу, URL1:
BELLMAC-8 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)