Обзоры
Записки утомленного солнцем (размышления на тему ПК)
0

Записки утомленного солнцем (размышления на тему ПК)

     Двухнедельные каникулы, крымская жара и не спасающее от нее горячее море остались в прошлом, но прошли не бесследно — магическое превращение из существа коллективно-продуктивного в "шлепанцево-пляжное", как доподлинно известно, нравится только в первые несколько дней отпуска. Затем организм настойчиво начинает требовать восстановления привычной среды обитания, но увы… Никакой доступный по средствам ноутбук или PDA не выдержит сорокаградусное пекло и назойливый ветерок, приносящий вместо прохлады так не любимый всеми пластмассово-электронными устройствами песок. О привычном настольном компьютере речи вообще идти не может — бензиновый кризис загнал "Жигуленок" на стоянку, а железнодорожные страсти в компании с двумя лишними огромными коробками (системный блок и монитор) заведомо кажутся адом. Вот такой "information highway to hell" получается…

     Когнитивный или потребительский?

     Чтобы сразу расставить все точки над "i" в этой статье, следует напомнить одно высказывание глубоко уважаемого автором "титана" современного компьютинга Стива Джоббса: "Персональный компьютер — это велосипед для ума". Как велосипед помогает (при определенных условиях) опорно-двигательному аппарату человека более эффективно выполнять свою основную функцию — перемещение в пространстве, так и ПК, по идее, должен помогать мозгу выполнять его основную функцию — мыслить. Идея, бесспорно, хороша, но благими намерениями вымощены дороги известно куда: "писишка" с забитым до отказа игрушками многогигабайтовым винчестером и постоянно направляемой на экран рекламой (прецеденты уже имеются) скорее выполняет роль прекрасной шлифовальной машинки, усердно выравнивающей последние шероховатости коры головного мозга. "Видите, Балаганов, что можно сделать из простой швейной машины Зингера?" — говаривал Остап Ибрагимович.

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

     Так что в этой статье речь будет идти больше о велосипедах (извините, о когнитивно-ориентированном компьютинге), чем о шлифовальных машинках…

     Большая ложка дегтя

     Чтобы там ни говорили о прелестях персонального компьютера, присущие некогда вожделенному пластмассовому ящику недостатки начинают бросаться в глаза после приобретения некоторого опыта: нетранспортабельность, низкая надежность прецизионных механических узлов при несоответствующих требуемым условиях эксплуатации, высокие сложность и стоимость. Попытка улучшить эти (и другие) потребительские качества привела к появлению портативных компьютеров, которые сегодня более точно можно назвать носимыми — весь сонм ноутбуков и их субсобратьев, PDA и прочих персональных вычислительных устройств, казалось бы, позволяет говорить о решении чуть ли не всех проблем. Очень даже может быть, что все перечисленные недостатки в носимых вычислителях уже решены, кроме одного, оставленного "за кадром" и хорошо известного профессиональным пользователям компьютера (обратите внимание на это словосочетание — речь идет именно о пользователях компьютера, а не конкретных программ). Заключается он в неадекватности уровней сложности используемых инструментов и решаемых с их помощью задач: если, к примеру, высокопрофессиональному инженеру-конструктору пришла в голову хорошая мысль, требующая проверки или подтверждения вычислительным экспериментом, для организации этого самого эксперимента всего-навсего надо выучить операционную систему, язык программирования, технологические средства, пяток небольших (по 10—20 MB) библиотек классов… В общем, не хватает только пресловутых перфокарт — хотя с ними, на самом деле, все обстоит не намного сложнее.

     Так что если вы требуете от компьютера намного больше, чем от записной книжки, карманного китайского "Тетриса" и "Бриджа", то… или в нагрузку к полукилограммовому субноутбуку запасайтесь рюкзаком для нескольких пудов "умных" книг, или… Вот здесь как раз и наступает полный провал — если совсем недавно Casio выпускала удивительный и недорогой компьютерчик в формате электронной записной книжки, позволяющий буквально за пару минут набросать программку на любимом всеми языке C, отладить ее и сохранить "на будущее", то сегодня для любителей ЭВМ все мосты сожжены. Остались, правда, неизменно популярные программируемые калькуляторы Hewlett-Packard и Casio с графическим дисплеем, но это отдельная история.

     Когнитивный ПК — каким ему быть?

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

     Вот и наступило самое время сделать одно важное отступление. Раз речь идет о когнитивном (читай — программируемом) компьютинге, следовательно, основные ценности, сформированные в процессе усиленного за счет использования ПК познания, — программы, написанные огромным количеством "непрограммирующих программистов" — специалистов в несвязанных непосредственно с компьютингом областях деятельности. Формализовать каким-либо образом денежный эквивалент, отражающий ценность для человечества подобных "формализмов процесса познания", невозможно, но очевидно, что эта ценность очень велика. Настолько велика, что непозволительно превращать всю идею массового когнитивного компьютинга в заложницу коммерческо-рыночной состоятельности той или иной компании. Таким образом, речь идет о некоторой реализации полностью "открытой" технологии, заключающейся в доступных любым производителям аппаратно-программных средств спецификациях на оборудование и системное ПО. К слову, эта фантазия # 1 совершенно ничего общего с бредом не имеет — во первых, не менее бредовым выглядит строго соблюдаемый разработчиками военных авиационных вычислительных систем США стандарт MIL-STD-1750A на систему команд единственно пригодного для авиаприменения микропроцессора, во-вторых, открытые спецификации оставляют производителям обширное поле честной конкурентной борьбы за быстродействие, снижение потребляемой мощности, габаритов и стоимости, повышение надежности и степени интеграции. Так что и в мире открытых спецификаций можно зарабатывать деньги (правда, существование компаний-триллиардеров сразу оказывается под вопросом).

     Более того, раз речь идет о массовых и очень дешевых изделиях, они просто обязаны быть достаточно несложными — пусть в ущерб вычислительной мощности (хотя это высказывание, как будет показано далее, весьма сомнительно). Простота электронных компонентов позволяет реализовывать их с помощью любых технологических норм, а следовательно, открывает возможности использовать устаревшие полупроводниковые производства в странах "второго мира", оставляя для импорта только нишу высокопроизводительных моделей. Что это означает, достаточно очевидно — рабочие места, снижение "оттока" валютных средств и, в конце концов, доступность продукции на локальных рынках.

     Вот теперь можно говорить и о предмете статьи — когнитивном ПК (кПК) во весь голос. Начнем, естественно, с макроархитектуры. Здесь, собственно, и выбирать не из чего — однопроцессорная или мультипроцессорная? Условие простоты сразу подсказывает решение: однопроцессорные системы намного проще своих многопроцессорных собратьев. Но не стоит сразу обольщаться его очевидностью — кПК не означает "плохой ПК" или "алфавитно-цифровой терминал", и все так называемые мультимедийные прелести ему должны быть свойственны в полной мере. Модное сегодня решение — "раздувание" системы команд центрального процессора (MMX, 3DNow! и прочие) — для кПК не подходит: во-первых, это достаточно сложно в реализации, во-вторых, эффективность подобных полумер недостаточно очевидна, в-третьих, расширение системы команд процессора значительно увеличивает сложность написания технологических программных средств. Традиционная "неудачница" — симметричная мультипроцессорная архитектура (SMP) уже успешно доказала свою несостоятельность в массовой вычислительной технике: все прелести SMP становятся ощутимыми при выполнении одного маленького условия — программное обеспечение должно быть написано с учетом SMP-архитектуры (профессионально выражаясь — с интенсивным использованием потоков/нитей/threads). Потоковое программирование — занятие очень сложное и, по большому счету, неблагодарное: во время, затрачиваемое на написание threads-версии программы, производительность процессоров, согласно закону Мура, неумолимо возрастает, так что во многих случаях "потоковая" овчинка выделки не стоит.

     Более экзотические макроархитектуры — SIMD, MISD и MIMD (SIMD — один поток команд, много потоков данных, MISD — много потоков команд, один поток данных, MIMD — много потоков команд, много потоков данных) не хочется даже и рассматривать из-за высокой сложности реализации и очевидной ориентированности на определенные классы алгоритмов, в первую очередь, из области вычислительной математики.

     Остается практически одно, достаточно хорошо забытое архитектурное решение — функциональная мультипроцессорность, иначе называемая сопроцессорной архитектурой. Замечательные и на сегодняшний день компьютеры Amiga — лучшие представители малочисленного семейства сопроцессорных машин, своими высокими показателями обязаны в первую очередь функционально-мультипроцессорной архитектуре (ФМА). К сожалению, в мире x86-компьютеров развитие идей ФМА остановилось (и кануло в Лету) на так и не реализовавшей своего потенциала MCA-архитектуре IBM. А ведь логика подсказывает, что компьютер, у которого, например, графико-оконная подсистема выполняется отдельным процессором, будет работать намного быстрее однопроцессорной модели, даже оснащенной графическим акселератором. А теперь допустим, что все процессоры машины ФМА совершенно одинаковы, и пользователь может, исходя из своих задач, создавать необходимую конфигурацию компьютера. В этом случае выигрывают все — и разработчики системного ПО, которым не требуются астрономическое количество всяких-разных технологических средств и время на освоение новых сопроцессоров, разработчики прикладного ПО — высвобождающаяся производительность центрального процессора всегда радует прикладных программистов, и, наконец, — пользователи, получающие масштабируемую "во все стороны" вычислительную платформу.

     Итак, макроархитектурные изыскания можно считать законченными — ФМА с использованием одинаковых микропроцессоров. А как же быть со стоимостью, — спросите вы, — ведь достаточно быстрые процессоры стоят недешево, а медленные никого не интересуют. Действительно, выбор микроархитектурных решений, в первую очередь процессорных, играет определяющую роль в успехе создания ФМА-системы. О популярных на рынке процессорах сразу следует забыть — эти монстры со многими миллионами транзисторов, большими кристаллами и запутанной непробиваемой защитой intellectual property (интеллектуальной собственности) совершенно не подходят для открытой модели кПК. Но, слава Богу, существуют и совершенно отличающиеся от всех этих CISC- и RISC-близнецов малоизвестные разработки, практически идеально подходящие для воплощения в жизнь фантазийного когнитивного компьютера — так называемые MISC-процессоры (Minimal Instruction Set Computer — компьютер с минимальным набором команд). Термин MISC непосредственно связан с именем редкого "инопланетянина" в мире компьютинга — Чака Мура (Chuck Moore), автора бесподобной системы FORTH. MISC — это стековая машина, в которой привычные в "обычных" процессорах регистры заменены стеками (если вам незнаком этот термин, не пугайтесь: ближайший аналог стека — стопка тарелок, с которой можно снять последнюю уложенную наверх стопки/стека тарелку). Достоинства MISC — минимальный размер кристалла и простота (если не сказать элементарность) реализации — 32-битовые MISC-модели содержат мизерное по сегодняшним меркам количество транзисторов (до 100 тыс.). Эти факторы позволяют уверенно говорить о громадном потенциале экстенсивного наращивания производительности MISC-машин (за счет повышения тактовой частоты до десятков GHz), а стековая архитектура, идеально подходящая для перевода программ с языков высокого уровня в машинные коды, существенно облегчает написание необходимых технологических средств. Якобы серьезный недостаток стековых машин — невозможность реализации всяких там конвейеров, предсказаний ветвлений и прочих архитектурных излишеств, сполна компенсируется очень короткой машинной командой (обычно 4—8 бит) и свойственным RISC-процессорам однотактным выполнением команд. В результате в одно машинное слово, например 32-битовое, "упаковывается" до восьми команд, которые, естественно, выбираются из оперативной памяти за одно обращение к ОЗУ — чем, скажите, это хуже обычного процессора с восемью конвейерами (тем, кто не верит автору на слово, настоятельно рекомендую изучить замечательную книгу Ф. Купмана, которую можно бесплатно получить в электронном формате на сайте http://www.cs.cmu.edu/~koopman/stack.html). А простота стековых машин подтверждается многочисленными самодельными процессорами на базе программируемой логики, описания которых можно найти в Сети (в частности, на сайте http://www.sandpipers.com также совершенно безвозмездно вас осчастливят VHDL-моделью стековой машины, позволяющей на дому "прошить" программируемую микросхему от Xilinx и получить работающий процессор).

     Будем считать, что выбор микроархитектуры основного процессора фантазийного кПК произведен — стековая машина MISC достаточно высокой разрядности (предположим, 64-битовая — малое количество транзисторов и простота реализации позволяют в этом случае не увлекаться экономией).

     Второй важнейший элемент микроархитектуры — основная шина — в ФМА играет особо важную роль, определяя одновременно и масштабируемость, и производительность, и технологичность кПК. Продолжая начатую концептуальную оппозиционность признанным в массовых ПК решениям, сразу попытаюсь ошарашить читателей следующим заявлением: основная шина кПК должна быть последовательной! И даже претендент на ее роль имеется — интерфейс 1355 (www.1355-association.org, подробнее читайте в ближайших выпусках "Компьютерного Обозрения"). Семейство легковесных последовательных протоколов 1355 обладает всеми необходимыми для хорошей компьютерной системы качествами — простота реализации контроллеров, возможность маршрутизации пакетов с очень малым временем задержки (сотни наносекунд) и, наконец, уже разработанные маршрутизаторы, допускающие одновременное "общение" восьми 1355-устройств. Учитывая большое быстродействие (до 1 Gbps), отличные возможности маршрутизации 1355 и, наконец, высочайшую плотность упаковки машинных команд в слове MISC-процессоров (в несколько раз сокращающих количество обращений к памяти по сравнению с CISC и RISC), наш фантазийный кПК при таком уникальном сочетании будет в буквальном смысле слова "летать". А маленькое число транзисторов в реализации процессора и 1355-контроллера позволяет разместить их на одном кристалле с достаточно емкой оперативной памятью, как это сделала компания Mitsubishi в своих процессорах M32R/D, причем емкость ОЗУ в несколько MB в данном случае действительно будет достаточной (вспомните размер команды MISC-процессора), да и кто запрещает по 1355 "подкачивать", например, страницы виртуальной памяти.

     Итак, облик кПК почти сформирован — последовательная высокопроизводительная основная шина, интегрированный со стековым процессором MISC контроллер шины (все это очень напоминает безвременно умершие по теперь понятным причинам транспьютеры британской фирмы INMOS — транспьютерные системы задумывались как массово-параллельные, в случае же с кПК речь идет о функциональной мультипроцессорности, когда каждый процессор выполняет как бы функционально-законченный "кусочек" операционной системы), маршрутизатор или cross-bar (как в Silicon Graphics Onyx), допускающий одновременный обмен данными разным сопроцессорам. Остались три самых неприятных момента — конструктив, накопители большой емкости и (о ужас!) операционная система.

     Пляжно-отпускное настроение подсказывает, что кПК должен быть не просто миниатюрным, а принадлежать к классу wearable-компьютеров. Здесь сложность заключается в одном единственном узле — дисплее. Правда, сторонники wearable-идеологии совсем недавно получили возможность использовать в своих разработках замечательные микродисплеи от корейской компании Varitronix (www.varitronix.com) — с очень высоким разрешением (1280 x 1024) и за весьма приемлемую цену (приблизительно $300 за один экземпляр и менее $100 в сравнительно небольших партиях). Wearable-конструктив уже достаточно хорошо отработан (вспомните шедевр Xybernaut), а насчет накопителей большой емкости… По идее, их вообще не должно быть, точнее, они присутствуют в настольном "продолжении" кПК (напоминающем аналог docking station для ноутбуков) и присоединяются посредством того же 1355-интерфейса. А пары десятков мегабайт флэш-памяти вполне достаточно для двух-трехнедельных изысканий на берегу моря…

     Оставшийся важнейший фрагмент кПК — операционная система — у меня никаких сомнений не вызывает. Напомню, что речь идет о когнитивном компьютере, "велосипеде для ума", программируемом "от и до". Программное обеспечение его должно быть предельно простым, эффективным, компактным и саморасширяемым. Любую же другую достойную альтернативу FORTH (естественно, расширенному графической, оконной и мультимедийной подсистемами, написанными опять же на FORTH и исполняющимися на отдельных сопроцессорах) представить трудно. В качестве доказательства приведу цитату из статьи Дж. Фокса "Тощий компьютинг" о Чаке Муре и системе FORTH: "…Это самый продуктивный программист, которого я когда-либо видел. За последние 15 лет он написал 15 KB кода: несколько десятков популярных ОС, систему проектирования СБИС, с помощью которой создал работающие микропроцессоры, и десяток масштабных систем управления, функционирующих по сей день…".

     А есть ли мальчик?

     Существуют ли проекты реализации подобных компьютеров — на этот вопрос, увы, затрудняюсь ответить. Но раз любители уже создают свои стековые процессоры, мощная FORTH-система занимает всего 8 KB и доступна в исходных текстах для любой архитектуры, микродисплеи стоят не дороже 17-дюймовых мониторов, а флэш-память можно купить на базаре, то кто знает, возможно, в следующем отпуске многим из нас больше повезет в удовлетворении своих информационно-компьютерных потребностей…


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

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