СИСТЕМА И СПОСОБ РАЗМЕЩЕНИЯ СТАТИЧЕСКИХ ОБЪЕКТОВ ДАННЫХ В НЕОДНОРОДНОЙ ОПЕРАТИВНОЙ ПАМЯТИ
SYSTEM AND METHOD OF ARRANGING STATIC DATA OBJECTS IN HETEROGENEOUS RANDOM-ACCESS MEMORY

Изобретение относится к области обработки данных в вычислительных системах, а именно к системам и способам размещения статических объектов данных в неоднородной оперативной памяти, и может применяться в компьютерных системах с неоднородной оперативной памятью.
Существующие способы размещения объектов в оперативной памяти состоят из следующих шагов (Фиг.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).