Computer RAM gets biggest upgrade in 25 years but it may be too little, too late — LPCAMM2 won't stop Apple, Intel and AMD from integrating memory directly on the CPU
LPCAMM2 is a revolution in RAM, but it faces an uphill struggle
Computer RAM gets biggest upgrade in 25 years but it may be too little, too late — LPCAMM2 won't stop Apple, Intel and AMD from integrating memory directly on the CPU::LPCAMM2 is a revolution in RAM, but it faces an uphill struggle
Question: modern systems can mount hundreds of GB or even terabytes of RAM, right? At this point, why not mount non-volatile storage as RAM? Performance should increase since data wouldn't have to be loaded.
What you’re describing is the holy grail of computer memory technology. If we had nonvolatile memory as fast as RAM, we would absolutely be using it instead. Unfortunately even the fastest SSD today would be a significant drop in speed from modern RAM.
RAM is basically the scratch space for the CPU. It doesn’t just contain data loaded from the SSD, it contains the running state of the OS and all applications and is constantly being read from and written to by the CPU. As it is, RAM is already a lot slower than the CPU. Replacing RAM with a standard NVMe SSD would slow a PC down to an unusable crawl.
The idea I'm getting at is, back in the day computer software especially video games came on ROM cartridges, which were little more than a plastic shell around a small circuit board that had a ROM chip or two, maybe a battery backed RAM chip to save game progress if you're Nintendo. This ROM was attached to the same data bus on the CPU as the system's built-in RAM, which meant the CPU could read from it just like RAM. This meant that cartridge-based systems didn't need as much total RAM, because instructions, graphics, audio etc. were read directly from ROM, and it didn't have to load instructions or graphics into memory before executing/displaying them. So no loading screens.
Modern computer SSDs are attached via SATA or at best the PCIe bus, and the CPU has to interact with a controller on the device to get data loaded into memory before it can be executed. Could you attach some non-volatile storage on the same bus with the RAM. Like, the average ATX motherboard has 4 RAM slots, right? Could you mount two sticks of RAM and two sticks of non-volatile storage that exists in the memory address space?
The simple answer your entire query is the fact that PCIe is not the bottleneck. The bus that connects your storage to the CPU is faster than any storage we have these days (ignore sata it doesn't count). There is no innovation to be had with your suggestion, just complexity.
Now, there is something related to your suggestion. Graphics cards are exploring / have explored having storage communicate with them directly because of the latency in loading assets into the CPU then sending them to the GPU. This is where progress is being made on optimizing communication between storage and host.
Google linux swap and ramdisk, also cache systems of modern filesystems like bcache, what you think of was already created one way or another, but you probably trying to say that we shouldn't need to upload data to ram at all, well, data usually compressed or/and encoded so it needs space to uncompress/decode and here's where ram/swap comes into action, also you can compress ram/swap to get more space look up zram zswap, also there's linux kernel patches for ram deduplication, also if you manipulate swappiness you can regulate which data uploads to swap (higher numbers upload to swap unsaved data and data which was on disk already gets uploaded from disk thus saving ram space) all ram optimisations you can think of is already implemented
If you're only loading data to access it once, then yes, but it almost never is the case - some specific programs might do it, but OS definitely caches pretty much everything it can in RAM for subsequent access - Linux, for example, fills unused RAM with cache
From the perspective of a computer engineer SSDs are painfully slow. Waiting for data on disk is slow enough that it is typically done by asking the OS for the data and having the OS schedule another process onto the CPU while it waits. RAM is also slow although not nearly as slow. Ideally you want your data in the L1 cache which is fast enough to minimally stall the CPU. The L2 and L3 caches are slower but larger and more likely to have the data you want. If the caches are empty and you have to read RAM your CPU will either do a lot of speculative execution or more likely stall.
Speculative execution on CPUs is a desperate attempt to deal with the fact that all memory access is slow by just continuing through the code as if you know what is in memory. If the speculative execution is wrong a lot of work gets thrown out (hopefully nothing unsound happens) and the delay is more noticable.
Bluntly an SSD only system would probably be an order of magnitude slower. I'm also not sure switching to a new process (or even thread) to load from SSD would be viable without RAM as it would likely invalidate a lot of cache triggering more loads.