JP6973856B2 - 情報処理装置、実行方法及びプログラムの修正方法 - Google Patents
情報処理装置、実行方法及びプログラムの修正方法 Download PDFInfo
- Publication number
- JP6973856B2 JP6973856B2 JP2018219671A JP2018219671A JP6973856B2 JP 6973856 B2 JP6973856 B2 JP 6973856B2 JP 2018219671 A JP2018219671 A JP 2018219671A JP 2018219671 A JP2018219671 A JP 2018219671A JP 6973856 B2 JP6973856 B2 JP 6973856B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- program
- switching
- global
- storage area
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
以下、本発明の一実施形態におけるSMP非対応のプログラムをSMP環境で動作させるための方法について、図面を参照して説明する。
図1は、本発明の一実施形態による演算装置の一例を示す図である。
演算装置1は、プロセッサ(Processor11)とメモリ(DDR RAM12)とを備えるコンピュータである。このほかにも演算装置1は、OS(operating system)等を記憶する図示しない補助記憶装置、入出力インタフェース、通信インタフェースなどを備えていてもよい。
Processor11は、Processor Core111と、内部バス112と、Memory Controller113とを備える。Processor Core111と、Memory Controller113とは、内部バス112で接続されている。
Processor Core111は、4個のプロセッサコア(Processor Core0〜Processor Core3)を含む。プロセッサコアの数は4個に限定されず、2個以上であれば良い。
DDR RAM12は、OS(operating system)を含むプログラム等を格納している。DDR RAM12は、Processor11のMemory Controller113と接続している。Processor Core111は、Memory Controller113を介してDDR RAM12にアクセスすることができる。Processor Core111は、DDR RAM12からプログラムを読み出し実行することで演算処理を行う。
まず、SMP非対応プログラムに対して、グローバル変数global_numを、並列に動作し得るプロセッサコアと同数の要素を持つ配列として定義する。図1の演算装置1であれば、プロセッサコア数が4なので、global_num[4]として宣言する(図7のソースコードの1行目)。そして、プロセッサコアごとに配列の要素を割り当てる。例えば、図2に示すように、global_num[0]をプロセッサコア0、global_num[1]をプロセッサコア1、global_num[2]をプロセッサコア2、global_num[3]をプロセッサコア3にそれぞれ割り当てる。つまり、プロセッサコア0が実行するタスクがglobal_numにアクセスするときは、global_num[0]にアクセスし、global_num[0]に格納されたTask_Value0を読み出したり、更新したりする。他のプロセッサコア1〜3についても同様である。なお、グローバル変数の配列の要素数は、同時に実行可能状態となるタスクの数ではなく、プロセッサコアの数とする。これは、同時に必要となるグローバル変数の数はコア数に依存するためである。
図6にタスク固有のglobal_numの値を保存するための変数格納エリアの一例を示す。
(B1)OSにおいて、例えば、配列TASK_VAL[MAX_TASK]を定義する。タスク固有に扱うグローバル変数は、あらかじめSMP非対応ソースコードを解析して抽出しておく。また、配列TASK_VALを定義する際に指定する要素数は、OSが生成しうるタスク数の上限値(同時に実行可能状態となるタスク数の上限値)であるMAX_TASKとする。これにより、全てのタスクに対して、個別にglobal_numの値を保存するメモリ領域を確保することができる。
まず、グローバル変数global_numを、コア数に応じた要素を有する配列として宣言する。また、func1、func2内で、実行中のプロセッサコアに応じたglobal_num[core_num]にアクセスするように変更する。
また、main関数では、一例として、生成できるタスクの上限値MAX_TASKと同数のタスクを生成するようにする(7−1)。各タスクのTASK_IDは、TASK0、TASK1、TASK2、・・・、TASK[MAX_TASK−1]となる。さらに、各タスクが関数test_taskを実行するよう指定し、タスクを起動する(7−2)。これにより、各タスク(TASK_ID=TASK0〜TASK[MAX_TASK−1])が並列に実行可能な状態となる。実際には、プロセッサコア数が4でMAX_TASKが4以上の場合、最大で4個のタスクが並列に動作する状態となる。
図8は、一般的なタスク切り替え動作の一例を示すフローチャートである。
比較の為、マルチスレッド対応のOSによる一般的なタスク切り替え処理を説明する。
例えば、プロセッサコア0にて、TASK3が実行されている状態であるとする(ステップS11)。ここで割り込みが発生し、プロセッサコア0が実行するタスクを、TASK3からTASK7へ切り替えるとする。OSは、TASK3の実行時におけるレジスタの情報をメモリの所定の領域に退避し、TASK7に係る実行情報をメモリの所定の領域から読み出してレジスタへ設定する等してタスクの切り替え処理を行う(ステップS12)。そして、プロセッサコア0がTASK7を実行する(ステップS13)。
図9は、本発明の一実施形態によるタスク切り替え動作の一例を示すフローチャートである。
前提として、タスクが実行するプログラムは、SMP対応済みであるとする。例えば、グローバル変数は、プロセッサコア数分の要素を持つ配列として定義され、また、実行中のタスク固有のグローバル変数の値は、配列の対応する要素(プロセッサコアの番号)へ格納するように修正されている。また、OSは、図6に例示するMAX_TASK分の変数格納エリア(TASK_VAL[MAX_TASK])を備え、タスク切り替えとともにタスク固有の値を変数格納エリアに対して退避、復元する機能を備えている。また、OSの起動時にMAX_TASK分の変数格納エリアがメモリ(DDR RAM12)に確保されているとする。
図13に示すように情報処理装置100は、少なくとも複数のプロセッサ101と、記憶部102を備える。
複数のプロセッサ101は、SMP構成のプロセッサである。上記の実施形態中のプロセッサコア0〜3は、複数のプロセッサ101の一例である。
記憶部102は、OS103と、プログラム104と、を記憶する。複数のプロセッサ101は、記憶部102からOS103を読み出して実行する。複数のプロセッサ101は、記憶部102からプログラム104を読み出して実行する。
OS103は、マルチタスクおよびSMP環境に対応している。さらにOS103は、グローバル変数の値を記憶する固有値格納エリアを同時に実行可能状態となるタスク数の上限値分だけ備える。そして、OS103は、プログラム104を実行するタスクが切り替わるたびに切り替えに係るタスクに対応する固有値格納エリアと、当該タスクを実行する複数のプロセッサ101のうちの1つに対応するグローバル変数用の領域(プログラム104からアクセス可能な領域)との間で、プログラム104が使用するグローバル変数の値の退避、復元を行う機能を備える。
プログラム104は、グローバル変数を使用するプログラムであって、複数のプロセッサ101によって実行される。プログラム104は、グローバル変数について、複数のプロセッサ101に含まれるプロセッサと同数のデータ領域を確保し、グローバル変数にアクセスする場合、複数のデータ領域のうち当該プログラムのタスクを実行する1つのプロセッサに割り当てられたデータ領域にアクセスする処理を含む。
コンピュータ900は、CPU901、主記憶装置902、補助記憶装置903、入出力インタフェース904、通信インタフェース905を備える。CPU901は、複数のプロセッサコアを備えている。また、CPU901は、複数のCPUを備えたものとして構成されていてもよい。CPU901はSMP構成のプロセッサである。上述の演算装置1のProcessor11とDDR RAM12は、それぞれCPU901と主記憶装置902に相当する。情報処理装置100は、コンピュータ900に相当する。複数のプロセッサ101はCPU901に、記憶部102は補助記憶装置903に相当する。そして、SMP対応済みのプログラムやOSは、プログラムの形式で補助記憶装置903に記憶されている。CPU901は、プログラムを補助記憶装置903から読み出して主記憶装置902に展開し、当該プログラムに従って上記処理を実行する。また、CPU901は、プログラムに従って、記憶領域を主記憶装置902に確保する。CPU901は、プログラムに従って、処理中のデータを記憶する記憶領域を補助記憶装置903に確保する。
11・・・Processor
12・・・DDR RAM
111・・・Processor Core
112・・・内部バス
113・・・MemoryController
100・・・情報処理装置
101・・・複数のプロセッサ
102・・・記憶部
103・・・OS
104・・・プログラム
900・・・コンピュータ
901・・・CPU
902・・・主記憶装置
903・・・補助記憶装置
904・・・入出力インタフェース
905・・・通信インタフェース
Claims (5)
- SMP(Symmetric Multi-Processing)構成の複数のプロセッサと、
グローバル変数を使用するプログラムであって、前記グローバル変数について前記複数のプロセッサのコア数の合計と同数のデータ領域を、前記グローバル変数の格納領域として確保し、前記グローバル変数にアクセスする場合、前記データ領域のうち当該プログラムのタスクを実行する前記プロセッサのコアの識別番号を取得し、前記識別番号に対応する前記データ領域にアクセスする処理を含むプログラムと、前記プログラムを前記プロセッサのコアの何れかに割り当てて実行するオペレーティングシステムであって、前記グローバル変数の値を保存する固有値格納エリアを同時に実行可能状態となるタスク数の上限値分メモリ上に確保する処理と、前記プログラムを実行するタスクが切り替わるたびに、実行を終了する切替前の前記タスクの実行状態をレジスタから前記メモリに退避し、実行を開始する切替後の前記タスクの実行状態を前記メモリから前記レジスタへ復元するタスク切り替え処理に連動して、切替前の前記タスクを実行していた前記コアの識別番号に対応する前記データ領域に格納されていた前記グローバル変数の値を、切替前の前記タスクに対応する前記固有値格納エリアへ退避し、切替後の前記タスクに対応する前記固有値格納エリアに格納されている前記グローバル変数の値を、切替後の前記タスクを実行する前記コアの識別番号に対応する前記データ領域へ復元する処理と、を行うオペレーティングシステムと、を記憶する記憶部と、
を備える情報処理装置。 - 前記プログラムは、前記グローバル変数を使用するSMPに対応していない修正前プログラムに対して、前記グローバル変数について前記コア数の合計と同数のデータ領域を、前記グローバル変数の格納領域として確保し、前記グローバル変数にアクセスする場合、前記データ領域のうち当該プログラムのタスクを実行する前記プロセッサの前記コアの識別番号を取得し、前記識別番号に対応する前記データ領域にアクセスする処理を追加したプログラムである、
請求項1に記載の情報処理装置。 - 前記オペレーティングシステムは、SMPに対応したオペレーティングシステムに対し、前記グローバル変数の値を保存する固有値格納エリアを同時に実行可能状態となるタスク数の上限値分前記メモリ上に確保する処理と、前記プログラムを実行するタスクが切り替わるたびに、実行を終了する切替前の前記タスクの実行状態を前記レジスタから前記メモリに退避し、実行を開始する切替後の前記タスクの実行状態を前記メモリから前記レジスタへ復元するタスク切り替え処理に連動して、切替前の前記タスクを実行していた前記コアの識別番号に対応する前記データ領域に格納されていた前記グローバル変数の値を、切替前の前記タスクに対応する前記固有値格納エリアへ退避し、切替後の前記タスクに対応する前記固有値格納エリアに格納されている前記グローバル変数の値を、切替後の前記タスクを実行する前記コアの識別番号に対応する前記データ領域へ復元する処理と、を追加したオペレーティングシステムである、
請求項1または請求項2に記載の情報処理装置。 - SMP構成の複数のプロセッサによるグローバル変数を利用するプログラムの実行方法であって、
前記プログラムが実行する、
前記グローバル変数について前記複数のプロセッサのコア数の合計と同数のデータ領域が前記プログラムからアクセス可能な前記グローバル変数の格納領域として確保され、実行中の前記プログラムが前記グローバル変数にアクセスする場合、前記データ領域のうち当該プログラムのタスクを実行する前記プロセッサのコアの識別番号を取得し、前記識別番号に対応する前記データ領域にアクセスする処理と、
前記プログラムを前記プロセッサのコアの何れかに割り当てて実行するオペレーティングシステムが実行する、
前記グローバル変数の値を保存する固有値格納エリアを同時に実行可能状態となるタスク数の上限値分メモリ上に確保する処理と、前記プログラムを実行するタスクが切り替わるたびに、実行を終了する切替前の前記タスクの実行状態をレジスタから前記メモリに退避し、実行を開始する切替後の前記タスクの実行状態を前記メモリから前記レジスタへ復元するタスク切り替え処理に連動して、切替前の前記タスクを実行していた前記コアの識別番号に対応する前記データ領域に格納されていた前記グローバル変数の値を、切替前の前記タスクに対応する前記固有値格納エリアへ退避し、切替後の前記タスクに対応する前記固有値格納エリアに格納されている前記グローバル変数の値を、切替後の前記タスクを実行する前記コアの識別番号に対応する前記データ領域へ復元する処理と、
を含む実行方法。 - SMP非対応のプログラムをSMP対応のプログラムに修正する修正方法であって、
コンピュータが、
前記プログラムのグローバル変数について、SMP構成で動作するプロセッサのコア数の合計と同数のデータ領域を前記グローバル変数の格納領域として確保するよう修正するステップと、
前記グローバル変数にアクセスする処理を、前記データ領域のうち当該プログラムのタスクを実行する前記プロセッサのコアの識別番号を取得し、前記識別番号に対応する前記データ領域にアクセスする処理に前記プログラムを変更するステップと、
前記グローバル変数の値を保存する固有値格納エリアを同時に実行可能状態となるタスク数の上限値分メモリ上に確保するよう前記プログラムを実行するオペレーティングシステムを修正するステップと、
前記プログラムを実行するタスクが切り替わるたびに、実行を終了する切替前の前記タスクの実行状態をレジスタから前記メモリに退避し、実行を開始する切替後の前記タスクの実行状態を前記メモリから前記レジスタへ復元するタスク切り替え処理に連動して、切替前の前記タスクを実行していた前記コアの識別番号に対応する前記データ領域に格納されていた前記グローバル変数の値を、切替前の前記タスクに対応する前記固有値格納エリアへ退避し、切替後の前記タスクに対応する前記固有値格納エリアに格納されている前記グローバル変数の値を、切替後の前記タスクを実行する前記コアの識別番号に対応する前記データ領域へ復元するよう前記オペレーティングシステムを修正するステップと、
を有するプログラムの修正方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018219671A JP6973856B2 (ja) | 2018-11-22 | 2018-11-22 | 情報処理装置、実行方法及びプログラムの修正方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018219671A JP6973856B2 (ja) | 2018-11-22 | 2018-11-22 | 情報処理装置、実行方法及びプログラムの修正方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020086871A JP2020086871A (ja) | 2020-06-04 |
JP6973856B2 true JP6973856B2 (ja) | 2021-12-01 |
Family
ID=70909975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018219671A Active JP6973856B2 (ja) | 2018-11-22 | 2018-11-22 | 情報処理装置、実行方法及びプログラムの修正方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6973856B2 (ja) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3028821B2 (ja) * | 1989-09-04 | 2000-04-04 | 株式会社日立製作所 | 並列化コンパイル方法 |
JP3539984B2 (ja) * | 1991-10-21 | 2004-07-07 | 株式会社東芝 | プロセッサ |
JPH09218795A (ja) * | 1996-02-14 | 1997-08-19 | Canon Inc | 並列プログラム処理方法及びその装置 |
JP2004157636A (ja) * | 2002-11-05 | 2004-06-03 | Renesas Technology Corp | データ処理装置 |
JP2017123190A (ja) * | 2017-03-08 | 2017-07-13 | ルネサスエレクトロニクス株式会社 | タスク処理装置 |
-
2018
- 2018-11-22 JP JP2018219671A patent/JP6973856B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2020086871A (ja) | 2020-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10282195B2 (en) | Generating and applying patches to computer program code concurrently with its execution | |
US10007546B2 (en) | Operating-system exchanges using memory-pointer transfers | |
JP5161696B2 (ja) | 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム | |
US8793528B2 (en) | Dynamic hypervisor relocation | |
US20120254865A1 (en) | Hypervisor replacing method and information processing device | |
US8079035B2 (en) | Data structure and management techniques for local user-level thread data | |
JP4873423B2 (ja) | 仮想化プログラム、シミュレーション装置、仮想化方法 | |
TW200935246A (en) | Optimizing execution of single-threaded programs on a multiprocessor managed by compilation | |
JP2017037370A (ja) | 計算機、プロセス制御方法およびプロセス制御プログラム | |
WO2013088818A1 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
JP2013225208A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JPH07311740A (ja) | コンピュータ | |
JP5035227B2 (ja) | 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム | |
CN116762068A (zh) | 地址映射感知任务分配机制 | |
JP6973856B2 (ja) | 情報処理装置、実行方法及びプログラムの修正方法 | |
JPWO2008114415A1 (ja) | マルチプロセッシングシステム | |
US7890740B2 (en) | Processor comprising a first and a second mode of operation and method of operating the same | |
JP2010198398A (ja) | 計算機装置および制御方法 | |
US10691435B1 (en) | Processor register assignment for binary translation | |
JP6691294B2 (ja) | 情報処理装置、ダイナミックリンクプログラムおよびプログラム再開方法 | |
US20240311152A1 (en) | Translation lookaside buffer maintenance method and related device | |
Russinovich | Inside windows server 2008 kernel changes | |
JP2552738B2 (ja) | データ処理装置 | |
JP2019179414A (ja) | 情報処理装置 | |
JP2009223841A (ja) | 命令ログ取得プログラム及び仮想計算機システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200306 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210318 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210323 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210518 |
|
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: 20211005 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211028 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6973856 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |