Acrónimo | NVMe |
Introduzido | 2011 |
Organização gestora | NVM Express Work Group (incorporado como NVM Express em 2014) |
Sítio Web | nvmexpress |
NVM Express (NVMe) ou Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) é uma especificação de interface de dispositivo lógico aberta para acessar mídia de armazenamento não volátil de um computador geralmente conectada via barramento PCI Express (PCIe). O acrônimo NVM significa memória não volátil, que geralmente é memória flash NAND que vem em vários fatores de forma física, incluindo unidades de estado sólido (SSDs), placas complementares PCI Express (PCIe) e placas M.2, a cartões sucessores do mSATA. O NVM Express, como interface de dispositivo lógico, foi projetado para captalizar a baixa latência e o paralelismo interno dos dispositivos de armazenamento de estado sólido.[1]
Arquitetonicamente, a lógica do NVMe é fisicamente armazenada e executada pelo chip controlador NVMe que está fisicamente co-localizado com a mídia de armazenamento, geralmente um SSD. As alterações de versão NVMe, por exemplo, 1.3 para 1.4, são incorporadas à mídia de armazenamento e não afetam os componentes compatíveis com PCIe, como placas-mãe e CPUs.[2]
Por seu design, o NVM Express permite que o hardware e o software do host explorem totalmente os níveis de paralelismo possíveis em SSDs modernos. Como resultado, o NVM Express reduz a sobrecarga de E/S e traz várias melhorias de dezempenho em relação às interfaces de dispositivos lógicos anteriores, incluindo várias filas de comando longas e latência reduzida. Os protocolos de interface anteriores, como o AHCI, foram desenvolvidos para uso com unidades de disco rígido (HDD) muito mais lentas, onde existe um atraso muito longo (relativo às operações da CPU) entre uma solicitação e a transferência de dados, onde as velocidaes de dados são muito mais lentas que as velocidades de RAM e onde rotação do disco e tempo de busca dar origem e outros requisitos de otimização. Os SSDs NVM Express são mais quentes do que os SSDs SATA de 2,5" e podem atingir de forma rápida e fácil temperaturas superiores a 80°C.[3]
Os dispositivos NVM Express estão disponíveis principalmente na forma de placas de expansão PCI Express de tamanho padrão[4] e como dispositivos de fator de forma de 2,5 polegadas que fornecem uma interface PCI Express de quatro vias através do conector U.2 (anteriormente conhecido como SFF-8639).[5][6] Dispositivos de armazenamento usando SATA Express e a especificação M.2 que suportam NVM Express como interface de dispositivo lógico são um caso de uso popular para NVMe e se tornaram a forma dominante de armazenamento de estado sólido para servidores, desktops e laptops iguais.[7][8]
As especificações para NVMe lançadas até o momento incluem:[9]
Historicamente, a maioria dos SSDs usava barramentos como SATA, SAS e Fibre channel para fazer interface com o resto de um sistema de computador. Desde que os SSDs se tornaram disponíeis em mercados de massa, o SATA tornou-se a forma mais comum de conectar SSDs em computadores pessoais; no entanto, o SATA foi projetado principalmente para faer interface com discos rígidos mecânicos (HDDS) e tornou-se cada vez mais inadeado para SSDs, que melhoraram a velocidade ao longo do tempo.[11] Por exemplo, em cada cerca de cinco anos deadoção do mercado de massa (2005-2010), muitos SSDs já estavam retidos pelas taxas de dados comparativamente lentas disponíveis para discos rígidos - ao contrário dos discos rígidos, alguns SSDs são limitados pela taxa de transferência máxima de SATA.
SSDs de última geração foram feitos usando o barramento PCI Express antes do NVMe, mas usando interfaces de especificações não padrão. Ao padronizar a interface dos SSDs, os sistemas operacionais precisam apenas de um driver de dispositivo comum para funcionar com todos os SSDs aderentes à especificação. Isso também significa que cada fabricante de SSD não precisa projetar drivers de interface específicos. Isso é semelhante ao modod como os dispositivos de armazenamento em massa USB são criados para seguir a especificação de classe de dispositivo de armazenamento em massa USB e funcionam com todos os computadores, sem a necessidade de drivers por dispositivo.[12]
Dispositivos NVM Express também são usados como o bloco de construção do buffer de armazenamento em muitos supercomputadores líderes, como Fugaku Supercomputer, Summit Supercomputer e Sierra Supercomputer, etc.[13][14]
Os primeiros detalhes de um novo padrão para acessar memória não volátil surgiram no Intel Developer Forum 2007, quando o NVMHCI foi mostrado como o protocolo do lado do host de um projeto arquitetônico proposto que tinha o Open NAND Flash Interface Working Group (ONFI) na memória (flash) lado dos chips.[15] Um grupo de trabalho NVMHCI liderado pela Intel foi formado naquele ano. A especificação NVMHCI 1.0 foi concluída em abril de 2008 e lançada no site da Intel.[16][17][18]
O trabalho técnico no NVMe começou no segundo semestre de 2009.[19] As especificações do NVMe foram desenvolvidas pelo NVM Express Workgroup, que consiste em mais de 90 empresas; Amber Huffman, da Intel, foi a presidente do grupo de trabalho. A versão 1.0 da especificação foi lançada em 1 de maio de 2011,[20] enquanto a versão 1.1 da especificação foi lançada em 11 de outubro de 2012.[21] Os principais recursos adicionais na versão 1.1 são E/S de vários caminhos (com compartilhamento de namespace) e E/S de coleta de dispersão de comprimento arbitrário. Espera-se que as revisões futuras melhorem significativamente o gerenciamento de namespace.[19] Por causa de seu foco em recursos, o NVMe 1.1 foi inicialmente chamado de "Enterprise NVMHCI".[22] Uma atualização para a especificação básica do NVMe, chamada versão 1.0e, foi lançada em janeiro de 2013.[23] Em junho de 2011, o Promoter Group liderado por sete empresas foi formado.
Os primeiros chipsets NVMe comercialmente disponíveis foram lançados pela Integrated Device Technology (89HF16P04AG3 e 89HF32P08AG3) em agosto de 2012.[24][25] A primeiro unidade NVMe, a unidade empresarial XS1715 da Samsung, foi anunciada em julho de 2013; de acordo com a Samsung, esta unidade suportava velocidades de leitura de 3 GB/s, seis vezes mais rápidas do que suas ofertas corporativas anteriores.[26] A família de controladores LSI SandForce SF3700, lançada em novembro de 2013, também suporta NVMe.[27][28] Um produto "prosumer" Kingston HyperX usando este controlador foi apresentado na Consumer Electronics Show 2014 e prometeu desempenho semelhante.[29][30] Em junho de 2014, a Intel anunciou seus primeiros produtos NVM Express, a família de data center Intel SSD que faz inteface com o host por meio do barramento PCI Express, que inclui as séries DC P3700, DC P3600 e DC P3500 Series.[31] A partir de novembro de 2014, as unidades NVMe estão disponíveis comercialmente.
Em março de 2014, o grupo foi incorporado para se tornar NVM Express, Inc., que em novembro de 2014 consiste em mais de 65 empresas de todo o setor. As especificações do NVM Express são de propriedade e mantidas pela NVM Express, Inc., que também promove a conscientização da indústria sobre o NVM Express como um padrão para todo o setor. A NVM Express, Inc. é dirigida por um conselho de administração de treze membros selecionados do Promoter Group, que inclui Cisco, Dell, EMC, HGST, Intel, Micron, Microsoft, NetApp, Oracle, PMC, Samsung, SanDisk e Seagate.[32]
Em setembro de 2016, a CompactFlash Association anunciou que lançaria uma nova especificação de cartão de memória, CFexpress, que usa NVMe.[carece de fontes]
NVMe Host Memory Buffer (HMB) adicionado na versão 1.2 da especificação NVMe.[33] O HMB permite que os SSDs utilizem a DRAM do host, o que pode melhorar o desempenho de E/S para SSDs sem DRAM.[34]
Existem muitos fatores de forma da unidade de estado sólido NVMe, como AIC, U.2, U.3, M.2 etc.
Quase todas as primeiras unidades de estado sólido NVMe são HHHL (meia altura, meio comprimento) ou FHHL (altura total, meio comprimento) AIC, com uma interface PCIe 2.0 ou 3.0. Uma placa de unidade de estado sólido HHHL NVMe é fácil de inserir em um slot PCIe de um servidor.
U.2, anteriormente conhecido como SFF-8639, é uma interface de computador para conectar unidades de estado sólido a um computador. Ele usa até quatro pistas PCI Express. Os servidores disponíveis podem combinar até 4 unidades de estados sólido U.2 NVMe.[35]
U.3 é construído na especificação U.2 e usa o mesmo conector SFF-8639. É um padrão 'tri-mode', combinando suporte SAS, SATA e NVMe em um único controlador. U.3 também pode oferecer suporte a hot-swap entre as diferentes unidades onde o suporte de firmware está disponível. Unidades U.3 ainda são compatíveis com U.2, mas unidades U.2 não são compatíveis com hosts U.3.
M.2, anteriormente conhecido como Next Generation Form Factor (NGFF), usa um barramento de computador de unidade de estado sólido M.2 NVMe. As interfaces fornecidas através do conector M.2 são PCI Express 3.0 ou PCI Express 4.0 (até quatro vias).
NVM Express over Fabrics (NVMe-oF) é o conceito de usar um protocolo de transporte em uma rede para conectar dispositivos NVMe remotos, ao contrário do NVMe comum, onde os dispositivos NVMe físicos sãoconectados a um barramento PCIe diretamente ou por um switch PCIe a um barramento PCIe. Em agosoto de 2017, um padrão para o uso de NVMe sobre Fibre Channel (FC) foi apresentado pela organização de padrões International Committee for Information Technology Standards (ICITS), e essa combinação é frequentemente chamada de FC-NVMe ou às vezes NVMe/FC.[36]
A partir de maio de 2021, os protocolos de transporte NVMe suportados são:
O padrão NVMe sobre Fabrics foi publicado pela NVM Express, Inc. em 2016.[41][42]
O software a seguir implemente o protocolo NVMe-oF:
O Advanced Host Controller Interface (AHCI) tem o benefício de ampla compatibilidade de software, mas tem a desvantagem de não oferecer desempenho ideal quando usado com SSDs conectados via barramento PCI Express. Como uma interface de dispositivo lógico, o AHCI foi desenvolvido quando o objetivo de um adaptador de barramento de host (HBA) em um sistema era conectar o subsistema de CPU/memória a um subsistema de armazenamento muito mais lento baseado em mídia magnética rotativa. Como resultado, o AHCI apresenta certas ineficiências quando usado com dispositivos SSD, que se comportam muito mais como RAM do que como mídia giratória.[7]
A interface do dispositivo NVMe foi projetada desde o início, aproveitando a latência e o paralelismo mais baixos dos SSDs PCI Express e complementando o paralelismo de CPUs, plataformas e aplicativos contemporâneos. Em alto nível, as vantagens básicas do NVMe sobre o AHCI estão relacionadas à sua capacidade de explorar o paralelismo no hardware e software do host, manifestado pelas diferenças nas profuncidades da fila de comandos, eficiência do processamento de interrupção, número de acessos a registrador não cacheáveis, etc., resultando em várias melhorias de desempenho.[7][49]:17–18
A tabela abaixo resume as diferenças de alto nível entre as interfaces de dispositivo lógico NVMe e AHCI.
AHCI | NVMe | |
---|---|---|
Profundidade máxima da fila | Uma fila de comandos; Até 32 comandos por fila |
Até 65535 filas;[50] Até 65536 comandos por fila |
Acessos de registro não cacheáveis (2000 ciclos cada) |
Seis por comando não enfileirado; nove por comando na fila |
Dois por comando |
Interromper | Uma única interrupção | Até 2048 interrupções MSI-X |
Paralelismo e múltiplos threads |
Requer bloqueio de sincronização para emitir um comando |
Sem bloqueio |
Eficiência para comandos de 4 KB |
Os parâmetros de comando exigem duas buscas de DRAM de host serializadas |
Obtém parâmetros de comando em uma busca de 64 bytes |
Transmissão de dados | Half-duplex | Full-duplex |
A ferramenta nvmecontrol
é usada para controlar um disco NVMe a partir da linha de comando do FreeBSD. Foi adicionado no FreeBSD 9.2.[87]
Ferramentas de espaço do usuário NVM-Express para Linux.[88]
NVMe is designed from the ground up to deliver high bandwidth and low latency storage access for current and future NVM technologies.