A Custom Form Factor PCIe SSD

In the old days, increasing maximum bandwidth supported by your PATA/SATA interface was always ceremonial at first. Hard drives were rarely quick enough to need more than they were given to begin with, and only after generations of platter density increases would you see transfer rate barriers broken. Then came SSDs.

Not only do solid state drives offer amazingly low access latency, but you can hit amazingly high bandwidth figures by striping accesses across multiple NAND Flash die. A 256GB SSD can be made up of 32 independent NAND die, clustered into 8 discrete packages. A good controller will be able to have reads/writes in flight to over half of those die in parallel. The result is a setup that can quickly exceed the maximum bandwidth that SATA can offer. Today that number is roughly 500MB/s for 6Gbps SATA, which even value consumer SSDs are able to hit without trying too hard. Rather than wait for another rev of the SATA spec, SSD controller makers started eyeing native PCIe based controllers as an alternative.

You can view a traditional SSD controller as having two sides: one that talks to the array of NAND flash, and one that talks to the host system’s SATA controller. The SATA side has been limiting max sequential transfers for a while now at roughly 550MB/s. The SATA interface will talk to the host’s SATA interface, which inevitably sits on a PCIe bus. You can remove the middle man by sticking a native PCIe controller on the SSD controller. With SATA out of the way, you can now easily scale bandwidth by simply adding PCIe lanes. The first generation of consumer PCIe SSDs will use PCIe 2.0, since that’s what’s abundant/inexpensive and power efficient on modern platforms. Each PCIe lane is good for 500MB/s, bidirectional (1GB/s total). Apple’s implementation uses two PCIe 2.0 lanes, for a total of 1GB/s of bandwidth in each direction (2GB/s aggregate).

The move to a PCIe 2.0 x2 interface completely eliminates the host side bottleneck. As I pointed out in my initial look at the new MacBook Air, my review sample’s 256GB SSD had no problems delivering almost 800MB/s in peak sequential reads/writes. Do keep in mind that you’ll likely see slower results on the 128GB drive.

Users have spotted both Samsung and SanDisk based PCIe SSDs in the 2013 MacBook Airs. Thankfully Apple doesn’t occlude the controller maker too much in its drive names. An SM prefix denotes Samsung:

My review sample featured a Samsung controller. There’s very little I know about the new Samsung controller, other than it is a native PCIe solution that still leverages AHCI (this isn't NVMe). Within days of Apple launching the new MBAs, Samsung announced its first consumer PCIe SSD controller: the XP941. I can only assume the XP941 is at least somewhat related to what’s in the new MBA.

The Samsung controller is paired with a 512MB DDR3 DRAM and 8 Samsung 10nm-class (10nm - 20nm process node) MLC NAND devices. 

New PCIe SSD (top) vs. 2012 MBA SATA SSD (bottom) - Courtesy iFixit

Despite moving to PCIe, Apple continues to use its own proprietary form factor and interface for the SSD. This isn’t an M.2 drive. The M.2 spec wasn’t far enough along in time for Apple to use it this generation unfortunately. The overall drive is smaller than the previous design, partially enabled by Samsung’s smaller NAND packages.

Absolutely Insane Battery Life PCIe SSD Performance
Comments Locked

233 Comments

View All Comments

  • sunman42 - Tuesday, June 25, 2013 - link

    "Until OS X Mavericks arrives, you'll have to make sure to pay attention to things like background web browser tabs running Flash from killing your battery life." Or you could just do without Flash, or use Click to Flash, and avoid many very nasty bugs, constant security patches, and battery vampirism. Just, as they say, sayin'.
  • jcbottorff - Tuesday, June 25, 2013 - link

    The use of a 64K TCP window may be a feature not a bug. I say this because there often is a need to minimize latency of small packets, like used for Voip or other streaming media. With a TCP window size of 64K, on a 6 Mbps DSL connection, a packet queue of 64Kb takes about 85 milliseconds to drain. This means if you did a 64K TCP send (which optimally is one request to the NIC, with the NIC doing TCP segmentation), followed by a Voip UDP packet, it could be 85 milliseconds before the Voip packet goes out the DSL modem. If the TCP window were 256K, the latency would climb to 85*4=340 milliseconds, an unacceptable delay for Voip. It is possible to use varying TCP window sizes based on the current mix of network activity. Like for example, if you have a Voip call active and you have a TCP connection to a server on the Internet, over DSL modem, you may want to limit the TCP window size. If you only have a file sharing connection to a server on the local subnet, you can use a large window size. It's a lot more complex than just changing one number, unless you don't care about things like streaming media working correctly. OS designers often have to compromise, such that nobody is totally happy, but nobody is really upset either. I think the real question is how well the OS dynamically adjusts things under varying conditions to always give the most optimal user experience possible.
  • SimonO101 - Tuesday, June 25, 2013 - link

    Can we expect even greater battery life once OS X Mavericks comes online?
  • darwinosx - Tuesday, July 9, 2013 - link

    Yes. But if I said I knew this for sure I might be violating an NDA.
  • trip1ex - Tuesday, June 25, 2013 - link

    Also they should let you sync your MBA to a Mac/PC like an iOS device to help mitigate the 128gb storage in the base model. Or even let you sync to an external drive. I would love an elegant way to offload media particularly.
  • darwinosx - Tuesday, July 9, 2013 - link

    There are MANY ways to do this.
  • niico - Tuesday, June 25, 2013 - link

    I run Windows 8 in a Parallels VM on Mac OS 10.8 - this is my usual setup. If you're looking for a more strenuous battery test I suggest a VM. This often keeps the CPU at 30-50% even when both OS's are idle.

    It is an increasingly common use case - and many users would be interested to see the battery performance, specially on Haswell.
  • ctwise - Monday, July 1, 2013 - link

    I run Windows 7 in VMWare Fusion on OS/X 10.8 as a SQL Server provider for development. I'm not sure if it's a difference between use cases for VMs or a Parallels vs. VMWare, but I rarely see even a single percentage of usage by my Windows VM.
  • Oscarcharliezulu - Wednesday, June 26, 2013 - link

    Good review, usual d$&khead comments from apple haters. I love hardware, all brands and watching it improve, it never gets old. Have recently switched to OSX on a 27" iMac at home for the fun of it and have to say now I'm familiar with it I prefer it to windows. Might switch my work laptop to a MBA, use it rather than my iPad+keyboard that I generally also carry around.
  • akdj - Thursday, June 27, 2013 - link

    Lol...exactly how it started for me...some 8 years ago now. Twenty years on PC (first computer was actually an Apple IIe)--& my wife was graduating with her masters degree. She'd been talking about a friend's MacBook for a few months...for her grad gift, I got her one of the old, plastic white MacBooks...my 8 year old son is still using that computer...in stock form daily!
    That first month...it was hard for me to give it up to her. I loved it. Loved OSx. Within six weeks I'd bought my own 15" MBP. Haven't bought a Windows machine since. For a couple years, I used bootcamp as there were a couple of programs that were only on Windows that I needed. They've since been ported to OSx and I've no need any longer for anything other than OSx
    Kinda bums me out I waited as Long as I did. It's amazing having a house full of computers that NEVER need support!

Log in

Don't have an account? Sign up now