TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
LECCIÓN 1: ARQUITECTURAS RISC
Esta lección está tomada del libro de Stalling Computer Organization & Architecture capítulo 13. La primera parte de la lección habla de principios generales de las arquitecturas RISC. Aquí continuamos la lección con la descripción de algunos ejemplos de máquinas con arquitecturas RISC. 2. El microprocesador IMS T425 . 2.1 Arquitectura transputer Es un microprocesador de propósito especial orientado a la ejecución de programas en OCCAM, esto implica que tanto desde el punto de vista de los registros como desde el conjunto de instrucciones debe tener elementos que permitan la gestión y comunicación entre procesos. Estará pues optimizado para trabajar en modo M.I.M.D. Los transputer se han diseñado en 1985 en la empresa Inmos , que actualmente está en el grupo SGSThomson, y en la actualidad se fabrica tanto para usos militares (MIL-STD-883) como en la industria aeroespacial y en usos civiles. Existen versiones de 16 bits y de 32 bits, nosotros vamos a usar como ejemplo el modelo T425 de 32 bits con los buses de datos y de direcciones multiplexados, existen modelos de propósito mas restringido como el M212 ó la serie A1XX . El modelo T800 incorpora una unidad de punto flotante. Las aplicaciones mas comunes son el cálculo intensivo, el procesamiento gráfico de alto nivel, procesamiento de imágenes, inteligencia artificial, etc.
En la figura tenemos un esquema de la arquitectura interna, formada por los siguientes elementos:
MICROPROCESADORES
pag. 1
TEMA 3: OTROS MICROPROCESADORES
• • • • • •
LECCIÓN 1 :ARQUITECTURAS RISC
Tiene una memoria RAM interna de 4KB Tiene 4 enlaces duplex punto a punto LINK0-3 para comunicación con otros transputer Buses de datos y direcciones multiplexados de 32 bits. El ancho de banda es de 33MB/seg con la memoria externa y de 100 MB/seg con la memoria interna La velocidad de pico es de 25 Mips. Está disponible en versiones PGA de 84 pines (pin gris array), PLCC de 84 pines (Plastic leaded chip carrier) y de 100 pines en PQFP (Plastic quad flatpack)
En cuanto a los registros disponibles tenemos los siguientes: • • • • •
•
Puntero de instrucciones IP Puntero a área de trabajo WP Registro de operandos OR Pila de evaluación : registros A,B,C. Punteros para listas de procesos: o Baja prioridad: FPtr0, BPtr0 o Alta prioridad: FPtr1, BPtr1 Registros para control de tiempo: o Baja prioridad: Clock0, TnextReg0 o Alta prioridad: Clock1, TnextReg1
Tenemos pues un puntero a la instrucción siguiente, un puntero a la zona de variables locales (área de trabajo) que apunta a los datos con desplazamientos positivos a partir de WP y una pila de registros (registros A,B,C) para instrucciones sin operandos . Por supuesto existirán unas instrucciones de carga y almacenamiento de la pila. Al ser un procesador orientado a procesos existen unos registros para facilitar el trabajo de gestión de procesos . El sistema mantiene dos colas enlazadas de procesos activos con dos niveles de prioridad. De modo que FPtri apunta al primer proceso activo en la cola, cada proceso de la cola apunta al siguiente y el último es apuntado por el registro BPtri. El proceso en ejecución está apuntado por IP y tiene asociado un área de trabajo apuntada por WP. Un proceso deja de estar en ejecución por una de estas causas: • • • •
Por Por Por Por
finalización del proceso. En este caso el proceso desaparece. quedar a la espera de la comunicación con otro proceso. Pasa a ser inactivo agotar su quantum temporal. ser desalojado por otro de mayor prioridad.
Los procesos cuando dejan de estar activos almacenan su IP en la posición WP-1 de su área de trabajo y salvo en el último caso no se guarda la pila de evaluación en el área de trabajo. Por eso no se pueden guardar datos en la pila. Existen dos timer (uno por nivel de prioridad) , son los registros Clock0 y Clock1 que se actualizan cada 64 µs ó cada 1 µs respectivamente. Los registros TnextReg se pueden usar para despertar un proceso al transcurrir un tiempo determinado.
MICROPROCESADORES
pag. 2
TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
2.2.- Comunicación entre procesos. La comunicación entre procesos tiene lugar por medio de canales. Sus características son: • •
•
Comunicación punto a punto Síncrona. Los dos procesos que se comunican tienen que realizar operaciones complementarias (escribir y leer) a través de un canal común. El proceso que inicia la comunicación pone sus datos y espera que el segundo proceso haga lo propio, mientras tanto pasa a estado inactivo. Sin memorias intermedias.
Cuando lo procesos están en el mismo transputer, el canal es una posición de memoria, si están en distintos procesadores el canal es uno de los enlaces bidireccionales LINKi de que dispone el micro. Son enlaces serie de 10 MB/s . El protocolo de comunicación es simple, se manda cada byte precedido por dos bit de inicio (11) y terminado con un bit de parada (0). Por la línea complementaria se recibe la verificación de la transmisión (11). Supongamos que tenemos dos procesos P y Q que se van a comunicar a través de un determinado canal. El proceso P inicia la comunicación dejando sus datos en la pila de evaluación y pasando a continuación a ser inactivo. En la siguiente figura tenemos un esquema del proceso
Al pasar a estar inactivo el proceso P guarda el valor de su IP en la posición WP-1 y a continuación guarda los valores de la dirección del mensaje y su tamaño. El proceso Q realiza la operación complementaria , entonces se realiza la copia del mensaje entre P y Q, el proceso P pasa a la cola de procesos activos y el canal se inicializa de nuevo a estado vacío. Cuando los procesos están en diferentes procesadores todo funciona igual excepto que ahora el canal es un elemento físico LINKi y que los procesos sólo tienen que poner sus datos en las correspondientes pilas de evaluación y esperar a que se complete la operación. En la figura siguiente tenemos un esquema del proceso:
MICROPROCESADORES
pag. 3
TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
2.3.- El conjunto de instrucciones La palabra de instrucción es de un byte con el siguiente formato: Código de operación (4 bits)
Operando (4 bits)
Según esto tendremos en principio 16 instrucciones únicamente, ahora bien, mediante la técnica de códigos de operación con extensión hay una instrucción (opr 0FH) que amplia el código de operación a los 8 bits. La lista de instrucciones la tenemos en la tabla siguiente:
MICROPROCESADORES
pag. 4
TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
El campo de operando se copia en el registro OR y es inicializado con cada instrucción. Para formar operandos de mayor tamaño usamos las instrucciones pfix y nfix (prefijo y prefijo negativo) que cargan el operando en OR pero no lo inicializan después sino que desplazan su contenido 4 bits a la izquierda ( el prefijo negativo además complementa el operando). De esta manera podemos formar operandos de hasta 32 bits. Encontramos los siguientes tipos de instrucciones: De carga y descarga de la pila de evaluación: La pila se puede cargar con constantes (LDC), con datos de memoria local ó global (LDI,LDNI), ó con punteros a memoria local ó global (LDIP,LDNIP). También se puede descargar sobre memoria local ó global (STI,STNI) De control de flujo:
MICROPROCESADORES
pag. 5
TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
Tenemos instrucciones de comparación que comprueban si el valor de B es mayor que el de A y ponen un 1 ó un 0 en el registro A (GT), que comparan el registro A con una constante (EQC) y ponen el resultado en A. También tenemos instrucciones de salto incondicional (J) y condicional (JC) que realiza el salto si el tope de la pila es 0 Tenemos una instrucción de bucles (LEND) También hay instrucciones para implementar la construcción ALT de OCCAM (ALT,ALTW,ALTEND,ENBS, ENBCD,DISSS y DISC) Aritméticas y lógicas: Todas las instrucciones utilizan como operandos los registros A y B de la pila y dejan el resultado en el registro A. Tenemos instrucciones con control de desbordamiento (ADD, SUB, MUL, DIV, REM), y otras sin control de desbordamiento (SUM, DIFF, PROD) También hay instrucciones que operan a nivel de bit (AND, OR, XOR, NOT, SHL, SHR) De control de procesos: Podemos añadir un proceso a la cola de procesos activos (STARTP), finalizar un proceso (INDP), pararlo (STOPP) y reanudarlo (RUNP) Los procesos pueden acceder al reloj de la cola correspondiente, para lectura (IDTIMER) ó utilizar el reloj para desactivarse durante un tiempo (TIN) De gestión de subrutinas Tenemos dos instrucciones de llamada a subrutina (CALL y GCALL). La primera amplia el área de trabajo del programa que llama a la subrutina en 4 palabras que corresponden a IP y a la pila de evaluación, el nuevo IP lo toma del registro de operando. La instrucción GCALL toma el nuevo IP del tope de la pila y deja el viejo en el mismo sitio, la propia rutina se encargará de almacenar el valor de IP en una dirección fija de su área de trabajo. También tenemos una instrucción de retorno de subrutina (RET) De acceso a estructuras de datos: Dado que en OCCAM la única estructura de datos es el vector que se recorre linealmente, tenemos instrucciones para calcular el desplazamiento según el tamaño del dato (BCNT,WCNT) y para sumar el desplazamiento a la dirección de base (BSUB, WSUB). También existe la instrucción MOVE. De control de errores: Para la gestión de errores el transputer dispone de dos bits de control: ERROR que indica si se ha producido un error y HALTONERROR que indica si se ha parar el procesador cuando se produce un error.
MICROPROCESADORES
pag. 6
TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
Existen instrucciones de manipulación de estos bits: Para ponerlos a uno (SETERR, SETHALTERR), para ponerlos a cero (CIRHALTERR) y para chequear su valor (TESTERR, TESTHALTERR) De comunicación: Son las instrucciones que implementan la comunicación entre procesos OCCAM (IN, OUT, OUTWORD y OUTBYTE)
3. El microprocesador UltraSPARC II. Es una implementación de la arquitectura SPARC hecha por Sun. Es una máquina con arquitectura interna de 64 bits ( registros y datos) y bus de memoria de 128 bits. Es un diseño RISC superescalar de cuatro vías . En la figura tenemos un esquema básico de la arquitectura interna:
La caché L2 es externa, la caché I es asociativa de dos vías de 16 KB con tamaño de bloque de 32 bytes. En cada lectura entrega 16 bytes ( 128 bits) que corresponden a 4 instrucciones . La caché D es de 16t KB con mapeo directo, escritura a través y sin asignación.
MICROPROCESADORES
pag. 7
TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
La unidad de prebúsqueda-despacho es similar a la del Pentium pero no tiene que transformar las instrucciones en microoperaciones porque tienen ya una estructura simplificada con tres operandos. Se emiten cuatro instrucciones por ciclo de reloj. Esta unidad resuelve también el tema de la predicción de ramificaciones con un algoritmo de 2 bits similar al estudiado en la lección 1. El conjunto de instrucciones tiene varias formas de ramificación que facilita la predicción. Las instrucciones prebuscadas se almacenan en una cola de 12 bytes que pasa a la unidad de agrupamiento. La labor que realiza esta unidad es prepara cuatro instrucciones que se puedan ejecutar a la vez en función de las unidades aritmético-lógicas disponibles. Vemos que tiene dos unidades de enteros y dos de punto flotante. Se permite la emisión y la retirada fuera de orden . Las unidades de enteros y reales tiene distintos registros. La unidad de punto flotante tiene una unidad de gráficos (similar al MMX) que permite mejoras en el procesamiento de imágenes, audio y vídeo. La unidad de LOAD/STORE realiza la carga de datos a través de la cachés y mantiene colas de datos de entrada y salida para su procesamiento. Este microprocesador tiene una segmentación avanzada con nueve etapas como se puede ver en la figura:
La primera etapa trae instrucciones de la caché I , la etapa de decodificación inserta algunos bits a cada instrucción de modo que puede seleccionar mejor la unidad de ejecución , la etapa de agrupamiento emite las instrucciones a las unidades funcionales . Vemos que según sean instrucciones de enteros o reales existen vías diferentes. En el caso de enteros se ejecutan habitualmente en un ciclo de reloj, la etapa de caché se necesita para las instrucciones de carga y almacenamiento y las etapas N1 y N2 son para sincronizar con las etapas de punto flotante. Las instrucciones de punto flotante se ejecutan en tres ciclos excepto las de división (12 ciclos) y raíz cuadrada ( 22 ciclos). La etapa N3 se usa para resolver excepciones que se hayan podido cometer . Los registros de la SPARC están organizados en un número variable de ventanas de 24 registros que tienen la estructura que se indica en la figura de forma que se facilita el paso de parámetros entre procedimientos.
MICROPROCESADORES
pag. 8
TEMA 3: OTROS MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
En cuanto a los formatos de instrucción vemos en la figura un esquema de los mismos. Vemos que todos presentan un código de operación inicial de 2 bits aunque luego suele haber un campo adicional
MICROPROCESADORES
pag. 9
TEMA 3: OTROS MICROPROCESADORES
MICROPROCESADORES
LECCIÓN 1 :ARQUITECTURAS RISC
pag. 10