AC_reg_clase14

Report
CLASE 14
VISTA DE ALTO NIVEL DE LA IMPLEMENTACION DEL MIPS
• Modelo de memoria dividida (Harvard): Una memoria para instrucciones y una
para datos.
CPU monociclo (Single-cycle CPU)
• Todas las instrucciones se ejecutan por
completo en un ciclo de reloj.
• La ejecución comienza en un flanco y
termina en el siguiente (del mismo
tipo).
PRINCIPIOS DE DISEÑO LOGICO
Elementos combinacionales
Elementos secuenciales
D
Clk
DATAPATH
Q
LA CONSTRUCCION DEL DATAPATH IMPLICABA QUE ESTE
LLEVARA A CABO UNA SERIE DE TAREAS
1. Búsqueda de la instrucción:
• Traer la instrucción de memoria: Inst = MEM[PC].
• Actualizar el program Counter para el próximo ciclo: ¿Cuál es la
dirección de la próxima instrucción?
2. Definir el tipo de instrucción traída:
• Se manejan 3 formatos de instrucciones: Tipo R, tipo I y tipo J.
• Todas las instrucciones tienen el mismo tamaño.
• Cada uno de los campos de cada instrucción debe ser
adecuadamente conectado a los elementos del datapath para
que este pueda ejecutarla correctamente.
INSTRUCCIONES TIPO R Y TIPO I (QUE EMPLEAN OPERANDOS
INMEDIATOS)
INSTRUCCIONES TIPO I PARA LEER MEMORIA (LOAD)
INSTRUCCIONES TIPO I PARA ESCRIBIR EN MEMORIA (STORE)
INSTRUCCIONES TIPO I QUE IMPLEMENTAN SALTOS
CONDICIONALES
INSTRUCCIONES TIPO J (SALTOS INCONDICIONALES)
INSTRUCCIONES TIPO J (SALTOS INCONDICIONALES)
JUNTANDO TODO
AÑADIENDO CONTROL
¿Qué hace la unidad de control?
• Selecciona las operaciones a
realizar (ALU, Banco de
registros y lecturas/escrituras
de memoria).
• Controlar el flujo de datos.
¿Como?
• La información viene desde
las instrucciones de 32 bits.
Campos de las instrucciones
• El campo op siempre ocupa los bits 31-26.
• La dirección de los dos registros a ser leídos están siempre especificadas por los
campos rs y rt (bits 25-21 y 20-16).
• El registro base para lw y sw esta siempre en rs (bits 25-21).
• La dirección de registro a ser escrito siempre esta en uno de dos lugares; en rt (bits
20-16) para lw o en rd (bits 15-11) para instrucciones tipo R.
• El offset para beq, lw, y sw esta siempre en los bits 15-0.
• El formato de la instrucción tipo J es el mas diferente.
ALGUNOS EJEMPLOS
Al principio del ciclo de reloj
ALGUNOS EJEMPLOS
Control para operaciones aritméticas
ALGUNOS EJEMPLOS
Instruction fetch y fin
ALGUNOS EJEMPLOS
Aritmética con inmediatos (ori)
ALGUNOS EJEMPLOS
Control para operaciones de lectura de memoria (load)
ALGUNOS EJEMPLOS
Control para instrucciones de escritura en memoria (store)
ALGUNOS EJEMPLOS
Control para saltos condicionales (equ)
ALGUNOS EJEMPLOS
Control para saltos incondicionales (j)
PARA VER TODO LO ANTERIOR MAS CLARAMENTE
El programa ProcSim simula un procesador MIPS R2000. Puede desplegar un numero
de datapath a través del procesador, mostrando como cada componente de la
arquitectura trabaja con la entrada. Ensambla programas que pueden ser entradas al
programa usando las instrucciones soportadas las cuales varían con la arquitectura
usada
URL: http://jamesgart.com/procsim/
PARA VER TODO LO ANTERIOR MAS CLARAMENTE
MAS SOBRE LA UNIDAD DE CONTROL
• Como la unidad de control toma un solo ciclo, el control es libre de estados. Este
solo decodifica los bits de la instrucción.
• La tabla siguiente resume cada una de las instrucciones anteriormente mostradas:
• Recordemos, el control se realiza principalmente con el fin de seleccionar la
operación que realizara la ALU, así como definir la ruta de datos del datapath.
CONTROL DE LA ALU
La ALU puede realizar una serie de funciones las cuales dependen de las líneas de
control. La siguiente tabla muestra las líneas de control asociadas a la ALU:
Líneas de control de la ALU
Función
0000
AND
0001
OR
0010
add
0110
subtract
0111
set-on-less-than
1100
NOR
La ALU básicamente se emplea para:
• Instrucciones load/store (lw/sw): sumador 00
• Instrucciones branch (equ): restador  01
• Instrucciones tipos R (aritméticas): Depende del campo
funct (6 bits)  10
ALUOp
(Campo de 2 bits
asociado al tipo de
instrucción)
CONTROL DE LA ALU
Para generar los 4 bits de control de la ALU se usa una
pequeña unidad de control que tiene como entradas el
campo funct de la instrucción (mas específicamente de la
tipo R) y un campo de control de 2 bits conocido como
ALUOP:
• Los valores de ALUOp se generan en una unidad de
control principal.
• El uso de varios niveles de control permite reducir el
tamaño de la unidad de control principal
(potencialmente incrementando su velocidad).
• Dependiendo del tipo de instrucción, la ALU necesita realizar una de las primeras
cinco funciones (la función NOR no es necesaria en el subconjunto de instrucciones
MIPS que estamos implementando):
CONTROL DE LA ALU
La siguiente tabla relaciona la entrada ALUOp con el tipo de operaciona a realizar y la
salida (ControlALU) de la unidad de control de la ALU.
opcode
ALUOp
Operación
funct
Función ALU
Control ALU
lw
00
load word
XXXXXX
add
0010
sw
00
store word
XXXXXX
add
0010
beq
01
branch equal
XXXXXX
subtract
0110
add
100000
add
0010
subtract
100010
subtract
0110
AND
100100
AND
0000
OR
100101
OR
0001
set-on-less-than
101010
set-on-less-than
0111
Tipo R
10
CONTROL DE LA ALU
Tabla de verdad para las líneas de control de la ALU (Operation), cuyas entradas son
ALUop y el campo funct
Una posible implementación:
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
Tabla de verdad para las líneas de control de la ALU (Operation), cuyas entradas son
ALUop y el campo funct
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
Mediante el análisis de los campos de una instrucción y las líneas de control
requeridas por el datapath que hemos construido, podemos diseñar la unidad de
control principal.
R-type
Load/
Store
Branch
0
rs
rt
rd
shamt
funct
31:26
25:21
20:16
15:11
10:6
5:0
35 / 43
rs
rt
address
31:26
25:21
20:16
15:0
4
rs
rt
address
31:26
25:21
20:16
15:0
opcode
Leído
siempre
Leído,
excepto
en load
Escrito en
tipo R y load:
MUX extra
Extendido
en signo y
sumado
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
EFECTOS DE LAS SEÑALES DE CONTROL
Señal
Efecto cuando no se acciona
Efecto cuando se acciona
RegDst
El número del registro de destino para la
entrada Write register del banco de registros
proviene del campo rt (bits 20:16)
El número del registro de destino para la entrada
Write register del banco de registros proviene
del campo rd (bits 15:11)
RegWrite
Ninguno
El registro seleccionado en la entrada Write
register se escribe con el valor en la entrada
Write data
ALUSrc
El segundo operando de la ALU proviene de
la segunda salida del banco de registros
(Read data 2)
El segundo operando de la ALU corresponde a
los 16 bits inferiores de la instrucción extendidos
en signo
PCSrc
El PC se actualiza con la salida del sumador
que calcula el valor PC+4
El PC se actualiza con la salida del sumador que
calcula el destino del salto
MemRead
Ninguno
El contenido de la memoria de datos en la
dirección indicada a la entrada se pone en la
salida Read data
MemWrite
Ninguno
El contenido de la memoria de datos en la
dirección indicada se reemplaza con el valor en la
entrada Write data
MemtoReg
El valor dirigido a la entrada Write data del
banco de registros proviene de la ALU
El valor dirigido a la entrada Write data del banco
de registros proviene de la memoria de datos
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
• Todas las señales de control (incluida ALUop) son accionadas por parte de la unidad de
control, excepto la señal PCSrc
 PCSrc debe accionarse si la instrucción es beq (esta decisión la puede tomar la
unidad de control basada en el opcode) y la salida Zero de la ALU está activa (esto
sucede cuando el resultado de la comparación es cierto)
 PCSrc = Branch AND Zero
 La señal Branch la genera la unidad de control
• La unidad de control queda completamente determinada por el campo opcode de la
instrucción.
 Un multiplexor cuya entrada de control es 0, tiene una acción definida aun si no
es usado para realizar la operación.
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
De la tabla de verdad anterior se puede diseñar la unidad de control principal
IMPLEMENTACION DE SALTOS INCONDICIONALES
• La instrucción de salto incondicional jump produce una dirección de palabra de destino
del salto
• El PC se actualiza mediante la concatenación de:
 Cuatro bits superiores del valor PC+4
 Los 26 bits del campo inmediato de la instrucción jump
 Los bits 00 (para direccionar palabras)
• Su implementación requiere de:
 Un multiplexor adicional para seleccionar una nueva fuente para el valor del PC,
que puede ser el PC incremental (PC+4), la dirección de destino de salto
condicional (beq), o la dirección de destino de salto incondicional (jump)
 Una señal de control para el multiplexor adicional denominada Jump, obtenida a
partir del opcode de la instrucción de salto incondicional
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL
Asignar ‘1’ a la señal MemRd (Para intrucciones tipo R, sw, beq) depende del
diseño de la memoria.
ANOTACIONES SOBRE LA IMPLEMENTACION MONOCICLO DEL
PROCESADOR
Ventajas:
• Un ciclo por instrucción (CPI = 1) hace la lógica y el reloj simples.
Desventajas:
• Muy lenta, esto debido a que el ciclo de reloj debe
tener la misma longitud para cada instrucción. Sin
embargo, no todas las instrucciones tardan lo
mismo por lo que el tiempo del reloj será el de la
instrucción que mas demore.
• Ineficiente utilización de memoria y unidades
funcionales ya que diferentes instrucciones toman
diferentes tiempos.
Cycle time = 20 ns
Load
Add
Beq
1 cycle
1 cycle
1 cycle
CRITICAL PATH – INSTRUCCIÓN LOAD
• El camino mas largo es el seguido por la instrucción load, debido a que es la que
mas unidades funcionales emplea. La siguiente tabla muestra esto:
RESUMEN PROCESADOR MONOCICLO
Cinco pasos para diseñar un procesador:
1.
2.
3.
4.
5.
Analizar la arquitectura del conjunto de instrucciones (ISA)
Para conocer los requerimientos del datapath
Establecer los componentes del datapath y elegir el esquema de reloj
Ensamblar el datapath satisfaciendo los requerimientos
Analizar la implementación de las instrucciones para determinar las señales de
control que tendrán efecto sobre el flujo de datos
Ensamblar la lógica de control
REFERENCIAS
•
•
•
•
•
•
http://microe.udea.edu.co/~farivera/docencia.html
http://www.stanford.edu/class/ee183/handouts.shtml
http://www.stanford.edu/class/ee108b/labs.html
http://www.stanford.edu/class/ee108b/
http://u.cs.biu.ac.il/~wiseman/co/co6.pdf
http://www.cs.utah.edu/~rajeev/cs3810/
• http://www.cse.hcmut.edu.vn/~anhvu/teaching/2010/BTKTKTMT/MIPS%20Green%20Card.pdf
• http://www.ece.eng.wayne.edu/~gchen/ece4680/lecture-notes/lecturenotes.html
• http://www.cs.uiowa.edu/~ghosh/6011.html
• http://www.cse.hcmut.edu.vn/~anhvu/teaching/2010/504002CS/
• http://cs.wellesley.edu/~cs240/
• http://www.utdallas.edu/~dodge/EE2310/
• Computer organization and design. The hardware/software interface, 3rd
ed., Chapter 5. D. Patterson and J. Hennessy. Morgan Kaufmann Publishers

similar documents