FPGA

LLVM

今更ですが LLVM を調べ中です。以前、自作のシェーダー作りたいなぁ、的なことを書きましたが、コンパイラどうしようかというのが一番の悩みでした。なんとなくな勉強はしつつもコンパイラは、作業量自体が多そうで手を出すのに二の足を踏んでいました...
プログラミング

Pythonと深層学習と

まったくもって今更ですが、世の中の流行から無視できなくなってきた深層学習を少し勉強して見ようと環境構築中です。深層学習のおかげで、GPUはFP16の復活などこちらを意識したアーキテクチャの変化が起こりつつ、FPGAへの適用も各所で見かけるよ...
FPGA

エンコーダ回路

ISE14.7でZybo設定(XCZ010-1CLG400) でエンコーダを作る実験をして見ました。【パターン1】まず同時に1つしかビットが立たない前提で、よくある悪いか書き方でcase (data)8'b0000_0001: sel <=...
活動紹介

続・テクスチャキャッシュ

以前から作成中のテクスチャキャッシュの改善に取り組んでいます。 以前との大きな修正点として、L1とL2の間のリングバスの数をL2のユニット1つにつき、リング1つとして多重化しています。 L1の帯域に見合った幅を確保するのに、単純にバス幅を広...
FPGA

バイリニア補間するユニット

バイリニア補間するユニットを作って、以前作成したテクスチャキャッシュと統合して2Dサンプラーユニットを作って見ました。 各バイリニアのユニットは、4サイクルかけて1ピクセル処理できるようにしており、それを8並列で結合して合成して見ました。 ...
FPGA

除算の検討(回復法と非回復法)

引き続きなぜか除算に迷走しています(苦笑)。除算にはいろいろなやり方がありますが、今回はシェーダーとかのプログラマブルロジックではなく、固定グラフィックスパイプライン内のパースペクティブ補正に組み込むことを前提にスループット1の整数除算器を...
FPGA

XILINXのDSP推論

普段RTLで演算を書くときは、合成器の推論に任せっぱなしだったのですが、前回の延長で、4サイクルでバイリニアの積和を考えている途中で、ちょっと気になることがあって、少し実験をしてみました。 実際、多くのケースでDSP48E1をかなりうまく推...
FPGA

テクスチャキャッシュを試作してみました

久しぶりに以前の続きです。下記のようなアーキテクチャでGPU用のテクスチャキャッシュを試作してみました。この上にバイリニア補間を行うSamplerが乗っかればそれっぽくなるはずです。軽量なリングバスを実験的に入れてみましたので各ユニットのサ...
FPGA

Xilinxの分散メモリを見直してみた

GPUを検討しつつ、本丸のシェーダーになかなか行かずにテクスチャキャッシュを検討中であったりします。キャッシュといえば、メインのキャッシュメモリとそれを管理するTAGメモリで構成されるわけですが、今回はTAGメモリのお話です。メインのキャッ...
FPGA

バイリニア補間ユニットの並列数について考える

先日作った射影変換回路では、ニアレストネイバーでの処理でした。せっかく浮動小数点コアまで作って、座標は小数精度で計算しているのだから、バイリニア補間ぐらいやりたい、と思ってしまいます。ここで、1画素生成するのにテクスチャは4画素読み込む必要...