JP2013161483A - カーネル実行順序スケジューリング方法および装置 - Google Patents

カーネル実行順序スケジューリング方法および装置 Download PDF

Info

Publication number
JP2013161483A
JP2013161483A JP2013020760A JP2013020760A JP2013161483A JP 2013161483 A JP2013161483 A JP 2013161483A JP 2013020760 A JP2013020760 A JP 2013020760A JP 2013020760 A JP2013020760 A JP 2013020760A JP 2013161483 A JP2013161483 A JP 2013161483A
Authority
JP
Japan
Prior art keywords
kernel
execution
progress index
memory
execution order
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013020760A
Other languages
English (en)
Other versions
JP6211272B2 (ja
Inventor
Young Sam Shin
容 三 辛
Min Young Son
民 榮 孫
cheng yuan Li
承 遠 李
Shi-Hwa Lee
時 和 李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2013161483A publication Critical patent/JP2013161483A/ja
Application granted granted Critical
Publication of JP6211272B2 publication Critical patent/JP6211272B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 マイクロアーキテクチャを使用するコンピュータ環境でデータ処理および特定機能を実行する応用プログラムのリアルタイム性を保障する方法および装置に関する。
【解決手段】 カーネル実行順序スケジューリング装置は、有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルの実行時間を推定し、カーネルの推定された実行時間および前記カーネルの優先順位に基づいて前記カーネルの実行順序を決定する。
【選択図】 図4

Description

本発明は、マイクロアーキテクチャを使用するコンピュータ環境でデータ処理および特定機能を実行する応用プログラムの精密な性能予測によってリアルタイム性を保障する方法および装置に関する。
個人携帯端末の普及と情報処理の要求量が増加するに伴い、コンピュータ機器は次第に複雑化し、多様な応用を同時に処理しなければならない状況に置かれている。また、リアルタイム処理を要求するマルチメディアのような応用プログラムの増加に伴い、コンピュータ機器のシステム性能に対する要求量も次第に増加しており、単一プロセッサだけでは応用プログラムを効率的に処理することができない状況に置かれている。
このような状況を克服するために、半導体集積技術の発達とマルチプロセッサコンピュータ技術が登場した。マルチプロセッサを使用する場合、単一プロセッサよりもエネルギー効率および性能向上において多くの利点がある。
しかし、多重コア上で同時に実行される応用プログラムの特性により、予想外の共有資源使用の衝突が発生し、衝突によって性能が低下するという問題が発生している。
カーネルの実行時間を比較的正確に推定することにより、所定のタイムスロットで構成されたウィンドウ基盤によってカーネルスケジュールのリアルタイム性を保障する装置および方法を提供することを目的とする。
応用プログラムの固有な実行特性指標である有効プログレスインデックス、システム環境による性能指標であるメモリプログレスインデックス、およびカーネルプログレスインデックスを利用することにより、カーネルの実行時間を推定する装置および方法を提供する。
一実施形態において、カーネル実行順序スケジューリング装置は、有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルの実行時間を推定する推定部、およびカーネルの推定された実行時間および前記カーネルの優先順位に基づいて前記カーネルの実行順序を決定する制御部を含む。
前記制御部は、前記カーネルのスケジューリング方式がプリエンプティブ(preemptive)方式である場合、前記カーネルのデッドライン(deadline)時間に基づいて前記カーネルの実行順序をスケジューリングするプリエンプティブスケジューリング部を含んでもよい。
前記制御部は、前記カーネルのスケジューリング方式がノンプリエンプティブ(non−preemptive)方式である場合、前記カーネルの推定された実行時間に基づいて所定サイズのウィンドウ単位で前記カーネルの実行順序をスケジューリングするノンプリエンプティブスケジューリング部を含んでもよい。
前記ノンプリエンプティブスケジューリング部は、コマンドキュー(command queue)に入力された順序、前記カーネルの優先順位、および前記カーネルの推定された実行時間に基づいて、前記カーネルの実行が一定の時間間隔のタイムスロットで構成されたウィンドウ内で完了するように前記カーネルの実行順序をスケジューリングしてもよい。
前記ノンプリエンプティブスケジューリング部は、前記カーネルの推定された実行時間に基づいて、前記ウィンドウ内で実行が完了されるカーネルが優先的に実行されるように前記カーネルの実行順序をスケジューリングしてもよい。
前記制御部は、前記カーネルのうちで応用プログラムの特性に応じて周期的に実行されるカーネルに対しては、実行周期に該当するウィンドウのタイムスロットを予約し、残りのタイムスロットに他のカーネルの実行順序をスケジューリングする予約スケジューリング部をさらに含んでもよい。
前記制御部は、ウィンドウ内で残ったタイムスロットがカーネルの推定された実行時間よりも小さい場合に、前記ウィンドウの大きさを前記カーネルの推定された実行時間だけ変更するウィンドウ変更部をさらに含んでもよい。
前記ウィンドウ変更部は、前記ウィンドウの大きさの変更を要請したカーネルがコマンドキューに格納されたカーネルのうちで優先順位が最も大きく、要請された変更の大きさが予め設定されたウィンドウ変更範囲に含まれ、前記ウィンドウの大きさ変更要請が予め設定された回数の範囲からなる場合に、前記ウィンドウの大きさを変更してもよい。
前記推定部は、前記カーネルの最終有効プログレスインデックス、前記カーネルが実行される環境の影響を示す最終メモリプログレスインデックス、および最終カーネルプログレスインデックスに基づいて前記カーネルの実行時間を推定してもよい。
前記推定部は、応用プログラムを実行する過程で繰り返し実行されるカーネルのヒストリーに基づいて、前記有効プログレスインデックス、メモリプログレスインデックス、およびカーネルプログレスインデックスを推定するプログレスインデックス推定部を含んでもよい。
前記推定部は、物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルのメモリ効率、および実行するカーネルに対するメモリ効率の変化量に基づいて最終メモリプログレスインデックスを推定するメモリプログレスインデックス推定部、および物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルに対するオペレーティングシステムの効率、および実行するカーネルに対する前記オペレーティングシステムの効率の変化量に基づいて最終カーネルプログレスインデックスを推定するカーネルプログレスインデックス推定部をさらに含んでもよい。
前記推定部は、単独で実行されるカーネルのメモリ効率および共同で実行されるカーネルのメモリ効率に基づいて前記メモリ効率の変化量を推定する第1変化量推定部、および単独で実行されるカーネルに対するオペレーティングシステムの効率および共同で実行されるカーネルに対するオペレーティングシステムの効率に基づいて前記オペレーティングシステムの効率の変化量を推定する第2変化量推定部をさらに含んでもよい。
前記推定部は、前記カーネルの非有効サイクルおよび前記メモリプログレスインデックスに基づいて前記メモリ効率を推定するメモリ効率推定部、および前記カーネルの非有効サイクルおよび前記カーネルプログレスインデックスに基づいて前記オペレーティングシステムの効率を推定するオペレーティングシステム効率推定部をさらに含んでもよい。
前記プログレスインデックス推定部は、前記カーネルを構成するデータの大きさおよび前記データの並列化レベルに基づいて初期有効プログレスインデックスと前記有効プログレスインデックス間の相関関数を計算する有効相関関数計算部、前記カーネルを構成するデータの大きさおよび前記データの並列化レベルに基づいて初期メモリプログレスインデックスと前記メモリプログレスインデックス間の相関関数を計算するメモリ相関関数計算部、および前記カーネルを構成するデータの大きさおよび前記データの並列化レベルに基づいて初期カーネルプログレスインデックスと前記カーネルプログレスインデックス間の相関関数を計算するカーネル相関関数計算部を含んでもよい。
他の一実施形態において、カーネル実行順序スケジューリング装置は、有効実行方式によって実行される命令語の実行時間を累積して前記有効プログレスインデックスを生成する有効プログレスカウンタ(EPC:Effective Progress Counter)、前記カーネルが共有メモリにアクセスするのに消耗したサイクルを累積してメモリプログレスインデックス(MPI:Memory Progress Index)を生成するメモリプログレスカウンタ(MPC:Memory Progress Counter)、およびシステムカーネル実行に消耗したサイクルを累積してカーネルプログレスインデックス(KPI:Kernel Progress Index)を生成するカーネルプログレスカウンタ(KPC:Kernel Progress Counter)をさらに含んでもよい。
一実施形態において、カーネル実行順序スケジューリング方法は、有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルの実行時間を推定するステップ、およびカーネルの推定された実行時間および前記カーネルの優先順位に基づいて前記カーネルの実行順序を決定するステップを含む。
前記決定するステップは、コマンドキュー(command queue)に入力された順序、前記カーネルの優先順位、および前記カーネルの推定された実行時間に基づいて、前記カーネルの実行が一定の時間間隔のタイムスロットで構成されたウィンドウ内で完了するように前記カーネルの実行順序を決定してもよい。
前記推定するステップは、前記カーネルの最終有効プログレスインデックス、前記カーネルが実行される環境の影響を示す最終メモリプログレスインデックス、および最終カーネルプログレスインデックスに基づいて前記カーネルの実行時間を推定してもよい。
前記推定するステップは、応用プログラムを実行する過程で繰り返し実行されるカーネルのヒストリーに基づいて、前記有効プログレスインデックス、メモリプログレスインデックス、およびカーネルプログレスインデックスを推定するステップを含んでもよい。
前記推定するステップは、物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルのメモリ効率、および実行するカーネルに対するメモリ効率の変化量に基づいて最終メモリプログレスインデックスを推定するステップ、および物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルに対するオペレーティングシステムの効率、および実行するカーネルに対する前記オペレーティングシステムの効率の変化量に基づいて最終カーネルプログレスインデックスを推定するステップをさらに含んでもよい。
一実施形態において、異機種コンピュータ環境システムは、複数の中央処理部を含むホストプロセッサ、複数のマイクロ実行部を含むコンピュータデバイス、カーネルそれぞれの有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルそれぞれの実行時間を推定する推定部、および前記カーネルそれぞれの推定された実行時間および前記カーネルそれぞれの優先順位に基づいて前記カーネルの実行順序を決定する制御部を含み、前記ホストプロセッサは、前記制御部で決定された前記実行順序に基づいて前記コンピュータデバイスでカーネルを実行することを命令するカーネル実行命令を送信してもよい。
カーネルの実行時間を比較的正確に推定することにより、所定のタイムスロットで構成されたウィンドウ基盤でカーネルスケジュールのリアルタイム性を保障することができる。
応用プログラムの固有な実行特性指標である有効プログレスインデックス、システム環境による性能指標であるメモリプログレスインデックス、およびカーネルプログレスインデックスを利用することにより、カーネルの実行時間を推定することができる。
カーネルの推定された実行時間に基づいて、カーネルの応答レイテンシ(latency)を保障するためのリアルタイムスケジューリングを実行することができる。
システムの性能および応用プログラムの特性を考慮してウィンドウの大きさを拡張させることにより、タイムスロットの活用率を高めることができる。
カーネルの推定された実行時間およびウィンドウ基盤のスケジューリングを利用することにより、異機種多重コア方式のプログラムでカーネル実行の性能を保障しながら、リアルタイム性を要請するカーネルの応答速度を保障することができる。
一般的な応用プログラムが実行されるコンピュータ環境を示す図である。 一実施形態に係る有効プログレスインデックスの概念を示す図である。 一実施形態に係るカーネル実行順序スケジューリング方法が適用されるホストとデバイスで構成された異機種コンピュータ環境システムを示す図である。 一実施形態に係るカーネル実行順序スケジューリング装置のブロック図である。 一般的なカーネルの実行方式を示す図である。 一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。 一実施形態に係るカーネル実行順序スケジューリング方法に使用されるウィンドウおよびタイムスロットを示す図である。 他の一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。 さらに他の一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。 さらに他の一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。 一実施形態に係るカーネル実行順序スケジューリング方法のフローチャートである。
以下、一方の側に係る実施形態について、添付の図面を参照しながら詳細に説明する。
OpenCL(Open Computing Language)およびOpenGL(Open Graphics Library)のような開放型並列プラットフォームの場合、異機種コンピュータ環境において、ホストがデバイスのコンピュータ資源を活用してプログラムを作成することができるプラットフォームを提供する。
異機種コンピュータ環境は、ホスト(Host)プロセッサとコンピュータデバイスがバス(Bus)のような相互接続(interconnection)によって接続されている環境を意味する。ホストプロセッサは、コンピュータデバイスで実行するプログラムをバスを介して伝達する。ここで、コンピュータデバイスで実行するプログラムを、一般的にカーネルという。
ホストプロセッサは、カーネルの実行のためにコンピュータデバイスにコマンド(command)を送信する。ここで、一般的にカーネルの実行は、FIFO(First In First Out)方式によって実行されるため、カーネルの優先順位を保障したり、カーネルの応答レイテンシ(latency)を保障することが困難である。
GPU(Granphic Processing Unit)の活用範囲が広範囲化するに伴い、汎用的な応用プログラムの加速のための目的として使用されながら、優先順位基盤のカーネルスケジューリングまたはリアルタイム性保障のカーネルスケジューリングが必要となっている。また、一般的なGPUの場合、カーネル実行方式がノンプリエンプティブ(non−preemptive)方式であるため、ノンプリエンプティブ方式を考慮したリアルタイムスケジューリングが必要となる。
また、実行される応用プログラムの正確な性能および進行が測定可能であれば、測定された値を指標化することにより、リアルタイムスケジューリング、性能改善、負荷均衡、および低電力管理のために応用プログラムの現状態を示す情報として活用することができる。
さらに、システムで共有する資源に対する衝突状態を効率的にモニタリングして指標化することができれば、指標は応用プログラムの実行に必要な資源割当、再分配、およびスケジューリングを決定するにおいて重要な情報として活用することができる。問題は、どんな指標を生成して効率的に資源を分配するのかにある。
ランタイム性能低下を発生させずに応用プログラムの状態を正確かつ精密に測定するのは容易ではない。また、応用プログラムの実行を構成する命令語の実行時間は一定ではない。さらに、応用プログラム実行時に共に実行される他の応用プログラムの予想外の影響により、応用プログラムの状態に対する正確な測定は容易ではない。
単一応用プログラムが実行される場合にも、単一応用を構成する複数のスレッドが共に実行されれば互いに影響を及ぼすようになり、1つのスレッドで構成された場合にもスレッドを構成する命令語の実行時間が一定でないため、応用プログラムの状態測定が困難である。
また、多重コア上で応用プログラムの同時実行により、共有資源アクセス時の衝突問題が発生する。特に、共有メモリアクセス時に発生する衝突によってシステムの性能低下が激しくなる。したがって、多重コア上でシステムの実行状態を正確にモニタリングし、共有した資源の衝突状態をモニタリングし、モニタリング結果を指標化する必要がある。このような指標を活用してカーネルの実行を制御することができる。
図1は、一般的な応用プログラムが実行されるコンピュータ環境を示す図である。
一般的に、応用プログラムは、プロセッサ上でメモリとハードウェアデバイスを資源とし、定められた機能を実行する。メモリは、通常の場合は階層的構造を有する。このとき、接続(access)速度が速いメモリはローカルバスに備えられ、接続速度は遅いが安価なメモリはシステムバス上に備えられてもよい。また、多重プロセッサは、高い性能の要求事項を満たすために1つのシステムに複数のプロセッサが集積したものであって、応用プログラムを並列処理する。
一般的に、応用プログラムは1つ以上のスレッドで構成される。1つのプロセッサ上で多重スレッドが実行される。1つのプロセッサ上で多重スレッドが実行されることをマルチスレッディングと言う。応用プログラムの性能および進行状態を測定するためには、応用プログラムを構成するスレッドの性能および進行状態を測定しなければならない。
図1は、一般的に構成されるコンピュータ環境の一例であるが、一方の側に係るカーネル実行順序スケジューリング装置の適用環境は、図1に示す例に限定されることはない。
図2は、一実施形態に係る有効プログレスインデックスの概念を示す図である。
応用プログラムは、複数のスレッドで構成される。スレッドは、特定機能を実行するための命令語で構成される。命令語の実行方式は、有効実行(effective execution)方式および非有効実行(noneffective execution)方式に区分される。
命令語の実行方式が有効実行方式である場合、命令語の実行完了時点または命令語群(グループ)の実行完了時点は一定のサイクルを有する。有効実行方式によって実行される命令語の大部分は、プロセッサの外部状況とは独立的に実行される。また、有効実行方式によって実行される命令語は、該当命令語の実行サイクルがプログラム進行のために必要となる。また、該当命令語の実行サイクルは、応用プログラムの目的に有効な命令語を実行するのに必要なプロセッササイクルで測定される。
この反面、命令語の実行方式が非有効実行方式である場合、命令語あるいは命令語群(グループ)の実行完了時点は一定でない遅延サイクルを有する。非有効実行方式によって実行される命令語の大部分は、入出力端、メモリなどのように共有する資源を使用しなければならない場合である。プロセッサで非有効実行方式の命令語が実行される場合、該当命令語の実行が完了するためには数十サイクルの遅延が要求されることがある。このような遅延は、該当命令語の実行時、プロセッサがアクセスしようとする共有資源を他のプロセッサで使用する場合に発生する。共有資源に他のプロセッサと同時接続することによって衝突が発生し、衝突によって遅延が発生するようになる。
図2を参照すれば、スレッドが実行される物理的時間(Physical time)は一定に増加する。このとき、物理的時間の増加は、RPI(Real Progress Index、以下「RPI」とする)で表示される。
有効実行(effective execution)方式の命令語は、同じ実行時間内に命令語が完了する。この反面、非有効実行(Noneffective execution)方式の命令語は、他のスレッドの実行によって影響を受けたり実行時点に応じて発生する状況のため、命令語の実行完了時間が一定ではなくなる。
非有効実行は、プロセッサの命令語水準で非有効実行をするハードウェア非有効実行(Hardware Noneffective execution、以下「HWNE」とする)と命令語で構成された関数またはシステムのカーネル水準で応用プログラムの実行中に発生するイベントで非有効実行をするソフトウェア非有効実行(Software noneffective execution、以下「SWNE」とする)に区分される。ここで、システムのカーネルは、一般的なユーザ応用プログラムではなく、オペレーティングシステムを構成するシステムプログラムを意味する。HWNEとSWNEは、予め設定された基準に応じて区分される。
実際のスレッドの実行時間からSWNEとHWNEを除いた残りの部分の実行時間は、すべて有効な実行時間であると言える。スレッドの実行からSWNEとHWNEを除いた残りの部分を実行するのに必要なサイクルは毎回同じ値を有するため、SWNEとHWNEを除いた残りの部分を指標化すれば、スレッドの有効な(effective)実行指標として活用することができる。ここで、有効な実行時間を示す指標を、有効プログレスインデックス(Effective Progress Index、以下「EPI」とする)と定義する。EPIは次の数式(1)によって表現される。
スレッド=P有効実行+P非有効実行
τ有効スレッドプログレス=τ物理的−(τSWNE+τHWNE) (1)
ここで、応用プログラムを構成するプログラムPスレッドは、有効実行(P有効実行)と非有効実行(P非有効実行)に区分される。スレッドの有効プログレスを示す時間(τ有効スレッドプログレス)は、スレッドが実行される物理的時間(τ物理的)からSWNE実行時間(τSWNE)とHWNE実行時間(τHWNE)を除去すればよい。
HWNEに該当する命令語は、共有資源へのアクセスが必要な命令語である。このような命令語の実行サイクルは、外部I/O(Input/Output)またはメモリアクセス遅延によるサイクルを含んでもよい。スレッドの実行中に外部I/O(Input/Output)またはメモリアクセス遅延に消耗したサイクルをスレッド別に累積管理した指標を、メモリプログレスインデックス(MPI:Memory Progress Index)と定義する。
スレッドの実行中にシステムのイベントをオペレーティングシステムのカーネルで処理するために消耗するサイクルを、カーネルプログレスインデックス(KPI:Kernel Progress Index)と定義する。カーネルプログレスインデックスは、インタラプト、スレッドコンテキストスイッチ(context switch)、およびマロック(malloc)などのシステム関数コールによるカーネル共有資源のアクセス衝突によって測定される。
SWNEおよびHWNEを実行する間、実際の物理的な時間が増加してもEPIは増加しない。したがって、EPI値は、スレッドの実行において絶対的な進行位置を示す指標として使用される。EPIが重要な理由は、実際の応用プログラムを構成するスレッドのプロセッサ占有率ではなく、実際の応用プログラムの進行状態を正確に示すことができるためである。
スレッドの実行において、SWNEおよびHWNEは、予め設定された基準に基づいて判断される。予め設定された基準は、現在まで測定された命令語または命令語で構成された関数の実行時間が一定の場合と一定でない場合を考慮して定義される。ただし、予め設定された基準は定義されるSWNEおよびHWNEの一例に過ぎず、これに限定されることはなく、一方の側に係る発明が属する分野において通常の知識を有する者が容易に類推することができる範囲を含んでもよい。
下記表1では、SWNEおよびHWNEの一例が分類されている。
Figure 2013161483
表1において、ビジーウェイティングは、I/O AccessのためのPolling方式のアクセス形態で、実際のI/Oによるデータ送受信の場合にはSWNEに該当しない。ビジーウェイティングは、I/Oの状態をチェックするために「繰り返し」コードを実行する場合にのみSWNEに該当する。SWNEおよびHWNEは、表1に例示された場合ではなくても、スレッドの機能を実行するにおいて有効でないすべての実行区間を含んでもよい。
RPIは、スレッドがプロセッサで実行中に累積したプロセッササイクルの累積値を意味する。また、RPIは、スレッドのプロセッサ占有率を示す指標として使用される。
EPIは、スレッドのプロセッササイクル水準でカウントされた有効実行サイクルの累積値を意味する。また、EPIは、スレッドの有効進行状態を示す指標として使用される。
MPIは、スレッドの実行中に共有資源アクセス衝突によってストール(Stall)したり消耗したサイクルの累積値を意味する。また、MPIは、共有資源へのアクセスおよび衝突発生程度を示す指標として使用される。
KPIは、スレッドの実行中にシステムカーネル実行によって発生する非有効サイクルの累積値を意味する。また、KPIは、システムカーネルで共有する資源へのアクセスおよび衝突発生程度を示す指標として使用される。
それぞれの指標を活用することにより、応用プログラムを構成するスレッドの状態が分析される。例えば、EPIとRPIの差を利用することにより、応用プログラムのプロセッサ占有率に対比する実際応用プログラムの進行状態を把握する。
EPIは、カーネルが実行される環境から独立的な特性を有する。すなわち、同じ入力に対し、実行環境とは関係なく常に同じ出力を有する指標である。したがって、システムと分離した状況で応用プログラムの実行特性を示す。
異機種コンピュータシステムのデバイスで実行されるカーネルは、上述したスレッドに対応する。したがって、一実施形態に係るカーネル実行順序スケジューリング装置は、上述したスレッドのEPI、MPI、KPI、RPIをカーネルに適用することにより、カーネルの実行性能をモニタリングする。
より具体的に、異機種コンピュータシステムのデバイスで実行されるカーネルに適用されるEPI、MPI、KPIは、次の意味を有する。EPIは、応用プログラムが実行されるシステムの変化から独立した応用プログラム自体とプロセッサ自体の実行特性を示す指標である。MPIは、システム構成のうちでメモリの構造的特性を反映し、メモリレイテンシ(latency)および衝突(collision)などの実行特性を反映した指標である。KPIは、システムのオペレーティングシステムの特性を反映した指標であって、カーネルの資源使用、同期化、および共有資源割当によるオペレーティングシステムの応答速度などを反映した性能指標である。
図3は、一実施形態に係るカーネル実行順序スケジューリング方法が適用されるホストとデバイスで構成された異機種コンピュータ環境システムを示す図である。図3を参照すれば、ホストは複数のCPUで構成されてもよく、デバイス310は複数のME(Micro Execution unit)で構成される。
ホストは、デバイス310でカーネルを実行するために、カーネルを実行するためのコマンド(command)をデバイスに送信する。送信されたコマンドは、コマンドキュー(command queue)にプッシュ(push)され、デバイスによってポップ(pop)されて該当カーネルが実行される。
一般的な場合、コマンドキューにプッシュされたコマンドは、FIFO(First In First Out)方式によってポップされ、優先順位を考慮したりレイテンシ(latency)が考慮されない。したがって、高い優先順位のカーネルはコマンドキューに先にプッシュされ、実行されている低い優先順位のカーネルのために処理されず、コマンドキューにペンディング(pending)状態として留まる。
優先順位およびレイテンシを考慮したカーネルスケジューリングのためには、コマンドキューにプッシュされたカーネルの優先順位とデッドライン(deadline)を考慮し、コマンドキューでカーネルの実行順序を再構成することによって実現される。デッドラインは、該当カーネルの動作を完了するための制限時間を意味する。
デッドライン基盤のカーネル実行順序を再構成するためには、コマンドキューにプッシュされたカーネルの実行時間が分からなければならないが、ここで、上述したEPI、MPI、KPIが使用される。
図4は、一実施形態に係るカーネル実行順序スケジューリング装置のブロック図である。図4を参照すれば、カーネル実行順序スケジューリング装置は、推定部410、制御部430、有効プログレスカウンタ440、メモリプログレスカウンタ450、およびカーネルプログレスカウンタ460を含む。
推定部410は、有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルの実行時間を推定する。より具体的には、推定部410は、カーネルの最終有効プログレスインデックス、カーネルが実行される環境の影響を示す最終メモリプログレスインデックス、および最終カーネルプログレスインデックスに基づいてカーネルの実行時間を推定する。
最終有効プログレスインデックス、最終メモリプログレスインデックス、および最終カーネルプログレスインデックスの合計がカーネルの実行時間として推定される。
制御部430は、推定部410で推定された実行時間およびカーネルの優先順位に基づいてカーネルの実行順序を決定する。
推定部410は、プログレスインデックス推定部420、メモリプログレスインデックス推定部411、カーネルプログレスインデックス推定部412、第1変化量推定部413、第2変化量推定部414、メモリ効率推定部415、およびオペレーティングシステム効率推定部416を含んでもよい。
プログレスインデックス推定部420は、応用プログラムを実行する過程で繰り返し行われるカーネルのヒストリーに基づいて、有効プログレスインデックス、メモリプログレスインデックス、およびカーネルプログレスインデックスを推定する。
応用プログラムが実行されれば、繰り返し行われるカーネルがある。プログレスインデックス推定部420は、カーネルが繰り返し行われる度に、有効プログレスインデックス、メモリプログレスインデックス、およびカーネルプログレスインデックスを推定する。プログレスインデックス推定部420は、繰り返される前の有効プログレスインデックスと繰り返された後の有効プログレスインデックスを比較して両者の相関関係を計算する。プログレスインデックス推定部420は、メモリプログレスインデックスおよびカーネルプログレスインデックスに対しても相関関係を計算する。
メモリプログレスインデックス推定部411は、物理プログレスインデックス(RPI)、有効プログレスインデックス(EPI)、カーネルのメモリ効率(ME:Memory Efficiency)、および実行するカーネルに対するメモリ効率の変化量(△ME)に基づいて最終メモリプログレスインデックスを推定する。
カーネルプログレスインデックス推定部412は、物理プログレスインデックス(RPI)、有効プログレスインデックス(EPI)、カーネルに対するオペレーティングシステムの効率(KE:Kernel Efficiency)、および実行するカーネルに対するオペレーティングシステムの効率の変化量(△KE)に基づいて最終カーネルプログレスインデックスを推定する。
第1変化量推定部413は、単独で実行されるカーネルのメモリ効率および共同で実行されるカーネルのメモリ効率に基づいてメモリ効率の変化量を推定する。
第2変化量推定部414は、単独で実行されるカーネルに対するオペレーティングシステムの効率および共同で実行されるカーネルに対するオペレーティングシステムの効率に基づいてオペレーティングシステムの効率の変化量を推定する。
メモリ効率推定部415は、カーネルの非有効サイクルおよびメモリプログレスインデックスに基づいてメモリ効率を推定する。EPIとRPIの差を、スレッドの非有効サイクル(Tne)と定義する。
メモリ効率推定部415は、非有効サイクル(Tne)とMPIを利用してカーネルのメモリ効率(ME)を計算する。このとき、メモリ効率(ME:Memory Efficiency)は、次のように定義する。ME=1−(MPI/Tne)、MEは、カーネル間に共有するメモリのうち、衝突せずに有効に使用される区間の比率を示す指標として使用される。
オペレーティングシステム効率推定部416は、カーネルの非有効サイクルおよびカーネルプログレスインデックスに基づいてオペレーティングシステムの効率を推定する。
オペレーティングシステム効率推定部416は、非有効サイクル(Tne)とKPIを利用してカーネルに対するオペレーティングシステムの効率(KE)を計算する。このとき、カーネルに対するオペレーティングシステムの効率(KE:Kernel Efficiency)は、次のように定義する。KE=1−(KPI/Tne)、KEは、オペレーティングシステム実行区間のうち、カーネル共有資源で衝突せずに有効に使用される区間の比率を示す指標として使用される。
MEおよびKEはシステム依存的な指標であるため、現在実行されているカーネルに示されたシステムの状態を示していると言える。したがって、MEおよびKEを性能予測に反映して現在のシステム状況を反映した指標を生成する。
プログレスインデックス推定部420は、有効相関関数計算部421、メモリ相関関数計算部423、およびカーネル相関関数計算部425を含んでもよい。
異機種コンピュータ環境システムのように開放型プログラムを使用して作成される応用プログラムでは、デバイスの加速性が利用される。
異機種コンピュータ環境システムのホストは、応用プログラムを構成するモジュールのうちで並列加速が可能な部分に対し、「加速に使用されるデータ」と「計算しようとする命令語」の集合であるカーネルを対象デバイスで実行可能なコードにコンパイルした後、対象デバイスで該当カーネルを実行するようにする。
該当カーネルは、応用プログラムで繰り返し実行される特徴を有する。カーネルとして処理しなければならない多様なデータ集合が使用される。
プログレスインデックス推定部420は、繰り返し実行されるカーネルに対し、EPI、MPI、およびKPIをプロファイリング(profiling)する。プログレスインデックス推定部420は、プロファイリングされたEPI、MPI、およびKPIを、入力データの大きさ(以下「s」と表記)と入力データの並列化レベル(以下「p」と表記)に対する関数にモデリングする。
有効相関関数計算部421は、カーネルを構成するデータの大きさおよびデータの並列化レベルに基づいて、初期有効プログレスインデックスと有効プログレスインデックス間の相関関数を計算する。
メモリ相関関数計算部423は、カーネルを構成するデータの大きさおよびデータの並列化レベルに基づいて、初期メモリプログレスインデックスとメモリプログレスインデックス間の相関関数を計算する。
カーネル相関関数計算部425は、カーネルを構成するデータの大きさおよびデータの並列化レベルに基づいて、初期カーネルプログレスインデックスとカーネルプログレスインデックス間の相関関数を計算する。
例えば、t時間でのカーネル実行で取得したカーネルの性能指標をKPIt0、MPIt0、EPIt0とすれば、次のカーネル実行による性能指標KPI’、MPI’、EPI’は、以前性能指標との関係において次のように表現される。それぞれの性能指標は指標間の独立的な指標であり、以前指標に対するsとpに対する関数にモデリングされる。
KPI’=f(s、p)*KPIt0
MPI’=f(s、p)*MPIt0
EPI’=f(s、p)*EPIt0
EPI’は、有効実行サイクルに基づいた性能指標であって、同じ入力に対して決定的な(deterministic)特性を有する。したがって、入力データセットに影響を受ける部分(Cds)と受けない部分(Cids)に区分されてもよく、EPI’は次のように表現される。
EPI’=Cids+f’e(s、p)*Cds
カーネルの実行において、入力データの大きさと並列化レベルによって実際に予想される実行時間をT’pとすれば、EPI’、MPI’、KPI’を利用して次のように計算される。
T’p=KPI’+MPI’+EPI’
プログレスインデックス推定部420は、応用プログラムが実行されるターゲットシステムのエミュレーションを利用し、sとpにモデリングされるEPI、KPI、MPIを推定する。プログレスインデックス推定部420は、繰り返される前のEPI、KPI、MPIと繰り返された後のEPI、KPI、MPIを比較して相関関数を計算する。
プログレスインデックス推定部420は、別途に準備された応用プログラムのランニングコードの実行から、sとpにモデリングされるEPI、KPI、MPIを推定する。また、プログレスインデックス推定部420は、繰り返される前のEPI、KPI、MPIと繰り返された後のEPI、KPI、MPIを比較して相関関数を計算する。
プログレスインデックス推定部420は、デバイスでカーネルが繰り返し実行される特性を活用し、実際カーネルの実行途中に入力されたデータセット(s)および並列化レベル(p)に対する値を記録し、記録された値を活用して相関関数を計算する。
プログレスインデックス推定部420は、リニア補間(Linear interpolation)によって相関関数を計算する。プログレスインデックス推定部420は、入力データセットの大きさ(s)、並列化レベル(p)の一次関数の形態で表現された相関関数の係数値を計算する。計算された係数値は、ヒストリー基盤の性能予測のために実行カーネルコード別に格納されてもよく、ランタイム実行時に抽出して使用される。
デバイスでカーネルが同時に実行されれば、現在実行されているカーネルのKEおよびMEがカーネル実行時間予測に反映される。
例えば、カーネルK1、K2、K3それぞれの単独実行で計算されたMPIとKPIを利用し、計算された効率指標をそれぞれME、KE、ME、KE、ME、KEと仮定する。ここで、K1とK2がデバイスで現在実行されており、実行中に推定されたそれぞれのMPIとKPIによって計算された効率指標がそれぞれ‘ME、‘KE1、‘ME、‘KEであるとすれば、K1とK2の共同実行によって変化したそれぞれの効率が計算される。各カーネルに対する効率の変化量は、次のように表現される。
△ME=ME−‘ME1
△KE=KE−‘KE1
同じ方法によってK2に対するME、KEの変化量が計算される。計算された変化量をカーネルの共同実行可能な場合に対して平均すれば、デバイスで実行されるカーネルに対し、メモリおよびオペレーティングシステムの効率の変化量が計算される。メモリ効率の変化量およびオペレーティングシステム効率の変化量は、次のように表現される。
△KE=ΣKEn/n
△ME=ΣMEn/n
△KE、△ME、および相関関数を考慮し、システム状況を反映した最終性能予測指数である最終カーネルプログレスインデックスKPI’sおよび最終メモリプログレスインデックスMPI’sが下記のように計算される。
ヒストリー基盤の性能予測によってKPI’、MPI’、およびEPI’が推定される。KPI’、MPI’、およびEPI’を利用してカーネルの実行時間RPI’が推定される。しかし、現在のシステムの特性を示す△KE、△ME値があれば、現在システムの実行性能指標を反映したKPI’s、MPI’sは次のように計算される。
KPI’s={1−(KE+△KE)}*(RPI’−EPI’)
MPI’s={1−(ME+△ME)}*(RPI’−EPI’)
システムの現在の性能指標を反映したカーネルの最終実行時間T’pは、T’p=KPI’s+MPI’s+EPI’と推定される。EPI’はシステムの特性に影響を受けないため、KPI’sおよびMPI’sと共に使用される。
有効プログレスカウンタ440は、有効実行方式によって実行される命令語の実行時間を累積して有効プログレスインデックスを生成する。
メモリプログレスカウンタ(Memory Progress Counter、以下「MPC」とする)450は、カーネルが共有メモリにアクセスするのに消耗したサイクルを累積してメモリプログレスインデックス(MPI:Memory Progress Index)を生成する。
カーネルプログレスカウンタ(Kernel Progress Counter、以下「KPC」とする)460は、カーネルがプロセッサを占有し、システムカーネル実行に消耗したサイクルを累積してカーネルプログレスインデックス(KPI:Kernel Progress Index)を生成する。
システムカーネル実行の例としては、インタラプト、スレッドコンテキストスイッチ(thread context switch)、mallocなどのシステム関数がある。このようなシステム関数のコールによってカーネル共有資源でのアクセス過程で衝突が発生することにより、非有効実行区間が発生する。
制御部430は、プリエンプティブスケジューリング部431、ノンプリエンプティブスケジューリング部433、予約スケジューリング部435、およびウィンドウ変更部437を含んでもよい。
プリエンプティブスケジューリング部431は、カーネルのスケジューリング方式がプリエンプティブ(preemptive)方式である場合、カーネルのデッドライン(deadline)時間に基づいてカーネルの実行順序をスケジューリングする。プリエンプティブスケジューリング部431は、デッドライン時間が速く到達する順にカーネルの実行順序をスケジューリングする。
ノンプリエンプティブスケジューリング部433は、カーネルのスケジューリング方式がノンプリエンプティブ(non−preemptive)方式である場合、カーネルの推定された実行時間に基づいて所定サイズのウィンドウ単位でカーネルの実行順序をスケジューリングする。
ノンプリエンプティブスケジューリング部433は、コマンドキュー(command queue)に入力された順序、カーネルの優先順位、およびカーネルの推定された実行時間に基づいて、カーネルの実行が一定の時間間隔のタイムスロットで構成されたウィンドウ内で完了するようにカーネルの実行順序をスケジューリングする。
ノンプリエンプティブスケジューリング部433は、カーネルの推定された実行時間に基づいて、ウィンドウ内で実行が完了することができるカーネルが優先的に実行されるようにカーネルの実行順序をスケジューリングする。
予約スケジューリング部435は、カーネルのうちで応用プログラムの特性に応じて周期的に実行されるカーネルに対しては、実行周期に該当するウィンドウのタイムスロットを予約し、残りのタイムスロットに他のカーネルの実行順序をスケジューリングする。予約スケジューリング部435は、予約されたタイムスロットでは予約カーネル以外の他のカーネルが実行されないようにスケジューリングする。
ウィンドウ変更部437は、ウィンドウ内で残ったタイムスロットがカーネルの推定された実行時間よりも小さい場合に、ウィンドウの大きさをカーネルの推定された実行時間だけ変更する。
ウィンドウ変更部437は、ウインドウの大きさの変更を要請したカーネルがコマンドキューに格納されたカーネルのうちで優先順位が最も大きく、要請された変更の大きさが予め設定されたウィンドウ変更範囲に含まれ、前記ウィンドウの大きさ変更要請が予め設定された回数の範囲からなる場合に、ウィンドウの大きさを変更する。
図5は、一般的なカーネルの実行方式を示す図である。図5を参照すれば、コマンドキュー(Command Queue)に入力された順にカーネルK1、K2、K3が実行される。すなわち、FIFO方式によってカーネルが実行される。さらに具体的に詳察すれば、カーネルK1はTk1中に実行され、デッドライン時間Dk1を満たす。カーネルK2はTk2まで実行され、デッドライン時間Dk2を満たす。ところが、カーネルK3は、Tk2以後、デッドライン時間Dk3まで残った時間がK3の必要な実行時間よりも短いため、デッドライン時間は満たされない。デッドライン時間は、応用プログラムがエラーなく実行されるために、対応するカーネルが実行されなければならない制限時間を意味する。デッドライン時間を満たすことができなければ、該当カーネルに対応する応用プログラムが実行されなかったり、実行にエラーが発生することがある。
図6は、一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。図6は、デバイスで実行されるカーネルがプリエンプティブ(preemption)可能な場合の一例を示す。
カーネルがプリエンプティブ可能な場合とは、カーネルの実行途中、先順位カーネルのために実行中であるカーネルを止めて先順位のカーネルを実行させることが可能な場合を意味する。デバイスは、コマンドキュー(Command queue)にプッシュ(push)されたカーネルのうちで、推定されたカーネルのデッドライン時間に合わせてカーネルが実行されるようにコマンドキューを再構成する。
図5と比較すれば、K3のデッドライン時間がK2のデッドライン時間よりも先に到来するため、デバイスはK3がK2よりも先に実行されるようにコマンドキューを再構成する。
また、デバイスは、現在実行中であるカーネルの推定された実行時間が完了した後に他のカーネルの実行が開始されても、デッドライン時間を満たすことができれば、現在実行中であるカーネルを対置しなくてもよい。
また、デバイスは、再構成によってもデッドライン時間を満たさない場合、優先順位を考慮して先順位のカーネルが先に実行されるようにコマンドキューを再構成する。
図7は、一実施形態に係るカーネル実行順序スケジューリング方法に使用されるウィンドウおよびタイムスロットを示す図である。
デバイスで実行されるカーネルがプリエンプティブ可能でない場合(non−preemptive)、次のような問題が発生することがある。
先ず、コマンドキュー(Command Queue)にプッシュされた低い優先順位のカーネルが、コマンドキューでディスパッチ(dispatch)されて実行が始まった状況で、以後にコマンドキューにプッシュされた高い優先順位のカーネルは、先に実行されたカーネルの実行が終了するまで実行を開始することができない。言い換えれば、デバイスは、実行中であるカーネルの実行を中止して先順位のカーネルを実行させることはできない。
デバイスは、カーネル別にデバイスを使用することができる時間に制限を置いてもよい。カーネル実行は、一定の大きさのウィンドウ(Window)単位で管理される。
ウィンドウ単位でカーネルの実行を保障することにより、応用プログラムのリアルタイムスケジューリング(realtime schedule)が保障される。ウィンドウは、リアルタイム性を保障する最小単位で使用される。ウィンドウの大きさを調節してプログラムの性能がチューニング(tuning)される。
ウィンドウは、一定の時間間隔に区分されたタイムスロット(Time−slot)で構成される。カーネルは、タイムスロットの割り当てを受けてデバイスで実行される。
カーネルは、デバイスから応用プログラムの優先順位を考慮し、ウィンドウ内で実行可能なタイムスロットが割り当てられてもよい。カーネルは、ウィンドウ内で割り当てられたタイムスロットだけデバイスで実行されてもよく、実行を開始する時点で現在のウィンドウを逸脱する場合、次のウィンドウで実行が開始される。
新たなウィンドウの開始時点で、該当カーネルよりも高い優先順位のカーネルがなければ、割り当てられたタイムスロットだけ実行される。
図8は、他の一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。図8を参照すれば、カーネルK1、K2、およびK3はそれぞれ、Tk1、Tk2、Tk3を基点にコマンドキューにプッシュされる。Tk1をTとすれば、K2はK1よりも2スロット後に、K3はK1よりも3スロット後にプッシュされる。
カーネルK1、K2、およびK3に割り当てられたタイムスロットはそれぞれ5スロット、6スロット、および4スロットである。T時点において、K1は現在ウィンドウ内で5スロットを使用して実行が終了するものと推定された。ここで、推定された5スロットは、図4の推定部410で推定されるカーネルの実行時間に対応する。K1は、コマンドキューでポップ(pop)されてデバイスで5スロットの間に実行される。
しかし、Tk2時間にコマンドキューにプッシュされたカーネルK2は、割り当てられたタイムスロットが6スロットであって、推定された実行時間が5スロットであるにもかかわらず、現在ウィンドウ内で(T+W)終了されないため実行されず、コマンドキューにそのまま留まるようになる。
K2に続いてコマンドキューにプッシュされたカーネルK3は、K1の実行終了時点であるT+5スロット時点において、現在ウィンドウ内で終了可能な3スロットの推定された実行時間を有するため、K1カーネルが終了する時点にK3が実行されるようにスケジューリングされる。K3に割り当てられたタイムスロットは4スロットであるため、K3は推定された実行時間3スロットの間に実行される。
新たなウィンドウが開始するT+W時点において、K2はコマンドキューでポップされてデバイスで実行される。したがって、ウィンドウ単位でK1、K2、およびK3の実行完了が保障される。
図9は、さらに他の一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。
カーネルの実行が周期的な特性を有した場合であれば、特定タイムスロットを予約するスケジューリング方式が利用される。応用プログラムの特性を考慮して、応用プログラム水準で実行周期(Cyclic)と予約しようとするスロット数が決定される。カーネル実行順序スケジューリング装置は、実行周期と予約しようとするスロット数に基づいて、予約されたスロットが予約カーネルのために空いているように他のカーネルをスケジューリングする。
図9を参照すれば、カーネルK3は、8スロットを周期として実行される。K3が初めて実行されるタイムスロットから8スロット単位で推定された実行時間3スロットの間にタイムスロットが予約される。カーネルK1およびK2は、残りのタイムスロットで実行されるようにスケジューリングされる。
図10は、さらに他の一実施形態に係るカーネル実行順序スケジューリング方式を示す図である。
ウィンドウの大きさは、カーネルの実行時間によって変更される。ウィンドウ拡張方式は、タイムスロットの活用率を高めることができる。
図10を参照すれば、カーネルK2の実行開始可能時点において、現在ウィンドウには3スロットだけが残っている状態であって、K2の終了予想時間である5スロットよりも小さいため、K2は次のウィンドウで実行を開始するようになる。
しかし、ウィンドウの拡張が可能であれば、デバイスのスケジューラは、ウィンドウの大きさを実行の完了に必要な2スロットだけ拡張することを要請されてもよく、デバイススケジューラで要請が受諾された場合、デバイスでカーネルの実行が開始される。
ウィンドウ拡張要請の受諾可否は、次の条件に基づいて決定される。
カーネル実行順序スケジューリング装置は、ウィンドウ拡張が要請された現在カーネルの優先順位よりも高いカーネルがコマンドキューにない場合、拡張スロットがウィンドウ拡張が許容されたスロットの範囲(MAX_WINDW_EXTENSION)内にある場合、ウィンドウ内で既に拡張が発生し、カーネルの実行時間が拡張されたウィンドウを超過して実行されたことがない場合にウィンドウを拡張する。
カーネル実行順序スケジューリング装置は、上述した条件を除いた要請に対しては、リアルタイム性保障のために要請を拒否する。最大許容が可能な拡張スロットの個数は、応用プログラムの特性とシステム性能を考慮して決定される。
図11は、一実施形態に係るカーネル実行順序スケジューリング方法のフローチャートである。
ステップS1110で、カーネル実行順序スケジューリング装置は、カーネルの最終有効プログレスインデックス、カーネルが実行される環境の影響を示す最終メモリプログレスインデックス、および最終カーネルプログレスインデックスに基づいてカーネルの実行時間を推定する。
有効プログレスインデックスは、システム環境から独立した特性を有するため、初めに推定された有効プログレスインデックスが最終有効プログレスインデックスとして使用される。
カーネル実行順序スケジューリング装置は、物理プログレスインデックス、有効プログレスインデックス、カーネルのメモリ効率、および実行するカーネルに対するメモリ効率の変化量に基づいて最終メモリプログレスインデックスを推定する。
カーネル実行順序スケジューリング装置は、物理プログレスインデックス、有効プログレスインデックス、カーネルに対するオペレーティングシステムの効率、および実行するカーネルに対するオペレーティングシステムの効率の変化量に基づいて最終カーネルプログレスインデックスを推定する。
ステップS1120で、カーネル実行順序スケジューリング装置は、カーネルの推定された実行時間およびカーネルの優先順位に基づいてカーネルの実行順序を決定する。
カーネル実行順序スケジューリング装置は、コマンドキュー(command queue)に入力された順序、カーネルの優先順位、およびカーネルの推定された実行時間に基づいて、カーネルの実行が一定の時間間隔のタイムスロットで構成されたウィンドウ内で完了するようにカーネルの実行順序を決定する。
上述した実施形態に係る方法は、多様なコンピュータ手段によって実行されるプログラム命令形態で実現され、コンピュータで読み取り可能な媒体に記録される。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含んでもよい。前記媒体に記録されるプログラム命令は、本発明のために特別に設計されて構成されたものであってもよく、コンピュータソフトウェア当業者に公示されて使用可能なものであってもよい。
上述したように、本発明は限定された実施形態と図面によって説明されたが、本発明が上述した実施形態に限定されることはなく、本発明が属する分野において通常の知識を有する者であれば、このような記載から多様な修正および変形が可能である。
したがって、本発明の範囲は、説明された実施形態に限定されて決定されてはならず、添付する特許請求の範囲だけでなく、この特許請求の範囲と均等なものなどによって定められなければならない。
310 デバイス
410 推定部
420 プログレスインデックス推定部
430 制御部
440 有効プログレスカウンタ
450 メモリプログレスカウンタ
460 カーネルプログレスカウンタ

Claims (21)

  1. 有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルそれぞれの実行時間を推定する推定部、および
    前記カーネルそれぞれの推定された実行時間および前記カーネルそれぞれの優先順位に基づいて前記カーネルの実行順序を決定する制御部、
    を含む、カーネル実行順序スケジューリング装置。
  2. 前記制御部は、
    前記カーネルのスケジューリング方式がプリエンプティブ(preemptive)方式である場合、前記カーネルのデッドライン(deadline)時間に基づいて前記カーネルの実行順序をスケジューリングするプリエンプティブスケジューリング部、
    を含む、請求項1に記載のカーネル実行順序スケジューリング装置。
  3. 前記制御部は、
    前記カーネルのスケジューリング方式がノンプリエンプティブ(non−preemptive)方式である場合、前記カーネルの推定された実行時間に基づいて所定サイズのウィンドウ単位で前記カーネルの実行順序をスケジューリングするノンプリエンプティブスケジューリング部、
    を含む、請求項1に記載のカーネル実行順序スケジューリング装置。
  4. 前記ノンプリエンプティブスケジューリング部は、
    コマンドキュー(command queue)でのカーネルの入力順序、前記カーネルそれぞれの優先順位、および前記カーネルそれぞれの推定された実行時間に基づいて、前記カーネルの実行が一定の時間間隔のタイムスロットで構成されたウィンドウ内で完了するように前記カーネルの実行順序をスケジューリングする、
    請求項3に記載のカーネル実行順序スケジューリング装置。
  5. 前記ノンプリエンプティブスケジューリング部は、
    前記カーネルの推定された実行時間に基づいて、前記ウィンドウ内で実行が完了されるカーネルが優先的に実行されるように前記カーネルの実行順序をスケジューリングする、
    請求項3または4に記載のカーネル実行順序スケジューリング装置。
  6. 前記制御部は、
    前記カーネルのうちで応用プログラムの特性に応じて周期的に実行されるカーネルに対しては、実行周期に該当するウィンドウのタイムスロットを予約し、残りのタイムスロットに他のカーネルの実行順序をスケジューリングする予約スケジューリング部、
    をさらに含む、請求項2または3に記載のカーネル実行順序スケジューリング装置。
  7. 前記制御部は、
    ウィンドウ内で残ったタイムスロットがカーネルの推定された実行時間よりも小さい場合に、前記ウィンドウの大きさを前記カーネルの推定された実行時間だけ変更するウィンドウ変更部、
    をさらに含む、請求項6に記載のカーネル実行順序スケジューリング装置。
  8. 前記ウィンドウ変更部は、
    前記ウィンドウの大きさの変更を要請したカーネルがコマンドキューに格納されたカーネルのうちで優先順位が最も大きく、要請された変更の大きさが予め設定されたウィンドウ変更範囲に含まれ、前記ウィンドウの大きさ変更要請が予め設定された回数の範囲からなる場合に、前記ウィンドウの大きさを変更する、
    請求項7に記載のカーネル実行順序スケジューリング装置。
  9. 前記推定部は、
    前記カーネルの最終有効プログレスインデックス、前記カーネルが実行される環境の影響を示す最終メモリプログレスインデックス、および最終カーネルプログレスインデックスに基づいて前記カーネルの実行時間を推定する、
    請求項1に記載のカーネル実行順序スケジューリング装置。
  10. 前記推定部は、
    応用プログラムを実行する過程で繰り返し行われるカーネルのヒストリーに基づいて、前記有効プログレスインデックス、メモリプログレスインデックス、およびカーネルプログレスインデックスを推定するプログレスインデックス推定部、
    を含む、請求項1に記載のカーネル実行順序スケジューリング装置。
  11. 前記推定部は、
    物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルのメモリ効率、および実行するカーネルに対するメモリ効率の変化量に基づいて最終メモリプログレスインデックスを推定するメモリプログレスインデックス推定部、および
    物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルに対するオペレーティングシステムの効率、および実行するカーネルに対する前記オペレーティングシステムの効率の変化量に基づいて最終カーネルプログレスインデックスを推定するカーネルプログレスインデックス推定部、
    をさらに含む、請求項10に記載のカーネル実行順序スケジューリング装置。
  12. 前記推定部は、
    単独で実行されるカーネルのメモリ効率および共同で実行されるカーネルのメモリ効率に基づいて前記メモリ効率の変化量を推定する第1変化量推定部、および
    単独で実行されるカーネルに対するオペレーティングシステムの効率および共同で実行されるカーネルに対するオペレーティングシステムの効率に基づいて前記オペレーティングシステムの効率の変化量を推定する第2変化量推定部、
    をさらに含む、請求項11に記載のカーネル実行順序スケジューリング装置。
  13. 前記推定部は、
    前記カーネルの非有効サイクルおよび前記メモリプログレスインデックスに基づいて前記メモリ効率を推定するメモリ効率推定部、および
    前記カーネルの非有効サイクルおよび前記カーネルプログレスインデックスに基づいて前記オペレーティングシステムの効率を推定するオペレーティングシステム効率推定部、
    をさらに含む、請求項10または11に記載のカーネル実行順序スケジューリング装置。
  14. 前記プログレスインデックス推定部は、
    前記カーネルを構成するデータの大きさおよび前記データの並列化レベルに基づいて初期有効プログレスインデックスと前記有効プログレスインデックス間の相関関数を計算する有効相関関数計算部、
    前記カーネルを構成するデータの大きさおよび前記データの並列化レベルに基づいて初期メモリプログレスインデックスと前記メモリプログレスインデックス間の相関関数を計算するメモリ相関関数計算部、および
    前記カーネルを構成するデータの大きさおよび前記データの並列化レベルに基づいて初期カーネルプログレスインデックスと前記カーネルプログレスインデックス間の相関関数を計算するカーネル相関関数計算部、
    を含む、請求項10に記載のカーネル実行順序スケジューリング装置。
  15. 有効実行方式によって実行される命令語の実行時間を累積して前記有効プログレスインデックスを生成する有効プログレスカウンタ(EPC:Effective Progress Counter)、
    前記カーネルが共有メモリにアクセスするのに消耗したサイクルを累積してメモリプログレスインデックス(MPI:Memory Progress Index)を生成するメモリプログレスカウンタ(MPC:Memory Progress Counter)、および
    システムカーネル実行に消耗したサイクルを累積してカーネルプログレスインデックス(KPI:Kernel Progress Index)を生成するカーネルプログレスカウンタ(KPC:Kernel Progress Counter)、
    をさらに含む、請求項1に記載のカーネル実行順序スケジューリング装置。
  16. プロセッサによって有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルそれぞれの実行時間を推定するステップ、および
    前記カーネルそれぞれの推定された実行時間および前記カーネルそれぞれの優先順位に基づいて前記カーネルの実行順序を決定するステップ、
    を含む、カーネル実行順序スケジューリング方法。
  17. 前記決定するステップは、
    コマンドキュー(command queue)へのカーネルの入力順序、前記カーネルそれぞれの優先順位、および前記カーネルそれぞれの推定された実行時間に基づいて、前記カーネルの実行が一定の時間間隔のタイムスロットで構成されたウィンドウ内で完了するように前記カーネルの実行順序を決定する、
    請求項16に記載のカーネル実行順序スケジューリング方法。
  18. 前記推定するステップは、
    前記カーネルの最終有効プログレスインデックス、前記カーネルが実行される環境の影響を示す最終メモリプログレスインデックス、および最終カーネルプログレスインデックスに基づいて前記カーネルの実行時間を推定する、
    請求項16に記載のカーネル実行順序スケジューリング方法。
  19. 前記推定するステップは、
    応用プログラムを実行する過程で繰り返し行われるカーネルのヒストリーに基づいて、前記有効プログレスインデックス、メモリプログレスインデックス、およびカーネルプログレスインデックスを推定するステップ、
    を含む、請求項16に記載のカーネル実行順序スケジューリング方法。
  20. 前記推定するステップは、
    物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルのメモリ効率、および実行するカーネルに対するメモリ効率の変化量に基づいて最終メモリプログレスインデックスを推定するステップ、および
    物理プログレスインデックス、前記有効プログレスインデックス、前記カーネルに対するオペレーティングシステムの効率、および実行するカーネルに対する前記オペレーティングシステムの効率の変化量に基づいて最終カーネルプログレスインデックスを推定するステップ、
    をさらに含む、請求項19に記載のカーネル実行順序スケジューリング方法。
  21. 複数の中央処理部を含むホストプロセッサ、
    複数のマイクロ実行部を含むコンピュータデバイス、
    カーネルそれぞれの有効プログレスインデックス(EPI:Effective Progress Index)に基づいてカーネルそれぞれの実行時間を推定する推定部、および
    前記カーネルそれぞれの推定された実行時間および前記カーネルそれぞれの優先順位に基づいて前記カーネルの実行順序を決定する制御部、
    を含み、
    前記ホストプロセッサは、前記制御部で決定された前記実行順序に基づいて前記コンピュータデバイスでカーネルを実行することを命令するカーネル実行命令を送信する、
    異機種コンピュータ環境システム。
JP2013020760A 2012-02-06 2013-02-05 カーネル実行順序スケジューリング方法および装置 Active JP6211272B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020120011723A KR101880452B1 (ko) 2012-02-06 2012-02-06 커널 수행 순서 스케줄링 방법 및 장치
KR10-2012-0011723 2012-02-06

Publications (2)

Publication Number Publication Date
JP2013161483A true JP2013161483A (ja) 2013-08-19
JP6211272B2 JP6211272B2 (ja) 2017-10-11

Family

ID=48904058

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013020760A Active JP6211272B2 (ja) 2012-02-06 2013-02-05 カーネル実行順序スケジューリング方法および装置

Country Status (3)

Country Link
US (1) US9244733B2 (ja)
JP (1) JP6211272B2 (ja)
KR (1) KR101880452B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160103989A (ko) * 2013-11-29 2016-09-02 더 리젠츠 오브 더 유니버시티 오브 미시간 실행 메카니즘간의 전환 제어

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
GB2519080B (en) * 2013-10-08 2021-04-14 Arm Ip Ltd Scheduling function calls
GB2545508B (en) 2015-12-18 2019-04-10 Imagination Tech Ltd Controlling operation of a GPU
GB2546343A (en) 2016-01-15 2017-07-19 Stmicroelectronics (Grenoble2) Sas Apparatus and methods implementing dispatch mechanisms for offloading executable functions
US10255106B2 (en) 2016-01-27 2019-04-09 Qualcomm Incorporated Prediction-based power management strategy for GPU compute workloads
US10333987B2 (en) * 2017-05-18 2019-06-25 Bank Of America Corporation Security enhancement tool for a target computer system operating within a complex web of interconnected systems
CN108196949B (zh) * 2017-12-28 2021-05-04 华润电力技术研究院有限公司 一种测风数据处理方法及相关设备
KR102285755B1 (ko) * 2019-11-22 2021-08-05 주식회사 마크애니 인공지능을 활용한 지리 정보 콘텐츠에 대한 무결성 검증 시스템, 무결성 검증 방법, 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265775A (ja) * 1992-03-19 1993-10-15 Hitachi Ltd ジョブ実行予測制御方法およびジョブ実行状況表示方法
JPH1185541A (ja) * 1997-09-12 1999-03-30 Nec Corp バッチジョブ処理時間見積装置
JP2011100338A (ja) * 2009-11-06 2011-05-19 Hitachi Automotive Systems Ltd 車載用マルチアプリ実行装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003091424A (ja) * 2001-09-18 2003-03-28 Matsushita Electric Ind Co Ltd 分散処理システムおよびジョブ分散処理方法
US7716668B2 (en) * 2002-12-16 2010-05-11 Brooktree Broadband Holding, Inc. System and method for scheduling thread execution
JP3889726B2 (ja) * 2003-06-27 2007-03-07 株式会社東芝 スケジューリング方法および情報処理システム
GB0407384D0 (en) 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
DE102004054571B4 (de) 2004-11-11 2007-01-25 Sysgo Ag Verfahren zur Verteilung von Rechenzeit in einem Rechnersystem
US8387052B2 (en) * 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US8024739B2 (en) * 2007-01-09 2011-09-20 International Business Machines Corporation System for indicating and scheduling additional execution time based on determining whether the execution unit has yielded previously within a predetermined period of time
US9244732B2 (en) * 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
FR2937439B1 (fr) 2008-10-17 2012-04-20 Commissariat Energie Atomique Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes.
JP5676845B2 (ja) 2008-11-06 2015-02-25 イグジット−キューブ,インク. コンピュータシステム、カーネルスケジューリングシステム、リソース割当方法及びプロセス実行共有方法
JP2010160600A (ja) 2009-01-07 2010-07-22 Yamatake Corp 情報処理装置、スケジューラ、及びスケジューリング方法
KR101032873B1 (ko) 2009-07-14 2011-05-06 한양대학교 산학협력단 시스템 콜을 이용한 프로세서 제어 장치 및 프로세서 성능 측정 방법
KR101088563B1 (ko) 2009-12-24 2011-12-05 포항공과대학교 산학협력단 멀티코어프로세서 제어방법, 멀티코어프로세서 제어장치, 멀티코어프로세서 및 멀티코어프로세서 제어방법이 기록된 기록매체
KR20110116553A (ko) * 2010-04-19 2011-10-26 삼성전자주식회사 미디어 프로세싱 애플리케이션 실행 장치 및 방법
KR101635816B1 (ko) * 2010-07-02 2016-07-04 삼성전자주식회사 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265775A (ja) * 1992-03-19 1993-10-15 Hitachi Ltd ジョブ実行予測制御方法およびジョブ実行状況表示方法
JPH1185541A (ja) * 1997-09-12 1999-03-30 Nec Corp バッチジョブ処理時間見積装置
JP2011100338A (ja) * 2009-11-06 2011-05-19 Hitachi Automotive Systems Ltd 車載用マルチアプリ実行装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160103989A (ko) * 2013-11-29 2016-09-02 더 리젠츠 오브 더 유니버시티 오브 미시간 실행 메카니즘간의 전환 제어
KR102279352B1 (ko) 2013-11-29 2021-07-20 더 리젠츠 오브 더 유니버시티 오브 미시간 실행 메카니즘간의 전환 제어

Also Published As

Publication number Publication date
JP6211272B2 (ja) 2017-10-11
KR101880452B1 (ko) 2018-08-17
KR20130091368A (ko) 2013-08-19
US20130205299A1 (en) 2013-08-08
US9244733B2 (en) 2016-01-26

Similar Documents

Publication Publication Date Title
JP6211272B2 (ja) カーネル実行順序スケジューリング方法および装置
Schranzhofer et al. Timing analysis for resource access interference on adaptive resource arbiters
US20130290972A1 (en) Workload manager for mapreduce environments
US10528389B2 (en) Method and apparatus for executing real-time tasks
US20140019987A1 (en) Scheduling map and reduce tasks for jobs execution according to performance goals
US20120137295A1 (en) Method for displaying cpu utilization in a multi-processing system
US9304814B2 (en) Determine variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time
CN111258745B (zh) 一种任务处理方法及设备
CN111176817B (zh) 一种多核处理器上基于划分调度的dag实时任务间的干扰分析方法
Georgiou et al. A scheduler-level incentive mechanism for energy efficiency in HPC
US8898675B2 (en) Method of calculating processor utilization rate in SMT processor
Zhu et al. Response time analysis of hierarchical scheduling: The synchronized deferrable servers approach
Kalogeraki et al. Dynamic scheduling for soft real-time distributed object systems
Moulik RESET: A real-time scheduler for energy and temperature aware heterogeneous multi-core systems
Li et al. Federated scheduling for stochastic parallel real-time tasks
Wasly et al. Bundled scheduling of parallel real-time tasks
Ye et al. Astraea: A fair deep learning scheduler for multi-tenant gpu clusters
Babu et al. Energy efficient scheduling algorithm for cloud computing systems based on prediction model
Tang et al. Toward balanced and sustainable job scheduling for production supercomputers
Gu et al. Improving OCBP-based scheduling for mixed-criticality sporadic task systems
CN115309507B (zh) 一种cpu资源占用率的计算方法、装置、设备及介质
Zabolotnyi et al. Profiling-based task scheduling for factory-worker applications in infrastructure-as-a-service clouds
KR20130039479A (ko) 스레드 프로그레스 트래킹 방법 및 장치
Herrtwich An introduction to real-time scheduling
Kakkar Scheduling techniques for operating systems for medical and IoT devices: A review

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170614

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170905

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170913

R150 Certificate of patent or registration of utility model

Ref document number: 6211272

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250