what memoria definicion cache caching memory cpu-architecture cpu-cache micro-architecture

caching - what - cache memoria definicion



¿Por qué no hay un bus de datos que sea tan ancho como el tamaño de la línea de caché? (2)

Creo que el ancho del bus DRAM se amplió a los actuales 64 bits antes de AMD64. Es una coincidencia que coincida con el tamaño de la palabra. Puede que no sea una coincidencia que permita transmitir una dirección en una sola transferencia.

Consulte a continuación: La memoria de ancho de banda alto usa buses más anchos, porque hay un límite en cuanto a la altura con la que puede sincronizar cosas y, en algún momento, resulta ventajoso hacerla masivamente paralela.

Parecería mucho más rápido si hubiera un bus con ancho de 64 bytes, lo que permitiría buscar toda una línea de caché a la vez.

El tamaño de transferencia de ráfagas no tiene que correlacionarse con el ancho del bus. Las transferencias hacia / desde DRAM ocurren en ráfagas del tamaño de la línea de caché. La CPU no tiene que enviar un comando por separado para cada 64 bits, solo para configurar la transferencia de ráfaga de una línea de caché completa (lectura o escritura). Si quiere menos, en realidad tiene que enviar un comando abort-burst ; no hay un comando de transferencia de "solo byte" o "palabra única". (Y sí, ese artículo de SDRAM wiki todavía se aplicaba a DDR3 / DDR4).

¿Pensabas que eran necesarios buses más anchos para reducir la sobrecarga de los comandos? Ellos no están.

Los buses paralelos de alta velocidad son difíciles de diseñar. Todas las trazas en la placa base entre el zócalo de la CPU y cada zócalo DRAM deben tener el mismo retardo de propagación dentro de menos de 1 ciclo de reloj. Esto significa que tienen casi la misma longitud y controlan la inductancia y la capacitancia a otras trazas porque los efectos de la línea de transmisión son críticos a frecuencias suficientemente altas para ser útiles.

Un autobús extremadamente ancho le impediría marcarlo como alto , porque no podría lograr las mismas tolerancias. SATA y PCIe reemplazaron buses paralelos (IDE y PCI) con buses serie de alta velocidad. (PCIe usa múltiples carriles en paralelo, pero cada carril es su propio enlace independiente, no solo parte de un bus paralelo).

Simplemente sería completamente impráctico utilizar 512 líneas de datos desde el zócalo de la CPU a cada canal de zócalos DRAM . Las CPU típicas de escritorio / laptop usan controladores de memoria de doble canal (para que dos DIMM puedan estar haciendo cosas diferentes al mismo tiempo), así que esto sería 1024 seguimientos en la placa base y pins en el zócalo de la CPU. (Esto se suma a un número fijo de líneas de control, como RAS, CAS, etc.).

Ejecutar un bus externo a velocidades de reloj realmente altas resulta problemático, por lo que hay una compensación entre el ancho y la velocidad del reloj.

Para obtener más información sobre DRAM, consulte Lo que todo programador debería saber sobre la memoria de Ulrich Drepper. Se vuelve sorprendentemente técnico sobre el diseño de hardware de los módulos DRAM, las líneas de dirección y mux / demuxers.

Tenga en cuenta que RDRAM (RAMBUS) utilizó un bus de alta velocidad de 16 bits y un ancho de banda mayor que PC-133 SDRAM (1600 MB / s frente a 1066 MB / s). (Tenía una latencia peor y funcionó más caliente, y falló en el mercado por algunas razones técnicas y algunas no técnicas).

Supongo que ayuda usar un bus más ancho hasta el ancho de lo que puede leer de los chips DRAM físicos en un solo ciclo, por lo que no necesita tanto almacenamiento en búfer (menor latencia).

El artículo de Ulrich Drepper (vinculado arriba) confirma esto:

Con base en las líneas de direcciones a2 y a3, el contenido de una columna se pone a disposición del pin de datos del chip DRAM. Esto ocurre muchas veces en paralelo en una serie de chips DRAM para producir un número total de bits correspondiente al ancho del bus de datos .

Dentro de la CPU, los buses son mucho más amplios . Core2 a IvyBridge utilizaba rutas de datos de 128 bits entre diferentes niveles de caché y desde unidades de ejecución a L1. Haswell amplió eso a 256b (32B), con una ruta de 64B entre L1 y L2

High Bandwidth Memory está diseñado para acoplarse más estrechamente a lo que sea que lo esté controlando, y utiliza un bus de 128 bits para cada canal, con 8 canales. (para un ancho de banda total de 128 GB / s). HBM2 va dos veces más rápido, con el mismo ancho.

En lugar de un bus 1024b, 8 canales de 128b es una compensación entre tener un bus extremadamente ancho que es difícil de mantener sincronizado, versus demasiada sobrecarga por tener cada bit en un canal separado (como PCIe). Cada bit en un canal separado es bueno si necesita señales y conectores robustos, pero cuando puede controlar mejor las cosas (por ejemplo, cuando la memoria no está enchufada), puede usar buses rápidos y anchos.

Quizás podría haber dos anchuras de bus de datos diferentes, una para la obtención de líneas de caché estándar y otra para el hardware externo (DMA) que solo funciona con el acceso de memoria de tamaño de palabra.

Este ya es el caso. Los controladores DRAM están integrados en la CPU, por lo que la comunicación desde dispositivos del sistema como controladores SATA y tarjetas de red debe ir desde ellos a la CPU en un bus (PCIe), luego a la RAM (DDR3 / DDR4). El puente de la arquitectura de memoria interna de la CPU al resto del sistema se llama Agente del sistema. El chipset Northbridge se comunica con él en algunos de los carriles PCIe que proporciona.

En un sistema multi-socket, el tráfico de coherencia de caché y el acceso a la memoria no local también tienen que ocurrir entre los sockets. AMD aún puede usar hypertransport (un bus de 64 bits). El hardware Intel tiene una parada adicional en el bus de anillo que conecta los núcleos dentro de un Xeon, y esta conexión adicional es donde los datos de otros enchufes entran o salen. IDK el ancho del bus físico.

Cuando se produce una falta de caché, la CPU recupera una línea de caché completa de la memoria principal a la jerarquía de caché. (típicamente 64 bytes en x86_64)

Esto se hace a través de un bus de datos, que tiene solo 8 bytes de ancho en los sistemas modernos de 64 bits. (dado que el tamaño de la palabra es de 8 bytes)

EDITAR: "Bus de datos" significa el bus entre la CPU y los módulos DRAM en este contexto. Este ancho del bus de datos no se correlaciona necesariamente con el tamaño de la palabra.

Dependiendo de la estrategia, la dirección solicitada se obtiene al principio, y luego el resto de la línea de caché se obtiene de forma secuencial.

Parecería mucho más rápido si hubiera un bus con ancho de 64 bytes, lo que permitiría buscar toda una línea de caché a la vez. (esto sería ocho veces más grande que el tamaño de la palabra)

Quizás podría haber dos anchuras de bus de datos diferentes, una para la obtención de líneas de caché estándar y otra para el hardware externo (DMA) que solo funciona con el acceso de memoria de tamaño de palabra.

¿Cuáles son las limitaciones que limitan el tamaño del bus de datos?


Creo que hay problemas físicos / de costos. además de las líneas de datos (64) tiene una línea de direcciones (15+) y bank_select línea de selección de bank_select (3). Además de otras líneas (CS, CAS, RAS ...). Por ejemplo, consulte la Hoja de datos de la familia del procesador Intel® Core ™ de 6ª generación . En general, alrededor de 90 líneas para un solo autobús y 180 para dos. Hay otras líneas (PCIe, Dysplay ...) El siguiente aspecto es la lectura en ráfaga. Con bank_select podemos seleccionar uno de los 8 bancos. En modo ráfaga con una escritura de dirección en todos los bancos, leemos los datos de todos los bancos por banco y por tick.