アダルト・ヴァイオリン May the force be with you..

2008年6月30日

SN/Xパイプライン化 その2

Filed under: Weblog — い~ぐる @ 2:22 PM

パルテノン研究会のASICデザインコンテストの発表が土曜日に行われた。
このコンテストの規定課題は初心者向き課題としてSN/Xの例題パッケージをベースとした課題を出している。

参加者はかなり高度なことを行うようになったので、前回のパイプラインパッチに続き、多少の情報追加をブログベースで行っていく。

今回は、前回のパイプラインよりも、パイプラインストール条件をもう少し厳密にチェックするバージョンのSN/Xパッチファイルを用意した。(前回のパッチは、ロード命令がきたら無条件でストールさせるというかなり乱暴なものだったのだ)
本来は、ロード命令のターゲットを使わない演算はとめる必要がないのだが、もうひとつ、考慮すべきところとして、リソース競合がある。ロードはレジスタ書込みがR型命令に比べ1クロック遅いので、後続命令のレジスタ書込みがロードのレジスタ書込みとぶつかるケースがあるのだ。

SN/X 1.4.2版から1.4.2p1版へのパッチ

対策としては、ぶつからないケースだけを実行するというのもありだが、Eステージの後ろでレジスタに書き込まない命令は少数なので、汎用レジスタを2R2W型にすることで、競合ケースを解消でき、もっと性能向上する。

もちろん、2Wのレジスタポートは多少性能に悪影響が与えられるので、トレードオフを考えて採否を決めるべきである。

本質的なデータハザード(ロード命令の結果を本当に必要とする演算命令によるストール)は避けようがないので、これらの対策を行うと、ハードウェア上の性能向上策としては、コントロールハザードの低減に目を向けるのが正しい。

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress