
Na
última parte da série Introdução à SSD, falamos sobre a história da aparência de discos. A segunda parte mostrará as interfaces de interação com os drives.
A comunicação entre o processador e os periféricos ocorre de acordo com as convenções predefinidas chamadas interfaces. Esses acordos regem o nível de interação físico e de software.
Interface - um conjunto de ferramentas, métodos e regras de interação entre elementos do sistema.
A implementação física da interface afeta os seguintes parâmetros:
- largura de banda do canal de comunicação;
- número máximo de dispositivos conectados simultaneamente;
- o número de erros que ocorrem.
As interfaces de disco são criadas nas
portas de E / S , que são o oposto da
E / S na memória e não ocupam espaço no espaço de endereço do processador.
Portas paralelas e seriais
De acordo com o método de troca de dados, as portas de entrada e saída são divididas em dois tipos:
Como o nome indica, a porta paralela envia uma palavra de máquina que consiste em vários bits de cada vez. Uma porta paralela é a maneira mais fácil de trocar dados, pois não requer soluções de circuitos complexas. No caso mais simples, cada bit de uma palavra de máquina é enviado em sua própria linha de sinal e duas linhas de sinal de serviço são usadas para feedback: Os
dados estão prontos e os
dados são recebidos .
As portas paralelas, à primeira vista, são dimensionadas perfeitamente: mais linhas de sinal - mais bits são transmitidos ao mesmo tempo e, portanto, maior rendimento. No entanto, devido a um aumento no número de linhas de sinal, surge uma interação de interferência entre elas, levando a uma distorção das mensagens transmitidas.
As portas seriais são o oposto do paralelo. Os dados são enviados um bit de cada vez, o que reduz o número total de linhas de sinal, mas complica o controlador de E / S. O controlador do transmissor recebe a palavra da máquina de cada vez e deve transmitir um bit de cada vez, e o controlador do receptor, por sua vez, deve receber bits e armazenar na mesma ordem.
Um pequeno número de linhas de sinal permite aumentar a frequência de transmissão de mensagens sem interferência.
SCSI
A Interface SCSI (Small Computer Systems Interface) apareceu em 1978 e foi originalmente projetada para integrar dispositivos de vários perfis em um único sistema. A especificação SCSI-1 previa a conexão de até 8 dispositivos (junto com o controlador), como:
- scanners
- unidades de fita (serpentinas);
- drives ópticos;
- unidades de disco e outros dispositivos.
O SCSI foi originalmente chamado de Shugart Associates System Interface (SASI), mas o comitê de padronização não teria aprovado o nome da empresa e, após um dia de brainstorming, o nome SCSI (Small Computer Systems Interface) apareceu. O "pai" da SCSI, Larry Boucher, implicava que a abreviação seria pronunciada "sexy", mas Dal Allan dizia "ssuzzy". Posteriormente, a pronúncia de "contos" firmemente enraizada neste padrão.
Na terminologia SCSI, os dispositivos conectados são divididos em dois tipos:
- iniciadores;
- dispositivos de destino.
O iniciador envia um comando ao dispositivo de destino, que envia uma resposta ao iniciador. Os iniciadores e os dispositivos de destino estão conectados a um barramento SCSI comum, cuja taxa de transferência no padrão SCSI-1 é de 5 MB / s.
A topologia de barramento comum usada impõe várias limitações:
- nas extremidades do barramento são necessários dispositivos especiais - terminadores;
- a largura de banda do barramento é compartilhada entre todos os dispositivos;
- o número máximo de dispositivos conectados simultaneamente é limitado.
Os dispositivos no barramento são identificados por um número exclusivo chamado
ID de destino SCSI . Cada unidade SCSI no sistema é representada por pelo menos um dispositivo lógico, cujo endereçamento ocorre de acordo com um número de unidade lógica (LUN) exclusivo dentro do dispositivo físico.
Os comandos no SCSI são enviados como CDBs (Command Descriptor
Blocks ), consistindo no código de operação e nos parâmetros de comando. O padrão descreve mais de 200 equipes, divididas em quatro categorias:
- Obrigatório - deve ser suportado pelo dispositivo;
- Opcional - pode ser implementado;
- Específico do fornecedor - usado por um fabricante específico;
- Obsoleto - comandos obsoletos.
Entre as muitas equipes, apenas três são obrigatórias para dispositivos:
- UNIDADE DE TESTE PRONTA - verificação de prontidão do dispositivo;
- REQUEST SENSE - solicita o código de erro do comando anterior;
- INQUÉRITO - solicitação das principais características do dispositivo.
Após receber e processar o comando, o dispositivo de destino envia ao iniciador um código de status que descreve o resultado da execução.
Melhorias adicionais no SCSI (especificações SCSI-2 e Ultra SCSI) expandiram a lista de comandos usados e aumentaram o número de dispositivos conectados para 16, e a velocidade de troca de dados no barramento em até 640 MB / s. Como o SCSI é uma interface paralela, um aumento na frequência da troca de dados foi associado a uma diminuição no comprimento máximo do cabo e levou a inconveniência no uso.
Começando com o padrão Ultra-3 SCSI, o suporte para "hot plug" apareceu - conectando dispositivos quando a energia está ligada.
O primeiro SSD SCSI conhecido é o M-Systems FFD-350, lançado em 1995. O disco era de alto custo e não generalizado.
Atualmente, o SCSI paralelo não é uma interface popular de montagem em disco, mas o conjunto de comandos ainda é muito usado nas interfaces USB e SAS.
ATA / PATA
A
interface ATA (Advanced Technology Attachment), também conhecida como
PATA (Parallel ATA), foi desenvolvida pela Western Digital em 1986. O nome de marketing do padrão IDE (Integrated Drive Electronics - “eletrônica integrada na unidade”) enfatizou uma inovação importante: o controlador da unidade foi incorporado à unidade, e não em uma placa de expansão separada.
A decisão de colocar o controlador dentro da unidade resolveu vários problemas ao mesmo tempo. Em primeiro lugar, a distância do inversor ao controlador diminuiu, o que afetou positivamente as características do inversor. Em segundo lugar, o controlador interno foi "afiado" apenas para um determinado tipo de unidade e, consequentemente, era mais barato.
O ATA, como o SCSI, usa um método de E / S paralela, que afeta os cabos usados. Para conectar discos usando a interface IDE, são necessários cabos de 40 núcleos, também chamados de loops. Especificações posteriores usam loops de 80 núcleos: mais da metade dos quais estão ligados à terra para reduzir a interferência em altas frequências.
No cabo ATA, existem de dois a quatro conectores, um dos quais está conectado à placa-mãe e o restante às unidades. Ao conectar dois dispositivos com um loop, um deles deve ser configurado como
mestre e o segundo como
escravo . O terceiro dispositivo pode ser conectado apenas no modo somente leitura.
A posição do jumper define a função de um dispositivo específico. Os termos Mestre e Escravo em relação aos dispositivos não estão totalmente corretos, pois em relação ao controlador todos os dispositivos conectados são Escravos.
Uma inovação especial no ATA-3 é a introdução da
tecnologia de automonitoramento ,
análise e geração de relatórios (SMART) . Cinco empresas (IBM, Seagate, Quantum, Conner e Western Digital) uniram forças para padronizar a tecnologia de avaliação de integridade de unidades.
O suporte para unidades de estado sólido veio com a quarta versão do padrão, lançada em 1998. Esta versão do padrão fornecia taxas de troca de dados de até 33,3 MB / s.
O padrão apresenta requisitos rigorosos para os loops ATA:
- o loop deve ser plano;
- comprimento máximo do loop de 18 polegadas (45,7 centímetros).
O loop curto e largo era desconfortável e interferia no resfriamento. Tornou-se cada vez mais difícil aumentar a frequência de transmissão com cada próxima versão do padrão, e o ATA-7 resolveu o problema radicalmente: a interface paralela foi substituída pela serial. Depois disso, o ATA adquiriu a palavra Parallel e ficou conhecido como PATA, e a sétima versão do padrão recebeu um nome diferente - Serial ATA. O controle de versão SATA começou com um.
SATA
O padrão Serial ATA (SATA) foi introduzido em 7 de janeiro de 2003 e resolveu os problemas de seu antecessor pelas seguintes alterações:
- a porta paralela é substituída por uma serial;
- amplo loop de 80 núcleos substituído por 7 núcleos;
- a topologia de barramento comum foi substituída por uma conexão ponto a ponto.
Apesar do fato do padrão SATA 1.0 (SATA / 150, 150 MB / s) ser um pouco mais rápido que o ATA-6 (UltraDMA / 130, 130 MB / s), a transição para um método seqüencial de troca de dados foi "preparar o solo" para aumentar velocidades.
Dezesseis linhas de sinal para transmissão de dados no ATA foram substituídas por dois pares trançados: um para transmissão e outro para recepção. Os conectores SATA foram projetados para serem mais resilientes a várias reconexões, e a especificação SATA 1.0 torna possível o Hot Plug.
Alguns pinos nas unidades são mais curtos que todos os outros. Isso é feito para dar suporte ao Hot Swap. Durante o processo de substituição, o dispositivo "perde" e "encontra" as linhas em uma ordem predeterminada.
Pouco mais de um ano depois, em abril de 2004, a segunda versão da especificação SATA foi lançada. Além de acelerar até 3 Gb / s, o SATA 2.0 introduziu a tecnologia
Native Command Queuing (NCQ). Os dispositivos com suporte ao NCQ são capazes de organizar independentemente a ordem de execução dos comandos recebidos para alcançar o desempenho máximo.
Nos três anos seguintes, o Grupo de Trabalho SATA trabalhou para melhorar a especificação existente e os conectores compactos Slimline e micro SATA (uSATA) apareceram na versão 2.6. Esses conectores são uma cópia pequena do conector SATA original e foram projetados para unidades ópticas e pequenos discos em laptops.
Apesar do fato de a largura de banda da segunda geração SATA ser suficiente para discos rígidos, os SSDs exigiam mais. Em maio de 2009, a terceira versão da especificação SATA foi lançada com maior largura de banda de até 6 Gb / s.
Atenção especial foi dada aos SSDs na edição SATA 3.1. Um conector Mini-SATA (mSATA) foi adicionado para conectar unidades de estado sólido a laptops. Ao contrário do Slimline e do uSATA, o novo conector parecia um PCIe Mini, embora não fosse eletricamente compatível com o PCIe. Além do novo conector, o SATA 3.1 ostentava a capacidade de enfileirar comandos TRIM com comandos de leitura e gravação.
O comando TRIM notifica o SSD de blocos de dados que não carregam uma carga útil. Antes do SATA 3.1, a execução desse comando fazia com que o cache fosse liberado e a operação de E / S fosse interrompida, seguida pela execução do comando TRIM. Essa abordagem prejudicou o desempenho do disco durante as operações de exclusão.
A especificação SATA não acompanhou o rápido aumento na velocidade de acesso a unidades de estado sólido, o que levou ao surgimento em 2013 de um compromisso chamado SATA Express no padrão SATA 3.2. Em vez de dobrar novamente a largura de banda SATA, os desenvolvedores usaram o amplo barramento PCIe, cuja velocidade excede 6 Gb / s. As unidades habilitadas para SATA Express adquiriram seu próprio fator de forma chamado M.2.
SAS
O padrão SCSI rival com o ATA também não ficou parado e, apenas um ano após o surgimento do Serial ATA, em 2004, ele degenerou em uma interface serial. O nome da nova interface é
Serial Attached SCSI (SAS).
Embora o SAS tenha herdado o conjunto de instruções SCSI, as alterações foram significativas:
- interface serial
- Cabo de força de 29 núcleos;
- conexão ponto a ponto
A terminologia SCSI também foi herdada. O controlador ainda é chamado de iniciador e os dispositivos conectados são o alvo. Todos os dispositivos de destino e o iniciador formam o domínio SAS. No SAS, a largura de banda da conexão não depende do número de dispositivos no domínio, pois cada dispositivo usa seu próprio canal dedicado.
De acordo com a especificação, o número máximo de dispositivos conectados simultaneamente no domínio SAS excede 16 mil e, em vez do ID SCSI, o identificador de
nome mundial (WWN) é usado para endereçamento.
O WWN é um identificador exclusivo com um comprimento de 16 bytes, um análogo do endereço MAC para dispositivos SAS.
Apesar das semelhanças entre os conectores SAS e SATA, esses padrões não são totalmente compatíveis. No entanto, uma unidade SATA pode ser conectada ao conector SAS, mas não vice-versa. A compatibilidade entre discos SATA e o domínio SAS é fornecida usando o STP (SATA Tunneling Protocol).
A primeira versão do padrão SAS-1 possui uma largura de banda de 3 Gb / s, e a mais moderna, SAS-4, melhorou esse número em 7 vezes: 22,5 Gb / s.
PCIe
Peripheral Component Interconnect Express (PCI Express, PCIe) - uma interface serial para transferência de dados, que apareceu em 2002. O desenvolvimento foi iniciado pela Intel e posteriormente transferido para uma organização especial - PCI Special Interest Group.
A interface serial PCIe não foi exceção e tornou-se uma continuação lógica do PCI paralelo, projetado para conectar placas de expansão.
O PCI Express é significativamente diferente do SATA e SAS. A interface PCIe possui um número variável de linhas. O número de linhas é igual à potência de duas e varia de 1 a 16.
O termo "linha" no PCIe não significa uma linha de sinal específica, mas um canal de comunicação full-duplex separado, consistindo nas seguintes linhas de sinal:
- recepção + e recepção-;
- transmissão + e transmissão-;
- quatro condutores de terra.
O número de linhas PCIe afeta diretamente a largura de banda máxima da conexão. O moderno padrão PCI Express 4.0 permite atingir 1,9 GB / s em uma única linha e 31,5 GB / s ao usar 16 linhas.
Os "apetites" dos SSDs estão crescendo muito rápido. Tanto o SATA quanto o SAS não têm tempo para aumentar sua largura de banda para acompanhar os SSDs, o que levou ao surgimento de SSDs com conexão PCIe.
Embora as placas de expansão PCIe estejam aparafusadas, o PCIe suporta troca a quente. Os pinos curtos do PRSNT (presente - presente) permitem garantir que o cartão esteja totalmente inserido no slot.
Os SSDs conectados via PCIe são regulados por um padrão de
especificação de interface de controlador de host de memória não volátil e estão incorporados em muitos fatores de forma, mas falaremos sobre eles na próxima parte.
Drives remotos
Ao criar grandes data warehouses, havia a necessidade de protocolos que permitissem conectar unidades localizadas fora do servidor. A primeira solução nessa área foi o
Internet SCSI (iSCSI), desenvolvido pela IBM e Cisco em 1998.
A idéia do iSCSI é simples: os comandos SCSI são agrupados em pacotes TCP / IP e enviados à rede. Apesar da conexão remota, a ilusão é criada para os clientes de que a unidade está conectada localmente. Uma rede de área de armazenamento (SAN) baseada em iSCSI pode ser construída na infraestrutura de rede existente. O uso do iSCSI reduz significativamente o custo de organização de uma SAN.
O ISCSI possui uma opção "premium" - FCP (
Fibre Channel Protocol ). SAN usando FCP é construído em links de fibra óptica dedicados. Essa abordagem requer equipamento de rede óptica adicional, mas difere em estabilidade e alto rendimento.
Existem muitos protocolos para o envio de comandos SCSI através de redes de computadores. No entanto, existe apenas um padrão que resolve o problema oposto e permite o envio de pacotes IP no barramento SCSI - IP sobre SCSI .
A maioria dos protocolos SAN usa o conjunto de comandos SCSI para gerenciar unidades, mas há exceções, como o simples
ATA over Ethernet (AoE). O protocolo AoE envia comandos ATA em pacotes Ethernet, mas as unidades são exibidas como SCSI no sistema.
Com o advento das unidades NVM Express, o iSCSI e o FCP deixaram de atender às crescentes demandas dos SSDs. Duas soluções apareceram:
- remoção do barramento PCI Express fora do servidor;
- Criação do protocolo NVMe over Fabrics.
A remoção do barramento PCIe está associada à criação de equipamentos de comutação complexos, mas não faz alterações no protocolo.
O NVMe over Fabrics se tornou uma boa alternativa ao iSCSI e FCP. O NVMe-oF usa links de fibra ótica e o conjunto de comandos do NVM Express.
DDR-T
Os padrões iSCSI e NVMe-oF resolvem o problema de conectar unidades remotas como locais, enquanto a Intel seguiu o caminho contrário e aproximou a unidade o mais possível do processador. A escolha caiu nos slots DIMM nos quais a RAM está conectada. A largura de banda máxima do canal DDR4 é de 25 GB / s, o que excede significativamente a velocidade do barramento PCIe. Foi assim que surgiu o SSD de memória persistente Intel® Optane ™ DC.
Para conectar a unidade aos slots DIMM, o protocolo
DDR-T foi inventado, física e eletricamente compatível com DDR4, mas exigindo um controlador especial que veja a diferença entre a barra de memória e a unidade. A velocidade de acesso à unidade é menor que a RAM, mas maior que o NVMe.
O DDR-T está disponível apenas nos processadores Intel® Cascade Lake ou posterior.
Conclusão
Quase todas as interfaces percorreram um longo caminho desde a transferência de dados serial até a paralela. A velocidade dos SSDs está crescendo rapidamente: ontem, os SSDs eram uma novidade, mas hoje o NVMe não é mais uma surpresa.
No nosso laboratório Selectel, você pode testar os SSDs e as unidades NVMe.