[comp.arch] Official comments on recent ARM postings

RWilson@acorn.co.uk (02/22/90)

ARM surfaces again on comp.arch - wonders will never cease :-)

]A related observation: the Acorn ARM has pre/post-increment/decrement (all 4
]combinations). You don't have to pay a penalty in cycles for using them.
]The ARM is a RISC.
]Ge' Weijers

You do pay a slight penalty - instruction code density vs address offset.
The extra bits of control for pre/post & inc/dec use up some bits that might
have been used for a bigger address offset. Studies showed....

}This is indeed addressing modes, but as any load can be done in one cycle,
}Torben Mogensen (torbenm@diku.dk)

Actually, due to all sorts of memory pipeline breaks, all loads in ARM are 3
cycles, all stores are 2 cycles. (for the interested, ARM has a pipelined
memory bus: the address in cycle a refers to the data xferred at the start
of cycle b - at which time ARM is already presenting a new address for cycle
b. This - since load requires one to look at the target, get the value and
then get the next instruction - means 3 cycles of the bus are spent on the
load. And it was simpler to make this 3 cycles internally - avoiding the
extra ports which might have been needed for pre/post & inc/dec - since we
weren't thinking of building ARM3 at the time (1984) (a good guess on the
part of Randell Jesup). Stores can be done in 2 cycles since the processor
needn't wait while the data whizzes about. Looking at ARM address traces on
a logic analyser can be very exciting :)).

>correction - (single register) loads on an ARM take three or four cycles,
>depending on the alignment of the next instruction in the pipeline.
>MEMC (the memory controller in the ARM chipset) loads 4 32-bit words at a
>time, so that relatively slow memories may be used, however this means
>that any out of sequence loads require an extra cycle to be inserted in
>order to reload.
>Alasdair McIntyre (aiadrmi@uk.ac.edinburgh.castle)

As stated above, as far as ARM is concerned load is always 3 cycles. The
memory controller transfers data to and from DRAMs using page mode to speed
up many cycles. But the column address is also used for late translation of
the virtual address which limits the number of page mode cycles in a row to
3 - when we have to do a new row address. Page mode cycles are sequential
"S" cycles, non-page mode are non-sequential "N" cycles. ARM provides an
advance warning signal to the memory controller when it breaks
sequentiality. Clearly LDR breaks, so it takes N, N, S. Clever logic in MEMC
rescues the second N, turning it into an S where possible. STR always does
N, N - coincidentally the same time as LDR in current systems where N=2*S,
but for different reasons.

As Alasdair states, the multiple transfer instructions have the same timing
as the single transfer instructions for just one register. Each additional
value transferred then takes an extra S cycle. LDM instructions are thus
able to operate at nearly peak memory bandwidth.

>Using this technique the maximum sustained data rate achievable for a block
>move operation is over 11 Mbytes/sec on an 8MHz ARM for a word aligned transfer
>Alasdair McIntyre (aiadrmi@uk.ac.edinburgh.castle)

Now current Acorn volume market machines have just about the slowest DRAM
obtainable. N=250nS, S=125nS. Bus bandwidth is maximised by N+3S repeated,
coming in at 25.6MBytes per second. And LDM/STM of (say) 8 registers gets
very close to this, so an Acorn A3000 (649 pounds) can pick up memory *and
put it down again* at around the speed mentionned - provided the video
system isn't after the memory bandwidth as well!

But these aren't ARM limits (or even MEMC limits). I'm using a research
prototype machine with N=166nS, S=83nS. A bus bandwidth of 38.4MBytes per
second. And its DRAMs are just a bit less affordable :-).

Naturally ARM3 refills cache lines using the N+3S transfer method. Thus
speeding up LDR instructions to related addresses. Third party ARM3
upgrades to Acorn machines are circa 500 pounds.... (and falling)

=Remember, the guiding principle of architecture design is not "is it RISC",
=it's "is it faster" (with a little "is it cheaper", "is it easier to
=program", "is it reliable", etc thrown in.)
=Randell Jesup (jesup@cbmvax.cbm.commodore.com)

ARM and its related chip set were designed on a "total system design"
principle. With a great deal of "is it cheaper?" thrown in, since our
objective was to make a true 32 bit computer with performance, hardware
memory management, colour bit mapped screens and flexible IO, as cheap as
possible. RISC just happened to fit the bill on the processor end of things
(68020's cost as much as the whole of the rest of the system put together in
1984), but many other considerations and technologies were valuable. Like we
also wanted to make the assembly language easy to write in, the overall
system readily manufacturable, the amount of people time to design the
chips tractable.... So we ended up with (strange?) things like MEMC with no
data bus, VIDC with no address bus. And zillions of lines of ARM Assembler
(it turned out so easy to write...).

--Roger Wilson

jhallen@wpi.wpi.edu (Joseph H Allen) (02/23/90)

In article <1713@acorn.co.uk> RWilson@acorn.co.uk writes:
[Arm info]

Whose bright idea was it to put the flag bits in the upper half of the PC? 
Sure it saves a store in the interrupt handling but now ARM is stuck with only
26 address lines (or whatever it was)...

(otherwise, I like ARM very much.  A RISC processor you can actually program
assembly language in!  How fast is the latest ARM these days?)
-- 
            "Come on Duke, lets do those crimes" - Debbie
"Yeah... Yeah, lets go get sushi... and not pay" - Duke

jkenton@pinocchio.encore.com (Jeff Kenton) (02/27/90)

From article <8948@wpi.wpi.edu>, by jhallen@wpi.wpi.edu (Joseph H Allen):
> 
> (otherwise, I like ARM very much.  A RISC processor you can actually program
> assembly language in!  How fast is the latest ARM these days?)

Motorola's 88000 is pretty nice for writing assembly language, and MIPS looks
decent too, although I haven't tried it.  No opinion on SPARC, but Intel's 860
looks a little baroque.

Any other opinions? We haven't had a good religious war in a week or two.



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      jeff kenton  ---	temporarily at jkenton@pinocchio.encore.com	 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

scoii@mips.COM (Randy Scofield) (02/27/90)

In article <11245@encore.Encore.COM> jkenton@pinocchio.encore.com (Jeff Kenton) writes:
>From article <8948@wpi.wpi.edu>, by jhallen@wpi.wpi.edu (Joseph H Allen):
>> 
>> (otherwise, I like ARM very much.  A RISC processor you can actually program
>> assembly language in!  How fast is the latest ARM these days?)
>
>Motorola's 88000 is pretty nice for writing assembly language, and MIPS looks
>decent too, although I haven't tried it.  No opinion on SPARC, but Intel's 860
>looks a little baroque.
<stuff deleted>
>Any other opinions? We haven't had a good religious war in a week or two.
>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>      jeff kenton  ---	temporarily at jkenton@pinocchio.encore.com	 
>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
It is true that I am biased, so I usually stay out of such conversations.
I believe the Rx000 family is well suited to assembly code writing.
I like general purpose resisters, and lots of them.  Since the compiler
guys take care of all the interlock issues, the source code is pretty simple.
And simple is best, unless all you do is write assembly code,
and need job security. :-]
And besides, once you have felt the response time on a Mips based machine,
there is no going back!!
Randy
-- 
- Randy Scofield (disclaimer:**I speak for me, etc)
UUCP: {ames,decwrl,prls,pyramid}!mips!scoii
USPS: MIPS Computer Systems, 930 Arques, Sunnyvale, CA 94086, (408) 991-0232

csimmons@jewel.oracle.com (Charles Simmons) (02/28/90)

In article <11245@encore.Encore.COM>, jkenton@pinocchio.encore.com (Jeff
Kenton) writes:
> Motorola's 88000 is pretty nice for writing assembly language, and MIPS looks
> decent too, although I haven't tried it.  No opinion on SPARC, but
Intel's 860
> looks a little baroque.
> 
> Any other opinions? We haven't had a good religious war in a week or two.
> 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>       jeff kenton  ---	temporarily at jkenton@pinocchio.encore.com	 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Of course, we note that on the MIPS processor, it's kind of foolish
to program in assembly language.  There isn't much that you
can do in assembly language that you can't get the compiler to do
for you.

-- Chuck

rpw3@rigden.wpd.sgi.com (Rob Warnock) (03/01/90)

In article <11245@encore.Encore.COM> jkenton@pinocchio.encore.com
(Jeff Kenton) writes:
+---------------
| From article <8948@wpi.wpi.edu>, by jhallen@wpi.wpi.edu (Joseph H Allen):
| > (otherwise, I like ARM very much.  A RISC processor you can actually program
| > assembly language in!  How fast is the latest ARM these days?)
| Motorola's 88000 is pretty nice for writing assembly language, and MIPS looks
| decent too, although I haven't tried it.  No opinion on SPARC, but Intel's 860
| looks a little baroque.
| Any other opinions? We haven't had a good religious war in a week or two.
+---------------

I really enjoyed programming Am29000 assembler, once I had gotten used
to a real 3-address machine. (Of course I am biased. I was a consultant
to AMD at the time...) It took me a while to quit thinking of it as a
stuttering 2-address machine -- at first I found myself writing everything
as "<op> <dest>, <dest>, <src>". But then the "shape" of the instruction
set started sinking in, and I soon learned to use the 3-addr-ness to save
instructions (cycles). (Though, just because of what is typically being
computed, one still ends up writing many "2-address" instructions.) Overall,
it feels really "clean".

-Rob


-----
Rob Warnock, MS-9U/510		rpw3@sgi.com		rpw3@pei.com
Silicon Graphics, Inc.		(415)335-1673		Protocol Engines, Inc.
2011 N. Shoreline Blvd.
Mountain View, CA  94039-7311