El documento trata sobre la segmentación o encadenamiento (pipelining) en la arquitectura de computadores. Explica que esta técnica permite ejecutar instrucciones de forma simultánea dividiendo el proceso de ejecución en varias etapas. De esta forma, a cada ciclo de reloj se puede completar la ejecución de una instrucción diferente, aumentando la velocidad de procesamiento. También compara el pipelining con el paralelismo, señalando que el primero especializa el hardware mientras que el segundo lo replica para
Este documento trata sobre autómatas finitos. Explica la clasificación de autómatas finitos determinísticos y no determinísticos, y cómo convertir un autómata finito no determinístico a uno determinístico usando el algoritmo de subconjuntos. También cubre la representación de expresiones regulares usando autómatas finitos no determinísticos y la minimización de estados en un autómata finito. Por último, presenta un caso de estudio sobre la construcción de un vehículo que evade obstáculos us
Este documento describe el funcionamiento de un contador binario de 4 bits utilizando el circuito integrado 74LS193. Explica cómo conectar el contador, el LM555 y los LEDs en un protoboard para mostrar la cuenta en binario de 0 a 15. También incluye cálculos de tiempos de encendido y apagado de los LEDs y conclusiones sobre la utilidad práctica de los contadores digitales.
1. El documento presenta varios ejemplos y propiedades de expresiones regulares y autómatas finitos.
2. Incluye 17 propiedades de expresiones regulares, ejemplos de operaciones con lenguajes y expresiones regulares, y la descripción de un autómata finito.
3. Finalmente, propone un ejemplo de construcción del diagrama de Moore a partir de una tabla de transiciones de un autómata finito.
Este documento explica el enrutamiento entre VLAN. Describe cómo el enrutamiento entre VLAN permite la comunicación entre dispositivos aislados en VLAN separadas a través de un router. Explica dos métodos comunes de enrutamiento entre VLAN, incluida la configuración "router-on-a-stick" que utiliza subinterfaces en una sola interfaz física del router. Concluye que el enrutamiento entre VLAN puede ayudar a administrar mejor una red al facilitar la comunicación entre VLAN.
Este documento presenta un resumen de 4 oraciones de la arquitectura en pipeline. Describe que el documento original es un trabajo académico de la Universidad Nacional de Trujillo sobre la arquitectura en pipeline. Incluye la introducción, los 4 capítulos sobre pipeline, características, ralentización y aplicaciones, así como las conclusiones y referencias bibliográficas. El trabajo fue realizado por 3 estudiantes de ingeniería informática bajo la supervisión del profesor Arturo Díaz Pulido.
Diferencias entre arquitectura y organizaciónAngel Aguilar
La arquitectura de computadoras se refiere a los atributos de un sistema visibles para un programador, mientras que la organización de computadoras se refiere a las unidades operativas y cómo se interconectan para implementar las especificaciones arquitectónicas. La arquitectura define instrucciones y la organización es cómo los componentes se conectan físicamente.
Este documento trata sobre autómatas finitos. Explica la clasificación de autómatas finitos determinísticos y no determinísticos, y cómo convertir un autómata finito no determinístico a uno determinístico usando el algoritmo de subconjuntos. También cubre la representación de expresiones regulares usando autómatas finitos no determinísticos y la minimización de estados en un autómata finito. Por último, presenta un caso de estudio sobre la construcción de un vehículo que evade obstáculos us
Este documento describe el funcionamiento de un contador binario de 4 bits utilizando el circuito integrado 74LS193. Explica cómo conectar el contador, el LM555 y los LEDs en un protoboard para mostrar la cuenta en binario de 0 a 15. También incluye cálculos de tiempos de encendido y apagado de los LEDs y conclusiones sobre la utilidad práctica de los contadores digitales.
1. El documento presenta varios ejemplos y propiedades de expresiones regulares y autómatas finitos.
2. Incluye 17 propiedades de expresiones regulares, ejemplos de operaciones con lenguajes y expresiones regulares, y la descripción de un autómata finito.
3. Finalmente, propone un ejemplo de construcción del diagrama de Moore a partir de una tabla de transiciones de un autómata finito.
Este documento explica el enrutamiento entre VLAN. Describe cómo el enrutamiento entre VLAN permite la comunicación entre dispositivos aislados en VLAN separadas a través de un router. Explica dos métodos comunes de enrutamiento entre VLAN, incluida la configuración "router-on-a-stick" que utiliza subinterfaces en una sola interfaz física del router. Concluye que el enrutamiento entre VLAN puede ayudar a administrar mejor una red al facilitar la comunicación entre VLAN.
Este documento presenta un resumen de 4 oraciones de la arquitectura en pipeline. Describe que el documento original es un trabajo académico de la Universidad Nacional de Trujillo sobre la arquitectura en pipeline. Incluye la introducción, los 4 capítulos sobre pipeline, características, ralentización y aplicaciones, así como las conclusiones y referencias bibliográficas. El trabajo fue realizado por 3 estudiantes de ingeniería informática bajo la supervisión del profesor Arturo Díaz Pulido.
Diferencias entre arquitectura y organizaciónAngel Aguilar
La arquitectura de computadoras se refiere a los atributos de un sistema visibles para un programador, mientras que la organización de computadoras se refiere a las unidades operativas y cómo se interconectan para implementar las especificaciones arquitectónicas. La arquitectura define instrucciones y la organización es cómo los componentes se conectan físicamente.
Este documento describe los sistemas de bases de datos paralelas, los cuales ejecutan operaciones en múltiples procesadores y discos de forma paralela para mejorar el rendimiento. Estos sistemas constan de varios procesadores y discos conectados en red de alta velocidad. Dividen los datos y tareas entre los componentes para procesar diferentes partes de una transacción o consulta de forma simultánea, lo que mejora la velocidad y permite tratar volúmenes de datos más grandes.
El documento describe el modelo OSI de 7 capas para la comunicación de redes. Explica cada una de las 7 capas, incluyendo sus funciones, protocolos, dispositivos y unidades de datos. También describe conceptos clave como PDU, direcciones MAC e IP, y cómo se añade información adicional a los paquetes de datos a medida que pasan por cada capa.
El documento describe las etapas del ciclo de instrucción de una CPU, incluyendo la búsqueda (IF), decodificación (ID), ejecución (EX) y escritura (WB). Explica que el ciclo de instrucción involucra la obtención de instrucciones de la memoria principal, su decodificación e implementación antes de buscar la siguiente instrucción. También menciona que la segmentación del ciclo de instrucción permite la ejecución simultánea de múltiples instrucciones para mejorar el rendimiento.
El ciclo de instrucción incluye los sub-ciclos de captación, ejecución e interrupción. La captación lleva la instrucción de la memoria al procesador, la ejecución interpreta el código de operación y lleva a cabo la operación, e interrupción guarda el estado actual si hay un problema. El ciclo indirecto requiere memoria adicional para alternar entre captación y ejecución para identificar y almacenar operandos. El flujo de datos durante el ciclo depende del procesador y puede incluir transferencia
Fundamentos de redes: 6.3 Direccionamiento de red IPv4 Francesc Perez
El documento contiene preguntas sobre conceptos básicos de direccionamiento IP como clases de direcciones, máscaras de subred, direcciones de red y broadcast. Algunas preguntas identifican qué direcciones pueden asignarse a hosts, cuáles son direcciones privadas o públicas, y cómo calcular el número de subredes y hosts posibles a partir de una dirección y máscara dada.
INTERBUS es un sistema de comunicación de campo que ha tenido éxito mundial durante más de 20 años. Es un estándar para la transmisión de datos entre sensores, actuadores, PLC y otros dispositivos industriales. Funciona bajo el método maestro-esclavo y usa una topología de anillo sobre cable de 5 hilos que permite tasas altas de transmisión a distancias largas. INTERBUS continúa creciendo en aplicaciones e interoperabilidad debido a su normalización internacional.
Este documento describe las actividades realizadas en el Laboratorio de Redes de la Universidad de Tarapacá. Se detallan los recursos del laboratorio como cables, switches y computadores. Luego, se explican comandos como ping, tcpdump y traceroute para analizar el tráfico de red y medir tiempos de retardo entre nodos. Finalmente, se usa Wireshark para capturar paquetes y analizar protocolos como ICMP usados en las comunicaciones entre las máquinas de la red local.
Este documento presenta una tabla comparativa de los protocolos TCP y UDP. TCP es orientado a conexiones, garantiza la entrega confiable de datos en orden, pero es más pesado que UDP. UDP no es orientado a conexiones, no garantiza la entrega de datos ni el orden, pero es más liviano y rápido que TCP. La tabla compara aspectos como el uso, confiabilidad, velocidad, tamaño de encabezado y ventajas/desventajas de cada protocolo.
En este material podrás encontrar información acerca de los tipos, caracteristicas, ejemplos de arquitecturas de computadoras. Nota: Esta es la actualización de mi material # 3
Este documento resume los conceptos clave de la organización y arquitectura de los computadores. Explica las estructuras y funciones básicas de un computador, incluyendo la unidad central de procesamiento, memoria principal, entrada/salida y sistema de interconexión. También describe la evolución histórica de los computadores desde las primeras máquinas basadas en tubos de vacío hasta los microprocesadores modernos de 64 bits. Finalmente, analiza factores como la velocidad del microprocesador, equilibrio de prestaciones y mejoras en el diseño de
Este documento describe y compara los sistemas de control de lazo abierto y cerrado. Los sistemas de lazo abierto son más simples, pero su salida no depende de la entrada y no son estables ante perturbaciones. Los sistemas de lazo cerrado son más complejos, ya que usan retroalimentación para comparar la salida con la entrada y ajustar la acción de control en consecuencia, lo que los hace más estables y precisos.
El documento trata sobre el control de flujo en comunicaciones. Explica que el control de flujo regula la velocidad de transmisión de datos para evitar que un emisor rápido sature al receptor lento. También describe los buffers, objetivos del control de flujo y dos protocolos comunes: parada y espera y ventana deslizante.
El documento compara las principales arquitecturas de computadoras como Von Neumann, Harvard, segmentadas y multiprocesamiento. Describe las características clave de cada arquitectura, incluyendo sus ventajas y desventajas. Concluye que es importante conocer los conceptos de arquitectura de computadoras para crear máquinas que puedan resolver problemas de manera eficiente.
El documento describe las tecnologías LAN y WAN. En la sección de tecnologías LAN, se detalla Ethernet, incluyendo su historia, estándares, y variantes como 10BASE-T, 100BASE-TX y 1000BASE-T. Ethernet opera en las capas física y de enlace de datos del modelo OSI, usando direcciones MAC de 48 bits para el direccionamiento de tramas.
Resolución de ejercicios compuertas lógicasCarlos Gascón
Este documento presenta varios problemas y ejercicios relacionados con puertas lógicas y circuitos. En la primera página, identifica circuitos eléctricos como puertas lógicas NOR y OR. En la segunda página, implementa circuitos usando puertas lógicas. En la tercera página, utiliza simuladores para implementar funciones lógicas. Finalmente, en la cuarta página, determina funciones de salida y tablas de verdad para circuitos lógicos.
El documento describe el algoritmo de planificación Shortest Job First con expulsión (SJF-E). Este algoritmo da prioridad al proceso que le reste menor tiempo de CPU para terminar de forma similar a SJF, pero permite que un proceso en ejecución sea desalojado por otro recién llegado si este nuevo proceso tiene un tiempo de ejecución estimado menor. SJF-E tiende a penalizar las ráfagas largas de forma similar a SJF.
El documento describe los buses en computadoras. Explica que un bus es un medio de comunicación compartido entre dispositivos y que existen diferentes arquitecturas de bus como ISA, MCA y EISA. Los buses se clasifican por nivel (placa, panel posterior e interfaz) y dedicación (dedicados y generales). Los buses se han normalizado para facilitar la interacción entre componentes de diferentes fabricantes.
El documento describe los diferentes tipos de interrupciones en un sistema operativo, incluyendo interrupciones de hardware, software y de periféricos. También explica el ciclo de reconocimiento de interrupciones y los diferentes niveles de control de interrupciones.
El bus es un sistema que transfiere datos entre los componentes de una computadora o entre computadoras. Los buses conectan dispositivos digitales como circuitos integrados, y existen diferentes tipos como buses paralelos y seriales. Los buses controlan el acceso y uso compartido de las líneas de datos y direcciones para evitar colisiones de información en el sistema.
Este documento presenta información sobre la arquitectura en pipeline. Explica que un pipeline consta de elementos procesadores conectados en serie donde la salida de uno es la entrada del siguiente. Describe cómo la segmentación del proceso de ejecución de instrucciones en varias etapas permite mejorar la velocidad, aunque también introduce problemas como dependencias de datos y bifurcaciones que pueden ralentizar el pipeline. Finalmente, analiza posibles soluciones a estos problemas como la prevención, detección y resolución de dependencias o detener temporalmente el pipeline.
Este documento presenta información sobre la arquitectura en pipeline. Explica que un pipeline consta de elementos procesadores conectados en serie donde la salida de uno es la entrada del siguiente. Describe cómo la segmentación del procesamiento de instrucciones en etapas como fetch, decode, execute, etc. permite que varias instrucciones se procesen simultáneamente en diferentes etapas. También identifica algunos factores que pueden ralentizar el pipeline como dependencias de datos entre instrucciones y bifurcaciones que dificultan la prealimentación.
Este documento describe los sistemas de bases de datos paralelas, los cuales ejecutan operaciones en múltiples procesadores y discos de forma paralela para mejorar el rendimiento. Estos sistemas constan de varios procesadores y discos conectados en red de alta velocidad. Dividen los datos y tareas entre los componentes para procesar diferentes partes de una transacción o consulta de forma simultánea, lo que mejora la velocidad y permite tratar volúmenes de datos más grandes.
El documento describe el modelo OSI de 7 capas para la comunicación de redes. Explica cada una de las 7 capas, incluyendo sus funciones, protocolos, dispositivos y unidades de datos. También describe conceptos clave como PDU, direcciones MAC e IP, y cómo se añade información adicional a los paquetes de datos a medida que pasan por cada capa.
El documento describe las etapas del ciclo de instrucción de una CPU, incluyendo la búsqueda (IF), decodificación (ID), ejecución (EX) y escritura (WB). Explica que el ciclo de instrucción involucra la obtención de instrucciones de la memoria principal, su decodificación e implementación antes de buscar la siguiente instrucción. También menciona que la segmentación del ciclo de instrucción permite la ejecución simultánea de múltiples instrucciones para mejorar el rendimiento.
El ciclo de instrucción incluye los sub-ciclos de captación, ejecución e interrupción. La captación lleva la instrucción de la memoria al procesador, la ejecución interpreta el código de operación y lleva a cabo la operación, e interrupción guarda el estado actual si hay un problema. El ciclo indirecto requiere memoria adicional para alternar entre captación y ejecución para identificar y almacenar operandos. El flujo de datos durante el ciclo depende del procesador y puede incluir transferencia
Fundamentos de redes: 6.3 Direccionamiento de red IPv4 Francesc Perez
El documento contiene preguntas sobre conceptos básicos de direccionamiento IP como clases de direcciones, máscaras de subred, direcciones de red y broadcast. Algunas preguntas identifican qué direcciones pueden asignarse a hosts, cuáles son direcciones privadas o públicas, y cómo calcular el número de subredes y hosts posibles a partir de una dirección y máscara dada.
INTERBUS es un sistema de comunicación de campo que ha tenido éxito mundial durante más de 20 años. Es un estándar para la transmisión de datos entre sensores, actuadores, PLC y otros dispositivos industriales. Funciona bajo el método maestro-esclavo y usa una topología de anillo sobre cable de 5 hilos que permite tasas altas de transmisión a distancias largas. INTERBUS continúa creciendo en aplicaciones e interoperabilidad debido a su normalización internacional.
Este documento describe las actividades realizadas en el Laboratorio de Redes de la Universidad de Tarapacá. Se detallan los recursos del laboratorio como cables, switches y computadores. Luego, se explican comandos como ping, tcpdump y traceroute para analizar el tráfico de red y medir tiempos de retardo entre nodos. Finalmente, se usa Wireshark para capturar paquetes y analizar protocolos como ICMP usados en las comunicaciones entre las máquinas de la red local.
Este documento presenta una tabla comparativa de los protocolos TCP y UDP. TCP es orientado a conexiones, garantiza la entrega confiable de datos en orden, pero es más pesado que UDP. UDP no es orientado a conexiones, no garantiza la entrega de datos ni el orden, pero es más liviano y rápido que TCP. La tabla compara aspectos como el uso, confiabilidad, velocidad, tamaño de encabezado y ventajas/desventajas de cada protocolo.
En este material podrás encontrar información acerca de los tipos, caracteristicas, ejemplos de arquitecturas de computadoras. Nota: Esta es la actualización de mi material # 3
Este documento resume los conceptos clave de la organización y arquitectura de los computadores. Explica las estructuras y funciones básicas de un computador, incluyendo la unidad central de procesamiento, memoria principal, entrada/salida y sistema de interconexión. También describe la evolución histórica de los computadores desde las primeras máquinas basadas en tubos de vacío hasta los microprocesadores modernos de 64 bits. Finalmente, analiza factores como la velocidad del microprocesador, equilibrio de prestaciones y mejoras en el diseño de
Este documento describe y compara los sistemas de control de lazo abierto y cerrado. Los sistemas de lazo abierto son más simples, pero su salida no depende de la entrada y no son estables ante perturbaciones. Los sistemas de lazo cerrado son más complejos, ya que usan retroalimentación para comparar la salida con la entrada y ajustar la acción de control en consecuencia, lo que los hace más estables y precisos.
El documento trata sobre el control de flujo en comunicaciones. Explica que el control de flujo regula la velocidad de transmisión de datos para evitar que un emisor rápido sature al receptor lento. También describe los buffers, objetivos del control de flujo y dos protocolos comunes: parada y espera y ventana deslizante.
El documento compara las principales arquitecturas de computadoras como Von Neumann, Harvard, segmentadas y multiprocesamiento. Describe las características clave de cada arquitectura, incluyendo sus ventajas y desventajas. Concluye que es importante conocer los conceptos de arquitectura de computadoras para crear máquinas que puedan resolver problemas de manera eficiente.
El documento describe las tecnologías LAN y WAN. En la sección de tecnologías LAN, se detalla Ethernet, incluyendo su historia, estándares, y variantes como 10BASE-T, 100BASE-TX y 1000BASE-T. Ethernet opera en las capas física y de enlace de datos del modelo OSI, usando direcciones MAC de 48 bits para el direccionamiento de tramas.
Resolución de ejercicios compuertas lógicasCarlos Gascón
Este documento presenta varios problemas y ejercicios relacionados con puertas lógicas y circuitos. En la primera página, identifica circuitos eléctricos como puertas lógicas NOR y OR. En la segunda página, implementa circuitos usando puertas lógicas. En la tercera página, utiliza simuladores para implementar funciones lógicas. Finalmente, en la cuarta página, determina funciones de salida y tablas de verdad para circuitos lógicos.
El documento describe el algoritmo de planificación Shortest Job First con expulsión (SJF-E). Este algoritmo da prioridad al proceso que le reste menor tiempo de CPU para terminar de forma similar a SJF, pero permite que un proceso en ejecución sea desalojado por otro recién llegado si este nuevo proceso tiene un tiempo de ejecución estimado menor. SJF-E tiende a penalizar las ráfagas largas de forma similar a SJF.
El documento describe los buses en computadoras. Explica que un bus es un medio de comunicación compartido entre dispositivos y que existen diferentes arquitecturas de bus como ISA, MCA y EISA. Los buses se clasifican por nivel (placa, panel posterior e interfaz) y dedicación (dedicados y generales). Los buses se han normalizado para facilitar la interacción entre componentes de diferentes fabricantes.
El documento describe los diferentes tipos de interrupciones en un sistema operativo, incluyendo interrupciones de hardware, software y de periféricos. También explica el ciclo de reconocimiento de interrupciones y los diferentes niveles de control de interrupciones.
El bus es un sistema que transfiere datos entre los componentes de una computadora o entre computadoras. Los buses conectan dispositivos digitales como circuitos integrados, y existen diferentes tipos como buses paralelos y seriales. Los buses controlan el acceso y uso compartido de las líneas de datos y direcciones para evitar colisiones de información en el sistema.
Este documento presenta información sobre la arquitectura en pipeline. Explica que un pipeline consta de elementos procesadores conectados en serie donde la salida de uno es la entrada del siguiente. Describe cómo la segmentación del proceso de ejecución de instrucciones en varias etapas permite mejorar la velocidad, aunque también introduce problemas como dependencias de datos y bifurcaciones que pueden ralentizar el pipeline. Finalmente, analiza posibles soluciones a estos problemas como la prevención, detección y resolución de dependencias o detener temporalmente el pipeline.
Este documento presenta información sobre la arquitectura en pipeline. Explica que un pipeline consta de elementos procesadores conectados en serie donde la salida de uno es la entrada del siguiente. Describe cómo la segmentación del procesamiento de instrucciones en etapas como fetch, decode, execute, etc. permite que varias instrucciones se procesen simultáneamente en diferentes etapas. También identifica algunos factores que pueden ralentizar el pipeline como dependencias de datos entre instrucciones y bifurcaciones que dificultan la prealimentación.
El documento describe el concepto de pipelining o segmentación en la ejecución de instrucciones en una CPU. Divide el procesamiento de una instrucción en múltiples etapas secuenciales como búsqueda de instrucción, decodificación, ejecución, acceso a memoria y escritura en registros, de modo que varias instrucciones puedan estar en procesamiento simultáneamente en diferentes etapas, mejorando el rendimiento. Explica cómo implementar un diseño de 5 etapas usando registros entre etapas para almacenar y pas
Este documento describe diferentes modelos de arquitecturas de computadoras, incluyendo arquitecturas clásicas como Von Neumann y Harvard, arquitecturas segmentadas que mejoran el rendimiento mediante el procesamiento paralelo, y arquitecturas de multiprocesamiento que utilizan múltiples procesadores. Explica conceptos como segmentación, pipeline y tipos de multiprocesamiento. Finalmente incluye un cuestionario de 10 preguntas sobre los temas cubiertos.
Este documento describe la segmentación (pipe-line) en procesadores. Explica que la segmentación divide el procesamiento de instrucciones en etapas para que múltiples instrucciones se solapen y ejecuten simultáneamente. Esto mejora el rendimiento sin duplicar hardware. Luego detalla las etapas típicas de segmentación y cómo la segmentación permite iniciar nuevas instrucciones antes de completar las anteriores, mejorando la eficiencia. Finalmente, presenta un ejemplo de cómo una CPU segmentada puede procesar instrucciones de manera concurrente
Este documento describe diferentes modelos de arquitectura de computadoras, incluyendo las arquitecturas clásicas de Von Neumann y Harvard, arquitecturas segmentadas para mejorar el rendimiento, y arquitecturas de multiprocesamiento como SISO, SIMO, MISO y MIMO. También discute cómo estas arquitecturas buscan superar los cuellos de botella y lograr mayor paralelismo en el procesamiento.
Introduccion a la arquitectura de computadoras.docxJessilara3
El documento describe diferentes tipos de arquitecturas de computadoras, incluyendo la arquitectura de von Neumann, arquitecturas segmentadas, arquitecturas multiprocesadoras, y arquitecturas RISC y CISC. Explica las ventajas y desventajas de cada arquitectura, y provee diagramas para ilustrar sus componentes y flujos de datos.
El documento trata sobre la implementación de procesos y planificación del procesador. Explica conceptos como procesos, hilos, estados de un proceso y atributos de un proceso. Luego analiza temas de planificación del procesador como objetivos, tipos de planificación como FCFS, SJF, prioridades y round robin. Finalmente recomienda bibliografía adicional para ampliar estos conceptos.
El documento describe un ejercicio sobre sistemas operativos que involucra 5 procesos (A, B, C, D, E) con diferentes tiempos de llegada, duración y prioridad. Se pide determinar la secuencia de ejecución de los procesos usando un scheduler Round Robin y calcular métricas como tiempo de retorno y finalización para cada proceso y en promedio, tanto para Round Robin como para FIFO.
La supersegmentación es una técnica que busca aumentar el paralelismo a nivel de instrucción mediante la replicación de las unidades funcionales de un procesador, permitiendo la ejecución simultánea de múltiples instrucciones a través de diferentes etapas segmentadas. Esto mejora el rendimiento al permitir que varias instrucciones usen recursos diferentes de forma concurrente, similar a una línea de ensamblaje donde varias tareas se realizan en paralelo.
El documento describe la arquitectura interna de los CPUs, incluyendo sus componentes principales como la unidad de control y ALU, y las operaciones comunes como transferencia de datos entre CPU y memoria o E/S. También explica el ciclo de instrucción básico de carga, decodificación y ejecución de instrucciones, y cómo las técnicas de tubería y superescalar mejoran el rendimiento al permitir la ejecución simultánea de múltiples instrucciones.
El documento describe la historia y operación de las unidades centrales de proceso (CPU). Explica que las primeras CPU usaban tubos de vacío y relés, pero que los transistores permitieron diseños más complejos y confiables. Luego, los microprocesadores reemplazaron casi todos los otros métodos de implementación de CPU. El documento también cubre temas como el diseño e implementación de CPU, incluyendo el rango de enteros, la frecuencia de reloj, y formas de lograr paralelismo como el entubado de instrucciones, la ejecución simultánea
El documento describe la historia y operación de las unidades centrales de proceso (CPU). Explica que las primeras CPU usaban tubos de vacío y relés, pero que los transistores permitieron diseños más complejos y confiables. Luego, los microprocesadores reemplazaron otros métodos de implementación de CPU. El documento también cubre temas como el diseño e implementación de CPU, incluyendo el rango de enteros, la frecuencia de reloj y formas de lograr paralelismo como el entubado de instrucciones y la ejecución simultánea de hilos.
El documento describe la historia y operación de las unidades centrales de proceso (CPU). Explica que las primeras CPU usaban tubos de vacío y relés, pero que los transistores permitieron diseños más complejos y confiables. Luego, los microprocesadores reemplazaron otros métodos de implementación de CPU. El documento también cubre temas como el diseño e implementación de CPU, incluyendo el rango de enteros, la frecuencia de reloj y formas de lograr paralelismo como el entubado de instrucciones, la ejecución simultánea de hilos y
Este documento describe dos formas de paralelismo en sistemas de cómputo: a nivel de instrucciones y a nivel de procesador. A nivel de instrucciones, se explican los buffers de pre-búsqueda y las filas de procesamiento (pipelines) que permiten ejecutar múltiples instrucciones simultáneamente. A nivel de procesador, se describen arreglos de procesadores, procesadores vectoriales, multiprocesadores y multicomputadoras que permiten distribuir el trabajo entre varias CPU.
El documento describe los conceptos de segmentación y procesamiento segmentado en los procesadores. La segmentación divide el procesamiento de instrucciones en varias etapas para permitir la ejecución simultánea de múltiples instrucciones. Los procesadores segmentados aplican esta técnica mediante la descomposición de la ejecución de instrucciones en etapas como búsqueda, decodificación, lectura de operandos y escritura. La supersegmentación divide aún más estas etapas para lograr mayores niveles de paralelismo.
La arquitectura de Von Neumann es la más empleada actualmente. Consiste en una unidad central de proceso que se comunica a través de un bus único con un banco de memoria donde se almacenan tanto los códigos de instrucción como los datos. La arquitectura Harvard mejoró el desempeño al tener buses separados para programa y datos. Las arquitecturas segmentadas realizan etapas del ciclo de instrucción en paralelo mediante unidades funcionales independientes para mejorar el rendimiento.
- El modelo de arquitectura de Von Neumann es la base de la mayoría de las arquitecturas modernas. Utiliza una memoria compartida para almacenar tanto datos como instrucciones y tiene un ciclo de ejecución secuencial.
- Las arquitecturas RISC y CISC son dos enfoques diferentes para el diseño de conjuntos de instrucciones. RISC utiliza instrucciones de tamaño fijo mientras que CISC permite instrucciones más complejas.
- La segmentación del flujo de instrucciones permite ejecutar varias etapas del
Este documento describe el algoritmo de planificación Round Robin. Explica que cada proceso recibe un tiempo de CPU llamado "cuanto" de manera equitativa en un orden circular. También discute factores como el tamaño óptimo del cuanto y cómo Round Robin se puede aplicar para la planificación de recursos compartidos en redes.
Este documento resume cinco puntos sobre arquitectura de hardware. El primer punto describe las unidades aritméticas lógicas y de punto flotante en los procesadores. El segundo punto explica la pila de datos y su uso. El tercer punto compara lenguajes ensambladores con lenguajes de programación más comunes como C y Java. El cuarto punto describe instrucciones como MOV, ADD, SUB, MUL y DIV. El quinto punto explica cómo construir una unidad aritmética lógica básica usando conjuntos de bits.
Segundo blog arquitectura de hardware tercer corte
6 pipeline
1. Arquitectura de Computadores Segmentación (Pipeline) - 1
Arquitectura de Computadores Segmentación (Pipeline) - 1
Arquitectura
de Computadores
6. CPU Segmentada (Pipeline)
1. Conceptos Básicos
2. Causas de Ralentización
En los dos capítulos siguientes vamos a tratar dos formas de optimizar substancialmente la
arquitectura convencional que hemos estudiado hasta ahora. Esta mejora se centra en la CPU y en
la memoria.
En primer lugar empezaremos por mejorar las prestaciones de la CPU, que, en cuanto a velocidad,
se pueden mejorar mediante los procesadores segmentados (o en pipeline) los cuales incorporan
una técnica para acelerar el ritmo de ejecución de instrucciones.
Como veremos, hay diversos factores que pueden impedir un aprovechamiento óptimo del
concepto de pipeline en la CPU. Trataremos estos factores y las técnicas para evitarlos en la
medida de lo posible.
2. Arquitectura de Computadores Segmentación (Pipeline) - 2
Arquitectura de Computadores Segmentación (Pipeline) - 2
Segmentación (Pipeline) …Conceptos Básicos
Concurrencia
Cómo aumentar la
velocidad del
procesador
¿
- Nivel del procesador (Paralelismo)
- Nivel de instrucción (Pipelining)
Construir circuitos más
rápidos, pero
- ¿A qué precio?
- ¿Estado del arte?
?
La velocidad de ejecución de los programas depende de diversos factores. Una forma de aumentar
esta velocidad es hacer más rápidos los circuitos con los que se construyen los procesadores y la
memoria principal. No obstante, se debe considerar el coste que supone una mejora y que el límite
a esta velocidad lo impone el estado del arte actual de la tecnología.
Otra posibilidad es organizar el hardware para poder ejecutar más de una instrucción
simultáneamente: concurrencia. La concurrencia se puede obtener en dos niveles: al nivel del
procesador y al nivel de la instrucción. La concurrencia al nivel de la CPU se obtiene disponiendo
de múltiples procesadores ejecutando simultáneamente varias instrucciones. Obtener concurrencia
a nivel de la instrucción significa poder ejecutar varias instrucciones simultáneamente con una
única CPU. Este último tipo de paralelismo se denomina segmentación o encadenamiento, aunque
suele ser más conocido por su denominación en inglés: pipelining.
Las arquitecturas con múltiples procesadores suelen utilizarse en máquinas de muy altas
prestaciones (y muy alto precio). Sin embargo, con arquitecturas segmentadas se consigue una
muy buena mejora del rendimiento y a un coste asequible. Por esto, es normal que todos los
microprocesadores actuales de propósito general incorporen el pipelining. Ya que es muy común
su utilización en los actuales procesadores, vamos a abordar aquí esta técnica del pipelining,
mientras que las arquitecturas multiprocesador las dejaremos para asignaturas o textos de
arquitecturas paralelas o avanzadas.
3. Arquitectura de Computadores Segmentación (Pipeline) - 3
Arquitectura de Computadores Segmentación (Pipeline) - 3
Segmentación (Pipeline) …Conceptos Básicos
10 s 10 s 10 s 10 s 10 s
Tartas
ACME
Tartas
ACME
Tartas
ACME
Sale una tarta empaquetada
cada 50 s
El proceso en pipeline o encadenado es similar al utilizado en cualquier cadena de montaje, y el
nombre pipeline (tubería) se debe al hecho de que como en una tubería, en la entrada se aceptan
nuevos elementos (instrucciones) antes de que los previamente aceptados salgan por la salida.
Empecemos con el ejemplo de una cadena de montaje. Supongamos una gran pastelería en la que
las tartas primero se hacen en el horno y después se empaquetan para la venta. El proceso de
empaquetar una tarta consiste en:
1. Poner una caja vacía en la mesa.
2. Meter una tarta en la caja.
3. Cerrar y precintar la caja.
4. Poner una etiqueta en la caja.
5. Llevar la caja a un gran contenedor.
Si cada una de estas operaciones la realiza un operario en 10 segundos, parece claro que se tarda
50 s en empaquetar una tarta y, por lo tanto, en empaquetar 10 tartas se tardaría 500 s.
4. Arquitectura de Computadores Segmentación (Pipeline) - 4
Arquitectura de Computadores Segmentación (Pipeline) - 4
Segmentación (Pipeline) …Conceptos Básicos
Tartas
ACME
Tartas
ACME
10 s 10 s 10 s 10 s 10 s
Tartas
ACME
Tartas
ACME
Tartas
ACME
Tartas
ACME
Tartas
ACME
Sale una tarta empaquetada
cada 10 s
Ahora supongamos que se dispone de una cadena de empaquetado de tartas con una cinta
transportadora sobre la que trabajan cinco operarios especializados en tareas distintas. El primer
operario pone la caja-1 en la cinta transportadora, y ésta avanza hasta que la caja-1 está donde el
segundo operario, que introduce una tarta dentro de la caja-1, al mismo tiempo que el primer
operario pone otra caja-2 en la cinta. La caja-1 sigue avanzando hasta el tercer operario, que la
cierra y la precinta, al mismo tiempo que el segundo operario mete otra tarta en la caja-2 y el
primer operario pone otra caja-3 en la cinta. La caja-1 sigue su camino en la cinta pasando por el
cuarto operario, que pone una etiqueta, hasta llegar al quinto operario, que la retira de la cinta.
En el momento que el quinto operario retira la caja de la cinta, hay cuatro cajas más en la cinta. Si
cada una de estas fases de empaquetado se realiza en 10 s, a partir de ahora, cada 10 s saldrá
una nueva tarta empaquetada, en lugar de hacerlo cada 50 s que se tardaba cuando no había
cadena de empaquetado. A partir de ahora, en tener 10 tartas empaquetadas se tardará solamente
100 segundos, mientras que en el caso de cuando se tenía un solo operario se tardaba 500
segundos.
Debe quedar claro que aunque ahora sale una nueva tarta empaquetada cada 10 s, la preparación
completa de cada tarta sigue requiriendo 50 s (igual que cuando había una sola persona
preparando las tartas).
5. Arquitectura de Computadores Segmentación (Pipeline) - 5
Arquitectura de Computadores Segmentación (Pipeline) - 5
Segmentación (Pipeline) …Conceptos Básicos
tiempo
Ejecución
Secuencial
unidad
F
unidad
E
buffer
In
Nueva
organización
del hardware
tiempo
Instrucciones
F1
I1
E1 F2 E2
I2
F3 E3
I3
. . .
I1 F1
t1
I2
E1
F2
t2
I3 F3
E2
t3
E3
t4
En una primera aproximación, se puede observar que para ejecutar una instrucción en la CPU se
requieren 2 pasos:
1. Alimentación o extracción de la instrucción desde memoria (fetching).
2. Ejecución de la instrucción.
En 1959, el ordenador Stretch de IBM, teniendo en cuenta que durante la fase de ejecución hay
momentos en los que no se accede a memoria principal, aprovechaba para alimentar instrucciones
por adelantado y guardarlas en un buffer de prealimentación, todo ello en paralelo con la ejecución
de la instrucción en curso, con lo que al terminar de ejecutar dicha instrucción podía cargar la
siguiente instrucción directamente desde el buffer sin tener que esperar a traerla de memoria.
Esta técnica de prealimentación o prefetching puede verse como un pipeline de dos etapas. En la
primera etapa se alimenta una instrucción de memoria y se guarda en un buffer. La segunda etapa
toma una instrucción del buffer y la ejecuta. Mientras en la segunda etapa se está ejecutando una
instrucción, la primera etapa aprovecha (los ciclos en los que la segunda etapa no accede a
memoria) para leer la siguiente instrucción y guardarla en el buffer. Cuando la segunda etapa
acabe la ejecución y vacíe el buffer de prealimentación, la primera etapa puede volver a leer una
nueva instrucción de memoria.
Con estas dos etapas de alimentación y ejecución de instrucciones, parece que la velocidad de
ejecución de instrucciones por segundo (rendimiento) se duplica. Y si nos fijamos en el ejemplo de
la línea de empaquetado de tartas, tenemos que su velocidad de tartas empaquetadas por minuto
se multiplica por cinco cuando se establece una cadena de empaquetado de cinco etapas. Esto es
así, simplemente porque el número de etapas dice cuántas cosas se están haciendo
simultáneamente, y claro, cuantas más mejor.
6. Arquitectura de Computadores Segmentación (Pipeline) - 6
Arquitectura de Computadores Segmentación (Pipeline) - 6
Segmentación (Pipeline) …Conceptos Básicos
Etapa
F
Etapa
D
Etapa
O
Etapa
E
Etapa
W
Nº de Etapas Nº de acciones en paralelo
tiempoF1I1
t1
D1
F2I2
t2
O1
D2
F3I3
t3
E1
O2
D3
t4
W1
E2
O3
t5
W2
E3
t6
W3
t7
Según lo que acabamos de ver, parece que interesa dividir las fases de ejecución de las
instrucciones en más etapas, para así obtener un mayor rendimiento en la ejecución. Poco
después del Stretch, UNIVAC sacó el LARC, con 4 etapas. Actualmente, tenemos que el PowerPC
750 tiene 6 etapas; el Pentium de Intel consta de tres unidades de proceso en pipeline, cada una
dividida a su vez en varias etapas. El Motorola 68040 tenía 6 etapas para el tratamiento de los
enteros.
La ejecución de una instrucción podría descomponerse en las siguientes 5 etapas:
1. F: Alimentación de la instrucción (fetch)
2. D: Decodificación de la instrucción
3. O: Extracción y cálculo de los operandos
4. E: Ejecución (en la ALU)
5. W: Escritura del resultado (write)
Si ahora la ejecución de una instrucción está descompuesta en 5 etapas, cada etapa puede durar
aproximadamente 1/5 de la duración total de la ejecución de la instrucción. Si suponemos que la
duración de un ciclo de reloj es igual a la duración de cada una de estas pequeñas etapas,
podemos decir, en principio, que con la técnica del pipelining se consigue que a cada ciclo de reloj
finalice una instrucción, o lo que es lo mismo, una velocidad de instrucción por ciclo.
7. Arquitectura de Computadores Segmentación (Pipeline) - 7
Arquitectura de Computadores Segmentación (Pipeline) - 7
Segmentación (Pipeline) …Conceptos Básicos
Lógica de control > Lógica de ejecución
¿Por qué no muchas etapas!
Más etapas
Más rendimiento
Avanza la
Técnica
Aumenta número de etapas
Por lo que hemos dicho hasta ahora, esta técnica puede reducir el número de ciclos/instrucción en
un factor igual a la profundidad del pipeline (número de etapas). Según esto, parece que cuanto
mayor sea el número de etapas de un pipeline, mayor es la velocidad de ejecución.
Sin embargo, los diseñadores del S/360 de IBM (años 60) ya se dieron cuenta de que la cantidad
de lógica de control necesaria para gestionar y optimizar los buffers intermedios y las
dependencias entre las etapas del pipeline crece enormemente con el número de etapas, hasta el
punto de que esta lógica de control entre etapas puede llegar a ser más compleja y costosa (en
tiempo) que la lógica propia de cada etapa.
Dada la conveniencia de un alto número de etapas, a medida que se consiguen avances en la
tecnología, los procesadores cada vez disfrutan de un mayor número de etapas, consiguiendo así,
la correspondiente mejora en sus pretaciones.
8. Arquitectura de Computadores Segmentación (Pipeline) - 8
Arquitectura de Computadores Segmentación (Pipeline) - 8
Segmentación (Pipeline) …Conceptos Básicos
Pipelining ≠ Paralelismo
(Especialización) (Replicación)
I1
t1
F1 D1 O1 E1 W1
I2
t2
F1 D1 O1 E1 W1
tiempo
(a) Ejecución Secuencial Pura
I3
t3
F1 D1 O1 E1 W1
Obsérvese que el pipelining no es lo mismo que el paralelismo (aunque, en cierto modo, en el
pipeline también hay paralelismo). Ambas técnicas están dirigidas a mejorar el rendimiento
(número de instrucciones por unidad de tiempo) incrementando el número de módulos hardware
que operan simultáneamente, pero en el primer caso, el hardware para ejecutar una instrucción no
está replicado, simplemente está dividido en varias etapas distintas especializadas, mientras
que en las arquitecturas paralelas, el hardware (la CPU) sí está replicado (hay varios
procesadores), por lo que varias operaciones pueden ejecutarse de manera completamente
simultánea.
El incremento del rendimiento con el pipelining está limitado al máximo número de etapas del
procesador, mientras que con el paralelismo, las prestaciones mejoran siempre que se añadan
más procesadores (en situaciones ideales) y el trabajo se pueda descomponer en varias tareas
para poder repartirlo.
Veamos, a continuación, los diagramas correspondientes a la ejecución serie, en paralelo y
mediante pipeline, suponiendo que las instrucciones se ejecutan en cinco pasos o etapas de un
ciclo de reloj cada una.
En la ejecución en serie, la primera instrucción debe ejecutarse completamente antes de
comenzar la segunda, y ésta debe completarse a su vez antes de que comience la tercera. De esta
manera, si las instrucciones son sumas, por ejemplo, se obtiene un resultado cada cinco ciclos
( en t1, en t2 en t3, ....).
9. Arquitectura de Computadores Segmentación (Pipeline) - 9
Arquitectura de Computadores Segmentación (Pipeline) - 9
Segmentación (Pipeline) …Conceptos Básicos
Pipelining ≠ Paralelismo
(Especialización) (Replicación)
(b) Ejecución Paralela Pura
tiempoF1I1
t1
D1
F2I2
O1
D2
F3I3
E1
O2
D3
W1
E2
O3
W2
E3 W3
. . . . . . . . . . .
Con un paralelismo de N vías (N procesadores), se pueden ejecutar simultáneamente N
instrucciones, pero producirán resultados solamente cada 5 ciclos (N resultados cada 5 ciclos).
Ya que se producen N resultados en el mismo tiempo en el que la ejecución en serie obtiene un
único resultado, el incremento o aceleración (en el caso ideal) es N.
10. Arquitectura de Computadores Segmentación (Pipeline) - 10
Arquitectura de Computadores Segmentación (Pipeline) - 10
Segmentación (Pipeline) …Conceptos Básicos
tiempoF1I1 D1
F2I2
O1
D2
F3I3
E1
O2
D3
Pipelining ≠ Paralelismo
(Especialización) (Replicación)
(c) Ejecución en Pipeline
t1
W1
E2
O3
t2
W2
E3
t3
W3
En el caso del pipeline, la segunda instrucción puede comenzar en cuanto la primera instrucción
haya finalizado su primera etapa. A partir del momento en que se llena el pipeline (después de
cinco ciclos) se tienen cinco instrucciones ejecutándose en distintas fases, y se puede empezar a
obtener un resultado por ciclo, pues finalizará una instrucción después de cada ciclo.
Obsérvese que el rendimiento de un pipeline no depende exactamente del número de etapas,
sino de la duración de su etapa más larga.
Aunque con una organización totalmente distinta, en cuanto al rendimiento, el paralelismo y el
pipeline se pueden considerar equivalentes.
No olvidar que la técnica de la segmentación o pipelining mejora el rendimiento no el tiempo de
ejecución de cada instrucción.
11. Arquitectura de Computadores Segmentación (Pipeline) - 11
Arquitectura de Computadores Segmentación (Pipeline) - 11
Segmentación (Pipelining) Ralentización
Situación ideal de una
arquitectura con Pipeline
Pero
No Resulta Fácil¡ !
Mantener siempre
activas todas las etapas
Motivos Estructurales
Dependencias de Operandos
Instrucciones de Bifurcación
Una vez elegido el número óptimo de etapas, para que el factor de aceleración sea igual al número
de etapas se requiere que todas las etapas del pipeline siempre estén llenas de instrucciones
útiles, y que nada retrase el avance de las instrucciones a través del pipeline.
Por desgracia, no es fácil mantener siempre ocupadas todas las etapas del pipeline. Hay tres
causas que lo impiden:
• Motivos estructurales.
• Dependencias de operandos.
• Instrucciones de bifurcación.
En las siguientes transparencias las comentaremos con cierto detalle.
12. Arquitectura de Computadores Segmentación (Pipeline) - 12
Arquitectura de Computadores Segmentación (Pipeline) - 12
Ralentización del Pipeline Motivos Estructurales
El Pipeline
SE DETIENE
- Ejecución más compleja
- Acceso a operandos
No todas las etapas son de la misma duración
Acceso simultáneo a memoria desde varias etapas
Hay instrucciones más complejas que otras
Tiempo ideal de ejecución: Un ciclo
Si una etapa no es capaz de realizar
su cometido en un ciclo de reloj
La duración efectiva de
cada etapa es la de la
etapa más lenta
Como ya veremos, se tiende a que la ejecución de cada etapa se realice en un ciclo de reloj. Pues
bien, cuando una etapa no es capaz de realizar su cometido en un ciclo de reloj, el pipeline
se detiene hasta que dicha etapa finaliza su trabajo. Hay varias causas estructurales (arquitectura
del pipeline) que pueden hacer que el pipeline se detenga.
Por ejemplo, puede ocurrir que no todas las etapas sean de la misma duración, con lo que
alguna etapa de corta duración debería esperar a que acabe la siguiente que es más larga. Esto
hará que la duración efectiva de cada etapa sea igual a la duración de la etapa más larga.
Normalmente los procesadores actuales tienden a un alto número de etapas, con lo que
automáticamente tienden a igualarse los tiempos.
Otra cosa que también puede ocurrir es que desde varias etapas se quiera acceder a memoria
simultáneamente (por ejemplo en la etapa de alimentación de instrucción y en la escritura del
resultado). Y, claro, si una etapa se detiene para esperar a poder realizar el acceso a memoria, el
pipeline se para.
También tenemos que considerar que no todas las instrucciones hacen las mismas cosas, por
lo que requieren tiempos distintos de CPU. Pasemos a la siguiente página para tratar este caso
con más detalle.
13. Arquitectura de Computadores Segmentación (Pipeline) - 13
Arquitectura de Computadores Segmentación (Pipeline) - 13
Ralentización del Pipeline …Motivos Estructurales
tiempoF1I1
t1
D1
F2I2
t2
O1
D2
F3I3
t3
W1
t5
D3
F4
O2
t6
D3
F4
O2 W2
E3
O4
D5
t8
W3
E4
O5
t9
E1
O2
D3
t4
F4I4 W4
E5
t10
E2
O3
t7
D4
F5I5 W5
t11
Hay instrucciones más complejas que otras
¿Y si alguna instrucción no utiliza todas las etapas?
No todas las instrucciones hacen las mismas cosas y requieren el mismo tiempo de CPU.
Unas pueden necesitar más tiempo en la etapa de ejecución (por ejemplo, la carga o escritura de
un registro requiere menos trabajo de ALU que una división en coma flotante), mientras que otras
pueden necesitar más tiempo para obtener los operandos o escribir el resultado (si están en
memoria principal se tarda más que si están en registros).
En el ejemplo de la transparencia vemos que la instrucción I2 no puede completar la fase de
alimentación de operandos en el ciclo 4, necesitando para ello también los ciclos 5 y 6. Esto hace
que en el 5º ciclo no pueda alimentarse la instrucción I5 por estar ocupada la etapa de extracción
de instrucción, debiendo esperar ésta al ciclo 7 para poder continuar extrayendo instrucciones.
Obsérvese que como consecuencia del sobretiempo de O2, al término de los ciclos 6 y 7 no finaliza
ninguna instrucción (lo cual va en perjuicio del rendimiento).
Puede suceder incluso que alguna de las etapas ni siquiera necesite ejecutarse. Por ejemplo,
en un procesador cuya última etapa se dedique a escribir en memoria principal, la carga de un
registro no requerirá dicha última etapa. En este caso, simplemente sucederá que cuando una
instrucción corta va después de una normal, ambas finalicen su ejecución simultáneamente, y en el
siguiente ciclo de reloj no termine ninguna instrucción; por lo tanto, el rendimiento no varía.
Aquí, para simplificar el problema, supondremos que todas las instrucciones pasan por todas las
etapas y que todas son de la misma duración.
Nos permitimos realizar estas simplificaciones para poder centrarnos en las principales causas de
la ralentización del pipeline: las dependencias de datos y las bifurcaciones. Veámoslas a
continuación.
14. Arquitectura de Computadores Segmentación (Pipeline) - 14
Arquitectura de Computadores Segmentación (Pipeline) - 14
Ralentización del Pipeline Dependencia de Datos
Si dos o más
instrucciones
comparten un dato
Dependencia
de Datos
- RAW
- WAR
- WAW
add R1,R2,R3
mul R3,R4,R5
...
Las dependencias de datos se producen cuando dos instrucciones comparten un dato (operando o
resultado). La situación es la siguiente: Una instrucción Ij actualiza el valor de una variable, pero
una instrucción posterior, Ik, accede a esa variable antes de que Ij haya terminado la operación.
Hay tres tipos de dependencias de datos, pero aquí vamos a comentar solamente el más evidente,
el que se denomina “lectura después de escritura” (Read After Write, o RAW).
15. Arquitectura de Computadores Segmentación (Pipeline) - 15
Arquitectura de Computadores Segmentación (Pipeline) - 15
Ralentización del Pipeline …Dependencia de Datos
...
I1 load R7,200
I2 add R1,R2,R3
I3 mul R3,R4,R5
I4 load R1,200
I5 load R2,300
...
Dependencia
RAW
t1
load R7,200 F
add R1,R2,R3
t2
D
F
t3
mul R3,R4,R5
O
D
F
t4
E
r1,r2
D
→R7
t5
r3,r4
t6
→R3
t7
→R5
2 SOLUCIONES
Prevención
Detección y
Resolución
En el programa del ejemplo, la dependencia que se denomina “lectura después de escritura” (Read
After Write, o RAW) puede producirse entre las instrucciones I2 e I3 si la instrucción MUL lee el
contenido de R3 (en el ciclo 5) antes de que el resultado de la suma anterior (al final del ciclo 6) se
cargue en él. Obviamente, la operación MUL no se ejecutará con los operandos esperados por el
programador, por lo que el resultado del programa será incorrecto.
Hay dos opciones básicas para resolver este problema de dependencia de datos; uno es mediante
la prevención: evitando que pueda llegarse a esta situación de dependencia; el otro es mediante
la detección y resolución, es decir, no preocupándose de evitarlo, pero sí de detectarlo en caso
de que se produzca y solucionarlo de alguna manera. Veámoslas en detalle.
16. Arquitectura de Computadores Segmentación (Pipeline) - 16
Arquitectura de Computadores Segmentación (Pipeline) - 16
Ralentización del Pipeline …Dependencia de Datos
Prevención de la Dependencia de Datos
El compilador debe retrasar la etapa de
ejecución de la instrucción dependiente
reordenando las instrucciones
...
I2 add R1,R2,R3
I1 load R7,200
I4 load R1,200
I3 mul R3,R4,R5
I5 load R2,300
...
...
I1 load R7,200
I2 add R1,R2,R3
I3 mul R3,R4,R5
I4 load R1,200
I5 load R2,300
...
Ejemplo 1
La dependencia de datos: Prevención.
El problema de la dependencia de datos entre una instrucción I1 y otra instrucción I2 que le sigue
puede prevenirse retrasando la ejecución de I2 un número K de etapas hasta que desaparezca el
problema de que I2 lea un operando que I1 no ha escrito todavía. Este retraso puede conseguirse
insertando un número K de instrucciones entre I1 e I2. Esto significa que el compilador tiene que
reordenar el programa para encontrar K instrucciones que puedan ejecutarse después de I1 y antes
de I2 sin que por ello varíe la estructura lógica del programa.
Ejemplo 1: En la transparencia tenemos el ejemplo de un programa en el que hay una
dependencia entre las instrucciones I2 e I3 a causa del registro R3. Como vemos, en este
programa el compilador puede detectar la dependencia de datos y reorganizar las instrucciones
para retardar el acceso al registro R3 hasta que esté actualizado. Debe quedar claro que esta
reorganización solamente puede hacerse si se mantiene la semántica original del programa.
Por lo que hemos visto en el ejemplo de la página anterior, para evitar la dependencia de I3
respecto a I2, se requiere que I3 comience su ejecución tres ciclos después de que lo haga I2.
Como se puede apreciar, esto se ha conseguido con la reorganización que ha realizado el
compilador, intercambiando I2 por I1 e I3 por I4.
17. Arquitectura de Computadores Segmentación (Pipeline) - 17
Arquitectura de Computadores Segmentación (Pipeline) - 17
Ralentización del Pipeline …Dependencia de Datos
...Prevención de la Dependencia de Datos
Ejemplo 2
...
I1 load R1,200
I2 add R1,R2,R3
I3 mul R3,R4,R5
I4 add #1,R3,R3
...
...
I1 load R1,200
NOP
NOP
I2 add R1,R2,R3
NOP
NOP
I3 mul R3,R4,R5
I4 add #1,R3,R3
...
Insertar NOP
...Y si no se pueden reordenar
las instrucciones sin alterar
la lógica del programa
¡ !
Si el compilador no puede reorganizar el código para encontrar estas K instrucciones que
decíamos arriba, sin modificar la lógica del programa, debe insertar operaciones NOP (No
Operación) entre I1 e I2.
Ejemplo 2: En el ejemplo inferior tenemos el fragmento de un programa en el que también hay
dependencias entre las instrucciones I1, I2 e I3. En este caso vemos que las instrucciones de
este fragmento no se pueden reordenar sin alterar la lógica del programa, por lo que el
compilador inserta las instrucciones NOP necesarias para evitar la ejecución errónea de
instrucciones por las dependencias de datos.
La ventaja de la solución basada en la prevención es que no se requiere hardware adicional, pero
a expensas de un compilador más complejo y una pérdida de tiempo si es necesario insertar
instrucciones NOP (cuando no se puede reordenar el programa para insertar instrucciones útiles).
18. Arquitectura de Computadores Segmentación (Pipeline) - 18
Arquitectura de Computadores Segmentación (Pipeline) - 18
Ralentización del Pipeline …Dependencia de Datos
Detección y Resolución
Detener el Pipeline
- Anticipación
load R7,200
t1
F
add R1,R2,R3
t2
D
F
mul R3,R4,R5
t3
O
D
F
load R1,R2
load R3,R4
t4
E
r1,r2
D
F
r3,r4
t7
D
F
→r7
t5
D
F
t6
→r3
D
F O
D
t8
→r5
E
O
t9
La dependencia de datos: Detección y resolución.
Este método requiere un hardware adicional en la CPU, pues se deben detectar las dependencias
de datos durante la ejecución y resolver estas dependencias. Detectarlas significa que debe darse
cuenta de que en un momento dado hay dos instrucciones arrancadas I1 e I2, tal que I2 depende de
un resultado establecido por I1. El dispositivo hardware que detecta estas dependencias se
denomina interlock. Resolver las dependencias significa hacer algo para retrasar la ejecución de I2
o para acelerar, en la medida de lo posible, la entrega a I2 del resultado que produce I1.
Veamos dos posibilidades de resolución (no excluyentes) para cuando se detecta una dependencia
de datos entre dos etapas del pipeline.
• Detener el pipeline. La aproximación más sencilla para evitar los problemas de dependencias
de datos con ayuda del hardware es detener la actividad en las etapas necesarias del pipeline
hasta que desaparezca la dependencia, es decir, hasta que se pueda ejecutar correctamente
la instrucción dependiente. En el ejemplo de la transparencia, esto significa detener las
instrucciones que siguen a la instrucción add desde el ciclo 5 hasta que el registro R3 pueda
leerse debidamente actualizado en el ciclo 7.
Con esta estrategia, primero se detecta la dependencia y después se detiene el pipeline a
partir de la instrucción dependiente hasta que desaparece la dependencia.
19. Arquitectura de Computadores Segmentación (Pipeline) - 19
Arquitectura de Computadores Segmentación (Pipeline) - 19
Ralentización del Pipeline …Dependencia de Datos
op1 op2
Result.
ALU
Regs.
F D
F
r1,r2
D
F
D
F O
D
→r5
E
O
→r3
r3,r4
D
F
Detección y Resolución
- Detener el Pipeline
Anticipación
El otro modo de resolver las dependencias de datos mediante Detección y Resolución es
acelerando, en la medida de lo posible, la entrega a una instrucción I2 del resultado que produce
una instrucción previa I1. Veámoslo en detalle:
• Anticipación (data forwarding). En una dependencia de datos RAW, puede suceder que una
instrucción I2 necesite un operando en la etapa O (obtención de operandos) que debe
producirlo en el mismo ciclo la instrucción I1 en su etapa E (ejecución). Esto obligaría a detener
la instrucción I2 hasta que I1 escriba el resultado y entonces pueda continuar I2 en su etapa O y
leer el resultado que produjo I1.
Este retraso puede evitarse redirigiendo (forwarding) el resultado de la etapa E de la
instrucción I1 directamente a la entrada de la etapa E o a la etapa O de la instrucción I2,
obteniendo el mismo efecto que se obtendría en la ejecución de la etapa O de I2.
En la diapositiva se muestra el esquema de una CPU con hardware de anticipación. Una vez
que en la etapa de ejecución se tiene el resultado para escribir en R3, se dirige dicho resultado
directamente a la etapa de obtención de operandos de la siguiente instrucción, sin esperar a
que finalice la etapa de escritura del resultado de la instrucción de suma.
En este caso no se consigue evitar totalmente la detención del pipeline, pero sí se evita un
ciclo de espera sobre la situación en la que no hay “anticipación”. La medida en que se
consigue evitar que se detenga el pipeline depende del número de etapas y de sus funciones.
20. Arquitectura de Computadores Segmentación (Pipeline) - 20
Arquitectura de Computadores Segmentación (Pipeline) - 20
Ralentización del Pipeline Bifurcaciones
8 ...
10 LOAD R7,200
12 ADD R1,R2,R3
14 MUL R3,R4,R5
16 LOAD R1,R2
18 LOAD R3,R4
20 JMP 24
22 SHR R2,#1
24 OR R2,R3,R2
26 JNZ 50
28 ADD #4,R6,R6
30 ...
Instrucciones
en direcciones
consecutivas de
memoria
Cuál es la dirección
de la siguiente instrucción¿ ?
La siguiente instrucción no
es la siguiente en memoria¡ !
Dir. Contenido
El flujo normal
de un programa
es secuencial
Ya hemos comentado que uno de los principales problemas en el diseño de un pipeline consiste en
asegurar el mantenimiento de un flujo constante de instrucciones alimentando sus diversas etapas
para así poder mantener también constante el ritmo de ejecución de instrucciones (idealmente, una
por ciclo).
El flujo normal de ejecución de un programa es secuencial, por lo que las instrucciones que se van
alimentando y ejecutando están en direcciones consecutivas de memoria. Por desgracia, las
instrucciones de bifurcación (que suelen representar alrededor del 20% de las instrucciones
ejecutadas) pueden romper el flujo constante de instrucciones alimentadas.
Cuando se alimenta una instrucción en la CPU, lo primero que se hace es incrementar el registro
Contador de Programa para conocer la dirección de la siguiente instrucción a ejecutar y extraerla.
Pero si se trata de una instrucción de salto, hasta que no llega a la etapa de ejecución no se
establece en el Contador de Programa la dirección de la siguiente instrucción a ejecutar, por lo que
la etapa de alimentación de instrucción no sabe por dónde seguir alimentando instrucciones.
¡Tenemos un problema con los saltos!
21. Arquitectura de Computadores Segmentación (Pipeline) - 21
Arquitectura de Computadores Segmentación (Pipeline) - 21
Ralentización del Pipeline …Bifurcaciones
Dir. Contenido
tiempo
t9
D
t10
O
t11
E
18 LOAD R3,R4
F
t1
W
t12t6
W
E
O
t7
W
E
50
F
24
D
t2
20 JMP 24
D
O
F
t3
24 OR R2,R3,R2
t4
O
E
D
F
??
26 JNZ 50
t5
E
W
O
D
Huecos
de
retardo
t8
W
F50 LOAD R2,R4
Una instrucción de bifurcación hace que la dirección de la siguiente instrucción a ejecutar no se
conozca hasta el momento justo de la ejecución de la instrucción de bifurcación (en la etapa de
ejecución), por lo que la etapa de alimentación no puede extraer la siguiente instrucción a una
bifurcación hasta que esta última no finalice su etapa de ejecución, y por lo tanto al terminar la
etapa de ejecución, ésta tendría que esperar hasta que se alimente la siguiente instrucción y vaya
avanzando por todas las etapas anteriores, que se habrán quedado vacías. A estas etapas vacías
que aparecen se las denomina huecos de retardo (delay slots).
En algunos sistemas, las bifurcaciones incondicionales pueden detectarse en la fase de
alimentación o extracción (fetch) si se le añade un poco hardware a esta primera etapa. Este
hardware de ayuda también extrae la dirección de salto, con lo que se puede proseguir la
extracción de instrucciones de la dirección del salto.
Sin embargo, en el caso de las bifurcaciones condicionales no se puede hacer esto, pues puede
ocurrir que la condición del salto se establezca precisamente en la etapa de ejecución de la
instrucción anterior, con lo que no hay más remedio que esperar a que la bifurcación llegue a la
etapa de ejecución para conocer la dirección de la siguiente instrucción. Esto quiere decir que se
debe detener la alimentación de instrucciones al pipeline hasta que en la etapa de ejecución se
averigüe la dirección de la siguiente instrucción
Afortunadamente, hay diversas técnicas que pueden evitar o minimizar el impacto de las
instrucciones de bifurcación, tales como la “bifurcación retardada”, la “predicción del salto” y
algunas más. Veamos estas dos primeras técnicas.
22. Arquitectura de Computadores Segmentación (Pipeline) - 22
Arquitectura de Computadores Segmentación (Pipeline) - 22
Ralentización del Pipeline …Bifurcaciones
Bifurcación Retardada
Estaría bien aprovechar
los huecos de retardo
con instrucciones útiles
Deben ser instrucciones
que se ejecuten
SIEMPRE
Si una bifurcación
produce h huecos
de retardo
El compilador debe insertar
h instrucciones después de
la bifurcación.
El efecto de la bifurcación
se debe retardar h ciclos.
El problema de los saltos: Bifurcación retardada.
Ya hemos visto que cuando entra una instrucción de salto en el pipeline, se producen h huecos de
retardo por lo que hay que esperar h ciclos hasta que llega la siguiente instrucción de la secuencia
a ejecutar. Estaría bien que estos huecos se pudieran rellenar con instrucciones que siempre se
deban ejecutar, independientemente de si se toma la bifurcación o no. Pero claro, si estas
instrucciones están en memoria inmediatamente después de la instrucción de bifurcación, según lo
que sabemos hasta ahora, no se ejecutarían si la instrucción de bifurcación decide saltar. Para
conseguir que se ejecuten siempre las h instrucciones que siguen a una bifurcación, en los
procesadores que tienen bifurcaciones retardadas, las instrucciones de salto no tienen efecto hasta
h instrucciones después de su ejecución, por lo que independientemente del resultado de la
ejecución de la bifurcación, siempre se ejecutan las h instrucciones siguientes. De esta manera no
se producen los huecos de retardo.
23. Arquitectura de Computadores Segmentación (Pipeline) - 23
Arquitectura de Computadores Segmentación (Pipeline) - 23
Ralentización del Pipeline …Bifurcaciones
CPU SIN bifurcaciones retardadas
CPU CON bifurcaciones retardadas (h = 3)
- Cuando NO se toma la bifurcación:
- Cuando SÍ se toma la bifurcación:
- Cuando SÍ se toma la bifurcación:
- Cuando NO se toma la bifurcación:
I1→I2→I3→I4→I5→I6→I7→I8→I9→I10→I11→I12→...
I1→I2→I3→I4→I5→I6→I11→I12→...
I1→I2→I3→I4→I5→I6→I7→I8→I9→I10→I11→I12→...
I1→I2→I3→I4→I5→I6→I7→I8→I9→I11→I12→...
Supongamos la serie de instrucciones de la transparencia, en la que I6 es la instrucción de salto
condicional a la instrucción I11. En una CPU sin saltos retardados, la secuencia de instrucciones
ejecutadas cuando la bifurcación no tiene lugar es: I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, ... Mientras
que cuando sí se produce la bifurcación, la secuencia es: I1, I2, I3, I4, I5, I6, I11, I12, ...
Si a este mismo procesador se le ponen bifurcaciones retardadas (con tres huecos de retardo), la
secuencia de instrucciones ejecutadas cuando se produce la bifurcación es: I1, I2, I3, I4, I5, I6, I7, I8,
I9, I11, I12, ... Es decir I7, I8 e I9 se ejecutan siempre, haya o no bifurcación.
Esto es así porque el efecto de la bifurcación se retarda 3 ciclos de reloj, es decir, después de
alimentar una instrucción de salto, se siguen extrayendo y ejecutando las instrucciones siguientes,
según su orden en la memoria, durante 3 ciclos de reloj. Después, se establece en el contador de
programa la dirección indicada en la instrucción de salto, con lo que la 4ª instrucción después de la
de salto, será ya la correspondiente a la de la dirección indicada en dicha instrucción de salto.
24. Arquitectura de Computadores Segmentación (Pipeline) - 24
Arquitectura de Computadores Segmentación (Pipeline) - 24
Ralentización del Pipeline …Bifurcaciones
...
...
I1: MOV #0,R2
I2: MOV #0,R7
I3: LD R8,VALOR
I4: ADD #1,R8
I5: CMP R2,R3
I6: BEQ I11
I7: ADD #1,R3
I8: ADD #2,R4
I9: MUL R3,R4
I10: ST R4,TOTAL
I11: ADD #1,R5
I12: ST R5,TOTAL
...
...
...
Programa
...
...
I1: MOV #0,R2
I2: MOV #0,R7
I3: LD R8,VALOR
I4: ADD #1,R8
I5: CMP R2,R3
I6: BEQ I11
I7: ADD #1,R3
I8: ADD #2,R4
I9: MUL R3,R4
I10: ST R4,TOTAL
I11: ADD #1,R5
I12: ST R5,TOTAL
...
...
...
Secuencia de
Ejecución Cuando NO
se toma la Bifurcación
Secuencia de
Ejecución Cuando SÍ
se toma la Bifurcación
EJEMPLO Ejecución en procesador con 3 huecos de retardo en los saltos
...
...
I1: MOV #0,R2
I2: MOV #0,R7
I3: LD R8,VALOR
I4: ADD #1,R8
I5: CMP R2,R3
I6: BEQ I11
I7: ADD #1,R3
I8: ADD #2,R4
I9: MUL R3,R4
I11: ADD #1,R5
I12: ST R5,TOTAL
...
...
...
Veamos con un ejemplo el efecto de las bifurcaciones retardadas en un procesador con 3 huecos
de retardo en los saltos.
Supongamos que tenemos el fragmento de un programa como el de arriba a la izquierda. Ahora lo
ejecutaremos y veremos su comportamiento.
En el cuadro del medio tenemos la secuencia de ejecución del programa en el caso en que, de
acuerdo a la instrucción de comparación I5, en el salto condicional I6 se decide continuar la
ejecución sin tomar el salto, con lo que se continúan ejecutando las instrucciones I7, I8, I9, I10,
I11, I12, …
Ahora veamos en el cuadro de la derecha el comportamiento del programa cuando, en ejecución,
sí se debe tomar la bifurcación de la instrucción I6. Como se puede observar, después de la
ejecución de la instrucción de salto I6, a pesar de que se determina que se debe saltar, se
continúan ejecutando las 3 instrucciones siguientes: I7, I8 e I9, y luego ya, sí se salta a la
instrucción I11, como establece la sentencia de salto I6.
25. Arquitectura de Computadores Segmentación (Pipeline) - 25
Arquitectura de Computadores Segmentación (Pipeline) - 25
Ralentización del Pipeline …Bifurcaciones
CPU con bifurcaciones retardadas (h = 3)
- Cuando SÍ se toma la bifurcación:
- Cuando NO se toma la bifurcación:
I1→I5→I6→I2→I3→I4→I7→I8→I9→I10→I11→I12→...
I1→I5→I6→I2→I3→I4→I11→I12→...
Conocido el retardo en las bifurcaciones, si es preciso,
reordenamos el código para mantener la semántica del programa:
I1 I5 I6 I2 I3 I4 I7 I8 I9 I10 I11 I12 ...
Ahora, la ejecución será así:
A partir de un fragmento de código escrito para un procesador sin saltos retardados, si se va a
ejecutar en una CPU con saltos con 3 huecos de retardo, sabiendo lo que sucede en los
procesadores con bifurcaciones retardadas (tarda 3 ciclos en bifurcar realmente), vamos a intentar
reordenar nuestro fragmento de código para que su ejecución se produzca con la misma semántica
que la esperada en un procesador sin saltos retardados.
Así, después de la instrucción de salto vamos a poner 3 de las instrucciones que hay antes de la
de salto, es decir, 3 instrucciones que queremos que se ejecuten siempre (se produzca el salto o
no).
Así, suponiendo que no se altera la semántica del programa, podríamos mover las instrucciones I2,
I3 e I4 y ponerlas justo a continuación de I6 (la bifurcación condicional), quedando entonces la
secuencia de instrucciones en memoria así:
I1, I5, I6, I2, I3, I4, I7, I8, I9, I10, I11, I12, ...
Ahora vamos a ejecutar este programa en nuestro procesador con bifurcaciones retardadas de 3
ciclos.
Cuando se no se produce la bifurcación, la secuencia de instrucciones que se ejecuta es:
I1, I5, I6, I2, I3, I4, I7, I8, I9, I10, I11, I12, ...
Si la bifurcación tiene lugar, las instrucciones se ejecutarán en este orden:
I1, I5, I6, I2, I3, I4, I11, I12, ...
Si no hubiese bifurcación retardada, al alimentar una instrucción de salto condicional habría que
detener la alimentación de instrucciones hasta que la instrucción de salto pasase por la etapa de
ejecución (hasta saber cuál es la siguiente instrucción a ejecutar). Con bifurcación retardada se
aprovechan esos ciclos en alimentar y ejecutar instrucciones que se desea ejecutar
incondicionalmente antes de que la instrucción de bifurcación tenga lugar (se salte o no).
26. Arquitectura de Computadores Segmentación (Pipeline) - 26
Arquitectura de Computadores Segmentación (Pipeline) - 26
Ralentización del Pipeline …Bifurcaciones
... y si no se pueden reordenar
las instrucciones
sin alterar la lógica del programa¡ !
Insertar
Instrucciones
NOP
I1→I2→I3→NOP→NOP→NOP→I11→I12→...
Esta técnica de los saltos retardados requiere la colaboración del compilador, que debe saber
cómo reorganizar el código para rellenar los huecos de retardo con instrucciones útiles (de la
misma manera que se hacía con las dependencias de datos).
Si el compilador no encuentra una manera de reordenar el código sin afectar a su semántica, debe
insertar operaciones NOP en los huecos de retardo.
27. Arquitectura de Computadores Segmentación (Pipeline) - 27
Arquitectura de Computadores Segmentación (Pipeline) - 27
Ralentización del Pipeline …Bifurcaciones
Predicción del Salto
load #50,R1
loop or R3,R4
...
...
sub #1,R1
bnz loop
add R1,R2
...
Ante un salto ... Una opción
Suponer que siempre
se toma la bifurcación
Cuando no se toma,
se vacía el pipeline.
El problema de los saltos: Predicción del salto.
Otra técnica para reducir el problema de las bifurcaciones consiste en intentar predecir si una
instrucción de bifurcación saltará o no. Por ejemplo, una bifurcación al final de un bucle salta al
comienzo de éste todas las veces excepto la última. Según esto, sería ventajoso que cuando el
procesador se encuentra una instrucción de salto suponga que el salto sí se va a efectuar
realmente, y cuando la etapa de alimentación detecte una bifurcación, empiece a extraer
instrucciones de la dirección de destino del salto. Si una vez que se ejecuta la instrucción de
bifurcación, resulta que efectivamente se salta, la ejecución continúa normalmente, pues las
instrucciones de la dirección del salto son las que ya se están alimentando. Si por el contrario
resulta que no se realiza el salto, se debe vaciar el pipeline (desechar todas las instrucciones
alimentadas) y empezar a alimentar las instrucciones que siguen en secuencia.
28. Arquitectura de Computadores Segmentación (Pipeline) - 28
Arquitectura de Computadores Segmentación (Pipeline) - 28
Ralentización del Pipeline …Bifurcaciones
... Predicción del Salto
Ante un salto ... Otra opción
Suponer que nunca
se toma la bifurcación
Cuando se toma,
se vacía el pipeline.
load #51,R1
loop sub #1,R1
bz fin
or R3,R4
...
bra loop
fin add R1,R2
...
¡ Ejecución Especulativa !
¡Ojo! Algunas instrucciones
pueden haber empezado a
ejecutarse
Si ahora suponemos que el control del bucle se realiza mediante una instrucción al comienzo del
mismo, ahora lo normal será suponer que la bifurcación no se tomará hasta la última pasada del
bucle. Es decir, hay veces que conviene suponer una cosa y otras veces otra.
Esto que hemos visto se denomina ejecución especulativa, pues las instrucciones pueden
empezar a ejecutarse antes de que el procesador sepa que las instrucciones alimentadas son las
realmente correctas. Supongamos que se predice que el salto tendrá lugar, por lo que se empiezan
a alimentar instrucciones y a pasarlas a las siguientes etapas del pipeline antes de que la
instrucción de bifurcación finalice su etapa de ejecución. ¡Y si al ejecutar la bifurcación no se
realiza el salto! ¡Nos encontramos que algunas instrucciones ya se han empezado a ejecutar en las
etapas anteriores!
Con ejecución especulativa se debe tener cuidado de que en las etapas anteriores a la de
ejecución no se modifiquen registros o posiciones de memoria hasta que no se confirme que la
predicción realizada ha sido la acertada.
29. Arquitectura de Computadores Segmentación (Pipeline) - 29
Arquitectura de Computadores Segmentación (Pipeline) - 29
Ralentización del Pipeline …Bifurcaciones
El compilador puede
detectarlo y reflejarlo
mediante un código
especial de operación
... Predicción del Salto
Hay situaciones en
las que casi siempre
se salta
Otras veces, casi
nunca
Mejor si el procesador
lleva la cuenta de cada
instrucción de salto
PREDICCIÓN DINÁMICA
PREDICCIÓN ESTÁTICA
La repetición de la bifurcación que se toma en el bucle la puede detectar el compilador y establecer
la predicción mediante un cierto código de operación en la bifurcación, lo que quiere decir que, en
ejecución, siempre que se alimente esa instrucción de bifurcación se hará la misma predicción. Por
esto, se la conoce como predicción estática. El PowerPC, por ejemplo, dispone de códigos de
operación para predicción estática.
La predicción se puede mejorar si se realiza dinámicamente, para lo cual el hardware del
procesador debe establecer la posibilidad de que haya o no salto cada vez que se encuentre una
cierta instrucción de bifurcación. Para ello, en la CPU se debe llevar la cuenta de los resultados de
las últimas ejecuciones de cada bifurcación. Ciertos estudios estadísticos dicen que conservando
solamente el resultado de la última ejecución (con un bit) ya se obtiene una gran probabilidad de
acierto (del orden del 90%) y con la historia de las cuatro últimas ejecuciones (dos bits) se mejora
ligeramente; manteniendo una historia mayor, la mejora es despreciable.