|
Complementos de sistemas electrónicos digitales |
TEMA
2
|
3.
Unidad
central de control de procesos (CPU)
Este módulo es el que controla y gestiona el ASIC. Está constituido por dos partes:
1. Una parte encargada del manejo de las instrucciones. Formada por las máquinas de estado síncronas que controlan todos los recursos del sistema. Las instrucciones que maneja esta CPU tienen un tamaño fijo, 32 bits y la CPU tiene asignados dos registros para manejar las instrucciones, el contador de programa o registro PC (registro contador que se emplea como puntero a la dirección de la siguiente instrucción que se debe ejecutar) y el registro de instrucción o registro IR (registro que no es accesible para el usuario y que almacena la instrucción leída por la CPU).
Las máquinas de estados, encargadas de la gestión de los recursos, emplean el registro PC para apuntar a la próxima instrucción que se debe ejecutar. Este registro se conecta directamente con el denominado bus de dirección de las instrucciones. La instrucción se recoge mediante el bus de datos de las instrucciones y se almacena en el registro IR. Una vez leída la instrucción, la máquina de estado la interpreta (genera, en el tiempo, la secuencia de operaciones básicas que lleve asociadas). Estas operaciones básicas se clasifican en cinco tipos y se describirán con detalle en el apartado “operaciones internas del bus”.
2. La otra parte es la que se encarga del manejo de los datos. Es un bloque que incluye los operadores aritméticos que existen en el DSP. El bloque de operadores aritméticos de la CPU consta, a su vez, de cinco elementos:
· Un Multiplicador.
· Una unidad aritmético lógica, ALU.
· Unidades aritméticas de registros auxiliares, ARAU0 y ARAU1.
· Los registros internos de la CPU, en total 30 registros. De ellos, 22 son de 32 bits y el resto son registros de 40 bits.
· Cuatro buses de datos internos: CPU1, CPU2, REG1 y REG2. Acceso a los dos buses de dirección de los datos de que dispone el DSP.
Todos los registros se conectan a dos de los cuatro buses internos (REG1, REG2) y pueden ser empleados como operandos del multiplicador y la ALU de la CPU. Las salidas de los operadores ARAUs, que se conectan a los dos buses de dirección para el acceso a datos, permiten la generación simultánea de dos direcciones de otros tantos datos que son recogidos por la CPU mediante los buses CPU1 y CPU2. Este paralelismo en el acceso a los operandos permite la realización de operaciones simultáneas en la ALU y el multiplicador. En la figura 2.7 se representa la estructura de los operadores de la CPU. En esta figura pueden observarse todos los bloques comentados anteriormente. Las características más relevantes de estos módulos son:
· Multiplicador: Puede realizar multiplicaciones, con números enteros o con números flotantes, en un solo ciclo máquina de la CPU. Tiene, además, la posibilidad de operar mientras, en paralelo, opera la ALU en un ciclo máquina. Cuando realiza un producto en punto flotante, las entradas son números flotantes codificados en 32 bits, mientras que la salida es otro número flotante pero codificado en 40 bits. Cuando la multiplicación se realiza con números enteros, las entradas son enteros de 24 bits mientras que la salida es un entero de 32 bits.
· Unidad aritmético lógica (ALU) y registro de desplazamiento. Realizan operaciones en un ciclo máquina de la CPU, operaciones de tipo lógicas (con datos de 32 bits), enteras (con datos de 32 bits) y flotantes (con datos de 40 bits). Incluyen la operación de conversión de entero a flotante o viceversa. También pueden realizar desplazamientos cíclicos de hasta 32 bits hacia derecha o izquierda (lo que por ejemplo sirve para realizar multiplicación o división entera por potencias de dos).
· Los buses internos CPU1, CPU2, REG1 y REG2 pueden transportar dos operandos recogidos de la memoria y otros dos operandos que proceden de los registros internos de la CPU. De esta manera, la CPU permite multiplicación o suma paralela sobre cuatro operandos, flotantes o enteros, en el mismo ciclo máquina.
· Unidades aritméticas de registros auxiliares (ARAU0 y ARAU1). Son dos operadores aritméticos que se emplean en la generación de direcciones. Estas unidades aritméticas operan en paralelo con el multiplicador y la ALU. Pueden generar dos direcciones en un ciclo máquina. Permiten implementar instrucciones de direccionamiento indexado mediante dos registros índice (IR0, IR1), soportando modos de direccionamiento por desplazamiento circular y bit-inverso que se verán en el tema 16.
· Registros de la CPU. La CPU incluye 29 registros accesibles al usuario (28 asociados a la parte de manejo de datos y 1, el PC, ligado a la parte de manejo de instrucciones de la CPU) que constituyen un archivo de registros multipuerto (todos estos registros pueden ser accedidos desde el multiplicador, la ALU y por otros registros de propósito general). Los registros que posee la CPU del TMS320C30 se resumen en la tabla 2-1.
Figura 2.7. Zona dedicada al manejo de datos de la Unidad Central de Control de Procesos (CPU) de la familia TMS320C3x.
Nombre del Registro |
Función asignada |
Registros para manejo de
datos: Registros acumuladores |
|
R0-R7 |
Registros de precisión extendida (40 bits) |
AR0-AR7 |
Registros auxiliares (32 bits) |
Registros para manejo de
datos: Modos de direccionamiento |
|
DP IR0 IR1 BK |
Puntero a la página de datos (32 bits) Registro de índice 0 (32 bits) Registro de índice 1 (32 bits) Registro de tamaño de bloque (32 bits) |
Registros de estado y
control del sistema |
|
SP ST IE IF IOF |
Puntero
a la pila del sistema (32 bits) Registro de estado (32 bits) Habilitador de interrupciones CPU/DMA (32 bits) Banderas de interrupción de la CPU (32 bits) Registro de control de las banderas I/O (32 bits) |
Registros de control de la
ejecución de un bloque de instrucciones: Modo Repetición |
|
RS RE RC |
Repetición de una o varias instrucciones:
Dirección de comienzo (32 bits) Repetición de una o varias instrucciones:
Dirección final (32 bits) Repetición de una o varias instrucciones: Contador
de repetición (32 bits) |
Tabla 2-1. Registros de la CPU.