CPU実験について 2006年10月13日金曜日 平野貴仁 CPU実験の成績 • プロセッサ、アセンブラ、シミュレータを担当 • 2005年度CPU実験優勝 – 間違ってP3形式で出場(規約上問題はない) – P6形式だと100MHz 25.186秒 • CPU実験延長戦 – id:namasute0氏によりスケジューラが改良され 100MHz 21.951秒を達成 本日の内容 • 設計のやり方 – Processor [2x]のアーキ テクチャ • 作業のやり方 攻めた点 • 昨年Super ScalarやVLIWが挑戦されたが、 ひょっとして費用対効果が見合わないのでは • まだ実現していない100MHzの可能性に魅力 を感じた • 要するに紅魔館中島氏の煽りに乗っかった 日和った点 • 命令種はたったの30種 – 即値命令は、ADDIのみ – FABS, FNEGは、なし ( AND, XNOR ) – RS232C命令は、ノンブロッキングのみ • レジスタ本数はたったの 64本 • スライス使用率はたったの 26% 空間的な構成 各モジュールに1bitから数bitの制御 シグナルを適切なタイミングで発行 する、いわば心臓部 命令キャッシュ 命令供給パイプライン 制御回路 レジスタ 32bit x 64 分岐 整数加減算 判定 論理演算 RS RS 浮動小数点数 浮動小数点数 SRAM Get Put 加減乗算 逆数平方根 Load/Store 時間的な構成 IF 命 フ令 ェキ ッャ チッ シ ュ タ命 グ令 フキ ェャ ッッ チシ ュ タ命 グ令 フキ ェャ ッッ チシ ュ RD EX2 EX1 EX3 EX4 WB 分岐判定 レ ジ ス タ リ ー ド 依 存 関 係 解 析 バ イ パ ス 回 路 命令 デコード 整数演算 RS232C SRAM (hit) SRAM (miss) 浮動小数点数加減乗算 まだ完了していない命令の書き込みレジ 浮動小数点数逆数平方根 スタを読み込んでしまった場合は、 ENABLE信号を反転させ、再試行する データハザード レ ジ ス タ ラ イ ト データハザード IF RD EX1 EX2 EX3 EX4 WB IF EX3で完了する命令 X RD EX1 EX2 EX3 EX4 WB IF RD EX1 EX2 EX3 EX4 WB IF 命令 Xの結果を使用したい RD EX2 EX3 EX4 WB RD EX1 IF RD IF EX1 EX2 EX3 EX4 WB IF RD EX1 EX2 EX3 EX4 WB 制御ハザード 分岐命令X IF RD EX1 EX2 EX3 EX4 WB IF RD EX1 EX2 EX3 EX4 WB IF RD EX1 EX2 EX3 EX4 WB IF キャッシュにない 次の命令 RD IF EX1 IF EX2 IF EX3 EX4 WB IF VALID信号を反転させ RD WB EX2 EX3 EX4 WB EX1 EX2 EX3 IF EX4 RD EX1 以降の処理を無視させる IF 制御ハザード RD EX1 EX2 EX3 EX4 WB 命令キャッシュ • 4K ワード (16K バイト) • アドレス 20bit のうち下位11bitをキーとして タグ9bitとエントリ32bitを引く • アドレスの上位9bitとタグが一致すれば キャッシュヒット、一致しなければキャッシュミ スと判定 • データキャッシュもほぼ同じ 命令供給パイプラインと構造ハザード WRITE WAIT1 ア ド アドレス レ 計算 ス ラ イ ト タ命 グ令 フキ ェャ ッッ チシ ュ WAIT2 READ Load/Store命令が優先のため、 Load/Store命令と衝突していれ ば同じアドレスを再試行する 構造ハザード タ命 グ令 チキ ェャ ッッ クシ ュ UPDATE デ ー タ リ ー ド タ グ命 ア令 ッキ プャ デッ ーシ トュ ア命 ッ令 プキ デャ ーッ トシ ュ 本日の内容 • 設計のやり方 – 100MHzプロセッサ [2x] のアーキテクチャ • 作業のやり方 とりあえずやるべき事柄 • CPUの部品を知る – 汎用的な部品(ワイヤ、フリップフロップ、ラッチ) – FPGAの部品(LUT, 分散RAM, ブロックRAM, 18x18乗算器) – CPU実験基盤の部品(USB, SRAM, RS232C) • デバッグの手法を知る 汎用的な部品を知る • 意外と完全に理解していなかったりする A <= B + C when X = ’0’ else B – C when X = ’1’; • まだ理解していなければ早急に理解しておく • 慣れないうちは生成される回路図を確認する といいかも FPGAの部品を知る • 膨大なマニュアルだがとにかく目を通す – Libraries Guide – Constraints Guide – XST User Guide –… CPU実験基盤の部品を知る • USBはさっさと動かそう • SRAMは甘く見るな – テストはいろいろな方法で試す – それでもハマる • RS-232Cは罠を避けよ – かつてRS-232Cのせいで動かなかった班あり デバッグの手法を知る • 自班のシミュレータはbit accurateにしておく – FPU係はシミュレータ係を兼ねるといいか – FPUの誤差評価にも使える • Modelsimでfib 5や4x4のレイトレを走らせる • STORE命令の番地と内容のログを、 Modelsimと自班のシミュレータとで取る • diffを調べるとどこにバグがあるか一目瞭然 プロセッサ(初代)の開発履歴 • 10/6 LED動作せず • 10/21 USB動作 • 11/6 SRAM動作し、再帰によるfib 38動作 – 50MHz 23.454秒 • 12/15 FPU動作 • 12/29 Modelsim上完全動作(USB使用) • 1/18 実機上完全動作(USB使用) – 50MHz 236.731秒 プロセッサ [2x]の開発履歴 • • • • 1/24 2/22 3/10 3/11 着手 RS232C動作 夜 Modelsim上完全動作(RS232C使用) 夜 実機上完全動作 – 100MHz 40秒 • 3/12 朝 データキャッシュ搭載 – 100MHz 27.530秒 • 3/12 夜 コンパイラ改良に伴う誤動作に対処 最も心得るべき点 • 人任せにしない – 進捗状況が上がっていないというのは、やってい ないということと同義 • 身の丈にあわせる – 経験がなければまずプロトタイプを完成させよ • 端末室に来る – 他班のWikiは見られなくても、会話は聞こえる というわけで • 楽しんでください
© Copyright 2024 ExpyDoc