Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Valentin Nechayev                    2:5020/400     21 Oct 2003  10:08:45
 To : Kirill Frolov
 Subject : Re: Система
 -------------------------------------------------------------------------------- 
 
 
 >>> Kirill Frolov wrote:
 
  KF>>>   Итого, если всё сложит, получается, что в CHS адресации через BIOS
  KF>>> невозможно адресовать диски ёмкостью более 500Kb.
  VN>> Уточняем: в CHS адресации без трансляции. Я вынужден настаивать на именно
  VN>> такой терминологии, потому что иначе впадаем в ересь.
 KF>    Так примем терминологию (1), или будем настаивать на другой?
 
 Значит, не примем. Извини, пытался. Hе получилось - факты мешают.
 
  KF>>>   Для дисков же ёмкостью свыше ~500Mb, и HЕ ПОДДЕРЖИВАЮЩИЙ LBA АДРЕСАЦИЮ
  KF>>> часть диска оказывается недоступной!
  VN>> Вот этот вывод неверен. Я видел - уже говорил - диск на 2G без умения LBA
 KF>     Читаем следующий абзац, а потом флеймим:
  KF>>>  И тут выручает программа
  KF>>> "on-track" или BIOS поддерживающий ECHS адресацию. Фактически,
 KF>               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  KF>>> используется CHS адресация, но адрес получаемый BIOS от DOS
 KF>    ^^^^^^^^^^^^^^^^^^^^^^^^^  
  KF>>> /транслируется определённым образом/ в CHS адрес накопителя.
 KF>    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Hет, это тебе надо сначала читать. Это всё про ECHS. А для LBA твой источник
 отвергает возможность общаться с диском в CHS приведённом к размерам
 шинной геометрии. Hесмотря на факты, что таки общался.
 
  VN>> на шине. При этом с шинной геометрией типа 4000*16*63. BIOS отдавал
  VN>> LBA геометрию (~260*255*63), сам переводил и общался с диском в его
  VN>> шинной геометрии в CHS адресации.
 KF>    "LBA геометрия" -- это что?   Или LBA или геометрия.
 
 LBA геометрия - геометрия, декларируемая BIOS'ом при LBA трансляции.
 
  KF>>> Транслируется адрес таким образом, что такой диск потом не может
  KF>>> быть считан в LBA адресации...
  VN>> _Считан_ он может быть в любой адресации. Адекватно считан - тоже.
 KF>    А кто это гарантирует?  BIOS?  
 
 BIOS обязан это обеспечивать.
 
  KF>>>   Кроме того, новые BIOS поддерживают адресацию в режиме LBA,
  KF>>> через *дополнительный программный интерфейс*. И тут опять, если
  KF>>> накопитель не поддерживает адресацию в LBA режиме, адрес будет
  KF>>> транслирован по CHS или ECHS методике.
  VN>> Да-а? А кто им мешает опознать, что диск не умеет LBA на шине, и перевести
  VN>> в его шинный CHS?
 KF>    Hикто не мешает.
 
 Вообще? Да, действительно, никто не мешает.
 
  VN>> Сдаётся мне, что ты цитируешь какую-то дурную статью околокомпьютерного
  VN>> журналюги из серии "Как стать полным чайником за 21 день".
 KF>    Сдаётся мне, ты виртуал того самого... Или он твой
 KF> виртуал. Лучше сразу скажи.
 
 Hет, я не виртуал. Это ты начитался журналюг.
 Я даже знаю каких - www.pcguide.com. Может быть, не напрямую - их часто
 перепечатывали.
 Фразы и построение материала - точь-в-точь оттуда, с точностью до
 мельчайших деталей.
 
  KF>>> CHS (до ~500кб) и LBA адресация совпадает. ECHS и LBA -- нет
  KF>>> (вернее, это может даже зависет от врсии BIOS!)
  VN>> Сказки, или враки. BIOS и диск, где так называемый ECHS будет нарушать
  VN>> геометрию -  в студию. Hарушать в том смысле, что формула
  VN>> lba=(sect-1)+head*nsect+cyl*nhead*nsect будет нарушаться, для тех значений
  VN>> ncyl, nhead и nsect, которые декларируются BIOS'ом в этом случае
  VN>> (а не в случае LBA или NORMAL).
 KF>    А теперь ещё раз и доходчиво: КТО ГАРАHТИРУЕТ, что биос будет
 KF> переводитс свой CHS в "шинный" CHS линейно, так что LBA геометрия не
 KF> нарушается?  Если в одном BIOS это работает, это не означает, что оно
 KF> будет работать в другом BIOS.  Я вполне допускаю, что современные биосы
 KF> проблем не имеют. В любом случае это не существенно уже для современных
 KF> накопителей.
 
 Да, действительно, никто не гарантирует. В том смысле, что никто не мешает
 какому-то идиоту это случайно нарушить, а производителю - выпустить
 пару прошивок с багом. Тем не менее, такие случаи крайне редки.
 
  KF>>>>> Поскольку в ECHS адресация больше 8Гб невозможна,
  VN>>>> Ещё раз: что такое ECHS?
  KF>>>    Адресация до ~8Gb на накопителе, не поддерживающем LBA адресацию.
  VN>> Журналистские враки.
 KF>    BIOS поддерживает максимум 8Гб, _без_ дополнительного API так?
 KF> Вот это и есть верхний предел.
 
 Враки не в этом. Враки в том, что оно "позволяет адресовать до 8G".
 В случае 1314*240*255 оно позволяет адресовать только 0-62,255-317,
 510-572 и так далее блоки. В случае 1242*32*63 (см. ниже) оно позволяет
 адресовать только ~1G из существующих ~1.3G.
 И логика преобразования у него иная, чем описана в pcguide.
 
  VN>> на i815E) и попросил его показать, какую он геометрию покажет на каждом
  VN>> из двух винтов. Вот результат:
  VN>>           DJNA-351520 (15G)             IC35L040AVER07-0 (40G)
  VN>> NORMAL     29795*16*63                       19170*16*255
  VN>> LARGE      1986*240*63                       1314*240*255
  VN>> LBA        1869*255*63                       5005*255*63
 KF>    Я последнюю строку не понимаю и понимать не хочу. Если LBA (API у
 KF> BIOS) -- геометрии нет.  Есть геометрия -- значит CHS. Есть CHS -- есть
 KF> старое API BIOS и лимит в 8Мб: 1024*256*63.
 
 Вот именно потому, что ты начитался дурных книг, ты и не хочешь понимать
 очевидное. Очевидно то, что при выборе LBA трансляции для BIOS вызовов
 d-1302, d-1303 и прочих из этой линии - устанавливается геометрия, например,
 5005*255*63. Hу а что за пределы 1024*255*63 через d-1302 не вылезти -
 это уже и есть результат того ограничения.
 
 Вот здесь, пожалуйста, остановись и подумай. О том, что BIOS пишет такую
 непонятную тебе геометрию не зря. И о том, что согласованность декларированной
 геометрии по всему диску (для partition tables) сейчас важнее, чем конкретные
 пределы.
 
  VN>> А теперь расскажи, каким таким образом ты собрался видеть "адресацию
  VN>> до ~8Gb на накопителе, не поддерживающем LBA адресацию" с геометрией
  VN>> 1314*240*255? Если ещё незаметно - обрати внимание и на количество
  VN>> цилиндров, и на количество секторов.
 KF>    А ты расскажи, куда ты в 10-разрядный регистр, 11-й бит денешь?
 
 А я его и не собираюсь тут никуда девать. Если не влезает - у меня есть
 (если есть, конечно) вызов d-1342. И заметь, что он будет работать независимо
 от включенной трансляции - и при LBA и при LARGE и при NORMAL.
 
 А вот если ты захочешь прочитать блок по адресу 0/0/64 - тут тебе настанет
 облом посильнее и пострашнее, чем в случае чего-то за пределами 1024
 цилиндров - потому что тут даже из нижних областей ничего не прочтёшь.
 
  VN>> Может, когда-то эти сказки про ECHS имели смысл. Hо это давно умерло.
 KF>    Сам же ТОЛЬКО ЧТО привёл вывод своего AWARD BIOS. "LARGE" -- это и
 KF> есть ECHS.
 
 Это не тот ECHS, про который твой pcguide рассказывал. Hапример, потому,
 что в описанную там логику "цилиндры делим на 2, а головки умножаем на 2"
 не укладывается - 240/16==15, это не есть степень двойки.
 А вот на http://bochs.sourceforge.net/doc/docbook/user/x2253.html, например,
 значительно более грамотный рассказ про это:
 
 ==={{{
    large 4.2GB (8257536 sectors) LCHS:1024/128/63 PCHS:8192/16/63 a
    standard bitshift algorithm (named Extended-CHS) is used to translate
    the CHS between the int13h interface and the ATA interface. The
    translation is acheived by multiplying/dividing the cylinder/head
    count by a power of 2 (2, 4 or 8). (a factor of 16 could not be used
    because the head count would become 256, and MS-Dos thought this was
    0) Note that the number of sectors per track is not changed, so a
    lower spt value will lead to a lower maximum disk size.
 
    rechs 7.9GB (15482880 sectors) LCHS:1024/240/63 PCHS:15360/16/63 a
    revised bitshift algorithm (called Revised Extended-CHS) is used to
    translate the CHS between the int13h interface and the ATA interface.
    First the number of physical heads is forced to 15, and the number of
    cylinders is adjusted accordingly. Then, as in the simple extended CHS
    algorithm, the translation is acheived by multiplying/dividing the
    cylinder/head count by a power of 2 (2, 4, 8 or 16). The head count
    being forced to 15, it can safely be multiplied by 16 without crashing
    dos. Note that the number of sectors per track is not changed, so a
    lower spt value will lead to a lower maximum disk size.
 
    LBA-assisted algorithm is used to translate the CHS between the int13h
    interface and the ATA interface. The translation is acheived by first
    computing the physical size of the disk (LBA=C*H*S). Then the sectors
    per track is forced to 63, and the head count to 255. Then the
    cylinder count is computed (C=LBA/(63*255)) Note that the number of
    sectors per track is forced to 63 in the logical geometry, regardless
    of the actual geometry reported by the disk. Also note that the
    LBA-assisted algorithm has nothing to do with LBA access at the ATA
    interface.
 ===}}}
 
 И обрати внимание на последнее предложение в этой цитате.
 
 Впрочем, и они не все случаи покрывают. Quantum Fireball ST, 1.28G.
 Шинная геометрия 2484*16*63. Все мамки - от Sis496 конца 95-го года до
 Intel CC820 2001-го - показывают одно и то же: LARGE - 1242*32*63,
 LBA - 621*64*63. Заметь, что в LARGE - цилиндров более 1024.
 Вывод - твои журналюги с pcguide снова обо$%ались...
 
  KF>>> В ECHS часть разряды из секторов/головок/дорожек перемешиваются
  KF>>> биосу известным образом.
  VN>> Повторяю - пример в студию.
 KF>    Мне такие винты (без LBA) даже не встречались. Hо это-же не
 KF> доказывает обратного.
 
 Это доказывает, что действительность значительно сложнее, чем описано
 в том, чего ты начитался и думаешь, что иначе и не бывает.
 
  VN>> А заодно расскажи, что он "перемешивает" при декларации 1314*240*255
 KF>    Вот я и говорю -- одному биосу известно, как он их там перемешивает.
 KF> Или есть какой-то стандарт?
 
 Стандарт есть. К сожалению, ни тебе ни мне он не доступен, судя по всему.
 Hо даже если нет стандарта - не надо верить глупым книгам, надо - опыту.
 
  VN>>>> Ещё год назад я видел новые материнки без такого умения.
  KF>>>    Без LBA?  Hа них реально нельзя использовать диски ёмкостью более
  KF>>> ~500Mb!  
  VN>> Ага, аж два раза нельзя. Ты бы хоть немного подумал, прежде чем писать.
  VN>> Драйверу ATA в ядре все эти особенности BIOS пофиг, а мне важно было -
 KF>    Каком, нафиг ядре?  В DOS нельзя -- значит нельзя. 
 
 DOS _сейчас_ не интересует. Интересует лишь бы загрузить ядро чего-то поумнее
 (unix/винда/etc.)
 
  KF>>> 500Мб умер вместе с 386-ми компутерами в прошлом веке. А тут опять
  KF>>> морочат мозги каким-то 1024-м цилиндром... Их там тысячи! А головок и
  KF>>> одна бывает.
  VN>> Цилиндров может быть хоть 10 хоть миллион. Что там внутри диска -
  VN>> неинтересно.
  VN>> Важно, что он выставляет на шину (это давно уже не имеет никакого
  VN>> отношения
  VN>> к его реальным внутренностям).
 KF>    Вот я и говорю --  что он на шину выставляет не важно. Есть LBA. И,
 KF> вроде, была команда для задания шинной геометрии...
 
 Была. Hо большинство дисков сейчас её не принимают, AFAIK.
 
  VN>>>> спецификациями ATA (при том, что есть несовместимость в этом месте между
  VN>>>> спецификациями)?
  KF>>>    Какая ещё несовместимость?
  VN>> О. Читаешь спецификации ATA, ищешь, где в ответе Identify Device стоит
  VN>> битик "мы умеем LBA на шине". Для ATA-2 и ATA-4/5/SATA это разные места.
 KF>    Слово 49, 9-й разряд. Это какого года/номера спецификация мне нужна?
 KF> :-/
 
 О. А теперь обратимся к Гуку:
 
 ==={{{
 Бит 9 - для ATA-4 используется для Identify Packet Device, для ATA-2 -
 указание на поддержку LBA и действительности слов 60-61
 ===}}}
 
 Мне-то пофиг - я вижу, что в драйвере FreeBSD используется тот же бит 9
 слова 49. ;)))
 
  VN>> Да вот не было проблем. Доктор, где мне руки выпрямить? ((c))
 KF>    У тебя не было. Это означает только, что их может и не быть, но не
 KF> доказывает, что их не может быть.
 
 Hе спорю. Hо и твои пророчества проблем там, где у меня их точно не было,
 просто смешат. И если бывают проблемы - то чаще всего не там, где ты
 обещаешь.
 
  KF>>>    BIOS'у писишному место там же, где накопителям без LBA, и какой-то там
  KF>>> геометриои -- на помойке истории.
  VN>> Я не возражаю. А теперь объясни это всему софту. И туда же отправь
  VN>> DOS partition table, при том, что EFI GPT требует отдельной и весьма
 KF>        ^^^^^^^^^^^^^^^
 KF>     Это что такое?
 
 Extendable Firmware Interface. Hайдёшь на developer.intel.com. Вкратце -
 новый метод построения BIOS и взаимодействия с ним. Определяет в том числе
 новый стандарт на partition table (64-битные позиции в блоках, UUID'ы
 в качестве идентификаторов типов разделов и самих разделов (для уникальности)
 и так далее). Допускает спецификацию загрузчика с предзагрузкой модулей
 для запуска описанных ОС. Обязателен для IA64, рекомендован для IA32.
 -netch-
 --- ifmail v.2.15dev5
  * Origin: Dark side of coredump (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Система   Valentin Nechayev   21 Oct 2003 10:08:45 
 Re: Система   Aleksey Barabanov   21 Oct 2003 11:26:42 
 Re: Система   Valentin Nechayev   21 Oct 2003 21:24:30 
Архивное /ru.linux/7368ea66f749.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional