6. Set de Instrucciones y Tipos de Direccionamiento

download 6. Set de Instrucciones y Tipos de Direccionamiento

of 13

Transcript of 6. Set de Instrucciones y Tipos de Direccionamiento

ESCUELA POLITECNICA NACIONAL Facultad de Ingeniera de Sistemas Informticos y de Computacin Materia: Compiladores y Lenguajes Cdigo: Grupo: Tema: Informe del Primer Bimestre Grupo de Trabajo Nmero Integrantes:

Fecha de Entrega: Periodo Lectivo 2011- 2011

1. TTULO SET DE INSTRUCCIONES Y TIPOS DE DIRECCIONAMIENTO. 2. OBJETIVO Reconocer la teora relacionada a lo que es un el set de instrucciones de una mquina y realizar un breve repaso de los conjuntos de instrucciones. 3. MARCO TERICO SET DE INSTRUCCIONES El set de instrucciones, tambin conocido como conjunto de instrucciones, repertorio de instrucciones juego de instrucciones o ISA (Instruction Set Architecture Arquitectura del Conjunto de Instrucciones) es una especificacin para que el CPU pueda trabajar, aunque tambin puede un conjunto de comandos implementados en un diseo particular de un CPU. Adems, es posible que procesadores de un diseo diferente tengan un set de instrucciones igual. Se puede usar el set de instrucciones para distinguir las caractersticas de la microarquitectura, que son elementos y tcnicas para implementar el conjunto de instrucciones, por ejemplo las microinstrucciones y el sistema cach. Existen 3 tipos de sets: CISC (Complex Instruction Set Computer) RISC (Reduced Instruction Set Computer) SISC (Simple Instruction Set Computing)

El lenguaje mquina est construido por un set de instrucciones (estados discretos). En la arquitectura de procesamiento, una instruccin puede especificar:

Registros particulares para operaciones aritmticas, de direccionamiento o de control Ubicaciones particulares de memoria Modos de direccionamiento para interpretar operandos

Estas son las instrucciones de las que se crean otras ms complejas. Muchas o pocas de las operaciones disponibles incluidas en la mayora de conjuntos son:

Desplazamiento: o Establecer un registro a un valor constante. o Mover datos desde una posicin de memoria a un registro y viceversa. Esto se realiza para obtener datos para operaciones matemticas y su almacenamiento. o Leer y escribir datos desde dispositivos de hardware. Operaciones matemticas: o Sumar, restar, multiplicar o dividir dos registros y colocar el resultado en alguno de ellos. o Realizar operaciones bit a bit, teniendo el AND y el OR de cada bit en un par de registros, o el NOT de cada bit en un registro.

Comparar dos valores que se encuentren en registros (por ejemplo, si son iguales o si uno es mayor que otro). Afectan al flujo de programa: o Saltar a otra posicin del programa y ejecutar instrucciones all. o Saltar a otra posicin si se cumple cierta condicin. o Saltar a otra posicin, pero salvando la posicin actual para poder volver (realizar una llamada, por ejemplo call printf).

o

Algunos ejemplos de instrucciones complejas son:

Ahorro de registros en la pila Mover grandes bloques de memoria Complejas operaciones and/or con aritmtica de coma flotante Instrucciones que combinan ALU con un operando de la memoria ms que de registros.

Dependiendo de las exigencias y necesidades, un set de instrucciones puede ser ms simple (para mayor velocidad, un procesador reducido y consumo reducido de energa) o ms complejo (para optimizar operaciones comunes, mejorar la memoria o eficiencia del cach y simplificar la programacin). Implementacin del set de instrucciones El set de instrucciones se puede implementar de varias maneras, obtenindose el mismo resultado. Dependiendo del tipo de implementacin, tambin se pueden obtener diferentes respuestas como en el consumo de energa, la velocidad de respuesta, etc. El ISA tambin puede emularse mediante un software, aunque como es obvio la ejecucin es ms lenta que al realizarlo con el set original. Diseo del set de instrucciones Cuando se disea un set de instrucciones, se debe tener en cuenta dos aspectos muy importantes La densidad del cdigo.- en las primeras computadoras se tena un espacio de memoria limitado, por lo que la densidad del cdigo era realizada minuciosamente; as el tamao combinado de todas las instrucciones necesit realizar una tarea particular, la densidad del cdigo, era una caracterstica importante de cualquier sistema de instruccin. Las computadoras con alta densidad del cdigo tambin tenan a menudo instrucciones complejas para la entrada del procedimiento, los retornos parametrizados, los lazos etc. Sin embargo, las "instrucciones CISC" combinan simplemente una operacin bsica de la ALU, tal como " add", con el acceso de uno o ms operandos en memoria (usando modos de direccin tales como directo, indirecto, indexado). Ciertas arquitecturas pueden permitir dos o tres operandos (incluido el resultado) directamente en memoria o pueden permitir realizar funciones tales como el incremento automtico del puntero. RISC, fueron los primeros implementados con profundidad en el perodo de rpido crecimiento de las memorias de subsistemas, se reduce el cdigo con el fin de

simplificar el circuito de aplicacin y con ello tratar de aumentar el rendimiento a travs de las frecuencias de reloj ms elevadas y el uso de ms registros. Las instrucciones RISC suelen realizar slo una operacin, como una "suma" de registros o una "carga" de una posicin de memoria en un registro, tambin suelen utilizar una longitud de instrucciones fijas, mientras que un conjunto de instrucciones tpicas CISC tiene instrucciones muchos ms cortas que esta longitud fija. Las instrucciones de longitud fija son menos complicadas de manejar que las instrucciones de ancho variable, por varias razones (por ejemplo: no tener que comprobar si una instruccin se extiende a ambos lados de una lnea de cach o el lmite de memoria virtual de la pgina), y por lo tanto algo ms fcil de optimizar la velocidad. Sin embargo, como los equipos RISC normalmente requieren ms y ms para implementar las instrucciones que ejecutan una determinada tarea, hacen menos ptimo el uso del ancho de banda y de la memoria cach. El nmero de operandos.- se puede clasificar el set de instrucciones segn el nmero de operandos (en los ejemplos que siguen, a, b y c se refieren a celdas de memoria, mientras que reg1 y sucesivos se refieren a los registros de la mquina): o 0-operando (mquina de pila): todas las operaciones aritmticas se ejecutan en la parte superior de una o dos posiciones de la pila, push y pop son las instrucciones utilizadas para acceder a la memoria. 1-operando (mquina de una direccin): tambin llamadas mquinas de acumulador, incluida en la mayora de las primeras computadoras; la mayora de instrucciones especifican un operando explcito a la derecha (un registro, una posicin de memoria, o una constante) y un operando a la izquierda. 2-operando: la mayora de las mquinas CISC y RISC entran en esta categora: CISC load a, reg1, add reg1, b; store reg1, c RISC - cargas que requieren la memoria explcita, las instrucciones seran: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c. 3-operando: permite una mejor reutilizacin de los datos: CISC - bien una sola instruccin: add a, b, c, o ms generalmente: move a,reg1; add reg1,b,c como la mayora de las mquinas se limitan a dos operandos de memoria. RISC Debido a la gran cantidad de bits necesarios para codificar los tres registros, este esquema no suele estar disponible en los procesadores RISC con pequeas instrucciones de 16 bits: load a,reg1; load b,reg2; add reg1+reg2>reg3; store reg3,c; ms operandos, algunas mquinas CISC permiten una variedad de modos de direccionamiento que permiten ms de 3 operandos (registros o accesos a memoria), como el VAX "POLY", instruccin de evaluacin de polinomio.

o

o

o

Caractersticas del set de instrucciones

Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable o decidible). Eficiente: Que permita alta velocidad de clculo sin exigir una elevada complejidad en su UC y ALU y sin consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en un tiempo razonable minimizando el uso de los recursos.

Autocontenidas: Esto es, que contengan en s mismas toda la informacin necesaria para ejecutarse. Independientes: Que no dependan de la ejecucin de alguna otra instruccin.

Tipos de instrucciones y ejemplos

Transferencia de datos: Copian datos de un origen a un destino, sin modificar el origen y normalmente sin afectar a los flags o indicadores de condicin. Pueden transferir palabras, fracciones de palabras (bytes, media palabra) o bloques completos de n bytes o palabras.

Estas operaciones pueden ser: registro - registro registro - memoria memoria - registro memoria - memoria

Nemotcnicos ms frecuentes:

move: copia el contenido de un registro(o memoria) a otro. store: copia el contenido de un registro a memoria. load: copia el contenido de una posicin de memoria a un registro. move block: copia un bloque de datos de una posicin de memoria a otra. move multiple: copia del origen en varias posiciones de memoria. exchange: intercambia el contenido de dos operandos. clear: pone a 0 el destino. (todos los bits) set: pone a 1 el destino. (todos los bits) push: introduce un dato en la cabecera de la pila. (indicada por el SP) pop: saca un dato de la cabecera de la pila. (indicada por el SP) Instrucciones aritmticas: Son efectuadas por la ALU y suelen cambiar los flags o indicadores de condicin.

Nemotcnicos ms frecuentes: add: Suma. add with carry: Suma con acarreo. subtract: Resta. subtract with borrow: Resta teniendo en cuenta el adeudo anterior. increment: incrementa en 1 un valor. decrement: decremento en 1 un valor. multiply: multiplica. divide: divide. extend: aumenta el operando de tamao. negate: cambia de signo. absolute: valor absoluto. Pueden tener instrucciones para tratar con nmeros en BCD e incluyen operaciones en coma flotante, lo cual se identifica con una 'f' antes del nombre del nemotcnico como por ejemplo:

Fabsolute Instrucciones de comparacin: Preceden una instruccin de bifurcacin condicional y modifican los flags. Las instrucciones de salto condicional no dependen de este repertorio, ya que lo nico que hace el salto condicional es consultar los flags y salta si precede, pero no depende de ninguna instruccin de comparacin. Nemotcnicos ms frecuentes:

compare: Resta los dos operandos pero no almacena el resultado, solo modifica los flags. test: compara un cierto valor especificado con el 0. Instrucciones lgicas: Realizan operaciones booleanas "bit a bit" entre dos operandos. Como las aritmticas tambin modifican los flags.

Nemotcnicos ms frecuentes:

and: el "y" lgico. or: el "o inclusivo" lgico. xor: el "o exclusivo" lgico. not: la negacin lgica. (complemento a 1, no confundir con el cambio de signo "negate" que es el complemento a 2) Instrucciones de Desplazamiento: Pueden ser aritmtico o lgico y pueden incluir o no rotaciones. Pueden ser de izquierda a derecha.

Nemotcnicos ms frecuentes:

shift: desplazamiento aritmtico o lgico. rotate: rotacin con o sin acarreo. Instrucciones de bits: Comprueban un bit del operando y su valor lo reflejan en el indicador de cero. Pueden poner un bit a 0 o complementarlo.

Nemotcnicos ms frecuentes: bit test: comprueba un bit. bit clear: comprueba un bit y lo pone a 0. bit set: comprueba un bit y lo pone a 1. Instrucciones de control: Permiten modificar la secuencia normal de ejecucin de un programa, puede hacerse por salto condicional relativo o absoluto. Se clasifican en cuatro grupos: Salto incondicional Salto condicional Llamada a subrutinas Gestin de las interrupciones saltos: Pueden ser condicionales o incondicionales, se suelen especificar como jump o brantch, y en el caso de los condicionales se suele llamar jcond o bcond donde cond es

una o ms letras que indican la condicin que ha de cumplirse para que el salto se produzca. Incondicional: salta sin comprobar ninguna condicin.

Nemotcnicos ms frecuentes: jump o brantch Condicional: salta si la condicin se cumple.

Nemotcnicos ms frecuentes: jcond o bcond

Llamadas a subrutinas: Invoca la ejecucin de funciones anteriormente definidas.

Nemotcnicos ms frecuentes: call (llamada) y ret (retorno)

Gestin de interrupciones: Se usan para llamar a las rutinas de servicio de interrupcin y esto se puede hacer por hardware o bien por software. Necesita una instruccin similar a return para retornar al contexto anterior pero restableciendo el estado de la mquina, para no afectar a la aplicacin a la cual se interrumpi (iret). Instrucciones de E/S: Son instrucciones de transferencia salvo que el origen/destino de dicho flujo es un puerto de un dispositivo de E/S. Estas instrucciones pueden darse mediante dos alternativas: o E/S "mapeada" en memoria: Los perifricos tienen direcciones asignadas de la MP por lo que no se necesitan instrucciones especiales y las operaciones se realizan con las ya vistas, como son: load, store y move. E/S independiente: Necesitan unas instrucciones especiales para indicarle al procesador que nos estamos refiriendo al mapa de direcciones de E/S, ya que este mapa y el mapa de memoria son disjuntos.

o

Nemotcnicos ms frecuentes:

input o read: Permite leer informacin de un puerto y trasladarla a memoria principal. output o write: Permite escribir informacin en un puerto de un dispositivo. test i/o: Lee informacin de control de un perifrico. control i/o: Enva informacin de control hacia un perifrico.

Instrucciones de control y miscelneas: Nemotnicos ms frecuentes:

halt: Detiene la ejecucin del programa hasta que una interrupcin arranca otro programa. wait: Sirve para deterner la ejecucin de un programa hasta que sucede un determinado evento que no es una interrupcin (otra condicin externa al primer programa). nop: No realiza ninguna operacin, sirve para rellenar huecos en un programa o temporizar esperas. enable: Habilita las interrupciones.

disable: Deshabilita las interrupciones. test and set: Se utiliza para la implementacin de la exclusin mutua, esto es, que un procesador no pueda acceder a un determinado recurso que est siendo usado por otro procesador en ese mismo momento.

Listado de conjuntos de instrucciones

4004, 4040 6800 (Motorola) Alpha (DEC) ARM (Advanced RISC Machines) DLX (John Hennessy y David Patterson) IA-64 (Intel) MIPS (MIPS Computer Systems) PA-RISC (HP) POWER (IBM) PowerPC (Alianza AIM) SPARC (Sun Microsystems) Z8, eZ8, etc. Burroughs B5000/B6000/B7000 series eSi-RISC Mico32 PA-RISC IBM 700/7000 series System/360 y sucesores siguientes compatibles o System/370 o System/390 z/Architecture Power Architecture PDP-11 SPARC SuperH Tricore Transputer UNIVAC 1100/2200 series VAX x86 IA-32 (i386, Pentium, Athlon) x86-64 (64-bit superset of IA-32) EISC (AE32K)

TIPOS DE DIRECCIONAMIENTO Son las formas de especificar un operando en una instruccin, esto en lenguaje ensamblador. El tipo de direccionamiento especifica la forma de encontrar la direccin de memoria efectiva de un operando mediante el uso de la informacin contenida en registros y/o constantes.

Tipos de direccionamiento Implcito.- no es necesario especificar la direccin del operando, pues viene contenida en el mismo cdigo de operacin. Un ejemplo de este tipo de direccionamiento lo podemos encontrar en la arquitectura de acumulador (AC) donde siempre hay un parmetro implcito y este es el AC. Inmediato.- la instruccin contiene al operando. La instruccin, en vez del campo de direccin, contiene un campo de operando. Son tiles para inicializar un registro de valor constante. Cuando el campo de direccin especifica un registro del procesador, la instruccin se dice que est en el modo de registro.

Directo.- el campo de operando de la instruccin contiene la direccin de memoria del operando. En este modo la direccin efectiva es igual a la parte de direccin de la instruccin. El operando reside en la memoria y su direccin es dada directamente por el campo de direccin de la instruccin. En una instruccin de tipo ramificacin el campo de direccin especifica la direccin de la rama actual.

Indirecto.- el campo de operando contiene la direccin efectiva del operando.

Absoluto.- El campo de operando contiene una direccin de memoria donde se encuentra la instruccin. De registro.- sirve para especificar operandos que estn en registros.

Indirecto mediante registros.- El campo de operando de la instruccin contiene un identificador de registro en el que se encuentra la direccin efectiva del operando. En este modo el campo de la direccin de la instruccin da la direccin en donde la direccin efectiva se almacena en la memoria. El control localiza la instruccin de la memoria y utiliza su parte de direccin para accesar la memoria de nuevo para leer una direccin efectiva. Unos pocos modos de direccionamiento requieren que el campo de direccin de la instruccin sea sumado al control de un registro especificado en el procesador. La direccin efectiva en este modo se obtiene del siguiente clculo:Dir. Efectiva = Dir. De la parte de la instruccin + Contenido del registro del procesador

De desplazamiento.- combina el modo directo e indirecto mediante registros. De pila.- Se utiliza cuando el operando est en memoria y en la cabecera de la pila. Este direccionamiento se basa en las estructuras denominadas Pila (tipo LIFO), las cuales estn marcados por el fondo de la pila y el puntero de pila (*SP), El puntero de pila apunta a la ltima posicin ocupada. As, como puntero de direccionamiento

usaremos el SP. El desplazamiento ms el valor del SP nos dar la direccin del objeto al que queramos hacer referencia. En ocasiones, si no existe C. de desplazamiento solo se trabajara con la cima de la pila. Este tipo de direccionamiento nos aporta flexibilidad pero por el contrario, es mucho ms complejo que otros tipos estudiados ms arriba. Respecto a un registro base.- Este modo de direccionamiento es muy usado por los ensambladores cuando se llaman a las funciones (para acceder a los parmetros apilados en la pila, valga la redundancia). Consiste, al igual que el indirecto a travs de registro, en calcular la EA (Effective Address) como la suma del contenido del registro base y un cierto desplazamiento (u offset) que siempre ser positivo. Esta tcnica permite cdigos reentrantes y acceder de forma fcil y rpida a posiciones cercanas de memoria.

EA = RB+offset RB = registro base offset = desplazamiento RB se comporta como una direccin de memoria a la que se le sumar el desplazamiento

Respecto a un registro ndice.- la nica diferencia con el anterior es que el contenido del registro ndice el que indica el desplazamiento que se produce a partir de una direccin de memoria que se pasa tambin como argumento a la orden que utiliza este modo de direccionamiento. Aunque en esencia son dos modos equivalentes. La EA se calcula como la suma del contenido del registro ndice y una direccin de memoria:EA = RI+DM

RI = registro ndice DM = direccin de memoria RI se comporta como un offset

Indexado respecto a una base.- se trata de una combinacin de los dos anteriores y consiste en calcular la direccin efectiva como:

EA = RI+RB+DM Las siglas significan lo mismo que en el caso anterior

Respecto al contador del programa.- direcciona una posicin de memoria usando como registro base el contador de programa; la diferencia con el anterior es que el offset puede ser negativo. Indexado con autoincremento / autodecremento.- se diferencia del indexado respecto a una base en que permite un incremento o decremento de la posicin final o el registro ndice segn los siguientes casos: o Indexado con autopreincremento: Incrementa el registro ndice primero (se incrementa un valor, segn el tamao del objeto direccionado) y luego calcula la EA al igual que el direccionamiento indexado. o Indexado con autoposincremento: Calcula la direccin efectiva y despus incrementa esta. o Indexado con autopredecremento: Decrementa el registro ndice y despus calcula la direccin efectiva.

o

Indexado con autoposdecremento: Calcula la direccin efectiva y despus decrementa esta.

Instruccin de salto con direccionamiento absoluto.- carga en el contador de programa (PC) el valor especificado en la orden de salto. Instruccin de salto con direccionamiento relativo.- se diferencia del anterior en que el valor cargado es relativo al PC. Paginado: La memoria se encuentra actualmente dividida en pginas (bloques de igual longitud).Para obtener las direcciones necesitamos: Indicador de pgina (IP): en un registro especfico o de propsito general de la mquina. Direccin de la palabra (DP): en el campo CD de la instruccin. As, concatenando ambas partes obtenemos la direccin completa.

Segmentado: La memoria se divide en porciones cuyos tamaos son variables. As, para acceder a ellos se tiene una tabla de segmentos que contiene la direccin del comienzo y del final de cada segmento en memoria. Usar este tipo de direccionamiento tiene como ventajas que se puede definir segmentos de tamao arbitrario. Por otro lado, esta misma ventaja, el fraccionamiento de memoria es uno de sus problemas.

4. CONCLUSIONES El set de instrucciones puede implementarse mediante varios mtodos, pero igual se pueden obtener los mismos resultados, esto es una ventaja, dependiendo de las necesidades y condiciones bajo los que se est trabajando. La densidad de cdigo de un set de instrucciones puede ser o no complejo, por ello sus instrucciones pueden ser simples o de un carcter complejo, esto influye en el rendimiento de ciertos procesos del computador, como por ejemplo el rendimiento de la batera. Existe una gran cantidad de tipos de direccionamiento, esto nos da una idea de que existe una infinidad de formas que recibe instrucciones (en lenguaje ensamblador) una mquina.

5. RECOMENDACIONES Un set de instrucciones puede ser extenso y variado, al igual que la materia de los tipos de direccionamiento; si se desea tener un mayor conocimiento acerca de estos, consultar ya que la informacin existente en la web es muy extensa y variada.

6. BIBLIOGRAFA Set de instrucciones o o http://es.wikipedia.org/wiki/Conjunto_de_instrucciones http://www.todopic.com.ar/utiles/introduccion_al_assembler.pdf

o o

http://www.herrera.unt.edu.ar/arqcom/diapositivas/Tema04%202011.pdf http://www.sc.ehu.es/sbweb/webcentro/automatica/web_8051/Contenido/set_8 051/set8051.htm

Tipos de direccionamiento o o o o http://www.see-my-ip.com/tutoriales/direccionamiento_ip.php http://es.wikipedia.org/wiki/Modos_de_direccionamiento http://isa.umh.es/asignaturas/sea/practicas2C/P2/PRACTICA2.pdf http://apuntes.rincondelvago.com/modos-de-direccionamiento.html