第6回 6/4/2011 状態遷移回路とシングルサイクルCPU設計

Slides:



Advertisements
Similar presentations
CPU設計と パイプライン.
Advertisements

基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Chapter11-4(前半) 加藤健.
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
第12回 順序回路の解析方法 瀬戸 順序回路から,以下を導き、解析を行えるようにする タイムチャート 状態遷移関数・出力関数 状態遷移表
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
テープ(メモリ)と状態で何をするか決める
2012年度 計算機システム演習 第4回 白幡 晃一.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
App. A アセンブラ、リンカ、 SPIMシミュレータ
計算機システムⅡ 命令セットアーキテクチャ
計算機システム ハードウェア編(第3回) ~ ノイマン型コンピュータ ~.
プログラムはなぜ動くのか.
第10回 Dフリップフロップ ディジタル回路で特に重要な D-FF 仕組みを理解する タイミング図を読み書きできるようにする 瀬戸
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
デジタル回路(続き) コンピュータ(ハードウェアを中心に)
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第3回) 埼玉大学 理工学研究科 堀山 貴史
7. 順序回路 五島 正裕.
8. 順序回路の簡単化,機能的な順序回路 五島 正裕.
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
6. 順序回路の基礎 五島 正裕.
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路
計算機システム 第1回 2006/04/22.
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
高速剰余算アルゴリズムとそのハードウェア実装についての研究
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
1.コンピュータと情報処理 p.18 第1章第1節 2.コンピュータの動作のしくみ CPUと論理回路
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
計算機システム 第2回 2011/05/02(月) 「コンピュータ・アーキテクチャへのいざない」
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
ディジタル回路 6. 順序回路の実現 五島 正裕.
Advanced Computer Architecture
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
ディジタル回路の設計と CADによるシステム設計
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
VLSI設計論第3回 順序回路の記述と論理合成
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
第11回 よく使われる順序回路 複数のFFを接続した回路を解析する際の考え方を学ぶ カウンタ回路の仕組みを理解し,設計できるようにする 瀬戸.
コンピュータアーキテクチャ 第 10 回.
09. メモリ・ディスアンビギュエーション 五島 正裕.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
  第3章 論理回路  コンピュータでは,データを2進数の0と1で表現している.この2つの値,すなわち,2値で扱われるデータを論理データという.論理データの計算・判断・記憶は論理回路により実現される.  コンピュータのハードウェアは,基本的に論理回路で作られている。              論理積回路.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
コンピュータアーキテクチャ 第 5 回.
8. 順序回路の実現 五島 正裕.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
情報システム基盤学基礎1 コンピュータアーキテクチャ編
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

第6回 6/4/2011 状態遷移回路とシングルサイクルCPU設計

プロセッサの構成: データパス(databath)と制御(control) ALUは組み合わせ回路→内部に状態を持たず、出力は入力に関数的に依存する しかし、これだけでは電卓で、計算機は作れない 実際には、レジスタやメモリからデータを読み、ALUを通して演算した後、再びレジスタやメモリに書き戻さなくてはならない状態を持つ回路? データパス(datapath): プロセッサ内のデータの流れ 制御(control): データパスにどの機能ユニットのデータが、どのタイミングで流れるかを制御する プロセッサの構成 機能ユニット(ALU, レジスタ) + データパス + 制御(回路) 機能ユニットは、状態を持つものと、持たないものに分かれる

MIPSプロセッサの設計 MIPS全体の構成を考え、データパスと制御を考えよう ただし、機能を単純化する: メモリ参照命令: lw, sw 算術論理命令: add, sub, and, or, slt 制御命令: beq, j Von Neumann型計算機の汎用的な実装は、以下のようになる (命令サイクル): プログラムカウンタ(PC)が命令のアドレスを指示する 命令をメモリから読み込む(命令フェッチ) 指定されたレジスタの値を読み出す 命令に従って、どのような操作をするかを決定する 全ての命令は、レジスタを読んだ後、ALUを用いる これはなぜか?メモリ参照命令、算術論理命令、制御命令 状態は、レジスタおよびメモリに保存される => 状態を保持する回路が必要

MIPSプロセッサ実装の概観 Data Paths データの値の入力に対し、組み合わせ的に出力を行う(組み合わせ回路) 抽象的な 各機構の概観: 二種類の機能ユニット: データの値の入力に対し、組み合わせ的に出力を行う(組み合わせ回路) 状態を含む回路 (状態遷移回路) それらを結ぶデータパス D a t a R e g i s t e r # ALU PC A d d r e s s I n s t r u c t i o n Registers A d d r e s s R e g i s t e r # Instruction Memory Data Memory R e g i s t e r # D a t a

状態(遷移)回路について 下降エッジ Vcc(5V等) Gnd =Ground 通常は 0 V サイクルタイム 上昇エッジ 同期を行うクロックなし (非同期回路, asynchronous circuits) vs. クロックあり (同期回路, synchronous circuits) 同期回路は、「クロックに従って」状態遷移を行う 状態を含む回路の要素は、クロックのどのような状態をトリガとして更新が行われるべきか? 下降エッジ Vcc(5V等) Gnd =Ground 通常は 0 V サイクルタイム 上昇エッジ 同期回路の状態遷移は、クロック電圧の上昇(GndからVccへ)・下降(VccからGndへ)・又は両方の遷移にておこる(トリガされる)

非同期な状態回路の要素: SRフリップフロップ 最も基本的な状態回路: SRフリップフロップ (SR-Flip-Flop) 出力は、R, Sの入力のみならず、過去の入力に依存する。 入力に対する関数的動作はないが、現在の「状態」x入力に 対して関数的 入力   出力 R _ Q Q Q _ Q S

ラッチとフリップ-フロップ (Latch and Flip-flop) 両者とも、出力は回路要素内に格納された値に常に等しい (つまり、出力値は常に出ており、特に読むのに許可を必要としない) 状態(出力値)の変化は、クロックの状態変化による ラッチ: 入力が変化し、クロックの論理値が真のとき、外部入力に対して状態が変化 フリップフロップ: クロックのエッジの瞬間の外部入力により状態が変化 (エッジトリガ方式) 「論理値が真」, — 電気的には、通常のVcc=5Vの回路では2.5V 2.5V以上が真それ以下でGnd=0Vまでが偽。 クロッキングの手法が、外部入力をいつ反映するのか定義する。 — 読むのと同時に書いたりしてはいけないので

D-ラッチ Dが有効 D C Q C (Clock) Q 出力 _ Q D 入力 二つの入力: 格納されるべきデータの値 (D) 二つの出力Two outputs: 内部状態の値 (Q) と、その補値 (complement) C (Clock) D Dが有効 Q 出力 C _ Q D 入力 Q

D Q Q C D フリップフロップ D1が有効 D2が有効 D1 Q1 D2 Q2 D-latch1 D-latch2 C1 C2 Q2 入力値が出力に反映されるが、その変化のタイミングはクロックエッジのみ。 中途の入力値(D)は、最終的にはQには反映されないことに注意 クロックが0の場合→D-latch1のQ1に反映されない クロックが1の場合→D-latch2のQ2に反映されない D =D1 D1が有効 D D1 Q1 D2 Q2 Q D2が有効 C D-latch1 D-latch2 C1 C2 Q2 Q Q1 =D2 C Q =Q2

我々のMIPSプロセッサ実装の方式 状態回路 状態回路 組合わせ回路 エッジトリガで 状態を保持 中途の(不安定な)回路変化 基本的に、エッジトリガ法を用いる 典型的なユニット間の実行方式: 状態を表す回路要素の値を読み、 何らかの組合せ回路を通して計算をさせ、 一つ以上の状態を表す(別な)要素回路に結果を書き込む 中途の組み合わせ回路のcritical pathが最短のサイクルタイムを規定(後述) Registers, Memory Registers, Memory Combinatorial Logic ALU, Data Path, etc. Si Si+1 状態回路 状態回路 組合わせ回路 エッジトリガで 状態を保持 中途の(不安定な)回路変化 Clock Critical Pathが安定

レジスタファイル(読み出し側) 32bit データパス D フリップフロップを用いて作成する R e a d r e g i s t e r n u m b e r 1 R e g i s t e r R e g i s t e r 1 M u R e a d d a t a 1 R e a d r e g i s t e r x R e g i s t e r n – 1 n u m b e r 1 R e a d d a t a 1 R e g i s t e r n R e a d r e g i s t e r n u m b e r 2 R e g i s t e r f i l e R e a d r e g i s t e r W r i t e r e g i s t e r n u m b e r 2 R e a d W r i t e d a t a 2 d a t a W r i t e M u R e a d d a t a 2 x

レジスタファイル(書き込み側) クロックを用いて、いつ書き込むかを決定していることに注意 W r i t e C R e g i s t e R e g i s t e r 1 D n - t o - 1 C R e g i s t e r n u m b e r d e c o d e r R e g i s t e r 1 D n – 1 n C R e g i s t e r n – 1 D C R e g i s t e r n R e g i s t e r d a t a D

機能ユニットの組み合わせによるMIPSの実装 それぞれの命令の実装に必要な機能ユニットを組み合わせる。 M e m W r i t e I n s t r u c t i o n a d d r e s s P C A d d r e s s R e a d d a t a 1 6 3 2 I n s t r u c t i o n A d d S u m S i g n e x t e n d D a t a I n s t r u c t i o n W r i t e d a t a m e m o r y m e m o r y M e m R e a d a . I n s t r u c t i o n m e m o r y b . P r o g r a m c o u n t e r c . A d d e r a . D a t a m e m o r y u n i t b . S i g n - e x t e n s i o n u n i t A L U c o n t r o l 5 R e a d 3 r e g i s t e r 1 R e a d 5 d a t a 1 R e g i s t e r R e a d n u m b e r s r e g i s t e r 2 Z e r o R e g i s t e r s D a t a A L U A L U 5 W r i t e r e s u l t r e g i s t e r R e a d どのように組み合わせて、データパスを構築すれば良いのであろうか? d a t a 2 W r i t e D a t a d a t a R e g W r i t e a . R e g i s t e r s b . A L U

データパスの構築 マルチプレクサを用いて、それぞれのユニットを結合する 機能ユニット間のデータの流れ (データパス) しかし、まだ「制御」がない P C S r c M A d d u x 4 A d d A L U r e s u l t S h i f t l e f t 2 R e g i s t e r s A L U o p e r a t i o n R e a d 3 M e m W r i t e R e a d r e g i s t e r 1 A L U S r c P C R e a d a d d r e s s R e a d d a t a 1 M e m t o R e g r e g i s t e r 2 Z e r o I n s t r u c t i o n A L U A L U W r i t e R e a d R e a d r e s u l t A d d r e s s r e g i s t e r d a t a 2 M d a t a I n s t r u c t i o n u M u m e m o r y W r i t e x D a t a x d a t a m e m o r y W r i t e R e g W r i t e d a t a 1 6 3 2 S i g n M e m R e a d e x t e n d

(機能ユニットの)制御 それぞれの機能ユニットがどのような操作を行うかを決定 (ALU, read/write, etc.) データパス上のデータの流れを制御(マルチプレクサの入力) 制御の指定は、もともと命令の32bitが行う 例: add $8, $17, $18 R形式の命令フォーマット: 000000 10001 10010 01000 00000 100000 op rs rt rd shamt funct ALU の操作は命令タイプ (op)と、機能コード (funct)によって決定される

制御(続き) ALUは以下の命令はどのように処理すべきか? 例: lw $1, 100($2) 35 2 1 100 op rs rt 16 bit offset ALU に対する制御入力(復習) 000 AND 001 OR 010 add 110 subtract 111 set-on-less-than Q: なぜsubtractのコードは011ではなく110なのであろうか?

ALUの復習 Binvert Operation CarryIn a 1 Result b 2 1 Less 3 CarryOut ALUの制御信号 000 = and 001 = or 010 = add 110 = subtract 111 = slt Set Result0 a0 Operation b0 Overflow Bnegate Zero A L U e s C a r y I n O u t 1 2 3 Result1 Result2 Result31 a1 b1 a2 b2 a31 b31 Binvert Operation CarryIn a 1 Result b 2 1 Less 3 CarryOut

ALUの制御(1) MIPSの命令フィールド 命令の上位6ビットから、命令クラスを現す以下のALUopを導出できたとする 00 = lw, sw 01 = beq, 10= arithmetic&logical 一方下位6ビットは、R形式の場合は命令クラス内の具体的な操作を現す。尾っぽ羽、I形式の場合などは、16-bitオフセット値の一部 ALUOp インストラクションタイプより計算

ALUの制御(2) 先の3bitのALUの制御入力を計算する 算術演算の場合は、function codeも見る lw, swの場合は、そのフィールドはオフセット値なので、無視 真理値表による表現: (マージして最適化後) Xは don’t care (0でも1でもよい)回路を都合よく単純化 Q: この真理値表を実現する組合せ回路を実現せよ

制御 (全体) M u x A d d A L U r e s u l t 1 A d d S h i f t R e g D s t l M u x A d d A L U r e s u l t 1 A d d S h i f t R e g D s t l e f t 2 4 B r a n c h M e m R e a d I n s t r u c t i o n [ 3 1 – 2 6 ] M e m t o R e g C o n t r o l A L U O p M e m W r i t e A L U S r c R e g W r i t e I n s t r u c t i o n [ 2 5 – 2 1 ] R e a d P C R e a d r e g i s t e r 1 a d d r e s s R e a d I n s t r u c t i o n [ 2 – 1 6 ] R e a d d a t a 1 r e g i s t e r 2 Z e r o I n s t r u c t i o n [ 3 1 – ] R e g i s t e r s R e a d A L U A L U M W r i t e d a t a 2 r e s u l t A d d r e s s R e a d I n s t r u c t i o n 1 u r e g i s t e r M d a t a m e m o r y u M I n s t r u c t i o n [ 1 5 – 1 1 ] x 1 W r i t e x u d a t a D a t a x 1 m e m o r y W r i t e d a t a I n s t r u c t i o n [ 1 5 – ] 1 6 3 2 S i g n e x t e n d A L U c o n t r o l I n s t r u c t i o n [ 5 – ]

制御 (回路) 真理値表を、組合せ回路として設計すれば良い ALU Control (Main) Control

シングルサイクル設計におけるクリティカルパス すべての組み合わせ回路の出力が安定し、正しい出力を出すまでつ必要 ALU はすぐには「正しい答え」を出さない そこで、クロック信号と書き込み信号を用いて、いつ書き込むべきか、を決定する。(つまり、書き込みの準備が整ったら、書き込みの信号線を真にしておき、クロックのエッジで書き込むようにする。) サイクルタイムは、回路のクリティカルパス(もっとも遅い部分)で決定される。 クリティカルパスの安定時間よりサイクルタイムが短い場合=>どうなる? Registers, Memory Registers, Memory Combinatorial Logic ALU, Data Path, etc. Si Si+1 状態回路 状態回路 組合わせ回路 エッジトリガで 状態を保持 中途の(不安定な)回路変化 Clock Critical Pathが安定

シングルサイクル実装におけるクリティカルパスと、最短のサイクルタイム計算 Q: 以下の回路で、サイクルタイムを計算せよ。ただし、以下の遅延以外は無視できるものとする: メモリ (2ns), ALU と加算器 (2ns), レジスタファイルの読み書き (1ns) P C S r c 1 A d d M u x 4 A L U A d d r e s u l t R e g W r i t e S h i f t l e f t 2 I n s t r u c t i o n [ 2 5 – 2 1 ] R e a d R e a d r e g i s t e r 1 R e a d M e m W r i t e P C a d d r e s s I n s t r u c t i o n [ 2 – 1 6 ] R e a d d a t a 1 A L U S r c M e m t o R e g r e g i s t e r 2 I n s t r u c t i o n Z e r o 1 R e a d [ 3 1 – ] A L U W r i t e 1 A L U d a t a 2 r e s u l t A d d r e s s R e a d M 1 u r e g i s t e r M d a t a I n s t r u c t i o n I n s t r u c t i o n [ 1 5 – 1 1 ] x u M m e m o r y W r i t e x u d a t a R e g i s t e r s x W r i t e D a t a R e g D s t d a t a m e m o r y I n s t r u c t i o n [ 1 5 – ] 1 6 S i g n 3 2 e x t e n d A L U M e m R e a d c o n t r o l I n s t r u c t i o n [ 5 – ] A L U O p

今後の設計について シングルサイクル実装の問題点: クリティカルパスによる性能の低下→浮動小数点演算のように、時間がかかる命令があったらどうなるか? チップ面積の無駄にもなる 解決法: より短いサイクルタイムを実現する 命令によってサイクル数を可変にする マルチサイクルなデータパスの設計: I n s t r u c t i o n r e g i s t e r D a t a P C A d d r e s s A R e g i s t e r # I n s t r u c t i o n M e m o r y o r d a t a R e g i s t e r s A L U A L U O u t M e m o r y R e g i s t e r # d a t a B D a t a r e g i s t e r R e g i s t e r #