|
|
3.1.2. Чередование секторовЗаголовок сектора содержит номер сектора, который идентифицирует данный сектор на дорожке Номера не обязательно назначать в каком то конкретном порядке. Формат заголовка сектора позволяет нумеровать секторы от 1 до некоторого максимального значения, например 256. Контроллер диска не заботится о том, какой номер из указанного диапазона помещен в заголовок конкретного сектора, секторы могут разделять один и тот же номер, хотя такая ситуация самая необычная Контроллер диска не заботится даже о размере области данных Контроллер просто считывает все, что находит, или записывает то, что ему приказано записать. Наиболее распространенное применение такой возможности связано с гибкими дисками, на которых поставляются некоторые защищенные от копирования программы Такие дискеты имеют мини мум на одной дорожке несколько нестандартных секторов. Команды DOS COPY и DISCOPY не могут дублировать такие секторы, на чем и основана защита oт копирования Программы работают только при наличии на дискете в накопители А специальных особо пронумерованных секторов, возможно, необычного размера С другой стороны, программа подготовки диска полагает, что секторы нумеруются в некотором простом порядке Например, секторы можно пронумеровать I, 2, 3, 4, 5 и т д , но такой порядок необязателен Другой способ нумерации секторов называется чередованием секторов Такое название объясняется тем, что группы секторов с соседними номерами чередуются с другими группами сектороп, имеющими другие соседние номера Можно считать также, что после нумерации одною сектора вместо назначения следующего номера еле дующему сектору вы пропускаете ("перепрыгиваете") через одно и то же число секторов, а затем назначаете следующий номер Величина чередования определяется коэффициентом чередования, представлен ным в виде двух чисел, разделенных двоеточием Если, например, коэффициент равен 3:1, то после назначения первому сектору на дорожке адреса 1 два последующих сектора пропускаются, а четвертому сектору на дорожке назначается адрес 2 После этого вновь пропускаются два сектора, а седьмому сектору назначается адрес 3 Этот процесс продолжается до назначения адресов всем секторам (Пока такой способ нумерации кажется надуманным и искусственным, но далее покачано что он имеет большое практическое значение ) Чтобы посмотреть, какой выигрыш дает выбор конкретного коэффициента чередования секторов, рассмотрим три случая, показанных на рис. 3.2 для трех дорожек диска. Число секторов на дорожке 17, что типично для накопителен с МFМ-кодированпем; дорожки показаны так, как будто они фактически записаны на диск, но, ко нечно, их ширина намного больше ширины реальных дорожек. (В современных на копителях число секторов на дорожке больше, обычно от 23 до 75 секторов, а иногда число секторов на дорожке не постоянно.) Секторы на внешней дорожке (цилиндр 0) пронумерованы в простейшем порядке (последовательно), что соответствует коэффициенту чередования секторов 1:1. При вращении диска секторы проходят под головкой считывания-записи в порядке 1, 2, 3, 4, 5 и т.д. Секторы на соседней дорожке (цилиндр 1) пронумерованы с коэффициентом чередования секторов 2:1, а на третьей дорожке (цилиндр 2) — с коэффициентом чередования секторов 3:1. Рассмотрим теперь, что произойдет, когда диск вращается, а контроллер пытается считать сектор номер 1 и сразу после этого сектор номер 2. Стрелки, отмеченные как "Случай 1" и "Случай 2", показывают две точки, в которых головка может начать считывание после обработки ("переваривания") данных, считанных из сектора 1. В "Случае А" сторон сектор на дорожке уже частично прошел под головкой считывания-записи к тому времени, когда головка готова начать считывание второго сектора, а третий сектор еще не подошел. В этой ситуации коэффициент чередования 2:1 оказывается оптимальным. В "Случае Б" даже третий сектор частично прошел под головкой, когда она готова считывать этот сектор, а четвертый сектор еще не появился под головкой. Здесь оптимальным будет коэффициент чередования 3:1. Как DOS хранит и считывает файлы. Если вы просите DOS сохранить файл на диске и все секторы в этой области доступны, DOS последовательно заполняет секторы в порядке их номеров наборами по 512 байт. DOS переходит к следующей головке в том же цилиндре, когда первая дорожка заполнена, и продолжает последовательное заполнение секторов. Данный процесс продолжается до заполнения цилиндра. Здесь при наличии оставшихся для записи данных DOS командует контроллеру диска передвинуть псе головки на следующий цилиндр (и контроллер перемещает блок голонок на одну дорожку). Весь этот процесс продолжается до записи на диск всего файла. DOS будет считывать секторы в том же порядке. DOS считывает сектор, сообщая контроллеру диска номера цилиндра, головки и сектора (три компонента физического адреса) считываемого сектора. В свою очередь, контроллер диска просто перемещает блок головок па нужный цилиндр, выбирает нужную головку и ожидает появления нужного сектора под головкой. Контроллер считывает заголовок каждого сектора, сравнивает адресную информацию из заголовков с отыскиваемыми цилиндром и головкой (проверяя правильность работы привода блока головок) и отыскивает нужный помер сектора. Когда контроллер находит заголовок этою сектора, он либо включает схему записи или считывает данные и "хвост" в зависимости от выполняемой операции записи или считывания. После локализации сектора контроллер диска должен обработать информацию из этого сектора до перехода к следующему сектору. При считывании данных контроллер должен вычислить ЕСС для считанных данных и сравнить его с записанным ЕСС; при записи контроллер должен вычислить ЕСС для сохранения вместе с данными. Когда контроллер проводит обработку информации от данного сектора, диск продолжает вращаться. Обработка информации занимает продолжительное время, поэтому диск может повернуться за это время на заметную величину. Простейший (и иногда наихудший) случай. Напомним, что в рассматриваемом примере секторы по дорожке пронумерованы последовательно. Если во время обработки контроллером данных одного сектора диск поворачивается больше, чем на (небольшой) межсекторный промежуток, следующий сектор, который должен участвовать в операции считывания или записи, уже пройдет под головкой на, возможно, значительное расстояние. В этом случае контроллер диска должен ожидать, пока диск не сделает почти полный оборот, прежде чем нужный сектор подойдет к головке. Отметим, что секторы на трех дорожках рис. 3.2 пронумерованы по-разному. Обратимся вначале к внешней дорожке. Ее секторы пронумерованы последовательно, т.е. так, как только что рассмотрено в примере. Остальные дорожки рассматриваются далее. Стрелка, обозначенная "Случай А", показывает ту точку на диске, где система может начать считывание после обработки информации, считанной из сектора 1. Отметим, что эта стрелка показывает на середину сектора внешней дорожки (сектор 2). Этот пример соответствует только что описанной ситуации, в которой контроллер диска не готов начать считывание сектора 2 после того, часть сектора уже прошла ПОД головкой. Так как контроллер должен ожидать до тех пор, пока он не "увидит" под головкой заголовок сектора 2, ему до начала считывания придется ожидать почти полный оборот диска. В этой ситуации контроллер жесткого диска обеспечивает считывание за каждый оборот всего одного сектора. При такой скорости данные нельзя считать или записать быстрее, чем на гибкий диск. К счастью, немного изменив нумерацию секторов, можно сделать очень много для повышения скорости. В этой ситуации контроллер жесткого диска обеспечивает считывание за каждый оборот всего одного сектора. При такой скорости данные нельзя считать или записать быстрее, чем на гибкий диск. К счастью, немного изменив нумерацию секторов, можно сделать очень много для повышения скорости. Как чередование секторов решает проблему. Много лет назад один из талантливых инженеров фирмы IBM нашел способ решения этой проблемы. Он не захотел увеличивать межсекторный промежуток, поскольку это уменьшает емкость накопителя. Вместо этого он перенумеровал секторы не в последовательном порядке. Например, для получения коэффициента чередования 2:1 для дорожки с 17 секторами применяется такая нумерация: 1, 10, 2,11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 17, 9 и далее вновь 1 (см- среднюю дорожку на рис. 3.2). Для коэффициента чередования 3:1 получается такая нумерация: 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 19, 16, 5, 11, 17, 6, 12 и вновь 1 (см. внутреннюю дорожку на рис. 3.2). Таким образом, показатель чередования на единицу больше числа пропускаемых секторов между секторами с соседними номерами (например, при коэффициенте чередования 2:1 пропускается один сектор). Кроме того, показатель чередования равен числу обходов по дорожке для считывания всех секторов по порядку, и ни один из Гекторов не проходится до того, как контроллер будет готов к его восприятию. Например, при коэффициенте чередования 1:1 считывание всех секторов на одной дорожке требует всего одного оборота — если, конечно, контроллер диска может обрабатывать информацию достаточно быстро. Если контроллер диска оказывается недостаточно быстрым, ему для считывания всей дорожки потребуется столько оборотов, сколько секторов имеется на одной дорожке. Увеличение коэффициента чередования до 2:1 означает, что дорожка должна пройти под головкой минимум дважды, чтобы считать или записать все секторы последовательно. При этом замедляется появление секторов под головкой так, что контроллер диска будет готов к моменту появления нового сектора. Если коэффициент чередования 2:1 оказывается недостаточно медленным, для считывания или записи всей дорожки диск должен сделать 17 или даже 18 оборотов (при наличии на дорожке 17 секторов и соответственно больше оборотов при большем числе секторов). Средняя дорожка на рис. 3.2 показывает, что если задержка между считыванием одного сектора и готовностью системы к считыванию другого представлена стрелкой "Случай А", то коэффициент чередования 2:1 оказывается оптимальным. Следующим сектором, который появляется после готовности системы в считыванию (после обработки сектора 1), будет именно сектор 2. Внутренняя дорожка на рис. 3.2 показывает, что если задержка больше и головка находится в позиции "Случай Б", когда контроллер готов к считыванию следующего сектора, наилучшим оказывается коэффициент чередования 3:1. В этом случае коэффициент чередования 2:1 столь же плох, как и 1:1, так как оба эти коэффициента заставляют контроллер ожидать полного оборота для доступа к содержимому сектора со следующим номером. Чередование — общесистемная проблема. При определении идеального коэффициента чередования для данного накопителя приходится учитывать несколько факторов. Кроме быстродействия контроллера диска необходимо учес ь частоту синхронизации материнской платы и, в частности, скорость работы шины ввода-вывода гого разъема, в который вставлен контроллер. После того как большинство контроллеров диска считало сектор, до считывания следующего сетгора они должны передать данные в компьютер. Аналогично контроллеры диска не воспринимают данные для записи в следующий сектор до окончания записи в текущий сектор. Следовательно, скорость работы шины ввода-вывода компьютера может повлиять на правильное значение коэффициента чередования. Все эти факторы показывают, что определить правильный коэффициент чередования можно только на системном уровне, т.е. только тем человеком, который собирает диск, контроллер и компьютер. Из-за сложности определения и задания правильного коэффициента чередования секторов и значительных усилий для получения ответа (особенно до появления программ типа SpinRite) до недавнего времени почти во всех персональных компьютерах чередование было неправильным С расширением популярности IDE- и SCSI-накопителей, которые обычно правильно работают с коэффициентом чередования 1:1, эта проблема исчезает. Однако при наличии в вашем компьютере старого накопителя вполне вероятно, что его коэффициент чередования далеко не оптимален. Во многих современных накопителях (особенно в накопителях IDE и SCSI и платах жестких дисков) встроен буфер дорожки. Этот буфер позволяет накопителям считать сразу целую дорожку, не обрабатывая каждый сектор до считывания следующего. Иногда проблема остается, но только при переходе операции считывания с одной дорожки на следующую. Это случается намного реже перехода от одного сектора к следующему, и особой роли эта проблема не играет. (Когда же она оказывается важной, ее решает перекос головки, рассматриваемый далее ) Некоторые контроллеры имеют даже два буфера дорожки, один для хранения считываемых или записываемых данных, а второй - для обработки или подготовки к предыдущей или следующей дорожке. Важный практический результат такого подхода состоит в том, что эти накопители могут работать с коэффициентом чередования 1:1 независимо от быстродействия системного блока. Быстродействие системного блока влияет только на то, сколько времени должно пройти после окончания обработки одной дорожки до перехода к следующей. Некоторые контроллеры ST412/ST506 и ESDI также имеют буферы дорожек и могут поддерживать коэффициент чередования 1:1 для управляемых ими дисков. Если коэффициент чередования нашего диска установлен слишком большим, в дисковых операциях придется ожидать лишь немного больше времени для получения данных Если же коэффициент чередования слишком мал, производительность диска резко снижается (затемненные участки в табл 3.1). В табл. 3.1 показывают влияние неправильного коэффициента чередования в некоторых распространенных ситуациях Единственный способ проверить правильность коэффициента чередования заключается в том, чтобы выполнить программу, которая определяет производи пчпьноеть диска в вашей системе для нескольких зпа-1ений коэффициента чередования. Такой прием характерен для программы SpinRite и большинства программ регулировки коэффициента чередования.
|
|
Copyright 2003 © FormatCenter |