- Repertorio de instrucciones,
características y funciones - Interrupciones P66 P221 P446
P470 - Entrada/Salida P207
- Segmentación de instrucciones
P449 - Posibles soluciones a
atascos - RISC
- Memoria
P104 - Buses
del sistema P75 - Procesadores superescalares
P528 - 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 restringidoIndirecto, 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 modoRegistros 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/inhabilitadasSupervisor
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
escrituraRegistro 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 memoriaContador de programa, contiene la
dirección de la siguiente instrucción a
captarRegistro de instrucción,
contiene la última instrucción
captada
El ciclo consta de tres pasos:
Transferir el contenido de PC a
MARTransferir el contenido de la
posición de memoria especificada por MAR a MBR.
Incrementar, en la longitud de la instrucción, el
contenido del PCTransferir 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ón2. MAR se carga con la
dirección en la cual va a guardarse el contenido de
PC3. PC se carga con la
dirección de comienzo de la rutina de procesamiento de
la interrupción4. 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
procesadorEjecución, interpretar
el código de operación y llevar a cabo la
operación indicadaInterrupció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 ambosProcesador-E/S: transferencia de datos
entre la CPU y un módulo E/SProcesamiento de datos: realiza alguna
operación aritmética o lógica con los
datosControl: 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ónCaptación de
instrucciónDecodificación de la
operación indicada en la instrucciónCálculo de la dirección
del operandoCaptación de operando
Operación con los
datosAlmacenamiento 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 contextoCarga 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ón2. Si no hay señal se capta
la siguiente instrucción3. Si hay algún pedido de
interrupción pendiente:
a. Se suspende la
ejecución del programa en cursob. 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 correspondiented. 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 interrupcionesExcepciones detectadas por el
procesador, cuando el procesador encuentra un error mientras
intenta ejecutar una instrucciónExcepciones 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ónComunicación con el
procesadorComunicación con los
dispositivosAlmacenamiento temporal de
datosDetecció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é hacerTest, para comprobar condiciones de
estadoLectura, hace que el módulo de
E/S capte un dato de un periférico y lo sitúe
en un buffer internoEscritura, 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/SAislada, 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 procesador2. El procesador termina la
ejecución de la instrucción en curso antes de
responder la interrupción3. 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ñal4. 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ón8. 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/SCanal 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 paradaAtascos 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 caucesAtascos 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 memoriaPre-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 habitualIF-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 saltoSi 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
saltaPredecir según el código
de operaciónConmutador 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 operandoTé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ónUnidad 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 familiaMemoria caché, su
introducción en la jerarquía de memoria
mejoró las prestaciones de manera
espectacular
Página siguiente |