Page 3 of 10

Re: Скорость работы с IDE дисками

Posted: Thu May 21, 2015 11:02 pm
by Serge
Лучше всего обрабатывать прерывания. Создать событие на каждый контроллер и активировать в обработчике прерываний. В отдельном потоке ядра для обслуживания контроллеров выполнять основную работу.

Re: Скорость работы с IDE дисками

Posted: Sat May 23, 2015 9:17 pm
by Pathoswithin
Почитал разного, в том числе какую-то суровую документацию. Стала вырисовываться целостная картина. Sector count касается передачи данных между диском и внутренним буфером. Передача между буфером и оперативной памятью осуществляется по одному сектору с последующим ожиданием, поэтому команды READ SECTORS после каждого сектора генерируют прерывания. В своём драйвере я использовал команду READ MULTIPLE EXT (29h), она выдаёт данные блоками. Перед ней нужно слать SET MULTIPLE MODE, но по умолчанию выставляется максимальный размер блока (видимо равный размеру внутреннего буфера). У меня SATA в режиме IDE, буфер 16 мб - потому и работало.
Чтобы сделать нормальную поддержку LBA28 (если она ещё кому-то нужна), надо будет сделать проверку так-же как и проверку DMA. Причём ATA поддерживает DMA с самого начала, тогда не совсем понял, в каких случаях будет использоваться PIO?

Re: Скорость работы с IDE дисками

Posted: Sun May 24, 2015 1:48 pm
by kiv
PIO будет использоваться для обратной совместимости с кучей доисторического хлама и для мат.плат не включающих поддержку DMA в силу своей допотопности, либо при объединении в soft-RAID, JBOD-RAID нового винта с допотопным т.е. никогда.

Re: Скорость работы с IDE дисками

Posted: Sun May 24, 2015 10:49 pm
by Pathoswithin
Тогда возникает ещё два вопроса. Совместим ли доисторический хлам с ATA драйвером? Будет ли использоваться PIO48?

Нет, похоже максимальный размер блока для READ MULTIPLE - 16 секторов. Мой драйвер работал параллельно с виндовым, но всё равно не понимаю как.

Re: Скорость работы с IDE дисками

Posted: Mon May 25, 2015 5:36 am
by Pathoswithin
Что-то теория не сходится с практикой. PIO mode 4 обещает скорость до 16 МВ/с. Вроде всё сделал правильно, а скорость не изменилась. Использовал READ SECTORS EXT с отгрузкой по одному сектору. Может это у меня что-то? Сравните скорость копирования ntfs -> ntfs и другие расклады. (Меня интересует IDE, но можно проверить и USB hard drive, там разница должна быть огромной)

Re: Скорость работы с IDE дисками

Posted: Mon May 25, 2015 6:12 am
by Pathoswithin
Или вот READ MULTIPLE EXT с отгрузкой по 16 секторов. Скорость не изменилась, но индикатор жёсткого диска теперь почти не светится. В вашем караване точно больше нет верблюдов? Может маленькие? Или спрятались... верблюды ниндзя ?!

Re: Скорость работы с IDE дисками

Posted: Mon May 25, 2015 9:04 pm
by kiv
На всякий случай предупрежу, если на SATA НЖМД перемычка, лучше снять.
Тебя интересует IDE режим или IDE - устоявшееся название класса дисков, по названию их кабеля?
Для USB использовать эмуляцию SCSI или SATA диска?
Для штатного SATA могу предопределенно выставить конкретный режим от самых первых PIO до более-менее современных DMA режимов. Соответственно, в каких режимах потестировать?
Будет ли существенная разница от установки SATA в слот мастера или ведомого?

Re: Скорость работы с IDE дисками

Posted: Mon May 25, 2015 10:39 pm
by Pathoswithin
Вижу будут проблемы. Нужно тестировать в живую, как я, а это наверно никто делать не будет. Я пока ещё себе ничего не запорол, но у меня и терять нечего. Изначально я думал, что проблемы со скоростью только на уровне файловой системы; в ntfs.inc эта проблема устранена. Потом оказалось, что тоже самое и в драйверах; работаю над IDE драйвером hd_drv.inc, пока только PIO32 и то не оправдывает ожиданий... совсем. Боюсь, что могут быть ещё проблемы... может со скоростью PCI, на ней же всё сидит. Интересует реальный механический диск в IDE режиме, остальное не важно. Ну и, если верить CleverMouse, в USB драйвере должно быть всё кошерно, то-есть ntfs уже сейчас должен летать. Тоже можно проверить, но опять таки нужен реальный диск, подключённый по USB.

Posted: Mon May 25, 2015 11:35 pm
by punk_joker
Могу подключить реальный диск через USB-SATA/IDE переходник. Надо проверить скорость чтения/записи, верно? Утилитой fspeed можно это сделать?

Re: Скорость работы с IDE дисками

Posted: Tue May 26, 2015 2:30 am
by Pathoswithin
Только не fspeed. Мне лень разбираться, но наверняка что-то сферическое в вакууме. Писал тот же Марио, мог что-то нахимичить с учётом особенностей своих драйверов. Берёшь часы, засекаешь время копирования файла. Погрешность раза в два не критична - на кону гораздо больше. Меня интересует конечный результат, теорией сыт по горло. И с данными осторожно, я ничего гарантировать не могу.

Re: Скорость работы с IDE дисками

Posted: Tue May 26, 2015 7:46 am
by kiv
Ограничение в USB 2.0 даст только скорость для разгона, но не для полета. :D
Тестировать надо в FAT, EXT, NTFS по отдельности, а копировать с RAM-диска и на него...

Re: Скорость работы с IDE дисками

Posted: Tue May 26, 2015 9:29 am
by Pathoswithin
USB 2.0 High-speed 25—480 Мбит/с (видеоустройства, устройства хранения информации) - гораздо больше чем 2 МБ/с
Новые функции сейчас только в NTFS, остальное должно работать одинаково.

Re: Скорость работы с IDE дисками

Posted: Tue May 26, 2015 3:28 pm
by CleverMouse
Время копирования файла зависит от того, как копировать. И от того, насколько фрагментированы файл-источник и файл-назначение. Копирование в KFar, например, не показатель.

Re: Скорость работы с IDE дисками

Posted: Tue May 26, 2015 3:42 pm
by Pathoswithin
CleverMouse wrote:kfar копирует блоками по 64K
Точно, kfar не пойдёт. К тому же, NTFS пока не умеет дописывать файлы.

Re: Скорость работы с IDE дисками

Posted: Wed May 27, 2015 1:12 am
by kiv
Pathoswithin wrote:Тогда возникает ещё два вопроса. Совместим ли доисторический хлам с ATA драйвером? Будет ли...
Тот, который IDE-диск, вроде, да, а на счет 48 сейчас не вспомню, но такой драйвер точно должен уметь работать без LBA :mrgreen: