<<<предыдущий список следующий>>>

Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer.


14 Января 1999

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

Если говорить о целях разработки NGIO, то трудно не заметить, что надежность результирующей системы стоит если не на первом месте в одиночку, то, по крайней мере, делит его с кем-либо еще - с эффективностью, к примеру.

Уже сама канальная структура, как я писал, принципиально более надежна, чем шинная (а тот, кто когда либо искал неисправность в тонком коаксиале etherne-а не нуждается в доказательстве этой теоремы:-), но этим дело не кончается.

NGIO, как и любая современная система передачи информации, обладает избыточностью. То есть в канале передаются не только данные, но и контрольная информация, предназначенная для проверки безошибочности доставки. Какая? Да очень простая. CRC. :-) Причем одна операция передачи данных может быть разбита на множество канальных пакетов, и подсчет контрольной суммы будет проводиться как для каждого пакета, так и для всей последовательности в целом.

Как и в иных системах последовательной передачи данных для того, чтобы избежать потерь скорости из-за большого времени прохождения данных по каналу и ограничений на длину канала по этой причине используется традиционный "оконный" метод обмена. В пределах "окна" в 127 пакетов данные могут отправляться от передатчика к приемнику без ожиданий подтверждений, и только после отправки 127-го пакета придется ждать подтверждения на первый. В нормальной ситуации оно должно появиться много раньше.

Соответственно, раз есть CRC, есть и повторы, подтверждения, перезапросы - все как у взрослых. Кстати, я забыл сказать, кажется - NGIO являет собой последовательный, а не параллельный, как те же PCI и ISA канал данных!

С точки зрения адресации NGIO тоже никак не похожа на современные шины. Нет у нее непрерывного массива адресов портов или ячеек памяти, в котором подключаемые устройства занимают те или иные фрагменты. Соответственно, невозможны и конфликты и отсутствует само понятие выделения картам адресов и прерываний. Адреса у них появляются по факту втыкания их в компьютер - адреса слотов, разъемов - через что там они подключены. Такая адресация носит название географической - адрес определяется положением элемента в системе. A la TCP/IP в адрес входит не только указание на устройства, которому отправлено сообщение, но и номер "порта" в нем - в терминах NGIO это называется Work Queue - некоторая рабочая очередь, ассоциированная с определенной деятельностью. Например, в устройстве могут быть раздельные очереди для команд и для данных, или для данных разной приоритетности - это уж как разработчик пожелает.

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

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

Отправка пакета - механизм, предназначенный для управления внешними устройствами и для передачи данных процессор-устройство и наоборот. Как правило, небольших объемов оных данных. Для обменов устройство-память служит RDMA - операция, при которой устройство заказывает запись данных в память через NGIO или чтение из памяти. Как правило, это происходит так - процессор посылает пакет, в котором указывается, что внешнее устройство должно произвести обмен с памятью. Внешнее устройство инициирует цикл обмена с памятью через RDMA и по окончании сообщает процессору, посылая пакет, что все сделано.

Существенно, что RDMA, выполняясь посредством все того же обмена пакетами, не "захватывает" подсистему ввода-вывода, как это происходит в шинах, а мирно сосуществует с иным трафиком в системе ввода-вывода - предположим, если мы читаем из памяти, то память просто посылает нам пакеты, которые мультиплексируются с другими пакетами в системе ввода-вывода если свитч способен только на одно соединение или же идут по отдельной дорожке, если свитчей в системе несколько, и есть подходящий свободный.

Обратите внимание - при такой схеме производительность подсистемы ввода-вывода можно удвоить, утроить и т.д. просто добавляя дополнительные свитчи в систему. Правда есть еще предел производительности памяти, но тут тоже возможны разные подходы. Традиционное банкирование памяти с перекрытием во времени обращений к разным банкам дает вполне существенный прирост, к примеру.

Возвращаясь к RDMA отмечу еще и вот что - в NGIO возможно достичь принципиально более высокого уровня защищенности системы. Если в сегодняшней машине механизмы защиты памяти защищают ее только от процессора и исполняющихся на нем программ, то в NGIO ничто не мешает защититься и от внешнего устройства, вставив механизмы анализа прав доступа в канал RDMA. Тем более, что устройство, работая по RDMA передает в запросе RDMA не адрес, а ключ плюс смещение. Ключ идентифицирует зону памяти, с которой будет идти работа и может, по идее, быть не адресом а индексом в таблицу обменов, заявленных драйвером. В таком случае возможно будет проверить - а просил ли драйвер это устройство лазить в эту память, и если просил, то на запись или на чтение. И если не просил - отказать.

Это не так уж не серьезно и параноидально, как может показаться. Во-первых, такая схема дает создателям драйверов лишнюю ловушку для ошибок, причем ошибок крайне мерзких. Нет ничего неприятнее ошибки при указании адреса обмена по DMA или в режиме bus master, поскольку она не ловится - ну испортит устройство тебе кусок памяти, пойди это заметь. В NGIO же не сможешь не заметить - подсистема ввода-вывода внятно сообщит о проблеме.

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

На этой радостной ноте сегодняшний разговор про NGIO позвольте закончить. Сегодня нет кока-колы, так что придется как-то самому прерваться. :-)

BBC News сообщает, что найдет способ съема потенциалов с головного мозга, не требующий операционного вмешательства. Пара электродов, накладываемых на голову позволяет пациентам после некоторой тренировки формировать "силой мысли" две команды компьютеру, характеризующиеся соответственно положительным или отрицательным потенциалом в измеряемом участке. Этого достаточно для управления курсором и выбора букв из алфавита методом деления пополам. Метод неспешный (до получаса на фразу), но при отсутствии альтернатив и он вполне приемлем.

Размышления об аналоговой музыке.

   
From: Ilya R. Kreer
Subject: Письмо, типа.

Помнится, была на ДЗ такая статья - сравнительный анализ КД и аудиокассет не в пользу компактов. Ну так вот. Дело помимо чисто физики заключается в самой музыке. Акустическая (или т.н. живая) музыка действительно предпочитает аналоговый носитель - кассету или винил. Но лично я по жизни слушаю музыку так скажем электронного происхождения. Которая изначально создается на компьютерах и сэмплерах в той же самой цифре, а не цифруется потом. Поэтому слушать ее на аналоговом носителе просто глупо и неправильно - цифра от того что ее прогнали через ЦАП лучше не станет. Посему при выборе носителя в пользу винила или кассет сначала надо обязательно задуматься - так ли часто вы слушаете пианино?

 

Сначала - ответ на вопрос. :-) Да. Часто. Это я о себе, конечно.

robot_piano_player_sm.jpg (32666 bytes)

Фото из Intel-овской книги One Digital Day

В принципе утверждение, конечно, справедливо - действительно нет никакого резона использовать аналоговый носитель, если музыка - цифровая от рождения.

Правда, я бы не стал смешивать живую и акустическую музыку. Живой я называю ту, что играется человеком - не важно, на драм-синтезаторе, на клавишах или при помощи гитарного процессора. Акустической, строго говоря, ни одна из них не является. И наоборот - то, что изображено на фотографии вполне могло бы быть музыкой акустической - достаточно подставить вместо электронных клавиш пианино. Но у кого поднимется рука назвать ее живой! :-)

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

У всего этого есть одно, но большое "но". Есть разница между обработкой или синтезом, выполняемым в 24-х битах и с 96-килогерцовой дискретизацией и CD-шными 16-ю битами м 44.1 КГц. Таким образом вполне возможна ситуация, когда даже рожденная в цифре музыка в аналоговой записи прозвучит лучше.

Еще один веселый пример - АББА при записи одной своей песни загнала гитариста с гитарой и комбиком в бассейн, из которого спустили воду. Звук оказался столь эксклюзивен, что ни один ревер не смог воссоздать. :-) Надо ли говорить, что после прогона через бассейн :-) звук становится аналоговым, даже если гитару заменить саундбластером.

И последний, опять субъективный комментарий. Я считаю использование в музыке, к примеру, семплерных (неживых) ударных инструментов откровенным плевком в сторону слушателя.   Исключение составляют случаи "бедного гения" - это когда идеи у человека великолепны, а денег на осуществление их с живыми ударными нет. Это я к тому, что лично для меня музыка, которая создана полностью в цифре с 99%-ной вероятностью не представляет ни малейшего интереса.

Впрочем, это имеет не слишком большое отношение к вопросу. А насчет цифры - от нее, конечно, на практике никуда уж не деться. Просто хотелось бы, чтобы переход на что-нибудь класса DVD Audio поскорее произошел. Пора бы.

PS: Вчера возвращаясь из роддома от жены поймал машину, в которой звучала не Апина, не эйс оф бейс, не рейв, не русское радио и даже не Смоки. В компактнице торчал диск Маккартни. И хороший. И мужик вообще сёк в музыке. За последний год, кажется, это единственный случай. :-(

Кстати, забыл сказать, что вокруг NGIO и Intel-а разворачивается некоторая драчка - многие производители не хотят заморачиваться принципиально новой системой ввода-вывода, а хотят, напротив, доработать PCI, чтобы тянула получше. И на эту доработку есть несколько различных взглядов. Intel, надо сказать, довольно вяло реагирует на идею подпилить PCI напильником - то есть не очень и против, но и энтузиазмом не пышет. Оно, в принципе, понятно - сколько PCI не корми, у NGIO все равно канал толще. Но и другую сторону можно понять. PCI - вот он, есть, а NGIO только в разработке. В конце концов они сделают и то, и то, я так полагаю. :-) Тем паче, что наличие в системе NGIO не отменяет PCI - как наличие PCI не отменило ISA, а лишь дополнило ее. Кстати, наверное, пора делать ставки - когда перестанут производится карты и материнские платы с ISA - через год, или через два?