| ▲ | IsTom 3 days ago | ||||||||||||||||
> the data bus is 128 bits wide: 64-bit for the data and 64-bit for data's type That seems a bit wasteful if you're not using a lot of object types. | |||||||||||||||||
| ▲ | inkyoto 3 days ago | parent | next [-] | ||||||||||||||||
Meet TIMI – the Technology Independent Machine Interface of IBM's i Series (nèe AS/400), which defines pointers as 128-bit values[0], which is a 1980's design. It has allowed the AS/400 to have a single-level store, which means that «memory» and «disk» live in one conceptual address space. A pointer can carry more than just an address – object identity, type, authority metadata – AS/400 uses tagged 16-byte pointers to stop arbitrary pointer fabrication, which supports isolation without relying on the usual per-process address-space model in the same way UNIX does. Such «fat pointer» approach is conceptually close to modern capability systems (for example CHERI’s 128-bit capabilities), which exist for similar [safety] reasons. [0] 128-bit pointers in the machine interface, not a 128-bit hardware virtual address space though. | |||||||||||||||||
| |||||||||||||||||
| ▲ | layer8 3 days ago | parent | prev [-] | ||||||||||||||||
64-bit pointers tend to be a bit wasteful as well. | |||||||||||||||||
| |||||||||||||||||