¿Por qué los buses de datos deben admitir 1024 bits, cuando el procesador funciona con 64bits?

2

Si los procesadores están trabajando con 64 bits, entonces ¿por qué necesitan que los protocolos de Bus sean tan altos como 1024 bits?

¿Es para reutilización?

    
pregunta user43102

3 respuestas

3

El ancho de ALU interno de una CPU puede ser de 32 o 64 bits, y esto representa la cantidad de datos que se pueden procesar por ciclo de reloj de la CPU. En un procesador moderno, las CPU se ejecutan a velocidades de reloj de varios GHz. Si cada operación involucra 1-2 operandos de entrada y un resultado, esto representa un ancho de banda de datos en bruto de decenas de GB por segundo.

Los chips del procesador tienen memorias internas, llamadas cachés, a menudo en varios niveles, que manejan gran parte del ancho de banda del procesador sin procesar, aprovechando el hecho de que los datos tienden a reutilizarse. Los cachés se utilizan como buffers para el contenido de la memoria externa, por lo que los datos con frecuencia deben ser transportados entre los cachés y la memoria externa.

La interfaz de memoria externa se ejecuta a una velocidad mucho más lenta que el núcleo del procesador, generalmente por un factor de aproximadamente 10 (es decir, cientos de MHz). Para tener el mayor ancho de banda posible en esta interfaz, las transferencias de ráfaga se utilizan para transferir "líneas" de caché completas a la vez. Debido a que la capacidad de añadir palabras individuales dentro de una transferencia externa no es importante, tiene sentido hacer que el bus de datos sea lo más amplio posible para minimizar el número de ciclos de reloj necesarios para completar una transferencia de ráfaga.

Un bus externo de 1024 bits (128 bytes) podrá transferir 1kB de datos en 4 ciclos de reloj (DDR). Si el bus se está ejecutando a, digamos, 500 MHz, esto representa un ancho de banda sin formato de 128 GB / s, lo que lo hace una buena combinación para un procesador de múltiples núcleos.

    
respondido por el Dave Tweed
1

Un procesador típico puede ejecutar cientos de instrucciones en el tiempo requerido para que una DRAM típica (chip de memoria "masivo") obtenga una sola pieza de datos. Si cada pieza de datos requerida por el procesador tuviera que obtenerse por separado de la RAM, incluso los procesadores más rápidos de hoy serían poco mejores que los de hace diez años. Sin embargo, en muchos casos en los que un procesador desea una parte de datos, también querrá otros datos cercanos. En un sistema moderno, cuando el procesador solicita una parte de los datos que deben recuperarse de la memoria lenta, el subsistema de memoria no solo obtendrá datos suficientes para satisfacer la solicitud, sino que, en cambio, copiará en una RAM más rápida una gran cantidad de datos que Contiene la pieza solicitada. Si la solicitud es seguida razonablemente pronto por solicitudes de cualquiera de los otros datos en esa porción grande, las solicitudes pueden satisfacerse utilizando la RAM de alta velocidad en lugar de la memoria principal más lenta.

Tenga en cuenta que una RAM más rápida es mucho más cara que la DRAM a granel. Si bien podría ser posible construir un sistema con muchos gigas de memoria extremadamente rápida, en la mayoría de los casos el rendimiento adicional sería insuficiente para justificar el costo en comparación con un sistema que combina una gran cantidad de RAM principal más lenta con secciones más pequeñas de memoria más rápida. Para las operaciones que requieren el procesamiento de grandes cantidades de datos secuenciales, aumentar el tamaño del fragmento que se puede leer en cada transacción reducirá el número de transacciones por separado requeridas. Debido a que no todas las operaciones de memoria son secuenciales, duplicar el tamaño de la transacción no reducirá a la mitad el número de transacciones, pero los diseñadores del sistema aparentemente han determinado que expandir el tamaño del fragmento de 512 bits a 1024 bits ofrece un aumento de rendimiento suficiente para justificar el costo.

    
respondido por el supercat
1

Para obtener un alto ancho de banda (número de bits transferidos por segundo).

Aproximadamente la situación es:

  • el consumidor necesita trozos de datos de 64 bits muy rápido.

  • el productor puede producir datos, pero mucho más lento.

  • solución: el uso 16 produce, que cada uno produce 64 bits (a un ritmo lento), 1024 bits en total. Buffer estos bits.

  • el consumidor consume del búfer. Si todo va bien, consume todo el búfer en el momento en que los productores pueden producir un nuevo búfer de datos, y todos están contentos.

respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas