 |
Форум 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 контроллера. Копирование файла это же не перекиывание земли лопатой. Это прежде всего работа с файловыми системами на обоих винтах. А про файловые системы контроллер не в курсе. Кроме того как программист могу сказать что копирование это всего лишь чтение/запись файла через выделенный буфер кусками  |
|
| Вернуться к началу |
|
 |
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 Заголовок сообщения: |
|
|
Нда уж наслушаешься тут у вас
Gennady wrote:
| Цитата: | | вот тогда бы процессор действительно мог свободно быть занят другой работой - а так - все шины заняты(остаётся ему лишь проводить внутренние операции с данными в регистрах и кэше). |
Ув. Геннадий - Вы бы просто поглядели презентационную схему любого чипсета и все встало бы на свои места. Контроллер DMA придуман еще в 80х годах и смысл его существования на самом деле заключается в освобождении процессороа от выполнения<b>операций ввода-вывода</b> больших объемов данных при работе с <b>периферийными устройствами</b>. Зря Вы думаете, что в компе все операции осуществляются через шину PCI. Процессор работает с памятью, через специальный контроллер памяти в чипсете, и на совершенно иных скоростях , и, пока контроллер DMA передает данные от вашего винта через его контроллер и PCI шину, процессор преспокойно занимется вычислениями, необходимыми для других задач. Именно поэтому Вы не ощущаете "тормозов" (кроме "дисковых" ), пока идет копирование Более того, AGP является отдельной шиной, с которой процессор все это время может "не стесняясь" общаться Поэтому Вы не ощущаете и "тормозов" при работе с графикой, даже весьма интенсивной - например в играх.
Кроме того, стоит заметить, что винты сегодня не в состоянии пропускать более 70Мб/с, хотя интерфейс (и контроллер и сама стандартная PCI-шина 32bit, 33MHz) позволяет прогонять 133Мб/с. Так что, при этом еще остается некоторый ресурс для общения с PCI-ной периферией.
Про шину PCI можно почитать в статье по ниже приведенной ссылке:
http://www.computer-museum.ru/technlgy/pci.htm
Что касается того, чтобы все устройства сами между собой общались и все друг о друге знали - сами понимаете - нельзя же все доводить до абсурда Зачем же тогда Вы будете нужны в этой схеме? Ведь именно Вы сами, как пользователь (ну или Ваш "посредник" - программист) должны решать что, куда и зачем передавать между устройствами хранения данных. А задача копирования - мелкая частная проблема, волнующая по большей части нас - любителей всякого вареза А главная задача любого компьютера - получить от нас данные, произвести вычисления, и выдать нам результат. С учетом, прежде всего, этого важнейшего фактора и разрабатывается архитектура любой вычислительной системы. Согласитесь, "отдельные устройства" в таком деле нам помоч не в состоянии  |
|
| Вернуться к началу |
|
 |
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
Честно говоря, тонкостями я не заморачивался, поскольку особой необходимости не было.
| Цитата: |
Опять та же ситуация.Контроллер PCI IDE гонит данные от контроллера винта в ОЗУ,затем от ОЗУ в другой контроллер винта.
|
Посредством контроллера DMA.
| Цитата: |
Шина AGP независимо от других шин соединяется посредством чипсета
с системной шиной и шиной памяти.Но шина памяти(64 разряда - для
одноканальной системы) то всё равно одна(как и сама память) и общая для всех абонентов,желающих к ней обратиться.(Если я правильно понимаю).
|
Шина памяти имеет в современных компах пропускную способность 4-8Гб/с, а стандартный PCI может передавать не более 133Мб/с. Я думаю, разница очевидна... - PCI может занять не более 2-3% пропускной способности шины памяти - это просто несерьезно.
| Цитата: |
Работу современной видеокарты я представляю смутно,но думаю
что для её полноценной работы недостаточно лишь общения с процессором и его кэшем(свободные пути обмена для данного примера).Вот и получается ,что этот единственный путь будет
занят UDMA обменом с контроллерами винтов.ОС вынуждена будет
прерывать поочерёдно одну задачу(UDMA обмен),для выполнения
другой(обмен видеокарты с ОЗУ) и затем наоборот.Как тут может не
быть "тормозов" я не понимаю.
|
См. выше. - я не знаю как организуются приоритеты при занятии шины, но 2-3% "при любом раскладе" "погоды не сделают"
Тормоза, если и будут, то лишь при попытке параллельного доступа к дисковой подсистеме (а Windows, как мы все хорошо знаем любит свопить что надо и ненадо... )
| Цитата: |
Пусть в системе 3 равноправные шины PCI.Они соединены между собой мостами типа PCI-to-PCI bridge.
...
но я не пойму - при своём обмене они займут среднюю шину ,или же она свободна...
|
В такие тонкости не влазил, сорри
Наверное можно найти это в спецификациях PCI.
В принципе, сегодня это уже не столь актуально. Скорость PCI уже кажется слишком мала, чтобы "вокруг нее плясать" Да и мосты 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
С Ув.Геннадий |
|
| Вернуться к началу |
|
 |
|
|