stringtranslate.com

Búfer de disco

En esta unidad de disco duro, la placa controladora contiene un circuito integrado de RAM que se utiliza para el búfer del disco.
Una unidad de disco duro Western Digital de 500 GB con un búfer de 16 MB

En el almacenamiento de una computadora , un búfer de disco (a menudo llamado ambiguamente caché de disco o búfer de caché ) es la memoria integrada en una unidad de disco duro (HDD) o unidad de estado sólido (SSD) que actúa como un búfer entre el resto de la computadora y el plato del disco duro físico o la memoria flash que se utiliza para el almacenamiento. [1] Las unidades de disco duro modernas vienen con entre 8 y 256  MiB de dicha memoria, y las unidades de estado sólido vienen con hasta 4 GB de memoria caché. [2]

Desde finales de la década de 1980, casi todos los discos vendidos tienen microcontroladores integrados y una interfaz ATA , Serial ATA , SCSI o Fibre Channel . El circuito de la unidad suele tener una pequeña cantidad de memoria, que se utiliza para almacenar los datos que van y vienen de los platos del disco.

El búfer de disco es físicamente distinto y se utiliza de manera diferente al caché de páginas que normalmente guarda el sistema operativo en la memoria principal de la computadora . El búfer del disco está controlado por el microcontrolador de la unidad de disco duro y el caché de la página está controlado por la computadora a la que está conectado ese disco. El búfer del disco suele ser bastante pequeño, oscilando entre 8 MB y 4 GB, y la caché de páginas generalmente es toda la memoria principal no utilizada. Si bien los datos del caché de la página se reutilizan varias veces, los datos del búfer del disco rara vez se reutilizan. [3] En este sentido, los términos caché de disco y búfer de caché son nombres inapropiados; La memoria del controlador integrado se llama más apropiadamente buffer de disco .

Tenga en cuenta que los controladores de matriz de discos , a diferencia de los controladores de discos , suelen tener una memoria caché normal de alrededor de 0,5 a 8 GiB.

Usos

Lectura anticipada/lectura retrasada

Cuando el controlador de un disco ejecuta una lectura física, el actuador mueve el cabezal de lectura/escritura al cilindro correcto (o cerca de él). Después de un poco de asentamiento y posiblemente de una actuación precisa, el cabezal de lectura comienza a recoger datos de la pista, y todo lo que queda por hacer es esperar hasta que la rotación del plato traiga los datos solicitados.

Los datos leídos antes de la solicitud durante esta espera no son solicitados pero son gratuitos, por lo que normalmente se guardan en el búfer del disco en caso de que se soliciten más adelante.

De manera similar, los datos se pueden leer de forma gratuita detrás del solicitado si el cabezal puede mantener el rumbo porque no hay otra lectura que ejecutar o la siguiente actuación puede comenzar más tarde y aún completarse a tiempo. [4]

Si varias lecturas solicitadas están en la misma pista (o cerca en una pista en espiral), la mayoría de los datos no solicitados entre ellas se leerán tanto por delante como por detrás.

Coincidencia de velocidad

La velocidad de la interfaz de E/S del disco a la computadora casi nunca coincide con la velocidad a la que se transfieren los bits hacia y desde el plato del disco duro . El búfer de disco se utiliza para que tanto la interfaz de E/S como el cabezal de lectura/escritura del disco puedan funcionar a máxima velocidad.

Escribir aceleración

El microcontrolador integrado en el disco puede indicarle a la computadora principal que la escritura en el disco se ha completado inmediatamente después de recibir los datos de escritura, antes de que los datos se escriban realmente en el plato. Esta señal temprana permite que la computadora principal continúe funcionando aunque los datos aún no se hayan escrito. Esto puede ser algo peligroso, porque si se corta la energía antes de que los datos se fijen permanentemente en el medio magnético, los datos se perderán del búfer del disco y el sistema de archivos del disco puede quedar en un estado inconsistente.

En algunos discos, este período vulnerable entre la señal de que la escritura se completó y la corrección de los datos puede ser arbitrariamente largo, ya que la escritura puede diferirse indefinidamente por las nuevas solicitudes que llegan. Por este motivo, el uso de la aceleración de escritura puede resultar controvertido. Sin embargo, se puede mantener la coherencia utilizando un sistema de memoria respaldado por batería para almacenar datos en caché, aunque esto normalmente sólo se encuentra en controladores RAID de alta gama .

Alternativamente, el almacenamiento en caché se puede simplemente desactivar cuando la integridad de los datos se considere más importante que el rendimiento de escritura. Otra opción es enviar datos al disco en un orden cuidadosamente administrado y emitir comandos de "vaciado de caché" en los lugares correctos, lo que generalmente se conoce como implementación de barreras de escritura .

Cola de comandos

Los discos SATA más nuevos y la mayoría de los discos SCSI pueden aceptar múltiples comandos mientras cualquier comando está en operación a través de "cola de comandos" (consulte NCQ y TCQ ). Estos comandos son almacenados por el controlador integrado del disco hasta que se completan. Una ventaja es que los comandos se pueden reordenar para procesarlos de manera más eficiente, de modo que los comandos que afectan a la misma área de un disco se agrupen. Si una lectura hace referencia a los datos en el destino de una escritura en cola, se devolverán los datos que se van a escribir.

NCQ generalmente se usa en combinación con el almacenamiento en búfer de escritura habilitado. En el caso de un comando FPDMA de lectura/escritura con el bit Force Unit Access (FUA) establecido en 0 y el almacenamiento en búfer de escritura habilitado, un sistema operativo puede ver que la operación de escritura finaliza antes de que los datos se escriban físicamente en el medio. En el caso de que el bit FUA esté establecido en 1 y el almacenamiento en búfer de escritura esté habilitado, la operación de escritura regresa solo después de que los datos se escriben físicamente en el medio.

Control de caché desde el host

vaciado de caché

Los datos que se aceptaron en la caché de escritura de un dispositivo de disco eventualmente se escribirán en los platos del disco, siempre que no se produzca una condición de inanición como resultado de una falla del firmware y que el suministro de energía del disco no se interrumpa antes de que las escrituras en caché se fuercen a los platos del disco. Para controlar la caché de escritura, la especificación ATA incluía los comandos FLUSH CACHE (E7h) y FLUSH CACHE EXT (EAh). Estos comandos hacen que el disco complete la escritura de datos desde su caché y el disco devolverá un buen estado después de que los datos de la caché de escritura se escriban en el medio del disco. Además, cuando la unidad recibió el comando STANDBY IMMEDIATE, en el disco este comando estacionará el cabezal, en el medio flash este comando guardará la tabla de mapeo FTL . [5]

Un sistema operativo enviará los comandos FLUSH CACHE y STANDBY IMMEDIATE a las unidades de disco duro durante el proceso de apagado.

El vaciado de caché obligatorio se utiliza en Linux para barreras de escritura en algunos sistemas de archivos (por ejemplo, ext4 ), junto con el comando de escritura Force Unit Access para bloques de confirmación de diario . [6]

Acceso a la unidad de fuerza (FUA)

Force Unit Access (FUA) es una opción de comando de escritura de E/S que fuerza los datos escritos hasta su almacenamiento estable. [7] Comandos de escritura FUA (WRITE DMA FUA EXT – 3Dh, WRITE DMA QUEUED FUA EXT – 3Eh, WRITE MULTIPLE FUA EXT – CEh), a diferencia de los comandos correspondientes sin FUA, escriben datos directamente en el medio, independientemente de si se escribe en caché en el dispositivo está habilitado o no. El comando de escritura FUA no regresará hasta que los datos se escriban en el medio, por lo tanto, los datos escritos por un comando de escritura FUA completo están en el medio permanente incluso si el dispositivo está apagado antes de emitir un comando FLUSH CACHE. [8] [ enlace muerto ] [9]

FUA apareció en el conjunto de comandos SCSI y luego fue adoptado por SATA con NCQ . FUA es más detallado ya que permite forzar una sola operación de escritura en medios estables y, por lo tanto, tiene un menor impacto en el rendimiento general en comparación con los comandos que vacían todo el caché del disco, como la familia de comandos ATA FLUSH CACHE. [9] [10]

Windows (Vista y versiones posteriores) admite FUA como parte de NTFS transaccional , pero solo para discos SCSI o Fibre Channel donde la compatibilidad con FUA es común. [11] No se sabe si una unidad SATA que admita comandos de escritura FUA realmente respetará el comando y escribirá datos en los platos del disco según las instrucciones; [ cita necesaria ] por lo tanto, Windows 8 y Windows Server 2012 envían comandos para vaciar la caché de escritura del disco después de ciertas operaciones de escritura. [12] [ enlace muerto ]

Aunque el kernel de Linux obtuvo soporte para NCQ alrededor de 2007, SATA FUA permanece deshabilitado de forma predeterminada debido a las regresiones que se encontraron en 2012 cuando se probó el soporte del kernel para FUA. [13] [14] El kernel de Linux admite FUA en el nivel de capa de bloque. [15]

Ver también

Referencias

  1. ^ Mark Kyrnin. "Qué buscar en un disco duro". acerca de.com . Archivado desde el original el 4 de abril de 2015 . Consultado el 20 de diciembre de 2014 . El búfer de una unidad es una cantidad de RAM en la unidad para almacenar datos a los que se accede con frecuencia desde la unidad.
  2. ^ "Samsung SSD 860 PRO | Samsung V-NAND Consumer SSD | Sitio web global de Samsung Semiconductor". Samsung . Archivado desde el original el 6 de abril de 2018 . Consultado el 16 de julio de 2018 . MEMORIA CACHÉ: 4 GB DDR4 de bajo consumo (4096 GB)
  3. ^ Charles M. Kozierok (17 de abril de 2001). "Tamaño de caché interna (búfer)". pcguide.com . Consultado el 20 de diciembre de 2014 .
  4. ^ Discos para centros de datos.
  5. ^ Hitachi (2006). Especificación de la unidad de disco Deskstar 7K80, cuarta edición (revisión 1.6) (12 de septiembre de 2006) final . Tecnologías de almacenamiento global de Hitachi. págs.99, 130, 131.
  6. ^ Christoph Hellwig; Theodore Ts'o . "¿Ext4 envía FUA para vaciar la memoria caché del disco?". spinics.net . Consultado el 18 de marzo de 2014 .
  7. ^ Jonathan Corbet (18 de agosto de 2010). "El fin de las barreras de bloque". LWN.net . Consultado el 27 de junio de 2015 .
  8. ^ "Tecnología de la información - AT Adjunto 8 - Conjunto de comandos ATA/ATAPI (ATA8-ACS)" (PDF) . T13/1699-D, revisión 6a, 6 de septiembre de 2008 . American National Standards Institute, Inc. Archivado desde el original (PDF) el 6 de agosto de 2020 . Consultado el 14 de diciembre de 2020 .
  9. ^ ab Gregory Smith (2010). PostgreSQL 9.0: alto rendimiento . Packt Publishing Ltd. pág. 78.ISBN 978-1-84951-031-8.
  10. ^ Bruce Jacob; Spencer Ng; David Wang (2010). Sistemas de memoria: caché, DRAM, disco . Morgan Kaufman. pag. 734.ISBN 978-0-08-055384-9.
  11. ^ "Implementación de NTFS transaccional (Windows)". msdn.microsoft.com. 05/12/2013 . Consultado el 24 de enero de 2014 .
  12. ^ "Acceso forzado a la unidad | Trabajando duro en TI". Workinghardinit.wordpress.com. 2012-10-12. Archivado desde el original el 12 de enero de 2014 . Consultado el 24 de enero de 2014 .
  13. ^ "Regresión relacionada con el almacenamiento en Linux-next 20120824". 2012-09-12 . Consultado el 27 de junio de 2015 .
  14. ^ "Revertir" libata: habilite la detección de fua de disco SATA de forma predeterminada"". GitHub . 2012-09-13 . Consultado el 27 de junio de 2015 .
  15. ^ "Documentación del kernel de Linux: Documentación/bloque/writeback_cache_control.txt". kernel.org . 2013-08-12 . Consultado el 24 de enero de 2014 .