Рассказывает старший директор по архитектуре процессоров
компании Imagination Technologies Ранганатан Судхакар
Одна из самых редких, но чрезвычайно востребованных сегодня профессий – разработчик процессорных архитектур. Специалистов в этой области очень мало – не только в России, но и во всем мире. Поэтому мы не могли упустить шанс побеседовать с одним из них – с ведущим архитектором процессорных ядер MIPS. После того, как в 2013 году компания MIPS была полностью поглощена великобританской фирмой Imagination Technologies, развитие технологии MIPS обрело второе дыхание. Какими возможностями будут обладать новые процессорные ядра MIPS, в чем их отличия от конкурентов, какой синергетический эффект можно ожидать от интеграции с Imagination? Со всеми этими вопросами мы обратились к главному архитектору компании Imagination Technologies Ранганатан Судхакару (Ranganathan "Suds" Sudhakar).[1]
Мистер Судхакар, сегодня на рынке в большой мере доминируют процессорные ядра ARM. Но ведь не так давно между ARM и MIPS был паритет. За счет чего ядра MIPS могут вернуть утраченные позиции?
MIPS – это прекрасная архитектура. Я могу сказать об этом с уверенностью, поскольку мне довелось иметь дело и с другими архитектурами. До прихода в компанию MIPS в 2010 году я много лет работал в Sun Microsystems, разрабатывая RISC-процессоры SPARC, а затем в корпорации Oracle – системы SPARCstation и многоядерные процессоры. Все это были мощные процессоры, для серверов и суперкомпьютеров. В частности, моя последняя работа в Sun – это процессор мощностью 250 Вт, который требовал жидкостного охлаждения. А в последние годы я занимаюсь RISC-процессорами MIPS, энергопотребление которых в тысячу раз меньше, порядка 250 мВт. Этого в принципе нельзя достичь с архитектурой SPARC – она изначально создана для процессоров с предельной производительностью. Именно поэтому процессоры SPARC никогда не использовались во встроенных устройствах, это прекрасное решение для суперкомпьютеров.
Примечательно, что до Sun я работал в компании AMD и был одним из архитекторов 64-разрядного процессора Opteron. А в AMD я пришел из Стэнфордского университета, где трудился над диссертацией на степень PhD. Более 10 лет в AMD я разрабатывал процессоры с энергопотреблением от 2,5 Вт для ноутбуков до 25 Вт для настольных компьютеров, участвовал в работах над графическими процессорами, в создании множества других интегральных схем.
Благодаря столь широкому спектру работ, я приобрел хороший опыт и знания в области самых разных архитектур. И теперь уверенно могу сказать, что MIPS – лучшая из них. Она наиболее простая, ее можно быстро разработать и быстро внедрить. Разработка моего последнего процессора в компании AMD длилась семь лет, занималось этим 150 человек. Работы над созданием RISC-процессоров SPARC требовали гораздо меньше времени. А в случае с MIPS, купив лицензию, несколько человек могут разработать интересные продукты за считанные месяцы.
Что делает архитектуру MIPS столь простой и удобной?
Все преимущества процессоров проистекают из системы команд. Процессоры MIPS основаны на архитектуре RISС (reduced instruction set computing), которая позволяет увеличить быстродействие за счет простых коротких инструкций, причем одинакового размера, чтобы их выборка и декодирование происходили наиболее быстро. Напротив, процессоры с системой команд CISC (complex instruction set computing), в частности, x86-процессоры, гораздо более сложны в реализации, поэтому их разработка занимает много времени.
В процессорах MIPS используется система команд, разработанная в начале 1980-х годов в Стэнфордском университете командой под руководством Джона Хеннесси. Собственно, Хеннесси в 1984 году и основал компанию MIPS Computer Systems для коммерциализации своих разработок, а в 2000 стал президентом Стэнфордского университета. Это принципиально – система команд MIPS, в отличие других процессоров, изначально была разработана на научной основе, поскольку ее создавал профессор компьютерных наук. Конвейерные системы, компиляторы, сама система команд – все создавалось на научной основе, на базе многочисленных исследований. Причем одновременно разрабатывалась как аппаратная, так и программная части процессора. Все это и обусловило преимущества архитектуры MIPS, в том числе – простоту системы команд, высокую производительность при небольшой площади кристалла и низком энергопотреблении. Конечно, помимо системы команд, в MIPS используется ряд других уникальных технологий.
Сегодня едва ли многие вспомнят, что компания MIPS одной из первых разработала 64-разрядную RISC-архитектуру – MIPS III, представленную в 1991 году. Тогда же на ее основе был создан процессор MIPS R4000 – первый 64-разрядный RISC-процессор. Лицензии на его производство практически сразу приобрели многие ведущие вендоры. Причем архитектура позволяла создавать многоядерные процессоры, до 10 ядер, что обеспечивало высочайшую производительность. Процессоры с 64-разрядной архитектурой MIPS использовались в сотнях миллионов устройств – от игровых консолей до сверхвысокопроизводительного сетевого оборудования.
Развитие архитектуры MIPS продолжается?
Разумеется. Уже сменилось несколько поколений архитектур. Сегодня мы работаем на основе архитектур MIPS64 и MIPS32, для 64- и 32-разрядных ядер соответственно. Причем последний, шестой релиз MIPS64, поддерживает и операционную систему (ОС) Android. Ряд производителей чипсетов для мобильных устройств, например компания Broadcom, уже лицензировали и используют 64-разрядную архитектуру MIPS.
В 2013 году компания Imagination Technologies представила новое семейство процессорных ядер Warrior. В них воплощены все наши новейшие архитектурные решения. Новое семейство охватывает очень широкий спектр возможных классов задач, в каждом из них демонстрируя лучшую производительность и эффективность среди конкурентов. В семейство входят три различные линейки процессоров – ядра начального уровня М-класса, высокопроизводительные ядра Р-класса и универсальные ядра среднего уровня (I-класс). Обратите внимание – буквы, обозначающие серии процессоров (M, I, P) – это три первые буквы из названия нашей архитектуры MIPS. Каждая из этих линеек имеет свои особенности, однако в целом все они обладают общей архитектурой. Это позволяет легко интегрировать ядра различных классов в один чип, добиваясь оптимального построения заказных ИС, систем-на-кристалле (СнК) и т. п. Даже в сотовых телефонах уже используются процессоры, построенные на основе нескольких наших IP-ядер.
Самый современный продукт в семействе Warrior – ядро I6400, представленное осенью 2014 года. I6400 – это пока единственный в семействе Warrior 64-разрядный процессор, он построен на основе новой архитектуры MIPS64 релиз 6. Такое ядро с успехом можно использовать в СнК не только для мобильных устройств, но и в процессорах для серверов крупных центров обработки данных и даже в суперкомпьютерах. На его примере удобнее всего рассмотреть особенности нашей архитектуры.
В чем заключаются особенности современной архитектуры MIPS64?
Можно выделить несколько особенностей. Прежде всего, это параллельная многопоточная обработка (мультитрединг). Суть многопоточной обработки – на одном аппаратном ядре одновременно выполняется несколько потоков задач (тредов). Технология эта хорошо известна, но весь вопрос в ее воплощении. Большинство систем команд, где используются сложные инструкции, не позволяют аппаратно реализовать многопоточные вычисления. Различных команд может быть много, но они должны быть простыми и однотипными по структуре. Именно такой подход и соответствует RISC-архитектуре. Например, Intel выпускает процессоры с мультитредингом – они называют их "гипертрединг". Но эти процессоры реально поддерживают в основном два потока одновременно. MIPS более 10 лет назад представил ядра с 9 параллельными потоками. Это стало возможным благодаря очень аккуратной и тщательной разработке системы команд – подчеркну – начиная с изучения работы программ и компиляторов.
Новое ядро I6400 (рис.1) поддерживает до четырех программных потоков одновременно. Причем можно выбирать число потоков на стадии разработки – например, если вы создаете процессор для сервера или маршрутизатора, вам нужно четыре потока, а для смартфона достаточно и одного. Одновременная многопоточность очень важна для серверных процессоров, поскольку на них обычно выполняется много независимых задач. Например, если вы зайдете на сайт Google, то сервер Google выделит один поток для обработки вашего запроса. Если ядро процессора позволяет работать всего с одним потоком, это требует множества серверных стоек и колоссального расхода электроэнергии. Возможность работать с четырьмя потоками параллельно позволяет существенно сократить размеры центров обработки данных и их энергопотребление, поскольку каждый поток представляет собой по сути дела виртуальное ядро процессора. Операционная система воспринимает отдельный поток как полноценное ядро и думает, что работает с четырьмя ядрами.
Предположим, у вас четырехъядерный процессор, и вам надо выполнить четыре программы. Каждая из них обрабатывается на своем ядре. Но если ядро поддерживает одновременную обработку четырех потоков, то операционная система видит в процессоре не четыре, а 16 ядер, и может одновременно направлять 16 программ для исполнения в одном процессоре.
Отмечу, что распараллеливание происходит на уровне различных задач, но не одной программы. Если выполняется одна программа, процессор не будет расщеплять ее на несколько потоков. Если программы две – для каждой из них выделяется отдельный поток.
Конечно, не всегда необходимо обрабатывать четыре потока программ. Но здесь ситуация похожа на ту, что происходит в автомобилестроении. Чаще всего в легковой машине едет только один пассажир, но в абсолютном большинстве из них четыре посадочных места. Процессоры MIPS могут выполнять четыре задачи параллельно, и уж вам решать, как использовать эти возможности. Если вы создаете процессор для сервера – устройство для огромного количества "пассажиров", то наши процессоры позволяют не покупать четыре одноместных "машины" для четырех "пассажиров", а перевозить всех в одной. Причем многопоточность требует незначительного увеличения площади, которую занимает ядро на кристалле.
Сегодня производители смартфонов хвалятся четырех- и даже восьмиядерными процессорами, но такие ядра занимают немалую площадь, потребляют много энергии и сокращают время автономной работы устройства. Наши процессоры с многопоточной обработкой устраняют эту проблему.
Почему для поддержки многопоточности требуется лишь незначительное увеличение площади ядра?
В однопотоковом процессоре команда начинает исполняться только тогда, когда закончена предыдущая. В многопотоковом процессоре последующая инструкция может начать исполняться еще до завершения предыдущей команды. В этом и состоит распараллеливание: мы разделяем аппаратные ресурсы ядра между различными потоками. Ведь при обработке одного потока не все исполнительные устройства используются одновременно, многие из них простаивают. Мы исследовали, как задействованы разные исполнительные устройства процессора при выполнении программ, определяли, как много и какие функциональные элементы необходимы в процессе обработки нескольких потоков, и нашли оптимум.
Например, одно из основных исполнительных устройств любого процессора – арифметико-логическое устройство (АЛУ). В ядре I6400 можно выполнять четыре потока, но оно содержит не четыре АЛУ, а лишь два. При работе одного потока выполнятся не только команды для АЛУ, но и инструкции записи/чтения данных, ветвления и т. п. Мы знаем, что очередная команда с вероятностью 50% будет обращаться к АЛУ, с вероятностью 30% – к устройству загрузки данных, с вероятностью 20% – к устройству ветвления (условного перехода). Поэтому, пока в одном потоке происходит чтение из памяти, в другом в это время выполняется команда в АЛУ, в третьем – запись в память. Именно в этом вся суть мультрединга: параллельное исполнение инструкций и более эффективное использование элементов ядра процессора.
Аналогично, кэш-память первого уровня (L1-кэш) используется всеми потоками. Если обрабатывается только один поток, то он владеет всей кэш-памятью. Несколько потоков используют участки кэш-памяти, выделяемые им динамически. При этом для быстрого преобразования адресов используется специальная – кэш-память – буферы ассоциативной трансляции (TLB).
На кристалле АЛУ занимает немного места, поэтому при переходе к четырехпотоковому ядру размер процессора увеличивается не сильно. Объем кэш-памяти также вырастает незначительно, поскольку она может использоваться всеми потоками по мере надобности.
Таким образом, мы рассмотрели одну особенность нашего нового семейства – многопоточность.
Каковы другие особенности архитектуры ядра I6400?
Вторая особенность – все наши новые процессоры поддерживают аппаратную виртуализацию. В любом процессоре работает операционная система, а над ней – уровень приложений. В компьютере всегда параллельно работают несколько приложений, например – текстовый редактор Word и интернет-браузер. Каждое из них, благодаря операционной системе, думает, что оно работает в одиночестве. Операционная система гарантирует, что программы никогда не будут мешать друг другу, они работают как бы независимо. Это первый уровень виртуализации – на уровне операционной системы.
Однако пользователь может захотеть запустить более одной операционной системы на одном процессорном ядре – например, Android и Windows. Уже сегодня есть планшеты, способные работать с несколькими операционными системами. При этом каждая из ОС может управлять одновременно несколькими программами. Это уже следующий уровень виртуализации.
Виртуализация, в частности, помогает решить важную проблему обеспечения безопасности. У вас на смартфоне могут быть как открытые данные, например видеофильм, так и закрытые – скажем, номер кредитной карты, с помощью которой вы за этот фильм только что заплатили. Если на смартфоне только одна стандартная операционная система, она открыта для различных атак, злоумышленники могут модифицировать ее и украсть всю ценную информацию. При наличии системы защиты на основе виртуализации все важные данные хранятся в области, управляемой другой ОС и физически недоступны извне. Области в памяти виртуально разделены, но управление этим разделением происходит на аппаратном уровне. Память разделена на общедоступную и безопасную области, и защищенная область в принципе не видна ОС, предназначенной для пользовательских программ. Не так давно подобный уровень безопасности можно было обеспечить только в настольных компьютерах, сегодня он доступен в мобильных устройствах, в других встраиваемых системах благодаря ядрам MIPS.
Подчеркну, виртуализация обеспечивается на аппаратном уровне. Конечно, для работы нескольких операционных систем на одном ядре требуется специальная программа – гипервизор. Этот гипервизор может общаться с процессорами и памятью, чтобы обеспечить согласованную и независимую работу операционных систем – так же, как сама операционная система обеспечивает независимую работу двух программ. Гипервизор может быть написан сторонними разработчиками, он размещается в защищенной области под операционной системой. Поскольку это относительно небольшой код, его достаточно просто защитить аппаратно.
Мы гордимся еще одной особенностью наших процессоров – набором SIMD-команд (single instruction multiple data – одна команда управляет многими данными). Это известный принцип вычислений, обеспечивающий параллелизм на уровне данных. SIMD-команды могут работать с операндами до 128 бит, что очень важно, например, при обработке видео- и аудиоинформации. Новая архитектура MIPS поддерживает более 150 новых SIMD-команд, позволяющих проводить различные операции с 32 векторными регистрами по 128 бит. Эти регистры могут содержать данные различных форматов – до 64-разрядных целых чисел, 16- и 32-разрядных операндов с фиксированной запятой и 32- или 64-разрядных чисел с плавающей запятой. Операции над этими множественными данными выполняются одной SIMD-командой. Кроме того, в ядрах с новой архитектурой предусмотрен дополнительный набор команд цифровой обработки сигналов (DSP). Подобная возможность существенно расширяет производительность наших ядер в различных мультимедийных приложениях.
Помимо SIMD- и DSP-инструкций, произошли ли какие-либо изменения в наборе команд в новой базовой архитектуре MIPS64 rel.6?
Конечно. В новом релизе, по сравнению с релизом 5, произошли значительные изменения, направленные на повышение производительности. Например, появились новые типы команд условного перехода, в частности, по условию переполнения (области памяти, регистра). Это необходимо, например, для поддержки языка программирования JavaScript, который используется браузером Chrome. В этом языке очень важно контролировать условия переполнения, а наши новые команды позволяют делать это очень эффективно.
Другой пример – новые команды для чтения и записи данных. Инструкции шестого релиза позволяют обращаться в область памяти, отстоящую на 256 Мбайт (т. е. размер поля возможного смещения может составлять 26 бит) – в предыдущем релизе аналогичное смещение не превышало области в 2 Кбайт. Таким образом, в программах стали возможны переходы в рамках очень большого адресного пространства.
Важно отметить, что система команд MIPS64 полностью совместима с 32-разрядными командами архитектуры MIPS32 – в этом еще одна уникальность нашей архитектуры. MIPS32 является подмножеством 64-разрядной архитектуры MIPS64. Любая 32-разрядная программа может выполняться на 64-разрядном ядре, не требуя какой-либо перекомпиляции.
И все эти особенности реализованы в новом процессоре I6400?
Да. В ядре I6400 есть все средства поддержки многопоточности, сдвоенное устройство исполнения SIMD-команд (опция). Процессор построен на основе 9-стадийного сдвоенного конвейера, сбалансированный набор исполнительных устройств обеспечивает возможность суперскалярных вычислений. Предусмотрены множественно-ассоциативная 4-канальная кэш-память данных и аналогичная кэш команд, каждая размером 32 или 64 Кбайт по выбору разработчика. Развитая программируемая система управления памятью построена по двухуровневой схеме: сверху быстрые буферы ассоциативного преобразования адресов (TLB) команд и данных (ITLB и DTLB, по четыре записи в каждом), они основываются на TLB страниц переменного размера (VTLB, 64 либо 96 записей) и TLB страниц фиксированного размера (FTLB, 512 записей). Улучшенный JTAG-интерфейс, помимо традиционных функций, поддерживает опциональную систему внутреннего контроля исполнения программ. Она позволяет наблюдать выполнение программ как на уровне ядра, так и в многоядерном кластере в целом. Предусмотрена система контроля питания на уровне ядра. Это особенно важно при создании многоядерных кластеров – в этом случае каждое ядро может независимо работать на собственной частоте, со своим энергопотреблением.
Конечно, я назвал лишь некоторые особенности ядра I6400. И это ядро – наш первый процессор, построенный по архитектуре MIPS64 шестого релиза. За ним вскоре последуют другие продукты. Ядро I6400 уже прошло верификацию в кремнии – будучи реализованным в полной конфигурации, по 28 нм процессу компании TSMC (28HPM) ядро заняло на кристалле площадь в 1 мм 2. Была продемонстрирована работа на тактовой частоте 1 ГГц, при этом были достигнуты показатели быстродействия 3000 DMIPS и 5600 CoreMark – подчеркну, это при наихудших условиях работы и в рамках экспериментального производственного процесса. При серийном изготовлении тактовые частоты могут составлять не ниже 2 ГГц. Наш процессор оставил далеко позади все конкурирующие 64-разрядные решения среднего уровня. При этом по размерам, гибкости и эффективности он является хорошей альтернативной современным 32-разрядным ядрам.
Другие процессорные ядра семейства Warrior существенно отличаются от I6400?
Они относятся к другим линейкам и предназначены для иных задач. Так, линейка начального уровня (М-класс) создавалась для микроконтроллеров и процессоров, которым не требуется высокая производительность, но важны низкая стоимость и малое энергопотребление. Это широчайший спектр приложений, от контроллеров клавиатуры и процессоров небольших видеокамер до автомобильных микроконтроллеров – в современном автомобиле их можно насчитать не один десяток.
Процессоры М-класса сегодня представляют два ядра – M5100 и M5150. В первом (рис.2) интегрирован блок исполнения в реальном времени и контроллер СОЗУ. Это ядро оптимизировано для недорогих микроконтроллеров с низким энергопотреблением, с частотами до 500 МГц. Ядро M5150 вместо контроллера СОЗУ оснащено контроллерами кэш-памяти команд и данных (до 64 Кбайт), а также соответствующими контроллерами управления кэш-памятью. Это ядро предназначено для более производительных решений, работающих под управлением как ОС Linux, так и операционных систем реального времени.
В целом, несмотря на свой "начальный" уровень, ядрах M51xx – это весьма мощные процессоры. По сути, они стали развитием нашего предыдущего семейства microAptiv. Архитектура М51хх основывается на пятиступенчатом конвейере, предусмотрен опциональный модуль DSP, поддерживающий 150 команд (в том числе SIMD-инструкции), а также опциональное устройство обработки данных с плавающей запятой. В семействе используется система команд microMIPS, позволяющая сократить размеры программ по сравнению с классическим 32-разрядным кодом, так что выигрыш может достигать 30%. При этом она совместима с системой команд MIPS32/64.
В процессорах М51хх не предусмотрена многопоточная обработка, однако они поддерживают аппаратную виртуализацию, для чего предназначен специальный контроллер управления памятью. Он позволяет выделить защищенную область для ответственных приложений – например, для корневых системных программ.
Какие ядра представляют наиболее производительную линейку в семействе Warrior?
Это линейка P-класса, в ней пока лишь одно ядро – P5600 (рис.3). Оно было первым представителем семейства Warrior, анонсированным в августе 2013 года. Архитектура ядра основана на 32-разрядной системе команд MIPS32 релиза 5.
В отличие от I6400, где в первую очередь важны гибкость и универсальность, в ядре P5600 все ориентировано на максимальную производительность. Здесь не поддерживается многопоточность, но, продолжая автомобильную аналогию, если ядра I-класса можно сравнить с легковыми четырехместными машинами, то Р-класс – это одноместные болиды Formula-1. Если вы хотите что-то сделать очень быстро, то лишние потоки ("пассажиры") вам только помешают.
Ядро основано на 16-ступенчатом конвейере с изменяемой последовательностью выполнения. Поддерживаются суперскалярные вычисления, за один такт возможна выборка четырех команд, выполнение четырех операций с целыми числами и двух SIMD-операций. Используется развитая система предсказания ветвлений. Ядро оснащено мощной системой управления памятью – область физической адресуемой памяти составляет 1 Тбайт (поле адреса расширяется до 40 бит). Кэш данных и инструкций – 4-канальная множественно-ассоциативная память, до 64 Кбайт. Немало других особенностей. Разумеется, поддерживается аппаратная виртуализация. В целом, ядро Р5600 ориентировано для построения многоядерных систем.
В чем особенности многоядерных процессоров на основе ядер компании Imagination Technologies?
У нас есть решения, позволяющие объединить в один кластер до шести ядер – как P5600, так и I6400 (рис.4). В рамках всего кластера предусмотрены контроллер глобальных прерываний, система глобальных регистров состояния. Имеется глобальный контроллер питания, позволяющий отключать подачу питания на отдельные ядра кластера, когда они не используются. Однако ключевой элемент кластера – менеджер когерентности[2]. В него интегрирована кэш-память второго уровня (L2-кэш) объемом до 8 Мбайт. Менеджер когерентности позволяет всем шести ядрам взаимодействовать друг с другом, с устройствами ввода/вывода, с кэш-память второго уровня и т. п. Уже через L2-кэш строится взаимодействие с внешней памятью и другими некогерентными устройствами. Кроме того, в кластере предусмотрено специальное устройство, обеспечивающее когерентность каналов ввода/вывода со всеми процессорными ядрами.
Объединение нескольких ядер в один кластер – это лишь первый уровень интеграции. Компания Imagination Technologies занимается не только универсальными процессорами (ЦПУ), но и ядрами графических контроллеров (GPU) под брендом PowerVR. Конечно, графическими их можно назвать условно, это мощные системы обработки, кодирования и декодирования видеопотоков, инструменты создания виртуальной реальности в видеоиграх и т. п. Так же, как и универсальные процессоры, несколько ядер графических процессоров можно объединять в кластер, со своей L2-кэш (рис.5). Причем на одном кристалле можно интегрировать и кластер универсальных процессоров, и кластер GPU, каждый со своей L2-кэш. Совместная работа кластеров строится через взаимодействие между их блоками L2-кэш-памяти.
Помимо GPU, у нас есть семейство специализированных процессорных ядер Ensigma. Например, Ensigma RPU (radio processing unit) – это ядро для полной обработки сигналов для самых различных систем беспроводной связи – Wi-Fi, Bluetooth, любого стандарта цифрового телевизионного или радиовещания в любой стране мира. Это возможно за счет унифицированной аппаратной части и программной реализации протоколов обработки. Достаточно сменить программу, и вы получаете поддержку нужного ТВ-стандарта или системы связи. Подчеркну, все эти ядра – и ЦПУ, и графических процессоров, и ядра Ensigma – можно интегрировать на одном кристалле, обеспечив их эффективную совместную работу. Как в конструкторе – все в руках разработчиков микросхем и систем в целом!
Много лет назад архитектура MIPS была основной в России. Теперь ситуация изменилась – практически везде применяется ARM. Возможно ли изменение этой ситуации?
Основываясь на том, какие ядра создает компания ARM, могу сказать, что это очень хорошая для нас ситуация. У Imagination уже есть клиенты в России, и их число растет. Даже процессоры, анонсированные совсем недавно, в том числе I6400, уже лицензируются несколькими российскими компаниями. После того как в 2013 году компания Imagination Technologies приобрела MIPS, мы продали 50 новых лицензий – причем как на традиционные ядра MIPS, так и на совсем новые.
В MIPS я пришел, чтобы научиться работать с программными процессорными ядрами (IP-ядрами). Однако после того как в 2013 году MIPS была приобретена компанией Imagination Technologies, я опять занимаюсь разработкой кристаллов, поскольку у нас есть подразделение Imagination Works, которое разрабатывает микросхемы для самых разных задач на основе наших IP-ядер. Более того, мы предлагаем это как сервис для сторонних фирм. Если кто-то хочет создать собственный чип, но не располагает для этого достаточными компетенциями, он может обратиться к нам. Причем при разработке кристалла мы используем не только наши процессорные ядра, но и, по желанию заказчика, IP-блоки других производителей. Такой подход способствует росту применения ядер MIPS во всем мире, в том числе и в России. Наш основной конкурент – компания ARM – таких услуг не оказывает. Если вы покупаете у них ядра ЦПУ или других устройств, то сами должны разрабатывать законченную микросхему.
Как вы справедливо заметили, продукция MIPS была популярна в России много лет назад, поскольку это простая и ясная архитектура. В вашей стране есть кому оценить ее по достоинству. Мне приятно отметить, что в России очень много талантливых и технически образованных людей, я могу судить об этом по уровню вопросов, которые мне задавали при общении. У меня в России было много очень интересных, коротких и содержательных обсуждений. Коротких, потому что мы понимали друг друга с полуслова. И я не сомневаюсь, что российские инженеры могут по достоинству оценить наши ядра. Два года назад мы приняли решение уделять большее внимание сотрудничеству с Россией, и сейчас я с большим оптимизмом смотрю на перспективы расширения этого сотрудничества с Imagination Technologies.
Большое спасибо, надеемся, это сотрудничество будет очень продуктивным.
С Р. Судхакаром беседовал И. Шахнович
--------------------------------------------------------------------------------
[1] С апреля 2015 года Р. Судхакар покинул компанию Imagination Technologies, став основателем
и главой новой компании Zebibyte.
[2] Когерентность – свойство мультипроцессорных систем с разделяемой общей памятью сохранять целостность данных. Когерентность означает возможность синхронизировать данные в кэш-памяти каждого процессора с соответствующими данными в общей памяти.
компании Imagination Technologies Ранганатан Судхакар
Одна из самых редких, но чрезвычайно востребованных сегодня профессий – разработчик процессорных архитектур. Специалистов в этой области очень мало – не только в России, но и во всем мире. Поэтому мы не могли упустить шанс побеседовать с одним из них – с ведущим архитектором процессорных ядер MIPS. После того, как в 2013 году компания MIPS была полностью поглощена великобританской фирмой Imagination Technologies, развитие технологии MIPS обрело второе дыхание. Какими возможностями будут обладать новые процессорные ядра MIPS, в чем их отличия от конкурентов, какой синергетический эффект можно ожидать от интеграции с Imagination? Со всеми этими вопросами мы обратились к главному архитектору компании Imagination Technologies Ранганатан Судхакару (Ranganathan "Suds" Sudhakar).[1]
Мистер Судхакар, сегодня на рынке в большой мере доминируют процессорные ядра ARM. Но ведь не так давно между ARM и MIPS был паритет. За счет чего ядра MIPS могут вернуть утраченные позиции?
MIPS – это прекрасная архитектура. Я могу сказать об этом с уверенностью, поскольку мне довелось иметь дело и с другими архитектурами. До прихода в компанию MIPS в 2010 году я много лет работал в Sun Microsystems, разрабатывая RISC-процессоры SPARC, а затем в корпорации Oracle – системы SPARCstation и многоядерные процессоры. Все это были мощные процессоры, для серверов и суперкомпьютеров. В частности, моя последняя работа в Sun – это процессор мощностью 250 Вт, который требовал жидкостного охлаждения. А в последние годы я занимаюсь RISC-процессорами MIPS, энергопотребление которых в тысячу раз меньше, порядка 250 мВт. Этого в принципе нельзя достичь с архитектурой SPARC – она изначально создана для процессоров с предельной производительностью. Именно поэтому процессоры SPARC никогда не использовались во встроенных устройствах, это прекрасное решение для суперкомпьютеров.
Примечательно, что до Sun я работал в компании AMD и был одним из архитекторов 64-разрядного процессора Opteron. А в AMD я пришел из Стэнфордского университета, где трудился над диссертацией на степень PhD. Более 10 лет в AMD я разрабатывал процессоры с энергопотреблением от 2,5 Вт для ноутбуков до 25 Вт для настольных компьютеров, участвовал в работах над графическими процессорами, в создании множества других интегральных схем.
Благодаря столь широкому спектру работ, я приобрел хороший опыт и знания в области самых разных архитектур. И теперь уверенно могу сказать, что MIPS – лучшая из них. Она наиболее простая, ее можно быстро разработать и быстро внедрить. Разработка моего последнего процессора в компании AMD длилась семь лет, занималось этим 150 человек. Работы над созданием RISC-процессоров SPARC требовали гораздо меньше времени. А в случае с MIPS, купив лицензию, несколько человек могут разработать интересные продукты за считанные месяцы.
Что делает архитектуру MIPS столь простой и удобной?
Все преимущества процессоров проистекают из системы команд. Процессоры MIPS основаны на архитектуре RISС (reduced instruction set computing), которая позволяет увеличить быстродействие за счет простых коротких инструкций, причем одинакового размера, чтобы их выборка и декодирование происходили наиболее быстро. Напротив, процессоры с системой команд CISC (complex instruction set computing), в частности, x86-процессоры, гораздо более сложны в реализации, поэтому их разработка занимает много времени.
В процессорах MIPS используется система команд, разработанная в начале 1980-х годов в Стэнфордском университете командой под руководством Джона Хеннесси. Собственно, Хеннесси в 1984 году и основал компанию MIPS Computer Systems для коммерциализации своих разработок, а в 2000 стал президентом Стэнфордского университета. Это принципиально – система команд MIPS, в отличие других процессоров, изначально была разработана на научной основе, поскольку ее создавал профессор компьютерных наук. Конвейерные системы, компиляторы, сама система команд – все создавалось на научной основе, на базе многочисленных исследований. Причем одновременно разрабатывалась как аппаратная, так и программная части процессора. Все это и обусловило преимущества архитектуры MIPS, в том числе – простоту системы команд, высокую производительность при небольшой площади кристалла и низком энергопотреблении. Конечно, помимо системы команд, в MIPS используется ряд других уникальных технологий.
Сегодня едва ли многие вспомнят, что компания MIPS одной из первых разработала 64-разрядную RISC-архитектуру – MIPS III, представленную в 1991 году. Тогда же на ее основе был создан процессор MIPS R4000 – первый 64-разрядный RISC-процессор. Лицензии на его производство практически сразу приобрели многие ведущие вендоры. Причем архитектура позволяла создавать многоядерные процессоры, до 10 ядер, что обеспечивало высочайшую производительность. Процессоры с 64-разрядной архитектурой MIPS использовались в сотнях миллионов устройств – от игровых консолей до сверхвысокопроизводительного сетевого оборудования.
Развитие архитектуры MIPS продолжается?
Разумеется. Уже сменилось несколько поколений архитектур. Сегодня мы работаем на основе архитектур MIPS64 и MIPS32, для 64- и 32-разрядных ядер соответственно. Причем последний, шестой релиз MIPS64, поддерживает и операционную систему (ОС) Android. Ряд производителей чипсетов для мобильных устройств, например компания Broadcom, уже лицензировали и используют 64-разрядную архитектуру MIPS.
В 2013 году компания Imagination Technologies представила новое семейство процессорных ядер Warrior. В них воплощены все наши новейшие архитектурные решения. Новое семейство охватывает очень широкий спектр возможных классов задач, в каждом из них демонстрируя лучшую производительность и эффективность среди конкурентов. В семейство входят три различные линейки процессоров – ядра начального уровня М-класса, высокопроизводительные ядра Р-класса и универсальные ядра среднего уровня (I-класс). Обратите внимание – буквы, обозначающие серии процессоров (M, I, P) – это три первые буквы из названия нашей архитектуры MIPS. Каждая из этих линеек имеет свои особенности, однако в целом все они обладают общей архитектурой. Это позволяет легко интегрировать ядра различных классов в один чип, добиваясь оптимального построения заказных ИС, систем-на-кристалле (СнК) и т. п. Даже в сотовых телефонах уже используются процессоры, построенные на основе нескольких наших IP-ядер.
Самый современный продукт в семействе Warrior – ядро I6400, представленное осенью 2014 года. I6400 – это пока единственный в семействе Warrior 64-разрядный процессор, он построен на основе новой архитектуры MIPS64 релиз 6. Такое ядро с успехом можно использовать в СнК не только для мобильных устройств, но и в процессорах для серверов крупных центров обработки данных и даже в суперкомпьютерах. На его примере удобнее всего рассмотреть особенности нашей архитектуры.
В чем заключаются особенности современной архитектуры MIPS64?
Можно выделить несколько особенностей. Прежде всего, это параллельная многопоточная обработка (мультитрединг). Суть многопоточной обработки – на одном аппаратном ядре одновременно выполняется несколько потоков задач (тредов). Технология эта хорошо известна, но весь вопрос в ее воплощении. Большинство систем команд, где используются сложные инструкции, не позволяют аппаратно реализовать многопоточные вычисления. Различных команд может быть много, но они должны быть простыми и однотипными по структуре. Именно такой подход и соответствует RISC-архитектуре. Например, Intel выпускает процессоры с мультитредингом – они называют их "гипертрединг". Но эти процессоры реально поддерживают в основном два потока одновременно. MIPS более 10 лет назад представил ядра с 9 параллельными потоками. Это стало возможным благодаря очень аккуратной и тщательной разработке системы команд – подчеркну – начиная с изучения работы программ и компиляторов.
Новое ядро I6400 (рис.1) поддерживает до четырех программных потоков одновременно. Причем можно выбирать число потоков на стадии разработки – например, если вы создаете процессор для сервера или маршрутизатора, вам нужно четыре потока, а для смартфона достаточно и одного. Одновременная многопоточность очень важна для серверных процессоров, поскольку на них обычно выполняется много независимых задач. Например, если вы зайдете на сайт Google, то сервер Google выделит один поток для обработки вашего запроса. Если ядро процессора позволяет работать всего с одним потоком, это требует множества серверных стоек и колоссального расхода электроэнергии. Возможность работать с четырьмя потоками параллельно позволяет существенно сократить размеры центров обработки данных и их энергопотребление, поскольку каждый поток представляет собой по сути дела виртуальное ядро процессора. Операционная система воспринимает отдельный поток как полноценное ядро и думает, что работает с четырьмя ядрами.
Предположим, у вас четырехъядерный процессор, и вам надо выполнить четыре программы. Каждая из них обрабатывается на своем ядре. Но если ядро поддерживает одновременную обработку четырех потоков, то операционная система видит в процессоре не четыре, а 16 ядер, и может одновременно направлять 16 программ для исполнения в одном процессоре.
Отмечу, что распараллеливание происходит на уровне различных задач, но не одной программы. Если выполняется одна программа, процессор не будет расщеплять ее на несколько потоков. Если программы две – для каждой из них выделяется отдельный поток.
Конечно, не всегда необходимо обрабатывать четыре потока программ. Но здесь ситуация похожа на ту, что происходит в автомобилестроении. Чаще всего в легковой машине едет только один пассажир, но в абсолютном большинстве из них четыре посадочных места. Процессоры MIPS могут выполнять четыре задачи параллельно, и уж вам решать, как использовать эти возможности. Если вы создаете процессор для сервера – устройство для огромного количества "пассажиров", то наши процессоры позволяют не покупать четыре одноместных "машины" для четырех "пассажиров", а перевозить всех в одной. Причем многопоточность требует незначительного увеличения площади, которую занимает ядро на кристалле.
Сегодня производители смартфонов хвалятся четырех- и даже восьмиядерными процессорами, но такие ядра занимают немалую площадь, потребляют много энергии и сокращают время автономной работы устройства. Наши процессоры с многопоточной обработкой устраняют эту проблему.
Почему для поддержки многопоточности требуется лишь незначительное увеличение площади ядра?
В однопотоковом процессоре команда начинает исполняться только тогда, когда закончена предыдущая. В многопотоковом процессоре последующая инструкция может начать исполняться еще до завершения предыдущей команды. В этом и состоит распараллеливание: мы разделяем аппаратные ресурсы ядра между различными потоками. Ведь при обработке одного потока не все исполнительные устройства используются одновременно, многие из них простаивают. Мы исследовали, как задействованы разные исполнительные устройства процессора при выполнении программ, определяли, как много и какие функциональные элементы необходимы в процессе обработки нескольких потоков, и нашли оптимум.
Например, одно из основных исполнительных устройств любого процессора – арифметико-логическое устройство (АЛУ). В ядре I6400 можно выполнять четыре потока, но оно содержит не четыре АЛУ, а лишь два. При работе одного потока выполнятся не только команды для АЛУ, но и инструкции записи/чтения данных, ветвления и т. п. Мы знаем, что очередная команда с вероятностью 50% будет обращаться к АЛУ, с вероятностью 30% – к устройству загрузки данных, с вероятностью 20% – к устройству ветвления (условного перехода). Поэтому, пока в одном потоке происходит чтение из памяти, в другом в это время выполняется команда в АЛУ, в третьем – запись в память. Именно в этом вся суть мультрединга: параллельное исполнение инструкций и более эффективное использование элементов ядра процессора.
Аналогично, кэш-память первого уровня (L1-кэш) используется всеми потоками. Если обрабатывается только один поток, то он владеет всей кэш-памятью. Несколько потоков используют участки кэш-памяти, выделяемые им динамически. При этом для быстрого преобразования адресов используется специальная – кэш-память – буферы ассоциативной трансляции (TLB).
На кристалле АЛУ занимает немного места, поэтому при переходе к четырехпотоковому ядру размер процессора увеличивается не сильно. Объем кэш-памяти также вырастает незначительно, поскольку она может использоваться всеми потоками по мере надобности.
Таким образом, мы рассмотрели одну особенность нашего нового семейства – многопоточность.
Каковы другие особенности архитектуры ядра I6400?
Вторая особенность – все наши новые процессоры поддерживают аппаратную виртуализацию. В любом процессоре работает операционная система, а над ней – уровень приложений. В компьютере всегда параллельно работают несколько приложений, например – текстовый редактор Word и интернет-браузер. Каждое из них, благодаря операционной системе, думает, что оно работает в одиночестве. Операционная система гарантирует, что программы никогда не будут мешать друг другу, они работают как бы независимо. Это первый уровень виртуализации – на уровне операционной системы.
Однако пользователь может захотеть запустить более одной операционной системы на одном процессорном ядре – например, Android и Windows. Уже сегодня есть планшеты, способные работать с несколькими операционными системами. При этом каждая из ОС может управлять одновременно несколькими программами. Это уже следующий уровень виртуализации.
Виртуализация, в частности, помогает решить важную проблему обеспечения безопасности. У вас на смартфоне могут быть как открытые данные, например видеофильм, так и закрытые – скажем, номер кредитной карты, с помощью которой вы за этот фильм только что заплатили. Если на смартфоне только одна стандартная операционная система, она открыта для различных атак, злоумышленники могут модифицировать ее и украсть всю ценную информацию. При наличии системы защиты на основе виртуализации все важные данные хранятся в области, управляемой другой ОС и физически недоступны извне. Области в памяти виртуально разделены, но управление этим разделением происходит на аппаратном уровне. Память разделена на общедоступную и безопасную области, и защищенная область в принципе не видна ОС, предназначенной для пользовательских программ. Не так давно подобный уровень безопасности можно было обеспечить только в настольных компьютерах, сегодня он доступен в мобильных устройствах, в других встраиваемых системах благодаря ядрам MIPS.
Подчеркну, виртуализация обеспечивается на аппаратном уровне. Конечно, для работы нескольких операционных систем на одном ядре требуется специальная программа – гипервизор. Этот гипервизор может общаться с процессорами и памятью, чтобы обеспечить согласованную и независимую работу операционных систем – так же, как сама операционная система обеспечивает независимую работу двух программ. Гипервизор может быть написан сторонними разработчиками, он размещается в защищенной области под операционной системой. Поскольку это относительно небольшой код, его достаточно просто защитить аппаратно.
Мы гордимся еще одной особенностью наших процессоров – набором SIMD-команд (single instruction multiple data – одна команда управляет многими данными). Это известный принцип вычислений, обеспечивающий параллелизм на уровне данных. SIMD-команды могут работать с операндами до 128 бит, что очень важно, например, при обработке видео- и аудиоинформации. Новая архитектура MIPS поддерживает более 150 новых SIMD-команд, позволяющих проводить различные операции с 32 векторными регистрами по 128 бит. Эти регистры могут содержать данные различных форматов – до 64-разрядных целых чисел, 16- и 32-разрядных операндов с фиксированной запятой и 32- или 64-разрядных чисел с плавающей запятой. Операции над этими множественными данными выполняются одной SIMD-командой. Кроме того, в ядрах с новой архитектурой предусмотрен дополнительный набор команд цифровой обработки сигналов (DSP). Подобная возможность существенно расширяет производительность наших ядер в различных мультимедийных приложениях.
Помимо SIMD- и DSP-инструкций, произошли ли какие-либо изменения в наборе команд в новой базовой архитектуре MIPS64 rel.6?
Конечно. В новом релизе, по сравнению с релизом 5, произошли значительные изменения, направленные на повышение производительности. Например, появились новые типы команд условного перехода, в частности, по условию переполнения (области памяти, регистра). Это необходимо, например, для поддержки языка программирования JavaScript, который используется браузером Chrome. В этом языке очень важно контролировать условия переполнения, а наши новые команды позволяют делать это очень эффективно.
Другой пример – новые команды для чтения и записи данных. Инструкции шестого релиза позволяют обращаться в область памяти, отстоящую на 256 Мбайт (т. е. размер поля возможного смещения может составлять 26 бит) – в предыдущем релизе аналогичное смещение не превышало области в 2 Кбайт. Таким образом, в программах стали возможны переходы в рамках очень большого адресного пространства.
Важно отметить, что система команд MIPS64 полностью совместима с 32-разрядными командами архитектуры MIPS32 – в этом еще одна уникальность нашей архитектуры. MIPS32 является подмножеством 64-разрядной архитектуры MIPS64. Любая 32-разрядная программа может выполняться на 64-разрядном ядре, не требуя какой-либо перекомпиляции.
И все эти особенности реализованы в новом процессоре I6400?
Да. В ядре I6400 есть все средства поддержки многопоточности, сдвоенное устройство исполнения SIMD-команд (опция). Процессор построен на основе 9-стадийного сдвоенного конвейера, сбалансированный набор исполнительных устройств обеспечивает возможность суперскалярных вычислений. Предусмотрены множественно-ассоциативная 4-канальная кэш-память данных и аналогичная кэш команд, каждая размером 32 или 64 Кбайт по выбору разработчика. Развитая программируемая система управления памятью построена по двухуровневой схеме: сверху быстрые буферы ассоциативного преобразования адресов (TLB) команд и данных (ITLB и DTLB, по четыре записи в каждом), они основываются на TLB страниц переменного размера (VTLB, 64 либо 96 записей) и TLB страниц фиксированного размера (FTLB, 512 записей). Улучшенный JTAG-интерфейс, помимо традиционных функций, поддерживает опциональную систему внутреннего контроля исполнения программ. Она позволяет наблюдать выполнение программ как на уровне ядра, так и в многоядерном кластере в целом. Предусмотрена система контроля питания на уровне ядра. Это особенно важно при создании многоядерных кластеров – в этом случае каждое ядро может независимо работать на собственной частоте, со своим энергопотреблением.
Конечно, я назвал лишь некоторые особенности ядра I6400. И это ядро – наш первый процессор, построенный по архитектуре MIPS64 шестого релиза. За ним вскоре последуют другие продукты. Ядро I6400 уже прошло верификацию в кремнии – будучи реализованным в полной конфигурации, по 28 нм процессу компании TSMC (28HPM) ядро заняло на кристалле площадь в 1 мм 2. Была продемонстрирована работа на тактовой частоте 1 ГГц, при этом были достигнуты показатели быстродействия 3000 DMIPS и 5600 CoreMark – подчеркну, это при наихудших условиях работы и в рамках экспериментального производственного процесса. При серийном изготовлении тактовые частоты могут составлять не ниже 2 ГГц. Наш процессор оставил далеко позади все конкурирующие 64-разрядные решения среднего уровня. При этом по размерам, гибкости и эффективности он является хорошей альтернативной современным 32-разрядным ядрам.
Другие процессорные ядра семейства Warrior существенно отличаются от I6400?
Они относятся к другим линейкам и предназначены для иных задач. Так, линейка начального уровня (М-класс) создавалась для микроконтроллеров и процессоров, которым не требуется высокая производительность, но важны низкая стоимость и малое энергопотребление. Это широчайший спектр приложений, от контроллеров клавиатуры и процессоров небольших видеокамер до автомобильных микроконтроллеров – в современном автомобиле их можно насчитать не один десяток.
Процессоры М-класса сегодня представляют два ядра – M5100 и M5150. В первом (рис.2) интегрирован блок исполнения в реальном времени и контроллер СОЗУ. Это ядро оптимизировано для недорогих микроконтроллеров с низким энергопотреблением, с частотами до 500 МГц. Ядро M5150 вместо контроллера СОЗУ оснащено контроллерами кэш-памяти команд и данных (до 64 Кбайт), а также соответствующими контроллерами управления кэш-памятью. Это ядро предназначено для более производительных решений, работающих под управлением как ОС Linux, так и операционных систем реального времени.
В целом, несмотря на свой "начальный" уровень, ядрах M51xx – это весьма мощные процессоры. По сути, они стали развитием нашего предыдущего семейства microAptiv. Архитектура М51хх основывается на пятиступенчатом конвейере, предусмотрен опциональный модуль DSP, поддерживающий 150 команд (в том числе SIMD-инструкции), а также опциональное устройство обработки данных с плавающей запятой. В семействе используется система команд microMIPS, позволяющая сократить размеры программ по сравнению с классическим 32-разрядным кодом, так что выигрыш может достигать 30%. При этом она совместима с системой команд MIPS32/64.
В процессорах М51хх не предусмотрена многопоточная обработка, однако они поддерживают аппаратную виртуализацию, для чего предназначен специальный контроллер управления памятью. Он позволяет выделить защищенную область для ответственных приложений – например, для корневых системных программ.
Какие ядра представляют наиболее производительную линейку в семействе Warrior?
Это линейка P-класса, в ней пока лишь одно ядро – P5600 (рис.3). Оно было первым представителем семейства Warrior, анонсированным в августе 2013 года. Архитектура ядра основана на 32-разрядной системе команд MIPS32 релиза 5.
В отличие от I6400, где в первую очередь важны гибкость и универсальность, в ядре P5600 все ориентировано на максимальную производительность. Здесь не поддерживается многопоточность, но, продолжая автомобильную аналогию, если ядра I-класса можно сравнить с легковыми четырехместными машинами, то Р-класс – это одноместные болиды Formula-1. Если вы хотите что-то сделать очень быстро, то лишние потоки ("пассажиры") вам только помешают.
Ядро основано на 16-ступенчатом конвейере с изменяемой последовательностью выполнения. Поддерживаются суперскалярные вычисления, за один такт возможна выборка четырех команд, выполнение четырех операций с целыми числами и двух SIMD-операций. Используется развитая система предсказания ветвлений. Ядро оснащено мощной системой управления памятью – область физической адресуемой памяти составляет 1 Тбайт (поле адреса расширяется до 40 бит). Кэш данных и инструкций – 4-канальная множественно-ассоциативная память, до 64 Кбайт. Немало других особенностей. Разумеется, поддерживается аппаратная виртуализация. В целом, ядро Р5600 ориентировано для построения многоядерных систем.
В чем особенности многоядерных процессоров на основе ядер компании Imagination Technologies?
У нас есть решения, позволяющие объединить в один кластер до шести ядер – как P5600, так и I6400 (рис.4). В рамках всего кластера предусмотрены контроллер глобальных прерываний, система глобальных регистров состояния. Имеется глобальный контроллер питания, позволяющий отключать подачу питания на отдельные ядра кластера, когда они не используются. Однако ключевой элемент кластера – менеджер когерентности[2]. В него интегрирована кэш-память второго уровня (L2-кэш) объемом до 8 Мбайт. Менеджер когерентности позволяет всем шести ядрам взаимодействовать друг с другом, с устройствами ввода/вывода, с кэш-память второго уровня и т. п. Уже через L2-кэш строится взаимодействие с внешней памятью и другими некогерентными устройствами. Кроме того, в кластере предусмотрено специальное устройство, обеспечивающее когерентность каналов ввода/вывода со всеми процессорными ядрами.
Объединение нескольких ядер в один кластер – это лишь первый уровень интеграции. Компания Imagination Technologies занимается не только универсальными процессорами (ЦПУ), но и ядрами графических контроллеров (GPU) под брендом PowerVR. Конечно, графическими их можно назвать условно, это мощные системы обработки, кодирования и декодирования видеопотоков, инструменты создания виртуальной реальности в видеоиграх и т. п. Так же, как и универсальные процессоры, несколько ядер графических процессоров можно объединять в кластер, со своей L2-кэш (рис.5). Причем на одном кристалле можно интегрировать и кластер универсальных процессоров, и кластер GPU, каждый со своей L2-кэш. Совместная работа кластеров строится через взаимодействие между их блоками L2-кэш-памяти.
Помимо GPU, у нас есть семейство специализированных процессорных ядер Ensigma. Например, Ensigma RPU (radio processing unit) – это ядро для полной обработки сигналов для самых различных систем беспроводной связи – Wi-Fi, Bluetooth, любого стандарта цифрового телевизионного или радиовещания в любой стране мира. Это возможно за счет унифицированной аппаратной части и программной реализации протоколов обработки. Достаточно сменить программу, и вы получаете поддержку нужного ТВ-стандарта или системы связи. Подчеркну, все эти ядра – и ЦПУ, и графических процессоров, и ядра Ensigma – можно интегрировать на одном кристалле, обеспечив их эффективную совместную работу. Как в конструкторе – все в руках разработчиков микросхем и систем в целом!
Много лет назад архитектура MIPS была основной в России. Теперь ситуация изменилась – практически везде применяется ARM. Возможно ли изменение этой ситуации?
Основываясь на том, какие ядра создает компания ARM, могу сказать, что это очень хорошая для нас ситуация. У Imagination уже есть клиенты в России, и их число растет. Даже процессоры, анонсированные совсем недавно, в том числе I6400, уже лицензируются несколькими российскими компаниями. После того как в 2013 году компания Imagination Technologies приобрела MIPS, мы продали 50 новых лицензий – причем как на традиционные ядра MIPS, так и на совсем новые.
В MIPS я пришел, чтобы научиться работать с программными процессорными ядрами (IP-ядрами). Однако после того как в 2013 году MIPS была приобретена компанией Imagination Technologies, я опять занимаюсь разработкой кристаллов, поскольку у нас есть подразделение Imagination Works, которое разрабатывает микросхемы для самых разных задач на основе наших IP-ядер. Более того, мы предлагаем это как сервис для сторонних фирм. Если кто-то хочет создать собственный чип, но не располагает для этого достаточными компетенциями, он может обратиться к нам. Причем при разработке кристалла мы используем не только наши процессорные ядра, но и, по желанию заказчика, IP-блоки других производителей. Такой подход способствует росту применения ядер MIPS во всем мире, в том числе и в России. Наш основной конкурент – компания ARM – таких услуг не оказывает. Если вы покупаете у них ядра ЦПУ или других устройств, то сами должны разрабатывать законченную микросхему.
Как вы справедливо заметили, продукция MIPS была популярна в России много лет назад, поскольку это простая и ясная архитектура. В вашей стране есть кому оценить ее по достоинству. Мне приятно отметить, что в России очень много талантливых и технически образованных людей, я могу судить об этом по уровню вопросов, которые мне задавали при общении. У меня в России было много очень интересных, коротких и содержательных обсуждений. Коротких, потому что мы понимали друг друга с полуслова. И я не сомневаюсь, что российские инженеры могут по достоинству оценить наши ядра. Два года назад мы приняли решение уделять большее внимание сотрудничеству с Россией, и сейчас я с большим оптимизмом смотрю на перспективы расширения этого сотрудничества с Imagination Technologies.
Большое спасибо, надеемся, это сотрудничество будет очень продуктивным.
С Р. Судхакаром беседовал И. Шахнович
--------------------------------------------------------------------------------
[1] С апреля 2015 года Р. Судхакар покинул компанию Imagination Technologies, став основателем
и главой новой компании Zebibyte.
[2] Когерентность – свойство мультипроцессорных систем с разделяемой общей памятью сохранять целостность данных. Когерентность означает возможность синхронизировать данные в кэш-памяти каждого процессора с соответствующими данными в общей памяти.
Отзывы читателей