読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

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

setjmpとlongjmp はどのように実現されているのか

setjump(), longjump()について基本的なことを調査するために、まずは以下のページなどを読んで勉強した。 http://www.nurs.or.jp/~sug/soft/super/longjmp.htm (制限はあるが)どのような場所からでも、setjump()を実行した場所に戻ってくることが出来る。こ…

FreeRTOS-RISCVの起動シーケンスを追いかける(1)

FreeRTOSの話題の続き。前回FreeRTOSのRISC-V版を少しエミュレータで試してみたものの、何も動作せずに終わっていたのだった。 (そしてそれを特に原因究明せず放置していた。) msyksphinz.hatenablog.com それではあまりにもつまらないので、自作ISSを使って…

RocketChip/BOOMプロセッサの波形ダンプの方法

RISC-VのUC Berkeley実装であるRocketChip/BOOMはエミュレーション時にVerilatorを使用している。 基本的な命令トレースなどは出力することが出来るが、波形を出力するためのオプションが存在する。 make CONFIG=BOOMConfig output/rv64ui-p-add.vcd テスト…

エンジニアだってあなたのことが嫌いなわけじゃない

megamouth.hateblo.jp 読んだ。すごく良い記事だと思った。エンジニアの試行回路をトレースされているようで、読みながら「分かるーーー!!」ってなってしまった。 (僕の知る限り)新しいプロジェクトが始まるとき、不完全なものを作ろうとするエンジニアな…

Verilogの慣性遅延と伝播遅延

最近までハードウェア設計における慣性遅延と伝播遅延について知らなかったのでメモ。 VHDLでは、明確に慣性遅延と伝播遅延についての文法があるらしい。Verilogでは結構ややこしい。 まずは例題 以下のようなVerilogを記述した。それぞれinertial_ff, trans…

FreeRTOSとZynqの勉強(アドレスマップについて)

そういえばFreeRTOSの勉強をする前に、Zynqについても基本的なアドレスマップについてちゃんと調査したことがなかった。 Zynqのアドレスマップは、Xilinxの資料を調べると以下のようになっていた。 Zynq-7000 All Programmable SoC Technical Reference Manu…

FreeRTOSをZedBoardで動作させる(1. チュートリアルを実行する)

以前、FreeRTOSを調査したときは、RISC-Vのターゲットとして調査したものだった。ところが、調査を進めると普通にFreeRTOSはZynqチップにも移植されており、Cortex-A9でも動作させることが出来るらしい。 msyksphinz.hatenablog.com 今回はRTOSの勉強の最初…

個人の開発進捗管理のためにBitnami RedmineをさくらのVPS上に構築した

msyksphinz.hatenablog.com 前回の記事で、Bitnami Redmineの構築方法を確立したため、桜インターネットのVPSサービスを利用して、個人開発用のRedmineを構築した。 Redmineは開発の項目だけでなく、いろんなプロジェクト、例えばマラソンとか、資格試験の勉…

RISC-VがLinley GroupのRISC-V chosen as Best Technology of 2016に選ばれました

riscv.org The Linley Group Announces Winners of Annual Analysts' Choice Awards The Linley Group - The Linley Group Announces Winners of Annual Analysts' Choice Awards まあ私は関係者でもなんでもないんだけど、おめでとうございます。 Linley Gr…

「QEMUの仕組み」を探る(実装の詳細について)

引き続き、QEMUの論文を読んでいく。dyngenトランスレータの基本は分かったので、実装の詳細について説明を読み進めていこう。 QEMU, a Fast and Portable Dynamic Translator, Fabrice Bellard http://archives.cse.iitd.ernet.in/~sbansal/csl862-virt/201…

「QEMUの仕組み」を探る (dyngenによるターゲット命令の動的変換)

いろんな事情でQEMUについて勉強したくなったので、QEMUとはいったいどういう機構で動いているのか、簡単に勉強できる文章を探していたのだが、以下のような論文を見つけた。 QEMU, a Fast and Portable Dynamic Translator, Fabrice Bellard http://archive…

個人の開発進捗管理のためにBitnami Redmineを構築する

自分の趣味の開発や、趣味のプロジェクトの進捗管理のためにRedmineを構築する。 これまでもRedmineを使っていたのだが、サーバのレンタルを止めてしまいRedmineも止めていたのだった。 Redmineの構築はいつもステップが多くて面倒なのだが、今回はBitnami R…

教育用RISC-V実装Clarviの調査 (Modelsim Altera starter editionのインストールとコンパイル)

前回Clarviの調査ということで概要を把握したのだが、SystemVerilogを実行できるシミュレータを持っていなかったため、シミュレーションが実行できなかった。 msyksphinz.hatenablog.com ところがその後各方面から「Modelsim Altera starter editionを使えば…

FreeRTOSのRISC-V移植版

RISC-Vのメーリングリストを読んでいて知ったのだが、FreeRTOSという無償のリアルタイム向けOSがあるらしい。これをRISC-V向けに移植している人がいるそうだ。 www.freertos.org RISC-Vへの移植が進められており、Privilege v.1.9への移植版が公開されていた…

教育用RISC-V実装Clarviの調査

Twitterでvengineerさんに教えてもらった教育用RISC-V実装、Clarviについて簡単に調査してみた。 Clarviは大学が教育用に作成したRISC-Vプロセッサで、もちろんRISC-Vの仕様に完全に準拠しているわけではないが、非常にコンパクトな実装と、教育用に簡単な拡…

RISC-V実装におけるのリグレッションテスト実施方針

RISC-VにおけるテストセットのPass/Fail判定 過去の記事でも少し解説したが、RISC-Vではriscv-testsというテストパタンセットが用意されている。 msyksphinz.hatenablog.com パタンの説明では、どうやら0x8000_1000への書き込みでもってパタンの終了を判定し…

アウトオブオーダプロセッサの性能解析(リネーミングユニットから命令の受け渡し)

msyksphinz.hatenablog.com 前回の性能解析でそもそもバグとして残っていた部分だが、アウトオブオーダプロセッサが実行中の命令というのはリオーダバッファで管理されており、もちろんこのリオーダバッファが溢れるような状態になると命令の発行を中止しな…

RISC-Vの特権レジスタ群のアクセス権限まとめ

Reserved Writes Ignored, Reads Ignore Values (WIRI) WIRIビットフィールドの例 Reserved Writes Preserve Values, Reads Ignore Values (WPRI) WPRIビットフィールドの例 Write/Read Only Legal Values (WLRL) WLRLビットフィールドの例 Write Any Values…

GPU対応TensorFlowをWindowsにインストールする方法まとめ(試行錯誤した結果)

ずいぶん昔の話だが、TensorFlowがWindowsに対応した。どうやらコマンドプロンプト経由でインストールする形式のようだ。 今回初めてTensorFlowをWindowsに導入してみたので、その手順を記録しておく。 msys2経由でのWindows版TensorFlowは難しい(不可能だっ…

RISC-Vの特権レジスタ群の割り当てまとめ

訳あってRISC-Vの特権レジスタ群の仕様を読み込んでいるのだが、Privilege Instructionの仕様書をしっかり読むとなかなか面白い。 Chapter-2のControl and Status Registers(CSR)ではCSRレジスタ群についてまずは簡単に分類がされているのだが、いろんなこと…

マニュアルなどの文章をRestructuredTextに移行した

しっかりした文章や、マニュアルなどを作成してpdfやhtmlとして公開したい場合や他人に見てもらいたい場合、いくつかの方法が存在する。 LaTeX : それなりに昔から使われている文章整形ツール。非常に美麗な文章が作成できる。数式などもお手の物。ただし作…

あけましておめでとうございます

あけましておめでとうございます。本年も、本ブログをよろしくおねがい致します。 昨年は、 RISC-Vをベースとした自作ISS/RTL設計 Vivado-HLSの勉強 技術翻訳で文書2本を翻訳 など、様々なことに手を出した一年でした。 今年の目標として、 ZedBoardを用いて…

年末だしブログの情報を回収してワードクラウドを作ろう2016

年末年始だなんて、別に特別なことも無く、特にまとめる必要もない!と思っていたのだけれども、今年の初日に書いたブログの記事を読み直して驚愕した! msyksphinz.hatenablog.com ZedBoardを用いて、ARM & PLDを用いたシステムの構築。要素技術の構築とし…

Zeitgeist 半導体 2016 ~買収で振り返る半導体業界2016~

2016年は、2015年に引き続き半導体業界は買収に揺れた一年であった。2015年程ではないが、2016年の大きな買収のニュースが何件も発表され、業界の再編が進んでいる。 2016年の最後に、2015年、2016年に起きた半導体業界の再編を、買収報道を振り替えりながら…

アウトオブオーダプロセッサの性能解析(アウトオブオーダ命令発行の性能解析)

CPU

自作CPUの性能解析およびリグレッションをしているのだが、アウトオブオーダ発行のところで少し怪しいところを見つけた。 命令発行スロットに格納された命令は、どのように発行されるのだろうか。 一般的に命令発行スロットに複数命令が格納される場合、ここ…

EmacsのExuberant Ctags導入試行(Verilog-HDLで使いものになるか?)

普段の開発には主にEmacsを使っているのだが、良くある事例として現在参照しているモジュールがどこにあるのか分からなかったり、この定数がどこから定義されているのか分からなかったりすることが良くありますよね。 ソフトウェアの世界だと、これらの関数…

「ハードウェア開発、CPUアーキテクチャ」Advent Calendarが終了しました

qiita.com 12/01から始めた「ハードウェア開発、CPUアーキテクチャ」Advent Calendar、全ての日でエントリが埋まり、無事に終了しました。 まずはご協力頂いた皆様、どうもありがとうございました。皆様のご協力がなければ、25日全てを埋めることは不可能で…

128bitまで対応したRISC-VエミュレータでLinuxが動く (しかも超高速)

ダウンロードとビルド riscvemuを動作させる riscvemuの実行方法 risvemuを利用したSimple Linuxの起動 シレっとRISC-Vメーリングリストに投稿されたこれ、QEMUの開発者でもあるFabrice BellardがRISC-Vの128bitモードまで対応したエミュレータを開発したと…

RISC-Vのテストパタンセット riscv-tests

最近はほとんどテストベンチのメンテナンスを行っていなかったのだが、Privileged Instructions v1.9.1に対応させるために、久し振りにriscv-testsを使ったISSのリグレッションを実行してみた。 しばらくずっと触っていなかったのだけれども、昔メンテナンス…

RocketChip RISC-V実装RTLにてベンチマークを計測する(2. -O3によるCoremarkコンパイル)

前回の続き、-O3によるコンパイルでISSシミュレーション実行できたため、今度は自作RISC-Vプロセッサを使って、Coremarkを計測してみよう。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com 1. 32ビットモードGCCの準備 2. シミュレーション結果 3. IP…

RocketChip RISC-V実装RTLにてベンチマークを計測する(2. -O3によるCoremarkコンパイル)

これは「ハードウェア開発、CPUアーキテクチャ」Advent Calendar... ではありません。 前回中途半端に終わった、Coremarkの測定試行についてもう少し調査したのでそれをまとめたい。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com -O3でコンパイルす…

高位合成言語Chiselイントロダクション(2)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の20日目の記事です。 ハードウェア開発、CPUアーキテクチャ Advent Calendarも、25日分ほぼ埋まってきました。あともう少し、各担当者の皆様、頑張りましょう! Chiselをどの…

高位合成言語Chiselイントロダクション(1)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の19日目の記事です。 ハードウェア開発、CPUアーキテクチャ Advent Calendarも、25日分ほぼ埋まってきました。あともう少し、各担当者の皆様、頑張りましょう! 今回はちょっ…

「ローグ・ワン スターウォーズ ストーリー」を見てきた

スターウォーズ大好きです。 映画館に入るときに貰ったミニポスター。ちゃんとした袋に入れて渡して欲しかったなあ。帰るまでにちょっと曲がっちゃったよ。。。 去年もEpisode-7は公開初日のレイトショーに行ってしまったし、合計で3~4回は見に行った気がす…

「アジャイルサムライ」買いました。ハードウェア開発がアジャイルになるためには。

以前からずっと気になっていた、「アジャイルサムライ」を買った。 アジャイルサムライ−達人開発者への道−作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未出版社/メーカー: オーム社発売日: 2011/07/16メディア: 単行本(ソフトカバー)購…

BOOM RISC-V実装RTLにてベンチマークを計測する

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の16日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-V 5th Workshopの発表紹介 (RISC-V Vector Extension)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の15日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RocketChip RISC-V実装RTLにてベンチマークを計測する

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の14日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-VのOoOプロセッサ、BOOMの性能を読み解く(2)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の13日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-VのOoOプロセッサ、BOOMの性能を読み解く(1)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の9日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

組み込み向けプロセッサの性能評価指標、ベンチマークを動作させる

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の9日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

CPUの性能を測る基準、ベンチマークについて

CPU

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の8日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-V 5th Workshopの発表紹介 (Fast Instruction Set Simulator)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の7日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-V 5th Workshopの発表紹介 (Time Traveling Coherence Algorithm)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の6日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

個人が趣味で技術書を翻訳するという意義について

この記事は 技術翻訳 Advent Calendar 2016 - Qiita の4日目の記事です。 突然の参加ですが、趣味で技術翻訳を長年続けてきた立場から、思うことやこれから技術翻訳を行う人にアドバイスが出来たらなと思う。 1. これまで翻訳してきた技術書 2011年-2012年 2…

RISC-Vの特権命令まとめ

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の5日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-Vアーキテクチャの実装についてまとめ

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の2日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-Vについて改めて

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の1日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

自作プロセッサの性能解析とその対策(7. コンパイラ最適化オプションの調整)

CPU

前回の記事で、-O3付きでコンパイルできないという問題が残っていたのだが、それを何とか回避できないか試行してみた。 そもそも-O3とはどのようなオプションなのだろうか?調査してみると、-O2に対して以下の最適化オプションを追加したものが-O3らしい。 g…

自作プロセッサの性能解析とその対策(6. コンパイラの最適化オプション追加とそれによる性能変化)

CPU

だんだんネタも無くなってきたので、CoremarkをRISC-VのGCCでコンパイルするにあたり、本当に最適なオプションになっていたのかを調査してみようと思う。 以前までのCoremarkは、以下のオプションでコンパイルしていた。 PORT_CFLAGS = -O2 -g $(MACHINE_TAR…