El FPS AP-120B era un procesador de matriz orientado a la segmentación fabricado por Floating Point Systems . Fue diseñado para conectarse a una computadora anfitriona, como una DEC PDP-11, como un procesador de datos de alta velocidad. Utilizaba un formato de datos de coma flotante de 38 bits y una memoria de programa de 64 bits. La transferencia de datos se realizaba mediante acceso directo a memoria .
El tiempo de ciclo del procesador era de 167 nanosegundos, lo que daba una velocidad de 6 MHz. Dado que podía presentar dos resultados de coma flotante por ciclo, uno del sumador y otro del multiplicador, se afirmaba que el procesador tenía una capacidad de 12 megaflops .
Arquitectura
El procesador se diseñó en torno al concepto de múltiples unidades de procesamiento paralelo que operan de forma sincronizada. Una única palabra de instrucción de 64 bits se dividía en campos, cada uno de los cuales instruía a un módulo específico bajo el control de la CPU. Los módulos eran los siguientes:
- Unidad aritmético-lógica (ALU) de 16 bits
- Sumador de punto flotante de 38 bits (FADD) (dos etapas)
- Multiplicador de punto flotante de 38 bits (FMUL) (tres etapas)
- Dos registros Data Pad para recibir datos de la memoria.
El procesador disponía de memoria de núcleo entrelazada dual, donde las direcciones impares se almacenaban en un banco físico y las pares en el otro. Esto representaba un intento de aprovechar la típica lectura secuencial de palabras de memoria. La lectura secuencial desde un banco físico implicaba una latencia de dos ciclos de instrucción antes de que los datos se cargaran en el pad de datos de destino. El entrelazado permitía que un acceso secuencial se produjera inmediatamente después del anterior. Ambos accesos tardaban dos ciclos en completarse, pero la superposición y los pads de destino duales maximizaban el uso del canal de datos.
Los módulos de aritmética de punto flotante eran arquitecturas de múltiples etapas, controladas por instrucciones explícitas. En el sumador de dos etapas, una instrucción de ensamblador como FADD DX,DY cargaba valores desde las almohadillas de datos DX y DY en la primera etapa del sumador. Se requería una instrucción FADD posterior para presentar el resultado en la salida del sumador. Esta segunda instrucción FADD podía ser una instrucción ficticia sin argumentos o bien el siguiente cálculo en una secuencia. De esta forma, se podía realizar una serie de operaciones FADD en una arquitectura de pipeline, obteniendo un nuevo resultado en cada ciclo de instrucción, aunque cada suma requería dos ciclos.
De forma similar, el multiplicador, una unidad de tres etapas, requería una instrucción FMUL DX,DY para iniciar la multiplicación, seguida de dos instrucciones FMUL adicionales para obtener el resultado. Una programación cuidadosa de la tubería permitía obtener un resultado por ciclo, y cada cálculo requería tres ciclos.
Para lograr la máxima eficiencia, todos los cálculos se programaron utilizando el lenguaje ensamblador suministrado con el hardware. Se proporcionó un lenguaje de alto nivel similar a Fortran para coordinar las tareas y controlar la transferencia de datos hacia y desde la computadora principal.
Tablas de búsqueda
Para admitir aplicaciones típicas de procesamiento de señales, como la transformada rápida de Fourier (FFT), el hardware implementó una tabla de búsqueda precalculada de valores de seno y coseno . Los senos y cosenos para ángulos de 0 a π/2 radianes se almacenaron en direcciones alternas para aprovechar el entrelazado descrito anteriormente. Los valores para todos los demás ángulos se podían calcular utilizando uno u otro de los valores de la tabla de búsqueda, negándolos si era necesario, mediante reglas bien conocidas.
En la tabla de búsqueda se incluía una región adicional con valores recíprocos utilizados como semilla inicial para las operaciones de división mediante el algoritmo de Newton-Raphson .
Estilo de programación típico
Esto era inusual, dado que estaba impulsado por la arquitectura de procesamiento paralelo síncrono. La filosofía básica se puede resumir de la siguiente manera:
- Diseñe la secuencia de instrucciones más corta para realizar una instancia del cálculo deseado, teniendo en cuenta una latencia de memoria de dos ciclos y el control de los módulos de punto flotante con instrucciones FADD y FMUL explícitas.
- Inspeccione la secuencia para determinar el número mínimo de instrucciones que forman un bucle que realizará el cálculo de forma repetitiva. Esto requiere prestar atención a los conflictos de recursos. Por ejemplo, el bus de datos para transferir resultados solo puede transferir una palabra de datos por ciclo. Del mismo modo, la ALU, utilizada principalmente para contar bucles y direccionar memoria, solo puede utilizarse para una función por ciclo. Este paso suele ser de prueba y error.
- Conceptualmente, se trata de "envolver" la secuencia completa de instrucciones alrededor del bucle, utilizando las instrucciones FADD y FMUL para impulsar los cálculos a través de las tuberías.
- Antes de que comience el bucle, agregue los inicios de procesos paralelos según sea necesario.
El último paso se realizó de la siguiente manera: supongamos que el cálculo completo requiere 15 ciclos y que el tamaño mínimo del bucle es de 5 ciclos. Las primeras 5 palabras de instrucción inician la iteración 1 del cálculo. Las siguientes 5 palabras contienen tanto la iteración 1 como el inicio de la iteración 2 en paralelo. Normalmente, esto sería una copia de las operaciones que inician la iteración 1. Las siguientes 5 palabras contienen los pasos finales de la iteración 1, la parte central de la iteración 2 y el inicio de la iteración 3. Estas cinco palabras forman el cuerpo del bucle, que se repite hasta que se haya procesado el número deseado de puntos de datos.
Solicitud
Como procesador adjunto, el AP-120B se utilizaba habitualmente como un complemento económico para sistemas como los de diagnóstico por imagen médica, entre otros. A principios de los años 80, un VAX 11/780 o 11/785 con un FPS-AP-120B y un trazador Versatec eran los sistemas principales para el procesamiento de datos sísmicos en la industria petrolera. Los paquetes de procesamiento sísmico comerciales se programaron para que pudieran llamar a las rutinas del FPS AP-120B si este estaba presente.
Referencias
- Computación paralela