Добавить в цитаты Настройки чтения

Страница 266 из 436

В архитектуре процессора TigerSHARC векторная организация памяти представлена в виде трех 128 разрядных блоков. При обращении к памяти из нее могут читаться учетверенные, длинные и нормальные слова, которые заносятся затем в регистровый файл для обработки. В каждом цикле может выполняться выборка четырех 32-разрядных команд. Одновременно могут быть загружены в регистровые файлы или записаны в память 256 битов данных. Данные с длиной слова 8, 16 или 32 разряда могут записываться в память последовательно в упакованном виде. Внутренняя и внешняя память организованы в виде единого адресного пространства, которое оставляет полную свободу программисту для распределения памяти. При работе на тактовой частоте 150 МГц скорость обмена с внутренней памятью для данных и команд составляет 7,2 Гбит/с.

Два АЛУ, выполняющие операции с целыми числами, используются для адресации данных и вычисления значений указателей. Они поддерживают циклические буферы и бит-реверсивную адресацию, причем каждое имеет свой регистровый файл длиной 32 слова. Рассматриваемые АЛУ не просто являются блоками, генерирующими адреса данных, но и могут совместно осуществлять вычисления с целыми числами. Наличие АЛУ такого вида позволяет существенно улучшить эффективность компилятора, разрабатываемого для данного процессора, а также повысить гибкость программирования.

Архитектура процессоров TigerSHARC называется статической суперскалярной архитектурой, т. к. она предполагает выполнение до четырех 32-разрядных команд за один цикл, и программист имеет возможность независимо задавать команды для всех вычислительных блоков. Устройство управления выполнением команд (program sequencer) поддерживает последовательное исполнение команд, при котором каждая очередная инструкция выполняется в соответствии с результатом предварительно заданного условия. Кроме того, одна и та же команда может быть выполнена двумя вычислительными блоками одновременно с использованием различных значений данных (это называется SIMD — одна инструкция — двойной набор данных).

Архитектура процессоров TigerSHARC позволяет выполнять операции над 8-, 16- и 32-разрядными данными. Производительность процессора повышается по мере уменьшения разрядности обрабатываемых данных.

Добавление буфера адресов перехода (Branch Target Buffer, ВТВ) и логики статического предсказания перехода делает ненужным заполнение конвейера команд после перехода. Как отмечалось раньше, переход осуществляется за один цикл.

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

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

Работая на тактовой частоте 150 МГц, процессор ADSP-TS001 обеспечивает наилучшую производительность среди процессоров семейства SHARC как при обработке данных с фиксированной точкой, так и при работе с данными в формате с плавающей точкой.

Кроме того, разместив на кристалле 6 Мбит статической памяти, компания Analog Devices увеличила степень интеграции памяти на 50 % по сравнению с предыдущими членами семейства SHARC. При переходе к меньшим проектным нормам при производстве кристаллов, компания Analog Devices планирует увеличить тактовую частоту работы процессора и объем памяти на кристалле для новых представителей семейства TigerSHARC.

ОСНОВНЫЕ СВОЙСТВА ПРОЦЕССОРОВ TigerSHARC

• Выполнение от 1 до 4 32-разрядных операций за цикл

• Принцип "Одна инструкция, много данных" (SIMD) поддерживается двумя вычислительными блоками

• Поддержка разных форматов данных вычислительными блоками

♦ В каждом имеется регистровый файл, MAC, АПУ, устройство сдвига

♦ Работа с 32/40-разрядными данными с плавающей точкой и с 32-разрядными данными с фиксированной точкой (6 операций за один такт)

♦ 16-битные операции (24 за цикл) или 8-битные операции (32 за цикл)





• Логика статического предсказания переходов, с целевым буфером перехода (ВТВ), поддерживающим до 128 входов

• Внутренняя пропускная способность 7.2 Гбайт/с

• Простая программная модель с гибкой системой прерываний

Рис. 7.43

Применение процессоров ADSP-TS001 уменьшает общую стоимость материалов при проектировании системы, благодаря наличию интегрированных функций ввода-вывода набора периферийных устройств, которые уменьшают или вообще ликвидируют потребность в применении вспомогательных и дополнительных аппаратных средств. Работая на тактовой частоте 150 МГц, процессор ADSP-TS001 объединяет четыре порта связи со скоростью передачи 600 Мбит/с, средства поддержки мультипроцессорного кластера с возможностью подключения до восьми процессоров ADSP-TS001, контроллер динамической памяти и интерфейс JTAG. Данная, не имеющая аналогов комбинация возможностей реализована в 35x35 мм корпусе SBGA с 360 выводами.

Вычислительные возможности и пример кодирования процессора TigerSHARC показаны на рис. 7.44. Четыре 32-разрядные команды выполняются параллельно, образуя одну 128-разрядную командную строку. Данная командная строка выполняется за один цикл. Ниже приведен пример кодирования на языке ассемблера одной строки с расшифровкой выполняемых функций:

xR3:0=Q[j0+=4];// загрузить из памяти четыре регистра (xR0,xR1,xR2,xR3) из регистрового файла X

yR3:0=Q[k0+=4];// загрузить из памяти четыре регистра из регистрового файла Y

FR5=R4*R4; // перемножить два 32-разрядных значения с плавающей точкой в вычислительном блоке X и еще два — в блоке Y (две операции умножения)

FR9:8=R6+/-R7;;// сложить и вычесть в обоих вычислительных блоках X и Y (четыре операции в АЛУ)

Один символ "точка с запятой" разделяет 32-разрядные команды, а два символа "точка с запятой" обозначают конец командной строки. Этот пример иллюстрирует синтаксис, применяемый при кодировании операций АЛУ и умножении 32-разрядных данных, представленных в формате с плавающей точкой. Параллельные 16-разрядные операнды могут быть легко специфицированы, используя префикс "S" (short — короткий) вместо "F" (float — данные с плавающей точкой). J0 и К0 являются регистрами, принадлежащими

IALU, которые используются в качестве указателей при косвенной адресации для чтении из памяти.

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

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