O que a busca faz com o armazenamento de estado sólido?

13

No armazenamento mecânico, a operação de disco de baixo nível seek()faz com que os cabeçotes do disco rígido sejam movidos para um local para que estejam prontos para ler em uma determinada área do disco.

Com o armazenamento em estado sólido, como cartões SD, pen drives e SSDs, não há partes móveis do hardware, apenas sinais elétricos.

Supondo que uma tecnologia de RAM não volátil da NAND seja a base do hardware, que função seek()realmente desempenha no nível de hardware para esse dispositivo?

Só para esclarecer, eu já sei que acontece o seguinte:

  1. O programa Userspace chama a seek()chamada do sistema ou o equivalente específico do SO

  2. O kernel interpreta a chamada do sistema e envia uma mensagem ao controlador SATA para procurar

  3. O controlador SATA interpreta o comando e diz ao dispositivo de disco conectado, que é estado sólido, para procurar (ou talvez seja inteligente o suficiente para reconhecer que é estado sólido e nem mesmo diz isso ??)

  4. O que eu não sei é que o dispositivo de estado sólido faz ??? com o comando "procurar".

Se houver detalhes que dependeriam do sistema operacional, assuma uma versão desktop relativamente padrão do GNU / Linux com a versão 3.2 do kernel.

allquixotic
fonte
2
Eu acho que faz um NOP grande e gordo. Brincadeiras à parte, se eu fosse uma unidade SSD, faria algumas leituras "preventivas" no cache, para garantir que as coisas acontecessem o mais rápido possível. Mas como este é apenas um vago palpite sobre algo que eu não tenho a menor idéia sobre, por isso levá-la com um grão de sal ...
ppeterka
Acho que as operações de "busca" não são mais usadas na interface de armazenamento de baixo nível. Se eles existissem, eles apenas alterariam a posição armazenada para a próxima operação de E / S.
David Schwartz

Respostas:

4

se você está se referindo ao linux, procure ainda avançar o número necessário de bytes. Por exemplo:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

Começará a copiar zeros 1024 bytes no início de um disco, não importa se sdb é um cartão sd ou unidade ssd, por causa de uma pequena coisa chamada abstração, a mecânica real disso é resolvida em um nível mais baixo.

Atualizar

Entendo o que você está dizendo agora. Seguindo o exemplo do meu cartão SD, a memória flash usa algo chamado páginas , e as páginas vêm em um tamanho específico. quando chega uma busca, o sistema operacional envia o comando ao cartão sd / controlador de cartão para ir para uma determinada página para leitura e gravação.

MDMoore313
fonte
Estou ciente de que ele avança no arquivo logicamente , mas, além do impacto lógico no arquivo em termos de "blocos" abstratos, o hardware faz algo diferente quando é solicitado a procurar? Você pode ver a lseek()chamada do sistema como um exemplo específico, se necessário. Eu sei que essa chamada do sistema não apenas faz a busca lógica, mas também faz com que os cabeçotes do HDD se movam ao lidar com um disco mecânico, então o que o SSD faz?
allquixotic
@allquixotic Atualizei minha resposta.
MDMoore313
1
Mesmo em um disco rígido giratório físico, o sistema operacional envia um comando (um comando SCSI, um comando ATA / SATA ou um comando de armazenamento em massa USB) para dirigir para obter o LBA X. O host na verdade não acaba dizendo à unidade para mover o em qualquer nível, o firmware da unidade faz isso. Se você quiser ter uma idéia do que um firmware SSD faz em resposta aos comandos de armazenamento, verifique algumas das especificações do projeto Jasmine OpenSSD, se você puder encontrá-las, algumas delas explicam as coisas em um nível muito baixo.
LawrenceC