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 PDF

Info

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
Application number
JP2014021650A
Other languages
Japanese (ja)
Other versions
JP2014078285A (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.)
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
Priority to JP2014021650A priority Critical patent/JP5817860B2/en
Publication of JP2014078285A publication Critical patent/JP2014078285A/en
Application granted granted Critical
Publication of JP5817860B2 publication Critical patent/JP5817860B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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, Patent Document 1 below).

また、メモリへのリクエストとレスポンスの経路を分離し、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, Patent Document 2 below).

また、マルチポートを使用する技術として、アドレス空間を機能種別ごとに分割し、分割されたアドレス空間ごとにポートを用意することで、複数の機能を同時に実行し、高速に処理を実行できるという技術が開示されている(たとえば、下記特許文献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 Patent Document 3 below).

特表平11−510285号公報Japanese National Patent Publication No. 11-510285 特開2008−117109号公報JP 2008-117109 A 特開2003−114797号公報JP 2003-114797 A

しかしながら、上述した従来技術において、特許文献1にかかる技術では、メモリとバッファ間、バスとバッファ間を高クロックにすることで、経路上のレイテンシを最小にすることができる。しかし、特許文献1にかかる技術は、高クロックにすることで、消費電力が増加するという問題があった。また、特許文献2にかかる技術では、リクエストとレスポンスの経路を分離してもアクセス競合は発生し続けるという問題があった。また、特許文献1にかかる技術と同様に、バスからバッファの間が高クロックとなるため、消費電力が増加するという問題があった。   However, in the above-described conventional technique, in the technique according to Patent Document 1, latency on the path can be minimized by setting a high clock between the memory and the buffer and between the bus and the buffer. However, the technique according to Patent Document 1 has a problem that the power consumption is increased by using a high clock. Further, the technology according to Patent Document 2 has a problem that access contention continues even if the request and response paths are separated. Further, similarly to the technique according to Patent Document 1, there is a problem in that power consumption increases because a high clock is generated between the bus and the buffer.

また、特許文献3にかかる技術では、機能が異なる2つのソフトウェアが同一のアドレス空間にアクセスする場合に、アクセス競合を起こすという問題があった。また、機能種別ごとにポートを用意する必要があり、機能種別が増加するにつれ、ポート数も増加することになり、消費電力が増加するという問題があった。   Further, the technique according to Patent Document 3 has a problem that access conflict occurs when two pieces of software having different functions access the same address space. Further, it is necessary to prepare a port for each function type, and as the function type increases, the number of ports also increases, resulting in a problem that power consumption increases.

本発明は、上述した従来技術による問題点を解消するため、アクセス競合を回避できるマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムを提供することを目的とする。   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.

実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。It is a block diagram which shows the hardware of the multi-core processor system concerning embodiment. マルチコアプロセッサシステム100のハードウェアの一部とソフトウェアを示すブロック図である。2 is a block diagram showing a part of hardware and software of the multi-core processor system 100. FIG. 物理アドレス空間の分割と論理アドレス空間の結合の例を示す説明図である。It is explanatory drawing which shows the example of the division | segmentation of a physical address space, and the coupling | bonding of a logical address space. マルチコアプロセッサシステム100内の各部の関係を説明するブロック図である。FIG. 2 is a block diagram for explaining the relationship between each part in the multi-core processor system 100. ポート接続器203のブロック図である。3 is a block diagram of a port connector 203. FIG. アドレス変換器204と設定の一例を示す説明図である。It is explanatory drawing which shows an example of an address converter 204 and a setting. 並列度情報テーブル401の記憶内容の一例を示す説明図である。It is explanatory drawing which shows an example of the memory content of the parallel degree information table. 分散ソフトウェアと並列ソフトウェアが混載した状態を示す説明図である。It is explanatory drawing which shows the state in which distributed software and parallel software were mixedly mounted. 図8におけるCPUのディスパッチ周期パターンを示す説明図である。It is explanatory drawing which shows the dispatch period pattern of CPU in FIG. タイミングt1におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。It is explanatory drawing which shows the execution state of the software in the timing t1, and the setting state of the memory controller. タイミングt1におけるメモリコントローラ202の状態を示す説明図である。It is explanatory drawing which shows the state of the memory controller 202 in the timing t1. タイミングt2におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。It is explanatory drawing which shows the execution state of the software in the timing t2, and the setting state of the memory controller. タイミングt2におけるメモリコントローラ202の状態を示す説明図である。It is explanatory drawing which shows the state of the memory controller 202 in the timing t2. タイミングt3におけるソフトウェアの実行状態とメモリコントローラ202の設定状態を示す説明図である。FIG. 6 is an explanatory diagram showing a software execution state and a setting state of a memory controller 202 at a timing t3. タイミングt3におけるメモリコントローラ202の状態を示す説明図である。It is explanatory drawing which shows the state of the memory controller 202 in the timing t3. スケジューリング処理を示すフローチャートである。It is a flowchart which shows a scheduling process. アドレス空間変換処理を示すフローチャートである。It is a flowchart which shows an address space conversion process.

以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムの好適な実施の形態を詳細に説明する。   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 multi-core processor system 100 includes CPUs 101 on which a plurality of CPUs are mounted, a ROM (Read-Only Memory) 102, and a RAM (Random Access Memory) 103. The multi-core processor system 100 includes a flash ROM 104, a flash ROM controller 105, and a flash ROM 106. The multi-core processor system 100 includes a display 107, an I / F (Interface) 108, and a keyboard 109 as input / output devices for a user and other devices. Each unit is connected by a bus 110.

ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。CPUs101の詳細は、図2にて後述する。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。本実施形態では、CPUの接続方法によらず、メモリを共有する、すなわちTCMP(Tightly Coupled Multi Processor)のアーキテクチャーを前提とする。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。   Here, the CPUs 101 govern the overall control of the multi-core processor system 100. CPUs 101 refers to all CPUs in which single-core processors are connected in parallel. Details of the CPUs 101 will be described later with reference to FIG. A multi-core processor system is a computer system including a processor having a plurality of cores. The present embodiment is premised on the architecture of a TCMP (Title Coupled Multi Processor), that is, regardless of the CPU connection method. In the present embodiment, in order to simplify the explanation, a processor group in which single-core processors are arranged in parallel will be described as an example.

ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。フラッシュROM104は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F108によって新しいOSを受信し、フラッシュROM104に格納されている古いOSを、受信した新しいOSに更新する。   The ROM 102 stores a program such as a boot program. The RAM 103 is used as a work area for the CPUs 101. The flash ROM 104 stores system software such as an OS (Operating System), application software, and the like. For example, when updating the OS, the multi-core processor system 100 receives the new OS through the I / F 108 and updates the old OS stored in the flash ROM 104 to the received new OS.

フラッシュROMコントローラ105は、CPUs101の制御に従ってフラッシュROM106に対するデータのリード/ライトを制御する。フラッシュROM106は、フラッシュROMコントローラ105の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F108を通して取得した画像データ、映像データなどである。フラッシュROM106は、たとえば、メモリカード、SDカードなどを採用することができる。   The flash ROM controller 105 controls data read / write with respect to the flash ROM 106 according to the control of the CPUs 101. The flash ROM 106 stores data written under the control of the flash ROM controller 105. Specific examples of the data include image data and video data acquired by the user using the multi-core processor system 100 through the I / F 108. As the flash ROM 106, for example, a memory card, an SD card, or the like can be adopted.

ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ107は、たとえば、TFT液晶ディスプレイなどを採用することができる。   A display 107 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box. As the display 107, for example, a TFT liquid crystal display can be adopted.

I/F108は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク111に接続され、ネットワーク111を介して他の装置に接続される。そして、I/F108は、ネットワーク111と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F108には、たとえばモデムやLANアダプタなどを採用することができる。   The I / F 108 is connected to a network 111 such as a LAN (Local Area Network), a WAN (Wide Area Network), and the Internet through a communication line, and is connected to other devices via the network 111. The I / F 108 controls an internal interface with the network 111 and controls data input / output from an external device. For example, a modem or a LAN adapter can be employed as the I / F 108.

キーボード109は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード109は、タッチパネル式の入力パッドやテンキーなどであってもよい。   The keyboard 109 includes keys for inputting numbers, various instructions, and the like, and inputs data. The keyboard 109 may be a touch panel type input pad or a numeric keypad.

図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 multi-core processor system 100. The hardware shown in FIG. 2 is a shared memory 201, a memory controller 202, and CPUs # 1 to # 4 included in the CPUs 101. The memory controller 202 and the CPUs # 1 to # 4 are connected by a bus 110. In addition, among the codes appearing below, the codes to which any of # 1 to # 4 is attached mean codes corresponding to CPU # 1 to CPU # 4, respectively.

共用メモリ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 memory 201 is a storage area accessible through the memory controller 202. The storage area is, for example, the ROM 102, the RAM 103, and the flash ROM 104. The shared memory 201 has port # 1 to port # 4 that are accessible lines. CPU # 1 to CPU # 4 can access any of port # 1 to port # 4. In this embodiment, CPU # 1 controls port # 1, CPU # 2 controls port # 2, CPU # 3 controls port # 3, and CPU # 4 controls port # 4. To do.

また、共用メモリ201は、ポート#1〜ポート#4ごとに物理アドレス空間を分断した共用メモリブロック#1〜共用メモリブロック#4に分けられる。共用メモリブロック#1〜共用メモリブロック#4は、物理アドレス空間が連続していてもよいし、離れていてもよい。また、共用メモリ201で1つのメモリバンクとして存在してもよいし、1つの共用メモリブロックが1つのメモリバンクとして存在してもよい。   The shared memory 201 is divided into shared memory block # 1 to shared memory block # 4 in which the physical address space is divided for each port # 1 to port # 4. In the shared memory block # 1 to the shared memory block # 4, the physical address space may be continuous or separated. Further, the shared memory 201 may exist as one memory bank, or one shared memory block may exist as one memory bank.

また、初期状態としてポート#1は共用メモリブロック#1にアクセス可能とする。同様に、ポート#2〜ポート#4も、それぞれ共用メモリブロック#2〜共用メモリブロック#4にアクセス可能とする。しかし、ポートの設定により、1つのポートは複数の共用メモリブロックにアクセス可能としてもよい。たとえば、ポート#1の設定を変更することにより、ポート#1は共用メモリブロック#1と共用メモリブロック#2にアクセス可能としてもよい。   Further, as an initial state, the port # 1 can access the shared memory block # 1. Similarly, port # 2 to port # 4 can also access shared memory block # 2 to shared memory block # 4, respectively. However, one port may be able to access a plurality of shared memory blocks by setting the port. For example, the port # 1 may be accessible to the shared memory block # 1 and the shared memory block # 2 by changing the setting of the port # 1.

メモリコントローラ202は、共用メモリ201へのデータの読み出し、書き込みを制御する機能を有する。本実施の形態では、メモリコントローラ202は、共用メモリ201にアクセスするポート#1〜ポート#4の設定を変更することで、CPU#1〜CPU#4の共用メモリ201へのアクセスを制御する。   The memory controller 202 has a function of controlling reading and writing of data to the shared memory 201. In the present embodiment, the memory controller 202 controls the access to the shared memory 201 of the CPUs # 1 to # 4 by changing the settings of the ports # 1 to # 4 that access the shared memory 201.

ポート接続器203は、メモリコントローラ202の内部に存在し、ポート#1〜ポート#4の接続、または非接続を行う。図2の例では、ポート接続器203は、バス110側のポート#3を非接続としている。アドレス変換器204は、メモリコントローラ202の内部に存在し、ポート#1〜ポート#4のアドレス変換を行う。変換方法の一例は、図3にて後述する。CPU#1〜CPU#4には、キャッシュメモリ#1〜キャッシュメモリ#4が搭載されている。   The port connector 203 exists inside the memory controller 202 and connects or disconnects the ports # 1 to # 4. In the example of FIG. 2, the port connector 203 does not connect the port # 3 on the bus 110 side. The address converter 204 exists inside the memory controller 202 and performs address conversion of the port # 1 to port # 4. An example of the conversion method will be described later with reference to FIG. CPU # 1 to CPU # 4 are equipped with cache memory # 1 to cache memory # 4.

図2で示されるソフトウェアは、スケジューラ#1〜スケジューラ#4、ソフトウェア205−1〜ソフトウェア205−4である。また、ソフトウェアがアクセスする記憶領域として、キャッシュメモリブロック206−1〜キャッシュメモリブロック206−4と共用メモリブロック207−1〜共用メモリブロック207−4が存在する。   The software shown in FIG. 2 is scheduler # 1 to scheduler # 4 and software 205-1 to software 205-4. In addition, cache memory blocks 206-1 to 206-4 and shared memory blocks 207-1 to 207-4 exist as storage areas accessed by software.

スケジューラ#1〜スケジューラ#4は、OS、またはユーザから起動要求が行われたソフトウェアを、CPU#1〜CPU#4の使用状況から、どのCPUで実行するかを決定する。たとえば、スケジューラ#1〜スケジューラ#4は、CPU#1〜CPU#4のうち最も使用されていないCPUを起動要求が行われたCPUとして決定する。また、スケジューラ#1〜スケジューラ#4は、起動要求が行われたソフトウェアに基づいて、ポート接続器203とアドレス変換器204に設定を通知する。   The scheduler # 1 to the scheduler # 4 determine which CPU executes the OS or the software requested to be activated by the user from the usage status of the CPU # 1 to CPU # 4. For example, the scheduler # 1 to the scheduler # 4 determine the CPU that is least used among the CPUs # 1 to # 4 as the CPU for which the activation request has been made. Further, the scheduler # 1 to the scheduler # 4 notify the setting to the port connector 203 and the address converter 204 based on the software for which the activation request has been made.

ソフトウェア205−1は、CPU#1で実行されている。CPU#1は、ソフトウェア205−1によってキャッシュメモリブロック206−1にアクセスするほか、キャッシュメモリブロック206−1に必要なデータが存在しない場合に、ポート#1を経由して共用メモリブロック207−1にアクセスする。   Software 205-1 is executed by CPU # 1. The CPU # 1 accesses the cache memory block 206-1 by the software 205-1, and also when the necessary data does not exist in the cache memory block 206-1, the shared memory block 207-1 is connected via the port # 1. To access.

ソフトウェア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 CPU # 2 and CPU # 3. The CPU # 2 accesses the cache memory block 206-2-1 by the software 205-2, and when there is no necessary data in the cache memory block 206-2-1, the shared memory block via the port # 2 207-2 is accessed. The CPU # 3 also accesses the cache memory block 206-2-2 by the software 205-2, and when the necessary data does not exist in the cache memory block 206-2-2, the shared memory block via the port # 2 207-2 is accessed.

ソフトウェア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 CPU # 4. The CPU # 4 accesses the cache memory block 206-3 and the cache memory block 206-4 corresponding to each software by the software 205-3 and the software 205-4. When the necessary data does not exist in the cache memory block, the CPU # 4 accesses the shared memory block 207-3 and the shared memory block 207-4 via the port # 4.

図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 memory block # 1 to the shared memory block # 4 including the shared memory 201 are set as follows. The physical address space of the shared memory block # 1 is 0x0000 to 0x00ff. Similarly, the physical address space of the shared memory block # 2 is 0x1000 to 0x10ff. The physical address space of the shared memory block # 3 is 0x2000 to 0x20ff. The physical address space of the shared memory block # 4 is 0x3000 to 0x30ff.

前述の状態で、ソフトウェア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 port # 1, CPU # 1 uses port connector 203 to place port # 1 in a connected state. Further, since the logical address space and the physical address space of the shared memory block # 1 are equal, the CPU # 1 sets the address converter 204 to address through. The address through setting is a setting for accessing the shared memory 201 using a logical address as a physical address without conversion.

次に、ソフトウェア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 also accesses 0x0000 to 0x01ff as a logical address. In order to access the port # 2, the CPU # 2 sets the port # 2 in the connected state by the port connector 203.

また、CPU#2は、アドレス変換器204によって、論理アドレス空間と、共用メモリブロック#2および共用メモリブロック#3の物理アドレス空間と、を変換する通知をする。通知を受けることによりポート#2は、論理アドレス0x0000〜0x00ffを物理アドレス0x1000〜0x10ffに変換し、論理アドレス0x0100〜0x01ffを物理アドレス0x2000〜0x20ffに変換する。たとえば、CPU#2が0x0010である論理アドレスにアクセスすると、アドレス変換器204によって、0x1010である物理アドレスに変換される。これにより、アドレス変換器204は、連続していなかった物理アドレス空間を、連続した論理空間としてソフトウェアに提供することができる。   Further, the CPU # 2 notifies the address converter 204 to convert the logical address space and the physical address spaces of the shared memory block # 2 and the shared memory block # 3. Upon receiving the notification, the port # 2 converts the logical address 0x0000 to 0x00ff into the physical address 0x1000 to 0x10ff, and converts the logical address 0x0100 to 0x01ff into the physical address 0x2000 to 0x20ff. For example, when CPU # 2 accesses a logical address that is 0x0010, the address converter 204 converts it to a physical address that is 0x1010. As a result, the address converter 204 can provide the physical address space that is not continuous to the software as a continuous logical space.

同様に、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 CPU # 3 accesses 0x0000 to 0x01ff as a logical address. Since the CPU # 3 accesses the port # 2 and does not access the port # 3, the port connector 203 causes the port # 3 to be disconnected.

また、ソフトウェア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 port # 4, CPU # 4 uses port connector 203 to place port # 4 in a connected state.

また、CPU#4は、アドレス変換器204によって、論理アドレス空間と共用メモリブロック#4の物理アドレス空間を変換する通知をする。通知を受けることによりポート#4は、論理アドレス0x0000〜0x00ffを物理アドレス0x3000〜0x30ffに変換する。また、論理アドレス0x0000〜0x00ffを物理アドレス0x3000〜0x30ffに変換する状態を初期の変換状態とし、CPU#4がアドレススルーを設定した場合に、アドレス変換器204は、初期の変換状態でアドレスを変換するようにしてもよい。   Further, the CPU # 4 notifies the address converter 204 that the logical address space and the physical address space of the shared memory block # 4 are converted. By receiving the notification, the port # 4 converts the logical address 0x0000 to 0x00ff into the physical address 0x3000 to 0x30ff. In addition, when the logical address 0x0000 to 0x00ff is converted to the physical address 0x3000 to 0x30ff as the initial conversion state, and the CPU # 4 sets address through, the address converter 204 converts the address in the initial conversion state. You may make it do.

(マルチコアプロセッサシステム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 multi-core processor system 100 will be described. FIG. 4 is a block diagram for explaining the relationship between the components in the multi-core processor system 100. The multi-core processor system 100 includes, for example, an acquisition unit 402, a determination unit 403, a setting unit 404, an address notification unit 405, a selection unit 406, a release notification unit 407, an aggregation unit 408, a detection unit 409, An execution start notification unit 410. In the acquisition unit 402 to the execution start notification unit 410 serving as the control unit, the CPUs 101 execute the programs stored in the storage device. Examples of the storage device include the ROM 102, the RAM 103, and the flash ROM 104 shown in FIG. Alternatively, another CPU may execute it via the I / F 108.

また、マルチコアプロセッサシステム100は、複数のコアと、コアに対応する複数のポートを備えたメモリコントローラ202と、ポートごとに分割された物理アドレス空間を備えた共用メモリ201を備える。複数のコアとは、CPUs101に属するすべてのCPUであってもよいし、CPUs101のうち、本実施の形態を適用する一部のCPUであってもよい。コアに対応する複数のポートとは、CPUがアクセスする特定のポートであり、たとえば、CPU#1であればポート#1、CPU#2であればポート#2といったように、CPUごとに対応したポートが決定している。図4ではCPU数とポート数が一致しているためCPUとポートが1対1対応となるが、CPU数に比べポート数が少ない場合は、異なるCPUに対応するポートが一致していてもよい。   The multi-core processor system 100 includes a memory controller 202 having a plurality of cores, a plurality of ports corresponding to the cores, and a shared memory 201 having a physical address space divided for each port. The plurality of cores may be all CPUs belonging to the CPUs 101, or may be a part of the CPUs 101 to which the present embodiment is applied. The plurality of ports corresponding to the core are specific ports accessed by the CPU. For example, port # 1 for CPU # 1, port # 2 for CPU # 2, and so on. The port has been determined. In FIG. 4, since the number of CPUs and the number of ports are the same, the CPUs and ports are in a one-to-one correspondence. However, when the number of ports is smaller than the number of CPUs, the ports corresponding to different CPUs may be the same. .

また各ポートは、共用メモリ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 memory 201. For example, when the physical address space of the shared memory 201 is 0x0000 to 0x01ff, the port # 1 can access the physical address space of 0x0000 to 0x00ff, and the port # 2 can access the physical address space of 0x0100 to 0x01ff To do. As described above, the physical address space may be divided equally for each port as described above, or may be divided unevenly.

マルチコアプロセッサシステム100は、ソフトウェアごとに対象のソフトウェアを割り当てるコアの数を記憶するデータベースとして、並列度情報テーブル401にアクセス可能である。たとえば、ソフトウェア205−1は、CPU1つを割り当てる分散ソフトウェアとして、ソフトウェア205−2は、CPU2つを割り当てる並列ソフトウェアとして登録されている。並列度情報テーブル401の詳細は、図7にて後述する。   The multi-core processor system 100 can access the parallelism information table 401 as a database that stores the number of cores to which target software is assigned for each software. For example, the software 205-1 is registered as distributed software that assigns one CPU, and the software 205-2 is registered as parallel software that assigns two CPUs. Details of the parallelism information table 401 will be described later with reference to FIG.

取得部402は、並列度情報テーブル401から、実行対象ソフトウェアを割り当てるコアの数を取得する機能を有する。実行対象ソフトウェアとは、ユーザ、またはOSによって起動要求を受けたソフトウェアか、または、スケジューラによって実行後にCPUの割り当てを解除された後に再びスケジューラにより実行されようとしているソフトウェアである。たとえば、ソフトウェア205−2を実行対象とする場合、取得部402は、並列度情報テーブル401から割り当てるCPU数が2つであることを取得する。なお、取得されたデータは、RAM103、フラッシュROM104などの記憶領域に記憶される。   The acquisition unit 402 has a function of acquiring the number of cores to which the execution target software is allocated from the parallelism information table 401. The execution target software is software that has been activated by the user or the OS, or software that is about to be executed by the scheduler again after the CPU is deallocated after execution by the scheduler. For example, when the software 205-2 is the execution target, the acquisition unit 402 acquires from the parallelism information table 401 that the number of CPUs to be allocated is two. The acquired data is stored in a storage area such as the RAM 103 and the flash ROM 104.

決定部403は、取得部402によって取得された実行対象ソフトウェアを割り当てるコアの数と複数のコアの使用状況とに基づいて、実行対象ソフトウェアを割り当てるコアを決定する機能を有する。   The determination unit 403 has a function of determining the core to which the execution target software is allocated based on the number of cores to which the execution target software acquired by the acquisition unit 402 is allocated and the usage status of the plurality of cores.

決定部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 determination unit 403, for example, a case is assumed where the software 205-2 is the execution target software and the acquisition unit 402 can acquire two CPUs. The determination unit 403 determines the CPUs # 2 and # 3 as low-load CPUs from the CPUs 101 as CPUs to which the software 205-2 is assigned. Note that the determined CPU information is stored in a storage area such as the RAM 103 or the flash ROM 104.

設定部404は、複数のポートのうち決定部403によって決定されたコアに対応する特定のポートがアクセス可能な物理アドレス空間を取得する。取得された物理アドレス空間の中から、設定部404は、実行対象ソフトウェアで規定された論理アドレス空間に対応する物理アドレス空間を決定されたコアごとに設定する機能を有する。また、設定部404は、集約部408によって集約された物理アドレス空間を、選択部406によって選択されたポートが新たにアクセス可能な物理アドレス空間に設定してもよい。   The setting unit 404 acquires a physical address space that can be accessed by a specific port corresponding to the core determined by the determination unit 403 among the plurality of ports. From the acquired physical address space, the setting unit 404 has a function of setting a physical address space corresponding to the logical address space defined by the execution target software for each determined core. The setting unit 404 may set the physical address space aggregated by the aggregation unit 408 as a physical address space that can be newly accessed by the port selected by the selection unit 406.

たとえば、決定されたコアが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 CPU # 2 and CPU # 3, and the ports corresponding to the aforementioned CPU are port # 2 and port # 3. Subsequently, it is assumed that the physical address space in which port # 2 can access the shared memory 201 is 0x1000 to 0x10ff, and the physical address space in which port # 3 can access the shared memory 201 is 0x2000 to 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などの記憶領域に記憶される。   At this time, the setting unit 404 sets the physical address space corresponding to the logical address space defined by the execution target software for each determined CPU from the physical address spaces 0x1000 to 0x10ff and 0x2000 to 0x20ff. If the specified logical address space is 0x0000 to 0x01ff, the logical address space 0x0000 to 0x00ff is set in association with the physical address space 0x1000 to 0x10ff when the CPU # 2 accesses the port # 2. Similarly, when the CPU # 3 accesses the port # 3, the logical address space 0x0100 to 0x01ff is set in association with the physical address space 0x2000 to 0x20ff. The set address correspondence information is stored in a storage area such as the RAM 103 and the flash ROM 104.

アドレス通知部405は、設定部404によって設定された物理アドレス空間と設定された物理アドレス空間に対応する論理アドレス空間とを特定のポートに通知する機能を有する。また、アドレス通知部405は、設定部404によって設定された新たにアクセス可能な物理アドレス空間を選択部406によって選択されたポートに通知してもよい。   The address notification unit 405 has a function of notifying a specific port of the physical address space set by the setting unit 404 and the logical address space corresponding to the set physical address space. The address notification unit 405 may notify the port selected by the selection unit 406 of the newly accessible physical address space set by the setting unit 404.

たとえば、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 CPU # 2 accesses the port # 2, the logical address space 0x0000 to 0x00ff is set in association with the physical address space 0x0100 to 0x01ff. At this time, the address notification unit 405 notifies the address correspondence information set by the CPU # 2 to the port # 2 of the address converter 204. Further, it is assumed that the physical address space aggregated by the aggregation unit 408 is 0x0000 to 0x01ff, and the port # 2 is selected by the selection unit 406. At this time, the address notification unit 405 notifies the port # 2 of 0x0000 to 0x01ff as a physical address space that can be newly accessed by the port # 2.

また、アドレス対応情報として、ある程度範囲が決められている場合は、設定可能なパターンを用意してもよい。たとえば、ポートが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 memory 201 is divided into four, the divided physical address space may be associated with the bit string in the register. The logical address space may be associated with the address space starting from 0x0000.

これにより、レジスタの特定のビットを“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 address notification unit 405 may notify the upper limit value and lower limit value of the physical address space, the upper limit value and lower limit value of the logical address, or prepares a settable pattern, thereby notifying processing. May be simplified.

前述した、共用メモリ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 memory 201 described above is divided into four. At this time, the setting unit 404 sets the bit of the register corresponding to the physical address space 0x0200 to 0x02ff to “1”, and sets the physical address space 0x0200 to 0x02ff and the logical address space 0x0000 to 0x00ff in association with each other. The address notification unit 405 may notify the set register value. In addition, when the first and third physical address spaces are aggregated among the four physical address spaces divided by the aggregation unit 408, the address notification unit may notify the corresponding bit “0b1010”. Good. The notified address correspondence information may be stored in a storage area such as the RAM 103 or the flash ROM 104.

選択部406は、決定部403によって決定されたコアに対応する特定のポートが複数存在する場合、特定のポートのうち、任意のポートを選択する機能を有する。たとえば、決定部403によってCPU#2、CPU#3が決定され、対応するポートがポート#2、ポート#3というように複数存在した場合に、任意のポートとしてポート#2を選択する。   The selection unit 406 has a function of selecting an arbitrary port among the specific ports when there are a plurality of specific ports corresponding to the core determined by the determination unit 403. For example, when CPU # 2 and CPU # 3 are determined by determining unit 403 and there are a plurality of corresponding ports such as port # 2 and port # 3, port # 2 is selected as an arbitrary port.

ポートの選択基準はどのように行ってもよいが、たとえば、実行対象ソフトウェアのマスタスレッドを実行している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 RAM 103 or the flash ROM 104.

解除通知部407は、特定のポートのうち、選択部406によって選択されたポートを除く残余のポートの接続を解除する通知を残余のポートに通知する機能を有する。たとえば、特定のポートがポート#2、ポート#3となり、選択部406によってポート#2が選択された場合、残余となるポート#3に対して、ポートの接続を解除する通知をポート接続器203のポート#3に通知する。なお、通知した接続解除情報は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。   The cancellation notification unit 407 has a function of notifying the remaining ports of a notification for canceling the connection of the remaining ports excluding the port selected by the selection unit 406 among the specific ports. For example, when the port # 2 and the port # 3 are selected as the specific ports and the port # 2 is selected by the selection unit 406, the port connector 203 notifies the remaining port # 3 of the release of the port connection. To port # 3. The notified connection release information may be stored in a storage area such as the RAM 103 or the flash ROM 104.

集約部408は、複数存在する特定のポートがアクセス可能な物理アドレス空間を集約する機能を有する。たとえば、特定のポートがポート#2、ポート#3であり、ポート#2、ポート#3の物理アドレス空間がそれぞれ、0x0000〜0x00ff、0x0100〜0x01ffである場合を想定する。前述の状態で、集約部408は、集約した物理アドレス空間を0x0000〜0x01ffとする。なお、集約された物理アドレス情報は、RAM103、フラッシュROM104などの記憶領域に記憶される。   The aggregation unit 408 has a function of aggregating physical address spaces accessible by a plurality of specific ports. For example, it is assumed that the specific ports are port # 2 and port # 3, and the physical address spaces of port # 2 and port # 3 are 0x0000 to 0x00ff and 0x0100 to 0x01ff, respectively. In the above state, the aggregating unit 408 sets the aggregated physical address space to 0x0000 to 0x01ff. The aggregated physical address information is stored in a storage area such as the RAM 103 and the flash ROM 104.

検出部409は、決定部403によって決定されたコアが複数存在する場合、実行対象ソフトウェアを決定されたコア間で同時に実行する開始時刻を検出する機能を有する。また、検出部409は、アドレス通知部405によって特定のポートへの通知を完了した時刻を開始時刻として検出する。たとえば、決定されたCPUがCPU#2、CPU#3であり、特定のポートがポート#2であった場合、CPU#2またはCPU#3がポート#2にアドレス通知部405の実行を完了した時刻を実行対象ソフトウェアの開始時刻として検出することができる。なお、検出が行われたことを示す情報はRAM103、フラッシュROM104などの記憶領域に記憶される。   The detection unit 409 has a function of detecting a start time for simultaneously executing the execution target software among the determined cores when there are a plurality of cores determined by the determination unit 403. Further, the detection unit 409 detects the time when the address notification unit 405 has completed notification to a specific port as the start time. For example, if the determined CPUs are CPU # 2 and CPU # 3 and the specific port is port # 2, CPU # 2 or CPU # 3 has completed execution of address notification unit 405 at port # 2 The time can be detected as the start time of the execution target software. Information indicating that the detection has been performed is stored in a storage area such as the RAM 103 or the flash ROM 104.

実行開始通知部410は、アドレス通知部405によって特定のポートに通知した後に、実行対象ソフトウェアに実行開始を通知する機能を有する。また、実行開始通知部410は、検出部409によって開始時刻が検出された後に、実行対象ソフトウェアに実行開始を通知してもよい。   The execution start notification unit 410 has a function of notifying the execution target software of the execution start after notifying a specific port by the address notification unit 405. The execution start notifying unit 410 may notify the execution target software of the execution start after the detection unit 409 detects the start time.

たとえば、CPU#2がポート#2にアドレス通知を行った後に、CPU#2は、実行対象ソフトウェアに実行開始を通知することができる。また、決定された複数のCPUがCPU#2、CPU#3である場合に、検出部409によって開始時刻が検出された後に、CPU#2、CPU#3が実行対象ソフトウェアに実行開始を通知することができる。なお、実行開始通知は、RAM103、フラッシュROM104などの記憶領域に記憶されてもよい。   For example, after the CPU # 2 issues an address notification to the port # 2, the CPU # 2 can notify the execution target software of the execution start. Further, when the determined CPUs are CPU # 2 and CPU # 3, after the start time is detected by the detection unit 409, the CPU # 2 and CPU # 3 notify the execution target software of the execution start. be able to. The execution start notification may be stored in a storage area such as the RAM 103 and the flash ROM 104.

図5は、ポート接続器203のブロック図である。ポート接続器203は、メモリコントローラ202の一形態であり、バス110とアドレス変換器204の間に存在し、各ポートの接続、非接続を制御する。各ポートの接続、非接続は、CPU#1〜CPU#4によってアクセスされる設定レジスタ501によって制御される。設定レジスタ501は、設定レジスタ501#1〜設定レジスタ501#4を含み、各ポートの接続、非接続を制御する。   FIG. 5 is a block diagram of the port connector 203. The port connector 203 is a form of the memory controller 202 and exists between the bus 110 and the address converter 204 and controls connection / disconnection of each port. Connection / disconnection of each port is controlled by a setting register 501 accessed by the CPUs # 1 to # 4. The setting register 501 includes setting registers 501 # 1 to 501 # 4 and controls connection / disconnection of each port.

たとえば、設定レジスタ501#1は、スイッチ#1を制御し、ポート#1の接続、非接続を設定する。設定レジスタ501#1は、設定値が“1”であればポート#1を接続にし、設定値が“0”であればポート#1を非接続にする。他の設定レジスタも同様に、設定レジスタ501#2〜設定レジスタ501#4が、それぞれポート#2〜ポート#4の接続、非接続を行う。非接続となったポートは、ポート内の結線に電力が供給されなくなる。結果、ポートが不要の場合にポートを非接続とすることで、省電力効果を得ることができる。   For example, the setting register 501 # 1 controls the switch # 1 and sets connection / disconnection of the port # 1. The setting register 501 # 1 connects the port # 1 if the setting value is “1”, and disconnects the port # 1 if the setting value is “0”. Similarly, the setting registers 501 # 2 to 501 # 4 connect and disconnect the ports # 2 to # 4, respectively. The disconnected port is not supplied with power to the connection within the port. As a result, the power saving effect can be obtained by disconnecting the port when the port is unnecessary.

図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 address converter 204 and settings. The explanatory diagram denoted by reference numeral 601 shows the address converter 204. The address converter 204 is a form of the memory controller 202 and exists between the port connector 203 and the shared memory 201, and converts the logical address and physical address of each port. The conversion between the logical address and the physical address of each port is controlled by conversion registers 603 # 1 to 603 # 4 accessed by CPU # 1 to CPU # 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の設定は設定なしとなり、アドレススルーの設定となる。   As an embodiment, the conversion register 603 # 1 controls a TLB (Translation Lookaside Buffer) # 1. The controlled TLB # 1 converts the logical address space and physical address space of the port # 1. The explanatory diagram denoted by reference numeral 602 is an explanatory diagram illustrating an example of the relationship between the conversion register 603 # 1 and the TLB # 1. The content set in TLB # 1 changes according to the setting of conversion register 603 # 1. For example, when the CPU # 1 sets the conversion register 603 # 1 to “0b0000”, the setting of the TLB # 1 is not set and the address through is set.

また、CPU#1が、変換レジスタ603#1を“0b1000”に設定した場合、TLB#1の設定がTLB#1設定604−1となる。TLB#1設定604−1は、論理アドレス空間0x0000〜0x00ffを、共用メモリブロック#1の物理アドレス空間に指定している。   Further, when the CPU # 1 sets the conversion register 603 # 1 to “0b1000”, the setting of the TLB # 1 becomes the TLB # 1 setting 604-1. The TLB # 1 setting 604-1 designates the logical address space 0x0000 to 0x00ff as the physical address space of the shared memory block # 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のアクセス可能な物理アドレス空間を集約することになる。   When the CPU # 1 sets the conversion register 603 # 1 to “0b1100”, the setting of the TLB # 1 becomes the TLB # 1 setting 604-2. The TLB # 1 setting 604-2 designates the logical address space 0x0000 to 0x01ff as the physical address space of the shared memory block # 1 and the shared memory block # 2. Thus, from the state where port # 1 can access shared memory block # 1 and port # 2 can access shared memory block # 2, port # 1 can access physical addresses of port # 1 and port # 2. Space will be aggregated.

また、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 sets the conversion register 603 # 1 to “0b1010”, the setting of the TLB # 1 becomes the TLB # 1 setting 604-3. The TLB # 1 setting 604-3 designates the logical address space 0x0000 to 0x01ff as the physical addresses of the shared memory block # 1 and the shared memory block # 3. Thus, from the state where port # 1 can access shared memory block # 1 and port # 3 can access shared memory block # 3, port # 1 can access physical addresses of port # 1 and port # 3. Space will be aggregated.

また、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 CPU # 1 sets conversion register 603 # 1 to “0b1110”, the setting of TLB # 1 becomes TLB # 1 setting 604-4. The TLB # 1 setting 604-4 designates the logical address space 0x0000 to 0x02ff as the physical addresses of the shared memory block # 1 to shared memory block # 3. Thus, from the state in which the port # 1 to the port # 3 can access the shared memory block # 1 to the shared memory block # 3, respectively, the physical addresses accessible to the port # 1 to the port # 3 to the port # 1 Space will be aggregated.

同様にTLB#2〜TLB#4も、変換レジスタ603#2〜変換レジスタ603#4によって、アドレス変換方法が指定される。また、本実施の形態では、変換レジスタ603によってTLBの内容を指定していたが、変換レジスタ603にて直接TLBの内容を記述してもよい。   Similarly, for TLB # 2 to TLB # 4, the address conversion method is designated by the conversion registers 603 # 2 to 603 # 4. In this embodiment, the content of the TLB is specified by the conversion register 603. However, the content of the TLB may be directly described by the conversion register 603.

図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 multi-core processor system 100 executes parallel software P1, parallel software P2, distributed software S1 to distributed software S6 as software. The CPUs # 1 to # 4 access the shared memory 201 through the memory controller 202.

次に各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 CPU # 1 sequentially executes the master thread P1, the distributed software S2, and the distributed software S3 of the parallel software P1 by the OS # 1. The CPU # 2 sequentially executes the slave thread P1-1 of the parallel software P1, the master thread P2 of the parallel software P2, and the distributed software S4 by the OS # 2. The CPU # 3 sequentially executes the slave thread P1-2 of the parallel software P1, the slave thread P2-1 of the parallel software P2, and the distributed software S5 by the OS # 3. The CPU # 4 sequentially executes the distributed software S1, the slave thread P2-2 of the parallel software P2, and the distributed software S6 by the OS # 4.

図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. CPU # 1 to CPU # 4 periodically notify the settings of the memory controller 202 to the ports # 1 to # 4 through the converter setting process. The converter setting process is a process for setting the setting register 501 of the port connector 203 and setting the conversion register 603 of the address converter 204.

たとえば、ポート#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 port # 1, distributed software can be set by the converter setting process u # 1-1. At the timing when the converter setting process u # 1-1 is executed, the converter setting process u # 2-1 is performed for the port # 2, the converter setting process u # 3-1 is performed for the port # 3, and the port # 4 is processed. The distributed software is set by the converter setting process u # 4-1. As an example of the setting process, there are connection setting and release setting performed for the port connector 203, logical single space setting and logical continuous space setting performed for the address converter 204. By setting the logical continuous space, the physical address space accessible by a plurality of ports is aggregated into the physical address space accessible by one port.

また、一定期間経過後、ポート#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 ports # 1 to # 4 are updated by the converter setting process u # 1-2 to the converter setting process u # 4-2. As an example, the port # 1 is updated to the setting of the distributed software by the converter setting process u # 1-2. Ports # 2 to # 4 are updated to the settings of the parallel software P2 by the converter setting process u # 2-2 to the converter setting process u # 4-2. In this example, since the parallel software P2 is set at the same time, the CPU that controls the port # 2 to the port # 4 can execute the barrier synchronization code 903-1 to the barrier synchronization code 903-3.

バリア同期コードとは、同期が必要なすべての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 # 2 controls port # 2, CPU # 3 controls port # 3, and CPU # 4 controls port # 4. Therefore, after the CPU # 2 performs the converter setting process U # 2-2, the CPU # 2 executes the barrier synchronization code 903-1 and stands by.

CPU#3、CPU#4も同様に、変換器設定処理を行った後、バリア同期コードを実行し待機する。CPU#2〜CPU#4がバリア同期コードを実行した段階で、ソフトウェアを実行開始する開始時刻として検出し、待機していたCPUは復帰し、並列ソフトウェアP2を実行する。これにより、並列ソフトウェアP2のアクセスをCPU#2〜CPU#4が同時に行うことができる。   Similarly, CPU # 3 and CPU # 4 execute the converter setting process, and then execute the barrier synchronization code and wait. When the CPU # 2 to CPU # 4 execute the barrier synchronization code, the CPU detects the start time for starting execution of the software, and the CPU that has been waiting returns to execute the parallel software P2. Thereby, CPU # 2-CPU # 4 can access parallel software P2 simultaneously.

並列ソフトウェア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 multi-core processor system 100 and the setting state of the memory controller 202 at timing t1 to timing t3 are shown in FIGS.

図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 memory controller 202 at the timing t1. In the multi-core processor system 100 at the timing t1, the CPU # 1 to CPU # 3 execute the parallel software P1, and the CPU # 4 executes the distributed software S1. As a setting state of the memory controller 202, the port # 1 becomes a master port, and the port # 1 accesses the shared memory 201 by executing the parallel software P1 in the CPUs # 1 to # 3. Port # 2 and port # 3 are not connected. Port # 4 also becomes a master port, and port # 4 accesses shared memory 201 by execution of distributed software S1 in CPU # 4.

図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 memory controller 202 at the timing t1. The diagram denoted by reference numeral 1101 shows the state of the port connector 203 and the state of the address converter 204. A table group denoted by reference numeral 1102 indicates a setting state of TLB # 1 and TLB # 4. In port # 1, “1” is set in the setting register 501-1 by the converter setting process u # 1-3. As a result, port # 1 is connected. Subsequently, in the port # 1, the converter setting process u # 1-3 sets the conversion register 603 # 1 to “0b1110”, whereby the TLB # 1 setting 1103 is set to the TLB # 1. As a result, the port # 1 can access the shared memory block # 1 to the shared memory block # 3 and provide the continuous logical address space 0x0000 to 0x02ff to the parallel software 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に提供することができる。   At port # 2, “0” is set in the setting register 501-2 by the converter setting process u # 2-3. As a result, the port # 2 is disconnected. Similarly, at port # 3, “0” is set in the setting register 501-3 by the converter setting process u # 3-3. As a result, port # 3 is also disconnected. At port # 4, “1” is set in the setting register 501-4 by the converter setting process u # 4-3. As a result, the port # 4 is connected. Subsequently, in the port # 4, the TLB # 4 setting 1104 is set in the TLB # 4 by the converter setting process u # 4-3. As a result, the port # 4 can access the shared memory block # 4 and provide the logical address space converted from the physical address space to the distributed software S1.

図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 memory controller 202 at the timing t2. The multi-core processor system 100 at the timing t2 executes the distributed software S3 on the CPU # 1. Similarly, in the multi-core processor system 100, the CPU # 2 executes the distributed software S4, the CPU # 3 executes the distributed software S5, and the CPU # 4 executes the distributed software S6. In addition, as a setting state of the memory controller 202, the port # 1 to the port # 4 become master ports and access to the shared memory 201 is performed.

図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 memory controller 202 at the timing t2. The diagram denoted by reference numeral 1301 shows the state of the port connector 203 and the state of the address converter 204. A table group denoted by reference numeral 1302 indicates a setting state of TLB # 1 to TLB # 4. At port # 1, “1” is set in the setting register 501-1 by the converter setting processing u # 1-4. As a result, port # 1 is connected. Subsequently, in port # 1, TLB # 1 setting 1303 is set in TLB # 1 by converter setting processing u # 1-4. As a result, the port # 1 can access the shared memory block 201 # 1 and provide the logical address space converted from the physical address space to the distributed software 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に提供する。   The same applies to port # 2 to port # 4. The port # 2 is connected by the converter setting process u # 2-4, accesses the shared memory block 201 # 2, the TLB # 2 setting 1304 is set in the TLB # 2, and the logical address space is set in the distributed software S4. provide. Port # 3 is connected by converter setting processing u # 3-4, accesses shared memory block 201 # 3, TLB # 3 is set to TLB # 3 1305, and logical address space is set to distributed software S5. provide. The port # 4 is connected by the converter setting process u # 4-4, accesses the shared memory block 201 # 4, the TLB # 4 setting 1306 is set in the TLB # 4, and the logical address space is set in the distributed software S6. provide.

図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 memory controller 202 at the timing t3. The multi-core processor system 100 at the timing t3 executes the distributed software S2 at the CPU # 1, and executes the parallel software P2 at the CPU # 2 to the CPU # 4. As a setting state of the memory controller 202, the port # 1 becomes a master port, and the port # 1 accesses the shared memory 201 by executing the distributed software S2 in the CPU # 1. The port # 2 also becomes a master port, and the port # 2 accesses the shared memory 201 by executing the parallel software P2 in the CPUs # 2 to # 4. Port # 3 and port # 4 are not connected.

図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 memory controller 202 at the timing t3. The diagram indicated by reference numeral 1501 shows the state of the port connector 203 and the state of the address converter 204. A table group denoted by reference numeral 1502 indicates a setting state of TLB # 1 and TLB # 2. In the port # 1, “1” is set in the setting register 501-1 by the converter setting process u # 1-5. As a result, port # 1 is connected. Subsequently, in the port # 1, the converter setting process u # 1-5 sets the conversion register 603 # 1 to “0b1000” to set the TLB # 1 to the TLB # 1 setting 1503. Thereby, the port # 1 can access the shared memory block 201 # 1 and provide the logical address space converted from the physical address space to the distributed software 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に提供することができる。   At port # 2, “1” is set in the setting register 501-2 by the converter setting process u # 2-5. As a result, port # 2 is connected. Subsequently, in the port # 2, the TLB # 2 setting 1504 is set in the TLB # 2 by the converter setting process u # 2-5. Thereby, the port # 2 can access the shared memory block 201 # 2 to the shared memory block 201 # 4, and can provide the continuous logical address space 0x0000 to 0x02ff to the parallel software P2.

ポート#3では、変換器設定処理u#3−5によって、設定レジスタ501−3に“0”が設定される。これによりポート#3は非接続状態となる。同様に、ポート#4では、変換器設定処理u#4−5によって、設定レジスタ501−4に“0”が設定される。これによりポート#4も非接続状態となる。   At port # 3, “0” is set in the setting register 501-3 by the converter setting process u # 3-5. As a result, the port # 3 is disconnected. Similarly, at port # 4, “0” is set in the setting register 501-4 by the converter setting process u # 4-5. As a result, port # 4 is also disconnected.

図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 scheduler # 1 to the scheduler # 4 as a function when the software is activated. Steps S1601 to S1604, S1610, and S1611 are executed by a specific CPU among the CPUs 101, and steps S1605 to S1609 are executed by the CPU detected in step S1603. In the present embodiment, it is assumed that the specific CPU described above is CPU # 1.

CPU#1は、対象のソフトウェアの起動要求を受ける(ステップS1601)。起動要求は、たとえば、ユーザがUIの操作によって発行される。続けて、CPU#1は、並列度情報テーブル401から、対象のソフトウェアの並列度情報と並列数Pを取得する(ステップS1602)。続けて、CPU#1は、低負荷のCPUを並列数P個検出する(ステップS1603)。   CPU # 1 receives a request to activate the target software (step S1601). The activation request is issued by the user operating the UI, for example. Subsequently, CPU # 1 obtains the parallel degree information and the parallel number P of the target software from the parallel degree information table 401 (step S1602). Subsequently, CPU # 1 detects P CPUs having a low load in parallel (step 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 can detect P CPUs from the CPU having a low load according to the usage state of the CPU from the information of the scheduler # 1 to the scheduler # 4. The CPU usage status may be a CPU usage rate or a CPU memory usage rate. For example, if P = 2 and the CPU usage status is highest in the order of CPU4, CPU3, CPU2, and CPU1, CPU # 1 can detect CPU2 and CPU1.

検出後、CPU#1は、検出されたCPU群のうち、先頭のCPUを選択する(ステップS1604)。選択されたCPUは、アドレス空間変換処理を実行する(ステップS1605)。アドレス空間変換処理の詳細は、図17にて後述する。処理後、選択されたCPUは、対象のソフトウェアの並列度情報が“並列”か否かを判断する(ステップS1606)。   After the detection, CPU # 1 selects the first CPU from the detected CPU group (step S1604). The selected CPU executes an address space conversion process (step S1605). Details of the address space conversion processing will be described later with reference to FIG. After the processing, the selected CPU determines whether or not the parallel degree information of the target software is “parallel” (step S1606).

並列度情報が“分散”である場合(ステップ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 port connector 203 and the address converter 204 (step S1608). The operation content of the driver task is a task for performing the setting to the port connector 203 and the address converter 204 set in the processing of step S1605 and the execution of the barrier synchronization code at a constant cycle.

並列度情報が“並列”である場合(ステップ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, CPU # 1 determines whether the selected CPU is the last CPU in the detected CPU group (step S1610). If it is not the last CPU (step S1610: No), CPU # 1 selects the next CPU in the detected CPU group (step S1611), and proceeds to the process of step S1605. If it is the last CPU (step S1610: Yes), the CPU # 1 ends the scheduling process.

図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 port connector 203 connection setting (step S1702) and the address converter 204 logical single space setting (step S1703), and the address The space conversion process ends.

ポート接続器203接続設定とは、選択されたCPUに対応するポートを接続状態にする処理である。たとえば、選択されたCPUがCPU#1であれば、CPU#1は、ポート#1の接続状態を制御する設定レジスタ501#1を“1”に設定することができる。アドレス変換器204論理単独空間設定とは、ソフトウェアの論理アドレス空間を、選択されたCPUに対応するポートの共用メモリブロック#1〜共用メモリブロック#4のいずれか1つの物理アドレス空間に対応づける設定である。   The port connector 203 connection setting is a process for setting a port corresponding to the selected CPU to a connected state. For example, if the selected CPU is CPU # 1, CPU # 1 can set the setting register 501 # 1 for controlling the connection state of port # 1 to “1”. The address converter 204 logical single space setting is a setting for associating the logical address space of the software with any one physical address space of the shared memory block # 1 to the shared memory block # 4 of the port corresponding to the selected CPU. It is.

並列数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 port connector 203 connection setting (step S1705) and the address converter 204 logical continuous space setting (step S1706). ). The address converter 204 logical contiguous space setting refers to the physical address of two or more shared memory blocks among the shared memory block # 1 to the shared memory block # 4 of the port corresponding to the selected CPU. It is a setting that aggregates and associates with space. Further, the associated logical addresses are set to be a continuous space.

選択された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 port connector 203 release setting (step S1707). The port connector 203 release setting is a process for disconnecting the port corresponding to the selected CPU. Further, the port connector 203 connection setting, the port connector 203 release setting, the address converter 204 logical single space setting, and the address converter 204 logical continuous space setting are the converter setting processing described above with reference to FIG.

ステップ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 CPUs # 1 to # 3, and the parallel software P2 is assigned to the CPUs # 2 to # 4. Even when mixed, parallel software should be executed at the same timing in each core. When it becomes an execution target, an address conversion notification is sent to a specific port of the memory controller, and the parallel software is executed after the notification is completed, so that it can operate normally.

また、マルチコアプロセッサシステムは、コアの数とポートの数が等しくてもよい。これにより、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 # 1 has port # 1, CPU # 2 has port # 2, and CPU # 3 and CPU # 4 have port # 3. Can be associated. In this case, it is possible to avoid access contention among CPU # 1, CPU # 2, and CPU # 3 or CPU # 4. Further, if the software assigned by CPU # 3 and CPU # 4 is software that frequently accesses each other's memory, the same logical address space may be used for one port.

このように、依存関係が高いソフトウェアを割り当てる複数の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 processor system # 1 to # 4 CPU, port 110 bus 201 shared memory 202 memory controller 203 port connector 204 address converter 401 parallelism information table 402 acquisition unit 403 determination unit 404 setting unit 405 address notification unit 406 selection unit 407 Cancellation notification unit 408 Aggregation unit 409 Detection unit 410 Execution start notification unit

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.
JP2014021650A 2014-02-06 2014-02-06 Multi-core processor system, multi-core processor system control method, and multi-core processor system control program Expired - Fee Related JP5817860B2 (en)

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)

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