Deutsch English Français Italiano |
<v45pdn$3n9j$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Lawrence D'Oliveiro <ldo@nz.invalid> Newsgroups: comp.arch Subject: Re: Making Lemonade (Floating-point format changes) Date: Mon, 10 Jun 2024 02:46:16 -0000 (UTC) Organization: A noiseless patient Spider Lines: 18 Message-ID: <v45pdn$3n9j$1@dont-email.me> References: <abe04jhkngt2uun1e7ict8vmf1fq8p7rnm@4ax.com> <memo.20240512203459.16164W@jgd.cix.co.uk> <v1rab7$2vt3u$1@dont-email.me> <20240513151647.0000403f@yahoo.com> <v1tre1$3leqn$1@dont-email.me> <9c79fb24a0cf92c5fac633a409712691@www.novabbs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Date: Mon, 10 Jun 2024 04:46:16 +0200 (CEST) Injection-Info: dont-email.me; posting-host="1186807d38ad523ecdef8690d71c9c11"; logging-data="122163"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/WslqeoFim3gsbYNF0/6wf" User-Agent: Pan/0.158 (Avdiivka; ) Cancel-Lock: sha1:tAfJarBez9pvfwy/YzNnKtHhuoY= Bytes: 2133 On Mon, 13 May 2024 21:16:48 +0000, MitchAlsup1 wrote: > Emulation is slow when trap overhead is large and not-slow when trap > overhead is small. I think it was a particular version of the old Mac OS, from around 1990 or so, that implemented a really amazing hack. Some 32-bit machines had hardware floating-point, others didn’t. So developers of numerics- intensive apps had to build two versions of their code, one with the floating-point instructions, the other with calls to Apple’s SANE library. The hack involved running code built to use hardware floating-point instructions, on hardware that didn’t have them. The instructions were of course trapped and emulated. But more than that, the system would patch the instruction that caused the trap, turning it into a direct call into the emulation routine. So after the first execution, each such instruction would run much faster. Until the code got unloaded from RAM and the patch was lost, of course.