The Samsung SSD 840 EVO read performance bug has been on the table for over six months now. Initially Samsung acknowledged the issue fairly quickly and provided a fix only a month after the news hit the mainstream tech media, but reports of read performance degradation surfaced again a few weeks after the fix had been released, making it clear that the first fix didn't solve the issue for all users. Two months ago Samsung announced that a new fix is in the works and last week Samsung sent us the new firmware along with Magician 4.6 for testing, which will be available to the public later this month.

I covered the reason behind the issue in one of our earlier articles, but in short the read performance degradation is a result of cell charge decay over time that caused extensive read-retry cycles to retrieve the correct data. The new firmware fixes this by periodically refreshing (i.e. rewriting) old data, which recovers the cell charge back to its original state and ensures that no read-retry or ECC that would degrade the performance is needed. Samsung says that the refresh operation does not impact user performance, suggesting that it's a relatively low priority process that is run when the drive is idling.

The new Magician 4.6 also includes an Advanced Performance Optimization feature, which is similar to the performance restoration tool that Samsung released earlier. Basically, it's a command that tells the SSD to rewrite all of its internal data, which resets all cell charges and hence recovers performance. It's merely a supplementary tool as the firmware upgrade itself should be enough to restore performance, but in case the performance isn't fully restored after the firmware upgrade (and some idle time to let the drive refresh the cells), the tool can be used to force a cell charge refresh.

I haven't run any tests of my own because I don't have any 840 EVOs deployed in my systems (I only have one 2.5" EVO anyway), but Allyn Malventano from PC Perspective managed to run some tests on a degraded drive to show the impact of the new firmware.

Before update

After update

After "Advanced Performance Optimization"

Allyn's tests indicate that the new firmware seems to mostly fix the issue even without running the optimization tool. Note that Allyn didn't give the drive any idle time after the firmware update, so the update appears the be very effective and with idle time the performance would likely have restored on its own.

Obviously, the big question is whether the performance will stay high because there was never a problem with freshly written data. We won't know that for sure until a couple of months later, but given the way the new firmware handles old data it does sound more promising because no data should get old enough to be slow to read.

Some of you are likely skeptical about the effect on endurance since rewriting the data will consume P/E cycles, but I find this to be a non-issue. We know that Samsung's 19nm TLC NAND is rated at 1,000 P/E cycles, so if the drive was to refresh all cells once a week, even that would only consume 52 cycles in a year. In five years time the total would be 260 cycles, which leaves you with 740 cycles for user data writes (for the record, that's 52GB of NAND writes per day for five years with the 120GB 840 EVO).

All in all, I hope this fix will finally put an end to the performance degradation. The issue has been bugging many users for months and it's critical that the users get what they initially paid for. On one hand I'm confident enough to say that this fix is permanent given the way it works, but on the other hand I don't want to be too optimistic this time around because the first fix didn't turn out so great. Either way, I think this fix is the last chance for Samsung to provide a permanent solution because they already failed to do so once and it would no longer be fair to ask the customers to wait months for a fix that might or might not fix the issue. For now the only thing we can do is wait for user reports and hope for the best, but at least in theory the new firmware should be a permanent fix.