The Inland Performance Plus 2TB SSD Review: Phison's E18 NVMe Controller Testedby Billy Tallis on May 13, 2021 8:00 AM EST
Phison kicked off the transition to PCIe 4.0 for storage in 2019, and dominated the high-end SSD market for over a year with the only available PCIe 4.0 solution. There are now several competing PCIe 4.0 NVMe SSDs and controllers that handily outperform the Phison E16, but Phison has stayed competitive by bringing out a second-generation PCIe 4.0 controller, the E18. Today we're looking at one of many drives built around that controller: the Inland Performance Plus 2TB.
The Inland brand is owned by the parent company of American retailer Micro Center. Most or all Inland-branded SSDs are simply Phison reference designs with little or no customization beyond cosmetics. Inland SSDs are frequently great value options—especially for Micro Center's in-store only deals, but even their online prices tend to be very competitive. Part of the discount comes from their tendency toward shorter warranty periods: the Inland Performance Plus has only a three year warranty despite being a high-end flagship model. Fortunately, the total write endurance rating is the same as competing drives that carry five year warranties, and the SSD hardware itself is identical to other brands selling the same SSD reference design under different heatsinks and labels.
As part of the second wave of PCIe 4.0 SSD controllers, the Phison E18 aims to use substantially all of the performance available from the PCIe 4.0 x4 interface: sequential transfers up to around 7.4 GB/s and random IO up to about 1M IOPS. Hitting that level of performance while staying within M.2 power delivery and thermal dissipation limits required migrating to 12nm FinFET fabrication from the cheaper 28nm widely used by PCIe 3.0 SSD controllers and by the Phison E16. But even so, the Phison E18 can draw more power than the E16 controller because the increase in performance is so large. Competition for the Phison E18 includes in-house controllers used in the latest flagship consumer SSDs from Samsung and Western Digital, newcomer Innogrit's IG5236 Rainier controller, and Silicon Motion's upcoming SM2264 controller.
|Phison High-End NVMe SSD Controller Comparsion|
|Manufacturing Process||28 nm||12 nm|
|CPU Cores||2x Cortex R5||3x Cortex R5|
|Error Correction||3rd Gen LDPC||4th Gen LDPC|
|Host Interface||PCIe 3.0 x4||PCIe 4.0 x4|
|NVMe Version||NVMe 1.3||NVMe 1.4|
|Max Capacity||16 TB||16 TB||16 TB|
|Sequential Read||3.4 GB/s||5.0 GB/s||7.4 GB/s|
|Sequential Write||3.2 GB/s||4.4 GB/s||7.0 GB/s|
|4KB Random Read IOPS||700k||750k||1M IOPS|
|4KB Random Write IOPS||600k||750k||1M IOPS|
|Controller Power||2.1 W||2.6 W||3.0 W|
|Sampling||Q2 2018||Q1 2019||Q1 2020|
|Retail SSD Availability||Q4 2018||Q3 2019||Q4 2020|
The Inland Performance Plus does not quite hit the theoretical limits of the Phison E18 controller. The 1TB model is clearly handicapped on some performance metrics compared to the 2TB model, but even the latter is only rated for 7GB/s sequential reads and 650-700k IOPS instead of 7.4GB/s and 1M IOPS. This mostly comes down to the Inland Performance Plus and other current E18 drives using 96L TLC NAND with 1200MT/s IO between the NAND and the controller, while the E18 can support up to 1600MT/s IO. A new round of E18-based products will start hitting the market soon using Micron 176L TLC that operates with the higher IO speed and should bring some other performance and efficiency improvements. We expect some of these new drives to be announced at Computex next month.
|Inland Performance Plus
|Capacity||1 TB||2 TB|
|Form Factor||M.2 2280 PCIe 4.0 x4|
|NAND Flash||Micron 96L 3D TLC|
|Sequential Read (GB/s)||7.0||7.0|
|Sequential Write (GB/s)||5.5||6.85|
|Random Read IOPS (4kB)||350k||650k|
|Random Write IOPS (4kB)||700k||700k|
|Write Endurance||700 TB
|Retail Price (In Store Only)||$189.99
Like most drives using the Phison E18 controller, the Inland Performance Plus comes with a fairly substantial heatsink installed. The controller package is small enough to share space with a DRAM package and four NAND packages on the front of the PCB, which means there's a lot of heat concentrated in a small area. (The Inland Performance Plus also has DRAM and NAND on the back of the PCB.) PCIe 4.0 has barely started showing up in laptops and using the full performance of a drive like the Inland Performance Plus requires more power than most laptops are able to sink away from their M.2 slots, so it's reasonable to regard this drive as pretty much desktop-only.
The most important competitors for the Inland Performance Plus are other Phison E18 drives and the current flagship PCIe 4.0 drives from Samsung and Western Digital. We have fresh results in this review for the Samsung 980 PRO, retested with the latest 3B2QGXA7 firmware. We've also included results from some older top of the line drives: the Intel Optane 905P and Samsung 970 PRO (their last consumer NVMe drive to use MLC NAND), and the Silicon Power US70 representing the first wave of PCIe 4.0 drives that used the Phison E16 controller.
|WD Black SN850||PCIe 4.0 x4||WD Custom G1||96L TLC|
|Samsung 980 PRO||PCIe 4.0 x4||Samsung Elpis||128L TLC|
|Silicon Power US70||PCIe 4.0 x4||Phison E16||96L TLC|
|Intel Optane SSD 905P||PCIe 3.0 x4||Intel Custom||3D XPoint G1|
|Samsung 970 PRO||PCIe 3.0 x4||Samsung Phoenix||64L MLC|
The rest of the drives included in this review are more mainstream models, mostly PCIe 3.0 drives, some with four-channel controllers instead of the usual eight for the high-end, and even a few with QLC NAND. This includes the Inland Premium, which is based on the Phison E12S and TLC NAND.
|Inland Premium||PCIe 3.0 x4||Phison E12S||96L TLC|
|SK hynix Gold P31||PCIe 3.0 x4||SK hynix Custom (4ch)||128L TLC|
|Samsung 970 EVO Plus||PCIe 3.0 x4||Samsung Phoenix||92L TLC|
|WD Black SN750||PCIe 3.0 x4||WD Custom G1||64L TLC|
|HP EX950||PCIe 3.0 x4||SM2262EN||64L TLC|
|Kingston KC2500||PCIe 3.0 x4||SM2262EN||96L TLC|
|Intel SSD 670p||PCIe 3.0 x4||SM2265 (4ch)||144L QLC|
|ADATA Gammix S50 Lite||PCIe 4.0 x4||SM2267 (4ch)||96L TLC|
|Corsair MP600 CORE||PCIe 4.0 x4||Phison E16||96L QLC|
Post Your CommentPlease log in or sign up to comment.
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
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 - linkI 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 - linkI 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 - linkI 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.
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
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 - linkMuch 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.)