2017-09-01から1ヶ月間の記事一覧
RISC-Vのアウトオブオーダ実装であるBOOMv2は、githubで既に公開されている。 github.com BOOMv2の実装とRocket Chipの実装は分離されており、内部コアをBOOMv2、外部のインタフェース部分をRocket Chipで実装する。 上記のBOOM v2.0.1は riscv-boom リポジ…
少し前に、RISC-VのRocket Coreのアウトオブオーダ版、BOOM(Berkeley Out-of-Order Machine) のVersion2がリリースされたことがアナウンスされたが、CARRV (RISC-Vの学術ワークショップ) に向けてその詳細が公開されたので読んでみた。 BOOM v2: an open-sou…
ちょっと久しぶりにRaspberry-Pi3を立ち上げた。やりたいことは組み込み機器でOpenCVとか、OpenVXをどのようにして動かせばよいのかの調査だ。 まずは、Raspberry-Pi3を使ってOpenCVを動作させたい。 これは既に先人によって手法が確立されていることで、Qii…
前回Dot Productアクセラレータを作ったのだが、正しく動作していなかったのでデバッグしていた。 よく考えたら、行列積 を求めるにあたり、メモリのフェッチアドレスのとび幅を決めるのに、行列の列サイズも必要だったので、それを設定するファンクションも…
Rocket Chipの動作周波数を上げるべくいろいろ試行していたが、ZynqSmallConfigの場合はどれくらい周波数が上がるのだろう? ZedBoardでFPGA向けに合成をする場合にはいくつかオプションがあり、デフォルトではZynqConfig、小さめの構成でZynqSmallConfigと…
Rocket ChipをFPGAにインプリメントして動作させているが、動作周波数が25MHzに設定されているというのに驚愕した。 ZedBoard自体は100MHzで動くはずだし、HiFive1だって320MHzで動作するような設計だ。 なぜこんなに遅い周波数で設計されているのだろう? …
前回、Chiselを使ってDot Productアクセラレータを作ったが、まだ正しく答えが一致していなかった。 msyksphinz.hatenablog.com 一応デバッグしてプログラムを正しく走ることが出来るようにして、まずは16x16のサイズで正しく問題が計算されていることを確認…
Chiselを使って行列積を計算するハードウェアを開発してきたが、これには弱点がある。 小さな行列に焦点を当てたので、大きな行列(16行以上)に対応できないことだ。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com しかしこの方法には利点もある。16…
ザイリンクスのreVISIONスタックは、コンピュータビジョン、機械学習、コネクティビティ & センサー サポート に注力してFPGA上で動作させることのできるハードウェアデザインやソフトウェアスタックを提供している。 このなかでコンピュータビジョンに注目…
RISC-Vの実装、Rocket Chipのアクセラレータ向けインタフェースにハードウェアを実装し、RTLシミュレーションを行った。 次に、Rocket ChipをFPGA向けに論理合成するところまで上手く行ったので、今回開発したRoCCアクセラレータをFPGAに実装してみよう。 こ…
ディジタル回路設計とコンピュータアーキテクチャ 第2版作者: デイビッド・マネーハリス,サラ・L.ハリス,David Money Harris,Sarah L. Harris,天野英晴,鈴木貢,中條拓伯,永松礼夫出版社/メーカー: 翔泳社発売日: 2017/09/11メディア: 単行本この商品を含むブ…
前回作業をした、RISC-VのRocket Chipで、FPGAにRoCCアクセラレータ付きの実装をインプリメンテーションする作業、前回までは、 一応ブートまで進んだものの、何故かアプリケーションが動作せず、作業が止まってしまっていた。 そこで、もっとお気楽なビルド…
前回、RISC-VのRocket Chipに整数のDot Productを計算するアクセラレータを接続した。 これにより、整数行列積の計算において、約2.7倍の高速化を達成した。 ただし、これはまだ高速化できる余地がある。 一度データをアクセラレータ内に格納すると、次に同…
Rocket ChipとChiselの勉強を進めてきた。RoCCのインタフェースにChiselで記述したアクセラレータを接続して、その効果を測定した。 まずは簡単化のために、RoCCインタフェースからメモリの値を読み込んで、その値をすべて加算するプログラムを書いてみた。 …
RISC-VのRocket Chipで、FPGAにインプリメンテーションをするためにはいくつかの方法があるが、その中でfpga-zynqリポジトリ(https://github.com/ucb-bar/fpga-zynq)を使って、FPGAにRISC-Vを焼いてみている。 その中で、やはりRoCC(Rocket Custom Coprocess…
RISC-VのRocket Chipを使う構成で、FPGAにインプリメントするためのパッケージとしては以下の2つがあるだろう。 UCBのfpga-zynqリポジトリを利用する (https://github.com/ucb-bar/fpga-zynq) SiFiveのfreedomリポジトリを利用する (https://github.com/sifi…
世の中ではAppleが新しい製品を発表するらしくそっちで徹夜している人はたくさんいるだろうが、私はRISC-VのWebinarを聴講するために徹夜してました。 zoom.us 内容としてはRISC-Vの基本的なISAの基礎から始まる初心者向け。 なお、このウェブセミナーは三回…
RISC-V評価ボードのHiFive1は、オンチップのメモリが少なく、L1Dキャッシュが16KBしかない。それ以外のデータにアクセスするためには、外部のフラッシュメモリを利用する必要がある。 これにより、ほとんどすべてのデータはあらかじめフラッシュメモリに格納…
RISC-Vチップで動作するプログラムを開発する場合、いくつか方法が存在する。 Arduino IDEを使って開発する Freedom-E-SDK を使って開発する これらの方法はどちらとも、本ブログを通じで紹介してきた。Arduino IDEは他のArduinoプラットフォームとの親和性…
msyksphinz.hatenablog.com RISC-Vに特化したワークショップ、IEEE MICROとの連携で開催されるCARRV(Computer Architecture Research with RISC-V)の事前プログラムが公開されています。 開催は2017/10/14、ボストン RISC-Vシミュレーション、エミュレーショ…
本日アナウンスがあって知った。Amazonが提供するインスタンスF1で動作するRISC-V マルチコアNoCがリリースされたらしい。 fires.im 名前は"FireSim"。AmazonだからFireなのかな? 構成としては2種類用意されている。Amazon F1にも2種類あるが、 f1.2xlarge …
RISC-VプロセッサHiFive1でMNISTを実行させている。現状の問題点としては、いろいろなところが遅いことだ。 予想よりも性能が出ない。いろいろ試行した結果、やはり問題としては学習データがCPUに対して遠いところにある事だろう。 つまり、固定値の学習デー…
前回は、RoCCインタフェースを使って専用ハードウェアを動かし、通常のソフトウェア命令を動かした場合と比べてどの程度性能が異なるのか調査した。 その結果、ハードウェアがシンプルなためか、ソフトウェアを使った場合と大差ない結果になってしまった。 …
RoCCインタフェースを使って専用命令を作成し、ハードウェアアクセラレーションができるようになった。 とりあえず、まずは小手調べに、メモリからデータを読み込んで加算する専用ハードウェアを作成し、その性能を見てみよう。 作成するハードウェア まずは…
ずーっとRoCCインタフェースの勉強をやっているのだが、やっとわかった気がする。途中で動作が止まってしまうのはやはり途中でリクエストキューがいっぱいになってしまうからだ。 RoCCインタフェースにはタグが付いているのだが、このタグにちゃんとしたIDを…
RISC-VプロセッサHiFive1でMNISTを動作させよう。実機デバッグをしていて、やっと動作するようになった。 バッチサイズを増やすとデータセクションが入りきらないのでいろいろ工夫したいが、もうちょっと軽量化できないだろうか。 HiFive1(32bit RISC-V)での…
RISC-VプロセッサHiFive1でMNISTを動作させよう。実機デバッグをしていて、やっと動作するようになった。 まだバッチサイズは1のままだが、とりあえず動作するようになった。 問題だったのは、データの配置方法だった。ちゃんと調整して入力データを流すと、…
だいぶ時間が空いてしまった。RISC-VプロセッサHiFive1を使った実験、機械学習のネットワークを動作させてMNISTを動作させる件、やっと再開した。 とりあえずMNISTのデータを使ってちゃんと計算できるようになりたい。それでも、デバッグはなかなか大変だ。 …
前回から一生懸命RoCCインタフェースに接続したアクセラレータのデバッグをしているのだが、どうも上手く行かない。 RoCCインタフェースからコマンドを受け取って、L1キャッシュに対してアクセスをしてデータを取り出し、そのデータに対して加工を行いたいの…