Slashdot Mirror


The Legacy of CPU Features Since 1980s

jones_supa writes: David Albert asked the following question:

"My mental model of CPUs is stuck in the 1980s: basically boxes that do arithmetic, logic, bit twiddling and shifting, and loading and storing things in memory. I'm vaguely aware of various newer developments like vector instructions (SIMD) and the idea that newer CPUs have support for virtualization (though I have no idea what that means in practice). What cool developments have I been missing? "

An article by Dan Luu answers this question and provides a good overview of various cool tricks modern CPUs can perform. The slightly older presentation Compiler++ by Jim Radigan also gives some insight on how C++ translates to modern instruction sets.

4 of 180 comments (clear)

  1. Re:1980s? by operagost · · Score: 3, Insightful
    Everything the author wrote was accurate, although misleading. He wrote, "In the 80s, you might have used an 8-bit CPU." You also might have used a 16, 24, 32, or 36 bit CPU.

    He wrote, "introduced to x86 since the early 80s include paging / virtual memory, pipelining, and floating point." We know that some platforms had some of these features earlier than x86, but he was speaking to those who had been programming on the x86 platform. Of course, this ignores the x87 math coprocessor, but I digress.

    --

    Gamingmuseum.com: Give your 3D accelerator a rest.
  2. Re:1980s? by operator_error · · Score: 4, Insightful

    I am staying away from your lawn, that's for sure. If my frisbee lands over there, you can keep it; you've earned it.

  3. depends what you're doing by Chirs · · Score: 4, Insightful

    For example, I worked for a decade in the linux kernel and low-level userspace. Assembly definitely needed. I tracked down and fixed a bug in the glibc locking code, and you'd better believe assembly was required for that one. During that time I dealt with assembly for ARM, MIPS, powerpc, and x86, with both 32 and 64-bit flavours of most of those. But even there most of the time you're working in C, with as little as possible in assembly.

    If you're working in the kernel or in really high-performance code then assembly can be useful. If you're working with experimental languages/compilers where the compilers might be flaky, then assembly can be useful. If you're working in Java/PHP/Python/Ruby/C# etc. then assembly is probably not all that useful.

    1. Re:depends what you're doing by StikyPad · · Score: 4, Insightful

      Again, it depends on what they're debugging. If it's a syntax error in a SQL string, then assembly helps not so much.