Научная статья на тему 'МЕТОД ОЦЕНКИ ПРОИЗВОДИТЕЛЬНОСТИ ВСТРАИВАЕМЫХ МОДУЛЕЙНА ОСНОВЕ X86-64 ПРОЦЕССОРОВ'

МЕТОД ОЦЕНКИ ПРОИЗВОДИТЕЛЬНОСТИ ВСТРАИВАЕМЫХ МОДУЛЕЙНА ОСНОВЕ X86-64 ПРОЦЕССОРОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
105
11
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Гузарев Антон Сергеевич

В данной статье представлен новый метод расчета производительности процессоров на основе характеристик указываемых производителем и определяемых показателей запускаемых на системе приложений. Метод предназначен для оценки встраиваемых вычислительных модулей на основе процессоров с архитектурами x86 и x86-64

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «МЕТОД ОЦЕНКИ ПРОИЗВОДИТЕЛЬНОСТИ ВСТРАИВАЕМЫХ МОДУЛЕЙНА ОСНОВЕ X86-64 ПРОЦЕССОРОВ»

А. С. Гузарев

ПАО «Интелтех»

МЕТОД ОЦЕНКИ ПРОИЗВОДИТЕЛЬНОСТИ ВСТРАИВАЕМЫХ МОДУЛЕЙ НА ОСНОВЕ Х86-64 ПРОЦЕССОРОВ

АННОТАЦИЯ: В данной статье представлен новый метод расчета производительности процессоров на основе характеристик указываемых производителем и определяемых показателей запускаемых на системе приложений. Метод предназначен для оценки встраиваемых вычислительных модулей на основе процессоров с архитектурами х86 и х86—64.

Под встраиваемыми системами обычно понимают набор аппаратных средств, которые применяются для работы в составе какой-либо другой системы [1]. Применяемыми аппаратными средствами, как правило, являются вычислительные модули на базе различных процессоров. Наиболее часто применяются архитектуры x86, x86—64 и ARM, в данной статье будут рассмотрены только первые две архитектуры.

Встраиваемые системы применяются для решения задач управления, обработки сигналов поступающих с датчиков, обработки мультимедийных данных и других задачах. При выборе модуля под конкретные задачиинтеграторы си-стемориентируются, прежде всего, на состав необходимых интерфейсов и производительность. Производительность процессора показывает количество операций, которые он может выполнить за единицу времени [2]. Основное требование к производительности — быстродействие модуля должно быть достаточным для выполнения заданного набора команд за отведенное время. Основными единицами измерения производительности являются MIPS [2], показывающая число миллионов выполненных операций в секунду, и FLOPS [3], показывающая число выполненных операций с плавающей запятой в секунду. В настоящее время часто используются смеси операций и бенчмарки [2]. Бенчмарк — это компьютерная программа, содержащая заранее записанные команды и позволяющая измерять время выполнения. В отличие от смеси операций, бенчмарки создаются на основе пользовательских приложений, на-

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

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

1. Скорость обработки команд процессором.

2. Быстродействие памяти

3. Способность программы использовать все ресурсы процессора.

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

МЕАП ОБ СОММИШСАТЮМ ЕСДЯРМЕШ: Iss. 4 (144). 2018

В рамках работы над данной статьей была составлена обобщенная схема вычислительного модуля, схема представлена на рис.1.

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

Основным элементом представленной схемы является процессор. Компьютерный процессор представляет собой микросхему, которая отвечает за выполнение всех вычислительных и управляющих операций. Перед выполнением любой программы ее код загружается в оперативную память. Далее команды начиная с первой передаются в процессор, где выполняется операция, соответствующая принятой команде. Результат операции либо остается в процессоре, либо записывается в оперативную память. Последовательность указанных действий называется машинным циклом [2, 3]. Главным элементом процессора является вычислительное ядро, от которого напрямую зависит производительность вычислительной системы. Для увеличения производительности разработчики процессоров

либо увеличивают тактовую частоту Рк 2[ош], либо увеличивают количество ядер Рк 4[ош].

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

Равномерная загрузка ядер процессора зависит от распараллеливания алгоритма на потоки выполнения в многопоточных приложениях и от возможности операционной системы распределять потоки приложений между ядрами процессора [5]. Поскольку всегда есть последовательная часть алгоритма, которую невозможно распараллелить, то часть ядер будет простаивать. Для определения простаивающей части можно воспользоваться Законом Амдала [5], но для этого придется для всех алгоритмов определить фактор определяющий какая часть не может быть распараллелена. Альтернативным вариантом является использование монитора ресурсов, который есть в составе каждой современной операционной системе. В 'Wmdowsподобных операционных системах есть приложения «Монитор ресурсов» и «Диспетчер задач», позволяющие определить насколько загружен каждое из ядер процессора

Рис. 1. Обобщенная схема вычислительного модуля

[6]. В 'Wmdowsподобных операционных системах это так же легко определяется системной утилитой top или напрямую через виртуальную файловую систему/ргос [7]. Определение простаивающих и работающих ядер целесообразно выполнять посредством инструментов операционной системы. При оценке производительности системы учитываются только те ядра процессора, которые заняты обработкой инструкций Рк [ош]. Таком образом, простейшую расчетную оценку производительности процессора Рк [ош] можно рассчитать по формуле:

P = fcpu Х Ncore . (1)

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

— увеличение размера кэша данных и команд;

— использование многоуровневого вычислительного конвейера;

— декодеры трансляции CISC-команды в одну или несколько RISC-подобных микроопераций;

— многопоточность выполнения команд;

— внедрение новых команд.

Построение расчетной модели, учитывающей все особенности микроархитектуры процессоров, является нецелесообразным ввиду сложности, закрытости технологий и неоднозначности влияния на производительность в различных алгоритмах. Оценку производительности микроархитектуры процессора предлагается оценивать по двум параметрам. Первым параметром является среднее число выполненных за такт команд IPC (InstructionsPerClock) [2—4]. В настоящее время величину IPC или обратную ей CPI (среднее число тактов для выполнения одной команды) можно найти в открытом доступе для большинства современных массовых процессоров.Дополнительным основанием в пользу примененияIPC является фирменный анализатор производительности процессоров Intel VTune Performance Analyzer определяющий знание данного параметра.

IPC = —. (2)

CPI V '

Как правило, анализаторы производительности выдают значение IPC для процессора в целом. Поскольку при анализе производительности все ядразадействуются в равной степени, то значение для одного ядра IPC! можно получить делением на число ядер в процессоре Ncore . Значение IPCX удобно использовать по

той причине, что количество работающих ядер уже учтено в выражении (1).

IPC -. (3)

IPC1 =

N„,

Несмотря на все технологии, применяемые в микроархитектуре процессоров, производительность в большой степени зависит от скорости выборки команд и данных из памяти. По этой причине, следующим параметром для оценки производительности микроархитектуры процессора предлагается использовать объем кэшпамяти. Кэш-память размещается на процессорном кристалле и ее скорость гораздо выше оперативной памяти [2, 3]. В кэш-памяти хранятся данные и команды, к которым наиболее часто обращается процессор. Кэш-память имеют несколько уровней, обычно два или три уровня. Первый уровень наименьший по объему и наиболее быстрый по скорости доступа. Производители процессоров часто встраивают первые два уровня в ядра, а третий является общим для всех ядер [4]. При считывании процессором команд или данных из кэш-памяти, происходит обращение к первому уровню.В случае, когда нужной информации в первом уровне нет, происходит обращение на второй уровень и далее по иерархии. Если в кэш-памяти отсутствует запрашиваемая информация, происходит обращение к оперативной памяти, такое явление называется кэш-промахом и вызывает задержки выполнения команд. Поскольку часть общего объема кэш-памяти, предназначенная конкретным ядрам Lidleкэш/, может пустовать по причине простаивания ядра, необходимо это учитывать при оценке производительности. Размер кэш-памяти, используемой во время работы программ ^эш, можно определить как суммарный объем каш-памяти всех уровней Lкэш¡ с вычетом суммарного пустующего объема Lidle кэш/.

п п

эш эш i кэш/. (4)

1 1

max

MEANS OF COMMUNICATION EQUIPMENT. Iss. 4 (144). 2018

На этапе включения системы из жесткого диска в оперативную память (ОЗУ) происходит загрузка ядра операционной системы, драйверов, системных программ, которые хранятся до завершения работы [3, 6, 7]. Исполняемые коды пользовательских программ при их запуске тоже загружаются в ОЗУ и вместе с выделенными им областями хранятся до завершения программы пользователем. Поскольку в данной статье рассматриваются только встраиваемые системы, в которых обычно не предполагается работа с большими объемами данных, то после загрузки исполняемого кода в оперативную память жесткий диск не используется и никак не влияет на производительность. Очевидно, что производительность системы может снизить медленная работа памяти, в том случае если данные будут поступать медленно, а процессор будет простаивать в ожидании. Обращение к оперативной памяти происходит каждый раз, когда требуемая информация отсутствует в кэш-памяти. На время обращения к ОЗУ выполнение потока прерывается и в зависимости от реализации микроархитектуры процессор приостанавливается или переключается на выполнение другой нити. Производительность оперативной памяти зависит от пропускной способности памяти и количества тактов, необходимых для выполнения чтения или записи данных.Пропускная способность памяти определяется произведением частоты шины памяти /ОЗУ соединяющей контроллер шины памяти и ОЗУ, на количество бит передаваемых за один такт. Количество передаваемых за такт бит часто называется разрядностью шины Sbus. При

использовании двухканальной памяти разрядность увеличивается вдвое. Следует отметить, согласно тестированию производительности, опубликованным изданием THG[8], разница в производительности при использовании одно-канальной и двухканальной памяти мала, а в ряде операции отсутствует, вследствие этого предложено при оценке производительности процессора учитывать разрядность шины без учета количества каналов памяти ОЗУ. Каждая операция работы с памятью требует своего определенного количества тактов, все эти задержки сведены производителями ОЗУ в общую совокупность, которая называется «системой триммингов». При оценке производительности из «системы триммингов» предлагается учитывать только одно значение tRAS . Значение tRAS всегда явля-

ется самым большим, поскольку содержит задержку на выполнение следующих операций [3]:

1) выбор строки строку в банке памяти с помощью команды ACTIVATE;

2) чтения данных командой READ;

3) считывания данных, поступающих на внешнюю шину данных микросхемы.

Низкая тактовая частота памяти может привести к простою ядер процессора, слишком большая частота памяти приводит к тому, что ядра не успевают обрабатывать поступающ информацию и подобное увеличение частоты не увеличит производительность. Существует несколько спецификаций модулей памяти (DDR, DDR2, DDR3 и др.), в которых определены тактовые частоты, энергопотребление и другие параметры. Разработка каждого процессора ведется с поддержкой определенной спецификации памяти, что гарантирует возможность работы с ОЗУ на максимальной таковой частоте /ОЗУ .

max

При оценке производительности можно учитывать разницу между максимально допустимой частотой шины памяти, заложенной в процессоре, и частотой оперативной памяти в рассматриваемой системе. Таким образом, производительность оперативной памяти РОЗУ можно оценить следующим выражением:

ЧЭЗУ

/ОЗУ х Sbus

{SAS х (f03ymav - /ОЗУ )

(5)

В алгоритмах программ часто требуется с большим объемом данных провести одинаковую операцию. Такая ситуация типична при воспроизведении мультимедийных файлов, которые представляют собой массив однородных данных с заголовком. При помощи SIMD-инструкций [3, 9] можно за один такт выполнить одинаковый набор операций над несколькими числами, записанными в одном регистре, и таким образом увеличить производительность. Для обеспечения такого режима работы необходима компиляция программы с вызовами SIMD-инструкций, а так же поддержка процессором в виде дополнительных инструкций и регистров. В настоящее время производителями процессоров разработаны несколько наборов инструкций, таких как MMX, SSE, 3DNow!, AVX и другие [9]. Эффективность применения таких инструкций зависит от наличия необходимых команд в SIMD-наборе, периодичности их вы-

зова в алгоритме и размера SIMD-регистров ^яшо . При наличии циклов и подпрограмм

в разрабатываемых приложениях достаточно сложно оценить количество SIMD-вызовов без автоматизации, вместо этого предлагается использовать весовой коэффициент X8шв . Целесообразным является выбор Х8шв на основе

публикаций со сравнениями прироста производительности при использовании различных SIMD-инструкций для выполнения различных задач.

Из неучтенных факторов, влияющих на производительность системы, можно выделить количество кэш-промахов ^кэш промах, возникающих при работе приложения. Как говорилось ранее, кэш-промахи вызывают приостановление выполнения нити программы до получения необходимых данных или команд из ОЗУ, что снижает производительность. Время передачи значений в регистры ядра из кэш-памяти занимает несколько тактов, а время передачи из оперативной памяти — несколько десятков тактов. Можно дополнить выражение (1) всеми перечисленными параметрами системы, повышающими и понижающими производительность:

В

P =

N

(6)

кэш промах

В = /еры Х Хсоге Х 1РС\ Х ((кэш • Хкэш ) Х х (РОЗУ • ХОЗУ ) Х (81ИП • Х81ИП ), где Хкэш и ХОЗУ весовые коэффициенты зависимости производительности от размера кэшпамяти и производительности оперативной памяти.

Весовые коэффициенты Хкэш, ХОЗУ и X8шв должны удовлетворять условию X < 1. Как правило, каждый из указанных коэффициентов показывает прирост производительности 5—20 %, конкретные значения предлагается выбирать на основе публикаций информационно-технических изданий о тестировании производительности различных систем.

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

СПИСОК ЛИТЕРАТУРЫ

1. Сорокин А. Промышленные компьютеры для встраиваемых систем. Журнал СТА №1, 2011.

2. Гуров В. В. Архитектура микропроцессоров: Учебное пособие / В.В. Гуров — М.: Интернет — Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2010.

3. Архитектура компьютера. Таненбаум Э. 6-е изд. — СПб.: 2016.

4. Методы увеличения вычислительной производительности [Электронный ресурс]ЛХВТ.сот, 27 июля 2009 г. URL: http://www.ixbt.com/cpu/cpus-peed.shtml (дата обращения: 07.05.2016).

5. Каляев И. А., Левин И. И., Семерников Е. А., Шмойлов В. И. Реконфигурируемые мультиконвей-

ерные вычислительные структуры. Ростов-н/Д: ЮНЦ РАН, 2008.

6. Станек Р. Windows Server 2008. Справочник администратора. — БХВ-Петербург: 2008.

7. Немет Э., Снайдер Г., Хейн Т. Unix и Linux. Руководство системного администратора. — Вильямс: 2012.

8. Параллельные вычисления, часть II. Число каналов памяти и массивы RAID [Электронный ресурс]. Редакция THG, 27 октября 2007. URL: http://www.thg. ru/mamboard/dual_channel_raid_benchmark/prmt.html (дата обращения: 14.05.2016).

9. The significance of SIMD, SSE and. AVX. - Intel Compiler Labs. Software and Services Group — 2010.

i Надоели баннеры? Вы всегда можете отключить рекламу.