Eu posso entender facilmente como .bss e o código têm representações físicas no processador, que possui um banco de memória para as instruções que um contador de programa pode contar e o bss (símbolo de início do bloco) são apenas dados globais. Mas há a pilha para variáveis locais e a pilha para memória dinâmica. Como essas coisas são colocadas no circuito fisicamente?
fonte
Logicamente falando, a pilha e o heap geralmente são apenas memória; no nível da implementação, esperamos que sejam servidos principalmente a partir do cache. Na maioria dos sistemas, eles chegam lá dinamicamente por meio de algoritmos de armazenamento em cache, mas existem sistemas que suportam localização explícita no cache ou outra memória mais rápida que o normal e provavelmente também aqueles que suportam deixar dicas de que dados específicos devem ter prioridade preferencial para posicionamento lá, como licenças de espaço.
Espera-se que o projeto de geradores de software de baixo nível e código de compilador leve em consideração a organização do acesso a dados, o que provavelmente resultará em uma boa utilização do cache, em comparação com constantes falhas no cache.
Alguns processadores têm um registro de endereço de retorno, que funciona como uma espécie de cache de pilha explícita de um nível profundo (provavelmente existem aqueles com várias pilhas de hardware profundas também, apesar de exemplos não virem à mente).
fonte