690 likes | 885 Views
Electrónica Digital. Computadoras de la Arena al Lenguaje C. Ing. Jose Luis Hamkalo. Construyendo una Computadora Paso 1: La CPU. EL camino de datos Registros Register file ALU Bus Señales disponibles El ciclo de instrucción Búsqueda (Fetch) Decodificación Ejecución
E N D
Electrónica Digital Computadoras de la Arena al Lenguaje C Ing. Jose Luis Hamkalo
Construyendo una ComputadoraPaso 1: La CPU • EL camino de datos • Registros • Register file • ALU • Bus • Señales disponibles • El ciclo de instrucción • Búsqueda (Fetch) • Decodificación • Ejecución • Secuenciamiento de instrucciones • Microoperaciones • Ejemplos
D Q D Q Registro con Salida de Alta Impedancia D_in_31 D_in_30 … D_in_0 D Q … Ck Ck Ck R_in R_out D_out_31 D_out_30 … D_out_0
Transferencias entre Registros por un BUS Din Ain A Aout Dout Din Bin B Bout Dout BUS Para Copiar el contenido de A en B: Poner Aout y Bin en 1 (las otras en 0)
Transferencias entre Registros por un BUS (continuación) Din Bin B Din Bout Ain Dout A Aout Dout Din Cin C Cout Dout BUS Para Copiar el contenido de A en B y C al mismo tiempo!!!: Poner Aout , Bin y Cin en 1 (las otras en 0)
Decodificador Binario • Pone en 1 la salida correspondiente al número binario que se pone en las entradas . • El resto de las salidas en 0. • Se usa en todas la memorias (RAM)
La Unidad Aritmético Lógica (ALU) • Solo hace cálculos (ni más ni menos!): aritméticos, lógicos, comparaciones, etc. • Un ejemplo simple: opera sobre 2 bits (a y b) solo hace OR y AND: • Ahora hacela de 32 bits y que además sume, reste, multiplique, divida, etc.!!!
La Unidad Aritmético Lógica (ALU) • Solo hace cálculos (ni más ni menos!) • Pueder haber especializadas y más de una! A B 1 Sumar ALU Restar ... Dividir A+B
La Unidad de Control • Es un circuito secuencial (Máquina de estado Finito). • Recibe un código de operación como entrada y genera una secuencia de señales de control en tiempo en forma. Salida (Señales de Control, i.e. Aout, Bin, SUMAR, etc.) Lógica Combinacional Entrada (código de Operación, i.e sumar, copiar, etc) Estado Unidad de Control
Memoria • Celdas con información. • Se pueden leer o escribir. • Se acceden por su dirección (posición en un arreglo). • Tipos • RAM • ROM (solo lectura) • FLASH
Memoria • Ejemplo RAM de 4 x 2 bits (que chiquita!, quiero una de 4Gbytes!)
El Camino de Datos (Data Path) • Poniéndolo todo junto Qué es cada cosa?
Como hago una suma?: Paso a Paso (Secuenciamiento de Instrucciones) Start: PCout, MARin, MEMread, Yin CONST(4), ALUadd, Zin Zout, PCin, UNTILmfc MDRout, Irin, JUMPonop ... Add: SELrs, REGout, Yin SELrt, REGout, ALUadd, Zin Zout, SELrd, REGin, JUMP(Start) -Cada renglón se hace en un ciclo -Las señales dentro de un renglón se hacen al mismo tiempo (en paralelo) -En 7 ciclos logro sumar 2 registros! (El resultado lo guardo en un tercero)
Que tipos de instrucciones hay? • Aritmético-Lógicas • Acceso a Memoria (Load y Store) • Saltos • Condicionales • Incondicionales • Aritméticas de Punto Flotante (FP) • Sistema
Como vamos por ahora? • Una CPU que obtiene sus instrucciones y datos de la memoria. • Y es capaz de ejecutarlas!
Que Clase de Computadora Queremos? • Computadoras de escritorio • PCs y workstations • Precio-desempeño óptimo • Servidores • Web • Disponibilad • Escalabilidad • Procesadores embarcados • Desempeño a precio mínimo • Mínimo conumo de potencia
Un Mouse es un Sistema de Cómputo! -Mouse Óptico LED ilumina el escritorio Cámara de baja resol. Procesador básico de Imágenes detecta mov. Botones y rueda. -Supera al mouse mecánico de bolita.
Quiero una computadora de alto desempeño: La Arquitectura MIPS 32 • Conjunto de instrucciones simple, Load/Store o tipo RISC (pocas instrucciones). • Diseñada para eficiencia del pipeline (procesamiento en línea de montaje) • Eficiencia para el compilador
La Arquitectura MIPS 32 • Registros • 32 registros de 32 bits: $0, $1, $2, $31 (int) • 32 registros de 32 bits: $f0, $f1, $f2, $f31 (fp) • Tipos de datos • Bytes (8 bits), Half Word (16 bits), Words (32 bits) • Double words (fp) • Modos de direccionamiento (Qué?) • Inmediato • Desplazamiento
CPU y FPU de MIPS 32 Para el Sistema (Windows, linux ...)
Instrucción del Tipo I addi addi rt, rs, imm regs[rt] ← regs[rs] + imm 31 0 Op Code fuente destino inmediato (6 bits) (5 bits) (5 bits) (16 bits)
Ejemplo Instrucción del Tipo I addi regs[1] ← regs[2] + 15 (Hardware) Op Code fuente destino inmediato Suma el contenido del registro fuente (rs) a una constante y lo guarda en el registro destino (rd)
Programando a Nivel de la Máquina Programa en MIPS 32 que calcula la suma de los cuadrados de los numeros de 0 a 100.
Programando en Lenguaje Ensamblador Da una sintaxis con mnemónicos para las instrucciones, registros y modos de direccionamiento.
Instrucción del Tipo I addi addi rt, rs, imm regs[rt] ← regs[rs] + imm (Texto) Ensamblado 31 0 (Hardware) Op Code fuente destino inmediato (6 bits) (5 bits) (5 bits) (16 bits)
Ejemplo de addi addi $1, $2, 15 regs[1] ← regs[2] + 15 (Texto) Ensamblado (Hardware) Op Code fuente destino inmediato
Instrucción del Tipo I: lw lw rt, offset(rs) Regs[rt] ← Mem[Regs[rs] + imm] (Texto) Ensamblado 31 0 (Hardware) Op Code fuente destino inmediato (6 bits) (5 bits) (5 bits) (16 bits)
Ejemplo de lw lw $3, 33($4) Regs[3] ← Mem[Regs[4] + 33] (Texto) Ensamblado 31 0 (Hardware) Op Code fuente destino inmediato (6 bits) (5 bits) (5 bits) (16 bits)
Instrucción del Tipo I: bne bne rs, rt, label if (Regs[rs] ≠ Regs[rt]) then PC ← PC+4+(Offsetx4) (Texto) else PC ← PC+4 Ensamblado 31 0 (Hardware) Op Code fuente destino inmediato (6 bits) (5 bits) (5 bits) (16 bits)
Ejemplo de bne bne $5, $6, loop if (Regs[5] ≠ Regs[6]) then PC ← PC+4+(-5x4) Loop: else PC ← PC+4 bne $5, $6,-16 31 0 Op Code fuente destino inmediato (6 bits) (5 bits) (5 bits) (16 bits)
Instrucción del Tipo R: add add rd, rs, rt Regs[rd] ← Regs[rs] + Regs[rt] (Texto) Ensamblado 31 0 (Hardware) Op Code fuente 1 fuente 2 destino función (6 bits) (5 bits) (5 bits) (5 bits) (6 bits)
Ejemplo de add: add $7, $8, $9 Regs[rd] ← Regs[rs] + Regs[rt] (Texto) Ensamblado 31 0 (Hardware) Op Code fuente 1 fuente 2 destino función (6 bits) (5 bits) (5 bits) (5 bits) (6 bits)
Instrucción del Tipo R: sll sll rd, rt, shamt Regs[rd] ← Regs[rt] << shamt (Texto) Ensamblado 31 0 (Hardware) Op Code fuente destino despl. función (6 bits) (5 bits) (5 bits) (5 bits) (6 bits)
Instrucción del Tipo J: j j target pc ← target* (Texto) Ensamblado 31 0 (Hardware) Op Code destino (6 bits) (26 bits)
Instrucción del Tipo J: jal jal target Regs[31] ← pc pc ← target* (Texto) Ensamblado 31 0 (Hardware) Op Code destino (6 bits) (26 bits)
Instrucciones Aritmético Lógicasen MIPS 32 • add, addu, addi, addiu, sub • and, andi, xor, xori, nor, or, ori • clo, clz • div (cociente en lo, resto en hi), divu • mult, multu (resultado en hi lo) • mul (especifica rdest) • madd, maddu, msub, msubu (resultado en hi lo) • sll, sllv, sra, srav, srl, srlv
Instrucciones que Manipulan Constantes y de Comparación • lui • slt, sltu, slti, sltiu,
Instrucciones de Branch • beq • bgez, bgezal • bgtz • blez • bltz, bltzal • bne
Instrucciones de Jump • j, jal • jr, jalr
Instrucciones de carga-almacenamiento • lb, lbu, lh, lhu, lw • sb, sh, sw
Instrucciones de Movimiento de Datos • mfhi, mflo • mthi, mtlo • movn • movz
Instrucciones de Llamada al Sistema • eret • syscall • break
Programando en Lenguaje Ensamblador (con abstracciones) Agrega: directivas, labels, pseudoinstrucciones, modos de direccionamiento no soportados por el procesador.