190 likes | 695 Views
江木 班プロセッサ実験最終発表 2009/3/10(Tue) 班員 :江木 聡志、市川 浩丈、木下 祐介、葛原 佑伍、中村 尚太. 江木班の歴史. 江木班の歴史. 10 月初旬 班結成。班結成は最速だった 10 月中旬 フィボナッチ数列を計算できるレベルの CPU を設計。 アセンブラやシミュレータを書いたりしてみる。 11 月中旬 フィボナッチ数列計算プログラムが実機で動く コンパイラを Scheme でオリジナルで書くことを本決定 このころ 、 SRAM でつまずきはじめる。そして長い停滞をむかえる. 江木班の歴史. 1 月中旬
E N D
江木班プロセッサ実験最終発表 2009/3/10(Tue) 班員:江木 聡志、市川 浩丈、木下 祐介、葛原 佑伍、中村 尚太
江木班の歴史 • 10月初旬 • 班結成。班結成は最速だった • 10月中旬 • フィボナッチ数列を計算できるレベルのCPUを設計。 • アセンブラやシミュレータを書いたりしてみる。 • 11月中旬 • フィボナッチ数列計算プログラムが実機で動く • コンパイラをSchemeでオリジナルで書くことを本決定 • このころ、SRAMでつまずきはじめる。そして長い停滞をむかえる
江木班の歴史 • 1月中旬 • SRAMイニシャライザが苦戦するもようやく完成。これを機に微妙に進み始める • 2月初旬 • 班員の市川、中村、木下が、実はレイトレが動画ではなく静止画だということをはじめて把握する。 • 2月中旬 • テスト勉強と、課題とでまたも停滞。
江木班の歴史 • 3月 • 3月4日、コンパイラの吐いたレイトレのコードがシミュレータで完全動作 • 3月5日、機械語が本決定 • 3月8日21時頃、実機でレイトレ完全動作(51分) • 3月9日、最適化を行う。25分にまで縮める。
班員の構成 江木 - 班長、コンパイラ、prelinker, IO 市川 - CPU、IO 葛原 - アセンブラ、ライブラリ、シミュレーター minCaml->Schemeトランスレータ 中村、木下 ーFPU、FPUシミュレーター
CPU(設計方針) 完成結果ができるだけシンプルなVHDLになることを基本理念とし、設計。 ・単一命令フォーマット コンパイラがコードを吐き出しやすいようにする ・レジスタスウィッチ
CPU(仕様) • レジスタ(32bit、整数/浮動小数点数 共用、256本) • i0~i31(32本) • o0~o31(32本) • g0~g31(32本) • v0~v95(96本) • h0~h15(16本) • s0~s15(16本) • 動作clock • 本体:50MHz • SRAM:50MHz
CPU(仕様) • 単一命令フォーマット(64bit、SRAMでpipeline read) • INSTINFO:命令の種類を指定(3bit) • OPCODE:実際に行う命令を指定(5bit) • DR(Destination Register):演算結果を格納するレジスタを指定(8bit) • SR1、SR2(Source Register):被演算数を格納するレジスタを指定(8bit×2) • IMD:即値(32bit) INSTINFO (3bit) OPCODE (5bit) DR(8bit) SR1(8bit) SR2(8bit) IMD(32bit)
CPU(仕様) • 命令 • SYSTEMOPERATION:nophalt • IO OPERATION:read-byte write-byte • MEMORY OPERATION:load store • JUMP OPERATION:if goto call • CMPOPERATION:==. > >. < <. >= >=. <= <=. • SCU OPERATION:set + - xor or and not • MCU OPERATION:sllsrl * +. -. *. /. itofftoi
CPU(仕様) 特徴のある命令 Call命令 ジャンプすると同時にコンバートフラグをたてる。 コンバートフラグをたてると、SPARCのような感じでレジスタが入れ替わる レジスタ規約がゆるくなる
CPU(FPU) • clock数 • 2clock:+. *. ftoiitof • 3clock:-. • 7clock:/.
Compiler(概要) 完全オリジナルCPSコンパイラ。 Schemeコードをコンパイルする。 すべてSchemeで記述されている。 マクロ以外のR5RSの機能を基本実装している。 call-with-current-continuation, call-with-valuesなど。
Compiler(開発) 完全オリジナルCPSコンパイラ。 Schemeコードをコンパイルする。 すべてSchemeで記述されている。