stringtranslate.com

Зилог Z80

Zilog Z80 — это 8-битный микропроцессор, разработанный Zilog , который сыграл важную роль в развитии ранних вычислений. Программно-совместимый с Intel 8080 , он представлял собой привлекательную альтернативу благодаря лучшей интеграции и повышенной производительности. Z80 имел четырнадцать регистров по сравнению с семью 8080, а также дополнительные инструкции для битовых манипуляций , что делало его более мощным чипом.

Первоначально предназначенный для использования во встраиваемых системах , таких как 8080, сочетание совместимости, доступности и превосходной производительности Z80 привело его к широкому распространению в системах видеоигр и домашних компьютерах в конце 1970-х и начале 1980-х годов, что способствовало революции в области персональных компьютеров .

Z80 был детищем Федерико Фаггина , ключевой фигуры в создании Intel 8080. После ухода из Intel в 1974 году Фаггин вместе с Масатоши Сима основал компанию Zilog . Z80 был выпущен в июле 1976 года. На доходы от Z80 компания построила собственные заводы по производству микросхем . [2] Компания Zilog передала лицензию на Z80 американским компаниям Synertek и Mostek , которые помогли им с начальным производством, а также европейскому производителю SGS . Дизайн также копировали несколько японских, восточноевропейских и советских производителей . [d] Это завоевало признание Z80 на мировом рынке, поскольку крупные компании, такие как NEC , Toshiba , Sharp и Hitachi, начали производить устройство (или свои собственные Z80-совместимые клоны или разработки).

Z80 продолжал использоваться во встраиваемых системах в течение десятилетий после его появления, и его развитие постоянно совершенствовалось. Последним дополнением к семейству Z80 является eZ80 , который предлагается вместе с чипами-преемниками. Zilog объявил о прекращении производства Z80 в апреле 2024 года после почти пяти десятилетий производства.

История

В рекламе Z80, опубликованной в мае 1976 года, описаны его основные преимущества перед 8080.
Фотография оригинального микропроцессора Zilog Z80 на nMOS с истощаемой нагрузкой . Общий размер кристалла составляет 3545×3350 мкм. Синие квадраты снаружи — это площадки, которые подключаются к внешним контактам. Этот чип был изготовлен в 1990 году.
CMOS Z80 в 44-контактном четырехплоскостном корпусе .

История ранних веков

В Fairchild Semiconductor , а затем в Intel , физик и инженер Федерико Фаггин работал над фундаментальными технологиями производства транзисторов и полупроводников . Он также разработал базовую методологию проектирования памяти и микропроцессоров Intel и руководил работой над Intel 4004 , Intel 8080 и несколькими другими микросхемами. Масатоши Сима был главным разработчиком логики и транзисторов 4004 и 8080 под руководством Фаггина, а Ральф Унгерманн отвечал за разработку индивидуальных интегральных схем . [3]

В начале 1974 года Intel рассматривала свои микропроцессоры не столько как продукты, которые можно продавать отдельно, сколько как способ продавать больше своих основных продуктов — статической оперативной памяти и ПЗУ . В результате реорганизации многие из ранее независимых подразделений оказались под руководством Леса Вадаса, что еще больше ослабило место микропроцессоров в компании. В том же году рецессия 1973–1975 годов достигла пика, и Intel уволила ряд сотрудников. [3] Все это привело к тому, что Феггин стал беспокойным, и он пригласил Унгерманна выпить и спросил, будет ли он заинтересован в создании собственной компании. Унгерманн немедленно согласился, и, поскольку у него было меньше дел в Intel, он ушел в августе или сентябре, за ним последовал Фаггин, чей последний день в Intel был Хэллоуином 1974 года. [4] Когда Шима услышал об этом, он тоже попросил прийти в новую компанию. , но, не имея ни дизайна продукта, ни денег, ему сказали подождать. [5]

Вновь созданная и неназванная компания первоначально приступила к разработке однокристального микроконтроллера под названием 2001. Они встретились с Synertek , чтобы обсудить производство на их линиях, и когда Faggin начал понимать связанные с этим затраты, стало ясно, что такой недорогой продукт будет не сможет конкурировать с разработкой компании с собственными производственными линиями, такой как Intel. Затем они начали рассматривать вместо этого более сложный микропроцессор, первоначально известный как Super 80, основной особенностью которого было использование шины +5 В [5] вместо более распространенных -5, +5 и 12 В, используемых в таких конструкциях, как 8080. Новый дизайн был задуман как совместимый с 8080, но добавлял многие приятные особенности Motorola 6800 , включая индексные регистры и улучшенные прерывания . [6]

Инвестиции Exxon, начало детальной разработки

Еще во время создания отраслевой информационный бюллетень Electronic News услышал о них и опубликовал статью о недавно созданной компании. Это привлекло внимание Exxon Enterprises, инвестиционного подразделения Exxon в сфере высоких технологий. В то время, в разгар рецессии, доступного венчурного капитала было очень мало : за весь 1975 год на всю отрасль было потрачено в общей сложности 10 миллионов долларов (что эквивалентно 57 миллионам долларов в 2023 году). Кто-то из Exxon связался с пока неназванной компанией [5] и организовал встречу, которая в конечном итоге привела к тому, что в июне 1975 года они предоставили первоначальное финансирование в размере 500 000 долларов США (что эквивалентно 2,8 миллионам долларов США в 2023 году). [7]

Когда обсуждалось финансирование и был разработан проект, Сима присоединился к компании в феврале 1975 года. [6] Шима немедленно приступил к созданию высокоуровневого проекта, добавив несколько собственных концепций. В частности, он использовал свой опыт работы с миникомпьютерами NEC, чтобы добавить концепцию двух наборов регистров процессора , чтобы они могли быстро реагировать на прерывания . [4] [e] Унгерман начал разработку серии связанных контроллеров и периферийных микросхем, которые дополняли бы конструкцию. [8]

За этот период Шима заработал легендарную репутацию человека, способного преобразовывать логические концепции в физический дизайн в реальном времени; Обсуждая предлагаемую функцию, он часто прерывал и заявлял, сколько места займет чип, и накладывал вето на его добавление, если он был слишком большим. [9] Первый этап проектирования был завершен к апрелю 1975 года. Сима завершил логический макет к началу мая. Вторая версия логического проекта была выпущена 7 августа, а детали шины — к 16 сентября. Запись на ленту была завершена в ноябре, а преобразование ленты в производственную маску потребовало еще два месяца. [10]

Фаггин уже начал искать партнера по производству. К этому времени Synertek и Mostek уже наладили производственные линии, работающие в режиме истощения запасов, которые можно было использовать для производства конструкции. Поговорив ранее с Synertek, Фаггин первым подошел к ним. Однако президент Synertek потребовал предоставить компании вторую лицензию, позволяющую продавать разработку напрямую. Феггин подумал, что это будет означать, что они никогда не смогут конкурировать, даже если создадут свои собственные линии, и соглашение сорвалось. Затем он обратился к Мостеку, который согласился на условия эксклюзивности, пока Zilog настраивал свои линии, и в конечном итоге получил соглашение о втором источнике. [11]

Пересмотрев множество названий новой компании и обнаружив их настолько незабываемыми, что они не смогли вспомнить их даже день спустя, Фаггин и Унгерманн обдумывали идеи, основанные на «интегрированной логике», когда Унгерманн спросил: «А как насчет Zilog?» Фаггин сразу согласился, заявив, что они могут сказать, что это «последнее слово в интегрированной логике». Когда они встретились на следующий день и оба сразу вспомнили об этом, у компании было свое название. [12]

В производство

Первые образцы были возвращены из Мостека 9 марта 1976 года. [8] К концу месяца они также завершили разработку системы разработки на основе ассемблера . Некоторые из вспомогательных и периферийных микросхем Z80 на тот момент находились в стадии разработки, и многие из них были выпущены в следующем году. Среди них были Z80 CTC (счетчик/таймер), Z80 DMA [13] (прямой доступ к памяти), Z80 DART (двойной асинхронный приемник-передатчик), Z80 SIO (синхронный коммуникационный контроллер) и Z80 PIO (параллельный ввод/вывод). .

Z80 был официально представлен в июле 1976 года. [14] Одним из первых клиентов был покупатель, который, неизвестно для Zilog, работал в NEC. В то время японские компании по производству электроники были хорошо известны тем, что брали американские разработки микросхем и производили их без лицензии. Команда Zilog беспокоилась по этому поводу, и Феджину пришла в голову идея добавить транзисторы, которые можно было бы слегка модифицировать, чтобы они работали иначе, чем можно было бы предположить при визуальном осмотре. Шима добавил в дизайн шесть таких «ловушек». Некоторое время спустя инженер NEC сообщил Симе, что ловушки задержали работу по копированию на шесть месяцев. [15]

Успешный запуск позволил Фаггину и Унгерманну обратиться к Exxon в поисках финансирования для строительства собственного завода. Компания согласилась, и Zilog очень быстро построила производственную линию. Это позволило им занять от 60 до 70% общего рынка продаж Z80. [16] Имея собственную линию, компания Mostek получила добро на начало продаж собственной версии MK3880, которая предоставила клиентам второй источник, которого не хватало Intel. В то время второй источник считался чрезвычайно важным, поскольку такой стартап, как Zilog, мог обанкротиться и оставить потенциальных клиентов в затруднительном положении. [6] [ф]

Сравнение с 8080

Фаггин разработал набор команд , обеспечивающий бинарную совместимость с 8080 [17] [18] , чтобы большая часть кода 8080, в частности операционная система CP/M и компилятор Intel PL/M для 8080 (а также его сгенерированный код), могла выполняться. без изменений на новом процессоре Z80. Масатоши Шима спроектировал большую часть микроархитектуры , а также уровни затворов и транзисторов процессора Z80 при помощи небольшого числа инженеров и специалистов по компоновке . [19] [20] Генеральный директор Федерико Фаггин на самом деле активно участвовал в работе по компоновке микросхем вместе с двумя специалистами по компоновке. По словам Феггина, он работал 80 часов в неделю, чтобы уложиться в плотный график, заданный финансовыми инвесторами. [2]

Z80 предлагал множество улучшений по сравнению с 8080: [18]

Успех на рынке

Z80 заменил 8080 и его потомка 8085 на рынке процессоров [25] и стал одним из самых популярных и широко используемых 8-битных процессоров. [26] [27] Некоторые организации, такие как British Telecom, остались верны 8085 для встроенных приложений из-за их знакомства с ним, а также его встроенного последовательного интерфейса и архитектуры прерываний. Аналогичным образом компания Zenith Data Systems объединила 8085 с 16-битным процессором Intel 8088 в своем первом компьютере под управлением MS-DOS, Zenith Z-100 , несмотря на предыдущий опыт работы с новаторскими продуктами Heathkit H89 и Zenith Z-89 на базе Z80 . Однако другие компьютеры были созданы с интеграцией Z80 с другими процессорами: Radio Shack TRS-80 Model 16 с Motorola 68000 , DEC Rainbow с 8088 и Commodore 128 с MOS Technology 8502 .

Позднее Zilog производил маломощный Z80, подходящий для растущего рынка портативных компьютеров начала 1980-х годов. Intel произвела CMOS 8085 (80C85), используемую в портативных компьютерах с батарейным питанием, таких как ноутбук, разработанный Kyocera с апреля 1983 года, также продаваемый Tandy (как TRS-80 Model 100 ), Olivetti и NEC. Однако в последующие годы версии CMOS Z80 (как от Zilog, так и от японских производителей) также будут доминировать на этом рынке в таких продуктах, как Amstrad NC100 , Cambridge Z88 и собственной версии Tandy WP-2.

Возможно, ключом к первоначальному успеху Z80 стало обновление встроенной памяти DRAM, по крайней мере, на таких рынках, как CP/M и других офисных и домашних компьютерах. (Большинство встроенных систем Z80 используют статическое ОЗУ , не требующее обновления.) Это также могла быть минималистичная двухуровневая система прерываний или, наоборот, общая многоуровневая система последовательных прерываний, полезная для обслуживания нескольких микросхем ввода-вывода Z80. Эти функции позволили создавать системы с меньшим количеством вспомогательного оборудования и более простой компоновкой печатных плат.

Однако другие утверждают, что его популярность была связана с дублированием регистров, которое позволяло быстро переключать контекст или более эффективно обрабатывать такие вещи, как математика с плавающей запятой, по сравнению с 8-битными процессорами с меньшим количеством регистров. (Z80 может хранить несколько таких чисел внутри себя, используя HL'HL, DE'DE и BC'BC в качестве 32-битных регистров, избегая необходимости доступа к ним из более медленной оперативной памяти во время вычислений.) [28]

Для исходной конструкции NMOS указанный верхний предел тактовой частоты последовательно увеличивался с вводных 2,5  МГц через хорошо известные 4 МГц (Z80A), до 6 МГц (Z80B) и 8 МГц (Z80H). [29] [30] Версия NMOS производится с частотой 10 МГц с конца 1980-х годов. Версии КМОП были разработаны с указанным верхним пределом частоты в диапазоне от 4 до 20 МГц для версии, продаваемой сегодня. Версии CMOS позволяли переходить в режим ожидания с низким энергопотреблением с сохранением внутреннего состояния без нижнего предела частоты. [j] Полностью совместимые производные HD64180 / Z180 [31] [32] и eZ80 в настоящее время рассчитаны на частоту до 33 МГц и 50 МГц соответственно.

Дизайн

Модель программирования и набор регистров

Приблизительная блок-схема Z80: нет специального сумматора для смещений или отдельного инкрементатора для R, и нет необходимости использовать более одного 16-битного временного регистра WZ (хотя защелки инкремента также используются в качестве 16-битного временного регистра). в других контекстах). Именно регистры PC и IR вынесены в отдельную группу, с отделяемым сегментом шины, чтобы обеспечить возможность обновления этих регистров параллельно с основным банком регистров. [33]

Модель программирования и набор регистров Z80 довольно традиционны и в конечном итоге основаны на структуре регистров Datapoint 2200 . Z80 был разработан как расширение процессора Intel 8080, созданного теми же инженерами, который, в свою очередь, был расширением 8008 . По сути, 8008 представлял собой PMOS- реализацию ЦП Datapoint 2200 на основе TTL. [k]

Конструкция 2200 позволяла объединять 8-битные регистры H и L (высокий и низкий) в 16-битный адресный регистр HL. [l] В 8080 это соединение было добавлено также к парам BC и DE, а HL был обобщен, чтобы его можно было использовать в качестве 16-битного аккумулятора, а не просто адресного регистра. 8080 также представил немедленные 16-битные данные для нагрузок BC, DE, HL и SP. Более того, теперь стало возможным прямое 16-битное копирование между HL и памятью с использованием прямого адреса.

Z80 еще больше ортогонализировал это, сделав все 16-битные пары регистров, включая IX и IY, более универсальными, а также разрешив 16-битное копирование непосредственно в память и из памяти для всех этих пар. 16-битные регистры IX и IY в Z80 в первую очередь предназначены как регистры базового адреса, где конкретная инструкция предоставляет постоянное смещение, которое добавляется к предыдущим значениям, но они также могут использоваться, среди прочего, как 16-битные аккумуляторы. . Ограничением является то, что все ссылки на операнды, включающие IX или IY, требуют дополнительного байта префикса инструкции, добавляя как минимум четыре тактовых цикла к времени выполнения инструкции, использующей вместо этого HL; иногда это делает использование IX или IY менее эффективным, чем метод, использующий только регистры модели 8080. Z80 также представил новый флаг переполнения со знаком и дополнил довольно простую 16-битную арифметику 8080 специальными инструкциями для 16-битной арифметики со знаком .

Распиновка оригинального корпуса микросхемы DIP40 Z80

Совместимые с 8080 регистры AF, BC, DE, HL дублируются в виде отдельного файла регистров в Z80, [34] где процессор может быстро (четыре t-состояния, минимально возможное время выполнения для любой инструкции Z80) переключаться с одного банк другому; [35] функция, полезная для ускорения реакции на одноуровневые прерывания с высоким приоритетом. Похожая функция присутствовала в 2200, но так и не была реализована в Intel. Двойной набор регистров очень полезен во встроенных функциях, поскольку он улучшает производительность обработки прерываний, но нашел широкое применение в роли персонального компьютера в качестве дополнительного набора общих регистров для сложного кода, такого как арифметика с плавающей запятой или домашние компьютерные игры.

Дубликат файла регистров часто называют «альтернативным набором регистров» (некоторые называют «штрихованным» файлом регистров, поскольку для их обозначения в исходном коде ассемблера и документации Zilog используется символ апострофа). Это подчеркивает, что в любой момент времени доступен только один набор. Однако 8-битный аккумулятор A с его флаговым регистром F отделен от пар регистров «общего назначения» HL, DE и BC. Это достигается с помощью двух отдельных инструкций, используемых для замены их возможностей доступа: EX AF,AF'обменивается только пара регистров AF с AF', в то время как EXXинструкция заменяет три пары регистров общего назначения HL, DE и BC с их альтернативами HL', DE' и BC'. Таким образом, аккумулятор A может независимо взаимодействовать с любым из 8-битных регистров общего назначения в альтернативном (или первичном) файле регистров, или, если HL' содержит указатель на память, некоторые байты туда (DE' и BC' также могут передаваться). 8-битные данные между памятью и аккумулятором А).

Это может сбить с толку программистов, поскольку после выполнения EX AF,AF'или EXXто, что раньше было альтернативными (заполненными) регистрами, теперь становится основными регистрами, и наоборот. Единственный способ для программиста определить, какой набор(ы) находится в контексте (во время «играния в компьютер», внимательно изучая исходный текст ассемблера или, что еще хуже, изучая код с помощью отладчика) — это проследить, где каждая замена регистров производится в каждом пункт в программе. Очевидно, что если в этих сегментах кода выполняется много переходов и вызовов, может быстро стать трудно определить, какой файл регистров находится в контексте, если его тщательно не прокомментировать. Таким образом, желательно, чтобы команды обмена использовались непосредственно и в коротких дискретных сегментах кода. Набор команд Zilog Z280 включает в себя JAFинструкции JAR, которые переходят к адресу назначения, если альтернативные регистры находятся в контексте (таким образом, официально признавая эту сложность программирования).

Регистры

Как и в 8080, 8-битные регистры обычно объединены в пары для создания 16-битных версий. Регистры, совместимые с 8080 [36] :

Новые регистры, представленные в Z80:

Регистр обновления увеличивается Rкаждый раз, когда ЦП извлекает код операции (или префикс кода операции, который внутренне выполняется как 1-байтовая инструкция) и не имеет простой связи с выполнением программы. Иногда это использовалось для генерации псевдослучайных чисел в играх, а также в схемах защиты программного обеспечения. [ нужна цитация ] Он также использовался в качестве «аппаратного» счетчика в некоторых проектах; примером этого является ZX81 , который позволяет отслеживать позиции символов на экране телевизора, вызывая прерывание при циклическом перемещении (путем подключения INT к A6).

Регистр вектора прерывания , I, используется для прерываний режима 2, специфичных для Z80 (выбираемых инструкцией IM 2). Он предоставляет старший байт базового адреса для таблицы из 128 записей адресов служебных программ , которые выбираются с помощью индекса, отправляемого в ЦП во время цикла подтверждения прерывания ; этот индекс представляет собой просто младшую часть указателя на табличный косвенный адрес, указывающий на служебную процедуру. [22] Указатель идентифицирует конкретную периферийную микросхему или периферийную функцию или событие, при этом микросхемы обычно подключаются в так называемую шлейфовую цепь для разрешения приоритета. Как и регистр обновления, этот регистр иногда использовался творчески; в режимах прерываний 0 и 1 (или в системе, не использующей прерывания) его можно использовать просто как еще один 8-битный регистр данных.

Инструкции LD A,Rи LD A,Iвлияют на регистр флагов Z80, в отличие от всех остальных LD(загрузочных) инструкций. Флаги «Знак» (бит 7) и «Ноль» (бит 6) устанавливаются в соответствии с данными, загруженными из регистров источника обновления или прерывания. Для обеих инструкций флаг четности/переполнения (бит 2) устанавливается в соответствии с текущим состоянием триггера IFF2. [37]

Микроархитектура

Хотя Z80 обычно считается восьмибитным процессором, он имеет четырехбитный ALU , поэтому вычисления выполняются в два этапа для 8-битных величин и в четыре шага для 16-битных величин (таких как ADD HL,DE, ADC HL). ,ДЭ и др.). [38]

Язык ассемблера Z80

Датапойнт 2200 и Intel 8008

Первый язык ассемблера Intel 8008 был основан на очень простом (но систематическом) синтаксисе, унаследованном от конструкции Datapoint 2200. Этот исходный синтаксис позже был преобразован в новую, несколько более традиционную форму языка ассемблера для того же исходного чипа 8008. Примерно в то же время новый язык ассемблера был также расширен для включения дополнительных режимов адресации в более совершенном чипе Intel 8080 (8008 и 8080 использовали одно языковое подмножество, но не были двоично совместимыми ; однако 8008 был двоично совместим с Datapoint 2200).

В этом процессе мнемоника LLOAD была заменена различными сокращениями слов LOAD , STORE и MOVE , смешанными с другими символическими буквами. Мнемоническая буква Mдля памяти (на которую ссылается HL) была извлечена из мнемоники инструкций и стала синтаксически автономным операндом , в то время как регистры и комбинации регистров стали обозначаться очень непоследовательно; либо с помощью сокращенных операндов (MVI D, LXI H и т. д.), внутри самой мнемоники инструкции (LDA, LHLD и т. д.), либо и тем, и другим одновременно (LDAX B, STAX D и т. д.).

Иллюстрация четырех синтаксисов с использованием образцов эквивалентных или (для 8086) очень похожих инструкций загрузки и сохранения. [39] Синтаксис Z80 использует круглые скобки вокруг выражения, чтобы указать, что значение должно использоваться в качестве адреса памяти (как указано ниже), тогда как синтаксис 8086 для этой цели использует квадратные скобки вместо обычных круглых скобок. И Z80, и 8086 используют знак +, чтобы указать, что константа добавляется в базовый регистр для формирования адреса. Обратите внимание, что 8086 не является полной версией Z80. BX — единственная пара регистров 8086, которую можно использовать в качестве указателя.

Новый синтаксис

Поскольку Intel заявила об авторских правах на свою мнемонику сборки, [40] для Z80 пришлось разработать новый синтаксис сборки. На этот раз был использован более системный подход:

Эти принципы упростили поиск названий и форм для всех новых инструкций Z80, а также ортогонализаций старых, таких как LD BC,1234.

Помимо различий в именах и несмотря на определенное несоответствие в базовой структуре регистров, синтаксисы Z80 и 8086 практически изоморфны для большой части инструкций. Между языками ассемблера 8080 и 8086 существуют лишь весьма поверхностные сходства (например, слово MOV или буква X для расширенного регистра), хотя программы 8080 могут быть переведены на язык ассемблера 8086 с помощью программ-переводчиков . [42] [43]

Набор инструкций и кодировка

Z80 использует 252 из доступных 256 кодов в виде однобайтовых кодов операций («корневая инструкция», большая часть которой унаследована от 8080); четыре оставшихся кода широко используются в качестве префиксов кодов операций: [44] CB и ED включают дополнительные инструкции, а DD или FD выбирают IX+d или IY+d соответственно (в некоторых случаях без смещения d) вместо HL. Эта схема дает Z80 большое количество перестановок инструкций и регистров; Zilog разделяет их на 158 различных «типов инструкций», 78 из которых такие же, как у Intel 8080 [44] (что позволяет работать со всеми программами 8080 на Z80). Документация Zilog [45] дополнительно группирует инструкции по следующим категориям (большинство из 8080, другие совершенно новые, такие как блочные и битовые инструкции, а также другие инструкции 8080 с более универсальными режимами адресации, такими как 16-битная загрузка, ввод-вывод, вращается/смещается и относительные прыжки):

В оригинальном Z80 нет явных инструкций умножения, [46] хотя регистры A и HL можно умножать на степени двойки с помощью инструкций ADD A,A и ADD HL,HL (аналогично также IX и IY). Инструкции сдвига также могут умножать или делить на степени двойки.

Различные размеры и варианты дополнений, сдвигов и поворотов несколько по-разному влияют на флаги, поскольку большинство свойств изменения флагов 8080 были скопированы. Однако бит P флага четности 8080 (бит 2) в Z80 называется P/V (четность/переполнение), поскольку он служит дополнительной цели в качестве индикатора переполнения двоичного кода, функция, отсутствующая в 8080. Арифметические инструкции на Z80 установил его для обозначения переполнения, а не четности, в то время как побитовые инструкции по-прежнему используют его в качестве флага четности. (Это приводит к тонкой несовместимости Z80 с кодом, написанным для 8080, поскольку Z80 иногда указывает на знаковое переполнение там, где 8080 указывает на четность, что может привести к сбою логики некоторого практического программного обеспечения 8080 на Z80. [n] ) . новый флаг переполнения используется для всех новых 16-битных операций, специфичных для Z80 ( ADC, SBC), а также для 8-битных арифметических операций, в то время как 16-битные операции, унаследованные от 8080 ( ADD, INC, DEC), не влияют на него. Кроме того, бит 1 регистра флагов (запасной бит в 8080) используется в качестве флага N, который указывает, была ли последняя выполненная арифметическая инструкция вычитанием или сложением. Версия инструкции Z80 DAA(десятичный корректирующий аккумулятор для арифметики BCD) проверяет флаг N и ведет себя соответствующим образом, поэтому (гипотетическое) вычитание, за которым следует позднее, DAAдаст другой результат на старом 8080, чем на Z80. Однако на процессоре 8080 это, скорее всего, будет ошибочный код, поскольку DAAдобавление было определено только на этом процессоре.

В Z80 есть шесть новых LDинструкций, которые могут загружать пары регистров DE, BC и SP из памяти, а также загружать память из этих трех пар регистров — в отличие от 8080. [39] Как и в 8080, инструкции загрузки не влияют на флаги ( за исключением нагрузок регистров специального назначения I и R). Результатом обычного кодирования (обычного для 8080) является то, что каждый из 8-битных регистров может быть загружен сам по себе (например, LD A,A). Это фактически файл NOP.

Новые команды передачи блоков могут перемещать до 64 килобайт из памяти в память или между памятью и периферийными портами ввода-вывода. Инструкции блока LDIRи LDDR( загрузка , приращение / уменьшение , повторение ) используют HL для указания адреса источника , DE для адреса назначения и BC в качестве счетчика байтов . Байты копируются из источника в пункт назначения, указатели увеличиваются или уменьшаются, а счетчик байтов уменьшается до тех пор, пока BC не достигнет нуля. Неповторяющиеся версии LDIперемещают LDDодин байт и увеличивают указатели и счетчик байтов, который, если он становится нулевым, сбрасывает флаг P/V. Соответствующие инструкции обмена памятью и вводом/выводом INIR, INDR, OTIR, OTDR, INI, IND, OUTIи OUTDработают аналогично, за исключением того, что в качестве счетчика байтов используется B, а не BC. [47] [48] Z80 может вводить и выводить любой регистр в порт ввода-вывода, используя регистр C для обозначения порта. (8080 выполняет ввод-вывод только через аккумулятор A, используя прямой адрес порта, указанный в инструкции; для использования переменного адреса порта 8080 требуется метод самомодифицирующегося кода.)

Последняя группа инструкций блока выполняет CPоперацию сравнения между байтом (HL) и аккумулятором A. Пара регистров DE не используется. Повторяющиеся версии CPIRзавершаются CPDRтолько в том случае, если BC становится равным нулю или найдено совпадение. HL остается указывающим на байт после ( CPIR) или до ( CPDR) соответствующего байта. Если совпадение не найдено, флаг Z сбрасывается. Есть неповторяющиеся версии CPIи CPD.

В отличие от 8080, Z80 может переходить по относительному адресу ( JRвместо JP), используя 8-битное смещение со знаком. Для этих новых двухбайтовых JRинструкций можно проверять только флаги нуля и переноса. (Все переходы и вызовы 8080, условные или нет, представляют собой трехбайтовые инструкции.) Двухбайтовая инструкция, предназначенная для выполнения программных циклов, также является новой для Z80: DJNZ( d decrement jump if n on- zero ) принимает цифру 8 со знаком. -битное смещение как непосредственный операнд. Регистр B уменьшается, и если результат ненулевой, то выполнение программы переходит относительно ПК; флаги остаются неизменными. Для выполнения эквивалентного цикла на 8080 требуются отдельные DECинструкции условного перехода (на двухбайтовый абсолютный адрес) (всего четыре байта) и DECизменения регистра флагов.

Инструкции индексного регистра (IX/IY, часто сокращенно XY) могут быть полезны для доступа к данным, организованным в фиксированные гетерогенные структуры (например, записи ) или с фиксированными смещениями относительно переменного базового адреса (как в рекурсивных кадрах стека ), а также могут сократить объем кода. размер за счет устранения необходимости использования нескольких коротких инструкций с использованием неиндексированных регистров. Однако, хотя в некоторых контекстах они могут сэкономить скорость по сравнению с длинными/сложными «эквивалентными» последовательностями более простых операций, они требуют много дополнительного времени процессора (например, 19 T-состояний для доступа к одной индексированной ячейке памяти по сравнению с всего лишь несколькими 11, чтобы получить доступ к той же памяти с помощью HL и INCуказать на следующую). Таким образом, для простого или линейного доступа к данным использование IX и IY обычно происходит медленнее и занимает больше памяти. Тем не менее, они могут быть полезны в случаях, когда все «основные» регистры заняты, устраняя необходимость сохранения/восстановления регистров. Их официально недокументированные 8-битные половины (см. ниже) могут быть особенно полезны в этом контексте, поскольку они подвергаются меньшему замедлению, чем их 16-битные родители. Точно так же инструкции для 16-битного сложения не особенно быстры (11 тактов) в исходном Z80 (на 1 такт медленнее, чем в 8080/8085); тем не менее, они примерно в два раза быстрее, чем выполнение тех же вычислений с использованием 8-битных операций, и, что не менее важно, они сокращают использование регистров. Программисты нередко «втыкали» различные байты смещения смещения (которые обычно вычислялись динамически) в индексированные инструкции; это пример самомодифицирующегося кода , который был обычной практикой практически на всех ранних 8-битных процессорах с неконвейерными исполнительными блоками.

Индексные регистры имеют параллельную инструкцию для JP (HL), то есть JP (XY). Это часто можно увидеть в стек-ориентированных языках, таких как Forth , которые в конце каждого слова Forth (атомарных подпрограмм, составляющих язык) должны безоговорочно возвращаться к своим процедурам интерпретатора потока. Обычно эта инструкция перехода появляется в приложении много сотен раз и для каждого появления использует JP (XY)вместо JP THREADсохранения байт и два Т-состояния. Это, естественно, делает индексный регистр недоступным для любого другого использования, иначе необходимость постоянной его перезагрузки сведет на нет его эффективность.

10-летняя новая конструкция Z180 с микрокодом изначально могла позволить себе большую «площадь кристалла», что позволяло немного более эффективно реализовать ( среди прочего, используя более широкий ALU ); то же самое можно сказать и о Z800 , Z280 и Z380 . Однако только после того, как в 2001 году был запущен полностью конвейерный eZ80 , эти инструкции, наконец, стали примерно настолько эффективными в цикле, насколько это технически возможно, т. е. благодаря кодированию Z80 в сочетании с возможностью выполнять 8-битное чтение или записывайте каждый такт. [ нужна цитата ]

Недокументированные инструкции

Индексные регистры IX и IY были задуманы как гибкие 16-битные указатели, расширяющие возможности манипулирования памятью, кадрами стека и структурами данных. Официально они считались только 16-битными. На самом деле они были реализованы как пара 8-битных регистров [49] так же, как и регистр HL, который доступен либо как 16-битный, либо отдельно как регистры верхнего и нижнего уровня. Двоичные коды операций (машинный язык) были идентичны, но им предшествовал новый префикс кода операции. [50] Zilog опубликовал коды операций и соответствующие мнемоники для предполагаемых функций, но не задокументировал тот факт, что каждый код операции, который позволял манипулировать регистрами H и L, был одинаково действителен для 8-битных частей регистров IX и IY. Например, код операции 26h, за которым следует непосредственное значение байта, (LD H,n)загрузит это значение в регистр H. Если предшествовать этой двухбайтовой инструкции префиксу кода операции регистра IX, DD, вместо этого старшие 8 бит регистра IX будут загружены тем же значением. Заметным исключением из этого правила могут быть инструкции, аналогичные LD H,(IX+d)которым в одной инструкции используются регистры HL и IX или IY; [50] в этом случае префикс DD применяется только к части (IX+d) инструкции. Половинки регистров XY также могут содержать операнды для 8-битных арифметических, логических инструкций и инструкций сравнения, оставляя обычные 8-битные регистры для других целей. Недокументированная возможность увеличивать и уменьшать верхнюю половину индексного регистра позволила легко расширить диапазон обычных индексированных инструкций без необходимости прибегать к документированным ADD/SBC XY,DEили ADD/SBC XY,BC.

Есть также несколько других недокументированных инструкций. [51] Недокументированные или недопустимые коды операций не обнаруживаются Z80 и имеют различные эффекты, некоторые из которых полезны. Однако, поскольку они не являются частью формального определения набора команд, различные реализации Z80 не гарантируют (или не особенно вероятны) работать одинаково для каждого недокументированного кода операции.

Ошибки

Инструкция OTDRне соответствует документации Z80. Предполагается, что обе инструкции OTDRи OTIRоставляют флаг переноса (C) неизмененным. Инструкция OTIRработает правильно; однако во время выполнения инструкции OTDRфлаг переноса принимает результаты ложного сравнения между аккумулятором (A) и последним выводом инструкции OTDR. [52]

Пример кода

Следующий исходный код сборки Z80 предназначен для подпрограммы с именем, memcpyкоторая копирует блок байтов данных заданного размера из одного места в другое. Важно: код примера не обрабатывает случай, когда целевой блок перекрывает исходный; серьезное ограничение, но оно не имеет значения для некоторых приложений, например, когда источник находится в ПЗУ, а место назначения - в ОЗУ, поэтому они никогда не могут перекрываться. Блок данных копируется по одному байту за раз, а логика перемещения данных и цикла использует 16-битные операции. Он демонстрирует множество инструкций, но на практике он не будет закодирован таким образом, поскольку в Z80 есть одна инструкция, которая заменит всю эту подпрограмму: LDIR. Пример кода будет перемещать один байт каждые 46 T-состояний. Замена LDIRинструкции переместит каждый байт только в 21 Т-состояние. Обратите внимание, что собранный код двоично совместим с процессорами Intel 8080 и 8085.

Выполнение инструкций

Каждая инструкция выполняется за этапы, которые обычно называются машинными циклами (М-циклами), каждый из которых может занимать от трех до шести тактовых периодов (Т-состояний). [53] Каждый M-цикл примерно соответствует одному обращению к памяти или внутренней операции. Многие инструкции фактически заканчиваются во время M1 следующей инструкции, что известно как перекрытие выборки/выполнения .

Машинные циклы Z80 упорядочиваются внутренним автоматом , который строит каждый M-цикл из 3, 4, 5 или 6 T-состояний в зависимости от контекста. Это позволяет избежать громоздкой асинхронной логики и обеспечивает стабильное поведение сигналов управления в широком диапазоне тактовых частот. Это также означает, что необходимо использовать кристалл более высокой частоты, чем без такого разделения машинных циклов (примерно в 2–3 раза выше). Это не предполагает более жестких требований к времени доступа к памяти , поскольку тактовая частота с высоким разрешением позволяет более точно контролировать тайминги памяти и, следовательно, память может в большей степени быть активной параллельно с ЦП, что позволяет более эффективно использовать доступную пропускную способность памяти. [ нужна цитата ]

Одним из центральных примеров этого является то, что для выборки кода операции Z80 объединяет два полных тактовых цикла в период доступа к памяти (сигнал M1). В Z80 этот сигнал длится относительно большую часть типичного времени выполнения инструкции, чем в таких конструкциях, как 6800 , 6502 или аналогичных, где этот период обычно длится 30-40% тактового цикла. [ нужна ссылка ] Поскольку доступность микросхем памяти (т.е. время доступа около 450-250 нс в 1980-х годах [ нужна ссылка ] ) обычно определяла максимально быстрое время доступа, это означало, что такие конструкции были привязаны к значительно более длинному тактовому циклу (т.е. к более низкому внутреннему циклу). тактовая частота), чем у Z80.

Память в целом работала медленно по сравнению с подциклами конечных автоматов (тактовыми циклами), используемыми в современных микропроцессорах. Поэтому кратчайший машинный цикл, который можно было безопасно использовать во встроенных конструкциях, часто ограничивался временем доступа к памяти, а не максимальной частотой процессора (особенно в эпоху домашних компьютеров). Однако за последние десятилетия это соотношение постепенно изменилось, особенно в отношении SRAM ; Поэтому в последнее время стали гораздо более значимыми конструкции без кэша, однотактные, такие как eZ80.

Содержимое регистра обновления R отправляется в нижнюю половину адресной шины вместе с сигналом управления обновлением, пока ЦП декодирует и выполняет полученную инструкцию. Во время обновления содержимое регистра прерываний I отправляется в верхнюю половину адресной шины. [60]

Совместимая периферия

Zilog представил ряд периферийных компонентов для Z80, которые поддерживают систему обработки прерываний Z80 и адресное пространство ввода-вывода. К ним относятся канал счетчика/таймера (CTC), [61] SIO (последовательный ввод/вывод), DMA (прямой доступ к памяти), PIO (параллельный ввод/вывод) и DART (двойной асинхронный приемник-передатчик). По мере развития линейки продуктов были представлены маломощные, высокоскоростные и CMOS- версии этих чипов.

Подобно процессорам 8080, 8085 и 8086, но в отличие от таких процессоров, как Motorola 6800 и MOS Technology 6502, Z80 и 8080 имеют отдельную линию управления и адресное пространство для инструкций ввода-вывода. В то время как некоторые компьютеры на базе Z80, такие как Osborne 1, использовали устройства ввода-вывода с отображением памяти в стиле Motorola , обычно пространство ввода-вывода использовалось для адресации одного из многих периферийных чипов Zilog, совместимых с Z80. Во время синхронизации операций чтения ввода-вывода или записи ввода-вывода Z80 автоматически вставляет один цикл ожидания. [62] Чипы ввода-вывода Zilog поддерживали новый режим прерываний Z80 2, что упрощало обработку прерываний для большого количества периферийных устройств.

Официально Z80 был описан как поддерживающий 16-битную (64 КБ) адресацию памяти и 8-битную (256 портов) адресацию ввода-вывода. Все инструкции ввода-вывода фактически используют всю 16-битную адресную шину. OUT (C),reg и IN reg,(C) помещают содержимое всего 16-битного регистра BC на адресную шину; [52] OUT (n),A и IN A,(n) помещают содержимое регистра A в b8–b15 адресной шины, а n – в b0–b7 адресной шины. Разработчик может выбрать декодирование всей 16-битной адресной шины при операциях ввода-вывода, чтобы воспользоваться этой функцией, или использовать старшую половину адресной шины для выбора подфункций устройства ввода-вывода. Эта функция также использовалась для минимизации требований к аппаратному обеспечению декодирования, например, в Amstrad CPC / PCW и ZX81 .

Вторые источники и производные

Вторые источники

Компания Mostek, которая выпустила первый Z80 для Zilog, предложила его в качестве второго производителя как MK3880. SGS-Thomson (теперь STMicroelectronics ) также была вторым поставщиком со своим Z8400. Sharp и NEC разработали вторые источники для NMOS Z80 — LH0080 и μPD780C соответственно. LH0080 использовался в различных домашних и персональных компьютерах Sharp и других японских производителей, включая компьютеры Sony MSX и ряд компьютеров серии Sharp MZ . [63] Компания Sharp разработала LH0080A и LH0080B для работы на частотах 4 МГц и 6 МГц соответственно. [64] Sharp также разработала LH0083 [65], совместимую с Z80 DMA.

Toshiba выпустила версию CMOS TMPZ84C00, которая, как полагают [ кем? ] (но не проверено), что это та же конструкция, что и Zilog для своей собственной CMOS Z84C00. Также существовали чипы Z8400, Z80 производства GoldStar (ныне LG ) и серия BU18400 клонов Z80 (включая DMA, PIO, CTC, DART и SIO) в NMOS и CMOS производства ROHM Electronics . LH5080, [66], LH5081, [67] и LH5082, [68] представляют собой CMOS-версии Z80, PIO и CTC соответственно и производятся компанией Sharp.

В Восточной Германии производился нелицензионный клон Z80, известный как U880 . Он широко использовался в компьютерных системах Robotron и VEB Mikroelektronik Mühlhausen (таких как серия KC85 ), а также во многих самодельных компьютерных системах. В Румынии можно найти еще один нелицензионный клон под названием MMN80CPU , произведенный Microelectronica и используемый в домашних компьютерах, таких как TIM-S, HC, COBRA.

Кроме того, в Советском Союзе было создано несколько клонов Z80 , примечательным из которых является Т34БМ1, также называемый КР1858ВМ1 (параллельно советскому клону 8080 КР580ВМ80А ). Первая маркировка использовалась в предсерийной серии, а вторую пришлось использовать для более крупного производства. Однако из-за развала советской микроэлектроники в конце 1980-х годов Т34БМ1 стало намного больше, чем КР1858ВМ1. [ нужна цитата ]

Производные

Совместим с оригинальным Z80.
Несовместимо
Частично совместим
Больше не производится

Известные применения

Настольные компьютеры

Z80A использовался в качестве процессора в ряде игровых консолей, таких как ColecoVision .

В конце 1970-х и начале 1980-х годов Z80 использовался в большом количестве довольно анонимных бизнес-ориентированных машин с операционной системой CP/M — комбинации, которая доминировала на рынке в то время. [84] [85] Четыре хорошо известных примера бизнес-компьютеров Z80, работающих под управлением CP/M, — это Heathkit H89 , портативный Osborne 1 , серия Kaypro и Epson QX-10 . Менее известной была дорогая высококлассная модель Otrona Attache. [86] В некоторых системах использовалось многозадачное операционное программное обеспечение (например, MP/M или Micronix от Morrow ) для совместного использования одного процессора несколькими одновременно работающими пользователями .

Sinclair ZX Spectrum , в котором используется Z80 с тактовой частотой 3,5 МГц.

Было представлено несколько домашних компьютеров, которые использовали Z80 в качестве основного процессора или в качестве подключаемого модуля, обеспечивающего доступ к программному обеспечению, написанному для Z80. Примечательны серии TRS-80 , включая оригинальную модель (позже названную «Модель I»), Модель II , Модель III и Модель 4 , которые были оснащены Z80 в качестве основного процессора, а также некоторые (но не все) другие. Модели TRS-80, в которых Z80 использовался в качестве основного или дополнительного процессора. Другими известными машинами были DEC Rainbow 100 и Seequa Chameleon , обе из которых имели процессор Intel 8088 и Z80 и поддерживали либо 8-битные приложения CP/M-80, работающие на Z80, либо специальную MS-DOS. это не было полностью совместимо с приложениями DOS для ПК, работающими на 8088.

В 1981 году компания Multitech (позже ставшая Acer ) представила Microprofessor I , простую и недорогую систему обучения для микропроцессора Z80. В настоящее время он по-прежнему производится и продается компанией Flite Electronics International Limited в Саутгемптоне, Англия .

В 1984 году Toshiba представила Toshiba MSX HX-10 в Японии и Австралии.

В 1985 году Sharp представила Hotbit , а Gradiente представила Expert , которые до конца 1980-х годов стали доминирующими 8-битными домашними компьютерами в Бразилии .

Портативные и карманные компьютеры

Использование Z80 в более легких устройствах с батарейным питанием стало более распространенным с появлением CMOS-версий процессора. Это также вдохновило на разработку других процессоров на базе КМОП, таких как LH5801 [87] от Sharp. Sharp PC-1500 , карманный компьютер , программируемый на языке BASIC , был выпущен в 1981 году, за ним последовали улучшенный Sharp PC-1600 в 1986 году и Sharp PC-E220 в 1991 году. Более поздние модели персональных органайзеров Sharp Wizard также были основаны на Z80. . Ноутбуки , которые могли работать под управлением операционной системы CP/M, как и настольные машины, последовали за Epson PX-8 Женева в 1984 году, а в 1985 году - Epson PX-4 и Bondwell-2 . В то время как рынок ноутбуков в последующие годы перешел на более мощные процессоры Intel 8086 и операционную систему MS-DOS, все еще появлялись легкие системы на базе Z80 с более длительным временем автономной работы, такие как Cambridge Z88 в 1988 году и Amstrad NC100. в 1992 году. Z8S180 , производный от Z80, также нашел применение в одном из первых персональных цифровых помощников с перьевым управлениемAmstrad PenPad PDA600 в 1993 году. Гонконгская компания VTech выпустила линейку небольших портативных компьютеров под названием «Lasers» на базе Z80. [88] [89] Последними двумя были Laser PC5 [90] и PC6. [91] Cidco MailStation Mivo 100, впервые выпущенный в 1999 году, представлял собой автономное портативное устройство электронной почты с микроконтроллером на базе Z80. [92] Компания Texas Instruments выпустила линейку карманных органайзеров (завершившаяся в 2000 году) с использованием процессоров Toshiba, построенных на ядре Z80; Первым из них был TI PS-6200 [93] , и после длительного производства нескольких десятков моделей кульминацией стала серия PocketMate. [94]

Встраиваемые системы и бытовая электроника

АТС на базе Z80 . Z80 находится справа от чипа с рукописной белой этикеткой.

Zilog Z80 уже давно является популярным микропроцессором во встроенных системах и ядрах микроконтроллеров [36] , где он широко используется и сегодня. [26] [95] Z80 применяется в бытовой электронике , промышленной продукции и электронных музыкальных инструментах. Например, Z80 использовался в новаторском музыкальном синтезаторе Prophet-5 , [96], а также в первом MIDI-синтезаторе Prophet 600 . [97] Casio использовала Z80A в своей игровой консоли PV-1000 .

Большое количество аркадных видеоигр начала 1980-х годов, включая аркадную игру Pac-Man , содержат процессоры Z80.

Z80 использовался в консолях Sega Master System и Game Gear . Sega Genesis содержит Z80 с собственной 8 КБ ОЗУ, которая работает параллельно с основным процессором MC68000, имеет прямой доступ к звуковым чипам системы и портам ввода-вывода (контроллера), а также имеет коммутируемый путь данных к шина основной памяти 68000 (обеспечивающая доступ к основной оперативной памяти объемом 64 КБ, картриджу с программным обеспечением и всему видеочипу); Помимо обеспечения обратной совместимости с играми Master System, Z80 часто используется для управления и воспроизведения звука в программном обеспечении Genesis. [о]

Процессоры Z80 также использовались в новаторской и популярной серии графических калькуляторов TI-8x от Texas Instruments , начиная с 1990 года с TI-81 , который оснащен процессором Z80 с тактовой частотой 2 МГц. Большинство калькуляторов более высокого уровня в этой серии, начиная с TI-82 и TI-85 , тактируют свои процессоры Z80 на частоте 6 МГц или выше. (Некоторые модели с названиями TI-8x используют другие процессоры, такие как M68000, но подавляющее большинство основано на Z80. На них можно запускать собранные или скомпилированные пользовательские программы в форме кода машинного языка Z80. Серия TI-84 Plus , представленная в 2004 году, все еще находится в производстве по состоянию на 2023 год . Серия TI-84 Plus CE , представленная в 2015 году, использует процессор Zilog eZ80 на базе Z80 и также все еще находится в производстве по состоянию на 2024 год.

В конце 1980-х годов в серии советских стационарных телефонов под названием «АОН» был представлен Z80; Эти телефоны расширили набор функций стационарной линии с помощью идентификатора вызывающего абонента , различных мелодий звонка в зависимости от звонящего, быстрого набора и т. д. [98] Однако во второй половине 1990-х годов производители этих телефонов перешли на 8051-совместимые микроконтроллеры, чтобы снизить энергопотребление и предотвратить перегрев компактных настенных адаптеров питания.

Прекращение производства

15 апреля 2024 года Zilog объявила о прекращении производства процессора Z80, заказы принимаются до 14 июня 2024 года. Анонс включал 13 вариантов процессора Z80, многие из которых представляют собой варианты чипа DIP40 . Zilog продолжит производство обновленной версии процессора eZ80 . [99]

Смотрите также

Сноски

  1. ^ Только в CMOS, National не выпустила версию NMOS, согласно устной истории с Федерико Фаггином.
  2. ^ Варианты CMOS выросли до 20 МГц, а двоично-совместимые производные - до 50 МГц.
  3. ^ Обратная совместимость с Intel 8080.
  4. ^ Zilog включил в компоновку чипа несколько «ловушек», чтобы попытаться задержать это копирование. По словам Фаггина, инженер NEC позже рассказал ему, что им потребовалось несколько месяцев работы, прежде чем они смогли заставить свой μPD780 работать.
  5. ^ Это была довольно распространенная особенность конструкций миникомпьютеров того времени, и она нашла свое отражение во многих ранних микропроцессорах.
  6. ^ Zilog производила Z80, а также большую часть другой своей продукции в течение многих лет, пока не продала свои производственные предприятия и не стала компанией « без басен », которой является сегодня.
  7. ^ Хотя 8080 имел 16-битные инструкции сложения и 16-битные инструкции увеличения и уменьшения , у него не было явного 16-битного вычитания и флага переполнения. Z80 дополнил это инструкциями ADC HL,rr и SBC HL,rr, которые соответственно устанавливают новый флаг переполнения. (Совместимый с 8080 ADD HL,rr этого не делает.)
  8. ^ В частности, для одновременной обработки 32-битных мантисс двух операндов в 40-битном формате с плавающей запятой, используемом в домашних компьютерах Sinclair . Они также использовались аналогичным образом в некоторых более ранних, но менее известных компьютерах на базе Z80, таких как шведские ABC 80 и ABC 800 .
  9. ^ Поскольку это обновление не требует передачи каких-либо данных, а просто выводит последовательные адреса строк, оно занимает менее 1,5 T-состояний. Выделенный сигнал M1 ( первый машинный цикл ) в Z80 может использоваться для того, чтобы предоставить микросхемам памяти такое же время доступа для выборки команд, как и для доступа к данным, т.е. почти два полных Т-состояния из цикла выборки 4Т (а также как вне цикла чтения данных 3T ). Z80 мог использовать память с тем же диапазоном времени доступа, что и 8080 (или 8086), на той же тактовой частоте. Этот длинный сигнал M1 (относительно тактовой частоты) также означал, что Z80 мог использовать внутреннюю частоту примерно в 4–5 раз большую, чем 6800, 6502 или аналогичные, используя тот же тип памяти.
  10. ^ В отличие от исходной версии nMOS, в которой использовались динамические защелки и которую нельзя было остановить более чем на несколько тысяч тактов.
  11. ^ Родственное семейство 8086 также унаследовало этот дизайн регистра.
  12. ^ Этот указатель переменной HL был фактически единственным способом доступа к памяти (для данных) в Datapoint 2200, а, следовательно, и в Intel 8008. Для доступа к данным нельзя было использовать прямые адреса.
  13. ^ Инструкции перехода ( JP), которые загружают счетчик программы новым адресом инструкции, сами по себе не обращаются к памяти. Абсолютная и относительная формы перехода отражают это, опуская круглые скобки в своих операндах. Инструкции перехода на основе регистров, такие как " JP (HL)", включают круглые скобки, что является очевидным отклонением от этого соглашения. [41]
  14. ^ Например, на 8080 программист может проверить четность байта ADD, прибавляя к нему ноль, SUBизвлекая из него ноль или ORвводя или XORзаписывая его с нулем; все это операции с одной командой одинаковой скорости и размера как на 8080, так и на Z80. Если программист выбрал проверку четности путем ORввода или XORизвлечения нуля, то Z80 выполнит программу правильно, но если программист решил проверить четность путем ADDввода или SUBизвлечения нуля, то Z80 всегда будет сбрасывать флаг P/V. в ноль (поскольку добавление или вычитание нуля никогда не приводит к переполнению или опустошению) вместо назначения P для правильного указания четности байта (как это было бы в 8080 или 8085), и программа может потерпеть неудачу. Ничто в руководствах Intel по программированию или другой документации для 8080 не препятствует использованию арифметических инструкций или не предписывает использование логических инструкций для проверки четности, поэтому нет никаких оснований ожидать, что программист 8080, применяющий рекомендуемую хорошую практику программирования, выберет один из способы, которые будут работать на Z80, вместо одного из способов, которые не будут работать.
  15. ^ Это распространенное, но необязательное и не ограничивающее использование приводит к частому, но неверному описанию Z80 в Genesis как «звукового процессора».

Рекомендации

  1. ^ abc Zilog (2005). Руководство пользователя процессора семейства Z80 (PDF) . Зилог. п. 5. Архивировано (PDF) из оригинала 19 июня 2009 г. Проверено 18 июля 2009 г.
  2. ^ аб Фаггин, Шима и Унгерманн, 2007.
  3. ^ аб Фаггин, Шима и Унгерманн 2007, с. 1.
  4. ^ аб Фаггин, Шима и Унгерманн 2007, с. 2.
  5. ^ abc Фаггин, Шима и Унгерманн 2007, с. 3.
  6. ^ abc Фаггин, Шима и Унгерманн 2007, с. 4.
  7. ^ Фаггин, Шима и Унгерманн 2007, с. 8.
  8. ^ аб Фаггин, Шима и Унгерманн 2007, с. 5.
  9. ^ Фаггин, Шима и Унгерманн 2007, с. 19.
  10. ^ Фаггин, Шима и Унгерманн 2007, с. 6.
  11. ^ Фаггин, Шима и Унгерманн 2007, с. 7.
  12. ^ Фаггин, Шима и Унгерманн 2007, с. 17.
  13. ^ «Контроллер прямого доступа к памяти Z80® DMA» (PDF) . Архивировано (PDF) оригинала 5 февраля 2024 г. Проверено 8 января 2024 г.
  14. ^ Андерсон (1994), с. 51.
  15. ^ Фаггин, Шима и Унгерманн 2007, с. 13.
  16. ^ Фаггин, Шима и Унгерманн 2007, с. 9.
  17. ^ Андерсон (1994), с. 57.
  18. ^ Аб Брок, Джеральд В. (2003). Вторая информационная революция . Издательство Гарвардского университета. ISBN 978-0-674-01178-6.
  19. ^ «История 8-битной версии: далекое путешествие за короткое время». Инфомир . Том. 4, нет. 47. Пало-Альто, Калифорния: Popular Computing Inc., 29 ноября 1982 г., стр. 58–60. ISSN  0199-6649. Архивировано из оригинала 5 января 2024 года.
  20. ^ Фаггин, Федерико; Сима, Масатоши ; Унгерманн, Ральф (19 августа 1976 г.). «Набор микросхем Z-80 знаменует третье поколение микропроцессоров» (PDF) . Электроника . Том. 49, нет. 17. Нью-Йорк: МакГроу-Хилл . стр. 89–93. Архивировано (PDF) из оригинала 31 января 2023 г.
  21. ^ Чиарсия (1981), стр. 31, 32.
  22. ^ Аб Чен, Вай-Кай (2002). Справочник по схемам и фильтрам . ЦРК Пресс . п. 1943. ISBN 978-0-8493-0912-0. обработка прерывания начинается в соответствии с методом прерывания, предусмотренным инструкцией IM  i , i  = 0, 1 или 2. Если i  = 1, для прямого метода в ПК загружается 0038H. Если i  = 0, для векторного метода прерывающее устройство имеет возможность разместить код операции на один байт. Если i  = 2, для косвенного векторного метода прерывающее устройство должно затем поместить байт. Затем Z80 использует этот байт, где с помощью этого байта может быть выбран один из 128 векторов прерываний.
  23. ^ Матур (1989). Введение в микропроцессоры . Издательская компания Тата МакГроу-Хилл. п. 111. ИСБН 978-0-07-460222-5. Архитектура регистров Z80 более инновационная, чем у 8085.
  24. ^ Брюэр, Тони. «Специальный сброс Z80». Архивировано из оригинала 27 апреля 2024 года . Проверено 27 апреля 2024 г.
  25. Адриан, Андре (4 июня 2011 г.). «Z80, 8-битный процессор чисел». Архивировано из оригинала 26 ноября 2023 года.
  26. ↑ Аб Балч, Марк (18 июня 2003 г.). «Основы цифровых технологий». Полное цифровое проектирование: полное руководство по цифровой электронике и архитектуре компьютерных систем . Профессиональная инженерия. Нью-Йорк, Нью-Йорк : McGraw-Hill Professional . п. 122. ИСБН 0-07-140927-0.
  27. ^ Отчет Сейболда о профессиональных компьютерах . Публикации Сейболда. 1983. В 8-битном мире двумя наиболее популярными микрокомпьютерами являются компьютерные чипы Z80 и 6502.
  28. Адриан, Андре (4 июня 2011 г.). «Z80, 8-битный процессор чисел: 32-битное (длинное) дополнение Z80». Архивировано из оригинала 26 ноября 2023 года.
  29. ^ Популярные вычисления . МакГроу-Хилл . 1983. с. 15.
  30. Маркофф, Джон (18 октября 1982 г.). «Быстрый Z80 от Zilog обеспечивает производительность от 8 до 16 бит». Инфомир . Том. 4, нет. 41. Пало-Альто, Калифорния: Popular Computing, Inc. 1. ISSN  0199-6649. Архивировано из оригинала 5 января 2024 года.
  31. ^ Электронный дизайн . Хейден. 1988. с. 142. Помимо поддержки всего набора команд Z80, Z180
  32. ^ Ганссл, Джек Г. (1992). «Z80 жив!». Архивировано из оригинала 20 декабря 2023 года. Дизайнеры выбрали архитектуру, совместимую с Z80, что дает пользователям Z80 возможность обновления, полностью совместимого с программным обеспечением. Процессор 64180 выполняет каждую инструкцию Z80 точно так же, как это делает Z80.
  33. ^ Шириф, Кен. «Вплоть до кремния: как реализованы регистры Z80». Архивировано из оригинала 5 ноября 2023 года.
  34. ^ Килобод . 1001001. 1977. с. 22.
  35. ^ Закс, Родней (1982). Программирование Z80 (3-е изд.). СИБЕКС. п. 62. ИСБН 978-0-89588-069-7.
  36. ^ аб Хит, Стив (2003). Проектирование встраиваемых систем . Оксфорд: Ньюнс. п. 21. ISBN 978-0-7506-5546-0.
  37. ^ Райсон, Марк. Янг, Шон (ред.). «Привязанность к флагу Z80». z80.info . Томас Шеррер. Архивировано из оригинала 23 декабря 2023 года . Проверено 14 июня 2016 г.
  38. ^ Ширрифф, Кен. «Z-80 имеет 4-битное АЛУ. Вот как оно работает». Архивировано из оригинала 9 сентября 2013 года . Проверено 16 ноября 2021 г.
  39. ^ аб Дурда IV, Фрэнк (2012). «Набор инструкций 8080/Z80». Архивировано из оригинала 11 февраля 2016 года . Проверено 22 июля 2009 г.
  40. ^ «8080A/8-битный N-канальный микропроцессор» . Каталог данных компонентов Intel, 1978 год . Санта-Клара, Калифорния: Корпорация Intel. 1978. стр. 11–17. Все мнемоники принадлежат корпорации Intel Corporation, 1977 г.
  41. ^ «Руководство пользователя по перемещению макроассемблера Z80» (PDF) . п. БИ 2. Архивировано из оригинала (PDF) 20 июля 2011 года . Проверено 4 июня 2009 г.
  42. ^ Скэнлон, Лео Дж. (1988). Язык ассемблера 8086/8088/80286. Книги Брейди. п. 12. ISBN 978-0-13-246919-7. [...] 8086 программно совместим с 8080 на уровне ассемблера. [...]
  43. ^ Нельсон, Росс П. (январь 1989 г.) [1988]. Книга 80386: Руководство программиста на ассемблере для 80386 . Серия программ Microsoft (1-е изд.). Майкрософт Пресс . п. 2. ISBN 978-1-55615-138-5. [...] Программа-переводчик Intel могла конвертировать программы на ассемблере 8080 в программы на ассемблере 8086 [...]
  44. ^ ab «Введение в процессор Z80». Зилог . 1995. Архивировано из оригинала 20 декабря 2023 года. Он имеет язык с 252 корневыми инструкциями и с зарезервированными 4 байтами в качестве префиксов обеспечивает доступ к дополнительным 308 инструкциям.
  45. ^ «Набор инструкций Z80-CPU» (PDF) . Зилог . 1976. с. 19. Архивировано из оригинала 5 ноября 2023 года . Проверено 20 июля 2021 г.
  46. ^ Санчес, Хулио; Кантон, Мария П. (2008). Программные решения для инженеров и ученых . Тейлор и Фрэнсис. п. 65. ИСБН 978-1-4200-4302-0. 8-битные микропроцессоры, предшествовавшие семейству 80x86 (такие как Intel 8080, Zilog Z80 и Motorola), не поддерживали умножение.
  47. ^ Чиарсия (1981), с. 86.
  48. ^ ХЕЙС, ДЖОН П. (1978). Компьютерная архитектура и организация . п. 423. ИСБН 0-07-027363-4.
  49. ^ Фрелих, Роберт А. (1984). Каталог и каталог бесплатного программного обеспечения . Издательство Корона. п. 133. ИСБН 978-0-517-55448-7. Недокументированные коды Z80 допускают 8-битные операции с регистрами IX и IY.
  50. ^ ab Bot, Джакко Дж.Т. «Недокументированные инструкции для Z80». Дом процессора Z80 . Архивировано из оригинала 23 декабря 2023 года. Если код операции работает с регистрами HL, H или L, то, если этому коду операции предшествует #DD (или #FD), он работает с IX, IXH или IXL (или IY, IYH, IYL), за некоторыми исключениями. Исключением являются такие инструкции, как LD H,IXH и LD L,IYH.
  51. ^ Робин Никсон. Расширенное руководство пользователя Amstrad Notepad , Робин Никсон, 1993, ISBN 1-85058-515-6 , страницы 219–223. 
  52. ^ аб Янг, Шон (октябрь 1998 г.). «Недокументированные функции Z80 (в поведении программного обеспечения)». Архивировано из оригинала 25 декабря 2023 года. Инструкции ввода-вывода используют всю адресную шину, а не только младшие 8 бит. Фактически в системе Z80 может быть 65536 портов ввода-вывода (это используется в Spectrum). IN r,(C), OUT (C),r и все инструкции блока ввода-вывода помещают весь BC на адресную шину. IN A,(n) и OUT (n),A помещают A*256+n на адресную шину.
  53. ^ «Время». Руководство пользователя процессора семейства Z80 (PDF) . Зилог . 2016. с. 7. УМ008011-0816. Архивировано (PDF) из оригинала 26 декабря 2023 г. Проверено 5 января 2024 г.
  54. ^ Чиарсия (1981), с. 65.
  55. ^ Закс, Родней (1989). Программирование Z80. Сайбекс. п. 200. ИСБН 978-0-89588-069-7. ADD A, n Добавить аккумулятор с непосредственными данными n. ПАМЯТЬ Тайминг: 2 млн циклов; 7 Т-состояний.
  56. ^ Чиарсия (1981), с. 63.
  57. ^ Чиарсия (1981), с. 77.
  58. ^ Чиарсия (1981), с. 36.
  59. ^ Чиарсия (1981), с. 58.
  60. ^ «Регистры специального назначения». Руководство пользователя процессора семейства Z80 (PDF) . Зилог . 2016. с. 3. УМ008011-0816. Архивировано (PDF) из оригинала 26 декабря 2023 г. Проверено 5 января 2024 г.
  61. ^ «Руководство пользователя периферийных устройств ЦП семейства Z80» (PDF) . Технический паспорт ЭМИРА . ЗиЛОГ. 2001. Архивировано из оригинала (PDF) 2 мая 2014 года . Проверено 30 апреля 2014 г.
  62. ^ "Справочник по полупроводникам Sharp 1986 года" (PDF) . п. 218. Архивировано (PDF) из оригинала 1 января 2024 года . Проверено 1 января 2024 г.
  63. ^ "Обзор серии SHARP MZ" . SharpMZ.org . Архивировано из оригинала 27 марта 2008 года . Проверено 28 июля 2011 г. Большинство MZ используют 8-битный процессор LH0080/Z80 [...]
  64. ^ "LH0080/LH0080A/LH0080B" . Справочник полупроводников 1986 г. (PDF) . Корпорация Шарп . 1986. с. 210. Архивировано (PDF) из оригинала 1 января 2024 года . Проверено 1 января 2024 г.
  65. ^ "Справочник по полупроводникам Sharp 1986 года" (PDF) . стр. 255–269. Архивировано (PDF) из оригинала 20 января 2024 г. Проверено 13 января 2024 г.
  66. ^ "Справочник по полупроводникам Sharp 1986 года" (PDF) . стр. 296–301. Архивировано (PDF) из оригинала 20 января 2024 г. Проверено 20 января 2024 г.
  67. ^ "Справочник по полупроводникам Sharp 1986 года" (PDF) . стр. 302–306. Архивировано (PDF) из оригинала 28 января 2024 г. Проверено 28 января 2024 г.
  68. ^ "Справочник по полупроводникам Sharp 1986 года" (PDF) . стр. 307–311. Архивировано (PDF) из оригинала 28 января 2024 г. Проверено 28 января 2024 г.
  69. ^ Ганссл, Джек Г. (1992). «Z80 жив!». Архивировано из оригинала 1 мая 2009 года . Проверено 17 июля 2009 г. 64180 — это ядро ​​Z80, поставляемое Hitachi, с многочисленными встроенными «дополнениями». Версия Zilog — Z180, которая по сути является той же деталью.
  70. ^ Ганссл, Джек Г. (1992). «Z80 жив!». Архивировано из оригинала 1 мая 2009 года . Проверено 17 июля 2009 г. И Toshiba, и Zilog продают модели 84013 и 84015, которые представляют собой процессоры Z80 с интегрированными на плате обычными периферийными устройствами Z80.
  71. ^ Гранвилл, Фрэн (1 августа 1996 г.). «EDN Access — 08.01.96 Z80 исполняется 20 лет». ЭДН . Архивировано из оригинала 7 августа 2023 года . Проверено 7 августа 2023 г.
  72. ^ «Семейство продуктов EZ80 ACCLAIM» . Зилог. Архивировано из оригинала 20 декабря 2008 года.
  73. ^ Электронный бизнес Азии . Канерс Азия Лимитед. 1997. с. 5. KL5C80A12, KL5C80A16 и KL5C8400 от Kawasaki — это высокоскоростные 8-битные микроконтроллеры и процессоры. Код их процессора KC80 совместим с Z80 от Zilog на двоичном уровне. KC80 выполняет инструкции примерно в четыре раза быстрее, чем Z80 при той же тактовой частоте.
  74. ^ «Характеристики оборудования». S1mp3.org . 19 октября 2005 г. Архивировано из оригинала 8 декабря 2005 г.
  75. ^ «Обзор :: Процессор T80 :: OpenCores» . opencores.org . Архивировано из оригинала 1 апреля 2024 года . Проверено 1 июля 2024 г.
  76. ^ Рада, полковник (март 1981 г.). «NSC800 — семейство маломощных высокопроизводительных микропроцессоров». Электроника и энергетика . 27 (3). Инженерно-технологический институт : 222. doi : 10.1049/ep.1981.0107. Архивировано из оригинала 16 октября 2021 года . Проверено 1 июня 2021 г.
  77. ^ «TST-4043: Шифратор данных с HF-модемом и FEC» . Крипто-музей . 27 февраля 2018 г. Архивировано из оригинала 5 ноября 2023 г.
  78. ^ «Высокопроизводительный маломощный КМОП-микропроцессор NSC800» (PDF) . Национальный полупроводник . Июнь 1992 г. Архивировано (PDF) из оригинала 19 ноября 2023 г.
  79. ^ «MCS-85, Zilog Z80 и платы расширения National NSC800» . ЦП Хижина . 15 февраля 2015 г. Архивировано из оригинала 30 сентября 2023 г.
  80. ^ «Раздел 6 Тенденции рынка MOS MPU, MCU и периферийных устройств» (PDF) . Корпорация по разработке интегральных схем. п. 16. Архивировано из оригинала (PDF) 14 июня 2011 года.
  81. ^ Аксельсон, Январь (2003). Встроенный Ethernet и Интернет в комплекте. Исследование Лейквью. п. 93. ИСБН 978-1-931448-00-0. Микропроцессор Rabbit 3000 от Rabbit Semiconductor, который является значительно улучшенной и расширенной производной почтенного микропроцессора Z80 от ZiLOG, Inc.
  82. ^ Хайдер, Камаль; Перрин, Боб (2004). Проектирование встраиваемых систем с использованием микропроцессора Rabbit 3000. Ньюнес. п. 32. ISBN 978-0-7506-7872-8. Части Rabbit тесно связаны с архитектурой Zilog Z180, хотя они не двоично совместимы с частями Zilog.
  83. Круз, Эдуардо (23 ноября 2014 г.). «ЦП Capcom Kabuki – Введение». Аркадный хакер . Архивировано из оригинала 5 ноября 2023 года.
  84. ^ Хольц, Герман (1985). Компьютерные рабочие места . Чепмен и Холл. п. 223. ИСБН 978-0-412-00491-9. и CP/M продолжали доминировать в мире 8-битных микрокомпьютеров.
  85. Дворжак, Джон К. (10 мая 1982 г.). «После CP/M объектно-ориентированные операционные системы могут возглавить эту область». Инфомир . Том. 4, нет. 18. Медиа-группа InfoWorld. п. 20. ISSN  0199-6649. Архивировано из оригинала 6 января 2024 года. Идея универсальной операционной системы все еще находится в зачаточном состоянии. Во многих отношениях все началось с CP/M и смеси ранних компьютеров 8080 и Z80.
  86. ^ Стенгель, Стивен. «Отрона Атташе». Музей старых компьютеров Стива . Архивировано из оригинала 27 декабря 2023 года . Проверено 5 марта 2019 г.
  87. ^ «Техническое справочное руководство Sharp PC-1500» (PDF) . Архивировано (PDF) из оригинала 5 ноября 2023 г.
  88. ^ "Ноутбук бедняка" . Гугл Книги . Популярная механика, апрель 1991 г., стр. 120. Апрель 1991 г. Проверено 11 апреля 2018 г.
  89. ^ «Лазер PC4». Музей старого компьютера . Архивировано из оригинала 5 ноября 2023 года . Проверено 11 апреля 2018 г.
  90. ^ «Лазер PC5 от VTech». larwe.com . Архивировано из оригинала 5 ноября 2023 года . Проверено 11 апреля 2018 г.
  91. ^ «Лазер PC6». Perfect Solutions точка com . Идеальные решения. Архивировано из оригинала 21 мая 2018 года . Проверено 11 апреля 2018 г.
  92. ^ «Разработка почтовой станции». Файбертех.нет . Архивировано из оригинала 6 января 2024 года . Проверено 18 апреля 2021 г.
  93. ^ Вернер, Йорг. «Техасские инструменты PS-6200». Музей датаматических калькуляторов . Архивировано из оригинала 5 ноября 2023 года . Проверено 18 июня 2019 г.
  94. ^ Вернер, Йорг. «Техасские инструменты PocketMate 100». Музей датаматических калькуляторов . Архивировано из оригинала 5 ноября 2023 года . Проверено 18 июня 2019 г.
  95. ^ Ян Р. Синклер (2000). Практический справочник по электронике (5-е изд.). Оксфорд, Англетер: Ньюнес. п. 204. ИСБН 978-0-7506-4585-0. LCCN  00502236. OCLC  42701044.
  96. ^ «Винтажные синтезаторы Гордона Рида - последовательные схемы Prophet 5 и Prophet 10» . gordonreid.co.uk . 1999. Архивировано из оригинала 5 ноября 2023 года.
  97. Фабио, Адам (19 марта 2014 г.). «Prophet 600: классический синтезатор получает обновление процессора». Архивировано из оригинала 5 ноября 2023 года.
  98. ^ «Делаем демо для старого телефона — AONDEMO». хабр.com . 29 января 2020 г. Архивировано из оригинала 5 ноября 2023 г.
  99. Эдвардс, Бендж (22 апреля 2024 г.). «Спустя 48 лет Zilog убивает классический автономный микропроцессор Z80». Арс Техника . Архивировано из оригинала 12 мая 2024 года . Проверено 23 мая 2024 г.

Источники

дальнейшее чтение

Таблицы данных и руководства
Книги по аппаратному обеспечению
Книги по программному обеспечению
Справочные карточки

Внешние ссылки

Симуляторы/Эмуляторы:

Доски