QPU: 連続した uniform_read の間に nop を入れる


概要

16, 32, 64 連続の uniform_read では,間に $7$ 個以上の nop があると命令実行効率がほぼ $1$ になった. しかし,nop の数が多くなると命令キャッシュミスによる性能低下がみられた.


実験環境

実験環境として Raspberry Pi 2 Model B を使用した. オーバークロックを施していないため, QPU は $250$ MHz で動作するとした.


プログラムの流れ

連続した $n$ 個の uniform_read の間に nop を $ndelay$ 個入れる. 次の uniform_read の連続まで,nop を $4$ 回実行する (branch のため). これを $300$ 回繰り返す.


結果

Fig. 1 に命令実行効率を示す. $n=16$, $n=32$ では $ndelay \ge 7$ のとき命令実行効率がほぼ $1$ になった. $n=64$ では $ndelay=0$ のとき,命令実行効率が約 $0.6$ まで下がった. また,$n=32$ では $ndelay \ge 15$,$n=64$ では $ndelay \ge 7$ において, 命令キャッシュ溢れによる命令実行効率低下がみられた.

Fig. 1: 命令実行効率
Fig. 1: 命令実行効率


© 2016 Yukimasa Sugizaki. All rights reserved.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.