Cylinder-head-sector ( CHS ) es un método temprano para dar direcciones a cada bloque físico de datos en una unidad de disco duro .
Es un sistema de coordenadas 3D formado por una cabeza de coordenadas verticales , un cilindro de coordenadas horizontal (o radial) y un sector de coordenadas angulares . Head selecciona una superficie circular: un plato en el disco (y uno de sus dos lados). El cilindro es una intersección cilíndrica a través de la pila de platos en un disco, centrada alrededor del eje del disco. Combinados, el cilindro y la cabeza se cruzan en una línea circular, o más precisamente: una franja circular de bloques de datos físicos llamada pista. Sector finalmente selecciona qué bloque de datos en esta pista se va a direccionar y se puede ver como una especie de componente angular: una porción de las pistas, o en este sistema de coordenadas, la parte de una pista en particular dentro de una porción en particular.
Se expusieron las direcciones CHS, en lugar de direcciones lineales simples (pasando de 0 al recuento total de bloques en el disco - 1), porque los primeros discos duros no venían con un controlador de disco integrado , que ocultaba el diseño físico. Se utilizó una tarjeta controladora genérica separada , de modo que el sistema operativo tenía que conocer la "geometría" física exacta de la unidad específica conectada al controlador, para direccionar correctamente los bloques de datos.
A medida que la geometría se volvió más complicada (por ejemplo, con la introducción de la grabación de bits de zona ) y los tamaños de las unidades crecieron con el tiempo, el método de direccionamiento CHS se volvió restrictivo. Desde finales de la década de 1980, los discos duros comenzaron a distribuirse con un controlador de disco integrado [1] que tenía un buen conocimiento de la geometría física; sin embargo, reportarían una geometría falsa a la computadora, por ejemplo, un número mayor de cabezas de las que realmente están presentes, para ganar más espacio direccionable. Estos valores lógicos de CHS serían traducidos por el controlador, por lo que el direccionamiento de CHS ya no correspondía a ningún atributo físico del variador. [2]
A mediados de la década de 1990, las interfaces de disco duro reemplazaron el esquema CHS con direccionamiento de bloque lógico (LBA), pero muchas herramientas para manipular la tabla de particiones del registro de arranque maestro (MBR) todavía alineaban las particiones con los límites del cilindro; por lo tanto, los artefactos del direccionamiento CHS todavía se veían en el software de partición a fines de la década de 2000. [2]
A principios de la década de 2010, las limitaciones de tamaño de disco impuestas por MBR se volvieron problemáticas y se diseñó la tabla de particiones GUID (GPT) como reemplazo; Las computadoras modernas que usan firmware UEFI sin compatibilidad con MBR ya no usan ninguna noción del direccionamiento CHS.
Definiciones
El direccionamiento CHS es el proceso de identificar sectores individuales (también conocido como bloque físico de datos) en un disco por su posición en una pista , donde la pista está determinada por los números de cabezal y cilindro . Los términos se explican de abajo hacia arriba, ya que el direccionamiento del disco, el sector es la unidad más pequeña. Los controladores de disco pueden introducir traducciones de direcciones para asignar posiciones lógicas a físicas, por ejemplo, la grabación de bits de zona almacena menos sectores en pistas más cortas (internas), los formatos de disco físico no son necesariamente cilíndricos y los números de sector en una pista pueden estar sesgados.
Sectores
Los disquetes y los controladores utilizan tamaños de sector físico de 128, 256, 512 y 1024 bytes (por ejemplo, PC / AX), por lo que los formatos con 512 bytes por sector físico se volvieron dominantes en la década de 1980. [3] [4]
El tamaño de sector físico más común para los discos duros en la actualidad es de 512 bytes, pero también ha habido discos duros con 520 bytes por sector para máquinas no compatibles con IBM. En 2005, algunos discos duros personalizados de Seagate utilizaron tamaños de sector de 1024 bytes por sector. Los discos duros de formato avanzado utilizan 4096 bytes por sector físico ( 4Kn ) [5] desde 2010, pero también podrán emular sectores de 512 bytes ( 512e ) durante un período de transición. [6]
Las unidades magneto-ópticas utilizan tamaños de sector de 512 y 1024 bytes en unidades de 5,25 pulgadas y 512 y 2048 bytes en unidades de 3,5 pulgadas.
En el direccionamiento de CHS, los números de sector siempre comienzan en 1 , no hay sector 0 , [1] lo que puede generar confusión ya que los esquemas de direccionamiento de sector lógico normalmente comienzan a contar con 0, por ejemplo, direccionamiento de bloque lógico (LBA) o "direccionamiento de sector relativo "utilizado en DOS.
Para geometrías de disco físico, el número máximo de sector viene determinado por el formato de bajo nivel del disco. Sin embargo, para el acceso al disco con el BIOS de máquinas compatibles con IBM-PC, el número de sector se codificó en seis bits, lo que resultó en un número máximo de 111111 (63) sectores por pista. Este máximo todavía está en uso para geometrías CHS virtuales.
Pistas
Las pistas son las delgadas franjas circulares concéntricas de sectores. Se requiere al menos una cabeza para leer una sola pista. Con respecto a las geometrías de disco, los términos pista y cilindro están estrechamente relacionados. Para una pista de disquete de una o dos caras es el término común; y para más de dos culatas, cilindro es el término común. Estrictamente hablando, una pista es una combinación dada que consta de sectores, mientras que un cilindro consta de sectores.CH
SPT
SPT×H
Cilindros
Un cilindro es una división de datos en una unidad de disco , como se usa en el modo de direccionamiento CHS de un disco de arquitectura de bloque fijo o en el modo de direccionamiento de registro de culata de cilindro (CCHHR) de un disco CKD .
El concepto es cortes concéntricos, huecos y cilíndricos a través de los discos físicos ( platos ), recogiendo las respectivas pistas circulares alineadas a través de la pila de platos. El número de cilindros de una unidad de disco es exactamente igual al número de pistas en una sola superficie en la unidad. Comprende el mismo número de pista en cada plato, abarcando todas esas pistas en cada superficie del plato que puede almacenar datos (sin importar si la pista es "mala" o no). Los cilindros están formados verticalmente por pistas . En otras palabras, la pista 12 en el plato 0 más la pista 12 en el plato 1, etc. es el cilindro 12.
Otras formas de dispositivo de almacenamiento de acceso directo (DASD), como los dispositivos de memoria de tambor o la celda de datos IBM 2321 , pueden proporcionar direcciones de bloques que incluyen una dirección de cilindro, aunque la dirección del cilindro no selecciona una porción cilíndrica (geométrica) del dispositivo. .
Jefes
Un dispositivo llamado cabezal lee y escribe datos en un disco duro manipulando el medio magnético que compone la superficie de un plato de disco asociado. Naturalmente, un plato tiene 2 lados y, por lo tanto, 2 superficies en las que se pueden manipular los datos; normalmente hay 2 cabezas por plato, una por lado. (A veces, el término lado se sustituye por cabezal, ya que los platos pueden estar separados de sus conjuntos de cabezal, como ocurre con los medios extraíbles de una unidad de disquete ).
El direccionamiento admitido en el código de BIOS compatibles con IBM-PC utilizó ocho bits para, teóricamente, hasta 256 cabezas contadas como cabeza 0 hasta 255 ( ). Sin embargo, un error en todas las versiones de Microsoft DOS / IBM PC DOS hasta la 7.10 inclusive hará que estos sistemas operativos se bloqueen al arrancar cuando se encuentren volúmenes con 256 cabezas [2] . Por lo tanto, todas las BIOS compatibles utilizarán asignaciones con hasta 255 cabezas ( ) únicamente, incluso en geometrías virtuales .CHS
FFh
00h..FEh
255×63
Esta rareza histórica puede afectar el tamaño máximo del disco en el antiguo código BIOS INT 13h , así como en el antiguo PC DOS o sistemas operativos similares:
(512 bytes/sector)×(63 sectors/track)×(255 heads (tracks/cylinder))×(1024 cylinders)=8032.5
MB , pero en realidad 512×63×256×1024=8064
MB produce lo que se conoce como límite de 8 GB . [7] En este contexto, la definición relevante de 8 GB = 8192 MB es otro límite incorrecto, porque requeriría CHS 512×64×256
con 64 sectores por pista.
Las pistas y los cilindros se cuentan desde 0, es decir, la pista 0 es la primera pista (la más exterior) en un disquete u otros discos cilíndricos. El código BIOS antiguo admitía diez bits en el direccionamiento CHS con hasta 1024 cilindros ( ). La adición de seis bits para los sectores y ocho bits para las cabezas da como resultado los 24 bits admitidos por la interrupción BIOS 13h . Restar el número de sector no permitido 0 en las pistas corresponde a 128 MB para un tamaño de sector de 512 bytes ( ); y confirma el límite (aproximadamente) de 8 GB . [8]1024=210
1024×256
128 MB=1024×256×(512 byte/sector)
8192-128=8064
El direccionamiento CHS comienza 0/0/1
con un valor máximo 1023/255/63
para 24=10+8+6
bits o 1023/254/63
para 24 bits limitado a 255 cabezas . Los valores de CHS utilizados para especificar la geometría de un disco deben contar el cilindro 0 y la cabeza 0, lo que da como resultado un máximo ( 1024/256/63
o) 1024/255/63
de 24 bits con (256 o) 255 cabezas. En CHS, las tuplas que especifican una geometría S en realidad significa sectores por pista, y donde la geometría (virtual) todavía coincide con la capacidad que el disco contiene C×H×S
sectores. A medida que se han utilizado discos duros más grandes, un cilindro se ha convertido también en una estructura de disco lógica, estandarizada [ cita requerida ] en 16 065 sectores ( 16065=255×63
).
El direccionamiento CHS con 28 bits ( EIDE y ATA-2 ) permite ocho bits para sectores que aún comienzan en 1, es decir, sectores 1 ... 255, cuatro bits para cabezas 0 ... 15 y dieciséis bits para cilindros 0 ... 65535. [9] Esto da como resultado un límite de aproximadamente 128 GB ; en realidad, 65536×16×255=267386880
sectores correspondientes a 130560 MB para un tamaño de sector de 512 bytes. [7] Los 28=16+4+8
bits en la especificación ATA-2 también están cubiertos por la Lista de interrupciones de Ralf Brown , y se publicó un antiguo borrador de trabajo de este estándar ahora vencido. [10]
Con un antiguo límite de BIOS de 1024 cilindros y el límite de ATA de 16 cabezales [11], el efecto combinado fue de 1024×16×63=1032192
sectores, es decir, un límite de 504 MB para el tamaño de sector 512. Los esquemas de traducción de BIOS conocidos como ECHS y ECHS revisado mitigaron esta limitación utilizando 128 o 240 en lugar de 16 cabezales, reduciendo simultáneamente el número de cilindros y sectores para encajar 1024/128/63
(límite ECHS: 4032 MB ) o 1024/240/63
(límite ECHS revisado: 7560 MB ) para el número total dado de sectores en un disco. [7]
Bloques y agrupaciones
Las comunidades Unix emplean el término bloque para referirse a un sector o grupo de sectores. Por ejemplo, la utilidad fdisk de Linux , antes de la versión 2.25, [12] mostraba tamaños de partición usando bloques de 1024 bytes .
Los clústeres son unidades de asignación de datos en varios sistemas de archivos ( FAT , NTFS , etc.), donde los datos consisten principalmente en archivos. Los clústeres no se ven afectados directamente por la geometría física o virtual del disco, es decir, un clúster puede comenzar en un sector cerca del final de una pista determinada y terminar en un sector de la siguiente pista física o lógica .CH
CH
Asignación de CHS a LBA
En 2002, la especificación ATA-6 introdujo un direccionamiento de bloque lógico opcional de 48 bits y declaró que el direccionamiento CHS era obsoleto, pero aún permitió implementar las traducciones ATA-5. [13] Como era de esperar, la fórmula de traducción de CHS a LBA dada a continuación también coincide con la última traducción de ATA-5 CHS. En la especificación ATA-5, el soporte de CHS era obligatorio para hasta 16 514 064 sectores y opcional para discos más grandes. El límite de ATA-5 corresponde a CHS 16383 16 63
o capacidades de disco equivalentes (16514064 = 16383 × 16 × 63 = 1032 × 254 × 63) y requiere 24 = 14 + 4 + 6 bits (16383 + 1 = 2 14 ). [14]
Las tuplas CHS se pueden asignar a direcciones LBA mediante la siguiente fórmula:
- A = ( c ⋅ N cabezas + h ) ⋅ N sectores + ( s - 1),
donde A es la dirección LBA, N cabezales es el número de cabezales en el disco, N sectores es el número máximo de sectores por pista y ( c , h , s ) es la dirección CHS.
Una fórmula de número de sector lógico en las normas ECMA -107 [3] e ISO / IEC 9293: 1994 [15] (que reemplaza a ISO 9293: 1987 [16] ) para sistemas de archivos FAT coincide exactamente con la fórmula LBA dada anteriormente: Dirección de bloque lógico y El número de sector lógico (LSN) son sinónimos. [3] [15] [16] La fórmula no usa el número de cilindros, pero requiere el número de cabezales y el número de sectores por pista en la geometría del disco, porque la misma tupla CHS aborda diferentes números de sector lógico dependiendo de la geometría. Ejemplos :
- Para la geometría
1020 16 63
de un disco con 1028160 sectores, CHS3 2 1
es LBA3150=((3× 16)+2)× 63 + (1-1)
- Para la geometría
1008 4 255
de un disco con 1028160 sectores, CHS3 2 1
es LBA3570=((3× 4)+2)×255 + (1-1)
- Para la geometría
64 255 63
de un disco con 1028160 sectores, CHS3 2 1
es LBA48321=((3×255)+2)× 63 + (1-1)
- Para la geometría
2142 15 32
de un disco con 1028160 sectores, CHS3 2 1
es LBA1504=((3× 15)+2)× 32 + (1-1)
Para ayudar a visualizar la secuenciación de sectores en un modelo LBA lineal, tenga en cuenta que:
- El primer sector LBA es el sector # cero, el mismo sector en un modelo CHS se llama sector # uno.
- Todos los sectores de cada cabeza / pista se cuentan antes de incrementar a la siguiente cabeza / pista.
- Todas las cabezas / pistas del mismo cilindro se cuentan antes de aumentar al siguiente cilindro.
- La mitad exterior de un disco duro completo sería la primera mitad del disco.
Historia
El formato Cylinder Head Record ha sido utilizado por los discos duros Count Key Data (CKD) en mainframes IBM desde al menos la década de 1960. Esto es en gran medida comparable al formato de sector de culata utilizado por las PC, salvo que el tamaño del sector no era fijo, pero podía variar de una pista a otra en función de las necesidades de cada aplicación. En el uso actual, la geometría del disco presentada al mainframe es emulada por el firmware de almacenamiento y ya no tiene ninguna relación con la geometría del disco físico.
Los discos duros anteriores utilizados en la PC, como las unidades MFM y RLL , dividían cada cilindro en un número igual de sectores, por lo que los valores de CHS coincidían con las propiedades físicas de la unidad. Una unidad con una tupla CHS de 500 4 32
tendría 500 pistas por lado en cada plato, dos platos (4 cabezales) y 32 sectores por pista, con un total de 32 768 000 bytes (31,25 MiB ).
Las unidades ATA / IDE eran mucho más eficientes para almacenar datos y han reemplazado a las ahora arcaicas unidades MFM y RLL. Usan grabación de bits de zona (ZBR), donde el número de sectores que dividen cada pista varía con la ubicación de los grupos de pistas en la superficie del plato. Las pistas más cercanas al borde del plato contienen más bloques de datos que las pistas cercanas al eje, porque hay más espacio físico dentro de una pista determinada cerca del borde del plato. Por lo tanto, el esquema de direccionamiento de CHS no puede corresponder directamente con la geometría física de tales unidades, debido al número variable de sectores por pista para diferentes regiones en un plato. Debido a esto, muchas unidades todavía tienen un excedente de sectores (menos de 1 cilindro de tamaño) al final de la unidad, ya que el número total de sectores rara vez, o nunca, termina en el límite de un cilindro.
Se puede configurar una unidad ATA / IDE en el BIOS del sistema con cualquier configuración de cilindros, cabezales y sectores que no exceda la capacidad de la unidad (o la BIOS), ya que la unidad convertirá cualquier valor CHS dado en una dirección real para su configuración de hardware específica. Sin embargo, esto puede causar problemas de compatibilidad.
Para sistemas operativos como Microsoft DOS o una versión anterior de Windows , cada partición debe comenzar y terminar en el límite de un cilindro. [ cita requerida ] Solo algunos de los sistemas operativos más modernos (incluido Windows XP) pueden ignorar esta regla, pero hacerlo aún puede causar algunos problemas de compatibilidad, especialmente si el usuario desea realizar un arranque dual en la misma unidad. Microsoft no sigue esta regla con las herramientas de partición de disco internas desde Windows Vista. [17]
Ver también
- Formato de CD-ROM
- Bloque (almacenamiento de datos)
- Almacenamiento de disco
- Formateo de disco
- Tabla de asignación de archivos
- Partición de disco
Referencias
- ^ "Descripción general e historia de la interfaz IDE / ATA" . La guía de PC . 17 de abril de 2001. Archivado desde el original el 4 de febrero de 2019.
- ^ a b de Boyne Pollard, Jonathan (2011). "El gen en la alineación de la partición del disco" .
- ^ a b c "Volumen y estructura de archivos de los cartuchos de disco para el intercambio de información" . Norma ECMA-107 (2ª ed., Junio de 1995) . ECMA . 1995 . Consultado el 30 de julio de 2011 .
- ^ "Formatos de disquete estándar compatibles con MS-DOS" . KB75131 . Base de conocimientos de Microsoft . 12 de mayo de 2003 . Consultado el 31 de julio de 2011 .
- ^ "Formato avanzado de Western Digital: comienza la transición del sector 4K" . AnandTech . 18 de diciembre de 2009 . Consultado el 29 de julio de 2011 .
- ^ "Resumen de tecnología de formato avanzado" (PDF) . Hitachi . 2010. p. 1. Archivado desde el original (PDF) el 27 de septiembre de 2011 . Consultado el 1 de agosto de 2011 .
La emulación de 512 bytes a veces se denomina 512e
- ^ a b c Andries Brouwer (1 de noviembre de 2004). "Historial de límites de BIOS e IDE" . Disco grande HOWTO v2.5 . Consultado el 30 de julio de 2011 .
- ^ "Windows NT 4.0 admite un máximo de partición del sistema de 7,8 GB" . Microsoft . 23 de febrero de 2007 . Consultado el 30 de julio de 2011 .
- ^ "5K500.B SATA OEM Specification Revision 1.2" (PDF) . Hitachi . 17 de marzo de 2009. p. 51. Archivado desde el original (PDF) el 27 de septiembre de 2011.
- ^ "ATA-2" (PDF) . X3T10 / 0948D . INCITS Comité Técnico T13 AT Anexo. 18 de marzo de 1996. Archivado desde el original (PDF) el 28 de julio de 2011.
- ^ "ATA-1" (PDF) . X3T10 / 791D . INCITS Comité Técnico Interfaces de almacenamiento T10 SCSI. 1994. Archivado desde el original (PDF) el 21 de marzo de 2012.
- ^ "Notas de la versión de Util-linux 2.25" . Los archivos del kernel de Linux . Consultado el 24 de marzo de 2016 .
- ^ "ATA-6" (PDF) . T13 / 1410D . INCITS Comité Técnico T13 ATA Storage Interface. 2002. p. 22. Archivado desde el original (PDF) el 28 de julio de 2011 . Consultado el 30 de julio de 2011 .
En los estándares ATA / ATAPI-5 y anteriores, se definió una traducción CHS. Esta traducción es obsoleta pero puede implementarse como se define en ATA / ATAPI-5.
- ^ "ATA-5" (PDF) . T13 / 1321D . INCITS Comité Técnico T13 ATA Storage Interface. 2000. p. 19. Archivado desde el original (PDF) el 28 de julio de 2011 . Consultado el 30 de julio de 2011 .
Si la capacidad del dispositivo es mayor o igual a un sector y menor o igual a 16,514,064 sectores, entonces el dispositivo admitirá la traducción CHS.
- ^ a b "Tecnología de la información - Volumen y estructura de archivos de cartuchos de disco para intercambio de información" . ISO / IEC 9293: 1994 . Catálogo ISO . 1994 . Consultado el 6 de enero de 2012 .
- ^ a b "Procesamiento de información - Volumen y estructura de archivos de cartuchos de discos flexibles para intercambio de información" . ISO 9293: 1987 . Catálogo ISO . 1987 . Consultado el 6 de enero de 2012 .
- ^ "KB931760" . Soporte de Microsoft Windows XP . Base de conocimientos de Microsoft . 23 de julio de 2009 . Consultado el 30 de julio de 2011 .
Notas
- 1. ^ Esta regla es cierta al menos para todos los formatos donde los sectores físicos se nombran 1 hacia arriba. Sin embargo, hay algunos formatos de disquete extraños (por ejemplo, el formato de 640 KB utilizado por BBC Master 512 con DOS Plus 2.1), donde el primer sector de una pista se denomina "0" y no "1".
- 2. ^ Mientras que las computadoras comienzan a contar desde 0, DOS comenzaría a contar desde 1. Para hacer esto, DOS agregaría un 1 al recuento de personas antes de mostrarlo en la pantalla. Sin embargo, en lugar de convertir primero el entero sin signo de 8 bits a un tamaño mayor (como un entero de 16 bits), DOS acaba de agregar el 1. Esto desbordaría un recuento de 255 (
0xFF
) en 0 (0x100 & 0xFF = 0x00
) en lugar de 256 eso sería de esperar. Esto se solucionó con DOS 8, pero para entonces, se había convertido en un estándar de facto para no usar un valor de cabeza de 255.