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.

41 of 180 comments (clear)

  1. Virtualisation dates from the 1960's ! by Eunuchswear · · Score: 5, Informative

    The first large scale availability of virtualisation was with the IBM 370 series, dating from June 30, 1970, but it had been available on some other machines in the 1960's.

    So the idea that "newer machines have support for virtualisation" is a bit old.

    --
    Watch this Heartland Institute video
    1. Re:Virtualisation dates from the 1960's ! by Eunuchswear · · Score: 2

      but historically only available on IBM systems that leased for the GDP of a small nation state...

      Apart from virtualisation not much has been pioneered by IBM.

      And we used to joke back in the day that the reason IBM were so keen on virtualisation was that they couldn't write a multi-user operating system, so they worked out how to let each user run his own copy of a single user operating system.

      --
      Watch this Heartland Institute video
    2. Re:Virtualisation dates from the 1960's ! by bws111 · · Score: 2

      Riiight. Other than minor little things like:

      System architecture being independant of machine implementation
      8 bit bytes
      32 bit words
      Byte addressable memory
      Standard IO connections

      And that is just stuff from the 360 family, 50 years ago.

    3. Re:Virtualisation dates from the 1960's ! by sjames · · Score: 2

      Yes, but he is clearly writing for people who grew up professionally with the x86.

      In the PC world, efficient virtualization is a new thing even though mainframes had it long ago.

  2. 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.
  3. Easily my favorite modern features by PhrostyMcByte · · Score: 4, Informative

    The latest generation of CPUs have instructions to support transactional memory.

    Near future CPUs will have a SIMD instruction set taken right out of GPUs where you can conditionally execute without branching.

    1. Re:Easily my favorite modern features by Misagon · · Score: 2

      Yes, but instead of having a status register, you compare each item in one vector with each vector in another and get the results as a vector of booleans.
      Then execute a SIMD instruction, where each component scalar operation is conditional according to each corresponding boolean.

      Or, you could convert that vector of booleans into something else. For instance, you could count the number of leading 1's in the vector and store into a scalar, which would allow you implement operations such as strlen() or strcmp() with vectors.
      (It is a bit like programming in APL, if you have tried it)

      These types of operations have hitherto mostly been done by DSPs.
      An architecture for general-purpose computing under development that would do this well is The Mill. Mind you, it is very interesting in other ways. There is a lot of stuff about it on the web site, and good talks about various features on Youtube.

      --
      "We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
    2. Re:Easily my favorite modern features by Darinbob · · Score: 2

      A lot of systems are going with a traditional general purpose CPU for the control system, but DSP CPUs for the hard core or time critical calculations. DSPs already have a lot of SIMD features.

      What's interesting is that DSPs are also adding more and more general purpose capabilities.

  4. Re:You are still wrong by Anonymous Coward · · Score: 4, Informative

    The IBM 360/370 line and its successors have had decimal arithmetic (in addition to binary and after the 370/158 floating point) since the 1960/70s. Others have had these also.

  5. Cooking by morgauxo · · Score: 4, Funny

    There was a period in the 0s when PC processors were good for cooking eggs. You had to be careful with the AMD ones though, they had a tendency to burn the egg quickly.

    1. Re:Cooking by Anonymous Coward · · Score: 2, Funny

      Since then, we have offloaded that task to the graphics card, thereby freeing up the main CPU for hash browns.

    2. Re:Cooking by jellomizer · · Score: 4, Informative

      That was during the Mega/Gigahertz war, during the Golden Age of the Desktop.

      Power Usage wasn't an issue. Heating wasn't much of an issue as you can fit big honking liquid cooled heat sinks to your CPUs. We had these big upgradable towers which gave us room to fill with stuff.

      So we had hotter CPU's because we wanted the faster clock speed.

      What happened? Well first 3ghz kinda became the max you can go, and we moved to more parallel systems. (Multi-Core CPU's, and GPU), and we wanted more portable devices. Laptops became far more popular then smartphone and tablets. So power usages, size, and heat became a bigger issue.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    3. Re:Cooking by operator_error · · Score: 2

      Why did you call that person Shirley?

  6. Re:1980s? by Opie812 · · Score: 5, Funny

    Then it's settled. Your edge case must apply to everybody. The article is wrong.

    --
    I'm not a nerd. Nerds are smart.
  7. Yeah, I remember when VMWare first came out... by sirwired · · Score: 5, Informative

    I remember when VMWare first came out, and there was all this amazement about all the cool things you could do with Virtual Machines. Very little mention anywhere that these were things you could do for decades already on mainframes.

    Same thing with I/O offloading (compared to mainframes, x86 and UNIX I/O offload is still quite primitive and rudimentary), DB-based filesystems (MS has been trying to ship one of those for over 20 years now; IBM has been successfully selling one (the AS/400 / iSeries) for 25, built-in encryption features, and a host of other features.

    1. Re:Yeah, I remember when VMWare first came out... by dpilot · · Score: 2

      I remember when the 8086 came out, Intel also brought out the 8087 FPU and the 8089 I/O Processor. The former got bundled into the CPU a few generations later. I don't rememeber details of the 8089, but it seems to have withered away. Nor does Wikipedia say much about it, once you differentiate it from the Hoth Wampa Cave Lego set.

      --
      The living have better things to do than to continue hating the dead.
    2. Re:Yeah, I remember when VMWare first came out... by iggymanz · · Score: 3, Informative

      http://pdf.datasheetcatalog.co...

      It wasn't used in IBM PCs, but was in some other systems such as Apricot PC and the Altos 586

    3. Re:Yeah, I remember when VMWare first came out... by fuzzyfuzzyfungus · · Score: 2

      Aside from the 'ignorance' and 'marketing' effects, it's arguably a testament to the fact that people will forgive a great many sins if the price is right.

      Even considering VMware's periodic moves into 'We still have the x86 virtualization market by the balls, right?' pricing models, being able to do virtualization on practically disposable Dell pizzaboxes looks like a revelation if you've previously been enjoying the pleasure of juggling your PVUs, subcapacity licenses, capped and uncapped LPARs, and similar not-at-all-complex-or-painfully-expensive goodness.

      It's hard to argue with Big Blue's historical priority in most cases(barring certain exceptions when Amdahl played the AMD to IBM's Intel and did something plucky); but their prices sting.

    4. Re:Yeah, I remember when VMWare first came out... by Anonymous Coward · · Score: 2, Interesting

      In the before time, in the long, long ago, Quarterdeck first offered DESQView. I built VMs operating Index BBS on i286 platforms using digiboards.

      Sweet Jesus little has changed in >25 years.

    5. Re:Yeah, I remember when VMWare first came out... by AmiMoJo · · Score: 2

      People were aware that mainframes could do virtualization back then, not least because all the magazine articles about VMWare mentioned it. What was surprising was that a feature previously only available on room sized computers costing as much as your lifetime earnings was now available on cheap commodity hardware.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    6. Re:Yeah, I remember when VMWare first came out... by Richard_at_work · · Score: 5, Funny

      Bugger me, when I first got hold of VMWare as a teenager then heavily into Linux, I went mad. And I mean maaaaaaaaaaaaaaaaaad.

      My home server was a simple affair - 6GB hard disk, 512MB ram.

      So what did I do? Bring up as many Redhat VMs as I could - all with 4MB ram :D It was like a drug, 10 wasn't enough, so I did more. I got to 50 and just knew I had to do 100. I eventually ran out of free ram, but hell, I had more than 100 servers at my disposal!

      What did I do with them? Uhm, nothing. Apart from sshing into a few just because I could.

      *sigh* Thems were the days....

    7. Re:Yeah, I remember when VMWare first came out... by hairyfeet · · Score: 2, Informative

      The reason you don't see much written about the 8089 is it too ended up absorbed, first into the northbridge/southbridge design and now most of the I/O is handled via the CPU/APU as most of the newest chips are SoC designs.

      --
      ACs don't waste your time replying, your posts are never seen by me.
    8. Re:Yeah, I remember when VMWare first came out... by Cajun+Hell · · Score: 2

      when VMWare first came out, and there was all this amazement about all the cool things you could do with Virtual Machines. Very little mention anywhere that these were things you could do for decades already on mainframes.

      This is probably due to the fact that for most values of "you," you don't have a mainframe. So the cool things switched from "things a-few-people-who-aren't-me can do" to "things I can do." That increases relevance.

      --
      "Believe me!" -- Donald Trump
    9. Re:Yeah, I remember when VMWare first came out... by Hognoxious · · Score: 4, Funny

      If it's a proper mainframe you don't have it in your house, you have your house in it.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    10. Re:Yeah, I remember when VMWare first came out... by Dadoo · · Score: 2

      Yeah, most people didn't have a mainframe in their house.

      While it's true that microprocessors never really acquired mainframe I/O, they've had virtual machine support as far back as the 680x0 series, back in the 80s.

      --
      Sit, Ubuntu, sit. Good dog.
    11. Re:Yeah, I remember when VMWare first came out... by tibit · · Score: 2

      Not only do their prices sting, but they suffer heavily from living on their own little island and steadfastly refuse to use standard terminology, and seem to be doing a lot of stuff differently just because they can - not because it makes sense.

      --
      A successful API design takes a mixture of software design and pedagogy.
  8. Re:1980s? by jofas · · Score: 2

    Current 64-bit path/register cpu architechture will satisfy most computing requirements for some time to come. The only real reason to increase data path width is to address more data. Until we have need to address 16 exabytes, 64 bit will remain in favour everywhere because $$$.

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

  10. What happened to my /.? by DahGhostfacedFiddlah · · Score: 5, Funny

    We just had a story about low-level improvements to the BSD kernel, and now we get an article about chip-level features and how compilers use them?

    Is this some sort of pre-April-Fools /. in 2000 joke? Where are my Slashvertisements for gadgets I'll never hear about again? My uninformed blog posts declaring this the "year of Functional Declarative Inverted Programming in YAFadL"? Where the hell are my 3000-word /. editor opinions on the latest movie?

    If this keeps up, this site might start soaking up some of my time instead of simply being a place I check due to old habits.

  11. Slashdot is powered by your submissions by tepples · · Score: 4, Informative

    If you want to see more Slashdot-in-2000 style posts, and you have access to the sort of articles that Slashdot-in-2000 might have posted, Slashdot welcomes your submissions. You could even become a "frequent contributor".

    1. Re:Slashdot is powered by your submissions by Em+Adespoton · · Score: 2

      If you want to see more Slashdot-in-2000 style posts, and you have access to the sort of articles that Slashdot-in-2000 might have posted, Slashdot welcomes your submissions. You could even become a "frequent contributor".

      Um, no. This used to be the case, but the only stories I've submitted that have actually been picked by the editors in the last 5 years have been the "look at this new tech", "look at this glaring mistake" or the political kind. Anything about explaining actual existing tech or showing novel new uses for existing tech has never made it past the editors.

      These days it's extremely easy to become a "frequent submitter" without becoming a contributor at all -- even when you do your own editing, have a reasonable journalistic-style lead-line summary, and multiple sources linked in TFS to back up the lead story.

      As a result, most people don't bother anymore.

    2. Re:Slashdot is powered by your submissions by jones_supa · · Score: 3, Interesting

      As the submitted of this article, I recommend you to continue chucking in the articles that you find interesting. You seem to have 17 articles submitted, of which 6 have been published, which is pretty good actually. There's many factors that decide whether your submission gets the front page or not, so there's no need to be too personal about it. I personally keep submitting articles just for fun. Most of my topics come from Twitter these days, it's a good source to pick up interesting stuff.

  12. 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 Shinobi · · Score: 2

      Let's not forget something as simple as debugging. Someone who understands the hardware and knows Assembler will always have an advantage when it comes to debugging.

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

  13. Re:1980s? by RabidReindeer · · Score: 2

    You are a retarded idiot. The author states right at the beginning of the article that he's focusing on x86. In the (late) 80s, most people had an IBM PC, if they had anything.

    "Most", maybe. But the late 1980s were the heyday of the Macintosh, Amiga and Atari ST.

    Come to think of it, I'm not even sure of "most" outside the business world. The Commodore 64 and Apple computers fit in there somewhere.

  14. Re:L1,2,3,4 Cache? by Bengie · · Score: 4, Informative

    Diminishing returns on cache misses
    Higher latency of larger caches
    Higher latency of more layers of cache
    Poor transistor scaling of fully associate caches or increased rate of false evictions for n-way caches.
    Increased power usage. It's very difficult to turn off part of your cache to save power, but it's very easy to turn off a core
    Not all problems scale well with more cache

    I'm sure there are many other reasons.

  15. Re:Chipset Integration by OrangeTide · · Score: 2

    indeed, the architecture of stream processors is quite a bit different than the general purpose processors we are used to programming. It's kind of exciting that programming stream processors through shaders, openCL, and CUDA has gone mainstream. And for a few hundred dollars a poor college student can afford to build a small system capable of running highly parallel programs. While not equivalent in performance to a super computer, has structural similarities sufficient for experimentation and learning.

    20 years ago I wouldn't have believed that a poor programmer could buy a system that had 1000+ execution engines in it.

    --
    “Common sense is not so common.” — Voltaire
  16. Cray 1 from the 1970s used SIMD by bmajik · · Score: 2

    if you understand scalar assembly, understanding the basic "how" of vector/SIMD programming is conceptually similar

    Actually, if you think back to pre-32bit x86 assembler, where the X registers (AX, BX) were actually addressable as half-registers (AH and AL were the high and low sections of AX), you already understand, to some extent, SIMD

    SIMD just generalizes the idea that a register is very big (e.g. 512 bits), and the same operation is done in parallel to subregions of the register.

    So, for instance, if you have a 512 bit vector register and you want to treat it like 64 separate 8 bit values, you could write code like follows:

    C = A + B

    If C, A, and B are all 512 bit registers, partitioned into 64 8 bit values, logically, the above vector/SIMD code does the below scalar code:

    for (i == 1..64) {
        c[i] = a[i] + b[i]
    }

    If the particular processor you are executing on has 64 parallel 8-bit adders, then the vector code

    C = A + B

    Can run as one internal operation, utilizing all 64 adder units in parallel.

    That's much better than the scalar version above - a loop that executes 64 passes..

    A vector machine could actually be implemented with only 32 adders, and could take 2 internal ops to implement a 64 element vector add... that's still a 32x speedup compared to the scalar, looping version.

    The Cray 1 was an amazing machine. It ran at 80mhz in 1976

    http://en.wikipedia.org/wiki/C...

    According to WP, the only patent on the Cray 1 was for its cooling system...

    --
    My opinions are my own, and do not necessarily represent those of my employer.
  17. Re:1980s? by Darinbob · · Score: 2

    There is some interesting stuff. But it mostly boils down to ways to optimize code. The older chips may have had the idea for something but didn't implement it due to the enormous cost. Sometimes it's handy to have just a couple of instructions to help out rather than add a giant feature; is in having no floating point or multiplication (early RISC machines) but having an instruction to find first or last bit set which makes the software library to do this much faster.

    There are instructions to help out cryptography, which I don't think any computer in the 60s was concerned enough about to devote expensive hardware to it. Instructions to support atomic operations even within a multiprocessor environment is present in many modern CPUs too, whereas in the past if there were multiprocessors there would usually be some round-about way to do this. As processors got more complex with out of order execution and delayed writes, there was a need for instructions to synchronize operations, such as the "EIEIO" instruction on the PowerPC. Possibly some of this was present on early supercomputers but today these are present in mainstream processors.

  18. Re:Is this what they mean by RAM? by Jeremy+Erwin · · Score: 2

    /* this line is misindented */

    Whoa there. He's not composing python. He's writing in a real programming language.