arquitectura resumen capitulos 5 y 6 efrain saransig

2
INSTRUCCIONES Y DIRECCIONAMIENTO VISION ABSTRACTA DEL HARDWARE FORMATOS DE INSTRUCCION ARITMETICA SIMPLE E INSTRUCCIONES LOGICAS INSTRUCCIONES LOAD Y STORE INSTRUCCIONES JUMP Y BRANCH MODOS DE DIRECCIONAMIENTO La interfaz correspondiente para el hardware de computadora es su arquitectura de conjunto de instrucciones. Cuando se familiarice con el conjunto de instrucciones de una máquina, aprenderá otros con menos esfuerzo. MiniMIPS es un conjunto de instrucciones load/store (carga/almacenamiento), Ello significa que los elementos de datos se deben copiar o load (cargar) en registros .Antes de procesarlos. Registros Localidades (locations) de memoria donde se pueden almacenar datos. Instrucciones de máquina que operan sobre y Usan el esquema big-endian (Mayor terminación). Una doubleword (doble palabra) ocupa dos registros o localidades de memoria consecutivos. A un elemento de datos de 32 bits almacenado en un registro o localidad de memoria (con una dirección Divisible entre 4) se le conoce como Word (palabra). Una instrucción de máquina MiniMIPS típica es Add a la forma compilada a=b+c. Las secuencias de máquina o instrucciones en lenguaje ensamblador se ejecutan de arriba abajo a menos que se especifica que de manera explícita un orden de ejecución diferente mediante las instrucciones jump (saltar) o branch (bifurcación). Al escribir programas en lenguaje de máquina, es necesario proporcionar enteros que especifican que Direcciones de memoria o constantes numéricas. Opcode es un código binario (patrón de bits) que define una operación. La simplicidad y uniformidad de los formatos de instrucción son comunes en los modernos RISC (reduced instruction-set computer, computadora con conjunto de instrucciones reducido). Las instrucciones jump (salto) o de tipo J provocan transferencia de control incondicional a la instrucción en la dirección especificada. Se introdujeron las instrucciones add y subtract. Dichas instrucciones trabajan en los registros que contienen palabras completas (32 bits). Las instrucciones lógicas operan en un par de operando sobre una base bit a bit. And, Or, Xor,Nor No hay instrucción subtract immediate correspondiente, dado que su efecto se puede lograr al añadir un valor negativo. Puesto que los MiniMIPS tienen un sumador de 32 bits, el operando inmediato de 16 bits se debe convertir a un valor equivalente de 32 bits antes de aplicarlo como entrada al sumador. Las instrucciones aritméticas add y sub tienen un formato que es común a todas las instrucciones ALU de dos operando. Por esto, el campo fn especifica la operación aritmética/lógica a realizar. Una diferencia clave entre las instrucciones andi, ori y xori y la instrucción addi es que el operando de 16 bits de una instrucción lógica es extendida 0 desde la izquierda para convertirla en formato de 32 bits para procesamiento. Los campos de una palabra se pueden extraer al operar AND la palabra con una máscara(mask) predefi nida, una palabra que tenga 1 en las posiciones de bit de interés y 0 en cualquier otra parte. Las instrucciones load y store transfieren palabras completas (32 bits) entre memoria y registros. El registro, que es el destino de datos para carga y fuente de datos para almacenar, se especifica en el campo rt de una instrucción de formato I. el offset se puede especificar como un entero absoluto o a través de un nombre simbólico que se definió anteriormente z e r o Instrucciones MiniMIPS lw y sw y sus convenciones de direccionamiento de memoria que permite el acceso simple a elementos de arreglos vía una dirección base y un offset La instrucción lui permite cargar un valor arbitrario de 16 bits en la mitad superior de un registro mientras su mitad inferior se fija en 0. jump simple, que causa que la ejecución del programa procede de la localidad cuya dirección numérica o simbólica se ofrece, en lugar de continuar con la siguiente instrucción en secuencia. Jump register (registro de salto), o jr, especifica un registro que retiene la dirección blanco de salto. direccionamiento seudodirecto se incrementa muy pronto en el ciclo de ejecución de la instrucción (antes de la decodificación y ejecución de la instrucción), Las instrucciones branch condicionales permiten transferir el control a una dirección específi ca cuando se satisface una condición de interés. branch básicas basadas en comparación para las que las condiciones constituyen un contenido de registro negativo y la igualdad o desigualdad de los contenidos de dos registros. Las instrucciones branch y jump se pueden usar para formar estructuras computacionales condicionales y repetitivas comparables a if-then (si-entonces) y while (mientras) de los lenguajes de alto nivel. El enunciado if-then Modo de direccionamiento (addressing mode) es el método que especifica la ubicación de un operando dentro de una instrucción. Direccionamiento implícito: El operando viene de, o resulta de ir a, un lugar predefi nido que no se especifica explícitamente en la instrucción. Direccionamiento inmediato: El operando se proporciona en la instrucción en sí misma . Direccionamiento por registro: El operando se toma de, o resulta colocado en, un registro específico. Direccionamiento base: El operando está en memoria y su ubicación se calcula al agregar unoffset (entero con signo de 16 bits) al contenido de un registro base específica co. Direccionamiento relativo al PC: Igual que el direccionamiento base, pero el registro siempre es el contador del programa y el offset se adiciona con dos 0 en el extremo derecho Direccionamiento seudodirecto: En el direccionamiento directo, la dirección del operando se proporciona como parte de la instrucción.

Upload: efrain-zrng

Post on 14-Jan-2017

287 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Arquitectura resumen capitulos 5 y 6 efrain saransig

INSTRUCCIONES Y

DIRECCIONAMIENTO

VISION ABSTRACTA

DEL HARDWARE FORMATOS DE

INSTRUCCION

ARITMETICA SIMPLE

E INSTRUCCIONES

LOGICAS

INSTRUCCIONES

LOAD Y STORE

INSTRUCCIONES

JUMP Y BRANCH MODOS DE

DIRECCIONAMIENTO

La interfaz correspondiente para el hardware de

computadora es su arquitectura de conjunto de

instrucciones.

Cuando se familiarice con el conjunto de

instrucciones de una máquina, aprenderá otros

con menos esfuerzo.

MiniMIPS es un conjunto de instrucciones load/store (carga/almacenamiento), Ello significa que los elementos de datos se deben copiar o load (cargar) en registros .Antes de procesarlos.

Registros Localidades (locations) de memoria donde se pueden almacenar datos. Instrucciones de máquina que operan sobre y

almacenan datos en los registros o memoria.

Usan el esquema big-endian (Mayor terminación).

Una doubleword (doble palabra) ocupa dos registros o localidades de memoria consecutivos.

A un elemento de datos de 32 bits almacenado en un registro o localidad de memoria (con una dirección Divisible entre 4) se le conoce como Word (palabra).

Una instrucción de máquina

MiniMIPS típica es Add a la

forma compilada a=b+c.

Las secuencias de máquina o instrucciones en lenguaje ensamblador se ejecutan de arriba abajo a menos que se especifica que de manera explícita un orden de ejecución diferente mediante las instrucciones jump (saltar) o branch (bifurcación).

Al escribir programas en lenguaje de máquina, es necesario proporcionar enteros que especifican que Direcciones de memoria o constantes numéricas.

Opcode es un código binario (patrón de bits) que define una operación.

La simplicidad y uniformidad de los formatos de instrucción son comunes en los modernos RISC (reduced instruction-set computer, computadora con conjunto de instrucciones reducido).

Las instrucciones jump (salto) o de tipo J provocan transferencia de control incondicional a la instrucción en la dirección especificada.

Se introdujeron las instrucciones add y

subtract. Dichas instrucciones trabajan

en los registros que contienen palabras

completas (32 bits).

Las instrucciones lógicas operan en un

par de operando sobre una base bit a

bit.

And, Or, Xor,Nor

No hay instrucción subtract immediate correspondiente, dado que su efecto

se puede lograr al añadir un valor negativo.

Puesto que los MiniMIPS tienen un sumador de 32 bits, el operando inmediato de 16 bits se debe convertir a un valor equivalente de 32 bits antes de aplicarlo como entrada al sumador.

Las instrucciones aritméticas add y sub tienen un formato que es común a todas las instrucciones ALU de dos operando. Por esto, el campo fn

especifica la operación aritmética/lógica a

realizar.

Una diferencia clave entre las instrucciones andi, ori y xori y la instrucción addi es que el operando de 16 bits de una instrucción lógica es extendida 0 desde la izquierda para convertirla en formato de 32 bits para

procesamiento.

Los campos de una palabra se pueden extraer al operar AND la palabra con una máscara(mask) predefi nida, una palabra que tenga 1 en las posiciones de bit de

interés y 0 en cualquier otra parte.

Las instrucciones load y store transfieren palabras completas

(32 bits) entre memoria y registros.

El registro, que es el destino de datos para carga y

fuente de datos para almacenar, se especifica en el

campo rt de una instrucción de formato I.

el offset se puede especificar como un entero absoluto o a través de un nombre simbólico que se definió anteriormente

z

e

r

o

Instrucciones MiniMIPS lw y sw y sus convenciones de direccionamiento de memoria que permite el acceso simple a elementos de arreglos vía una dirección base y un offset

La instrucción lui permite cargar un valor arbitrario de 16 bits en la mitad superior de un registro mientras su mitad inferior se fija en 0.

jump simple, que causa que la ejecución del programa procede de la localidad cuya dirección numérica o simbólica se ofrece, en lugar de continuar con la siguiente instrucción en secuencia.

Jump register (registro de salto), o jr, especifica un registro que retiene la dirección blanco de salto.

direccionamiento seudodirecto se incrementa muy pronto en el ciclo de ejecución de la instrucción (antes de

la decodificación y ejecución de la

instrucción),

Las instrucciones branch condicionales permiten transferir el control a una dirección específi ca cuando se satisface una condición de interés.

branch básicas basadas en comparación para las que las condiciones constituyen un contenido de registro negativo y la igualdad o desigualdad de los contenidos de dos registros.

Las instrucciones branch y jump se pueden usar para formar estructuras computacionales condicionales y repetitivas comparables a if-then (si-entonces) y while (mientras) de los lenguajes de alto nivel. El enunciado if-then

Modo de direccionamiento (addressing mode) es el método que especifica la ubicación de un operando dentro de una instrucción.

Direccionamiento implícito: El operando viene de, o resulta de ir a, un lugar predefi nido que no se especifica explícitamente en la instrucción.

Direccionamiento inmediato: El operando se proporciona en la instrucción en sí misma .

Direccionamiento por registro: El operando se toma de, o resulta colocado en, un registro específico.

Direccionamiento base: El operando está en memoria y su ubicación se calcula al agregar unoffset (entero con signo de 16 bits) al contenido de un registro base específica co.

Direccionamiento relativo al PC: Igual que el direccionamiento base, pero el registro siempre es el contador del programa y el offset se adiciona con dos 0 en el extremo derecho

Direccionamiento seudodirecto: En el direccionamiento directo, la dirección del operando se proporciona como parte de la instrucción.

Page 2: Arquitectura resumen capitulos 5 y 6 efrain saransig

PROCEDIMIENTOS Y

DATOS

LLAMADAS DE

PROCEDIMIENTO SIMPLES

PARÁMETROS Y RESULTADOS USO DE LA PILA PARA

ALMACENAMIENTO DE

DATOS

TIPOS DE DATOS INSTRUCCIONES ADICIONALES

ARREGLOS Y APUNTADORES

Un procedimiento representa un subprograma que, cuando se llama (inicia, invoca) realiza una tarea específica, que quizás lleve a uno o más resultados, con base en los parámetros de entrada (argumentos) que se le proporciona y

retornos al punto de llamada.

Usar un procedimiento involucra la

siguiente secuencia de acciones:

1. Poner argumentos en lugares conocidos al procedimiento (registros $a0-$a3). 2. Transferir control al procedimiento y salvar la dirección de retorno (jal). 3. Adquirir espacio de almacenamiento, si se requiere, para uso del procedimiento. 4. Realizar la tarea deseada. 5. Poner los resultados en lugares conocidos al programa que llama (registros $v0-$v1). 6. Regresar el control al punto de llamada (jr).

Con cuidado adecuado,también se pueden usar los registros $v0 y $v1 para pasar parámetros a un procedimiento, lo que, en consecuencia, permite pasar hasta seis parámetros a un procedimiento

sin usar la pila.

Un mecanismo común para salvar cosas o hacer espacio para datos temporales que requiere un procedimiento es el uso de una estructura de datos dinámicos conocida como stack (pila).

Los elementos de datos se añaden a la pila al empujarlas en la pila y se recuperan al sacarlos. Las operaciones push (empujar) y pop (sacar)

La pila es una estructura de datos dinámicos en la que los datos se pueden colocar y recupera en orden last-in, fi rst-out (último en

entrar, primero en salir).

Los datos dinámicos del programa y la pila pueden crecer en tamaño hasta la memoria máxima disponible.

Aun cuando técnicamente una pila es una estructura de datos last-in, fi rst-out, de hecho se puede tener acceso a cualquier elemento dentro de la pila si se conoce su orden relativo desde arriba.

Antes de una llamada de procedimiento, el programa llamante empuja los contenidos de cualesquier registros que necesite salvar en lo alto de la stack y sigue esto con cualesquiera argumentos adicionales para el procedimiento.

Cada procedimiento en una secuencia anidada deja perturbada la parte de la pila que pertenece a los llamadores previos y usa la pila que comienza conla rendija vacía sobre la entrada a la que se apunta

En consecuencia, un procedimiento que usa la pila mediante la modificación del apuntador de pila debe salvar el contenido de éste en el principio y, al fi nal, restaurar $sp a su estado original.

Tamaños de datos usados de manera común son halfword (media palabra) (16 bits) y quadword (cuádruple palabra) (128 bits).

Entero con signo. Entero sin signo Número en punto flotante. Cadena de bits.

Un uso importante para elementos de datos con tamaño de byte es representar los símbolos de un alfabeto que consiste de letras (mayúsculas y minúsculas), dígitos, signos de puntuación y otros símbolos necesarios.

La instrucción load byte, al igual que muchas otras instrucciones con propiedades similares, tendrá dos versiones, para valores con signo y

sin signo.

Índice: Usar un registro que retenga el índice i e incremente el registro en cada paso para efectuar el movimiento del elemento i de la lista al elemento i _ 1.

Tratar con los apuntadores es conceptualmente más difícil y proclive al error, mientras que el uso de índices de arreglo aparece más natural y, por ende, es más fácil de entender. De este modo, usualmente no se recomienda el uso de apuntadores sólo para mejorar la efi ciencia del programa.

Apuntador: Usar un registro que apunta al (retiene la dirección de) elemento de lista que se examina y actualizarlo en cada paso para apuntar al siguiente elemento.

La instrucción multiplicar (multiply) (mult) representa una instrucción en formato R que coloca el producto doble palabra de los contenidos de dos registros en los registros Hi (mitad superior) y Lo (mitad inferior).

La instrucción div calcula el resto y el cociente de los contenidos de dos registros fuente, y los coloca en los registros especiales Hi y Lo, respectivamente.

Las representaciones de máquina de estas instrucciones

son idénticas a las de las versiones con signo