Что такое ленивое чтение я могу обьяснить на примере агат, у него две вв55
по одной для каждой стороны, уЛЭМЗ контроллера для микроши
принцип тотже самый, только одна ВВ55.
Но не стоит ставить во главу угла вв55 - она только самая большая физически,
но она не самый сложный его узел, а даже наоборот - очень простой.
и никакого отношения ни к плотности записи ни к формату ни к интеллекту почти не имеет.
---------- Post added at 13:17 ---------- Previous post was at 13:15 ----------
стандартным стал обычный 160 дорожечный флоп (напр TEAC55gr)
некоторые экземпляры(видимо не самые качественные) ес5323 и 5311 неуспевают
С Молниеносным контроллером (без применения ВГ93) на двух ВВ55 по одной для каждой стороны.
Кто работал с агатом знает что никакой другой комп не может так разогнать привод даже в режиме
FAST как АГАТ (36 секунд на диск) , мало того - реализовано буферирование операций обмена. Т.е. файловая система может делать два вида запросов к драйверу диска, с МГНОВЕННОЙ ДОСТАВКОЙ ДАННЫХ (ну, скажем, если ей нужен заголовок файловой структуры или блок данных каталога) и с возможностью отложенного выполнения (когда собственно ведётся обмен с содержимым файла). Реализовано это так: создан специальный массив по элементу на каждый сектор трека (т.е. 21...22 для филипповской разметки). В каждом элементе указывается тип операции над данным сектором (т.е. что-то вроде: 0 -- ничего не делать, 1 -- чтение, 2 -- запись, 3 -- проверка) и адрес сектора в памяти. Когда файловая система шлёт запросы с флагом возможности отложенного выполнения, то эти операции просто помещаются в соответствующий элемент массива, а реально ничего не выполняется, пока не случится либо запрос без мозможности отложенной операции (обычно последний блок запроса) или не случится переход на другую дорожку.
Вот тут и начинается самое интересное, происходит обработка всех отложенных заданий. Драйвер просто отлавливает заголовки секторов которые проходят в данный момент мимо головки и по номеру смотрит на задания указанные в массиве. Если ничего не надо делать -- просто пропускает, сказано прочитать -- прочитает, сказано записать -- запишет, после выполнения операций флаг скидывается на 0, причём для записи было сделано так, что устанавливался не 0, на проверка и на следующем обороте выполнялась проверка записанного, причём НЕ ПО КОНТРОЛЬНОЙ СУММЕ, А СЛИЧЕНИЕМ ДАННЫХ. Когда после обработки очередного сектора оказывалось, что заданий нет -- начиналась работа по новому заданию.
Что это даёт? А две простые вещи -- массовое чтение выполняется строго за один оборот (плюс максимум один сектор), т.е. драйвер не ожидает прихода того сектора который был запрошен на этой дорожке первым, как это делают практически все другие компы у которых к тому же делается синхронизация по дырочке на диске (в Агате вполне в норме было диск размечать без привязки к дырке). Вторая вещь -- запись выполнялась с отличной проверкой(СЛИЧЕНИЕ), причём на это требовалось всего два оборота (можно вспомнить, что на PC если включить запись с проверкой всё начинало плестисть со скоростью аж по 15/18 оборотов на дорожку для 1,2/1,44 МБ).
---------- Post added at 13:22 ---------- Previous post was at 13:17 ----------
Суть в том, что ленивое чтение (или отложенное) - это когда драйвер заранее знает
какие сектора данной дорожки ему будут нужны (т.е. какие запрошены), и считывает
их как только они появятся под головкой
Важно: любой из нужных секторов !
Т.е. если ОС запросила сразу весь трек, например, то значит первый же попавшийся сектор
точно нужен. И т.д. И драйвер их сразу читает и сразу скидывает в память
А ВГ и все её наследники, читает так: драйвер ей задает номер сектора (только одного!)
и она ждет его. Если затем будет нужен другой сектор (например тот, который шел перед предыдущим) -
то она опять будет его ждать (а посколько он шел перед - значит ждать ей придётся целый оборот).
ВГ быстро работает только если запросы идут подряд, в порядке форматирования.
Т.е. если сектора на диске записаны по попрядку - 1 2 3 4 5
и запрашивают их также - тогда она и прочитает всё за оборот.
И то - только если её не будут отвлекать и она сможет в реальном времени работать.
Если же, например, запросили сначала 1, 2 , а потом долго прога че-то думала,
а потом запросила 3, а этот 3-й только что проскочил - то опять ждём оборот
Т.е. ВГ не умеет читать "какой нибудь из списка", ей обязательно нужна конкретика.
а контроллер агата слишком примитивный, он такие вещи как сектор там или номер его
- вообще не знает. Он только передаёт raw-данные.
И уже как и что читать - решает драйвер.
А у него всё просто: есть массив, там в массиве статусы:
например: 0 - ничего не делать, 1 - читать, 2 - писать , 3 - проверять (сравнивать)..
Он видит сектор, например, # 3, лезет в массив к третьему элементу - там цифра 1. Значит
надо этот сектор прочитать.
---------- Post added at 13:23 ---------- Previous post was at 13:22 ----------
ну а ещё : ВГшка читает от сигнала индекса, и вынуждена его ждать.
А агатовский контроллер индекс не использует, а драйвер просто сам учитывает прошедшее время. тоже мелочь, но из них скорость и складывается
---------- Post added at 13:47 ---------- Previous post was at 13:23 ----------
ну и потом - у агатовского контроллера плотность чуть выше чем у вг. Не сильно чтобы много,
но разница небольшая есть
вг, наверное, до 800кб пишет на диск, а тут - 840
У Микрошеного контроллера плотность как у агата(+ к скорости), потому как
Микрошены диски(200кб) агат признал как свои, даже файлы показал.
Правда уточнил что это односторонний диск.
Поэтому я и написал что Микрошин котроллер на ВВ55 меня удивил скоростью.
Из текста выше ясно что если файл раскидан в 3 разных местах
на диске он его прочитает быстрее чем ВГшка ЗНАЧИТЕЛЬНО, ну а из-за других мелочей
быстрее работаетс подряд записанными.
Про запись тоже вроде отписал. Повторюсь что в Микроше в полной мере реализованны эти методы.
Понятно, что практического применения сейчас такой контроллер не имеет,
все реальшики на Микрошах используют ВГ93(и видимо все программы заточены под него)
И это правильно! Но с чисто исторической стороны(а что мы тут все делаем ?)
этот контроллер весьма даже интересен.