verilog hdlによるシステム開発と設計 共立出版...

37
高橋隆一 : Verilog HDLによるシステム開発と設計 共立出版 (2008) 講義用スライド(ppt) Ver1.0

Upload: others

Post on 02-Feb-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

高橋隆一 :

Verilog HDLによるシステム開発と設計

共立出版 (2008)

講義用スライド(ppt) Ver1.0

Page 2: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

第1章 ハードウエアを記述するということ

高橋隆一 :

Verilog HDLによるシステム開発と設計

共立出版 (2008)

Page 3: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

DDL(1968)によるオートマトン記述

DDLは 1968にJ.R.Duley D.L.Dietmeyerによって提案されたオートマトン記述

P1への状態遷移<TE> REQ_PFU.<ST>

P0 : RAM(REQ_PFU=1), =>P1;P1 : ACK_PFU : OP<- DATA[11:9],ADR<-DATA[7:0],

↑PC,=>P2;

オペコードとアドレスをセットPCをインクリメント

各状態にRTオペレーション(レジスタ間転送)

を列挙して次の状態を指定する

教科書 P.10

Page 4: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

DDL(1968)によるオートマトン記述

<TE> REQ_PFU.<ST>

P0 : RAM(REQ_PFU=1), =>P1;P1 : ACK_PFU : OP<- DATA[11:9],

古典的なオートマトン記述(DDL)では

端子(<TE>)への代入を許していた

イベントが発生する

アクノレッジを受け取る

教科書 P.10

Page 5: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

SSMDによるオートマトン記述SSMDは City-1(1996-2008)で筆者が工夫した

Verilog HDLによるオートマトン記述

always@(posedge CLK or posedge RESET)

REQ_PFU=1; STATE<= `P1; end

OP=DATA[11:9]; ADR=DATA[7:0];

PC=PC+1; STATE<= `P1; end

`define P0 2’b00`define P1 2’b01

begin : state_machineif (RESET) STATE<= `P0;

beginelse

case (STATE)`P0 : begin`P1 : begin

if (ACK_PFU) begin各状態にRTオペレーションを

列挙して次の状態を指定する点

はDDLと同じオートマトン記述

P1への状態遷移

Page 6: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

SSMDによるオートマトン記述

always@(posedge CLK or posedge RESET)

REQ_PFU=1; STATE<= `P1; end

OP=DATA[11:9]; ADR=DATA[7:0];

PC=PC+1; STATE<= `P1; end

`define P0 2’b00`define P1 2’b01

begin : state_machineif (RESET) STATE<= `P0;

beginelse

case (STATE)`P0 : begin`P1 : begin

if (ACK_PFU) begin

オートマトン間の通信は

組合せ回路で表現する

REG_PFUはFFにする

assign ACK_PFU = REQ_PFU&& (~REQ_EXU || Priority_PFU);

教科書 P.14

通信を組合せ回路で表現した例

Page 7: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

組合せ回路で表現できる背景

Prefetch unit Arbiter

REQ_PFU

ACK_PFU

REQ_EXU

Priority_PFU

assign ACK_PFU = REQ_PFU && (~REQ_EXU || Priority_PFU);

教科書 P.14

Page 8: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

第2章 Verilog HDLの基本

高橋隆一 :

Verilog HDLによるシステム開発と設計

共立出版 (2008)

Page 9: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

Verilog HDLはどのような言語か

8 bitの全加算器の記述

module adder (A, B, CARRY_IN, SUM, CARRY_OUT);

input CARRY_IN;output [7:0] SUM;

input [7:0] A, B;

output CARRY_OUT;

assign {CARRY_OUT, SUM}=A+B+CARRY_IN;

endmodule

Verilog HDLの記述単位はモジュール

moduleで始まり

endmoduleで終わる

教科書 P.21

Page 10: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

8’b11001101

基数の指定がないときは10進数と見做される

対応する2進数<サイズ> ’<基数> <数>

10進数でのみd, h, b, o のいずれか

D, H, B, O でも可0, 1, 2, …9, a, b, c, d, e, fA, B, C, D, E, Fでも可

O(8進数)なら7まで

16’h0AC111001101

00000111

1010110000014’d7

プログラムカウンタのインクリメントは

PC = PC + 1;

教科書 P.23

Page 11: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

不定値とハイ・インピーダンス

0, 1 の他に

x 不定値( 0でも1でもあり得る )

z ハイ・インピーダンス(非常に大きな抵抗値)

z接続していないのと同じ

を用いることができる

inout [7:0] DATA_BUS_EXT;parameter Z = 8’hzz;

wire [7:0] DATA_BUS_EXT=(DATA_BUS_OUT)? DATA_BUS : Z;

双方向バスの宣言

8ビットのハイ・インピーダンス値

DATA_BUS_OUTがゼロなら接続していないのと同じになる

このとき外部からの読み出しが行える

教科書 P.37

Page 12: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

always文による全加算器の記述

module adder (A, B, CARRY_IN, SUM, CARRY_OUT);

input CARRY_IN;output [7:0] SUM;

input [7:0] A, B;

output CARRY_OUT;

reg [7:0] SUM;reg CARRY_OUT;

always@(A or B or CARRY_IN)begin

end{CARRY_OUT, SUM}= A + B + CARRY_IN;

always文は

レジスタ reg にしか

使えない!

endmodule

すべての入力を列挙していれば

組合せ回路が合成される

Verilog HDLの一番分かりにくい点

教科書 P.29

Page 13: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

SSMDではRTオペレーションも書いてしまう

reg [2:0] STATE; reg [7:0] A,B,C;parameter P0 = 3’b000;parameter P1 = 3’b001;

:

P0 : A=A+1; B=8’h0A; STATE <= P1;P1 : C=A+B; STATE = P2;

:

always @(posedge CLK or posedge RESET_N)if (!RESET_N) begin

STATE <= P0; A=8’b0; B=8’b0; C=8’b0; end

case( STATE )else begin

各状態にRTオペレーションを列挙する

RTオペレーション

も列挙する

SSMDはVerilog HDLによるオートマトン記述

(NEC時代の研究が背景)

City-1大成功の秘訣

教科書 P.44

状態遷移だけでなく

Page 14: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

アルゴリズムも記述できる

ユークリッドの互除法を記述した例

always @(posedge CLK or posedge RESET)begin : state_machine

`define P0 3’b000

reg [2:0] STATE;

begincase (STATE)

`P2 : beginif ( R!= 8’h00 )

:

:

end

beginR=A%B; A=B; STATE<= `P3;

else STATE<= `P4;

:

end

専用マシンが合成される

教科書 P.34

Page 15: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

下位モジュールの呼び出しポートの順番を一致させる方法(RISC-3)

:execution_unit EXU(RESET, HALT,

DECODED_OPCODE,OPERANDS,DECODED_OPCODE_READY,DATA_ADDRESS_BUS, DATA_BUS_EXT,REG0, REG1, REG2, REG3,REG0_OUT, REG1_OUT, REG2_OUT, REG3_OUT,CLOCK1, DATA_MEM_READ, DATA_BUS_OUT, FR );

module central_processing_unit(RUN, RESET, HALT,

endmodule

module execution_unit(RESET, HALT,DECODED_OPCODE,OPERANDS,DECODED_OPCODE_READY,DATA_ADDRESS_BUS, DATA_BUS,REG0, REG1, REG2, REG3,REG0_OUT, REG1_OUT, REG2_OUT, REG3_OUT,CLOCK1, DATA_MEM_READ, DATA_BUS_OUT, FR_FORWARD );

名前が異なっていても対応付けられる

教科書 P.37

Page 16: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

第3章 命令解釈実行サイクル

高橋隆一 :

Verilog HDLによるシステム開発と設計

共立出版 (2008)

Page 17: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

フォンノイマン型(プログラム内蔵方式)

・主記憶が0番地,1番地,・・・と線形なアドレスをもつ

・命令は主記憶に格納されている

・アーキテクチャが固定されている

・命令が主導権をもってデータの意味を決める

・プログラムカウンタが存在して逐次的に処理が進む・命令の解釈実行は制御信号によって駆動される

・動作は決定的である

教科書 P.63

Page 18: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

主記憶

プログラム

カウンタ(PC)

命令レジスタ(IR)

デコーダマイクロ命令

アドレスレジスタ

(CSADR)

制御メモリ

(CS)

シーケンサ

REG0 REG1 REG2外部バス 内部バス

制御部

データパス

命令キュー

REG2=REG0+REG1

コンピュータの仕組み

Page 19: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

CISC-1 (1996)では水平型のマイクロ

プログラムを結線論理制御で発生教科書 P.56

結線論理マイクロコードマシン(結線論理マイクロコードマシン(HMHM22))

DataData--pathpathinformationinformationControl Control

signalssignals

Microinstruction registerMicroinstruction register CS address registerCS address register

CombinationalCombinationallogic circuitlogic circuit

Page 20: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

CISC-1とディジタル信号処理専用マシンで比較

最 大 パ ス 遅 延 [ns]

専用マシン非HM2

専用マシンHM2

CISC-1非HM2

CISC-1HM2

12%減少

10%減少

たたみ込み専用マシン : 制御部の遅延が僅かに上回った

CISC-1 : 制御部の遅延がデータパスの遅延に隠れた

HM2の評価結果(卒業研究) 教科書 P.33

非HM2での制御レジスタのビット幅は log2(「状態数」)

Page 21: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

第4章 パイプライン化

高橋隆一 :

Verilog HDLによるシステム開発と設計

共立出版 (2008)

Page 22: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

RISC-3 教科書 P.62

ステージングラッチ

前のステージの

結果であり

次のステージの

入力となる

Page 23: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

データ依存関係 教科書 P.76

真の依存(true dependency)先行する命令が書き込む結果を後続する命令が使う

出力依存(output dependency)先行する命令が書き込む記憶領域を後続する命令が書き改める

逆依存(antidependency)先行する命令が読み出す記憶領域を後続する命令が書き改める

Page 24: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

ハザード(data-dependent hazard) 教科書 P.77

RAW(read after write hazard)書き込みの後にこれを読むという順序が崩れる危険

WAW(write after write hazard)書き込みの後にもう一度書くという順序が崩れる危険

WAR(write after read hazard)読み出しをしてから書き込むという順序が崩れる危険

ハザードを検出して回避する機構が

パイプライン・インターロック

Page 25: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

RISC-3のインターロック 教科書 P.66

比較命令をみつけるとフラグ・ビジーを立てる

if (INSTRUCTION_BUS[14] && FR_BUSY)

beginif (INSTRUCTION_BUS[13] )

FR_BUSY = 1’b1;:

さらに条件分岐の命令をみつけるとWAITに遷移する

begin

STATE<= ` WAIT;

end

SSMD(オートマトン記述)による

インターロックの書き方

Page 26: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

RISC-3でのフォワーディング 教科書 P.73

reg型で宣言して

組合せ回路の記述をしている

if (DECODED_OPCODE[4]) // CPL

REG0 or REG1 or REG2 or REG3)always@(DECODED_OPCODE[4] or FR or

begin

2’b00: begin:

case(OPERANDS[9:8])begin

if (REG0>REG0) FR_FORWARD=2’b00;

else FR_FORWARD=FR;

比較命令でなければ

そのときの値を送っている

Page 27: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

第5章 スーパースカラ

高橋隆一 :

Verilog HDLによるシステム開発と設計

共立出版 (2008)

Page 28: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

空間並列 教科書 P.81

1クロックあたりに実行できる命令数(IPC)パイプライン段数を増やせばスループット,さらには

動作周波数を高めることはできるが

IPC=1という壁を破ることはできない

スーパースカラ

複数の命令をフェッチしてバッファに格納し,

可能なら複数の命令を同時に発行することで

IPC>1を実現

Pentium(1993)…i486の後継はスーパースカラだった

U-Pipe,V-Pipeという2本のパイプラインを持っていた

…英語での発音は「スーパースケイラ」

Page 29: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

プロセッサのステート 教科書 P.83

アーキテクチャステート

Architecturalstate

ルックアヘッドステート

Lookaheadstate

REG1=…

REG4=…

REG5=…REG3=…REG2=…REG8=…

REG5=…REG3=…REG2=…REG8=…

REG1=…REG3=…REG4=…REG3=…REG5=…REG3=…REG2=…REG8=…

レレ

REG1=…

REG4=…REG3=…

レレ

命令列InstructionSequence In-order state

イン・オーダーステート

命令ウインドウでの結果を

イン・オーダーに書き戻す

レジスタファイルで実現可能

Page 30: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

RISC-3FB4 structureInstructionMemory

DataMemory

Instruction Register

Prefetch

Reorder

Branch

Load/Store

Decoded Instruction Buffer-4

Decoded Instruction Buffer-2

Register File

Decoded Instruction Buffer-1

Decoded Instruction Buffer-3

教科書 P.84

Unit

Buffer Unit

Unit

Unit

FIRST UnitLASTNEXT

12 2

ALU-1

ALU-2

Page 31: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

RISC-3FB4 structureInstructionMemory

DataMemory

Instruction Register

Prefetch

Reorder

Branch

Load/Store

Decoded Instruction Buffer-4

Decoded Instruction Buffer-2

Register File

Decoded Instruction Buffer-1

Decoded Instruction Buffer-3

教科書 P.84

Unit

Buffer Unit

Unit

Unit

3

5

4

6FIRST

UnitLAST

NEXT

456

ALU-1

ALU-2

Page 32: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

RISC vs スーパースカラCISCレジスタ・リネーミング

相互結合網

レジスタの値を保持するバッファとALU間の結合網

インテルの最初のスーパースカラPentiumの

IA-32(x86)は8つしかレジスタをもたなかったが

レジスタを32個もつRISCを恐れなかったのは

数十のエントリがレジスタの役割を果たしたため

RISCでもCISCでもスーパースカラは高速化しようと

するほどデータフロー・コンピュータに似てくる

Page 33: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

第6章 設計検証

高橋隆一 :

Verilog HDLによるシステム開発と設計

共立出版 (2008)

Page 34: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

全称記号と存在記号

Rを実数の集合としたとき

∀x R

は「xに足すと0になる実数yが存在する」を意味する

∃y R [x+y=0]

教科書 P.96

を前につけた

∀x R ∃y R [x+y=0]

は「どんな実数xにも,足すと0になる実数yが存在する」

の意味になる

真な命題である

Page 35: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

帰納的アサーション 教科書 P.98

フローチャートの切断点

カットポイントで成立しているべき述語

カットポイント

帰納的アサーション

すべてのループに少なくとも1つ割り当てる

プログラムは有限個の経路に分断される

「アサーション」とは「その点で成り立って

いるべき性質(プロパティ)」

Page 36: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

SVA構成の指針が無く

記述に時間がかかる場合

SVAを用いた設計シミュレーションのみによる設計

マイクロアーキテクチャ設計のためのSVA

SVA構成の指針があり

短期間で記述できる場合

バグを多くみつけることのできるアサーションを書く

指針があれば,短期間で品質を向上させることができる

0 時間(日数)

累積バグ件数

0

累積バグ件数

時間(日数)

SVAを書いている期間

品質は向上しない

Page 37: Verilog HDLによるシステム開発と設計 共立出版 …alpha-1.movie.coocan.jp/computer/Verilog_SSMD_slides_Ver...高橋隆一: Verilog HDLによるシステム開発と設計

CISC-3から4段パイプラインへの改造(卒業研究)

改造時に用いたSVA

“$pastで1クロック前の値を参照

オペランドのフォワーディングが

行われたなら直前の書き込みは

メモリ上の同じアドレスに対して

だったことを検証した

SVA(スティミュラス)の例

【出典】

「RISCへの改造」と同じ

Ⓒ2011 高橋隆一