¿Cómo puede una computadora manejar Internet con una velocidad de gigabits por segundo (10 ^ 9 bits por segundo) o incluso más rápido cuando una computadora solo puede realizar 10 ^ 8 operaciones por segundo?

Es aún peor de lo que piensas, una computadora puede (con algo de trabajo) saturar un enlace de 10 Gb.

Pero, cada una de las operaciones en una CPU no es un bit, generalmente es de 32 o 64 bits. Algunas operaciones funcionan en 128 o más bits a la vez.

Sin embargo, no estoy seguro de dónde obtienes 100 millones de operaciones por segundo. Un procesador moderno funciona a más de 2 GHz y, aunque los ciclos por instrucción en la mayoría de las aplicaciones es peor (más alto) que 1, tampoco es tan alto como 100. Y la mayoría de los procesadores de servidor también tienen más de un núcleo.

Una regla general estándar es que se necesita aproximadamente 1 Hz de CPU para manejar un bit por segundo. Entonces, un enlace de 10 Gb según esta estimación tomaría 10 GHz, o 4 núcleos funcionando a 2.5 GHz, ¡no hay problema!

Sin embargo, muchos servidores usan tarjetas de red que admiten mover al menos parte del trabajo de rutina de manejar el tráfico de red en la tarjeta. Por ejemplo, calcular sumas de comprobación de capa TCP en la tarjeta de red es muy común. Esto se llama “descarga TCP” y reduce la cantidad que la CPU principal tiene que hacer.

Aceleracion de hardware

Página en orangetreetech.com TCP / IP Offload Engines (TOE)

Porque a pesar de que el enlace puede ser de 1 Gbps, la cantidad de tiempo que la CPU tiene que pasar manejando el enlace es insignificante. Considere el patrón de tráfico. Como mínimo, deben enviarse 64 bytes a través del enlace para una transferencia, por lo que 512 bits por paquete. Luego considere que la mayoría de las NIC [chips de interfaz de red] tienen colas internas de transmisión / recepción y buffers de paquetes, a veces de 32 o 64 entradas de profundidad. Tomaremos 32. Entonces eso significa que 16,384 bits pueden pasar por el cable antes de que la CPU necesite hacer algo. Si los paquetes fueran de tamaño máximo, usaremos 1518 bytes para eso, o 12,144 bits, entonces el número de bits que pueden pasar por el cable antes de que la CPU necesite hacer algo es 388,608. Por lo tanto, se puede poner en cola entre 16Kb y 388Kb. Luego, la CPU se involucra mediante una interrupción de la NIC. El contrato entre la NIC y la CPU es “cada vez que disparo mi interrupción, usted limpia mi buffer de recepción / salida”. Entonces, la CPU hace eso, generalmente usando un canal DMA, por lo que la CPU realmente no tiene que hacer * nada * para llevar los datos a la memoria principal del sistema. Entonces es solo un corto viaje por el software de la pila de red [usando la CPU para traducir las capas MAC, IP, TCP / UDP hasta el zócalo de las aplicaciones]. La mayoría de las pilas de red están optimizadas para realizar el recorrido de la capa de paquetes en un esquema de copia cero, por lo que los mismos datos de paquete que ingresaron en el cable desde la NIC están intactos en toda la pila y la aplicación cuenta con una pequeña porción de los datos.

También tenga en cuenta que la NIC puede descartar muchos de los datos que provienen del enlace. Los filtros de multidifusión pueden tirar paquetes antes de que se coloquen en las colas de paquetes de la NIC.

¿Por qué ha descuidado una importante función de red llamada “Control de flujo”? No es necesario que todos los dispositivos en Internet funcionen a la misma velocidad. La diferencia de velocidad es manejada por la función de Control de Flujo de los enrutadores y los Buffers.

More Interesting

¿Qué es lo mejor para la ingeniería informática, AISSMS o Sinhgad (Kondhwa)?

Elegí PICT CS sobre COEP IT. ¿Fue una mala decisión?

¿Qué lenguaje de programación debería aprender alguien si nunca antes ha programado pero quiere buscar un mercado laboral alternativo?

¿La "computación cuántica" amenaza el futuro de los ingenieros informáticos?

Cómo entrar en robótica e IOT como ingeniero informático

Lamento haber elegido estudiar Ingeniería de Producción en una buena universidad en lugar de CS (Lo que más me gusta) en una mediocre. ¿Cómo puedo redimirme?

¿Se puede estudiar ingeniería informática después de la ingeniería mecánica?

Cómo prepararse para una entrevista IIM dentro de los 3 días (antecedentes en Ingeniería Informática)

¿Por qué William Chen eligió las estadísticas en lugar de la informática o la ingeniería informática?

¿Cuáles son los beneficios de enviar datos a través de la luz en lugar de la electricidad?

¿Los ingenieros informáticos hacen inteligencia artificial?

¿Cómo recibir dos enteros I 8051 en serie? ¿Cómo los pondría en la SBUF?

Cuando abrimos un nuevo archivo .C esa vez, la instrucción #include #include int main () {getch (); return 0;} debería mostrarse en ese archivo. ¿Cómo hago esto?

Ingenieros Eléctricos / Computadores / Hardware que han cambiado a Ingeniería de Software: ¿Cómo ha sido su cambio de carrera? ¿Feliz con el interruptor?

¿Qué tan vanguardista es la división de chips de Apple?