sexta-feira, 19 de outubro de 2012

Microarquitectura vs arquitectura


Microarquitectura
En ingeniería de computación, la microarquitectura (a veces abreviada como µarch o uarch), también llamada como organización de la computadora, es la manera que una arquitectura del conjunto de instrucciones (ISA) es implementada por el procesador. Un ISA dado puede ser implementado con diferentes microarquitecturas.1 Las implementaciones pudieran variar debido a diferentes objetivos de un diseño dado o debido a los cambios en la tecnología.2 La arquitectura de computadora es la combinación del diseño determinado de la microarquitectura y del conjunto de instrucciones.


Relación del conjunto de instrucciones con la arquitectura.

El conjunto de instrucciones (ISA) es más o menos el mismo que el modelo de programación de un procesador, en la manera que es visto por un programador de lenguaje ensamblador o escritor de un compilador. El ISA incluye el modelo de ejecución, los registros del procesador, los formatos de la dirección y los datos, entre otras cosas. La microarquitectura incluye a las partes constituyentes del procesador y cómo éstos se interconectan e interoperan para implementar el ISA.
La microarquitectura de una máquina se presenta generalmente como diagramas más o menos detallados que describen las interconexiones de los diferentes elementos microarquitectónicos de la máquina. Estos elementos pueden ser desde simples puertas y registros, hasta unidades arritméticas lógicas completas así como elementos más grandes. Estos diagramas se dividen en la trayectoria de datos (data path), que es donde se colocan los datos; y la trayectoria de control (control path), que son para dirigir los datos.3
Cada elemento microarquitectónico es, a su vez, representado por un diagrama esquemático que describe las interconexiones de las puertas lógicas usadas para implementarlo. Cada puerta lógica se representa por un diagrama de circuito describiendo las conexiones de los transistores usados para implementarla en alguna familia lógica particular. Esto hace que máquinas con diferentes microarquitecturas puedan tener la misma arquitectura del conjunto de instrucciones, por lo que son capaces de ejecutar los mismos programas. Se consigue seguir utilizando un mismo ISA al tiempo que se alcanzan mayores rendimientos mediante nuevas microarquitecturas y/o soluciones de circuitos, así como con avances en la fabricación de semiconductores.
Lo que se consigue con esto es que una sola microarquitectura pueda ejecutar diferentes ISA haciendo cambios menores al microcódigo.
Una microarquitectura describe, entre otros:
-el nombre de los segmentos y su tamaño,
-el nombre de las memorias caché y su asociabilidad respectiva,
-la existencia de un renombre de registros,
-de una unidad de ejecución fuera de orden,
-de una unidad de predictor de saltos.
-La microarquitectura y la arquitectura de conjunto de instrucciones forman la arquitectura de una computadora.

Conceptos microarquitectónicos

Todas las CPU, así como las implementaciones de microprocesadores en un simple chip o multichips en general, ejecutan los programas realizando los siguientes pasos:
-Se lee una instrucción
-Se decodifica la instrucción
-Se encuentra cualquier dato asociado que sea necesario para procesar la instrucción
-Se procesa la instrucción
-Se escriben los resultados
Esta serie de pasos, simple en apariencia, se complican debido a la jerarquía de memoria, en la que se incluye la memoria caché, la memoria principal y el almacenamiento no volátil como pueden ser los discos duros, (donde se almacenan las instrucciones y los datos del programa), que son más lentos que el procesador en sí mismo. Con mucha frecuencia, el paso (2) origina un retardo muy largo (en términos de ciclos de CPU) mientras los datos llegan en el bus del computador. De hecho, se sigue investigando intensamente sobre la forma crear diseños que eviten estos retardos tanto cuanto sea posible. Durante muchos años, una de las metas principales del diseño microinformático ha sido la de ejecutar el mayor número posible de instrucciones en paralelo, aumentando así la velocidad efectiva de ejecución de un programa. Al principio, estos esfuerzos crearon estructuras lógicas y de circuito bastante complejas. De hecho, en un principio estas técnicas sólo podían implementarse en costosos mainframes y supercomputadores debido a la cantidad de circuitería necesaria para realizarlas. No obstante, estas técnicas han podido implementarse en chips semiconductores cada vez más pequeños a medida que la fabricación éstos fue progresando y avanzando, lo que ha abarado notablemente su costo.
Algunas técnicas microarquitectónicas comunes en los CPU modernos son:
-Selección del conjunto de instrucciones
-Entubado de instrucciones (Instruction pipelining)
-Memoria caché
-Predicción de bifurcación
-Superescalar
-Ejecución fuera de orden
-Renombrado de registros
-Multiprocesamiento y multihilo

Arquitectura de computadoras

La arquitectura de computadoras es el diseño conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (UCP) trabaja internamente y accede a las direcciones de memoria.
También suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo.
El ordenador recibe y envía la información a través de los periféricos por medio de los canales. La UCP es la encargada de procesar la información que le llega al ordenador. El intercambio de información se tiene que hacer con los periféricos y la UCP. Todas aquellas unidades de un sistema exceptuando la UCP se denomina periférico, por lo que el ordenador tiene dos partes bien diferenciadas, que son: la UCP (encargada de ejecutar programas y que está compuesta por la memoria principal, la UAL y la UC) y los periféricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).

Microarquitectura vs. arquitectura de conjunto de instrucciones

La microarquitectura debe distinguirse de la arquitectura de conjunto de instrucciones. Esta última es una imagen abstracta de un sistema de computación como sería visto por un programador en lenguaje máquina, e incluye el conjunto de instrucciones, modos de dirección de memoria, registros del procesador, y formatos de direcciones y datos.

La microarquitectura, en cambio, es de nivel más inferior, más concreto. Muestra las partes constituyentes del sistema y cómo se interconectan e interoperan, para así implementar la especificación de arquitectura.

Diferentes máquinas podrían tener una misma arquitectura de conjunto de instrucciones, y así ser capaces de ejecutar los mismos programas, sin embargo pueden tener diferentes microarquitecturas.

Estas diferentes microarquitecturas (junto con los avances en las tecnologías de fabricación de semiconductores) son las que permiten nuevas generaciones de procesadores que permiten alcanzar mejores niveles de performance comparadas con las generaciones previas. En teoría, una única microarquitectura (especialmente si ésta incluye microcódigo) podría ser usada para implementar dos conjuntos de instrucciones diferentes, por la programación de dos almacenes de control diferentes (el almacén de control almacena el microprograma del CPU).

Representación de una microarquitectura

La microarquitectura de una máquina, generalmente es representada empleando un digrama de bloques que describe las interconexiones entre registros, buses y bloques funcionales de la máquina. Esta descripción incluye el número de unidades de ejecución, el tipo de las unidades de ejecución (como punto flotante, entero, SIMD, etc.), la naturaleza del pipelining, el diseño de la memoria caché y el soporte de periféricos.

El esquema físico del circuito, las construcciones de hardware y otros detalles físicos son llamados implementación de esa microarquitectura. Dos máquinas pueden tener la misma microarquitectura, y por lo tanto el mismo diagrama de bloques, pero diferentes implementaciones de hardware.


Microarquitectura.

Nenhum comentário:

Postar um comentário