ContenidoIntroduccion
MemoriasLenguaje de Maquina
Organizacion Basica de un Computador yLenguaje de Maquina
Prof. Rodrigo Araya [email protected]
Universidad Tecnica Federico Santa MarıaDepartamento de Informatica
Valparaıso, 1er Semestre 2006
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
1 Introduccion
2 Memorias
3 Lenguaje de Maquina
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Introduccion
La funcion principal de un procesador es cumplir ordenes.
Estas ordenes son entregadas en un lenguaje especial paracada procesador: Lenguaje de maquina.
Las palabras del lenguaje de maquina se denominaninstrucciones, y el vocabulario conjunto de instrucciones.
En este capıtulo nos centraremos en la estructura delcomputador, y en el conjunto de instrucciones.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Estructura de un computador
Un computador digital tiene 3 bloques principales:
El ProcesadorEl Sistema de MemoriaEl Sistema de Entrada y Salida
Diagrama basico de un CPU
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Estructura de un computador
Diagrama de bloques de un AMD64:
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
En un computador existen diversos tipos de memoria (tiempode acceso, costo, tamano).
Estas memorias son jerarquicas:
A medida que se desciende de la piramide, aumenta la latencia,aumenta el tamano, y disminuye el costo de las memorias.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
Registros: Memoria utilizada directamente por elprocesador.
Memoria Cache: Memoria intermedia, ubicada muy cercade la unidad de procesamiento.
Memoria Principal: Memoria de acceso aleatorio (RAM).Memoria Externa: Memoria de almacenamiento masivo no volatil
(Disco Duro, Medios opticos, cintas, etc.).
Los Registros, Cache y Memoria Principal son consideradosmemorias internas.
Estrategia
Organizar datos y programas en memoria de manera que laspalabras de memoria siempre esten en la memoria mas rapida.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
Unidad de Transferencia
Otro aspecto importante en las memorias es la Unidad deTransferencia. Esta unidad corresponde a la cantidad de bits quese transfieren desde/hacia el dispositivo de memoria.
Palabra: Es la unidad “natural” de memoria. En unaarquitectura limpia, el tamano de una palabracorresponde, al numero de bits utilizado pararepresentar numeros en un registro, y a la longitud deuna instruccion.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
Unidad de Transferencia
En Memoria Cache a menudo es igual a la longitud de unapalabra.
En Memoria Principal es igual al numero de bits que se leen oescriben. Generalmente no coincide con el tamano de unapalabra (tıpicamente 8 bits).
En Memoria Externa los datos se transfieren en unidades masgrandes que una palabra.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
Para cargar un dato de memoria principal en el procesador, esnecesario pasar por la memoria intermedia, Cache.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
Memoria Cache
Es altamente probable que futuros accesos del procesador amemoria principal, sean a posiciones accedidas recientemente.
Se retienen algunos de los bloques de la Memoria Principal enla Memoria Cache.
El manejo de la memoria cache esta implementado en HW yes de forma automatica.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
La memoria de cache cuenta ademas con un espacio paraalmacenar una etiqueta que tiene referencia al bloque dememoria principal que se cargo.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Memorias
La memoria principal es bastante mas grande, y tiene untamano limitado por el direccionamiento.
Se pueden direccionar 2n − 1 “lineas” de memoria principal.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Lenguaje de Maquina
Para el estudio de arquitectura consideraremos la maquinaMIPS (R3000 y R4000).
MIPS R3000, R4000
Procesador de 32 bits
Tecnologıa RISC.
Su diseno es bastante “limpio” y general, para entender ellenguaje de maquina.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Lenguaje de Maquina
Lenguaje de Maquina
El Lenguaje de Maquina se escribe utilizando instrucciones.
Existen diversas instrucciones para un procesador, las quepermiten realizar:
Operaciones logicas y aritmeticas.Lectura/Escritura y corrimiento de datos.Saltos y Bifurcaciones.Etc...
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones
A diferencia de los lenguajes de alto nivel, los operandos delas instrucciones no pueden ser variables.
Para los operandos se utilizan registros.
Todos los registros en MIPS, tienen 32 bits.
El grupo de 32 bits se denomina palabra.
El archivo de registros de MIPS tiene 32 registros.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones
Registros temporales para variables
Por el momento definiremos los registros que se utilizan comooperandos en las instrucciones:
Por convencion utilizaremos:
Para variables que deben ser preservadas a traves de llamadas:
$s0, $s1, $s2, . . . , $s7
Para variables que no necesitan ser preservadas a traves dellamadas:
$t0, $t1, $t2, . . . , $t9
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones Aritmeticas
En todo computador se deben realizar operacionesaritmeticas, tanto para operar sobre datos, como paradireccionar memoria, realizar bifurcaciones, etc..
Suma y Resta
La suma y la resta en MIPS, se realizan de la siguientemanera:
add a,b,c #a← b + csub a,b,c #a← b − c
Todas las instrucciones aritmeticas tienen 3 operandos.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones Aritmeticas
Ejemplo mas “complicado”
En C
a=b+cd=a-ef=(g+h)-(d+a)
En Lenguaje de maquina:
→ add a,b,c→ sub d,a,e→ ¿...?
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones Aritmeticas
Solucion
Se tienef = (g + h)− (d + a)
Se asume:g →$s1h→$s2d →$s3a→$s4f →$s5
Se Luego:
add $t0, $s1, $s2 #$t0← g + hadd $t1, $s3, $s4 #$t1← d + asub $s5, $t0, $t1 #$f ← (g + h)− (d + a)
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
Los lenguajes de programacion, ademas de manejar variablessimples, son capaces de manejar estructuras mas complejas.
Estructuras de datos como los arreglos, son mantenidos enmemoria principal.
Existen instrucciones que permiten cargar o guardar palabrasdesde la memoria principal a registros del procesador (o viceversa).
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
La memoria principal esta organizada en bytes. Esto significaque cada direccion apunta hacia un byte.
Como el procesador MIPS tiene registros de 32 bits (unapalabra), se pueden cargar 4 bytes.
Existen 2 organizaciones distintas de ubicar bytes en palabras:
Little Endian.Big Endian.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
Little Endian y Big Endian
El tipo de organizacion de la memoria depende exclusivamentede la arquitectura que se utilice.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
Little Endian y Big Endian
Ambas organizaciones son ampliamente utilizadas, ya que ambastienen sus propias ventajas.
Ejemplos de Little Endian:VAXIntelDEC Risc
Ejemplos de Big Endian:MIPSSPARCIBM 360
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
Para cargar una palabra de memoria principal, a un registrodel procesador, se utiliza la instruccion lw.
Al cargar una palabra, se guardaran 32 bits en el registrocorrespondiente, lo que se traduce a 4 bytes de memoriaprincipal.
Por ejemplo para cargar el valor A[8] en un registro
El valor 8 corresponde al numero de elemento del arreglo.El arreglo A comienza en una direccion de memoria.
Direccion del valor a cargar = direccion de A + 4 ∗ 8
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
Registro Base y offset
En general, para acceder a una posicion de un arreglo dememoria, se debe sumar una constante a una direccion dememoria.
Esta constante corresponde a un offset.
Y la direccion de memoria se denomina registro base.
lw $s1, offset(direccion de registro)
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
¿Como obtener el valor, si el ındice es una variable?
g = h + A[i ]
No existe una instruccion que tome el offset desde unavariable.
Ejemplo de Arreglo con una variable como ındice
Cual es el codigo assembly para g = h + A[i ]
Se asume que:registro base de A → $s3
g → $s1h → $s2i → $s4
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
Antes de resolver...
Para cargar cualquier palabra de memoria, se necesita sudireccion.
Como los arreglos de memoria se encuentran almacenados enmemoria contigua, es facil calcular la direccion a la cual sedebe acceder, teniendo como referencia el registro base.
Antes de sumar el ındice i a la base del arreglo para obtenersu direccion, es necesario multiplicar el ındice por 4, debido ala forma de direccionar bytes.
La multiplicacion se puede generar:
i + i = 2i , 2i + 2i = 4i
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Arreglos de Memoria
Solucion del Ejemplo
Primero se debe calcular 4iadd $t1, $s4, $s4 # $t1← 2 ∗ iadd $t1, $t1, $t1 # $t1← 4 ∗ i
Luego para obtener la direccion de A[i ], necesitamos sumar$t1 con la base de A, que esta en $s3add $t1, $t1, $s3 # $t1← direccion de A[i ]
Con esta direccion se puede cargar A[i ] en un registrotemporal.lw $t0, 0($t1) # $t0← A[i ]
Y finalmente el resultadoadd $s1, $s2, $t0 # g ← h + A[i ]
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones
Formatos de Instruccion
En MIPS, todas las instrucciones son de 32 bits.
Existen 3 diferentes formatos de instruccion:
Tipo RTipo ITipo J
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones Tipo R
Las instrucciones tipo R son de la siguiente forma:
En la figura se muestra como ejemplo la instruccion:add $t0, $s1, $s2
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones Tipo R
Instruccion tipo R
op: codigo de operacion.
rs: primer operando fuente.
rt: segundo operando fuente.
rd: registro destino.
shamt: shift amount (se usa para instrucciones dedesplazamiento).
op: selecciona una variacion especıfica del codigo deoperacion.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones Tipo I
Las instrucciones tipo I son de la siguiente forma:
En la figura se muestra como ejemplo la instruccion:lw $s2, 32($s1)
En este caso, el campo rt se utiliza para la direccion delregistro en que se cargara la palabra.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones Tipo I
Tambien existe una instruccion para guardar registros enmemoria principal.
La instruccion save word (sw) funciona de la siguientemanera:sw $s2, 32($s1) # $s2← memoria[32 + $s1]
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Instrucciones
Es un buen principio de diseno tomar compromisos deregularidad de formatos y tamano del codigo de operacion.
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Pseudo Instrucciones
Muchas instrucciones Assembly no existen en el Lenguaje deMaquina, pero pueden ser generadas con otras instrucciones
Un ejemplo es la instruccion move que permite copiar unregistro en otro. Esta instruccion no existe en la maquinaMIPS.move $s1, $s2 # $s1← $s2
El Assembler MIPS genera:add $s1, $0, $s2 # $s1← $s2 + 0
RAE Organizacion Basica de un Computador y Lenguaje de Maquina
ContenidoIntroduccion
MemoriasLenguaje de Maquina
Fin...
Fin...
RAE Organizacion Basica de un Computador y Lenguaje de Maquina