(57)【要約】データを取得するためのアクセス命令を読み取ることと、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することと、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、アクセス命令に必要とされるデータが取得される位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することとを含む、キャッシュにアクセスするための方法。技術的解決法は、キャッシュアクセス時の低ヒット率の問題を解決し、ミスの確率を減少させ、ターゲットデータ取得時の各レベルのキャッシュへのレベル毎アクセスによって生じるアクセス遅延を減少させ、それに対応して、キャッシュアクセス時に発生する消費電力を低減し、ＣＰＵ性能を向上させる。
2018536230.tif 000002
【特許請求の範囲】
【請求項１】
データを取得するためのアクセス命令を読み取ることと、
前記アクセス命令によって搬送される遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定することと、
前記アクセス命令が前記遅延を発生させることの判定に応じて、キャッシュにアクセスして、前記アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、
前記アクセス命令によって取得されたデータの位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することと
を含む、
キャッシュにアクセスするための方法。
【請求項２】
前記遅延が、データミスの場合のレベル毎キャッシュアクセス時に発生する遅延を含む、
請求項１に記載のキャッシュにアクセスするための方法。
【請求項３】
前記遅延が、前記アクセス命令が演算を行うときに発生する遅延を含む、
請求項１に記載のキャッシュにアクセスするための方法。
【請求項４】
前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子が、前記アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子である、
請求項１に記載のキャッシュにアクセスするための方法。
【請求項５】
前記アクセス命令によって搬送される前記遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定することが、
前記アクセス命令が遅延を発生させるかどうかを判定するために、ビットでマーク付けされる前記遅延識別子の数値を読み取ること
を含む、
請求項１に記載のキャッシュにアクセスするための方法。
【請求項６】
前記アクセス命令が前記遅延を発生させるかどうかを判定するために、ビットでマーク付けされる前記遅延識別子の前記数値を読み取ることが、
前記遅延識別子の前記数値を読み取ることと、
前記遅延識別子の前記数値が１より大きいかどうかを判定することと、
前記アクセス命令が前記遅延を発生させることを示し、前記キャッシュにアクセスし、前記数値が１より大きいことの判定に応じて、前記位置識別子に従って、前記プリフェッチ操作を実行することと
を含む、
請求項５に記載のキャッシュにアクセスするための方法。
【請求項７】
前記キャッシュにアクセスし、前記アクセス命令が前記遅延を発生させることの判定に応じて、前記アクセス命令によって搬送される前記位置識別子に従って、前記プリフェッチ操作を実行することが、
ビットでマークを付けられる前記位置識別子の数値を読み取ることと、
レベル１キャッシュへのアクセス時、前記位置識別子の前記数値に従って、前記位置識別子の前記数値に対応するキャッシュレベルまたはメモリにアクセスすることと
を含む、
請求項１に記載のキャッシュにアクセスするための方法。
【請求項８】
前記レベル１キャッシュへのアクセス時、前記位置識別子の前記数値に従って、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリにアクセスした後、
前記アクセス命令によって必要とされる前記データが、前記レベル１キャッシュ、及び前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリで取得されるかどうかを判定することと、
前記データが取得されないことの判定に応じて、前記アクセス命令によって必要とされる前記データが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスすることと
をさらに含む、
請求項７に記載のキャッシュにアクセスするための方法。
【請求項９】
前記アクセス命令によって必要とされる前記データが取得された後、前記アクセス命令によって取得された前記データの前記位置を記録すること
をさらに含む、
請求項８に記載のキャッシュにアクセスするための方法。
【請求項１０】
前記アクセス命令によって取得された前記データの前記位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することが、
前記アクセス命令によって取得された前記データの前記記録された位置がレベル１キャッシュであるかどうかを判定することと、
前記アクセス命令によって取得された前記データの前記記録された位置が前記レベル１キャッシュであることの判定に応じて、前記遅延識別子をデクリメントすることと
を含む、
請求項１に記載のキャッシュにアクセスするための方法。
【請求項１１】
前記遅延識別子をデクリメントした後、
前記アクセス命令によって取得された前記データの前記記録された位置が、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリを含むかどうかを判定することと、
前記アクセス命令によって取得された前記データの前記記録された位置が前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリを含むことの判定に応じて、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリから取得される、前記アクセス命令によって必要とされる前記データを廃棄することと
をさらに含む、
請求項１０に記載のキャッシュにアクセスするための方法。
【請求項１２】
前記アクセス命令によって取得された前記データの前記位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することが、
前記アクセス命令によって取得された前記データの前記記録された位置がレベル１キャッシュであるかどうかを判定することと、
前記アクセス命令によって取得された前記データの前記記録された位置が前記レベル１キャッシュではないことの判定に応じて、
前記遅延識別子をインクリメントすることと、
前記アクセス命令によって取得された前記データの前記記録された位置が、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリであるかどうかを判定することと、
前記アクセス命令によって取得された前記データの延期記録された位置に従って、前記アクセス命令によって取得された前記データの前記記録された位置が前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリではないことの判定に応じて、前記位置識別子がキャッシュレベルまたはメモリを表し、そこから前記アクセス命令によって必要とされる前記データが取得されるように、前記位置識別子を設定することと
を含む、
請求項１に記載のキャッシュにアクセスするための方法。
【請求項１３】
データを取得するためのアクセス命令を読み取るアクセス命令読取りユニットと、
前記アクセス命令によって搬送される遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定する遅延識別子判定ユニットと、
前記アクセス命令が前記遅延を発生させることの判定に応じて、前記キャッシュにアクセスして、前記アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行するキャッシュアクセスプリフェッチユニットと、
前記アクセス命令によって取得される前記データの位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正する識別子修正ユニットと
を備える、
キャッシュにアクセスするための装置。
【請求項１４】
前記遅延識別子判定ユニットが、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかをさらに判定する、
請求項１３に記載のキャッシュにアクセスするための装置。
【請求項１５】
前記遅延識別子判定ユニットが、前記遅延識別子に従って、前記アクセス命令が、データミスの場合のレベル毎キャッシュアクセス時、または、前記アクセス命令が演算を行うときに発生する前記遅延を発生させるかどうかをさらに判定する、
請求項１３に記載のキャッシュにアクセスするための装置。
【請求項１６】
前記遅延識別子判定ユニットが、前記アクセス命令が前記遅延を発生させるかどうかを判定するために、ビットでマーク付けされる前記遅延識別子の数値をさらに読み取る、
請求項１３に記載のキャッシュにアクセスするための装置。
【請求項１７】
前記遅延識別子判定ユニットが、
バイナリビットでマーク付けされる前記遅延識別子の前記数値を読み取り、前記遅延識別子の前記数値が１より大きいかどうかを判定する数値読取りサブユニットと、
前記数値読取りサブユニットから判定結果を受信し、前記数値が１より大きいことの判定結果における結果の判定に応じて、キャッシュアクセスプリフェッチユニットを起動するキャッシュアクセスプリフェッチトリガサブユニットと
を含む、
請求項１６に記載のキャッシュにアクセスするための装置。
【請求項１８】
前記キャッシュアクセスプリフェッチユニットが、
ビットでマーク付けされる前記位置識別子の数値を読み取るビット数値読取りサブユニットと、
レベル１キャッシュへのアクセス時、前記位置識別子の前記数値に従って、前記位置識別子の前記数値に対応するキャッシュレベルまたはメモリにアクセスするキャッシュアクセスプリフェッチサブユニットと
を含む、
請求項１３に記載のキャッシュにアクセスするための装置。
【請求項１９】
前記キャッシュアクセスプリフェッチユニットが、
レベル１キャッシュへのアクセス時、ビットでマーク付けされる前記位置識別子の数値に従って、前記位置識別子の前記数値に対応するキャッシュレベルまたはメモリにアクセスした後、前記アクセス命令によって必要とされる前記データが、前記レベル１キャッシュ、及び前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリで取得されるかどうかを判定するデータ取得判定サブユニットと、
前記データ取得判定サブユニットから結果を受信し、前記結果は前記データが取得されないことであるとの判定に応じて、前記アクセス命令によって必要とされる前記データが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスするレベル毎アクセスサブユニットと
を含む、
請求項１３に記載のキャッシュにアクセスするための装置。
【請求項２０】
電気機器であって、
ディスプレイと、
１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサによって実行されるとき、前記電気機器に
データを取得するためのアクセス命令を読み取ることと、
前記アクセス命令によって搬送される遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定することと、
前記アクセス命令が前記遅延を発生させることの判定に応じて、前記キャッシュにアクセスして、前記アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、
前記アクセス命令によって取得された前記データの位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することと
を含む行為をさせる、コンピュータ実行可能命令を格納する１つまたは複数のコンピュータ記憶装置と
を備える、
前記電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本開示は、参照によりその全体が本明細書に組み込まれる、２０１５年１０月２９日に出願された「Ｍｅｔｈｏｄ，  Ｄｅｖｉｃｅ，  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｃｃｅｓｓｉｎｇ  Ｃａｃｈｅ」と題される中国特許出願第２０１５１０７１７１７５．９号の利益を主張する。
【０００２】
本開示は、コンピュータ技術の分野に関し、より詳細には、キャッシュにアクセスするための方法、及びキャッシュにアクセスするための装置に関する。本開示は、電子機器にも関する。
【背景技術】
【０００３】
メモリアクセス速度の遅さと関連する問題を解決するために、マルチレベルキャッシュアーキテクチャが、データの時間的及び空間的局所性の特徴に従って導入される。用語「キャッシュ」は、１つまたは複数の小型で高速の関連する記憶装置を指す。プロセッサが読み書きするとき、プロセッサは最初に、ターゲットデータがキャッシュに存在するかどうか確認する。存在する場合、プロセッサは最初に、他の記憶域（メモリなど）ではなくキャッシュに向かう。マルチレベルキャッシュアーキテクチャは、アクセス性能を向上させる。レベル１キャッシュへのアクセス時、ターゲットデータがレベル１キャッシュに存在しない場合、すなわち、ミスが起こった場合、レベル２キャッシュがアクセスされる。ターゲットデータがレベル２キャッシュにも存在しない場合、ターゲットデータが取得されるまで、次のレベルのキャッシュがアクセスされる。マルチレベルキャッシュアーキテクチャは、アクセス遅延を減らすためにレベル１キャッシュ及びレベル２キャッシュを設定し、ミス率を減らすためにレベル３キャッシュを設定するが、マルチレベルキャッシュアーキテクチャの導入は、各レベルのキャッシュへのアクセス時の遅延も増大させる。たとえば、レベル１キャッシュへのアクセス時のミスからレベル２キャッシュへのアクセスまでは６サイクルかかり、レベル２キャッシュへのアクセス時のミスからレベル３キャッシュへのアクセスまでは８サイクルかかる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
示すように、マルチレベルキャッシュアーキテクチャがアクセス遅延を減らすために設定されるが、キャッシュアクセス時のミスかつ低ヒット率の場合、各レベルのキャッシュへのレベル毎アクセスによって生じるアクセス遅延は段階的に蓄積し、それは最終的に大きな遅延となる。さらに、各レベルのキャッシュへのレベル毎アクセスは、過剰に電力を消費する。各レベルのキャッシュに同時にアクセスする場合、ターゲットデータ取得のためのヒット率が向上し、ミスが減ることがあるが、過剰に電力を消費する。
【課題を解決するための手段】
【０００５】
本概要は、以下の「発明を実施するための形態」にさらに記載される概念を選択し、簡略化した形態で紹介するために示される。本概要は、本請求項のすべての主要な特徴または必須の特徴を特定することは意図しておらず、本請求項の主題の範囲を決定する助けとしてこれを単独で用いることも意図していない。たとえば、用語「技術（複数可）または技術的解決法（複数可）」は、上の文脈によってかつ本開示を通して可能にされる機器（複数可）、システム（複数可）、方法（複数可）、及び／またはコンピュータ可読命令を指してもよい。
【０００６】
本開示は、キャッシュアクセス時に遅延する従来の技術における問題を解決する、キャッシュにアクセスするための方法、及びキャッシュにアクセスするための装置を提供する。本開示は、電子機器にも関する。
【０００７】
本開示は、キャッシュにアクセスするための方法を提供し、ここで、キャッシュにアクセスするための方法は、
データを取得するためのアクセス命令を読み取ることと、
アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することと、
遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、
アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することと
を含む。
【０００８】
任意選択的に、アクセス命令によって搬送される遅延識別子及び位置識別子は、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子である。
【０００９】
任意選択的に、遅延は、
データミスの場合のレベル毎キャッシュアクセス時に発生する遅延、または、アクセス命令が演算を行うときに発生する遅延
を含む。
【００１０】
任意選択的に、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することは、
アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値を読み取ること
を含む。
【００１１】
任意選択的に、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値を読み取ることは、特に、
アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取ること、及び、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が１より大きいかどうかを判定することと、
数値が１より大きい場合、アクセス命令が遅延を発生させることを示すこと、及び、キャッシュにアクセスするステップを実行し、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと
を含む。
【００１２】
任意選択的に、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することは、
アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値を読み取ることと、
レベル１キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすることと
を含む。
【００１３】
任意選択的に、レベル１キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスするステップの後、方法は、
アクセス命令によって必要とされるデータが、レベル１キャッシュ、及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうかを判定することと、
取得されない場合、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスすることと
を含む。
【００１４】
任意選択的に、アクセス命令によって必要とされるデータが取得された後、方法は、
アクセス命令によって取得されたデータの位置を記録すること。
をさらに含む。
【００１５】
任意選択的に、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することは、
アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュであるかどうかを判定すること、
レベル１キャッシュである場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントすること、
または、
レベル１キャッシュではない場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントすること、及び、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定すること、ならびに、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリではないことが判定された場合、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように、アクセス命令によって搬送される位置識別子を設定すること
を含む。
【００１６】
任意選択的に、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントするステップの後、方法は、
アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定すること、
及び、
含む場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータを廃棄すること
を含む。
【００１７】
同様に、本開示は、キャッシュにアクセスするための装置をさらに提供し、ここで、キャッシュにアクセスするための装置は、
データを取得するためのアクセス命令を読み取るアクセス命令読取りユニットと、
アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定する遅延識別子判定ユニットと、
遅延識別子判定ユニットから判定結果を受信し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する、キャッシュアクセスプリフェッチユニットと、
アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する識別子修正ユニットと
を含む。
【００１８】
任意選択的に、遅延識別子判定ユニットは、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子に従って、アクセス命令が遅延を発生させるかどうかを特に判定する。
【００１９】
任意選択的に、遅延識別子判定ユニットは、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が、データミスの場合のレベル毎キャッシュアクセス時に発生する遅延、または、アクセス命令が演算を行うときに発生する遅延を発生させるかどうかを特に判定する。
【００２０】
任意選択的に、遅延識別子判定ユニットは、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値を特に読み取る。
【００２１】
任意選択的に、遅延識別子判定ユニットは、
アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取り、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が１より大きいかどうかを判定する数値読取りサブユニットと、
数値読取りサブユニットから判定結果を受信し、数値が１より大きい場合、キャッシュアクセスプリフェッチユニットを起動するキャッシュアクセスプリフェッチトリガサブユニットと
を含む。
【００２２】
任意選択的に、キャッシュアクセスプリフェッチユニットは、
アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値を読み取るビット数値読取りサブユニットと、
レベル１キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスするキャッシュアクセスプリフェッチサブユニットと
を含む。
【００２３】
任意選択的に、キャッシュアクセスプリフェッチユニットは、
レベル１キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスした後、アクセス命令によって必要とされるデータが、レベル１キャッシュ、及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうかを判定するデータ取得判定サブユニットと、
データ取得判定サブユニットから判定結果を受信し、取得されない場合、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスするレベル毎アクセスサブユニットと
をさらに含む。
【００２４】
任意選択的に、キャッシュにアクセスするための装置は、
アクセス命令によって取得されたデータの位置を記録する位置記録ユニット
をさらに含む。
【００２５】
任意選択的に、識別子修正ユニットは、
アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュであるかどうかを判定する位置判定サブユニットと、
位置判定サブユニットから判定結果を受信し、判定結果が「はい」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントするデクリメントサブユニットと、
位置判定サブユニットから判定結果を受信し、判定結果が「はい」でない場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントし、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定するインクリメントサブユニットと、
インクリメントサブユニットから判定結果を受信し、判定結果が「はい」でない場合、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように、アクセス命令によって搬送される位置識別子を設定する位置識別子設定サブユニットと
を含む。
【００２６】
任意選択的に、デクリメントサブユニットは、
アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がデクリメントされた後、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定する繰り返し位置判定サブユニットと、
繰り返し位置判定サブユニットから判定結果を受信し、判定結果が「はい」である場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータを廃棄するデータ破棄サブユニットと
を含む。
【００２７】
さらに、本開示は、
ディスプレイと、
１つまたは複数のプロセッサと、
プロセッサによって読み取られて、実行されるとき、データを取得するためのアクセス命令を読み取ることと、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することと、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することとを実行する、キャッシュ並列アクセスプログラムまたはコンピュータ実行可能命令を格納する１つまたは複数のコンピュータ記憶装置と
を含む電子機器をさらに提供する。
【００２８】
従来の技術と比較して、本開示は以下の利点を有する。
【００２９】
本開示による、キャッシュにアクセスするための方法、キャッシュにアクセスするための装置、及び電子機器は、データを取得するためのアクセス命令を読み取り、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行し、アクセス命令によって必要とされるデータが取得された位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する。技術的解決法は、キャッシュアクセス時の低ヒット率の問題を解決し、ミスの確率を減少させ、ターゲットデータ取得時の各レベルのキャッシュへのレベル毎アクセスによって生じるアクセス遅延を減少させ、それに対応して、キャッシュアクセス時に発生する消費電力を低減し、ＣＰＵ性能を向上させる。
【００３０】
本開示の例示的実施形態を明確に説明するために、図面の概要が以下で説明される。明らかに、以下で説明される図面は、本開示の単なるいくつかの例示的実施形態であり、これらの図面に従って、当業者によって他の図面が得られてもよい。
【図面の簡単な説明】
【００３１】
【図１】本開示の例示的実施形態による、キャッシュにアクセスするための方法のフローチャートである。
【図２】本開示の例示的実施形態による、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行するフローチャートである。
【図３】本開示の例示的実施形態によるミス防止方法のフローチャートである。
【図４】本開示の例示的実施形態によるデータ廃棄方法のフローチャートである。
【図５】本開示の例示的実施形態による、キャッシュにアクセスするための装置の概略図である。
【図６】本開示の例示的実施形態による電子機器の概略図である。
【発明を実施するための形態】
【００３２】
本開示の上記の目的、特徴、及び利点をより明確に理解するために、本開示は添付図面及び特定の実施態様を参照してさらに詳細に説明される。矛盾なしに、本開示の例示的実施形態及び例示的実施形態の特徴を互いに組み合わせてもよいことに注目すべきである。
【００３３】
本開示を完全に理解するために、特定の詳細が以下の説明において図示されている。しかしながら、本開示は、本明細書の説明と異なる複数の他のモードで実装されてもよく、本開示の精神を逸脱しない範囲で、類似した展開が当業者によって行われてもよい。したがって、本開示は、以下で開示される具体的な実施態様によって限定されない。
【００３４】
本開示の例示的実施形態は、キャッシュにアクセスするための方法及びキャッシュにアクセスするための装置を提供し、本開示の例示的実施形態は電子機器も提供し、それらは１つずつ以下で詳細に説明される。
【００３５】
マルチレベルキャッシュアーキテクチャは、アクセス性能を向上させる。レベル１キャッシュへのアクセス時、ターゲットデータがレベル１キャッシュに存在しない場合、すなわち、ミスが起こった場合、レベル２キャッシュがアクセスされる。ターゲットデータがレベル２キャッシュにも存在しない場合、ターゲットデータが取得されるまで、次のレベルのキャッシュがアクセスされる。マルチレベルキャッシュアーキテクチャは、アクセス遅延を減らすためにレベル１キャッシュ及びレベル２キャッシュを設定し、ミス率を減らすためにレベル３キャッシュを設定するが、マルチレベルキャッシュアーキテクチャの導入は、各レベルのキャッシュへのアクセス時の遅延を増大もさせる。たとえば、レベル１キャッシュへのアクセス時のミスからレベル２キャッシュへのアクセスまでは６サイクルかかり、レベル２キャッシュへのアクセス時のミスからレベル３キャッシュへのアクセスまでは８サイクルかかる。示すように、マルチレベルキャッシュアーキテクチャがアクセス遅延を減らすために設定されるが、キャッシュアクセス時のミスかつ低ヒット率の場合には、各レベルのキャッシュへのレベル毎アクセスによって生じるアクセス遅延はなおも段階的に蓄積し、それは最終的に大きな遅延となる。さらに、各レベルのキャッシュへのレベル毎アクセスは、過剰に電力を消費する。各レベルのキャッシュに同時にアクセスする場合、ターゲットデータ取得のためのヒット率が向上し、ミスが減ることがあるが、過剰に電力を消費する。このような問題に関して、本開示の技術的解決法は、データを取得するためのアクセス命令を読み取り、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行し、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正し、それによって、キャッシュアクセス時のアクセス遅延を減少させる。
【００３６】
本開示の例示的実施形態によって提供されるキャッシュにアクセスするための方法及び装置は、コンピュータなどのインテリジェント機器に適用されてもよく、たとえば、スマートフォン、パームコンピュータ、タブレットコンピュータなどの、アプリケーションプログラムがインストールされる他の電子機器にも適用し、メモリアクセスにおける遅延を低減し、ユーザがより簡単に使用できるようにしてもよい。
【００３７】
本開示による技術的解決法をより容易に理解するために、例示的実施形態の詳細説明の前に、本開示の技術的解決法の概要が、以下のように説明される。
【００３８】
キャッシュは、データ交換のためのキャッシュ領域である（キャッシュという）。特定のハードウェアが１つのデータを読み取る必要があるとき、最初に、レベル１キャッシュで検索が行われる。データが見つかった場合、データはすぐに読み取られて、処理のためにＣＰＵに送信される。データが見つからない場合、次のレベルのキャッシュがアクセスされる。データをキャッシュで見つけることができない場合、データは比較的低速のメモリから読み取られて、処理のためにＣＰＵに送信される。同時に、データが配置されているデータブロックはキャッシュに転送され、その後は、データブロック全体が、メモリを呼び出すことなく、キャッシュから読み取られる。キャッシュの処理速度はメモリの処理速度よりかなり速いので、キャッシュの機能はまさに、ハードウェアのより速い処理を支援することである。
【００３９】
キャッシュは通常、レベル１キャッシュ（略してＬ１キャッシュ）を含むマルチレベルキャッシュアーキテクチャを採用し、レベル１キャッシュは、ＣＰＵカーネルのまわりに配置され、ＣＰＵの最も近くに統合されたＣＰＵキャッシュであり、歴史上、最も初期のＣＰＵキャッシュでもある。レベル１キャッシュの技術的な困難さ及び最も高い製造コストのために、容量改善は技術的な困難さ及びコストの大きな増加になるが、性能改善は大きくなく、そのため、価格性能比は低くなる。さらに、既存のレベル１キャッシュのヒット率は、すでに高い。したがって、レベル１キャッシュの容量はとりわけ最も小さく、それはレベル２キャッシュの容量より非常に小さい。
【００４０】
レベル２キャッシュ、略してＬ２キャッシュは、ＣＰＵの第２のレベルの高速キャッシュであり、内部チップと外部チップとに分類される。内部チップレベル２キャッシュはクロックスピードと同じ速度で動作し、外部レベル２キャッシュはクロックスピードのわずか半分の速度で動作する。Ｌ２高速キャッシュの容量は、ＣＰＵの性能にも影響を与える。
【００４１】
レベル３キャッシュ、略してＬ３キャッシュは、外部型を含んでもよく、それはメモリ待ち時間を減少させ、同時に、大量データ演算の場合のプロセッサの性能を向上させる。それは、メモリ待ち時間の減少、及び、大量データ演算能力の向上に有効である。また、サーバの分野において、このようなＬ３キャッシュの追加は、依然として、大きな性能改善をもたらす。第３のレベルのキャッシュは、主にミス率を低減するように設定される。
【００４２】
メモリは、コンピュータにおける最も重要な構成要素の１つである。それは、ＣＰＵとの通信のためのブリッジである。メモリはまた、内部メモリとも呼ばれ、ＣＰＵの演算データの一時的な格納、及び、ハードディスクドライブなどの外部メモリとのデータの交換に使用される。コンピュータが動作する限り、ＣＰＵは、演算のために演算データをメモリに転送する。演算の終了後、ＣＰＵは結果を送信する。メモリの動作は、コンピュータの安定した動作も決定する。
【００４３】
本開示の例示的実施形態は、キャッシュにアクセスするための方法を提供する。キャッシュにアクセスするための方法の例示的実施形態は、以下のように説明される。
【００４４】
図１を参照すると、図１は、本開示の例示的実施形態による、キャッシュにアクセスするための方法のフローチャートを示す。
【００４５】
例示的なキャッシュにアクセスするための方法は以下を含む。
【００４６】
ステップＳ１０１：データを取得するためのアクセス命令が読み取られる。
【００４７】
この例示的な実施形態において、データを取得するためのアクセス命令を読み取ることは、アクセス命令を記憶するコンピュータ記憶装置から、データを取得するためのアクセス命令を抜き出すことと、アクセス命令をロードすることとを含む。ステップＳ１０１において、データを取得するためのアクセス命令が読み取られたとき、アクセス命令が取得する必要があるデータのボリューム情報が取得される。
【００４８】
ＣＰＵがアクセス命令を実行するとき、最初に、アクセス命令を格納するコンピュータ記憶装置からアクセス命令を抜き出す、すなわち、命令抽出プロセスを完了することが必要であることに注目すべきである。次いで、アクセス命令は復号またはテストされ、対応する操作制御信号が、アクセス命令が取得する必要があるデータの対応する操作、たとえば、メモリ読み出し／書き込み操作、算術論理演算、または、入出力操作を開始するために生成される。アクセス命令の実行プロセスは、実際には、命令用記憶域から命令を抜き出し、命令を分析し、そして命令を実行する循環プロセスである。
【００４９】
ステップＳ１０３：アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定する。
【００５０】
ステップＳ１０１において、データを取得するためのアクセス命令が読み取られるとき、アクセス命令によって搬送される遅延識別子を読み取ることも必要である。アクセス命令によって搬送される遅延識別子は、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子である。
【００５１】
この例示的な実施形態において、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することは、以下の方法、つまり、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマークを付けられる遅延識別子の数値を読み取ることで実装されてもよい。
【００５２】
ＣＰＵによってアクセス命令を実行するプロセスにおいて、キャッシュまたはメモリへのアクセス時にアクセス命令が遅延を発生させる場合、次の、このようなアクセス命令の実行は、同じレベルのキャッシュまたはメモリへのアクセス時、依然として遅延を発生させ、性能を阻害する。このような特徴に基づき、障害を予測することによって、実行時にアクセス命令が遅延を発生させるかどうかが判定される。
【００５３】
たとえば、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる遅延識別子は、２つのバイナリビットによってマーク付けされる。すなわち、ビット１及びビット０は、アクセス命令のキャッシュラインに設定される。バイナリビットのため、アクセス命令によって搬送される遅延識別子は以下の値を有する。
ビット１  ビット０
０        ０
０        １
１        ０
１        １
ここで、ビット１及びビット０は、アクセス命令のキャッシュラインに設定される２つのバイナリビットである。ビット１及びビット０の下のバイナリ数値の４つのグループは、ビット１及びビット０に対応する特定値である。
【００５４】
値に関して、ビット１及びビット０の値を０及び０とするとき、ならびに、ビット１及びビット０の値を０及び１とするとき、すなわち、２つのバイナリビットの数値から変換される１０進数値が１以下のとき、これは、アクセス命令がキャッシュアクセス中に遅延を発生させないことを示し、ビット１及びビット０の値を１及び０とするとき、ならびに、ビット１及びビット０の値を１及び１とするとき、すなわち、２つのバイナリビットの数値から変換される１０進数値が１より大きいとき、これは、アクセス命令がキャッシュアクセス時に遅延を発生させることを示すことに注目すべきである。
【００５５】
ビット１及びビット０の特定値の上記４つのグループにおいて、値の各グループは、アクセス命令の実際の実行結果によって割り当てられ、値の各グループに対応する特定の意味はあらかじめ設定され、実行時にアクセス命令が遅延を発生させるかどうかを判定するために使用される。
【００５６】
この例示的な実施形態において、アクセス命令がキャッシュアクセス時に発生させることがある遅延には、以下の２つのタイプが含まれることに注目すべきである。
【００５７】
第１のタイプは、データミスの場合にはレベル毎キャッシュアクセス時に発生する遅延である。
【００５８】
ＣＰＵは、アクセス性能を向上させるために、マルチレベルキャッシュアーキテクチャを使用することに注目すべきである。アクセス順序は、レベル１キャッシュ、レベル２キャッシュ、レベル３キャッシュ、メモリである。しかしながら、各レベルのキャッシュへのアクセス時には、程度の異なる遅延が発生し、それが性能に影響を与える。
【００５９】
第１のタイプの場合、レベル１キャッシュへのアクセス時にミスが起こった（必要なデータがレベル１キャッシュで取得されなかった）後にのみ、レベル２キャッシュにアクセスする。レベル２キャッシュへのアクセス時にミスが起こった（必要なデータがレベル２キャッシュで取得されなかった）後、メモリにアクセスするまで、レベル３キャッシュにアクセスする。
【００６０】
特に、レベル１キャッシュへのアクセス時のミスからレベル２キャッシュへのアクセスまでは６サイクルかかり、レベル２キャッシュへのアクセス時のミスからレベル３キャッシュへのアクセスまでは８サイクルかかる。
【００６１】
第２のタイプは、アクセス命令が演算を実行するときに発生する遅延である。
【００６２】
アクセス命令がキャッシュアクセス後に複雑な演算を実行するときに発生する遅延に注目すべきである。たとえば、必要なデータがキャッシュから取得された後、このようなデータに基づく演算の場合には、演算遅延は、複雑な演算式または複雑な演算方法自体のために発生する。
【００６３】
特定の実施態様において、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定するステップ１０３は、以下の方法、つまり、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取ること、及び、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が１より大きいかどうかを判定することと、数値が１より大きい場合に、アクセス命令が遅延を発生させることを示すこと、及び、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行するステップを実行すること、または、数値が１以下である場合に、通常キャッシュアクセス順序に従って、キャッシュにアクセスすることと、で実装されてもよい。
【００６４】
アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が１より大きいかどうかを判定することは、特に、バイナリビットでマーク付けされる遅延識別子の数値を１０進数値に変換することと、１０進数値が１より大きいかどうかを判定することとを含むことに注目すべきである。
【００６５】
ステップＳ１０５：遅延の発生を判定することに応じて、キャッシュにアクセスし、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する。
【００６６】
ステップＳ１０３において、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が１より大きい場合、それは、キャッシュアクセスまたはメモリアクセス時に、アクセス命令が遅延を発生させることを示し、この場合、ステップ１０５が実行される。
【００６７】
キャッシュアクセスまたはメモリアクセス時にアクセス命令が遅延を発生させることが判定された後、アクセス命令によって搬送される位置識別子のためにプリフェッチ操作が実行されてもよい。キャッシュにアクセスすること、及び、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することは、特に、ステップＳ１０５−１〜ステップＳ１０５−２を含み、それは図２を参照して以下で説明される。
【００６８】
図２を参照すると、図２は、本開示の例示的実施形態による、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行するフローチャートを示す。
【００６９】
ステップＳ１０５−１：アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値が読み取られる。
【００７０】
ＣＰＵによってアクセス命令を実行するプロセスにおいて、キャッシュまたはメモリへのアクセス時にアクセス命令が遅延を発生させる場合、次の、このようなアクセス命令の実行は、同じレベルのキャッシュまたはメモリへのアクセス時、依然として遅延を発生させ、性能を阻害する、すなわち、データが同じレベルのキャッシュまたはメモリで取得されることが示される。このような特徴に基づき、障害を予測することによって、アクセス命令が取得する必要があるデータがどのレベルのキャッシュまたはメモリに配置されるかを判定することが可能である。
【００７１】
アクセス命令によって搬送される遅延識別子は、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子であることに注目すべきである。
【００７２】
特に、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる遅延識別子は、２つのバイナリビットを使用することによりマーク付けされる。すなわち、ビット３及びビット２は、マーク付けのためにアクセス命令のキャッシュラインに設定される。バイナリビットのため、アクセス命令によって搬送される遅延識別子は以下の値を有する。  
ビット３  ビット２
０        ０
０        １
１        ０
１        １
ここで、ビット３及びビット２は、アクセス命令のキャッシュラインに設定される２つのバイナリビットであり、ビット３及びビット２の下のバイナリ数値の４つのグループは、ビット３及びビット２に対応する特定値である。
【００７３】
上記の値において、ビット３及びビット２の値を０及び０とするとき、このような２つのバイナリビットの数値から変換される１０進数値は０であり、それは、アクセス命令によって必要とされるデータがレベル１キャッシュで取得される、すなわち、アクセス命令の実行時に発生する遅延が複雑な演算の実行により生じることを示すことに注目すべきである。ビット３及びビット２の値を０及び１とするとき、このような２つのバイナリビットの数値から変換される１０進数値は１であり、それは、アクセス命令によって必要とされるデータがレベル２キャッシュで取得されることを示す。ビット３及びビット２の値を１及び０とするとき、このような２つのバイナリビットの数値から変換される１０進数値は２であり、それは、アクセス命令によって必要とされるデータがレベル３キャッシュで取得されることを示す。ビット３及びビット２の値を１及び１とするとき、このような２つのバイナリビットの数値から変換される１０進数値は３であり、
アクセス命令によって必要とされるデータがメモリで取得されることを示す。
【００７４】
たとえば、アクセス命令によって必要とされるデータの位置が、遅延が発生する位置によって得られる理由は、キャッシュデータ読み取りの開始から、必要とされるデータの読取りまで、いくつかのサイクルがかかるという点にある。たとえば、通常のアクセスの場合、レベル２キャッシュへのアクセス時、レベル２キャッシュの読取りは、レベル１キャッシュの読取りが終了した後にのみ開始され（レベル１キャッシュでの必要とされるデータの取得の失敗からレベル２キャッシュへのアクセスまで６サイクルかかる）、レベル２キャッシュを読み取るためにも複数サイクルかかる（たとえば、８周期）。アクセス命令によって必要とされるデータがレベル２キャッシュで取得された後、レベル３キャッシュはもはやアクセスされないので、レベル３キャッシュを読み取るためのサイクルはなく、したがって、キャッシュアクセス時に最終的に遅延が発生する位置は、アクセス命令によって必要とされるデータの位置である。
【００７５】
ビット３及びビット２の特定値の上記４つのグループにおいて、値の各グループは、アクセス命令によって必要とされるデータが取得される実際の位置によって割り振られ、値の各グループに対応する特定の意味はあらかじめ設定され、アクセス命令によって必要とされるデータの位置を判定するために使用される。
【００７６】
ステップＳ１０５−２：レベル１キャッシュへのアクセス時、位置識別子の数値に対応するキャッシュレベルまたはメモリは、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従ってアクセスされる。
【００７７】
このステップにおいて、アクセス命令によって搬送され、ビットでマーク付けされる、ステップＳ１０５−１で読み取られる位置識別子の数値を受信し、レベル１キャッシュへのアクセス時、位置識別子の数値に対応するキャッシュレベルまたはメモリは、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従ってアクセスされる。
【００７８】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の読み取られる数値が２である場合、レベル１キャッシュのデータが読み取られているとき、レベル３キャッシュのデータは同時にアクセスされる。
【００７９】
位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすることは、アクセス命令がレベル１キャッシュへのアクセスを開始するとき、同時に、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすること、あるいは、アクセス命令がレベル１キャッシュにアクセスする前に位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスする限り、アクセス命令がレベル１キャッシュにアクセスしている間に、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすることを含んでもよく、その両方が本開示の保護範囲に属していることに注目すべきである。
【００８０】
レベル１キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスするステップの後、アクセス命令がレベル１キャッシュにアクセスして、プリフェッチ操作を実行するときのミスを防ぐために、例示的実施形態の技術的解決法は、例示的実施態様を提供する。例示的実施態様は、ステップＳ１０６−１〜Ｓ１０６−２を含み、それは図３を参照して以下でさらに説明される。
【００８１】
図３を参照すると、図３は、本開示の例示的実施形態によるミス防止方法のフローチャートを示す。
【００８２】
ステップＳ１０６−１：アクセス命令によって必要とされるデータがレベル１キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうか判定される。
【００８３】
ステップＳ１０１において、データを取得するためのアクセス命令が読み取られているとき、アクセス命令が取得する必要があるデータのボリューム情報が取得され、アクセス命令によって必要とされるデータがレベル１キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうか判定される。
【００８４】
たとえば、レベル１キャッシュのデータ及び位置識別子の数値に対応するキャッシュレベルまたはメモリのデータが読み取られ、アクセス命令によって必要とされるデータと同じボリューム情報を有するデータ、及び、アクセス命令によって必要とされるデータと同じデータ型のデータが、読み取り時に取得されるかどうか判定される。
【００８５】
ステップＳ１０６−２：Ｓ１０６−１の判定の結果が「いいえ」である場合、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュの階層順による各レベルのキャッシュ、及びメモリが順次アクセスされる。
【００８６】
この例示的な実施形態において、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスすることは、以下の方法、つまり、アクセス命令によって必要とされるデータと同じ量の情報及び同じデータ型を有するデータが読み取り時に取得されない場合、アクセス命令によって必要とされるデータが取得されるまで、レベル２キャッシュ、レベル３キャッシュ、及びメモリに順次アクセスすることで実装されてもよい。
【００８７】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の読み取られる数値が２である。レベル１キャッシュのデータが読み取られるときにレベル３キャッシュのデータが同時にアクセスされた後、アクセス命令によって必要とされるデータが取得されない場合、レベル２キャッシュがアクセスされ、アクセス命令によって必要とされるデータがレベル２キャッシュで取得される場合、キャッシュアクセスは停止されて、メモリはアクセスされない。
【００８８】
アクセス命令によって必要とされるデータが取得された後、アクセス命令によって必要とされるデータの位置を取得するために、例示的実施形態の技術的解決法は、例示的実施態様を提供する。例示的実施態様において、アクセス命令によって必要とされるデータが取得された後、アクセス命令によって取得されたデータの位置は記録される。
【００８９】
たとえば、アクセス命令によって必要とされるデータがレベル２キャッシュで取得された場合、アクセス命令によって取得されたデータの位置は、レベル２キャッシュとして記録される。
【００９０】
ステップＳ１０７：アクセス命令によって搬送される遅延識別子及び位置識別子が、アクセス命令によって取得されたデータの位置に従って修正される。
【００９１】
この例示的な実施形態において、ステップ１０５の実行後、遅延が発生する場合、以下の操作を実行する。すなわち、アクセス命令によって支持される遅延識別子及び位置識別子をより正確にし、データ位置の変化によって生じるエラーを防ぐために、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する。アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する操作は、たとえば、ステップＳ１０７−１からＳ１０７−４を含んでもよく、それは以下のように説明される。
【００９２】
ステップＳ１０７−１：アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュであるかどうかを判定する。
【００９３】
この例示的な実施形態において、アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュであるかどうかを判定することは、以下の方法、つまり、アクセス命令によって取得されたデータの記録された位置を取得することと、アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュであるかどうかを判定することとで実装されてもよい。
【００９４】
ステップＳ１０７−２：Ｓ１０７−１での判定の結果が「はい」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はデクリメントされる。
【００９５】
このステップにおいて、Ｓ１０７−１での判定結果が受信され、アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュである場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はデクリメントされる。
【００９６】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントすることは、アクセス命令のキャッシュラインに設定されるビット１及びビット０の値を取得することと、ビット０の値から１を引くこととを含み、ここで、ビット０の値が０である場合、バイナリビットのため、ビット１から借りる。
【００９７】
たとえば、ビット１及びビット０の値が１及び１である場合、ビット０の値から１が引かれた後、ビット１及びビット０の値は１及び０である。ビット１及びビット０の値が１及び０である場合、ビット０の値から１と引くとき、ビット１から借りて、ビット１及びビット０の値は０及び１である。
【００９８】
ビット１及びビット０の値が０及び０である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がデクリメントされた後、ビット１及びビット０の値は依然として０及び０であることに注目すべきである。
【００９９】
プリフェッチ操作が実行されるとき、レベル１キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリの読取り時に、データ取得を繰り返すことを防ぐために、本例示的実施形態の技術的解決法は、例示的実施態様を提供する。例示的実施態様は、ステップＳ１０７−２−１〜Ｓ１０７−２−２を含んでもよく、それは図４を参照して以下でさらに説明される。
【０１００】
図４を参照すると、図４は、本開示の例示的実施形態による、データ破棄方法のフローチャートを示す。
【０１０１】
ステップＳ１０７−２−１：アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定する。
【０１０２】
アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリをさらに含む、すなわち、アクセス命令によって取得されたデータの２つの位置が記録されているかどうか判定される。
【０１０３】
たとえば、レベル１キャッシュ及びレベル３キャッシュの両方がアクセス命令によって必要とされるデータを含み、アクセス時にプリフェッチ操作がレベル３キャッシュで実行される場合、アクセス命令によって取得されたデータの位置が記録されるとき、レベル１キャッシュ及びレベル３キャッシュが記録される。
【０１０４】
ステップＳ１０７−２−２：Ｓ１０７−２−１での判定の結果が「はい」である場合、
位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータは、廃棄される。
【０１０５】
このステップにおいて、ステップＳ１０７−２−１の判定結果が受信され、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリをさらに含む場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータは、廃棄される。
【０１０６】
たとえば、アクセス命令によって必要とされるデータがレベル１キャッシュ及びレベル３キャッシュに含まれる場合、プリフェッチ操作によってレベル３キャッシュから取得されたデータは廃棄される。
【０１０７】
ステップＳ１０７−３：Ｓ１０７−１での判定の結果が「いいえ」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はインクリメントされ、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうか判定される。
【０１０８】
このステップにおいて、ステップＳ１０７−１の判定結果が受信され、アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュでない場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はインクリメントされ、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうか判定される。
【０１０９】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントすることは、アクセス命令のキャッシュラインに設定されるビット１及びビット０の値を取得することと、ビット０の値に１を加えることとを含む。ビット０の値が１である場合、バイナリビットのため、ビット１に繰り上げられる。
【０１１０】
たとえば、ビット１及びビット０の値が０及び１である場合、ビット０の値に１を加えるとき、ビット１に繰り上げられ、ビット１及びビット０の値は１及び０となる。ビット１及びビット０の値が１及び０である場合、ビット０の値に１を加え、ビット１及びビット０の値は１及び１となる。
【０１１１】
ビット１及びビット０の値が１及び１であるとき、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がインクリメントされた後、ビット飽和のため、ビット１及びビット０の値は依然として１及び１であることに注目すべきである。
【０１１２】
この例示的な実施形態において、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定することは、以下の方法、つまり、アクセス命令によって取得されたデータの記録された位置、及び位置識別子の数値に対応するキャッシュレベルまたはメモリを取得することと、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリと一致するかどうかを判定することと
で実装されてもよい。
【０１１３】
たとえば、アクセス命令によって取得される前記データの記録された位置はレベル２キャッシュであり、位置識別子の数値に対応する位置はレベル３キャッシュである。
【０１１４】
ステップＳ１０７−４：Ｓ１０７−３での判定の結果が「いいえ」である場合、アクセス命令によって搬送される位置識別子は、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定される。
【０１１５】
このステップにおいて、ステップＳ１０７−３の判定結果が受信され、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリと一致しない場合、アクセス命令によって支持される位置識別子は、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定される。
【０１１６】
この例示的な実施形態において、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子を、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定することは、以下の方法、つまり、アクセス命令によって取得されたデータの記録された位置を取得することと、アクセス命令によって取得されたデータの位置を、ビット３及びビット２のあらかじめ設定された対応する関係に従って、ビット３及びビット２の対応する特定値に変換することと、ビット３及びビット２の特定値に従って、アクセス命令によって搬送される位置識別子を設定することとで実装されてもよい。
【０１１７】
たとえば、アクセス命令によって取得されたデータの記録された位置は、レベル２キャッシュである。アクセス命令によって搬送される位置識別子に対応するビット３及びビット２の値は、１及び０であり、レベル３キャッシュがプリフェッチ操作時にアクセスされることを示す。次いで、アクセス命令によって取得されたデータの記録された位置は、レベル２キャッシュであり、対応するビット３及びビット２の特定値０及び１に変換される。こうして、アクセス命令によって搬送される位置識別子に対応するビット３及びビット２の値は設定され、アクセス命令によって搬送される位置識別子に対応するビット３及びビット２の値は、０及び１に更新される。
【０１１８】
従来のキャッシュ及びメモリアクセスは、キャッシュのマルチレベルキャッシュアーキテクチャによって、各レベルに順次アクセスすることであるので、キャッシュ及びメモリアクセス時に遅延が発生する。たとえば、アクセス命令によって必要とされるデータはメモリにあり、各レベルは、マルチレベルキャッシュアーキテクチャによって順次アクセスされる。メモリにアクセスする前に、レベル１キャッシュ、レベル２キャッシュ、及びレベル３キャッシュにアクセスする必要があり、そのため、アクセス遅延が発生する。しかしながら、本開示の例示的実施形態による技術的解決法は、障害予測によって、アクセス命令の実行時に遅延が発生するかどうかを判定し、アクセス命令によって必要とされるデータがどのレベルのキャッシュまたはメモリに配置されるかを判定し、マルチレベルキャッシュアーキテクチャによって各レベルが順次アクセスされるとき、アクセス命令によって必要とされるデータの予測された位置にアクセスし、それはキャッシュまたはメモリアクセスのための時間を節約し、データのヒット率を向上させ、キャッシュまたはメモリアクセス時のミス率を小さくし、それによって、対応して、キャッシュアクセス時の消費電力を低減し、ＣＰＵ性能を向上させる。
【０１１９】
上記の例示的実施形態において、キャッシュにアクセスするための方法が提供される。キャッシュにアクセスするための方法に対応し、本開示は、キャッシュにアクセスするための装置をさらに提供する。装置の例示的実施形態は、その操作が方法の例示的実施形態の操作と略同様であるので、比較的簡単に説明される。関連する部分については、方法の例示的実施形態における説明を参照してもよい。装置の例示的実施形態の以下の説明は、単に例示しただけのものである。キャッシュにアクセスするための装置の例示的実施形態は、以下のように説明される。
【０１２０】
図５を参照すると、図５は、本開示の例示的実施形態による、キャッシュにアクセスするための装置５００の概略図を示す。
【０１２１】
装置５００は、１つまたは複数のプロセッサ５０２またはデータ処理ユニット（複数可）、及び１つまたは複数のコンピュータ記憶装置５０４を含む。装置５００は、１つまたは複数の入出力インタフェース５０６と、ネットワークインタフェース（複数可）５０８とをさらに含んでもよい。コンピュータ記憶装置５０４は、コンピュータ可読媒体の一例である。
【０１２２】
コンピュータ記憶装置５０４は、アクセス命令読取りユニット５０１と、遅延識別子判定ユニット５０３と、キャッシュアクセスプリフェッチユニット５０５と、識別子修正ユニット５０７とを含む、複数のモジュールまたはユニットをその中に格納してもよい。
【０１２３】
アクセス命令読取りユニット５０１は、データを取得するためのアクセス命令を読み取る。
【０１２４】
遅延識別子判定ユニット５０３は、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定する。
【０１２５】
キャッシュアクセスプリフェッチユニット５０５は、遅延識別子判定ユニット５０３から判定結果を受信し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する。
【０１２６】
識別子修正ユニット５０７は、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する。
【０１２７】
任意選択的に、遅延識別子判定ユニット５０３は、ビットでマーク付けされ、アクセス命令のキャッシュラインに設定される識別子に従って、アクセス命令が遅延を発生させるかどうかをさらに判定する。
【０１２８】
任意選択的に、遅延識別子判定ユニット５０３は、アクセス命令によって搬送される遅延識別子に従って、データミスの場合のレベル毎キャッシュアクセス時に発生する遅延、または、アクセス命令が演算を行うときに発生する遅延をアクセス命令が発生させるかどうかをさらに判定する。
【０１２９】
任意選択的に、遅延識別子判定ユニット５０３は、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値をさらに読み取る。
【０１３０】
任意選択的に、遅延識別子判定ユニット５０３は、数値読取りサブユニットと、キャッシュアクセスプリフェッチトリガサブユニットとを含む。
【０１３１】
数値読取りサブユニットは、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取り、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が１より大きいかどうかを判定する。
【０１３２】
キャッシュアクセスプリフェッチトリガサブユニットは、数値読取りサブユニットから判定結果を受信し、数値が１より大きい場合、キャッシュアクセスプリフェッチユニットを起動する。
【０１３３】
任意選択的に、キャッシュアクセスプリフェッチユニット５０５は、ビット数値読取りサブユニットと、キャッシュアクセスプリフェッチサブユニットとを含む。
【０１３４】
ビット数値読取りサブユニットは、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値を読み取る。
【０１３５】
キャッシュアクセスプリフェッチサブユニットは、レベル１キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスする。
【０１３６】
任意選択的に、キャッシュアクセスプリフェッチユニット５０５は、データ取得判定サブユニットと、レベル毎アクセスサブユニットとをさらに含む。
【０１３７】
レベル１キャッシュへのアクセス時、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスした後、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、データ取得判定サブユニットは、アクセス命令によって必要とされるデータがレベル１キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうかを判定する。
【０１３８】
レベル毎アクセスサブユニットは、データ取得判定サブユニットから判定結果を受信し、結果が「いいえ」である場合、複数のレベルのキャッシュの階層順に従って、アクセス命令によって必要とされるデータが取得されるまで、各レベルのキャッシュ及びメモリに順次アクセスする。
【０１３９】
任意選択的に、装置５００は、位置記録ユニット（図５に示されない）をさらに含んでもよい。位置記録ユニットは、アクセス命令によって取得されたデータの位置を記録する。
【０１４０】
任意選択的に、識別子修正ユニット５０７は、位置判定サブユニットと、デクリメントサブユニットと、インクリメントサブユニットと、位置識別子設定サブユニットと（すべて示されない）を含む。
【０１４１】
位置判定サブユニットは、アクセス命令によって取得されたデータの記録された位置がレベル１キャッシュであるかどうかを判定する。
【０１４２】
デクリメントサブユニットは、位置判定サブユニットから判定結果を受信し、判定結果が「はい」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントする。
【０１４３】
インクリメントサブユニットは、位置判定サブユニットから判定結果を受信し、判定結果が「いいえ」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントし、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定する。
【０１４４】
位置識別子設定サブユニットは、インクリメントサブユニットから判定結果を受信し、
判定結果が「いいえ」である場合、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子を、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定する。
【０１４５】
任意選択的に、デクリメントサブユニットは、繰り返し位置判定サブユニットと、データ破棄サブユニットと（どちらも示されない）を含む。
【０１４６】
繰り返し位置判定サブユニットは、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がデクリメントされた後、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定する。
【０１４７】
データ破棄サブユニットは、繰り返し位置判定サブユニットの判定結果を受信し、判定結果が「はい」である場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータを廃棄する。
【０１４８】
上記の例示的実施形態において、キャッシュにアクセスするための方法及びキャッシュにアクセスするための装置が提供される。さらに、本開示は電子機器をさらに提供し、電子機器の例示的実施形態は以下のように説明される。
【０１４９】
図６を参照すると、図６は、本開示の例示的実施形態による電子機器６００の概略図である。
【０１５０】
電子機器は、ディスプレイ６０１と、１つまたは複数のプロセッサ６０３またはデータ処理ユニット（複数可）と、１つまたは複数のコンピュータ記憶装置６０５とを含む。コンピュータ記憶装置６０５は、コンピュータ可読媒体の一例である。
【０１５１】
コンピュータ記憶装置６０５は、プロセッサ６０３によって読み取られて、実行されるとき、データを取得するためのアクセス命令を読み取ることと、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することと、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することとを実行する、キャッシュ並列アクセスプログラムまたはコンピュータ実行可能命令を格納する。
【０１５２】
典型的な構成において、装置は、１つまたは複数の中央処理装置（ＣＰＵ）と、Ｉ／Ｏインタフェースと、ネットワークインタフェースと、コンピュータ可読媒体とを含む。
【０１５３】
コンピュータ可読媒体は、揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、及び／または不揮発性メモリ、たとえば、リードオンリーメモリ（ＲＯＭ）またはフラッシュＲＡＭなどを含んでもよい。
【０１５４】
１．コンピュータ可読媒体は、恒久的な、非恒久的な、携帯型の、及び非携帯型の媒体を含み、それらは任意の方法または技術によって情報記憶を実装することができる。情報は、コンピュータ実行可能命令、データ構造、プログラムモジュール、または他のデータでもよい。コンピュータの記憶媒体の例は、演算装置によってアクセスできる情報を格納するために使用することができる、相変化ＲＡＭ（ＰＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、他のタイプのランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他の内部メモリ技術、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、デジタル多目的ディスク（ＤＶＤ）または他の光学メモリ、カセット、カセット及びディスクメモリまたは他の磁気メモリデバイス、あるいは任意の他の非伝送媒体を含むが、これらに限定されるものではない。本明細書の定義に従って、コンピュータ可読媒体には、変調データ信号及びキャリアなどの非一時的コンピュータ可読媒体（一時的な媒体）を含まない。
【０１５５】
２．当業者は、本開示の例示的実施形態は、方法、システム、またはコンピュータプログラム製品として実装されてもよいことを理解すべきである。したがって、本開示は、全面的にハードウェアの実施形態、全面的にソフトウェアの実施形態、またはソフトウェアとハードウェアとを組み合わせた実施形態として実装されてもよい。さらに、本開示は、コンピュータ実行可能命令を格納する（磁気ディスクメモリ、ＣＤ−ＲＯＭ、光学メモリなどを含むが、これらに限定されない）１つまたは複数のコンピュータ使用可能記憶媒体上に実装されるコンピュータプログラム製品でもよい。
【０１５６】
本開示の例示的実施形態が上で開示されたが、それらは本開示を限定するために使用すべきではない。当業者は、本開示の精神と範囲から逸脱することなく、可能な変更及び修正を行ってもよい。したがって、本開示の保護範囲は、本開示の特許請求の範囲によって定義される範囲でなければならない。
【図１】
2018536230.tif 000003
【図２】
2018536230.tif 000004
【図３】
2018536230.tif 000005
【図４】
2018536230.tif 000006
【図５】
2018536230.tif 000007
【図６】
2018536230.tif 000008
【国際調査報告】
2018536230.tif 000009