Open Design Computer Project

オリジナルCPUから作る本格的自作コンピューター

ユーザ用ツール

サイト用ツール


software:simulator

mist32 Software Simulator

とりあえず、gcc のデバッグ用に作った。本当は gdb が使いたい。

素晴らしいオレオレシミュレータなので、多分誰も使わないと思う。

特徴

  • make して ELF バイナリ食わせるだけ
  • ELF ロードに対応
    • gcc の吐いた a.out などを読みこませると、自動的に entry を認識して実行開始
    • べんりー\(^o^)/
  • ステップ実行に(とりあえず)対応
  • Load/Store, Branch のアドレス・飛び先・データなどを表示してくれるのでデバッグ用に最適
  • I/O (DPS, GCI) デバイスのエミュレーションにも対応しています
  • キャッシュシミュレーションまでついてます
    • ただし、キャッシュシミュレーションをオンにすると多少遅くなります
    • これがソフトウェアの限界か… (セットアソシアティブキャッシュシミュレーションのコストはでかい)
  • 速度はそんなに速くない
    • Core i7-920 で 40 DMIPS 前後
    • Core i5-4258U (MacBookPro 11,1) で 60 DMIPS ぐらい (キャッシュシミュレーション OFF)

Repository

使い方

Options

  • -v: 詳細なデバッグ出力付きます。
  • -d: 更に詳細なデバッグ出力が付きます。
  • -h: (内部用) ハードウェア RTL シミュレーションと比較するための出力をします。
  • -p: (内部用) ハードウェア RTL シミュレーションと比較するための出力をします(カッコ内は物理アドレスで表示)。
  • -m: ディスプレイモニタクライアントを接続します。
  • -b <addr>: ブレークポイントを指定できます。複数指定可能です。

I/O Device

DPS UTIM64

それなりにシミュレーションできます。

ただし、仕組み的に POSIX タイマを使っていて、メインカウンタのエミュレーションができないので、そのあたり適当です。

DPS SCI

Unix ドメインソケットを使ってエミュレーションしています。

シミュレータはクライアント側になります、別途ソケットファイル (sci.sock) を listen するプログラムを立ち上げておく必要があります。

Makefile に socat と nc (OpenBSD netcat) を使ったサンプルを含めてあるので、これを利用して下さい。

$ make listen-sci
# socat が使える場合

$ make listen-sci-nc
# OpenBSD nectat (Linux の nc では不可能) が使える場合

GCI DISPLAY

以下のような感じで、モニタプログラムで表示できます。

転送に TCP/IP 使ってるので、シミュレーションするマシンと、表示するマシンが別でも問題ありません。

GCI KMC

モニタプログラムに、キーを撃ちこめばそのままエミュレーションされます。

ただし、キーマップが一部しかできていないので、対応していない部分は送信されません。

Example

$ mist32-elf-gcc -nostdio hoge.c
$ mist32_simulator <-d> a.out
section load: 0x00000000 .text
d_off:        0 0x00000000, d_size:      256 0x00000100
...
Program Terminated
PC: 0x00000000 SP: 0x04000000
ZF: 1, PF: 1, CF: 1, OF: 0, SF 0
R 0: 0xffec7bfc (   -1278980) R 1: 0xfff00f39 (   -1044679) 
R 2: 0x0000001e (         30) R 3: 0xffec7c74 (   -1278860) 
R 4: 0x0000000a (         10) R 5: 0xfff00f00 (   -1044736) 
R 6: 0x00000000 (          0) R 7: 0x00000000 (          0) 
R 8: 0x00000000 (          0) R 9: 0x00000000 (          0) 
R10: 0x00000000 (          0) R11: 0x00000000 (          0) 
R12: 0x00000000 (          0) R13: 0x00000000 (          0) 
R14: 0x00000000 (          0) R15: 0x00000000 (          0) 
R16: 0x00000000 (          0) R17: 0x00000000 (          0) 
R18: 0x00000000 (          0) R19: 0x00000000 (          0) 
R20: 0x00000000 (          0) R21: 0x00000000 (          0) 
R22: 0x00000000 (          0) R23: 0x00000000 (          0) 
R24: 0x00000000 (          0) R25: 0x00000000 (          0) 
R26: 0x00000000 (          0) R27: 0x00000000 (          0) 
R28: 0x00000000 (          0) R29: 0x00000000 (          0) 
R30: 0x00000000 (          0) R31: 0x00000000 (          0) 

TODO

  • halt 対応
software/simulator.txt · 最終更新: 2015/04/05 04:55 by hktechno