• @Buffalox
    link
    English
    -15
    edit-2
    1 month ago

    Edited for clarity

    ddresses, but addresses are 64-bit

    You are stating the register width, which is irrelevant to the width of the address bus. But that doesn’t make a shred of sense. it’s like claiming a road is 40000 km long around the globe, it’s just not finished, so you can only drive on a few km of it. The registers are 64 bit, but “only” 40 can be used. Enough to address 1 Terabyte of RAM.

    If you want to measure by Address width we don’t have a single 64 bit CPU, because there doesn’t exist a 64 bit CPU that has a 64 bit Address bus.

    • @[email protected]
      link
      fedilink
      English
      211 month ago

      no CPU has ever been called by the width of the address bus EVER.

      Yes they have, and that’s what the vast majority of people mean when they say a CPU is 32-bit or 64-bit. It was especially important in the transition from 32-bit to 64-bit because of all the SW changes that needed to be made to support 64-bit addresses. It was a huge thing in the early 2000s, and that is where the nomenclature comes from.

      Before that big switch, it was a bit more marketing than anything else and frequently referred to the size of the data the CPU operated on. But during and after that switch, it shifted to address sizes, and instructions (not including the data) are also 64-bit. The main difference w/ AVX vs a “normal” instruction is the size of the registers used, which can be up to 512-bit, vs a “normal” 64-bit register. But the instruction remains 64-bit, at least as far as the rest of the system is concerned.

      Hence why CPUs are 64-bit, all of the interface between the CPU and the rest of the system is with 64-bit instructions and 64-bit addresses. Whether the CPU does something fancy under the hood w/ more than 64-bits (i.e. registers and parallel processing) is entirely irrelevant, the interface is 64-bit, therefore it’s 64-bit.

      • @Buffalox
        link
        English
        -9
        edit-2
        1 month ago

        yes they have, and that’s what the vast majority of people mean when they say a CPU is 32-bit or 64-bit

        Nobody ever called the purely 8 bit Motorola M6800, MOSTech 6502, Zilog Z80, ot the Intel 8080 16 bit computers for having a 16 bit address bus. They were 8 bit instruction and data bus, and were called 8 bit chips. The purely 16 bit Intel 8086 wasn’t called a 20 bit CPU for having a 20 bit Address bus, it was called a 16 bit CPU for having 16 bit instruction set and databus. Or the Motorola M68000 a 24 bit CPU for having a 24 bit adress bus, it was a 32 bit CPU for having a 32 bit instruction set.

        I have no idea how you are upvoted, because your claim tha CPUs are called by their address bus bit length is decidedly false.
        The most common is to use the DATA-bus or instruction set, and now also the instruction decoder and other things, because the complexity has evolved. But no 64 bit CPU has a 64 bit address bus, because that would be ridiculous.

        Back in the day, it was mostly instruction set, then it became instruction set / DATA-bus. Today it’s way way more complex, and we may call it x86-64, but that’s the instruction set, the modern x86-64 CPU is not 64 bit anymore. They are hybrids of many bit widths.

        Show me just ONE example of a CPU that was called by its address bus.

        https://people.ece.ubc.ca/edc/379.jan2000/lectures/lec2.pdf

        Tell me when 8086 and 8088 were called 20 bit CPU’s!!

        https://www.alldatasheet.com/datasheet-pdf/view/82483/MOTOROLA/MC6800.html

        The 6800 was an 8 bit CPU with 16 bit Adress bus as was the 6502/6510.

        https://en.wikipedia.org/wiki/Motorola_68000

        The 68000 is here correctly called 16/32 because it’a a 16 bit DATAbus and 32 bit instruction set.
        The Address bus is 24 bit, but never has a CPU been called 20 ot 24 bit because of their address bus, despite many 16 bit CPU’s have had address busses of that length.
        Incidentally, the MOS 6510 in the Commodore 64, had an extra 17th address bit, enabling it to use ROM and cartridges together with the 64 KB RAM. It would be absolutely ridiculous to call it either a 16 or 17 bit computer, and by no accepted standard would it be called that.

        • @[email protected]
          link
          fedilink
          English
          31 month ago

          Nobody ever called the purely 8 bit Motorola M6800

          Sure, but that was a long time ago. Lithography marketing also used to make sense when it was actually based on real measurements, but times change.

          All those chips you’re talking about were from >40 years ago. Times change.

          Today it’s way way more complex, and we may call it x86-64, but that’s the instruction set, the modern x86-64 CPU is not 64 bit anymore.

          Sure, yet when someone describes a CPU, we talk about the instruction set, so we talk about 32-bit vs 64-bit instructions. That’s how the terminology works.

          • @Buffalox
            link
            English
            -2
            edit-2
            1 month ago

            we talk about the instruction set, so we talk about 32-bit vs 64-bit instructions. That’s how the terminology works.

            I never denied that, what I denied was the ridiculous idea that Address bus was a meaningful measure. AMD64 is a 64 bit instruction set by definition, but a modern Ryzen CPU is so much more than just AMD64. And the same is true for the competition.
            Originally an AMD64 CPU was single core single threaded. This is far from true today, so obviously since the CPU can handle multiple instructions on multiple cores, the “CPU Package” is also necessarily wider.

            I have no idea what has gone wrong here? I’m not denying that a modern Intel or AMD or Arm CPU generally is called a 64 bit CPU.
            I’m just stating that if they had to be measured by their actual capabilities, a modern Ryzen CPU for instance, is actually closer to being a 256 bit CPU, and that’s per core!. In part due to technologies that make them able to execute several instructions in a single clock cycle, that operate on way wider busses than older CPU’s, that encoded only a single thread per core.

            But there can be absolutely no doubt that Address bus was NEVER used to determine the bit width of a CPU, that would simply be ridiculous, as it ONLY determines addressable RAM and nothing else.

            All those chips you’re talking about were from >40 years ago. Times change.

            Those easy to understand examples were only to show how claiming address bus can be a meaningful measure for the bit width of a CPU is ridiculous.

            Also the AMD64 is only part of the instruction set of a modern Ryzen CPU, so although AMD64 definitely is a 64 bit instruction set, it only describes one part of the CPU. It also supports: x87, MMX, SSE, SSE2, SSE3, SSSE3, SSE4. 1, SSE4. 2, AES, CLMUL, AVX, AVX2, FMA3, CVT16/F16C, ABM, BMI1, BMI2, SHA.
            Many of which have way wider instructions than 64 bit, AVX2 for instance supports 512 bit math.

            • @[email protected]
              link
              fedilink
              English
              11 month ago

              I’m not denying that a modern Intel or AMD or Arm CPU generally is called a 64 bit CPU

              That seems to be exactly what you’re arguing about, unless I have misread this entire thread.

              If we want to highlight other capabilities, we should use different terminology than “X-bit” because that has been pretty much universally agreed upon to refer to instruction sizes and addresses, not data pipelines. And we do that, product spec sheets refer to extensions to point out the unique capabilities they offer (e.g. Intel was pretty famous for supporting AVX-512 almost 10 years before AMD).

              That said, now that 32-bit is essentially dead, the “X-bit” marker is essentially dead, and saying something is 256-bit or whatever today is just going to confuse people. People have gotten into the habit if talking about specific capabilities if it’s relevant (which it isn’t for most people, who just care about “IPC”).

              • @Buffalox
                link
                English
                21 month ago

                the “X-bit” marker is essentially dead,

                That was kind of the point, it’s ridiculous to think a modern CPU hasn’t evolved dramatically since the introduction of mainstream 64 bit in 2003.
                It’s still called 64 bit, but there are so many developments.

                for most people, who just care about “IPC”

                Exactly, and that is achieved by a modern core operating at about 256 bit internally, to achieve faster execution.

                I’m not arguing it’s wrong to call it 64 bit, because there is no “true” bit width to call it. So we might as well still call it 64 bit, because it describes the core instruction set. (not just pointers as was claimed by someone else) My point was just that it doesn’t really describe the dramatic development of the CPU as a whole, and even the individual cores are more complex in hardware, despite the main instruction set remains the same.

        • @tekato
          link
          English
          31 month ago

          I guess you know more about hardware nomenclature Linux kernel developers, because they call modern Intel/AMD and ARM CPUs amd64 and aarch64, respectively.

          • @Buffalox
            link
            English
            -2
            edit-2
            1 month ago

            AMD64 is the name of the instruction set they program to, it has nothing to do with how many bit the CPU is. Obviously the core instruction set is 64 bit, but as I’ve tried to explain, a chips bit width is not realistically determined by instruction set alone anymore.

            Although they are almost identical, the equivalent Intel to AMD64 is called i64.
            AArch64 Is the Arm Architecture family 64, again the instruction set you program for, and not the bit width of the CPU.

            None of those describe the address bus width either. i64 and AMD64 and AARCH64 come will all sorts of different address bus widths, all of which are less than 64 bit wide.

            https://www.tomshardware.com/reviews/processor-cpu-apu-specifications-upgrade,3566-2.html

            Although this is a bit dated, the latest I heard was 48 bit address bus, which would surpass the above from 2013 by a factor of 256.
            Obviously none of these 64 bit architecture CPU’s are called neither 40 or 48 bit.