| Deutsch English Français Italiano |
|
<ve6m1m$2onj9$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: news.eternal-september.org!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Robert Finch <robfi680@gmail.com> Newsgroups: comp.arch Subject: Re: Tonights Tradeoff - Background Execution Buffers Date: Wed, 9 Oct 2024 15:37:26 -0400 Organization: A noiseless patient Spider Lines: 40 Message-ID: <ve6m1m$2onj9$1@dont-email.me> References: <vbgdms$152jq$1@dont-email.me> <vbog6d$2p2rc$1@dont-email.me> <f2d99c60ba76af28c8b63b9628fb56fa@www.novabbs.org> <vc61e6$21skv$1@dont-email.me> <vc8gl4$2m5tp$1@dont-email.me> <vcv5uj$3arh6$1@dont-email.me> <37067f65c5982e4d03825b997b23c128@www.novabbs.org> <vd352q$3s1e$1@dont-email.me> <5f8ee3d3b2321ffa7e6c570882686b57@www.novabbs.org> <vd6a5e$o0aj$2@dont-email.me> <vdnpg4$3c9e$2@dont-email.me> <2024Oct4.081931@mips.complang.tuwien.ac.at> <vdp343$9d38$1@dont-email.me> <2024Oct5.114309@mips.complang.tuwien.ac.at> <ve5mpq$2jt5k$1@dont-email.me> <b7191e6ab8492ad36abb76cc966d3b0b@www.novabbs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Wed, 09 Oct 2024 21:37:26 +0200 (CEST) Injection-Info: dont-email.me; posting-host="dd81d13d0ab1bf3b665bd74f11eee582"; logging-data="2907753"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+0G2FfJiXfjIEuN3qEQarW1oxWi4pGWbg=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:FHDY8a6ir8G/zgnwKxExq07X2+g= In-Reply-To: <b7191e6ab8492ad36abb76cc966d3b0b@www.novabbs.org> Content-Language: en-US On 2024-10-09 12:19 p.m., MitchAlsup1 wrote: > On Wed, 9 Oct 2024 10:44:08 +0000, Robert Finch wrote: > >> >> Been thinking some about the carry and overflow and what to do about >> register spills and reloads during expression processing. My thought was >> that on the machine with 256 registers, simply allocate a ridiculous >> number of registers for expression processing, for example 25 or even >> 50. Then if the expression is too complex, have the compiler spit out an >> error message to the programmer to simplify the expression. Remnants of >> the ‘expression too complex’ error in BASIC. > > Both completely unacceptable, and in your case completely unnecessary. > in 967 subroutines I read out of My 66000 LLVM compile, I only have > 3 cases of spill-fill, and that is with only 32 registers with uni- > versal constants. > > Of the RISC-V code I read alongside with 32+32 registers, I counted 8. > > With those statistics and 256 registers, If you can't get to essentially > 0 spill=fill the problem is not with your architecture but with your > compiler. Yes, that is sort of what I was thinking. The compiler does not generate very many spills and fills, using just 32 regs (10 temps+9 saved possibly). Most functions do not have any spills or fills. Using just a few more registers might virtually guarantee they never happen. Or have the number of registers used a compiler option, in case there is a case with not enough registers. I suppose the compiler could keep increasing the number of registers it uses until it has enough. Not spilling and filling was to get around the issue of having to save extra carry-overflow bits for a register. So, maybe allowing the compiler to spill and fill is possible if CO bits are not needed for the app. So, one might have either compact and fast extended precision arithmetic or complex arithmetic expressions. Could make the compiler smart enough to detect the situation.