C P U Uniciclo

75 %
25 %
Information about C P U Uniciclo

Published on August 5, 2007

Author: stefanosalvatori

Source: slideshare.net

Organzación de CPU Cecilia Hernández

Componentes sistema computacional

Diseño de Procesador Sección de Datos y Control JerarquíaMemoria Control ALU Registers PC estado Bus Memoria CPU Sección de datos Combinational Secuencial

Diseño de CPU Sección de datos Como fluyen los datos entre los diferentes componentes Que operaciones pueden ser realizadas cuando los datos fluyen Que puede realizarse en un ciclo de reloj Unidad de control Envia señales a los elementos de la sección de datos Establece direcciones de datos de origen y destino y que operaciones se pueden realizar Jerarquía de Memoria Mantiene el programa a ejecutar con sus datos

Sección de datos

Como fluyen los datos entre los diferentes componentes

Que operaciones pueden ser realizadas cuando los datos fluyen

Que puede realizarse en un ciclo de reloj

Unidad de control

Envia señales a los elementos de la sección de datos

Establece direcciones de datos de origen y destino y que operaciones se pueden realizar

Jerarquía de Memoria

Mantiene el programa a ejecutar con sus datos

Organización de la CPU ISA determina la interfaz hardware/software Desempeño determinado por Número de instrucciones Período del reloj Ciclos de reloj por instrucción (CPI) Diseño del procesador (datos y control) determina Período del reloj Ciclos por instrucción Primer ejercicio: diseño de un procesador uniciclo Un ciclo por instrucción Simple de implementar, pero período es innecesariamente grande

ISA determina la interfaz hardware/software

Desempeño determinado por

Número de instrucciones

Período del reloj

Ciclos de reloj por instrucción (CPI)

Diseño del procesador (datos y control) determina

Período del reloj

Ciclos por instrucción

Primer ejercicio: diseño de un procesador uniciclo

Un ciclo por instrucción

Simple de implementar, pero período es innecesariamente grande

Pasos en diseño de CPU Analizar conjunto de instrucciones  requerimientos de la sección de datos (datapath) Expresar cada instrucción a nivel de registros (register transfer level: RTL) Datapath provee almacenamiento para registros de ISA (y tal vez más) Datapath debe soportar cada transferencia entre registros Seleccionar componentes de datapath y esquema de reloj Organizar datapath para cumplir requerimientos Analizar implementación y determinar valores de señales de control para ejecutar cada instrucción Diseñar lógica de control Instrucción  señales de control a datapath

Analizar conjunto de instrucciones  requerimientos de la sección de datos (datapath)

Expresar cada instrucción a nivel de registros (register transfer level: RTL)

Datapath provee almacenamiento para registros de ISA (y tal vez más)

Datapath debe soportar cada transferencia entre registros

Seleccionar componentes de datapath y esquema de reloj

Organizar datapath para cumplir requerimientos

Analizar implementación y determinar valores de señales de control para ejecutar cada instrucción

Diseñar lógica de control

Instrucción  señales de control a datapath

Formato instrucciones MIPS op target address 0 26 31 6 bits 26 bits op rs rt rd shamt funct 0 6 11 16 21 26 31 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits R-type I-type J-type

Paso 1a: Subset de MIPS ADD and SUB add rd, rs, rt OR Immediate: ori rt, rs, imm16 LOAD and STORE Word lw rt, rs, imm16 sw rt, rs, imm16 BRANCH: beq rs, rt, imm16 op rs rt rd shamt funct 0 6 11 16 21 26 31 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits

ADD and SUB

add rd, rs, rt

OR Immediate:

ori rt, rs, imm16

LOAD and STORE Word

lw rt, rs, imm16

sw rt, rs, imm16

BRANCH:

beq rs, rt, imm16

Ejecución de instrucción de máquina CPU ejecuta instrucciones de un programa ciclo Instrucciones especifican operaciones sobre operandos y generan resultados Datos pueden encontrarse en memoria (RAM, ROM) o en registros internos al procesador Instrucciones pueden también modificar el flujo de control (saltos, llamadas a procedimiento) Instrucciones pueden crear excepciones

CPU ejecuta instrucciones de un programa ciclo

Instrucciones especifican operaciones sobre operandos y generan resultados

Datos pueden encontrarse en memoria (RAM, ROM) o en registros internos al procesador

Instrucciones pueden también modificar el flujo de control (saltos, llamadas a procedimiento)

Instrucciones pueden crear excepciones

Descripción a nivel de registros (RTL) RTL expresa el significado de la instrucción La ejecución de cada instrucción comienza con la búsqueda (fetch) de la instrucción: op | rs | rt | rd | shamt | funct = MEM[ PC ] op | rs | rt | Imm16 = MEM[ PC ] inst Transferencia de registros ADDU R[rd] <– R[rs] + R[rt]; PC <– PC + 4 SUBU R[rd] <– R[rs] – R[rt]; PC <– PC + 4 ORi R[rt] <– R[rs] | zero_ext(Imm16); PC <– PC + 4 LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)];PC <– PC + 4 STORE MEM[ R[rs] + sign_ext(Imm16) ] <– R[rt];PC <– PC + 4 BEQ if ( R[rs] == R[rt] ) then PC <– PC + 4 + sign_ext(Imm16) || 00 else PC <– PC + 4

RTL expresa el significado de la instrucción

La ejecución de cada instrucción comienza con la búsqueda (fetch) de la instrucción:

op | rs | rt | rd | shamt | funct = MEM[ PC ]

op | rs | rt | Imm16 = MEM[ PC ]

inst Transferencia de registros

ADDU R[rd] <– R[rs] + R[rt]; PC <– PC + 4

SUBU R[rd] <– R[rs] – R[rt]; PC <– PC + 4

ORi R[rt] <– R[rs] | zero_ext(Imm16); PC <– PC + 4

LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)];PC <– PC + 4

STORE MEM[ R[rs] + sign_ext(Imm16) ] <– R[rt];PC <– PC + 4

BEQ if ( R[rs] == R[rt] ) then PC <– PC + 4 + sign_ext(Imm16) || 00 else PC <– PC + 4

Paso 1: Requerimientos del conjunto de instrucciones Memoria Instrucciones y datos Registros (32 x 32) Leer Rs Leer Rt Escribir Rd o Rt PC Extensor (signo o ceros) Sumar, restar y OR registros o constante extendida Sumar 4 o constante extendida a PC

Memoria

Instrucciones y datos

Registros (32 x 32)

Leer Rs

Leer Rt

Escribir Rd o Rt

PC

Extensor (signo o ceros)

Sumar, restar y OR registros o constante extendida

Sumar 4 o constante extendida a PC

Paso 2: Componentes de la sección de datos (datapath) Elementos combinacionales Elementos de almacenamiento Esquema de reloj

Elementos combinacionales

Elementos de almacenamiento

Esquema de reloj

Elementos combinacionales Sumador (adder) Multiplexor (MUX) 32 32 A B 32 Sum Carry 32 32 A B 32 Result OP 32 A B 32 Y 32 Select Adder MUX ALU CarryIn Unidad aritmético-lógica (ALU) Bit Zero Result

Elementos de almacenamiento Registro Similar a flip-flop tipo D, excepto Entrada y salida de N bits Habilitación de escritura (Write Enable) Write Enable: Falso (0): Data Out no cambia Verdadero (1): Data Out cambia a Data In Clk Data In Write Enable N N Data Out

Registro

Similar a flip-flop tipo D, excepto

Entrada y salida de N bits

Habilitación de escritura (Write Enable)

Write Enable:

Falso (0): Data Out no cambia

Verdadero (1): Data Out cambia a Data In

Elementos de almacenamiento Banco de registros de 32 registros Dos buses de salida de 32 bits (busA y busB) Un bus de entrada de 32 bits (busW) Soportar dos lecturas y una escritura simultánea es caro  pocos registros Entradas de selección RA: selecciona qué registro leer a busA RB: selecciona qué registro leer a busB RW: selecciona a qué registro escribir busW cuando WriteEnable es 1 Reloj (CLK) Sólo importa durante operación de escritura: escribir busW sólo cuando CLK lo indica Lectura es combinacional: cuando RA y RB cambian, busA y busB se actualizan después de un “tiempo de acceso” Clk busW Write Enable 32 32 busA 32 busB 5 5 5 RW RA RB 32 32-bit Registers

Banco de registros de 32 registros

Dos buses de salida de 32 bits (busA y busB)

Un bus de entrada de 32 bits (busW)

Soportar dos lecturas y una escritura simultánea es caro  pocos registros

Entradas de selección

RA: selecciona qué registro leer a busA

RB: selecciona qué registro leer a busB

RW: selecciona a qué registro escribir busW cuando WriteEnable es 1

Reloj (CLK)

Sólo importa durante operación de escritura: escribir busW sólo cuando CLK lo indica

Lectura es combinacional: cuando RA y RB cambian, busA y busB se actualizan después de un “tiempo de acceso”

Elementos de almacenamiento Memoria idealizada Un bus de entrada (DataIn) Un bus de salida (DataOut) Selección de palabra en memoria Address indica la dirección de la palabra WriteEnable = 1  Address selecciona palabra a escribir en memoria vía DataIn Señal de reloj (CLK) Válida sólo durante escritura  escribir cuando WriteEnable = 1 en tiempo indicado por el reloj Para lectura, memoria es combinacional: DataIn se actualiza cuando Address cambia, después de un “tiempo de acceso” Clk Data In Write Enable 32 32 DataOut Address

Memoria idealizada

Un bus de entrada (DataIn)

Un bus de salida (DataOut)

Selección de palabra en memoria

Address indica la dirección de la palabra

WriteEnable = 1  Address selecciona palabra a escribir en memoria vía DataIn

Señal de reloj (CLK)

Válida sólo durante escritura  escribir cuando WriteEnable = 1 en tiempo indicado por el reloj

Para lectura, memoria es combinacional: DataIn se actualiza cuando Address cambia, después de un “tiempo de acceso”

Esquema de reloj Todos los elementos de almacenamiento sincronizados por el mismo canto del reloj Clk Don’t Care Setup Hold . . . . . . . . . . . . Setup Hold

Todos los elementos de almacenamiento sincronizados por el mismo canto del reloj

Paso 3: Diseñar datapath Cumplir requerimientos de RTL de instrucciones Búsqueda de instrucción Lectura de operandos Ejecución de operación Escritura de resultados Actualización del PC

Cumplir requerimientos de RTL de instrucciones

Búsqueda de instrucción

Lectura de operandos

Ejecución de operación

Escritura de resultados

Actualización del PC

Paso 3a: Unidad de búsqueda de instrucción RTL común a todas las instrucciones Fetch: MEM[PC] Actualizar el contador de programa Instrucciones secuenciales: PC  PC + 4 Branch y Jump: PC  destino del salto (condicional) 32 Instrucción leída PC Clk Address Memoria con Instrucciones Cálculo Próx. Inst.

RTL común a todas las instrucciones

Fetch: MEM[PC]

Actualizar el contador de programa

Instrucciones secuenciales: PC  PC + 4

Branch y Jump: PC  destino del salto (condicional)

Unidad de búsqueda de instrucción Si instrucción es la siguiente secuencialmente Address Memoria con Instrucciones PC Sumador 32 4 Instrucción 32

Si instrucción es la siguiente secuencialmente

Unidad de búsqueda de instrucción Si siguiente instrucción determinada por branch Address Memoria con Instrucciones PC Sumador 4 Instrucción 32 Sumador Ext Signo Despl 2 izq Imm MUX PCsel

Si siguiente instrucción determinada por branch

Paso 3b: Suma y Resta R[rd]  R[rs] op R[rd] Ejemplo add rd, rs, rt Ra, Rb y Rw vienen de campos de la instrucción: rs, rt y rd ALUctr y RegWr: provienen de la unidad de control que decodifica la instrucción ( a partir de campos op y funct de la instrucción) 32 Result ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registros Rs Rt Rd ALU 32 Result ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Rs Rt Rd ALU 32 Resultado ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Regist Rs Rt Rd ALU op rs rt rd shamt funct 0 6 11 16 21 26 31 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits

R[rd]  R[rs] op R[rd] Ejemplo add rd, rs, rt

Ra, Rb y Rw vienen de campos de la instrucción: rs, rt y rd

ALUctr y RegWr: provienen de la unidad de control que decodifica la instrucción ( a partir de campos op y funct de la instrucción)

Diagrama de tiempo 32 Result ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32-bit Registers Rs Rt Rd ALU Clk PC Rs, Rt, Rd, Op, Func Clk-to-Q ALUctr Instruction Memory Access Time Old Value New Value RegWr Old Value New Value Delay through Control Logic busA, B Register File Access Time Old Value New Value busW ALU Delay Old Value New Value Old Value New Value New Value Old Value Register Write Occurs Here

Paso 3c: Operaciones lógicas con constantes R[rt]  R[rs] op ZeroExt[imm16] Ejemplo: ori rt, rs, imm16 32 Result ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs ZeroExt Mux Rt Rd RegDst Mux 32 16 imm16 ALUSrc ALU Rt ? 32 Result ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs ZeroExt Mux Rt Rd RegDst Mux Rt Rd RegDst Mux 32 16 imm16 ALUSrc ALU Rt ? op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits immediate 16 15 31 16 bits 16 bits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Paso 3d: Lectura de memoria (load) R[rt]  MEM[ R[rs] + SignExt[imm16] ] Ejemplo: lw rt, rs, imm16 32 ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Rd RegDst Extender Mux Mux 32 16 imm16 ALUSrc ExtOp Clk Data In WrEn 32 Adr Data Memory 32 ALU MemWr Mux W_Src ?? Rt ? 32 ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Rd RegDst Extender Mux Mux 32 16 imm16 ALUSrc ExtOp Clk Data In WrEn 32 Adr Data Memory 32 ALU MemWr Mux W_Src ?? Rt ? op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits

Paso 3e: Escritura en memoria (store) MEM[ R[rs] + SignExt[imm16] ]  R[rt] Ejemplo: sw rt, rs, imm16 32 ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Rt Rd RegDst Extender Mux Mux 32 16 imm16 ALUSrc ExtOp Clk Data In WrEn 32 Adr Data Memory MemWr ALU 32 Mux W_Src 32 ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Rt Rd RegDst Extender Mux Mux 32 16 imm16 ALUSrc ExtOp Clk Data In WrEn 32 Adr Data Memory MemWr ALU 32 Mux W_Src op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits

Paso 3f: Salto condicional (branch) beq rs, rt, imm6 Mem[PC] Buscar instrucción de memoria Equal  R[rs] == R[rt] ? Calcular condición de salto If (Equal) Calcular dirección de siguiente instrucción PC  PC + 4 + SignExt(imm16) Else PC  PC + 4 op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits

Paso 3f: Salto condicional (branch) beq rs, rt, imm16 Condición generada por datapath 32 imm16 PC Clk 00 Adder Mux Adder 4 nPC_sel Clk busW RegWr 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Equal? Cond PC Ext Inst Address 32 imm16 PC Clk 00 Adder Adder Mux Mux Adder 4 Adder Adder 4 nPC_sel Clk busW RegWr 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Equal? Cond PC Ext Inst Address op rs rt immediate 0 16 21 26 31 6 bits 16 bits 5 bits 5 bits

En suma: Unidad de búsqueda envía campos rs, rd, rt, imm16 de instrucción al datapath El resto de las señales de control (subrayadas) generados por la unidad de control 32 ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Rt Rd RegDst Extender Mux Mux 32 16 imm16 ALUSrc ExtOp Mux MemtoReg Clk Data In WrEn 32 Adr Data Memory 32 MemWr ALU Instruction Fetch Unit Clk Zero Instruction<31:0> 0 1 0 1 0 1 <21:25> <16:20> <11:15> <0:15> Imm16 Rd Rs Rt nPC_sel 32 ALUctr Clk busW RegWr 32 32 busA 32 busB 5 5 5 Rw Ra Rb 32 32 - bit Registers Rs Rt Rt Rd RegDst Extender Mux Mux 32 16 imm16 ALUSrc ExtOp Mux MemtoReg Clk Data In WrEn 32 Adr Data Memory 32 MemWr ALU Instruction Fetch Unit Clk Zero Instruction<31:0> 0 1 0 1 0 1 <21:25> <16:20> <11:15> <0:15> Imm16 Rd Rs Rt nPC_sel

Unidad de búsqueda envía campos rs, rd, rt, imm16 de instrucción al datapath

El resto de las señales de control (subrayadas) generados por la unidad de control

Señales de control nPC_MUX_sel 0  PC  PC + 4 1  PC  PC + 4 + SignExt(imm16) || 00

Señales de Control ExtOp : “zero”, “sign” MemWr : 1  Escribir en memoria ALUSrc : 0  regB; 1  constante MemToReg : 0  ALU; 1  Mem ALUctr : “add”, “sub”, “or” RegDst : 0  “rt”; 1  “rd” RegWr : 1  Escribir en registro

Paso 4: Valores de señales de control

RTL: Add add rd, rs, rt Mem[PC] Búsqueda de instrucción R[rd]  R[rs] + R[rt] Ejecución de instrucción PC  PC + 4 Actualización de PC op rs rt rd shamt funct 0 6 11 16 21 26 31 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits

Unidad de Fetch Igual para todas las instrucciones

Igual para todas las instrucciones

Datapath uniciclo durante “add” R[rd]  R[rs] + R[rt] op rs rt rd shamt funct 0 6 11 16 21 26 31

Unidad de fetch al final de “add” Igual para todas las instrucciones excepto branch, jump, etc.

Igual para todas las instrucciones excepto branch, jump, etc.

Datapath uniciclo durante “ori” R[rt]  R[rs] or ZeroExt(imm16) op rs rt immediate 0 16 21 26 31

Datapath uniciclo durante “lw” R[rt]  Dmem[R[rs]+SignExt(imm16)] op rs rt immediate 0 16 21 26 31

Datapath uniciclo durante “sw” Dmem[R[rs]+SignExt(imm16)]  R[rt] op rs rt immediate 0 16 21 26 31

Datapath uniciclo durante “ beq” If (R[rs] – R[rt] == 0) then Zero  1 Else Zero  0 op rs rt immediate 0 16 21 26 31

Unidad de fetch al final de “beq” If (Zero == 1) then PC  PC + 4 + SignExt[imm16]*4 Else PC  PC + 4 op rs rt immediate 0 16 21 26 31

Resumen de señales de control Proceso de decodificación de instrucciones consiste en generar estas señales inst Register Transfer ADD R[rd] < – R[rs ] + R[rt ]; PC < – PC + 4 ALUsrc = RegB , ALUctr = “ add ” , RegDst = rd, RegWr , nPC_sel = “ +4 ” SUB R[rd] < – R[rs ] – R[rt ]; PC < – PC + 4 ALUsrc = RegB , ALUctr = “ sub ” , RegDst = rd, RegWr , nPC_sel = “ +4 ” ORi R[rt ] < – R[rs ] + zero_ext(Imm16); PC < – PC + 4 ALUsrc = Im , Extop = “ Z ” , ALUctr = “ or ” , RegDst = rt , RegWr , nPC_sel = “ +4 ” LOAD R[rt ] < – MEM[ R[rs ] + sign_ext(Imm16)]; PC < – PC + 4 ALUsrc = Im , Extop = “ Sn ” , ALUctr = “ add ” , MemtoReg , RegDst = rt , RegWr , nPC_sel = “ +4 ” STORE MEM[ R[rs ] + sign_ext(Imm16)] < – R[rs ]; PC < – PC + 4 ALUsrc = Im , Extop = “ Sn ” , ALUctr = “ add ” , MemWr , nPC_sel = “ +4 ” BEQ if ( R[rs ] == R[rt ] ) then PC < – PC + sign_ext(Imm16)] || 00 else PC < – PC + 4 nPC_sel = “ Br ” , ALUctr = “ sub ” Instrucción Transferencia de registros ADD R[rd] < – R[rs ] + R[rt ]; PC < – PC + 4 ALUsrc = RegB , ALUctr = “ add ” , RegDst = rd, RegWr , nPC_sel = “ +4 ” SUB R[rd] < – R[rs ] – R[rt ]; PC < – PC + 4 ALUsrc = RegB , ALUctr = “ sub ” , RegDst = rd, RegWr , nPC_sel = “ +4 ” ORi R[rt ] < – R[rs ] + zero_ext(Imm16); PC < – PC + 4 ALUsrc = Im , Extop = “ Z ” , ALUctr = “ or ” , RegDst = rt , RegWr , nPC_sel = “ +4 ” LOAD R[rt ] < – MEM[ R[rs ] + sign_ext(Imm16)]; PC < – PC + 4 ALUsrc = Im , Extop = “ Sn ” , ALUctr = “ add ” , MemtoReg , RegDst = rt , RegWr , nPC_sel = “ +4 ” STORE MEM[ R[rs ] + sign_ext(Imm16)] < – R[rs ]; PC < – PC + 4 ALUsrc = Im , Extop = “ Sn ” , ALUctr = “ add ” , MemWr , nPC_sel = “ +4 ” BEQ if ( R[rs ] == R[rt ] ) then PC < – PC + 4 + sign_ext(Imm16)] || 00 else PC < – PC + 4 nPC_sel = “ Br ” , ALUctr = “ sub ”

Paso 5: Diseñar lógica de control ALUctr RegDst ALUSrc ExtOp MemtoReg MemWr Equal Instrucción<31:0> <21:25> <16:20> <11:15> <0:15> Imm16 Rd Rs Rt nPC_sel Adr Memoria Instruccion SECCIÓN DE DATOS Decoder Op <21:25> Fun RegWr

Resumen de señales de control add sub ori lw sw beq RegDst ALUSrc MemtoReg RegWrite MemWrite nPCsel ExtOp ALUctr<2:0> 1 0 0 1 0 0 x Add 1 0 0 1 0 0 x Subtract 0 1 0 1 0 0 0 Or 0 1 1 1 0 0 1 Add x 1 x 0 1 0 1 Add x 0 x 0 0 1 x Subtract func op 00 0000 00 0000 00 1101 10 0011 10 1011 00 0100 Appendix A 10 0000 Ver 10 0010 No interesa op target address op rs rt rd shamt funct 0 6 11 16 21 26 31 op rs rt immediate R-type I-type J-type add, sub ori, lw, sw, beq jump

Decodificación local Unidad de control decodifica parte de la instrucción y ALU hace su propia decodificación local R-type ori lw sw beq RegDst ALUSrc MemtoReg RegWrite MemWrite Branch ExtOp ALUop<N:0> 1 0 0 1 0 0 x “ R-type” 0 1 0 1 0 0 0 Or 0 1 1 1 0 0 1 Add x 1 x 0 1 0 1 Add x 0 x 0 0 1 x Subtract op 00 0000 00 1101 10 0011 10 1011 00 0100

Codificación para ALUop ALUop: Instrucciones tipo ‘R’; instrucciones tipo ‘I’ (or, add, subtract)  2 bits R-type ori lw sw beq ALUop (Symbolic) “ R-type” Or Add Add Subtract ALUop<2:0> 1 00 0 10 0 00 0 00 0 01

Decodificación de campo ‘func’ op rs rt rd shamt funct 0 6 11 16 21 26 31 R-type R-type ori lw sw beq ALUop (Symbolic) “ R-type” Or Add Add Subtract ALUop<2:0> 1 00 0 10 0 00 0 00 0 01 funct<5:0> Instruction Operation 10 0000 10 0010 10 0100 10 0101 10 1010 add subtract and or set-on-less-than ALUctr<2:0> ALU Operation 000 001 010 110 111 And Or Add Subtract Set-on-less-than ALUctr ALU

Tabla de verdad para ALUctr R-type ori lw sw beq ALUop (Symbolic) “ R-type” Or Add Add Subtract ALUop<2:0> 1 00 0 10 0 00 0 00 0 01 ALUop func bit<2> bit<1> bit<0> bit<2> bit<1> bit<0> bit<3> 0 0 0 x x x x ALUctr ALU Operation Add 0 1 0 bit<2> bit<1> bit<0> 0 x 1 x x x x Subtract 1 1 0 0 1 x x x x x Or 0 0 1 1 x x 0 0 0 0 Add 0 1 0 1 x x 0 0 1 0 Subtract 1 1 0 1 x x 0 1 0 0 And 0 0 0 1 x x 0 1 0 1 Or 0 0 1 1 x x 1 0 1 0 Set on < 1 1 1 funct<3:0> Instruction Op. 0000 0010 0100 0101 1010 add subtract and or set-on-less-than

Desventajas de procesador uniclo CPI =1 pero, ¿Qué tan rápido es el reloj? Tan rápido como la instrucción más lenta Memorias reales son mucho más lentas que el procesador Instrucciones de punto flotante toman mucho más tiempo Cada unidad funcional está ocupada por toda la instrucción Necesitamos memoria separada de programa y de datos No podemos compartir ALU para calcular siguiente PC PC Inst Memory mux ALU Data Mem mux PC Reg File Inst Memory mux ALU mux PC Inst Memory mux ALU Data Mem PC Inst Memory cmp mux Reg File Reg File Reg File Arithmetic & Logical Load Store Branch Critical Path setup setup PC Inst Memory mux ALU Data Mem mux PC Reg File Inst Memory mux ALU mux PC Inst Memory mux ALU Data Mem PC Inst Memory cmp mux Reg File Reg File Reg File Arithmetic & Logical Load Store Branch Camino Crítico setup setup

CPI =1 pero, ¿Qué tan rápido es el reloj?

Tan rápido como la instrucción más lenta

Memorias reales son mucho más lentas que el procesador

Instrucciones de punto flotante toman mucho más tiempo

Cada unidad funcional está ocupada por toda la instrucción

Necesitamos memoria separada de programa y de datos

No podemos compartir ALU para calcular siguiente PC

Peor caso: instrucción load Critical Path (Load Operation) = PC ’ s Clk - to - Q + Instruction Memory ’ s Access Time + Register File ’ s Access Time + ALU to Perform a 32 - bit Add + Data Memory Access Time + Setup Time for Register File Write + Clock Skew Clk 5 Rw Ra Rb 32 32 - bit Registers Rd ALU Clk Data In Data Address Ideal Data Memory Instruction Instruction Address Ideal Instruction Memory Clk PC 5 Rs 5 Rt 16 Imm 32 32 32 32 A B Next Address Camino Crítico (Instrucción Load) = Tiempo acceso PC + Tiempo de acceso a la memoria + Tiempo de acceso a Banco Reg + ’ ALU para realizar suma de 32 bits+ - Tiempo acceso memoria de datos + Tiempo de seteo escritura en BReg + Clock Skew Clk 5 Rw Ra Rb 32 32 - bit Registros Rd ALU ALU Clk Data In Dir. Data Ideal Memoria Datos Instrucción Dirección Instrucción Ideal Memoria Instrucción Clk PC 5 Rs 5 Rt 16 Imm 32 32 32 32 A B Próx. Dir.

Ejemplo Asumir que los tiempos de operación de las unidades funcionales son: Memoria: 2ns ALU y sumadores: 2ns Banco de registros: 1ns Los retardos de multiplexores, unidad de extensión de signo, registros individuales y alambres son despreciables. Comparar el desempeño de las siguientes implementaciones: Máquina uniciclo de período de reloj fijo. Máquina uniciclo ficticia donde el período de reloj varía para ajustarse al tiempo exacto de ejecución de cada instrucción. Asumir que la frecuencia dinámica de ejecución de instrucciones es: 24% loads, 12% stores, 44% instrucciones ALU, 18% saltos condicionales (branches) y 2% saltos absolutos (jumps).

Asumir que los tiempos de operación de las unidades funcionales son:

Memoria: 2ns

ALU y sumadores: 2ns

Banco de registros: 1ns

Los retardos de multiplexores, unidad de extensión de signo, registros individuales y alambres son despreciables. Comparar el desempeño de las siguientes implementaciones:

Máquina uniciclo de período de reloj fijo.

Máquina uniciclo ficticia donde el período de reloj varía para ajustarse al tiempo exacto de ejecución de cada instrucción.

Asumir que la frecuencia dinámica de ejecución de instrucciones es: 24% loads, 12% stores, 44% instrucciones ALU, 18% saltos condicionales (branches) y 2% saltos absolutos (jumps).

Solución Banco registros Fetch Jump Memoria ALU Banco registros Fetch Store ALU Banco registros Fetch Branch Memoria ALU Banco registros Fetch Load Banco registros ALU Banco registros Fetch ALU Uso de unidades funcionales Tipo de instrucción

Solución Período de reloj ciclo fijo: 8ns Período de reloj ciclo variable: 6*0.44 + 8*0.24 + 7*0.12 + 5*0.18 + 2*0.02 = 6.3ns Aceleración = 1.27 2 2 Memoria datos 2 2 2 2 ALU 1 1 1 1 Lectura banco registros 2 2 2 2 2 Memoria de instrucción Jump Branch Store Load ALU Tipo de instrucción 2ns 7ns 8ns 6ns Total 1 1 Escritura banco registros

Ejemplo Suponer una unidad de punto flotante que suma o resta en 8ns y multiplica o divide en 16ns. Todas las otras unidades funcionales tienen los retardos del ejemplo anterior. ¿Qué tanto más rápida es la implementación de reloj de período variable versus la de reloj de período fijo? Asumir que las frecuencias de ejecución son: 31% loads, 21% stores, ALU 27%, saltos condicionales 5%, saltos absolutos 2%, suma/resta de punto flotante 7%, y multiplicación/división de punto flotante 7%. Tiempo de ejecución suma/resta de punto flotante = 2 + 1 + 8 + 1 = 12ns Tiempo de ejecución multiplicación/división de punto flotante = 2 + 1 + 16 + 1 = 20ns Ciclo de reloj período fijo = 20ns Ciclo de reloj promedio período variable = 8*0.31 + 7*0.21 + 6*0.27 + 5*0.05 + 2*0.02+ 12*0.07 + 20*0.07 = 8.1ns Aceleración = 20/8.1 = 2.47

Mejorando el desempeño Idea: procesador multiciclo Ejecutar sólo parte de una instrucción en cada período de reloj Reloj es más rápido Instrucciones más sencillas toman menos ciclos en ejecutar que instrucciones más complejas

Idea: procesador multiciclo

Ejecutar sólo parte de una instrucción en cada período de reloj

Reloj es más rápido

Instrucciones más sencillas toman menos ciclos en ejecutar que instrucciones más complejas

Add a comment

Related presentations

Related pages

K. ESSER, U. KÜCK, C. LANG-HINRICHS, P. LEMKE, H.D ...

J. Basic Microbiol. %T (1987) 9, 520 Book Reviews K. ESSER, U. KUCK, C. LANG-HINRICHS, P. LEMRE, H. D. OSIEWACZ, U. STAIIL and P. TUD- ZYNSKI, Plasmids of ...
Read more

uniciclo - Foursquare

1 visitor has checked in at uniciclo. Foursquare. Log In; Sign Up; Nearby: ... D.C. Countries: Belgium; Brazil; Canada; Chile; Finland; ... u; v; w; x; y; z #
Read more

Klase u c# - Education - documents.tips

C P U Uniciclo L u c y 1. L U C Y 2. Sinopsis: Lucy da vida a una mujer corriente que es obligada a ejercer de mula por una mafia taiwanesa. Su vida ...
Read more

Control visual para la formación de robots móviles tipo ...

El presente trabajo describe una propuesta de control visual para la formación de robots móviles tipo uniciclo ... u C = 160 [píxeles ... P. Ostrowsky ...
Read more

Microprocesador Uniciclo - YouTube

Microprocesador Uniciclo Segunda Investigacion Edward Umaña Melvin Gutierrez Oscar Montes
Read more

Pilar Conde Pérez | LinkedIn

UNICICLO, C.P. Gonzalo de Berceo, G.E. Escuelas Urbanas; Education: Escuela Superior de Diseño de Madrid; Websites: Personal Website; 122 connections.
Read more

Juggling Magazine 37 by Ass. Giocolieri e >Dintorni - issuu

presenta le novità2008: Latestnews2008 nk,ÉR U:tAC.llE (t. t. ei. ciltotl. Atoniumrebound. ARf OECO!.r. K. tt{'uFa, ú,a ...
Read more

Comprension de estructuras en arquitectura - de.scribd.com

xi Cables en catenaria C a r p ... donde los requisitos est r u c t u r a l e s son modestos y se p u e d e n ... Un uniciclo es un apoyo de rodillo ...
Read more