JP6944576B2 - キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラム - Google Patents
キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラム Download PDFInfo
- Publication number
- JP6944576B2 JP6944576B2 JP2020153943A JP2020153943A JP6944576B2 JP 6944576 B2 JP6944576 B2 JP 6944576B2 JP 2020153943 A JP2020153943 A JP 2020153943A JP 2020153943 A JP2020153943 A JP 2020153943A JP 6944576 B2 JP6944576 B2 JP 6944576B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- instruction
- queue
- target
- identifier
- 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
- 238000003672 processing method Methods 0.000 title claims description 10
- 238000004590 computer program Methods 0.000 title claims description 9
- 238000000034 method Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000008901 benefit Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 230000009286 beneficial effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Description
前記書き込みポート群は、第1キュー及び/又は第2キューにおける所定の記憶アドレスにキャッシュデータを書き込むように構成され、
前記読み出しポートは、前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを一括して読み出すように構成され、
前記プッシュポートは、前記第1キュー及び/又は前記第2キューにキャッシュデータをプッシュするように構成され、
前記第1ポップポートは、前記第1キューからキャッシュデータをポップするように構成され、
前記第2ポップポートは、前記第2キューからキャッシュデータをポップするように構成される。
前記書き込みデータポートは、書き込まれたキャッシュデータを受信するように構成され、
前記書き込みアドレスポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータの、前記第1キュー及び/又は前記第2キューに書き込まれた記憶アドレスを受信するように構成される。
前記書き込みマスクポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するように構成され、
前記マスク情報は、前記記憶アドレスに書き込まれたキャッシュデータのデータビットを示し、前記書き込みマスクポートと前記書き込みデータポートとのビット幅が同じである。
前記第1空満状態フラグビット群は、前記第1キューにおけるキャッシュデータの記憶状態を示すように構成され、
前記第2空満状態フラグビット群は、前記第2キューにおけるキャッシュデータの記憶状態を示すように構成される。
上記本出願における一実施例は、命令キャッシュに上記新規な構造を有する第1キャッシュデバイス及び第2キャッシュデバイスを設けることにより、さらに命令キャッシュの性能を最適化することができ、特にフェッチシナリオにおいて、従来技術で複数のFIFOと複数のレジスタ群との協調作動により実現される欠落命令のフェッチ機能を実現でき、多くの複雑な論理制御が不要で、命令キャッシュの設計を簡略化するという利点又は有益な効果を有する。また、マルチコアプロセッサが外部命令メモリに重複したフェッチ要求を送信することを防止することができ、マルチコアプロセッサの不要な待ち時間を大幅に低減させて、マルチコアプロセッサの性能を向上させることができる。
前記命令キャッシュは前記外部命令メモリ及び前記マルチコアプロセッサの複数の処理カーネルにそれぞれ接続され、前記命令キャッシュは前記外部命令メモリにバスを介して接続される。
前記外部命令メモリは、命令を記憶するように構成され、
前記命令キャッシュは、欠落命令識別子を前記外部命令メモリに送信するとともに、前記外部命令メモリがバスを介して応答して書き戻した命令を取得するように構成される。
前記第2キャッシュデバイスは、第1キュー又は第2キューを使用して、前記第1キャッシュデバイスにおけるフェッチ欠落識別子の記憶アドレスに従って、前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を対応して記憶するように構成される。
外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供することと、
外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップすることと、
第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第2ポップポートを介してポップすることと、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信することと、を備える。
第2ターゲット処理カーネルに第2ターゲット欠落命令識別子に対するフェッチ欠落が発生したと検出されると、第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出すことと、
前記第1キャッシュデバイスの第1キュー及び第2キューのいずれにも前記第2ターゲット欠落命令識別子が記憶されていない場合、前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶することと、
前記第2ターゲット処理カーネル及び予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成することと、
第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュすることと、を備える。
前記第1キャッシュデバイスの第1キュー又は第2キューに前記第2ターゲット欠落命令識別子が記憶されていると、前記第2ターゲット欠落命令識別子の前記第1キャッシュデバイスにおけるターゲット記憶アドレスを取得することと、
前記第2ターゲット処理カーネル及び予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第3ターゲットキャッシュデータ及びターゲットマスク情報を生成することと、
前記第2キャッシュデバイスの書き込みポート群を介して、前記ターゲット記憶アドレス、前記第3ターゲットキャッシュデータ及び前記ターゲットマスク情報を書き込み、前記第2ターゲットフェッチ欠落識別子にマッチングする第2ターゲット処理カーネルのカーネル識別子を前記第2キャッシュデバイスに記憶することと、をさらに備える。
第1キャッシュデバイスの第1キューにキャッシュデータがない場合、第1キャッシュデバイスの第1空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第1キューが満杯である場合、第1キャッシュデバイスの第1空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューにキャッシュデータがない場合、第1キャッシュデバイスの第2空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューが満杯である場合、第1キャッシュデバイスの第2空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、のうちの少なくとも1つを備える。
前記第1キャッシュデバイスの第1空満状態フラグビット群又は第2空満状態フラグビット群における満状態フラグビットが目標レベル値であると検出されると、マルチコアプロセッサにおけるいずれの処理カーネルのフェッチ要求を受信しないことを備える。
外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供するための第1ポップ処理モジュールと、
外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップするための第2ポップ処理モジュールと、
第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第2ポップポートを介してポップするための第3ポップ処理モジュールと、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲットカーネル識別子にマッチングする処理カーネルに前記書き戻し命令を送信するための書き戻し命令送信モジュールと、を備える。
図面は、本出願の技術的解決手段をより良く理解するために使用され、本出願を限定するものではない。
前記読み出しポートは、前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを一括して読み出すように構成され、
前記プッシュポートは、前記第1キュー及び/又は前記第2キューにキャッシュデータをプッシュするように構成され、
前記第1ポップポートは、前記第1キューからキャッシュデータをポップするように構成され、
前記第2ポップポートは、前記第2キューからキャッシュデータをポップするように構成される。
前記書き込みデータポートは、書き込まれたキャッシュデータを受信するように構成され、
前記書き込みアドレスポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータの、前記第1キュー及び/又は前記第2キューに書き込まれた記憶アドレスを受信するように構成される。
前記書き込みマスクポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するように構成され、
前記マスク情報は、前記記憶アドレスに書き込まれたキャッシュデータのデータビットを示し、前記書き込みマスクポートと前記書き込みデータポートとのビット幅が同じである。
前記第1空満状態フラグビット群は、前記第1キューにおけるキャッシュデータの記憶状態を示すように構成され、
前記第2空満状態フラグビット群は、前記第2キューにおけるキャッシュデータの記憶状態を示すように構成される。
前記書き込みマスクポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するように構成される。
前記第1空満状態フラグビット群は、前記第1キューにおけるキャッシュデータの記憶状態を示すように構成され、
前記第2空満状態フラグビット群は、前記第2キューにおけるキャッシュデータの記憶状態を示すように構成される。
前記外部命令メモリ330は、命令を記憶するように構成され、
前記命令キャッシュ320は、欠落命令識別子を前記外部命令メモリ330に送信するとともに、前記外部命令メモリ330がバスを介して応答して書き戻した命令を取得するように構成される。
前記第2キャッシュデバイス312は、前記第1キャッシュデバイスにおけるフェッチ欠落識別子の記憶アドレスに従って、前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を第1キュー又は第2キューに対応して記憶するように構成される。
第1キャッシュデバイス311の第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリ330に提供する。
命令キャッシュ310は、外部命令メモリ330から第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出された場合、
第1キャッシュデバイス311の第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイス311の第2ポップポートを介してポップすることと、
第2キャッシュデバイス312から前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイス312の第1ポップポート又は第2ポップポートを介してポップすることと、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信することと、を実行する。
第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出すことと、
前記第1キャッシュデバイスの第1キュー及び第2キューのいずれにも前記第2ターゲット欠落命令識別子が記憶されていない場合、前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶することと、
前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成することと、
第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュすることと、
前記第1キャッシュデバイスの第1キュー又は第2キューに前記第2ターゲット欠落命令識別子が記憶されている場合、前記第2ターゲット欠落命令識別子の前記第1キャッシュデバイスにおけるターゲット記憶アドレスを取得することと、
前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第3ターゲットキャッシュデータ及びターゲットマスク情報を生成することと、
前記第2キャッシュデバイスの書き込みポート群を介して、前記ターゲット記憶アドレス、前記第3ターゲットキャッシュデータ及び前記ターゲットマスク情報を書き込み、前記第2ターゲットフェッチ欠落識別子にマッチングする第2ターゲット処理カーネルのカーネル識別子を前記第2キャッシュデバイスに記憶することと、を実行する。
第1キャッシュデバイスの第1キューにキャッシュデータがない場合、第1キャッシュデバイスの第1空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第1キューが満杯である場合、第1キャッシュデバイスの第1空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューにキャッシュデータがない場合、第1キャッシュデバイスの第2空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューが満杯である場合、第1キャッシュデバイスの第2空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、のうちの少なくとも1つを備える。
外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供するための第1ポップ処理モジュール610と、
外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップするための第2ポップ処理モジュール620と、
第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第2ポップポートを介してポップするための第3ポップ処理モジュール630と、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲットカーネル識別子にマッチングする処理カーネルに前記書き戻し命令を送信するための書き戻し命令送信モジュール640と、を備える。
第2ターゲット処理カーネルに第2ターゲット欠落命令識別子に対するフェッチ欠落が検出された場合、第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出すことと、
前記第1キャッシュデバイスの第1キュー及び第2キューのいずれにも前記第2ターゲット欠落命令識別子が記憶されていない場合、前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶することと、
前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成することと、
第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュすることと、に用いられる第1欠落命令識別子書き込みモジュールを備えるように構成されてもよい。
第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出した後に、前記第1キャッシュデバイスの第1キュー又は第2キューに前記第2ターゲット欠落命令識別子が記憶されていると、前記第2ターゲット欠落命令識別子の前記第1キャッシュデバイスにおけるターゲット記憶アドレスを取得することと、
前記第2ターゲット処理カーネル及び予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第3ターゲットキャッシュデータ及びターゲットマスク情報を生成することと、
前記第2キャッシュデバイスの書き込みポート群を介して、前記ターゲット記憶アドレス、前記第3ターゲットキャッシュデータ及び前記ターゲットマスク情報を書き込み、前記第2ターゲットフェッチ欠落識別子にマッチングする第2ターゲット処理カーネルのカーネル識別子を前記第2キャッシュデバイスに記憶することと、に用いられる第2欠落命令識別子書き込みモジュールを備えるように構成されてもよい。
第1キャッシュデバイスの第1キューにキャッシュデータがない場合、第1キャッシュデバイスの第1空満状態フラグビット群における空状態フラグビットを目標レベル値に設定するための第1空状態フラグビット設定モジュールと、
第1キャッシュデバイスの第1キューが満杯である場合、第1キャッシュデバイスの第1空満状態フラグビット群における満状態フラグビットを目標レベル値に設定するための第1満状態フラグビット設定モジュールと、
第1キャッシュデバイスの第2キューにキャッシュデータがない場合、第1キャッシュデバイスの第2空満状態フラグビット群における空状態フラグビットを目標レベル値に設定するための第2空状態フラグビット設定モジュールと、
第1キャッシュデバイスの第2キューが満杯である場合、第1キャッシュデバイスの第2空満状態フラグビット群における満状態フラグビットを目標レベル値に設定するための第2満状態フラグビット設定モジュールと、のうちの少なくとも1つを備える。
Claims (16)
- 第1キューと、
第2キューと、
第1キュー及び/又は第2キューにおける所定の記憶アドレスにキャッシュデータを書き込むための書き込みポート群と、
前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを一括して読み出すための読み出しポートと、
前記第1キュー及び/又は前記第2キューにキャッシュデータをプッシュするためのプッシュポートと、
前記第1キューからキャッシュデータをポップするための第1ポップポートと、
前記第2キューからキャッシュデータをポップするための第2ポップポートと、を備えることを特徴とするキャッシュデバイス。 - 前記書き込みポート群は、
書き込まれるキャッシュデータを受信するための書き込みデータポートと、
書き込まれるキャッシュデータの、前記第1キュー及び/又は前記第2キューに書き込まれた記憶アドレスを受信するための書き込みアドレスポートと、を備えることを特徴とする請求項1に記載のキャッシュデバイス。 - 前記書き込みポート群は、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するための書き込みマスクポートをさらに備え、
前記マスク情報は、前記記憶アドレスに書き込まれたキャッシュデータのデータビットを示し、
前記書き込みマスクポートと前記書き込みデータポートとのビット幅が同じであることを特徴とする請求項2に記載のキャッシュデバイス。 - 前記第1キューにおけるキャッシュデータの記憶状態を示すための第1空満状態フラグビット群と、
前記第2キューにおけるキャッシュデータの記憶状態を示すための第2空満状態フラグビット群と、をさらに備えることを特徴とする請求項1〜3のいずれか一項に記載のキャッシュデバイス。 - 請求項1〜4のいずれか一項に記載のキャッシュデバイスを備え、前記キャッシュデバイスは第1キャッシュデバイスおよび第2キャッシュデバイスを含むことを特徴とする命令キャッシュ。
- 請求項5に記載の命令キャッシュ、マルチコアプロセッサ、及び外部命令メモリを備える命令処理システムであって、
前記命令キャッシュは前記外部命令メモリ及び前記マルチコアプロセッサの複数の処理カーネルにそれぞれ接続され、
前記命令キャッシュは前記外部命令メモリにバスを介して接続されることを特徴とする命令処理システム。 - 前記マルチコアプロセッサは、フェッチ欠落が発生すると、欠落命令識別子を命令キャッシュに提供するように構成され、
前記外部命令メモリは、命令を記憶するように構成され、
前記命令キャッシュは、欠落命令識別子を前記外部命令メモリに送信するとともに、前記外部命令メモリがバスを介して応答して書き戻した命令を取得するように構成されることを特徴とする請求項6に記載のシステム。 - 前記第1キャッシュデバイスは、フェッチ欠落が発生した時に外部命令メモリにより応答されなかったフェッチ欠落識別子を第1キューにキャッシュして、外部命令メモリにより応答されたが書き戻されていないフェッチ欠落識別子を第2キューにキャッシュするように構成され、
前記第2キャッシュデバイスは、前記第1キャッシュデバイスにおけるフェッチ欠落識別子の記憶アドレスに従って、前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を第1キュー又は第2キューに記憶するように構成されることを特徴とする請求項7に記載のシステム。 - 請求項6に記載の命令処理システムにおける命令キャッシュにより実行されるデータ処理方法であって、
外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供することと、
外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップすることと、
第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第1ポップポート又は第2ポップポートを介してポップすることと、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信することと、を備えることを特徴とするデータ処理方法。 - 第2ターゲット処理カーネルに第2ターゲット欠落命令識別子に対するフェッチ欠落が発生したと検出されると、第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出すことと、
前記第1キャッシュデバイスの第1キュー及び第2キューのいずれにも前記第2ターゲット欠落命令識別子が記憶されていない場合、前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶することと、
前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成することと、
第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュすることと、をさらに備えることを特徴とする請求項9に記載の方法。 - 第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出した後に、さらに、
前記第1キャッシュデバイスの第1キュー又は第2キューに前記第2ターゲット欠落命令識別子が記憶されている場合、前記第2ターゲット欠落命令識別子の前記第1キャッシュデバイスにおけるターゲット記憶アドレスを取得することと、
前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第3ターゲットキャッシュデータ及びターゲットマスク情報を生成することと、
前記第2キャッシュデバイスの書き込みポート群を介して、前記ターゲット記憶アドレス、前記第3ターゲットキャッシュデータ及び前記ターゲットマスク情報を書き込み、前記第2ターゲットフェッチ欠落識別子にマッチングする第2ターゲット処理カーネルのカーネル識別子を前記第2キャッシュデバイスに記憶することと、を備えることを特徴とする請求項10に記載の方法。 - 第1キャッシュデバイスの第1キューにキャッシュデータがない場合、第1キャッシュデバイスの第1空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第1キューが満杯である場合、第1キャッシュデバイスの第1空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューにキャッシュデータがない場合、第1キャッシュデバイスの第2空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューが満杯である場合、第1キャッシュデバイスの第2空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、のうちの少なくとも1つをさらに備える請求項9〜11のいずれか一項に記載の方法。 - 前記第1キャッシュデバイスの第1空満状態フラグビット群又は第2空満状態フラグビット群における満状態フラグビットが目標レベル値であると検出されると、マルチコアプロセッサにおけるいずれの処理カーネルからのフェッチ要求を受信しないことをさらに備えることを特徴とする請求項12に記載の方法。
- 請求項6に記載の命令処理システムにおける命令キャッシュにより実行されるデータ処理装置であって、
外部命令メモリがアイドル状態にあると検出される場合、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供するための第1ポップ処理モジュールと、
外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出される場合、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップするための第2ポップ処理モジュールと、
第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第2ポップポートを介してポップするための第3ポップ処理モジュールと、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲットカーネル識別子にマッチングする処理カーネルに前記書き戻し命令を送信するための書き戻し命令送信モジュールと、を備えることを特徴とするデータ処理装置。 - コンピュータ命令が記憶されている非一時的コンピュータ可読記憶媒体であって、前記コンピュータ命令が前記コンピュータに請求項9〜13のいずれか一項に記載の方法を実行させることを特徴とする非一時的コンピュータ可読記憶媒体。
- コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項9〜13のいずれか一項に記載の方法を実現する、コンピュータプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010130183.4 | 2020-02-28 | ||
CN202010130183.4A CN113326020A (zh) | 2020-02-28 | 2020-02-28 | 缓存器件、缓存器、系统、数据处理方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021140732A JP2021140732A (ja) | 2021-09-16 |
JP6944576B2 true JP6944576B2 (ja) | 2021-10-06 |
Family
ID=72517147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020153943A Active JP6944576B2 (ja) | 2020-02-28 | 2020-09-14 | キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US11243767B2 (ja) |
EP (1) | EP3872642B1 (ja) |
JP (1) | JP6944576B2 (ja) |
KR (1) | KR102454695B1 (ja) |
CN (1) | CN113326020A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11714645B2 (en) | 2021-10-18 | 2023-08-01 | Changxin Memory Technologies, Inc. | Write cache circuit, data write method, and memory |
CN115994102A (zh) * | 2021-10-18 | 2023-04-21 | 长鑫存储技术有限公司 | 写入缓存电路、数据写入方法和存储器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0981458A (ja) | 1995-03-17 | 1997-03-28 | Motorola Inc | データ処理システムにおけるキャッシュのアクセス方法 |
JP3634379B2 (ja) | 1996-01-24 | 2005-03-30 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
US20050102474A1 (en) | 2003-11-06 | 2005-05-12 | Sridhar Lakshmanamurthy | Dynamically caching engine instructions |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7606998B2 (en) * | 2004-09-10 | 2009-10-20 | Cavium Networks, Inc. | Store instruction ordering for multi-core processor |
CN105183665B (zh) * | 2015-09-08 | 2018-02-13 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
US9658968B1 (en) * | 2015-11-09 | 2017-05-23 | International Business Machines Corporation | Implementing hardware accelerator for storage write cache management |
US10331582B2 (en) * | 2017-02-13 | 2019-06-25 | Intel Corporation | Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time |
CN107643986B (zh) * | 2017-09-11 | 2020-11-13 | 广州慧睿思通信息科技有限公司 | 一种使用环形Buffer和自动回收描述符的AIF接收数据处理方法 |
-
2020
- 2020-02-28 CN CN202010130183.4A patent/CN113326020A/zh active Pending
- 2020-09-11 US US17/018,424 patent/US11243767B2/en active Active
- 2020-09-14 JP JP2020153943A patent/JP6944576B2/ja active Active
- 2020-09-15 EP EP20196105.9A patent/EP3872642B1/en active Active
- 2020-09-22 KR KR1020200122452A patent/KR102454695B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
JP2021140732A (ja) | 2021-09-16 |
CN113326020A (zh) | 2021-08-31 |
EP3872642B1 (en) | 2022-08-24 |
US20210271475A1 (en) | 2021-09-02 |
KR102454695B1 (ko) | 2022-10-14 |
EP3872642A1 (en) | 2021-09-01 |
US11243767B2 (en) | 2022-02-08 |
KR20210110156A (ko) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110275841B (zh) | 访问请求处理方法、装置、计算机设备和存储介质 | |
CN111221476B (zh) | 提升ssd性能的前端命令处理方法、装置、计算机设备及存储介质 | |
US20190163364A1 (en) | System and method for tcp offload for nvme over tcp-ip | |
US7500072B2 (en) | Migrating data that is subject to access by input/output devices | |
EP4220419B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
JP6944576B2 (ja) | キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラム | |
JP2008217209A (ja) | 差分スナップショット管理方法、計算機システム及びnas計算機 | |
CN114398318B (zh) | 用户空间文件系统的文件操作方法及用户空间文件系统 | |
JP2001184211A (ja) | 処理システムにおいてスタックのポップおよびプッシュ動作を行なうための装置および方法 | |
CN109241128B (zh) | 一种过期事件自动触发方法及系统 | |
CN115174673B (zh) | 具备低延迟处理器的数据处理装置、数据处理方法及设备 | |
US10067763B2 (en) | Handling unaligned load operations in a multi-slice computer processor | |
US9552304B2 (en) | Maintaining command order of address translation cache misses and subsequent hits | |
JPH02239331A (ja) | データ処理システム及びその命令実行を促進する方法 | |
JPH08241186A (ja) | バッファメモリ管理ユニット及びバッファメモリ管理方法 | |
US20060242258A1 (en) | File sharing system, file sharing program, management server and client terminal | |
CN116610262A (zh) | 降低ssd顺序读延时的方法、装置、设备及介质 | |
CN109800184B (zh) | 针对小块输入的缓存方法、系统、装置及可存储介质 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
US20090228692A1 (en) | Load Register Instruction Short Circuiting Method | |
CN115562574A (zh) | 一种NVMe加速系统、方法、设备及可读介质 | |
CN110889053B (zh) | 一种接口数据的缓存方法、装置及计算设备 | |
CN115933973B (zh) | 远程更新数据的方法、rdma系统及存储介质 | |
CN114327281B (zh) | 用于ssd的tcg软硬件加速方法、装置、计算机设备及存储介质 | |
US11853593B2 (en) | Shared memory protection method for securing MMIO commands |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201019 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201019 |
|
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: 20210824 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210910 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6944576 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313114 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |