this post was submitted on 21 Jan 2024
250 points (97.7% liked)
Technology
57472 readers
3689 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related content.
- Be excellent to each another!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, to ask if your bot can be added please contact us.
- Check for duplicates before posting, duplicates may be removed
Approved Bots
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
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.
Would it be faster than loading gigabytes of data from an SSD over NVMe into 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.
I'm familiar with what RAM is for.
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.
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.
Essentially we do. If you run out of RAM, you get pages from disk. You would know this if you ever used Windows ME.