TEMA:
Modos de Direccionamiento y Conjunto de
Instrucciones del Procesador Intel® Core i7

ESTUDIANTES:
-Geovanny Campoverde
-Emilio Rodriguez

PROFESOR:
-Ing. Otto Parra
El presente documento nos dará a conocer los Métodos de
Direccionamiento que realiza el Procesador (CPU) para el manejo de los
datos, además del Conjunto de Operaciones del mismo, analizando
primeramente aspectos fundamentales de dicho Juego de Instrucciones
basado en el procesador x86, para finalmente contrastarlo con la última
generación de procesadores como son los Intel, específicamente el
Procesador Intel Core i7.

Palabras Clave: Campos, Direccionamiento, Procesador, Operaciones,
Datos, Registros, Instrucciones de Datos, Operandos.
Como es ya de nuestro conocimiento el avance en el desarrollo de los
procesadores ha sido a pasos agigantados. Año a año nuevas tecnologías
se desarrollan lo que implica que la fabricación de los procesadores tiene
que ser constante teniendo como exigencia principal la capacidad de
procesamiento de datos.

Cada vez las mejoras en la Computación exigen un mayor manejo de
datos, para ello este artículo nos mostrara de una manera global como se
manejan los datos dentro del procesador, llegando así a conocer cada uno
de los Modos de Direccionamiento del Procesador.
También se sabe que a partir del desarrollo del procesador x86 los nuevos
procesadores fueron fabricados en base al Conjunto de Instrucciones de
este, conocidas como «primarias», es por eso que se analizará
principalmente el Conjunto de Instrucciones del x86 y posteriormente lo
que se ha añadido a los nuevos procesadores Intel Core i7.
Son las diferentes maneras de especificar en informática un operando
dentro de una instrucción (lenguaje ensamblador). Cómo se especifican e
interpretan las direcciones de memoria según las instrucciones.

Un modo de direccionamiento especifica la forma de calcular la dirección
de memoria efectiva de un operando mediante el uso de la información
contenida en registros y / o constantes, contenida dentro de una
instrucción de la máquina o en otra parte.
Los ordenadores utilizan técnicas de direccionamiento con los siguientes
fines:
1 – Dar versatilidad de programación al usuario, proporcionando
facilidades tales como índices, direccionamientos indirectos, etc., esta
versatilidad sirve para manejar estructuras de datos complejas como
vectores, matrices, etc.
2 – Reducir el número de bits del campo de operando.




Es tal la importancia de los modos de direccionamiento que la potencia de una
maquina se mide tanto por su repertorio de instrucciones como por la variedad de
modos de direccionamiento que es capaz de admitir.
Implícito:
En este modo de direccionamiento no es necesario poner ninguna
dirección de forma explícita, ya que en el propio código de operación se
conoce la dirección del (de los) operando(s) al (a los) que se desea acceder
o con el (los) que se quiere operar.
Un ejemplo de este tipo de direccionamiento lo podemos encontrar en la
arquitectura de acumulador (AC) donde siempre hay un parámetro
implícito y este es el AC.
Finalizando y dejando este modo de direccionamiento generalizado para
las arquitecturas más usuales, se remarca que también se puede encontrar
en la arquitectura con registros de propósito general, por ejemplo con
órdenes como set c, que pone a 1 el registro c (acarreo).
Inmediato:
En la instrucción está incluido directamente el operando.
En este modo el operando es especificado en la instrucción misma. En
otras palabras, una instrucción de modo inmediato tiene un campo de
operando en vez de un campo de dirección.

El campo del operando contiene el operando actual que se debe utilizar
en conjunto con la operación especificada en la instrucción. Las
instrucciones de modo inmediato son útiles para inicializar los registros en
un valor constante.

Cuando el campo de dirección especifica un registro del procesador, la
instrucción se dice que está en el modo de registro.
Inmediato:




      Fig. 1. Funcionamiento del Método de Direccionamiento Inmediato

                       Ejemplo 1: MOV A, #17H
Directo:
El campo de operando en la instrucción contiene la dirección en memoria
donde se encuentra el operando.
En este modo la dirección efectiva es igual a la parte de dirección de la
instrucción. El operando reside en la memoria y su dirección es dada
directamente por el campo de dirección de la instrucción. En una
instrucción de tipo ramificación el campo de dirección especifica la
dirección de la rama actual.
Con este tipo de direccionamiento, la dirección efectiva es contenida en la
misma instrucción, tal como los valores de datos inmediatos que son
contenidos en la instrucción. Un procesador de 16 bits suma la dirección
efectiva al contenido del segmento de datos previamente desplazado en 4
bits para producir la dirección física del operando.
Directo:




           Fig. 2. Funcionamiento del Método de Direccionamiento Directo

                            Ejemplo: MOV A, 17H
Indirecto:
El campo de operando contiene una dirección de memoria, en la que se
encuentra la dirección efectiva del operando.
Indirecto:



Fig. 3. Funcionamiento del Método de Direccionamiento Indirecto
Ejemplo: MOV A,@17H




                              Fig. 3. Funcionamiento del Método de Direccionamiento Indirecto

                                                                  Ejemplo: MOV A,@17H
Absoluto:
El campo de operando contiene una dirección en memoria, en la que se
encuentra la instrucción.

De Registro:
Sirve para especificar Operandos que están en registros.
De Registro:




        Fig. 4. Funcionamiento del Método de Direccionamiento De Registros

                          Ejemplo: MOV A, R0
Indirecto Mediante Registros:
El campo de operando de la instrucción contiene un identificador de
registro en el que se encuentra la dirección efectiva del operando.
En este modo el campo de la dirección de la instrucción da la dirección en
donde la dirección efectiva se almacena en la memoria. El control localiza
la instrucción de la memoria y utiliza su parte de dirección para accesar la
memoria de nuevo para leer una dirección efectiva. Unos pocos modos de
direccionamiento requieren que el campo de dirección de la instrucción
sea sumado al control de un registro especificado en el procesador.
La dirección efectiva en este modo se obtiene del siguiente cálculo:

Dir. Efectiva = Dir. De la parte de la instrucción + Contenido del
registro del procesador
Indirecto Mediante Registros:




          Fig. 5. Funcionamiento del Método de Direccionamiento Indirecto
                           mediante Registros

                        Ejemplo: MOV A,@R0
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 están marcados por el fondo de la pila y el puntero de
pila (*SP), El puntero de pila apunta a la última posición ocupada. Así,
como puntero de direccionamiento usaremos el SP. El desplazamiento
más el valor del SP nos dará la dirección 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 más complejo que otros tipos
tratados anteriormente.
Indexado con Respecto a una Base:
En este modo el contenido de un registro índice se suma a la parte de
dirección de la instrucción para obtener la dirección efectiva.
El registro índice es un registro CPU especial que contiene un valor
índice. Un campo de dirección de la instrucción define la dirección inicial
del arreglo de datos en la memoria.
Cada operando del arreglo se almacena en la memoria en relación con la
dirección inicial.
La distancia entre la dirección inicial y la dirección del operando es el
valor del índice almacenado en el registro de índice. Cualquier operando
en el arreglo puede accesarse con la misma instrucción siempre y cuando
el registro índice contenga el valor de índice correcto. El registro índice
puede incrementarse para facilitar el acceso a Operandos consecutivos.
Direccionamiento de Registro Base:
En este modo, el contenido de un registro base se suma a la parte de
dirección de la instrucción para obtener la dirección efectiva. Esto es
similar al modo de direccionamiento indexado, excepto en que el registro
se denomina ahora registro base, en lugar de registro índice. La diferencia
entre los dos modos está en la manera en que se usan más que en la
manera en que se calculan. Se considera que un registro base contiene una
dirección base y que el campo de dirección de la instrucción proporciona
un desplazamiento en relación con esta dirección base.
El modo de direccionamiento de registro base se utiliza en las
computadoras para facilitar la localización de los programas en memoria.
El Conjunto de Instrucciones también llamado 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 un procesador de una computadora puede entender y
ejecutar, es decir el conjunto de todos los comandos implementados por
un diseño particular de un procesador. 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.
El conjunto de instrucciones se emplea a veces para distinguir este
conjunto de características de la micro-arquitectura, 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.
Las Características principales en general de un Conjunto de Instrucciones
son:
Completo: Que se pueda realizar en un tiempo finito cualquier tarea
ejecutable con un ordenador (computable o decidible).
Eficiente: Que permita alta velocidad de cálculo 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.
Autos contenidos: Esto es, que contengan en sí mismas toda la
información necesaria para ejecutarse.
Independientes: Que no dependan de la ejecución de alguna otra
instrucción.
Además se puede decir que para que un conjunto de instrucciones sea
completo solo se necesitan cuatro instrucciones:
• Escritura
• Mover a la izquierda una posición y leer
• Mover a la derecha una posición y leer
• Parar
Con este conjunto no se puede conseguir la eficiencia del repertorio de
instrucciones por lo que en la práctica el conjunto suele ser más amplio en
aras de conseguir un mejor rendimiento, tanto en uso de recursos como
en consumo de tiempo.
Básicamente el Conjunto de Instrucciones se basa en dos aspectos
fundamentales:

Densidad de Código: Es una característica fundamental pues muchos de los
programas en la actualidad tienen instrucciones muy complejas lo cual
hace que el manejo de los procesos necesite cada vez un procesador más
eficaz, el cual pueda procesar los datos de una manera rápida, directa y sin
retardos.

Numero de Operandos: El número de Operandos se refiere a como los datos
se van procesando durante la ejecución de una instrucción.
El formato de la instrucciones es un conjunto de especificaciones que
indican como debe ser interpretado el patrón de bits de una instrucción
de máquina para logra su ejecución dentro del computador.
El formato de la instrucción nos indica cual es el código de operación y
cuáles son los Operandos que la instrucción específica, tanto explícita
como implícitamente.
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
condición. Pueden transferir palabras, fracciones de palabras (bytes, media
palabra) o bloques completos de n bytes o palabras.




                                    TABLA I
                      EJEMPLOS DE TRANSFERENCIA DE DATOS
Instrucciones Aritméticas: Son efectuadas por la ALU y suelen cambiar los
flags o indicadores de condición.




                                   TABLA II
                    EJEMPLOS DE INSTRUCCIONES ARITMETICAS
Instrucciones Lógicas: Realizan operaciones booleanas "bit a bit" entre dos
Operandos. Como las aritméticas también modifican los flags.




                                   TABLA III
                      EJEMPLOS DE INSTRUCCIONES LOGICAS
Instrucciones Comparación: Suelen preceder a una instrucción de bifurcación
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 instrucción de comparación. (De hecho cualquier
operación aritmética realizada anteriormente a un salto condicional puede
provocar que este "salte").




                                    TABLA IV
                    EJEMPLOS DE INSTRUCCIONES COMPARACION
Control de Flujo de Programa: Permiten modificar la secuencia normal de
ejecución de un programa, puede hacerse por salto condicional relativo o
absoluto.
Se clasifican en cuatro grupos:
               GRUPO                                     ACCION
      Salto Incondicional    Salta sin comprobar ninguna condición.
      Salto Condicional      Salta si la condición se cumple.

      Llamada a Subrutinas   Invoca la ejecución de funciones anteriormente definidas.


      Gestión de las         Se usan para llamar a las rutinas de servicio de interrupción y
      Interrupciones         esto se puede hacer por hardware o bien por software.
                             Necesita una instrucción similar a return para retornar al
                             contexto anterior pero restableciendo el estado de la máquina,
                             para no afectar a la aplicación a la cual se interrumpió (iret).
Instrucciones de Desplazamiento: Pueden ser aritmético o lógico y pueden
incluir o no rotaciones. Pueden ser de izquierda a derecha.




                                   TABLA V
                EJEMPLOS DE INSTRUCCIONES DE DESPLAZAMIENTO
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.




                                    TABLA VI
                       EJEMPLOS DE INSTRUCCIONES DE BITS
Entrada/Salida: 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 periféricos 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.
Entrada/Salida:




                                    TABLA VII
                  EJEMPLOS DE INSTRUCCIONES DE ENTRADA/SALIDA
Control y Misceláneas: Se usan como semáforos, 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
semáforo está en 1 tendrá que esperar hasta que este cambie a 0.




                                   TABLA VIII
                    EJEMPLOS DE INSTRUCCIONES MISCELANEAS
Streaming SIMD Extensions (SSE) es un conjunto de
instrucciones SIMD (Única Instrucción, Múltiples Datos) añadidas en el
año 1999 al procesador Pentium III, como extensión a la arquitectura
x86 como respuesta a la tecnología 3DNow! que AMD tenía
implementada años atrás.
La versión 4.2 de las extensiones de vector de Intel SSE trae de regreso al
futuro el x86 ISA atrás con la adición de nuevas instrucciones de
manipulación de cadenas. Pero la cadena de instrucciones del nuevo SSE
4.2 está destinada a acelerar el procesamiento de XML, lo que las
convierte en perfectas para la Web y aplicaciones futuras basadas en
XML.
SSE 4.2 también incluye una instrucción CRC que acelera el
almacenamiento y las aplicaciones de red, así como una instrucción
POPCNT útil para una variedad de tareas de patrón
especificado. Además, para ofrecer mejor soporte a las aplicaciones multi-
hilo, Intel ha reducido la latencia de los hilos de las primitivas de
sincronización.

En el frente de virtualización, acelera las transiciones y tiene algunas
mejoras sustanciales, en su sistema de memoria virtual que reduce en gran
medida el número de esas transiciones requeridas por el Hypervisor.
Como se ha podido constatar, los modos de direccionamiento, y el
conjunto de operaciones, es lo que define actualmente a un procesador en
el mercado, y a medida que más se actualicen y se logre entender su
verdadera utilidad, implementando nuevas formas de uso, podremos tener
mucha más potencia y capacidad de procesamiento para los
computadores. Consecuentemente con esto, tendremos un avance
tecnológico en todas las esferas de una sociedad que actualmente está
regida casi completamente por el uso de los ordenadores.
http://www.fdi.ucm.es/profesor/jjruz/WEB2/Temas/EC2.pdf
http://es.wikipedia.org/wiki/Conjunto_de_instrucciones
http://www.alegsa.com.ar/Dic/conjunto%20de%20instrucciones.php
http://atc.ugr.es/docencia/udigital/04.html
http://infomicros.wordpress.com/2008/08/12/intelcorei7/
http://teleformacion.edu.aytolacoruna.es/PASCAL/document/flujo.htm
http://www.terra.es/personal/fremiro/modos_de_direccionamiento.htm
http://dac.escet.urjc.es/~lrincon/uned/etc1/ModosDireccionamiento.pdf
http://moisesrbb.tripod.com/m_direct.html
http://es.wikipedia.org/wiki/Modos_de_direccionamiento
Modos de Direccionamiento del Procesador

Modos de Direccionamiento del Procesador

  • 1.
    TEMA: Modos de Direccionamientoy Conjunto de Instrucciones del Procesador Intel® Core i7 ESTUDIANTES: -Geovanny Campoverde -Emilio Rodriguez PROFESOR: -Ing. Otto Parra
  • 2.
    El presente documentonos dará a conocer los Métodos de Direccionamiento que realiza el Procesador (CPU) para el manejo de los datos, además del Conjunto de Operaciones del mismo, analizando primeramente aspectos fundamentales de dicho Juego de Instrucciones basado en el procesador x86, para finalmente contrastarlo con la última generación de procesadores como son los Intel, específicamente el Procesador Intel Core i7. Palabras Clave: Campos, Direccionamiento, Procesador, Operaciones, Datos, Registros, Instrucciones de Datos, Operandos.
  • 3.
    Como es yade nuestro conocimiento el avance en el desarrollo de los procesadores ha sido a pasos agigantados. Año a año nuevas tecnologías se desarrollan lo que implica que la fabricación de los procesadores tiene que ser constante teniendo como exigencia principal la capacidad de procesamiento de datos. Cada vez las mejoras en la Computación exigen un mayor manejo de datos, para ello este artículo nos mostrara de una manera global como se manejan los datos dentro del procesador, llegando así a conocer cada uno de los Modos de Direccionamiento del Procesador.
  • 4.
    También se sabeque a partir del desarrollo del procesador x86 los nuevos procesadores fueron fabricados en base al Conjunto de Instrucciones de este, conocidas como «primarias», es por eso que se analizará principalmente el Conjunto de Instrucciones del x86 y posteriormente lo que se ha añadido a los nuevos procesadores Intel Core i7.
  • 5.
    Son las diferentesmaneras de especificar en informática un operando dentro de una instrucción (lenguaje ensamblador). Cómo se especifican e interpretan las direcciones de memoria según las instrucciones. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra parte.
  • 6.
    Los ordenadores utilizantécnicas de direccionamiento con los siguientes fines: 1 – Dar versatilidad de programación al usuario, proporcionando facilidades tales como índices, direccionamientos indirectos, etc., esta versatilidad sirve para manejar estructuras de datos complejas como vectores, matrices, etc. 2 – Reducir el número de bits del campo de operando. Es tal la importancia de los modos de direccionamiento que la potencia de una maquina se mide tanto por su repertorio de instrucciones como por la variedad de modos de direccionamiento que es capaz de admitir.
  • 7.
    Implícito: En este modode direccionamiento no es necesario poner ninguna dirección de forma explícita, ya que en el propio código de operación se conoce la dirección del (de los) operando(s) al (a los) que se desea acceder o con el (los) que se quiere operar. Un ejemplo de este tipo de direccionamiento lo podemos encontrar en la arquitectura de acumulador (AC) donde siempre hay un parámetro implícito y este es el AC. Finalizando y dejando este modo de direccionamiento generalizado para las arquitecturas más usuales, se remarca que también se puede encontrar en la arquitectura con registros de propósito general, por ejemplo con órdenes como set c, que pone a 1 el registro c (acarreo).
  • 8.
    Inmediato: En la instrucciónestá incluido directamente el operando. En este modo el operando es especificado en la instrucción misma. En otras palabras, una instrucción de modo inmediato tiene un campo de operando en vez de un campo de dirección. El campo del operando contiene el operando actual que se debe utilizar en conjunto con la operación especificada en la instrucción. Las instrucciones de modo inmediato son útiles para inicializar los registros en un valor constante. Cuando el campo de dirección especifica un registro del procesador, la instrucción se dice que está en el modo de registro.
  • 9.
    Inmediato: Fig. 1. Funcionamiento del Método de Direccionamiento Inmediato Ejemplo 1: MOV A, #17H
  • 10.
    Directo: El campo deoperando en la instrucción contiene la dirección en memoria donde se encuentra el operando. En este modo la dirección efectiva es igual a la parte de dirección de la instrucción. El operando reside en la memoria y su dirección es dada directamente por el campo de dirección de la instrucción. En una instrucción de tipo ramificación el campo de dirección especifica la dirección de la rama actual. Con este tipo de direccionamiento, la dirección efectiva es contenida en la misma instrucción, tal como los valores de datos inmediatos que son contenidos en la instrucción. Un procesador de 16 bits suma la dirección efectiva al contenido del segmento de datos previamente desplazado en 4 bits para producir la dirección física del operando.
  • 11.
    Directo: Fig. 2. Funcionamiento del Método de Direccionamiento Directo Ejemplo: MOV A, 17H
  • 12.
    Indirecto: El campo deoperando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.
  • 13.
    Indirecto: Fig. 3. Funcionamientodel Método de Direccionamiento Indirecto Ejemplo: MOV A,@17H Fig. 3. Funcionamiento del Método de Direccionamiento Indirecto Ejemplo: MOV A,@17H
  • 14.
    Absoluto: El campo deoperando contiene una dirección en memoria, en la que se encuentra la instrucción. De Registro: Sirve para especificar Operandos que están en registros.
  • 15.
    De Registro: Fig. 4. Funcionamiento del Método de Direccionamiento De Registros Ejemplo: MOV A, R0
  • 16.
    Indirecto Mediante Registros: Elcampo de operando de la instrucción contiene un identificador de registro en el que se encuentra la dirección efectiva del operando. En este modo el campo de la dirección de la instrucción da la dirección en donde la dirección efectiva se almacena en la memoria. El control localiza la instrucción de la memoria y utiliza su parte de dirección para accesar la memoria de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un registro especificado en el procesador. La dirección efectiva en este modo se obtiene del siguiente cálculo: Dir. Efectiva = Dir. De la parte de la instrucción + Contenido del registro del procesador
  • 17.
    Indirecto Mediante Registros: Fig. 5. Funcionamiento del Método de Direccionamiento Indirecto mediante Registros Ejemplo: MOV A,@R0
  • 18.
    De Desplazamiento: Combina elmodo 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 están marcados por el fondo de la pila y el puntero de pila (*SP), El puntero de pila apunta a la última posición ocupada. Así, como puntero de direccionamiento usaremos el SP. El desplazamiento más el valor del SP nos dará la dirección 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 más complejo que otros tipos tratados anteriormente.
  • 19.
    Indexado con Respectoa una Base: En este modo el contenido de un registro índice se suma a la parte de dirección de la instrucción para obtener la dirección efectiva. El registro índice es un registro CPU especial que contiene un valor índice. Un campo de dirección de la instrucción define la dirección inicial del arreglo de datos en la memoria. Cada operando del arreglo se almacena en la memoria en relación con la dirección inicial. La distancia entre la dirección inicial y la dirección del operando es el valor del índice almacenado en el registro de índice. Cualquier operando en el arreglo puede accesarse con la misma instrucción siempre y cuando el registro índice contenga el valor de índice correcto. El registro índice puede incrementarse para facilitar el acceso a Operandos consecutivos.
  • 20.
    Direccionamiento de RegistroBase: En este modo, el contenido de un registro base se suma a la parte de dirección de la instrucción para obtener la dirección efectiva. Esto es similar al modo de direccionamiento indexado, excepto en que el registro se denomina ahora registro base, en lugar de registro índice. La diferencia entre los dos modos está en la manera en que se usan más que en la manera en que se calculan. Se considera que un registro base contiene una dirección base y que el campo de dirección de la instrucción proporciona un desplazamiento en relación con esta dirección base. El modo de direccionamiento de registro base se utiliza en las computadoras para facilitar la localización de los programas en memoria.
  • 21.
    El Conjunto deInstrucciones también llamado 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 un procesador de una computadora puede entender y ejecutar, es decir el conjunto de todos los comandos implementados por un diseño particular de un procesador. 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.
  • 22.
    El conjunto deinstrucciones se emplea a veces para distinguir este conjunto de características de la micro-arquitectura, 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.
  • 23.
    Las Características principalesen general de un Conjunto de Instrucciones son: Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable o decidible). Eficiente: Que permita alta velocidad de cálculo 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. Autos contenidos: Esto es, que contengan en sí mismas toda la información necesaria para ejecutarse. Independientes: Que no dependan de la ejecución de alguna otra instrucción.
  • 24.
    Además se puededecir que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones: • Escritura • Mover a la izquierda una posición y leer • Mover a la derecha una posición y leer • Parar Con este conjunto no se puede conseguir la eficiencia del repertorio de instrucciones por lo que en la práctica el conjunto suele ser más amplio en aras de conseguir un mejor rendimiento, tanto en uso de recursos como en consumo de tiempo.
  • 25.
    Básicamente el Conjuntode Instrucciones se basa en dos aspectos fundamentales: Densidad de Código: Es una característica fundamental pues muchos de los programas en la actualidad tienen instrucciones muy complejas lo cual hace que el manejo de los procesos necesite cada vez un procesador más eficaz, el cual pueda procesar los datos de una manera rápida, directa y sin retardos. Numero de Operandos: El número de Operandos se refiere a como los datos se van procesando durante la ejecución de una instrucción.
  • 26.
    El formato dela instrucciones es un conjunto de especificaciones que indican como debe ser interpretado el patrón de bits de una instrucción de máquina para logra su ejecución dentro del computador. El formato de la instrucción nos indica cual es el código de operación y cuáles son los Operandos que la instrucción específica, tanto explícita como implícitamente.
  • 27.
    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 condición. Pueden transferir palabras, fracciones de palabras (bytes, media palabra) o bloques completos de n bytes o palabras. TABLA I EJEMPLOS DE TRANSFERENCIA DE DATOS
  • 28.
    Instrucciones Aritméticas: Sonefectuadas por la ALU y suelen cambiar los flags o indicadores de condición. TABLA II EJEMPLOS DE INSTRUCCIONES ARITMETICAS
  • 29.
    Instrucciones Lógicas: Realizanoperaciones booleanas "bit a bit" entre dos Operandos. Como las aritméticas también modifican los flags. TABLA III EJEMPLOS DE INSTRUCCIONES LOGICAS
  • 30.
    Instrucciones Comparación: Suelenpreceder a una instrucción de bifurcación 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 instrucción de comparación. (De hecho cualquier operación aritmética realizada anteriormente a un salto condicional puede provocar que este "salte"). TABLA IV EJEMPLOS DE INSTRUCCIONES COMPARACION
  • 31.
    Control de Flujode Programa: Permiten modificar la secuencia normal de ejecución de un programa, puede hacerse por salto condicional relativo o absoluto. Se clasifican en cuatro grupos: GRUPO ACCION Salto Incondicional Salta sin comprobar ninguna condición. Salto Condicional Salta si la condición se cumple. Llamada a Subrutinas Invoca la ejecución de funciones anteriormente definidas. Gestión de las Se usan para llamar a las rutinas de servicio de interrupción y Interrupciones esto se puede hacer por hardware o bien por software. Necesita una instrucción similar a return para retornar al contexto anterior pero restableciendo el estado de la máquina, para no afectar a la aplicación a la cual se interrumpió (iret).
  • 32.
    Instrucciones de Desplazamiento:Pueden ser aritmético o lógico y pueden incluir o no rotaciones. Pueden ser de izquierda a derecha. TABLA V EJEMPLOS DE INSTRUCCIONES DE DESPLAZAMIENTO
  • 33.
    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. TABLA VI EJEMPLOS DE INSTRUCCIONES DE BITS
  • 34.
    Entrada/Salida: Son instruccionesde 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 periféricos 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.
  • 35.
    Entrada/Salida: TABLA VII EJEMPLOS DE INSTRUCCIONES DE ENTRADA/SALIDA
  • 36.
    Control y Misceláneas:Se usan como semáforos, 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 semáforo está en 1 tendrá que esperar hasta que este cambie a 0. TABLA VIII EJEMPLOS DE INSTRUCCIONES MISCELANEAS
  • 37.
    Streaming SIMD Extensions(SSE) es un conjunto de instrucciones SIMD (Única Instrucción, Múltiples Datos) añadidas en el año 1999 al procesador Pentium III, como extensión a la arquitectura x86 como respuesta a la tecnología 3DNow! que AMD tenía implementada años atrás. La versión 4.2 de las extensiones de vector de Intel SSE trae de regreso al futuro el x86 ISA atrás con la adición de nuevas instrucciones de manipulación de cadenas. Pero la cadena de instrucciones del nuevo SSE 4.2 está destinada a acelerar el procesamiento de XML, lo que las convierte en perfectas para la Web y aplicaciones futuras basadas en XML.
  • 38.
    SSE 4.2 tambiénincluye una instrucción CRC que acelera el almacenamiento y las aplicaciones de red, así como una instrucción POPCNT útil para una variedad de tareas de patrón especificado. Además, para ofrecer mejor soporte a las aplicaciones multi- hilo, Intel ha reducido la latencia de los hilos de las primitivas de sincronización. En el frente de virtualización, acelera las transiciones y tiene algunas mejoras sustanciales, en su sistema de memoria virtual que reduce en gran medida el número de esas transiciones requeridas por el Hypervisor.
  • 39.
    Como se hapodido constatar, los modos de direccionamiento, y el conjunto de operaciones, es lo que define actualmente a un procesador en el mercado, y a medida que más se actualicen y se logre entender su verdadera utilidad, implementando nuevas formas de uso, podremos tener mucha más potencia y capacidad de procesamiento para los computadores. Consecuentemente con esto, tendremos un avance tecnológico en todas las esferas de una sociedad que actualmente está regida casi completamente por el uso de los ordenadores.
  • 40.