Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!sample.eng.ohio-state.edu!purdue!mentor.cc.purdue.edu!pop.stat.purdue.edu!hrubin From: hrubin@pop.stat.purdue.edu (Herman Rubin) Newsgroups: comp.arch Subject: Re: Changing IEEE rounding modes on the fly (was Re: somthing else) Summary: But it takes another instruction Message-ID: <13946@mentor.cc.purdue.edu> Date: 25 Jun 91 12:40:37 GMT References: <9106190449.AA02871@ucbvax.Berkeley.EDU> Sender: news@mentor.cc.purdue.edu Lines: 30 In article , mac@gold.kpc.com (Mike McNamara) writes: > > In the Ardent titan, using the BIT fp chips, we supported on > the fly, fully pipelined rounding mode changes. We did this by making > the change rounding mode action an instruction, rather than a register > write. This greatly facilitates interval arithmetic, intrinsics, and what > have you, as discussed to death in this thread. > However, since the changing of rounding modes is a pipelined > instruction, rather than a register write, the operating system has to > start up the vector unit while in kernel mode, and insert an > instruction into the stream if it is necessary to change rounding > modes upon context switch. > Luckily A) you could read the current rounding mode from a > status register, and only insert this instruction if you needed to > switch, and B) most programs use round to nearest. So we need another instruction to do a trivial switch. If rounding mode is being changed frequently, as it must be on scalar interval arithmetic, the "obvious" answer is to put it in the instruction, where it can be decoded in parallel with the much slower execution. Alternatively, have a fair number of status registers, with the choice of the status register part of the instruction. No matter how much pipelining takes place, unless there is an unused slot in a pipe running in parallel, it takes time. But in that case, the efficiency is not being used, anyhow. -- Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907-1399 Phone: (317)494-6054 hrubin@l.cc.purdue.edu (Internet, bitnet) {purdue,pur-ee}!l.cc!hrubin(UUCP)