Э. Таненбаум - Архитектура компьютера (1127755), страница 158
Текст из файла (страница 158)
Программным обеспечением ТСР в начало сообшения добавляется заголовок, содержащий порядковый номер и другую информацию. Этот дополнительный заголовок называется ТСР-заголовком. Сделав свою часть работы, программное обеспечение ТСР передает ТСР-заголовок вместе с полезной нагрузкой (содержащей запрос 6ЕТ РА6Е) еше одной 622 Глава В. Параллельные компьютерные архитектуры С и с Е1лвгпв1- 1Р- ТСР- заголовок заголовок заголовок Полезная нагрузка Рио. 8.12.
Вид Ешегпе1-пвкетв Основные сведения о сетевых процессорах К сети подключаются самые разные устройства. Для конечных пользователей это, прежде всего, персональные компьютеры (настольные и ноутбуки), но растет также число игровых консолей, персональных электронных секретарей (карманных компьютеров), сотовых телефонов. Для компаний роль оконечных систем играют серверы и персональные компьютеры. Помимо этого, в сетях функционирует бесчисленное количество разнообразных промежуточных устройств, в их число входят маршрутизаторы, коммутаторы, брандмауэры, прокси-серверы, системы балансировки нагрузки. Достаточно любопытно, что к этим промежуточным системам предъявляются самые серьезные требования — именно они должны обеспечивать передачу максимального числа пакетов в секунду. Кроме того, серьезные требования излагаются на серверы, что касается пользовательских компьютеров, то к ним особых требований нет.
В зависимости от сети и самого пакета, поступающий в сеть пакет перед отправкой по исходящей линии или передачей прикладной программе может требовать той или иной обработки. Обработка может включать принятие решения о том, куда передавать пакет, разбиение пакета на части или сборку его из частей, программе, реализующей протокол 1Р (1пгегпет Ргогосо! — межсетевой протокол). Эта программа добавляет в начало пакета 1Р-заголовок с информацией об адресах отправителя (то есть машины, передающей пакет) и получателя (машины, ожидающей пакет), максимальном числе хопов, двигаясь вдоль которых пакет будет существовать (чтобы «потерявшнеся» пакеты не жили вечно, заполоняя собой весь Интернет), контрольной суммой (для обнаружения ошибок памяти и ошибок передачи) и рядом других полей. Далее пакет (включающий в себя 1р-заголовок, ТСР-заголовок и сам запрос 6ЕТ РА6Е) передается «вниз» на уровень канала передачи данных, который добавляет к пакету свой заголовок и передает пакет по линии связи.
Этот уровень также дописывает в конец контрольную сумму, называемую СКС (Сус1гс Кедппдапсу СЬесй — циклический контроль избыточности) и позволяющую выявлять ошибки передачи. Может показаться, что две контрольные суммы, на уровне 1Р и на уровне канала данных — это больше, чем необходимо, но такой подход повышает надежность. На каждом хопе проверяется СКС-код пакета, после чего заголовок вместе с СКС-кодом генерируются заново, в соответствии с требованиями исходящего канала передачи данных. На рис. 8.12 показано, что представляет собой пакет в ЕТЬегпеп Случай телефонной линии отличается только тем, что вместо ЕТЬетпег-заголовка имеется заголовок коммутируемой линии.
Обработка заголовков — одна из важных задач, которую призваны решать сетевые процессоры. Конечно, излишне упоминать о том, что мы лишь вскользь коснулись темы вычислительных сетей. За более детальными сведениями обращайтесь к 12021. Сопроцессоры 623 управление качеством обслуживания (особенно в отношении аудио- и видеопотоков), защиту данных (кодирование и декодирование), компрессию и декомпрессию, и т. п. Когда скорость передачи данных в локальной сети приближается к 40 Гбит/с, а размер пакета — к 1 Кбайт, сетевой компьютер должен обрабатывать почти 5 млн, пакетов в секунду. Для пакетов размером 64 байт это значение возрастает примерно до 80 млн.
пакетов в секунду. Выполнение всех упомянутых функций за время порядка 12 — 200 нс, в дополнение к неизменно необходимому копированию пакетов, просто невозможно реализовать программно. Аппаратная поддержка здесь принципиально необходима. Одним из путей аппаратного решения проблемы быстрой обработки пакетов является использование специализированных интегральных схем (Арр11са11опЯрес(йс 1псейгагед С(гсц(ц АВ1С). Такая микросхема подобна аппаратно реализованной программе, которая может выполнять любое из заранее предусмотренных действий. Основой многих современных маршрутизаторов являются схемы АБ1С.
Впрочем, и со специализированными интегральными схемами связаны некоторые проблемы. Прежде всего, их долго проектировать и не менее долго производить. Кроме того, это жестко запрограммированные устройства, то есть чтобы внести новую функциональность, приходится разрабатывать и изготавливать новую микросхему.
Хуже того, настоящим кошмаром являются ошибки, так как единственным способом их исправления является разработка, изготовление и установка новой (исправленной) микросхемы. Наконец, этот подход является весьма затратным, если только большой объем производства не позволяет компенсировать расходы на разработку. Второй подход основан на использовании программируемых вентильных матриц (Р(е16 РгоягашшаЫе Саге Аггау, РРСА). Такая матрица представляет собой набор вентилей, из которых путем перекоммутации строится требуемая схема. Сроки выхода программируемых вентильных матриц на рынок гораздо короче, чем у специализированных интегральных схем, к тому же их можно перепрограммировать в «полевых условиях» при помощи специального программатора.
Но в то же время они очень сложные, дорогие и более медленные, чем схемы А81С, поэтому программируемые вентильные матрицы не получили широкого распространения, исключая некоторые узкоспециальные области. Наконец, перейдем к сетевым процессорам — устройствам, способным обрабатывать входящие и исходящие пакеты со скоростью их передачи, то есть в реальном времени. Обычно они реализуются в виде съемной платы, содержащей, помимо кристалла сетевого процессора, память и вспомогательную логику. К плате подключается одна или несколько сетевых линий.
Процессор получает из линии пакеты, обрабатывает их, после чего передает по другой линии, если это маршрутизатор, или отправляет в главную системную шину (то есть в шину РС1), если это оконечное устройство, которым может быть, например, персональный компьютер. Типичный сетевой процессор и его плата показаны на рис. 8.13. Обычно на плате имеется как статическая (ВАМ), так и синхронная динамическая оперативная память (ЯЖАМ) — эти виды памяти применяются для разных целей. ВКАМ быстрее ЯЖАМ, но из-за дороговизны памяти этого типа 624 Глава 8.
Параллельные компьютерные архитектуры обычно немного. Она используется для хранения таблиц маршрутизации и прочих ключевых структур данных, в то время как в ЯРКАМ записываются сами обрабатываемые пакеты. Благодаря тому, что память обоих этих типов располагается вне кристалла сетевого процессора, можно гибко подойти к вопросу о выборе объема памяти. Так, в простых системах с единственной сетевой линией (такие платы могут ставиться, например, в персональный компьютер или сервер) памяти может быть немного, в то время как маршрутизатору ее требуется намного больше.
азъем РС! Рис. В.13. Кристалл и плата типичного сетевого процессора Сетевые процессоры оптимизированы для быстрой обработки большого количества входящих и исходящих пакетов. Это означает, что по каждой из сетевых линий проходят миллионы пакетов в секунду, а маршрутизатор должен поддерживать десятки таких линий. Столь серьезных показателей можно достигнуть только на процессорах с высокой степенью внутреннего параллелизма. Кроме того, в процессор обязательно входят несколько РРЕ-контроллеров (Ргогосо1/ РгойгашшаЫе/Раскет Ргосезз1п8 Еп81пе — программируемая система обработки пакетов и протоколов), каждая из которых состоит из Е1ЯС-ядра (возможно, модифицированного) и внутренней памяти небольшого объема для хранения программы и нескольких переменных.
Есть два подхода к организации РРЕ-контроллеров. В простейшем случае все РРЕ-контроллеры делаются идентичными. Когда в сетевой процессор приходит новый пакет, он передается для обработки тому РРЕ-контроллеру, который в данный момент бездействует. Если свободных РРЕ-контроллеров нет, пакет ставится в очередь в расположенной на плате памяти Я1ЖАМ, ожидая освобождения одного из РРЕ-контроллеров. При такой организации горизонтальные связи, показанные на рис. 8.13, отсутствуют, так как у разных РРЕ-контроллеров нет необходимости общаться друг с другом.
Сопроцессоры 625 Другой подход к организации РРЕ-контроллеров — конвейер, где каждый из РРЕ-контроллеров выполняет один этап обработки, после чего передает указатель на полученный пакет следующему РРЕ-контроллеру в конвейере. Такой конвейер работает во многом аналогично конвейерам ЦП, которые рассматривались в главе 2. В обоих вариантах организации РРЕ-контроллеры являются полностью программируемыми. В более совершенных сетевых процессорах РРЕ-контроллеры поддерживают многопоточность, то есть каждый из них имеет несколько наборов регистров и аппаратный регистр, показывающий, какой из наборов используется.