BC/NW 2016 № 1 (28):
2.4
ПРИНЦИПЫ
ОРГАНИЗАЦИИ ОБРАБОТКИ ДАННЫХ В ПРИКЛАДНЫХ ПРОГРАММАХ С ЦЕЛЬЮ ЭФФЕКТИВНОГО
ИСПОЛЬЗОВАНИЯ СТРУКТУРНО-ФУНКЦИОНАЛЬНЫХ ОСОБЕННОСТЕЙ ПАМЯТИ ВЫЧИСЛИТЕЛЬНЫХ
СИСТЕМ
Тивиков
В.С., Филатов А.В.
Многие
разработчики при создании алгоритмов своих прикладных программ заботятся в
основном только о выполнении их логических и функциональных операций Меньше
уделяют внимания эффективному использованию этими программами структурных и
функциональных особенностей вычислительных систем. В частности, при разработке
алгоритмов обработки данных в прикладных программах важно учитывать структуру и
параметры иерархии памяти вычислительной системы, а также системные алгоритмы
ее функционирования [1, 2]. В зависимости от того, какой вариант алгоритма
будет выбран для реализации в программе, время выполнения этой программы может
значительно отличаться.
Особо актуальна
данная задача при осуществлении обработки больших объемов данных, располагаемых
на разных уровнях иерархии памяти с разной емкостью и временем доступа. Удачно
согласовав алгоритм обработки данных в программе с системным алгоритмом
размещения данных в иерархии памяти, можно добиться существенного уменьшения
времени выполнения программы.
Для написания
эффективного кода программисты должны знать:
1) методы обхода
кэша центрального процессора (ЦП);
2) методы
оптимизации доступа к кэшу данных ЦП;
3) методы
оптимизации доступа к кэшу инструкций ЦП;
4) способы
предварительной загрузки данных в кэш ЦП;
5) способы
выравнивания данных в памяти вычислительных систем;
6) порядок
обхода данных в памяти вычислительных систем.
Понимая «узкие»
места в памяти современных вычислительных систем
и возможности их
обхода в алгоритмах обработки данных, разработчик
сможет писать
эффективный код.
Литература
1.
Ulrich Drepper. What Every Programmer Should Know About Memory,
2007.
2. Jonathan Rentzsch. Data alignment:
Straighten up and fly right, 2005