Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

CAR is a gem. It's great for lite OSes in hostile envs.


Funny enough, a modern CPU doing CAR still has more memory than a PC from the 1980s. Presuming you statically recompiled them, you could run entire SNES games from a modern CPU’s cache!

(And that being said, now I’m wondering whether you could force eviction and retainment into L3 cache on demand, to achieve something like memory bank switching…)


SNES games? You could comfortably run Windows 95 within the L3 cache on many recent Intel processors (the one in my 2019-era MBP has 16 MB of L3 onboard; current generation processors go even bigger and Windows 95 only needs 4 MB).

It's not really clear to me from the limited bits of info that I've read whether or not L3 is guaranteed to be accessible when doing CAR, but, if it is, you've got enough memory available to do a lot of stuff. (And even the L2 cache is starting to get pretty big on the higher-end current-gen chips.)


Well, keep in mind that in the sort of state the computer is in when doing CAR, you don't get to talk to storage devices; nor do you get the benefit of having some kind of ROM on the bus. I know Windows 95 is happy to run from 4MB RAM with access to a hard drive; but how much memory would W95 need for a "bootable live-CD environment" where the disk image must be resident (if compressed) in memory along with all work RAM?

(This is why I compared to the SNES: if you have to map the SNES's RAM and [every bank of] the game's ROM, then you're looking at 4–16MB depending on the game. The SNES is pretty much the newest console whose games would entirely fit, I think.)


I think that the only thing that prevents you from ignoring the memory controller and initializing the rest of x86 board while still remaining in the CAR mode is the sheer ridiculousness of doing that. As for whether you have an memory-mapped ROM available I'm not exactly sure, but the high-level model of what x86 firmware does seems to imply, that the hardware maps an part of SPI Flash at the address range where there was an ROM chip on the 8086/286/386 PCs (the actual address ranges are different).


About 35Mb IMSMR. Win98 could be stripped to around 50Mb without a loss of functionality.

NB L3 is unified most of the time, but but with L2 you still need to distinguish between data/code.


L2 is unified on all CPUs I'm aware of. Only L1 is split between instructions and data.


Guess I got L1/L2 messed up with L3 (don't drink and comment, kids).

But I found out what Itanium 2 did had a split L2 cache.


For a benchmark test for a British computer magazine in about 1996, I hand stripped down an installation of Windows 95 so that it could fit on a mid-1990s SSD: which is to say, a PCI slot device with 16 MB of DRAM which appeared to the computer as a disk drive. So, effectively, a 16 MB SSD. Not gigabytes, megabytes.

So I can say with some authority that it is possible to have a complete running installation of Windows 95 in 16 megs of disk space; however I had to trim it pretty brutally to fit, so, for example, I think it had 2 fonts left, one of which was used for the widgets that display window-close boxes and so on.

The problem was that the object of the exercise was the benchmark how much quicker it was — but there wasn't enough space left to install any applications, and our benchmark tool used real applications. So, although I did several days work and I did get paid for it, the effort was at heart in vain. But in principle yes you could run Windows 95 entirely out of 16 MB of cache memory, and if you had say 32 MB of cache memory it would be no problem at all.


The Ryzen 5800X3D has 96 MB of L3 cache, enough to fit the biggest NeoGeo or N64 games.

The Zen 4-based Genoa-X will have up to 1 GB of L3 cache! You could comfortably fit Windows 95 there...


In fact, the largest POWER9 CPUs have up to 110MB of L3... and Zen 4's L3 apparently maxes out at 384MB(!!).


> Zen 4's L3 apparently maxes out at 384MB(!!).

That's with them holding back and not adding any v-cache. If you stacked an extra 64MB on each of the 12 compute dies, you'd have 1152MB.


Man now I want to see this.


What does hostile mean in this context?


It might be desirable to not trust RAM as other agents who have access to physical memory could be tampering with it.


Any machine you may not have True Control over e.g. outside of JTAG range, in the cloud, runs proprietary software.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: