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

  • 「RISC-V+LLVM本 付録2. 浮動小数点命令」を無償公開しました - FPGA開発日記

    「作って学ぶコンピュータアーキテクチャ」では、執筆時点ですでに500ページを超えてしまい、泣く泣く2章分を削除しています。 1つ目の付録である「付録1. 関数呼び出しのバリエーションと高度な機能」についてはすでに公開済みですが、もう一つの「付録2. 浮動小数点命令」についても公開しました。 こちらは、LLVMに浮動小数点命令を追加し、いくつかのアプリケーションを動かそうというものです。 github.com この章は、当は基的な演算や機能の実装後に挿入したかった章で、以下の範囲をカバーしています。 この章は割と頑張ったもので、浮動小数点の説明から、実装、さらにアプリケーションを2つ実装しています。 後半のレイトレーシングはかなり頑張った部分で、最後に画像が正しく出力されたときは若干感動しました。 こちらも、担当編集の方の校正が入っていないので怪しい文章やもしかしたら誤った情報が入ってい

    「RISC-V+LLVM本 付録2. 浮動小数点命令」を無償公開しました - FPGA開発日記
  • 毎日技術ブログを書いていたら、権威のある国際学会(の併設ワークショップ)で講演することになった話 - FPGA開発日記

    年末なので技術以外のことも日記に書きたいと思います。1年に1回くらいは、エモい記事を書いてもいいでしょう。 まあ今年のまとめみたいな記事です。 今年も飽きもせずほぼ毎日技術ブログを書いていました。今見たら今年の投稿数は340件に近いので、まあほとんど毎日といってもいいと思います。 書いているテーマは多岐に渡っている、と自分では思っていますが、結局ほとんどの内容はコンピュータアーキテクチャの話だったり、RISC-Vの話だったり、あとは量子コンピュータも少しハマりました。 そんな感じでハードウェアばっかり触っています。 「FPGA開発日記」のはずなんですが、業務も含めプライベートでもFPGAはあまり触っておらず、もっぱらソフトウェア作って遊んでいるか、ハードウェア作ってもVivadoで論理合成して終わっているか、シミュレーションして終わりです。 全然FPGA関係ありませんね。 ブログを始めるき

    毎日技術ブログを書いていたら、権威のある国際学会(の併設ワークショップ)で講演することになった話 - FPGA開発日記
  • TLBleed : Trasnlation Leak-aside Buffer の論文を読む - FPGA開発日記

    TLBleedの論文がやっと発表された。The Registerで記事が出てから論文が出てくるまでずっと監視していたのだが、随分と時間がかかったね。 www.vusec.net このTLBleedの論文非常に長いので読むのがつかれるし、あまりセキュリティの知識とか無いので大変なのだが、要点だけつかもうと時間を作ってざっくりと読み進んでいった。 まだまだ分からないところが多いが、まとめていこう。 なんか難しげなアルゴリズムとかサクッと英語で説明してあるのでその辺りはまだよく理解できていないが、一通り読んで概要は何となくわかった。 この手法、スレッドが特権を持っていなくても同時に実行されているスレッド内の命令を読み取ることができるというものなのだが、当然ターゲットとなるサーバ内で攻撃スレッドが実行できている必要がある。 これはAWSなどのクラウド上で、意図していなくても何らなの別スレッドとリソ

    TLBleed : Trasnlation Leak-aside Buffer の論文を読む - FPGA開発日記
  • Microsoftのデータフロープロセッサ EDGEの論文を読む - FPGA開発日記

    Twitterで知った、MicrosoftFPGA向けのインオーダスカラプロセッサの論文が出ている。ターゲットとしてはデータフロー処理だ。 プロセッサの名前としてはEDGEという。ブラウザのEdgeではなくて、Explicit Data Graph Executionの略称である。 面白そうなので、読んでみることにした。 Now Microsoft ports Windows 10, Linux to homegrown CPU design • The Register Towards an Area-Efficient Implementation of a High ILP EDGE Soft Processor https://arxiv.org/pdf/1803.06617.pdf EDGEの考え方 EDGEの考え方は、複雑なアウトオブオーダのプロセッサを設計するのではなく、な

    Microsoftのデータフロープロセッサ EDGEの論文を読む - FPGA開発日記
  • Meltdown, Spectre で学ぶ高性能コンピュータアーキテクチャ - FPGA開発日記

    巷ではIntel, AMD, ARMを巻き込んだCPUのバグ "Meltdown", "Spectre" が話題です。 これらの問題、内容を読み進めていくと、コンピュータアーキテクチャにおける重要な要素を多く含んでいることが分かって来ました。 つまり、このCPUセキュリティ問題を読み解いていくと現代のマイクロプロセッサが持つ、性能向上のためのあくなき機能追加の一端が見えてくるのではないかと思い、Google, Intelの文献を読み解いてみることにしました。 が、私はセキュリティの専門家ではありませんし、過去にデスクトップPC向けのような大規模なCPU設計に参加したこともありません。 あくまでコンピュータアーキテクチャに比較的近い場所にいる人間として、この問題の質はどこにあるのか、可能な限り読み解いていき、現代のマイクロプロセッサが持つ高性能かつ高機能な内部実装について解き明かしていき

    Meltdown, Spectre で学ぶ高性能コンピュータアーキテクチャ - FPGA開発日記
  • 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開発日記
  • Linuxがブートできる自作RISC-VシミュレータをGitHubにアップロードした - FPGA開発日記

    自作RISC-Vシミュレータがある程度落ち着いてきたので、キリがいいところでGitHubで公開することにした。 github.com まあSpike(riscv-isa-sim)の劣化Cloneだと言ってしまえばそれまでなので、あまり意味はないのだけれど。。。 図. 自作RISC-Vシミュレータの外部インタフェース 使い方はGitHub上のREADME.mdに書いてある。BSDライセンスなので自由に改造してやってください。 まあこういうツールの場合BSDライセンスが良いのかどうかもよく変わっていないけれども? RISC-Vの精神に基づいてみた。 Spikeシミュレータとの差分点としては、デバッグ情報がしっかり出力できるようにした。レジスタアクセス情報からメモリアクセスの情報まで、--debugオプションによりしっかり情報を出力する。 その影響で--debugオプションをかなり遅くなってしま

    Linuxがブートできる自作RISC-VシミュレータをGitHubにアップロードした - FPGA開発日記
  • 自作CPUのリグレッションテストをGitHub Actionsで行うための手法の調査 - FPGA開発日記

    自作CPUのリグレッションテストやCIをGitHub上で行いたくて、いくつか手法を調査している。 1つの手法としては、Dockerfileを使ってリグレッション環境を構築する。Dockerイメージ上にRISC-VツールチェインとVerilatorをインストールしておく。これをDockerHubに登録しておいた。 以下がDockefileの一部。VerilatorとRISC-Vツールチェインをインストールしている。 FROM ubuntu:22.04 RUN apt update ## ... 途中省略 ... # ------------------ # Install Verilator # ------------------ RUN curl -L https://github.com/verilator/verilator/archive/refs/tags/v4.228.tar.

    自作CPUのリグレッションテストをGitHub Actionsで行うための手法の調査 - FPGA開発日記
  • 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開発日記
  • Intel CPUの脆弱性"ZombieLoad"の論文を読んでみる - FPGA開発日記

    Intelがまた出した。Meltdown / Spectre系のCPUの脆弱性として新たに発表された"ZombieLoad"である。 これもまた論文が発表されている。これらの論文は、最新のCPU技術を勉強するにあたって非常に有用なものだ。ZombieLoadの論文を読んで、どのような脆弱性であるのかを読み解いていくことにした。 参考にしたのは、"ZombieLoad: Cross-Privilege-Boundary Data Sampling" という論文だ。以下からダウンロードできる。 arxiv.org すべてを理解できたわけではないが、ZombieLoadの質は、Intel CPUのハードウェア的なバグであるというところであると言える。アーキテクチャ上のバグではないため、AMD、Armでは現れない。Intelの実装が単純に問題だった、ということになりそうだ。 そもそもMeltd

    Intel CPUの脆弱性"ZombieLoad"の論文を読んでみる - FPGA開発日記
  • ブログを毎日書き続けるためのテクニック - FPGA開発日記

    このブログ「FPGA開発日記」は約2100日で2000記事に到達した。特に2019年と2020年は殆どサボることなく記事を書き続けることができている。ブログの品質は置いておいて、毎日日記を書くことは何となく楽しいものだ。2015年にブログを開設したときに「よしこの日記はなるべく毎日書くようにしよう」と決めて以来休まずに書き続けることができている。 元来物書きは嫌いではない。私はエンジニアだが、仕様書を書くのもそこまで嫌いじゃない。自分の実装するものを綺麗にまとめて、「一点の曇りもなく上手くできてるやろ、ドヤ」みたいにするのは楽しいし、バグ発見の報告書とかまとめて、「回避方法は1.と2.あるけどどうする?ニヤニヤ」みたいなのも何となく楽しい。自分がバグを出すのは嫌だけど。 5年以上にわたってブログを書き続けるにあたり、これほどまでに継続することができたのはいくつかの理由がある。この記事ではブ

    ブログを毎日書き続けるためのテクニック - FPGA開発日記
  • 「プログラマーのためのCPU入門」を買いました - FPGA開発日記

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

    「プログラマーのためのCPU入門」を買いました - FPGA開発日記
  • CPUの新たな脆弱性 SPOILERの論文を読む - FPGA開発日記

    arxiv.org GIGAZINEでも紹介された新たなCPUの脆弱性の論文"SPOILER"が発表された。GIGAZINEがこのような記事を公開するのは珍しいなと思いつつ、面白そうなので読んでみることにした。 ちなみに、筆者は例によってセキュリティの専門家ではないし、CPUアーキテクチャにしてもデスクトップクラスの格的なものは設計経験がないので、いまいち文から読み取れない部分があったりとか、間違っている部分があるかもしれない。 この攻撃手法も、CPUの高速化を達成するための様々な機構を悪用する手法となっている。 SPOILERが対象とするのは、ストア命令の内容をロード命令でフォワードするためのMOB(Memory Order Buffer)の機構だ。例えば以下のようなコードを書いた場合、 sw a0, 0(sp) lw a1, 0(sp) ストア命令は、投機実行をしてしまうとメモリの

    CPUの新たな脆弱性 SPOILERの論文を読む - FPGA開発日記
  • 「作って学ぶコンピュータアーキテクチャ」の環境を再現するためのDockerイメージをリリースします - FPGA開発日記

    「作って学ぶコンピュータアーキテクチャ」(いわゆるRISC-V + LLVM)は書籍執筆時の状況と出版時のツールチェインの状況がかなり変わってしまっており、各所で迷惑をかけてしまっています。 確実にLLVMビルド + シミュレーションを行うために、ツールチェインを含んだDockerイメージをリリースします。 github.com 大きく分けて4つのイメージを用意しています。 ubuntu_2204 Ubuntu 22.04の環境を使用し、新しいRISC-Vツールを使用したDocker環境です 書で説明している実行コマンド列と大きく異なっている場所があります LLVMリポジトリはコンテナ内にダウンロード済みです(コンテナ容量削減のためビルドは行っていません) 最終的なバイナリのみ必要な方向けです ubuntu_2204_onlyenv Ubuntu 22.04の環境を使用し、新しいRIS

    「作って学ぶコンピュータアーキテクチャ」の環境を再現するためのDockerイメージをリリースします - FPGA開発日記
  • 半導体業界における「IP」とは何なのかを説明したい - FPGA開発日記

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

    半導体業界における「IP」とは何なのかを説明したい - FPGA開発日記
  • 歳を取ったエンジニアとして腕力のある若手にどうやって立ち向かおうか考えた - FPGA開発日記

    この記事はFPGA開発日記の祝2,000記事到達の記念に書いているものです。 普段の記事と比べて非常にエモい内容となっております。 FPGA開発日記を始めたのが2015年の1月4日。それからおよそ5年と10か月で2,000記事に到達した。 計算してみると2,115日での2,000記事達成となっていた。我ながらよく頑張った。 ブログを書き始めてもう5年以上経った。5年も経てば周りの状況も変わるし、生活環境も変わる。 私も歳を取り、決して若いとは言えない年齢になった。昔のように徹夜で勉強とか実装はできなくなったし、肩は凝るし集中力は続かない。夜になるとすごく眠たくなる。仕事が終わったらすぐ眠たくなってしまい、趣味やブログを執筆する時間を取るのがとても難しくなってきた。 私が年を取れば取るほど、若い実装力のある、優秀な人たちが参入してきて、私の何倍ものスピードで成果を出していく。 私が持っている

    歳を取ったエンジニアとして腕力のある若手にどうやって立ち向かおうか考えた - FPGA開発日記
  • フルスクラッチから作って理解する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開発日記
  • どのように論文を読むか - FPGA開発日記

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

    どのように論文を読むか - FPGA開発日記
  • 本当に私の人生を変えた技術書10選 - FPGA開発日記

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

    本当に私の人生を変えた技術書10選 - FPGA開発日記
  • 1