Библиографическое описание:

Иванов К. К., Раздобудько С. А., Ковалев Р. И. Архитектура современных многоядерных процессоров // Молодой ученый. — 2016. — №29. — С. 17-18.



1965 год запомнился человечеству многим: переизбранием Лю Шаоци Председателем Китайской Народной Республики, объявлением 9 мая нерабочим днем в СССР, провозглашением декларации Генеральной Ассамблеи ООН о недопустимости вмешательства во внутренние дела государств, об ограждении их независимости и суверенитета. Однако сегодня куда больший интерес вызывает одно наблюдение, сделанное одним из основателей производителя электронных устройств и компьютерных компонентов, компании IntelCorporation, и получившие позднее почетное звание закона. Речь, конечно же, идет о Гордоне Муре и его законе Мура, согласно которому каждые два года (часто используемый многими интервал в восемнадцать месяцев был предложен далеко не Муром, а спрогнозирован его коллегой Давидом Хаусом) должна удваиваться производительность вычислительных систем [1].

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

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

При использовании симметричной мультипроцессорности используются несколько процессор, обладающих одним уровнем приоритета или одинаковыми правами. Системы, организованные с помощью данного способа, используют общую память. Однако этот аспект вызывает серьезные проблемы, связанные с доступом к общим данным с разных процессоров и обеспечением в этой связи однозначности содержимого разных кэшей. Причина этого кроется в том, что может возникнуть ситуация, когда копии значений одних и тех же переменных находятся в кэше разных процессор и одним из процессоров будут изменены эти значения в своем кэше, что приведет к тому, что значения в кэше других процессоров станут некорректными, то есть неправильными. Решить эту проблему можно за счет сброса значений (присваивания им недействительного статуса) на аппаратном уровне, но эта мера приводит к определенному снижению производительности и появлению сложностей при достаточно большом числе процессоров [1]. Кроме этого необходимо также реализовать процедуру синхронизации взаимодействия выполняемых потоков данных, что также доставляет определенные проблемы. Подытожив все вышесказанное о симметричной мультипроцессорности, можно сказать, что, несмотря на простоту реализации, данное решение не позволяет задуматься о серьезном масштабировании. Совсем по-другому дела обстоят со следующим способом организации параллельной работы — одновременной многопотоковостью.

Необходимость в реализации одновременной многопотоковости возникла из-за низкой загрузки процессора при использовании других способов. В рамках же одновременной многопотоковости реализовано разделение задач на потоки, которые могут быть выполнены одновременно и независимо. Для этого реализована система определения наиболее приоритетных потоков, которые должны быть выполнены немедленно (остальные потоки просто блокируется, пока не повысится их приоритет), а также предусмотрено запоминание состояния потоков (то есть, на каком именно этапе закончилась работа с некоторым потоком). Так, при использовании данного подхода и надлежащем уровне реализации программ можно добиться серьезного увеличения производительности. По оценкам экспертам скорость вычислений можно повысить примерно на 30 % [1].

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

Предположим, что есть некоторый процессор, имеющий производительность на уровне x, энергопотребление на уровне y и тактовую частоту на уровне z. Пусть решено повысить тактовую частоту процессора до уровня 1,2*z (то есть на 20 %). При таком варианте производительность процессора составит 1,13*x (на 13 % больше), а энергопотребление — 1,73*y (на 73 % выше). Энергопотребление является очень большой проблемой для процессоров с высокой тактовой частотой, и столь серьезное увеличение энергопотребления крайне негативно скажется на работе. Пусть также рассматривается вариант, при котором тактовая частота, наоборот, уменьшается до уровня 0,8*z (на 20 %). Тогда производительность процессора составит 0,87*x (на 13 % меньше), а энергопотребление — 0,51*y. При добавлении еще одного процессора с той же тактовой частотой вдвое возрастет производительность (до 1,73*x) и энергопотребление (до 1,02*y). Данный пример наглядно показан на рисунке 1.

Рис. 1. Сравнение вариантов энергопотребления

Проанализировав полученные результаты можно прийти к выводу, что добавление одного ядра при понижении тактовой частоты и использовании многопоточности позволяет выиграть в производительности на целых 73 %! Именно поэтому все больше и больше производителей склоняется к использованию многоядерности.

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

Литература:

  1. Гергель, В. П. Высокопроизводительные вычисления для многопроцессорных многоядреных систем: Учебник. / В. П. Гергель. — М.: Издательство Московского университета, 2010. — 544 с., илл.

Обсуждение

Социальные комментарии Cackle