1 / 29

ARQUITECTURA DE COMPUTADORES

ARQUITECTURA DE COMPUTADORES. Semestre A-2009 Clase 13. AGENDA. 2do Examen Parcial: Martes 30/06/2009 Repaso Ejercicios. Representación de números binarios con signo.

Télécharger la présentation

ARQUITECTURA DE COMPUTADORES

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. ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13

  2. AGENDA • 2do Examen Parcial: Martes 30/06/2009 • Repaso • Ejercicios

  3. Representación de números binarios con signo • A los números positivos y al cero, los hemos representado con n dígitos binarios, pero ¿Cómo representamos los números negativos en binario? • Existen tres representaciones de números enteros con signo en binario: • Signo - Magnitud • Signo - Complemento: • Complemento a 1 • Complemento a 2 • La representación utilizada en la actualidad, es el complemento a 2

  4. Representación Signo - Magnitud • El bit más significativo indica el signo del número: 0001 0110 → +22 1011 0100 → -52 • Algunos inconvenientes: • Existen dos ceros • +0 : 0000 0000 • -0 : 1000 0000 • ¿Cómo podríamos sumar dos dígitos en Signo - Magnitud? • Comparar los signos: Iguales → Suma, Distintos → Resta Bit de signo n Bits: Parte entera m Bits: Parte decimal

  5. Representación en Complemento a 1 • El negativo de un número se obtiene al colocar todos los 1s como 0s y todos los 0s como 1s. 0001 0110 → +22 1110 1001 → -22 • Algunos inconvenientes: • Existen dos ceros • +0 : 0000 0000 • -0 : 1111 1111 • ¿Cómo podríamos sumar dígitos en Complemento a 1? • Se realiza la suma (Circuitería de suma) • Si hay un bit de acarreo, se suma (2da suma) • Si los signos son distintos, se coloca el signo del mayor (Circuitería de detección del mayor) A = 2n – an-1an-2. . .a1a0

  6. Representación en Complemento a 2 • El negativo de un número se obtiene al colocar el número en complemento a 1 y sumarle una unidad (1). 0001 0110 → +22 1110 1010 → -22 • Una forma rápida de calcular el complemento a 2 es: • Recorriendo el número de derecha a izquierda, deje los 0s sin cambiar • Siguiendo el recorrido, deje al primer 1 sin modificar • A partir de allí, cambie los 0s por 1s y los 1s por 0s • Características: • Existe un solo cero: 0000 0000 • ¿Cómo se sumarían dos dígitos en Complemento a 2? • Se realiza la suma (Circuitería de suma) A = 2n – an-1an-2. . .a1a0 + 1

  7. Ejemplo de sumas en Complemento a 2 b) 0001 0110 → +22 1100 1100 → -52 1110 0010 → -30 a) 0001 0110 → +22 0011 0100 → +52 0100 1010 → +74 c) 1110 1010 → -22 0011 0100 → +52 10001 1110 → +30 d) 1110 1010 → -22 1100 1100 → -52 11011 0110 → -74

  8. Arquitectura MIPS

  9. Componentes de la arquitectura • El Contador de Programa (PC) • Unidad de Control • Unidad Aritmético-Lógica • Registros • Memoria de Datos • Memoria de Instrucciones

  10. Programa almacenado • John von Neumann introdujo, por primera vez, en 1945, la idea de almacenar el programa en memoria • El programa es almacenado dentro de la máquina para luego ser procesado internamente • Las instrucciones y los datos son guardados en memoria como números • Varios usuarios pueden utilizar un mismo computador para diferentes conductas, resultando en diferentes aplicaciones y dándole un carácter universal, como herramienta, al computador

  11. Conjuntos de instrucciones • Para darle órdenes al hardware de un computador, debemos hablar su idioma • Las palabras del idioma de los computadores se denominan instrucciones, y su vocabulario es llamado conjunto de instrucciones • Una instrucción, en lenguaje de máquina, es un código formado por voltajes altos y bajos • Un conjunto de instrucciones debería: • Facilitar (Simplicidad) la construcción del hardware y el compilador • Maximizar el rendimiento • Minimizar el costo y el consumo de energía

  12. Almacenamiento de variables en hardware add $t1,$s6,$s7 • A diferencia de los programas de alto nivel, en el hardware se cuenta con un número limitado de localidades de memoria para ubicar allí los operandos y resultados temporales de operaciones aritméticas • La arquitectura MIPS cuenta con 32 de estas localidades de memoria, denominadas registros • Cada registro en MIPS, tiene un tamaño o capacidad de 32 bits.

  13. Almacenamiento de datos • Los lenguajes de programación permiten tener estructuras que pueden contener muchos más datos o variables que los que se pueden guardar en 32 registros: ¿Cómo hace el computador para acceder y representar tal cantidad de datos? Los datos se mantienen en memoria • Por lo tanto, se requieren instrucciones (Capacidades) para • Leer un dato desde memoria y guardarlo en un registro • Tomar un dato guardado en un registro y guardarlo en una localidad de memoria • En MIPS, se pueden direccionar 230 palabras de memoria: Memory[0], Memory[4], Memory[8], . . . , Memory[4294967292]

  14. Formato de instrucción R • Las instrucciones aritméticas registro a registro, utilizan el formato de instrucción R. • op es el código de instrucción, y func especifica una operación aritmética particular. • rs, rt y rd son los dos registros fuentes y el registro destino • Un ejemplo de una instrucción y su codificación es: add$s4, $t1, $t2

  15. Formato de instrucción I • Las instrucciones lw, sw y beq instructions utilizan el formato de instrucción I. • rt es el destino para lw, pero una fuente para beq y sw. • dirección es una constante, con signo, de 16 bits. • Dos ejemplos: lw$t0, –4($sp) sw$a0, 16($sp)

  16. Saltos • Para las instrucciones de salto, la constante no es una dirección, sino un desplazamiento de instrucción desde el contador de programa actual, hasta la dirección deseada. beq $at,$0,Etiq add $v1, $v0, $0 add $v1, $v1, $v1 j Etiq Etiq: add $v1, $v0, $v0 • La dirección destino Etiq está tres instrucciones después de beq, por lo que la codificación de la instrucción de salto tendrá 0000 0000 0000 0011 como campo de dirección. • Las instrucciones tienen 4 bytes de largo, por lo que el desplazamiento real es de 12 bytes.

  17. Arquitectura MIPS

  18. 0 M u x 1 Add PC 4 Add Shift left 2 PCSrc RegWrite MemToReg MemWrite Leer dirección Instrucción [31-0] I [25 - 21] Leer registro 1 Leer data 1 ALU Leer dirección Leer data 1 M u x 0 I [20 - 16] Zero Leer registro 2 Memoria deInstrucciones Leer data 2 0 M u x 1 Resultado Escribir dirección 0 M u x 1 Escribir registro Memoriade Datos Escribir data Registros I [15 - 11] ALUOp Escribir data MemRead ALUSrc RegDst I [15 - 0] Signo extend El camino de datos final

  19. RegWrite ALUOp MemWrite RegDst I [31 - 26] ALUSrc I [5 - 0] MemToReg Leer dirección Instrucción [31-0] Control Memoria deInstrucciones MemRead PCSrc Zero Señales de control generales • La unidad de control requiere 13 bits de entrada. • Seis bits del opcode de instrucción. • Seis bits del campo de instrucción func. • La salida Zero de la UAL. • La unidad de control genera 10 bits de salida, correspondientes a las señales mencionadas en la lámina anterior.

  20. Instrucciones aritméticas

  21. Instrucciones lógicas

  22. Instrucciones de transferencia de datos

  23. Instrucciones de salto condicional

  24. Instrucciones de salto incondicional

  25. Ejemplo 2 Programa en C: int i = 0, j = 5; while (vector[i]==j) i+=1; Programa en ensamblador: li $s1,0 li $s2,5 # vector en $s6=0x10010040 While: sll $t1,$s1,2 add $t1,$t1,$s6 lw $t2,0($t1) bne $t2,$s2,Fin addi $s1,$s1,1 j While Fin:

  26. Ejemplo 3 Programa en C: x = 0; for(int i=0;i<100;i++) { x = x+i; } Programa en ensamblador: li $s1,0 # i = 0 li $s2,0 # x = 0 For: slti $t0,$s1,100 beq $t0,$zero,Fin add $s2,$s2,$s1 addi $s1,$s1,1 j For Fin:

  27. Tarea • Realizar un programa en lenguaje ensamblador MIPS, que calcule el factorial de un número (De manera no recursiva). • Realizar un programa en lenguaje ensamblador MIPS, que calcule la multiplicación de dos números a través de sumas sucesivas.

  28. Ejemplo 4 Programa en C: int i, x = 8,f=1; for(i=2;i<=x;i++) { f = f * i; } Programa en ensamblador: li $s1,2 # i = 2 li $s2,8 # x = 8 li $t0,1 # f = 1 For: slt $t1,$s2,$s1 bne $t1,$zero,Fin mult $t0,$s1 mflo $t0 addi $s1,$s1,1 j For Fin:

  29. Ejemplo 5 Programa en C: int a = 4, b = 5; int suma = a; for(int = 1; i<b; i++) { suma = suma + a; } Programa en ensamblador: li $s0,1 # i = 1 li $s1,4 # a = 4 li $s2,5 # b = 5 add $t0,$zero,$s1 For: slt $t1,$s0,$s2 bne $t1,$zero,Fin add $t0,$t0,$s1 addi $s0,$s0,1 j For Fin:

More Related