Close

Register windows

A project log for PDP - Processor Design Principles

Distilling my experience and wisdom about the architecture, organisation and design choices of my CPUs

yann-guidon-ygdesYann Guidon / YGDES 02/22/2018 at 05:172 Comments

SPARC uses register windows to provide a bunch of fresh registers across function calls. It was touted as a very RISC thing and history has shown that it was not the best idea, overall. So yeah, forget about it, as is, because it only moves the actual problems to where KISS doesn't work.

Instead, why not just map more than one data register to memory for each address register ? (see Memory-mapped registers in the F-CPU project)

Discussions

Samuel A. Falvo II wrote 02/25/2018 at 05:58 point

IIRC, AT&T Hobbit processors does this.  In fact, their instruction set architecture doesn't even let you specify registers; there's just no such thing.  Everything is expressed as offsets to a pointer, which is either implicit in the CPU or explicit in the current stack frame.  The processor's cache implementation has to be particularly and singularly clever to automate mapping of stack frame references to internal registers, making this work fast enough.


At the clock speeds Hobbit ran at, it was a relative success.  However, I'm not sure how scalable it is to higher clock speeds, since AT&T abandoned Hobbit, and nobody else picked up the technology.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 02/25/2018 at 12:21 point

I have no idea what that Hobbit CPU is, I'll have to look it up :-)

  Are you sure? yes | no