How many computers are in your computer? (2021)
gwern.net
gwern.net
It had of course its main CPU, the 68000, and its CPU like copper. But it also had a 6502 compatible CPU controlling the keyboard. Then I put a SCSI controller in it that had a Z80 on it. And a 68020 accelerator board. Then I added a Janus PC card (the A2000 had an ISA bus in addition to the native bus and a Janus card let you run x86 PC software in a window on your Amiga desktop) with a 8086. Lastly I added a 286 accelerator to the PC side.
Of course the original 68000 and 8086 were not active, but having 4 processor families in a single box was fun.
Of course, this whole using Turing complete chips or whole CPUs other places than the main CPU is a much older thing. E.g. Commodore designs "borrowed" this from bigger computer systems when they put fully programmable 6502 based computers in their external floppy drives for their 8-bit line (you can load code into the memory of the 1541 floppy drive and execute it)
The number of CPUs took a temporary dip in the PC world for a while with e.g. increasing use of dumb IDE controllers instead of SCSI controllers which at the time often had CPUs/microcontrollers on them. But it didn't take long before the upward trend in number of CPUs resumed.
Yup Gwern mentions it in TFA. I had a Commodore 128 (well I still have it and it's still working!): Z80 chip in addition to the MOS ones (not just the CPU but the soundchip too).
I'd say though that back then none of these chips were added due to committees being infiltrated by three letters agencies or their chinese equivalent with the goal of introducing backdoors.
[1] https://ancientelectronics.wordpress.com/tag/amiga-2000/
GBA is a fascinating system, the main CPU is powerful enough to do some serious work - some games even had pretty decent 3D (check out Colin McRae Rally 2.0); all while remaining simple enough architecturally that you could mostly keep the whole thing mapped out in your head. You get to learn about many modern concepts such as instruction pipelining, caches, etc but it's not as complex as to overwhelm you, and you still get to play with funky quirky stuff like the sound chip, that throws you back into the 1980s. You can also still get them pretty cheap, I paid ~€120 for a GBA SP (AGS-101) with case, dongles & a flash cart, so I can trivially run homebrew stuff on real hardware.
https://en.wikipedia.org/wiki/Game_Boy_Advance; https://duckduckgo.com/?t=ffab&q=colin+mcrae+rally+gba&iax=i...; https://gbadev.org ; https://docs.rs/gba/latest/gba/
The Wii and Wii U go a little further; in addition to the main PPC CPU, there’s an ARM core handling auxiliary tasks (mostly security and I/O related, but it’s also involved in early boot IIRC). That one’s not there for backwards compatibility; it’s purely there as a coprocessor.
The interface was initially used in the development of the Arm processor: https://en.wikipedia.org/wiki/Tube_(BBC_Micro)
* Yes, technically the C64 had a 6510, but that didn't matter in this context
Honorable mention to the MacCharlie, which was a PC in a box that stuck on the side of an original Macintosh and allowed running PC software over a serial connection. (I've heard there was a similar Amiga sidecar for the Commodore, but that's outside of my scope of experience.)
[1] https://bigbookofamigahardware.com/bboah/product.aspx?id=328
The Sidecar plugged into the expansion port which was basically mostly the internal bus just exposed as-is.
The solution, and one that he specifically calls out, is that operating systems people need to work with hardware people to build better hardware and software together to build new computers. We got into this situation because everyone was just solving problems with the tools they readily had available to them. This is obviously easier said than done, but it does make now a very interesting time to work at one of those handful of large companies which produces their own custom SoCs and operating systems (I believe it's Apple, Google, and Microsoft) since you really have to take both operating systems and hardware forward simultaneously to solve the underlying issue.
What I understand - currently there is not even a model of an "operating system" as such that would even consider those secondary processors.
The appropriate model would be exactly the one described in the original article above - explicitly treat the computer as a network of devices, and have the OS on the main CPU acknowledge that it is effectively sending a message to e.g. RAM over a shared network that also contains multiple other devices, potentially untrusted.
Unfortunately I could never find that post again, because all searches for running Linux on HDD return obvious results for using the HDD as an install media, not as the computer.
https://www.reddit.com/r/linux/comments/6059do/how_to_run_li...
which links to this blog post:
[1] http://haxit.blogspot.com.au/2013/08/hacking-transcend-wifi-...
I can't take this beyond a gut feeling, but that gut feeling tells me that separate "computers" are actually a good thing for security.
“Can be” because you have to be intentional about it. As the author implies, it’s easy to build multiple insecure computers, and when you call it “firmware” and hire people with “firmware” experience, this tends to negatively correlate with the security mindset…
[1] https://www.theregister.com/2013/03/04/cpu_inside_apple_vide... [2] https://www.chargerlab.com/two-arm-cpus-are-inside-teardown-...
* Aggregates disparate devices (e.g. PC, smartphone and watch)
* Mentions functional units which could theoretically be treated like a computer (e.g. Turing-complete) - but aren't a computer which acts independently.
* Counts cores as different computers, but - either a core is a computer, or the system with multiple cores is a computer. The computation a multi-core system does is having one of its cores run.
So basically, you'll be told about the on-Mobo chip for controlling its operations, and the Intel Management Engine and the AMD equivalent. Not worth the read IMHO.
A relevant example is this article "Evil never sleeps" https://arxiv.org/abs/2205.06114 about the ability of those "secondary computers" to function without the cooperation of the primary computer, in this case the iPhone where they even work (sometimes maliciously) while the main device is "turned off".