FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2015-01-01から1ヶ月間の記事一覧

スケーラブル命令セットシミュレータ (RISC-V版) を公開します

自作RISC-Vシミュレータを公開します。 https://github.com/msyksphinz/swimmer_riscv まだサポートできてない命令が山ほどあるけど、とりあえずCoremarkくらいは動くようになった。 基本的にRubyで命令テーブルを作っていき、それを元に命令の雛形を作る。…

データセンター革新に「第3の頭脳」 日経より

日経にこんな記事が載っていた。 CPU失速で急浮上 データセンター革新に「第3の頭脳」 個人的には、CPUが失速したとは全然思っていない。むしろインテルとかはAVXとかをどんどん積んでいって、あのパワーは凄いなと思っている。 パイプライン的にもどん…

ZedBoard と Galileo をDigiKeyで発注した

発注したのは3日くらい前だけど(笑) 日本の代理店の反応が悪すぎるので、ZedBoardは結局DigiKeyで発注。ついでに気になっていたGalileoも発注。 本当はJetsonとかも買ってみたかったけどお金が無い。 ZedBoardとGalileoは平日は受け取れないので、週末に受…

アーキテクチャを理解したいなら、ISSを自作しよう、のススメ

RISC-Vの実装を作るために、検証用の命令セットシミュレータを今日はずっと作っていた。 まあ、前もMIPSのやつをベースに改造してたのだけれども、MIPSのやつを拡張していたらだんだん大変になってきて、もうちょっと拡張性の高いISSを作ろう、と思った。 IS…

翻訳日記: Virtual Machine

なかなか進まないなあ... 平日は翻訳するような元気が無いので、土日しかできない... Virtual Machines: Versatile Platforms for Systems and Processes (The Morgan Kaufmann Series in Computer Architecture and Design)作者: Jim Smith,Ravi Nair出版社…

Conditional Moveがスーパスカラで難しい理由

MIPSにはMOVN/MOVZという条件付き格納命令が存在するが、これの実装は実はなかなか難しい。 if (rt != 0) rd <= rs else <nothing> これ、HW的に分解すると、 if (rt == 0) rd <= rs else rd <= rd とせざるを得なくなる。一度「レジスタにWBする」という名目でフリー</nothing>…

ZedBoard の見積りが来ない...

しばらく前から、ZedBoardの見積りを某代理店に出しているのだが、一週間経ってもまだ見積りが来ない... さらに一週間前には、見積りまだですか?のメールをしたのだが、それに対しては返信あった。だけどそれからまた返信なくなった。どうなってんの? とり…

Imagination Technologiesが提供するmips用GCCその3

Imagination Technologiesが提供するmips用GCCその2 - FPGA開発日記 結局、-O3オプションではなく-O2オプションを使うことでエラーはでなくなった。なんじゃこりゃ。 ちなみに、見ていると-mips32r5で生成するといろいろな違いがある。 mult命令(HI/LOレジス…

Imagination Technologiesが提供するmips用GCCその2

Imagination Technologies が提供するmips用GCC - FPGA開発日記 Imagination Technologies が提供するmips用GCC - FPGA開発日記 で、途中でmemsetが定義されていなくてコンパイルできない件は、結局自分でmemsetを追加した。 + +void* memset (void * s, int…

現代のCPUで遅延スロットが嫌われる訳

最初の頃、自分も遅延スロットが嫌われる理由が良く分からなくて、自分がCPUを自作してみて始めて気がついたのだが、 現代のCPU(スーパスカラなどの高速化の方式を取っているもの)にとって、遅延スロットは非常に面倒なものとなってしまっている。 まず、パ…

フェッチ能力向上させるための種々の技法

現在作成している自作CPUは、簡単な命令キャッシュを持っており、キャッシュの空き容量が十分になると次の命令のフェッチにかかる。 現在の構成の問題として、そもそも128ビットの命令列をフェッチするためには、 AXIへリクエスト発行 AXIからレスポンスあり…

ロードストアバッファによるメモリアクセスの非同期化

メモリアクセスは一般的にCPUの性能向上を阻害しなすくなる部分で、特にストアについてはコミット後に実行するため、これまでの自作プロセッサの実装では LSUからCMユニットにストア命令が発行されたことを通知する。 ストア命令はコミットレディとなる。 CM…

翻訳日記: Virtual Machine

Virtual Machine を翻訳してみているのだが、本文は公開できないので、翻訳用にまとめたメモくらいは公開していこうと思う。 正月から始めて、今日までの翻訳分のまとめ。だいたい15ページくらい。 1. 仮想マシンのイントロダクション 1.2 仮想マシンの基本 …

今年の目標

普段あまり目標というのは立てなくて、むしろ抽象的な目標というのを立てるのが苦手なので、年間を通じて明確に達成・未達成が分かる目標を立てるようにしている。 今年の目標は、 洋書一冊翻訳 (これは去年と同じ) インターネットへの貢献 作成した回路やプ…

Imagination Technologies が提供するmips用GCC

Imagination Technologies が MIPS用のGCCを配布しているので、早速ダウンロードしてみた。 MIPS Compilers | Imagination Community Ubuntuの上で展開すると、mips-mti-elf-xxxの形式でバイナリとライブラリが用意されていた。 mips-mti-elf-gcc の --help=…

MIPSアーキテクチャ Release-6について

2014年8月に、MIPSのアーキテクチャr6がリリースされていますね。あまり内容は読んでいないのですが、 かなり大胆な仕様「削減」を行っているようですね (Imagination Technology の英語サイトに最新のアーキテクチャ仕様書が置いてあります) MIPS32 Archite…

RISC-Vの性能測定 命令数編

RISC-Vの基本的なUser-Level ISAの実装が進んできて、Coremarkが正常にシミュレーションできるようになった。MIPSのシミュレータと合わせて、命令セット的にどちらが良いかを見てみる。 MIPSと比較した場合は以下のとおり。start_time()からstop_time()まで…

RISC-Vの即値生成フォーマット

RISC-Vは即値生成のフォーマットがちょっと変わっている。MIPSとかなら、即値フィールドは下位の16ビットなどにまとめらているのだが、 RISC-Vは一見不思議に見える。以下がRISC-Vの即値生成フォーマットだ。 これ、よくよく説明を読むと、フィールド[10:5]…

RISC-VのPC相対アドレス代入命令

あんまりMIPSに見ない命令、というか、ちょっと特徴的なので、メモ。 AUIPC rd AUIPC (add upper immediate to pc) is used to build pc-relative addresses and uses the U-type format. AUIPC forms a 32-bit o ffset from the 20-bit U-immediate, fillin…

RISC-Vについて

RISC-V は命令セットからオープンな命令セットアーキテクチャである。 なかなか面白いので最近はまっている。http://riscv.org/命令セットを見る限り、あまりMIPSとの差は見られないのだが、顕著なものとして、ハードウェアに落としたときに性能を出しやすい…