From: Paul
Koning
Every machine needs a fast memory system. CISC
machines just as much,
after all the number of memory references per operation of a given kind
doesn't depend on the sort of CPU architecture you use.
You're forgetting the memory bandwidth for the instruction fetching. RISC
machines execute a stream of simple, low-level instructions, whereas CISC
machines tend to do fewer, (semantically) higher-level operations - and in
the process, use less memory bandwidth for instructions.
To be tedious (sorry), for example, instead of of the RISC instruction
sequence 'move register Ra to Rt1; add constant X to Rt1; move mem loc (Rt1)
to Rt2; add Rn to Rt2; move Rt2 to mem loc (Rt1)', a CISC would just do 'add
Rn to mem loc X[Ra]'. Same number of _data_ reads/writes, but a very different
count of instruction fetches.
The CISC tradeoff (fewer, slower, instructions) made sense 'back in the day',
and not just for memory bandwidth - it made for more compact code, back when
memory was in very short supply (by today's standards).
Now, of course, a number of technological changes - primarily multi-level
caches - have changed the 'sweet spot' for optimal instruction complexity,
while keeping the memory bandwidth needed for instruction fetches down.
Noel
But the real question is your programming model again.
It all seems to be the old FORTRAN model. Random access of
any variable from absolute address. /common/ FOO(100),i,j,BAR(100)
... sum = FOO(j)+BAR(i-6)...
Ben.