home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.arch
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!rpi!scott.skidmore.edu!psinntp!psinntp!equator!jod
- From: jod@equator.com (John Setel O'Donnell)
- Subject: Re: trapping speculative ops
- Message-ID: <1992Sep12.170954.3708@equator.com>
- Organization: Equator Technologies, Inc., Seattle, WA
- References: <CLIFFC.92Aug28085924@antigone.rice.edu> <1992Aug31.224611.5196@odin.diku.dk> <Btvou1.6F9@news.orst.edu>
- Date: Sat, 12 Sep 1992 17:09:54 GMT
- Lines: 51
-
- In article <Btvou1.6F9@news.orst.edu> pmontgom@math.orst.edu (Peter Montgomery) writes:
- >In article <1992Aug31.224611.5196@odin.diku.dk> thorinn@diku.dk
- >(Lars Henrik Mathiesen) writes:
- >>To summarize: trap bits are proposed to enable a compiler to move a
- >>potentially trapping operation outside of a condition. As a special
- >>case, this would allow many, if not all, of the same optimizations
- >>that can be done if a load through a NULL pointer yields zeroes.
- >
- > On the early models in the CDC Cyber series, such
- >as the CDC 6400 and 6600, floating point errors
- >(e.g., overflow, division by zero) generated special
- >results (e.g., indefinite quantity). They did not generate
- >a trap until those NaN-like results were used as operands
- >to other floating point instructions.
-
- In the Multiflow TRACE family of machines, there were several architecture
- features to support moving operations above IFs.
-
- - There was a floating-point mode called "deferred exception" that acted
- similarly to what's described above. Register-to-register floating
- point operations didn't signal exceptions; overflows wrote Inf, other
- failures wrote NaN. Chains of operations could move above an If. We
- checked for Nan/Inf when doing the following operations:
- - store to user memory (2 variants of store opcodes, one for
- spill/restore, one for user stores which
- performed the check on the data)
- - convert to int (don't want to lose exception status)
- - floating compare (likewise)
- This mechanism lost underflows; most users didn't care. There were
- compile-time options to specify whether to use precise exceptions or
- this mode.
-
- - There were 2 types of LD opcodes, one called "dismissable." If no
- valid address translation existed for a DLD, the target register
- was loaded with -1 (a NaN, and an unaligned pointer to boot) and
- the computation continued. The compiler rewrote LD->DLD when making
- a scheduling decision to move a LD above a branch.
-
- I'm aware of experimental implementations on other systems of the latter
- feature without hardware modifications, by changing the TLB-miss/page fault
- code to check a bitmap in the process address space which specifies which
- PC's have DLD's.
-
- This is written up in ASPLOS-II (10/87) and IEEE Trans. Computers, 8/88.
- Comments on the second (improved) implementation of these features are
- in a paper in Supercomputing '90.
- --
- - - -
- John Setel O'Donnell jod@equator.com
- Equator Technologies, Inc. 206-328-6544 voice/fax
- Seattle, WA Read everything by Alice Miller.
-