Conclusion

With drives like the Inland Performance Plus, Phison's E18 controller has kept them in competition for the consumer SSD performance crown. The Inland Performance Plus is an extremely fast drive that sets a few new performance records, but more often it ends up tied or slightly slower than a competing PCIe 4.0 flagship SSD. The difference between this drive and other top PCIe 4.0 drives like the WD Black SN850 would not be noticeable during real-world usage, so the question of which one is fastest is more about bragging rights than tangible benefits.

Phison is the only company already on their second generation of PCIe 4.0 controllers, but they still have some room for improvement. The Inland Performance Plus consistently had high power consumption and poor efficiency during our testing. It's not completely out of line for a high-end drive that needs to prioritize performance over power efficiency, but the bar is being raised by the in-house controllers from several of the major NAND manufacturers. A second round of Phison E18-based products will be coming to market soon using Micron's 176L TLC rather than the current 96L TLC, and that should enable slightly improved performance and power efficiency. It might be enough to bump the new E18 drives into first place on more performance tests, and will definitely help keep this market segment highly competitive.

Our most difficult (and least realistic) tests revealed that the Inland Performance Plus and the Phison E18 controller and firmware also have some difficulties with performance consistency, for random read latency and for write performance where the SLC caching behavior occasionally leaves something to be desired. These aren't serious performance problems, but they are blemishes that we would prefer not to have on top-tier products. Firmware improvements may be able to help these issues, but a lot of the brands selling Phison drives aren't very good about making firmware updates available to end users.

PCIe 4.0 NVMe SSD Prices
May 13, 2021
  480-512 GB 960 GB-1 TB 2 TB
Inland Performance Plus
Phison E18
  $189.99 (19¢/GB) $379.99 (19¢/GB)
Sabrent Rocket 4 Plus
Phison E18
  $199.98 (20¢/GB) $449.15 (22¢/GB)
Mushkin GAMMA
Phison E18
  $259.99 (26¢/GB) $499.99 (25¢/GB)
ADATA XPG Gammix S70
Innogrit IG5236
  $179.99 (18¢/GB) $349.99 (17¢/GB)
Samsung 980 PRO
Samsung Elpis
$119.99 (24¢/GB) $199.99 (20¢/GB) $399.99 (20¢/GB)
Sabrent Rocket 4.0
Phison E16
$89.98 (18¢/GB) $159.98 (16¢/GB) $399.99 (20¢/GB)
WD Black SN850
WD G2
$128.74 (26¢/GB) $199.99 (20¢/GB) $399.99 (20¢/GB)
ADATA XPG Gammix S50 Lite
SM2267 (4ch)
  $139.99 (14¢/GB) $259.99 (13¢/GB)
PCIe 3.0 SSDs:
SK hynix Gold P31 $74.99 (15¢/GB) $134.99 (13¢/GB)  
Samsung 970 EVO Plus $89.99 (18¢/GB) $159.90 (16¢/GB) $299.99 (15¢/GB)
WD Black SN750 $69.99 (14¢/GB) $129.99 (13¢/GB) $309.99 (15¢/GB)

Micro Center's in store only pricing for the Inland Performance Plus makes it the cheapest Phison E18 drive on the market, though Sabrent's more widely available Rocket 4 Plus is only $10 more for the 1TB model. With the exception of the Inland, most of the E18 drives seem to be priced at or above where the other second-wave PCIe 4.0 flagships are. The cheapest of the new PCIe 4.0 flagships is ADATA's Gammix S70 using Innogrit's controller. The older Phison E16 drives with TLC NAND are starting to get harder to find, but some such as the Sabrent Rocket 4.0 are a good mid-point between the latest top of the line drives and mainstream PCIe 3.0 drives.

For consumers with access to Micro Center's in-store pricing, the Inland Performance Plus is a reasonable choice since it's a bit cheaper than the flagships from Samsung and WD—but keep in mind that Micro Center is only offering a three year warranty rather than the usual five. For everyone else who has to deal with the online prices on other brands' Phison E18 drives, going for the WD Black SN850 instead makes more sense, especially for the 2TB models. The WD Black has more consistent performance and substantially less heat output.

However, all of the high-end PCIe 4.0 drives still carry a very steep price premium over even the best PCIe 3.0 drives. Recent increases in retail SSD prices have affected mainstream models more than the premium PCIe 4.0 drives, but the price gap is going to remain pretty wide. Those more mainstream models still provide almost as much real-world performance and a wider range of capacity options. Until a more compelling use case for PCIe 4.0 performance shows up, saving $50-100 by sticking with PCIe 3.0 storage seems like a great way to deal with high prices on other PC components.

Mixed IO Performance and Idle Power Management
Comments Locked

118 Comments

View All Comments

  • GeoffreyA - Thursday, May 20, 2021 - link

    "templates can do some crazy stuff. Looking up SFINAE will quickly take you down the rabbit
    hole"

    I gave it a try and, Great Scott, it's already looking like Mad Hatter territory. Will take a while to decipher all that. Even "using" and "auto" are starting to look puzzling.

    "I always used a few typedef"

    typedefs were a must to combat all those colons and endless right angle brackets.
  • mode_13h - Thursday, May 20, 2021 - link

    > > move-constructors"

    > I suppose those are the counterparts of copy constructors
    > for an object that's about to sink into oblivion.

    This touches on something very interesting about C++, which is that certain operations on objects have well-specified semantics and the compiler is allowed to make substitutions, on that basis. This is very un- C-like, where the compiler only calls the functions you tell it to. Sure, it can optimize *out* some functions, but there's never a case where it just decides to call something different (but semantically equivalent) to what you coded.

    A move constructor (or move assignment) is allowed to assume that the only subsequent operation on the original object is destruction. So, if an existing object owns some heap-allocated memory, it can be transferred to the new object. However, it's not required to do so -- copying the data is also valid. In any case, the original object must be left in some state that still allows its destructor to successfully execute.
  • GeoffreyA - Thursday, May 20, 2021 - link

    "the original object must be left in some state that still allows its destructor to successfully execute"

    I think I'd copy the pointers or handles over and set them to null in the original object. That ought to do it. Let's hope they don't use move constructors when they start "copying" people or things. Might be painful.
  • mode_13h - Friday, May 21, 2021 - link

    > I think I'd copy the pointers or handles over and set them to null in the original object.

    Exactly. Transfer ownership to the new object and set the original to it empty state. That's the typical approach. And, for any data members that have their own move constructors, you invoke those.

    > Let's hope they don't use move constructors when they start "copying" people or things. Might be painful.

    Kind of like the Star Trek "transporter", though. Getting back into the familiar realm of metaphysics, I'd never send myself through one. I believe you'd die and simply create a copy who thinks they're you.
  • GeoffreyA - Sunday, May 23, 2021 - link

    I think so too and don't like the idea of copy + destroy == teleport. The "clone think it's me" motif brings up moral questions. If I were cloned, who is the real me? Certainly, the original; but from the clone's point of view, he's the main fellow and is out to prove it. I suspect cloning hints at a breaking down of our everyday notion of self as unique instance. Three Eiffel Towers aren't a problem but would be a strange sight.

    I feel this whole thing hints at something deeper in reality. Conceivably, "move" might be impossible to implement at some primitive level. Perhaps all moves, in the universe, were implemented as copy + delete (or reassigning pointers). Even the flow of time could have been done this way, constantly copying, with changes, and throwing away the old. Taken further, I reckon that "move" could be a high-level concept; and at some pre-spacetime level, there's no location/locality.
  • mode_13h - Sunday, May 23, 2021 - link

    > I feel this whole thing hints at something deeper in reality

    I'm not qualified to comment on that, but it reminds me of the FSA theory of spacetime.

    Also, reminds me of the recent discovery that quantum leaps aren't instantaneous, as previously thought. I'm pretty sure I didn't even know they were supposed to be instantaneous.
  • GeoffreyA - Sunday, May 23, 2021 - link

    I remember reading about that, not too long ago, and being pleasantly surprised that there was some touch of determinism to it as well. That was a revelation.

    "instantaneous, as previously thought"

    Not too sure about quantum leaps but think that comes from collapse of the wave function, which is supposedly an instantaneous, non-local process. Some interpretations reject collapse though.
  • GeoffreyA - Monday, May 17, 2021 - link

    I am pre-C++11 and out of touch with programming in general, sadly. And this may seem madness but I'm still using VC++ 6.0, during those rare times I touch a bit of code.

    I see C++ as a beautiful, potent language (along with the STL), despite its messiness. Its data abstraction and hiding mechanisms offer real advances over C. But a tincture of the latter's philosophy will add much to any C++ program. And I reckon that templates are where its real power lies. I mean, the idea of some function or iterator knowing nothing about some object, yet being able to operate on it. Some QuickSort could be sorting something it hasn't got a clue about, yet works because the objects defined the comparison operators. I've felt there's something strangely haunting about some of these mechanisms in C++, especially templates and virtual functions, as if they bore some elusive analogy to the mechanisms underlying reality. Who knows?
  • mode_13h - Tuesday, May 18, 2021 - link

    > I'm still using VC++ 6.0

    OMG. Do yourself a favor and check out MS Visual Studio Community Edition.

    https://visualstudio.microsoft.com/vs/community/

    I don't have any experience with it, as I use GCC (and now Clang) directly, but I'm betting you'll never go back to VC++ 6.0, after you try it.

    > I am pre-C++11

    https://en.cppreference.com/w/

    It actually has references for both C and C++. MSDN now has all their C & C++ language + standard library references online, too.

    However, when I want to write something simple, I usually reach for Python. It's not the simple language you could learn in an afternoon, like it was 2 decades ago, but you can quickly pick up enough to be off and running in very little time, indeed.
  • GeoffreyA - Wednesday, May 19, 2021 - link

    Much obliged!

    I actually tried VC++ 2010 some years ago, the Express version. Heard of the Community Edition too, and thought it was just another Express; but looking at it now, I see that's not the case. Who knew MS had got so generous? Well, I'm excited and will certainly give it a try when I can. Hopefully, import or recreate my 6.0 projects. And thanks for that language reference as well. I had always overlooked it and relied on the MSDN docs. It looks good. (Funny enough, I see that C++11 added an array<T, n> class. I remember I wrote my own long ago and the interface turns out to be roughly the same as that one.)

Log in

Don't have an account? Sign up now