Семейство процессоров обработки сигналов с векторно-матричной архитектурой NeuroMatrix

№ 8’2006
Данная статья описывает отечественные процессоры семейства NeuroMatrix®, ориентированные на матрично-векторную обработку большого потока данных относительно небольшой разрядности (от 2 до 32 бит) в реальном масштабе времени. Характерными областями применения этих процессоров являются: обработка изображений, MPEG кодирование и декодирование, обработка радиолокационных сигналов, в том числе различные виды цифровой фильтрации, преобразование Фурье и Адамара; высокопроизводительная коммутация сигналов и т. д. Перечисленные виды обработки данных входят в широкий класс задач, называемый мультимедийными приложениями. В статье изложены основные особенности мультимедийной обработки, дается краткий обзор архитектур современных высокопроизводительных процессоров, которые используются для поддержки мультимедийных приложений, приводится краткое описание процессоров семейства NeuroMatrix®: Л1879ВМ1 (NM6403), 1879ВМ2 (NM6404) и 1879ВМ4 (NM6405).

Данная статья описывает отечественные процессоры семейства NeuroMatrix®, ориентированные на матрично-векторную обработку большого потока данных относительно небольшой разрядности (от 2 до 32 бит) в реальном масштабе времени. Характерными областями применения этих процессоров являются: обработка изображений, MPEG кодирование и декодирование, обработка радиолокационных сигналов, в том числе различные виды цифровой фильтрации, преобразование Фурье и Адамара; высокопроизводительная коммутация сигналов и т. д. Перечисленные виды обработки данных входят в широкий класс задач, называемый мультимедийными приложениями. В статье изложены основные особенности мультимедийной обработки, дается краткий обзор архитектур современных высокопроизводительных процессоров, которые используются для поддержки мультимедийных приложений, приводится краткое описание процессоров семейства NeuroMatrix®: Л1879ВМ1 (NM6403), 1879ВМ2 (NM6404) и 1879ВМ4 (NM6405).

Основные особенности мультимедийной обработки

Считается, что в ближайшие годы основной задачей в области разработки компьютерных архитектур будет поддержка широкого класса приложений, относящихся к мультимедийной обработке [13]: 2D/3D графика, аудио- и видеосигнальная обработка, навигация, 2,5G и 3G сотовая телефония, программный приемник (Software-Defined Radio). Эти приложения характеризуются тем, что требуют обрабатывать большие потоки регулярных данных с производительностью до 10–100 млрд операций в секунду [8, 11], при этом они имеют некоторые общие особенности, которые существенно отличают их от приложений, характерных для универсальных процессоров [1, 2]:

  • Обработка непрерывных потоков данных в реальном времени. При этом данные поступают на вычислитель непосредственно с приемного устройства или через внешнюю память относительно большого объема.
  • Вследствие небольшого объема программного кода для его хранения обычно используется внутренняя память вычислителя.
  • Значительный параллелизм на уровне данных (возможно выполнение одновременно до нескольких тысяч однотипных операций над разными данными).
  • Большое количество операций по реорганизации данных (упаковка, распаковка, перестановка и т. д.), что делает затруднительным использование традиционных SIMD-архитектур, где данные затраты могут быть слишком велики.
  • Небольшие циклы с вложенностью от 2 до 6 уровней. Причем 95% времени вычислений тратится на выполнение циклов с одним и двумя уровнями вложенности. Итераций циклов обычно насчитывается 10 и больше, а некоторые циклы имеют сотни и тысячи итераций.
  • Большое количество одновременно выполняемых обращений не только к внутренней, но и к внешней памяти.
  • 40% и 51% используемых в приложениях данных представлены соответственно в 8-разрядном и 16-разрядном целочисленных форматах. Только 9% используемых данных являются 32-разрядными (как целочисленными, так и с плавающей точкой одинарной точности).
  • Не более 3–4% от общего числа команд — это команды с плавающей точкой одинарной точности. Причем используются они в основном только для 2D/3D графики. Плавающая точка двойной точности практически не применяется.
  • Большее количество арифметических операций, приходящихся на одну операцию ввода/вывода по сравнению с приложениями для универсальных процессоров.
  • Данные, хранящиеся в памяти, обладают хорошей пространственной и очень слабой временной локальностью. Обычно процессор загружает небольшой блок данных, обрабатывает его и в дальнейшем этот блок повторно практически не используется. Это приводит к тому, что кэш данных универсальных процессоров используется крайне неэффективно.

Архитектуры современных процессоров, предназначенных для работы с мультимедийными приложениями

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

μSIMD-архитектура

Данное название применяется для SIMD-расширений систем команд универсальных суперскалярных процессоров, таких как MMX, SSE1 и SSE2 (Intel), VIS (Sun), 3D Now! (AMD), AltiVec (Motorola). В систему команд этих процессоров введены операции над векторами 8-, 16- или 32-разрядных данных, упакованных в 64- или 128-разрядные слова. Тем самым за один такт производится несколько вычислений над данными небольшой разрядности. Для мультимедийных приложений такие SIMD-расширения позволяют ускорить вычисления в 1,0–5,5 раза в зависимости от конкретной задачи [3]. Однако вычислительные возможности аппаратуры, вводимой для поддержки SIMD-расширений, используются всего лишь на 1–12% [2]. Это объясняется тем, что аппаратно поддерживаются только арифметические операции. Остальные же операции (ввод/вывод данных, упаковка/распаковка, перестановка, организация циклов), доля которых достигает 75–85% от общего числа команд, эффективно не реализуются. Кроме того, SIMD-расширения не поддерживаются компиляторами языков высокого уровня, поэтому основные функции для мультимедийных приложений пишутся на языке ассемблера. Появление новых расширений, таких как SSE1 и SSE2, позволило увеличить пиковую производительность в два раза (например, байтовых операций за такт можно сделать 16, а не 8, как было при использовании MMX), поддержать вычисления с плавающей точкой. Но в основном ситуация осталась той же. Так, Pentium 4 на мультимедийных приложениях показывает ускорение всего в 1,139–2,362 раза в зависимости от конкретной задачи, если использует SSE2-расширение [4].

μSIMD-расширения, несмотря на ограниченное использование параллелизма на уровне данных, довольно широко распространены, поскольку требуют относительно небольших аппаратных затрат для своей реализации. В настоящее время они используются не только в универсальных процессорах, но и в микропроцессорах для встроенных применений (архитектуры MIPS и ARM), а также в высокопроизводительных VLIW DSP (TigerSharc фирмы Analog Devices, StarCore фирм Motorola и Lucent, TMS320C6x фирмы Texas Instruments).

Известно несколько архитектурных решений, позволяющих существенно повысить производительность универсальных процессоров при выполнении мультимедийных приложений. Так, в работе [16] предлагается MediaBreeze-расширение, которое поддерживает не только арифметические операции над упакованными данными небольшой разрядности, но и обеспечивает организацию циклов, а также ввод/вывод потоков данных. При этом достигается ускорение в 1,05–16,7 раза по сравнению с универсальным процессором с обычным SIMD-расширением. В ряде работ [5, 6] описывается переход от одномерного SIMD-расширения к двухмерному, когда операции задаются не над векторными регистрами, а над матрицами (несколькими векторными регистрами) и аккумулятором, хранящим матрицу промежуточных результатов. Это расширение получило название MOM (Matrix Oriented Multimedia). Его использование дает ускорение до 3,3 раз [5], а общее число используемых команд уменьшается в среднем на 45%, поскольку одна MOM команда заменяет группу μSIMD команд. При этом сильно уменьшаются затраты на организацию циклов [6]. Оба упомянутых выше решения предполагают переход от обработки коротких векторов к векторно-конвейерной обработке, а сами архитектурные принципы построения таких расширений очень похожи на решения, используемые в архитектуре процессоров семейства NeuroMatrix®.

VLIW-архитектура

Данная архитектура характеризуется тем, что содержит команды, каждая из которых задает одновременное выполнение нескольких операций на различных функциональных узлах процессора. При этом поиск операций, одновременное выполнение которых можно задать с помощью одной команды, возлагается на компилятор, а не реализуется аппаратно, как в динамических суперскалярных процессорах. VLIW-архитектура позволяет существенно упростить управляющую аппаратуру и достичь производительности, сравнимой с производительностью динамических суперскалярных процессоров. Исследования показывают, что VLIW DSP (TMS320C6x фирмы Texas Instruments) выполняет мультимедийные задачи в 0,63–9 раз быстрее, чем суперскалярный процессор Pentium II без μSIMD-расширения на той же тактовой частоте [3]. Вместе с тем, динамические суперскалярные процессоры с μSIMD-расширением имеют в среднем на 64% выше производительность на мультимедийных приложениях, чем VLIW-процессоры [6]. Это объясняется тем, что современные компиляторы не способны обеспечить параллелизм на уровне команд и данных на том же уровне, что и динамические суперскалярные процессоры. Кроме того, наличие большого количества функциональных узлов, работающих одновременно, предполагает использование большого многопортового регистрового файла, который занимает много места на кристалле, ограничивает быстродействие процессора и заметно увеличивает его потребляемую мощность. Поэтому по аппаратным затратам высокопроизводительные VLIW-процессоры сравнимы с суперскалярными процессорами.

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

Потоковая архитектура

Специально для решения мультимедийных приложений была предложена архитектура потокового процессора (Stream Processor) [8]. Данный процессор содержит управляющий RISC-процессор, 8 кластеров, каждый из которых состоит из набора функциональных устройств и локальных регистров, большого потокового регистрового файла и нескольких каналов ввода/вывода для работы с внешней памятью. Обмен между кластерами, а также между конкретным кластером и памятью осуществляется только через потоковый регистровый файл. Считается, что введение такого регистрового файла в качестве дополнительного уровня иерархии памяти способно значительно снизить требования к пропускной способности внешней памяти. Управление осуществляется SIMD-командами, способными задать одновременное выполнение до 48 арифметических операций во всех кластерах. Программирование осуществляется на языке высокого уровня, после чего компилятор в программе выделяет куски программного кода, содержащие однородную обработку данных — так называемые потоки (streams), которые затем выполняются на отдельных кластерах.

На частоте 180 МГц такой процессор достиг производительности 2,8–6,2 млрд операций в секунду на реальных мультимедийных задачах, обойдя на порядок Pentium 4 по показателю производительность/потребляемая мощность. Основной проблемой для потокового процессора является отсутствие компиляторных технологий, способных эффективно задействовать его вычислительные ресурсы. В настоящее время для написания программ используется специальное расширение языка Си.

Векторно-конвейерная архитектура

До недавнего времени процессоры с векторно-конвейерной архитектурой использовались в суперкомпьютерах для решения больших научных задач. После того как было обнаружено, что мультимедийные приложения хорошо векторизуются, было предложено использовать данный тип процессоров для решения этого класса задач. Представителями таких процессоров являются VIRAM университета в Беркли [10] и EVP (Embedded Vector Processor) фирмы Philips [11]. Считается, что по сравнению с процессорами других архитектур векторно-конвейерные процессоры могут наиболее эффективно решать мультимедийные задачи [1, 9, 11, 13]. Это объясняется тем, что для указанных процессоров уже существуют большие наработки в области компиляторов, а также тем, что они могут обеспечить требуемую производительность при небольшом потреблении питания. Так, VIRAM в 2 раза быстрее 4-way динамического суперскалярного процессора, работающего на частоте в 5 раз больше и потребляющего на порядок больше [10]. Это достигается тем, что векторно-конвейерные процессоры более приспособлены решать задачи с высокой степенью параллелизма по данным, чем универсальные вычислители [9, 10]. Несмотря на то, что первые запускают на выполнение одну команду за такт, благодаря использованию многотактовых векторных команд реально одновременно может выполняться большое количество операций на множестве функциональных устройств либо независимо, либо с «зацеплением», когда результат одной команды нужен для второй. При этом управляющая логика оказывается гораздо проще, чем у суперскалярных процессоров, что позволяет наращивать производительность векторно-конвейерных процессоров за счет использования большего числа функциональных устройств без уменьшения тактовой частоты и практически без потери эффективности использования аппаратуры. Хочется отметить, что при добавлении некоторых свойств универсальных процессоров, таких как переименование векторных регистров и внеочередное выполнение команд (out-of-order execution), векторно-конвейерные процессоры способны работать с памятью, имеющей задержку выборки данных в 100 тактов, с падением производительности всего на 6% [12].

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

Процессоры семейства NeuroMatrix® также относятся к классу векторно-конвейерных вычислителей, поскольку используют многотактовые векторные команды аналогичным образом. Отличие в том, что вместо векторных регистров общего назначения применяются специализированные FIFO и входные векторные регистры, что позволяет значительно сократить аппаратные затраты, упростить логику управления и синхронизации выполняемых операций. Использование FIFO дает возможность легко организовать «зацепление» по данным для двух одновременно выполняемых команд, одна из которых готовит результат для другой. Для их синхронизации достаточно отследить флаги FIFO: первая команда выполняется, пока FIFO не полно, а вторая — пока не пусто. Похожее архитектурное решение используется в MediaBreeze-расширении для универсальных процессоров, а наличие в процессорах NeuroMatrix® аккумуляторного FIFO, хранящего матрицу промежуточных или окончательных результатов, делает их похожими на MOM (Matrix Oriented Multimedia) расширение.

Вместе с тем, использование FIFO для синхронизации вычислительных процессов характерно для архитектуры с «расщеплением» потока команд (decoupled architecture) [14]. Эта архитектура обеспечивает механизм динамического внеочередного выполнения команд (out-of-order execution), как в суперскалярных процессорах, с гораздо меньшими затратами на управление, также она способна не терять производительность при увеличении времени доступа в память. Считается, что ее широкому распространению мешает неэффективная работа с программами, содержащими большой процент команд управления. Одно из решений предлагает использовать мультитредовость [15]. Мы, как и авторы статьи [16], считаем, что для мультимедийных приложений использование многотактовых векторных команд позволит преодолеть данный недостаток, поскольку команды управления могут выполняться на фоне работы векторных команд.

Кроме того, процессоры NeuroMatrix® используют команды типа VLIW, задающие одновременно операции обмена с памятью, модификацию адресных регистров и арифметическую операцию, причем это относится как к скалярным, так и к векторным командам. Объединение в одной команде операций ввода/вывода и арифметической операции позволяет увеличить производительность скалярных команд на реальных задачах до 40% [17], но для векторных команд это решение, по нашим оценкам, особый выигрыш не дает.

Все вышесказанное позволяет отнести процессоры семейства NeuroMatrix® к новому классу вычислителей, а именно — к векторно-конвейерным DSP. Они обладают высокой производительностью при обработке больших потоков данных, требуют меньших аппаратных затрат, чем универсальные векторно-конвейерные процессоры, и, как следствие, имеют меньшее потребление питания. Платой за это является невозможность использования векторных команд компилятором языка высокого уровня. Так же как для μSIMD-расширений универсальных процессоров, на ассемблере пишется библиотека функций, использующих векторные команды, и затем эти функции вызываются программами пользователя, написанными на языке высокого уровня.

Описание архитектуры процессоров семейства NeuroMatrix®

Научно-техническим центром «Модуль» разработано семейство цифровых процессоров сигналов NeuroMatrix, в том числе Л1879ВМ1 (NM6403) и 1879ВМ2 (NM6404). Дальнейшее развитие семейства связано с завершением разработки и запуском на изготовление в 2006 году процессора третьего поколения 1879ВМ4 (NM6405). Особенностью данного семейства является оригинальная, запатентованная векторно-матричная архитектура, обеспечивающая высокое соотношение производительности и цены устройств. Следует особо подчеркнуть, что это полностью отечественная разработка.

Процессоры семейства 1879ВМх представляют собой высокопроизводительные вычислительные устройства, имеющие RISC-архитектуру с элементами VLIW (Very Long Instruction Word), SIMD (Single Instruction Multiple Data) и суперскаляра. Архитектура и структура обеспечивают: аппаратную поддержку матричных и векторных операций над векторами, представляющими собой 64-разрядные слова, в которых упакованы данные, представленные в дополнительном коде с фиксированной точкой; программную настройку исполнительных узлов для работы с векторами данных, содержащих необходимое количество элементов требуемой разрядности (в общем случае количество элементов в векторе и их разрядность должны принимать любое значение в пределах от 1 до 64, суммарная разрядность всех элементов каждого вектора должна составлять 64 разряда); исполнение векторных команд в течение нескольких процессорных тактов, число которых (от 1 до 32) определяется специальным полем команды.

Процессор Л1879ВМ1

В течение уже более семи лет выпускается и широко применяется цифровой микропроцессор сигналов Л1879ВМ1. Этот процессор изготавливается по КМОП технологии 0,5 мкм фирмой Samsung. Он работает на частотах до 40 МГц в диапазоне температур от –40 до +85 °С и напряжений от 3,0 до 3,6 В. Количество операций «умножение с накоплением», выполняемых за один процессорный такт, от 2 (32-разрядные данные) до 224 (2-разрядные данные), поэтому пиковая производительность процессора в указанных условиях составляет 8,96 млрд умножений с накоплением (GMAC). В 1999 году лицензия на использование микропроцессорного ядра этого процессора была приобретена фирмой Fujitsu.

Л1879ВМ1 поддерживает работу с 32-разрядными скалярными данными и векторными данными программируемой разрядности от 1 до 64, упакованными в 64-разрядные блоки данных. Структурная схема процессора представлена на рис. 1, а его карта памяти изображена на рис. 2.

Рис. 1. Структурная схема процессора Л1879ВМ1
Рис. 2. Карта памяти процессора Л1879ВМ1

Процессор состоит из следующих функциональных узлов:

  • RISC CORE — RISC-процессор, имеющий 5-ступенчатый конвейер и выполняющий скалярные арифметические, логические операции и операции сдвига над 32-разрядными данными, а также осуществляющий управление выполнением программ.
  • VECTOR UNIT — векторный узел, выполняющий арифметические и логические операции над 64-разрядными векторами данных, упакованных в 64-разрядные блоки данных произвольной разрядности.
  • LMI и GMI — два идентичных 64-разрядных интерфейса во внешнюю память — локальную и глобальную. Каждый интерфейс имеет возможность работать с двумя банками внешней памяти типа SRAM/DRAM и поддерживает режим работы с общей памятью с другим процессором. Л1879ВМ1 использует 32-разрядный адрес, причем обмен данными с памятью осуществляется по 32 или 64 разряда. Таким образом, доступное адресное пространство равно 16 Гбайт. Если старший разряд адреса равен нулю, идет обращение в локальную память, если равен единице — в глобальную. Младший разряд адреса используется только при обмене 32-разрядными данными.
  • COM. PORT0 и COM. PORT1 — два байтовых коммуникационных порта ввода/вывода для межпроцессорного обмена, аппаратно совместимые с портами DSP TMS320C4x фирмы Texas Instruments.
  • DMA COPROCESSOR — сопроцессор ПДП, осуществляющий обмен 64-разрядными данными между памятью и портами.
  • DATA BUS SWITCH — коммутатор шин данных, позволяющий динамически связать одну из внешних шин с одной из шести внутренних: команд IB<63:0>, входных SDIB<63:0> и выходных скалярных данных SDOB<63:0>, входных VDIB<63:0> и выходных векторных данных VDOB<63:0>, а также с входной шиной весов WB<63:0>.

RISC-процессор

Процессор представляет собой 5-ступенчатый 32-разрядный RISC с оригинальной системой команд. Он использует 32- и 64-разрядные команды (одна команда обычно задает две операции: арифметическую и ввода/вывода). Все узлы RISC 32-разрядные.

Векторный узел

Архитектура NeuroMatrix® дает уникальную возможность варьировать между производительностью и точностью вычислений для базовой процедуры:

В зависимости от приложения можно выбрать необходимую разрядность входных данных и результата (точность вычислений). Число умножений и сложений (MAC), выполняемых за один такт, зависит от разрядности операндов. Наибольшая производительность — 8960 MMAC — достигается при работе с 2-разрядными операндами на частоте 40 МГц. Имеется возможность поднять точность вычислений, если увеличить разрядность операндов до 32. В этом случае достигается производительность 80 MMAC с получением 64-разрядного результата. Векторный узел содержит операционное устройство регулярной структуры, похожее на матричный умножитель (рис. 3).

Рис. 3. Операционное устройство векторного узла

Данное устройство состоит из ячеек, содержащих 1-разрядную память (триггер) и некоторую комбинационную логику. Пользователь может поделить матрицу ячеек на макроячейки, используя два программно доступных 64-разрядных конфигурационных регистра. Эти регистры задают границы между строками и столбцами макроячеек таким образом, что каждая макроячейка выполняет операцию умножения элемента входного вектора Xi на заранее загруженный вес Wij, а затем результат прибавляется к выходному значению верхней макроячейки, расположенной в том же столбце. Таким образом, за один такт в каждом столбце независимо вычисляется свой результат. Пример конфигурации векторного узла для работы с 8-разрядными входными данными (Xi) и весами (Wij) приведен на рис. 4. В этом случае достигается пиковая производительность в 960 MMAC (за один 25 нс процессорный такт производятся 24 операции умножений с накоплением (MAC) с получением 21-разрядных результатов).

Рис. 4. Пример работы векторного узла с 8-разрядными входными данными и весами

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

Рис. 5. Зависимость производительности от разрядности входных операндов и весов

Операционное устройство достигает еще большей производительности при выполнении булевого умножения, когда разрядность входных операндов и весов равна 1. В этом случае она равна 40,96 GMOPS на частоте 40 МГц. Имеется еще одно интересное свойство использования 1-разрядных коэффициентов. В этом случае операционное устройство превращается в мощный коммутатор, когда перестановка битов в 64-разрядном входном операнде происходит за один такт.

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

Для предотвращения переполнения аппаратно реализована функция насыщения (рис. 6) над 64-разрядными словами упакованных данных, причем границы насыщения задаются с помощью программно доступных регистров управления этой функцией. Функция насыщения не уменьшает разрядность входных операндов, но уменьшает число значащих разрядов в каждом элементе входного вектора.

Рис. 6. Функция насыщения

Система команд

Команды процессора делятся на две основные группы: скалярные команды (рис. 7) и векторные (рис. 8).

Рис. 7. Кодировка скалярных команд
Рис. 8. Кодировка векторных команд

Скалярные команды являются обычными RISC-командами, которые также задают условные переходы/переходы к подпрограмме и возвраты из подпрограммы/прерывания. Процессор поддерживает работу с 32-разрядными константами, которые могут грузиться в регистры или использоваться для задания адреса или смещения при обращении к памяти. Векторные команды содержат специальное поле, задающее число повторов выполнения данной команды (от 1 до 32). Это позволяет аппаратно поддержать организацию коротких циклов и значительно увеличить плотность кода.

Конвейер Л1879ВМ1 состоит из нескольких подконвейеров. Любая скалярная или векторная команда в данный момент времени занимает один или несколько подконвейеров. Если имеются необходимые свободные подконвейеры, очередная команда может пойти на выполнение (но не более одной команды за такт). При использовании многотактовых векторных команд до четырех векторных, включая два доступа в память, и одной скалярной команды могут выполняться одновременно. Синхронизация различных подконвейеров осуществляется с помощью механизма блокировок. Если команда требует некоторый ресурс, который в данный момент занят, формируется блокировка, и выполнение команды приостанавливается. Принадлежащие команде подконвейеры блокируются, остальные же могут продолжать свою работу. Таким образом, несмотря на последовательный запуск команды в конвейер на выполнение, использование векторных команд позволяет достичь производительности суперскалярных процессоров. Завершение команд поддерживается не в том порядке, в котором они выбирались из памяти (out-of-order execution). Вместе с тем достигается высокий уровень загрузки аппаратуры на кристалле, поскольку скалярные и векторные команды используют единый конвейер и одни и те же исполнительные устройства. При этом требуется небольшое количество управляющей логики (менее 5% от 115 000 используемых на кристалле вентилей).

В качестве примера приведем программу на ассемблере вычисления фильтра-свертки 3×3:

Первые две команды делят операционное устройство на 4 колонки по 16 разрядов и 8 строк по 8 разрядов. Третья загружает веса в теневую матрицу, а четвертая переписывает теневую матрицу в рабочую. Затем происходит вычисление промежуточного результата свертки с использованием трех элементов первой строки маски 3×3. Шестая команда переписывает новые веса из теневой матрицы в рабочую. Потом вычисляется промежуточный результат свертки с использованием трех элементов второй строки маски 3×3 с прибавлением результата пятой команды. Восьмая команда снова меняет веса в рабочей матрице. По девятой вычисляется промежуточный результат свертки с использованием трех элементов третьей строки маски 3×3 с прибавлением результата седьмой команды. Десятая команда задает отложенный переход на начало цикла. Термин «отложенный переход» означает, что следующие две команды будут выполнены, прежде чем произойдет сам переход. Первая отложенная команда восстанавливает указатель памяти весов, а вторая пишет результат вычислений в память.

Результат сравнения производительности Л1879ВМ1 и DSP TMS320C80 фирмы Texas Instruments на задачах вычисления фильтра свертки приведен в таблице 1. Данные для TMS320C80 взяты из [18]. Важно отметить, что число циклов для Л1879ВМ1 с увеличением размера маски свертки растет линейно.

Таблица 1. Вычисление сверток

Область применения и оценка производительности

Процессор Л1879ВМ1 используется в целом ряде применений, требующих большую производительность при умеренном потреблении питания:

  • цифровая обработка сигналов (БПФ, ДПФ, преобразование Уолша-Адамара);
  • видеообработка (фильтрация);
  • эмуляция нейронных сетей и матрично-векторные операции;
  • телекоммуникация;
  • встроенные системы;
  • многопроцессорные вычислительные комплексы.

Производительность Л1879ВМ1 на тестовых задачах для DSP приведена в таблице 2. Параметры задач следующие: для фильтра Собеля размер кадра 384 288 байт; БПФ для 256 точек, разрядность — 32; преобразование Уолша-Адамара — 2 М точек, входные данные — 5 разрядов, результат — 32 разряда. Более подробно об оценке производительности Л1879ВМ1 на различных задачах можно познакомиться в работах [19–25].

Таблица 2. Производительность на тестовых задачах для DSP

Процессор 1879ВМ2

В настоящее время разработана и запущена в промышленное производство микросхема процессора цифровой обработки сигналов 1879ВМ2. Этот процессор изготавливается по более современной КМОП технологии 0,25 мкм фирмой Fujitsu и отличается в два раза большей производительностью по сравнению со своим предшественником. Он работает на частотах до 80 МГц в диапазоне температур от –40 до +85 °С и напряжений для ядра процессора от 2,3 до 2,7 В и периферии от 3,0 до 3,6 В. Пиковая производительность процессора в указанных условиях составляет 17,92 млрд умножений с накоплением (GMAC). Новый процессор имеет в своем составе внутреннюю память объемом 2 Мбит и богатый набор периферийных блоков различного назначения.

По структурной организации и программным моделям отдельных узлов 1879ВМ2 практически идентичен процессору Л1879ВМ1. Структурная схема процессора представлена на рис. 9. 1879ВМ2 полностью программно совместим с процессором Л1879ВМ1. Это позволяет использовать в новом процессоре созданное для Л1879ВМ1 системное и прикладное программное обеспечение без изменений.

Рис. 9. Структурная схема процессора 1879ВМ2

Ниже приводятся основные архитектурные и структурные особенности 1879ВМ2, отличающие его от своего предшественника.

1879ВМ2 содержит внутреннюю оперативную память статического типа (SRAM) общим объемом 2 Мбит, расположенную на одном кристалле с процессорными узлами (рис. 9). Наличие в 1879ВМ2 быстродействующей внутренней памяти достаточно большого объема позволяет существенно сократить количество микросхем внешней памяти, использовать более дешевые медленные микросхемы памяти, а для многих применений процессора вообще исключить использование внешней памяти. Тем самым резко снижается стоимость изделий на базе процессора 1879ВМ2.

  • Внутренняя память состоит из двух одинаковых блоков памяти, каждый из которых представляет собой однопортовую синхронную SRAM, имеющую организацию 16 К×64 бит, и может использоваться для оперативного хранения 32- и 64-разрядных слов данных, коэффициентов и команд.
  • Любой цикл обращения к внутренней памяти процессора выполняется за один процессорный такт.
  • В каждом такте происходит до двух обращений к внутренней или внешней памяти.
  • Один банк внутренней памяти расположен в адресном пространстве локальной шины (Internal Local Memory), второй — в адресном пространстве глобальной шины (Internal Global Memory).

Карта памяти 1879ВМ2 представлена на рис. 10. Она включает в себя два адресных пространства — область адресов локальной шины и область адресов глобальной шины.

  • Область адресов локальной шины охватывает:
    • банк Internal Local Memory внутренней оперативной памяти данного процессора;
    • до двух банков внешней памяти, подключенных к локальной шине процессора.
  • Область адресов глобальной шины охватывает:
    • банк Internal Global Memory внутренней оперативной памяти данного процессора;
    • до двух банков внешней памяти, подключенных к глобальной шине процессора.
  • Каждый банк внутренней оперативной памяти 1879ВМ2 занимает 32 K 32-разрядных или 16 К 64-разрядных ячеек. Банки внутренней памяти не доступны извне.
Рис. 10. Карта памяти процессора 1879ВМ2

1879ВМ2 поддерживает до двух банков внешней памяти и те же режимы работы с общей памятью на внешних шинах, что и Л1879ВМ1. Отличием является лишь то, что 0-й банк внешней памяти становится на 32 K 32-разрядных или 16 К 64-разрядных ячеек меньше, так как эти ячейки принадлежат теперь внутренней памяти.

16–19 разряды шины адресов интерфейсов с внешней памятью больше не выполняют других функций, таких как арбитраж шины, сигнал готовности, признак цикла (запись/чтение) для динамического ОЗУ, для чего добавлены соответствующие выводы. Кроме того, выводы сигналов готовности внешнего устройства (GRDY и LRDY) использовались в Л1879ВМ1 как таковые только в однопроцессорной конфигурации шины, для многопроцессорной конфигурации с помощью них разрешался захват шины другим процессором. Теперь они выполняют только свою основную функцию независимо от конфигурации шины, а вторая функция реализуется с помощью двух новых выводов CHOLDA и LHOLDA.

В 1879ВМ2 используются такие же два коммуникационных порта, что и в Л1879ВМ1. Разница только в том, что 1879ВМ2 работает с 3 В сигналами и не может принимать 5 В сигналы. Это приводит к тому, что он может непосредственно обмениваться данными через коммуникационный порт с Л1879ВМ1, но не с TMS320C4x, поскольку последний использует питание 5 В. Кроме того, снимаются все ограничения на использование коммуникационного порта 1 во всех режимах работы, которые были введены для Л1879ВМ1 из-за аппаратной ошибки. Вместе с тем, наличие у 1879ВМ2 внутренней памяти позволяет гарантированно принимать/передавать пакеты размером до 16 К 64-разрядных слов.

Добавлены 4 входа внешних прерываний (INT0–INT3) вместо одного, при этом таблица адрес-векторов прерываний осталась неизменной. Это означает, что любому из четырех внешних прерываний соответствует один адрес-вектор. Какое именно внешнее прерывание (или несколько внешних прерываний) обрабатывается в данный момент времени, программист может определить с помощью битов 20–26 регистра INTR, где теперь фиксируется состояние всех входов внешних прерываний при фиксации обобщенного запроса на внешние прерывания. Условием фиксации обобщенного запроса является появление низкого уровня на любом из входов внешних прерываний или на нескольких из них при условии, что выход подтверждения внешнего прерывания INTA находится в пассивном состоянии (выдается высокий уровень). При инициализации процессора по внешнему прерыванию можно использовать любой из четырех входов внешних прерываний.

В 1879ВМ2 имеется возможность аппаратного тестирования внутренней памяти. Чтобы его активировать, необходимо во время системного сброса подать на вход режима тестирования внутренней памяти TM высокий уровень. После системного сброса запускается тест внутренней памяти, и, если он пойдет удачно, на выходе флага тестирования памяти MTF низкий уровень сменится высоким. После этого возможна нормальная работа процессора.

Добавлен JTAG-порт (рис. 9), позволяющий существенно упростить процедуры тестирования аппаратных средств и отладки прикладного программного обеспечения.

Процессор 1879ВМ4

Дальнейшее развитие процессоров NeuroMatrix® связано с завершением разработки и запуском на изготовление в 2006 году процессора третьего поколения, являющегося дальнейшим развитием семейства. Он будет изготовлен по той же технологии, что и 1879ВМ2, но за счет более глубокого конвейера достигнет частоты 150 МГц в диапазоне температур от –40 до +85 °С и напряжений для ядра процессора от 2,3 до 2,7 В и периферии от 3,0 до 3,6 В. Пиковая производительность процессора в указанных условиях составляет 33,6 млрд умножений с накоплением (GMAC). Новый процессор имеет в своем составе внутреннюю память объемом 2 Мбит и богатый набор периферийных блоков различного назначения. Сохраняя программную совместимость с предшественниками и их основные архитектурные особенности, процессор 1879ВМ4 имеет процессорное ядро усовершенствованной архитектуры, ряд отличий которой позволяет не только сохранить программную совместимость, но и увеличить производительность устройства при той же частоте тактового сигнала.

Структурная схема 1879ВМ4 представлена на рис. 11. По структурной организации и программным моделям отдельных узлов 1879ВМ4 практически идентичен процессорам Л1879ВМ1 и 1879ВМ2.

Рис. 11. Структурная схема процессора 1879ВМ4

1879ВМ4 имеет минимальные отличия по системе команд по сравнению с процессорами Л1879ВМ1 и 1879ВМ2. Это позволяет использовать в новом процессоре созданное для Л1879ВМ1 и 1879ВМ2 системное и прикладное программное обеспечение после перекомпиляции программ, написанных на ассемблере.

Ниже приводятся основные архитектурные и структурные особенности 1879ВМ4, отличающие его от своих предшественников.

1879ВМ4 содержит внутреннюю оперативную память статического типа (SRAM) общим объемом 2 Мбит, расположенную на одном кристалле с процессорными узлами.

  • Внутренняя память состоит из четырех одинаковых банков памяти, каждый из которых представляет собой однопортовую синхронную память (SRAM), имеющую организацию 8К×64 бит, и может использоваться для оперативного хранения 32- и 64-разрядных слов данных, коэффициентов и команд. Все банки памяти работают как псевдодвухпортовые, что позволяет одновременно производить доступ к памяти как со стороны процессорного ядра, так и со стороны каналов ПДП.
  • Любой цикл обращения к внутренней памяти процессора выполняется за один процессорный такт.
  • В каждом такте происходит до четырех обращений к внутренней памяти и до двух обращений к внешней памяти:
    • выборка команды,
    • чтение или запись по скалярной команде,
    • чтение весов по векторной команде,
    • чтение данных для выполнения над ними арифметической операции по векторной команде (данные на проходе),
    • чтение данных для их сохранения в векторном регистре по векторной команде,
    • запись результата арифметической операции по векторной команде.

Кроме того, имеются два канала ПДП «внешняя-внутренняя память» (DMA СOPR.), которые работают в фоновом режиме. Одновременно могут выполняться только те из указанных циклов, при которых адресуются различные блоки внутренней памяти и различные внешние памяти (локальная или глобальная).

Таким образом, всего в процессоре поддерживается до шести доступов во внутреннюю память и до двух доступов во внешнюю память в каждом такте.

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

1879ВМ4 имеет внутрикристальный кэш команд (ICACHE) объемом 8 Кбит (1 К×64) с организацией 8-way и с отсутствием блокировок при промахах. При обращении во внешнюю память выбранные команды попадают одновременно в процессорное ядро (PROCESSOR CORE) и в кэш. При повторном обращении по тому же адресу команды будут выбираться из кэш, а не из внешней памяти. Программы, расположенные во внутренней памяти, не кэшируются. Кэш команд в 1879ВМ4 позволяет эффективно работать с программами, расположенными во внешней памяти, и освободить программиста от дополнительной работы по трансляции программного кода из внешней во внутреннюю память.

1879ВМ4 содержит аппаратные средства, позволяющие без использования дополнительного внешнего контроллера подключить к любой внешней шине (локальной или глобальной) еще один процессор NM6405, работающий с общей памятью, подключенной к данной шине, в режиме Shared Memory. Данная способность 1879ВМ4 позволяет строить на его основе мультипроцессорные системы с линейной структурой.

  • К одной внешней шине могут быть подключены как локальные, так и глобальные шины процессоров 1879ВМ4. Дополнительные конфигурационные выводы определяют, какой из процессоров владеет шиной после системного сброса.
  • В адресное пространство каждого 1879ВМ4 мультипроцессорной системы входят:
    • все четыре банка внутренней памяти данного процессора;
    • вся внешняя память, подключенная к локальной и глобальной шинам данного процессора;
    • два банка внутренней памяти соседних процессоров, подключенных к локальной и глобальной шинам данного процессора.

Включение в адресное пространство каждого 1879ВМ4 банков внутренней памяти соседних процессоров позволяет даже в отсутствие микросхем внешней памяти увеличить объем памяти каждого процессора до 4 Мбит.

  • В 1879ВМ4 поддерживается только один режим Shared Memory, в соответствии с которым:
    • в каждый момент времени управление внешней шиной осуществляет только один из подключенных к ней процессоров, являющийся «ведущим» (другой процессор, подключенный к данной шине, является «ведомым» в этот момент времени);
    • «ведущий» процессор может непосредственно обращаться как к своей внутренней памяти, так и к внешней памяти или к внутренней памяти соседнего «ведомого» процессора;
    • «ведомый» процессор может непосредственно обращаться только к своей внутренней памяти;
    • для обращения к микросхемам внешней памяти или к внутренней памяти одного из соседних процессоров «ведомый» процессор должен предварительно стать «ведущим», взяв управление внешней шиной на себя;
    • передача управления внешней шиной выполняется автоматически следующим образом:
      1. при обращении к микросхемам внешней памяти или к внутренней памяти одного из соседних процессоров «ведомый» процессор выставляет запрос на захват шины,
      2. по окончании текущих операций на внешней шине «ведущий» процессор выставляет сигнал разрешения на захват шины и становится «ведомым»,
      3. «ведомый» процессор становится «ведущим»;
    • процедура передачи управления внешней шиной может контролироваться программистом с помощью битов «разрешение передачи управления локальной (глобальной) шиной» регистра PSWR.
  • Каждый 1879ВМ4 может обращаться к ячейкам внутренней памяти соседнего процессора как в программном режиме, так и в режиме ПДП.

Карта памяти 1879ВМ4 представлена на рис. 12 и включает в себя два адресных пространства — область адресов локальной шины и область адресов глобальной шины.

  • Область адресов локальной шины охватывает:
    • банки Inner Local Bank 0 и Inner Local Bank 1 внутренней оперативной памяти данного процессора;
    • до четырех банков внешней памяти, подключенных к локальной шине процессора. В качестве одного из банков может быть подключен другой процессор.
  • Область адресов глобальной шины охватывает:
    • банки Inner Global Bank 0 и Inner Global Bank 1 внутренней оперативной памяти данного процессора;
    • до четырех банков внешней памяти, подключенных к глобальной шине процессора. В качестве одного из банков может быть подключен другой процессор.
  • Каждый банк внутренней оперативной памяти 1879ВМ4 занимает 16 K 32-разрядных или 8 К 64-разрядных ячеек. Он состоит из двух подбанков (блоков) по 4К×64, к каждому из которых может быть осуществлен одновременный доступ как за 32-разрядными, так и 64-разрядными данными. Один доступ осуществляется со стороны процессорного ядра NMC2, а второй — со стороны канала ПДП.
  • Адреса векторов прерываний 1879ВМ4 расположены в начальных адресах банка Inner Local Bank 0 его внутренней памяти.
Рис. 12. Карта памяти процессора 1879ВМ4

Блоки программируемого интерфейса 1879ВМ4 позволяют использовать в качестве внешней памяти микросхемы SRAM, ROM, Flash ROM и микросхемы синхронной памяти (SSRAM, SDRAM).

  • Микросхемы памяти указанных типов подключаются непосредственно к выводам 1879ВМ4 без применения дополнительных контроллеров памяти.
  • Разные банки внешней памяти одного процессора могут быть реализованы на микросхемах памяти различного типа.

1879ВМ4 имеет развитую систему внутренних шин, что позволяет увеличить количество одновременно выполняемых циклов обращения к памяти и тем самым повысить производительность процессора.

  • Коммутатор шин (COMMUTATOR 6->5) динамически объединяет одну из шести шин данных внешней или внутренней памяти с одной из пяти внутренних шин ядра и кэш:
    • шиной MEM_IB для пересылки команд из памяти в кэш, а через кэш в процессорное ядро по шине команд IB;
    • шиной скалярных данных (SDB) для чтения скалярных данных из памяти в процессорное ядро;
    • шиной входных векторных данных (VDIB) для чтения векторных данных из памяти в векторный узел (VECTOR UNIT) процессорного ядра с последующим выполнением над ними арифметической операции;
    • шиной весов (WB) для загрузки весов из памяти в векторный узел;
    • шиной векторного регистра (VRB) для пересылки данных из памяти в векторный регистр векторного узла.

Шина скалярных данных (SDB) также используется для записи скалярных данных в память или в регистры периферийных узлов.

  • Шина выходных векторных данных (VOB) позволяет записать результат работы векторного узла в память без остановки других операций чтения/записи процессорного ядра.
  • Имеется встроенный сопроцессор ПДП (DMA COPR.), который обслуживает два коммуникационных порта (CP0 и CP1), а также два программно настраиваемых канала ПДП «память-память». Он управляет коммутатором BUS SWITCH для организации обмена блоками данных между коммуникационными портами и банками памяти или между самими банками памяти и использует для этого две специальные шины данных ПДП: шину данных ПДП в локальную (DMA LDB) и глобальную память (DMA GDB) и две специальные шины адреса ПДП: шину адреса ПДП в локальную (DMA LAB) и глобальную память (DMA GAB).

В 1879ВМ4 количество генераторов адреса (блок AGU) увеличивается до семи (один для команд и шесть для данных), что позволяет в одном такте формировать до семи запросов на работу с памятью: на выборку команды, на чтение и запись скалярных данных, на чтение до трех данных для векторного сопроцессора и на запись результата работы векторного сопроцессора. Все семь запросов могут быть обслужены одновременно, если адресуются различные банки внутренней памяти и различные внешние памяти (локальная или глобальная), а команда выбирается из кэш команд.

Для 1879ВМ4 изменяются правила выполнения команд на первом, втором и третьем уровнях конвейера:

  • Все команды при запуске на выполнение, как и раньше, начинают свою работу на общей части первого уровня конвейера. Скалярная команда на данной ступени конвейера выставляет запрос на доступ в память. В случае отсутствия блокировок от блока приоритетов и от нижних ступеней конвейера команда попадает на вторую ступень конвейера и освобождает общую часть.
  • Векторная команда при запуске занимает общую часть первого уровня конвейера на один процессорный такт. За это время она вычисляет адрес первого обращения в память. Одновременно на специальном арифметическом устройстве, содержащем умножитель 5×32 разряда и 32-разрядный сумматор, формируется новое значение адресного регистра, использующегося в качестве базы. Это значение совпадает с тем, что должно получиться после завершения выполнения векторной команды.
  • В следующем такте векторная команда освобождает общую часть и занимает один из шести адресных генераторов, находящихся вне процессорного ядра. При этом выдается адрес первого обращения в память по шине ADDR и значение смещения по шине BIAS. Далее адресный генератор работает самостоятельно, не занимая ресурсов процессорного ядра.
  • На втором уровне конвейера вводится единая очередь для скалярных и векторных команд, ожидающих своих данных. Данная очередь имеет глубину восемь, что позволяет эффективно работать с внешней синхронной памятью в конвейерном режиме — имеется возможность выставить до 8 запросов на чтение, прежде чем придут первые данные.
  • На третьем уровне конвейера команды из очереди последовательно попадают на свои исполнительные конвейеры (один для скалярных операций и пять для векторных операций) и ожидают своих данных. Причем векторная команда может занять один или несколько исполнительных конвейеров в зависимости от кода операции. После получения своих данных скалярные команды выполняют АЛУ операцию, если она задана, и заканчивают свое выполнение. Если в скалярной команде задан один и тот же регистр в качестве приемника для АЛУ операции и операции ввода/вывода, более приоритетна последняя операция. Конвейеры для векторных операций далее имеют переменную глубину в зависимости от типа выполняемой операции. Данные изменения в 1879ВМ4 позволяют одновременно выполнять одну скалярную и до пяти векторных команд, в том числе четыре обмена с памятью, а также эффективно работать с конвейером доступа в память переменной глубины от 1 до 8 тактов.

В 1879ВМ4 предусмотрена загрузка матрицы весов по принципу один вектор весов — за один такт. Это позволит существенно уменьшить минимально эффективную величину пакета (раньше он был равен 32) обрабатываемых векторов, что в свою очередь приведет к значительному росту производительности процессора при решении широкого круга задач в области цифровой обработки сигналов.

В 1879ВМ4 введена аппаратная вершина системного стека. Она копирует содержимое ячейки памяти системного стека, хранящей последний адрес возврата из подпрограммы или прерывания и значение регистра PSWR при входе в подпрограмму/прерывание. Поддержка аппаратной вершины системного стека в 1879ВМ4 позволяет резко ускорить выполнение команд возврата из подпрограммы или прерывания, особенно если системный стек расположен во внешней памяти.

В 1879ВМ4 предусмотрены следующие режимы начальной загрузки:

  • загрузка через коммуникационный порт 1 256-ти 64-разрядных слов в банк 0 внутренней локальной памяти (Inner Local Bank 0) и затем старт по нулевому адресу из этого банка;
  • загрузка через коммуникационный порт 0 256-ти 64-разрядных слов в банк 0 внутренней локальной памяти (Inner Local Bank 0) и затем старт по нулевому адресу;
  • загрузка из нулевого банка внешней локальной памяти 256-ти 64-разрядных слов в банк 0 внутренней локальной памяти (Inner Local Bank 0) в режиме ПДП и затем старт по нулевому адресу;
  • старт по нулевому адресу из банка 0 внутренней локальной памяти (Inner Local Bank 0), информация в который должна быть предварительно записана внешним процессором, подключенным к локальной шине.
  • Выбор способа начальной загрузки процессора определяется значениями сигналов на его входах BOOTM0 и BOOTM1.

В 1879ВМ4 добавлены два программируемых канала ПДП типа «память-память».

В 1879ВМ4 используются два коммуникационных порта синхронного типа, что позволит поднять скорость обмена до 75–150 Мбайт/с по каждому порту вместо 20 Мбайт/с у Л1879ВМ1 и 1879ВМ2.

В 1879ВМ4 введены 8 программируемых входов/выходов.

Добавлены немаскируемое прерывание, 4 внешних прерывания вместо одного, а также прерывания от каналов ПДП.

1879ВМ4 имеет JTAG-порт, позволяющий существенно упростить процедуры тестирования аппаратных средств и отладки прикладного программного обеспечения.

Благодаря указанным выше архитектурным и структурным усовершенствованиям реальная производительность 1879ВМ4 по сравнению с Л1879ВМ1 и 1879ВМ2 должна повыситься соответственно в 3–12 и 1,5–6 раз в зависимости от класса решаемых задач. Оценка производительности процессоров семейства NeuroMatrix® и одного из наиболее высокопроизводительных зарубежных DSP, поддерживающего векторные операции, приведена в таблице 3.

Таблица 3. Пиковая производительность процессоров семейства NeuroMatrix® и DSP TigerSHARC ADSP-TS001

Заключение

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

Литература

  1. Shahbahrami A., Juurlink B., Vassiliadis S. A Comparison Between Processor Architectures for Multimedia Applications. Proc. 15th Annual Workshop on Circuits, System and Signal Processing (ProRISC 2004), the Netherlands, November, 2004.
  2. Talla D., John L. K., Burger D. Bottlenecks in Multimedia Processing with SIMD Style Extensions and Architectural Enhancements. IEEE Transactions on Computers, August, 2003. Vol. 52, No. 8.
  3. Talla D., John L. K., Lapinskii V., Evans B. L. Evaluating Signal Processing and Multimedia Applications on SIMD VLIW and Superscalar Architectures. Proc. IEEE International Conference on Computer Design: VLSI in Computers and Processors, September 17–20, 2000.
  4. Law J. Characterization of Native Signal Processing Extensions. EE382C Embedded Software Systems, 2002.
  5. Sбnchez F., et. al. On the Scalability of 1- and 2-Dimensional SIMD Extentions for Multimedia Applications. IEEE International Symposium on Performance Analysis of Systems and Software, Austin, Texas, March, 2005.
  6. Corbal J., Espasa R., Valero M. On the Efficiency of the Reductions in μSIMD Media Extensions. 10th International Conference of Parallel Architecture and Compilation Technologies (PACT 2001), Barcelona, Spain, September 8–12, 2001.
  7. Lee C., Potkonjak M., Mangione-Smith W. H. MediaBench: A Tool for Evaluating and Synthesizing Multimedia and Communication Systems. IEEE Micro, June, 1997.
  8. Kapasi U. J., et. al. Programmable Stream Processors. IEEE Computer, August, 2003. Vol. 36, No. 8.
  9. Lee C. G., DeVries D. J. Initial Results on the Performance and Cost of Vector Microprocessors. Proc. Thirtieth Annual IEEE/ACM International Symposium on Microarchitecture, December, 1997.
  10. Kozyrakis C., Patterson D. Vector vs. Superscalar and VLIW Architectures for Embedded Multimedia Benchmarks. Proc. of the 35th International Symposium on Microarchitecture, Instabul, Turkey, Nov., 2002.
  11. (Kees) van Bercel C.H., et. al. Vector Processing as Enabler for Software-defined Radio in Handsets from 3G+WLAN Onwards. Software Defined Radio Technical Conference, Scottsdale, Arizona, November 16-18, 2004.
  12. Espasa R., Valero M., Smith J. E. Out-of-Order Vector Architectures. 30th International Symposium on Microarchitecture, December, 1997.
  13. Espasa R., Valero M., Smith J. E. Vector Architectures: Past, Present and Future. International Conference on Supercomputing, June, 1998.
  14. Smith J. E. Decoupled Access/Execute Computer Architectures. ACM Transactions on Computer Systems, November, 1984. Vol. 2, No. 4.
  15. Sung M., Krashinsky R., Asanovic

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *