Если накопитель не обеспечивает надежной передачи данных в заявленном высокоскоростном режиме, если данные начинают искажаться при обмене, рекомендуется понизить режим обмена. Правильный выбор режима обмена (табл. 1) обеспечивает надежность и производительность обмена.
У накопителей на жестких магнитных дисках наименьшей адресуемой единицей информации является блок данных размером в 512 байт. У их контроллеров, поддерживающих программный обмен, в наборе команд имеются команды «Чтение секторов» и «Запись секторов» (см. табл. 2). По этим командам контроллер осуществляет обмен между своим внутренним буфером данных и блоками данных, расположенными на магнитной поверхности жесткого диска. У процессоров, в их наборе команд, имеются команды (INS, OUTS), позволяющие эффективно загружать информацию из ячеек оперативной памяти во внутренний буфер данных контроллера диска, и выгружать информацию из внутреннего буфера данных контроллера диска в ячейки оперативной памяти (обмен осуществляется через регистр данных контроллера HDD).
Таблица 2. Минимальный набор команд контроллера HDD
Команда | Код команды | ||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
Рекалибровка | 0 | 0 | 0 | 1 | R3 | R2 | R1 | R0 | |
Поиск | 0 | 1 | 1 | 1 | R3 | R2 | R1 | R0 | |
Чтение секторов | 0 | 0 | 1 | 0 | 0 | 0 | L | Т | |
Запись секторов | 0 | 0 | 1 | 1 | 0 | 0 | L | т | |
Формат дорожки | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | |
Верификация секторов | 0 | 1 | 0 | 0 | 0 | 0 | 0 | т | |
Инициализация параметров НЖНД | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | |
Внутренняя диагностика | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Команды INS, OUTS имеют доступ к регистру данных контроллера диска (адрес которого указывается в команде), через который и осуществляется обмен данными с внутренним буфером данных контроллера диска. По команде INS осуществляется последовательно считывание из регистра данных содержимого буфера и пересылка этой информации в последовательно расположенные ячейки памяти. В регистр данных после очередного считывания с большой скоростью автоматически загружается следующее слово из буфера контроллера диска. По команде OUTS из последовательно расположенных ячеек памяти информация последовательно записывается в регистр данных контроллера диска, а затем с большой скоростью автоматически переписывается в буфер контроллера диска, заполняя его.
При чтении с жестких магнитных дисков сначала в контроллер диска пересылается команда «Чтение секторов«, происходит считывание информации из указанных в команде блоков данных диска в буфер контроллера, а затем процессор программным путем, с использованием команды INSW, считывает через регистр данных содержимое буфера и пересылает эту информацию в оперативную память.
При записи на жесткие магнитные диски, процессор сначала программным путем, с использованием команды OUTSW, считывает информацию из оперативной памяти и пересылает ее в регистр данных контроллера диска заполняя, таким образом, его буфер. А затем, после заполнения буфера, процессор пересылает в контроллер диска команду Запись секторов и происходит перепись информации из буфера в указанные в команде блоки данных диска.