• 🇨🇦 tunetardis@piefed.ca
      link
      fedilink
      English
      arrow-up
      4
      ·
      3 hours ago

      I guess you could say the Cell was as an 8-core CPU (well, 9, if you include the PowerPC in the middle) at a time when such things were unheard of, at least in the consumer space. So the theoretical performance if you could max out all those cores was through the roof. I have no doubt that’s what drew Sony to them for their next gen console.

      But whereas all the cores of a modern 8-core chip can access the same RAM, in the Cell, only the PowerPC could access the main memory and each core had its own dedicated internal RAM, meaning you had to load both code and data into all the cores laboriously yourself using asynchronous DMA requests before executing the code, and then sync the results back using more DMA. It was a bit like GPU programming, I suppose, though within the cores, it felt more like a CPU in terms of the instruction set and what not, so kind of a hybrid approach I guess?

      • Buddahriffic@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        45 minutes ago

        That sounds like something that might have made it easier to emulate, since on x64 the memory management could be simplified. Though that kind of cache control can lead to very high performance if the working set of data fits into that cache that x64 might have trouble keeping up with.

        • 🇨🇦 tunetardis@piefed.ca
          link
          fedilink
          English
          arrow-up
          2
          ·
          5 minutes ago

          Yeah, you know, that’s a good way of looking at it. It’s like each core could only access its own cache memory, and all the syncing to main RAM had to be done painstakingly in software. That would be a hardware function in any modern architecture. I can’t remember how big the caches were. I think they were bigger than a typical L1 at least, but not huge.

          Anyway, it was not too horrible if you were just walking through an array sequentially applying some operation to it, but when you had to jump around memory, it became an absolute nightmare! Uuuugh…it’s all coming back to me now why we got nowhere with it.

          • Buddahriffic@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            3 minutes ago

            That central core must have gotten really busy managing the memory if several cores were each jumping around a lot. Did it have to do other things also or was it just fulfilling memory requests?

      • BlackLaZoR@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        2 hours ago

        Fascinating insight.

        It was a bit like GPU programming,

        Don’t remember where I’ve read this but supposedly SONY wanted it to be part of their geometry engine, but ultimately had to cut down the costs and use Nvidia GPU instead. So maybe that analogy isn’t that far off