170 likes | 595 Views
ARQUITECTURA DE COMPUTADORES. Semestre A-2009 Clase 10. AGENDA. Arquitectura MIPS Concepto de programa almacenado Conjunto de instrucciones MIPS El lenguaje ensamblador MIPS Registros en MIPS. Arquitectura MIPS. Componentes de la arquitectura. El Contador de Programa (PC)
E N D
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10
AGENDA • Arquitectura MIPS • Concepto de programa almacenado • Conjunto de instrucciones MIPS • El lenguaje ensamblador MIPS • Registros en MIPS
Componentes de la arquitectura • El Contador de Programa (PC) • Unidad de Control • Unidad Aritmético-Lógica • Registros • Memoria de Datos • Memoria de Instrucciones
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
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
Conjunto de instrucciones MIPS • Utilizaremos el conjunto de instrucciones MIPS, desarrollado por MIPS technologies • Otros conjunto de instrucciones son: • ARM: Del cual se construyeron 3000 millones de procesadores en el 2008 (Parecido a MIPS) • Intel x86: El cual fue implementado en alrededor de 330 millones de PCs en 2008.
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.
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]
Instrucciones de transferencia de datos • Carga de datos desde memoria a un registro: lw $s1, 15($s2) # $s1=Memory[$s2+15] • Almacenamiento de datos desde registros a memoria: sw $s1, 20($s2) # Memory[$s2+20]=$s1
Instrucciones Aritméticas • Las instrucciones aritméticas y lógicas ocurren sólo sobre registros. • Suma de dos enteros almacenados en registros add $s1,$s2,$s3 # $s1=$s2+$s3 • Resta de dos enteros almacenados en registros sub $s1,$s2,$s3 # $s1=$s2-$s3 • Suma de un valor entero constante a un valor entero guardado en un registro addi $s1,$s2,5 # $s1=$s2+5
Instrucciones Lógicas Las operaciones lógicas realizan las operaciones bit a bit • AND: and $t0,$t1,$t2 # $t0 = $t1 & $t2 • OR: or $t0,$t1,$t2 # $t0 = $t1 | $t2 • Desplazamiento a la izquierda: sll $s1,$s2,8 # $s1 = $s2 << 8 • Desplazamiento a la derecha: srl $s1,$s2,6 # $s1 = $s2 >> 6
Instrucciones de Salto Lo que distingue a una computadora de una calculadora, es su capacidad para tomar decisiones CONDICIONAL: • Saltar si son iguales dos operandos: beq $s5,$s6,Etiq # if ($s5==$s6) goto Etiq • Salta si son diferentes dos operandos: bne $s3,$s4,Etiq # if ($s3!=$s4) goto Etiq INCONDICIONAL • Salta a cierta dirección explicita o etiqueta: j Etiq # goto Etiq • Salta a la dirección almacenada en el registro: jr $ra # goto $ra
Ejemplo 1 Programa en C: int a = 5; int b= 4; int c = a + b + 7; Programa en ensamblador: addiu $s0,$zero,5 addiu $s1,$zero,4 addu $t0,$s0,$s1 addiu $t0,$t0,7
Ejemplo 2 Programa en C: int f, g = 3, h = 1; int i = 4, j = 4; if (i==j) f=g+h; else f=g-h; Programa en ensamblador: addi $s1,$zero,3 addi $s2,$zero,1 addi $s3,$zero,4 addi $s4,$zero,4 bne $s3,$s4,Else add $t0,$s1,$s2 j Fin Else:sub $t0,$s1,$s2 Fin:
Simulador SPIM • Permite ejecutar programas escritos en el lenguaje ensamblador MIPS32 • También ofrece un depurador sencillo y servicios mínimos de sistema operativo • Se puede descargar de la página http://pages.cs.wisc.edu/~larus/spim.html