FPGA開発日記

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

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がどのようにして量子状態の計算を行っているのかを見ていく。 とりあえず、前回から少しコードを変えた。アダマールゲートを使用するように変更する。アダマールゲートというのは、量子を重ね合わせの状態に持っていく…

Googleの量子コンピュータフレームワークCirqを使ってみる(4. Cirqの中身を追ってみる)

Googleの量子コンピュータフレームワークであるCirqを使っており、簡単な回路なら記述できるようになった。 次に疑問点として沸いてくるのは、Cirqはどのようにして量子状態のシミュレーションを行っているのかというところだ。 Pythonのコードを見るのは苦…

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

フルスクラッチで量子コンピュータ・シミュレータを作る話、骨格となる部分はおおよそ完成し、量子ビットを取り扱う方法を考える。 量子ビットを作成する方法の検討 量子ビットは、1量子ビットをPythonの1変数として宣言できるようにしたい。 例えば、以下の…

ゼロから作る量子コンピュータ・シミュレータ(4. シミュレータにPythonのインタフェースを追加する)

フルスクラッチで量子コンピュータ・シミュレータを作る話、骨格となる部分はおおよそ完成してきたので次はインタフェースの部分を調整する。 現在は量子回路を生成する部分はC++で記述しており、量子回路を書き換えるたびにリコンパイルが発生して格好悪い…

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

量子コンピュータの勉強を続けており、Cirqの資料をひたすら読み進めている。 以下の資料を読みながら勉強中である。 Cir: Tutorial Tutorial — Cirq 0.1 documentation Cirqのチュートリアルは以下に日本語訳と解説がなされており、非常にありがたい。 qiit…

TinyEMU Buildrootを試行する

TinyEMUはQEMUを開発したFabrice Bellard氏が開発したRISC-Vシミュレータだ。 さらに彼はRISC-VのLinuxを起動するためのbuildrootも用意したらしい。RISC-VのMLにアナウンスがあった。 TinyEMU とりあえず超高速のシミュレータでRISC-V Linuxを起動すること…

Googleの量子コンピュータフレームワークCirqを使ってみる(2. 加算器を作ってみる)

量子プログラミングについて少しずつ分かってきたので、もう少しステップを進めていきたい。 自作の量子コンピュータ・シミュレータの拡張を考えるためにも、GoogleやMicrosoftが発表している量子コンピュータのフレームワークについて勉強し、そこでいろい…

ゼロから作る量子コンピュータ・シミュレータ(3. 量子回路で3ビット加算器を作ろう)

前回は半加算器が完成した。という訳で、これを拡張させて全加算器を作成し、さらにこれを数珠つなぎにして3ビットの加算回路を作ろう。 量子回路で全加算器を作ろう 量子回路を使って全加算器を作るにはどうしたらよいのか、少し検索するとすぐ回路を見つけ…

RISC-V Day Tokyo 2018 / Fukuoka で登壇します

RISC-V Day Tokyo 2018が10/18(木) に開催されます。私はRISC-Vを支える技術周辺、エコシステム周りを発表する予定です。 15分しかしゃべらないのですが、興味のある方はどうぞ。 tmt.knect365.com やっぱりメインはRISC-V Readerの日本語訳の配布、そしてDa…