🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.arch
Article #2930

Re: Delayed Loads

#2930
From: Craig Hansen
Date: Thu, 25 Sep 1986 16:07
51 lines
2561 bytes
>     Q3: All of the discussion so far has been about delayed LOADS. What about
> 	delayed STORES, where you can't touch the data to be stored for a
> 	few instructions after the store instruction? Does anybody try to
> 	save a latch?

	This isn't a good idea.  While you can easily determine when
	two registers are identical, it is hard to determine at
	compile-time, that two address expressions are potentially
	conflicting. Thus it is hard to effectively reorganize code
	to avoid conflicts over delayed stores.

> I wonder if the idea of an architectural family is dead? If not, how do you
> reconcile it with delayed loads/branches? Start off with the longest possible
> delay factor, and reduce it as machines get faster?

	In general, you'd take one or two delay slots, which is all
	you can usually fill in software and make them architectural.
	If the machine you are building has more than the architecturally
	defined number of delay slots, it better interlock.
	This tradeoff permits building a fast, simple, machine now,
	and a faster, more complicated machine later.
	However, even the more complicated machine has fewer, less
	stressful interlock cases than a machine without delay slots.

> Do machines that have no interlocks on their delayed loads have strict
> or relaxed semantics? Ie. in the code sequence
> 
> 	ADD r1 += r0
> 	LOAD r0 := [memaddr]
> 	-- delay slot
> 
> do MIPS et cie. permit the rearrangement
> 
> 	LOAD r0 := [memaddr]
> 	ADD r1 := r0
> 
> where the value put in r1 is not [memaddr], but whatever was there before?


	This is explicitly not permitted in MIPS or in any other RISC
	machine I am aware of. The reason is that the occurance of
	an interrupt between the two instructions will cause it to fail.

> There is a difference between saying "the result is not available for N
> cycles" and saying "the destination value is not changed for M cycles".

-- 

Craig Hansen			|	 "Evahthun' tastes
MIPS Computer Systems		|	 bettah when it
...decwrl!mips!hansen		|	 sits on a RISC"
Technical Details
Message-ID: <701@mips.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!mnetor!seismo!ll-xn!nike!oliveb!glacier!mips!hansen
References: <5100133@ccvaxa> <5100136@ccvaxa>

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!mnetor!seismo!ll-xn!nike!oliveb!glacier!mips!hansen
From: hansen@mips.UUCP (Craig Hansen)
Newsgroups: net.arch
Subject: Re: Delayed Loads
Message-ID: <701@mips.UUCP>
Date: Thu, 25-Sep-86 12:07:31 EDT
Article-I.D.: mips.701
Posted: Thu Sep 25 12:07:31 1986
Date-Received: Fri, 26-Sep-86 20:38:57 EDT
References: <5100133@ccvaxa> <5100136@ccvaxa>
Organization: MIPS Computer Systems, Sunnyvale, CA
Lines: 51