Sei sulla pagina 1di 8

Conjunto de instrucciones

1
Conjunto de instrucciones
Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del ingls Instruction
Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificacin que detalla las instrucciones que
una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un
diseo particular de una CPU. El trmino describe los aspectos del procesador generalmente visibles a un
programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las
interrupciones, entre otros aspectos.
Existe principalmente de 3 tipos: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set
Computer) y SISC (Simple Instruction Set Computing).
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de caractersticas
de la microarquitectura, que son los elementos y tcnicas que se emplean para implementar el conjunto de
instrucciones. Entre estos elementos se encuentran las microinstrucciones y los sistemas de cach.
Procesadores con diferentes diseos internos pueden compartir un conjunto de instrucciones; por ejemplo, el Intel
Pentium y AMD Athlon implementan versiones casi idnticas del conjunto de instrucciones x86, aunque tienen
diseos diferentes.
El lenguaje mquina
El lenguaje mquina est construido a partir de los estados discretos o instrucciones. En la arquitectura de
procesamiento, una instruccin dada puede especificar:
Registros particulares para operaciones aritmticas, de direccionamiento o de control.
Ubicaciones particulares de memoria
Modos de direccionamiento para interpretar operandos
Las operaciones ms complejas se construyen a partir de estas, que(en una mquina Von Neumann) se ejecutan
secuencialmente, o segn el control de flujo.
Muchas o pocas de las operaciones disponibles incluidas en la mayora de conjuntos son:
Desplazamiento
Establecer un registro a un valor constante
Mover datos desde una posicin de memoria a un registro y viceversa. Esto se realiza para obtener datos para
operaciones matemticas y su almacenamiento.
Leer y escribir datos desde dispositivos de hardware
Operaciones matemticas
Sumar, restar, multiplicar o dividir dos registros y colocar el resultado en alguno de ellos.
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
Saltar a otra posicin del programa y ejecutar instrucciones all.
Saltar a otra posicin si se cumple cierta condicin
Saltar a otra posicin, pero salvando la posicin actual para poder volver (realizar una llamada, por ejemplo
call printf)
Algunos ordenadores incluyen instrucciones "complejas". Dichas instrucciones pueden tomar muchas instrucciones
en otros equipos. Estas se caracterizan por instrucciones que necesitan varios pasos, como el control de mltiples
unidades funcionales. Algunos ejemplos son:
Conjunto de instrucciones
2
Ahorro de registros en la pila
Mover grandes bloques de memoria
Complejas operaciones and/or con aritmtica de coma flotante, tales como el seno o la raz cuadrada.
Instrucciones que combinan ALU con un operando de la memoria ms que de registros.
Un tipo complejo de la instruccin que ha llegado a ser particularmente popular recientemente es SIMD (Single
Instruction, Multiple Data), una operacin que realice la misma operacin aritmtica en pedazos mltiples de datos
al mismo tiempo. SIMD tienen la capacidad de manipular vectores y matrices grandes en tiempo mnimo. Las
instrucciones de SIMD permiten la paralelizacin fcil de los algoritmos implicados comnmente en sonido, imagen,
y el proceso video. Varias implementaciones de SIMD se han trado al mercado bajo nombres comerciales tales
como MMX, 3DNow! y AltiVec.
El diseo de sistemas de instruccin es una edicin compleja. Haba dos etapas en la historia para el
microprocesador. El primer era el CISC (Complex Instruction Set Computer) que tena muchas instrucciones
diferentes. En los aos 70 IBM hicieron la investigacin y encontraron que muchas instrucciones en el sistema
podran ser eliminadas. El resultado era el RISC (Reduced Instruction Set Computer), una arquitectura que utiliza un
sistema ms pequeo de instrucciones. Un conjunto de instruccin ms simple puede ofrecer el potencial para
velocidades ms altas, tamao reducido del procesador, y consumo de energa reducido. Sin embargo, un conjunto
ms complejo puede optimizar operaciones comunes, mejorar memoria/eficiencia de cache, o simplificar la
programacin.
Implementacin del conjunto de instrucciones
Cualquier conjunto de instrucciones se puede implementar de varias maneras. Todas las maneras de implementar un
conjunto de instrucciones dan el mismo modelo programado, y todas pueden hacer funcionar los mismos ejecutables
binarios. Las varias maneras de implementar un conjunto de instrucciones dan diversas compensaciones entre el
coste, el funcionamiento, el consumo de energa, el tamao, el etc.
Al disear microarquitecturas, los ingenieros usaron bloques de circuitos electrnicos duramente-conectados
(diseado a menudo por separado) por ejemplo, los multiplexores, los contadores, los registros, ALUs etc. Un cierto
tipo del lenguaje de transferencia de registros es a menudo usado para describir la codificacin y la secuencia de
cada instruccin de ISA usando esta microarquitectura fsica.
Hay tambin algunos nuevos diseos de CPU que compilan el conjunto de instruccin a una RAM escribible o
FLASH dentro de la CPU (tal como el procesador Recursiv y el Imsys Cjip), o FPGA (computacin reconfigurable).
Western Digital MCP-1600 es un ejemplo antiguo, usando una ROM dedicada, separada del microcdigo.
ISA se puede tambin emular en software por un intrprete. Naturalmente, debido a la interpretacin de overhead,
es ms lento que ejecutar programas directamente sobre el hardware emulado. Hoy, es prctica para los vendedores
de nuevos ISAs o microarchitectures poner emuladores del software a disposicin de los desarrolladores de
programas informticos antes de que la implementacin del hardware est lista.
Los detalles de la implementacin tienen una influencia fuerte en las instrucciones particulares seleccionadas para el
conjunto de instruccin. Por ejemplo, muchas implementaciones de la instruccin pipline permiten solamente una
carga de memoria (load) o almacn en memoria (store) por instruccin, llevando a carga-almacena arquitectura
(RISC). Por otro ejemplo, algunas maneras de implementar la instruccin pipline llevaron a una ranura de retardo.
La demanda de procesamiento de seal digital de alta velocidad han empujado en el sentido contrario, forzando la
implementacin de instruccin de manera particular. Por ejemplo, para realizar los filtros digitales es bastante
insuficiente, la instruccin del MAC en un procesador tpico de seal digital (DSP) se debe implementar usando una
arquitectura de Harvard que pueda traer una instruccin y dos palabras de datos simultneamente, y requiere un solo
ciclo.
Conjunto de instrucciones
3
Diseo del conjunto de instrucciones
La densidad del cdigo
En computadoras antiguas, la memoria del programa era costosa, as que minimizar el tamao de un programa para
asegurar que va a caber en la memoria limitada era a menudo central. 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, "
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.
Las computadoras mnimas del conjunto de instrucciones (MISC) son una forma de mquina apilada, donde hay
pocas instrucciones separadas (16-64), para poder caber instrucciones mltiples en una sola palabra de mquina.
stos tipo de ncleos llevan a menudo poco silicio para implementarse, as que pueden ser observadas fcilmente en
un FPGA o en una forma multinucleo. La densidad del cdigo es similar al RISC; la densidad creciente de la
instruccin es compensada requiriendo ms de las instrucciones primitivas de hacer una tarea.
Nmero de operandos
El conjunto de instrucciones puede ser clasificado por el nmero mximo de operandos explcitamente especificados
en las instrucciones. (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).
0-operando, tambin llamada 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: push a, push b,
add, pop c.
1-operando (mquinas de una direccin), tambin llamadas mquinas de acumulador, incluida en la mayora de las
primeras computadoras y muchos microcontroladores pequeos: 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:
load a, add b, store c.
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
Conjunto de instrucciones
4
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.
Caractersticas que debe tener un conjunto de instrucciones
Las caractersticas que se pretende que tenga un conjunto de instrucciones son cuatro, principalmente:
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.
Se puede comprobar que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones:
-> escritura
-> mover a la izquierda una posicin y leer
-> mover a la derecha una posicin y leer
-> parar
En esta idea se basan las arquitecturas RISC, no obstante, con este conjunto no se puede conseguir la eficiencia del
repertorio de instrucciones por lo que en la prctica el conjunto suele ser ms amplio en aras de conseguir un mejor
rendimiento, tanto en uso de recursos como en consumo de tiempo.
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 destinto. (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)
Conjunto de instrucciones
5
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: decrementa 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: Suelen preceder a una instruccin de bifurcacin condicional y modifican los
flags. No hay que pensar que las instrucciones de salto condicional 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. (de hecho cualquier operacin aritmtica realizada anteriormente a un salto condicional puede
provocar que este "salte").
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:
Conjunto de instrucciones
6
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:
->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.
Nemotcnicos ms frecuentes:
input o read: Pemite 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.
Conjunto de instrucciones
7
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.
Se usan como semforos, esto es, se declara una variable entera que tendr el valor 0 si el recurso esta libre y 1 si
est siendo utilizado, de manera que si un procesador comprueba y el semforo est en 1 tendr que esperar hasta
que este cambie a 0. (1 = s.rojo y 0 = s.verde)
Fuentes y contribuyentes del artculo
8
Fuentes y contribuyentes del artculo
Conjunto de instrucciones Fuente: http://es.wikipedia.org/w/index.php?oldid=73650912 Contribuyentes: Aks, Al Lemos, Alonduro, Alxking, Avm, Biasoli, Cinevoro, Danjukass, Digigalos,
Eldhion, Elas, Enrique r25, Etorralbo90, Ezarate, Filipo, GermanX, Grillitus, Guibuu, Ihssanos, Josemarinalcaide, Klyone, Lobillo, LordT, Lucien leGrey, Marco-regu, MartinDM,
PabloCastellano, Porao, Pybalo, Sabbut, Savh, Superzerocool, TorQue Astur, 23 ediciones annimas
Licencia
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/

Potrebbero piacerti anche