NVMe开发——PCIe电源管理

1. 简介

PCIe电源管理详细描述了与PCI总线PM接口规范和高级配置和电源接口(ACPI)兼容的PCIe功耗管理。PCIe定义了对PCI-PM规范的扩展,主要关注链路电源和事件管理。还概述了OnNow计划、ACPI以及Windows操作系统的相关性。

1.1. 主要领域

  1. 兼容PCI电源管理,包括软件配置电源管理能力寄存器等。

  2. 扩展本地PCIe,基于自主电源状态管理(ASPM),管理电源事件(PME)等。

  3. 带宽管理,在高带宽时改善功耗。

  4. 事件时间优化,优化高功耗。

1.2. APCI

ACPI(高级配置和电源接口)规范最初是由多家公司联合努力编写的,旨在为计算平台的操作系统级功耗管理(OSPM)提供行业标准。当时,不同平台上的功耗管理以专有方式处理,这使得各个供应商很难协调他们的工作。此外,平台特定代码并不总是完全兼容操作系统的操作,也不了解所有的系统条件或策略考虑因素。ACPI通过定义系统电源状态、硬件寄存器和软件交互来辅助解决这些问题,从而实现基于操作系统的功耗管理。

1.3. 系统电源状态

  • Working(G0/S0):系统完全可操作。

  • Sleeping(G1):系统似乎是关闭状态,功耗非常低。恢复“Working”状态所需时间与电源节约级别成反比。

    • S1 - 清除高速缓存,CPU停止运行。

    • S2 - 与S1相同,但现在CPU已经关闭电源。由于不比S3更好,很少使用。

    • S3 -(也称为“挂起到RAM”或“待机”)与S2相同,但系统上下文保存在内存中,并且关闭了更多的系统部件。当系统唤醒时,CPU开始完整的启动过程,但在CMOS存储器中设置了标志指示它从RAM中重新加载上下文,因此程序执行可以很快恢复。

    • S4 -(也称为“挂起到磁盘”或“休眠”)与S3类似,但现在系统将系统上下文复制到磁盘,然后断开系统的电源,包括主存储器。这样可以实现更好的节能,但是重新启动时间会更长,因为在恢复程序执行之前必须从磁盘还原上下文。

  • Soft Off(G2/S5):系统看起来是关闭,电源功耗也是最小。要返回“工作”状态,需要进行完全重启,因为内存中的内容已经丢失,但仍然有一些可用的电源来进行唤醒,例如通过按下系统上的“电源”按钮。

  • Mechanical Off(G3):系统断开所有电源。

1.4. 设备电源状态

ACPI提供了对PCIe设备电源状态管理的定义。

  • D0:强制。设备完全可操作,并从系统获取完全的功耗。2.1版本的规范修订添加了另一组寄存器,用于支持D0状态下的32个子状态,称为动态功耗分配寄存器。

  • D1:可选。低功耗状态,设备内容可能丢失。此状态未定义,位于D0和D1之间。

  • D2:可选。比D1功耗更低,系统恢复时间也会比D1状态更长。

  • D3:强制。设备已准备好在断电时丢失上下文,无论实际上是否发生断电。与D2相比,恢复时间会更长,但在此状态下可以从设备中优雅地移除电源。当电源还在时,可以发送配置命令重新进入D0状态。如果电源已经移除,再接入电源时会进入硬件复位。

功能电源管理

2.1. 电源管理能力寄存器(PM Capability Register)

遍历所有Capability,找到Capability ID为0x01的寄存器,即为电源管理能力寄存器。

2.2. 设备电源管理状态

2.2.1. D0状态

当设备处于此状态时,ASPM硬件控制可以改变链路功率。

电源策略:

  • 未初始化(Uninitialized):一般是功能从D3到D0,功能进入未初始化状态。此状态的特征表现为:

    • 只响应配置事务。

    • 命令寄存器都恢复为默认状态,无法响应内存或IO事务。

  • 活动(Active):一旦被软件配置和使能,功能可以完整操作。

2.2.1.1. 动态电源分配(DPA)

此功能可选。2.1版本规范中添加此可选能力,为D0定义了额外的32个子状态。如果DPA使能,那么NVM子系统的功耗要取DPA或NVMe两者的较小值。

2.2.2. D1状态

浅睡状态。在进入此状态之前,软件必须确保所有未完成的非发布请求(non-posted Requests)都已收到相应的完成通知。可以通过轮询PCI Express能力块中的设备状态寄存器中的事务待处理位(Transactions Pending bit)来实现。当该位被清零时,表示所有未完成的请求已经处理完毕,可以安全地进行状态转换。

在这种低功耗状态下,功能除非启用PME消息,否则不会发起请求。D1状态的其他特征包括:

  • 功能处于较低的功耗水平,并且可能采取进一步降低功耗的措施。

  • 功能可能暂停传输和处理数据,以减少功耗。

  • 功能仍然对配置事务和PME消息做出响应。

  • 功能不主动发起其他类型的请求。

2.2.3. D2状态

深睡状态。在进入此状态之前,软件必须确保所有未完成的非发布请求(non-posted Requests)都已收到相应的完成通知。可以通过轮询PCI Express能力块中的设备状态寄存器中的事务待处理位(Transactions Pending bit)来实现。当该位被清零时,表示所有未完成的请求已经得到适当的完成通知,可以安全地进行状态转换。

这个低功耗状态比D1状态提供了更深的功耗节约,但仍然比D3热态要高。在D2状态下,功能不会主动发起请求(除了PME消息)或作为非配置请求的目标。软件仍然可以访问功能的配置寄存器。

2.2.4. D3状态

所有功能都必须支持D3状态。这是最深的状态,实现了最大限度的功耗节约。当软件将该电源状态写入设备时,它进入D3热态,表示仍然施加电源。如果从设备中断电(Vcc),则设备进入D3冷态,并且连接器进入L2状态(如果有辅助电源Vaux可用)或L3状态(如果没有辅助电源Vaux可用)。

  • D3 Hot:通过向功耗管理控制和状态寄存器(PMCSR)的PowerState字段写入适当的值,软件将功能置于D3热态。在此状态下,功能只能发起PME或PME_TO_ACK消息,并且只能响应配置请求或PME_Turn_Off消息。软件必须能够在设备处于D3热态时访问功能的配置寄存器,即使只是为了能够将状态改变回D0。功能从D3热态退出有两种情况:

    • 如果从设备中断电(Vcc),则从D3热态转换为D3冷态。

    • 软件可以写入Function的PMCSR寄存器的PowerState字段,将其PM状态更改为D0。当编程退出D3热态并返回D0时,功能返回到D0未初始化的PM状态。可能需要重置,也可能不需要。

  • D3 Cold:当功能断电(Vcc)时,每个PCI Express功能都进入D3冷态的功耗管理状态。当电源恢复时,设备必须进行复位或生成内部复位,将其从D3冷态转换到D0未初始化态。能够生成PME的功能在此状态下和从该状态过渡到D0状态时必须维护PME上下文。由于电源被断开以进入此状态,因此如果要保持PME上下文,功能必须具备可用的辅助电源。然后,当设备进入D0未初始化态时,如果功能支持并已启用,它可以生成PME消息以通知系统有唤醒事件发生。

2.3. 功能电源状态转换

功能电源状态转换图:

功能电源状态转换描述:

功能电源状态转换延时:

PCI-PM寄存器

3.1. PMC寄存器

电源管理能力(Power Management Capabilities, PMC)。NVMe开发关注DSI的配置。如果此位为1,则表示在进入D0未初始化态后,功能需要进行额外的配置。

3.2. PMCSR寄存器

3.3. 数据寄存器

Data Register,NVMe开发不用关注。

ASPM

活动状态电源管理(Active State Power Management (ASPM)是一种基于硬件的链路功耗节约机制,仅适用于设备处于D0设备电源状态时。ASPM状态的转换由硬件根据实施特定的标准启动;软件无法控制或观察此操作,只能使用配置寄存器位使其启用或禁用。换句话说,ASPM的进入和退出是由硬件自动处理的,软件只能通过配置寄存器的位来启用或禁用ASPM。

改善电源管理效率

由于系统无法准确知道设备请求系统服务(如果IO读写)的响应时间,导致系统和设备之间的电源管理协调可能出现不一致的情况,导致设备无法准确进行功能管理。2.1规范新添加了2个功能优化此问题。

5.1. OBFF

OBFF (Optimized Buffer Flush and Fill),通过使用优化的缓冲区刷新和填充,终端节点可以根据系统的电源状态确定最佳的数据传输时机。这样,它们可以更好地利用系统处于空闲状态时进行数据传输,从而提高功耗效率。这个机制确保数据传输发生在系统处于最合适的状态时,避免不必要的能量消耗,并提升整体的性能和效率。

5.2. LTR

提高功耗管理效率的新功能被称为延迟容忍报告(Latency Tolerance Reporting,LTR)。这个可选功能允许设备报告在向平台请求服务时可以容忍的延迟,以便功耗管理策略(如主存储器的策略)可以考虑到这一点。如果软件支持LTR,它可以为设备在需要时提供良好的性能,而在不需要快速响应时降低系统的功耗。

代码实践

电源管理能力寄存器的偏移值位于第13DW处,也即0x34处。

然后循环遍历所有的Capacity,Capacity ID=0x01的即是PM Capacity。

6.1. Windows

Windows下PCI空间位于内核空间,应用程序无法直接访问,必须通过驱动间接读取。驱动读取设备寄存器也有两种方法,一种是端口读取的方法,另外一种是MMIO直接访问的方法。MMIO相比传统的端口读写,效率更高。

6.1.1. 使用第三方工具

RW-Everything是一款自带驱动可以读写PCIe配置空间的免费软件。

然后利用MMIO来读取,先获取MCFG地址。

0xE1B00000 = 0x00000000E0000000 + (0x1B<<20) | (0x00<<15)|(0x00<<12);

MMIO读写

6.1.2. 使用自建驱动读写

WinIO是一个开源的Windows内核驱动,提供设备端口读写和物理内存和虚拟内存映射操作接口。

因为WinIO的驱动未签名,所以在Win10,必须在测试模式下安装。

  1. Windows 开启测试模式的方式:

    1. 管理员模式运行CMD

    2. 输入命令:bcdedit.exe /set TESTSIGNING ON

    3. 重启

  2. 安装WinIO64.sys:

    1. 打开 WinIO64.sys的属性框,翻到“数字签名”选项卡,点击“详细信息”

    2. 在新出来的对话框中点击“查看证书”

    3. 再次点击新出来的对话框中点击“安装证书”

    4. 点击“下一步”,然后选择“将所有的证书放入下列存储”

    5. 点击浏览,选择“受信任的根证书发布机构”

6.1.2.1. 端口读写配置空间
int GetPCIConfiguation(int bus, int dev, int fun, PCI_COMMON_CONFIG &pci_config)
{
	DWORD addr, data;

	for (int i = 0; i < 0x100; i += 4)
	{
		addr = 0x80000000 | (bus << 16) | (dev << 11) | (fun << 8) | i;
      
		if (!SetPortVal(0xcf8, addr, 4))
		{
			return -1;
		}

		if (!GetPortVal(0xcfc, &data, 4))
		{
			return -2;
		}
        // 当0号寄存器的内容为0xffffffff时,即表明无设备
		if (i == 0 && data == 0xffffffff)
		{
			return 0;
		}
		memcpy(((PUCHAR)&pci_config) + i, &data, 4);
	}
	return 1;
}
6.1.2.2. MMIO
DWORD bufferSize = GetSystemFirmwareTable('ACPI', 0, nullptr, 0);
    if (bufferSize == 0) 
    {
        return 1;
    }

    BYTE* pBuffer = new BYTE[bufferSize]();
    DWORD result = GetSystemFirmwareTable('ACPI', 'GFCM', pBuffer, bufferSize);
    __int64 baseAddr = *(__int64 *)(pBuffer + 44);

    PDWORD pdwLinAddr;
    tagPhysStruct PhysStruct;
    PhysStruct.dwPhysMemSizeInBytes = 256;
    // baseAddr为基地址
    PhysStruct.pvPhysAddress = baseAddr | (bus << 20) | (dev << 15) | (fun << 12);

    pdwLinAddr = (PDWORD)MapPhysToLin(PhysStruct);
    if (pdwLinAddr == NULL)
    {
        return -1;
    }
    else if (*pdwLinAddr == 0xffffffff)
    {
        return 0;
    }
    // for (int i = 0; i < 64; i++)
    // {
    //     memcpy(((PUCHAR)&pci_config) + i * 4, pdwLinAddr + i, 4);
    // }
  
    // 这种拷贝方式可能拷贝出奇奇怪怪的值,可以使用上面的方法
    memcpy(((PUCHAR)&pci_config), pdwLinAddr, 256);
    UnmapPhysicalMemory(PhysStruct);

6.2. Linux

6.2.1. 使用第三方工具

可以使用lspci来显示指定PCIe设备的配置空间信息,也可以使用setpci来对配置空间进行读写。

  1. lspci可以显示详细信息包括解析

    michael@ubuntu22:/sys/bus/pci/devices/0000:0f:00.0$ sudo lspci -s 0f:00.0 -vvv
    0f:00.0 Non-Volatile memory controller: YEESTOR Microelectronics Co., Ltd PCIe NVMe SSD (rev 01) (prog-if 02 [NVM Express])
            Subsystem: YEESTOR Microelectronics Co., Ltd PCIe NVMe SSD
            Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
            Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
            Latency: 0, Cache Line Size: 64 bytes
            Interrupt: pin A routed to IRQ 24
            NUMA node: 0
            Region 0: Memory at bc000000 (64-bit, non-prefetchable) [size=16K]
            Capabilities: [80] Express (v2) Endpoint, MSI 00
                    DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 <64us
                            ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 75.000W
                    DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
                            RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
                            MaxPayload 256 bytes, MaxReadReq 512 bytes
                    DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
                    LnkCap: Port #1, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 <64us
                            ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
                    LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
                            ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                    LnkSta: Speed 8GT/s (ok), Width x4 (ok)
                            TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                    DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
                             10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix-
                             EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                             FRS- TPHComp- ExtTPHComp-
                             AtomicOpsCap: 32bit- 64bit- 128bitCAS-
                    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled,
                             AtomicOpsCtl: ReqEn-
                    LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
                    LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
                             Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                             Compliance De-emphasis: -6dB
                    LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
                             EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
                             Retimer- 2Retimers- CrosslinkRes: unsupported
            Capabilities: [d0] MSI-X: Enable+ Count=9 Masked-
                    Vector table: BAR=0 offset=00002000
                    PBA: BAR=0 offset=00003000
            Capabilities: [e0] MSI: Enable- Count=1/8 Maskable+ 64bit+
                    Address: 0000000000000000  Data: 0000
                    Masking: 00000000  Pending: 00000000
            Capabilities: [f8] Power Management version 3
                    Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                    Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
            Capabilities: [100 v1] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
            Capabilities: [108 v1] Latency Tolerance Reporting
                    Max snoop latency: 1048576ns
                    Max no snoop latency: 1048576ns
            Capabilities: [110 v1] L1 PM Substates
                    L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
                              PortCommonModeRestoreTime=10us PortTPowerOnTime=60us
                    L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
                               T_CommonMode=0us LTR1.2_Threshold=32768ns
                    L1SubCtl2: T_PwrOn=60us
            Capabilities: [200 v2] Advanced Error Reporting
                    UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                    UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                    UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                    CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
                    CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
                    AERCap: First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap+ ECRCChkEn-
                            MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
                    HeaderLog: 05000001 00002203 32f80000 2143b600
            Capabilities: [300 v1] Secondary PCI Express
                    LnkCtl3: LnkEquIntrruptEn- PerformEqu-
                    LaneErrStat: 0
            Kernel driver in use: nvme
            Kernel modules: nvme
    

  2. setpci, 01正是PM Capacity ID。

  3. 内存映射文件

  4. Linux会NVMe设备的配置空间映射到/sys/bus/pci/devices/0000:0f:00.0/config

    然后可以读写此文件以实现对PM寄存器的查看和配置。

    6.2.2. MMIO编程

    现代计算机系统,DRAM、CPU以及其他外设的内存都统一映射到一段内存地址范围内。所以PCIe设备的配置空间也是映射到内存的。

    首先获取PCI设备内存的基地址,此信息存放在/sys/firmware/acpi/tables/MCFG 文件中。

    pcie_addr = base_addr +  (Bus << 20) | (Device << 15) | (Function << 12);

    pcie_addr = 0x00000000F0000000 + (0x0F<<20) | (0x00<<15)|(0x00<<12);

    Linux上的应用程序同样无法直接访问真实物理内存,Linux提供了/dev/mem文件映射真实物理内存。

    int fd = open("/dev/mem", O_RDWR);
    uint64_t pcie_addr = 0x00000000F0000000 + (0x0F<<20) | (0x00<<15)|(0x00<<12);
    uint8_t* ptrdata = (uint8_t *)mmap(NULL, 64, PROT_READ | PROT_WRITE, MAP_SHARED, fd, pcie_addr);//映射后返回的首地址 ---物理地址
    // ptrdata即是对应PCIe设备的配置空间,然后依此来完成对PCIe设备配置空间的读写操作

  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PCIe NVMe是一种高速的存储接口协议,主要用于连接计算机的存储设备,如固态硬盘(SSD)。它是一种基于PCI Express(PCIe)总线的协议,通过使用非易失性内存(NVM)来实现快速的数据传输。 PCIe NVMe通过使用高级主机控制器接口(AHCI)的替代品,提供了更快的数据传输速度和更低的延迟。相比于传统的SATA接口,PCIe NVMe的传输速度可以大幅度提升,大大提高了计算机的响应速度和整体性能。 在PCIe NVMe管理方面,需要考虑几个方面。首先是驱动程序的安装和管理。每个NVMe设备都需要安装相应的驱动程序才能正常工作,因此在管理中要确保驱动程序的正确安装和更新。 其次是固件的管理NVMe设备通常具有固件,这是设备的操作系统。更新固件可以修复错误、改进性能并添加新功能。因此,在管理中需要定期检查固件的可用性,并按照厂商提供的指示进行更新。 此外,还需要针对NVMe设备进行性能监控和故障排除。通过监控设备的性能参数,可以及时发现和解决性能下降的问题。另外,对于设备故障,可以使用错误日志和诊断工具来帮助定位和解决问题。 最后,在PCIe NVMe管理中还需要考虑数据安全性。由于PCIe NVMe设备是直接连接到计算机总线上,因此需要采取措施来保护设备数据的安全。例如,通过使用加密功能和访问控制策略来防止未经授权的访问。 综上所述,PCIe NVMe管理涉及驱动程序的安装和更新、固件的管理、性能监控和故障排除以及数据安全等方面。通过有效的管理,可以确保NVMe设备的正常运行和高性能工作。 ### 回答2: PCIe NVMe是一种新型的存储接口技术,旨在提高计算设备的存储性能和响应速度。PCIe(Peripheral Component Interconnect Express)是计算机硬件领域广泛使用的高速总线标准,而NVMe(Non-Volatile Memory Express)则是一种用于闪存驱动器的通信协议。 PCIe NVMe管理主要涉及存储设备的配置、监控和优化等。首先,它允许操作系统检测和配置PCIe NVMe设备,包括识别存储容量、读取写入速度等信息。通过管理软件,用户可以对这些设备进行分区、格式化和设定缓存策略等操作,以满足应用的需求。 其次,PCIe NVMe管理还包括监控存储设备的运行状态。通过监控软件,用户可以实时监测设备的温度、功耗、读写速度等参数,并对异常情况进行警报和处理。这有助于提前预防硬件故障和数据丢失,保证系统的稳定运行。 最后,PCIe NVMe管理还涉及优化存储性能和数据安全。通过管理软件,用户可以定期进行设备的固件升级,以修复漏洞和提升性能。此外,用户还可以设置RAID(冗余磁盘阵列)和TRIM(回收闪存中已删除数据)等功能,以提高数据安全性和设备的使用寿命。 综上所述,PCIe NVMe管理是一项重要的技术,它通过配置、监控和优化存储设备,提高了计算设备的存储性能和响应速度,同时保证了数据的安全性和可靠性。 ### 回答3: PCIE NVMe是一种存储介质的管理协议,它在电脑硬件中的发展具有重要意义。 首先,PCIE是指Peripheral Component Interconnect Express的缩写,是一种高速串行接口标准,用于连接计算机系统的扩展卡。而NVMe指的是Non-Volatile Memory Express,是一种与存储介质相关的管理协议。 PCIE NVMe管理主要涉及两个方面:一是存储设备的配置和管理,二是数据传输和访问控制。 在存储设备的配置和管理方面,PCIE NVMe通过固件来管理存储设备的一些基本设置,如I/O队列数量、命名空间数量和电源管理等。通过这些设置,可以根据系统需求来优化存储设备的性能和能耗。 在数据传输和访问控制方面,PCIE NVMe通过NVMe驱动程序与操作系统进行通信,实现数据的读写和传输。它通过命令和队列来管理数据的传输流程,从而提高传输效率和数据访问的并发性。此外,PCIE NVMe还支持多队列和多核心处理,可以更好地利用多核心处理器的计算能力。 此外,PCIE NVMe还提供了一些高级功能,如错误检测和修复、多路径访问和故障转移等。它能够检测和纠正存储设备中的错误,提供冗余访问路径来保证数据的可靠传输,以及在设备故障时实现无缝切换。 总之,PCIE NVMe作为一种存储介质的管理协议,能够优化存储设备的性能和能耗,并提供高效的数据传输和访问控制。它在现代计算机系统中的应用越来越广泛,对于提高系统的响应速度和数据处理能力具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值