• What is an N-bit machine?

    From John Dallman@21:1/5 to All on Thu Nov 28 15:31:00 2024
    In early computer designs, arithmetic registers were much longer than addresses, the classic examples being machines with 36-bit words and 15-
    to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it appeared, but it was allowed for in the architecture.

    Nowadays, the bit-ness of a machine seems to be the *smaller* of the
    arithmetic registers and the address space. This became true in the early 1970s, as far as I can see, and the terminology became confused around
    then. A few examples from that period:

    Classic "8-bit" microprocessors, such as the 8080 or 6800 have 8-bit
    arithmetic and 16-bit addressing.

    The PDP-11 has 16-bit arithmetic and 16-bit addressing, plus
    bank-switching.

    The original 8086 has 16-bit arithmetic and a strange 20-bit addressing
    scheme.

    Modern architectures have arithmetic and address registers that are the
    same size.

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to John Dallman on Thu Nov 28 18:55:48 2024
    On Thu, 28 Nov 2024 15:31 +0000 (GMT Standard Time)
    jgd@cix.co.uk (John Dallman) wrote:

    In early computer designs, arithmetic registers were much longer than addresses, the classic examples being machines with 36-bit words and
    15- to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had
    32-bit arithmetic registers and 32-bit address registers. You
    couldn't put 32-bits worth of physical memory in a machine for over a
    decade after it appeared, but it was allowed for in the architecture.


    S/360 normally referred as 24-bit address architecture.
    S/370 normally referred as 31-bit address architecture.
    I don't know technical reasons for it, but would think that they exist.


    Nowadays, the bit-ness of a machine seems to be the *smaller* of the arithmetic registers and the address space. This became true in the
    early 1970s, as far as I can see, and the terminology became confused
    around then. A few examples from that period:

    Classic "8-bit" microprocessors, such as the 8080 or 6800 have 8-bit arithmetic and 16-bit addressing.

    The PDP-11 has 16-bit arithmetic and 16-bit addressing, plus
    bank-switching.

    The original 8086 has 16-bit arithmetic and a strange 20-bit
    addressing scheme.

    Modern architectures have arithmetic and address registers that are
    the same size.

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to John Dallman on Thu Nov 28 16:33:39 2024
    jgd@cix.co.uk (John Dallman) writes:
    In early computer designs, arithmetic registers were much longer than >addresses, the classic examples being machines with 36-bit words and 15-
    to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit >arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it >appeared, but it was allowed for in the architecture.

    The B5000 allowed 48-bit from the start in 1961, as you say, it would
    be decades before that much could actually be installed.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to John Dallman on Thu Nov 28 17:56:23 2024
    On 2024-11-28, John Dallman <jgd@cix.co.uk> wrote:
    In early computer designs, arithmetic registers were much longer than addresses, the classic examples being machines with 36-bit words and 15-
    to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it appeared, but it was allowed for in the architecture.

    The original /360 had a 24-bit address space. The plan had been
    to make it 32-bit clean, but some people didn't get the memo, reasulting
    in a lot of hassle later on.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to Thomas Koenig on Thu Nov 28 19:02:26 2024
    On Thu, 28 Nov 2024 17:56:23 +0000, Thomas Koenig wrote:

    On 2024-11-28, John Dallman <jgd@cix.co.uk> wrote:
    In early computer designs, arithmetic registers were much longer than
    addresses, the classic examples being machines with 36-bit words and 15-
    to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit
    arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it
    appeared, but it was allowed for in the architecture.

    The original /360 had a 24-bit address space. The plan had been
    to make it 32-bit clean, but some people didn't get the memo, reasulting
    in a lot of hassle later on.

    BAL -> BAS , ...

    And assembly people using the upper 8-bits of base registers for
    "interesting" things.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to John Dallman on Thu Nov 28 19:01:05 2024
    On Thu, 1 Jan 1970 0:00:00 +0000, John Dallman wrote:

    In early computer designs, arithmetic registers were much longer than addresses, the classic examples being machines with 36-bit words and 15-
    to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it appeared, but it was allowed for in the architecture.

    Until 360/67, the address space was limited to 24 bits. With 360/67
    it jumped to 32-bits, only to retreat to 31-bits for the life of 370.

    Nowadays, the bit-ness of a machine seems to be the *smaller* of the arithmetic registers and the address space.

    The bitness of a machine has lost all significance when one includes
    512-bit SIMD registers.

    And we may be approaching a day where we end up with more address space
    that bits in an address register !!?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Brett@21:1/5 to mitchalsup@aol.com on Thu Nov 28 19:39:59 2024
    MitchAlsup1 <mitchalsup@aol.com> wrote:
    On Thu, 28 Nov 2024 17:56:23 +0000, Thomas Koenig wrote:

    On 2024-11-28, John Dallman <jgd@cix.co.uk> wrote:
    In early computer designs, arithmetic registers were much longer than
    addresses, the classic examples being machines with 36-bit words and 15- >>> to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit
    arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it >>> appeared, but it was allowed for in the architecture.

    The original /360 had a 24-bit address space. The plan had been
    to make it 32-bit clean, but some people didn't get the memo, reasulting
    in a lot of hassle later on.

    BAL -> BAS , ...

    And assembly people using the upper 8-bits of base registers for "interesting" things.

    Memory was so precious that using the top byte for other things was the
    right choice.
    Apple made the exact same choice with the MC68000 despite the track record,
    or more correctly copying the track record in full knowledge of what
    changes would come.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lynn Wheeler@21:1/5 to John Dallman on Thu Nov 28 11:45:38 2024
    jgd@cix.co.uk (John Dallman) writes:
    In early computer designs, arithmetic registers were much longer than addresses, the classic examples being machines with 36-bit words and 15-
    to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it appeared, but it was allowed for in the architecture.

    360 had 32bit registers but addressing only used 24bits (16mbyte)
    ... except for 360/67 virtual memory mode which had 32bit addressing
    (when got around to adding virtual memory to all 370s, it was only 24bit addressing ... it wasn't until the 80s with 370/xa that 31bit addressing
    was introduced). 360/67 also allowed for all (multiprocessor) CPUs to
    address all channels (360/65 multiprocessor and later 370 multiprocessor simulated multiprocessor I/O with multi-channel controllers connected to different dedicated processor channels at the same address).

    360/67 https://bitsavers.org/pdf/ibm/360/functional_characteristics/A27-2719-0_360-67_funcChar.pdf
    https://bitsavers.org/pdf/ibm/360/functional_characteristics/GA27-2719-2_360-67_funcChar.pdf

    Before 370/xa, MVS was getting so bloated that they did hack to 3033 for 64mbyte real memory ... still 24bit (real & virtual) instruction
    addressing ... but they scavanged two unused bits in the virtual memory
    16bit PTE, used to prefix the 12bit page numbers (4096 4096byte pages
    ... 16mbyte) for 14bit page numbers (16384 4096byte pages) aka
    translating 24bit (virtual) addresses into 26bit (real) addresses
    (64mbytes) ... pending 370/xa and 31bit

    --
    virtualization experience starting Jan1968, online at home since Mar1970

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Dallman@21:1/5 to D'Oliveiro on Thu Nov 28 22:08:00 2024
    In article <viao3r$na9e$4@dont-email.me>, ldo@nz.invalid (Lawrence
    D'Oliveiro) wrote:

    Apple went through the same sort of thing. Yet it managed the
    transition much more cleanly.

    Apple simply demanded all software become 32-bit clean. The fact that
    they didn't forsee the problem and warn software writers not to use the
    high 8 bits rather implies they weren't paying attention.

    This in spite of having an installed base that was orders of
    magnitude larger than the IBM System/360 family.

    Apples and oranges. IBM had fewer but much larger customer organisations,
    and could not afford to upset them much. Most IBM mainframe shops write
    some software themselves; that wasn't the case for Apple users in the
    1980s.

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Thomas Koenig on Thu Nov 28 21:42:19 2024
    On Thu, 28 Nov 2024 17:56:23 -0000 (UTC), Thomas Koenig wrote:

    The original /360 had a 24-bit address space. The plan had been to make
    it 32-bit clean, but some people didn't get the memo, reasulting in a
    lot of hassle later on.

    Apple went through the same sort of thing. Yet it managed the transition
    much more cleanly.

    This in spite of having an installed base that was orders of magnitude
    larger than the IBM System/360 family.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lynn Wheeler@21:1/5 to John Dallman on Thu Nov 28 12:44:23 2024
    jgd@cix.co.uk (John Dallman) writes:
    Apples and oranges. IBM had fewer but much larger customer organisations,
    and could not afford to upset them much. Most IBM mainframe shops write
    some software themselves; that wasn't the case for Apple users in the
    1980s.

    Amdahl had won the battle to make ACS, 360 compatible, then when ACS/360
    was canceled, he left IBM and formed his own 370 clone mainframe
    company.
    https://people.computing.clemson.edu/~mark/acs_end.html

    Circa 1971, Amdahl gave talk in large MIT auditorium and somebody in the audience asked him what justifications he used to attract investors and
    he replied that even if IBM were to completely walk away from 370, there
    was hundreds of billions in customer written 370 code that could keep
    him in business through the end of the century.

    At the time, IBM had the "Future System" project that was planning on
    doing just that ... and I assumed that was what he was referring to
    ... however in later years he claimed that he never had any knowledge
    about "FS" (and had left IBM before it started).

    trivia: during FS, internal politics was killing off 370 projects and
    claims are the lack of new 370 products in the period is what gave the
    clone 370 makers (including Amdahl) their market foothold. some more
    info
    http://www.jfsowa.com/computer/memo125.htm
    when FS finally imploded, there was mad rush to get stuff back into the
    370 product pipelines, including kicking off the quick&dirty 3033&3081
    efforts.

    --
    virtualization experience starting Jan1968, online at home since Mar1970

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Dallman@21:1/5 to All on Thu Nov 28 22:58:00 2024
    In article <87frnbyo54.fsf@localhost>, lynn@garlic.com (Lynn Wheeler)
    wrote:

    At the time, IBM had the "Future System" project that was planning
    on doing just that ... and I assumed that was what he was referring
    to ... however in later years he claimed that he never had any
    knowledge about "FS" (and had left IBM before it started).

    He did, however, have an extensive knowledge of IBM senior management. At
    the time it would have been plausible that they'd consider abandoning
    360/370 in favour of something they thought better.

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to John Dallman on Fri Nov 29 02:17:13 2024
    On Thu, 28 Nov 2024 22:08 +0000 (GMT Standard Time), John Dallman wrote:

    In article <viao3r$na9e$4@dont-email.me>, ldo@nz.invalid (Lawrence D'Oliveiro) wrote:

    Apple went through the same sort of thing. Yet it managed the
    transition much more cleanly.

    Apple simply demanded all software become 32-bit clean. The fact that
    they didn't forsee the problem and warn software writers not to use the
    high 8 bits rather implies they weren't paying attention.

    Oh, they were paying attention, all right. In the original 1984 Macintosh software, the top 8 bits in a “handle” (pointer to a pointer to a relocatable block) were used to store handle state (e.g. whether the block
    was locked in a particular memory location). But there were no API calls
    to save/restore this state. That was fixed in the Mac Plus in 1986. So all
    had to happen was for app developers to use the new calls, instead of
    peeking at bits directly.

    This in spite of having an installed base that was orders of
    magnitude larger than the IBM System/360 family.

    Apples and oranges. IBM had fewer but much larger customer
    organisations, and could not afford to upset them much.

    IBM had legendary market power, all the way up to monopoly status.
    Whatever it decreed, its market had to follow.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to John Dallman on Fri Nov 29 08:03:39 2024
    jgd@cix.co.uk (John Dallman) writes:
    In early computer designs, arithmetic registers were much longer than >addresses, the classic examples being machines with 36-bit words and 15-
    to 18-bit addresses.

    Large logical address spaces started with the IBM 360, which had 32-bit >arithmetic registers and 32-bit address registers. You couldn't put
    32-bits worth of physical memory in a machine for over a decade after it >appeared, but it was allowed for in the architecture.

    Nowadays, the bit-ness of a machine seems to be the *smaller* of the >arithmetic registers and the address space. This became true in the early >1970s, as far as I can see, and the terminology became confused around
    then. A few examples from that period:

    Classic "8-bit" microprocessors, such as the 8080 or 6800 have 8-bit >arithmetic and 16-bit addressing.

    The PDP-11 has 16-bit arithmetic and 16-bit addressing, plus
    bank-switching.

    In the early 1980s the width of the data bus of the main
    implementation of an architecture was considered to be defining the
    bitness of the architecture. This is especially noticable in the
    68000, which was usually described as 16-bit CPU, despite having
    32-bit address and 32-bit data registers, because it has a 16-bit data
    bus. I think that even Motorola called it a 16-bit CPU. With low-cost
    variants such as the 8088, the 68008, and later the 386SX, that idea
    was not kept up.

    And later, when the bus sizes outgrew the address sizes (IIRC the
    Pentium has a 64-bit data bus; these days desktop processors have
    128-bit wide memory interfaces (but they are 4x32 bits with DDR5) plus
    24 lanes or more of PCIe or alternatives), this concept was not kept
    up, and we arrived at today's architecture-oriented concept of making
    the address register size determine the bitness. This works pretty
    well also for what is considered to be the bitness of the S/360, the
    PDP-11, and the VAX. But it means that the 68000 is a 32-bit
    processor, and I think that's the current general opinion.

    Where this concept does not work:

    For the earlier 36-bit architectures with registers that hold two
    15-bit or 18-bit addresses, this concept does not really work.

    The CDC-6600, which has 60-bit X (data) registers and 18-bit A and B
    (address) registers, this concept does not work well, either. We do
    not consider it to be an 18-bit architecture. And I expect that the
    18-bit limitation is not deeply rooted in the architecture, and it
    could be expanded up to 60 bits without big problems, because the
    addreses take 60 bits in memory just as the data.

    For 8-bit CPUs, at least for the 6502 16-bit addresses never exists in architectureal registers (apart from the very implicit PC), only as
    effective addresses and in the PC. However, it's parent 6800 has a
    16-bit index register and a 16-bit stack pointer, and the 8008 has the
    H and L registers which together form a 16-bit address. So for these architectures the address size does not determine what is generally
    considered the bitness of these CPUs.

    The original 8086 has 16-bit arithmetic and a strange 20-bit addressing >scheme.

    But, as the protected mode of the 80286 shows, the intent was to use
    16-bit addresses in programs (possibly in multiple segments), not
    20-bit addresses. Software did not follow this intent, though. In
    any case the instruction set makes addressing beyond 16-bit addresses
    so cumbersome that calling it a 16-bit architecture is justified even
    with the newer, architectural concept of bitness.

    Modern architectures have arithmetic and address registers that are the
    same size.

    There was a movement from specialized registers such as the 68000s
    address and data registers to general-purpose registers (e.g., in the
    386 and the original RISCs). But then SIMD extensions were introduced
    starting in the mid-1990s, and they introduced wider SIMD registers
    that usually only contain data, not addresses (but Intel introduced scatter/gather instructions that also use SIMD registers for
    addressing). We still use the size of the proper address registers
    when we consider the bitness of an architecture.

    OTOH, we also talk about the bitness of the SIMD extension: SSE and
    ARMv8 Neon uses 128 bits. But the tendency towards making the
    SIMD-width an implementation option as in ARM SVE and AFAIK the RISC-V
    V extension means that we will not use the width of the SIMD extension
    as an architectural concept, but it will probably increase the usage
    of the width of the SIMD extension for describing particular
    implementations.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Anton Ertl on Fri Nov 29 19:17:50 2024
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:

    In the early 1980s the width of the data bus of the main
    implementation of an architecture was considered to be defining the
    bitness of the architecture. This is especially noticable in the
    68000, which was usually described as 16-bit CPU, despite having
    32-bit address and 32-bit data registers, because it has a 16-bit data
    bus. I think that even Motorola called it a 16-bit CPU. With low-cost variants such as the 8088, the 68008, and later the 386SX, that idea
    was not kept up.

    It had been my impression that the width of the ALU was the
    definition for many computers - the widest integer that can
    natively be handled. (That does not really fit for the low-end
    /360, but that was a 32-bit architecture, and worked for the mid-
    and high-end machines). The 68000 was indeed advertised as a
    16-bit processor, the 68008 also had a 16-bit ALU.

    The original Nova with its 4-bit ALU does not really fit, I
    think Edson de Castro quipped was that it was a 4-bit computer
    masquerading as a 16-bit computer. (They later introduced
    real 16-bit computers).

    Notable counterexamples? (OK, the PDP-8/S :-)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Brett@21:1/5 to Lawrence D'Oliveiro on Sat Nov 30 01:29:04 2024
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
    On Thu, 28 Nov 2024 22:08 +0000 (GMT Standard Time), John Dallman wrote:

    In article <viao3r$na9e$4@dont-email.me>, ldo@nz.invalid (Lawrence
    D'Oliveiro) wrote:

    Apple went through the same sort of thing. Yet it managed the
    transition much more cleanly.

    Apple simply demanded all software become 32-bit clean. The fact that
    they didn't forsee the problem and warn software writers not to use the
    high 8 bits rather implies they weren't paying attention.

    Oh, they were paying attention, all right. In the original 1984 Macintosh software, the top 8 bits in a “handle” (pointer to a pointer to a relocatable block) were used to store handle state (e.g. whether the block was locked in a particular memory location). But there were no API calls
    to save/restore this state. That was fixed in the Mac Plus in 1986. So all had to happen was for app developers to use the new calls, instead of
    peeking at bits directly.

    Yes Apple mostly hid their private use of the high byte, so software would
    not break when they upgraded.

    There was one obsolete API call that had a warning that it was only 24 bit safe, and my favorite game Civ IV used that call instead of the modern replacement.

    I know this because I jumped into the debugger to see why it crashed.

    This in spite of having an installed base that was orders of
    magnitude larger than the IBM System/360 family.

    Apples and oranges. IBM had fewer but much larger customer
    organisations, and could not afford to upset them much.

    IBM had legendary market power, all the way up to monopoly status.
    Whatever it decreed, its market had to follow.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Sat Nov 30 02:37:49 2024
    According to Michael S <already5chosen@yahoo.com>:
    S/360 normally referred as 24-bit address architecture.
    S/370 normally referred as 31-bit address architecture.
    I don't know technical reasons for it, but would think that they exist.

    S/360 had 24 bit addresses and 32 bit registers. When doing address arithmetic the high 8 bits of the register were ignored. That turned out to be a really bad
    decision since a few instructions and a lot of programming conventions stored other stuff in that high byte, causing severe pain a few years later when memories got bigger than 16 meg. The kludge in S/370 was to use the high bit as a flag, 0 meant 24 bit addressing, 1 meant 31 bit addressing. That worked reasonably well although they came up with yet more kludges to let programs switch among multiple 31-bit address spaces. They finally bit the bullet in 2000
    when they announced zSeries with 64 bit addresses and registers.

    These days I'd say the relevant N is the size of arithmetic registers but a
    lot of marketers appear to disagree with me.

    --
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lynn Wheeler@21:1/5 to Lawrence D'Oliveiro on Fri Nov 29 17:42:25 2024
    Lawrence D'Oliveiro <ldo@nz.invalid> writes:
    IBM had legendary market power, all the way up to monopoly status.
    Whatever it decreed, its market had to follow.

    In the wake of the Future System mid-70s implosion, the head of POK
    (high-end mainframe) also convinced corporate to kill the (virtual
    machine) VM370 product, shutdown the development group and transfer all
    the people to POK to work on MVS/XA (i.e. a lot of XA/370 changes were
    to address various bloat&kludges in MVS/370). Come 80s, with 3081 and
    MVS/XA, customers weren't converting as planned, continuing to run 3081 370-mode with MVS/370. Amdahl was having more success, it had developed microcode hypervisor/virtual machine ("multiple domain") support and
    able to run both MVS/370 and MVS/XA concurrently on the same (Amdahl)
    machine (note Endicott did eventually obtain VM370 product
    responsibility for the mid-range 370s, but had to recreate a development
    group from scratch).

    Amdahl had another advantage, initially 3081 was two processor only and
    3081D aggregate MIPS was less than the single processor Amdahl
    machine. IBM doubles the processor cache sizes for the 2-CPU 3081K,
    having about same aggregate MIPs as Amdahl single CPU .... however at
    the time, IBM MVS documents had MVS two-processor (multiprocessor
    overhead) support only getting 1.2-1.5 times the throughput of single
    processor (aka Amdahl single processor getting full MIPS throughput
    while MVS two processor 3081K loosing lots of throughput to
    multiprocessor overhead).

    POK had done a rudementary virtual software system for MVS/XA testing
    ... which eventually ships as VM/MA (migration aid) and then VM/SF
    (system facility) ... however since 370/XA had been primarily focused to compensate for MVS issues ... 3081 370/XA required a lot of microcode
    tweaks when running in virtual machine mode and 3081 didn't have the
    space ... so switching in and out of VM/MA or VM/SF with virtual machine
    mode, had a lot of overhead "paging" microcode. It was almost a decade
    later before IBM was able to respond to Amdahl's
    hypervisor/multiple-domain with 3090 LPAR & PR/SM support.


    --
    virtualization experience starting Jan1968, online at home since Mar1970

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to John Levine on Fri Nov 29 22:30:47 2024
    On 11/29/2024 6:37 PM, John Levine wrote:
    According to Michael S <already5chosen@yahoo.com>:
    S/360 normally referred as 24-bit address architecture.
    S/370 normally referred as 31-bit address architecture.
    I don't know technical reasons for it, but would think that they exist.

    S/360 had 24 bit addresses and 32 bit registers. When doing address arithmetic
    the high 8 bits of the register were ignored. That turned out to be a really bad
    decision since a few instructions and a lot of programming conventions stored other stuff in that high byte, causing severe pain a few years later when memories got bigger than 16 meg. The kludge in S/370 was to use the high bit as
    a flag, 0 meant 24 bit addressing, 1 meant 31 bit addressing. That worked reasonably well although they came up with yet more kludges to let programs switch among multiple 31-bit address spaces.

    Was ESA one of those kludges?

    They finally bit the bullet in 2000
    when they announced zSeries with 64 bit addresses and registers.

    These days I'd say the relevant N is the size of arithmetic registers but a lot of marketers appear to disagree with me.

    I tend to agree with you, with the caveat, as Mitch pointed out, of SIMD registers. But I suspect the term N-bit machine, will soon be a
    historic relic, as most architectures have converged on 64 bit
    arithmetic registers, and with the growth of address spaces seeming to
    slow down, it will be a long time before anyone goes to 128 bit
    (non-SIMD) registers.



    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to John Levine on Sat Nov 30 06:28:29 2024
    John Levine <johnl@taugh.com> writes:
    S/360 had 24 bit addresses and 32 bit registers. When doing address arithmetic >the high 8 bits of the register were ignored. That turned out to be a really bad
    decision since a few instructions and a lot of programming conventions stored >other stuff in that high byte, causing severe pain a few years later when >memories got bigger than 16 meg.

    The technique of putting stuff in unused bits of an address has its
    drawbacks, but it also has benefits, in particular type information is
    often stored there (even on architectures that do not ignore any
    bits). Of course AMD and Intel have the bad examples of S/360 and
    68000 in mind, and did not want to have anything to do with that
    during the first two decades of AMD64.

    The designers of ARM A64 could think beyond that and designed in the top-byte-ignore feature. Apparently this made AMD and Intel see the
    light:

    AMD added the upper-address ignore feature, which, when enabled,
    ignores the top 7 bits. One problem with this in the Linux kernel
    (and maybe other OSs) is that the Linux kernel expects the top bit to
    be set only for kernel addresses. Not sure how that works with ARMs
    top-byte ignore feature, which is supported since Linux 5.4 in 2019
    using the PR_SET_TAGGED_ADDR_CTRL option of the prctl() call.

    Intel added the linear address masking feature, with two variants:
    LAM_U57 ignores bits 57-62 (but not the MSB), allowing 6 bits for
    other uses; LAM_U48 ignores bits 48-62, allowing 15 bits for other
    uses. These variants require bit 63 to have the same value as bit
    56/47; another bit could be made available by ignoring bit 56/47 (the information is in bit 63 anyway), but Intel apparently decided that
    programmers don't need that extra bit.

    RISC-V has the pointer-masking extension, which ignores the top 7 bits
    (like AMD's upper-address ignore) or optionally 16 bits.

    See <https://muxup.com/2023q4/storing-data-in-pointers> and <https://lwn.net/Articles/902094/>.

    Concerning the kernel requirements, as someone who has implemented
    Prolog with tagging, having to untag on passing an address to the
    kernel would be only a minimal cost. Not having to unmask on every
    memory access would be quite useful. Having the top bit always be 0
    with the tags in the 6 bits below would not have been a restriction
    for us (we used 4-bit tags); OTOH, if one more bit was available,
    programmers would find good uses for it.

    These days I'd say the relevant N is the size of arithmetic registers but a >lot of marketers appear to disagree with me.

    Which arithmetic registers on an Intel processor? The 64 bits of a
    GPR? The 128 bits of an XMM register? The 256 bits of a YMM
    register? The 512 bits of a ZMM register? Note that until recently,
    Intel sold you the same silicon either with only XMM or with XMM and
    YMM registers. They sell consumer CPUs with XMM, YMM, and ZMM
    registers, but more recent consumer and small-server CPUs have
    reverted to only supporting XMM and YMM registers.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Anton Ertl on Sat Nov 30 11:58:20 2024
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic registers but a >>>lot of marketers appear to disagree with me.

    Which arithmetic registers on an Intel processor? The 64 bits of a
    GPR? The 128 bits of an XMM register? The 256 bits of a YMM
    register? The 512 bits of a ZMM register?

    The Cray-1 is even more interesting in that respect. Is it a 4096-bit machine?

    If you consider the widest arithmetic it is capable of in one piece,
    it is a 64-bit machine.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to Anton Ertl on Sat Nov 30 11:35:36 2024
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic registers but a >>lot of marketers appear to disagree with me.

    Which arithmetic registers on an Intel processor? The 64 bits of a
    GPR? The 128 bits of an XMM register? The 256 bits of a YMM
    register? The 512 bits of a ZMM register?

    The Cray-1 is even more interesting in that respect. Is it a 4096-bit
    machine? I think there are also vector machines where you can
    configure N bits into more shorter or fewer longer registers.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to Thomas Koenig on Sat Nov 30 16:57:56 2024
    Thomas Koenig <tkoenig@netcologne.de> writes:
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic registers but a >>>>lot of marketers appear to disagree with me.

    Which arithmetic registers on an Intel processor? The 64 bits of a
    GPR? The 128 bits of an XMM register? The 256 bits of a YMM
    register? The 512 bits of a ZMM register?

    The Cray-1 is even more interesting in that respect. Is it a 4096-bit
    machine?

    If you consider the widest arithmetic it is capable of in one piece,
    it is a 64-bit machine.

    That's not John Levine's criterion.

    BTW, with your criterion, the Zen5 in the Ryzen AI 370HX is a 256-bit
    machine, while the Zen5 in the Ryzen 9600X is a 512-bit machine.
    According to John Levine's criterion they are both 512-bit machines.
    According to me they are both 64-bit machines. John Levine's and my
    criteria are architectural, yours is implementation-oriented.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Anton Ertl on Sat Nov 30 19:32:06 2024
    On Sat, 30 Nov 2024 16:57:56 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic
    registers but a lot of marketers appear to disagree with me.

    Which arithmetic registers on an Intel processor? The 64 bits of a >>>GPR? The 128 bits of an XMM register? The 256 bits of a YMM
    register? The 512 bits of a ZMM register?

    The Cray-1 is even more interesting in that respect. Is it a
    4096-bit machine?

    If you consider the widest arithmetic it is capable of in one piece,
    it is a 64-bit machine.

    That's not John Levine's criterion.

    BTW, with your criterion, the Zen5 in the Ryzen AI 370HX is a 256-bit machine, while the Zen5 in the Ryzen 9600X is a 512-bit machine.
    According to John Levine's criterion they are both 512-bit machines. According to me they are both 64-bit machines. John Levine's and my
    criteria are architectural, yours is implementation-oriented.

    - anton

    John Levine said "arythmetic". Not logic, not move, not swizzle, not load/store. The widest arythmetic on Intel/AMD is 64 bits for inputs and
    128 bits for output (integer multiplication).
    On IBM processors, both z and POWER, they have arithmetic instructions
    with 128-bit inputs. I think, on POWER some of them are even integer arithmetic. Not sure about z.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to Anton Ertl on Sat Nov 30 17:57:59 2024
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    S/360 had 24 bit addresses and 32 bit registers. When doing address arithmetic
    the high 8 bits of the register were ignored. That turned out to be a really bad
    decision since a few instructions and a lot of programming conventions stored >>other stuff in that high byte, causing severe pain a few years later when >>memories got bigger than 16 meg.

    The technique of putting stuff in unused bits of an address has its >drawbacks, but it also has benefits, in particular type information is
    often stored there (even on architectures that do not ignore any
    bits). Of course AMD and Intel have the bad examples of S/360 and
    68000 in mind, and did not want to have anything to do with that
    during the first two decades of AMD64.

    The designers of ARM A64 could think beyond that and designed in the >top-byte-ignore feature. Apparently this made AMD and Intel see the
    light:

    AMD added the upper-address ignore feature, which, when enabled,

    Architecturally known as Top Byte Ignore (TBI). It can be
    independently enabled for each half of the virtual address space
    (based on the value of VA<55>).


    ignores the top 7 bits. One problem with this in the Linux kernel
    (and maybe other OSs) is that the Linux kernel expects the top bit to
    be set only for kernel addresses. Not sure how that works with ARMs
    top-byte ignore feature, which is supported since Linux 5.4 in 2019
    using the PR_SET_TAGGED_ADDR_CTRL option of the prctl() call.

    Note that ARM64 also supports PAC (Pointer Authentication) instructions
    which leverage the top byte to store a hash of the pointer, which
    can be optionally checked during loads and stores.


    Intel added the linear address masking feature, with two variants:
    LAM_U57 ignores bits 57-62 (but not the MSB), allowing 6 bits for
    other uses; LAM_U48 ignores bits 48-62, allowing 15 bits for other
    uses. These variants require bit 63 to have the same value as bit
    56/47; another bit could be made available by ignoring bit 56/47 (the >information is in bit 63 anyway), but Intel apparently decided that >programmers don't need that extra bit.


    ARM64 also leverages TBI to support a Memory Tagging Extension which stores
    tag bits in an external tag memory array (four bits for every
    sixteen bytes of DRAM in the physical address space). Loads and stores
    to tagged regions will fault on a tag mismatch.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to Michael S on Sat Nov 30 18:08:58 2024
    Michael S <already5chosen@yahoo.com> writes:
    On Sat, 30 Nov 2024 16:57:56 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic
    registers but a lot of marketers appear to disagree with me.
    ...
    John Levine said "arythmetic". Not logic, not move, not swizzle, not >load/store. The widest arythmetic on Intel/AMD is 64 bits for inputs and
    128 bits for output (integer multiplication).

    The widest arithmetic registers on AMD64 with AVX-512 are the ZMM
    registers with 512 bits each. Sure, they are used for arithmetic on a
    sequence of individually narrower data, but the registers have 512
    bits nonetheless.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Anton Ertl on Sat Nov 30 20:28:51 2024
    On Sat, 30 Nov 2024 18:08:58 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Michael S <already5chosen@yahoo.com> writes:
    On Sat, 30 Nov 2024 16:57:56 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic
    registers but a lot of marketers appear to disagree with me.

    ...
    John Levine said "arythmetic". Not logic, not move, not swizzle, not >load/store. The widest arythmetic on Intel/AMD is 64 bits for inputs
    and 128 bits for output (integer multiplication).

    The widest arithmetic registers on AMD64 with AVX-512 are the ZMM
    registers with 512 bits each. Sure, they are used for arithmetic on a sequence of individually narrower data, but the registers have 512
    bits nonetheless.

    - anton

    8x64 is not the same as 512.
    You don't call 2-way superscalar 64-bit CPU 128-bit.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Sat Nov 30 19:12:13 2024
    According to Anton Ertl <anton@mips.complang.tuwien.ac.at>:
    These days I'd say the relevant N is the size of arithmetic
    registers but a lot of marketers appear to disagree with me.

    The widest arithmetic registers on AMD64 with AVX-512 are the ZMM
    registers with 512 bits each. Sure, they are used for arithmetic on a >sequence of individually narrower data, but the registers have 512
    bits nonetheless.

    Jeez, who knew you were a chip salesman.

    I meant the main registers, for some straightforward version of main.
    You are of course correct that there are special purpose registers
    that are much wider but I don't think it's all that hard to see which
    ones I meant.

    Everyone agreed that all the models of S/360 were 32 bit machines, but the implementations ranged from 8 bits for the /25 and /30 to 64 bits for
    the /75. I don't think it's very useful to argue about whether the various models of 360 were 8, 16, 32, or 64 bit machines.

    --
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Sat Nov 30 19:40:17 2024
    According to Stephen Fuld <sfuld@alumni.cmu.edu.invalid>:
    a flag, 0 meant 24 bit addressing, 1 meant 31 bit addressing. That worked
    reasonably well although they came up with yet more kludges to let programs >> switch among multiple 31-bit address spaces.

    Was ESA one of those kludges?

    I'd say that was the main kludge, with primary and secondary address
    spaces and address registers that worked sort of like segment
    registers paired with the address in each regular register.

    These days I'd say the relevant N is the size of arithmetic registers but a >> lot of marketers appear to disagree with me.

    I tend to agree with you, with the caveat, as Mitch pointed out, of SIMD >registers. But I suspect the term N-bit machine, will soon be a
    historic relic, as most architectures have converged on 64 bit
    arithmetic registers, and with the growth of address spaces seeming to
    slow down, it will be a long time before anyone goes to 128 bit
    (non-SIMD) registers.

    I get the impression that we will have 32 bit architectures for a very
    long time, since they are smaller and cheaper to implement than 64 bit
    and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.

    --
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to John Levine on Sat Nov 30 22:38:52 2024
    On Sat, 30 Nov 2024 19:40:17 -0000 (UTC)
    John Levine <johnl@taugh.com> wrote:

    According to Stephen Fuld <sfuld@alumni.cmu.edu.invalid>:
    a flag, 0 meant 24 bit addressing, 1 meant 31 bit addressing. That
    worked reasonably well although they came up with yet more kludges
    to let programs switch among multiple 31-bit address spaces.

    Was ESA one of those kludges?

    I'd say that was the main kludge, with primary and secondary address
    spaces and address registers that worked sort of like segment
    registers paired with the address in each regular register.

    These days I'd say the relevant N is the size of arithmetic
    registers but a lot of marketers appear to disagree with me.

    I tend to agree with you, with the caveat, as Mitch pointed out, of
    SIMD registers. But I suspect the term N-bit machine, will soon be
    a historic relic, as most architectures have converged on 64 bit
    arithmetic registers, and with the growth of address spaces seeming
    to slow down, it will be a long time before anyone goes to 128 bit >(non-SIMD) registers.

    I get the impression that we will have 32 bit architectures for a very
    long time, since they are smaller and cheaper to implement than 64 bit
    and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.


    I agree with conclusions, but not with your examples.
    IMHO, the whole ARM Cortex-R series is solution looking for problem. It
    could be quite easily replaced by 64-bit A series cores.
    Now Cortex-M is completely different story. Here 64-bit cores would not
    be appropriate.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Anton Ertl on Sat Nov 30 22:06:37 2024
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    Michael S <already5chosen@yahoo.com> writes:
    On Sat, 30 Nov 2024 16:57:56 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic
    registers but a lot of marketers appear to disagree with me.
    ...
    John Levine said "arythmetic". Not logic, not move, not swizzle, not >>load/store. The widest arythmetic on Intel/AMD is 64 bits for inputs and >>128 bits for output (integer multiplication).

    The widest arithmetic registers on AMD64 with AVX-512 are the ZMM
    registers with 512 bits each.

    Can you do a 512-bit addition with it natively?

    Sure, they are used for arithmetic on a
    sequence of individually narrower data, but the registers have 512
    bits nonetheless.

    So, more of a 64-bit system.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to John Levine on Sat Nov 30 22:39:15 2024
    On Sat, 30 Nov 2024 19:40:17 +0000, John Levine wrote:

    I get the impression that we will have 32 bit architectures for a very
    long time, since they are smaller and cheaper to implement than 64 bit
    and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.

    Still one hardly needs more than a Z80 to run a toaster, microwave,
    stove,
    oven, faucet, door lock, refrigerator, ... {{Or basically everything
    nobody
    ever thought would have/need a computer inside of them}}

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to mitchalsup@aol.com on Sun Dec 1 08:19:36 2024
    MitchAlsup1 <mitchalsup@aol.com> schrieb:
    On Sat, 30 Nov 2024 19:40:17 +0000, John Levine wrote:

    I get the impression that we will have 32 bit architectures for a very
    long time, since they are smaller and cheaper to implement than 64 bit
    and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.

    Still one hardly needs more than a Z80 to run a toaster, microwave,
    stove,
    oven, faucet, door lock, refrigerator, ... {{Or basically everything
    nobody
    ever thought would have/need a computer inside of them}}

    I recently read that 6502 processors are still in use in pacemakers.
    You just hope that there is no stack overflow...

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to Thomas Koenig on Sun Dec 1 08:35:12 2024
    Thomas Koenig <tkoenig@netcologne.de> writes:
    I recently read that 6502 processors are still in use in pacemakers.
    You just hope that there is no stack overflow...

    No need to hope. Programs of this size and criticality (and the
    corresponding budget) are within reach of verified (or probably rather proved-by-construction) software.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to Thomas Koenig on Sun Dec 1 08:38:33 2024
    Thomas Koenig <tkoenig@netcologne.de> writes:
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    Michael S <already5chosen@yahoo.com> writes:
    On Sat, 30 Nov 2024 16:57:56 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:

    Thomas Koenig <tkoenig@netcologne.de> writes:
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    These days I'd say the relevant N is the size of arithmetic
    registers but a lot of marketers appear to disagree with me.
    ...
    John Levine said "arythmetic". Not logic, not move, not swizzle, not >>>load/store. The widest arythmetic on Intel/AMD is 64 bits for inputs and >>>128 bits for output (integer multiplication).

    The widest arithmetic registers on AMD64 with AVX-512 are the ZMM
    registers with 512 bits each.

    Can you do a 512-bit addition with it natively?

    Whatever that may mean, it would not be relevant to the criterion,
    which is "size of arithmetic registers". However, John Levine has
    modified his criterion in the meantime.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to John Levine on Sun Dec 1 08:41:17 2024
    John Levine <johnl@taugh.com> writes:
    I meant the main registers, for some straightforward version of main.
    You are of course correct that there are special purpose registers
    that are much wider but I don't think it's all that hard to see which
    ones I meant.

    I guess you mean the general-purpose registers, which is not a proper definition, either, and it means that the criterion only applies to architectures with general-purpose registers.

    I tried to be more precise and as a criterion "address register size",
    i.e., the size of a register that holds an address. And I guess that
    should be refined to the size of a register that holds one address (to
    avoid the issue of vector registers containing addresses for
    scatter/gather instructions). This also makes it clear that this
    criterion does not apply to machines like the IBM 704 and PDP-10 that
    have two addresses per machine word, but for word-addressed machines
    the word size makes it clear what is meant with "N-bit machine". This
    resulta in:

    1) For word-addressed machines: the size of the word.

    2) For byte-addressed machines: the size of a register that contains
    one address.

    These criteria agree with the usual understanding of the bitness of an architecture for most architectures, with a few exceptions:

    * The 68000 would be classified as 32-bit architecture, which agrees
    with the modern understanding, but not with the marketing as 16-bit
    CPU or 16/32-bit CPU at the time.

    * Most CPUs described as 8-bit CPUs keep at least the program counter
    in a larger register, a number of them (6800, 8008 and its
    descendents) also have 16-bit data-address registers or
    register-pairs (at least HL for the 8008). At the time they and the
    68000 were described as 8-bit (16-bit for the 68000) based on the
    implementation of having an 8-bit data bus, but that argument broke
    down with the 8088 and 68008.

    * I am not that familiar with the old character-oriented
    architectures, such as the IBM 702; they apparently are not
    described as N-bit machines for any N, so we probably don't need to
    assign such a label to them nowadays.

    * There were also fixed-word-length machines that were not binary,
    such as the IBM 7070. Memory is described as consisting of words,
    so criterion 1 can be applied, except that it's not N-bit, but
    N-digit.

    Anything else?

    BTW, note that these are architectural (i.e., instruction-set-related) criteria; an implementation can implement several instruction sets.
    E.g., I can run programs for the 16-bit 8086 architecture, for the
    32-bit IA-32 architecture and for the 64-bit AMD64 architecture on,
    e.g., the recent AMD Ryzen 9 9950X and the Intel Core Ultra 9 285K.

    Everyone agreed that all the models of S/360 were 32 bit machines, but the >implementations ranged from 8 bits for the /25 and /30 to 64 bits for
    the /75.

    This sentence is contradictory. All these implementations have 32-bit general-purpose registers (otherwise they would not be S/360
    implementations), which are address registers, and are therefore
    32-bit architectures by your and my criteria.

    You obviously mean something different about these implementations.
    What is it?

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to Michael S on Sun Dec 1 09:28:26 2024
    Michael S <already5chosen@yahoo.com> writes:
    On Sat, 30 Nov 2024 18:08:58 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:
    The widest arithmetic registers on AMD64 with AVX-512 are the ZMM
    registers with 512 bits each. Sure, they are used for arithmetic on a
    sequence of individually narrower data, but the registers have 512
    bits nonetheless.
    ...
    8x64 is not the same as 512.

    Alternative facts? Anyway, the ZMM registers are used for arithmentic
    and are 512 bits wide; this just shows that "size of arithmetic
    registers" does not reflect what we usually mean with "N-bit", and
    John Levine has refined his criterion accordingly.

    You don't call 2-way superscalar 64-bit CPU 128-bit.

    The "size of arithmetic registers" criterion would call the 21064 a
    64-bit CPU. It's not my criterion, but it happens to agree with my
    criterion for this CPU.

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anton Ertl@21:1/5 to Scott Lurndal on Sun Dec 1 09:38:27 2024
    scott@slp53.sl.home (Scott Lurndal) writes:
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    S/360 had 24 bit addresses and 32 bit registers. When doing address arithmetic
    the high 8 bits of the register were ignored. That turned out to be a really bad
    decision since a few instructions and a lot of programming conventions stored
    other stuff in that high byte, causing severe pain a few years later when >>>memories got bigger than 16 meg.

    The technique of putting stuff in unused bits of an address has its >>drawbacks, but it also has benefits, in particular type information is >>often stored there (even on architectures that do not ignore any
    bits). Of course AMD and Intel have the bad examples of S/360 and
    68000 in mind, and did not want to have anything to do with that
    during the first two decades of AMD64.

    The designers of ARM A64 could think beyond that and designed in the >>top-byte-ignore feature. Apparently this made AMD and Intel see the
    light:

    AMD added the upper-address ignore feature, which, when enabled,

    Architecturally known as Top Byte Ignore (TBI). It can be
    independently enabled for each half of the virtual address space
    (based on the value of VA<55>).


    ignores the top 7 bits.

    AMD calls it the upper-address ignore feature, and it does not ignore
    the top byte. As mentioned above ARM has the top-byte-ignore
    feauture, which ignores the top byte.

    Making a difference between kernel and user space is interesting. The
    kernel is usually not implemented in a programming language with
    dynamic typing, so it does not need TBI for that reason; it may want
    it for the other uses: pointer authentication and maybe memory
    tagging. At the kernel level pointer authentication sounds useful for
    finding cases where addresses coming from user space are used without
    first being checked (and converted to authenticated pointers).

    The other direction is to have TBI for user space (for a process
    running a Lisp program or somesuch), but not for the kernel space.
    For the kernel this would allow techniques such as mapping physical
    RAM into the kernel space even for RAM sizes up to 2^62 bytes ("only"
    2^54 bytes, i.e., 16 Petabytes with the kernel in TBI mode).

    - anton
    --
    'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
    Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Anton Ertl on Sun Dec 1 14:03:25 2024
    Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
    Michael S <already5chosen@yahoo.com> writes:
    On Sat, 30 Nov 2024 18:08:58 GMT
    anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:
    The widest arithmetic registers on AMD64 with AVX-512 are the ZMM
    registers with 512 bits each. Sure, they are used for arithmetic on a
    sequence of individually narrower data, but the registers have 512
    bits nonetheless.
    ...
    8x64 is not the same as 512.

    Alternative facts?

    You can do eight 64-bit additions in AVX-512, but you cannot
    do a 512-bit addition.

    I think "ALU can add up to n-bit numbers" is a reasonable definition
    for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark
    on the latter).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Thomas Koenig on Sun Dec 1 07:32:39 2024
    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable definition
    for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark
    on the latter).

    To me, the phrase "n-bit architecture" should depend only on such characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit
    (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation. I don't
    mind comments about matters of implementation, but the constant
    blurring (or erasing) of the line between architecture and
    implementation often makes it nearly impossible to have a discussion
    just about architecture.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to Anton Ertl on Sun Dec 1 15:52:51 2024
    anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
    John Levine <johnl@taugh.com> writes:
    I meant the main registers, for some straightforward version of main.
    You are of course correct that there are special purpose registers
    that are much wider but I don't think it's all that hard to see which
    ones I meant.

    I guess you mean the general-purpose registers, which is not a proper >definition, either, and it means that the criterion only applies to >architectures with general-purpose registers.

    I tried to be more precise and as a criterion "address register size",
    i.e., the size of a register that holds an address. And I guess that
    should be refined to the size of a register that holds one address (to
    avoid the issue of vector registers containing addresses for
    scatter/gather instructions). This also makes it clear that this
    criterion does not apply to machines like the IBM 704 and PDP-10 that
    have two addresses per machine word, but for word-addressed machines
    the word size makes it clear what is meant with "N-bit machine". This >resulta in:

    1) For word-addressed machines: the size of the word.

    2) For byte-addressed machines: the size of a register that contains
    one address.

    3) For digit-addressed memory-to-memory machines, there are index
    registers of a fixed size which can contain a 'virtual' (base-relative)
    address. There may or may not be an accumulator for fixed point
    or floating point use. There is no "register" that supports
    a non-base-relative (i.e. physical or machine) address which
    may be much larger that that supported by an index register.

    The bitness of this architecture could be considered 4-bit (as
    the smallest addressible element) or 40-bit (since the processor
    to memory interface is 10 digits wide).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Tim Rentsch on Sun Dec 1 17:53:19 2024
    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:
    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable definition
    for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark
    on the latter).

    To me, the phrase "n-bit architecture" should depend only on such characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit
    (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation.

    I'm well aware of that distinction.

    On the other hand, I have right before me a book with the title
    "MC68000 16-BIT MICROPROCESSOR User's manual third edition", ISBN
    0-13-566695-3 (in paperback). One may argue that the authors
    of that book didn't know what they were writing about (since the
    68000 has a 32-bit ISA), but I would try to define the terms in
    such a way that this is also included.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael S@21:1/5 to Thomas Koenig on Sun Dec 1 20:05:11 2024
    On Sun, 1 Dec 2024 17:53:19 -0000 (UTC)
    Thomas Koenig <tkoenig@netcologne.de> wrote:

    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:
    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable
    definition for an n-bit architecture, which also fits the 16-bit
    68000. It does not fit the 360/30, or the Nova (but see de
    Castro's remark on the latter).

    To me, the phrase "n-bit architecture" should depend only on such characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit
    (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation.

    I'm well aware of that distinction.

    On the other hand, I have right before me a book with the title
    "MC68000 16-BIT MICROPROCESSOR User's manual third edition", ISBN 0-13-566695-3 (in paperback). One may argue that the authors
    of that book didn't know what they were writing about (since the
    68000 has a 32-bit ISA), but I would try to define the terms in
    such a way that this is also included.

    IMHO, the authors of the book are wrong. At least as long as were are
    talking about current meaning of the bitness. It is possible that 40
    years ago the word had different meaning. But I find more likely that
    it had no established meaning.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to Paul A. Clayton on Sun Dec 1 19:52:29 2024
    "Paul A. Clayton" <paaronclayton@gmail.com> writes:
    On 11/30/24 3:38 PM, Michael S wrote:
    On Sat, 30 Nov 2024 19:40:17 -0000 (UTC)
    John Levine <johnl@taugh.com> wrote:
    [snip]
    I get the impression that we will have 32 bit architectures for a very
    long time, since they are smaller and cheaper to implement than 64 bit
    and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.


    I agree with conclusions, but not with your examples.
    IMHO, the whole ARM Cortex-R series is solution looking for problem. It
    could be quite easily replaced by 64-bit A series cores.
    Now Cortex-M is completely different story. Here 64-bit cores would not
    be appropriate.

    I wonder if a 32-bit version of AArch64 would have been
    appropriate for the Cortex-R series.

    The 32-bit ARMv7 would surely have been sufficient.
    AAarch64 with no 64-bit support would be pointless.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Brett@21:1/5 to Thomas Koenig on Sun Dec 1 20:02:53 2024
    Thomas Koenig <tkoenig@netcologne.de> wrote:
    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:
    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable definition
    for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark
    on the latter).

    To me, the phrase "n-bit architecture" should depend only on such
    characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit
    (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation.

    I'm well aware of that distinction.

    On the other hand, I have right before me a book with the title
    "MC68000 16-BIT MICROPROCESSOR User's manual third edition", ISBN 0-13-566695-3 (in paperback). One may argue that the authors
    of that book didn't know what they were writing about (since the
    68000 has a 32-bit ISA), but I would try to define the terms in
    such a way that this is also included.


    Marketing.
    At the time only mini-computers were 32 bit, which only shipped tens of thousands of computers for tens of thousands of dollars each.

    I bought one of the first Macintosh’s which had 128k, which was clearly an inadequate amount of RAM. I looked at building building a fat Mac with 512k
    by desoldering the 16 DRAM’s, but those chips at higher density cost $1,000 at the time, half the cost of the Mac.

    Took time for DRAM costs to drop, my next machine was MacPlus with 1
    megabyte.

    Motorola was going for mass market, and mass market could not afford to
    fill more than 16 bits of address space. Macintosh was not mass market.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Terje Mathisen@21:1/5 to All on Mon Dec 2 09:48:47 2024
    MitchAlsup1 wrote:
    On Sat, 30 Nov 2024 19:40:17 +0000, John Levine wrote:

    I get the impression that we will have 32 bit architectures for a very
    long time, since they are smaller and cheaper to implement than 64 bit
    and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.

    Still one hardly needs more than a Z80 to run a toaster, microwave,
    stove,
    oven, faucet, door lock, refrigerator, ... {{Or basically everything
    nobody
    ever thought would have/need a computer inside of them}}

    They are still going to end up with a 32-bit CPU in future products!

    Both because that's needed to support a full development environment/
    arbitrary languages and because the cost is becoming mostly trivial:

    When every single flash/thumb drive has contained a full 32-bit CPU for
    more than 5 years now, the cost has to be in the cents range.

    Terje

    --
    - <Terje.Mathisen at tmsw.no>
    "almost all programming can be viewed as an exercise in caching"

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to Brian G. Lucas on Tue Dec 3 00:01:34 2024
    On 12/2/2024 4:56 PM, Brian G. Lucas wrote:
    On 12/2/24 3:48 AM, Terje Mathisen wrote:
    MitchAlsup1 wrote:
    On Sat, 30 Nov 2024 19:40:17 +0000, John Levine wrote:

    I get the impression that we will have 32 bit architectures for a very >>>> long time, since they are smaller and cheaper to implement than 64 bit >>>> and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.

    Still one hardly needs more than a Z80 to run a toaster, microwave,
    stove,
    oven, faucet, door lock, refrigerator, ... {{Or basically everything
    nobody
    ever thought would have/need a computer inside of them}}

    They are still going to end up with a 32-bit CPU in future products!

    Both because that's needed to support a full development environment/
    arbitrary languages and because the cost is becoming mostly trivial:

    When every single flash/thumb drive has contained a full 32-bit CPU
    for more than 5 years now, the cost has to be in the cents range.

    Terje

    Back in the early 1990s when my group first developed what would become
    the Motorola MCore, our target was radio (and cell phone) processors.
    The intention was to replace the zoo of 16-bit hard to program
    processors with a 32-bit processor that was easy to program via
    compilers.  The additional address space was going to be needed for
    protocol stacks (such as IP/TCP) and support of USB stuff.  Even with
    the silicon nodes at the time, the resulting processor was not much
    bigger than bonding pads.

    I agree with Terje, no need to have anything less than 32-bit in embedded.

    First, I want to apologize that in my previous post talking about
    everything going to 64 bits, I forgot about embedded markets. Note that
    I used the plural form. I haven't kept up with embedded markets since
    the 1990s, so things have probably changed. But there are embedded
    markets with other requirements. For example, for embedded applications
    such as remote controls (for e.g. TVs and set top boxes), battery life
    is very important, and pretty minimal functionality and performance are required, so they, at least used to use 4 bit processors. Another
    example is the greeting cards that play music when opened. There any
    cost more than a few pennies is too expensive. So there are places
    where less than 32 bits is appropriate.



    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Waldek Hebisch@21:1/5 to Terje Mathisen on Sun Dec 15 18:20:31 2024
    Terje Mathisen <terje.mathisen@tmsw.no> wrote:
    MitchAlsup1 wrote:
    On Sat, 30 Nov 2024 19:40:17 +0000, John Levine wrote:

    I get the impression that we will have 32 bit architectures for a very
    long time, since they are smaller and cheaper to implement than 64 bit
    and for a lot of embedded applications they are more than adequate.
    Examples are ARM Cortex-R4 and -R5, high performance 32 bit realtime
    chips.

    Still one hardly needs more than a Z80 to run a toaster, microwave,
    stove,
    oven, faucet, door lock, refrigerator, ... {{Or basically everything
    nobody
    ever thought would have/need a computer inside of them}}

    They are still going to end up with a 32-bit CPU in future products!

    Both because that's needed to support a full development environment/ arbitrary languages and because the cost is becoming mostly trivial:

    When every single flash/thumb drive has contained a full 32-bit CPU for
    more than 5 years now, the cost has to be in the cents range.

    One can buy 32-bit Risc-V for $0.10, but CPU is integrated with RAM
    and flash and you get "16-bit" amount of flash (16kB) and RAM (2kB).
    IIUC compressed variant of Risc-V is rather compact, but still,
    there is non-negligable space cost for 32-bit addresses, so
    architecture with 16-bit addresses _may_ have some advantage
    (or possibly IP16 option in compiler, but current 32-bit MCU-s
    allocate address space in sparse way, making 16-bit pointers
    rather inconvenient).

    OTOH only highest volume applications are looking for very cheap
    (< $0.10) MCU-s. In most other cases lower cost (like Pavuk MCU)
    does not compensate inconvenience of developing software.

    --
    Waldek Hebisch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Waldek Hebisch@21:1/5 to Anton Ertl on Mon Dec 16 22:39:18 2024
    Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
    John Levine <johnl@taugh.com> writes:
    I meant the main registers, for some straightforward version of main.
    You are of course correct that there are special purpose registers
    that are much wider but I don't think it's all that hard to see which
    ones I meant.

    I guess you mean the general-purpose registers, which is not a proper definition, either, and it means that the criterion only applies to architectures with general-purpose registers.

    I tried to be more precise and as a criterion "address register size",
    i.e., the size of a register that holds an address. And I guess that
    should be refined to the size of a register that holds one address (to
    avoid the issue of vector registers containing addresses for
    scatter/gather instructions). This also makes it clear that this
    criterion does not apply to machines like the IBM 704 and PDP-10 that
    have two addresses per machine word, but for word-addressed machines
    the word size makes it clear what is meant with "N-bit machine". This resulta in:

    1) For word-addressed machines: the size of the word.

    2) For byte-addressed machines: the size of a register that contains
    one address.

    These criteria agree with the usual understanding of the bitness of an architecture for most architectures, with a few exceptions:

    * The 68000 would be classified as 32-bit architecture, which agrees
    with the modern understanding, but not with the marketing as 16-bit
    CPU or 16/32-bit CPU at the time.

    * Most CPUs described as 8-bit CPUs keep at least the program counter
    in a larger register, a number of them (6800, 8008 and its
    descendents) also have 16-bit data-address registers or
    register-pairs (at least HL for the 8008). At the time they and the
    68000 were described as 8-bit (16-bit for the 68000) based on the
    implementation of having an 8-bit data bus, but that argument broke
    down with the 8088 and 68008.

    * I am not that familiar with the old character-oriented
    architectures, such as the IBM 702; they apparently are not
    described as N-bit machines for any N, so we probably don't need to
    assign such a label to them nowadays.

    I am not familiar with IBM 702, but IBM 1401 is in a sense more
    "interesting"

    - core is read in 7 bit units (8 bit if you count parity which
    in only used for error checking). 6 bits are data bit, one
    is "word mark" playing important role in the architecture.
    - there is single 6 bit data register, capable of holding a
    single character.
    - arithmetic is done on 4-bit BCD digits. IIRC usually non-digit
    characters in arithmetic are errors, but sometimes have spacial
    meaning.
    - there are 2 address register, each 3 characters long. Similarly
    3 memory locations each 3 characters long _may_ be designated
    as "index registers" (that was separately charged feature).
    Of course there is also program counter.
    - instructions primary effect is on memory where they operate
    on variable length "words" usually delimited by "word marks".
    I do not remember is data register is programmer visible, but
    address registes are visible.
    - instructions have variable length, from 1 to 8 characters.
    Normally end of instructions is signalled by "word mark".
    - actual memory addresses are decimal up 16000 - 1, but use
    funky encoding. Two bits are used to specify "index register".

    There are later models which can use longer addreses and change
    address length.

    There was also Honeywell 200 which borrowed several parts of
    1401 architecture, but added one more mark bit and switched to
    purely binary addressing. IIRC Honeywell 200 cound be switched
    between 2 character (12 bit), 3 character and 4 character
    addresses. The last two version used 3 bit to choose index
    register.

    There were several other low-end "commercial" machines with
    more or less strange arrangements. One of Polish machines
    used 16-bit core words and 16-bit instructions, had some
    16-bit registers, but also 16-digit "accumulator" working
    in BCD encoding. So one could view it as 16-bit machine
    or 16-digit machine (but decimal arithmetic could use
    varying length, 16 digit was max of what hardware could
    do directly).

    * There were also fixed-word-length machines that were not binary,
    such as the IBM 7070. Memory is described as consisting of words,
    so criterion 1 can be applied, except that it's not N-bit, but
    N-digit.

    Anything else?

    BTW, note that these are architectural (i.e., instruction-set-related) criteria; an implementation can implement several instruction sets.
    E.g., I can run programs for the 16-bit 8086 architecture, for the
    32-bit IA-32 architecture and for the 64-bit AMD64 architecture on,
    e.g., the recent AMD Ryzen 9 9950X and the Intel Core Ultra 9 285K.

    Everyone agreed that all the models of S/360 were 32 bit machines, but the >>implementations ranged from 8 bits for the /25 and /30 to 64 bits for
    the /75.

    This sentence is contradictory. All these implementations have 32-bit general-purpose registers (otherwise they would not be S/360 implementations), which are address registers, and are therefore
    32-bit architectures by your and my criteria.

    You obviously mean something different about these implementations.
    What is it?

    IIUC from hardware point of view 360/20, 360/25 and corresponding
    model in 370 family were micros with rathere short word which
    IBM equipped with emulation program which emulated 360 instruction
    set. I do not remember exact details for each of them, but at
    least one executed emulation program ("microcode") from the same
    16-bit physical core are "360 memory". 360 architectural registers
    were just locations in core. IIUC running programs on real
    hardware was unsupported by IBM, but nothing technically stopped
    customers from doing this. A research team created experimental
    Fortran compiler targeting the hardware and they reported that
    programs compiled by their Fortran run 45 times faster than
    IBM Fortran compiling to 360 instruction set which was then
    interpreted by "microcode".

    360/30 had 8-bit date bus and mixture of 8 and 16-bit registers.
    Here microcode was stored in capacitove read-only memory, had
    longish words (something like 60-bits) and microcode memory
    access was 5 times faster than core access time. Again,
    360 architectural registers were stored in core memory (some
    IBM models had faster "local core", I do not remember if
    360/30 stored registers in "local core" or main core).

    In 360/30 microcode memory was read-only, so unlike 2x models
    was not usable to load programs or store data, but at least
    in principle could be changed by users. Namely, capacitive
    memory used flat foil capacitors, with data correspondig
    to pattern on conductive fields on the foil. Simple tools
    allowed to remove fields form "full" (or if you prefer "blank")
    foil and in this way program desired content.

    So, main difference between 2x models and modern machine
    running an emulator (like Hercules) was that IBM said that
    360 instruction set was "native" on 2x models (but 1401
    mode was as native as 360 mode, one simply loaded different
    IBM-provided emulation program). If one takes IBM word
    that 2x models hardware implements 360 instruction set
    at face value, then I think one should also take vendor
    claims of "bitness" at face value. If one digs deeper,
    then 2x models are 16 bit (or someting like mixed 16/19
    bit) architecture emulating 32-bit architecture.

    IIUC at that time some people made distinction between
    processor (that is official user-visible thing) and
    microprocessor (actual hardware). First semicondutior
    microprocessors were intended to be microprocessors in
    this sense, that is to be used to implement different
    user visible aspect. In this spirit native architecture
    of many home computers would be BASIC. However, running
    directly on microprocessor gives large performance benefits
    so this was used by lot of sofware and hardware instruction
    set was considerd as native one. The old view lives in
    IBM AS/400 series or whatever IBM calls their successors:
    AFAICS "official" instruction set of those machines is
    implemented by software and actual hardware is quit different
    and may vary.

    --
    Waldek Hebisch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Anton Ertl on Sun Dec 22 21:37:08 2024
    On Fri, 29 Nov 2024 08:03:39 GMT, Anton Ertl wrote:

    ... and AFAIK the RISC-V V extension ...

    RISC-V is not copying the short-vector style of SIMD that has been adopted
    by everybody else. They are reviving the old Seymour Cray long-vector
    idea.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Thomas Koenig on Tue Dec 31 08:54:36 2024
    Thomas Koenig <tkoenig@netcologne.de> writes:

    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:

    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable definition
    for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark
    on the latter).

    To me, the phrase "n-bit architecture" should depend only on such
    characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit
    (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation.

    I'm well aware of that distinction.

    I expect most of the folks who participate in comp.arch are
    aware of the distinction. What I find disappointing are
    postings that ignore or blur the distinction, so it's hard
    to tell where one domain ends and the other begins.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Tim Rentsch on Wed Jan 1 15:28:29 2025
    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:
    Thomas Koenig <tkoenig@netcologne.de> writes:

    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:

    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable definition
    for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark
    on the latter).

    To me, the phrase "n-bit architecture" should depend only on such
    characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit
    (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation.

    I'm well aware of that distinction.

    I expect most of the folks who participate in comp.arch are
    aware of the distinction. What I find disappointing are
    postings that ignore or blur the distinction, so it's hard
    to tell where one domain ends and the other begins.

    If you find discussions about how certain times were used
    in the past disappointing... well, OK.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Thomas Koenig on Wed Jan 1 17:39:13 2025
    Thomas Koenig <tkoenig@netcologne.de> writes:

    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:

    Thomas Koenig <tkoenig@netcologne.de> writes:

    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:

    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable definition >>>>> for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark
    on the latter).

    To me, the phrase "n-bit architecture" should depend only on such
    characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit
    (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation.

    I'm well aware of that distinction.

    I expect most of the folks who participate in comp.arch are
    aware of the distinction. What I find disappointing are
    postings that ignore or blur the distinction, so it's hard
    to tell where one domain ends and the other begins.

    If you find discussions about how certain times were used
    in the past disappointing... [..]

    That isn't what I said, nor was it what I meant.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Tim Rentsch on Thu Jan 2 09:59:32 2025
    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:
    Thomas Koenig <tkoenig@netcologne.de> writes:

    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:

    Thomas Koenig <tkoenig@netcologne.de> writes:

    Tim Rentsch <tr.17687@z991.linuxsc.com> schrieb:

    Thomas Koenig <tkoenig@netcologne.de> writes:

    I think "ALU can add up to n-bit numbers" is a reasonable definition >>>>>> for an n-bit architecture, which also fits the 16-bit 68000.
    It does not fit the 360/30, or the Nova (but see de Castro's remark >>>>>> on the latter).

    To me, the phrase "n-bit architecture" should depend only on such
    characteristics as are defined by the architecture, and not depend
    on features of a particular implementation. The 360/30 has a 32-bit >>>>> (or is it 64-bit?) architecture, but only an 8-bit implementation.

    If I may add a personal note, it's disappointing that postings in a
    group nominally devoted to computer architecture routinely ignore
    the distinction between architecture and implementation.

    I'm well aware of that distinction.

    I expect most of the folks who participate in comp.arch are
    aware of the distinction. What I find disappointing are
    postings that ignore or blur the distinction, so it's hard
    to tell where one domain ends and the other begins.

    If you find discussions about how certain times were used
    in the past disappointing... [..]

    That isn't what I said, nor was it what I meant.

    If it walks like a duck...

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)