JPWO2018150524A1 - プロセッサシステム及びマルチプロセッサシステム - Google Patents

プロセッサシステム及びマルチプロセッサシステム Download PDF

Info

Publication number
JPWO2018150524A1
JPWO2018150524A1 JP2019500115A JP2019500115A JPWO2018150524A1 JP WO2018150524 A1 JPWO2018150524 A1 JP WO2018150524A1 JP 2019500115 A JP2019500115 A JP 2019500115A JP 2019500115 A JP2019500115 A JP 2019500115A JP WO2018150524 A1 JPWO2018150524 A1 JP WO2018150524A1
Authority
JP
Japan
Prior art keywords
flag
task
unit
flag information
task execution
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.)
Pending
Application number
JP2019500115A
Other languages
English (en)
Inventor
俊明 北村
俊明 北村
貴司 持山
貴司 持山
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.)
OSCAR TECHNOLOGY CORPORATION
Original Assignee
OSCAR TECHNOLOGY CORPORATION
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 OSCAR TECHNOLOGY CORPORATION filed Critical OSCAR TECHNOLOGY CORPORATION
Publication of JPWO2018150524A1 publication Critical patent/JPWO2018150524A1/ja
Pending legal-status Critical Current

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供する。プロセッサシステム200は、一のタスク実行部220と、他のタスク実行部250と、制御部232及びフラグ領域234とを備えるフラグ記憶部230を備える。一のタスク実行部220は、フラグ領域234に記憶されたフラグ情報が所定の条件を充足しない場合、制御部232にフラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留する。制御部232は、他のタスク実行部250によるフラグ情報へのアクセスの有無を監視し、フラグ情報へのアクセスがされた場合、一のタスク実行部220に対し、フラグ情報へのアクセスの保留を解除させるための指示を出力する。

Description

本発明は、プロセッサシステム及びマルチプロセッサシステムに関する。
従来、プログラムに含まれるタスクに従って動作することにより、他のタスク実行部とは独立して動作するタスク実行部を備えたプロセッサシステムが知られている。
例えば、特許文献1には、並列化コンパイラによって作成されたデータ転送ユニット用プログラムに含まれるタスクに従って動作するタスク実行部としてのデータ転送ユニットを備えたプロセッサシステムが記載されている。
特許文献1に記載されたこのデータ転送ユニットの動作の一態様を簡単に説明する。まず、このデータ転送ユニットは、起動されるとデータ転送ユニット用プログラムを読み込む。このデータ転送ユニットは、データ転送ユニット用プログラムに含まれるタスクに従って、前記プロセッサシステムの記憶部に記憶された第1のフラグ変数領域を繰り返し確認する。データ転送ユニットは、第1のフラグ変数領域にフラグが書き込まれたことを確認すると、前記プロセッサシステムの記憶部に記憶された所定のデータの転送を開始する。
この特許文献1のデータ転送ユニットは、データ転送ユニット用プログラムに含まれるタスクに従って動作するので、プロセッサシステムに備えられた他のタスク実行部であるプロセッサ又はアクセラレータとは独立して動作することができる。この結果、他のタスク実行部のデータの処理と、データの転送を並列に実行することができるので、処理の高速化を図ることができる。
各タスク実行部が独立して動作していても、前述したフラグ情報の確認により、書き込まれたフラグにより示される他のタスク実行部のデータ書き込み等の完了よりも後に、データ転送ユニットのデータ転送等の開始をさせることができるので、プログラム設計者の意図に反したデータの処理または転送が防止される。
国際公開公報第2013/06587号
しかし、フラグチェックにあたって、各タスク実行部が頻繁にフラグチェックを行うと、フラグチェックに係るオーバーヘッドが大きくなり、プロセッサシステム全体の処理速度が低下したり、消費電力が増大したりする可能性もある。
一方、フラグチェックのオーバーヘッドの増大を避けるため、各タスク実行部によるフラグチェックの間隔を長くすると、フラグが更新されたタイミングとフラグチェックのタイミングとにずれが生じることにより、フラグチェックに後続するタスクの実行までに不要な待機時間が生じる可能性もある。
このような問題に鑑み、本発明は、フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供することを目的とする。
本発明のプロセッサシステムは、
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部とを備え、
前記複数のタスク実行部のうちの一のタスク実行部は、
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記複数のタスク実行部のうちの他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成されていることを特徴とする。
当該構成のプロセッサシステムによれば、一のタスク実行部により、プログラムに含まれるフラグチェックタスクに従って、フラグ記憶部のフラグ領域に記憶されたフラグ情報が所定の条件を充足する否かが判定される。
フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、当該一のタスク実行部により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。
これにより、前記フラグチェックタスクに後続するタスクの実行開始タイミングを調節することができる。
また、当該一のタスク実行部は、前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留する。
そして、フラグ記憶部の制御部は、前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、他のタスク実行部による前記フラグ情報へのアクセスの有無を監視する。
そして、フラグ記憶部の制御部は、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力する。
フラグ情報にアクセスされていなければ、フラグ情報が更新されることはない。このため、フラグ情報へのアクセスがあったことを条件としてフラグ情報へのアクセスの保留を解除させることによりフラグ情報が更新されていない間のフラグ情報へのアクセスを回避できる。このため、フラグ領域を頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報へのアクセスがされた場合、換言すれば、フラグ情報が変更されたりすることにより、フラグ情報が所定の条件を充足する可能性がある場合に一のタスク実行部のフラグ情報へのアクセスの保留が解除されるので、フラグチェックに後続するタスクの実行までの待機時間を短縮することができる。
本発明のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることが好ましい。
当該構成のプロセッサシステムによれば、前記フラグ情報へのアクセスを保留する際に前記電力供給部から当該一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。
本発明のプロセッサシステムにおいて、
前記一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタを備え、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることが好ましい。
当該構成のプロセッサシステムによれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合、プログラムカウンタを更新せずに前記割込み処理が実行される。そして、その後、前記プログラムカウンタを参照して次に実行すべきタスクが認識される。
ここで、フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後にプログラムカウンタが更新されるから、フラグ情報へのアクセスの保留中には、プログラムカウンタが更新されていないこととなる。すなわち、プログラムカウンタに示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっているから、割込み処理の実行完了後、割込み処理においてプログラムカウンタが更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。
本発明のプロセッサシステムにおいて、
前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデータの転送を実行するデータ転送ユニットであり、
前記他のタスク実行部は、前記データ領域に記憶されたデータを読み込んで、当該読み込まれたデータに基づいてプログラムに従って演算処理を実行し、前記演算処理結果を前記データ領域に記憶させ、前記フラグ情報の値を更新する演算ユニットであることが好ましい。
本発明のマルチプロセッサシステムは、
本発明のプロセッサシステムを複数備え、
前記複数のプロセッサシステムのそれぞれからアクセス可能な共有メモリを備えることが好ましい。
マルチプロセッサシステムの構成図。 データ転送処理のフローチャート。 転送完了待ちタスクのフローチャート。 フラグチェックタスクのフローチャート。 アドレスチェックのフローチャート。
図1〜図5を参照して、本発明の一実施形態を説明する。
(マルチプロセッサシステムの構成)
マルチプロセッサシステム1は、図1に示されるように、共有メモリ100と、複数のアクセラレータ200と、ホストプロセッサ300と、電力供給部400と、これらの各構成要素を互いに結合する相互接続網500とを備える。
共有メモリ100は、RAM(Random−Access Memory)及びI/O回路により構成されている。共有メモリ100は、各アクセラレータ200及びホストプロセッサ300からアクセス可能に構成されている。共有メモリ100は、例えば、各アクセラレータ200又はホストプロセッサ300の内部に設けられていてもよい。
共有メモリ100には、各構成要素がプログラムを実行する際に参照されるデータが格納される。これらのデータは、各構成要素によって書き込またデータであってもよいし、不図示のHDD(Hard Disk Drive)、ROM(Read−Only Memory)等の記憶装置から読み込またデータであってもよいし、ネットワークを介して外部からダウンロードされたデータであってもよい。
各アクセラレータ200は、データ転送プログラム格納メモリ210と、データ転送ユニット220と、ローカルメモリ230と、制御レジスタ240と、ベクトル演算ユニット250とを備える。本実施形態では、各アクセラレータ200が、本発明の「プロセッサシステム」の一例に相当する。一又は複数のアクセラレータがチップ上に構成され、マルチプロセッサシステム1の他の構成要素から分離できるように構成されていてもよい。
データ転送プログラム格納メモリ210は、RAM及びI/O回路により構成され、プログラム領域212と、プログラムカウンタ格納領域214とを備える。
プログラム領域212は、データ転送ユニット用プログラムに含まれる各タスクを格納している。本実施形態では、各タスクは一の機械命令である。これに代えてまたは加えて、タスクが複数の機械命令により構成されてもよい。
プログラムカウンタ格納領域214は、データ転送ユニット220が割り込み処理を実行する場合に、データ転送ユニット220のプログラムカウンタ222に格納された値を退避するための領域である。
データ転送ユニット220は、プログラムカウンタ222を備える。データ転送ユニット220は、プログラムカウンタ222を参照し、次に実行すべきタスクのアドレスを認識し、当該アドレスを用いてプログラム領域212に格納されたタスクを参照し、当該タスクを実行するように構成されている。本実施形態では、このデータ転送ユニット220を本発明の「一のタスク実行部」の一例として説明する。
プログラムカウンタ222は、RAM及びI/O回路により構成されている。プログラムカウンタ222は、データ転送ユニット220が次に実行すべきタスクのプログラム領域212上のアドレスを記憶する。プログラムカウンタ222はデータ転送ユニット220の実行中のタスクの終了を検知すると、現在記憶しているタスクの長さから次に実行すべきタスクのアドレスを算出し、当該アドレスを記憶する。
また、データ転送ユニット220は、第1クロック周波数、第1クロック周波数よりも小さい第2クロック周波数、ゼロ(停止)のいずれかのクロック周波数を制御レジスタ240に記憶させることができるように構成されている。データ転送ユニット220は、起動直後において、第1クロック周波数で動作している。
なお、本実施形態において、一の構成要素が情報を「認識する」とは、一の構成要素がメモリに記憶された情報を読み取ること、一の構成要素が他の構成要素から当該情報を受信すること、一の構成要素が他の構成要素から受信した信号を対象として所定の演算処理(計算処理または探索処理など)を実行することにより当該情報を導出すること、一の構成要素が他の構成要素による演算処理結果としての当該情報を当該他の構成要素から受信すること、一の構成要素が当該受信信号にしたがってメモリまたは外部から当該情報を読み取ること等、当該情報を取得するためのあらゆる演算処理を実行することを意味する。
ローカルメモリ230は、RAM及びI/O回路により構成されている。ローカルメモリ230は、当該ローカルメモリ230を備えるアクセラレータ200の各構成要素及びホストプロセッサ300からアクセス可能に構成されている。ローカルメモリ230は、外部からのアクセス時に指定の制御を行うメモリ制御回路232、フラグ情報を記憶するフラグ領域234、及びデータを記憶するデータ領域236を備える。ローカルメモリ230が、本発明の「フラグ記憶部」の一例に相当し、メモリ制御回路232が、本発明の「制御部」の一例に相当する。なお、説明の便宜上、フラグ領域234とデータ領域236とを分けて記載しているが、同一のハードウェアによりフラグ領域234とデータ領域236とが構成されてもよい。
制御レジスタ240は、RAM及びI/O回路により構成されている。制御レジスタ240は、当該ローカルメモリ230を備えるアクセラレータ200の各構成要素及びホストプロセッサ300からアクセス可能に構成されている。制御レジスタ240は、制御レジスタ240を備えるアクセラレータ200のデータ転送ユニット220及びベクトル演算ユニット250の動作状態を示す情報を記憶している。また、制御レジスタ240は、制御レジスタ240を備えるアクセラレータ200のデータ転送ユニット220及びベクトル演算ユニット250のクロック周波数を記憶するように構成されている。データ転送ユニット220及びベクトル演算ユニット250は、制御レジスタ240を参照することにより、自己のクロック周波数を変更することができる。
ベクトル演算ユニット250は、ローカルメモリ230から読み取ったベクトル演算ユニット用プログラムに従って、ベクトル演算、スカラ演算並びにローカルメモリ230のデータの読み取り及び書込みを実行するように構成されている。本実施形態では、このベクトル演算ユニット250を本発明の「他のタスク実行部」の一例として説明する。この場合、各アクセラレータのデータ転送ユニット220及び各ベクトル演算ユニット250により「複数のタスク実行部」が構成される。
ホストプロセッサ300は、中央演算ユニット(CPU)等のプロセッサを含んで構成され、内部のレジスタに記憶されたホストプロセッサ用プログラムを読み出し、当該ホストプロセッサ用プログラムに従って、当該ホストプロセッサ用プログラムに規定されるホストプロセッサ用タスクを実行するように構成されている。ホストプロセッサ用タスクには、各構成要素の動作を制御するタスクも含まれる。
ホストプロセッサ300は、不図示の入力部を介して入力されたユーザの指示等のイベントに応じて、一又は複数のアクセラレータ200に対し、割込み処理を実行させるように構成されている。
電力供給部400は、共有メモリ100、各アクセラレータ200、ホストプロセッサ300及び相互接続網500に電力を供給するように構成されている。電力供給部400は、各アクセラレータ200の制御レジスタ240に記憶された各構成要素のクロック周波数を参照することにより、所定の式または対応表を用いて、各アクセラレータ200の各構成要素に供給する電力量を調節する。電力供給部400は、各アクセラレータ200、ホストプロセッサ300にそれぞれ設けられてもよい。
相互接続網500は、例えば、バス又はクロスバスである。
なお、それぞれ1の逐次実行プログラムからデータ転送ユニット用プログラム、ベクトル演算ユニット用プログラム及びホストプロセッサ用プログラムが生成される。より具体的には、並列化コンパイラが、逐次実行プログラムを解析する処理、制御依存性及びデータ依存性から各タスクの並列性を抽出する処理、並びに、各タスクの処理時間及び消費電力等のタスクの実行コスト又はタスクの優先度に基づいて、各データ転送ユニット220、ベクトル演算ユニット250及びホストプロセッサ300にタスクを割り当る処理をコンピュータに実行させる。このタスクの割り当てに基づいて、前記並列化コンパイラは、並列実行データ転送ユニット用プログラム、ベクトル演算ユニット用プログラム及びホストプロセッサ用プログラムをコンピュータに生成させる。このような並列化コンパイラとしては、例えば、特開2007−328416号公報又は特開2007−328415号公報に示される並列化コンパイラが使用できる。
(データ転送処理)
次に、図2を参照しながら、データ転送ユニット220によるデータ転送処理を説明する。
このデータ転送処理は、概説すると、データ転送ユニット220が、ベクトル演算ユニット250で使用されるデータを共有メモリ100からローカルメモリ230に転送し、ベクトル演算ユニット250の処理の終了を待って、ベクトル演算ユニット250がローカルメモリ230に格納したデータを共有メモリ100に転送する処理である。
まず、データ転送ユニット220は、プログラム領域212から読み取ったタスクに従って、対象のデータが記憶されている共有メモリ100上の開始アドレス、アドレスの増分、当該読み取ったデータの格納先のローカルメモリ230のデータ領域236上の開始アドレスを認識する(図2/STEP100)。対象のデータは、例えば、1次元配列である。この場合、増分とは1次元配列に格納された各データの大きさ及びアクセスすべき要素に応じて定まる値である。対象のデータは、スカラ変数であってもよいし、2次元以上の配列であってもよいし、そのほかのデータであってもよい。なお、ローカルメモリ230のデータ領域236において、データを連続的に格納しておくことにより、ベクトル演算ユニット250が、高速にデータにアクセスし、ベクトル演算ユニット用プログラムに含まれる次の処理を開始することが可能となる。
データ転送ユニット220は、対象のデータが記憶されている共有メモリ100上の開始アドレス、アドレスの増分、当該読み取ったデータの格納先のローカルメモリ230のデータ領域236上の開始アドレスに従ってデータ転送を開始する(図2/STEP200)。データ転送中は、制御レジスタ240に記憶されたデータ転送ユニット220の状態を示す転送状態情報に、転送状態を示す値(例えば1)が設定され、データ転送が行われていない間には、転送状態情報に、転送していない状態(たとえば0)を示す値が設定される。
次に、データ転送ユニット220は、転送完了待ちタスクを実行する(図2/STEP300)。転送完了待ちタスクの詳細については後述する。転送完了待ちタスクの実行により、データ転送ユニット220は、図2/STEP200のデータ転送が完了するまで、次に実行すべきタスクの実行の開始を保留することができる。
図2/STEP300の処理の後、データ転送ユニット220は、ローカルメモリ230のデータ領域236の読み取り対象のデータの開始アドレス、共有メモリ100のデータの記憶先の開始アドレス及び増分を認識する(図2/STEP400)。
データ転送ユニット220は、フラグチェックタスクを実行する(図2/STEP500)。フラグチェックタスクの詳細は後述する。フラグチェックタスクの実行により、データ転送ユニット220は、ベクトル演算ユニット250の処理の終了を待って図2/STEP600のデータ転送を開始することができるようになる。
データ転送ユニット220は、ローカルメモリ230のデータ領域236の読み取り対象のデータの開始アドレス、共有メモリ100のデータの記憶先の開始アドレス及び増分に従ってデータ転送を開始する(図2/STEP600)。なお、「図2/STEP600」が、本発明の「フラグチェックタスクに後続するタスク」に相当する。
(転送完了待ちタスク)
次に、図3を参照して、図2/STEP300の転送完了待ちタスクの詳細を説明する。なお、この処理の実行の開始時において、プログラムカウンタ222は、「転送完了待ちタスク」のアドレスを記憶している。
データ転送ユニット220は、制御レジスタ240にアクセスし、自身のクロック周波数を第2クロック周波数となるように変更する(図3/STEP302)。これにより、電力供給部400は、この更新されたクロック周波数を参照して、データ転送ユニット220に供給する電力量を小さくさせるように動作する。
データ転送ユニット220は、割込み処理があるかどうかを判定する(図3/STEP304)。
当該判定処理が否定的である場合(図3/STEP304‥NO)、データ転送ユニット220は、制御レジスタ240を参照することにより、転送状態情報を読み込む(図3/STEP306)。
データ転送ユニット220は、転送状態情報が転送中を示す値であるか否かを判定する(図3/STEP308)。
当該判定結果が肯定的である場合(図3/STEP308‥YES)、データ転送ユニット220は、図3/STEP304以下の処理を実行する。
当該判定結果が否定的である場合(図3/STEP308‥NO)、データ転送ユニット220は、制御レジスタ240にアクセスし、データ転送ユニット220のクロック周波数を第1クロック周波数に変更する(図3/STEP310)。これにより、電力供給部400は、この更新されたクロック周波数を参照して、データ転送ユニット220に供給する電力量を増加させるように動作する。
図3/STEP310の後、データ転送ユニット220は、プログラムカウンタ222が次に実行すべきタスク(図2/STEP400のタスク)を示すようになるように更新し(図3/STEP312)、転送完了待ちタスクを終了する。
また、図3/STEP304の判定結果が肯定的である場合(図3/STEP304‥YES)、データ転送ユニット220は、制御レジスタ240にアクセスし、データ転送ユニット220のクロック周波数を第1クロック周波数に変更する(図3/STEP314)。これにより、電力供給部400は、この更新されたクロック周波数を参照して、データ転送ユニット220に供給する電力量を増加させるように動作する。
データ転送ユニット220は、割込み処理を実行する(図3/STEP316)。データ転送ユニット220は、割込み処理の実行の前に、プログラムカウンタ222の値を、プログラムカウンタ格納領域214に退避する。
データ転送ユニット220は、割込み処理の終了後、プログラムカウンタ格納領域214を参照し、次に実行すべきタスクのプログラム領域212上のアドレスを認識する(図3/STEP318)。認識されたアドレスは、プログラムカウンタ222に記憶される。ここで、転送完了待ちタスクの実行開始以降にプログラムカウンタ222が割り込み処理で更新されていない限り、プログラムカウンタ格納領域214は、「転送完了待ちタスク」のアドレスを記憶している。
データ転送ユニット220は、読み込んだタスクのアドレスに示される「転送完了待ちタスク」をプログラム領域212から読み込んで実行する(図3/STEP320)。転送完了待ちタスクでは、データ転送ユニット220のクロック周波数以外情報の更新を伴わず、データ転送ユニット220のクロック周波数もデータ転送ユニット220の動作状態を規定する値である。このため、転送完了待ちタスクを再実行してもデータの不整合は生じない。
(フラグチェックタスク)
図4を参照して、図2のSTEP500のフラグチェックタスクの詳細について説明する。なお、この処理の実行の開始時において、プログラムカウンタ222は、「転送完了待ちタスク」のアドレスを記憶している。
データ転送ユニット220は、ローカルメモリ230のフラグ領域234から、処理終了フラグを読み込む(図4/STEP502)。この処理終了フラグは、データ転送ユニット用プログラムにおいてあらかじめフラグ領域234上のアドレスが指定された上で、ローカルメモリ230のフラグ領域234に記憶されている。処理終了フラグの初期値は、処理が未終了であることを示す値(例えばゼロ)である。ベクトル演算ユニット250は、指定の処理が終了した時に、処理終了フラグを処理が終了したことを示す値(例えば1)に更新する。処理終了フラグが、本発明の「フラグ情報」の一例に相当する。
データ転送ユニット220は、処理終了フラグが処理が終了したことを示す値か否かを判定する(図4/STEP504)。
当該判定が否定的である場合(図4/STEP504‥NO)、データ転送ユニット220は、処理終了フラグが記憶されているフラグ領域234上のアドレスをメモリ制御回路232に出力する(図4/STEP506)。メモリ制御回路232は、当該アドレスに書込アクセスがあった場合、データ転送ユニット220に処理再開指示を出力するように構成されている。メモリ制御回路232の処理の詳細は後述する。なお、「処理終了フラグが記憶されているフラグ領域234上のアドレス」が本発明の「フラグ情報の監視をしていることを示す信号」の一例に相当する。
データ転送ユニット220は、制御レジスタ240にアクセスし、自身のクロック周波数を第2クロック周波数となるように変更する(図4/STEP508)。
データ転送ユニット220は、割込み処理があるかどうかを判定する(図4/STEP510)。
当該判定結果が否定的である場合(図4/STEP510‥NO)、データ転送ユニット220は、メモリ制御回路から再開指示の入力があった否かを判定する(図4/STEP512)。
当該判定結果が肯定的である場合(図4/STEP512‥YES)、データ転送ユニット220は、図4/STEP502以下の処理を実行する。
また、当該判定結果が否定的である場合(図4/STEP512‥NO)、データ転送ユニット220は、図4/STEP510以下の処理を実行する。
また、図4/STEP504の判定結果が肯定的である場合(図4/STEP510‥YES)、データ転送ユニット220は、制御レジスタ240にアクセスし、データ転送ユニット220のクロック周波数を第1クロック周波数に変更する(図4/STEP514)。これにより、電力供給部400は、この更新されたクロック周波数を参照して、データ転送ユニット220に供給する電力量を増加させるように動作する。
図4/STEP514の後、データ転送ユニット220は、プログラムカウンタ222が次に実行すべきタスク(図2/STEP600のタスク)を示すようになるように更新し(図4/STEP516)、フラグチェックタスクを終了する。
また、図4/STEP510の判定結果が肯定的である場合(図4/STEP510‥YES)、データ転送ユニット220は、制御レジスタ240にアクセスし、データ転送ユニット220のクロック周波数を第1クロック周波数に変更する(図4/STEP518)。これにより、電力供給部400は、この更新されたクロック周波数を参照して、データ転送ユニット220に供給する電力量を増加させるように動作する。
データ転送ユニット220は、割込み処理を実行する(図4/STEP520)。データ転送ユニット220は、割込み処理の実行の前に、プログラムカウンタ222の値を、プログラムカウンタ格納領域214に退避する。
データ転送ユニット220は、割込み処理の終了後、プログラムカウンタ格納領域214を参照し、次に実行すべきタスクのプログラム領域212上のアドレスを認識する(図4/STEP522)。読み込んだアドレスは、プログラムカウンタ222に記憶される。ここで、フラグチェックタスクの実行開始以降にプログラムカウンタ222が割り込み処理で更新されていない限り、プログラムカウンタ格納領域214は、「フラグチェックタスク」のアドレスを記憶している。
データ転送ユニット220は、読み込んだタスクのアドレスに示される「フラグチェックタスク」をプログラム領域212から読み込んで実行する(図4/STEP524)。フラグチェックタスクでは、転送完了待ちタスクと同様に、データ転送ユニット220のクロック周波数及び処理終了フラグのアドレス以外情報の更新を伴っていない。そして、データ転送ユニット220のクロック周波数はデータ転送ユニット220の動作状態を規定する値である。また、処理終了フラグのアドレスがメモリ制御回路232に登録されるが、メモリ制御回路232は処理終了フラグのアドレスに書込アクセスがある場合にデータ転送ユニット220に再開指示を出力するものであるので、他のデータの内容に影響を及ぼすものではない。このため、フラグチェックタスクを再実行してもデータの不整合は生じない。
(アクセスチェック)
次に、図5を参照して、処理終了フラグが記憶されているフラグ領域234上のアドレスがメモリ制御回路232に登録された(図4/STEP506)後に、メモリ制御回路232により実行されるアクセスチェックの詳細を説明する。
メモリ制御回路232は、ローカルメモリ230にアクセスがあったか否かを判定する(図5/STEP702)。
当該判定結果が否定的である場合(図5/STEP702‥NO)、メモリ制御回路232は、再度図5/STEP702以下の処理を実行する。
当該判定結果が肯定的である場合(図5/STEP702‥YES)、メモリ制御回路232は、アクセス先アドレスが登録されたフラグ領域234上のアドレス(処理終了フラグのアドレス)であるか否かを判定する(図5/STEP704)。
当該判定結果が否定的である場合(図5/STEP704‥NO)、メモリ制御回路232は、再度図5/STEP702以下の処理を実行する。
当該判定結果が肯定的である場合(図5/STEP704‥YES)、メモリ制御回路232は、当該アクセスが書込みアクセスであるか否かを判定する(図5/STEP706)。
当該判定結果が否定的である場合(図5/STEP706‥NO)、メモリ制御回路232は、再度図5/STEP702以下の処理を実行する。
当該判定結果が肯定的である場合(図5/STEP706‥YES)、メモリ制御回路232は、データ転送ユニット220に再開指示を出力する(図5/STEP708)。
図5/STEP708の処理の後、メモリ制御回路232は、アクセスチェックを終了する。
(本実施形態の作用効果)
当該構成のマルチプロセッサシステム1によれば、データ転送ユニット220により、データ転送ユニット用プログラムに含まれるタスクがフラグチェックタスクである場合(図2/STEP500)、ローカルメモリ230のフラグ領域234に記憶された処理終了フラグが処理終了を示す値であるか否かが判定される(図4/STEP504)。「処理終了フラグが処理終了を示す値である」ことが、本発明の「所定の条件」に相当する。「フラグが処理中を示す値ではない」ことを本発明の「所定の条件」としてもよい。また、「フラグに格納された数値が、所定の数値以下である」ことが本発明の「所定の条件」であってもよい。
フラグ領域234に記憶された処理終了フラグが処理終了を示す値である場合(図4/STEP504‥YES)、データ転送ユニット220により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。
これにより、フラグチェックタスク(図2/STEP500)に後続するタスク(図2/STEP600)の実行開始タイミングを適切に調節することができる。
また、データ転送ユニット220は、フラグ領域234に記憶された処理終了フラグが処理終了を示す値である場合、ローカルメモリ230のメモリ制御回路232に処理終了フラグのフラグ領域234上のアドレスを出力し(図4/STEP506)、かつ、フラグ情報へのアクセスを保留する。
そして、メモリ制御回路232は、データ転送ユニット220よりフラグ情報の監視をしていることを示す信号が入力された場合、ベクトル演算ユニット250等によるフラグ情報の書込アクセスの有無を監視する(図5/STEP702〜706)。
そして、メモリ制御回路232は、前記フラグ情報の書込アクセスがされた場合(図5/STEP702〜706のすべてでYES)、データ転送ユニット220に対し、フラグ情報へのアクセスを再開させるための指示を出力する(図5/STEP708)。
これにより、フラグ情報が更新されていない間のフラグチェックを回避できるので、フラグ領域に頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報の更新がされた場合、換言すれば、処理終了フラグが処理終了を示す値である蓋然性が高い場合にデータ転送ユニット220のフラグ情報へのアクセスが再開されるので、フラグチェックに後続するタスク(図2/STEP600)の実行までの待機時間を短縮することができる。
また、当該構成のマルチプロセッサシステム1によれば、フラグ情報へのアクセスを保留する際に電力供給部400から当該一のタスク実行部に供給される電力量を小さくさせる信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。
また、並列化プログラムにより、各プログラムに適切に処理が割り振られ、処理待ちの際に別の処理を実行する必要性は低い場合には、特に、上記のようにクロック周波数を低下させて、消費電力を削減することは好ましい。
当該構成のマルチプロセッサシステム1によれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合(図4/STEP510・・YES)、プログラムカウンタ222を更新せずに前記割込み処理が実行される(図4/STEP518〜STEP520)。そして、その後、前記プログラムカウンタ222を参照して次に実行すべきタスクが認識される(図4/STEP522)。
ここで、フラグチェックタスク(図4)において、前記フラグ情報が前記所定の条件を充足したと判定した後(図4/STEP504‥YES以降)にプログラムカウンタ222が更新される(図4/STEP516)。このため、フラグ情報へのアクセスの保留中には(図4/STEP504‥NOの場合)、プログラムカウンタ222が更新されていないこととなる。
すなわち、プログラムカウンタ222に示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっている。このため、割込み処理の実行完了後、割込み処理においてプログラムカウンタ222が更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。
(変形態様)
本実施形態では、フラグ情報へのアクセス保留の間、データ転送ユニット220のクロック周波数が第2周波数に設定されたが(図4/STEP508)、これに代えて、データ転送ユニット220を停止させ、電力供給部400からの電力を遮断させてもよい。この場合、メモリ制御回路232は、再開指示として、データ転送ユニット220に起動信号を出力するように構成されることが好ましい。
本実施形態では、データ転送ユニット220を本発明の「一のタスク実行部」として説明したが、これに加えてまたは代えて、CPU、ベクトル演算ユニット等の、プログラムに含まれるタスクに従って動作するプロセッサを本発明の「一のタスク実行部」として構成してもよい。なお、当該一のタスク実行部用のプログラムは、あるタスクに先行するタスクとしてフラグチェックタスクを含んでいる。
本実施形態では、ベクトル演算ユニット250を本発明の「他のタスク実行部」として説明したが、これに代えてまたは加えて、データ転送ユニット、CPU等の、プログラムに含まれるタスクに従って動作するプロセッサを本発明の「他のタスク実行部」として構成してもよい。なお、当該他のタスク実行部用のプログラムは、あるタスクに後続するタスクとして、フラグ領域234に記憶されたフラグ情報を更新するタスク、例えば、当該タスクが完了した旨を示す値をフラグ領域234に書き込むタスクを含んでいる。
本実施形態では、アクセラレータ200を本発明の「プロセッサシステム」として説明し、かつ、ローカルメモリ230を本発明の「フラグ情報記憶部」として説明したが、マルチプロセッサシステム1を本発明の「プロセッサシステム」として構成し、共有メモリ100等の、フラグ情報を記憶可能かつ制御部を備える記憶装置を「フラグ情報記憶部」として構成してもよい。この場合、例えば、ホストプロセッサ又は一のアクセラレータに含まれるタスク実行部(例えば、データ転送ユニット)が本発明の「一のタスク実行部」として構成され、ホストプロセッサ又は他のアクセラレータに含まれるタスク実行部(例えば、データ転送ユニット)が本発明の「他のタスク実行部」として構成されてもよい。
本実施形態では、メモリ制御回路232が「処理終了フラグが記憶されているフラグ領域234上のアドレス」を基に当該アドレスへの書込アクセスの有無を監視したが、これに代えて、メモリ制御回路232が「処理終了フラグが記憶されているフラグ領域234上のアドレス」及び「処理終了を示す値」を基に、処理終了フラグが処理終了を示す値となったか否かを判定してもよい。この場合、処理終了フラグが処理終了を示す値となったことが確認できた場合、データ転送ユニット220は、フラグチェックタスクを再実行せずに、フラグチェックタスクに後続するタスクを実行するように構成されていてもよい。
本実施形態では、メモリ制御回路232が「処理終了フラグが記憶されているフラグ領域234上のアドレス」を基に当該アドレスへの書込アクセスの有無を監視したが、これに代えて、メモリ制御回路232が「処理終了フラグが記憶されているフラグ領域234上のアドレス」を基に当該アドレスへのアクセスの有無を監視してもよい。
1‥マルチプロセッサシステム、222・・プログラムカウンタ、220・・データ転送ユニット(一のタスク実行部)、230・・ローカルメモリ(フラグ記憶部)、232‥メモリ制御回路(制御部)、234・・フラグ領域、250・・ベクトル演算ユニット(他のタスク実行部)、400‥電力供給部、STEP500‥フラグチェックタスク、STEP600‥フラグチェックタスクに後続するタスク。
【0002】
み等の完了よりも後に、データ転送ユニットのデータ転送等の開始をさせることができるので、プログラム設計者の意図に反したデータの処理または転送が防止される。
先行技術文献
特許文献
[0007]
特許文献1:国際公開公報第2013/06587号
発明の概要
発明が解決しようとする課題
[0008]
しかし、フラグチェックにあたって、各タスク実行部が頻繁にフラグチェックを行うと、フラグチェックに係るオーバーヘッドが大きくなり、プロセッサシステム全体の処理速度が低下したり、消費電力が増大したりする可能性もある。
[0009]
一方、フラグチェックのオーバーヘッドの増大を避けるため、各タスク実行部によるフラグチェックの間隔を長くすると、フラグが更新されたタイミングとフラグチェックのタイミングとにずれが生じることにより、フラグチェックに後続するタスクの実行までに不要な待機時間が生じる可能性もある。
[0010]
このような問題に鑑み、本発明は、フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供することを目的とする。
課題を解決するための手段
[0011]
本発明のプロセッサシステムは、
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部と、
前記複数のタスク実行部のうちの一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタとを備え、
前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に該一のタスク実行部が次に実行すべきタスクを示すように更新され、
前記フラグ記憶部は、前記フラグ情報として、前記複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報を記憶し、
前記一のタスク実行部は、
【0003】
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成され、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とする。
[0012]
当該構成のプロセッサシステムによれば、一のタスク実行部により、プログラムに含まれるフラグチェックタスクに従って、フラグ記憶部のフラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かが判定される。
なお、フラグ記憶部には、フラグ情報として、複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報が記憶されている。
[0013]
フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、当該一のタスク実行部により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。
[0014]
これにより、前記フラグチェックタスクに後続するタスクの実行開始タイミングを調節することができる。
[0015]
また、当該一のタスク実行部は、前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留する。
[0016]
そして、フラグ記憶部の制御部は、前記一のタスク実行部よりフラグ情報
【0004】
の監視をしていることを示す信号が入力された場合、他のタスク実行部による前記フラグ情報へのアクセスの有無を監視する。
[0017]
そして、フラグ記憶部の制御部は、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力する。
[0018]
フラグ情報にアクセスされていなければ、フラグ情報が更新されることはない。このため、フラグ情報へのアクセスがあったことを条件としてフラグ情報へのアクセスの保留を解除させることによりフラグ情報が更新されていない間のフラグ情報へのアクセスを回避できる。このため、フラグ領域を頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報へのアクセスがされた場合、換言すれば、フラグ情報が変更されたりすることにより、フラグ情報が所定の条件を充足する可能性がある場合に一のタスク実行部のフラグ情報へのアクセスの保留が解除されるので、フラグチェックに後続するタスクの実行までの待機時間を短縮することができる。
また、当該構成のプロセッサシステムによれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合、プログラムカウンタを更新せずに前記割込み処理が実行される。そして、その後、前記プログラムカウンタを参照して次に実行すべきタスクが認識される。
ここで、フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後にプログラムカウンタが更新される。また、前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に当該一のタスク実行部が次に実行すべきタスクを示すように更新される。そして、上述の通り前記一のタスク実行部は、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留するから、フラグ情報へのアクセスの保留中には、プログラムカウンタが更新されていないこととなる。すなわち、プログラムカウンタに示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっているから、割込み処理の実行完了後、割込み処理においてプログラムカウンタが更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。
[0019]
本発明のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることが好ましい。
[0020]
当該構成のプロセッサシステムによれば、前記フラグ情報へのアクセスを保留する際に前記電力供給部から当該一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。
[0021]
【0005】
[0022]
[0023]
[0024]
[0025]
本発明のプロセッサシステムにおいて、
前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデ
【0002】
み等の完了よりも後に、データ転送ユニットのデータ転送等の開始をさせることができるので、プログラム設計者の意図に反したデータの処理または転送が防止される。
先行技術文献
特許文献
[0007]
特許文献1:国際公開公報第2013/06587号
発明の概要
発明が解決しようとする課題
[0008]
しかし、フラグチェックにあたって、各タスク実行部が頻繁にフラグチェックを行うと、フラグチェックに係るオーバーヘッドが大きくなり、プロセッサシステム全体の処理速度が低下したり、消費電力が増大したりする可能性もある。
[0009]
一方、フラグチェックのオーバーヘッドの増大を避けるため、各タスク実行部によるフラグチェックの間隔を長くすると、フラグが更新されたタイミングとフラグチェックのタイミングとにずれが生じることにより、フラグチェックに後続するタスクの実行までに不要な待機時間が生じる可能性もある。
[0010]
このような問題に鑑み、本発明は、フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供することを目的とする。
課題を解決するための手段
[0011]
本発明のプロセッサシステムは、
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部と、
前記複数のタスク実行部のうちの一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタとを備え、
前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に該一のタスク実行部が次に実行すべきタスクを示すように更新され、
前記フラグ記憶部は、前記フラグ情報として、前記複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報を記憶し、
前記一のタスク実行部は、
【0003】
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成され、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とする。
[0012]
当該構成のプロセッサシステムによれば、一のタスク実行部により、プログラムに含まれるフラグチェックタスクに従って、フラグ記憶部のフラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かが判定される。
なお、フラグ記憶部には、フラグ情報として、複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報が記憶されている。
[0013]
フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、当該一のタスク実行部により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。
[0014]
これにより、前記フラグチェックタスクに後続するタスクの実行開始タイミングを調節することができる。
[0015]
また、当該一のタスク実行部は、前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留する。
[0016]
そして、フラグ記憶部の制御部は、前記一のタスク実行部よりフラグ情報
【0004】
の監視をしていることを示す信号が入力された場合、他のタスク実行部による前記フラグ情報へのアクセスの有無を監視する。
[0017]
そして、フラグ記憶部の制御部は、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力する。
[0018]
フラグ情報にアクセスされていなければ、フラグ情報が更新されることはない。このため、フラグ情報へのアクセスがあったことを条件としてフラグ情報へのアクセスの保留を解除させることによりフラグ情報が更新されていない間のフラグ情報へのアクセスを回避できる。このため、フラグ領域を頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報へのアクセスがされた場合、換言すれば、フラグ情報が変更されたりすることにより、フラグ情報が所定の条件を充足する可能性がある場合に一のタスク実行部のフラグ情報へのアクセスの保留が解除されるので、フラグチェックに後続するタスクの実行までの待機時間を短縮することができる。
また、当該構成のプロセッサシステムによれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合、プログラムカウンタを更新せずに前記割込み処理が実行される。そして、その後、前記プログラムカウンタを参照して次に実行すべきタスクが認識される。
ここで、フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後にプログラムカウンタが更新される。また、前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に当該一のタスク実行部が次に実行すべきタスクを示すように更新される。そして、上述の通り前記一のタスク実行部は、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留するから、フラグ情報へのアクセスの保留中には、プログラムカウンタが更新されていないこととなる。すなわち、プログラムカウンタに示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっているから、割込み処理の実行完了後、割込み処理においてプログラムカウンタが更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。
[0019]
本発明のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることが好ましい。
[0020]
当該構成のプロセッサシステムによれば、前記フラグ情報へのアクセスを保留する際に前記電力供給部から当該一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。
[0021]

Claims (5)

  1. プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
    フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部とを備え、
    前記複数のタスク実行部のうちの一のタスク実行部は、
    前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する否かを判定し、
    前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
    前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留し、
    前記フラグ記憶部の制御部は、
    前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記複数のタスク実行部のうちの他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成されていることを特徴とするプロセッサシステム。
  2. 請求項1記載のプロセッサシステムにおいて、
    前記一のタスク実行部に対して電力を供給する電力供給部を備え、
    一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることを特徴とするプロセッサシステム。
  3. 請求項1又は2記載のプロセッサシステムにおいて、
    前記一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタを備え、
    前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とするプロセッサシステム。
  4. 請求項1〜3のうちいずれか1項記載のプロセッサシステムにおいて、
    前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
    前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
    前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデータの転送を実行するデータ転送ユニットであり、
    前記他のタスク実行部は、前記データ領域に記憶されたデータを読み込んで、当該読み込まれたデータに基づいてプログラムに従って演算処理を実行し、前記演算処理結果を前記データ領域に記憶させ、前記フラグ情報の値を更新する演算ユニットであることを特徴とするプロセッサシステム。
  5. 請求項1〜4のうちいずれか1項記載のプロセッサシステムを複数備え、
    前記複数のプロセッサシステムのそれぞれからアクセス可能な共有メモリを備えることを特徴とするマルチプロセッサシステム。
JP2019500115A 2017-02-16 2017-02-16 プロセッサシステム及びマルチプロセッサシステム Pending JPWO2018150524A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/005790 WO2018150524A1 (ja) 2017-02-16 2017-02-16 プロセッサシステム及びマルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JPWO2018150524A1 true JPWO2018150524A1 (ja) 2020-02-20

Family

ID=63169232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019500115A Pending JPWO2018150524A1 (ja) 2017-02-16 2017-02-16 プロセッサシステム及びマルチプロセッサシステム

Country Status (4)

Country Link
US (1) US20200233669A1 (ja)
JP (1) JPWO2018150524A1 (ja)
CN (1) CN110300962A (ja)
WO (1) WO2018150524A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113326221B (zh) * 2021-06-30 2024-03-22 上海阵量智能科技有限公司 数据处理装置、方法、芯片、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3171925B2 (ja) * 1992-04-30 2001-06-04 株式会社日立製作所 データ処理装置
JP4376692B2 (ja) * 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP5429372B2 (ja) * 2010-06-08 2014-02-26 富士通株式会社 マルチコアプロセッサシステム、制御方法、および制御プログラム

Also Published As

Publication number Publication date
CN110300962A (zh) 2019-10-01
WO2018150524A1 (ja) 2018-08-23
US20200233669A1 (en) 2020-07-23

Similar Documents

Publication Publication Date Title
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US8782643B2 (en) Device and method for controlling communication between BIOS and BMC
US20180150322A1 (en) Data processing
JP2018534675A (ja) 再マッピング同期によるタスクサブグラフの加速化
US10169105B2 (en) Method for simplified task-based runtime for efficient parallel computing
KR101697038B1 (ko) 파이프라이닝된 소프트웨어의 동적 최적화
JP2019169081A (ja) 情報処理装置、情報処理方法、プログラム
US20150082082A1 (en) Information processing device, information processing method, and storage medium storing program for executing information processing method
KR20130036252A (ko) 멀티쓰레딩된 프로그램의 저전력 실행
US10565135B2 (en) Information processing device, information processing method, main processor core, program, information processing method, and sub processor core
US20130151791A1 (en) Transactional memory conflict management
US20080177983A1 (en) Selective suppression of register renaming
US10216679B2 (en) Semiconductor device and control method thereof
JP5870994B2 (ja) デッドロック回避方法、デッドロック回避機構
JPWO2018150524A1 (ja) プロセッサシステム及びマルチプロセッサシステム
US20140331025A1 (en) Reconfigurable processor and operation method thereof
JP5694100B2 (ja) 情報処理装置、プログラムおよび情報処理方法
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
WO2021037124A1 (zh) 一种任务处理的方法以及任务处理装置
US20180181372A1 (en) Electronic devices and operation methods of the same
US20240176616A1 (en) Processor and method of controlling processor
JP7137058B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
JP6940283B2 (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JP2022188077A (ja) ハードウェアアクセラレータの自律ジョブキューイングシステム

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under section 34 (pct)

Free format text: JAPANESE INTERMEDIATE CODE: A5211

Effective date: 20190809