Обзоры
Микропроцессоры — сравнительные жизнеописания (почти по Плутарху)
0

Микропроцессоры — сравнительные жизнеописания (почти по Плутарху)

     Статья эта ни в коем случае не претендует на роль обстоятельного обзора или хроники развития "маленькой" вычислительной техники. Более того, ее можно даже назвать субъективной — не в смысле попытки этакой самодеятельности в объяснении сложных вещей простыми словами, а, скорее, в авторском подходе к формированию перечня рассматриваемых реализаций тех или иных идей. Так, например, в этом материале будет упомянут только один (и, к слову, самый представительный) процессор многочисленного семейства Intel x86, и дело здесь не в авторских симпатиях или антипатиях (в конце концов, весь этот материал делался именно на x86-машинах), просто информации о быстроменяющемся Pentium более чем достаточно.
     

     Докомпьютерная эпоха —
     даты, факты, имена

     Итак, все начиналось в 1947 году… Три сотрудника знаменитой сегодня Bell Telephone Laboratories — У. Шокли, В. Брэттейн и Дж. Бардин — продемонстрировали свое новое изобретение — твердотельный полупроводниковый усилительный прибор, названный впоследствии (точнее — в 1948 г., в патенте) транзистором. В 1952 г. американская идея транзистора овладевает умами Европы — так, эксперт по радиолокационным устройствам Британского Королевского сообщества радиолокации Г. Даммер в докладной записке высказал предположение о том, что "…сложные радиоэлектронные устройства могут быть выполнены в виде единого твердотельного блока полупроводника без отдельных наружных соединительных проводов…". Фактически Даммеру принадлежит идея (или авторство технического облика) микросхемы — основы основ современных электронных технологий. Даммер сумел обогнать время пусть по меркам Жюля Верна весьма скромно, но… первый серийный транзистор (а не микросхема) появился на рынке только два года спустя — в 1954 г. Как ни странно, но компания—первопроходец массовой "транзисторофикации" живет и здравствует по сей день — имя Texas Instruments встретится в статье еще не раз.

     Уже в 1955 г. на еще не родившемся рынке полупроводников начинается конкуренция — один из авторов транзистора, У. Шокли, регистрирует в небольшом калифорнийском городе Пало-Альто (Palo Alto) компанию "имени себя" Shockley Semiconductor. Через год Шокли и его соавторы станут нобелевскими лауреатами, а в 1957 г. по причине необъяснимого сегодня внутреннего конфликта в Shokley Semiconductor ее покинут восемь высококвалицированных сотрудников для организации еще одной конкурирующей и "долгоиграющей" на рынке компании со звучным именем Fairchild Semiconductors. В 1958 г. идея Даммера материализовалась — Texas Instruments продемонстрировала первую микросхему, а меньше чем через год молодое "законное дитя" ("Fairchild" перевести достаточно трудно, но такая интерпретация почему-то больше всего нравится автору) анонсировала первый ставший надолго де-факто стандартным планарный технологический процесс производства транзисторов, предвещавший массовую микроминиатюризацию в ближайшие два года. В этом же 1959 г. и техассцы, и их конкуренты из Fairchild начали экспериментальное производство интегральных схем, или просто микросхем.

     1960 г. ознаменовался первыми "залпами тяжелых орудий" на маленьком полупроводниковом фронте — уже тогда IBM развернула автоматизированное производство полупроводников. Несмотря на присущие "голубому гиганту" напористость и высокую культуру производства, творческий потенциал молодой Fairchild отстоял первое место, приступив в 1961 г. к серийному выпуску коммерческих микросхем. Новая эпоха началась — через семь лет (в 1968-м) из Fairchild уйдут для организации новой собственной компании два сотрудника — Р. Нойс (Robert Noyce) и Г. Мур (Gordon Moore), а уже в 1969—1970 гг. новообразованная Intel продемонстрирует миру свои способности: первый 4-битовый микропроцессор 4004 и чип оперативной памяти невиданной емкости (целый один килобайт!)
     

     Сравнивая яблоки с бультерьерами…

     Сегодня, когда любой отважный и желающий может как за пару гривен приобрести на радиорынке достаточно мощный однокристальный микрокомпьютер, так и за большую (но вполне доступную) сумму — нечто, превосходящее по производительности первые суперкомпьютерные детища Сеймура Крея, говорить о сравнении тех или иных процессоров/контроллеров — занятие, заранее обреченное на провал. Для массы задач, которые ставит перед разработчиками действительность, бывает более чем достаточной производительность копеечной микросхемы, спроектированной чуть ли не 20 лет назад. И совершенно неважно, что разрядность этого микрокомпьютера просто смешная — 8 бит, быстродействие некрасиво выглядит в MIPS-единицах, да и объемы оперативной/долговременной памяти звучат просто анекдотично, — десятки ведущих производителей полупроводниковых компонентов "штампуют" подобные чипы в необъятных количествах, а инженеры с кажущимся необъяснимым упорством используют их в самых перспективных разработках.

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

     Микропроцессор глазами разработчика

     Увы, без этой обязательной вступительной части весь дальнейший материал станет не просто безвкусным, а в некотором смысле и вообще неудобоваримым. Доступность и дешевизна ПК — явление, безусловно, хорошее, но… Сформировавшееся племя "новых специалистов", в любой ситуации слепо следующих правилу "для решения задачи А надо взять мощный ПК и найти программу, решающую задачу А", с одной стороны, радует своей многочисленностью, с другой — вызывает взрывоподобный рост стоимости реализаций самых примитивных проектов. Наглядных примеров — более чем достаточно, но один, с которым сталкивались в реальной жизни многие читатели и сам автор, не привести просто нельзя…

     Большинство обладателей дешевых модемов хорошо знакомы с проблемой правильного определения сигнала "занято" — ну недоступно выполнение этой операции специализированному и оптимизированному цифровому сигнальному процессору, упрятанному в модемный чипсет. Между тем "самопальный" телефон с АОН, разработанный отечественным народным умельцем, умудряется прекрасно справляться с подобной задачей, "ворочая" байты смешным двухрублевым микропроцессором Z80. Этот факт сам по себе говорит о двух вещах — неистребимости духа Левши и некоторых удивительных качествах Z80…

     С точки зрения "компьютерного Левши", любой микропроцессор, выбирающийся для компьютеризации очередной "блохи", характеризуется множеством факторов, главными из которых являются: регистровая архитектура, система команд и особенности аппаратного интерфейса. Выражаясь более или менее человеческим языком, разработчика интересуют "внутренности" процессора, доступные программными средствами, возможности и удобство программирования и, наконец, приспособленность процессора к "мирному" и простому сосуществованию с другими необходимыми аппаратными компонентами вычислительной системы.
     

     Самые знаменитые "малыши"

     Речь здесь пойдет о вечно молодых и совершенствующихся день ото дня процессорах, попадающих в условный класс "малоразрядных", а точнее — 8-битовых. Эти незаметные труженики не собираются сдавать позиции в эпоху сверхдешевых вычислений, наоборот — благодаря им стало возможным появление огромного спектра сильно "поумневших" бытовых устройств, обеспечивающих доступный, массовый и ежедневный комфорт.

     Первый объект, на сегодняшний день ставший призраком, по большому счету не совсем достоин призового места на "микропроцессорной доске почета". Но все-таки Intel 8080 был первым достаточно мощным микропроцессором и прекрасной "учебной партой" для целого поколения специалистов (к коему автору хватает нескромности причислять и себя — именно с i8080, в советском исполнении именуемого К580ИК80, начиналась и моя "творческая" биография). Кроме этих двух достоинств, 8080 был достаточно убог — три напряжения питания (+5, -5 и +12 V) доставляли неизменную радость разработчикам, регистровая архитектура ничем особенно выдающимся не отличалась, система команд, подкупающая простотой, при решении реальных задач легко доводила до белого каления "вскормленных" фантастически удобной на уровне ассемблера PDP-11 (у нас называемой СМ ЭВМ) программистов.

     Итак, i8080. Классика. Семь 8-битовых регистров (обычно именуемых буквами из диапазона A—L, рис. 1), шесть из которых могут выступать в качестве 16-битовых регистровых пар (BC, DE, HL). 16-битовый счетчик команд (PC), допускающий адресацию до 64 KB ОЗУ, отдельный 16-битовый указатель стека (SP) — области памяти, находящейся в основном или вообще в отдельном адресном пространстве, доступ к которому осуществлялся с помощью автоматически формируемого при выполнении команд вызова подпрограмм (CALL), возврата из подпрограмм (RET) и доступа к стеку (PUSH/POP) аппаратного сигнала. Отдельные команды доступа и специальный режим адресации до 256 устройств ввода/вывода, два аппаратных источника сигналов прерывания (проще говоря — выводов микросхемы, подача напряжения определенного уровня на которые вызывает автоматическое выполнение процедуры прерывания, весьма схожей с обычным вызовом подпрограммы), очень неудобный, особенно во времена дорогих микросхем, способ идентификации источника прерывания (осуществляющийся передачей 8-битового слова-вектора от устройства, вызвавшего прерывание, на шину данных процессора).

     Система команд достаточно развитая и включает операции как над парами регистров (типа сложения содержимого двух регистров), так и над более экзотическими сочетаниями (регистр — ячейка ОЗУ, регистровая пара — две соседние ячейки ОЗУ, и, наконец, непосредственно над ячейками ОЗУ). К слову, i8080 вполне можно назвать первым образчиком CISC-процессоров (со сложным набором команд) и на его примере обнаружить достаточно хорошо заметную грань, отделяющую CISC от RISC, — ни один RISC-процессор принципиально не умеет производить операции якобы непосредственно над ячейками ОЗУ, RISC-идеология требует обязательной загрузки содержимого обрабатываемой ячейки в регистр процессора, выполнения необходимой операции над этим регистром и записи содержимого регистра в ту же ячейку. Несмотря на кажущуюся достаточность системы команд, i8080 не имел инструкций непосредственной манипуляции отдельными битами в регистрах и очень ограничивал возможности программиста слабостью способов адресации данных в оперативной памяти. Фактически в i8080 возможны были только непосредственный (полный адрес необходимой ячейки ОЗУ содержится в выполняемой команде) и косвенный (полный адрес ячейки ОЗУ находится в одной из регистровых пар) способы адресации. "Снаружи" — на уровне выводов и сигналов на них — i8080 буквально вынуждал "увешивать" даже минимальную конструкцию на этом процессоре всевозможными дополнительными микросхемами, к чести тогда еще молодой компании Intel, очень быстро разработанными.

     В качестве итога краткого описания i8080 могу сказать только пару слов — этот процессор вызывает приступы ностальгии по бессонным ночам, запаху канифоли и первым радостям побед над казавшимся тогда "сверхсложным" устройством…

     По логике вещей, упомянув о i8080, следовало бы продолжить нашу историю рассказом об "убийце" этого семейства, поставившем последнюю точку в его истории, — сверхпопулярном, сверхудачном, сверхудобном и еще сколько хотите "сверх…" Z80 компании Zilog. Но… Был приблизительно в тот же период времени совершенно чудесный процессор, с исторической точки зрения ставший, можно сказать, тупиковой ветвью эволюции. Именно ему обязаны своим шумным успехом и неувядающая Apple, и незаслуженно забытая Commodore, и, наконец, прародительницы компьютерных игр Atari и Nintendo. Речь идет об уникальном во всех смыслах микропроцессоре 6502 — разработке компании MOS Technologies, основанной покинувшим Motorola сотрудником и впоследствии ставшей подразделением Commodore. В отличие от i8080, 6502 буквально поражает даже не простотой, а элементарностью архитектуры. В ней явно отражена попытка решения главной микропроцессорной проблемы того времени — несоответствия быстродействия процессора и ОЗУ. До сих пор эта проблема актуальна (быстродействие процессора превосходит временные возможности ОЗУ), и ей не найдено действительно хорошего решения. Только в семидесятые годы все было с точностью до наоборот: процессоры были слишком "неповоротливыми" и не позволяли полностью утилизировать производительность подсистемы оперативной памяти. В MOS Technologies нашли простое и красивое решение затейливой "задачке", создав процессор, ориентированный на интенсивную работу с памятью.

     По сегодняшний день отыскать нечто "вычисляющее", способное конкурировать по простоте с 6502 очень трудно — его регистровая архитектура (рис. 2) включает всего четыре 8-битовых регистра и 16-битовый счетчик команд. Регистра данных (аккумулятор A), указателя стека (S) и двух индексных регистров (X, Y) оказалось более чем достаточно для реализации очень удобной и мощной системы команд. Индексные регистры позволили расширить доступные способы адресации за счет страничной организации памяти: 8-битовое содержимое X/Y выступало либо в качестве смещения в диапазоне от -128 до +128 относительно содержимого счетчика команд, либо использовалось как короткий физической адрес в так называемой "нулевой" странице (ячейки оперативной памяти с адресами 0—255), что значительно увеличивало скорость выполнения многих "правильно" написанных программ. Существенным отличием от "традиционно" принятой была и реализация стека — он размещался в странице памяти с номером 1 (ячейки ОЗУ с адресами в диапазоне 256—511) и, соответственно, имел ограниченную глубину. Впоследствии по этому же принципу будут реализованы стеки большинства стандартных де-факто микроконтроллеров.

     Система команд 6502 включала интересные короткие переходы (в пределах 256-байтовой страницы), длинные переходы между страницами и вызовы подпрограмм (естественно, с автоматическим сохранением значения счетчика команд на стеке), небольшой набор стандартных арифметических и логических операций и ряд уникальных, "намертво привязанных" к страничной архитектуре, очень удобных для программиста команд.

     В отличие от i8080, ставшего не более чем реликвией, 6502 до сих пор "живее всех живых", правда, в "железе" практически не выпускается — малое количество элементов и архитектурное изящество сделали его очень популярным среди разработчиков аппаратуры на основе программируемой логики. Существует ряд компаний, продающих "прошивки" микросхем FPGA, позволяющие в кратчайшие сроки создавать уникальные, ориентированные на потребности заказчика электронные устройства на основе "микропроцессорного ядра 6502".

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

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

     Что же такого удивительного было в Z80? О полной совместимости с i8080 больше говорить не хочется, но вот на "расширениях" и улучшениях остановиться стоит. Регистровая архитектура Z80 соответствует своему прообразу, но с тремя важными отличиями (рис. 3): во-первых, в Z80 были реализованы два совершенно идентичных набора регистров 8080 (обычно называемых банками регистров), во-вторых, добавлены два индексных 16-битовых регистра (IX и IY), в-третьих, появился специальный регистр быстрой страничной адресации (как в 6502) для обработки прерываний. Результатом таких "незначительных усовершенствований" стали чуть ли не легендарные способности Z80: очень быстрое сохранение/восстановление содержимого регистров при обработке прерываний — одной командой переключения банков регистров (в i8080 эта операция требовала выполнения нескольких медленных операций со стеком), расширенные способы адресации данных в памяти. Система команд Z80 включает полный набор инструкций i8080 и еще множество очень удобных операций — от манипулирования отдельными битами до однокомандных пересылок (или ввода/вывода) блоков данных определенного размера и поиска в областях памяти. Кроме документированных, официально объявленных Zilog инструкций, реальные Z80 "понимают" множество очень интересных и нигде не описанных команд, процесс выявления которых продолжался, похоже, еще пару лет назад.

     Аппаратный интерфейс Z80 доставляет удовольствие при работе с этим процессором по сей день — в нем впервые был встроен контроллер регенерации динамического ОЗУ — памяти, именуемой DRAM и использующей в качестве запоминающих элементов аналоги конденсаторов, имеющих свойство со временем терять заряд (или попросту — разряжаться). Регенерация DRAM — задача не из простых и, что самое неприятное, требующая постоянных (один раз в несколько миллисекунд) затрат времени процессора — так, в микропроцессорном комплекте Intel 8080 микросхема управления DRAM останавливала и без того не блещущий быстродействием i8080 во время регенерации, что снижало производительность всей системы в целом. Z80 предлагал очень удачную альтернативу — во-первых, дополнительных дорогих микросхем не требовалось, во-вторых, регенерация DRAM выполнялась "прозрачно" и постоянно — в моменты внутренней обработки команды процессором.

     Все эти качества Z80 очень помогли сэру Клайву Синклеру создать знаменитый по-настоящему персональный компьютер Sinclair, а японской компании Yamaha — наводнить мир не менее известными и весьма симпатичными учебными ПК. Ну и, наконец, компания Zilog живет и по сей день, выпуская массу очень популярных встраиваемых контроллеров, основанных в том числе и на процессорном ядре Z80. Успех Z80 был, можно сказать, ошеломляющим… Но и он меркнет по сравнению с продолжающейся и сейчас среди разработчиков "умного железа" истерией мирового масштаба, вызванной одной из самых эксцентричных разработок Intel — настоящим ПРОЦЕССОРОМ 8051. Практически без всяких архитектурных изменений эта микросхема выпускается десятками производителей в огромных количествах уже больше 15 лет, ей посвящены сотни учебников.

     О 8051, новых семействах 8-битовых RISC-процессоров и лучших представителях "больших" 32-разрядных не-x86-микросхем читайте в следующем номере.


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: