Ultra DMA
З літа 1997 року в комп'ютерних фірмах постійно звучить питання "А ця системна плата (або вінчестер) підтримує Ultra DMA? "Масована реклама зробила свою справу - не тільки покупці нових, а й власники існуючих комп'ютерів стурбовані переходом на цей новий тип EIDE-інтерфейсу. Багато йдуть навіть на те, щоб обміняти ще гарантійне обладнання із звичайним EIDE на плату і вінчестер з Ultra DMA. Дійсно, подвоєна швидкість передачі і апаратний контроль цілісності - вельми привабливі властивості нового інтерфейсу. Однак при найближчому розгляді красиво і соковито намальована картина виглядає далеко не так привабливо і гармонійно. p> Для початку - невеликий технічний огляд. Ultra DMA - це не сам інтерфейс, а лише один з його режимів роботи, а сам він називається Ultra ATA, або ATA-33. Попередня модель інтерфейсу - ATA-2 - забезпечує швидкість передачі до 16.6 Мб/с; така швидкість може реалізовуватися або в режимі PIO 4 (Programmable Input/Output Mode 4 - програмний введення/висновок типу 4), або в режимі Multiword DMA 2 (Multiword Direct Memory Access Mode 2 - багатослівний прямий доступ до пам'яті типу 2). Режими PIO простіше в управлінні - їх використовують DOS і Windows за відсутності спеціальних драйверів конкретної моделі контролера, однак вимагають помітних витрат процесорного часу і ускладнюють паралельне виконання завдань. Режими DMA складніше у використанні, зате дозволяють виключити центральний процесор з перенесення даних, залишивши йому тільки роль ініціатора і диспетчера обміну з пристроєм. p> Ultra ATA подвоює швидкість передачі - його межа дорівнює 33.3 Мб/с в режимі Ultra DMA; таким чином, ця швидкість недоступна в режимах PIO. Власне, це не так важливо, бо всі популярні операційні системи зараз підтримують роботу в DMA - драйвери є навіть для DOS, хоча не зовсім зрозуміло, який там від цього толк. p> Однак зазначені швидкості - ні що інше, як максимально можливі швидкості передачі. Для того, щоб передавати по інтерфейсу дані з такою швидкістю, вінчестер повинен встигати їх зчитувати з дисків, а приймаючи - записувати на диски. Швидкість же обертання більшості сучасних вінчестерів становить 5400 об/хв, при якій швидкість зчитування даних з дисків виходить максимум близько 10 Мб/с та й то лише на зовнішніх ділянках дисків, які рухаються з найбільшою лінійною швидкістю. Швидкість запису зазвичай виявляється нижче, причому нерідко - досить суттєво. Таким чином, навіть старий інтерфейс ATA-2 має полуторний запас по швидкості обміну з поверхнями дисків, а максимальна швидкість обох інтерфейсів реалізується лише при обміні з буфером вінчестера, який має невеликий розмір - 100 .. 256 кб, і до того ж є саме буфером , а не кешем. Відмінність буфера від кеша полягає в тому, що буфером називається проміжна пам'ять, призначена для згладжування відмінностей швидкості читання/запису і передачі по інтерфейсу, а кешем - пам'ять, що зберігає найбільш часто читають блоки. Зрозуміло, буфер вінчестера може працювати і в якості кешу, але ефективність його в цьому сенсі вкрай низька - розмір і швидкість обміну дуже малі за порівняно з програмним кешем операційної системи. p> Щоб приблизно оцінити перевагу Ultra ATA перед ATA-2, можна виконати нескладні викладки. Алгоритм обміну процесора з вінчестером такий: процесор ініціює операцію читання; вінчестер зчитує перший сектор в буфер і видає переривання, продовжуючи читати наступні сектори; процесор або забирає дані з буфера за протоколом PIO, або це робить сам контролер вінчестера по протоколом DMA; процес повторюється до передачі останнього сектора. Візьмемо вінчестер з кращих, що забезпечує читання з поверхні зі швидкістю 10 Мб/с, і розглянемо його роботу з кожним з двох типів інтерфейсів. Оскільки швидкість читання з поверхні незмінна і змінюється тільки швидкість передачі буфера по інтерфейсу, загальний час зчитування з диска потрібного обсягу інформації в обох випадках буде однаковим - зміниться лише час передачі буфера в пам'ять і інтервал між цими операціями. Для передачі одного сектора (0.5 кб) зі швидкістю 16.6 Мб/с потрібно близько 30 мкс; для швидкості 33.3 Мб/с цей час становитиме близько 15 мкс. При зчитуванні 10 Мб на весь процес піде одна секунда, з якої близько 6/10 або 3/10 піде на власне перекачку даних по інтерфейсу. Однак, на відміну від режимів PIO, цей час не буде втрачено на очікування - протягом нього процесор буде успішно виконувати інші завдання. p> Ці розрахунки наведені тільки для ідеального випадку - більшість сучасних EIDE-вінчестерів мають середню швидкість читання в районі 6-8 Мб/с і ще більш низьку швидкість запису, процес читання/запису дуже рідко має справу з великою кількістю послідовних секторів - найчастіше вінчестер набагато більше займається переміщенням голівок, що чим власне читанням або записом даних. Крім цього, в більшості побутових і офісних систем процесору нема чим зайнятися до завершення передачі даних, і він просто пр...