# POWER1

El POWER1 es una CPU multichip desarrollada y fabricada por IBM que implementó la arquitectura del conjunto de instrucciones (ISA) POWER. Originalmente se conocía como CPU RISC System/6000 o, en forma abreviada, CPU RS/6000, antes de que la introducción de los sucesores requiriera que el nombre original fuera reemplazado por uno que usó el mismo esquema de nombres (POWERn) que sus sucesores para diferenciarlo de los diseños más nuevos.

## Historia

El POWER1 se introdujo en 1990, con la introducción de los servidores y estaciones de trabajo IBM RS/6000 POWERserver y POWERstation, que presentaban el POWER1 con un reloj de 20, 25 o 30 Megahercio. El POWER1 recibió dos actualizaciones, una en 1991, con la introducción del POWER1+ y en 1992, con la introducción del POWER1++. Estas versiones mejoradas tenían un reloj más alto que el POWER1 original, lo que fue posible gracias a procesos de fabricación de semiconductores mejorados. El POWER1+ tenía una frecuencia ligeramente más alta que el POWER1 original, a 25, 33 y 41 MHz, mientras que el POWER1++ llevó la microarquitectura a sus frecuencias más altas: 25, 33, 41,6, 45, 50 y 62,5 MHz. En septiembre de 1993, el POWER1 y sus variantes fueron reemplazados por el POWER2 (conocido brevemente como "RIOS2"), una evolución de la microarquitectura POWER1.
Los derivados directos del POWER1 son el RISC Single Chip (RSC), variante de un solo chip con características reducidas para sistemas RS/6000 de nivel de entrada, y el RAD6000, una variante resistente a la radiación del RSC para aplicaciones espaciales. Un derivado indirecto del POWER1 es el PowerPC 601, una variante del RSC con funciones reducidas destinada a aplicaciones de consumo.
El POWER1 es notable ya que presentó una serie de novedades para IBM y la informática en general. Fue el primer procesador RISC de IBM destinado a aplicaciones de gama alta (el ROMP se consideró un fracaso comercial y no se usó en estaciones de trabajo de gama alta), fue el primero en implementar la entonces nueva arquitectura de conjunto de instrucciones POWER y fue el primer procesador RISC exitoso de IBM. Por primera vez en computación, el POWER1 sería conocido por ser la primera CPU en implementar algún tipo de renombre de registros y ejecución fuera de orden, una técnica que mejoraba el rendimiento de los procesadores superescalares, que anteriormente estaba reservada para mainframes.
El POWER1 también fue el origen de las exitosas familias de procesadores POWER, PowerPC y Power ISA que le siguieron, midiendo cientos de implementaciones diferentes.
La compilador GCC de código abierto eliminó la compatibilidad con POWER1 (RIOS) y POWER2 (RIOS2) en la versión 4.5.

## Microarquitectura

El POWER1 es una CPU superescalar bidireccional de 32 bits. Contiene tres unidades principales de ejecución, una unidad de coma fija (FXU), una unidad de saltos (BPU) y una unidad de coma flotante (FPU). Aunque el POWER1 es una CPU de 32 bits con una dirección física de 32 bits, su dirección virtual tiene una longitud de 52 bits. Se eligió el espacio de direcciones virtuales más grande porque era beneficioso para el rendimiento de las aplicaciones, ya que permitía que cada una tuviera un amplio rango de direcciones de 4 GB.
El POWER1 es una CPU big-endian que utiliza una caché de jerarquía de estilo Harvard, con cachés de instrucciones y datos independientes. La caché de instrucciones, denominada «I-cache» por IBM, tiene un tamaño de 8 KB y es asociativa bidireccional con un tamaño de línea de 64 bytes. El I-cache se encuentra en el chip ICU. La caché de datos, denominada «caché D» por IBM, tiene un tamaño de 32 KB para las configuraciones RIOS.9 y de 64 KB para las configuraciones RIOS-1. La memoria caché D es asociativa por conjuntos de cuatro vías con un tamaño de línea de 128 bytes. La D-cache emplea un esquema de almacenamiento, donde los datos que se almacenarán se escriben en el caché en lugar de en la memoria para reducir la cantidad de escrituras destinadas a la memoria. El esquema de almacenamiento se utiliza para evitar que la CPU monopolice el acceso a la memoria.
Aunque el POWER1 era un diseño de gama alta, no era capaz de multiprocesamiento, y como tal estaba en desventaja, ya que la única forma en que se podía mejorar el rendimiento era elevando al velocidad de reloj de la CPU, lo que fue difícil de hacer con un diseño de chips múltiples tan grande. IBM utilizó la agrupación en clústeres para superar esta desventaja en los sistemas POWER1, permitiéndoles funcionar de manera efectiva como si fueran sistemas de multiprocesamiento, un concepto probado por la popularidad de las SP1 basadas en POWER1. Como POWER1 era la base de los microprocesadores POWER2 y P2SC, la falta de multiprocesamiento se transmitió a estos últimos procesadores POWER. El multiprocesamiento no fue compatible hasta la introducción de POWER3 en 1998.

## Descripción física

El POWER1 es una CPU de múltiples chips construida a partir de chips separados que están conectados entre sí por medio de buses. El POWER1 consta de una unidad caché de instrucciones (ICU), una unidad de coma fija (FXU), una unidad de coma flotante (FPU), varias unidades de data-cache (DCU), una unidad controladora de memoria (SCU) y una de E/S. Debido a su diseño modular, IBM pudo crear dos configuraciones simplemente variando el número de DCU, RIOS-1 y RIOS.9. La configuración RIOS-1 tiene cuatro DCU, la cantidad prevista, y tenía una frecuencia de hasta 40 MHz, mientras que la CPU RIOS.9 tenía dos DCU y tenía frecuencias más bajas.
Los chips se montan en la «CPU planar», una placa de circuito impreso (PCB), utilizando tecnología de agujero pasante. Debido a la gran cantidad de chips con buses anchos, la PCB tiene ocho planos para enrutar cables, cuatro para alimentación y tierra y cuatro para señales. Hay dos planos de señal a cada lado de la placa, mientras que los cuatro planos de alimentación y tierra están en el centro.
Los chips que componen el POWER1 se fabricaban en un proceso CMOS de 1,0 µm con tres capas de interconexión. Los chips están empaquetados en paquetes de matriz de rejilla de pines de cerámica (CPGA) que pueden tener hasta 300 clavijas y disipar un máximo de 4 W de calor cada una. El número total de transistores presentados por POWER1, asumiendo que es una configuración RIOS-1, es de 6,9 millones, con 2,04 millones utilizados para lógica y 4,86 millones para memoria. El área total de todas los silicios combinados es de 1.284 mm². El número total de pines de señal es 1.464.

### Circuitos integrados
#### Unidad de caché de instrucciones (ICU)

La ICU contiene la memoria caché de instrucciones, denominada «I-cache» por IBM y la unidad de procesamiento de saltos (BPU). La BPU contiene el contador de programa, el registro de código de condición y un registro de bucle. La ICU contiene 0,75 millones de transistores con 0,2 millones usados para lógica y 0,55 millones usados para SRAM. El silicio de la UCI mide aproximadamente 160 mm² (12,7 × 12,7 mm).
La BPU era capaz de enviar múltiples instrucciones a las colas de instrucciones de coma flotante y fija mientras ejecutaba una instrucción de control de flujo de programa (hasta cuatro simultáneamente y fuera de orden). Los saltos especulativos también se admitieron mediante el uso de un bit de predicción en las instrucciones del salto, y los resultados se descartaron antes de guardarse si no se tomaba dicho salto. La instrucción alternativa se almacenaría en búfer y se descartaría si se tomaba la bifurcación. En consecuencia, las llamadas a subrutinas y las interrupciones se tratan sin incurrir en penalizaciones de salto.
El registro de código de condición tiene ocho conjuntos de campos, con los dos primeros reservados para instrucciones de coma flotante y fija y el séptimo para instrucciones vectoriales. El resto de los campos podían ser utilizados por otras instrucciones. El registro de bucle es un contador para bucles de «decremento y bifurcación en cero» sin penalización de bifurcación, una característica similar a las que se encuentran en algunos DSP como el TMS320C30.

#### Unidad de coma fija (FXU)

La FXU es responsable de decodificar y ejecutar todas las instrucciones de coma fija y las instrucciones de carga y almacenamiento de coma flotante. Para su ejecución, la FXU contiene el archivo de registro de coma fija de POWER1, una unidad lógica aritmética (ALU) para instrucciones generales y una unidad dedicada de multiplicación y división de coma fija. También contiene búferes de instrucciones que reciben instrucciones tanto de coma flotante como fijas de la ICU, pasando las instrucciones de coma flotante a la FPU, y un D-TLB de dos vías de 128 entradas para la traducción de direcciones. La FXU contiene aproximadamente 0,5 millones de transistores, de los cuales 0,25 millones se utilizan para la lógica y 0,25 para la memoria, en un silicio que mide aproximadamente 160 mm².

#### Unidad de coma flotante (FPU)

La unidad de coma flotante de POWER1 ejecuta las instrucciones de coma flotante emitidas por la ICU. La FPU es segmentada y puede ejecutar instrucciones de precisión simple (32 bits) y precisión doble (64 bits). Es capaz de ejecutar instrucciones multiplicar-sumar, lo que contribuyó al alto rendimiento de coma flotante del POWER1. En la mayoría de los procesadores, una multiplicación y una suma, que es común en el código de coma flotante técnico y científico, no se pueden ejecutar en un ciclo, como en el POWER1. El uso de multiplicación-suma fusionada también significa que los datos solo se redondean una vez, lo que mejora ligeramente la precisión del resultado.
El archivo de registro de coma flotante también se encuentra en el chip FPU. Contiene 32 registros de coma flotante de 64 bits, seis registros de cambio de nombre y dos registros que se utilizan en las instrucciones de división.

#### Unidad de caché de datos (DCU)

El POWER1 tiene una caché de datos de 64 KB implementada a través de cuatro unidades de caché de datos (DCU) idénticas, cada una de las cuales contiene 16 KB de caché de datos. La memoria caché y los buses que conectan la DCU con los otros chips están protegidos por ECC. Las DCU también proporcionan la interfaz a la memoria. Si hay dos DCU (configuración RIOS.9), el bus de memoria tiene un ancho de 64 bits y si hay cuatro DCU (configuración RIOS-1), el bus de memoria tiene un ancho de 128 bits. La porción de interfaz de memoria de las DCU proporciona tres características que mejoran la confiabilidad y disponibilidad de la memoria: depuración de memoria, ECC y dirección de bits. Cada DCU contiene aproximadamente 1,125 millones de transistores, con 0,175 millones utilizados para lógica y 0,95 millones para SRAM, en un silicio que mide aproximadamente 130 mm² (11,3 × 11,3 mm).

#### Unidad de control de almacenamiento (SCU)

El POWER1 está controlado por el chip SCU. Todas las comunicaciones entre los chips ICU, FXU y DCU, así como los dispositivos de memoria y E/S son arbitradas por la SCU. Aunque las DCU proporcionan los medios para realizar la limpieza de la memoria, es la SCU la que controla el proceso. La SCU contiene aproximadamente 0,23 millones de transistores, todos ellos para lógica, en un silicio que mide aproximadamente 130 mm².

#### Unidad de E/S

Las interfaces de E/S de POWER1 son implementadas por la unidad de E/S, que contiene un controlador de canal de E/S (IOCC) y dos adaptadores (SLA) de enlace en serie. El IOCC implementa la interfaz Micro Channel y controla las transacciones de E/S y DMA entre los adaptadores Micro Channel y la memoria del sistema. Cada uno de los dos SLA implementa un enlace de fibra óptica, que están destinados a conectar sistemas RS/6000 entre sí. Los enlaces ópticos no eran compatibles en el momento del lanzamiento del RS/6000. La unidad de E/S contiene aproximadamente 0,5 millones de transistores, con 0,3 millones utilizados para la lógica y 0,2 millones para la memoria, en un silicio que mide aproximadamente 160 mm².