Path: utzoo!attcan!uunet!hsi!mfci!cutler From: cutler@mfci.UUCP (Ben Cutler) Newsgroups: comp.arch Subject: Re: VLIW Architecture Keywords: VLIW Message-ID: <1068@m3.mfci.UUCP> Date: 8 Oct 89 04:06:56 GMT References: <251FCB3F.12366@maccs.dcss.mcmaster.ca> <1050@m3.mfci.UUCP> <13050@pur-ee.UUCP> <1630@l.cc.purdue.edu> <1989Oct5.025841.2046@esegue.segue.boston.ma.us> <3449@alliant.Alliant.COM> Sender: news@mfci.UUCP Reply-To: cutler@mfci.UUCP (Ben Cutler) Organization: Multiflow Computer Inc., Branford Ct. 06405 Lines: 44 Summary: Expires: Sender: Followup-To: Distribution: In article <3449@alliant.Alliant.COM> lewitt@Alliant.COM (Martin Lewitt) writes: >Ouch!! Why don't the Floating Point System's AP120B and FPS-164 processors >qualify as VLIW? They were commercial products introduced in 1975 and 1981 >respectively: > > [ lots of deleted text ] > >Let's get the history right. > 1) The first commercially available VLIW machine was the FPS-164, > not the Multiflow (by 6 years). VLIWs and Trace Scheduling (TM) Compiler technology go hand-in-hand. Ellis describes why the FPS-164 doesn't qualify as a good compilation target in his thesis: ``Many micro-programmed architectures have so-called `hot spots', latches, that will hold a value for only one cycle or until another value displaces it. For example, the outputs of the multiplier and adder pipelines in the FPS-164 [ APAL64 Programmer's Guide, FPS 1982 ] are latched and can be fed back to the register banks or directly to the inputs of the pipelines. There isn't enough bandwidth into the register banks, so to keep the pipelines full the programmer is often forced to use the latched pipeline outputs directly as pipeline inputs. But the programmer must be very careful to synchronize the pipelines' inputs and outputs, since the next value coming out of the pipeline will overwrite the previous latched value.'' Ellis goes on to describe how hot spots are unpleasant artifacts for a compiler to deal with, how it isn't always possible to move a value in a latch out of the way and into a register bank, or if you can do so by making room in the register bank, that in turn might require displacing a value in another latch, and so on. If you want to do a good job on complex loops, a backtracking compiler (blech) may be in order. According to Ellis, ''Every value producing operation and every data transfer reads its operands from a register bank and delivers its result to a register bank.'' Ellis notes that, ``Architectures with hot spots are easy to build, but building compilers for them is hard. (It took years to build the FPS-164 compiler.) Better to build the compiler and hardware in parallel, avoiding hardware features that can't be used easily by the compiler.'' If you want to know more, then read the thesis, which is extremely well-written and informative. ( My apologies for any typos in the above quotations. )