Está en la página 1de 14

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

CENTRO REGIONAL DE PANAMÁ OESTE

FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES

Organización y arquitectura de computadora

REPERTORIO DE INSTRUCCIONES

PROFESOR:

Bolívar Quijada

INTEGRANTES:

Jonathan Bultrón

Efigenio Rodríguez

Sergio González

GRUPO:

9IL131

FECHA DE ENTREGA

17/10/2018

II SEMESTRE

2018
Características de una instrucción
Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o
ISA (del inglés Instruction Set Architecture, Arquitectura del Conjunto de
Instrucciones) es una especificación que detalla las instrucciones que una CPU de un
ordenador puede entender y ejecutar, o el conjunto de todos los comandos
implementados por un diseño particular de una CPU. El término 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 características de la microarquitectura, que son los elementos y
técnicas que se emplean para implementar el conjunto de instrucciones. Entre estos
elementos se encuentras las microinstrucciones y los sistemas de caché.
Procesadores con diferentes diseños internos pueden compartir un conjunto de
instrucciones; por ejemplo, el Intel Pentium y AMD Athlon implementan versiones
casi idénticas del conjunto de instrucciones x86, aunque tienen diseños internos
completamente opuestos.
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 energía, el tamaño,
el etc.
Al diseñar microarquitecturas, los ingenieros usaron bloques de circuitos electrónicos
“duramente-conectados” (diseñado a menudo por separado) por ejemplo l, los
multiplexores, los contadores, los registros, ALUs etc. Un cierto tipo del lenguaje de
transferencia de registros es a menudo usado para describir la codificación y la
secuencia de cada instrucción de ISA usando esta microarquitectura física.
Hay también algunos nuevos diseños de CPU que compilan el conjunto de instrucción
a una RAM escribible o FLASH dentro de la CPU (tal como el procesador Recursiv y
el Imsys Cjip), o FPGA (computación reconfigurable). Western Digital MCP-1600 es
un ejemplo antiguo, usando una ROM dedicada, separada del microcódigo.
ISA se puede también emular en software por un intérprete. Naturalmente, debido a
la interpretación de “overhead”, es más lento que ejecutar programas directamente
sobre el hardware emulado. Hoy, es práctica para los vendedores de nuevos ISAs o
microarchitectures poner emuladores del software a disposición de los desarolladores
de programas informáticos antes de que la implementación del hardware esté lista.
Los detalles de la implementación tienen una influencia fuerte en las instrucciones
particulares seleccionadas para el conjunto de instrucción. Por ejemplo, muchas
implementaciones de la instrucción “pipeline” permiten solamente una carga de
memoria (load) o almacén en memoria (store) por instrucción, llevando a carga-
almacena arquitectura (RISC). Por otro ejemplo, algunas maneras de implementar la
instrucción “pipeline” llevaron a una ranura de retardo.
La demanda de procesamiento de señal digital de alta velocidad ha empujado en el
sentido contrario- forzando la implementación de instrucción de manera particular.
Por ejemplo, para realizar los filtros digitales es bastante insuficiente, la instrucción
del MAC en un procesador típico de señal digital (DSP) se debe implementar usando
una arquitectura de Harvard que pueda traer una instrucción y dos palabras de datos
simultáneamente, y requiere un solo ciclo.
El funcionamiento de la CPU está determinado por las instrucciones que ejecuta
(instrucciones máquina o instrucciones de computador). El conjunto de instrucciones
se determina “repertorio de instrucciones”. Las siguientes son parte de este repertorio:
Conjunto de instrucciones que son entendidas por CPU.

 Códigos máquina.
 Binarias
Generalmente representadas en código ensamblador.
Las características del repertorio de instrucciones las describiremos a continuación
como elementos de una instrucción máquina.
 Código de operación.
 Referencia de datos fuente.
 Referencia al operando resultado.
 Referencia a la siguiente instrucción.

Representación de las instrucciones.

4 bits 6 bits 6 bits

Codop Ref. a operando Ref. a operando

Un formato de instrucciones sencillas de 16 bits


 ADD Sumar.
 SUB restar.
 MPY Multiplicar.
 DIV Dividir.
 LOAD Cargar datos a memoria

Con base a esto, tenemos diferentes tipos de instrucciones:
 De procesamiento de datos.
 De almacenamiento de datos.
 De transferencia de datos.
 De control.

Número de direcciones
El número de direcciones para una instrucción depende del diseño del CPU Van desde
una, dos, tres y hasta cuatro. En el caso de cuatro los elementos son: dos operadores,
un resultado y la dirección de la instrucción siguiente (en la mayoría de los casos viene
implícita). La definición del número de direcciones varía mucho pues si el número de
direcciones es de uno, esto implica una CPU menos compleja, instrucciones más
cortas, lo mismo ocurre si son de tres o cuatro va subiendo la complejidad.
Aspectos de diseño fundamentales en el diseño de un repertorio de instrucciones:
 Repertorio de operaciones
 Tipos de datos
 Formato de instrucciones

Tipos de operandos.
Adicionalmente, en lenguaje máquina, un operando es un valor (un argumento) con
el cual la instrucción, nombrada por un mnemónico, opera. El operando puede ser
un registro, una dirección de memoria, una constante literal, o una etiqueta. Un
ejemplo simple en la arquitectura PC es: MOV, DS, AX donde el valor en el operando
del registro AX debe ser movido al registro DS. Dependiendo de la instrucción, puede
haber cero, uno, dos o más operandos.
UN operando viene determinado por la operación que se realice con él.

Los operandos de las instrucciones pueden ser:

Registro De 8 o 16 bits en el 8086/80286, también de 32 bits en el80386. Por ejemplo:


AX -> Nombre del registro.
Memoria Puede ser un byte de memoria o una palabra de memoria. Se especifica
mediante una dirección, Por ejemplo: DS: [DI] -> El operando se halla en esa dirección.

Valor Inmediato Un número o una constante, Por ejemplo:(Dato) 0FF0H -> Por
defecto son decimales a no ser que se le coloque la H después del número para
indicarle que es hexadecimal.

Como las instrucciones máquina operan con datos Las categorías más importantes de
datos son:

 Números
 Caracteres
 Datos Lógicos
 Direcciones

Direcciones:
En las instrucciones de control de secuencia el operando es una dirección de
memoria de la instrucción a la que se salta. Pueden considerarse como números
enteros sin signo que se cargan en el contador de programa.

En la MIPS (Microprocessor without Interlocked Pipeline Stages) serán


números de 32 bits.

Ejemplo:

Formato: jr rs

Propósito: salta a una instrucción cuya dirección está en un registro.

Descripción: PC <- rs donde rs contendrá un dato de tipo dirección.

Caracteres:
No son más que códigos binarios utilizados para representar caracteres. Al
igual que los números, los caracteres se almacenan en los sistemas de cómputo
en datos binarios. Una de las representaciones más conocidas es el ASCII
Por ejemplo:
 ASCII de 8 bits.
 EBCDIC de 8 bits
Este último es generalmente utilizados por grandes computadoras como IBM.
MIPS no contienen instrucciones específicas para el tratamiento de caracteres.
Lo que es una facilidad del ensamblador para declarar cadenas de caracteres.

Números:

Tenemos tres tipos de datos numéricos:

 Entero o coma fijo:

Generalmente representados de dos formas:

 Con signo, en complemento a 2.


 Sin signo.

Entre algunas de sus instrucciones de suma en la MIPS tenemos:

 Formato ADD: rd, rs, rt

Proposito: sumar enteros de 32 bits. Si ocurre un


desbordamiento se produce una excepción. (interrupción
del programa).

 Formato ADDU: rd, rs, rt

Propósito: sumar enteros de 32 bits. Sin embargo, esta no


produce ninguna excepción.

 Punto flotante: es una forma de notación científica usada en los


microprocesadores con la cual se pueden representar números
racionales extremadamente grandes y pequeños de una manera muy
eficiente y compacta, y con la que se pueden realizar operaciones
aritméticas. El estándar para la representación en coma flotante es el
IEEE 754. En la representación binaria de coma flotante, el bit de mayor
peso define el valor del signo, 0 para positivo, 1 para negativo. Le siguen
una serie de bits que definen el exponente. El resto de los bits son la
parte significativa. Debido a que la parte significativa está generalmente
normalizada, en estos casos, el bit más significativo de la parte
significativa siempre es 1, así que no se representa cuando se almacena,
sino que es asumido implícitamente. Para poder realizar los cálculos ese
bit implícito se hace explícito antes de operar con el número en coma
flotante.

 En decimal: El sistema decimal es uno de los denominados sistemas


posicionales, utilizando un conjunto de símbolos cuyo significado
depende fundamentalmente de su posición relativa al símbolo coma (.),
denominado coma decimal, que en caso de ausencia se supone colocada
implícitamente a la derecha. Al ser posicional, el sistema decimal es un
sistema de numeración en el cual el valor de cada dígito depende de su
posición dentro del número. Para números enteros, comenzando de
derecha a izquierda, el primer dígito le corresponde el lugar de las
unidades, de manera que el dígito se multiplica por 100 (es decir 1) ; el
siguiente dígito corresponde a las decenas (se multiplica por 101); el
siguiente a las centenas (se multiplica por 102=100); el siguiente a las
unidades de millar (se multiplica por 103=1000) y así sucesivamente,
nombrándose este según su posición siguiendo la escala numérica
correspondiente (larga o corta). El valor del número entero es la suma
de los dígitos multiplicados por las correspondientes potencias de diez
según su posición.

Datos lógicos:
Los operadores lógicos nos proporcionan un resultado a partir de que se
cumpla o no una cierta condición, producen un resultado booleano, y sus
operandos son también valores lógicos o asimilables a ellos (los valores
numéricos son asimilados a cierto o falso según su valor sea cero o distinto de
cero). Esto genera una serie de valores que, en los casos más sencillos, pueden
ser parametrizados con los valores numéricos 0 y 1. La combinación de dos o
más operadores lógicos conforma una función lógica. Los operadores lógicos
son tres; dos de ellos son binarios, el último (negación) es unario. Tienen una
doble posibilidad de representación en el estándar C++ actual: la
representación tradicional que se indica a continuación, y la natural
introducida recientemente que se detalla más adelante.
 Y lógico && AND
 lógico || OR
 ¡Negación lógica! NOT
Las expresiones conectadas con los operadores && y || se evalúan de izquierda
a derecha, y la evaluación se detiene tan pronto como el resultado verdadero o
falso es conocido (muchos programas tienen una lógica que se basa en esta
propiedad).

Tipos de operaciones.
Los códigos de operación varían de una máquina a otra, pero las operaciones son las
mismas. Los operadores definen las operaciones que van a realizarse con los datos u
operandos. pueden clasificarse, dependiendo del tipo de operandos y de su resultado,
en operadores aritméticos, de cadenas de caracteres, de relación, lógicos o booleanos,
de bit y de conjuntos. Algunos operadores están sobrecargados, lo que significa que la
operación que representan depende del número o tipos de operandos sobre los que
actúa. De esta forma, por ejemplo, el operador + puede hacer referencia a la suma de
valores numéricos, a la concatenación de caracteres o a la unión de conjuntos
dependiendo del tipo de sus operandos. Los tipos de operaciones son:

 Transferencia de datos
 Aritméticas
 Lógicas
 Conversión
 Entrada/Salida
 Control del sistema
 Control de flujo

Transferencia de datos:
La instrucción de transferencia debe especificar varias cosas: Posiciones de los
operando, fuente y destino, longitud de los datos a transferir, modo de
direccionamiento para cada operando. En dicha transferencia se especifican los
siguientes puntos: origen, cantidad de datos y el destino. En la cual puede haber
distintas instrucciones para diferentes movimientos. Ejemplo: IBM S/390. O Por otro
lado se puede dar el caso de haber una sola instrucción y diferentes direcciones.
Ejemplo: VAX
Aritméticas:
Las operaciones aritméticas básicas son: suma, resta, multiplicación y división; pero
hay operaciones que requieren un solo operando: Absolute, Negative, Increment,
Derement.
Hay dos tipos de operadores matemáticos: unarios y binarios. Los operadores unarios
realizan una acción con un solo operando. Los operadores binarios realizan acciones
con dos operandos. En una expresión compleja (dos o más operandos), el orden de
evaluación depende de las reglas de precedencia.
Operadores aritméticos unarios
Los operadores unarios son operadores aritméticos que realizan una acción sobre un
solo operando. El lenguaje de script reconoce el operador unario negativo (-).
El operador unario negativo invierte el signo de una expresión, de positivo a negativo
o viceversa. El efecto neto es el de multiplicar el número por -1. Ejemplo: a = -10
Operadores aritméticos binarios
Inserte un espacio antes y después de un operador aritmético. A continuación, se
listan los operadores aritméticos binarios que reciben soporte.

Lógicas:
Se basan en operaciones boleanas. En este caso se aplican operando básicos como,
AND, OR, XOR, EQUAL. Además, se incluyen operaciones de desplazamiento y
rotación tales como.

 Desplazamiento lógico a la derecha


 Desplazamiento lógico a la izquierda
 Desplazamiento aritmético a la derecha
 Desplazamiento aritmético a la izquierda
 Rotación a la derecha
 Rotación a la izquierda

Conversión:
Instrucciones de conversión son aquellas que cambian el formato u operan sobre el
formato de los datos. Un ejemplo común es el de convertir un decimal a binario. El
sistema binario emplea sólo dos dígitos; el cero (0) y el uno (1), por lo que utiliza la
base 2. Este sistema es utilizado por las computadoras, ya que estas trabajan
internamente con dos niveles de voltaje distintos, por lo cual su sistema de
numeración es el binario.
También, podemos nombrar al sistema decimal, que utiliza diez dígitos (del cero al
nueve). Este es el que nos enseñan desde la infancia, por lo que es el más conocido y
el más utilizado en la vida cotidiana. Asimismo, contamos con el sistema hexadecimal,
el cual cuenta con dieciséis elementos (del cero al nueve, luego, de la ‘A’ a la ‘F’). Tanto
este sistema como el binario tienen una gran importancia en el campo de la
informática.
Entrada/Salida.
Como ya los revisamos antes teníamos varios tipos de entradas salidas: entrada/salida
programada aisladas, entradas/salidas programadas asignadas en memoria, DMA y
procesador de E/S. pueden ser realizados por instrucciones específicas o utilizar las de
transferencia mapeada en la memoria, la cual puede ser realizada por un controlador
separado(DMA).
Control del sistema:
Llamadas instrucciones privilegiadas, que se ejecutan solo cuando el procesador está
en un estado privilegiado o está ejecutando un programa en una zona privilegiada. Por
lo general las usan el sistema operativo. Para realizar estas instrucciones la CPU
necesita estar en un estado especifico: anillo cero o 80386+, modo kernel
Control de flujo:
Algunas razones para el uso de funciones de control de flujo: Para ejecutar
instrucciones más de una vez Para la toma de decisiones Ejecución de programas
largos Operaciones de control de flujo: Instrucciones de bifurcación Instrucciones de
salto implícito Instrucciones de llamada a procedimiento.