Процессор SHARC: Архитектура, особенности и применение.
Super Harvard Architecture Single-Chip Computer
Процессор SHARC от Analog Devices: высокопроизводительный DSP для обработки сигналов, аудио и радиолокации. Архитектура Harvard, VLIW, 32-битные вычисления.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Super Harvard Architecture Single Chip Computer (SHARC) – высокопроизводительный цифровой сигнальный процессор (DSP) с вычислениями с плавающей и фиксированной точкой от Analog Devices. SHARC применяется в широком спектре задач обработки сигналов, от обработки звука до управляемых одним CPU артиллерийских снарядов и вычислительных комплексов для радиолокации за горизонтом, состоящих из 1000 CPU. Оригинальная разработка датируется примерно январем 1994 года. SHARC-процессоры обычно проектируются с большим количеством последовательных каналов связи с соседними SHARC-процессорами, что позволяет использовать их в качестве экономичной альтернативы SMP.
The Super Harvard Architecture Single Chip Computer (SHARC) is a high performance floating point and fixed point DSP from Analog Devices. SHARC is used in a variety of signal processing applications ranging from audio processing, to single CPU guided artillery shells to 1000 CPU over the horizon radar processing computers. The original design dates to about January 1994. SHARC processors are typically intended to have a good number of serial links to other SHARC processors nearby, to be used as a low cost alternative to SMP.
Архитектура
SHARC – это VLIW-процессор с гарвардской архитектурой, адресующий память по словам; он не оперирует 8- или 16-битными значениями, поскольку каждый адрес указывает на целое 32-битное слово, а не на отдельный байт. Таким образом, он не является ни little-endian, ни big-endian, хотя компилятор может использовать любую из этих конвенций, если он поддерживает 64-битные данные и/или способ упаковки нескольких 8- или 16-битных значений в одно 32-битное слово. В языке C символы занимают 32 бита, так как являются наименьшими адресуемыми единицами памяти по стандарту. Размер слова составляет 48 бит для инструкций, 32 бита для целых чисел и чисел с плавающей точкой одинарной точности, и 40 бит для чисел с плавающей точкой двойной точности. Код и данные обычно извлекаются из памяти на кристалле, которую пользователь может разделить на области различного размера слов по своему усмотрению. Малые типы данных могут храниться в памяти большего размера, что приводит к неэффективному использованию пространства. Система, не использующая 40-битную арифметику с плавающей точкой двойной точности, может разделить память на кристалле на два раздела: 48-битный для кода и 32-битный для всего остального. Большинство инструкций процессора, связанных с памятью, не могут получить доступ ко всем битам 48-битной памяти, но для этой цели предусмотрен специальный 48-битный регистр. К этому специальному 48-битному регистру можно обращаться как к паре меньших регистров, что позволяет перемещать данные между ним и обычными регистрами. С SHARC можно использовать внешнюю память. Эта память может быть сконфигурирована только на один размер. Если внешняя память настроена на 32-битные слова для экономии места, то для выполнения кода и операций с плавающей точкой двойной точности можно использовать только память на кристалле. Операционные системы могут использовать наложения для обхода этой проблемы, передавая 48-битные данные в память на кристалле по мере необходимости для выполнения. Для этого предусмотрен DMA-контроллер. Реальная страничная организация невозможна без внешнего блока управления памятью (MMU). SHARC имеет 32-битное адресное пространство, адресующее слова. В зависимости от размера слова оно составляет 16 ГБ, 20 ГБ или 24 ГБ (при общепринятом определении 8-битного "байта"). Инструкции SHARC могут содержать 32-битный непосредственный операнд. Инструкции без этого операнда обычно могут выполнять две или более операции одновременно. Многие инструкции являются условными и могут начинаться с фразы "if condition" в ассемблере. Существует ряд вариантов условий, аналогичных выбору, предоставляемому регистром флагов x86. Есть два слота задержки. После команды перехода две инструкции, следующие за ней, обычно выполняются. Процессор SHARC имеет встроенную поддержку управления циклами. Можно использовать до 6 уровней, что позволяет избежать использования обычных инструкций ветвления и ведения учета, связанного с выходом из цикла. SHARC имеет два полных набора регистров общего назначения. Код может мгновенно переключаться между ними, обеспечивая быструю смену контекста между приложением и операционной системой или между двумя потоками.
The SHARC is a Harvard architecture word addressed VLIW processor; it knows nothing of 8 bit or 16 bit values since each address is used to point to a whole 32 bit word, not just an octet. It is thus neither little endian nor big endian, though a compiler may use either convention if it implements 64 bit data and/or some way to pack multiple 8 bit or 16 bit values into a single 32 bit word. In C, the characters are 32 bit as they are the smallest addressable words by standard. The word size is 48 bit for instructions, 32 bit for integers and normal floating point, and 40 bit for extended floating point. Code and data are normally fetched from on chip memory, which the user must split into regions of different word sizes as desired. Small data types may be stored in wider memory, simply wasting the extra space. A system that does not use 40 bit extended floating point might divide the on chip memory into two sections, a 48 bit one for code and a 32 bit one for everything else. Most memory related CPU instructions can not access all the bits of 48 bit memory, but a special 48 bit register is provided for this purpose. The special 48 bit register may be accessed as a pair of smaller registers, allowing movement to and from the normal registers. Off chip memory can be used with the SHARC. This memory can only be configured for one single size. If the off chip memory is configured as 32 bit words to avoid waste, then only the on chip memory may be used for code execution and extended floating point. Operating systems may use overlays to work around this problem, transferring 48 bit data to on chip memory as needed for execution. A DMA engine is provided for this. True paging is impossible without an external MMU. The SHARC has a 32 bit word addressed address space. Depending on word size this is 16 GB, 20 GB, or 24 GB (using the common definition of an 8 bit "byte"). SHARC instructions may contain a 32 bit immediate operand. Instructions without this operand are generally able to perform two or more operations simultaneously. Many instructions are conditional, and may be preceded with "if condition " in the assembly language. There are a number of condition choices, similar to the choices provided by the x86 flags register. There are two delay slots. After a jump, two instructions following the jump will normally be executed. The SHARC processor has built in support for loop control. Up to 6 levels may be used, avoiding the need for normal branching instructions and the normal bookkeeping related to loop exit. The SHARC has two full sets of general purpose registers. Code can instantly switch between them, allowing for fast context switches between an application and an OS or between two threads.