PFI Seminar 2010/01/21

54
1 ソフトウェアエンジニアのための ハードウェアの知識 2010/1/21 西川 徹 株式会社Preferred Infrastructure

Transcript of PFI Seminar 2010/01/21

Page 1: PFI Seminar 2010/01/21

1

ソフトウェアエンジニアのためのハードウェアの知識

2010/1/21

西川徹

株式会社Preferred Infrastructure

Page 2: PFI Seminar 2010/01/21

2

目次

Part.1 イントロダクション

Part.2 コンピュータのインターフェイス

Part.3 PCIバスの進化

Page 3: PFI Seminar 2010/01/21

3

Part.1

イントロダクション

Page 4: PFI Seminar 2010/01/21

4

私とハードウェアの関わり

もともとはプログラミング言語処理系・OSに興味があった

学部3年(東京大学情報科学科)のとき、CPU実験という実験でハードウェアの面白さに惹かれる

その後、ハードウェアの研究室に進み、IPA未踏事業でもハードウェア関連のプロジェクトを行う

Page 5: PFI Seminar 2010/01/21

5

私とハードウェアの関わり

その後はPFIを立ち上げ、検索エンジンを作る

検索エンジンは大規模で高速なことが要求される1台のマシンでより速く

速いエンジンをたくさんつなげたらもっと速く!

直接ハードウェアを作らなくとも、ハードウェアのことを深く考えないといけない

ISAレベル、マイクロアーキテクチャレベルだけでなく、システムアーキテクチャのレベルでも。

Page 6: PFI Seminar 2010/01/21

6

CPU実験

FPGAを用いてCPUを実際に作る

ISAの設計からプロセッサの実装まで

そのCPUでレイトレを動かす

Page 7: PFI Seminar 2010/01/21

7

CPU実験

FPGAチップの周りには、SRAM,SDRAM,USBなどのコントローラチップが配置されている

入出力周りも作りこむ

市販のCPUとの大きな違いは割り込みを実装する必要がないということ

Page 8: PFI Seminar 2010/01/21

8

CPU実験

FPGAはXilinx社のVirtex II

100万ゲートトランジスタ相当の回路を詰め込める

レイトレを動かすだけなら、CPU自体はそんなに複雑にならない

入出力周りの規格やFPGAの仕様を確認する時間がほとんどだったクロックを上げてうまくいかないときは、微妙なタイミングのずれを疑う

Page 9: PFI Seminar 2010/01/21

9

CPU実験の面白さ

いかに速く動作するCPUを作るかスーパースカラーを作った人たちもいる

CPUを作る難しさは、機能的な設計だけでなく、さまざまな難しさが絡み合っている回路内部のタイミングの問題

外部デバイスとの入出力インターフェイス

などなど

Page 10: PFI Seminar 2010/01/21

10

今日は

コンピュータにとって重要な要素の一つである、インターフェイスについて説明します

重要だけど、あまりきちんと知る機会がないソフトウェアエンジニアにとっては。

ハードウェアエンジニアにとってはもちろん常識

Page 11: PFI Seminar 2010/01/21

11

Part.2

コンピュータのインターフェイス

Page 12: PFI Seminar 2010/01/21

12

たくさんのインターフェイス

PCIバス,SATAインターフェイスなど、さまざまなインターフェイスがマザーボード上に実装されている

もうちょっとわかりやすくみてみるブロック図

Page 13: PFI Seminar 2010/01/21

13

ブロック図の例

プロセッサ

メモリ・コントロール・ハブ

I/Oコントロール・ハブ

HDDCDIDE

USB

AC’97IEEE

1394SCSI

Ethernet ブートROM

PCIスロット

PCIバス

グラフィックス

AGP

DDR SDRAM

Page 14: PFI Seminar 2010/01/21

14

インターフェイス・インターコネクトの種類

拡張バスISA,PCI,PCI-X,PCI-Express,PCMCIA,CardBus

ストレージとの接続IDE,SCSI,SATA,SAS

ネットワークEthernet,InfiniBand

周辺機器との接続USB,IEEE1394,パラレルポート,シリアルポート,PS/2

画像入力・表示VGA,DVI,HDMI,ディスプレイポート

Page 15: PFI Seminar 2010/01/21

15

拡張バス

PCI-Expressグラフィックスカードの例

a PCI-Express graphics board by Gigabyte wihth an NVIDIA chpiset (Geforce 6200TC)

picture taken on Nov 12, 2005 by Clemens PFEIFFER

Page 16: PFI Seminar 2010/01/21

16

拡張バス

PCI-Expressグラフィックカードを沢山さした例

picture taken by Takayuki Muranushi

Page 17: PFI Seminar 2010/01/21

17

インターフェイスには沢山の規格がある

用途によって適切なインターフェイスが変わってくる

RS-232C(シリアルポート)も未だに利用されるデバイスからRS-232Cを介して通信するのは非常に簡単

Page 18: PFI Seminar 2010/01/21

18

進化するインターフェイス

プロセッサが速くなるに従って、インターフェイス/インターコネクトに求められる性能要件も厳しくなっていく

ソフトウェア互換を保ったままその下のレイヤーで速くしていくこともある

Page 19: PFI Seminar 2010/01/21

19

Part.3

PCIバスの進化

Page 20: PFI Seminar 2010/01/21

20

PCIバスについて

PCI(Peripheral Component

Interconnect)バスは、もともとはIntelがマ

ザーボード上のデバイス間接続インターフェイスとして考えたもの。

バージョン2.0からコネクタ仕様が追加され、拡張バスとして利用されるようになった

Page 21: PFI Seminar 2010/01/21

21

PCIバスについて

PCの性能向上とともにPCIバスの帯域幅の狭さが問題となった

その問題を解決すべく、PCI-X,PCI-

Expressといった規格が考えられた

本パートでは、どのようにして高速化・高スループットが可能になったのかを説明

Page 22: PFI Seminar 2010/01/21

22

PCIバスの概要

ホストPCIブリッジ

バス・アービタ

デバイス1

デバイス2

デバイス3

デバイス4

CLK

Page 23: PFI Seminar 2010/01/21

23

複数のデバイスが1つのバスにつながっている

32bit/64bit(オプション)のパラレル・バス

動作のタイミングはバス上のCLK信号を基準としている

アービター:どのデバイスがバスを利用できるか制御する

PCIバスの概要

Device A Device A Device A

Page 24: PFI Seminar 2010/01/21

24

PCIバスの概要

デバイスの初期化手段が統一されている

ブリッジによってバスを拡張することができる1つのバスには、10個程度のデバイスを接続するのが限界

Page 25: PFI Seminar 2010/01/21

25

PCIバスのアクセス例

CLK

AD

C/BE#

FRAME#

IRDY#

DEVSEL#

TRDY#

ADDRESS

BUS CMD

DATA-0 DATA-1 DATA-2 DATA-3 DATA-4

BE#’ S-0 BE#’ S-1 BE#’ S-2 BE#’ S-3 BE#’ S-4

Page 26: PFI Seminar 2010/01/21

26

AD[31:00]アドレス/データ・バス

C/BE[3:0]バス・コマンド(アドレスフェーズ)メモリアクセス・I/Oアクセス・コンフィグレーションアクセス

バイト・イネーブル(データフェーズ)

FRAME#:バスサイクルが実行されていることを示す

IRDY#:イニシエータが転送可能状態

TRDY#:ターゲットが転送可能状態

DEVSEL#:アクセスを受けたターゲットによってアサートされる

4クロック以内にアサートされなかったらそのバスサイクルはアボート

イニシエータ:転送を制御しているデバイス

Page 27: PFI Seminar 2010/01/21

27

PCI-X

バスクロックの高速化によりPCIの高速化を図った

PCI-X 2.0ではDDR/QDRによりさらなる高速化1クロックの間に複数のデータを送る

クロック方式もソースシンクロナス方式

スプリットトランザクションへの対応データの要求と応答を別々に扱うことができる

バスを有効活用することができる

Page 28: PFI Seminar 2010/01/21

28

クロック信号

現在のほとんどのコンピュータが、クロックと呼ばれる特別な信号でタイミングをとりながら動作する

データを取り込むタイミングもクロックに合わせて動作する

Page 29: PFI Seminar 2010/01/21

29

周波数が高くなると・・・

クロックは場所によってずれがでてきてしまうクロックが伝わるにも時間がかかる

高クロックの回路では、このずれが大きな問題となる

Page 30: PFI Seminar 2010/01/21

30

コモンクロック方式とソースシンクロナス方式コモンクロック方式送信側・受信側で同じクロックを用いる

PCI,PCI-X 1.0の方式

ソースシンクロナス方式受信側のクロックに合わせてデータを取り込む

PCI-X 2.0

Page 31: PFI Seminar 2010/01/21

31

さらなる高速化のために

PCI/PCI-Xでさらに高速化を図るためにはいくつかの課題がある

データ幅を引き上げればいいのではないか?クロック周波数を上げるのではだめなのか?

Page 32: PFI Seminar 2010/01/21

32

パラレル・バスの限界

ソースシンクロナス方式でも、クロック周波数が高くなると、各信号間でのタイミングのずれが問題になる

信号線の数が多くなると、実装コストも高くなる

Page 33: PFI Seminar 2010/01/21

33

パラレル・バスの限界

ひとつのバスを複数のデバイスが共有する場合、デバイスが増えるとオーバーヘッドが大きくなる

あまり1つのバスの多くのデバイスをつなぐことはできない

Page 34: PFI Seminar 2010/01/21

34

つまり

このようなモンスターGPUを沢山つなげることができない

picture taken by Takayuki Muranushi

Page 35: PFI Seminar 2010/01/21

35

PCI Expressのアプローチ

シリアル・バスでデータ伝送を行う

ポイント・ツー・ポイントの伝送

パケット単位でのデータのやりとり

ハードウェア的にはPCIと大きく異なるが、ソフトウェア的な互換性を維持している

Page 36: PFI Seminar 2010/01/21

36

PCI Expressのレイヤ・アーキテクチャ

ソフトウェア層

トランザクション層

データリンク層

物理層

ソフトウェア層

プロトコル

シグナリング

PCI Express PCI

Page 37: PFI Seminar 2010/01/21

37

PCI Expressのレイヤ・アーキテクチャ

トランザクション層エンド・ツー・エンドでの確実な通信を保証する

ソフトウェア層に対してPCI互換のサービスを提供する

データリンク層隣接したコンポーネント間での確実な通信を保証する

物理層物理媒体上で通信パケットを送受信する

Page 38: PFI Seminar 2010/01/21

38

PCI Expressのレイヤ・アーキテクチャ

PCI Express Gen2では、このような構造のため、物理層の変更のみで5Gbpsを実現している

仕様の変更や拡張に対応しやすい

Page 39: PFI Seminar 2010/01/21

39

PCI Expressのレイヤアーキテクチャ

データフロー

ソフトウェア層

トランザクション層

データリンク層

物理層

ソフトウェア層

トランザクション層

データリンク層

物理層

DLLP

TLP

オーダード・セット

TLP:Transaction Layer Packet

DLLP:Data Link Layer Packet

Page 40: PFI Seminar 2010/01/21

40

PCI Expressのレイヤアーキテクチャ

パケットの構造

StartSequence

NumberHeader Data ECRC LCRC END

送信方向

トランザクション層

データリンク層

物理層

Page 41: PFI Seminar 2010/01/21

41

PCI Expressのリンク

PCIはマルチドロップ型(ひとつのバスに複数のデバイスが接続される)

PCI Expressはポイント・ツー・ポイント接続

片方向の差動伝送路を2つ使用片方向で2.5Gbps

このペアをレーンと呼ぶ

レーンをx2からx32まで増やすことができる

Page 42: PFI Seminar 2010/01/21

42

PCI Expressのシステム構成

Processor Processor

ルートコンプレックス

DDR SDRAM

PCI Express GFX

スイッチ スイッチ

スイッチ

エンドポイント

エンドポイント

エンドポイント

エンドポイント

エンドポイント

Page 43: PFI Seminar 2010/01/21

43

PCI Expressの物理層

信号は2.5GHzで送りだされる1レーン片方向2.5Gbps

差動シグナリング

シリアル伝送エンベデッドクロック

8b/10bエンコーディング

Page 44: PFI Seminar 2010/01/21

44

差動シグナリング

特徴高速伝送が可能

外来ノイズに強い

ノイズの発生が少ない

D+とD-の2つの信号線に同時に逆位相の信号を伝送

受信側はD+とD-の差をみることによりデータの1/0を判定

Page 45: PFI Seminar 2010/01/21

45

差動シグナリング

電圧を変化させるのには時間がかかる

振幅が少ないほど短い遷移時間で変化させられる

D+,D-に共通する

ノイズが差し引かれてゼロになる

D+

D-

D+ - D-

Page 46: PFI Seminar 2010/01/21

46

シリアル伝送

なぜシリアルである必要があるのか?パラレルではだめなのか?

クロック周波数を上げるとパラレルでは限界

では、なぜシリアルだとよいのか

Page 47: PFI Seminar 2010/01/21

47

エンベデッドクロック

1本の信号線で、データだけではなくクロックも送ることにより、より高周波で動作可能にする

受け取る側は、送られてきた信号からクロックを復元する

Page 48: PFI Seminar 2010/01/21

48

エンベデッドクロック

01 1 10000000

シリアル信号入力

クロック

シリアル信号入力とクロックとの位相を比較して、クロック信号の位相を修正する

Page 49: PFI Seminar 2010/01/21

49

8b/10bエンコーディング

エンベデッドクロックを実現するためには、0が続いたり、1が続いたりしてはいけない

8bitの信号を、一定周期にかならず0/1の変化が起こるように10bitにエンコーディングする

Page 50: PFI Seminar 2010/01/21

50

8b/10bエンコーディング

Name 8bit currentRD- currentRD+

D00.0 00h 100111 0100 011000 1011

D01.0 01h 011101 0100 100010 1011

D02.0 02h 101101 0100 010010 1011

D03.0 03h 110001 1011 110001 0100

D04.0 04h 110101 0100 001010 1011

D05.0 05h 101001 1011 101001 0100

D30.7 FEh 011110 0001 100001 1110

D31.7 FFh 101011 0001 010100 1110

Page 51: PFI Seminar 2010/01/21

51

伝送路のシリアル化により

高周波クロック化を達成することが可能になった

SATA等も同様の方式が使われている

Page 52: PFI Seminar 2010/01/21

52

速度比較

PCI/PCI-X

バス形式 クロック周波数 最大データ帯域幅(Gバイト/秒)

PCI 32 bit 33MHz 0.133

PCI 32 bit 66MHz 0.266

PCI-X 32 bit 66MHz 0.266

PCI-X 32 bit 133MHz 0.533

PCI-X 32 bit 実効266MHz 1.066

PCI-X 32 bit 実効533MHz 2.131

Page 53: PFI Seminar 2010/01/21

53

速度比較

PCI Express双方向での帯域幅

リンク幅

x1 x2 x4 x8 x12 x16 X320.5

最大データ帯域幅(Gバイト/秒)

0.5 1 2 4 6 8 16

Page 54: PFI Seminar 2010/01/21

54

参考文献

PCI関連R.Budruk, D.Anderson and T.Shanley: PCI Express System Architecture

http://www.pcisig.com/

荒井信隆,里見尚志,田中顕裕: PCI Express 入門講座(電波新聞社)

改定新版PCIバス&PCI-Xバスの徹底研究(CQ出版社)

インターフェイスの概要インターフェース 2009年2月号「インターフェース規格のすぐに役立つ基礎知識」(CQ出版社)