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