75
オペレーティングシステム 加藤 真平 東京大学 大学院情報理工学系研究科 [email protected] 2018/7/2 1 12オペレーティングシステム .PFLab(加藤研)のウェブサイトからダウンロードできます。 ⇒http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/ .紙資料も配布します。

オペレーティングシステム - PFLab...#PBS –l nodes=4 #PBS –l walltime=00:10:00 … mpirun –np 32 ./a.out …. 待ち行列 待ち行列の中の4nodesは、4ノードを要求し

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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

    加藤 真平

    東京大学 大学院情報理工学系研究科

    [email protected]

    2018/7/2 1第12回 オペレーティングシステム

    1.PFLab(加藤研)のウェブサイトからダウンロードできます。⇒http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/

    2.紙資料も配布します。

  • 2018/7/2 2

    講義概要

    • 受講生に求める基礎知識– C言語の理解

    – コンピュータアーキテクチャの基礎の理解• メモリ管理、割り込み、CPUモード

    • 参考図書– Silberschatz, Galvin, and Gagne, Operating System Concepts 8th

    Edition, Wiley

    • 成績– 試験の点数で決定

    – 試験は持ち込み不可

    – 授業に出席していた人で試験の結果が悪い人は追試験あり• 出席をとるが出席点はなし

    第12回 オペレーティングシステム

  • 講義スケジュール(予定)

    2018/7/2 第12回 オペレーティングシステム 3

    1. OSの概要(4/9)

    2. プロセス管理(4/16)

    3. プロセス間交信&スレッド(4/23)

    4. プロセス同期(5/7)

    5. プロセス同期(5/14)

    6. CPUスケジューリング(5/21)

    7. CPUスケジューリング(5/28)

    8. メモリ管理(6/4)

    9. メモリ管理(6/11)

    10. I/Oシステム&ファイルシステム(6/18)

    11. ファイルシステム(6/25)

    12. プロテクション&セキュリティ (7/2)

    13. バッチシステム&分散システム&まとめ(7/9)

    14. 試験(7/23)

    論文も読んでみましょう。

    ACM SOSP

    USENIX OSDI

    USENIX ATC

    USENIX NSDI

    ACM ASPLOS

  • 2018/7/2 4

    プロテクション

    • プロテクション問題とは?

    • プロテクションドメイン

    • Access Matrix

    • Capability-Based Systems

    第12回 オペレーティングシステム

  • 2018/7/2 5

    プロテクション問題とは

    • OSはデバイス、プログラム、データ、プロセスなど様々なものから構成

    – ここでは,これらをオブジェクトと呼ぶ

    • 各オブジェクトはユニークな名前を持ち、決められた操作を介して参照されるべき

    • プロテクション問題

    – プロセスに与えられた権限の範囲内で、オブジェクトが決められた操作に従って参照されるようにすること

    第12回 オペレーティングシステム

  • 2018/7/2 6

    Domain 構造

    • アクセス権=

    – アクセス権はあるオブジェクトに対するすべての有効な操作の部分集合

    • Domain

    – プロセスのアクセス権の集合

    第12回 オペレーティングシステム

  • 2018/7/2 7

    UNIXにおけるDomain の実装

    • CPU資源に関する2つのドメイン:– User

    – Supervisor

    • ユーザに関するドメイン:– Domain = user-id

    – Loginしたときのuser-id

    – ファイルシステム経由でドメインの変更が可能

    • 各ファイルにはドメイン (setuid bit)が存在

    • ファイルが実行されるとき、そのファイルのsetuid bitがonになっていると、そのファイルのownerドメインでプロセスが実行

    – owner, group, othersに対して

    • read, write, execute, lookup

    第12回 オペレーティングシステム

  • 2018/7/2 8

    Unix系• アクセスモード

    – read, write, executeを3bitsで表現

    • 3カテゴリ

    RWX

    a) owner access 7 1 1 1RWX

    b) group access 6 1 1 0

    RWX

    c) public access 1 0 0 1

    • 上記9bits以外にもう3bits– sticky bits, set uid, set gid

    – 詳しくは、man chmod

    • グループを作成

    – /etc/group

    • ファイルのグループ名を変更

    – chgrp Group-name game

    owner group public

    chmod 761 game

    第12回 オペレーティングシステム

  • 2018/7/2 9

    MulticsにおけるDomain の実装

    • Di と Djを任意のドメインとする

    • If j < i Di Dj

    – Djのほうがより多くの権利を保持

    • Multicsはセグメントによるメモリ管理

    • 各セグメントはリング番号を保持

    • セグメントにはread, write, execution bitsが存在

    • セグメントが実行されるとき、そのセグメントが持つリング番号上で実行

    • 実行プロセスは、そのリング番号よりも小さいリング番号を持つセグメントをアクセス不可能

    • domainの変更はgates経由

    第12回 オペレーティングシステム

  • 2018/7/2 10

    Access Matrix

    • プロテクションを行列として表現(access matrix)

    • 行は domainsを表現

    • 列は objectsを表現

    • Access(i, j)はDomaini で実行されているプロセスが Objectjを参照することができる操作の集合

    第12回 オペレーティングシステム

  • 2018/7/2 11

    Access Matrix

    • Domain Di が、オブジェクトOjに対してある操作 “op”を実行しようとするとき、 “op”はaccess matrix上に存在する必要あり

    • 動的にプロテクションを変更する方法

    – Access rightsを追加削除する操作を導入

    – 以下のような特別なaccess rightsを導入:

    • owner of Oi• copy op from Oi to Oj• control – Di can modify Dj access rights

    • transfer – switch from domain Di to Dj

    第12回 オペレーティングシステム

  • 2018/7/2 12

    Access Matrix with Domains as Objects

    第12回 オペレーティングシステム

  • 2018/7/2 13

    Access Matrix with Copy Rights

    • 右の図で、*がついているのがcopy

    right

    • D2ドメインは、F2のread operationを他のドメインに対してもコピーが可能

    • (b)において、D2ドメインはD3ドメインに対してread rightをコピー

    • 3種類考えられる

    – Copy rightも含めてコピー

    – Copy rightは含めないでコピー

    – Copy側は削除(transfer)

    第12回 オペレーティングシステム

  • 2018/7/2 14

    Access Matrix With Owner Rights

    • Ownerは何でもできる!

    第12回 オペレーティングシステム

  • 2018/7/2 15

    Access Matrix with Control

    • 以下の例で、D2はD4のaccess rightsを変更が可能

    第12回 オペレーティングシステム

  • 2018/7/2 16

    Access Matrix

    • Access matrix はポリシとメカニズムの分離が可能

    – Mechanism

    • OSは、access-matrix+rulesを提供

    • OSは、 access-matrix+rulesに従ってアクセス制御

    – Policy

    • どのオブジェクトを誰に対してどういうアクセス方法を許すか、といったポリシをユーザが決定

    第12回 オペレーティングシステム

  • 2018/7/2 17

    Access Matrixの実現方法

    • Access Control List =列方向

    – オブジェクト側で定義

    – F3オブジェクトの持つAccess Control List

    Domain 1 = Read

    Domain 2 = Execute

    Domain 3 = Read, Write

    • Capability List=行方向

    – ドメイン側で定義する

    – D1ドメインの場合

    – F1– Read

    – F3 – Read

    第12回 オペレーティングシステム

  • 2018/7/2 18

    Access Rightsの取り消し• Access Control List –アクセスコントロールリストからアクセス権を削除

    – Simple

    – Immediate

    • Capability List – capabilityは分散されているので、access rightsを取り消すためには、対象となるcapablityを探す必要あり

    – Reacquisition

    • Capabilityが有効な時間を設け、capabilityが消失したら再度取得

    – Back-pointers

    • オブジェクト側でcapabilityへのリストを保持

    – Indirection

    • Global表のエントリを指すようにして、修正はエントリに対し実行

    – Keys

    • オブジェクト側でキーを持ち、そのキーをcapabilityに関連付け

    • ドメインがオブジェクトをアクセスする時、capabilityに関連付けられているキーとオブジェクト側のキーのマッチングを取得

    • Access rightsの取り消しは、オブジェクト側のキーを変更することで可能

    第12回 オペレーティングシステム

  • 2018/7/2 19

    Capability-Based Systems

    • Hydra– システムはアクセス権の集合の意味を解釈

    – ユーザプログラムでのみ通用するユーザ定義のアクセス権を解釈し,それらのプロテクションをシステム側で提供

    • Cambridge CAP System

    – Data capability • 標準入出力やオブジェクトに紐づくストレージセグメントの管理

    – Software capability • プロテクトされたプロシージャを通したサブシステムの解釈

    第12回 オペレーティングシステム

  • 2018/7/2 20

    Capability-Based Systems

    • Hydra

    – Fixed set of access rights known to and interpreted by the system.

    – Interpretation of user-defined rights performed solely by user's program; system provides access protection for use of these rights.

    • Cambridge CAP System

    – Data capability - provides standard read, write, execute of individual storage segments associated with object.

    – Software capability -interpretation left to the subsystem, through its protected procedures.

    第12回 オペレーティングシステム

  • Batch System• ユーザはあらかじめ実行手順をファイルに書き、それををシステムに提出

    (submit)

    • Submitされたファイルは待ち行列に登録

    – 飲食店に入店するときに、人数を登録して待つこと、さらに、オーダをするときに、オーダ票に欲しい食べ物を書いて定員に渡すのと同じようなもの

    #PBS –l nodes=4

    #PBS –l walltime=00:10:00

    mpirun –np 32 ./a.out

    ….

    待ち行列

    待ち行列の中の4nodesは、4ノードを要求しているジョブという意味

    4

    nodes

    4

    nodes

    8

    nodes

    ユーザグループA用ジョブキュー

    4

    nodes

    ユーザグループB用ジョブキュー

    4

    nodes

    ユーザグループC用ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    2018/7/2 第12回 オペレーティングシステム 21

  • Batch System• システムは、待ち行列からファイルを取り出して実行

    – (この実行単位=ジョブ)

    • 待ち行列ジョブキュー

    • ジョブキューは複数

    – 東大の場合、ユーザグループごとにジョブキューを設定

    #PBS –l nodes=4

    #PBS –l walltime=00:10:00

    mpirun –np 32 ./a.out

    ….

    待ち行列

    待ち行列の中の4nodesは、4ノードを要求しているジョブという意味

    4

    nodes

    4

    nodes

    8

    nodes

    ユーザグループA用ジョブキュー

    4

    nodes

    ユーザグループB用ジョブキュー

    4

    nodes

    ユーザグループC用ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    2018/7/2 第12回 オペレーティングシステム 22

  • Batch System• システムは、これらジョブキューからジョブを取り出し、空いているノードにジョブを割り当て

    • ジョブキューからの取り出し,割り当てはスケジューリングポリシで決まる

    – 各ジョブの実行時間が異なることにより、待ち行列にジョブが入っていて、かつ、ノードが空いていてもジョブを割り当てられないことがあるが,これは飲食店において、8人のグループが待っていても、8人が同じテーブルに座れないために待たされるのと同じ現象

    #PBS –l nodes=4

    #PBS –l walltime=00:10:00

    mpirun –np 32 ./a.out

    ….

    待ち行列

    待ち行列の中の4nodesは、4ノードを要求しているジョブという意味。

    4

    nodes

    4

    nodes

    8

    nodes

    ユーザグループA用ジョブキュー

    4

    nodes

    ユーザグループB用ジョブキュー

    4

    nodes

    ユーザグループC用ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    2018/7/2 第12回 オペレーティングシステム 23

  • バッチシステムにおけるスケジューリング

    • バッチジョブスケジューリング– コンピュータシステム上で同時にいくつのジョブをどのように(どのノード上で)実行させるかを決定

    • Fair Share Scheduling– Userあるいはgroup単位でCPU時間の占有率を予め設定しておき、それに従ってスケジューリング

    2018/7/2 第12回 オペレーティングシステム 24

  • バッチシステムにおけるスケジューリング

    • Fair Share Scheduling例

    – 緑、黄、ピンク、青の4ユーザを平等にジョブの実行を割り当てたいと仮定

    – 緑、黄、ピンク、緑、青の順番でジョブ投入

    2018/7/2 第12回 オペレーティングシステム 25

    ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    4

    nodes

    4

    nodes

    nod4s

    4

    nodes

    4

    nodes

  • ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    バッチシステムにおけるスケジューリング

    • Fair Share Scheduling例

    – 緑、黄、ピンク、青の4ユーザを平等にジョブの実行を割り当てたいと仮定

    – 緑、黄、ピンク、緑、青の順番でジョブ投入

    2018/7/2 第12回 オペレーティングシステム 26

    4

    nodes

    4

    nodes

    nod4s

    4

    nodes

    4

    nodes

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

  • ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    バッチシステムにおけるスケジューリング

    • Fair Share Scheduling例

    – 緑、黄、ピンク、青の4ユーザを平等にジョブの実行を割り当てたいと仮定

    – 緑、黄、ピンク、緑、青の順番でジョブ投入

    – ここまでで、緑、黄、ピンクの3つのジョブが実行

    2018/7/2 第12回 オペレーティングシステム 27

    nod4s

    4

    nodes

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

  • ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    バッチシステムにおけるスケジューリング

    • Fair Share Scheduling例

    – 緑、黄、ピンク、青の4ユーザを平等にジョブの実行を割り当てたいと仮定

    – 緑、黄、ピンク、緑、青の順番でジョブ投入

    – ここまでで、緑、黄、ピンクの3つのジョブ実行

    – 緑、青の順番でジョブキューでジョブが待っているが、緑のユーザは既にジョブを一回実行しているので、青のジョブが優先

    2018/7/2 第12回 オペレーティングシステム 28

    nod4s

    4

    nodes

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    優先度付きFCFS (First Come First Service)で、ジョブの優先度が、それまでにユーザ(グループ)が投入したジョブの実行時間に応じて変更することにより実現される。

  • バッチシステムにおけるスケジューリング

    • マルチジョブキュー

    ジョブキュー毎に

    – キューの優先度

    – ジョブの利用可能資源量規定

    • 最大CPU使用数、最大実行時間等

    – 多重度既定

    • 当該ジョブキューからいくつのジョブを同時に実行するか?

    – ノード利用形態

    • 排他利用,TSS利用

    – スケジューリングポリシ既定

    • FCFS,優先度付きFCFS

    • backfilling

    2018/7/2 第12回 オペレーティングシステム 29

    4

    nodes

    4

    nodes

    8

    nodes

    8ノードジョブキュー

    4

    nodes

    8ノードジョブキュー

    4

    nodes

    8ノードジョブキュー

    8

    nodes

    32ノード

    24ノードジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

  • バッチシステムにおけるスケジューリング• 問題点

    – 下図において、空きノード数は4ノードしかなく、8ノード必要とするジョブが待機中

    – 4ノード必要とするジョブが投入された時に、このジョブは実行できるかもしれないが・・・

    2018/7/2 第12回 オペレーティングシステム 30

    ジョブキュー

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    8

    nodes

    4

    nodes

    NodeNode

    NodeNode

    NodeNode

    NodeNode

    4

    nodes

    NodeNode

    NodeNode

  • バッチシステムにおけるスケジューリング• バックフィル(Backfillilng)

    – 各ジョブの最大実行時間が決まっていて、いつジョブが実行終了するか分かっていると仮定

    – 右図のように、ジョブがどのようにノードを使われるかを縦方向にノード、横方向時間軸にして表現すると、使われていないノードの時間帯が判別可能(これがバックフィルウィンドウ)

    – バックフィルウィンドウに収まるジョブを割り当ててもfairnessには影響せず、CPU利用率も向上

    2018/7/2 第12回 オペレーティングシステム 31

    t

    ノード

    バックフィルウィンドウ

  • バッチシステムにおけるスケジューリング

    • ジョブのノード割り当て問題

    – バックフィル出来ない場合は、CPU使用率低下

    – バックフィルウィンドウのトータルノード数以下のジョブが必ずしもバックフィルできるとは限らない

    • ネットワークトポロジに依存

    2018/7/2 第12回 オペレーティングシステム 32

  • 並列アーキテクチャの分類(昔流分類)

    • Flynnの分類

    – 命令 (instruction)ストリームとデータストリームの扱い方の違いによって以下の4つに分類

    – SISD (Single Instruction stream,

    Single Data stream )

    • 一般のCPU

    – SIMD(Single Instruction stream,

    Multiple Data stream)

    • IntelのSSEなど

    – MISD(Multiple Instruction stream,

    Single Data stream)

    • これは存在しない

    – MIMD(Multiple Instruction

    stream, Multiple Data stream)

    • メモリの形態

    – 共有メモリ型並列コンピュータ

    • UMA/NUMA

    – 分散メモリ型並列コンピュータ

    • 演算の形態

    – ベクトル

    – スカラ

    • SIMD演算命令

    • HPC向けにはSIMD長が長くなってきている傾向

    2018/7/2 33第12回 オペレーティングシステム

  • 並列分散コンピュータ• クラスタ

    – 本来単体で使われるコンピュータ群をネットワークで接続し、それらをシステムとして使用

    – 並列業界では、特にコモディティ部品を使って作られたシステムをクラスタと呼び、超並列コンピュータと区別

    • 超並列コンピュータ

    – 千台以上の規模の計算機をネットワークで接続して並列コンピュータを実現するために開発されたコンピュータ

    • グリッド

    – インターネット上での仮想組織

    – 組織ごとに管理ポリシーが異なるコンピュータ群上で並列分散処理する

    – クラスタ・超並列コンピュータに比べて通信遅延は大きく、通信バンド幅は低下

    – 開放的かつ動的資源

    • クラウド & ビッグデータ

    2018/7/2 34第12回 オペレーティングシステム

  • グリッドからクラウド(はやり言葉という意味で)

    • At the Search Engine Strategies Conference earlier this month, Schmidt described

    the “old” client/server computing business model, which he characterizes as

    “largely invented by Oracle”:It was a direct sales force that would go in and sell

    complicated software to enterprises that they would integrate and do important

    business functions.

    • Schmidt embraces “an emergent new model”:

    • It starts with the premise that the data services and architecture should be on

    servers. We call it cloud computing – they should be in a ‘cloud’ somewhere. And

    that if you have the right kind of browser or the right kind of access, it doesn’t

    matter whether you have a PC or a Mac or a mobile phone or a BlackBerry or

    what have you – or new devices still to be developed – you can get access to the

    cloud…

    Google CEO Eric Schmidt

    出典:http://blogs.zdnet.com/micro-markets/?p=369 2006年8月23日

    2018/7/2 35第12回 オペレーティングシステム

  • • “Big Data” is a catch phrase that has been bubbling up from the high performance computing niche of the IT market.

    Increasingly suppliers of processing virtualization and storage virtualization software have begun to flog “Big Data” in

    their presentations. What, exactly, does this phrase mean?

    • If one sits through the presentations from ten suppliers of technology, fifteen or so different definitions are likely to come

    forward. Each definition, of course, tends to support the need for that supplier’s products and services. Imagine that.

    • In simplest terms, the phrase refers to the tools, processes and procedures allowing an organization to create, manipulate,

    and manage very large data sets and storage facilities. Does this mean terabytes, petabytes or even larger collections of

    data? The answer offered by these suppliers is “yes.” They would go on to say, “you need our product to manage and make

    best use of that mass of data.” Just thinking about the problems created by the maintenance of huge, dynamic sets of data

    gives me a headache.

    • An example often cited is how much weather data is collected on a daily basis by the U.S. National Oceanic and

    Atmospheric Administration (NOAA) to aide in climate, ecosystem, weather and commercial research. Add that to the

    masses of data collected by the U.S. National Aeronautics and Space Administration (NASA) for its research and the

    numbers get pretty big. The commercial sector has its poster children as well. Energy companies have amassed huge

    amounts of geophysical data. Pharmaceutical companies routinely munch their way through enormous amounts of drug

    testing data. What about the data your organization maintains in all of its datacenters, regional offices and on all of its user-

    facing systems (desktops, laptops and handheld devices)?

    • Large organizations increasingly face the need to maintain large amounts of structured and unstructured data to comply

    with government regulations. Recent court cases have also lead them to keep large masses of documents, Email messages

    and other forms of electronic communication that may be required if they face litigation.

    • Like the term virtualization, big data is likely to be increasingly part of IT world. It would be a good idea for your

    organization to consider the implications of the emergence of this catch phrase.

    出典:http://www.zdnet.com/blog/virtualization/what-is-big-data/1708

    2018/7/2 36第12回 オペレーティングシステム

    グリッドからクラウド(はやり言葉という意味で)

  • Bigdata and Extreme-Scale Computing

    2018/7/2 37

    出展:Alok Chaudary talk at IESP Kobe

    http://www.exascale.org/mediawiki/images/6/64/Talk-12-Choudhary.pdf

    Simulations

    第12回 オペレーティングシステム

  • 分散システムとは?

    • 複数の独立したコンピュータを単一システムとして見せるシステム

    • 資源の共有:プリンタ、ストレージ、コンピュータ…

    • セキュリティ

    • 開放性(Openness)

    – Interface Definition

    – Flexibility

    • 拡張性とスケーラビリティ

    – 阻害要因

    • Centralized Services

    – 全てのユーザに対して一つのサーバ

    • Centralized Data

    – 一つのデータ

    • Centralized Algorithms

    – 完全情報に基づくアルゴリズム

    • 透過性(Transparency)

    – 次ページ

    2018/7/2 38第12回 オペレーティングシステム

  • Transparency• Access

    – 例えば、データ表現(endian)の違いを隠蔽

    • Location

    – 資源どこに存在するかを隠蔽

    • Migration

    – 資源が他の場所に移動(Migration)したかどうかを隠蔽

    • Relocation

    – 資源が使用中に他の場所に移動(Migration)したかどうかを隠蔽

    2018/7/2 39第12回 オペレーティングシステム

  • Transparency• Replication

    – 資源が複数のユーザから共有されている時に複製が作られているかどうかを隠蔽

    • Concurrency

    – 共有資源が複数のユーザから使われていることを隠蔽

    • Failure

    – 故障を隠蔽

    • Persistence

    – 資源(データ)がメモリ上かディスク上にあるかを隠蔽

    2018/7/2 40第12回 オペレーティングシステム

  • 並列分散システム構成法

    • ハードウエアを管理しユーザに対してシングルシステムイメージを提供

    • メッセージパッシング

    • 分散共有メモリ

    2018/7/2 41第12回 オペレーティングシステム

  • 並列分散システム構成法

    • リモートクライアントに対するサービスの提供

    2018/7/2 42第12回 オペレーティングシステム

  • 並列分散システム構成法

    2018/7/2 43第12回 オペレーティングシステム

  • プログラミングモデルと通信• ストリーム通信

    – 連続データ (音声、画像)の授受

    – 例: TCP/IP

    • メッセージ通信

    – メッセージの授受

    – 例

    • MPI (Message Passing Interface)通信ライブラリ

    • PVM (Parallel Virtual Machine)ライブラリ

    • ソフトウェア分散共有メモリ

    – 共有メモリをソフトウェアで実現

    – 例

    • Ivy, Mirage (OSレベルで実現)

    • Munin, Midway (実行時ライブラリで実現)

    • Linda (プログラミング言語で実現)

    – PGAS (Partition Global Address Space)

    • UPC, CAF(Co-array Fortran), Titanium,

    Fortress, Chapel , X10.

    • リモートプロシジャコール

    – 遠隔手続き呼び出し

    – 例: Sun RPC

    • リモートメソッドインボケーション

    – 遠隔オブジェクトメソッド呼び出し

    – 例: JAVA RMI

    2018/7/2 44第12回 オペレーティングシステム

  • Memory

    共有メモリ型のマルチコア

    L3 Cache

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    高々10個程度のCPUコアが、1つの共有メモリに、均一的にアクセスする。

    1つのOSカーネルで済む 開発環境が整っている 並列化の性能が出やすい

    ソフトウェア的視点

  • マルチコアからメニーコアへ

    L2 CacheL1 L1 L1 L1 L1 L1 L1L1

    Memory

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Memory Memory

    Memory Memory

  • マルチコアからメニーコアへ

    バス型(SMP)

    Intel Xeon:15コア×8ソケット(2014~)

    AMD Opteron:16コア×4ソケット(2014~)

    ネットワーク型(NoC)

    Tilera TILE-GX:8×9コアのメッシュ(2013~)

    10×10のメッシュをリリース予定

    Intel Xeon Phi:8 x 9コアのメッシュ(2016~)

    72コアの非対称メッシュ

    CPUコアを複数並べる形のメニーコア(100±Xコア)

  • Many-Core

    Accelerator

    アクセラレータとしてのメニーコア

    Host MemoryL3 Cache

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    I/Oバス

    Host CPU

  • デバイスドライバが重要

    Host MemoryL3 Cache

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    Core

    L1

    L2

    I/Oバス

    Host CPUL2 Cache

    L1 L1 L1 L1 L1 L1 L1L1

    Device Memory

    μC

    μC

    μC

    μC

    μC

    BAR0

    BAR1

    BAR2

    Contro

    l Regis

    ters

    コマンド書き込み

    DMA転送

  • Graphics Processing Unit (GPU)

    L2 CacheL1 L1 L1 L1 L1 L1 L1

    Device Memory

    Host MemoryCPU

  • GPGPU

    2008 2010

    3000コア500コア

    250コア

    Tesla FermiKepler

    Maxwell

    C言語

    C++Java

    General-Purpose computation on Graphics Processing Units

    Pascal

    省電力化

    20123000コア

    20145000コア

  • 車載向けGPGPU

    ワンルーム1300m2

    6000KW

    ワンボックス1m2

    2KW

    ワンチップ1cm2

    6W

    1000倍

    3000倍

    100倍

    300倍

    2002年 2014年 2020年~

    地球シミュレータ40TFLOPSを達成した当時世界最速のスパコン開発費用600億円

    今日のGPU8個のGPUを並べると40TFLOPSを達成可能開発費用100万円+α

    将来の組込みシステムスマートフォン程度のチップで地球シミュレータ相当の性能を達成可能?

  • GPGPU

    8800 GTX9800 GTX

    GTX 285GTX 480

    GTX 580

    GTX 680

    GTX Titan

    GTX Titan Black

    GTX Titan X

    X7350X7460 X7560

    E7-8870E7-8890

    0

    1000

    2000

    3000

    4000

    5000

    6000

    7000

    8000

    2006 2008 2010 2012 2014 2016

    GF

    LO

    PS

    RELEASE YEAR

    Single Precision Performance

    NVIDIA GTX

    Intel Xeon

    0

    5

    10

    15

    20

    25

    30

    2006 2008 2010 2012 2014 2016

    GF

    LO

    PS

    /WA

    TT

    RELEASE YEAR

    Performance per Watt

    NVIDIA GTX

    Intel Xeon

    General-Purpose computation on Graphics Processing Units

    Trend on Performance and Power

  • GPU・メニーコアによる高速化の原理計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    時間

    シングルコアの世界・コアの周波数を上げる

    for (i = 0; i < N; i++) {

    for (j = 0; j < M; j++) {

    .

    .

    .

    }

    }

    繰り返し処理も逐次的にひたすら高速処理する

  • 計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    時間

    シングルコアの世界・コアの周波数を上げる

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    時間

    コア数

    マルチコアの世界・コアを数個並べる・コアの周波数は上げない・プログラムを並列化する

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    計算ブロック

    時間

    コア数

    GPU・メニーコアの世界・コアを数百から数千個並べる・コアの周波数は下げる・プログラムを並列化する

    GPU・メニーコアによる高速化の原理

  • GPGPU Computing Stack

    User Programs

    CUDA HMPP OpenCLOpenGL

    GPGPU Runtime Backend

    Linux Kernel Device Driver

    GPU

    OS

    Hardware

    Runtime

    ApplicationAPI

    System Call

    I/O

    CPU CPU GPUCPUCPU

  • GPGPU Computing Model

    CMD_HtoD CMD_HtoD CMD_LAUNCH CMD_DtoH

    GPU

    CodeInput

    Data

    Host Memory

    GPU

    CodeInput

    Data

    Device Memory

    GPU

    CodeInput

    Data

    Host Memory

    GPU

    CodeInput

    Data

    Device Memory

    GPU

    CodeInput

    Data

    Host Memory

    GPU

    Code

    Device Memory

    GPU

    CodeInput

    Data

    Host Memory

    Device Memory

    GPU

    CodeOutput

    Data

    Output

    Data

    copy

    Input

    Data

    copy

    Output

    Data

    copy

  • GPGPU Execution

    Program 1

    Program 2 GPU command

    GPU driver

    Blocked Blocked

    CPU

    GPU

    time

    time

  • DetailsCommand Buffer

    Indirect Buffer (IB)

    GPU Command

    GPU Command

    GPU Command

    microcontroller

    Processing Cores

    Kernel Execution Unit OthersGPU

    CPU

    Codeaddress offsetbuffer size

    24 bits 40 bits

    Data

    IB Packet Format

    Unified Addressing Memory Space

    Refer to

    Page Table Page Table

    & GART

    Write commands

    Read commands

    Device

    Memory

    Host

    Memory

    MMIO

    Space

    (PCI)Control registers

  • CUDACompute Unified Device Architecture

    Grid = (2, 2)

    Block = (3, 3)

    Thread

    Grid/Thread/Blockという単位で計算を抽象化

    CUDAでプログラムを書いている限りは様々なGPUで実行可能

  • CUDAのRuntime APIの関数名は 「cuda」で始まる

    cudaMalloc()

    グローバルメモリの確保

    cudaMemcpy()

    ホストとデバイスでのデータ転送に利用

    cudaMemaset()

    確保したグローバルメモリに値をセット

    cudaFree()

    グローバルメモリを解放

    CUDA C関数 標準C関数

    malloc()

    memcpy()

    memset()

    free()

    アプリケーション

    CUDA ライブラリ

    CUDA Runtime

    CUDA Driver

    CPU

    GPU

    Runtime API と Driver API

    Driver API:

    低レベルなAPIでプログラミングは難しいがGPUをより細かく制御可能

    Runtime API:

    Driver APIをベースとして実装されたより高度なAPI

    パフォーマンスに顕著な差はない一部Driver API にしかない機能があるがRuntime APIと併用可能

    CUDAプログラミング

  • CUDAはGPGPU計算のため、標準の C言語を拡張

    dim3 宣言 : 3次元ベクトルの整数型の宣言

    カーネル関数の実行

    ビルトイン変数 :宣言なしに読み出しのみ可能

    関数修飾子 : ホストとデバイスのどちらで実行する関数か指定

    例 : dim3 a(2,4,8); → a.x=2; a.y=4; a.z=8;

    メンバの値を省略した場合 1 が代入、 grid,block の次元指定で利用

    例 : gpuexe(引数); → grid,blockのサイズでカーネル関数(gpuexe)を呼び出し

    ホストからの呼び出し、パラメータにより grid × block のスレッドが生成

    例 : dim3 gridDim,blockDim,blockIdx,thereadIdx;

    グリッドサイズ、ブロックサイズの設定値がカーネル関数で読み出し可能

    __global__ → デバイスで実行

    __device__ → デバイスで実行(カーネル関数からのみ呼び出し可能)

    __host__ → ホストで実行(ホストからのみ呼び出し可能)

    CUDAプログラミング

  • 行列乗算のCUDAプログラム例

    void multiply(double *a, double *b, double *c, int n)

    {

    double product = 0.0;

    int row = blockIdx.y * blockDim.y + threadIdx.y;

    int col = blockIdx.x * blockDim.x + threadIdx.x;

    int i, idx;

    for (i = 0; i < n; i++)

    product += a[row * n + i] * b[i * n + col];

    c[row * n + col] = product;

    }

  • スレッド(Thread)とワープ(Warp)

    1つのプログラムにおけるスレッド数の合計

    = Block.x * Block.y * Block.z * Grid.x * Grid.y * Grid.z

    = 数百万以上の可能性あり

    複数のCUDAプログラムが同時実行されると切替が大変

    プログラムの切替は32スレッドずつ(ワープ)に制限

  • スレッド(Thread)とワープ(Warp)

  • void multiply(double *a, double *b, double *c, int n)

    {

    double product = 0.0;

    int row = blockIdx.y * blockDim.y + threadIdx.y;

    int col = blockIdx.x * blockDim.x + threadIdx.x;

    int i, idx;

    for (i = 0; i < n; i++)

    product += a[row * n + i] * b[i * n + col];

    c[row * n + col] = product;

    }

    ほとんどC言語と変わらないが複数のジョブが並列実行していることを意識してプログラミングする必要がある。

    CUDAのプログラミング例

  • CUDAプロファイラの利活用

    性能解析ツール&デバッグ環境の充実が課題!

  • 優先度付きスケジューリング機構ルール1:GPUがビジー状態のときはコマンドを待機

    ルール2:GPUがアイドル状態になったらコマンドをディスパッチ

    高優先度タスク 低優先度タスク

    GPUコマンド発行

    GPUドライバ

    GPUからの割込み

    CPU

    GPU

    time

    time

    GPU上でも優先度制御

    オーバヘッドすべてのコマンドをキューイングするとGPU上の実行と実行の間にオーバヘッドが発生する。

  • 優先度付きスケジューリング機構ルール1:GPUがビジー状態のときは実行中の優先度だけ考慮してコマンドを待機

    ルール2:GPUがアイドル状態になったらコマンドをディスパッチ

    高優先度タスク 低優先度タスク

    GPUコマンド発行

    GPUドライバ

    GPUからの割込み

    CPU

    GPU

    time

    time

    オーバヘッド削減現在GPUで実行中のジョブ完了を待たずに次のコマンドを投入するとオーバヘッドは削減できる。

  • 資源予約付きスケジューリング機構ルール1:Budgetがなくなったら強制的にコマンドを待機

    ルール2:タスクごとにCapacity (C) とPeriod (P) を指定

    CPU

    GPU

    Execution

    Budget

    C

    C

    P

    time

    time

    time

    Enforced

  • 共有メモリ管理機構

    Context 1Virtual Address Space

    Context 2Virtual Address Space

    Context 3Virtual Address Space

    addr A

    addr B

    addr C

    Physical Device Memory Space

    addr S

    GPUの共有メモリを利用

    - cuShmGet()- cuShmAt()- cuShmDt()- cuShmCtl()

  • 共有メモリ管理機構

    Context 1

    A[]xB[]=P[]

    Context 2

    C[]xD[]=Q[]

    Context 3

    P[]xQ[]=X[]

    共有メモリなし

    A[] B[] C[] D[]

    Context 1 Context 2

    Host

    Memory

    P[] Q[]

    P[] Q[]

    copy copy

    Context 3

    P[] Q[]

    copycopy

    X[]

    共有メモリあり

    A[] B[] C[] D[]

    Context 1 Context 2

    P[] Q[]

    Device

    Memory

    Context 3

    X[]

    例題:データフロープログラミング

    GPUプログラミングでは共有メモリによって遅延を大幅に削減可能!

  • データI/O管理

    CPU

    Main

    Memory

    Output

    Device

    Input

    DeviceDevice

    Memory

    GPU

    PCI

    Mapped

    Read Write

    Processing

    Cores

    PCI base address registers (BARs) of GPU

    BAR 0

    BAR 1

    BAR 2

    BAR 3

    Control RegistersI/O

    Device

    Driver

    GPU

    Device

    Driver

    I/O Ports

    Physical I/O Address

    Data Update

  • ランタイムスタック

    pthread

    OpenMP

    MPICUDA

    OpenCL

    HMPP

    OpenACC

    ライブラリ

    コンパイラ API

    User Programs

    CUDA HMPP OpenCL

    Runtime Backend

    Kernel Device DriverOS

    Hardware

    Runtime

    ApplicationAPI

    System Call

    I/OCPU CPU GPUCPUCPU

  • ランタイムスタック

    ホモジニアス向け(主にCPU向け)

    pthread: 簡単に使えるAPIライブラリ

    OpenMP: コンパイラのディレクティブを利用

    MPI: PCクラスタでも利用可能なAPIライブラリ

    ヘテロジニアス向け(主にGPU向け)

    CUDA: GPU向け言語&APIライブラリ

    HMPP: コンパイラのディレクティブを利用

    OpenACC: コンパイラのディレクティブを利用

    OpenCL: デバイス非依存の言語&APIライブラリ