22 votos

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

Hoy he estado leyendo sobre el nuevo Thunderbolt 3 y me ha impresionado mucho la velocidad de 40 Gbps. Luego me fijé en la velocidad del último procesador i9 de Intel... unos 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 en paralelo seguiría necesitando 10 canales para obtener 40 Gbps, y por lo que sé USB-C solo tiene 4 o así.

Después de leer las respuestas, parece que hay dos partes en esto: cómo la CPU / sistema se comunica a tan alta velocidad, y cómo esa alta velocidad de datos (que parece que se logra utilizando muchas líneas paralelas) consigue a través del cuello de botella del cable Thunderbolt en sí, que sólo tiene un pequeño número de canales paralelos.

37voto

JW. Puntos 145

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

Es un tema demasiado amplio para tratarlo en profundidad en una respuesta a esta pregunta, pero imagina que no estuvieras limitado a valores binarios y que pudieras enviar uno de 1024 voltajes como símbolo. En efecto, serían 10 bits de información por símbolo, y obtendrías 10 veces la "velocidad de reloj" en ancho de banda. Así es como el antiguo vídeo NTSC codifica los datos, por ejemplo.

Otra forma de conseguir ese ancho de banda es utilizar el búfer y delegar el transporte en transmisores y receptores especializados, a veces denominados bloques SERDES (por serializador / deserializador). No se puede mantener el rendimiento de estos bloques sin una fuente o un sumidero capaces de seguirles el ritmo, pero se puede reducir la latencia de la transferencia de bloques de información entre nodos informáticos utilizando algo así. Busca bucles de fase bloqueada (también conocidos como PLL), ya que las FPGA y los ASIC pueden utilizarlos para derivar relojes más rápidos de un reloj base para hacer este tipo de cosas.

Otra forma es simplemente tener muchos canales paralelos para transmitir los datos. Piensa en los antiguos puertos paralelos de los PC: en un solo reloj transfieres un montón de bits, cada uno en su propio cable dedicado. USB-C y sus similares tienen muchos más pines de datos que un RX y un TX, por ejemplo.

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

5voto

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

Velocidad del último procesador i9 de Intel... unos 4,2 GHz como máximo.

4,2 GHz es el reloj del sistema, que (de forma muy, muy simplista) es comparable al número de instrucciones por segundo, por núcleo (en realidad 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, de más rápido a más lento). Mientras tanto, otros periféricos también pueden leer/escribir en la RAM sin que intervenga la CPU (eso se llama DMA).

El principal cuello de botella suele ser la memoria RAM. Tiene que ser lo suficientemente rápida como para alimentar a la CPU según sea necesario (para ejecutar instrucciones y procesar datos), hacer DMA y, en algunos casos, se comparte con una GPU o actúa como memoria intermedia para vídeo (entonces hay algún componente que lee la RAM que actúa como memoria intermedia para enviarla a una salida de vídeo, en cada fotograma: para una resolución Full HD 1920 x 1080 a 60 Hz con color de 24 bits, son casi 3 Gbits/s, para 4K@60 fps, 4 veces más).

La RAM utiliza buses anchos, normalmente de 32 o 64 bits. Puede haber varios canales separados. La RAM más rápida actualmente parece ser la DDR4-3200, que permite 3200 millones de transferencias de 64 bits por segundo. Es decir, 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 soportar más de 800 Gbits/s, por lo que 40 Gbps son una miseria en comparación.

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

4voto

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

No es 10 ×. Thunderbolt 3 - \$\frac {40 Gbps} {8 bits/byte} = 5 Gbyte/s\$ . Esta velocidad ni siquiera parece irreal para un procesador de 64 bits a 4,2 GHz.

Pero no se trata de eso. Tenemos un periférico con comunicación serie + tarjeta gráfica. Cuatro veces el ancho de banda de datos + dos veces el de vídeo de las capacidades existentes. Como dice el enlace, rendimiento de sobremesa desde un portátil. Un puerto para enlazarlos todos y en la oscuridad, unirlos.

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

Thunderbolt 3

Hace tiempo que los usuarios desean que un ordenador móvil ofrezca el mismo rendimiento que un ordenador de sobremesa. Thunderbolt se desarrolló para soportar simultáneamente el mayor ancho de banda de datos y vídeo disponible en un solo cable, al tiempo que suministraba alimentación. Recientemente, el grupo USB introdujo el conector USB-C, que es pequeño, reversible, rápido, suministra energía y permite otras E/S además de USB, maximizando su potencial. Así que en el mayor avance desde su creación, Thunderbolt 3 lleva Thunderbolt a USB-C a 40Gbps, cumpliendo su promesa, creando un puerto compacto que lo hace todo.


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

No y no y no.

En un ordenador hay varios relojes. Dentro de una CPU hay un reloj. Los periféricos pueden derivar su velocidad de reloj del reloj del sistema (más lento) o utilizar un cristal para crear su propio reloj.

Las comunicaciones paralelas se han quedado obsoletas. Las comunicaciones paralelas se limitaban a distancias cortas. USB, I2C, I2S, CAN, etc. son todos protocolos serie.

Tu procesador de 4,2 GHz no se comunica a 4,2 GHz. Esa es la velocidad de reloj, una mejor indicación son los PIM. Y eso son instrucciones de programa, no comunicarse externamente.

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

El procesador de 64 bits a 4,2 GHz, bien diseñado, probablemente podría alcanzar los 20 GHz en serie (5 Gbyte/s), pero ese no es su propósito.

3voto

Simon Puntos 31

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

enter image description here

Hoy en día, la comunicación analógica no sólo utiliza la amplitud, sino también la información de fase para rellenar 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 ahí, pero es el único tema que recuerdo en el que se habla de esto). Y esto es sólo un mero ejemplo de una plétora de técnicas que se vuelven más y más complejas con cada año que pasa.

enter image description here

Para la comunicación digital, se trata sobre todo de: 1) número de líneas paralelas (1 para la comunicación serie, USB es un enlace serie aunque tenga dos líneas de datos, siempre están enfrentadas en valor para aumentar la robustez al ruido de modo común por diferencia), y 2) compresión. Cuando envías archivos por valor de 100 MB a un buzón con límite de 10 MB comprimiéndolos, estás transmitiendo efectivamente en un ciclo de reloj más que el límite físico de velocidad de datos sin comprimir. Al igual que existen muchas técnicas de modulación (véase más arriba), también 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 medio para aumentar la velocidad de transmisión. Nótese que no estoy diciendo que eso sea lo que se hace para las transferencias de vídeo, ya que la compresión/descompresión añade latencia. Sin embargo, es un método que se utiliza para los enlaces por satélite, por ejemplo.

Por último, los límites de datarate son realmente límites para una tasa de error determinada. Si añades a tu 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), puedes aumentar la tasa de datos por encima del límite establecido para la misma tasa de error.

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

enter image description here

Ahora, en cuanto a "cómo llevar los cubos desde la puerta de tu casa hasta donde quieras", eso depende de la anchura de tu databus: Los ordenadores de 64 bits tomaron el relevo de los de 32 bits por esta razón, manejan el doble de datos por cada ciclo de reloj. Ese es el número de cubos que puede coger al mismo tiempo la misma persona en tu casa (supongamos que vives encima de residuos 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 desfasan para mover los datos más rápidamente en el bus de datos, pero generalmente no sólo comparten el mismo bus, sino también el mismo reloj (la velocidad máxima de reloj se ajusta sin duda al tiempo máximo de propagación de los datos a lo largo del bus). Obviamente, se trata de una visión simplista, ya que entran en juego muchos factores, pero tiene la ventaja de añadir más razones por las que ES posible.

0voto

H345 Puntos 11

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 es independiente y BTW puede limitar la cantidad de datos disponibles. Además, esos datos están codificados en 8b/10b, por lo que el ancho de banda utilizable baja a 25,92 Gbit/s (32,4 / 10 * 8). Ahora bien, sabemos que los cuatro carriles PCIe 3.0 son en realidad 3,938 GB/s full dúplex, o si vamos a 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 VIS framework, por ejemplo, para debug) Intel ya usa relojes de precisión de PICOsegundos, vale, y fue en la 7ª generación. Y no sabemos lo que es en BigCore (que es lo que tu llamas CPU, Intel lo llama BigCore y no es más que una extensión tonta de lo principal, el chipset). Así que el Minix OS dentro de la CPU/chipset no es ciertamente 4,2 GHz, sino al menos x100 de eso e Intel puede utilizarlo si lo necesita, que en la mayoría de los casos no lo hace, ya que está acelerado por hardware.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X