`

Schneider Electric - Узнайте все про энергоэффективность ЦОД


СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

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

+11
голос

В рамках публикации архивных материалов предлагаем вашему вниманию статью «Микропроцессоры — сравнительные жизнеописания» из № 33 (202) «Компьютерного Обозрения» от 1 сентября 1999 г.

ЧАСТЬ 1

Статья эта ни в коем случае не претендует на роль обстоятельного обзора или хроники развития «маленькой» вычислительной техники. Более того, ее можно даже назвать субъективной — не в смысле попытки этакой самодеятельности в объяснении сложных вещей простыми словами, а, скорее, в авторском подходе к формированию перечня рассматриваемых реализаций тех или иных идей. Так, например, в этом материале будет упомянут только один (и, к слову, самый представительный) процессор многочисленного семейства 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-разрядных 86-микросхем в следующей части.

ЧАСТЬ 2

Как и было обещано в первой части, настало время рассказать об одном из САМЫХ-САМЫХ процессоров Intel. Собственно говоря, 8051 — микроконтроллер (функционально завершенное однокристальное изделие, объединяющее процессор, оперативную и постоянную память, а также ряд необходимых «периферийных» устройств), поэтому его появление в обзоре, посвященном микропроцессорам, может показаться несколько странным. Не пытаясь оправдываться, могу привести следующие аргументы в пользу крайней необходимости выделения почетного места для 8051 в этом условном микропроцессорном пантеоне: во-первых, существует «чистый процессор» 8031, не имеющий на кристалле памяти программ (или ПЗУ), во-вторых... просто это один из любимых автором процессоров.

Эксцентричным 8051 был назван в предыдущей части статьи совершенно не случайно — архитектурные решения, заложенные в него конструкторами, абсолютно не соответствуют расхожим представлениям об Intel как о компании, «выпускающей Пентиумы». Если все рассмотренные в первой части статьи CPU относились к обширному классу «машин с единой памятью команд и данных», то 8051 — первый субъект «чистой гарвардской архитектуры». Главное отличие «гарвардских машин» — разделение памяти команд и данных (на всех аппаратных уровнях — шин, микросхем памяти и т. д.), позволяет существенно повысить скорость вычислений, допуская одновременную выборку кода команды и сопутствующих этой команде данных. Более традиционные процессоры вынуждены выполнять эту процедуру последовательно. Сегодня «гарвардским духом», конечно, никого не удивишь, но и у 8051 это не единственная изюминка...

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

Регистровая архитектура «пятьдесят первой» (рис. 1) позволяет взглянуть на Intel по-новому: здесь есть все (или почти все) — необходимый для гибкой адресации и быстрого выполнения арифметических команд блок базовых регистров, четыре банка регистров (по 8 в каждом) с гибкими способами переключения, совершенно уникальная область «битового процессора» и, наконец, ОЗУ емкостью 80 байтов для пользовательских переменных и стека. Регистровые банки 8051 очень напоминают более новомодные регистровые окна во «взрослых» RISC-процессорах, что, несомненно, сказалось на формировании развитой техники программирования 8051-совместимых процессоров: вероятнее всего, ни для одного 8-битового CPU (за исключением Z80) не существует такого разнообразия технологических программных пакетов (компиляторов с языков высокого уровня, операционных систем реального времени). Битовый процессор 8051 представляет собой 16-байтовую область памяти, каждый бит которой имеет уникальный адрес, позволяющий с помощью ряда команд выполнять быстрые операции над отдельными битами многоразрядных слов. Этот элемент архитектуры — «главный виновник» неувядающей популярности 8051: во-первых, ни в одном процессоре ничего подобного не существует, во-вторых, быстрые битовые операции — основа основ самых разнообразных программ из «реальной жизни» — управляющих, коммуникационных и вычислительных.

Блок базовых регистров включает привычный 16-битовый счетчик команд (PC), два 8-битовых аккумулятора (A и B, поддерживающих аппаратные команды умножения и деления), 8-битовый указатель стека (SP) и «длинный» (16-битовый) индексный регистр памяти данных. Фактически блок базовых регистров 8051 представляет собой основу достаточно функционального микропроцессора, позволяющего на «все сто» использовать до 128 KB памяти (по 64 KB для памяти программ и данных).

Система команд и пять способов адресации данных и команд дают программисту довольно мощные механизмы и отлично подходят для разработки компиляторов с языков высокого уровня. Кажущаяся «миниатюрность» 80-байтового ОЗУ на деле обеспечивает достаточное пространство для реализации даже таких сложных алгоритмов, как, например, стек TCP/IP.

Аппаратные интерфейсы всех представителей семейства «x51» очень удобны (малое число выводов, простые и подходящие для реализации малосерийных изделий небольшими производителями корпуса микросхем) — все это изрядно «подливает масла в огонь» негаснущего костра популярности 8051.

Сегодняшнее состояние пятьдесят первого семейства убедительно доказывает, что эти процессоры, пережившие ушедшие в прошлое 80386 и 80486, вероятнее всего, переживут и Pentium III... По крайней мере, сама Intel продолжает их выпускать и совершенствовать, Philips на основе процессорного ядра 8051 производит несколько десятков самых разных микроконтроллеров, Dallas Semiconductor славится «реактивными» версиями «пятьдесят первых», у которых эквивалентная тактовая частота (по сравнению со «стандартной» intel 8051) составляет... 99 MHz, Standard Micro (SMC) интегрировала в одной микросхеме для индустриальных потребителей ядро 8051 и полный контроллер сети Arcnet, Analog Devices расширила возможности также ускоренной 8051 чуть ли не до уровня цифрового сигнального процессора. А свидетельством неистребимого интереса разработчиков к этому маленькому шедевру Intel являются самые разнообразные Internet-форумы, посвященные 8051, — по крайней мере, один из них, спонсируемый Philips, своими рассылками способен очень быстро «забить до отказа» несколько сотен мегабайтов винчестера...

САМЫЕ МАЛЕНЬКИЕ RISC

Термин RISC у подавляющего большинства пользователей ПК вызывает ассоциации с настольными суперкомпьютерами астрономической стоимости. К сожалению, на самом деле «большие» RISC-процессоры давным-давно утратили всю прелесть изначальных идей «сокращенного набора команд». Лежащее на моем столе Руководство по процессору R6400 (один из самых популярных «средних» RISC-процессоров, выпускаемых по лицензии MIPS множеством компаний) — лучшее тому подтверждение: как-то не поворачивается язык назвать RISC-машиной процессор с несколькими сотнями команд, количество которых увеличивается чуть ли не до тысячи с учетом возможных способов адресации. С другой стороны, не все так плохо — настоящие RISC-машины существуют, а их розничная цена позволяет, сэкономив на нескольких пачках хороших сигарет, даже обзавестись собственной и вдоволь с ней «наиграться»...

Несмотря на то что отличительные черты хорошего RISC-процессора никем не определены, есть ряд соображений, позволяющих найти ту тонкую грань, которая отделяет RISC от всего остального. Компактная система команд, ориентированная на выполнение всех операций исключительно над содержимым регистров процессора (например, команда сложения содержимого регистра и ячейки оперативной памяти плохо согласуется с RISC-идеологией), очевидно нуждается в очень эффективной шинной архитектуре и быстродействующем ОЗУ. Подобным требованиям прекрасно соответствует гарвардская архитектура (отдельная память команд и данных). Кроме того, возрастающее количество простых команд, необходимых для выполнения того или иного высокоуровневого действия (иначе говоря, операции на языке высокого уровня), вынуждает для достижения приемлемого быстродействия сокращать время выполнения одной машинной команды — в идеале до одного периода тактовой частоты. Соответственно команды должны быть очень короткими (т. е. читаться из памяти «за один прием»). Но как быть с такими важными операциями, как вызовы подпрограмм и условные переходы, — ведь в машинном представлении они должны содержать адрес, изменяющий «поток инструкций»? Вот здесь и кроется та самая малозаметная «грань» — хороший и «настоящий» RISC-процессор должен быть основан на гарвардской архитектуре с различной разрядностью памяти данных и памяти команд (команда длиннее данных). В этом случае в команду можно «упаковать» или непосредственные данные (как, например, в команде «загрузить в регистр N число 232»), или адрес («перейти к выполнению команды, находящейся в ОЗУ по адресу 12567»).

Существует несколько десятков различных микропроцессоров/контроллеров, обладающих этими ярко выраженными признаками, и все уважающие себя производители чипов обязательно имеют в своем арсенале что-либо подобное. Но так уж получилось, что массовое признание завоевали процессоры семейства PIC (Microchip) и AVR (Atmel). Заслуживающим более детального рассмотрения, на взгляд автора, все-таки является AVR-семейство процессоров (по крайней мере, эти чипы обладают всеми признаками полнофункциональных и расширяемых микрокомпьютеров).

Микропроцессорное ядро Atmel AVR — пожалуй, самое простое, лишенное всяческих причуд и очень удобное для программирования. Его разработчики, в отличие от любящей погреться под калифорнийским солнцем корпорации Atmel, находятся в куда более суровом климате Норвегии (вот еще один хороший пример, как можно производить микросхемы, не имея полупроводникового производства). Знаменитые скандинавские невозмутимость и спокойствие буквально ощущаются в AVR — «просто, добротно, надежно, хорошо». Правда, при этом по-американски быстро.

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

Регистровая архитектура AVR включает достаточное для большинства приложений число 8-битовых регистров (32), 16-битовый счетчик команд (PC) и 16-битовый указатель стека (SP). Большая разрядность команды (16 битов) позволила реализовать очень мощный набор «коротких» (требующих одного обращения к памяти) инструкций и обеспечить высокую производительность — до 8 MOPS (миллионов операций в секунду). Характерная особенность AVR — чрезвычайно развитые способы адресации данных, поддерживающиеся возможностью использования трех пар регистров (X, Y, Z на рис. 2) в качестве индексных указателей. По числу способов адресации AVR уступает разве что только куда более мощным и проверенным временем классическим CISC-процессорам Motorola.

МОНСТРЫ

От восьмибитовых «малышей»-тружеников приходится сразу переходить к очень сложным многоразрядным процессорам. Промежуточная «ветвь» эволюции — 16-битовые вычислители — фактически оказалась тупиковой, и достойных представителей немногочисленного 16-разрядного племени найти очень и очень трудно (существуют, правда, модификации микропроцессора 8051 с повышенной до 16 бит разрядностью, но сравнимой со своим предшественником популярности они не получили). С современной точки зрения «гром» перехода к 32-битовым архитектурам грянул с выходом в сентябре 1979 г. процессора Motorola M68000, первого в семействе 680×0, заслуженно названного «мэйнфреймом на кристалле»: хоть и были 32-разрядные процессоры, появившиеся раньше (например, Zilog Z8000), но их роль оказалась слишком незначительной...

Итак, Motorola 68000. Об этом процессоре можно писать многотомные книги, и все равно что-нибудь обязательно останется «за бортом». Смешная по сегодняшним меркам степень интеграции (всего 69 тыс. транзисторов), невысокое быстродействие (тактовая частота до 20 MHz) — казалось бы, в современном мире этим чипам найти место очень трудно. Но очевидные, на первый взгляд, вещи обязательно таят в себе какой-нибудь подвох. Как только речь заходит об очень сложных системах, критичных к надежности, семейство 680×0 всегда на первых местах. В качестве примера можно привести один из самых дорогих военных проектов США — атомную подводную лодку Seawolf SSN21 стоимостью свыше 1 млрд. долл. Боевое управление подсистемами лодки, способной погружаться на глубину до 610 м, двигаться в погруженном состоянии со скоростью 35 морских миль (почти 65 км/ч) и оснащенной атомным реактором мощностью 52 тыс. лошадиных сил, доверено распределенной вычислительной системе, содержащей свыше 70 процессоров M68030 (максимальная тактовая частота которых не превышает 50 MHz, а производительность — 18 MIPS). Заподозрить американский ВПК в чрезмерной склонности к экономии трудно, тогда чем же можно объяснить подобный выбор — ведь проект Seawolf начинался в 1989 г., а первые лодки сошли со стапелей аж в 1997-м — в годы расцвета мощных и дешевых процессоров x86-архитектуры и сверхпроизводительных, относительно недорогих RISC?

Вероятнее всего, что ответ на этот вопрос кроется именно в особенностях «мотороловских» процессоров и, в первую очередь, в объекте нашего рассмотрения — M68000. Появившийся несколько позже i8086, M68000 был ощутимо дороже и разительно отличался от выбранного IBM в качестве основного процессора первой PC. Начну с того, что M68000 — действительно 32-разрядный процессор, с целью экономии оснащенный сокращенными внешними шинами: 24-битовой — адреса и 16-битовой — данных. В 1979 г. микросхемы были очень дорогими, и подобная политика способствовала продвижению процессоров с «урезанными» шинами на рынке, снижая стоимость реализации систем на их основе за счет как сокращения количества чипов в завершенной системе, так и возможности использования в качестве микросхем расширения уже хорошо проработанных, массовых и недорогих чипов, специально созданных для 8-битовых систем. Несмотря на такую «привязанность» к быстро дешевеющему прошлому, разработчики Motorola нашли и реализовали множество возможностей нацелить процессор в будущее. В отличие от самого серьезного конкурента (8086 от Intel) M68000 поддерживал и линейное несегментированное адресное пространство, и два режима работы (пользовательский и операционной системы, иначе называемый суперпользовательским), и аппаратные интерфейсы с потенциально ненадежной периферией, и, наконец, ориентированные на мультипроцессорные приложения аппаратные особенности.

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

Регистровая архитектура M68000 (рис. 3) — классический образец мощной вычислительной машины со сложным набором команд: две группы 32-битовых регистров общего назначения, разделяющиеся «по специализации» (восемь регистров «данных», семь — «адресов»), два 32-битовых регистра указателей стека (один — пользовательского, второй — суперпользовательского режимов, на рис. 3 — USP/A7 и SSP соответственно) и 32-битовый счетчик команд PC. Система команд 68000, можно сказать, включает все — программирование этого процессора на ассемблере больше напоминает работу с высокоуровневыми языками (правда, не балующими простотой синтаксиса).

Базовая система команд насчитывает всего 56 инструкций (по крайней мере, это чуть ли не в два раза меньше, чем у «классических» MIPS и SPARC RISC-процессоров, вот и разберись теперь, где CISC, а где RISC!), но 14 способов адресации (абсолютный рекорд даже в CISC-мире) увеличивают мощность множества доступных программисту вариаций до немыслимой цифры (даже не берусь точно ее назвать — руководство «Ассемблер 68000» содержит почти тысячу страниц).

Аппаратный интерфейс процессора трудно назвать уникальным, скорее наоборот, к нему лучше подходит термин «консервативный». 24-битовая адресная шина позволяет адресовать всего 16 MB ОЗУ (хотя 32-битовый счетчик команд, естественно, обеспечивает линейное адресное пространство 4 GB), зато дополнительные выводы «состояние процессора» позволяют использовать четыре 16 MB области со строгим функциональным назначением: память данных и программ пользовательского режима и аналогичные — для суперпользовательского. Современная версия M68000, выполненная по малопотребляющим полупроводниковым технологиям (M68EC000), способна работать как с 16-битовой шиной данных, так и в более экономичной (но проигрывающей по скорости) 8-битовой.

Несмотря на продолжительную историю и минимальные изменения, M68000 и остальные представители многочисленных семейств 680×0, 683xx остаются одними из самых популярных микропроцессоров/контроллеров для индустриальных, военных и научных приложений, что стимулируется как высокой надежностью и отработанностью конструкций, так и разумной ценовой политикой Motorola (стоимость M68EC000 с тактовыми частотами от 8 до 20 MHz попадает в ценовой диапазон далеко не лучших 8-битовых микроконтроллеров). Кроме того, исторически сложившееся разнообразие вычислительной техники на этих процессорах привело к формированию громадных «залежей» программного обеспечения (на процессорах семейства M680×0 были основаны и персональные компьютеры Apple, Amiga, и старшие модели Sinclair, и рабочие станции Sun, Apollo, NeXT), что также упрощает применение этих «старичков» в разнообразной «умной» технике даже завтрашнего дня.

По логике вещей, следовало бы продолжить рассказ и о настоящих процессорных «монстрах» — RISC-машинах класса MIPS или SPARC. Однако эти процессоры настолько сложны, что краткое описание способно лишь исказить представление о тенденциях развития систем «псевдо-RISC», да и ценовой диапазон старших моделей вызывает серьезные сомнения в перспективности подобных изделий на нашем рынке. Правда, усилиями производителей альтернативных (по отношению к i86) процессоров ситуация изменяется — IDT, освободившаяся от тяжелых вериг Pentium-совместимых чипов, буквально штурмует рынок высокопроизводительных встраиваемых процессоров, доведя стоимость 32-битовых моделей (клоны MIPS 3000) до нескольких долларов, а 64-битовых (MIPS 4000/5000) — до десятков (так, полноценный 64-битовый процессор, оснащенный FPU с пиковой производительностью более 600 MFLOPS и модулем аппаратной поддержки виртуальной памяти, в зависимости от тактовой частоты стоит $23–55). Аналогичную политику претворяет в жизнь и Fujitsu, активно развивающая линейку «облегченных» микропроцессоров SPARClite, снизив цену младших моделей до просто символической суммы.

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

На одной интересной особенности, свойственной именно семейству процессоров SPARC, следует остановиться. Речь идет о windows (не путайте с программным продуктом) — регистровых окнах. Ориентированность системы команд RISC-машин на выполнение всех арифметических и логических инструкций только над регистрами процессора (так называемая архитектура загрузки/записи — load/store) для повышения производительности требует резкого увеличения числа рабочих регистров процессора. Это требование становится еще жестче, если учесть необходимость быстрой реакции программ (в первую очередь — операционной системы) на различные «внешние» по отношению к вычислительной системе события, отображаемые во «внутреннем» мире процессора прерываниями. В случае поступления сигнала прерывания приостанавливается выполнение текущей задачи и ОС приступает к процедуре обработки прерывания. По окончании обработки выполнение приостановленной задачи возобновляется. Неприятный (в смысле затрачиваемого времени) процесс сохранения/восстановления контекста приостанавливаемой задачи — серьезная головная боль как для разработчиков «железа», так и для системных программистов: чем больше регистров у процессора, тем большее количество их нужно сохранять/восстанавливать в обработчике прерывания. Получается явное противоречие: чтобы RISC-процессор был быстрым, у него должно быть как можно больше регистров, но чтобы реальная система на его основе работала быстро, регистров у процессора должно быть как можно меньше! Конструкторы SUN нашли изящное решение этой проблемы (вероятно, заимствованное у неувядающей идеи регистровых банков i8051): SPARC-процессоры действительно содержат очень много регистров общего назначения (например, SPARClite — 136), но пользовательской программе доступны только 32 из них (так называемое регистровое окно, рис. 4). При этом, как и более привычные «окна» пользовательских графических интерфейсов, регистровые окна перекрываются: 8 регистров являются уникальными для «окна», 8 — общими для окна и его верхнего (см. рис. 4) «соседа», 8 — общими с нижним «соседом», что позволяет очень быстро и эффективно передавать параметры и возвращать значения при вызовах подпрограмм. Отдельная группа из восьми регистров является глобальной — доступной любому процессу независимо от его регистрового «окна». По сути дела эта модель формирует восемь как бы независимых микропроцессоров с очень быстрым переключением средствами операционной системы.

У ПОСЛЕДНЕЙ ЧЕРТЫ...

Естественно, что короткий обзор нескольких микропроцессоров не способен дать полного представления о картине мира вычислений — да и такая цель не преследовалась. Получившийся в результате пантеон вовсе не напоминает мавзолей — большинство рассмотренных процессоров (за исключением i8080) живут и здравствуют, как и их производители, и, вероятнее всего, будут незаметно помогать нам в повседневной жизни ближайший десяток лет. Гонка за сверхпроизводительностью, постепенно уводящая разработчиков менее массовых процессоров с хорошо освещенной гаревой дорожки простоты и эффективности в дебри сверхсложных реализаций, совершенно не интересует крупносерийную промышленность, и слава Богу. Пока здесь царствуют старые добрые семейства i8051, M680×0 и возрождающиеся из пепла клоны 6502, можете быть спокойны и за тормозную систему вашего автомобиля, и за безопасность электрического утюга или стиральной машины — «старый друг лучше новых двух», и он не подведет...


Вы можете подписаться на наш Telegram-канал для получения наиболее интересной информации

+11
голос

Напечатать Отправить другу

Читайте также

 
 
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT