Система и способ размещения статических объектов данных в неоднородной оперативной памяти

Иллюстрации

Показать все

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

Реферат

Изобретение относится к области обработки данных в вычислительных системах, а именно к системам и способам размещения статических объектов данных в неоднородной оперативной памяти, и может применяться в компьютерных системах с неоднородной оперативной памятью.

Существующие способы размещения объектов в оперативной памяти состоят из следующих шагов (Фиг.1). Исходный код подают на вход компилятора, в котором генерируют объектный файл, содержащий набор секций, в которых размещены статические объекты данных. Секции комбинируют в сегменты в соответствии с флагами секций и помещают в неисполняемые, записываемые сегменты (Фиг.2). Исполняемый файл содержит исполняемые сегменты и сегменты данных. Сегменты загружают в оперативную память. Из уровня техники известны различные подходы к размещению объектов данных в памяти компьютера (см., например, опубликованные заявки US 20060248259 [1], US 20080082766 [2], WO 2009098311 [3]).

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

Наиболее близким к заявленному изобретению является способ поддержки неоднородной памяти (см. опубликованную заявку US 20070260827 [4]), в котором описывается способ представления областей неоднородной памяти операционной системе (ОС) на основе сходства памяти (логическое расстояние от центрального процессора/времен доступа). Данный способ выбран в качестве прототипа заявленного изобретения.

Недостатком способа прототипа является то, что в нем не описано размещение статических объектов данных в неоднородной оперативной памяти.

Задачей, на решение которой направлено заявленное изобретение, является создание системы и способа размещения статических объектов данных в неоднородной оперативной памяти с повышенной производительностью за счет более эффективного размещения статических объектов данных в памяти: при загрузке исполняемого файла в память управление размещением статических объектов данных производят на уровне сегментов.

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

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

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

генерируют в компиляторе исполняемый файл из исходного кода в соответствии с обычной схемой процесса генерации исполняемого файла и посылают его в анализатор доступа;

собирают в генераторе трассы трассу доступа к области данных во время исполнения оптимизируемого кода и посылают ее в анализатор доступа;

извлекают в анализаторе доступа из исполняемого файла информацию о статических объектах данных;

извлекают в анализаторе доступа из трассы характеристику доступа для каждого статического объекта данных;

принимают в анализаторе доступа решение о рекомендуемом размещении статических объектов данных по типам неоднородной оперативной памяти;

создают в анализаторе доступа список статических объектов данных с информацией об их рекомендуемом размещении по типам неоднородной оперативной памяти и посылают созданный список в компилятор;

объединяют в компиляторе статические объекты данных (из списка), рекомендованные для каждого типа однородной оперативной памяти, в секции с дополнительными флагами;

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

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

Для лучшего понимания заявленного изобретения далее приводится его подробное описание с соответствующими чертежами.

Фиг.1. Схема процесса генерации исполняемого файла, известная из уровня техники.

Фиг.2. Схема размещения сегментов в системе с однородной динамической памятью, известная из уровня техники.

Фиг.3. Схема системы размещения статических объектов данных в неоднородной оперативной памяти, выполненная согласно изобретению.

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

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

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

Рассмотрим вариант выполнения заявленной системы и способа, в котором неоднородная оперативная память (heterogeneous memory) содержит память двух типов: энергонезависимую оперативную память (NVRAM - Non-Volatile Random Access Memory) и динамическую оперативную память (DRAM - Dynamic Random Access Memory) (Фиг.3-5). Система размещения статических объектов данных в неоднородной оперативной памяти (Фиг.3) содержит соединенные между собой последовательно компилятор 1, генератор 2 трассы и анализатор 3 доступа.

При выполнении способа размещения статических объектов данных в неоднородной оперативной памяти (Фиг.4, 5) сначала генерируют в компиляторе 1 исполняемый файл из исходного кода в соответствии с обычной схемой процесса генерации исполняемого файла и посылают его в анализатор 3 доступа. Затем собирают в генераторе 2 трассы трассу доступа к области данных во время исполнения оптимизируемого кода и посылают ее в анализатор 3 доступа. Извлекают в анализаторе 3 доступа из исполняемого файла информацию о статических объектах данных. Извлекают в анализаторе 3 доступа из трассы характеристику доступа для каждого статического объекта данных. Принимают в анализаторе 3 доступа решение о рекомендуемом размещении статических объектов данных в одном из двух типов неоднородной оперативной памяти (энергонезависимой оперативной памяти или динамической оперативной памяти). Создают в анализаторе 3 доступа список статических объектов данных с информацией об их рекомендуемом размещении по двум типам неоднородной оперативной памяти и посылают созданный список в компилятор 1. Объединяют в компиляторе 1 статические объекты данных (из созданного списка), рекомендованные для каждого типа однородной оперативной памяти, в секции с дополнительными флагами. Размещают посредством компилятора 1 секции с дополнительными флагами в сегментах для каждого типа однородной оперативной памяти.

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

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

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

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

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

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

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