`

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

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

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

Best CIO

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

Человек года

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

Продукт года

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

 

Быть модным, не теряя лица

Статья опубликована в №22 (590) от 12 июня

+11
голос

«Цель, достижения которой я добивался, – не создание наипростейших аппаратных средств или программного обеспечения, а достижение наиболее простой их комбинации», – так кратко рассказывает историю своей жизни и работы один из самых ярких, плодовитых и последовательных разработчиков современности Чарльз (Чак) Мур.

Весьма необычному для рубрики названию статьи пояснение будет дано не сразу. Да и начинаться она также будет несколько нетрадиционно. Дело в том, что мы вторгаемся в столь нетрадиционную область современного компьютинга, что здесь условностям просто не место.

В 1958 г. 20-летний Чарльз Мур написал крохотную программу, с которой началась большая история Чака Мура, ставшего сегодня настоящей легендой для большинства любознательных программистов и пользователей. Эта программа, интерпретатор весьма необычного языка программирования, к 1961 г. была трансформирована Муром для поддержки фундаментального архитектурного элемента – стека данных. Еще через пять лет программа «обросла» возможностями клавиатурного ввода и дисплейного вывода, встроенным редактором текстов, а к 1968 г. она опять была серьезно модифицирована и обрела сразу несколько очередных фундаментальных элементов – стек возвратов, словарь и режим компиляции, в который можно было на время «заглядывать», не покидая интерактивного режима интерпретатора. И наконец, в 1971 г. программа Мура полностью оформилась и стала тем, что сохранило неизменный образ до наших времен и что сегодня мы называем Forth-системой. При этом, несмотря на весьма почтенный возраст, она, можно сказать, ничуть не «растолстела»: полноценная работоспособная Forth-система по сей день требует для своего хранения максимум пару десятков килобайтов (да, ни вы, ни автор статьи не ошиблись – именно килобайтов) долговременной памяти.

Впоследствии Чак Мур с помощью своей системы программирования Forth разработал полноценную САПР (Систему Автоматизации ПРоектирования) цифровых устройств и, используя ее, создал несколько однокристальных аппаратных реализаций... той же Forth, которые выпускались серийно и применялись, например, в аэрокосмической промышленности (как изготовляемый корпорацией Harris в радиационно стойком исполнении RTX2000). Венцом деятельности Чака Мура как конструктора-аппаратчика стали многоядерные массово-параллельные однокристальные вычислители, созданные на основе той же замкнутой технологии «одного инструментального средства»: программная система Forth – реализованная на ее основе САПР – аппаратно-программная система Forth.

Прежде чем мы поговорим о последней разработке Чака Мура, однокристальных многоядерных вычислительных системах семейства SEA™Forth, обратимся к факторам, которые, по мнению самого ученого, стали предпосылками создания, по сути, новой вычислительной архитектуры. На самом деле ознакомление с этими предпосылками куда более ценно по сравнению с изучением архитектуры процессоров, ориентированных на встраиваемые применения (т. е. таких процессоров, которые подавляющее большинство читателей нашего журнала никогда не увидит вживую), так как это изучение дает возможность ознакомиться с мнением исключительно незаурядного и высококлассного специалиста. Да и просто потому, что упорный Чак Мур уже почти 50 лет настоящий «один в поле воин» компьютерной индустрии, его мнение заслуживает внимания.

Вычислительные микросистемы XXI века

Раз уж в названии этого раздела статьи использован несколько необычный термин «вычислительная микросистема», мы начнем с объяснения его значения. Сегодня уже никто не сомневается, что характер персональных вычислительных устройств изменяется очень быстро. Большинство из нас успело «захватить» буквально взрывную трансформацию персональных вычислителей – от бытового компьютера к персональному, затем – к портативному и карманному и от него уже по самым немыслимым направлениям – от сравнительно традиционных (фотоаппараты и плееры) до принципиально новых (например, устройств для широковещательно беспроводного обмена информацией в больших скоплениях людей). На начальном этапе перехода от карманных, но все еще универсальных компьютеров, к специализированным вычислительным устройствам ключевым их элементом был микроконтроллер, объединяющий центральный процессор, оперативную и долговременную память, устройства ввода/вывода в однокристальном интегральном исполнении. Примерно за тридцать лет истории микроконтроллеры развивались совершенно не так, как большие микропроцессоры – если в ходе развития последних наблюдается устойчивая тенденция сокращения архитектурного разнообразия, то в микроконтроллерном мире, как в теплых водах тропических морей, находится место самым разнообразным и порой диковинным архитектурам. Это объясняется в первую очередь разнообразием решаемых разработчиками встраиваемых устройств задач. Общим же для всех классов этих задач в свое время было одно – невысокая ресурсоемкость алгоритмов их решения, что обусловливало большой спрос на 8-битовые микроконтроллеры с очень скромными характеристиками – тактовая частота на уровне единиц мегагерц, емкость оперативной и долговременной памяти порядка сотен байтов и единиц килобайтов. Естественно, и в наши дни спрос на такие микросхемы остается высоким – решаемые с их помощью задачи никуда не исчезают из нашей жизни. Но вот появление новых классов задач требует и новых аппаратных средств. Например, ставший традиционным в любом персональном цифровом устройстве USB-интерфейс для полноценной реализации USB 2.0 вынуждает конструктора или искать микроконтроллер, способный обрабатывать порядка 500 Mbps, или использовать дополнительные аппаратные средства (что далеко не всегда привлекательно и даже вообще невозможно). Ну а требования альянса сетевого аудио и видео высокого разрешения HANA (High Definition Audio-Video Network Alliance) – реализация до четырех цифровых потоков с общей полосой пропускания свыше 3 Gbps – вообще ставят крест на возможности применения в системах современного цифрового «умного дома» традиционных микроконтроллеров. Ответом на изменение требований и стало появление вычислительных микросистем, объединяющих в себе как многоядерные процессоры традиционной архитектуры, так и цифровые сигнальные процессоры, специфические машины ввода/вывода и обработки битовых потоков etc.

Описанная в двух словах архитектура вычислительных микросистем на самом деле очень неплохо отражает архитектурные решения реальных разработок, в большинстве случаев содержащих на одном кристалле один микроконтроллер и одно или несколько ядер DSP (сигнальных процессоров). Но и такие системы не лишены недостатков – они довольно сложны и в ряде случаев не позволяют или гибко «выжимать» из своей сложности максимальную производительность, или превратить ощутимое снижение энергопотребления в задачу с тривиальным решением. Самое же удивительное заключается в том, что если хоть чуть-чуть задуматься, окажется, что эти три недостатка являются, по сути... очевидными требованиями разработчиков. Именно они нуждаются в относительно несложных вычислителях, архитектура которых допускает одновременно и полноценную утилизацию возможностей при решении задач самых разных классов, и простое и эффективное управление энергопотреблением. Чак Мур в свое время для создания адекватной этим требованиям архитектуры пошел по модному сегодня пути – увеличению числа вычислительных ядер на кристалле. Правда, речь идет о радикальном увеличении – о десятках вычислительных ядер, каждое из которых – аппаратная Forth-машина, знаменитая своим минимализмом. Естественно, использование такого количества ядер не может не повлиять на все аспекты архитектуры.

Так, попытка реализации однокристальной SMP-машины с несколькими десятками процессоров неизбежно станет неудачной – эффективно разделить между таким числом устройств общие шины адреса, данных и управления оперативной памятью просто невозможно. Иными словами, неизбежно возникнет «бутылочное горлышко», превращающее потенциально мощную вычислительную систему в неработоспособную в реальности. Выход в этой ситуации один – трансформировать ядро в полноценный микроконтроллер, т. е. как минимум оснастить его собственной, локальной памятью данных и программ. Опыт разработки Forth-программ различного назначения показывает, что для эффективной работы вычислителя долговременной и оперативной памяти необходимо буквально по несколько килослов (а часто и меньше). Естественно, нужен и доступ к внешней (по отношению к вычислительной микросистеме) памяти большой емкости. Вторая очевидная проблема, возникающая перед создателем «многомикроконтроллерной» микросистемы, – взаимодействие между отдельными вычислителями. Чак Мур принял решение отказаться от невероятно сложного при нескольких десятках вычислителей способа соединения «каждый с каждым» и ограничил возможности коммуникации до знакомого многим еще со времен транспьютерных сетей принципа «каждый – с ближайшими соседями». Да, этот принцип имеет свои недостатки, особенно заметные при выполнении одной вычислительной микросистемой разных задач (хотя бы потому, что их надо разрабатывать и оптимизировать с учетом коммуникационных возможностей микросистемы). Но не спешите разочаровываться – речь ведь идет о встраиваемых, спрятанных от глаз пользователя, вычислениях. А в этом мире тотальное изменение функциональности всего устройства «на лету» как-то не принято, и никто не пытается, например от случая к случаю, когда нечего фотографировать, использовать цифровую камеру в роли контроллера персонального метеоцентра. Так что в жизненном цикле законченного изделия повышение стоимости разработки ПО за счет «вычурности» архитектуры может оказаться незначительным, да и при большой тиражности изделия экономия аппаратных средств с лихвой окупит эти затраты.

Итак, по мнению Чака Мура, вычислительная микросистема XXI века является многомикроконтроллерной архитектурой с несколькими десятками вычислительных элементов на одном кристалле, соединенных по принципу «каждый – с ближайшими соседями». И это только начало. С некоторыми деталями мы познакомимся на примере реальной вычислительной микросистемы SEAForth-24.

От процессорного Кутюрье...

Наследница созданной Чаком Муром системы 25x (информацию о ней сегодня найти очень трудно) – воплощенная в кремнии микросистема SEAForth-24. Она содержит 24 18-битовых микроконтроллера, каждый из которых оснащен ОЗУ и ПЗУ емкостью по 64 слова. Систему команд микроконтроллера стековой (иначе говоря, безадресной, что означает: в коде команды не требуется битовое поле для указания адреса регистра) архитектуры действительно можно назвать сокращенной – она содержит всего 32 команды. Естественно, для описания любой из этих инструкций требуется только 5 бит, что позволяет в одно машинное слово «упаковать» до четырех команд. И здесь нет никакой ошибки – 4•5 действительно равно 20, а не 18, но некоторые команды могут использоваться только в определенном контексте, что и делает возможным создание декодера команд, как бы восстанавливающего недостающие 2 бита. Такой механизм «упаковки» в одно машинное слово нескольких команд не только многократно увеличивает емкость небольшой памяти программ, но и создает эффект, аналогичный кэшированию. Кроме того, мы ведь говорим о полноценной аппаратно-программной системе, в которой на самом нижнем уровне – «железа», можно эффективно поддерживать реализацию очень важных и одновременно тонких нюансов более высоких уровней – системного и прикладного ПО (хоть это и кажется забавным, но в любых областях техники все тонкие нюансы крайне важны). В мире реальной микросистемы SEAForth-24 это означает, например, что команды пересылки больших блоков данных прекрасно «утрамбовываются» в одно 18-битовое машинное слово микроконтроллера – в отличие от процессоров «классических» архитектур, где блоковая пересылка неизбежно означает многословность команды.

Каждый микроконтроллер в SEAForth-24 работает на пределе своих возможностей, исполняя одну команду машинного языка VentureForth, являющегося одновременно и языком весьма не низкого уровня (да простит читатель автора за это вынужденное нововведение), за одну наносекунду. При этом вся микросистема характеризуется более чем скромным энергопотреблением. Как такое может быть? Ответ на этот вопрос начинает перечень «странностей» и «вычурностей» талантливых конструкций Чака Мура. Основа энергетической эффективности машин семейства SEAForth (а на сегодняшний день это уже семейство, включающее несколько узкоспециализированных микросхем) – вовсе не очевидные в назначении, но хитрые в реализации механизмы управления энергопотреблением или снижения тактовой частоты. SEAForth «добивается» малого энергопотребления за счет весьма специфического, заимствованного из высокоуровневой алгоритмики операционных систем, механизма... межмикроконтроллерного взаимодействия. В SEAForth он реализован с помощью разделяемых между ближайшими соседями-микроконтроллерами регистров. Логика работы этого механизма на удивление проста. Если один микроконтроллер (назовем его S, sender, отправитель) пытается отправить данные в разделяемый регистр другого микроконтроллера (R, receiver, получатель), схемы доступа к разделяемому регистру мгновенно определяют, прочтено ли R уже содержимое этого регистра или нет (при этом не используются никакие дополнительные семафоры или битовые флаги). Если регистр занят непрочтенными данными, S автоматически «впадает» в состояние «спячки» (увы, сленга в этом случае не избежать) с энергопотреблением на уровне одного микроватта. В противном случае данные просто записываются в регистр. Если S неудачно попытался записать данные в разделяемый регистр R и впал в «спячку», а впоследствии R все-таки прочел данные, S автоматически «пробуждается из спячки» и снова пытается записать данные в регистр. Программистом же все это реализуется с помощью одной команды. Как показывает практика, в реальных программно-аппаратных системах, созданных на архитектуре SEAForth, в каждый момент времени примерно треть всех процессоров находится в состоянии микропотребления. В результате достигаются общая энергетическая эффективность, очень высокая скорость асинхронного взаимодействия в системе в целом и... простота программирования – ведь теперь программисту не надо думать о семафорах, доступности ресурсов и т. п. – «железо» само проследит, чтобы команды send и receive (их имена, естественно, условны) делали именно то, что нужно.

В результате таких упрощений-ухищрений вся система может работать с производительностью около 24 миллиардов операций в секунду. Если учесть, что в скромных 32 инструкциях микроконтроллеров SEAForth есть однотактная команда умножения с накоплением (A = В•С+D) и что архитектура соединений «каждый – с ближайшими соседями» идеально подходит для решения классической задачи быстрого (или дискретного) преобразования Фурье, получается действительно очень интересная аппаратно-программная платформа для основной массы конструкторов современных потребительских устройств.

На сегодняшний день компания IntellaSys, главным техническим директором которой является Чак Мур, поставляет два семейства специализированных вычислителей и готовится к выпуску универсального SEAForth. Чаку Муру в очередной раз удалось сделать удивительное – действительно очень модный (потому что очень многоядерный) процессор – и при этом не потерять лица.

SEA Forth изнутри

Быть модным, не теряя лица

По сути, микроконтроллер SEA Forth напоминает легендарные транспьютеры фирмы INMOS, в которых идея сокращения набора команд (т.е. RISC) доведена до совершенства – их всего 30.

Неоклассический характер форт-машины SEA Forth заключается в объединении возможностей безадресных и регистровых архитектур. Кроме аппаратно реализованного стека и классических для мира Forth машинных команд типа push (помещение на вершину стека), pop (снятие вершины стека), dup (создание копии текущей вершины стека и помещение ее в стек), drop (удаление вершины стека), микроконтроллер SEA Forth располагает двумя регистрами (A и B) для повышения эффективности исполнения команд с косвенной адресацией. Например, в регистр A можно загрузить адрес какой-либо ячейки памяти и одной командой передать содержимое этой ячейки на вершину стека данных.

Каждый микроконтроллер тактируется собственным тактовым генератором, что позволяет проектировать на основе SEA Forth полностью асинхронные системы обработки данных. К слову, возможности таких систем демонстрирует первый работоспособный проект, использующий SEA Forth – цифровая беспроводная акустическая система для домашнего кинотеатра. В нем на нескольких микроконтроллерных ядрах SEA Forth реализован... полностью цифровой приемник радиосигналов частотой не выше 100 MHz, остальные же задействованы для декодирования сигнала и даже реализации цифровых эффектов.

+11
голос

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

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

 
 
IDC
Реклама

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