0% encontró este documento útil (0 votos)
30 vistas8 páginas

Ac - 4

Arquitectura de computadoras resumen de la unidad 1

Cargado por

Matías Boldrini
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas8 páginas

Ac - 4

Arquitectura de computadoras resumen de la unidad 1

Cargado por

Matías Boldrini
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Microprocesadores

Llamamos Arquitectura Interna del Microprocesador a la distribución física de sus componentes.


Los primeros microprocesadores se crearon de acuerdo a la arquitectura de Von Neumann.
Evolución en las Técnicas de Diseño de los Procesadores
- Procesador Secuencial: Se ejecuta una instrucción a continuación de la otra.
- Procesador Segmentado: Permite solapar en el tiempo la ejecución de varias instrucciones,
para aprovechar el Paralelismo a Nivel de Instrucción (ILP = Instruction – Level Parallelism) dentro del
procesador.
La idea en la que se basa esta técnica es la de una cadena de montaje, ya que el trabajo que
supone ejecutar una instrucción completa está dividido en diferentes etapas y a cada una de estas
etapas le corresponden unos recursos hardware diferentes dentro de la ruta de datos del procesador,
con este concepto se consigue aprovechar mucho mejor todo el hardware disponible en el procesador.
Se puede resumir la ejecución de una instrucción completa en un procesador de este tipo en cinco
etapas, cada instrucción pasará por aquéllas que necesite para completar su ejecución:
➢ Fetch (F): Se busca en la Memoria la
Instrucción que está almacenada en la
dirección que indica el PC.
➢ Decode (D): Se decodifica la instrucción
separando sus diferentes campos, para
saber que tipo de Opcode es. Si es
necesario, se leen 1 o 2 operadores de
los Registros del Procesador.
➢ Execution (X): Se ejecuta la operación
que indicaba el opcode, normalmente,
utilizando para ello algún tipo de ALU.
➢ Memory Access (M): Si es necesario
acceder a Memoria para leer o escribir,
el acceso se realiza en esta fase.
➢ Writeback (W): Por último, si es necesario volcar algún resultado a un Registro, se realiza esta
escritura.

- Procesador Segmentado
Multifuncional Estático
❖ ALU de enteros
❖ Sumador/Restador de Float
❖ Multiplicador/Divisor de Float
❖ ALU, traducción de Dirección Virtual a
Dirección FÍsica y Memoria de Datos para
las instrucciones de Carga /
Almacenamiento

En un procesador superescalar típico se


emiten entre 1 y 8 instrucciones por ciclo.
Además, si la planificación es estática, la
emisión de instrucciones debe realizarse en orden y los riesgos se detectan y resuelven antes de la
emisión. Por lo tanto, las instrucciones que se emiten simultáneamente deben ser independientes y
satisfacer una serie de restricciones. Por ejemplo, no se suele emitir en un ciclo más de una
instrucción que necesite hacer una referencia a memoria para evitar riesgos estructurales.
Como la emisión debe realizarse en orden, si en un bloque de instrucciones se encuentran
dependencias, sólo se podrán emitir las instrucciones anteriores a la primera que presenta una
dependencia. El orden que permite aprovechar el ILP debe ser realizado por el Compilador
simplemente comprobando que las instrucciones que se van a emitir en paralelo pueden hacerlo sin
riesgos que lo impidan.

- Procesador Segmentado
Multifuncional Dinámico
La Planificación Dinámica de Instrucciones
intenta reducir al máximo el número de paradas
del procesador modificando el orden de las
instrucciones en tiempo de ejecución para
aprovechar al máximo el ILP y los recursos del
procesador. Es decir; se basa en buscar y
decodificar las instrucciones en el orden
secuencial en el que aparecen en el código,
pero permitiendo que la LO y las etapas
posteriores se realicen fuera de orden.
Cuando se utilizan técnicas de planificación
dinámica la etapa F suele complicarse
ligeramente, ya que se buscan instrucciones en
la memoria caché de instrucciones a la mayor
velocidad posible y se almacenan pre-decodificadas en una cola de instrucciones de donde se pueden
ir retirando para planificar cuáles se deben ejecutar en el procesador en cada momento.
La parte del procesador que se encarga de las tareas asociadas a la etapa F suele denominarse
Front-End, mientras que el núcleo de planificación, ejecución y escritura de resultados suele
denominarse Back-End.
La etapa D se suele dividir en dos fases, en la primera se realiza la decodificación de las
instrucciones y se comprueban los riesgos, mientras que en la segunda se realiza la Lectura de
Operandos (LO). Tras la etapa de decodificación las instrucciones se suelen enviar a la Ventana de
Instrucciones donde esperan poder ejecutarse. La LO puede realizarse antes de enviar las
instrucciones a esta estructura o ya en la misma.
La planificación de instrucciones aritmético-lógicas suele realizarse independientemente de la
planificación de instrucciones de acceso a memoria, ya que para estas últimas, los algoritmos de
planificación tienen en cuenta que la jerarquía de memoria no es ideal, que la traducción de dirección
virtual a física puede ser una etapa costosa, etc.
La ejecución de instrucciones fuera de orden conlleva la aparición de riesgos asociados a
dependencias WAR (Write After Read) y WAW (Write After Write) y estas deberán resolverse también
de alguna manera.
La principal limitación está en que no se pueden emitir instrucciones que dependan de saltos
antes de que estos se resuelvan. Tampoco pueden desordenar la ejecución de las instrucciones de
acceso a memoria.
- Procesador Segmentado Multifuncional
Dinámico con Especulación
Para poder emitir instrucciones que dependan de
saltos se crean estos procesadores con predicción de
saltos y la ejecución desordenada de los accesos a
memoria, de manera que se pueda avanzar trabajo
de las instrucciones predichas mientras se resuelven
los saltos y los cálculos de las direcciones de acceso
a memoria. Esta técnica se conoce como
Especulación.
La especulación permite ejecutar instrucciones
que dependen de las predicciones de los saltos o de
los cálculos necesarios para obtener las direcciones
de acceso a memoria. Se supone que estas
predicciones son correctas y se continúa la ejecución
normalmente.
Es necesario añadir una nueva etapa a la
ejecución de instrucciones; Commit (C), en la que se
comprueba si las instrucciones tenían que ejecutarse
y si deben escribir sus resultados en los registros y
en memoria.
Esta técnica implica un costo, que puede ser simplemente el haber ejecutado instrucciones
innecesariamente si alguna de las predicciones de las que dependían ha resultado ser incorrecta, o
incluso el tener que deshacer o compensar las modificaciones que estas instrucciones han realizado
cuando luego se comprueba que no deberían haberse ejecutado o que no se ha resuelto un riesgo
RAW entre una instrucción de almacenamiento y una de carga adecuadamente.
Se utiliza Planificación Dinámica Distribuida, es decir, basada en estaciones de reserva y en el
renombramiento de registros, ya que es el tipo de planificación que más reduce las paradas por
riesgos de datos o WAR, lo que es especialmente importante cuando se diseña un procesador con
emisión múltiple en el que se van a estar ejecutando tantas instrucciones al mismo tiempo.
Para soportar la especulación hay que hacer una serie de modificaciones en el hardware que
implementa este tipo de planificación.
- CDB (Common Data Bus): Es necesario separar el hardware que permite el adelantamiento de
operandos entre instrucciones del que se utiliza para escribir los resultados definitivos en el banco de
registros. La idea fundamental es que las instrucciones especuladas no puedan modificar el estado del
procesador. Para conseguir esto, se permite ejecución fuera de orden pero se obliga a que la
terminación de las instrucciones sea en orden.
El hardware que permite estas modificaciones se denomina Buffer de Re-Ordenamiento, ROB. Se
trata de una estructura que se encarga de almacenar el resultado de las instrucciones especuladas
desde que finalizan su ejecución hasta que se les permite terminar. De esta manera, el ROB se
encarga de escribir los resultados en el banco de registros y en memoria cuando se sabe que son
definitivos porque las instrucciones han llegado a la etapa de terminación.
El tamaño de la ventana de instrucciones ya no está sólo limitado por el número de estaciones de
reserva, sino también por el número de entradas en el ROB, ya que no se puede emitir una instrucción
si no se le puede asociar una entrada en este buffer.
Ley de Moore
En 1965 Gordon Moore predijo que el número de transistores que incorporan un microprocesador
se duplicaría cada 18/24 meses. A dicha afirmación se le conoce como Ley de Moore y
prácticamente se ha cumplido hasta nuestros días.

RISC (Reduced Instruction Set Computers)


Son máquinas de estructura y software básico muy simples.La filosofía de implementación es que:
cuanto más simple es la estructura, más rápido es el funcionamiento
Al disminuir los costos del hardware, se lo fué complicando demasiado, asumiendo aplicaciones
que correspondían al software, pero así se complicó tanto que no hubo software que pudiera utilizar
todas las potencialidades, y se produjo el “Vacío Semántico”. Había cosas en hardware que el
software no podía resolver.

Características de las computadoras RISC


❖ Operaciones de ciclo único.
❖ Unidad de Control cableada.
❖ Diseño Load/Store.
❖ Gran cantidad de registros y técnicas de compilación.
❖ Conjunto de instrucciones de máquina simple, limitado y fijo.

Mediciones sobre Programas


❖ Mediciones sobre los Operandos
➢ Son constantes o variables.
➢ Son enteros, en coma flotante, caracteres o punteros.
➢ Son escalares, listas, matrices o estructuras de datos.
➢ Son globales o argumentos de procedimientos locales.
➢ Su cantidad, tamaño y la frecuencia con que son utilizados.

❖ Mediciones sobre las Operaciones


Se quiere saber cuál es su ocurrencia, o sea con qué frecuencia aparecen en los distintos
programas, especialmente con las instrucciones de transferencias de control.
Hay dos tipos de Mediciones, Estáticas y Dinámicas;
➢ Estáticas; Se refieren al texto de un programa. Nos indicarán la cantidad de memoria
usada para almacenar el programa y cuánta memoria para los datos iniciales, finales e
intermedios.
➢ Dinámicas; Se refieren a la ejecución de los programas. Por lo tanto se refieren a los
códigos de máquina y no a los programas fuente.

❖ Mediciones sobre la Ejecución


Se refieren a las partes de los programas donde la ejecución utiliza la mayor parte del tiempo. Se
trata de identificar dónde existen porciones del código que ejecutan lazos, que pueden ser críticos.
También se trata de saber el costo de las distintas partes del programa. Este costo puede ser tomado
en tiempo, en accesos a memoria o en cantidad de líneas de programa.
❖ Mediciones sobre las Instrucciones
Se hicieron mediciones sobre la frecuencia relativa de aparición de operaciones sobre una
colección de más de trescientos procedimientos cuya fuente eran programas de alto nivel. Y su
conclusión fue;
- Las operaciones más simples son las más ejecutadas.
- La importancia relativa de las llamadas y retornos a procedimientos, por el tiempo invertido en
ellos.
- La importancia de las estructuras de control (comparaciones y saltos), debido a la frecuencia con
que aparecen las sentencias if y loop.

Uso de Registros
A partir de preguntas como ¿Cuántos son utilizados? y ¿Cuál es su necesidad? nace el concepto
de Vida de un Registro, que es el tiempo que vá desde que es cargado hasta que se cambia su
contenido.

Conclusiones sobre el RISC


1. No es cierto que un conjunto de instrucciones lo más cercano posible a un lenguaje de alto
nivel permite que los desarrollos sean más rápidos y eficientes. Los lenguajes de alto nivel son
soportados más eficientemente, optimizando el rendimiento de las características que
consumen más tiempo.
2. Es posible disminuir la cantidad de accesos a memoria utilizando una mayor cantidad de
referencias a registros. Esto además es ayudado por cuanto la mayoría de las variables
resultan ser escalares y localmente referenciadas.
3. La alta proporción de saltos condicionales y de instrucciones de llamada a subrutinas, sugiere
que se debe prestar especial atención al diseño de sistemas encauzados de instrucciones.

VLWI (Very Long Instruction Word)


En este tipo de arquitecturas el compilador empaqueta un conjunto de instrucciones que pueden
ejecutarse en paralelo en una única instrucción muy larga.
Es decir, el compilador especifica
explícitamente el paralelismo en cada
instrucción, no es una responsabilidad del
procesador.
El compilador debe tener en cuenta que no
existan riesgos de datos ni de control entre las
sub instrucciones que se empaquetan juntas y
que haya recursos suficientes en el procesador
para ejecutarlas todas en paralelo.
Se pueden incluir más unidades funcionales
para realizar operaciones, el diseño es el de un
procesador segmentado sencillo pero con gran
cantidad de recursos de ejecución.
Es necesario incluir puertos adicionales de
lectura y escritura en el banco de registros, para
que todas las sub instrucciones puedan leer sus
operandos y escribir sus resultados en la etapa
adecuada.
Procesadores Multinúcleo
Un procesador multinúcleo es aquel que combina dos o más microprocesadores independientes
en un solo paquete, a menudo un solo circuito integrado. En general, los microprocesadores
multinúcleo permiten que un dispositivo computacional exhiba una cierta forma del Paralelismo a Nivel
de Thread (TLP) sin incluir múltiples microprocesadores en paquetes físicos separados. Esta forma de
TLP se conoce a menudo como Multiprocesamiento a Nivel de Chip o CMP.
En un procesador multinúcleo es fundamental la paralelización de los procesos que ejecuta un
programa, esto implica que cada núcleo consigue ejecutar una tarea de forma paralela a otro, y de
forma consecutiva, una detrás de otra.
Este método de crear distintas tareas de forma simultánea de un programa, se llama hilos de
procesos, subprocesos o Threads. Tanto el sistema operativo como los programas, deben ser
capaces de crear hilos de procesos paralelos para aprovechar toda la potencia del procesador.

Tecnología HyperThreading
Esta tecnología consiste en la existencia de dos núcleos en uno solo, pero no serán núcleos
reales, sino lógicos. Ya hemos hablado antes de ello. La idea es dividir, una vez más, la carga de
trabajo entre núcleos segmentando cada una de las tareas a realizar en subprocesos para que se
vayan ejecutando cuando un núcleo esté libre.
Existen procesadores que cuentan con solo dos núcleos, por ejemplo, pero tienen 4 threads (4
hilos) gracias a estas tecnologías. Intel la utiliza principalmente en sus procesadores de alto
rendimiento Intel Core y en las CPU de los portátiles, mientras que AMD la ha implementado en toda
su gama de procesadores Ryzen.
Arquitectura en Paralelo
Se conoce como Cuello de Botella de Von Neumann a la estructura tradicional de una
computadora con una sola CPU que emite solicitudes en secuencia sobre un bus hacia la memoria, y
ésta responde una solicitud por vez.
Todos los intentos de terminar con el problema se inician con la suposición de que una
computadora debería consistir de cierto número de Unidades de Control, Unidades Lógicas
Aritméticas y Módulos de Memoria que puedan operar en paralelo.
En donde divergen, es en qué tantos de cada uno de estos elementos debe haber, qué aspecto
tienen y cómo deben conectarse. Algunos diseños usan un número relativamente pequeño de CPU
que están débilmente conectadas, otros utilizan muchas ALU muy interconectadas trabajando al
unísono, dirigidas por una sola unidad de control
Las tres cuestiones fundamentales para un sistema en paralelo son poder describir:
1. Los Elementos Procesadores.
2. Los Módulos de memoria.
3. La Estrategia de interconexión entre Procesadores y Memorias.
El área en la que los sistemas en paralelo difieren más es en cómo acomodar las piezas. Los
esquemas de interconexión se pueden dividir en dos grandes categorías:
❖ Estáticos: Donde se conectan los componentes de manera fija, en forma de estrella, anillos o
retículas.
❖ Dinámicos: Donde todos los componentes se conectan a una red de interruptores que puede
en forma dinámica dirigir mensajes entre los componentes.

Granulado Del Paralelismo


Paralelismo Ordinario: Se denomina así al evento de correr grandes porciones de software en
paralelo, con poca o ninguna comunicación entre las partes. Por ejemplo, los sistemas de tiempo
compartido de CPU múltiples (8 – 64).
Paralelismo fino: Alto grado de procesamiento en serie o de muchas ALU operando en la misma
corriente de instrucciones al mismo tiempo. Ejemplo las supercomputadoras numéricas que tienen
hardware especial para el procesamiento vectorial.

Sistemas de bajo acoplamiento: Son los sistemas con un pequeño número de grandes CPU
independientes que tienen entre ellas conexiones de bajo ancho de banda.
Sistemas de alto acoplamiento: En estos sistemas los componentes son más pequeños, se
encuentran más juntos e interactúan entre sí, con frecuencia, a través de redes de comunicación con
un elevado ancho de banda.

Esquemas de Clasificación
Flujos de Instrucciones y Datos (Flynn 1966)
Procesamiento en Serie y en Paralelo (Feng 1972)
Grado de Paralelismo y de Encauzamiento (Handle 1977)

Multiprocesadores de Memoria Compartida en Base a Buses


En los cuatro diseños, se dibujó la memoria compartida global como un solo módulo. Si la
memoria es tan rápida como las CPU, esta distribución está bien.
Sin embargo, si la memoria es notablemente más lenta que las CPU sería mejor dividir la
memoria en varios módulos independientes. De esta manera, después de que una CPU manda una
solicitud a un módulo de memoria, puede liberar al bus y permitir que otras CPU lo usen.

Multiprocesadores de Memoria Compartida con Etapas Múltiples


Los buses simplemente no se adaptan a los grandes sistemas (límite práctico para un bus 64
procesadores)
La única forma práctica de implementar una memoria compartida junto con un número importante
de CPU, es dividir la memoria en diversos módulos y proporcionar trayectorias múltiples entre las CPU
y las memorias.
Esta disposición no sólo proporciona un mayor ancho de banda, sino que también permite
manejar varias solicitudes en paralelo

Interruptor de Barras Cruzadas


En cada intersección de líneas
horizontales (de entrada) y verticales (de
salida) existe un punto de cruce, que es un
pequeño interruptor que se puede abrir o
cerrar eléctricamente, dependiendo de si se
van o no a conectar las líneas vertical y
horizontal.
Una de las mejores características de los
interruptores cruzados consiste en que es una
red de no-bloqueo, lo que significa que no se
negará nunca a una CPU la conexión que
necesite.

Modos de Expresar el Rendimiento


Tiempo paralelo: El tiempo total absoluto que requiere un programa
para su ejecución en un procesador paralelo.
Speed Up: La relación entre el tiempo que se requiere para la ejecución
de un programa en un procesador secuencial y el tiempo paralelo.
Ley de Amdahl: Expresa el aumento de velocidad (S) en función de la
cantidad de procesadores (p) y la cantidad de operaciones que deben
ejecutarse en forma secuencial (f).

Importancia de la asignación, respecto de la dependencia, ya que el tiempo de comunicación es


un cuello de botella en el procesamiento paralelo. El agregado de procesadores no asegura acelerar
los procesos. En general se debería mantener una relación en la que:

También podría gustarte