Флейм
GameDev.ru / Флейм / Форум / Блеск и нищета 8/16-битных консолей и ПК (14 стр)

Блеск и нищета 8/16-битных консолей и ПК (14 стр)

Страницы: 110 11 12 13 14 15 Следующая »
=A=L=X=Постоялецwww4 янв. 201811:52#195
texture3D
> Миллипроцессор.

Ну, формально сперва были просто ЭВМ с просто процессорами - они могли занимать целые здания. Когда компьютеры смогли запихать в размеры от одной комнаты до шкафа их стали называть миниЭВМ. Поэтому тут можно было бы говорить о минипроцессоре, но такой терминологии не сложилось.

Правка: 4 янв. 2018 11:52

=A=L=X=Постоялецwww7 янв. 20189:32#196
Ранее тут я писал, что ЦП в SNES (Ricoh 5A22) работал на частоте 3,58 МГц (так, например, написано в английской вики), но это не совсем так.
Опять таки тут вступает в силу преемственность с 8-битным MOS 6502 - философия этого процессора полностью сохранилась и в 16-битном апгрейде. Малое количество регистров принуждало второй аргумент почти каждой арифметико-логической команды располагаться в памяти, поэтому быстродействие процессора очень сильно завязано на частоту шины, вот её и пишут здесь в английской википедии. На самом же деле так называемый master clock у этого ЦП имеет частоту 21МГц и минимально возможное число этих тактов для доступа к шине - 6 штук, вот 21 деленное на 6 везде и пишут когда говорят про эти 3,58 МГц. Довольно странно на мой взгляд.
TonalПостоялецwww7 янв. 201810:39#197
=A=L=X=
> Довольно странно на мой взгляд.
А что странного то? Так тогда все и работало, эти 6(или 12 у 8051) тактов составляют  1машинный цикл, исполнение команд кратно этим самым машинным циклам, есть короткие команды занимающие 1мц, есть и длинные занимающие 2..4мц.

Здесь интересна современная тенденция, некоторые популярные архитектуры(например тот же INTEL 8051 - 12 тактов на 1мц) выпускаются до сих пор разными фирмами но с уменьшенным кол-вом тактов на 1мц, например Dallas Semiconductor 8051- 4такта на 1мц,  Silicon Labs С8051 - 1такт - 1мц(в 12 раз быстрее на той же тактовой частоте). Естественно аппаратно это уже совсем другие железки но програмно совместимые на уровне иходных кодов. 

=A=L=X=Постоялецwww7 янв. 201811:22#198
Tonal
> А что странного то?

Что частотой процессора называют частоту шины, а не master собственно clock. Не вижу смысла в этом, вроде всегда терминология эта была про кварцевый генератор хороводящий процессом.

0iStalkerМодераторwww12 янв. 201814:33#199
=A=L=X=Постоялецwww13 янв. 20185:13#200
0iStalker

Посмотрел наконец то.
Феерия костылей и распорок. :D Но что характерно - в Микроше/Радио-РК заложила их по большей части Intel.

P.S.

Лол, еще он упомянул, что для стабильной герцовки видеоконтроллер надо было отключать, например для загрузки с ленты, но не упомянул, что при этом регенерация памяти закономерно отваливалась и её должен был делать ЦП. xD Блин, спектрум на этом всём фоне выглядит железобетонной, продуманно-сбалансированной вершиной дизайна.

Правка: 13 янв. 2018 6:39

=A=L=X=Постоялецwww27 янв. 201820:45#201
Погуглил сегодня про Apple 1 - первый комп Стивов Возняка и Джобса который после тиража примерно в 200 экземпляров дал жизнь и фирме Apple и гораздо более продуманному и совершившему фурор на рынке Apple 2.
Крайне забавная штучка была, да...

Из родного мануала: http://s3data.computerhistory.org/brochures/apple.applei.1976.102646518.pdf вскрываются такие любопытные детали, что хотя и к компу надо было подключать (помимо блока питания и монитора) стороннюю ASCII-клавиатуру и он был к ней в принципе готов, но его прошитая в ПЗУ программа "монитор" (считай аналог оси в 256 байтах) не воспринимала за команды-символы маленькие буквы, поэтому предлагалось даже впаять в блок ввода от клавиатуры схему-конвертер малых букв в большие - если на самой клаве не было Caps-Lock-а. Позднее становится понятно почему это было проблемой вообще - дисплей не мог отображать разными символами нижний и верхний регистр буквы, т.к. таблица знакогенератора хранила только 64 символа, и они выводились одинаково все.

Еще одной забавной деталькой является то, что комп после подключения питания даже не ребутился автоматически - на экране застывал мусор и ничего не реагировало на клавиатуру до ручного нажатия на кнопку RESET.
И вот какое еще дело - в мануале приведены фрагменты кода на ассемблере (MOS 6502) по вводу с клавиатуры и выводу на экран - и код вывода на экран символа (был только один текстовой видеорежим) выглядит так - сперва ждём пока в одном из портов не установится состояние "можно писать очередной символ", после чего в этот же порт надо тут же записать код этого символа.

Начал я всё это гуглить после просмотра еще одного видео от 8-bit guy где он вскользь упомянул, что видеочип Apple 1 был довольно прямолинейным терминалом - мог имитировать принтер выводящий символы на ленту, но не мог даже вернуть каретку назад и перерисовать верх уже напечатанного экрана - поэтому интерактивным играм на нём было просто неоткуда взяться - те же шахматы просто перерисовывали поле строка за строкой всякий раз как будто на ленте принтера. Притом делал комп это весьма небыстро - максимальная скорость вывода - ~60 символов в секунду.

И вот в попытке заценить параметры видеоадаптера Apple 1 я набрёл на следующий документ: https://www.sbprojects.net/projects/apple1/terminal.php
И эти подробности удивили. Действительно всё что мог сделать Apple 1 для вывода на экран - это послать в порт видеовыхода очередной символ к выводу на консоль - и единственный символ который вёл себя как то не так как остальные - это #13  - он как и положено сдвигал строку и переводил каретку - автоматический скроллинг при достижении курсором нижней строки прилагается.
Видеочип сам хранил видеопамять с символами экрана - но это была не нормальная RAM, а шесть 1024-битных регистра сдвига. Шесть потому что символы в видеобуфере были 6-битными. Это объясняет траблы насчёт ASCII и ограничений "монитора" и клавиатуры. На экране было видно 24 строки по 40 символов в каждой, что даёт нам 960 символов на экране. Поэтому 1024-битных регистра сдвига нам нужно именно 6 чтобы описать весь видеобуфер.
Эти самые регистры сдвига были сами на себя зациклены, т.е. бесконечно вращались в кольце - для видеочипа это упрощало несколько "сканирующее" поведение нужное ему by design. Ну и плюс - дешевизна. Однако писать в такую память произвольным образом нельзя - запись возможна только в ту группу бит которая в текущий момент "проскакивает" в разрезе кольца - можно просто в какой то момент подать на следующий круг не те биты что пришли из конца, а те что мы хотим на их место записать, таким образом переписав их. Именно так и действовал видеоконтроллер Apple 1 когда выдавал в ЦП через порт сигнал "можно писать очередной символ" - он сравнивал позицию курсора с тем что сейчас проходит через срез кольца и при совмещении курсора со срезом и выдавал сигнал "пиши если хочешь" и если комп в порт писал - вклинивал в кольцо новый символ для хранения в видеопамяти.
Проблема только была в том, что сделав эту запись компу далее приходилось ждать полный цикл кольца чтобы подобраться снова к новой позиции курсора и снова произвести запись в следующий символ. Именно этим и объясняется максимальная скорость вывода символов на экран в 60 символов в секунду, т.к. именно такова была частота вывода на экран картинки NTSC и, соответственно, скорость прокрутки сего регистросдвигового кольца видеопамяти Apple 1. И действительно для обработки символа #13 была впаяна дополнительная логика.

Ну просто самое то для этой темы.
Изображение

Правка: 27 янв. 2018 21:08

Panzerschrek[CN]Участникwww28 янв. 20186:29#202
Надо сказать, Apple до сих пор блюдет традиции кривости и альтернативного дизайна своих поделок.
=A=L=X=Постоялецwww28 янв. 201814:52#203
Panzerschrek[CN]
> Надо сказать, Apple до сих пор блюдет традиции кривости и альтернативного
> дизайна своих поделок.

Ну вообще Apple 1 был разработан еще до Apple Стивом Возняком (собственно Джобс и подначил его продавать свою поделку как коммерческий продукт) и разумеется он более чем вряд ли проектировал всё с нуля - разумеется основные решения подсматривались в уже существующей тогда индустрии.
И в этом смысле "монитор-принтер" является классическим пережитком индустрии - просто пальчики оближешь. Ведь действительно всякие ЭВМ намного раньше научились выводить информацию на печатную ленту и это резко облегчило жизнь компьютерщиков, но породило тонны макулатуры там где даже результаты вычислений были сугубо промежуточными-контрольными.
С подключением электронно-лучевой трубки разумеется родился искус выводить промежуточные вещи на него без особого изменения софта - да и наверняка само мЫшление в некотором роде закостенело на старом интерфейсе.
Поэтому видеоадаптер имитирующий примитивный символьный принтер-печатную-машинку, где даже исправить напечатанный символ было нельзя - действительно остро ощущается как дух переходной эпохи, как слизь пережитков прошлого оставляемая улиткой цивилизации и как памятник инертности человеческого мышления.
И ведь никого даже не смущала скорость в 60 символов в секунду, потому что принтеры были еще медленее. Даже в таком виде это был хайтек и передовица НТР. Но совсем недолго.
И, между прочим, в следующем же продукте - Apple II видеочип был уже совсем другим. Не без трюков и хаков, но там уже были и текстовые и графические видеорежимы и даже цвет. Вот так вот сразу из черно-белого текста скроллящегося только вниз получили в следующем же году конкурентноспособную цветную графику.

Правка: 28 янв. 2018 14:53

0iStalkerМодераторwww1 фев. 20188:58#204
Версия микросхемы 6581 имела ошибку, из за которой при изменении громкости канала возникал небольшой щелчок. Как оказалось, эта ошибка могла быть полезна для реализации четвёртого псевдо-голоса, которым можно было имитировать звуки перкуссии и воспроизводить цифровой звук, например короткие речевые или музыкальные вставки (Commodore 64 не имел достаточного количества памяти для хранения оцифрованных звуков большой длительности). К сожалению, эта ошибка была частично исправлена в версии микросхемы 8580, использовавшейся в Commodore 64C и Commodore 128. Это исправление привело к очень тихому звучанию оцифрованных звуков. Однако, модификация схемы компьютера позволяла восстановить оригинальный уровень громкости.

... костыли и недокументированные возможности, - наше всйо!!!

nonamezeroxПостоялецwww2 фев. 201810:35#205
0iStalker

Вообще, в оригинале SID должен был быть крутым синтезаторным чипом и иметь 32 голоса на одном генераторе, но не сложилось, и поэтому создатель запихнул три пре-альфа зачатка этого проекта на кристалл и сделал трехголосный монофонический синтезатор (который при этом по богатству звучания все равно уделывал все доступные для домашних компьютеров звуковые чипы на рынке в тот момент)

Kollect3DПостоялецwww6 фев. 20184:05#206
=A=L=X= говорит потом сюда притащит, как выйдет из бани: https://retrocoder.d3.ru/istoriia-populiarnykh-mikroprotsessorov-… orting=rating
Будет еще одна подобная статья про Motorola/MOS/WDC, частично которую он тут как бы произвёл в теме про 6502, откуда и зародилась идея исследовать эти два больших семейства процессоров, доминировавших в 8-битную эпоху, обстоятельно.
0iStalkerМодераторwww12 фев. 201821:15#207

Правка: 12 фев. 2018 21:16

=A=L=X=Постоялецwww14 фев. 20185:37#208
История архитектуры популярных микропроцессоров — семейство Intel/Zilog

Изображение

Intel 4004

Транзисторов: ~2300
Инструкций: 46
Частота: 740 кГц

В 1969 году японский производитель калькуляторов Busicom обратился к Intel с просьбой создать набор микросхем для высокопроизводительного калькулятора. Изначальный дизайн подразумевал жёстко зашитую в разные микросхемы логику, что в случае разработки нового калькулятора потребовало бы их значительной и дорогой переделки тоже. Инженеры Intel предложили вместо этого создать программируемый процессор и таким образом модифицировать возможности будущих калькуляторов путём перепрограммирования его логики. Идея всем понравилась, а когда вскоре у Busicom начались проблемы и она продала все права на процессор Intel на свет появился первый в мире коммерчески–доступный микропроцессор Intel 4004. В разработке 4004 принимали немаловажное участие Федерико Фаджин (от Intel) и Масатоси Сима (от Busicom) — запомните эти имена, мы с ними столкнёмся позже.

Микропроцессор является 4–битным. Это прямое следствие его предназначения — будучи микрокалькуляторным процессором он должен работать не с традиционными двоичными числами, а с десятичными разрядами на табло. Тем не менее будучи цифровым аппаратом 4004–ый работает с двоичными разрядами, а 10 цифр десятичной системы счисления минимально влазят в 4–битное двоичное число.
Память программ (ПЗУ/ROM) 8–битная, общим объёмом 4096 байт. Команды занимают от 1 до 2 байт. Некоторые инструкции извлекают из неё 8–битные данные (в регистровые пары).
Память данных (ОЗУ/RAM) замысловато разбита на несколько банков общим объёмом 1280 4–битных значения (эквивалентно 640 байт). При этом прямого доступа к ОЗУ у процессора нет — чтение/запись производятся как бы посредством портов ввода–вывода в несколько машинных инструкций.

Регистры:
— Аккумулятор Acc (4 бита).
— Флаг переноса Carry (1 бит). Условные переходы возможны только по трём условиям: флаг Carry равный 1, Acc равный нулю и выставленный внешний сигнал на специальной ножке процессора. Но при этом эти 3 условия могут быть произвольно смешаны через логическое "ИЛИ" в одной команде с опциональной же инверсией результата (4–битовая маска условия).
— Шестнадцать 4–битных регистра R0–R15, называемых "индексными", которые в некоторых операциях объединяются в восемь 8–битных регистровых пар.
— Четыре 12–битных адреса программы, образующие стек, вершина которого является указателем текущей инструкции (Program Counter или PC). Таким образом максимальная вложенность подпрограмм равняется трём. 12 бит адресуют 4096 байт ПЗУ (ROM), которое делится на шестнадцать 256–байтных страниц. Фактически есть только две инструкции (2–байтные) задающие полные 12 бит адреса программы — это безусловный переход и вызов подпрограммы. Все прочие инструкции любого характера обращающиеся к ROM работают только с 8–битным адресом в пределах текущей страницы кода (верхние четыре бита PC).
— Указатель данных (8 бит) — используется для доступа к ОЗУ. Инструкция DCL выбирает банк памяти, а инструкция SRC устанавливает этот 8–битный адрес в нём. Другими же инструкциями производятся запись и чтение.

Арифметико–логических операций в этом ЦП всего четыре — сложение/вычитание (частный случай — инкремент/декремент, то есть сложение и вычитание с единицей) и прокрутка бит аккумулятора через флаг переноса влево/вправо. Вторым аргументом у сложения/вычитания являются или один из шестнадцати индексных регистров или данное в ОЗУ на которое указывает указатель данных. Сложение/вычитание всегда учитывают перенос, поэтому Carry перед началом операций нередко надо очищать отдельными командами.
В системе команд 4004 немало неортогональных вещей. Например команда LD передаёт данные из индексных регистров в аккумулятор, но нельзя сделать обратного — передача значения из аккумулятора в индексный регистр может быть осуществлена только инструкцией обмена их значений — XCH (exchange). При этом нет команды передачи индексного регистра в индексный же — проброс надо осуществлять через аккумулятор. Аккумулятор можно инкрементировать и декрементировать, а вот индексные регистры — только инкрементировать. Есть экзотическая команда "keyboard process" (KBP), которая записывает в аккумулятор номер зажжённого в нём бита (нумеруя с единицы), причём она считает ошибкой ситуацию когда зажжено более одного бита. Естественно присутствует команда DAA для десятичной коррекции результата арифметической команды, приводящая 4–битное двоичное число после сложения или вычитания в десятичный диапазон с возможным взводом флага переноса — эта команда очень важна в поразрядной арифметике калькуляторных вычислений и она нас еще долго будет сопровождать в других процессорах.

В 1974 Intel выпустит усовершенствованную версию 4004 — Intel 4040, с обратной совместимостью. В ней добавили прерывания, расширили память команд до 8Кб, увеличили глубину стека до семи уровней, добавили 14 новых инструкций и 8 новых индексных регистра во "втором банке" регистров. Видимо почти все эти изменения нужны были как раз для реализации прерываний.

Особого успеха Intel 4004 не сыскал, но как пишет википедия, даже участвовал в прототипе первого управляемого центральным процессором пинболла.

Intel 8008

Транзисторов: ~3500
Инструкций: 48
Частота: 500–800 кГц

Нередко можно встретить утверждение, что Intel 8008 является потомком 4004, но если это и так, то только отчасти — по технологической линии, хотя есть некоторые схожести и в программной архитектуре. История появления 8008 напоминает историю появления 4004.
В том же 1969 году параллельно в Intel и Texas Instruments обратился производитель терминалов — Computer Terminal Corporation (CTC) с целью заказа чипов для своего проекта терминала Datapoint 2200. Дизайн архитектуры и системы команд центрального процессора был задан в техническом задании инженерами самого CTC, так что авторство программной архитектуры линейки в сущности принадлежит им. И Texas Instruments и Intel в итоге сошли с дистанции и CTC не приняло их работы по разным причинам, реализовав таки свой терминал на комплекте логических схем. Однако с Intel контракт был разорван таким образом, что у неё оставались права на разработанный в одном кристалле процессор и таким образом в 1972 году на рынке появился 8–битный микропроцессор Intel 8008. В числе разработчиков так же значится Федерико Фаджин, работавший над 4004.

Процессор адресует линейный банк памяти в 16 Кб — шина адреса у него таким образом является 14–битной. Существуют так же отдельные порты ввода–вывода.

Регистры:
— Аккумулятор A (8 бит).
— Четыре флага: C (перенос), P (четность), S (знак) и Z (ноль). Не образуют регистра как такового — из программы их значения можно определить только условными переходами.
— Шесть 8–битных регистров общего назначения (РОН): B, C, D, E, H, L. Знакомые с 8080 или Z80 могут на этом месте заулыбаться, но нет, концепция регистровых пар этому процессору была еще почти неизвестна. Единственную 16–битную регистровую пару в этом процессоре могли образовать регистры H и L и единственным местом где они могли это сделать — это кодируя в инструкциях псевдорегистр M, который обозначал содержимое байта в памяти по адресу HL (верхние 8 бит адреса берутся из регистра H, а нижние — из L). В сумме с аккумулятором получается восемь 8–битных данных — A,B,C,D,E,H,L,M, что удобно кодировать в инструкциях тремя битами. Эта система ляжет в основание следующих процессоров.
— Восемь 14–битных адреса программы, образующие стек, вершина которого является указателем текущей инструкции (Program Counter или PC). Таким образом максимальная вложенность подпрограмм равняется семи.

По сравнению с 4004 процессор довольно таки ортогонален и прямолинеен. Доступна равноправная пересылка данных между любыми регистрами общего назначения (РОН), включая аккумулятор и байт в памяти по адресу HL (M). В любой регистр можно загрузить непосредственное данное (байт в коде инструкции). Арифметико–логические операции аккумулятора с любым РОН представлены сложениями/вычитаниями (как с переносом так и без), сравнением (CP), логическими AND/OR/XOR и прокрутками бит аккумулятора влево/вправо как через флаг переноса так и минуя его (но с заносом). Любые арифметико–логические команды доступны с непосредственным операндом (байтом в коде инструкции). Однако инкремент/декремент доступен только для регистров B,C,D,E,H,L. Все операции перехода (прыжок, переход в процедуру и возврат из неё) доступны как в безусловных так и в условных исполнениях.
К явным недостаткам процессора можно отнести отсутствие стековых операций (ввиду ограниченного аппаратного стека), отсутствие загрузки/сохранения данного из/в непосредственно заданного в инструкции адреса (по сути была только косвенная адресация через M и непосредственное данное в инструкции) и в связи со всем этим — калечная поддержка прерываний. Которая формально была, но при входе в прерывание сохранить регистры без потерь было практически невозможно, что сводило пользу от поддержки сигнала прерываний почти в ноль.

Опять таки особых вершин 8008 не достиг, но несколько компьютеров–а–не–калькуляторов на нём появится успело.

=A=L=X=Постоялецwww14 фев. 20185:38#209
Intel 8080

Транзисторов: ~4500
Инструкций: 80
Частота: 2–4 МГц

Intel 8080 явно спроектирован на твёрдой базе и концепциях 8008, по сути был объёмной работой над ошибками, но бинарной совместимости между ними не было. Начал продаваться в 1974 году и стал по настоящему популярным 8–битным процессором. Главным разработчиком 8080 был всё тот же Федерико Фаджин.

Адресует линейное пространство ОЗУ в 64 Кб (16–битная шина адреса). Так же имеет 256 портов ввода–вывода (8–битная шина адреса).

Регистры:
— Аккумулятор A (8 бит).
— Регистр флагов F (8 бит), включающий в себя биты: C (переноса), P (четности), AC (доп. переноса), Z (ноля) и S (знака).
Вместе с аккумулятором регистр флагов может образовывать 16–битную регистровую пару PSW (Processor Status Word).
— Шесть 8–битных регистров общего назначения (РОН): B, C, D, E, H, L. В некоторых инструкциях образуют 16–битные регистровые пары B (BC), D (DE), H (HL). При этом регистровая пара H служит своеобразным 16–битным аккумулятором и (как и в 8008) является адресом операнда M в командах (косвенно адресуемый байт в памяти).
— Указатель вершины стека SP (16 бит)
— Счётчик инструкций PC (16 бит)

По сравнению с 8008 нововведения включают в себя:
— полноценный стек в ОЗУ и операции сохранения (PUSH) и извлечения (POP) из/в него регистровых пар (PSW/B/D/H)
— загрузки непосредственного 16–битного данного (в коде инструкции) в регистровые пары (B/D/H/SP)
— загрузка/сохранение аккумулятора по непосредственному адресу (в коде инструкции) в памяти или адресу из регистровых пар B и D (а не только H)
— загрузка/сохранение регистровой пары H по непосредственному адресу в инструкции
— инкремент/декремент работает теперь и для A и для M и для регистровых пар (B/D/H/SP)
— обмен содержимого регистровых пар H и D, а так же регистровой пары H и вершины стека
— косвенный переход по адресу в регистровой паре H
— 16–битное сложение (без переноса) регистровой пары H с регистровыми парами B/D/H/SP
Любопытно, что в 8080 операции со стеком взводили специальные сигналы на ножках процессора, что могло быть использовано внешними схемами чтобы адресовать стек в отдельную микросхему ОЗУ нежели основная память — почему то идея того, что стек может быть каким то отдельным аппаратным решением, как это было в 8008, всё равно нравилась инженерам. Но (насколько мне известно) идея эта никем так использована не была и в дальнейшем аппаратный стек из машин благополучно исчезает.

Нововведения 8080–го по сравнению с 8008 очень сильно повысили удобство программирования под новый процессор. Так, для сравнения, подпрограмма копирования произвольного региона памяти на 8008 занимает примерно 40 инструкций (около 50 байт) в то время как на 8080 ей достаточно всего 11 инструкций (14 байт).
Intel 8080 оказал огромное влияние на индустрию. На его базе был спроектирован чуть ли не самый первый продающийся на рынке ПК в сборе — Altair 8800. На его базе была спроектирована популярная 8–битная операционная система CP/M.
Но всё–таки сокрушительной популярности добился не он, а его потомок — Zilog Z80.

Zilog Z80

Транзисторов: ~8500
Инструкций: 158 основных
Частота: 1–20 МГц

Сразу после разработки Intel 8080 часто упоминаемый выше Федерико Фаджин решает покинуть Intel и основать собственную компанию по производству чисто микропроцессоров и оснастки для них. В 1974 году к нему присоединяются интеловский менеджер Ральф Унгерманн и Масатоси Сима — тот самый японский инженер от Busicom с которым они вместе работали еще над Intel 4004 — и все вместе они основывают новую компанию Zilog.
Первым их продуктом в 1976 году становится усовершенствованная и обратно–совместимая с Intel 8080 версия микропроцессора — Z80.

Архитектура Z80 полностью совместима с Intel 8080 и включает в себя те же базовые возможности и регистры, но её создатели решили обозвать регистры более логичным образом и привести таким образом систему команд ассемблера в более читаемый и систематичный вид.
Поэтому я перечислю все регистры заново в новых названиях:

— Аккумулятор A (8 бит).
— Регистр флагов F (8 бит), включающий в себя биты: C (переноса), N (произведено вычитание), P/V (четность/переполнение), H (доп. переноса), Z (ноля) и S (знака).
Вместе с аккумулятором регистр флагов может образовывать 16–битную регистровую пару AF.
— Шесть 8–битных регистров общего назначения (РОН): B, C, D, E, H, L. В некоторых инструкциях образуют 16–битные регистровые пары BC, DE, HL. При этом регистровая пара HL служит своеобразным 16–битным аккумулятором и (как и в 8008) является адресом операнда M в командах, который в синтаксисе Zilog, однако, уже записывается в ассемблере как "(HL)".
— Указатель вершины стека SP (16 бит)
— Счётчик инструкций PC (16 бит)
(новое в Z80)
— Теневая регистровая пара AF', которую можно было быстро обменять с AF инструкцией EX AF, AF'
— Теневые регистровые пары BC', DE', HL', которые все за раз можно было быстро обменять с обычными командой EXX. Эти расширения позволяли реализовать сверхбыстрые обработчики прерываний.
— Два 16–битных индексных регистра IX и IY, которые можно использовать после префиксирования обычных инструкций байтами DD и FD соответственно. При этом инструкции почти полностью сохраняют свой смысл, но если в них участвует регистровая пара HL, то она заменяется на IX или IY, а если участвует ячейка памяти по адресу (HL), то она заменяется на адрес (IX+d) или (IY+d), где d — непосредственный байт со знаком дополняющий инструкцию. Забавно, что это расширение методом подмены действует и на команды в которых фигурируют 8–битные кусочки HL — регистры H и L. Так некоторые ассемблеры позволяют работать с 8–битными регистрами IXH, IXL, IYH и IYL. Однако сама Zilog до сих пор считает их недокументированными возможностями и не включает в "канон" инструкций этой архитектуры.
— Служебные 8–битные регистры вектора прерываний (I) и обновления (R).

Система команд 8080 тоже была значительным образом дополнена:
— можно загружать и сохранять регистровые пары BC, DE, SP в/из непосредственного адреса в инструкции (а не только HL, как в 8080)
— сложение и вычитание с переносом HL и BC, DE, HL, SP (а не только сложение без переноса как в 8080)
— относительный переход (в т.ч. по условию от флагов C и Z) по байтовому смещению, включая инструкцию быстрого цикла DJNZ отсчитывающую цикл в регистре B
— "строковые (или блоковые)" инструкции, позволяющие быстро копировать и тестировать блоки памяти одной инструкцией (двухбайтовой) и строить быстрые циклы с более сложной логикой
— ввод/вывод в порты по косвенному адресу (регистр C)
— продвинутая поддержка прерываний
— Огромный набор битовых инструкций (префикс CB) — такие как сдвиги и прокрутки бит аккумулятора на несколько разрядов или установка, сброс и тестирование бит в 8–битных регистрах (включая ячейку памяти (HL))
и др.

Нововведения в Z80 еще сильнее упростили жизнь программистам — почти полноценная 16–битная арифметика сложений/вычитаний была очень востребована даже в 8–битную эпоху, блоковые команды позволяли писать копирование кусков памяти буквально одной инструкцией, а индексные регистры IX и IY и косвенная адресация через них по байтовому смещению упрощали компиляцию с языков высокого уровня на этот процессор.

Z80 стал настоящим успехом. Он использовался в качестве центрального процессора в таких компьютерах как ZX Spectrum, MSX, Amstrad CPC и многих других. Применялся в таком же качестве в консолях ColecoVision, Sega Master System, Game Boy и Game Boy Color. Служил вспомогательным процессором в Commodore 128 и вообще даже такие компьютеры на других процессорах как Apple II и BBC Micro использовали платы с ним для совместимости с операционной системой CP/M. Для обратной совместимости Z80 включался в качестве вспомогательного процессора в состав таких консолей как Sega Megadrive, Game Boy Advance.
До сих пор Z80 и его менее удачные в плане популярности на рынке ПК потомки продолжают держаться на рынке микроконтроллеров, хотя уже порядком сдали позиции множеству конкурентов.

...и немного об Intel 8086

В 1978 году Intel (уже без Федерико Фаджина) выпускает 16–битный микропроцессор, который станет прямым родителем и фундаментом для почти всего современного парка персональных компьютеров. Все современные Intel Core и т.п. (семейство x86) поддерживают до сих пор его систему команд и способны исполнять его машинный код без перекомпиляции. Сам же 8086 не сохранит двоичной совместимости ни с каким из вышеперечисленных процессоров, однако перед командой разработчиков ставилась более скромная цель — добиться, чтобы исходные коды на ассемблере для Intel 8080 могли быть автоматически оттранслированы в рабочий машинный код для 8086 без изменений или с минимальными изменениями.
Эта цель достигалась тем, что регистры общего назначения x86 хоть и были 16–битными и назывались иначе в своём родном ассемблерном синтаксисе, но некоторые из них могли быть приведены по смыслу к регистрам и регистровым парам 8080. Набор же инструкций 8086 был настолько богаче, что с лихвой покрывал все операции и режимы адресации 8080. Поэтому не будет сильным преувеличением утверждать, что истоки современных домашних компьютеров можно отследить к далёкому 1971–ому году

Страницы: 110 11 12 13 14 15 Следующая »

/ Форум / Флейм / Железо

2001—2018 © GameDev.ru — Разработка игр