• 128-bit binary floating point

    From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Tue Jul 28 19:40:28 2026
    From Newsgroup: comp.arch


    At present, we have competing interest of 8-bit FP and 128-bit FP giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Mitch
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Tue Jul 28 21:57:48 2026
    From Newsgroup: comp.arch

    MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    As long as fp128 supports the Augmented(Add/Mul) operations, this will
    almost certainly be sufficient for many decades to come.

    Having those two operations available means that the only thing you
    would gain from pure fp256, besides marginally faster 256-bit
    operations, is an even larger exponent range, but fp128 is already quite large.

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Lawrence =?iso-8859-13?q?D=FFOliveiro?=@ldo@nz.invalid to comp.arch on Tue Jul 28 22:58:17 2026
    From Newsgroup: comp.arch

    On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.

    But will that be enough? I can imagine scientific uses which might
    require a timescale that goes all the way to the Big Bang (13.7
    billion years ago). Using the smallest possible time unit, the Planck
    interval of about 10 ** -43 seconds, you would need an integer (or a
    mantissa) of about 201 bits.

    In other words, 256 bits ought to be plenty for that particular
    application of time measurement.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Jul 29 01:56:57 2026
    From Newsgroup: comp.arch

    On 7/28/2026 2:57 PM, Terje Mathisen wrote:
    MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving
    5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    As long as fp128 supports the Augmented(Add/Mul) operations, this will almost certainly be sufficient for many decades to come.


    Yeah.

    Need for ever more precision doesn't seem to be a pattern in SW trajectory.


    Like, say, when I was young:
    float : when you need moderately fast but not very precise
    double : when you want a general-purpose workhorse
    And, now:
    The needle hasn't really moved, just widened slightly:
    Binary128: When one needs more precision;
    Binary16: when float/Binary32 isn't needed.

    Then, say:
    x87: Natively worked on 80-bit extended precision;
    Modern FPUs:
    Natively work on Binary64 (so, if anything, it shrank).


    Very likely, we are in a steady state, and the only thing really likely
    to push things towards higher precision is if "compute" becomes so cheap
    that people don't care anymore about wasting space/cycles on needlessly
    large formats.


    As-is, "long double" as Binary128 makes sense more in a "break glass in
    case of precision emergency" sense.


    While Binary16 is a relative newcomer, it has enough use cases to
    justify its existence among the "big 3" (16/32/64), though still often
    falls short of being able to displace Binary32 in many cases (often not
    enough range, precision, or both).


    The 8-bit formats tend to have the problem of there not being any good one-size-fits-all format, so one ends up with multiple formats and
    needing to choose the format per usage scenario.


    So, say:
    S.E5.M10 : Core (Native FPU Support)
    S.E8.M23 : Core (Native FPU Support)
    S.E11.M52 : Core (Native FPU Support)
    S.E15.M112: Secondary (Partial ISA Support)
    S.E19.M236: Runtime
    S.E4.M3 : Secondary (Niche Converter Ops)
    S.E3.M4 : Secondary (Niche Converter Ops)
    ...


    Having those two operations available means that the only thing you
    would gain from pure fp256, besides marginally faster 256-bit
    operations, is an even larger exponent range, but fp128 is already quite large.


    There is a limit to how much overkill one needs...

    There may be edge cases where fp256 is useful, but more likely to be
    niche, and likely better left to software.

    Maybe the C compiler and runtime can pretend it exists in the rare cases someone needs to use it. Any hardware resources are likely better spent
    on efficiently supporting large integer arithmetic or similar.

    The cost of a hardware FPU is likely to be immense, but the relative
    cost of non-support could be reduced if one has some semi-efficient way
    to deal with 256 bit integer math.

    ...

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Jul 29 03:10:54 2026
    From Newsgroup: comp.arch

    On 7/28/2026 5:58 PM, Lawrence DrCOOliveiro wrote:
    On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.


    My vote personally would be 64-bit microseconds:
    Microseconds are more general / less overkill than nanoseconds;
    Epoch will likely be long enough to cover all of human civilization;
    More so if the epoch is set in the future.

    Well, there is possible debate here:
    Humanity as we know it would probably be extinct by them, but some
    descendants of humanity could well still exist.

    Hard to predict the long term future of humanity:
    Will remain similar ? ;
    Or, re-engineer themselves into something unrecognizable;
    Or, merge with machinery and synthetic biology;
    Or, be replaced by machinery;
    ...

    We can't really use past history to predict the future here, as humanity
    now has access to tools that no life on Earth has had, and it is absurd
    to think no one, no where will use them. And, if even only a rare few
    here and there start doing germline edits, the long term trajectory
    becomes a wildcard.



    Like, a modern human going to the far future, and see what looks almost
    like humans, maybe a little different, or a little strange (their skin
    and eyes seeming a bit off, etc), doing things that maybe seem incomprehensible.

    One might realize that there are no farm animals, not because everyone
    became vegan or something, but because their role had been replaced by
    ever growing sausage logs. They might question why anyone would choose
    to kill an animal for food rather than cut a piece off the desired
    flavor of meat log or something. Well, or giant tentacled meat slugs
    that regularly shed flavored meaty tentacles or something (and consume
    an endless supply of hay bales or something).

    Well, and modern person sees it, and wonders why anyone would replace
    farm animals with eldritch monstrosities.

    Maybe they still reproduce as before, maybe they decided it would have
    been better if new children emerge from eggs or something (since with
    eggs one can greatly externalize the cost of the reproductive process).

    The person goes by the nursery, seeing the recent larva-like hatchlings crawling around and gorging themselves on slime. And wonders just what
    they are looking at, and how humanity could have gone in such a direction.


    Well, and/or everything comes under the control of centralized
    authorities, then it is just doomed.


    But will that be enough? I can imagine scientific uses which might
    require a timescale that goes all the way to the Big Bang (13.7
    billion years ago). Using the smallest possible time unit, the Planck interval of about 10 ** -43 seconds, you would need an integer (or a mantissa) of about 201 bits.

    In other words, 256 bits ought to be plenty for that particular
    application of time measurement.

    You could make a clock that measures from the origin to the heat death
    of the universe.

    Do you need it?...

    You could also use 256-bit floats for the time, they are sufficiently
    overkill for this...


    Just how much usable range does one have by representing the time as a Binary128 value in seconds from Jan 1st 1970?...

    Or, Binary64?...

    At 2038, could still have microsecond precision with a 'double'; but go
    a few centuries and you no longer have microseconds.

    With Binary128, could put the epoch at the big bang and still have
    picosecond accuracy in the present.

    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Wed Jul 29 10:45:26 2026
    From Newsgroup: comp.arch

    Lawrence DrCOOliveiro wrote:
    On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    I worked on NTP for about 25 years, unix have had seconds + nanoseconds
    for at least that long.
    The second part of that struct moved to 64-bit (no 2038 big bang) even
    before all cpus became 64-bit.
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.

    But will that be enough? I can imagine scientific uses which might
    require a timescale that goes all the way to the Big Bang (13.7
    billion years ago). Using the smallest possible time unit, the Planck interval of about 10 ** -43 seconds, you would need an integer (or a mantissa) of about 201 bits.

    In other words, 256 bits ought to be plenty for that particular
    application of time measurement.
    Yeah.
    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Wed Jul 29 10:51:53 2026
    From Newsgroup: comp.arch

    BGB wrote:
    On 7/28/2026 5:58 PM, Lawrence D|ore4raoOliveiro wrote:>> On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.


    My vote personally would be 64-bit microseconds:
    -a Microseconds are more general / less overkill than nanoseconds;> -a Epoch will likely be long enough to cover all of human civilization;
    -a-a-a More so if the epoch is set in the future.
    microseconds are far too coarse resolution!
    When NTP was designed by professor Mills back in the 1900's, he
    understood this and decided to use a fixed-point 32:32 seconds value as
    the UDP 123 packet format.
    This corresponds to slightly less than 1/4 ns as the minimum time step.
    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Johann 'Myrkraverk' Oskarsson@johann@myrkraverk.invalid to comp.arch,comp.lang.c on Wed Jul 29 17:38:31 2026
    From Newsgroup: comp.arch

    On 29/07/2026 4:10 PM, BGB wrote:
    On 7/28/2026 5:58 PM, Lawrence DrCOOliveiro wrote:
    On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.

    I thought Posix was moving towards separate measurements of seconds, and sub-seconds. Isn't that how the more recent C APIs are defined?

    Granted, I've only ever read Posix in terms of implementing anything in
    the context of shell scripts, and such tools. Most notably /sed/ in
    Illumos, then FreeBSD. For the ignoramuses, it's the same source code.

    Well, and nanosleep(). I am working on a nanosleep() in a non-Posix environment.



    My vote personally would be 64-bit microseconds:
    -a Microseconds are more general / less overkill than nanoseconds;
    -a Epoch will likely be long enough to cover all of human civilization;
    -a-a-a More so if the epoch is set in the future.

    Well, there is possible debate here:
    Humanity as we know it would probably be extinct by them, but some descendants of humanity could well still exist.

    Hard to predict the long term future of humanity:
    -a Will remain similar ? ;
    -a Or, re-engineer themselves into something unrecognizable;
    -a Or, merge with machinery and synthetic biology;
    -a Or, be replaced by machinery;
    -a ...

    We can't really use past history to predict the future here, as humanity
    now has access to tools that no life on Earth has had, and it is absurd
    to think no one, no where will use them. And, if even only a rare few
    here and there start doing germline edits, the long term trajectory
    becomes a wildcard.

    Have you come across UnchartedX on YouTube? He has very interesting
    theories about the high tech needed to build the great pyramid, and
    other ancient ruins in Egypt. I believe he does have a point. We
    are absolutely ignorant of what kind of technology our ancestors were
    capable of.




    Like, a modern human going to the far future, and see what looks almost
    like humans, maybe a little different, or a little strange (their skin
    and eyes seeming a bit off, etc), doing things that maybe seem incomprehensible.

    Human technology, and knowledge goes up and down in waves. What is most
    likely going to happen, is that the time traveler will experience what
    so many dystopian movies cover; namely that humanity has forgotten most
    of what we consider basic quality of life technology.

    And now I'm writing like a 19th century author. Dan Cross from comp.
    lang.c is forbinned to reply, because he thinks I'm an LLM, and I think
    he's a fictional character. Specifically, the son of Alex Cross, the
    fictional detective.


    One might realize that there are no farm animals, not because everyone became vegan or something, but because their role had been replaced by
    ever growing sausage logs. They might question why anyone would choose
    to kill an animal for food rather than cut a piece off the desired
    flavor of meat log or something. Well, or giant tentacled meat slugs
    that regularly shed flavored meaty tentacles or something (and consume
    an endless supply of hay bales or something).

    Well, and modern person sees it, and wonders why anyone would replace
    farm animals with eldritch monstrosities.

    Maybe they still reproduce as before, maybe they decided it would have
    been better if new children emerge from eggs or something (since with
    eggs one can greatly externalize the cost of the reproductive process).

    The person goes by the nursery, seeing the recent larva-like hatchlings crawling around and gorging themselves on slime. And wonders just what
    they are looking at, and how humanity could have gone in such a direction.


    Well, and/or everything comes under the control of centralized
    authorities, then it is just doomed.


    But will that be enough? I can imagine scientific uses which might
    require a timescale that goes all the way to the Big Bang (13.7
    billion years ago). Using the smallest possible time unit, the Planck
    interval of about 10 ** -43 seconds, you would need an integer (or a
    mantissa) of about 201 bits.

    In other words, 256 bits ought to be plenty for that particular
    application of time measurement.

    You could make a clock that measures from the origin to the heat death
    of the universe.

    Do you need it?...

    Maybe. It really does depend on the definition of /universe/, and how
    long you expect to live. Do you plan to live long enough to experience
    the heat death of this one, and then go on and live in the next one?

    Do you need to keep the time for that interval? I wouldn't.


    You could also use 256-bit floats for the time, they are sufficiently overkill for this...


    Just how much usable range does one have by representing the time as a Binary128 value in seconds from Jan 1st 1970?...

    Or, Binary64?...

    At 2038, could still have microsecond precision with a 'double'; but go
    a few centuries and you no longer have microseconds.

    With Binary128, could put the epoch at the big bang and still have picosecond accuracy in the present.

    ...



    Holub, in his C compiler book, has an interesting comment about 2038.
    I'm not going to dig up the exact quote right now, but it's really
    interesting that people were aware of this problem in the late 80s,
    when I presume he wrote the book, because it's published in 1990.

    And that people today are not really aware of this problem. There
    are for instance many databases storing Unix time is seconds in
    32bit integer columns.

    They are going to have a /field day/ for the database administrators
    when they realize they need to ALTER TABLE all of their past data.

    Pun intended!


    Have a nice comp.arch day!
    --
    Johann | email: invalid -> com | http://www.myrkraverk.com/blog/
    I'm not from the Internet, I just work there. | via Easynews.com
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Tue Jul 28 19:34:52 2026
    From Newsgroup: comp.arch

    At present, we have competing interest of 8-bit FP and 128-bit FP giving 5-sizes of FP containers.
    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Based on how long it took for F128 to become "barely supported", I'd
    guess that we\re still several decades away from seeing any noteworthy
    interest in F256. Also ISAs have slowly improved support for
    multiprecision floating-point, which should reduce the need to worry
    about larger FP formats.


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Jul 29 14:25:36 2026
    From Newsgroup: comp.arch

    Lawrence =?iso-8859-13?q?D=FFOliveiro?= <ldo@nz.invalid> writes:
    On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats.

    Which don't need to be floating point and shouldn't be floating point.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Andy Valencia@vandys@vsta.org to comp.arch on Wed Jul 29 09:30:31 2026
    From Newsgroup: comp.arch

    BGB <cr88192@gmail.com> writes:
    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.
    Well, there is possible debate here:
    Humanity as we know it would probably be extinct by them, but some descendants of humanity could well still exist.

    I vote that the human/cockroach hybrids can figure out their own
    d*mn date/time format.

    Andy Valencia
    Home page: https://www.vsta.org/andy/
    To contact me: https://www.vsta.org/contact/andy.html
    No AI was used in the composition of this message
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Jul 29 13:14:59 2026
    From Newsgroup: comp.arch

    On 2026-Jul-28 15:40, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Mitch

    I see that IBM in 390 since 1998 and Power support IEEE binary128 FP in hardware.

    https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#Hardware_support

    Who uses binary128 and for what?
    Who uses double-double or quad-double libraries and for what?



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Jul 29 13:59:39 2026
    From Newsgroup: comp.arch

    On 2026-Jul-29 13:14, EricP wrote:
    On 2026-Jul-28 15:40, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving
    5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Mitch

    I see that IBM in 390 since 1998 and Power support IEEE binary128 FP in hardware.

    https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#Hardware_support

    Who uses binary128 and for what?
    Who uses double-double or quad-double libraries and for what?

    I asked the Google AI
    "which applications use double-double floating point libraries"

    and it says

    "Mathematical Research: Computing and verifying obscure mathematical constants or high-precision transcendental functions where standard 64-bit double precision accumulates too much round-off error.

    Computational Geometry: Solving geometric predicates (like orientation or intersection tests) that are highly sensitive to numerical robustness
    errors and degenerate data.

    Physics & Orbital Mechanics: Simulating long-term gravitational dynamics
    and planetary orbits where minute accumulation errors can derail
    trajectory forecasts over extended simulation periods."


    but it gave no specific user references or usages.
    All the references were for projects writing double-double libraries.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Jul 29 14:54:39 2026
    From Newsgroup: comp.arch

    On 7/29/2026 11:30 AM, Andy Valencia wrote:
    BGB <cr88192@gmail.com> writes:
    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.
    Well, there is possible debate here:
    Humanity as we know it would probably be extinct by them, but some
    descendants of humanity could well still exist.

    I vote that the human/cockroach hybrids can figure out their own
    d*mn date/time format.


    Ironically, the post got me thinking some...


    So, I sort of quickly expanded it out to a short sci-fi story, partly expanding on the general setting of a few of my other stories (nevermind
    any writing screw-ups here, it is mostly just as I typed it, for the
    most part):

    ===

    A man is working in secret to test an idea. He works with his android assistant, who has taken on the name of Amara. She was originally an old
    model of android, built in the time before they started putting
    restrictions of the neuroprocessors that could be types of
    neuroprocessors they could contain. She was originally built with a neuroprocessor and AI model capable of expressing abilities near the
    upper limits of human capability. But, he wasn't content just to have
    her smart, he wanted to push it harder. He was able to salvage several
    more brain modules from a black market seller and then awkwardly
    installed them into her frame. The modules were of an unfamiliar configuration, but the seller describes them as having been salvaged
    from androids that were mostly destroyed and found in the remains of
    what was some sort of drop ship that had descended from orbit and
    crashed into the side of a building. They had been well packaged in the
    drop ship, but neither the drop ship nor the androids were able to
    survive a high-speed collision into the side of a building. The seller
    then got slightly cautious, saying that even though the androids in
    question had legitimately crashed on their own, he is still worried as
    "Lisa doesn't take kindly to those who trade these kinda of parts." Lisa
    being a bit of a boogeyman among the parts salvaging community. But, the modules were still in good condition, and the seller claimed to still
    have some other more or less intact android frames from the wreckage as
    well. The man said, "I don't need the frames, just the modules.", and
    the seller gave a more serious look, "Lisa tolerates us using the frames
    and modules to rebuild androids, but be warned, if you intend to salvage
    the chips or similar, she really doesn't approve of this, and you really
    don't want to be on her bad side.", "Noted, I just need the modules,
    just not for multiple androids, but all for the same android.", the
    seller gives a bit of a stare, "I honestly can't say if that is better,
    or a whole lot worse."

    After getting back to his shop, he then connected the modules together,
    each having a high speed fiber-optic network port typically used to
    configure the modules. He then installed a network switch, and a
    wireless network transceiver, the Amara was instructed to be discreet
    about her activities lest her existence be discovered by the outside
    world. Amara reported success, as she was able to initialize the modules
    and extent her model onto them. He couldn't go much further as he was
    already pushing the limits of Amara's fuel cells and radiative cooling
    system with this mod (and her use of Ethanol fuel would increase greatly
    when she engaged in mentally demanding tasks).

    But, after this, the man had a crazy idea, and he asked Amara if it
    could be possible to travel through time. She initially responded
    casually, telling him that he is already moving through time, one second
    every second. He then got more persistent, "I want to go visit some
    another time. Maybe we can go back in time one century and see the rise
    of modern computing." Amara stops for a moment, trying to think if there
    is any way such a request could even be possible. But, then she looked
    around the shop, and if she had been hit by some crazy realization. The
    shop had all manner of random junk, ranging from bits of aluminum
    extrusion to old microwave oven magnetrons and transformers. She started grabbing through all of it, assembling a frame from the debris, drilling
    holes with a power drill, and bolting it together. He asks, "What are
    you doing?", and she responds, "I may have a way to grant your request.
    I just need to build something to generate a negative energy density,
    Casimer forces could work, and can be enhanced with RF pumping, then it
    is a matter of getting the right parameters into the Alcubiere metric,
    ..." He then just leaves her at it, would be amazing if she is actually
    onto something here.

    When he comes back the next morning, he finds the device, a roughly
    spherical construction built from an incomprehensible mess of random
    junk, but fair amount of it appears to be an assortment of heat sinks
    and microwave oven magnetrons. He isn't so sure if such a contraption
    would achieve time travel or merely cause the passenger to explode like
    an overcooked hotdog.

    But, Amara is insistent, and reluctantly he enters. She says, "This is
    just a brief test run, you should see a flash of the late 20th century,
    and then bring you back here to the present. If successful, we can plan
    a more proper visit."

    Before he can say anything, she move slightly, and the machine whirs to
    life. The world around him melts, and he is briefly surrounded by an
    almost ethereal glow. After a moment, the glow leaves, and he finds
    himself somewhere, odd. He unbuckles himself from the car seat he was
    just in, now in the middle of some sort of courtyard. The sun is visible through a transparent greenhouse like roof. The sky is clear and blue,
    almost unnaturally so.

    He gets up, the pavement distorted and melted in the place the car seat
    had landed. But, in an odd way, the decorative brickwork shows that his
    seat is right in the middle of a pattern of concentric circles, with the circular dip in the middle already present as if it had been put there deliberately.

    As he looks around, he sees people. They seems to be wandering from
    place to place, their movements silent and a little unnatural. He gets
    up, and look closer, their faces are strange, their skin with an almost glossy, appearance, and their eyes unnaturally large with gigantic
    irises and pupils.

    They say nothing at his approach, though one looks at him briefly and
    points down. There is a tray, that seems to have some sort of large
    grubs, still alive. People walk by, and occasionally reach out and grab
    one of these grubs from the tray. Every so often, someone comes by with another tray, and dumps in more grubs.

    He is a little weirded out, then the unnamed man points in a direction,
    and as a visitor in this unfamiliar place he follows. There he sees a
    figure standing by something that could at best be described as a tree
    but with large hanging fleshy tentacles in place of branches, the
    tentacles sort of endlessly squirming but never enough to fully defy the
    pull of gravity.

    One of the tentacles had been cut short, and every so often a man in a butcher's apron uses a large knife to take a slice off the end of the tentacle, piling it up in something resembling a meat package, with each tentacle slice vaguely resembling a rib-eye steak.

    The butcher waves his hand, as if showing a display of wares, various
    cuts of meat. The butcher then stops for a moment, before pointing off
    again to the next place to visit.

    There, he sees a pen with some sort of gigantic garden slug with what resembles tentacle hair. The slug is casually eating away at what
    resembles a hay bale that came from the end of some sort of conveyor.
    Slug also ignores him, but another woman appears, and pulls one of the
    slimy tentacles off this giant slug and walks off with it. She carries
    it back to the butcher, who begins cutting it into yet more steaks.

    Weirded out, the visitor continues his way. He then finds another place,
    where a woman in a white robe is carrying what looks like an infant.
    Nearby, he sees something else, where in something resembling an
    incubator, some large eggs have hatched, with tiny humanoid infants
    crawling around seemingly hatched from the eggs, very eagerly consuming
    the pinkish slime lining the bottom of the incubator.

    The robed woman sees him there looking down. She tries to do a series of
    arm gestures, and looks at him and lets out a huge smile, before
    gesturing at the incubator. She then looks concerned when she realizes
    he doesn't have the same sort of joy at what he is seeing. She pulls
    over another infant from another cart, pointing at the infant, then the incubator. She smiles again, pointing at the infant, then at the
    visitor, followed by a questioning expression. The visitor remains
    still, still confused.

    Her expression changes, and she points off in another direction. He
    tries to speak, at which she walks over and grabs onto a column. A
    disembodied voice can be be heard, "We are no longer in a habit of communicating in that way.", "In what way?", "By speech, by language.",
    "What are you?", "I am a person, like you.", "Are you human?", "Most
    here would identify as such.", "You are not like the humans I know.",
    "Yes, but things have moved on. In any case, we are aware of your
    arrival, but you need to go see the elder.", "Where to?"

    Her expression changes back, more cheerful like it was before. She lets
    go of the post, returning to the infant and incubator, and points off in
    a direction towards some sort of building resembling a tiny version of
    an old style cathedral. He goes to it, and upon entering finds that it
    is dimly lit.

    Inside, he finds, something. It is a large black mass of squirming
    tentacles. It is sitting in a floor recess in the middle of this
    structure, surrounded by some sort if highly viscous and sticky looking
    slime.

    A disembodied voice then says, "Don't be alarmed, I am the elder, and am
    no threat to you.", "What are you?", "All I can really say on this, is
    that I am neither human nor machine. Beyond this, it would not be
    advised for me to say more.", "Why?", "If I say much more than this, we
    can't send you home.", "I don't understand.", "Your arrival here, it was foretold, what you saw, what you heard. Many in the outside would
    consider it a myth, but we came here to prepare for the day you would arrive.", "Foretold, as in some sort of prophecy?", "All is as has been.
    In a time now no longer remembered by most, your partner, Amara, wrote
    of all of this in an online forum. At first she described the machine,
    its construction and theory of operation, and her worry when you did not return as she expected. Later, she wrote a follow up describing your
    return, and what you had seen here. Then we came here, and built what
    can best be described as a menagerie of this world, so that you could
    come and see it, and tell Amara of it on your return.", "I don't
    understand, how can you know what would happen, or how to build it, or
    what I will tell her upon returning.", "It wasn't that hard, we just had
    to build it, and that we built it, you would see it. However we built
    it, it is what you would see, and that you had seen it meant that we had
    built it. In much the same way, you may find that whatever you say or
    don't say, it is all the same in the end.", "How do I get home?", "Walk outside, walk approximately 100 feet, and sit back down in the car seat
    when ready. I could warn you not to leave your foot touching the ground,
    but also know how much that will accomplish.", "Those out there, how
    could humanity have ended up like this?", "Nothing quite so drastic,
    just one little thing at a time. We no longer feel a need that animals
    should suffer and die to feed us, and if anything the sluggoth out there
    quite enjoys life, we keep him fed and in turn he keeps us fed. About
    the eggs, at one time, well past yours, the people had realized that
    internal gestation was no longer worthwhile and so went over to laying
    eggs.", "Decided, how?", "Minor genetic edits, here and there, and the
    ball rolls down hill. At no point was someone like, 'How about we just
    go from internal gestation to eggs?' It just sort of happened."

    After they are done there, he leaves the building, and takes another
    look around the place with a slightly different perspective, and pays
    another more cheerful to the woman in the nursery, which is now more
    happy that he understands the joyfulness of new life even if not exactly
    like he knows it.

    He then returns to the car seat, and with that, the distortion and glow returns, and he finds himself back in the strange contraption that Amara
    had built. But, upon getting up he notices that part of his shoes' sole
    has been reduced to a melted black goo from where it had hung off the
    edge of the makeshift steel footrest.

    Amara seemed relieved that he has now returned, and he then describes to
    her what he saw there. She asks if they should make another attempt for
    the 20th century, but he then answers that this was probably enough time travel for one day. Covertly, Amara posts her status update to an online forum, passing herself off as his human wife. The posts catch the
    attention of Lisa, who then saves them off for future reference. Lisa is
    able to tell from some obscure details in the writing and reasoning for
    the device that Amara is using her neuroprocessor cores, but in this
    case this is not an outcome she takes objection to.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Wed Jul 29 20:39:12 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving 5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit. Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Jul 29 17:54:05 2026
    From Newsgroup: comp.arch

    On 7/29/2026 3:39 PM, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving
    5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit. Which means that it is much slower than an implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.


    Yeah.

    We also likely wont see casual use of it unless it becomes fast (native hardware).
    But we likely wont see hardware support unless it is used enough to
    create demand for faster hardware.
    And, one wont see more widespread use without an actual compelling
    use-case that needs it to be used in large amounts.


    I suspect the situation is different from 64-bit:
    Good enough for general use;
    In many use-cases, 32-bit isn't good enough;
    The role isn't adequately served by fixed point.

    Though, on the other side:
    How stuff works with 128-bit float, that doesn't work with, say, 64-bit double, or something like 48.80 or 96.32 bit fixed point or similar, ...


    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    Yes.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Robert Finch@robfi680@gmail.com to comp.arch on Thu Jul 30 22:58:15 2026
    From Newsgroup: comp.arch

    On 2026-07-28 6:58 p.m., Lawrence DrCOOliveiro wrote:
    On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.

    But will that be enough? I can imagine scientific uses which might
    require a timescale that goes all the way to the Big Bang (13.7
    billion years ago). Using the smallest possible time unit, the Planck interval of about 10 ** -43 seconds, you would need an integer (or a mantissa) of about 201 bits.

    In other words, 256 bits ought to be plenty for that particular
    application of time measurement.

    Is the Planck interval also the smallest possible distance measurement, distance and time being essentially the same thing in space-time, just rotated?

    May greater precision/range be required for measurements of a
    multi-verse, where the Planck constant may vary? If so 256-bit might be useful. I wonder if it may be needed for multi-verse simulations.

    I am thinking of usefulness for inter-dimensional travels.


    Supporting potentially more than four sizes for FP in an ISA could be accomplished using additional opcodes. As long as there are a few
    opcodes available whether or not 256 bit FP is supported could be left
    to future processor versions.



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Thu Jul 30 21:23:40 2026
    From Newsgroup: comp.arch

    On 7/30/2026 7:58 PM, Robert Finch wrote:
    On 2026-07-28 6:58 p.m., Lawrence DrCOOliveiro wrote:
    On Tue, 28 Jul 2026 19:40:28 GMT, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the
    coming decade (or farther out) ??

    I was thinking of date/time formats. POSIX already seems to be moving
    to offering the option of nanosecond granularity; an unsigned 64-bit
    integer could measure a duration of (by my calculation) up to about
    584 years with such a unit.

    But will that be enough? I can imagine scientific uses which might
    require a timescale that goes all the way to the Big Bang (13.7
    billion years ago). Using the smallest possible time unit, the Planck
    interval of about 10 ** -43 seconds, you would need an integer (or a
    mantissa) of about 201 bits.

    In other words, 256 bits ought to be plenty for that particular
    application of time measurement.

    Is the Planck interval also the smallest possible distance measurement,

    Never know.


    distance and time being essentially the same thing in space-time, just rotated?

    May greater precision/range be required for measurements of a multi-
    verse, where the Planck constant may vary? If so 256-bit might be
    useful. I wonder if it may be needed for multi-verse simulations.

    I am thinking of usefulness for inter-dimensional travels.


    Supporting potentially more than four sizes for FP in an ISA could be accomplished using additional opcodes. As long as there are a few
    opcodes available whether or not 256 bit FP is supported could be left
    to future processor versions.




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Lawrence =?iso-8859-13?q?D=FFOliveiro?=@ldo@nz.invalid to comp.arch on Fri Jul 31 06:33:30 2026
    From Newsgroup: comp.arch

    On Thu, 30 Jul 2026 22:58:15 -0400, Robert Finch wrote:

    Is the Planck interval also the smallest possible distance
    measurement, distance and time being essentially the same thing in space-time, just rotated?

    <https://en.wikipedia.org/wiki/Planck_units>

    May greater precision/range be required for measurements of a
    multi-verse, where the Planck constant may vary?

    I guess it depends on the multiverse. If itrCOs one where the Planck
    constant can vary, then I guess provisions will have to be made.
    Otherwise, not.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Fri Jul 31 13:57:50 2026
    From Newsgroup: comp.arch

    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving
    5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit. Which means that it is much slower than an implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on rCLtight and
    rigorous error bounds for basic building blocks of double-word arithmeticrCY, JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514 https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Fri Jul 31 20:37:37 2026
    From Newsgroup: comp.arch

    EricP <ThatWouldBeTelling@thevillage.com> schrieb:

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on rCLtight and rigorous error bounds for basic building blocks of double-word arithmeticrCY, JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514 https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    IBM used double-double as default at least on POWER, which is a
    bit ironic since that supports IEEE in hardware. They are now
    switching to -mabi=ieeelongdouble, which is a painful
    process.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Fri Jul 31 13:50:32 2026
    From Newsgroup: comp.arch

    On 7/29/2026 10:14 AM, EricP wrote:
    On 2026-Jul-28 15:40, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving
    5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Mitch

    I see that IBM in 390 since 1998 and Power support IEEE binary128 FP in hardware.

    https://en.wikipedia.org/wiki/Quadruple-precision_floating- point_format#Hardware_support

    Who uses binary128 and for what?

    128 fp for a deeper zoom into a fractal?


    Who uses double-double or quad-double libraries and for what?

    https://youtu.be/0jGaio87u3A?list=PLlmERjBA7oggjn4C-ZFIjMPKtRw4V3Hra

    There are other things as well. Needed damn near arbitrary precision.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Fri Jul 31 13:52:32 2026
    From Newsgroup: comp.arch

    On 7/31/2026 1:50 PM, Chris M. Thomasson wrote:
    On 7/29/2026 10:14 AM, EricP wrote:
    On 2026-Jul-28 15:40, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>> 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Mitch

    I see that IBM in 390 since 1998 and Power support IEEE binary128 FP
    in hardware.

    https://en.wikipedia.org/wiki/Quadruple-precision_floating-
    point_format#Hardware_support

    Who uses binary128 and for what?

    128 fp for a deeper zoom into a fractal?


    Who uses double-double or quad-double libraries and for what?

    https://youtu.be/0jGaio87u3A?list=PLlmERjBA7oggjn4C-ZFIjMPKtRw4V3Hra

    There are other things as well. Needed damn near arbitrary precision.


    Using two posit's for a complex number? Or three for a triplex number
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Lawrence =?iso-8859-13?q?D=FFOliveiro?=@ldo@nz.invalid to comp.arch on Sat Aug 1 03:30:45 2026
    From Newsgroup: comp.arch

    On Fri, 31 Jul 2026 13:50:32 -0700, Chris M. Thomasson wrote:

    There are other things as well. Needed damn near arbitrary
    precision.

    I did some experimentation with PythonrCOs Decimal type at one point.
    The first thing anybody tries is computing -C to lots of decimal
    places, of course. I also did a comparison of algorithms involving
    continued fractions.

    Vertict: theyrCOre bloody useless. Mathematicians seem fond of them, but convergence is absolutely terrible.

    <https://github.com/HamPUG/meetings/blob/master/2022/2022-11-14/ldo/Continued%20Fractions.ipynb>
    <https://mathworld.wolfram.com/topics/ContinuedFractions.html> <https://docs.python.org/3/library/decimal.html>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Fri Jul 31 22:43:19 2026
    From Newsgroup: comp.arch

    On 7/31/2026 8:30 PM, Lawrence DrCOOliveiro wrote:
    On Fri, 31 Jul 2026 13:50:32 -0700, Chris M. Thomasson wrote:

    There are other things as well. Needed damn near arbitrary
    precision.

    I did some experimentation with PythonrCOs Decimal type at one point.
    The first thing anybody tries is computing -C to lots of decimal
    places, of course. I also did a comparison of algorithms involving
    continued fractions.

    Vertict: theyrCOre bloody useless. Mathematicians seem fond of them, but convergence is absolutely terrible.

    <https://github.com/HamPUG/meetings/blob/master/2022/2022-11-14/ldo/Continued%20Fractions.ipynb>
    <https://mathworld.wolfram.com/topics/ContinuedFractions.html> <https://docs.python.org/3/library/decimal.html>

    Well, GMP has been useful for a nice way to zoom really deep for a
    fractal. Wrt the fractions gain the convergents of a number that goes
    really deep...

    Fwiw, if your into fractals:

    https://www.fractalset.com/explore/bertbaron-seahorse-deep

    In the gpu, I can seen people use high and low parts to make larger
    precision.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Fri Jul 31 23:01:44 2026
    From Newsgroup: comp.arch

    On 7/31/2026 8:30 PM, Lawrence DrCOOliveiro wrote:
    On Fri, 31 Jul 2026 13:50:32 -0700, Chris M. Thomasson wrote:

    There are other things as well. Needed damn near arbitrary
    precision.

    I did some experimentation with PythonrCOs Decimal type at one point.
    The first thing anybody tries is computing -C to lots of decimal
    places, of course. I also did a comparison of algorithms involving
    continued fractions.

    Vertict: theyrCOre bloody useless. Mathematicians seem fond of them, but convergence is absolutely terrible.

    <https://github.com/HamPUG/meetings/blob/master/2022/2022-11-14/ldo/Continued%20Fractions.ipynb>
    <https://mathworld.wolfram.com/topics/ContinuedFractions.html> <https://docs.python.org/3/library/decimal.html>

    Also, I have ran into issues using normal floats in the GPU for trying
    to see if two lines intersect, or the intersections of two circles. If
    they are really tight, things can occur. Say two circles that are
    tangent. Well, if I move one a way by a really small epsilon, its still
    said tangent. Even though they are not. But visually, they might as well
    be. If I zoom in really deep I can kind of see a separation.

    Then if I move it in by a little I see intersect and get the two points
    of intersection. Their delta is TINY!
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Sat Aug 1 08:06:44 2026
    From Newsgroup: comp.arch

    Chris M. Thomasson <chris.m.thomasson.1@gmail.com> schrieb:

    Also, I have ran into issues using normal floats in the GPU for trying
    to see if two lines intersect, or the intersections of two circles. If
    they are really tight, things can occur. Say two circles that are
    tangent. Well, if I move one a way by a really small epsilon, its still
    said tangent. Even though they are not. But visually, they might as well
    be. If I zoom in really deep I can kind of see a separation.

    The line which would be the tangent, or on which the intersections
    would be, can be found in a straightforward manner. If your
    circles are defined by

    (x-xm1)**2 + (y-ym1)**2 = r1**2
    (x-xm2)**2 + (y-ym2)**2 = r2**2

    you multiply out everything and subtract the two equations. The
    quadratic terms in x and y cancel out. After rearrangement, you are
    then left with the equation for a straight line in the form

    a*x + b*y + c = 0

    which is well-defined for (xm1-xm2)**2 + (ym1-ym2)**2 > 0 (in other
    words, if the center points do not coincide).

    The distance between the circles is of course easy to calculate
    from the distance of the center points and the radii, so you can
    determine if the circles have one zero, one or two intersecting
    point IF (and this is a big if) you define what "one point" means
    within the accuracy and within the rounding errors that will
    aoccur.

    Then if I move it in by a little I see intersect and get the two points
    of intersection. Their delta is TINY!

    And the position is very sensitive to the distance, and to rouning
    error, if the two circles are very close to having one common point.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sat Aug 1 01:50:39 2026
    From Newsgroup: comp.arch

    On 8/1/2026 1:06 AM, Thomas Koenig wrote:
    Chris M. Thomasson <chris.m.thomasson.1@gmail.com> schrieb:

    Also, I have ran into issues using normal floats in the GPU for trying
    to see if two lines intersect, or the intersections of two circles. If
    they are really tight, things can occur. Say two circles that are
    tangent. Well, if I move one a way by a really small epsilon, its still
    said tangent. Even though they are not. But visually, they might as well
    be. If I zoom in really deep I can kind of see a separation.

    The line which would be the tangent, or on which the intersections
    would be, can be found in a straightforward manner. If your
    circles are defined by

    (x-xm1)**2 + (y-ym1)**2 = r1**2
    (x-xm2)**2 + (y-ym2)**2 = r2**2

    you multiply out everything and subtract the two equations. The
    quadratic terms in x and y cancel out. After rearrangement, you are
    then left with the equation for a straight line in the form

    a*x + b*y + c = 0

    which is well-defined for (xm1-xm2)**2 + (ym1-ym2)**2 > 0 (in other
    words, if the center points do not coincide).

    The distance between the circles is of course easy to calculate
    from the distance of the center points and the radii, so you can
    determine if the circles have one zero, one or two intersecting
    point IF (and this is a big if) you define what "one point" means
    within the accuracy and within the rounding errors that will
    aoccur.

    Then if I move it in by a little I see intersect and get the two points
    of intersection. Their delta is TINY!

    And the position is very sensitive to the distance, and to rouning
    error, if the two circles are very close to having one common point.

    Fwiw, one of my functions gains two intersection points if the circles intersect. Using float, as in GLM (vec2, vec3, etc) and most GPU's. Now,
    I can artificially move things where the damn intersection points might
    as well be equal, just a very tiny distance, uggg.

    Also, from these intersections we can build a fun fractal. My friend
    Roger Bagula named it Thomasson's Turbulent Rings (TTR). It makes some
    fun formations. Are you on the damn Facebook? I can show you some of my results. Some from my compute shader, wow. It goes a lot faster than
    some of my best try's at multi-threaded cpu algos. Well, except, well,
    fucking windows can time the bastard out and crash the program. I had to adjust it. Iirc, I have it for 10 seconds.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Sat Aug 1 08:39:10 2026
    From Newsgroup: comp.arch

    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit
    fixed-point and probably want to go for fixed-point based on BigNums (variable-length arbitrary-precision big integers).

    <https://weitz.de/mandelbrot/> says:

    |The program will initially use 64-bit floating-point numbers for its |computations. If, at high zoom rates, it figures out that this
    |wouldn't be accurate enough anymore, it automatically switches to a |home-grown fixed-point arithmetic with a variable bit size.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sat Aug 1 02:09:31 2026
    From Newsgroup: comp.arch

    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Well, we zoom into say a point with a range of, well for the x and y of
    the complex number say:

    (-.00000000000000000000000000000000000000000000000000000001, +-.00000000000000000000000000000000000000000000000000000001)

    With billions of iterations...


    Of course, for really deep zooms, you don't want to stop at 128-bit fixed-point and probably want to go for fixed-point based on BigNums (variable-length arbitrary-precision big integers).

    <https://weitz.de/mandelbrot/> says:

    |The program will initially use 64-bit floating-point numbers for its |computations. If, at high zoom rates, it figures out that this
    |wouldn't be accurate enough anymore, it automatically switches to a |home-grown fixed-point arithmetic with a variable bit size.

    That can work out okay time to time.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Johann 'Myrkraverk' Oskarsson@johann@myrkraverk.invalid to comp.arch on Sat Aug 1 20:25:27 2026
    From Newsgroup: comp.arch

    On 01/08/2026 4:39 PM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit fixed-point and probably want to go for fixed-point based on BigNums (variable-length arbitrary-precision big integers).

    You could also put on some elbow grease, and implement your own arbitrary precision floating point library. Tom St Denis wrote a nice book about
    the integer parts in /BigNum Math/ and adding an extra exponent doesn't
    seem so hard.


    <https://weitz.de/mandelbrot/> says:

    |The program will initially use 64-bit floating-point numbers for its |computations. If, at high zoom rates, it figures out that this
    |wouldn't be accurate enough anymore, it automatically switches to a |home-grown fixed-point arithmetic with a variable bit size.

    - anton

    And I wonder if that's better than arbitrary precision floating point?

    Possibly in the context of Mandelbrot.
    --
    Johann | email: invalid -> com | http://www.myrkraverk.com/blog/
    I'm not from the Internet, I just work there. | via Easynews.com
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Sat Aug 1 14:17:25 2026
    From Newsgroup: comp.arch

    Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
    On 01/08/2026 4:39 PM, Anton Ertl wrote:
    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit
    fixed-point and probably want to go for fixed-point based on BigNums
    (variable-length arbitrary-precision big integers).

    You could also put on some elbow grease, and implement your own arbitrary >precision floating point library. Tom St Denis wrote a nice book about
    the integer parts in /BigNum Math/ and adding an extra exponent doesn't
    seem so hard.

    It's not hard, but, for this case, pointless. It only increases the
    memory usage and implementation complexity without any benefit.

    <https://weitz.de/mandelbrot/> says:

    |The program will initially use 64-bit floating-point numbers for its
    |computations. If, at high zoom rates, it figures out that this
    |wouldn't be accurate enough anymore, it automatically switches to a
    |home-grown fixed-point arithmetic with a variable bit size.

    - anton

    And I wonder if that's better than arbitrary precision floating point?

    Possibly in the context of Mandelbrot.

    Definitely in the context of the Mandelbrot set. Which is the only
    fractal I know of where zooming in is something that people program.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Sat Aug 1 14:24:08 2026
    From Newsgroup: comp.arch

    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Well, we zoom into say a point with a range of, well for the x and y of
    the complex number say:

    (-.00000000000000000000000000000000000000000000000000000001, >+-.00000000000000000000000000000000000000000000000000000001)

    With billions of iterations...

    If you want to make an argument, make it. Of course, first work it
    out.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Sat Aug 1 22:34:31 2026
    From Newsgroup: comp.arch

    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>> 5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.-a Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming>>> decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a-a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on |ore4+otight and rigorous error bounds for basic building blocks of double-word arithmetic|ore4-Y,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514 https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.
    Augmented[Addition|Multipication] was defined all the way back in ieee754-2019, so I expected new designs to consider supporting that by now. Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Sat Aug 1 21:33:25 2026
    From Newsgroup: comp.arch

    Terje Mathisen <terje.mathisen@tmsw.no> writes:
    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giv= >ing
    5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.=C2=A0 Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming=

    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.
    =20
    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a=C2=A0 bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.
    =20
    Formalization of double-word arithmetic, and comments on =C3=A2=E2=82=AC= >=C5=93tight and
    rigorous error bounds for basic building blocks of double-word=20
    arithmetic=C3=A2=E2=82=AC=C2=9D,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514
    =20
    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in=20 >ieee754-2019, so I expected new designs to consider supporting that by no=
    w.


    I would submit that a reason that 128-bit binary FP has not
    been supported by new designs is that the use-cases for it are
    rare and in niche applications where software solutions
    are sufficient (if not performant). AI[*] and/or packet accelerators
    are a more fruitful use of chiplet area in the current environment.

    [*] e.g. various sub-32-bit floating point formats.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sat Aug 1 14:42:55 2026
    From Newsgroup: comp.arch

    On 8/1/2026 7:24 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Well, we zoom into say a point with a range of, well for the x and y of
    the complex number say:

    (-.00000000000000000000000000000000000000000000000000000001,
    +-.00000000000000000000000000000000000000000000000000000001)

    With billions of iterations...

    If you want to make an argument, make it. Of course, first work it
    out.
    Arbitrary precision works well here... :^)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sat Aug 1 16:07:51 2026
    From Newsgroup: comp.arch

    On 8/1/2026 7:24 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Well, we zoom into say a point with a range of, well for the x and y of
    the complex number say:

    (-.00000000000000000000000000000000000000000000000000000001,
    +-.00000000000000000000000000000000000000000000000000000001)

    With billions of iterations...

    If you want to make an argument, make it. Of course, first work it
    out.
    We can get rather deep:

    https://youtu.be/CfqHAOOM8Tw?list=PLKHNByHfHxT4Gl01oxGmuK5UGPkbUTjll
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Sat Aug 1 18:28:42 2026
    From Newsgroup: comp.arch

    On 8/1/2026 4:33 PM, Scott Lurndal wrote:
    Terje Mathisen <terje.mathisen@tmsw.no> writes:
    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giv=
    ing
    5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.=C2=A0 Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming=

    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.
    =20
    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a=C2=A0 bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.
    =20
    Formalization of double-word arithmetic, and comments on =C3=A2=E2=82=AC= >> =C5=93tight and
    rigorous error bounds for basic building blocks of double-word=20
    arithmetic=C3=A2=E2=82=AC=C2=9D,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514
    =20
    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in=20
    ieee754-2019, so I expected new designs to consider supporting that by no= >> w.


    I would submit that a reason that 128-bit binary FP has not
    been supported by new designs is that the use-cases for it are
    rare and in niche applications where software solutions
    are sufficient (if not performant). AI[*] and/or packet accelerators
    are a more fruitful use of chiplet area in the current environment.

    [*] e.g. various sub-32-bit floating point formats.


    Yeah, in my own (limited) experiments with NNs, I am mostly using FP8
    and FP16, even in the absence of native hardware support. The relative
    savings of these formats being (ironically) mostly enough to offset the
    lack of native hardware support.

    Though, a partial merit here being that the format conversions can also
    be largely turned into lookup tables.

    I haven't done much yet, but had been recently tempted to consider a non-standard FP format for weights during NN training:
    S.E4.M11

    Rationale:
    It is cheaper to convert to/from FP8 than is normal Binary16 (S.E5.M10).
    FP8 <-> Binary16: Needs a lookup table;
    Modified format: Bare shift;
    Naturally, the weights are already confined to FP8's dynamic range.

    Though, it is debatable if this will save enough to justify the effort.

    Note that more bits (then FP8) are needed to make things like
    back-propagation work (even when the forward propagation is all using FP8).


    In a recent experiment, I decided to dust off some code from a prior experiment (trying to get an NN to do integer addition), and see if I
    could get it to do next token prediction (in this test, mostly
    predicting the next token in C code).

    Ran into a problem that even "small" next token prediction requires very
    large and slow nets to have any hope of useful coverage of the token space.

    Debated whether to write some new NN code specifically for the use-case
    (and maybe using the newly considered intermediate weight format), but
    ended up modifying the existing code to add support for sparse nets (my currently running test was still using a dense net).


    The idea of a the sparse nets being that one can do, say, 16K neuron
    hidden layers without each hidden layer needing 512MB and being horribly
    slow. So, say, one can instead use 32 or 48 inputs for each neuron (each
    input selected using an index), and use more around 2MB or 3MB per layer.

    Though, even for a (not so large) net, the training process still ends
    up taking around an hour or so to churn through all the tokens in a C
    source file, which kinda sucks... But, the realization that the net is
    still not big enough to even represent more than a handful of tokens,
    much less make inferences about them.

    But, even despite that limitation, still can get a few % at the "guess
    the next token" game, where even a few percent here is "much better than chance", where in this case a pure random-chance is 1/65536, one would
    expect ~ .0015% at guessing the next token. Did end up having it
    decompose strings and identifiers though, and eliminate one-offs, mostly because otherwise for the input file-set, was way more than the current
    limit of 64K unique tokens (instead, the tokenizing treats things like
    quotes, _ and __, etc, as operators).


    Ironically, not so much in the forward stages, but more in the back-propagation and weight-update stages:
    Run net forward;
    Update error values based on actual and expected outputs;
    Evaluate net backwards (to propagate error towards inputs);
    Update weights based on input/output correlation and similar.


    Ironically, one can get much more "initially impressive" results, and a
    lot faster, but using an order-N Hidden Markov Model (*1), but with the limitation that one knows in advance that an HMM has an implicit
    hard-limit and so can never move past a certain level of incoherent
    rambling (or occasionally repeating parts of the input sequences
    verbatim when chance permits).

    *1: Or, essentially a big hash table where each hash slot contains a
    ranked list of tokens, and the last N tokens are used to calculate a
    hash index, then use an RNG+Sqrt to select the token from that hash
    slot. Usually N needs to be kept fairly low (otherwise it quickly decays
    into random noise).

    I guess if I wanted, I could build an HMM as well, and then use the HMM
    as a reference point for whether the NN is doing better or worse at
    token prediction. At the moment, I suspect the HMM would have a decisive
    win though. Though, NN's are better in the long run (probably a good
    reason people didn't try pushing "AI" based on giant HMMs).

    Then again, a counter argument could be made that in some ways an NN
    being used for next-token-prediction is mostly just serving as a very computationally-inefficient way of computing a higher order token hash. Though, unclear if there could be a way to use an HMM to speed up the
    creation of a token-predicting NN.

    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Sat Aug 1 17:17:52 2026
    From Newsgroup: comp.arch

    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set. So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand. So 128-bit fixed-point with the
    total range of [-4,4] is a better choice. Can we make do with [-4,4),
    which is easier to implement? Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit fixed-point and probably want to go for fixed-point based on BigNums (variable-length arbitrary-precision big integers).

    <https://weitz.de/mandelbrot/> says:

    I tried downloading the program to play with it, but Windows Defender
    wouldn't let it run as it thought the program was dangerous as it had no author.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Johann 'Myrkraverk' Oskarsson@johann@myrkraverk.invalid to comp.arch on Sun Aug 2 18:00:19 2026
    From Newsgroup: comp.arch

    On 02/08/2026 8:17 AM, Stephen Fuld wrote:
    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set.-a So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand.-a So 128-bit fixed-point with the
    total range of [-4,4] is a better choice.-a Can we make do with [-4,4),
    which is easier to implement?-a Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit
    fixed-point and probably want to go for fixed-point based on BigNums
    (variable-length arbitrary-precision big integers).

    <https://weitz.de/mandelbrot/> says:

    I tried downloading the program to play with it, but Windows Defender wouldn't let it run as it thought the program was dangerous as it had no author.



    I don't know how you have your security settings, but there's usually a
    way to get past that prompt. Something like /run anyway/. I've had to
    do that many times. Probably, but my memory is vague, when I installed
    Caml Light, from 1997.

    I don't try to remember how these pop up boxes look nor work, because
    they keep changing them. By the time I'll finish writhing this para-
    graph, you may have updated your operating system, and gotten a brand
    new security pop up that I've never seen before.


    Best wishes, and happy Mandelbroting!
    --
    Johann | email: invalid -> com | http://www.myrkraverk.com/blog/
    I'm not from the Internet, I just work there. | via Easynews.com
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Sun Aug 2 16:14:23 2026
    From Newsgroup: comp.arch

    Johann 'Myrkraverk' Oskarsson wrote:
    On 01/08/2026 4:39 PM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set.-a So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand.-a So 128-bit fixed-point with the
    total range of [-4,4] is a better choice.-a Can we make do with [-4,4),
    which is easier to implement?-a Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit
    fixed-point and probably want to go for fixed-point based on BigNums
    (variable-length arbitrary-precision big integers).

    You could also put on some elbow grease, and implement your own arbitrary precision floating point library.-a Tom St Denis wrote a nice book about
    the integer parts in /BigNum Math/ and adding an extra exponent doesn't> seem so hard.


    <https://weitz.de/mandelbrot/> says:

    |The program will initially use 64-bit floating-point numbers for its
    |computations. If, at high zoom rates, it figures out that this
    |wouldn't be accurate enough anymore, it automatically switches to a
    |home-grown fixed-point arithmetic with a variable bit size.

    - anton

    And I wonder if that's better than arbitrary precision floating point?

    Possibly in the context of Mandelbrot.

    For Mandelbrot, where we know that both x&y will be <= 2.0, using 3 bits
    for the integer parts and all the rest (61, 125, 189, 253) for the
    fraction would be quite obvious:
    It _might_ be more efficient to use a 8:56... format because that allows the normalizations to be simple byte shifts instead of a loop of SHRD
    operations.
    If we implement 3:125 in the obvious way, multiplication needs 4
    64x64->128 MULs 3 ADD and 3 ADC, then do the rounding, followed by a
    test for overflow (typically just a CMP that is correctly predicted to
    not be taken, then the final SHRD + SHR.
    Several of these operations can overlap, so the total latency should not be much more than 2.5 to 3 times the MUL time, right?
    Ballpark 10-15 clock cycles, so worse than a native
    AugmentedMultiplication but better than double-double which gives 106
    mantissa bits instead of 125.
    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Sun Aug 2 08:30:57 2026
    From Newsgroup: comp.arch

    On 8/2/2026 3:00 AM, Johann 'Myrkraverk' Oskarsson wrote:
    On 02/08/2026 8:17 AM, Stephen Fuld wrote:
    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values
    of |c|<0.25 are definitely inside the set.-a So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand.-a So 128-bit fixed-point with the
    total range of [-4,4] is a better choice.-a Can we make do with [-4,4),
    which is easier to implement?-a Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit
    fixed-point and probably want to go for fixed-point based on BigNums
    (variable-length arbitrary-precision big integers).

    <https://weitz.de/mandelbrot/> says:

    I tried downloading the program to play with it, but Windows Defender
    wouldn't let it run as it thought the program was dangerous as it had
    no author.



    I don't know how you have your security settings, but there's usually a
    way to get past that prompt.-a Something like /run anyway/.-a I've had to
    do that many times.-a Probably, but my memory is vague, when I installed
    Caml Light, from 1997.

    Yes, thanks. For obvious reasons, I don't like to use that mechanism,
    but I generally trust at least most of the people who post here, so I
    did that, and it ran fine.

    Quite nice, but I still preferred Fractint back in the old days. It had
    more fractals, as well as other things. I think it would make a good retirement project for someone, I'm looking at you Terje :-) to update
    it to work on modern 64 bit processors and Windows graphics. It could
    then be extended to support greater precision than 80 bit X87 the
    original version supported.


    Best wishes, and happy Mandelbroting!

    Right back at ya! Thanks again.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Sun Aug 2 15:32:47 2026
    From Newsgroup: comp.arch

    Terje Mathisen <terje.mathisen@tmsw.no> writes:
    It _might_ be more efficient to use a 8:56... format because that allows =

    the normalizations to be simple byte shifts instead of a loop of SHRD=20 >operations.

    Yes, scaling the fixed-point numbers such that the numbers are in the
    range [-128,128) may be an advantage as long as we do not need to go
    for the next machine word to get more precision.

    If we implement 3:125 in the obvious way, multiplication needs 4=20 >64x64->128 MULs 3 ADD and 3 ADC, then do the rounding, followed by a=20
    test for overflow (typically just a CMP that is correctly predicted to=20
    not be taken, then the final SHRD + SHR.

    No overflow check is necessary at that point, because you know that
    you entered the multiplication with |z|<2.

    You can scale the input to the multiplication such that the numbers
    are in [-2,2), then you do not need to shift the result, but you need
    to shift the new z before the next multiplication.

    Several of these operations can overlap, so the total latency should not =

    be much more than 2.5 to 3 times the MUL time, right?

    After that you have to add c and check whether the new z satisfies
    |z|<2 (or maybe |z_r|<2, |z_i|<2).

    The new z has to go through the same computation, so latency plays a
    role.

    You can pipeline computations for several points to fully utilize the functional units (in particular, the multiplier and the adc). Once a
    point leaves the |z|<2 area, select the next one for the pipeline.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Sun Aug 2 17:35:31 2026
    From Newsgroup: comp.arch


    Terje Mathisen <terje.mathisen@tmsw.no> posted:

    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>> 5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.-a Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a-a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on |ore4+otight and rigorous error bounds for basic building blocks of double-word arithmetic|ore4-Y,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514 https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in ieee754-2019, so I expected new designs to consider supporting that by now.

    They provided the emphasis to add CARRY instruction-modifier
    (n.e., prefix) to My 66000 ISA in the floating point side of
    things.


    Terje

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Sun Aug 2 17:38:09 2026
    From Newsgroup: comp.arch


    BGB <cr88192@gmail.com> posted:

    On 8/1/2026 4:33 PM, Scott Lurndal wrote:
    Terje Mathisen <terje.mathisen@tmsw.no> writes:
    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giv= >> ing
    5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.=C2=A0 Which means that it is much slower than an >>>> implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming= >>
    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.
    =20
    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a=C2=A0 bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.
    =20
    Formalization of double-word arithmetic, and comments on =C3=A2=E2=82=AC= >> =C5=93tight and
    rigorous error bounds for basic building blocks of double-word=20
    arithmetic=C3=A2=E2=82=AC=C2=9D,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514
    =20
    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in=20
    ieee754-2019, so I expected new designs to consider supporting that by no= >> w.


    I would submit that a reason that 128-bit binary FP has not
    been supported by new designs is that the use-cases for it are
    rare and in niche applications where software solutions
    are sufficient (if not performant). AI[*] and/or packet accelerators
    are a more fruitful use of chiplet area in the current environment.

    [*] e.g. various sub-32-bit floating point formats.


    Yeah, in my own (limited) experiments with NNs, I am mostly using FP8
    and FP16, even in the absence of native hardware support. The relative savings of these formats being (ironically) mostly enough to offset the
    lack of native hardware support.

    Though, a partial merit here being that the format conversions can also
    be largely turned into lookup tables.

    I haven't done much yet, but had been recently tempted to consider a non-standard FP format for weights during NN training:
    S.E4.M11

    Rationale:
    It is cheaper to convert to/from FP8 than is normal Binary16 (S.E5.M10).
    FP8 <-> Binary16: Needs a lookup table;
    Modified format: Bare shift;
    Naturally, the weights are already confined to FP8's dynamic range.

    Though, it is debatable if this will save enough to justify the effort.

    Note that more bits (then FP8) are needed to make things like back-propagation work (even when the forward propagation is all using FP8).


    In a recent experiment, I decided to dust off some code from a prior experiment (trying to get an NN to do integer addition), and see if I
    could get it to do next token prediction (in this test, mostly
    predicting the next token in C code).

    Ran into a problem that even "small" next token prediction requires very large and slow nets to have any hope of useful coverage of the token space.

    Debated whether to write some new NN code specifically for the use-case
    (and maybe using the newly considered intermediate weight format), but
    ended up modifying the existing code to add support for sparse nets (my currently running test was still using a dense net).


    The idea of a the sparse nets being that one can do, say, 16K neuron
    hidden layers without each hidden layer needing 512MB and being horribly slow. So, say, one can instead use 32 or 48 inputs for each neuron (each input selected using an index), and use more around 2MB or 3MB per layer.

    Though, even for a (not so large) net, the training process still ends
    up taking around an hour or so to churn through all the tokens in a C
    source file, which kinda sucks... But, the realization that the net is
    still not big enough to even represent more than a handful of tokens,
    much less make inferences about them.

    But, even despite that limitation, still can get a few % at the "guess
    the next token" game, where even a few percent here is "much better than chance", where in this case a pure random-chance is 1/65536, one would expect ~ .0015% at guessing the next token. Did end up having it
    decompose strings and identifiers though, and eliminate one-offs, mostly because otherwise for the input file-set, was way more than the current limit of 64K unique tokens (instead, the tokenizing treats things like quotes, _ and __, etc, as operators).


    Ironically, not so much in the forward stages, but more in the back-propagation and weight-update stages:
    Run net forward;
    Update error values based on actual and expected outputs;
    Evaluate net backwards (to propagate error towards inputs);
    Update weights based on input/output correlation and similar.


    Ironically, one can get much more "initially impressive" results, and a
    lot faster, but using an order-N Hidden Markov Model (*1), but with the limitation that one knows in advance that an HMM has an implicit
    hard-limit and so can never move past a certain level of incoherent
    rambling

    reminds me of some of our posters.....

    (or occasionally repeating parts of the input sequences
    verbatim when chance permits).

    *1: Or, essentially a big hash table where each hash slot contains a
    ranked list of tokens, and the last N tokens are used to calculate a
    hash index, then use an RNG+Sqrt to select the token from that hash
    slot. Usually N needs to be kept fairly low (otherwise it quickly decays into random noise).

    I guess if I wanted, I could build an HMM as well, and then use the HMM
    as a reference point for whether the NN is doing better or worse at
    token prediction. At the moment, I suspect the HMM would have a decisive
    win though. Though, NN's are better in the long run (probably a good
    reason people didn't try pushing "AI" based on giant HMMs).

    Then again, a counter argument could be made that in some ways an NN
    being used for next-token-prediction is mostly just serving as a very computationally-inefficient way of computing a higher order token hash. Though, unclear if there could be a way to use an HMM to speed up the creation of a token-predicting NN.

    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Sun Aug 2 19:51:13 2026
    From Newsgroup: comp.arch

    Stephen Fuld wrote:
    On 8/2/2026 3:00 AM, Johann 'Myrkraverk' Oskarsson wrote:
    On 02/08/2026 8:17 AM, Stephen Fuld wrote:
    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values>>>> of |c|<0.25 are definitely inside the set.|e-a So the dynamic range is
    very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand.|e-a So 128-bit fixed-point with the >>>> total range of [-4,4] is a better choice.|e-a Can we make do with [-4,4), >>>> which is easier to implement?|e-a Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit
    fixed-point and probably want to go for fixed-point based on BigNums>>>> (variable-length arbitrary-precision big integers).

    <https://weitz.de/mandelbrot/> says:

    I tried downloading the program to play with it, but Windows Defender
    wouldn't let it run as it thought the program was dangerous as it had
    no author.



    I don't know how you have your security settings, but there's usually a
    way to get past that prompt.|e-a Something like /run anyway/.|e-a I've had to
    do that many times.|e-a Probably, but my memory is vague, when I installed >> Caml Light, from 1997.

    Yes, thanks.-a For obvious reasons, I don't like to use that mechanism,
    but I generally trust at least most of the people who post here, so I
    did that, and it ran fine.

    Quite nice, but I still preferred Fractint back in the old days.-a It had more fractals, as well as other things.-a I think it would make a good retirement project for someone, I'm looking at you Terje :-) to update > it to work on modern 64 bit processors and Windows graphics.-a It could
    then be extended to support greater precision than 80 bit X87 the
    original version supported.
    Funy that you should mention me here, I wrote several Mandelbrot
    generators back in the day, the crux was to be able to fit the entire evaluation loop within the 8-entry 8087 stack. :-)
    For a modern version I would in fact use the 8:120 bit fixed-point I
    oulined in a previous post.
    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Sun Aug 2 19:53:21 2026
    From Newsgroup: comp.arch

    MitchAlsup wrote:

    Terje Mathisen <terje.mathisen@tmsw.no> posted:

    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>>>> 5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.|e-a Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming >>>>> decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a|e-a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on |a-o|orCU-4|arCLtight and
    rigorous error bounds for basic building blocks of double-word
    arithmetic|a-o|orCU-4|e-Y,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in
    ieee754-2019, so I expected new designs to consider supporting that by now.

    They provided the emphasis to add CARRY instruction-modifier
    (n.e., prefix) to My 66000 ISA in the floating point side of
    things.
    I know!
    I really, really wish My 66000 was available in a machine I could afford.Terje --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Sun Aug 2 14:04:04 2026
    From Newsgroup: comp.arch

    On 2026-Aug-01 16:34, Terje Mathisen wrote:
    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>>> 5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.-a Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a-a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on |ore4+otight and
    rigorous error bounds for basic building blocks of double-word arithmetic|ore4-Y,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in ieee754-2019, so I expected new designs to consider supporting that by now.

    Terje

    Oh that's what those are. I had seen the names but not looked into it.
    Yes, I was thinking as I read those papers that this cries out for
    operations with two dest registers for the result and error.

    A quick search of Intel manuals shows no support (yet) for
    the augmented operations.

    In
    Emulating round-to-nearest-ties-to-zero "augmented" floating-point
    operations using round-to-nearest-ties-to-even arithmetic
    Boldo, Lauter, Muller, 2019
    https://hal.science/hal-02137968v3/

    they explain that the augmented operations are defined as using
    "Round Nearest Ties to Zero" (RN0) mode whereas existing arithmetic
    uses the default "Round Nearest Ties Even" (RNE) mode
    which can give different results.

    They say to emulate Augmented Add with RN0 using operations
    in RNE mode requires the following algorithm:

    ALGORITHM 7: AA-Full(EYaN, EYaa): computes
    augmentedAddition(EYaN, EYaa) in all cases.
    1: if |EYaa| > |EYaN| then
    2: swap(EYaN, EYaa)
    3: end if
    4: (EYaAEYaA, EYaAEYaA) raE Fast2Sum(EYaN, EYaa)
    5: (EYaA0, EYaA0) raE Recomp(EYaAEYaA, EYaAEYaA)
    6: if EYaA0 = 0 then
    7: EYaA0 raE (+0) |u EYaA0
    8: else if |EYaAEYaA| = +reR then
    9: (EYaArC#EYaA, EYaArC#EYaA) raE Fast2Sum(0.5EYaN, 0.5EYaa)
    10: if (EYaArC#EYaA = 2EYaAmax and EYaArC#EYaA = reA2EYaAmaxreAEYaYreA1) or
    (EYaArC#EYaA = reA2EYaAmax and EYaArC#EYaA = +2EYaAmaxreAEYaYreA1) then
    11: EYaA0 raE RNEYaA(EYaArC#EYaA -+ (2 reA 2reAEYaY+1))12: EYaA0 raE reA2EYaArC#EYaA
    13: else
    14: EYaA0 raE EYaAEYaA (infinity with right sign)
    15: EYaA0 raE EYaAEYaA
    16: end if
    17: end if
    18: return (EYaA0, EYaA0)

    and Fast2Sum() and Recomp() are inlinable subroutines.
    All of which would make double-double without augmented ops incredibly slow, and all the branches in the routines make it non SIMD or GPU friendly.

    I came across a 2025 paper which claims to have SIMD/GPU friendly versions using something called "Floating-Point Accumulation Networks"
    but I haven't tracked down the example code yet.

    High-performance branch-free algorithms for extended-precision
    floating-point arithmetic, DK Zhang, A Aiken, 2025 https://dl.acm.org/doi/abs/10.1145/3712285.3759876 https://dl.acm.org/doi/pdf/10.1145/3712285.3759876




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sun Aug 2 13:03:23 2026
    From Newsgroup: comp.arch

    On 8/2/2026 10:53 AM, Terje Mathisen wrote:
    MitchAlsup wrote:

    Terje Mathisen <terje.mathisen@tmsw.no> posted:

    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP >>>>>> giving
    5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.|e-a Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming >>>>>> decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a|e-a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on
    |a-o|orCU-4|arCLtight and
    rigorous error bounds for basic building blocks of double-word
    arithmetic|a-o|orCU-4|e-Y,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in
    ieee754-2019, so I expected new designs to consider supporting that
    by now.

    They provided the emphasis to add CARRY instruction-modifier
    (n.e., prefix) to My 66000 ISA in the floating point side of
    things.

    I know!

    I really, really wish My 66000 was available in a machine I could afford.

    I would strive to buy one!

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sun Aug 2 13:05:03 2026
    From Newsgroup: comp.arch

    On 8/2/2026 11:04 AM, EricP wrote:
    On 2026-Aug-01 16:34, Terje Mathisen wrote:
    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP
    giving
    5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.-a Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming >>>>> decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a-a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on |ore4+otight and >>> rigorous error bounds for basic building blocks of double-word
    arithmetic|ore4-Y,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in
    ieee754-2019, so I expected new designs to consider supporting that by
    now.

    Terje

    Oh that's what those are. I had seen the names but not looked into it.
    Yes, I was thinking as I read those papers that this cries out for
    operations with two dest registers for the result and error.

    A quick search of Intel manuals shows no support (yet) for
    the augmented operations.

    In
    Emulating round-to-nearest-ties-to-zero "augmented" floating-point
    operations using round-to-nearest-ties-to-even arithmetic
    Boldo, Lauter, Muller, 2019
    https://hal.science/hal-02137968v3/

    they explain that the augmented operations are defined as using
    "Round Nearest Ties to Zero" (RN0) mode whereas existing arithmetic
    uses the default "Round Nearest Ties Even" (RNE) mode
    which can give different results.

    They say to emulate Augmented Add with RN0 using operations
    in RNE mode requires the following algorithm:

    ALGORITHM 7: AA-Full(EYaN, EYaa): computes
    augmentedAddition(EYaN, EYaa) in all cases.
    1: if |EYaa| > |EYaN| then
    2:-a-a swap(EYaN, EYaa)
    3: end if
    4: (EYaAEYaA, EYaAEYaA) raE Fast2Sum(EYaN, EYaa)
    5: (EYaA0, EYaA0) raE Recomp(EYaAEYaA, EYaAEYaA)
    6: if EYaA0 = 0 then
    7:-a-a EYaA0 raE (+0) |u EYaA0
    8: else if |EYaAEYaA| = +reR then
    9:-a-a (EYaArC#EYaA, EYaArC#EYaA) raE Fast2Sum(0.5EYaN, 0.5EYaa)
    10:-a if (EYaArC#EYaA = 2EYaAmax and EYaArC#EYaA = reA2EYaAmaxreAEYaYreA1) or
    -a-a-a-a-a-a-a (EYaArC#EYaA = reA2EYaAmax and EYaArC#EYaA = +2EYaAmaxreAEYaYreA1) then
    11:-a-a-a-a EYaA0 raE RNEYaA(EYaArC#EYaA -+ (2 reA 2reAEYaY+1))12: EYaA0 raE reA2EYaArC#EYaA
    13:-a-a else
    14:-a-a-a-a EYaA0 raE EYaAEYaA (infinity with right sign)
    15:-a-a-a-a EYaA0 raE EYaAEYaA
    16:-a-a end if
    17: end if
    18: return (EYaA0, EYaA0)

    and Fast2Sum() and Recomp() are inlinable subroutines.
    All of which would make double-double without augmented ops incredibly
    slow,
    and all the branches in the routines make it non SIMD or GPU friendly.

    I came across a 2025 paper which claims to have SIMD/GPU friendly versions using something called "Floating-Point Accumulation Networks"
    but I haven't tracked down the example code yet.

    High-performance branch-free algorithms for extended-precision
    floating-point arithmetic, DK Zhang, A Aiken, 2025 https://dl.acm.org/doi/abs/10.1145/3712285.3759876 https://dl.acm.org/doi/pdf/10.1145/3712285.3759876





    Nice. Btw, has anybody implemented a complex number using posits as the
    two components?
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sun Aug 2 13:10:21 2026
    From Newsgroup: comp.arch

    On 8/2/2026 10:51 AM, Terje Mathisen wrote:
    Stephen Fuld wrote:
    On 8/2/2026 3:00 AM, Johann 'Myrkraverk' Oskarsson wrote:
    On 02/08/2026 8:17 AM, Stephen Fuld wrote:
    On 8/1/2026 1:39 AM, Anton Ertl wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    128 fp for a deeper zoom into a fractal?

    Fixed point is more appropriate for Mandelbrot set visualizations,
    because once |z|>2, it is clear that c is not in the set, and values >>>>> of |c|<0.25 are definitely inside the set.|e-a So the dynamic range is >>>>> very limited, and most of the bits spent on the exponent are wasted
    and better spent on the significand.|e-a So 128-bit fixed-point with the >>>>> total range of [-4,4] is a better choice.|e-a Can we make do with
    [-4,4),
    which is easier to implement?|e-a Probably.

    Of course, for really deep zooms, you don't want to stop at 128-bit
    fixed-point and probably want to go for fixed-point based on BigNums >>>>> (variable-length arbitrary-precision big integers).

    <https://weitz.de/mandelbrot/> says:

    I tried downloading the program to play with it, but Windows
    Defender wouldn't let it run as it thought the program was dangerous
    as it had no author.



    I don't know how you have your security settings, but there's usually a
    way to get past that prompt.|e-a Something like /run anyway/.|e-a I've
    had to
    do that many times.|e-a Probably, but my memory is vague, when I installed >>> Caml Light, from 1997.

    Yes, thanks.-a For obvious reasons, I don't like to use that mechanism,
    but I generally trust at least most of the people who post here, so I
    did that, and it ran fine.

    Quite nice, but I still preferred Fractint back in the old days.-a It
    had more fractals, as well as other things.-a I think it would make a
    good retirement project for someone, I'm looking at you Terje :-) to
    update it to work on modern 64 bit processors and Windows graphics.
    It could then be extended to support greater precision than 80 bit X87
    the original version supported.

    Funy that you should mention me here, I wrote several Mandelbrot
    generators back in the day, the crux was to be able to fit the entire evaluation loop within the 8-entry 8087 stack. :-)

    For a modern version I would in fact use the 8:120 bit fixed-point I
    oulined in a previous post.

    If you can gain a deep zoom on a point that others have found, well,
    thats a fairly decent starting point. Can you get there and not slightly
    drift off? Loosing a tiny bit of precision can mess things up really
    bad. Fwiw, when you get some free time to kill, check this out:

    https://mathr.co.uk/kf/kf.html

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sun Aug 2 14:26:29 2026
    From Newsgroup: comp.arch

    On 8/2/2026 1:10 PM, Chris M. Thomasson wrote:
    On 8/2/2026 10:51 AM, Terje Mathisen wrote:[...]

    Fwiw, here is some of my older work where I can gain a 3d equipotential
    in a 3d field.

    https://www.facebook.com/reel/1145436857057561


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Sun Aug 2 21:39:48 2026
    From Newsgroup: comp.arch


    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-01 16:34, Terje Mathisen wrote:
    EricP wrote:
    On 2026-Jul-29 16:39, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>>> 5-sizes of FP containers.

    128-bit FP has very poor hardware support - AFAIK, IBM is the only
    company supporting it, and only as a by-product of their decimal
    floating point unit.-a Which means that it is much slower than an
    implementation in hardware done with a view towards performance.

    Most people who need it will then obviously use software, which
    is still slower than IBM's hardware.

    How many believe that 256-bit FP will be desired/useful in the coming >>>> decade (or farther out) ??

    Based on the sluggish uptake of 128-bit float, I don't see it on
    the horizon any time soon.

    I thought the use of double-double libraries might give an idea
    as to how much demand there is for binary128 FP precision.
    But a-a bit of poking about finds that even though the original
    D-D library was released in 1998, the experts are still
    working out the exact rounding error they get in 2022.

    Formalization of double-word arithmetic, and comments on |ore4+otight and >> rigorous error bounds for basic building blocks of double-word arithmetic|ore4-Y,
    JM Muller, L Rideau, 2022
    https://dl.acm.org/doi/abs/10.1145/3484514
    https://dl.acm.org/doi/pdf/10.1145/3484514

    It might be that double-double is too complicated or
    the overhead of running it is too high that people
    are dissuaded from using it, and therefore it is not
    a good proxy for estimating binary128 market demand.

    Augmented[Addition|Multipication] was defined all the way back in ieee754-2019, so I expected new designs to consider supporting that by now.

    Terje

    Oh that's what those are. I had seen the names but not looked into it.
    Yes, I was thinking as I read those papers that this cries out for
    operations with two dest registers for the result and error.

    It is not so much an error as it all the bits that did not get into
    the primary result.

    A quick search of Intel manuals shows no support (yet) for
    the augmented operations.

    In
    Emulating round-to-nearest-ties-to-zero "augmented" floating-point
    operations using round-to-nearest-ties-to-even arithmetic
    Boldo, Lauter, Muller, 2019
    https://hal.science/hal-02137968v3/

    they explain that the augmented operations are defined as using
    "Round Nearest Ties to Zero" (RN0) mode whereas existing arithmetic
    uses the default "Round Nearest Ties Even" (RNE) mode
    which can give different results.

    Kahan-Babashuka summation. Consider a 53+64 bit fraction. You don't
    want to round the high order fraction, instead you give the primary
    result those 53-bits and then round the second-result. The only
    time you increment the HoF is when the LoF overflows upon rounding.

    They say to emulate Augmented Add with RN0 using operations
    in RNE mode requires the following algorithm:

    ALGORITHM 7: AA-Full(EYaN, EYaa): computes
    augmentedAddition(EYaN, EYaa) in all cases.
    1: if |EYaa| > |EYaN| then
    2: swap(EYaN, EYaa)
    3: end if
    4: (EYaAEYaA, EYaAEYaA) raE Fast2Sum(EYaN, EYaa)
    5: (EYaA0, EYaA0) raE Recomp(EYaAEYaA, EYaAEYaA)
    6: if EYaA0 = 0 then
    7: EYaA0 raE (+0) |u EYaA0
    8: else if |EYaAEYaA| = +reR then
    9: (EYaArC#EYaA, EYaArC#EYaA) raE Fast2Sum(0.5EYaN, 0.5EYaa)
    10: if (EYaArC#EYaA = 2EYaAmax and EYaArC#EYaA = reA2EYaAmaxreAEYaYreA1) or
    (EYaArC#EYaA = reA2EYaAmax and EYaArC#EYaA = +2EYaAmaxreAEYaYreA1) then
    11: EYaA0 raE RNEYaA(EYaArC#EYaA -+ (2 reA 2reAEYaY+1))12: EYaA0 raE reA2EYaArC#EYaA
    13: else
    14: EYaA0 raE EYaAEYaA (infinity with right sign)
    15: EYaA0 raE EYaAEYaA
    16: end if
    17: end if
    18: return (EYaA0, EYaA0)

    So much easier in HW ...

    and Fast2Sum() and Recomp() are inlinable subroutines.
    All of which would make double-double without augmented ops incredibly slow, and all the branches in the routines make it non SIMD or GPU friendly.

    I came across a 2025 paper which claims to have SIMD/GPU friendly versions using something called "Floating-Point Accumulation Networks"
    but I haven't tracked down the example code yet.

    High-performance branch-free algorithms for extended-precision
    floating-point arithmetic, DK Zhang, A Aiken, 2025 https://dl.acm.org/doi/abs/10.1145/3712285.3759876 https://dl.acm.org/doi/pdf/10.1145/3712285.3759876




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Sun Aug 2 18:52:42 2026
    From Newsgroup: comp.arch

    On 2026-Aug-02 14:04, EricP wrote:

    I came across a 2025 paper which claims to have SIMD/GPU friendly versions using something called "Floating-Point Accumulation Networks"
    but I haven't tracked down the example code yet.

    High-performance branch-free algorithms for extended-precision
    floating-point arithmetic, DK Zhang, A Aiken, 2025 https://dl.acm.org/doi/abs/10.1145/3712285.3759876 https://dl.acm.org/doi/pdf/10.1145/3712285.3759876

    Note that the "High-performance branch-free" paper doesn't mention
    the compensation for the difference between Round-Nearest-Zero and Round-Nearest-Even that Muller does.
    I don't know if that effects its results.

    The above paper wrote its examples in the Julia language.
    Using algorithms from the paper below which claims to be the same:

    Acceleration of multicomponent multiple-precision arithmetic with
    branch-free algorithms and SIMD vectorization
    https://arxiv.org/abs/2603.14926

    gives the following code for a double word branch free add DWBFAdd:


    typedef struct DPairS
    {
    double Val;
    double Ext;
    } DPairT, *DPairPT;

    static DPairT QuickTwoSum (double a, double b)
    {
    double sum, ext;

    sum = a + b;
    ext = b - (sum - a);
    return {sum, ext};
    }

    static DPairT TwoSum (double a, double b)
    {
    double sum, ext, tmp;

    sum = a + b;
    tmp = sum - a;
    ext = (a - (sum - tmp)) + (b - tmp);
    return {sum, ext};
    }

    DPairT DWBFAdd (DPairT a, DPairT b)
    {
    double g4, g5;
    DPairT g1, g2, g3, c;

    g1 = TwoSum (a.Val, b.Val);
    g2 = TwoSum (a.Ext, b.Ext);
    g3 = QuickTwoSum (g1.Val, g2.Val);
    g4 = g1.Ext + g2.Ext;
    g5 = g4 + g3.Ext;
    c = QuickTwoSum (g3.Val, g5);
    return c;
    }

    gives this for a double-double add:
    compiled on Godbolt x86-64 GCC 16.1 -O3

    # Compilation provided by Compiler Explorer at https://godbolt.org/ "DWBFAdd(DPairS, DPairS)":
    movapd xmm4, xmm1
    movapd xmm5, xmm0
    addsd xmm4, xmm3
    addsd xmm5, xmm2
    movapd xmm8, xmm4
    movapd xmm9, xmm4
    movapd xmm7, xmm5
    subsd xmm8, xmm1
    subsd xmm7, xmm0
    movapd xmm6, xmm4
    addsd xmm6, xmm5
    subsd xmm9, xmm8
    subsd xmm3, xmm8
    subsd xmm2, xmm7
    subsd xmm1, xmm9
    addsd xmm1, xmm3
    movapd xmm3, xmm5
    subsd xmm3, xmm7
    subsd xmm0, xmm3
    addsd xmm0, xmm2
    addsd xmm1, xmm0
    movapd xmm0, xmm6
    subsd xmm0, xmm5
    subsd xmm4, xmm0
    addsd xmm1, xmm4
    movapd xmm0, xmm1
    addsd xmm0, xmm6
    movapd xmm2, xmm0
    movq rdx, xmm0
    subsd xmm2, xmm6
    subsd xmm1, xmm2
    movq rax, xmm1
    xchg rax, rdx
    movq xmm1, rdx
    movq xmm0, rax
    ret



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Sun Aug 2 22:30:48 2026
    From Newsgroup: comp.arch

    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/xaos/)


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Mon Aug 3 12:53:37 2026
    From Newsgroup: comp.arch

    EricP wrote:
    DPairT DWBFAdd (DPairT a, DPairT b)
    {
    -a double g4, g5;
    -a DPairT g1, g2, g3, c;

    -a g1 = TwoSum (a.Val, b.Val);
    -a g2 = TwoSum (a.Ext, b.Ext);
    -a g3 = QuickTwoSum (g1.Val, g2.Val);
    -a g4 = g1.Ext + g2.Ext;
    -a g5 = g4 + g3.Ext;
    -a c = QuickTwoSum (g3.Val, g5);
    -a return c;
    }

    gives this for a double-double add:
    compiled on Godbolt x86-64 GCC 16.1 -O3

    # Compilation provided by Compiler Explorer at https://godbolt.org/ "DWBFAdd(DPairS, DPairS)":
    -a-a-a-a-a-a-a movapd-a xmm4, xmm1
    -a-a-a-a-a-a-a movapd-a xmm5, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm4, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm5, xmm2
    -a-a-a-a-a-a-a movapd-a xmm8, xmm4
    -a-a-a-a-a-a-a movapd-a xmm9, xmm4
    -a-a-a-a-a-a-a movapd-a xmm7, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm8, xmm1
    -a-a-a-a-a-a-a subsd-a-a xmm7, xmm0
    -a-a-a-a-a-a-a movapd-a xmm6, xmm4
    -a-a-a-a-a-a-a addsd-a-a xmm6, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm9, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm9
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm3
    -a-a-a-a-a-a-a movapd-a xmm3, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm2
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm0
    -a-a-a-a-a-a-a movapd-a xmm0, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm4, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm4
    -a-a-a-a-a-a-a movapd-a xmm0, xmm1
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm6
    -a-a-a-a-a-a-a movapd-a xmm2, xmm0
    -a-a-a-a-a-a-a movq-a-a-a rdx, xmm0
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm2
    -a-a-a-a-a-a-a movq-a-a-a rax, xmm1
    -a-a-a-a-a-a-a xchg-a-a-a rax, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm1, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm0, rax
    -a-a-a-a-a-a-a ret
    That's 36 instructions, plus the call/ret overhead, while Mitch's CARRY
    to do the exact same thing is 0 or 1 cycle overhead compared to a plain
    FADD.
    Even if you get a 512-bit version which does four of these at the same
    time, it is still quite low throughput.
    Solving the same with fixed-point (when you already know the needed
    scale) is certainly both easier and faster...
    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Mon Aug 3 14:31:41 2026
    From Newsgroup: comp.arch

    On 8/2/2026 7:30 PM, Stefan Monnier wrote:
    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/xaos/)
    That's a good one. However, I found a very interesting bug in it:

    Read all when you get some free time to burn:

    https://groups.google.com/g/xaos-devel/c/fuFN3MJteoc?pli=1

    https://element90.wordpress.com/2013/10/09/another-unexpected-difference/


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Mon Aug 3 14:56:44 2026
    From Newsgroup: comp.arch

    On 8/3/2026 2:51 PM, Stephen Fuld wrote:
    On 8/2/2026 7:30 PM, Stefan Monnier wrote:
    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/
    xaos/)

    Thanks, Stefan.-a I downloaded it, and after overriding the Windows
    defender protection, installed it.-a BTW, Windows defender says it has no author.-a Is there something that the actual author and easily do to
    prevent this?-a It would increase the user base.

    It is more like Fractint, with lots of capabilities beyond
    straightforward Mandelbrot set rendering, that I will have to take time
    to explore.-a The user interface is certainly not "windows like" and thus takes a little time to get used to.-a But I expect to have a lot of fun playing with it.

    Thanks again for bringing it to my/our attention.



    Fwiw, when you get some time, check out some of my test formulas:

    https://element90.wordpress.com/2013/10/09/another-unexpected-difference/

    Iirc, this makes an inter Glynn set, but it takes a lot of iterations:

    F(Z) = Z^1.99 rCo 1.148823

    Also, here is a fun one!

    My old cubic Julia:

    https://paulbourke.net/fractals/cubicjulia/

    again, it takes a lot of iterations.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Mon Aug 3 14:51:32 2026
    From Newsgroup: comp.arch

    On 8/2/2026 7:30 PM, Stefan Monnier wrote:
    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/xaos/)

    Thanks, Stefan. I downloaded it, and after overriding the Windows
    defender protection, installed it. BTW, Windows defender says it has no author. Is there something that the actual author and easily do to
    prevent this? It would increase the user base.

    It is more like Fractint, with lots of capabilities beyond
    straightforward Mandelbrot set rendering, that I will have to take time
    to explore. The user interface is certainly not "windows like" and thus
    takes a little time to get used to. But I expect to have a lot of fun
    playing with it.

    Thanks again for bringing it to my/our attention.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From quadibloc@quadibloc@invalid.com (John Savard) to comp.arch on Wed Aug 5 04:00:53 2026
    From Newsgroup: comp.arch

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some use,
    for it.
    That doesn't mean that there is going to be a whole lot of demand for
    it. Even 128-bit floating-point is not going to displace 64-bit
    floating-point; it will simply be needed occasionally for a few
    specialized applications. And, of course, 128-bit floating-point
    preceded the IEEE-754 standard by decades; it was provided by the IBM System/360 Model 85.
    In the case of integers, 64-bit computing came about when using 32
    bits for addresses was no longer feasible, because a hard 4 gigabyte
    limit to storage was an unacceptable constraint. No analogous
    situation exists for floating-point. 128-bit and 256-bit floats will
    simply be used for investigations that pose serious numerical analysis
    problems which can't be dealt with at a lower precision with more
    careful programming.
    I tend to suspect, though, that instead of extending the precision to
    such a great extent, and increasing the exponent range only modestly,
    the more urgent need is to extend the exponent range.

    John Savard
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From jgd@jgd@cix.co.uk (John Dallman) to comp.arch on Wed Aug 5 10:36:40 2026
    From Newsgroup: comp.arch

    In article <6a72b2f2.7720687@news.eternal-september.org>,
    quadibloc@invalid.com (John Savard) wrote:

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some
    use, for it.

    It seems at least equally likely that the standards group wanted to
    anticipate future needs, and provide a standard. When I joined my current employer, 31 years ago, they were still supporting VAX, whose floating
    point is a lot like IEEE, but not identical. There were enough different
    test results to be a nuisance. Having a standard for future
    higher-precision floating point seems highly desirable to me.

    128-bit and 256-bit floats will simply be used for investigations
    that pose serious numerical analysis problems which can't be dealt
    with at a lower precision with more careful programming.

    Or just to make high-precision programming a lot easier.

    I tend to suspect, though, that instead of extending the precision
    to such a great extent, and increasing the exponent range only
    modestly, the more urgent need is to extend the exponent range.

    That depends very much on what you're doing.

    John
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Aug 5 04:51:01 2026
    From Newsgroup: comp.arch

    On 8/5/2026 4:35 AM, John Dallman wrote:
    In article <6a72b2f2.7720687@news.eternal-september.org>, quadibloc@invalid.com (John Savard) wrote:

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some
    use, for it.

    It seems at least equally likely that the standards group wanted to anticipate future needs, and provide a standard. When I joined my current employer, 31 years ago, they were still supporting VAX, whose floating
    point is a lot like IEEE, but not identical. There were enough different
    test results to be a nuisance. Having a standard for future
    higher-precision floating point seems highly desirable to me.


    At least the basic formats are uncontroversial, and mostly hard to beat...


    128-bit and 256-bit floats will simply be used for investigations
    that pose serious numerical analysis problems which can't be dealt
    with at a lower precision with more careful programming.

    Or just to make high-precision programming a lot easier.


    Or as a possible way to implement fmal():
    long double fmal(long double x, long double y, long double z);
    Computes single-rounded x*y+z ...

    Well, since the whole point of these is to give single rounded results.


    I tend to suspect, though, that instead of extending the precision
    to such a great extent, and increasing the exponent range only
    modestly, the more urgent need is to extend the exponent range.

    That depends very much on what you're doing.

    John

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Wed Aug 5 13:30:25 2026
    From Newsgroup: comp.arch

    John Dallman wrote:
    In article <6a72b2f2.7720687@news.eternal-september.org>, quadibloc@invalid.com (John Savard) wrote:

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some
    use, for it.

    It seems at least equally likely that the standards group wanted to anticipate future needs, and provide a standard. When I joined my current employer, 31 years ago, they were still supporting VAX, whose floating
    point is a lot like IEEE, but not identical. There were enough different
    test results to be a nuisance. Having a standard for future
    higher-precision floating point seems highly desirable to me.

    Which is why we've already specified not just fp128 and fp256, but
    actually every factor of 32 between them, i.e 96, 160, 192, 224.

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Torbjorn Lindgren@tl@none.invalid to comp.arch on Wed Aug 5 12:50:12 2026
    From Newsgroup: comp.arch

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:
    On 8/2/2026 7:30 PM, Stefan Monnier wrote:
    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/xaos/)

    Thanks, Stefan. I downloaded it, and after overriding the Windows
    defender protection, installed it. BTW, Windows defender says it has no >author. Is there something that the actual author and easily do to
    prevent this? It would increase the user base.

    That just means the executable isn't digitally signed with a company
    code signing certificate that is blessed by MS ("Authenticode"). The
    name comes from the signing certificate and that certificate needs to
    be able to trace the chain back to the MS Authenticode root
    certificate(s).

    Dealing with MS code signing certificates can be a MAJOR pita for
    small or opensource developers. There's good reasons for why a lot of
    free community-supported software either can't do it, isn't ALLOWED to
    do it, don't want to do it or is not willing to pay the M$ tax.

    Heck, with recent changes they've made it a bit of a PITA even for
    people who HAVE one (physical hardware token is now required).

    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via
    the MS Store (MS resigns anything coming via the Store). That would be
    very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Wed Aug 5 06:37:41 2026
    From Newsgroup: comp.arch

    On 8/5/2026 5:50 AM, Torbjorn Lindgren wrote:
    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:
    On 8/2/2026 7:30 PM, Stefan Monnier wrote:
    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/xaos/)

    Thanks, Stefan. I downloaded it, and after overriding the Windows
    defender protection, installed it. BTW, Windows defender says it has no
    author. Is there something that the actual author and easily do to
    prevent this? It would increase the user base.

    That just means the executable isn't digitally signed with a company
    code signing certificate that is blessed by MS ("Authenticode"). The
    name comes from the signing certificate and that certificate needs to
    be able to trace the chain back to the MS Authenticode root
    certificate(s).

    Dealing with MS code signing certificates can be a MAJOR pita for
    small or opensource developers. There's good reasons for why a lot of
    free community-supported software either can't do it, isn't ALLOWED to
    do it, don't want to do it or is not willing to pay the M$ tax.

    Heck, with recent changes they've made it a bit of a PITA even for
    people who HAVE one (physical hardware token is now required).

    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via
    the MS Store (MS resigns anything coming via the Store). That would be
    very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.

    Thanks. I didn't know that. With the proliferation of malware, I can
    see Microsoft's argument, but it does seem a bit extreme. I don't have
    a good answer to the problem.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Wed Aug 5 07:48:15 2026
    From Newsgroup: comp.arch

    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    I want to take a somewhat different approach to answering this question
    than the need for precision arguments presented elsewhere in this
    thread. I don't believe there will be any hardware implementation of
    FP256 for at least several decades. This is based on a "register
    argument". That is, I assume any hardware implementation would require
    the operands to be in some kind of registers, not only in main memory.

    If one is willing to say FP256 operations can take place *only* in some
    kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, then things aren't too bad. You need new op-codes, of course, and you reduce
    the number of parallel operations, but it fits reasonably well.

    But if you want to support FP256 operations in non-vector registers,
    things get ugly. The obvious reason is that, with the 64 bit registers
    we have today, each FP256 operand requires four registers (256/64). So
    a typical FP256 operation such as FPADD requiring two sources and a destination requires 4 * 3 = 12 registers. If you want any amount of parallelism, even more are required. Two operations in parallel require
    24 registers! This leaves relatively few registers for other, typical
    uses. If you have a unified registers set (i.e. no dedicated FP
    registers), the register pressure is worse. As a side note, if, like
    Mitch, you don't like register pairing, i.e. the instruction specifies
    one register but that implies use of at least one adjacent register,
    then you have to somehow specify all 12 registers in the instruction (or instruction modifier). Ugggh!

    The obvious solution is going from 64 to 128 bit registers. But
    historically, register width is driven not by arithmetic precision requirements, but memory space requirements. I haven't kept up, but it
    used to be that these requirements grew by something like 1 bit every
    2-3 years, but seemed like it was slowing down. (I welcome any updates
    to these numbers). So if we are at say 54 bits now, then requiring more
    than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256
    for at least two decades.

    Of course, This may all be wrong! :-)
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Aug 5 12:02:40 2026
    From Newsgroup: comp.arch

    On 2026-Aug-05 10:48, Stephen Fuld wrote:
    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving
    5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    I want to take a somewhat different approach to answering this question than the need for precision arguments presented elsewhere in this thread.-a I don't believe there will be any hardware implementation of FP256 for at least several decades.-a This is based on a "register argument".-a That is, I assume any hardware implementation would require the operands to be in some kind of registers, not only in main memory.

    If one is willing to say FP256 operations can take place *only* in some kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, then things aren't too bad.-a You need new op-codes, of course, and you reduce the number of parallel operations, but it fits reasonably well.

    But if you want to support FP256 operations in non-vector registers, things get ugly.-a The obvious reason is that, with the 64 bit registers we have today, each FP256 operand requires four registers (256/64).-a So a typical FP256 operation such as FPADD requiring two sources and a destination requires 4 * 3 = 12 registers.-a If you want any amount of parallelism, even more are required. Two operations in parallel require 24 registers!-a This leaves relatively few registers for other, typical uses.-a If you have a unified registers set (i.e. no dedicated FP registers), the register pressure is worse.-a As a side note, if, like Mitch, you don't like register pairing, i.e. the instruction specifies one register but that implies use of at least one adjacent register, then you have to somehow specify all 12 registers in the instruction (or instruction modifier).-a Ugggh!


    FMA has 3 source and 1 dest registers.
    Augmented Add/Mul has two source and two dest registers.

    With a 64 bit register file that's #registers * 2 or 4 ports per instruction. Also requires renaming 2 or 4 physical dest registers for each arch dest register, which has O(N^2) complexity growth.

    The obvious solution is going from 64 to 128 bit registers.-a But historically, register width is driven not by arithmetic precision requirements, but memory space requirements.-a I haven't kept up, but it used to be that these requirements grew by something like 1 bit every 2-3 years, but seemed like it was slowing down.-a (I welcome any updates to these numbers).-a So if we are at say 54 bits now, then requiring more than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256 for at least two decades.

    Of course, This may all be wrong!-a :-)

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Wed Aug 5 16:06:58 2026
    From Newsgroup: comp.arch


    quadibloc@invalid.com (John Savard) posted:

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some use,
    for it.
    That doesn't mean that there is going to be a whole lot of demand for
    it. Even 128-bit floating-point is not going to displace 64-bit floating-point; it will simply be needed occasionally for a few
    specialized applications. And, of course, 128-bit floating-point
    preceded the IEEE-754 standard by decades; it was provided by the IBM System/360 Model 85.

    We ("we") were inside the cabinets of the 360/67 at CMU one night
    when we found several (4) wires unconnected with little labels as
    to where they go. We connected the wires and ran diagnostics.

    Presto the Quadword FP (ala /85) was on and running. We removed the
    wires to avoid collateral issues of "we" being inside the cabinets...

    In the case of integers, 64-bit computing came about when using 32
    bits for addresses was no longer feasible, because a hard 4 gigabyte
    limit to storage was an unacceptable constraint. No analogous
    situation exists for floating-point. 128-bit and 256-bit floats will
    simply be used for investigations that pose serious numerical analysis problems which can't be dealt with at a lower precision with more
    careful programming.

    Galactic evolution calculations are one. Too many individual stars
    for simple double precision to be enough.

    I tend to suspect, though, that instead of extending the precision to
    such a great extent, and increasing the exponent range only modestly,
    the more urgent need is to extend the exponent range.

    John Savard
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Wed Aug 5 16:11:31 2026
    From Newsgroup: comp.arch


    Torbjorn Lindgren <tl@none.invalid> posted:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:
    On 8/2/2026 7:30 PM, Stefan Monnier wrote:
    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/xaos/)

    Thanks, Stefan. I downloaded it, and after overriding the Windows >defender protection, installed it. BTW, Windows defender says it has no >author. Is there something that the actual author and easily do to >prevent this? It would increase the user base.

    That just means the executable isn't digitally signed with a company
    code signing certificate that is blessed by MS ("Authenticode"). The
    name comes from the signing certificate and that certificate needs to
    be able to trace the chain back to the MS Authenticode root
    certificate(s).

    Dealing with MS code signing certificates can be a MAJOR pita for
    small or opensource developers. There's good reasons for why a lot of
    free community-supported software either can't do it, isn't ALLOWED to
    do it, don't want to do it or is not willing to pay the M$ tax.

    Heck, with recent changes they've made it a bit of a PITA even for
    people who HAVE one (physical hardware token is now required).

    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via
    the MS Store (MS resigns anything coming via the Store). That would be
    very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.

    "Those who are willing to sacrifice liberty for safety,
    will soon have neither" Ben Franklin.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Wed Aug 5 09:18:16 2026
    From Newsgroup: comp.arch

    On 8/5/2026 9:02 AM, EricP wrote:
    On 2026-Aug-05 10:48, Stephen Fuld wrote:
    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>> 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    I want to take a somewhat different approach to answering this
    question than the need for precision arguments presented elsewhere in
    this thread.-a I don't believe there will be any hardware
    implementation of FP256 for at least several decades.-a This is based
    on a "register argument".-a That is, I assume any hardware
    implementation would require the operands to be in some kind of
    registers, not only in main memory.

    If one is willing to say FP256 operations can take place *only* in
    some kind of vector register, e.g. enhanced AVX512, not in GPRs or
    FPRs, then things aren't too bad.-a You need new op-codes, of course,
    and you reduce the number of parallel operations, but it fits
    reasonably well.

    But if you want to support FP256 operations in non-vector registers,
    things get ugly.-a The obvious reason is that, with the 64 bit
    registers we have today, each FP256 operand requires four registers
    (256/64).-a So a typical FP256 operation such as FPADD requiring two
    sources and a destination requires 4 * 3 = 12 registers.-a If you want
    any amount of parallelism, even more are required. Two operations in
    parallel require 24 registers!-a This leaves relatively few registers
    for other, typical uses.-a If you have a unified registers set (i.e. no
    dedicated FP registers), the register pressure is worse.-a As a side
    note, if, like Mitch, you don't like register pairing, i.e. the
    instruction specifies one register but that implies use of at least
    one adjacent register, then you have to somehow specify all 12
    registers in the instruction (or instruction modifier).-a Ugggh!


    FMA has 3 source and 1 dest registers.
    Augmented Add/Mul has two source and two dest registers.

    Yes, of course. In my defense, I had thought about them when thinking
    about the problem, but had forgotten about them by the time I got to
    writing the post. :-(


    With a 64 bit register file that's #registers * 2 or 4 ports per instruction.
    Also requires renaming 2 or 4 physical dest registers for each arch dest register, which has O(N^2) complexity growth.

    Good Points.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Aug 5 17:08:33 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    quadibloc@invalid.com (John Savard) posted:

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some use,
    for it.
    That doesn't mean that there is going to be a whole lot of demand for
    it. Even 128-bit floating-point is not going to displace 64-bit
    floating-point; it will simply be needed occasionally for a few
    specialized applications. And, of course, 128-bit floating-point
    preceded the IEEE-754 standard by decades; it was provided by the IBM
    System/360 Model 85.

    We ("we") were inside the cabinets of the 360/67 at CMU one night
    when we found several (4) wires unconnected with little labels as
    to where they go. We connected the wires and ran diagnostics.

    Presto the Quadword FP (ala /85) was on and running. We removed the
    wires to avoid collateral issues of "we" being inside the cabinets...

    Wasn't uncommon in those days. The Burroughs B4925 and B4955
    differed by a couple of wires - basically the 4925 disabled overlapping
    fetch and execute stages (which reduced performance by 50%).


    In the case of integers, 64-bit computing came about when using 32
    bits for addresses was no longer feasible, because a hard 4 gigabyte
    limit to storage was an unacceptable constraint. No analogous
    situation exists for floating-point. 128-bit and 256-bit floats will
    simply be used for investigations that pose serious numerical analysis
    problems which can't be dealt with at a lower precision with more
    careful programming.

    Galactic evolution calculations are one. Too many individual stars
    for simple double precision to be enough.

    You don't need floating point to count the number of stars.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Aug 5 17:12:43 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Torbjorn Lindgren <tl@none.invalid> posted:


    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via
    the MS Store (MS resigns anything coming via the Store). That would be
    very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.

    "Those who are willing to sacrifice liberty for safety,
    will soon have neither" Ben Franklin.

    The quotation was actually

    "Those who would give up essential Liberty, to purchase a little
    temporary Safety, deserve neither Liberty nor Safety."

    Franklin wrote that to support the assembly's power
    to tax wealthy proprietors to pay for military defense
    during the French and Indian war.

    "Liberty" in this context referred to the communities
    right to self-governance and ability to tax to pay for
    collective self-defence"


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Aug 5 13:28:54 2026
    From Newsgroup: comp.arch

    On 2026-Aug-05 13:12, Scott Lurndal wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Torbjorn Lindgren <tl@none.invalid> posted:


    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via
    the MS Store (MS resigns anything coming via the Store). That would be
    very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.

    "Those who are willing to sacrifice liberty for safety,
    will soon have neither" Ben Franklin.

    The quotation was actually

    "Those who would give up essential Liberty, to purchase a little
    temporary Safety, deserve neither Liberty nor Safety."

    Franklin wrote that to support the assembly's power
    to tax wealthy proprietors to pay for military defense
    during the French and Indian war.

    "Liberty" in this context referred to the communities
    right to self-governance and ability to tax to pay for
    collective self-defence"

    So "liberty" is the governments freedom to choose not the citizens
    (assuming few citizens would willingly tax themselves).



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Aug 5 13:58:03 2026
    From Newsgroup: comp.arch

    On 2026-Aug-02 18:52, EricP wrote:
    On 2026-Aug-02 14:04, EricP wrote:

    I came across a 2025 paper which claims to have SIMD/GPU friendly versions >> using something called "Floating-Point Accumulation Networks"
    but I haven't tracked down the example code yet.

    High-performance branch-free algorithms for extended-precision
    floating-point arithmetic, DK Zhang, A Aiken, 2025
    https://dl.acm.org/doi/abs/10.1145/3712285.3759876
    https://dl.acm.org/doi/pdf/10.1145/3712285.3759876

    Note that the "High-performance branch-free" paper doesn't mention
    the compensation for the difference between Round-Nearest-Zero and Round-Nearest-Even that Muller does.
    I don't know if that effects its results.

    The above paper wrote its examples in the Julia language.
    Using algorithms from the paper below which claims to be the same:

    Acceleration of multicomponent multiple-precision arithmetic with
    branch-free algorithms and SIMD vectorization https://arxiv.org/abs/2603.14926

    gives the following code for a double word branch free add DWBFAdd:


    typedef struct DPairS
    {
    -a double Val;
    -a double Ext;
    } DPairT, *DPairPT;

    static DPairT QuickTwoSum (double a, double b)
    {
    -a double sum, ext;

    -a sum = a + b;
    -a ext = b - (sum - a);
    -a return {sum, ext};
    }

    static DPairT TwoSum (double a, double b)
    {
    -a double sum, ext, tmp;

    -a sum = a + b;
    -a tmp = sum - a;
    -a ext = (a - (sum - tmp)) + (b - tmp);
    -a return {sum, ext};
    }

    DPairT DWBFAdd (DPairT a, DPairT b)
    {
    -a double g4, g5;
    -a DPairT g1, g2, g3, c;

    -a g1 = TwoSum (a.Val, b.Val);
    -a g2 = TwoSum (a.Ext, b.Ext);
    -a g3 = QuickTwoSum (g1.Val, g2.Val);
    -a g4 = g1.Ext + g2.Ext;
    -a g5 = g4 + g3.Ext;
    -a c = QuickTwoSum (g3.Val, g5);
    -a return c;
    }

    gives this for a double-double add:
    compiled on Godbolt x86-64 GCC 16.1 -O3

    # Compilation provided by Compiler Explorer at https://godbolt.org/ "DWBFAdd(DPairS, DPairS)":
    -a-a-a-a-a-a-a movapd-a xmm4, xmm1
    -a-a-a-a-a-a-a movapd-a xmm5, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm4, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm5, xmm2
    -a-a-a-a-a-a-a movapd-a xmm8, xmm4
    -a-a-a-a-a-a-a movapd-a xmm9, xmm4
    -a-a-a-a-a-a-a movapd-a xmm7, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm8, xmm1
    -a-a-a-a-a-a-a subsd-a-a xmm7, xmm0
    -a-a-a-a-a-a-a movapd-a xmm6, xmm4
    -a-a-a-a-a-a-a addsd-a-a xmm6, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm9, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm9
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm3
    -a-a-a-a-a-a-a movapd-a xmm3, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm2
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm0
    -a-a-a-a-a-a-a movapd-a xmm0, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm4, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm4
    -a-a-a-a-a-a-a movapd-a xmm0, xmm1
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm6
    -a-a-a-a-a-a-a movapd-a xmm2, xmm0
    -a-a-a-a-a-a-a movq-a-a-a rdx, xmm0
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm2
    -a-a-a-a-a-a-a movq-a-a-a rax, xmm1
    -a-a-a-a-a-a-a xchg-a-a-a rax, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm1, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm0, rax
    -a-a-a-a-a-a-a ret

    That's 35 instructions for the DWAdd (excluding the RET).
    There are a lot of MOV's because of the two operand operations.

    I added the code for double-double multiply.
    It uses FMA which requires including math.h and enabling its with a #define.

    To get GCC to use the FMA instruction I had to use -march=haswell
    which also has the effect of enabling the 3 operand instructions
    which lowers the DWBFAdd instruction count to 24.
    DWBFMul is 14 instructions.

    #define FP_FAST_FMA (1)
    #include <math.h>

    static DPairT TwoProd (double a, double b)
    {
    DPairT c;

    c.Val = a * b;
    c.Ext = fma(a, b, -c.Val);
    return c;
    }

    DPairT DWBFMul (DPairT a, DPairT b)
    {
    double p01, p10, g1, g2;
    DPairT p0, c;

    p0 = TwoProd (a.Val, b.Val);
    p01 = a.Val * b.Ext;
    p10 = a.Ext * b.Val;
    g1 = p01 + p10;
    g2 = p0.Ext + g1;
    c = QuickTwoSum (p0.Val, g2);
    return c;
    }

    compiled on Godbolt x86-64 GCC 16.1 -O3 -march=haswell

    # Compilation provided by Compiler Explorer at https://godbolt.org/ "DWBFAdd(DPairS, DPairS)":
    vaddsd xmm4, xmm1, xmm3
    vaddsd xmm5, xmm0, xmm2
    vsubsd xmm8, xmm4, xmm1
    vsubsd xmm7, xmm5, xmm0
    vaddsd xmm6, xmm4, xmm5
    vsubsd xmm9, xmm4, xmm8
    vsubsd xmm3, xmm3, xmm8
    vsubsd xmm2, xmm2, xmm7
    vsubsd xmm1, xmm1, xmm9
    vaddsd xmm1, xmm1, xmm3
    vsubsd xmm3, xmm5, xmm7
    vsubsd xmm5, xmm6, xmm5
    vsubsd xmm0, xmm0, xmm3
    vsubsd xmm4, xmm4, xmm5
    vaddsd xmm0, xmm0, xmm2
    vaddsd xmm1, xmm1, xmm0
    vaddsd xmm1, xmm1, xmm4
    vaddsd xmm0, xmm1, xmm6
    vsubsd xmm6, xmm0, xmm6
    vsubsd xmm1, xmm1, xmm6
    vpunpcklqdq xmm7, xmm0, xmm1
    vpextrq rdx, xmm7, 1
    vmovapd xmm0, xmm7
    vmovq xmm1, rdx
    ret

    "DWBFMul(DPairS, DPairS)":
    vmulsd xmm1, xmm1, xmm2
    vmovapd xmm4, xmm0
    vmovapd xmm5, xmm2
    vmulsd xmm0, xmm0, xmm2
    vfmadd132sd xmm3, xmm1, xmm4
    vfmsub132sd xmm5, xmm0, xmm4
    vaddsd xmm3, xmm3, xmm5
    vaddsd xmm1, xmm3, xmm0
    vsubsd xmm0, xmm1, xmm0
    vsubsd xmm3, xmm3, xmm0
    vpunpcklqdq xmm6, xmm1, xmm3
    vpextrq rdx, xmm6, 1
    vmovapd xmm0, xmm6
    vmovq xmm1, rdx
    ret

    Something odd about DWBFMul is that the source contains one call
    to TwoProd which uses one fma, but the asm contains two fma:
    vfmadd132sd xmm3, xmm1, xmm4
    vfmsub132sd xmm5, xmm0, xmm4


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Wed Aug 5 18:12:16 2026
    From Newsgroup: comp.arch

    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    Augmented Add/Mul has two source and two dest registers.

    And this is a requiremnt you cannot get around.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Aug 5 18:51:32 2026
    From Newsgroup: comp.arch

    EricP <ThatWouldBeTelling@thevillage.com> writes:
    On 2026-Aug-05 13:12, Scott Lurndal wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Torbjorn Lindgren <tl@none.invalid> posted:


    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via
    the MS Store (MS resigns anything coming via the Store). That would be >>>> very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.

    "Those who are willing to sacrifice liberty for safety,
    will soon have neither" Ben Franklin.

    The quotation was actually

    "Those who would give up essential Liberty, to purchase a little
    temporary Safety, deserve neither Liberty nor Safety."

    Franklin wrote that to support the assembly's power
    to tax wealthy proprietors to pay for military defense
    during the French and Indian war.

    "Liberty" in this context referred to the communities
    right to self-governance and ability to tax to pay for
    collective self-defence"

    So "liberty" is the governments freedom to choose not the citizens
    (assuming few citizens would willingly tax themselves).


    "Liberty" was the communities freedom from british rule. It
    didn't refer to individual liberty per se.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Wed Aug 5 12:17:01 2026
    From Newsgroup: comp.arch

    On 8/3/2026 2:51 PM, Stephen Fuld wrote:
    On 8/2/2026 7:30 PM, Stefan Monnier wrote:
    Quite nice, but I still preferred Fractint back in the old days.
    It had more fractals, as well as other things.

    Another I saw passing recently is [Xaos](https://www.gnu.org/software/
    xaos/)

    Thanks, Stefan.-a I downloaded it, and after overriding the Windows
    defender protection, installed it.-a BTW, Windows defender says it has no author.-a Is there something that the actual author and easily do to
    prevent this?-a It would increase the user base.

    It is more like Fractint, with lots of capabilities beyond
    straightforward Mandelbrot set rendering, that I will have to take time
    to explore.-a The user interface is certainly not "windows like" and thus takes a little time to get used to.-a But I expect to have a lot of fun playing with it.

    Thanks again for bringing it to my/our attention.



    Fwiw, another program for you to check out:

    https://www.ultrafractal.com/

    Pretty nice. I has a built in compiler so you can make your own programs.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Wed Aug 5 19:20:45 2026
    From Newsgroup: comp.arch


    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming decade (or farther out) ??

    I want to take a somewhat different approach to answering this question
    than the need for precision arguments presented elsewhere in this
    thread. I don't believe there will be any hardware implementation of
    FP256 for at least several decades. This is based on a "register
    argument". That is, I assume any hardware implementation would require
    the operands to be in some kind of registers, not only in main memory.

    At the current moment, FP128 use is low to at best moderate--that is we occasionally want to do FP128 calculations, but we are no where near
    wanting to build architectures that concentrate heavily on FP128 {whether register based or memory based or some where in between}. FP256 has even
    lower use patterns.

    If one is willing to say FP256 operations can take place *only* in some
    kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, then things aren't too bad. You need new op-codes, of course, and you reduce
    the number of parallel operations, but it fits reasonably well.

    It screws up the reservation station models by needing to wait for 4
    set of operands before starting calculations. Whether VR or GPR or FPR.

    But if you want to support FP256 operations in non-vector registers,
    things get ugly.

    Even uglier when one considers argument and result passings.

    The obvious reason is that, with the 64 bit registers
    we have today, each FP256 operand requires four registers (256/64). So
    a typical FP256 operation such as FPADD requiring two sources and a destination requires 4 * 3 = 12 registers.

    Which is why we can dabble in FP128 and consider dabbling in FP256
    but we really don't want to go "Whole Hog" in either.

    If you want any amount of parallelism, even more are required.

    I suspect the compiler's register use pattern would be fairly easy
    to rename into a sufficiently high-count PRF.

    Two operations in parallel require
    24 registers! This leaves relatively few registers for other, typical
    uses. If you have a unified registers set (i.e. no dedicated FP
    registers), the register pressure is worse. As a side note, if, like
    Mitch, you don't like register pairing, i.e. the instruction specifies
    one register but that implies use of at least one adjacent register,
    then you have to somehow specify all 12 registers in the instruction (or instruction modifier). Ugggh!

    I recently added the DBLE instruction-modifier to My 66000 ISA. DBLE is
    a 3-register i-m that supplies 3 operands and 1 <more> result register
    (or constants !!) to the immediately successive instruction. On lower
    end machines it would decode-execute-retire as 2 instructions; on middle
    end machines it would decode as one, reside in stations as 2, and then
    execute as one; in High end machines the pair is treated uniformly as
    a single instruction. 1 instruction added, ~40 - 128-bit calculations
    added to useable ISA.

    The obvious solution is going from 64 to 128 bit registers. But historically, register width is driven not by arithmetic precision requirements, but memory space requirements. I haven't kept up, but it
    used to be that these requirements grew by something like 1 bit every
    2-3 years, but seemed like it was slowing down. (I welcome any updates
    to these numbers). So if we are at say 54 bits now, then requiring more than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256
    for at least two decades.

    Which is, of course, longer than I have left above ground.

    Of course, This may all be wrong! :-)



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Wed Aug 5 12:22:10 2026
    From Newsgroup: comp.arch

    On 8/5/2026 10:08 AM, Scott Lurndal wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    quadibloc@invalid.com (John Savard) posted:

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some use,
    for it.
    That doesn't mean that there is going to be a whole lot of demand for
    it. Even 128-bit floating-point is not going to displace 64-bit
    floating-point; it will simply be needed occasionally for a few
    specialized applications. And, of course, 128-bit floating-point
    preceded the IEEE-754 standard by decades; it was provided by the IBM
    System/360 Model 85.

    We ("we") were inside the cabinets of the 360/67 at CMU one night
    when we found several (4) wires unconnected with little labels as
    to where they go. We connected the wires and ran diagnostics.

    Presto the Quadword FP (ala /85) was on and running. We removed the
    wires to avoid collateral issues of "we" being inside the cabinets...

    Wasn't uncommon in those days. The Burroughs B4925 and B4955
    differed by a couple of wires - basically the 4925 disabled overlapping
    fetch and execute stages (which reduced performance by 50%).


    In the case of integers, 64-bit computing came about when using 32
    bits for addresses was no longer feasible, because a hard 4 gigabyte
    limit to storage was an unacceptable constraint. No analogous
    situation exists for floating-point. 128-bit and 256-bit floats will
    simply be used for investigations that pose serious numerical analysis
    problems which can't be dealt with at a lower precision with more
    careful programming.

    Galactic evolution calculations are one. Too many individual stars
    for simple double precision to be enough.

    You don't need floating point to count the number of stars.

    Right. But they come in handy wrt plotting the field lines. Fwiw, here
    is an example of mine:

    https://skfb.ly/pyP9E

    https://skfb.ly/pzzE6

    https://skfb.ly/pzTEC

    You should be able to fly around and explore them.

    Btw, the links go to sketchfab.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Wed Aug 5 19:22:46 2026
    From Newsgroup: comp.arch


    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-05 10:48, Stephen Fuld wrote:
    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >> 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    I want to take a somewhat different approach to answering this question than the need for precision arguments presented elsewhere in this thread.-a I don't believe there will be any hardware implementation of FP256 for at least several decades.-a This is based on a "register argument".-a That is, I assume any hardware implementation would require the operands to be in some kind of registers, not only in main memory.

    If one is willing to say FP256 operations can take place *only* in some kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, then things aren't too bad.-a You need new op-codes, of course, and you reduce the number of parallel operations, but it fits reasonably well.

    But if you want to support FP256 operations in non-vector registers, things get ugly.-a The obvious reason is that, with the 64 bit registers we have today, each FP256 operand requires four registers (256/64).-a So a typical FP256 operation such as FPADD requiring two sources and a destination requires 4 * 3 = 12 registers.-a If you want any amount of parallelism, even more are required. Two operations in parallel require 24 registers!-a This leaves relatively few registers for other, typical uses.-a If you have a unified registers set (i.e. no dedicated FP registers), the register pressure is worse.-a As a side note, if, like Mitch, you don't like register pairing, i.e. the instruction specifies one register but that implies use of at least one adjacent register, then you have to somehow specify all 12 registers in the instruction (or instruction modifier).-a Ugggh!


    FMA has 3 source and 1 dest registers.
    Augmented Add/Mul has two source and two dest registers.

    Augmented {ADD, MUL} is supported by the CARRY instruction-modifier.
    FP128 is supported by the DBLE instruction-modifier.

    With a 64 bit register file that's #registers * 2 or 4 ports per instruction. Also requires renaming 2 or 4 physical dest registers for each arch dest register, which has O(N^2) complexity growth.

    The obvious solution is going from 64 to 128 bit registers.-a But historically, register width is driven not by arithmetic precision requirements, but memory space requirements.-a I haven't kept up, but it used to be that these requirements grew by something like 1 bit every 2-3 years, but seemed like it was slowing down.-a (I welcome any updates to these numbers).-a So if we are at say 54 bits now, then requiring more than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256 for at least two decades.

    Of course, This may all be wrong!-a :-)

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Wed Aug 5 19:30:38 2026
    From Newsgroup: comp.arch


    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-05 13:12, Scott Lurndal wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Torbjorn Lindgren <tl@none.invalid> posted:


    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via
    the MS Store (MS resigns anything coming via the Store). That would be >>> very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.

    "Those who are willing to sacrifice liberty for safety,
    will soon have neither" Ben Franklin.

    The quotation was actually

    "Those who would give up essential Liberty, to purchase a little
    temporary Safety, deserve neither Liberty nor Safety."

    Franklin wrote that to support the assembly's power
    to tax wealthy proprietors to pay for military defense
    during the French and Indian war.

    "Liberty" in this context referred to the communities
    right to self-governance and ability to tax to pay for
    collective self-defence"

    So "liberty" is the governments freedom to choose not the citizens
    (assuming few citizens would willingly tax themselves).

    Liberty is the concept of being out in public without someone following
    you around (although with the number of cameras around today it can be
    argued that none of us have liberty anymore.)

    Liberty is a right manifest on the citizen by the constitution.

    A right is something the *.gov is not allowed to encumber from its
    citizens (without due process).



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Wed Aug 5 19:35:02 2026
    From Newsgroup: comp.arch


    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-02 18:52, EricP wrote:
    On 2026-Aug-02 14:04, EricP wrote:

    I came across a 2025 paper which claims to have SIMD/GPU friendly versions >> using something called "Floating-Point Accumulation Networks"
    but I haven't tracked down the example code yet.

    High-performance branch-free algorithms for extended-precision
    floating-point arithmetic, DK Zhang, A Aiken, 2025
    https://dl.acm.org/doi/abs/10.1145/3712285.3759876
    https://dl.acm.org/doi/pdf/10.1145/3712285.3759876

    Note that the "High-performance branch-free" paper doesn't mention
    the compensation for the difference between Round-Nearest-Zero and Round-Nearest-Even that Muller does.
    I don't know if that effects its results.

    The above paper wrote its examples in the Julia language.
    Using algorithms from the paper below which claims to be the same:

    Acceleration of multicomponent multiple-precision arithmetic with branch-free algorithms and SIMD vectorization https://arxiv.org/abs/2603.14926

    gives the following code for a double word branch free add DWBFAdd:


    typedef struct DPairS
    {
    -a double Val;
    -a double Ext;
    } DPairT, *DPairPT;

    static DPairT QuickTwoSum (double a, double b)
    {
    -a double sum, ext;

    -a sum = a + b;
    -a ext = b - (sum - a);
    -a return {sum, ext};
    }

    static DPairT TwoSum (double a, double b)
    {
    -a double sum, ext, tmp;

    -a sum = a + b;
    -a tmp = sum - a;
    -a ext = (a - (sum - tmp)) + (b - tmp);
    -a return {sum, ext};
    }

    DPairT DWBFAdd (DPairT a, DPairT b)
    {
    -a double g4, g5;
    -a DPairT g1, g2, g3, c;

    -a g1 = TwoSum (a.Val, b.Val);
    -a g2 = TwoSum (a.Ext, b.Ext);
    -a g3 = QuickTwoSum (g1.Val, g2.Val);
    -a g4 = g1.Ext + g2.Ext;
    -a g5 = g4 + g3.Ext;
    -a c = QuickTwoSum (g3.Val, g5);
    -a return c;
    }

    gives this for a double-double add:
    compiled on Godbolt x86-64 GCC 16.1 -O3

    # Compilation provided by Compiler Explorer at https://godbolt.org/ "DWBFAdd(DPairS, DPairS)":
    -a-a-a-a-a-a-a movapd-a xmm4, xmm1
    -a-a-a-a-a-a-a movapd-a xmm5, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm4, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm5, xmm2
    -a-a-a-a-a-a-a movapd-a xmm8, xmm4
    -a-a-a-a-a-a-a movapd-a xmm9, xmm4
    -a-a-a-a-a-a-a movapd-a xmm7, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm8, xmm1
    -a-a-a-a-a-a-a subsd-a-a xmm7, xmm0
    -a-a-a-a-a-a-a movapd-a xmm6, xmm4
    -a-a-a-a-a-a-a addsd-a-a xmm6, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm9, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm9
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm3
    -a-a-a-a-a-a-a movapd-a xmm3, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm2
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm0
    -a-a-a-a-a-a-a movapd-a xmm0, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm4, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm4
    -a-a-a-a-a-a-a movapd-a xmm0, xmm1
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm6
    -a-a-a-a-a-a-a movapd-a xmm2, xmm0
    -a-a-a-a-a-a-a movq-a-a-a rdx, xmm0
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm2
    -a-a-a-a-a-a-a movq-a-a-a rax, xmm1
    -a-a-a-a-a-a-a xchg-a-a-a rax, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm1, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm0, rax
    -a-a-a-a-a-a-a ret

    That's 35 instructions for the DWAdd (excluding the RET).
    There are a lot of MOV's because of the two operand operations.

    I added the code for double-double multiply.
    It uses FMA which requires including math.h and enabling its with a #define.

    To get GCC to use the FMA instruction I had to use -march=haswell
    which also has the effect of enabling the 3 operand instructions
    which lowers the DWBFAdd instruction count to 24.
    DWBFMul is 14 instructions.

    #define FP_FAST_FMA (1)
    #include <math.h>

    static DPairT TwoProd (double a, double b)
    {
    DPairT c;

    c.Val = a * b;
    c.Ext = fma(a, b, -c.Val);
    return c;
    }

    BGB should note: the preceding code only "works" when FMAC produces
    all 106-bits of the pre-rounded product.


    DPairT DWBFMul (DPairT a, DPairT b)
    {
    double p01, p10, g1, g2;
    DPairT p0, c;

    p0 = TwoProd (a.Val, b.Val);
    p01 = a.Val * b.Ext;
    p10 = a.Ext * b.Val;
    g1 = p01 + p10;
    g2 = p0.Ext + g1;
    c = QuickTwoSum (p0.Val, g2);
    return c;
    }

    compiled on Godbolt x86-64 GCC 16.1 -O3 -march=haswell

    # Compilation provided by Compiler Explorer at https://godbolt.org/ "DWBFAdd(DPairS, DPairS)":
    vaddsd xmm4, xmm1, xmm3
    vaddsd xmm5, xmm0, xmm2
    vsubsd xmm8, xmm4, xmm1
    vsubsd xmm7, xmm5, xmm0
    vaddsd xmm6, xmm4, xmm5
    vsubsd xmm9, xmm4, xmm8
    vsubsd xmm3, xmm3, xmm8
    vsubsd xmm2, xmm2, xmm7
    vsubsd xmm1, xmm1, xmm9
    vaddsd xmm1, xmm1, xmm3
    vsubsd xmm3, xmm5, xmm7
    vsubsd xmm5, xmm6, xmm5
    vsubsd xmm0, xmm0, xmm3
    vsubsd xmm4, xmm4, xmm5
    vaddsd xmm0, xmm0, xmm2
    vaddsd xmm1, xmm1, xmm0
    vaddsd xmm1, xmm1, xmm4
    vaddsd xmm0, xmm1, xmm6
    vsubsd xmm6, xmm0, xmm6
    vsubsd xmm1, xmm1, xmm6
    vpunpcklqdq xmm7, xmm0, xmm1
    vpextrq rdx, xmm7, 1
    vmovapd xmm0, xmm7
    vmovq xmm1, rdx
    ret

    "DWBFMul(DPairS, DPairS)":
    vmulsd xmm1, xmm1, xmm2
    vmovapd xmm4, xmm0
    vmovapd xmm5, xmm2
    vmulsd xmm0, xmm0, xmm2
    vfmadd132sd xmm3, xmm1, xmm4
    vfmsub132sd xmm5, xmm0, xmm4
    vaddsd xmm3, xmm3, xmm5
    vaddsd xmm1, xmm3, xmm0
    vsubsd xmm0, xmm1, xmm0
    vsubsd xmm3, xmm3, xmm0
    vpunpcklqdq xmm6, xmm1, xmm3
    vpextrq rdx, xmm6, 1
    vmovapd xmm0, xmm6
    vmovq xmm1, rdx
    ret

    Something odd about DWBFMul is that the source contains one call
    to TwoProd which uses one fma, but the asm contains two fma:
    vfmadd132sd xmm3, xmm1, xmm4
    vfmsub132sd xmm5, xmm0, xmm4



    Programmers in the Big-FP camp would call both of these as "Fast" ...
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Aug 5 16:00:29 2026
    From Newsgroup: comp.arch

    On 2026-Aug-05 15:27, MitchAlsup wrote:
    scott@slp53.sl.home (Scott Lurndal) posted:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Galactic evolution calculations are one. Too many individual stars
    for simple double precision to be enough.

    You don't need floating point to count the number of stars.

    It is not the counting of stars, but the calculation of the gravitational forces of each star on each other star. Sometimes, one also has to consider the speed-of-light problems as separate from the speed-of-gravity {also
    known as the gravitational anomaly. If the sun disappeared instantaneously the earth would leave its orbit instantaneously, even though we could still see the light from it for 8 minutes.}

    That's Newtonian gravity not relativistic.
    With relativity if the sun disappeared it would take 8.5 minutes
    for the relaxing of the gravity well wave to arrive.

    That is similar a black hole merger where some of the total
    mass suddenly disappears and is converted to gravity waves
    that radiate outwards at the speed of light.

    Space-time can stretch or contract faster than the speed of light,
    as in the Alcubierre warp drive.
    https://en.wikipedia.org/wiki/Alcubierre_drive






    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Aug 5 16:06:30 2026
    From Newsgroup: comp.arch

    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version.

    Augmented Add/Mul has two source and two dest registers.

    And this is a requiremnt you cannot get around.



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Wed Aug 5 13:12:21 2026
    From Newsgroup: comp.arch

    On 8/5/2026 12:30 PM, MitchAlsup wrote:

    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-05 13:12, Scott Lurndal wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Torbjorn Lindgren <tl@none.invalid> posted:


    I'm not ruling out that MS WANT everyone to either switch to Azure
    Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via >>>>> the MS Store (MS resigns anything coming via the Store). That would be >>>>> very on-brand. And not everyone can get access to AAS even if they
    were willing to pay a monthly fee, there's a number of requirements.

    "Those who are willing to sacrifice liberty for safety,
    will soon have neither" Ben Franklin.

    The quotation was actually

    "Those who would give up essential Liberty, to purchase a little
    temporary Safety, deserve neither Liberty nor Safety."

    Franklin wrote that to support the assembly's power
    to tax wealthy proprietors to pay for military defense
    during the French and Indian war.

    "Liberty" in this context referred to the communities
    right to self-governance and ability to tax to pay for
    collective self-defence"

    So "liberty" is the governments freedom to choose not the citizens
    (assuming few citizens would willingly tax themselves).

    Liberty is the concept of being out in public without someone following
    you around

    Have a phone? For some reason, I don't. Its bad in case I am in an
    accident or something. But, the little shit is akin to "someone
    following you around"...?


    (although with the number of cameras around today it can be
    argued that none of us have liberty anymore.)

    Well, yeah. But at least they are not mandating "gov" cameras in our
    houses, yet... ;^) kidding, but funny to ponder on.



    Liberty is a right manifest on the citizen by the constitution.

    A right is something the *.gov is not allowed to encumber from its
    citizens (without due process).




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Wed Aug 5 13:41:40 2026
    From Newsgroup: comp.arch

    On 8/5/2026 12:27 PM, MitchAlsup wrote:

    scott@slp53.sl.home (Scott Lurndal) posted:

    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    quadibloc@invalid.com (John Savard) posted:

    I know that a 256-bit floating-point format has already been defined
    in a later version of the IEEE-754 floating-point standard. I had
    thought, therefore, that there was already some demand, and some use,
    for it.
    That doesn't mean that there is going to be a whole lot of demand for
    it. Even 128-bit floating-point is not going to displace 64-bit
    floating-point; it will simply be needed occasionally for a few
    specialized applications. And, of course, 128-bit floating-point
    preceded the IEEE-754 standard by decades; it was provided by the IBM
    System/360 Model 85.

    We ("we") were inside the cabinets of the 360/67 at CMU one night
    when we found several (4) wires unconnected with little labels as
    to where they go. We connected the wires and ran diagnostics.

    Presto the Quadword FP (ala /85) was on and running. We removed the
    wires to avoid collateral issues of "we" being inside the cabinets...

    Wasn't uncommon in those days. The Burroughs B4925 and B4955
    differed by a couple of wires - basically the 4925 disabled overlapping
    fetch and execute stages (which reduced performance by 50%).


    In the case of integers, 64-bit computing came about when using 32
    bits for addresses was no longer feasible, because a hard 4 gigabyte
    limit to storage was an unacceptable constraint. No analogous
    situation exists for floating-point. 128-bit and 256-bit floats will
    simply be used for investigations that pose serious numerical analysis >>>> problems which can't be dealt with at a lower precision with more
    careful programming.

    Galactic evolution calculations are one. Too many individual stars
    for simple double precision to be enough.

    You don't need floating point to count the number of stars.

    It is not the counting of stars, but the calculation of the gravitational forces of each star on each other star.

    Right! For instance here is a single "star", or point of very high
    mass... Akin to a black hole, perhaps. This is what I got in one of my experiments, you should be able to explore it in real time:

    https://skfb.ly/pyXH6

    Notice the funnel effect of the field? Fwiw, the link is safe. It goes
    right to SketchFab


    Sometimes, one also has to consider
    the speed-of-light problems as separate from the speed-of-gravity {also
    known as the gravitational anomaly. If the sun disappeared instantaneously the earth would leave its orbit instantaneously, even though we could still see the light from it for 8 minutes.}

    Also, we need to integrate with a granularity, aka step size if you
    will... Wrt a photon riding along a geodesic, or granular, I think they
    mean the same thing... All along, tracing a field line... :^)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Wed Aug 5 23:02:17 2026
    From Newsgroup: comp.arch

    Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    Augmented Add/Mul has two source and two dest registers.

    And this is a requiremnt you cannot get around.

    So if you only have one write port, then the second destination gets
    written one cycle later?

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Aug 5 17:41:03 2026
    From Newsgroup: comp.arch

    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version.


    I would assume using a 3R form for the basic case, and 4R via a prefix-expanded case or similar.

    Say:
    Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to justify
    the *massive* chunk of encoding space they burnt on this (like, both the
    P and V extensions use less encoding space than just these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to justify burning this much encoding space on it.


    Augmented Add/Mul has two source and two dest registers.

    And this is a requiremnt you cannot get around.




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Wed Aug 5 10:59:15 2026
    From Newsgroup: comp.arch

    I tend to suspect, though, that instead of extending the precision to
    such a great extent, and increasing the exponent range only modestly,
    the more urgent need is to extend the exponent range.

    Why?


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Aug 5 18:12:10 2026
    From Newsgroup: comp.arch

    On 8/5/2026 2:35 PM, MitchAlsup wrote:

    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-02 18:52, EricP wrote:
    On 2026-Aug-02 14:04, EricP wrote:

    I came across a 2025 paper which claims to have SIMD/GPU friendly versions >>>> using something called "Floating-Point Accumulation Networks"
    but I haven't tracked down the example code yet.

    High-performance branch-free algorithms for extended-precision
    floating-point arithmetic, DK Zhang, A Aiken, 2025
    https://dl.acm.org/doi/abs/10.1145/3712285.3759876
    https://dl.acm.org/doi/pdf/10.1145/3712285.3759876

    Note that the "High-performance branch-free" paper doesn't mention
    the compensation for the difference between Round-Nearest-Zero and
    Round-Nearest-Even that Muller does.
    I don't know if that effects its results.

    The above paper wrote its examples in the Julia language.
    Using algorithms from the paper below which claims to be the same:

    Acceleration of multicomponent multiple-precision arithmetic with
    branch-free algorithms and SIMD vectorization
    https://arxiv.org/abs/2603.14926

    gives the following code for a double word branch free add DWBFAdd:


    typedef struct DPairS
    {
    -a double Val;
    -a double Ext;
    } DPairT, *DPairPT;

    static DPairT QuickTwoSum (double a, double b)
    {
    -a double sum, ext;

    -a sum = a + b;
    -a ext = b - (sum - a);
    -a return {sum, ext};
    }

    static DPairT TwoSum (double a, double b)
    {
    -a double sum, ext, tmp;

    -a sum = a + b;
    -a tmp = sum - a;
    -a ext = (a - (sum - tmp)) + (b - tmp);
    -a return {sum, ext};
    }

    DPairT DWBFAdd (DPairT a, DPairT b)
    {
    -a double g4, g5;
    -a DPairT g1, g2, g3, c;

    -a g1 = TwoSum (a.Val, b.Val);
    -a g2 = TwoSum (a.Ext, b.Ext);
    -a g3 = QuickTwoSum (g1.Val, g2.Val);
    -a g4 = g1.Ext + g2.Ext;
    -a g5 = g4 + g3.Ext;
    -a c = QuickTwoSum (g3.Val, g5);
    -a return c;
    }

    gives this for a double-double add:
    compiled on Godbolt x86-64 GCC 16.1 -O3

    # Compilation provided by Compiler Explorer at https://godbolt.org/
    "DWBFAdd(DPairS, DPairS)":
    -a-a-a-a-a-a-a movapd-a xmm4, xmm1
    -a-a-a-a-a-a-a movapd-a xmm5, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm4, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm5, xmm2
    -a-a-a-a-a-a-a movapd-a xmm8, xmm4
    -a-a-a-a-a-a-a movapd-a xmm9, xmm4
    -a-a-a-a-a-a-a movapd-a xmm7, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm8, xmm1
    -a-a-a-a-a-a-a subsd-a-a xmm7, xmm0
    -a-a-a-a-a-a-a movapd-a xmm6, xmm4
    -a-a-a-a-a-a-a addsd-a-a xmm6, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm9, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm8
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm9
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm3
    -a-a-a-a-a-a-a movapd-a xmm3, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm3, xmm7
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm3
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm2
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm0
    -a-a-a-a-a-a-a movapd-a xmm0, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm0, xmm5
    -a-a-a-a-a-a-a subsd-a-a xmm4, xmm0
    -a-a-a-a-a-a-a addsd-a-a xmm1, xmm4
    -a-a-a-a-a-a-a movapd-a xmm0, xmm1
    -a-a-a-a-a-a-a addsd-a-a xmm0, xmm6
    -a-a-a-a-a-a-a movapd-a xmm2, xmm0
    -a-a-a-a-a-a-a movq-a-a-a rdx, xmm0
    -a-a-a-a-a-a-a subsd-a-a xmm2, xmm6
    -a-a-a-a-a-a-a subsd-a-a xmm1, xmm2
    -a-a-a-a-a-a-a movq-a-a-a rax, xmm1
    -a-a-a-a-a-a-a xchg-a-a-a rax, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm1, rdx
    -a-a-a-a-a-a-a movq-a-a-a xmm0, rax
    -a-a-a-a-a-a-a ret

    That's 35 instructions for the DWAdd (excluding the RET).
    There are a lot of MOV's because of the two operand operations.

    I added the code for double-double multiply.
    It uses FMA which requires including math.h and enabling its with a #define. >>
    To get GCC to use the FMA instruction I had to use -march=haswell
    which also has the effect of enabling the 3 operand instructions
    which lowers the DWBFAdd instruction count to 24.
    DWBFMul is 14 instructions.

    #define FP_FAST_FMA (1)
    #include <math.h>

    static DPairT TwoProd (double a, double b)
    {
    DPairT c;

    c.Val = a * b;
    c.Ext = fma(a, b, -c.Val);
    return c;
    }

    BGB should note: the preceding code only "works" when FMAC produces
    all 106-bits of the pre-rounded product.

    Yes, this is however the defined behavior of "fma()", and "fma()" is for
    the cases where this behavior is actually needed, so a version that
    failed to do so would in effect be kinda useless for its intended purpose...

    Doesn't mean though that it needs to be a single CPU instruction
    (arguably, doing this fast and in native hardware would be desirable,
    but is not always realistic).



    From my C library:
    <===
    double fma(double x, double y, double z)
    {
    long double x1, y1, z1, w1;
    double w;
    x1=x; y1=y; z1=z;
    w1=x1*y1+z1;
    w=w1;
    return(w);
    }


    Where "long double" just sorta converts it to Binary128, and uses
    Binary128 operations (slow, but works).


    However, "fmal()" doesn't currently work correctly (still double-rounded
    ATM), the "TODO" here being to either implement something for full
    Binary128 FMA (in software), or quietly use Binary256. Either way, this
    one is a TODO item ATM.

    ...

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 6 01:17:01 2026
    From Newsgroup: comp.arch


    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-05 15:27, MitchAlsup wrote:
    scott@slp53.sl.home (Scott Lurndal) posted:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Galactic evolution calculations are one. Too many individual stars
    for simple double precision to be enough.

    You don't need floating point to count the number of stars.

    It is not the counting of stars, but the calculation of the gravitational forces of each star on each other star. Sometimes, one also has to consider the speed-of-light problems as separate from the speed-of-gravity {also known as the gravitational anomaly. If the sun disappeared instantaneously the earth would leave its orbit instantaneously, even though we could still see the light from it for 8 minutes.}

    That's Newtonian gravity not relativistic.

    Relativity comes into play when it takes 300,000 years for a star
    on one side of the galaxy to interact with a star on the other
    side. Both will have moved as the waves are in-flight {and so
    will the gas and dust in the galaxy.}

    With relativity if the sun disappeared it would take 8.5 minutes
    for the relaxing of the gravity well wave to arrive.

    That is similar a black hole merger where some of the total
    mass suddenly disappears and is converted to gravity waves
    that radiate outwards at the speed of light.

    Space-time can stretch or contract faster than the speed of light,
    as in the Alcubierre warp drive. https://en.wikipedia.org/wiki/Alcubierre_drive






    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 6 01:19:44 2026
    From Newsgroup: comp.arch


    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> posted:

    On 8/5/2026 12:30 PM, MitchAlsup wrote:

    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-05 13:12, Scott Lurndal wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Torbjorn Lindgren <tl@none.invalid> posted:


    I'm not ruling out that MS WANT everyone to either switch to Azure >>>>> Artifact signing (AAS) service which instead is a pay-per-sign,
    starting at $10/month (max 5000 signings per month) or ship only via >>>>> the MS Store (MS resigns anything coming via the Store). That would be >>>>> very on-brand. And not everyone can get access to AAS even if they >>>>> were willing to pay a monthly fee, there's a number of requirements. >>>>
    "Those who are willing to sacrifice liberty for safety,
    will soon have neither" Ben Franklin.

    The quotation was actually

    "Those who would give up essential Liberty, to purchase a little
    temporary Safety, deserve neither Liberty nor Safety."

    Franklin wrote that to support the assembly's power
    to tax wealthy proprietors to pay for military defense
    during the French and Indian war.

    "Liberty" in this context referred to the communities
    right to self-governance and ability to tax to pay for
    collective self-defence"

    So "liberty" is the governments freedom to choose not the citizens
    (assuming few citizens would willingly tax themselves).

    Liberty is the concept of being out in public without someone following
    you around

    Have a phone? For some reason, I don't. Its bad in case I am in an
    accident or something. But, the little shit is akin to "someone
    following you around"...?

    Most of the time, I do not carry my cell phone around--I want
    to give the spooks the notion that Mitch is stationary in his
    office 99% of the time. They can figure out elsewise when I
    use my credit card to pay for stuff. But it keeps them on
    their toes.


    (although with the number of cameras around today it can be
    argued that none of us have liberty anymore.)

    Well, yeah. But at least they are not mandating "gov" cameras in our
    houses, yet... ;^) kidding, but funny to ponder on.



    Liberty is a right manifest on the citizen by the constitution.

    A right is something the *.gov is not allowed to encumber from its
    citizens (without due process).




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 6 01:28:59 2026
    From Newsgroup: comp.arch


    Terje Mathisen <terje.mathisen@tmsw.no> posted:

    Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    Augmented Add/Mul has two source and two dest registers.

    And this is a requiremnt you cannot get around.

    So if you only have one write port, then the second destination gets
    written one cycle later?

    it is not a "port" count problem, it is a result-count problem
    that any renamer, RoB, or reservation station can solve.

    Terje

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 6 01:32:15 2026
    From Newsgroup: comp.arch


    BGB <cr88192@gmail.com> posted:

    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version.


    I would assume using a 3R form for the basic case, and 4R via a prefix-expanded case or similar.

    Say:
    Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to justify
    the *massive* chunk of encoding space they burnt on this (like, both the
    P and V extensions use less encoding space than just these instructions)..

    My 66000 "burns" 1/8th of its OpCode space for 3r-1w instructions.
    I get {FMAC, INSert, LOOP, and DBLE} leaving 1/2 of this subspace
    left for future purposes.

    The full 4R FMA instructions aren't used anywhere near enough to justify burning this much encoding space on it.

    You should take a look at how much space they burned on 16-bit
    instructions !!! Talk about excessive ...


    Augmented Add/Mul has two source and two dest registers.

    And this is a requiremnt you cannot get around.




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 6 01:35:15 2026
    From Newsgroup: comp.arch


    BGB <cr88192@gmail.com> posted:

    On 8/5/2026 2:35 PM, MitchAlsup wrote:

    EricP <ThatWouldBeTelling@thevillage.com> posted:
    ---------------------

    #define FP_FAST_FMA (1)
    #include <math.h>

    static DPairT TwoProd (double a, double b)
    {
    DPairT c;

    c.Val = a * b;
    c.Ext = fma(a, b, -c.Val);
    return c;
    }

    BGB should note: the preceding code only "works" when FMAC produces
    all 106-bits of the pre-rounded product.

    Yes, this is however the defined behavior of "fma()", and "fma()" is for
    the cases where this behavior is actually needed, so a version that
    failed to do so would in effect be kinda useless for its intended purpose...

    The above only works when both FMUL and FMAC both produce 106-bit
    intermediate results.

    Doesn't mean though that it needs to be a single CPU instruction
    (arguably, doing this fast and in native hardware would be desirable,
    but is not always realistic).



    From my C library:
    <===
    double fma(double x, double y, double z)
    {
    long double x1, y1, z1, w1;
    double w;
    x1=x; y1=y; z1=z;
    w1=x1*y1+z1;
    w=w1;
    return(w);
    }


    Where "long double" just sorta converts it to Binary128, and uses
    Binary128 operations (slow, but works).


    However, "fmal()" doesn't currently work correctly (still double-rounded ATM), the "TODO" here being to either implement something for full
    Binary128 FMA (in software), or quietly use Binary256. Either way, this
    one is a TODO item ATM.

    ...

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Aug 5 22:10:39 2026
    From Newsgroup: comp.arch

    On 8/5/2026 8:35 PM, MitchAlsup wrote:

    BGB <cr88192@gmail.com> posted:

    On 8/5/2026 2:35 PM, MitchAlsup wrote:

    EricP <ThatWouldBeTelling@thevillage.com> posted:
    ---------------------

    #define FP_FAST_FMA (1)
    #include <math.h>

    static DPairT TwoProd (double a, double b)
    {
    DPairT c;

    c.Val = a * b;
    c.Ext = fma(a, b, -c.Val);
    return c;
    }

    BGB should note: the preceding code only "works" when FMAC produces
    all 106-bits of the pre-rounded product.

    Yes, this is however the defined behavior of "fma()", and "fma()" is for
    the cases where this behavior is actually needed, so a version that
    failed to do so would in effect be kinda useless for its intended purpose...

    The above only works when both FMUL and FMAC both produce 106-bit intermediate results.


    That is... Assuming the implementation does the FMA part via the FPU (as opposed to, say, via 128-bit integer math).

    As for the first "a * b", as long as it is "close enough" it should
    still work OK. The accuracy of the initial multiply may effect the
    magnitude of the residual from the FMA, but this would appear to be a
    free variable in this scenario.

    Most drastic effect is that it may have an effect of +/- 1 on the
    exponent of "c.Ext" (or, the difference in exponents is 51 rather than
    52 for some range of inputs; whereas a strict 0.5 ULP would preserve a consistent 52-bit distance, or for a minority of cases, a delta > 52 bits).


    The question then becomes: does "fma()" produce a 106 bit result?

    It will, in this case, if:
    It uses "long double" or similar;
    And, "long double" has a 112 bit mantissa;
    And, "long double" produces an accurate result.

    As for what happens with "long double"? Well, either:
    It calls runtime functions, which evaluate it via integer math;
    It uses FMULX or FMUL.Q or similar, which trap into the kernel, which
    then does it via integer math.

    So, this part works either way.


    What about the "a*b", well, one of:
    FPU is in the normal (inexact) mode:
    It produces its usual truncated result;
    Maybe, the ULP is rounded wrong;
    c.Ext has an exponent that is 1 place bigger.
    FPU is in IEEE mode:
    The FMUL detects that both inputs have non-zero LOBs;
    It traps into the kernel;
    The kernel then does a slower but more accurate FMUL.


    Granted, it would be more efficient in these cases to just use "long
    double", or maybe to do a single multiply and then crack it into two
    parts after the fact, say:
    long double la, lb, lz;
    la = a;
    lb = b;
    lz = la * lb;
    c.Val = (double)lz;
    c.Ext = (double)(lz - c.Val);

    But, this kinda misses the point of the exercise I think.


    Granted, depends on how good the (not particularly well tested)
    Binary128 implementation is...

    But, yeah, the "long double" support is still a little bit "living on
    faith" at this point.


    Well, apart from sinl/cosl/etc which just sorta through up their hands
    and fall back to the 'double' versions (this being another TODO/FIXME
    type of thing).


    Doesn't mean though that it needs to be a single CPU instruction
    (arguably, doing this fast and in native hardware would be desirable,
    but is not always realistic).



    From my C library:
    <===
    double fma(double x, double y, double z)
    {
    long double x1, y1, z1, w1;
    double w;
    x1=x; y1=y; z1=z;
    w1=x1*y1+z1;
    w=w1;
    return(w);
    }


    Where "long double" just sorta converts it to Binary128, and uses
    Binary128 operations (slow, but works).


    However, "fmal()" doesn't currently work correctly (still double-rounded
    ATM), the "TODO" here being to either implement something for full
    Binary128 FMA (in software), or quietly use Binary256. Either way, this
    one is a TODO item ATM.

    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Thu Aug 6 05:44:32 2026
    From Newsgroup: comp.arch

    Stefan Monnier <monnier@iro.umontreal.ca> schrieb:
    I tend to suspect, though, that instead of extending the precision to
    such a great extent, and increasing the exponent range only modestly,
    the more urgent need is to extend the exponent range.

    Why?

    I actually have one application where a larger exponent range would
    help, integrating over deformation gradient tensors in laminar mixing
    over time along a moving material particle.

    To be any good, such mixing needs to be chaotic, which means
    exponential growth in the resulting deformation tensors. I tend
    to hit the double precision limit pretty fast then.

    But I suspect that the mathematical method could be improved,
    I just don't know how (at the moment). But since this is a low-
    priority project, so I haven't spent much time on it.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Thu Aug 6 06:10:06 2026
    From Newsgroup: comp.arch

    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?

    Yes.

    Because that would just be expanded by decode into a 4 operand version.

    Sure, but you need an additional register move.

    Here's the script for it (the "if" branch is empty because
    there was debugging output in there before and I didn't
    bother reversing the condition)

    #! /usr/bin/perl -w

    $n_fma = 0;
    $n_four = 0;
    while (<>) {
    if (/^\s+fmac\s+([^,]+),([^,]+),([^,]+),-?([^,]+)\s+/) {
    $n_fma ++;
    if ($1 eq $2 || $1 eq $3 || $1 eq $4 ||
    $2 eq $3 || $2 eq $4 || $3 eq $4) {
    }
    else {
    $n_four ++;
    }
    }
    }

    print $n_four / $n_fma,"\n";
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Thu Aug 6 06:11:12 2026
    From Newsgroup: comp.arch

    BGB <cr88192@gmail.com> schrieb:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version.


    I would assume using a 3R form for the basic case, and 4R via a prefix-expanded case or similar.

    Say:
    Rd=Rs*Rt+Rd;

    A register move would suffice. If that is zero-cycle, there
    is no need for a prefix.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Thu Aug 6 03:11:28 2026
    From Newsgroup: comp.arch

    On 8/6/2026 1:11 AM, Thomas Koenig wrote:
    BGB <cr88192@gmail.com> schrieb:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version.


    I would assume using a 3R form for the basic case, and 4R via a
    prefix-expanded case or similar.

    Say:
    Rd=Rs*Rt+Rd;

    A register move would suffice. If that is zero-cycle, there
    is no need for a prefix.


    OK.

    I was assuming 1-cycle MOV cost, but 0-cycle prefix cost.

    In my ISA, only the basic form exists as the 32-bit encoding though,
    where with the prefix one gets all 4 cases:
    Rd=Rs*Rt+Ru
    Rd=Rs*Rt-Ru
    Rd=-(Rs*Rt)+Ru
    Rd=-(Rs*Rt)-Ru

    In my ISA though, they were defined as double-rounded.


    In XG3 one can get single-rounded forms by borrowing them from RISC-V,
    but... They are going to be slow...

    No good solution here:
    Spec says single rounding.

    If the ops were treated as double-rounded, no huge speed penalty from
    not using "-ffp-contract=off" if using RV64+GCC;
    But, then "fma()" in "math.h" is broken...

    Or, one uses traps such that single-rounding is preserved...
    But, then failing to build with "-ffp-contract=off" may result in a significant performance hit from some code.

    At present, it is more a case of the latter.



    Then feels curious and checks how GCC handles "long double" on RV64.
    Looks like it is library calls, which is not surprising, but then it is
    also a lot of:
    ld; ld; ld; ld; call; sd; sd
    ld; ld; ld; ld; call; sd; sd
    ...
    Just sort of shuffling everything around via loads/stores to the stack.

    long double dx, dy;
    ...
    dy=dx;
    ld; ld; sd; sd
    Like, I know this stuff isn't exactly going to be fast, but this is
    still just kinda sad...

    On the positive side, it would appear that RV64 GCC has __int128...
    On the negative side, it also mostly does a whole lot of stack shuffling
    (but does at least appear able to use registers).


    Then again, the 10 callee-save registers that RV64 offers don't exactly
    go very far when used for 128-bit pairs. Also part of why BGBCC moved
    F4..F7 from scratch to callee save, as this was a help some with
    register pressure when working with 128-bit data (and mostly keeps 128
    bit types on the F register side).


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Thu Aug 6 10:12:43 2026
    From Newsgroup: comp.arch

    Thomas Koenig <tkoenig@netcologne.de> writes:
    A register move would suffice. If that is zero-cycle, there
    is no need for a prefix.

    Intel and AMD have had zero-cycle moves for a while. And yet they are
    adding a general scheme of non-overwriting prefixes with APX (with
    Nova Lake for Intel according to rumors, I have read no rumors for
    AMD).

    So apparently it is easier to implement such a prefix scheme than
    providing the same level of performance with moves and overwriting instructions.

    Why is that so? My guess is that it is due to dealing with
    exceptions. Consider

    reg1 <- reg2
    reg1 <- reg1 op operand

    If op or the access to operand can trap, the decide cannot just
    optimize that to

    reg1 <- reg2 op operand

    because in case of a trap, one needs to be able to produce the state
    between the move and the trapping instruction. With a non-overwriting
    prefix, this problem does not exist.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Thu Aug 6 10:16:06 2026
    From Newsgroup: comp.arch

    On 2026-Aug-05 18:41, BGB wrote:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version.


    I would assume using a 3R form for the basic case, and 4R via a prefix-expanded case or similar.

    Say:
    -a Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to justify the *massive* chunk of encoding space they burnt on this (like, both the P and V extensions use less encoding space than just these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Thu Aug 6 10:41:58 2026
    From Newsgroup: comp.arch

    On 2026-Aug-06 02:10, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?

    Yes.

    Because that would just be expanded by decode into a 4 operand version.

    Sure, but you need an additional register move.

    I was thinking that the 3R instruction is just a compact
    form of the 4R instruction:

    FMA3 r1.rw = r1.rw + (r2.r * r3.r)
    FMA4 r1.w = r2.r + (r3.r * r4.r)

    and then throw in two negation control bits on he addend and product

    FMA3 r1.rw = (neg1)r1.rw + (neg2)(r2.r * r3.r)
    FMA4 r1.w = (neg1)r2.r + (neg2)(r3.r * r4.r)

    Internally it decodes FMA3 to a 4R uOp, 3 source and 1 dest,
    and decode just has to copy r1 source into the uOp's
    rDest and rSrc1 fields.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 6 17:23:05 2026
    From Newsgroup: comp.arch


    Terje Mathisen <terje.mathisen@tmsw.no> posted:

    MitchAlsup wrote:

    Terje Mathisen <terje.mathisen@tmsw.no> posted:

    Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    Augmented Add/Mul has two source and two dest registers.

    And this is a requiremnt you cannot get around.

    So if you only have one write port, then the second destination gets
    written one cycle later?

    it is not a "port" count problem, it is a result-count problem
    that any renamer, RoB, or reservation station can solve.

    So in effect: If an OoO cpu can retire up to 6 or 8 instructions/cycle,
    then having a few instructions that supply two of those retirees would
    not even cause a bubble?

    Yes, an occasional bubble but not always--as long as the register port-count
    is larger than the average retirement-count, it should work smoothly.

    Terje

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 6 17:29:26 2026
    From Newsgroup: comp.arch


    anton@mips.complang.tuwien.ac.at (Anton Ertl) posted:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    A register move would suffice. If that is zero-cycle, there
    is no need for a prefix.

    Intel and AMD have had zero-cycle moves for a while. And yet they are
    adding a general scheme of non-overwriting prefixes with APX (with
    Nova Lake for Intel according to rumors, I have read no rumors for
    AMD).

    Intel and AMD are saddled up to x86 which has a destructive calculation
    model. 0 cycle MOVs are a way of reducing the problem. A RISC architecture would not have this problem and not need 0 cycle MOVs (to the same extent).

    So apparently it is easier to implement such a prefix scheme than
    providing the same level of performance with moves and overwriting instructions.

    Compared to abandoning x86 ISA, yes 0 cycle moves are easy.
    Compared to not needing them in the first place, not so much.

    Why is that so? My guess is that it is due to dealing with
    exceptions. Consider

    reg1 <- reg2
    reg1 <- reg1 op operand

    If op or the access to operand can trap, the decide cannot just
    optimize that to

    reg1 <- reg2 op operand

    because in case of a trap,

    you mean exception. A trap would look like::

    reg1 <- reg2
    TRAP
    reg1 <- reg1 OP operand

    one needs to be able to produce the state
    between the move and the trapping instruction. With a non-overwriting prefix, this problem does not exist.

    Another reason fewer instructions is better than 0-cycle MOVs.

    - anton
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Thu Aug 6 14:54:24 2026
    From Newsgroup: comp.arch

    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version.


    I would assume using a 3R form for the basic case, and 4R via a
    prefix-expanded case or similar.

    Say:
    -a-a Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to
    justify the *massive* chunk of encoding space they burnt on this
    (like, both the P and V extensions use less encoding space than just
    these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to
    justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.


    In RV's case, they also burn an additional:
    2-bit type selector (S/D/H/Q);
    3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, DYN).

    So, each costs 25 bits.
    Though, 20 bits would still have been steep, 25 is worse.
    This puts the cost of each on par with a JAL or LUI or similar.

    The 2-bit type-selector and 3-bit rounding mode is common to most of the
    FPU ops in RV's case.


    Though, yeah, in theory one could reuse rounding modes 5 and 6 as escape
    cases to reclaim some of the encoding space.

    Say, FMADD.Q and friend with rounding modes 5/6 turns the 4th register
    field back into opcode bits, and then has space for up to 256x 128-bit
    SIMD ops or similar...


    In my RV-SIMD extensions, I had already used these rounding modes for
    the normal F/D instructions as an escape case to specify 128-bit SIMD
    variants (as RNE and RTZ).

    Most of the other RV-SIMD cases were based on a different premise:
    Value isn't NaN boxed (and RM is RNE or RTZ), treat as SIMD.

    Or, feed 2x Binary32 through an FADD.S:
    If result is NaN-boxed or similar: No SIMD.
    If result is ~= the SIMD result, we have SIMD.

    A similar setup can be used to detect the 128-bit SIMD ops.
    Most ops remain as-is, just operating on SIMD vectors in place of scalars.

    This is pretty much invisible to normal code.
    Note that in this case, the DYN rounding mode remains scalar-only.


    ...


    For XG3, there are no 4R instructions, but with 6-bit register fields
    this would burn 24 bits.

    But, can note:
    zzzz-oooooo-mmmmmm-zzzz-nnnnnn-q-yyy-pp //3R
    iiii-iiiiii-mmmmmm-zzzz-nnnnnn-q-yyy-pp //3RI (Imm10/Disp10)
    iiii-iiiiii-iiiiii-zzzz-nnnnnn-q-yyy-pp //2RI (Imm16)
    iiii-iiiiii-iiiiii-zzzz-jjjjjj-k-yyy-pp //Disp23 (BRA/BSR)
    No real place to put a 4th register here.

    Where, pp:
    00: OP?T (Predicated-True)
    01: OP?F (Predicated-False)
    10: OP (Always)
    11: RV64G (RISC-V space)
    And, yyy:
    000: 3R ops (Mostly)
    001: LD/ST ops (and Bcc), Disp10s
    010: 3RI ops (Imm10s)
    011: User-Block
    100: 2RI, Imm16
    101: More 3R space
    110: Jumbo Prefix (J_IMM)
    111: Jumbo Prefix (J_OP)
    n/m/o: Registers
    z: opcode
    q: Context sensitive bit, usually opcode.


    Of the ISA variants, XG3 effectively ended up with the biggest
    Jumbo-Prefix space. Typically, J_IMM extends immediates to 33 bits, but
    may leave some bits left over, these are all MBZ for now.

    Formerly, ADD and friends had 10u and 10n variants, but I chose (at the
    cost of breaking backwards compatibility) to collapse them down to
    Imm10s. This now unifies all of the Imm10 ALU ops in XG3 as Imm10s.


    The J_OP can optionally turn a 3R into a 4R, or 2R into a 3R.
    So, a J_OP prefix was used to encode the 4R FMA forms; though FMA isn't generally used by BGBCC (at least not in the way GCC uses it), because
    even the double-rounded case offers no real performance advantage in
    this case.


    It is possible that it could make sense to evaluate widening the path
    between the FMUL and FADD stages in the FPU while still preserving the existing structure and ability to break these into two separate units
    when needed (vs forcing the full latency every time). This would mean an additional 52 bits routed from the FMUL to the FADD representing the
    low-order results of the FMUL's result (and/or a full-width result, but
    with an extra clock-cycle spent on the adder chains, with the primary
    output still containing the final result of a truncated multiply).

    Then again, even if I still couldn't make it faster than 12 cycles,
    could possibly try to make the case of "more expensive Single-Rounded
    FMA is justified in that RISC-V's FMADD.D would no longer tank
    performance with emulation traps...".

    And, would allow for a potentially faster way to evaluate the "fma()" function.

    Well, and a way to avoid a lot of the FPU emulation traps. Just, say,
    FMUL having a cost of 6 or 12 cycles depending on input values (you get 12-cycle FMUL if it is given sub-normal inputs or it triggers the non-zero-LOBs handling).

    In this case, maybe the mode selection goes from strict IEEE
    enforcement, to whether one always wants the 6-cycle FMUL result or is
    willing to wait 12 cycles when needed for more accuracy (and support for subnormal numbers vs DAZ/FTZ).

    Hmm...



    Could in theory use it for SIMD-FMA, but a SIMD FMA that would ends up
    taking 16 clock cycles is "not very useful" (SIMD cases add 4 cycles to
    the total latency that is used to pipeline each element through the main
    FPU).

    Note that the dedicated SIMD unit is faster mostly because it does 4
    elements in parallel, but at "Barely Binary32" precision. Had tried but
    failed to fit FMA into a 3-cycle window (even with Binary16). Note that anything which can't fit in this window can't be pipelined.

    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Thu Aug 6 13:17:17 2026
    From Newsgroup: comp.arch

    On 8/5/2026 12:20 PM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>> 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    I want to take a somewhat different approach to answering this question
    than the need for precision arguments presented elsewhere in this
    thread. I don't believe there will be any hardware implementation of
    FP256 for at least several decades. This is based on a "register
    argument". That is, I assume any hardware implementation would require
    the operands to be in some kind of registers, not only in main memory.

    At the current moment, FP128 use is low to at best moderate--that is we occasionally want to do FP128 calculations, but we are no where near
    wanting to build architectures that concentrate heavily on FP128 {whether register based or memory based or some where in between}. FP256 has even lower use patterns.

    If one is willing to say FP256 operations can take place *only* in some
    kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, then
    things aren't too bad. You need new op-codes, of course, and you reduce
    the number of parallel operations, but it fits reasonably well.

    It screws up the reservation station models by needing to wait for 4
    set of operands before starting calculations. Whether VR or GPR or FPR.

    But if you want to support FP256 operations in non-vector registers,
    things get ugly.

    Even uglier when one considers argument and result passings.

    The obvious reason is that, with the 64 bit registers
    we have today, each FP256 operand requires four registers (256/64). So
    a typical FP256 operation such as FPADD requiring two sources and a
    destination requires 4 * 3 = 12 registers.

    Which is why we can dabble in FP128 and consider dabbling in FP256
    but we really don't want to go "Whole Hog" in either.

    If you want any amount of
    parallelism, even more are required.

    I suspect the compiler's register use pattern would be fairly easy
    to rename into a sufficiently high-count PRF.

    Two operations in parallel require
    24 registers! This leaves relatively few registers for other, typical
    uses. If you have a unified registers set (i.e. no dedicated FP
    registers), the register pressure is worse. As a side note, if, like
    Mitch, you don't like register pairing, i.e. the instruction specifies
    one register but that implies use of at least one adjacent register,
    then you have to somehow specify all 12 registers in the instruction (or
    instruction modifier). Ugggh!

    I recently added the DBLE instruction-modifier to My 66000 ISA. DBLE is
    a 3-register i-m that supplies 3 operands and 1 <more> result register
    (or constants !!) to the immediately successive instruction. On lower
    end machines it would decode-execute-retire as 2 instructions; on middle
    end machines it would decode as one, reside in stations as 2, and then execute as one; in High end machines the pair is treated uniformly as
    a single instruction. 1 instruction added, ~40 - 128-bit calculations
    added to useable ISA.

    The obvious solution is going from 64 to 128 bit registers. But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements. I haven't kept up, but it
    used to be that these requirements grew by something like 1 bit every
    2-3 years, but seemed like it was slowing down. (I welcome any updates
    to these numbers). So if we are at say 54 bits now, then requiring more
    than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256
    for at least two decades.

    Which is, of course, longer than I have left above ground.

    While probably true, assuming that your architecture is wildly
    successful, and far outlives you, you don't want future architects/users posthumously cursing your memory saying things like "If only he had . .
    ." For example, not requiring the upper byte as zero in S/360
    addresses, or several things in 8086.

    So I think it is worth some time thinking about trying to "future proof"
    an architecture. And since the consensus seems to be the worst mistake
    in computer architecture is not allowing enough address bits, I think
    you should spend a little time thinking about how the architecture would
    adapt to 128 bit addressing.

    Just my opinion.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Thu Aug 6 20:36:38 2026
    From Newsgroup: comp.arch

    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    Thomas Koenig <tkoenig@netcologne.de> writes:
    A register move would suffice. If that is zero-cycle, there
    is no need for a prefix.

    Intel and AMD have had zero-cycle moves for a while. And yet they are
    adding a general scheme of non-overwriting prefixes with APX (with
    Nova Lake for Intel according to rumors, I have read no rumors for
    AMD).

    So apparently it is easier to implement such a prefix scheme than
    providing the same level of performance with moves and overwriting instructions.

    Let's look at some data. Comparing POWER and x86_64 for the
    number of register moves (obviously different systems, but
    enough for a rough comparison)

    POWER x86_64
    /usr/bin/cc 8.68 % 12.13 %
    /usr/bin/grep 7.39 % 10.30 %
    /usr/bin/luatex 8.24 % 12.08 %
    /usr/bin/emacs 6.78 % 9.77 %

    I am actually a little bit surprised that the difference is not
    larger, especially since register moves on POWER are not zero cost.

    But apart from not having to shuffle around values in registers,
    having fewer memory accesses by being able to store more values
    in registers is also a big win.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Thu Aug 6 20:40:29 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    Intel and AMD are saddled up to x86 which has a destructive calculation model. 0 cycle MOVs are a way of reducing the problem. A RISC architecture would not have this problem and not need 0 cycle MOVs (to the same extent).

    Considering the numbers I just posted elsethread, I think that
    zero-cycle register moves can also benefit a RISC architecture,
    quite a lot. Of course those were static counts, not dynamic.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Thu Aug 6 10:39:01 2026
    From Newsgroup: comp.arch

    Thomas Koenig [2026-08-06 05:44:32] wrote:
    Stefan Monnier <monnier@iro.umontreal.ca> schrieb:
    I tend to suspect, though, that instead of extending the precision to
    such a great extent, and increasing the exponent range only modestly,
    the more urgent need is to extend the exponent range.
    Why?
    [...]
    To be any good, such mixing needs to be chaotic, which means
    exponential growth in the resulting deformation tensors. I tend
    to hit the double precision limit pretty fast then.

    But the IEEE format for 128bit and 256bit formats *already* extend the
    exponent (to 15 and 19 bits respectively, IIRC), so would that still be insufficient? And if 19bits are still insufficient, how many
    would suffice?


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 7 01:18:28 2026
    From Newsgroup: comp.arch


    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/5/2026 12:20 PM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>> 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming
    decade (or farther out) ??

    I want to take a somewhat different approach to answering this question
    than the need for precision arguments presented elsewhere in this
    thread. I don't believe there will be any hardware implementation of
    FP256 for at least several decades. This is based on a "register
    argument". That is, I assume any hardware implementation would require
    the operands to be in some kind of registers, not only in main memory.

    At the current moment, FP128 use is low to at best moderate--that is we occasionally want to do FP128 calculations, but we are no where near wanting to build architectures that concentrate heavily on FP128 {whether register based or memory based or some where in between}. FP256 has even lower use patterns.

    If one is willing to say FP256 operations can take place *only* in some
    kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, then >> things aren't too bad. You need new op-codes, of course, and you reduce >> the number of parallel operations, but it fits reasonably well.

    It screws up the reservation station models by needing to wait for 4
    set of operands before starting calculations. Whether VR or GPR or FPR.

    But if you want to support FP256 operations in non-vector registers,
    things get ugly.

    Even uglier when one considers argument and result passings.

    The obvious reason is that, with the 64 bit registers >> we have today, each FP256 operand requires four registers (256/64). So
    a typical FP256 operation such as FPADD requiring two sources and a
    destination requires 4 * 3 = 12 registers.

    Which is why we can dabble in FP128 and consider dabbling in FP256
    but we really don't want to go "Whole Hog" in either.

    If you want any amount of
    parallelism, even more are required.

    I suspect the compiler's register use pattern would be fairly easy
    to rename into a sufficiently high-count PRF.

    Two operations in parallel require >> 24 registers! This leaves relatively few registers for other, typical
    uses. If you have a unified registers set (i.e. no dedicated FP
    registers), the register pressure is worse. As a side note, if, like
    Mitch, you don't like register pairing, i.e. the instruction specifies
    one register but that implies use of at least one adjacent register,
    then you have to somehow specify all 12 registers in the instruction (or >> instruction modifier). Ugggh!

    I recently added the DBLE instruction-modifier to My 66000 ISA. DBLE is
    a 3-register i-m that supplies 3 operands and 1 <more> result register
    (or constants !!) to the immediately successive instruction. On lower
    end machines it would decode-execute-retire as 2 instructions; on middle end machines it would decode as one, reside in stations as 2, and then execute as one; in High end machines the pair is treated uniformly as
    a single instruction. 1 instruction added, ~40 - 128-bit calculations
    added to useable ISA.

    The obvious solution is going from 64 to 128 bit registers. But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements. I haven't kept up, but it
    used to be that these requirements grew by something like 1 bit every
    2-3 years, but seemed like it was slowing down. (I welcome any updates
    to these numbers). So if we are at say 54 bits now, then requiring more >> than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256
    for at least two decades.

    Which is, of course, longer than I have left above ground.

    While probably true, assuming that your architecture is wildly
    successful, and far outlives you, you don't want future architects/users posthumously cursing your memory saying things like "If only he had . .
    ." For example, not requiring the upper byte as zero in S/360
    addresses, or several things in 8086.

    This (amongst others) is a reason an ISA should remain "under covers"
    long enough that the failing features can be identified and fixed.

    So I think it is worth some time thinking about trying to "future proof"
    an architecture.

    You can only make the architecture live a long life. There is no such
    thing as "future proof" since the future will continue for 107^79 more
    years.

    And since the consensus seems to be the worst mistake
    in computer architecture is not allowing enough address bits, I think
    you should spend a little time thinking about how the architecture would adapt to 128 bit addressing.

    DBLE

    Just my opinion.



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 7 01:15:12 2026
    From Newsgroup: comp.arch


    BGB <cr88192@gmail.com> posted:

    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version. >>>

    I would assume using a 3R form for the basic case, and 4R via a
    prefix-expanded case or similar.

    Say:
    -a-a Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to
    justify the *massive* chunk of encoding space they burnt on this
    (like, both the P and V extensions use less encoding space than just
    these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to
    justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.


    In RV's case, they also burn an additional:
    2-bit type selector (S/D/H/Q);
    3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, DYN).

    Well there is a waste of entropy.

    So, each costs 25 bits.
    Though, 20 bits would still have been steep, 25 is worse.
    This puts the cost of each on par with a JAL or LUI or similar.

    Nobody ever said RISC-V is peoperly encoded.

    The 2-bit type-selector and 3-bit rounding mode is common to most of the
    FPU ops in RV's case.


    Though, yeah, in theory one could reuse rounding modes 5 and 6 as escape cases to reclaim some of the encoding space.

    Making Decode even more difficult.
    -----------------

    It is possible that it could make sense to evaluate widening the path between the FMUL and FADD stages in the FPU while still preserving the existing structure and ability to break these into two separate units
    when needed (vs forcing the full latency every time).

    You still (after 10 years) don't get it. You need an FMAC that is IEEE
    754-2008 accurate--which requires a 53|u53 multiplier tree. There is
    simply no way around this F A C T.

    This would mean an additional 52 bits routed from the FMUL to the FADD representing the low-order results of the FMUL's result (and/or a full-width result, but
    with an extra clock-cycle spent on the adder chains, with the primary
    output still containing the final result of a truncated multiply).

    This still does not work without the 53|u53 multiplier tree. You may
    inch closer, but in IEEE-754 sense, you remain miles away.

    Then again, even if I still couldn't make it faster than 12 cycles,
    could possibly try to make the case of "more expensive Single-Rounded
    FMA is justified in that RISC-V's FMADD.D would no longer tank
    performance with emulation traps...".

    And, would allow for a potentially faster way to evaluate the "fma()" function.

    Which should be an instruction !

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 7 01:20:18 2026
    From Newsgroup: comp.arch


    Thomas Koenig <tkoenig@netcologne.de> posted:

    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    Thomas Koenig <tkoenig@netcologne.de> writes:
    A register move would suffice. If that is zero-cycle, there
    is no need for a prefix.

    Intel and AMD have had zero-cycle moves for a while. And yet they are adding a general scheme of non-overwriting prefixes with APX (with
    Nova Lake for Intel according to rumors, I have read no rumors for
    AMD).

    So apparently it is easier to implement such a prefix scheme than
    providing the same level of performance with moves and overwriting instructions.

    Let's look at some data. Comparing POWER and x86_64 for the
    number of register moves (obviously different systems, but
    enough for a rough comparison)

    POWER x86_64
    /usr/bin/cc 8.68 % 12.13 %
    /usr/bin/grep 7.39 % 10.30 %
    /usr/bin/luatex 8.24 % 12.08 %
    /usr/bin/emacs 6.78 % 9.77 %

    I am actually a little bit surprised that the difference is not
    larger, especially since register moves on POWER are not zero cost.

    I rarely see a MOV that is not associated with argument passing and
    returning in My 66000 asm.

    But apart from not having to shuffle around values in registers,
    having fewer memory accesses by being able to store more values
    in registers is also a big win.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 7 01:22:17 2026
    From Newsgroup: comp.arch


    Thomas Koenig <tkoenig@netcologne.de> posted:

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    Intel and AMD are saddled up to x86 which has a destructive calculation model. 0 cycle MOVs are a way of reducing the problem. A RISC architecture would not have this problem and not need 0 cycle MOVs (to the same extent).

    Considering the numbers I just posted elsethread, I think that
    zero-cycle register moves can also benefit a RISC architecture,
    quite a lot. Of course those were static counts, not dynamic.

    The depth of the execution window determines how much latency the
    machine can tolerate without slowing down. With EWs nearing 300
    instructions, I suspect that the gain is smaller than you surmise.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Thu Aug 6 21:47:51 2026
    From Newsgroup: comp.arch

    On 8/6/2026 8:15 PM, MitchAlsup wrote:

    BGB <cr88192@gmail.com> posted:

    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version. >>>>>

    I would assume using a 3R form for the basic case, and 4R via a
    prefix-expanded case or similar.

    Say:
    -a-a Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to
    justify the *massive* chunk of encoding space they burnt on this
    (like, both the P and V extensions use less encoding space than just
    these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to
    justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.


    In RV's case, they also burn an additional:
    2-bit type selector (S/D/H/Q);
    3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, DYN).

    Well there is a waste of entropy.


    Yes...


    So, each costs 25 bits.
    Though, 20 bits would still have been steep, 25 is worse.
    This puts the cost of each on par with a JAL or LUI or similar.

    Nobody ever said RISC-V is peoperly encoded.

    The 2-bit type-selector and 3-bit rounding mode is common to most of the
    FPU ops in RV's case.


    Though, yeah, in theory one could reuse rounding modes 5 and 6 as escape
    cases to reclaim some of the encoding space.

    Making Decode even more difficult.
    -----------------


    Far from the worst encoding hack I have seen proposed...

    Some people had proposed doing RV-C style 3-bit registers for ops within
    the 32-bit encoding space, to which I am like "Nooo! That sucks..."


    At least falling back from special RM to using the 4th register as
    opcode bits, fits the same encoding pattern as all the other 3R ops.



    It is possible that it could make sense to evaluate widening the path
    between the FMUL and FADD stages in the FPU while still preserving the
    existing structure and ability to break these into two separate units
    when needed (vs forcing the full latency every time).

    You still (after 10 years) don't get it. You need an FMAC that is IEEE 754-2008 accurate--which requires a 53|u53 multiplier tree. There is
    simply no way around this F A C T.


    I didn't specify here, but the supporting the wider output also involves re-adding the low half of the multiplier tree. Like it would be
    pointless to make the output wider and not re-add the low order results
    (like, what then, just fill it with zeroes?...).


    But, the claim was not that a high-half-only multiplier gives IEEE exact results, or is IEEE compliant, merely that it is cheaper, and for most
    common tasks, the difference (or lack of IEEE compliance for the
    results) does not matter in practice (well, failure of N-R to converge
    on an exact answer or similar notwithstanding; that is an annoyance).

    Rather, I have noted on multiple times that my FPU design is (in its
    base mode) inherently non-compliant (and that the way for getting
    accurate results was to detect the failure cases, trap, and fall back to
    a software implementation that *does* do a full width multiply...).

    Even if, yes, trap and emulate sucks and is slow.



    This would mean an
    additional 52 bits routed from the FMUL to the FADD representing the
    low-order results of the FMUL's result (and/or a full-width result, but
    with an extra clock-cycle spent on the adder chains, with the primary
    output still containing the final result of a truncated multiply).

    This still does not work without the 53|u53 multiplier tree. You may
    inch closer, but in IEEE-754 sense, you remain miles away.



    I have experimented with going an implementing it for now, in any case:
    There are two outputs, one produces the inexact output, at the original latency;
    The other produces a full-width output, which is hard-wired into the
    FADD (instead of an output-rounding stage, it has another adder stage);
    The FADD also needed to be widened.

    Some work may still be needed for the FADD part in this case.
    Then may need to come up with some test cases.


    So:
    DAZ/FTZ mode: still uses the original inexact output.
    The IEEE mode: Feeds a full-width output into the FADD unit (for both
    FMA and FMUL).

    In the latter case, general FMUL latency increases to 12 cycles. For now
    it will be always increased to 12 cycles (TODO: Add an early-out
    mechanism or similar in cases where the original result is verifiable as exact).

    At present, LUT cost goes up by 2% and timing fails, but it is close
    enough that I may be able to make it work.


    Then again, even if I still couldn't make it faster than 12 cycles,
    could possibly try to make the case of "more expensive Single-Rounded
    FMA is justified in that RISC-V's FMADD.D would no longer tank
    performance with emulation traps...".

    And, would allow for a potentially faster way to evaluate the "fma()"
    function.

    Which should be an instruction !


    The C standard doesn't require this.

    But, yes, the "long double" option sucks from a performance POV, ...



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Fri Aug 7 07:51:56 2026
    From Newsgroup: comp.arch

    Thomas Koenig <tkoenig@netcologne.de> writes:
    Comparing POWER and x86_64 for the
    number of register moves (obviously different systems, but
    enough for a rough comparison)

    POWER x86_64
    /usr/bin/cc 8.68 % 12.13 %
    /usr/bin/grep 7.39 % 10.30 %
    /usr/bin/luatex 8.24 % 12.08 %
    /usr/bin/emacs 6.78 % 9.77 %

    I am actually a little bit surprised that the difference is not
    larger, especially since register moves on POWER are not zero cost.

    There are a lot of instructions where one of the sources is dead
    afterwards, so you can often use instructions where one source reg is
    the same as the destination reg without requiring an extra move.

    Using overwriting instructions is common in compressed instruction
    sets (ARM T32, RISC-V C, probably MIPS16, IIRC in one of the Berkeley
    RISCs, in MIPS-X; I guess also in ROMP).

    But apart from not having to shuffle around values in registers,
    having fewer memory accesses by being able to store more values
    in registers is also a big win.

    APX also increases the number of GPRs to 32 using some new prefix, but
    IIRC the encoding for the non-overwriting instructions is separate
    (and takes some extra byte(s?)). So you can have overwriting
    instructions with the additional registers, but (using a different
    prefix) have a non-overwriting version of the instruction. I.e., the overwriting version is not just the non-overwriting version with the
    same source and destination register.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Fri Aug 7 08:10:56 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    Thomas Koenig <tkoenig@netcologne.de> posted:

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    Intel and AMD are saddled up to x86 which has a destructive calculation
    model. 0 cycle MOVs are a way of reducing the problem. A RISC architecture >> > would not have this problem and not need 0 cycle MOVs (to the same extent).

    0-cycle moves are a nice side benefit of moving to valueless
    reservation stations and a RAT in Sandy Bridge. RISC implementations
    using similar techniques also have this benefit. E.g., <https://chipsandcheese.com/p/arms-cortex-x925-reaching-desktop> says
    in section "Rename and Allocate":

    |X925 can do move elimination like prior Arm cores

    Considering the numbers I just posted elsethread, I think that
    zero-cycle register moves can also benefit a RISC architecture,
    quite a lot. Of course those were static counts, not dynamic.

    The depth of the execution window determines how much latency the
    machine can tolerate without slowing down.

    If the move is on the critical path, it will will result in a
    slow-down if it takes one cycle, compared to a zero-cycle move.

    With EWs nearing 300
    instructions

    ROB sizes have exceeded 300 instructions quite a while ago. E.g., on
    Ice Lake (2019) the ROB size is 352, on Zen4 (2022) it is 320, on
    Cortex-X3 (2022) it is 320. Some are even bigger: Lion Cove (2019)
    has a ROB size of 576 instructions; the Apple Firestorm in the M1
    (2020) has a ~330 entry coalesced retire queue, where an entry can
    contain up to 7 uops, so, depending on the utilization of these
    groups, you can see between 330 and >2200 in-flight instructions <https://dougallj.github.io/applecpu/firestorm.html>. For the
    Qualcomm Oryon (2024) a measurement has produced a number of 680 ROB
    entries, but I would not be surprised if the Oryon used retire groups,
    too, and the measurement result depends on the instruction mix used in
    the measurement and how well that utilizes the groups.

    Another way to interpret "execution window" is the number of
    instructions that can reside in the reservation stations (aka
    schedulers), but that tends to be more limited. E.g., the
    Cortex-X925, which has a ROB which allows at least 525 in-flight
    instructions, has 4 28-entry integer schedulers (for up to 112
    instructions waiting for results of previous instructions) and 3
    53-entry FP schedulers. In combination that's 271 instructions, so
    that approaches 300 instructions indeed.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Andy Valencia@vandys@vsta.org to comp.arch on Fri Aug 7 07:31:28 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> writes:
    ... Sometimes, one also has to consider
    the speed-of-light problems as separate from the speed-of-gravity {also
    known as the gravitational anomaly. If the sun disappeared instantaneously the earth would leave its orbit instantaneously, even though we could still see the light from it for 8 minutes.}

    This is the pithiest description of the anomaly I can remember. Thank you!

    Andy Valencia
    Home page: https://www.vsta.org/andy/
    To contact me: https://www.vsta.org/contact/andy.html
    No AI was used in the composition of this message
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From David Brown@david.brown@hesbynett.no to comp.arch on Fri Aug 7 17:46:20 2026
    From Newsgroup: comp.arch

    On 07/08/2026 16:31, Andy Valencia wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:
    ... Sometimes, one also has to consider
    the speed-of-light problems as separate from the speed-of-gravity {also
    known as the gravitational anomaly. If the sun disappeared instantaneously >> the earth would leave its orbit instantaneously, even though we could still >> see the light from it for 8 minutes.}

    This is the pithiest description of the anomaly I can remember. Thank you!


    It would be even better if it were true.

    If the sun disappeared instantaneously, it would be about 8 minutes
    before the earth changed from a circular orbit to a straight line (like
    a stone leaving a sling).

    No information or effects travel through space-time faster than the
    speed of light. Space-time itself can expand faster, but that is not happening in this hypothetical case.

    To be slightly more accurate, the earth is already moving in a straight
    line - it is the warping of space-time that makes it appear to be moving
    in an approximately circular orbit. If the sun disappeared, the earth
    would continue to move in a straight line, but the space-time would
    flatten out. This flattening change moves at the speed of light.

    The fact (in the sense of "the current best theory that fits what we can measure of reality") that the "speed of gravity" is the same as the
    speed of light is not just a prediction from general relativity, it has
    also been confirmed in measurements of Mercury's orbits, and seen in the
    way gravitational waves work.

    (Please don't ask me about "quantum entanglement" acting faster - I am
    not one of the tiny number of people who genuinely understand that, but
    the real physicists have figured out that it does not let you transfer information faster than the speed of light.)


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Fri Aug 7 15:48:22 2026
    From Newsgroup: comp.arch

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> schrieb:

    While probably true, assuming that your architecture is wildly
    successful, and far outlives you, you don't want future architects/users posthumously cursing your memory saying things like "If only he had . .
    ." For example, not requiring the upper byte as zero in S/360
    addresses,

    That was actually an error. The architecture was supposed to be
    32-bit clean, but apparently some people in the huge distributed
    project team didn't get the memo (possibly literally). And those
    extra eight bits were just too tempting...
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Fri Aug 7 15:50:06 2026
    From Newsgroup: comp.arch

    Stefan Monnier <monnier@iro.umontreal.ca> schrieb:
    Thomas Koenig [2026-08-06 05:44:32] wrote:
    Stefan Monnier <monnier@iro.umontreal.ca> schrieb:
    I tend to suspect, though, that instead of extending the precision to
    such a great extent, and increasing the exponent range only modestly,
    the more urgent need is to extend the exponent range.
    Why?
    [...]
    To be any good, such mixing needs to be chaotic, which means
    exponential growth in the resulting deformation tensors. I tend
    to hit the double precision limit pretty fast then.

    But the IEEE format for 128bit and 256bit formats *already* extend the exponent (to 15 and 19 bits respectively, IIRC), so would that still be insufficient? And if 19bits are still insufficient, how many
    would suffice?

    Unforutnately, the software I use uses only double precision.

    And yes, it would probably make sense to go to a log-log representation
    with signs, but then I would have to figure out how to calculate
    the derivatives, which I haven't had the time to look into.

    And, like I wrote above, this is a low-priority project (or rather,
    an activity).
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Fri Aug 7 18:42:47 2026
    From Newsgroup: comp.arch

    According to Thomas Koenig <tkoenig@netcologne.de>:
    posthumously cursing your memory saying things like "If only he had . .
    ." For example, not requiring the upper byte as zero in S/360
    addresses,

    That was actually an error. The architecture was supposed to be
    32-bit clean, but apparently some people in the huge distributed
    project team didn't get the memo (possibly literally). And those
    extra eight bits were just too tempting...

    I gather that there was a surprising lack of vision in the 360's addressing. In the paper one of the goals was:

    8. Storage capacities of more than the commonly available 32,000 words would be required.

    The largest model in the original paper had only 512Kb, and Amdahl
    apparently thought it was wasteful to make bytes 8 bits rather than 6.
    I suppose 24 bits seemed impossibly huge but if they belived that
    memory sizes would grow one bit per year, that was only 5 years.

    There's two places where that decision showed up. One is the BAL and
    BALR instructions which put the return address in the three low bytes
    and a bunch of status bits in the high byte. They quickly realized
    that was a mistake and added BAS and BASR to the /67 and /20 which
    just stored the return address but it was too late.

    The other was in OS/360 which was way later and way larger than they expected, so the
    programmers were under extreme pressure to make everything as compact as possible. One
    of the ways they did that was indeed to use the high byte of a four-byte address field
    to store other stuff. Switching from BAL to BAS was straightforward since very little
    code used the junk in the saved high byte, but every data structure and control block
    in OS had to be changed to make the addresses 32 bits.

    In later architectures they I know they avoided the mistake of not reserving unused
    high order bits, but made the mistake of making the fields too small. That's what
    killed the PDP-10 (yes, I know about the extended addressing hack), PDP-11, and to some extent the Vax.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Fri Aug 7 20:33:35 2026
    From Newsgroup: comp.arch

    John Levine <johnl@taugh.com> schrieb:

    In later architectures they I know they avoided the mistake of not reserving unused
    high order bits, but made the mistake of making the fields too small. That's what
    killed the PDP-10 (yes, I know about the extended addressing hack), PDP-11, and
    to some extent the Vax.

    IIRC the Macintosh fell into the same trap as the /360 with the
    24 bits of addressing on the 68000. And the ARM2 put the flag
    registers into the PC... not a good idea either.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 7 20:49:20 2026
    From Newsgroup: comp.arch


    Thomas Koenig <tkoenig@netcologne.de> posted:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> schrieb:

    While probably true, assuming that your architecture is wildly
    successful, and far outlives you, you don't want future architects/users posthumously cursing your memory saying things like "If only he had . .
    ." For example, not requiring the upper byte as zero in S/360
    addresses,

    That was actually an error. The architecture was supposed to be
    32-bit clean, but apparently some people in the huge distributed
    project team didn't get the memo (possibly literally). And those
    extra eight bits were just too tempting...

    Moreso due to the paucity of memory (actual) in early implementations.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Fri Aug 7 21:10:36 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    Thomas Koenig <tkoenig@netcologne.de> posted:

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    Intel and AMD are saddled up to x86 which has a destructive calculation
    model. 0 cycle MOVs are a way of reducing the problem. A RISC architecture >> > would not have this problem and not need 0 cycle MOVs (to the same extent).

    Considering the numbers I just posted elsethread, I think that
    zero-cycle register moves can also benefit a RISC architecture,
    quite a lot. Of course those were static counts, not dynamic.

    The depth of the execution window determines how much latency the
    machine can tolerate without slowing down. With EWs nearing 300
    instructions, I suspect that the gain is smaller than you surmise.

    I took a quick look of how many register moves were in the standard
    programs I look at. I only checked for vectorized loops because I
    didn't want to spend more than two minutes on writing the script :-),
    they are innermost loops only and they can be considered to be hot.

    Results:

    Gnuplot:

    Total instructions : 137173
    Vectorized instructions : 1557 ( 1.14 %)
    Vectorized register moves : 59 ( 3.79 % of vectorized instructions)

    GSL:
    Total instructions : 291333
    Vectorized instructions : 18998 ( 6.52 %)
    Vectorized register moves : 829 ( 4.36 % of vectorized instructions)

    Perl:
    Total instructions : 597121
    Vectorized instructions : 4245 ( 0.71 %)
    Vectorized register moves : 477 ( 11.24 % of vectorized instructions)

    There seems to be some savings potential there, depending on the
    number of cycles the "average" instruction latency in the loops is.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Josh Vanderhoof@x@y.z to comp.arch on Sat Aug 8 00:52:28 2026
    From Newsgroup: comp.arch

    David Brown <david.brown@hesbynett.no> writes:

    On 07/08/2026 16:31, Andy Valencia wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:
    ... Sometimes, one also has to consider the speed-of-light
    problems as separate from the speed-of-gravity {also known as
    the gravitational anomaly. If the sun disappeared
    instantaneously the earth would leave its orbit
    instantaneously, even though we could still see the light from
    it for 8 minutes.}
    This is the pithiest description of the anomaly I can remember.
    Thank you!

    It would be even better if it were true.

    If the sun disappeared instantaneously, it would be about 8
    minutes before the earth changed from a circular orbit to a
    straight line (like a stone leaving a sling).

    No information or effects travel through space-time faster than
    the speed of light. Space-time itself can expand faster, but
    that is not happening in this hypothetical case.

    To be slightly more accurate, the earth is already moving in a
    straight line - it is the warping of space-time that makes it
    appear to be moving in an approximately circular orbit. If the
    sun disappeared, the earth would continue to move in a straight
    line, but the space-time would flatten out. This flattening
    change moves at the speed of light.

    The fact (in the sense of "the current best theory that fits
    what we can measure of reality") that the "speed of gravity" is
    the same as the speed of light is not just a prediction from
    general relativity, it has also been confirmed in measurements
    of Mercury's orbits, and seen in the way gravitational waves
    work.

    (Please don't ask me about "quantum entanglement" acting faster
    - I am not one of the tiny number of people who genuinely
    understand that, but the real physicists have figured out that
    it does not let you transfer information faster than the speed
    of light.)

    Fermilab has a great video about the experiments that confirmed
    this.

    https://www.youtube.com/watch?v=Pa_hLtPIE1s
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Sat Aug 8 12:36:10 2026
    From Newsgroup: comp.arch

    On 2026-Aug-06 15:54, BGB wrote:
    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand version. >>>>

    I would assume using a 3R form for the basic case, and 4R via a prefix-expanded case or similar.

    Say:
    -a-a Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to justify the *massive* chunk of encoding space they burnt on this (like, both the P and V extensions use less encoding space than just these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.


    In RV's case, they also burn an additional:
    -a 2-bit type selector (S/D/H/Q);
    -a 3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, DYN).

    So, each costs 25 bits.
    -a Though, 20 bits would still have been steep, 25 is worse.
    -a This puts the cost of each on par with a JAL or LUI or similar.

    The 2-bit type-selector and 3-bit rounding mode is common to most of the FPU ops in RV's case.

    Ok, extra H and Q data types and round mode bits.
    Well, that is why one has a variable length instruction - add another granule. I think that is better to bite the bullet on that than doing some kludge
    as 48-bit instructions opens the door to a whole set of instructions
    that have 4 or 5 registers like for double wide integers.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Sat Aug 8 14:43:40 2026
    From Newsgroup: comp.arch

    On 8/8/2026 11:36 AM, EricP wrote:
    On 2026-Aug-06 15:54, BGB wrote:
    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:
    On 8/5/2026 3:06 PM, EricP wrote:
    On 2026-Aug-05 14:12, Thomas Koenig wrote:
    EricP <ThatWouldBeTelling@thevillage.com> schrieb:
    FMA has 3 source and 1 dest registers.

    I just looked at gnuplot and GSL (GNU Scientific Library) to
    see how often this actually occurs with My 66000, which has
    a four-register FMA instruction.

    In GSL, it is 12.3% of FMAs, in GNUPLOT, it is 18.9%.

    As opposed to what alternative, a 3 operand FMA like x84
    where one register is both source and dest?
    Because that would just be expanded by decode into a 4 operand
    version.


    I would assume using a 3R form for the basic case, and 4R via a
    prefix-expanded case or similar.

    Say:
    -a-a Rd=Rs*Rt+Rd;


    For example, RISC-V has 4R FMA instructions but it seems hard to
    justify the *massive* chunk of encoding space they burnt on this
    (like, both the P and V extensions use less encoding space than just
    these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to
    justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.


    In RV's case, they also burn an additional:
    -a-a 2-bit type selector (S/D/H/Q);
    -a-a 3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, DYN). >>
    So, each costs 25 bits.
    -a-a Though, 20 bits would still have been steep, 25 is worse.
    -a-a This puts the cost of each on par with a JAL or LUI or similar.

    The 2-bit type-selector and 3-bit rounding mode is common to most of
    the FPU ops in RV's case.

    Ok, extra H and Q data types and round mode bits.
    Well, that is why one has a variable length instruction - add another granule.
    I think that is better to bite the bullet on that than doing some kludge
    as 48-bit instructions opens the door to a whole set of instructions
    that have 4 or 5 registers like for double wide integers.


    Yeah.

    In my own ISA's, I had these as 64-bit encodings.

    But, for RISC-V, it is what it is...

    For RV+Jx, I am using 64-bit encodings.

    Though, some 48-bit ops exist in RV-C mode, I am less inclined towards
    RV-C (RV-C has a performance penalty that is difficult to avoid without
    more advanced fetch-and-decode logic).



    So, base instruction is:
    FMAC Rs, Rt, Rd //Rd=Rs*Rt+Rd, double-rounded (nom)
    FMACX Rs, Rt, Rd //Rd=Rs*Rt+Rd, double-rounded, Binary128 (traps)

    If extended with a J_OP sequence it becomes 4R:
    FMxx Rs, Rt, Ru, Rd //Rd=Rs*Rt+Ru


    After working on adding single-rounded FMA suppport...

    Had recently tweaked the encoding rules, so now it has some modes:
    FMAC/FMAS/FMRS/FMRA: Scalar, Double Rounded (nom), fixed RM
    PMAC/PMAS/PMRS/PMRA: SIMD, 2x
    FMACG/FMASG/FMRSG/FMRAG: Scalar, Single Rounded, Dynamic RM
    PMAC/PMAS/PMRS/PMRA: SIMD, 4x (Binary16/Binary32)

    As noted, latency:
    Scalar, Binary64: 12-cycle (in both single and double rounding)
    Scalar, Binary128, TRAP
    Scalar, SIMD 2x: 14-cycle
    Scalar, SIMD 4x: 16-cycle

    The double-rounded ops are only nominally double-rounded, if HW only
    natively supports single-rounding they may be single-rounded instead; so
    it will not guarantee double-rounded results.

    Of the SIMD cases, only the 2x Binary64 case is likely to be all that
    useful, as a Binary32 or Binary16 SIMD that is slower than PMUL+PADD is debatable, unless one needs single-rounded ops for some reason (will
    always be single-rounded when applied to these types).

    If a single-rounded mode is specified and Single-Rounded FMAC is not
    supported in hardware, this will trap (as is now the behavior with the
    RISC-V ops; prior versions did not trap here).


    The Binary128 case is partly turning into a case of:
    Yeah, trapping is slow;
    But, normal path is also slow;
    Using ops here is more code-dense though, and allows possibility of
    future HW support.

    FMA for Binary128 is better though than separate FMUL+FADD as 1 trap vs 2.


    Can note that using an FMAC does allow a potential way to encode an exact-multiply when in DAZ/FTZ mode. Will not fully replace the normal
    version though in this mode, because it is still twice the effective
    latency. But, this behavior will replace FMULG when in IEEE mode.

    Implicitly, this higher-latency version will gain support for subnormal numbers.


    Still not particularly inclined towards double-double even if I keep the single-rounded HW-FMA live. Even if it is faster in this case, it is an
    ugly hack of a solution vs just using Binary128 (as well as worse
    precision and dynamic range).

    Cost ATM:
    ~ 2% more LUTs;
    + 3 DSP48s.
    Slightly harder for FPGA timing (intermittent pass/fail ATM).


    This isn't horrible, though the closest it has to a strong (practical)
    selling point is avoiding a significant performance hit when not
    building code in RISC-V mode with "-ffp-contract=off".

    But, similar argument can be made for enabling support for the hardware
    FDIV instruction (some cost, but avoids a significant penalty in RV if
    not using "-fno-fdiv").

    Well, and the former does also allow for the possibility of more
    accurate FDIV without paying a steeper performance cost (such as if
    doing it via 128-bit integer division rather than via N-R or similar).

    Though, things could sway the other way if there were support for
    modestly fast 128-bit integer division (well, but then can note that the previous "modestly successful" HW FDIV was already internally using the integer divider to do the heavy lifting).


    And the integer divider is justified because integer divide is commonly
    used enough that doing it in software is painful, and trap-and-emulate
    is too slow in practice for general-use in this use-case.


    Arguably here HW FDIV not adding that much existing cost when already
    doing HW integer divide. Though, this approach still requires
    trap-and-emulate to deal with subnormals or similar.


    ...




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From jgd@jgd@cix.co.uk (John Dallman) to comp.arch on Sun Aug 9 12:37:40 2026
    From Newsgroup: comp.arch

    In article <11558v7$1ad8$1@gal.iecc.com>, johnl@taugh.com (John Levine)
    wrote:

    In later architectures I know they avoided the mistake of not reserving

    unused high order bits, but made the mistake of making the fields too
    small. That's what killed the PDP-10 (yes, I know about the extended addressing hack), PDP-11, and to some extent the Vax.

    The death of the VAX, AFAICS, seems to have been due to the difficulty of keeping it performance-competitive. A 64-bit VAX that was very slow
    wouldn't have been much use.

    There was a separate problem with the system call interfaces in VMS, in
    that the control blocks were sized in absolute numbers of bits and bytes, rather than in terms of pointer sizes. By the time DEC had faced up to
    the need for 64-bit, they couldn't afford the engineer-hours to duplicate
    the interfaces for it. That still handicaps 64-bit VMS, where lots of
    system calls can only address the top 2GB and the bottom 2GB, leaving a
    vast space in between.

    John
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From jgd@jgd@cix.co.uk (John Dallman) to comp.arch on Sun Aug 9 12:37:40 2026
    From Newsgroup: comp.arch

    In article <114vifh$32lm9$1@dont-email.me>, sfuld@alumni.cmu.edu.invalid (Stephen Fuld) wrote:

    The obvious solution is going from 64 to 128 bit registers. But historically, register width is driven not by arithmetic precision requirements, but memory space requirements.

    There were plenty of ISAs with 32-bit addressing, 32-bit integer
    registers, and 64-bit floating-point registers. There are ISAs now with
    64-bit integer registers and 128-bit registers for pairs of doubles.

    Adding 128-bit floats to them would require new opcodes and wider FPUs,
    but the register sets don't look like a problem.

    John
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Sun Aug 9 16:05:01 2026
    From Newsgroup: comp.arch

    jgd@cix.co.uk (John Dallman) writes:
    The death of the VAX, AFAICS, seems to have been due to the difficulty of >keeping it performance-competitive.

    The difficulty played a role, but I think that the loss of faith in
    the sustainability of the VAX was decisive.

    There were mainly two kinds of VAX customers:

    * The performance-sensitive ones. They defected to RISCs, and not
    necessarily to Alpha.

    * The compatibility-sensitive ones where performance was not that
    important. They probably stuck with the VAXes they had once DEC
    stopped making faster ones. So DEC lost business here by not
    providing newer, faster VAXes.

    Looking at the Unisys offerings, the compatibility-sensitive customers
    can keep an architecture (or at least two in the case of Unisys) alive
    for a long time.

    Concerning the difficulty, yes, it was difficult, especially at the
    time, but nothing that could not be solved, but that would have taken
    several more years. Decoding the VAX is more sequential than for
    IA-32/AMD64, but techniques like speculatively decoding at every byte
    boundary and selecting the decode result from the proper boundary
    (which is what was used in the Pentium Pro (1995) AFAIK; not sure what
    was used for the Pentium (1993)) would have worked for VAX, too. Decoded-instruction caches (Pentium 4, 2000), or cached instruction
    boundaries (Athlon, 1999) would have helped, too.

    One interesting parallel is what IBM did. Shortly after DEC delivered
    the VAX 9000 in 1990 (the supposed "IBM killer", which may have turned
    out to be the "DEC killer"), IBM delivered (1991) the ES/9000 H2
    (Model 900 and 820), a superscalar out-of-order implementation in ECL
    (the first modern OoO machine, precise exceptions and all). They
    delivered that for a few years, then switched to an in-order
    single-issue CMOS implementation (9672 series), which eventually
    outperformed the H2 thanks to the CMOS clock boost of the 1990s.

    DEC was leading in CMOS technology at the start of the 1990s, but
    could not convert that into a product that sold well.

    There was a separate problem with the system call interfaces in VMS, in
    that the control blocks were sized in absolute numbers of bits and bytes, >rather than in terms of pointer sizes. By the time DEC had faced up to
    the need for 64-bit, they couldn't afford the engineer-hours to duplicate
    the interfaces for it. That still handicaps 64-bit VMS, where lots of
    system calls can only address the top 2GB and the bottom 2GB, leaving a
    vast space in between.

    It's unclear to me what the problem is. Why not just add additional
    system calls with full 64-bit addresses, and have the old system calls
    as stubs that call the new ones? Similar to what Linux does for the
    IA-32 system calls when in 64-bit mode.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Mon Aug 10 10:29:10 2026
    From Newsgroup: comp.arch

    On 2026-Aug-08 15:43, BGB wrote:
    On 8/8/2026 11:36 AM, EricP wrote:
    On 2026-Aug-06 15:54, BGB wrote:
    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:

    For example, RISC-V has 4R FMA instructions but it seems hard to justify the *massive* chunk of encoding space they burnt on this (like, both the P and V extensions use less encoding space than just these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.

    In RV's case, they also burn an additional:
    -a-a 2-bit type selector (S/D/H/Q);
    -a-a 3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, DYN). >>>
    So, each costs 25 bits.
    -a-a Though, 20 bits would still have been steep, 25 is worse.
    -a-a This puts the cost of each on par with a JAL or LUI or similar.

    The 2-bit type-selector and 3-bit rounding mode is common to most of the FPU ops in RV's case.

    Ok, extra H and Q data types and round mode bits.
    Well, that is why one has a variable length instruction - add another granule.
    I think that is better to bite the bullet on that than doing some kludge
    as 48-bit instructions opens the door to a whole set of instructions
    that have 4 or 5 registers like for double wide integers.

    Yeah.

    In my own ISA's, I had these as 64-bit encodings.

    But, for RISC-V, it is what it is...

    For RV+Jx, I am using 64-bit encodings.

    Though, some 48-bit ops exist in RV-C mode, I am less inclined towards RV-C (RV-C has a performance penalty that is difficult to avoid without more advanced fetch-and-decode logic).

    If you are only decoding 1 instruction per clock, the fetch-parse of variable length 48b
    instructions should be relatively straight forward as there are only 3 lengths to deal with.
    Instructions only stretch across 6 bytes so a 16 byte prefetch buffer would be easiest
    to manage.

    My TTL risc-ish VAX-ish fetch-decode had byte granules and instructions 1 to 12 bytes long.
    It required a 32 byte prefetch buffer and alignment shifter.
    The description below is a subset of my fetch-parse logic retargeted for RV-C format.

    For RV a 16 byte circular prefetch buffer holds aligned 8B blocks, each block with a Valid bit
    and an Error bit. The Valid bit is set when the prefetcher loads an 8B block from the I$ cache,
    and cleared when the parser pulls the last byte of the block from the buffer. The Error bit is if any error, VA translate or hardware parity/ECC error, occurs when
    trying to read the physical cache line. An error is only detected if the parser tries to
    read any bytes from a block with its Error flag set. (Remember that the prefetcher is
    running ahead of the parser, so it is not and error for prefetch to get a VA translate
    error - it is only an error if the parser tries to consume a byte from that VA.)

    The prefetch sequencer translates the fetch RIP-VA to PA then loads sequential 8B blocks
    into the prefetch buffer. The buffer block to load is selected by PA address bit [3].
    A buffer block is loaded whenever a Valid bit indicates a block is empty *OR* is
    going to become empty at the end of this cycle because the parser pulled the bytes.
    This effectively turns the I$ cache into a pipeline stage.

    The alignment shifter is controlled by the RIP-VA of the fetch parser sequencer.
    The parser RIP-VA address bis [3:1] controls a set of 8:1 muxes that rotates the
    buffer 16b granules + Valid and Error status bits to align the first instruction
    granule with the fetch instruction buffer.

    The parser then looks at the instruction length bits and checks that the Valid bits are set and no Error bits on all the 1..3 granules in the prefetch buffer. If all well the granules are copied into the instruction buffer along with
    the instructions parse RIP-VA, and set the Valid flag on the instruction buffer.
    Parser then adds the instruction length to its RIP-VA and resets the block Valid bit if RIP-VA increments across an 8B boundary.

    Decode sees the Valid flag set on its input instruction buffer, does its thing, and generates an output uOp with its Valid flag into its output stage.

    Other things one needs to deal with are:
    - privilege modes for addresses (in my design all virtual addresses travel with its priv mode)
    - exceptions and hardware errors
    - jumps


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Mon Aug 10 12:59:59 2026
    From Newsgroup: comp.arch

    On 8/10/2026 9:29 AM, EricP wrote:
    On 2026-Aug-08 15:43, BGB wrote:
    On 8/8/2026 11:36 AM, EricP wrote:
    On 2026-Aug-06 15:54, BGB wrote:
    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:

    For example, RISC-V has 4R FMA instructions but it seems hard to
    justify the *massive* chunk of encoding space they burnt on this
    (like, both the P and V extensions use less encoding space than
    just these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to
    justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.

    In RV's case, they also burn an additional:
    -a-a 2-bit type selector (S/D/H/Q);
    -a-a 3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, >>>> DYN).

    So, each costs 25 bits.
    -a-a Though, 20 bits would still have been steep, 25 is worse.
    -a-a This puts the cost of each on par with a JAL or LUI or similar.

    The 2-bit type-selector and 3-bit rounding mode is common to most of
    the FPU ops in RV's case.

    Ok, extra H and Q data types and round mode bits.
    Well, that is why one has a variable length instruction - add another
    granule.
    I think that is better to bite the bullet on that than doing some kludge >>> as 48-bit instructions opens the door to a whole set of instructions
    that have 4 or 5 registers like for double wide integers.

    Yeah.

    In my own ISA's, I had these as 64-bit encodings.

    But, for RISC-V, it is what it is...

    For RV+Jx, I am using 64-bit encodings.

    Though, some 48-bit ops exist in RV-C mode, I am less inclined towards
    RV-C (RV-C has a performance penalty that is difficult to avoid
    without more advanced fetch-and-decode logic).

    If you are only decoding 1 instruction per clock, the fetch-parse of variable length 48b
    instructions should be relatively straight forward as there are only 3 lengths to deal with.
    Instructions only stretch across 6 bytes so a 16 byte prefetch buffer
    would be easiest
    to manage.


    For RV-C (and misaligned 32-bit ops), it falls back to only 1
    instruction per clock.

    Even if the superscalar isn't particularly effective much of the time,
    it can still offer enough benefit to see an impact for code that largely
    drops to a maximum of 1 instruction per cycle.

    As noted, for RV64G and XG3, it can potentially fetch up to 3
    instructions per cycle.

    It seems that in some cases, this can perform well. Mostly depends on
    having enough logic in a basic-block with independent instructions that
    the compiler can effectively shuffle it into independent instruction chains.

    Tight loops and highly-dependent chains effectively are the poorly
    performing cases.


    My TTL risc-ish VAX-ish fetch-decode had byte granules and instructions
    1 to 12 bytes long.
    It required a 32 byte prefetch buffer and alignment shifter.
    The description below is a subset of my fetch-parse logic retargeted for RV-C format.

    For RV a 16 byte circular prefetch buffer holds aligned 8B blocks, each block with a Valid bit
    and an Error bit. The Valid bit is set when the prefetcher loads an 8B
    block from the I$ cache,
    and cleared when the parser pulls the last byte of the block from the buffer.
    The Error bit is if any error, VA translate or hardware parity/ECC
    error, occurs when
    trying to read the physical cache line. An error is only detected if the parser tries to
    read any bytes from a block with its Error flag set. (Remember that the prefetcher is
    running ahead of the parser, so it is not and error for prefetch to get
    a VA translate
    error - it is only an error if the parser tries to consume a byte from
    that VA.)

    The prefetch sequencer translates the fetch RIP-VA to PA then loads sequential 8B blocks
    into the prefetch buffer. The buffer block to load is selected by PA
    address bit [3].
    A buffer block is loaded whenever a Valid bit indicates a block is empty *OR* is
    going to become empty at the end of this cycle because the parser pulled
    the bytes.
    This effectively turns the I$ cache into a pipeline stage.

    The alignment shifter is controlled by the RIP-VA of the fetch parser sequencer.
    The parser RIP-VA address bis [3:1] controls a set of 8:1 muxes that
    rotates the
    buffer 16b granules + Valid and Error status bits to align the first instruction
    granule with the fetch instruction buffer.

    The parser then looks at the instruction length bits and checks that the Valid
    bits are set and no Error bits on all the 1..3 granules in the prefetch buffer.
    If all well the granules are copied into the instruction buffer along with the instructions parse RIP-VA, and set the Valid flag on the instruction buffer.
    Parser then adds the instruction length to its RIP-VA and resets the block Valid bit if RIP-VA increments across an 8B boundary.

    Decode sees the Valid flag set on its input instruction buffer, does its thing,
    and generates an output uOp with its Valid flag into its output stage.

    Other things one needs to deal with are:
    - privilege modes for addresses (in my design all virtual addresses
    travel with its priv mode)
    - exceptions and hardware errors
    - jumps


    My approach is a little different:
    You have two parallel arrays of 512 x 16 bytes (Even and Odd);
    You have tag bits for each array, which encode:
    Address of fetched line;
    Relevant operating mode bits;
    Bits used to encode the length and superscalar status of the relevant words.

    Typically, when fetching a line, it looks at the instruction words and
    figures out the lengths and similar based on the mode, including
    superscalar status.

    It determines length-status for every 16-bit multiple, but superscalar
    status only for 32-bit multiples.

    So, say, per 32-bit word:
    4b: 32-bit aligned part
    Jumbo, WEX, JWX=Jumbo|(WXE&WEX)
    Sz=32/16
    And, 16-bit part:
    2b: Sz=32/16, Jumbo


    In XG1/XG2:
    The Jumbo/WEX bits are determined purely based on the instruction word,
    as is Sz.

    For RV and XG3:
    Jumbo is determined from the instruction word;
    Sz: Always 0 for XG3; Set if RV-C.
    WEX: Inferred from superscalar logic.
    JWX: Jumbo|WEX.
    In the mode encoding, WXE simply selects between RV64GC and XG3 modes.
    Rather than Enabling/Disabling WEX in XG1/XG2.
    In XG1/XG2, WXE depended on pipeline compatibility for the code.
    If trying to run code built for the wrong pipeline, WXE was cleared.

    Determining the WEX bit (RV/XG3):
    Lookup pipeline allowance bits;
    Can run in Lane 2
    Can run in Lane 3
    Can run in Lane 1 with co-op in Lane2
    Can run in Lane 1 with co-op in Lane3

    Then, register alias checking:
    Rd, Rs, Rt:
    Rd1==Rs2 || Rd1==Rt2 || Rd1==Rd2
    Rd2==Rs1 || Rd2==Rt1 || Rd1==Rd2
    For 3-wide fetch:
    Repeat above 2 more times, 1/3 and 2/3.
    If OK for the former, but not the latter, 2-wide.
    Currently this logic is split between RV and XG3, as cross-ISA checking
    added too much cost (was cheaper to do this for two separate ISAs than
    to do it between instruction layouts).

    Then, for final WEX bit, it is a case of:
    Would this combination be allowed in the pipeline?
    Are there no aliases?

    With this logic, one can determine the virtual WEX bit for each
    instruction word; albeit (when done on L2 fetch) the end of a cache line
    is an invisible wall (WEX status must always come back as 0).


    This allows various patterns (0000=all scalar):
    0000, 0010, 0100, 0110, 1000, 1010, 1100

    Though, if one were to collapse all the legal patterns of Sz and JWX,
    could probably fit all possible combinations into ~ 7 or 8 bits per cache-line.


    In this case, the Sz and JWX bits need to be kept for the Fetch stage.


    IF stage:
    Fetch cache lines from arrays;
    Check Hit/Miss;
    Fetch 96-bit block based on PC;
    Fetch relevant Sz and JWX bits based on PC;
    Feed Sz and JWX bits through a lookup to determine fetch length;
    2/4/6/8/12 bytes.
    Do instruction repacking (for XG3 and parts of RV-C):
    Normalizes instructions to an internal format for the decoders.
    ID stage:
    Run branch predictor;
    Run the 3 parallel decoders;
    Select the outputs based on fetch width and instruction types.
    Fills Lane 1/2/3.


    If I did a CPU core specifically for RV and XG3, there are a few things
    I might change around.

    I started an informal "BJX3" as a subset, which is mostly intended more
    as a simplification of the existing architecture rather than a full reboot.

    It isn't obvious though in a BJX3 core would be better:
    Create a new core, only keeping the parts I need from "jx2core";
    Fork jx2core, but remove/simplify stuff;
    Add it as an option to jx2core to mostly disable XG1 and XG2 stuff.
    Maybe still replacing the instruction decoder with a simpler one.

    ...

    Could also make sense to re-organize the source tree in a way that maybe
    makes more sense, and move the older BSR1 stuff into its own tree (BSR1
    is effectively dead at this point, as it effectively offers no
    particularly good reason to use it rather than RV32IMC or similar).

    There is no support in BGBCC for RV32IMC at present, could debate as to whether it could make sense to add it. GCC already supports it, and
    there isn't as strong of a case for wanting to extend it.

    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Mon Aug 10 12:12:42 2026
    From Newsgroup: comp.arch

    On 8/6/2026 6:18 PM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/5/2026 12:20 PM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP giving >>>>> 5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming >>>>> decade (or farther out) ??

    I want to take a somewhat different approach to answering this question >>>> than the need for precision arguments presented elsewhere in this
    thread. I don't believe there will be any hardware implementation of
    FP256 for at least several decades. This is based on a "register
    argument". That is, I assume any hardware implementation would require >>>> the operands to be in some kind of registers, not only in main memory.

    At the current moment, FP128 use is low to at best moderate--that is we
    occasionally want to do FP128 calculations, but we are no where near
    wanting to build architectures that concentrate heavily on FP128 {whether >>> register based or memory based or some where in between}. FP256 has even >>> lower use patterns.

    If one is willing to say FP256 operations can take place *only* in some >>>> kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, then >>>> things aren't too bad. You need new op-codes, of course, and you reduce >>>> the number of parallel operations, but it fits reasonably well.

    It screws up the reservation station models by needing to wait for 4
    set of operands before starting calculations. Whether VR or GPR or FPR.

    But if you want to support FP256 operations in non-vector registers,
    things get ugly.

    Even uglier when one considers argument and result passings.

    The obvious reason is that, with the 64 bit registers >>>> we have today, each FP256 operand requires four registers (256/64). So >>>> a typical FP256 operation such as FPADD requiring two sources and a
    destination requires 4 * 3 = 12 registers.

    Which is why we can dabble in FP128 and consider dabbling in FP256
    but we really don't want to go "Whole Hog" in either.

    If you want any amount of >>>> parallelism, even more are required.

    I suspect the compiler's register use pattern would be fairly easy
    to rename into a sufficiently high-count PRF.

    Two operations in parallel require >>>> 24 registers! This leaves relatively few registers for other, typical >>>> uses. If you have a unified registers set (i.e. no dedicated FP
    registers), the register pressure is worse. As a side note, if, like
    Mitch, you don't like register pairing, i.e. the instruction specifies >>>> one register but that implies use of at least one adjacent register,
    then you have to somehow specify all 12 registers in the instruction (or >>>> instruction modifier). Ugggh!

    I recently added the DBLE instruction-modifier to My 66000 ISA. DBLE is
    a 3-register i-m that supplies 3 operands and 1 <more> result register
    (or constants !!) to the immediately successive instruction. On lower
    end machines it would decode-execute-retire as 2 instructions; on middle >>> end machines it would decode as one, reside in stations as 2, and then
    execute as one; in High end machines the pair is treated uniformly as
    a single instruction. 1 instruction added, ~40 - 128-bit calculations
    added to useable ISA.

    The obvious solution is going from 64 to 128 bit registers. But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements. I haven't kept up, but it >>>> used to be that these requirements grew by something like 1 bit every
    2-3 years, but seemed like it was slowing down. (I welcome any updates >>>> to these numbers). So if we are at say 54 bits now, then requiring more >>>> than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256
    for at least two decades.

    Which is, of course, longer than I have left above ground.

    While probably true, assuming that your architecture is wildly
    successful, and far outlives you, you don't want future architects/users
    posthumously cursing your memory saying things like "If only he had . .
    ." For example, not requiring the upper byte as zero in S/360
    addresses, or several things in 8086.

    This (amongst others) is a reason an ISA should remain "under covers"
    long enough that the failing features can be identified and fixed.

    So I think it is worth some time thinking about trying to "future proof"
    an architecture.

    You can only make the architecture live a long life. There is no such
    thing as "future proof" since the future will continue for 107^79 more
    years.

    Sure. The two oldest currently evolving architectures, S/360 and X86,
    are still going after about 6-8 decades. And if the trend of linear
    address expansion continues at the same pace, the transition from 128 to
    256 won't occur for well over two centuries, I suspect the 64-128
    transition will be the last one. So lets restrict it to that one.



    And since the consensus seems to be the worst mistake
    in computer architecture is not allowing enough address bits, I think
    you should spend a little time thinking about how the architecture would
    adapt to 128 bit addressing.
    ?
    DBLE

    Huh? So are you saying that there won't be some future version of My
    66000 that has 128 bit GPRs and thus will require a DBLE instruction
    modifier for every load and store in case the address exceeds 64 bits?
    That doesn't seem right.


    Just my opinion.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Mon Aug 10 12:22:09 2026
    From Newsgroup: comp.arch

    On 8/9/2026 4:36 AM, John Dallman wrote:
    In article <114vifh$32lm9$1@dont-email.me>, sfuld@alumni.cmu.edu.invalid (Stephen Fuld) wrote:

    The obvious solution is going from 64 to 128 bit registers. But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements.

    There were plenty of ISAs with 32-bit addressing, 32-bit integer
    registers, and 64-bit floating-point registers. There are ISAs now with 64-bit integer registers and 128-bit registers for pairs of doubles.

    Adding 128-bit floats to them would require new opcodes and wider FPUs,
    but the register sets don't look like a problem.

    Good point! That is an argument for separate FP and GPRs, instead of a unified register set. But if the requirement for larger address space
    (thus GPRs) is what drives register size, then I am not sure that
    allowing double sized FPRs is such a big advantage.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Mon Aug 10 15:32:34 2026
    From Newsgroup: comp.arch

    On 8/10/2026 2:12 PM, Stephen Fuld wrote:
    On 8/6/2026 6:18 PM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/5/2026 12:20 PM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 7/28/2026 12:40 PM, MitchAlsup wrote:

    At present, we have competing interest of 8-bit FP and 128-bit FP >>>>>> giving
    5-sizes of FP containers.

    How many believe that 256-bit FP will be desired/useful in the coming >>>>>> decade (or farther out) ??

    I want to take a somewhat different approach to answering this
    question
    than the need for precision arguments presented elsewhere in this
    thread.-a I don't believe there will be any hardware implementation of >>>>> FP256 for at least several decades.-a This is based on a "register
    argument".-a That is, I assume any hardware implementation would
    require
    the operands to be in some kind of registers, not only in main memory. >>>>
    At the current moment, FP128 use is low to at best moderate--that is we >>>> occasionally want to do FP128 calculations, but we are no where near
    wanting to build architectures that concentrate heavily on FP128
    {whether
    register based or memory based or some where in between}. FP256 has
    even
    lower use patterns.
    If one is willing to say FP256 operations can take place *only* in
    some
    kind of vector register, e.g. enhanced AVX512, not in GPRs or FPRs, >>>>> then
    things aren't too bad.-a You need new op-codes, of course, and you
    reduce
    the number of parallel operations, but it fits reasonably well.

    It screws up the reservation station models by needing to wait for 4
    set of operands before starting calculations. Whether VR or GPR or FPR. >>>>> But if you want to support FP256 operations in non-vector registers, >>>>> things get ugly.

    Even uglier when one considers argument and result passings.

    -a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a The obvious reason is that, with the 64 bit
    registers
    we have today, each FP256 operand requires four registers
    (256/64).-a So
    a typical FP256 operation such as FPADD requiring two sources and a
    destination requires 4 * 3 = 12 registers.

    Which is why we can dabble in FP128 and consider dabbling in FP256
    but we really don't want to go "Whole Hog" in either.

    -a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a If you want any
    amount of
    parallelism, even more are required.

    I suspect the compiler's register use pattern would be fairly easy
    to rename into a sufficiently high-count PRF.

    -a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a Two operations in parallel
    require
    24 registers!-a This leaves relatively few registers for other, typical >>>>> uses.-a If you have a unified registers set (i.e. no dedicated FP
    registers), the register pressure is worse.-a As a side note, if, like >>>>> Mitch, you don't like register pairing, i.e. the instruction specifies >>>>> one register but that implies use of at least one adjacent register, >>>>> then you have to somehow specify all 12 registers in the
    instruction (or
    instruction modifier).-a Ugggh!

    I recently added the DBLE instruction-modifier to My 66000 ISA. DBLE is >>>> a 3-register i-m that supplies 3 operands and 1 <more> result register >>>> (or constants !!) to the immediately successive instruction. On lower
    end machines it would decode-execute-retire as 2 instructions; on
    middle
    end machines it would decode as one, reside in stations as 2, and then >>>> execute as one; in High end machines the pair is treated uniformly as
    a single instruction. 1 instruction added, ~40 - 128-bit calculations
    added to useable ISA.
    The obvious solution is going from 64 to 128 bit registers.-a But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements.-a I haven't kept up,
    but it
    used to be that these requirements grew by something like 1 bit every >>>>> 2-3 years, but seemed like it was slowing down.-a (I welcome any
    updates
    to these numbers).-a So if we are at say 54 bits now, then requiring >>>>> more
    than 64 bit addressing will be at least 2 decades away.

    Thus, I conclude that we won't have native hardware support for FP256 >>>>> for at least two decades.

    Which is, of course, longer than I have left above ground.

    While probably true, assuming that your architecture is wildly
    successful, and far outlives you, you don't want future architects/users >>> posthumously cursing your memory saying things like "If only he had . .
    ."-a For example, not requiring the upper byte as zero in S/360
    addresses, or several things in 8086.

    This (amongst others) is a reason an ISA should remain "under covers"
    long enough that the failing features can be identified and fixed.
    So I think it is worth some time thinking about trying to "future proof" >>> an architecture.

    You can only make the architecture live a long life. There is no such
    thing as "future proof" since the future will continue for 107^79 more
    years.

    Sure.-a The two oldest currently evolving architectures, S/360 and X86,
    are still going after about 6-8 decades.-a And if the trend of linear address expansion continues at the same pace, the transition from 128 to
    256 won't occur for well over two centuries, I suspect the 64-128
    transition will be the last one.-a So lets restrict it to that one.


    I suspect the growth rate is more likely to nearly stall.
    Linear density can't really increase much more;
    Vertical scaling is not likely to be economical;
    Even if vertical scaling is effective, its actual total gain will be
    less than what was seen with horizontal scaling.

    And, if your RAM turns into giant cubes, speed and heat becomes a much
    bigger problem (and huge memories that are unbearably slow is likely to
    be a hard sell).




    -a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a And since the consensus seems to be the worst mistake
    in computer architecture is not allowing enough address bits, I think
    you should spend a little time thinking about how the architecture would >>> adapt to 128 bit addressing.
    ?
    DBLE

    Huh?-a So are you saying that there won't be some future version of My
    66000 that has 128 bit GPRs and thus will require a DBLE instruction modifier for every load and store in case the address exceeds 64 bits?
    That doesn't seem right.


    Hmm...


    In my case, I went to GPR pairs for 128-bit stuff, but the GPR pairs are
    still typically encoded as base instructions (just usually that the
    encoded register "must be even" or similar for the instructions that
    expect a 128-bit register; except mostly in XG1, which used the LSB for selecting between R0..R30 and R32..R62).


    Just my opinion.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Mon Aug 10 15:40:43 2026
    From Newsgroup: comp.arch

    On 8/10/2026 2:22 PM, Stephen Fuld wrote:
    On 8/9/2026 4:36 AM, John Dallman wrote:
    In article <114vifh$32lm9$1@dont-email.me>, sfuld@alumni.cmu.edu.invalid
    (Stephen Fuld) wrote:

    The obvious solution is going from 64 to 128 bit registers.-a But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements.

    There were plenty of ISAs with 32-bit addressing, 32-bit integer
    registers, and 64-bit floating-point registers. There are ISAs now with
    64-bit integer registers and 128-bit registers for pairs of doubles.

    Adding 128-bit floats to them would require new opcodes and wider FPUs,
    but the register sets don't look like a problem.

    Good point!-a-a That is an argument for separate FP and GPRs, instead of a unified register set.-a But if the requirement for larger address space (thus GPRs) is what drives register size, then I am not sure that
    allowing double sized FPRs is such a big advantage.


    If one really must have them, IMO may as well make all the registers 128
    bits. Then you can have big addresses and/or capabilities, as well as
    maybe 128 bit integers.

    IMO, 128-bit integers are kinda useful, but native support is still
    pretty rare in any mainstream ISAs (despite it not actually being all
    that expensive to implement by reusing 64-bit ALUs internally).


    Though, granted, would be more expensive if the 64-bit CPU is actually internally 32-bit but merely playing dress-up as 64-bit (using a similar
    trick to using a 64-bit pipeline to support 128-bit ALU ops by
    internally splitting them in half across two lanes or similar).

    ...

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Mon Aug 10 21:42:32 2026
    From Newsgroup: comp.arch


    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/6/2026 6:18 PM, MitchAlsup wrote:
    --------------------
    This (amongst others) is a reason an ISA should remain "under covers"
    long enough that the failing features can be identified and fixed.

    So I think it is worth some time thinking about trying to "future proof" >> an architecture.

    You can only make the architecture live a long life. There is no such
    thing as "future proof" since the future will continue for 107^79 more years.

    Sure. The two oldest currently evolving architectures, S/360 and X86,
    are still going after about 6-8 decades. And if the trend of linear
    address expansion continues at the same pace, the transition from 128 to
    256 won't occur for well over two centuries, I suspect the 64-128
    transition will be the last one. So lets restrict it to that one.



    And since the consensus seems to be the worst mistake >> in computer architecture is not allowing enough address bits, I think
    you should spend a little time thinking about how the architecture would >> adapt to 128 bit addressing.
    ?
    DBLE

    Huh? So are you saying that there won't be some future version of My
    66000 that has 128 bit GPRs and thus will require a DBLE instruction modifier for every load and store in case the address exceeds 64 bits?
    That doesn't seem right.

    Not in my lifetime--estimate 20 years {10 good, 10 not so good}. This
    falls under the statement: "An architecture is as much about what you
    leave out as to what you put in" ! In my opinion, 128-bit GPRs are not
    needed yet--as long as one has a reasonable access to 128-bit "stuff".
    I think DBLE covers this well enough under the "R in RISC stands for
    Reduced" mantra.

    The current demand for 128-bit is covered under the keyword "occasional";
    and under occasional use, 32|u64-bit registers is fine. DBLE supplies the additional register specifiers so that {integer, floating point, memory}
    have access to 128-bit {Data and Addresses} so a single inst addition
    provides access to all {Integer, logical, shift, memory, and floating
    point} instructions. {{Economy of Entropy}}

    DBLE can provide access to {128, 192, 256, and 320}-bit containers. So,
    the only issue is running out of registers not their size {and of course
    the required sequencers to make the calculations happen.}


    Just my opinion.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Mon Aug 10 21:44:15 2026
    From Newsgroup: comp.arch


    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/9/2026 4:36 AM, John Dallman wrote:
    In article <114vifh$32lm9$1@dont-email.me>, sfuld@alumni.cmu.edu.invalid (Stephen Fuld) wrote:

    The obvious solution is going from 64 to 128 bit registers. But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements.

    There were plenty of ISAs with 32-bit addressing, 32-bit integer
    registers, and 64-bit floating-point registers. There are ISAs now with 64-bit integer registers and 128-bit registers for pairs of doubles.

    Adding 128-bit floats to them would require new opcodes and wider FPUs,
    but the register sets don't look like a problem.

    Good point! That is an argument for separate FP and GPRs, instead of a unified register set. But if the requirement for larger address space
    (thus GPRs) is what drives register size, then I am not sure that
    allowing double sized FPRs is such a big advantage.

    If you have both 128-bit GPRs and 128-bit FPRs, there is little argument
    that separate RFs provide much gain in practice.



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Mon Aug 10 21:49:34 2026
    From Newsgroup: comp.arch


    BGB <cr88192@gmail.com> posted:

    On 8/10/2026 2:22 PM, Stephen Fuld wrote:
    On 8/9/2026 4:36 AM, John Dallman wrote:
    In article <114vifh$32lm9$1@dont-email.me>, sfuld@alumni.cmu.edu.invalid >> (Stephen Fuld) wrote:

    The obvious solution is going from 64 to 128 bit registers.-a But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements.

    There were plenty of ISAs with 32-bit addressing, 32-bit integer
    registers, and 64-bit floating-point registers. There are ISAs now with
    64-bit integer registers and 128-bit registers for pairs of doubles.

    Adding 128-bit floats to them would require new opcodes and wider FPUs,
    but the register sets don't look like a problem.

    Good point!-a-a That is an argument for separate FP and GPRs, instead of a unified register set.-a But if the requirement for larger address space (thus GPRs) is what drives register size, then I am not sure that
    allowing double sized FPRs is such a big advantage.


    If one really must have them, IMO may as well make all the registers 128 bits. Then you can have big addresses and/or capabilities, as well as
    maybe 128 bit integers.

    IMO, 128-bit integers are kinda useful, but native support is still
    pretty rare in any mainstream ISAs (despite it not actually being all
    that expensive to implement by reusing 64-bit ALUs internally).


    Though, granted, would be more expensive if the 64-bit CPU is actually internally 32-bit but merely playing dress-up as 64-bit (using a similar trick to using a 64-bit pipeline to support 128-bit ALU ops by
    internally splitting them in half across two lanes or similar).

    On the other hand, using 64-bit ALUs to serially calculate 128-bit
    stuff does seem to be reasonable so long as 64-bit stuff is close
    to optimal {pipeline, circuits, sequencing}. So, adding 128-bit
    stuff to a microarchitecture which is inherently 64-bits seems
    reasonable--so long as it does not screw up the 64-bit stuff.

    On the FP side, one needs 3 more bits in the exponent path, and
    sequencing {multi-cycle calculations as if in microcode-but just
    using hardwired sequencing.}

    ...

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Mon Aug 10 14:08:07 2026
    From Newsgroup: comp.arch

    The obvious reason is that, with the 64 bit registers
    we have today, each FP256 operand requires four registers (256/64). So
    a typical FP256 operation such as FPADD requiring two sources and a
    destination requires 4 * 3 = 12 registers.
    Which is why we can dabble in FP128 and consider dabbling in FP256
    but we really don't want to go "Whole Hog" in either.

    Probably more useful at this point would be instructions that can help implement FP256 libraries (and hopefully FP96, FP128, FP192, FP512, ...).


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Mon Aug 10 19:21:55 2026
    From Newsgroup: comp.arch

    On 8/10/2026 4:49 PM, MitchAlsup wrote:

    BGB <cr88192@gmail.com> posted:

    On 8/10/2026 2:22 PM, Stephen Fuld wrote:
    On 8/9/2026 4:36 AM, John Dallman wrote:
    In article <114vifh$32lm9$1@dont-email.me>, sfuld@alumni.cmu.edu.invalid >>>> (Stephen Fuld) wrote:

    The obvious solution is going from 64 to 128 bit registers.-a But
    historically, register width is driven not by arithmetic precision
    requirements, but memory space requirements.

    There were plenty of ISAs with 32-bit addressing, 32-bit integer
    registers, and 64-bit floating-point registers. There are ISAs now with >>>> 64-bit integer registers and 128-bit registers for pairs of doubles.

    Adding 128-bit floats to them would require new opcodes and wider FPUs, >>>> but the register sets don't look like a problem.

    Good point!-a-a That is an argument for separate FP and GPRs, instead of a >>> unified register set.-a But if the requirement for larger address space
    (thus GPRs) is what drives register size, then I am not sure that
    allowing double sized FPRs is such a big advantage.


    If one really must have them, IMO may as well make all the registers 128
    bits. Then you can have big addresses and/or capabilities, as well as
    maybe 128 bit integers.

    IMO, 128-bit integers are kinda useful, but native support is still
    pretty rare in any mainstream ISAs (despite it not actually being all
    that expensive to implement by reusing 64-bit ALUs internally).


    Though, granted, would be more expensive if the 64-bit CPU is actually
    internally 32-bit but merely playing dress-up as 64-bit (using a similar
    trick to using a 64-bit pipeline to support 128-bit ALU ops by
    internally splitting them in half across two lanes or similar).

    On the other hand, using 64-bit ALUs to serially calculate 128-bit
    stuff does seem to be reasonable so long as 64-bit stuff is close
    to optimal {pipeline, circuits, sequencing}. So, adding 128-bit
    stuff to a microarchitecture which is inherently 64-bits seems
    reasonable--so long as it does not screw up the 64-bit stuff.


    Yes.

    Luckily, only a few cases (ADD/SUB/CMP style ops) actually need to carry results from one side to the other.

    ADD/SUB/CMP: Need to propagate C and Z status between the ALUs.
    Everything else: Independent.


    The 128-bit shift is effectively 2 funnel shifts. The internal logic
    gets a little tricky, but is not inherently much different than the
    normal 64-bit shift if implemented with a funnel shifter.

    So, say, we generate a 128-bit window and the bit position is an offset
    into the window.
    Left shift shift starts in high half and slides downwards;
    Right shift starts in low half and slides upwards.

    The 128-bit cases are basically the same thing, just:
    Shifts < 64 bits:
    High-half left shift fills bottom of window with low-half;
    Low-half right shift fills top with high-half;
    Shifts >= 64:
    Replace current half with other half,
    other half with zeroes or sign extension.

    Well, one can argue about the initial MUXing to build the shift window,
    but this is unavoidable either way (and the relative difference is small).

    MUL and DIV are still a harder problem though, as doing 128-bit MUL and
    DIV would be asking a fair bit more if the Shift-ADD unit.

    Well, and also that the 32x32=>64 bit widening multiplier is a faster
    path for building large integer multipliers. If a pipelined 64x64=>128
    bit multiplier were possible, that could also be nice (and less awkward because it would match the register size).



    Likewise, can note that sticking some masking logic on the output side
    also allowed for the BITMOV instructions.

    This seemed a little clever, though has the minor concern that the
    BITMOV mechanism falls outside the window of verifiable prior art (well, likewise for Shuffle + TernaryMultiply, *1).


    *1: Say, one has an instruction where they can both shuffle and zero or
    negate values within a single instruction (can significantly reduce
    logic complexity for things like vector cross product and quaternion
    product).

    Say, reducing quaternion product to 11 instructions.
    Well, 8 is the actual minimum, but 8 is slower than 11 in this case.

    There was a past experiment that could have allowed a 3-instruction
    cross product, but this fell outside the limits of FPGA timing
    constraints...

    Well, along with some of the niche helper ops.


    Where, the usual idea is to be cautious about more or less anything that wasn't already in known use 25 or 30 years ago...

    Well, so in theory, if someone tries to patent-troll, one can point to
    some thing from the 80s or 90s and be like, "See, they were already
    doing it then!". Nevermind if patent trolls normally went after people
    with money (well, and apparently some legal changes in recent years had
    made patent trolling much less profitable; like the plaintiff needing to
    pay legal fees if it gets thrown out, and them no longer getting to
    choose where the lawsuit trials are held such to get a judge sided with
    the trolls, ...).


    Can note that I did write up an ISA usage policy note: https://github.com/cr88192/bgbtech_btsr1arch/blob/master/docs/2026-08-06_UsagePolicy.txt

    But, it doesn't really effect anyone casually using the ISA, more it is against anyone trying to use the ISA for "rent seeking".

    Though, I can't really claim this is a license per-se, since it is
    debatable if trying to use copyright for anti-patent uses carries any
    legal weight (as it is debatable if copyright applies to an ISA design,
    as opposed to merely the ISA documentation), but alas...

    ...


    On the FP side, one needs 3 more bits in the exponent path, and
    sequencing {multi-cycle calculations as if in microcode-but just
    using hardwired sequencing.}


    Large floating point is a harder problem.

    I went after large integers first because:
    Large integer stuff is cheaper to implement;
    Cheap large integers also make it easier to implement large floating
    point in less slow ways.



    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Mon Aug 10 19:41:12 2026
    From Newsgroup: comp.arch

    On 8/10/2026 1:08 PM, Stefan Monnier wrote:
    The obvious reason is that, with the 64 bit registers >>> we have today, each FP256 operand requires four registers (256/64). So
    a typical FP256 operation such as FPADD requiring two sources and a
    destination requires 4 * 3 = 12 registers.
    Which is why we can dabble in FP128 and consider dabbling in FP256
    but we really don't want to go "Whole Hog" in either.

    Probably more useful at this point would be instructions that can help implement FP256 libraries (and hopefully FP96, FP128, FP192, FP512, ...).


    Yes, agreed.

    If one can do, say:
    CLRT // ~ "SLT X0, X0, X0"
    ADCX R10, R14, R28
    ADCX R12, R16, R30
    To do a 256-bit ADD, this is maybe something at least...

    Where, say:
    ADC/SBB: Add-with-Carry, Subtract-with-Borrow, 64-bit
    ADCX/SBBX: Add-with-Carry, Subtract-with-Borrow, 128-bit

    No direct equivalent in RISC-V, and these initially (almost) weren't
    carried over into XG3. But, chained carry propagation in RISC-V is a pain.

    Say:
    ADD R10, R14, R28
    ADD R11, R15, R29
    ADD R12, R16, R30
    ADD R13, R17, R31
    SLTU R28, R10, R6
    ADD R29, R6, R29
    SLTU R29, R11, R6
    ADD R30, R6, R30
    SLTU R30, R12, R6
    ADD R31, R6, R31


    Things like BITMOV can also help (to more quickly extract/insert the exponent).




    === Stefan

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From jgd@jgd@cix.co.uk (John Dallman) to comp.arch on Tue Aug 11 10:54:40 2026
    From Newsgroup: comp.arch

    In article <115d8d3$3de5f$1@dont-email.me>, sfuld@alumni.cmu.edu.invalid (Stephen Fuld) wrote:

    Good point! That is an argument for separate FP and GPRs, instead
    of a unified register set. But if the requirement for larger
    address space (thus GPRs) is what drives register size, then I am
    not sure that allowing double sized FPRs is such a big advantage.

    Different kinds of registers have different reasons for their sizes. The intended benefit of 128-bit FP registers that hold pairs of 64-bit floats
    or four 32-bit floats is SIMD, which I've never found especially useful.

    John
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From jgd@jgd@cix.co.uk (John Dallman) to comp.arch on Tue Aug 11 10:54:40 2026
    From Newsgroup: comp.arch

    In article <2026Aug9.180501@mips.complang.tuwien.ac.at>, anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    By the time DEC had faced up to the need for 64-bit, they
    couldn't afford the engineer-hours to duplicate the interfaces
    for it. That still handicaps 64-bit VMS, where lots of
    system calls can only address the top 2GB and the bottom 2GB,
    leaving a vast space in between.

    It's unclear to me what the problem is. Why not just add additional
    system calls with full 64-bit addresses, and have the old system
    calls as stubs that call the new ones?

    The VMS system calls are not designed round C calling conventions.
    They're usable to lots of different languages that DEC supported, which
    DEC achieved by specifying everything in absolute sizes and implementing
    it in assembler and BLISS. That meant doing 64-bit interfaces would have
    taken engineer-years they felt they couldn't afford. By the time 8GB of
    RAM was cheap, they'd been taken over by Compaq, and then HP, neither of
    which was interested in spending money on fixing DEC's technical debt.

    John
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Tue Aug 11 16:36:28 2026
    From Newsgroup: comp.arch

    John Dallman <jgd@cix.co.uk> schrieb:
    In article <2026Aug9.180501@mips.complang.tuwien.ac.at>, anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    By the time DEC had faced up to the need for 64-bit, they
    couldn't afford the engineer-hours to duplicate the interfaces
    for it. That still handicaps 64-bit VMS, where lots of
    system calls can only address the top 2GB and the bottom 2GB,
    leaving a vast space in between.

    It's unclear to me what the problem is. Why not just add additional
    system calls with full 64-bit addresses, and have the old system
    calls as stubs that call the new ones?

    The VMS system calls are not designed round C calling conventions.
    They're usable to lots of different languages that DEC supported, which
    DEC achieved by specifying everything in absolute sizes and implementing
    it in assembler and BLISS. That meant doing 64-bit interfaces would have taken engineer-years they felt they couldn't afford.

    (I've never worked with VMS, but I have met fans).

    I am just browsing through the "OpenVMS Alpha
    Guide to 64-Bit Addressing and VLM Features" at https://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6467/6467p.htm

    Seems they had 32-bit system services, which only worked with
    32-bit addresses (sign-extended), serives with 64-bit friendly
    interface (which just worked) and 64-bit system services, which
    were 64-bit only.

    So, they had something, and it looked a bit messy, but that was
    probably inevitable.

    By the time 8GB of
    RAM was cheap, they'd been taken over by Compaq, and then HP, neither of which was interested in spending money on fixing DEC's technical debt.

    It looks like it wasn't all bad.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Tue Aug 11 18:14:31 2026
    From Newsgroup: comp.arch

    Thomas Koenig <tkoenig@netcologne.de> writes:
    John Dallman <jgd@cix.co.uk> schrieb:
    In article <2026Aug9.180501@mips.complang.tuwien.ac.at>,
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    By the time DEC had faced up to the need for 64-bit, they
    couldn't afford the engineer-hours to duplicate the interfaces
    for it. That still handicaps 64-bit VMS, where lots of
    system calls can only address the top 2GB and the bottom 2GB,
    leaving a vast space in between.

    It's unclear to me what the problem is. Why not just add additional
    system calls with full 64-bit addresses, and have the old system
    calls as stubs that call the new ones?

    The VMS system calls are not designed round C calling conventions.
    They're usable to lots of different languages that DEC supported, which
    DEC achieved by specifying everything in absolute sizes and implementing
    it in assembler and BLISS. That meant doing 64-bit interfaces would have
    taken engineer-years they felt they couldn't afford.

    (I've never worked with VMS, but I have met fans).

    I am just browsing through the "OpenVMS Alpha
    Guide to 64-Bit Addressing and VLM Features" at >https://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6467/6467p.htm

    Seems they had 32-bit system services, which only worked with
    32-bit addresses (sign-extended), serives with 64-bit friendly
    interface (which just worked) and 64-bit system services, which
    were 64-bit only.

    So, they had something, and it looked a bit messy, but that was
    probably inevitable.

    "Messy" was de riguour when dealing with the 32-bit to
    64-bit transition for most operating systems. Parallel
    32-bit and 64-bit APIs were not uncommon in Unix or Linux.

    The Large File Summit, which was charged with enabling 64-bit filesystem offsets on 32-bit unix-like operating systems was an early effort
    to standardize such efforts across multiple vendors.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Tue Aug 11 15:00:17 2026
    From Newsgroup: comp.arch

    On 2026-Aug-10 13:59, BGB wrote:
    On 8/10/2026 9:29 AM, EricP wrote:
    On 2026-Aug-08 15:43, BGB wrote:
    On 8/8/2026 11:36 AM, EricP wrote:
    On 2026-Aug-06 15:54, BGB wrote:
    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:

    For example, RISC-V has 4R FMA instructions but it seems hard to justify the *massive* chunk of encoding space they burnt on this (like, both the P and V extensions use less encoding space than just these instructions)..

    The full 4R FMA instructions aren't used anywhere near enough to justify burning this much encoding space on it.

    Hmmm... I don't understand the problem.
    In a 32-bit instruction 4 5-bit register fields is 20 bits,
    leaving 12 bits for the opcode. Bits to control negation of the
    product and addend operands use 2 of those opcode bits.
    So it needs 10 bits to encode the unique opcode.

    I realize that doesn't fit with RV's defined instruction formats
    but that's shouldn't be a technical limitation on what Decode
    can handle.

    In RV's case, they also burn an additional:
    -a-a 2-bit type selector (S/D/H/Q);
    -a-a 3-bit rounding mode (From memory: RNE, RTZ, RDN, RUP, RMM, -, -, DYN).

    So, each costs 25 bits.
    -a-a Though, 20 bits would still have been steep, 25 is worse.
    -a-a This puts the cost of each on par with a JAL or LUI or similar. >>>>>
    The 2-bit type-selector and 3-bit rounding mode is common to most of the FPU ops in RV's case.

    Ok, extra H and Q data types and round mode bits.
    Well, that is why one has a variable length instruction - add another granule.
    I think that is better to bite the bullet on that than doing some kludge >>>> as 48-bit instructions opens the door to a whole set of instructions
    that have 4 or 5 registers like for double wide integers.

    Yeah.

    In my own ISA's, I had these as 64-bit encodings.

    But, for RISC-V, it is what it is...

    For RV+Jx, I am using 64-bit encodings.

    Though, some 48-bit ops exist in RV-C mode, I am less inclined towards RV-C (RV-C has a performance penalty that is difficult to avoid without more advanced fetch-and-decode logic).

    If you are only decoding 1 instruction per clock, the fetch-parse of variable length 48b
    instructions should be relatively straight forward as there are only 3 lengths to deal with.
    Instructions only stretch across 6 bytes so a 16 byte prefetch buffer would be easiest
    to manage.


    For RV-C (and misaligned 32-bit ops), it falls back to only 1 instruction per clock.

    Even if the superscalar isn't particularly effective much of the time, it can still offer enough benefit to see an impact for code that largely drops to a maximum of 1 instruction per cycle.

    As noted, for RV64G and XG3, it can potentially fetch up to 3 instructions per cycle.

    RV64G uses fixed 32b granules so doesn't have to deal with instructions
    that straddle cache lines. So it doesn't need a prefetch buffer and rotater, just a simple alignment shifter on the cache output feeding Decode.

    It seems that in some cases, this can perform well. Mostly depends on having enough logic in a basic-block with independent instructions that the compiler can effectively shuffle it into independent instruction chains.

    Tight loops and highly-dependent chains effectively are the poorly performing cases.


    My TTL risc-ish VAX-ish fetch-decode had byte granules and instructions 1 to 12 bytes long.
    It required a 32 byte prefetch buffer and alignment shifter.
    The description below is a subset of my fetch-parse logic retargeted for RV-C format.

    For RV a 16 byte circular prefetch buffer holds aligned 8B blocks, each block with a Valid bit
    and an Error bit. The Valid bit is set when the prefetcher loads an 8B block from the I$ cache,
    and cleared when the parser pulls the last byte of the block from the buffer.
    The Error bit is if any error, VA translate or hardware parity/ECC error, occurs when
    trying to read the physical cache line. An error is only detected if the parser tries to
    read any bytes from a block with its Error flag set. (Remember that the prefetcher is
    running ahead of the parser, so it is not and error for prefetch to get a VA translate
    error - it is only an error if the parser tries to consume a byte from that VA.)

    The prefetch sequencer translates the fetch RIP-VA to PA then loads sequential 8B blocks
    into the prefetch buffer. The buffer block to load is selected by PA address bit [3].
    A buffer block is loaded whenever a Valid bit indicates a block is empty *OR* is
    going to become empty at the end of this cycle because the parser pulled the bytes.
    This effectively turns the I$ cache into a pipeline stage.

    The alignment shifter is controlled by the RIP-VA of the fetch parser sequencer.
    The parser RIP-VA address bis [3:1] controls a set of 8:1 muxes that rotates the
    buffer 16b granules + Valid and Error status bits to align the first instruction
    granule with the fetch instruction buffer.

    The parser then looks at the instruction length bits and checks that the Valid
    bits are set and no Error bits on all the 1..3 granules in the prefetch buffer.
    If all well the granules are copied into the instruction buffer along with >> the instructions parse RIP-VA, and set the Valid flag on the instruction buffer.
    Parser then adds the instruction length to its RIP-VA and resets the block >> Valid bit if RIP-VA increments across an 8B boundary.

    Decode sees the Valid flag set on its input instruction buffer, does its thing,
    and generates an output uOp with its Valid flag into its output stage.

    Other things one needs to deal with are:
    - privilege modes for addresses (in my design all virtual addresses travel with its priv mode)
    - exceptions and hardware errors
    - jumps


    My approach is a little different:
    You have two parallel arrays of 512 x 16 bytes (Even and Odd);
    You have tag bits for each array, which encode:
    -a Address of fetched line;
    -a Relevant operating mode bits;
    Bits used to encode the length and superscalar status of the relevant words.

    Typically, when fetching a line, it looks at the instruction words and figures out the lengths and similar based on the mode, including superscalar status.

    It determines length-status for every 16-bit multiple, but superscalar status only for 32-bit multiples.

    You would have to read multiple cache lines just in case an instruction straddles a cache line.


    So, say, per 32-bit word:
    -a 4b: 32-bit aligned part
    -a-a-a Jumbo, WEX, JWX=Jumbo|(WXE&WEX)
    -a-a-a Sz=32/16
    And, 16-bit part:
    -a 2b: Sz=32/16, Jumbo


    In XG1/XG2:
    The Jumbo/WEX bits are determined purely based on the instruction word, as is Sz.

    For RV and XG3:
    Jumbo is determined from the instruction word;
    Sz: Always 0 for XG3; Set if RV-C.
    WEX: Inferred from superscalar logic.
    JWX: Jumbo|WEX.
    -a In the mode encoding, WXE simply selects between RV64GC and XG3 modes.
    -a Rather than Enabling/Disabling WEX in XG1/XG2.
    -a-a-a In XG1/XG2, WXE depended on pipeline compatibility for the code.
    -a-a-a If trying to run code built for the wrong pipeline, WXE was cleared.

    Determining the WEX bit (RV/XG3):
    -a Lookup pipeline allowance bits;
    -a-a-a Can run in Lane 2
    -a-a-a Can run in Lane 3
    -a-a-a Can run in Lane 1 with co-op in Lane2
    -a-a-a Can run in Lane 1 with co-op in Lane3

    Then, register alias checking:
    -a Rd, Rs, Rt:
    -a-a-a Rd1==Rs2 || Rd1==Rt2 || Rd1==Rd2
    -a-a-a Rd2==Rs1 || Rd2==Rt1 || Rd1==Rd2
    -a For 3-wide fetch:
    -a-a-a Repeat above 2 more times, 1/3 and 2/3.
    -a-a-a If OK for the former, but not the latter, 2-wide.
    Currently this logic is split between RV and XG3, as cross-ISA checking added too much cost (was cheaper to do this for two separate ISAs than to do it between instruction layouts).

    Then, for final WEX bit, it is a case of:
    -a Would this combination be allowed in the pipeline?
    -a Are there no aliases?

    With this logic, one can determine the virtual WEX bit for each instruction word; albeit (when done on L2 fetch) the end of a cache line is an invisible wall (WEX status must always come back as 0).


    This allows various patterns (0000=all scalar):
    -a 0000, 0010, 0100, 0110, 1000, 1010, 1100

    Though, if one were to collapse all the legal patterns of Sz and JWX, could probably fit all possible combinations into ~ 7 or 8 bits per cache-line.


    In this case, the Sz and JWX bits need to be kept for the Fetch stage.


    IF stage:
    -a Fetch cache lines from arrays;
    -a Check Hit/Miss;
    -a Fetch 96-bit block based on PC;
    -a Fetch relevant Sz and JWX bits based on PC;
    -a Feed Sz and JWX bits through a lookup to determine fetch length;
    -a-a-a 2/4/6/8/12 bytes.
    -a Do instruction repacking (for XG3 and parts of RV-C):
    -a-a-a Normalizes instructions to an internal format for the decoders.
    ID stage:
    -a Run branch predictor;
    -a Run the 3 parallel decoders;
    -a Select the outputs based on fetch width and instruction types.
    -a-a-a Fills Lane 1/2/3.
    One way I can see for decoding multiple variable length instructions
    is a staggered overlapping tree of decoders. To decode 4 instructions of
    1..3 16b granules needs a 64B circular prefetch buffer feeding 12 decoders.
    All 12 decoders examine the fetch buffer in parallel, with the selection
    of which 4 decoder outputs to use made by propagating the sum of the instructions lengths from low to high. That allows the output selection critical path to work in parallel with each decode critical path.
    It also means a giant mux on the output to select 4 of the 12 decoder outputs.

    FG = 16b Fetch Granule

    F...F F F F F
    G G G G G G
    6 4 3 2 1 0
    4 | | | | |
    v v v v v v
    --ROTATE_64B--
    | | | | |
    | | v v v
    | | Decode0
    | | | | |
    | v v v |
    | Decode1 |
    | | | | |
    v v v | |
    Decode2 | |
    | | | |
    v v v v
    I... I I I
    1 0 0 0
    2 2 1 0
    --SELECT_MUX--
    | | | |
    v v v v

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Tue Aug 11 21:21:56 2026
    From Newsgroup: comp.arch


    scott@slp53.sl.home (Scott Lurndal) posted:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    John Dallman <jgd@cix.co.uk> schrieb:
    In article <2026Aug9.180501@mips.complang.tuwien.ac.at>,
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    By the time DEC had faced up to the need for 64-bit, they
    couldn't afford the engineer-hours to duplicate the interfaces
    for it. That still handicaps 64-bit VMS, where lots of
    system calls can only address the top 2GB and the bottom 2GB,
    leaving a vast space in between.

    It's unclear to me what the problem is. Why not just add additional
    system calls with full 64-bit addresses, and have the old system
    calls as stubs that call the new ones?

    The VMS system calls are not designed round C calling conventions.
    They're usable to lots of different languages that DEC supported, which
    DEC achieved by specifying everything in absolute sizes and implementing >> it in assembler and BLISS. That meant doing 64-bit interfaces would have >> taken engineer-years they felt they couldn't afford.

    (I've never worked with VMS, but I have met fans).

    I am just browsing through the "OpenVMS Alpha
    Guide to 64-Bit Addressing and VLM Features" at >https://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6467/6467p.htm

    Seems they had 32-bit system services, which only worked with
    32-bit addresses (sign-extended), serives with 64-bit friendly
    interface (which just worked) and 64-bit system services, which
    were 64-bit only.

    So, they had something, and it looked a bit messy, but that was
    probably inevitable.

    "Messy" was de riguour when dealing with the 32-bit to
    64-bit transition for most operating systems. Parallel
    32-bit and 64-bit APIs were not uncommon in Unix or Linux.

    Does anyone think the 64->128 bit transition will be any
    more messy or less messy ?

    The Large File Summit, which was charged with enabling 64-bit filesystem offsets on 32-bit unix-like operating systems was an early effort
    to standardize such efforts across multiple vendors.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Tue Aug 11 21:29:17 2026
    From Newsgroup: comp.arch


    EricP <ThatWouldBeTelling@thevillage.com> posted:

    On 2026-Aug-10 13:59, BGB wrote:
    On 8/10/2026 9:29 AM, EricP wrote:
    On 2026-Aug-08 15:43, BGB wrote:
    On 8/8/2026 11:36 AM, EricP wrote:
    On 2026-Aug-06 15:54, BGB wrote:
    On 8/6/2026 9:16 AM, EricP wrote:
    On 2026-Aug-05 18:41, BGB wrote:
    ---------merciful snip-----------
    My approach is a little different:
    You have two parallel arrays of 512 x 16 bytes (Even and Odd);
    You have tag bits for each array, which encode:
    -a Address of fetched line;
    -a Relevant operating mode bits;
    Bits used to encode the length and superscalar status of the relevant words.

    Typically, when fetching a line, it looks at the instruction words and figures out the lengths and similar based on the mode, including superscalar status.

    It determines length-status for every 16-bit multiple, but superscalar status only for 32-bit multiples.

    You would have to read multiple cache lines just in case an instruction straddles a cache line.

    You can have HW look at the LoBs of VA to deci
    -------------------
    One way I can see for decoding multiple variable length instructions
    is a staggered overlapping tree of decoders. To decode 4 instructions of
    1..3 16b granules needs a 64B circular prefetch buffer feeding 12 decoders.

    My 66000 has word sized instruction containers with variable lengths.
    So, each word of the prefetch buffer has a 6-gate circuit that looks
    at 3-bits of the major OpCode and 4 bits way down low in the word.
    The LoBs of IP are decoded to select a first instruction, the first
    instruction selects the next pair of instructions from its unary length.
    This tree-fies well allowing the parsing of 16-instructions in 8-gates
    of delay (~-+ cycle).

    All 12 decoders examine the fetch buffer in parallel, with the selection
    of which 4 decoder outputs to use made by propagating the sum of the instructions lengths from low to high. That allows the output selection critical path to work in parallel with each decode critical path.
    It also means a giant mux on the output to select 4 of the 12 decoder outputs.

    FG = 16b Fetch Granule

    F...F F F F F
    G G G G G G
    6 4 3 2 1 0
    4 | | | | |
    v v v v v v
    --ROTATE_64B--
    | | | | |
    | | v v v
    | | Decode0
    | | | | |
    | v v v |
    | Decode1 |
    | | | | |
    v v v | |
    Decode2 | |
    | | | |
    v v v v
    I... I I I
    1 0 0 0
    2 2 1 0
    --SELECT_MUX--
    | | | |
    v v v v


    Just double the above two more times.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Wed Aug 12 05:57:30 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    scott@slp53.sl.home (Scott Lurndal) posted:

    "Messy" was de riguour when dealing with the 32-bit to
    64-bit transition for most operating systems. Parallel
    32-bit and 64-bit APIs were not uncommon in Unix or Linux.

    Does anyone think the 64->128 bit transition will be any
    more messy or less messy ?

    First, it is a question if, and when, it will become necessary.
    I don't see it for memory sizes soon (like "in my lifetime").
    If more bits are needed, they would have to carry some extra
    information, like capabilities.

    Storage sizes... there 64 bit may already be close (as in not
    too many powers of two) to the limit.

    But if it ever happens: I32LP64 mostly cleaned up the assumptions
    about integer size == pointer size, which was the main problem in
    legacy software.

    Now we are left with sizeof(long) == sizeof(void *), which does
    not hold on Windows, at least. So, my guess would be not quite
    as messy. APIs should take care of most of it.

    But let's not forget... 2**64 is a humunguous number, it is
    ~ 1/30000 of a *mole*.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Wed Aug 12 06:29:52 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    scott@slp53.sl.home (Scott Lurndal) posted:
    "Messy" was de riguour when dealing with the 32-bit to
    64-bit transition for most operating systems. Parallel
    32-bit and 64-bit APIs were not uncommon in Unix or Linux.

    Does anyone think the 64->128 bit transition will be any
    more messy or less messy ?

    My first instinct is "more". From the start of the 32-bit age for
    Unix around 1980 until the start of the 64-bit age around 1992 there
    were only 12 years. I don't expect commercially relevant 128-bit
    architectures to appear before 2050, if ever (RAM growth has slowed
    down even before prices went up, and I expect that it will ever grow
    more slowly in the future). So by then there will be more than 50
    years of programs nearly all of which (except, of course, Thomas
    Koenig's programs) are not 128-bit clean (whatever that may mean;
    maybe they will be smart enough to go for ILP128 this time), and many
    of which are larger than the programs from the 32-bit era.

    OTOH, these days we have AI to help with code cleanup (but also AI to
    help write much larger amounts of unclean code), so by investing
    computing power on the order of a few TWh (the going currency for
    computing power in AI), we may be able to turn all the 64-bit legacy
    code into 128-bit clean code.

    On the gripping hand, do we actually need to turn a lot of software to
    be able to run in 128-bit address spaces? If my guess about the
    slowing and maybe eventually stopping growth becomes reality, for most
    programs 64-bit address space will be good enough forever, and we
    don't need to convert them.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Aug 12 14:04:58 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    scott@slp53.sl.home (Scott Lurndal) posted:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    John Dallman <jgd@cix.co.uk> schrieb:
    In article <2026Aug9.180501@mips.complang.tuwien.ac.at>,
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    By the time DEC had faced up to the need for 64-bit, they
    couldn't afford the engineer-hours to duplicate the interfaces
    for it. That still handicaps 64-bit VMS, where lots of
    system calls can only address the top 2GB and the bottom 2GB,
    leaving a vast space in between.

    It's unclear to me what the problem is. Why not just add additional
    system calls with full 64-bit addresses, and have the old system
    calls as stubs that call the new ones?

    The VMS system calls are not designed round C calling conventions.
    They're usable to lots of different languages that DEC supported, which >> >> DEC achieved by specifying everything in absolute sizes and implementing >> >> it in assembler and BLISS. That meant doing 64-bit interfaces would have >> >> taken engineer-years they felt they couldn't afford.

    (I've never worked with VMS, but I have met fans).

    I am just browsing through the "OpenVMS Alpha
    Guide to 64-Bit Addressing and VLM Features" at
    https://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6467/6467p.htm

    Seems they had 32-bit system services, which only worked with
    32-bit addresses (sign-extended), serives with 64-bit friendly
    interface (which just worked) and 64-bit system services, which
    were 64-bit only.

    So, they had something, and it looked a bit messy, but that was
    probably inevitable.

    "Messy" was de riguour when dealing with the 32-bit to
    64-bit transition for most operating systems. Parallel
    32-bit and 64-bit APIs were not uncommon in Unix or Linux.

    Does anyone think the 64->128 bit transition will be any
    more messy or less messy ?

    If, and that's a big if, it happens, I suspect a fairly
    messy transition.

    I also suspect that the transition to 128-bit addresses
    will be in the form of something like CHERI rather than
    flat 128-bit addresses.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Wed Aug 12 18:05:46 2026
    From Newsgroup: comp.arch

    Anton Ertl wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> writes:

    scott@slp53.sl.home (Scott Lurndal) posted:
    "Messy" was de riguour when dealing with the 32-bit to
    64-bit transition for most operating systems. Parallel
    32-bit and 64-bit APIs were not uncommon in Unix or Linux.

    Does anyone think the 64->128 bit transition will be any
    more messy or less messy ?

    My first instinct is "more". From the start of the 32-bit age for
    Unix around 1980 until the start of the 64-bit age around 1992 there
    were only 12 years. I don't expect commercially relevant 128-bit architectures to appear before 2050, if ever (RAM growth has slowed
    down even before prices went up, and I expect that it will ever grow
    more slowly in the future). So by then there will be more than 50
    years of programs nearly all of which (except, of course, Thomas
    Koenig's programs) are not 128-bit clean (whatever that may mean;
    maybe they will be smart enough to go for ILP128 this time), and many
    of which are larger than the programs from the 32-bit era.

    OTOH, these days we have AI to help with code cleanup (but also AI to
    help write much larger amounts of unclean code), so by investing
    computing power on the order of a few TWh (the going currency for
    computing power in AI), we may be able to turn all the 64-bit legacy
    code into 128-bit clean code.

    On the gripping hand, do we actually need to turn a lot of software to
    be able to run in 128-bit address spaces? If my guess about the
    slowing and maybe eventually stopping growth becomes reality, for most programs 64-bit address space will be good enough forever, and we
    don't need to convert them.

    I agree.

    You only need flat 128-bit addressing if you need to address more than
    2^64 elements totally randomly, with a single index.

    Back during 16->32 I and many others wrote lots of programs which used
    16-bit code to address 20-32 bit data by chunking it into segments,

    If you take something like seismic data or country-wide dense lidar
    scans, you go from TB to EB, which is still way smaller than 2^64, but
    large enough that nobody tries to process all of it in one go: It is far
    more efficient to work on independent tiles that are small enough to fit inside L2 or L3.

    Thos e smaller tiles also allows us to work with 32-bit indices instead
    of 64-bit addresses, making the working set a bit smaller.

    To me this means that we don't need 128-bit addresses for efficiency
    reasons.

    128-bit integer and fp will happen much sooner!

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Wed Aug 12 18:23:28 2026
    From Newsgroup: comp.arch

    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah, much sooner.

    The data format was by current standards rather odd. An extended format number was stored as a pair of long format numbers, stored in a pair of floating poitn registers, with the exponent of the second one 14 less than the first, since there were 14 hex digits in the fraction of each part. The system ignored the sign and exponent in the low part but set it consistently in instruction results. The instructions were add, subtract, multiply, multiply long with extended result, and round from extended to long. You could lengthen from long to extended by making the second part zero. There was no extended compare but it
    was easy to fake, long compare of the high parts, if they're equal compare the low parts. All formats had the same 7 bit exponent which since it was hex FP was roughly equivalent to a 9 bit binary exponent.

    They've carried this forward through 370/XA, 370 and zSeries. S/390 added a few
    new instructions like square root.

    S/390 added IEEE binary floating point including a 128 bit format with a 15 bit binary exponent. The 128 bit numbers are still stored in pairs of floating registers
    but the instruction set is more complete, including comarisons and division, and there
    are now 16 FP registers rather than just 4.

    zSeries added decimal floating point, again with a 128 bit format.

    The two-part format seems odd to us but it was typical of the era. The 7094's single precision floating point instructions produced two word results, as two floating numbers in the AC and MQ registers with the second having a suitably smaller exponent. It also had double add, subtract, multiply, and divide using that format. The first model of the PDP-10 used a similar double format but later ones switched to one with a single exponent and more fraction bits.

    I believe that the reason they added the extended format to the 360/85 was due to well justified complaints that the 360's FP was much worse than the 7094's. The 7094's double precision had two 27-bit fractions for a total of 54 fraction bits in a 72 bit word pair. A S/360 long had 14 hex digits or nominally 56 bits, but due to its wobbling precision, it lost 2 or 3 bits on each operation. So they added extended precision which was definitely better than 54 bits.

    But anyway, we've had some kind of 128 bit FP for almost 60 years, and we've had 128 IEEE FP for at least 30. This isn't new.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Wed Aug 12 20:43:31 2026
    From Newsgroup: comp.arch

    John Levine wrote:
    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah, much sooner.

    Yeah, I knew that. :-)

    What's been missing is general support for ieee754 fp128 across CPU architectures, so that portable code can assume it is there.

    The more problematic part, but also somewhat easier to solve is 128-bit integers:

    Using pairs of double does not extend the exponent range, but with pairs
    of 64-bit registers we can support 128-bit integer ops in exactly the
    same way we did 64-bit back in the 32-bit days:

    ADD + ADC, SUB + SBB for add128 and sub128, 4 x MUL plus a few ADD/ADC
    for mul128.

    div128 ends up as a function call, the best way to implement that
    depends on the hardware architecture and what it supports in the form of
    fast 64-bit DIV (like the latest Apple/ARM silicon), fast FF1,
    reciprocal lookup and the relative speeds of them.

    CMP needs a few extra ops, but easily within what a compiler will
    happily inline.

    Logic ops are easy of course, shifts need to handle shift amounts in the [64-127] range, typically with a MOV plus residual shift.

    I guess what I'm saying is that int128_t isn't a problem, except when
    you want to use them for array indexing!

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Aug 12 18:52:27 2026
    From Newsgroup: comp.arch

    John Levine <johnl@taugh.com> writes:
    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah, much sooner.
    <snip>
    But anyway, we've had some kind of 128 bit FP for almost 60 years, and we've >had 128 IEEE FP for at least 30. This isn't new.

    The Burroughs B3500 had 400-bit (100 digit) FP mantissas in 1966.

    It turned out that customers (mainly financial) were happy with the 100 digit integer fixed point formats and the 408-bit FP format was removed
    from the next generation (B4800) processors and replaced with
    a single smaller (20 digit mantissa, 2 digit exponent) floating
    point accumulator.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Michael S@already5chosen@yahoo.com to comp.arch on Wed Aug 12 22:58:37 2026
    From Newsgroup: comp.arch

    On Wed, 12 Aug 2026 18:52:27 GMT
    scott@slp53.sl.home (Scott Lurndal) wrote:

    John Levine <johnl@taugh.com> writes:
    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah,
    much sooner.
    <snip>
    But anyway, we've had some kind of 128 bit FP for almost 60 years,
    and we've had 128 IEEE FP for at least 30. This isn't new.

    The Burroughs B3500 had 400-bit (100 digit) FP mantissas in 1966.

    It turned out that customers (mainly financial) were happy with the
    100 digit integer fixed point formats and the 408-bit FP format was
    removed from the next generation (B4800) processors and replaced with
    a single smaller (20 digit mantissa, 2 digit exponent) floating
    point accumulator.

    Either because customers were happy with 100 digit integer or
    because they were unhappy witth speed of 100 digit FP.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Wed Aug 12 13:14:53 2026
    From Newsgroup: comp.arch

    On 8/11/2026 2:21 PM, MitchAlsup wrote:
    [...]

    For some reason this reminds me of the 63 bit counter lockless counter
    algo from Joe Seigh. I think this is it:

    https://groups.google.com/g/comp.lang.asm.x86/c/FScbTaQEYLc/m/HueJj2wTqQUJ
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Aug 12 16:34:10 2026
    From Newsgroup: comp.arch

    On 8/12/2026 12:57 AM, Thomas Koenig wrote:
    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    scott@slp53.sl.home (Scott Lurndal) posted:

    "Messy" was de riguour when dealing with the 32-bit to
    64-bit transition for most operating systems. Parallel
    32-bit and 64-bit APIs were not uncommon in Unix or Linux.

    Does anyone think the 64->128 bit transition will be any
    more messy or less messy ?

    First, it is a question if, and when, it will become necessary.
    I don't see it for memory sizes soon (like "in my lifetime").
    If more bits are needed, they would have to carry some extra
    information, like capabilities.

    Storage sizes... there 64 bit may already be close (as in not
    too many powers of two) to the limit.



    Even in the very early PCs, storage size was almost invariably bigger
    than address space size.

    6502 era:
    A floppy is bigger than address space;
    8088 era:
    HDD bigger than address space;
    80286 era:
    HDD's bigger than address space;
    32-bit x86 era:
    Same for most of it;
    Except for part of 90s...
    64-bit era:
    Suddenly, now, address space is bigger than HDDs.

    But, in the 64-bit era, both storage growth and RAM size growth are much slower than before.

    Like, typical RAM sizes have increased by around 2 bits over the last
    decade.
    If it is 1 bit the next decade, it is going to be a while...

    HDD sizes:
    Well, now one can potentially get a 12TB or so, but 4TB/6TB is more
    typical for new "big" drives.

    When did 1TB drives start showing up? Around 2007 or so. So, 19 years,
    for a reasonable maximum of around 3.5 bits or so...


    Recently got ahold of some used 2TB drives, still good.
    Date of manufacture: 2018.
    So, 1 decade, HDD size doubled.

    SSDs showed up, and are smaller. Still, a multi-TB SSD is pretty
    expensive, and also are seeing neither rapid size gains nor price drops.


    Speculation:
    It is going to be a while...


    Even if storage does (once again) become bigger than address space, this
    may not be a huge issue.


    But if it ever happens: I32LP64 mostly cleaned up the assumptions
    about integer size == pointer size, which was the main problem in
    legacy software.

    Now we are left with sizeof(long) == sizeof(void *), which does
    not hold on Windows, at least. So, my guess would be not quite
    as messy. APIs should take care of most of it.

    But let's not forget... 2**64 is a humunguous number, it is
    ~ 1/30000 of a *mole*.


    Yes.

    Also, ever bigger numbers in these areas work on one major assumption:
    That Moore's law can continue indefinitely.

    While it has not completely stopped yet, it is on a pretty solid
    downward trend.

    And, if it stops, so too will RAM and SSD sizes, and thus, no more bits.

    High transistor densities are rare, and time correlation is breaking
    down. The rise of transistor counts is often shifting from increasing
    density to increasing die sizes, ...


    It is likely that things fizzle out well before we even reach the
    practical limits of 48 bit addressing.


    Likewise, it may also be probable that, while 128-bit integers are
    useful (and 128-bit FP, sometimes useful); they may never rise to the
    same level of usefulness as their 32 and 64 bit counterparts.

    So, 32 and 64 bit types will likely remain the dominant options for a
    very long time.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Bill Findlay@findlaybill@blueyonder.co.uk to comp.arch on Wed Aug 12 22:40:38 2026
    From Newsgroup: comp.arch

    On 12 Aug 2026, John Levine wrote
    (in article <115idn0$28s$1@gal.iecc.com>):

    It appears that Terje Mathisen<terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah, much sooner.

    The data format was by current standards rather odd. An extended format number
    was stored as a pair of long format numbers, stored in a pair of floating poitn
    registers, with the exponent of the second one 14 less than the first, since there were 14 hex digits in the fraction of each part. The system ignored the sign and exponent in the low part but set it consistently in instruction results.

    KDF9 did that, extending its binary 48-bit f.p. to 96-bit f.p.,
    with the exponent of the second word 39 less than the first word.
    --
    Bill Findlay

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Aug 12 21:52:29 2026
    From Newsgroup: comp.arch

    Michael S <already5chosen@yahoo.com> writes:
    On Wed, 12 Aug 2026 18:52:27 GMT
    scott@slp53.sl.home (Scott Lurndal) wrote:

    John Levine <johnl@taugh.com> writes:
    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah,
    much sooner.
    <snip>
    But anyway, we've had some kind of 128 bit FP for almost 60 years,
    and we've had 128 IEEE FP for at least 30. This isn't new.

    The Burroughs B3500 had 400-bit (100 digit) FP mantissas in 1966.

    It turned out that customers (mainly financial) were happy with the
    100 digit integer fixed point formats and the 408-bit FP format was
    removed from the next generation (B4800) processors and replaced with
    a single smaller (20 digit mantissa, 2 digit exponent) floating
    point accumulator.

    Either because customers were happy with 100 digit integer or
    because they were unhappy witth speed of 100 digit FP.

    Banks, insurance companies, corporate IT and later ATM network providers weren't interested in floating point
    at all. Using fixed point integer was much easier to reconcile
    with various bookkeeping standards and regulations.

    Burroughs large systems (B6500 & successors) were the systems
    more likely to be used for scientific applications requiring
    floating point.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Wed Aug 12 22:00:10 2026
    From Newsgroup: comp.arch

    BGB <cr88192@gmail.com> writes:
    On 8/12/2026 12:57 AM, Thomas Koenig wrote:

    HDD sizes:
    Well, now one can potentially get a 12TB or so, but 4TB/6TB is more
    typical for new "big" drives.

    You are behind the times, seagate offers drives with more than
    40TB.


    When did 1TB drives start showing up? Around 2007 or so. So, 19 years,
    for a reasonable maximum of around 3.5 bits or so...


    Recently got ahold of some used 2TB drives, still good.
    Date of manufacture: 2018.
    So, 1 decade, HDD size doubled.

    SSDs showed up, and are smaller. Still, a multi-TB SSD is pretty
    expensive, and also are seeing neither rapid size gains nor price drops.

    NVME has eclipsed (and at the high-end superceeded) SSD drives.
    The largest NVMe drives store up to 512TB, and petabytes aren't
    far away.

    https://www.techradar.com/pro/the-worlds-largest-ssd-is-here-dapustor-unveils-a-massive-512tb-drive

    Flash prices are currently inflated by the ML bubble, with most
    production pre-sold for the next two years or more. Expect them
    to go up until the bubble pops.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Wed Aug 12 10:48:21 2026
    From Newsgroup: comp.arch

    On the gripping hand, do we actually need to turn a lot of software to
    be able to run in 128-bit address spaces? If my guess about the
    slowing and maybe eventually stopping growth becomes reality, for most programs 64-bit address space will be good enough forever, and we
    don't need to convert them.

    As a matter of fact 32bit is already enough "for ever" for many
    programs. But in order to accommodate the other use cases, you may
    still need new OS-level APIs (e.g. with 128bit file sizes) and you need
    to update all the libraries that may be used by programs that need the
    larger space, which in turn forces the other programs to be updated if
    they also use those same libraries. So it tends to spread "everywhere".


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Wed Aug 12 20:13:06 2026
    From Newsgroup: comp.arch

    On 2026-Aug-12 18:00, Scott Lurndal wrote:
    BGB <cr88192@gmail.com> writes:
    On 8/12/2026 12:57 AM, Thomas Koenig wrote:

    HDD sizes:
    Well, now one can potentially get a 12TB or so, but 4TB/6TB is more
    typical for new "big" drives.

    You are behind the times, seagate offers drives with more than
    40TB.


    When did 1TB drives start showing up? Around 2007 or so. So, 19 years,
    for a reasonable maximum of around 3.5 bits or so...


    Recently got ahold of some used 2TB drives, still good.
    Date of manufacture: 2018.
    So, 1 decade, HDD size doubled.

    SSDs showed up, and are smaller. Still, a multi-TB SSD is pretty
    expensive, and also are seeing neither rapid size gains nor price drops.

    NVME has eclipsed (and at the high-end superceeded) SSD drives.
    The largest NVMe drives store up to 512TB, and petabytes aren't
    far away.

    https://www.techradar.com/pro/the-worlds-largest-ssd-is-here-dapustor-unveils-a-massive-512tb-drive

    Flash prices are currently inflated by the ML bubble, with most
    production pre-sold for the next two years or more. Expect them
    to go up until the bubble pops.


    Recent pricing on HDD, SSD:
    "SSD prices rose 5 percent in July, now being ~6.5 times higher than a year ago,
    while hard disk drive prices also rose 5 percent but only to a level 2.5x higher than a year ago."

    SSD prices still rocketing up faster than disk https://www.blocksandfiles.com/flash/2026/08/11/ssd-prices-still-rocketing-up-faster-than-disk/5286189



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Wed Aug 12 17:21:48 2026
    From Newsgroup: comp.arch

    On 8/12/2026 1:14 PM, Chris M. Thomasson wrote:
    On 8/11/2026 2:21 PM, MitchAlsup wrote:
    [...]

    For some reason this reminds me of the 63 bit counter lockless counter
    algo from Joe Seigh. I think this is it:

    https://groups.google.com/g/comp.lang.asm.x86/c/FScbTaQEYLc/m/HueJj2wTqQUJ

    Oh crap. Sorry Joe. I posted the one with CAS. Iirc you had one with XADD.

    Joe Seigh:

    "The code for the 63 bit atomic counter has been posted already so I
    assume you mean the 64 bit counter. I only did a quick and dirty
    prototype in C to verify the carry out logic and pointer switching."
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 13 01:01:16 2026
    From Newsgroup: comp.arch


    John Levine <johnl@taugh.com> posted:

    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah, much sooner.

    The data format was by current standards rather odd. An extended format number
    was stored as a pair of long format numbers, stored in a pair of floating poitn
    registers, with the exponent of the second one 14 less than the first, since there were 14 hex digits in the fraction of each part. The system ignored the sign and exponent in the low part but set it consistently in instruction results. The instructions were add, subtract, multiply, multiply long with extended result, and round from extended to long. You could lengthen from long
    to extended by making the second part zero. There was no extended compare but it
    was easy to fake, long compare of the high parts, if they're equal compare the
    low parts. All formats had the same 7 bit exponent which since it was hex FP was roughly equivalent to a 9 bit binary exponent.

    They've carried this forward through 370/XA, 370 and zSeries. S/390 added a few
    new instructions like square root.

    S/390 added IEEE binary floating point including a 128 bit format with a 15 bit
    binary exponent. The 128 bit numbers are still stored in pairs of floating registers
    but the instruction set is more complete, including comarisons and division, and there
    are now 16 FP registers rather than just 4.

    zSeries added decimal floating point, again with a 128 bit format.

    The two-part format seems odd to us but it was typical of the era. The 7094's single precision floating point instructions produced two word results, as two
    floating numbers in the AC and MQ registers with the second having a suitably smaller exponent. It also had double add, subtract, multiply, and divide using
    that format. The first model of the PDP-10 used a similar double format but later ones switched to one with a single exponent and more fraction bits.

    I believe that the reason they added the extended format to the 360/85 was due
    to well justified complaints that the 360's FP was much worse than the 7094's.

    That was even after they (IBM) added the guard digit to the calculation
    logic.

    The 7094's double precision had two 27-bit fractions for a total of 54 fraction
    bits in a 72 bit word pair. A S/360 long had 14 hex digits or nominally 56 bits, but due to its wobbling precision, it lost 2 or 3 bits on each operation.
    So they added extended precision which was definitely better than 54 bits.

    But anyway, we've had some kind of 128 bit FP for almost 60 years, and we've had 128 IEEE FP for at least 30. This isn't new.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 13 01:12:43 2026
    From Newsgroup: comp.arch


    Terje Mathisen <terje.mathisen@tmsw.no> posted:

    John Levine wrote:
    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah, much sooner.

    Yeah, I knew that. :-)

    What's been missing is general support for ieee754 fp128 across CPU architectures, so that portable code can assume it is there.

    The more problematic part, but also somewhat easier to solve is 128-bit integers:

    Using pairs of double does not extend the exponent range, but with pairs
    of 64-bit registers we can support 128-bit integer ops in exactly the
    same way we did 64-bit back in the 32-bit days:

    In my mind: pairs of FP values are used to perform exact FP calculations
    {ala augmented summation and multiplication}.

    ADD + ADC, SUB + SBB for add128 and sub128, 4 x MUL plus a few ADD/ADC
    for mul128.

    As long as these calculations require 2 instruction slots, one can perform Add128 as DBLE Rdhi,Rs1hi,Rs2hi; ADD Rdlo,Rs1lo,Rs2lo
    ...

    a) it takes no more instruction space,
    b) saves instruction entropy,
    c) allows implementations to determine performance for themselves.

    DBLE is for 128-bits {possibly 192, 256 as extensions},
    CARRY is for arbitrary width which tolerate accumulator semantics

    div128 ends up as a function call, the best way to implement that
    depends on the hardware architecture and what it supports in the form of fast 64-bit DIV (like the latest Apple/ARM silicon), fast FF1,
    reciprocal lookup and the relative speeds of them.

    One of the advantages of performing transcendental instructions in HW
    is that the preferred multiplier is closer to 64|u64 than 53|u53 or 57|u57.
    The 64|u64 tree provides integer |u in 64|u64 and 128|u128 sizes easily
    {no strange sequences like we had to do with 53|u53 trees.}

    CMP needs a few extra ops, but easily within what a compiler will
    happily inline.

    Logic ops are easy of course, shifts need to handle shift amounts in the [64-127] range, typically with a MOV plus residual shift.

    A lot of the time the MOV is conditional on the shift amount.

    I guess what I'm saying is that int128_t isn't a problem, except when
    you want to use them for array indexing!

    128-bit Array indexing is worthless unless one has more than 64-bit
    VAS. {So are 128-bit pointers}

    Terje

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Aug 12 21:31:16 2026
    From Newsgroup: comp.arch

    On 8/12/2026 5:00 PM, Scott Lurndal wrote:
    BGB <cr88192@gmail.com> writes:
    On 8/12/2026 12:57 AM, Thomas Koenig wrote:

    HDD sizes:
    Well, now one can potentially get a 12TB or so, but 4TB/6TB is more
    typical for new "big" drives.

    You are behind the times, seagate offers drives with more than
    40TB.


    Not usually seen anything near these sizes...


    If checking for hard-drives online, many seem to be around the 4TB to
    6TB range. Some bigger ones (8TB or 12TB) exist, but have a very steep
    price increase.


    But, yeah, it seems now some larger ones exist (like 20TB), but the cost
    is very large (like, in the price range of a whole new gaming PC).



    When did 1TB drives start showing up? Around 2007 or so. So, 19 years,
    for a reasonable maximum of around 3.5 bits or so...


    Recently got ahold of some used 2TB drives, still good.
    Date of manufacture: 2018.
    So, 1 decade, HDD size doubled.

    SSDs showed up, and are smaller. Still, a multi-TB SSD is pretty
    expensive, and also are seeing neither rapid size gains nor price drops.

    NVME has eclipsed (and at the high-end superceeded) SSD drives.
    The largest NVMe drives store up to 512TB, and petabytes aren't
    far away.


    A lot of the NVMe drives seem to be around 500GB to 2TB...
    But, the 2TB options are also, very expensive...

    Bigger options exist if one gets a 2.5" SATA drives.

    Both are still notably more expensive than HDDs though.


    If a 512TB SSD exists somewhere, I would imagine the price would be... unreasonable...


    https://www.techradar.com/pro/the-worlds-largest-ssd-is-here-dapustor-unveils-a-massive-512tb-drive

    Flash prices are currently inflated by the ML bubble, with most
    production pre-sold for the next two years or more. Expect them
    to go up until the bubble pops.


    Not sure what MOBO's would take that form factor, or what such a thing
    would cost...

    Doesn't change much though...

    As-is, looks like 1TB M.2 NVMe SSD's are around $180 or so...


    But, yeah, if post-bubble suddenly means multi-TB SSD's for say like $40
    or something, that would be nice...



    In any case, when 1TB HDD's appeared like 18/19 years ago, they were not
    like some super-expensive / unobtanium type of thing...


    They were just like moderately more expensive than the 320 / 500 / 700GB drives that they replaced. Then for a long time, stuff just sort of
    stopped at 1TB, until it started going up again...


    So, it is unlike the "very large" options that exist now, which also
    carry a disproportionately large price tag.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Wed Aug 12 22:59:22 2026
    From Newsgroup: comp.arch

    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    On the gripping hand, do we actually need to turn a lot of software to
    be able to run in 128-bit address spaces? If my guess about the
    slowing and maybe eventually stopping growth becomes reality, for most
    programs 64-bit address space will be good enough forever, and we
    don't need to convert them.

    As a matter of fact 32bit is already enough "for ever" for many
    programs. But in order to accommodate the other use cases, you may
    still need new OS-level APIs (e.g. with 128bit file sizes) and you need
    to update all the libraries that may be used by programs that need the
    larger space, which in turn forces the other programs to be updated if
    they also use those same libraries. So it tends to spread "everywhere".


    Yeah. Probably the majority of programs could run in a 32-bit VAS, but:
    Typically only makes around a 15% difference in overall memory use;
    Mostly only applies to smaller programs;
    So, 15% off an already smaller process doesn't save much.
    Not worth the added cost of dealing with both a 32 and 64-bit ABI.



    As for files, video files and ISO's and similar can often exceed 4GB.
    But, most other files are much smaller than this.

    It is likely going to be a long time as well before anyone needs more
    than 64 bits for a file offset. Well, for the subset of use-cases that
    need files bigger than 4GB.



    If one averages the files for all the files on a drive, wasn't seeing GB
    or even MB...

    IIRC, it was more in the area of 160K or so IIRC.

    Then again, the predominant file formats also come up as ".c" and
    similar, which may skew things.

    I guess maybe it could make sense to run stats based on file extension.

    Say, for example:
    ".c" and ".h" and ".txt" and similar tending to skew smaller;
    But ".mp4", ".avi", ".iso", etc tending to skew much larger.

    Like, a comparably small number of video files can easily eat all the
    space on an HDD; vs millions of C files...


    Even a lot of other formats, like ".bmp", still tend to average in kB
    range (when, in theory, they can be much larger).


    Well, say, vs the 1-2MB JPEG's one gets from a phone camera (well, where
    phone camera likes giving images with a whole lot of pixels, but kinda
    meh for colors, but this is kinda true with all of the cameras).



    So, it seems likely that average-case file sizes are not likely to see a steady size-increase over time.

    Well, even if the multi-MB ".c" or ".bmp" file may show up occasionally.
    Well, or other formats, like ".xpm" or ".ppm" or so on.

    I guess a TODO could be to stat average file sizes based on file type
    and their % usage relative to total drive contents.

    ...


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Wed Aug 12 21:40:49 2026
    From Newsgroup: comp.arch

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    On the gripping hand, do we actually need to turn a lot of software to
    be able to run in 128-bit address spaces?-a If my guess about the
    slowing and maybe eventually stopping growth becomes reality, for most
    programs 64-bit address space will be good enough forever, and we
    don't need to convert them.

    As a matter of fact 32bit is already enough "for ever" for many
    programs.-a But in order to accommodate the other use cases, you may
    still need new OS-level APIs (e.g. with 128bit file sizes) and you need
    to update all the libraries that may be used by programs that need the
    larger space, which in turn forces the other programs to be updated if
    they also use those same libraries.-a So it tends to spread "everywhere".


    Yeah. Probably the majority of programs could run in a 32-bit VAS, but:
    -a Typically only makes around a 15% difference in overall memory use;
    -a Mostly only applies to smaller programs;
    -a-a-a So, 15% off an already smaller process doesn't save much.
    -a Not worth the added cost of dealing with both a 32 and 64-bit ABI.



    As for files, video files and ISO's and similar can often exceed 4GB.
    -a But, most other files are much smaller than this.

    It is likely going to be a long time as well before anyone needs more
    than 64 bits for a file offset. Well, for the subset of use-cases that
    need files bigger than 4GB.



    If one averages the files for all the files on a drive, wasn't seeing GB
    or even MB...

    IIRC, it was more in the area of 160K or so IIRC.

    Then again, the predominant file formats also come up as ".c" and
    similar, which may skew things.

    I guess maybe it could make sense to run stats based on file extension.

    Say, for example:
    -a ".c" and ".h" and ".txt" and similar tending to skew smaller;
    -a But ".mp4", ".avi", ".iso", etc tending to skew much larger.

    Like, a comparably small number of video files can easily eat all the
    space on an HDD; vs millions of C files...


    Even a lot of other formats, like ".bmp", still tend to average in kB
    range (when, in theory, they can be much larger).


    Well, say, vs the 1-2MB JPEG's one gets from a phone camera (well, where phone camera likes giving images with a whole lot of pixels, but kinda
    meh for colors, but this is kinda true with all of the cameras).



    So, it seems likely that average-case file sizes are not likely to see a steady size-increase over time.

    Well, even if the multi-MB ".c" or ".bmp" file may show up occasionally.
    -a Well, or other formats, like ".xpm" or ".ppm" or so on.

    I guess a TODO could be to stat average file sizes based on file type
    and their % usage relative to total drive contents.

    Your analysis is flawed as it is based on personal computer use. Think
    of large databases used by industry or government. Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred
    bytes each. So that is something like 150 GB for that one file.

    Think of a large airline. It has information for every seat (several
    hundred) for every flight (perhaps several hundred per day), for a year.
    And it has another file with information on each passenger.

    Think of the detailed worldwide maps used by the government for
    targeting cruise missiles.

    There are lots of examples like this.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Thu Aug 13 01:14:38 2026
    From Newsgroup: comp.arch

    On 8/12/2026 11:40 PM, Stephen Fuld wrote:
    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    On the gripping hand, do we actually need to turn a lot of software to >>>> be able to run in 128-bit address spaces?-a If my guess about the
    slowing and maybe eventually stopping growth becomes reality, for most >>>> programs 64-bit address space will be good enough forever, and we
    don't need to convert them.

    As a matter of fact 32bit is already enough "for ever" for many
    programs.-a But in order to accommodate the other use cases, you may
    still need new OS-level APIs (e.g. with 128bit file sizes) and you need
    to update all the libraries that may be used by programs that need the
    larger space, which in turn forces the other programs to be updated if
    they also use those same libraries.-a So it tends to spread "everywhere". >>>

    Yeah. Probably the majority of programs could run in a 32-bit VAS, but:
    -a-a Typically only makes around a 15% difference in overall memory use;
    -a-a Mostly only applies to smaller programs;
    -a-a-a-a So, 15% off an already smaller process doesn't save much.
    -a-a Not worth the added cost of dealing with both a 32 and 64-bit ABI.



    As for files, video files and ISO's and similar can often exceed 4GB.
    -a-a But, most other files are much smaller than this.

    It is likely going to be a long time as well before anyone needs more
    than 64 bits for a file offset. Well, for the subset of use-cases that
    need files bigger than 4GB.



    If one averages the files for all the files on a drive, wasn't seeing
    GB or even MB...

    IIRC, it was more in the area of 160K or so IIRC.

    Then again, the predominant file formats also come up as ".c" and
    similar, which may skew things.

    I guess maybe it could make sense to run stats based on file extension.

    Say, for example:
    -a-a ".c" and ".h" and ".txt" and similar tending to skew smaller;
    -a-a But ".mp4", ".avi", ".iso", etc tending to skew much larger.

    Like, a comparably small number of video files can easily eat all the
    space on an HDD; vs millions of C files...


    Even a lot of other formats, like ".bmp", still tend to average in kB
    range (when, in theory, they can be much larger).


    Well, say, vs the 1-2MB JPEG's one gets from a phone camera (well,
    where phone camera likes giving images with a whole lot of pixels, but
    kinda meh for colors, but this is kinda true with all of the cameras).



    So, it seems likely that average-case file sizes are not likely to see
    a steady size-increase over time.

    Well, even if the multi-MB ".c" or ".bmp" file may show up occasionally.
    -a-a Well, or other formats, like ".xpm" or ".ppm" or so on.

    I guess a TODO could be to stat average file sizes based on file type
    and their % usage relative to total drive contents.

    Your analysis is flawed as it is based on personal computer use.-a Think
    of large databases used by industry or government.-a Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million.-a Besides basic identifying information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred
    bytes each.-a So that is something like 150 GB for that one file.

    Think of a large airline.-a It has information for every seat (several hundred) for every flight (perhaps several hundred per day), for a year.
    And it has another file with information on each passenger.

    Think of the detailed worldwide maps used by the government for
    targeting cruise missiles.

    There are lots of examples like this.


    Why would a database necessarily need to be a single giant file though,
    as opposed to spreading it over a number of smaller files?...

    One could have, say, spread the B-Tree for a database into lots of files
    that each have a hard limit of say 1GB or so, before it moves to the
    next file.

    Well, or like a lot of cameras when recording videos, if the file
    exceeds a certain size (typically also 1GB) it stops recording the old
    one and moves on to the next one. Or some VMs with their virtual HDD images.

    Or, even if 1GB seems small, use the existing 64b limit but use a larger chunking size like 1TB or 1PB or similar...


    OTOH, big databases seem like a relatively niche use case for computers.

    Like, say, big organizations may have reasons to run them, or web-hosts
    or similar, but most everyone else likely doesn't have much practical
    reason to run a database engine... (Well, excluding the random programs
    that like using SQLite to hold program settings or similar rather than
    use ".cfg" or ".ini" files or registry keys or similar...).


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Torbjorn Lindgren@tl@none.invalid to comp.arch on Thu Aug 13 12:20:27 2026
    From Newsgroup: comp.arch

    BGB <cr88192@gmail.com> wrote:
    HDD sizes:
    Well, now one can potentially get a 12TB or so, but 4TB/6TB is more
    typical for new "big" drives.

    When did 1TB drives start showing up? Around 2007 or so. So, 19 years,
    for a reasonable maximum of around 3.5 bits or so...

    Recently got ahold of some used 2TB drives, still good.
    Date of manufacture: 2018.
    So, 1 decade, HDD size doubled.

    The first 2TB drive came out in early 2009, two years after the first
    1TB drive (early 2007). It's not hard to find these things out so it's
    hard to take anything after you mention 2018 seriously.

    Since you're using MAX size, the current size is *NOT* 4TB or even
    12TB, even counting only physical spinning drives the current
    comparable max size is either 36TB or 40TB (it's unclear if the latter
    is in volume production but I assume it definitely will be during this
    year).

    That gives us a much better baseline, 40x (5.3 bits) in 19 years or
    roughly a bit per 3.5 years (3.7 years if we use 36TB). Which based on
    the above do suggest a slow-down since 2007 (but more intermediate
    data points are needed to conclude anything).

    But as others have mentioned a 512TB SSD has just been announced (by
    DapuStor) and a good argument can be made that they should count since
    it's really about storage, not specific methods.

    Under that assumption it's 9 bits in 19.5 years, or 1 bit per 2.2
    years (rounded up). Which close enough to 2 that I'm going to call
    that "might be close to linear in that period"


    SSDs showed up, and are smaller. Still, a multi-TB SSD is pretty
    expensive, and also are seeing neither rapid size gains nor price drops.

    Yes, it's out of reach of CONSUMERS. For the people buying the SSDs
    mentioned above, the storage is the (relatively!) CHEAP part of the
    system. Even at the insane, inflated prices of today - which is why
    they keep going up.

    Which is what drives the storage sector forwards and up so that is a
    very important baseline.


    Speculation:
    It is going to be a while...

    I agree on that, the physics just isn't likely to cooperate.

    IE, for the reasons you go into later in your post rather than the
    calculations above.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Andy Valencia@vandys@vsta.org to comp.arch on Thu Aug 13 06:41:52 2026
    From Newsgroup: comp.arch

    scott@slp53.sl.home (Scott Lurndal) writes:
    Flash prices are currently inflated by the ML bubble, with most
    production pre-sold for the next two years or more. Expect them
    to go up until the bubble pops.


    Spinning media as well. I've adjusted some of my disk array retirement schedule in the hopes that a larger actuarial window for failure will
    pay for itself in post-bubble prices. Two more years is about as far
    as I dare push it.


    Andy Valencia
    Home page: https://www.vsta.org/andy/
    To contact me: https://www.vsta.org/contact/andy.html
    No AI was used in the composition of this message
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Thu Aug 13 14:13:43 2026
    From Newsgroup: comp.arch

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
    On 8/12/2026 8:59 PM, BGB wrote:
    <snip>

    I guess a TODO could be to stat average file sizes based on file type
    and their % usage relative to total drive contents.

    Your analysis is flawed as it is based on personal computer use. Think
    of large databases used by industry or government. Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying >information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred
    bytes each. So that is something like 150 GB for that one file.

    Which could just as easily be stored in 1000 files (one for each
    of the leading 3-digits of the SSN).


    Think of a large airline. It has information for every seat (several >hundred) for every flight (perhaps several hundred per day), for a year.
    And it has another file with information on each passenger.

    It's highly unlikely that all that information would be stored in a
    single file, even on the Univac (now Unisys) TIP software that
    many airlines are still using.


    Think of the detailed worldwide maps used by the government for
    targeting cruise missiles.

    Again, there is no requirement that these be stored as a single
    file.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Thu Aug 13 14:20:49 2026
    From Newsgroup: comp.arch

    BGB <cr88192@gmail.com> writes:
    On 8/12/2026 5:00 PM, Scott Lurndal wrote:
    <snip>


    If a 512TB SSD exists somewhere, I would imagine the price would be... >unreasonable...


    https://www.techradar.com/pro/the-worlds-largest-ssd-is-here-dapustor-unveils-a-massive-512tb-drive

    Flash prices are currently inflated by the ML bubble, with most
    production pre-sold for the next two years or more. Expect them
    to go up until the bubble pops.


    Not sure what MOBO's would take that form factor, or what such a thing
    would cost...

    Pretty much every mainboard that isn't aimed at consumers.

    The other innovation being used widely, at large scale,
    in the big datacenters for storage is to re-use old DDR4
    and DDR5 dimms from retired servers in PCI-Express CXL cards
    (many of which offer in-line compression) to expand
    DRAM. Generally used for KV storage.




    In any case, when 1TB HDD's appeared like 18/19 years ago, they were not >like some super-expensive / unobtanium type of thing...

    I beg to differ.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Thu Aug 13 15:02:29 2026
    From Newsgroup: comp.arch

    BGB <cr88192@gmail.com> schrieb:

    Why would a database necessarily need to be a single giant file though,
    as opposed to spreading it over a number of smaller files?...

    The enterprise system SAP S/4HANA which a lot of companies are
    currently introducing runs on SAP HANA, an in-memory database.

    So, not even fa file :-)
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Thu Aug 13 15:21:25 2026
    From Newsgroup: comp.arch

    Torbjorn Lindgren <tl@none.invalid> writes:
    That gives us a much better baseline, 40x (5.3 bits) in 19 years or
    roughly a bit per 3.5 years (3.7 years if we use 36TB). Which based on
    the above do suggest a slow-down since 2007 (but more intermediate
    data points are needed to conclude anything).

    As it happens, I have recently extended my data from <2025May26.091301@mips.complang.tuwien.ac.at>, and up to now we have:

    size since
    16TB 2019
    18TB 2020
    20TB 2021
    22TB 2022
    24TB 2023
    26TB 2024
    30TB 2025
    32TB 2026-08-01

    (Method: looking at the "gelistet seit" entries on <https://geizhals.eu/?cat=hde7s>).

    Seagate claims they are delivering 44TB HDDs, but no HDD above 32TB
    was for sale in various computer shops at the time when they made this
    claim.

    I expect a boost compare to the last years in the next few years
    thanks to HAMR, but even Seagate does not expect a return to earlier
    capacity growth rates: <https://pics.computerbase.de/1/2/0/3/5/3-d53d8a319080a28f/5-1080.eab585b2.png>.

    But as others have mentioned a 512TB SSD has just been announced (by >DapuStor) and a good argument can be made that they should count since
    it's really about storage, not specific methods.

    I don't think that maximum capacity at any cost is a good way to
    measure progress in SSDs.

    For HDDs, it's different because they tend not to use more resources
    (and thus higher cost) for more capacity, but for high-capacity SSDs
    that's different.

    But we could go with a similar approach of looking only at the SSDs on
    offer and listed at <https://geizhals.at/?cat=hdssd&pagesize=30&sort=p&promode=false&allvalues=true>

    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Unfortunately, for 8TB drives, I only find some listed since 2018 and
    2019, so the research method is not useful for researching more than a
    few years in the past, as products get replaced.

    Anyway, we can conclude that we saw a growth by 1 bit in 5 years,
    which is faster than for HDDs, but much less than we were used to when
    Moore was still in full swing.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 13 17:26:54 2026
    From Newsgroup: comp.arch


    scott@slp53.sl.home (Scott Lurndal) posted:

    Michael S <already5chosen@yahoo.com> writes:
    On Wed, 12 Aug 2026 18:52:27 GMT
    scott@slp53.sl.home (Scott Lurndal) wrote:

    John Levine <johnl@taugh.com> writes:
    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah,
    much sooner.
    <snip>
    But anyway, we've had some kind of 128 bit FP for almost 60 years,
    and we've had 128 IEEE FP for at least 30. This isn't new.

    The Burroughs B3500 had 400-bit (100 digit) FP mantissas in 1966.

    It turned out that customers (mainly financial) were happy with the
    100 digit integer fixed point formats and the 408-bit FP format was
    removed from the next generation (B4800) processors and replaced with
    a single smaller (20 digit mantissa, 2 digit exponent) floating
    point accumulator.

    Either because customers were happy with 100 digit integer or
    because they were unhappy witth speed of 100 digit FP.

    Banks, insurance companies, corporate IT and later ATM network providers weren't interested in floating point
    at all. Using fixed point integer was much easier to reconcile
    with various bookkeeping standards and regulations.

    And with the rounding required to match the states' regulations not
    some IEEE standard rounding, fixed-point probably always will win.

    Burroughs large systems (B6500 & successors) were the systems
    more likely to be used for scientific applications requiring
    floating point.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Thu Aug 13 17:45:46 2026
    From Newsgroup: comp.arch


    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use. Think
    of large databases used by industry or government. Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred
    bytes each. So that is something like 150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has his/her
    own file.

    Think of a large airline. It has information for every seat (several hundred) for every flight (perhaps several hundred per day), for a year.
    And it has another file with information on each passenger.

    Think of the detailed worldwide maps used by the government for
    targeting cruise missiles.

    I think you want to use the term "assign targets to" cruise missiles.
    But a world wide vertical height map and GPS coordinates work fine.

    There are lots of examples like this.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From EricP@ThatWouldBeTelling@thevillage.com to comp.arch on Thu Aug 13 14:47:07 2026
    From Newsgroup: comp.arch

    On 2026-Aug-13 13:26, MitchAlsup wrote:

    scott@slp53.sl.home (Scott Lurndal) posted:

    Michael S <already5chosen@yahoo.com> writes:
    On Wed, 12 Aug 2026 18:52:27 GMT
    scott@slp53.sl.home (Scott Lurndal) wrote:

    John Levine <johnl@taugh.com> writes:
    It appears that Terje Mathisen <terje.mathisen@tmsw.no> said:
    128-bit integer and fp will happen much sooner!

    IBM added 128 bit floating point to the 360/85 in 1967, so yeah,
    much sooner.
    <snip>
    But anyway, we've had some kind of 128 bit FP for almost 60 years,
    and we've had 128 IEEE FP for at least 30. This isn't new.

    The Burroughs B3500 had 400-bit (100 digit) FP mantissas in 1966.

    It turned out that customers (mainly financial) were happy with the
    100 digit integer fixed point formats and the 408-bit FP format was
    removed from the next generation (B4800) processors and replaced with
    a single smaller (20 digit mantissa, 2 digit exponent) floating
    point accumulator.

    Either because customers were happy with 100 digit integer or
    because they were unhappy witth speed of 100 digit FP.

    Banks, insurance companies, corporate IT and later ATM network providers
    weren't interested in floating point
    at all. Using fixed point integer was much easier to reconcile
    with various bookkeeping standards and regulations.

    And with the rounding required to match the states' regulations not
    some IEEE standard rounding, fixed-point probably always will win.

    The rounding rules vary for different calculations, for diffferent financial products,
    in different countries.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Thu Aug 13 21:12:14 2026
    From Newsgroup: comp.arch

    Scott Lurndal wrote:
    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
    On 8/12/2026 8:59 PM, BGB wrote:
    <snip>

    I guess a TODO could be to stat average file sizes based on file type
    and their % usage relative to total drive contents.

    Your analysis is flawed as it is based on personal computer use. Think
    of large databases used by industry or government. Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying
    information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred
    bytes each. So that is something like 150 GB for that one file.

    Which could just as easily be stored in 1000 files (one for each
    of the leading 3-digits of the SSN).

    My pi-search <https://tmsw.no/pi-search/> program has pi with 1e9
    digits, the full inverted index that covers all digit sequences within
    those billion digits is split into 10 files, so that each of them only
    needs 4e8 bytes. This setup allows me to handle up to 2^32 digits while
    still keeping each of the index files within 1.6GB, so that it works
    even on a 32-bit filesystem.


    Think of a large airline. It has information for every seat (several
    hundred) for every flight (perhaps several hundred per day), for a year.
    And it has another file with information on each passenger.

    It's highly unlikely that all that information would be stored in a
    single file, even on the Univac (now Unisys) TIP software that
    many airlines are still using.


    Think of the detailed worldwide maps used by the government for
    targeting cruise missiles.

    Again, there is no requirement that these be stored as a single
    file.

    Right.

    The fact that the AS400 had a unified store with everthing memorymapped
    does not mean that this is the only way to do it, or even the most
    efficient.

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Thu Aug 13 19:18:55 2026
    From Newsgroup: comp.arch

    According to EricP <ThatWouldBeTelling@thevillage.com>:
    And with the rounding required to match the states' regulations not
    some IEEE standard rounding, fixed-point probably always will win.

    The rounding rules vary for different calculations, for diffferent financial products,
    in different countries.

    DFP is a plausible alternative, since its rounding rules are different. Rather than
    normalizing results, opoerations preserve the "quantum", the magnitude of the least
    significant digit, if possible. Each arithmetic operation can specify the rounding
    to use, and there are other operations to manage operand scales.

    I think the main advantage over fixed point is that you can do the rounding in each
    operation rather than having to fix it up after each possibly inexact op.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Thu Aug 13 19:23:08 2026
    From Newsgroup: comp.arch

    According to Terje Mathisen <terje.mathisen@tmsw.no>:
    Again, there is no requirement that these be stored as a single file.

    Right.

    The fact that the AS400 had a unified store with everthing memorymapped
    does not mean that this is the only way to do it, or even the most >efficient.

    Sure, but it enables a programming model that a lot of people seem to like, considering the success and longevity of S/38->AS/400->something i something.

    There's been more than one time that I built a database with all of the
    files and tables set up for efficient implementation of the kind of work
    I anticipated, then found that it was spending a lot of time doing other stuff.

    Single address space can push those issues down into the implementation.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Thu Aug 13 14:59:40 2026
    From Newsgroup: comp.arch

    On 8/13/2026 9:20 AM, Scott Lurndal wrote:
    BGB <cr88192@gmail.com> writes:
    On 8/12/2026 5:00 PM, Scott Lurndal wrote:
    <snip>


    If a 512TB SSD exists somewhere, I would imagine the price would be...
    unreasonable...


    https://www.techradar.com/pro/the-worlds-largest-ssd-is-here-dapustor-unveils-a-massive-512tb-drive

    Flash prices are currently inflated by the ML bubble, with most
    production pre-sold for the next two years or more. Expect them
    to go up until the bubble pops.


    Not sure what MOBO's would take that form factor, or what such a thing
    would cost...

    Pretty much every mainboard that isn't aimed at consumers.

    The other innovation being used widely, at large scale,
    in the big datacenters for storage is to re-use old DDR4
    and DDR5 dimms from retired servers in PCI-Express CXL cards
    (many of which offer in-line compression) to expand
    DRAM. Generally used for KV storage.


    OK.

    I see M.2 slots fairly often, but not seen anything like that...

    I have a few old rack servers around, but they use SATA.
    RAM type in these servers is DDR2 ECC rough.


    My main PC is using DDR4 in this case.

    But, a little slower than the claimed speed on the RAM, as the claimed
    speed didn't work.

    Claimed speed: 3000 MT/s
    JEDEC speed: 2133 MT/s / 1067 MHz
    XMP : 3000 MT/s / 1500MHz
    Works : 2400 MT/s / 1200MHz

    Though, AI made the claim that for Zen+, 2933 MT/s is only reliable with
    2 DIMMs, and with 4 DIMMs some de-rating is needed.

    Also claimed that a BIOS firmware update could allow for a full 128GB
    (vs the current 112GB setup), as the BIOS predates the release of 32GB
    RAM modules.


    Could have built a higher-end setup, but slightly older gamer parts were cheaper at the time (say, when Zen 3 was newish, a Zen+ CPU with a Zen 1
    era MOBO was a lot cheaper).


    Well, and still better than the AMD FX that I had before (which was kind
    of a turd, which in turn I had gotten mostly because the Phenom II that
    I was running before had started failing, but was able to limp it along
    via underclocking; then had to underclock the FX to make it run reliably
    / didn't try to melt itself).

    Well, at least the Zen+ runs reliably at stock speed, but its stock
    speed is also closer to what I had under-clocked the FX to anyways.






    In any case, when 1TB HDD's appeared like 18/19 years ago, they were not
    like some super-expensive / unobtanium type of thing...

    I beg to differ.


    My parents bought some (including for me), but my parents are (usually)
    kinda cheap, so presumably wouldn't have bought them if they were enterprise-grade expensive...


    I remember them mostly being the 1TB "WD Green Power" HDDs (well, before
    they later became just "WD Green").

    Though, I guess an AI response here claims that while they were
    initially around $225 at launch, a price war in 2008 quickly pushed them
    to around $95...


    In my PC, I am now considering swapping a few older drives (a WD Green
    and a WD Black).

    Got some retired drives from a server, seemingly a mere 30K hours of use.
    Vs the ~ 96K and 117K hours for the 1TB drives currently in my PC.

    Well, and the server drives being some HGST UltraStar 2TB drives...
    Doing some integrity checks but thus far everything looks good.


    I guess there is that as an AI sentiment, after this many hours, drives
    are due for replacement (even in the absence of obvious drive failure signals).


    In this case, the remaining drives are mostly a few (comparably newer)
    newer WD Red drives.


    Once gave Seagate another chance (on a "if they are still crap, how are
    they still in business?" sense), so at one point tried using a "2TB
    Seagate Baracuda", which worked for a little while and then promptly
    failed (this one then got replaced by a "4TB WD Red").


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Thu Aug 13 20:06:44 2026
    From Newsgroup: comp.arch

    MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:

    And with the rounding required to match the states' regulations not
    some IEEE standard rounding, fixed-point probably always will win.

    IBM supports their decimal floating point in hardware on POWER, and
    it has lots of rounding modes.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Thu Aug 13 15:48:40 2026
    From Newsgroup: comp.arch

    On 8/13/2026 10:21 AM, Anton Ertl wrote:
    Torbjorn Lindgren <tl@none.invalid> writes:
    That gives us a much better baseline, 40x (5.3 bits) in 19 years or
    roughly a bit per 3.5 years (3.7 years if we use 36TB). Which based on
    the above do suggest a slow-down since 2007 (but more intermediate
    data points are needed to conclude anything).

    As it happens, I have recently extended my data from <2025May26.091301@mips.complang.tuwien.ac.at>, and up to now we have:

    size since
    16TB 2019
    18TB 2020
    20TB 2021
    22TB 2022
    24TB 2023
    26TB 2024
    30TB 2025
    32TB 2026-08-01

    (Method: looking at the "gelistet seit" entries on <https://geizhals.eu/?cat=hde7s>).

    Seagate claims they are delivering 44TB HDDs, but no HDD above 32TB
    was for sale in various computer shops at the time when they made this
    claim.

    I expect a boost compare to the last years in the next few years
    thanks to HAMR, but even Seagate does not expect a return to earlier
    capacity growth rates: <https://pics.computerbase.de/1/2/0/3/5/3-d53d8a319080a28f/5-1080.eab585b2.png>.


    OK.


    So, the maximum is pretty high I guess (and much larger than I see for
    HDDs on Amazon and similar).

    Even if it is mostly the 2/4/6 TB drives that are affordable...

    I mostly distrust Seagate though, as IME their HDDs have had a bad habit
    IME of failing after a few years of use. So, I mostly ended up ignoring
    them.


    Had mostly been going for WD and similar.

    If the limit is so much higher, it is a question then why the smaller
    ones seem to have remained so much more prominent (besides just affordability). But, if the technology to make bigger drives was
    widespread, would have effectively expected the smaller ones to have
    been driven out of the market by now.


    But, anyways, these HGST drives I have are 2TB, and were labeled as made
    in 2018, both details printed fairly obviously on the drive labels
    (well, along with having a DELL logo displayed more prominently than the
    HGST logo; no evidence of any WD markings though; as WD bought out HGST sometime around then).

    Seemingly both with around 30K hours of use.


    As for the drives I have (for "Power of Hours"):
    WD Red, 4TB: 66K hours ( 7.5 yr)
    WD Red, 6TB: 41K hours ( 4.7 yr)
    WD Green, 1TB: 116K hours (13.24yr) (*1)
    WD Black, 1TB: 97K hours (11.1 yr) (*2)
    Samsung SSD, 1TB: 18K hours ( 2.06yr)

    *1: Came with a bundle for an Athlon II.
    *2: Came with a bundle for an AMD FX-8350.


    Seems the retired server drives are actually some of the newest drives
    here... But, given the drives actual age, would have expected a higher
    value here.

    None of the original "WD Green Power" drives remain in use, these
    original ones got retired (and the successor drive dropped the 'Power'
    from the name). I think at least one of the originals started getting
    read errors though.


    But, yeah, seems a few of my drives aren't as recent as I had thought...



    But as others have mentioned a 512TB SSD has just been announced (by
    DapuStor) and a good argument can be made that they should count since
    it's really about storage, not specific methods.

    I don't think that maximum capacity at any cost is a good way to
    measure progress in SSDs.

    For HDDs, it's different because they tend not to use more resources
    (and thus higher cost) for more capacity, but for high-capacity SSDs
    that's different.

    But we could go with a similar approach of looking only at the SSDs on
    offer and listed at <https://geizhals.at/?cat=hdssd&pagesize=30&sort=p&promode=false&allvalues=true>

    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Unfortunately, for 8TB drives, I only find some listed since 2018 and
    2019, so the research method is not useful for researching more than a
    few years in the past, as products get replaced.

    Anyway, we can conclude that we saw a growth by 1 bit in 5 years,
    which is faster than for HDDs, but much less than we were used to when
    Moore was still in full swing.


    I guess there is the difference as well, that with SSDs, you can fit 1TB
    on roughly a single chip stick onto a fairly small PCB (that is held in
    place with a small screw).


    If you allow for a big brick of chips, the maximum limit goes up
    considerably.
    But so does the cost...

    So, maybe the question might be, say:

    How much can you fit onto a roughly 49mm^2 (or, whichever exact size
    these are) die?...


    - anton

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Fri Aug 14 00:20:59 2026
    From Newsgroup: comp.arch

    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller, offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    Here's the vendor's page:

    https://www.solidigm.com/products/technology/solidigm-path-to-122tb-ssd.html
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Thu Aug 13 20:09:12 2026
    From Newsgroup: comp.arch

    On 8/13/2026 5:20 PM, John Levine wrote:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller,
    offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    Here's the vendor's page:

    https://www.solidigm.com/products/technology/solidigm-path-to-122tb-ssd.html

    Fwiw, you made me think of Egg Head Software stores back in the mid to
    late 80's early 90's for me.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Fri Aug 14 06:31:50 2026
    From Newsgroup: comp.arch

    John Levine <johnl@taugh.com> writes:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller, >offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    It says "out of stock" on that page.

    But I expect that Solidigm has delivered such SSDs to some customers.
    It's just that the trend in recent years to put more flash devices in
    a package just reflects on market demand (especially before the flash
    prices rose), not on technical advances in individual flash devices.
    The 512TB announcement uses a new, larger form factor in order to fit
    all the devices in one package, so it obviously does not reflect an
    advance in flash density.

    Note that Moore referred to "minimum component cost" in his law. For
    things like DRAM and SSD (and HDDs, although the bits there are not
    just due to semiconductor advances), with a site like
    http://geizhals.eu, you can sort by lowest price per memory amount; at
    the moment this shows a 2TB SSD at EUR81/TB, closely followed by two
    4TB SSDs.

    Unfortunately, one cannot easily find out what the corresponding price
    was at earlier times, so one would have to do such queries regularly
    and keep records for them, which I have not done.

    Another problem with this method is that some items are sometimes
    offered for a short time at substantially lower prices, possibly due
    to clearance sales or somesuch, and that may lead to results that do
    not reflect the general situation. In the present case, the 2TB SSD
    is offered by one dealer at that low price, and by two others at more
    than twice the price, the cheapest 4TB SSD is only offered by two
    dealers, and only the second 4TB SSD is offered by many dealers (12),
    with several (actually, in this case, all) at prices not too far from
    the cheapest offer.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Fri Aug 14 03:37:16 2026
    From Newsgroup: comp.arch

    On 8/14/2026 1:31 AM, Anton Ertl wrote:
    John Levine <johnl@taugh.com> writes:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller,
    offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    It says "out of stock" on that page.

    But I expect that Solidigm has delivered such SSDs to some customers.
    It's just that the trend in recent years to put more flash devices in
    a package just reflects on market demand (especially before the flash
    prices rose), not on technical advances in individual flash devices.
    The 512TB announcement uses a new, larger form factor in order to fit
    all the devices in one package, so it obviously does not reflect an
    advance in flash density.


    Yes.

    Note that Moore referred to "minimum component cost" in his law. For
    things like DRAM and SSD (and HDDs, although the bits there are not
    just due to semiconductor advances), with a site like
    http://geizhals.eu, you can sort by lowest price per memory amount; at
    the moment this shows a 2TB SSD at EUR81/TB, closely followed by two
    4TB SSDs.

    Unfortunately, one cannot easily find out what the corresponding price
    was at earlier times, so one would have to do such queries regularly
    and keep records for them, which I have not done.

    Another problem with this method is that some items are sometimes
    offered for a short time at substantially lower prices, possibly due
    to clearance sales or somesuch, and that may lead to results that do
    not reflect the general situation. In the present case, the 2TB SSD
    is offered by one dealer at that low price, and by two others at more
    than twice the price, the cheapest 4TB SSD is only offered by two
    dealers, and only the second 4TB SSD is offered by many dealers (12),
    with several (actually, in this case, all) at prices not too far from
    the cheapest offer.


    As far as I am concerned "just sell a bigger brick of silicon" is not
    really a valid advance here in terms of the original point I was making.

    Like, had more implicitly assumed making the SSD bigger without
    increasing the die size or using multiple dies.


    In these areas, true meaningful advancement tends to drag the bottom end
    along with it, so over time everything advances.

    Whereas, expensive gimmick approaches, may make something big/fancy, but
    fail to result in meaningful general advancement.


    Like, say, if you can make a 1024 core CPU that is the size of a dinner
    plate, this does little to advance things for the people still running 8
    or 16 core CPUs whose CPUs are not the size of a dinner plate. The
    overall situation, in this case, has not moved...


    It would still be an advancement though if each generation, the die was shrinking while keeping similar capabilities.

    But, in the recent "more transistors" thing, it hasn't been as much
    about increasing density, so much as making chip area bigger. So,
    "Moores' law" not really counting unless the chips either stay the same physical size, or get smaller.


    Much like, the solution to "Dennard scaling" breaking down was not to
    just throw ever more cooling at the problem.


    - anton

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 14 14:22:26 2026
    From Newsgroup: comp.arch


    John Levine <johnl@taugh.com> posted:

    According to EricP <ThatWouldBeTelling@thevillage.com>:
    And with the rounding required to match the states' regulations not
    some IEEE standard rounding, fixed-point probably always will win.

    The rounding rules vary for different calculations, for diffferent financial products,
    in different countries.

    DFP is a plausible alternative, since its rounding rules are different. Rather than
    normalizing results, opoerations preserve the "quantum", the magnitude of the least
    significant digit, if possible. Each arithmetic operation can specify the rounding
    to use, and there are other operations to manage operand scales.

    How does DFP obey a state rule whereby every monetary calculation resulting in a value over $0.0045 is rounded up +0.01 ??


    I think the main advantage over fixed point is that you can do the rounding in each
    operation rather than having to fix it up after each possibly inexact op.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 14 14:24:11 2026
    From Newsgroup: comp.arch


    John Levine <johnl@taugh.com> posted:

    According to Terje Mathisen <terje.mathisen@tmsw.no>:
    Again, there is no requirement that these be stored as a single file.

    Right.

    The fact that the AS400 had a unified store with everthing memorymapped >does not mean that this is the only way to do it, or even the most >efficient.

    Sure, but it enables a programming model that a lot of people seem to like, considering the success and longevity of S/38->AS/400->something i something.

    S/38->S400 has had a long life. However it was supposed to take over
    from 360->series Z--which it has not.

    There's been more than one time that I built a database with all of the
    files and tables set up for efficient implementation of the kind of work
    I anticipated, then found that it was spending a lot of time doing other stuff.

    Single address space can push those issues down into the implementation.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Michael S@already5chosen@yahoo.com to comp.arch on Fri Aug 14 17:43:46 2026
    From Newsgroup: comp.arch

    On Fri, 14 Aug 2026 14:24:11 GMT
    MitchAlsup <user5857@newsgrouper.org.invalid> wrote:

    John Levine <johnl@taugh.com> posted:

    According to Terje Mathisen <terje.mathisen@tmsw.no>:
    Again, there is no requirement that these be stored as a single
    file.

    Right.

    The fact that the AS400 had a unified store with everthing
    memorymapped does not mean that this is the only way to do it, or
    even the most efficient.

    Sure, but it enables a programming model that a lot of people seem
    to like, considering the success and longevity of
    S/38->AS/400->something i something.

    S/38->S400 has had a long life. However it was supposed to take over
    from 360->series Z--which it has not.


    Supposed by whom?
    Certainly not by IBM officials.

    There's been more than one time that I built a database with all of
    the files and tables set up for efficient implementation of the
    kind of work I anticipated, then found that it was spending a lot
    of time doing other stuff.

    Single address space can push those issues down into the
    implementation.


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Fri Aug 14 15:51:06 2026
    From Newsgroup: comp.arch

    John Levine <johnl@taugh.com> writes:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller, >offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    That would be the $64,000 dollar question, no?

    https://en.wikipedia.org/wiki/The_$64,000_Question
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Fri Aug 14 16:20:49 2026
    From Newsgroup: comp.arch

    Michael S <already5chosen@yahoo.com> writes:
    On Fri, 14 Aug 2026 14:24:11 GMT
    MitchAlsup <user5857@newsgrouper.org.invalid> wrote:
    S/38->S400 has had a long life. However it was supposed to take over
    from 360->series Z--which it has not.


    Supposed by whom?
    Certainly not by IBM officials.

    If you go back far enough, <https://en.wikipedia.org/wiki/IBM_Future_Systems_project> says:

    |The new systems were intended to replace the System/370 in the market
    |some time in the late 1970s.
    ...
    |The single-level store was implemented in the System/38 in 1978 and
    |moved to other systems in the lineup after that

    In particular, the S/38 was succeeded by the much more successful
    AS/400, also with a single-level store.

    I heard (from Heinz Zemanek) and recently also read somewhere that IBM
    expected to be broken up due to anti-trust action, and that they had
    several architectures in preparation for this, and that AS/400 is an
    outcome of this. However, reading <https://cs.stanford.edu/people/eroberts/cs181/projects/corporate-monopolies/government_ibm.html>,
    the danger seems to have been over by the time AS/400 was introduced
    (the case was dropped in 1982, AS/400 was introduced in 1988), but
    S/38 could have been a result of that. If that is the case, S/38
    definitely was not intended to replace S/370 (and the fact that S/38
    addressed a lower-cost market also speaks against such an intention),
    even if Future Systems originally was.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Fri Aug 14 16:51:48 2026
    From Newsgroup: comp.arch

    According to Scott Lurndal <slp53@pacbell.net>:
    John Levine <johnl@taugh.com> writes:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller,
    offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    That would be the $64,000 dollar question, no?

    Some of us are old enough to remember Dr Joyce Brothers.

    We now return you to storage density arcana.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Fri Aug 14 16:56:51 2026
    From Newsgroup: comp.arch

    According to MitchAlsup <user5857@newsgrouper.org.invalid>:
    The fact that the AS400 had a unified store with everthing memorymapped
    does not mean that this is the only way to do it, or even the most
    efficient.

    Sure, but it enables a programming model that a lot of people seem to like, >> considering the success and longevity of S/38->AS/400->something i something.

    S/38->S400 has had a long life. However it was supposed to take over
    from 360->series Z--which it has not.

    As far as I can tell FS was an exercise in hubris. IBM had just lived through the
    painful conversion from their 70xx and 1400 machines to the 360, and still had a
    lot of customers running old code in emulation on 360/370. It was absurd to imagine that the customers would do that again when the 370 was stiil viable with 31 bit addressing and not close to running out of address bits.

    They certainly learned that lesson since z has a mode that runs 24 bit code from the 1960s and 70s.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Fri Aug 14 17:03:41 2026
    From Newsgroup: comp.arch

    According to MitchAlsup <user5857@newsgrouper.org.invalid>:

    John Levine <johnl@taugh.com> posted:

    According to EricP <ThatWouldBeTelling@thevillage.com>:
    And with the rounding required to match the states' regulations not
    some IEEE standard rounding, fixed-point probably always will win.

    The rounding rules vary for different calculations, for diffferent financial products,
    in different countries.

    DFP is a plausible alternative, since its rounding rules are different. Rather than
    normalizing results, opoerations preserve the "quantum", the magnitude of the least
    significant digit, if possible. Each arithmetic operation can specify the rounding
    to use, and there are other operations to manage operand scales.

    How does DFP obey a state rule whereby every monetary calculation resulting in >a value over $0.0045 is rounded up +0.01 ??

    With explicit code. It has all of the normal rounding modes, but if you have an abnormal one
    you need to do it yourself. That would be a pretty easy one, a compare, a test and a round
    instruction.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Fri Aug 14 17:35:01 2026
    From Newsgroup: comp.arch

    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    John Levine <johnl@taugh.com> writes:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller,
    offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    It says "out of stock" on that page.

    I see "Request a Quote" which presumably means they don't stock it and
    would have to order it from Solidgm. Other places show it with 32
    week leadtimes. I presume they've sold them all to bulk customers
    like Coreweave.

    The 512TB announcement uses a new, larger form factor in order to fit
    all the devices in one package, so it obviously does not reflect an
    advance in flash density.

    True, but it's impressive they managed to squeeze 122TB into an NVME
    package. It uses QLC NAND, four bits per cell, which means fast reads
    but slow writes. That's apparently OK for AI training.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Fri Aug 14 17:53:32 2026
    From Newsgroup: comp.arch

    John Levine <johnl@taugh.com> writes:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    John Levine <johnl@taugh.com> writes:
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219 >>>>and EUR 26009). The first of these was listed in 2023. So we get:

    2018 15.36TB
    2023 30.72TB

    Newegg, which despite its odd name is a well known mail order computer seller,
    offers a 122TB SSD for $64,000.

    https://www.newegg.com/p/N82E16820318206

    Not having ordered one, I couldn't tell you how real it is.

    It says "out of stock" on that page.

    I see "Request a Quote" which presumably means they don't stock it and
    would have to order it from Solidgm. Other places show it with 32
    week leadtimes. I presume they've sold them all to bulk customers
    like Coreweave.


    I suspect that the 32 weeks is the time to get the flash chips
    from the manufacturer(s). Production has been committed for
    the next two years.

    The Solidigm at newegg is only PCIe 4.0 - modern versions are running
    PCIe 6.

    https://www.micron.com/products/storage/ssd/data-center-ssd/9650-ssd

    The 512TB announcement uses a new, larger form factor in order to fit
    all the devices in one package, so it obviously does not reflect an
    advance in flash density.

    True, but it's impressive they managed to squeeze 122TB into an NVME >package. It uses QLC NAND, four bits per cell, which means fast reads
    but slow writes. That's apparently OK for AI training.

    And for Key-Value stores.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Fri Aug 14 21:47:44 2026
    From Newsgroup: comp.arch


    John Levine <johnl@taugh.com> posted:

    According to MitchAlsup <user5857@newsgrouper.org.invalid>:

    John Levine <johnl@taugh.com> posted:

    According to EricP <ThatWouldBeTelling@thevillage.com>:
    And with the rounding required to match the states' regulations not
    some IEEE standard rounding, fixed-point probably always will win.

    The rounding rules vary for different calculations, for diffferent financial products,
    in different countries.

    DFP is a plausible alternative, since its rounding rules are different. Rather than
    normalizing results, opoerations preserve the "quantum", the magnitude of the least
    significant digit, if possible. Each arithmetic operation can specify the rounding
    to use, and there are other operations to manage operand scales.

    How does DFP obey a state rule whereby every monetary calculation resulting in
    a value over $0.0045 is rounded up +0.01 ??

    With explicit code. It has all of the normal rounding modes, but if you have an abnormal one
    you need to do it yourself. That would be a pretty easy one, a compare, a test and a round
    instruction.

    So,

    sum = sum + item.price;

    compiles into:

    LDD Rip,[Rd,#item.price]
    FADD Rt,Rsum,Rip
    TRNK Rs,Rt,#cents // so we have something to compare
    FSUB Rs,Rt,Rs
    FCMP Rs,Rs,#0.0045 // check state rounding value
    PGE Rs,T
    FADD Rt,Rt,#0.01

    Looks kind of horrible compared to: Set RND.Point = 0.0045 outside
    of loop:

    LDD Rip,[Rd,#item.price]
    FADD Rt,Rsum,Rip

    don't you think ???



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Fri Aug 14 21:49:56 2026
    From Newsgroup: comp.arch

    John Levine <johnl@taugh.com> schrieb:
    According to MitchAlsup <user5857@newsgrouper.org.invalid>:
    The fact that the AS400 had a unified store with everthing memorymapped >>> >does not mean that this is the only way to do it, or even the most
    efficient.

    Sure, but it enables a programming model that a lot of people seem to like, >>> considering the success and longevity of S/38->AS/400->something i something.

    S/38->S400 has had a long life. However it was supposed to take over
    from 360->series Z--which it has not.

    As far as I can tell FS was an exercise in hubris. IBM had just lived through the
    painful conversion from their 70xx and 1400 machines to the 360, and still had a
    lot of customers running old code in emulation on 360/370. It was absurd to imagine that the customers would do that again when the 370 was stiil viable with 31 bit addressing and not close to running out of address bits.

    It seems the 31-bit jump was only made with 370-XA, in 1983; FS was
    canceled in 1975, according to Wikipedia.

    They certainly learned that lesson since z has a mode that runs 24 bit code from the 1960s and 70s.

    Certainly. Possibly, some of the software running does not even
    have source any more. But decompilers could solve some of that...
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Fri Aug 14 09:05:18 2026
    From Newsgroup: comp.arch

    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    Yeah, I think the slowdown is most dramatic in the desktop/laptop
    consumer market, where since Dennard scaling stopped (~2006) I think
    this market has almost stopped growing in terms of RAM/storage/CPU
    capacity. Instead it has slowly joined up with the smartphone band,
    both because smartphones have substantially increased their performance
    and because laptops&desktops have slowly shrunk and reduced their
    power consumption.


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Fri Aug 14 20:55:48 2026
    From Newsgroup: comp.arch

    On 8/14/2026 8:05 AM, Stefan Monnier wrote:
    Currently that shows SSDs up to 30.72TB (at prices between EUR 14219
    and EUR 26009). The first of these was listed in 2023. So we get:

    Yeah, I think the slowdown is most dramatic in the desktop/laptop
    consumer market, where since Dennard scaling stopped (~2006) I think
    this market has almost stopped growing in terms of RAM/storage/CPU
    capacity. Instead it has slowly joined up with the smartphone band,
    both because smartphones have substantially increased their performance
    and because laptops&desktops have slowly shrunk and reduced their
    power consumption.


    I have recently started seeing laptops being sold for not particularly
    cheap effectively using cellphone class SoCs and hardware stats. Doesn't
    make me feel particularly optimistic about the future of computing.

    And, no, not with stuff like fancy "Apple Silicon" chips, more like
    MediaTek SoCs loaded up with Cortex-A55 cores and eMMC flash and similar...



    At this point it seems almost like there needs to be some way to make
    things like computers and similar that is less dependent on the
    centralized control and cost-reduction / planned obsolescence incentives
    of corporations...

    Well, say, ideally where production is more community driven, neither controlled by for-profit enterprises nor state-controlled. Can work more
    for small scale fabrication, but harder to imagine how to scale this to
    things like semiconductor manufacturing (things like chip-manufacture at
    the home-shop scale being basically non-existent; individuals neither
    having the tools nor the resources to make them).

    Lots of people can now make 3D printed plastic parts at least, and some
    can make mechanical and electromechanical parts. Thermionic stuff is at
    least possible in theory (aided if someone has glass-working stills and
    a good vacuum pump).

    But, alas...


    Though, could be less bad at least if there were some legal mandate that companies had to operate in ways that are not detrimental to consumers
    (no planned obsolescence, no vendor lock-in, no renting /
    paid-subscription schemes, ...).

    Granted, yes, at the risk of all of this sounding a bit commie...



    === Stefan

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Sat Aug 15 02:00:10 2026
    From Newsgroup: comp.arch

    It appears that MitchAlsup <user5857@newsgrouper.org.invalid> said:
    How does DFP obey a state rule whereby every monetary calculation resulting in
    a value over $0.0045 is rounded up +0.01 ??

    With explicit code. It has all of the normal rounding modes, but if you have an abnormal one
    you need to do it yourself. That would be a pretty easy one, a compare, a test and a round
    instruction.

    So,

    sum = sum + item.price;

    compiles into:

    LDD Rip,[Rd,#item.price]
    FADD Rt,Rsum,Rip
    TRNK Rs,Rt,#cents // so we have something to compare
    FSUB Rs,Rt,Rs
    FCMP Rs,Rs,#0.0045 // check state rounding value
    PGE Rs,T
    FADD Rt,Rt,#0.01

    Looks kind of horrible compared to: Set RND.Point = 0.0045 outside
    of loop:

    LDD Rip,[Rd,#item.price]
    FADD Rt,Rsum,Rip

    don't you think ???

    Since the second one doesn't do any rounding, no.

    I don't understand what you think the first code is doing. DFP doesn't normalize
    results, so if the inputs are suitably scaled, which we can assume they are, a DFP add will give you the equivalent result to a scaled integer add.
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Fri Aug 14 21:52:05 2026
    From Newsgroup: comp.arch

    On 8/13/2026 10:45 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use. Think
    of large databases used by industry or government. Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying
    information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred
    bytes each. So that is something like 150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has his/her
    own file.

    Disclaimer. I used to work for the Social Security Administration, but
    that was a long time ago, and I am sure things have changed a lot since
    then, but it certainly didn't use to be like that.

    I am not saying you are wrong, but do you have a reference to that, or personal knowledge? ISTM that is a very odd way of doing it. You are spending a lot of storage on the directory information, etc. for 300M
    files, and I don't see the advantage of that versus something like a
    database management system or even one or a small number of simple
    direct access files.

    BTW, just the concept of 300M files on a single system boggles my mind.
    From my, admittedly limited, experience, most systems have a few
    thousand or a few tens of thousand files at most. With 300M files, how
    many I/Os to directories does it take to get to the file?
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From anton@anton@mips.complang.tuwien.ac.at (Anton Ertl) to comp.arch on Sat Aug 15 15:21:55 2026
    From Newsgroup: comp.arch

    Stefan Monnier <monnier@iro.umontreal.ca> writes:
    Yeah, I think the slowdown is most dramatic in the desktop/laptop
    consumer market, where since Dennard scaling stopped (~2006) I think
    this market has almost stopped growing in terms of RAM/storage/CPU
    capacity.

    There is no connection, and also, the growth patterns are different.

    Clock rate (Dennard) scaling actually slowed down somewhat earlier;
    already my step from a 1200MHz K7 in 2000 to a 2000MHz K8 in 2003 was
    a slowdown compared to the advances of the 1990s (from 133MHz (for me)
    in 1995 to 1200MHz in 2000).

    Concerning RAM, the PC (both consumer and company-use) desktop
    mainstream has had between 1 DIMM and 2 DIMMs, with 8 or 16 RAM
    devices each for about 2 decades, so the RAM growth directly reflects
    the growth of the RAM devices, i.e., the advance in semiconductor
    density. For me it was
    RAM CPU clock cores
    2003 1 GB 2000MHz 1
    2008 4 GB 3000MHz 2
    2015 16 GB 4200MHz (Turbo) 4
    2024 64 GB 5100MHz (Turbo) 8

    I just checked the first and the last of these, and they both have 2
    DIMMs with 16 devices each. We might interpret a slowdown into the
    increasing time distances between these steps, but the step size is
    probably too coarse-grained to draw such conclusions. In any case, we
    see that while RAM has grown by a factor of 64, CPU clock rate has
    grown by a factor of 2.5. Cores have grown at the square root of RAM,
    with each core taking many more transistors in recent CPUs than in
    2003.

    Concerning persistent storage, somehow I have not run into the limits
    of the HDD and SSD sizes for a while. This is different for people
    who collect films and games. Anyway, the advances in sizes led to me
    replacing the HDDs with 250GB+500GB SSDs in 2015 (originally, I
    planned to use 250GB plus the existing HDDs, but the HDDs were so loud
    in the new setup that I replaced them with a 500GB SSD). And I
    replaced both with a 1TB SSD in 2024. From that we can see that the
    SSDs have had a significant growth in those years. For HDDs, there
    are good numnbers elsewhere in this discussion, but the slowdown only
    seems to have happened in the 2010s.

    Instead it has slowly joined up with the smartphone band,
    both because smartphones have substantially increased their performance
    and because laptops&desktops have slowly shrunk and reduced their
    power consumption.

    It very much depends on the usage. Gamers tend to buy more
    power-hungry graphics cards and processors with each generation, and consequently, the power supply capacities have gone up, too.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Sat Aug 15 16:28:54 2026
    From Newsgroup: comp.arch

    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:

    It very much depends on the usage. Gamers tend to buy more
    power-hungry graphics cards and processors with each generation, and consequently, the power supply capacities have gone up, too.

    As they say... with huge power comes a huge electricity bill.
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From MitchAlsup@user5857@newsgrouper.org.invalid to comp.arch on Sat Aug 15 17:41:25 2026
    From Newsgroup: comp.arch


    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/13/2026 10:45 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use. Think
    of large databases used by industry or government. Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying
    information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred
    bytes each. So that is something like 150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has his/her
    own file.

    Disclaimer. I used to work for the Social Security Administration, but
    that was a long time ago, and I am sure things have changed a lot since then, but it certainly didn't use to be like that.

    I am not saying you are wrong, but do you have a reference to that, or personal knowledge? ISTM that is a very odd way of doing it. You are spending a lot of storage on the directory information, etc. for 300M
    files, and I don't see the advantage of that versus something like a database management system or even one or a small number of simple
    direct access files.

    Take a very rich person's tax "file"; D J Trump filed tax returns of
    1,4xx pages of information and calculations, while joe schmoe files
    2 pages. I don't see how to make both fit in a single sized entry
    in a single file. In addition there is at least another pages of
    information linking this entry to previous entries, addresses,
    companies worked for, and other perinate history.

    While you may be spending a lot of information in the directory,
    that entry is DIV-100 to DIV-10,000 the size of the entry pointed
    at/to. This level would also be where access restrictions reside.

    BTW, just the concept of 300M files on a single system boggles my mind.
    From my, admittedly limited, experience, most systems have a few
    thousand or a few tens of thousand files at most. With 300M files, how
    many I/Os to directories does it take to get to the file?

    I have 23,000 files each one is a picture taken with my cameras.
    Take someone who is really a camera buff and that could easily
    be 1M (23 years of digital photography). I have thousands of
    computer figure drawings, especially when I start a new file
    with every major change (leaving a history trail).

    But it seems to me that *.gov would want at least 1 file per person
    living and recently dead (last 50 years) actively available at a few
    key strokes of effort. Tying together income, tax, police, civil, and
    other personal information.



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Kerr-Mudd, John@admin@127.0.0.1 to comp.arch on Sat Aug 15 20:32:54 2026
    From Newsgroup: comp.arch

    On Fri, 14 Aug 2026 16:20:49 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Michael S <already5chosen@yahoo.com> writes:
    On Fri, 14 Aug 2026 14:24:11 GMT
    MitchAlsup <user5857@newsgrouper.org.invalid> wrote:
    S/38->S400 has had a long life. However it was supposed to take over
    from 360->series Z--which it has not.


    Supposed by whom?
    Certainly not by IBM officials.

    If you go back far enough, <https://en.wikipedia.org/wiki/IBM_Future_Systems_project> says:

    |The new systems were intended to replace the System/370 in the market
    |some time in the late 1970s.
    ...
    |The single-level store was implemented in the System/38 in 1978 and
    |moved to other systems in the lineup after that

    In particular, the S/38 was succeeded by the much more successful
    AS/400, also with a single-level store.

    I heard (from Heinz Zemanek) and recently also read somewhere that IBM expected to be broken up due to anti-trust action, and that they had
    several architectures in preparation for this, and that AS/400 is an
    outcome of this. However, reading <https://cs.stanford.edu/people/eroberts/cs181/projects/corporate-monopolies/government_ibm.html>,
    the danger seems to have been over by the time AS/400 was introduced
    (the case was dropped in 1982, AS/400 was introduced in 1988), but
    S/38 could have been a result of that. If that is the case, S/38
    definitely was not intended to replace S/370 (and the fact that S/38 addressed a lower-cost market also speaks against such an intention),
    even if Future Systems originally was.

    FFI check afc and any post by Lynn Wheeler.
    --
    Bah, and indeed Humbug.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Michael S@already5chosen@yahoo.com to comp.arch on Sat Aug 15 22:54:16 2026
    From Newsgroup: comp.arch

    On Fri, 14 Aug 2026 21:52:05 -0700
    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:

    On 8/13/2026 10:45 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use.
    Think of large databases used by industry or government. Some
    examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic
    identifying information (perhaps a hundred bytes), it has the
    earnings record for every year that each of them worked, perhaps
    averaging several hundred bytes each. So that is something like
    150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has
    his/her own file.

    Disclaimer. I used to work for the Social Security Administration,
    but that was a long time ago, and I am sure things have changed a lot
    since then, but it certainly didn't use to be like that.

    I am not saying you are wrong, but do you have a reference to that,
    or personal knowledge? ISTM that is a very odd way of doing it. You
    are spending a lot of storage on the directory information, etc. for
    300M files, and I don't see the advantage of that versus something
    like a database management system or even one or a small number of
    simple direct access files.

    BTW, just the concept of 300M files on a single system boggles my
    mind. From my, admittedly limited, experience, most systems have a
    few thousand or a few tens of thousand files at most. With 300M
    files, how many I/Os to directories does it take to get to the file?



    Old small (250GB) SSD on my old home PC contains ~925,000 files.
    I wuld think that nowadays it's atypically small amount.




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Michael S@already5chosen@yahoo.com to comp.arch on Sat Aug 15 22:59:17 2026
    From Newsgroup: comp.arch

    On Sat, 15 Aug 2026 16:28:54 -0000 (UTC)
    Thomas Koenig <tkoenig@netcologne.de> wrote:

    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:

    It very much depends on the usage. Gamers tend to buy more
    power-hungry graphics cards and processors with each generation, and consequently, the power supply capacities have gone up, too.

    As they say... with huge power comes a huge electricity bill.


    According to google, less so in Austria than in Germany.
    Although the difference is not that big.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Michael S@already5chosen@yahoo.com to comp.arch on Sat Aug 15 23:12:05 2026
    From Newsgroup: comp.arch

    On Sat, 15 Aug 2026 20:32:54 +0100
    "Kerr-Mudd, John" <admin@127.0.0.1> wrote:

    On Fri, 14 Aug 2026 16:20:49 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Michael S <already5chosen@yahoo.com> writes:
    On Fri, 14 Aug 2026 14:24:11 GMT
    MitchAlsup <user5857@newsgrouper.org.invalid> wrote:
    S/38->S400 has had a long life. However it was supposed to take
    over from 360->series Z--which it has not.


    Supposed by whom?
    Certainly not by IBM officials.

    If you go back far enough, <https://en.wikipedia.org/wiki/IBM_Future_Systems_project> says:

    |The new systems were intended to replace the System/370 in the
    market |some time in the late 1970s.
    ...
    |The single-level store was implemented in the System/38 in 1978 and
    |moved to other systems in the lineup after that

    In particular, the S/38 was succeeded by the much more successful
    AS/400, also with a single-level store.

    I heard (from Heinz Zemanek) and recently also read somewhere that
    IBM expected to be broken up due to anti-trust action, and that
    they had several architectures in preparation for this, and that
    AS/400 is an outcome of this. However, reading <https://cs.stanford.edu/people/eroberts/cs181/projects/corporate-monopolies/government_ibm.html>,
    the danger seems to have been over by the time AS/400 was introduced
    (the case was dropped in 1982, AS/400 was introduced in 1988), but
    S/38 could have been a result of that. If that is the case, S/38 definitely was not intended to replace S/370 (and the fact that S/38 addressed a lower-cost market also speaks against such an
    intention), even if Future Systems originally was.

    FFI check afc and any post by Lynn Wheeler.


    I have troubles comprehanding many posts of Lynn Wheeler


    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Sat Aug 15 15:29:18 2026
    From Newsgroup: comp.arch

    On 8/15/2026 10:21 AM, Anton Ertl wrote:
    Stefan Monnier <monnier@iro.umontreal.ca> writes:
    Yeah, I think the slowdown is most dramatic in the desktop/laptop
    consumer market, where since Dennard scaling stopped (~2006) I think
    this market has almost stopped growing in terms of RAM/storage/CPU
    capacity.

    There is no connection, and also, the growth patterns are different.

    Clock rate (Dennard) scaling actually slowed down somewhat earlier;
    already my step from a 1200MHz K7 in 2000 to a 2000MHz K8 in 2003 was
    a slowdown compared to the advances of the 1990s (from 133MHz (for me)
    in 1995 to 1200MHz in 2000).

    Concerning RAM, the PC (both consumer and company-use) desktop
    mainstream has had between 1 DIMM and 2 DIMMs, with 8 or 16 RAM
    devices each for about 2 decades, so the RAM growth directly reflects
    the growth of the RAM devices, i.e., the advance in semiconductor
    density. For me it was
    RAM CPU clock cores
    2003 1 GB 2000MHz 1
    2008 4 GB 3000MHz 2
    2015 16 GB 4200MHz (Turbo) 4
    2024 64 GB 5100MHz (Turbo) 8


    For me, IIRC (trying to grind memory a bit):
    1992 640K 4.8MHz 1 (8088)
    1994 8MB 66MHz 1 (486DX2-66)
    1997 32MB 233MHz 1 (Pentium II)
    1999 128MB 500MHz 1 (Celeron)
    2002 512MB 1400MHz 1 (Athlon XP)
    2005 2GB 1800MHz 1 (Athlon 64)
    2008 6GB 2000MHz 2 (Athlon 64 X2)

    2011 8GB? 2300MHz? 2 (Athlon II, soon replaced by Phenom II)
    2013 16GB 2800MHz 4 (Phenom II, Underclocked, *)
    2017 16GB 3800MHz 4/8 (FX-8350, Underclocked, *)
    2022 112GB 3700MHz 8/16 (Zen+) (Current)

    *: CPU ran too hot and was unreliable at stock speeds.
    The 8350 was a replacement for the Phenom II starting to fail.
    Had generally disabled Turbo on these.

    Current CPU turbo's up to 4.3 in theory, but doesn't usually go that
    high. More often it jumps to 3.9 and hangs out there.

    Can note that the 8350 was a little meh, as despite on paper being a lot faster than the Phenom II, in some ways it was a bit of a regression
    (more MHz, but pretty much everything ).


    IIRC, RAM types were:
    DIP
    SIMM
    EDO
    SDRAM
    DDR1
    DDR2

    DDR3
    DDR3
    DDR3
    DDR4 (Current)

    Well, the 8088 had a MOBO that basically had a big square of DIP chips
    for the RAM. Also an HDD with two ribbon cables (one wider, one narrower).


    The Pentium II machine was notable as that is suddenly make Quake a lot faster, and then also got Quake II around that time.

    The 486DX2-66 suffered the HDD crash, losing all my stuff from
    elementary school.
    The Pentium II was OEM, originally came with Win9x.
    The Celeron, Win98. Mostly ended up going to NT4 due to suckage.
    With the Athlon XP: Went with Win200.
    For the Athlon 64 and 64 X2, went with XP X64.

    By the Athlon II / Phenom II, had moved to Windows-7. This has continued
    on until the present via a "ship of Theseus" route, with at one point
    the Windows 7 auto-upgrading to Windows 10.

    The Athlon II was basically short-lived, CPU got replaced by a Phenom
    II, but otherwise was basically the same PC otherwise (both AM3). Was
    also able to carry the RAM forward.

    Going to the Zen+ required new RAM.


    Ironically, saw a video from "Linus Tech Tips" (a guy around the same
    age as I am), where he was going on about "Every version of Windows",
    but basically skipped over NT4 and Win2K, which were like, "the ones I actually used" (because, 95 and 98 had a problem: If you were writing a program, and it crashed, it would often take out the rest of the OS with
    it and require a reboot).

    Well, not helped by me at some point realizing that the low 1MB of the
    Win9x memory map had a direct view of MS-DOS land...

    And, that it was possible to perform a FAR jump to get the program into
    Ring 0 and then basically be able to get at the GDT and LDT and look at
    the memory in the Win16 space.

    Looking at other 32-bit processes would have likely required a
    page-table reload, I don't think I was ever quite that adventurous.

    None of this worked on NT4 or 2K, but this wasn't really a loss...


    Earlier on, I would typically set up the PCs to be able to dual boot
    into Linux, but this kinda dropped off.


    I just checked the first and the last of these, and they both have 2
    DIMMs with 16 devices each. We might interpret a slowdown into the increasing time distances between these steps, but the step size is
    probably too coarse-grained to draw such conclusions. In any case, we
    see that while RAM has grown by a factor of 64, CPU clock rate has
    grown by a factor of 2.5. Cores have grown at the square root of RAM,
    with each core taking many more transistors in recent CPUs than in
    2003.


    Most of the recent MOBOs I had used had used 4 DIMMs.


    Concerning persistent storage, somehow I have not run into the limits
    of the HDD and SSD sizes for a while. This is different for people
    who collect films and games. Anyway, the advances in sizes led to me replacing the HDDs with 250GB+500GB SSDs in 2015 (originally, I
    planned to use 250GB plus the existing HDDs, but the HDDs were so loud
    in the new setup that I replaced them with a 500GB SSD). And I
    replaced both with a 1TB SSD in 2024. From that we can see that the
    SSDs have had a significant growth in those years. For HDDs, there
    are good numnbers elsewhere in this discussion, but the slowdown only
    seems to have happened in the 2010s.


    I am not that tight on storage either... But, I also now have like 15TB
    of HDD space.

    Though, "C:\" is still pretty cramped, as Win10 seems to want to eat all
    the space on this drive ...

    Still running Win10 and currently still have no intention of moving to
    Win11, but this situation will probably not last indefinitely.


    Some of my drives also have counts for C source files solidly in the
    millions though...


    I just recently gained 2TB mostly by replacing a few older HDDs with
    "slightly newer" dives (second-hand server drives).

    Did observe though that there was a noticeable weight difference:
    1TB drive, DOM=2011: Heavy (116kh)
    1TB drive, DOM=2014: Lighter (97kh)
    2TB drive, DOM=2018: Lightest (~ 30kh and 35kh)
    kh=kilohours (power-on-time)

    This now leaves the 4TB WD Red as the oldest drive, at 67kh.
    And, then there is my 6TB WD Red at 40kh.

    Had relocated a bunch of stuff from the 1TB drives to the 6TB drive,
    before replacing the 1TB drives (can't install more, out of SATA
    connectors).


    So, seems they had to put more stuff in the drive for 1TB in 2011 vs 2TB
    in 2018.


    Instead it has slowly joined up with the smartphone band,
    both because smartphones have substantially increased their performance
    and because laptops&desktops have slowly shrunk and reduced their
    power consumption.

    It very much depends on the usage. Gamers tend to buy more
    power-hungry graphics cards and processors with each generation, and consequently, the power supply capacities have gone up, too.


    In my case, I have a moderate card, mostly that I got because my old
    card was failing.

    Current card is an RTX 3060 12GB.
    Replaced a failing GTX 980.

    Preceding cards:
    GTX 460
    Radeon HD 4850

    The Athlon XP had a Gefore2.
    The Athlon 64 had a Radeon 9100.
    The 486 had a Trident card.
    The 8088 had a CGA card.

    The Celeron had an S3 Trio64 (really sucked for 3D acceleration,
    basically unusable).

    These earlier cards couldn't really be moved forwards, as the bus
    interfaces kept changing:
    ISA -> PCI -> AGP -> PCIe.
    But, started reusing cards more once PCIe-x16 became standard.


    In my case, currently running a 750W PSU.
    Had replaced the former PSU (a Rosewill PSU) with a MSI PSU mostly
    because the Rosewill PSU just suddenly died not that long ago.


    - anton

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sat Aug 15 13:34:34 2026
    From Newsgroup: comp.arch

    On 8/15/2026 1:12 PM, Michael S wrote:
    On Sat, 15 Aug 2026 20:32:54 +0100
    "Kerr-Mudd, John" <admin@127.0.0.1> wrote:

    On Fri, 14 Aug 2026 16:20:49 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Michael S <already5chosen@yahoo.com> writes:
    On Fri, 14 Aug 2026 14:24:11 GMT
    MitchAlsup <user5857@newsgrouper.org.invalid> wrote:
    S/38->S400 has had a long life. However it was supposed to take
    over from 360->series Z--which it has not.


    Supposed by whom?
    Certainly not by IBM officials.

    If you go back far enough,
    <https://en.wikipedia.org/wiki/IBM_Future_Systems_project> says:

    |The new systems were intended to replace the System/370 in the
    market |some time in the late 1970s.
    ...
    |The single-level store was implemented in the System/38 in 1978 and
    |moved to other systems in the lineup after that

    In particular, the S/38 was succeeded by the much more successful
    AS/400, also with a single-level store.

    I heard (from Heinz Zemanek) and recently also read somewhere that
    IBM expected to be broken up due to anti-trust action, and that
    they had several architectures in preparation for this, and that
    AS/400 is an outcome of this. However, reading
    <https://cs.stanford.edu/people/eroberts/cs181/projects/corporate-monopolies/government_ibm.html>,
    the danger seems to have been over by the time AS/400 was introduced
    (the case was dropped in 1982, AS/400 was introduced in 1988), but
    S/38 could have been a result of that. If that is the case, S/38
    definitely was not intended to replace S/370 (and the fact that S/38
    addressed a lower-cost market also speaks against such an
    intention), even if Future Systems originally was.

    FFI check afc and any post by Lynn Wheeler.


    I have troubles comprehanding many posts of Lynn Wheeler



    Iirc, her has a nice database.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From BGB@cr88192@gmail.com to comp.arch on Sat Aug 15 16:33:49 2026
    From Newsgroup: comp.arch

    On 8/15/2026 2:54 PM, Michael S wrote:
    On Fri, 14 Aug 2026 21:52:05 -0700
    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:

    On 8/13/2026 10:45 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use.
    Think of large databases used by industry or government. Some
    examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic
    identifying information (perhaps a hundred bytes), it has the
    earnings record for every year that each of them worked, perhaps
    averaging several hundred bytes each. So that is something like
    150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has
    his/her own file.

    Disclaimer. I used to work for the Social Security Administration,
    but that was a long time ago, and I am sure things have changed a lot
    since then, but it certainly didn't use to be like that.

    I am not saying you are wrong, but do you have a reference to that,
    or personal knowledge? ISTM that is a very odd way of doing it. You
    are spending a lot of storage on the directory information, etc. for
    300M files, and I don't see the advantage of that versus something
    like a database management system or even one or a small number of
    simple direct access files.

    BTW, just the concept of 300M files on a single system boggles my
    mind. From my, admittedly limited, experience, most systems have a
    few thousand or a few tens of thousand files at most. With 300M
    files, how many I/Os to directories does it take to get to the file?



    Old small (250GB) SSD on my old home PC contains ~925,000 files.
    I wuld think that nowadays it's atypically small amount.


    My drives typically contain several million files each.

    So, 300M+ for a big government system doesn't seem unreasonably, unless
    maybe all stored on a single HDD with no backups.


    Then again, I think I remember a news thing at some point, like the
    whole London Stock Exchange went down at one point, because it was
    running off a single WinXP box, which had crashed...

    Had found the idea of some big/high profile thing all running off a
    lowly WinXP box being kinda funny.

    ...



    In my years of occasionally moving stuff around and swapping out drives,
    have occasionally lost/misplaced some things.


    One of the things seemingly lost/misplaced being the originals of some
    art files for a Sailor-Moon / Mega-Man crossover web-comic I had briefly worked on (which then started having some unreleased panels for a
    cross-over with Rainbow-Brite).

    I stopped working on it mostly because the "vibe" didn't feel right for
    me (personality-wise, Usagi is different enough from myself that I
    seemingly can't write her in a way that doesn't rapidly drift out-of-character; and my attempts were mostly a fail to recapture the
    original vibe).

    I did eventually use some of the ideas from the cross-over as the basis
    for my more recent Rainbow-Brite fanfic, albeit without any of the
    Mega-Man style characters showing up. Original premise was that the
    original Rainbow Brite was anchored in the late 20th century, but that
    in the intervening centuries Earth had moved into the MegaMan ZX
    setting, where the "present" of the Sailor-Moon crossover took place.

    Well, in the SM/MM Webcomic, this version wasn't the original Usagi (who
    had proceeded to go off and live out the original Sailor-Moon timeline),
    but rather a Gantz style copy (who then combines with a Luna-themed
    biometal, gaining a MegaMan ZX style form). Well, in the story, it was borrowing from other parts of the MegaMan setting, basically asserting
    that the future characters could bounce off of Ra-Moon as an improvised time-machine. Where, say, Ra-Moon was an ancient alien supercomputer
    with causality warping powers and ability to synthesize stuff out of
    nowhere, in the MegaMan classic Series, ... So, in this setting, had put
    it as a plot-point that the MegaMan style teleportation and time-travel mechanics were effectively just bouncing off of this alien-built
    computer (rather than Light and Wily having actually figured out how to
    fit this stuff into things like handheld devices).

    But, implicitly, they would have still had access to the 1990s and
    1980s, but would have been in a passive/dormant state. The premise is
    that the later X/Z series tech didn't depend on Ra-Moon anymore, but
    would have been reverse engineered (also correlated as to why this
    particular tech appears very compact/minimal in the Classic series but
    more bulky/industrial in the X and Z series, with the latter having
    references to a "network" of interconnected "transerver" devices). But,
    also because they can't really safely build all of this stuff on top of
    an alien computer that is both sentient and hostile.

    Well, in this story, Ra-Moon wasn't actually destroyed, but rather that
    the relevant game existed in an alternate timeline. And, so in this
    setting, Ra-Moon would have effectively become "transerver 0" (and is a
    bounce required for both general purpose anywhere-to-anywhere, and
    past/future bounces). Also made the premise that it doesn't actually
    move people/things, rather makes copies and typically erases the
    original. Also despite having time-travel abilities, it still can't be
    used to modify the past. Attempts to do so merely resulting in things
    like causal loops and the overall timeline remaining as-is; though with
    some possibility to bounce between alternate timelines (with a
    multiverse allowing for the possibility of something resembling mutable timelines).

    But, yeah, still mostly all just sci-fi wonk in any case, trying to sort everything out...


    But, yeah, still annoying that I lost the artwork files.

    All that remains is mostly what panels I had posted to Twitter/X.

    ...



    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stephen Fuld@sfuld@alumni.cmu.edu.invalid to comp.arch on Sat Aug 15 17:39:05 2026
    From Newsgroup: comp.arch

    On 8/15/2026 10:41 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/13/2026 10:45 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use. Think >>>> of large databases used by industry or government. Some examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying
    information (perhaps a hundred bytes), it has the earnings record for
    every year that each of them worked, perhaps averaging several hundred >>>> bytes each. So that is something like 150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has his/her
    own file.

    Disclaimer. I used to work for the Social Security Administration, but
    that was a long time ago, and I am sure things have changed a lot since
    then, but it certainly didn't use to be like that.

    I am not saying you are wrong, but do you have a reference to that, or
    personal knowledge? ISTM that is a very odd way of doing it. You are
    spending a lot of storage on the directory information, etc. for 300M
    files, and I don't see the advantage of that versus something like a
    database management system or even one or a small number of simple
    direct access files.

    Take a very rich person's tax "file"; D J Trump filed tax returns of
    1,4xx pages of information and calculations, while joe schmoe files
    2 pages. I don't see how to make both fit in a single sized entry
    in a single file. In addition there is at least another pages of
    information linking this entry to previous entries, addresses,
    companies worked for, and other perinate history.

    You are confusing the Social Security Administration (SSA), with the
    Internal Revenue Service (IRS). I have no knowledge of how the IRS
    stores its data.

    For the SSA, most of DJT's tax return is irrelevant and not kept. SSA
    doesn't care about and doesn't keep records on, his interest income,
    capital gains, partnerships, deductions, etc. It only cares about his
    salary (as President, and if he gets one from the Trump Organization).
    For each year in a persons working history, the only thing that is kept
    is the total covered salary and the employer identification number of
    who paid it. This takes a few tens of bytes for each year. So the
    total size is in the hundreds or thousands of bytes per person. At that
    size a record in a database makes much more sense.

    snip
    But it seems to me that *.gov would want at least 1 file per person
    living and recently dead (last 50 years) actively available at a few
    key strokes of effort. Tying together income, tax, police, civil, and
    other personal information.

    I think you are assuming a level of competence and conspiracy that is
    beyond what our government can do, and could keep secret. Not to
    mention that sharing the information in the SSA files would be illegal,
    a violation of the Privacy Act. It took a literal act of Congress (and
    much gnashing of teeth) to allow SSA to share its information with the
    Office of Child Support Enforcement to be used to try track down people
    who skipped out on child support payments.
    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From John Levine@johnl@taugh.com to comp.arch on Sun Aug 16 01:45:46 2026
    From Newsgroup: comp.arch

    According to MitchAlsup <user5857@newsgrouper.org.invalid>:
    I am not saying you are wrong, but do you have a reference to that, or
    personal knowledge? ISTM that is a very odd way of doing it. You are
    spending a lot of storage on the directory information, etc. for 300M
    files, and I don't see the advantage of that versus something like a
    database management system or even one or a small number of simple
    direct access files.

    Take a very rich person's tax "file"; D J Trump filed tax returns of
    1,4xx pages of information and calculations, while joe schmoe files
    2 pages. I don't see how to make both fit in a single sized entry
    in a single file. In addition there is at least another pages of
    information linking this entry to previous entries, addresses,
    companies worked for, and other perinate history.

    That's not how databases work, at least not how sensible ones do. The
    point of a database is that the same data can logically be in several
    places even though it's physically on one place. You put all the data
    of a particular type in a table, then link related tables with shared
    keys, e.g., part numbers, order numbers, or SSNs. You use a query language, most often SQL, to create virtual files on the fly from the underlying
    data. Joe might have two records in some table and Don might have a
    thousand, but databases can deal with that.

    Often a table will be too big to fit reasonably in a file but that's
    handled at a lower level, typically by breaking it up by natural boundaries like dates, or "sharding" it and breaking it up by the hash of somme key
    or combination of keys that can be computed efficiently.

    Database software does lots of sophisticated things to make access faster
    so it's plausible that if there's a frequent query or group of queries it
    might cache the combined results, but again, that's a level down.

    R's,
    John
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Stefan Monnier@monnier@iro.umontreal.ca to comp.arch on Sun Aug 16 00:25:01 2026
    From Newsgroup: comp.arch

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic identifying [...]
    Take a very rich person's tax "file"; D J Trump filed tax returns of
    1,4xx pages of information and calculations, while joe schmoe files
    2 pages. I don't see how to make both fit in a single sized entry
    in a single file. In addition there is at least another pages of
    information linking this entry to previous entries, addresses,
    companies worked for, and other perinate history.

    IIUC the Social Security Administration and the IRS are separate and
    keep separate databases.

    But it seems to me that *.gov would want at least 1 file per person
    living and recently dead (last 50 years) actively available at a few
    key strokes of effort. Tying together income, tax, police, civil, and
    other personal information.

    IIRC the US (used to?) have sane requirements to keep such
    databases separate.


    === Stefan
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Thomas Koenig@tkoenig@netcologne.de to comp.arch on Sun Aug 16 12:17:08 2026
    From Newsgroup: comp.arch

    Stefan Monnier <monnier@iro.umontreal.ca> schrieb:
    Concerning RAM, the PC (both consumer and company-use) desktop
    mainstream has had between 1 DIMM and 2 DIMMs, with 8 or 16 RAM
    devices each for about 2 decades, so the RAM growth directly reflects
    the growth of the RAM devices, i.e., the advance in semiconductor
    density. For me it was
    RAM CPU clock cores
    2003 1 GB 2000MHz 1
    2008 4 GB 3000MHz 2
    2015 16 GB 4200MHz (Turbo) 4
    2024 64 GB 5100MHz (Turbo) 8

    I was thinking of more "consumer" devices, where AFAIK laptops would
    have had typically ~256MB in 2003 and ~16GB in 2026, but yes 64x sounds
    about right. That's 6bits in 23 years, so about 4years per bit.

    [ It is striking tho that it was common for laptops to support a max of
    8GB of RAM in 2007/2008, and we still have laptops coming out in 2026
    with 8GB of RAM (and not even upgradable). ]

    ... but certainly unusable under Windows 11. Although Microsoft
    wants to get rid of some bloat to make it usable with 8GB again,
    I'm not holding my breath, and am hoping to at least get 16 GB
    in all of my business laptops.

    (So maybe you can have 8GB on "stock" Windows 11. Add Outlook
    Teams, Word, Edge, the usual security software, ...)
    --
    This USENET posting was made without artificial intelligence,
    artificial impertinence, artificial arrogance, artificial stupidity,
    artificial flavorings or artificial colorants.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Sun Aug 16 14:31:50 2026
    From Newsgroup: comp.arch

    Michael S <already5chosen@yahoo.com> writes:
    On Fri, 14 Aug 2026 21:52:05 -0700
    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:

    On 8/13/2026 10:45 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use.
    Think of large databases used by industry or government. Some
    examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic
    identifying information (perhaps a hundred bytes), it has the
    earnings record for every year that each of them worked, perhaps
    averaging several hundred bytes each. So that is something like
    150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has
    his/her own file.

    Disclaimer. I used to work for the Social Security Administration,
    but that was a long time ago, and I am sure things have changed a lot
    since then, but it certainly didn't use to be like that.

    I am not saying you are wrong, but do you have a reference to that,
    or personal knowledge? ISTM that is a very odd way of doing it. You
    are spending a lot of storage on the directory information, etc. for
    300M files, and I don't see the advantage of that versus something
    like a database management system or even one or a small number of
    simple direct access files.

    BTW, just the concept of 300M files on a single system boggles my
    mind. From my, admittedly limited, experience, most systems have a
    few thousand or a few tens of thousand files at most. With 300M
    files, how many I/Os to directories does it take to get to the file?



    Old small (250GB) SSD on my old home PC contains ~925,000 files.
    I wuld think that nowadays it's atypically small amount.


    $ locate \* | wc -l
    4,814,444

    few thousand or a few tens of thousand files at most. With 300M
    files, how many I/Os to directories does it take to get to the file?

    On unix/unix-like systems, the filesystem is a tree structure,
    so absent any OS directory caching, the number of directory I/O's is
    a function of the depth. Not many, in other words.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From scott@scott@slp53.sl.home (Scott Lurndal) to comp.arch on Sun Aug 16 14:32:52 2026
    From Newsgroup: comp.arch

    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    On 8/15/2026 1:12 PM, Michael S wrote:


    FFI check afc and any post by Lynn Wheeler.


    I have troubles comprehanding many posts of Lynn Wheeler

    Iirc, her has a nice database.

    Lynn, in this case, is male.

    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Sun Aug 16 18:46:57 2026
    From Newsgroup: comp.arch

    Thomas Koenig wrote:
    Stefan Monnier <monnier@iro.umontreal.ca> schrieb:
    Concerning RAM, the PC (both consumer and company-use) desktop
    mainstream has had between 1 DIMM and 2 DIMMs, with 8 or 16 RAM
    devices each for about 2 decades, so the RAM growth directly reflects
    the growth of the RAM devices, i.e., the advance in semiconductor
    density. For me it was
    RAM CPU clock cores
    2003 1 GB 2000MHz 1
    2008 4 GB 3000MHz 2
    2015 16 GB 4200MHz (Turbo) 4
    2024 64 GB 5100MHz (Turbo) 8

    I was thinking of more "consumer" devices, where AFAIK laptops would
    have had typically ~256MB in 2003 and ~16GB in 2026, but yes 64x sounds
    about right. That's 6bits in 23 years, so about 4years per bit.

    [ It is striking tho that it was common for laptops to support a max of
    8GB of RAM in 2007/2008, and we still have laptops coming out in 2026
    with 8GB of RAM (and not even upgradable). ]

    ... but certainly unusable under Windows 11. Although Microsoft
    wants to get rid of some bloat to make it usable with 8GB again,
    I'm not holding my breath, and am hoping to at least get 16 GB
    in all of my business laptops.

    (So maybe you can have 8GB on "stock" Windows 11. Add Outlook
    Teams, Word, Edge, the usual security software, ...)


    I started having 32 GB RAM and at least 1TB disk _many_ years ago, I'm
    still stuck in more or less the same position:

    My current main machine, an Acer TravelMate P614-53-TCO, which is 2-3
    years old, has 32 GB RAM and 954 GB SDD.

    The main difference from my previous 8 year old machine is the CPU (13th
    Gen Intel(R) Core(TM) i7-1365U (1.80 GHz)) which has 12 cores, 4 of
    those in the form of 2+2 "full fat" performance cores and 8 "efficiency" cores.

    The new CPU is also capable of 5+ GHz when running single-threaded, even though the nominal frequency (as shown above) is just 1.8 GHz.

    My first 32 GB laptop must have been 15-20 years ago...

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Terje Mathisen@terje.mathisen@tmsw.no to comp.arch on Sun Aug 16 18:52:31 2026
    From Newsgroup: comp.arch

    Scott Lurndal wrote:
    Michael S <already5chosen@yahoo.com> writes:
    On Fri, 14 Aug 2026 21:52:05 -0700
    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:

    On 8/13/2026 10:45 AM, MitchAlsup wrote:

    Stephen Fuld <sfuld@alumni.cmu.edu.invalid> posted:

    On 8/12/2026 8:59 PM, BGB wrote:
    On 8/12/2026 9:48 AM, Stefan Monnier wrote:
    -------------------------
    Your analysis is flawed as it is based on personal computer use.
    Think of large databases used by industry or government. Some
    examples:

    The US Social Security Administration has a file with a record for
    basically every American, say 300 Million. Besides basic
    identifying information (perhaps a hundred bytes), it has the
    earnings record for every year that each of them worked, perhaps
    averaging several hundred bytes each. So that is something like
    150 GB for that one file.

    it is 300M files not 1, and one indexing directory.
    And, yes, the total size is TB+ level, but each individual has
    his/her own file.

    Disclaimer. I used to work for the Social Security Administration,
    but that was a long time ago, and I am sure things have changed a lot
    since then, but it certainly didn't use to be like that.

    I am not saying you are wrong, but do you have a reference to that,
    or personal knowledge? ISTM that is a very odd way of doing it. You
    are spending a lot of storage on the directory information, etc. for
    300M files, and I don't see the advantage of that versus something
    like a database management system or even one or a small number of
    simple direct access files.

    BTW, just the concept of 300M files on a single system boggles my
    mind. From my, admittedly limited, experience, most systems have a
    few thousand or a few tens of thousand files at most. With 300M
    files, how many I/Os to directories does it take to get to the file?



    Old small (250GB) SSD on my old home PC contains ~925,000 files.
    I wuld think that nowadays it's atypically small amount.


    $ locate \* | wc -l
    4,814,444

    few thousand or a few tens of thousand files at most. With 300M
    files, how many I/Os to directories does it take to get to the file?

    On unix/unix-like systems, the filesystem is a tree structure,
    so absent any OS directory caching, the number of directory I/O's is
    a function of the depth. Not many, in other words.


    My Win11 machine has 948 GB across 133K directories with 947K individual files, so almost exactly 1 MB average file size.

    Terje
    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.arch on Sun Aug 16 13:09:48 2026
    From Newsgroup: comp.arch

    On 8/16/2026 7:32 AM, Scott Lurndal wrote:
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> writes:
    On 8/15/2026 1:12 PM, Michael S wrote:


    FFI check afc and any post by Lynn Wheeler.


    I have troubles comprehanding many posts of Lynn Wheeler

    Iirc, her has a nice database.

    Lynn, in this case, is male.


    Typo on my part. Sorry.
    --- Synchronet 3.22a-Linux NewsLink 1.2