Anda di halaman 1dari 2

1) on board cache

El desarrollo de cachés y caché es uno de los eventos más significativos en la


historia de la computación. Prácticamente todos los núcleos de CPU modernos,
desde chips de potencia ultra baja como el ARM Cortex-A5 hasta el Intel Core
i7 de más alto nivel, utilizan cachés. Incluso los microcontroladores de gama
alta suelen tener cachés pequeños u ofrecerlos como opciones: los beneficios
de rendimiento son demasiado grandes como para ignorarlos, incluso en
diseños de potencia ultra baja.

El caché fue inventado para resolver un problema significativo. En las primeras


décadas de la computación, la memoria principal era extremadamente lenta e
increíblemente cara, pero las CPU tampoco eran particularmente rápidas. A
partir de la década de 1980, la brecha comenzó a ampliarse rápidamente. Las
velocidades del reloj del microprocesador despegaron, pero los tiempos de
acceso a la memoria mejoraron mucho menos dramáticamente. A medida que
crecía esta brecha, se hizo cada vez más claro que se necesitaba un nuevo
tipo de memoria rápida para cerrar la brecha.

2) on board l1 y l2 cache
la tasa total de aciertos aumenta bruscamente a medida que aumenta el
tamaño de L2. Un L2 más grande, más lento y más barato puede proporcionar
todos los beneficios de un L1 grande, pero sin el tamaño del troquel ni la
penalización del consumo de energía. La mayoría de las tasas de caché L1
modernas han alcanzado tasas muy por encima del 50% teórico que se
muestra aquí. Cada CPU contiene un tipo específico de RAM llamado tag
RAM. La etiqueta RAM es un registro de todas las ubicaciones de memoria que
pueden asignarse a cualquier bloque de caché dado. Si un caché es totalmente
asociativo, significa que cualquier bloque de datos RAM puede almacenarse en
cualquier bloque de caché. La ventaja de un sistema de este tipo es que la tasa
de aciertos es alta, pero el tiempo de búsqueda es extremadamente largo: la
CPU tiene que revisar todo su caché para averiguar si los datos están
presentes antes de buscar en la memoria principal.

En el extremo opuesto del espectro tenemos caches asignados directamente.


Un caché de mapa directo es un caché donde cada bloque de caché puede
contener uno y solo un bloque de memoria principal. Este tipo de caché se
puede buscar extremadamente rápido, pero como se asigna 1: 1 a las
ubicaciones de la memoria, tiene una tasa de aciertos baja. Entre estos dos
extremos hay memorias caché asociativas n- way. Una memoria caché
asociativa de 2 vías (Liled de Piledriver es de 2 vías) significa que cada bloque
de memoria principal puede asignarse a uno de los dos bloques de memoria
caché. Un caché asociativo de ocho vías significa que cada bloque de memoria
principal podría estar en uno de los ocho bloques de caché
3) branch prediction
La predicción de rama es una técnica que se utiliza para acelerar la ejecución
de instrucciones en procesadores que utilizan la canalización. Las CPU
ejecutaron inicialmente las instrucciones una a una a medida que entraron,
pero la introducción de la canalización significó que las instrucciones de
bifurcación podrían ralentizar significativamente el procesador, ya que el
procesador tiene que esperar a que se ejecute el salto condicional.
La predicción de rama divide las instrucciones en predicados, similar a la lógica
de predicado. Una CPU que usa predicción de rama solo ejecuta sentencias si
un predicado es verdadero. Un ejemplo es usar la lógica condicional. Dado que
no se ejecuta código innecesario, el procesador puede funcionar de manera
mucho más eficiente. La predicción de rama se implementa en la lógica de la
CPU con un predictor de rama.

4)data flou análisis


El análisis del flujo de datos es una técnica para recopilar información sobre el
posible conjunto de valores calculados en varios puntos en un programa de
computadora . El gráfico de flujo de control de un programa (CFG) se utiliza
para determinar las partes de un programa a las que se puede propagar un
valor particular asignado a una variable. La información recopilada es a
menudo utilizada por los compiladores cuando optimizan un programa. Un
ejemplo canónico de un análisis de flujo de datos es alcanzar definiciones .

Una forma sencilla de realizar análisis de flujo de datos de programas es


configurar ecuaciones de flujo de datos para cada nodo del gráfico de flujo de
control y resolverlas calculando repetidamente la salida de la entrada
localmente en cada nodo hasta que todo el sistema se estabilice, es decir,
alcanza un punto fijo . Este enfoque general fue desarrollado por Gary Kildall
mientras enseñaba en la Escuela Naval de Postgrado .

Anda mungkin juga menyukai