マルチスレッドアーキテクチャにおける スレッドライブラリの実装と評価

Similar documents
04-process_thread_2.ppt

POSIXプログラミング Pthreads編

05-scheduling.ppt

スライド 1

計算機アーキテクチャ

スレッドとプロセス

Microsoft PowerPoint - 11Web.pptx

情報処理学会研究報告 IPSJ SIG Technical Report メニーコア混在型並列計算機におけるスレッド管理方式 1 長嶺精彦吉永一美 3 1 坂本龍一辻田祐一 3 並木美太郎 1 佐藤未来子 4 堀敦史 2 下沢拓 石川裕 本稿では, エクサコンピュータの実現に向けて今後主流となるメニ

Microsoft PowerPoint - OS03.pptx

PowerPoint プレゼンテーション

本文ALL.indd

Microsoft PowerPoint - OS02.pptx

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

スライド 1

cmpsys15w07_os.ppt

<4C696E A B835E A CC8A D20838A B835E B838982CC8EC08CB

CPUスケジューリング

Microsoft PowerPoint - No3.ppt

10-vm1.ppt

スライド 1

Microsoft PowerPoint - OS02.ppt

160311_icm2015-muramatsu-v2.pptx

オペレーティングシステム

PowerPoint Presentation

OS

PowerPoint プレゼンテーション

Rubyの スレッド実装 の改善

Microsoft PowerPoint - OS07.pptx

Linuxのベンチマーク評価 とボトルネック解析

Microsoft PowerPoint - sales2.ppt

スライド 1

TFTP serverの実装

Microsoft PowerPoint - OS02.pptx

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

スライド 1

B

Insert your Title here

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

White Paper 高速部分画像検索キット(FPGA アクセラレーション)

組込み Linux の起動高速化 株式会社富士通コンピュータテクノロジーズ 亀山英司 1218ka01 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

Operating System 仮想記憶

今週の進捗

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

01-introduction.ppt

ex04_2012.ppt

計算機のリソースとは 1.CPU 2. 主記憶 3. 補助記憶装置 の抽象化

PowerPoint プレゼンテーション

TopSE並行システム はじめに

Microsoft PowerPoint ppt

Microsoft PowerPoint - OS04.pptx

ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015

POSIXスレッド

Microsoft PowerPoint - kougi7.ppt

修士論文

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

IBM Internet Security Systems NTFS ファイルシステム必須 一覧の 以後にリリースされた Service Pack (Release 2 等は除く ) は特に記載の無い限りサポートいたします メモリ 最小要件 512MB 推奨要件 1GB 最小要件 9GB 推奨要件

PowerPoint プレゼンテーション

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint - ARC2009HashiguchiSlides.pptx

コンピュータ工学Ⅰ

コンピュータ工学Ⅰ

PowerPoint プレゼンテーション

スライド 1

Microsoft PowerPoint ppt [互換モード]

proventia_site_protector_sp8_sysreq

PowerPoint プレゼンテーション

Microsoft PowerPoint - ICD2011TakadaSlides.pptx

Microsoft PowerPoint - pc11.ppt

自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date Type URL Presentation

科学技術振興調整費 中間成果報告書 若手任期付研究員支援 組込みアーキテクチャ協調型実時間 OS 研究期間 : 平成 13 年度 ~ 平成 15 年 6 月 北陸先端科学技術大学院大学田中清史

Monthly Research / セキュアハードウェアの登場とその分析

Microsoft PowerPoint - OS09.pptx

Microsoft PowerPoint - OS1.ppt [互換モード]

CPU Levels in the memory hierarchy Level 1 Level 2... Increasing distance from the CPU in access time Level n Size of the memory at each level 1: 2.2

< B8CDD8AB B83685D>

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

メモリ管理

Application Note Application Note No. ESC-APN Document No.: ESC-APN adviceluna Linux デバッグ手順 (MIPS コア編 ) はじめに adviceluna Linux デバッグ手順 ( 以

マルチコア時代の並列プログラミング

MMUなしプロセッサ用Linuxの共有ライブラリ機構

スライド 1

Microsoft PowerPoint - ARCEMB08HayashiSlides.ppt [互換モード]

二次元連続動的計画法による知的画像処理システム ImageFileSelector RTC 機能仕様書 ImageFileSelectorRTC Ver.1.0 ( 株 ) 東日本計算センター 1 / 11

出 アーキテクチャ 誰が 出 装置を制御するのか 1

スレッド

スライド 1

ジョブ管理ソフトウェア LoadStar Scheduler ご紹介資料 ~ システム運用品質の向上とコスト削減を実現 ~

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

OS

コンテンツセントリックネットワーク技術を用いた ストリームデータ配信システムの設計と実装

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

reply_letter

Microsoft PowerPoint - sp ppt [互換モード]

Transcription:

修士学位論文発表 マルチスレッドアーキテクチャにおける システムソフトウェアの研究 A study on Systems Software for Multithreaded Architecture 2004 2/12 東京農工大学大学院工学研究科情報コミュニケーション工学専攻並木研究室 03646109 笹田耕一 1

背景 マルチスレッドアーキテクチャプロセッサ 1 チップ上で複数の命令流 ( 実スレッド ) を並列実行 ILP の追求から TLP の活用へ いくつかの製品 Intel 社が製品化 (Xeon / Pentium4 プロセッサ ) IBM Power4/Power5 2

問題点 従来の SMP プロセッサ用システムでは不十分 例 :Xeon Processor + Linux or Windows 実スレッド制御は OS のみ ( システムコールが必要 ) ワーキングセットの増大 ( 複数プロセス同時実行 ) 計算資源の共有と競合についての考慮無し 演算器 / キャッシュメモリなど 従来の OS からの事象通知機構 (Scheduler Activations[Anderson 92] など ) は非効率 3

目標とするシステム OChiMuS Project 現状 OS とライブラリ アプリケーションソフトウェア インタープリタ MULiTh( 笹田 ) スレッドライブラリ 言語処理系並コンパイラ Future( 並木研 : 佐藤 ) オペレーティングシステム マルチスレッドアーキテクチャ中條研プロセッサ OChiMuS PE 中條研究室木研究室4

CPU OS ライブラリの全体像 ユーザレベル ( 仮想アドレス空間 ) Pthread 関数 アプリケーション スレッドスレッドスレッドスレッドスレッドスレッドスレッドスレッド スレッド制御 スケジューリング 本研究 スレッドライブラリ MULiTh Kernel Notification AT AT AT AT OChiMuS PE Processor 実スレッド制御命令 OS Future プロセス 5

OChiMuS PE(processor) SMT プロセッサ 複数の実スレッドを並列実行可能 MIPS 命令セット LTNによる実スレッドの抽象化 全ての実スレッドは同一アドレス空間 OChiMuS: PE: On Chip Multi SMT Processor Processor Element 河原章二, 佐藤未来子, 並木美太郎, 中條拓伯 : システムソフトウェアとの協調を目指すオンチップマルチスレッドアーキテクチャの構想, コンピュータシステムシンポジウム, Vol.~2002, No.~18, pp. 1-8 (2002). 6

OChiMuS PEの実スレッド 各実スレッドのハードウェアリソース プログラムカウンタ 汎用レジスタなど LTN(Logical Thread Number) レジスタ 実スレッド制御命令 スレッド制御命令はユーザ命令 実スレッド割り当て命令でLTNを設定 以降 LTNで制御対象の実スレッドを指定 実スレッドの状態 停止状態 一時停止状態 通常状態 7

システムソフトウェア OS Future プロセス管理 System Software Level Hardware Level 複数ある実スレッドコンテキストの退避 復帰 実スレッド管理はスレッドライブラリが担当 Process (A) 4Architecture Thread Contexts TC TC TC TC Save Process Management OChiMuS PE processor PC PC PC PC Process (B) 4Architecture- Thread Contexts TC TC TC TC Restore 4 Architecture- Threads 8

システムソフトウェア スレッドライブラリ MULiTh SMT プロセッサ実スレッドにスレッド割り当て 複数の実スレッド上でスレッドを並列実行 ユーザレベルで実スレッド制御命令を利用した軽量なスレッド制御 排他制御 同期 OS との連携 (Kernel Notification) OS Future からの事象通知 標準的な POSIX Thread 仕様 MULiTh: Userlevel Thread Library for Multithreaded architecture 9

MULiThにおけるスレッドの管理 スレッド管理ブロック (ThMB) 各スレッドごとの情報を保持 コンテキスト 属性 スレッド識別子 ThMBの先頭アドレス LTN として使用 実行中スレッドはプロセッサが把握 MULiTh (User Level) ThMB ThMB ThMB ThMB ThMB ThMB ThMB ThMB 実スレッドとスレッドを関連付け LTN AT LTN AT LTN AT LTN AT OChiMuS PE Processor 10

スレッドの制御 ( 生成 同期 ) スレッド生成は実スレッド生成命令を利用 並列実行する実スレッドを作成 スレッドの仮想化コストを削減し高速化 空き状態の実スレッドがなければ待ちスレッドに 排他制御 同期は実スレッドを一時停止 OChiMuS PE のPBLK/PUBLK 命令を利用 スピンロック スレッド切り替えが不要 メモリアクセスを削減し性能向上 11

スレッド生成 Thread Creation using processor instructions Allocate AT Set initial value Unblock AT1 PALLC FWD PUBLK Thread A Success! AT2 Thread B Start Time (1) (2) (3) (1) 空き実スレッドがあるか? (2) スレッド開始時の初期値設定 レジスタ転送命令を利用 12 (3) スレッド開始

細粒度スレッド生成サポート 空き実スレッド無し Creator に通知 並列度向上ができないときの処理速度向上 ThMB 確保処理は同期が必要 ( 重い処理 ) ThMB 領域をキャッシュして後で利用 Cache ThMB Allocate ThMB Recycle ThMB Recycle ThMB AT1 T1 T2 AT2 PALLC T3 Fail Thread Creation PALLC Fail T4 Fail Thread Creation PALLC Fail T5 Finish T2 Success Thread Creation Start T5 Success Time 13

Kernel Notification(KN) OS からライブラリへの事象通知の必要性 I/O ブロック ブロッキングの解除 シグナルなど 複数回のコンテキストコピーなどがオーバーヘッド Kernel Notification 機構による事象通知 1カーネル遷移時 コンテキストをThMB に退避 ThMB のアドレスは実スレッド LTN にあるため 2 ユーザレベルへの復帰時 ハンドラを起動 14

Kernel Notification による事象通知 2 1 OS からの効率的な事象通知を実現 コンテキストのコピー回数が少ない この機構でスレッドのプリエンプションを実現可 15

スレッドライブラリの実装と評価 実装 ライブラリはC 言語 10ファイル / 2500 行 MIPS アセンブラでの記述が約 40 個所 プロセッサ実スレッド制御命令 コンテキスト復帰 退避 評価はシミュレータ上で実施 MUTHASI(MultiTHread Architecture Simulater) OS は評価に利用する部分のみ実装 16

評価 : スレッド制御の性能 単位 : サイクル数 本研究 従来 速度比 135* 1.6 倍 スレッド生成 84 10K** 120 倍 1.4K*** 16.7 倍 排他制御 41461 46656 1.3 倍 OSからの通知 373 522 1.4 倍 (*) 空き実スレッドがなかった場合 (**) Linux Thread (***)NTPL(Linux2.6 スレッドライブラリ ) 17

評価 : スレッド生成の性能 ( 細粒度スレッド生成の評価 ) 単位 : 命令数 空き実スレッドがない場合のスレッド生成コスト比較 待ちスレッドに登録 102 待ちスレッドに登録せず 62 Creator に失敗を通知 +ThMB をキャッシュ 26 : 空き実スレッドがない場合のスレッド生成コストの大幅な削減 : スレッドスケジューリングの責任をCreatorに 大量細粒度スレッド生成プログラムでは問題無し 18

評価 : アプリケーションの性能 並列化した画像縮小プログラム 最長スレッド実行時間 ( サイクル数 ) 1.5 演算器数 2, 1 演算器数 4, 2 2.4 実スレッド数 19

本研究の成果 マルチスレッドアーキテクチャにおけるシステムソフトウェアを考察 スレッドライブラリ MULiTh の開発 並列実行による性能向上を確認 軽量なスレッド制御による性能向上 細粒度スレッド生成サポート 効率的なOSからの事象通知 Pthread 仕様スレッドライブラリ 20

今後の課題 OS との連携を行うソフトウェアでの評価 システムコールや割り込みなど 適切なスケジューラの検討 マルチスレッドアーキテクチャの特性を利用したスレッドスケジューラが必要 マルチスレッドアーキテクチャに適した言語処理系の検討 並列化 / 最適化コンパイラ インタプリタ 21

対外発表 マルチスレッドアーキテクチャにおけるスレッドライブラリの実現と評価 情報処理学会論文誌 ACS(2003. Aug) SACSIS(2003. May) 優秀学生論文賞受賞 (Symposium on Advanced Computing Systems and Infrastructures 旧称 JSPP) PDPTA(2003. Jun) The 2003 International Conference on Parallel and Distributed Processing Techniques and Applications Ruby による JavaVM の実装 情報処理学会第 65 回全国大会 (2003 Mar) Rava で見る Java 仮想マシンのしくみ JAVA PRESS Vol.31 22

以上 23

問題点 : ユーザレベルライブラリ カーネルの事象をユーザライブラリへ伝達 I/O ブロック ブロッキングの解除 シグナルなど Scheduler Activations( 92): カーネルが事象通知のためにユーザスレッドスケジューラを起動 猪原ら ( 95): スレッド切り替え動作を最適化 複数回のコンテキストコピーなどのオーバーヘッド 排他制御 同期機構 SMT などではスピンロックが高負荷 ライブラリインターフェース 使いやすさ 過去の資産 24

評価 : 細粒度スレッド生成の性能 スレッド生成コスト比較 ( サイクル数 ) 通常 102 失敗を知らせ 62 ThMB をキャッシュ 26 25

評価 : 細粒度スレッド生成の性能 N 番目のフィボナッチ数を求めるプログラムの速度向上率 実行方法 速度向上率 逐次実行 1.00 通常の MULiTh 0.25 細粒度スレッド生成を利用 1.24 26

フィボナッチ数を求めるプログラム void *fib_th(void *p){ return (void *)fib((int)p);} int fib(int n){ if(n <= 2) return 1; else{ pthread_t t1; int a1 = 0, a2 = 0, err; err = th_create_fg(&t1, 0, fib_th, (void*)n-1); if(err == E_AGAIN) a1 = fib(n-1); a2 = fib(n-2); if(a1 == 0) pthread_join(t1,(void*)&a1); return a1+a2;}} 27

従来型事象通知 3 1 2 3 回のコンテキストコピー + Kernel Thread 生成 猪原茂和, 益田隆司 : 情報処理学会論文誌, Vol.~36, No.~10, pp. 2498-2510 (1995). ユーザとカーネルの非同期的な協調機構によるスレッド切り替え動作の最適化 28

考察 スレッド制御が軽量 ユーザレベルでのスレッド操作 プロセッサ制御命令を利用 実スレッドブロック状態を利用 効率的な OS からの事象通知 余計なコンテキストのコピーが無い 並列実行により性能向上 実スレッドにスレッドを割り当て並列実行 CPUリソースの利用率が向上 既存の Pthread アプリケーションが実行可能 29

実装した主なPthread 関数 pthread_create スレッド生成 pthread_exit スレッド終了 pthread_join スレッド合流 ( 同期 ) pthread_mutex_lock / unlock 排他制御 pthread_cond_wait / signal 同期機構 30

評価環境詳細 Simple ALU : 2 個 一回の演算は 1 サイクル Complex ALU : 1 個 掛け算 12サイクル 割り算 32サイクル キャッシュ TLB はなし 31

スレッドの作成 プロセッサの実スレッド制御命令を利用 並列実行するスレッドを生成 メモリアクセスなしでスレッド制御可 命令が失敗したとき 従来のスレッド制御 軽量なスレッド生成 32

スレッドの作成 プロセッサのスレッド制御命令 (PALLC) を発行 成功 : PCS_HALT 状態の実スレッドが存在初期値を設定し 即座に並列実行 制御命令 : 空き状態の実スレッドなし従来どおり スレッドを待ち状態へ遷移 スレッド生成初期値設定実行開始 AT1 PALLC FWD PUBLK Thread A AT2 成功 Thread B Start 33 Time

スレッドの作成 pallc dr,sr0,sr1 // 実スレッド生成命令 dr : 返り値を格納するレジスタ - 成功 - 失敗 停止状態の実スレッドが無い sr0: スレッド開始位置 sr1: 設定したい LTN 34

従来提案方式 スレッドの排他制御 同期 スピンロック AT1 AT2 AT1 AT2 T1 T1 Lock T2(Lock owner) スレッド切り替え Lock T2(Lock owner) Spin Lock Thread Scheduling AT2 の実行を阻害 Unlock and set Lock variable T3 AT1 AT2 必要なのは 2 命令のみ PBLK T1 Lock T1 PCS_BLOCK PCS_NORMAL T2(Lock owner) PUBLK T1 Unlock and PUBLK Time 35

スレッドの排他制御 同期 問題点 実スレッドの一時停止 並列度低下 解決案 ディスパッチ可能なスレッドがある場合スレッド切り替え アダプティブロックの検討 あるスレッドが実行中かどうかはプロセッササポートにより知ることができる ( あるLTNを持つ実スレッドが存在するか を聞く ) 36

スレッドの排他制御 同期 pblk dr,sr // 実スレッド一時停止命令 publk dr,sr // 一時停止解除命令 dr : 返り値を格納するレジスタ - 成功 - 失敗 そんな LTN の実スレッドは無い or 例外状態なので実行不可 sr : 操作対象 LTN 37

OChiMuS PE 実スレッド状態遷移 PCS_HALT 停止状態 PALLC 開始番地 LTN を指定 PDALL PCS_NORMAL 実行状態 PUBLK PBLK PCS_BLOCK 一時停止状態 PALLCで実スレッドに LTN を設定 PALLC 以外の命令は LTN によってターゲットを指定 実スレッド間でのレジスタ転送命令 FWD がある 38

OChiMuS PEスレッドの状態 停止状態 LTN 割り当て無し 割り当てを待っている状態 一時停止状態 LTN 割り当てあり 解除すれば通常状態へ戻り実行を再開 プロセッサリソースを消費しない 通常状態 LTN 割り当てあり プログラムを実行 39

評価 : スレッドの削除 同期 本研究従来速度比 スレッド削除 51 223 4.3 倍 同期 202 847 4.2 倍 従来の 1 実スレッド CPU では 必ずスレッド切り替えが必要となる本研究では 必ずしもそれが必要ではない 40

本研究の目標 ユーザレベルでスレッド 実スレッドを管理 実スレッドに割り当て スレッドを並列実行 ユーザレベルで実行するので動作が高速 スレッド制御にシステムコール不要 プロセッサ実スレッド制御命令を利用 OS からライブラリへの効率的な情報伝達 Scheduler Activations より効率的に スピンロックをしない排他制御 同期 一般的なスレッドライブラリインターフェース 41

KN: 競合回避 実スレッドが LTN 0 である場合 カーネルは従来どおりコンテキストを復帰 退避する 42

OS Future Future でのプロセス アドレス空間管理 入出力管理など 実スレッド管理はMULiThで行う Future でのプロセス切り替え 複数の実スレッドの状態を退避 復帰を保証 Kernel Notification 復帰は並列に実行 43

実スレッドの管理 (1) 従来 :OS がカーネルスレッドとして管理 利点 :SMP 用カーネルが利用可能 短所 : ワーキングセット増大スレッド制御にシステムコールが必要 Process A Kernel Thread Process B Kernel Thread PC PC 44

実スレッドの管理 (2) 実スレッドをユーザレベルで管理 ユーザレベルで軽量なスレッド制御が可能 専用システムソフトウェアが必要 Process A Adress Space(User Level) Thread Thread Thread Thread Manager PC PC Processor 45

SMTアーキテクチャ SMT Processor PC Registers PC Registers SimpleALU SimpleALU Branch Complex ALU Load Store 46

従来のプロセッサ OS ライブラリ User Application with Thread Library Operating System ユーザライブラリはプロセッサを直接操作しない Processor(s) 47

従来のプロセッサ OS ライブラリ Process B Process A T T T T T T T T UL KL KT KT KT KT T: ユーザスレッド KT: カーネルスレッド AT: 実スレッド Processor AT AT 48

49