Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Пристрої прямого доступу, що запам'ятовують

  Придбав собі вінчестер край дороги в кущах Виявилися бэд-блохи у вісімнадцяти місцях
Ахх
Ю. Нестеренко

Як вже говорилося, основну масу пристроїв цього типа складають диски — жорсткі і гнучкі, магнітні, магнітооптичні і оптичні. Асоціація між поняттями "Постійний пристрій прямого доступу, що запам'ятовує," і "диск" настільки щільно укорінялася в суспільній свідомості, що пристрої, що запам'ятовують, засновані на інших принципах, наприклад, банки флэш-памяти, інколи називають "твердотілими дисками". У цій главі ми розглядатимемо переважно пристрій магнітних дискових накопичувачів. Принцип пристрою дискового накопичувача широко відомий [Гук 2000].
Для зберігання даних служить диск, покритий феромагнітним шаром. У сучасних накопичувачах запис здійснюється на обидві сторони диска. Багато приводів з дисками, що не видаляються, мають декілька дисків. Диск може бути як гнучким, так і жорстким. Диск насаджений на вісь, звану шпиндель.
Залежно від способу кріплення, диски діляться на знімних (що видаляються) і незнімних (фіксовані). Насправді, с'емность накладає серйозні обмеження не лише на кріплення диска до осі, але і на конструкцію блоку голівок і приводу в цілому, а також пред'являє певні вимоги до контроллера — той повинен відстежувати наявність диска в приводі і факт його заміни. Незнімні диски, як правило, поміщаються в герметичний корпус, що захищає голівки і поверхню диска від пилу і інших шкідливих атмосферних дій.
Включення двигуна і розкручування шпинделя до робочої швидкості обов'язково проводяться до початку форматування диска або обміну даними з ним. Контроллери знімних дисків зазвичай зупиняють мотор в той час, коли накопичувач не використовується, контроллери ж дисків незнімних зазвичай зупиняють шпиндель лише при виключенні живлення.
Запис на магнітний диск і прочитування даних з нього здійснюється голівкою читання-запису, за принципом дії схожою на голівку звичайного побутового магнітофона. Голівка складається з феромагнітного сердечника, на якого намотаний дріт. Сердечник має розріз, якраз в тій частині, яка щонайближче до поверхні диска. Подаючи струм по дроту, можна створювати в сердечнику і, відповідно, в розрізі сердечника магнітне поле, яке намагнічуватиме диск. Таким чином, здійснюється запис даних. З іншого боку, коли напрям намагніченості диска, що проходить під голівкою ділянки, міняється, в дротах виникає індуктивний струм — детектуючи його, можна здійснювати прочитування. На відміну від простий передачі по дроту, голівка прочитує не сам записаний сигнат, а його похідну за часом (у аналогових магнітофонах це компенсується аналоговою інтеграцією сигналу).
Спосіб кодування нулів і одиниць при такому записі є декілька складніше завдання, ніж при немодульованій передачі даних по дроту. Видно, що записати на диск постійну високу або низьку напругу (відповідне послідовності нулів або одиниць в принципі, можна — у вигляді ділянки доріжки з постійною намагніченістю, але така послідовність не може бути лічена голівкою. Прочитувати можна лише зміни намагніченості. Таким чином, використовувати прості зміни напруги для кодування одиниць і нулів неможливо, і ми повинні винайти складнішу схему кодування.
Вибираючи схему кодування, ми повинні обов'язково вирішити також питання про спосіб синхронізації прочитування: добитися високої стабільності від мотора, що обертає шпиндель, неможливо. Крім того, в приводах низькошвидкісних, особливо гнучких, дисків доводиться зважати на небезпеку механічного заїдання підшипників і самого диска, а в приводах жорстких дисків з високою швидкістю обертання — з механічними вібраціями всієї конструкції, які можуть вплинути на швидкість проходження диска під голівкою навіть при стабільній середній кутовій швидкості шпинделя.
На стрічкопротяжних пристроях з декількома голівками нерідко використовується окрема синхродорожка, але на дискових пристроях її введення зажадало б істотного ускладнення і неприпустимого обважнює блоку голівок, тому зазвичай застосовуються схеми кодування з поєднаним синхросигналом.
Проста форма такого кодування, називається DFM (Double Frequency Modulation— модуляція з подвійною частотою). Видно, що при записі нуля ми здійснюємо одну зміну напряму струму за інтервал кодування одного біта, а при кодуванні одиниці — два, причому перше з цих змін зміщено відносно початки інтервалу. Таке кодування використовувалося на 8-дюймових гнучких дисках.
Декілька складніша схема кодування, використовувалася на 5- і 3-дюймових гнучких дисках низької щільності. Ця схема називається модифікованою фазовою модуляцією. На жорстких дисках в 80-і роки використовувалися частотна і модифікована частотна Модуляція. Сучасні жорсткі диски використовують складні схеми групового кодування, коли одна зміна фази або частоти намагнічива-кодіруєт декілька бітів.

Мал. 9.32. Проста і модифікована фазова модуляція

Голівка чтенія/запіси може переміщатися уздовж радіусу диска кроковим електродвигуном. В жорстких дисків голівка зазвичай розміщена на важелі, що нагадує звукознімач грамофона. В гнучких дисків голівка рухається по тих, що направляють під дією черв'ячної передачі, а в CD-ROM — зубчастої рейки. Накопичувачі, що мають більш за одну робочу поверхню, мають стільки ж голівок, скільки і поверхонь, але подача цього блоку голівок все одно здійснюється одним двигуном.
Коли блок голівок нерухомий, кожна голівка може прочитувати дані, записані на диску у вигляді кільцевої доріжки (track). Сукупність доріжок всіх поверхонь, відповідних одному положенню блоку голівок, утворює циліндр (cylinder) . Кількість циліндрів в накопичувача визначається шириною магнітної голівки (і обумовленою нею шириною намагніченої смуги) і точністю, яку може забезпечити механіка подачі голівки. Стандартні приводи 3-дюймових дискет мають 80 доріжок. Кількість циліндрів в сучасних жорстких дисків досягає декількох тисяч. При всіх перерахованих вище, а також при складніших сучасних способах модуляції запис даних на доріжку здійснюється блоками або секторами. Сектори аналогічні кадрам, якими здійснюється передача даних через послідовні порти і шини. Сектор складається із заголовка і блоку даних. Заголовок зазвичай містить номер доріжки (щоб контроллер міг переконатися, що правильно позиціював голівку) і сектори на доріжці, а інколи також і поверхні. Крім того, заголовок практично завжди містить контрольну суму або інколи дві окремі контрольні суми — для заголовка і для даних. Простір між секторами заповнений спеціальними зонами, службовцями для вирівнювання і синхронізації (мал. 9.35 і таблиця. 9.5). Нерідко використовуються також спеціальні маркери — послідовності змін сигналу, які не можуть з'явитися при прийнятій схемі модуляції. Маркери використовуються для відмітки початку доріжки або, рідше, початку сектора.

Мал. 9.35. Структура доріжки дискети з подвійною щільністю

Перед тим, як диск може бути використаний для запису даних, він має відформатувати або, як говорили раніше, розмічений — на його доріжки мають бути записані заголовки секторів з правильними номерами доріжки і сектора, а також, якщо це необхідно, маркери. Як правило, при цьому ж відбувається тестування поверхні диска для пошуку дефектів магнітного шару. Не слід плутати цю операцію — фізичне форматування диска — з логічним форматуванням, створенням файлових систем. Сучасні жорсткі диски конструктівов АТА і SCSI зазвичай вимагають фізичного форматування в заводських умовах.

Таблиця 9.5. Структура сектора дискети з подвійною щільністю, цит. по [МІКРОЕВМ 1988]

Довжина в байтах Опис
12 Зона синхронізації
4 Адресний маркер
1 Номер доріжки
1 Номер сторони
1 т Номер сектора
1 Довжина сектора
2 Циклічна контрольна сума
22 Зона типа 2 (див. мал. 9.35)
12 Зона синхронізації
4 Маркер даних
256/512/1024 Дані
2 Циклічна контрольна сума
36-116 т Зона типа 3 (див. мал. 9.35)

Зона типа 1 довжиною 32 байти відзначає початок доріжки, а зона типа 4 завдовжки від 118 до 266 байт служить для заповнення доріжки до повної довжини.
Кількість секторів в одній доріжці визначається, з одного боку, довжиною сектора, а з іншої — частотою модуляції. Частота модуляції, у свою чергу, обмежена частотною характеристикою схеми управління магнітною голівкою, індуктивністю самої голівки і параметрами феромагнітної поверхні диска (розміром мінімального домена намагнічення). Останній чинник, фактично, обмежує лінійну щільність запису (кількість бітів на міліметр або дюйм довжини доріжки), тому в довших зовнішніх доріжках доцільно робити більше секторів, чим у внутрішніх (мал. 9.36). Це рішення ускладнює адресацію секторів і логіку контроллера, тому почало широко застосовуватися лише відносно недавно.

Мал. 9.36. Диск із змінною кількістю секторів на доріжках

Привід магнітного диска, таким чином, складається з трьох різнорідних електромеханічних і аналогових пристроїв. Управління якими повинне здійснюватися в строгому узгодженні:

  • електродвигуна шпинделя;
  • крокового двигуна подачі голівки;
  • аналогових каскадів управління магнітною голівкою.

Пристрій, що управляє всім цим, називається дисковим контроллером і складається з кодерів і декодерів використовуваної схеми модуляції, логіки що формує заголовок сектора при записі або перевіряючою його цілісність при прочитуванні, буфера даних сектора і сдвігового регістра, підключеного до кодера і декодера управління голівкою (мал. 9.37). Сучасні контроллери зазвичай містять складнішу логіку, що забезпечує передачу даних в основне ОЗУ комп'ютера в режимі ПДП (у тому числі і распределеніє/сборку (scatter/gather) — передачу одного сектора або групи секторів в несуміжні ділянки пам'яті), чергу обслуговуваних запитів, що випереджає прочитування, відкладений запис і кешування даних, переадресацію дефектних секторів і ін.

Мал. 9.37. Схема контроллера диска

Контроллер гнучких дисків ДВК
Як простий дисковий контроллер розглянемо мікросхему К1801вп1-097 [МІКРОЕВМ 1988] (Ця мікросхема є радянським функціональним аналогом мікросхеми контроллера гнучких магнітних дисків, розробленою фірмою DEC для використання в міні- і мікрокомп'ютерах сімейства Pdp-11. На жаль, авторові не удалося знайти маркіровку оригінальної мікросхеми і заслання на документацію про неї).
Мікросхема допускає підключення чотирьох приводів 5-дюймових гнучких дисків і містить в собі порти управління основним і кроковим електродвигунами приводу, сдвіговий регістр, модулятор і демодулятор МФМ, логіку виявлення маркерів, генератор циклічної контрольної суми і інтерфейс системної шини Q-bus. В мікросхеми є два 16-розрядних регістра, регістр управління і регістр даних. Опис бітів регістра управління приведений в таблиці. 9.6.

Таблиця 9.6. Регістр К1801вп1-097, що управляє

Біт Опис Коментар
00 (W) Вибір накопичувача 0
00 (R) Доріжка 0 Голівка чтенія/запіси встановлена на доріжку 0
01 (W) Вибір накопичувача 1
01 (R) Накопичувач готовий
02 (W) Вибір накопичувача 2
02 (R) Запис заборонений На дискеті встановлений захист запису
03 (W) Вибір накопичувача 3
04 Включення двигуна
05 Поверхня Якщо 1, запис (читання) відбуваєтеся верхній поверхні диска
06 Напрям кроку При записі 1, напрям до осі диска
07 (W) Крок При записі 1 в цей біт, голівка переміщається на один крок і біт очищається
07 (R) Дані готові Контроллер виставляє цей біт, коли лічено або записано чергове слово даних. ЦПУ повинне прочитати або записати наступне слово сектора
08 Часткове скидання  
09 Запис маркера  
10 Включення зовнішньої схеми прекоррекциі фазових спотворень  
14 Успіх операції 0, якщо операція завершилася помилкою
15 Початок доріжки  

Видно, що мікросхема передбачає роботу з нею центрального процесора в режимі опиту. Складніший контроллер КМД (Контроллер Мінідисків), заснований на цій мікросхемі, містить мікропроцесор, ПЗП з програмою для нього і 2кб ОЗУ (яке може використовуватися і для між, точних даних програми мікропроцесора, і для зберігання самих даних передаваного блоку) [МІКРОЕВМ 1988]. Робота з цим контроллером здійснюється за допомогою двох регістрів, команди/состоянія і даних. Центральний процесор записує в ці регістри команду (таблиця. 9.7) і адресу блоку параметрів в основному ОЗУ. Контроллер в режимі ПДП прочитує блок параметрів і намагається виконати операцію, передаючи дані, якщо це необхідно, також в режимі ПДП. Покажчик на блок даних міститься в блоці параметрів. Однією операцією можна прочитати або записати декілька послідовних секторів. Після завершення передачі контроллер генерує переривання.

Таблиця 9.7. Список команд контроллера КМД, цит. по [МІКРОЕВМ 1988]

Код Мнемоніка Опис
0h RD Читання
1h WR Запис
2h RDM Читання з маркером
3h WRM Запис з маркером
4h RDTR Читання доріжки
5h RDID Читання заголовка
6h FORMAT Форматування доріжки
7h SEEK Подача голівки
8h SET Установка параметрів
9h RDERR Читання достатку і помилок
Fh LOAD Завантаження

Контроллер жорстких дисків St506
Складніший контроллер St506 був розроблений фірмою Western Digital в кінці 70-х років минулого століття для управління жорсткими дисками, що підключаються до мікропроцесорних систем. Цей контроллер і його вдосконалена версія, St412, широко застосовувалися для підключення жорстких дисків до IBM РС і сумісних з ними комп'ютерів [citforum.ukrpak.net IDE, Гук 2000, РС Guide IDE].
Контроллер St506 допускав підключення двох жорстких дисків ємкістю до 40мь, що використовують модифіковану частотну модуляцію, а пізніші версії контроллера — групову модуляцію RLL. Як і описаний вище КМД, контроллер містив логіку управління мотором шпинделя і подачею голівок, буфер для одного сектора і схеми модуляції і демодуляції МЧМ. Диски приєднувалися до контроллера двома плоскими кабелями: один, з 34-мя дротами, використовувався для передачі сигналів управління двигунами, а другий, 20-дротяний — для передачі модульованих сигналів МЧМ.
Центральному процесору контроллер St506 доступний у вигляді двох блоків регістрів, що управляє і командного. Блок регістрів, що управляють, розміщується по адресах Ox3f4-ox3f7, а блок командних— по адресах 1FO-1F7 (таблиця. 9.8).
Регістри, що управляють, використовуються для доступу до регістрів даних і статусу без подачі контроллеру сигналу про те, що регістр прочитаний (сенс цей стане ясний далі). Мабуть, єдиний самостійно корисний біт в цих регістрах управляє дозволом переривань від контроллера. Основна робота з контроллером відбувається через блок з восьми командних регістрів, один з яких є регістром даних.
При виконання команди запису контроллер подає голівку до доріжки, вказаної регістрами CY і DK, генерує переривання і виставляє сигнал DRQ (таблиця. 9.9), сигналізуючи процесору, що готовий прийняти дані. Потім процесор проводить 512 операцій запису в порт даних, заповнюючи буфер. Контроллер виконує запис, генерує переривання і, якщо лічильник секторів ще не порівнявся з нулем, збільшує номер сектора і знову виставляє сигнал DRQ.
Операція читання виконується аналогічно, з тією лише різницею, що контроллер спочатку прочитує сектор, і лише потім виставляє DRQ. Цикли читання і запису регістра даних, таким чином, приводять до збільшення лічильника буфера. Набор команд контроллера приведений в таблиці. 9.10.

Таблиця 9.8. Командні регістри контроллера St506, цит. по [chip.ms.mff.cuni.cz Ата2]

Адреса Функція (читання) Функція (запис) Код
0x1 F0 Дані (младш.) Дані (младш.)  
0x1 F1 Помилка Прекомпенсация РС
0x1 F2 Лічильник секторів — " — SC
0x1 F3 Номер сектора — " — SN
0x1 F4 Циліндр (младш.) — " — CY
0x1 F5 Циліндр (старш.) — " — CY
0x1 F6 Устройство/поверхность — " — DH
0x1 F7 Статус Команда  

Таблиця 9.9. Біти регістра статусу St506, цит. по [chip.ms.mff.cuni.cz IDE]

Біт Мнемоніка Опис
7 BUSY Пристрій зайнятий
6 DRDY Пристрій готовий приймати команди
5 DWF Помилка запису
4 DSC Подача голівки завершена
3 DRQ Запит даних
2 CORR Поправна помилка при читанні даних
1 INDEX Маркер початку доріжки
0 ERROR Помилка

Таблиця 9.10. Команди контроллера St506, цит. по [chip.ms.mff.cuni.cz IDE]

Код Опис РС SC SN CY DH
90h Діагностика приводу D+
50h Форматувати доріжку V V
20h Читання секторів з повтором V V V V
21h Читання секторів V V V V
40h Перевірка секторів з повтором V V V V
41h Перевірка секторів V V V V
1xh Повернення до доріжки D
7xh Подача голівки V V
30h Запис секторів з повтором V V V V
31h Запис секторів V V V V

V— використовується значення регістра
D — використовується лише біт вибору диска
D+ — незалежно від біта вибору диска, реагують обидва диски

Контроллери жорстких дисків ESDI, IDE, EIDE
Подальше вдосконалення St506 йшло у напрямі перенесення функції контроллера на сам жорсткий диск. Першим кроком став інтерфейс ESDI, запропонований фірмою IBM в 1985 році. У ESDI модуляція сигналу виконувалася не контроллером, а платою, встановленою на диску. Це дозволило, по-перше, використовувати жорсткі диски з схемами модуляції, відмінними від МЧМ і RLL і, по-друге, збільшити допустиму довжину кабелів до трьох метрів. Контроллер ESDI по регістрах і наборі команд був повністю сумісний з St506/412, але забезпечував роботу з дисками більшої ємкості і більшої продуктивності.
Наступний, радикальніший, крок був зроблений наступного року фірмами Western Digital і Compaq, що запропонували перенести весь контроллер на жорсткий диск. Відповідний конструктив був названий IDE (Integrated Drive Electronics — інтегрована на приводі електроніка).
40-жильний плоский кабель IDE є, фактично, розширенням шин адреси і даних ISA. По ньому передаються 16 біт даних і п'ять ліній адреси. Перші дві лінії адреси вибирають групу регістрів — контрольний або командний блок регістрів, розташованих по тих же адресах шини ISA, що і відповідні регістри St506. Останні три лінії вибирають один з регістрів відповідної групи і через лінії даних кабелю підключають його до шини даних ISA.
IDE, як і St506, допускає підключення двох жорстких дисків, Кожен з дисків має свій контроллер і свої блоки регістрів. Коли ЦПУ проводить запис в ці регістри, вона відбувається в регістри обох контроллерів. Проте на запити читання і, тим більше, виконань команди відгукується лише той контроллер, який вибраний регістром він. Ета вельми своєрідна архітектура дозволила зберегти повну програмну сумісність з контроллером St506 при повній же зміні конструктиву. Основним недоліком цієї архітектури є той сумний факт, що доки один диск відпрацьовує команду або передає дані, звернення до другого диска неможливі.
IDE декілька пізніше отримав статус стандарту ANSI під назвою ATA (AT Attachment— [інтерфейс] приєднання до IBM Pc/at) [www.t13.org] і до цих пір є основним способом підключення жорстких дисків до настільних комп'ютерів і інколи навіть до малопотужних серверів, причому не лише на основі процесорів х86, але і Powermac, Sparcstation і ін.
Сучасні версії стандарту підтримують обмін 16-розрядними даними (при нормальному відробітку команди код помилки не потрібний, а прекомпенсация сучасними контроллерами взагалі не використовується, тому для даних можна використовувати регістри 0x1 FO і 0x1 F1, створюючі при цьому єдиний 16-розрядний регістр), автоідентифікацію геометрії і інших параметрів жорстких дисків, логічну адресацію блоків (LBA — Logical Block Addressing, коли регістри SN, CY і 4 молодших біта він утворюють лінійний 28-бітовий адреса сектора), роботу в режимі ПДП і передачу даних з швидкостями до 60 Мбіт/с [Гук 2000, citforum.ukrpak.net IDE, РС Guide IDE www.t13.org].
Розширення протоколу ATAPI (ATA Packet Interface) пакетний інтерфейс ATA передбачає також можливість управління недисковими пристроями (CD-ROM, стріммерамі, магнітооптичними дисками) шляхом передачі через регістр даних 12-байтових блоків команд, аналогічних командам SCSI.

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017