Э. Таненбаум - Архитектура компьютера (1127755), страница 159
Текст из файла (страница 159)
Это позволяет одновременно выполнять несколько программ (то есть программных потоков) и переключаться между ними, просто изменяя переменную ктекущего рабочего набора регистровь. Когда один из программных потоков вынужден ждать (например, при обращении к ЯЖАМ, на которое требуется несколько циклов), РРЕ-контроллер может быть мгновенно переключен на поток, способный продолжать работу. Это позволяет добиваться высокой загрузки РРЕ-контроллеров, даже несмотря на необходимость часто ожидать завершения обмена данными с Я)ВАМ или других медленных внешних операций. Помимо РРЕ-контроллеров, у всех сетевых процессоров имеется управляющий процессор для выполнения всех действий, не относящихся напрямую к обработке пакетов (например, обновление таблиц маршрутизации). Обычно он представляет собой ИБС-процессор общего назначения, память для данных и команд которого находится на одном кристалле с процессором.
Более того, в сетевом процессоре может быть несколько специализированных процессоров, предназначенных для выполнения критически важных операций. Они представляют собой очень маленькие специализированные интегральные схемы (АЯС), способные выполнять только одно несложное действие, такое как поиск целевого адреса в таблице маршрутизации.
Все компоненты сетевого процессора взаимодействуют друг с другом на мультигигабитных скоростях по одной или нескольким расположенным на кристалле параллельным шинам. Обработка пакетов Независимо от того, имеет сетевой процессор конвейерную или параллельную организацию, каждый прибывший пакет проходит несколько этапов обработки. У некоторых процессоров эти этапы разделяются на входную (1пягезз ргосезяпя) и выходную обработку (еягезз ргосезяпя).
К первой группе относятся операции с пакетами, пришедшими извне (через сетевую линию или системную шину), а ко второй — с пакетами перед их отправкой. Таким образом, каждый пакет подвергается сначала входной обработке, а затем выходной.
Это разделение достаточно условно, так как некоторые операции можно производить на любом из этапов (например, сбор сведений о трафике). Мы рассмотрим эти этапы в том порядке, в котором они могли бы выполняться, но имейте в виду, что выполнять их нужно не для всех пакетов, кроме того, возможна другая последовательность действий. Е Проверка контрольной суммы. Если входящий пакет прибывает из сети ЕгЬегпец его контрольная сумма (СКС-код) пересчитывается и сравнивается со значением, имеющемся в пакете, чтобы убедиться, что пакет принят без ошибок. 626 Глава 8. Параллельные компьютерные архитектуры 6 7 8 Если оба значения оказываются равными или поле СКС в ЕгЬегпег-пакете отсутствует, вычисляется контрольная сумма 1Р-пакета и сравнивается со значением в пакете.
Это позволяет убедиться, что 1Р-пакет не был поврежден по вине сбойного бита в памяти отправителя после того, как отправителем была посчитана контрольная сумма для 1Р-пакета. Если все проверки пройдены, пакет передается для дальнейшей обработки, в противном случае он просто отбрасывается. Извлечение значений палей. Путем анализа определяется положение нужного заголовка, и из пакета извлекаются значения соответствующих этому заголовку ключевых полей. В ЕгЬегпег-коммутаторе исследуется только ЕгЬегпегзаголовок, в 1Р-маршрутизаторе — только 1Р-заголовок. Значения ключевых полей сохраняются либо в регистрах (при параллельной организации РРЕ- контроллеров), либо в ЯКАМ (при конвейерной организации).
Классификация накетов. Пакеты классифицируются в соответствии с рядом программных правил. В простейшем случае пакеты данных отделяются от управляющих пакетов, но обычно разделение гораздо более тонкое. Выбор пути. У большинства сетевых процессоров имеется особый быстрый путь, оптимизированный для передачи всего многообразия пакетов данных, в то время как остальные пакеты обрабатываются по-своему, обычно управляющим процессором. Соответственно, должен быть выбран либо быстрый путь, либо один из медленных путей. Определение целевой сети.
В 1Р-пакетах содержится 32-разрядный адрес получателя. Однако невозможно (и нежелательно) использовать для поиска по- лучателя каждого пакета целую таблицу из 2зз записей. Поэтому левая часть адреса обычно содержит адрес сети, а правая указывает на отдельную машину в этой сети. Длина адреса сети не фиксирована, поэтому его определение— задача нетривиальная, причем ее еще больше усложняет тот факт, что допустимы несколько вариюзтов, из которых правильным считается самый длинный. На этом шаге часто применяется специализированная интегральная схема.
Поиск маршрута. После определения адреса целевой сети по таблице, хранящейся в памяти ЯКАМ, выясняется, по какой из исходящих линий отправить пакет. Опять же, на этом шаге может применяться специализированная интегральная схема. Разбивка и сборка. Приложения часто максимально увеличивают полезную нагрузку (данные) ТСР-пакетов, стараясь сократить количество системных вызовов, но и у ТСР, и у 1Р, и у ЕгЬегпег есть ограничения на максимальный размер пакета.
Как следствие этих ограничений, может потребоваться разбивать пакеты (и, соответственно, полезную нагрузку) на части перед отправкой и собирать их снова на приемной стороне. Эти функции может выполнять сетевой процессор. Вычисления. Иногда требуется производить над данными те или иные сложные вычисления, например, выполнять компрессию и декомпрессию, кодирование и декодирование. Эти действия можно переложить на сетевой процессор. Сопроцессоры 627 9. Управление заголовками. Иногда приходится добавлять или удалять заголовки, а также менять значения тех или иных полей.
Например, в 1Р-заголовке есть счетчик числа хопов, которые пакет еще может пройти перед самоуничтожением. После прохождения каждого хопа значение счетчика необходимо уменьшать на 1, и эту функцию вполне может выполнять сетевой процессор. 10. Управление очередями. Входящим и исходящим пакетам часто приходится становиться в очередь в ожидании обработки.
Но для мультимедийных приложений во избежание джиттера необходимо, чтобы задержки между пакетами не превышали определенного значения. Кроме того, брандмауэру или маршрутизатору может потребоваться перераспределять входную нагрузку между несколькими выходными линиями по определенным правилам. Все эти задачи могут решаться сетевым процессором. 11. Генерирование контрольных сумм.
В исходящих пакетах должны быть контрольные суммы. Контрольная сумма 1Р-пакетов может вычисляться сетевым процессором, в то время как контрольная сумма Е111егпег-пакетов в общем случае генерируется аппаратно. 12. Учет. В некоторых случаях необходимо подсчитывать трафик при прохождении пакетов, особенно если одна из сетей в качестве коммерческой услуги предлагает транзит трафика. Учетом может заниматься сетевой процессор. 13. Сбор статистиги. Многие компании хотели бы иметь статистику трафика, и сетевые процессоры могут собирать зти сведения. Повышение производительности Производительность — это самая главная характеристика сетевых процессоров.
Что можно сделать для ее повышения? Прежде чем ответить на этот вопрос, необходимо определить, что это такое. Одной из метрик является количество пакетов, передаваемых в секунду, другой — количество байтов, предаваемых в секунду. Эти метрики предполагают разные подходы, и схема, хорошо работающая с маленькими пакетами, может плохо справляться с большими. В частности, при передаче маленьких пакетов заметно повысить производительность можно путем ускорения процесса поиска целевого адреса в таблице, в то же время при передаче больших пакетов заметного повышения производительности это не даст.
Самым прямым путем к повышению производительности является увеличение тактовой частоты сетевого процессора. Правда, производительность не растет пропорционально частоте, так как сказывается время обращения к памяти и ряд других факторов. Кроме того, большая частота означает необходимость отводить больше тепла.
Обычно выходом является увеличение числа РРЕ-контроллеров — этот подход особенно эффективен для параллельных архитектур. Может помочь также увеличение длины конвейера, но только в том случае, если удастся разделить процесс обработки пакета на достаточно простые этапы. Еше один подход состоит в увеличении числа дополнительных специализированных процессоров или специализированных интегральных схем, предназначенных для выполнения отдельных затратных и часто требующихся операций, если такие операции эффективнее выполнять аппаратно.
Среди множества 628 Глава 8. Параллельные компьютерные архитектуры кандидатов можно отметить поиск в таблицах, вычисление контрольных сумм и криптографические операции. Можно также повысить скорость, сократив время прохождения пакетов в системе за счет введения дополнительных шин и увеличения количества линий в существующих. Наконец, обычно прироста производительности удается добиться заменой микросхем памяти (5ВАМ вместо КОКАМ), но это, естественно, сказывается на стоимости.
Конечно же, это далеко не все, что можно сказать о сетевых процессорах. За дополнительной информацией обращайтесь к 147, 50, 125, 158]. Мультимедиа-процессоры Еще одна область применения сопроцессоров — обработка фотографических изображений высокого разрешения, а также аудио- и видеопотоков. Обычно центральный процессор недостаточно хорош, когда в этих приложениях приходится выполнять сложные вычисления над большими обьемами данных. По этой причине некоторые современные персональные компьютеры и большинство разрабатываемых моделей оборудуются специальными сопроцессорами для обработки мультимедийной информации, на которые можно переложить значительную часть работы.