Свежий номер №2 (427) / Компьютер это сеть Дата публикации: 23.01.2002 Влад Вул, vul@mail.ru The Network Is The Computer. Anyone can build a fast processor. Все знают, что в 1981 году фирма IBM выпустила на рынок свой персональный компьютер - IBM PC, тем самым положив начало новому витку компьютерной революции. Но мало кто помнит, что в марте того же года появилась еще одна, не менее важная новинка. Фирма 3Сom представила миру первую Ethernet-карту. Этим двум технологиям было суждено изменить мир. Термин «шина» означает, что все разъемы соединены параллельно токопроводящими дорожками материнской платы, по которым подается питание, тактовые синхронизирующие импульсы, сигналы запроса прерываний, наконец, адреса и данные. Поскольку все платы, подключенные к шине, соединены параллельно, они не могут передавать данные одновременно, иначе те, проще говоря, перепутаются между собой. Таким образом, информацию приходится передавать поочередно, по вызову процессора, который тоже включен в шину. А если вдруг что-то случилось (например, пользователь нажал клавишу или из сети пришел пакет), есть возможность сообщить об этом процессору по линиям запроса прерывания, которых по одной на каждую плату расширения. В сети Ethernet нет ни процессора, ни прерываний, но там тоже есть шина. В первой версии Ethernet это был коаксиальный кабель, к которому адаптеры сети подключались специальными отростками через разъем DB-15 (его еще можно увидеть на старых сетевых картах). Поскольку все адаптеры подключены к шине параллельно, в любой момент времени может работать на передачу только один из них. Если же передавать данные одновременно, они перепутаются и будут потеряны. Это явление называется коллизией (столкновением). Никаких особых способов для предотвращения таких ситуаций не существует, и если в сети передается много информации разными машинами, коллизии происходят то и дело. Это здорово снижает эффективность и пропускную способность сети, которая и так невелика из-за того, что передача данных ведется только по очереди. Раздельный способ использования общей шины называется «множественный доступ с контролем несущей и разрешением коллизий», английская аббревиатура CSMA/CD. Он часто применяется в радиосетях. Очевидно, что шинная архитектура крайне неэффективна и медленна, но эти недостатки окупались ее простотой и дешевизной: шина не нуждалась в дорогих микросхемах, в простейшем случае она представляла собой лишь провода. Это достоинство было решающим на заре компьютерной индустрии, когда даже низких скоростей было достаточно для передачи немудреных данных, а цены на компьютерные компоненты здорово кусались. Однако время шло, производство совершенствовалось, микросхемы дешевели, а требования к скорости передачи данных росли. Начались поиски путей увеличения пропускной способности сети. Я свою превышу скорость… Как в шину компьютера IBM PС, так и в сеть Ethernet обычно вставлялись платы разных производителей. Ведь спецификации были открытыми - это было ключевым фактором, обеспечивавшим успех на рынке. Благодаря конкуренции производителей снижались цены и внедрялись инновации. Производителю видеокарты или сетевого адаптера нетрудно выпустить на рынок новую, улучшенную версию своего изделия. Но шину, которая соединяет их вместе, изменить очень трудно - ведь в новую шину старые устройства уже не воткнешь, а новых на рынке не появится, пока шина для них не получит широкого распространения. Замкнутый круг. Но иногда из него есть выход. Так 8-битная шина ISA, которой были оборудованы первые IBM PC, получила дополнительную секцию и стала 16-битной. Это было блестящее решение, позволявшее по-прежнему использовать старые карты. Впоследствии такую же тактику применили для шины VLbus: ее разъем расширял шину ISA-16 уже до 32 бит. Шина VLbus была малоудачной - логически она подключалась к выводам процессора 486 и умерла вместе с ним. Еще хитрее была шина EISA: с виду совсем как ISA, она имела двойное дно, в глубине разъема скрывался дополнительный ряд контактов. Таким образом, чтобы повысить пропускную способность шины, нужно увеличить ее разрядность - то есть число проводов, по которым передается информация. Однако это удорожает микросхемы обвязки, которые должны соответствовать разрядности шины. Другой способ - уменьшение количества устройств в домене коллизий. Меньше народу - больше кислороду. Домен коллизий - это та область сети, та шина, в которой только одно устройство может передавать информацию. Если разделить сеть на несколько подсетей, в каждой из них станет свободнее - конкурирующих за доступ к шине устройств станет меньше. Но эти небольшие куски сети придется объединить специальными устройствами - мостами. Когда-то мосты были двухпортовыми и могли объединять только две сети. Ethernet-мост пропускает информационный пакет из одной сети в другую, основываясь на адресе назначения пакета. В архитектуре PC AT на процессоре i286 тоже появились две сети, соединенные мостом: шина ISA, работающая на низкой частоте, и высокоскоростная системная шина, на которой присутствовали всего два устройства - процессор и память. Помимо увеличения скорости, фрагментация позволяет с меньшими проблемами совершенствовать архитектуру. Изменения могут быть локализованы и не будут влиять на те части компьютера, которые находятся «за мостом». Надо лишь позаботиться о том, чтобы мост производил необходимое согласование. Так, 386-й компьютер имел ту же самую шину ISA, что и 286-й, и все платы расширения (звук, видео, диски и т. п.) прекрасно работали и с тем и с другим. Но вот системная шина в 386-м стала революционной! Она была 32-разрядной и по адресам, и по данным и к тому же имела фантастическую частоту 40 МГц. Процессор i386 работал на частоте системной шины, а вот следующий, i486, вызвал новый виток сепаратизма: появилось умножение частоты процессора. Теперь шина компонентов ISA работала на той скорости, к которой привыкла, системная шина - на высокой частоте (33 МГц), а процессор (то есть его внутренняя шина) - на еще более высокой, в несколько раз превышающей частоту системной шины (например, i486DX3/100 МГц). Это третий способ повышения пропускной способности шины - увеличение ее тактовой частоты. Наличие активных (полупроводниковых) и реактивных (паразитных емкостей) компонентов определяет предельную частоту для данной конфигурации проводников. Если частота превышена, переходные процессы при переключениях транзисторов не успевают завершиться за один такт, и это вызывает сбой, 1 и 0 перестают четко различаться по уровню. Кроме того, есть чисто теоретический предел повышения частоты шины, связанный с ее физическими размерами. Например, если шина PCI работает на частоте 66 Мгц, то за один такт электромагнитный импульс пройдет 3*108/66*106 = 4,5 м. А если процессор работает на частоте 2 ГГц, длина его тактовой волны всего 15 см! Столько проходит луч света в вакууме за один такт. Неудивительно, что повышение частоты дается с таким трудом. То же ограничение есть и в Ethernet-сетях. Даже при наличии усилителей и повторителей домен коллизий не должен превышать 2,5 км, а для 100 Мбит/с Fast Ethernet - всего 210 м. Иначе не удастся вовремя распознать коллизию, и сетевые карты не смогут согласовать очередность передачи. Поэтому чем быстрее шина, тем меньше должен быть ее размер. Это диктует необходимость сегментации и фрагментации локальных сетей и компьютерных шин. Подобно крупной локальной сети, которая состоит из множества сегментов, работающих зачастую на разной скорости, современный компьютер обзавелся целым зоопарком разноскоростных и разновозрастных шин. В такой архитектуре огромную важность приобретают мосты между ними. Современные чипсеты имеют два центра межсоединения шин, их по традиции называют северным и южным мостами. Северный мост, более быстрый, соединяет процессор с оперативной и кэш-памятью, а южный мост отвечает за шины расширения PCI и ISA и интегрированные в материнскую плату устройства - контроллеры дисков, разного рода внешние порты и пр. Однако называть эти центры соединения мостами не совсем правильно. Ведь мост соединяет две части дороги, а мосты современных компьютеров представляют собой настоящие многоуровневые развязки, соединяющие несколько пересекающихся магистралей. К тому же повышение пропускной способности шины путем увеличения тактовой частоты в конце концов приводит к такому уменьшению размеров шины, что вся она прячется в одну микросхему. Эта тенденция получила название стягивание (коллапс) магистрали, и шина, полностью упрятанная в микросхему моста, называется collapsed backbone. В результате линия превращается в точку, шина перестает быть шиной, а мост перестает быть мостом. Эта эволюция, опять-таки, происходит как внутри компьютера, так и вне его. Если первые версии сети Ethernet были основаны на общей шине весьма наглядно - единый коаксиальный кабель змеился по всем помещениям офиса, проходя через подключенные к сети компьютеры, то с заменой коаксиала витой парой топология сети изменилась на звездную. Кабели от каждого компьютера стеклись в одну точку, к хабу. Однако это лишь видимость. Изменения в топологии произошли на физическом и электрическом уровнях, но на логическом все осталось по-прежнему: сигнал, исходящий от любой сетевой карты, наводняет всю сеть, и только один участник может передавать в каждый момент времени. Шина стала похожа на осьминога, но осталась шиной. Так продолжалось до тех пор, пока фирма Kalpana не выпустила на рынок первый Ethernet-коммутатор. Удачи на дорогах Коммутатор - это многопортовый мост, разбивающий сеть на сегменты по числу портов. Он передает входящий сетевой пакет только в тот порт, к которому подключен адресат пакета. Достигается это следующим образом. В любом входящем пакете коммутатор смотрит на исходящий адрес и строит таблицу соответствия: компьютеры с такими-то адресами подключены к такому-то порту. Здесь речь идет о 6-байтных Ethernet-адресах, они же MAC-адреса. Обычно их записывают примерно так: F6:32:0A:С2:95:4D. Если к порту коммутатора подключен всего один компьютер, то коллизии становятся невозможны, ведь в кабеле на витой паре для передачи и приема пакетов используются разные пары проводов. Это позволяет переключить сетевую карту и порт коммутатора в полнодуплексный режим, и достигнуть одновременной передачи 100 Мбит/с в одном и в другом направлении, то есть всего 200 Мбит/с. Обычно так подключают серверы, к которым идет основной поток обращений. Кроме того, производители сетевого оборудования разработали технологию транкового (многоствольного) подключения. Если вставить в сервер две сетевые карты и соединить их двумя кабелями с двумя портами коммутатора, причем переключить их в полнодуплексный режим, мы получим скорость 400 Мбит/с. Так же можно объединить два коммутатора. Таким образом, на направлениях, требующих бескомпромиссно высокой производительности, выделяется сверхскоростной сегмент, напоминающий системную шину компьютера с частотой 133 МГц. В то же время те сегменты локальной сети, которые не требуют высокой скорости подключения, могут включаться в коммутатор через хаб на скорости 10 Мбит/с, а к хабу может быть подключена совсем уж древняя коаксиальная сеть. Это напоминает южный мост компьютерных чипсетов, который обслуживает низкоскоростные компоненты и всякое старье вроде флоппи-контроллера. Еще один пример дробления шин - AGP. Он напоминает шину VLbus, которая использовалась для ускорения графики в 486-х компьютерах. Но если VLbus включался прямо в системную шину вместе с памятью и процессором, то AGP является особой магистралью, работающей на своей частоте - 66 МГц. В северный мост современных чипсетов обычно включены процессор, память, AGP-видео и южный мост, то есть всего четыре магистрали. Это уже делает его не мостом, а развязкой, и было бы лучше назвать его коммутатором, однако в новых чипсетах от Intel мосты почему-то называются хабами. Начиная с i810, корпорация Intel продвигает так называемую Accelerated Hub Architecture. На самом деле это окончательный переход от хабов к коммутаторам. Ни один высокоскоростной компонент компьютера больше не конкурирует с другим за доступ к общей шине. Все они подключены к центральному коммутатору выделенными магистралями. Значит ли это, что шина как таковая исчезла из сердца компьютера? Нет, шина исчезнуть не может принципиально. Шина - это просто «места общего пользования» для информации. Как нет квартиры без коридора, дома без подъезда, города без перекрестков, так нет и обмена информацией без шины. Ведь и на дорогах развязка «лист клевера» не уничтожает толкотню перекрестка - она лишь размазывает перекресток на четыре разгонные полосы, где в час пик машинам приходится стоять «в буфере», ожидая просвета, чтобы влиться в движение в нужном направлении. Кстати, информационные перекрестки имеют преимущество над автомобильными. Машины пересекают перекресток, обычно снижая скорость. А компьютерные перекрестки - шины - могут иметь скорость выше, чем подводящие к ним магистрали, и тогда никаких задержек не возникнет. В технологии коммутации, будь она на материнской плате или в локальной сети, шина не исчезает, она стягивается, дробится, увеличивается ее частоту и/или разрядность. Обычно коммутаторы устроены подобно матрице, как дорожная сеть Нью-Йорка: «на север с юга идут авеню, на запад с востока - стриты». Если вы въехали в город по авеню, то обязательно попадете на пересечение с нужной вам стрит. Если все перекрестки снабдить развязками или проезжать их с втрое большей скоростью, вы без всякой задержки попадете с любого въезда в город (будем считать ими авеню) на любой выезд - стрит. Матрица квадратная, по числу портов коммутатора, так как каждый порт имеет и въезд и выезд. В компьютерных коммутаторах портов не много, а требования к скорости высокие. В сетевых же коммутаторах Ethernet количество портов велико (минимум 8), и в реальности часто шины не дробят так мелко (их было бы слишком много - 64! А это дорого), а используют, например, иерархию шин, так что пакетам приходится преодолеть несколько перекрестков, прежде чем попасть на нужный выход. Самое главное - не устраивать один большой перекресток-шину, где пересекаются все улицы города, ибо там не избежать пробок и столкновений (коллизий). Так была построена деревня под названием IBM PC XT с ее сонной 8-битной Main Street, но современные компьютерные мегаполисы с их сумасшедшим трафиком должны иметь четко продуманную архитектуру магистралей. Проблема из проблем - соединение нескольких процессоров. Все они поглощают и изрыгают информацию с огромной скоростью (иначе какой в них смысл?), но как же трудно столь же быстро передать ее по назначению! Самое узкое место в этом случае - доступ к памяти, так как всем процессорам она постоянно нужна, а пользоваться ею может только один. Одним из решений становится разделение памяти на несколько банков и подключение каждого из них к коммутатору чипсета по отдельной магистрали. Особенно тут полезен RAMBUS, разрядность его шины может быть увеличена путем добавления каналов (это напоминает многоствольное подключение Ethernet, которое я описывал выше). Однако портов существующих высокоскоростных микросхем не хватает, чтобы подключить все процессоры напрямую, поэтому их группируют в шины по четыре. Так устроена мультипроцессорная архитектура Profusion. Хотя процессоры Xeon имеют огромные кэши, что позволяет им долго не толкаться в общем коридоре коммунальной шины, само по себе это становится проблемой. Набрав в кэш пачку данных из оперативной памяти и уединившись в своем гнезде, чтобы их обработать, процессор, конечно, не замечает, что его собрат с другой шины изменил эти же данные в оперативной памяти, и, таким образом, содержимое кэша превратилось в тухлятину. Проблема когерентности кэша - настоящее проклятье многопроцессорных архитектур, поэтому такой интерес вызывает разработка двух процессоров на одном кристалле, с общим кэшем первого уровня. SCSI В заключение расскажу еще об одних сетях внутри компьютера, которые, впрочем, частенько вывешиваются за его пределы. Это шины для подключения периферии. Долгожитель среди них - SCSI. Она особенно похожа на «большую» сеть тем, что каждое из восьми устройств, которые к ней можно подключить, должно иметь свой уникальный адрес. А еще свободные концы шины должны быть заглушены терминаторами, как когда-то Ethernet. Большинство SCSI-адаптеров имеют разъемы для подключения шины как внутри компьютера, так и снаружи. Обычно внутри компьютера по SCSI-шине подключаются дисководы (включая CD-ROM), а снаружи - сканер. Но не только. В те времена, когда не существовало дешевой и стандартной локальной сети со скоростью передачи выше 16 Мбит/с, SCSI-шину иногда использовали для соединения двух компьютеров, обеспечивая скорость до 80 Мбайт/с за медные деньги. SCSI-шина может иметь длину до шести метров. Чем не локальная сеть! А некоторые фирмы предлагают преобразователи, позволяющие пробросить SCSI-протокол по оптике на расстояние до километра. Были также попытки построить Linux-кластеры, соединенные по SCSI-шине, однако гигабитный Ethernet вытеснил такие экзотические решения. Теперь сама SCSI может быть вытеснена новой шиной USB, особенно ее второй, скоростной версией. SCSI-сканеров больше не делают - все перешли на USB. Если разъемы USB окажутся не только снаружи, но и внутри компьютера, они смогут взять на себя подключение и других компонентов, в том числе, например, дисковод CD-ROM. USB - это локальная сеть на столе, протянувшаяся из недр вашей машины. Граница корпуса условна: внутри компьютера скрывается та же сеть передачи данных, что и снаружи. С такими же проблемами и часто с такими же решениями. И производительность вашего компьютера зависит от производительности этой внутренней сети не меньше, чем от скорости процессора, дисков и других компонентов. Помните, что сказал Сеймур Крэй, творец суперкомпьютеров (см. эпиграф). Покупая компьютер, обращайте внимание не только на гигагерцы процессора или объем памяти и дисков, но и на то, что их соединяет. [i42746]
|