Descargar

Conceptos de Arquitectura de Computadoras (resumido de William Stallings)

Enviado por Juan Ramallo


Partes: 1, 2

  1. Repertorio de instrucciones, características y funciones
  2. Interrupciones P66 P221 P446 P470
  3. Entrada/Salida P207
  4. Segmentación de instrucciones P449
  5. Posibles soluciones a atascos
  6. RISC
  7. Memoria P104
  8. Buses del sistema P75
  9. Procesadores superescalares P528
  10. Procesamiento paralelo P669

Clase 1

Repertorio de instrucciones, características y funciones

Elementos de las instrucciones: código de operación, referencias a operandos origen y destino y referencia a la siguiente instrucción.

Las pilas se emplean para gestionar las llamadas y retornos de procedimientos.

Las instrucciones se representan por una secuencia de bits, la cual está dividida en campos: codop de 4 bits y dos referencias a operandos de 6 bits cada una.

Tipos de instrucciones: procesamiento de datos, ya sean aritméticas o lógicas; almacenamiento de datos, instrucciones de memoria; transferencia de datos, instrucciones de E/S; de control de flujo, instrucciones de comprobación y bifurcación.

Tipos de datos: direcciones, números, caracteres o datos lógicos.

Pilas: Apéndice 10A. P396

Una pila es un conjunto ordenado de elementos, en el que solo uno de ellos es accesible en un instante dado. Cabecera de pila, el punto de acceso. Longitud de pila, es el número de elementos en la pila y puede variar. LIFO. Se usa para gestionar llamadas y retornos a/de subrutinas, también para la evaluación de expresiones. Las pilas usuales tienen un puntero de pila, base de pila, límite de la pila.

Modos de direccionamiento y formatos P408

Cómo especificar los operandos y las operaciones de las instrucciones. Dos aspectos, primero cómo especificar la dirección de un operando y segundo cómo se organizan los bits de una instrucción para definir las direcciones de los operandos y la operación que realiza dicha instrucción. Modos de direccionamiento más comunes:

  • Inmediato, el operando está presente en la propia instrucción, no requiere acceso a memoria por lo cual ahorra un ciclo en esa etapa pero el tamaño del número es restringido a la longitud del campo de direcciones.

  • Directo, se manda la dirección efectiva del operando, solo requiere una referencia a memoria y no necesita ningún cálculo especial, está limitado porque proporciona un espacio de direcciones restringido

  • Indirecto, requiere de dos referencias a memoria para captar el operando: una para captar su dirección y otra para obtener su valor; para una longitud de palabra de N bits, se dispone ahora de un espacio de direcciones de 2^N.

  • Registro, el campo de direcciones referencia un registro, solo es necesario un campo pequeño de direcciones en la instrucción, no se requieren referencias a memoria, el tiempo de acceso a un registro interno del procesador es mucho menor que para la memoria principal.

  • Indirecto con registro, el campo de direcciones de la instrucción referencia a una posición de una palabra completa (un registro) que contiene la dirección.

  • Con desplazamiento, requiere que las instrucciones tengan dos campos de direcciones, al menos unos de los cuales explícito, el valor de uno de los campos se utiliza directamente y el otro campo hace referencia implícita definida por el código de operación, se refiere a un registro cuyo contenido se suma al otro campo para generar la dirección efectiva

  • Direccionamiento relativo, se usa implícitamente como registro referenciado al contador de programa PC, ahorra bits de direcciones en la instrucción.

  • Direccionamiento con registro base, el registro referenciado contiene una dirección de memoria y el campo de dirección contiene un desplazamiento desde dicha dirección.

  • Indexado, el campo de dirección referencia una dirección de memoria principal y el registro referenciado contiene un desplazamiento positivo desde esa dirección, sirve para ejecutar operaciones iterativas, con un registro índice, tras cada operación, el registro índice se va modificando. Ya que se considera que el campo de direcciones es una dirección de memoria, generalmente contiene más bits que un campo de direcciones de una instrucción comparable que emplee direccionamiento con registro base.

  • Pila, es un bloque de posiciones reservado, los elementos se añaden en la cabecera, tiene asociado un puntero cuyo valor es la dirección de la cabecera; alternativamente los dos elementos de la cabecera de la pila pueden residir en registros del procesador, en cuyo caso el puntero de pila hace referencia al tercer elemento de la pila. El puntero de pila se mantiene en un registro. Así las referencias a posiciones de la pila en memoria son de hecho direcciones de acceso indirecto con registro. Es un modo de direccionamiento implícito, las instrucciones de máquina no necesitan incluir una referencia a memoria sino que operan implícitamente con la cabecera de la pila.

Formatos de instrucciones P420

Define la descripción en bits de una instrucción en términos de las distintas partes o campos que la componen. Debe incluir un código de operación (codop) e, implícita o explícitamente, cero o más operandos. Cada operando explícito se referencia utilizando uno de los modos de direccionamiento descritos anteriormente. El formato debe indicar el modo de direccionamiento para cada operando, implícita o explícitamente. En la mayoría de los repertorios de instrucciones se emplean más de un formato de instrucción.

  • Longitud de instrucción, se ve afectada por el tamaño de la memoria, su organización, la estructura de buses, la complejidad del procesador y la velocidad del procesador. Se desea disponer de un repertorio de instrucciones de máquina potente y también ahorrar espacio. Una instrucción de 64 bits ocupa el doble de espacio que una de 32 bits pero probablemente no es el doble de útil. Así mismo, las instrucciones de 16 bits pueden captarse el doble de rápido que las de 32 bits, pero probablemente no pueden ejecutarse el doble de rápido.

  • Asignación de los bits:

  • Número de modos de direccionamiento los modos de direccionamiento son indicados de manera explícita usando uno o más bits de modo, aunque a veces puede indicarse de manera implícita.

  • Número de operandos, cada dirección de operando podría requerir su propio indicador de modo

  • Registros frente a memoria, una máquina debe disponer registros para traer los datos al procesador a fin de procesarlos. Es aconsejable disponer de 8 a 32 registros visibles para el usuario.

  • Número de conjuntos de registros, conjunto de registros de uso general, 8 a 16 registros, pueden emplearse para guardar datos y para almacenar direcciones de direccionamiento con desplazamiento. Hoy en día se usan dos o más conjuntos (bancos) especializados, así se necesitarían menos bits para identificar un registro (banco de menor tamaño) y el codop determina de forma implícita qué conjunto de registros se está referenciando (bancos).

  • Rango de direcciones, para referencias a memoria, el rango de direcciones que puede utilizarse está relacionado con el número de bits de direccionamiento. Debido a esto raramente se emplea el direccionamiento directo. En direccionamiento con desplazamiento, el rango se amplía al definido por la longitud del registro de direcciones.

  • Granularidad de las direcciones, una dirección puede referenciar una palabra o un byte, según elija el diseñador; se quiere manipular caracteres por byte, esto requiere, para un tamaño de memoria dado, más bits de direcciones. (byte menor que palabra)

Organización de los registros P440

Dentro del procesador hay un conjunto de registros que funciona como un nivel de memoria por encima de la memoria principal y de la caché en la jerarquía, son de dos tipos:

  • Registros visibles por el usuario, permiten al programador de lenguaje de máquina minimizar las referencias a memoria usando registro. Es aquél que puede ser referenciado por medio del lenguaje de máquina que ejecuta el procesador. Pueden ser de:

  • Uso general, cualquier registro de uso general puede contener el operando para cualquier código de operación, también pueden usarse para funciones de direccionamiento.

  • Datos, pueden usarse únicamente para contener datos y no se pueden emplear en el cálculo de la dirección de un operando.

  • Direcciones, dedicados a un modo de direccionamiento particular:

  • Punteros de segmento, contiene la dirección de la base del segmento, múltiples registros.

  • Registros índice, para direccionamiento indexado y pueden ser autoindexados.

  • Puntero de pila, si existe la pila, hay un registro dedicado que apunta a la cabecera de la pila, permitiendo un direccionamiento implícito (push, pop)

  • Códigos de condición, indicadores o "flags", son bits fijados por el hardware del procesador como resultado de alguna operación. Pueden ser leídos por el programador pero no alterados. Muchos procesadores basados en IA-64 y MIPS, no usan códigos de condición en absoluto.

  • Registros de control y de estado, utilizados por la unidad de control para controlar el funcionamiento del procesador y por programas privilegiados del sistema operativo para controlar la ejecución de programas.

  • Son esenciales cuatro registros para la ejecución de una instrucción, se usan para la transferencia de datos entre el procesador y la memoria:

  • Contador de programa (PC): contiene la dirección de la instrucción a captar.

  • Registro de instrucción (IR): contiene la instrucción captada más recientemente.

  • Registro de dirección de memoria (MAR): contiene la dirección de una posición de memoria.

  • Registro intermedio de memoria (MBR): contiene la palabra de datos a escribir en memoria o la palabra más leída recientemente.

  • Conjunto de registros conocido como palabra de estado del programa:

  • Signo

  • Cero

  • Acarreo

  • Igual

  • Desbordamiento

  • Interrupciones habilitadas/inhabilitadas

  • Supervisor

Ciclo de captación P602

Hace que una instrucción sea captada de la memoria, usa cuatro registros:

  • Registro de dirección de memoria, conectado a las líneas de dirección del bus del sistema, especifica la dirección de memoria de una operación de lectura o escritura

  • Registro intermedio de memoria, conectado a las líneas de datos del bus del sistema, contiene el valor a almacenar en memoria o el último valor leído de memoria

  • Contador de programa, contiene la dirección de la siguiente instrucción a captar

  • Registro de instrucción, contiene la última instrucción captada

El ciclo consta de tres pasos:

  • Transferir el contenido de PC a MAR

  • Transferir el contenido de la posición de memoria especificada por MAR a MBR. Incrementar, en la longitud de la instrucción, el contenido del PC

  • Transferir el contenido de MBR a IR

Ciclo indirecto P604

El siguiente paso es captar los operando fuente. Si la instrucción especifica una dirección indirecta, un ciclo indirecto ha de preceder al ciclo de ejecución. El campo de dirección en la instrucción se transfiere a MAR, se usa después para captar la dirección del operando, el campo de dirección IR se actualiza con el contenido de MBR de modo que tenga una dirección directa en lugar de una indirecta.

Ciclo de interrupción P604

Consiste en:

  • 1. El contenido de PC se transfiere a MBR, se guarda para el retorno de la interrupción

  • 2. MAR se carga con la dirección en la cual va a guardarse el contenido de PC

  • 3. PC se carga con la dirección de comienzo de la rutina de procesamiento de la interrupción

  • 4. Almacenar MBR, que contiene el antiguo valor de PC, en la memoria.

Ciclo de ejecución P605

En una máquina con N códigos de operación diferentes, pueden ocurrir N secuencias diferentes de micro-operaciones en este ciclo. Sumar de una dirección de memoria a un registro puede implicar que en un principio IR contiene la instrucción suma, la parte de dirección de IR se carga en MAR, se lee la posición de memoria referenciada, la ALU suma los contenidos del registro y MBR.

Ciclo de instrucción P446 P61 P606

Registro de dos bits llamado código de ciclo de instrucción, designa el estado del procesador en términos de en qué parte del ciclo se encuentra este:

  • 00 Captación

  • 01 Indirecto

  • 10 Ejecución

  • 11 Interrupción

Incluye los siguientes sub-ciclos: (más el indirecto)

  • Captación, llevar la siguiente instrucción a la memoria del procesador

  • Ejecución, interpretar el código de operación y llevar a cabo la operación indicada

  • Interrupción, si las interrupciones están habilitadas y ha ocurrido una interrupción, guardar el estado del proceso actual y atender la interrupción.

El ciclo de instrucción es el procesamiento que requiere una instrucción. Al comienzo de cada ciclo de instrucción, la CPU capta una instrucción de memoria. Ésta se almacena en un registro de la CPU conocido como registro de instrucción (IR). La CPU interpreta la instrucción y lleva a cabo la acción requerida. Pueden ser de cuatro tipos:

  • Procesador-Memoria: transferencia de datos entre ambos

  • Procesador-E/S: transferencia de datos entre la CPU y un módulo E/S

  • Procesamiento de datos: realiza alguna operación aritmética o lógica con los datos

  • Control: una instrucción especifica que la secuencia de ejecución se altere (saltos)

La ejecución de una instrucción puede implicar una combinación de estas acciones. Para un ciclo de instrucción dado, existen varios estados y algunos pueden no darse y otros pueden visitarse más de una vez:

  • Cálculo de la dirección de la instrucción

  • Captación de instrucción

  • Decodificación de la operación indicada en la instrucción

  • Cálculo de la dirección del operando

  • Captación de operando

  • Operación con los datos

  • Almacenamiento de operando

El ciclo indirecto se dice al sub-ciclo de instrucción extra que se considera por captar las direcciones indirectas de una instrucción.

Clase 2

Interrupciones P66 P221 P446 P470

Las interrupciones proporcionan una forma de mejorar la eficiencia del procesador. Éste es un mecanismo mediante el que otros módulos (E/S, memoria) pueden interrumpir el procesamiento normal de la CPU. Clases de interrupciones:

  • Programa, generadas por alguna condición producida por algún resultado de alguna operación realizada, como el desbordamiento aritmético, división por cero, intento de ejecutar una instrucción máquina inexistente e intento de acceder fuera del espacio de memoria permitido.

  • Temporización, generadas por un temporizador interno al procesador, esto permite al sistema operativo realizar ciertas funciones de manera regular.

  • E/S, generadas por un controlador E/S, para indicar finalización de operaciones con condiciones de error o no.

  • Fallo de hardware, generadas por un fallo, como la falta de potencia de alimentación o un error de paridad en la memoria.

(*)Con el uso de interrupciones, el procesador puede dedicarse a ejecutar otras instrucciones mientras una operación de E/S está en curso. Dentro del ciclo de interrupción, el procesador comprueba si se ha generado alguna interrupción, indicada por la presencia de una señal de interrupción. Si hay alguna interrupción pendiente, el procesador hace:

  • Suspende la ejecución del programa en curso y guarda su contexto

  • Carga el contador de programa con la dirección de comienzo de una rutina de gestión de interrupción

Luego prosigue con el ciclo de captación y accede a la primera instrucción del programa de gestión de interrupción (forma parte del sistema operativo). Con interrupciones múltiples se pueden hacer dos cosas:

  • Desactivar las interrupciones mientras se está procesando una interrupción, el procesador puede y debe ignorar la señal de petición de interrupción. Luego de que termine de gestionar esta interrupción y antes de proseguir con el código, el procesador comprueba si se han producido interrupciones adicionales . Las interrupciones se manejan en un orden secuencial estricto. No tiene en cuenta la prioridad relativa ni las solicitudes con un tiempo crítico.

  • Definir prioridades para las interrupciones y permitir que una interrupción de prioridad más alta pueda interrumpir a un gestor de interrupción de prioridad menor. (Relacionado al ciclo de instrucción*)

Las interrupciones por software son generalmente usadas para hacer llamadas a funciones del SO, no requieren conocer la dirección de la rutina en tiempo de ejecución. Afectan al procesador de la misma manera que las interrupciones por hardware. Las interrupciones por hardware son generadas por dispositivos E/S, son eventos asincrónicos o no planeados, no están relacionadas con el proceso en ejecución en ese momento, son conocidas como pedidos de interrupción.

Ciclo de interrupción:

  • 1. Se comprueba si se ha solicitado alguna interrupción

  • 2. Si no hay señal se capta la siguiente instrucción

  • 3.  Si hay algún pedido de interrupción pendiente:

  • a.  Se suspende la ejecución del programa en curso

  • b.  Guarda su contexto (próxima instrucción a ejecutar y el estado del procesador)

  • c. Carga el PC con la dirección de comienzo de la rutina de gestión de la interrupción correspondiente

  • d. Finalizada la rutina de gestión, el procesador retoma la ejecución del programa del usuario en el punto de interrupción.

En el Pentium existen interrupciones, que se generan por una señal del hardware y puede ocurrir cuando sea, y excepciones, que se generan desde el software y son provocadas por la ejecución de una instrucción.

  • Interrupciones enmascarables, las recibe el procesador por el INTR y el procesador no reconoce una interrupción enmascarable a no ser que el indicador de habilitación de interrupciones esté a uno.

  • Interrupciones no enmascarables, las recibe el procesador por NMI, no se puede evitar el reconocimiento de estas interrupciones

  • Excepciones detectadas por el procesador, cuando el procesador encuentra un error mientras intenta ejecutar una instrucción

  • Excepciones programadas, hay instrucciones que generan excepciones

Tabla de vectores de interrupción, cada tipo de interrupción tiene asignado un número, que se usa para indexar en la tabla de vectores de interrupción, cada vector de interrupción de 32 bits es la dirección de la rutina de servicio de interrupción del numero de interrupción correspondiente.

Clase 3

Entrada/Salida P207

La arquitectura de E/S del computador es su interfaz con el exterior.

Dispositivos externos, se conectan al computador mediante un enlace a un módulo de E/S, intercambian datos entre el exterior y el computador, son denominados periféricos (teclado, monitor, impresora, mouse, etc). La conexión con el módulo de E/S se realiza a través de señales de control, estado y datos. Los datos se intercambian en forma de un conjunto de bits que son enviados a, o recibidos desde, el módulo de E/S. Las señales de control determinan la función que debe realizar el dispositivo (entrada, lectura, salida, escritura, indicar el estado o algún control particular del dispositivo). Los datos son el conjunto de bits a ser enviados o recibidos del módulo de E/S. Las señales de estado indican el estado del dispositivo (listo o no listo, preparado para transferir datos o no).

Las principales funciones y requisitos de un módulo de E/S son:

  • Control y temporización

  • Comunicación con el procesador

  • Comunicación con los dispositivos

  • Almacenamiento temporal de datos

  • Detección de errores

Son posibles tres técnicas para las operaciones de E/S, las dos primeras técnicas implican al procesador a ser responsable de extraer los datos de la memoria principal en una salida y de almacenar los datos en la memoria principal en una entrada; la tercer técnica se conoce como acceso directo a memoria (el módulo E/S y la memoria principal intercambian datos directamente sin el procesador):

  • E/S programada, los datos se intercambian entre el procesador y el módulo de E/S. El procesador ejecuta un programa que controla la operación de E/S, incluyendo la comprobación del estado del dispositivo, el envío de una orden de lectura o escritura y la transferencia del dato. El procesador una vez que envió la orden al módulo de E/S debe esperar hasta que la operación de E/S concluya pero si el procesador es más rápido que el módulo de E/S, el procesador desperdicia este tiempo. Hay cuatro tipos de ordenes de E/S que puede recibir un módulo cuando es direccionado por el procesador:

  • Control, para activar el periférico e indicarle qué hacer

  • Test, para comprobar condiciones de estado

  • Lectura, hace que el módulo de E/S capte un dato de un periférico y lo sitúe en un buffer interno

  • Escritura, hace que el módulo de E/S capte un dato del bus de datos y lo transmita al periférico

Dos modos de direccionamiento cuando el procesador, la memoria principal y las E/S comparten un bus común:

  • Asignadas en memoria, existe un único espacio de direcciones para las posiciones de memoria y los dispositivos de E/S

  • Aislada, el espacio de direcciones de E/S está aislado del de memoria, dispone de líneas de lectura y escritura en memoria junto con líneas para órdenes de entrada y salida

  • E/S mediante interrupciones, el procesador luego de enviar una orden de E/S a un módulo continua realizando algún trabajo útil. Cuando un dispositivo E/S termina una operación se produce:

  • 1. El dispositivo envía una señal de interrupción al procesador

  • 2. El procesador termina la ejecución de la instrucción en curso antes de responder la interrupción

  • 3. El procesador comprueba si hay interrupciones, determina que hay una, y envía una señal de reconocimiento al dispositivo que la originó. El dispositivo desactiva su señal

  • 4. El procesador guarda la información necesaria para continuar el programa en curso en el punto en que se interrumpió. Se guarda el estado del procesador que se almacena en el registro Palabra de Estado del Programa, se guarda también la posición de la siguiente instrucción a ejecutar (PC)

  • 5. El procesador carga el contador de programa con la posición de inicio del programa de gestión de la interrupción solicitada. Continúa con el ciclo de instrucción siguiente.

  • 6. Se deben guardar los contenidos de los registros del procesador puesto que estos puede ser utilizados por la rutina de interrupción, se suele usar una pila.

  • 7. La rutina de gestión puede continuar procesando la interrupción

  • 8. Una vez terminado el procesamiento de la interrupción, se recuperan los valores de los registros y se los vuelve a almacenar en sus registros correspondientes.

  • 9. Paso final recuperar los valores de la Palabra de Estado del Programa y del contador de programa.

Problemas: habrá múltiples módulos de E/S, cómo determina el procesador qué dispositivo ha provocado la interrupción y si hay varias interrupciones cómo decidir cuál atender; existen cuatro técnicas:

  • Múltiples líneas de interrupción entre el procesador y los módulos de E/S, no es práctico dedicar más de unas pocas líneas del procesador a ser líneas de interrupción, y como algunas van a estar conectadas a varios módulos vuelve a ocurrir el problema.

  • Consulta de software, cuando se detecta una interrupción se produce una bifurcación a una rutina de servicio de interrupción que se encarga de consultar a cada módulo de E/S para determinar el módulo que ha provocado la interrupción. El procesador lee el estado de un registro de estado direccionable de cada módulo de E/S para identificar quién solicitó la interrupción. Una vez identificado se ejecuta la rutina de servicio específica para ese dispositivo. Una desventaja es el tiempo que consume.

  • Conexión en cadena de los módulos de E/S, consulta de hardware; todos los módulos de E/S comparten una línea común para solicitar interrupciones, la línea se conecta encadenando los módulos uno tras otro, cuando el pedido de interrupción es recibido se activa el reconocimiento de interrupción, siendo una señal que se propaga a través de la secuencia de módulos hasta que alcanza un módulo que solicitó la interrupción.

  • Interrupción vectorizada, el módulo que solicitó la interrupción responde a la señal propagada colocando una palabra en las líneas de datos, esta palabra se denomina vector y es la dirección del módulo de E/S. El procesador utiliza el vector como un puntero a la rutina de servicio de dispositivo apropiada, evitándose así de ejecutar una rutina de servicio general. Con el arbitraje de bus, que es otra técnica vectorizada, un módulo E/S debe disponer del control del bus antes de pedir interrupción, así sólo un módulo puede activar la línea en un instante.

Con varias líneas de interrupción, el procesador simplemente selecciona la línea con más prioridad. Con la consulta de software, el orden en el que se consultan los módulos determinan su prioridad. El orden de los módulos en la conexión en cadena determina su prioridad. El arbitraje de bus puede emplear un esquema de prioridad.

El Intel 8086 tiene sólo una línea de petición de interrupción (INTReq) y por lo tanto una sola de confirmación (INTAck), se utiliza un árbitro o gestor de interrupciones externo (PIC), este chip tiene ocho líneas de interrupción por lo tanto podrá manejar ocho módulos de E/S; es útil tener una interfaz programable de periféricos (PIO), es un módulo de E/S de propósito general con veinticuatro líneas de E/S programables.

  • Acceso directo a memoria (DMA): inconvenientes entre las dos técnicas anteriores son que la velocidad de transferencia de E/S está limitada por la velocidad del procesador y que el procesador debe dedicarse a la gestión de las transferencias de E/S, cuando hay que transferir grandes volúmenes de datos se requiere una técnica más eficiente, el DMA. El DMA requiere un módulo adicional en el bus del sistema, éste es capaz de imitar al procesador y recibir el control del sistema cedido por el procesador, necesita el control para transferir datos a, y desde, memoria a través del bus del sistema. El DMA usa el bus sólo cuando el procesador no lo necesita y lo suelta sólo cuando termine de transferir los datos (modo ráfaga) lo cuál puede degradar el funcionamiento del procesador, o debe forzar al procesador a que suspenda su funcionamiento para transferir una sola palabra y luego devolver el uso del bus, robándole así un ciclo de bus al procesador (modo robo de ciclo), se transfiere más lento pero sin degradar al procesador.

Canales de E/S, pueden ejecutar instrucciones de E/S, poseen control completo sobre las operaciones de E/S, la CPU no ejecuta instrucciones de E/S. Las instrucciones se almacenan en memoria principal para ser ejecutadas por un procesador de uso específico contenido en el canal de E/S. Tipos de canales:

  • Canal selector, controla varios dispositivos de velocidad elevada y transfiere datos a uno de esos, en instantes dados; el canal selecciona un dispositivo y efectúa la transferencia; los dispositivos son manejados por un controlador; el canal ocupa el lugar de la CPU para controlar estos controladores de E/S

  • Canal multiplexor, puede manejar la E/S de varios dispositivos al mismo tiempo; para dispositivos de velocidad reducida, un multiplexor de byte acepta o transmite caracteres tan rápido como es posible a varios dispositivos; para dispositivos de velocidad elevada, un multiplexor de bloque entrelaza bloques de datos de los distintos dispositivos.

Clase 4

Segmentación de instrucciones P449

Es una forma efectiva de organizar el hardware de la CPU para realizar más de una operación al mismo tiempo, en un extremo acepta nuevas entradas antes de que otras entradas aceptadas con anterioridad aparezcan como salidas en el otro extremo. Esto consiste en descomponer el proceso de ejecución de las instrucciones en fases o etapas que permitan una ejecución simultánea

Con un cauce de varias etapas se supone que las etapas tendrán casi igual duración; no siempre cada instrucción recorre todas las etapas del cauce; se supone que todas las etapas pueden funcionar en paralelo, conflictos de acceso a memoria; las etapas del cauce no tienen todas la misma duración, habrá cierta espera en algunas etapas; el salto condicional puede invalidar varias captaciones de instrucciones; la llegada de una interrupción es otro evento impredecible. Situaciones que impiden la continua ejecución en el cauce:

  • Atascos estructurales, provocado por conflictos en los recursos, solución es un ciclo o ciclos de parada

  • Atascos por dependencia de datos, ocurren cuando dos instrucciones se comunican por medio de un dato; RAW, una instrucción genera un dato que lee otra posterior; WAW, una instrucción escribe un dato después que otra posterior, se da si las instrucciones se adelantan unas a otras; WAR, una instrucción modifica un valor antes que una instrucción anterior lo lea, por las etapas no se da en todos los cauces

  • Atascos por dependencia de control, ocurren cuando la ejecución de una instrucción depende de cómo se ejecuta otra; una instrucción que modifica el valor del PC no lo ha hecho cuando se tiene que comenzar la siguiente

La instrucción de salto condicional es el principal obstáculo, tratamientos:

  • Flujos múltiples, duplica las partes iniciales del cauce y deja que este capte las dos instrucciones utilizando los dos caminos; hay retardos debido a la competencia por el acceso a los registros y a la memoria

  • Pre-captar el destino del salto, se pre-capta la instrucción destino del salto, además de la siguiente a la de salto. Se guarda hasta ejecutar el salto, si se produce el salto ya habrá sido pre-captado.

  • Buffer de bucles, es una memoria pequeña de gran velocidad gestionada por la etapa de captación de instrucción del cauce, contiene secuencialmente las n instrucciones captadas más recientemente. Si se va a producir un salto el hardware comprueba primeramente si el destino del salto está en el buffer. Tiene tres utilidades:

  • Con el uso de pre-captación, el buffer contendrá instrucciones que secuencialmente están después de la dirección de donde se capta la instrucción actual, estas instrucciones estarán disponibles sin necesitar el tiempo de acceso a memoria habitual

  • IF-THEN-ELSE, el destino ya estará en el buffer si son unas pocas posiciones más allá de la dirección de la instrucción de salto

  • Si el buffer es lo suficientemente grande como para guardar todas las instrucciones de un bucle, estas instrucciones solo se van a captar de la memoria la primera vez de la iteración

  • Predicción de saltos

  • Predecir que nunca se salta

  • Predecir que siempre se salta

  • Predecir según el código de operación

  • Conmutador saltar/no saltar

  • Tabla de historia de saltos

Las tres primeras son estáticas, las dos últimas dependen de la historia de la ejecución. A cada instrucción de salto pueden asociarse uno o más bits que reflejen su historia reciente, estos son consultados a modo de conmutador saltar/no saltar que dirige al procesador a tomar una decisión. La tabla de historia de saltos es una pequeña memoria caché asociada a la etapa de captación de instrucción del cauce, consta de la dirección de una instrucción de salto, un determinado numero de bits de historia que guardan el estado de uso de esa instrucción, e información sobre la instrucción destino.

  • Salto retardado, las instrucciones de salto tienen lugar después de lo deseado, se reordenan automáticamente las instrucciones del programa

El incremento potencial de la segmentación del cauce es proporcional al número de etapas del cauce. Incrementa la productividad, pero no reduce el tiempo de ejecución de la instrucción.

Clase 5

Posibles soluciones a atascos

Soluciones a riesgos de datos:

  • Técnica hardware, conocida como adelantamiento, consiste en pasar directamente el resultado obtenido con una instrucción a las instrucciones que lo necesitan como operando

  • Técnica software, evita los riesgos reordenando las instrucciones del código sin afectar los resultados, máxima separación de instrucciones con dependencia RAW, realizada por el compilador, instrucciones "nop", r

(* Resto del tema con respecto a saltos es mencionado anteriormente)

Clase 6

RISC

Principales avances desde el nacimiento del computador:

  • Concepto de familia, separa la arquitectura de una máquina de su implementación

  • Unidad de control micro-programada, propuesta por Wilkes en 1951, facilita la tarea de diseñar e implementar la unidad de control y da soporte al concepto de familia

  • Memoria caché, su introducción en la jerarquía de memoria mejoró las prestaciones de manera espectacular

  • Partes: 1, 2
Página siguiente