Cómo comunicarse más rápido que el reloj del sistema

Estaba leyendo sobre el nuevo (más o menos) Thunderbolt 3 hoy y me impresionó mucho la velocidad especificada de 40 Gbps. Luego miré la última velocidad del procesador i9 de Intel... alrededor de 4,2 GHz como máximo. ¿Cómo puede un sistema comunicarse casi 10 veces más rápido que el reloj que lo impulsa? Incluso la comunicación paralela aún necesitaría 10 canales para obtener 40 Gbps, y por lo que puedo decir, USB-C solo tiene 4 más o menos.

Después de leer las respuestas, parece que esto tiene dos partes: cómo la CPU/sistema se comunica a una velocidad tan alta y cómo esa alta velocidad de datos (que parece lograrse usando muchas líneas paralelas) atraviesa el cuello de botella del rayo. cable en sí, que solo tiene una pequeña cantidad de canales paralelos.

Los relojes de la CPU y los relojes de comunicación realmente tienen muy poco que ver entre sí. Además, está hablando de un bit a la vez con Ethernet, pero la CPU maneja varios cientos de bits (dependiendo de la cantidad de núcleos) por ciclo de reloj.
en bit por reloj sería 4.2Gbps. dos 8.4, cuatro 16.8 y así sucesivamente, un bus de 8 o 32 bits sería más que suficiente ancho de banda interno para alimentar una interfaz externa de 40 Gbps. También comprenda que también hay ráfagas, ya que gran parte de esos datos quieren entrar y salir de dram, lo que no es muy rápido. También comprenda que si esto se usa para video, es posible que tenga marcos de página en sram que pueden o no ser procesados ​​por el procesador central (aunque con 64 bits de ancho en el núcleo, puede hacer una gran cantidad de procesamiento en promedio por reloj). y no todo Thunderbolt 3 va tan rápido.
El i9-9900K (con aproximadamente 4,2 GHz como máximo) tiene un ancho de banda de memoria de aproximadamente 320 Gbps y (como estimación aproximada) al menos 5 veces ese ancho de banda de caché L1. Sí, su procesador de 4,2 GHz probablemente pueda mover 1500 Gbps de datos (en escenarios extremadamente artificiales que nunca suceden en el mundo real).

Respuestas (5)

Supongo que la confusión es que asumes que solo puedes enviar un bit por ciclo de reloj. Hay muchas formas en que un esquema de comunicación puede codificar esencialmente más de un bit por símbolo. Un símbolo es una idea abstracta como el átomo de transferencia en un sistema de comunicación.

Realmente es un tema demasiado grande para cubrir en una respuesta a esta pregunta en profundidad, pero imagine que no estaba limitado a valores binarios y, en cambio, podría enviar uno de 1024 voltajes como símbolo. En efecto, serían 10 bits de información por símbolo, y obtendría 10 veces la "velocidad de reloj" en ancho de banda. Así es como el viejo video NTSC codifica los datos, por ejemplo.

Otra forma de obtener ese tipo de ancho de banda es usar almacenamiento en búfer y luego delegar el transporte a transmisores y receptores especializados, a veces llamados bloques SERDES (para serializador/deserializador). No puede mantener el rendimiento del que son capaces sin una fuente o sumidero capaz de mantener el ritmo, pero puede reducir la latencia de la transferencia de bloques de información entre nodos informáticos usando algo así. Busque bucles de bloqueo de fase (también conocidos como PLL), ya que los FPGA y los ASIC pueden usarlos para derivar relojes más rápidos a partir de un reloj base para hacer este tipo de cosas.

Otra forma es simplemente tener muchos canales paralelos para transmitir los datos. Piense en los viejos puertos paralelos de las PC, en un solo reloj transfiere un montón de bits, cada bit en su propio cable dedicado. USB-C y sus parientes tienen muchos más pines de datos que un RX y un TX, por ejemplo.

El ancho de banda es una propiedad agregada que involucra el efecto neto de todo tipo de técnicas como estas, porque muchas pueden usarse incluso juntas.

Lindo. Has cubierto todo lo que imaginé, y también una forma más. ¡Aprendí algo!
Entonces, ¿básicamente enviando múltiples bits por ciclo de reloj?
@ElEctric múltiples bits por ciclo o controladores especializados que hacen que los ciclos de la CPU sean irrelevantes. O ambos.
Buena respuesta, pero agregaría dos cosas: el truco DDR (transmitir datos en el flanco ascendente y descendente de la señal del reloj); y que el reloj de la CPU y el reloj periférico no necesitan sincronizarse (además, la comunicación Thunderbolt es una conexión en serie, recopilando sus datos a través del acceso directo a la memoria, mientras que el bus de datos de la CPU transmite 64 bits en paralelo).
@ElEctric Las computadoras modernas son altamente asincrónicas. Esa misma CPU i9 moderna en la pregunta de OP puede incluso ejecutar sus diversos núcleos a diferentes velocidades de reloj independientes. El caché integrado se ejecuta en su propio reloj separado, la memoria se ejecuta en un reloj separado, el bus PCIe se ejecuta en un reloj diferente, los buses SATA se ejecutan en relojes independientes, Ethernet tiene sus propios relojes, etc. El controlador Thunderbolt verá un búfer de entrada se llena con palabras completas a la vez desde el bus, al mismo tiempo lee de ese búfer y usa un reloj separado para serializar esas palabras en su salida.
@J...: tenga en cuenta que los chips Intel dual/quad-core (cosas de consumo regulares, no HEDT o Xeon) tienen todos los núcleos en el mismo dominio de reloj, y el caché L3 (sin núcleo) también. por ejemplo, en mi computadora de escritorio Skylake i7-6700k, ejecutar un bucle infinito en un núcleo mantendrá otro núcleo vinculado a 4 GHz, incluso si está ejecutando un código limitado a la memoria donde energy_performance_preference=balance_power normalmente bajaría a 2,7 GHz o algo así. Pero sí, las CPU i9 son modelos HEDT, que usan los mismos troqueles que los chips Xeon, y creo que incluso los troqueles con un número relativamente bajo de núcleos tienen relojes asíncronos con uncore al máximo (núcleos).
Pero sí, en general hay muchos dominios de reloj diferentes. Incluso los chips de consumo económicos tienen el reloj de memoria asíncrono de los relojes centrales y el reloj PCIe, etc.
@PeterCordes Fue solo un ejemplo. Sentí que encajaba, ya que se señaló específicamente en la pregunta y es un buen ejemplo de asíncronismo llevado a un nivel profundo.
@J...: sí, es un buen ejemplo. Solo quería agregar eso en caso de que alguien se pregunte por qué su escritorio no parece funcionar de esa manera. Sé que solía preguntarme eso cuando leía cosas sobre los relojes por núcleo en las CPU Intel, pero no parecía ver eso en mi escritorio.
@J... ¿Le estaría resumiendo (y uno de los ejemplos de vicatcu) correctamente que la CPU más lenta o el reloj del sistema pueden llenar un búfer rápidamente usando canales paralelos, luego un PLL u otra señal de reloj mucho más rápida serializa esos datos al rayo? ?
@IsaacMiddlemiss sí, creo que eso está cubierto

Las otras respuestas se han centrado más en el lado Thunderbolt de las cosas, pero echemos un vistazo a la declaración.

La última velocidad del procesador i9 de Intel... alrededor de 4,2 GHz como máximo

4,2 GHz es el reloj del sistema, que (de una manera muy, muy simple) es comparable al número de instrucciones por segundo, por núcleo (realmente es mucho más complejo que eso, ya que no todas las instrucciones tardan lo mismo en ejecutarse, hay tiempos de espera, etc.).

Pero en cada ciclo, la CPU procesará datos (hacia/desde registros, cachés, RAM y posiblemente E/S, del más rápido al más lento). Mientras tanto, otros periféricos también pueden leer/escribir en la RAM sin que la CPU esté involucrada (eso se llama DMA).

El principal cuello de botella suele ser entonces la memoria RAM. Debe ser lo suficientemente rápido para alimentar la CPU según sea necesario (para que se ejecuten las instrucciones y se procesen los datos), hacer DMA y, en algunos casos, se comparte con una GPU o actúa como un búfer de cuadros para video (entonces hay algún componente que está leyendo la RAM que actúa como un búfer de cuadros para enviarla a una salida de video, en cada cuadro, para una resolución Full HD 1920 x 1080 a 60 Hz con color de 24 bits, eso es casi 3 Gbits/s, para 4K@60 fps, 4 veces eso).

La RAM usa buses anchos, generalmente de 32 o 64 bits de ancho. Puede haber varios canales separados. La memoria RAM más rápida actualmente parece ser DDR4-3200, que permite 3200 millones de transferencias de 64 bits por segundo. Eso es 25600 Mbytes/s o 204800 Mbits/s (más de 200 Gbits/s), por canal.

Una CPU i9-9980XE puede tener 4 canales de memoria. Eso significa que la RAM podría admitir más de 800 Gbits/s, por lo que 40 Gbps son solo cacahuetes en comparación con eso.

La parte impresionante de Thunderbolt es obtener esa velocidad en distancias más largas (no unos pocos centímetros en una placa base), a través de un cable relativamente simple (no cientos de conectores, como se requiere para admitir múltiples buses de RAM de 64 bits).

No existe una correlación directa entre la velocidad del procesador y la velocidad periférica.

No es 10 ×. Rayo 3 - 40 GRAMO b pag s 8 b i t s / b y t mi = 5 GRAMO b y t mi / s . Esta tasa ni siquiera parece poco realista para un procesador de 64 bits a 4,2 GHz.

Pero eso no es lo que estamos tratando aquí. Disponemos de un periférico con comunicación serie + tarjeta gráfica. Cuatro veces el ancho de banda de datos + el doble de video de las capacidades existentes. Como dice el enlace, el rendimiento de escritorio de una computadora portátil. Un puerto para unirlos a todos y en la oscuridad, atarlos.

De Thunderbolt 3: el USB-C que lo hace todo

rayo 3

Los usuarios han querido durante mucho tiempo el rendimiento de nivel de escritorio de una computadora móvil. Thunderbolt fue desarrollado para admitir simultáneamente los datos más rápidos y la mayor cantidad de ancho de banda de video disponible en un solo cable, al mismo tiempo que suministra energía. Luego, recientemente, el grupo USB introdujo el conector USB-C, que es pequeño, reversible, rápido, suministra energía y permite que se ejecuten otras E/S además del USB, maximizando su potencial. Entonces, en el mayor avance desde su creación, Thunderbolt 3 trae Thunderbolt a USB-C a 40 Gbps, cumpliendo su promesa, creando un puerto compacto que lo hace todo.


Hay múltiples relojes dentro de una CPU; los periféricos pueden funcionar mucho más rápido que la velocidad de la CPU indicada, ya sea ejecutando un reloj más rápido o implementando una comunicación paralela.

No y no y no.

Hay múltiples relojes en una computadora. Dentro de una CPU hay un reloj. Los periféricos pueden derivar su frecuencia de reloj del reloj del sistema (más lento) o usar un cristal para hacer su propio reloj.

Las comunicaciones paralelas han ido por el camino del dodo, obsoletas. Las comunicaciones paralelas se limitaron a distancias cortas. USB, I2C, I2S, CAN, etc. son todos protocolos en serie.

Su procesador de 4,2 GHz no se comunica a 4,2 GHz. Esa es la frecuencia del reloj, una mejor indicación son los MIP. Y eso son instrucciones de programa, no se comunican externamente.

No se puede equiparar un procesador de 64 bits funcionando a 4,2 GHz con un periférico funcionando en serie a 20 GHz. El reloj de 20 GHz no se deriva del de 4,2 GHz. A 20 GHz, la frecuencia es más analógica que digital.

Ahora, con un diseño adecuado, el procesador de 64 bits de 4,2 GHz probablemente podría funcionar a 20 GHz en serie (5 Gbyte/s), pero ese no es su propósito.

Esto realmente no responde la pregunta, ya que estaba tratando de descubrir cómo se logran realmente las velocidades más altas. La respuesta de Vicatcu, por ejemplo, brinda varios ejemplos de cómo se pueden lograr velocidades de datos altas en un sistema que, de otro modo, estaría limitado.
Pero lo implícito en su pregunta es que existe una relación entre los dos relojes, cuando claramente no la hay.
Entonces, quizás una mejor manera de expresar su respuesta podría haber sido "Hay varios relojes dentro de una CPU; los periféricos pueden funcionar mucho más rápido que la velocidad de la CPU indicada, ya sea ejecutando un reloj más rápido o implementando una comunicación paralela".

Hay muchas técnicas para codificar o decodificar una gran cantidad de información en un "cubo/vagón de comunicación" (que se denominan símbolos). El convertidor de digital a analógico tipo R-2R (ilustrado a continuación) es uno de los métodos más simples pero efectivos para transmitir, por ejemplo, 16 veces más rápido que el reloj de comunicación, siempre que el convertidor de analógico a digital del receptor convierta dentro de un período de reloj ( principal limitación: el ruido).

ingrese la descripción de la imagen aquí

Hoy en día, la comunicación analógica no solo usa amplitud, sino también información de fase para incluir aún más bits en un ciclo de reloj de comunicación, como se ilustra en este tema (Descargo de responsabilidad: tengo una respuesta allí, pero es el único tema que recuerdo que trata sobre esto) . Y esto es solo un mero ejemplo de una plétora de técnicas que se vuelven cada vez más complejas con el paso de los años.

ingrese la descripción de la imagen aquí

Para la comunicación digital, se reduce principalmente a: 1) número de líneas paralelas (1 para comunicación en serie, USB es un enlace en serie aunque tiene dos líneas de datos, siempre tienen un valor opuesto entre sí para aumentar la robustez al ruido de modo común por diferencia), y 2) compresión. Cuando envía archivos por un valor de 100 MB a un buzón de correo con un límite de 10 MB comprimiéndolo, está transmitiendo efectivamente en un ciclo de reloj más que el límite físico de velocidad de datos sin comprimir. Así como hay muchas técnicas de modulación (visto arriba), hay muchas técnicas de compresión. Tenga en cuenta que hay chips de compresión/descompresión dedicados disponibles para aprovechar al máximo la compresión como un medio para aumentar la velocidad de transmisión. Tenga en cuenta que no estoy diciendo que eso es lo que se está haciendo para las transferencias de video, ya que la compresión/descompresión agrega latencia. Él'

Finalmente, los límites de tasa de datos son realmente límites para una tasa de error dada. Si agrega a su protocolo de comunicación alguna codificación que detecte errores y los corrija automáticamente (utilizando, por ejemplo, máquinas de estado en ambos extremos), puede aumentar la velocidad de datos más allá del límite establecido para la misma tasa de error.

Así es como los datos entran y salen de una computadora más rápido que el reloj de la CPU, o como "un hombre/mujer puede mover más o menos baldes de su casa a otra" (modulación de amplitud y/o fase, compresión, codificación...) .

ingrese la descripción de la imagen aquí

Ahora, para "cómo llevar los cubos desde su puerta hasta donde quiera en su casa", eso se reduce al ancho de su bus de datos: las computadoras de 64 bits reemplazaron a las computadoras de 32 bits por esta razón, manejan el doble de datos por cada ciclo de reloj Esa es la cantidad de baldes que puede tomar la misma persona en su casa al mismo tiempo (suponga que vive sobre desechos radiactivos). Creo que los núcleos de procesamiento podrían tener un impacto en las transferencias puras si los relojes de los núcleos se eliminan gradualmente para mover los datos más rápido en el bus de datos, pero en general comparten no solo el mismo bus, sino también el mismo reloj (la velocidad máxima del reloj ciertamente se establece en el tiempo máximo de propagación de los datos a lo largo del bus). Obviamente, esta es una visión simplista, muchos factores entran en juego, pero tiene el beneficio de agregar más razones por las que SÍ es posible.

Si el ruido lo permite. Me pregunto si los ADC flash de 4 bits se venden específicamente para esto
La compresión realmente no ayuda porque la compresión sin pérdidas todavía tiene que manejar el peor de los casos: ruido incompresible. (por ejemplo, el logotipo de HBO). Tampoco es deseable que la mayoría de los cables de video introduzcan latencia de codificación/decodificación. Más concretamente, HDMI / DisplayPort no usa compresión, y nadie quiere compresión con pérdida en un cable de video; solo se acepta cuando es necesario (como video a través de wifi). O, por supuesto, video a través de Internet, e incluso para cámaras de video que almacenan grabaciones en lugar de simplemente enviarlas para mostrarlas.
@DKNguyen Podrían ser incluso ADC de bits más altos que ignoran el último par de ruido.
@DKNguyen Serán una parte de un chip que realiza toda la codificación/descodificación requerida para la señal.
@ user253751 Por lo general, pero me preguntaba más sobre cosas para aplicaciones personalizadas especiales para usar junto con un FPGA en lugar de protocolos estandarizados más convencionales como ethernet, PCIe o varios tipos de radio. Encontré el MAX1002 y el MAX1003 que parecen estar preparados para ese tipo de cosas. Sin embargo, fueron los únicos que encontré.

En primer lugar, Thunderbolt 3 no es realmente 40 Gbit/s para datos. Es un máximo de 32,4 Gbit/s para datos, todo lo demás es DP, que está separado y, por cierto, puede limitar la cantidad de datos disponibles para usted. Además, esos datos están codificados en 8b/10b, por lo que el ancho de banda útil se reduce a 25,92 Gbit/s (32,4 / 10 * 8). Ahora, sabemos que PCIe 3.0 de cuatro carriles es en realidad dúplex completo de 3,938 GB/s, o si lo hacemos x8: 31,504 Gbit/s. ¡Así que ni siquiera es todo el ancho de banda PCIe disponible!

En segundo lugar, 4,2 GHz no significa nada. Internamente (en el marco VIS, por ejemplo, para la depuración), Intel ya usa relojes de precisión de PICOsegundos, está bien, y estaba de vuelta en la séptima generación. Y no sabemos qué es en BigCore (que es lo que llamas CPU, Intel lo llama BigCore y es solo una extensión tonta de lo principal, el chipset). Por lo tanto, el sistema operativo Minix dentro de la CPU/chipset ciertamente no es de 4,2 GHz, pero al menos x100 de eso e Intel puede utilizarlo si lo necesita, lo que en la mayoría de los casos no es así, ya que está acelerado por hardware.