[comp.sys.sequent] instruction cache

tomg@chance.mitre.org (Tom Gerasch) (02/01/91)

I need some information about instruction cacheing on the Symmetry.
I have been told that the 128KB cache that each processor has on
the Symmetry is used only for data, that instructions are not cached.
I would think that the movement of instructions over the bus when one
has a medium to large Symmetry configuration would tend to saturate
the bus.  I know that the Intel 386 processor has a 16 byte on-chip
instruction queue, but some simple back-of-the-envelope calculations
seem to indicate that with 16 processors, say, and assuming that the
instructions executed are 2 to 4 bytes long and take 4 to 8 clocks, on
the average (I know, not real arithmetic computation), that we would
be getting near 50% utilization of the available bus bandwidth just
moving instructions around.  Am I wrong in this?

If anyone can provide me with information and/or analytic models with
reasonable instruction mix assumptions, I would appreciate it.  If the
caches hold instructions as well as data, is there any way for the 
programmer to control the percentage of cache allocated for each?

I would also appreciate any information on how Sequent makes use of the
Intel code and data segment descriptors.  Do they just create a single,
huge segment for each?  Do they share the same segment?

Any information will be appreciated.

Thanks,
Tom Gerasch    MITRE-Washington Software Engineering Center
               tomg@mitre.org


-- 
Dr. Tom Gerasch, Lead Scientist      DDN: tgerasch@mitre.org 
MITRE-Washington C3 Division		  tomg@mitre.org
    Software Engineering Center
7525 Colshire Drive		     (703) 883-7895	

jjb@sequent.UUCP (Jeff Berkowitz) (02/02/91)

In article <1991Feb1.153112.14717@linus.mitre.org> tomg@chance.mitre.org (Tom Gerasch) writes:

>I have been told that the 128KB cache that each processor has on
>the Symmetry is used only for data, that instructions are not cached.

This is incorrect.  The cache does not know one part of the *process*
address space from another.  All references to memory during normal
system execution (*) are made "through" the cache.  (*) Standalone
diagnostic software, etc, can disable the cache for test purposes.

>I would think that the movement of instructions over the bus when one
>has a medium to large Symmetry configuration would tend to saturate
>the bus.

Perhaps this would be a problem if in fact instructions were not cached.
However, they are.

>If the caches hold instructions as well as data, is there any way for
>the programmer to control the percentage of cache allocated for each?

No, because it is a physical cache.  That is, each physical address
in main memory maps to particular location (actually two, because the
cache is two-way-set-associative) in the cache; this is not under
programmer control.

>I would also appreciate any information on how Sequent makes use of the
>Intel code and data segment descriptors.

Segment descriptors are set at system initialization and never changed.
The paging unit in the i386/i486 is used to provide protection and
process isolation; page tables are manipulated at context switch time,
but segment tables are not.  This design was chosen for a variety of
reasons, particularly performance.
-- 
Jeff Berkowitz N6QOM	  uunet!sequent!jjb
Sequent Computer Systems  jjb@sequent.com