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

FPGA開発日記

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

OpenSPARC T1の調査(オープンソースなCPUの調査)

OpenSPARC T1を動かす話の続き。どうにかしてPLI部のコードをリコンパイルし、ModelSimから読めるように変更してみたが、どうしてもVeraの吐き出すイベントファイルが必要なようで、Vera無しでは動作させることが難しい気がしてきた。 OpenSPARC T2もT1もVer…

OpenSPARC T1の調査(3. PLI部のコンパイル→失敗)

OpenSPARC T1のPLI部を動かそうとしているのだが、ModelSim PLIがうまく動作せずに悩んでいる。土日にひたすら試行してたのだが、結局うまく行かなかった。 おそらく、自分でフルスクラッチで作るのだったら簡単に作れるのだろうが、今回はそうも行かず、Ope…

OpenSPARC T1の調査(2. ModelSimによるシミュレーション→フェッチが出ず)

前回に引き続いて、OpenSPARC T1のシミュレーションを走らせていたが、それっぽい動作をしたものの、イマイチ有益なログを出さずにシミュレーションが終了してしまった。 $ tree . . ├── bypass_win:model_core1:core1_mini:0 │ ├── diag.s │ ├── efuse.img …

OpenSPARC T1の調査(1. シミュレーション環境の構築)

どうもOpenSPARC T2の調査が芳しくないので、一つ前に戻って、OpenSPARC T1について調査してみよう。 まず、simsコマンドについて調査していたのだが、VCS, NC-Verilog以外のシミュレータを使うための手段として、以下のサイトが参考になった。 abishekramda…

OpenSPARC T2の調査(2)

OpenSPARCの調査を引き続き行っている。前回のファイルリストを加工するために、OpenSPARCのシミュレーションスクリプトsimsをどうにかこうにか動かしながら、cmp1(SPARCコア1つ)を動作させるためのファイルリストを作った。 ちなみに、simsはOpenSPARCのシ…

OpenSPARC T2の調査(1)

RISC-Vプロセッサの実装もちょっと手詰まりになってきたので、少し気分転換に、他のプロセッサはどのように実装されているんだろう、というのが気になった。 フリーで入手できるそこそこ高性能なプロセッサとしては、OpenSPARCか、RISC-VのBOOMが存在するが…

TOEICの結果と感想2017

1/29に受験したTOEIC試験の結果が公開された。結果としては、前回受験よりも10点ダウン。 下がってしまったのはしょうがないけれども、思ったより下がり幅が小さかったので一安心。 TOEICの新形式になり始めての受験だったが、問題形式が変更になったことと…

マラソン用イヤホン購入

今までマラソンに出るときは、ソニーのBluetoothを使っていたのだけれど、レシーバが大きくてちょっと不便だった。 www.sonymobile.co.jp そこでマラソン用のイヤホンを購入した。Amazonでたくさん調べて、ヨドバシカメラをぐるぐる回って、結局ヨドバシカメ…

RISC-Vテストパタン VMモードの解析

前回に引き続き、Sv32で動作させるときのテストパタンの動作について解析している。 RISC-Vのテストパタンは、基本的なテストを行うxxx.Sのアセンブラリストと、それを囲むプロローグとエピローグから構成されている。 中心となる検証用アセンブラリストは、…

RISC-V ISS Sv32, Sv39の実装

いまいち実装が進んでいないが、Sv32とSv39のISSへの実装しなおしが完了した。 Sv32とSv39については、前回の記事を参考にして欲しい。 msyksphinz.hatenablog.com github.com 実装方法としては、まずはPTEを参照しながら上位の物理アドレスを生成していき、…

特権命令の例外権限を委譲するためのRISC-Vシステムレジスタmedeleg, mideleg

テストパタンのチェックをしていて、スーパバイザモードで例外が発生してもスーパバイザモードに留まっているパタンがおり、何が起きているのだろうと調べていると、以下のようなレジスタの仕様を発見した。 目的としては例外が発生した場合のコンテキストス…

Bitnamiで構築したRedmineをBitbucketと同期させる

前回の続きだが、前回はRedmineとGithubを同期させた。 msyksphinz.hatenablog.com 同じ仕組みで、RedmineとBitbucketを連携させることが出来る。同じように、bitbucketからdaemonアカウントを使ってgitリポジトリをダウンロードし、Redmineにリポジトリを関…

Bitnamiで設定したRedmineをgithubと同期させる

個人の開発を記録するためにRedmineを導入したが、githubとの連携をまだ実現していなかった。 githubとの連携を実現するための情報はたくさんあるが、bitnamiで構築したRedmineとgithubはどのように連携すればよいのだろうか?調査してみた。 実現したいこと…

RISC-Vのメモリ仮想化の方式について (v1.9.1編)

自作ISSのテストパタンが通らなくなってきた! 特に仮想メモリを使っているパタンが通らなくなった。大昔に自作ISSに仮想アドレスから物理アドレスの変換を実装していたのだが、どうやら仕様がv.1.9.1で変わっているらしい。 もう一度チェックしてみよう。 …

組み込みシステムにおけるアドレスの考え方 (VMA, LMAについて)

CPU

ちょっと話が逸れるが、今回は組み込みシステムにおけるVMAとLMAの考え方についてまとめておく。 例えばリンカスクリプトなどを組み上げるとき、「CPUから見たアドレス」と「外部からデータをRAMに配置するときにみる領域」が違うことがある。 例えば、こん…

Intelの2.5D FPGA @ ISSCC

Intelがチップ間2.5D通信を採用したFPGAをISSCCで発表した。 www.eetimes.com まだ詳細は出て来ていないが、基本技術はEMIB(Embedded Multi-die Interconnect Bridge)というものらしい。 【後藤弘茂のWeekly海外ニュース】超広帯域メモリの採用を可能にするI…

RISC-V. Open Hardware for Your Open Source Software @ FOSDEM17

FOSDEM17 というイベントでRISC-Vについての講演があるらしい。 FOSDEMというイベントはこれまで知らなかったのだが、"FOSDEM is a free event for software developers to meet, share ideas and collaborate"ということで、 主にオープンソースツールにつ…

RISC-VのSpike-ISSを使ったFreeRTOSの起動ルーティンの解析(3)

前回の続きで、ROMにはさらにいくつかの情報を挿入しなければならない。0x1020から挿入しなければならないのが、以下のRISC-Vのコンフィグレーションに関する情報だ。 前回の記事で紹介した以下のものになる。 platform { vendor ucb; arch spike; }; rtc { …

RISC-VのSpike-ISSを使ったFreeRTOSの起動ルーティン解析(2)

前回の続き。Spike-ISSには通常のDRAM以外に別のメモリが貼り付けられていることが分かった。 今回焦点を当てたいのは0x1000に貼り付けられているROMらしきものだ。sim.ccには、以下のような記述でROMが生成されていた。 uint32_t reset_vec[8] = { 0x297 + …

RISC-VのSpike-ISSを使ったFreeRTOSの起動解析

前回の続きで、どうしても自作ISSとSpike-ISSの動作結果が一致しないところがあり、何が悪いんだろうと調べていた。 まず、spikeにはRISCV_ENABLE_COMMITLOGというログ出力用のフォーマットがある事は紹介した。 これだけでは情報としては不十分で、例えば実…

RISC-V のISS "Spike"のログフォーマットを拡張する方法

RISC-VにはUC-Berkeleyの開発した命令セットシミュレータであるSpikeが存在する。 github.com このSpikeというシミュレータ、高速でLinuxもブートできる優れものなのだが、欠点はログがほとんど見れず、プログラムが誤作動を起こしても何が起きているのかさ…

FreeRTOSをRISC-V Spike ISSで動作させるためのオプション

しばらくFreeRTOSをRISC-Vの自作ISSや、Spikeシミュレータで動作させることが出来ず悩んでいたのだが、いつの間にかSpike-ISSに以下のオプションが追加されているのを発見した。 $ spike --help spike: unrecognized option --help usage: spike [host optio…

資格試験(TOEIC)の勉強をRedmineで管理してみる試行

TOEIC受けてきた。毎年1度は受験するようにしているのだが、今回は比較的大きな会場だったのだが、音響もしっかりしている分、聞き取りにくいということは無かった。 去年の春からTOEICは新形式になっており、一応勉強はしていたのだがやはり時間配分や問題…

「アジャイルサムライ」を(とりあえず)読了した

アジャイルサムライ−達人開発者への道−作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未出版社/メーカー: オーム社発売日: 2011/07/16メディア: 単行本(ソフトカバー)購入: 42人 クリック: 1,991回この商品を含むブログ (255件) を見る ア…

RISC-VのJavascriptエミュレータはC言語から生成されている

前回の続き。RISC-Vエミュレータであるriscvemuのコンパイルオプションを調べていたのだが、やっと意味が分かってきた。 riscvemuのディレクトリにはjs/が入っており、RISC-VのJavascriptエミュレータが入っている。 最初はC言語からこのJavascript記述を呼…

RISCVEMU(高速RISC-Vエミュレータ)には2つのビルドモードがある(Emscriptenの調査)

RISCVEMUは高速RISC-Vエミュレータだが、その実装の仕組みを探っていると、どうやら2つのビルドモードがありそうだということが分かった。 msyksphinz.hatenablog.com RISCVEMUはLinuxも立ち上げることが出来る高速エミュレータだが、その実装の仕組みを探っ…

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年に起きた半導体業界の再編を、買収報道を振り替えりながら…