La computadora de un solo chip de la arquitectura Super Harvard ( SHARC ) es un DSP de punto fijo y flotante de alto rendimiento de Analog Devices . SHARC se utiliza en una variedad de aplicaciones de procesamiento de señales que van desde proyectiles de artillería guiada de una sola CPU hasta computadoras de procesamiento de radar sobre el horizonte de 1000 CPU. El diseño original data de aproximadamente enero de 1994.
Los procesadores SHARC generalmente están destinados a tener una buena cantidad de enlaces seriales a otros procesadores SHARC cercanos, para ser utilizados como una alternativa de bajo costo a SMP .
Arquitectura
El SHARC es un procesador VLIW con dirección de palabra de la arquitectura de Harvard ; no sabe nada de valores de 8 o 16 bits, ya que cada dirección se utiliza para señalar una palabra completa de 32 bits, no solo un octeto . Por lo tanto, no es ni little-endian ni big-endian, aunque un compilador puede usar cualquiera de las convenciones si implementa datos de 64 bits y / o alguna forma de empaquetar múltiples valores de 8 o 16 bits en una sola palabra de 32 bits. Analog Devices decidió evitar el problema mediante el uso de un carácter de 32 bits en su compilador de C.
El tamaño de la palabra es de 48 bits para instrucciones, 32 bits para enteros y coma flotante normal y 40 bits para coma flotante extendida. El código y los datos normalmente se obtienen de la memoria en chip, que el usuario debe dividir en regiones de diferentes tamaños de palabras según lo desee. Los tipos de datos pequeños se pueden almacenar en una memoria más amplia, simplemente desperdiciando el espacio extra. Un sistema que no utiliza un punto flotante extendido de 40 bits podría dividir la memoria en el chip en dos secciones, una de 48 bits para el código y otra de 32 bits para todo lo demás. La mayoría de las instrucciones de la CPU relacionadas con la memoria no pueden acceder a todos los bits de la memoria de 48 bits, pero se proporciona un registro especial de 48 bits para este propósito. Se puede acceder al registro especial de 48 bits como un par de registros más pequeños, lo que permite el movimiento hacia y desde los registros normales.
La memoria externa se puede utilizar con SHARC. Esta memoria solo se puede configurar para un solo tamaño. Si la memoria fuera del chip está configurada como palabras de 32 bits para evitar el desperdicio, solo se puede usar la memoria en el chip para la ejecución de código y el punto flotante extendido. Los sistemas operativos pueden usar superposiciones para solucionar este problema, transfiriendo datos de 48 bits a la memoria en el chip según sea necesario para la ejecución. Se proporciona un motor DMA para esto. La verdadera paginación es imposible sin una MMU externa .
El SHARC tiene un espacio de direcciones direccionado por palabra de 32 bits. Dependiendo del tamaño de la palabra, esto es 16 GB, 20 GB o 24 GB (utilizando la definición común de un "byte" de 8 bits).
Las instrucciones SHARC pueden contener un operando inmediato de 32 bits. Las instrucciones sin este operando generalmente pueden realizar dos o más operaciones simultáneamente. Muchas instrucciones son condicionales y pueden ir precedidas de " condición si " en el lenguaje ensamblador . Hay una serie de opciones de condición , similares a las opciones proporcionadas por el registro de banderas x86 .
Hay dos ranuras de retardo . Después de un salto, normalmente se ejecutarán dos instrucciones después del salto.
El procesador SHARC tiene soporte incorporado para control de bucle. Se pueden usar hasta 6 niveles, evitando la necesidad de instrucciones de bifurcación normales y la contabilidad normal relacionada con la salida del bucle.
El SHARC tiene dos conjuntos completos de registros de propósito general. El código puede cambiar instantáneamente entre ellos, lo que permite cambios de contexto rápidos entre una aplicación y un sistema operativo o entre dos subprocesos.