clase 14. vista de alto nivel de la implementacion del mips modelo de memoria dividida (harvard):...

44
CLASE 14

Upload: miguel-angel-sevilla-franco

Post on 02-Feb-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

CLASE 14

Page 2: 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

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).

Page 3: 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

PRINCIPIOS DE DISEÑO LOGICO

Elementos combinacionales Elementos secuenciales

D

Clk

Q

DATAPATH

Page 4: 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

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.

Page 5: 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

INSTRUCCIONES TIPO R Y TIPO I (QUE EMPLEAN OPERANDOS INMEDIATOS)

Page 6: 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

INSTRUCCIONES TIPO I PARA LEER MEMORIA (LOAD)

Page 7: 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

INSTRUCCIONES TIPO I PARA ESCRIBIR EN MEMORIA (STORE)

Page 8: 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

INSTRUCCIONES TIPO I QUE IMPLEMENTAN SALTOS CONDICIONALES

Page 9: 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

INSTRUCCIONES TIPO J (SALTOS INCONDICIONALES)

Page 10: 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

INSTRUCCIONES TIPO J (SALTOS INCONDICIONALES)

Page 11: 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

JUNTANDO TODO

Page 12: 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

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.

Page 13: 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

ALGUNOS EJEMPLOSAl principio del ciclo de reloj

Page 14: 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

ALGUNOS EJEMPLOSControl para operaciones aritméticas

Page 15: 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

ALGUNOS EJEMPLOSInstruction fetch y fin

Page 16: 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

ALGUNOS EJEMPLOSAritmética con inmediatos (ori)

Page 17: 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

ALGUNOS EJEMPLOSControl para operaciones de lectura de memoria (load)

Page 18: 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

ALGUNOS EJEMPLOSControl para instrucciones de escritura en memoria (store)

Page 19: 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

ALGUNOS EJEMPLOSControl para saltos condicionales (equ)

Page 20: 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

ALGUNOS EJEMPLOSControl para saltos incondicionales (j)

Page 21: 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

PARA VER TODO LO ANTERIOR MAS CLARAMENTEEl 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/

Page 22: 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

PARA VER TODO LO ANTERIOR MAS CLARAMENTE

Page 23: 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

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.

Page 24: 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

CONTROL DE LA ALULa 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)

Page 25: 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

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):

Page 26: 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

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

Tipo R 10

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

Page 27: 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

CONTROL DE LA ALUTabla de verdad para las líneas de control de la ALU (Operation), cuyas entradas son ALUop y el campo funct

Una posible implementación:

Page 28: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPALTabla de verdad para las líneas de control de la ALU (Operation), cuyas entradas son ALUop y el campo funct

Page 29: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPALMediante 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.

0 rs rt rd shamt funct

31:26 5:025:21 20:16 15:11 10:6

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

R-type

Load/Store

Branch

opcode

Leído siempre

Leído, excepto en load

Escrito en tipo R y load: MUX extra

Extendido en signo y sumado

Page 30: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL

Page 31: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL

Page 32: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL

Page 33: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL

Page 34: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL

Page 35: 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

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

Page 36: 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

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.

Page 37: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL

De la tabla de verdad anterior se puede diseñar la unidad de control principal

Page 38: 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

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

Page 39: 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

DISEÑANDO LA UNIDAD DE CONTROL PRINCIPAL

Page 40: 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

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.

Page 41: 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

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

Page 42: 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

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:

Page 43: 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

RESUMEN PROCESADOR MONOCICLO

Cinco pasos para diseñar un procesador:

1. Analizar la arquitectura del conjunto de instrucciones (ISA)Para conocer los requerimientos del datapath

2. Establecer los componentes del datapath y elegir el esquema de reloj3. Ensamblar el datapath satisfaciendo los requerimientos4. Analizar la implementación de las instrucciones para determinar las señales de

control que tendrán efecto sobre el flujo de datos5. Ensamblar la lógica de control

Page 44: 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

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/BTKT-KTMT/MIPS%20Green%20Card.pdf

• http://www.ece.eng.wayne.edu/~gchen/ece4680/lecture-notes/lecture-notes.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