Дизайнер | Зилог |
---|---|
Биты | 16-битный |
Введено | 1979 ( 1979 ) |
Дизайн | ЦИСК |
Тип | Регистр–Память |
Ветвление | Регистр состояния |
Преемник | Z80000 |
Регистры | |
16 × 16-бит общего назначения 24-бит ПК 16-бит статус |
Общая информация | |
---|---|
Запущен | 1979 ( 1979 ) |
Разработано | Зилог |
Производительность | |
Ширина данных | 16 бит |
Ширина адреса | 23 бита |
Физические характеристики | |
Транзисторы |
|
Пакеты |
|
Zilog Z8000 — 16-разрядный микропроцессор, разработанный компанией Zilog в начале 1979 года.
Бернард Пейто разработал архитектуру, в то время как Масатоши Шима занимался логикой и физической реализацией, ему помогала небольшая группа людей. В отличие от большинства разработок той эпохи, Z8000 не использовал микрокод , что позволило реализовать его всего на 17 500 транзисторах.
Z8000 не совместим с Z80 , но включает в себя ряд элементов дизайна из него. Среди них — возможность объединения его регистров и использования их в качестве одного большего регистра; в то время как Z80 позволял использовать два 8-битных регистра в качестве одного 16-битного регистра, Z8000 расширил это, позволив двум 16-битным регистрам работать как 32-битный регистр или четырем работать как 64-битный регистр. Эти объединенные регистры особенно полезны для математических операций.
Хотя он и использовался в начале 1980-х, он никогда не был таким популярным, как Z80. Он был выпущен после 16-битного Intel 8086 (апрель 1978 г.) и в то же время, что и менее дорогой Intel 8088 , и всего за несколько месяцев до Motorola 68000 (сентябрь 1979 г.), который имел 32-битную архитектуру набора инструкций и был примерно в два раза быстрее.
Zilog Z80000 — это 32-разрядная модель следующего поколения, выпущенная в 1986 году.
Z8000 изначально поставлялся в двух версиях: Z8001 с полной 23-битной внешней адресной шиной , что позволяло ему получать доступ к 8 мегабайтам памяти, и Z8002, который поддерживал только 16-битную адресацию, что позволяло иметь 64 килобайта памяти. Это позволило Z8002 иметь на восемь контактов меньше, поставляясь в меньшем 40-контактном DIP- формате, что делало его менее дорогим в реализации. Zilog заявил, что Z8001 и Z8002 были просто по-разному упакованными версиями одного и того же чипа Z8000, «разница достигалась за счет опции склеивания во время производства». [1]
Даже при 48 контактах не было достаточно соединений для обеспечения полной 16-битной шины данных и 24-битной адресной шины, так как это оставило бы только 8 свободных контактов, чего недостаточно для различных других интерфейсных потребностей, таких как питание, тактирование и прерывания. Чтобы решить эту проблему, Z8001 мультиплексировал адреса и контакты данных вместе. Первые 16 контактов 23-контактной адресной шины использовались в альтернативных циклах как 16-битная шина данных. Это означало, что каждый доступ к памяти занимал два полных цикла памяти: сначала адрес представлялся и должен был быть «защелкнут» с помощью внешней схемы, а затем в следующем цикле 16 бит данных считывались или записывались с использованием тех же контактов. [2] Это означает, что Z8000 работал бы примерно вдвое медленнее, чем что-то вроде 68000, у которого были отдельные 16 контактов данных и 24 контакта адреса на большем 64-контактном чипе.
Серия была позже расширена, включив обновленные версии Z8003 и Z8004 Z8001 и Z8002 соответственно. Эти версии были разработаны для обеспечения улучшенной поддержки виртуальной памяти , добавления новых регистров состояния для индикации ошибок сегментации (тест и установка) и предоставления возможности прерывания.
1 5 | 1 4 | 1 3 | 1 2 | 1 1 | 1 0 | 0 9 | 0 8 | 0 7 | 0 6 | 0 5 | 0 4 | 0 3 | 0 2 | 0 1 | 0 0 | (позиция бита) | ||
Группировка | ||||||||||||||||||
Главные регистры | 16-битный | 32-битный | 64-битный | |||||||||||||||
РХ0 | РЛ0 | Р0 | РР0 | РQ0 | ||||||||||||||
РХ1 | РЛ1 | Р1 | ||||||||||||||||
РХ2 | РЛ2 | Р2 | РР2 | |||||||||||||||
РХ3 | РЛ3 | Р3 | ||||||||||||||||
РХ4 | РЛ4 | Р4 | РР4 | РК4 | ||||||||||||||
РХ5 | РЛ5 | Р5 | ||||||||||||||||
РХ6 | РЛ6 | Р6 | РР6 | |||||||||||||||
РХ7 | РЛ7 | Р7 | ||||||||||||||||
Р8 | РР8 | РQ8 | ||||||||||||||||
Р9 | ||||||||||||||||||
Р10 | 10 руб. | |||||||||||||||||
Р11 | ||||||||||||||||||
Р12 | РР12 | РQ12 | ||||||||||||||||
Р13 | ||||||||||||||||||
Сегмент указателя стека | Р14 | РР14 | ||||||||||||||||
Смещение указателя стека | Р15 | |||||||||||||||||
Регистр статуса | ||||||||||||||||||
С | С Н | Э | В | М | - | - | - | С | З | С | П О | Д | ЧАС | - | - | Флаги | ||
Счетчик программ | ||||||||||||||||||
0 | Сегмент | 0 0 0 0 0 0 0 0 | Счетчик программ | |||||||||||||||
Адрес |
Имеется шестнадцать 16-битных регистров , обозначенных как R0 - R15. Регистры могут быть объединены в восемь 32-битных регистров, обозначенных как RR0/RR2/../RR14, или в четыре 64-битных регистра, обозначенных как RQ0/RQ4/RQ8/RQ12. Первые восемь регистров также могут быть подразделены на шестнадцать 8-битных регистров, обозначенных как RL0 - RL7 для нижнего байта и RH0 - RH7 для верхнего (старшего) байта. Регистр R15 обозначен как указатель стека . В Z8001 регистр R14 используется для включения фиксированного сегмента в указатель стека, а счетчик программ расширен до 32 бит для включения аналогичного сегмента.
Существует как пользовательский режим («нормальный»), так и режим супервизора , выбираемый битом 14 в регистре флагов. В режиме супервизора регистры стека указывают на системный стек, и все привилегированные инструкции доступны. В пользовательском режиме регистры стека указывают на обычный стек, и все привилегированные инструкции генерируют ошибку. Наличие отдельных режимов и стеков значительно повышает производительность переключений контекста между пользовательскими программами и операционной системой . [3] : 6.1
Как и Z80 до него, Z8000 включает в себя систему автоматического обновления динамической оперативной памяти . В большинстве систем это обычно обрабатывается контроллером видеодисплея или внешней логикой. Это было реализовано с помощью отдельного регистра счетчика обновления (RC), который содержал текущую обновляемую страницу памяти. Функция включается установкой самого значимого бита RC, бита 15, в 1. Следующие шесть бит, с 14 по 9, представляют собой частоту, измеряемую в терминах каждого 4-го тактового цикла. При стандартной частоте 4 МГц, что позволяет вызывать обновление каждые 1–64 микросекунды. Оставшиеся 8 бит выбирают строку в памяти для обновления. [3] : 6.5, 6.28
Z8000 имеет сегментированную карту памяти с 7-битным «номером сегмента» и 16-битным смещением. Оба числа представлены контактами на Z8001, что означает, что он может напрямую обращаться к 23-битной памяти или 8 МБ. [3] : 6.19 Инструкции могут напрямую обращаться только к 16-битному смещению. Это позволяет уменьшить формат инструкции; системе с прямым доступом к 23-битному адресу потребуется считывать три байта (24 бита) из памяти для каждого адреса, указанного в коде, что потребует двух чтений на 16-битной шине. С сегментами адресам требуется только одно 16-битное чтение, которое затем добавляется к номеру сегмента для получения полного адреса. Номер сегмента необходимо обновлять только тогда, когда данные пересекают границы 16-бит/64 КБ. [3] : 6.3
Внутренне все адреса 32-битные: верхнее 16-битное слово с ведущим 0 в бите 15, 7-битный номер сегмента, а затем 8 нулей. Это требует больше памяти для хранения, так как каждый 23-битный адрес использует 32 бита пространства регистра, но позволяет адресам чисто храниться в 16-битных регистрах и может быть более легко помещено и извлечено из стека, что происходит в 16-битных словах. [3] : 6.6
Дополнительный 48-контактный блок управления памятью Z8010 (MMU) расширяет карту памяти до 16 МБ, транслируя 23-битный адрес из ЦП в 24-битный. Z8010 имеет 64 регистра дескриптора сегмента, каждый из которых содержит 16-битный базовый физический адрес, 8-битный предел и 8-битный набор атрибутов. Когда ЦП пытается получить доступ к определенному сегменту, 7-битному значению, Z8010 использует нижние 6 бит номера сегмента для выбора регистра дескриптора сегмента, проверяет 16-битное смещение в сегменте по отношению к предельному значению в этом регистре и проверяет биты разрешения в атрибутах, чтобы увидеть, разрешен ли доступ, и, если доступ разрешен, добавляет базовый физический адрес к смещению сегмента для генерации физического адреса. Это позволяет разнести несколько программ в физической памяти, каждой из которых выделяется собственное пространство для работы, при этом полагая, что она обращается ко всем 8 МБ ОЗУ. Сегменты имеют переменную длину, расширяясь до 64 КБ, чтобы обеспечить доступ ко всей памяти из 64 сегментов. Если требуется более 64 сегментов, можно использовать несколько Z8010, при этом верхний бит 7-битного номера сегмента выбирает, какой Z8010 использовать. [4] [5] Z8010 не был доступен на момент запуска и в конечном итоге опоздал на девять месяцев или год. [6]
С выпуском Z8003/Z8004, Z8015 был добавлен в линейку, добавив поддержку страничной памяти . Главное отличие заключается в том, что Z8015 разбивает память на 64 блока по 2 КБ, тогда как Z8010 разбивает память на 64 блока переменного размера, до 64 КБ каждый. Кроме того, Z8015 расширяет номер сегмента с 7 до 12 бит, а затем использует их как самые значимые биты 23-битного общего адреса, переопределяя старшие биты исходного 16-битного смещения. Преимущество этой схемы доступа в том, что легко читать или записывать блоки по 2 КБ на жесткий диск , поэтому этот шаблон более точно соответствует тому, что в конечном итоге произойдет при сегментации . [4]
Одной из необычных функций, обнаруженных в Z8000, чаще всего ассоциируемой с миникомпьютерами , является прямая поддержка векторных прерываний . Прерывания используются внешними устройствами для уведомления процессора о выполнении некоторого условия; обычное использование — указание на то, что данные из медленного процесса, например, чтения дискеты, теперь доступны, и ЦП может считать данные в память.
Обычно на небольших машинах прерывание вызывает запуск специального кода, который проверяет различные биты состояния и ячейки памяти, чтобы решить, какое устройство на самом деле вызвало прерывание и почему. В некоторых конструкциях, особенно предназначенных для вычислений в реальном времени , область памяти выделяется как набор указателей или векторов для кода, обрабатывающего определенное устройство. Затем устройства, вызывающие прерывание, устанавливают некоторое состояние, обычно через контакты на ЦП, чтобы указать конкретный номер прерывания, N. Когда прерывание вызывается, ЦП немедленно переходит через N-ю запись в таблице, избегая необходимости декодировать прерывание. Это может значительно ускорить обслуживание прерывания, избегая необходимости выполнять дополнительные операции, а также упрощая код обработки прерывания.
В Z8000 новый регистр поддерживает векторы, New Program Status Area Pointer. Это было похоже на адрес памяти в регистре, состоящий из двух 16-битных значений, где верхние 16 бит содержат номер сегмента. Нижние 16 бит затем делятся пополам, верхние 8 бит содержат смещение, а нижние 8 бит остаются пустыми. Для вызова определенного вектора внешнее устройство представляет нижние 8 бит (или 9 в некоторых случаях) на адресной шине, и полный адрес вектора формируется из трех значений. [3] : 6.8
В начале 1980-х годов процессор Zilog Z8000 был популярен для настольных машин Unix . Эти недорогие системы Unix позволяли малому бизнесу запускать настоящую многопользовательскую систему и совместно использовать ресурсы (диск, принтеры) до того, как сетевые технологии стали обычным явлением. Обычно они имели только последовательные порты RS-232 (4–16) и параллельные порты принтера вместо встроенной графики, что было типично для серверов того времени.
Компьютерные системы на базе Z8000 включали собственную серию System 8000 компании Zilog, а также других производителей:
Компьютер Zilog S8000 вышел с версией Unix под названием ZEUS (Zilog Enhanced Unix System). ZEUS был портом Unix версии 7 и включал то, что называлось «улучшениями Беркли». ZEUS включал версию COBOL под названием RM/COBOL (Ryan McFarland COBOL). Доступность RM/COBOL позволила быстро перенести многие коммерческие приложения на компьютер S8000, хотя это не помогло его долгосрочному успеху. S8000 действительно добился некоторого успеха у IRS и налоговых инспекторов в Соединенных Штатах, которые использовали эту модель для обработки электронно поданных налоговых деклараций. [34]
Z8000 был представлен в проекте Trump Card Стива Чиарсии для его колонки Circuit Cellar в журнале Byte , предоставляя карту расширения с процессором Z8001 и 512 КБ ОЗУ, подходящую для использования с IBM-совместимым ПК. [35] Компиляторы для BASIC и C поставлялись с платой, вместе с ассемблером и эмулятором Z80, которые могли запускать программы, написанные для CP/M-80. Предполагалось, что Unix также будет доступен для Trump Card. [36]
Несмотря на несколько позитивный прием как «достаточно быстрый супермикро с в целом хорошей производительностью за эту цену», 16-битные архитектурные ограничения Z8000, с обработкой сегментов, необходимой для доступа к более чем 64 КБ в процессе, привели к вопросам о долговечности продуктов Series 8000, поскольку 32-битные архитектуры процессоров от Motorola и National Semiconductor стали более широко распространены. [37] Zilog Systems в конечном итоге приняла 32-битный процессор WE32100 от AT&T , представив его в новом продукте, System 8000/32, наряду с 32-битными обновлениями своих существующих моделей System 8000 Series 2. Это позволило внедрить Unix System V на продукты Zilog Systems. [38]
Принятие Zilog's Systems Division чипа WE32100, в пользу продолжения использования продуктов Zilog's Component Division, было обусловлено расходящимися требованиями. Zilog стремился представить своего 32-битного преемника Z8000, Z80000, чтобы развить успешное принятие 16-битного продукта в военных и графических приложениях, в то время как его Systems Division отдал приоритет поддержке Unix и коммерческим приложениям. Было достигнуто заключение о принятии WE32100 в качестве «главного чипа UNIX». [39] Zilog впоследствии объявил о соглашении на производство чипсета WE32100 в течение пяти лет, став первым альтернативным источником этих продуктов. [40]
Существовала версия операционной системы Xenix для Z8000 . [41] В 1982 году Digital Research и Zilog объявили о соглашении сделать CP/M доступной для Z8000. [42]
Namco использовала серию Z8000 в своих аркадных играх Pole Position и Pole Position II . В машинах использовались две Z8002, версии Z8000 на 64 КБ.
В одном случае Z8001 использовался для реализации архитектуры, основанной на возможностях, используя номер сегмента в модели адресации Z8001 для указания регистра возможностей в виртуальном процессоре. Такие виртуальные процессоры были предоставлены посредством дополнения Z8001 «интеллектуальным запоминающим устройством», что обеспечивало управление памятью и средства переключения контекста, с дополнительными инструкциями, связанными с возможностями, которые поддерживались посредством эмуляции. [43]
Сообщаемое включение устройства в военные разработки [44] , возможно, объясняет продолжающееся существование Z8000 в форме ЦП Zilog Z16C01/02. Кроме того, стандартный центральный компьютер данных воздуха (SCADC) использовал Z8002. [45] Однако уведомление об окончании срока службы от Zilog было отправлено в 2012 году. [46]
Этот раздел, возможно, содержит оригинальные исследования . ( Февраль 2023 ) |
Хотя Z8000 и нашел некоторое применение в начале 1980-х годов, его довольно быстро заменили другими моделями. [47]
Федерико Фаггин , тогдашний генеральный директор Zilog, позже предположил, что это было связано с финансовым соглашением Zilog с венчурным капиталом Exxon Enterprises. Enterprises сделала ряд инвестиций в компьютерную сферу и к началу 1980-х годов позиционировала себя как конкурента IBM в сфере больших систем. Фаггин предположил, что IBM, таким образом, видела в Zilog конкурента и в результате отказалась рассматривать Z8000. [47]
Однако Фаггин признал, что сегментированная архитектура Z8000 была недостатком для появляющихся «графических приложений», где системам, таким как Apple Macintosh, требовался быстрый доступ к более чем 64 КБ памяти в одном адресном пространстве. Более длительный, чем ожидалось, процесс вывода продукта на рынок также был признан фактором, способствовавшим его непринятию, Фаггин отметил, что «быть первым и иметь самый сильный маркетинг и самый сильный импульс», как это было у Intel с 8086, было бы единственным оставшимся путем к успеху для продукта такого рода. [48]
Анализ возможностей, доступных дизайнерам в начале 1980-х годов, позволяет предположить, что существует несколько прозаических причин, по которым Z8000 не стал более популярным:
Сравнивая версии Byte Sieve на языке ассемблера , можно увидеть, что 1,1 секунды 5,5 МГц Z8000 впечатляют по сравнению с 8-битными проектами, которые он заменил, включая 4 МГц Z80 от Zilog с 6,8 секундами и популярный 1 МГц MOS 6502 с 13,9 секундами. Даже более новый 1 МГц Motorola 6809 был намного медленнее, с 5,1 секундами. [49] Он также хорошо справляется с 8 МГц Intel 8086 , который справился за 1,9 секунд, или менее дорогим 5 МГц Intel 8088 с 4 секундами. [49]
Хотя процессоры Intel легко уступали Z8001, они были упакованы в 40-контактные DIP-корпуса, что делало их менее дорогими в реализации, чем 48-контактный Z8001. Z8002 также использовал 40-контактный корпус, но имел 16-битную адресную шину, которая могла получить доступ только к 64 КБ ОЗУ, тогда как процессоры Intel имели 20-битную шину, которая могла получить доступ к 1 МБ ОЗУ. Внутренне 23-битные адреса Z8000 также были сложнее в обработке, чем более простая система Intel, использующая 16-битные базовые адреса и отдельные сегментные регистры. Для тех, кто искал недорогой вариант, способный получить доступ к (тому, что было тогда) большим объемам памяти, конструкции Intel были конкурентоспособны и доступны более чем на год раньше. [49] [ требуется лучший источник ]
Для тех, кто искал чистую производительность, Z8000 был самым быстрым ЦП, доступным в начале 1979 года. Но это было верно только в течение нескольких месяцев. 16/32-битный 8 МГц Motorola 68000 появился на рынке позже в том же году и показал время 0,49 секунды на том же тесте Sieve, более чем в два раза быстрее, чем Z8000. [49] Хотя он использовал еще большую 64-контактную DIP-разметку, для тех, кто был готов перейти на более чем 40 контактов, это была небольшая цена за то, что было самым быстрым процессором своей эпохи. Его 32-битные инструкции и регистры в сочетании с 24-битной адресной шиной с плоской адресацией 16 МБ также сделали его гораздо более привлекательным для дизайнеров, в чем признается Фаггин. [47]
Вдобавок к проблемам, когда Z8000 был впервые выпущен, он содержал ряд ошибок. Это было связано с его сложным декодером инструкций, который, в отличие от большинства процессоров той эпохи, не использовал микрокод и зависел от логики, реализованной непосредственно в ЦП. Это позволило исключить из конструкции хранилище микрокода и связанную с ним логику декодирования, что сократило количество транзисторов до 17 500. [50] Напротив, современный Intel 8088 использовал 29 000 транзисторов, [51] в то время как Motorola 68000 несколькими месяцами позже использовала 68 000. [52]
Несколько сторонних производителей изготовили Z8000, включая AMD , [53] SGS-Ates , Toshiba и Sharp . [54]