Интернет-журнал "Домашняя лаборатория", 2007 №8
Шрифт:
Объединяя наилучший опыт, накопленный в мире, процессор TigerSHARC представляет собой уникальную платформу для наиболее сложных приложений по цифровой обработке сигналов.
Архитектура ядра процессора Tiger SHARC показана на рис. 7.42.
Ядро включает несколько функциональных блоков: вычислительные блоки, память, АЛУ для операций с целыми числами и устройство для управления выполнением команд. В архитектуре процессора Tiger SHARC предусмотрены вычислительные блоки X и Y, каждый из которых содержит умножитель, АЛУ и 64-разрядное устройство сдвига. Благодаря ресурсам этих блоков,
В архитектуре процессора 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