Эволюция процессоров. Часть 1: 8-битная эпоха
Совсем недавно мы рассказывали вам об истории развития видеокарт (часть 1, часть 2, часть 3 и часть 4), начиная от первых графических адаптеров MDA и CGA и заканчивая новейшими архитектурами AMD и NVIDIA. Теперь настала очередь проследить за тем, как развивались центральные процессоры — не менее важная составляющая любого компьютера. В этой части материала речь пойдет о 1970-х годах, а следовательно, первых 4- и 8-битных решениях.
Первые центральные процессоры были многоножками
1940–1960-е годы
Прежде чем углубляться в историю развития центральных процессоров, необходимо сказать несколько слов о развитии компьютеров в целом. Первые CPU появились еще в 40-х годах XX века. Тогда они работали с помощью электромеханических реле и вакуумных ламп, а применяемые в них ферритовые сердечники выполняли роль запоминающих устройств. Для функционирования компьютера на базе таких микросхем требовалось огромное количество процессоров. Подобный компьютер представлял собой огромный корпус размером с достаточно большую комнату. При этом он выделял большое количество энергии, а его быстродействие оставляло желать лучшего.
Компьютер, использующий электромеханические реле
Однако уже в 1950-х годах в конструкции процессоров стали применяться транзисторы. Благодаря их применению инженерам удалось добиться более высокой скорости работы чипов, а также снизить их энергопотребление, но повысить надежность.
В 1960-х годах получила свое развитие технология изготовления интегральных схем, что позволило создавать микрочипы с расположенными на них транзисторами. Сам процессор состоял из нескольких таких схем. С течением времени технологии позволили размещать все большее количество транзисторов на кристалле, в связи с чем количество используемых в CPU интегральных схем сокращалось.
Тем не менее архитектура процессоров была всё ещё очень и очень далека от того, что мы видим сегодня. Но выход в 1964 году IBM System/360 немного приблизил дизайн тогдашних компьютеров и CPU к современному — прежде всего в плане работы с программным обеспечением. Дело в том, что до появления этого компьютера все системы и процессоры работали лишь с тем программным кодом, который был написан специально для них. В своих ЭВМ компания IBM впервые использовала иную философию: вся линейка разных по производительности CPU поддерживала один и тот же набор инструкций, что позволяло писать ПО, которое работало бы под управлением любой модификации System/360.
Компьютер IBM System/360
[Источник изображения](http://www-03.ibm.com/ibm/history/ibm100/images/icp/T114212C01873C04/us en_us ibm100 system_360 360genrl__620x350.jpg)
По своей архитектуре процессор IBM System/360 являлся CISC-решением. Как вы знаете, все интегральные схемы делятся на две большие категории: RISC (Reduced Instruction Set Computer) и CISC (Complex Instruction Set Computer). Вторые работают со сложными инструкциями, а первые — с упрощенными. С точки зрения современных достижений, сложность инструкций для CISC-процессоров заключается в том, что их длина не ограничена. Вдобавок к этому они могут содержать сразу несколько арифметических действий. Однако в то время дизайн RISC не существовал в принципе, и IBM, а также другие производители использовали CISC-архитектуру вплоть до 1980-х годов.
У System/360 были и некоторые другие особенности. Например, в компьютере впервые был реализован 8-битный байт — до этого объем байта составлял 6 бит. Также System/360 стал первой 32-разрядной системой в истории. Также компьютер умел работать с виртуальной памятью, а старшие модели линейки поддерживали технологию виртуальных машин. Словом, процессор System/360 уже во многом напоминал современные решения.
Несмотря на высокую стоимость, System/360 стал относительно успешным на рынке. Во время презентации компьютера во всех городах США присутствовало порядка 100 тысяч бизнесменов, говорится в официальном пресс-релизе IBM от 7 апреля 1964 года. В первый месяц американская компания получила более 1000 заказов на IBM System/360 и еще одну тысячу в последующие четыре месяца. Для того времени цифры более чем впечатляющие. Компьютеры System/360 также активно использовались агентством NASA для управления космическими полетами в ходе программы «Аполлон».
IBM zSeries до сих пор поддерживают работу программного обеспечения, написанного для платформы System/360
Возвращаясь к теме совместимости System/360, нужно подчеркнуть, что IBM уделила очень много внимания данному аспекту. Например, современные компьютеры линейки zSeries до сих пор поддерживают работу программного обеспечения, написанного для платформы System/360.
Не стоит забывать и о компании DEC (Digital Equipment Corporation), а именно о ее линейке компьютеров PDP (Programmed Data Processor). Фирма была основана в 1957 году, и в 1960 году выпустила свой первый миникомпьютер PDP-1. Устройство представляло собой 18-битную систему и по размерам было меньше, чем мейнфреймы того времени, занимая «всего лишь» комнатный угол. В компьютер был интегрирован ЭЛТ-монитор. Интересно, что первая в мире компьютерная игра под названием Spacewar! была написана именно под платформу PDP-1. Стоимость компьютера в 1960 году составляла 120 тысяч долларов США, что было значительно ниже цены других мейнфреймов. Тем не менее PDP-1 не пользовался особой популярностью.
Первым коммерчески успешным устройством DEC стал компьютер PDP-8, выпущенный в 1965 году. В отличие от PDP-1, новая система была 12-битной. Стоимость PDP-8 составляла 16 тысяч долларов США – это был самый дешевый миникомпьютер того времени. Благодаря столь низкой цене устройство стало доступно промышленным предприятиям и научным лабораториям. В итоге было продано около 50 тысяч таких компьютеров. Отличительной архитектурной особенностью процессора PDP-8 стала его простота. Так, в нем было всего четыре 12-битных регистра, которые использовались для задач различного типа. При этом PDP-8 содержал всего 519 логических вентилей.
Компьютер PDP-8. Кадр из фильма «Три дня Кондора»
Архитектура процессоров PDP напрямую повлияла на устройство 4- и 8-битных процессоров, о которых и пойдет речь далее.
Intel 4004
1971 год вошел в историю как год появления первых микропроцессоров. Да-да, таких решений, которые используются сегодня в персональных компьютерах, ноутбуках и других устройствах. И одной из первых заявила о себе тогда еще только-только основанная компания Intel, выпустив на рынок модель 4004 — первый в мире коммерчески доступный однокристальный процессор.
Прежде чем перейти непосредственно к процессору 4004, стоит сказать пару слов о самой компании Intel. Её в 1968 году создали инженеры Роберт Нойс и Гордон Мур, которые до того момента трудились на благо компании Fairchild Semiconductor, и Эндрю Гроувом. Кстати, именно Гордон Мур опубликовал всем известный «закон Мура», согласно которому количество транзисторов в процессоре удваивается каждый год.
Уже в 1969-ом, спустя всего лишь год после основания, компания Intel получила заказ от японской компании Nippon Calculating Machine (Busicon Corp.) на производство 12 микросхем для высокопроизводительных настольных калькуляторов. Первоначальный дизайн микросхем был предложен самой Nippon. Однако такая архитектура не приглянулась инженерам Intel, и сотрудник американской компании Тед Хофф предложил сократить число микросхем до четырех за счет использования универсального центрального процессора, который бы отвечал за арифметические и логические функции. Помимо центрального процессора, архитектура микросхем включала оперативную память для хранения данных пользователя, а также ПЗУ для хранения программного обеспечения. После утверждения окончательной структуры микросхем продолжилась работа над дизайном микропроцессора.
В апреле 1970 года к команде инженеров Intel присоединился итальянский физик Федерико Фаджин, который до этого также работал в компании Fairchild. У него был большой опыт работы в области логического проектирования компьютеров и технологий МОП (металл-оксид-полупроводник) с кремниевыми затворами. Именно благодаря вкладу Федерико инженерам Intel удалось объединить все микросхемы в один чип. Так увидел свет первый в мире микропроцессор 4004.
Процессор Intel 4004
Что касается технических характеристик Intel 4004, то, по сегодняшним меркам, конечно, они были более чем скромные. Чип производился по 10-мкм техпроцессу, содержал 2300 транзисторов и работал на частоте 740 кГц, что означало возможность выполнения 92 600 операций в секунду. В качестве форм-фактора использовалась упаковка DIP16. Размеры Intel 4004 составляли 3×4 мм, а по бокам располагались ряды контактов. Изначально все права на чип принадлежали компании Busicom, которая намеревалась использовать микропроцессор исключительно в калькуляторах собственного производства. Однако в итоге они позволили Intel продавать свои чипы. В 1971 году любой желающий мог приобрести процессор 4004 по цене примерно 200 долларов США. К слову, чуть позже Intel выкупила все права на процессор у Busicom, предрекая важную роль чипа в последующей миниатюризации интегральных схем.
Несмотря на доступность процессора, его область применения ограничилась калькулятором Busicom 141-PF. Также долгое время ходили слухи, что Intel 4004 применялся в конструкции бортового компьютера беспилотного космического аппарата «Пионер-10», который стал первым межпланетным зондом, совершившим пролет вблизи Юпитера. Эти слухи напрямую опровергаются тем, что бортовые компьютеры «пионера» имели 18- или 16-битную разрядность, тогда как Intel 4004 был 4-битным процессором. Впрочем, стоит отметить, что инженеры NASA рассматривали возможность его использования в своих аппаратах, однако посчитали чип недостаточно испытанным для таких целей.
Процессор Intel 4040
Спустя три года после выхода процессора Intel 4004 увидел свет его преемник — 4-битный Intel 4040. Чип производился по тому же 10-мкм техпроцессу и работал на той же тактовой частоте 740 кГц. Тем не менее, процессор стал немного «сложнее» и получил более богатый набор функций. Так, 4040 содержал 3000 транзисторов (на 700 больше, чем у 4004). Форм-фактор процессора остался прежним, однако вместо 16-пинового стали использовать 24-пиновый DIP. Среди улучшений 4040 стоит отметить поддержку 14 новых команд, увеличенную до 7 уровней глубину стека, а также поддержку прерываний. «Сороковой» использовался в основном в тестовых устройствах и управлении оборудованием.
Intel 8008
Помимо 4-битных процессоров, в начале 70-х годов в арсенале Intel появилась и 8-битная модель — 8008. По своей сути чип представлял собой 8-битную версию процессора 4004 с меньшей тактовой частотой. Не стоит этому удивляться, потому как разработка модели 8008 велась параллельно с разработкой 4004. Так, в 1969 году компания Computer Terminal Corporation (впоследствии Datapoint) поручила Intel создание процессора для терминалов Datapoint, предоставив им схему архитектуры. Как и в случае с моделью 4004, Тэд Хофф предложил интегрировать все микросхемы в один чип, и в CTC согласились с таким предложением. Разработка плавно шла к своему завершению, но в 1970 году CTC отказались как от чипа, так и от дальнейшего сотрудничества с Intel. Причины были банальны: инженеры Intel не вложились в установленные сроки разработки, а функциональность предоставленного «камня» не соответствовала запросам CTC. Договор между двумя компаниями был разорван, права на все наработки остались у Intel. Новым чипом заинтересовалась японская компания Seiko, инженеры которой хотели использовать новый процессор в своих калькуляторах.
Собираем 8-битный компьютер: как уменьшить количество микросхем до шести
Сочетание старого трюка с кодированием цветов в NTSC и современного железа позволяет собрать на удивление работоспособную машину
В 8-битных системах есть что-то перманентно притягательное: вы можете собрать автономную систему, достаточно мощную, чтобы поддерживать адекватное взаимодействие с пользователем, но достаточно простую, чтобы собрать и запрограммировать её самостоятельно. Большинство современных 8-битных машин, созданных любителями, завязаны на классических процессорах, которые жили в золотой век домашних компьютеров 1980-х годов, когда в качестве дисплеев использовали миллионы телевизоров. Вначале была идея собрать свою машину на базе процессора Motorola 6809 из той же эпохи. Я пытался использовать как можно меньше микросхем, но несмотря на мои старания, мне всё ещё нужно было 13 дополнительных микросхем для работы с ОЗУ и последовательной передачи данных. Тогда я задумался: а что, если я использую более современный 8-битный процессор? Насколько сильно при этом я смогу снизить количество необходимых мне микросхем?
В результате я собрал на нём машину, которая получила название Amethyst. Как любой домашний компьютер, он имеет встроенную клавиатуру и может выдавать аудио и видео. Он также имеет встроенный язык программирования высокого уровня, чтобы пользователи могли писать на нем собственные программы. Мне удалось сократить количество микросхем до шести: ATMEGA1284P CPU, USB-интерфейс и четыре простые интегральные схемы.
ATMEGA1284P (или 1284P) 2008 года выпуска имеет 128 килобайт флеш-памяти и 16 килобайт ОЗУ. Он может работать с частотой до 20 мегагерц. У него на борту есть встроенные контроллеры последовательного интерфейса и 32 цифровых входа / выхода.
Благодаря встроенной памяти и последовательным интерфейсам пропала необходимость в использовании многих вспомогательных чипов. Я мог напрямую генерировать аудио, прерывая и подавая сигнал на ввод / вывод с разной частотой. Таким образом я научился выдавать тон, который, правда, обладал характерной резкостью прямоугольной волны. Но как насчёт генерации аналогового видеосигнала? Неужели для этого потребуется специальное оборудование?
Стандартный трюк
В конце 2018 года я увидел трюк, который Стив Возняк использовал в 1970-х годах, чтобы реализовать в Apple II поддержку цветной графики. В США этот трюк применялся для цветного телевещания в системе NTSC ещё в 1950-х годах.
Изначально американское телевидение было только чёрно-белым и использовало довольно простой стандарт NTSC (разработанный Национальным комитетом по телевизионным системам). Для формирования изображения на экране электронный луч прорисовывал точки на его поверхности, ряд за рядом. Амплитуда принимаемого видеосигнала определяла яркость луча в любом заданном месте вдоль ряда. Затем в 1953 году NTSC был модернизирован для поддержки цветного телевидения, с сохранением совместимости с существующими чёрно-белыми телевизорами.
Инженеры решили представить информацию о цвете в виде высокочастотного синусоидального сигнала. Для этого поднесущая разделялась на два компонента с фазовым сдвигом 90°, каждая из которых подвергалась модуляции. В результате получался сигнал, модулированный и по амплитуде, и по фазе. Амплитуда сигнала определяла насколько насыщенным должен быть цвет. Этот высокочастотный сигнал цветности затем добавлялся к низкочастотному сигналу яркости для создания так называемого композитного видеосигнала. Такой метод до сих пор применяется для многих телевизоров и более дешевых дисплеев.
«Цифровой аналог»: аналоговый композитный цветной видеосигнал, используемый американскими телевизорами [вверху слева], совместим с чёрно-белыми ТВ, поскольку сигнал яркости маскирует высокочастотный синусоидальный сигнал цветности [пунктирная линия]. Фильтрующие контуры разбивают сигнал внутри телевизора. При достаточно высокой скорости передачи битов цифровой сигнал [внизу слева] будет восприниматься так, как если бы он был аналоговым сигналом: разные битовые комбинации дают разные цвета. В этом примере с двумя битами на пиксель можно получить шесть цветов [показано четыре], но более высокая скорость передачи битов позволяет использовать больше цветов.
Чёрно-белый телевизор воспринимает сигнал цветности как шум и игнорирует его. Но цветной телевизор может отделить сигнал цветности от сигнала яркости с помощью фильтрующих контуров.
В 1970-х годах инженеры поняли, что эта схема фильтрации может быть очень полезна для домашних компьютеров, поскольку она позволяет цифровому прямоугольному сигналу имитировать большую часть композитного аналогового сигнала. Поток нулей, отправленный компьютером на телевизор будет воспринят как постоянное низкочастотное аналоговое напряжение, то есть, чёрный цвет. Поток единиц будет рассматриваться как постоянное высокочастотное напряжение, то есть белый цвет. Но при достаточно высокой скорости передачи битов возникнут более сложные двоичные структуры, которые схемы высокочастотной фильтрации распознают как сигналы цветности. Этот трюк позволил Apple II отображать до 16 цветов.
Сначала я подумал, что нужно очень быстро переключать пин ввода / вывода, чтобы напрямую генерировать видеосигнал. Однако вскоре я понял, что с моим 1284P, работающим на тактовой частоте 14,318 МГц, я не смог бы переключать его достаточно быстро, чтобы отобразить более четырех цветов. Дело в том, что его встроенным последовательным интерфейсам потребовалось бы два тактовых цикла для отправки одного бита, что ограничило бы мою тактовую частоту до 7.159 МГц. Apple II для подключения своей внешней микросхемы к видеовыходу использовал быстрый прямой доступ к памяти, в то время как его ЦП был занят внутренней обработкой. Но, поскольку оперативная память моего компьютера интегрирована в микросхему, я не мог использовать этот подход.
Поэтому я заглянул в свои ящики и вытащил четыре микросхемы серии 7400 — два мультиплексора и два параллельно-последовательных сдвиговых регистра. Я смог параллельно установить восемь выводов 1284P и отправлять с них данные одновременно в мультиплексоры и регистры сдвига, которые преобразуют их в высокоскоростной последовательный поток битов. Таким образом, я научился генерировать биты достаточно быстро, чтобы отображать на экране около 215 различных цветов. Однако мне пришлось заплатить за это своей вычислительной мощностью: обработка видеосигнала постоянно съедает 75% ресурсов процессора.
Компактный компьютер
Amethyst — это одноплатный компьютер. Он собран всего из шести интегральных микросхем — процессор, USB-интерфейс и четыре микросхемы серии 7400, которые служат для создания 215-цветного изображения. Клавишные переключатели припаяны непосредственно к плате, которая также поддерживает аудио и четыре последовательных соединения ввода / вывода для периферийных устройств, таких как игровые контроллеры и устройства хранения данных. Писать программы и запускать их можно благодаря встроенной виртуальной машине Forth.
Мне нужна была легковесная среда программирования для пользователей, что и заставило меня выбрать Forth вместо традиционного Basic. Forth — это старый язык программирования для встраиваемых систем, он поддерживает интерактивность и способен эффективно компилировать код. С ним вы можете сделать достаточно много, используя минимальное количество ресурсов. Поскольку 1284P не позволяет выполнять скомпилированный машинный код непосредственно из его ОЗУ, пользовательский код вместо этого компилируется в промежуточный байт-код. Этот байт-код затем подаётся в качестве входных данных на виртуальную машину, запущенную из флэш-памяти 1284P. Код виртуальной машины был написан на ассемблере и оптимизирован вручную, чтобы сделать его максимально быстрым.
Как инженер, работающий в компании, которая производит лазерные 3D-принтеры, я имею доступ к передовым станкам для лазерной резки. Так что я легко спроектировал и изготовил деревянный корпус (подсмотрел отделку под дерево у Atari 2600). Механические переключатели клавиатуры были припаяны непосредственно к одиночной печатной плате Amethyst. У этой клавиатуры есть одна любопытная особенность — отсутствие привычного всем большого пробела. Вместо него — просто кнопка, скромно расположившаяся над клавишей Enter.
Полная схема, PCB-файлы печатной платы и исходный код доступны в моем репозитории на GitHub. Так что вы можете создать свой собственный Amethyst или даже улучшить мой проект. А вдруг вы сможете придумать, как сэкономить ещё парочку микросхем?