Соколов Евгений Владимирович

advertisement
На правах рукописи
СОКОЛОВ Евгений Владимирович
Моделирование синхронизации доступа к данным
на основе избыточного хранения
Специальность 05.13.18 - математическое моделирование,
численные методы и комплексы программ
АВТОРЕФЕРАТ
диссертации на соискание учёной степени
кандидата физико-математических наук
Москва – 2009
Работа выполнена на кафедре информатики
Московского физико-технического института
(государственного университета).
Научный руководитель:
доктор физико-математических наук
ТОРМАСОВ Александр Геннадьевич
Официальные оппоненты:
доктор физико-математических наук, профессор
ДИКУСАР Василий Васильевич
кандидат технических наук
ДРОЗДОВ Александр Юльевич
Ведущая организация:
Институт автоматизации проектирования РАН
Защита состоится 18 декабря
2009 года в 11.50 час. на заседании
диссертационного совета Д 212.156.05 при Московском физико-техническом
институте (государственном университете) по адресу: 141700,
г.Долгопрудный Московской обл., Институтский пер. д.9, ауд. 903 КПМ.
С диссертацией можно ознакомиться в библиотеке МФТИ (ГУ).
Автореферат разослан 17 ноября 2009 г.
Ученый секретарь
диссертационного совета
Федько О.С.
2
ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
Актуальность темы
Современные информационные системы обрабатывают всё возрастающие
объемы данных, которые требуют как высокой производительности компьютеров,
так и места для хранения информации. Для обеспечения сохранности данных
применяются различные способы, основанные, в первую очередь, на хранении с
избыточностью.
Модель регулируемого избыточного хранения данных представляет ( n, k ) схему, которая позволяет разбивать данные на n частей, а затем восстанавливать
исходные из любых k частей ( k  n) . Это компромисс между избыточностью
хранения и экономией памяти, позволяющий гибко регулировать границу между
ними. Преобразования в ( n, k ) -схеме основаны на вычислениях в конечных
полях Галуа. В существующих процессорах общего назначения отсутствуют
команды, выполняющие умножение в полях Галуа. Прямое программное
вычисление по правилам перемножения многочленов чрезвычайно медленно.
Использование таблиц умножения и деления является обычным способом
повышения производительности. Однако скорость работы подобных алгоритмов
также оставляет желать лучшего.
Избыточное хранения данных также используется для создание примитива
синхронизации информации между потоками. Примитивы синхронизации – это
ключевые блоки конструирования процесса и управления потоком. Они
обеспечивают защиту доступа к ресурсу, разрешая доступ только одного потока
за один раз. Традиционно при реализации примитива синхронизации данных
используют блокировки системной шины. Блокировки имеют ряд недостатков.
Одним из вариантов решения проблемы является создание примитива без
блокировок, основанного на регулируемой избыточности хранения данных.
3
Цели диссертационной работы
Целью
данной
работы
является
разработка
математической
модели
примитива синхронизации типа «снимок памяти» на основе алгоритма
избыточного хранения данных. Модель гарантирует целостность данных и
позволяет обходиться без блокировки системной шины данных. Кроме этого,
работа направлена на ускорение работы алгоритма избыточного хранения данных
на процессорах общего назначения как за счет ускорения вычислений в полях
Галуа, так и за счет изменения свойств самих алгоритмов.
Методы исследования
В
работе
использовались
методы
теории
алгоритмов,
системного
программирования и дискретной математики.
Предложенные модели реализованы в виде комплекса программ. Проведён
ряд вычислительных экспериментов с использованием этого комплекса.
Научная новизна работы
1. Предложена математическая модель примитива синхронизации типа
«снимок памяти», гарантирующего целостность данных. Модель включает
ограничения нового типа, разница между количеством операций читателя и
писателя не превышает заданного максимума. Преимуществом модели является
то, что её применение позволяет не использовать блокировки, которые обычно
используются в реализации примитивов синхронизации.
2. Разработаны новые алгоритмы регулируемого избыточного хранения
данных, уменьшающие количество операций умножения в
n*k
раз,
( n  k ) * ( k  1)
где n -количество частей, на которые разбиваются данные, k -количество частей,
необходимых для восстановления данных ( k  n) . Увеличение скорости работы
является существенным при сопоставимых параметрах n и k . При n  5 и k  3
ускорение составляет 3.75 раза. Алгоритмы основываются на преобразованиях
4
матрицы Вандермонда к упрощенному виду. При этом необходимые свойства
матрицы остаются неименными - любые n из k строк являются линейно
независимыми и могут образовывать базис в k-мерном пространстве.
3. Разработан алгоритм умножения нескольких элементов поля Галуа GF(24 )
с
использованием
параллельно
векторных
команд
производить
процессора.
серию
Алгоритм
позволяет
умножений
вида
( a0 , a1 ...a p )  b  (c0 , c1 ...c p ) , где a, b, c - элементы поля GF(24 ) , используя
последовательность
векторных
операций
процессора
общего
назначения
архитектуры x86 (SIMD-команды). В отличие от известных алгоритмов
количество необходимых процессорных инструкций не зависит от количества
умножаемых
элементов,
что
позволяет
значительно
увеличить
производительность ( n, k ) -схемы.
Практическая ценность работы
Предложенные модели и алгоритмы могут быть использованы на практике.
Модель типа «снимок памяти» обеспечивает решение проблемы «противоречивой
информации» без использования блокировок, и сокращение времени простоя
процессора.
Полученные в диссертационной работе результаты позволяют существенно
ускорить работу систем хранения данных, основанных на ( n, k ) - схеме.
Результаты исследования были реализованы в продуктах компании Acronis.
Апробация и публикации
По теме диссертации опубликовано 8 работ, в том числе 3 работы [1,2,8] в
журналах
из
списка
изданий,
рекомендованных
ВАК
РФ.
Результаты
диссертационного исследования докладывались, обсуждались и получили
одобрение специалистов на научных конференциях и семинарах:
5
 XLIX
Научная
конференция
Московского
физико-технического
института (Москва-Долгопрудный, 2006);
 XXXV международная молодежная научная конференция «Гагаринские
чтения» (Москва, МАТИ, 2009);
 XIII
всероссийская
научно-практическая
конференция
«Научное
творчество молодежи» (Кемеровский государственный университет,
2009).
Структура диссертации
Диссертация состоит из введения, пяти глав, заключения и списка
использованных источников, включающего 93 наименования. Общий объем
работы составляет 104 страницы.
Положения, выносимые на защиту
1.
Математическая модель примитива синхронизации типа «снимок памяти»
на основе избыточного хранения данных, гарантирующего целостность данных
при накладывании ограничения на темп доступа к памяти.
2.
Алгоритмы регулируемого избыточного хранения данных, существенно
уменьшающие количество операций умножения.
3.
Эффективный алгоритм параллельного умножения чисел в поле Галуа
GF(24 ) с использованием векторных команд.
КРАТКОЕ СОДЕРЖАНИЕ ДИССЕРТАЦИИ
Во
введении
обоснована
актуальность
диссертационной
работы,
сформулированы цель и задачи исследования, охарактеризована научная новизна
полученных результатов и их практическая значимость, описаны методы
исследования, приведены положения, выносимые на защиту.
6
В первой главе диссертации делается обзор существующих алгоритмов
синхронизации данных.
Обычной техникой синхронизации потоков при использовании общих
разделов памяти, для уверенности, что одновременно только один поток имеет
доступ к ресурсу, являются критические секции. Тем не менее, критические
секции сложно использовать для асинхронных систем. Если один поток висит или
задержался в выполнении в критической секции, то другой поток не может
продолжать работу. Возможными источниками задержек могут быть ошибки
обращения к отсутствующим страницам памяти, попытки обращения к
отсутствующим данным в кэшах процессора, проблемы планировщика задач и
даже, возможно, отказ процессора.
Вторая глава содержит описание известной модели избыточного хранения
данных, которое основывается на ( n, k ) - схеме. В модели исходные данные
представляются в виде набора частей (кусков), количество которых может
изменяться во времени, однако для существующих в системе частей всегда
выполняется условие, что из любых k частей можно полностью собрать исходные
данные (рисунок 1). Причем размер каждого куска ровно в k раз меньше
исходных данных.
Для повышения надежности в любой момент можно увеличить количество
частей до необходимого количества. Это позволяет динамически контролировать
избыточность данных в системе.
Модель позволяет находить компромисс между избыточностью хранения и
экономией свободного места, позволяющий гибко регулировать границу между
ними.
7
Исходные данные
Восстановленные данные
Рис. 1. Преобразования данных в ( n, k ) - схеме.
Соответствующий алгоритм основывается на использовании
матрицы Вандермонда, любые k
свойств
из n строк которой являются линейно
независимыми. Матрица Вандермонда размером n  k строится из n различных
порождающих
чисел
pi ,
последовательно
возводимых
в
степень:
aij  pij 1 , i  [1; n], j  [1; k ] . Исходный файл разбивается на последовательность ячеек
xi , собираемых в матрицу, и умножается слева на матрицу Вандермонда:
 y1 yn 1 y2 n 1

 y2 yn  2 y2 n  2


 yn 1 y2 n 1 y3n 1
 y y
 n 2 n y3n
 1 p1
 
 1 p2

 
 1 pn 1
 1 p
 
n
p1k 1 
 x x x
p2k 1   1 k 1 2 k 1
  x2 xk  2 x2 k  2

k 1
pn 1  
  xk x2 k x3k
pnk 1 






Каждая полученная строка (проекция) вместе с соответствующим ей
порождающим числом сохраняется в отдельном месте.
Для выполнения обратного преобразования требуются любые k проекций
вместе со значениями
pi , использовавшимися при их построении. Из
8
подмножества pi по правилу построения исходной матрицы M
матрица
составляется
M . Так как построенная матрица также является матрицей
Вандермонда, то все ее строки являются линейно независимыми. Поэтому можно
1
вычислить обратную к ней матрицу
получаются по формуле x j  M
 x1 xk 1 x2 k 1

 x2 xk  2 x2 k  2


 xk x2 k x3k
Скорость
 1 pa1
 
  1 pa2
 
 
 1 pak
разборки
с
M
. Тогда исходные векторы
xj ,
1
yj .
pak11 

pak21 


k 1 
pak 
1
 ya1 yn  a1 y2 n  a1

 ya2 yn  a2 y2 n  a2


 ya yn  a y 2 n  a
k
k
 k
использованием
данного







алгоритма
обратно
пропорциональна n * k , а сборки – k 2 . Зная скорость разборки можно получить
скорость сборки, умножив первую на n / k .
Работа ( n, k ) -схемы обеспечивается свойствами матрицы Вандермонда, но
ячейки не могут представляться обычными рациональными числами в силу того,
что их множество неограниченно, а в вычислительной технике применяются
конечные числа. Поэтому в качестве ячеек матриц используются элементы полей
Галуа.
Во третьей главе описывается предложенная автором модель «снимка
памяти» на основе избыточного хранения данных при наложении ограничений
темпа и порядка доступа.
В модели снимка памяти рассматривается ячейка памяти, состоящая из N
блоков, и поведение 2-х потоков – читателя и писателя. Подразумевается, что
один блок считывается и записывается атомарно , но всю ячейку памяти нельзя
прочитать или записать без использования блокировок.
9
Допустим, что писатель начал записывать и соответственно замещает
прежнее значение ячейки памяти. Когда читатель начнет считывание, он должен
иметь возможность все-таки прочитать старое значение, но до какого-то
критического количества блоков. Вариантом решения данной проблемы является
применение ( n, k ) -пороговой схемы. Основная идея заключается в том, что
даже если писатель «испортил» некоторое количество блоков, читатель все равно
будет иметь возможность прочитать «правильное» значение на основе остальных
блоков.
N
писатель
K
K
Рис. 2. Ячейка памяти
Задача писателя – записать все N элементов. Задача читателя – прочитать K
элементов.
Чтобы отличить прежние блоки от новых, каждый блок может содержать в
себе номер поколения блока. Номер должен быть уникальным для каждого
поколения снимка памяти. Наличие номера поколения позволяет преодолеть ABA
проблему. Даже если перезаписываемые данные повторяются, ячейка памяти
всегда будет содержать уникальную информацию о поколения.
Предполагается, что операции чтения и записи каждого блока являются
атомарными. То есть не может быть ситуации, когда один блок содержит версию
блока и значение блока, принадлежащие разным поколениям.
Математическая модель
«Старыми» блоками памяти называются блоки прошлого поколения,
«новые» блоки – записывают в данный момент времени.
10
Для удобства перенумеруем элементы памяти ( i =1,..,N)
Обозначим записанные блоки как wi , где
 1, i  й блок записан
wi  
0, i  й блок не записан
Вектор, элементами которого являются wi ( i =1,..,N), обозначим как W
 w1

W 
w
 N





Аналогичные обозначения введем для читателя
 1, i  й блок прочитан
ri  
0, i  й блок не прочитан
 r1 
 
R 
r 
 N
Пусть I - вектор в N–мерном пространстве, все элементы которого равны
единице
1
 
I  
1
 
Заметим, что скалярное произведение векторов (W * R)  iN1 ri wi означает
количество блоков, которые читатель смог прочитать, а писатель уже успел
перезаписать. Количество блоков, которые писатель успел перезаписать, но
читатель не успел считать, равно W * I  W * R . Количество же блоков, которое
читатель успел прочитать, но писатель не успел перезаписать, равно R * I W * R .
Необходимым условием, которое гарантирует считывание информации,
является W *( I  R)  N  K , то есть количества ячеек, которые еще не перезаписаны,
достаточно для считывания старого снимка.
11
При работе 2-х потоков с общими разделами памяти часто возникает
состояние гонки между писателем и читателем. Традиционно для этого
применяют синхронизационные объекты, которые используют блокировку
системной шины. Альтернативой блокировкам является введение внешнего
ограничения на темп доступа к блокам памяти, а именно WRS, то есть
разница между количеством операций читателя и писателя не превышает
заданного максимума S.
Рис. 3. Схематическое представление ограничения на темп доступа
C учетом того, что писатель может обогнать читателя на S блоков, для
обеспечения гарантированного считывания должно выполняться более сильное
условие N  K  W *( I  R)  S . Выполнение этого условия является критерием
перехода от прежнего значения ячейки к новому. Если условие не выполняется,
считываться будет новое значение ячейки.
В зависимости от порядка доступа к ячейке памяти и скорости считывания её
блоков, возможные разные ситуации считывания.
12
Порядок доступа к ячейке памяти
Кто пришел
первым
Писатель
Читатель
**
Читатель считывает
старое или новое
значение
новое
Скорость не
важна
старое
Кто быстрее
Читатель считывает
старое значение
Скорость не
важна
читатель
писатель
*
У читателя есть шанс
считать старое
значение
читатель сможет гарантированно
считать старое значение
Скорость не
важна
Рис. 4. Варианты доступа к ячейке (операции чтения и записи)
Все варианты, кроме отмеченного звездочкой на рисунке 4, являются
очевидными для доказательства того, что читатель сможет прочитать целостную
информацию.
Неочевидным является случай, когда писатель начал раньше читателя
работать с ячейкой и при этом считывает быстрее. Рассмотрим его подробнее.
В такой ситуации писатель может писать в блоки, которые читатель еще не
успел считать, и, следовательно, делать невозможным считывание блока. Для
предотвращения такой ситуации подбирается путь, по которому писатель
замещает старые значения таким образом, чтобы по возможности перезаписывать
уже считанные читателем блоки.
13
записанные
блоки
прочитанные
блоки
записанные
блоки
прочитанные
блоки
Рис 5. Различные варианты поведения писателя. а) записать на место
непрочитанной ячейки, б) записать в уже прочитанную ячейку
В работе доказывается
Лемма 1. При условии, что писатель начал раньше работать с ячейкой
памяти, лучшим путем следования потока записи является следование за
читателем.
Лемма утверждает, что лучшим является тот путь, при котором количество
ячеек, которое считал читатель, но писатель не успел перезаписать, не
уменьшается. Это условие можно формализовать с помощью неравенства
R *( I  W )  R0 *( I  W0 ) .
В работе доказываются теоремы
Теорема 1. Пусть есть два потока, называемые читателем и писателем.
Векторы считанных и записанных ячеек обозначим, соответственно, R и W .
Пусть темп доступа ограничен:
(W  W0 )* I  ( R  R0 )* I  S ,
(1)
путь записи писателя удовлетворяет условию:
R *( I  W )  R0 *( I  W0 ) ,
и пусть в начальный момент неперезаписанных блоков достаточно, чтобы
считывать старый снимок:
14
(2)
N  K  W0 *( I  R0 )  S .
(3)
W *( I  R)  N  K .
(4)
Тогда выполняется условие
Теорема позволяет утверждать, что если состояния писателя и читателя
удовлетворяют начальному условию (3), и в процессе работы будут выполняться
ограничения на темп доступа и ограничение на путь писателя, то читатель сможет
успешно считать необходимые K блоков.
Обратная теорема.
Теорема 2. При нарушении ограничения по темпу доступа, то есть
выполнении условия
(W  W0 )* I  ( R  R0 )* I  S ,
(5)
нельзя гарантировать W *( I  R)  N  K .
До сих пор мы рассматривали поведение только двух потоков, каждый из
которых записывал/прочитывал ячейку памяти и завершал работу. Но в реальных
задачах потоки по многу раз взаимодействуют с ячейкой. В исследуемой модели
нужно учесть ситуацию, когда поток писателя завершил запись ячейки раньше
читателя, а затем этот же или другой писатель снова начал запись, когда читатель
еще не успел закончить чтение. В данном случае, прочитанными могут оказаться
даже три поколения блоков.
Рис 6. Второй писатель начинает запись до окончания чтения.
15
Данную ситуацию можно свести к ветви, обозначенной ** на рисунке 4. В
ней гарантировано будет выполняться условие (3). Если определить путь
следования писателя (2) и ограничить темп доступа с поправкой на то, что
количество записанных ячеек должно учитывать изменения предыдущего потока,
то есть
W1  W2  R  S ,
то все условия теоремы 1 будут выполнены.
Согласно построенной модели читатель закончит чтение, как только
прочитает K блоков одного поколения. Критерием перехода от старого поколения
к новому является выполнение условия N  K  W *( I  R)  S . При выполнении
этого условия читатель начнет считывать новое значение, в противном случае –
старое. Таким образом, можно однозначно считать записанное значение. Всегда
доступно или прежнее, или новое значение.
В четвертой главе рассматриваются известные алгоритмы вычислений в
полях Галуа.
Вычисления в полях Галуа которых достаточно трудоемки. Рассмотрим поле
GF(2n ) , представимые в виде многочленов n-1 степени с коэффициентами из поля
GF(2) . Элементы этого поля можно описывать
байтами, где каждый разряд
задает коэффициент при соответствующей степени. В таком случае сложение
выполняется операцией «исключающее ИЛИ», а умножение – по правилам
перемножения
многочленов
по
модулю
какого-нибудь
неприводимого
многочлена n степени.
В существующих процессорах общего назначения отсутствуют команды,
выполняющие умножение в полях Галуа. Программное вычисление «в лоб» по
правилам перемножения многочленов чрезвычайно медленно. Общепринятым
способом преодоления этого ограничения является использование таблиц
умножения
и
деления,
содержащих
заранее
вычисленные
значения
соответствующих операций. Однако скорость работы подобных алгоритмов также
16
оставляет желать лучшего. В главе делается обзор различных изветных способов
увеличения скорости операции умножения.
В пятой главе описываются предложенные автором способы увеличения
скорости преобразований по ( n, k ) -схеме. Ускорение достигается как за счет
ускорения вычислений в полях Галуа, так и за счет изменения свойств самих
алгоритмов.
«Алгоритмическим»
упрощение
матрицы
способом
ускорения
Вандермонда,
является
которое
элементарными преобразованиями матрицы M
предварительное
заключается
к матрице
M
вида
в
сведении
E
K
, где
E
–
единичная матрица:
 1

 0


M  0
a
 k 1,1

 a
 n ,1
0
1
0
ak 1, 2
an , 2
0 

0 


...
1 
ak 1,k 


an , k 
Полученная матрица M обладает теми же необходимыми для реализации
( n, k ) -схемы свойствами, что и исходная M
(любые n из k строк являются
линейно независимыми и могут образовать базис в k -мерном пространстве).
В исходном алгоритме для вычисления Y  M X требовалось k * n операций
умножения. После преобразования матрицы M
к
M
, результат умножения
можно представить как вектор, состоящий из верхнего вектора Y   E X
и
Y  E X
 y1 




 y 
Y
нижнего вектора Y   K X , Y     k  . Так как преобразованные с помощью
Y   y1 




  
 yn  k 
17
единичной матрицы данные совпадают с исходными, остается вычислить только
нижнюю часть вектора Y  , и
поэтому количество требуемых операций
умножения уменьшается до k *(n  k ) .
Умножение на единичную матрицу фактически представляет собой копирование,
но в силу выбранного способа размещения исходных данных и проекций,
сопровождается переупорядочением. Для того чтобы избежать вызываемого этим
замедления, порядок следования исходных данных изменяется:
y2
y3
 y1

ym  2
ym  3
 ym1


 ym( n 1)1 ym( n 1) 2 ym( n 1)3
 y
 mn 1 ymn  2 ymn 3
 1 p1
 
 1 p2

 
 1 pn 1
 1 p
 
n
p1k 1 
x2 x3
 x
p2k 1   1
  xm1 xm 2 xm3

pnk11  
  xmk 1 xmk  2 xmk 3
pnk 1 






Дополнительное ускорение можно получить, если использовать матрицу с
единичным столбцом.
Свойство независимости строк матрицы сохраняется, если любую строку
матрицы умножить на произвольное число. Поэтому ее можно упростить,
преобразовав все коэффициенты нижней части по формуле:
bi , j  ai , j / a1, j ,
k  1  i  n,1  j  k .
Таким образом, матрица принимает вид
0
1

1
0


0
0
1 b
k 1, 2


1 b
n ,2

0 

0 


...
1 
bk 1, k 


bn , k  ,
а количество операций умножений уменьшается на k .
18
Суммарное количество умножений уменьшается в
n*k
раз.
( n  k ) * ( k  1)
Экспериментальные результаты в сравнении с первоначальными данными и
теоретическими результатами изображены на рисунке 7.
Рис 7. Скорости разборки файлов при использовании
«упрощенной» матрицы преобразования, МБ/сек.
Скорость сборки с использованием «упрощенной» матрицы зависит от
выбираемых проекций. Это происходит из-за того, что число строк, выписанных
из единичной матрицы, в M и M
1
совпадает, поэтому данные либо просто
копируются, либо преобразуются с использованием операций в полях Галуа
(рисунок 8).
Рис 8. Скорости работы сборки файлов при использовании
«упрощенной» матрицы преобразования при ( n, k )=(10,5) ,
МБ/сек.
Вычисления в полях Галуа можно ускорить за счет использования операций в
GF(24 ) .
19
В этом случае операция умножения становится выполнимой напрямую через
последовательность элементарных арифметических операций (имеющихся и в
SIMD-командах), и необходимость использования таблицы умножения отпадает.
Эти вычисления осуществляются следующим образом.
Элементы поля GF(24 ) можно представить в виде многочленов 3-й степени:
a( x )  a3 x3  a2 x 2  a1 x  a0
b( x )  b3 x3  b2 x 2  b1 x  b0
Результат их перемножения:
c( x )  a( x )b( x )mod p( x ) ,
4
где p( x ) – любой неприводимый многочлен 4-й степени, например, x  x  1 .
В таком случае
c( x )  c x 3  c x 2  cx c  , где
c0  ( a0  b0 )  ( a3  b1 )  ( a2  b2 )  ( a1  b3 )
c0
c1  ( a1  b0 )  ( a0  b1 )  ( a3  b2 )  ( a2  b3 )  c0
c1
c2  ( a2  b0 )  ( a1  b1 )  ( a0  b2 )  ( a3  b3 )  c1
c2
c3  ( a3  b0 )  ( a2  b1 )  ( a1  b2 )  ( a0  b3 )  c2 ,
При неизменном b( x ) можно представить результат в матричной форме:
 c0   a0
  
 c1   a1
 c2   a2
 
 c3   a3
  
 c0   a0
  
  
a3
a2
a0
a3
a1
a0
a2
a1
a3
a2
a1 
0





a2   b0 
 ( a3  b1 )  ( a2  b2 )  ( a1  b3 ) 
a3   b1  

( a3  b2 )  ( a2  b3 )
 

a0   b  
(
a

b
)
3
3

2
   

0
a1   b3  







Теперь каждый столбец матрицы aij
помещается в отдельный регистр и
целиком умножается на одну ячейку b j . Часть произведения используется для
20
вычисления правого столбца (с использованием циклического сдвига и
маскирования логическими операциями), складывается с ним и добавляется к
предыдущему результату. После повторения этих действий для всех столбцов
матрицы aij
получается столбец c j
с результатом. Количество необходимых
инструкций не зависит от количества умножаемых элементов.
Используя в качестве ячейки памяти SSE-регистры (128 разрядов),
одновременно можно умножать 128/4=32 числа.
Экспериментальные результаты изображены на рисунке 9.
Рис 9. Скорости работы разборки файлов в поле GF(24 ) в SSE
регистрах, МБ/сек.
В заключении изложены основные результаты диссертации.
ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ
1. Разработана математическая модель примитива синхронизации типа «снимок
памяти» на основе избыточного хранения данных, гарантирующего
целостность данных при накладывании ограничения на темп доступа к
памяти.
21
2. Предложены алгоритмы регулируемого избыточного хранения данных,
существенно уменьшающие количество операций умножения.
3. Предложен эффективный алгоритм параллельного умножения чисел в поле
Галуа GF(24 ) с использованием векторных команд.
Список публикаций автора по теме диссертации
1.
Пименов
В.М.,
Соколов
Е.В.
Анализ
способов
увеличения
производительности алгоритмов для отказоустойчивых систем хранения данных //
Современные проблемы фундаментальных и прикладных наук. Часть VII.
Управление и прикладная математика: Труды XLIX научной конференции. – М. –
Долгопрудный: МФТИ, 2006. – С.75–76.
2. Пименов В.М., Соколов Е.В., Кобец А.Л. Способы увеличения
производительности алгоритмов для отказоустойчивых систем хранения данных //
Вестник НГУ. Серия: Информационные технологии –2007. Т. 5, вып. 1. – С. 32-39.
3. Кобец А.Л., Луковников В.В., Пименов В.М., Соколов Е. В. Оценка
точности группового наложенного управления ресурсами операционной системы
для дискового ввода / вывода. //Вестник НГУ. Серия: Информационные
технологии – 2007, Т. 5, вып. 1 – С. 28-31.
4. Соколов Е.В., Кудрин М.Ю. Применение (n, k)-схемы для реализации
алгоритмов снэпшота памяти.
// XXXV Гагаринские чтения. Научные труды
Международной молодежной научной конференции в 8-ми томах. – Москва, 2009.
– Т. 4 - С. 155.
5. Соколов Е.В., Кудрин М.Ю. Алгоритмы снэпшота, основанные на
ограничении темпа доступа к памяти // Научное творчество молодежи.
Материалы XIII Всероссийской научно-практической конференции.– Кемерово:
Кемеровский гос. универ-т, 2009. – С. 125.
22
6. Кудрин М.Ю., Соколов Е.В. Выявление состояний гонки с помощью
аппарата атрибутных грамматик // Научное творчество молодежи. Материалы XIII
Всероссийской научно-практической конференции. – Кемерово: Кемеровский гос.
универ-т, 2009. – С. 112.
7. Соколов Е.В., Кудрин М.Ю. Модель организации снимка памяти на основе
nk-схемы при наложении ограничения типа темпа доступа // Модели и методы
обработки информации: Сб. ст. / Моск. физ.-тех. ин-т. – М., 2009 – С. 197-205.
8. Соколов Е.В., Кудрин М.Ю., Тормасов А. Г. Организация снимка памяти
на основе nk-схемы при
//Научно-технические
наложении ограничений
ведомости
СПбПУ,
темпа и порядка доступа
серия
«Информатика,
Телекоммуникации, Управление» – СПб.: Изд-во СПбПУ, 2009–№4 – С. 131-136.
В работах с соавторами лично соискателем выполнено следующее:
В [1, 2]- алгоритмы увеличения производительности (n,k)-схемы; [4-5,7-8]модель снимка памяти на основе избыточного хранения данных; [3]-критерии
качества планирования ресурсов для групп потоков на макроуровне; [6] –
алгоритм поиска состояний гонки.
23
СОКОЛОВ Евгений Владимирович
Моделирование синхронизации доступа к данным на
основе избыточного хранения
Автореферат
Подписано в печать 12.10.2009. Формат 60х90 1/16.
Усл. печ. л. 1,0. Тираж 80 экз. Заказ №
Государственное образовательное учреждение
высшего профессионального образования
«Московский физико-технический институт (государственный университет)»
Отдел автоматизированных издательских систем «ФИЗТЕХ-ПОЛИГРАФ»
141700, Моск. обл., г. Долгопрудный, Институтский пер., 9
24
Related documents
Download