タグ

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

  • Netflixによるインスタンス負荷改善のための解析事例 - FPGA開発日記

    LinkedInの記事をめぐっているうちに見つけた、マイクロアーキテクチャに関する面白い事例。 CPUのマイクロアーキテクチャのさらに奥深くまで理解が必要な問題を解決するために、どのようなツールをつかってどのように解決したかの話。 netflixtechblog.com Netflix内でのワークロード最適化のため、AWSのインスタンスサイズを移行(16 vCPUから48 vCPU)し、CPUがボトルネックとなるワークロードの性能向上を図った。 このインスタンスの移行により、性能をほぼ直線的に増加させることを想定し、スループットがおよそ3倍になると予想した。 しかし、結果としてこの移行で想定する性能は達成できなかった。 https://netflixtechblog.com/seeing-through-hardware-counters-a-journey-to-threefold-pe

    Netflixによるインスタンス負荷改善のための解析事例 - FPGA開発日記
    rin51
    rin51 2024/08/22
  • VirtIOのドキュメントを読む (1) - FPGA開発日記

    https://blogs.oracle.com/linux/post/introduction-to-virtio SNS界隈で見つけて、面白そうなので読んでみることにした。 ポイント 仮想マシンとホストデバイスの抽象化を行うレイヤのこと ホストの物理ハードウェアと仮想マシンの間でデータをの授受を行う コアフレームワークとして定義することで一般化 Linuxではvirtqueue QEMUではVirtQueue ホストマシンと仮想マシンでのデバイスの取り扱いには、2つの考え方がある? エミュレーション ソフトウェアによりハードウェアの動作を模倣する ハードウェアが存在していなくても動かすことができる パファーマンスに影響が出る。時間がかかる 仮想化 ハードウェアを分割して、ゲストVMが使用できるようにする 共有できるようにする、というイメージ ゲストにとっては、任意のデバイスを使えるよう

    VirtIOのドキュメントを読む (1) - FPGA開発日記
    rin51
    rin51 2023/12/20
    virtio
  • RISC-V ベクトル拡張 v1.0の日本語訳を公開した - FPGA開発日記

    https://msyksphinz-self.github.io/riscv-v-spec-japanese/html/index.html RISC-Vのベクトル拡張については仕様書がGitHubに公開されており、2~3年前に私はそれを日語訳して公開していた。当時のバージョンは0.7.1から0.8だったが、ついにv1.0までバージョンアップが進んだのでこれを機に見直してみることにした。 RISC-Vベクトル拡張のv1.0-RC1つまり正式決定の一歩手前まで来ており、ほぼ確定と考えてよろしい。その仕様について、昔の仕様とはずいぶんと変わっているところがあるので改めて翻訳し直した。 当たり前だけど、あくまで個人が趣味で翻訳したもので、100%正確ではないし、かなり誤植も含まれている。自己責任で参照してもらいたい。 翻訳については、DeepLにかなりお世話になったところがある。ただ翻訳結果

    RISC-V ベクトル拡張 v1.0の日本語訳を公開した - FPGA開発日記
    rin51
    rin51 2021/07/25
  • Linux Foundation の Free RISC-V Online Courseをやり始めた - FPGA開発日記

    結論から言うと課題をこなすためには無料ではなく課金が必要だった。なんじゃそりゃ! Linux FoudationがFreeのRISC-Vオンライントレーニングコースを2つリリースしたというので、どんなもんかと思ってやってみることにした。リリースされたコースは: Introduction to RISC-V (LFD110x) Building a RISC-V CPU Core (LFD111x) の2種類で、さすがに最初の奴は簡単すぎるだろと思ってスキップして、2つ目のデジタル回路設計を学びながらRISC-Vコア作るというやつを見てみることにした。 これ、オンラインでVerilogに似たようなTL-Verilogというものを使って、オンラインエディタで回路を記述してその場でコンパイル、シミュレーションまで実行する仕組みになっている。 TL-VerilogについてはVerilogに似たよう

    Linux Foundation の Free RISC-V Online Courseをやり始めた - FPGA開発日記
    rin51
    rin51 2021/03/08
  • RISC-Vのハイパーバイザー拡張の仕様書を(ほぼ)日本語化したので公開する - FPGA開発日記

    RISC-Vのハイパーバイザー拡張の仕様がかなり固まってきた。現在は0.6.1が公開されている。 Hypervisor Extension, Version 0.6.1 github.com とりあえず、上記の資料を読みながらちまちまと日語化してみた。これは別に営利目的などではなく、完全に自分の趣味で理解のために翻訳してみたかったところがある。しかし翻訳しながら「なんじゃこりゃ?」な部分はとりあえず飛ばして先に進んだりしたので、すべて理解をしているかというとそれは違う。また復習しないと。 とりあえずSpikeの実装とKVMのRISC-V移植版を勉強しながら、実際の実装を学んでいくようにしていきたい。 RISC-V ハイパーバイザー拡張 日語版 msyksphinz-self.github.io とりえあず、Google翻訳には頼らず、99%は自力で翻訳したが、おかげてTypoやら、誤訳

    RISC-Vのハイパーバイザー拡張の仕様書を(ほぼ)日本語化したので公開する - FPGA開発日記
    rin51
    rin51 2021/03/01
  • フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記

    モチベーション なぜRustを選んだか? 私はQEMUは「アーキテクチャエミュレーション界のLLVM」だと思っている QEMUが高速な理由:TCG Binary Translation ゲスト命令(RISC-V) → TCGホスト命令(x86)の処理をRustで作ろう RISC-Vの命令をフェッチしてデコードする RISC-Vの命令をTCGに変換する TCGをx86に変換する 実装結果 Binary Translation実行を高速化するための様々なテクニック BasicBlock分まで複数命令をまとめて変換 TCG Block Chainingの実装 評価結果 TB Lookup and Jumpの実装 評価結果 まだ完成していないところ 一部の最適化はまだ未実装となっている ゲストアーキテクチャがx86のみとなっている。TCGによる複数プラットフォーム対応として、まずは環境のそろ

    フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記
    rin51
    rin51 2020/12/29
  • RISC-V勉強会@Online 2020 12/18の発表資料をアップロードしました - FPGA開発日記

    RISC-V勉強会@Online 2020 12/18の発表資料をアップロードしました。アップロード場所は、私のブログなどの資料を保管している以下のGitHub Sitesです。 msyksphinz.github.io RISC-V勉強会に参加いただきありがとうございました。私の発表は「RISC-V」というよりも「Chisel」だし、「Chisel」というよりも「Diplomacy」だし、とかなりキワキワな内容でした。どれだけの方が興味を持って下さったのかは未知数ですが、世界でもChiselのDiplomacyをここまで詳細にブレークダウンした資料は存在しないと思います(自画自賛、っていうかユーザが少ないから)。 Chiselですが、やはり私の考え方は「Verilogを全部Chiselに置き換える」ということではなく、「適材適所で使えば良い」で良いのではないかと思っています。Chisel

    RISC-V勉強会@Online 2020 12/18の発表資料をアップロードしました - FPGA開発日記
    rin51
    rin51 2020/12/19
  • 半導体業界における「IP」とは何なのかを説明したい - FPGA開発日記

    RISC-V」という言葉が徐々にエンジニア界隈に普及し始め、技術界隈のニュースサイトだけでなく、一般的なニュースを扱うような新聞社の記事でも見かけるようになってきました。例えば以下のような記事です。 www.nikkei.com 半導体エンジニアではない人がこのような記事を書く場合、「設計IP」について正しい知識を持っておかないと、少しおかしなことになってしまいます。しかしこれは記事を書いている記者だけを責めることは出来ません。半導体設計業界はソフトウェア開発業界に比べて小さな業界で、プレーヤの数も少なく、ネット上にあまり情報も出てきません。時事ネタを速攻で記事に起こさないといけない新聞記者が「IPってなんだっけ?」「リスクファイブってなんぞや?」ということをいちいち厳密に調べてられない、ということも理解できます。 そこで、非エンジニア(というか非半導体産業の方)でも理解できるように、R

    半導体業界における「IP」とは何なのかを説明したい - FPGA開発日記
    rin51
    rin51 2020/10/04
  • QEMUのTCG(Tiny Code Generator)を読み解く(3. TCGContextによりホスト命令がターゲット命令に変換される流れ) - FPGA開発日記

    TCGの続き。TCGによるエンコードをもっと詳しく見るために、TCGContextを眺めてみる。 qemu/include/tcg/tcg.h struct TCGContext { uint8_t *pool_cur, *pool_end; TCGPool *pool_first, *pool_current, *pool_first_large; int nb_labels; ... TCGTemp *frame_temp; tcg_insn_unit *code_ptr; #ifdef CONFIG_PROFILER TCGProfile prof; #endif ... }; このTCGContextのcode_ptrに、命令コードが挿入されている気がする。例えば、ADDI命令のTCGを作るとするならば、 qemu/tcg/riscv/tcg-target.inc.c static

    QEMUのTCG(Tiny Code Generator)を読み解く(3. TCGContextによりホスト命令がターゲット命令に変換される流れ) - FPGA開発日記
    rin51
    rin51 2020/08/18
  • QEMUのTCG(Tiny Code Generator)を読み解く(2. TCGが生成したx86機械語を読む) - FPGA開発日記

    TCGの続き。TCGによるエンコードをもっと詳しく見るために、最適化を抑制すべくいろいろ変更してみた。 git diff tcg/i386/tcg-target.inc.c diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c index ec083bddcf..d86ccdf05b 100644 --- a/tcg/i386/tcg-target.inc.c +++ b/tcg/i386/tcg-target.inc.c @@ -40,6 +40,8 @@ static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { }; #endif +void tgen_arithr(TCGContext *s, int subop, int

    QEMUのTCG(Tiny Code Generator)を読み解く(2. TCGが生成したx86機械語を読む) - FPGA開発日記
    rin51
    rin51 2020/08/06
  • CQ出版のインターフェース6月号に「Rustで作る命令セット・シミュレータ」を寄稿しました - FPGA開発日記

    インターフェースを毎号買って読んでいる方なら「おいおいこの話は先月号に載せるべき話じゃないのかい?」と言うことに気が付くと思います。私もそう思います。が、どうやら編集担当さんによりページ数のミスが発生した模様(当かどうかは知りませんが)で、なぜか私の記事が吹っ飛ばされて次号に掲載となりましたとさ。なんじゃそりゃ。 CQ出版さんの雑誌インターフェースの6月号「Rustで作る命令セット・シミュレータ」として原稿を寄稿させて頂きました。ちなみに6月号はどんな特集の内容なのか私も把握していないので、どういう話の流れでRustの特集が挿入されるのか全く知りません。たぶん単発記事として前後に関係なく載るのでしょう。 正直私はRustについてまだまだ初心者で、とても原稿を書けるような技術力の持ち主ではないのですが、C++をメインに使っている人間がRustに移行するために色々と試行錯誤した話だととらえて

    CQ出版のインターフェース6月号に「Rustで作る命令セット・シミュレータ」を寄稿しました - FPGA開発日記
    rin51
    rin51 2020/04/25
  • 本当に私の人生を変えた技術書10選 - FPGA開発日記

    年末ですね。年末に技術っぽいことを書いても誰も見ていないので、どうでもいいことを書こうと思います。 皆さん技術書は好きですか?好きですよね。読みもしないのに技術書典なんかに大挙して押しかけて、結局積読が増えていく。積んでいるとなんか落ち着くのかもしれません。 私は現在ハードウェア関連の技術者として働いているわけですが、短い人生の中で読んだ技術書の中で、当に私の人生を変えてしまった技術書を思い出しながら紹介してみたいと思います。 あらかじめ断っておきますが、「名著」や「良い」を紹介するのではなく、あくまでも私の人生を変えたです。逆にいうと、あまり名著は出てきません。名著の紹介はすでにいろんなところでやられているので、そちらを見ていただければ。 1. 図解で分かるPCアーキテクチャのすべて(初版) 〈最新〉図解でわかる PCアーキテクチャのすべて 作者:小泉 修出版社/メーカー: 日

    本当に私の人生を変えた技術書10選 - FPGA開発日記
    rin51
    rin51 2019/12/28
  • DSLでビルドツールを自作する (25日目 最後のまとめ) - FPGA開発日記

    この記事は「Qiita Advent Calendar 2019 DSLで自作ビルドツールを作ろう」の25日目の記事です。 25日目 最後のまとめ ここまで、24回に分けて一からビルドツールの開発に挑戦してきました。 DSLの勉強のために、Rubyのメタプログラミングについて一から勉強しました。 ビルドシステムの勉強のために、ビルドツールの仕組みについて一から調査しました。 様々な機能をビルドシステムに詰め込むために、Ruby/Git/YAMLなどの機能について調査しました。 最終的な目標としてEmacsをビルドするために、Emacsのビルド構成について勉強しました。 また、Makefileを自作ビルドシステムに移植するために、Makefileについて詳細な記法を勉強しました。 このプロジェクトは、思いついてからコードを書き始め、24日分の原稿を書くのにコーディングと文章化で約一か月かけま

    DSLでビルドツールを自作する (25日目 最後のまとめ) - FPGA開発日記
    rin51
    rin51 2019/12/25
  • 「実践Rust入門」に入門している - FPGA開発日記

    少し前から、「実践Rust入門」を読み始めている。Rust自体は前に触ったことがあるのだが、ジェネリクスとかトレイトとか、基的な知識が不足しているので、評判が良さそうなを購入して読み進めていくことにした。 実践Rust入門[言語仕様から開発手法まで] 作者: κeen,河野達也,小松礼人出版社/メーカー: 技術評論社発売日: 2019/05/08メディア: 単行(ソフトカバー)この商品を含むブログを見る まずは、クイックツアーということでバイトニックソートの実装を追いかけていくことにした。バイトニックソートを機能を追加しながら順番に実装していくのでわかりやすい。 単純な整数のみでバイトニックソートを実装 順序付け可能な型に限定してバイトニックソートを拡張 (浮動小数点などはNaNが入るため対象外) 一般的な型(Structなど)に拡張してバイトニックソートを拡張(クロージャを活用する

    「実践Rust入門」に入門している - FPGA開発日記
    rin51
    rin51 2019/11/06
  • 「実践Rust入門」に入門している (2. 電卓作成まで終了) - FPGA開発日記

    少し前から、「実践Rust入門」を読み始めている。Rustを使って四則演算の電卓を作るところまで行った。 実践Rust入門[言語仕様から開発手法まで] 作者: κeen,河野達也,小松礼人出版社/メーカー: 技術評論社発売日: 2019/05/08メディア: 単行(ソフトカバー)この商品を含むブログを見る 今回の実装はあまりRustのキワキワの機能を使っていないのかな?という印象。というか写経をしただけなので分かっていないだけなのかも。 どちらかというと文字列を受け取ったときにどういうエラー表示をすべきなのか、エラー表示をわかりやすく表示するためにどのような機能が必要なのか、そっちの方向が少し目から鱗。なるほど、こうやってエラー表示は出力するのか。 並行しながら所有権の部分なども読み進めているが、これも実際に手を動かしてモノを作ってみないと完璧に理解できないかも。。。こっちのを読み進め

    「実践Rust入門」に入門している (2. 電卓作成まで終了) - FPGA開発日記
    rin51
    rin51 2019/11/06
  • RustでRISC-Vの命令セットシミュレータを作ったので(いちおう)公開する - FPGA開発日記

    といっても大昔に作ってみたもので、BitBucketの肥やしにしておくのももったいないし、最終的にどうにかして発展させたいので公開する。 今のところデコーダはあるが逆アセンブラはついていないのでspike-dasm頼みである。 github.com 大した実装ではなく、一応テストパタンを通すことができる程度だが、公開したのは今後色々と拡張をしたいから。今時点の私の知識ではこれが限界で、これ以上Rustっぽく書くためにはどうしたらいいのか良く分からない。 RustでRV32とRV64を上手く切り分ける方法はあるか? もともとRustの勉強を始めたのはこのあたりだが、Scalaを通じてTraitなどの概念を知って、じゃあRV32とRV64で処理内容を同一のトレイトで管理して、実際のCPUのモデルのみを切り替えるという方法は上手く行くだろうかと思って始めた。 ただ、Rust質も良く分かってい

    RustでRISC-Vの命令セットシミュレータを作ったので(いちおう)公開する - FPGA開発日記
    rin51
    rin51 2019/11/06
  • CQ出版 インタフェース 12月号「注目オープンソースRISC-Vマイコン」に寄稿しました - FPGA開発日記

    CQ出版さんが出版している雑誌インタフェースの12月号で、「注目オープンソースRISC-Vマイコン」という特集記事に寄稿しました。 RISC-Vマイコンの話がメインなんですが、よく見ると私はマイコンの話はほとんど書いていないですね。 なんか仕様だのクラウドだの、普段実機をあまり触っていないことがばれてしまうような内容構成になっています。 私が寄稿した内容としては、 イントロダクション RISC-Vの仕様 RISC-Vプロセッサ辞典 HiFive1 FireSim あたりです。当は Chisel HiFive Unleashed も書いて寄稿したのだけれど、ページの都合上削除されたようです。まあブログの内容とあまり変わらないのだけれども。 くしくもRISC-V Day Tokyo やDesign Solution Forumなど、RISC-V系の発表が多く行われる時期にぶつかってきたわけで

    CQ出版 インタフェース 12月号「注目オープンソースRISC-Vマイコン」に寄稿しました - FPGA開発日記
    rin51
    rin51 2019/10/25
  • コンピュータアーキテクチャ 定量的アプローチ(ヘネパタ) 第6版日本語版を購入 - FPGA開発日記

    RISC-V Day Tokyo 2019でも販売したらしいのだが、参加しなかったのでネットで購入。 到着して、開封するととりあえずデカいな! コンピュータアーキテクチャ 第6版 原著と日語版 中身はまだ熟読していないけど、とりあえず気になるのは2点: 表紙に「第6版」までは良いけど、なぜ「RISC-V」まで書いた?このにとってRISC-V質的な問題ではないし、第5版に「MIPS」とは書かないだろうに。日語版担当者は何故追加したのだろう? なぜ日語版は2段組みにしたのだろう?原著に揃えて1段に揃えてくれればよかったのに、2段って正直読みにくい。文字を敷き詰めてページ数を削減したかったのか? 日語版は何故2段? 英語版と並行して、日語版を、読み進めていくことにする。

    コンピュータアーキテクチャ 定量的アプローチ(ヘネパタ) 第6版日本語版を購入 - FPGA開発日記
    rin51
    rin51 2019/10/04
  • 128bitまで対応したRISC-VエミュレータでLinuxが動く (しかも超高速) - FPGA開発日記

    ダウンロードとビルド riscvemuを動作させる riscvemuの実行方法 risvemuを利用したSimple Linuxの起動 Fedoraのディスクイメージでの起動 シレっとRISC-Vメーリングリストに投稿されたこれ、QEMUの開発者でもあるFabrice BellardがRISC-Vの128bitモードまで対応したエミュレータを開発したという話だ。 RISCVEMU groups.google.com ダウンロードとビルド ダウンロードしてみるとソースコードの量も少なく非常にシンプル、こんなのでRISC-Vをサポートしてしまうのか。 makeを一発叩くだけでビルドできるのだが、私の環境の場合ではfreadのエラーを回避するためにオプションを若干変更する必要があった。 gcc -O2 -Wall -g -Werror -D_FILE_OFFSET_BITS=64 -D_LARG

    128bitまで対応したRISC-VエミュレータでLinuxが動く (しかも超高速) - FPGA開発日記
    rin51
    rin51 2018/11/09
  • RISC-Vの連載第2回がインターフェース誌に掲載されました - FPGA開発日記

    第1回の時に書いた記事はこちら。 msyksphinz.hatenablog.com 第2回はRISC-Vの仕様について。ちなみにV拡張(SIMD)については、原稿を書いたのが去年の秋くらいなので載っていません。 詳細は以下を参照。 msyksphinz.hatenablog.com 命令セットの仕様って、知っている人にとってはつまらないし、知らない人が読んでもあまり頭に入らないかもしれない。 アーキテクチャの仕様って、知らなくてもよい人にとっては当に知らなくてもいいことだよね。 私も、x86の仕様なんて全然知りません。せいぜいレジスタの呼び方が面倒くさい、と思っているくらい。 なので、「RISC-Vのどこが凄いの?」と聞かれて、「命令セットが~」などと答えるのは良くないと思っている。 それよりも、ISAオープンソースであることにより様々なことが解決できる、ということのほうがよっぽど重要

    RISC-Vの連載第2回がインターフェース誌に掲載されました - FPGA開発日記
    rin51
    rin51 2018/01/27