開発日記

Erlangをダラダラ書きます。

RISC-V

アドレッシング・モード RV32Iの例

レジスタ間接(ベースオフセット/レジスタオフセット) ロード命令 1. 符号拡張1バイトロード 2. ゼロ拡張1バイトロード 3. 符号拡張2バイトロード 4. ゼロ拡張2バイトロード 5. 4バイトロード(32bitだから符号拡張なし) 参考文献 レジスタ間接…

アドレッシング・モード

アドレッシング・モードとは? メモリを参照する方式(メモリアドレスの指定の方法) 参照したアドレスはなんて呼ぶ? 有効アドレス(Effective Address) アドレッシング・モードを構成する要素は? ベースポインタ/ベースレジスタ アクセスすべきメモリア…

メモリとHexファイルの話

Hexファイルの形式 実装1 実装2 FPGAを触っていると,バイナリをHexファイルに変換して読み込みたいときがある. (例えば,RISC-Vを自作しているときとか..FPGA内蔵メモリにHexファイルを埋め込みたい.. 今回は32bit命令を扱うメモリを例に考える. Hex…

分岐予測

分岐予測 分岐先アドレスの予測 分岐先アドレスキャッシュ(BTAC,BTB) 参考文献 分岐予測 条件分岐が成立するか不成立化を予測 分岐先のアドレスを予測 分岐先アドレスの予測 分岐先アドレスキャッシュ(BTAC,BTB) BTACは,分岐先アドレスの予測値を与え…

RISC-V 32bit M拡張(整数乗除算拡張命令)

概要 R形式 フォーマット 注意点 各命令 mul mulh mulhsu mulhu div divu rem remu 参考 概要 R形式 31 - 25 24 - 20 19 - 15 14 - 12 11 - 7 6 - 0 funct7 rs2 rs1 funct3 rd オペコード オペコードで命令形式を判別 funct3でM拡張命令を判別(funct7は全て…

RISC-V flow (雑)

riscv-flow

RISC-V Benchmark

riscv-tests プログラムのスタート位置を設定する必要があり. dhrystone median mm mt-matmul mt-vvadd multiply pmp qsort rsort spmv towers vvadd 参考文献 coremark coremarkの移植やら色々 risc-vでも使える? いろんなベンチマークを使ってる. https…

Hello world

進捗報告 Chiselで書いた自作RISC-Vコア上をFPGAボード(Basys3)に載せた. Uartのシリアル通信で「Hello world」できた! Hello world

RISC-Vコア開発,2日目,改善案メモ,未完成

RISC-Vのコアを開発している. 初めはメモ書きばかりになる.後ほど書き直したいと思っている. 改善案 全体,ファイル名と変数名 top,Topにメモリ移動 top,Topでコアとメモリポート接続 top,7segをモジュール化 top,クロックの変更 top,クロックのパラメータ…

RISC-V ID後の挙動

次のプログラムカウンタ 演算子① 演算子② 演算結果 分岐フラグ CSR書き込みデータ WBデータ 次のプログラムカウンタ 条件分岐先アドレス(PC相対指定) ジャンプ先アドレス トラップベクトルアドレス 現在のPC + 4 演算子① rs1 CSR即値 ジャンプとAUIPC用PC(P…

演算内容で命令分類してみた,RV32I編

add ... (rs1 || pc || 0) + (rs2 || imm) sub ... rs1 - rs2 and ... rs1 & rs2 or ... rs1 | rs2 xor ... rs1 ^ rs2 sll ... (op1 << op2(4, 0))(31, 0) srl ... (op1 >> op2(4, 0)).asUInt() sra ... (op1.asSInt() >> op2(4, 0)).asUInt() slt ... (op1.…

RISC-Vコア開発,1日目, 全体構成メモ,未完成

RISC-Vコア開発を進める 初めはメモ書きばかりになる.後ほど書き直したいと思っている. Top Core レジスタ関連 ステートマシン作成 IF ID EXE MEM WB Top コア生成 7segment生成 Core レジスタ関連 rs1とrs2を読み出し wb書き込み 7segの値読み出し ステー…

RISC-V 動き

Top <=> Core <=> Memory Top <=> Core <=> Memory Mainパッケージ Topクラス Memoryクラス Coreクラス IF ID EXE MEM WB Subパッケージ Constsクラス Instructionsクラス Mainパッケージ Topクラス ・IO入出力 ・コア生成 ・メモリ生成 ・コアとメモリポー…

基本命令セット RV32I

ロード / ストア 加算 減算 論理演算 シフト 比較 条件分岐 ジャンプ 即値ロード CSR 例外 ロード / ストア LW (I) ... add, op1, op2_imi SW (S) ... add op1, op2_ims 加算 ADD (R) ... add, op1, op2 ADDI (I) ... add, op1, imi 減算 SUB (R) ... sub op…

RISC-V MMU

ハードウェアページテーブルウォークを採用 仮想メモリの仕様 RV32 RV64 ページングアルゴリズム(ページテーブル検索) Sv32 ハードウェアページテーブルウォークを採用 RISC-Vではページ入れ替え処理(ページテーブルウォーク)をハードウェアで制御する. …

RISC-V 割り込みと例外処理

割り込みとは 割り込み番号 割込み優先度 特権レベルスタック 割り込み流れ PLIC(プラットフォームレベル割り込みコントローラ) RISC-Vの処理(割り込み / 例外 発生後) <trap_vector>アドレス <trap_vector>アドレスの追加 実行モード Trap Delegation Register(トラップ代理レジ</trap_vector></trap_vector>…

RISC-V アーキテクチャ(2)

RV32E(組み込み分野向け) 利点 拡張命令 問題 リトルエンディアン エンディアン変換 16ビット可変長命令 命令エンコードの工夫 汎用レジスタの位置を固定 符号拡張した即値が,各命令形式で同じ桁 符号拡張した即値の符号ビット / 最上位ビット(MSB)の位…

RISC-V アーキテクチャ(1)

レジスタ長 汎用レジスタ 32本(x0 - x31) 汎用レジスタ本数が少ないと? 汎用レジスタ本数が多いと? 基本命令と命令形式 基本命令 6種類の命令形式 拡張命令 13種類 推奨ISA レジスタ長 32 / 64 / 128 ビットの3種類. マイコンからスパコンまで幅広くサ…

riscv-gnu-toolchain 使い方メモ

riscv-gnu-toolchain インストール方法 hexファイルの生成(FPGA書き込み用) ソースコード準備 riscv64-unknown-elf-gcc 使用 riscv32-unknown-linux-gnu-gcc 使用 riscv-gnu-toolchain インストール方法 yuyargon.hatenablog.com hexファイルの生成(FPGA…

RISC-Vとは?

RISC-VっどんなCPU? riscv.orgのISA仕様書 SiFiveのISA仕様書 RISC-VっどんなCPU? UCバークレーで2010年に開発が始まったRISC(縮小命令セットコンピュータ)のプロジェクト. ISA(命令セットアーキテクチャ),つまり命令の仕様書(ハードウェアが機械語…

ローカルでの開発環境構築(RISC-V)

各種ツールのインストール Open JDK sbt Verilator Vivado サポートしているOS Chisel template 各種ツールのインストール Open JDK ScalaおよびJavaのためのオープンソースの開発環境. sudo apt install openjdk-8-jdk sbt ScalaおよびJavaのためのオープ…

riscv-gnu-toolchain

RISC-V用のクロスコンパイラ 昔 今 インストール方法 サポートされているアーキテクチャ サポートされているABI 使用方法 RISC-V用のクロスコンパイラ RISC-V向けのgccやldなどのコマンドを提供してくれる。 昔 2019年までは riscv-tools リポジトリからイン…

ChiselでRISC-Vコア開発(1)

本日から「ChiselでRISC-Vコア開発」のプロジェクトを始める. 出来る限り,毎日投稿していく予定だ. 本プロジェクトは,書籍「RISC-VとChiselで学ぶはじめてのCPU自作」(以下Chisel本)で学んだことを活かして,自作のRISC-VコアをChiselで実装していく.…

RISC-V初心者の開発日記0日目

毎日更新を目標に... 日記の趣旨 目標 学習するプロジェクト 毎日更新を目標に... 日記の趣旨 この日記は,学習のアウトプットの場として利用する. 主にRISC-V関連を投稿する予定だ. また,この日記を通して苦手な物書きを克服したいと思っている. …