this post was submitted on 23 Jun 2024
276 points (94.5% liked)

Technology

59377 readers
4098 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related content.
  3. Be excellent to each another!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, to ask if your bot can be added please contact us.
  9. Check for duplicates before posting, duplicates may be removed

Approved Bots


founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] jlh@lemmy.jlh.name 4 points 4 months ago (2 children)

Tons of computing is done on x86 these days with 256 bit numbers, and even 512-bit numbers.

[–] pivot_root@lemmy.world 15 points 4 months ago (2 children)

Being pedantic, but...

The amd64 ISA doesn't have native 256-bit integer operations, let alone 512-bit. Those numbers you mention are for SIMD instructions, which is just 8x 32-bit integer operations running at the same time.

[–] barsoap@lemm.ee 3 points 4 months ago

The ISA does include sse2 though which is 128 bit, already more than the pointer width. They also doubled the number of xmm registers compared to 32-bit sse2.

Back in the days using those instructions often gained you nothing as the CPUs didn't come with enough APUs to actually do operations on the whole vector in parallel.

[–] jlh@lemmy.jlh.name 1 points 4 months ago* (last edited 4 months ago)

Ah fair enough, I figured that since the registers are 512 bit, that they'd support 512 bit math.

It does look like you can load/store and do binary operations on 512-bit numbers, at least.

Not much difference between 8x64 and 512 when it comes to integer math, anyways. Add and subtract are completely identical.

[–] tunetardis@lemmy.ca 6 points 4 months ago* (last edited 4 months ago)

You can always combine integer operations in smaller chunks to simulate something that's too big to fit in a register. Python even does this transparently for you, so your integers can be as big as you want.

The fundamental problem that led to requiring 64-bit was when we needed to start addressing more than 4 GB of RAM. It's kind of similar to the problem of the Internet, where 4 billion unique IP addresses falls rather short of what we need. IPv6 has a host of improvements, but the massively improved address space is what gets talked about the most since that's what is desperately needed.

Going back to RAM though, it's sort of interesting that at the lowest levels of accessing memory, it is done in chunks that are larger than 8 bits, and that's been the case for a long time now. CPUs have to provide the illusion that an 8-bit byte is the smallest addressible unit of memory since software would break badly were this not the case, but it's somewhat amusing to me that we still shouldn't really need more than 32 bits to address RAM at the lowest levels even with the 16 GB I have in my laptop right now. I've worked with 32-bit microcontrollers where the byte size is > 8 bits, and yeah, you can have plenty of addressible memory in there if you wanted.