Puedo entender fácilmente cómo .bss y el código tienen representaciones físicas en el procesador que tiene un banco de memoria para las instrucciones que un contador de programa puede contar y el bss (símbolo de inicio de bloque) son solo datos globales. Pero luego está la pila de variables locales y el montón de memoria dinámica. ¿Cómo se ponen físicamente estas cosas en el circuito?
fuente
Lógicamente hablando, la pila y el montón generalmente son solo memoria; sin embargo, en un nivel de implementación, esperamos que sean atendidos principalmente desde caché. En la mayoría de los sistemas, llegan dinámicamente a través de algoritmos de almacenamiento en caché, pero ha habido sistemas que admiten la ubicación explícita en la memoria caché u otra memoria más rápida de lo habitual, y probablemente también aquellos que admiten dejar indicios de que los datos particulares deben tener prioridad preferencial para su ubicación allí como permisos de espacio.
El diseño de software de bajo nivel y los generadores de código de compilación esperan tener en cuenta la organización del acceso a los datos, lo que probablemente resulte en una buena utilización de la memoria caché, frente a las constantes fallas en la memoria caché.
Algunos procesadores tienen un registro de dirección de retorno, que funciona como una especie de caché de pila explícito de una profundidad (probablemente también haya aquellos con varias pilas de hardware profundas, aunque no se me ocurren ejemplos).
fuente