JP6944107B2 - 情報処理装置、情報処理システム及びプログラム - Google Patents

情報処理装置、情報処理システム及びプログラム Download PDF

Info

Publication number
JP6944107B2
JP6944107B2 JP2017135379A JP2017135379A JP6944107B2 JP 6944107 B2 JP6944107 B2 JP 6944107B2 JP 2017135379 A JP2017135379 A JP 2017135379A JP 2017135379 A JP2017135379 A JP 2017135379A JP 6944107 B2 JP6944107 B2 JP 6944107B2
Authority
JP
Japan
Prior art keywords
write
request
completion
write request
data
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
Application number
JP2017135379A
Other languages
English (en)
Other versions
JP2019016328A (ja
Inventor
健太朗 片山
健太朗 片山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017135379A priority Critical patent/JP6944107B2/ja
Priority to US16/023,689 priority patent/US10817183B2/en
Publication of JP2019016328A publication Critical patent/JP2019016328A/ja
Application granted granted Critical
Publication of JP6944107B2 publication Critical patent/JP6944107B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、情報処理装置、情報処理システム及びプログラムに関する。
メモリアクセスの順序を強制するための技法が知られている(特許文献1参照)。メモリアクセス要求は、メモリバリアコマンドを生成するように構成されていないデバイスから受信される。サロゲートバリアは、メモリアクセス要求に応じて生成される。メモリアクセス要求は、読取り要求とすることができる。メモリ書込み要求の場合には、サロゲートバリアは、書込み要求が処理される前に生成される。サロゲートバリアはまた、読取り要求と同じアドレスに対する先行する書込み要求を条件としてメモリ読取り要求に応じて生成されることも可能である。コヒーレンシは、あたかもメモリバリアコマンドがメモリバリアコマンドを生成しないデバイスから受信されたかのように、階層的メモリシステムの内部で強制される。
特表2012−528399号公報
特許文献1では、サロゲートバリアは、読取り要求と同じアドレスに対する先行する書込み要求を条件としてメモリ読取り要求に応じて生成される。読取り要求と同じアドレスに対する先行する書込み要求が、その読取り要求の直前に存在する場合には、その先行する書き込み要求の検索時間は短くなる。しかし、その先行する書込み要求とその読取り要求との間に、多数の他のアドレスの書き込み要求が存在する場合がある。その場合、その先行する書込み要求の検索時間が長くなってしまい、電力効率が低下し、読み出しが遅くなってしまう課題がある。
1つの側面では、本発明の目的は、アウトオブオーダ実行により書き込み要求を出力する際に、データ書き込み要求を出力した後に書き込み完了書き込み要求を出力することができる情報処理装置、情報処理システム及びプログラムを提供することである。
情報処理装置は、複数のデータ書き込み要求を含む第1の書き込み要求群を発行し、前記第1の書き込み要求群の後に、前記第1の書き込み要求群の書き込み完了情報の第1の書き込み完了書き込み要求を発行するコアと、前記コアが発行する前記第1の書き込み完了書き込み要求の直前に、第1のバリア命令を挿入するバリア命令挿入部と、前記バリア命令挿入部の挿入後、前記第1のバリア命令の前の前記第1の書き込み要求群に含まれる複数のデータ書き込み要求の順番を入れ替えて出力した後に、前記第1のバリア命令の後の前記第1の書き込み完了書き込み要求を出力するメモリコントローラとを有する。
1つの側面では、アウトオブオーダ実行により書き込み要求を出力する際に、データ書き込み要求を出力した後に書き込み完了書き込み要求を出力することができる。
図1は、第1の実施形態による情報処理システムの構成例を示す図である。 図2は、メインメモリの構成例を示す図である。 図3(A)は第1のコマンドFIFOの論理的構成例を示す図であり、図3(B)は第1のコマンドFIFOの物理的構成例を示す図である。 図4は、情報処理システムの処理例を示すシーケンス図である。 図5(A)及び(B)は、書き込み時の第1のコマンドFIFOの例を示す図である。 図6(A)及び(B)は、読み出し時の第1のコマンドFIFOの例を示す図である。 図7は、書き込み処理と読み出し処理の詳細を示すシーケンス図である。 図8(A)は第1のプロセッサのプロセッサコアが発行する要求の順番を示す図であり、図8(B)は第1のプロセッサのバリア命令挿入部が出力する要求及びバリア命令の順番を示す図であり、図8(C)は第2のプロセッサのプロセッサコアが発行する要求の順番を示す図である。 図9は、プロセッサコアの書き込み処理の詳細を示すフローチャートである。 図10(A)はバリア命令挿入部の要求出力処理の詳細を示すフローチャートであり、図10(B)はバリア命令挿入部の応答入力処理の詳細を示すフローチャートである。 図11(A)はメモリコントローラの要求出力処理の詳細を示すフローチャートであり、図11(B)はメモリコントローラの応答入力処理の詳細を示すフローチャートである。 図12は、プロセッサコアの読み出し処理の詳細を示すフローチャートである。 図13は、第2の実施形態によるバリア命令挿入部の要求出力処理の詳細を示すフローチャートである。
(第1の実施形態)
図1は、第1の実施形態による情報処理システム100の構成例を示す図である。情報処理システム100は、第1のプロセッサ101と、第2のプロセッサ102と、メインメモリ103と、バス104とを有する。バス104には、第1のプロセッサ101と、第2のプロセッサ102と、メインメモリ103が接続される。第1のプロセッサ101は、第1の情報処理装置であり、プロセッサコア111と、バリア命令挿入部112と、メモリコントローラ113とを有する。第2のプロセッサ102は、第2の情報処理装置であり、プロセッサコア121と、バリア命令挿入部122と、メモリコントローラ123とを有する。メインメモリ103上に格納されるデータは、データ領域131と、コマンドファーストインファーストアウト(コマンドFIFO)132とを含む。コマンドFIFO132は、書き込み完了情報領域である。
第1のプロセッサ101及び第2のプロセッサ102は、同一のバス104に接続され、メインメモリ103を共有する。例えば、第1のプロセッサ101は、中央処理ユニット(CPU)である。第2のプロセッサ102は、ハードウェアアクセラレータであり、FPGA(field-programmable gate array)又はGPU(graphics processing unit)である。第1のプロセッサ(CPU)101は、ソフトウェア処理に不向きな処理を第2のプロセッサ(FPGA又はGPU)102に委任することができる。これにより、処理を高速化することができる。
図2は、図1のメインメモリ103の構成例を示す図である。メインメモリ103上に格納されるデータは、データ領域131と、コマンドFIFO132とを含む。データ領域131は、第1のデータ領域131aと、第2のデータ領域131bとを有する。第1のデータ領域131aは、ブロック単位の入力データを記憶し、例えば、ブロックblk0の入力データと、ブロックblk1の入力データと、ブロックblk2の入力データを記憶する。通信の場合、ブロックは、パケット、セグメント、又はフレームである。動画像符号化の場合、ブロックは、GOP(Group of Picture)、ピクチャ、又はCTU(coding tree unit)である。第2のデータ領域131bは、ブロック単位の出力データを記憶し、例えば、ブロックblk0の出力データと、ブロックblk1の出力データと、ブロックblk2の出力データを記憶する。
コマンドFIFO132の先頭アドレスは、アドレスADR_CMDである。コマンドFIFO132は、アドレスADR_CMD以降のアドレス領域に設けられ、第1のコマンドFIFO132aと、第2のコマンドFIFO132bとを有する。第1のコマンドFIFO132aは、第1のデータ領域131aに対応し、ブロック毎の入力データの書き込み完了情報を記憶する。第1のコマンドFIFO132aは、例えば、ブロックblk0の入力データの書き込み完了情報と、ブロックblk1の入力データの書き込み完了情報と、ブロックblk2の入力データの書き込み完了情報を記憶する。第1のコマンドFIFO132aは、ライトポインタWP1に対応するアドレスに対して書き込みが行われ、リードポインタRP1に対応するアドレスに対して読み出しが行われる。
第2のコマンドFIFO132bは、第2のデータ領域131bに対応し、ブロック毎の出力データの書き込み完了情報を記憶する。第2のコマンドFIFO132bは、例えば、ブロックblk0の出力データの書き込み完了情報と、ブロックblk1の出力データの書き込み完了情報と、ブロックblk2の出力データの書き込み完了情報を記憶する。第2のコマンドFIFO132bは、ライトポインタWP2に対応するアドレスに対して書き込みが行われ、リードポインタRP2に対応するアドレスに対して読み出しが行われる。
図3(A)は、第1のコマンドFIFO132aの論理的構成例を示す図であり、図3(B)は、第1のコマンドFIFO132aの物理的構成例を示す図である。以下、第1のコマンドFIFO132aの例を説明するが、第2のコマンドFIFO132bの構成も第1のコマンドFIFO132aの構成と同様である。第1のコマンドFIFO132aは、ブロック単位の書き込み完了情報300をファーストインファーストアウトで記憶する。書き込み完了情報300は、1ワードの情報であり、有効フラグ301と、ブロック開始アドレス302と、ブロックサイズ303を有する。
有効フラグ301は、書き込み完了情報300が有効である場合には「1」であり、書き込み完了情報300が有効でない場合には「0」である。ブロック開始アドレス302は、第1のデータ領域131aに書き込まれているブロックの開始アドレスである。ブロックサイズ303は、第1のデータ領域131aに書き込まれているブロックのデータサイズである。
第1のコマンドFIFO132aにおいて、書き込み要求により、ライトポインタWP1に対応するアドレスに対して、新たな書き込み完了情報300が書き込まれ、ライトポインタWP1がインクメントされる。また、第1のコマンドFIFO132aにおいて、読み出し要求により、リードポインタRP1に対応するアドレスに記憶されている書き込み完了情報300が読み出され、リードポインタRP1がインクメントされる。
図4は、情報処理システム100の処理例を示すシーケンス図である。ステップS401において、第1のプロセッサ101は、ブロック単位の入力データをメインメモリ103の第1のデータ領域131aに書き込む。この入力データは、第2のプロセッサ102に処理させたいデータである。第1のプロセッサ101は、ブロック単位の入力データの書き込みが完了する毎に、ブロック単位の書き込み完了情報300をメインメモリ103の第1のコマンドFIFO132aのライトポインタWP1が示すアドレスに書き込む。書き込み完了情報300は、「1」の有効フラグ301を含む。
次に、ステップS402において、第2のプロセッサ102は、メインメモリ103の第1のコマンドFIFO132aのリードポインタRP1が示すアドレスに記憶されている書き込み完了情報300を読み出す。書き込み完了情報300内の有効フラグ301が「0」である場合には、入力データの書き込みが完了していないことを示すので、第2のプロセッサ102は、上記のリードポインタRP1が示すアドレスに記憶されている書き込み完了情報300を読み出す処理を繰り返す。書き込み完了情報300内の有効フラグ301が「1」である場合には、入力データの書き込みが完了していることを示すので、第2のプロセッサ102は、書き込み完了情報300内のブロック開始アドレス302及びブロックサイズ303を基に、メインメモリ103の第1のデータ領域131aからブロック単位の入力データを読み出す。
次に、ステップS403において、第2のプロセッサ102は、その読み出したブロック単位の入力データに対して、通信又は画像処理等の処理を行い、ブロック単位の出力データを得る。
次に、ステップS404において、第2のプロセッサ102は、ブロック単位の出力データをメインメモリ103の第2のデータ領域131bに書き込む。第2のプロセッサ102は、ブロック単位の出力データの書き込みが完了する毎に、ブロック単位の書き込み完了情報300をメインメモリ103の第2のコマンドFIFO132bのライトポインタWP2が示すアドレスに書き込む。書き込み完了情報300は、「1」の有効フラグ301を含む。
次に、ステップS405において、第1のプロセッサ101は、メインメモリ103の第2のコマンドFIFO132bのリードポインタRP2が示すアドレスに記憶されている書き込み完了情報300を読み出す。書き込み完了情報300内の有効フラグ301が「0」である場合には、出力データの書き込みが完了していないことを示すので、第1のプロセッサ101は、上記のリードポインタRP2が示すアドレスに記憶されている書き込み完了情報300を読み出す処理を繰り返す。書き込み完了情報300内の有効フラグ301が「1」である場合には、出力データの書き込みが完了していることを示すので、第1のプロセッサ101は、書き込み完了情報300内のブロック開始アドレス302及びブロックサイズ303を基に、メインメモリ103の第2のデータ領域131bからブロック単位の出力データを読み出す。
第2のプロセッサ102が行うステップS404の書き込み処理は、第1のプロセッサ101が行うステップS401の書き込み処理と同様である。また、第1のプロセッサ101が行うステップS405の読み出し処理は、第2のプロセッサ102が行うステップS402の読み出し処理と同様である。
図5(A)は、有効フラグ301がすべて「1」である第1のコマンドFIFO132aを示す図である。有効フラグ301がすべて「1」である場合には、第1のコマンドFIFO132aがフルであることを示す。ステップS401において、まず、第1のプロセッサ101は、ライトポインタWP1に対応するアドレスの書き込み完了情報300を読み出す。書き込み完了情報300内の有効フラグ301が「1」である場合、第1のコマンドFIFO132aがフルであることを示す。その場合、第1のプロセッサ101は、有効フラグ301が「0」になるまで、上記のライトポインタWP1に対応するアドレスの書き込み完了情報300を読み出す処理を繰り返す。この場合、第1のプロセッサ101は、入力データを書き込むことができない。
図5(B)に示すように、やがて、ライトポインタWP1に対応するアドレスの書き込み完了情報300が不要になると、書き込み完了情報300内の有効フラグ301が「0」になる。第1のプロセッサ101は、ライトポインタWP1に対応するアドレスの書き込み完了情報300を読み出す。書き込み完了情報300内の有効フラグ301が「0」である場合には、第1のプロセッサ101は、ブロック単位の入力データを第1のデータ領域131aに書き込む。そして、第1のプロセッサ101は、第1のコマンドFIFO132aのライトポインタWP1に対応するアドレスに、「1」の有効フラグ301を含む書き込み完了情報300を書き込み、ライトポインタWP1をインクリメントする。
図6(A)は、有効フラグ301がすべて「0」である第1のコマンドFIFO132aを示す図である。有効フラグ301がすべて「0」である場合には、第1のコマンドFIFO132aが空であり、第1のデータ領域131aに入力データが書き込まれていないことを示す。ステップS402において、まず、第2のプロセッサ102は、リードポインタRP1に対応するアドレスの書き込み完了情報300を読み出す。書き込み完了情報300内の有効フラグ301が「0」である場合、第1のデータ領域131aに入力データが書き込まれていないことを示す。その場合、第2のプロセッサ102は、有効フラグ301が「1」になるまで、上記のリードポインタRP1に対応するアドレスの書き込み完了情報300を読み出す処理を繰り返す。この場合、第2のプロセッサ102は、入力データの書き込みが完了していないので、入力データを読み出すことができない。
図6(B)に示すように、入力データの書き込みが完了すると、リードポインタRP1に対応するアドレスの書き込み完了情報300内の有効フラグ301が「1」になる。第2のプロセッサ102は、リードポインタRP1に対応するアドレスの書き込み完了情報300を読み出す。書き込み完了情報300内の有効フラグ301が「1」である場合には、第2のプロセッサ102は、ブロック単位の入力データを第1のデータ領域131aから読み出す。そして、第2のプロセッサ102は、第1のコマンドFIFO132aのリードポインタRP1に対応するアドレスに、「0」の有効フラグ301を含む書き込み完了情報300を書き込み、リードポインタRP1をインクリメントする。
図7は、図4のステップS401の書き込み処理とステップS402の読み出し処理の詳細を示すシーケンス図である。第1のプロセッサ101は、ブロックblk0のアクセス権731を有し、ステップS701及びS702の処理を行う。ステップS701において、第1のプロセッサ101は、ブロックblk0の入力データを第1のデータ領域131aに書き込む。次に、ステップS702において、第1のプロセッサ101は、ブロックblk0の入力データの書き込み完了情報300を第1のコマンドFIFO132aに書き込む。
第2のプロセッサ102は、ブロックblk0のアクセス権741を有し、ステップS703及びS704の処理を行う。ステップS703において、第2のプロセッサ102は、ブロックblk0の入力データの書き込み完了情報300を第1のコマンドFIFO132aから読み出す。次に、ステップS704において、第2のプロセッサ102は、ブロックblk0の入力データの書き込み完了情報300内の有効フラグ301が「1」である場合には、その書き込み完了情報300内のブロック開始アドレス302及びブロックサイズ303を基に、第1のデータ領域131aからブロックblk0の入力データを読み出す。
第1のプロセッサ101は、ブロックblk1のアクセス権732を有し、ステップS711及びS712の処理を行う。ステップS711において、第1のプロセッサ101は、ブロックblk1の入力データを第1のデータ領域131aに書き込む。次に、ステップS712において、第1のプロセッサ101は、ブロックblk1の入力データの書き込み完了情報300を第1のコマンドFIFO132aに書き込む。
第2のプロセッサ102は、ブロックblk1のアクセス権742を有し、ステップS713及びS714の処理を行う。ステップS713において、第2のプロセッサ102は、ブロックblk1の入力データの書き込み完了情報300を第1のコマンドFIFO132aから読み出す。次に、ステップS714において、第2のプロセッサ102は、ブロックblk1の入力データの書き込み完了情報300内の有効フラグ301が「1」である場合には、その書き込み完了情報300内のブロック開始アドレス302及びブロックサイズ303を基に、第1のデータ領域131aからブロックblk1の入力データを読み出す。
第1のプロセッサ101は、ブロックblk2のアクセス権733を有し、ステップS721及びS722の処理を行う。ステップS721において、第1のプロセッサ101は、ブロックblk2の入力データを第1のデータ領域131aに書き込む。次に、ステップS722において、第1のプロセッサ101は、ブロックblk2の入力データの書き込み完了情報300を第1のコマンドFIFO132aに書き込む。
第2のプロセッサ102は、ブロックblk2のアクセス権743を有し、ステップS723及びS724の処理を行う。ステップS723において、第2のプロセッサ102は、ブロックblk2の入力データの書き込み完了情報300を第1のコマンドFIFO132aから読み出す。次に、ステップS724において、第2のプロセッサ102は、ブロックblk2の入力データの書き込み完了情報300内の有効フラグ301が「1」である場合には、その書き込み完了情報300内のブロック開始アドレス302及びブロックサイズ303を基に、第1のデータ領域131aからブロックblk2の入力データを読み出す。
以上のように、第1のプロセッサ101の書き込み完了情報300の書き込み及び第2のプロセッサ102の書き込み完了情報300の読み出しにより、第1のプロセッサ101から第2のプロセッサ102にブロック単位でアクセス権を移動させる。図2に示すように、各ブロックの入力データは、第1のデータ領域131a内の異なるアドレスに記憶される。これにより、第2のプロセッサ102がブロックblk0の入力データを読み出している間に、第1のプロセッサ101は、ブロックblk1以降の入力データを書き込む、といったパイプライン動作が可能となる。
図8(A)は、第1のプロセッサ101のプロセッサコア111が発行する要求の順番を示す。図8(B)は、第1のプロセッサ101のバリア命令挿入部112が出力する要求及びバリア命令の順番を示す。図8(C)は、第2のプロセッサ102のプロセッサコア121が発行する要求の順番を示す。
図9は、図4のステップS401の第1のプロセッサ101のプロセッサコア111の書き込み処理の詳細を示すフローチャートである。ステップS901において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1を記憶し、第1のコマンドFIFO132aのライトポインタWP1を0に初期化する。次に、ステップS902において、プロセッサコア111は、処理すべきブロックの入力データが存在するまで待機し、ブロックの入力データが存在する場合には、ステップS903に処理を進める。ステップS903〜S909は、処理対象ブロックに関するループ処理である。
まず、ステップS903において、プロセッサコア111は、最初のブロックblk0を処理対象ブロックに設定する。次に、ステップS904において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1に対応する第1のコマンドFIFO132aのアドレスに記憶されているブロックblk0の入力データの書き込み完了情報300の読み出し要求801(図8(A))を発行する。
第1のプロセッサ101は、バス104を介して、読み出し要求801をメインメモリ103に出力する。メインメモリ103は、読み出し要求801に応答し、第1のコマンドFIFO132aのアドレスに記憶されているブロックblk0の入力データの書き込み完了情報300を読み出す。そして、メインメモリ103は、バス104を介して、その書き込み完了情報300を第1のプロセッサ101に出力する。プロセッサコア111は、その書き込み完了情報300を入力する。
次に、ステップS905において、プロセッサコア111は、その書き込み完了情報300内の有効フラグ301が「0」であるか否かを判定する。プロセッサコア111は、その有効フラグ301が「1」であると判定した場合には、第1のコマンドFIFO132aがフルであることを示すので、ステップS904に処理を戻す。プロセッサコア111は、その有効フラグ301が「0」であると判定した場合には、第1のコマンドFIFO132aがフルでないことを示すので、ステップS906に処理を進める。
ステップS906において、プロセッサコア111は、ブロックblk0の入力データの書き込み要求群802(図8(A))を発行する。ここで、第1のプロセッサ101は、キャッシュラインのデータ長の単位で、メインメモリ103に書き込みを行う。ブロックblk0の入力データの書き込み要求群802は、図8(A)に示すように、各々がキャッシュラインのデータ長の連続するアドレスの複数のデータ書き込み要求を含む。プロセッサコア111は、ブロックblk0の入力データの書き込み要求群802に対応し、ブロックblk0の入力データの書き込み開始アドレスを変数waddrに設定し、ブロックblk0の入力データのサイズを変数wsizeに設定する。
次に、ステップS907において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1に対応する第1のコマンドFIFO132aのアドレスに対して、ブロックblk0の入力データの書き込み完了情報300を書き込むための書き込み要求803(図8(A))を発行する。書き込み要求803は、書き込み要求群802の書き込み完了情報300を書き込むための書き込み完了書き込み要求である。書き込み完了情報300は、「1」の有効フラグ301と、ブロックblk0の入力データ(書き込み要求群802)の書き込み開始アドレスwaddrと、ブロックblk0の入力データ(書き込み要求群802)の書き込みデータサイズwsizeとを含む。この有効フラグ301は、書き込み要求群802の書き込み完了を示す情報である。
次に、ステップS908において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1をインクリメントする。次に、ステップS909において、プロセッサコア111は、次のブロックblk1を処理対象ブロックに設定し、ステップS903に処理を戻す。
次に、ステップS904において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1に対応する第1のコマンドFIFO132aのアドレスに記憶されているブロックblk1の入力データの書き込み完了情報300の読み出し要求804(図8(A))を発行する。
第1のプロセッサ101は、バス104を介して、読み出し要求804をメインメモリ103に出力する。メインメモリ103は、読み出し要求804に応答し、第1のコマンドFIFO132aのアドレスに記憶されているブロックblk1の入力データの書き込み完了情報300を読み出す。そして、メインメモリ103は、バス104を介して、その書き込み完了情報300を第1のプロセッサ101に出力する。プロセッサコア111は、その書き込み完了情報300を入力する。
次に、ステップS905において、プロセッサコア111は、その書き込み完了情報300内の有効フラグ301が「0」であると判定した場合には、第1のコマンドFIFO132aがフルでないことを示すので、ステップS906に処理を進める。
ステップS906において、プロセッサコア111は、ブロックblk1の入力データの書き込み要求群805(図8(A))を発行する。ブロックblk1の入力データの書き込み要求群805は、図8(A)に示すように、各々がキャッシュラインのデータ長の連続するアドレスの複数のデータ書き込み要求を含む。プロセッサコア111は、ブロックblk1の入力データの書き込み要求群805に対応し、ブロックblk1の入力データの書き込み開始アドレスを変数waddrに設定し、ブロックblk1の入力データのサイズを変数wsizeに設定する。
次に、ステップS907において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1に対応する第1のコマンドFIFO132aのアドレスに対して、ブロックblk1の入力データの書き込み完了情報300を書き込むための書き込み要求806(図8(A))を発行する。書き込み要求806は、書き込み要求群805の書き込み完了情報300を書き込むための書き込み完了書き込み要求である。書き込み完了情報300は、「1」の有効フラグ301と、ブロックblk1の入力データ(書き込み要求群805)の書き込み開始アドレスwaddrと、ブロックblk1の入力データ(書き込み要求群805)の書き込みデータサイズwsizeとを含む。この有効フラグ301は、書き込み要求群805の書き込み完了を示す情報である。
次に、ステップS908において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1をインクリメントする。次に、ステップS909において、プロセッサコア111は、次のブロックblk2を処理対象ブロックに設定し、ステップS903に処理を戻す。
次に、ステップS904において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1に対応する第1のコマンドFIFO132aのアドレスに記憶されているブロックblk2の入力データの書き込み完了情報300の読み出し要求807(図8(A))を発行する。
第1のプロセッサ101は、バス104を介して、読み出し要求807をメインメモリ103に出力する。メインメモリ103は、読み出し要求807に応答し、第1のコマンドFIFO132aのアドレスに記憶されているブロックblk2の入力データの書き込み完了情報300を読み出す。そして、メインメモリ103は、バス104を介して、その書き込み完了情報300を第1のプロセッサ101に出力する。プロセッサコア111は、その書き込み完了情報300を入力する。
次に、ステップS905において、プロセッサコア111は、その書き込み完了情報300内の有効フラグ301が「0」であると判定した場合には、第1のコマンドFIFO132aがフルでないことを示すので、ステップS906に処理を進める。
ステップS906において、プロセッサコア111は、ブロックblk2の入力データの書き込み要求群808(図8(A))を発行する。ブロックblk2の入力データの書き込み要求群808は、図8(A)に示すように、各々がキャッシュラインのデータ長の連続するアドレスの複数のデータ書き込み要求を含む。プロセッサコア111は、ブロックblk2の入力データの書き込み要求群808に対応し、ブロックblk2の入力データの書き込み開始アドレスを変数waddrに設定し、ブロックblk2の入力データのサイズを変数wsizeに設定する。
次に、ステップS907において、プロセッサコア111は、第1のコマンドFIFO132aのライトポインタWP1に対応する第1のコマンドFIFO132aのアドレスに対して、ブロックblk2の入力データの書き込み完了情報300を書き込むための書き込み要求809(図8(A))を発行する。書き込み要求809は、書き込み要求群808の書き込み完了情報300を書き込むための書き込み完了書き込み要求である。書き込み完了情報300は、「1」の有効フラグ301と、ブロックblk2の入力データ(書き込み要求群808)の書き込み開始アドレスwaddrと、ブロックblk2の入力データ(書き込み要求群808)の書き込みデータサイズwsizeとを含む。この有効フラグ301は、書き込み要求群808の書き込み完了を示す情報である。以下、同様に、プロセッサコア111は、ブロックblk3以降の処理を繰り返す。
図1において、バリア命令挿入部112がない場合を説明する。その場合、メモリコントローラ113は、プロセッサコア111が発行した要求をアウトオブオーダ実行で出力する。すなわち、メモリコントローラ113は、プロセッサコア111が発行した要求の順番で要求を出力するのではなく、プロセッサコア111が発行した要求をデータ依存関係等による最適な順番に入れ替えて出力する。その結果、メモリコントローラ113は、ブロックblk0の書き込み要求群802内のすべての書き込み要求を出力する前に、書き込み完了情報300の書き込み要求803を出力する可能性がある。第2のプロセッサ102は、書き込み完了情報300が書き込まれたことを確認すると、読み出し処理を開始する。しかし、この時点では、ブロックblk0の入力データのすべての書き込みが完了していない場合がある。その場合、第2のプロセッサ102は、書き込み前の誤ったブロックblk0の入力データを読み出すことになってしまう。本実施形態では、この課題を解決するために、バリア命令挿入部112及び122を設ける。
図10(A)は、図4のステップS401の第1のプロセッサ101のバリア命令挿入部112の要求出力処理の詳細を示すフローチャートである。ステップS1001において、バリア命令挿入部112は、プロセッサコア111が発行したメインメモリ103への要求を入力するまで待機し、要求を入力した場合にはステップS1002に処理を進める。
ステップS1002において、バリア命令挿入部112は、入力した要求が書き込み要求であり、かつその書き込み要求の書き込みアドレスがアドレスADR_CMD以上のアドレスであるか否かを判定する。アドレスADR_CMDは、図2に示すように、コマンドFIFO132の先頭アドレスである。アドレスADR_CMD以上のアドレスへの書き込み要求は、コマンドFIFO132への書き込み要求である。アドレスADR_CMDより小さいアドレスへの書き込み要求は、データ領域131への書き込み要求である。バリア命令挿入部112は、入力した読み出し要求801(図8(A))が書き込み要求ではないので、ステップS1004に処理を進める。ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した読み出し要求801をメモリコントローラ113に出力し、ステップS1001に処理を戻す。
次に、ステップS1002において、バリア命令挿入部112は、入力した書き込み要求群802(図8(A))内の書き込み要求の書き込みアドレスがアドレスADR_CMDより小さいので、ステップS1004に処理を進める。書き込み要求群802内の書き込み要求は、第1のデータ領域131aのアドレスへの書き込み要求である。ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した書き込み要求群802内の書き込み要求をメモリコントローラ113に出力し、ステップS1001に処理を戻す。
次に、ステップS1002において、バリア命令挿入部112は、入力した書き込み要求803(図8(A))が書き込み要求であり、かつ書き込み要求803の書き込みアドレスがアドレスADR_CMD以上であるので、ステップS1003に処理を進める。書き込み要求803は、第1のコマンドFIFO132aのアドレスへの書き込み要求である。ステップS1003において、バリア命令挿入部112は、図8(B)に示すように、バリア命令811をメモリコントローラ113に出力する。次に、ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した書き込み要求803をメモリコントローラ113に出力し、ステップS1001に処理を戻す。以上のように、バリア命令挿入部112は、書き込み完了情報300の書き込み要求803の直前に、バリア命令811を挿入する。
次に、ステップS1002において、バリア命令挿入部112は、入力した読み出し要求804(図8(A))が書き込み要求ではないので、ステップS1004に処理を進める。ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した読み出し要求804をメモリコントローラ113に出力し、ステップS1001に処理を戻す。
次に、ステップS1002において、バリア命令挿入部112は、入力した書き込み要求群805(図8(A))内の書き込み要求の書き込みアドレスがアドレスADR_CMDより小さいので、ステップS1004に処理を進める。ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した書き込み要求群805内の書き込み要求をメモリコントローラ113に出力し、ステップS1001に処理を戻す。
次に、ステップS1002において、バリア命令挿入部112は、入力した書き込み要求806(図8(A))が書き込み要求であり、かつ書き込み要求806の書き込みアドレスがアドレスADR_CMD以上であるので、ステップS1003に処理を進める。ステップS1003において、バリア命令挿入部112は、図8(B)に示すように、バリア命令812をメモリコントローラ113に出力する。次に、ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した書き込み要求806をメモリコントローラ113に出力し、ステップS1001に処理を戻す。以上のように、バリア命令挿入部112は、書き込み完了情報300の書き込み要求806の直前に、バリア命令812を挿入する。
次に、ステップS1002において、バリア命令挿入部112は、入力した読み出し要求807(図8(A))が書き込み要求ではないので、ステップS1004に処理を進める。ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した読み出し要求807をメモリコントローラ113に出力し、ステップS1001に処理を戻す。
次に、ステップS1002において、バリア命令挿入部112は、入力した書き込み要求群808(図8(A))内の書き込み要求の書き込みアドレスがアドレスADR_CMDより小さいので、ステップS1004に処理を進める。ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した書き込み要求群808内の書き込み要求をメモリコントローラ113に出力し、ステップS1001に処理を戻す。
次に、ステップS1002において、バリア命令挿入部112は、入力した書き込み要求809(図8(A))が書き込み要求であり、かつ書き込み要求809の書き込みアドレスがアドレスADR_CMD以上であるので、ステップS1003に処理を進める。ステップS1003において、バリア命令挿入部112は、図8(B)に示すように、バリア命令813をメモリコントローラ113に出力する。次に、ステップS1004において、バリア命令挿入部112は、図8(B)に示すように、プロセッサコア111から入力した書き込み要求809をメモリコントローラ113に出力し、ステップS1001に処理を戻す。以上のように、バリア命令挿入部112は、書き込み完了情報300の書き込み要求809の直前に、バリア命令813を挿入する。
図10(B)は、図4のステップS401の第1のプロセッサ101のバリア命令挿入部112の応答入力処理の詳細を示すフローチャートである。ステップS1011において、バリア命令挿入部112は、メモリコントローラ113から応答を入力するまで待機し、応答を入力した場合にはステップS1012に処理を進める。応答は、例えば、読み出し要求801,804,807に応答して読み出された書き込み完了情報300である。ステップS1012において、バリア命令挿入部112は、メモリコントローラ113から入力した応答をそのままプロセッサコア111に出力し、ステップS1011に処理を戻す。
図11(A)は、図4のステップS401の第1のプロセッサ101のメモリコントローラ113の要求出力処理の詳細を示すフローチャートである。ステップS1101において、メモリコントローラ113は、バリア命令挿入部112から要求を入力するまで待機し、要求を入力した場合にはステップS1102に処理を進める。ステップS1102において、メモリコントローラ113は、入力した要求がバリア命令であるか否かを判定し、入力した要求がバリア命令であると判定した場合には、ステップS1103に処理を進め、入力した要求がバリア命令でないと判定した場合には、ステップS1104に処理を進める。ステップS1103において、メモリコントローラ113は、バス104を介して、メインメモリ103に出力されていない要求がすべて出力するまで待機し、バリア命令の前の要求がすべて出力された場合には、ステップS1104に処理を進める。ステップS1104では、メモリコントローラ113は、バッファ104を介して、バリア命令の前の要求をアウトオブオーダ実行で出力し、ステップS1101に処理を戻す。すなわち、メモリコントローラ113は、バリア命令挿入部112から入力したバリア命令の前の要求を最適な順番に入れ替えて出力する。
例えば、図8(B)において、メモリコントローラ113は、まず、読み出し要求801を出力する。メインメモリ103は、読み出し要求801に応答して、ブロックblk0の入力データの書き込み完了情報300を読み出す。プロセッサコア111は、その書き込み完了情報300内の有効フラグ301が「0」である場合に、書き込み要求群802を発行する。メモリコントローラ113は、バス104を介して、バリア命令811の前の書き込み要求群802に含まれる複数の書き込み要求をアウトオブオーダ実行でメインメモリ103に出力する。そして、メモリコントローラ113は、バリア命令811の前の書き込み要求群802に含まれる複数の書き込み要求をすべてアウトオブオーダ実行で出力した後に、バリア命令811の後の書き込み要求803及び読み出し要求804を出力する。これにより、メインメモリ103は、書き込み要求群802に対応するブロックblk0の入力データを第1のデータ領域131aに書き込み、その後、書き込み要求803に対応するブロックblk0の入力データの書き込み完了情報300を第1のコマンドFIFO132aに書き込む。第2のプロセッサ102は、第1のコマンドFIFO132aから読み出したブロックblk0の入力データの書き込み完了情報300内の有効フラグ301が「1」である場合には、既に、第1のデータ領域131aにブロックblk0の入力データの書き込みが完了しているので、正しいブロックblk0の入力データを読み出すことができる。
次に、メインメモリ103は、読み出し要求804に応答して、ブロックblk1の入力データの書き込み完了情報300を読み出す。プロセッサコア111は、その書き込み完了情報300内の有効フラグ301が「0」である場合に、書き込み要求群805を発行する。メモリコントローラ113は、バス104を介して、バリア命令812の前の書き込み要求群805に含まれる複数の書き込み要求をアウトオブオーダ実行でメインメモリ103に出力する。そして、メモリコントローラ113は、バリア命令812の前の書き込み要求群805に含まれる複数の書き込み要求をすべてアウトオブオーダ実行で出力した後に、バリア命令812の後の書き込み要求806及び読み出し要求807を出力する。これにより、メインメモリ103は、書き込み要求群805に対応するブロックblk1の入力データを第1のデータ領域131aに書き込み、その後、書き込み要求806に対応するブロックblk1の入力データの書き込み完了情報300を第1のコマンドFIFO132aに書き込む。第2のプロセッサ102は、第1のコマンドFIFO132aから読み出したブロックblk1の入力データの書き込み完了情報300内の有効フラグ301が「1」である場合には、既に、第1のデータ領域131aにブロックblk1の入力データの書き込みが完了しているので、正しいブロックblk1の入力データを読み出すことができる。
次に、メインメモリ103は、読み出し要求807に応答して、ブロックblk2の入力データの書き込み完了情報300を読み出す。プロセッサコア111は、その書き込み完了情報300内の有効フラグ301が「0」である場合に、書き込み要求群808を発行する。メモリコントローラ113は、バス104を介して、バリア命令813の前の書き込み要求群808に含まれる複数の書き込み要求をアウトオブオーダ実行でメインメモリ103に出力する。そして、メモリコントローラ113は、バリア命令813の前の書き込み要求群808に含まれる複数の書き込み要求をすべてアウトオブオーダ実行で出力した後に、バリア命令813の後の書き込み要求809を出力する。これにより、メインメモリ103は、書き込み要求群808に対応するブロックblk2の入力データを第1のデータ領域131aに書き込み、その後、書き込み要求809に対応するブロックblk2の入力データの書き込み完了情報300を第1のコマンドFIFO132aに書き込む。第2のプロセッサ102は、第1のコマンドFIFO132aから読み出したブロックblk2の入力データの書き込み完了情報300内の有効フラグ301が「1」である場合には、既に、第1のデータ領域131aにブロックblk2の入力データの書き込みが完了しているので、正しいブロックblk2の入力データを読み出すことができる。
図11(B)は、図4のステップS401の第1のプロセッサ101のメモリコントローラ113の応答入力処理の詳細を示すフローチャートである。ステップS1111において、メモリコントローラ113は、バス104を介してメインメモリ103から応答を入力するまで待機し、応答を入力した場合にはステップS1112に処理を進める。応答は、例えば、読み出し要求801,804,807に応答して読み出された書き込み完了情報300である。ステップS1112において、メモリコントローラ113は、バス104を介してメインメモリ103から入力した応答をそのままバリア命令挿入部112に出力し、ステップS1111に処理を戻す。
図12は、図4のステップS402の第2のプロセッサ102のプロセッサコア121の読み出し処理の詳細を示すフローチャートである。ステップS1201において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1を記憶し、第1のコマンドFIFO132aのリードポインタRP1を0に初期化する。次に、ステップS1202において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1に対応する第1のコマンドFIFO132aのアドレスに記憶されているブロックblk0の入力データの書き込み完了情報300の読み出し要求821(図8(C))を発行する。
第2のプロセッサ102は、バス104を介して、読み出し要求821をメインメモリ103に出力する。メインメモリ103は、読み出し要求821に応答し、第1のコマンドFIFO132aのアドレスに記憶されているブロックblk0の入力データの書き込み完了情報300を読み出す。そして、メインメモリ103は、バス104を介して、その書き込み完了情報300を第2のプロセッサ102に出力する。プロセッサコア121は、その書き込み完了情報300を入力する。
次に、ステップS1203において、プロセッサコア121は、その書き込み完了情報300内の有効フラグ301が「1」であるか否かを判定する。プロセッサコア111は、その有効フラグ301が「0」であると判定した場合には、第1のデータ領域132aにブロックblk0の入力データが未だ書き込まれていないことを示すので、ステップS1202に処理を戻す。
次に、ステップS1202において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1に対応する第1のコマンドFIFO132aのアドレスに記憶されているブロックblk0の入力データの書き込み完了情報300の読み出し要求822(図8(C))を発行する。次に、ステップS1203において、プロセッサコア121は、読み出された書き込み完了情報300内の有効フラグ301が「0」であると判定した場合には、第1のデータ領域132aにブロックblk0の入力データが未だ書き込まれていないことを示すので、ステップS1202に処理を戻す。
次に、ステップS1202において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1に対応する第1のコマンドFIFO132aのアドレスに記憶されているブロックblk0の入力データの書き込み完了情報300の読み出し要求823(図8(C))を発行する。次に、ステップS1203において、プロセッサコア121は、読み出された書き込み完了情報300内の有効フラグ301が「1」であると判定した場合には、第1のデータ領域132aにブロックblk0の入力データが書き込まれたことを示すので、ステップS1204に処理を進める。
ステップS1204において、プロセッサコア121は、読み出したブロックblk0の入力データの書き込み完了情報300内のブロック開始アドレス302を読み出し開始アドレスraddrに設定し、その書き込み完了情報300内のブロックサイズ303をブロックサイズrsizeに設定する。
次に、ステップS1205において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1に対応する第1のコマンドFIFO132aのアドレスに対して、全ビットが0であるブロックblk0の入力データの書き込み完了情報300を書き込むための書き込み要求824(図8(C))を発行する。書き込み完了情報300は、「0」の有効フラグ301を含む。なお、プロセッサコア121は、有効フラグ301が「0」である書き込み完了情報300を書き込むための書き込み要求824を発行すればよい。
次に、ステップS1206において、プロセッサコア121は、読み出し開始アドレスraddr及びブロックサイズrsizeを基に、第1のデータ領域131aからブロックblk0の入力データを読み出すための読み出し要求群825(図8(C))を発行する。ここで、第2のプロセッサ102は、キャッシュラインのデータ長の単位で、メインメモリ103から読み出しを行う。ブロックblk0の入力データの読み出し要求群825は、図8(C)に示すように、各々がキャッシュラインのデータ長の連続するアドレスの複数のデータ読み出し要求を含む。
次に、ステップS1207において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1をインクリメントし、ステップS1202に処理を戻す。
次に、ステップS1202において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1に対応する第1のコマンドFIFO132aのアドレスに記憶されているブロックblk1の入力データの書き込み完了情報300の読み出し要求826(図8(C))を発行する。次に、ステップS1203において、プロセッサコア121は、読み出された書き込み完了情報300内の有効フラグ301が「1」であると判定した場合には、第1のデータ領域132aにブロックblk1の入力データが書き込まれたことを示すので、ステップS1204に処理を進める。ステップS1204において、プロセッサコア121は、読み出したブロックblk1の入力データの書き込み完了情報300内のブロック開始アドレス302を読み出し開始アドレスraddrに設定し、その書き込み完了情報300内のブロックサイズ303をブロックサイズrsizeに設定する。次に、ステップS1205において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1に対応する第1のコマンドFIFO132aのアドレスに対して、全ビットが0であるブロックblk0の入力データの書き込み完了情報300を書き込むための書き込み要求827(図8(C))を発行する。次に、ステップS1206において、プロセッサコア121は、読み出し開始アドレスraddr及びブロックサイズrsizeを基に、第1のデータ領域131aからブロックblk1の入力データを読み出すための読み出し要求群828(図8(C))を発行する。ブロックblk1の入力データの読み出し要求群828は、図8(C)に示すように、各々がキャッシュラインのデータ長の連続するアドレスの複数のデータ読み出し要求を含む。次に、ステップS1207において、プロセッサコア121は、第1のコマンドFIFO132aのリードポインタRP1をインクリメントし、ステップS1202に処理を戻す。以下、同様に、プロセッサコア121は、ブロックblk2以降の読み出し処理を行う。
以上のように、プロセッサコア121は、第1のコマンドFIFO132aの読み出し要求821を発行し、読み出し要求821に応答して入力した書き込み完了情報300が書き込み完了を示さない情報(有効フラグ301が「0」)を含む場合には、第1のコマンドFIFO132aの読み出し要求822及び823を発行する処理を繰り返す。プロセッサコア121は、読み出し要求823に応答して入力した書き込み完了情報300が書き込み完了を示す情報(有効フラグ301が「1」)を含む場合には、書き込み完了情報300に含まれる書き込み開始アドレス302と書き込みデータサイズ303のデータの読み出し要求群825を発行する。プロセッサコア121は、読み出し要求823に応答して入力した書き込み完了情報300が書き込み完了を示す情報(有効フラグ301が「1」)を含む場合には、書き込み完了情報300を書き込み完了を示さない情報(有効フラグ301が「0」)に変更した書き込み完了情報300の書き込み要求824を発行する。
なお、図4のステップS402において、第2のプロセッサ102のバリア命令挿入部122は、図10(A)と同様に、要求出力処理を行い、図10(B)と同様に、応答入力処理を行う。また、図4のステップS402において、第2のプロセッサ102のメモリコントローラ123は、図11(A)と同様に、要求出力処理を行い、図11(B)と同様に、応答入力処理を行う。
また、図4のステップS404において、第2のプロセッサ102は、ステップS401の第1のプロセッサ101の処理と同様に、書き込み処理を行う。また、図4のステップS405において、第1のプロセッサ101は、ステップS402の第2のプロセッサ102の処理と同様に、読み出し処理を行う。
また、図1において、情報処理システム100は、第2のプロセッサ102を削除することができる。その場合、図4のステップS401において、第1のプロセッサ101が入力データの書き込み処理を行い、ステップS402において、第1のプロセッサ101がその入力データの読み出し処理を行う。ステップS401〜S405において、第1のプロセッサ101が、第2のプロセッサ102の処理をすべて行う。
データ領域131及びコマンドFIFO132は、それぞれ、100Mバイト又は1Gバイト等の固定容量にすることができる。また、第1のデータ領域131a及び第2のデータ領域131bは、それぞれ、10ブロック又は100ブロック等の固定ブロック数を記憶することができる。また、情報処理システム100は、コマンドFIFO132の空き時間に応じて、データ領域131及びコマンドFIFO132の容量を動的に変更してもよい。
仮に、バリア命令挿入部112が、メモリアクセス履歴をバッファリングし、メモリアクセス履歴を基にバリア命令を挿入すると、バリア命令挿入の条件が複雑になり、消費電力が増加し、レイテンシが悪化する。本実施形態によれば、バリア命令挿入部112は、書き込み完了情報300の書き込み要求803,806,809の直前にバリア命令811〜813を挿入するので、消費電力が低下し、レイテンシが改善する。
(第2の実施形態)
図13は、図10(A)に対応し、第2の実施形態によるバリア命令挿入部112の要求出力処理の詳細を示すフローチャートである。以下、本実施形態の情報処理システム100が第1の実施形態の情報処理システム100と異なる点を説明する。バリア命令挿入部112は、図10(A)の代わりに、図13の処理を行う。本実施形態では、全ブロックの入力データのサイズが同じである。すなわち、ブロックblk0の入力データのサイズとブロックblk1の入力データのサイズは、相互に同じである。その場合、図8(A)において、書き込み要求群802内の複数の書き込み要求の数は、ブロックblk0の入力データのサイズをメモリキャッシュのデータ長で割った数であり、要求数TH1である。書き込み要求群805内の複数の書き込み要求の数は、ブロックblk1の入力データのサイズをメモリキャッシュのデータ長で割った数であり、要求数TH1である。書き込み要求群808内の複数の書き込み要求の数は、ブロックblk2の入力データのサイズをメモリキャッシュのデータ長で割った数であり、要求数TH1である。すべての書き込み要求群802,805,808内の書き込み要求の数は、それぞれ、同一の要求数TH1である。以下、バリア命令挿入部112の処理を例に説明するが、バリア命令挿入部122の処理もバリア命令挿入部112の処理と同様である。
ステップS1301において、バリア命令挿入部112は、カウンタ値cntを1に初期化する。次に、ステップS1302において、バリア命令挿入部112は、プロセッサコア111が発行したメインメモリ103への要求を入力するまで待機し、要求を入力した場合にはステップS1303に処理を進める。
ステップS1303において、バリア命令挿入部112は、入力した要求が書き込み要求であるか否かを判定する。バリア命令挿入部112は、入力した要求が書き込み要求であると判定した場合には、ステップS1304に処理を進め、入力した要求が書き込み要求でないと判定した場合には、ステップS1305に処理を進める。ステップS1304において、バリア命令挿入部112は、カウンタ値cntをインクリメントし、ステップS1305に処理を進める。ステップS1305において、バリア命令挿入部112は、プロセッサコア111から入力した要求をメモリコントローラ113に出力する。
次に、ステップS1306において、バリア命令挿入部112は、カウンタ値cntがTH+1と同じか否かを判定する。THは、各書き込み要求群802,805,808内の書き込み要求の数である。バリア命令挿入部112は、カウンタ値cntがTH+1と同じであると判定した場合には、ステップS1307に処理を進め、カウンタ値cntがTH+1と同じでないと判定した場合には、ステップS1302に処理を戻す。ステップS1307において、バリア命令挿入部112は、バリア命令をメモリコントローラ113に出力し、カウンタ値cntを0にし、ステップS1302に処理を戻す。
図8(A)及び(B)の場合、読み出し要求801が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントせず、読み出し要求801を出力する。次に、書き込み要求群802内の複数の書き込み要求が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントし、書き込み要求群802内の複数の書き込み要求を出力する。カウンタ値cntがTH+1と同じになり、バリア命令挿入部112は、バリア命令811を出力し、カウンタ値cntを0にする。
次に、書き込み要求803が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントし、書き込み要求803を出力する。次に、読み出し要求804が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントせず、読み出し要求804を出力する。次に、書き込み要求群805内の複数の書き込み要求が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントし、書き込み要求群805内の複数の書き込み要求を出力する。カウンタ値cntがTH+1と同じになり、バリア命令挿入部112は、バリア命令812を出力し、カウンタ値cntを0にする。
次に、書き込み要求806が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントし、書き込み要求806を出力する。次に、読み出し要求807が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントせず、読み出し要求807を出力する。次に、書き込み要求群808内の複数の書き込み要求が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントし、書き込み要求群808内の複数の書き込み要求を出力する。カウンタ値cntがTH+1と同じになり、バリア命令挿入部112は、バリア命令813を出力し、カウンタ値cntを0にする。次に、書き込み要求809が発行されると、バリア命令挿入部112は、カウンタ値cntをインクリメントし、書き込み要求809を出力する。
本実施形態によれば、バリア命令挿入部112は、プロセッサコア111が発行した書き込み要求の数をカウンタ値cntとしてカウントし、カウントした書き込み要求の数に応じて、バリア命令811〜813を挿入する。
なお、第1のプロセッサ101及び第2のプロセッサ102は、上記の図9〜図13の処理をハードウェアにより処理してもよいし、ソフトウェアにより処理してもよい。第1のプロセッサ101及び第2のプロセッサ102は、それぞれ、メインメモリ103に記憶されているプログラムを実行することにより、図9〜図13の処理をすることができる。
第1及び第2の実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
100 情報処理システム
101 第1のプロセッサ
102 第2のプロセッサ
103 メインメモリ
104 バス
111,121 プロセッサコア
112,122 バリア命令挿入部
113,123 メモリコントローラ
131 データ領域
132 コマンドFIFO

Claims (17)

  1. 複数のデータ書き込み要求を含む第1の書き込み要求群を発行し、前記第1の書き込み要求群の後に、前記第1の書き込み要求群の書き込み完了情報の第1の書き込み完了書き込み要求を発行するコアと、
    前記コアが発行する前記第1の書き込み完了書き込み要求の直前に、第1のバリア命令を挿入するバリア命令挿入部と、
    前記バリア命令挿入部の挿入後、前記第1のバリア命令の前の前記第1の書き込み要求群に含まれる複数のデータ書き込み要求の順番を入れ替えて出力した後に、前記第1のバリア命令の後の前記第1の書き込み完了書き込み要求を出力するメモリコントローラと
    を有することを特徴とする情報処理装置。
  2. 前記第1の書き込み要求群は、連続するアドレスの複数のデータ書き込み要求を含むことを特徴とする請求項1に記載の情報処理装置。
  3. 第1の書き込み完了書き込み要求は、前記第1の書き込み要求群の書き込み完了を示す情報と、前記第1の書き込み要求群の書き込み開始アドレスと、前記第1の書き込み要求群の書き込みデータサイズとを含む書き込み完了情報の書き込み要求であることを特徴とする請求項2に記載の情報処理装置。
  4. 前記複数のデータ書き込み要求は、データ領域のアドレスへの書き込み要求であり、
    前記第1の書き込み完了書き込み要求は、書き込み完了情報領域のアドレスへの書き込み要求であり、
    前記バリア命令挿入部は、前記コアが発行した要求が前記書き込み完了情報領域のアドレスへの書き込み要求である場合には、前記コアが発行した要求が前記第1の書き込み完了書き込み要求であると判定することを特徴とする請求項1〜3のいずれか1項に記載の情報処理装置。
  5. 前記バリア命令挿入部は、前記コアが発行した書き込み要求の数をカウントし、前記カウントした書き込み要求の数に応じて、前記第1のバリア命令を挿入することを特徴とする請求項1〜3のいずれか1項に記載の情報処理装置。
  6. 前記複数のデータ書き込み要求は、データ領域のアドレスへの書き込み要求であり、
    前記第1の書き込み完了書き込み要求は、書き込み完了情報領域のアドレスへの書き込み要求であり、
    前記コアは、前記書き込み完了情報領域の読み出し要求を発行し、前記読み出し要求に応答して入力した書き込み完了情報が書き込み完了を示さない情報を含む場合には、前記書き込み完了情報領域の読み出し要求を発行する処理を繰り返し、前記読み出し要求に応答して入力した書き込み完了情報が書き込み完了を示す情報を含む場合には、前記書き込み完了情報に含まれる前記書き込み開始アドレスと前記書き込みデータサイズのデータの読み出し要求を発行することを特徴とする請求項3に記載の情報処理装置。
  7. 前記コアは、前記読み出し要求に応答して入力した書き込み完了情報が書き込み完了を示す情報を含む場合には、前記書き込み完了情報を書き込み完了を示さない情報に変更した書き込み完了情報の書き込み要求を発行することを特徴とする請求項6に記載の情報処理装置。
  8. 前記コアは、前記第1の書き込み完了書き込み要求の後に、複数のデータ書き込み要求を含む第2の書き込み要求群を発行し、前記第2の書き込み要求群の後に、前記第2の書
    き込み要求群の書き込み完了情報の第2の書き込み完了書き込み要求を発行し、
    前記バリア命令挿入部は、前記コアが発行する前記第2の書き込み完了書き込み要求の直前に、第2のバリア命令を挿入するバリア命令挿入部と、
    前記メモリコントローラは、前記第2のバリア命令の前の前記第2の書き込み要求群に含まれる複数のデータ書き込み要求の順番を入れ替えて出力した後に、前記第2のバリア命令の後の前記第2の書き込み完了書き込み要求を出力することを特徴とする請求項1〜7のいずれか1項に記載の情報処理装置。
  9. 第1の情報処理装置と、
    メモリとを有し、
    前記第1の情報処理装置は、
    複数のデータ書き込み要求を含む第1の書き込み要求群を発行し、前記第1の書き込み要求群の後に、前記第1の書き込み要求群の書き込み完了情報の第1の書き込み完了書き込み要求を発行するコアと、
    前記コアが発行する前記第1の書き込み完了書き込み要求の直前に、第1のバリア命令を挿入するバリア命令挿入部と、
    前記バリア命令挿入部の挿入後、前記第1のバリア命令の前の前記第1の書き込み要求群に含まれる複数のデータ書き込み要求の順番を入れ替えて前記メモリに出力した後に、前記第1のバリア命令の後の前記第1の書き込み完了書き込み要求を前記メモリに出力するメモリコントローラとを有し、
    前記メモリは、
    前記データ書き込み要求に応じてデータを書き込みデータ領域と、
    前記第1の書き込み完了書き込み要求に応じて前記書き込み完了情報を書き込む書き込み完了情報領域とを有することを特徴とする情報処理システム。
  10. 前記第1の書き込み要求群は、連続するアドレスの複数のデータ書き込み要求を含むことを特徴とする請求項9に記載の情報処理システム。
  11. 第1の書き込み完了書き込み要求は、前記第1の書き込み要求群の書き込み完了を示す情報と、前記第1の書き込み要求群の書き込み開始アドレスと、前記第1の書き込み要求群の書き込みデータサイズとを含む書き込み完了情報の書き込み要求であることを特徴とする請求項10に記載の情報処理システム。
  12. 前記複数のデータ書き込み要求は、前記データ領域のアドレスへの書き込み要求であり、
    前記第1の書き込み完了書き込み要求は、前記書き込み完了情報領域のアドレスへの書き込み要求であり、
    前記バリア命令挿入部は、前記コアが発行した要求が前記書き込み完了情報領域のアドレスへの書き込み要求である場合には、前記コアが発行した要求が第1の書き込み完了書き込み要求であると判定することを特徴とする請求項9〜11のいずれか1項に記載の情報処理システム。
  13. 前記バリア命令挿入部は、前記コアが発行した書き込み要求の数をカウントし、前記カウントした書き込み要求の数に応じて、前記第1のバリア命令を挿入することを特徴とする請求項9〜11のいずれか1項に記載の情報処理システム。
  14. 前記複数のデータ書き込み要求は、データ領域のアドレスへの書き込み要求であり、
    前記第1の書き込み完了書き込み要求は、書き込み完了情報領域のアドレスへの書き込み要求であり、
    前記情報処理システムは、さらに、前記書き込み完了情報領域の読み出し要求を前記メモリに出力し、前記読み出し要求に応答して入力した書き込み完了情報が書き込み完了を示さない情報を含む場合には、前記書き込み完了情報領域の読み出し要求を出力する処理を繰り返し、前記読み出し要求に応答して入力した書き込み完了情報が書き込み完了を示す情報を含む場合には、前記書き込み完了情報に含まれる前記書き込み開始アドレスと前記書き込みデータサイズのデータの読み出し要求を前記メモリに出力する第2の情報処理装置を有することを特徴とする請求項11に記載の情報処理システム。
  15. 前記第2の情報処理装置は、前記読み出し要求に応答して入力した書き込み完了情報が書き込み完了を示す情報を含む場合には、前記書き込み完了情報を書き込み完了を示さない情報に変更した書き込み完了情報の書き込み要求を出力することを特徴とする請求項14に記載の情報処理システム。
  16. 前記コアは、前記第1の書き込み完了書き込み要求の後に、複数のデータ書き込み要求を含む第2の書き込み要求群を発行し、前記第2の書き込み要求群の後に、前記第2の書き込み要求群の書き込み完了情報の第2の書き込み完了書き込み要求を発行し、
    前記バリア命令挿入部は、前記コアが発行する前記第2の書き込み完了書き込み要求の直前に、第2のバリア命令を挿入し、
    前記メモリコントローラは、前記第2のバリア命令の前の前記第2の書き込み要求群に含まれる複数のデータ書き込み要求の順番を入れ替えて出力した後に、前記第2のバリア命令の後の前記第2の書き込み完了書き込み要求を出力することを特徴とする請求項9〜15のいずれか1項に記載の情報処理システム。
  17. 複数のデータ書き込み要求を含む第1の書き込み要求群を発行し、前記第1の書き込み要求群の後に、前記第1の書き込み要求群の書き込み完了情報の第1の書き込み完了書き込み要求を発行し、
    前記第1の書き込み完了書き込み要求の直前に、第1のバリア命令を挿入し、
    前記第1のバリア命令の前の前記第1の書き込み要求群に含まれる複数のデータ書き込み要求の順番を入れ替えて出力した後に、前記第1のバリア命令の後の前記第1の書き込み完了書き込み要求を出力する、
    処理をコンピュータに実行させるためのプログラム。
JP2017135379A 2017-07-11 2017-07-11 情報処理装置、情報処理システム及びプログラム Active JP6944107B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017135379A JP6944107B2 (ja) 2017-07-11 2017-07-11 情報処理装置、情報処理システム及びプログラム
US16/023,689 US10817183B2 (en) 2017-07-11 2018-06-29 Information processing apparatus and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017135379A JP6944107B2 (ja) 2017-07-11 2017-07-11 情報処理装置、情報処理システム及びプログラム

Publications (2)

Publication Number Publication Date
JP2019016328A JP2019016328A (ja) 2019-01-31
JP6944107B2 true JP6944107B2 (ja) 2021-10-06

Family

ID=64999648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017135379A Active JP6944107B2 (ja) 2017-07-11 2017-07-11 情報処理装置、情報処理システム及びプログラム

Country Status (2)

Country Link
US (1) US10817183B2 (ja)
JP (1) JP6944107B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11231934B2 (en) * 2020-03-05 2022-01-25 Samsung Electronics Co., Ltd. System and method for controlling the order of instruction execution by a target device
US20220317926A1 (en) * 2021-03-31 2022-10-06 Advanced Micro Devices, Inc. Approach for enforcing ordering between memory-centric and core-centric memory operations
CN114281245A (zh) 2021-11-26 2022-04-05 三星(中国)半导体有限公司 同步写方法及装置、存储系统、电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2778913B2 (ja) 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
JP3858492B2 (ja) 1998-12-28 2006-12-13 株式会社日立製作所 マルチプロセッサシステム
US6801927B1 (en) * 1999-09-24 2004-10-05 Akamba Corporation Network adaptor card with reverse proxy and cache and method implemented therewith
US6438651B1 (en) * 1999-11-01 2002-08-20 International Business Machines Corporation Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer
US20040019729A1 (en) * 2002-07-29 2004-01-29 Kelley Richard A. Buffer management and transaction control for transition bridges
US7089364B2 (en) * 2004-04-15 2006-08-08 International Business Machines Corporation System and method to stall dispatch of gathered store operations in a store queue using a timer
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
JP4476267B2 (ja) * 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
US8352682B2 (en) * 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
GB2474446A (en) * 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US9122401B2 (en) * 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US10185498B2 (en) * 2016-06-16 2019-01-22 Advanced Micro Devices, Inc. Write buffer design for high-latency memories
US10228884B2 (en) * 2017-03-08 2019-03-12 Hewlett Packard Enterprise Development Lp Issuing write requests to a fabric
TWI629590B (zh) * 2017-04-14 2018-07-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US10649829B2 (en) * 2017-07-10 2020-05-12 Hewlett Packard Enterprise Development Lp Tracking errors associated with memory access operations

Also Published As

Publication number Publication date
US10817183B2 (en) 2020-10-27
US20190018599A1 (en) 2019-01-17
JP2019016328A (ja) 2019-01-31

Similar Documents

Publication Publication Date Title
US11500586B2 (en) Data read-write method and apparatus and circular queue
JP5461533B2 (ja) ローカル及びグローバルのデータ共有
JP6944107B2 (ja) 情報処理装置、情報処理システム及びプログラム
TWI603194B (zh) 資料儲存裝置以及其資料存取方法
US11294675B2 (en) Writing prefetched data into intra-core caches of cores identified by prefetching instructions
US20180121388A1 (en) Symmetric block sparse matrix-vector multiplication
KR20170118583A (ko) 완전삭제-인식 디램 컨트롤러
CN110134439A (zh) 无锁化的数据结构构建方法和写入数据、读取数据的方法
WO2017079769A1 (en) Transfer descriptor for memory access commands
CN103413569B (zh) 一读且一写静态随机存储器
JP5074499B2 (ja) 軽量ポリゴントポロジ表現システム及び軽量ポリゴントポロジ表現方法
KR20200067222A (ko) 그래픽스 파이프라인에서의 인덱스들의 압축 및 압축 해제
KR20120088783A (ko) 계층적 가속 구조를 사용한 그래픽 렌더링
CN106802768B (zh) 存储器装置的抹除方法
CN107102900B (zh) 一种共享内存空间的管理方法
JP6332756B2 (ja) データ処理方法、装置、およびシステム
EP3327574A1 (en) Method and apparatus for managing memory
CN104268005B (zh) 虚拟机唤醒方法和装置
US9740428B1 (en) Circular buffer descriptor for describing and/or accessing a circular buffer
CN111788552B (zh) 用于低等待时间硬件存储器的系统和方法
CN109840163B (zh) 一种Nand-Flash错误数据冗余替换方法
US20160140034A1 (en) Devices and methods for linked list array hardware implementation
JP4468342B2 (ja) データ管理方法
CN116126252B (zh) 数据加载方法及图形处理器、计算机可读存储介质
JPH0421999A (ja) 分割型メモリ書き込み方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210514

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210823

R150 Certificate of patent or registration of utility model

Ref document number: 6944107

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150