Адресация дискового пространства в BIOS
Геометрия (ёмкостные параметры) жесткого диска описываются в BIOS следующей формулой: Общий объем (байт) = C x H x S x 512 (байт), где С – количество цилиндров; Н – количество головок; S – количество секторов. Следовательно, вследствие физических ограничений накопителей, BIOS может адресовать («увидеть») накопитель максимальной ёмкостью 128 Гбайт: 65536 x 16 x 256 x 512 = 128 Гбайт. Однако из-за ограничений работы контроллера винчестера и BIOS эта величина может быть существенно сокращена. Так, до 1995 года использовался стандартный CHS-режим (стандарт ATA-1), в котором физические параметры накопителя соответствовали логическим, передаваемым в BIOS. При стандартной CHS-адресации максимальное количество цилиндров равно 1024, головок – 16, что приводит к ограничению максимальной емкости жесткого диска (504 Мбайт). Кроме того, BIOS «считает», что у любого накопителя на любой дорожке должно быть ровно 63 сектора. Современные IDE-контроллеры (начиная со стандартом ATA-2, EIDE) поддерживают универсальный режим трансляции, для которого главным параметром является общее количество секторов. В большинстве BIOS появилась функция «Autodetect», которая позволяет считывать и устанавливать паспортные параметры накопителя. При инициализации накопителю передаются два параметра: количество головок и секторов; затем накопитель подстраивает свою логическую структуру таким образом, чтобы общая емкость не изменилась, причем коррекция осуществляется за счет цилиндров. Максимальная емкость накопителей АТА-2 значительно увеличена за счет разработки улучшенной BIOS (Enhanced BIOS), что позволило преодолеть барьер в 504 Мбайт емкости жесткого диска. Первая модификация стандарта ATA-2 с режимом передачи PIO 3 использовала режим адресации ECHS, благодаря которому в CMOS Setup была введена опция Large и ECHS. Их надо было использовать для дисков, количество цилиндров которых превышает 1024, но к которым нельзя было применить адресацию LBA. Пересчет происходил в 2 этапа: сначала контроллер считал общее количество цилиндров, затем делил его пополам и в два раза увеличивал количество головок. Этот метод позволил адресовать 3-4 Гбайт дискового пространства. В дальнейшей модификации АТА-2 (PIO 4, 5) в 1996 году появилось использование логической адресации блоков. В этом режиме все секторы нумеруются без разделения по трем категориям (цилиндр, головка, сектор), и адресуются единым 28-битным кодом. С учетом ограничений BIOS (1024 цилиндра, 256 головок, 63 сектора на дорожке при пересчете) общая емкость жесткого диска достигает 8, 4 Гбайт. В 1998 году для BIOS материнских плат выпустили обновление, способное решить проблему «8 Гигабайт». Была изменена адресация к прерыванию Int 13h (DOS), чем удалось преодолеть барьер 1024 цилиндров. Теперь для физической адресации использовались все 28 бит: · С – 16 бит (максимум 216 = 65536) · H – 4 бита (максимум 24 = 16) · S – 8 бит (максимум 28 = 255). Таким образом, теперь в интерфейсе ATA-5 теоретически был доступен максимальный объем винчестеров. Но биосописатели в очередной раз ошиблись. Они не учли, что при стандартном пересчете LBA с 16-ю головками и 63-мя секторами у винчестеров объемом более 33, 8 Гбайт цилиндров окажется больше 65536, и они не поместятся в 16 бит отведенные под цилиндры. Эта проблема была решена в 1999 году введением простого условия: если число секторов превышает 65536 x 16 x 63 = 66060288, то тогда количество секторов приравнивать к 255. Также для некоторых BIOS существовала ошибка определения винчестеров объемом больше 65 Гбайт, которая, как обычно, решалась обновлением прошивки. В 2002 году были выпущены жесткие диски, объем которых превышает 137 Гбайт. За невозможностью использования старого алгоритма с 28-битным кодированием для протокола UltraDMA/133 была придумана 48-битная адресация секторов, и очередной барьер возникнет не скоро.
|