A new CPU (2013)
fpgarelated.com
fpgarelated.com
IMHO needlessly complex just to make call instructions smaller. And on its own it provides not any more security - messing with a call instruction will no longer let you jump into the middle of nowhere but only to the beginning of a basic block, but you can still just mess with the table of addresses unless protected by other measures.
Given the normal code size s with n call instructions you can reduce the code size to s - 3n because you save three byte per call but you have an additional table of size s/4 + 1020. This yields n = s/12 + 340 and that means there has to be more than one call instruction every 12 byte on average to save any memory at all.
You don't have to assume, the article itself says the author is contemplating 9-bit instructions.
Each instruction token may only be 8 or 9 bits, but the secondary memory which contains jump targets is expanded to also contain full-width instructions.
The operating hypothesis is that just it's desirable to be able to "reach" any 32-bit destination address despite any given code segment not needing that flexibility, it's likewise desirable to be able to execute any, say, 36-bit instruction even though any given code segment only needs a subset of them.
It's really worth a read.
I think it's great that there are people who take a concept and work it out until the end in precise detail, even when it is not directly clear what the benefits would be, if any. It's also wonderful that this person decided to share the result of all of this work so that others might be inspired by it or find a useful trick or technique in it.