С некоторых пор меня стал интересовать один вопрос.
Из всех прочих характеристик накопителей данных конечному потребителю приоритетно важны только две: объем хранимой информации и скорость работы с ней. Уровень шума, энергопотребления и, соответственно, тепловыделения, масса и цена – являются второстепенными (в разумных пределах).
И если для НЖМД с объемом все отлично, то со скоростью работы с информацией на фоне остальных основных компонентов ЭВМ далеко не все так хорошо.
Стандартное устройство НЖМД на первом уровне приближения выглядит так: корпус (гермоблок), пластины на шпинделе, единый блок магнитных головок и электронная начинка. «Узкими» местами по производительности при произвольном доступе являются скорость установки БМГ (время позиционирования, Вп) на нужный цилиндр и скорость вращения диска (время ожидания нужного сектора, Во).
I. То или другое время (либо и то, и другое) можно уменьшить, добавив еще один (а лучше несколько) БМГ и прикрутив многоканальный контроллер:
1) таким образом, чтобы ход каждого БМГ перекрывал всю поверхность блинов. БМГ расположены друг напротив друга, контроллер вычисляет суммы Вп+Во и посылает на операцию в/в ту головку, которая по времени «ближе» к нужному сектору.
2) таким образом, чтобы каждый БМГ обслуживал свою «половину» - один внешнюю, другой внутреннюю (больше БМГ – больше зон). Контроллер просто посылает на работу ту головку, в зоне ответственности которой находится сектор.
Под такой подход очень хорошо «ложится» NCQ. Так же через драйвер контроллер мог бы принудительно динамически настраиваться на разные стратегии работы. Скажем, для «трехголового» диска: 2+1, 3+0 – две головки на чтение, одна на запись; три на чтение и т.д. Целесообразность? Обеспечение некоей «гарантированной» скорости чтения для приложения, или для внутренних потребностей, например авральный сброс кэша на диск – 0+3. (Вообще, все зависело бы от реального числа БМГ, их конструкции и расположения друг относительно друга. Например, вариант 2 – это не вариант при условии, что конструкция БМГ позволяет полный ход, поскольку это тот же 1 с электронным ограничением. А если не позволяет? Если для компоновки бОльшего числа БМГ в существующие форм-факторы пришлось бы им урезать ход, в смысле уменьшить размер катушек? Но тогда уже отпадает смысл в этих стратегиях.)
Предполагаю, что четное число (2,4,6?) БМГ эффективнее размещать симметрично, нечетное (3) – может быть равносторонним, а может и не быть. А еще можно было бы на каждую сторону блина установить независимые головки… Полет фантазии приводит меня, например, к восьмиголовому одноблинному чудовищу: четыре независимые головки на каждой стороне. «Драматическое» многократное увеличение производительности при непропорционально меньших затратах.
II. Так же, имея многоканальный контроллер, можно было бы повысить производительность жесткого диска, организовав внутреннюю логику по типу RAID, даже на одном коромысле, используя разные стороны блинов. При возникновении битого сектора на одной стороне, на другой принудительно ремапился бы симметрично. Комбинация с I давала бы тоже неплохой эффект.
Вопрос, собственно, простой. Почему мы до сих пор ничего подобного не видим?
Существуют какие-то технические ограничения? Идея-то на поверхности...
Из всех прочих характеристик накопителей данных конечному потребителю приоритетно важны только две: объем хранимой информации и скорость работы с ней. Уровень шума, энергопотребления и, соответственно, тепловыделения, масса и цена – являются второстепенными (в разумных пределах).
И если для НЖМД с объемом все отлично, то со скоростью работы с информацией на фоне остальных основных компонентов ЭВМ далеко не все так хорошо.
Стандартное устройство НЖМД на первом уровне приближения выглядит так: корпус (гермоблок), пластины на шпинделе, единый блок магнитных головок и электронная начинка. «Узкими» местами по производительности при произвольном доступе являются скорость установки БМГ (время позиционирования, Вп) на нужный цилиндр и скорость вращения диска (время ожидания нужного сектора, Во).
I. То или другое время (либо и то, и другое) можно уменьшить, добавив еще один (а лучше несколько) БМГ и прикрутив многоканальный контроллер:
1) таким образом, чтобы ход каждого БМГ перекрывал всю поверхность блинов. БМГ расположены друг напротив друга, контроллер вычисляет суммы Вп+Во и посылает на операцию в/в ту головку, которая по времени «ближе» к нужному сектору.
2) таким образом, чтобы каждый БМГ обслуживал свою «половину» - один внешнюю, другой внутреннюю (больше БМГ – больше зон). Контроллер просто посылает на работу ту головку, в зоне ответственности которой находится сектор.
Под такой подход очень хорошо «ложится» NCQ. Так же через драйвер контроллер мог бы принудительно динамически настраиваться на разные стратегии работы. Скажем, для «трехголового» диска: 2+1, 3+0 – две головки на чтение, одна на запись; три на чтение и т.д. Целесообразность? Обеспечение некоей «гарантированной» скорости чтения для приложения, или для внутренних потребностей, например авральный сброс кэша на диск – 0+3. (Вообще, все зависело бы от реального числа БМГ, их конструкции и расположения друг относительно друга. Например, вариант 2 – это не вариант при условии, что конструкция БМГ позволяет полный ход, поскольку это тот же 1 с электронным ограничением. А если не позволяет? Если для компоновки бОльшего числа БМГ в существующие форм-факторы пришлось бы им урезать ход, в смысле уменьшить размер катушек? Но тогда уже отпадает смысл в этих стратегиях.)
Предполагаю, что четное число (2,4,6?) БМГ эффективнее размещать симметрично, нечетное (3) – может быть равносторонним, а может и не быть. А еще можно было бы на каждую сторону блина установить независимые головки… Полет фантазии приводит меня, например, к восьмиголовому одноблинному чудовищу: четыре независимые головки на каждой стороне. «Драматическое» многократное увеличение производительности при непропорционально меньших затратах.
II. Так же, имея многоканальный контроллер, можно было бы повысить производительность жесткого диска, организовав внутреннюю логику по типу RAID, даже на одном коромысле, используя разные стороны блинов. При возникновении битого сектора на одной стороне, на другой принудительно ремапился бы симметрично. Комбинация с I давала бы тоже неплохой эффект.
Вопрос, собственно, простой. Почему мы до сих пор ничего подобного не видим?
Существуют какие-то технические ограничения? Идея-то на поверхности...