`

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

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

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

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

Человек года

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

Продукт года

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

 

Одной командой и вообще без команд

Статья опубликована в №3 (669) от 3 февраля

+44
голоса

Искусство минимализма – это очищенные от всякого символизма и метафоричности формы, повторяемость, нейтральные поверхности, промышленные материалы и способ изготовления. Функциональность микропроцессора полностью характеризуется набором инструкций, который он способен исполнять.

Соседство двух определений, приведенных в преамбуле, на первый взгляд может показаться неуместным. Но это только на первый взгляд. Минимализм, «прижившийся» в архитектуре, визуальных искусствах и дизайне, похоже, находит себе место и в «системной архитектуре». Последнюю, к слову, также принято считать искусством – достаточно посмотреть, сколько авторов тематических книг в названиях используют вариации «искусства архитектуры». И, раз мы соглашаемся со справедливостью определения функциональности микропроцессора (позаимствованного из солидной книги «Конструкция современных процессоров» Джона Шена и Микко Липасти, 2005 г.) хотя бы в силу его очевидности, то вполне можем согласиться и с возможным определением минимализма компьютерной архитектуры. Под ним мы будем понимать такой наименьший набор команд (машинных инструкций), при котором реализующий его вычислитель остается полноценной универсальной вычислительной машиной (т. е. машиной Тьюринга). И вся эта статья будет посвящена настоящим шедеврам минимализма системной архитектуры – компьютерам, система команд которых состоит из... всего одной команды.

Одной командой и вообще без команд Инженеры-конструкторы Камерон Джонс (Cameron Jones, справа) и Сидни Алонсо (Sydney Alonso, слева) во время разработки первых цифровых синтезаторов Synclavier. Камерон Джонс – создатель не только первого процессора с TTA-архитектурой ABLE (разработка была завершена в 1975 г.) и весьма популярной доступной 16-битовой вычислительной машины на его основе. Он является автором и первого «хака» для этой машины – модифицированного компилятора языка XPL, генерирующего машинный код процессора ABLE (оригинальный компилятор был ориентирован на машины производства Data General)

Не спешите утверждать «это никому не нужно». Вы уже наверняка ошиблись в «не может быть» ранее, даже не предположив возможности существования универсальных компьютеров с одной командой. Как ни странно, но минимализму системной архитектуры находятся применения. Очевидное – в обучении. Логика подсказывает, что чем меньше и проще набор команд вычислительной машины, тем легче, проще реализуется все – от аппаратных средств и микропрограмм, овеществляющих, например, декодер команд (ту часть процессора, которая преобразует битовые поля кода команды в управляющие сигналы), до компиляторов с языков высокого уровня. А простые устройства куда легче изучать, чем сложные. Соответственно, если такие «элементарные» устройства сохраняют присущую их классу фундаментальную функциональность, они становятся чуть ли не идеальной «учебной партой». Менее очевидная область применения минимальных компьютеров (в конце концов, почему бы не называть их и так) – системы со сверхвысоким требованием к надежности, приспособленные к работе в сложных условиях. Например, радиационно-стойкие вычислители для авиационно-космических применений. В подобных прикладных областях чистая вычислительная мощность практически никогда не является основным критерием, для решения множества управляющих задач реального времени достаточно быстродействия порядка нескольких сотен тысяч команд в секунду. Поэтому небольшое количество элементов, простота схемных решений и малая площадь кристалла (для снижения воздействия потоков частиц) становятся важнейшими критериями. Уменьшения значений всех этих показателей можно добиться как экстенсивным путем (технологическим, например снижением норм полупроводникового производства), так и интенсивным, архитектурным. За поиском подтверждений этому высказыванию можно отослать читателя к истории космического использования представителей умеренного минимализма – микрокомпьютеров стековой архитектуры. Еще менее очевидное для человека непосвященного применение минимальных компьютеров – устройства, созданные на основе программируемой логики (например, FPGA). Это обычно ориентированные на мало- и среднесерийное производство разработки, часто проектируемые небольшими коллективами. Предельная простота используемых в таких проектах «узлов» (грамотно именуемых IP – Intellectual Property) позволяет экономно расходовать «пространство» кристалла (измеряемое в количестве задействованных в реализации «узла» деталей – логических вентилей). А это, в свою очередь, означает большую степень интеграции и, естественно, меньшую стоимость конечного изделия (мало- и среднесерийное производство очень чувствительно к степени интеграции комплектующих). Наконец, практически любой из нас может купить себе вполне доступный и работоспособный образец минимального компьютера в однокристальном исполнении – микроконтроллеры именно такой архитектуры серийно производит одна хорошо известная электронщикам и заслуженно уважаемая компания. Можно отыскать еще немало областей и задач, в которых минимальный компьютер будет весьма нелишним. Но, в конце концов, не следует забывать и о самом важном факторе – подобные машины просто интересны, и знание их расширяет наши знания о вычислительной технике и computer science в целом.

Одной командой и вообще без команд Музыкальные инструменты Synclavier на самом деле были одними из самых передовых специализированных компьютеров своего времени. Их популярность, несмотря на очень высокую стоимость, была огромной и позволила компании New England Digital за пять лет увеличить объемы продаж более чем в 30 раз. Ну а популярность достигалась использованием самых передовых технологий (например, цифроаналоговых преобразователей с такими показателями, которые были доступны только военным) и ярких технических решений, в том числе центрального процессора TTA-архитектуры.

Кстати, руководитель проекта Synclavier Джон Эпплтон (Jon Appleton) – приемный сын русского музыканта, знаменитый современный композитор, хорошо известный в творческих кругах России
Одной командой и вообще без команд

Команда – одна, OISC – много

Компьютер с одной системой команд (One Instruction Set Computer, OISC) на самом деле не является ни каким-то исключением из правил, ни чем-то единственным и уникальным в своем роде. Мы будем говорить о нескольких конкретных и принципиально отличающихся друг от друга архитектурах OISC. Вообще удивительно, почему идеи, лежащие в основе OISC, многие из нас узнают так поздно, ведь на самом деле они – готовые рецепты для разработки детской развивающей игрушки типа «как работает компьютер», доступной для понимания чуть ли не самыми маленькими. И это ведь не прожект, а скорее вполне возможный коммерческий проект – пока в детях не исчезло любопытство, подобные игрушки будут пользоваться спросом.

Канонической OISC-машиной можно считать компьютер, способный исполнять одну из команд, для которых мы будем использовать мнемоники SBLEZ и SBNEG. Обе команды – трехоперандные, т. е. их машинный код содержит собственно код команды и три машинных слова. Все три операнда являются адресами ячеек памяти, процессор канонической OISC-машины такой архитектуры не имеет регистров. Хотя никем не запрещены и регистровые вариации этой модели – как с трехоперандными командами, где один операнд – номер (адрес) регистра из банка регистров, так и с двухоперандными, в таком случае используется всего один регистр, аналогичный классическому аккумулятору процессоров традиционных архитектур.

Первая мнемоника (SBLEZ, Subtract and Branch if Lower or Equal to Zero) описывает команду «вычесть и перейти, если результат меньше или равен нулю». Давайте опишем ее следующей моделью на уровне, например, битов машинного слова 32-битового компьютера с объемом адресуемой памяти 1024 слов (4096 байтов).

Первые два бита машинного слова нашего минимального компьютера (биты 0 и 1) предназначены для описания кода команды. Автор статьи прекрасно понимает, что эти два бита избыточны – раз команда всего одна, без них вообще можно обойтись. Введены они сугубо для того, чтобы «красиво» разбить привычное для большинства 32-битовое слово на три одинаковых операнда (в реальной же OISC-машине, выполненной «в железе», может оказаться так, что и двух избыточных битов будет мало – например, для контроля четности декодируемых команд, раз мы уже говорили раньше о надежности). В данном случае длина каждого операнда – 10 битов (поля 2 – 11, 12 – 21, 22 – 31), что и дает возможность адресовать каждым из них упомянутые 1024 слова (210 = 1024).

Итак, получив и «декодировав» команду SBLEZ i, j, k (где i – первый 10-битовый операнд, биты 2–11, j – второй операнд, биты 12–21, k – третий, биты 22–31), OISC-компьютер выполняет следующие действия – читает слова из ячеек с адресами i и j (обозначим их M[ i ] и M[ j ] соответственно), находит разность d = M[ j ]M[ i ], записывает полученное значение в память по адресу j и, если оно меньше или равно нулю, начинает считывание команды, адрес которой записан в ячейке с адресом k, в противном случае приступает к исполнению следующей (за текущей) команды.

Одной командой и вообще без команд
Одной командой и вообще без команд
Как и давний предшественник, TTA-процессор ABLE, микроконтроллер MAXQ фирмы Maxim является 16-битовой вычислительной машиной Гарвардского типа. Правда, в отличие от занимавшего приличных размеров ящик ABLE рассмотреть микросхему MAXQ610 на отладочной плате непросто. Специалисты компании Maxim написали замечательную статью, детально объясняющую нюансы реализации TTA-архитектуры

Внимательный читатель, разобравшись с предыдущим абзацем, непременно должен поймать автора на умышленно сделанной ранее грубой ошибке. Конечно же! Машина, с моделью которой мы ознакомились, может адресовать не 1024 ячейки памяти, а... да, именно 232 ячеек. Ведь третий операнд команды, адрес перехода, может быть любым машинным словом, т. е. любым 32-битовым числом. И это далеко не все «неожиданное», что можно открыть в дивной архитектуре OISC. Например, давайте на секунду задумаемся – каков рассматриваемый нами OISC по критерию размещения памяти данных и команд? Иными словами, обязательно ли в одном адресном пространстве находится память данных и команд этого OISC? Если внимательно присмотреться к архитектурной модели (вполне, кстати, достаточной), то становится ясно – никаких требований в этом смысле она к архитектуре вычислителя не предъявляет, и этот OISC может быть как гарвардской машиной, так и машиной фон Неймана. И в первом, и во втором случае архитектура получается ни на что не похожей. В фон-неймановской модели (память данных и программ в одном адресном пространстве) память OISC-машины будет напоминать... разбросанные в адресном пространстве 1024-словные блоки данных, образно говоря – как бы отдельные 1024-регистровые машины, между которыми может «прыгать» поток исполнения. В случае гарвардской архитектуры (память данных и память программ – в разных адресных пространствах) получается странный вычислитель с крохотной памятью данных (1024 слова) и потенциально огромной памятью команд (до 4 ГБ), такие специфические и примитивные в реализации машины – идеальные обрабатывающие модули для систолических матриц. Больше того, в качестве третьего операнда можно использовать не адрес ячейки памяти, в которой находится адрес перехода, а непосредственно адрес перехода. В этом случае (для которого в Университете Ватерлоо, Канада, была создана собственная «материализация» под названием URISC, информацию о ней легко найти в википедии) гарвардская модель нашей OISC получает два одинаковых адресных пространства (по 1024 байта), а фон-неймановская устраняет допущенную в начале описания умышленную ошибку.

Вторая возможная команда, SBNEG, отличается от разобранной нами только условием, при истинности которого машина выполняет переход по адресу из третьего операнда. Это условие как будто несущественно более строгое (Subtract and Branch if NEGative) – множество возможных значений разницы между двумя операндами, приводящих к переходу, сокращено всего на один «0». На практике же это приводит к серьезно отличающимся результатам.

На что же реально способен такой «другой» компьютер? В принципе, на то же самое, что и любой другой. Причем такой, система команд которого формируется... смесью данных и команд. Например, нужна нам команда безусловного перехода по заданному адресу, обычно обозначаемая мнемоникой JMP. Для ее реализации достаточно записать в две любые ячейки памяти данных с адресами i и j число 0. В этом случае выполнение команды SBLEZ i, j, k будет аналогичным выполнению команды JMP M[ k ], где M[ k ] – слово (значение адреса), содержащееся в ячейке памяти с адресом k. И, естественно, содержимое ячеек с адресами i и j не изменится (потому что 0 – 0 = = 0). По аналогии можно сформировать весьма сложные управляющие и арифметические конструкции требуемого машинного языка.

Очевидные и не очень недостатки SBLEZ и SBNEG-машин – не только длинные макрокоманды, а и существенная разница во времени их исполнения. В требовательном к качествам вычислителей мире встраиваемых систем ценят однообразие и детерминированность. Добиться их при сохранении простоты позволяет однокомандная машина с инициацией операций переносом данных (TTA, Transport-Triggered Architecture, так как устоявшегося перевода термина нет, автор приводит собственный вариант). Единственная инструкция в ней – команда пересылки данных, чаще всего обозначаемая мнемоникой MOV. Принцип работы предельно прост – основу архитектуры образуют функциональные узлы, имеющие отображенные на адреса памяти входы (порты), и пересылка данных по этим адресам автоматически инициирует выполнение функциональными узлами соответствующих операций. Очень изящная и в каком-то смысле «объектно-ориентированная» архитектура, в которой, например, арифметико-логическое устройство (АЛУ, ALU) является полноценным «объектом», принимающим через порты реальные сообщения. Так, для умножения двух чисел их просто надо переслать на входы перемножителя как части ALU, поэтому в ассемблере TTA-машин принята хорошо знакомая всем прошедшим школу ООП программистам форма (где ALU.multipier.opi – адрес порта, входящего в состав перемножителя, который входит в состав ALU):

MOV R1, ALU.multiplier.op1
MOV R1, ALU.multiplier.op2

Кроме изящества и простоты реализации, TTA-архитектура знаменита тем, что непосредственно связана с такими... музыкальными именами, как Depeche Mod, Frank Zappa, A-Ha, Genesis, Duran Duran, Sting, Stevie Wonder, в общем, список можно продолжать долго. Несколько неожиданно, правда? Все дело в том, что легендарная в мире электронной музыки компания New England Digital, создавшая знаменитую систему синтеза музыки Synclavier, которую, несмотря на доходящую до $500 000 стоимость (и это не нынешние депрессивные доллары!), использовали все перечисленные музыканты, начинала именно с разработки собственного процессора TTA-архитектуры. И без этого процессора не было бы и Synclavier, потому что Able (именно так назывался процессор) был управляющим центром синтезатора. К сожалению, Able сейчас – подлинная редкость. К счастью же, благодаря настоящим энтузиастам любой желающий может при относительно небольших (по сравнению, например, с несытным невкусным ужином в плохом киевском ресторане) затратах сделать себе свой персональный Able – достаточно «прошить» соответствующим кодом микросхему программируемой логики (страница проекта Able маленького сайта Алекса Колвина, бывшего ведущего программиста компании New England Digital, со ссылкой на исходные тексты, из которых можно получить код «прошивки», – world.std.com/~alexc/fAble/fAble.html, следует заметить, что Able – процессор исключительно простой и также пригоден для использования в качестве учебной парты для изучающих языки проектирования аппаратных средств). Кроме того, на основе TTA-архитектуры хорошо известная инженерам-электронщикам, работающим на стыке аналогового и цифрового миров, компания Maxim серийно выпускает весьма симпатичные однокомандные микроконтроллеры семейства MAXQ, параметры которых ничем не уступают более традиционным конкурентам.

И наконец, не в качестве курьеза, а сугубо для доведения минимализма системы команд до полного совершенства – процессор IBM ZISC036 (желающие могут найти информацию о нем самостоятельно). Да, в его аббревиатурном названии ZIS – именно то, о чем можно догадаться, Zero Instruction Set, по-русски – без единой команды вообще. На самом деле эта машина с архитектурой нейронной сети – предмет, заслуживающий отдельного обсуждения. Но забывать о том факте, что есть и такие вполне себе компьютеры, у которых вообще нет системы команд ни в традиционном, ни в каком ином смысле, тоже не следует.

+44
голоса

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

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

Узнал много нового, большое спасибо автору материала!

 
 
IDC
Реклама

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