Создавая новое поколение - часть 1
Аппаратные средства
Николас Блэхфорд (Nicholas Blachford), Среда, 11 Август 2004, 23:41

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

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

Аппаратная многопоточность(ныне известная как "HyperThreading") - новичок в мире настольных систем, но она была впервые представлена сорок лет назад, еще в 1964 году, в компьютерах Сеймура Крея (Semore Cray) [Cray], в CDC 6600. Если разобраться, то очень многое из архитектур современных микропроцессоро впервые появилось в машинах Cray в 60-х.

В то же самое время Дуглас Энгельбарт (Douglas Engelbart) [Mouse] вместе с коллегами работали над такими технологиями, как сети передачи данных, видеоконференци, оконные интерфейсы, гиперссылки и мышь, все это - части современного компьютерного окружения.

Новые платформы 80-х просто взяли эти технологии и связали их так, как это никогда не делалось до этого, что и создало что-то, чего не видели до этого и что было способно показывать такие трюки, каких не могли делать старые системы.

Вот список некоторых персональных компьютеров/систем, которые я считаю революционными:

Apple I / II - 1977
Они могли бы не успеть стать первыми, но техническое мастерство Стива Возняка (Steve Wozinak) дополненное маркетинговой находчивостью Стива Джобса (Steve Jobs) привлекли внимание всего мира к персональному компьютеру.

Macintosh 1983
Начавшийся как представление Джефа Раскина (Jef Raskin) о дешевом компьютере, он радикально изменился благодаря стремлению Стива Джобса создать первый "простой в " компьютер.

Amiga - 1985
Джей Майнер (Jay Miner) соединил аппаратуру от видео игры с 68K процессором, эта сильная аппартная часть была связана с многозадачной операционной системой с GUI. Остальному миру потребовалось десять лет, чтобы достичь того же уровня.

Archimedes - 1987
Британская компания Acorn разработала свой ЦП на RISC. Они назвали его "Acorn RISC Machine" или ARM, и они были первыми, кто представил технологию для дешевых настольных компьютеров в виде Archimedes. Сегодня ARM продается в несколько раз успешнее, нежели x86, а все ЦП для настольных систем так или иначе следуют принципам RISC.

NeXT - 1988
И снова Стив Джобс, на сей раз с рабочей станцией. Он положил GUI на рабочую силу Unix и сдобрил ее передовыми аппаратными решениями. Сегодня NeXT продолжает жизнь в OS X.

BeOS - 1994
Они начали с того, что хотели создать мультимедийную систему в стиле Amiga. Аппаратная часть имела несколько CPU и DSP, но эта идея умерла после того, как AT&T решила прекратить выпуск своих чипов. Однако операционная система Be на годы опередила все, что существовало на рынке, и многое из того, что в нее было заложено, до сих пор не появилось в массовых системах.

Прошло много времени с того момента, как мы видели что-либо революционное, но инновации не застыли на месте, в недалеком будущем должна появиться одна революционная платформа.

200x - Sony/Toshiba/IBM Cell
Хоть Cell еще и не доступен в продаже, проект уже описан в патенте [Cell], он сочетает сеть быстрых векторных процессоров с распределенной системой вычислений.

Когда появлялись эти платформы, все делалось самостоятельно, и я имею ввиду все: аппаратная часть, корпуса, ОС, приложения, средства разработки и компиляторы. Сейчас никто не делает всего этого, и никто не делал со времен BeBox 1994 года, когда Be inc. создала полную систему, от ядра ОС до мультимедиа-плеера и апплетов, которые запускались поверх всего.

Сегодня ситуация в мире настольных систем совершенно другая. Из-за популярности клонов Unix, а в особенности Linux, существует целая эко-система программного обеспечения, от ядер до кодеков, от приложений до апплетов, которые можно использовать в проектах. Если вам нужна сегодня новая платформа, вам необходимо всего лишь поискать, выбрать и адаптировать под свои нужды.

Новая платформа
Я собираюсь рассказать о том, как построить новую платформу, но основанную на готовых частях и существующих открытых ОС. Ведь, как показывает опыт предыдущих платформ, сочетая существующие сильные технологии мы можем создать что-то совершенно новое.

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

Основные принципы

"Все должно быть настолько просто, насколько возможно, но не проще этого" - Альберт Эйнштейн.

Программы сложны и чем больше они существуют, тем более сложными они становятся. Начиная все сначала мы можем учесть все требования и создать концепцию, удовлетворяющую этим требованиям, вместо того, чтобы изменять существующие концепции, что тяжело само по себе и часто ведет к неудачам. Так что, когда мы начинаем проектировать или конструировать что-либо, это должно быть сделано просто. Простота - хорошая вещь, она может усложнять проектирование, но через это будет легче прийти к конечному результату, упростится сопровождение и уменьшится количество ошибок. В мире аппаратных решений это приведет к быстроте, именно так, например, Сеймур Крей проектировал свои машины в далеких 1950-х, машины, которые потом вдохновили создателей RISC.

Аппаратное обеспечение
Система - это нечто большее, чем ПО. Хотя, можно спроектировать только ОС и получить множество преимуществ, вам будет не хватать многого, особенно улучшений в производительноти. Так что, мы начнем с того какой должна быть физическая система, с того какое аппаратное обеспечение она будет использовать.

Аппаратура меняется. Производители процессоров сталкиваются с ограничениями супер-скалярных процессоров, которые могли бы производиться массово и нормально при этом охлаждаться.

Решение, к которому они приходят - многоядерные многопоточные ("Mulcoth" - multi-core multi-threading) процессоры на едином чипе, где несколько ядер CPU размещаются в одном кристалле и, при этом, каждое ядро способно запускать несколько потоков. Недавно анонсированные ЦП POWER5 построены по этой технологии, скоро присоединятся и другие производители (Intel, HP, Sun, AMD, Motorola), причем Sun особено агрессивно проводит эту стратегию в жизнь. Они планируют разместить 8 обычных ядер на одном чипе, и каждое ядро будет способно запускать 4 потока одновременно. В будущем, я уверен, одноядерные однопоточные ЦП станут историей настольных систем.

В будущем физические ограничения будут иметь все больший эффект, что поставит ограничения даже на простые методы проектирования ЦП [TISC]. Поэтому увеличение количества ядер ЦП на одном чипе может оказаться единственным способом поднять производительноть.

Если ваша система может получить выигрыш за счет паралеллизма, ЦП Mulcoth принесут вам большой прирост в производительноти, даже если отдельные ядра будут медленнее, чем решения на едином ядре. На самом деле замедление скорости ядер может привести к повышению производительноти, так как такие ядра могут быть построенны на меньших транзисторах, что освободит место в кристалле для увеличения кэша и размещения дополнительных ядер. Все современные процессоры ограничиваются в своих возможностях памятью, поэтому чем больше ее в чипе, тем быстрее они будут работать. Также, использование низкочастотных ядер означает возможность меньшего энергопотребленя.

Если мы хотим построить новую платформу, она должна принять во внимание эти новшества и использовать их. Если хорошо это сделать, то мы будем иметь самую быструю систему на рынке. Одна из операционых систем, которая была бы идеально приспособлена для таких процессоров - BeOS. Она вся очень сильно распараллелена и прекрасно работает с многозадачность, так что на Mulcoth чипе BeOS работала бы как в мечте. Однако, можно извлечь и большее, чем дает BeOS, преимущество из нескольких ядер, но к этому мы вернемся в разговоре об ОС.

ЦП Mulcoth не единственная существующая технология. Долго предсказывали появление в настольных системах FPGA, но его так и нет. Поточные процессоры - еще один тип ЦП, который, возможно, когда-нибудь разовьется.

Поточные процессоры
Поточные процессоры (Stream processors), это развитие DSP (цифровые сигнальные процессоры - Digital Signal Processors), которые были разработаны специально для требовательных вычислительных приложений.

Многие DSP процессы можно разбить в поток - последовательну серию алгоритмов. Во многих случаях проблемы, решаемые DSP, могут быть разделены на несколько потоков, а дальнейшее разделение может быть сделано на уровне алгоритмов, что делает DSP пригодными для задач, решаемых сейчас с помощью архитектуры SIMD (Single Instruction Multiple Data - одна инструкция, множество данных).

Экспериментальне параллельные поточные процессоры, построенные с учетом этих разделений, способны обрабатывать данные до 100 раз быстрее, чем самые мощные ЦП для настольных систем [stream]. К тому же, для алгоритмов, которые имеют тенденцию к локализации используемых данных, скорость обработки может вплотную приближаться к теоретическому пику - крайняя редкость в обычных универсальных процессорах.

Специализированые процессоры, например, графические, имеют очень высокую производительноть, но их невозмоно запрограммироваь на выполнение других задач. Шейдеры можно программировать но их поддержка оставляет желать лучшего, и работать с ними непросто. К сведению производителей ЦП, эти процессоры имеют небольшие требования к питанию.

Так что, я думаю, мы сможем использовать что-нибудь из этого в нашей новой платформе. Но, где это будет воплощено? Cell, новый процессор от Sony [Cell] позволит такого рода обработку. Каждый Cell имеет несколько ядер, которые имеют доступ к высокоскоростно памяти в чипе и эти процессоры могут быть сконфигурирован для обработки данных в поточном режиме. Cell процессоры будут производиться в больших объемах с самого начала и технология будет доступна также третьим сторонам, так что они должны быть дешевы, быстры и широкодоступны. Вам не захочется запускать ОС на них, они не для этого предназначены, а вот для видео, аудио и других требовательных к вычислительной мощи приложений они побьют что угодно на следующей неделе.

FPGA
FPGA (Field Programmable Gate Array) - это "подстраивающийся ", он состоит из частей и вы указываете ему во что он должен собраться. Они не так быстры, как чипы сделанные на заказ, но современные чипы на заказ стоят миллионов 15 долларов и больше только в разработке. Поточные процессоры смогут сделать многое из того, что могут FPGA, но поточные процессоры лучше всего подходят для работы с, хм, потоками. Не все есть поток.

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

Я не знаю, смогут ли FPGA широко применяться с самого начала, так как их довольно сложно проектировать, но они дешевы и для них существуют бесплатные инструменты, так что почему нет? И с другой стороны - готовые библиотеки будут доступны для использования любому программисту.

Программировани под разные ЦП
Наличие 3 разных типов ЦП оставляет нам другую проблему - как нам под них программировать

Компьютерные компании пытались производить системы, которые ускорялись при помощи дополнительных DSP, но ни один из этих проектов не выжил. Изначальный проект BeBox базировался на двух ЦП и трех DSP, но программироватьтакую систему было очень сложно. У Commodore были в проектах машины с DSP, но они никогда не выпускались [CBM]. Только Apple производила машины с DSP, но и они были свернуты с выходом процессоров PowerPC.

С того времени технология DSP была встроена в процессоры общего назначения в форме векторных расширений, таких как SSE и Altivec. Однако, эти технологии все равно требуют специализированого программировани.

Тем не менее, только то, что что-то сложно, не означает, что это невозможно решить или как минимум сделать проще. Конечно, есть система, которая решает эту проблему, но чтобы найти ее, нам придется пойти в Россию (А что идти-то, вот мы тут - примечание переводчика)...

Российский производитель компьютеров (точнее - микропроцессоро, примечание переводчика), "" [Elbrus] спроектировал технологию, позволяющую получать оптимизированны бинарные приложения для разных версий ЦП, даже если ЦП меняется. Достигается это путем многоступенчато компиляции, когда выпускается и поставляется частично скомпилированны файл, а при первом запуске программы она компилируется и оптимизируется под систему, на которой она запускается. Для каждого процессора существует свой компилятор последней стадии, так что программисту не надо заботиться о поставке различных бинарных файлов для разных ЦП. Эта техника очень близка к методу морфинга кода ("code morphing"), используемому Transmeta, собственно, давно ходят слухи, что именно Эльбрус вдохновил их на создание этой технологии.

Эта техника не станет палочкой-выручалочкой, но она определенно поможет. Когда вы будете ставить программу компилятор сможет создать исполняемый код для ЦП общего назначения, а потом, дополнительно, поищет какие части хорошо подойдут для поточной обработки, а какие можно запустить на Cell процессоре. Думаю, что разработчику придется помогать в этом компилятору, помечая секции кода, но также я ожидаю, что когда-нибудь это станет автоматизированым процессом, авто-векторизирующие компиляторы делали как раз такие вещи десятилетиями.

ПрограммироватьFPGA - задача посложнее, несмотря на существование средств, помогающих программироватьих. Полагаю, что наша система станет чем-то вроде ранней попытки разработки для FPGA и для них потребуется приобрести специализированые программистскиенавыки.

Проприетарная аппаратура vs Существующая в продаже
В 80-х разработка собственной аппаратной части означала, что вы можете добиться реального преимущества против других производителей. Оригинальная Amiga со своим собственным чипсетом была на долгие года впереди PC именно по этой причине. Однако, сегодняшним днем в нашем веке разработка собственного чипа - запретная роскошь и лучше оставить это компаниям, которые специализируются в данной области или хотя бы могут себе это позволить.

Разработка собственной платы стоит намного меньше, но тогда вам придется столкнуться с армией материнских плат для PC. Однако, если вы хотите произвести нечто действительно отличное в аппаратной части, у вас не остается много выбора. Плохая сторона этого в том, что другие производители могут подхватить инициативу и пойти следом - ваше преимущество однажды может стать вашим недостатком.

Операционная система должна разрабатываться абстрагируясь с самого начала, она не должна целиком зависеть от специфичных частей или комбинаций частей аппаратуры. Технология Эльбруса может обойти внутренние изменения в процессоре, но не зависимость ОС на уровне конкретного чипа.

Вывод
Итак, у нас есть довольно радикальное железо, которое скушает самые быстрые PC как мелкую закуску между приемами пищи. Какое же ПО мы будем запускать на этом монстре? Под какой операционной системой он будет работать?

Прежде чем думать о приложениях нам понадобится ОС, она будет базироваться на ОС с открытыми исходниками, но будет сильно модифицирована, во второй части я объясню от какой ОС она будет происходит, какие изменения будут сделаны и почему.

Ссылки

[Cray] Многие из технологий, используемых сегодня в микропроцессора были разработаны Сеймуром Креем 30-40 лет назад, здесь приведено несколько интереснейших интервью с ним.
http://americanhistory.si.edu/csr/comphist/cray.htm
http://americanhistory.si.edu/csr/comphist/montic/cray.htm

[Mouse] ГИП (GUI) и множество других "" концепций были разработаны в 1960-х
http://inventors.about.com/library/weekly/aa081898.htm
Некоторые разрабатываемыетехнологии
http://www.bootstrap.org/chronicle/pix/pix.html
Интервью с Дугласом Энгельбартом (Douglas Engelbart)
http://americanhistory.si.edu/csr/comphist/englebar.htm
Посмотрите на его рабочую станцию - 1964-1966!
http://www.bootstrap.org/chronicle/pix/img0023.jpg

[TISC] The Incredible Shrinking CPU, если ЦП собираются прогрессироватьв скорости, то им придется стать гораздо проще.
здесь

[stream] Поточные процессоры
здесь

[Cell] Заявка на патент на процессор Cell от Sony здесь.
Примечание: Похоже, что HTML диаграмм совместим только с IE.

[CBM] Amiga A3000+ могла иметь или имела DSP
http://amiga.emugaming.com/prototypes/a3000plus.html

[Elbrus] Технология Эльбруса
http://www.elbrus.ru/mcst/eng/e2k_arch.shtml
(Дана ссылка на английский вариант сайта, но, думаю, заинтересовавшися найдут документацию на русском без особых проблем - примечание переводчика)
Недавно Intel договорилась с Эльбрусом и наняла большинство сотрудников компании.
Пресс релиз (на русском)

Copyright © Nicholas Blachford July 2004

Об авторе:
Николас Блэхфорд (Nicholas Blachford) - 33-х летний эмигрант из Британии, ныне живущий в Париже, но не говорящий по-французски (еще). Интересуется различными причудливыми темами (Аппаратное обеспечение, программное обеспечение, фотография) и всякими другими вещами, особенно теми, в которых используются новые технологии. На сегодняшний день безработный.


это контент от Центр информации по операционным системам
( http://www.osrc.info/plugins/content/content.php?content.60 )