Post on 10-Aug-2015
CS1: Unidad de datos
RT
AC
ALU
8
6
R W
AB
DB
RAM 26x8
• Aumentar la cantidad de datos a manejar:
• incrementar el número de registros
• incluir una memoria RAM
• Ejecutar las instrucciones de forma autónoma:
• Almacenar las instrucciones en una memoria:
• en la memoria donde se almacenan los datos: arquitectura Von Neumann
• en otra memoria, específica para instrucciones: arquitectura Harvard
• La instrucción a ejecutar se extrae de la memoria y se almacena temporalmente en el registro de instrucción (IR, Instruction Register)
CS1
CS1
Datos e instrucciones
WT
ZACRAC
s
r
WAC
CS1: Unidad de datos (2)
• En el CS1, las instrucciones incluyen un campo de dirección de operando (CD) donde se indica la dirección de la RAM donde se encuentra el operando
Cada instrucción tiene dos partes:
• Código de operación (CO): tipo de operación a realizar
• Operandos: datos con los que la instrucción va a trabajar:
• A veces la instrucción no necesita operandos; otras veces, los operandos están implícitos y no hay que incluirlos en la instrucción
CS1
R W
AB
DB
RAM 26x8
6
OpCD
CONTROLXs
CO
IR
TB
2
6[8]8
CS1 • |IR|=8bits; |CD|=6bits ⇒|CO|=2bits ⇒ 4 tipos de instrucciones
CS1: Unidad de datos (3)
• Una vez ejecutada la instrucción actual, hay que extraer la siguiente desde memoria y almacenarla en IR
• Para ello es necesario un registro puntero de instrucciones (PC, Program Counter):
• almacena la dirección de memoria donde se encuentra la siguiente instrucción
• una vez transferida la nueva instrucción a IR, hay que incrementar PC (IPC) para apuntar a la siguiente
• inicialmente, PC vale 0 (CLPC), por lo que la primera instrucción siempre estará en la dirección 0 de la RAM
PC
6
IPCCLPC
CS1: Unidad de datos (4)
ALU
RT
AC
AB
DB
RAM 26x8
CONTROL
IR[8]
CO CD
2
6
TB
MARTIR
TPC
PC
6
IPCCLPC PC
6
CD
6
El bus de direcciones de la RAM debe ser accedido por:
R W
6• El campo CDdel registro IR: para poder acceder al operando en memoria
8
WT
• El registro PC: para poder indicar la dirección de la siguiente instrucción
s
rXs
WAC
ZACRAC
• Se incluye el registro de direcciones de memoria (MAR, Memory Address Register) para almacenar temporalmente la dirección de la instrucción (TPC) o del dato (TIR)
CS1: Instrucciones
1. Fase de búsqueda (fetch): la unidad de control se encarga de emitir las microoperaciones que permiten cargar en IR la instrucción apuntada por PC;
2. Fase de ejecución (exec): la unidad de control se encarga de emitir las microoperaciones necesarias (entre otras, acceder a los operandos) en función del código de operación de la instrucción.
1
0Xs
PC ← 0
CARTA ASM DE BUSQUEDA
01, 10, 11(ADD, SUB,STA)
00 (STOP)CO
CA
RTA
AS
M
DE
EJE
CU
CIÓ
N
Las instrucciones del CS1 son:CO (IR7-6) Registro IR Mnemónico Descripción nivel RT
00 0 0 x x x x x x STOP (Fin ejecución)
01 0 1 A5 A4 A3 A2 A1 A0 ADD A5-0 AC ← AC + RAM(A5-0)
10 1 0 A5 A4 A3 A2 A1 A0 SUB A5-0 AC ← AC - RAM(A5-0)
11 1 1 A5 A4 A3 A2 A1 A0 STA A5-0 RAM(A5-0) ← AC
CS1: Instrucciones. Fase de búsqueda (1)
En el CS1, para cargar la siguiente instrucción en IR, necesitamos dos ciclos de reloj:
6
AB
DB
RAM 26x8MAR
TIRTPC
PC
6
IPCCLPC
Dir_Instr (dirección de la instrucción)R W
ALU
RT
AC
CONTROL
CO CD
2
IR[8]1. MAR ← PC 68
TB WT
2. IR ← RAM; PC ← PC + 1
s
rXs
WAC
ZACRAC
CS1: Instrucciones. Fase de búsqueda (2)
6
AB
DB
RAM 26x8MAR
TIRTPC
PC
6
IPCCLPC
Dir_Instr
Dir_Instr
Dir_InstrR W
Dir_Instr Instrucción
ALU
RT
AC
8
CONTROL
CO CD
2
InstrucciónIR[8]1. MAR ← PC 6
TB WT
2. IR ← RAM; PC ← PC + 1
s
rXs
WAC
ZACRAC
CS1: Instrucciones. Fase de búsqueda (fin)
Tras la fase de búsqueda:
• la instrucción a ejecutar estáalmacenada en IR
• PC contiene la dirección de la siguiente instrucción
6
AB
DB
RAM 26x8MAR
TIRTPC
PC
6
IPCCLPC
Dir_Instr
Dir_Instr
Dir_Instr +1R W
ALU
RT
AC
CONTROL
IR[8]
CO CD
2
6
Instrucción
8
TB WT
s
rXs
WAC
ZACRAC
CS1: Instrucciones. Fase de ejecución [ADD] (1)
RT
AC
ALU
8
6
AB
DB
RAM 26x8
CONTROL
IR[8]
Dir_dato
2
6
TB
MARTIR
TPC
PC
6
IPCCLPC
01(ADD)
La fase de ejecución comienza donde terminó la fase de búsqueda.
ADD: AC ← AC + RAM(Dir_dato)
1º Extraer el dato(2 clk):
AC0
Dir_Instr +1
Dir_Instr
Dir_Instr
R W
WT
1. MAR ← IR s
2. RT ← RAM rXs
2º Realizar la suma(1 clk):
WAC
ZACRAC
3. AC ← AC + RTNota: antes de comenzar, AC = AC0
CS1: Instrucciones. Fase de ejecución (2)
6
AB
DB
RAM 26x8MAR
TIRTPC
PC
6
IPCCLPC
Dir_dato
Dir_dato
Dir_Instr +1R W
Dir_dato Dato
LU
RTWT
AC AC0
WAC
ZACRAC
s
r A
8
CONTROL
IR[8]
Dir_dato
2
6
01(ADD)
Xs
TB
ADD: AC ← AC + RAM(Dir_dato)
1º Extraer el dato(2 clk):
Dato
1. MAR ← IR2. RT ← RAM
2º Realizar la suma(1 clk):
3. AC ← AC + RT
CS1: Instrucciones. Fase de ejecución (3)
6
AB
DB
RAM 26x8MAR
TIRTPC
PC
6
IPCCLPC
Dir_dato
Dir_dato
Dir_Instr +1R W
AC
LU
AC0
AC+Dato
RTDato
WT
WAC
ZACRAC
s
r A
8
CONTROL
IR[8]
Dir_dato
2
6
01(ADD)TB
ADD: AC ← AC + RAM(Dir_dato)
1º Extraer el dato (2 clk):
1. MAR ← IR2. RT ← RAM Xs
2º Realizar la suma(1 clk):
3. AC ← AC + RT
CS1: Instrucciones. Fase de ejecución (fin)
Al terminar la fase de ejecución de ADD, el registro AC queda actualizado con el resultado de la suma.
El sistema estálisto para buscar y ejecutar la siguiente instrucción (apuntada por PC).
6
AB
DB
RAM 26x8MAR
TIRTPC
PC
6
IPCCLPC
Dir_dato
Dir_dato
Dir_Instr +1R W
LU
RTDato
WT
AC
WAC
ZACRAC
AC0+Dato
s
r ACONTROL
IR[8]
Dir_dato
2
6
01(ADD)
8
TB
Xs
MAR ← PC(TPC)
S1
IR ← RAMPC ← PC + 1(R, TB, IPC)
S2
RT ← RAM(R, WT)
11 01, 10IR7,6
S4
RAM←AC(RAC, W)
01, 10, 11
00IR7,6
S3
01 10IR7,6
AC ← AC+RT(s, WAC)
AC ← AC-RT(r, WAC)
S5
MAR ← IR(TIR)
Espera Xs, PC ← 0 (CLPC)
CS1: Controlador. Carta ASMEj
ecu
ción
IR ← RAM; PC ← PC + 1 (R, TB, IPC)
MAR ← PC (TPC)1
2
Bú
squ
eda
-AC ← AC - RT(r, WAC)
AC ← AC + RT(s, WAC)
-5
RAM ← AC(RAC, W)
RT ← RAM(R, WT)
-4
MAR ← IR (TIR)NOP3
STA AIR7,6=11
SUB AIR7,6=10
ADD AIR7,6=01
STOPIR7,6=00
MAR ← PC(TPC)
S1
IR ← RAMPC ← PC + 1(R, TB, IPC)
S2
RT ← RAM(R, WT)
11 01, 10IR7,6
S4
RAM←AC(RAC, W)
01, 10, 11
00IR7,6
S3
01 10IR7,6
AC ← AC+RT(s, WAC)
AC ← AC-RT(r, WAC)
S5
MAR ← IR(TIR)
Espera Xs, PC ← 0 (CLPC)
CS1: Controlador. Implementación 1 b/e
0
1D q
1
≥1
0
1
2
3
0
1
DEC2:4
D q
2
D q
3
D q
4
D q
50
1
0
1
CLPC
Xs
IR7
TPC R1, TB, IPC
TIR
RAC, W
R2, WT WAC
sr
IR6
(ADD)
(STOP)
(STA)
≥1R1
R2R
CS1: Ejemplo de programaDIR CONTENIDO RAM RT 00 1 1 1 0 0 0 0 0 STA $20 RAM($20) ← AC
01 1 0 1 0 0 0 0 0 SUB $20 AC ← AC – RAM($20) 02 0 1 1 1 1 1 1 0 ADD $3E AC ← AC + RAM($3E) 03 0 1 1 1 1 1 0 1 ADD $3D AC ← AC + RAM($3D) 04 1 0 1 1 1 1 0 0 SUB $3C AC ← AC – RAM($3C) 05 1 1 1 1 1 1 1 1 STA $3F RAM($3F) ← AC 06 0 0 0 0 0 0 0 0 STOP ... ... ... 20 Uso transitorio ... ... ... 3C Sustraendo: R 3D Sumando 2: S2 3E Sumando 1: S1 3F Resultado
CO (IR7-6) Registro IR Mnemónico Descripción nivel RT
00 0 0 x x x x x x STOP (Fin ejecución)
01 0 1 A5 A4 A3 A2 A1 A0 ADD A5-0 AC ← AC + RAM(A5-0)
10 1 0 A5 A4 A3 A2 A1 A0 SUB A5-0 AC ← AC - RAM(A5-0)
11 1 1 A5 A4 A3 A2 A1 A0 STA A5-0 RAM(A5-0) ← AC
AC = 0AC = S1AC = S1 + S2AC = S1 + S2 – RResultado = S1 + S2 - R