Tagged architecture / Memory tagging: https://en.wikipedia.org/wiki/Tagged_architecture & type unions
Harvard architecture > memory details > Contrast with modified Harvard architecture: https://en.wikipedia.org/wiki/Harvard_architecture#Contrast_...
IIUC Ideally there should be an NX bit on pages, registers, names, and/or variables; and the programming language supports it.
(IIRC, with CPython the NX bit doesn't work when any imported C extension has nested functions / trampolines?)