CPUs from different worlds (head write-up addendum)
| 5 min read
(Breaking this explanation out into its own post since it got way too lengthy and doesn't exclusively have to do with my swappable heads as much as it does just general tech!)
About CPUs. Bit of background: technically, a processor can only do one thing at a time. CPUs in a computer or phone are typically made up of a group of them, usually referred to as the "processor cores," and beyond that, most computers have methods of doing things (or appearing to do things) simultaneously anyway, obviously, because your computer can do multiple tasks at a time not strictly limited to however many cores your CPU has.
One of these techniques is literally just... adding more processors onto the chip. Dual-core Pentium processors came out in the... well, one of the first quad-core processors was in the 1980s associated with Apple, but public consumer-market commonly started adopting that stuff around the turn of the 2000s? And a lot of PCs now have CPUs with 16 or more cores.
There's also techniques to use a single core or group of cores for an amount of simultaneous tasks greater than the number of cores, called multi-threading - the one I'm most familiar with is one that I used in my exomemories that my industry in those exomemories called "hyperthreading," but this world is different - the closest this-world equivalent to the exact technique is called "temporal multithreading," I'm pretty sure. Apparently "hyperthreading" in this world is some Intel-specific name for a different multithreading method. but. Whatever, haha. It's basically where you have more than one "thread" - streams of operations that need to be done - and you have a control unit that allocates resources appropriately. If thread 1 has to pause to wait for some other data or other process to finish before it can continue, the control unit will put that thread "on hold" and let thread 2 take a turn on the hardware until thread 1 is ready to go again. (Bit oversimplified, but it gets the point across, I think.)
And there was a new upgrade to that which my industry was testing out, which involved a much more sophisticated control unit that had fancier "triaging" implementation - in combination with other components, it could "look ahead" more and accurately estimate future resource allocations much, much further out to avoid what we'd call "collisions" - accidental moments where two or more threads needed the same resource at the same time. (Disclaimer I have no idea if "collision" is what anything similar with a CPU is called this-world - that was just the term my exomemory industry used. I know "collision" is sometimes used in database management in this world to refer to when two different pieces of data are accidentally given the same identifier in a database, though.) My industry also used arrangements of coprocessors - we just called it all processors, that was kind of the standard, but here similar techniques are called "heterogeneous computing," where you have multiple different processor cores of different strengths and tasks get allocated to the smallest processor core that can still complete the task, keeping the bigger cores available for heftier tasks.
There's a couple of other relevant concepts - data-flow architecture being one, and particularly instruction scheduling and compiler optimization. (The thing is, I'm not sure there's one single Thing that is the difference. It kind of seems like there's bits and pieces of the concepts just differently arranged in each respective overall method, I suppose?)
...I haven't found a particularly close this-world equivalent of the triage unit itself, though. Doesn't mean it doesn't exist, I might've just not found it yet - most of what I've found has been different CPU scheduling algorithms, as I mentioned, but the triage unit was not technically an algorithm, it was actually multiple additional physical components added to the CPU chip in combination with algorithms. It was a whole methodology, I suppose, honestly. But I don't know how popular of a method it would be this-world, then, and I wonder if that's in part because this-world computers have to contend with other hardware and software from a whole bunch of different sources with different practices and specifications, while I kind of... I was the head of the industry, it was a lot more cohesive, and that meant that most tech produced was designed and manufactured by a single parent company and was only ever expected to deal with other stuff made by the same company. (There's also the fact that materials and space costs for electronics could be pretty different compared to up here? I guess?)
I really don't know. I just know some aspects of computer multitasking has to be left up to whoever is designing different components, and the variations in components can interfere with each other, so - in this world, technically there's softwares that run better with certain types of multithreading, but not others, and/or may need additional tools, more code, or other considerations during development to make sure it works with (or can even turn off) different types of processing features, and then you've got multiple different manufacturers of CPUs and other components, and... generally it seems like that would introduce a lot of uncertainty and potentially require a lot of additional effort for everything to be fully optimized and cross-compatible that my company in exomemory didn't have to bother with. Eheh.
I'll definitely write something about the economics and philosophy behind that level of technological monopoly, too, eventually, but for now I'm just throwing this up real fast because I have to get ready for a meeting. Voilá!