2019-02-01から1ヶ月間の記事一覧
LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。 jonathan2251.github.io 第6章はグローバル変数をサポート。 グローバル変数のサポートには4種類があって、それぞれどのような処…
Vivado-HLSを使って簡単なRISC-V CPUを作ってみている。 s_axiliteとm_axiの違いで動作しなくなってしまい苦労していたが、色々調べていると、#pragmaでいろんなところにm_axiを入れていけば解決することが分かり、無事にデザインを合成することができた。 g…
Vivado-HLSを使って簡単なRISC-V CPUを作ってみている。 テストがこんなに遅いのはなんでだ?デザインに根本的な間違いがあるのではないかと思いいろいろ見直していたのだが、あれ、よく見るとCPUのバスがスレーブの設定になってるじゃないか。 directives.t…
LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。 jonathan2251.github.io Chapter-5を進めていこう。これまではアセンブラ形式のみを対応させていたが、今度はオブジェクトファイ…
CQ出版さんの雑誌「インターフェース」で連載していた「オープンソースCPU「RISC-V」の研究」が今月号で最終回を迎えました。 13回にわたり長々と連載をしてきましたが、今回で一応一区切りということになります。 連載を開始したのはおおよそ1年前で、ほぼ1…
今年の目標の一つに、新しいプログラミング言語を覚える、というものを追加していた。ターゲットの言語としてはRustにした。 Rustは低レベルのプログラミングにも使えそうだし、C/C++系の普通のプログラミング言語しか触ったことのない私としては何かと面白…
Vivado-HLSを使って簡単なRISC-V CPUを作ってみている。 一つのテストパタンが動作するようになったので、全てのテストパタンを動作させて実装の確認を行っていく。 追加していない命令はたくさんあるので、テストは完走はしないだろうが、一応チェックして…
https://content.riscv.org/wp-content/uploads/2018/12/13.10-Bandic-Golla-Vucinic-CPU-Project-in-Western-Digital-From-Embedded-Cores-for-Flash-Controllers-to-Vision-of-Datacenter-Processors-with-Open-Interf.pdf より抜粋 Western DigitalがTile…
LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。 Chapter-4.2のあたりを進めている。論理演算命令と比較命令だ。 比較命令をテストしようとすると、MYRISCVXの実装では命令の生成…
Vivado-HLSを使って簡単なRISC-V CPUを作ってみている。 とりあえず基本的なパタンが動くようになったので、Co-Simulationの実施とサイクル測定を実施する。 Co-Simulationを実施すると、RTLシミュレーションでも無事に動作していることが確認できた。 では…
Western DigitalからオリジナルのRISC-VコアSweRVがリリースされ、テストベンチが動かせるようになった。 久しぶりに見てみると、アセンブリをコンパイルしてシミュレーションに使用する環境がマージされている。 テストには hello_world.s hello_world2.s …
LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。 資料としては Tutorial: Creating an LLVM Backend for the Cpu0 Architecture を使用している。やっとChapter-4だ。 DIV命令は…
LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。 資料としては Tutorial: Creating an LLVM Backend for the Cpu0 Architecture を使用している。やっとChapter-4だ。 今回からは…
Vivado-HLSを使って簡単なRISC-V CPUを作ってみている。 まずは性能を度外視して動くものを作る。 次に、性能を向上させるための様々な試行を実施する。 まずは、標準的なテストパタンをPassさせるために命令を追加していこう。 これまでは、CPUのクラスは存…
Vivado-HLSを使って簡単なRISC-V CPUを作ってみている。 まずは性能を度外視して動くものを作る。 次に、性能を向上させるための様々な試行を実施する。 まずは、標準的なテストパタンをPassさせるために命令を追加していこう。 一般的なCPUと同じで、まずは…
LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。 Cpu0チュートリアルの、ch3_largeframe.bcをうまくアセンブリ生成することができない。 大きな値を作成するために、MYRISCVXAnal…
Vivado-HLSで高位合成からCPUを作ってみたい。 高位合成でCPUを作るというのはネタとしてはイマイチだけれども、高位合成がどういうものか、目標をもって試してみるには良い題材だと思うので試してみている。 前回はとりあえずメモリにアクセスしてデータを…
nanakai-movie.jp 七つの会議 (集英社文庫)作者: 池井戸潤出版社/メーカー: 集英社発売日: 2016/02/19メディア: 文庫この商品を含むブログ (11件) を見る 映画「7つの会議」を見てきました。企業の隠蔽体質というか、ブラックな部分を暴く映画としては結構面…
LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。 関数コールに対応するためには、EmitPrologueおよびEmitEpilogueを実装しなければならない。 このためには、ロードストア命令・…
Rustにとても興味がある。 いつもソフトウェア環境はC++を使って構築しているので、Rustに移行すると何か良いことがあるのか? という訳で今年の目標はRustを覚えることに決めた。 Rustの言語使用自体は分かるような気がするのだが、それで現実的なアプリケ…
AXIは基本的にReady-Validのハンドシェークで動いているのだけれども、これをひたすら繋いでいくと、ValidとReadyがFFを経由せずにつながってしまい、タイミング的に問題となる。 msyksphinz.hatenablog.com これを改善するために、各種バスプロトコルにはス…
いろいろ訳あってCPUのアウトオブオーダ実行とか、マルチコアのキャッシュコヒーレンスの仕組みとかを勉強し直しているのだが、勉強するにあたり非常に良い資料がたくさんあるので紹介。 プロセッサアーキテクチャについて学ぶのには、もちろん教科書として…
過去の日記では、キャッシュスヌープ方式のキャッシュコヒーレンシ制御の方法をざっくりと見たが、今度はもう一つのディレクトリベースのキャッシュコヒーレンシ制御についてみていく。 キャッシュスヌープ方式の記事はこちら。 msyksphinz.hatenablog.com …
Western DigitalからオリジナルのRISC-VコアSweRVがリリースされ、テストベンチが動かせるようになった。 構造が分かってきたので、今度は自分のプログラムを動かしてみたい。 github.com マニュアルのメモリマップを見ても正しいようには思えないのだが、と…
随分前にIndieGogoで募集していた、RISC-V ASICチップ+AIモジュールキット、Sipeed MAIX が届いた。 モードと外部ディスプレイ、カメラなどの基板がセットだ。 www.indiegogo.com とりあえずまだ時間がないのでまだ触れない... あと、ドキュメントが余りな…
Vivado-HLSの勉強をしてみたいのだけれども、何か題材をもってデザインを作ってみる方が良いと思う。 そこで、簡単なモデルでも良いのでCPUを作ってみることにした。 最終的にはRISC-Vを実行させてみたいのだけれども、まずは簡単なモデルから動かすというこ…
Western DigitalからオリジナルのRISC-VコアSweRVがリリースされ、テストベンチが存在しないのでしばらく放置していたのだが、リビジョンが上がってテストベンチが公開された。 https://github.com/westerndigitalcorporation/swerv_eh1 しかし、ソースコー…
Vivado HLSについて再入門しようと思っている。 最近は環境をVirtual BoxからWindows Subsystem on Linux(WSL)に変更したので、その環境下でVivado HLSが動くようにしておきたい。 私が使うのは、基本的にGUIは立ち上げずにスクリプトだけで処理を行いたい。…