Comments
Description
Transcript
IPバスコンピュータアーキテクチャと並列処理
IPバスコンピュータアーキテクチャと並列処理 (The IP Bus Computer Architecture and Pararell Processing ) 2008年9月 WIDE合宿 研究発表資料 慶應義塾大学 村井研究室 松谷 健史 [email protected] [email protected] 1 IPバスコンピュータアーキテクチャと並列処理 目次 背景 目的 関連技術 アプローチ 並列処理 設計・実装 評価 高遅延環境におけるキャッシュの有効性評価 まとめ 2 背景 LANの高速化 バスの制限の問題 距離、接続数、再構成可能性 バスのネットワーク化 シリアル通信 通信階層 ハブ接続 PCI Express InfiniBand エンドポイントIP化 3 目的 アプリケーションやユーザの要求に応じてハ ードウェアを動的に割り当てるコンピュータア ーキテクチャを実現 バスの距離と数の制限に関する問題を解決する アプリケーションやユーザーからの要求による構成変 更 遠い場所、長い距離でのハードウェア接続 多くのCPU 、メモリ、I/O機器の同時サポート 4 CPU,メモリ,I/Oを接続する関連技術 Connection level IP-level connections (Software/Hardware implementation) iSCSI & USB/IP Microcode-level connections Virtualization Peripheral buses & networks PCI BUS PCI Express BUS InfiniBand RDMA (Remote Direct Memory Access) ExpEther Chipset-level connections (North/South Bridge) vPro Memory interconnects NUMA (Non-Uniform Memory Access) NORA (No Remote Memory Access), Distributed Memory 5 ネットワークセントリック・コンピュータアーキテクチャ概念図 CPU Centric・Computer Network Centric・Computer 入力回路 Memory Memory Memory Memory HUB CPU CPU LAN LAN Node-1 Client Node-2 Server ・Node-1と2でプログラム実行 ・Node-1でプログラム実行 BUS ・Node-2サーバへの要求 IP Network ・入力回路への要求 ・Node-1クライアントへの応答 6 アプローチ チップセットレベルでの相互接続 IPとバスの変換機構を持つIPバスブリッジの開発 遅延を下げる仕組 ハードウェアによる専用LANコントローラの設計 ローカル資源の操作はネットワークを経由しない 高遅延対策 キャッシュ機構の設計 ネットワークにつながる回路との接続性向上 2つ以上の重なるアドレス空間の接続と動的回路構成の仕組 TLB(Translation Look-aside Buffer)/PTEによるアドレス変換 すべての回路にアドレス空間を割り当てる TLBレジスタ、CPUレジスタへのメモリ空間割り当て 常時接続するために ハードウェアによるネットワークレイヤの実装 7 TLB Operation Write Data $10000 $AC $DE $30000 $5B $7F CPU TLB Register 論理・物理アドレス対応表 CPU / Device Logical Address $10000 IPバスブリッジ $40000 $5B $DE $7F $20000 $AC TLB $50000 $40000 $30000 $20000 $10000 $00000 $AC $DE Local Address $30000 $50000 $40000 $30000 $20000 $10000 $00000 Location Local RemoteA Physical Address $20000 $40000 $5B $7F Remote-A 8 TLB Table Memory Map TLB Register $FFFF0000 未定義 Address Data TLB Register $FFFF003C 00081000 4 Host ID (0:Local)等 $FFFF0038 $80000000 4 Physical Address $FFFF0034 $0003FFFF 4 Logical Address End $FFFF0030 $00030000 4 Logical Address Start $FFFF002C 00080100 3 Host ID (0:Local)等 $FFFF0028 $00000000 3 Physical Address $FFFF0024 $0002FFFF 3 Logical Address End $FFFF0020 $00020000 3 Logical Address Start $FFFF001C 00001000 2 Host ID (0:Local)等 $FFFF0018 $80000000 2 Physical Address $FFFF0014 $0001FFFF 2 Logical Address End $FFFF0010 $00010000 2 Logical Address Start $FFFF000C hhhhLCRO 1 ホストID (0:ローカル)等 $FFFF0008 $00000000 1 Physical Address $FFFF0004 $0000FFFF 1 Logical Address End $FFFF0000 $00000000 1 Logical Address Start 未定義 $00040000 $00030000 Remote I/O Remote Memory $00020000 Local I/O $00010000 Local Memory $00000000 Logical Address 番号 hhhh:Host ID(0:Local) L:Location(0:Memory 1:Peripheral 2:CPU 3:LAN) C:Cache R:Replication O:Read Only 内容 9 LANコントローラによる低遅延機構 送信処理概要 Remote Bus Acess (FIFO書込) !" RJ-45 #$%& ( )*+,-.*/012-)*34*56-7869-:+:9* #'& (;< = )*+,-.*/012-)*34*56-7869046-:+:9* ((< Send FIFO MLT-3 $102(END) $103(CRC32) Data(nbyte) Length(2byte ) Addr(4byte) Cmd(2byte) > ?186*-.*/012-)*34*56-7869-:+:9* (@< A ?186*-.*/012-)*34*56-7869046-:+:9* (B< NRZI CD E+:9*-F8G*-G-85-HGI+J8,-K)*5*1I*,L 4B/5B PHY (4Bit) UDP Header IP Header =@< M E0/NJ*680G-7869-O+6+ )*3P@;< Q E0/NJ*680G-7869046-O+6+ )*3PE;< C@ )*NJ8:+680G-.*/012-R1*+ =;< CB HG6*114N6-)*34*56 >;< <Send FIFO(ASYNC9Bit)> Protocol Type 4Bit H SRC MAC Dest MAC $101(START) 4Bit L 8Bit Data 9B/8B $00-$FF:Data $101:プレアンプル部生成指示 $102:Frame終了指示 $103:CRC32の計算書き込み指示 10 CPUレジスタ メモリ空間 Address Data +$0088~ 内容 Pipeline Register +$0084 LOW レジスタLOW +$0080 HI レジスタHIGH +$007C R31 レジスタ31 +$0078 R30 レジスタ30 -- -- -- +$0020 R8 レジスタ08 +$001C R7 レジスタ07 +$0018 R6 レジスタ06 +$0014 R5 レジスタ05 +$0010 R4 レジスタ04 +$000C R3 レジスタ03 +$0008 R2 レジスタ02 +$0004 R1 レジスタ01 +$0000 PC Program Counter 先頭アドレス標準値:$FFFFF000 MIPS R3000相当のCPU上でス レーブデバイスとしてレジスタ空間 をアクセスできるように拡張 書き込みを行うとCPUはHALTから解除 11 Intel Multi Processorの起動手順 Processor1 Processor2 Processor3 Processor4 電源オン BIOS実行 MP対応 OS実行 Boot Strap Processor / Application Processorの決定 BSPに決定 APに決定 APに決定 APに決定 Boot loader HALT HALT HALT SMP対応OS A にて割り込み発 行 OS A実行 Interrrupt OS A実行 Interrupt OS A実行 OS A実行 Processor間は密結合(同一筐体または同一ダイに存在) 12 CPUレジスタ空間を用いたリモート Processorの起動手順 MP要求 Processor 1状況 Memor y ○○○ ○ CPU Register ☆☆☆ Processor1 Processor2 Processor3 Processor4 OS A実行 OS B実行 OS C実行 HALT中や ROMなしCPU 各CPU/TLBレジス タ空間の読み込み CPU/TLB Register CPU/TLB Register Processor1のメモ リをさすように各 TLBを設定 Processor1の CPUレジスタ空間 をコピーする OS A実行 TLB書込 TLB書込 CPU Register OS A実行 Processor4 状況 CPU Register OS A実行 Processor間はIPネットワークによる接続を想定 OS A実行 Memor Memor y y ○○○ ×××× ○ CPU Register 13 △□○ ☆☆☆ 実装環境 概要 実装基板 FPGA 32ビットRISCコンピュータ Xilinx Spartan 3AN Starter Kit Xilinx Spartan 3AN(70万ゲート) CPU FPGA上に実装 オリジナル32bit RISC (12.5MHz) MIPS I命令サブセット 下記I/O回路をFPGA内に作成 PS/2 Interface VGA Controller(640×480,80×25) DMA Controller I/O BIOS/Monitor RAM/VRAM CGRO ブリッジ 16K Byte (MIPS Assembler) 24K Byte / 4KByte 4K 本バスブリッジ FPGA上に実装 データバス幅 32 bit LAN 100Base-T バスブリッジ専用 14 IP-BUSワークステーション設計 IP-BUS Bridge CPU Decoder 32Bit MIPS R3000相当 ALU I-TLB 8Entry CPU Instruction BUS 32 Bit Command Local Memory Access CPU Data BUS 32 Bit Service Reply FIFO Command Reply FIFO Service Service Recie FIFO D-TLB 8Entry Memory Controller Memory BUS 32 Bit Keyboard Controller Remote Memory Access Command Send FIFO Memory BUS 32 Bit Memory SRAM(24K) Clock domain crossing CLK Full Write Device BUS 32 Bit DMA Controller ASYNC FIFO Data CLK Empty Read Data LAN Controller Device Controller E_TX_CLK Empty Read Data E_RX_CLK ASYNC FIFO Full LAN BUS Ethernet PHY Layer 100 Mbps Write Data φ = 25MHz TLB Device BUS 32 Bit VGA Controller FONT ROM (4K) 15 ワークステーション デバイスI/O、ビデオ メモリーマップ TRAM, I/O 未定義 $FFFFF000 $FFFF0000 $FEE00000 $F8000000 $F0001000 $F0000000 内容 RS232C(DATA) $F8000030 RS232C(W:Mode/W:Status) 未定義 $F800002C $70 Color:b6-4:Fore b2-0:Back $F8000028 0,1 0:width40 1:width80 未定義 $F8000024 0~24 CRTC: Cursor Y I/O $F8000020 0~79 CRTC: Cursor X 未定義 $F8000010 LED / SWITCH $F8000000 KEYBOARD $F8000000 I/O開始 $F0000F9F テキストVRAM終了 Local APIC Text RAM $00004000 RAM/ROM $F0000F00 $00200020 25ライン目 $F0000E60 $00200020 24ライン目 $F0000280 $00200020 4ライン目 $F0000140 $00200020 3ライン目 $F00000A0 $00200020 2ライン目 $F0000000 $00200020 1ライン目 (AATTAATT形式) $F0000000 物理アドレ ス データ $F8000034 未定義 $00000000 アドレス CPU Register TLB Register テキストRAM開始(80 25) 16 評価 機能評価 実装機能が動作し、ネットワーク経由でCPU、メモ リ、I/O機器の動的増設および共有ができること 高遅延環境におけるキャッシュの有効性の評 価 !" 5&,7895&,78:;<=456>?@ B$%&C$95&,78:;<=456>?@ 5&,789B$%&C$:;<=456>?@ B$%&C$9B$%&C$:;<=456>?@ #$%&'( A A A A )$*+,$ A A A A -./0123 4560123 A A A A A A A A 17 パフォーマンス Data BUS=32bit (4byte) 18 LAN環境で接続したCPUとメモリ 1万回の数値演算実行時間 Program Size Cache Line キャッシュヒット数 キャッシュミス数 キャッシュヒット率 : 192バイト : 64バイト : 10,002回 : 3回 :99.979% 理論実行時間= ローカルでの実行時間(ms) + キャッシュのミス数 × (リモートでの4byte読み込み時間 + 60バイトメディア転送時間) ■Ethernet, TP(キャッシュ有)の場合 = 0.97 + 3 × ( 0.00789889 + 0.0048) = 1.01 ■Ethernet, HUB(キャッシュ有)の場合 = 0.97 + 3 × ( 0.02639915 + 0.0048) = 1.06 19 リモート環境で接続したCPUとメモリ 100万回の数値演算実行時間 Program Size Cache Line キャッシュヒット数 キャッシュミス数 キャッシュヒット率 : 192バイト : 64バイト :1,000,002回 : 3回 :99.9997% 理論実行時間= ローカルでの実行時間(ms) + キャッシュのミス数 × (リモートでの4byte読み込み時間 + 60バイトメディア転送時間) ■遅延16ms(キャッシュ有)の場合 = 970 + 3 × ( 16.0025604 + 0.0048) = 1018 ■遅延200ms(キャッシュ有)の場合 = 970 + 3 × ( 200.400802 + 0.0048) = 1571 20 まとめ まとめ 200ミリ秒の高遅延環境でも高いキャッシュヒット率であれば、演 算ができることを確認した ハードウェアにおける拡張の制限を取り除くため、バスのプロトコ ルとインターネットプロトコルとを相互に変換するIPバスワークス テーションを設計し、実装、評価し、CPUとメモリとI/O拡張ができ ることを確認した Future work OS(Linux)の稼働と必要な機構の実装 Interrupt信号、IDE Device Support エラー時のリカバリー(リトライまたは他のノードへ送信してFT等) 高遅延環境における排他制御手法の確立 リソース管理 21 セキュリティ対策 高速化(TLB内プリフェッチ予測) 参考 スクリーンショット 22