Newsgroups: comp.arch
Path: utzoo!henry
From: henry@zoo.toronto.edu (Henry Spencer)
Subject: Re: Interlocked Pipelines - basic questions
Message-ID: <1991Mar26.213709.9246@zoo.toronto.edu>
Date: Tue, 26 Mar 1991 21:37:09 GMT
References: <1991Mar26.171547.2400@sj.nec.com>
Organization: U of Toronto Zoology

In article <1991Mar26.171547.2400@sj.nec.com> koll@NECAM.tdd.sj.nec.com (Michael Goldman) writes:
>... I read also that MIPS, which originally stood for
>Microprocessor without Interlocking Pipeline Stages (I think) has introduced
>interlocked pipelines.

MIPS stands for two things:  a Stanford project some years ago, which did
indeed use MIPS as an acronym with the expansion you give, and a company,
which doesn't.  The company's products have always had interlocking of
certain kinds.

>1.  What does the interlocking refer to ?

To having an instruction which needs not-yet-available data wait around
until the data is on hand.  The alternative is to require the compiler
to ensure that the situation never happens, by generating code that
explicitly stalls when needed results would not be ready in time.

>2.  Why is it considered good or bad ?

It's good if delays are unpredictable, because otherwise the compiler
would have to insert a worst-case stall every time.  It's bad because
it adds hardware complexity.  The Stanford project established that
you *could* do without it, given a smart compiler and predictable delays.
Unpredictable cache delays and the desire to make compiled programs move
between different versions of the machine without recompilation tend to
encourage commercial hardware builders to use interlocks.

>3.  What, if any, are the implications for interrupt handling ?

None that I can think of offhand.  Pipelining does tend to make interrupts
fun, but whether the pipeline is interlocked or not is less significant.
-- 
"[Some people] positively *wish* to     | Henry Spencer @ U of Toronto Zoology
believe ill of the modern world."-R.Peto|  henry@zoo.toronto.edu  utzoo!henry
