Slashdot Mirror


Gaining RAM For Free, Through Software

wakaramon writes with a piece from IEEE Spectrum about an experimental approach to squeezing more usable storage out of a device's existing RAM; the researchers were using a Linux-based PDA as their testbed, and claim that their software "effectively gives an embedded system more than twice the memory it had originally — essentially for free." "Although the price of RAM has plummeted fast, the need for memory has expanded faster still. But if you could use data-compression software to control the way embedded systems store information in RAM, and do it in a way that didn't sap performance appreciably, the payoff would be enormous."

26 of 68 comments (clear)

  1. Stack is back by krischik · · Score: 2, Informative

    That's an old idea - using transparent compression to gain more memory...

    1. Re:Stack is back by Alan+Shutko · · Score: 4, Informative

      If you had RTFA, you'd have found that the difference they've made is they've developed a compression scheme that doesn't have the huge performance penalty that old techniques had. (Specifically, they claim "0.2 percent on average and 9.2 percent in the worst case.")

  2. You mean like RAMDoubler by JoeCommodore · · Score: 4, Funny

    The 80s and 90s called - they want their technology back.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
    1. Re:You mean like RAMDoubler by gEvil+(beta) · · Score: 2, Insightful

      The amazing thing is that timothy was well aware of this (from the but-ram-doubler-is-old-news dept), yet he posted it anyways.

      --
      This guy's the limit!
    2. Re:You mean like RAMDoubler by Thelasko · · Score: 5, Funny

      The 80s and 90s called - they want their scam back.

      There, fixed it for ya!

      --
      One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
    3. Re:You mean like RAMDoubler by bograt · · Score: 5, Funny
      Tech Support: "How much RAM do you have in the computer?"
      Customer: "32 megs."
      Tech Support: "Are you using any RAM doubling software?"
      Customer: "Yes."
      Tech Support: "So you have 16 megs of actual, physical RAM?"
      Customer: "No. I have 8 megs. I installed [a RAM expanding product], and that gave me 16. I liked it so much I went out and got [another RAM expanding product]. So now I have 32."

      source

    4. Re:You mean like RAMDoubler by Alsee · · Score: 4, Funny

      The 80s and 90s called - they want their technology back.

      The 80s and 90s called again - they want their joke back.

      -

      --
      - - You can't take something off the Internet! That's like trying to take pee out of a swimming pool.
  3. News? by TheRaven64 · · Score: 5, Informative
    RAMDoubler and other software did this for DOS almost two decades ago. A poor-man's version could be done with Windows 3.x by making a RAMdisk, using DoubleSpace on it, and then putting swap files on it.

    These days, with RAM bandwidth being a major bottleneck, it might actually make a lot of sense if you could do the compression / decompression in hardware between the cache controller and the RAM - you'd get more bandwidth to RAM at the cost of slightly more latency.

    --
    I am TheRaven on Soylent News
    1. Re:News? by LordKronos · · Score: 2, Informative

      It depends on the application.

      If you want a stream of data to come through at a certain rate, and you don't care whether it starts now or 1 second later, just as long as it comes through at that rate, then latency isn't a concern.

      On the other hand, if you want to read something from memory and have it available in a few clock cycles, then latency is a concern.

    2. Re:News? by notthepainter · · Score: 2, Interesting

      These days, with RAM bandwidth being a major bottleneck, it might actually make a lot of sense if you could do the compression / decompression in hardware between the cache controller and the RAM - you'd get more bandwidth to RAM at the cost of slightly more latency.

      When I was at Kodak in the mid 80s we were actively investigating lossless image compression to get by disk speed bottlenecks. Sadly, our lossless algorithms weren't hitting the compression ratios we needed. This was not for consumer products, but rather pre-press shops.

  4. Software patents by tepples · · Score: 3, Interesting
    Perhaps timothy just wanted to set up yet another software patent debate. From page 3 of the article, with my emphasis:

    Translating these gains from the lab bench to the marketplace has not been a trivial undertaking, however. In January 2007 we filed for patents on the process, which we dubbed CRAMES, for Compressed RAM for Embedded Systems.

    I haven't managed to find the patent application yet, but I wonder if Connectix's RAM Doubler product would be considered prior art.

    1. Re:Software patents by Bones3D_mac · · Score: 2, Funny

      I haven't managed to find the patent application yet, but I wonder if Connectix's RAM Doubler product would be considered prior art.

      If not, this probably is...

      --


      8==8 Bones 8==8
  5. SoftRAM by JPLemme · · Score: 2, Insightful

    SoftRAM claimed to do this, but the product didn't do anything except report to the user that it was doing something.

    I didn't realize there were similar products that actually worked; I thought the whole concept was snake oil.

    1. Re:SoftRAM by mr_mischief · · Score: 4, Informative

      Well, it can work -- sort of. You lose CPU cycles to do the compression and decompression. You have to use part of your uncompressed memory to store the compression and decompression routines.

      Not everything compresses very tightly. In the case of lots of audio, video, and still graphics formats you're trying to compress an already compressed format, and decompress it twice for working with it (once from the RAM compression, which barely compressed anything anyway, and once in the viewing or editing package) instead of once.

      The thing is, if you're already tight on memory, using a good portion of it to double what's left may not gain you much. Something like this should cost a lower percentage of memory then on a 1 megabyte or 4 megabyte system, because the compression and decompression itself shouldn't need to be that much bigger than it was ten or twenty years ago.

      The thing is, even if you're getting double the effective RAM, you're still burning all kinds of cycles if you're doing this on the CPU. If you're doing it in the controller, you'd better be able to do it faster than the CPU needs the bits, because memory throughput is already the bottleneck for most applications.

      People put more memory into their machines for better performance. The virtual memory swapping to disk/flash is a problem long solved, after all. For this scheme to be worthwhile, several things have to work out:

      1. The RAM plus the compression scheme must be cheaper than just buying and slotting twice the RAM.
      2. The compression scheme can't raise too much contention for space on the motherboard vs. other components, or it'll drive the price of the device up past the point where the cost of more RAM would.
      3. It has to perform better and faster than swapping to disk or flash, or be a hell of a lot cheaper.
      4. It has to work flawlessly, because it's an extra layer of complexity that slotting double the RAM doesn't bring. If it has a single bug that bites 0.001% of the time, the cost to productivity outweighs the cost of extra RAM.
      5. The compression and decompression has to work faster than the bus transfers the data to and from the CPU, or you're losing the performance of your RAM and might as well use a swap file.
      6. If they patent it and there's a licensing cost, the price drops in RAM will overcome the price disparity this offers over doubling the physical RAM in short order.
  6. Not free by Pvt_Ryan · · Score: 3, Insightful

    Since they patented it and are licensing it, it's not really free is it?

  7. Old tech, with one glaring flaw... by pla · · Score: 2, Interesting

    Lightly compressing RAM to make it appear larger hardly counts as a new idea... I ran a program back on Windows 3.11 that did exactly that - And while it did indeed allow running more things at once without suffering a massive slowdown, It came at the cost of making everything run noticeably (though not unusably, as with swap/pagefile use) slower.

    Memory compression had one major drawback, aside from CPU use (which I suspect we would notice less today, with massively more powerful CPUs which tend to sit at 5-10% load the vast majority of the time)... It makes paging (in the 4k sense, not referring to the pagefile) into an absolute nightmare, and memory fragmentation goes from an intellectual nuissance that only CS majors care about, to a real practical bottleneck in performance. Consider the behavior of a typical program - Allocate a few megs on startup and zero it out - That compresses down to nothing. Now start filling in that space, and your compression drops from 99.9% down to potentially 0%.

    Personally, I think it could work as an optional (to programs) OS-level alternative to memory allocation... The programmer can choose to use slightly slower compressed memory where appropriate (loading 200MB of textual customer data, for example), or full-speed uncompressed memory by default (stack frames, hash tables, digital photos, etc).

  8. Fools, download more! by Spatial · · Score: 2, Funny
    1. Re:Fools, download more! by MyLongNickName · · Score: 2, Funny

      I've GOT to show this to our CEO. I will get promoted for sure!

      --
      See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
  9. Actually, that's informative by Moraelin · · Score: 5, Informative

    Actually, I'd rate that informative, rather than funny. I've actually tried a couple of such programs back then, and invariably it was just a fancy way to slow your computer down. (Mildly.)

    Basically, the way it worked was:

    1. Report more RAM to the OS. That's actually what your swap file does too. Virtually any modern processor has _some_ way to pretend it has more memory than physically present, with the extra bytes being in a swap file.

    2. Set aside half the memory as a kind of compressed, virtual (in memory) swap file.

    So at this point, let's say your computer had 4 MB RAM (hey, back then we didn't measure RAM in Gigabytes). So now you'd only have 2 MB of it free as physical memory for your programs, and 2 MB set up as a compressed swap file. But your OS thought you have 8 MB, with 2 MB being the free RAM left and 6 MB of it being swap space.

    3. However, you typically still wanted some actual swap space, because you don't know, and can't guarantee, how well that swap space compresses. If you swap out, say, a table of random numbers, you may not be able to compress at all. Funky things can happen when the OS thinks it has room to swap a page out, but it turns out that it doesn't fit there. The actual HDD swap file would be, at the very least, the safety net to catch whatever doesn't fit into that RAM buffer.

    Now the thing is:

    A. That virtual compressed swap space was typically faster than HDD (we didn't have 15,000 RPM drives with huge caches, back then), but, here's the important part, _much_ slower than just plain old free RAM. ("Free" as in "available to the OS as it is.") Even the page fault itself, never mind the compression, was _much_ slower than the few cycles required to just read a memory page.

    Compression didn't make it much better. Almost any decent compression algorithm is fast when deconpressing, but slow when compressing. When handling a page fault in that context, you had to do both. Compress the page you want swapped out, and decompress the page you want swapped in. Not only that took time, but it was CPU time. Unlike IO time, which happens on DMA in an ideal world, and lets your CPU schedule some other task in that time.

    B. However, now you had less free RAM _and_ were encouraged to load more into it. If you had 5 MB of memory in use on the above described computer, without RamDoubling scams, you'd have 4 MB of physical memory in use and 1 MB swapped to disk. With such a RamDoubling scheme, you had 2 MB in actual normal RAM, and 3 MB swapped out.

    In almost all cases, the "ram doubling" inherently increased the number of pages swapped in and out per second. In some cases, dramatically. (E.g., Java's GC didn't play nice at all with swapping anyway. It already tended to push everything else out. Play with it in even less space, and things could get funny.)

    So a lot of the time, sometimes even most of the time, all you'd get for your efforts was slowing your computer down. And a useless number telling you "now you have 8 MB RAM!!!!11oneeleventeen", but not what the cost there is, or even what it really means.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Actually, that's informative by tlhIngan · · Score: 3, Informative

      I've briefly tried RamDoubler on Windows, but on MacOS, RamDoubler actually was very effective. On Windows, I didn't seem to notice much of a difference, but on MacOS, it was essential.

      The reason is that MacOS's memory manager, to be honest, sucked. The basis of the memory management scheme was "Minimum Memory"/"Preferred Memory" - the OS will check RAM free, and if it was greater than minimum, would start the app. If not, it wouldn't. If there was more RAM free than Preferred, it would give the app that amount, if not, it would give it somewhere in-between. Mac apps were responsible for monitoring how much RAM was free, and to not do operations when they were running low. Problem is, if you have a big document, or big dataset (email inbox, say), the "minimum" wasn't often enough, and enlarging both was a task that was necessary.

      So now you have the problem in MacOS - if you set it too big, you can't launch the app when you need it. If you set it too small, it crashed or error'd out. Too big and the app does't need it, and it becomes wasted.

      Using swap wasn't always an option, for it inevitably made MacOS slower, so many people ran MacOS without swap.

      What RAMDoubler did, effectively, was manage this more effectively. It first created a swapfile as big as RAM (so it can "double" it if things went badly), then managed the free space more effectively - if an app wasn't using the RAM it was allocated, RD would reclaim it as its buffers to compress unused pages. It worked remarkably well - if you kept the app's "minimum" and "preferred" sizes to under the physical memory size, it had a very small impact on system performance (much less than MacOS' swapfile). You only got thrashing when you tried to use an app that had it's memory allocations higher than physical memory.

      In the end, the general recommendations was that the tool was to let you keep more apps running at once, rather than let you launch apps with less physical RAM than you actually had. In that regard, it actually succeeded fairly well, but only because the general awfulness of the MacOS memory model. Not entirely MacOS' fault, for it ran on systems without an MMU.

      Windows 3.1 (protected mode), I'm not so sure if it had that great of an effect - sure the Windows memory manager was horrible, but RD on Windows didn't actually improve matters much.

      MacOS though, it was needed. There was even a hack that you could apply to it to change the multiplier it used, so you could use it for boasting. Of course, it used more disk space as swapfile and caused more slowdowns, but still an improvement. Its life ended shortly after Apple moved to the PowerPC chips, where to the surprise of most people, you wanted to turn ON the swapfile on MacOS if you had a PowerPC machine - the system ran markedly faster (but only if the swapfile was between a certain range of values). RD worked (I believe it was available as a fat binary), but it didn't accomplsh much over what PowerPC MacOS could do, and the benefit wasn't worth the cost.

  10. I remember that... by famebait · · Score: 2, Funny

    You just use a hole punch on your page file, and you can write to it from the other side!

    --
    sudo ergo sum
  11. Re:IBM MXT by TheRaven64 · · Score: 2, Interesting
    Doing it in software adds a lot of latency to memory accesses, which can make things significantly slower. My PhD was involved in techniques for more accurately handling swapping, and with the algorithms I was using as a case study (some fairly memory-intensive rendering techniques) I got around a 20% overall speedup by improving cache hit rate by under 1%. Taking this the other way, increasing memory latency by a small percentage can have a much larger percentage impact on overall performance.

    If you do it in hardware, and have the data decompressed or compressed between the cache controller and the memory controller then it might work better - you'd gain a bit of latency, but you'd get more throughput (because you'd need less bandwidth to transmit the same amount of uncompressed data between CPU and RAM) which might make up for it in a lot of cases, particularly on chips with SMT support.

    The biggest problem I see with doing it in software is that, for it not to be horrendously slow, you need to keep the compression code (and data) in cache at all times. This means that you are reducing the amount of cache available to all other programs, which means you are going to be fetching data from RAM more often, which eliminates much of the use for this.

    --
    I am TheRaven on Soylent News
  12. Stack is back indeed by DrYak · · Score: 5, Informative

    >If you had RTFA, you'd have found that the difference they've made is they've developed a compression scheme that doesn't have the huge performance penalty that old techniques had.

    Back then, the real Stack (not Microsoft's poorly implemented and unstable clone) didn't have a huge impact on the performance either, as it used a big cache and had significantly less amount of data to transfer from/to a harddisk which back then didn't shine bandwidth-wise.

    The reason stack died isn't the preformance hit. The reason stack died is a combination of :
    - Microsoft managing to instill paranoia about RT-compression thank to their double-crap
    - huge drops in storage price wich made on-the-fly compression irrelevant
    - newer data formats which are hard to compress any way (Stack could be efficient back then when most graphics where RLE-encoded bitmaps. Now that everything is stored as JPEGs and MP3, there's not much an additional layer of compression could do).

    Ultra-fast compression algorithms like LZO aren't something new, and could easily be implemented in a hardware chip for even faster performance.

    Such compression *could* have been useful a decade ago, when PDAs still had limited memory and did cost a lot.
    Now, with the price drops of memory and the increased popularity of solid state memory (micro-SD have just insane capacity these days), it hard to be short on memory even on embed device.

    So it's nice that they have gone through all the technical difficulties to have real-time compression at RAM-level of bandwith.
    But they developed it a decade too late to have any marketable product.

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:Stack is back indeed by TubeSteak · · Score: 2, Informative

      Such compression *could* have been useful a decade ago, when PDAs still had limited memory and did cost a lot.

      "Limited memory" is relative to the number of programs I want to be running.

      Now, with the price drops of memory and the increased popularity of solid state memory (micro-SD have just insane capacity these days), it hard to be short on memory even on embed device.

      1. memory aka RAM uses electricity, which is an issue in portable devices
      2. micro-SD is not RAM, making it irrelevant to the discussion.

      But they developed it a decade too late to have any marketable product.

      Did you RTFA?
      They've already licensed it to NEC for commercial use.

      --
      [Fuck Beta]
      o0t!
  13. Embedded Systems Only by Anonymous Coward · · Score: 2, Insightful

    It appears that the key phrase here is "embedded systems".
    FTA, they appear to be making use of the regularity of certain patterns of data found commonly in embedded systems, and tailoring their compression algorithm to it.

    I'm not sure that it is really a great feat to engineer a special-purpose compression algorithm that out-performs general-purpose algorithms.

    1. Re:Embedded Systems Only by Impy+the+Impiuos+Imp · · Score: 3, Insightful

      Notice 99% of the posts ignore that crucial word.

      In the larger context around this issue, "embedded" means "mass produced" means "tremendous pressure to reduce per-unit costs" means "cheaper parts, plzzz!" means "32k chip is much better than 64k chip".

      So that's what's going on here. It's not about the $3000 car super-radio. It's about the millions of $14-at-cost standard basic installed AM/FM radios. Or processing units in a handheld computer, watch, or game, etc. Or whatever.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.