Многоядерные процессоры
В компьютерной индустрии происходят серьезные изменения. В течение следующих нескольких лет вы увидите, как ваши сети будут заменены многоядерными машинами. Это повлияет на многие аспекты вашей сети, от затрат на лицензирование и разработку программного обеспечения до общей направленности вашей сетевой архитектуры. В этой статье я помогу проиллюстрировать, почему отрасль движется в этом направлении, и объясню, какое влияние это окажет на вас и вашу сеть.
Терминология
Терминология в ИТ-индустрии может сбивать с толку. Итак, давайте сразу что-нибудь прямо с места в карьер. Многоядерный ЦП имеет два или более процессорных блока на одной интегральной схеме. Это отличается от термина «мультичип», который относится к нескольким интегральным схемам, собранным вместе. Это еще отличается от термина «многопроцессорный», который относится к нескольким процессорам, работающим вместе.
Преимущества
Так зачем разработчикам оборудования ставить процессоры на один и тот же чип? Что ж, одна важная причина заключается в том, что размещение нескольких ядер на одной интегральной схеме в одном корпусе занимает меньше места на печатной плате, чем эквивалентное количество корпусов одноядерных процессоров. Другое, менее очевидное преимущество заключается в том, что, поскольку несколько ядер на одной интегральной схеме физически расположены близко друг к другу, согласованность кэш-памяти значительно улучшается.
Энергосбережение также может быть реализовано с помощью многоядерных процессоров. Поскольку ядра находятся на одном чипе, сигналы между ядрами проходят более короткие расстояния. Кроме того, многоядерные ЦП обычно работают при более низком напряжении, и, поскольку мощность, теряемая сигналом, проходящим по проводу, равна квадрату напряжения, деленного на сопротивление в проводе, более низкое напряжение приведет к меньшим потерям мощности..
Другая возможная область для экономии энергии связана с тактовой частотой. Видите ли, многоядерные процессоры могут выполнять во много раз больше операций в секунду, даже работая на более низкой частоте. Например, 16-ядерный процессор MIT RAW работает на частоте 425 МГц и может выполнять в 100 раз больше операций в секунду, чем Intel Pentium 3, работающий на частоте 600 МГц. Как частота влияет на энергопотребление процессора? Ну, это довольно сложный процесс, но основное эмпирическое правило заключается в том, что на каждый процент увеличения тактовой частоты вы увидите трехпроцентное увеличение энергопотребления. Это, конечно, предполагает, что другие факторы, влияющие на энергопотребление, не изменились.
Многоядерные ЦП также могут совместно использовать шинный интерфейс и кэш-схему. На рис. 1 показана схема двухъядерного процессора Intel Core 2 с общим кэшем второго уровня. Это может привести к значительной экономии места. По данным Intel, двойной процессор Core 2 имеет до 4 МБ общего кэша L2.
Рисунок 1: Схема двухпроцессорного процессора Intel Core 2. Предоставлено www.wikipedia.com
Плитка плитки6
Говоря о кеше ЦП, недавно анонсированный Tilera Tile64 (64-ядерный процессор) имеет уникальную функцию кеша. Tile64 использует ячеистую архитектуру, как показано на рис. 2. Эта ячеистая архитектура позволяет отдельным ядрам делать что-то совершенно необычное. Когда ядро просматривает свой кэш L2 и не может найти то, что ищет, оно сначала просматривает кэши L2 других ядер в сетке, прежде чем запрашивать данные из основной памяти. В основном это означает, что сетка действует как кеш L3.
Рисунок 2: Схема Tile64. Предоставлено www.tilera.com
Архитектура
Уникальная функция кэширования Tile64 является примером серьезного изменения архитектуры компьютера. В настоящее время компьютеры сосредоточены вокруг памяти, а процессоры обращаются к этой памяти. Это требует больших затрат на связь, а также является основным узким местом и фактором, ограничивающим скорость работы. С внедрением нескольких ядер отрасль движется к архитектуре, в большей степени ориентированной на обработку и связь. Эта новая архитектура работает быстрее и эффективнее с точки зрения энергопотребления.
Нынешняя ориентированная на память архитектура не способна реализовать все преимущества многоядерности. Например, типичное чтение из кэша требует всего 10% энергии, необходимой для чтения из внешней памяти. Скорость операции чтения вне кристалла также будет ограничена как используемой технологией памяти, так и используемой средой соединения, которая обычно не является масштабируемой.
По мере того как многоядерные процессоры становятся все более распространенными, они становятся все более доступными. Когда это произойдет, разработчики программного обеспечения начнут разрабатывать действительно многопоточные приложения. Именно тогда вы увидите изменения в своих сетях. Ваши сети, скорее всего, перестанут быть ориентированными на память и станут ориентированными на обработку и связь. Ваши сети, конечно, вряд ли будут использовать двухъядерные или четырехъядерные процессоры (за исключением, возможно, компьютера пользователя). Ваше сетевое оборудование будет иметь десятки или сотни ядер.
Многопоточность
Но при чем здесь разработчики программного обеспечения? Что ж, еще одним фактором, который ограничивает преимущества многоядерных процессоров в производительности, является программное обеспечение, которое на них работает. Для обычного пользователя наибольший прирост производительности наблюдается при переходе на многоядерный ЦП с улучшенной многозадачностью. Например, с многоядерным процессором вы увидите значительное улучшение, если будете смотреть DVD во время сканирования на вирусы. Это связано с тем, что каждое приложение будет назначено разным ядрам.
Если пользователь запускает одно приложение на многоядерной машине, то, скорее всего, не будет значительных преимуществ в производительности. Это связано с тем, что большинство приложений не являются по-настоящему многопоточными. Приложения могут выглядеть многопоточными, например сканирование на вирусы может запускать новый поток, в то время как графический интерфейс выполняется в другом потоке. Это не настоящая многопоточность. Настоящая многопоточность — это когда основная часть работы делится на потоки. В примере сканирования вирусов поток GUI выполняет очень мало работы, в то время как поток сканирования вирусов выполняет тяжелую работу и не может быть разделен и отправлен на разные ядра.
Разработка действительно многопоточного приложения требует много очень сложной работы. Это, очевидно, увеличивает затраты на цикл разработки программного обеспечения. Вот почему большинство программных приложений не будут разрабатываться как действительно многопоточные приложения до тех пор, пока количество ядер не станет значительно большим, так что многозадачность не даст никакого прироста производительности. Это когда пользователь будет требовать этого.
Однако ваши сети — это немного другая история. Маршрутизаторы, вероятно, станут первыми широко распространенными машинами с несколькими ядрами, а также значительной многопоточностью. Серверы также увидят значительный выигрыш от многоядерности и многопоточности. Некоторые из вас сейчас могут подумать, а не являются ли эти продукты уже многоядерными? Ну да, многие. Я говорю о значительном скачке количества ядер. Intel пообещала к 2011 году выпустить 80 ядер, это то, о чем я говорю.
Лицензирование
Следующий вопрос, который вы, вероятно, зададите: как это повлияет на мое лицензирование программного обеспечения? В настоящее время на этот вопрос трудно ответить. Многим компаниям-разработчикам программного обеспечения потребуется только одна лицензия для работы на многоядерных процессорах. Конечно, это обычно относится только к процессорам с двумя или, возможно, четырьмя ядрами. Microsoft заявила, что они будут продолжать лицензировать свое серверное программное обеспечение по количеству процессоров, а не по количеству ядер. Это, безусловно, похоже на то, как движется отрасль. Однако мы можем только подождать и посмотреть, что сделают компании-разработчики программного обеспечения, когда мы захотим запускать их программное обеспечение на 80 ядрах.
Хотя есть некоторые неизвестные, связанные с лицензированием, и некоторые определенные недостатки, связанные с разработкой программного обеспечения, переход к многоядерным процессорам, безусловно, является хорошей идеей. За последние несколько лет вы, вероятно, заметили, что скорости процессоров резко возросли, в то время как их производительность увеличилась лишь незначительно. Эта убывающая отдача является реальной причиной перехода на многоядерные процессоры. Многоядерная технология — единственная технология, которая действительно может обеспечить значительный прирост производительности. Не знаю, как вы, а я с нетерпением жду!