JP5817860B2 - Multi-core processor system, multi-core processor system control method, and multi-core processor system control program - Google Patents
Multi-core processor system, multi-core processor system control method, and multi-core processor system control program Download PDFInfo
- Publication number
- JP5817860B2 JP5817860B2 JP2014021650A JP2014021650A JP5817860B2 JP 5817860 B2 JP5817860 B2 JP 5817860B2 JP 2014021650 A JP2014021650 A JP 2014021650A JP 2014021650 A JP2014021650 A JP 2014021650A JP 5817860 B2 JP5817860 B2 JP 5817860B2
- Authority
- JP
- Japan
- Prior art keywords
- port
- cores
- software
- cpu
- core
- 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.)
- Expired - Fee Related
Links
Images
Description
本発明は、メモリコントローラを制御するマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムに関する。 The present invention relates to a multi-core processor system for controlling a memory controller, a control method for the multi-core processor system, and a control program for the multi-core processor system.
従来から、複数個のCPU(Central Processing Unit)からアクセスされるメモリとして、データを記憶可能な複数のメモリバンクと、データの入出力を可能とする複数の入出力ポートを備えるマルチポートメモリの技術が知られている。また、CPUがメモリのデータを読み書きする際にメモリを制御する装置として、メモリコントローラを用いる技術も知られている。メモリコントローラの機能として、メモリとバスの間、またはCPUとバスの間に、バッファ機構を設け、バッファにデータを一時保留するほか、分岐先のポートへの自動分岐を行う機能を持つという技術が開示されている(たとえば、下記特許文献1を参照。)。
2. Description of the Related Art Conventionally, as a memory accessed from a plurality of CPUs (Central Processing Units), a technology of a multi-port memory having a plurality of memory banks capable of storing data and a plurality of input / output ports enabling data input / output It has been known. A technique using a memory controller is also known as a device for controlling a memory when the CPU reads and writes data in the memory. As a function of the memory controller, there is a technology that provides a buffer mechanism between the memory and the bus or between the CPU and the bus, temporarily holds data in the buffer, and has a function of automatically branching to the branch destination port (See, for example,
また、メモリへのリクエストとレスポンスの経路を分離し、CPUからのリクエストではマルチポートメモリを制御するメモリコントローラが即座にダミーレスポンスを返す機構により、CPUは次の処理に即座に移行できるといった技術が開示されている(たとえば、下記特許文献2を参照。)。
In addition, there is a technology that allows the CPU to move immediately to the next processing by separating the request and response paths to the memory, and in response to a request from the CPU, the memory controller that controls the multiport memory returns a dummy response immediately. (See, for example,
また、マルチポートを使用する技術として、アドレス空間を機能種別ごとに分割し、分割されたアドレス空間ごとにポートを用意することで、複数の機能を同時に実行し、高速に処理を実行できるという技術が開示されている(たとえば、下記特許文献3を参照。)。
In addition, as a technology that uses multiports, a technology that divides the address space into function types and prepares a port for each divided address space, so that multiple functions can be executed simultaneously and processing can be executed at high speed. Is disclosed (for example, see
しかしながら、上述した従来技術において、特許文献1にかかる技術では、メモリとバッファ間、バスとバッファ間を高クロックにすることで、経路上のレイテンシを最小にすることができる。しかし、特許文献1にかかる技術は、高クロックにすることで、消費電力が増加するという問題があった。また、特許文献2にかかる技術では、リクエストとレスポンスの経路を分離してもアクセス競合は発生し続けるという問題があった。また、特許文献1にかかる技術と同様に、バスからバッファの間が高クロックとなるため、消費電力が増加するという問題があった。
However, in the above-described conventional technique, in the technique according to
また、特許文献3にかかる技術では、機能が異なる2つのソフトウェアが同一のアドレス空間にアクセスする場合に、アクセス競合を起こすという問題があった。また、機能種別ごとにポートを用意する必要があり、機能種別が増加するにつれ、ポート数も増加することになり、消費電力が増加するという問題があった。
Further, the technique according to
本発明は、上述した従来技術による問題点を解消するため、アクセス競合を回避できるマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムを提供することを目的とする。 An object of the present invention is to provide a multi-core processor system, a control method for a multi-core processor system, and a control program for a multi-core processor system that can avoid access contention in order to solve the above-described problems caused by the prior art.
本実施例の一実施態様によると、複数のコアと、複数のコアに対応する複数のポートを有するメモリコントローラと、複数のポートのそれぞれに割り当てられた物理アドレス空間を有し、複数のコアで実行するソフトウェアとソフトウェアを割り当てるコアの数との対応情報を記憶する共用メモリとを有するマルチコアプロセッサシステムであって、複数のコアのうちの第1のコアは、複数のコアのうち実行対象ソフトウェアを実行する実行コアを対応情報および複数のコアのそれぞれの処理負荷に基づいて割り当て、実行コアはそれぞれ、割り当てられた実行対象ソフトウェアの論理アドレス空間と、実行コアに対応する実行ポートに割り当てられた物理アドレス空間とをメモリコントローラに設定し、第1のコアは、実行コアを除く複数のコアに対応する複数のポートとの接続をメモリコントローラに解除させるマルチコアプロセッサシステムを提供する。 According to one embodiment of the present embodiment, a plurality of cores, a memory controller having a plurality of ports corresponding to the plurality of cores, and a physical address space allocated to each of the plurality of ports, A multi-core processor system having a shared memory for storing correspondence information between software to be executed and the number of cores to which the software is assigned, wherein the first core of the plurality of cores is the execution target software of the plurality of cores. Execution cores to be executed are assigned based on the corresponding information and the processing load of each of the multiple cores. The address space is set in the memory controller, and the first core has a plurality of excluding execution cores. The connection between the plurality of ports corresponding to the core to provide a multi-core processor system for releasing the memory controller.
本マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムによれば、CPUがアクセスするアドレス範囲と他のCPUがアクセスするアドレス範囲とが異なり、アクセス競合を回避できるという効果を奏する。 According to the multi-core processor system, the control method for the multi-core processor system, and the control program for the multi-core processor system, the address range accessed by the CPU is different from the address range accessed by another CPU, and an access conflict can be avoided. Play.
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムの好適な実施の形態を詳細に説明する。 Exemplary embodiments of a multi-core processor system, a multi-core processor system control method, and a multi-core processor system control program according to the present invention will be explained below in detail with reference to the accompanying drawings.
(マルチコアプロセッサシステム)
図1は、実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。図1において、マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、を備えている。また、マルチコアプロセッサシステム100は、フラッシュROM104と、フラッシュROMコントローラ105と、フラッシュROM106と、を備えている。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ107と、I/F(Interface)108と、キーボード109と、を備えている。また、各部はバス110によってそれぞれ接続されている。
(Multi-core processor system)
FIG. 1 is a block diagram of hardware of the multi-core processor system according to the embodiment. In FIG. 1, a
ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。CPUs101の詳細は、図2にて後述する。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。本実施形態では、CPUの接続方法によらず、メモリを共有する、すなわちTCMP(Tightly Coupled Multi Processor)のアーキテクチャーを前提とする。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
Here, the
ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。フラッシュROM104は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F108によって新しいOSを受信し、フラッシュROM104に格納されている古いOSを、受信した新しいOSに更新する。
The
フラッシュROMコントローラ105は、CPUs101の制御に従ってフラッシュROM106に対するデータのリード/ライトを制御する。フラッシュROM106は、フラッシュROMコントローラ105の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F108を通して取得した画像データ、映像データなどである。フラッシュROM106は、たとえば、メモリカード、SDカードなどを採用することができる。
The
ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ107は、たとえば、TFT液晶ディスプレイなどを採用することができる。
A
I/F108は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク111に接続され、ネットワーク111を介して他の装置に接続される。そして、I/F108は、ネットワーク111と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F108には、たとえばモデムやLANアダプタなどを採用することができる。
The I /
キーボード109は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード109は、タッチパネル式の入力パッドやテンキーなどであってもよい。
The
図2は、マルチコアプロセッサシステム100のハードウェアの一部とソフトウェアを示すブロック図である。図2で示されるハードウェアは、共用メモリ201と、メモリコントローラ202と、CPUs101に含まれるCPU#1〜CPU#4とである。メモリコントローラ202と、CPU#1〜CPU#4はバス110によって接続されている。また、以下に登場する符号のうち、#1〜#4のいずれかが付属する符号は、それぞれCPU#1〜CPU#4に対応する符号であることを意味する。
FIG. 2 is a block diagram showing a part of hardware and software of the
共用メモリ201は、メモリコントローラ202を通してアクセス可能な記憶領域である。記憶領域とは、たとえば、ROM102、RAM103、フラッシュROM104である。また、共用メモリ201は、アクセス可能な回線であるポート#1〜ポート#4を持つ。CPU#1〜CPU#4は、ポート#1〜ポート#4のいずれのポートにもアクセスすることが可能である。また、本実施の形態では、CPU#1はポート#1を制御し、CPU#2はポート#2を制御し、CPU#3はポート#3を制御し、CPU#4はポート#4を制御する。
The shared
また、共用メモリ201は、ポート#1〜ポート#4ごとに物理アドレス空間を分断した共用メモリブロック#1〜共用メモリブロック#4に分けられる。共用メモリブロック#1〜共用メモリブロック#4は、物理アドレス空間が連続していてもよいし、離れていてもよい。また、共用メモリ201で1つのメモリバンクとして存在してもよいし、1つの共用メモリブロックが1つのメモリバンクとして存在してもよい。
The shared
また、初期状態としてポート#1は共用メモリブロック#1にアクセス可能とする。同様に、ポート#2〜ポート#4も、それぞれ共用メモリブロック#2〜共用メモリブロック#4にアクセス可能とする。しかし、ポートの設定により、1つのポートは複数の共用メモリブロックにアクセス可能としてもよい。たとえば、ポート#1の設定を変更することにより、ポート#1は共用メモリブロック#1と共用メモリブロック#2にアクセス可能としてもよい。
Further, as an initial state, the
メモリコントローラ202は、共用メモリ201へのデータの読み出し、書き込みを制御する機能を有する。本実施の形態では、メモリコントローラ202は、共用メモリ201にアクセスするポート#1〜ポート#4の設定を変更することで、CPU#1〜CPU#4の共用メモリ201へのアクセスを制御する。
The
ポート接続器203は、メモリコントローラ202の内部に存在し、ポート#1〜ポート#4の接続、または非接続を行う。図2の例では、ポート接続器203は、バス110側のポート#3を非接続としている。アドレス変換器204は、メモリコントローラ202の内部に存在し、ポート#1〜ポート#4のアドレス変換を行う。変換方法の一例は、図3にて後述する。CPU#1〜CPU#4には、キャッシュメモリ#1〜キャッシュメモリ#4が搭載されている。
The
図2で示されるソフトウェアは、スケジューラ#1〜スケジューラ#4、ソフトウェア205−1〜ソフトウェア205−4である。また、ソフトウェアがアクセスする記憶領域として、キャッシュメモリブロック206−1〜キャッシュメモリブロック206−4と共用メモリブロック207−1〜共用メモリブロック207−4が存在する。
The software shown in FIG. 2 is
スケジューラ#1〜スケジューラ#4は、OS、またはユーザから起動要求が行われたソフトウェアを、CPU#1〜CPU#4の使用状況から、どのCPUで実行するかを決定する。たとえば、スケジューラ#1〜スケジューラ#4は、CPU#1〜CPU#4のうち最も使用されていないCPUを起動要求が行われたCPUとして決定する。また、スケジューラ#1〜スケジューラ#4は、起動要求が行われたソフトウェアに基づいて、ポート接続器203とアドレス変換器204に設定を通知する。
The
ソフトウェア205−1は、CPU#1で実行されている。CPU#1は、ソフトウェア205−1によってキャッシュメモリブロック206−1にアクセスするほか、キャッシュメモリブロック206−1に必要なデータが存在しない場合に、ポート#1を経由して共用メモリブロック207−1にアクセスする。
Software 205-1 is executed by
ソフトウェア205−2は、CPU#2とCPU#3で実行されている。CPU#2は、ソフトウェア205−2によってキャッシュメモリブロック206−2−1にアクセスするほか、キャッシュメモリブロック206−2−1に必要なデータが存在しない場合、ポート#2を経由して共用メモリブロック207−2にアクセスする。CPU#3も、ソフトウェア205−2によってキャッシュメモリブロック206−2−2にアクセスするほか、キャッシュメモリブロック206−2−2に必要なデータが存在しない場合、ポート#2を経由して共用メモリブロック207−2にアクセスする。
Software 205-2 is executed by
ソフトウェア205−3とソフトウェア205−4は、CPU#4で実行されている。CPU#4は、ソフトウェア205−3とソフトウェア205−4によってそれぞれのソフトウェアに対応するキャッシュメモリブロック206−3、キャッシュメモリブロック206−4にアクセスする。キャッシュメモリブロックに必要なデータが存在しない場合、CPU#4は、ポート#4を経由して共用メモリブロック207−3、共用メモリブロック207−4にアクセスする。
Software 205-3 and software 205-4 are executed by
図3は、物理アドレス空間の分割と論理アドレス空間の結合の例を示す説明図である。ハードウェアとして、共用メモリ201を含む共用メモリブロック#1〜共用メモリブロック#4の物理アドレス空間は、次のように設定する。共用メモリブロック#1の物理アドレス空間は、0x0000〜0x00ffとする。同様に、共用メモリブロック#2の物理アドレス空間は、0x1000〜0x10ffとする。共用メモリブロック#3の物理アドレス空間は、0x2000〜0x20ffとする。共用メモリブロック#4の物理アドレス空間は、0x3000〜0x30ffとする。
FIG. 3 is an explanatory diagram showing an example of the division of the physical address space and the combination of the logical address space. As hardware, the physical address spaces of the shared
前述の状態で、ソフトウェア205−1によってアクセスされる論理アドレス空間が、0x0000〜0x00ffである場合を想定する。CPU#1は、ポート#1にアクセスするため、ポート接続器203によってポート#1を接続状態にする。また、CPU#1は、論理アドレス空間と共用メモリブロック#1の物理アドレス空間とが等しいため、アドレス変換器204をアドレススルーに設定する。アドレススルーの設定とは、論理アドレスを変換せずに物理アドレスとし、共用メモリ201にアクセスする設定である。
Assume that the logical address space accessed by the software 205-1 is 0x0000 to 0x00ff in the above state. In order to access
次に、ソフトウェア205−2によってアクセスされる論理アドレス空間が、0x0000〜0x01ffである場合を想定する。CPU#2で実行されるソフトウェア205−2のマスタスレッドも、論理アドレスとして0x0000〜0x01ffにアクセスすることを想定する。CPU#2は、ポート#2にアクセスするため、ポート接続器203によってポート#2を接続状態にする。
Next, it is assumed that the logical address space accessed by the software 205-2 is 0x0000 to 0x01ff. It is assumed that the master thread of software 205-2 executed by
また、CPU#2は、アドレス変換器204によって、論理アドレス空間と、共用メモリブロック#2および共用メモリブロック#3の物理アドレス空間と、を変換する通知をする。通知を受けることによりポート#2は、論理アドレス0x0000〜0x00ffを物理アドレス0x1000〜0x10ffに変換し、論理アドレス0x0100〜0x01ffを物理アドレス0x2000〜0x20ffに変換する。たとえば、CPU#2が0x0010である論理アドレスにアクセスすると、アドレス変換器204によって、0x1010である物理アドレスに変換される。これにより、アドレス変換器204は、連続していなかった物理アドレス空間を、連続した論理空間としてソフトウェアに提供することができる。
Further, the
同様に、CPU#3で実行されるソフトウェア205−2のスレーブスレッドは、論理アドレスとして0x0000〜0x01ffにアクセスすることを想定する。CPU#3は、ポート#2にアクセスし、ポート#3にはアクセスしないため、ポート接続器203によってポート#3を非接続状態にする。
Similarly, it is assumed that the slave thread of the software 205-2 executed by the
また、ソフトウェア205−3によってアクセスされる論理アドレス空間が、0x0000〜0x00ffである場合を想定する。CPU#4は、ポート#4にアクセスするため、ポート接続器203によってポート#4を接続状態にする。
Further, it is assumed that the logical address space accessed by the software 205-3 is 0x0000 to 0x00ff. In order to access
また、CPU#4は、アドレス変換器204によって、論理アドレス空間と共用メモリブロック#4の物理アドレス空間を変換する通知をする。通知を受けることによりポート#4は、論理アドレス0x0000〜0x00ffを物理アドレス0x3000〜0x30ffに変換する。また、論理アドレス0x0000〜0x00ffを物理アドレス0x3000〜0x30ffに変換する状態を初期の変換状態とし、CPU#4がアドレススルーを設定した場合に、アドレス変換器204は、初期の変換状態でアドレスを変換するようにしてもよい。
Further, the
(マルチコアプロセッサシステム100)
次に、マルチコアプロセッサシステム100の動作について説明する。図4は、マルチコアプロセッサシステム100内の各部の関係を説明するブロック図である。マルチコアプロセッサシステム100は、たとえば、取得部402と、決定部403と、設定部404と、アドレス通知部405と、選択部406と、解除通知部407と、集約部408と、検出部409と、実行開始通知部410と、を含む。制御部となる取得部402〜実行開始通知部410は、記憶装置に記憶されたプログラムをCPUs101が実行する。記憶装置とは、たとえば、図1に示したROM102、RAM103、フラッシュROM104などである。または、I/F108を経由して他のCPUが実行してもよい。
(Multi-core processor system 100)
Next, the operation of the
また、マルチコアプロセッサシステム100は、複数のコアと、コアに対応する複数のポートを備えたメモリコントローラ202と、ポートごとに分割された物理アドレス空間を備えた共用メモリ201を備える。複数のコアとは、CPUs101に属するすべてのCPUであってもよいし、CPUs101のうち、本実施の形態を適用する一部のCPUであってもよい。コアに対応する複数のポートとは、CPUがアクセスする特定のポートであり、たとえば、CPU#1であればポート#1、CPU#2であればポート#2といったように、CPUごとに対応したポートが決定している。図4ではCPU数とポート数が一致しているためCPUとポートが1対1対応となるが、CPU数に比べポート数が少ない場合は、異なるCPUに対応するポートが一致していてもよい。
The
また各ポートは、共用メモリ201の物理アドレス空間を分割した物理アドレス空間にアクセス可能であると設定されている。たとえば、共用メモリ201の物理アドレス空間が0x0000〜0x01ffであった場合に、ポート#1は0x0000〜0x00ffの物理アドレス空間にアクセス可能とし、ポート#2は0x0100〜0x01ffの物理アドレス空間にアクセス可能とする。分割方法は、前述のように物理アドレス空間をポートごとに均等に分割してもよいし、不均等に分割してもよい。
Each port is set to be accessible to a physical address space obtained by dividing the physical address space of the shared
マルチコアプロセッサシステム100は、ソフトウェアごとに対象のソフトウェアを割り当てるコアの数を記憶するデータベースとして、並列度情報テーブル401にアクセス可能である。たとえば、ソフトウェア205−1は、CPU1つを割り当てる分散ソフトウェアとして、ソフトウェア205−2は、CPU2つを割り当てる並列ソフトウェアとして登録されている。並列度情報テーブル401の詳細は、図7にて後述する。
The
取得部402は、並列度情報テーブル401から、実行対象ソフトウェアを割り当てるコアの数を取得する機能を有する。実行対象ソフトウェアとは、ユーザ、またはOSによって起動要求を受けたソフトウェアか、または、スケジューラによって実行後にCPUの割り当てを解除された後に再びスケジューラにより実行されようとしているソフトウェアである。たとえば、ソフトウェア205−2を実行対象とする場合、取得部402は、並列度情報テーブル401から割り当てるCPU数が2つであることを取得する。なお、取得されたデータは、RAM103、フラッシュROM104などの記憶領域に記憶される。
The
決定部403は、取得部402によって取得された実行対象ソフトウェアを割り当てるコアの数と複数のコアの使用状況とに基づいて、実行対象ソフトウェアを割り当てるコアを決定する機能を有する。
The
決定部403の具体例として、たとえば、ソフトウェア205−2を実行対象ソフトウェアとし、取得部402によって割り当てるCPU数が2つであると取得できた場合を想定する。決定部403は、CPUs101の中から、低負荷のCPUとしてCPU#2とCPU#3を、ソフトウェア205−2を割り当てるCPUとして決定する。なお、決定されたCPUの情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
As a specific example of the
設定部404は、複数のポートのうち決定部403によって決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間を取得する。取得された物理アドレス空間の中から、設定部404は、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたコアごとに設定する機能を有する。また、設定部404は、集約部408によって集約された物理アドレス空間を、選択部406によって選択されたポートが新たにアクセス可能な物理アドレス空間に設定してもよい。
The
たとえば、決定されたコアがCPU#2とCPU#3であり、前述のCPUに対応するポートがポート#2、ポート#3であることを想定する。続けて、ポート#2が共用メモリ201にアクセス可能な物理アドレス空間が0x1000〜0x10ffであり、ポート#3が共用メモリ201にアクセス可能な物理アドレス空間が0x2000〜0x20ffであることを想定する。
For example, it is assumed that the determined cores are
この時、設定部404は、物理アドレス空間0x1000〜0x10ff、0x2000〜0x20ffから、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたCPUごとに設定する。規定された論理アドレス空間が0x0000〜0x01ffであれば、CPU#2がポート#2にアクセスする際に、論理アドレス空間0x0000〜0x00ffを物理アドレス空間0x1000〜0x10ffに対応づけて設定する。同様に、CPU#3がポート#3にアクセスする際に、論理アドレス空間0x0100〜0x01ffを物理アドレス空間0x2000〜0x20ffに対応づけて設定する。なお、設定されたアドレス対応情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
At this time, the
アドレス通知部405は、設定部404によって設定された物理アドレス空間と設定された物理アドレス空間に対応する論理アドレス空間とを特定のポートに通知する機能を有する。また、アドレス通知部405は、設定部404によって設定された新たにアクセス可能な物理アドレス空間を選択部406によって選択されたポートに通知してもよい。
The
たとえば、CPU#2がポート#2にアクセスする際に論理アドレス空間0x0000〜0x00ffを物理アドレス空間0x0100〜0x01ffに対応づけて設定された場合を想定する。この時アドレス通知部405は、CPU#2が設定したアドレス対応情報をアドレス変換器204のポート#2に通知する。また、集約部408によって集約された物理アドレス空間が、0x0000〜0x01ffであり、選択部406によってポート#2が選択された場合を想定する。この時アドレス通知部405は、ポート#2が新たにアクセス可能な物理アドレス空間として、0x0000〜0x01ffをポート#2に通知する。
For example, it is assumed that when the
また、アドレス対応情報として、ある程度範囲が決められている場合は、設定可能なパターンを用意してもよい。たとえば、ポートが4つ存在し、共用メモリ201の物理アドレス空間が4つに分割される場合、分割された物理アドレス空間とレジスタ内のビット列を対応づけてもよい。また、論理アドレス空間は、0x0000から開始しアドレス空間が連続となるように対応づけてもよい。
In addition, when the range is determined to some extent as address correspondence information, a settable pattern may be prepared. For example, when there are four ports and the physical address space of the shared
これにより、レジスタの特定のビットを“1”にすることで、物理アドレスと論理アドレスを対応づけることができる。このように、アドレス通知部405は、物理アドレス空間の上限値と下限値、論理アドレスの上限値と下限値を通知するようにしてもよいし、設定可能なパターンを用意することで、通知処理を簡略化してもよい。
Thereby, the physical address and the logical address can be associated with each other by setting a specific bit of the register to “1”. As described above, the
前述した、共用メモリ201の物理アドレス空間が4つに分割された場合を想定する。このとき、設定部404が物理アドレス空間0x0200〜0x02ffに対応するレジスタのビットを“1”にし、物理アドレス空間0x0200〜0x02ffと論理アドレス空間0x0000〜0x00ffを対応づけて設定する。そしてアドレス通知部405は、設定されたレジスタの値を通知してもよい。また、集約部408によって、4つに分割された物理アドレス空間のうち、先頭と3番目の物理アドレス空間が集約された場合、アドレス通知手段としては、対応するビット“0b1010”を通知してもよい。なお、通知したアドレス対応情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
Assume that the physical address space of the shared
選択部406は、決定部403によって決定されたコアに対応する特定のポートが複数存在する場合、特定のポートのうち、任意のポートを選択する機能を有する。たとえば、決定部403によってCPU#2、CPU#3が決定され、対応するポートがポート#2、ポート#3というように複数存在した場合に、任意のポートとしてポート#2を選択する。
The
ポートの選択基準はどのように行ってもよいが、たとえば、実行対象ソフトウェアのマスタスレッドを実行しているCPUに対応しているポートを選択してもよい。また、複数存在するポートの性能が非対称であり、複数のポートのうち、特定のポートの能力が他のポートの能力が上回っているなら、他より性能が上回っているポートを選択してもよい。なお、選択されたポートの情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
The port selection criteria may be set in any way. For example, a port corresponding to the CPU executing the master thread of the execution target software may be selected. Also, if the performance of multiple existing ports is asymmetric and the capabilities of a specific port outperform the capabilities of other ports, you can select a port that performs better than others. . The selected port information is stored in a storage area such as the
解除通知部407は、特定のポートのうち、選択部406によって選択されたポートを除く残余のポートの接続を解除する通知を残余のポートに通知する機能を有する。たとえば、特定のポートがポート#2、ポート#3となり、選択部406によってポート#2が選択された場合、残余となるポート#3に対して、ポートの接続を解除する通知をポート接続器203のポート#3に通知する。なお、通知した接続解除情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
The
集約部408は、複数存在する特定のポートがアクセス可能な物理アドレス空間を集約する機能を有する。たとえば、特定のポートがポート#2、ポート#3であり、ポート#2、ポート#3の物理アドレス空間がそれぞれ、0x0000〜0x00ff、0x0100〜0x01ffである場合を想定する。前述の状態で、集約部408は、集約した物理アドレス空間を0x0000〜0x01ffとする。なお、集約された物理アドレス情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
The
検出部409は、決定部403によって決定されたコアが複数存在する場合、実行対象ソフトウェアを決定されたコア間で同時に実行する開始時刻を検出する機能を有する。また、検出部409は、アドレス通知部405によって特定のポートへの通知を完了した時刻を開始時刻として検出する。たとえば、決定されたCPUがCPU#2、CPU#3であり、特定のポートがポート#2であった場合、CPU#2またはCPU#3がポート#2にアドレス通知部405の実行を完了した時刻を実行対象ソフトウェアの開始時刻として検出することができる。なお、検出が行われたことを示す情報はRAM103、フラッシュROM104などの記憶領域に記憶される。
The
実行開始通知部410は、アドレス通知部405によって特定のポートに通知した後に、実行対象ソフトウェアに実行開始を通知する機能を有する。また、実行開始通知部410は、検出部409によって開始時刻が検出された後に、実行対象ソフトウェアに実行開始を通知してもよい。
The execution
たとえば、CPU#2がポート#2にアドレス通知を行った後に、CPU#2は、実行対象ソフトウェアに実行開始を通知することができる。また、決定された複数のCPUがCPU#2、CPU#3である場合に、検出部409によって開始時刻が検出された後に、CPU#2、CPU#3が実行対象ソフトウェアに実行開始を通知することができる。なお、実行開始通知は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
For example, after the
図5は、ポート接続器203のブロック図である。ポート接続器203は、メモリコントローラ202の一形態であり、バス110とアドレス変換器204の間に存在し、各ポートの接続、非接続を制御する。各ポートの接続、非接続は、CPU#1〜CPU#4によってアクセスされる設定レジスタ501によって制御される。設定レジスタ501は、設定レジスタ501#1〜設定レジスタ501#4を含み、各ポートの接続、非接続を制御する。
FIG. 5 is a block diagram of the
たとえば、設定レジスタ501#1は、スイッチ#1を制御し、ポート#1の接続、非接続を設定する。設定レジスタ501#1は、設定値が“1”であればポート#1を接続にし、設定値が“0”であればポート#1を非接続にする。他の設定レジスタも同様に、設定レジスタ501#2〜設定レジスタ501#4が、それぞれポート#2〜ポート#4の接続、非接続を行う。非接続となったポートは、ポート内の結線に電力が供給されなくなる。結果、ポートが不要の場合にポートを非接続とすることで、省電力効果を得ることができる。
For example, the
図6は、アドレス変換器204と設定の一例を示す説明図である。符号601で示す説明図は、アドレス変換器204を示す。アドレス変換器204は、メモリコントローラ202の一形態であり、ポート接続器203と共用メモリ201の間に存在し、各ポートの論理アドレスと物理アドレスを変換する。各ポートの論理アドレスと物理アドレスの変換は、CPU#1〜CPU#4によってアクセスされる変換レジスタ603#1〜変換レジスタ603#4によって制御される。
FIG. 6 is an explanatory diagram showing an example of the
一実施形態として変換レジスタ603#1は、TLB(Translation Lookaside Buffer)#1を制御する。制御されたTLB#1は、ポート#1の論理アドレス空間と物理アドレス空間を変換する。符号602で示す説明図は、変換レジスタ603#1とTLB#1との関係の一例を示す説明図である。変換レジスタ603#1の設定に応じて、TLB#1に設定される内容が変化する。たとえば、CPU#1が、変換レジスタ603#1を“0b0000”に設定した場合、TLB#1の設定は設定なしとなり、アドレススルーの設定となる。
As an embodiment, the
また、CPU#1が、変換レジスタ603#1を“0b1000”に設定した場合、TLB#1の設定がTLB#1設定604−1となる。TLB#1設定604−1は、論理アドレス空間0x0000〜0x00ffを、共用メモリブロック#1の物理アドレス空間に指定している。
Further, when the
また、CPU#1が、変換レジスタ603#1を“0b1100”に設定した場合、TLB#1の設定がTLB#1設定604−2となる。TLB#1設定604−2は、論理アドレス空間0x0000〜0x01ffを、共用メモリブロック#1と共用メモリブロック#2の物理アドレス空間に指定している。このように、ポート#1が共用メモリブロック#1に、ポート#2が共用メモリブロック#2にアクセス可能であった状態から、ポート#1にポート#1とポート#2のアクセス可能な物理アドレス空間を集約することになる。
When the
また、CPU#1が、変換レジスタ603#1を“0b1010”に設定した場合、TLB#1の設定がTLB#1設定604−3となる。TLB#1設定604−3は、論理アドレス空間0x0000〜0x01ffを、共用メモリブロック#1と共用メモリブロック#3の物理アドレスに指定している。このように、ポート#1が共用メモリブロック#1に、ポート#3が共用メモリブロック#3にアクセス可能であった状態から、ポート#1にポート#1とポート#3のアクセス可能な物理アドレス空間を集約することになる。
When the
また、CPU#1が、変換レジスタ603#1を“0b1110”に設定した場合、TLB#1の設定がTLB#1設定604−4となる。TLB#1設定604−4は、論理アドレス空間0x0000〜0x02ffを、共用メモリブロック#1〜共用メモリブロック#3の物理アドレスに指定している。このように、ポート#1〜ポート#3がそれぞれ共用メモリブロック#1〜共用メモリブロック#3にアクセス可能であった状態から、ポート#1にポート#1〜ポート#3のアクセス可能な物理アドレス空間を集約することになる。
When
同様にTLB#2〜TLB#4も、変換レジスタ603#2〜変換レジスタ603#4によって、アドレス変換方法が指定される。また、本実施の形態では、変換レジスタ603によってTLBの内容を指定していたが、変換レジスタ603にて直接TLBの内容を記述してもよい。
Similarly, for
図7は、並列度情報テーブル401の記憶内容の一例を示す説明図である。並列度情報テーブル401は、たとえば、ソフトウェア名称、並列度情報、並列数Pという3つのフィールドを含む。ソフトウェア名称フィールドは、ソフトウェアの名称を格納する。たとえば、ソフトウェアに対応するプロセスの開始アドレスが設定されており、CPUは、プロセスの開始アドレスを参照して処理を実行することができる。 FIG. 7 is an explanatory diagram showing an example of the stored contents of the parallel degree information table 401. The parallel degree information table 401 includes, for example, three fields: software name, parallel degree information, and parallel number P. The software name field stores the name of the software. For example, a process start address corresponding to software is set, and the CPU can execute processing with reference to the process start address.
並列度情報フィールドは、各CPUが分散されてソフトウェアを処理するか、複数のCPUが並列に動作してソフトウェアを処理するかを示す識別子を格納する。格納される識別子は、“分散”と“並列”である。“分散”識別子は、名称フィールドに格納されたソフトウェアが1つのCPUで実行される分散ソフトウェアであることを示す。“並列”識別子は、名称フィールドに格納されたソフトウェアが2つ以上のCPUで実行される並列ソフトウェアであることを示す。並列数Pフィールドは、名称フィールドに格納されたソフトウェアが実行される際のCPU数を示す。たとえば、UI処理は、分散ソフトウェアであり、1つのCPUで実行される。Webブラウザは、並列ソフトウェアであり、3つのCPUで実行される。 The parallel degree information field stores an identifier indicating whether each CPU is distributed to process software, or a plurality of CPUs operate in parallel to process software. The stored identifiers are “distributed” and “parallel”. The “distributed” identifier indicates that the software stored in the name field is distributed software executed by one CPU. The “parallel” identifier indicates that the software stored in the name field is parallel software executed by two or more CPUs. The parallel number P field indicates the number of CPUs when the software stored in the name field is executed. For example, the UI processing is distributed software and is executed by one CPU. The web browser is parallel software and is executed by three CPUs.
図8は、分散ソフトウェアと並列ソフトウェアが混載した状態を示す説明図である。マルチコアプロセッサシステム100は、ソフトウェアとして、並列ソフトウェアP1、並列ソフトウェアP2、分散ソフトウェアS1〜分散ソフトウェアS6を実行している。CPU#1〜CPU#4は、メモリコントローラ202を通じて、共用メモリ201にアクセスする。
FIG. 8 is an explanatory diagram showing a state in which distributed software and parallel software are mixedly installed. The
次に各CPUのソフトウェア実行状態を説明する。CPU#1は、OS#1によって並列ソフトウェアP1のマスタスレッドP1と分散ソフトウェアS2と分散ソフトウェアS3を順次実行する。CPU#2は、OS#2によって並列ソフトウェアP1のスレーブスレッドP1−1と並列ソフトウェアP2のマスタスレッドP2と分散ソフトウェアS4を順次実行する。CPU#3は、OS#3によって並列ソフトウェアP1のスレーブスレッドP1−2と並列ソフトウェアP2のスレーブスレッドP2−1と分散ソフトウェアS5を順次実行する。CPU#4は、OS#4によって分散ソフトウェアS1と並列ソフトウェアP2のスレーブスレッドP2−2と分散ソフトウェアS6を順次実行する。
Next, the software execution state of each CPU will be described. The
図9は、図8におけるCPUのディスパッチ周期パターンを示す説明図である。CPU#1〜CPU#4は、変換器設定処理によってメモリコントローラ202の設定を定期的にポート#1〜ポート#4に通知する。変換器設定処理とは、ポート接続器203の設定レジスタ501の設定と、アドレス変換器204の変換レジスタ603の設定を行う処理である。
FIG. 9 is an explanatory diagram showing a dispatch cycle pattern of the CPU in FIG.
たとえば、ポート#1では、変換器設定処理u#1−1によって分散ソフトウェアの設定を行うことができる。変換器設定処理u#1−1が実行されるタイミングで、ポート#2では変換器設定処理u#2−1によって、ポート#3では変換器設定処理u#3−1によって、ポート#4では変換器設定処理u#4−1によって、分散ソフトウェアの設定が行われる。設定処理の一例としては、ポート接続器203に行う接続設定、解除設定と、アドレス変換器204に行う論理単独空間設定、論理連続空間設定である。論理連続空間設定を行うことにより、複数のポートがアクセス可能な物理アドレス空間を、1つのポートがアクセス可能な物理アドレス空間に集約することになる。
For example, in
また、一定期間経過後、ポート#1〜ポート#4は、変換器設定処理u#1−2〜変換器設定処理u#4−2によって設定が更新される。一例として、ポート#1は、変換器設定処理u#1−2によって分散ソフトウェアの設定に更新される。ポート#2〜ポート#4は変換器設定処理u#2−2〜変換器設定処理u#4−2によって並列ソフトウェアP2の設定に更新される。この例において並列ソフトウェアP2の設定は同時に実行されるため、ポート#2〜ポート#4を制御するCPUは、バリア同期コード903−1〜バリア同期コード903−3を実行することができる。
Further, after a certain period of time, the settings of the
バリア同期コードとは、同期が必要なすべてのCPUの処理が終了するのを待つコードである。たとえば、本実施の形態では、ポート#2の制御をCPU#2が行い、ポート#3の制御をCPU#3が行い、ポート#4の制御をCPU#4が行う。よって、CPU#2が変換器設定処理U#2−2を行った後、CPU#2は、バリア同期コード903−1を実行し待機する。
The barrier synchronization code is a code that waits for the processing of all CPUs that require synchronization to end. For example, in the present embodiment,
CPU#3、CPU#4も同様に、変換器設定処理を行った後、バリア同期コードを実行し待機する。CPU#2〜CPU#4がバリア同期コードを実行した段階で、ソフトウェアを実行開始する開始時刻として検出し、待機していたCPUは復帰し、並列ソフトウェアP2を実行する。これにより、並列ソフトウェアP2のアクセスをCPU#2〜CPU#4が同時に行うことができる。
Similarly,
並列ソフトウェアP1との同期コード901は、並列ソフトウェアP1が連続する論理アドレス空間にアクセスするためのコードである。同期コード901は、たとえばタイミングt1では、変換器設定処理u#1−3〜変換器設定処理u#3−3とバリア同期コード904−1〜バリア同期コード904−3によって並列ソフトウェアP1の設定を行う。 The synchronization code 901 with the parallel software P1 is a code for accessing the logical address space where the parallel software P1 is continuous. For example, at the timing t1, the synchronization code 901 sets the parallel software P1 by the converter setting process u # 1-3 to the converter setting process u # 3-3 and the barrier synchronization code 904-1 to the barrier synchronization code 904-3. Do.
同様に、並列ソフトウェアP2との同期コード902は、並列ソフトウェアP2が連続する論理アドレス空間にアクセスするためのコードである。同期コード902は、たとえばタイミングt3では、変換器設定処理u#2−5〜変換器設定処理u#4−5とバリア同期コード905−1〜バリア同期コード905−3によって並列ソフトウェアP2の設定を行う。タイミングt1〜タイミングt3における、マルチコアプロセッサシステム100でのソフトウェアの実行状態と、メモリコントローラ202の設定状態を、図10〜図15にて示す。
Similarly, the synchronization code 902 with the parallel software P2 is a code for accessing the logical address space where the parallel software P2 is continuous. For example, at the timing t3, the synchronization code 902 sets the parallel software P2 by the converter setting process u # 2-5 to the converter setting process u # 4-5 and the barrier synchronization code 905-1 to the barrier synchronization code 905-3. Do. The execution state of software in the
図10は、タイミングt1におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。タイミングt1におけるマルチコアプロセッサシステム100は、CPU#1〜CPU#3にて、並列ソフトウェアP1を実行し、CPU#4にて分散ソフトウェアS1を実行する。また、メモリコントローラ202の設定状態としては、ポート#1がマスタポートとなり、CPU#1〜CPU#3における並列ソフトウェアP1の実行により、ポート#1が共用メモリ201のアクセスを行う。また、ポート#2とポート#3は非接続状態である。ポート#4もマスタポートとなり、CPU#4における分散ソフトウェアS1の実行により、ポート#4が共用メモリ201のアクセスを行う。
FIG. 10 is an explanatory diagram showing a software execution state and a setting state of the
図11は、タイミングt1におけるメモリコントローラ202の状態を示す説明図である。符号1101で示す図は、ポート接続器203の状態と、アドレス変換器204の状態を示す。符号1102で示す表群は、TLB#1とTLB#4の設定状態を示す。ポート#1では、変換器設定処理u#1−3によって、設定レジスタ501−1に“1”が設定される。これによりポート#1は接続状態となる。続けてポート#1では、変換器設定処理u#1−3によって、変換レジスタ603#1を“0b1110”に設定することでTLB#1にTLB#1設定1103が設定される。これにより、ポート#1は、共用メモリブロック#1〜共用メモリブロック#3にアクセスし、かつ、連続する論理アドレス空間0x0000〜0x02ffを並列ソフトウェアP1に提供することができる。
FIG. 11 is an explanatory diagram showing the state of the
ポート#2では、変換器設定処理u#2−3によって、設定レジスタ501−2に“0”が設定される。これによりポート#2は非接続状態となる。同様に、ポート#3では、変換器設定処理u#3−3によって、設定レジスタ501−3に“0”が設定される。これによりポート#3も非接続状態となる。ポート#4では、変換器設定処理u#4−3によって、設定レジスタ501−4に“1”が設定される。これによりポート#4は接続状態となる。続けて、続けてポート#4では、変換器設定処理u#4−3によって、TLB#4にTLB#4設定1104が設定される。これにより、ポート#4は、共用メモリブロック#4にアクセスし、かつ、物理アドレス空間から変換された論理アドレス空間を分散ソフトウェアS1に提供することができる。
At
図12は、タイミングt2におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。タイミングt2におけるマルチコアプロセッサシステム100は、CPU#1にて分散ソフトウェアS3を実行する。同様に、マルチコアプロセッサシステム100は、CPU#2にて分散ソフトウェアS4を、CPU#3にて分散ソフトウェアS5を、CPU#4にて分散ソフトウェアS6をそれぞれ実行する。また、メモリコントローラ202の設定状態としては、ポート#1〜ポート#4がマスタポートとなり、共用メモリ201のアクセスを行う。
FIG. 12 is an explanatory diagram showing a software execution state and a setting state of the
図13は、タイミングt2におけるメモリコントローラ202の状態を示す説明図である。符号1301で示す図は、ポート接続器203の状態と、アドレス変換器204の状態を示す。符号1302で示す表群は、TLB#1〜TLB#4の設定状態を示す。ポート#1では、変換器設定処理u#1−4によって、設定レジスタ501−1に“1”が設定される。これによりポート#1は接続状態となる。続けてポート#1では、変換器設定処理u#1−4によって、TLB#1にTLB#1設定1303が設定される。これにより、ポート#1は、共用メモリブロック201#1にアクセスし、かつ、物理アドレス空間から変換された論理アドレス空間を分散ソフトウェアS3に提供することができる。
FIG. 13 is an explanatory diagram showing the state of the
ポート#2〜ポート#4も同様である。ポート#2は、変換器設定処理u#2−4によって接続状態となり、共用メモリブロック201#2にアクセスし、TLB#2にTLB#2設定1304が設定され、論理アドレス空間を分散ソフトウェアS4に提供する。ポート#3は、変換器設定処理u#3−4によって接続状態となり、共用メモリブロック201#3にアクセスし、TLB#3にTLB#3設定1305が設定され、論理アドレス空間を分散ソフトウェアS5に提供する。ポート#4は、変換器設定処理u#4−4によって接続状態となり、共用メモリブロック201#4にアクセスし、TLB#4にTLB#4設定1306が設定され、論理アドレス空間を分散ソフトウェアS6に提供する。
The same applies to
図14は、タイミングt3におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。タイミングt3におけるマルチコアプロセッサシステム100は、CPU#1にて分散ソフトウェアS2を実行し、CPU#2〜CPU#4にて、並列ソフトウェアP2を実行する。また、メモリコントローラ202の設定状態としては、ポート#1はマスタポートとなり、CPU#1における分散ソフトウェアS2の実行により、ポート#1が共用メモリ201のアクセスを行う。また、ポート#2もマスタポートとなり、CPU#2〜CPU#4における並列ソフトウェアP2の実行により、ポート#2が共用メモリ201のアクセスを行う。また、ポート#3とポート#4は非接続状態である。
FIG. 14 is an explanatory diagram showing a software execution state and a setting state of the
図15は、タイミングt3におけるメモリコントローラ202の状態を示す説明図である。符号1501で示す図は、ポート接続器203の状態と、アドレス変換器204の状態を示す。符号1502で示す表群は、TLB#1とTLB#2の設定状態を示す。ポート#1では、変換器設定処理u#1−5によって、設定レジスタ501−1に“1”が設定される。これによりポート#1は接続状態となる。続けてポート#1では、変換器設定処理u#1−5によって、変換レジスタ603#1を“0b1000”に設定することでTLB#1にTLB#1設定1503が設定される。これにより、ポート#1は、共用メモリブロック201#1にアクセスし、物理アドレス空間から変換された論理アドレス空間を分散ソフトウェアS2に提供することができる。
FIG. 15 is an explanatory diagram showing the state of the
ポート#2では、変換器設定処理u#2−5によって、設定レジスタ501−2に“1”が設定される。これによりポート#2は接続状態となる。続けてポート#2では、変換器設定処理u#2−5によって、TLB#2にTLB#2設定1504が設定される。これにより、ポート#2は、共用メモリブロック201#2〜共用メモリブロック201#4にアクセスし、かつ、連続する論理アドレス空間0x0000〜0x02ffを並列ソフトウェアP2に提供することができる。
At
ポート#3では、変換器設定処理u#3−5によって、設定レジスタ501−3に“0”が設定される。これによりポート#3は非接続状態となる。同様に、ポート#4では、変換器設定処理u#4−5によって、設定レジスタ501−4に“0”が設定される。これによりポート#4も非接続状態となる。
At
図16は、スケジューリング処理を示すフローチャートである。スケジューリング処理は、ソフトウェアが起動されたときの機能としてスケジューラ#1〜スケジューラ#4で実行される。ステップS1601〜ステップS1604、ステップS1610、ステップS1611は、CPUs101のうち、特定のCPUで実行され、ステップS1605〜ステップS1609は、ステップS1603で検出されたCPUで実行される。本実施の形態では、前述した特定のCPUがCPU#1であることを想定する。
FIG. 16 is a flowchart showing the scheduling process. The scheduling process is executed by the
CPU#1は、対象のソフトウェアの起動要求を受ける(ステップS1601)。起動要求は、たとえば、ユーザがUIの操作によって発行される。続けて、CPU#1は、並列度情報テーブル401から、対象のソフトウェアの並列度情報と並列数Pを取得する(ステップS1602)。続けて、CPU#1は、低負荷のCPUを並列数P個検出する(ステップS1603)。
たとえば、CPU#1は、スケジューラ#1〜スケジューラ#4の情報より、CPUの使用状況に応じて負荷の低いCPUから、P個のCPUを検出することができる。CPUの使用状況とは、CPU使用率でもよいし、CPUのメモリ使用率でもよい。たとえば、P=2であり、CPUの使用状況の高い順が、CPU4、CPU3、CPU2、CPU1であった場合、CPU#1は、CPU2、CPU1を検出することができる。
For example, the
検出後、CPU#1は、検出されたCPU群のうち、先頭のCPUを選択する(ステップS1604)。選択されたCPUは、アドレス空間変換処理を実行する(ステップS1605)。アドレス空間変換処理の詳細は、図17にて後述する。処理後、選択されたCPUは、対象のソフトウェアの並列度情報が“並列”か否かを判断する(ステップS1606)。
After the detection,
並列度情報が“分散”である場合(ステップS1606:No)、選択されたCPUは、ポート接続器203、アドレス変換器204を制御するドライバタスクを実行する(ステップS1608)。ドライバタスクの動作内容は、ステップS1605の処理にて設定されたポート接続器203、アドレス変換器204への設定と、バリア同期コードの実行を一定周期で行うタスクである。
When the degree of parallelism information is “distributed” (step S1606: No), the selected CPU executes a driver task for controlling the
並列度情報が“並列”である場合(ステップS1606:Yes)、選択されたCPUは、続けて、選択されたCPUが対象のソフトウェアのメインスレッドを動作するCPUかを判断する(ステップS1607)。選択されたCPUがメインスレッドを実行するCPUである場合(ステップS1607:Yes)、選択されたCPUは、ステップS1608の処理に移行する。選択されたCPUがスレーブスレッドを実行するCPUである場合(ステップS1607:No)、またはステップS1608の処理終了後、選択されたCPUは、スケジューリング処理の結果に従ったディスパッチを行う(ステップS1609)。 If the degree of parallelism information is “parallel” (step S1606: Yes), the selected CPU subsequently determines whether the selected CPU is a CPU that operates the main thread of the target software (step S1607). When the selected CPU is a CPU that executes the main thread (step S1607: Yes), the selected CPU proceeds to the process of step S1608. When the selected CPU is a CPU that executes a slave thread (step S1607: No), or after the process of step S1608 is completed, the selected CPU performs dispatch according to the result of the scheduling process (step S1609).
ステップS1609終了後、CPU#1は、選択されたCPUが検出されたCPU群の末尾のCPUであるかを判断する(ステップS1610)。末尾のCPUでない場合(ステップS1610:No)、CPU#1は、検出されたCPU群の、次のCPUを選択し(ステップS1611)、ステップS1605の処理に移行する。末尾のCPUである場合(ステップS1610:Yes)、CPU#1はスケジューリング処理を終了する。
After step S1609,
図17は、アドレス空間変換処理を示すフローチャートである。アドレス空間変換処理は、ステップS1604、またはステップS1611で選択されたCPUによって実行される。選択されたCPUは、並列数Pが1かを判断する(ステップS1701)。並列数Pが1である場合(ステップS1701:Yes)、選択されたCPUは、ポート接続器203接続設定(ステップS1702)と、アドレス変換器204論理単独空間設定(ステップS1703)を実行し、アドレス空間変換処理を終了する。
FIG. 17 is a flowchart showing the address space conversion process. The address space conversion process is executed by the CPU selected in step S1604 or step S1611. The selected CPU determines whether the parallel number P is 1 (step S1701). When the parallel number P is 1 (step S1701: Yes), the selected CPU executes the
ポート接続器203接続設定とは、選択されたCPUに対応するポートを接続状態にする処理である。たとえば、選択されたCPUがCPU#1であれば、CPU#1は、ポート#1の接続状態を制御する設定レジスタ501#1を“1”に設定することができる。アドレス変換器204論理単独空間設定とは、ソフトウェアの論理アドレス空間を、選択されたCPUに対応するポートの共用メモリブロック#1〜共用メモリブロック#4のいずれか1つの物理アドレス空間に対応づける設定である。
The
並列数Pが1でない場合(ステップS1701:No)、選択されたCPUは、選択されたCPUがメインスレッドを実行するCPUかを判断する(ステップS1704)。選択されたCPUがメインスレッドを実行するCPUである場合(ステップS1704:Yes)、選択されたCPUは、ポート接続器203接続設定(ステップS1705)と、アドレス変換器204論理連続空間設定(ステップS1706)を実行する。アドレス変換器204論理連続空間設定とは、ソフトウェアの論理アドレス空間を、選択されたCPUに対応するポートの共用メモリブロック#1〜共用メモリブロック#4のうち2つ以上の共用メモリブロックの物理アドレス空間に集約して対応づける設定である。また、対応づけられた論理アドレスは連続空間となるように設定される。
When the parallel number P is not 1 (step S1701: No), the selected CPU determines whether the selected CPU is a CPU that executes the main thread (step S1704). When the selected CPU is a CPU that executes the main thread (step S1704: Yes), the selected CPU sets the
選択されたCPUがスレーブスレッドを実行するCPUである場合(ステップS1704:No)、選択されたCPUは、ポート接続器203解除設定を実行する(ステップS1707)。ポート接続器203解除設定とは、選択されたCPUに対応するポートを非接続状態にする処理である。また、ポート接続器203接続設定、ポート接続器203解除設定、アドレス変換器204論理単独空間設定、アドレス変換器204論理連続空間設定が、図9にて前述した変換器設定処理となる。
When the selected CPU is a CPU that executes a slave thread (step S1704: No), the selected CPU executes the
ステップS1706、またはステップS1707の処理終了後、選択されたCPUは、スレッドディスパッチャに同時実行設定を行う(ステップS1708)。たとえば、対象となるソフトウェアを同時に実行するソフトウェアとして、選択されたCPUは、スレッドディスパッチャに対象となるソフトウェアを登録する。続けて、選択されたCPUは、バリア同期コードと周期タイミングを設定し(ステップS1709)、アドレス空間変換処理を終了する。バリア同期コードを並列ソフトウェアが実行される前に実行することで、並列ソフトウェアを実行するCPU群は、並列ソフトウェアを同時に実行する開始時刻を検出することができる。周期タイミングの設定とは、対象となるソフトウェアをCPU間で同じタイミングで割り当てるように設定することである。 After the processing in step S1706 or step S1707 is completed, the selected CPU performs simultaneous execution setting in the thread dispatcher (step S1708). For example, the selected CPU registers the target software in the thread dispatcher as software that simultaneously executes the target software. Subsequently, the selected CPU sets the barrier synchronization code and the cycle timing (step S1709), and ends the address space conversion process. By executing the barrier synchronization code before the parallel software is executed, the CPU group executing the parallel software can detect the start time of executing the parallel software simultaneously. The setting of the cycle timing is to set the target software so as to be allocated at the same timing between the CPUs.
以上説明したように、マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムによれば、ポートごとに物理アドレス空間を分割した状態にて、実行対象ソフトウェアを割り当てるCPUを決定する。続けて、CPUに対応したポートがアクセス可能な物理アドレス空間の中から、実行対象ソフトウェアで規定された論理アドレスを指定して、ポートに通知した後に、実行対象ソフトウェアを起動する。 As described above, according to the multi-core processor system, the control method for the multi-core processor system, and the control program for the multi-core processor system, the CPU to which the execution target software is assigned is determined with the physical address space divided for each port. . Subsequently, the logical address defined by the execution target software is designated from the physical address space accessible by the port corresponding to the CPU, and the execution target software is started after notifying the port.
これにより、実行対象ソフトウェアを実行するCPUがアクセスするポートの物理アドレス空間と、他のCPUがアクセスするポートの物理アドレス空間が異なるため、アクセス競合を回避することができる。 Thereby, since the physical address space of the port accessed by the CPU executing the execution target software is different from the physical address space of the port accessed by another CPU, it is possible to avoid access contention.
また、マルチコアプロセッサシステムは、実行対象ソフトウェアを割り当てるCPUに対応する特定のポートが複数存在する場合、任意の一つのポートを選択し、選択しなかったポートの接続を解除してもよい。続けて、マルチコアプロセッサシステムは、特定のポートの物理アドレス空間を集約し、集約した物理アドレス空間を選択したポートの物理アドレス空間に設定してもよい。 In addition, when there are a plurality of specific ports corresponding to the CPU to which the execution target software is assigned, the multi-core processor system may select any one port and release the connection of the port that has not been selected. Subsequently, the multi-core processor system may aggregate the physical address space of a specific port and set the aggregated physical address space as the physical address space of the selected port.
これにより、ソフトウェア間でのアクセス競合を回避することができ、さらに、不要なポートを解除したことで省電力効果を得ることができる。また、複数のCPUを使用する実行対象ソフトウェアにて、マスタスレッドとスレーブスレッドでアクセスする論理アドレス空間が離れている場合には、物理アドレス空間の集約を行わなくてもよい。これにより、ソフトウェア内でのアクセス競合も回避することができる。 As a result, it is possible to avoid an access conflict between software, and it is possible to obtain a power saving effect by releasing unnecessary ports. Further, in the execution target software using a plurality of CPUs, when the logical address space accessed by the master thread and the slave thread is separated, the physical address space need not be aggregated. As a result, access contention in the software can be avoided.
また、マルチコアプロセッサシステムは、実行対象ソフトウェアを割り当てるCPUが複数存在する場合に、特定のポートへのアドレス変換通知を完了した後に、実行対象ソフトウェアに実行開始を通知してもよい。 Further, when there are a plurality of CPUs to which execution target software is allocated, the multi-core processor system may notify the execution target software of the start of execution after completing the address conversion notification to a specific port.
これにより、ソフトウェア間のアクセス競合を回避することができ、さらに、複数のCPUに割り当てられるソフトウェアを混載することができる。混載の具体例としては、図8で示したように、並列ソフトウェアP1がCPU#1〜CPU#3に割り当てられ、並列ソフトウェアP2がCPU#2〜CPU#4に割り当てられた状態である。混載された場合でも、並列ソフトウェアが各コアで同じタイミングに実行対象となるようにする。実行対象となった際には、メモリコントローラの特定のポートにアドレス変換通知を行い、通知完了後に並列ソフトウェアを実行することで、正常に動作することができる。
As a result, it is possible to avoid an access conflict between software, and it is possible to load software allocated to a plurality of CPUs. As a specific example of the mixed loading, as shown in FIG. 8, the parallel software P1 is assigned to the
また、マルチコアプロセッサシステムは、コアの数とポートの数が等しくてもよい。これにより、CPUとポートが1対1対応となり、CPU間にてアクセス競合を回避することができる。また、CPUの数よりポートの数が少ない場合にも、一部のCPU間でアクセス競合を避けることができる。 In the multi-core processor system, the number of cores and the number of ports may be equal. As a result, the CPU and the port have a one-to-one correspondence, and access contention between the CPUs can be avoided. Even when the number of ports is smaller than the number of CPUs, access contention among some CPUs can be avoided.
たとえば、CPUを4つ備え、ポートを3つ備えるマルチコアプロセッサシステムにて、CPU#1にはポート#1、CPU#2にはポート#2、CPU#3とCPU#4にはポート#3が対応づけることができる。この場合、CPU#1と、CPU#2と、CPU#3またはCPU#4の間ではアクセス競合を避けることができる。また、CPU#3とCPU#4にて割り当てられるソフトウェアが、お互いのメモリにアクセスする頻度が高いソフトウェアであれば、1つのポートで同じ論理アドレス空間を使用してもよい。
For example, in a multi-core processor system having four CPUs and three ports,
このように、依存関係が高いソフトウェアを割り当てる複数のCPUが決定されているならば、CPU数分ポートを用意し、決定されているCPUに対応するポートに関しては1つにまとめることで、ポート結線にかかるコストを抑えることができる。 In this way, if a plurality of CPUs to which software having a high dependency relationship is determined, ports are prepared for the number of CPUs, and the ports corresponding to the determined CPUs are combined into one to connect the ports. Cost can be reduced.
なお、本実施の形態で説明したマルチコアプロセッサシステムの制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本マルチコアプロセッサシステムの制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本マルチコアプロセッサシステムの制御プログラムは、インターネット等のネットワークを介して配布してもよい。 Note that the control method of the multi-core processor system described in this embodiment can be realized by executing a prepared program on a computer such as a personal computer or a workstation. The control program of the multi-core processor system is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer. The control program for the multi-core processor system may be distributed via a network such as the Internet.
100 マルチコアプロセッサシステム
#1〜#4 CPU、ポート
110 バス
201 共用メモリ
202 メモリコントローラ
203 ポート接続器
204 アドレス変換器
401 並列度情報テーブル
402 取得部
403 決定部
404 設定部
405 アドレス通知部
406 選択部
407 解除通知部
408 集約部
409 検出部
410 実行開始通知部
100 multi-core
Claims (3)
前記複数のコアの各コアに対応しバスと接続する各ポートを有するメモリコントローラと、
前記各ポートに割り当てられた物理アドレス空間を有し、前記複数のコアで実行するソフトウェアと前記ソフトウェアを割り当てるコアの数との対応情報を記憶する共用メモリとを有するマルチコアプロセッサシステムであって、
前記複数のコアのうちの第1のコアは、前記対応情報および前記複数のコアのそれぞれの処理負荷に基づいて、前記複数のコアのうち実行対象ソフトウェアを割り当てる実行コアを決定し、
決定した前記実行コアが複数存在する場合、前記実行コアのうちいずれかのコアは、前記実行対象ソフトウェアに規定された論理アドレス空間と、前記実行コアの各コアに対応する各ポートに割り当てられた物理アドレス空間を集約した物理アドレス空間とを前記メモリコントローラに設定し、
前記実行コアが複数存在する場合、前記実行コアのうち前記いずれかのコアを除く残余のコアは、前記残余のコアに対応するポートの前記バスと前記共用メモリとの接続を解除する通知を前記メモリコントローラに通知する
マルチコアプロセッサシステム。 With multiple cores,
A memory controller having each port corresponding to each of the plurality of cores and connected to a bus ;
The has a physical address space assigned to each port, a multi-core processor system with a shared memory for storing correspondence information between the number of cores to assign software and the software running on the plurality of cores,
The first core of the plurality of cores, pre SL based on the respective processing loads of correspondence information and the plurality of cores to determine the execution core to assign execution target software of the plurality of cores,
If the decision the execution cores there are multiple, one of the core of the execution core includes a logical address space defined before Symbol executed software, assigned to each port corresponding to the core of the execution core A physical address space obtained by consolidating the physical address space and setting the memory controller,
If the execution core there are multiple residual core except the one of the core of the execution core, the notification for releasing the connection between the bus and the shared memory ports corresponding to the remaining core multi-core processor system that notifies the memory controller.
前記各ポートに割り当てられた物理アドレス空間を有し、前記複数のコアで実行するソフトウェアと前記ソフトウェアを割り当てるコアの数との対応情報を記憶する共用メモリとを有するマルチコアプロセッサシステムの制御方法であって、
前記複数のコアのうちの第1のコアが、前記対応情報および前記複数のコアのそれぞれの処理負荷に基づいて、前記複数のコアのうち実行対象ソフトウェアを割り当てる実行コアを決定する、処理を実行し、
決定した前記実行コアが複数存在する場合、前記実行コアのうちいずれかのコアが、前記実行対象ソフトウェアに規定された論理アドレス空間と、前記実行コアの各コアに対応する各ポートに割り当てた物理アドレス空間を集約した物理アドレス空間とを前記メモリコントローラに設定する、処理を実行し、
前記実行コアが複数存在する場合、前記実行コアのうち前記いずれかのコアを除く残余のコアが、前記残余のコアに対応するポートの前記バスと前記共用メモリとの接続を解除する通知を前記メモリコントローラに通知する
処理を実行するマルチコアプロセッサシステムの制御方法。 A memory controller having a plurality of cores and ports corresponding to the cores of the plurality of cores and connected to a bus ;
In the having respective port physical address space assigned to preparative method for controlling a multi-core processor system with a shared memory for storing correspondence information between the number of cores to assign the software to run the software on the plurality of cores There,
The first core of the plurality of cores, pre SL based on the respective processing loads of correspondence information and the plurality of cores to determine the execution core to assign execution target software of the plurality of cores, processes Run,
If determined the execution core there are a plurality, one of the core of the execution core, the logical address space defined before Symbol executed software, assigned to each port corresponding to the core of the execution core A physical address space that is a collection of physical address spaces is set in the memory controller, and processing is performed.
When there are a plurality of the execution cores, the remaining cores other than the one of the execution cores notify the connection between the bus and the shared memory of the port corresponding to the remaining cores. A method for controlling a multi-core processor system that executes processing to notify a memory controller.
前記各ポートに割り当てられた物理アドレス空間を有し、前記複数のコアで実行するソフトウェアと前記ソフトウェアを割り当てるコアの数との対応情報を記憶する共用メモリとを有するマルチコアプロセッサシステムの制御プログラムであって、前記複数のコアのうちの第1のコアに、
前記対応情報および前記複数のコアのそれぞれの処理負荷に基づいて、前記複数のコアのうち実行対象ソフトウェアを割り当てる実行コアを決定し、
決定した前記実行コアが複数存在する場合、前記実行対象ソフトウェアに規定された論理アドレス空間と、前記実行コアの各コアに対応する各ポートに割り当てた物理アドレス空間を集約した物理アドレス空間とを前記メモリコントローラに設定し、
前記実行コアが複数存在する場合、前記実行コアのうちいずれかのコアを除く残余のコアに対応するポートの前記バスと前記共用メモリとの接続を解除する通知を前記メモリコントローラに通知する
処理を実行させるマルチコアプロセッサシステムの制御プログラム。 A memory controller having a plurality of cores and ports corresponding to the cores of the plurality of cores and connected to a bus ;
In the having respective port physical address space assigned to preparative, the control program of the multi-core processor system having a shared memory for storing correspondence information between the number of cores to assign the software to run the software on the plurality of cores In the first core of the plurality of cores,
Before SL based on the respective processing loads of correspondence information and the plurality of cores to determine the execution core to assign execution target software of the plurality of cores,
If determined the execution core there are a plurality of the logical address space defined before Symbol executed software, a physical address space that aggregates the physical address space assigned to each port corresponding to the core of the execution core Is set in the memory controller,
When there are a plurality of execution cores, a process of notifying the memory controller of a notification of releasing the connection between the bus and the shared memory of the port corresponding to the remaining core except for any one of the execution cores is performed. A control program for a multi-core processor system to be executed.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014021650A JP5817860B2 (en) | 2014-02-06 | 2014-02-06 | Multi-core processor system, multi-core processor system control method, and multi-core processor system control program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014021650A JP5817860B2 (en) | 2014-02-06 | 2014-02-06 | Multi-core processor system, multi-core processor system control method, and multi-core processor system control program |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012506730A Division JP5472447B2 (en) | 2010-03-25 | 2010-03-25 | Multi-core processor system, memory controller control method, and memory controller control program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014078285A JP2014078285A (en) | 2014-05-01 |
JP5817860B2 true JP5817860B2 (en) | 2015-11-18 |
Family
ID=50783473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014021650A Expired - Fee Related JP5817860B2 (en) | 2014-02-06 | 2014-02-06 | Multi-core processor system, multi-core processor system control method, and multi-core processor system control program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5817860B2 (en) |
-
2014
- 2014-02-06 JP JP2014021650A patent/JP5817860B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014078285A (en) | 2014-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5780243B2 (en) | Scheduling method and multi-core processor system | |
US9639409B2 (en) | Device and method for communicating between cores | |
US9910693B2 (en) | Virtual machine to host device bridging | |
JP5472447B2 (en) | Multi-core processor system, memory controller control method, and memory controller control program | |
JP2007041781A (en) | Reconfigurable integrated circuit device | |
CN102193885A (en) | Virtual channel support in a nonvolatile memory controller | |
TWI666551B (en) | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines | |
US9875131B2 (en) | Virtual PCI device based hypervisor bypass using a bridge virtual machine | |
JP2013012235A (en) | Method for communication between plural nodes, interconnect port and interconnect system | |
US20160117200A1 (en) | Resource mapping in multi-threaded central processor units | |
US20080022052A1 (en) | Bus Coupled Multiprocessor | |
US20170371707A1 (en) | Data analysis in storage system | |
JP5708450B2 (en) | Multi-core processor system, register utilization method, and register utilization program | |
WO2012114443A1 (en) | Processor management method | |
JP5817860B2 (en) | Multi-core processor system, multi-core processor system control method, and multi-core processor system control program | |
WO2011039887A1 (en) | Computer device | |
JP6774147B2 (en) | Control device | |
US20190196978A1 (en) | Single instruction multiple data page table walk scheduling at input output memory management unit | |
JP5093242B2 (en) | Information processing apparatus for performing self-diagnosis processing, self-diagnosis processing method, and self-diagnosis processing program | |
US20140013148A1 (en) | Barrier synchronization method, barrier synchronization apparatus and arithmetic processing unit | |
KR100978083B1 (en) | Procedure calling method in shared memory multiprocessor and computer-redable recording medium recorded procedure calling program | |
US9652296B1 (en) | Efficient chained post-copy virtual machine migration | |
TW201314462A (en) | An interconnect structure to support the execution of instruction sequences by a plurality of engines | |
JPS6375954A (en) | Channel control system | |
JP2018081346A (en) | Storage device, storage system, storage control method, and storage control program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140310 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141003 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141014 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150602 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150803 |
|
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: 20150901 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150914 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5817860 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |