JP7305052B2 - Delay update device, processing system and program - Google Patents
Delay update device, processing system and program Download PDFInfo
- Publication number
- JP7305052B2 JP7305052B2 JP2022539830A JP2022539830A JP7305052B2 JP 7305052 B2 JP7305052 B2 JP 7305052B2 JP 2022539830 A JP2022539830 A JP 2022539830A JP 2022539830 A JP2022539830 A JP 2022539830A JP 7305052 B2 JP7305052 B2 JP 7305052B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- processing
- data parallel
- cores
- delay amount
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
本開示は、マルチコアプロセッサシステムに関する。 The present disclosure relates to multicore processor systems.
特許文献1に記載されているように、従来、処理の高速化を図るために、複数のコアを有するマルチコアプロセッサを使用して並列処理を実行するマルチコアプロセッサシステムに関する技術が提案されている。また、マルチコアプロセッサシステムの処理性能を高めるため、複数のコアでキャッシュを共有する技術が知られている。 As described in Patent Literature 1, conventionally, in order to speed up processing, there has been proposed a technology related to a multicore processor system that executes parallel processing using a multicore processor having a plurality of cores. Also, in order to improve the processing performance of a multi-core processor system, a technology is known in which a plurality of cores share a cache.
マルチコアプロセッサシステムにおいて、全プログラムがキャッシュに格納される場合には、マルチコアプロセッサは効率よくプログラムを実行することができる。 In a multi-core processor system, if all programs are cached, the multi-core processor can execute programs efficiently.
しかしながら、ソフトウェアの肥大化等により、全プログラムがキャッシュに格納されない場合、キャッシュに収まりきらないプログラムは、キャッシュミスの発生都度、キャッシュへロードされる。そのため、マルチコアプロセッサの実行効率が低下する可能性がある。 However, if the entire program cannot be stored in the cache due to software bloat or the like, the program that cannot be stored in the cache is loaded into the cache each time a cache miss occurs. Therefore, the execution efficiency of the multicore processor may decrease.
一方で、並列処理方法としては、複数のデータに対して複数コアが同じ処理を並列に実行するデータ並列処理が知られている。 On the other hand, as a parallel processing method, data parallel processing is known in which a plurality of cores execute the same processing on a plurality of data in parallel.
マルチコアプロセッサシステムについては、マルチコアプロセッサを有効利用できることは望ましい。 For multi-core processor systems, it is desirable to be able to take advantage of multi-core processors.
そこで、本開示は上述の点に鑑みて成されたものであり、マルチコアプロセッサの有効利用を図ることが可能な技術を提供することを目的とする。 Therefore, the present disclosure has been made in view of the above points, and an object thereof is to provide a technology that enables effective use of a multi-core processor.
プログラム作成装置の一態様は、複数のコアを含むマルチコアプロセッサと、前記複数のコアで共有される共有キャッシュとを備えるマルチコアプロセッサシステムの前記マルチコアプロセッサが実行するプログラムを作成するプログラム作成装置であって、処理対象プログラムにおいて、データ並列処理が記述されたデータ並列プログラムに変換される対象の部分プログラムである対象部分プログラムを特定する特定部と、前記複数のコアにおいて、一部のコアでの処理開始タイミングが、他のコアでの処理開始タイミングよりも遅延するような前記データ並列処理が記述された前記データ並列プログラムに前記対象部分プログラムを変換し、それによって得られた前記データ並列プログラムを含む実行対象プログラムを生成する生成部とを備える。 One aspect of a program creation device is a program creation device that creates a program to be executed by the multi-core processor of a multi-core processor system comprising a multi-core processor including a plurality of cores and a shared cache shared by the plurality of cores, a specifying unit for specifying a target partial program, which is a target partial program to be converted into a data parallel program in which data parallel processing is described, in the processing target program; Execution including the data parallel program obtained by converting the target partial program into the data parallel program describing the data parallel processing whose timing is delayed from the processing start timing of other cores. and a generator for generating the target program.
また、遅延量更新装置の一態様は、上記のプログラム作成装置が作成した前記データ並列プログラムに記述された前記データ並列処理において前記一部のコアでの処理開始タイミングの遅延量を更新する遅延量更新装置であって、前記マルチコアプロセッサでの前記データ並列処理の実行状態を示す実行状態情報を取得する取得部と、前記実行状態情報に基づいて前記遅延量を更新する更新部とを備える。 Further, one aspect of the delay amount updating device is a delay amount for updating the delay amount of the processing start timing in the part of the cores in the data parallel processing described in the data parallel program created by the program creating device. An update device, comprising: an acquisition unit that acquires execution state information indicating an execution state of the data parallel processing in the multi-core processor; and an update unit that updates the delay amount based on the execution state information.
また、処理システムの一態様は、上記のプログラム作成装置と、上記の遅延量更新装置とを備える。 Further, one aspect of the processing system includes the above program creation device and the above delay amount updating device.
また、プログラムの一態様は、複数のコアを含むマルチコアプロセッサと、前記複数のコアで共有される共有キャッシュとを備えるマルチコアプロセッサシステムの前記マルチコアプロセッサが実行するプログラムを作成するためのプログラムであって、コンピュータ装置に、処理対象プログラムにおいて、データ並列処理が記述されたデータ並列プログラムに変換される対象の部分プログラムである対象部分プログラムを特定する工程と、前記複数のコアにおいて、一部のコアでの処理開始タイミングが、他のコアでの処理開始タイミングよりも遅延するような前記データ並列処理が記述された前記データ並列プログラムに前記対象部分プログラムを変換し、それによって得られた前記データ並列プログラムを含む実行対象プログラムを生成する工程とを実行させるためのものである。 Further, one aspect of the program is a program for creating a program to be executed by the multi-core processor of a multi-core processor system comprising a multi-core processor including a plurality of cores and a shared cache shared by the plurality of cores, specifying, in a computer device, a target partial program that is a target partial program to be converted into a data parallel program in which data parallel processing is described in a processing target program; converting the target partial program into the data parallel program in which the data parallel processing is described such that the processing start timing of the other cores is delayed from the processing start timing of the other cores, and the data parallel program obtained thereby and a step of generating an execution target program including
また、プログラムの一態様は、上記のプログラム作成装置が作成した前記データ並列プログラムに記述された前記データ並列処理において前記一部のコアでの処理開始タイミングの遅延量を更新するためのプログラムであって、コンピュータ装置に、前記マルチコアプロセッサでの前記データ並列処理の実行状態を示す実行状態情報を取得する工程と、前記実行状態情報に基づいて前記遅延量を更新する工程とを実行させるためのものである。 Further, one aspect of the program is a program for updating the delay amount of the processing start timing in the part of the cores in the data parallel processing described in the data parallel program created by the program creation device. a step of obtaining execution state information indicating an execution state of the data parallel processing in the multi-core processor; and a step of updating the delay amount based on the execution state information. is.
マルチコアプロセッサの有効利用を図ることができる。 Effective use of a multi-core processor can be achieved.
本開示の目的、特徴、態様、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。 Objects, features, aspects and advantages of the present disclosure will become more apparent with the following detailed description and accompanying drawings.
実施の形態1.
図1は本実施の形態に係る処理システム1の構成の一例を示すブロック図である。処理システム1は、マルチコアプロセッサシステム2と、エンジニアリングツール3とを備える。エンジニアリングツール3は、マルチコアプロセッサシステム2が実行するプログラムを作成する。そして、エンジニアリングツール3は、作成したプログラムをマルチコアプロセッサシステム2に書き込む。Embodiment 1.
FIG. 1 is a block diagram showing an example of the configuration of a processing system 1 according to this embodiment. A processing system 1 comprises a
<マルチコアプロセッサシステムの構成例>
マルチコアプロセッサシステム2(単にプロセッサシステム2ともいう)は、例えば、家電機器及びIoT(Internet of Things)機器等の組み込み機器に搭載される。プロセッサシステム2は組み込み機器以外の装置に搭載されてもよい。<Configuration example of multi-core processor system>
A multi-core processor system 2 (simply referred to as a processor system 2) is installed in built-in devices such as home appliances and IoT (Internet of Things) devices. The
図1に示されるように、プロセッサシステム2は、例えば、複数のコア21を備えるマルチコアプロセッサ20と、複数のコア21で共有される共有キャッシュ22と、複数のコア21で共有される共有メモリ23とを備える。各コア21は一種の演算回路であって、プログラムを実行することが可能である。複数のコア21は、互いに独立して共通のプログラムを実行することが可能である。複数のコア21は例えば1つのパッケージ内に収容されている。マルチコアプロセッサ20は、例えば、CPU(Central Processing Unit)の一種であると言える。
As shown in FIG. 1, the
共有メモリ23(単にメモリ23ともいう)は、プログラム等の各種データを記憶する記憶回路である。メモリ23はメインメモリとも呼ばれる。メモリ23内のプログラムはマルチコアプロセッサ20によって実行される。メモリ23は、例えば、メインプログラム230、更新プログラム231及び遅延量232を記憶する。メインプログラム230は、例えば、プロセッサシステム2が搭載される組み込み機器が実行する各種処理が記述されたプログラムである。遅延量232は、後述するように、メインプログラム230の実行時に参照されるパラメータである。更新プログラム231は、遅延量232を更新する処理が記述されたプログラムである。メモリ23は、例えばROM(Read Only Memory)で構成されている。メモリ23は、フラッシュROMで構成されてもよいし、フラッシュROM以外のメモリで構成されてもよい。
The shared memory 23 (simply called memory 23) is a storage circuit that stores various data such as programs. The
共有キャッシュ22(単にキャッシュ22ともいう)は、プログラム等の各種データを一時的に記憶する記憶回路である。キャッシュ22の記憶容量は、メモリ23の記憶容量よりも小さくなっている。また、キャッシュ22の速度はメモリ23の速度よりも速くなっている。キャッシュ22は、例えばRAM(Random Access Memory)で構成されている。キャッシュ22は、SRAM(Static Random Access Memory)で構成されてもよいし、SRAM以外のメモリで構成されてもよい。
The shared cache 22 (simply referred to as cache 22) is a storage circuit that temporarily stores various data such as programs. The storage capacity of
各コア21は、プログラムを実行する場合、キャッシュ22内に処理対象のデータ(プログラムも含む)が存在するときにはキャッシュ22から処理対象のデータを読み出す。キャッシュ22内に処理対象のデータ(言い換えれば必要なデータ)が存在することは、キャッシュヒットと呼ばれる。一方で、各コア21は、キャッシュ22内に処理対象のデータが存在しないときには、共有メモリ23から処理対象のデータを読み出してキャッシュ22内に一旦記憶する。そして、各コア21は、キャッシュ22から処理対象のデータを読み出す。キャッシュ22内に処理対象のデータが存在しないことは、キャッシュミスと呼ばれる。
When executing a program, each
<エンジニアリングツールの構成例>
図1に示されるように、エンジニアリングツール3は、プログラム作成装置30(単に作成装置30ともいう)及びプログラム書き込み装置35(単に書き込み装置35ともいう)を備える。作成装置30は、マルチコアプロセッサ20が実行するメインプログラム230を作成することが可能である。書き込み装置35は、作成装置30が作成したメインプログラム230をメモリ23に書き込むことが可能である。なお、作成装置30は、更新プログラム231を作成してもよい。この場合、書き込み装置35は、作成装置30が作成した更新プログラム231をメモリ23に書き込んでもよい。<Engineering tool configuration example>
As shown in FIG. 1, the
図2は作成装置30のハードウェア構成の一例を示すブロック図である。作成装置30は一種のコンピュータ装置である。作成装置30は、パーソナルコンピュータであってもよいし、他のコンピュータ装置であってもよい。図2に示されるように、作成装置30は、ハードウェアとして、例えば、処理回路300と、記憶装置301と、通信装置302と、入力装置303と、表示装置304とを備える。
FIG. 2 is a block diagram showing an example of the hardware configuration of the
処理回路300は、例えば、少なくとも一つのプロセッサを備える。処理回路300は、例えば、プロセッサの一種であるCPUを備える。処理回路300は、複数のCPUを備えてもよいし、少なくとも一つのDSP(Digital Signal Processor)を備えてもよい。処理回路300は処理部300とも言える。
なお、処理回路300の少なくとも一部は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。この場合には、処理回路300の少なくとも一部は、例えば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、ASIC(Application Specific Integrated Circuit)及びFPGA(field-programmable gate array)の少なくとも一つで構成されてもよい。
Note that at least part of the
記憶装置301は、例えば、ROM及びRAMなどの、CPU等のプロセッサが読み取り可能な非一時的な記録媒体を含む。記憶装置301は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶装置301は、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)などを備えてもよい。
The
記憶装置301は、プログラム作成装置30を制御するためのプログラム301aを記憶する。プログラム301aには、例えばOS(Operating System)が含まれる。処理回路300のプロセッサがプログラム301aを実行することによって、処理回路300の各種機能が実現される。
The
表示装置304は、文字、記号及び図形等の各種情報を表示することが可能である。表示装置304は、液晶表示装置であってもよいし、他の種類の表示装置であってもよい。入力装置303は、ユーザからの入力を受け付けることが可能である。入力装置303は、例えば、キーボード及びマウスを備える。入力装置303は、タッチセンサを備えてもよい。この場合、表示装置304は、入力装置303が備えるタッチセンサを有するタッチパネルディスプレイであってもい。入力装置303はマイクを備えてもよい。
The
通信装置302は、作成装置30の外部の装置と通信することが可能である。通信装置302は通信回路とも言える。通信装置302は、例えば、書き込み装置35と通信することが可能である。通信装置302は、例えば、書き込み装置35と直接的に有線通信を行う。通信装置302は、書き込み装置35と無線通信を行ってもよい。また、通信装置302は、インターネット等を含むネットワークを通じて書き込み装置35と通信してもよい。
The
なお、作成装置30のハードウェア構成は上記の例に限られない。例えば、作成装置30は、処理回路300、記憶装置301、通信装置302、入力装置303及び表示装置304以外の装置を備えてもよい。
Note that the hardware configuration of the
図3は書き込み装置35のハードウェア構成の一例を示すブロック図である。書き込み装置35は一種のコンピュータ装置である。図3に示されるように、書き込み装置35は、ハードウェアとして、例えば、処理回路350と、記憶装置351と、通信装置352と、通信装置353とを備える。
FIG. 3 is a block diagram showing an example of the hardware configuration of the
処理回路350は、例えば、少なくとも一つのプロセッサを備える。処理回路350は、例えば、プロセッサの一種であるCPUを備える。処理回路350は、複数のCPUを備えてもよいし、少なくとも一つのDSPを備えてもよい。
なお、処理回路350の少なくとも一部は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。この場合には、処理回路350の少なくとも一部は、例えば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、ASIC及びFPGAの少なくとも一つで構成されてもよい。
Note that at least part of the
記憶装置351は、例えば、ROM及びRAMなどの、CPU等のプロセッサが読み取り可能な非一時的な記録媒体を含む。記憶装置351は、記憶装置301と同様に、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。
The
記憶装置351は、書き込み装置35を制御するためのプログラム351aを記憶する。処理回路350のプロセッサがプログラム351aを実行することによって、処理回路350の各種機能が実現される。
The
通信装置352は、作成装置30の通信装置302と通信することが可能である。通信装置353は、プロセッサシステム2と通信することが可能である。プロセッサシステム2は通信装置353を通信する通信装置を備える。通信装置353は、プロセッサシステム2と直接通信してもよいし、インターネット等を含むネットワークを通じてプロセッサシステム2と通信してもよい。通信装置353は有線通信を行ってもよいし、無線通信を行ってもよい。
The
なお、書き込み装置35のハードウェア構成は上記の例に限られない。例えば、書き込み装置35は、処理回路350、記憶装置351、通信装置352及び通信装置353以外の装置を備えてもよい。例えば、書き込み装置35は、ユーザからの入力を受け付けることが可能な入力装置を備えてもよい。
Note that the hardware configuration of the
以上のようなハードウェア構成例を有するエンジニアリングツール3では、作成装置30の処理回路300がメインプログラム230を作成する。そして、作成装置30の通信装置302は、処理回路300で作成されたメインプログラム230を書き込み装置35の通信装置352に送信する。書き込み装置35では、処理回路350が、通信装置352で受信されたメインプログラム230を通信装置353に入力する。通信装置353は、入力されたメインプログラム230を、プロセッサシステム2の通信装置を通じてメモリ23内に書き込む。
In the
なお、書き込み装置35は、プロセッサシステム2と常に接続されている必要はない。例えば、書き込み装置35がネットワークを通じてプロセッサシステム2と接続されている場合、メインプログラム230がメモリ23内に書き込まれた後、書き込み装置35は当該ネットワークから切り離されてもよい。
Note that the
また、上記の例では、書き込み装置35は、プロセッサシステム2に搭載されたメモリ23に対してプログラムを書き込んでいるが、プロセッサシステム2に搭載されていない状態のメモリ23に対してプログラムを書き込んでもよい。この場合、書き込み装置35は、例えば、ソケット等のメモリ23を保持する保持部品を備える。そして、書き込み装置35の処理回路350は、保持部品に保持されたメモリ23に対してプログラムを書き込む。プログラムが書き込まれたメモリ23は、プロセッサシステム2に搭載される。
In the above example, the
<プログラム作成装置の機能ブロック構成例>
図4は作成装置30の機能ブロック構成の一例を示す図である。図4に示されるように、作成装置30は、機能ブロックとして、プログラム記述部310と、特定部320と、生成部330と、コンパイル部340とを備える。プログラム記述部310、特定部320、生成部330及びコンパイル部340のそれぞれは、例えば、処理回路300がプログラム301aを実行することによって処理回路300に実現される機能ブロックで構成されている。なお、処理回路300の少なくとも一部が、その機能の実現にソフトウェアが不要なハードウェア回路によって実現される場合には、プログラム記述部310、特定部320、生成部330及びコンパイル部340の少なくとも一つが、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。<Example of functional block configuration of programming device>
FIG. 4 is a diagram showing an example of the functional block configuration of the
プログラム記述部310は、入力装置303が受け付けるユーザからの入力に基づいて第1テキスト形式プログラム401を記述することが可能である。ユーザは、プログラム記述部310の機能を利用して、プログラム作成装置30上で、第1テキスト形式プログラム401を記述することが可能である。プログラム記述部310は、入力装置303が受け付けるユーザの入力に基づいて第1テキスト形式プログラム401を作成する。
The
プログラム記述部310は、例えば、スレッド単位で処理を記述することができる。プログラム記述部310は、各スレッドについて、そのスレッドをどのコア21が実行するかを、ユーザの指示に応じて第1テキスト形式プログラム401に記述することができる。
The
プログラム記述部310は、例えば、プログラム301aに含まれるOSが処理回路300で実行されることによって実現される。OSには、例えば、プログラムの一種であるテキストエディタが含まれており、当該テキストエディタが実行されることによってプログラム記述部310が実現される。プログラム記述部310が作成する第1テキスト形式プログラム401は、例えば表示装置304に表示される。これにより、ユーザは、例えば、表示装置304に表示される作成中の第1テキスト形式プログラム401を見ながら、第1テキスト形式プログラム401の記述を進めることができる。
The
特定部320は、第1テキスト形式プログラム401において、データ並列処理が記述されたデータ並列プログラムに変換される対象の部分プログラムを特定する。以後、当該部分プログラムを変換対象部分プログラムと呼ぶことがある。
The
ここで、データ並列処理とは、複数のデータ(あるいは複数のデータセット)に対して複数のコアが同じ処理を並列実行する処理である。言い換えれば、データ並列処理とは、複数のデータ(あるいは複数のデータセット)に対して複数のコアが共通のプログラム(言い換えれば同一のプログラム)を用いて並列処理を行うことである。プロセッサシステム2の複数のコア21は、互いに依存関係の無い独立した複数のデータ(あるいは複数のデータセット)に対して同じ処理を並列実行することが可能である。データ並列処理は、データ並列とも呼ばれることがある。以後、データ並列処理において個々のコアが実行する処理を並列個別処理と呼ぶことがある。特定部320の動作については後で詳細に説明する。
Here, data parallel processing is processing in which a plurality of cores execute the same processing in parallel on a plurality of data (or a plurality of data sets). In other words, data parallel processing means that multiple cores perform parallel processing on multiple data (or multiple data sets) using a common program (in other words, the same program). The plurality of
生成部330は、特定部320での特定結果に基づいて、第1テキスト形式プログラム401から第2テキスト形式プログラム402を生成する。具体的には、生成部330は、複数のコア21において、一部のコア21での処理開始タイミングが、他のコア21での処理開始タイミングよりも遅延するようなデータ並列処理(遅延データ並列処理ともいう)が記述されたデータ並列プログラム(遅延データ並列プログラムともいう)に、変換対象部分プログラムを変換する。処理開始タイミングは、処理開始時刻であるとも言える。そして、生成部330は、遅延データ並列プログラムを含む第2テキスト形式プログラム402を生成する。第2テキスト形式プログラム402は、第1テキスト形式プログラム401において、変換対象部分プログラムが遅延データ並列プログラムに置き換えられたものである。後述するように、第2テキスト形式プログラム402は、コンパイルされた後にマルチコアプロセッサ20で実行されることから、実行対象プログラムであると言える。生成部330の動作については後で詳細に説明する。
The
コンパイル部340は、第2テキスト形式プログラム402をコンパイルして、第2テキスト形式プログラム402を実行形式プログラム403に変換する。実行形式プログラム403は、メインプログラム230として、書き込み装置35によってメモリ23に書き込まれる。
The compiling
上記の説明から理解できるように、メインプログラム230には、遅延データ並列プログラム(詳細には実行形式に変換された遅延データ並列プログラム)が含まれる。この遅延データ並列プログラムに記述された遅延データ並列処理では、一部のコア21が実行する並列個別処理の開始タイミングが、他のコア21が実行する並列個別処理の開始タイミングよりも遅延している。
As can be understood from the above description, the
以後、並列個別処理をジョブと呼ぶことがある。また、遅延データ並列処理において、他の並列個別処理と比較して、開始タイミングが遅延している並列個別処理を、遅延並列個別処理あるいは遅延ジョブと呼ぶことがある。また、遅延データ並列処理において、他の並列個別処理と比較して、開始タイミングが先行している並列個別処理を、先行並列個別処理あるいは先行ジョブと呼ぶことがある。 Hereafter, parallel individual processing may be called a job. In the delayed data parallel processing, a parallel individual process whose start timing is later than other parallel individual processes may be called a delayed parallel individual process or a delayed job. Also, in the delayed data parallel processing, a parallel individual process whose start timing is earlier than other parallel individual processes may be called a preceding parallel individual process or a preceding job.
メモリ23内の遅延量232は、先行並列個別処理(先行ジョブ)の開始タイミングに対する遅延並列個別処理(遅延ジョブ)の開始タイミングの遅延量を示している。遅延量232は、メインプログラム230に含まれる遅延データ並列プログラムの実行中に、遅延ジョブを実行するコア21によって参照される。遅延データ並列プログラムを実行中のコア21は、遅延量232を参照する場合、キャッシュ22内に遅延量232が記憶されていれば、キャッシュ22から遅延量232を読み出して参照する。一方で、コア21は、キャッシュ22内に遅延量232が記憶されていなければ、メモリ23から遅延量232を読み出して一旦キャッシュ22に記憶する。そして、コア21は、キャッシュ22から遅延量232を読み出して参照する。
The
図5はエンジニアリングツール3の動作の一例を示すフローチャートである。図5に示されるように、ステップs1において、プログラム記述部310が、ユーザの入力に基づいて第1テキスト形式プログラム401を記述して作成する。次にステップs2において、特定部320は、第1テキスト形式プログラム401において、データ並列プログラムに変換される対象の部分プログラム、つまり変換対象部分プログラムを特定する。次にステップs3において、生成部330は、変換対象部分プログラムを遅延データ並列プログラムに変換し、それによって得られた遅延データ並列プログラムを含む第2テキスト形式プログラム402を生成する。次にステップs4において、コンパイル部340は、第2テキスト形式プログラム402をコンパイルして実行形式プログラム403を生成する。そしてステップs5において、書き込み装置35が、実行形式プログラム403をメインプログラム230としてメモリ23に書き込む。プロセッサシステム2が搭載された組み込み機器の実稼働中に、メモリ23内のメインプログラム230が実行されることによって、当該組み込み機器の各種機能が実現される。メインプログラム230の実行中においては、例えば、遅延データ並列処理が繰り返し実行される。なお、第1テキスト形式プログラム401は、プログラム作成装置30以外の装置で作成されてもよい。
FIG. 5 is a flow chart showing an example of the operation of the
以上のように、データ並列処理では、複数のデータに対して複数のコア21が共通のプログラムを用いて並列処理を行うことから、データ並列処理の実行によって、マルチコアプロセッサ20での処理時間を短縮することができる。
As described above, in data parallel processing, a plurality of
図6はマルチコアプロセッサ20がデータ並列処理50を実行する場合の当該マルチコアプロセッサ20の動作の一例を示す図である。図6の例では、複数のコア21は、4個のコア21a~21dで構成されている。コア21a~21dは、データ並列処理50において、並列個別処理51~54をそれぞれ実行する。また、データ並列処理50は遅延データ並列処理ではなく、データ並列処理50では、複数の並列個別処理51~54の開始タイミングは同じに設定されている。複数の並列個別処理51~54の間では、処理対象のデータは異なるものの、処理内容は同じとなっている。
FIG. 6 is a diagram showing an example of the operation of the
図6の例では、コア21aは、並列個別処理51の前に逐次処理55を行い、並列個別処理51の後に逐次処理56を行う。データ並列処理50では、逐次処理55で得られた複数のデータセットに対して同じ処理が並列実行される。コア21aは、データ並列処理50で得られた複数のデータセットに対して逐次処理56を行う。
In the example of FIG. 6 , the core 21 a performs
また、コア21b~21dは、低優先度処理57~59をそれぞれ実行する。低優先度処理57~59は、データ並列処理50、逐次処理55及び逐次処理56よりも処理優先度が低い処理である。低優先度処理57~59は、例えば、データ並列処理50、逐次処理55及び逐次処理56とは無関係の独立した処理である。
The cores 21b-21d also execute low-priority processes 57-59, respectively. The low priority processes 57 to 59 are processes with processing priorities lower than those of the data
図6の例では、コア21aが逐次処理55を開始し、コア21b~21dが低優先度処理57~59をそれぞれ開始する。逐次処理55が完了すると、データ並列処理50の実行が可能となる。コア21aは、逐次処理55の実行後に並列個別処理51を実行する。コア21bは、優先度の低い低優先度処理57の実行を中断して、優先度の高い並列個別処理52を実行する。同様に、コア21cは低優先度処理58の実行を中断して並列個別処理53を実行し、コア21dは低優先度処理59の実行を中断して並列個別処理54を実行する。優先度の高いデータ並列処理50が完了すると、コア21b~21dは、中断していた低優先度処理57~59の実行をそれぞれ再開し、コア21aは逐次処理56を実行する。
In the example of FIG. 6, core 21a initiates
このように、データ並列処理50が実行されることで、優先度の高い処理全体の完了時間を短縮することができる。
By executing the data
図7は、マルチコアプロセッサ20が遅延データ並列処理150を実行する場合の当該マルチコアプロセッサ20の動作の一例を示す図である。図7の例では、複数のコア21は、4個のコア21a~21dで構成されている。コア21a~21dは、遅延データ並列処理150において、並列個別処理51~54をそれぞれ実行する。図7に示される遅延データ並列処理150では、例えば、コア21b~21dが実行する並列個別処理52~54の開始タイミングが、コア21aが実行する並列個別処理51の開始タイミングよりも遅延している。遅延データ並列処理150では、並列個別処理51が先行ジョブとなり、並列個別処理52~54が遅延ジョブとなる。並列個別処理52~54の開始タイミングは、並列個別処理51の開始タイミングよりも遅延量232だけ遅れている。
FIG. 7 is a diagram showing an example of the operation of the
図7の例では、図6の例と同様に、コア21aが逐次処理55を開始し、コア21b~21dが低優先度処理57~59をそれぞれ開始する。逐次処理55が完了すると、遅延データ並列処理150の実行が可能となる。コア21aは、逐次処理55の実行後に並列個別処理51を開始する。コア21bは、並列個別処理51の開始後に並列個別処理52の開始タイミングになると、優先度の低い低優先度処理57を中断して、優先度の高い並列個別処理52を開始する。同様に、コア21cは、並列個別処理53の開始タイミングになると、低優先度処理58を中断して並列個別処理53を開始する。同様に、コア21dは、並列個別処理54の開始タイミングになると、低優先度処理59を中断して並列個別処理54を開始する。優先度の高い遅延データ並列処理150が完了すると、コア21b~21dは、中断していた低優先度処理57~59の実行をそれぞれ再開し、コア21aは逐次処理56を実行する。
In the example of FIG. 7, as in the example of FIG. 6, the core 21a starts the
図6の例では、マルチコアプロセッサ20がデータ並列処理50を実行する場合には、コア21a~21dは、データ並列処理50が記述された共通のデータ並列プログラムを実行することになる。データ並列プログラムがキャッシュ22内に存在しない場合には、メモリ23からデータ並列プログラムがキャッシュ22にロードされる必要がある。データ並列プログラムのキャッシュ22へのロード中においては、マルチコアプロセッサ20の待ち時間が発生する。データ並列処理50では、複数の並列個別処理51~54の開始タイミングが同じであることから、データ並列プログラムのキャッシュ22へのロードの待ち時間がコア21a~21dのすべてにおいて同じように発生する。
In the example of FIG. 6, when the
これに対して、図7に示される遅延データ並列処理150では、並列個別処理52~54の開始タイミングが並列個別処理51の開始タイミングよりも遅延している。これにより、遅延データ並列処理150の実行中に、コア21b~21cは、並列個別処理52~54以外の処理を実行することができる。図7の例では、コア21b~21cは、遅延データ並列処理150の実行中に低優先度処理57~59を実行しており、並列個別処理52~54の開始タイミングの遅延分だけ、低優先度処理57~59を長く実行している。これにより、マルチコアプロセッサ20の有効利用を図ることができる。
On the other hand, in the delayed data
さらに、遅延データ並列プログラムのキャッシュ22へのロードの待ち時間がコア21a~21dのすべてにおいて同じようには発生しない。つまり、遅延データ並列プログラムにおいて、先行して処理を開始するコア21aの並列個別処理51の実行中にキャッシュ22へロードされた部分を、コア21b~21dは実行することができることから、コア21b~21dの待ち時間を、コア21aの待ち時間よりも小さくすることができる。よって、コア21b~21dでの処理開始タイミングを遅延させたとしても遅延データ並列処理150全体の処理時間を短くすることができる。図6及び7の例では、遅延データ並列処理150全体の処理時間(言い換えれば、遅延データ並列処理150の完了時間)と、データ並列処理50全体の処理時間(言い換えれば、データ並列処理50の完了時間)とがほぼ同じとなっている。
Furthermore, the latency of loading delayed data parallel programs into
<特定部及び生成部の動作例の詳細説明>
特定部320は、第1テキスト形式プログラム401において変換対象部分プログラムを特定する場合には、例えば、ループ処理に着目する。例えば、第1テキスト形式プログラム401がC言語で記述されている場合を考える。この場合、特定部320は、第1テキスト形式プログラム401においてfor文を特定する。そして、特定部320は、特定したfor文で記述されたループ処理がループ間で独立したデータを扱っている場合、特定したfor文を変換対象部分プログラムとする。<Detailed description of operation examples of the specifying unit and the generating unit>
When identifying the conversion target partial program in the first
図8は、第1テキスト形式プログラム401に含まれるfor文の一例を示す図である。図8に示されるfor文で記述されたループ処理では、ループ間で、V〔i]=X[i]+Y[i]という同じ処理が行われる。図8のループ処理は、ループ回数i(0≦i≦399)に応じたデータセット(V〔i],X[i],Y[i])を扱っており、ループ間で独立したデータを扱っている。このため、図8に示されるfor文で記述されたループ処理は、データ並列処理に変換されることが可能である。特定部320は、第1テキスト形式プログラム401において図8に示されるfor文を特定した場合、特定したfor文を、変換対象部分プログラム、つまり、データ並列処理が記述されたデータ並列プログラムに変換する対象の部分プログラムとする。
FIG. 8 is a diagram showing an example of a for statement included in the first
生成部330は、特定部320で特定された変換対象部分プログラムを遅延データ並列プログラムに変換する。図9は、遅延データ並列プログラム550の一例を示す図である。図9の遅延データ並列プログラム550は、図8に示されるfor文が変換されたものである。図9の遅延データ並列プログラム550は、例えば4つのコア21a,21b,21c,21dで実行される。
The
図9の例では、例えばコア21aが、データセット(X[i],Y[i])(0≦i≦99)に対して、V〔i]=X[i]+Y[i]を実行する。コア21aが、0≦i≦99の範囲においてV〔i]=X[i]+Y[i]を行う処理が、遅延データ並列処理においてコア21aが行う並列個別処理(言い換えればジョブ)となる。また、例えばコア21bが、データセット(X[i],Y[i])(100≦i≦199)に対して、V〔i]=X[i]+Y[i]を実行する。コア21bが、100≦i≦199の範囲においてV〔i]=X[i]+Y[i]を行う処理が、遅延データ並列処理においてコア21bが行う並列個別処理となる。また、例えばコア21cが、データセット(X[i],Y[i])(200≦i≦299)に対して、V〔i]=X[i]+Y[i]を実行する。コア21cが、200≦i≦299の範囲においてV〔i]=X[i]+Y[i]を行う処理が、遅延データ並列処理においてコア21cが行う並列個別処理となる。そして、例えばコア21dが、データセット(X[i],Y[i])(300≦i≦399)に対して、V〔i]=X[i]+Y[i]を実行する。コア21dが、300≦i≦399の範囲においてV〔i]=X[i]+Y[i]を行う処理が、遅延データ並列処理においてコア21dが行う並列個別処理となる。
In the example of FIG. 9, for example, the core 21a executes V[i]=X[i]+Y[i] for the data set (X[i], Y[i]) (0≤i≤99). do. A process performed by the core 21a to perform V[i]=X[i]+Y[i] in the range of 0≤i≤99 is parallel individual processing (in other words, job) performed by the core 21a in the delayed data parallel processing. Also, for example, the core 21b executes V[i]=X[i]+Y[i] for the data set (X[i], Y[i]) (100≤i≤199). The process of performing V[i]=X[i]+Y[i] in the range of 100≤i≤199 by the core 21b is parallel individual processing performed by the core 21b in the delayed data parallel processing. Also, for example, the core 21c executes V[i]=X[i]+Y[i] for the data set (X[i], Y[i]) (200≦i≦299). The process of performing V[i]=X[i]+Y[i] in the range of 200≤i≤299 by the core 21c is parallel individual processing performed by the core 21c in the delayed data parallel processing. Then, for example, the
また、図9の遅延データ並列プログラム550には、3個のコア21b,21c,21dのそれぞれについて、コア21が行う並列個別処理の開始タイミングを遅延させる遅延処理が記述されたプログラム550aが含まれる。コア21b,21c,21dのそれぞれが遅延処理を実行することによって、コア21b,21c,21dが行う並列個別処理の開始タイミングが、コア21aが行う並列個別処理の開始タイミングよりも遅延する。図9の例では、コア21aが行う並列個別処理が先行ジョブとなり、コア21b,21c,21dが行う並列個別処理が遅延ジョブとなる。図9の例では、OpenMPが用いられてプログラム550aが記述されている。
The delayed data
また、図9の遅延データ並列プログラム550には、4個のコア21a~21dのそれぞれについて、コア21での並列個別処理の実行状態を監視する監視処理が記述されたプログラム550bが含まれている。コア21は、監視処理の実行中に、当該コア21での並列個別処理の実行状態を示す実行状態情報(コア実行状態情報ともいう)を出力する。コア実行状態情報には、例えば、並列個別処理の実行時間、並列個別処理での実行命令数、並列個別処理の実行中のキャッシュミス回数及び並列個別処理の実行中のストール回数が含まれる。あるコア21での並列個別処理の実行時間は、当該あるコア21での遅延データ並列処理の実行時間であるとも言える。コア実行状態情報は、後述するように、遅延量232の更新で使用される。コア実行状態情報に含まれる情報はこの限りではない。
The delay data
生成部330は、遅延データ並列プログラムを生成すると、当該遅延データ並列プログラムを含む第2テキスト形式プログラム402を生成する。この第2テキスト形式プログラム402は、第1テキスト形式プログラム401において、変換対象部分プログラムが遅延データ並列プログラムに置き換えられたものである。生成部330で生成された第2テキスト形式プログラム402はコンパイルされた後にメモリ23に書き込まれる。
After generating the delayed data parallel program, the
<遅延量更新装置の一例>
本例の処理システム1は、遅延量232を更新する遅延量更新装置250を備える。本例では、例えば、マルチコアプロセッサ20が遅延量更新装置250として機能する。図10は遅延量更新装置250の一例を示すブロック図である。<Example of delay update device>
The processing system 1 of this example includes a delay
図10に示されるように、遅延量更新装置250は、例えば、マルチコアプロセッサ20での遅延データ並列処理の実行状態を示す実行状態情報600(プロセッサ実行状態情報600ともいう)を取得する取得部251と、取得部251で取得された実行状態情報600に基づいて遅延量232を更新する更新部252とを備える。プロセッサ実行状態情報600には、各コア21についてのコア実行状態情報が含まれる。また、プロセッサ実行状態情報600には、遅延データ並列処理全体の実行時間が含まれる。
As shown in FIG. 10, the
取得部251及び更新部252のそれぞれは、例えば、マルチコアプロセッサ20のあるコア21が更新プログラム231を実行することによって実現される機能ブロックで構成されている。取得部251は、遅延データ並列プログラムの実行中のマルチコアプロセッサ20の各コア21からコア実行状態情報を取得する。また、取得部251は、遅延データ並列プログラムの実行中に、遅延データ並列処理全体の実行時間を取得する。
Each of the
図11は、遅延量更新装置250が行う更新処理の一例を示すフローチャートである。図11に示される更新処理は、プロセッサシステム2の実稼働中(言い換えれば、プロセッサシステム2が搭載された組み込み機器の実稼働中)に実行されてもよいし、プロセッサシステム2の実稼働前(例えば、プロセッサシステム2が搭載された組み込み機器の出荷前)に実行されてもよい。
FIG. 11 is a flowchart showing an example of update processing performed by the
図11に示されるように、ステップs11において、取得部251が、マルチコアプロセッサ20にメインプログラム230を実行させる。次に、ステップs12において、取得部251は、メインプログラム230の実行中に、プロセッサ実行状態情報600を取得する。
As shown in FIG. 11, in step s11, the
メインプログラム230の実行中には、遅延データ並列処理が繰り返し実行される。遅延データ並列処理で使用される遅延量232の初期値は、例えば、先行並列個別処理(先行ジョブ)の完了時刻が、遅延並列個別処理(遅延ジョブ)の開始時刻となるような値に設定される。遅延量232の初期値はこれに限られない。
During execution of the
図12は、遅延量232が初期値に設定されている場合の遅延データ並列処理150とその前後の処理の一例を示す図である。図12では、上述の低優先度処理57~59が示されていないが、実際には、図7に示されるように、コア21b~21dは、並列個別処理を実行していないときに、低優先度処理57~59をそれぞれ実行する。後述の図13についても同様である。
FIG. 12 is a diagram showing an example of the delay data
先行並列個別処理51は、その開始タイミングが遅延せずに、逐次処理55の直後に開始する。本例では、先行並列個別処理(先行ジョブ)51の実行時間はt_normalで表されている。遅延並列個別処理(遅延ジョブ)52~54は、先行並列個別処理51の終了タイミングから開始し、遅延量232はt_delayで表されている。また、遅延並列個別処理52~54の実行時間はt_fastで表されている。そして、遅延データ並列処理150全体の実行時間、つまり、先行ジョブの開始から全ジョブの終了までの時間が、t_totalで表されている。
The preceding parallel
上述のように、コア21b~21dは、遅延データ並列プログラムにおいて、先行並列個別処理51の実行中にキャッシュ22へロードされた部分を実行することができる。そのため、コア21b~21dの待ち時間を、コア21aの待ち時間よりも小さくすることができる。そのため、t_normal≧t_fastとなる。
As described above, the cores 21b-21d can execute portions of the delayed data parallel program that were loaded into the
ステップs12の後、ステップs13において、更新部252は、遅延量232の更新の終了条件である更新終了条件が成立するか否かを判定する。本例では、例えば、以下の条件式(1)が更新終了条件として採用される。
After step s12, in step s13, the
ステップs13において、更新部252は、ステップs12で取得されたプロセッサ実行状態情報に含まれる先行ジョブの実行時間と、当該プロセッサ実行状態情報に含まれる遅延データ並列処理150全体の実行時間とを用いて、条件式(1)が成立するか否かを判定する。
In step s13, the updating
ステップs12において、更新終了条件(条件式(1))が成立したと判定されると、更新処理が終了して、メインプログラム230の実行が終了する。これにより、遅延量232の更新が完了する。一方で、ステップs13において、更新終了条件(条件式(1))が成立しないと判定されると、ステップs14が実行される。
When it is determined in step s12 that the update end condition (conditional expression (1)) is satisfied, the update process ends and the execution of the
ステップs14では、更新部252が遅延量232を更新する。ステップs14において、まず、更新部252は、例えば以下の式(2)を用いて、新たな遅延量232(t_delay)を求める。そして、更新部252は、メモリ23内の遅延量232を新たな遅延量232で置き換える。これにより、メモリ23内の遅延量232が更新される。
In step s14, the
ステップs14において、更新部252は、ステップs12で取得されたプロセッサ実行状態情報に含まれる先行ジョブの実行時間と、当該プロセッサ実行状態情報に含まれる遅延ジョブの実行時間とを用いて、新たな遅延量を求める。
In step s14, the
ステップs14の後、ステップs12が再度実行されて、新しいプロセッサ実行状態情報が取得される。その後、同様にしてステップs13が実行され、以後、遅延量更新装置250は同様に動作する。
After step s14, step s12 is executed again to obtain new processor execution state information. After that, step s13 is executed in a similar manner, and the
ここで、キャッシュ22の使用状態は、遅延ジョブの遅延量232に応じて変化することから、遅延量232に応じて、先行ジョブの実行時間(t_normal)と遅延ジョブの実行時間(t_fast)も変化する。したがって、式(2)を用いて遅延量232を更新したとしても、1度の更新で、条件式(1)が成立するとは限らない。そのため、本例では、遅延量更新装置250は、条件式(1)が成立するまで繰り返し遅延量232を更新している。
Here, since the usage state of the
図13は、更新完了後の遅延量232が用いられて実行される遅延データ並列処理150とその前後の処理の一例を示す図である。図13にも示されるように、本例では、遅延データ並列処理150の実行時間(t_total)が、先行並列個別処理51の実行時間(t_normal)と一致するように遅延量232(t_delay)が更新される。複数の並列個別処理51~52の演算量は同等であることから、本例のように遅延量232が更新されることによって、遅延並列個別処理52~52は、先行並列個別処理51と同じタイミングで終了する。
FIG. 13 is a diagram showing an example of the delayed data
このように、遅延並列個別処理52~52が先行並列個別処理51と同じタイミングで終了するように遅延量232が更新されることによって、並列個別処理52~52の開始タイミングを遅延させたとしても、遅延データ並列処理150の実行時間(t_total)を小さくすることができる。例えば、上述の図6及び7に示されるように、遅延データ並列処理150全体の実行時間を、遅延並列個別処理を含まないデータ並列処理50全体の実行時間と同等にすることができる。
In this way, by updating the
なお、更新終了条件としては、上記の条件式(1)以外の条件が採用されてもよい。遅延量232が変化しない場合であっても並列個別処理の実行時間はばらつくことから、更新終了条件としては、例えば以下の条件式(3)が採用されてもよい。
Note that conditions other than conditional expression (1) above may be adopted as the update end condition. Even if the
条件式(3)のパラメータeの値は、並列個別処理の実行時間のばらつきに基づく値である。パラメータeの値が決定される場合には、例えば、同じ遅延量232が用いられて複数回遅延データ並列処理が実行される。そして、その結果から得られる並列個別処理の実行時間のばらつきに基づいてパラメータeの値が事前に決定される。
The value of parameter e in conditional expression (3) is a value based on variations in execution time of parallel individual processing. When the value of parameter e is determined, for example, the
また、実稼働中のプロセッサシステム2では、遅延データ並列処理中のコア21での割り込み処理等により、並列個別処理の実行時間等が変動することがある。そこで、プロセッサシステム2の実稼働中では、図11に示される更新処理が繰り返し実行されてもよい。これにより、並列個別処理の実行時間等が変動する場合であっても、遅延量232を適切な値に設定することができる。更新処理は、定期的に繰り返し実行されてもよいし、不定期的に繰り返し実行されてもよい。また、更新処理は、ユーザの指示に応じて実行されてもよい。
In addition, in the
上記の例では、特定部320は、第1テキスト形式プログラム401に含まれる特定のfor文を変換対象部分プログラムとしていたが、第1テキスト形式プログラム401に含まれる他の部分プログラムを変換対象部分プログラムとしてもよい。例えば、特定部320は、第1テキスト形式プログラム401に含まれる特定のwhile文を変換対象部分プログラムとしてもよい。この場合、特定部320は、while文で記述されたループ処理がループ間で独立したデータを扱っている場合、当該while文を変換対象部分プログラムとしてもよい。また、特定部320は、第1テキスト形式プログラム401に含まれる特定のfor文及び特定のwhile文のそれぞれを変換対象部分プログラムとしてもよい。
In the above example, the
特定部320が、複数の変換対象部分プログラムを特定する場合には、生成部330は、当該複数の変換対象部分プログラムのそれぞれについて、当該変換対象部分プログラムを遅延データ並列プログラムに変換する。そして、生成部330は、得られた複数の遅延データ並列プログラムを含む第2テキスト形式プログラム402を生成する。複数の遅延データ並列プログラムを含む第2テキスト形式プログラム402は、コンパイル後に、メインプログラム230としてメモリ23に書き込まれる。この場合、メモリ23には、複数の遅延データ並列プログラムでそれぞれ使用される複数の遅延量232が記憶される。そして、遅延量更新装置250は、複数の遅延量232のそれぞれを上述のようにして更新する。
When the identifying
上記の例では、遅延量232は更新されているが、予め決定された遅延量232が更新されずに常に使用されてもよい。また、上記の図7,12,13等の例では、遅延データ並列処理を構成する複数の並列個別処理のうち、1つの並列個別処理だけが先行ジョブとなっているが、複数の並列個別処理が先行ジョブとなってもよい。例えば、コア21aが実行する並列個別処理だけではなく、コア21bが実行する並列個別処理も先行ジョブとなってもよい。また、コア21a,21b,21cがそれぞれ実行する3つの並列個別処理が先行ジョブとなり、コア21dが実行する並列個別処理が遅延ジョブとなってもよい。
Although the
以上のように、本実施の形態では、遅延データ並列処理において、一部のコア21での開始タイミングが他のコア21での開始タイミングよりも遅延している。これにより、遅延データ並列処理の実行中に、一部のコア21は、並列個別処理以外の処理を実行することができる。これにより、マルチコアプロセッサ20の有効利用を図ることができる。
As described above, in the present embodiment, the start timing of some
さらに、一部のコア21は、遅延データ並列プログラムにおいて、先行して処理を開始する他のコアの並列個別処理の実行中にキャッシュ22へロードされた部分を実行することができること。そのため、一部のコア21の待ち時間を、他のコア21の待ち時間よりも小さくすることができる。よって、一部のコア21での処理開始タイミングを遅延させたとしても遅延データ並列処理全体の処理時間を短くすることができる。
Furthermore, some
実施の形態2.
本実施の形態では、変換対象部分プログラムがユーザによって指定される。本実施の形態に係る処理システム1の構成は、上述の実施の形態1に係る処理システム1の構成と同じである。
In this embodiment, the user designates a partial program to be converted. The configuration of the processing system 1 according to this embodiment is the same as the configuration of the processing system 1 according to the first embodiment described above.
本実施の形態では、ユーザは、プログラム記述部310の機能を用いて、第1テキスト形式プログラム401において変換対象部分プログラムを指定することができる。具体的には、ユーザは、プログラム記述部310の機能を用いて、第1テキスト形式プログラム401において、その部分プログラムが遅延データ並列プログラムに変換される対象であることを示す記述(指定記述ともいう)を第1テキスト形式プログラム401に含めることができる。指定記述は一種のプログラムである。プログラム記述部310は、入力装置303が受け付けるユーザからの入力に基づいて、第1テキスト形式プログラム401に指定記述を含める。指定記述は、ユーザによって指定された部分プログラムが遅延データ並列プログラムに変換される対象であることを示す記述であると言える。
In this embodiment, the user can use the function of the
図14は指定記述410の一例を示す図である。図14の例では、OpenMPが用いられて指定記述410が表されている。図14の指定記述410は、そのすぐ下のfor文が遅延データ並列プログラムに変換される対象であることを示している。第1テキスト形式プログラム401には複数の指定記述が含まれてもよい。
FIG. 14 is a diagram showing an example of the
本実施の形態では、特定部320は、第1テキスト形式プログラム401において指定記述410を特定する。そして、特定部320は、特定した指定記述410に基づいて変換対象部分プログラムを特定する。図14の例では、特定部320は、指定記述410のすぐ下のfor文を変換対象部分プログラムとして特定する。そして、生成部330は、特定部320で特定された変換対象部分プログラムを遅延データ並列プログラムに変換し、それによって得られた遅延データ並列プログラムを含む第2テキスト形式プログラム402を生成する。生成部330で生成された第2テキスト形式プログラム402は、コンパイル後にメモリ23に記憶される。本実施の形態に係る処理システム1の他の動作については、実施の形態1に係る処理システム1と同様である。
In this embodiment, the identifying
このように、本実施の形態では、第1テキスト形式プログラム401は、ユーザによって指定された部分プログラムが遅延データ並列プログラムに変換される対象であることを示す指定記述を含んでいる。これにより、特定部320は、ユーザによって指定された部分プログラムを変換対象部分プログラムとすることができる。つまり、ユーザは変換対象部分プログラムを指定することができる。
Thus, in this embodiment, the first
ここで、データ並列処理の実行中に複数のコア21間で通信が行われることがある。例えば、複数のコア21がそれぞれ実行する複数の並列個別処理の完了を同期させる必要がある場合には、複数のコア21間で通信が行われることがある。第1テキスト形式プログラム401に含まれる部分プログラムによっては、それを遅延データ並列プログラムに変換した場合、当該遅延データ並列プログラムの実行時の複数のコア21間の通信によるオーバーヘッドによって、遅延データ並列プログラムに変換するメリットが小さい場合がある。
Here, communication may be performed between
本実施の形態では、ユーザは、変換対象部分プログラムを指定することができることから、それを遅延データ並列プログラムに変換するメリットが大きい部分プログラムを、変変換対象部分プログラムに指定することができる。よって、マルチコアプロセッサ20での処理時間をより確実に短縮することができる。
In this embodiment, since the user can specify the partial program to be converted, the user can specify, as the partial program to be converted, a partial program that is highly advantageous in converting it into a delayed data parallel program. Therefore, the processing time in the
実施の形態3.
本実施の形態では、エンジニアリングツール3は、図15に示されるように、遅延量232を出力する遅延量推定モデル460と、遅延量推定モデル460を学習するモデル学習部360とをさらに備える。遅延量推定モデル460及びモデル学習部360は、例えば、エンジニアリングツール3のプログラム作成装置30に設けられる。遅延量推定モデル460及びモデル学習部360のそれぞれは、例えば、処理回路300がプログラム301aを実行することによって処理回路300に実現される。
In this embodiment, the
学習済みの遅延量推定モデル460は、例えば、プロセッサ実行状態情報に基づいて、遅延並列個別処理が先行並列個別処理と同じタイミングで終了するような遅延量232を推定して出力する。言い換えれば、学習済みの遅延量推定モデル460は、例えば、プロセッサ実行状態情報に基づいて、遅延並列個別処理の完了時刻と先行並列個別処理の完了時刻とが同時刻となる遅延量232を推定して出力する。
The learned delay
遅延量推定モデル460は、例えば、ニューラルネットワークで構成されている。遅延量推定モデル460を構成するニューラルネットワーク(第1ニューラルネットワークともいう)の入力層には、プロセッサ実行状態情報600が入力される。第1ニューラルネットワークの出力層からは遅延量232が出力される。第1ニューラルネットワークは、畳み込みニューラルネットワーク(CNN(Convolutional Neural Network))であってもよいし、他の種類のニューラルネットワークであってもよい。第1ニューラルネットワークは、モデル学習部360によって学習されるパラメータを含む。このパラメータには、人工ニューロン間の結合の重みを示す重み付け係数が含まれる。第1ニューラルネットワークは、入力層に入力されるプロセッサ実行状態情報600に対してパラメータに基づく演算を行って、出力層から遅延量232を出力する。
The delay
モデル学習部360は、例えば、第1ニューラルネットワークのパラメータを機械学習することによって、遅延量推定モデル460を学習する。第1ニューラルネットワークのパラメータが学習されることによって、遅延量推定モデル460は、遅延並列個別処理が先行並列個別処理と同じタイミングで終了するような遅延量232をプロセッサ実行状態情報に基づいて出力することが可能となる。モデル学習部360は、例えば教師あり学習法を用いて、第1ニューラルネットワークのパラメータを学習する。
The
記憶装置301には、第1ニューラルネットワークのパラメータの学習で使用される教師データと学習用データ(学習データともいう)が記憶されている。学習用データ及び教師データはまとめて教師付き学習データと呼ばれることがある。本例では、例えば、プロセッサシステム2が学習用データ及び教師データを生成する。
The
教師データには、遅延並列個別処理が先行並列個別処理と同じタイミングで終了するような遅延量232が含まれる。以後、教師データに含まれる遅延量232を基準遅延量232と呼ぶことがある。
The teacher data includes a
基準遅延量232としては、例えば、上述の図11の更新処理において更新が完了した遅延量232が採用される。教師データには複数の基準遅延量232が含まれる。本実施の形態では、第1ニューラルネットワークのパラメータの学習が実行される前に、図11の更新処理がプロセッサシステム2において繰り返し実行されることによって、複数の基準遅延量232が取得される。
As the
ここで、上述のように、遅延量232に応じてキャッシュ22の使用状態は変化する。そして、キャッシュ22の使用状態に応じてプロセッサ実行状態情報は変化する。よって、遅延量232に応じてプロセッサ実行状態情報が変化する。つまり、遅延量232とプロセッサ実行状態情報との間には相関関係がある。
Here, as described above, the usage state of the
そこで、本例では、学習用データとしてプロセッサ実行状態情報が採用される。具体的には、学習用データには、教師データに含まれる複数の基準遅延量232にそれぞれ対応する複数のプロセッサ実行状態情報が含まれる。ここで、基準遅延量232に対応するプロセッサ実行状態情報とは、当該基準遅延量232が使用されて遅延済みデータ並列プログラムが実行されているときに取得部251で取得されるプロセッサ実行状態情報を意味する。学習用データに含まれるプロセッサ実行状態情報は、遅延並列個別処理が先行並列個別処理と同じタイミングで終了するような遅延量232が使用されて遅延済みデータ並列プログラムが実行されているときに取得部251で取得されるプロセッサ実行状態情報であると言える。以後、学習用データに含まれるプロセッサ実行状態情報を学習用実行状態情報と呼ぶことがある。
Therefore, in this example, processor execution state information is employed as learning data. Specifically, the learning data includes a plurality of pieces of processor execution state information respectively corresponding to the plurality of reference delay amounts 232 included in the teacher data. Here, the processor execution state information corresponding to the
学習用実行状態情報には、例えば、各コア21についてのコア実行状態情報と、遅延データ並列処理全体の実行時間とが含まれる。学習用実行状態情報に含まれるコア実行状態情報には、例えば、並列個別処理の実行時間、並列個別処理での実行命令数、並列個別処理の実行中のキャッシュミス回数及び並列個別処理の実行中のストール回数が含まれる。 The learning execution state information includes, for example, core execution state information for each core 21 and the execution time of the entire delayed data parallel processing. The core execution state information included in the learning execution state information includes, for example, the execution time of parallel individual processing, the number of instructions executed in parallel individual processing, the number of cache misses during execution of parallel individual processing, and the number of cache misses during execution of parallel individual processing. stall count.
モデル学習部360は、第1ニューラルネットワークの学習を行う場合、第1ニューラルネットワークの入力層に学習用データを入力する。そして、モデル学習部360は、第1ニューラルネットワークの出力層から出力される出力データについての教師データに対する誤差が小さくなるように、第1ニューラルネットワークのパラメータを調整する。より詳細には、モデル学習部360は、学習用データに含まれる学習用実行状態情報を第1ニューラルネットワークの入力層に入力する。そして、モデル学習部360は、入力層に学習用実行状態情報を入力した場合に第1ニューラルネットワークの出力層から出力される出力データ(言い換えれば遅延量232)についての、当該学習用実行状態情報に対応する基準遅延量232に対する誤差が小さくなるように、パラメータを調整する。パラメータの調整方法としては、誤差逆伝播法が採用されてもよし、他の方法が採用されてもよい。パラメータの調整が完了すると、パラメータの学習が終了する。調整後のパラメータ、学習済みパラメータとなり、記憶装置301に記憶される。記憶装置301内の学習済みパラメータは、例えば、書き込み装置35を通じてプロセッサシステム2のメモリ23に書き込まれる。プロセッサシステム2では、学習済みパラメータが使用されて遅延量232が更新される。なお、第1ニューラルネットワークのパラメータの学習方法はこの限りではない。
When learning the first neural network, the
本実施の形態では、遅延量更新装置250は、図16に示される更新部252aをさらに備える。更新部252aは学習済みモデル460aを備える。更新部252aは、学習済みモデル460aを用いて遅延量232を更新する。本例では、教師データ及び学習用データの生成に上述の更新部252が使用され、学習済みパラメータの生成後は、更新部252aが使用されて遅延量232が更新される。
In this embodiment, the
学習済みモデル460aは、例えば、モデル学習部360で生成された学習済みパラメータを含む第2ニューラルネットワークで構成されている。第2ニューラルネットワークは、第1ニューラルネットワークと同じ構成を有している。第2ニューラルネットワークの入力層には、取得部251が取得するプロセッサ実行状態情報600が入力される。第2ニューラルネットワークは、入力層に入力されるプロセッサ実行状態情報600に対して学習済みパラメータに基づく演算を行って、出力層から遅延量232を出力する。これにより、第2ニューラルネットワークの出力層から、遅延並列個別処理が先行並列個別処理と同じタイミングで終了するような遅延量232が出力される。
The trained
図17は、更新部252aが使用された更新処理の一例を示すフローチャートである。図17に示される更新処理は、プロセッサシステム2の実稼働中(言い換えれば、プロセッサシステム2が搭載された組み込み機器の実稼働中)に実行されてもよいし、プロセッサシステム2の実稼働前(例えば、プロセッサシステム2が搭載された組み込み機器の出荷前)に実行されてもよい。以後、図11の更新処理を第1更新処理と呼び、図17の更新処理を第2更新処理と呼ぶことがある。
FIG. 17 is a flowchart showing an example of update processing using the
図17に示されるように、上述のステップs11及びs12が実行される。その後、ステップs24において、更新部252aは、ステップs12で取得されたプロセッサ実行状態情報600に基づいて新たな遅延量232を求める。具体的には、更新部252aは、第2ニューラルネットワークの入力層に対して、ステップs12で取得されたプロセッサ実行状態情報を入力する。そして、更新部252aは、第2ニューラルネットワークの出力層から出力される遅延量232を新たな遅延量232とする。更新部252は、メモリ23内の遅延量232を新たな遅延量232で置き換える。これにより、メモリ23内の遅延量232が更新され、第2更新処理が終了する。
As shown in FIG. 17, steps s11 and s12 described above are performed. After that, in step s24, the updating
なお、プロセッサシステム2の実稼働中において、第2更新処理が繰り返し実行されてもよい。この場合、第2更新処理は、定期的に繰り返し実行されてもよいし、不定期的に繰り返し実行されてもよい。また、第2更新処理は、ユーザの指示に応じて実行されてもよい。
Note that the second update process may be repeatedly executed during the actual operation of the
また、プロセッサシステム2の実稼働中において、まず、第1更新処理が繰り返し実行されて遅延量232が更新され、その後、第2更新処理が繰り返し実行されて遅延量232が更新されてもよい。この場合、第1更新処理の繰り返し実行によって得られた教師データ及び学習用データに基づいて学習済みパラメータが生成され、その学習済みパラメータが使用されて第2更新処理が繰り返し実行されてもよい。
Also, during the actual operation of the
また、上記の例では、マルチコアプロセッサシステム2が教師データ及び学習用データを生成しているが、マルチコアプロセッサシステム2と同様の構成を有するマルチコアプロセッサシステムが、第1更新処理と同様の処理を繰り返し実行することによって、教師データ及び学習用データを生成してもよい。この場合には、遅延量更新装置250には更新部252が不要になる。
Also, in the above example, the
また、上記の例では、エンジニアリングツール3がモデル学習部360及び遅延量推定モデル460を備えているが、プロセッサシステム2がモデル学習部360及び遅延量推定モデル460を備えてもよい。この場合、学習済みの遅延量推定モデル460が学習済みモデル460aとして使用されてもよい。
Also, in the above example, the
また、遅延量推定モデル460は再学習されてもよい。この場合、第2更新処理が繰り返し実行されることによって新たな教師データ及び学習用データが取得され、これらの新たな教師データ及び学習用データに基づいて遅延量推定モデル460が再学習されてもよい。そして、再学習された遅延量推定モデル460の学習済みパラメータが使用されて第2更新処理が実行されてもよい。
Also, the delay
上記の例では、プロセッサシステム2が遅延量更新装置250として機能していたが、遅延量更新装置250はプロセッサシステム2とは別に設けられてもよい。この場合、エンジニアリングツール3及び遅延量更新装置250を備える処理システム1に、プロセッサシステム2が含められなくてもよい。つまり、エンジニアリングツール3及び遅延量更新装置250を備える処理システム1と、それとは別のプロセッサシステム2とを備えるシステムが構築されてもよい。
Although the
本開示は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、限定的なものではない。例示されていない無数の変形例が想定され得るものと解される。 While the present disclosure has been described in detail, the foregoing description is, in all respects, illustrative and not restrictive. It is understood that a myriad of variations not illustrated may be envisioned.
また、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。 In addition, it is possible to freely combine each embodiment, and to modify or omit each embodiment as appropriate.
1 処理システム、2 マルチコアプロセッサシステム、20 マルチコアプロセッサ、21,21a,21b,21c,21d コア、22 共有キャッシュ、30 プログラム作成装置、231 更新プログラム、250 遅延量更新装置、251 取得部、252,252a 更新部、320 特定部、330 生成部、301a プログラム。 1 processing system, 2 multi-core processor system, 20 multi-core processor, 21, 21a, 21b, 21c, 21d core, 22 shared cache, 30 program creation device, 231 update program, 250 delay amount update device, 251 acquisition unit, 252, 252a Update unit, 320 identification unit, 330 generation unit, 301a program.
Claims (4)
前記プログラム作成装置は、 The programming device is
処理対象プログラムにおいて、データ並列処理が記述されたデータ並列プログラムに変換される対象の部分プログラムである対象部分プログラムを特定する特定部と、 a specifying unit for specifying a target partial program, which is a target partial program to be converted into a data parallel program in which data parallel processing is described, in the processing target program;
前記複数のコアにおいて、一部のコアでの処理開始タイミングが、他のコアでの処理開始タイミングよりも遅延するような前記データ並列処理が記述された前記データ並列プログラムに前記対象部分プログラムを変換し、それによって得られた前記データ並列プログラムを含む実行対象プログラムを生成する生成部と In the plurality of cores, the target partial program is converted into the data parallel program in which the data parallel processing is described such that the processing start timing of some cores is delayed from the processing start timing of the other cores. and a generation unit that generates an execution target program including the data parallel program obtained thereby;
を備え、with
前記遅延量更新装置は、 The delay update device,
前記マルチコアプロセッサでの前記データ並列処理の実行状態を示す実行状態情報を取得する取得部と、 an acquisition unit that acquires execution state information indicating an execution state of the data parallel processing in the multi-core processor;
前記実行状態情報に基づいて、前記データ並列プログラムに記述された前記データ並列処理において前記一部のコアでの処理開始タイミングの遅延量を更新する更新部と an updating unit that updates, based on the execution state information, a delay amount of processing start timing in the part of the cores in the data parallel processing described in the data parallel program;
を備え、with
前記実行状態情報は、前記一部のコアでの前記データ並列処理の実行時間と、前記他のコアでの前記データ並列処理の実行時間とを含む、遅延量更新装置。 The delay update device, wherein the execution state information includes an execution time of the data parallel processing in the part of the cores and an execution time of the data parallel processing in the other cores.
前記更新部は、前記実行状態情報が入力されたときに前記遅延量を出力する学習済みモデルを用いて、前記遅延量を更新する、遅延量更新装置。 The delay amount updating device, wherein the update unit updates the delay amount using a learned model that outputs the delay amount when the execution state information is input.
前記遅延量更新装置において対象となる前記データ並列プログラムを生成する前記プログラム作成装置と the program creation device for generating the data parallel program to be targeted in the delay update device;
を備える、処理システム。A processing system comprising:
前記プログラム作成装置は、 The programming device is
処理対象プログラムにおいて、データ並列処理が記述されたデータ並列プログラムに変換される対象の部分プログラムである対象部分プログラムを特定する特定部と、 a specifying unit for specifying a target partial program, which is a target partial program to be converted into a data parallel program in which data parallel processing is described, in the processing target program;
前記複数のコアにおいて、一部のコアでの処理開始タイミングが、他のコアでの処理開始タイミングよりも遅延するような前記データ並列処理が記述された前記データ並列プログラムに前記対象部分プログラムを変換し、それによって得られた前記データ並列プログラムを含む実行対象プログラムを生成する生成部と In the plurality of cores, the target partial program is converted into the data parallel program in which the data parallel processing is described such that the processing start timing of some cores is delayed from the processing start timing of the other cores. and a generation unit that generates an execution target program including the data parallel program obtained thereby;
を備え、with
前記プログラムは、コンピュータ装置に、 The program, in a computer device,
前記マルチコアプロセッサでの前記データ並列処理の実行状態を示す実行状態情報を取得する工程と、 obtaining execution state information indicating an execution state of the data parallel processing in the multi-core processor;
前記実行状態情報に基づいて、前記データ並列プログラムに記述された前記データ並列処理において前記一部のコアでの処理開始タイミングの遅延量を更新する工程と a step of updating the delay amount of the processing start timing of the some cores in the data parallel processing described in the data parallel program based on the execution state information;
を実行させ、and
前記実行状態情報は、前記一部のコアでの前記データ並列処理の実行時間と、前記他のコアでの前記データ並列処理の実行時間とを含む、プログラム。 The program according to claim 1, wherein the execution state information includes an execution time of the data parallel processing in the part of the cores and an execution time of the data parallel processing in the other cores.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2020/028868 WO2022024214A1 (en) | 2020-07-28 | 2020-07-28 | Program creation device, delay amount update device, processing system, and program |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JPWO2022024214A1 JPWO2022024214A1 (en) | 2022-02-03 |
| JPWO2022024214A5 JPWO2022024214A5 (en) | 2022-08-22 |
| JP7305052B2 true JP7305052B2 (en) | 2023-07-07 |
Family
ID=80037789
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2022539830A Active JP7305052B2 (en) | 2020-07-28 | 2020-07-28 | Delay update device, processing system and program |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP7305052B2 (en) |
| WO (1) | WO2022024214A1 (en) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011204208A (en) | 2010-03-26 | 2011-10-13 | Fujitsu Ltd | Multi-core processor |
| WO2013010159A1 (en) | 2011-07-14 | 2013-01-17 | Siemens Corporation | Reducing the scan cycle time of control applications through multi-core execution of user programs |
| US20150081985A1 (en) | 2013-09-18 | 2015-03-19 | International Business Machines Corporation | Administering inter-core communication via shared memory |
| JP2016029554A (en) | 2014-07-23 | 2016-03-03 | 富士通株式会社 | Calculation apparatus, calculation method and calculation program |
-
2020
- 2020-07-28 WO PCT/JP2020/028868 patent/WO2022024214A1/en not_active Ceased
- 2020-07-28 JP JP2022539830A patent/JP7305052B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011204208A (en) | 2010-03-26 | 2011-10-13 | Fujitsu Ltd | Multi-core processor |
| WO2013010159A1 (en) | 2011-07-14 | 2013-01-17 | Siemens Corporation | Reducing the scan cycle time of control applications through multi-core execution of user programs |
| US20150081985A1 (en) | 2013-09-18 | 2015-03-19 | International Business Machines Corporation | Administering inter-core communication via shared memory |
| JP2016029554A (en) | 2014-07-23 | 2016-03-03 | 富士通株式会社 | Calculation apparatus, calculation method and calculation program |
Non-Patent Citations (2)
| Title |
|---|
| MAKOTO, Ishihara, et al.,Interactive parallelizing assistance tool for OpenMP: iPat/OMP,Proc. Fifth European Workshop on OpenMP (EWOMP ‘03),2003年 |
| TIAN, Tian, et al.,Software Techniques for Shared-Cache Multi-Core Systems [online],Intel,2012年03月08日,[検索日 2020.08.27], Internet: <URL:https://software.intel.com/content/www/us/en/develop/articles/software-techniques-for-shared-cache-multi-core-systems.html> |
Also Published As
| Publication number | Publication date |
|---|---|
| JPWO2022024214A1 (en) | 2022-02-03 |
| WO2022024214A1 (en) | 2022-02-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3757761B1 (en) | Methods and apparatus for intentional programming for heterogeneous systems | |
| US11694075B2 (en) | Partitioning control dependency edge in computation graph | |
| Bak et al. | Memory-aware scheduling of multicore task sets for real-time systems | |
| JP4621786B2 (en) | Information processing apparatus, parallel processing optimization method, and program | |
| WO2019095873A1 (en) | Task parallel processing method, apparatus and system, storage medium and computer device | |
| CN112148293A (en) | Method and apparatus for runtime multi-scheduling of software executing on heterogeneous systems | |
| JP2020518881A (en) | Computer-implemented method, computer-readable medium and heterogeneous computing system | |
| US12288141B2 (en) | Multi-level caching for dynamic deep learning models | |
| US12014202B2 (en) | Method and apparatus with accelerator | |
| US12360804B2 (en) | Data dependency-aware scheduling | |
| JP4381459B1 (en) | Information processing apparatus, granularity adjustment method, and program | |
| CA2433379A1 (en) | Modulo scheduling of multiple instruction chains | |
| Forsberg et al. | HePREM: A predictable execution model for GPU-based heterogeneous SoCs | |
| US20150168936A1 (en) | Pipelining for cyclic control systems | |
| US8196146B2 (en) | Information processing apparatus, parallel processing optimization method, and program | |
| Cheng et al. | {PipeThreader}:{Software-Defined} Pipelining for Efficient {DNN} Execution | |
| JP2025542316A (en) | Dynamic control of work scheduling | |
| EP3401784A1 (en) | Multicore processing system | |
| US20080271041A1 (en) | Program processing method and information processing apparatus | |
| JP7305052B2 (en) | Delay update device, processing system and program | |
| CN100593169C (en) | Multithreaded reachability | |
| US20250208924A1 (en) | Systems and Methods for Heterogeneous Model Parallelism and Adaptive Graph Partitioning | |
| JP2020087009A (en) | Optimization device and method for controlling optimization device | |
| Huang et al. | Serico: Scheduling real-time i/o requests in computational storage drives | |
| US20260079636A1 (en) | Efficient data movement for ai accelerators |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220623 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220623 |
|
| 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: 20230530 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230627 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7305052 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |