¿Qué significan los términos "vinculado a CPU" y "vinculado a E/S"?
¿Qué significan los términos "vinculado a CPU" y "vinculado a E/S"?
Es bastante intuitivo:
Un programa está vinculado a la CPU si fuera más rápido si la CPU fuera más rápida, es decir, pasa la mayor parte de su tiempo simplemente usando la CPU (haciendo cálculos). Un programa que calcula nuevos dígitos de π normalmente estará vinculado a la CPU, solo está procesando números.
Un programa está vinculado a E/S si iría más rápido si el subsistema de E/S fuera más rápido. El sistema de E/S exacto al que se refiere puede variar; Normalmente lo asocio con el disco, pero, por supuesto, la creación de redes o la comunicación en general también es común. Un programa que busca algunos datos en un archivo enorme puede verse limitado por E/S, ya que el cuello de botella es la lectura de los datos del disco (en realidad, este ejemplo quizás esté un poco pasado de moda en estos días con cientos de MB/s viniendo). desde SSD).
CPU Bound significa que la velocidad a la que avanza el proceso está limitada por la velocidad de la CPU. Es probable que una tarea que realiza cálculos en un pequeño conjunto de números, por ejemplo, multiplicar matrices pequeñas, esté limitada a la CPU.
I/O Bound significa que la velocidad a la que progresa un proceso está limitada por la velocidad del subsistema de E/S. Es probable que una tarea que procese datos del disco, por ejemplo, contar el número de líneas en un archivo, esté vinculada a E/S.
Limitado a la memoria significa que la velocidad a la que avanza un proceso está limitada por la cantidad de memoria disponible y la velocidad de acceso a la memoria. Es probable que una tarea que procese grandes cantidades de datos en la memoria, por ejemplo, multiplicar matrices grandes, esté vinculada a la memoria.
Límite de caché significa la velocidad a la que el progreso de un proceso está limitado por la cantidad y la velocidad del caché disponible. Una tarea que simplemente procesa más datos de los que caben en la memoria caché estará vinculada a la memoria caché.
I/O Bound sería más lento que Memory Bound sería más lento que Cache Bound sería más lento que CPU Bound.
La solución a estar vinculado a E/S no es necesariamente obtener más memoria. En algunas situaciones, el algoritmo de acceso podría diseñarse en torno a las limitaciones de E/S, Memoria o Caché. Consulte Algoritmos ajenos al caché .