FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2018-10-01から1ヶ月間の記事一覧

RISC-VのSupervisor Binary Interface(SBI)について

RISC-Vのハイパーバイザについて調べているとき登場したが、Supervisor Binary Interface(SBI)というものが定義されている。 図. RISC-Vのソフトウェアスタック (https://riscv.org/wp-content/uploads/2015/01/riscv-software-stack-bootcamp-jan2015.pdf …

RISC-Vのハイパーバイザ仕様について調べる(2. ハイパーバイザのCSRとアドレス変換について)

RISC-Vのハイパーバイザの仕様について調査中。前回の続き。 参考にしているのは、 RISC-V ISA Manualの最新版(正式リリース版ではなくDraft版。こちらにはハイパーバイザの仕様案が含まれている)。 github.com また、RISC-VのSBI(Supervisor Binary Interfa…

RISC-Vのハイパーバイザ仕様について調べる(1. ハイパーバイザのモードと主要システムレジスタについて)

RISC-V Day Tokyo 2018にも出てきたハイパーバイザ仕様、はっきり言って自分にはさっぱり理解できなかった。 そもそもハイパーバイザの知識が無さすぎるので、これが良い機会なので一から勉強してみることにする。 参考にしているのは、 RISC-V ISA Manualの…

Arm DesignStart Cortex-M3を試す(5. オリジナルプログラムをビルドしてシミュレーションする試行)

ARM

Arm DesignStart ProgramではCortex-M3も開放されており、こちらもRTLシミュレーション環境が用意されていた。 前回はDhrystoneやhelloを動かしてみたが、オリジナルプログラムをコンパイルして動作させることはできるだろうか。試行する。 例えばhelloのプ…

TOKYOトライアルハーフマラソン2018に参加

ハーフマラソンに参加するのは人生で2回目。 TOKYOトライアルハーフマラソンは、東京マラソンと同じ財団が運営しているハーフマラソン大会らしい。 場所は四ツ木駅の付近。参加者は2000~3000人程度?だったと思われる。 マラソン初心者にとってうれしいのは…

Arm DesignStart Cortex-M3を試す(5. オリジナルプログラムをビルドしてシミュレーションする試行)

ARM

Arm DesignStart ProgramではCortex-M3も開放されており、こちらもRTLシミュレーション環境が用意されていた。 前回はDhrystoneやhelloを動かしてみたが、オリジナルプログラムをコンパイルして動作させることはできるだろうか。試行する。 例えばhelloのプ…

Arm DesignStart Cortex-M3を試す(4. Modelsimを使ってCortex-M3の波形を観測する)

ARM

Arm DesignStart ProgramではCortex-M3も開放されており、こちらもRTLシミュレーション環境が用意されていた。 RTLシミュレーションができるようになったので、波形を観測してみよう。 ModelSimでGUIを立ち上げて、バスを観測する。 ModelSim IntelFPGA Star…

Arm DesignStart Cortex-M3を試す(3. Modelsimを使ってDhrystoneを流す)

ARM

Arm DesignStart ProgramではCortex-M3も開放されており、こちらもRTLシミュレーション環境が用意されていた。 図. https://community.arm.com/processors/designstart/b/blog/posts/new-online-training-course-designstart-m3-an-introduction-to-armv7-m …

RISC-V Compliance Task Groupのテストパタンを試す(2. 自作RISC-Vシミュレータでテストパタンを通す)

RISC-V Foundationが公開しているテストパタンには、riscv-toolsリポジトリの中に含まれているriscv-testsテストパタンとは別に、RISC-V Compliance Task Groupのテストパタンが公開されている。 github.com ダウンロードして試行することができる。デフオル…

同一環境上で複数のGitアカウントを切り替えるための1アイデア

1台のLinuxマシン上でGitを使っていて、基本的に同一のアカウントを使っているのだけれども、リポジトリによっては別のアカウントを使ったり、状況に応じて複数のGitのユーザ情報を切り替えたいケースが発生することがある。 これは例えば会社でとあるプロジ…

RISC-V Compliance Task Groupのテストパタンを試す

RISC-V Foundationが公開しているテストパタンには、riscv-toolsリポジトリの中に含まれているriscv-testsテストパタンとは別に、RISC-V Compliance Task Groupのテストパタンが公開されている。 github.com ダウンロードして試行することができる。デフオル…

Googleの量子コンピュータフレームワークCirqを使ってみる(7. Cirqのチュートリアルで量子フーリエ変換を試す)

量子コンピュータの勉強を続けており、Cirqの資料をひたすら読み進めている。 Cirqのサンプルプログラムでも、量子フーリエ変換の例が挙げられている。 以下の論文を参考にしているらしい。 Implementation of Shor’s Algorithm on a Linear Nearest Neighbo…

RISC-V Reader(日本語版: RISC-V原典)を買った(もらった)

RISC-V Day Tokyo 2018の特典としてついてきたのだけれども、発表者も参加費払わないといけなかったし、これは実質買ったと言っていいでしょ。 RISC-V Readerというのはチューリング賞を受賞したDavid Patterson先生の書いたRISC-Vの入門書的な本なのだが、…

自作量子コンピュータ・シミュレータで量子フーリエ変換を実装する

量子コンピュータで効率化できるアルゴリズムとして有名なもののひとつに、量子フーリエ変換というものがある。 これは通常の離散フーリエ変換を量子コンピュータに応用するもので、詳細な理論は良く分からないのだが、RSA暗号を解読するためのベースとなる…

APSで連載しているRISC-V入門全8回がすべて公開されました

今年の初めくらいからAPSさんにRISC-Vの記事を寄稿していたのですが、全8回分が今回すべて公開されました。 www.aps-web.jp APSさんでの連載はこれにて終了になります。 今年の2月から1か月に1本ずつ、合計8回分投稿させていただきました。 もともと入門者向…

ゼロから作る量子コンピュータ・シミュレータ(8. 2D +/-イジングモデルでのエネルギー最小化問題をシミュレートする(2))

GoogleのCirqのチュートリアルに記載されている、2Dの+/-イジングモデルの問題を解いてみる。 Tutorial — Cirq 0.1 documentation 前回まででイジングモデルを使ってシミュレーションが完成したので、次はパラメータを動かして、最小のエネルギーになるパラ…

RISC-Vシミュレータの命令定義のテーブルをJSONを使って書き直す

GitHub上に公開している自作RISC-Vシミュレータは、命令を定義しやすいように、Rubyの配列上に命令の定義、オペランド、ビットフィールドなどを定義してある。 Rubyの配列で直接記述することで、スクリプトで簡単に読み込むことができるのだけれども、統一さ…

Arm DesignStart Cortex-M1を試す(2. SoC環境のRTLシミュレーションを実行する)

ARM

Arm DesignStart Cortex-M1の環境にはRTLシミュレーション環境があるので、それを試してみる。 もちろん、Cortex-M1自体は暗号化されていて中身は見えないので、SoC環境を構築してRTLシミュレーションし、その波形を観測することになる。 QSPIメモリモデルの…

RISC-V Day Tokyo 2018とIEEE MICRO51 Workshopで登壇します

すごくザックリしたタイトルですけど、何かしゃべります。 2018/10/18 RISC-V Day Tokyo 2018 @ 慶應義塾大学 2018/10/20 IEEE MICRO51 Workshop RISC-V Day Fukuoka 2018 @ グランドハイアット福岡 タイトルは「RISC-Vエコシステムを構成する技術と立役者た…

Arm DesignStart Cortex-M1を試す(1. リファレンスデザインを試す)

ARM

RISC-V対抗か何かわからないけれども、ArmがXilinxのFPGA向けにCortex-Mシリーズの一部を無償化した。 対象となっているのはXilinxのFPGAボードであるArty-A7かArty-S7のどちらか。A7を持っているのでダウンロードして試してみることにした。 内容を確認して…

Rocket-Chip実装のリグレッションスイートを試す(2. TL2APB実装の解析)

APBのChisel実装を観察してみる。 今回読んだのは、TL2APBというChiselで書かれた実装だ。TL(TileLink)からAMBAに変換するモジュールについては、 ToAPB ToAHB ToAXI4 の3種類があり、まずは一番簡単そうなAPBを観察する。 ちなみにSiFiveが以下のような資料…

ゼロから作る量子コンピュータ・シミュレータ(7. 2D +/-イジングモデルでのエネルギー最小化問題をシミュレートする(1))

GoogleのCirqのチュートリアルに記載されている、2Dの+/-イジングモデルの問題を解いてみる。 Tutorial — Cirq 0.1 documentation 以下のようにエネルギー関数を定義して、Eを最小化できるような$s$を計算するのが問題だ。 まずは、パラメータを固定して計算…

Rocket-Chip実装のリグレッションスイートを試す

全く資料が無いのだが、RISC-V実装であるRocket-Chipでは、リグレッションスイートが格納されているregression/というディレクトリが存在する。 make emulator-regression-tests SUITE=UnittestSuite まずはAMBAのテストを実行してみるためにいくつかテスト…

Googleの量子コンピュータフレームワークCirqを使ってみる(6. Cirqのチュートリアルを試す2)

量子コンピュータの勉強を続けており、Cirqの資料をひたすら読み進めている。 以下の資料を読みながら勉強中である。 Cir: Tutorial Tutorial — Cirq 0.1 documentation 一度チュートリアルを読んだのだが、意味が分からずに諦めてしまったのであった。リト…

"GAFA 四騎士が創り変えた世界"を読んだ

原題は"The Four"という。面白そうなので読んでみた。 ご存知の通りGAFAというのは Google Facebook Apple Amazon という世界を支配する4社のことであるが、この4社がどのようにして優位性を持つに至ったのか、どのようにして世界を支配するようになったのか…

SiFiveはクラウド上でRISC-Vチップを設計する

図. RISC-Vチップ設計を手掛けるSiFiveのシリコンクラウドサービスについて (https://content.riscv.org/wp-content/uploads/2018/07/1330-18.07.18-Huzefa-Cutlerywala-Open-Silicon.pdf より抜粋) 本日のTSMCのアナウンス記事、面白いと思ったのでメモ。 …

RISC-Vブート時のDevice TreeをParseする仕組み

SiFiveをはじめとするRISC-Vの多くの実装では、プログラムの起動時にDevice Treeを読み取りに行くケースが多い。 事実として、RISC-Vの命令セットシミュレータであるSpike(riscv-isa-sim)は内部にDevice Treeが格納されており、ブートする前に読み取ることが…

ゼロから作る量子コンピュータ・シミュレータ(6. Deutsch-Jozsaアルゴリズムを実装する)

量子コンピュータ・シミュレータの実装、骨格となるところは完成しており、あとはいろいろなゲートを挿入するだけとなっている。 かなり進んできたので、少し気分転換にDeutsch-Jazsaのアルゴリズムを実装してみよう。 Deutsch-Jazsaのアルゴリズムについて…

ゼロから作る量子コンピュータ・シミュレータ(5. Pythonインタフェースから全加算器を構成してシミュレート)

量子コンピュータ・シミュレータの実装、骨格となるところは完成しており、あとはいろいろなゲートを挿入するだけとなっている。 まずはアダマールゲート(Hadamard Gate)を実装してみることにする。 Hadamard Gate(Hゲート)の役割 Hadamard Gateを量子ビット…

Googleの量子コンピュータフレームワークCirqを使ってみる(5. 資料を見ながらCirqの計算フローを追ってみる)

Cirqの計算プロセスの続きである。Cirqがどのようにして量子状態の計算を行っているのかを見ていく。 とりあえず、前回から少しコードを変えた。アダマールゲートを使用するように変更する。アダマールゲートというのは、量子を重ね合わせの状態に持っていく…