FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス <a href="https://msyksphinz.github.io/github_pages/">

ゼロから作る量子コンピュータ・シミュレータ(2. 複数量子ビットをモデル化して加算回路を作ろう)

前回は1量子ビットをC++でモデル化したのだが、それだけではほとんど何も表現出来ないので複数量子ビットに拡張したい。 複数量子ビットが表現できるようになれば、まずは例として加算器を動かしてみよう。 半加算器と全加算器が実現できればかなり面白い。 …

ゼロから作る量子コンピュータ・シミュレータ(1. 1量子ビットの表現)

次世代計算機講座に参加して、量子コンピュータについて俄然興味がわいてきた。 手っ取り早く量子コンピュータを試すためには、最近になっていろいろ手段が出てきている。 MicrosoftからはQ#、GoogleからはフレームワークとしてCirqがリリースされている。 …

NVDLAのConvolution DMAが実行する畳み込みの手順の解析

NVDLAというか、畳み込み演算をどのようにハードウェアで実現するかということをさらに掘り下げている。 NVDLA : Unit Description Unit Description — NVDLA Documentation NVDLAのConvolution DMAは、以下のような画像に対して入力画像とカーネルを畳み込…

NVDLAの内部構造調査(10. NVDLAのConvolution DMA)

NVDLAの内部構造についてもう少し詳しく解析したいのだが、割としっかりと解説してあるページがあったので読み進めていこう。 参考ににしたのは以下。っていうかNVDLA本家のページである。 今回はConvolutionのためのモジュール。Convolution DMA(CDMA)であ…

次世代計算機講座 <入門編> ~ゲート式量子コンピュータとアニーリングマシン~ に参加した

09/15に早稲田大学で行われた次世代計算機講座に参加した。 量子コンピュータについは何冊か本を読んでわかっているつもりだったのだが、独学の部分がほとんどなのでいろんな講演を聞いてみたいと思い参加した。 最初の京都大学の先生の話は量子コンピュータ…

RISC-Vシミュレータの実装をLambda関数を使って簡単化してみる

GitHub上に公開している自作RISC-Vシミュレータは、命令フェッチ、命令デコーダ、命令実行の部分が分けて実装してある。 命令デコーダは500種類程度ある命令を1つに特定し、その情報に基づいて命令を実行するのだが、その命令の実装はそれぞれの命令で分割し…

NVDLAの内部構造調査(9. NVDLAの各ブロックで何をしているのか)

NVDLAの内部構造についてもう少し詳しく解析したいのだが、割としっかりと解説してあるページがあったので読み進めていこう。 参考ににしたのは以下。っていうかNVDLA本家のページである。 Unit Description (NVDLA) Unit Description — NVDLA Documentation…

Linuxがブートできる自作RISC-VシミュレータをGitHubにアップロードした

自作RISC-Vシミュレータがある程度落ち着いてきたので、キリがいいところでGitHubで公開することにした。 github.com まあSpike(riscv-isa-sim)の劣化Cloneだと言ってしまえばそれまでなので、あまり意味はないのだけれど。。。 図. 自作RISC-Vシミュレータ…

NVDLAの内部構成調査(8. CaffeのprotobufからVirtual Platformのログを解析する)

図は http://nvdla.org/vp.html より抜粋。 NVDLA Virtual Platformを使ってMNISTやCIFAR-10を動作させた。 おおむね動作するようになったのだが、詳細をきちんと解析しなければ単純にアプリケーションを使って遊んだだけになってしまう。 具体的にNVDLAの内…

RISC-Vのランダムテストriscv-tortureの+signature

RISC-V Tortureは、生成したテストパタンをシミュレータで実行し、最後にシグニチャを出力する。 シグニチャを他の実装(Rocket-Chipなど)との結果と比較して正しく実行できたかを判定している。 SpikeおよびRocket-Chipでシグニチャを生成するためには+signa…

RISC-Vのランダムテストriscv-tortureを試す

RISC-Vの実装を作るとまずはテストパタンを生成してテストを流してみたくなるのだが、RISC-Vにはテスト用のパタンがいくつか用意されている。 RISC-V Tortureのダウンロードとインストール RISC-V TortureのConfiguration Tortureの生成パタンの構成を変えた…

NVDLAの内部構成調査(7. Caffeのモデルを使ってNVDLAでCIFAR10を動かす)

前回、NVDLA Virtual PlatformでMNISTを動作させることができた。同じように、NVDLAでCIFAR-10も動作させることができるはずだ。 PGMは1色の画像しか認識できないので、PGMでCIFAR-10の画像を渡すことはできない。そこで、JPEG形式でNVDLAにデータを渡して推…

NVDLAの内部構成調査(6. Caffeのモデルを使ってNVDLAでMNISTを動かす)

前回はNVDLAを使ってCaffeのモデルを実行してみた。 ただし実行結果が分からないので何とか解析できるようにしたい。 nvdla_runtimeの実行オプションには--rawdumpオプションがあるので、これを使えば実行後の結果をダンプできるらしい。 # ./nvdla_runtime …

NVDLAの内部構成調査(5. NVDLA VPによるアプリケーション実行)

前回はCaffeをインストールして、LeNetを実行した結果をnvdla_compilerに食わせて、NVDLAのバイナリファイルを作成した。 これを実行するためには、NVDLA Virtual Platformを実行してLinuxを立ち上げ、そこでnvdlaを動作させるランタイムプログラムを実行し…

Design Solution Forum 2018にて発表します

去年よりも開催が1か月早くて焦っています。 2018/09/12(水)に開催されるDesign Solution Forumにて、RISC-V/IoTのトラックの1つとして発表させて頂くことになりました。 13:30~14:10 で、タイトルは "試しながら学ぶオープンソースプロセッサRISC-V の世界…

RISC-Vを使ったEnclaveプロジェクトKeystone

限りなく内容の無い、メモのような日記になってしまったが。。。 RISC-Vアーキテクチャを使ったセキュリティ技術の開発で、Keystoneというプロジェクトがあるらしい。 Hisa Ando氏の記事で知った。 KeystoneでRISC-Vをセキュア化 20180901 Keystone Open-sou…

NVDLAの内部構成調査(4. NVDLA_compiler と Caffeデータの変換)

NVDLAの動かし方についてもう少しプログラミングモデルを解き明かしていきたいが、いかんせん内部レジスタの仕様を読み進めながらでは効率が悪くて良くない。 それに実際のニューラルネットワークを使いながらインタフェースを見ていかないと、意味が分から…

Freedom-U-SDKで生成したLinuxバイナリを自作RISC-Vシミュレータで実行 (4. 命令セットシミュレータの高速化検討)

RISC-Vの自作シミュレータでLinuxを立ち上げることに成功したが、まだかなりシミュレーション速度が遅いことが心配だ。 原因はすでに解析済み。メモリアクセスが何度も発生しているためにそこが最適化できていない。 以下は前回Google Perftoolsで解析したシ…

NVDLAの内部構成調査(3. プログラミングシーケンス, Register Description Language)

NVDLAの内部構成調査の続き。前回はNVDLAのBDMAについて調べたが、次は実際にConvolutionの操作を見ていかなければならない。 sanity3のテストパタンを見ると、大量のレジスタを設定してるのだが、それをいちいち調べていくのは大変だ。 まずは、NVDLAの基本…

NVDLAの内部構成調査(2. BDMAの使用方法について)

RISC-VのNVDLAがコラボしたり、NVDLAの調査も再度実施しなければならないと思ってきた。 riscv.org テストパタンの中で、sanity1 / sanity2 BDMAのテストパタンだ。 BDMAはいわゆるDMAのことなのだが、ディープラーニング向けのDMAよろしく、いろんな設定が…

NVDLAの内部構成調査(1. NVDLAのテストパタンの調査)

RISC-VのNVDLAがコラボしたり、NVDLAの調査も再度実施しなければならないと思ってきた。 riscv.org しかしNVDLAの内部構成やインテグレーションの方法など、あまり情報が整理されていない。 というわけで、NVDLAのリポジトリのテストパタンを解析して、どう…

Intel Software Guard Extensionのチュートリアル サンプルプログラムを実行(Part-3 PasswordManagerCore)

Intel SGX Tutorialを読み進めているのだが、サンプルプログラムにも触れておきたい。 まずはPart-3のサンプルコードから。いわゆる普通のソフトウェアとか、GUIのソフトウェアとか触る機会がないので扱い方に少し戸惑うが... software.intel.com ページの一…

Freedom-U-SDKで生成したLinuxバイナリを自作RISC-Vシミュレータで実行 (3. シェル実行)

HiFive Unleashedは高くて買えないのだけれども、RISC-V SDKであるFreedom-U-SDKを使ってみることにした。 自作RISC-Vシミュレータを使ってRISC-VのLinuxをブートさせたいのだけれども、なかなか動作しないので四苦八苦していた。 #自作RISC-Vシミュレータ…

MarkdownエディタならTyporaが最強であるという話

RISC-V関連の寄稿する機会も増えてきて、毎日のブログ投稿する場合にも使うのがMarkdownなのだが、MarkdownのエディタいうのもEmacsとVim並の宗教戦争が起きそうな領域だと思っている。 Markdownエディタといえば有名どころを少し調べてみると、かつてはQiit…

Intel Software Guard Extensionのチュートリアルを読む(2. Design an Application)

CPU脆弱性についての論文を読んでいると必ずと言っていいほど出てくるIntel SGX(Software Guard Extension)。 なんとなく秘匿データを扱うためのIntelのハードウェア機構なんだろうなと思っていたけど、あまり知ったかぶりをしているのもよくないのでチュー…

AWS上で動作するRISC-VチップFireSimのチュートリアルを試す 9. FireSim v1.3.1 でBOOMを動かす

fires.im FireSim v1.3.1 ではBOOMに対応しているので、さっそくベンチマークプログラムを動かしてみた。 FireSim v1.3.1のダウンロード $ git clone https://github.com/firesim/firesim.git -b 1.3.1 --recurse-submodules firesim_v131 $ cd firesim_v131…

Intel Software Guard Extensionのチュートリアルを読む(2. Application Design)

CPU脆弱性についての論文を読んでいると必ずと言っていいほど出てくるIntel SGX(Software Guard Extension)。 なんとなく秘匿データを扱うためのIntelのハードウェア機構なんだろうなと思っていたけど、あまり知ったかぶりをしているのもよくないのでチュー…

Intel Software Guard Extensionのチュートリアルを読む(1. SGX Foundation)

CPU脆弱性についての論文を読んでいると必ずと言っていいほど出てくるIntel SGX(Software Guard Extension)。 なんとなく秘匿データを扱うためのIntelのハードウェア機構なんだろうなと思っていたけど、あまり知ったかぶりをしているのもよくないのでチュー…

「量子コンピュータ・超並列計算のからくり」を読んだ

量子コンピュータ 超並列計算のからくり (ブルーバックス)作者: 竹内繁樹出版社/メーカー: 講談社発売日: 2013/11/08メディア: Kindle版この商品を含むブログ (1件) を見る やっと全部読み終わった。といっても最後のほうはあまり真剣に読まずに流しながら読…

Freedom-U-SDKで生成したLinuxバイナリを自作RISC-Vシミュレータで実行 (2. Linuxのブート成功)

HiFive Unleashedは高くて買えないのだけれども、RISC-V SDKであるFreedom-U-SDKを使ってみることにした。 自作RISC-Vシミュレータを使ってRISC-VのLinuxをブートさせたいのだけれども、なかなか動作しないので四苦八苦していた。 #自作RISC-Vシミュレータ…