LispマシーンCADRのデータパスを調べているうちに、他のプロセッサのデータパスも整理したくなったので、まとめてみました。データパス(datapath)とは、プロセッサに限らず、デジタル回路のデータ処理を図にするときに、どこからデータが入ってきて、どこに出て行くかを図にした物です。
MIPSのデータパス
パタヘネの図をそのまま持ってきました。第4版だとFigure 4.40、第3版だとFigure6.14辺りです。わかりやすくするために、フォワーディングや例外の機能は入っていません。RISCには「メモリへのアクセスはロード、ストアのみ」という特徴があります。見るべき所はALUとメモリの入出力です。ALUには基本的にレジスタのデータしか入力できません。ALUの出力はメモリのアドレッシングかレジスタへの書き込みにしか使用できません。同じくメモリの出力はレジスタにしか書き込めず、メモリへの書き込みはレジスタからしか行えません。
32bit長の命令に16bitの即値が入っていた場合、符号拡張されてALUの入力として使用できます。これがメモリの出力をALUの入力として使用できる例外的な場合です。