JP5776810B2 - Multiprocessor system, control program, and control method - Google Patents

Multiprocessor system, control program, and control method Download PDF

Info

Publication number
JP5776810B2
JP5776810B2 JP2014059151A JP2014059151A JP5776810B2 JP 5776810 B2 JP5776810 B2 JP 5776810B2 JP 2014059151 A JP2014059151 A JP 2014059151A JP 2014059151 A JP2014059151 A JP 2014059151A JP 5776810 B2 JP5776810 B2 JP 5776810B2
Authority
JP
Japan
Prior art keywords
thread
cpu
data
distributed cache
threads
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
JP2014059151A
Other languages
Japanese (ja)
Other versions
JP2014142956A (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 JP2014059151A priority Critical patent/JP5776810B2/en
Publication of JP2014142956A publication Critical patent/JP2014142956A/en
Application granted granted Critical
Publication of JP5776810B2 publication Critical patent/JP5776810B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、メモリへデータを格納するマルチプロセッサシステム、制御プログラム、および制御方法に関する。   The present invention relates to a multiprocessor system, a control program, and a control method for storing data in a memory.

従来、CPU(Central Processing Unit)がメモリよりもアクセス速度が早いキャッシュを有する場合、CPUからデータの書き込み要求が発生すると、キャッシュにデータが格納される。これにより、CPUはキャッシュからデータを読み出すことができるので、データの読み出しを高速化することができる。   Conventionally, when a CPU (Central Processing Unit) has a cache whose access speed is faster than that of a memory, when a data write request is generated from the CPU, the data is stored in the cache. Thereby, since the CPU can read data from the cache, it is possible to speed up the data reading.

マルチコアプロセッサシステムでは、各スレッドがどのCPUに割り当てられるかについては割当状態に応じて決定されるため、対象プログラム内で複数のスレッド間で共有されるデータがあれば、該データは複数のCPUで利用される可能性がある。ここで、マルチコアプロセッサへのスレッドの割り当ては、たとえば、最も負荷の小さいCPUへ割り当てる。   In a multi-core processor system, the CPU to which each thread is assigned is determined according to the assignment state. Therefore, if there is data shared among a plurality of threads in the target program, the data is transferred to a plurality of CPUs. May be used. Here, the thread is assigned to the multi-core processor, for example, to the CPU having the smallest load.

そこで、マルチコアプロセッサシステムにおいてCPUごとに分散キャッシュを有する場合には、データの書き込み要求が発生した場合にすべてのCPUの分散キャッシュに該データを格納する技術(第1の従来技術)が知られている。そして、分散キャッシュ間のデータの一貫性を保つために、スヌープ処理が行われる。スヌープ処理では、一のCPUの分散キャッシュでキャッシュラインの変化が検出されると、スヌープバスを介して他のCPUの分散キャッシュが更新される。   Therefore, when a multi-core processor system has a distributed cache for each CPU, a technique (first prior art) for storing the data in the distributed cache of all CPUs when a data write request occurs is known. Yes. A snoop process is performed to maintain data consistency among the distributed caches. In the snoop process, when a change in the cache line is detected in the distributed cache of one CPU, the distributed cache of the other CPU is updated via the snoop bus.

また、マルチコアプロセッサの分散キャッシュのうちのいずれかの分散キャッシュにデータが保持される。そして、分散キャッシュにデータを格納していないCPUは、該データを保持しているCPUの分散キャッシュにアクセスを行うことにより、該データを読み出す技術(第2の従来技術)が知られている(たとえば、下記特許文献1を参照。)。   Further, data is held in any one of the distributed caches of the multi-core processor. A technique (second prior art) is known in which a CPU that does not store data in the distributed cache reads the data by accessing the distributed cache of the CPU that holds the data ( For example, see the following Patent Document 1.)

また、マルチコアプロセッサシステムにおいてCPUごとにローカルメモリを有する場合に、一のCPUのローカルメモリへ他のCPUがデータを書き込む技術が知られている(たとえば、下記特許文献2を参照。)。   In addition, when a multi-core processor system has a local memory for each CPU, a technique is known in which another CPU writes data to the local memory of one CPU (see, for example, Patent Document 2 below).

特開平1−251250号公報JP-A-1-251250 特開平11−39214号公報Japanese Patent Laid-Open No. 11-39214

しかしながら、第2の従来技術では、データを分散キャッシュに格納していない他のCPUが該データを読み出すには、該データを分散キャッシュに格納した一のCPUへアクセスしなければならない。よって、一のCPUと他のCPUとでは該データへのアクセスに速度差が発生する。すなわち、第2の従来技術では、データを分散キャッシュに格納していないCPUは読み出し速度が遅くなる問題点があった。   However, in the second prior art, in order for another CPU that does not store data in the distributed cache to read the data, it must access one CPU that stores the data in the distributed cache. Therefore, a speed difference occurs in access to the data between one CPU and another CPU. That is, the second prior art has a problem that the CPU that does not store data in the distributed cache has a low reading speed.

一方、第1の従来技術では、各CPUの分散キャッシュにデータが格納されるため、第2の従来技術のように読み出し速度は遅くならないが、マルチコアプロセッサのうちのすべてのCPUが分散キャッシュに格納したデータを読み出すとは限らない。すなわち、該CPUの分散キャッシュの領域が読み出されないデータに占拠される問題点があった。   On the other hand, in the first prior art, since data is stored in the distributed cache of each CPU, the reading speed is not slow as in the second prior art, but all the CPUs of the multi-core processor are stored in the distributed cache. The read data is not always read out. That is, there is a problem in that the distributed cache area of the CPU is occupied by unread data.

本発明は、上述した第1および第2の従来技術による問題点を解消するため、キャッシュの読み出し速度に影響を与えることなく、キャッシュの領域を有効的に活用することができるマルチプロセッサシステム、制御プログラム、および制御方法を提供することを目的とする。   In order to solve the above-described problems caused by the first and second prior arts, the present invention provides a multiprocessor system and control capable of effectively utilizing a cache area without affecting the cache read speed. It is an object to provide a program and a control method.

本発明の一観点によれば、複数のスレッドをそれぞれ実行する複数のコアと、前記複数のスレッドを前記複数のコアで実行する場合に読み出すデータを前記複数のコアごとに記憶する複数のキャッシュとを有するマルチプロセッサシステムであって、前記複数のコアのうち第1のコアは、前記複数のスレッドのうち第1のスレッドを実行する場合に、前記複数のキャッシュのうち前記第1のコアに対応する第1のキャッシュから第1のデータを読み出し、前記複数のスレッドのうち、前記第1のデータを読み出す第2のスレッドの実行を前記複数のコアのうち第2のコアに割り当て、前記複数のキャッシュのうち、前記第2のコアに対応する第2のキャッシュに前記第1のデータを書き込むマルチプロセッサシステム、制御プログラム、および制御方法を提供する。   According to an aspect of the present invention, a plurality of cores that respectively execute a plurality of threads, and a plurality of caches that store data to be read for each of the plurality of cores when the plurality of threads are executed by the plurality of cores. The first core of the plurality of cores corresponds to the first core of the plurality of caches when executing the first thread of the plurality of threads. The first data is read from the first cache, and the execution of the second thread that reads the first data out of the plurality of threads is assigned to the second core of the plurality of cores, Among the caches, a multiprocessor system for writing the first data to a second cache corresponding to the second core, a control program, and To provide a control method.

本マルチプロセッサシステム、制御プログラム、および制御方法によれば、キャッシュの読み出し速度に影響を与えることなく、キャッシュの領域を有効的に活用することができるという効果を奏する。   According to the multiprocessor system, the control program, and the control method, the cache area can be effectively used without affecting the cache read speed.

本実施の形態の一例を示す説明図である。It is explanatory drawing which shows an example of this Embodiment. スレッドの割当例を示す説明図である。It is explanatory drawing which shows the example of thread allocation. マルチコアプロセッサシステム100のハードウェアの一例を示すブロック図である。2 is a block diagram illustrating an example of hardware of a multi-core processor system 100. FIG. 変換テーブル400の一例を示す説明図である。It is explanatory drawing which shows an example of the conversion table. 分散キャッシュ111の詳細例を示す説明図である。3 is an explanatory diagram illustrating a detailed example of a distributed cache 111. FIG. スヌープバス103の詳細例を示す説明図である。3 is an explanatory diagram illustrating a detailed example of a snoop bus 103. FIG. 依存関係に関するリスト群700の一例を示す説明図である。It is explanatory drawing which shows an example of the list group 700 regarding a dependency. スレッド管理テーブル800の一例を示す説明図である。5 is an explanatory diagram illustrating an example of a thread management table 800. FIG. マルチコアプロセッサシステム100の機能ブロック図である。2 is a functional block diagram of a multi-core processor system 100. FIG. スレッド1の割当例を示す説明図である。It is explanatory drawing which shows the example of allocation of the thread | sled 1. FIG. スレッド2の割当例を示す説明図である。6 is an explanatory diagram illustrating an example of assignment of a thread 2; FIG. 変数xが格納される例を示す説明図である。It is explanatory drawing which shows the example in which the variable x is stored. OS191による更新処理手順を示すフローチャート(その1)である。5 is a flowchart (part 1) illustrating an update processing procedure by the OS 191. OS191による更新処理手順を示すフローチャート(その2)である。12 is a flowchart (part 2) illustrating an update processing procedure by the OS 191. 図13および図14で示した変換テーブルの更新処理(ステップS1305またはステップS1312)の詳細な説明を示すフローチャートである。FIG. 15 is a flowchart showing a detailed description of the conversion table update processing (step S1305 or step S1312) shown in FIGS. 13 and 14. FIG. 各MMUによる特定処理手順を示すフローチャートである。It is a flowchart which shows the specific process sequence by each MMU. 分散キャッシュコントローラによる格納処理手順(スヌープバス103からの書き込み要求)を示すフローチャートである。It is a flowchart which shows the storage processing procedure (write request from the snoop bus | bath 103) by a distributed cache controller. 分散キャッシュコントローラによる格納処理手順(MMUからの書き込み要求)を示すフローチャートである。It is a flowchart which shows the storage processing procedure (write request from MMU) by a distributed cache controller. アプリケーションの一例を示す説明図である。It is explanatory drawing which shows an example of an application. デコード結果の格納例を示す説明図である。It is explanatory drawing which shows the example of storage of a decoding result. PCM結果の格納例を示す説明図である。It is explanatory drawing which shows the example of storage of a PCM result.

本発明にかかるマルチプロセッサシステム、制御プログラム、および制御方法の好適な実施の形態を詳細に説明する。なお、本実施の形態のマルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。   DESCRIPTION OF EMBODIMENTS Preferred embodiments of a multiprocessor system, a control program, and a control method according to the present invention will be described in detail. In the multi-core processor system according to the present embodiment, the multi-core processor is a processor in which a plurality of cores are mounted. If a plurality of cores are mounted, a single processor having a plurality of cores may be used, or a processor group in which single core processors are arranged in parallel may be used. 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.

図1は、本実施の形態の一例を示す説明図である。図1のスレッド1{・・・}とスレッド2{・・・}とのそれぞれの{・・・}内には、それぞれのコーディング例が記述されている。   FIG. 1 is an explanatory diagram showing an example of the present embodiment. Each coding example is described in {...} Of thread 1 {...} And thread 2 {.

スレッド1では、変数zへ5が代入され、変数xに10が代入される。その後、スレッド1では変数zと10との加算結果が変数wへ代入される。よって、スレッド1において変数xと変数zと変数wとが出力データであり、スレッド1において変数zが入力データである。   In thread 1, 5 is assigned to variable z and 10 is assigned to variable x. Thereafter, in the thread 1, the addition result of the variables z and 10 is substituted into the variable w. Therefore, in thread 1, variable x, variable z, and variable w are output data, and in thread 1, variable z is input data.

スレッド2では、変数yへ変数xが代入され、変数zと100との乗算結果が変数aに代入される。よって、スレッド2において変数yと変数aとが出力データであり、変数xと変数zとが入力データである。   In the thread 2, the variable x is substituted into the variable y, and the multiplication result of the variables z and 100 is substituted into the variable a. Therefore, in thread 2, variable y and variable a are output data, and variable x and variable z are input data.

変数xの入力先スレッドはスレッド2であり、変数zの入力先スレッドはスレッド1とスレッド2である。テーブルは、出力データの項目と入力先スレッドの項目と割当先CPUの識別情報の項目とを有し、出力データごとに該出力データの入力先スレッドと該入力先スレッドの割当先CPUとが記述されている。   The input destination thread for variable x is thread 2, and the input destination threads for variable z are thread 1 and thread 2. The table includes an output data item, an input destination thread item, and an assignment destination CPU identification information item. The output data input destination thread and the assignment destination CPU of the input destination thread are described for each output data. Has been.

スレッド1とスレッド2とを有するプログラムの開発時に該プログラムの開発者がコンパイラを用いることにより出力データと該出力データの入力先スレッドとを特定することができる。また、入力先スレッドの割当先CPUについては、スレッド1とスレッド2との割当状態に応じて変化する。   When developing a program having the thread 1 and the thread 2, the developer of the program can specify the output data and the input destination thread of the output data by using a compiler. Further, the assignment destination CPU of the input destination thread changes according to the assignment state of the thread 1 and the thread 2.

スレッド1はCPU101に割り当てられているため、出力データの項目の情報が変数zであり、かつ入力先スレッドの識別情報の項目の情報がスレッド1の場合、割当先CPUの識別情報の項目の情報はCPU101である。   Since the thread 1 is assigned to the CPU 101, when the output data item information is the variable z and the input destination thread identification information item information is the thread 1, the assignment destination CPU identification information item information Is the CPU 101.

まず、OS(Operating System)191が(1)スレッド2をCPUに割り当てると、OS191が、出力データの項目の情報が変数zであり、かつ入力先スレッドの識別情報の項目の情報がスレッド2の場合の割当先CPUの識別情報の項目の情報をCPU102に更新する。   First, when an OS (Operating System) 191 assigns (1) the thread 2 to the CPU, the OS 191 indicates that the output data item information is the variable z and the input destination thread identification information item information is the thread 2 information. In this case, the CPU 102 updates the information of the identification information item of the assignment destination CPU.

さらに、OS191が、(2)出力データの項目の情報が変数xであり、かつ入力先スレッドの識別情報の項目の情報がスレッド2の場合の割当先CPUの識別情報の項目の情報をCPU102に更新する。なお、ここでは、OS191がスレッド2をCPU102に割り当てることにより、該スレッド2の割当を検出することとする。   Further, the OS 191 notifies the CPU 102 of information on the identification information item of the assignment destination CPU when the information of the item of output data is the variable x and the information of the identification information item of the input destination thread is the thread 2. Update. Here, it is assumed that the OS 191 detects the assignment of the thread 2 by assigning the thread 2 to the CPU 102.

そして、OS191が、(3)変数xの書き込み要求を検出すると、OS191が、(4)変数xに基づいてテーブルから割当先CPUの識別情報の項目に保持されている情報を検索することにより、割当先CPUの識別情報を特定する。つぎに、OS191が、(5)特定した割当先CPUの識別情報がCPU102を示しているため、CPU102の分散キャッシュ112へ変数xを格納する。   Then, when the OS 191 detects (3) a write request for the variable x, the OS 191 searches the information held in the identification information item of the allocation destination CPU from the table based on (4) the variable x. The identification information of the assignment destination CPU is specified. Next, the OS 191 stores the variable x in the distributed cache 112 of the CPU 102 because (5) the identification information of the specified assignment destination CPU indicates the CPU 102.

したがって、マルチコアプロセッサのCPUのキャッシュのうち、対象データを入力として用いるスレッドが割り当てられているCPUのキャッシュにのみ対象データを保持することができる。すなわち、対象データの読み出しが不要なCPUのキャッシュに対象データが格納されないため、入力先スレッドが対象データを読み出す読み出し速度に影響を与えることなく、各キャッシュの領域を有効的に活用することができる。   Therefore, the target data can be held only in the cache of the CPU to which the thread that uses the target data as an input is allocated among the CPU caches of the multi-core processor. That is, since the target data is not stored in the CPU cache that does not require reading of the target data, each cache area can be effectively used without affecting the read speed at which the input destination thread reads the target data. .

また、上述したようにスレッドの割当についてはCPUの割当状態に応じて入力先スレッドの割り当てが決定するため、対象データが格納されるCPUのキャッシュも該入力先スレッドの割当状態に応じて変化する。   Further, as described above, since the assignment of the input destination thread is determined according to the assignment state of the CPU as described above, the CPU cache in which the target data is stored also changes according to the assignment state of the input destination thread. .

図2は、スレッドの割当例を示す説明図である。(a)割当例1では、図1で示した例の様に、スレッド1がCPU101に割り当てられ、スレッド2がCPU102に割り当てられる。(b)割当例2では、スレッド1とスレッド2とが共にCPU101に割り当てられる。   FIG. 2 is an explanatory diagram showing an example of thread allocation. (A) In the allocation example 1, the thread 1 is allocated to the CPU 101 and the thread 2 is allocated to the CPU 102 as in the example shown in FIG. (B) In the allocation example 2, both the thread 1 and the thread 2 are allocated to the CPU 101.

本実施の形態において割当例1では、分散キャッシュ111と分散キャッシュ112とのうち、変数xは分散キャッシュ112のみに格納され、変数zは分散キャッシュ111と分散キャッシュ112とに格納される。一方、本実施の形態において割当例2では、分散キャッシュ111と分散キャッシュ112とのうち、変数xは分散キャッシュ111のみに格納され、変数zも分散キャッシュ111のみに格納される。本実施の形態では、各出力データの入力先スレッドの割当先CPUを記憶および更新することにより、該出力データを格納するCPUの分散キャッシュを決定している。   In the allocation example 1 in this embodiment, among the distributed cache 111 and the distributed cache 112, the variable x is stored only in the distributed cache 112, and the variable z is stored in the distributed cache 111 and the distributed cache 112. On the other hand, in the allocation example 2 in the present embodiment, among the distributed cache 111 and the distributed cache 112, the variable x is stored only in the distributed cache 111, and the variable z is also stored only in the distributed cache 111. In the present embodiment, the distributed cache of the CPU that stores the output data is determined by storing and updating the assignment destination CPU of the input destination thread of each output data.

つぎに、本実施の形態では、各出力データの入力先スレッドの割当先CPUについてMMU(Memory Management Unit)とスレッド管理テーブルを用いて管理する例を示す。   Next, in the present embodiment, an example is shown in which an allocation destination CPU of an input destination thread for each output data is managed using an MMU (Memory Management Unit) and a thread management table.

(マルチコアプロセッサシステム100のハードウェア)
図3は、マルチコアプロセッサシステム100のハードウェアの一例を示すブロック図である。図3において、マルチコアプロセッサシステム100は、たとえば、CPU101およびCPU102と、MMU141およびMMU142と、分散キャッシュ111および分散キャッシュ112と、共有メモリ104と、を有している。本実施の形態では、CPU101とCPU102とを併せてマルチコアプロセッサと称する。
(Hardware of the multi-core processor system 100)
FIG. 3 is a block diagram illustrating an example of hardware of the multi-core processor system 100. In FIG. 3, the multi-core processor system 100 includes, for example, a CPU 101 and a CPU 102, an MMU 141 and an MMU 142, a distributed cache 111 and a distributed cache 112, and a shared memory 104. In the present embodiment, the CPU 101 and the CPU 102 are collectively referred to as a multi-core processor.

また、図示していないがマルチコアプロセッサシステム100では、たとえば、ユーザや他の機器との入出力装置として、インターネットなどのネットワークと接続するI/F(Interface)と、ディスプレイと、キーボード109と、を備えている。   Although not shown, the multi-core processor system 100 includes, for example, an I / F (Interface) connected to a network such as the Internet, a display, and a keyboard 109 as input / output devices for users and other devices. I have.

ここで、CPU101とMMU141とがI/F181を介して接続され、MMU141と分散キャッシュ111(具体的には、分散キャッシュコントローラ121)とがI/F171を介して接続されている。CPU102とMMU142とがI/F182を介して接続され、MMU142と分散キャッシュ112(具体的には、分散キャッシュコントローラ122)とがI/F172を介して接続されている。各分散キャッシュの分散キャッシュコントローラと共有メモリ104とがスヌープバス103を介して接続されている。   Here, the CPU 101 and the MMU 141 are connected via the I / F 181, and the MMU 141 and the distributed cache 111 (specifically, the distributed cache controller 121) are connected via the I / F 171. The CPU 102 and the MMU 142 are connected via the I / F 182, and the MMU 142 and the distributed cache 112 (specifically, the distributed cache controller 122) are connected via the I / F 172. The distributed cache controller of each distributed cache and the shared memory 104 are connected via the snoop bus 103.

CPU101とCPU102とは、それぞれコアとレジスタとを有している。コアとは、具体的には、CPUの演算機能を実現する回路である。CPU101はマスタCPUであり、OS191を実行し、マルチコアプロセッサシステム100の全体の制御を司る。OS191は、ソフトウェアの各スレッドをどのCPUに割り当てるかを制御する機能を有し、CPU101に割り当てられたスレッドの切り替えを制御する機能を有している。CPU102はスレーブCPUであり、OS192を実行する。OS192はCPU102に割り当てられたスレッドの切り替えを制御する機能を有している。   The CPU 101 and the CPU 102 each have a core and a register. Specifically, the core is a circuit that realizes an arithmetic function of the CPU. The CPU 101 is a master CPU, executes the OS 191, and controls the entire multi-core processor system 100. The OS 191 has a function of controlling which CPU is assigned to each thread of software, and has a function of controlling switching of threads assigned to the CPU 101. The CPU 102 is a slave CPU and executes the OS 192. The OS 192 has a function of controlling switching of threads assigned to the CPU 102.

MMU141とMMU142は、アクセス要求をそれぞれCPU101とCPU102から受け付けると、該アクセス要求に付随している論理アドレスから物理アドレスに変換テーブル400を用いて変換する機能を有している。MMU141とMMU142についてはそれぞれCPU101の内部とCPU102の内部に含まれていてもよい。さらに、マルチコアプロセッサシステム100ではMMU141とMMU142とをハードウェアとしているが、MMU141とMMU142とをソフトウェアとしてそれぞれOS191とOS192との機能の一部であってもよい。   When the MMU 141 and the MMU 142 receive access requests from the CPU 101 and the CPU 102, respectively, the MMU 141 and the MMU 142 have a function of converting from a logical address attached to the access request to a physical address using the conversion table 400. The MMU 141 and the MMU 142 may be included in the CPU 101 and the CPU 102, respectively. Further, although the MMU 141 and the MMU 142 are hardware in the multi-core processor system 100, they may be part of the functions of the OS 191 and the OS 192, respectively, using the MMU 141 and the MMU 142 as software.

(変換テーブル400の一例)
図4は、変換テーブル400の一例を示す説明図である。論理アドレスとはプログラムのコーディング上で定義されている仮想メモリ空間上のアドレスであり、物理アドレスとは共有メモリ上のアドレスである。変換テーブル400では、論理アドレスごとに該論理アドレスを共有メモリ上にマッピングさせることにより得られる物理アドレスを有している。変換テーブル400では、論理アドレスの項目401と、物理アドレスの項目402と領域情報の項目403とを有している。
(Example of conversion table 400)
FIG. 4 is an explanatory diagram illustrating an example of the conversion table 400. A logical address is an address on a virtual memory space defined in the coding of a program, and a physical address is an address on a shared memory. The conversion table 400 has a physical address obtained by mapping the logical address on the shared memory for each logical address. The conversion table 400 includes a logical address item 401, a physical address item 402, and an area information item 403.

各CPUから通知されるアクセス要求には論理アドレスが付随されているため、変換テーブル400内の論理アドレスの項目401に保持されている情報から該アクセス要求の論理アドレスを検索することにより、物理アドレスを特定することができる。また、領域情報の項目403には、各論理アドレスで示される仮想メモリ空間上に配置される対象データの入力先スレッドの割当先CPUを判別可能な情報が保持されている。領域情報の項目403は各CPUに対応するCPUフラグを有している。領域情報の項目403はCPU101に対応するCPU101フラグとCPU102に対応するCPU102フラグとを有している。   Since an access request notified from each CPU is accompanied by a logical address, a physical address is obtained by searching the logical address of the access request from information held in the logical address item 401 in the conversion table 400. Can be specified. Further, the area information item 403 holds information that can determine the assignment destination CPU of the input destination thread of the target data arranged in the virtual memory space indicated by each logical address. The area information item 403 has a CPU flag corresponding to each CPU. The area information item 403 includes a CPU 101 flag corresponding to the CPU 101 and a CPU 102 flag corresponding to the CPU 102.

たとえば、領域情報の項目403のうち、CPU101フラグが1であり、CPU102フラグが0であれば、対象データの入力先スレッドの割当先CPUはCPU101である。また、たとえば、領域情報の項目403のうち、CPU101フラグが0であり、CPU102のフラグが1であれば、対象データの入力先スレッドの割当先CPUはCPU101である。   For example, in the area information item 403, if the CPU 101 flag is 1 and the CPU 102 flag is 0, the assignment destination CPU of the target data input destination thread is the CPU 101. For example, in the area information item 403, if the CPU 101 flag is 0 and the CPU 102 flag is 1, the CPU 101 is the assignment destination CPU of the target data input destination thread.

領域情報の項目403のうち、CPU101フラグおよびCPU102フラグについてはスレッドの割当状態に応じてOS191がどのフラグを立てるか(1に設定するか)を決定する。   Among the area information items 403, for the CPU 101 flag and the CPU 102 flag, the OS 191 determines which flag to set (set to 1) according to the thread allocation state.

図3に戻って、分散キャッシュ111は、分散キャッシュコントローラ121と分散キャッシュメモリ131とを有している。分散キャッシュコントローラ121が分散キャッシュメモリ131への書き込みや読み出しを制御する。分散キャッシュ112は、分散キャッシュコントローラ122と分散キャッシュメモリ132とを有している。分散キャッシュコントローラ122が分散キャッシュメモリ132への書き込みや読み出しを制御する。   Returning to FIG. 3, the distributed cache 111 includes a distributed cache controller 121 and a distributed cache memory 131. The distributed cache controller 121 controls writing to and reading from the distributed cache memory 131. The distributed cache 112 includes a distributed cache controller 122 and a distributed cache memory 132. The distributed cache controller 122 controls writing to and reading from the distributed cache memory 132.

分散キャッシュ111の分散キャッシュコントローラ121は、スヌープバス103へ物理アドレスやデータやコマンド情報をマスタI/F151を介して渡す。そして、分散キャッシュコントローラ121は、スヌープバス103から物理アドレスやデータやコマンド情報をスレーブI/F161を介して受け付ける。分散キャッシュ112の分散キャッシュコントローラ122は、スヌープバス103へ物理アドレスやデータやコマンド情報をマスタI/F152を介して渡す。分散キャッシュコントローラ121は、スヌープバス103から物理アドレスやデータやコマンド情報をスレーブI/F162を介して受け付ける。   The distributed cache controller 121 of the distributed cache 111 passes the physical address, data, and command information to the snoop bus 103 via the master I / F 151. The distributed cache controller 121 receives a physical address, data, and command information from the snoop bus 103 via the slave I / F 161. The distributed cache controller 122 of the distributed cache 112 passes the physical address, data, and command information to the snoop bus 103 via the master I / F 152. The distributed cache controller 121 receives a physical address, data, and command information from the snoop bus 103 via the slave I / F 162.

(分散キャッシュ111の詳細例)
図5は、分散キャッシュ111の詳細例を示す説明図である。上述のように分散キャッシュ111では分散キャッシュコントローラ121と分散キャッシュメモリ131を有している。分散キャッシュメモリ131では、データごとに物理アドレスとSTATEとデータとが記憶されている。
(Detailed example of distributed cache 111)
FIG. 5 is an explanatory diagram showing a detailed example of the distributed cache 111. As described above, the distributed cache 111 includes the distributed cache controller 121 and the distributed cache memory 131. In the distributed cache memory 131, a physical address, STATE, and data are stored for each data.

分散キャッシュメモリ131では、物理アドレスとSTATEを併せてタグ情報と称し、タグ情報とデータとを併せてキャッシュラインと称する。分散キャッシュコントローラ121は、MMU141またはスヌープバス103からの対象データのアクセス要求に付随する物理アドレスに基づいて分散キャッシュメモリ131に対象データが記憶されているか否かを判断することができる。   In the distributed cache memory 131, the physical address and STATE are collectively referred to as tag information, and the tag information and data are collectively referred to as a cache line. The distributed cache controller 121 can determine whether or not the target data is stored in the distributed cache memory 131 based on the physical address accompanying the access request for the target data from the MMU 141 or the snoop bus 103.

ここで、STATEについて説明する。STATEは2ビットの情報であり、STATEの値によって各キャッシュラインのとりうる状態が決まる。該状態はスヌープ方式を実現するプロトコルによって異なるが、代表的な状態としては以下の4つの状態である。
・M(Modified)状態:キャッシュラインが当該キャッシュだけに存在し、変更されていることを示す状態
・E(Exclusive)状態:キャッシュラインが当該キャッシュだけに存在し、変更されていないことを示す状態
・S(Shared)状態:キャッシュラインが複数のキャッシュに存在することを示す状態
・I(Invalid)状態:キャッシュラインは無効であることを示す状態
Here, STATE will be described. STATE is 2-bit information, and the state that each cache line can take is determined by the value of STATE. Although the state differs depending on the protocol that implements the snoop method, the following four states are typical.
-M (Modified) state: a state indicating that the cache line exists only in the cache and has been changed-E (Exclusive) state: a state in which the cache line exists only in the cache and has not been changed -S (Shared) state: a state indicating that a cache line exists in a plurality of caches-I (Invalid) state: a state indicating that the cache line is invalid

分散キャッシュコントローラ121は該4つの状態に対応して動作する。分散キャッシュコントローラ121による動作については、図17および図18のフローチャートを用いて後述する。また、分散キャッシュ112については、分散キャッシュ111と同様の機能であるため、詳細な説明を省略する。   The distributed cache controller 121 operates corresponding to the four states. The operation of the distributed cache controller 121 will be described later with reference to the flowcharts of FIGS. Further, since the distributed cache 112 has the same function as the distributed cache 111, detailed description thereof is omitted.

図3に戻って、スヌープバス103は、共有メモリ104と分散キャッシュとを接続し、スヌープ処理に対応するバスである。   Returning to FIG. 3, the snoop bus 103 connects the shared memory 104 and the distributed cache and is a bus corresponding to the snoop process.

(スヌープバス103の詳細例)
図6は、スヌープバス103の詳細例を示す説明図である。図6中の線は物理的な一本の信号線であり、黒丸は信号線同士の接続を表す。スヌープバス103は、アドレス信号線と、コマンド信号線と、データ信号線と、コントローラ601と、セレクト信号線と、を有している。スヌープバス103は、マスタI/F151およびマスタI/F152と、スレーブI/F161およびスレーブI/F162と、から信号を受ける。
(Detailed example of snoop bus 103)
FIG. 6 is an explanatory diagram showing a detailed example of the snoop bus 103. A line in FIG. 6 is one physical signal line, and a black circle represents a connection between the signal lines. The snoop bus 103 includes an address signal line, a command signal line, a data signal line, a controller 601, and a select signal line. Snoop bus 103 receives signals from master I / F 151 and master I / F 152, and slave I / F 161 and slave I / F 162.

マスタI/F151およびマスタI/F152は、たとえば、物理アドレスをアドレス信号線へ、読み出し要求であるか書き込み要求であるかを示すコマンド情報をコマンド信号線へ送出する。そして、送出された物理アドレスは、コントローラ601が受信する。   For example, the master I / F 151 and the master I / F 152 send a physical address to the address signal line and command information indicating whether it is a read request or a write request to the command signal line. Then, the controller 601 receives the transmitted physical address.

コントローラ601は、物理アドレスとあらかじめコントローラ601に登録されたマッピング情報に基づいて、対応するスレーブI/Fへのセレクト信号線にセレクト信号を出力する。セレクト信号を受け取ったスレーブI/FはマスタI/F151およびマスタI/F152からの物理アドレスとコマンド情報を受け取り、該スレーブI/Fはコマンド情報に応じてデータのやりとりを行う。   The controller 601 outputs a select signal to the select signal line to the corresponding slave I / F based on the physical address and mapping information registered in the controller 601 in advance. The slave I / F that has received the select signal receives the physical address and command information from the master I / F 151 and the master I / F 152, and the slave I / F exchanges data according to the command information.

さらに、スヌープバス103には、たとえば、ブロードキャストとブロックとインバリデートとの3つの機能がある。ブロードキャストとは、マスタI/Fから、コマンド情報とデータ情報との組み合わせの要求を、あらかじめブロードキャスト先として設定されたすべてのスレーブI/Fに送出する機能である。ブロックとは、現在のバス接続を強制的に解除する機能である。インバリデートとは、各分散キャッシュメモリに対して対象物理アドレスに対応するキャッシュラインを無効化させる機能である。これらの機能を使用することで、スヌープバス103は、キャッシュコヒーレンシ機構として要求される機能を満たす。   Further, the snoop bus 103 has, for example, three functions of broadcast, block, and invalidate. Broadcasting is a function for sending a request for a combination of command information and data information from the master I / F to all slave I / Fs set in advance as broadcast destinations. The block is a function for forcibly releasing the current bus connection. Invalidation is a function for invalidating a cache line corresponding to a target physical address for each distributed cache memory. By using these functions, the snoop bus 103 satisfies the functions required as a cache coherency mechanism.

図3に戻って、共有メモリ104は、CPU101とCPU102とに共有されるメモリである。共有メモリ104は、たとえば、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを有している。共有メモリ104は、たとえば、スレッド管理テーブル800と、OS191およびOS192のブートプログラムや後述する制御プログラムやアプリケーションプログラムと、依存関係に関するリスト群700と、を記憶している。   Returning to FIG. 3, the shared memory 104 is a memory shared by the CPU 101 and the CPU 102. The shared memory 104 includes, for example, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash ROM, and the like. The shared memory 104 stores, for example, a thread management table 800, a boot program of the OS 191 and OS 192, a control program and application program described later, and a list group 700 related to dependencies.

たとえば、ROMまたはフラッシュROMは該プログラムなどを記憶し、RAMはCPU101とCPU102とのワークエリアとして使用される。共有メモリ104に記憶されているOS191とOS192は、それぞれCPU101とCPU102とにロードされることで、コーディングされている処理を各CPUに実行させることとなる。   For example, the ROM or flash ROM stores the program and the like, and the RAM is used as a work area for the CPU 101 and the CPU 102. The OS 191 and the OS 192 stored in the shared memory 104 are loaded on the CPU 101 and the CPU 102, respectively, thereby causing each CPU to execute a coded process.

(依存関係に関するリスト群700の一例)
図7は、依存関係に関するリスト群700の一例を示す説明図である。依存関係に関するリスト群700では、スレッドごとに該スレッド内の出力データと該出力データの入力先スレッドに関する情報と、スレッドごとに該スレッド内の入力データと該入力データの出力元スレッドに関する情報とを有している。
(An example of the list group 700 regarding the dependency)
FIG. 7 is an explanatory diagram showing an example of a list group 700 regarding the dependency relationship. In the list group 700 relating to the dependency relationship, output data in the thread and information regarding an input destination thread of the output data for each thread, input data in the thread and information regarding an output source thread of the input data for each thread are displayed. Have.

スレッド1に関するリスト701は出力テーブル711と入力テーブル721とを有し、スレッド2に関するリスト702は出力テーブル712と入力テーブル722とを有している。出力テーブル711は、出力データの項目と入力先スレッドの項目とを有している。出力テーブル711では、出力データの項目に保持されているデータごとに該データの入力先スレッドが入力先スレッドの項目に保持されている。入力テーブル721では、入力データの項目と出力元スレッドの項目とを有している。入力テーブル721では、入力データの項目に保持されているデータごとに該データの出力元スレッドが出力元スレッドの項目に保持されている。   The list 701 related to the thread 1 includes an output table 711 and an input table 721, and the list 702 related to the thread 2 includes an output table 712 and an input table 722. The output table 711 includes an output data item and an input destination thread item. In the output table 711, for each piece of data held in the output data item, the input destination thread of the data is held in the input destination thread item. The input table 721 has an input data item and an output source thread item. In the input table 721, for each piece of data held in the input data item, an output source thread of the data is held in the output source thread item.

出力テーブル712は、出力データの項目と入力先スレッドの項目とを有している。出力テーブル712では、出力データの項目に保持されているデータごとに該データの入力先スレッドが入力先スレッドの項目に保持されている。入力テーブル722では、入力データの項目と出力元スレッドの項目とを有している。入力テーブル722では、入力データの項目に保持されているデータごとに該データの出力元スレッドが出力元スレッドの項目に保持されている。   The output table 712 includes an output data item and an input destination thread item. In the output table 712, for each piece of data held in the output data item, the input destination thread of the data is held in the input destination thread item. The input table 722 has input data items and output source thread items. In the input table 722, for each data held in the input data item, the output source thread of the data is held in the output source thread item.

各スレッドの依存関係に関するリストについては、たとえば、プログラムの設計者がコンパイラを用いて該プログラム内の各データを解析することにより作成することができる。   The list relating to the dependency of each thread can be created by, for example, a program designer analyzing each data in the program using a compiler.

(スレッド管理テーブル800の一例)
図8は、スレッド管理テーブル800の一例を示す説明図である。スレッド管理テーブル800はスレッドごとに該スレッドの割当状態と該スレッドの実行状態とが記述されている。スレッド管理テーブル800はスレッドの識別情報の項目801と割当先CPUの識別情報の項目802と実行状態の項目803とを有している。
(Example of thread management table 800)
FIG. 8 is an explanatory diagram showing an example of the thread management table 800. The thread management table 800 describes the allocation state of the thread and the execution state of the thread for each thread. The thread management table 800 includes a thread identification information item 801, an assignment destination CPU identification information item 802, and an execution state item 803.

たとえば、OS191が、プログラムの起動指示を受け付けると、該プログラム内のすべてのスレッドの識別情報をスレッド管理テーブル800内のスレッドの識別情報の項目801に登録する。そして、たとえば、OS191がスレッドごとに該スレッドの割当先CPUを決定すると、OS191が該割当先CPUの識別情報をスレッド管理テーブル800内の割当先CPUの識別情報の項目802に登録する。割当先CPUの識別情報が「−」のスレッドは割当先CPUが決定していない状態を示す。   For example, when the OS 191 receives a program start instruction, the OS 191 registers the identification information of all threads in the program in the thread identification information item 801 in the thread management table 800. For example, when the OS 191 determines the assignment destination CPU of each thread for each thread, the OS 191 registers the identification information of the assignment destination CPU in the identification information item 802 of the assignment destination CPU in the thread management table 800. A thread whose identification information of the assignment destination CPU is “−” indicates a state in which the assignment destination CPU is not determined.

実行状態については、たとえば、実行中であるか、未割当(図中「−」で示す。)であるか、レディーキューに登録されている実行待機であるかを示す。たとえば、OS191やOS192はタスクスイッチを行うと、該タスクスイッチによって切り替えられたスレッドに関する実行状態の項目803の実行状態を書き換える。図8では、スレッド1およびスレッド2に関する割当先CPUの識別情報の項目802に保持されている割当先CPUの識別情報は「−」であり、実行状態の項目803に保持されている実行状態は「−」となっている。   The execution state indicates, for example, whether it is being executed, unallocated (indicated by “−” in the figure), or waiting for execution registered in the ready queue. For example, when the OS 191 or OS 192 performs a task switch, it rewrites the execution state of the execution state item 803 relating to the thread switched by the task switch. In FIG. 8, the identification information of the assignment destination CPU held in the identification information item 802 of the assignment destination CPU regarding the thread 1 and the thread 2 is “−”, and the execution state held in the execution state item 803 is It is “−”.

また、スレッド管理テーブル800は共有メモリ104の他に各分散キャッシュメモリに記憶させ、いずれかの分散キャッシュメモリ内のスレッド管理テーブル800に変化があれば、スヌープバス103を介してスヌープ処理をさせてもよい。   Further, the thread management table 800 is stored in each distributed cache memory in addition to the shared memory 104. If there is a change in the thread management table 800 in any of the distributed cache memories, a snoop process is performed via the snoop bus 103. Also good.

図3に戻って、上述したディスプレイとネットワークなどに接続するI/Fとキーボードとについて説明する。ディスプレイは、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。該ディスプレイは、たとえば、TFT液晶ディスプレイなどを採用することができる。   Returning to FIG. 3, the I / F and keyboard connected to the above-described display and network will be described. The display 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, for example, a TFT liquid crystal display can be adopted.

該I/Fは、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。該I/Fには、たとえばモデムやLANアダプタなどを採用することができる。キーボードは、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボードは、タッチパネル式の入力パッドやテンキーなどであってもよい。   The I / F is connected to a network such as a LAN (Local Area Network), a WAN (Wide Area Network), and the Internet through a communication line, and is connected to another device via the network. For example, a modem or a LAN adapter may be employed as the I / F. The keyboard has keys for inputting numbers, various instructions, etc., and inputs data. The keyboard may be a touch panel type input pad or a numeric keypad.

図9は、マルチコアプロセッサシステム100の機能ブロック図である。マルチコアプロセッサシステム100では、記憶部901と、更新部902と、検出部903と、特定部904と、格納部905と、判断部906と、消去部907と、を有している。   FIG. 9 is a functional block diagram of the multi-core processor system 100. The multi-core processor system 100 includes a storage unit 901, an update unit 902, a detection unit 903, a specification unit 904, a storage unit 905, a determination unit 906, and an erasure unit 907.

記憶部901は、たとえば、MMUが変換テーブル400を記憶し、共有メモリ104がスレッド管理テーブル800を記憶することにより実現される。更新部902は、たとえば、制御プログラム内にプログラミング言語等を用いて定義され、OS191内に該制御プログラムを組み込む。そして、CPU101が共有メモリ104内に記憶されているOS191をロードし、CPU101が該OS191内の制御プログラムにコーディングされている処理を実行することにより更新部902が実現される。   The storage unit 901 is realized by the MMU storing the conversion table 400 and the shared memory 104 storing the thread management table 800, for example. The update unit 902 is defined using, for example, a programming language in the control program, and incorporates the control program in the OS 191. Then, the CPU 101 loads the OS 191 stored in the shared memory 104, and the CPU 101 executes the process coded in the control program in the OS 191 to implement the update unit 902.

また、たとえば、検出部903と特定部904とをHDL記述によって機能定義し、該HDL記述を論理合成して論理回路等の素子を組み合わせることで、各MMU内に検出部903と特定部904とを実現することができる。また、たとえば、検出部903と特定部904とは共有メモリ104内に制御プログラムとして記憶される。そして、たとえば、CPU101やCPU102のようにプログラムを実行可能な機能を有するMMUが該制御プログラムをロードして該制御プログラムにコーディングされている処理を実行してもよい。格納部905と判断部906と消去部907とは、分散キャッシュ111や分散キャッシュ112により実現される。   Further, for example, the detection unit 903 and the identification unit 904 are functionally defined by the HDL description, and the HDL description is logically synthesized and combined with elements such as a logic circuit, so that the detection unit 903 and the identification unit 904 Can be realized. For example, the detection unit 903 and the specifying unit 904 are stored in the shared memory 104 as control programs. Then, for example, an MMU having a function capable of executing a program such as the CPU 101 or the CPU 102 may load the control program and execute the process coded in the control program. The storage unit 905, the determination unit 906, and the deletion unit 907 are realized by the distributed cache 111 and the distributed cache 112.

記憶部901は、対象データの入力先として定義されている入力先スレッドごとに該入力先スレッドの割当先CPUの識別情報を記憶する。   The storage unit 901 stores the identification information of the assignment destination CPU of the input destination thread for each input destination thread defined as the input destination of the target data.

更新部902は、入力先スレッドのマルチコアプロセッサへの割当が検出されると、記憶部901により記憶されたスレッドの割当先CPUの識別情報を更新する。   When the assignment of the input destination thread to the multi-core processor is detected, the update unit 902 updates the identification information of the assignment destination CPU of the thread stored in the storage unit 901.

検出部903は、対象データの書き込み要求を検出する。   The detection unit 903 detects a write request for target data.

特定部904は、検出部903により書き込み要求が検出された対象データに基づいて記憶部901から、更新部902による更新後の識別情報を特定する。   The identifying unit 904 identifies identification information updated by the updating unit 902 from the storage unit 901 based on the target data for which the writing request is detected by the detecting unit 903.

格納部905は、マルチコアプロセッサのうち、特定部904により更新後の識別情報が特定された入力先スレッドの割当先CPUの分散キャッシュメモリへ対象データを格納する。   The storage unit 905 stores the target data in the distributed cache memory of the assignment destination CPU of the input destination thread for which the identification information after update is specified by the specification unit 904 among the multi-core processors.

判断部906は、書き込み要求の要求元CPUが入力先スレッドの割当先CPUに含まれていない場合、要求元CPUの分散キャッシュメモリ内に対象データが格納されているか否かを対象データに含まれるアドレス情報に基づいて判断する。本実施の形態では、具体的には、たとえば、書き込み要求に物理アドレスが付随され、かつ分散キャッシュメモリ内の各キャッシュラインに物理アドレスが格納されている。たとえば、書き込み要求の物理アドレスとキャッシュラインの物理アドレスとの一致により対象データが格納されているか否かが判断される。   When the request source CPU of the write request is not included in the assignment destination CPU of the input destination thread, the determination unit 906 includes whether the target data is stored in the distributed cache memory of the request source CPU. Judgment based on address information. In the present embodiment, specifically, for example, a physical address is attached to a write request, and a physical address is stored in each cache line in the distributed cache memory. For example, it is determined whether or not the target data is stored based on a match between the physical address of the write request and the physical address of the cache line.

消去部907は、判断部906により要求元CPUの分散キャッシュメモリ内に対象データが格納されていると判断した場合、要求元CPUの分散キャッシュメモリ内の対象データを消去する。分散キャッシュメモリ内の対象データを消去するとは、具体的には、たとえば、対象データを無効化することである。   When the determining unit 906 determines that the target data is stored in the distributed cache memory of the requesting CPU, the deleting unit 907 deletes the target data in the distributed cache memory of the requesting CPU. Specifically, erasing the target data in the distributed cache memory is, for example, invalidating the target data.

また、格納部905は、特定部904により更新後の識別情報が特定されなかった場合、書き込み要求の要求元CPUの分散キャッシュメモリへ対象データを格納する。特定部904により更新後の識別情報が特定されなかった場合とは、具体的には、たとえば、入力先スレッドが未割当の場合である。   The storage unit 905 stores the target data in the distributed cache memory of the CPU that requested the write request when the identification information after the update is not specified by the specifying unit 904. The case where the identification information after the update is not specified by the specifying unit 904 is specifically, for example, a case where the input destination thread is not assigned.

以上を踏まえて、実施例を用いて詳細に説明する。   Based on the above, a detailed description will be given using examples.

図10は、スレッド1の割当例を示す説明図である。まず、OS191が、スレッド1の割当指示を受け付けると、スレッド管理テーブル800を参照することにより各CPUの割当状態を確認し、CPU101とCPU102のいずれかのCPUにスレッド1を割り当てる。OS191は(1)スレッド1をCPU101に割り当てることにより、スレッド1のマルチコアプロセッサへの割当を検出する。   FIG. 10 is an explanatory diagram illustrating an example of assignment of the thread 1. First, when the OS 191 receives a thread 1 assignment instruction, the OS 191 checks the assignment state of each CPU by referring to the thread management table 800 and assigns the thread 1 to any one of the CPU 101 and the CPU 102. The OS 191 detects (1) the allocation of the thread 1 to the multi-core processor by allocating the thread 1 to the CPU 101.

つぎに、OS191は、スレッド管理テーブル800内のスレッドの識別情報の項目801からスレッド1に一致する識別情報を検索する。OS191は、更新部902により、(2)割当先CPUの識別情報の項目802に保持されている割当先CPUの識別情報をCPU101に更新する。さらに、OS191は、実行状態の項目803に保持されている実行状態を実行中に更新する。   Next, the OS 191 searches for the identification information matching the thread 1 from the thread identification information item 801 in the thread management table 800. The OS 191 uses the update unit 902 to update the CPU 101 with the identification information of the assignment destination CPU held in the item 802 of (2) identification information of the assignment destination CPU. Furthermore, the OS 191 updates the execution state held in the execution state item 803 during execution.

さらに、OS191が、出力テーブル711から出力データの項目に保持されているデータ順に入力先スレッドの項目に保持されている情報を検索する。変数xの場合、入力先スレッドの項目に保持されている情報はスレッド2である。OS191は、スレッド管理テーブル800内のスレッドの識別情報の項目801からスレッド2と一致する識別情報を検索し、該スレッド2に関する割当先CPUの識別情報の項目802に保持されている割当先CPUの識別情報を検索する。ここでは、スレッドの割当先CPUの識別情報は「−」が検索される。   Furthermore, the OS 191 searches the output table 711 for information held in the input destination thread item in the order of the data held in the output data item. In the case of the variable x, the information held in the input destination thread item is the thread 2. The OS 191 searches for the identification information matching the thread 2 from the thread identification information item 801 in the thread management table 800, and assigns the assignment destination CPU stored in the assignment destination CPU identification information item 802 related to the thread 2. Search for identification information. Here, “-” is searched for the identification information of the CPU to which the thread is assigned.

変数xの入力先スレッドであるスレッド2が未割当であるため、OS191は、(3)変換テーブル400内のCPU101フラグを1に更新する。すなわち、対象データの入力先スレッドが未割当の場合、書き込み要求の要求元CPUのメモリに対象データを格納する。これにより、対象データを少なくとも一つのCPUの分散キャッシュに格納でき、かつ他のCPUの分散キャッシュの領域を有効的に活用することができる。   Since the thread 2 that is the input destination thread of the variable x is unallocated, the OS 191 updates (3) the CPU 101 flag in the conversion table 400 to 1. That is, when the target data input destination thread is unallocated, the target data is stored in the memory of the requesting CPU of the write request. Thereby, the target data can be stored in the distributed cache of at least one CPU, and the area of the distributed cache of another CPU can be effectively used.

また、本実施の形態では、入力先スレッドの割当先CPUが不明な場合(入力先スレッドが未割当の場合)、変数xの出力元スレッドのCPU101フラグを立てるが、これに限らず、たとえば、すべてのCPUフラグを立ててもよい。または、たとえば、いずれのCPUフラグも立てずに変数xを共有メモリ104へ直接書き込むように設定してもよい。OS191が上述した変数xに関する処理と同様に変数zに関しても変換テーブル400内の変数zに関するレコードのCPU101フラグを1に更新する。   Further, in this embodiment, when the assignment destination CPU of the input destination thread is unknown (when the input destination thread is not assigned), the CPU 101 flag of the output source thread of the variable x is set. All CPU flags may be set. Alternatively, for example, the variable x may be set to be written directly to the shared memory 104 without setting any CPU flag. The OS 191 updates the CPU 101 flag of the record related to the variable z in the conversion table 400 to 1 for the variable z as well as the process related to the variable x described above.

また、図10の例では、OS191はスレッドの割当が発生する都度、変換テーブル400内のCPUフラグを更新しているが、これに限らず、たとえば、OS191は書き込み要求が発生したときに変換テーブル400内のCPUフラグを更新してもよい。   In the example of FIG. 10, the OS 191 updates the CPU flag in the conversion table 400 every time a thread allocation occurs. However, the present invention is not limited to this. For example, the OS 191 converts the conversion table when a write request occurs. The CPU flag in 400 may be updated.

図11は、スレッド2の割当例を示す説明図である。まず、OS191が、スレッド2の割当指示を受け付けると、スレッド管理テーブル800を参照することにより各スレッドの割当状態を確認し、CPU101とCPU102のいずれかのCPUにスレッド2を割り当てる。OS191は(1)スレッド2をCPUに割り当てることにより、スレッド2の割当を検出する。   FIG. 11 is an explanatory diagram illustrating an example of assignment of the thread 2. First, when the OS 191 receives a thread 2 allocation instruction, the OS 191 checks the allocation state of each thread by referring to the thread management table 800 and allocates the thread 2 to one of the CPU 101 and the CPU 102. The OS 191 detects (1) the allocation of the thread 2 by allocating the thread 2 to the CPU.

つぎに、OS191は、スレッド管理テーブル800内のスレッドの識別情報の項目801からスレッド2と一致する識別情報を検索する。OS191が、(2)スレッドの識別情報の項目801の識別情報がスレッド2である割当先CPUの識別情報の項目802に保持されている割当先CPUの識別情報をCPU102に更新する。さらに、OS191が、(2)スレッドの識別情報の項目801の識別情報がスレッド2である実行状態の項目803に保持されている実行状態を実行中に更新する。   Next, the OS 191 searches for the identification information matching the thread 2 from the thread identification information item 801 in the thread management table 800. The OS 191 updates the identification information of the assignment destination CPU held in the identification information item 802 of the assignment destination CPU whose identification information in the item 801 of the thread identification information is the thread 2 to the CPU 102. Furthermore, the OS 191 updates the execution state held in the execution state item 803 in which the identification information of the item 801 of the thread identification information 801 is the thread 2 during execution.

つづいて、OS191がスレッド2に関するリスト702から出力テーブル712を取得する。そして、OS191が、出力テーブル712から出力データの項目に保持されている出力データ順に入力先スレッドの項目に保持されている入力先スレッドの識別情報を検索する。ここで、スレッド2内の出力データである変数yと変数aとに関する変換テーブル400の更新処理は、図10で説明した変数xの更新処理と同一であるため、詳細な説明を省略する。   Subsequently, the OS 191 acquires the output table 712 from the list 702 related to the thread 2. Then, the OS 191 searches the output table 712 for the input destination thread identification information held in the input destination thread item in the order of the output data held in the output data item. Here, the update process of the conversion table 400 related to the variable y and the variable a that are output data in the thread 2 is the same as the update process of the variable x described in FIG.

つぎに、OS191が、スレッド2に関するリスト702から入力テーブル722を取得する。そして、OS191が、入力テーブル722から入力データの項目に保持されている入力データ順に出力元スレッドの項目に保持されている出力元スレッドの識別情報を検索する。ここでは、スレッド2の入力データである変数xと変数zの出力元スレッドはスレッド1であるため、検索結果はスレッド1である。そして、OS191が、検索した出力元スレッドの出力テーブルを取得する。すなわち、スレッド1に関するリスト701から出力テーブル711が取得される。   Next, the OS 191 acquires the input table 722 from the list 702 related to the thread 2. Then, the OS 191 searches the input table 722 for the output source thread identification information held in the output source thread item in the order of the input data held in the input data item. Here, since the output source thread of the variable x and the variable z that are input data of the thread 2 is the thread 1, the search result is the thread 1. Then, the OS 191 acquires the output table of the searched output source thread. That is, the output table 711 is acquired from the list 701 related to the thread 1.

OS191が、出力テーブル711から出力データの項目に保持されている出力データ順に入力先スレッドの項目に保持されている入力先スレッドの識別情報を検索する。ここで、スレッド1内の出力データである変数xと変数zとに関する変換テーブル400の更新処理は、図10で説明した変数xの更新処理と同一であるため、詳細な説明を省略する。これにより、(3)変換テーブル400内の変数xに関するレコードのCPUフラグが更新される。   The OS 191 searches the input destination thread identification information held in the input destination thread item in the order of the output data held in the output data item from the output table 711. Here, the update process of the conversion table 400 related to the variable x and the variable z that are output data in the thread 1 is the same as the update process of the variable x described in FIG. As a result, (3) the CPU flag of the record relating to the variable x in the conversion table 400 is updated.

図12は、変数xが格納される例を示す説明図である。つぎに、スレッド1内で変数xの書き込み要求が発生すると、OS191が、該書き込み要求を検出し、(1)論理アドレスと書き込みデータとが付随されている書き込み要求をMMU141へ通知する。MMU141は、検出部903により、受け付けた書き込み要求に付随されている論理アドレスと同一の変換テーブル400内の論理アドレスの項目401に保持されている論理アドレスを検索する。そして、MMU141は、該検索した論理アドレスに対応する物理アドレスの項目402に保持されている物理アドレスを検索することにより、(2)論理アドレスから物理アドレスに変換する。   FIG. 12 is an explanatory diagram illustrating an example in which the variable x is stored. Next, when a write request for the variable x occurs in the thread 1, the OS 191 detects the write request, and (1) notifies the MMU 141 of the write request accompanied by the logical address and the write data. The MMU 141 uses the detection unit 903 to search for a logical address held in the logical address item 401 in the same translation table 400 as the logical address associated with the received write request. Then, the MMU 141 converts the logical address to the physical address by searching for the physical address held in the physical address item 402 corresponding to the searched logical address.

そして、MMU141が、特定部904により、変換テーブル400内の検索した論理アドレスに対応するCPUフラグを読み出すことにより、(3)変数xの入力先スレッドの割当先CPUを特定する。検索した論理アドレスに対応するCPUフラグとは、検索した論理アドレスを含むレコード上にあるCPUフラグである。MMU141が、物理アドレスと書き込みデータと各CPUフラグを書き込み要求に付随させ、分散キャッシュコントローラ121へ該書き込み要求を通知する。   Then, the MMU 141 reads the CPU flag corresponding to the searched logical address in the conversion table 400 by the specifying unit 904, and (3) specifies the assignment destination CPU of the input destination thread of the variable x. The CPU flag corresponding to the searched logical address is a CPU flag on a record including the searched logical address. The MMU 141 associates the physical address, write data, and each CPU flag with the write request, and notifies the distributed cache controller 121 of the write request.

分散キャッシュコントローラ121は、該書き込み要求を受け付けると、各CPUフラグを参照し、1であるCPUフラグが示すCPUに対して書き込みデータを格納する。ここでは、CPUフラグが0であり、CPUフラグが1であるため、分散キャッシュコントローラ121は、格納部905により、(5)CPU101の分散キャッシュメモリ131へ書き込みデータを格納せず、(6)CPU102の分散キャッシュメモリ132へ書き込みデータを格納する。   When the distributed cache controller 121 receives the write request, the distributed cache controller 121 refers to each CPU flag and stores the write data in the CPU indicated by the CPU flag being 1. Here, since the CPU flag is 0 and the CPU flag is 1, the distributed cache controller 121 does not store the write data in the distributed cache memory 131 of the CPU 101 (5) the CPU 102 by the storage unit 905. Write data is stored in the distributed cache memory 132.

(OS191による更新処理手順)
図13および図14は、OS191による更新処理手順を示すフローチャートである。まず、OS191が、スレッドの起動指示を受け付けたか否かを判断する(ステップS1301)。OS191が、スレッドの起動指示を受け付けていないと判断した場合(ステップS1301:No)、ステップS1301へ戻る。OS191が、スレッドの起動指示を受け付けたと判断した場合(ステップS1301:Yes)、起動指示を受け付けたスレッド(対象スレッド)の割当先CPUを決定する(ステップS1302)。
(Update processing procedure by OS 191)
13 and 14 are flowcharts showing the update processing procedure by the OS 191. FIG. First, the OS 191 determines whether a thread activation instruction has been received (step S1301). When the OS 191 determines that a thread activation instruction has not been received (step S1301: No), the process returns to step S1301. When the OS 191 determines that a thread activation instruction has been received (step S1301: Yes), it determines an assignment destination CPU of the thread (target thread) that has received the activation instruction (step S1302).

つぎに、OS191が、更新部902により、決定結果に基づきスレッド管理テーブル800を更新する(ステップS1303)。そして、OS191が、対象スレッドの出力データごとに該出力データの入力先スレッドが記述された出力テーブルを取得し(ステップS1304)、更新部902により、変換テーブル400の更新処理を実行する(ステップS1305)。   Next, the OS 191 causes the update unit 902 to update the thread management table 800 based on the determination result (step S1303). Then, the OS 191 acquires an output table in which the output destination thread of the output data is described for each output data of the target thread (step S1304), and the update unit 902 executes update processing of the conversion table 400 (step S1305). ).

そして、OS191が、対象スレッドの入力データごとに該入力データの出力元スレッドが記述された入力テーブルを取得し(ステップS1306)、対象スレッド内の入力データのうち、未選択な入力データがあるか否かを判断する(ステップS1307)。OS191が、未選択な入力データがあると判断した場合(ステップS1307:Yes)、未選択な入力データから1つの入力データ(選択入力データ)を選択する(ステップS1308)。   Then, the OS 191 acquires an input table describing the output source thread of the input data for each input data of the target thread (step S1306), and whether there is unselected input data among the input data in the target thread. It is determined whether or not (step S1307). When the OS 191 determines that there is unselected input data (step S1307: Yes), one input data (selected input data) is selected from the unselected input data (step S1308).

そして、OS191が、選択入力データに関する領域情報内の対象スレッドの割当先CPUに対応するフラグを1に設定する(ステップS1309)。OS191が、選択入力データの出力元スレッドを入力テーブルに基づいて検索し(ステップS1310)、検索した出力元スレッド内の出力データごとに該出力データの入力先スレッドが記述された出力テーブルを取得する(ステップS1311)。そして、OS191が、更新部902により、変換テーブル400の更新処理を実行し(ステップS1312)、ステップS1307へ戻る。   Then, the OS 191 sets a flag corresponding to the assignment destination CPU of the target thread in the area information regarding the selected input data to 1 (step S1309). The OS 191 searches for the output source thread of the selected input data based on the input table (step S1310), and acquires an output table in which the output destination thread of the output data is described for each output data in the searched output source thread. (Step S1311). Then, the OS 191 executes the update process of the conversion table 400 by the update unit 902 (step S1312), and returns to step S1307.

また、ステップS1307において、OS191が、対象スレッド内の入力データのうち、未選択な入力データがないと判断した場合(ステップS1307:No)、ステップS1301へ戻る。   In step S1307, when the OS 191 determines that there is no unselected input data among the input data in the target thread (step S1307: No), the process returns to step S1301.

図15は、図13および図14で示した変換テーブルの更新処理(ステップS1305またはステップS1312)の詳細な説明を示すフローチャートである。まず、OS191が、取得した出力テーブル内の出力データのうち、未選択の出力データがあるか否かを判断する(ステップS1501)。そして、OS191が、取得した出力テーブル内の出力データのうち、未選択の出力データがあると判断した場合(ステップS1501:Yes)、未選択の出力データから1つの出力データ(選択出力データ)を選択する(ステップS1502)。   FIG. 15 is a flowchart showing a detailed description of the conversion table update processing (step S1305 or step S1312) shown in FIGS. First, the OS 191 determines whether there is unselected output data among the output data in the acquired output table (step S1501). When the OS 191 determines that there is unselected output data among the output data in the acquired output table (step S1501: Yes), one output data (selected output data) is selected from the unselected output data. Select (step S1502).

そして、OS191が、出力テーブルに基づき選択出力データの入力先スレッドを検索し(ステップS1503)、検索した入力先スレッドの割当先CPUをスレッド管理テーブル800に基づき特定する(ステップS1504)。つぎに、OS191が、選択出力データに関するCPUフラグのうち、特定した割当先CPUに対応するCPUフラグを1に設定する(ステップS1505)。   The OS 191 searches for the input destination thread of the selected output data based on the output table (step S1503), and specifies the allocation destination CPU of the searched input destination thread based on the thread management table 800 (step S1504). Next, the OS 191 sets the CPU flag corresponding to the specified assignment destination CPU among the CPU flags related to the selected output data to 1 (step S1505).

そして、OS191が、選択出力データに関するCPUフラグのうち、特定した割当先CPUを除くCPUに対応するCPUフラグを0に設定し(ステップS1506)、全入力先スレッドの割当先CPUを特定したか否かを判断する(ステップS1507)。OS191が、全入力先スレッドの割当先CPUを特定したと判断した場合(ステップS1507:Yes)、ステップS1501へ戻る。   Then, the OS 191 sets the CPU flags corresponding to the CPUs excluding the specified allocation destination CPU among the CPU flags related to the selected output data to 0 (step S1506), and determines whether the allocation destination CPUs of all the input destination threads have been specified. Is determined (step S1507). When the OS 191 determines that the assignment destination CPUs of all input destination threads have been specified (step S1507: Yes), the process returns to step S1501.

OS191が、全入力先スレッドの割当先CPUを特定していないと判断した場合(ステップS1507:No)、選択出力データに関するCPUフラグのうち、対象スレッドの割当先CPUに対応するフラグを1に設定する(ステップS1508)。これにより、対象データを少なくとも一つのCPUの分散キャッシュに格納でき、かつ他のCPUの分散キャッシュの領域を有効的に活用することができる。そして、OS191が、ステップS1508のつぎにステップS1501へ戻る。   When the OS 191 determines that the assignment destination CPUs of all input destination threads have not been specified (step S1507: No), the flag corresponding to the assignment destination CPU of the target thread is set to 1 among the CPU flags related to the selected output data. (Step S1508). Thereby, the target data can be stored in the distributed cache of at least one CPU, and the area of the distributed cache of another CPU can be effectively used. Then, the OS 191 returns to step S1501 after step S1508.

また、OS191が、取得した出力テーブル内の出力データのうち、未選択の出力データがないと判断した場合(ステップS1501:No)、ステップS1306(ステップS1307)へ移行する。   If the OS 191 determines that there is no unselected output data among the output data in the acquired output table (step S1501: No), the process proceeds to step S1306 (step S1307).

(各MMUによる特定処理手順)
図16は、各MMUによる特定処理手順を示すフローチャートである。まず、MMUが、検出部903により、対象データの書き込み要求を検出したか否かを判断する(ステップS1601)。MMUが、対象データの書き込み要求を検出していないと判断した場合(ステップS1601:No)、ステップS1601へ戻る。
(Specific processing procedure by each MMU)
FIG. 16 is a flowchart showing a specific processing procedure by each MMU. First, the MMU determines whether or not the detection unit 903 has detected a write request for target data (step S1601). When the MMU determines that the write request for the target data has not been detected (step S1601: No), the process returns to step S1601.

MMUが、対象データの書き込み要求を検出したと判断した場合(ステップS1601:Yes)、特定部904により、検出した書き込み要求に付随する論理アドレスに基づいて変換テーブル400から対象データに関するレコードを検索する(ステップS1602)。そして、MMUが、論理アドレスに変わって検索したレコード内の物理アドレスを書き込み要求に関連付ける(ステップS1603)。   When the MMU determines that the write request for the target data has been detected (step S1601: Yes), the identifying unit 904 searches the conversion table 400 for a record related to the target data based on the logical address associated with the detected write request. (Step S1602). Then, the MMU associates the physical address in the retrieved record instead of the logical address with the write request (step S1603).

つぎに、MMUが、特定部904により、検索したレコードからCPUフラグを書き込み要求に関連付けて(ステップS1604)、分散キャッシュコントローラへ書き込み要求を通知し(ステップS1605)、ステップS1601へ戻る。   Next, the MMU causes the identification unit 904 to associate the CPU flag from the retrieved record with the write request (step S1604), notifies the distributed cache controller of the write request (step S1605), and returns to step S1601.

(各分散キャッシュコントローラによる格納処理手順)
図17は、分散キャッシュコントローラによる格納処理手順(スヌープバス103からの書き込み要求)を示すフローチャートである。まず、分散キャッシュコントローラが、スヌープバス103からの書き込み要求を受け付けたか否かを判断する(ステップS1701)。分散キャッシュコントローラが、スヌープバス103からの書き込み要求を受け付けていないと判断した場合(ステップS1701:No)、ステップS1701へ戻る。
(Storage processing procedure by each distributed cache controller)
FIG. 17 is a flowchart showing a storage processing procedure (write request from the snoop bus 103) by the distributed cache controller. First, the distributed cache controller determines whether a write request from the snoop bus 103 has been received (step S1701). If the distributed cache controller determines that it has not accepted a write request from the snoop bus 103 (step S1701: No), the process returns to step S1701.

一方、分散キャッシュコントローラが、スヌープバス103からの書き込み要求を受け付けたと判断した場合(ステップS1701:Yes)、ステップS1702へ移行する。ステップS1702において、分散キャッシュコントローラが、対象キャッシュラインが該分散キャッシュコントローラに対応する分散キャッシュメモリ上にあるか否かを判断する(ステップS1702)。分散キャッシュコントローラが、対象キャッシュラインが該分散キャッシュコントローラに対応する分散キャッシュメモリ上にないと判断した場合(ステップS1702:No)、出力先CPUが1つだけか否かを判断する(ステップS1703)。   On the other hand, when the distributed cache controller determines that a write request from the snoop bus 103 has been received (step S1701: Yes), the process proceeds to step S1702. In step S1702, the distributed cache controller determines whether or not the target cache line is on the distributed cache memory corresponding to the distributed cache controller (step S1702). When the distributed cache controller determines that the target cache line is not on the distributed cache memory corresponding to the distributed cache controller (step S1702: No), it determines whether there is only one output destination CPU (step S1703). .

分散キャッシュコントローラが、出力先CPUが1つだけであると判断した場合(ステップS1703:Yes)、M状態で対象キャッシュラインをフェッチする(ステップS1704)。M状態で対象キャッシュラインをフェッチするとはタグ情報のSTATEをM状態に設定してフェッチすることを示している。そして、分散キャッシュコントローラが、出力先CPUが1つだけでないと判断した場合(ステップS1703:No)、S状態で対象キャッシュラインをフェッチする(ステップS1705)。S状態で対象キャッシュラインをフェッチするとはタグ情報のSTATEをS状態に設定してフェッチすることを示している。   When the distributed cache controller determines that there is only one output destination CPU (step S1703: Yes), the target cache line is fetched in the M state (step S1704). Fetching the target cache line in the M state indicates that the tag information STATE is set to the M state and fetched. When the distributed cache controller determines that there is not only one output destination CPU (step S1703: No), the target cache line is fetched in the S state (step S1705). Fetching the target cache line in the S state indicates that the tag information STATE is set to the S state and fetched.

ステップS1704またはステップS1705のつぎに、分散キャッシュコントローラが、該分散キャッシュコントローラに対応する分散キャッシュメモリ内の対象キャッシュライン上のデータを更新し(ステップS1706)、ステップS1701へ戻る。また、分散キャッシュコントローラが、対象キャッシュラインが該分散キャッシュコントローラに対応する分散キャッシュメモリ上にあると判断した場合(ステップS1702:Yes)、ステップS1706へ移行する。   After step S1704 or step S1705, the distributed cache controller updates data on the target cache line in the distributed cache memory corresponding to the distributed cache controller (step S1706), and the process returns to step S1701. When the distributed cache controller determines that the target cache line is on the distributed cache memory corresponding to the distributed cache controller (step S1702: Yes), the process proceeds to step S1706.

図18は、分散キャッシュコントローラによる格納処理手順(MMUからの書き込み要求)を示すフローチャートである。まず、分散キャッシュコントローラが、MMUからの書き込み要求を受け付けたか否かを判断する(ステップS1801)。分散キャッシュコントローラが、MMUからの書き込み要求を受け付けていないと判断した場合(ステップS1801:No)、ステップS1801へ戻る。   FIG. 18 is a flowchart showing a storage processing procedure (write request from the MMU) by the distributed cache controller. First, the distributed cache controller determines whether a write request from the MMU has been received (step S1801). If the distributed cache controller determines that it has not accepted a write request from the MMU (step S1801: No), the process returns to step S1801.

一方、分散キャッシュコントローラが、MMUからの書き込み要求を受け付けたと判断した場合(ステップS1801:Yes)、書き込み要求にCPUフラグが付随されているか否かを判断する(ステップS1802)。分散キャッシュコントローラが、書き込み要求にCPUフラグが付随されていないと判断した場合(ステップS1802:No)、通常のスヌープ対応キャッシュコントローラとして動作し(ステップS1803)、ステップS1801へ戻る。   On the other hand, if the distributed cache controller determines that a write request from the MMU has been received (step S1801: Yes), it determines whether a CPU flag is attached to the write request (step S1802). When the distributed cache controller determines that the CPU flag is not attached to the write request (step S1802: No), it operates as a normal snoop-compatible cache controller (step S1803) and returns to step S1801.

通常のスヌープ対応キャッシュコントローラとしての動作とは、対象キャッシュラインが分散キャッシュメモリ上に格納されているか否かをタグ情報に基づいて判断し、格納されていれば、対象キャッシュラインを更新する。一方、対象キャッシュラインが分散キャッシュメモリ上に格納されていない場合、分散キャッシュメモリ上に対象キャッシュラインをフェッチする。そして、すべてのCPUの分散キャッシュコントローラへ対象キャッシュラインの格納を通知する。   In the normal operation as a snoop-compatible cache controller, whether or not the target cache line is stored in the distributed cache memory is determined based on the tag information, and if it is stored, the target cache line is updated. On the other hand, when the target cache line is not stored in the distributed cache memory, the target cache line is fetched onto the distributed cache memory. Then, storage of the target cache line is notified to the distributed cache controllers of all CPUs.

ステップS1802において、分散キャッシュコントローラが、書き込み要求にCPUフラグが付随されていると判断した場合(ステップS1802:Yes)、判断部906により、書き込み要求の要求元CPUに対応するCPUフラグが1か否かを判断する(ステップS1804)。分散キャッシュコントローラが、書き込み要求の要求元CPUに対応するCPUフラグが1であると判断した場合(ステップS1804:Yes)、対象キャッシュラインが分散キャッシュメモリ上にあるか否かを判断する(ステップS1805)。   When the distributed cache controller determines in step S1802 that the CPU flag is attached to the write request (step S1802: Yes), the determination unit 906 determines whether the CPU flag corresponding to the requesting CPU of the write request is 1 or not. Is determined (step S1804). When the distributed cache controller determines that the CPU flag corresponding to the requesting CPU of the write request is 1 (step S1804: Yes), it determines whether or not the target cache line is on the distributed cache memory (step S1805). ).

分散キャッシュコントローラが、対象キャッシュラインが分散キャッシュメモリ上にないと判断した場合(ステップS1805:No)、出力先CPUが1つであるか否かを判断する(ステップS1806)。分散キャッシュコントローラが、出力先CPUが1つであると判断した場合(ステップS1806:Yes)、M状態で対象キャッシュラインをフェッチする(ステップS1807)。   When the distributed cache controller determines that the target cache line is not on the distributed cache memory (step S1805: No), it determines whether there is one output destination CPU (step S1806). When the distributed cache controller determines that there is one output destination CPU (step S1806: Yes), the target cache line is fetched in the M state (step S1807).

分散キャッシュコントローラが、出力先CPUが1つでないと判断した場合(ステップS1806:No)、S状態で対象キャッシュラインをフェッチする(ステップS1808)。ステップS1807またはステップS1808のつぎに、分散キャッシュコントローラが、分散キャッシュメモリ内の対象キャッシュライン上のデータを更新する(ステップS1809)。   When the distributed cache controller determines that the number of output destination CPUs is not one (step S1806: No), the target cache line is fetched in the S state (step S1808). After step S1807 or step S1808, the distributed cache controller updates data on the target cache line in the distributed cache memory (step S1809).

また、ステップS1805において、分散キャッシュコントローラが、対象キャッシュラインが分散キャッシュメモリ上にあると判断した場合(ステップS1805:Yes)、ステップS1809へ移行する。   If the distributed cache controller determines in step S1805 that the target cache line is on the distributed cache memory (step S1805: YES), the process proceeds to step S1809.

ステップS1804において、分散キャッシュコントローラが、書き込み要求の要求元CPUに対応するCPUフラグが1でないと判断した場合(ステップS1804:No)、対象キャッシュラインが分散キャッシュメモリ上にあるか否かを判断する(ステップS1810)。   In step S1804, when the distributed cache controller determines that the CPU flag corresponding to the requesting CPU of the write request is not 1 (step S1804: No), it determines whether the target cache line is on the distributed cache memory. (Step S1810).

まず、分散キャッシュコントローラが、対象キャッシュラインが分散キャッシュメモリ上にあると判断した場合(ステップS1810:Yes)、対象キャッシュラインのデータを共有メモリ104に書き戻す(ステップS1811)。そして、分散キャッシュコントローラが、消去部907により、対象キャッシュラインを無効化する(ステップS1812)。対象キャッシュラインを無効化するとは、対象キャッシュラインのSTATEをI状態に設定することである。STATEをI状態に設定することは、該対象キャッシュラインを消去することを示す。   First, when the distributed cache controller determines that the target cache line is on the distributed cache memory (step S1810: Yes), the data of the target cache line is written back to the shared memory 104 (step S1811). Then, the distributed cache controller invalidates the target cache line by the erasing unit 907 (step S1812). To invalidate the target cache line is to set the STATE of the target cache line to the I state. Setting STATE to the I state indicates erasing the target cache line.

ステップS1810において、分散キャッシュコントローラが、対象キャッシュラインが分散キャッシュメモリ上にないと判断した場合(ステップS1810:No)、ステップS1813へ移行する。ステップS1809、ステップS1810:Noの場合、またはステップS1812のつぎに、CPUフラグで指定された分散キャッシュへ書き込み要求を通知し(ステップS1813)、ステップS1801へ戻る。   If the distributed cache controller determines in step S1810 that the target cache line is not on the distributed cache memory (step S1810: No), the process proceeds to step S1813. In the case of step S1809, step S1810: No, or after step S1812, a write request is notified to the distributed cache specified by the CPU flag (step S1813), and the process returns to step S1801.

(アプリケーションの一例)
ここで、具体的なアプリケーションとしてマルチチャンネルオーディオデコーダを例に挙げる。マルチチャンネルオーディオデコーダでは、音声データをデコードして出力する処理である。
(Example of application)
Here, a multi-channel audio decoder is taken as an example as a specific application. The multi-channel audio decoder is a process for decoding and outputting audio data.

まず、圧縮された音声データが1単位分デコードされる。そして、デコード結果は1から7チャンネルまではそれぞれ4KB(Byte)サイズである。デコード結果はチャンネルごとにフィルタ処理や加工・合成(PCM(Pulse Code Modulation))処理が行われる。   First, compressed audio data is decoded for one unit. The decoding result is 4 KB (Byte) size from 1 to 7 channels. The decoding result is subjected to filter processing and processing / synthesis (PCM (Pulse Code Modulation)) processing for each channel.

フィルタ処理やPCM処理が行われた音声データは全チャンネル分集約され、集約後の音声データは機器に搭載された再生装置(スピーカー)のチャンネル数に合わせてダウンミックス処理が行われる。そして、ダウンミックス処理後の音声データは該再生装置へ出力される。1単位の音声データは数十ms程度なので、マルチチャンネルオーディオデコーダでは、再生装置へ出力中に次の音声データのデコード処理やフィルタ処理、PCM処理を行うことを繰り返して長時間の音声データを再生している。   The audio data that has been subjected to the filter processing and PCM processing is aggregated for all channels, and the audio data after aggregation is subjected to downmix processing in accordance with the number of channels of a playback device (speaker) installed in the device. The audio data after the downmix process is output to the playback device. Since one unit of audio data is about several tens of ms, the multi-channel audio decoder reproduces long-time audio data by repeatedly performing decoding processing, filtering processing, and PCM processing of the next audio data while outputting to the playback device. doing.

フィルタ処理やPCM処理はチャンネルごとに実行することができるため、多チャンネルの音声データでは各チャンネルをマルチコアプロセッサで並列にフィルタ処理およびPCM処理を実行することが可能である。   Since the filtering process and the PCM process can be executed for each channel, it is possible to execute the filtering process and the PCM process for each channel in a multi-core processor in parallel with multi-channel audio data.

図19は、アプリケーションの一例を示す説明図である。ここでは、図19のようにデコード処理と、各チャンネルのフィルタ処理およびPCM処理と、ダウンミックスおよび出力の処理とのスレッドに分けて実装する例を挙げる。デコード処理を行うスレッドがスレッドDECであり、フィルタ処理およびPCM処理を行うスレッドがスレッドCH1〜スレッドCH7およびスレッドCH7.1であり、フィルタ処理およびPCM処理を行うスレッドがスレッドDMである。   FIG. 19 is an explanatory diagram illustrating an example of an application. Here, as shown in FIG. 19, an example in which the processing is divided into threads of decoding processing, filter processing and PCM processing of each channel, and downmix and output processing will be described. The thread that performs the decoding process is the thread DEC, the threads that perform the filtering process and the PCM process are the threads CH1 to CH7 and the thread CH7.1, and the thread that performs the filtering process and the PCM process is the thread DM.

まず、スレッドDECでは全チャネル分のデコードした音声データ(デコード結果)を出力する。そして、スレッドCH1〜スレッドCH7およびスレッドCH7.1はそれぞれ1チャンネル分のデコードされた音声データ(デコード結果)を入力として1チャンネル分の加工した音声データ(PCM結果)をそれぞれが出力する。そして、スレッドDMでは全チャネル分の加工された音声データを入力とする。   First, the thread DEC outputs decoded audio data (decoding result) for all channels. Each of the threads CH1 to CH7 and the thread CH7.1 inputs the decoded audio data (decode result) for one channel and outputs the processed audio data (PCM result) for one channel. In the thread DM, processed audio data for all channels is input.

図20は、デコード結果の格納例を示す説明図である。図20では、スレッドCH1とスレッドCH2とがCPU2001に割り当てられ、スレッドCH3とスレッドCH4とがCPU2002に割り当てられる。スレッドCH5とスレッドCH6とがCPU2003に割り当てられ、スレッドCH7と、スレッドCH7.1と、スレッドDECと、スレッドDMと、がCPU2004に割り当てられる。ここでは、スレッドDECのみが実行中(図中実線のスレッド)であり、他のスレッドはすべて実行待機中(図中破線のスレッド)である。   FIG. 20 is an explanatory diagram of an example of storing the decoding result. In FIG. 20, a thread CH1 and a thread CH2 are assigned to the CPU 2001, and a thread CH3 and a thread CH4 are assigned to the CPU 2002. A thread CH5 and a thread CH6 are assigned to the CPU 2003, and a thread CH7, a thread CH7.1, a thread DEC, and a thread DM are assigned to the CPU 2004. Here, only the thread DEC is being executed (solid line thread in the figure), and all other threads are waiting to be executed (threads in broken line in the figure).

図20に示すマルチコアプロセッサシステムが記憶部901〜格納部905を有していると、スレッドDECのデコード結果のうち、スレッドCH1とスレッドCH2への入力であるデコード結果はCPU2001の分散キャッシュ2011のみに出力される。そして、スレッドDECのデコード結果のうち、スレッドCH3とスレッドCH4への入力であるデコード結果はCPU2002の分散キャッシュ2012のみに出力される。   When the multi-core processor system shown in FIG. 20 includes the storage unit 901 to the storage unit 905, the decoding result that is an input to the thread CH1 and the thread CH2 among the decoding results of the thread DEC is only in the distributed cache 2011 of the CPU 2001. Is output. Of the decoding results of the thread DEC, the decoding results that are input to the threads CH3 and CH4 are output only to the distributed cache 2012 of the CPU 2002.

さらに、スレッドDECのデコード結果のうち、スレッドCH5とスレッドCH6への入力であるデコード結果はCPU2003の分散キャッシュ2013のみに出力される。スレッドDECのデコード結果のうち、スレッドCH7とスレッドCH7.1への入力であるデコード結果はCPU2004の分散キャッシュ2014のみに格納される。   Further, among the decoding results of the thread DEC, the decoding results that are input to the threads CH5 and CH6 are output only to the distributed cache 2013 of the CPU 2003. Of the decoding results of the thread DEC, the decoding results that are input to the threads CH7 and CH7.1 are stored only in the distributed cache 2014 of the CPU 2004.

図20では、スレッドDECから分散キャッシュ2013と分散キャッシュ2012と分散キャッシュ2011内のデコード結果へ矢印が出ている。実際には、CPU2004のMMUと、分散キャッシュ2014内の分散キャッシュコントローラと、スヌープバスを介して各分散キャッシュへデコード結果が格納されている。   In FIG. 20, arrows appear from the thread DEC to the decoding results in the distributed cache 2013, the distributed cache 2012, and the distributed cache 2011. Actually, the decoding result is stored in each distributed cache via the MMU of the CPU 2004, the distributed cache controller in the distributed cache 2014, and the snoop bus.

図21は、PCM結果の格納例を示す説明図である。スレッドCH1〜スレッドCH7およびスレッドCH7.1が実行中(図中実線のスレッド)であり、スレッドDECとスレッドDMとは実行待機中(図中破線のスレッド)である。図21で示すマルチコアプロセッサシステムが記憶部901〜格納部905を有していると、各PCMの結果はスレッドDMで用いられるため、各PCMの結果はスレッドDMが割り当てられているCPUの分散キャッシュにのみ格納される。   FIG. 21 is an explanatory diagram of an example of storing PCM results. The threads CH1 to CH7 and the thread CH7.1 are being executed (the solid line thread in the figure), and the thread DEC and the thread DM are waiting to be executed (the broken line thread in the figure). When the multi-core processor system shown in FIG. 21 includes the storage unit 901 to the storage unit 905, the result of each PCM is used in the thread DM. Therefore, the result of each PCM is the distributed cache of the CPU to which the thread DM is assigned. Stored only in.

図21では、各チャンネルのスレッドから分散キャッシュ2014内の各PCMの結果へ矢印が出ている。実際には、各チャンネルのスレッドが割り当てられたCPUのMMUと、該CPUの分散キャッシュ内の分散キャッシュコントローラと、スヌープバスを介して分散キャッシュ2014へ各PCMの結果が格納される。   In FIG. 21, an arrow appears from the thread of each channel to the result of each PCM in the distributed cache 2014. Actually, the result of each PCM is stored in the distributed cache 2014 via the MMU of the CPU to which the thread of each channel is allocated, the distributed cache controller in the distributed cache of the CPU, and the snoop bus.

以上説明したように、マルチプロセッサシステム、制御プログラム、および制御方法によれば、マルチコアプロセッサのうち、対象データを入力として用いる入力先スレッドの割当先CPUの分散キャッシュにのみ対象データを格納する。これにより、対象データの読み出しが不要なCPUの分散キャッシュに対象データが格納されない。したがって、入力先スレッドが対象データを読み出す読み出し速度に影響を与えることなく、各分散キャッシュの領域を有効的に活用することができる。   As described above, according to the multiprocessor system, the control program, and the control method, the target data is stored only in the distributed cache of the allocation destination CPU of the input destination thread that uses the target data as an input among the multicore processors. As a result, the target data is not stored in the distributed cache of the CPU that does not require reading of the target data. Therefore, each distributed cache area can be used effectively without affecting the read speed at which the input destination thread reads the target data.

また、対象データの書き込み要求の要求元CPUが入力先スレッドの割当先CPUに含まれていない場合、該要求元CPUの分散キャッシュにすでに対象データが格納されている場合、該要求元CPUの分散キャッシュにすでに対象データを消去する。これにより、読み出されないデータの領域を消去することができ、対象データを読み出さないCPUの分散キャッシュの領域を有効的に活用することができる。   Further, when the request source CPU of the target data write request is not included in the assignment destination CPU of the input destination thread, when the target data is already stored in the distributed cache of the request source CPU, the distribution of the request source CPU The target data is already deleted in the cache. As a result, the area of the data that is not read can be erased, and the area of the distributed cache of the CPU that does not read the target data can be used effectively.

また、対象データの入力先スレッドがマルチコアプロセッサへ未割当の場合、書き込み要求の要求元CPUのメモリに対象データを格納する。これにより、対象データを少なくとも一つのCPUの分散キャッシュに格納でき、かつ他のCPUの分散キャッシュの領域を有効的に活用することができる。   When the target data input destination thread is not assigned to the multi-core processor, the target data is stored in the memory of the requesting CPU of the write request. Thereby, the target data can be stored in the distributed cache of at least one CPU, and the area of the distributed cache of another CPU can be effectively used.

100 マルチコアプロセッサシステム
101,102,2001,2002,2003,2004 CPU
121,122 分散キャッシュコントローラ
131,132 分散キャッシュメモリ
901 記憶部
902 更新部
903 検出部
904 特定部
905 格納部
906 判断部
907 消去部
100 multi-core processor system 101, 102, 2001, 2002, 2003, 2004 CPU
121, 122 Distributed cache controller 131, 132 Distributed cache memory 901 Storage unit 902 Update unit 903 Detection unit 904 Identification unit 905 Storage unit 906 Judgment unit 907 Erasing unit

Claims (4)

複数のスレッドをそれぞれ実行する複数のコアと、
前記複数のスレッドを前記複数のコアで実行する場合に読み出すデータを前記複数のコアごとに記憶する複数のキャッシュと
を有するマルチプロセッサシステムであって、前記複数のコアのうち第1のコアは、
前記複数のスレッドのうち第1のスレッドを実行する場合に、前記第1のスレッドに対応する第1のデータの書き込み要求を検出し、前記複数のスレッドのうち、前記第1のデータを読み出す第2のスレッドの実行を前記複数のコアのうち第2のコアに割り当て、前記複数のキャッシュのうち、前記第1のコアに対応する第1のキャッシュに前記第1のデータを書き込むことなく、前記第2のコアに対応する第2のキャッシュに前記第1のデータを書き込む
マルチプロセッサシステム。
Multiple cores each running multiple threads,
And a plurality of caches that store data to be read for each of the plurality of cores when the plurality of threads are executed by the plurality of cores, wherein a first core of the plurality of cores includes:
When executing a first thread of the plurality of threads, a first data write request corresponding to the first thread is detected, and the first data is read from the plurality of threads. Assigning the execution of two threads to a second core of the plurality of cores, and writing the first data to a first cache corresponding to the first core of the plurality of caches , A multiprocessor system for writing the first data to a second cache corresponding to a second core.
前記第1のコアは、前記第1のキャッシュに前記第1のデータが含まれる場合に、前記第1のキャッシュから前記第1のデータを削除する、請求項1に記載のマルチプロセッサシステム。2. The multiprocessor system according to claim 1, wherein the first core deletes the first data from the first cache when the first data is included in the first cache. 3. 複数のスレッドをそれぞれ実行する複数のコアと、前記複数のスレッドを前記複数のコアで実行する場合に読み出すデータを前記複数のコアごとに記憶する複数のキャッシュとを有するマルチプロセッサシステムの制御方法であって、前記複数のコアのうち第1のコアが、A control method for a multiprocessor system, comprising: a plurality of cores that respectively execute a plurality of threads; and a plurality of caches that store data to be read for each of the plurality of cores when the plurality of threads are executed by the plurality of cores. And a first core of the plurality of cores is
前記複数のスレッドのうち第1のスレッドを実行する場合に、前記第1のスレッドに対応する第1のデータの書き込み要求を検出し、Detecting a first data write request corresponding to the first thread when executing a first thread of the plurality of threads;
前記複数のスレッドのうち、前記第1のデータを読み出す第2のスレッドの実行を前記複数のコアのうち第2のコアに割り当て、Of the plurality of threads, assigns execution of a second thread that reads the first data to a second core of the plurality of cores,
前記複数のキャッシュのうち、前記第1のコアに対応する第1のキャッシュに前記第1のデータを書き込むことなく、前記第2のコアに対応する第2のキャッシュに前記第1のデータを書き込むWrite the first data to the second cache corresponding to the second core without writing the first data to the first cache corresponding to the first core among the plurality of caches.
処理を実行するマルチプロセッサシステムの制御方法。A control method of a multiprocessor system for executing processing.
複数のスレッドをそれぞれ実行する複数のコアと、前記複数のスレッドを前記複数のコアで実行する場合に読み出すデータを前記複数のコアごとに記憶する複数のキャッシュとを有するマルチプロセッサシステムの制御プログラムであって、前記複数のコアのうち第1のコアに、A control program for a multiprocessor system, comprising: a plurality of cores that respectively execute a plurality of threads; and a plurality of caches that store data to be read for each of the plurality of cores when the plurality of threads are executed by the plurality of cores. In the first core among the plurality of cores,
前記複数のスレッドのうち第1のスレッドを実行する場合に、前記第1のスレッドに対応する第1のデータの書き込み要求を検出し、Detecting a first data write request corresponding to the first thread when executing a first thread of the plurality of threads;
前記複数のスレッドのうち、前記第1のデータを読み出す第2のスレッドの実行を前記複数のコアのうち第2のコアに割り当て、Of the plurality of threads, assigns execution of a second thread that reads the first data to a second core of the plurality of cores,
前記複数のキャッシュのうち、前記第1のコアに対応する第1のキャッシュに前記第1のデータを書き込むことなく、前記第2のコアに対応する第2のキャッシュに前記第1のデータを書き込むWrite the first data to the second cache corresponding to the second core without writing the first data to the first cache corresponding to the first core among the plurality of caches.
処理を実行させるマルチプロセッサシステムの制御プログラム。A control program for a multiprocessor system that executes processing.
JP2014059151A 2014-03-20 2014-03-20 Multiprocessor system, control program, and control method Expired - Fee Related JP5776810B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014059151A JP5776810B2 (en) 2014-03-20 2014-03-20 Multiprocessor system, control program, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014059151A JP5776810B2 (en) 2014-03-20 2014-03-20 Multiprocessor system, control program, and control method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012521208A Division JP5505501B2 (en) 2010-06-22 2010-06-22 Multi-core processor system, control program, and control method

Publications (2)

Publication Number Publication Date
JP2014142956A JP2014142956A (en) 2014-08-07
JP5776810B2 true JP5776810B2 (en) 2015-09-09

Family

ID=51424132

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014059151A Expired - Fee Related JP5776810B2 (en) 2014-03-20 2014-03-20 Multiprocessor system, control program, and control method

Country Status (1)

Country Link
JP (1) JP5776810B2 (en)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3139392B2 (en) * 1996-10-11 2001-02-26 日本電気株式会社 Parallel processing system
US8019947B2 (en) * 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
JP5168800B2 (en) * 2006-03-08 2013-03-27 富士通株式会社 Multiprocessor system
JP2008152571A (en) * 2006-12-18 2008-07-03 Toshiba Corp Cache memory device and multiprocessor system
WO2011161774A1 (en) * 2010-06-22 2011-12-29 富士通株式会社 Multi-core processor system, control program, and control method

Also Published As

Publication number Publication date
JP2014142956A (en) 2014-08-07

Similar Documents

Publication Publication Date Title
JP5505501B2 (en) Multi-core processor system, control program, and control method
JP5360299B2 (en) Multi-core processor system, cache coherency control method, and cache coherency control program
JP7539202B2 (en) Direct data access between accelerators and storage in a computing environment
US9448934B2 (en) Affinity group access to global data
US20110283152A1 (en) Detecting and optimizing false sharing
TW200925871A (en) Dynamic logical data channel assignment using time-grouped allocations
US9158696B2 (en) Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
JP5776810B2 (en) Multiprocessor system, control program, and control method
US10585744B2 (en) Managed hardware accelerator address translation fault resolution utilizing a credit
JP5614483B2 (en) Multi-core processor system, cache coherency control method, and cache coherency control program
US11907724B2 (en) In-memory trace with overlapping processing and logout
JP5811211B2 (en) Multi-core processor system, multi-core processor system control method, and multi-core processor system control program
US20240202127A1 (en) Sideband instruction address translation
US9304921B2 (en) Affinity group access to global data
CN115061953A (en) Processor and method for specified target to perform intra-core to extra-core cache content migration
WO2018158906A1 (en) Process data recording device and process data recording program
Alhabib Multi-core Implementation of DSP Algorithms for High Performance Computing
US20180314588A1 (en) Live Partition Mobility Enabled Hardware Accelerator Address Translation Fault Resolution
JPWO2013114540A1 (en) Control device, analysis device, analysis method, and analysis program

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150622

R150 Certificate of patent or registration of utility model

Ref document number: 5776810

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees