[net.arch] MIPS's machine

crowl@rochester.ARPA (Lawrence Crowl) (04/21/86)

In article <6593@utzoo.UUCP> henry@utzoo.UUCP (Henry Spencer) writes:
>... MIPS Computer Systems ... machine ....  Load and
>store instructions come in a number of flavors, including hardware help
>for unaligned references:  you need two instructions to pick up the two
>pieces of the data, but then you'd need two memory cycles anyway, and
>things are set up so there is no extra overhead.

Unfortunately, you need to know that the reference is unaligned.  This
will involve some runtime checks if unaligned references are allowed.
If I were writing the compiler, I would probably make a convention that
the compiler is responsible for ensuring that all references are aligned.
Any comments?

>...  The machine is also
>byte-bisexual, giving the code generator a choice of whether addressing
>within a word is big-endian or little-endian.

Is there a convention for which form will be used?  I understand the need
to convert databases from one form to the other, but having two conventions
on the same machine could lead to two different object modules assuming
different conventions.  Any comments?
-- 

Lawrence Crowl             716-275-5766        University of Rochester
                                               Computer Science Department
...!{allegra,decvax,seismo}!rochester!crowl    Rochester, New York,  14627

jack@boring.uucp (Jack Jansen) (04/23/86)

I got John's papers, too, and I was absolutely thrilled.
Wonderful machine, where can I get one (and what does it cost)?

Anyway, two questions remained:
- How do they do TLB flushes when they want to re-use a process-id?
- I forgot my second question. I'll ask when I remember:-)
-- 
	Jack Jansen, jack@mcvax.UUCP
	The shell is my oyster.

henry@utzoo.UUCP (Henry Spencer) (04/24/86)

> >...  Load and
> >store instructions come in a number of flavors, including hardware help
> >for unaligned references:  you need two instructions to pick up the two
> >pieces of the data, but then you'd need two memory cycles anyway...
> 
> Unfortunately, you need to know that the reference is unaligned.  This
> will involve some runtime checks if unaligned references are allowed.

What it will involve, probably, is a compiler switch saying "generate all
references as aligned" or "generate all references you cannot be certain
about as unaligned".  In other words, only programs that must be able to
do unaligned references have to pay for it.  (This is a guess, not based
on official information from MIPS, but seems plausible.)  I like it.
-- 
Support the International
League For The Derision		Henry Spencer @ U of Toronto Zoology
Of User-Friendliness!		{allegra,ihnp4,decvax,pyramid}!utzoo!henry