Question

J'ai lu un article de Wikipedia sur le langage de programmation K et voici ce qu'il est ce que j'ai vu:

  

La petite taille de l'interpréteur et la syntaxe compacte du langage permettent à K applications de tenir entièrement dans le cache de niveau 1 du processeur.

Je suis intrigué. Comment est-il possible d'avoir tout le programme dans le cache L1? Dites, le processeur a 256kb de cache L1. Supposons que mon programme est bien inférieur à cela et qu’il nécessite très peu de mémoire (par exemple, uniquement pour la pile d’appels). Disons que cela n’a pas besoin de bibliothèques (bien que si un programme est destiné à un système d’exploitation, il devrait inclure kernel32.dll ou autre). Et le système d’exploitation n’alloue-t-il pas automatiquement un minimum de mémoire à n’importe quel programme (enfin, pour le code exécutable, la pile et le tas)?

Merci.

Était-ce utile?

La solution

Je pense qu'ils ne prétendent pas que tout le programme est contenu dans le cache N1, mais que tout le code qui s'exécute la plupart du temps se trouve dans le cache N1.

Oui, le système d’exploitation alloue de nombreuses autres structures, mais celles-ci sont frappées assez rarement pour ne pas en importer.

Bien sûr, tout cela n’est que spéculation - je ne connais rien au langage «K».

Autres conseils

Je pense qu'ils parlent de l'avantage que le code d'exécution principal sera contenu dans le cache L1; indépendamment de la mémoire allouée au programme. Une fois que l'application K est chargée, si elle ne touche jamais à cette mémoire, peu importe si elle est allouée en termes de performances (c'est-à-dire le meilleur avantage d'être totalement dans le cache L1).

Vous confondez tout le code du programme avec le code le plus fréquemment exécuté.

Pour les langages interprétés, le noyau de l’interprète fait certainement partie du code le plus fréquemment exécuté. Avoir le code le plus fréquemment exécuté dans le cache accélère l'exécution de la même manière que le fait d'avoir les données les plus fréquemment consultées dans le cache.

L'élément clé est "le plus souvent". - il n'est pas nécessaire de mettre tout le code / toutes les données en cache pour voir une accélération significative.

L'interpréteur s'exécute comme un programme normal géré par le système d'exploitation. Le programme interprété s'exécute dans l'espace mémoire de l'interpréteur, dans le segment de données. De nombreux programmes K peuvent facilement s’intégrer complètement dans la mémoire cache L1, même si l’interprète n’est pas entièrement. La boucle principale de l’interprète sera probablement adaptée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top