ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

RISCマシーンのデータパス

LispマシーンCADRのデータパスを調べているうちに、他のプロセッサのデータパスも整理したくなったので、まとめてみました。データパス(datapath)とは、プロセッサに限らず、デジタル回路のデータ処理を図にするときに、どこからデータが入ってきて、どこに出て行くかを図にした物です。

MIPSのデータパス

パタヘネの図をそのまま持ってきました。第4版だとFigure 4.40、第3版だとFigure6.14辺りです。わかりやすくするために、フォワーディングや例外の機能は入っていません。RISCには「メモリへのアクセスはロード、ストアのみ」という特徴があります。見るべき所はALUとメモリの入出力です。ALUには基本的にレジスタのデータしか入力できません。ALUの出力はメモリのアドレッシングかレジスタへの書き込みにしか使用できません。同じくメモリの出力はレジスタにしか書き込めず、メモリへの書き込みはレジスタからしか行えません。

32bit長の命令に16bitの即値が入っていた場合、符号拡張されてALUの入力として使用できます。これがメモリの出力をALUの入力として使用できる例外的な場合です。

SPARCのデータパス

図はOpenSPARC Internalsから持ってきました。OpenSPARC Internalsによると、SPARCにはメモリへアクセスする命令として、Load、Store、load-store、PREFETCHしかありません。図を見てもALUの入力にはレジスタしか使う事ができません。

このようにRISCマシーンでは、演算は基本的にレジスタ間で行い、メモリとレジスタ間のデータを転送する専用の命令があります。