[经验]
NVMe与AHCI对比-Introduction
NVMe and AHCI were created to solve different problems. Each design addresses theproblems within the constraints that existed at the time they were architected and takeadvantage of and fully exploit the technologies that were available at the time they weredefined.
AHCI came about due to advances in platform design, both in the client and enterprisespace, and advances in ATA technology, specifically SATA. SATA in particular, which isan adaptor-to-device side interface, highlighted the need to provide an updated adaptorto-host side interface. Many features of SATA were either not capable of being exploitedor could only be exploited with difficulty through proprietary host side interfaces prior tothe creation of AHCI.
AHCI was originally created to provide an abstracted device host interface to SATAhard disk drives that provided a queuing interface supporting an asynchronouscommand-response mechanism. Other important features, power management, a betterarchitected application programming interface, etc., were also added. The mostimportant feature, the queuing interface, was added in order to improve performance.
NVMe is designed as a device interface. More specifically it is designed as a deviceinterface for devices that attach directly to the PCIe bus. The devices may function aseither a storage device or something that, in the future, may function as a new devicetype sitting between the storage subsystem and system main memory.
NVMe was designed from the ground up to provide a very high performance, lowlatency interface for PCIe SSD devices that would additionally allow some of the specialcharacteristics and attributes of NAND flash to be exposed and exploited by upperlayers of the system.
Prior to the creation of NVMe AHCI, in a modified and proprietary form, has been usedas an interface for PCIe SSDs. While this approach has worked in the absence ofsomething more purpose designed and built, AHCI was not originally architected withthis use in mind and therefore suffers from some shortcomings when used in thatapplication.
This paper will provide an overview of the features of both interfaces to allow forcomparisons and contrasts to be drawn between the two and allow the reader to betterunderstand in what applications each may best be used. The focus will be on the higherlevels of the interfaces, essentially the transports, protocols and upper level features. A discussion of the physical and link layers of each of the interfaces is beyond the scopeof this paper and not essential to the topic.
A comparison of an AHCI HBA subsystem to an NVMe device is admittedly somethingof an apples to oranges comparison. In configuring a system it would not be expectedthat someone would be faced with making a decision as to whether that system shouldbe configured with an AHCI HBA or NVMe PCIe SSDs. Each serves different purposes.The reason for this paper is educational. It is hoped that the reader can benefit from acomparison for the following reasons.
- If the reader is already familiar with AHCI then a comparison to NVMe will help inthe understanding of NVMe and its benefits
- If the reader is unfamiliar with either interface an understanding of both will helpto point out the context of how each can best be used.
- Finally this comparison will show how storage interfaces are evolving in responseto advances in persistent memory technology and the systems in which they areused.
看看