 | Глава 11. Двойная буферизация в ALF
При пересылке данных параллельно с вычислениями двойная буферизация может уменьшить время, затрачиваемое на пересылку, благодаря совмещению ее во времени с процессом вычислений. Реализация среды исполнения ALF в архитектуре Cell BE поддерживает три различных схемы двойной буферизации.
Рис. 9. Двойная буферизация ALF
Рис. 9 иллюстрирует работу механизма двойной буферизации в ALF. Среда исполнения ALF оценивает характеристики каждого рабочего блока и выбирает наиболее эффективную схему буферизации. В каждой точке принятия решения выполняется проверка условий и выбор соответствующего им типа буферизации. Вначале среда исполнения проверяет, использует ли рабочий блок совмещенный буфер ввода-вывода. Если нет, то выполняется проверка на соответствие условиям для схемы с четырьмя буферами, затем с тремя. Если не соблюдаются условия ни для одной схемы, то двойная буферизация не используется. Если же рабочий блок использует совмещенный буфер ввода-вывода, среда исполнения ALF вначале проверяет соответствие условиям для схемы совмещенного буфера; если такового не обнаруживается, то двойная буферизация не используется. В данных примерах сделаны следующие допущения:
- Все SPU имеют 256 Кбайт локальной памяти.
- 16 Кбайт памяти занято кодом и данными периода исполнения, включая стек, буфер контекста задания и список пересылки данных. При этом 240 Кбайт остаются свободными для буферов рабочего блока.
- Пересылка данных в акселератор либо из него занимает одну единицу времени, и каждое вычисление занимает две единицы времени.
- Размер входного буфера рабочего блока представлен как
in_size, размер выходного буфера как out_size, размер совмещенного буфера ввода-вывода — как overlap_size.
- Предстоит обработать три порции входных данных в три приема, что даст на выходе три порции выходных данных.
Схемы буферизации
Условия и дерево решений описаны подробнее в нижеследующих примерах.
- Схема с четырьмя буферами. В данном случае используются для входных данных и два для выходных. Использование буферов проиллюстрировано в секции «Схема с четырьмя буферами» рис. 9.
- Условия выполняются: среда исполнения ALF выбирает схему с четырьмя буферами, если рабочий блок не использует совещенного буфера ввода-вывода, а размеры буферов удовлетворяют следующему условию:
2*(in_size + out_size) <= 240 Кбайт.
- Условия не выполняются: если размеры буферов не удовлетворяют указанному выше условию, среда исполнения ALF проверит их соответствие условию для схемы с тремя буферами.
- Схема с тремя буферами. При этом буфер делится на три одинаковых буфера размером
max(in_size, out_size). В данной схеме буферы используются как для ввода, так и для вывода, как показано в секции «Схема с тремя буферами» рис. 9 на стр. 35. Эта схема требует завершения пересылки выходных данных, полученных на предыдущем этапе, до того как начнется пересылка входных данных следующего рабочего блока, поэтому операции прямого доступа к памяти должны быть выполнены по порядку. Преимущество этого подхода заключается в том, что если входной и выходной буферы конкретного рабочего блока близки по размеру, итоговый эффективный размер буфера может составить 2*240/3 = 160 Кбайт.
- Условия выполняются: среда исполнения ALF выбирает схему с тремя буферами в том случае, если рабочий блок не использует совмещенного буфера ввода-вывода и размеры буферов отвечают следующему условию:
3*max(in_size, out_size) <= 240 Кбайт.
- Условия не выполняются: если условия не выполняются, используется схема с одним буфером.
- Схема с совмещенным буфером ввода-вывода. В данном случае два непрерывных буфера расположены, как показано в секции «Схема с совмещенным буфером ввода-вывода» рисунка 9 на стр. 35. Эта схема требует завершения пересылки выходных данных, полученных на предыдущем этапе, до того как начнется пересылка входных данных следующего рабочего блока.
- Условия выполняются: среда исполнения ALF выбирает схему с совмещенным буфером ввода-вывода, если рабочий блок использует такой буфер и размеры буферов отвечают следующему условию:
2*(in_size + overlap_size + out_size) <= 240 Кбайт.
- Условия не выполняются: если условия не выполняются, используется схема с одним буфером.
- Схема с одним буфером: если не подходит ни один из перечисленных выше шаблонов, двойная буферизация не используется, однако при этом не гарантируется оптимальная производительность.
При создании буферов и разделов данных следует учитывать условия, необходимые для применения схем буферизации. Если размеры буферов отвечают условиям, необходимым для двойной буферизации, это может дать увеличение производительности, однако двойная буферизация не во всех случаях удваивает производительность. Когда время, требуемое на пересылку данных, значительно отличается от времени вычислений, возникают ограничения либо скорости ввода-вывода, либо скорости вычислений. В этом случае увеличение размера буферов, для увеличения объема данных, обрабатываемых за один прием, может повысить производительность даже при использовании единственного буфера.
|  |