JP6944576B2 - キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラム - Google Patents

キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラム Download PDF

Info

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
Application number
JP2020153943A
Other languages
English (en)
Other versions
JP2021140732A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021140732A publication Critical patent/JP2021140732A/ja
Application granted granted Critical
Publication of JP6944576B2 publication Critical patent/JP6944576B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0866Addressing 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/0871Allocation or management of cache space
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction 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

本出願は、コンピュータハードウェア分野に関し、特にクラウドコンピューティング技術に関し、具体的にキャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラムに関する。
マルチコアプロセッサにおけるカーネルは、命令キャッシュ(icache)を介して外部命令メモリから命令処理を取得する。icacheはバスを介して外部命令メモリに接続される。バスはicacheから送信された読み出し動作の応答に対しランダムな遅延を有し、バスが現在の読み出し動作に応答した後、icacheが新たな読み出し動作を開始することができる。遅延時間内に、カーネルがicacheからフェッチ欠落が発生する可能性があり、これは処理開始されていない読み出し動作をキャッシュする必要がある。
従来技術では、一般的に一つのFIFO(First Input First Output,先入れ先出し)メモリを使用してicacheに処理開始されていない欠落命令識別子をキャッシュし、他のFIFOを使用してバスにより応答されたが書き戻されていない欠落命令識別子をキャッシュする。現在は主にレジスタ群を使用して、開始された、バスにより応答されたが書き戻されていない欠落命令識別子を同期してキャッシュし、次のフェッチ欠落が発生した場合に、レジスタ群にキャッシュされた欠落命令識別子を検索することによって対応するフェッチ要求を開始する必要があるか否かを判定するとともに、別のレジスタ群を使用してどのカーネルにフェッチ欠落が発生したかを記録する。対応する命令がバスを介して書き戻されると、これらのカーネルに対応して書き戻すことができる。
発明者らは、本出願を実現するにあたり、従来技術では、欠落命令のフェッチ機能を実現するために、多くのFIFO及びレジスタ群を使用する必要があり、制御が煩雑であることと、FIFO及びレジスタ群に重複した情報がキャッシュされてしまい、不要なリソースの浪費が発生してしまうことと、という欠点があることを見出す。
本出願の実施例は、新規な構造を有するキャッシュデバイスを設計することにより、欠落命令のフェッチ機能を実現するために必要なハードウェアコストを削減できる、キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラムを提供する。
第1態様によれば、本出願の実施例は、第1キュー、第2キュー、書き込みポート群、読み出しポート、第1ポップポート、第2ポップポート及びプッシュポートを備えるキャッシュデバイスを提供する。
前記書き込みポート群は、第1キュー及び/又は第2キューにおける所定の記憶アドレスにキャッシュデータを書き込むように構成され、
前記読み出しポートは、前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを一括して読み出すように構成され、
前記プッシュポートは、前記第1キュー及び/又は前記第2キューにキャッシュデータをプッシュするように構成され、
前記第1ポップポートは、前記第1キューからキャッシュデータをポップするように構成され、
前記第2ポップポートは、前記第2キューからキャッシュデータをポップするように構成される。
上記本出願における一実施例は、2つのキューに対するポップポートを設けることにより、該キャッシュデバイスは、命令欠落が発生する際に、処理開始されていない欠落命令識別子とバスにより応答されたが書き戻されていない欠落命令識別子とを同時に記憶することができ、キャッシュデバイスの数が大幅に節約され、また、書き込みポート群及び読み出しポートを設けることにより、同様の構造を使用してフェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子をキャッシュして、上記の情報をレジスタ群で記憶する必要がなく、複雑な論理制御が低減されるという利点又は有益な効果を有する。
選択可能に、前記書き込みポート群は具体的に、書き込みデータポート及び書き込みアドレスポートを備え、
前記書き込みデータポートは、書き込まれたキャッシュデータを受信するように構成され、
前記書き込みアドレスポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータの、前記第1キュー及び/又は前記第2キューに書き込まれた記憶アドレスを受信するように構成される。
上記本出願における一実施例は、書き込みデータポート及び書き込みアドレスポートを設けることにより、第1キュー又は第2キューの所定の記憶アドレスに、所望のキャッシュデータを書き込むことができ、さらにマルチコアプロセッサの異なる処理カーネルの、同一の欠落命令に対するフェッチ要求を受信すると、上記の各処理カーネルの情報を同一の記憶アドレスに書き込んで、限られた記憶空間を最大限に再利用して、処理性能を向上させることができるという利点又は有益な効果を有する。
選択可能に、前記書き込みポート群はさらに、書き込みマスクポートを備え、
前記書き込みマスクポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するように構成され、
前記マスク情報は、前記記憶アドレスに書き込まれたキャッシュデータのデータビットを示し、前記書き込みマスクポートと前記書き込みデータポートとのビット幅が同じである。
上記本出願における一実施例は、書き込みマスクポートを設けることにより、キャッシュデバイスにおける記憶アドレスにおける特定のデータビットには、対応するキャッシュデータを正確に書き込むことができ、さらに欠落命令に対して送信されるフェッチ要求の処理カーネルの識別情報を更新して記憶することを実現することができ、限られた記憶空間を最大限に再利用して、処理性能を向上させることができるという利点又は有益な効果を有する。
選択可能に、第1空満状態フラグビット群及び第2空満状態フラグビット群をさらに備え、
前記第1空満状態フラグビット群は、前記第1キューにおけるキャッシュデータの記憶状態を示すように構成され、
前記第2空満状態フラグビット群は、前記第2キューにおけるキャッシュデータの記憶状態を示すように構成される。
上記本出願における一実施例は、第1空満状態フラグビット群及び第2空満状態フラグビット群を設けることにより、さらにキャッシュデバイスの機能を多様化にして、キャッシュデバイスにおける各キューの記憶状態をリアルタイムに取得することができ、さらに異なる記憶状態にマッチングする処理動作を実行することができるという利点又は有益な効果を有する。
第2態様によれば、本出願の実施例は、本出願の任意の実施例に記載の第1キャッシュデバイス及び第2キャッシュデバイスを備える命令キャッシュをさらに提供する。
上記本出願における一実施例は、命令キャッシュに上記新規な構造を有する第1キャッシュデバイス及び第2キャッシュデバイスを設けることにより、さらに命令キャッシュの性能を最適化することができ、特にフェッチシナリオにおいて、従来技術で複数のFIFOと複数のレジスタ群との協調作動により実現される欠落命令のフェッチ機能を実現でき、多くの複雑な論理制御が不要で、命令キャッシュの設計を簡略化するという利点又は有益な効果を有する。また、マルチコアプロセッサが外部命令メモリに重複したフェッチ要求を送信することを防止することができ、マルチコアプロセッサの不要な待ち時間を大幅に低減させて、マルチコアプロセッサの性能を向上させることができる。
第3態様によれば、本出願の実施例は、本出願の任意の実施例に記載の命令キャッシュ、マルチコアプロセッサ、及び外部命令メモリを備える命令処理システムをさらに提供する。
前記命令キャッシュは前記外部命令メモリ及び前記マルチコアプロセッサの複数の処理カーネルにそれぞれ接続され、前記命令キャッシュは前記外部命令メモリにバスを介して接続される。
選択可能に、前記マルチコアプロセッサは、フェッチ欠落が発生すると、欠落命令識別子を命令キャッシュに提供するように構成され、
前記外部命令メモリは、命令を記憶するように構成され、
前記命令キャッシュは、欠落命令識別子を前記外部命令メモリに送信するとともに、前記外部命令メモリがバスを介して応答して書き戻した命令を取得するように構成される。
選択可能に、前記第1キャッシュデバイスは、第1キューを使用してフェッチ欠落が発生した時に外部命令メモリにより応答されなかったフェッチ欠落識別子をキャッシュして、第2キューを使用して外部命令メモリにより応答されたが書き戻されていないフェッチ欠落識別子をキャッシュするように構成され、
前記第2キャッシュデバイスは、第1キュー又は第2キューを使用して、前記第1キャッシュデバイスにおけるフェッチ欠落識別子の記憶アドレスに従って、前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を対応して記憶するように構成される。
上記本出願における一実施例は、命令処理システムに本出願の任意の実施例に記載の命令キャッシュを使用することにより、従来技術で複数のFIFOと複数のレジスタ群との協調作動により実現される欠落命令のフェッチ機能を実現でき、多くの複雑な論理制御が不要で、命令キャッシュの設計を簡略化することと、マルチコアプロセッサが外部命令メモリに重複したフェッチ要求を送信することを防止することができ、マルチコアプロセッサの不要な待ち時間を大幅に低減させて、マルチコアプロセッサの性能を向上させることができることと、の利点又は有益な効果を有する。
第4態様によれば、本出願の実施例は、本出願の任意の実施例に記載の命令処理システムにおける命令キャッシュにより実行されるデータ処理方法をさらに提供し、
外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供することと、
外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップすることと、
第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第2ポップポートを介してポップすることと、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信することと、を備える。
上記本出願における一実施例は、第1キャッシュデバイスに設けられた2つのキュー及び異なるキューに対するポップポートを介して、処理開始されていない欠落命令識別子とバスにより応答されたが書き戻されていない欠落命令識別子とに対してそれぞれポップ処理することができ、命令キャッシュが使用されるキャッシュデバイスの数が大幅に低減され、また、第2キャッシュデバイスのポップポートを介して、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期してポップして、上記の情報をレジスタ群で記憶する必要がなく、複雑な論理制御が低減されるという利点又は有益な効果を有する。
選択可能に、さらに、
第2ターゲット処理カーネルに第2ターゲット欠落命令識別子に対するフェッチ欠落が発生したと検出されると、第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出すことと、
前記第1キャッシュデバイスの第1キュー及び第2キューのいずれにも前記第2ターゲット欠落命令識別子が記憶されていない場合、前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶することと、
前記第2ターゲット処理カーネル及び予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成することと、
第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュすることと、を備える。
上記本出願における一実施例は、命令キャッシュに第1キャッシュデバイスを設けることにより、命令欠落が発生する際に、処理開始されていない欠落命令識別子及びバスにより応答されたが書き戻されていない欠落命令識別子を同時に記憶することができ、キャッシュデバイスの使用数が大幅に低減され、また、第2キャッシュデバイスにおける書き込みポート群及び読み出しポートにより、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期してキャッシュするか又は読み出すことができ、上記の情報をレジスタ群で記憶する必要がなく、複雑な論理制御が低減されるという利点又は有益な効果を有する。
選択可能に、第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キャッシュデバイスの第2キューにキャッシュデータがない場合、第1キャッシュデバイスの第2空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューが満杯である場合、第1キャッシュデバイスの第2空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、のうちの少なくとも1つを備える。
選択可能に、さらに、
前記第1キャッシュデバイスの第1空満状態フラグビット群又は第2空満状態フラグビット群における満状態フラグビットが目標レベル値であると検出されると、マルチコアプロセッサにおけるいずれの処理カーネルのフェッチ要求を受信しないことを備える。
第5態様によれば、本出願の実施例は、本出願の任意の実施例に記載の命令処理システムにおける命令キャッシュにより実行されるデータ処理装置をさらに提供し、
外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供するための第1ポップ処理モジュールと、
外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップするための第2ポップ処理モジュールと、
第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第2ポップポートを介してポップするための第3ポップ処理モジュールと、
前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲットカーネル識別子にマッチングする処理カーネルに前記書き戻し命令を送信するための書き戻し命令送信モジュールと、を備える。
上記本出願における一実施例は、第1キャッシュデバイスに設けられた2つのキュー及び異なるキューに対するポップポートを介して、処理開始されていない欠落命令識別子とバスにより応答されたが書き戻されていない欠落命令識別子とに対してそれぞれポップ処理することができ、命令キャッシュが使用されるキャッシュデバイスの数が大幅に低減され、また、第2キャッシュデバイスのポップポートを介して、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期してポップして、上記の情報をレジスタ群で記憶する必要がなく、複雑な論理制御が低減されるという利点又は有益な効果を有する。
第6態様によれば、本出願の実施例は、コンピュータに本出願の実施例のいずれかに記載の方法を実行させるためのコンピュータ命令が記憶されている非一時的コンピュータ可読記憶媒体をさらに提供する。
第7態様によれば、本出願の実施例は、コンピュータプログラムであって、前記コンピュータプログラムがプロセッサにより実行されると、本出願の実施例のいずれかに記載の方法を実現する、コンピュータプログラムを提供する。
上記本出願における一実施例は、第1キャッシュデバイスに設けられた2つのキュー及び異なるキューに対するポップポートを介して、処理開始されていない欠落命令識別子及びバスにより応答されたが書き戻されていない欠落命令識別子に対してそれぞれポップ処理することができ、命令キャッシュが使用されるキャッシュデバイスの数が大幅に低減され、また、第2キャッシュデバイスのポップポートを介して、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期してポップして、上記の情報をレジスタ群で記憶する必要がなく、複雑な論理制御が低減されるという利点又は有益な効果を有する。
以下、上記のような選択可能な例に係る他の効果について、具体的な実施例を参照しながら説明する。
図面は、本出願の技術的解決手段をより良く理解するために使用され、本出願を限定するものではない。
図1は本出願の第1実施例に係るキャッシュデバイスの構造概略図である。 図2は本出願の第2実施例に係る命令キャッシュの構造概略図である。 図3は本出願の第3実施例に係る命令処理システムの構造概略図である。 図4は本出願の第4実施例に係るデータ処理方法を実施するフローチャートである。 図5は本出願の第5実施例に係るデータ処理方法を実施するフローチャートである。 図6は本出願の第6実施例に係るデータ処理装置の構造概略図である。
以下は、理解を容易にするために本出願の実施例の様々な詳細を含む添付図面を参照して、本出願の例示的な実施例を説明し、それらは単なる例示として見なされるべきである。したがって、当業者は、本出願の範囲及び精神から逸脱することなく、本明細書に記載された実施例に対して様々な変更及び修正を行うことができることを認識するであろう。同様に、以下の説明では、明確かつ簡潔にするために、周知の機能及び構造の説明を省略する。
(第1実施例)
図1は本出願の第1実施例に係るキャッシュデバイスの構造概略図であり、本実施例に係るキャッシュデバイスが命令キャッシュに適用することができ、フェッチ欠落が発生した時にバスにより応答されなかったフェッチ欠落識別子、バスにより応答されたが書き戻されていないフェッチ欠落識別子及び前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子などの情報を記憶することができる。
図1に示すように、前記キャッシュデバイスは具体的に、第1キュー、第2キュー、書き込みポート群、読み出しポート、第1ポップポート、第2ポップポート及びプッシュポートを備えてもよい。
前記書き込みポート群は、第1キュー及び/又は第2キューにおける所定の記憶アドレスにキャッシュデータを書き込むように構成され、
前記読み出しポートは、前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを一括して読み出すように構成され、
前記プッシュポートは、前記第1キュー及び/又は前記第2キューにキャッシュデータをプッシュするように構成され、
前記第1ポップポートは、前記第1キューからキャッシュデータをポップするように構成され、
前記第2ポップポートは、前記第2キューからキャッシュデータをポップするように構成される。
具体的には、前記第1キュー及び第2キューは従来のFIFOメモリと類似し、先入れ先出しキューであり、従来のFIFOメモリの基本機能を実現することができる。2つのキューを設ける目的は、フェッチ欠落が発生した時にバスにより応答されなかったフェッチ欠落識別子と、バスにより応答されたが書き戻されていないフェッチ欠落識別子とを1つのキャッシュデバイスで同時に記憶して、記憶デバイスの使用をさらに減らすことにある。
具体的には、前記フェッチ欠落識別子はフェッチ欠落が発生した命令の識別情報(身元識別情報ともいう)であってもよい。一般的に、icacheはpc(program counter、プログラムカウンタ)によって命令をマーク付けし、pcは外部命令メモリにおける命令の相対アドレスを記録し、それに応じて、前記フェッチ欠落識別子は具体的にフェッチ欠落が発生した命令に対応するpcであってもよい。
1つのプッシュポートを設ける理由は、フェッチ欠落が発生すると、該フェッチ欠落に対応する欠落命令識別子は、フェッチ欠落が発生した時にバスにより応答されなかったことと、バスにより応答されたが書き戻されていないこととを同時に満たすことにある。したがって、1つのプッシュポートを介して、上記欠落命令識別子を第1キュー及び第2キューに同時にプッシュすることができる。典型的には、フェッチ欠落が発生した時にバスにより応答されなかったフェッチ欠落識別子を第1キューで記憶することができ、バスにより応答されたが書き戻されていないフェッチ欠落識別子を第2キューで記憶することができる。
2つのポップポートを設ける理由は、外部命令メモリがアイドルにあると検出されると、第1キューから1つのフェッチ欠落が発生した時にバスにより応答されなかったフェッチ欠落識別子を取得するとともに、上記フェッチ欠落識別子を第1ポップポートからポップして、外部命令メモリに提供して対応する命令書き戻し動作を行うことと、外部命令メモリは同一時間に1つの命令読み出し動作しか処理することができないため、外部命令メモリから書き戻し命令がフィードバックされたと検出されると、現在の第2キューに記憶された、バスにより応答されたが書き戻されていない最初のフェッチ欠落識別子が既に対応する書き戻し命令を受信したと意味するため、該第2キューにおける最初のフェッチ欠落識別子を第2ポップポートを介してポップして、キャッシュ空間を解放することができることとにある。
上記1つのキャッシュデバイスの2つのポップポートを介して、従来の欠落命令のフェッチ機能における2つのFIFOの機能を満たすことができ、キャッシュデバイスの数を低減し、さらに命令キャッシュ全体のサイズを削減させることができる。
さらに、書き込みポート群を使用することにより、1つの新しいキャッシュデバイスにおける第1キュー又は第2キューにおいて、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期して書き込むことができ、さらに外部命令キャッシュからフィードバックされた書き戻し命令を受信すると、1つのキャッシュデバイスの第2キューにおける最初のフェッチ欠落識別子を第2ポップポートを介してポップするとともに、第2キャッシュデバイスにおける第1キュー又は第2キューにキャッシュされた上記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を第1ポップポート又は第2ポップポートを介してポップすることにより、上記書き戻し命令を具体的にどの処理カーネルに提供するかを判定し、上記の情報をレジスタ群で記憶する必要がなく、複雑な論理制御が低減される。
さらに、読み出しポートを使用して前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを読み出すことにより、処理カーネルから送信された新たなフェッチ欠落識別子を受信すると、上記フェッチ欠落識別子が他の処理カーネルにより送信されたことがあるか否かを迅速に識別し、新たなレジスタ群を導入して上記情報を重複して記憶する必要がなく、さらに複雑な論理制御が低減される。
上記の分析から明らかなように、上記の新規な構造を有するキャッシュデバイスを使用することによって、ハードウェアコストを最大限に削減した上で、従来の欠落命令のフェッチ機能を効果的に実現することができる。
本出願の実施例の技術的解決手段は、2つのキューに対するポップポートを設けることにより、該キャッシュデバイスは、命令欠落が発生する際に、処理開始されていない欠落命令識別子及びバスにより応答されたが書き戻されていない欠落命令識別子を同時に記憶することができ、キャッシュデバイスの数が大幅に低減され、また、書き込みポート群及び読み出しポートを設けることにより、同様な構造を使用してフェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子をキャッシュして、上記の情報をレジスタ群で記憶する必要がなく、複雑な論理制御が低減される。
上記の各実施例に基づいて、前記書き込みポート群は具体的に、書き込みデータポート及び書き込みアドレスポートを備えてもよく、
前記書き込みデータポートは、書き込まれたキャッシュデータを受信するように構成され、
前記書き込みアドレスポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータの、前記第1キュー及び/又は前記第2キューに書き込まれた記憶アドレスを受信するように構成される。
具体的には、第1キュー又は第2キューにおいて、異なる記憶空間が異なる記憶アドレスに対応し、上記の書き込みポート群を設けることにより、第1キュー又は第2キューにおける特定の記憶アドレス(該アドレスには既にキャッシュデータが書き込まれている)に書き込まれたキャッシュデータを修正することができ、マルチコアプロセッサにおける複数の処理カーネルはいずれも同一の命令に対してフェッチ欠落が発生した場合に、異なる処理カーネルに対して、同一の欠落命令識別子を複数の記憶アドレスに複数回記憶する必要がなく、既に記憶された、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を更新して記憶すればよい。
具体的な例では、マルチコアプロセッサの処理カーネルの数にマッチングする1組のバイナリデータで上記処理カーネルを表し、例えば、処理カーネルの数が12である場合に、上記12個の処理カーネルを1組の12bitデータで同時に表すことができ、異なる処理カーネルが12bitデータの異なるデータビットに対応する。
例えば、第1データビットが処理カーネルAに対応し、第2データビットが処理カーネルBに対応し、第3データビットが処理カーネルCに対応するなど、順に類推する。命令キャッシュが処理カーネルAから送信された1つの欠落命令識別子を受信すると、対応して1組のデータ100000000000を構築してプッシュポートを介して1つの上記構造のキャッシュデバイスにおける1つの記憶アドレス(例えば、記憶アドレスX)にプッシュし、命令キャッシュが再び処理カーネルCから送信された同様の欠落命令識別子を受信すると、新たな記憶アドレスに、処理カーネルCに対して該欠落命令識別子を再度重複して記憶する必要がなく、記憶アドレスXに記憶されたデータを100000000000から101000000000に更新するだけで、処理カーネルA及び処理カーネルCには同時に上記の欠落命令識別子に対する命令欠落が発生したことを表すことができる。
典型的には、書き込みポートに書き込まれたキャッシュデータと、対応する記憶アドレスに現在記憶されているキャッシュデータとのフェッチ動作により、上記の所望の処理結果を得ることができる。
このように設定する利点は、書き込みデータポート及び書き込みアドレスポートを設けることにより、第1キュー又は第2キューの所定の記憶アドレスに、所望のキャッシュデータを書き込むことができ、さらにマルチコアプロセッサの異なる処理カーネルの、同一の欠落命令に対するフェッチ要求を受信すると、上記の各処理カーネルの情報を同一の記憶アドレスに書き込んで、限られた記憶空間を最大限に再利用して、処理性能を向上させることができる。
上記の各実施例に基づいて、前記書き込みポート群はさらに、書き込みマスクポートを備えてもよく、
前記書き込みマスクポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するように構成され、
前記マスク情報は、前記記憶アドレスに書き込まれたキャッシュデータのデータビットを示し、前記書き込みマスクポートと前記書き込みデータポートとのビット幅が同じである。
前例で述べたような適用シナリオに対して、記憶アドレスXに記憶されたデータを100000000000から101000000000に更新する必要がある場合に、キャッシュデータの第3ビットを0から1に修正すればよく、したがってキャッシュデバイスにおける内部書き込み論理をさらに簡略化し、書き込みポート群に書き込みマスクポートを導入し、該書き込みマスクポートに書き込まれたマスク情報により、書き込みポートに書き込まれたキャッシュデータのうちどのデータビットが、対応する記憶アドレスに書き込まれる必要があるかを判定することができる。
前述したように、記憶アドレスXにおけるキャッシュデータの第3データビットに1を書き込むなら、001000000000のようなマスク情報及び001000000000のようなキャッシュデータを設定し、マスク情報に入力された第3ビットの高レベル1により、キャッシュデータの第3ビット1を対応する記憶アドレスに書き込むことを指示することができる。
このように設定する利点は、書き込みマスクポートを設けることにより、キャッシュデバイスにおける記憶アドレスにおける特定のデータビットに、対応するキャッシュデータを書き込むことを正確に設けることができ、さらに欠落命令に対してフェッチ要求が送信された処理カーネルの識別情報を更新して記憶することを実現することができ、限られた記憶空間を最大限に再利用して、処理性能を向上させることができる。
上記の各実施例に基づいて、第1空満状態フラグビット群及び第2空満状態フラグビット群をさらに備えてもよく、
前記第1空満状態フラグビット群は、前記第1キューにおけるキャッシュデータの記憶状態を示すように構成され、
前記第2空満状態フラグビット群は、前記第2キューにおけるキャッシュデータの記憶状態を示すように構成される。
具体的には、前記第1空満状態フラグビット群は、第1空状態フラグビット及び第1満状態フラグビットを備えてもよく、前記第1空状態フラグビットは第1キューにいずれのキャッシュデータも記憶されていない場合に、目標レベル値(典型的には、ハイレベル1)に設定されて、第1キューの空記憶状態を示すように構成され、前記第1空状態フラグビットは第1キューの記憶空間にキャッシュデータが満杯で記憶されている場合に、目標レベル値に設定されて、第1キューの満記憶状態を示すように構成される。
同様に、前記第2空満状態フラグビット群は、第2空状態フラグビット及び第2満状態フラグビットを備え、前記第2空状態フラグビットは第2キューにいずれのキャッシュデータも記憶されていない場合に、目標レベル値(典型的には、ハイレベル1)に設定されて、第2キューの空記憶状態を示すように構成され、前記第2空状態フラグビットは第2キューの記憶空間にキャッシュデータが満杯で記憶されている場合に、目標レベル値に設定されて、第2キューの満記憶状態を示すように構成されてもよい。
このように設定する利点は、第1空満状態フラグビット群及び第2空満状態フラグビット群を設けることにより、さらにキャッシュデバイスの機能を多様化にすることができ、キャッシュデバイスにおける各キューの記憶状態をリアルタイムに取得することができ、さらに異なる記憶状態に応じた処理動作を実行することができることにある。
(第2実施例)
図2は本出願の第2実施例に係る命令キャッシュの構造概略図であり、本実施例に係る命令キャッシュは本出願の実施例に係るキャッシュデバイスを2つ使用する。
図2に示すように、前記命令キャッシュ210は、第1キャッシュデバイス211及び第2キャッシュデバイス212を備える。
上記の第1キャッシュデバイス211及び第2キャッシュデバイス212は、本出願の任意の実施例に記載のキャッシュデバイスの構成と同じである。
具体的に、前記第1キャッシュデバイス及び前記第2キャッシュデバイスのいずれは、第1キュー、第2キュー、書き込みポート群、読み出しポート、第1ポップポート、第2ポップポート及びプッシュポートを備える。
前記書き込みポート群は、第1キュー及び/又は第2キューにおける所定の記憶アドレスにキャッシュデータを書き込むように構成される。
前記読み出しポートは、前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを一括して読み出すように構成される。
前記プッシュポートは、前記第1キュー及び/又は前記第2キューにキャッシュデータをプッシュするように構成される。
前記第1ポップポートは、前記第1キューからキャッシュデータをポップするように構成される。
前記第2ポップポートは、前記第2キューからキャッシュデータをポップするように構成される。
具体的に、前記書き込みポート群は、書き込みデータポート及び書き込みアドレスポートを備えてもよい。
前記書き込みデータポートは、書き込まれるキャッシュデータを受信するように構成される。
前記書き込みアドレスポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータの、前記第1キュー及び/又は前記第2キューに書き込まれた記憶アドレスを受信するように構成される。
具体的に、前記書き込みポート群はさらに、書き込みマスクポートを備え、
前記書き込みマスクポートは、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するように構成される。
前記マスク情報が前記記憶アドレスに書き込まれるキャッシュデータのデータビットを示し、前記書き込みマスクポートと前記書き込みデータポートとのビット幅が同じである。
具体的に、第1空満状態フラグビット群及び第2空満状態フラグビット群をさらに備え、
前記第1空満状態フラグビット群は、前記第1キューにおけるキャッシュデータの記憶状態を示すように構成され、
前記第2空満状態フラグビット群は、前記第2キューにおけるキャッシュデータの記憶状態を示すように構成される。
第1空満状態フラグビット群は具体的に第1空状態フラグビット及び第1満状態フラグビットを備え、第2空満状態フラグビット群は具体的に第2空状態フラグビット及び第2満状態フラグビットを備える。
命令キャッシュに上記の新規な構造を有する第1キャッシュデバイス及び第2キャッシュデバイスを設けることにより、さらに命令キャッシュの性能を最適化することができ、特にフェッチシナリオにおいて、従来技術において複数のFIFOと複数のレジスタ群との協調作動により実現される欠落命令のフェッチ機能を実現でき、多くの複雑な論理制御が不要で、命令キャッシュの設計を簡略化できる。また、マルチコアプロセッサが外部命令メモリに重複したフェッチ要求を送信することを防止することができ、マルチコアプロセッサの不要な待ち時間を大幅に低減させて、マルチコアプロセッサの性能を向上させることができる。
(第3実施例)
図3は本出願の第3実施例に係る命令処理システムの構造概略図である。本出願の任意の実施例に記載の命令キャッシュを使用するとともに、命令キャッシュをマルチコアプロセッサと外部命令メモリとの架け橋とすることにより、マルチコアプロセッサにおける1つ又は複数の処理カーネルにフェッチ欠落が発生した場合に、対応する欠落命令識別子とフェッチ欠落が発生した処理カーネルのカーネル識別子とをキャッシュして、欠落命令のフェッチ機能を実現することができる。
図3に示すように、命令処理システムは具体的に本出願の任意の実施例に記載の命令キャッシュ310、マルチコアプロセッサ320、及び外部命令メモリ330を備える。前記命令キャッシュ310は具体的に、本出願の任意の実施例に記載の第1キャッシュデバイス311及び第2キャッシュデバイス312を備える。
前記命令キャッシュ310はマルチコアプロセッサ320の複数の処理カーネル(図3に示される処理カーネル1、処理カーネル2、…処理カーネルN)及び外部命令メモリ330がそれぞれ接続され、命令キャッシュ310が外部命令メモリ330にバスを介して接続される。
前記マルチコアプロセッサ320は、フェッチ欠落が発生すると、欠落命令識別子を命令キャッシュ320に提供するように構成され、
前記外部命令メモリ330は、命令を記憶するように構成され、
前記命令キャッシュ320は、欠落命令識別子を前記外部命令メモリ330に送信するとともに、前記外部命令メモリ330がバスを介して応答して書き戻した命令を取得するように構成される。
選択可能に、前記第1キャッシュデバイス311は、フェッチ欠落が発生した時に外部命令メモリにより応答されなかったフェッチ欠落識別子を第1キューにキャッシュして、外部命令メモリにより応答されたが書き戻されていないフェッチ欠落識別子を第2キューにキャッシュするように構成され、
前記第2キャッシュデバイス312は、前記第1キャッシュデバイスにおけるフェッチ欠落識別子の記憶アドレスに従って、前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を第1キュー又は第2キューに対応して記憶するように構成される。
処理カーネルは命令をフェッチして処理する必要がある場合に、命令キャッシュ310によって外部命令メモリ330から命令を要求し、外部命令メモリ330はバスを介してフェッチ要求に応答する場合に、バスを介して該フェッチ要求にマッチングする命令をバスを介して該命令キャッシュ310に書き戻し、命令キャッシュ310によってフェッチ要求を発する処理カーネルに提供する。該命令キャッシュ310は一度に同一のフェッチ要求にしか応答できず、他のフェッチ要求がランダムに遅延される。処理カーネルがフェッチ欠落を検出した場合、該フェッチ欠落にマッチングするフェッチ欠落識別子を命令キャッシュ310に提供してキャッシュさせ、命令キャッシュ310により適当なタイミングで欠落命令を取得してマッチングする処理カーネルにフィードバックする。
具体的には、第1キャッシュデバイス311の使用に合わせて、第2キャッシュデバイス312は1つのキューのみを使用し、限定ではなく例示として、第2キャッシュデバイス312における第2キューのみを使用して、前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を記憶することができる。したがって、第2キャッシュデバイス312の読み出しポートからキャッシュデータを読み出す必要がある場合には、該第2キューのみからキャッシュデータを読み出し、第2キャッシュデバイス312の書き込みポート群からキャッシュデータを書き込む必要がある場合には、該第2キューにおける所定の記憶アドレスにキャッシュされたデータの所定データビットのみにデータを書き込むことができ、第2キャッシュデバイス312のプッシュポートを介してキャッシュデータをプッシュする必要がある場合には、プッシュされるキャッシュデータが第2キューのみにプッシュされ、第2キャッシュデバイス312の第2キューからキャッシュデータをポップする必要がある場合には、第2ポップポートのみを介してポップすることができる。同時に、第2キャッシュデバイス312における第2空満状態フラグビット群のみを使用して第2キューの空満記憶状態を示す。
もちろん、同様に第2キャッシュデバイス312における第1キューを使用して前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を記憶することができ、本実施例はこれを限定しない。
具体的には、命令キャッシュ310は、外部命令メモリ330がアイドル状態にあると検出された場合、
第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ターゲット処理カーネルに前記書き戻し命令を送信することと、を実行する。
命令キャッシュ310は、第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キャッシュデバイス及び第2キャッシュデバイスを設けることにより、命令キャッシュシステムにおいて、従来技術における複数のFIFOと複数のレジスタ群との協調作動により実現される欠落命令のフェッチ機能を実現でき、多くの複雑な論理制御が不要で、命令キャッシュの設計を簡略化できる。また、マルチコアプロセッサから外部命令メモリへの重複したフェッチ要求の送信を防止することができ、マルチコアプロセッサの不要な待ち時間を大幅に低減でき、マルチコアプロセッサの性能を向上させることができる。
(第4実施例)
図4は本出願の第4実施例に係るデータ処理方法のフローチャートであり、本実施例は欠落命令の処理を実施する場合に適用することができる。該方法はデータ処理装置によって実行されてもよく、該装置がソフトウェア及び/又はハードウェアの方式で実施され、好ましくは、本出願の任意の実施例に記載の命令処理システムにおける命令キャッシュに配置され、該命令キャッシュにおいてマルチコアプロセッサ及び外部命令メモリと組み合わせて使用する。図4に示すように、該方法は具体的にS410、S420、S430及びS440を含む。
S410:外部命令メモリがアイドル状態にあると検出された場合、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供する。
前述したように、第1キャッシュデバイスの第1キューには、フェッチ欠落が発生した時にバスによって応答されなかったフェッチ欠落識別子、すなわち、外部命令メモリに送信されていないフェッチ欠落識別子がキャッシュされている。したがって、外部命令メモリがアイドル状態にあると検出された場合、現在の外部命令メモリが命令読み出し動作を行っていないことを意味し、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出すことができ、第1ポップポートを介してポップした後、ポップされた欠落命令識別子を該外部命令メモリに提供することで、該外部命令メモリに該欠落命令識別子に対応する命令の書き戻しを行わせる。
S420:外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出された場合、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップする。
本実施例では、第1キャッシュデバイスの第2キューには、バスによって応答されたが書き戻されていないフェッチ欠落識別子がキャッシュされている。つまり、第2キューにキャッシュされているフェッチ欠落識別子は、バスを介して外部命令メモリに送信されたが外部命令メモリからフィードバックされる書き戻し命令が受信されていないフェッチ欠落識別子である。
外部命令メモリは同一時間に1つの命令読み出し動作しか処理することができないため、外部命令メモリからフィードバックされた書き戻し命令が検出された場合、現在の第2キューに記憶された、バスにより応答されたが書き戻されていない最初のフェッチ欠落識別子に対して、既に対応する書き戻し命令が受信されたと意味するため、該第2キューにおける最初のフェッチ欠落識別子を第2ポップポートを介してポップして、キャッシュ空間を解放することができる。
S430:第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第1ポップポート又は第2ポップポートを介してポップする。
本実施例では、第1キャッシュデバイスにより命令欠落が発生したフェッチ欠落識別子を記憶する場合に、第2キャッシュデバイスには該フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期して書き込み、外部命令キャッシュからフィードバックされた書き戻し命令を受信すると、第1キャッシュデバイスの第2キューにおける最初のフェッチ欠落識別子(即ち、第1ターゲット欠落命令識別子)を第2ポップポートを介してポップするとともに、第2キャッシュデバイスにおける第1キュー又は第2キューにキャッシュされた上記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子(即ち、第1ターゲットカーネル識別子)を第1ポップポート、又は第2ポップポートを介してポップすることにより、上記書き戻し命令を具体的にどの処理カーネルに提供するかを判定し、上記の情報をレジスタ群に記憶する必要がなく、複雑な論理制御が低減される。
具体的には、該第1ターゲットカーネル識別子のカーネル識別子は第1ターゲットキャッシュデータに含まれ、第1ターゲットキャッシュデータのデータビット数がマルチコアプロセッサの処理カーネル数に対応して、異なる処理カーネルが第1ターゲットキャッシュデータの異なるデータビットに対応し、前記第1ターゲットキャッシュデータにおけるデータビットの具体的なデータ値(0、又は1)に基づいて、どの処理カーネルが該第1ターゲット欠落命令識別子に対してフェッチ欠落が発生したかを判定することができる。
S440:前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信する。
具体的には、データ値1によってフェッチ欠落が発生した処理カーネルをマーク付けすることができ、さらに該第1ターゲットキャッシュデータにおける1の位置を識別することができ、さらにデータビットと処理カーネルとの間のマッピング関係に基づいて、1つ又は複数の第1ターゲットカーネル識別子を識別するとともに、外部命令メモリからフィードバックされた書き戻し命令を上記第1ターゲット処理カーネルに提供する。
本出願の実施例では、命令キャッシュに第1キャッシュデバイスを設けることにより、命令欠落が発生した場合に、処理開始されていない欠落命令識別子及びバスにより応答されたが書き戻されていない欠落命令識別子を同時に記憶することができ、キャッシュデバイスの使用数が大幅に低減され、また、第2キャッシュデバイスにおける書き込みポート群及び読み出しポートにより、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期してキャッシュするか又は読み出すことができ、上記の情報をレジスタ群に記憶する必要がなく、複雑な論理制御が低減される。
(第5実施例)
図5は本出願の第5実施例に係るデータ処理方法のフローチャートであり、本実施例は上記の実施例を基に最適化し、フェッチ欠落が発生した場合に欠落命令識別子及びフェッチ欠落が発生した処理カーネルを記憶する動作を具現化したものであり、図5に示すように、前記方法は具体的にS510〜S5120を含む。
S510:外部命令メモリがアイドル状態にあると検出された場合、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供する。
S520:外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出された場合、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップする。
S530:第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第1ポップポート又は第2ポップポートを介してポップする。
S540:前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信する。
S550:第2ターゲット処理カーネルに第2ターゲット欠落命令識別子に対するフェッチ欠落が検出された場合、第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出す。
本実施例では、第1キャッシュデバイスには、第1キュー及び第2キューにおける全てのキャッシュデータを一括して読み出すことが可能な読み出しポートが設けられたため、読み出しポートから読み出された全てのキャッシュデータに基づいて、第2ターゲット欠落命令識別子が第2ターゲット処理カーネルを除いた他の処理カーネルにより送信されたことがあるか否かを判断することができ、同一の欠落命令識別子の繰り返し記憶を防止することができる。
S560:前記第1キャッシュデバイスの第1キュー又は第2キューに第2ターゲット欠落命令識別子が記憶されているか否かを判断し、そうであれば、S570を実行し、そうでなければ、S580を実行する。
S570:前記第2ターゲット欠落命令識別子の前記第1キャッシュデバイスにおけるターゲット記憶アドレスを取得し、S590を実行する。
前記第1キャッシュデバイスの第1キュー又は第2キューに第2ターゲット欠落命令識別子が記憶されていると、上記第2ターゲット欠落命令識別子が他の処理カーネルにより送信されたことがあると意味し、したがって、第2ターゲット処理カーネルのカーネル識別子を第2キャッシュデバイスにおける前記ターゲット記憶アドレスに追加して記憶すればよい。
なお、第2キャッシュデバイスが第2キューを使用することを例として、第2キャッシュデバイスの第2キューが、第1キャッシュデバイスの第2キューに記憶された情報と1対1に対応しており、つまり、同一の記憶アドレスにおいて、第1キャッシュデバイスの第2キューには1つの欠落命令識別子Aが記憶され、第2キャッシュデバイスの第2キューには、該欠落命令識別子Aを送信した全ての処理カーネルのカーネル識別子が記憶されている。
S580:前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶し、S5110を実行する。
前記第1キャッシュデバイスの第1キュー又は第2キューのいずれにも第2ターゲット欠落命令識別子が記憶されていない場合、上記第2ターゲット欠落命令識別子が他の処理カーネルにより送信されていないことを意味する。したがって、該第2ターゲット欠落命令識別子が、フェッチ欠落が発生した時にバスにより応答されていないことと、バスにより応答されたが書き戻されていないこととを同時に満たすため、第1キャッシュデバイスのプッシュポットを介して、前記第2ターゲット欠落命令識別子を第1キャッシュデバイスの第1キュー及び第2キューに同時にプッシュすることができる。
本実施例では、フェッチ欠落が発生した時にバスにより応答されていないフェッチ欠落識別子を第1キューに記憶することができ、バスにより応答されたが書き戻されていないフェッチ欠落識別子を第2キューに記憶することができる。
S590:前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第3ターゲットキャッシュデータ及びターゲットマスク情報を生成し、S5100を実行する。
具体的な例では、マルチコアプロセッサに12個の処理カーネルが含まれると、上記12個の処理カーネルは、第2キャッシュデバイスに記憶されたキャッシュデータの12個のデータビットに対応する。予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲット処理カーネルは12個のデータビットにおける第3ビットであり、したがって、001000000000のような第3ターゲットキャッシュデータ及びターゲットマスク情報を構築して、ターゲット記憶アドレスにおける第3ビットを1に調整することを確定し、該ターゲット記憶アドレスにおいて、該第2ターゲット処理カーネルのカーネル識別子を追加して記憶する。
S5100:前記第2キャッシュデバイスの書き込みポート群を介して、前記ターゲット記憶アドレス、前記第3ターゲットキャッシュデータ及び前記ターゲットマスク情報を書き込み、前記第2ターゲットフェッチ欠落識別子にマッチングする第2ターゲット処理カーネルのカーネル識別子を前記第2キャッシュデバイスに記憶する。
S5110:前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成する。
前記第2ターゲット欠落命令識別子が第1キャッシュデバイスにより記憶されていないため、処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係とに基づいて、対応する第2ターゲットキャッシュデータを生成することができる。
続いて、第2ターゲット処理カーネルは12個のデータビットにおける第3ビットであるため、001000000000のような第2ターゲットキャッシュデータを構築することができる。
S5120:第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュする。
本出願の実施例の技術的解決手段は、命令キャッシュに第1キャッシュデバイスを設けることにより、命令欠落が発生した際に、処理開始されていない欠落命令識別子及びバスにより応答されたが書き戻されていない欠落命令識別子を同時に記憶することができ、キャッシュデバイスの使用数が大幅に低減され、また、第2キャッシュデバイスにおける書き込みポート群及び読み出しポートにより、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期してキャッシュするか又は読み出すことができ、上記の情報をレジスタ群に記憶する必要がなく、複雑な論理制御が低減される。
また、第2キャッシュデバイスにおける書き込みポート群により、マルチコアプロセッサの異なる処理カーネルの同一の欠落命令に対するフェッチ要求を受信すると、上記の各処理カーネルの情報を同一の記憶アドレスに書き込むことを実現でき、限られた記憶空間を最大限に再利用でき、処理性能を向上させることができる。また、マルチコアプロセッサから外部命令メモリへの重複したフェッチ要求の送信を防止することができ、マルチコアプロセッサの不要な待ち時間を大幅に低減でき、マルチコアプロセッサの性能を向上させることができる。
上記の各実施例に基づいてさらに、
第1キャッシュデバイスの第1キューにキャッシュデータがない場合、第1キャッシュデバイスの第1空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第1キューが満杯である場合、第1キャッシュデバイスの第1空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューにキャッシュデータがない場合、第1キャッシュデバイスの第2空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
第1キャッシュデバイスの第2キューが満杯である場合、第1キャッシュデバイスの第2空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、のうちの少なくとも1つを備える。
これに対応して、前記方法はさらに、前記第1キャッシュデバイスの第1空満状態フラグビット群又は第2空満状態フラグビット群における満状態フラグビットが目標レベル値であると検出された場合、マルチコアプロセッサにおけるいずれの処理カーネルからのフェッチ要求を受信しないことを備える。
(第6実施例)
図6は本出願の第6実施例に係るデータ処理装置の構造概略図を示し、図6に示すように、前記データ処理装置600は、本出願の任意の実施例に係る命令処理システムにおける命令キャッシュにより実行され、前記装置は、
外部命令メモリがアイドル状態にあると検出されると、第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と、を備える。
本実施例では、第1キャッシュデバイスに設けられた2つのキュー及び異なるキューに対応するポップポートを介して、処理開始されていない欠落命令識別子及びバスにより応答されたが書き戻されていない欠落命令識別子に対してそれぞれポップ処理することができ、命令キャッシュに使用されるキャッシュデバイスの数が大幅に低減され、また、第2キャッシュデバイスのポップポートを介して、フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を同期してポップすることができ、上記の情報をレジスタ群に記憶する必要がなく、複雑な論理制御が低減される。
上記の各実施例に基づいてさらに、第1欠落命令識別子書き込みモジュールであって、
第2ターゲット処理カーネルに第2ターゲット欠落命令識別子に対するフェッチ欠落が検出された場合、第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出すことと、
前記第1キャッシュデバイスの第1キュー及び第2キューのいずれにも前記第2ターゲット欠落命令識別子が記憶されていない場合、前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶することと、
前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成することと、
第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュすることと、に用いられる第1欠落命令識別子書き込みモジュールを備えるように構成されてもよい。
上記の各実施例に基づいてさらに、第2欠落命令識別子書き込みモジュールであって、
第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つを備える。
上記の各実施例に基づいて、フェッチ要求放棄処理モジュールであって、前記第1キャッシュデバイスの第1空満状態フラグビット群又は第2空満状態フラグビット群における満状態フラグビットが目標レベル値であると検出されると、マルチコアプロセッサにおけるいずれの処理カーネルからのフェッチ要求を受信しないためのフェッチ要求放棄処理モジュールをさらに備えるように構成されてもよい。
本出願の実施例によれば、本出願はさらに、コンピュータプログラムが記憶されている可読記憶媒体であって、該プログラムがプロセッサによって実行される場合に、本出願のすべての実施例に係るデータ処理方法を実現する可読記憶媒体を提供し、即ち、該プログラムがプロセッサにより実行される場合に、外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供することと、外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップすることと、第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第1ポップポートまたは第2ポップポートを介してポップすることと、前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信することと、を実現する。
本出願の実施例のコンピュータ記憶媒体は、一つ又は複数のコンピュータ読み取り可能な媒体の任意の組み合わせを採用することができる。コンピュータ読み取り可能な媒体は、コンピュータ可読信号媒体、或いはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電気的、磁気的、光学的、電磁気的、赤外線の、又は半導体のシステム、装置又はデバイス、或いはこれらの任意の組み合わせであってもよいがこれらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1本又は複数本の導線により電気的に接続された、ポータブルコンピュータディスク、ハードディスク、RAM、読み出し専用メモリ(Read Only Memory,ROM)、消去可能なプログラマブル読み出し専用メモリ(Erasable Programmable Read Only Memory,EPROM)、フラッシュメモリ、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、光メモリ、磁気メモリ、又はこれらの任意の適切な組み合わせを含む。本明細書では、コンピュータ可読記憶媒体は、命令実行システム、装置若しくはデバイスにより使用され、或いはこれらに組み合わせて使用するプログラムを含むか或いは記憶するあらゆる有形の媒体であってもよい。
コンピュータ可読信号媒体は、ベースバンドにおける、又は搬送波の一部として伝播するデータ信号を含むことができ、その中にはコンピュータ読み取り可能なプログラムコードが搭載されている。このように伝播するデータ信号は様々な形式を採用することができ、電磁信号、光信号又はこれらの任意の適切な組み合わせを含むがこれらに限定されない。コンピュータ可読信号媒体は、さらに、コンピュータ可読記憶媒体以外の任意のコンピュータ読み取り可能な媒体であってもよく、当該コンピュータ読み取り可能な媒体は、命令実行システム、装置又はデバイスにより使用され、或いはそれらと組み合わせて使用されるプログラムを送信、伝播又は伝送することができる。
コンピュータ読み取り可能な媒体に含まれるプログラムコードは、無線、有線、光ケーブル、無線周波数(Radio Frequency,RF)など、又は上記の任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体によって伝送することができる。
1つ又は複数のプログラミング言語又はそれらの組み合わせで本出願の動作を実行するためのコンピュータプログラムコードを作成することができ、前記プログラミング言語は、Java(登録商標)、Smalltalk、C++などのプロジェクト指向のプログラミング言語を含み、さらに、「C」言語又は同様のプログラミング言語といった従来の手続き型プログラミング言語をも含む。プログラムコードは、完全にユーザーコンピュータで実行されてもよいし、部分的にユーザーコンピュータに実行されてもよいし、スタンドアロンソフトウェアパッケージとして実行されてもよいし、部分的にユーザーコンピュータで、部分的にリモートコンピュータで実行されてもよい、又は完全にリモートコンピュータ又はサーバーで実行されてもよい。リモートコンピュータに係る場合、リモートコンピュータは、ローカルネットワーク(LAN)又は広域ネットワーク(WAN)を含むあらゆる種類のインターネットを介して、ユーザーコンピュータに接続することができ、或いは、外部コンピュータに接続する(例えば、インターネットサービスプロバイダによりインターネットを介して接続する)こともできる。
なお、上記に示された様々な形態のフローが、ステップの順序変更、追加又は削除により使用されてもよい。例えば、本出願に記載された各ステップは、並列に実行されても、順次的に実行されても、異なる順序で実行されてもよく、本明細書に開示された技術的解決手段の所望の結果を実現できるものであれば、本明細書に限定しない。
上記の具体的な実施形態は、本出願の保護範囲を制限するものではない。当業者には明らかなように、設計要求及び他の要素に応じて、様々な変更、組み合わせ、再組合及び置換を行うことができる。本出願の精神及び原則の範囲内で行われたいかなる変更、均等置換及び改良などは、いずれも本出願の保護範囲内に含まれるべきである。

Claims (16)

  1. 第1キューと、
    第2キューと、
    第1キュー及び/又は第2キューにおける所定の記憶アドレスにキャッシュデータを書き込むための書き込みポート群と、
    前記第1キュー及び/又は前記第2キューから、全てのキャッシュデータを一括して読み出すための読み出しポートと、
    前記第1キュー及び/又は前記第2キューにキャッシュデータをプッシュするためのプッシュポートと、
    前記第1キューからキャッシュデータをポップするための第1ポップポートと、
    前記第2キューからキャッシュデータをポップするための第2ポップポートと、を備えることを特徴とするキャッシュデバイス。
  2. 前記書き込みポート群は、
    書き込まれるキャッシュデータを受信するための書き込みデータポートと、
    書き込まれるキャッシュデータの、前記第1キュー及び/又は前記第2キューに書き込まれた記憶アドレスを受信するための書き込みアドレスポートと、を備えることを特徴とする請求項1に記載のキャッシュデバイス。
  3. 前記書き込みポート群は、前記書き込みアドレスポートに書き込まれるキャッシュデータのマスク情報を受信するための書き込みマスクポートをさらに備え、
    前記マスク情報は、前記記憶アドレスに書き込まれたキャッシュデータのデータビットを示し、
    前記書き込みマスクポートと前記書き込みデータポートとのビット幅が同じであることを特徴とする請求項2に記載のキャッシュデバイス。
  4. 前記第1キューにおけるキャッシュデータの記憶状態を示すための第1空満状態フラグビット群と、
    前記第2キューにおけるキャッシュデータの記憶状態を示すための第2空満状態フラグビット群と、をさらに備えることを特徴とする請求項1〜3のいずれか一項に記載のキャッシュデバイス。
  5. 請求項1〜4のいずれか一項に記載のキャッシュデバイスを備え、前記キャッシュデバイスは第1キャッシュデバイスおよび第2キャッシュデバイスを含むことを特徴とする命令キャッシュ。
  6. 請求項5に記載の命令キャッシュ、マルチコアプロセッサ、及び外部命令メモリを備える命令処理システムであって、
    前記命令キャッシュは前記外部命令メモリ及び前記マルチコアプロセッサの複数の処理カーネルにそれぞれ接続され、
    前記命令キャッシュは前記外部命令メモリにバスを介して接続されることを特徴とする命令処理システム。
  7. 前記マルチコアプロセッサは、フェッチ欠落が発生すると、欠落命令識別子を命令キャッシュに提供するように構成され、
    前記外部命令メモリは、命令を記憶するように構成され、
    前記命令キャッシュは、欠落命令識別子を前記外部命令メモリに送信するとともに、前記外部命令メモリがバスを介して応答して書き戻した命令を取得するように構成されることを特徴とする請求項6に記載のシステム。
  8. 前記第1キャッシュデバイスは、フェッチ欠落が発生した時に外部命令メモリにより応答されなかったフェッチ欠落識別子を第1キューにキャッシュして、外部命令メモリにより応答されたが書き戻されていないフェッチ欠落識別子を第2キューにキャッシュするように構成され、
    前記第2キャッシュデバイスは、前記第1キャッシュデバイスにおけるフェッチ欠落識別子の記憶アドレスに従って、前記フェッチ欠落識別子にマッチングする処理カーネルのカーネル識別子を第1キュー又は第2キューに記憶するように構成されることを特徴とする請求項7に記載のシステム。
  9. 請求項6に記載の命令処理システムにおける命令キャッシュにより実行されるデータ処理方法であって、
    外部命令メモリがアイドル状態にあると検出されると、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供することと、
    外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出されると、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップすることと、
    第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第1ポップポート又は第2ポップポートを介してポップすることと、
    前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲット処理カーネルに前記書き戻し命令を送信することと、を備えることを特徴とするデータ処理方法。
  10. 第2ターゲット処理カーネルに第2ターゲット欠落命令識別子に対するフェッチ欠落が発生したと検出されると、第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出すことと、
    前記第1キャッシュデバイスの第1キュー及び第2キューのいずれにも前記第2ターゲット欠落命令識別子が記憶されていない場合、前記第2ターゲット欠落命令識別子を前記第1キュー及び前記第2キューに同時に記憶することと、
    前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第2ターゲットキャッシュデータを生成することと、
    第2キャッシュデバイスのプッシュポートを介して、前記第2ターゲットキャッシュデータを前記第2キャッシュデバイスの第1キュー、又は第2キューにプッシュすることと、をさらに備えることを特徴とする請求項9に記載の方法。
  11. 第1キュー及び第2キューに記憶された全ての欠落命令識別子を第1キャッシュデバイスの読み出しポートから読み出した後に、さらに、
    前記第1キャッシュデバイスの第1キュー又は第2キューに前記第2ターゲット欠落命令識別子が記憶されている場合、前記第2ターゲット欠落命令識別子の前記第1キャッシュデバイスにおけるターゲット記憶アドレスを取得することと、
    前記第2ターゲット処理カーネル及び、予め設定された処理カーネルとキャッシュデータにおける対応するデータビットとのマッピング関係に基づいて、第3ターゲットキャッシュデータ及びターゲットマスク情報を生成することと、
    前記第2キャッシュデバイスの書き込みポート群を介して、前記ターゲット記憶アドレス、前記第3ターゲットキャッシュデータ及び前記ターゲットマスク情報を書き込み、前記第2ターゲットフェッチ欠落識別子にマッチングする第2ターゲット処理カーネルのカーネル識別子を前記第2キャッシュデバイスに記憶することと、を備えることを特徴とする請求項10に記載の方法。
  12. 第1キャッシュデバイスの第1キューにキャッシュデータがない場合、第1キャッシュデバイスの第1空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
    第1キャッシュデバイスの第1キューが満杯である場合、第1キャッシュデバイスの第1空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、
    第1キャッシュデバイスの第2キューにキャッシュデータがない場合、第1キャッシュデバイスの第2空満状態フラグビット群における空状態フラグビットを目標レベル値に設定することと、
    第1キャッシュデバイスの第2キューが満杯である場合、第1キャッシュデバイスの第2空満状態フラグビット群における満状態フラグビットを目標レベル値に設定することと、のうちの少なくとも1つをさらに備える請求項9〜11のいずれか一項に記載の方法。
  13. 前記第1キャッシュデバイスの第1空満状態フラグビット群又は第2空満状態フラグビット群における満状態フラグビットが目標レベル値であると検出されると、マルチコアプロセッサにおけるいずれの処理カーネルからのフェッチ要求を受信しないことをさらに備えることを特徴とする請求項12に記載の方法。
  14. 請求項6に記載の命令処理システムにおける命令キャッシュにより実行されるデータ処理装置であって、
    外部命令メモリがアイドル状態にあると検出される場合、第1キャッシュデバイスの第1キューから欠落命令識別子を取り出し、第1ポップポートを介してポップして、外部命令メモリに提供するための第1ポップ処理モジュールと、
    外部命令メモリから第1ターゲット欠落命令識別子に対してフィードバックされた書き戻し命令が検出される場合、第1キャッシュデバイスの第2キューから前記第1ターゲット欠落命令識別子を取り出し、前記第1キャッシュデバイスの第2ポップポートを介してポップするための第2ポップ処理モジュールと、
    第2キャッシュデバイスから前記第1ターゲット欠落命令識別子にマッチングする第1ターゲットキャッシュデータを取り出し、前記第2キャッシュデバイスの第2ポップポートを介してポップするための第3ポップ処理モジュールと、
    前記第1ターゲットキャッシュデータに基づいて、前記第1ターゲットフェッチ欠落識別子にマッチングする第1ターゲット処理カーネルの第1ターゲットカーネル識別子を識別するとともに、前記第1ターゲットカーネル識別子にマッチングする処理カーネルに前記書き戻し命令を送信するための書き戻し命令送信モジュールと、を備えることを特徴とするデータ処理装置。
  15. コンピュータ命令が記憶されている非一時的コンピュータ可読記憶媒体であって、前記コンピュータ命令が前記コンピュータに請求項9〜13のいずれか一項に記載の方法を実行させることを特徴とする非一時的コンピュータ可読記憶媒体。
  16. コンピュータプログラムであって、
    前記コンピュータプログラムがプロセッサにより実行されると、請求項9〜13のいずれか一項に記載の方法を実現する、コンピュータプログラム。
JP2020153943A 2020-02-28 2020-09-14 キャッシュデバイス、命令キャッシュ、命令処理システム、データ処理方法、データ処理装置、コンピュータ可読記憶媒体及びコンピュータプログラム Active JP6944576B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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接收数据处理方法

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