sparc
LispマシーンCADRのデータパスを調べているうちに、他のプロセッサのデータパスも整理したくなったので、まとめてみました。データパス(datapath)とは、プロセッサに限らず、デジタル回路のデータ処理を図にするときに、どこからデータが入ってきて、どこに…
cygwinで64bit SPARCのクロス環境を作りました。バイナリ一式はこちらです。 sparc64-elf_2009_2_26.zip ファイルを展開して、/usr/local/sparc64/binに実行ファイルが来るようにコピーし、/usr/local/sparc64/binにパスを通せばOKです。 クロス環境構築時の…
Twitterでヘッダーファイルのないテキスト領域の逆アセ方法が分からないとつぶやいたところ、バイナリアンな人達からアドバイスをもらいました。ありがとうございます。http://twitter.com/yusk_/status/1240773710 http://shinh.skr.jp/m/?date=20090223 ob…
WISHBONE I/F s1_coreはテストベンチのトップレベルで、WISHBONEのBusを経由してROMに接続されています。 WISHBONEはOpenCores.orgで推奨されているfreeに使用できるバスの規格です。http://www.opencores.org/projects.cgi/web/wishbone/wishbones1_coreで…
sparc_ifuの続きです。リセット時のPCの値を決めているtlu_ifu_trappc_w2を追いました。 tlu_ifu_trappc_w2 tlu_ifu_trappc_w2は、tlu(Trap logic unit)の中のtlu_misctl.vにあります。 同じ要領で信号を追っていきます。 dff_ny #(49) dff_trap_pc_w2 ( .di…
リセット時のPCの動きを調べるため、ifu(Instruction fetch unit)の中を追って見ました。 パイプラインの最初のフェッチ時のPCはt0pc_fなので、そこから追います。 t0pc_f への代入 sparc_ifu_fdp.vから // F stage thread PC regs; use low power thr flop …
s1_coreのリセットの続きです。 sparc core内のリセットとクロック リセット回路とクロックをもう一階層下って整理しました。gclk、cluster_cken、cmp_grst_l、cmp_grst_lが、bw_clk_cl_sparc_cmpに入って、rclkとspc_grst_lを作っています。回路のブロック…
FPGAプロトタイピングにおけるゲーテッドクロックの扱い FPGAでプロトタイピングをするときは、クロックをFPGA向けに修正するという作業が入ります。具体的にはASIC向けPLLを、FPGA内蔵PLLに置き換えます。FPGAが複数にまたがりクロック系統が複雑な場合は、…
s1はオリジナルのT1と違いシンプルなリセット回路が使われています。 hdl\rtl\s1_top\の中にあるrst_ctrl.vがverilogソースです。rst_ctrlでは各ブロックへのリセット信号と、クロックの生成を行っています。リセット関係の信号について、topでの接続を図に…
ベンチマークとは FPGAプロトタイピングを行う場合、一番最初に「ベンチマークを取る」という作業をします。「ベンチマーク」という表現は、一緒に仕事をした人しか使っていなかったので、一般的な言葉かどうかは分かりません。ベンチマークだけでなく、他の…
VeritakのたっくさんによるOpenSparcをいじるための素晴らしい環境の紹介です。 Code Ijiriとは まずはshinhさんの所を読んでください。 http://d.hatena.ne.jp/shinichiro_h/20081130#1228038576微妙に動いていないのが丁度良い難易度だと思います。 Verita…
OpenSPARC Internals からOpenSparc T1のメモリ階層をまとめてみました。パタヘネでは、第7章で出てくる話です。図の一番下にSPARCのcoreがあります。一つのT1チップには、8個のcoreが搭載されています。各coreについて、Iキャッシュが16Kバイト、Dキャッシ…
5つのプロセッサで、関数呼び出しの方法をまとめました。 MIPS sparc sh ARM x86 レジスタ渡し可能な引数 4個まで 6個まで 4個まで 4個まで スタックを使用 戻り先の格納先 register register stack register stack 関数の呼出し jal call jsr bl call 関数…
register window Sparcプロセッサは、register windowと呼ばれる一風変わったアーキテクチャを採用しています。プロセッサ自体は、64〜528個の汎用レジスタを持っており、ソフトウェアからは32個のレジスタにアクセスできます。32個のうち24個は汎用レジスタ…
Exercise 2.4の発展で、他のCPUも調べてみました。とは言っても各CPUのデータシートを追っていくのは大変ので、Cソースをコンパイルして必要なところを抜き出しています。やっていることは、a = b + 10, a = b - 50; で、10の加算と50の減算です。フラグ関係…
教科書のSection 2.9に出てくる32bit即値の話。RISCプロセッサというのは、命令長が固定な為、命令長が32bitであれば、32bitの即値をそのまま入れることはできません。クロスアセンブラの環境ができたので、早速各CPUの比較をしてみましょう。各コマンドは本…
勉強用にcygwinで動くsparc向けのクロスコンパイル環境を作りました。 インストールは途中でエラー終了してしまいましたが、勉強には十分なので整理してみました。実際の開発に耐えられる物ではないので、注意してください。 gmp-4.1のインストール GCCの4.3…