Je peux facilement comprendre comment .bss et le code ont des représentations physiques dans le processeur qui a une banque de mémoire pour les instructions qu'un compteur de programme peut compter et le bss (symbole de démarrage de bloc) n'est que des données globales. Mais il y a ensuite la pile pour les variables locales et le tas pour la mémoire dynamique. Comment ces choses sont-elles mises sur le circuit physiquement?
la source
Logiquement, la pile et le tas ne sont généralement que de la mémoire; au niveau de la mise en œuvre cependant, ils seront, espérons-le, servis principalement à partir du cache. Dans la plupart des systèmes, ils y parviennent dynamiquement via des algorithmes de mise en cache, mais il y a eu des systèmes qui prennent en charge la localisation explicite dans le cache ou une autre mémoire plus rapide que d'habitude, et probablement aussi ceux qui prennent en charge les indications laissant que des données particulières devraient avoir une priorité préférentielle pour y être placées comme l'espace le permet.
Il est à espérer que la conception de logiciels de bas niveau et de générateurs de code de compilateur tient compte de l'organisation de l'accès aux données, ce qui est susceptible d'entraîner une bonne utilisation du cache, par rapport à des échecs constants du cache.
Certains processeurs ont un registre d'adresse de retour, qui fonctionne comme une sorte de cache de pile explicite à une profondeur (il y a probablement aussi ceux avec plusieurs piles matérielles profondes, bien que des exemples ne me viennent pas à l'esprit).
la source