A few years ago it seemed as if Hybrid Hard Drives were the future. Yet after a bunch of announcements and hope today we find ourselves in a world with two distinct markets: HDDs and SSDs. If you're willing to pay the price premium and limit maximum capacity, today's SSDs are very fast and if you choose well, reliable.

For a desktop PC this isn't a tough choice to make. I've been advocating a setup where you have a SSD for your OS + applications and a separate RAID-1 array of 1TB or larger drives for all of your music, movies and photos.

Notebook users don't usually have a ton of drive bays and thus only have room for a single drive. It's not a lost cause though, if your notebook is your only machine you can get away with an internal SSD + external storage whether in the form of a NAS or just something you attach via USB when you're at your desk.

For the very portable users that don't want to lug around another hard drive, or for those who refuse to pay the high dollar per GB rates that SSDs command, there hasn't really been an option other than mechanical storage.

Today Seagate is attempting to change that with its latest Hybrid HDD: the Momentus XT.

More 918 Spyder than Prius

Simply put a Hybrid HDD is a mechanical drive with some NAND flash on it that is automatically used by the drive to store data for quicker access. A hybrid drive really just attempts to do what my setup of two drives (SSD + HDD) does manually: put small, frequently used data on NAND flash and put larger, less frequently used data on platters.

In theory you get the best of both worlds, the overall capacity of a HDD and (most of the time) the performance of an SSD.

Seagate's Momentus XT starts with a standard 7200PM 2.5" Momentus drive and adds a 32MB buffer, the largest on any 2.5" Momentus drive. Seagate then makes it a hybrid by adding a single 4GB SLC (!) NAND chip on the drive's PCB. Connect a controller to manage what goes into the NAND and we're in business.

Seagate Momentus XT Drive Pricing (MSRP)
  250GB 320GB 500GB
Seagate Momentus XT $113 $132 $156
Seagate Momentus 7200.4 $55 $55 $85
Seagate Momentus 5400.6 $50 $55 $65

The size of the NAND was a shocker to me when I first heard it. I honestly expected something much larger. In the Momentus XT however, the SLC NAND acts exclusively as a read cache - writes never touch the NAND. The drive looks at access patterns over time (most likely via a history table of LBAs and their frequency of access) and pulls some data into the NAND. If a read request comes in for an LBA that is present in the NAND, it's serviced out of the 4GB chip. If the LBA isn't present in the NAND, the data comes from the platters.

If a read request can be serviced out of the NAND, the drive can be spun down which should save power. In practice it's rare that a sequence of reads can entirely be serviced out of NAND. What usually happens is you get a little bit of data out of the NAND and then the drive has to spin up to give you the rest. This can be a bit annoying because you get a drive spinup event in the middle of a data access rather than just before it.

The data in the NAND remains persistent across power cycles, however not formats or defrags. You still have to defragment the drive, but doing so resets the drive's learning back to zero. Defragmenting less often is the only real solution.

It's not a huge problem because the drive learns pretty quickly. By the second time you do anything the Momentus XT is usually a lot faster at the task assuming Seagate's algorithms pull any of the data you're accessing into its on-board NAND.

The chart below shows a comparison of a Western Digital VelociRaptor 600GB, a SandForce SF-1200 based SSD and the Momentus XT in boot times. I simply timed how long it took to boot into Windows 7 from the point the OS began loading to the time I got a cursor on the desktop. After a completed boot I shut down the machine and tried again.

While the first boot takes pretty long on both hard drives, by the second boot the Momentus XT is already noticeably faster than the VelociRaptor. Seagate appears to focus mostly on small, frequently used files and aggressively pulls them into the NAND.

The chart also illustrates a very important point. The SSD's performance is consistent even compared to the first run, while the Momentus XT needs to run through a workload once before it's optimized. This applies to more than just boot time, application loads or any sort of disk access.

Over a short period of time the Momentus XT should get many of the small files you use regularly into its NAND cache but the drive is best optimized for repeatable usage patterns. If you always use the same few applications in the same way the Momentus XT will work very well. I found that it's not very difficult to get data evicted from the NAND cache if you throw a random set of applications/workloads at the drive.

Why a Read Cache?

I've written a lot about the struggles that SSD controllers must deal with to manage writing and re-writing NAND. It's not surprising that Seagate opted to use the NAND on the Momentus XT as a read-only cache. Seagate controls what data gets written to the NAND, which makes block management much simpler. There's never a situation where the drive doesn't know what it needs to keep track of. And by using SLC instead of MLC NAND, Seagate doesn't even have to worry about aggressive wear leveling either. So it's about simplicity, not the perfect hybrid design.

Seagate claims that the 4GB size offered the best balance of price/performance, but I suspect that with more aggressive caching algorithms Seagate could benefit from a larger cache. With more NAND Seagate could also prefetch data into the cache. And eventually, if there is to be a future for hybrid drives, Seagate will have to enable a NAND write cache.

Once you start caching writes as well then you effectively make the jump into the SSD realm in terms of complexity. The read-only design is pretty simple but until we see Seagate enter the consumer SSD space I doubt we'll see a more aggressive hybrid drive.

Note that you shouldn't expect to get the same performance out of the Momentus XT's single NAND device as you would an SSD. Remember that modern SSDs have anywhere between 4 and 10 channels of NAND accessed in parallel to reach their very high transfer rates. A single NAND device isn't going to end up anywhere near as fast. At best the Momentus XT should be able to read from the cache at 20 - 40MB/s depending on the data being accessed and the type of NAND Seagate is using.

The Test - Real World First
POST A COMMENT

120 Comments

View All Comments

  • Toray - Friday, May 28, 2010 - link

    ASUS G Series G73JH-A3 Reply
  • Impulses - Friday, May 28, 2010 - link

    Interesting, Amazon (pre-order) and Newegg (ETA 6/1) listings for these drives are already undercutting the prices Anand posted by a good $20-ish... Newegg lists the 500GB drive at $130 and Amazon is offering pre-orders on the 320GB at like $115. If Seagate maintains that aggressive pricing they could certainly displace the low end SSD market for a while...

    I'm still happy with the X25-V on my netbook but I'm the sort that doesn't mind carrying an external drive on a long trip. You really gotta wonder why hybrid drives like this haven't shown up earlier, from a technical standpoint they seem simpler than any SSD (no need for TRIM, etc.).
    Reply
  • Hrel - Sunday, May 30, 2010 - link

    I'd really like to see you compare two desktop 3.5" drives, 7200rpm 32MB cache drives to this drive. Then stripe RAID them together and compare that RAID to this one drive. Then RAID two of these together and compare it to the two desktop drives in RAID. Basically, I'm gonna set up a striped RAID on my desktop, I wanna know if I'd be better off using two 3.5" all mechanical drives or if I should go for two of these hybrid drives. 1TB is plenty for me. Reply
  • htwingnut - Sunday, May 30, 2010 - link

    Great article and this looks like a winner for any performance laptop. However, it would be good to see a comparison with a 7200RPM drive instead of 5400RPM since anyone considering this would rather see that comparison. At least I would. Would it be worth updating my exsiting Seagate 500GB 7200RPM HDD for one of these? Reply
  • Hauken - Sunday, May 30, 2010 - link

    Hey Anand,

    Great article, thanks!

    I'm going to replace the optical drive in my Macbook Pro with a HDD and am not sure if I should go SSD + Mechanical or get two of these and stripe RAID it?

    How do you think the RAID performance of two Momentus XT would be? That way you'd have 8GB of NAND right, so... a bit more "SSD like" I suspect? The cost for that would be 260 US... not bad for 1TB of fast storage in a laptop...

    Comments from you and others on this would be much appreciated, cheers!
    Reply
  • Rocket321 - Monday, June 07, 2010 - link

    Amazon has the 500gb drives for pre-order $129 free ship.

    I honestly hope these things sell like hot cakes just to send a message to drive makers that INNOVATION is something people want and are willing to pay a little more for. I will seriously consider one of these for my existing laptop, as well as a budget way to get WDVR performance on my desktop.

    Thanks for the great review Anand.
    Reply
  • aneirin - Thursday, July 01, 2010 - link

    And now on Windows 7 Professional 64 bit, my devic e manager sometimes shows only the drive, sometimes shows 2 additional drives (which I am assuming are the cache).

    I am assuming I installed the drive in the wrong way. I KNOW this is not a tech support forum, but since the crowd is pretty knowledgeable, I thought I might ask ... any help is appreciated.

    Regards,

    Nelson I. Reyes
    GTEC LLC
    Reply
  • HipPriest - Monday, August 16, 2010 - link

    I have to disagree with your recommendation of this technology, unless you are constantly rebooting your system you are better off just using the RAM cache. Do people really reboot that much? I typically only need to reboot every couple months (basically for security updates in the kernel). Even my laptops just use sleep mode.

    With only 4GB of read-only cache, you might as well just buy RAM. On the other hand, if they made the flash size large enough that it wasn't affordable to purchase the same amount of RAM, or if they allow write caching, this hybrid technology would be worth while.
    Reply
  • Seedubs - Monday, December 27, 2010 - link

    Umm.. I do! The allure of the faster boot time has caused me to retrofit all of my Mac g5's as well as laptops with sdd tech. I am in recording, so I can tell you with certainty that waiting for the damn rig to reboot with a room of testy people is nerve wracking at best. With audio programs one is always moving from one to the other all the time to get at all of the different attributes in the myriad of different programs. They all quarrel with each other for the rights to the audio hardware, thereby requiring a reboot. Over and over . All day long. Ya I guess you could manually switch the iac buss but that only works half the time.
    This technology is a godsend to artists and engineers like me. If you can afford one( ssd) it will revolutionize your workflow. I currently run a 240 SSD as my native drive. Logic takes up 60 gig. Protools takes it's share and before you know it, you are close to the edge with respect to reserve space. Enter Momentus. This is where all of the rest of my sample libraries are stored. Maybe it's a POS. I will let you know, right after I restart this thing.
    Reply
  • name99 - Saturday, September 11, 2010 - link

    "most likely via a history table of LBAs and their frequency of access"

    I don't think so. If you look at the number of LBs that exist, it is freaking HUGE --- even if you cluster at, say, 4KB clusters, on a 500GB drive you have about 125 million of these and that's still a not insubstantial amount of RAM --- and an array which then has to be ordered dynamically to do anything useful.

    The way I would handle this is to treat the thing like a CPU cache with sets and ways. If we treat it as non-associative, then we have each block of cache (whether a "block" is 512 bytes or 4KB) corresponds to ~128 blocks of disk. The absolute dumbest way to do things is that, for each block, as the block is read, if it's not in the cache it's put in it's appropriate single pre-ordained place --- like a simple-minded 1-way cache.

    But of course that's the dumbest way of doing things. Much better would be to make the cache 4 or 8 way wide, and for each way to store an LRU to MRU ordering (or the various tricks CPU designers have used to fake this), then when a block is read that is not in the cache, we toss the oldest block in the cache and store the newly read block.

    BUT, and this is important, this is STILL not optimal --- it's not optimal for CPUs, and it's not optimal for drives. It is, however, easy to fix in drives, harder in CPUs. The problem is streaming data. With the model described above, any sort of operation that performs a one-time run through a large file (copying/backup, or just watching a movie) is going to replace the entire cache with one-time data. I don't know what the standard ways to deal with this are, but I have an easy solution which is that, associated with each way is a small amount of RAM that stores the most recently seen blockID as a POTENTIAL candidate for the cache. So at any given time, a way contains, say, 4 blocks of good data, plus the ID of the most recent block mapped onto that way which did not hit in the cache. If the next block that does not hit in the cache is the SAME as the potential candidate, we treat that as a verification that we are not streaming, and the on this second read we move the block into the cache.

    You can expand this idea, based on real-world data, to whatever works best. In particular, this scheme as exactly described is potentially fragile in that it requires two successive reads to the same block (within a particular way) without an intervening read elsewhere in the way. So it is good at keeping out streaming data, but potentially also keeps out some re-used data. You can deal with this by having the per-way pool of potential blockIDs be 2, or 3, or N in size --- when the pool is N in size, we can allow up to N-1 reads in that way to intervene between two successive reads to a block, and still catch the block.

    So there is scope for some ingenuity in quite how these systems are designed. If I had to guess, my guess would be that the current system is something like 4-way associative. Not clear if they are using my idea (or some equivalent) to prevent streaming from screwing the system over. The test that should be done, which I don't see in the post, would be to time something like a bunch of app launches, THEN read 4GB sequentially from the disk, time the app launches again, and see if the time has gone down. It would not surprise me if this first round of firmware does little to nothing to prevent streaming pollution --- not least because the existing benchmarks are not testing for it. On the other hand, this also all suggests that there is scope, in time, for much better engineering to figure out the optimal number of ways for the cache, the optimal cache block size, and the optimal strategy to prevent streaming from polluting the cache.
    Reply

Log in

Don't have an account? Sign up now