1 / 69

Electrónica Digital

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

ciro
Télécharger la présentation

Electrónica Digital

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Electrónica Digital Computadoras de la Arena al Lenguaje C Ing. Jose Luis Hamkalo

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

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

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

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

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

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

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

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

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

  11. Memoria • Ejemplo RAM de 4 x 2 bits (que chiquita!, quiero una de 4Gbytes!)

  12. El Camino de Datos (Data Path) • Poniéndolo todo junto Qué es cada cosa?

  13. Tenemos estas Señales

  14. Y estas otras (quiero más!)

  15. y las últimas

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

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

  18. Como vamos por ahora? • Una CPU que obtiene sus instrucciones y datos de la memoria. • Y es capaz de ejecutarlas!

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

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

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

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

  23. CPU y FPU de MIPS 32 Para el Sistema (Windows, linux ...)

  24. Convención de Uso de Registros

  25. Formatos de Instrucciones MIPS

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

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

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

  29. Programando en Lenguaje Ensamblador Da una sintaxis con mnemónicos para las instrucciones, registros y modos de direccionamiento.

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

  31. Ejemplo de addi addi $1, $2, 15 regs[1] ← regs[2] + 15 (Texto) Ensamblado (Hardware) Op Code fuente destino inmediato

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

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

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

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

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

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

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

  39. Instrucción del Tipo J: j j target pc ← target* (Texto) Ensamblado 31 0 (Hardware) Op Code destino (6 bits) (26 bits)

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

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

  42. Instrucciones que Manipulan Constantes y de Comparación • lui • slt, sltu, slti, sltiu,

  43. Instrucciones de Branch • beq • bgez, bgezal • bgtz • blez • bltz, bltzal • bne

  44. Instrucciones de Jump • j, jal • jr, jalr

  45. Instrucciones de carga-almacenamiento • lb, lbu, lh, lhu, lw • sb, sh, sw

  46. Instrucciones de Movimiento de Datos • mfhi, mflo • mthi, mtlo • movn • movz

  47. Instrucciones de Llamada al Sistema • eret • syscall • break

  48. Instrucción que no Hace Nada • nop

  49. Pseudoinstrucciones (Facilidades del Assembler)

  50. Programando en Lenguaje Ensamblador (con abstracciones) Agrega: directivas, labels, pseudoinstrucciones, modos de direccionamiento no soportados por el procesador.

More Related