Super Harvard Architecture Single-Chip Computer ( SHARC ) — это высокопроизводительный DSP с плавающей и фиксированной точкой от Analog Devices . SHARC используется в различных приложениях обработки сигналов, начиная от обработки аудио и заканчивая однопроцессорными артиллерийскими снарядами и 1000-процессорными компьютерами обработки загоризонтных радаров. Первоначальный проект датируется примерно январем 1994 года.
Процессоры SHARC обычно предназначены для обеспечения достаточного количества последовательных соединений с другими процессорами SHARC, расположенными поблизости, чтобы использоваться в качестве недорогой альтернативы SMP .
SHARC — это VLIW- процессор с архитектурой Harvard , адресуемый по словам ; он ничего не знает о 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 " на языке ассемблера . Существует ряд вариантов условий , аналогичных вариантам, предоставляемым регистром флагов x86 .
Есть два слота задержки . После перехода обычно выполняются две инструкции, следующие за переходом.
Процессор SHARC имеет встроенную поддержку управления циклом. Можно использовать до 6 уровней, избегая необходимости в обычных инструкциях ветвления и обычном учете, связанном с выходом из цикла.
SHARC имеет два полных набора регистров общего назначения. Код может мгновенно переключаться между ними, что позволяет быстро переключать контекст между приложением и ОС или между двумя потоками.