QPU: DMA書き込みの性能およびwaitの特性

概要

DMA書き込みを,VDWを用いてVPMからメモリに書き込むこと, つまりvpm_st_addrレジスタに書き込むメモリのアドレスを書き込むことと定義する. また,DMA書き込みのwaitを,vpm_st_waitレジスタを読むことと定義する. DMA書き込みのwaitでストールする命令数を$I_{wait}$とする.

VPMのDMA書き込みの性能は,最大約$1.12$GB/sだった.

また,DMA書き込みのwaitについて,DMA書き込み発行とwait発行の間の命令数と $I_{wait}$の合計は, 書き込むメモリの縦,横のサイズの組み合わせに関して一定になることがわかった. つまり,VPMを用いた特定の縦,横のサイズのメモリの書き込みは, 必ずメモリのサイズに応じた命令数待たなければ完了しないことがわかった. ただし,この合計値は書き込むメモリのサイズとは関係しないことが予想される.

実験環境

実験環境として Raspberry Pi 2 Model B を使用した. QPUの$1$コアは $250 / 4 = 62.5$ MHz で動作する.

プログラムの動作

$units$,$depth$ を $1 \le units \le 128$ かつ $1 \le depth \le 16$ とし,変化させた. $1$回のDMA書き込みで$units \times depth \times (32 / 8)$バイトを書き込んだ.

DMA書き込み発行とwait発行の間で, branch命令とALU命令を用いて, メモリ入出力操作とは関係ない命令を$ndelay$個実行させた. これは最大でも8命令分のスペースしかとらないので, QV52とは異なり,$ndelay$を$512$程度以上 に設定しても,命令キャッシュが溢れることはない.

実行時間測定の誤差を抑えるため, DMA書き込み発行とwait発行は$1234567$回繰り返した.

プログラムは$5$回実行し,中央値を測定値とした.

結果と考察

$units = 1, 16, 64, 128$ における DMA書き込みのスループットをそれぞれFig. 1-1Fig. 1-2Fig. 1-3Fig. 1-4 に示す. 最大で$units = 128$,$depth = 16$において約$1.12$GB/sの性能が出た. しかし,$units = 64, 128$ に大きな差はみられなかった.

units = 1 におけるスループット
Fig. 1-1: $units = 1$におけるスループット

units = 16 におけるスループット
Fig. 1-2: $units = 16$におけるスループット

units = 64 におけるスループット
Fig. 1-3: $units = 64$におけるスループット

units = 128 におけるスループット
Fig. 1-4: $units = 128$におけるスループット

$units = 1, 16, 64, 128$ における$ndelay$と $I_{wait}$の関係をそれぞれFig. 2-1Fig. 2-2Fig. 2-3Fig. 2-4に示す. 多少のズレがあるものの,$ndelay$と$I_{wait}$は傾き$-1$の直線関係にあることがわかる (この表現は最悪なので直したい). つまり,DMA書き込みのwaitについて,DMA書き込み発行とwait発行の間の命令数と $I_{wait}$の合計は,$units$と$depth$の組み合わせに関して 一定になることがわかる. ここで,例えば$units = 16$,$depth = 4$の場合 (Fig. 2-2) と $units = 64$,$depth = 1$の場合 (Fig. 2-3) では 書き込むメモリのサイズは同じであるが, $y$切片の値が異なるので, DMA書き込み発行とwait発行の間の命令数と$I_{wait}$の合計は, 書き込むメモリのサイズには関係しないことが予想できる.

units = 1 におけるndelayとIwaitの関係
Fig. 2-1: $units = 1$ における$ndelay$と$I_{wait}$の関係

units = 16 におけるndelayとIwaitの関係
Fig. 2-2: $units = 16$ における$ndelay$と$I_{wait}$の関係

units = 64 におけるndelayとIwaitの関係
Fig. 2-3: $units = 64$ における$ndelay$と$I_{wait}$の関係

units = 128 におけるndelayとIwaitの関係
Fig. 2-4: $units = 128$ における$ndelay$と$I_{wait}$の関係

Copyright notice

© 2016 Yukimasa Sugizaki. All rights reserved.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.