Remix.run Logo
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.

agumonkey 3 days ago | parent [-]

is this still used in IBM hardware ?

inkyoto 3 days ago | parent [-]

It is, although TIMI does not exist in the hardware – it is a virtual architecture that has been implemented multiple times in different hardware (i.e., CPU's – IMPI, IBM RS64, POWER, and only heavens know which CPU IBM uses today).

The software written for this virtual architecture, on the other hand, has not changed and continues to run on modern IBM iSeries systems, even when it originates from 1989 – this is accomplished through static binary translation, or AOT in modern parlance, which recompiles the virtual ISA into the target ISA at startup.

layer8 3 days ago | parent | prev [-]

64-bit pointers tend to be a bit wasteful as well.

josefx 3 days ago | parent | next [-]

Especially on a system from the 80s, did they plan to address every bit of memory available on the planet?

yjftsjthsd-h 3 days ago | parent | prev [-]

I am forever sad that x32 didn't take off. Lower memory use, great performance. Ah well.