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) |
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.
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.