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 году.
КМОП Z80 в 44 -контактном квадратном плоском корпусе .

Ранняя история

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

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

Недавно созданная и неназванная компания изначально начала проектировать однокристальный микроконтроллер под названием 2001. Они встретились с Synertek , чтобы обсудить изготовление на их линиях, и когда Фаггин начал понимать связанные с этим затраты, стало ясно, что такой недорогой продукт не сможет конкурировать с разработкой компании с собственными производственными линиями, такой как 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] и организовал встречу, которая в конечном итоге привела к предоставлению ими первоначального финансирования в размере 500 000 долларов в июне 1975 года (что эквивалентно 2,8 миллионам долларов в 2023 году). [7]

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

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

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

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

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

Первые образцы были возвращены из Mostek 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] [f]

Сравнение с 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. Однако в последующие годы версии Z80 CMOS (как от Zilog, так и от японских производителей) также доминировали на этом рынке в таких продуктах, как Amstrad NC100 , Cambridge Z88 и собственный WP-2 от Tandy.

Возможно, ключом к первоначальному успеху Z80 было встроенное обновление DRAM, по крайней мере, на таких рынках, как CP/M и другие офисные и домашние компьютеры. (Большинство встраиваемых систем Z80 используют статическую RAM , которая не нуждается в обновлении.) Возможно, это была также его минималистичная двухуровневая система прерываний или, наоборот, его общая многоуровневая система прерываний с последовательным подключением, полезная для обслуживания нескольких микросхем ввода-вывода 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-х годов. Версии CMOS были разработаны с указанными верхними пределами частоты в диапазоне от 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 ЦП на основе TTL Datapoint 2200. [k]

Конструкция 2200 позволяла 8-битным регистрам H и L (High и Low) объединяться в 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-битные данные между памятью и аккумулятором A).

Это может сбивать с толку программистов, потому что после выполнения EX AF,AF'или EXXто, что раньше было альтернативными (primed) регистрами, теперь становится основными регистрами, и наоборот. Единственный способ для программиста узнать, какой набор(ы) находится в контексте (во время «игры в компьютер», изучая исходный текст ассемблера, или, что еще хуже, изучая код с помощью отладчика) — это отследить, где производится каждая перестановка регистров в каждой точке программы. Очевидно, что если в этих сегментах кода выполняется много переходов и вызовов, может быстро стать трудно определить, какой файл регистров находится в контексте, если это не будет тщательно прокомментировано. Таким образом, рекомендуется, чтобы инструкции обмена использовались напрямую и в коротких дискретных сегментах кода. Набор инструкций 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(загрузочных) инструкций. Флаги Sign (бит 7) и Zero (бит 6) устанавливаются в соответствии с данными, загруженными из регистров источника Refresh или Interrupt. Для обеих инструкций флаг Parity/Overflow (бит 2) устанавливается в соответствии с текущим состоянием триггера IFF2. [37]

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

Хотя Z80 обычно считается восьмибитным процессором, он имеет четырехбитное АЛУ , поэтому вычисления выполняются в два этапа. [38]

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

Datapoint 2200 и Intel 8008

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

В этом процессе мнемоника L, для LOAD , была заменена различными сокращениями слов 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 фактически изоморфен для большой части инструкций. Только довольно поверхностные сходства (например, слово MOV или буква X для расширенного регистра) существуют между языками ассемблера 8080 и 8086, хотя программы 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) называется P/V (четность/переполнение) в Z80, поскольку он выполняет дополнительную функцию индикатора переполнения в дополнительном коде, чего не хватает в 8080. Арифметические инструкции в Z80 устанавливают его для указания переполнения, а не четности, в то время как побитовые инструкции по-прежнему используют его в качестве флага четности. (Это вносит тонкую несовместимость Z80 с кодом, написанным для 8080, поскольку Z80 иногда указывает на переполнение со знаком, тогда как 8080 указал бы на четность, что может привести к сбою логики некоторого практического программного обеспечения 8080 на Z80. [o] ) Этот новый флаг переполнения используется для всех новых специфичных для Z80 16-битных операций ( 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 килобайт из памяти в память или между памятью и периферийными портами ввода-вывода. Инструкции по блокированию и (load LDIR, LDDRincrement / decrement , r epeat ) используют HL для указания на исходный адрес, DE для указания на адрес назначения и BC в качестве счетчика байтов. Байты копируются из источника в место назначения, указатели увеличиваются или уменьшаются, а счетчик байтов уменьшается до тех пор, пока BC не достигнет нуля. Неповторяющиеся версии и перемещают один байт и увеличивают указатели и счетчик байтов, который, если становится равным нулю, сбрасывает флаг P/V. Соответствующие инструкции из памяти в ввод-вывод , , , , , , и работают аналогично, за исключением того, что в качестве счетчика байтов используется B, а не BC. [47] [48] Z80 может вводить и выводить любой регистр в порт ввода-вывода, используя регистр C для обозначения порта. (8080 выполняет ввод-вывод только через аккумулятор A, используя прямой адрес порта, указанный в инструкции; для использования переменного адреса порта 8080 требуется метод самомодифицирующегося кода.)LDILDDINIRINDROTIROTDRINIINDOUTIOUTD

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

В отличие от 8080, Z80 может переходить на относительный адрес ( JRвместо JP), используя знаковое 8-битное смещение. Для этих новых двухбайтовых JRинструкций можно проверить только флаги нуля и переноса. (Все переходы и вызовы 8080, условные или нет, являются трехбайтовыми инструкциями.) Двухбайтовая инструкция, специализированная для цикла программы, также является новой для Z80: DJNZ( d ecrement jump if n on- z ero) принимает знаковое 8-битное смещение в качестве непосредственного операнда. Регистр B уменьшается, и если результат не равен нулю, то выполнение программы переходит относительно PC; флаги остаются неизменными. Для выполнения эквивалентного цикла на 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сохраняет байт и два T-состояния для каждого появления. Это, естественно, делает индексный регистр недоступным для любого другого использования, иначе необходимость его постоянной перезагрузки сведет на нет его эффективность.

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

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

Индексные регистры IX и IY были задуманы как гибкие 16-битные указатели, расширяющие возможности манипулирования памятью, стековыми фреймами и структурами данных. Официально они рассматривались только как 16-битные. В действительности они были реализованы как пара 8-битных регистров [49] таким же образом, как регистр HL, который доступен либо как 16 бит, либо отдельно как регистры H и L. Двоичные коды операций (машинный язык) были идентичны, но им предшествовал новый префикс кода операции. [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 T-состоянии. Обратите внимание, что собранный код совместим на двоичном уровне с процессорами Intel 8080 и 8085.

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

Каждая инструкция выполняется шагами, которые обычно называются машинными циклами (M-циклами), каждый из которых может занимать от трех до шести тактовых периодов (T-состояний). [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 поддерживали новые прерывания режима 2 Z80, которые упрощали обработку прерываний для большого количества периферийных устройств.

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 , среди которых выделяется T34BM1, также называемый КР1858ВМ1 (аналогично советскому клону 8080 КР580ВМ80А ). Первая маркировка использовалась в предсерийных образцах, а вторая должна была использоваться для более крупного производства. Хотя из-за краха советской микроэлектроники в конце 1980-х годов T34BM1 гораздо больше, чем КР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 Морроу) для совместного использования одного процессора несколькими одновременными пользователями .

Sinclair ZX Spectrum , использующий Z80 с тактовой частотой 3,5 МГц

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

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

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

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

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

Использование Z80 в более легких устройствах с батарейным питанием стало более распространенным с появлением версий процессора CMOS. Это также вдохновило разработку других процессоров на базе 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 Geneva в 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. [p]

Процессоры Z80 также использовались в новаторской и популярной серии графических калькуляторов TI-8x от Texas Instruments , начиная с TI-81 в 1990 году , который имел 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. ^ Варианты КМОП достигли частоты 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 может использоваться для предоставления чипам памяти того же количества времени доступа для выборки инструкций, что и для доступа к данным, т. е. почти 2 полных T-состояния из цикла выборки 4T ​​(а также из цикла чтения данных 3T ). Z80 мог использовать память с тем же диапазоном времени доступа, что и 8080 (или 8086) на той же тактовой частоте. Этот длинный сигнал M1 (относительно тактовой частоты) также означал, что Z80 мог использовать примерно в 4–5 раз большую внутреннюю частоту, чем 6800, 6502 или аналогичные, использующие тот же тип памяти.
  10. ^ В отличие от оригинальной версии nMOS, которая использовала динамические защелки и не могла быть остановлена ​​более чем на несколько тысяч тактовых циклов.
  11. ^ Родственное семейство 8086 также унаследовало эту конструкцию регистра.
  12. ^ Этот переменный указатель HL фактически был единственным способом доступа к памяти (для данных) в Datapoint 2200, а следовательно, и в Intel 8008. Для доступа к данным нельзя было использовать прямые адреса.
  13. ^ Немедленная загрузка памяти недоступна на Datapoint 2200.
  14. ^ Команды перехода ( JP), которые загружают счетчик программ новым адресом команды, сами по себе не обращаются к памяти. Абсолютные и относительные формы перехода отражают это, опуская круглые скобки из своих операндов. Команды перехода на основе регистров, такие как " JP (HL)", включают круглые скобки в явном отклонении от этого соглашения. [41]
  15. ^ Например, на 8080 программист может проверить четность байта ADD, добавляя к нему ноль, SUBвычитая из него ноль или выполняя ORing ​​или XORing с нулем; все это операции с одной инструкцией одинаковой скорости и размера как на 8080, так и на Z80. Если программист выбрал проверку четности, добавляя ORили XORвычитая ноль, то Z80 выполнит программу правильно, но если программист выбрал проверку четности, ADDдобавляя или SUBвычитая ноль, то Z80 всегда будет сбрасывать флаг P/V в ноль (поскольку добавление или вычитание нуля никогда не приводит к переполнению или потере значимости) вместо того, чтобы назначить P для правильного указания четности байта (как это сделали бы 8080 или 8085), и программа может завершиться ошибкой. Ничто в руководствах по программированию Intel или другой документации для 8080 не препятствует использованию арифметических инструкций и не предписывает использование логических инструкций для проверки четности, поэтому нет никаких оснований ожидать, что программист 8080, применяющий рекомендуемые правила программирования, выберет один из способов, который будет работать на Z80, а не один из способов, который не будет работать.
  16. ^ Это распространённое, но необязательное и не ограничивающее использование приводит к частому, но неверному описанию Z80 в Genesis как «звукового процессора».

Ссылки

  1. ^ abc Zilog (2005). Руководство пользователя процессоров семейства Z80 (PDF) . Zilog. стр. 5. Архивировано (PDF) из оригинала 19 июня 2009 г. . Получено 18 июля 2009 г. .
  2. ^ ab Faggin, Shima & Ungermann 2007.
  3. ^ ab Faggin, Shima & Ungermann 2007, стр. 1.
  4. ^ ab Faggin, Shima & Ungermann 2007, стр. 2.
  5. ^ abc Faggin, Shima & Ungermann 2007, стр. 3.
  6. ^ abc Faggin, Shima & Ungermann 2007, стр. 4.
  7. ^ Фаггин, Шима и Унгерманн 2007, стр. 8.
  8. ^ ab Faggin, Shima & Ungermann 2007, стр. 5.
  9. ^ Фаггин, Шима и Унгерманн 2007, стр. 19.
  10. ^ Фаггин, Шима и Унгерманн 2007, стр. 6.
  11. ^ Фаггин, Шима и Унгерманн 2007, стр. 7.
  12. ^ Фаггин, Шима и Унгерманн 2007, стр. 17.
  13. ^ "Z80® DMA Direct Memory Access Controller" (PDF) . Архивировано (PDF) из оригинала 5 февраля 2024 г. . Получено 8 января 2024 г. .
  14. ^ Андерсон (1994), стр. 51.
  15. ^ Фаггин, Шима и Унгерманн 2007, стр. 13.
  16. ^ Фаггин, Шима и Унгерманн 2007, стр. 9.
  17. ^ Андерсон (1994), стр. 57.
  18. ^ ab Brock, Gerald W. (2003). Вторая информационная революция . Harvard University Press. ISBN 978-0-674-01178-6.
  19. ^ "История 8-битных: путешествие далеко за короткое время". InfoWorld . Том 4, № 47. Пало-Альто, Калифорния: Popular Computing Inc. 29 ноября 1982 г. стр. 58–60. ISSN  0199-6649. Архивировано из оригинала 5 января 2024 г.
  20. ^ Фаггин, Федерико; Шима, Масатоши ; Унгерманн, Ральф (19 августа 1976 г.). «Набор микросхем Z-80 возвещает о третьем поколении микропроцессоров» (PDF) . Электроника . Т. 49, № 17. Нью-Йорк: McGraw–Hill . С. 89–93. Архивировано (PDF) из оригинала 31 января 2023 г.
  21. ^ Ciarcia (1981), стр. 31, 32.
  22. ^ ab Chen, Wai-Kai (2002). Справочник по схемам и фильтрам . CRC Press . стр. 1943. ISBN 978-0-8493-0912-0. обработка прерывания начинается в соответствии с методом прерывания, предусмотренным инструкцией IM  i , i  = 0, 1 или 2. Если i  = 1, для прямого метода, ПК загружается с 0038H. Если i  = 0, для векторного метода, прерывающее устройство имеет возможность разместить код операции для одного байта. Если i  = 2, для косвенного векторного метода, прерывающее устройство должно затем разместить байт. Затем Z80 использует этот байт, где один из 128 векторов прерывания может быть выбран байтом.
  23. ^ Матур (1989). Введение в микропроцессоры . Tata McGraw-Hill Publishing Company. стр. 111. ISBN 978-0-07-460222-5. Архитектура регистров Z80 более инновационна, чем у 8085.
  24. ^ Брюэр, Тони. "Z80 Special Reset". GitHub . Архивировано из оригинала 27 апреля 2024 г. Получено 27 апреля 2024 г.
  25. Адриан, Андре (4 июня 2011 г.). "Z80, 8-битный Number Cruncher". Архивировано из оригинала 26 ноября 2023 г.
  26. ^ ab Balch, Mark (18 июня 2003 г.). "Цифровые основы". Complete Digital Design: A Comprehensive Guide to Digital Electronics and Computer System Architecture . Professional Engineering. New York, New York : McGraw-Hill Professional . стр. 122. ISBN 0-07-140927-0.
  27. ^ Отчет Seybold о профессиональных вычислениях . Seybold Publications. 1983. В 8-битном мире двумя наиболее популярными микрокомпьютерами являются компьютерные чипы Z80 и 6502.
  28. Адриан, Андре (4 июня 2011 г.). "Z80, 8-битный Number Cruncher: Z80 32-битное (длинное) сложение". Архивировано из оригинала 26 ноября 2023 г.
  29. ^ Popular Computing . McGraw-Hill . 1983. стр. 15.
  30. ^ Маркофф, Джон (18 октября 1982 г.). «Zilog's speedy Z80 soups up 8-bit to 16-bit performance». InfoWorld . Vol. 4, no. 41. Пало-Альто, Калифорния: Popular Computing, Inc. стр. 1. ISSN  0199-6649. Архивировано из оригинала 5 января 2024 г.
  31. ^ Электронный дизайн . Хейден. 1988. стр. 142. Помимо поддержки всего набора инструкций Z80, Z180
  32. ^ Ganssle, Jack G. (1992). "Z80 Lives!". Архивировано из оригинала 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. ^ ab Хит, Стив (2003). Проектирование встроенных систем . Оксфорд: Newnes. стр. 21. ISBN 978-0-7506-5546-0.
  37. ^ Райсон, Марк. Янг, Шон (ред.). "Z80 Flag Affection". z80.info . Томас Шеррер. Архивировано из оригинала 23 декабря 2023 г. Получено 14 июня 2016 г.
  38. ^ Ширрифф, Кен. «Z-80 имеет 4-битный АЛУ. Вот как он работает». Архивировано из оригинала 9 сентября 2013 г. Получено 16 ноября 2021 г.
  39. ^ ab Durda IV, Frank (2012). "Набор инструкций 8080/Z80". Архивировано из оригинала 11 февраля 2016 г. Получено 22 июля 2009 г.
  40. ^ "8080A/ 8-битный N-канальный микропроцессор". Каталог данных компонентов Intel 1978. Санта-Клара, Калифорния: Intel Corporation. 1978. стр. 11–17. Все мнемоники защищены авторским правом Intel Corporation 1977
  41. ^ "Z80 Relocating Macro Assembler User's Guide" (PDF) . стр. B–2. Архивировано из оригинала (PDF) 20 июля 2011 г. . Получено 4 июня 2009 г. .
  42. ^ Скэнлон, Лео Дж. (1988). Язык ассемблера 8086/8088/80286. Brady Books. стр. 12. ISBN 978-0-13-246919-7. [...] 8086 программно совместим с 8080 на уровне языка ассемблера. [...]
  43. ^ Нельсон, Росс П. (январь 1989) [1988]. Книга 80386: Руководство программиста на языке ассемблера для 80386. Серия программирование Microsoft (1-е изд.). Microsoft Press . стр. 2. ISBN 978-1-55615-138-5. [...] Программа-транслятор Intel могла преобразовывать программы на ассемблере 8080 в программы на ассемблере 8086 [...]
  44. ^ ab "Z80 CPU Introduction". Zilog . 1995. Архивировано из оригинала 20 декабря 2023 г. Он имеет язык из 252 корневых инструкций и с зарезервированными 4 байтами в качестве префиксов, получает доступ к дополнительным 308 инструкциям.
  45. ^ "Z80-CPU Instruction Set" (PDF). Zilog . 1976. стр. 19. Архивировано из оригинала 5 ноября 2023 г. Получено 20 июля 2021 г.
  46. ^ Санчес, Хулио; Кантон, Мария П. (2008). Программные решения для инженеров и ученых . Тейлор и Фрэнсис. стр. 65. ISBN 978-1-4200-4302-0. 8-битные микропроцессоры, предшествовавшие семейству 80x86 (такие как Intel 8080, Zilog Z80 и Motorola), не поддерживали умножение.
  47. ^ Ciarcia (1981), стр. 86.
  48. ^ ХЕЙС, ДЖОН П. (1978). Архитектура и организация компьютеров . стр. 423. ISBN 0-07-027363-4.
  49. ^ Фрёлих, Роберт А. (1984). Каталог и справочник свободного программного обеспечения . Crown Publishers. стр. 133. ISBN 978-0-517-55448-7. Недокументированные коды Z80 допускают 8-битные операции с регистрами IX и IY.
  50. ^ ab Bot, Jacco JT "Z80 Undocumented Instructions". Домашняя страница процессора 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. ^ ab Young, Sean (октябрь 1998 г.). "Z80 Undocumented Features (in software behavior)". Архивировано из оригинала 25 декабря 2023 г. Инструкции ввода-вывода используют всю адресную шину, а не только нижние 8 бит. Таким образом, на самом деле в системе Z80 может быть 65536 портов ввода-вывода (Spectrum использует это). IN r,(C), OUT (C),r и все инструкции блока ввода-вывода помещают весь BC на адресную шину. IN A,(n) и OUT (n),A помещают A*256+n на адресную шину.
  53. ^ "Timing". Руководство пользователя процессоров семейства Z80 (PDF) . Zilog . 2016. стр. 7. UM008011-0816. Архивировано (PDF) из оригинала 26 декабря 2023 г. Получено 5 января 2024 г.
  54. ^ Ciarcia (1981), стр. 65.
  55. ^ Закс, Родней (1989). Программирование Z80. Сайбекс. п. 200. ИСБН 978-0-89588-069-7. ADD A, n Добавить аккумулятор с непосредственными данными n. Время работы ПАМЯТИ: 2 M циклов; 7 T состояний.
  56. ^ Ciarcia (1981), стр. 63.
  57. ^ Ciarcia (1981), стр. 77.
  58. ^ Ciarcia (1981), стр. 36.
  59. ^ Ciarcia (1981), стр. 58.
  60. ^ "Регистры специального назначения". Руководство пользователя ЦП семейства Z80 (PDF) . Zilog . 2016. стр. 3. UM008011-0816. Архивировано (PDF) из оригинала 26 декабря 2023 г. Получено 5 января 2024 г.
  61. ^ "Z80 Family CPU Peripherals User Manual" (PDF) . EEWORLD Datasheet . ZiLOG. 2001. Архивировано из оригинала (PDF) 2 мая 2014 г. Получено 30 апреля 2014 г.
  62. ^ "Sharp 1986 Semiconductor Data Book" (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 Semiconductor Data Book (PDF) . Sharp Corporation . 1986. стр. 210. Архивировано (PDF) из оригинала 1 января 2024 г. . Получено 1 января 2024 г. .
  65. ^ "Sharp 1986 Semiconductor Data Book" (PDF) . стр. 255–269. Архивировано (PDF) из оригинала 20 января 2024 г. Получено 13 января 2024 г.
  66. ^ "Sharp 1986 Semiconductor Data Book" (PDF) . стр. 296–301. Архивировано (PDF) из оригинала 20 января 2024 г. Получено 20 января 2024 г. .
  67. ^ "Sharp 1986 Semiconductor Data Book" (PDF) . стр. 302–306. Архивировано (PDF) из оригинала 28 января 2024 г. Получено 28 января 2024 г. .
  68. ^ "Sharp 1986 Semiconductor Data Book" (PDF) . стр. 307–311. Архивировано (PDF) из оригинала 28 января 2024 г. . Получено 28 января 2024 г. .
  69. ^ Ganssle, Jack G. (1992). "Z80 Lives!". Архивировано из оригинала 1 мая 2009 г. Получено 17 июля 2009 г. 64180 — это ядро ​​Z80, поставляемое Hitachi, с многочисленными встроенными "дополнениями". Версия Zilog — Z180, которая по сути является той же частью.
  70. ^ Ganssle, Jack G. (1992). "Z80 Lives!". Архивировано из оригинала 1 мая 2009 г. Получено 17 июля 2009 г. И Toshiba, и Zilog продают 84013 и 84015, которые представляют собой ядра Z80 с обычными периферийными устройствами Z80, интегрированными на плату.
  71. Granville, Fran (1 августа 1996 г.). "EDN Access — 08.01.96 Z80 исполняется 20 лет". EDN . Архивировано из оригинала 7 августа 2023 г. . Получено 7 августа 2023 г. .
  72. ^ "EZ80 ACCLAIM Product Family". Zilog. Архивировано из оригинала 20 декабря 2008 г.
  73. ^ Electronic Business Asia . Cahners Asia Limited. 1997. стр. 5. KL5C80A12, KL5C80A16 и KL5C8400 от Kawasaki — это высокоскоростные 8-битные микроконтроллеры и процессоры. Их код процессора, KC80, совместим с Zilog Z80 на двоичном уровне. KC80 выполняет инструкции примерно в четыре раза быстрее, чем Z80 при той же тактовой частоте.
  74. ^ "Характеристики оборудования". S1mp3.org . 19 октября 2005 г. Архивировано из оригинала 8 декабря 2005 г.
  75. ^ "Обзор :: T80 cpu :: 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". Crypto Museum . 27 февраля 2018 г. Архивировано из оригинала 5 ноября 2023 г.
  78. ^ "NSC800 High-Performance Low-Power CMOS Microprocessor" (PDF) . National Semiconductor . Июнь 1992. Архивировано (PDF) из оригинала 19 ноября 2023.
  79. ^ "MCS-85, Zilog Z80 и National NSC800 Expansion Boards". CPU Shack . 15 февраля 2015 г. Архивировано из оригинала 30 сентября 2023 г.
  80. ^ "Раздел 6 MOS MPU, MCU и тенденции рынка периферийных устройств" (PDF) . Integrated Circuit Engineering Corporation. стр. 16. Архивировано из оригинала (PDF) 14 июня 2011 г.
  81. ^ Аксельсон, Ян (2003). Встроенный Ethernet и Интернет Complete. Исследование Lakeview. стр. 93. ISBN 978-1-931448-00-0Микропроцессор Rabbit 3000 компании Rabbit Semiconductor , который является значительно улучшенной и усовершенствованной производной от почтенного микропроцессора Z80 компании ZiLOG, Inc.
  82. ^ Хайдер, Камал; Перрин, Боб (2004). Проектирование встраиваемых систем с использованием микропроцессора Rabbit 3000. Newnes. стр. 32. ISBN 978-0-7506-7872-8. Детали Rabbit во многом основаны на архитектуре Zilog Z180, хотя они несовместимы на уровне двоичного кода с деталями Zilog.
  83. ^ Cruz, Eduardo (23 ноября 2014 г.). "Capcom Kabuki CPU – Intro". Arcade Hacker . Архивировано из оригинала 5 ноября 2023 г.
  84. ^ Хольц, Герман (1985). Компьютерные рабочие станции . Чапман и Холл. стр. 223. ISBN 978-0-412-00491-9. и CP/M продолжали доминировать в мире 8-битных микрокомпьютеров.
  85. ^ Дворак, Джон К. (10 мая 1982 г.). «После CP/M объектно-ориентированные операционные системы могут стать лидерами». InfoWorld . Том 4, № 18. InfoWorld Media Group. стр. 20. ISSN  0199-6649. Архивировано из оригинала 6 января 2024 г. Идея универсальной операционной системы все еще находится в зачаточном состоянии. Во многом она начинается с CP/M и мешанины ранних компьютеров 8080 и Z80.
  86. ^ Стенгель, Стивен. «Otrona Attache». Музей старых компьютеров Стива . Архивировано из оригинала 27 декабря 2023 г. Получено 5 марта 2019 г.
  87. ^ "Sharp PC-1500 Technical Reference Manual" (PDF) . Архивировано (PDF) из оригинала 5 ноября 2023 г.
  88. ^ "Poor Man's Laptop". Google Books . Popular Mechanics, апрель 1991 г., стр. 120. Апрель 1991 г. Получено 11 апреля 2018 г.
  89. ^ "Laser PC4". Old Computer Museum . Архивировано из оригинала 5 ноября 2023 г. Получено 11 апреля 2018 г.
  90. ^ "Laser PC5 from VTech". larwe.com . Архивировано из оригинала 5 ноября 2023 г. Получено 11 апреля 2018 г.
  91. ^ "Laser PC6". Perfect Solutions dot com . Perfect Solutions. Архивировано из оригинала 21 мая 2018 г. Получено 11 апреля 2018 г.
  92. ^ "Mailstation Development". Fybertech.net . Архивировано из оригинала 6 января 2024 г. Получено 18 апреля 2021 г.
  93. ^ Woerner, Joerg. "Texas Instruments PS-6200". Datamath Calculator Museum . Архивировано из оригинала 5 ноября 2023 г. Получено 18 июня 2019 г.
  94. ^ Woerner, Joerg. "Texas Instruments PocketMate 100". Datamath Calculator Museum . Архивировано из оригинала 5 ноября 2023 г. Получено 18 июня 2019 г.
  95. ^ Ян Р. Синклер (2000). Практический справочник по электронике (5-е изд.). Оксфорд, Angleterre: Newnes. стр. 204. ISBN 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". habr.com . 29 января 2020 г. Архивировано из оригинала 5 ноября 2023 г.
  99. ^ Эдвардс, Бендж (22 апреля 2024 г.). «Спустя 48 лет Zilog убивает классический автономный микропроцессорный чип Z80». Ars Technica . Архивировано из оригинала 12 мая 2024 г. Получено 23 мая 2024 г.

Источники

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

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

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

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

Доски