Re: Why are integer and FP registers separated?

Stefan Monnier <stefan.monnier@epfl.ch>
Fri, 11 Aug 1995 08:47:54 GMT

          From comp.compilers

Related articles
Re: Why are integer and FP registers separated? stefan.monnier@epfl.ch (Stefan Monnier) (1995-08-11)
Re: Why are integer and FP registers separated? meissner@cygnus.com (Michael Meissner) (1995-08-14)
Re: Why are integer and FP registers separated? stefan.monnier@epfl.ch (Stefan Monnier) (1995-08-18)
Re: Why are integer and FP registers separated? meissner@cygnus.com (Michael Meissner) (1995-08-15)
| List of all articles for this month |

Newsgroups: comp.arch,comp.compilers
From: Stefan Monnier <stefan.monnier@epfl.ch>
Keywords: architecture, performance
Followups-To: comp.compilers
Organization: Ecole Polytechnique Federale de Lausanne
References: <1995Jul26.075530.8419@news.snu.ac.kr> <CLIFFC.95Aug10173424@crocus.hpl.hp.com>
Date: Fri, 11 Aug 1995 08:47:54 GMT

Cliff Click <cliffc@crocus.hpl.hp.com> wrote:
] How about requiring the extra indirection.
] Float scalars are rare, so I don't care about space.
] Float arrays need only 1 tag for the whole array.


Of course. The scheme interpreter SCM has such homogenous arrays.
It's really helpful for mathematical use (the SCM developper is also
the developper of the Jacal system (which runs on top of SCM) which
is ...mmhh... well since I don't know exactly, I'll say it's some
kind of math program).


] For performance:
] 1) I don't use tagged systems. :-) ok, couldn't help myself


Makes sense !


] 2) I don't confuse the compiler about my floats. After ML-style
] type-checks are done, the compiler knows it's a float. No tags
] required.


Yes and no. Tags may not be required, but the compiler still has to
make sure the GC also knows it's a float. Tagging is an easy way to
tell the GC what's what. It is probably not the best
performance-wise, but GC without tags is not easy.


] 3) And I don't pass arrays-of-floats to "map" (and expect performance).
] Instead I write: (DO 1 N _body_) and the compiler gets this great
] bloody hint about what's going on.


Since map is likely to be inlined and since the compiler probably
knows that the argument is an array, the end result is the same (at
least as long as your loop can be expressed as a map, which is not
necessary the case).




Stefan


PS: followups to comp.compilers since this hasn't got much to do with comp.arch
        any more.
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.