2. Introducción
La segmentación o pipeline es una técnica de
realización de procesadores por la cual se solapa la
ejecución de las instrucciones. Hoy en día es la técnica
clave para la realización de CPU rápidas.
3. Introducción
¿Qué es la segmentación o pipelining?
Técnica para la generación de paralelismo en
monoprocesadores.
Consiste en dividir una función en subfunciones
independientes que pueden realizarse
simultáneamente (trabajo en cadena).
En un instante determinado, se está trabajando sobre
un número de elementos igual al número de etapas
(paralelismo).
4. Características
Características del proceso necesarias para poder aplicar
segmentación:
Se debe poder descomponer en etapas.
Es necesario que las entradas de una etapa estén
determinadas únicamente por las salidas de la
anterior.
Cada etapa debe poder ser realizada por un circuito
específico
de forma más rápida que el conjunto del proceso.
Los tiempos de ejecución de cada etapa deben
parecidos.
5. La productividad de un computadora va a depender del número de
instrucciones que acaben por unidad de tiempo, y no de lo que le cueste a una
instrucción individual
6. Segmentación en 5 Etapas (DLX).
IF: Lectura de instrucción.
ID: Decodificación de Instrucción y lectura de
operandos.
EXE: Ejecución de la instrucción.
MEM: Acceso a memoria de datos.
REG: Acceso a banco de registros.
7. Etapas de cauce: funcionamiento
Búsqueda (IF)
se accede a memoria a por la instrucción
se incrementa el CP
Decodificación / Búsqueda de operandos (ID)
se decodifica la instrucción
se accede al banco de registros a por los registros operandos
se calcula el valor del operando inmediato con el signo
extendido (por si hace falta más adelante)
Ejecución / Dirección efectiva (EX)
si es una instrucción de proceso, se ejecuta en la ALU
si es un acceso a memoria, se calcula la dirección efectiva
si es un salto, se calcula el destino, y si se toma o no
8. Etapas de cauce: funcionamiento
Acceso a memoria / terminación del salto (MEM)
si es un acceso a memoria, se accede
si es un salto, se almacena el nuevo CP
Almacenamiento (WB)
se almacena el resultado (si lo hay) en el banco de
registros
9. La realización de cada etapa de segmentación es un ciclo
máquina.
Esta duración está determinada por la duración de la etapa
más lenta. con frecuencia el ciclo máquina es un ciclo de
reloj, aunque el reloj puede tener múltiples fases.
El objetivo del diseñador de computadoras es equilibrar
correctamente el diseño de cada segmento para que todos
tengan la misma duración. Si esto es así, entonces la
duración de una instrucciones será (si no hay atascos):
Tiempo por instrucción en máquina no segmentada
-------------------------------------------------------------------Número de etapas de la segmentación
12. Riesgos de la segmentación.
Cuando se detecta un riesgo, puede ser necesario detener la
segmentación (no siempre).
Pero detener el procesador en una máquina no
segmentada es fácil, basta terminar la instrucción en curso.
En una máquina segmentada hay varias instrucciones en
curso, y por ello un detención supone, en la mayoría de los
casos, que algunas de las instrucciones en curso deben
ejecutarse hasta finalizar, otras se retardan y otras si
pueden detenerse en un instante dado.
Por lo general, cuando una instrucción se detiene, las
instrucciones anteriores finalizan normalmente y las
posteriores sufren un retardo en su ejecución. Durante el
tiempo de retardo, no se leen más instrucciones.
13. Clases de Riesgos.
Riesgos estructurales: Producidos por conflictos en la
utilización del hardware. Impiden que dos instrucciones se
solapen en determinados segmentos.
Riesgos por dependencias de datos: Es cuando los datos
que necesita una instrucción para ejecutarse son
inicializados por instrucciones anteriores que aun no han
finalizado.
Riesgos de control: Suceden cuando hay un cambio
brusco en el valor del PC producido por una salto u otras
instrucciones.
14. Riesgos estructurales.
La ejecución solapada de las instrucciones
requiere la
segmentación de unidades funcionales y duplicación de recursos
para permitir cualquier combinación de instrucciones.
Si alguna combinación de instrucciones no se puede ejecutar por
conflictos entre recursos: riesgo estructural.
En los conflictos, la unidad de control detiene la ejecución de
alguna de las instrucciones hasta que el conflicto desaparezca.
Los riesgos estructurales se permiten para:
• Reducir el coste.
• No aumentar la latencia de la unidad.
16. Riesgos por dependencia de los
Datos.
Se producen cuando alguna instrucción tiene un dato
fuente que es a su vez destino de otra instrucción
anterior que se encuentra aún dentro de la cadena.
17. Tipos de riesgos de dependencia
de Datos.
• RAW: lectura después de escritura.
• WAR: escritura después de lectura.
• WAW: escritura después de escritura.
Técnica de adelantamiento (forwarding), desvío (bypassing) o
cortocircuito:
• El resultado de la ALU realimenta sus cerrojos de entrada.
• Los operandos entran a través de una lógica de control que
selecciona la entrada correcta.
El adelantamiento se puede generalizar permitiendo que el
resultado de una etapa pase a la entrada de otra etapa distinta
19. Con ello se consigue que si una
instrucción utiliza un registro como
fuente y la instrucción anterior lo
tiene como destino de una operación,
entonces la segunda instrucción
utilizará como valor del registro
fuente la salida de la ALU.
Así, aunque el valor no se grabe en el
registro conflictivo hasta 2 ciclos
después, la segunda instrucción ya
habrá hecho uso de su valor.
20. Riesgos de Control.
Un riesgo de control se produce cuando es necesario llevar a cabo una
decisión basada en el resultado de una instrucción mientras se están
ejecutando otras instrucciones. Cuando se ejecuta un salto no se
conoce de antemano cuál será la siguiente instrucción que deberá ser
ejecutada. Si la condición del salto falla entonces se debe ejecutar la
instrucción inmediata, si la condición del salto se cumple se debe
actualizar el PC con la dirección de la siguiente instrucción que debe
ejecutarse.
Una estrategia para atacar este tipo de problema es asumir que la
condición del salto no se cumplirá y por lo tanto la ejecución
continuará con la instrucción que se encuentra inmediatamente
después de la instrucción de salto. Si la condición del salto se cumplió
entonces se deberá desechar del pipeline las instrucciones que fueron
captadas y la ejecución continua con la instrucción que se encuentra en
la dirección de salto
22. Cada instrucción debe contener la información que
necesita el procesador para su ejecución.
23. Elementos de una instrucción maquina
Código de operación: Especifica la operación a realizar. La
operación se indica mediante un código binario denominado
código de operación.
Referencia a operando fuente y origen: La operación puede
implicar a uno o mas operandos que son entradas para la
instrucción.
Referencia al operando de destino: La operación puede
producir un resultado.
Referencia a la siguiente instrucción: Dice al procesador de
donde captar la siguiente instrucción tras completarse la
ejecución de la instrucción actual.
24. Los operandos origen y destino pueden
estar en alguna de las tres áreas siguientes:
Memoria principal o virtual: Como en las referencias a
instrucciones siguientes, debe indicarse la dirección de memoria
principal o de memoria virtual.
Registro
del procesador: Salvo raras excepciones, un
procesador contiene uno o mas registros que pueden ser
referenciados por instrucciones maquina. Si solo existe un
registro la referencia a el puede ser implícita. Si existe mas de
uno, cada registro tendrá designado un numero único y la
instrucción debe contener el numero del registro deseado.
Dispositivo de E/S: la instrucción debe especificar el modulo de
dispositivo de E/S para la operación. En el caso de E/S asignadas
en memoria, se dará otra dirección de memoria principal o
virtual.
25. Los codops se representan mediante abreviaturas,
denominadas nemotécnicos, que indican la operación
en cuestión.
29. Instrucción en alto nivel x=x+y;
En instrucciones maquina
Supongamos que X e Y corresponden a la posición 513
y 514.
Cargar un registro con el contenido de la posición de
memoria 513.
2. Sumar al registro el contenido de la posición de
memoria 514.
3. Memorizar el contenido del registro en la posición de
memoria 513.
1.
30. Un lenguaje de alto nivel expresa las operaciones de
forma algebraicas concisa, utilizando variables.
Un lenguaje maquina expresa las operaciones de una
manera elemental, implicando operaciones de
transferencia de datos a registros.
31. Clasificación de la instrucciones.
Procesamiento de datos: Instrucciones aritméticas y
lógicas.
Almacenamiento de datos: Instrucciones de
memoria.
Transferencia de datos: Instrucciones de E/S
Control: Instrucciones de comprobación y de
bifurcación.
32. NÚMERO DE DIRECCIONES
Es una de las formas tradicionales de describir la
arquitectura de un procesador.
Están contenidas en cada instrucción.
“ Menos significativa a medida que aumenta la
complejidad del diseño del procesador”
33. ¿NÚMERO MÁXIMO DE DIRECCIONES
NECESARIAS EN UNA INSTRUCCIÓN?
Aritméticas y lógicas requieren más operandos.
• Unarias (un operando)
• Binarias (dos operandos)
Necesitaríamos máximo de dos direcciones para
referenciar operandos.
El resultado de la operación debe almacenarse= tercera
dirección.
Tras completar una instrucción debe captarse la siguiente=
dirección (cuarta)
34. RAZONAMIENTO ANTERIOR
4 Referencias a direcciones:
Dos operandos
Un resultado
Dirección de la siguiente instrucción
En la práctica es muy raro encontrar este tipo de
instrucciones.
36. INSTRUCCIONES CON CERO DIRECCIONES
Se aplican a una organización especial de memoria =
Pila (stack)
Conjunto de posiciones del tipo last-in-first-out
La pila esta en una posición conocida y los dos
elementos de su cabecera están en registros del
procesador. Dichos elementos son referenciados.
37. En todos los casos la dirección de la siguiente instrucción esta
implícita y se va a realizar una operación con dos operandos
origen y un resultado.
38. DISEÑO DEL REPORTORIO DE INSTRUCCIONES
El diseño es muy complejo, ya que afecta muchos
aspectos del computador.
Define muchas funciones realizadas por el procesador.
Es el medio que tiene el programador para controlar el
procesador.
39. NECESIDADES DEL PROGRAMADOR AL
DISEÑAR
Repertorio de operaciones: Cuantas y que operaciones
considerar, y que tan complejas deben de ser.
Tipos de datos: Diferentes tipos de datos con los que se
efectúan las operaciones.
Formatos de instrucciones: Longitud de la instrucción (en
bits), número de direcciones, tamaños de los distintos campos.
Registros: Número de registros del procesador que pueden ser
referenciados por las instrucciones y su uso.
Direccionamiento: Modo(s) de direccionamiento mediante los
cuales puede especificarse la dirección de un operando.