I've been wanting to squeeze that ARM fact in one of my Archimedes blog posts, but somehow never got around to it. It is pretty cool how it was developed.
Re:Fake chips, I got stung
by Turing_Machine on Thursday December 07, 2023 @11:35AM
(#38558418)
I don't know if I'd go quite that far, but the 6502 definitely had some RISC-ish features.
The Page 0 addressing mode basically let you use the first page of RAM more or less as 256 extra 8-bit registers (or 128 16-bit registers, etc.), as those locations could be accessed faster and with fewer instruction bytes than locations elsewhere in RAM.
A fair number of languages were implemented on 6502-based machines by using multiple Page 0 locations to simulate wider registers.
Depends on what you call RISC, I guess: many people would argue that a load-store architecture is a required part of it, and the zero-page is actually an anti-thesis to that. In fact, it hints at the possibility of a memory-memory architecture (no general-purpose registers, minimal amounts of indexing/address registers). Implementations of such architecture could, of course, use whatever amount of hardware registers (unexposed in the instruction set itself) as a memory cache. Throw in some relaxed memory model, e.g. other cores don't see the memory stores via [STACK_REGISTER+offset] unless an explicit flush command is issued, and I imagine the end result will be quite nice to both use from the programmer's point of view (no register allocation!) and from the implementers point of view as well (register allocation is back, but now it's register- and memory-renaming, the latter being simplified by the lax memory model). One of the downsides is that the instruction encoding definitely won't be compact, with all those memory offsets instead of register numbers.
What a fun discussion http://forum.6502.org/viewtopic.php?t=720
Fun fact: the ARM is largely based on the 6502. You could argue that the 6502 was a RISC chip before RISC was a thing!