Ryuz's tech blog

FPGAなどの技術ブログ

計算機科学から見たリアルタイム・ハイスピードビジョン

はじめに 先日、下記のくだりを X で呟いたところ、思いのほかのプチバズり状態となり驚きました。 動き探索などが良い例で、1フレームで100ピクセル移動されると、100x100で10000ピクセルの範囲を検索しないといけないが、フレームレートを100倍にすると、1…

LUT-Network を振り返る

はじめに BinaryBrain の最初のコミット日を調べてみると 2018年8月1日でした。 github.com LUT-Network という名前のネットワークとその学習環境である BinaryBrain の開発を始めてから 6 年以上が経ったことになります。 世の中の AI が LLMなどで盛り上が…

パソコンとIoTとを考えてみる

はじめに 一言で「ソフトウェア開発」と言っても非常に手広いと思います。 特に、当サイトでは常々「FPGA はソフトウェアだ」と言っておりますとおり、ソフトウェアの範疇は非常に広いです。 一方で、「ソフトウェア開発」といったときに、やはりパソコンや…

なぜUSBタイプのAIアクセラレータは進化しないのか?(妄想)

はじめに まだまだ現役で利用されているシーンも多いかとは思いますが、下記のようなUSBに接続するタイプのアクセラレータが 2018年~2019年ごろ発売され始めて以降、特に進化したバージョンが現れてニュースを騒がせたりしていない気がします(私が知らない…

FPGAプログラミングとは

はじめに 今更と言うところはあるのですが、FPGAプログラミングを知らない人に説明する機会も増えてきたので少し記事にしておきます。 FPGA とは 昔電子工作したときに撮影した写真が出てきたので張っておきますが、いわゆるこんなやつです。 こんなやつです…

MN-Coreを素人考察してみる

はじめに 先般 MN-Ccore Challenge なるものが開催され、私もスキマ時間に気分転換的にちょこちょこ挑戦していたのですが(本業関係者への言い訳)、とても面白いアーキテクチャだなと思いました(順位はまあその力及ばず微妙な感じでしたが)。 普段 FPGAプログ…

データ並列とパイプライン並列

はじめに FPGAなどでデータ処理をする場合、その並列性を活かして高性能な処理をするという事はしばし求められることです。 その際にしばし使われるデータ並列とパイプライン並列を整理しておきたいと思います。 データ並列と言うと、AVX-2 のような SIMD(Si…

(妄想) 情報エントロピー増大の法則?

情報量にエントロピーという概念があります。 エントロピーと言うと物理学で習うエントロピー増大の法則を思い浮かべるわけですが、そちらのエントロピーには時間が経過するとエントロピーが増大するというエントロピー増大の法則があります。 ここで、情報…

(雑記) 技術者のスキルのお値段

なんとなく、駄文を書いてみます。 技術者という職業を突き詰めていくと、はその技術力を売ってその対価としてお賃金を頂く職業なわけです。 ただ見渡す限り、メンバーシップ型雇用が主体のわが国では、純粋な職業技術者として人を雇っているところはそれほ…

クロスバースイッチの規模考察

はじめに 今日は、最近のプロセッサをウォッチしている中での素人の妄想を書いてみます。 プロセッサの性能と規模の法則としてポラックの法則というものがあります。 これは簡単に言うとプロセッサの性能を2倍、3倍、4倍にするには、プロセッサに適用する…

RISC-Vもどきのバレルプロセッサ作ってみた

はじめに だいぶ前に、RISC-V もどきの最小セットを作って遊んでいましたが、今回はその延長でもう少し遊んでみました。 動機としては レジスタファイルの構成に LUTRAM や BlockRAM を使うのだから、レジスタ32個だけじゃもったいない 複数スレッド動かすな…

K26SoM のデータ帯域を調べてみる

はじめに KV260 には K26 SoMが搭載されています。実際には KV260 にはコネクタが片方しかついてないとかいろいろあるのですが、一旦そこは置いておいて、K26 SoM モジュールをデータ帯域観点で見てみたいと思います。 以前にリアルタイムコンピューティング…

GPGPUのメモリアーキテクチャついて考えてみる

GDDR について もともとGPGPUはGPUであり、GPUはグラフィックスボードであります。 グラフィックスボードは、DVIとかHDMIとかDisplayPort を備え、60fps などで毎フレーム画像を生成&出力するものですが、そうするとゲームなどではその fps に対して、例え…

KV260(Zynq UltraScale+ MPSoC)のバス帯域を調べてみる

はじめに 過去に PS-PL間の通信帯域やレイテンシを実測して実験していましたが、少しドキュメントから読み取れる仕様についても整理しておきたいと思います。 独自の調査であり、正しく読み取れていない可能性はあるので、誤りはあるかもしれないことを予め…

KV260 での APUからのキャッシュ有効でのPLアクセス

はじめに 筆者は過去に幾つかこの手のパフォーマンス検証を行い、下記のブログを書きました。 Ultra96V2(ZynqMP) のPS⇔PL間性能計測 - Ryuz's tech blog KV260 で PS から PL へのシングルアクセス速度を測ってみる 基本的には MPU を自由に弄りやすい、RPU(…

1bit計算機についての妄想

はじめに 先日、Youtube でこんな動画を見かけて、そのなかで加算器などの演算器がいくつか出てきました。 youtu.be 計算機黎明期の演算資源が貴重だった時代のお話と思いますが、今のテクノロジーでやろうとしたらどうなるんだろう? という妄想をしてみた…

スキッドバッファ再考

はじめに 私が FPGA に興味を持ち Verilog を勉強し始めたころこんなブログを書いていました。 遥か昔、「モジュールは全部FF出ししないとだめよ」という事を言っていた先輩の言葉を真に受けて、何とかして ready も FF 出ししようと、無い知恵を絞って作っ…

非ノイマン型について再考してみる

はじめに なんとなくお散歩中に考えていたことを先ほどとめどなく X にツイートしていたのですが、少しまとめておきたく、久々にブログに書いておこうと思います。 私が今Xの固定ツイートにしている下記のデモ試作のアーキテクチャを題材に、非ノイマン型に…

Xilinx FPGA の FF まわり

はじめに FPGA は各社しばし同期リセット推奨だったと記憶していますが、FF周にはいろいろ機能がついてます。 KV260 (Zynq UltraScale+ MPSoC) 用の合成結果の中身を覗いてみたのでメモです。 普通に書いてみる 私が普段よく書く書き方が下記のような感じで…

Verilog の演算時の幅拡張でしくじった話

なにが起きたのか 下記のようなシーンで何やら Verilator が Operator NOT expects 5 bits on the LHS, but LHS's VARREF 'b' generates 4 bits. というワーニングを出してきた。 logic [3:0] a; logic [3:0] b; logic [4:0] c; assign c = a + ~b; 4bit同士…

転職して一ヶ月が経ったので前職を振り返ってみます

はじめに 2024年3月末日を持って23年半ほど勤めた会社を退職して転職を致しました。 今回で転職は二度目になるのですが、余りに長くいたのでいろいろな思いもあり、ちょうどGWで振り返るにも丁度よいタイミングですので、少し総括しておきたいかなと思います…

最新FPGA の Top500 的な性能はどうなのか?

はじめに 最近久々に FPGA 使う仕事に復帰したので、これまた久々に最新のFPGAの性能を調べてみたいと思います。 過去にも何度かやっている FLOPS の見積もりを、現時点で Xilinx の最高峰の筈の VP1902 (TSMC 7nm )に対してもやってみます。 www.amd.com は…

パラメータごと合成するという事

はじめに 少し前に、X(Twitter) にこんな絵を張り付けた。 ちょうど BitNet(b1.58) が盛り上がっていて、パラメータ効率の議論が起こっていたときだと思う。 忘れる前にもう少し書いておこうと思う。 上の図では少なくとも DRAM などの外部メモリや、そこへ…

FPGAでのレジスタファイル

はじめに だいぶ以前、最小限の RISC-V 命令だけ実装して遊んだときに下記のようなレジスタファイルを作りました。 後でいろいろパラメータ変えて計測しようと思いつつ完全に忘れていたので思い出したように実験です。 https://github.com/ryuz/jelly/blob/m…

パラメータ定数ごと乗算を合成する場合の考察

はじめに 毎度おなじみ当方の LUT-Netは、ネットワークのパラメータをLUTのテーブル値として学習して回路にしてしまう為、外部SDRAMなどのメモリからパラメータをロードしながら演算する必要がありません。 今回はLUT-Net は置いておいて、「もし普通の積和…

SIMD/SIMTとMIMDと

はじめに 先日Rustのイテレータでの処理順序関連してこんな記事を書きました。 加えて最近少し Elixir を調べていて、Enum, Stream, Flow などの処理を興味深く見ております。 そこで、ALU(arithmetic Logic Unit)視点から見た2種類の計算機のデータ処理パタ…

フルロジックEther通信とボード間時計合わせ

はじめに 以前、ZynqMPでリアルタイムOSをFPGA化してみた というRTOSのスケジューリング部分をフルロジックで実装してみましたという記事を書きました。 今度は、それを複数ボード拡張することを目論んで、RTOSらしくリアルタイム保証や時計合わせを行うべく…

RTL記述におけるX(不定値)の扱い

はじめに Verilog などの RTL 記述言語の多くは、文法上 0/1 以外に X(不定値) や Z(high-Z) を含めた4値を扱えます。 不定値の取り扱いにはおそらく「これが正解」といった絶対的なものはなく、ケースバイケースな気がしております。 コーディングルールを…

FPGA開発セミナー(2023/01/25)で発表いたしました

下記、「実践的!FPGA開発セミナー vol.18」にて Lightning Talk 枠で発表させて頂きました。 fixstars.connpass.com 発表資料を以下に置いております。 speakerdeck.com なお、今回を機に、以前 SlideShare に置いていたものを一部 SpeakerDeck にも置きま…

回路図のお供に Pandas 便利そう

データプロセッシングのアクセラレータ―としてではなく、IoTデバイスとしてFPGAを使ったことのある方は Excel でピン配置表を作って VLOOKUP 関数で頑張った経験がある方も多いのではないでしょうか?(古い人だけかもしれんないですが)。 FPGAはマイコンと違…