Arq Teo06 PDF
Arq Teo06 PDF
Arq Teo06 PDF
1 Introducción
Para ello la arquitectura de von Neumann propone que la misma cuente con los
siguientes elementos básicos:
De allí que se utilice poca memoria rápida (por el costo) y que se ubique en las
cercanías de donde se va a utilizar (dentro de la CPU) para minimizar su tiempo de acceso.
Como ya dijimos antes una CPU (Centrol Processor Unit) está conformada por tres
sub-sistemas fundamentales: la ALU (Arithmetic Logic Unit, Unidad Aritmética y Lógica), la
CU (Control Unit, Unidad de Control) y el Register Set (también denominado Register Bank)
ó sea Conjunto (o Banco) de Registros.
ALU
Banco de
Registros
Unidad
de
Control
La Unidad de Control es, en definitiva, una máquina secuencial que realiza el “ciclo
de instrucción”: conjunto de acciones ordenado y secuencial que interconectan
adecuadamente los distintos elementos en el tiempo, para lograr el objetivo de ejecutar la
instrucción realizando la operación indicada sobre los operandos correspondientes y
almacenando el resultado en el lugar indicado. Esta máquina secuencial funciona
sincronizada por un reloj, el cual también es utilizado para sincronizar todas las actividades
de los otros elementos del sistema (memoria y entrada/salida). En las primeras
computadoras el reloj era el mismo para todos los elementos. Últimamente se utilizan
relojes independientes (aunque vinculados) para cada sub-sistema. En muchos diseños se
utilizan más de un reloj para la CPU, con la misma frecuencia, pero desfasados (0º, 90º,
180º y 270º, por ejemplo) a los efectos de ser utilizados para sincronizar distintas partes del
circuito compensando los diferentes retardos de propagación de las señales en los circuitos
internos de la CPU.
En la figura siguiente se muestra un ejemplo de organización de una unidad de
control (tomado de la “computadora básica” de Arquitectura de Computadoras de Morris
Mano). Esta formado por dos decodificadores, un contador secuencial, y cierta cantidad de
3 Ciclo de Instrucción
Notemos que no todas las instrucciones requieren de todos los pasos indicados
para su ejecución. Por ejemplo las instrucciones que tienen sus operandos en registros, no
requieren del paso “read”, mientras que las que no guardan un resultado no requieren del
paso “write”.
4 Estructura de la CPU
PC
AC
SP
IR
TIR
+1
-1
AMASK
SMASK
M0
F
Bus Direcciones
L0 A Latch B Latch L1
MAR
MBR
RD M1, M2, M3
N
F0, F1 Z
WR ALU
S0, S1 Shifter
En esta propuesta de organización interna se dispone de los siguientes recursos (es una
arquitectura de 16 bits):
Notas:
- La interfaz con la memoria y la E/S se realiza a través del bus de datos, el bus
de direcciones y el bus de control (formado por las señales RD y WR).
- Los registros, la ALU y la unidad de Shift son de 16 bits de tamaño de palabra.
- La unidad de desplazamiento no siempre se explicita como en el ejemplo ya que
se puede considerar que forma parte de la ALU.
- Normalmente las ALUs calculan también las salidas C (Carry) y V (oVerflow).
- Los valores de las constantes de los distintos registros está vinculada con las
necesidades de la “macroarquitectura” asociada a la MIC-1 y no constituyen un
requisito en otras microarquitecturas.
- Tener presente que este es tan solo un ejemplo de cómo se puede construir
internamente una CPU y ni siquiera es uno que pueda considerarse óptimo.
- A3, A2, A1, A0: seleccionan un registro y conectan su salida al bus A (ej:
0000/PC, 0001/AC, 0010/SP, 0010/IR, 0100/TIR, 0101/0, 0110/+1, 0111/-1,
1000/AMASK, 1001/SMASK, 1010/A, 1011/B … 1111/F)
- B3, B2, B1, B0: seleccionan un registro y conectan su salida al bus B (ej: idem a
la codificación para A)
- C3, C2, C1, C0: seleccionan un registro y conectan su entrada al bus C (ej: idem
a la codificación para A)
- ENC: habilita el bus C para que se guarde el valor en el registro seleccionado
- X0: selecciona si conecta a su salida la entrada que viene desde el MBR o
desde el bus A (ej: 0 – MBR, 1 – Bus A)
- F1, F0: codifican la operación a realizar por la ALU (ej: 00 – A+B, 01 – A and B,
10 – A, 11 – not A)
- S1, S0: codifican la operación de desplazamiento (ej: 00 – no desplaza, 01 – un
bit a la derecha, 10 – un bit a la izquierda)
- L1, L0: controlan la carga de los registros intermedios del bus B y el bus A
respectivamente.
- M0: controla la carga en el MAR (ej: 1 – carga)
- M1, M2, M3: controlan la forma que se cargan los datos en el MBR, cuando y
desde donde se produce. M1 activa la carga (ej: 1 – carga). M2 es la señal de
lectura de memoria RD (ej: 1 – lee la memoria). M3 es la señal de escritura de
memoria (eg: 1 – escribe la memorias).
Veamos como manejaría la Unidad de Control estas señales de control para lograr
ejecutar el ciclo de instrucción. Consideremos el ejemplo en el que se va a ejecutar una
suma entre un operando en memoria y el acumulador, con modo de direccionamiento
directo (la dirección está en los últimos 12 bits de la instrucción).
Para realizar el paso de read se debe cargar la dirección del operando (contenida en
los últimos 12 bits de la instrucción) en el MAR, para luego realizar una operación de lectura
desde memoria, cargando el MBR desde el bus de datos, de forma de almacenar en él el
operando. Para ello hay que:
- conectar la salida del registro IR al bus B (B3 = 0, B2 = 0, B1 = 1, B0 = 0)
- conectar la salida del registro AMASK al bus A (A3 = 1, A2 = 0, A1 = 0, A0 = 0)
- seleccionar cargar el ALatch (L1 = 1)
- seleccionar cargar el BLatch (L0 = 1)
- seleccionar Bus A en el A Mux (X0 = 1)
- seleccionar A and B en la ALU (F1 = 0, F0 = 1)
- seleccionar no desplazamiento en el Shifter (S0 = 0, S1 = 0)
- conectar la entrada del registro A al bus C (C3 = 1, C2 = 0, C1 = 1, C0 = 0)
- habilitar bus C (ENC = 1)
con estas señales y sincronizado por el reloj se guarda la dirección contenida en la
instrucción en el registro A. A continuación (próximo ciclo de reloj) se colocan las señales:
- conectar la salida del registro A al bus B (B3 = 1, B2 = 0, B1 = 1, B0 = 0)
- seleccionar cargar el BLatch (L0 = 1)
- seleccionar cargar MAR (M0 = 1)
- seleccionar cargar el MBR (M1 = 1)
- seleccionar lectura de memoria (M2 = 1)
En el paso siguiente se realiza el execute. Para ello se deben activar las siguientes
señales:
- conectar la salida del registro AC al bus B (B3 = 0, B2 = 0, B1 = 0, B0 =1)
- seleccionar cargar el BLatch (L0 = 1)
- seleccionar MBR en el A Mux (X0 = 0)
- seleccionar la operación A + B en la ALU (F0 = 0, F1 = 0)
- seleccionar no desplazamiento en el Shifter (S0 = 0, S1 = 0)
- conectar la entrada del registro AC al bus C (C0 = 1, C1 = 1, C2 = 0, C3 =1)
- habilitar bus C (ENC = 1)
Cabe destacar que al ser una instrucción cuyo resultado se almacena en un registro,
no corresponde que exista un paso de write.