NAND Performance: The First UFS Phone
Storage performance is often a critical area for user performance, as applications cannot be cached in RAM at every possible moment. Camera performance is also often limited by storage performance as RAM buffers can only do so much to maintain performance before it’s necessary to commit photos to non-volatile storage.
However due to the memory hierarchy to some extent, storage performance is often hard to notice once it’s at a point where things are “good enough”. Unfortunately, in some cases we can see OEMs failing to include sufficiently performant solid-state storage, which can be a major pain point in the user experience when random read/write performance is low enough that there are noticeable IO pauses as the system has to wait for data to be loaded from storage.
The Samsung Galaxy S6 family is the first shipping implementation of UFS (Universal Flash Storage) 2.0 standard, which makes the internal storage model less like an SD card in nature. When comparing the eMMC 5.1 standard to the UFS 2.0 standard, we see a move from a the 400 MB/s maximum of the eMMC 5.1 standard with HS400 physical link interface to MIPI M-PHY, which allows for a theoretical maximum of around 720 MB/s and should be more efficient in transmitting data than the current eMMC standard. In addition, UFS makes it possible to do full duplex communication, which means that reads and writes can happen simultaneously. There's also a command queue, which helps to avoid inefficiencies that could arise from waiting for commands once a command has been processed by the storage controller, and utilizes the SCSI protocol to facilitate these new features at the interface level.
As for the Galaxy S6 itself, the UFS implementation Samsung is using is Samsung developed. Samsung's current implementation only supports up to 300 MB/s (or 2.4 Gbps) transfer rates as a theoretical maximum, so from an interface perspective it's still not reaching the full capabilities of the standard. Though even at a cap of 300MB/sec, it still stands to be a significant improvement over typical eMMC solutions.
Finally, on a technical note, the 32GB models are of the model KLUBG4G1BD-E0B1 with a maximum queue depth of 16.
In order to test storage performance, we use Androbench with some custom settings to get a reasonable idea of performance in this area, although this test isn’t an exhaustive examination of storage performance by any means.
The Galaxy S6 performs rather impressively in our standard storage test, but not as fast as one might have hoped. This is due to the nature of the Androbench 3.6 test, which only tests a single IO thread, which won’t use the UFS storage of the Galaxy S6 to its full extent. In order to see the kind of difference that UFS really makes, I ran the same test again on Androbench 4.x, which does support multiple IO threads. However, as our iOS storage test and Androbench 3.6 don’t support more than a single IO thread we will continue to present both results for now.
Overall, there are some immense benefits in storage performance here, especially in random IO performance. The Galaxy S6 has some of the fastest storage available in a phone today as far as I can tell given that this is basically a pure MLC solution, and shouldn’t have any real issue with storage performance holding back the rest of the phone over the course of 1-3 years as long as a reasonable amount of free space is kept to allow efficient storage management.
ncG1vNJzZmivp6x7orrAp5utnZOde6S7zGiqoaenZIZygJVoq6GdXaiurr%2FUp55mn5GhrrnFjKxtZpmemXq0goyem6CdXaeyt7XEsGZw