Transmeta Crusoe
en.wikipedia.org
en.wikipedia.org
I also enjoyed discovering that HTTPS didn’t work on Internet Explorer 5.5, jump jets recharged at 10% the expected rate in MechWarrior 2, and a certain modem worked on PCI slots 1 and 3 & didn’t work in PCI slots 2 and 4.
Both of which featured driver models of... not too much system protection.
So applications (especially games) looked a lot more like their console cousins, in that they took advantage of all kinds of weird hacks and did things 1,000 different ways.
As opposed to now, when you have more strict intermediary layers, and software sits on top of more defined interfaces.
So things like "the MechWarrior developer in charge of jump jets decided to base timing off the PCI bus speed" or god knows what, isn't that surprising.
SPARC64 V | 191M transistors | 2001
DEC Alpha 21364 (EV7) | 152M transistors | 2003
SPARC64 V+ | 400M transistors | 2004
Cell | 250M transistors | 2005
POWER6 | 789M transistors | 2007
SPARC64 VI | 540M transistors | 2007
SPARC64 VIIIfx | 760M transistors | 2009
16-core SPARC T3 | 1B transistors | 2010
8-core POWER7 | 1.2B transistors | 2010
Quad-core z196 | 1.4B transistors | 2010
SPARC64 IXfx | 1.87B transistors | 2011
SPARC64 X | 2.99B transistors | 2012
8-core POWER7+ | 2.1B transistors | 2012
Apple A7 | 1B transistors | 2013
12-core POWER8 | 4.2B transistors | 2013
Apple A8 | 2B transistors | 2014
Apple A8X | 3B transistors | 2014
32-core SPARC M7 | 10B transistors | 2015
[insert a crapton of ARM CPUs here]
AWS Graviton2 | 30B transistors | 2019
Cloning other ISAs either from clean room or from licensed designs like ARM seems to be much easier than matching Intel CPUs with a massive breadth of software and less hard specifics at the edges.
The only relevant metric: does it run the applications that customers use.
The Crusoe/Efficeon issues were performance related.
The computer is somewhat sluggish with huge software (like Firefox) and especially software that does JIT-compilation, maybe due to limited size of the "code-morphing" cache. For simple java programs the only way to make them start up timely was to fully disable the JIT-compiler.
But other than that it's a usable x86 machine (and all other laptops I know that are of similar age eventually failed to boot much earlier).
https://youtrack.jetbrains.com/issue/JBR-2310#focus=streamIt...
Read the whole thing... it's a ride. Serious WTFBBQ with a side of potato salad.
Once Apple and/or Intel notices this there will probably be a microcode update. Until then if AWS or some other host fields Ice Lake based server cores you may be able to crash the VM host by starting up a Jetbrains IDE in a VM. LOL
The parent post on Transmeta QA shows that obscure bugs causing wacky edge cases are not that rare. It's a function of the complexity of modern chips, especially the X86 lineage with its crazy variable instruction widths and legacy cruft. You can, I think, still boot 16-bit DOS and Windows 3.1 on them!
ARM is intrinsically less prone to this due to simpler pipelines and less cruft, but ARM64 chips are still pretty complex. Any real world chip that has been around for a while is going to grow some hair on it. ARM has some shag but X86 is hairier than a wizened yak.
RISC-V is clean... for now. But there are no really high performance RV chips.
I wonder though... do they not fuzz chips? How do these things escape QA at a serious experienced house like Intel? I can understand obscure security issues slipping by but an a hard crash?
Did they rule out GPU driver crashes? They said it also occurs in VM, but didn't specify whether they had any guest integrations enabled.
Did you use any specific stress-testing programs, or just tested with regular applications? Something like the LINPACK benchmark is extremely stressful on the CPU and memory system, and is commonly used today for system stability testing.
The issue I remember the most clearly was one that an engineer Simon Barrett discovered: a specific sequence of MMX instructions would cross-talk (and cause the occasional bit to flip) on two perpendicular busses in the pipeline when run at a specific voltage/frequency. It sounds simple enough, but imagine trying to figure that one out.
It's a shame that the would only run signed CMS images - having a laptop you could switch over to running a different architecture would still be a very neat toy.
History is written by the winners and outsiders tend to draw technology conclusions based business outcome, which is unfortunate and lacking in nuance.
Crusoe at the time of the release was far more power efficient than anything Intel had to offer and was a revolution to the notebook market. Intel has officially credited Transmeta's LongRun as the motivation for creating SpeedStep.
Performance of Crusoe ("Fred") fell short of the expectations as the approach assumed a faster VLIW core. CMS was very good, but couldn't compensate for the hardware. Had Transmeta not made terrible business screw-ups, the architecture could perhaps have had the iterations necessary the improve the technology. The third generation ("Tokomak") would have been significantly better and almost happened, except for ... business reasons.
IMhO, the original approach has two flaws:
1. Software based interpretation of cold code leads to a dramatic performance difference that can be nearly impossible to catch up to for some applications. IOW, the difference between worst and best performance is much too big.
2. Out-of-order execution is a much simpler and better way to deal with cache misses. The tricks and efforts that went into the architecture to compensate for the in-order execution were mind-boggling and were part of the reason the core was slower than it should have been.
NVIDIA's Denver improved (fixed?) 1. by added hardware acceleration for Arm decoding.
addendum: there's also the fact that Intel deployed many illegal tactics to block Transmeta from selling to customers. This is another large part of why Transmeta failed. It seems entirely plausible that Intel pressured IBM to drop Transmeta as a customer.
https://archive.computerhistory.org/resources/access/text/20...
But I sort of remembered it wrong. Here he talks about having to switch from IBM but in page 16 he talks about the new lab not being able to make chips for a whole year as being the problem.
"In the end, Transmeta didn't make it, and I'll just say here I think it was not because of the technologies. It actually turned out to be manufacturing problems. We switched fabs. The fab we switched to actually had a problem, and couldn't actually make our chips for a year. We had to prove where the issue was in the fab, and what was happening. They're not happy if I speak too much about those details. But, the technology itself worked fine."
It's complicated enough to resolve things when you're dealing with instructions + hardware execution units.
When that becomes x86 instructions + CMS + native instructions + hardware execution units... it seems a daunting task to hit stability and outlier response targets for the system as a whole.
Using a speculative superscalar OoO would migrate part of the complexity from software to hardware. The major concern cited is usually power, but I don't know how much the renamer + scheduler would add relative to everything else; the hardware already had all the rest: extensive speculation support, branch predictors, large register file, store buffers, etc.
It's a fascinating topic and this isn't the ideal forum. However my point is this: there are very few companies out that that tries something truly new, and when one does and fail in the market there too much "told you so" going around.
Absolutely agreed. And from what I hear, the spirit of Transmeta ended up in a lot of other places (either via cleanroom design of similar tech, personnel working on similar projects, or inspiration).
People are also starting to wake up to the just how underhanded and illegal technology companies will behave to squash their competitors, whereas I think the 00s still had rose tinted glasses about the best technical product winning.
I had forgotten just how short the pipe was (~ 7 stages!). Going OOO would have added at least one stage.
$ lscpu
Architecture: i586
CPU op-mode(s): 32-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Vendor ID: GenuineTMx86
CPU family: 5
Model: 4
Model name: Transmeta(tm) Crusoe(tm) Processor TM5700
Stepping: 3
CPU MHz: 798.025
BogoMIPS: 1596.05
t5510 ~ # longrun -p
LongRun: enabled
LongRun Thermal Extensions (LTX): active
LTX setting: 75% reduction
Current performance window: 0 to 100
Current performance level: 0
LongRun flags: economyIt's one of those companies like General Magic and Symbolics that were complete failures in the marketplace, but are known for their alumni network. Even though the product didn't go anywhere, the tech that went into the product was incredibly impressive, and the engineers that built that tech are top-notch.
And um... I was still just a college student. It was a different world for me.
In a similar space today are these folks who figured out how to built an 8-bit CPU with only 17 TTL chips:
See:
https://hackaday.io/project/165950-cscvon8-an-8-bit-ttl-cpu
This could have been built back in the mid 70s, there was just nobody smart enough to figure it out. It relies on a very simple set of instructions and microcode to implement the instructions of a more capable CPU.
There are plenty of new TTL design like the above that conveniently doesn't work with original constraints.
Despite the reputation for instability / bugs, it was actually rock solid running Debian.
https://tech.slashdot.org/story/03/11/19/2156246/efficient-s...
From another distant memory I remember a story from someone I knew at Transmeta bent over backwards on the Code Morphing Software to get a soft-modem (modem that used the CPU to do some of the work that traditionally would be done in an asic) to work with Crusoe. Sounded like a case of saving $2 on BOM (I'm just making up numbers) in order to get a design win.
Soft-modem story is correct.
Yet I used it nearly daily at school, since it was considered a 'study aid' because I took notes with the included Agilix journal system that came with Windows XP Tablet PC edition...right up until I discovered this thing called OneNote 2003 and well, let's just say that while the TC1000s themselves are in retirement on the shelf, Onenote is here to stay.
All thanks to that funkily-named processor Transmeta Crusoe .
Well, yes. The machine had 256MB RAM, and the Crusoe grabbed 16MB off the top for code morphing. It came to me with WinXP SP2. XP wants 512MB RAM minimum to think about performing. It took 8 minutes to boot, and longer to do anything once up. It did a good job of emulating classic mainframe "death by thrashing" You could get a daughter card to add 128MB RAM, but that wouldn't help in this case. (There was another daughter card for an earlier Fujitsu model that added 256MB, but I couldn't find confirmation it worked in the P2110.)
I treated it as an experiment to see what performance I could coax out of low end hardware without throwing money at it. I swapped in a drive from a failed laptop, repartioned and reformatted, and set it to multi-boot. Win2K Pro SP4 actually ran, more or less, on the P2110, especially after I took everything out of startup that could be removed. I also installed two flavors of Linux - Ubuntu and Puppy, and FreeDOS.
Puppy was designed for low end hardware, and Puppy itself worked well enough. Applications didn't. The speed bump was apparently the IDE4 HD. IDE4 was a BIOS limitation, so swapping in a faster drive wouldn't assist.
Installing Ubuntu was a challenge. Xubuntu downloaded and installed, but performance was snail slow. Posters on the Ubuntu forums said too much Gnome had crept into Xubuntu, and Ubuntu had a steadily increasing idea of what "low end" was. The recommended what I did - DL the Minimal CD and install from it. That would give me a working bare bones CLI installation, and I could use apt-get to pick and choose what else got added. Lubuntu got the nod as desktop GUI, and worked, though it was noting I'd call speedy.
Puppy and Ubuntu were both installed on ext4 file systems, and mounted each other's slices when they booted. I spent some time arranging things so there was one copy of large apps shared between them.
FreeDOS flew. The challenge with it was to get it to boot from grub2. I did, but have no idea which of the fiddles I tried actually made it work.
Ubuntu provided another quirk. A new Ubuntu release came out. This one required PXE. The P2110 didn't have it. Installation proceeded normally, but things went to hell in a bucket when I reboted after install. Lack of PXE made installation of the new kernel fail, and that caused a cascade failure. I had to wipe the Ubuntu FS slice and redo from scratch, carefully stopping at the last release that worked and staying put. A test in the installer to insure that PXE was present before continuing and refusing to upgrade if not would have been nice. I assumed the Ubuntu folks just never imagined someone would try to install on a machine that lacked it.
I got surprise email from a woman in Hong Kong who also had a P2110. She got the 256MB RAM expansion card, it worked, and she was running WinXP with acceptable performance. I tipped my hat in respect, but had retired the P2110. I was an experiment, the experiment was completed, and actual work got done elsewhere.
I still have the machine, but haven't booted it in ages.
Intel bought all the IP in a private auction for about $200k. (I was the other bidder, and hoped to Open Source the EDA tools.) The files were on a single old server, so not sure if anything still exists.
I own the tapeout server (CS22 - quad-CPU Opteron with 64 GB RAM) used by both companies, which I plan to donate to the Computer History Museum.
Transmeta only used AMD servers for some reason, I guess it was because they felt they were in competition with Intel. Kind of like how grocery stores don't want to use AWS because it would "pay the competition" (Amazon owns Whole Foods.)
EDIT: wording & typos
Link: http://www.mcst.ru/files/5ed39a/dd0cd8/50506b/000000/elbrus_...