Реклама:

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

Гомогенные однокристальные мультипроцессоры

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

Для малых однокристальных мультипроцессоров имеются два типовых проектных решения. В первом из них (рис. 8.8, а) присутствует одна микросхема и два конвейера - таким образом, скорость исполнения команд теоретически удваивается. Во втором решении (рис. 8.8, б) в микросхеме предусмотрено два независимых ядра, каждое из которых содержит полноценный процессор. Ядром называется большая микросхема (например, процессор, контроллер ввода-вывода или кэш-память), которая размещается на микросхеме в виде модуля, как правило, вместе с несколькими другими ядрами.

Однокристальные мультипроцессоры

Рис. 8.8. Однокристальные мультипроцессоры: микросхема с двумя конвейерами (а);

микросхема с двумя ядрами (б)

Первое решение допускает совместное потребление ресурсов (таких как функциональные блоки) процессорами; иными словами, каждый процессор может обращаться к ресурсам, не затребованным другим процессором. Второе решение требует изменения конструкции микросхемы и не предусматривает более двух процессоров. Здесь следует заметить, что разместить на одной микросхеме два или несколько ядер процессоров не так уж сложно.

Далее по мере изложения мы еще вернемся к теме мультипроцессоров. В этой главе мы в основном рассматриваем темы, относящиеся к мультипроцессорам на основе однопроцессорных микросхем, но многие из них применимы и к микросхемам с несколькими процессорами.

Гетерогенные однокристальные мультипроцессоры

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

Рассмотрим для примера портативный DVD-плеер. Размещенный в нем компьютер призван выполнять несколько функций:

1. Управление дешевым и ненадежным сервоприводом, регулирующим положение головки.

2. Преобразования аналогового сигнала в цифровую форму.

3. Коррекция ошибок.

4. Дешифрирование и управление правами.

5. Декомпрессия данных видеоформата MPEG-2.

6. Декомпрессия звуковых данных.

7. Кодирование выходных данных для воспроизведения в телевизионных системах NTSC, PAL или SECAM.

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

Данные на DVD-носителях хранятся в виде длинной спирали (см., например, рис. 2.20). Головка воспроизведения должна следовать по спирали вращающегося диска. Цена таких устройств остается невысокой благодаря относительно простой механической конструкции и жесткому программному контролю положения головки. С головки поступает аналоговый сигнал, который перед обработкой необходимо преобразовать в цифровой формат. После оцифровки проводится интенсивная программная коррекция ошибок, которые возникают при прессовке дисков. Видеоданные сохраняются на носителе в формате MPEG-2, для декомпрессии которого требуются сложные вычисления типа преобразований Фурье. Аудиоданные сжимаются по психоакустической модели, которая не менее сложна в части декомпрессии. Наконец, аудио- и видеоданные должны быть приведены в форму, подходящую для вывода сигнала в телевизорах системы NTS С, PAL или SECAM - в зависимости от страны, в которой используется DVD-плеер. Естественно, программно решить все эти задачи в реальном времени на дешевом универсальном процессоре невозможно. Таким образом, нужен гетерогенный мультипроцессор с несколькими специализированными ядрами. Логическая схема DVD-плеера представлена на рис. 8.9.

Ядра, изображенные на рис. 8.9, различаются по функциональной специализации; каждое из них спроектировано с расчетом на достижение максимального результата при минимально возможной цене. К примеру, сжатый видеосигнал для DVD хранится в формате MPEG-2 (это аббревиатура разработавшей данный формат организации Motion Picture Experts Group - группа экспертов в области движущихся изображений). При сжатии каждый кадр разделяется на несколько блоков и в отношении каждого из них выполняются сложные преобразования. Кадр может полностью состоять из измененных блоков или из блоков, присутствующих в предыдущем кадре с указанием смещения (Ах, Ау) от текущего положения и измеренных пикселов. Программно подобные вычисления выполняются очень медленно, однако при наличии процессора декодирования MPEG-2 этот процесс значительно ускоряется. Аналогичным образом, декодирование и повторное кодирование композитного аудио-видеосигнала в соответствии с одним из стандартных телевизионных стандартов эффективнее проводить с помощью специализированного аппаратного процессора. В этом контексте совершенно естественно, что в DVD-плеерах и им подобных устройствах применяются гетерогенные мультипроцессоры с несколькими ядрами. В то же время, поскольку управляющий процессор представляет собой универсальное программируемое устройство, такую мультипроцессорную микросхему можно установить в близком в функциональном плане устройстве, например, в устройстве записи DVD.

Однокристальные мультипроцессоры

Рис. 8.9. Логическая схема простого 0\Ю-плеера с гетерогенным мультипроцессором и несколькими специализированными ядрами для выполнения различных функций

Гетерогенные мультипроцессоры также устанавливаются в моделях сотовых телефонов (CDMA или GSM), укомплектованных фото- и видеокамерами, игровыми приложениями, браузерами, клиентами электронной почты, приемниками цифрового спутникового сигнала и средствами беспроводного подключения к Интернету (IEEE 802.11, или WiFi). Сейчас не все телефоны оснащены этими функциями, но в будущем они, вероятно, распространятся повсеместно. По мере того, как в современных условиях устройства постоянно усложняются, часы становятся GPS-навигаторами, а солнечные очки - радиоприемниками, потребность в гетерогенных мультипроцессорах только растет.

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

Программы обработки звуковых и видеоданных работают с огромными объемами информации. Поскольку все эти данные требуется обрабатывать быстро, от 50 до 75 % площади микросхемы отводится под размещение того или иного типа памяти. В этой связи возникают многочисленные вопросы. Сколько уровней кэш-памяти нужно в том или ином случае? Какими должны быть модули кэш-памяти, раздельными или объединенными? Каким должен быть объем каждого модуля? Насколько быстро он должны работать? Нужно ли размещать на микросхеме модули памяти других видов? Каких именно: SRAM или, может быть, SDRAM? От ответов на эти вопросы во многом зависит производительность, энергопотребление и параметры тепловыделения микросхемы.

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

В качестве примера механизма взаимодействия ядер на микросхеме рассмотрим архитектуру CoreConnect компании IBM (рис. 8.10). Она предназначена для объединения ядер в однокристальных гетерогенных мультипроцессорах. Для однокристальных мультипроцессоров CoreConnect выполняет примерно ту же роль, что и шина PCI для Pentium. С другой стороны, в отличие от PCI, архитектура CoreConnect разрабатывалась без расчета на обратную совместимость с устаревшими аппаратными компонентами и протоколами и без оглядки на ограничения, связанные с передачей данных на уровне плат, в частности, с количеством выводов на торцевых соединителях.

Архитектура CoreConnect состоит из трех шин. Шина процессора представляет собой высокоскоростную синхронную конвейеризированную шину с 32, 64 или 128 информационными линиями, работающими на тактовой частоте 66, 133 или 183 МГц. Ее максимальная пропускная способность равна 23,4 Гбит/с (для сравнения, у шины PCI этот показатель составляет 4,2 Гбит/с). Конвейеризация позволяет ядрам запрашивать шину в процессе передачи данных. Кроме того, как и в шине PCI, ядра могут одновременно передавать данные по разным линиям. Шина процессора оптимизирована для передачи коротких блоков данных и призвана обеспечивать взаимодействие между быстрыми ядрами - процессорами, декодерами MPEG-2, высокоскоростными сетями и тому подобными устройствами.

Однокристальные мультипроцессоры

Рис. 8.10. Архитектура CoreConnect компании IBM

Поскольку одной шины процессора на всю микросхему недостаточно, для передачи данных между низкоскоростными устройствами ввода-вывода (UART, таймерами, USB-контроллерами, последовательными устройствами ввода-вывода и т. д.) предусмотрена вторая, периферийная, шина. Она упрощает взаимодействие между 8-, 16- и 32-разрядными периферийными устройствами, используя для этой цели всего несколько сотен вентилей. Периферийная шина также является синхронной, а ее максимальная пропускная способность достигает 300 Мбит/с. Эти две шины соединяются с помощью моста, напоминающего мосты, которыми до недавнего времени соединялись шины PCI и ISA, пока некоторое время назад шина ISA не была вытеснена окончательно.

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

Сочетание стандартной шины на микросхеме, интерфейса и подобающей инфраструктуры позволяет рассматривать CoreConnect как миниатюрную версию архитектуры PCI, для которой в перспективе можно наладить производство совместимых процессоров и контроллеров. Разница лишь в том, что в мире PCI производители разрабатывают и продают платы продавцам и конечным пользователям. В случае с CoreConnect разработчики ядер предоставляют лицензии на их производство изготовителям бытовой электроники и другим компаниям, которые затем разрабатывают гетерогенные мультипроцессоры на основе собственных и лицензированных ядер. Поскольку для производства больших и сложных микросхем требуются масштабные инвестиции в производственные мощности, в большинстве случаев изготовители бытовой электроники готовят проекты в расчете на заказ микросхем в специализированных компаниях. В настоящее время существуют ядра для процессоров различных типов (ARM, MIPS, PowerPC и т. д.), декодеров MPEG, цифровых процессоров сигналов и всех стандартных контроллеров ввода-вывода.

Помимо CoreConnect, существуют и другие архитектуры встраиваемых в микросхему шин. В частности [67], но популярности ей ничем не уступает шина АМВА

(Advanced Microcontroller Bus Architecture - расширенная шинная архитектура для микроконтроллеров). Несколько менее популярны [116, 157] шины VCI (Virtual Component Interconnect - взаимодействие виртуальных компонентов) и OCP-IP (Open Core Protocol-International Partnership - международный консорциум по открытому протоколу ядра). Впрочем, встроенные в микросхему шины - это только начало; уже сейчас проектируются целые сети на одной микросхеме [22].

Поскольку производителям микросхем не удается постоянно повышать тактовую частоту из-за проблем, связанных с тепловыделением, разработка однокристальных мультипроцессоров становится крайне актуальной. Дополнительные сведения по этой теме можно получить в [43, 102, 120, 123, 129, 172].

Внутрипроцессорная многопоточность || Оглавление || Сопроцессоры