FPGA開発日記

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

RISC-V for LLVMのビルド試行 (2. RISC-Vターゲットでのコンパイルとテスト)

RISC-V on LLVMについて少し調べている。 LLVMのソースコードを眺めていると、TargetとしてRISC-Vが追加されているのを発見した。 なんだ、追加されてるじゃないか。じゃあ動くんじゃないか。 という訳で最新版のLLVM(ver 8.0?)とClangを落としてきて、パッ…

2018年のRISC-V関係の(私の)講演資料をすべて公開しました

ずいぶんとアップロードするのを忘れていましたが、今年の予定しているRISC-V関係の講演はすべてやり切ったので、発表資料をすべて公開したいと思います。 今年は4件講演しました。秋頃から集中したのでずいぶんと息切れしました。 特にDesign Solution Foru…

Ubuntu on Windows Subsystem for LinuxでRISC-V環境のビルド試行

Ubuntu on Windows Subsystem for Linux上でRISC-Vのツールチェインとデザインが使えるのかどうか試行した。 なんでこんなことをしているのかというと、自宅で使っているUbuntu on Virtual Boxがクラッシュして自宅のRISC-V環境を全部失ったから。 折角なの…

Writing an LLVM Backendをやってみる(1. RISCV64プロジェクトを作成)

LLVMのバックエンドについてより理解するために良さそうな資料を見つけたので一通り触ってみることにした。 Writing an LLVM Backendという。 Writing an LLVM Backend — LLVM 8 documentation この資料では、新しいターゲットアーキテクチャを追加するにあ…

RISC-V for LLVMのビルド試行

コンパイラ勉強会に参加してコンパイラ熱が高まっているので、LLVM for RISC-Vについて久しぶりに調べた。 これまで何度かRISC-V for LLVMについて調べてきたが、Mailing Listなどを見ていてもあまりアップデートがない。 msyksphinz.hatenablog.com msyksph…

Chiselで記述された教育用RISC-VプロセッサSodor (1. ビルドとセットアップ)

Chiselのイントロダクションを一通りやり終えたので、次はより実践的なデザインを見ていくために、RISC-V Sodorを見ていくことにした。 Sodorは教育用に作られたRISC-Vのプロセッサで、Rocketよりも単純な構成を取っている。 デザインも1ステージのものから5…

PortSmashで学ぶ高性能プロセッサの同時マルチスレッディング

CPUの脆弱性として新たに報告された "PortSmash" 、どういう脆弱性なのかを調べるために論文を探すと公開されていた。 Port Contention for Fun and Profit https://eprint.iacr.org/2018/1060.pdf "Port Contention for Fun and Profit" という論文として公…

Chisel2とChisel3でのVerilog/C++コード生成フローの違い

Chiselにはバージョンがあり、Chisel2とChisel3が公開されている。 微妙に文法が異なっているので要注意だ。 Chisel2ではVerilogとC++を生成する方法が公開されているが、Chisel3ではどうだろう。 Chisel2でのVerilogとC++の生成方法については、以下のサイ…

ET/IoT Technology 2018のテクニカルセッションで講演します

Embedded Technology(今はET/IoT Technologyと言うのかな) 2018のテクニカルセッションで講演することになりました。 発表の一週間前になりましたので、例によって告知です。 日付 : 11月14日(水) 14:00-15:30 場所 : パシフィコ横浜 F201 アネックスホール …

Chisel-Bootcampを試してみる(2. FIRRTLについて)

Chisel-Bootcampの続き。第4章はFIRRTLについて学習した。 Chiselで記述したハードウェアデザインは、FIRRTLのモジュールを組み込むことでVerilogに変換できる。 また、ASTの情報を作り上げて出力することができる。 Chiselを使ったこれらの処理の利点として…

Chisel-Bootcampを試してみる(1. Chiselの基礎からScalaを活用した回路設計法まで)

Chiselの勉強を本格的にやっているのだが、教材として良いものを見つけた。Chisel-Bootcampというものだ。 github.com Chiselの基礎から、チュートリアル風に、サンプルを交えながら、途中でExerciseも出てくるのでそれをこなしながら進めていく。 本来はJup…

Environmental-Modulesを止めてLmodに移行した

ツールチェインとかコンパイラの環境を変更するために、Environmental-Modulesというツールを使用している。 Environmental-Modulesは、使用するツールチェインに応じてPATHや環境変数を変えるためのツールだ。 ソフトウェア界隈ではあまり知られていないと…

Pythonを経由してC++のオブジェクトを扱う方法(2. C++のオブジェクトをPythonのオブジェクトのように扱う方法)

自作RISC-Vシミュレータは、バイナリファイルを指定するとそれを読み込んで、指定したプログラムカウンタの場所からシミュレーションを実行し、tohostのアクセスに到達するか最大実行サイクルに到達すると終了するのだが、そうでなく、もう少しInteractiveに…

Quantum Convolutional Neural Networksの勉強

ニューラルネットワークを量子コンピュータの考え方で改良する方法、Quantum Convolutional Neural Networksについて論文を読んでみた。 Quantum Convolutional Neural Networksを「量子畳み込みニューラルネットワーク」と考えればよいのだろうか。 畳み込…

Pythonを経由してC++のオブジェクトを扱う方法

自作RISC-Vシミュレータは、バイナリファイルを指定するとそれを読み込んで、指定したプログラムカウンタの場所からシミュレーションを実行し、tohostのアクセスに到達するか最大実行サイクルに到達すると終了するのだが、そうでなく、もう少しInteractiveに…

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回分投稿させていただきました。 もともと入門者向…