440 likes | 714 Views
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.
E N D
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-cycleCPU) • 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).
D Q Clk PRINCIPIOS DE DISEÑO LOGICO Elementos combinacionales Elementos secuenciales DATAPATH
LA CONSTRUCCION DEL DATAPATH IMPLICABA QUE ESTE LLEVARA A CABO UNA SERIE DE TAREAS • 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)
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/
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: • 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.
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
0 4 35 / 43 rs rs rs rt rt rt rd address address shamt funct 31:26 31:26 31:26 25:21 25:21 25:21 20:16 20:16 20:16 15:11 10:6 15:0 15:0 5:0 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 opcode Leídosiempre 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 • Todas las señales de control (incluida ALUop) son accionadas por parte de la unidad de control, excepto la señal PCSrc • PCSrcdebe 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 jumpproduce 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 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 1 cycle Load 1 cycle Add 1 cycle Beq
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: • 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/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