Однокристальный компьютер с супергарвардской архитектурой
( Однокристальный компьютер с супергарвардской архитектурой SHARC ) — это высокопроизводительный с плавающей и фиксированной запятой цифровой сигнальный процессор от компании Analog Devices . SHARC используется в различных приложениях обработки сигналов, начиная от обработки звука и заканчивая однопроцессорными управляемыми артиллерийскими снарядами и компьютерами обработки загоризонтных радаров с 1000 процессорами. Оригинальный дизайн датируется примерно январем 1994 года.
Процессоры SHARC обычно предназначены для обеспечения большого количества последовательных каналов связи с другими процессорами SHARC поблизости, что позволяет использовать их в качестве недорогой альтернативы SMP .
Архитектура
[ редактировать ]SHARC — это Гарвардской архитектуры процессор с пословной адресацией VLIW- ; он ничего не знает о 8-битных или 16-битных значениях, поскольку каждый адрес используется для указания на целое 32-битное слово, а не только на октет . Таким образом, он не является ни прямым порядком байтов, ни прямым порядком байтов, хотя компилятор может использовать любое из этих соглашений, если он реализует 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 имеет два полных набора регистров общего назначения. Код может мгновенно переключаться между ними, что позволяет быстро переключать контекст между приложением и ОС или между двумя потоками.