タグ

ブックマーク / msyksphinz.hatenablog.com (6)

  • コンパイラのための新しい中間表現 MLIR の論文を読む - FPGA開発日記

    LLVM IRについて調べていると、最近よくMLIRという言葉を目にするようになった。MLIRは"Multi-Level Intermediate Representation"の略称であって決して"Machine Learning"ではないのだが、LLVM IRを置き換えるために開発されている新しい中間表現形式である。 LLVM IRももちろん柔軟性のある中間表現形式であるが、より柔軟かつ幅広いDSLの中間表現を受け入れるために開発されているものだ。Googleに在籍していたLLVM CreaterのChris Lattnerによって開発されたものである。ちなみにChris Lattnerは論文が発行されたときにはすでにSiFiveに移っている。 https://arxiv.org/abs/2002.11054 この論文を読みながら、MLIRについて理解を進めていくことにしよう。 ML

    コンパイラのための新しい中間表現 MLIR の論文を読む - FPGA開発日記
    sh19910711
    sh19910711 2024/04/17
    "MLIR: C++コードなどの非常に抽象化されたソースコードの解析はLLVM IRでは非常に難しく、これを解決する / "Multi-Level Intermediate Representation"の略称であって決して"Machine Learning"ではない" 2020
  • 「プログラマーのためのCPU入門」を買いました - FPGA開発日記

    面白そうなので買ってみました。物理は送料が意外と高かったので電子書籍版を買いました。 https://www.lambdanote.com/products/cpu プログラマーのためのCPU入門 ― CPUは如何にしてソフトウェアを高速に実行するかwww.lambdanote.com ざっくりと眺めましたが、タイトルに偽りなし、ソフトウェアエンジニアにとって、ハードウェアをどのように理解すればよいか、ということに重きが置かれています。これでハードウェアが書けるようになるというわけではないので、そこは勘違いしないようにしたい。 実際問題、ソフトウェアエンジニアの人たちは、サービスの速度向上を図りたいとき、どのようなアプローチをとっているのだろう?というのは興味があるところです。まさかフロントエンドエンジニアが「このサブルーチンはこういう命令に変換されるから...」ということを考えてプログ

    「プログラマーのためのCPU入門」を買いました - FPGA開発日記
    sh19910711
    sh19910711 2023/11/06
    "コンピュータの基本はブラックボックスで、上位のレイヤは下位のレイヤを完全に隠蔽する / ソフトウェアを書く人たちは、CPUの周波数の向上と、メモリの増加、性能の向上におんぶにだっこで良い"
  • どのように論文を読むか - FPGA開発日記

    仕事柄論文を読む機会は多くあって、自分なりの読み方、まとめ方、深堀の仕方などはある程度ルーティンがあります。しかしそれが当に最適解なのかどうかは分かりません。もっと自分に合ったやり方があるかもしれないし、今の方法がベストなのかもしれない。 "How to read a paper" という、論文、というか論文形式のメモがあり、これは当時カナダのWaterloo大学にいたSrinivasan Keshav先生が長年の経験からどのように論文を読めばよいのかというのをまとめたものになっています。これを読んでみて、なるほどなと思ったのでメモとして残しておきます。 ちなみに検索するとこの先生は現在はケンブリッジ大学の先生のようです。よく見てみると日語に訳されている方もいるようで、原文と日語訳は一読の価値があります。 http://svr-sk818-web.cl.cam.ac.uk/kesha

    どのように論文を読むか - FPGA開発日記
    sh19910711
    sh19910711 2022/12/29
    "「まずは浅く」「重要と思ったら深く」という手順 / 1回目。だいたい5~10分 + 2回目。だいたい1時間 + 3回目。4~5時間かける。論文の内容を脳内で再実装 / 同じ仮定で同じことを考えてみて、これと実際の論文を比較"
  • PortSmashで学ぶ高性能プロセッサの同時マルチスレッディング - FPGA開発日記

    CPUの脆弱性として新たに報告された "PortSmash" 、どういう脆弱性なのかを調べるために論文を探すと公開されていた。 Port Contention for Fun and Profit https://eprint.iacr.org/2018/1060.pdf "Port Contention for Fun and Profit" という論文として公開されている。 どうでもいいけれども、"Fun and Profit" (趣味と実益)っていう名前がついているのは謎である。 読み進めていくと、結構理屈としては分かりやすい攻撃手法だということが分かった。 ちなみにこのPortという言葉は、SSHなどのポートのことではない。 現代のアウトオブオーダのプロセッサには、命令の種類に応じて実行されるユニットが分けられている。 例えば算術演算命令ならばALUユニット、メモリアクセス命令だっ

    PortSmashで学ぶ高性能プロセッサの同時マルチスレッディング - FPGA開発日記
  • RustでRISC-V命令セットシミュレータを作ろう (1. 基本的なテストパタンを通す) - FPGA開発日記

    今年の目標の一つに、新しいプログラミング言語を覚える、というものを追加していた。ターゲットの言語としてはRustにした。 Rustは低レベルのプログラミングにも使えそうだし、C/C++系の普通のプログラミング言語しか触ったことのない私としては何かと面白そうだったからだ。 Rustの資料はを読んで写経しただけでは何も理解した気にならなかったので、なにかコードを書いてみたい。 とりあえず、RISC-VシミュレータをRustを使って書くことにした。 RISC-Vシミュレータなら、いままでC++やVivado-HLS向けのC言語など、たくさん作ってきたので移植がやりやすいだろう。 github.com とりあえずRust特有の制限があるため、非常に実装に苦労した。 メモリ確保 まずは命令とデータを格納するためのメモリを確保する方法が分からない。C++ならば必要に応じてmallocすればよいけど、

    RustでRISC-V命令セットシミュレータを作ろう (1. 基本的なテストパタンを通す) - FPGA開発日記
  • RISC-Vについて - FPGA開発日記

    RISC-V は命令セットからオープンな命令セットアーキテクチャである。 なかなか面白いので最近はまっている。 http://riscv.org/ 命令セットを見る限り、あまりMIPSとの差は見られないのだが、顕著なものとして、ハードウェアに落としたときに性能を出しやすい構成になっているようで、 遅延スロットは存在しない 命令セットは単純 フラグは存在しない(これはMIPSも) HI/LOレジスタは存在しない(これはリネーム管理するときにやっかいだった...) 現在、RISC-V用のISSを作ってみているが、これはMIPSの自作シミュレータを土台にした。まあ土台がひどいので改修にかなり苦労してはいるが。 例外回りなど、まだ理解できていないことが多い。 まずは、例外回りや特殊な動作を除いた、シンプルなシミュレータを作ってみて、動作を見てみようと思う。 Coremarkのコンパイルはできたので

    RISC-Vについて - FPGA開発日記
  • 1