Обзоры
DSP – персональный компьютер: не может быть?
0

DSP – персональный компьютер: не может быть?

     Пока все прогрессивное (читай — зависящее от ПК) человечество замерло в затянувшемся ожидании Merced и прочих диковинных, обещающих невиданные доселе показатели производительности процессоров, малочисленная, но чрезмерно любопытная часть несознательных индивидуумов настойчиво ищет возможности получения сверхпроизводительности компьютеров уже сегодня. Индивидуализм этого "партизанского движения", естественно, подразумевает весьма скромные объемы финансирования, что исключает популярность в "партизанской среде" еще не окончательно родившегося, но уже слишком дорогого Merced. Страсти "по мощи" подогреваются запаздыванием с выходом на рынок многообещающей Sony Playstation II, тотальным снижением цен на клоновые RISC-процессоры 64-битового семейства MIPS и, наконец, ставшим уже отчетливым кризисом архитектуры ПК IBM PC. В этой ситуации более чем странной кажется малозаметность расположившегося отдельно в процессорной "табели о рангах" обширного семейства недорогих высокопроизводительных микропроцессоров, именуемого DSP. Представители "DSP-клана" в области процессорной архитектуры концентрируют лучшие (ожидающиеся в далеком будущем в "настольных" CPU) решения, а по соотношению "потребляемая мощность/производительность" (милливатт/MIPS) вообще кажутся настоящими "инопланетянами".

     

     DSP и DSP — понятия разные

     Инженерный английский — неиссякаемый источник "разбирательств" между страстными любителями аббревиатур. Терминология, связанная с предметом нашего обсуждения, не является исключением, посему попытаюсь сразу избавить читателя от возможных "подводных камней". Digital Signal Processing (DSP) — цифровая обработка сигналов — огромная междисциплинарная область науки, находящаяся "на стыке" более десятка сложнейших научных направлений. Digital Signal Processor (цифровой сигнальный процессор — ЦСП), предмет нашего обсуждения, — более "приземленное" понятие, но, увы, являющееся "овеществлением" разработок из области цифровой обработки сигналов. Поэтому без предварительного знакомства с основными положениями этой науки все же не обойтись.

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

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

     Ну и, наконец, — "обработка" и "процессор" (он же, по-русски, — "обработчик"): с этой самой информацией совершается некоторая последовательность действий, преследующая достижение определенных целей.

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

     "Так ведь это же любой обычный микропроцессор можно назвать ЦСП" — скажете вы. Не совсем так. Несоизмеримость временных "шкал" реального мира (на который и рассчитаны ЦСП) и человеческого терпения или реакции (в самых исключительных случаях она меньше 0,05 с, что "развязывает руки" конструкторам универсальных микропроцессоров и операционных систем) — такой "маленький" нюанс приводит к громадному "отрыву" в архитектурах, показателях производительности и областях применения представителей двух параллельных миров DSP/CPU.
     

     А причем здесь ПК?

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

     Но времена меняются — компьютеры становятся все меньше и меньше, они уже умещаются на ладони. Пусть сегодня они только игрушки — все эти не очень удобные записные книжки для "деловых людей" и уж совсем неудобные (точнее, неуклюжие) текстовые редакторы с перьевым вводом — но игрушки уже НОСИМЫЕ! Мы привыкаем к ним, перестаем замечать и, несмотря на все неудобства, используем их возможности в повседневной жизни. Иными словами, мы уже готовы к тотально-бытовой "мелкой" компьютеризации, а вот компьютеры — пока нет (отсюда и все неудобства палм-топов и PDA). Неготовность компьютеров не связана ни с низкой степенью интеграции используемых в них микросхем, ни с невысокой производительностью, ни с большой потребляемой мощностью. Основная причина этой неготовности — так называемая "ошибка верхнего уровня", накрепко укоренившаяся в головах разработчиков: почему-то все забыли о том, что носимый компьютер становится "частью" своего носителя и "живет" вместе с ним в РЕАЛЬНОМ ОКРУЖАЮЩЕМ МИРЕ! Теперь, очевидно, сам собой напрашивается один единственный вывод, который и является ответом на вопрос о "причастности ПК": раз DSP ориентированы на обработку сигналов реального мира и носимые персональные компьютеры как раз "живут" в реальном мире, значит… Правильно! Настоящие ПЕРСОНАЛЬНЫЕ (по признаку принадлежности к "персоне", а не как разновидность собственности) компьютеры должны основываться на DSP, а не на универсальном процессоре.
     

     Не может быть

     "…потому что специализированные процессоры не соответствуют требованиям, предъявляемым современным программным обеспечением", — процитируете вы кого-нибудь. Вполне возможно, что современное программное обеспечение до сих пор требует усилий для мирного сосуществования программ защищенного (32-битового) режима и 16-битовой BIOS (базовой системы ввода/вывода) ПК архитектуры IBM PC, и именно из-за этих самых требований существует реальная несовместимость между "совместимыми" процессорами (вспомните о всевозможных расширениях системы команд от Intel и AMD), и, наконец, из-за "современности" крепко забыта такая мелочь, как мобильность ПО, что замыкает порочный круг: "несовершенство платформы — платформенная зависимость ПО — совершенствование платформы до нового уровня несовершенства — еще большая платформенная зависисмость ПО — …".

     На самом деле современные DSP приспособлены и к работе под управлением мультизадачных операционных систем реального времени, и для создания могучих 3D-акселераторов, и для обработки в реальном времени аудио/видеоинформации, и вообще Бог знает для чего. Судите сами: 32-битовые ЦСП Texas Instruments семейства TMS320C6700 могут "молотить" цифровое представление сигналов (или просто перемножать матрицы 4 x 4 в задачах трехмерной визуализации) со скоростью 1 GFLOPS при более чем скромных тактовой частоте в 167 MHz и цене в небольших партиях до $250, а замечательный и дешевый DSP SHARC (Analog Devices) при стоимости $10 (в больших партиях) "берет планку" 150 MFLOPS, потребляя всего… 0,3 В.

     Цифры, факты, история

     Еще раз попытаюсь защититься от возможных упреков в "выпячивании" достоинств никого не интересующей узкоспециализированной технологии. Состояние рынка полупроводников — лучший показатель перспективности той или иной технологии — свидетельствует о постоянно растущей популярности DSP: так, в 1998 г. на фоне общего десятипроцентного спада объемов продаж всего, попадающего в категорию "semiconductor", рынок универсальных программируемых DSP вырос на 9% (до уровня 4 млрд. долл.), а узкоспециализированных — на 15% (5,3 млрд. соответственно). Следовательно, факт популярности DSP можно считать доказанным. Заодно, учитывая особенности DSP, также уверенно можно говорить и о явном проявлении наконец-то "здоровой" тенденции в компьютинге: активное внедрение в реальный окружающий мир (а иначе зачем DSP?).

     Если о состоянии рынков информации более чем достаточно, то история DSP — предмет, достойный отдельного исследования. Кое-что, впрочем, отыскать в дебрях Internet можно: титула одного из самых дальних предков современных DSP по праву заслуживает канувший в Лету микропроцессор 8×300, разработанный компанией SMS (впоследствии продавшей 8×300 другой, более известной компании Signetics). Появившийся в 1978 г. 8×300 был почти сразу забыт, и на смену ему в 1979 г. к "DSP-играм" решила подключиться Intel. Для своего времени ЦПС Intel 2920 был удивительным устройством, объединяющим на одном кристалле и аналого-цифровой преобразователь (АЦП), и специализированный микропроцессор, и ЦАП (цифро-аналоговый преобразователь). По сути, с точки зрения инженера-разработчика, 2920 выглядел неким аналоговым устройством с произвольно задаваемыми свойствами. ЦПС был бы очень удачным, если бы не одно "но": DSP от Intel получился слишком медленным (на выполнение самых "быстрых" команд при максимальной тактовой частоте 2920 требовалось 0,9 мкс, что фактически исключало возможность его применения в каких-либо реальных задачах). Крайне низкая производительность привела к тому, что 2920 "умер, еще не родившись", и этот печальный опыт заставил корпорацию Intel надолго забыть о DSP-разработках.

     Вслед за Intel на DSP-рынок устремились Lucent Technologies и NEC, представившие в 1980 г. первый программируемый DSP. На этом историческом фоне малозаметным кажется факт, что Texas Instruments еще в 1978 г. производила в больших партиях чипы для игрушек "Speak & Spell" ("говори и слушай"). При более детальном рассмотрении оказывается: Texas Instruments опередила всех, начав масштабное серийное производство первых специализированных DSP. Впоследствии, в 1982 г., Texas Instruments (TI) анонсировала свой первый универсальный программируемый DSP TMS32010, архитектура которого стала абсолютным законодателем мод на рынке цифровой обработки сигналов, а сама компания TI — аналогом Intel в мире процессоров для ПК. Сегодня перечень имен производителей самых разных DSP трудно перечислить, специалисты насчитывают более 300 (!) уникальных архитектур, реализованных "в кремнии", и даже надолго забывшая о DSP-рынке Intel объявила о планах совместной разработки с Analog Devices ЦПС нового поколения.
     

     Архитектурная эволюция

     Обилие архитектур DSP способно охладить любую настойчивость, но… Все ЦПС должны, в силу своей специфики, отвечать одним и тем же требованиям. Характерные для задач обработки сигналов свойства процессоров назвать уникальными трудно: здесь необходимы очень быстрая арифметика (а где она не нужна?), высокая скорость обмена процессора с внешними устройствами, преобразующими сигналы из окружающего мира в электрическое представление, и, наконец, высокая пропускная способность подсистемы памяти. Так что на самом деле данные требования не слишком специфичны — именно всего этого мы хотим от наших ПК, повышая частоту системной шины, совершенствуя периферийные интерфейсы (например, переходом от PCI к PCI 2) и устанавливая модули памяти SDRAM.

     Другое дело, что алгоритмы обработки сигналов обладают некоторой общностью, что вызывало необходимость концентрации усилий конструкторов и архитекторов DSP на эффективном решении ряда частных задач. Фундаментальными для цифровой обработки считаются примитивные операции сложения и умножения двух чисел-операндов, индексирования массивов данных и задержки. Арифметическая подгруппа в этом перечне (сложение и умножение) достаточно очевидна: для выполнения соответствующей операции надо где-то взять два операнда, произвести над ними необходимую операцию с размещением результата во временном "хранилище", затем записать результат из этого "хранилища" в определенное место (ячейку оперативной памяти или регистр процессора). С адресными операциями (индексированием массивов данных) дело обстоит сложнее: ЦПС должен уметь очень быстро выбирать данные из последовательных массивов и выполнять редко встречающуюся в RISC (да и CISC) процессорах команду копирования типа "память—память". Операция задержки, несмотря на "страшное" немикропроцессорное название, означает всего лишь очень быстрое "припрятывание" данных для последующего использования.

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

     Для ускорения арифметических вычислений в DSP используют несколько арифметико-логических устройств (АЛУ), работающих "в параллель", что в случае "хитро" устроенной внутренней регистровой памяти позволяет вводить в систему команд ЦПС очень интересные инструкции, в переводе на человеческий язык означающие приблизительно следующее: "умножить содержимое регистра 1 с содержимым регистра 2 и сложить результат умножения с содержимым регистра 3". И все это — одна команда, выполняющаяся за один такт. Восхищаться пока рано: операция умножения с накоплением (именно так называется подобный перечень действий) — классика цифровой обработки сигналов, а реализующие ее аппаратные средства постепенно проникают в еще недавно считавшиеся универсальными процессоры, в первую очередь RISC-архитектуры, в частности во многие клоны MIPS.

     Эффективная реализация операции задержки требует, чтобы у хорошего DSP было много внутренних регистров (в принципе, чем больше, тем лучше), в этом случае легко найти одну из незанятых регистровых ячеек для "припрятывания" данных. Кроме того, высокая скорость выполнения этой операции может быть достигнута только путем хороших архитектурных решений, например удачной логической организацией регистрового массива DSP. В нашем контексте это свойство ЦСП также кажется весьма привлекательным — обилие внутренних регистров и их логическая организация существенно упрощают разработку компиляторов с языков высокого уровня (что, к слову, подтверждается практикой — на ftp-сайте Texas Instruments можно найти очень удачные модификации известного компилятора C gcc, генерирующего код для ЦСП семейств TMS).

     Самой сложной операции — индексации массивов данных — DSP обязаны своей уникальностью. Обилие регистров и быстрая арифметика свойственны, например, RISC-процессорам (да и многим CISC). А вот выделенная в отдельную подсистему процессора "машина" генерации адресов — это та самая изюминка, придающая специфичность DSP, но ни в коем случае не ограничивающая их область применения. Как раз наоборот — единственный регистр счетчика команд в обычных процессорах принципиально не может превосходить по показателям целую подсистему. Эффективность генератора адресов — один из самых важных показателей, определяющих эффективность всего ЦПС в целом. Практически во всех DSP генераторы адресов работают "прозрачно" для всех остальных подсистем процессора, т. е. не отнимают машинного времени и не требуют приостановки выполнения основных операций. Кроме того, за счет применения генератора адресов ЦСП характеризуются очень развитыми способами адресации (для знающих язык программирования C — уж на что он богат на фокусы с указателями, в любом DSP присутствуют машинные команды, реализующие чуть ли не все возможные адресные операции этого языка).

     Если вспомнить повышенные требования DSP к скорости обмена с внешними устройствами, то в любом конкретном процессоре вы найдете результаты серьезных конструкторских усилий. В первую очередь, это высокоскоростные последовательные каналы ввода/вывода. Несмотря на их простоту, низкая стоимость интерфейсов в сочетании с достаточной для реальных приложений пропускной способностью (например, 40 Mbps) удовлетворяет практически всем потенциальным потребностям разработчиков. Для расширения возможностей конкретных процессоров используются как синхронные (трехпроводные: тактовая частота, данные и синхронизирующие импульсы), так и асинхронные (двухпроводные, синхронизирующие импульсы "замаскированы" в поток данных) последовательные каналы.

     Самые интересные и неожиданные архитектурные находки сконцентрированы в подсистемах памяти DSP. Насущная необходимость включения в систему команд однотактных инструкций умножения с накоплением привела к тому, что ничего общего со "стандартными" универсальными CPU у ЦПС не осталось. Действительно, за один такт невозможно одновременно прочитать или записать данные, адресуемые по одной единственной адресной шине, — для этого необходимо столько адресных шин, сколько единиц данных выступают в качестве операндов команды. Самое интересное, что разработчики DSP нашли совершенно нетривиальное и изящное решение этой проблемы даже в случае использования привычной фон-Неймановской архитектуры памяти (единая физическая память для программы и данных). "Зачем вообще использовать фон-Неймановскую архитектуру?" — спросите вы. Ведь существует и реализована в очень многих процессорах Гарвардская архитектура (раздельные физические память программ и данных с, соответственно, раздельными шинами), но… Универсальный DSP должен уметь работать с внешней оперативной памятью — многие программы обработки сигналов очень сложны, для хранения реализующего их кода и промежуточных данных требуется существенная емкость ОЗУ (большинство современных DSP имеют встроенные механизмы управления дешевой и быстрой SDRAM емкостью от 16 до 64 MB). Для реализации настоящей Гарвардской архитектуры требуются по две шины адреса и данных, что при 32-разрядном процессоре выливается в 128 выводов — это слишком дорого и слишком неудобно. В таком балансировании между производительностью и ценой DSP-архитекторы таки нашли неожиданно "равновесное положение": Гарвардская внутренняя и модифицированная фон-Неймановская внешняя архитектуры одновременно. Мы уже привыкли к тому факту, что процессоры работают на более высокой тактовой частоте, чем, например, шины памяти, поэтому DSP-модификация "неймана" покажется несколько странной: шина памяти работает на повышенной (обычно в 4 раза) по отношению к внутренней процессорной частоте. Это позволяет за один период (такт) процессора произвести несколько обращений к памяти — просто и эффективно, а заодно сэкономить на целой куче лишних выводов.

     Теперь, естественно, напрашивается вопрос: а как достигается такое высокое быстродействие DSP, если процессор работает на пониженной частоте? На сегодняшний день практически во всей DSP-индустрии есть несколько излюбленных приемов и архитектурных решений, играющих роль "структурного умножения тактовой частоты". Здесь берут не числом (не мегагерцами), а умением. Модные абстрактные термины типа VLIW (очень длинные машинные команды) давно и с успехом работают, например в процессорах Texas Instruments семейства TMS320C6xxx, 256-битовый код команды которых способен "инкапсулировать" до восьми 32-битовых операндов, представленных числами с плавающей и фиксированной точкой. Для "утилизации" подобных команд применяются несколько (в случае с TMS320C6xxx — шесть) арифметико-логических устройств и отдельных быстрых аппаратных умножителей. В несоизмеримо более дешевом SHARC от Analog Devices (модель ADSP-21065L, цена в больших партиях $10) применяются три отдельных АЛУ со скоростными умножителями (способные работать "в параллель"), отдельный аппаратный "сдвигатель" данных (shifter, обеспечивающий "сдвиг" битового содержимого на указанное в качестве операнда число битов N влево или вправо, что эквивалентно очень быстрому умножению или делению на 2**N), внутренняя Гарвардская и внешняя модифицированная фон-Неймановская архитектуры (тактовая частота шины оперативной памяти до 60 MHz), встроенная двухпортовая память (с возможностью одновременного доступа двумя подсистемами процессора) перестраиваемой конфигурации и, наконец, очень специфическая (но и крайне удобная) система команд. Ассемблер SHARC напоминает язык программирования достаточно высокого уровня, ориентированный на разработку математических приложений (скажу так: упрощенный параллельный FORTRAN). Несмотря на относительно "короткий" битовый формат команды (69 битов), на ассемблере 21065 можно записать, например, следующую однотактную команду:

     IF MS MRF=0; F6=(F2+F3)/2;

     (если выполняется условие "MRF равно 0", то вычислить полусумму регистров F2 и F3 с размещением результата в регистре F6).

     В итоге десятидолларовый чип выполняет весьма ресурсоемкую программу 1024-точечного комплексного быстрого преобразования Фурье за… 304 мкс (для сравнения попробуйте эту задачку в качестве теста своего Pentium).
     

     Возвращаясь к ПК

     Естественно, что в столь небольшом объеме статьи невозможно было провести углубленный обзор различных DSP. Но главная цель, думаю, достигнута — вы узнали, что есть на свете быстрые, удобные в программировании и дешевые процессоры.

     А что касается вопроса о ПК — давайте забудем на секунду обо всех этих PCI- и AGP-шинах, графических акселераторах, монстроидальных операционных системах. Попытаемся представить себе функционально многопроцессорный компьютер (один процессор — CPU, второй — графико-оконная подсистема, третий — умная подсистема ввода/вывода), для которого существуют стандарты только на языки программирования, системные вызовы CPU-модуля и команды, которыми обмениваются отдельные модули (например, упакованная в 32-разрядное слово команда "открыть окно размером 1024 x x 1024 пиксела" или "нарисовать линию из текущей позиции в точку с координатами X, Y"). Набравшись наглости, представим себе, что операционная система нашего ПК вообще не имеет понятия о всяких там накопителях: жестких дисках, CD-ROM и прочих, зато знает, что такое ftp (реализация подобной вещи существует и называется Andrew Filesystem), соответственно — модуль ввода/вывода представляет собой "тонкий" ftp-сервер.

     И наконец, соединим функциональные модули быстродействующим последовательным каналом (например, дешевым гигабитовым 1355, о котором я уже рассказывал). Если все получается (а оно именно получается), добавлю: все процессоры в этом ПК — DSP класса SHARC (или более мощные для производительных моделей). Получаем: открытую на уровне спецификации, развязывающую руки производителям (пусть конкурируют сколько угодно ВНУТРИ функциональных модулей, лишь бы не трогали НАРУЖНЫЕ межмодульные спецификации) архитектуру, изначально сетеориентированную (ftp-файловая система не делает различий между локальными и удаленными накопителями), очень производительную (даже при "скромных" вычислительных возможностях 21056L — вы не задумывались, сколько ресурсов "сжирают" выполняющиеся на одном процессоре ОС и графическая/оконная подсистема), дешевую, и, что главное, РЕАЛЬНО СПОСОБНУЮ СООТВЕТСТВОВАТЬ РАСТУЩИМ ТРЕБОВАНИЯМ МОБИЛЬНЫХ ПОЛЬЗОВАТЕЛЕЙ. Потому, что именно DSP "по зубам" такие задачки, как распознавание речи и визуальных образов, синтез речевых сообщений, быстрый поиск в базах данных, 3D-визуализация в реальном времени — почти все, на что способно наше сегодняшнее воображение.


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

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