JP5472447B2 - マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム - Google Patents

マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム Download PDF

Info

Publication number
JP5472447B2
JP5472447B2 JP2012506730A JP2012506730A JP5472447B2 JP 5472447 B2 JP5472447 B2 JP 5472447B2 JP 2012506730 A JP2012506730 A JP 2012506730A JP 2012506730 A JP2012506730 A JP 2012506730A JP 5472447 B2 JP5472447 B2 JP 5472447B2
Authority
JP
Japan
Prior art keywords
port
address space
physical address
cores
software
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
Application number
JP2012506730A
Other languages
English (en)
Other versions
JPWO2011118013A1 (ja
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2011118013A1 publication Critical patent/JPWO2011118013A1/ja
Application granted granted Critical
Publication of JP5472447B2 publication Critical patent/JP5472447B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Description

本発明は、メモリコントローラを制御するマルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムに関する。
従来から、複数個のCPU(Central Processing Unit)からアクセスされるメモリとして、データを記憶可能な複数のメモリバンクと、データの入出力を可能とする複数の入出力ポートを備えるマルチポートメモリの技術が知られている。また、CPUがメモリのデータを読み書きする際にメモリを制御する装置として、メモリコントローラを用いる技術も知られている。メモリコントローラの機能として、メモリとバスの間、またはCPUとバスの間に、バッファ機構を設け、バッファにデータを一時保留するほか、分岐先のポートへの自動分岐を行う機能を持つという技術が開示されている(たとえば、下記特許文献1を参照。)。
また、メモリへのリクエストとレスポンスの経路を分離し、CPUからのリクエストではマルチポートメモリを制御するメモリコントローラが即座にダミーレスポンスを返す機構により、CPUは次の処理に即座に移行できるといった技術が開示されている(たとえば、下記特許文献2を参照。)。
また、マルチポートを使用する技術として、アドレス空間を機能種別ごとに分割し、分割されたアドレス空間ごとにポートを用意することで、複数の機能を同時に実行し、高速に処理を実行できるという技術が開示されている(たとえば、下記特許文献3を参照。)。
特表平11−510285号公報 特開2008−117109号公報 特開2003−114797号公報
しかしながら、上述した従来技術において、特許文献1にかかる技術では、メモリとバッファ間、バスとバッファ間を高クロックにすることで、経路上のレイテンシを最小にすることができる。しかし、特許文献1にかかる技術は、高クロックにすることで、消費電力が増加するという問題があった。また、特許文献2にかかる技術では、リクエストとレスポンスの経路を分離してもアクセス競合は発生し続けるという問題があった。また、特許文献1にかかる技術と同様に、バスからバッファの間が高クロックとなるため、消費電力が増加するという問題があった。
また、特許文献3にかかる技術では、機能が異なる2つのソフトウェアが同一のアドレス空間にアクセスする場合に、アクセス競合を起こすという問題があった。また、機能種別ごとにポートを用意する必要があり、機能種別が増加するにつれ、ポート数も増加することになり、消費電力が増加するという問題があった。
本発明は、上述した従来技術による問題点を解消するため、アクセス競合を回避できるマルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムを提供することを目的とする。
本実施例の一実施態様によると、複数のコアと、コアに対応する複数のポートを備えたメモリコントローラと、ポートごとに分割された物理アドレス空間を備えた共用メモリと、ソフトウェアごとにソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得し、取得された実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、実行対象ソフトウェアを割り当てるコアを決定し、複数のポートのうち決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間の中から、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたコアごとに設定し、設定された物理アドレス空間と設定された物理アドレス空間に対応する論理アドレス空間とを特定のポートに通知し、特定のポートに通知した後に、実行対象ソフトウェアに実行開始を通知するマルチコアプロセッサシステムを提供する。
本マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムによれば、CPUがアクセスするアドレス範囲と他のCPUがアクセスするアドレス範囲とが異なり、アクセス競合を回避できるという効果を奏する。
実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。 マルチコアプロセッサシステム100のハードウェアの一部とソフトウェアを示すブロック図である。 物理アドレス空間の分割と論理アドレス空間の結合の例を示す説明図である。 マルチコアプロセッサシステム100内の各部の関係を説明するブロック図である。 ポート接続器203のブロック図である。 アドレス変換器204と設定の一例を示す説明図である。 並列度情報テーブル401の記憶内容の一例を示す説明図である。 分散ソフトウェアと並列ソフトウェアが混載した状態を示す説明図である。 図8におけるCPUのディスパッチ周期パターンを示す説明図である。 タイミングt1におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。 タイミングt1におけるメモリコントローラ202の状態を示す説明図である。 タイミングt2におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。 タイミングt2におけるメモリコントローラ202の状態を示す説明図である。 タイミングt3におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。 タイミングt3におけるメモリコントローラ202の状態を示す説明図である。 スケジューリング処理を示すフローチャートである。 アドレス空間変換処理を示すフローチャートである。
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステム)
図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によってそれぞれ接続されている。
ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。CPUs101の詳細は、図2にて後述する。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。本実施形態では、CPUの接続方法によらず、メモリを共有する、すなわちTCMP(Tightly Coupled Multi Processor)のアーキテクチャーを前提とする。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。フラッシュROM104は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F108によって新しいOSを受信し、フラッシュROM104に格納されている古いOSを、受信した新しいOSに更新する。
フラッシュROMコントローラ105は、CPUs101の制御に従ってフラッシュROM106に対するデータのリード/ライトを制御する。フラッシュROM106は、フラッシュROMコントローラ105の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F108を通して取得した画像データ、映像データなどである。フラッシュROM106は、たとえば、メモリカード、SDカードなどを採用することができる。
ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ107は、たとえば、TFT液晶ディスプレイなどを採用することができる。
I/F108は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク111に接続され、ネットワーク111を介して他の装置に接続される。そして、I/F108は、ネットワーク111と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F108には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード109は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード109は、タッチパネル式の入力パッドやテンキーなどであってもよい。
図2は、マルチコアプロセッサシステム100のハードウェアの一部とソフトウェアを示すブロック図である。図2で示されるハードウェアは、共用メモリ201と、メモリコントローラ202と、CPUs101に含まれるCPU#1〜CPU#4とである。メモリコントローラ202と、CPU#1〜CPU#4はバス110によって接続されている。また、以下に登場する符号のうち、#1〜#4のいずれかが付属する符号は、それぞれCPU#1〜CPU#4に対応する符号であることを意味する。
共用メモリ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を制御する。
また、共用メモリ201は、ポート#1〜ポート#4ごとに物理アドレス空間を分断した共用メモリブロック#1〜共用メモリブロック#4に分けられる。共用メモリブロック#1〜共用メモリブロック#4は、物理アドレス空間が連続していてもよいし、離れていてもよい。また、共用メモリ201で1つのメモリバンクとして存在してもよいし、1つの共用メモリブロックが1つのメモリバンクとして存在してもよい。
また、初期状態としてポート#1は共用メモリブロック#1にアクセス可能とする。同様に、ポート#2〜ポート#4も、それぞれ共用メモリブロック#2〜共用メモリブロック#4にアクセス可能とする。しかし、ポートの設定により、1つのポートは複数の共用メモリブロックにアクセス可能としてもよい。たとえば、ポート#1の設定を変更することにより、ポート#1は共用メモリブロック#1と共用メモリブロック#2にアクセス可能としてもよい。
メモリコントローラ202は、共用メモリ201へのデータの読み出し、書き込みを制御する機能を有する。本実施の形態では、メモリコントローラ202は、共用メモリ201にアクセスするポート#1〜ポート#4の設定を変更することで、CPU#1〜CPU#4の共用メモリ201へのアクセスを制御する。
ポート接続器203は、メモリコントローラ202の内部に存在し、ポート#1〜ポート#4の接続、または非接続を行う。図2の例では、ポート接続器203は、バス110側のポート#3を非接続としている。アドレス変換器204は、メモリコントローラ202の内部に存在し、ポート#1〜ポート#4のアドレス変換を行う。変換方法の一例は、図3にて後述する。CPU#1〜CPU#4には、キャッシュメモリ#1〜キャッシュメモリ#4が搭載されている。
図2で示されるソフトウェアは、スケジューラ#1〜スケジューラ#4、ソフトウェア205−1〜ソフトウェア205−4である。また、ソフトウェアがアクセスする記憶領域として、キャッシュメモリブロック206−1〜キャッシュメモリブロック206−4と共用メモリブロック207−1〜共用メモリブロック207−4が存在する。
スケジューラ#1〜スケジューラ#4は、OS、またはユーザから起動要求が行われたソフトウェアを、CPU#1〜CPU#4の使用状況から、どのCPUで実行するかを決定する。たとえば、スケジューラ#1〜スケジューラ#4は、CPU#1〜CPU#4のうち最も使用されていないCPUを起動要求が行われたCPUとして決定する。また、スケジューラ#1〜スケジューラ#4は、起動要求が行われたソフトウェアに基づいて、ポート接続器203とアドレス変換器204に設定を通知する。
ソフトウェア205−1は、CPU#1で実行されている。CPU#1は、ソフトウェア205−1によってキャッシュメモリブロック206−1にアクセスするほか、キャッシュメモリブロック206−1に必要なデータが存在しない場合に、ポート#1を経由して共用メモリブロック207−1にアクセスする。
ソフトウェア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にアクセスする。
ソフトウェア205−3とソフトウェア205−4は、CPU#4で実行されている。CPU#4は、ソフトウェア205−3とソフトウェア205−4によってそれぞれのソフトウェアに対応するキャッシュメモリブロック206−3、キャッシュメモリブロック206−4にアクセスする。キャッシュメモリブロックに必要なデータが存在しない場合、CPU#4は、ポート#4を経由して共用メモリブロック207−3、共用メモリブロック207−4にアクセスする。
図3は、物理アドレス空間の分割と論理アドレス空間の結合の例を示す説明図である。ハードウェアとして、共用メモリ201を含む共用メモリブロック#1〜共用メモリブロック#4の物理アドレス空間は、次のように設定する。共用メモリブロック#1の物理アドレス空間は、0x0000〜0x00ffとする。同様に、共用メモリブロック#2の物理アドレス空間は、0x1000〜0x10ffとする。共用メモリブロック#3の物理アドレス空間は、0x2000〜0x20ffとする。共用メモリブロック#4の物理アドレス空間は、0x3000〜0x30ffとする。
前述の状態で、ソフトウェア205−1によってアクセスされる論理アドレス空間が、0x0000〜0x00ffである場合を想定する。CPU#1は、ポート#1にアクセスするため、ポート接続器203によってポート#1を接続状態にする。また、CPU#1は、論理アドレス空間と共用メモリブロック#1の物理アドレス空間とが等しいため、アドレス変換器204をアドレススルーに設定する。アドレススルーの設定とは、論理アドレスを変換せずに物理アドレスとし、共用メモリ201にアクセスする設定である。
次に、ソフトウェア205−2によってアクセスされる論理アドレス空間が、0x0000〜0x01ffである場合を想定する。CPU#2で実行されるソフトウェア205−2のマスタスレッドも、論理アドレスとして0x0000〜0x01ffにアクセスすることを想定する。CPU#2は、ポート#2にアクセスするため、ポート接続器203によってポート#2を接続状態にする。
また、CPU#2は、アドレス変換器204によって、論理アドレス空間と、共用メモリブロック#2および共用メモリブロック#3の物理アドレス空間と、を変換する通知をする。通知を受けることによりポート#2は、論理アドレス0x0000〜0x00ffを物理アドレス0x1000〜0x10ffに変換し、論理アドレス0x0100〜0x01ffを物理アドレス0x2000〜0x20ffに変換する。たとえば、CPU#2が0x0010である論理アドレスにアクセスすると、アドレス変換器204によって、0x1010である物理アドレスに変換される。これにより、アドレス変換器204は、連続していなかった物理アドレス空間を、連続した論理空間としてソフトウェアに提供することができる。
同様に、CPU#3で実行されるソフトウェア205−2のスレーブスレッドは、論理アドレスとして0x0000〜0x01ffにアクセスすることを想定する。CPU#3は、ポート#2にアクセスし、ポート#3にはアクセスしないため、ポート接続器203によってポート#3を非接続状態にする。
また、ソフトウェア205−3によってアクセスされる論理アドレス空間が、0x0000〜0x00ffである場合を想定する。CPU#4は、ポート#4にアクセスするため、ポート接続器203によってポート#4を接続状態にする。
また、CPU#4は、アドレス変換器204によって、論理アドレス空間と共用メモリブロック#4の物理アドレス空間を変換する通知をする。通知を受けることによりポート#4は、論理アドレス0x0000〜0x00ffを物理アドレス0x3000〜0x30ffに変換する。また、論理アドレス0x0000〜0x00ffを物理アドレス0x3000〜0x30ffに変換する状態を初期の変換状態とし、CPU#4がアドレススルーを設定した場合に、アドレス変換器204は、初期の変換状態でアドレスを変換するようにしてもよい。
(マルチコアプロセッサシステム100)
次に、マルチコアプロセッサシステム100の動作について説明する。図4は、マルチコアプロセッサシステム100内の各部の関係を説明するブロック図である。マルチコアプロセッサシステム100は、たとえば、取得部402と、決定部403と、設定部404と、アドレス通知部405と、選択部406と、解除通知部407と、集約部408と、検出部409と、実行開始通知部410と、を含む。制御部となる取得部402〜実行開始通知部410は、記憶装置に記憶されたプログラムをCPUs101が実行する。記憶装置とは、たとえば、図1に示したROM102、RAM103、フラッシュROM104などである。または、I/F108を経由して他のCPUが実行してもよい。
また、マルチコアプロセッサシステム100は、複数のコアと、コアに対応する複数のポートを備えたメモリコントローラ202と、ポートごとに分割された物理アドレス空間を備えた共用メモリ201を備える。複数のコアとは、CPUs101に属するすべてのCPUであってもよいし、CPUs101のうち、本実施の形態を適用する一部のCPUであってもよい。コアに対応する複数のポートとは、CPUがアクセスする特定のポートであり、たとえば、CPU#1であればポート#1、CPU#2であればポート#2といったように、CPUごとに対応したポートが決定している。図4ではCPU数とポート数が一致しているためCPUとポートが1対1対応となるが、CPU数に比べポート数が少ない場合は、異なるCPUに対応するポートが一致していてもよい。
また各ポートは、共用メモリ201の物理アドレス空間を分割した物理アドレス空間にアクセス可能であると設定されている。たとえば、共用メモリ201の物理アドレス空間が0x0000〜0x01ffであった場合に、ポート#1は0x0000〜0x00ffの物理アドレス空間にアクセス可能とし、ポート#2は0x0100〜0x01ffの物理アドレス空間にアクセス可能とする。分割方法は、前述のように物理アドレス空間をポートごとに均等に分割してもよいし、不均等に分割してもよい。
マルチコアプロセッサシステム100は、ソフトウェアごとに対象のソフトウェアを割り当てるコアの数を記憶するデータベースとして、並列度情報テーブル401にアクセス可能である。たとえば、ソフトウェア205−1は、CPU1つを割り当てる分散ソフトウェアとして、ソフトウェア205−2は、CPU2つを割り当てる並列ソフトウェアとして登録されている。並列度情報テーブル401の詳細は、図7にて後述する。
取得部402は、並列度情報テーブル401から、実行対象ソフトウェアを割り当てるコアの数を取得する機能を有する。実行対象ソフトウェアとは、ユーザ、またはOSによって起動要求を受けたソフトウェアか、または、スケジューラによって実行後にCPUの割り当てを解除された後に再びスケジューラにより実行されようとしているソフトウェアである。たとえば、ソフトウェア205−2を実行対象とする場合、取得部402は、並列度情報テーブル401から割り当てるCPU数が2つであることを取得する。なお、取得されたデータは、RAM103、フラッシュROM104などの記憶領域に記憶される。
決定部403は、取得部402によって取得された実行対象ソフトウェアを割り当てるコアの数と複数のコアの使用状況とに基づいて、実行対象ソフトウェアを割り当てるコアを決定する機能を有する。
決定部403の具体例として、たとえば、ソフトウェア205−2を実行対象ソフトウェアとし、取得部402によって割り当てるCPU数が2つであると取得できた場合を想定する。決定部403は、CPUs101の中から、低負荷のCPUとしてCPU#2とCPU#3を、ソフトウェア205−2を割り当てるCPUとして決定する。なお、決定されたCPUの情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
設定部404は、複数のポートのうち決定部403によって決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間を取得する。取得された物理アドレス空間の中から、設定部404は、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたコアごとに設定する機能を有する。また、設定部404は、集約部408によって集約された物理アドレス空間を、選択部406によって選択されたポートが新たにアクセス可能な物理アドレス空間に設定してもよい。
たとえば、決定されたコアがCPU#2とCPU#3であり、前述のCPUに対応するポートがポート#2、ポート#3であることを想定する。続けて、ポート#2が共用メモリ201にアクセス可能な物理アドレス空間が0x1000〜0x10ffであり、ポート#3が共用メモリ201にアクセス可能な物理アドレス空間が0x2000〜0x20ffであることを想定する。
この時、設定部404は、物理アドレス空間0x1000〜0x10ff、0x2000〜0x20ffから、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたCPUごとに設定する。規定された論理アドレス空間が0x0000〜0x01ffであれば、CPU#2がポート#2にアクセスする際に、論理アドレス空間0x0000〜0x00ffを物理アドレス空間0x1000〜0x10ffに対応づけて設定する。同様に、CPU#3がポート#3にアクセスする際に、論理アドレス空間0x0100〜0x01ffを物理アドレス空間0x2000〜0x20ffに対応づけて設定する。なお、設定されたアドレス対応情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
アドレス通知部405は、設定部404によって設定された物理アドレス空間と設定された物理アドレス空間に対応する論理アドレス空間とを特定のポートに通知する機能を有する。また、アドレス通知部405は、設定部404によって設定された新たにアクセス可能な物理アドレス空間を選択部406によって選択されたポートに通知してもよい。
たとえば、CPU#2がポート#2にアクセスする際に論理アドレス空間0x0000〜0x00ffを物理アドレス空間0x0100〜0x01ffに対応づけて設定された場合を想定する。この時アドレス通知部405は、CPU#2が設定したアドレス対応情報をアドレス変換器204のポート#2に通知する。また、集約部408によって集約された物理アドレス空間が、0x0000〜0x01ffであり、選択部406によってポート#2が選択された場合を想定する。この時アドレス通知部405は、ポート#2が新たにアクセス可能な物理アドレス空間として、0x0000〜0x01ffをポート#2に通知する。
また、アドレス対応情報として、ある程度範囲が決められている場合は、設定可能なパターンを用意してもよい。たとえば、ポートが4つ存在し、共用メモリ201の物理アドレス空間が4つに分割される場合、分割された物理アドレス空間とレジスタ内のビット列を対応づけてもよい。また、論理アドレス空間は、0x0000から開始しアドレス空間が連続となるように対応づけてもよい。
これにより、レジスタの特定のビットを“1”にすることで、物理アドレスと論理アドレスを対応づけることができる。このように、アドレス通知部405は、物理アドレス空間の上限値と下限値、論理アドレスの上限値と下限値を通知するようにしてもよいし、設定可能なパターンを用意することで、通知処理を簡略化してもよい。
前述した、共用メモリ201の物理アドレス空間が4つに分割された場合を想定する。このとき、設定部404が物理アドレス空間0x0200〜0x02ffに対応するレジスタのビットを“1”にし、物理アドレス空間0x0200〜0x02ffと論理アドレス空間0x0000〜0x00ffを対応づけて設定する。そしてアドレス通知部405は、設定されたレジスタの値を通知してもよい。また、集約部408によって、4つに分割された物理アドレス空間のうち、先頭と3番目の物理アドレス空間が集約された場合、アドレス通知手段としては、対応するビット“0b1010”を通知してもよい。なお、通知したアドレス対応情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
選択部406は、決定部403によって決定されたコアに対応する特定のポートが複数存在する場合、特定のポートのうち、任意のポートを選択する機能を有する。たとえば、決定部403によってCPU#2、CPU#3が決定され、対応するポートがポート#2、ポート#3というように複数存在した場合に、任意のポートとしてポート#2を選択する。
ポートの選択基準はどのように行ってもよいが、たとえば、実行対象ソフトウェアのマスタスレッドを実行しているCPUに対応しているポートを選択してもよい。また、複数存在するポートの性能が非対称であり、複数のポートのうち、特定のポートの能力が他のポートの能力が上回っているなら、他より性能が上回っているポートを選択してもよい。なお、選択されたポートの情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
解除通知部407は、特定のポートのうち、選択部406によって選択されたポートを除く残余のポートの接続を解除する通知を残余のポートに通知する機能を有する。たとえば、特定のポートがポート#2、ポート#3となり、選択部406によってポート#2が選択された場合、残余となるポート#3に対して、ポートの接続を解除する通知をポート接続器203のポート#3に通知する。なお、通知した接続解除情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
集約部408は、複数存在する特定のポートがアクセス可能な物理アドレス空間を集約する機能を有する。たとえば、特定のポートがポート#2、ポート#3であり、ポート#2、ポート#3の物理アドレス空間がそれぞれ、0x0000〜0x00ff、0x0100〜0x01ffである場合を想定する。前述の状態で、集約部408は、集約した物理アドレス空間を0x0000〜0x01ffとする。なお、集約された物理アドレス情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。
検出部409は、決定部403によって決定されたコアが複数存在する場合、実行対象ソフトウェアを決定されたコア間で同時に実行する開始時刻を検出する機能を有する。また、検出部409は、アドレス通知部405によって特定のポートへの通知を完了した時刻を開始時刻として検出する。たとえば、決定されたCPUがCPU#2、CPU#3であり、特定のポートがポート#2であった場合、CPU#2またはCPU#3がポート#2にアドレス通知部405の実行を完了した時刻を実行対象ソフトウェアの開始時刻として検出することができる。なお、検出が行われたことを示す情報はRAM103、フラッシュROM104などの記憶領域に記憶される。
実行開始通知部410は、アドレス通知部405によって特定のポートに通知した後に、実行対象ソフトウェアに実行開始を通知する機能を有する。また、実行開始通知部410は、検出部409によって開始時刻が検出された後に、実行対象ソフトウェアに実行開始を通知してもよい。
たとえば、CPU#2がポート#2にアドレス通知を行った後に、CPU#2は、実行対象ソフトウェアに実行開始を通知することができる。また、決定された複数のCPUがCPU#2、CPU#3である場合に、検出部409によって開始時刻が検出された後に、CPU#2、CPU#3が実行対象ソフトウェアに実行開始を通知することができる。なお、実行開始通知は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。
図5は、ポート接続器203のブロック図である。ポート接続器203は、メモリコントローラ202の一形態であり、バス110とアドレス変換器204の間に存在し、各ポートの接続、非接続を制御する。各ポートの接続、非接続は、CPU#1〜CPU#4によってアクセスされる設定レジスタ501によって制御される。設定レジスタ501は、設定レジスタ501#1〜設定レジスタ501#4を含み、各ポートの接続、非接続を制御する。
たとえば、設定レジスタ501#1は、スイッチ#1を制御し、ポート#1の接続、非接続を設定する。設定レジスタ501#1は、設定値が“1”であればポート#1を接続にし、設定値が“0”であればポート#1を非接続にする。他の設定レジスタも同様に、設定レジスタ501#2〜設定レジスタ501#4が、それぞれポート#2〜ポート#4の接続、非接続を行う。非接続となったポートは、ポート内の結線に電力が供給されなくなる。結果、ポートが不要の場合にポートを非接続とすることで、省電力効果を得ることができる。
図6は、アドレス変換器204と設定の一例を示す説明図である。符号601で示す説明図は、アドレス変換器204を示す。アドレス変換器204は、メモリコントローラ202の一形態であり、ポート接続器203と共用メモリ201の間に存在し、各ポートの論理アドレスと物理アドレスを変換する。各ポートの論理アドレスと物理アドレスの変換は、CPU#1〜CPU#4によってアクセスされる変換レジスタ603#1〜変換レジスタ603#4によって制御される。
一実施形態として変換レジスタ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の設定は設定なしとなり、アドレススルーの設定となる。
また、CPU#1が、変換レジスタ603#1を“0b1000”に設定した場合、TLB#1の設定がTLB#1設定604−1となる。TLB#1設定604−1は、論理アドレス空間0x0000〜0x00ffを、共用メモリブロック#1の物理アドレス空間に指定している。
また、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のアクセス可能な物理アドレス空間を集約することになる。
また、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のアクセス可能な物理アドレス空間を集約することになる。
また、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のアクセス可能な物理アドレス空間を集約することになる。
同様にTLB#2〜TLB#4も、変換レジスタ603#2〜変換レジスタ603#4によって、アドレス変換方法が指定される。また、本実施の形態では、変換レジスタ603によってTLBの内容を指定していたが、変換レジスタ603にて直接TLBの内容を記述してもよい。
図7は、並列度情報テーブル401の記憶内容の一例を示す説明図である。並列度情報テーブル401は、たとえば、ソフトウェア名称、並列度情報、並列数Pという3つのフィールドを含む。ソフトウェア名称フィールドは、ソフトウェアの名称を格納する。たとえば、ソフトウェアに対応するプロセスの開始アドレスが設定されており、CPUは、プロセスの開始アドレスを参照して処理を実行することができる。
並列度情報フィールドは、各CPUが分散されてソフトウェアを処理するか、複数のCPUが並列に動作してソフトウェアを処理するかを示す識別子を格納する。格納される識別子は、“分散”と“並列”である。“分散”識別子は、名称フィールドに格納されたソフトウェアが1つのCPUで実行される分散ソフトウェアであることを示す。“並列”識別子は、名称フィールドに格納されたソフトウェアが2つ以上のCPUで実行される並列ソフトウェアであることを示す。並列数Pフィールドは、名称フィールドに格納されたソフトウェアが実行される際のCPU数を示す。たとえば、UI処理は、分散ソフトウェアであり、1つのCPUで実行される。Webブラウザは、並列ソフトウェアであり、3つのCPUで実行される。
図8は、分散ソフトウェアと並列ソフトウェアが混載した状態を示す説明図である。マルチコアプロセッサシステム100は、ソフトウェアとして、並列ソフトウェアP1、並列ソフトウェアP2、分散ソフトウェアS1〜分散ソフトウェアS6を実行している。CPU#1〜CPU#4は、メモリコントローラ202を通じて、共用メモリ201にアクセスする。
次に各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を順次実行する。
図9は、図8におけるCPUのディスパッチ周期パターンを示す説明図である。CPU#1〜CPU#4は、変換器設定処理によってメモリコントローラ202の設定を定期的にポート#1〜ポート#4に通知する。変換器設定処理とは、ポート接続器203の設定レジスタ501の設定と、アドレス変換器204の変換レジスタ603の設定を行う処理である。
たとえば、ポート#1では、変換器設定処理u#1−1によって分散ソフトウェアの設定を行うことができる。変換器設定処理u#1−1が実行されるタイミングで、ポート#2では変換器設定処理u#2−1によって、ポート#3では変換器設定処理u#3−1によって、ポート#4では変換器設定処理u#4−1によって、分散ソフトウェアの設定が行われる。設定処理の一例としては、ポート接続器203に行う接続設定、解除設定と、アドレス変換器204に行う論理単独空間設定、論理連続空間設定である。論理連続空間設定を行うことにより、複数のポートがアクセス可能な物理アドレス空間を、1つのポートがアクセス可能な物理アドレス空間に集約することになる。
また、一定期間経過後、ポート#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を実行することができる。
バリア同期コードとは、同期が必要なすべてのCPUの処理が終了するのを待つコードである。たとえば、本実施の形態では、ポート#2の制御をCPU#2が行い、ポート#3の制御をCPU#3が行い、ポート#4の制御をCPU#4が行う。よって、CPU#2が変換器設定処理U#2−2を行った後、CPU#2は、バリア同期コード903−1を実行し待機する。
CPU#3、CPU#4も同様に、変換器設定処理を行った後、バリア同期コードを実行し待機する。CPU#2〜CPU#4がバリア同期コードを実行した段階で、ソフトウェアを実行開始する開始時刻として検出し、待機していたCPUは復帰し、並列ソフトウェアP2を実行する。これにより、並列ソフトウェアP2のアクセスをCPU#2〜CPU#4が同時に行うことができる。
並列ソフトウェアP1との同期コード901は、並列ソフトウェアP1が連続する論理アドレス空間にアクセスするためのコードである。同期コード901は、たとえばタイミングt1では、変換器設定処理u#1−3〜変換器設定処理u#3−3とバリア同期コード904−1〜バリア同期コード904−3によって並列ソフトウェアP1の設定を行う。
同様に、並列ソフトウェアP2との同期コード902は、並列ソフトウェアP2が連続する論理アドレス空間にアクセスするためのコードである。同期コード902は、たとえばタイミングt3では、変換器設定処理u#2−5〜変換器設定処理u#4−5とバリア同期コード905−1〜バリア同期コード905−3によって並列ソフトウェアP2の設定を行う。タイミングt1〜タイミングt3における、マルチコアプロセッサシステム100でのソフトウェアの実行状態と、メモリコントローラ202の設定状態を、図10〜図15にて示す。
図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のアクセスを行う。
図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に提供することができる。
ポート#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に提供することができる。
図12は、タイミングt2におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。タイミングt2におけるマルチコアプロセッサシステム100は、CPU#1にて分散ソフトウェアS3を実行する。同様に、マルチコアプロセッサシステム100は、CPU#2にて分散ソフトウェアS4を、CPU#3にて分散ソフトウェアS5を、CPU#4にて分散ソフトウェアS6をそれぞれ実行する。また、メモリコントローラ202の設定状態としては、ポート#1〜ポート#4がマスタポートとなり、共用メモリ201のアクセスを行う。
図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に提供することができる。
ポート#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に提供する。
図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は非接続状態である。
図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に提供することができる。
ポート#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に提供することができる。
ポート#3では、変換器設定処理u#3−5によって、設定レジスタ501−3に“0”が設定される。これによりポート#3は非接続状態となる。同様に、ポート#4では、変換器設定処理u#4−5によって、設定レジスタ501−4に“0”が設定される。これによりポート#4も非接続状態となる。
図16は、スケジューリング処理を示すフローチャートである。スケジューリング処理は、ソフトウェアが起動されたときの機能としてスケジューラ#1〜スケジューラ#4で実行される。ステップS1601〜ステップS1604、ステップS1610、ステップS1611は、CPUs101のうち、特定のCPUで実行され、ステップS1605〜ステップS1609は、ステップS1603で検出されたCPUで実行される。本実施の形態では、前述した特定のCPUがCPU#1であることを想定する。
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を検出することができる。
検出後、CPU#1は、検出されたCPU群のうち、先頭のCPUを選択する(ステップS1604)。選択されたCPUは、アドレス空間変換処理を実行する(ステップS1605)。アドレス空間変換処理の詳細は、図17にて後述する。処理後、選択されたCPUは、対象のソフトウェアの並列度情報が“並列”か否かを判断する(ステップS1606)。
並列度情報が“分散”である場合(ステップS1606:No)、選択されたCPUは、ポート接続器203、アドレス変換器204を制御するドライバタスクを実行する(ステップS1608)。ドライバタスクの動作内容は、ステップS1605の処理にて設定されたポート接続器203、アドレス変換器204への設定と、バリア同期コードの実行を一定周期で行うタスクである。
並列度情報が“並列”である場合(ステップS1606:Yes)、選択されたCPUは、続けて、選択されたCPUが対象のソフトウェアのメインスレッドを動作するCPUかを判断する(ステップS1607)。選択されたCPUがメインスレッドを実行するCPUである場合(ステップS1607:Yes)、選択されたCPUは、ステップS1608の処理に移行する。選択されたCPUがスレーブスレッドを実行するCPUである場合(ステップS1607:No)、またはステップS1608の処理終了後、選択されたCPUは、スケジューリング処理の結果に従ったディスパッチを行う(ステップS1609)。
ステップS1609終了後、CPU#1は、選択されたCPUが検出されたCPU群の末尾のCPUであるかを判断する(ステップS1610)。末尾のCPUでない場合(ステップS1610:No)、CPU#1は、検出されたCPU群の、次のCPUを選択し(ステップS1611)、ステップS1605の処理に移行する。末尾のCPUである場合(ステップS1610:Yes)、CPU#1はスケジューリング処理を終了する。
図17は、アドレス空間変換処理を示すフローチャートである。アドレス空間変換処理は、ステップS1604、またはステップS1611で選択されたCPUによって実行される。選択されたCPUは、並列数Pが1かを判断する(ステップS1701)。並列数Pが1である場合(ステップS1701:Yes)、選択されたCPUは、ポート接続器203接続設定(ステップS1702)と、アドレス変換器204論理単独空間設定(ステップS1703)を実行し、アドレス空間変換処理を終了する。
ポート接続器203接続設定とは、選択されたCPUに対応するポートを接続状態にする処理である。たとえば、選択されたCPUがCPU#1であれば、CPU#1は、ポート#1の接続状態を制御する設定レジスタ501#1を“1”に設定することができる。アドレス変換器204論理単独空間設定とは、ソフトウェアの論理アドレス空間を、選択されたCPUに対応するポートの共用メモリブロック#1〜共用メモリブロック#4のいずれか1つの物理アドレス空間に対応づける設定である。
並列数Pが1でない場合(ステップS1701:No)、選択されたCPUは、選択されたCPUがメインスレッドを実行するCPUかを判断する(ステップS1704)。選択されたCPUがメインスレッドを実行するCPUである場合(ステップS1704:Yes)、選択されたCPUは、ポート接続器203接続設定(ステップS1705)と、アドレス変換器204論理連続空間設定(ステップS1706)を実行する。アドレス変換器204論理連続空間設定とは、ソフトウェアの論理アドレス空間を、選択されたCPUに対応するポートの共用メモリブロック#1〜共用メモリブロック#4のうち2つ以上の共用メモリブロックの物理アドレス空間に集約して対応づける設定である。また、対応づけられた論理アドレスは連続空間となるように設定される。
選択されたCPUがスレーブスレッドを実行するCPUである場合(ステップS1704:No)、選択されたCPUは、ポート接続器203解除設定を実行する(ステップS1707)。ポート接続器203解除設定とは、選択されたCPUに対応するポートを非接続状態にする処理である。また、ポート接続器203接続設定、ポート接続器203解除設定、アドレス変換器204論理単独空間設定、アドレス変換器204論理連続空間設定が、図9にて前述した変換器設定処理となる。
ステップS1706、またはステップS1707の処理終了後、選択されたCPUは、スレッドディスパッチャに同時実行設定を行う(ステップS1708)。たとえば、対象となるソフトウェアを同時に実行するソフトウェアとして、選択されたCPUは、スレッドディスパッチャに対象となるソフトウェアを登録する。続けて、選択されたCPUは、バリア同期コードと周期タイミングを設定し(ステップS1709)、アドレス空間変換処理を終了する。バリア同期コードを並列ソフトウェアが実行される前に実行することで、並列ソフトウェアを実行するCPU群は、並列ソフトウェアを同時に実行する開始時刻を検出することができる。周期タイミングの設定とは、対象となるソフトウェアをCPU間で同じタイミングで割り当てるように設定することである。
以上説明したように、マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラムによれば、ポートごとに物理アドレス空間を分割した状態にて、実行対象ソフトウェアを割り当てるCPUを決定する。続けて、CPUに対応したポートがアクセス可能な物理アドレス空間の中から、実行対象ソフトウェアで規定された論理アドレスを指定して、ポートに通知した後に、実行対象ソフトウェアを起動する。
これにより、実行対象ソフトウェアを実行するCPUがアクセスするポートの物理アドレス空間と、他のCPUがアクセスするポートの物理アドレス空間が異なるため、アクセス競合を回避することができる。
また、マルチコアプロセッサシステムは、実行対象ソフトウェアを割り当てるCPUに対応する特定のポートが複数存在する場合、任意の一つのポートを選択し、選択しなかったポートの接続を解除してもよい。続けて、マルチコアプロセッサシステムは、特定のポートの物理アドレス空間を集約し、集約した物理アドレス空間を選択したポートの物理アドレス空間に設定してもよい。
これにより、ソフトウェア間でのアクセス競合を回避することができ、さらに、不要なポートを解除したことで省電力効果を得ることができる。また、複数のCPUを使用する実行対象ソフトウェアにて、マスタスレッドとスレーブスレッドでアクセスする論理アドレス空間が離れている場合には、物理アドレス空間の集約を行わなくてもよい。これにより、ソフトウェア内でのアクセス競合も回避することができる。
また、マルチコアプロセッサシステムは、実行対象ソフトウェアを割り当てるCPUが複数存在する場合に、特定のポートへのアドレス変換通知を完了した後に、実行対象ソフトウェアに実行開始を通知してもよい。
これにより、ソフトウェア間のアクセス競合を回避することができ、さらに、複数のCPUに割り当てられるソフトウェアを混載することができる。混載の具体例としては、図8で示したように、並列ソフトウェアP1がCPU#1〜CPU#3に割り当てられ、並列ソフトウェアP2がCPU#2〜CPU#4に割り当てられた状態である。混載された場合でも、並列ソフトウェアが各コアで同じタイミングに実行対象となるようにする。実行対象となった際には、メモリコントローラの特定のポートにアドレス変換通知を行い、通知完了後に並列ソフトウェアを実行することで、正常に動作することができる。
また、マルチコアプロセッサシステムは、コアの数とポートの数が等しくてもよい。これにより、CPUとポートが1対1対応となり、CPU間にてアクセス競合を回避することができる。また、CPUの数よりポートの数が少ない場合にも、一部のCPU間でアクセス競合を避けることができる。
たとえば、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つのポートで同じ論理アドレス空間を使用してもよい。
このように、依存関係が高いソフトウェアを割り当てる複数のCPUが決定されているならば、CPU数分ポートを用意し、決定されているCPUに対応するポートに関しては1つにまとめることで、ポート結線にかかるコストを抑えることができる。
なお、本実施の形態で説明したメモリコントローラ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本メモリコントローラ制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本メモリコントローラ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
100 マルチコアプロセッサシステム
#1〜#4 CPU、ポート
110 バス
201 共用メモリ
202 メモリコントローラ
203 ポート接続器
204 アドレス変換器
401 並列度情報テーブル
402 取得部
403 決定部
404 設定部
405 アドレス通知部
406 選択部
407 解除通知部
408 集約部
409 検出部
410 実行開始通知部

Claims (5)

  1. 複数のコアと、
    前記コアに対応する複数のポートを備えたメモリコントローラと、
    前記ポートごとに分割された物理アドレス空間を備えた共用メモリと、
    ソフトウェアごとに当該ソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得する取得手段と、
    前記取得手段によって取得された前記実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、前記実行対象ソフトウェアを割り当てるコアを決定する決定手段と、
    前記決定手段によって決定されたコアに対応する特定のポートが複数存在する場合、前記特定のポートのうち、任意のポートを選択する選択手段と、
    前記特定のポートのうち、前記選択手段によって選択されたポートを除く残余のポートの接続を解除する通知を前記残余のポートに通知する解除通知手段と、
    複数存在する前記特定のポートに分割された物理アドレス空間を集約する集約手段と、
    前記集約手段によって集約された物理アドレス空間を、前記選択されたポートが新たにアクセス可能な物理アドレス空間に設定するとともに、前記複数のポートのうち前記決定手段によって決定されたコアに対応する特定のポートに分割された物理アドレス空間の中から、前記実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を前記決定されたコアごとに設定する設定手段と、
    前記設定手段によって設定された新たにアクセス可能な物理アドレス空間を前記選択されたポートに通知するとともに、前記設定手段によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知するアドレス通知手段と、
    前記アドレス通知手段によって前記特定のポートに通知した後に、前記実行対象ソフトウェアに実行開始を通知する実行開始通知手段と、
    を備えることを特徴とするマルチコアプロセッサシステム。
  2. 前記決定手段によって決定されたコアが複数存在する場合、複数の決定されたコアがバリア同期コードの実行を開始するまで前記複数の決定されたコアを待機させる前記バリア同期コードを前記複数の決定されたコアが実行して、前記複数の決定されたコアが待機から復帰した時刻を、前記実行対象ソフトウェアを前記複数の決定されたコアで同時に実行する開始時刻として検出する検出手段をさらに備え、
    前記アドレス通知手段は、
    前記設定手段によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知し、
    前記検出手段は、
    前記アドレス通知手段によって前記特定のポートへの通知を完了した時刻を前記開始時刻として検出し、
    前記実行開始通知手段は、
    前記検出手段によって開始時刻が検出された後に、前記実行対象ソフトウェアに実行開始を通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3. 前記コアの数と前記ポートの数とが等しいことを特徴とする請求項2に記載のマルチコアプロセッサシステム。
  4. 複数のコアのおのおのに対応する複数のポートのおのおのに分割された物理アドレス空間を備えた共用メモリを制御する前記複数のポートを備えたメモリコントローラの制御を前記複数のコアの中の特定のコアが、
    ソフトウェアごとに当該ソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得する取得工程と、
    前記取得工程によって取得された前記実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、前記実行対象ソフトウェアを割り当てるコアを決定する決定工程と、
    前記決定工程によって決定されたコアに対応する特定のポートが複数存在する場合、前記特定のポートのうち選択されたポートを除く残余のポートの接続を解除する通知を前記残余のポートに通知して複数存在する前記特定のポートに分割された物理アドレス空間を集約した物理アドレス空間を、前記選択されたポートが新たにアクセス可能な物理アドレス空間に設定するとともに、前記複数のポートのうち前記決定工程によって決定されたコアに対応する特定のポートに分割された物理アドレス空間の中から、前記実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を前記決定されたコアごとに設定する設定工程と、
    前記設定工程によって設定された新たにアクセス可能な物理アドレス空間を前記選択されたポートに通知するとともに、前記設定工程によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知するアドレス通知工程と、
    前記アドレス通知工程によって前記特定のポートに通知した後に、前記実行対象ソフトウェアに実行開始を通知する実行開始通知工程と、
    を実行することを特徴とするメモリコントローラ制御方法。
  5. 複数のコアのおのおのに対応する複数のポートのおのおのに分割された物理アドレス空間を備えた共用メモリを制御する前記複数のポートを備えたメモリコントローラの制御を前記複数のコアの中の特定のコアに、
    ソフトウェアごとに当該ソフトウェアを割り当てるコアの数を記憶するデータベースから、実行対象ソフトウェアを割り当てるコアの数を取得する取得工程と、
    前記取得工程によって取得された前記実行対象ソフトウェアを割り当てるコアの数と前記複数のコアの使用状況とに基づいて、前記実行対象ソフトウェアを割り当てるコアを決定する決定工程と、
    前記決定工程によって決定されたコアに対応する特定のポートが複数存在する場合、前記特定のポートのうち選択されたポートを除く残余のポートの接続を解除する通知を前記残余のポートに通知して複数存在する前記特定のポートに分割された物理アドレス空間を集約した物理アドレス空間を、前記選択されたポートが新たにアクセス可能な物理アドレス空間に設定するとともに、前記複数のポートのうち前記決定工程によって決定されたコアに対応する特定のポートに分割された物理アドレス空間の中から、前記実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を前記決定されたコアごとに設定する設定工程と、
    前記設定工程によって設定された新たにアクセス可能な物理アドレス空間を前記選択されたポートに通知するとともに、前記設定工程によって設定された物理アドレス空間と前記設定された物理アドレス空間に対応する論理アドレス空間とを前記特定のポートに通知するアドレス通知工程と、
    前記アドレス通知工程によって前記特定のポートに通知した後に、前記実行対象ソフトウェアに実行開始を通知する実行開始通知工程と、
    を実行させることを特徴とするメモリコントローラ制御プログラム。
JP2012506730A 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム Expired - Fee Related JP5472447B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/055289 WO2011118013A1 (ja) 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014021650A Division JP5817860B2 (ja) 2014-02-06 2014-02-06 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2011118013A1 JPWO2011118013A1 (ja) 2013-07-04
JP5472447B2 true JP5472447B2 (ja) 2014-04-16

Family

ID=44672604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012506730A Expired - Fee Related JP5472447B2 (ja) 2010-03-25 2010-03-25 マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム

Country Status (4)

Country Link
US (2) US8990516B2 (ja)
EP (1) EP2551769A4 (ja)
JP (1) JP5472447B2 (ja)
WO (1) WO2011118013A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9894012B2 (en) * 2014-01-07 2018-02-13 Wind River Systems, Inc. Method and system to improve network connection locality on multicore systems
EP3111333B1 (en) * 2014-02-27 2022-03-30 Mercury Kingdom Assets Limited Thread and data assignment in multi-core processors
CN107168890B (zh) * 2017-04-01 2021-03-19 杭州联吉技术有限公司 一种内存池的管理方法和装置
KR102438319B1 (ko) * 2018-02-07 2022-09-01 한국전자통신연구원 공통 메모리 인터페이스 장치 및 방법
US11347644B2 (en) * 2018-10-15 2022-05-31 Texas Instruments Incorporated Distributed error detection and correction with hamming code handoff

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63225846A (ja) * 1987-03-16 1988-09-20 Yaskawa Electric Mfg Co Ltd アドレス変換機構付マルチポ−トメモリ
JPH08221319A (ja) * 1995-02-13 1996-08-30 Hitachi Ltd 半導体記憶装置
JP2003316752A (ja) * 2002-04-25 2003-11-07 Nec Corp マルチプロセッサシステムおよびリソース割り当て方法
JP2009026439A (ja) * 2007-07-18 2009-02-05 Samsung Electronics Co Ltd 半導体メモリ装置及びそれによる共有レジスタ運用方法
WO2009057208A1 (ja) * 2007-10-31 2009-05-07 Fujitsu Limited 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732041A (en) 1993-08-19 1998-03-24 Mmc Networks, Inc. Memory interface unit, shared memory switch system and associated method
US6480941B1 (en) * 1999-02-23 2002-11-12 International Business Machines Corporation Secure partitioning of shared memory based multiprocessor system
JP2002007364A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
EP1384160A2 (en) * 2001-03-02 2004-01-28 Atsana Semiconductor Corp. Apparatus for variable word length computing in an array processor
JP2003114797A (ja) 2001-10-04 2003-04-18 Matsushita Electric Ind Co Ltd データ処理装置
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US20060282588A1 (en) * 2005-06-09 2006-12-14 Jonah Proujansky-Bell Processor system that allows for simultaneous access by multiple requestors to a target with multiple ports
JP2008117109A (ja) 2006-11-02 2008-05-22 Renesas Technology Corp 半導体集積回路装置
US8028113B2 (en) * 2008-08-15 2011-09-27 International Business Machines Corporation Methods and systems for deadlock-free allocation of memory
US8832173B2 (en) * 2009-01-20 2014-09-09 Sap Ag System and method of multithreaded processing across multiple servers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63225846A (ja) * 1987-03-16 1988-09-20 Yaskawa Electric Mfg Co Ltd アドレス変換機構付マルチポ−トメモリ
JPH08221319A (ja) * 1995-02-13 1996-08-30 Hitachi Ltd 半導体記憶装置
JP2003316752A (ja) * 2002-04-25 2003-11-07 Nec Corp マルチプロセッサシステムおよびリソース割り当て方法
JP2009026439A (ja) * 2007-07-18 2009-02-05 Samsung Electronics Co Ltd 半導体メモリ装置及びそれによる共有レジスタ運用方法
WO2009057208A1 (ja) * 2007-10-31 2009-05-07 Fujitsu Limited 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム

Also Published As

Publication number Publication date
JPWO2011118013A1 (ja) 2013-07-04
EP2551769A4 (en) 2013-11-27
US20150194198A1 (en) 2015-07-09
US8990516B2 (en) 2015-03-24
WO2011118013A1 (ja) 2011-09-29
US20130019069A1 (en) 2013-01-17
EP2551769A1 (en) 2013-01-30

Similar Documents

Publication Publication Date Title
JP5780243B2 (ja) スケジューリング方法、およびマルチコアプロセッサシステム
JP6475625B2 (ja) コア間通信装置及び方法
JP4536618B2 (ja) リコンフィグ可能な集積回路装置
JP5472447B2 (ja) マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム
JP5461339B2 (ja) 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
CN102193885A (zh) 支持虚拟信道的非挥发性存储器控制器
JP5534002B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
US20080022052A1 (en) Bus Coupled Multiprocessor
US20170371707A1 (en) Data analysis in storage system
JPH0748197B2 (ja) データ・バスを確保する方法
JP5708450B2 (ja) マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム
JP5967073B2 (ja) プロセッサ管理方法
WO2011039887A1 (ja) 計算機装置
JP5817860B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP6774147B2 (ja) 制御装置
JP5780296B2 (ja) スレッド処理方法、およびスレッド処理システム
KR100978083B1 (ko) 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체
JP2001236335A (ja) 分散メモリ型並列計算機及びそのデータ転送終了確認方法
WO2012127534A1 (ja) バリア同期方法、バリア同期装置及び演算処理装置
JP2021117577A (ja) 情報処理装置、情報処理方法およびプログラム
JP2007328539A (ja) バスシステムおよびバススレーブならびにバス制御方法
JP3866873B2 (ja) 情報処理装置
JP3878097B2 (ja) バス制御方式及びコンピュータシステム
JP2785738B2 (ja) 分散メモリ型マルチプロセッサ情報処理システム
JP5500114B2 (ja) アクセス装置及びアクセス方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131209

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: 20140107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140120

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees