iHDD.RU
Список форумов Форум iHDD.RU Форум iHDD.RU
Ремонт накопителей и восстановление информации
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

 
Вопрос по PCI IDE контроллеру

 
Начать новую тему   Ответить на тему    Список форумов Форум iHDD.RU -> Общий форум  Общий форум
Вопрос по PCI IDE контроллеру
Автор Сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Чт, 31 Мар, 2005 22:03    Заголовок сообщения: Вопрос по PCI IDE контроллеру Ответить с цитатой

Здравствуйте Всем.
Пусть я копирую (в Win) данные с одного винта (на Primary)
на другой(на Secondary) - в режие UDMA,естественно.
При таком обмене занимается ли контроллером шина PCI(та на которой он сидит),или нет?
Из описаний контроллера PCI IDE вроде бы следует,что в
DMA(UDMA) контроллер инициализируется адресами памяти(точнее
дескрипторами адресов),куда надо направить обмен между Device и памятью,но ведь Device,(второй приёмник данных в моём вопросе)
не принадлежит к пространству памяти(а к вв/выв).
Непонятно,или контроллер гонит данные сначала в память от одного
Device,а затем из памяти заливает другой Device ,или всё таки
контроллер при таком обмене в UDMA напрямую соединяет
два контроллера.
С Ув.Геннадий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
usverg



Зарегистрирован: 02.04.2005
Сообщения: 11

СообщениеДобавлено: Сб, 02 Апр, 2005 08:55    Заголовок сообщения: Ответить с цитатой

Что значит напрямую соединяет 2 контроллера. Копирование файла это же не перекиывание земли лопатой. Это прежде всего работа с файловыми системами на обоих винтах. А про файловые системы контроллер не в курсе. Кроме того как программист могу сказать что копирование это всего лишь чтение/запись файла через выделенный буфер кусками Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Сб, 02 Апр, 2005 10:49    Заголовок сообщения: Ответить с цитатой

Большое спасибо за ответ,Ув usverq!
Да,я понимаю,что на уровне ОС за обмен данными между винтами
отвечают высокоуровневые драйверы,предоставляющие пользователю опять же высокоуровневые услуги.Понимаю я и
то,что программисту в принципе наплевать,как высокоуровневый
драйвер обеспечит выполнение требуемой операции.
Меня интересует не это.
Контроллеры винтов понимают лишь определённый набор
команд,где минимальной единицей задания является
сектор(при обмене данными).Работа любого высокоуровневого
драйвера в любом случае выльется в необходимую последователь-
ность команд,приводящих к обмену секторами между двумя
контроллерами винтов(для моего примера).Так я просто хочу
знать,при UDMA хост загонит данные сначала в ОЗУ(от передатчика)
а потом вернёт из ОЗУ их же приёмнику,или же обмен (на уровне
секторов) между контроллерами происходит как то иначе.
Подскажите пожалуйста,где можно почитать инфу по
программированию(низкоуровнему) PCI IDE контроллера -
там я думаю и будет ответ.(чем можно инициализировать
контроллер - адресами памяти,адресами портов для обеспечения
режима UDMA при работе этого контроллера в режиме Bus Master)

С Ув.Геннадий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
usverg



Зарегистрирован: 02.04.2005
Сообщения: 11

СообщениеДобавлено: Сб, 02 Апр, 2005 13:55    Заголовок сообщения: Ответить с цитатой

Не знаю как насчет команд. Но винда копирует файлы по любому через память. Линух впрочем тоже. Я думаю если бы такое было возможно об этом кричали бы все реализовавшие данную фичу производители материнок, да и название технологии бы придумали звучное. Только одно но - уж больно специфическая и неюзабельная в общем случае фишка получилась бы, чтобы ради поддержки ее пол-ядра оси переписывать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Doomer



Зарегистрирован: 29.09.2005
Сообщения: 341
Откуда: Чикаго

СообщениеДобавлено: Сб, 02 Апр, 2005 18:37    Заголовок сообщения: Ответить с цитатой

UDMA protocol - Ultra DIRECT MEMORY Access Protocol
еще вопросы есть ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Сб, 02 Апр, 2005 23:41    Заголовок сообщения: Ответить с цитатой

Большое спасибо за ответы!
Но только вопрос всё равно есть.
Как переводится UDMA protocol я знал.(to Doomer).
Для реализации функции обмена между двумя контроллерами
HDD необязательно переписывать пол ядра ОС.Достаточно
каким -то образом инициализировать контроллер PCI IDE
адресами портов контроллера HDD,к которому будут передаваться
данные и подать передатчику команду Read DMA, а приёмнику
Write DMA и естественно обеспечить нужную последовательность
управляющих сигналов (DIOR,DIOW,DMARQ,DMACK и т.п.)
для передатчика и приёмника.(to usverq)(это всё ИМХО конечно)
В принципе всё логично - контроллер PCI IDE обеспечивает
прямой доступ к памяти контроллеру одного HDD,затем другому.
Но,если я правильно понимаю,на время обмена данными
между двумя контроллерами в режиме UDMA (и DMA тоже)
будет полностью занята шина PCI,где сидит контроллер PCI IDE,
(на моей машине PCI bus 0),шина PCI,где сидит AGP adapter(у меня
PCI Bus1),шина Hub Interface,связывающая MCH и I/O Controller Hub,
шина памти наконец.Короче,будет парализована работа всей системы.В любой литературе по поводу режима UDMA говорится,что он полностью освобождает процессор для других действий.Но какие он может произвести действия,если все пути к нему от других устройств(шины) заняты UDMA (DMA)обменом?Понятно конечно,что многозадачная ОС для каждого процесса выделит свой отрезок времени,для создания иллюзии одновременности выполнения процессов,но если бы обмен между винтами велся внутри контроллера PCI IDE,не выходя на шины, вот тогда бы процессор действительно мог свободно быть занят другой работой - а так - все шины заняты(остаётся ему лишь проводить внутренние операции с данными в регистрах и кэше). Всё это конечно моё убогое представление работы PC.Хотя операции обмена данными между винтами,между логическими разделами занимают не так уж и много времени на фоне общих задач,выполняемых компьютерной системой - можно и подождать. Извините за назойливость,но всё таки - как ведётся обмен для моего вопроса - через ОЗУ или непосредственно между контроллерами винтов?Где можно взять описание PCI IDE
контроллера и его программирование в UDMA?

С Ув.Геннадий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dmitry_Postrigan



Зарегистрирован: 14.04.2004
Сообщения: 1440
Откуда: :адуктО

СообщениеДобавлено: Вс, 03 Апр, 2005 02:02    Заголовок сообщения: Ответить с цитатой

Увы, мир не идеален…
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dmitry_Postrigan



Зарегистрирован: 14.04.2004
Сообщения: 1440
Откуда: :адуктО

СообщениеДобавлено: Вс, 03 Апр, 2005 02:04    Заголовок сообщения: Ответить с цитатой

Задача копирования с одного накопителя на другой настолько редкая и малозначительная для практически любого пользователя, что заморачиваться этим ни один производитель не станет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Вс, 03 Апр, 2005 09:17    Заголовок сообщения: Ответить с цитатой

Большое спасибо за ответ,Дмитрий.
С Ув.Геннадий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
usverg



Зарегистрирован: 02.04.2005
Сообщения: 11

СообщениеДобавлено: Вс, 03 Апр, 2005 11:04    Заголовок сообщения: Ответить с цитатой

Цитата:
Для реализации функции обмена между двумя контроллерами
HDD необязательно переписывать пол ядра ОС.Достаточно
каким -то образом инициализировать контроллер PCI IDE
адресами портов контроллера HDD,к которому будут передаваться
данные и подать передатчику команду Read DMA, а приёмнику
Write DMA и естественно обеспечить нужную последовательность
управляющих сигналов (DIOR,DIOW,DMARQ,DMACK и т.п.)
для передатчика и приёмника.(

Не все так просто. Как реализовано копировани в винде - юзер моде функция открывает исходный файл, открывает файл куда копировать, исходный файл кусками мэппится в память и пишется в целевой. Таким образом драйвер файловой системы отвечает исключительно за следующие операции с файлами - открыть/закрыть/прочитать/записать/удалить+контроль прав доступа обращающихся процессов к этим файлам. Сам по себе драйвер файловой системы не очень то знает про физическую организацию винта - этим за него занимается драйвер накопителя. Такая вот цепочка получается. Чтобы организовать копирование по такому принципу что ты сказал придется насквозь переделывать всю эту цепочку и реализацию копирования из юзер моде переносить чутьли не в драйвер накопителя, причем требовать от производителей накопителей поддержку (или эмуляцию) этой фичи - посекторного переноса данных с винта на винт.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Вс, 03 Апр, 2005 16:19    Заголовок сообщения: Ответить с цитатой

Спасибо за ответ,Ув. usverq.Всё верно.Так оно и есть.Два винта
обмениваются данными в UDMA через ОЗУ.Хотя ...чем чёрт не шутит.
Больно уж они рядом и больно уж окружной путь для такого
обмена.Поищу я всё таки описание этого контроллера и его
программирование.
С Ув.Геннадий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
usverg



Зарегистрирован: 02.04.2005
Сообщения: 11

СообщениеДобавлено: Вс, 03 Апр, 2005 17:01    Заголовок сообщения: Ответить с цитатой

Кстати а чего не развил мыслю - можно ведь не только между винтами обмениваться данными через контроллер, можно и внутри винта копировать файлы без передачи их по интерфейсу вообще. Но только если подумать - не так уж часто файлы копируются в системе. Обычно с ними совершается работа какая то) Взять в пример хотябы самые требовательные к скорости и загрузке процессора применения - оцифровка видео и работа с БД... А так - ну быстрее у тя будут фильмы переписываться с винта принесенного знакомым. Не стоит овчинка выделки.
[upd]
И кстати если ты вздумал писать такую хрень, то даже если ты и найдешь подобные команды (очень маловероятно) то просто заипесся с форматами современных ФС - например никто кроме микрософта не знает как правильно писать данные на нтфс). (Утилиты типа ntfsdos просто используют готовый уже написанный драйвер ntfs.sys).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Вс, 03 Апр, 2005 22:51    Заголовок сообщения: Ответить с цитатой

Мысля то одна и та же Ув.usverg.Если я конечно не ошибаюсь,то
в пределах одного винчестера,но на разных логических разделах
в нём запись из одного логического раздела в другой также
будет происходить через ОЗУ(при UDMA) - вот ведь что
обидно.Т.е.высокоуровневый драйвер ОС требует скопировать
файл из одного логического раздела в другой - притом на одном винте
(если в пределах одного лог.раздела,то как Вы наверняка знаете,
в FAT-ах просто создаются новые названия,ссылающиеся на те же
самые кластера).При таком требовании высокоуровневого драйвера
на копировку - надо уже реально положить инфу в кластера
другого раздела - т.е. на уровне команд контроллера HDD будут
проделаны следующие операции:
- сначала считаются сектора,из которых состоит файл,который
надо скопировать.Причём получается в UDMA - они скопируются
в память.
- затем эти же сектора из памяти будут слиты в этот же винт-
командами типа Write DMA.
Вот ведь что обидно - чтобы переместить данные из одной группы
секторов в другие в пределах одного винта - надо занять чуть ли
не все шины компа.(Это конечно если я всё более или менее правильно понимаю - что вряд ли).Вот на шине SCSI насколько
я знаю - устройства могут обмениваться данными друг с другом
не выходя на внешнюю шину компа.
А писать то я ничего не собираюсь - мне просто интересно.
Да и что писать-то.Если контроллер PCI IDE в принципе не поддерживает такого типа (без выхода на внешнюю шину) обмена,
то естественно никакой драйвер не заставит его это делать.
C Ув.Геннадий
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
TheDrive



Зарегистрирован: 10.02.2005
Сообщения: 310
Откуда: Moscow

СообщениеДобавлено: Пн, 04 Апр, 2005 06:25    Заголовок сообщения: Ответить с цитатой

Нда уж наслушаешься тут у вас Smile

Gennady wrote:
Цитата:
вот тогда бы процессор действительно мог свободно быть занят другой работой - а так - все шины заняты(остаётся ему лишь проводить внутренние операции с данными в регистрах и кэше).

Ув. Геннадий - Вы бы просто поглядели презентационную схему любого чипсета и все встало бы на свои места. Контроллер DMA придуман еще в 80х годах и смысл его существования на самом деле заключается в освобождении процессороа от выполнения<b>операций ввода-вывода</b> больших объемов данных при работе с <b>периферийными устройствами</b>. Зря Вы думаете, что в компе все операции осуществляются через шину PCI. Smile Процессор работает с памятью, через специальный контроллер памяти в чипсете, и на совершенно иных скоростях Smile, и, пока контроллер DMA передает данные от вашего винта через его контроллер и PCI шину, процессор преспокойно занимется вычислениями, необходимыми для других задач. Именно поэтому Вы не ощущаете "тормозов" (кроме "дисковых" Smile), пока идет копирование Smile Более того, AGP является отдельной шиной, с которой процессор все это время может "не стесняясь" общаться Smile Поэтому Вы не ощущаете и "тормозов" при работе с графикой, даже весьма интенсивной - например в играх. Smile
Кроме того, стоит заметить, что винты сегодня не в состоянии пропускать более 70Мб/с, хотя интерфейс (и контроллер и сама стандартная PCI-шина 32bit, 33MHz) позволяет прогонять 133Мб/с. Так что, при этом еще остается некоторый ресурс для общения с PCI-ной периферией. Smile

Про шину PCI можно почитать в статье по ниже приведенной ссылке:
http://www.computer-museum.ru/technlgy/pci.htm

Что касается того, чтобы все устройства сами между собой общались и все друг о друге знали - сами понимаете - нельзя же все доводить до абсурда Smile Зачем же тогда Вы будете нужны в этой схеме? Smile Ведь именно Вы сами, как пользователь (ну или Ваш "посредник" - программист) должны решать что, куда и зачем передавать между устройствами хранения данных. А задача копирования - мелкая частная проблема, волнующая по большей части нас - любителей всякого вареза Smile А главная задача любого компьютера - получить от нас данные, произвести вычисления, и выдать нам результат. С учетом, прежде всего, этого важнейшего фактора и разрабатывается архитектура любой вычислительной системы. Согласитесь, "отдельные устройства" в таком деле нам помоч не в состоянии Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Пн, 04 Апр, 2005 16:54    Заголовок сообщения: Ответить с цитатой

Большое спасибо за ответ Ув.TheDrive.И за ссылку спасибо - очень
интересный сайт,никогда его раньше не видел.
Шину AGP я зря приплёл,согласен.Согласен с тем,что задача копирования данных с винта на винт - не такая уж и важная в системе.Но с остальным не очень то и понятно.Помогите разобраться.
Опять та же ситуация.Контроллер PCI IDE гонит данные от контроллера винта в ОЗУ,затем от ОЗУ в другой контроллер винта.
Шина AGP независимо от других шин соединяется посредством чипсета
с системной шиной и шиной памяти.Но шина памяти(64 разряда - для
одноканальной системы) то всё равно одна(как и сама память) и общая для всех
абонентов,желающих к ней обратиться.(Если я правильно понимаю).
Работу современной видеокарты я представляю смутно,но думаю
что для её полноценной работы недостаточно лишь общения с процессором и его кэшем(свободные пути обмена для данного примера).Вот и получается ,что этот единственный путь будет
занят UDMA обменом с контроллерами винтов.ОС вынуждена будет
прерывать поочерёдно одну задачу(UDMA обмен),для выполнения
другой(обмен видеокарты с ОЗУ) и затем наоборот.Как тут может не
быть "тормозов" я не понимаю.Не совсем я понял и про мосты PCI,
одноранговые,соединяющие две равноправные шины PCI.
Пусть в системе 3 равноправные шины PCI.Они соединены между собой мостами типа PCI-to-PCI bridge.Пусть устройство
на одной из крайних шин требует обмена с устройством на другой крайней шине.Инициатор сообщает своему мосту требуемый им
адрес порта или памяти.Мост,если этого ресурса нет на его шине
перенаправит запрос на другую шину.У нас на этой шине тоже
требуемого адреса нет.Мост средней(у нас) шины перенаправит
этот же запрос на другую крайнюю шину.Там этот ресурс есть -
всё ОК два устройства начали обмен,но я не пойму - при своём
обмене они займут среднюю шину ,или же она свободна (для
обмена между собой сидящих на ней устройств)?

С Ув.Геннадий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
TheDrive



Зарегистрирован: 10.02.2005
Сообщения: 310
Откуда: Moscow

СообщениеДобавлено: Пн, 04 Апр, 2005 21:35    Заголовок сообщения: Ответить с цитатой

Сайт я нашел гуглем по запросу типа PCI 133 Smile

Честно говоря, тонкостями я не заморачивался, поскольку особой необходимости не было.

Цитата:

Опять та же ситуация.Контроллер PCI IDE гонит данные от контроллера винта в ОЗУ,затем от ОЗУ в другой контроллер винта.

Посредством контроллера DMA.

Цитата:

Шина AGP независимо от других шин соединяется посредством чипсета
с системной шиной и шиной памяти.Но шина памяти(64 разряда - для
одноканальной системы) то всё равно одна(как и сама память) и общая для всех абонентов,желающих к ней обратиться.(Если я правильно понимаю).

Шина памяти имеет в современных компах пропускную способность 4-8Гб/с, а стандартный PCI может передавать не более 133Мб/с. Я думаю, разница очевидна... - PCI может занять не более 2-3% пропускной способности шины памяти - это просто несерьезно. Smile

Цитата:

Работу современной видеокарты я представляю смутно,но думаю
что для её полноценной работы недостаточно лишь общения с процессором и его кэшем(свободные пути обмена для данного примера).Вот и получается ,что этот единственный путь будет
занят UDMA обменом с контроллерами винтов.ОС вынуждена будет
прерывать поочерёдно одну задачу(UDMA обмен),для выполнения
другой(обмен видеокарты с ОЗУ) и затем наоборот.Как тут может не
быть "тормозов" я не понимаю.

См. выше. - я не знаю как организуются приоритеты при занятии шины, но 2-3% "при любом раскладе" "погоды не сделают" Smile
Тормоза, если и будут, то лишь при попытке параллельного доступа к дисковой подсистеме (а Windows, как мы все хорошо знаем любит свопить что надо и ненадо... Smile)

Цитата:

Пусть в системе 3 равноправные шины PCI.Они соединены между собой мостами типа PCI-to-PCI bridge.
...
но я не пойму - при своём обмене они займут среднюю шину ,или же она свободна...

В такие тонкости не влазил, сорри Smile
Наверное можно найти это в спецификациях PCI.
В принципе, сегодня это уже не столь актуально. Скорость PCI уже кажется слишком мала, чтобы "вокруг нее плясать" Smile Да и мосты PCI-to-PCI используются AFAIK редко.
Теперь Intel продвигает шину PCI-Express, имеющую в корне отличающуюся последовательную архитектуру (типа USB) с независимым доступом к каждому слоту/устройству. В общих чертах про PCI-Express, новые чипсеты i915/925 и процы LGA можно почитать статью с картинками на сайте http://www.forum3.ru (найти ее там легко).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Вт, 05 Апр, 2005 09:41    Заголовок сообщения: Ответить с цитатой

Спасибо за ответ Ув.TheDrive.
Вопрос.
Позволяют ли какие-нибудь поисковые системы искать не просто
по ключевому слову,а производить поиск ключевых слов
в файлах с заданным расширением(заданным пользователем),
либо же искать в Интернете только файлы с заданными пользователем
именами(расширениями),и как это практически делать?
Подскажите Please кто-нибудь,если знаете.
С Ув.Геннадий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
TheDrive



Зарегистрирован: 10.02.2005
Сообщения: 310
Откуда: Moscow

СообщениеДобавлено: Чт, 07 Апр, 2005 02:56    Заголовок сообщения: Ответить с цитатой

Честно говоря, я уже собаку съел на разных "поисках" (с 97 года-то) - поскольку часто ищу всякий варез и тех инфу, которая вообще мало кому нужна. Собственно, таких поисковиков, как вам хотелось бы никогда не видел. Поисковики не в состоянии индексировать двоичные файлы за редким исключением. Лучшие поисковики, типа Google (для России еще и Yandex) обычно кроме веб-страниц в состоянии индексировать .TXT, Word DOC, Excel XLS, Acrobat PDF и, иногда, еще некоторые типы данных. При этом, обычно, можно даже поглядеть индексированное содержимое прямо из кеша поисковика в HTML виде, дабы не качать документ целиком. Если хочется искать что-то в такого рода документах, можно попробовать задать расширение в строке поиска, но не могу сказать насколько это будет эффективным.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gennadiy



Зарегистрирован: 14.03.2005
Сообщения: 21

СообщениеДобавлено: Чт, 07 Апр, 2005 09:30    Заголовок сообщения: Ответить с цитатой

Спасибо за ответ Ув. TheDrive

С Ув.Геннадий
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум iHDD.RU -> Общий форум Часовой пояс: GMT + 3
Страница 1 из 1

 








Rambler's Top100 Рейтинг@Mail.ru

Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB