Ryuz's tech blog

FPGAなどの技術ブログ

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

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

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

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

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

はじめに 今日は、最近のプロセッサをウォッチしている中での素人の妄想を書いてみます。 プロセッサの性能と規模の法則としてポラックの法則というものがあります。 これは簡単に言うとプロセッサの性能を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はマイコンと違…

Zynq MP SoC のチュートリアルを考えてみる

はじめに 個人的には Zynq UltraScale+ MPSoC (以下、ZynqMP) は 現時点では最強の IoT プロセッサなのではないかと思っています。 そして多分、「自分はわりとマニアックな偏った使い方をしている方なのではなかろうか」とも思っています。 一方巷で、 FPGA…

FPGAは1命令を繰り返すVLIWプロセッサ?

ちょっとしたジョーク的な駄文ですが、ふと思いついたのでメモしておきます。 こちらで少し、RTLプログラミングを普通の逐次処理型のプログラミングモデルと比較したりしていましたが、ふと「 FPGA って実はとてもたくさんの命令をパッキングした、たった1…

BinaryBrain で HLS をやってみる (ver 4.2.4 リリース記念)

はじめに 先ほど BinaryBrain 4.2.4 をリリースしましたので少しだけ時事ネタ的にプログを書こうと思います。 github.com もともと FPGA の基本構成要素である LUT を LUT 構成のまま誤差逆伝搬で学習させてしまおうというのが、以前発表したLUT-Netの趣旨で…

ハードマクロの稼働率について考えてみる

はじめに FPGAに限らずCPUやGPUなどすべての計算機に言えることなのですが、ハードマクロの演算リソースは使ってなくてもそこに居座り続ける(要するに無駄)という問題があります。 筆者は普段主に ZynqMP を使っておりますので、APUやRPUやOCM、PL内部のLUT…

リアルタイム処理を再考してみる

はじめに 最近、github連携が便利でZennを使い始めましたが、あくまでこちらはQiitaの乗り換え色が濃いので、引き続き、結論のない試行錯誤中の感想とか、ポエム系はこちらに書こうかなと思います。 今回はまたあらためてプロセッサのリソース観点からリアル…

試しに Zenn の github 連携を使ってみた

Zenn試してみました Zennだと github に置いた Markdown と連携できるということを知って、さっそくいくつか最新の試みを試してみました。 タイムリーな要素を含むブログと、Tipsとして取り回しよく蓄積したい情報とでうまく使い分けると便利そうには思いま…

ZynqMP 用の SDイメージを SD カードを使わずに作る考察

概要 以前、こんな記事 を書きましたが、その際、実 SD カードにイメージを作ってから dd コマンドでイメージを保存していました。 もちろんもっといいやり方はあるだろうなとは思っていたのですが、「Win32DiskImager 使えると便利」とか言ってる時点でもと…