¿Por qué las CPU normalmente se conectan a un solo bus?

Encontré una arquitectura de placa base aquí:

ingrese la descripción de la imagen aquí

Este parece ser el diseño típico de las placas base. EDITAR: Bueno, aparentemente ya no es tan típico.

¿Por qué la CPU se conecta a solo 1 bus? Ese autobús de la parte delantera parece un gran cuello de botella. ¿No sería mejor dar 2 o 3 buses directamente a la CPU?

Me imagino un bus para la RAM, uno para la tarjeta gráfica y otro para algún tipo de puente al disco duro, puertos USB y todo lo demás. La razón por la que lo dividí de esta manera es porque las velocidades de datos del disco duro son lentas en comparación con la memoria.

¿Hay algo muy difícil en hacerlo de esta manera? No veo cómo podría entrar el costo, porque los diagramas existentes ya tienen no menos de siete autobuses. De hecho, al usar más autobuses directos, podríamos reducir el número total de autobuses y tal vez incluso uno de los puentes.

Entonces, ¿algo malo con esto? ¿Hay una desventaja importante en alguna parte? Lo único en lo que puedo pensar es quizás en una mayor complejidad en la CPU y el kernel, lo que me hace pensar que esta arquitectura de bus de cuello de botella es como se hacía en los viejos tiempos cuando las cosas eran menos sofisticadas y el diseño sigue siendo el mismo para la estandarización.

EDITAR: Olvidé mencionar el Watchdog Monitor . Sé que lo he visto en algunos diagramas. Presumiblemente, un autobús con cuello de botella facilitaría que el perro guardián monitoreara todo. ¿Puede eso tener algo que ver?

Ese es un enfoque muy antiguo. Hoy en día, la CPU tiene integrado el complejo raíz y el controlador de memoria, por lo que se conecta directamente a dispositivos PCIe, RAM y lo que es efectivamente el puente sur. por ejemplo esto
@TomCarpenter Sí, eso está empezando a parecerse más. El diagrama que publiqué es lo que he visto "en todas partes", incluida la escuela, así que pensé que era más típico.
Ese diagrama de arriba sigue siendo relevante. En estos días, eso no es un diagrama de una placa base, sino la CPU en sí. Reemplace "CPU" por "núcleo" y "chipset" por "CPU".

Respuestas (4)

El enfoque que muestra es una topología bastante antigua para las placas base: es anterior a PCIe, lo que realmente lo ubica en algún lugar de los años 2000. La razón se debe principalmente a las dificultades de integración.

Básicamente, hace 15 años, la tecnología para integrar todo en un solo troquel era prácticamente inexistente desde un punto de vista comercial, y hacerlo era increíblemente difícil. Integrar todo daría como resultado tamaños de matriz de silicio muy grandes, lo que a su vez conduce a un rendimiento mucho menor. El rendimiento es esencialmente cuántos troqueles se pierden en una oblea debido a defectos: cuanto más grande es el troquel, mayor es la probabilidad de un defecto.

Para combatir esto, simplemente dividió el diseño en varios chips; en el caso de las placas base, terminó siendo CPU, North Bridge y South Bridge. La CPU se limita solo al procesador con una interconexión de alta velocidad (referido como el bus del lado frontal por lo que recuerdo). Luego tiene el Puente Norte que integra el controlador de memoria, la conexión de gráficos (por ejemplo, AGP, una tecnología antigua en términos informáticos) y otro enlace más lento al Puente Sur. El South Bridge se utilizó para manejar tarjetas de expansión, discos duros, unidades de CD, audio, etc.


En los últimos 20 años, la capacidad de fabricar semiconductores en nodos de proceso cada vez más pequeños con una confiabilidad cada vez mayor significa que es posible integrar todo en un solo chip. Los transistores más pequeños significan una mayor densidad para que pueda caber más, y los procesos de fabricación mejorados significan un mayor rendimiento. De hecho, no solo es más rentable, sino que también se ha vuelto vital para mantener los aumentos de velocidad en las computadoras modernas.

Como señala correctamente, tener una interconexión con un puente norte se convierte en un cuello de botella. Si puede integrar todo en la CPU, incluido el PCIe Root Complex y el controlador de memoria del sistema, de repente tiene un enlace de velocidad extremadamente alta entre los dispositivos clave para gráficos y computación: en la PCB, tal vez esté hablando de velocidades del orden de Gbps, en el dado puede alcanzar velocidades del orden de Tbps!

Esta nueva topología se refleja en este diagrama:

Nueva topología

Fuente de imagen

En este caso, como puede ver, los controladores de memoria y gráficos están integrados en la matriz de la CPU. Si bien todavía tiene un enlace a lo que es efectivamente un solo conjunto de chips hecho de algunos bits del puente norte y el puente sur (el conjunto de chips en el diagrama), esto hoy en día es una interconexión increíblemente rápida, tal vez más de 100 Gbps. Todavía más lento que en el dado, pero mucho más rápido que los viejos autobuses frontales.

¿Por qué no integrar absolutamente todo? Bueno, los fabricantes de placas base todavía quieren algo de personalización: cuántas ranuras PCIe, cuántas conexiones SATA, qué controlador de audio, etc.

De hecho, algunos procesadores móviles se integran aún más en la matriz de la CPU: piense en computadoras de placa única que usan variantes de procesador ARM. En este caso, debido a que ARM arrienda el diseño de la CPU, los fabricantes aún pueden personalizar sus troqueles como mejor les parezca e integrar los controladores/interfaces que deseen.

+1, me ganaste :) Buena respuesta, especialmente por las razones históricas del diseño arquitectónico.
Gracias, especialmente el segundo párrafo llegó a casa. Sin embargo, on the die you can achieve speeds on the order of Tbps!vaya, ¿eso no está comenzando a dejar atrás la capacidad de la CPU para procesarlo lo suficientemente rápido?
@DrZ214 Tome un moderno procesador Quad-Core de 4 GHz y 64 bits. Eso es 4*64*4=1024 Gbps. QPI, que es el enlace Intel más reciente entre la CPU y el conjunto de chips, es de 307 Gbps . Entonces, si bien es impactante, en realidad no es tan descabellado. ¡Es increíble lo rápido que se están poniendo las cosas!
Definitivamente es sorprendente lo rápido que se están poniendo las cosas, pero debo decir que tus matemáticas son demasiado ideales. La mayoría de los programas no usan subprocesos múltiples (la tendencia definitivamente es hacia eso, pero hay muchos problemas de cs que simplemente no se pueden resolver con el procesamiento paralelo), por lo que parece demasiado ideal asumir que los 4 núcleos pueden funcionar en un saturado. bus de ese ancho de banda. Entonces, 256 Gbps, si ese núcleo solo ejecuta 1 proceso, también es un poco ideal. Pero aún rápido y entiendo tu punto y tu respuesta fue realmente buena. Lo aceptaría, pero la respuesta de unit128_t también es excelente.
PD, pregunta rápida: en su diagrama, las conexiones PCI están etiquetadas con carriles. ¿Cuántos bits hay en un carril y por qué las otras cosas (como la memoria) no están etiquetadas con carriles?
@DrZ214 No son PCI, son PCIe, que es un bus serie en lugar de uno paralelo. PCIe es de 2,5 Gbps, 5 Gpbs u 8 Gbps por carril en ambas direcciones (dúplex completo), siendo 16 carriles los más anchos que se suelen ver dando un máximo teórico de 128 Gbps en ambas direcciones. Y sí, el comentario anterior sobre las velocidades del procesador fue intencionalmente demasiado simplista, pero no poco realista: sin relación con las CPU, estoy trabajando en un diseño de FPGA en este momento que procesa datos a 315 Gbps, y eso no está ni cerca del rendimiento total posible. del FPGA, ¡lo que limita eso es la falta de datos!
Lo interesante es que esto representa un cambio hacia la arquitectura de sistemas aún más antiguos, donde la memoria y los buses de almacenamiento (etc.) iban directamente a la CPU.
@ DrZ214 un "carril" tiene un solo bit de ancho, una señal de reloj/datos enviada como dos pares. Lo único de PCIe en comparación con, digamos, el bus DDR es que PCIe puede agregar y desagregar carriles libremente, mientras que la mayoría de los buses tiene que tomar todo o nada.

No puedo decir que sea un experto en arquitectura informática, pero intentaré responder a sus preguntas.

Este parece ser el diseño típico de las placas base.

Como mencionó Tom, esto ya no es cierto. La mayoría de las CPU modernas tienen un puente norte integrado. El puente sur generalmente está integrado o se hace innecesario por la nueva arquitectura; Los conjuntos de chips de Intel "reemplazan" el puente sur con el Platform Controller Hub, que se comunica directamente con la CPU a través de un bus DMI.

¿Por qué la CPU se conecta a solo 1 bus? Ese autobús de la parte delantera parece un gran cuello de botella. ¿No sería mejor dar 2 o 3 buses directamente a la CPU?

Los buses anchos (64 bits) son costosos, requieren una gran cantidad de transceptores de bus y muchos pines de E/S. Los únicos dispositivos que requieren un bus enorme y rápido son la tarjeta gráfica y la memoria RAM. Todo lo demás (SATA, PCI, USB, serie, etc.) es comparativamente lento y no se accede constantemente. Por lo tanto, en la arquitectura anterior, todos esos periféricos "más lentos" se agrupan a través del puente sur como un solo dispositivo de bus: el procesador no quiere tener que arbitrar cada pequeña transacción de bus, por lo que todas las transacciones de bus lentas/poco frecuentes se pueden agregar y administrado por el puente sur, que luego se conecta a los otros periféricos a una velocidad mucho más pausada.

Ahora, es importante mencionar que cuando digo arriba que SATA/PCI/USB/serial son "lentos", eso es principalmente un punto histórico, y se está volviendo menos cierto hoy en día. Con la adopción de SSD sobre discos giratorios y periféricos PCIe rápidos, así como USB 3.0, Thunderbolt y tal vez Ethernet 10G (pronto), el ancho de banda periférico "lento" se está volviendo muy significativo rápidamente. En el pasado, el autobús entre el puente norte y el puente sur no era un gran cuello de botella, pero ahora eso ya no es así. Entonces, sí, las arquitecturas se están moviendo hacia más buses conectados directamente a la CPU.

¿Hay algo muy difícil en hacerlo de esta manera? No veo cómo podría entrar el costo, porque los diagramas existentes ya tienen no menos de siete autobuses.

Serían más buses para que el procesador los administre y más procesador de silicio para manejar los buses. Que es caro. En el diagrama anterior, no todos los buses son iguales. El FSB grita rápido, el LPC no. Los buses rápidos requieren silicio rápido, los buses lentos no, por lo que si puede mover los buses lentos de la CPU a otro chip, le facilitará la vida.

Sin embargo, como se mencionó anteriormente, con la creciente popularidad de los dispositivos de gran ancho de banda, cada vez más buses se conectan directamente al procesador, particularmente en SoC/arquitecturas más altamente integradas. Al colocar más y más controladores en la matriz de la CPU, es más fácil lograr un ancho de banda muy alto.

EDITAR: Olvidé mencionar el Watchdog Monitor. Sé que lo he visto en algunos diagramas. Presumiblemente, un autobús con cuello de botella facilitaría que el perro guardián monitoreara todo. ¿Puede eso tener algo que ver?

No, eso no es realmente lo que hace un perro guardián. Un perro guardián es simplemente para reiniciar varias cosas cuando/si se bloquean; realmente no mira todo lo que se mueve a través del autobús (¡es mucho menos sofisticado que eso!).

Fast buses require fast silicon, slow buses don't¿Qué significa exactamente silicio rápido? ¿Silicona de mayor pureza? ¿O estás diciendo que los autobuses lentos pueden usar un elemento diferente al silicio? De cualquier manera, pensé que el silicio era un material bastante barato. Algo interesante sobre el perro guardián también. Podría hacer una pregunta relacionada al respecto.
Un bus rápido normalmente sería parte de un dispositivo de alto rendimiento, por ejemplo, una CPU. La interfaz de bus requiere espacio y conexiones con otras partes del chip. El área de silicio en la matriz de un procesador es mucho más costosa que un chip mucho más lento, porque el tamaño del proceso es más pequeño y la fabricación/empaquetado es más difícil. Por lo tanto, es más económico restringir los dispositivos en el FSB solo a aquellos dispositivos que realmente requieren ese ancho de banda. Sin embargo, a medida que se integran más controladores con la CPU en el mismo dado (un SoC), esto ya no es tan cierto.
Aunque los buses lentos no requieren silicio rápido, no es raro encontrar controladores muy rápidos en interfaces lentas, lo que puede crear un gran dolor de cabeza para el diseño de PCB. He visto PCI normal (velocidad máxima de 133 MHz en PCI-X) con tiempos de subida y bajada de menos de 300 ps, ​​ya que los proveedores utilizan una celda de E/S estándar. Sé que PCI, como interfaz, normalmente no está disponible en los nuevos procesadores, pero este problema se aplica en otros lugares.

La cantidad de buses a los que se conectará directamente una CPU generalmente se limitará a la cantidad de partes distintas de la CPU que podrían acceder a las cosas simultáneamente. No es raro, especialmente en el mundo de los procesadores integrados y DSP, que una CPU tenga un bus para programas y un bus para datos, y permita que ambos funcionen simultáneamente. Sin embargo, un monoprocesador típico solo se beneficiará de obtener una instrucción por ciclo de instrucción y solo podrá acceder a una ubicación de memoria de datos por ciclo de instrucción, por lo que no será muy beneficioso ir más allá de un bus de memoria de programa y uno. bus de memoria de datos. Para permitir que se realicen ciertos tipos de operaciones matemáticas con los datos extraídos de dos flujos diferentes,

Con procesadores que tienen múltiples unidades de ejecución, puede ser útil tener un bus separado para cada uno, de modo que si hay múltiples unidades de buses "externos" que necesitan buscar cosas de diferentes buses "externos" puedan hacerlo sin interferencias. A menos que haya una razón lógica por la cual las cosas a las que acceden diferentes unidades de ejecución serán accesibles a través de diferentes buses fuera de la CPU, sin embargo, tener buses separados de la CPU alimentan una unidad de arbitraje que solo puede transmitir una solicitud a la vez a un dispositivo externo en particular no ayudará en nada. Los autobuses son caros, por lo que tener dos unidades de ejecución en un autobús suele ser más barato que usar autobuses separados. Si el uso de buses separados permitirá una mejora importante del rendimiento, eso puede justificar el costo, pero de lo contrario, cualquier recurso (área de chip, etc.)

Considere la cantidad de pines requeridos en los paquetes de CPU para tener múltiples buses anchos. Por ejemplo, ocho núcleos de CPU, cada uno con un bus de datos de 64 bits, además de una variedad de otros pines para otros fines. ¿Hay algún paquete de CPU disponible hoy con quizás 800 pines?

¿Por qué no habría? Una matriz de cuadrícula de bolas de 32x32 y una placa de circuito impreso de múltiples capas no parece un problema difícil (en una escala relativa). Los ingenieros de hardware son increíbles. // Piense en lo anchas y torpes que pueden ser las tarjetas RAM, y aun así registre a 1,6 GHz (625 picosegundos). Si las señales eléctricas viajan a 2/3 c, la traza más larga solo puede tener 6 cm de largo, y solo unos pocos mm de diferencia en la longitud causarán desviaciones de tiempo notables. // Y supongo que la diafonía entre capas no sería mucho peor que entre rastros en la misma capa.
"¿Hay algún paquete de CPU disponible hoy con quizás 800 pines?" Oh sí. Los paquetes con más de 1100 pines ya eran comunes cuando se escribió esta respuesta. Y hoy en día, hay LGA3647 para algunas CPU de servidor Skylake-EX...