| Deutsch English Français Italiano |
|
<vcb730$3ci7o$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.nobody.at!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Terje Mathisen <terje.mathisen@tmsw.no>
Newsgroups: comp.arch
Subject: Re: Computer architects leaving Intel...
Date: Tue, 17 Sep 2024 08:20:15 +0200
Organization: A noiseless patient Spider
Lines: 54
Message-ID: <vcb730$3ci7o$1@dont-email.me>
References: <vaqgtl$3526$1@dont-email.me>
<p1cvdjpqjg65e6e3rtt4ua6hgm79cdfm2n@4ax.com>
<2024Sep10.101932@mips.complang.tuwien.ac.at> <ygn8qvztf16.fsf@y.z>
<2024Sep11.123824@mips.complang.tuwien.ac.at> <vbsoro$3ol1a$1@dont-email.me>
<867cbhgozo.fsf@linuxsc.com> <20240912142948.00002757@yahoo.com>
<vbuu5n$9tue$1@dont-email.me> <20240915001153.000029bf@yahoo.com>
<vc6jbk$5v9f$1@paganini.bofh.team> <20240915154038.0000016e@yahoo.com>
<vc70sl$285g2$4@dont-email.me> <vc73bl$28v0v$1@dont-email.me>
<OvEFO.70694$EEm7.38286@fx16.iad>
<32a15246310ea544570564a6ea100cab@www.novabbs.org>
<vc7a6h$2afrl$2@dont-email.me>
<50cd3ba7c0cbb587a55dd67ae46fc9ce@www.novabbs.org>
<vc8qic$2od19$1@dont-email.me> <fCXFO.4617$9Rk4.4393@fx37.iad>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 17 Sep 2024 08:20:16 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="854a9c90e9fcaa895923e39b84a6c872";
logging-data="3557624"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+n3u4Mx675fRAopy0yvEucYXWPn6AXkLmbgknY3DH+2w=="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Firefox/91.0 SeaMonkey/2.53.19
Cancel-Lock: sha1:Ua1yc4wTtNKgmvU5yFH48rfxSZo=
In-Reply-To: <fCXFO.4617$9Rk4.4393@fx37.iad>
Bytes: 3997
EricP wrote:
> These double-width bit-field straddle operations show up at 32-bits.
> Various FP64 formats (DEC's middle-endian FP being the worst example),
> Intel page table entries and segment/gate descriptors, come to mind.
Lots of them in 32-bit code!
>
> It's just going to take a while for double-width things to show up
> at the 64-bit level. But if FP128 becomes a reality...
If???
> Codecs likely have to deal with double-width straddles a lot, whatever
> the register word size. So for them it likely happens at 64-bits already.
Nothing likely about it: LZ4 is pretty much the only compression
algorithm/lossless codec that never straddles, all the rest tend to
treat the source data as single bitstream of arbitrary length, except
for some built-in chunking mechanism which simplifies faster scanning.
The core of the algorithm always starts with knowing the endianness,
then picking up 32 or 64-bit chunks of input data (byte-flipping if
needed) and then extractin the next N bits either from the top of bottom
of the buffer register.
AlLmost by definition, this is not code that a compiler is setup to help
you get correct.
>
> I added a bunch of instructions for dealing with double-width operations.
> The main ISA design decision is whether to have register pair specifiers,
> R0, R2, R4,... or two separate {r_high,r_low} registers.
> In either case the main uArch issue is that now instructions have an extra
> source register and two dest registers, which has a number of consequences.
> But once you bite the bullet on that it simplifies a lot of things,
> like how to deal with carry or overflow without flags,
> full width multiplies, divide producing both quotient and remainder.
Very nice!
This means that you can do integer IMAC(), right?
(hi, lo) = imac(a, b, c); // == a*b+c
The only thing even nicer from the perspective of writing arbitrary
precision library code would be IMAA, i.e. a*b+c+d since that is the
largest combination which is guaranteed to never overflow the double
register target field.
Terje
--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"