DDRamDisk: RAM disk, a disk based on RAM memory chips
ddramdisk.store
ddramdisk.store
It doesn't perform any better than fast NVMe SSDs for larger, sequential operations. However, it appears to be an order of magnitude faster for the random 1K read/write operations.
It also has infinite durability relative to an SSD, though obviously your data isn't infinitely durable during a power outage scenario. Would be helpful to know how long that battery can keep it backed up.
https://ddramdisk.store/2023/01/19/the-ddr4-pcie-x8-lady-has...
Until the FPGA dies. Consumer-grade arrays are not eternal. Many have lifespans (>5% failure rate) as low as 2-5 years under regular use.
They say: It has a built-in LiPo and stores your data for up to a year.
The hope here is that because this controller uses DRAM, the contents of the drive can truly be erased quickly on command, while leaving other data intact.
One use case for this would be systems where file level encryption is untenable, but data can potentially be recorded that you would like to cryptographically remove. It would also provide plausible deniability for erasure of contents.
We also used a crazy expensive plasma display for the monitor, which turned out to be overkill. But that's a story for another time.
https://www.newegg.ca/gigabyte-gc-ramdisk-others/p/N82E16815...
http://s100computers.com/Hardware%20Folder/SemiDisk/History/...
http://s100computers.com/Hardware%20Folder/Electralogics/His...
The next year I switched to a larger company for summer work (defense contractor) and there wrote a driver for CP/M that talked to a "server" I wrote running on their VAX (via 19.2K serial). It made a large file on the VAX look like a disk to CP/M. We used this arrangement for backup -- copy all the files from the physical hard drive to the remote drive. Again I don't believe I'd seen this done before but it was a fairly obvious extension of the previous ram disk idea.
Unfortunately it turned out the group I worked for got billed by the computer dept for CPU time and I/O on the VAX and my network attached storage scheme ran up a huge bill so had to be abandoned.
Oy! I could have written exactly that. What a coincidence :-) I also wouldn't claim invention. Maybe I heard of it, but I'd say the idea is pretty obvious. We made it possible for Flex to run to programs simultaneously and also do print spooling. (That's when I bought an HP 16C. Great help. Still have it.)
As for me it's a bit before my time. I started out writing device drivers for Microware OS-9 on 68k.
I found out that disk access was the bottleneck of the optimisations. So I used a RAM disk software to create a disk-drive in RAM. It increased the simulation speed by orders of magnitude.
Anyway, the RAMLink was powered but you could also get a battery backup for it (using a sealed lead-acid battery, like a miniature one used in a car). I could move an operating system called GEOS over to the RAMLink and watch it boot in less than 20 seconds, where it usually took 1.5 minutes to read off disks and eventually load. I could then move programs (word processing, graphics creation, terminal programs - you name it) over to the RAMLink and open and use them in 1-2 seconds max.
This is from 1990 technology, running on computers from the mid-80s. RAM Drives/Disks are awesome.
But in general it was not worth the setup hassle and the possible RAM-starving of other server jobs, stuff was generally not urgent.
IIRC it was a 1 or 2U unit with a few small lithium ion batteries inside. Phenomenal unit. It could have been configured as a block device but we used it for hot data in an auto-tiering setup with SSDs and rust in the other tiers.
Loved it to bits. No matter what we threw at it, the network was always our bottleneck.
It would be much better than flash-based solutions, both latency and endurance-wise, probably even over an USB link (3.1 and above speeds are pretty decent, even 3.0 would be enough for basic swap).
Bonus points for a DIMM slot that just accepts any generation (DDR2,3,4, not sure if that would be mechanically possible?). I retired some DDR4 sticks for higher frequency ones, but the 8GB DDR4-2400 stick I have in the drawer would be quite welcome as swap space on the 4GB soldered RAM laptop I am using...
I may have a go at it myself, I don't think the controllers would be too complex if writing a custom kernel driver, and targetting USB speeds.
There are also some interesting electrical engineering problems around driving the bus as you add more SIMMs; probably need multiple CPLD/FPGA memory controllers beyond a certain point. Clocking gets interesting as well. Not impossible, just complicated for an amateur; I know I have problems getting thing to work reliably over 33MHz or so.
Lithium battery strapped to consumer chips - so you can basically ignore the volatility aspect (possibly in exchange for an exciting new fire risk, not sure how professionally built these things are). That might be objectively better than a pci-e ssd, at least in terms of performance (particularly performance over time).
The 256GB version is listed at $280. That's more than enough to buy the fastest 2TB SSDs on the market which will match the performance of this device for most real-world workloads.
Now that SSDs have become so fast, RAM disks really only help with very specific workloads: Anything with a massive number of small writes or anything that needs extreme durability.
These could be useful for certain distributed computing and datacenter applications where constant drive writes would wear out normal SSDs too fast.
For most people, buying the card just to make use of some old DIMMs would cost a lot of money for virtually zero real-world performance gain. Modern NVMe SSDs are very fast and it's rare to find a workload that has extreme levels of random writes.
However it turns out I was way out of date on nvme pricing. So that's awesome, if fairly bad news for this product.
Fastest SSDs are not Samsungs, ADatas, SunDisks or other "household" brands (yes, I know, that Samsung has enterprise models, without names, only with partnumbers, but even these models are not "fastest").
It is special brands, prices for which is not publicly available (or my google-fu is not strong enough).
Everything you buy for $280 will degrade when 75% full, and even sustained linear write will tank after first several tens of gigabytes, when SLC caches will be full. Not to mention random write with small blocks.
Special enterprise SSDs, like DataEngine T2HP, costs much, much more (and don't have 2TB models, looks like it starts from 4TB or even 6TB now, but still it is not like x2 or x3 to $280, it is more like x50).
Do LiFePO4 instead. Nothing is fireproof but those are pretty tame.
The reason LiFePO4 is safer than higher voltage Liion is because it has less energy per volume. But even LiFePO4 can catch fire if punctured.[1] Although often incorrectly claimed to be, LiFePO4 secondary cells are not "intrinsically safe," like NiMH secondary cells are.
This is in addition to the, available since earlier, "Ram-Handler", a filesystem similar to Linux's ramfs, which does not survive reboots.
I have always wanted to use more RAM chips than my CPUs/motherboards would support, put all the swap on RAM chips, probably also load the whole OS&apps system drive into RAM this way (hint for your board: add an SSD it would load from, single-time on turn-on) and only use a persistent storage drive for my actual data files.
Using more RAM instead of HDD/SSD always felt like a thing producing really great return in performance on investment in money as RAM is relatively cheap and really fast. The amount of RAM you were allowed to plug into a PC motherboard always felt like the most annoying limitation.
You could always get motherboards that took more RAM, just not ones that taking your typical gaming CPUs and RGB. Currently there are standard desktop-sized ATX motherboards that take 3TB of DDR5, and ATX boards that take 1TB of DDR4 have existed for years.
The limitations would be the system would need to have a battery backup.
> The amount of RAM you were allowed to plug into a PC motherboard always felt like the most annoying limitation.
(And of course you get a lot better bandwidth and latency than hanging it off some IO attachment)
You could create a RAM disk post-boot and then copy apps into it or use it for a working directory.
But you'll be disappointed to discover that virtually nothing benefits from this compared to a modern SSD. Copying files will be faster, but that's about it.
Operating systems are already very good at caching data to RAM. Modern SSDs are fast enough to not be the bottleneck in most operations, from app loading to common productivity tasks.
Even when we all had slower HDDs in our systems, creating a ram disk wasn't a big enough improvement to warrant creating a ram disk for most tasks. I remember reading a lot of experiments where people made RAM disks to try to speed up their development workflows, only to discover that it made no different because storage wasn't the bottleneck.
In these days of fast SSDs, are there still uses for a RAM disk, beyond extreme niches?
I would personally go with a "normal" RAM disk in this case, but CPUs only have a limited amount of RAM and memory channels available. Complex operations on RAM disks may also increase the load on the CPU which can be a performance downside if you're doing things like compiling large code bases. Coupled with a battery backup, this looks like a pretty neat solution to SSDs for write-heavy operations, assuming you persist the important data periodically on something else (such as a hard drive).
I'd be wary of bit flips running this card, though. Without ECC, bitflips in RAM are just something you should be expecting. Normal RAM doesn't operate with the same data for an entire year, but this semi-permanent setup may be more vulnerable to bitflips.
I know RAID cards will often contain a battery backed RAM cache for file operations in case the power goes out, perhaps this card can be useful for that as well? With ZFS you can set up all kinds of fancy buffering/cacheing and I imagine an SSD write cache would show wear and tear much faster than one of these cards, and you can't exactly hot swap M.2 cards. A couple of cheap gigabytes of persistent write cache may just be the solution some people have been looking for.
C2 Backup agent stores dedup/chunks data by default in ProgramData, which is stored on C:... which is usually a SSD nowadays.
I noticed a 3:4 ratio between written data in local dedup folder vs uploaded data volume on the remote C2 5 TB storage (suscribed a C2 Business).
TBW grew indeed horrifyingly fast on the SSD, and I estimated it would completely wear it in about a year or so, with the 2 TB and growing data to backup with my standard retention scheme.
So I made a 32 GB (16 GB was not enough peak size) lmDisk ramdisk with backup/restore at shutdown/startup (it is featured by lmDisk and quite nicely), mounted in place of the dedup folder, and ran my tasks.
poof, reduced TBW on SSD by 99%.
(4x16 GB DDR4 ECC Reg on my server, so not concerned about memory errors)
Either way, how many terabytes were being written each day? And how much can your drive take? It looks like I could go pay $60 right now for 600TB of endurance, and $35 for 200TB of endurance. If you already have the extra ram than go for it but it doesn't seem like a setup to make on purpose.
Maybe your backup system has far more writes than mine? I have terabytes of backups but the average written for each daily backup is about 10GB.
About 150 TBW endurance on a 250 GB Samsung M.2 NVMe Evo 970+. On paper that is, but since it is the OS SSD with Windows Server 2022 STD (sole DC AD/DHCP/DNS/Hyper-V), in production, I won't take any risk. RAID 1 in this scenario would have changed nothing. On the side, I have 40 TB RAID10 for storage.
So I cancelled the first C2 exec (with C2 encrypt on) when I reached 195 TBW on the SSD. Monitoring the ramdisk use still shows about 3:4 ratio on complete snapshot.
I have about 1 million files on the 2,29 TB data to backup.
I had indeed the RAM sticks available for free, simply had to take them (2x16 GB ) from a decomissioned ML350 Gen9 (which uses DDR4-2133P ECC Reg). It now serves me as a bench, litterally.
SSDs are also consumable, as mentioned in other comments, so RAM disks are perfect for a scratch disk. HDDs can also serve as a scratch disk, but some tasks also appreciate the aforementioned faster transfer speeds and/or lower latency of SSDs or RAM.
Well, anything that doesn't require persistence!
Not niche at all. Using a RAM disk for building C++ applications is one of the oldest and most basic build optimization tricks around. It's specially relevant when using build cache tools like cache, which lead large C++ builds to no longer be CPU bound and become IO bound.
It would be cool to play with a computer with persistent storage at the center, surrounded by a ring of compute, for instance.
And weren't we supposed to have memristors by now? ;)
There is MRAM available with DDR3 interfaces, albeit with a relatively small page size compared to standard DRAM. It's a bit expensive. We'll see if ReRAM ever gets commercialized. There are lots of persistent memory technologies possible, but it takes a lot of money to commercialize such a bleeding edge product. Especially when DRAM keeps getting faster (in bandwidth, not latency) interfaces every few years.
I'd be curious though, if the SM2262EN itself couldn't be replaced by yet another FPGA, and, if so, if the FPGA used for that purpose could be the exact same type as the other four...
If so -- then one could sort of think of that arrangement as sort of like a Tree Data Structure -- that is 2 levels deep...
But what would happen if we could make it 3 or more levels deep?
?
In other words, if we had 4 such boards and we wanted to chain them -- then we'd need another central memory controller (another FPGA ideally) -- to act as the central hub in that hierarchy...
It would be interesting, I think, to think of a future hardware architecture which allows theoretically infinite upscaling via adding more nested sub-levels/sub-components/"sub-trees" (subject to space and power and max signal path lengths and other physical constraints, of course...)
I also like the idea of an FPGA proxy between a memory controller and RAM... (what other possibilities could emerge from this?)
Anyway, an interesting device!
It's just an enormous amount of effort. This already looks like a huge amount of engineering to do for what must be a very niche product.
(What one person considers "effort" -- might very well be considered a relaxing and pleasurable and interesting exercise -- by another...
For example, some people hate Math and consider performing Mathematical operations "effort" -- whereas some people love Math and could spend all day at it(!) -- and find the whole process relaxing and stimulating!
It all depends on a given person's interest or disinterest, their affinity or aversion -- to a given line of endeavor...)
So, define "an enormous amount of effort" ?
How much effort? I do not know precisely, not having done it before. The relevant NVMe specifications add up to about 1000 pages, which is actually less than I expected. I suspect implementing all of that would take a rather long time regardless, and that's just the host-interface protocols. The harder part, I believe, is the implementation of the controller log itself. I intuit this based on the large visible effort the SSD industry has spent on various hardware and firmware improvements over the last decade. I don't have a good way to summarize it. The question is how much of that effort is necessary when using DRAM rather than NAND? Maybe you don't need sophisticated ECC, bad block detecting, block remapping, garbage collecting, etc.
I am pretty confident, however, that the author knows more about it than I do and their conclusion has been that it's worth using an existing SSD controller.
When an off-the-shelf SSD controller (as opposed to an FPGA which is much more auditable) is used for a commercial, mass-market SSD -- whoever is making that SSD -- is also putting the root-of-trust for that SSD user's data -- in the hands of the SSD controller manufacturer...
You sure that that SSD controller manufacturer didn't put a hardware backdoor in that SSD controller? You sure that that SSD controller manufacturer didn't embed a hidden "security processor" in the silicon? You sure that it won't covertly communicate your data over RF and/or near-field signals with other nearby similar "black box" electronic components?
Because I'm not!
I wasn't there when the SSD controller was designed, I wasn't there when the SSD controller was fabricated. Any off-the-shelf existing SSD controller is truly a Black Box to me...
Your argument is one of efficiency and expediency.
That's fine for 99% of the Corporations on the planet who value time and efficiency over doing things the harder, slower, less-profitable -- but more correct and ethical transparent way...
My argument is one of transparency, security, knowledge, "doing the homework" -- and understanding how systems truly work under the hood.
Your argument is correct for 99% of the people and corporations out there who value speed and "time-to-market" -- over all other virtues.
But your argument is not correct for 1% of people, and your argument is not correct for me -- for reasons explained above.
In summation, your argument is not wrong...
You are about 99% correct -- but not 100%...
Sure, I could buy a Tesla (or any completely assembled consumer product for that matter!) -- but then I would never have the satisfaction or the fun (or learning!) of trying to build my own! <g>
... In 2010 some slightly nutty young engineers who heard about that story from the grey beards they worked with at a future very well known company on a very large mysql instance used a monster ramdisk as a single master to achieve a crazy boost in performance. The hard data persistence was achieved via replication to the regular spinning rust slaves. While it worked really well for their application no one ever battle tested bad crashes in production...
... that led to a product around 2013(?)-2014(?) from Violin Memory which combined the ramdisk with if I recall correctly spinning disks to dump the data in case of a power loss. The devices were absolutely amazing but did not create a foot hold in the market. I think they sold a few hundred units total. The product was abandoned in favor of flash arrays
One of the first tech based mistakes I ever made was to convince my parents to switch from Erols(which had decent ping times on online gaming) to AOL (which had horrendously bad ping times) all because I thought I was missing out on the exclusive content that AOL provided. I do recall fun memories living in AOL's walled garden but giving up that ping time was horrendously bad. I once ripped out the phone wire from the jack in extreme frustration (first time tech made me angry lol!)
We eventually switched to Earthlink(and then I think Juno?) once the AOL 1 year contract was up. Excellent ping times but man Erols will always have that spot in my memories.
I miss all the excitement and innovation happening back then. I wish we still had mom and pop stores providing things like internet services. Even startups today don't feel like they could be done as simple "mom n pop" enterprises although im sure there are plenty hiding in places we dont often look.
If you're doing sequential writes, this drive benchmarks slightly slower than the fastest PCIe 4 NVMe drives on the market.
Upcoming PCIe 5 NVMe drives will be significantly faster than this.
This unit is really only helpful for extremely small random writes or if you're doing so much writing that you exhaust the wear capacity of a normal SSD.
I'd love to get my hands on one of these and try out a pxe booted os.
I don't know what loads demand such high persistent throughputs, but that's one place SSDs still can't compete, as performance quickly drops when their DRAM cache fills up.
Still, NVMe drives to up to 10GB/s these days, I think we're close to reaching a point where the PCIe overhead towards these RAM drives will soon make them unable to compete with persistent storage for performance. Preventing wear will be the only reason to go for these RAM drives.
If you want to try to experience the performance of a RAM based PCIe computer, there's very little preventing you from dedicating a portion or RAM to a RAM disk, copying your boot image to that, and running directly from RAM. Several Linux recovery images are built to do exactly that, in fact. If you want to run Windows or something else that doesn't have such functionality out of the box, I imagine using a lightweight Linux VM to bootstrap (and forward) your OS peripherals may solve that problem for you as well.
The price grows when going to server/workstation motherboards / CPUs.
And: What if you already have a 16-slot motherboard fully populated with RAM? You can add a whole another computer with 16 more slots, but that’s quite a bit of iron, and: How best to connect the two? Does there exist an interlink that shunts data between two computers at full PCIe 4.0 x4 speed? Or x8? And how to control processing on the second computer?
I’m sure there are bigger motherboards yet, but afaik it always comes with further components – say, more physical CPU sockets that need to be populated?
There are probably situations where this hardware is the simple way of doing a job.
Also: If the current motherboard already has a unused PCI slot, then it’s kiiiiind of a free return on investment to use that bandwidth. By putting the existing I/O controller to use.
Though, using ordinary RAM and initializing it before use, copying say 128GB is only going to take a few seconds these days.
Why do you think it's a good idea to assemble a whole new computer just because you want more storage?
I wouldn't take a precious M.2 SSD slot on my main machine for 5-year old 1Tb drive, but I'd love to chuck 8 or 10 of them in some enclosure and build a nice performant NAS out of them. Alas, no such thing exists (just now some ARM SBCs are getting M.2 support but only PCIe 3.0 x1).
NVMe M.2 drives can go into PCIe slots with an adapter.
If your motherboard supports bifurcation, you even put 4 x M.2 drives into a single x16 slot: https://www.amazon.com/Adapter-4x32Gbps-Individual-Indicator...
It wouldn't be difficult to find an older server motherboard with bifurcation support that could take 8 x M.2 drives with the right, cheap adapters. You'd have to read the manuals very carefully though.
The limit is the number of PCIe channels. ARM boards rarely have more than a couple lanes. You really need server-grade chips with a lot of I/O.
Or get one of the new cards with a PCIe Switch to connect 21 M.2 drives: https://www.apexstoragedesign.com/apexstoragex21
due to space conecerts at ram, here is my third method of ramfs https://ahmetozer.org/containerized-distro.html
Some examples here: https://egpu.io/best-egpu-buyers-guide/
(M.2-to-PCIe are under “M.2/NGFF” in the table I think.)
Which is only possible if volume is high.
Which is unlikely.
Prices aren't listed. I'd like to see prices. I've always wanted to be able to use older RAM as swap. Or an array of older SD cards as an SSD. Or similar. Never was there a big enough market to make sane products, though.
What they are doing may be very cool, but the language on the page does not inspire as much confidence and a sense of professionalism as it should.
I assume English is not their first language, so it would be good for them to get a good copy editor to fix the weird expressions and grammar errors in the article.
This is in the spirit of constructive criticism, and it matters, because I had a harder time parsing some of their explanation as a result of the language use.
Edit: Explanation of rationale of this comment; Removal of a personal experience
And 2x 2tb NVMS.
That system is rock solid relatively cheap and not worth it to have custom build hardware like this.
What are some good use cases for this?
I'd definitely want the 256 gib version for my OS, if it was in stock.
Since they are apparently so common, can you point me to a solution that gives me 7 GiB/s transfer rate for around that same price?
Of course, getting 256GB of DDR5 or even DDR4 RAM is going to cost quite a lot, and most motherboards probably won't have enough slots for this! Also it would probably be much more expensive!