2009-06-24 16 views
8

He estado leyendo Wikipedia's article on K programming language y esto es lo que vi:Mantener su código en caché L1

El pequeño tamaño del intérprete y la sintaxis compacta del lenguaje hace posible que las aplicaciones de K para encajar completamente dentro de la caché de nivel 1 del procesador.

Estoy intrigado. ¿Cómo es posible tener todo el programa en caché L1? Digamos que la CPU tiene 256 kb de caché L1. Digamos que mi programa es mucho menos que eso y que necesita una cantidad muy pequeña de memoria (por ejemplo, solo para la pila de llamadas y demás). Digamos que no necesita ninguna biblioteca (aunque si un programa es para un SO, necesitaría incluir kernel32.dll o lo que sea). ¿Y el sistema operativo no asigna automáticamente una memoria mínima para ningún programa (bueno, para el código ejecutable y la pila y el montón)?

Gracias.

Respuesta

5

Creo que lo que dicen no es que todo el programa se ajuste a la caché L1, sino que todo el código que se ejecuta la mayor parte del tiempo cabe en la caché L1.

Sí, el sistema operativo asigna montones de otras estructuras, pero esas son golpeadas con poca frecuencia para que no importen.

Por supuesto, esto es todo especulación: no sé nada sobre el lenguaje 'K'.

4

Creo que están hablando de la ventaja de que el código de ejecución principal cabrá en la memoria caché L1; independientemente de la memoria asignada al programa. Una vez que se carga la aplicación K, si nunca toca esa memoria, no importa si está asignada en términos de rendimiento (es decir, el beneficio de rendimiento de estar totalmente en caché L1).

2

Confunde todo el código de programa con el código ejecutado más frecuentemente.

Para los idiomas interpretados, el núcleo del intérprete es sin duda uno de los códigos más frecuentemente ejecutados. Tener el código más frecuentemente ejecutado en la caché acelera la ejecución de la misma forma que lo hace tener los datos más frecuentemente accedidos en caché.

La parte clave es "con mayor frecuencia": no es necesario tener todos los códigos/datos en caché para ver una aceleración significativa.

1

El intérprete se ejecuta como un programa normal administrado por el sistema operativo. El programa interpretado se ejecuta dentro del espacio de memoria del intérprete, en el segmento de datos. Muchos programas K pueden caber fácilmente en la memoria caché L1 por completo, incluso aunque no todo el intérprete pueda hacerlo. Sin embargo, el bucle principal del intérprete probablemente sea adecuado.

Cuestiones relacionadas