On 21 July 2016 at 22:22, Peter Corlett <abuse at cabal.org.uk> wrote:
On Wed, Jul 20, 2016 at 09:02:41PM +0200, Liam Proven
wrote:
On 19 July 2016 at 17:04, Peter Corlett <abuse
at cabal.org.uk> wrote:
[...]
RISC
implies a load-store architecture, so that claim is redundant.
Could you expand on
that, please? I think that IKWYM but I'm not sure.
A load-store architecture is one where the ALU only operates on registers. The
name comes from having separate instructions to load registers from memory, and
store them to memory.
The converse is register-memory, where ALU instructions can work directly on
memory. However, this means that the instructions have to do quite a lot of
work because now data has to be brought in from memory to an anonymous register
to be worked on and then stored back to the same location. This also results in
a proliferation of instruction and addressing mode combinations. Sounds rather
CISCy, doesn't it?
Meanwhile, a load-store architecture would have to decompose that into simpler
independent load, operate, store instructions. Hey presto, RISC!
Thanks for that. It confirms, in a considerably clearer way, what I
had a dim apprehension of.
But load/store automatically RISC? Aren't there non-RISC load/store
processors, and indeed, RISC non-load/store ones?
[...]
IMO,
it's the predicated instructions that is ARM's special sauce and the
real innovation that gives it a performance boost. Without those, it'd be
just a 32 bit wide 6502 knockoff.
Do tell...?
You've already answered the "6502 knockoff" elsethread, so I assume
you're
asking about the predicated instructions.
A predicated instruction is one that does or does not execute based on some
condition. CISC machines generally use condition codes (aka flags), and only
have predicated branch instructions. Branch-not-equal, that kind of things.
In ARM, *all* instructions can be predicated. Because instructions are 32 bits
wide, it has the luxury of allocating four bits to select from one of 16
possible predicates based on the CPU flags. One predicate is "always" so one
can also unconditionally execute instructions.
Aha. Interesting. This I did not know.
If I understand it correctly, this caused considerable problems for
the RISC OS people later. The original Acorn ARM machines used 26 bits
of the program counter as the PC, and the rest as flags. Later ARM
chips do not support this mode, and the OS had to be partially
rewritten for ARMs with a true 32-bit PC -- breaking binary
compatibility with 26-bit code.
I'm not sure this is the same phenomenon you're describing.
--
Liam Proven ? Profile:
http://lproven.livejournal.com/profile
Email: lproven at cix.co.uk ? GMail/G+/Twitter/Flickr/Facebook: lproven
MSN: lproven at
hotmail.com ? Skype/AIM/Yahoo/LinkedIn: liamproven
Cell/Mobiles: +44 7939-087884 (UK) ? +420 702 829 053 (?R)