Hi All,

On 6/23/25 08:47, Michael Clark wrote:
[snipped]

btw this started as a sketch in a gist in June 20th of last year:

https://gist.github.com/michaeljclark/8f9b81e5e40488035dc252c9da3ecc2e

# the glyph architecture

current: https://metaparadigm.com/~mclark/glyph.pdf
latest: https://metaparadigm.com/~mclark/glyph-20250622.pdf

a clean-slate, portable virtual machine designed for efficient binary
translation to X86 system mode targeting features like SMAP, SMEP,
APIC, TSC, and PCI-style message signaled interrupts, with a system
model that favors simplicity e.g., only supervisor/user modes and no
interrupt delegation. the fundamental architectural design elements,
such as the variable length instruction packet format and split
instruction and constant streams are in place, the 16-bit compressed
opcodes are fully specified, and there is now the beginnings of a
system or protected mode. yet there is still a lot of work for it to
virtualize a target like X86+AVX-512 with address translation.

## address translation

adopts a page table format designed for shadow paging on X86. the page
translation system has a physical address permission check feature and
adds PTE.T (translate bit) for optional hardware zoning of translation
pages. in addition to virtual memory, the translation system performs
optional per-page physical permission checks, and physical self-mapping
validation with zoning for PTE pages that have the PTE.T bit set.

the architecture introduces the concept of a translation address which
are addresses boxed with an address space prefix (AS) designed to
provide a canonical address form for user and supervisor virtual
addresses as well as physical addresses, to make it easier to implement
meta-circular emulation for nested page translation with translation
agnostic source and destination address spaces.

there were some errata related to the spec yesterday but the bones and
intention is there. as I haven't seen page tables deployed in this way
to check self maps in a physical tree; and the primary intent, which is
to set permission for PTE zones and page table page monitoring. so
there may be some more bugs when we try to test it out in a simulator.

- https://github.com/michaeljclark/glyph/
- https://metaparadigm.com/~mclark/glyph-20250623.pdf

errata:

- swap the supervisor and physical address space prefixes
  to be consistent with Linux kernel address space on x86-64.
- physical permission self-mapping check is only on leaf entries
- fix rename P bit to T bit in 64-bit page table entry structure

turns out that if we add an 'internal' AS it would be ..FFFE0000..
so we could think about adding an internal address space prefix.

Michael.

Reply via email to