¿Qué hace el buscador con el almacenamiento en estado sólido?

13

Con el almacenamiento mecánico, la operación del disco de bajo nivel seek()hace que los cabezales del disco duro se muevan a una ubicación para que estén listos para leer desde un área determinada del disco.

Con almacenamiento de estado sólido, como tarjetas SD, unidades flash y SSD, no hay partes móviles del hardware, solo señales eléctricas.

Suponiendo que una tecnología RAM no volátil NAND es la base del hardware, ¿qué función seek()desempeña realmente a nivel de hardware para dicho dispositivo?

Para ser claros, ya sé que sucede lo siguiente:

  1. El programa de espacio de usuario llama a la seek()llamada del sistema o el equivalente específico del sistema operativo

  2. Kernel interpreta la llamada del sistema y envía un mensaje al controlador SATA para buscar

  3. El controlador SATA interpreta el comando y le dice al dispositivo de disco conectado, que está en estado sólido, que busque (¿o tal vez sea lo suficientemente inteligente como para reconocer que está en estado sólido y ni siquiera lo dice?)

  4. Lo que no sé es, ¿el dispositivo de estado sólido lo hace ? con la orden de "buscar".

Si hay detalles que dependerían del sistema operativo, suponga una versión de escritorio relativamente estándar de GNU / Linux con la versión del kernel 3.2.

allquixotic
fuente
2
Creo que hace un gran NOP gordo. Broma aparte, si fuera una unidad SSD, haría una lectura "precautoria" en el caché, para asegurarme de que las cosas sucedan lo más rápido posible. Pero como esto es solo una vaga suposición de algo de lo que no tengo la menor idea,
tómalo
No creo que las operaciones de "búsqueda" ya se usen en la interfaz de almacenamiento de bajo nivel. Si existieran, simplemente cambiarían la posición almacenada para la próxima operación de E / S.
David Schwartz

Respuestas:

4

Si se refiere a Linux, la búsqueda sigue avanzando el número requerido de bytes. Por ejemplo:

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

Comenzará a copiar ceros 1024 bytes en el inicio de un disco, no importa si sdb es una tarjeta sd o una unidad ssd, debido a una pequeña cosa llamada abstracción, la mecánica real de esto se soluciona en un nivel inferior.

Actualizar

Ya veo lo que dices ahora. Siguiendo mi ejemplo de tarjeta SD, la memoria flash usa algo llamado páginas , y las páginas vienen en un tamaño particular. Cuando llega una búsqueda, el sistema operativo envía el comando a la tarjeta SD / controlador de tarjeta para pasar a una página determinada para leer y escribir.

MDMoore313
fuente
Soy consciente de que avanza lógicamente en el archivo , pero aparte del impacto lógico en el archivo en términos de "bloques" abstractos, ¿el hardware hace algo diferente cuando realmente se le dice que busque? Puede ver la lseek()llamada al sistema como un ejemplo específico si es necesario. Sé que esta llamada al sistema no solo hace la búsqueda lógica sino que también hace que los cabezales del HDD se muevan cuando se trata de un disco mecánico, entonces, ¿qué hace el SSD?
allquixotic
@allquixotic He actualizado mi respuesta.
MDMoore313
1
Incluso en un disco duro físico giratorio, el sistema operativo envía un comando (un comando SCSI, un comando ATA / SATA o un comando de almacenamiento masivo USB) para conducir para obtener LBA X. El host no termina diciéndole al disco que mueva el cabeza en cualquier nivel, el firmware de la unidad hace eso. Si desea tener una idea de lo que hace un firmware SSD en respuesta a los comandos de almacenamiento, consulte algunas de las especificaciones del proyecto Jasmine OpenSSD si puede encontrarlas, algo de eso explica las cosas en un nivel muy bajo.
LawrenceC