A história do armazenamento é uma corrida entre armazenamento e capacidade de processamento. No caminho para o nirvana do computador, há um gargalo - o armazenamento de bilhões de zeros e uns. O mais novo jogador neste campo é Non-Volatile Memory Express (NVMe), que é algo como um híbrido de várias soluções técnicas anteriores.
A primeira geração de computadores domésticos usava disquetes e cassetes compactas como dispositivos de armazenamento mas à medida que os computadores cresciam, também crescia a importância do armazenamento. Na década de 1990, os discos rígidos se espalharam, permitindo armazenar primeiro megabytes e depois gigabytes de informações. Como resultado, a necessidade de um sistema de comunicação rápido entre o inversor e o restante do sistema cresceu. Naquela época, a interface ATA (IDE) era mais comumente usada no modo Programmed Input-Output (PIO).
Como resultado, a tecnologia mudou para Direct Memory Access (DMA), UDMA, também conhecido como Ultra ATA e Parallel ATA, e interfaces baseadas em SCSI em computadores Apple e na maioria dos servidores. Como resultado, Parallel ATA tornou-se Serial ATA (SATA), e Parallel SCSI tornou-se Serial Attached SCSI (SAS). O SATA era usado principalmente em laptops e desktops antes da chegada do NVMe e das unidades de estado sólido.
Todas essas interfaces foram projetadas para acompanhar os dispositivos de armazenamento. Nesse sentido, o NVMe está fora de cogitação com sua integração ao sistema. O NVMe também difere por não estar vinculado a nenhuma interface ou conector específico, o que pode ser confuso. Quem pode separar M.2 e U.2, sem falar que protocolo a interface usa, seja SATA ou NVMe?
Vamos entender o mundo maravilhoso e estranho do NVMe.
Aparência enganosa
Elementos SATA Express, funcionalmente semelhantes a M.2.
Peça a alguém para mostrar a você o slot NVMe na placa-mãe e você provavelmente verá uma imagem do slot M.2, pois ele se tornou o drive de estado sólido (SSD) mais popular em produtos eletrônicos de consumo. Ao mesmo tempo, mesmo um slot M.2 com um drive de estado sólido inserido nele pode não pertencer ao NVMe, uma vez que esta interface também usa SATA.
A placa ao lado do slot M.2 geralmente indica qual tecnologia é compatível. Também é uma boa idéia ler as instruções da placa-mãe. O motivo da confusão é que inicialmente havia um padrão Mini-SATA (mSATA) para TTN, que usava o fator de forma PCIe Mini Card, que posteriormente evoluiu para o fator de forma M.2 e a interface U.2. O último é mais parecido com interfaces SATA e SAS e combina dois canais, SATA e PCIe, em uma interface para conectar TTN.
Enquanto isso, o padrão M.2 (após uma breve excursão ao padrão SATA Express de curta duração) foi expandido para oferecer suporte não apenas ao SATA, mas também ao AHCIcom NVMe. Portanto, os slots M.2 são frequentemente chamados incorretamente de "slots NVMe", quando na verdade o NVMe é um protocolo baseado em PCIe que não define nenhum fator de forma ou tipo de conector.
Interface M.2 com teclas B e M
Nesse ínterim, o fator de forma M.2 em si é bastante versátil - ou confuso, é como qualquer um. Fisicamente, pode ter 12, 16, 22 e 30 mm de largura e comprimentos de suporte de 16 a 110 mm. Na borda do slot, uma série de etiquetas é aplicada para indicar a funcionalidade e corresponder às etiquetas do próprio slot. Na maioria das vezes, essas são as marcas B e M da lista de marcas-chave, que, por exemplo, contém o seguinte:
A: 2x PCIe x1, USB 2.0, I2C e DP x4.
B: PCIe x2, SATA, USB 2.0 / 3.0, áudio, etc.
E: 2x PCIe x1, USB 2.0, I2C, etc.
M: PCIe x4, SATA e SMBus.
Acontece que o tamanho físico da placa de expansão M.2 é de até 32 peças, e isso antes de levarmos em consideração 12 modificações possíveis da lista. Felizmente, a indústria em geral parece ter adotado um padrão comum de 22 mm de largura para cartões de armazenamento com comprimentos limitados. Como resultado, os TTNs NVMe são marcados como "2242", o que significa 22 mm de largura e 42 mm de comprimento. Os cartões TTN podem ser marcados com as letras B, M ou ambas.
É importante observar que hoje os slots M.2 são usados ativamente como expansão PCIe em condições de restrição. Portanto, os cartões WiFi costumam estar no formato M.2.
Definindo NVMe
Isso nos leva à definição básica de NVMe: é uma interface padrão para drives PCIe de conexão direta. Ele difere do SATA porque o primeiro converte o protocolo PCIe para o protocolo SATA, que deve ser interpretado por um chip especial na unidade antes que quaisquer comandos relacionados ao armazenamento de dados possam ser executados.
Em vez disso, o NVMe define uma interface que pode ser usada diretamente em qualquer sistema operacional que tenha um driver NVMe. Os comandos são enviados para o drive NVMe, que os executa para leitura ou gravação ou para realizar algum tipo de operação de manutenção, como TRIM... Como qualquer dispositivo que afirma ser um dispositivo NVMe pode ser considerado um TTN (NAND Flash, 3D XPoint, etc.), o protocolo NVMe foi projetado com baixa latência e altas taxas de transferência de pacote em mente.
O Optane SSD da Intel, como o 3D XPoint, funciona sem problemas, independentemente da carga de trabalho
Recentemente, o recurso NVMe como um buffer de memória local, Host Memory Buffer ( HMB ), ganhou popularidade . Esta é uma tentativa de se livrar da necessidade de armazenar dados em buffer em DRAM usando NAND Flash tipo TTN. O recurso usa parte da memória do sistema como buffer, perdendo relativamente pouco em desempenho, enquanto o buffer é usado principalmente para armazenar em cache a tabela de endereços.
No longo prazo, dado o ritmo de desenvolvimento do armazenamento, tecnologias como o 3D XPoint tornam até mesmo esses truques desnecessários. A velocidade de acesso ao mesmo 3D XPoint é mais próxima da DRAM do que do NAND Flash. Uma vez que TTNs do tipo 3D XPoint não precisam de um buffer DRAM, seu aumento em popularidade pode levar ao fato de que o NVMe já estará otimizado para eles.
Hacking NVMe
Memória em núcleos magnéticos de 64 × 64 (4 kB)
Vale a pena pensar no que mais pode ser feito com NVMe, exceto como comprar um TTN e colocá-lo em um slot M.2 B ou M. Aqui você precisa decidir o que é mais interessante para você - hackear a unidade (que seja apenas algum tipo de DRAM ou SRAM), ou o próprio slot M.2.
Os slots PCIe completos são grandes e as placas de expansão oferecem bastante espaço para componentes volumosos, como chips BGA e sistemas de resfriamento gigantescos. Pelo contrário, as placas de expansão M.2 são projetadas para soluções pequenas e compactas que podem caber em um laptop. Você pode, por exemplo, combinar um FPGA com o hardware SerDes e PCIe necessário no fator de forma M.2 para criar uma placa de expansão compacta para laptops e dispositivos embarcados.
Hackers recentes sugerem adicionar suporte a NVMe ao Raspberry Pi, substituir o TTN no Pinebook Pro por uma placa WiFi e ler a unidade Flash NVMe do iPhone usando um adaptador PCIe ZIF.
Ao mesmo tempo, ninguém proíbe tentar combinar algo muito estranho - por exemplo, um drive NVMe em núcleos magnéticos.
Conclusão
Olhando para trás, décadas de tecnologia de computação, fica claro que a distinção entre memória e armazenamento sempre existiu. Além disso, a memória sempre serviu como dispositivos voláteis, como SRAM ou DRAM. Recentemente, essa distinção se tornou cada vez menos significativa. NAND Flash com interface NVMe já nos promete latência potencialmente muito baixa e velocidades de vários gigabytes por segundo (especialmente usando PCIe 4.0), mas este não é o fim da história.
O novo recurso mais avançado são os DIMMs de "memória somente leitura", que estão localizados em slots de memória regulares. Eles usam tecnologia de estado sólidoIntel Optane para expandir a memória do sistema até 512 GB por módulo. Esses módulos, é claro, funcionam apenas em servidores Intel até agora. Eles são usados para armazenar bancos de dados em buffer, cujos grandes volumes não permitem o uso de memória comum como buffer (por exemplo, terabytes de DDR4 DIMM).
Se tivermos um dispositivo de armazenamento muito rápido e não volátil conectado diretamente ao controlador de memória do processador, podemos reduzir a latência ao mínimo absoluto. E embora 3D XPoint (como um tipo de memória de mudança de fase) ainda não seja tão rápido quanto DDR SDRAM, ele nos mostra o que pode aparecer depois de NVMe, quando a diferença entre "memória do sistema" e "armazenamento de dados" desaparece completamente ou muda para irreconhecível .