Unidad 2 Arquitectura de Computo

98
UNIDAD II Estructura y funcionamiento de la CPU Arquitectura de Computadoras CATEDRÁTICO ING. ROSEL MUÑOZ LOPEZ INTEGRANTES Arias Mérida Aldo Miguel Alejandro Arreola Apan Diego de Jesús Arévalo Ibarra INSTITUTO TECNOLÓGICO DE TAPACHULA ING. EN SISTEMAS COMPUTACIONALES

description

aquí esta una ayuda para la unidad 2

Transcript of Unidad 2 Arquitectura de Computo

Page 1: Unidad 2 Arquitectura de Computo

UNIDAD IIEstructura y funcionamiento de la CPU

Arquitectura de Computadoras

CATEDRÁTICO

ING. ROSEL MUÑOZ LOPEZ

INTEGRANTES

Arias Mérida Aldo Miguel Alejandro Arreola Apan Diego de Jesús Arévalo Ibarra

Tapachula Chiapas a 29 de 09 del 2015

INSTITUTO TECNOLÓGICO DE TAPACHULA

ING. EN SISTEMAS COMPUTACIONALES

Page 2: Unidad 2 Arquitectura de Computo

Contenido2.1 Organización del procesador........................................................................................................4

2.2 Estructura de registros.................................................................................................................8

2.2.1 Registros visibles para el usuario.........................................................................................16

2.2.2 Registros de control y estados.............................................................................................19

2.3 El ciclo de instrucción.................................................................................................................22

2.3.1 Ciclo Fetch – Decode – Execute...........................................................................................29

2.3.2 Segmentación de instrucción..............................................................................................33

2.3.3 Conjunto de instrucciones: Características y funciones.......................................................49

2.3.4 Modos de direccionamiento y formatos.............................................................................51

2.4 Casos de estudio de CPU reales..................................................................................................63

Page 3: Unidad 2 Arquitectura de Computo

Introducción

En esta unidad se abordara distintos tipos de temas y subtemas relacionados con el funcionamiento del CPU aprenderemos de su organización, también sobre su estructura de registros, también se tratara de ver un poco sobre la definición de estos mismos y como están clasificados, como los registros visibles para el usuario, los registros de control y de estados algunos ejemplos de como están organizados.Se tomara en cuenta también los ciclos de instrucciones, que también son muy importantes en la CPU, se tomara en cuenta que existen distintos tipos, uno de los mecionados y conocidos es el ciclo Fetch – Decode- Execute, seguidamente un poco de la segmentación de instrucciones, se verán sus características y sus funciones, los modos de direccionamiento y sus formatos, los casos de CPU reales es un tema extenso en el cual se busca generalizar un poco lo que se vera en la unidad ya que se puede ver de distintos enfoques uno mas comercial y tenemos en el cual se profundizara más, ya que se puede llegar a desconocer muchos de estos términos que se enfocan principalmente en la CPU, el objetivo de la unidad es dar a conocer como son de vital importancia cada una de estas acciones, instrucciones, registros, etc. Ya que de esta manera se pueda llegar a comprender realmente que hace el CPU y no caer en la conclusión de que es una sola pieza, ya que está formada por el chip microprocesador y el microprocesador se apoyara de la ALU(unidad aritmética y lógica) y de la UC (unidad de control). Aquí es donde se observara como es que cada componente juega un papel importante

Page 4: Unidad 2 Arquitectura de Computo

1

2.1 Organización del

procesador

Page 5: Unidad 2 Arquitectura de Computo

Los procesadores tienen como misión ejecutar operaciones de cómputo. Sabemos del modelo de Von Neumann que estas operaciones se definen como instrucciones. En el procesador se sabe que, desde que recibe energía hasta que se apaga ejecuta constantemente instrucciones. Esta función de procesamiento es la más importante en el funcionamiento de una computadora, por lo cual al procesador se le denomina Unidad Central de Procesamiento o CPU. En esta unidad analizaremos las estructuras que requiere un CPU muy sencillo para poder ejecutar una instrucción siguiendo los pasos del ciclo de Instrucción.

Memoria de control organización del microprocesador.

La función de la unidad de control es iniciar secuencias de micro operaciones. La cantidad de tipos de operaciones diferentes que están disponibles en un sistema dado es finita.

Cuando se generan señales de control por medio de técnicas de diseño lógico convencional se dice que la unidad de control es por circuitería.

La función de control que especifica una micro operación es una variable binaria. Memoria de Control El estado activo puede ser el estado 1 o 0 según la aplicación

En un sistema organizado con bus, las señales de control son grupos de bits que seleccionan las trayectorias en los multiplexores, decodificadores y unidades lógicas aritméticas.

Cada palabra en la memoria de control contiene un microinstrucción la cual, especifica una o más micro operaciones para el sistema. Una secuencia de microinstrucciones constituye un microprograma.

Memoria de Control La principal ventaja del control microprogramado es que, una ves establecida la configuración de la circuitería, no hay necesidad de cambios posteriores. Memoria de Control La memoria de control puede ser una memoria de solo lectura (ROM).El contenido de las palabras en la ROM es fijo y no puede alterarse mediante la programación simple.

La microprogramación dinámica

Permite que una microprograma se cargue al principio desde una memoria auxiliar; por ejemplo, desde un disco magnético. Este tipo de memoria puede utilizarse para escribir (cambiar el microprograma). Secuencia de la Dirección Cada instrucción de PC tiene su propia rutina de microprograma en la memoria de control para generar las microoperaciones que ejecutan la instrucción.

Se carga una dirección inicial en el registro de dirección cuando se enciende la PC, por lo general, es la primera microinstrucción que activa la rutina de búsqueda de instrucción.

Page 6: Unidad 2 Arquitectura de Computo

Al final de la rutina de búsqueda, la instrucción está en el registro de instrucción de la computadora. Secuenciador del Microprograma Su propósito es presentar una dirección a la memoria de control con el fin de que pueda leerse y ejecutarse una microinstrucción. Secuenciador de Microprograma Hay dos multiplexores en el circuito:

El primero selecciona una dirección de las cuatro fuentes y le marca una ruta hacia dentro del registro de dirección de control CAR.

El segundo prueba el valor de un bit de estado seleccionado y el resultado de la prueba se aplica a un circuito lógico de entrada. Formato de Microinstrucciones

La microinstrucción es una palabra binaria con tantos bits como señales de control existan en el microprocesador.

Un bit a “cero” indica que la señal no debe activarse,

Un bit a “uno” indica lo contrario.

Los bits de una microinstrucción se organizan, conceptualmente, en campos. Cada campo representa un conjunto de señales eléctricas relacionadas entre si.

Una unidad de control microprogramada consiste esencialmente en “microprocesador dentro del microprocesador” consta de elementos análogos aunque mas simplificados.

Memoria de programa.

Suele ser una pequeña memoria ROM que incluye toda la microprograma. Formato de Microinstrucciones

Un micro contador de un programa: Es un registro que indica cual es la microinstrucción en curso.

Un registro de microinstrucción: Contiene la microinstrucción en curso. Un demultiplexor, en caso de que existan campos multiplexados. Un pequeño sumados, que permite los saltos de una instrucción a otra.

Una señal de reloj: que indica la duración de cada microinstrucción Un microprograma es una secuencia de datos binarios o microinstrucciones que representan señales eléctricas internas de la unidad de control de un microprocesador.

Formato de Microinstrucciones

Unas pocas de estas microinstrucciones implementan una instrucción completa del microprocesador. Por ejemplo, la instrucción "sumar dos registros" típica de cualquier microprocesador, se implementa mediante la activación y desactivación de un conjunto reducido de señales eléctricas en el banco de registros y la unidad aritmético-lógica. En concreto, el microprograma de esta instrucción significaría: Formato de Microinstrucciones.

Page 7: Unidad 2 Arquitectura de Computo

Activar las señales de selección de registro como primer operando de la ALU.

Activar las señales de selección de registro como segundo operando de la ALU.

Activar las señales de selección de operador para que corresponda a la suma en la ALU.

Esperar unos ciclos de reloj hasta que la operación esté completada.

Activar la señal de escritura en el registro acumulador. Secuencia de la Dirección En seguida, la memoria de control recoge la rutina que determina la dirección efectiva del operador.

Después, se generan las microoperaciones que ejecutan las instrucciones que se trajo de la memoria. La Transformación de bits del código de instrucción a una dirección en la memoria de control donde se localiza la rutina se denomina proceso de mapeo. Secuencia de la Dirección En resumen, las posibilidades de secuencia de dirección que se requieren en la memoria de control son: Incrementar el registro de direccionamiento de control. Transferencia de control del programa condicional o incondicional, dependiendo de las condiciones de los bits de estado.

Un proceso de mapeo de los bits de la instrucción a una dirección para una memoria de control.

Una opción para llamar y regresar solicitud de una subrutina y retorno. Los secuenciadores incluyen dentro de la unidad una pila de registro interno que se usa para el almacenamiento temporal de direcciones durante solicitudes de subrutinas y ciclos de microprograma. Secuenciador de Microprograma El campo CD (condición) selecciona uno de los bits de estado del segundo multiplexor, si es 1 la variable T "true" (prueba) es igual a 1, sino lo iguala a 0.

El valor T junto con los dos bits del campo BR (brincar) van a un circuito lógico de entrada. La lógica de entrada determinara el tipo de operaciones disponibles en la unidad.

Las operaciones típicas son: Incrementar, transferir o hacer saltar, llamar y retornar de subrutina, cargar una dirección externa, salvar o leer la pila, entre otras. Secuenciador de Microprograma El secuenciador puede proporcionar hasta ocho operaciones de secuenciamiento de dirección. Algunos secuenciadores tienen tres o cuatro entradas además de la entrada T siendo estos de mayor rango de operaciones. Tres entradas: I0, I1 y T / Tres salidas: S0, S1 y L El circuito puede construirse con tres compuertas AND, una OR y un Inversor

Page 8: Unidad 2 Arquitectura de Computo

2.2 Estructura de

registros

Page 9: Unidad 2 Arquitectura de Computo

En el CPU tienen lugar la mayor cantidad de trabajo real de una computadora. El CPU tiene muchas sub-partes, incluyendo una unidad aritmética y lógica (ALU), una unidad de control (CU) y registros. La ALU realiza aritmética básica y compara dos valores para determinar si son iguales o si uno es más grande. La CU administra el movimiento de datos e instrucciones en el CPU. Los registros vienen de tres tipos: datos, direcciones e índice, que tiene lugar en casi todos los aspectos de la operación del CPU. El tamaño de un registro depende del CPU; los más simples tienen registros que aceptan 8 o 16 bits de datos y los más complejos tienen registros de 32, 48 o 64 bits.

Registros de la CPU

Para poder hacer estas cosas, es obvio que la CPU necesita almacenar algunos datos temporalmente. Debe recordar la posición de la última instrucción de forma que sepa dónde ir a buscar la siguiente. Necesita almacenar instrucciones y datos temporalmente mientras una instrucción está siendo ejecutada. En otras palabras, la CPU necesita una pequeña memoria interna. En la estructura interna de la CPU se indican los caminos de transferencia de datos y de control lógico, que incluyen un elemento con el rótulo bus interno de la CPU. Este elemento es necesario para transferir datos entre los diversos registros y la ALU, ya que ésta en realidad sólo opera con datos de la memoria interna de la CPU.

Los registros de la CPU son:

Registros visibles al usuario.

Permiten al programador de lenguaje de máquina o ensamblador minimizar las referencias a memoria principal optimizando el uso de los registros.

Registros de control.

Son utilizados por la unidad de control para controlar el funcionamiento de la CPU y por programas privilegiados del sistema para controlar la ejecución de programas.

Registro de estado.

Se utiliza para tomar decisiones en función de operaciones realizadas.

Registro puntero a pila.

SP = Puntero de pila (stack pointer).

Apunta a la cabeza de la pila. Utilizado en las instrucciones de manejo de la pila.

BP = Puntero base (base pointer).

Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parámetros de las funciones en los programas compilados).

Page 10: Unidad 2 Arquitectura de Computo

Registros de datos

Un CPU puede funcionar con datos en uno de tres modos: entre dos registros, entre registros y una ubicación de Memoria de acceso al azar (RAM - Random-Access Memory) y entre dos ubicaciones RAM. Como el CPU está conectado directamente a los registros, las operaciones que implican dos registros son las más rápidas; las que se dan entre ubicaciones RAM son las más lentas. Es decir, junta dos registros, añade un registro a una ubicación RAM, o añade dos ubicaciones RAM. El CPU debe primero cargar datos desde la RAM a los registros antes de poder usarlos; esto lleva tiempo, pero una vez hecho, las operaciones subsecuentes del registro se ejecutan rápidamente.

AX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits o como dos registros separados de 8 bits (byte superior e inferior) cambiando la X por H o L según queramos referirnos a la parte alta o baja respectivamente. Por ejemplo, AX se descompone en AH (parte alta) y AL (parte baja). Evidentemente, ¡cualquier cambio sobre AH o AL altera AX!: valga como ejemplo que al incrementar AH se le están añadiendo 256 unidades a AX.

AX = Acumulador.

Es el registro principal, es utilizado en las instrucciones de multiplicación y división y en algunas instrucciones aritméticas especializadas, así como en ciertas operaciones de carácter específico como entrada, salida y traducción. Obsérvese que el 8086 es suficientemente potente para realizar las operaciones lógicas, la suma y la resta sobre cualquier registro de datos, no necesariamente el acumulador.

BX = Base.

Se usa como registro base para referenciar direcciones de memoria con direccionamiento indirecto, manteniendo la dirección de la base o comienzo de tablas o matrices. De esta manera, no es preciso indicar una posición de memoria fija, sino la número BX (así, haciendo avanzar de unidad en unidad a BX, por ejemplo, se puede ir accediendo a un gran bloque de memoria en un bucle).

CX = Contador.

Se utiliza comúnmente como contador en bucles y operaciones repetitivas de manejo de cadenas. En las instrucciones de desplazamiento y rotación se utiliza como contador de 8 bits.

Page 11: Unidad 2 Arquitectura de Computo

DX = Datos.

Usado en conjunción con AX en las operaciones de multiplicación y división que involucran o generan datos de 32 bits. En las de entrada y salida se emplea para especificar la dirección del puerto E/S.

Registros de direcciones

Para que un CPU pueda almacenar y recuperar datos en RAM, debe tener la dirección de la memoria de la información. Esas operaciones que implican RAM usan registros de dirección de memoria. EL CPU no realiza aritmética en estos registros; en cambio, los usa para ubicar datos que necesita. Por ejemplo, un programa almacena el comienzo de tu primer nombre en una ubicación 100.000 de memoria RAM. El CPU procesa tu primer nombre moviendo el número 100.000 a un registro de dirección, luego mueve cada letra a un registro de datos hasta que alcanza el final del nombre.

Registro de índice

Un CPU no puede hacer matemáticas en registros de datos, aunque puede hacerlo indirectamente con un registro de índice. Éste trabaja con los registros de datos, permitiendo a un programa procesar hilos de información eficazmente. Para procesar tu primer nombre, por ejemplo, un programa mueve 100.000 a un registro de dirección y cero a un registro de índice. Una operación en los índices añade el valor del índice al registro de datos, recuperando la letra de la ubicación 100.000. Luego, el programa aumenta el índice en uno, y obtiene la siguiente letra. Repite este proceso hasta que ha movido todo el nombre. En sí mismo, el registro de índice hace muy poco; su valor es que le da mayor velocidad y conveniencia a los registros de direcciones.

SI = Índice fuente (source index).

Utilizado como registro de índice en ciertos modos de direccionamiento indirecto, también se emplea para guardar un valor de desplazamiento en operaciones de cadenas.

DI = Índice destino (destination index).

Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas.

Puntero de instrucciones o contador de programa:

IP = Puntero de instrucción (instruction pointer).

Marca el desplazamiento de la instrucción en curso dentro del segmento de código. Es automáticamente modificado con la lectura de una instrucción.

Page 12: Unidad 2 Arquitectura de Computo

Registros de segmento:

Definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas áreas pueden solaparse total o parcialmente. No es posible acceder a una posición de memoria no definida por algún segmento: si es preciso, habrá de moverse alguno.

CS = Registro de segmento de código (code segment).

Contiene la dirección del segmento con las instrucciones del programa. Los programas de más de 64 Kb requieren cambiar CS periódicamente.

DS = Registro de segmento de datos (data segment).

Segmento del área de datos del programa.

SS = Registro de segmento de pila (stack segment).

Segmento de pila.

ES = Registro de segmento extra (extra segment).

Segmento de ampliación para zona de datos. Es extraordinariamente útil actuando en conjunción con DS: con ambos se puede definir dos zonas de 64 Kb, tan alejadas como se desee en el espacio de direcciones, entre las que se pueden intercambiar datos.

Registros punteros de pila:

SP = Puntero de pila (stack pointer).

Apunta a la cabeza de la pila. Utilizado en las instrucciones de manejo de la pila.

BP = Puntero base (base pointer).

Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parámetros de las funciones en los programas compilados).

Page 13: Unidad 2 Arquitectura de Computo

Registro de estado o de indicadores (flags).

Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones durante la ejecución de un programa. Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condición, que reflejan los resultados de operaciones del programa; los bits del 8 al 10 son indicadores de control y el resto no se utilizan. Estos indicadores pueden ser comprobados por las instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa según el resultado de las operaciones.

Clasificación de los registros.

Los registros internos del procesador se puede clasificar en 6 tipos diferentes.

1) Registros de segmento.

2) Registros de propósito general.

3) Registros de apuntadores.

4) Registros de banderas.

5) Registros de Puntero de instrucción.

6) Registros de propósito general.

Registros de segmento.

Un registro de segmento tiene 16 bits de longitud y facilita una área de memoria para direccionamiento conocida como segmento actual.

Registro Cs: El dos almacena la dirección inicial del segmento de código de un programa en el registro CS. Indica la dirección de una instrucción que es buscada para su ejecución.

Registro DS: genera una referencia a la localidad de un byte específico en el segmento de datos.

Registros SS: permite la colocación en memoria de una pila, para almacenamiento temporal de dirección y datos.

Registros ES: se utiliza para algunas operaciones con cadenas de caracteres se utiliza para el manejo de direccionamiento de memoria.

Page 14: Unidad 2 Arquitectura de Computo

Registros de Propósito General.

Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte.

Registro AX: El registro AX es el registro acumulador, es utilizado para operaciones que implican entrada/salida, y multiplicación y división (estas dos últimas en conjunto con el registro DX).

Registro BX: El registro BX es el registro base, y es el único registro de propósito general que puede ser un índice para direccionamiento indexado.

Registro CX: El registro CX es conocido como el registro contador. Puede contener un valor para controlar el número de veces que un ciclo se repite o un valor para corrimiento de bits.

Registro DX: El registro DX es el registro de datos. En algunas operaciones se indica mediante este registro el número de puerto de entrada/salida, y en las operaciones de multiplicación y división de 16 bits se utiliza junto con el acumulador AX.

Registro de Apuntador de Instrucciones.

El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. el IP indica la instrucción actual dentro del segmento de código que se esta ejecutando actualmente.

Los registros SP (apuntador de la pila) Y BP (apuntador de base) están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila.

SP: El apuntador de pila de 16 bits está asociado con el segmento SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila

BP: El apuntador base de 16 bits facilita la referencia de parámetros dentro de la pila.

Registros Índice Los registros SI y DI están disponibles para direccionamiento indexado y para sumas y restas.

Registro SI: El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas de caracteres. El SI está asociado con el segmento DS.

Registro DI: El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. El DI está asociado con el segmento ES.

Page 15: Unidad 2 Arquitectura de Computo

Registros de Banderas (Over flow flag, desbordamiento).

Indica desbordamiento del bit de mayor orden después de una operación aritmética de números con signo (1=existe overflow; 0=no existe overflow). DF (Direction flag, Direccion): Controla la selección de incremento o decremento de los registros SI y DI en las operaciones con cadenas de caracteres (1=decremento automático; 0=incremento).

IF (Interruption flag, Interrupcion): Controla el disparo de las interrupciones (1=habilita las interrupciones; 0=deshabilita las interrupciones) Indica que una interrupción externa, como la entrada desde el teclado sea procesada o ignorada.

TF (Trap flag, Trampa): Permite la operación del procesador en modo de depuración (paso a paso)

SF (Sign flag, Signo): Contiene el signo resultante de una operación aritmética (0=positivo; 1=negativo).

ZF (Zero flag, Zero): Indica el resultado de una operación aritmética o de comparación (0=resultado diferente de cero; 1=resultado igual a cero).

AF (Auxiliary carry flag, Acarreo auxiliar): Contiene el acarreo del bit 3. Esta bandera se prueba con las instrucciones DAA y DAS para ajustar el valor de AL después de una suma o resta BCD.

PF (Parity flag, Paridad): Indica si el número de bits 1, del byte menos significativos de una operación, es par (0=número de bits 1 es impar; 1=número de bits 1 es par).

CF (Carry flag, Acarreo): Contiene el acarreo del bit de mayor orden después de una operación aritmética; también almacena el contenido del último bit en una operación de desplazamiento o de rotación.

AX SP CS IP

BX BP DS flags

CX SI SS

DX DI ES

Registros de datos

Registros punteros de pila e índices

Registros de segmento

Registro puntero de instrucciones y flags

Page 16: Unidad 2 Arquitectura de Computo

2.2.1 Registros visibles para el usuario

Un registro visible al usuario es aquél que puede ser referenciado por medio del lenguaje máquina que ejecuta la CPU. Prácticamente todos los diseños contemporáneos de CPUs están provistos de varios registros visibles al usuario, en oposición a disponer de un único acumulador.

Podemos clasificarlos en:

- Uso General

- Datos

- Direcciones

- Códigos de Condición

Page 17: Unidad 2 Arquitectura de Computo

Registros de uso general.

pueden ser asignados por el programador a diversas funciones. A veces, su uso dentro del repertorio de instrucciones es para contener el operando para cualquier código de operación. Esto proporciona una utilización de registros de auténtico uso general. Con frecuencia, sin embargo, existen restricciones. Por ejemplo, puede haber registros específicos para operaciones en coma flotante. En algunos casos los registros de uso general pueden ser utilizados para funciones de direccionamiento. En otros casos hay una separación clara o parcial entre registros de datos y registros de direcciones.

Registros de datos.

pueden ser usados únicamente para contener datos y no se pueden emplear en el cálculo de una dirección de operando.

Registros de dirección

pueden ser en sí registros de uso más o menos general, o pueden estar dedicados a un modo de direccionamiento particular. El caso más conocido es el puntero a pila. La cantidad de registros generales o especializados es una cuestión de diseño. No hay solución óptima, pero la tendencia parece ir hacia el uso de registros especializados. Otro problema de diseño es el numero de registros, de uso general o de datos más direcciones, que tienen que incluirse.

Los registros de datos deben ser capaces de contener valores de la mayoría de tipos de datos. Algunas máquinas permiten que los registros contiguos sean usados como uno para contener valores de doble longitud. Una categoría final de registros, que es al menos parcialmente visible al usuario, contiene códigos de condición (también llamados indicadores o flags).

Los códigos de condición.

son bits fijados por el hardware de la CPU como resultado de alguna operación. Por ejemplo, una operación aritmética puede producir un resultado positivo, negativo o nulo, o con desbordamiento. Además de almacenarse el propio resultado en un registro o en la memoria, se obtiene también un código de condición. El código puede ser examinado con posterioridad como parte de una condición de bifurcación condicional. Los bits de códigos de condición se reúnen en uno o más registros. Por lo general, forman parte de un registro de control. Comúnmente, las instrucciones de máquina permiten que estos bits sean leídos por referencia implícita, pero no pueden ser alterados por el programador. En algunas máquinas, una llamada a subrutina dará lugar a la salvaguarda automática de todos los registros visibles al usuario, que serán restablecidos en el retorno de la subrutina.

Page 18: Unidad 2 Arquitectura de Computo

Registro índice

El direccionamiento indexado es un modo común de direccionamiento que implica sumar un índice a un valor base para obtener la dirección efectiva.

Puntero de segmento

Con direccionamiento segmentado, la memoria se divide en segmentos, que son bloques de palabras de tamaño variable. Una referencia a memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento. En este modo, se utiliza un registro que alberga una dirección base (ubicación inicial) de un segmento. Puede haber varios registros de este tipo: por ejemplo, uno para el sistema operativo (es decir, cuando se ejecuta código del sistema operativo en el procesador) y otro para la aplicación que está en ejecución.

Puntero de pila.

Si hay un direccionamiento de pila visible para los usuarios, la pila estará, por lo general, en la memoria principal, existiendo un registro dedicado a señalar la cima de la pila.

Esto permite el uso de instrucciones que no contienen ningún campo de dirección, tales como push (poner) y pop (sacar).

En algunas máquinas, una llamada a un procedimiento o subrutina provocará que los registros visibles de usuario se salven automáticamente, para luego restaurarlos al retomar. Este proceso de salvar y restaurar lo lleva a cabo el procesador como parte de la ejecución de las instrucciones de llamada y retomo. Esto permite que cada procedimiento pueda usar los registros de forma independiente. En otras máquinas, es responsabilidad del programador salvar los contenidos de los registros de usuario visibles que sean relevantes antes de hacer la llamada a un procedimiento, incluyendo instrucciones en el programa con tal propósito. Así pues, las instrucciones de salvar y restaurar pueden ser llevadas a cabo por el hardware o por el software, dependiendo de la máquina.

Page 19: Unidad 2 Arquitectura de Computo

2.2.2 Registros de control y estados

Varios registros se emplean para controlar las operaciones del procesador. En la mayoría de las máquinas, la mayor parte de estos registros no son visibles para los usuarios. Algunos de ellos pueden estar accesibles a las instrucciones de máquina ejecutadas en un modo de control o modo del sistema.

Una serie de factores inciden en el diseño de la organización de los registros de control y estado. Un punto clave es el soporte del sistema operativo. Cierto tipo de información de control es de utilidad específica para el sistema operativo. Si el diseñador del procesador dispone de una visión funcional del sistema operativo, la organización de los registros puede adaptarse convenientemente.

Otra decisión clave del diseño es la asignación de información de control a los registros y la memoria. Es habitual dedicar los primeros centenares o miles de palabras (las más bajas) de memoria para el control. El diseñador debe decidir la cantidad de información de control que debe residir en los rápidos y costosos registros, junto a la cantidad que debe permanecer en memoria principal, que es más lenta y barata.

Registro de estado.

Todos los diseños de CPUs incluyen un registro o un conjunto de registros, conocidos a menudo como palabra de estado de programa "programa status word", PSW), que contiene información de estado. La PSW contiene típicamente códigos de condición además de otra información de estado. Entre los campos comunes o indicadores se incluyen los expresados en la tabla.

Page 20: Unidad 2 Arquitectura de Computo

Los siguientes registros son esenciales en la ejecución de instrucciones;

Contador de programa (PC, Program Counter): Contiene la dirección de la instrucción a ser leída.

Registro de instrucción (IR, Instruction Regíster): Contiene la última instrucción leída. Todos los diseños de procesadores incluyen además un registro o conjunto de registros, conocidos a menudo como palabra de estado del programa (PSW, Program Status Word), que contiene información de estado. Normalmente, la PSW contiene códigos de condición junto a otra información de estado. Entre los campos e indicadores más comunes se incluyen los siguientes:

Signo: Contiene el bit del signo de la última operación aritmética efectuada.

Cero: Se activa cuando el resultado de una operación aritmética es cero.

Acarreo: Se activa cuando, como resultado de una suma o una resta, se produce un acarreo más allá del bit más significativo. Se utiliza en operaciones aritméticas de más de una palabra.

Igualdad: Se activa si una comparación lógica da como resultado la igualdad.

Desbordamiento: Empleado para señalar un desbordamiento aritmético.

Habilitar/inhahilitar interrupciónes: Empleado para habilitar o inhabilitar interrupciones. Cuando Las interrupciones están inhabilitadas, el procesador las ignora. Esto es muy deseable cuando el sistema operativo está ocupado en el tratamiento de otra interrupción.

Supervisor: Indica si el procesador está ejecutando en modo supervisor o en modo usuario. Ciertas instrucciones privilegiadas sólo se pueden ejecutar en modo supervisor y sólo se puede tener acceso a ciertas áreas de memoria en modo supervisor.

Page 21: Unidad 2 Arquitectura de Computo

2.3 El ciclo de instrucción

Page 22: Unidad 2 Arquitectura de Computo

Un ciclo de instrucción (también llamado ciclo de fetch-and-execute o ciclo de fetch-decode-execute en inglés) es el período que tarda la unidad central de proceso (CPU) en ejecutar una instrucción de lenguaje máquina.

Comprende una secuencia de acciones determinada que debe llevar a cabo la CPU para ejecutar cada instrucción en un programa. Cada instrucción del juego de instrucciones de una CPU puede requerir diferente número de ciclos de instrucción para su ejecución. Un ciclo de instrucción está formado por uno o más ciclos máquina.

Para que cualquier sistema de proceso de datos basado en microprocesador (por ejemplo un ordenador) o Microcontrolador (por ejemplo un reproductor de MP3) realice una tarea (programa) primero debe buscar cada instrucción en la memoria principal y luego ejecutarla.

Secuencia de acciones del ciclo de instrucción.

Habitualmente son cuatro los eventos o pasos que se llevan a cabo en cada ciclo de instrucción (ciclo de fetch):

Buscar la instrucción en la memoria principal

Se vuelca el valor del contador de programa sobre el bus de direcciones. Entonces la CPU pasa la instrucción de la memoria principal a través del bus de datos al Registro de Datos de Memoria (MDR). A continuación el valor del MDR es colocado en el Registro de Instrucción Actual (CIR), un circuito que guarda la instrucción temporalmente de manera que pueda ser decodificada y ejecutada.

Decodificar la instrucción

El decodificador de instrucción interpreta e implementa la instrucción. El registro de instrucción (IR) mantiene la instrucción en curso mientras el contador de programa (PC, program counter) guarda la dirección de memoria de la siguiente instrucción a ser ejecutada.

Page 23: Unidad 2 Arquitectura de Computo

Recogida de datos desde la memoria principal

También se lee la dirección efectiva de la memoria principal si la instrucción tiene una dirección indirecta, y se recogen los datos requeridos de la memoria principal para ser procesados y colocados en los registros de datos.

Ejecutar la instrucción

A partir del registro de instrucción, los datos que forman la instrucción son decodificados por la unidad de control. Ésta interpreta la información como una secuencia de señales de control que son enviadas a las unidades funcionales relevantes de la CPU para realizar la operación requerida por la instrucción.

Almacenar o guardar resultados

El resultado generado por la operación es almacenado en la memoria principal o enviado a un dispositivo de salida dependiendo de la instrucción. Basándose en los resultados de la operación, el contador de programa se incrementa para apuntar a la siguiente instrucción o se actualiza con una dirección diferente donde la próxima instrucción será recogida.

En él se ejecuta la instrucción. El registro de instrucciones está conectado a un decodificador, que determina cuántos bytes de información adicionales se requieren. Éstos se cargan mediante ciclos de búsqueda, como se indicó con anterioridad.

Cuando la ejecución está completa, la máquina comienza automáticamente el ciclo de búsqueda de la siguiente instrucción del programa. La ejecución es por tanto, una secuencia continua de ciclos de búsqueda y ejecución.

Page 24: Unidad 2 Arquitectura de Computo

Unidades Funcionales

Los pasos a seguir para el procesamiento de las instrucciones son los siguientes:

1. cada instrucción es leída ( una a la vez), desde la memoria, por el procesador.

2. cada instrucción es ejecutada por el procesador. La repetición de la lectura y ejecución (pasos 1 y 2 respectivamente), conforman la “ejecución de un programa”. Dicha ejecución puede detenerse si: la máquina se apaga, ocurre un error que no puede ser recuperado, o si, se encuentra una instrucción en el programa que detenga la computadora.

Lectura y ejecución de instrucciones

El procesador lee una instrucción de la memoria, al comienzo de cada Ciclo de instrucción. Se cuenta con un contador de programas ( PC program counter ), que lleva la cuenta de cual es la próxima instrucción a leer. Luego de leer cada instrucción el procesador incrementara el PC, de manera tal que la siguiente instrucción a leer será; la que se encuentra en la dirección inmediatamente superior de la memoria. La instrucción leída es cargada en el registro de instrucción ( IR instuction register ), que es un registro del procesador. El procesador interpreta la instrucción, la cual está en forma de código binario, que especifica la acción que el procesador llevará a cabo, y realizará la acción requerida.

Las acciones que se realizan para la lectura y ejecución de instrucciones se pueden clasificar en las siguientes categorías:

Procesador-memoria: los datos se transfieren del procesador a la memoria o viceversa.

Procesador E/S: los datos se transfieren desde o hacia un dispositivo periférico. Se realiza la transferencia entre el procesador y un módulo de entrada-salida.

Tratamiento de datos: el procesador puede realizar alguna operación aritmética o lógica sobre los datos.

Control: la secuencia de ejecución puede ser alterada si la instrucción lo especifica.

La ejecución de una instrucción puede incluir una combinación de las acciones antes mencionadas.

Page 25: Unidad 2 Arquitectura de Computo

Funciones de E/S

Los módulos de E/S, por ejemplo un controlador de disco, peden intercambiar datos directamente con el procesador y el este puede iniciar una escritura o lectura en la memoria, para ello debe indicar la dirección de una ubicación especifica.

El procesador puede leer datos de un módulo de E/S o escribir en él, para ello indica a un dispositivo especifico que esta controlado por un determinado módulo de E/S.

Para relevar al procesador de la tarea de E/S, es conveniente que los intercambios de E/S se produzcan directamente con la memoria. De esta manera el procesador le da a un módulo de E/S autoridad para leer o escribir en la memoria de modo que la transferencia de E/S se realiza sin obstruir al procesador.

Se releva al procesador durante la transferencia de la responsabilidad de intercambio, ya que el modulo de E/S emite ordenes de lectura o escritura en la memoria. La operación realizada se conoce como DMA (direct memory access) o acceso directo a memoria.

Ciclo de instrucción

Un ciclo de instrucción (tambien llamado ciclo de traer y ejecutar) es el período de tiempo durante el cual un ordenador lee y procesa una instrucción de lenguaje máquina de su memoria o la secuencia de acciones que la unidad central (CPU) funciona para ejecutar cada instrucción de código de máquina en un programa.

El nombre el ciclo traer-y-ejecutar comúnmente es usado.La instrucción debe ser traída de la memoria principal, y luego ejecutado por la CPU.Esto es fundamentalmente como un ordenador funciona, con su lectura de CPU y ejecución de una serie de instrucciones escritas en su lenguaje máquina.De esto surgen todas las funciones de un ordenador familiar a partir del final del usuario.

La CPU de cada ordenador puede tener ciclos diferentes basados en juegos de instrucción diferentes.

Para traer la instruccion desde la memoria principal la CPU presenta el valor de la PC sobre el bus de dirección.La CPU entonces trae la instrucción de la memoria principal vía el bus de datos en el Registro de Datos de Memoria (MDR).El valor del MDR entonces es colocado en el Registro de Instrucción Actual un circuito que sostiene la instrucción de modo que pueda ser descifrado y ejecutado.

Page 26: Unidad 2 Arquitectura de Computo

Memory Data Register (MDR).

Al decodificar la instrucción el decodificador de instrucción interpreta y pone en práctica la instrucción.

Registros que son críticos al ejecutar la traída:

El registro de instrucción (IR) - mantiene la instrucción actual. La PC - sostiene la dirección en la memoria de la siguiente instrucción a ser ejecutada.

Al traer archivos desde la memoria principal se lee la dirección eficaz de la memoria principal si la instrucción tiene una dirección indirecta. Traer requiere datos de la memoria principal para ser procesados y colocados en registros.

Page 27: Unidad 2 Arquitectura de Computo

2.3.1 Ciclo Fetch – Decode – Execute

Un ciclo de instrucción (también llamado ciclo de fetch-and-execute o ciclo de fetch-decode-execute en inglés) es el periodo de tiempo que tarda la unidad central de proceso (CPU) enejecutar una instrucción de lenguaje máquina.Comprende una secuencia de acciones determinada que debe llevar a cabo la CPU para ejecutar cada instrucción en un programa. Cada instrucción del juego de instrucciones de una CPUpuede requerir diferente número de ciclos de instrucción para su ejecución. Un ciclo deinstrucción está formado por uno o más ciclos máquina.

Fase de búsqueda.

En esta fase se transfiere la instrucción que corresponde ejecutar desdela memoria central a la unidad de control.

Fase de ejecución.

Consiste en la realización de todas las acciones que conlleva la propia instrucción.

Page 28: Unidad 2 Arquitectura de Computo

TIPOS DE INSTRUCCIONES.

Las instrucciones de acuerdo a su función se clasifican en:

Instrucciones de cálculo (aritmético y lógico).

Instrucciones aritméticas: pueden implicar transferencia de datos antes y/o después. Realizan operaciones aritméticas de las que se encarga la ALU. Se pueden clasificar en de 1 operando (valor absoluto, negación) y 2 operandos (suma, resta).

Instrucciones lógicas: al igual que las aritméticas, la ALU se encarga de realizar estas operaciones, que en este caso son de tipo lógico.

Instrucciones de transferencia de datos: en este tipo de instrucciones, se transfieren datos desde una localización a otra. Los pasos que se siguen para realizarlo son:

1.- Determinación de las direcciones de origen y destino de memoria.

2.- Realización de la transformación de memoria virtual a memoria real.

3.- Comprobación de la caché.

4.- Inicio del proceso de lectura/escritura en la memoria.

Instrucciones de ruptura de secuencia. De acuerdo a su formato y número de operandos se clasifican en:

INSTRUCCIONES DE TRES OPERANDOS.

También denominadas instrucciones de tres direcciones. Constan en primer lugar del código de operación al que siguen tres operandos, de los cuales, los dos primeros son las direcciones delos argumentos que hay que operar y el tercero es la dirección donde se depositará el resultado.

Page 29: Unidad 2 Arquitectura de Computo

INSTRUCCIONES DE DOS OPERANDOS.

Contiene el código de operación y dos operandos, de los cuales uno de ellos actúa, además, como receptor del resultado de la operación.

INSTRUCCIONES DE UN OPERANDO.

Se utiliza en computadoras cuya arquitectura funciona con filosofía de acumulador. El acumulador contiene previamente el primer argumento de la operación, el segundo es el contenido en la propia instrucción, y después de ser operado ambos, el resultado queda depositado de nuevo en el acumulador.

MÉTODOS DE DIRECCIONAMIENTO

El método de direccionamiento de una instrucción es el modo que se utiliza en la misma para indicar la posición de memoria en que está situado el dato o datos que constituyen los operandos que intervienen en la instrucción. Los principales métodos son:

Direccionamiento inmediato.

En este método el dato que hay que utilizar forma parte de la propia instrucción, no siendo necesario ningún acceso a memoria para la realización de la misma.

Direccionamiento directo.

En este caso la instrucción contiene la dirección de la memoria donde se encuentra almacenado el dato. Esto hace necesario un acceso a la memoria para trasladar el dato hasta la unidad aritmético-lógica.

Direccionamiento indirecto

Aquí la dirección contenida en la instrucción no es la del dato implicado sino la de una posición de memoria que contiene la dirección de ese dato. Esta posición se denomina dirección intermedia e implica en las instrucciones que utilizan este método de direccionamiento la necesidad de un ciclo de memoria más para acceder al dato.

Direccionamiento relativo.

En él, la dirección de memoria donde se encuentra el dato, se consigue sumando la dirección contenida en la propia instrucción con una magnitud fija contenida en un registro especial. De esta manera se posibilita el acceso a un conjunto de posiciones Entonces para concluir un ciclo Fetch es un conjunto de etapas que utiliza el procesador para ejecutar una instrucción de máquina. Cada instrucción es ejecutada siguiendo este mismo ciclo repetitivo. Las etapas que conforman el ciclo de instrucción, son las siguientes:

Page 30: Unidad 2 Arquitectura de Computo

Fetch de Instrucción

Realiza la búsqueda de la instrucción en memoria. El procesador extrae la dirección desde el contador de programa, PC, para conocer la ubicación de esa instrucción. Luego se realiza la lectura de la instrucción, quedando ésta en el registro de datos. El contador de programa es incrementado en 1, para contener la dirección de la siguiente instrucción.2.

Decodificación

El código de operación de la instrucción que se encuentra en el DR, se deposita en el registro de instrucciones IR. Luego, los circuitos de control interpretan ese código de operación para determinar qué operación se va aejecutar.3.

Fetch de Operando.

Realiza la búsqueda de un operando en memoria, si es necesario. Generalmente es la misma instrucción quien proporciona la dirección del operando al procesador.4.

Ejecución de la Operación.

Una vez conocida la naturaleza de la instrucción, y el operando ha sido extraído desde memoria, el procesador ejecuta la operación indicada por el código contenida en la instrucción.

2.3.2 Segmentación de instrucción

Segmentación de cauce:

Page 31: Unidad 2 Arquitectura de Computo

Conceptos básicos

La segmentación de cauce (pipelining) es una forma particularmente efectiva de organizar el hardware de la CPU para realizar más de una operación al mismo tiempo.

Consiste en descomponer el proceso de ejecución de las instrucciones en fases o etapas que permitan una ejecución simultánea.

Explota el paralelismo entre las instrucciones de un flujo secuencial.

Características

La segmentación es una técnica de mejora de prestaciones a nivel de diseño hardware.

La segmentación es invisible al programador.

Necesidad de uniformizar las etapas.

Al tiempo de la más lenta

El diseño de procesadores segmentados tiene gran dependencia del repertorio de instrucciones.

1.- Búsqueda (Fetch)

Se accede a memoria por la instrucción

Se incrementa el PC

2.- Decodificación (D, Decode)

Se decodifica la instrucción, obteniendo operación a realizar en la ruta de datos

Se accede al banco de registros por el/los operando/s (si es necesario)

Se calcula el valor del operando inmediato con extensión de signo (si hace falta)

3.- Ejecución (X, Execute)

Se ejecuta la operación en la ALU

4.- Acceso a memoria (M, Memory Access)

Si se requiere un acceso a memoria, se accede

5.- Almacenamiento (W, Writeback)

Si se requiere volcar un resultado a un registro, se accede al banco de registro

Ruta de datos de un ciclo

Page 32: Unidad 2 Arquitectura de Computo

Repertorio de Instrucciones

Instrucción Pseudocódigo DescripciónLW LW RT, inmed(RS) Carga registro RT desde memoriaSW SW RT, inmed(RS) Almacena en memoria desde registro RTADD ADD RD, RS, RT Suma palabras en registros RS y RT, resultado en

RDSUB SUB RD, RS, RT Resta palabras en registros RS y RT, resultado en

RDAND AND RD, RS, RT AND de palabras en registros RS y RT, resultado

en RDOR OR RD, RS, RT OR de palabras en registros RS y RT, resultado en

RDSLT SLT RD, RS, RT Pone 1 en RD si RS es menor o igual que RTBEQ BEQ RS, RT, destino Salta a ‘destino’ si RS es igual a RT

Page 33: Unidad 2 Arquitectura de Computo

Formato de instrucción

Diagrama de estados del controlador

Page 34: Unidad 2 Arquitectura de Computo

Ruta de Datos y unidad de control

Comparación monociclo-multiciclo

Page 35: Unidad 2 Arquitectura de Computo

Ruta de datos segmentados

Ruta de datos y control segmentado

Page 36: Unidad 2 Arquitectura de Computo

Prestaciones del cauce segmentado

Teórica: El máximo rendimiento es completar una instrucción con cada ciclo de reloj.

Si K es el número de etapas del cauce Vel. procesador segmentado = Vel. secuencial x K

El incremento potencial de la segmentación del cauce es proporcional al número de etapas del cauce.

Incrementa la productividad (throughput), pero no reduce el tiempo de ejecución de la instrucción

Ejemplo de segmentación

Análisis de la segmentación (1)

Suposiciones:

Todas las tareas duran el mismo tiempo.

Las instrucciones siempre pasan por todas las etapas.

Todos las etapas pueden ser manejadas en paralelo.

Page 37: Unidad 2 Arquitectura de Computo

Análisis de la segmentación (2)

Problemas:

No todas las instrucciones necesitan todas las etapas.

SW RT, inmed(RS) ; no utiliza W

En MSX88: un MOV AX, mem ; no requiere X

No todas las etapas pueden ser manejadas en paralelo.

F y M acceden a memoria

No se tienen en cuenta los saltos de control.

Atascos de un cauce (stall)

Situaciones que impiden a la siguiente instrucción

que se ejecute en el ciclo que le corresponde.

Estructurales

Provocados por conflictos por los recursos

Por dependencia de datos

Ocurren cuando dos instrucciones se comunican por

medio de un dato (ej.: una lo produce y la otra lo usa)

Por dependencia de control

Ocurren cuando la ejecución de una instrucción depende de cómo se ejecute otra (ej.: un salto y los 2 posibles caminos)

Page 38: Unidad 2 Arquitectura de Computo

Riesgos estructurales

Dos o más instrucciones necesitan utilizar el mismo recurso hardware en el mismo ciclo.

Riesgos estructurales (2)

Resolución ante el riesgo:

Page 39: Unidad 2 Arquitectura de Computo

Riesgos por dependencias de datos

Condición en la que los operandos fuente o destino de una instrucción no están disponibles en el momento en que se necesitan en una etapa determinada del cauce.

Tipos de dependencias de datos

1.- Lectura después de Escritura (RAW, dependencia verdadera)

una instrucción genera un dato que lee otra posterior

2.- Escritura después de Escritura (WAW, dependencia en salida)

una instrucción escribe un dato después que otra posterior sólo se da si se deja que las instrucciones se adelanten unas a otras

3.- Escritura después de Lectura (WAR, antidependencia)

una instrucción modifica un valor antes de que otra anterior que lo tiene que leer, lo lea no se puede dar en nuestro cauce simple

Tipos de dependencias (2)

Page 40: Unidad 2 Arquitectura de Computo

Riesgos por dep… datos (2)

Riesgos por dep… datos (3)

Page 41: Unidad 2 Arquitectura de Computo

Riesgos de control (o de instrucciones)

Una instrucción que modifica el valor del PC no lo ha hecho cuando se tiene que comenzar la siguiente.

Riesgos de control (2)

Las técnicas de organización se fueron implementando a medida que la tecnología fue avanzando y permitieron ponerlas en practica.

La de segmentación de instrucciones es una técnica muy usada hoy en día.

Que es la segmentación de instrucciones?. Para explicarlo recordemos primero el ciclo de la instrucción, abarca varias etapas, en las cuales se realizan distintas tareas, bien, como son distintas, las realizan generalmente distintas partes del procesador, por ejemplo, la parte de ejecución la va a realizar la ALU, pero en la etapa de captación la ALU no interviene, este es el punto, mientras una parte del procesador esta trabajando, hay otras que no. La técnica de segmentación de cause intenta que trabajen las distintas partes del procesador en paralelo.

Page 42: Unidad 2 Arquitectura de Computo

Por ejemplo cuando la etapa de ejecución recibe la instrucción, la etapa de captación se libera y podría empezar a captar la próxima instrucción.

Es muy gráfico y simple verlo haciendo una analogía con una linea de montaje de un producto en una fabrica, en la cual el producto va pasando por distintas etapas y en cada una se le hace algo al producto, no es necesario que el producto termine de pasar por todas las etapas para poder ingresar un nuevo producto a la linea de montaje.

El tema es hacer tareas en simultaneo en las cuales no se superpongan unidades funcionales.

Cuanto mas se pueda sementar el ciclo de instrucción mas beneficioso seria.

No todas las instrucciones utilizan todas las etapas, por ejemplo un movimiento de datos no utilizaría la etapa de ejecución, ni tampoco las etapas consumen la misma cantidad de tiempo, pero para simplificar la implementación, todas las instrucciones pasan por todas las etapas y todas las etapas duran lo que tarda la etapa mas lenta.

Teóricamente el incremento de la productividad es proporcional al numero de etapas, digo teóricamente porque el uso de segmentación trae aparejado muchos contratiempos que le van a bajar un poco ese rendimiento teórico.

Otra cosa a tener en cuenta es que la instrucción va a tardar lo mismo en ejecutarse, la diferencia esta en que el procesador va a ser más productivo.

Page 43: Unidad 2 Arquitectura de Computo

2.3.3 Conjunto de instrucciones: Características y funciones

Ante el diseño de un nuevo ordenador de propósito general hay que plantearse la siguiente cuestión: ¿Qué tipos de instrucciones deben ser incluidos en sus conjuntos de instrucciones? Antes de responder a esta pregunta, analizaremos las características que deben tener los juegos de instrucciones de las máquinas.

Los conjuntos de instrucciones de las maquinas deben tender a poseer una serie de propiedades, bastante ideales e imprecisas, que pueden resumirse en las siguientes:

El conjunto de instrucciones de un computador debe ser completo en el sentido de que se pueda construir un programa para evaluar una función computable usando una can- tidad de memoria razonable y empleando un tiempo moderado, es decir, el número de instrucciones de ese programa no debe ser demasiado elevado.

Los juegos de instrucciones también tienen que ser eficientes, esto significa que las funciones más necesarias deben poder realizarse usando pocas instruccion.

El conjunto de instrucciones de una máquina debe ser regular, es decir be ser simétrico (por ejemplo, si existe una instrucción de desplazamiento a la izquierda debe haber otra de desplazamiento a la derecha, etc.) y ortogonal, es decir, deben poder combinarse, en la medida de lo posible, todos las operaciones con todos los tipos de datos y modos de direccionamiento.

en muchas ocasiones tambien se le debe exigir a un computador que su juego de instrucciones sea compatible con modelos anteriores.

Una máquina puede llegar a funcionar con un juego de instrucciones muy limitado (re- cuérdese, por ejemplo, la máquina de Turing que sólo tiene 4 instrucciones, incluso se han diseñado máquinas teóricas con menos instrucciones), esto simplificaría mucho los circuitos de la máquina. Sin embargo, un conjunto de instrucciones demasiado simplificado origina, como consecuencia, unos programas demasiado complejos e ineficientes. Es necesario encontrar un compromiso entre la simplicidad del hardware y del software. Un mínimo para llegar a ese compromiso se consigue con los tipos de instrucciones siguientes:

Page 44: Unidad 2 Arquitectura de Computo

Instrucciones de transferencia de datos.

La operación de copiar datos de un lugar a otro es la operación más simple y a la vez importante. Las palabras mover o cargar que aparecen en los juegos de instrucciones de muchos ordenadores pueden dar lugar a confusión porque no se trata de mover o cargar sino de copiar (generalmente, en Informática, la palabra mover tiene el significado de copiar borrando el original). Las instrucciones de transferencia de datos necesitan que se especifiquen el original (fuente u origen) y el lugar donde se desea la copia (destino). Esta especificación variará según sean estos lugares que pueden estar en tres sitios: registros del procesador, memoria o cima de pila. Si el acceso es a una dirección de memoria habrá que especificarla de forma explícita, si se trata de la cima de pila normalmente la especificación será implícita, lo mismo ocurrirá si se trata del acumulador. En general, el dato a transferir podríamos definirlo como una terna con las siguientes componentes: Dirección Tipo Valor Normalmente la componente del dato que se transfiere es el valor pero existen instrucciones especiales para transferir las demás componentes, en especial la dirección. La extracción de la dirección de un dato se hace necesaria para facilitar la relocalización de los programas. Para aplicar muchos modos de direccionamiento (indexados, autoindexados, etc.) es necesaria la transferencia de una dirección a un registro. En muchos ordenadores esta dirección no se conoce a la hora de compilar el programa (precisamente porque el programa es relocalizable), por tanto, son necesarias instrucciones que calculen la dirección de un dato para transferirla a un registro, actualmente la mayoría de las máquinas poseen este tipo de instrucción bajo el nombre de move address.

Instrucciones aritméticas e Instrucciones lógicas.

Todos los ordenadores incorporan instrucciones aritméticas en sus juegos de instrucciones; la utilidad de este tipo de operaciones es evidente y no la comentaremos. En cuanto a las operaciones lógicas (AND, OR, NOT y XOR) tienen un uso muy variado: desde operaciones con bits individuales (TEST, SET, RESET y CHANGE) hasta el empaquetamiento y desempaquetamiento de caracteres. También pueden considerarse dentro de este grupo los desplazamientos y rotaciones cuya utilidad queda fuera de toda duda.

Page 45: Unidad 2 Arquitectura de Computo

Para aplicarlas, se realiza una operación AND del dato que se quiere analizar con una máscara que tenga un 1 en el lugar cuyo bit se quiere probar con el resto de la máscara a 0. El resultado de la operación será 0 si el bit en cuestión es 0, o distinto de 0 si el bit que se quiere probar es 1; por tanto, el resultado de la prueba quedará en el flag Z en forma complementada como se muestra en la figura 4.1. Muchas máquinas tienen esta operación bajo el nombre de BIT TEST.

Para poner a 0 un bit de un dato, se aprovechan las mismas propiedades del operador AND. Para aplicarlas, se construye una máscara que tenga a 1 todos los bits excepto el correspondiente al lugar que se quiere borrar que se pone a 0 y se hace un AND de esta máscara con el dato que se quiere tratar; como resultado de la operación tendremos el mismo dato pero con el bit puesto a cero. El proceso se muestra en la figura 4.2. Esta operación puede realizarse con varios bits a la vez, basta poner en la máscara 0 todos los bits que se quieran borrar. Muchos ordenadores poseen esta instrucción con el nombre de BIT CLEAR o BIT RESET.

Page 46: Unidad 2 Arquitectura de Computo

Los desplazamientos pueden ser de tres tipos: lógicos, aritméticos y rotaciones o desplazamientos circulares dependiendo del bit entrante. El desplazamiento lógico a la derecha difiere del aritmético en que el bit entrante es, en éste último, el mismo bit de mayor peso (bit de signo), mientras que en aquél es siempre un 0; Así se consigue que los desplazamientos aritméticos sean equivalentes a multiplicaciones (izquierda) y divisiones (derecha) por 2. En las rotaciones el valor del bit entrante es el mismo que el del saliente.

Instrucciones de control del flujo del programa (bifurcaciones, bucles, procedimientos, etc.)

Las instrucciones de control de flujo son las que modifican el secuenciamiento de la ejecución de las instrucciones del programa. En general, el secuenciamiento es implícito, es decir. la siguiente instrucción en ejecutarse es la que está físicamente detrás en el programa. Cuando esto no es así es por la acción de una instrucción de control de flujo.

Todas las instrucciones que modifican el flujo de la ejecución manejan el contador de programa. También, si la modificación del flujo de instrucciones se hace de forma condicional, esta condición vendrá dada por los bits de estado (N, Z, V y C). Vemos, por tanto, que para las instrucciones de control de flujo hay dos variables fundamentales: el contador de programa y los bits de condición.

Page 47: Unidad 2 Arquitectura de Computo

2.3.4 Modos de direccionamiento y formatos

Direccionamiento:

El campo de direcciones en un formato de instrucción esta bastante limitado.

Seria deseable referenciar un rango elevado de posiciones en memoria principal o de memoria virtual.

Existen diversas técnicas:

Compromiso entre:

Rango de direcciones y/o flexibilidad de direccionamiento

Numero de referencias a memoria y/o complejidad de cálculo de las direcciones.

Modos de direccionamiento

1.- Inmediato

2.- Directo

3.- Indirecto

4.- Registro

5.- Indirecto con registro

6.- Con desplazamiento (Indexado)

7.- Pila

Notaciones normalmente utilizadas:

A= Contenido de un campo de dirección en la instrucción.

R= Contenido de un campo de dirección en la instrucción que referencia un registro.

EA= Dirección real (efectiva) de la posición que contiene el operando que se referencia.

(X)= Contenido de la posición X.

Page 48: Unidad 2 Arquitectura de Computo

Consideraciones:

Prácticamente todas las arquitecturas ofrecen mas de uno de estos modos.

Problema a resolver: Como determina la unidad de control que modo de direccionamiento se esta utilizando en cada instrucción.?

Codops diferentes emplean modos distintos

Uno o mas bits pueden utilizarse como campo de modo.

Este campo de modo indica que tipo de direccionamiento

Otra cuestión: Dirección efectiva (EA).

Sin memoria virtual: La EA es una dirección de memoria principal o un registro

Con memoria virtual: La EA es una dirección virtual o un registro.

La correspondencia real con una dirección física dependerá del mecanismo de paginación.

No esta por tanto visible al programador.

Direccionamiento inmediato (1.1)

a) Modo de direccionamiento inmediato

Este modo puede utilizarse para definir y utilizar

constantes, o para fijar valores iniciales de variables.

Normalmente el número se almacena en complemento a dos; el bit más a la izquierda del campo operando se utiliza como bit de signo.

Direccionamiento inmediato (1.2)

El operando está en realidad presente en la propia instrucción:

Operando = A

e.j. ADD 5

Suma 5 al contenido del acumulador

5 es el operando

No se requiere una referencia a memoria para obtener el operando, ahorrándose un ciclo

Rápido / Mas sencilla

Desventaja: Rango limitado. Tamaño del nro limitado a la long. Del campo de direcciones, que es pequeño comparado con la longitud de la palabra.

Page 49: Unidad 2 Arquitectura de Computo

Direccionamiento Directo (2.1)

Campo de direcciones contiene la dirección efectiva del operando

EA= A

e.j. ADD A

Busca en memoria la dirección A para el operando

Sólo requiere una referencia a memoria

No necesita ningún cálculo especial

Espacio de direcciones restringido

Direccionamiento indirecto (3.1)

Problema del modo anterior: La long. del campo de direcciones es normalmente < la longitud de la palabra- > limita el rango de direcciones.

El campo de direcciones referencia la dirección de una palabra de memoria

La palabra de memoria contiene la dirección completa del operando

EA = (A)

Mira en A, encuentra el contenido de A (A) y busca allí el operando

e.j. ADD (A)

Page 50: Unidad 2 Arquitectura de Computo

Agrega el contenido de la celda apuntada por el contenido de A al acumulador

Direccionamiento indirecto (3.3)

Espacio de direccionamiento grande

Si N bits = longitud de la palabra, se dispone de un espacio de 2N direcciones.

Puede ser anidado, multinivel o en cascada

e.j. EA = ((..(A)..))

“Indicador de indirección”: 0: contiene el valor de EA

1: se invoca otro nivel.

Desventajas:

La ejecución de la inst. requiere dos referencias a memoria para captar el operando: una para captar su dirección y otra para obtener su valor.

Demasiado lento

Page 51: Unidad 2 Arquitectura de Computo

Direccionamiento de registro (4.1)

El campo de direcciones referencia un registro, en lugar de una dirección de memoria principal. EA = R

Un campo de direcciones que referencia a registros consta de 3 o 4 bits, ->pueden referenciarse un total de 8 o 16 registros de uso general

Es necesario un campo pequeño de direcciones en la instrucción

Instrucciones más cortas

Instrucciones de captación más rápidas

Direccionamiento de registro (4.2)

No se requieren referencias a memoria

Ejecución muy rápida

Desventaja: Espacio de direcciones muy limitado

Las CPU modernas emplean múltiples registros de uso general.

Requiere una buena programación en lenguaje ensamblador (ej. cuando se desarrollan compiladores) para conseguir una ejecución eficiente.

Direccionamiento de registro (4.3)

En caso de utilizar masivamente este tipo, los registros de la CPU se utilizan intensivamente.

Debido a su numero limitado se deben utilizar eficientemente solo si tiene sentido.

Ej.: almacenamiento de resultados intermedios de un calculo. Implementación de un algoritmo de multiplicación en complemento a dos, una cierta variable se referencia muchas veces, y seria conveniente implementarla en registro en lugar de memoria principal.

Page 52: Unidad 2 Arquitectura de Computo

Direccionamiento indirecto con registro (5)

Es análogo al indirecto

EA = (R)

El operando está en una celda de memoria referenciada mediante el contenido del Registro R

La limitación del espacio se supera: haciendo que R, referencie a una posición de palabra completa ( un registro), que contenga la dirección.

Emplea una referencia menos a memoria que el direccionamiento indirecto.

Direccionamiento con desplazamiento (6)

Modo muy potente: combina direccionamiento directo e indirecto con registro.

EA = A + (R)

Requiere que las instrucciones tengan dos campos de direcciones, al menos uno de ellos es explícito.

A = valor base, se utiliza directamente

R = registro que contiene el desplazamiento, cuyo contenido se suma a A para obtener la dirección efectiva.

o viceversa

Tres versiones:

Desplazamiento relativo

Page 53: Unidad 2 Arquitectura de Computo

Direccionamiento con registro base.

Indexado.

Direccionamiento relativo (6.1)

Es una versión del direccionamiento con desplazamiento

R= Contador de programa, PC

La dirección de instrucción actual se suma al campo de direcciones

EA = A + (PC): La dirección efectiva es un desplazamiento relativo a la dirección de la instrucción.

i.e. toma el operando de la celda A a partir de la localización corriente apuntada por el PC

Si la mayoría de las referencias a memoria están próximas a la instrucción en ejecución, permite ahorrar bits de direcciones en la instrucción.

Direccionamiento con Registro Base (6.2)

El registro referenciado contiene una dirección de memoria

Y el campo de dirección contiene un desplazamiento desde dicha dirección

R contiene un apuntador a la dirección de memoria base

R (la referencia a registro) puede ser explícita o implícita

Direccionamiento indexado (6.3)

Es opuesto a la interpretación del registro-base.

Page 54: Unidad 2 Arquitectura de Computo

Registro referenciado contiene un desplazamiento positivo

Campo dirección es una dirección de memoria principal=> contiene + bits que un campo de direcciones

De una instrucción. Comparable que emplee el método anterior

El método para calcular EA en ambos es igual

A = base

R = contiene un desplazamiento positivo desde esa dirección

EA = A + R

Las referencias a registro pueden ser explicitas o implícitas.

Mecanismo eficiente para ejecutar operaciones iterativas.

EA = A + R

R++

Direccionamiento indexado (6.4)

Ejemplo: Dado una lista de n números. Almacenados a partir de la posición A.

Se quiere sumar 1 a cada elemento de la lista.

Se necesita-> captar c/elemento, sumar 1 y memorizar el resultado.

La secuencia de direcciones efectivas necesarias es:

A, A+1, A+2,….

El valor A se almacena en el campo de dirección de la instrucción;

El registro elegido (registro índice) se inicializa a 0.

Luego de c/operación, el registro se incrementa en 1.

Esta operación puede hacerse automáticamente, como parte del ciclo de instrucción (auto indexado).

Combinaciones (6.5)

El autoindexado con incremento:

EA = A + (R).

(R)<- (R) + 1;

Page 55: Unidad 2 Arquitectura de Computo

Direccionamiento de Pila (7)

Pila: Matriz lineal de posiciones

Los elementos se añaden en la cabecera.

La pila tiene asociado un puntero, cuyo valor es la dirección de la cabecera o tope de la pila.

El puntero de pila se mantiene en un registro.

Operando está (implícitamente) en el tope de la pila.

Son de hecho, direcciones de acceso indirecto con registro.

Las instrucciones maquina no necesitan incluir una referencia a memoria, operan implícitamente con la cabecera de la pila.

Bastante comunes en microprocesadores.

Como se organizan los bits de una instrucción:

Formatos de instrucciones

Descripción en bits de una instrucción en términos de las distintas partes que la componen.

Incluye un código de operación (codop)

Incluye (implícita o explícitamente) ninguno o algunos operandos.

Cada operando explicito se referencia según los modos vistos.

El formato debe indicar (implícita o explícitamente) el modo de direccionamiento para cada operando

En la mayoría de los repertorios de instrucciones se emplea más de un formato de instrucción

Existe una gran variedad de diseños de formatos

Analizaremos aspectos claves del diseño:

Longitud de instrucción (I)

El aspecto de diseño más básico a considerar.

Page 56: Unidad 2 Arquitectura de Computo

Afecta y se ve afectada por:

Tamaño de memoria

Organización de memoria

Estructura de buses

Complejidad de la CPU

Velocidad de la CPU

Programadores desean + codops + operandos +, modos de direccionamiento y > rango de direcciones) -

Requiere de más bits, y empuja hacia longitudes de instrucción mayores.

Compromiso entre el deseo de disponer de un repertorio de instrucciones máquina potente y la necesidad de ahorrar espacio.

Todo empuja a longitudes de inst. Mayores, pero:

Una long de 32 bits ocupa el doble de espacio de una de 16, pero probablemente no es el doble de útil.

Longitud de instrucción (II)

Otra consideración: Debiera cumplirse que el tamaño de la instrucción fuera igual al tamaño de las transferencias a memoria (tamaño del bus de datos).

O que uno fuera un múltiplo del otro.

Si así no fuera: no se consigue un nro. Entero de instrucciones durante un ciclo de captación.

Esto afecta la velocidad de transferencia de la memoria

La velocidad del procesador ha aumentado mucho

Cuello de botella: solución uso de memoria cache o de instrucciones mas cortas.

Las instrucciones de 16 bits pueden captarse el doble de rápido que las de 32, pero no pueden ejecutarse el doble de rápido.

Longitud de instrucción (III)

Otra consideración: La longitud de la instrucción debiera ser un múltiplo de la long. de un carácter (8 bits) y de la long. de los nros en coma fija.

La long. de palabra de memoria: unidad “natural” de organización.

La palabra define normalmente el tamaño de los números en coma fija (gralmente coinciden)

Page 57: Unidad 2 Arquitectura de Computo

El tamaño de palabra suele coincidir, con el tamaño de transferencias a memoria.

Seria deseable que una palabra almacenara un nro. entero de caracteres.

SINO: Se perderían bits en cada palabra cuando se almacenan múltiples caracteres o,

Habría caracteres partidos entre dos palabras.

Por ej. IBM debió pasar de arquitecturas de 36 bits a las de 32 bits en la serie (700/7000)

Asignación de los bits (I)

Otro aspecto a considerar: como asignar los bits en el formato de la instrucción?

Relación clave entre codops y capacidad de direccionamiento. (+ Codops – bits direccionamiento)

Existen codops de long. Variable

Factores que afectan la definición del uso dado a los bits de direccionamiento:

Número de modos de direccionamiento

Número de operandos

Registros frente a memoria

Número de conjuntos de registros

Rango de direcciones

Granularidad de las direccione

Asignación de los bits (II)

Número de modos de direccionamiento

Un modo puede indicarse de manera implícita (indexación)

Los modos explícitos requieren uno o más bits de modo.

Número de operandos

Las instrucciones actuales permiten dos operandos.

C/dirección de operando podria requerir su propio indicador de modo, o el uso del indicador de modo podrá estar limitado a solo uno de los campos de direcciones.

Asignación de los bits (III)

Registros frente a memoria

Maquina debe disponer de registros para traer los datos a la CPU para procesarlos.

Page 58: Unidad 2 Arquitectura de Computo

Con varios registros solo se necesitan unos pocos bits para especificar el registro.

Diversos estudios indican que es aconsejable disponer de 8 a 32 registros visibles para el usuario.

Número de conjuntos de registros

Varias maquinas tienen un conj. De registros de uso general, que contiene 8 o 16 registros.

Suelen emplearse para guardar datos y para almacenar direcciones para direccionamiento con desplazamiento.

Tendencia actual: grupos de registros especializados.

Asignación de los bits (IV)

Rango de direcciones

Para referencia a memoria, este rango esta relacionado con el nro. De bits de direccionamiento.

Esto impone limitación, raramente se emplea direccionamiento directo.

En direccionamiento con desplazamiento: el rango se amplia al definido por la longitud del registro de direcciones.

Es conveniente permitir desplazamientos bastantes mas largos que los del registro de direcciones y esto necesita de un nro. Relativamente grande de bits de direcciones en la instrucción.

Granularidad de las direcciones:

Para direcciones que referencian a memoria en lugar de registros.

Con palabras de 16 o 32 bits, una dirección puede referenciar una palabra o un byte, según elija el diseñador.

El direccionamiento por bytes es conveniente para manipular caracteres, pero requiere, para un tamaño de memoria dado, de más bits de direcciones.

Asignación de los bits (IV)

Al momento de determinar la asignacion de bits en un formato:

Gran cantidad de factores a tener en cuenta y sopesar.

Instrucciones de longitud variable

Esta táctica hace más fácil proporcionar un amplio repertorio de codops de log. Variable.

Page 59: Unidad 2 Arquitectura de Computo

El direccionamiento puede ser más flexible, con varias combinaciones de referencias a registros y a memoria y modos de direccionamiento.

Desventajas: Aumento de complejidad de la CPU.

Page 60: Unidad 2 Arquitectura de Computo

2.4 Casos de estudio de CPU reales

Page 61: Unidad 2 Arquitectura de Computo

La CPU se compone de seis elementos clave que trabajan en combinación para procesar y ejecutar comandos.

1.- En primer lugar, la unidad de control es el cerebro de la CPU. Esta parte recibe los datos de entrada y decide dónde enviar la información procesada.

2.- En segundo lugar, el caché de instrucciones es donde se almacenan las instrucciones de la unidad de control. Los datos específicos de instrucción se cargan en la CPU al momento de fabricarla.

3.- En tercer lugar, la unidad de captación previa es el portal de información. Los datos de entrada pasan a través de la captación previa, que almacena una copia de los datos antes de enviarlos a ser procesados por la unidad de control

4.-En cuarto lugar, la unidad de decodificación traduce la instrucción de entrada en código binario, que luego se envía al quinto componente,

5.-la unidad lógica aritmética. La ALU (por sus siglas en inglés) recibe el código de la unidad de decodificación y elige la acción necesaria para llevar a cabo el comando.

6.-La sexta es la memoria caché de la CPU. Aquí, se almacena toda la información que ha sido enviada, recibida o precargada.

Tipos

Existen diferentes tipos de CPU, cada tipo viene con diferentes grados de velocidad de memoria e instrucciones preestablecidas. Cuanto más grande sea la CPU, más rápido puede procesar, almacenar y ejecutar comandos.

Una CPU de un solo núcleo es la unidad más pequeña disponible. Se encuentra generalmente en pequeños aparatos que sólo realizan un simple conjunto de acciones tales como un control remoto o un juguete.

Las CPU de doble núcleo contienen dos unidades de mando y contienen suficiente energía y memoria para las computadoras personales. Las CPU multinúcleo contienen varias unidades de comandos. Ellas son utilizadas principalmente por grandes dispositivos electrónicos industriales, servidores y estaciones de trabajo de red.

Page 62: Unidad 2 Arquitectura de Computo

Tamaño

El tamaño de la CPU se refiere al poder de la unidad para realizar tareas y la cantidad de espacio de memoria que contiene. El tamaño de la CPU se mide en dígitos binarios y se llaman bits. Originalmente, las CPU contenían cuatro bits, pero las modernas tienen ocho.

Las CPU de ocho bits son los componentes modernos más pequeños y lentos disponibles y se utilizan sobre todo en juguetes o electrodomésticos.

Las de 16 y 32 bits se han convertido en el tamaño estándar de CPU y se pueden encontrar en computadoras personales, computadoras portátiles, teléfonos celulares y otros dispositivos electrónicos que pueden realizar una variedad de tareas.

Las CPU de sesenta y cuatro bits son cada vez más populares en la gama alta de computadoras personales y portátiles. Existen las CPU más grandes, las cuales se utilizan generalmente para fines industriales.

Introducción a los distintos casos

Una de las primeras decisiones a la hora de diseñar un procesador es decidir cuál será su juego de instrucciones. Este conjunto de instrucciones (órdenes) es el lenguaje que realmente entiende el procesador, y constituye lo que se conoce como lenguaje ensamblador o lenguaje-máquina.

Lenguaje maquina

Consta únicamente de 0 y 1 para su funcionamiento El lenguaje máquina es el de nivel más bajo posible. Las instrucciones en este lenguaje son secuencias binarias, que por comodidad puedes escribirlas en hexadecimal.

El lenguaje máquina es distinto para cada computador. Excepto cuando existe compatibilidad entre familias Las ventajas de esto son evidentes, ya que para el hombre resulta más fácil manipular grupos de caracteres y la traducción se haría de manera automática. Por ejemplo, se podría escribir:

ALMACENAR = 11010110, 00011101

Esto indicaría que el contenido de la posición 11010110 había que pasarlo a la posición 00011101 si se sabe que al grupo alfabético ALMACENAR le corresponde la secuencia de bits 11110101.

Ventajas del Lenguaje Máquina

Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje de programación.

Page 63: Unidad 2 Arquitectura de Computo

Desventajas del Lenguaje Máquina

Dificultad y lentitud en la codificación.

Poca fiabilidad.

Gran dificultad para verificar y poner a punto los programas.

Los programas solo son ejecutables en el mismo procesador (CPU).

Lenguaje ensamblador

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.

Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.

Tipos de instrucciones:

Instrucciones de transferencia

Instrucciones de bifurcación

Instrucciones aritméticas y lógicas

Instrucciones de comparación y de bit

Instrucciones de desplazamiento

Instrucciones de entrada/salida

Instrucciones de control

Características

Programar en lenguaje ensamblador es difícil de aprender, entender, leer, escribir, depurar y mantener, por eso surgió la necesidad de los lenguajes compilados.

A pesar de perder rendimiento en un proceso de compilación, en la actualidad la mayoría de las computadoras son suficientemente rápidas.

El lenguaje ensamblador no es portable.

Programar en lenguaje ensamblador lleva mucho tiempo.

Los programas hechos en lenguaje ensamblador son generalmente más rápidos. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas de 5 a 100 veces más rápidos que con lenguajes de alto nivel.

Page 64: Unidad 2 Arquitectura de Computo

Los programas hechos en lenguaje ensamblador generalmente ocupan menos espacio. Un buen programa en lenguaje ensamblador puede ocupar casi la mitad de espacio que su contrapartida en lenguaje de alto nivel.

Con el lenguaje ensamblador se pueden crear segmentos de código imposibles de formar en un lenguaje de alto nivel.

Ventajas

Rápido en ejecución. (Velocidad de ejecución)

Ahorra memoria.

Pocas instrucciones

Gratis.

Desventajas

Difícil programar. (Difícil de comprender la metodología de la programación)

Susceptible a errores. (Difícil de encontrar un error)

Instrucciones de transferencia

MOV transfiere el operando fuente al destino

PUSH transfiere el operando fuente a la pila

POP transfiere el último dato de la pila al operando destino

Instrucciones de bifurcación

Page 65: Unidad 2 Arquitectura de Computo

Instrucciones aritméticas y lógicas

ADD: suma sin acarreo

ADC: suma con acarreo

SUB: resta sin acarreo

SBB: resta con acarreo

MUL: multiplicación sin signo

IMUL: multiplicación con signo

DIV: división sin signo

IDIV: división con signo

INC: incrementar

DEC: decremento

NEG: cambia de signo dejando el operando en C2

Instrucciones lógicas:

AND, NOT, OR, XOR

Instrucciones de comparación y de bit

Instrucción de comparación:

No almacenan el resultado, sólo modifican los flags

CMP: compara números (resta pero no guarda el resultado solamente modifica los flags de estado)

Instrucciones de bit:

Tienen la función de modificar un solo bit o leer su estado. Son típicas en la configuración de los flags

TEST: comparación lógica a nivel de bits

CLI: clear flag de interrupción

STI: set flag de interrupción

CLC: clear flag de acarreo

STC: set flag de acarreo (realiza la operación lógica AND pero no guarda el resultado únicamente modifica los flags)

Page 66: Unidad 2 Arquitectura de Computo

Instrucciones de desplazamiento

Todas las instrucciones de desplazamiento y rotaciones tienen en común:

El último valor desplazado se copia en el flag de acarreo

Si el número de desplazamientos es mayor que uno, se debe colocar el valor en el registro CL

Instrucciones de desplazamiento:

SAR: desplazamiento aritmético a la derecha

SAL: desplazamiento aritmético a la izquierda

SHR: desplazamiento lógico a la derecha

SHL: desplazamiento lógico a la izquierda

ROR: rotación a la derecha

ROL: rotación a la izquierda

RCR: rotación a la derecha a través del acarreo

RCL: rotación a la izquierda a través del acarreo

Instrucciones de entrada/salida

IN: Transfiere información desde un puerto de entrada a un registro

OUT: Escribe información en un puerto de salida desde un registro

Instrucciones de control

WAIT: hace esperar al procesador

HLT: detiene el procesador

NOP: no operación

Page 67: Unidad 2 Arquitectura de Computo

Estructura de un programa en ensamblador

Dosseg; prepara los segmentos para trabajar con DOS

.model small; define el modo del ejecutable

.stack 100h; define el tamaño de la pila

.data; zona de definición de los datos

Definición de datos

.code

Mov ax, @data; inicialización de los datos en

Mov ds, ax; el segmento de datos

Código del programa

Mov AH, 4Ch; terminación del programa y

Int 21h; devolución del control

End; fin de programa

CISC Y RISC

Una de las primeras decisiones a la hora de diseñar un microprocesador es decidir cuál será su juego de instrucciones.

La decisión por dos razones; primero, el juego de instrucciones decide el diseño físico del conjunto; segundo, cualquier operación que deba ejecutarse en el microprocesador deberá poder ser descrita en términos de un lenguaje de estas instrucciones.

Frente a esta cuestión caben dos filosofías de diseño; máquinas denominadas CISC y máquinas denominadas RISC.

Page 68: Unidad 2 Arquitectura de Computo

Arquitectura RISC

En la arquitectura computacional, RISC (del inglés reduced instruction set computer) es un tipo de microprocesador con las siguientes características fundamentales:

Instrucciones de tamaños fijos y presentados en un reducido número de formatos.

Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos.

El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria.

Las máquinas RISC protagonizan la tendencia actual de construcción de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM, SPARC... son ejemplos de algunos de ellos.

RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse.

Page 69: Unidad 2 Arquitectura de Computo

El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.

La idea fue inspirada por el hecho de que muchas de las características que eran incluidas en los diseños tradicionales de CPU para aumentar la velocidad estaban siendo ignoradas por los programas que eran ejecutados en ellas. Además, la velocidad del procesador en relación con la memoria de la computadora que accedía era cada vez más alta. Esto con llevó la aparición de numerosas técnicas para reducir el procesamiento dentro del CPU, así como de reducir el número total de accesos a memoria.

Características:

En pocas palabras esto significa que para cualquier nivel de desempeño dado, un chip RISC típicamente tendrá menos transistores dedicados a la lógica principal. Esto permite a los diseñadores una flexibilidad considerable; así pueden, por ejemplo:

Incrementar el tamaño del conjunto de registros.

Mayor velocidad en la ejecución de instrucciones.

Implementar medidas para aumentar el paralelismo interno.

Añadir cachés enormes.

Añadir otras funcionalidades, como E/S y relojes para mini controladores.

Construir los chips en líneas de producción antiguas que de otra manera no serían utilizables.

No ampliar las funcionalidades, y por lo tanto ofrecer el chip para aplicaciones de bajo consumo de energía o de tamaño limitado.

Las características que generalmente son encontradas en los diseños RISC son:

Codificación uniforme de instrucciones, lo que permite una de codificación más rápida.

Un conjunto de registros homogéneo, permitiendo que cualquier registro sea utilizado en cualquier contexto y así simplificar el diseño del compilador.

Modos de direccionamiento simple con modos más complejos reemplazados por secuencias de instrucciones aritméticas simples.

Los tipos de datos soportados en el hardware no se encuentran en una máquina RISC.

Page 70: Unidad 2 Arquitectura de Computo

Los diseños RISC también prefieren utilizar como característica un modelo de memoria Harvard, donde los conjuntos de instrucciones y los conjuntos de datos están conceptualmente separados.

Arquitectura CISC

En la arquitectura computacional, CISC (Complex instruction set computer) es un modelo de arquitectura de computadora.

Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC.

Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente micro instrucciones.

Los CISC pertenecen a la primera corriente de construcción de procesadores, antes del desarrollo de los RISC. Ejemplos de ellos son: Motorola 68000, Zilog Z80 y toda la familia Intel x86 usada en la mayoría de las computadoras personales actuales.

Entre las ventajas de CISC destacan las siguientes:

Reduce la dificultad de crear compiladores.

Permite reducir el costo total del sistema.

Reduce los costos de creación de software.

Mejora la compactación de código.

Facilita la depuración de errores.

Page 71: Unidad 2 Arquitectura de Computo

MERCADO DE PROCESADORES.

Aunque los procesadores Intel y AMD comparten dos arquitecturas comunes, x86(utilizada en los procesadores de 32 bits y en los de 64 bits que actúan en el modo de 32 bits) y x64(una extensión de x86 que permite archivos más grandes, mayores tamaños de memoria y programas más complejos), estas familias de procesadores difieren en muchos sentidos, como:

Zócalos de procesador distinto.

Tipos de micro código diferentes.

Diferencias en los diseños de doble núcleo o multinúcleo.

Tamaños de cache.

Rendimiento frente a la velocidad del reloj.

Intel

Procesadores Intel.

Entre los procesadores Intel desarrollados desde el 2000 hasta la actualidad se encuentran las siguientes familias de productos:

Pentium III

Pentium IV

Pentium D

Celeron

Core 2 Dúo

Core 2 Quad

La tecnología Centrino de Intel consiste en una combinación del Core 2 Dúo y ciertos chipsets de Intel creados para los ordenadores portátiles,

Page 72: Unidad 2 Arquitectura de Computo

AMD

Procesadores AMD.

Los Procesadores AMD contemporáneos de los de Intel Pentium III y sus sucesores pertenecen a las siguientes familias hasta mediados del 2008:

Athlon

Duron

Athlon XP

Sempron

Athlon 64

Athlon 64 FX

Athlon 64 X2

Phenom X3

Phenom X4

Tecnologías de CPU

Tecnología HT (HyperThreading)

La Tecnología HyperThreading, la desarrolló Intel para el procesamiento de dos hilos de ejecución dentro de un solo procesador. En esencia, cuando la tecnología HT está habilitada en el BIOS del sistema y el procesador está ejecutando una aplicación multihilo, lo que está haciendo es emular dos procesadores físicos

Page 73: Unidad 2 Arquitectura de Computo

Regulación del Procesador.

No es necesario que los procesadores a toda velocidad cuando tienen pocas tareas que realzar o ninguna. Reduciendo o regulando la frecuencia de reloj del procesador cuando hay poco trabajo, el chip funciona a menos temperatura, el sistema gasta menos energía y, en el caso de los ordenadores portátiles, la batería dura más. La regulación, veces conocida como regulación térmica, también puede producirse cuando el procesador se calienta demasiado para que el sistema de refrigeración del ordenador funcione de forma correcta.

Intel emplea los términos SpeedStep y Enhanced SpeedStep para sus tecnologías de regulación de procesador AMD ha optado por el nombre de Cool’Quiet.

Overclock

Overclock es un término inglés que alude a la práctica de hacer funcionar un procesador u otro componente, como la memoria o la unidad de procesamiento grafico (GPU) de una tarjeta de video, a velocidades superiores a la normal.

Las técnicas utilizadas con procesadores son aumentar el multiplicador del reloj o hacer funcionar el Bus delantero (FSB) a frecuencias superiores a la normal. Estos cambios se realizan modificando los ajustes normales en la configuración del BIOS del sistema para el procesador.

Page 74: Unidad 2 Arquitectura de Computo

Modulo Regulador de Voltaje (VRM).

Desde las versiones Socket 7 de Intel Pentium, los procesadores no han recibido la corriente directamente desde la fuente de alimentación. En lugar de ello, se usa un dispositivo llamado modulo regulador de voltaje (VRM) para reducir la corriente de 5V o 12V de la fuente de alimentación a la potencia que solicita el procesador a través de su identificador de voltaje (VID).

Page 75: Unidad 2 Arquitectura de Computo

Frecuencia de Reloj y rendimiento.

La frecuencia de reloj en relación a un procesador o microprocesador indica la frecuencia a la cual los transistores que lo conforman conmutan eléctricamente, es decir abren y cierran el flujo de una corriente eléctrica

Una medida común del rendimiento del procesador es la frecuencia de reloj. Sin embargo, ese dato puede ser engañoso.

Por ejemplo, los procesadores Intel Core 2 Dúo y AMD Athlon 64 X2 realizan las tareas de computación mucho más rápido que el Pentium D, a pesar de que la frecuencia de reloj de Pentium D es mucho mayor.

32 Bits frente a 64 Bits.

Los procesadores desarrollados antes del AMD Athlon 64 se diseñaron para sistemas operativos y aplicaciones de 32 Bits. El software de 32 bits no puede acceder a más de 4GB de RAM (de hecho, los programas Windows de 32 bits solamente pueden utilizar 3,25 GB de RAM), lo que dificulta el trabajo con archivos de datos grandes, pues solo se puede cargar una parte del archivo si este es más grande que el tamaño máximo de la memoria.

Page 76: Unidad 2 Arquitectura de Computo

Conclusión

Para concluir esta unidad daremos dado el hecho de que se ha logrado aprender lo básico de un funcionamiento del CPU los términos pueden llegar a ser un poco complicados y difíciles de manejar aun ya aprendiendo ya que cada vez los CPU evolucionan, dentro de lo que se pudo llegar a comprender las Memoria de control organización del microprocesador y memoria de programa que son muy importantes antes de dar el paso a las estructuras de registros que llegan a jugar un rol importante dentro del CPU ya que ahí nos enteramos de que en el CPU se tienen lugar a la mayor cantidad de trabajo real de una computadora. Así mismo se dará a conocer sus subpartes que son la ALU(unidad aritmética y lógica) y la UC(unidad de control y la unidad de registros, se aprendió los tipos de operaciones que realizan cada una de ellas y el porqué de que las tengan que realizar, para así poder llevarlas a un ciclo de instrucción y cómo funcionan cada una de ellas el ciclo de instrucción llegue a ser fácilmente comprendido y también conocer los tipos de ciclos y como están clasificados y cuando se deberán de aplicar las segmentaciones de instrucciones y también conocer las características y funciones de las instrucciones para saber con qué estás trabajando y comprender su modo de direccionamiento y el formato que tendrán, y para su estudio del CPU se pudo observar que tiene distintas perspectivas o vistas de la persona, puede ser la comercial, hablar de los vendedores, cifras y sacar investigaciones de los principales hoy en día como lo son Intel y AMD o tomarlo desde el punto de vista de que es lo que hace el CPU sus tecnologías, CISC o RISC, si es lenguaje maquina en su totalidad o se puede usar en el un lenguaje ensamblador y saber cuáles son las mejores opciones al momento de adquirir un CPU.