(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-10
(45)【発行日】2022-03-18
(54)【発明の名称】キャッシュへのアクセス
(51)【国際特許分類】
G06F 12/0862 20160101AFI20220311BHJP
G06F 12/0897 20160101ALI20220311BHJP
【FI】
G06F12/0862 100
G06F12/0897 100
(21)【出願番号】P 2018522055
(86)(22)【出願日】2016-10-28
(86)【国際出願番号】 US2016059352
(87)【国際公開番号】W WO2017075372
(87)【国際公開日】2017-05-04
【審査請求日】2019-10-10
(31)【優先権主張番号】201510717175.9
(32)【優先日】2015-10-29
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】リン マー
(72)【発明者】
【氏名】ジーホン ワン
(72)【発明者】
【氏名】レイ ジャン
【審査官】酒井 恭信
(56)【参考文献】
【文献】特開2007-213578(JP,A)
【文献】米国特許出願公開第2007/0186073(US,A1)
【文献】中国特許出願公開第101017430(CN,A)
【文献】特開2008-226025(JP,A)
【文献】米国特許出願公開第2008/0229072(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08 - 12/0897
(57)【特許請求の範囲】
【請求項1】
データを取得するためのアクセス命令を読み取ることと、
前記アクセス命令によって搬送される遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定することと、
前記アクセス命令が前記遅延を発生させることの判定に応じて、
前記アクセス命令によって搬送される位置識別子に従って、キャッシュにアクセス
し、プリフェッチ操作を実行することであって、前記位置識別子は、前記アクセス命令によって必要とされる前記データがそこから取得されることになるキャッシュレベルまたはメモリを表す、実行することと、
前記アクセス命令によって取得されたデータの位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することであって、前記アクセス命令によって取得された前記データの前記位置は、前記アクセス命令によって必要とされる前記データがそこから取得されたキャッシュレベルまたはメモリを表す、修正することと
を含む、
コンピュータによって実行される、キャッシュにアクセスするための方法。
【請求項2】
前記遅延が、キャッシュミスの場合のレベル毎キャッシュアクセス時に発生する遅延を含む、
請求項1に記載のキャッシュにアクセスするための方法。
【請求項3】
前記遅延が、前記アクセス命令が演算を行うときに発生する遅延を含む、
請求項1に記載のキャッシュにアクセスするための方法。
【請求項4】
前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子が、前記アクセス命令を格納する命令キャッシュのキャッシュラインに設定されるビットでマーク付けされる識別子である、
請求項1に記載のキャッシュにアクセスするための方法。
【請求項5】
前記アクセス命令によって搬送される前記遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定することが、
前記アクセス命令が遅延を発生させるかどうかを判定するために、ビットでマーク付けされる前記遅延識別子の数値を読み取ること
を含む、
請求項1に記載のキャッシュにアクセスするための方法。
【請求項6】
前記アクセス命令が前記遅延を発生させるかどうかを判定するために、ビットでマーク付けされる前記遅延識別子の前記数値を読み取ることが、
前記遅延識別子の前記数値を読み取ることと、
前記遅延識別子の前記数値が1より大きいかどうかを判定することと、
前記数値が1より大きいことの判定に応じて、前記アクセス命令が前記遅延を発生させることを示し、
前記位置識別子に従って、前記キャッシュにアクセスし、前記プリフェッチ操作を実行することと
を含む、
請求項5に記載のキャッシュにアクセスするための方法。
【請求項7】
前記アクセス命令が前記遅延を発生させることの判定に応じて、前記アクセス命令によって搬送される前記位置識別子に従って、前記キャッシュにアクセスし、前記プリフェッチ操作を実行することが、
ビットでマークを付けられる前記位置識別子の数値を読み取ることと、
前記位置識別子の前記数値に従って、前記位置識別子の前記数値に対応するキャッシュレベルまたはメモリにアクセスすることと
を含む、
請求項1に記載のキャッシュにアクセスするための方法。
【請求項8】
前記位置識別子の前記数値に従って、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリにアクセスした後、
前記アクセス命令によって必要とされる前記データが
、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリで取得されるかどうかを判定することと、
前記データが取得されないことの判定に応じて、前記アクセス命令によって必要とされる前記データが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスすることと
をさらに含む、
請求項7に記載のキャッシュにアクセスするための方法。
【請求項9】
前記アクセス命令によって必要とされる前記データが取得された後、前記アクセス命令によって取得された前記データの前記位置を記録すること
をさらに含む、
請求項8に記載のキャッシュにアクセスするための方法。
【請求項10】
前記アクセス命令によって取得された前記データの前記位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することが、
前記アクセス命令によって必要とされる前記データが取得された後、前記アクセス命令によって取得された前記データの前記位置を記録することと、
前記アクセス命令によって取得された前記データの前記記録された位置がレベル1キャッシュであるかどうかを判定することと、
前記アクセス命令によって取得された前記データの前記記録された位置が前記レベル1キャッシュであることの判定に応じて、前記遅延識別子をデクリメントすることと
を含む、
請求項1に記載のキャッシュにアクセスするための方法。
【請求項11】
前記遅延識別子をデクリメントした後、
前記アクセス命令によって取得された前記データの前記記録された位置が、前記位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定することと、
前記アクセス命令によって取得された前記データの前記記録された位置が前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリを含むことの判定に応じて、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリから取得される、前記アクセス命令によって必要とされる前記データを廃棄することと
をさらに含む、
請求項10に記載のキャッシュにアクセスするための方法。
【請求項12】
前記アクセス命令によって取得された前記データの前記位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することが、
前記アクセス命令によって必要とされる前記データが取得された後、前記アクセス命令によって取得された前記データの前記位置を記録することと、
前記アクセス命令によって取得された前記データの前記記録された位置がレベル1キャッシュであるかどうかを判定することと、
前記アクセス命令によって取得された前記データの前記記録された位置が前記レベル1キャッシュではないことの判定に応じて、
前記遅延識別子をインクリメントすることと、
前記アクセス命令によって取得された前記データの前記記録された位置が、前記位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定することと、
前記アクセス命令によって取得された前記データの前記記録された位置が前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリではないことの判定に応じて、
前記アクセス命令によって取得された前記データの前記記録された位置に従って、前記位置識別子がキャッシュレベルまたはメモリを表
すように、
前記位置識別子を設定することであって、
前記位置識別子から、前記アクセス命令によって必要とされる前記データが取得される
、前記設定することと
を含む、
請求項1に記載のキャッシュにアクセスするための方法。
【請求項13】
キャッシュにアクセスするための装置であって、
データを取得するためのアクセス命令を読み取るアクセス命令読取りユニットと、
前記アクセス命令によって搬送される遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定する遅延識別子判定ユニットと、
前記アクセス命令が前記遅延を発生させることの判定に応じて、
前記アクセス命令によって搬送される位置識別子に従って、前記キャッシュにアクセス
し、プリフェッチ操作を実行するキャッシュアクセスプリフェッチユニットであって、前記位置識別子は、前記アクセス命令によって必要とされる前記データがそこから取得されることになるキャッシュレベルまたはメモリを表す、前記キャッシュアクセスプリフェッチユニットと、
前記アクセス命令によって取得される前記データの位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正する識別子修正ユニットであって、前記アクセス命令によって取得された前記データの前記位置は、前記アクセス命令によって必要とされる前記データがそこから取得されたキャッシュレベルまたはメモリを表す、前記識別子修正ユニットと
を備える、
前記キャッシュにアクセスするための装置。
【請求項14】
前記遅延識別子判定ユニットが、アクセス命令を格納する命令キャッシュのキャッシュラインに設定されるビットでマーク付けされる遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかをさらに判定する、
請求項13に記載のキャッシュにアクセスするための装置。
【請求項15】
前記遅延識別子判定ユニットが、前記遅延識別子に従って、前記アクセス命令が、キャッシュミスの場合のレベル毎キャッシュアクセス時、または、前記アクセス命令が演算を行うときに発生する前記遅延を発生させるかどうかをさらに判定する、
請求項13に記載のキャッシュにアクセスするための装置。
【請求項16】
前記遅延識別子判定ユニットが、前記アクセス命令が前記遅延を発生させるかどうかを判定するために、ビットでマーク付けされる前記遅延識別子の数値をさらに読み取る、
請求項13に記載のキャッシュにアクセスするための装置。
【請求項17】
前記遅延識別子判定ユニットが、
バイナリビットでマーク付けされる前記遅延識別子の前記数値を読み取り、前記遅延識別子の前記数値が1より大きいかどうかを判定する数値読取りサブユニットと、
前記数値読取りサブユニットから判定結果を受信し、前記数値が1より大きいことの判定結果における結果の判定に応じて、キャッシュアクセスプリフェッチユニットを起動するキャッシュアクセスプリフェッチトリガサブユニットと
を含む、
請求項16に記載のキャッシュにアクセスするための装置。
【請求項18】
前記キャッシュアクセスプリフェッチユニットが、
ビットでマーク付けされる前記位置識別子の数値を読み取るビット数値読取りサブユニットと、
前記位置識別子の前記数値に従って、前記位置識別子の前記数値に対応するキャッシュレベルまたはメモリにアクセスするキャッシュアクセスプリフェッチサブユニットと
を含む、
請求項13に記載のキャッシュにアクセスするための装置。
【請求項19】
前記キャッシュアクセスプリフェッチユニットが、
ビットでマーク付けされる前記位置識別子の数値に従って、前記位置識別子の前記数値に対応するキャッシュレベルまたはメモリにアクセスした後、前記アクセス命令によって必要とされる前記データが
、前記位置識別子の前記数値に対応する前記キャッシュレベルまたはメモリで取得されるかどうかを判定するデータ取得判定サブユニットと、
前記データ取得判定サブユニットから結果を受信し、前記結果は前記データが取得されないことであるとの判定に応じて、前記アクセス命令によって必要とされる前記データが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスするレベル毎アクセスサブユニットと
を含む、
請求項13に記載のキャッシュにアクセスするための装置。
【請求項20】
電子機器であって、
キャッシュおよびメモリと、
1つまたは複数のプロセッサと、
コンピュータ実行可能命令を含むコンピュータ実行可能プログラムを格納する1つまたは複数のコンピュータ記憶装置と、を備え、前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサによって実行されると
き、
データを取得するためのアクセス命令を読み取ることと、
前記アクセス命令によって搬送される遅延識別子に従って、前記アクセス命令が遅延を発生させるかどうかを判定することと、
前記アクセス命令が前記遅延を発生させることの判定に応じて、
前記アクセス命令によって搬送される位置識別子に従って、前記キャッシュにアクセス
し、プリフェッチ操作を実行することであって、前記位置識別子は、前記アクセス命令によって必要とされる前記データがそこから取得されることになる
キャッシュのキャッシュレベルまたはメモリを表す、実行することと、
前記アクセス命令によって取得された前記データの位置に従って、前記アクセス命令によって搬送される前記遅延識別子及び前記位置識別子を修正することであって、前記アクセス命令によって取得された前記データの前記位置は、前記アクセス命令によって必要とされる前記データがそこから取得された
キャッシュのキャッシュレベルまたはメモリを表す、修正することと
を含む行為を
前記1つまたは複数のプロセッサに実行させる、
前記電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本開示は、参照によりその全体が本明細書に組み込まれる、2015年10月29日に出願された「Method, Device, and Electronic Apparatus for Accessing Cache」と題される中国特許出願第201510717175.9号の利益を主張する。
【0002】
本開示は、コンピュータ技術の分野に関し、より詳細には、キャッシュにアクセスするための方法、及びキャッシュにアクセスするための装置に関する。本開示は、電子機器にも関する。
【背景技術】
【0003】
メモリアクセス速度の遅さと関連する問題を解決するために、マルチレベルキャッシュアーキテクチャが、データの時間的及び空間的局所性の特徴に従って導入される。用語「キャッシュ」は、1つまたは複数の小型で高速の関連する記憶装置を指す。プロセッサが読み書きするとき、プロセッサは最初に、ターゲットデータがキャッシュに存在するかどうか確認する。存在する場合、プロセッサは最初に、他の記憶域(メモリなど)ではなくキャッシュに向かう。マルチレベルキャッシュアーキテクチャは、アクセス性能を向上させる。レベル1キャッシュへのアクセス時、ターゲットデータがレベル1キャッシュに存在しない場合、すなわち、ミスが起こった場合、レベル2キャッシュがアクセスされる。ターゲットデータがレベル2キャッシュにも存在しない場合、ターゲットデータが取得されるまで、次のレベルのキャッシュがアクセスされる。マルチレベルキャッシュアーキテクチャは、アクセス遅延を減らすためにレベル1キャッシュ及びレベル2キャッシュを設定し、ミス率を減らすためにレベル3キャッシュを設定するが、マルチレベルキャッシュアーキテクチャの導入は、各レベルのキャッシュへのアクセス時の遅延も増大させる。たとえば、レベル1キャッシュへのアクセス時のミスからレベル2キャッシュへのアクセスまでは6サイクルかかり、レベル2キャッシュへのアクセス時のミスからレベル3キャッシュへのアクセスまでは8サイクルかかる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
示すように、マルチレベルキャッシュアーキテクチャがアクセス遅延を減らすために設定されるが、キャッシュアクセス時のミスかつ低ヒット率の場合、各レベルのキャッシュへのレベル毎アクセスによって生じるアクセス遅延は段階的に蓄積し、それは最終的に大きな遅延となる。さらに、各レベルのキャッシュへのレベル毎アクセスは、過剰に電力を消費する。各レベルのキャッシュに同時にアクセスする場合、ターゲットデータ取得のためのヒット率が向上し、ミスが減ることがあるが、過剰に電力を消費する。
【課題を解決するための手段】
【0005】
本概要は、以下の「発明を実施するための形態」にさらに記載される概念を選択し、簡略化した形態で紹介するために示される。本概要は、本請求項のすべての主要な特徴または必須の特徴を特定することは意図しておらず、本請求項の主題の範囲を決定する助けとしてこれを単独で用いることも意図していない。たとえば、用語「技術(複数可)または技術的解決法(複数可)」は、上の文脈によってかつ本開示を通して可能にされる機器(複数可)、システム(複数可)、方法(複数可)、及び/またはコンピュータ可読命令を指してもよい。
【0006】
本開示は、キャッシュアクセス時に遅延する従来の技術における問題を解決する、キャッシュにアクセスするための方法、及びキャッシュにアクセスするための装置を提供する。本開示は、電子機器にも関する。
【0007】
本開示は、キャッシュにアクセスするための方法を提供し、ここで、キャッシュにアクセスするための方法は、
データを取得するためのアクセス命令を読み取ることと、
アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することと、
遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、
アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することと
を含む。
【0008】
任意選択的に、アクセス命令によって搬送される遅延識別子及び位置識別子は、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子である。
【0009】
任意選択的に、遅延は、
データミスの場合のレベル毎キャッシュアクセス時に発生する遅延、または、アクセス命令が演算を行うときに発生する遅延
を含む。
【0010】
任意選択的に、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することは、
アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値を読み取ること
を含む。
【0011】
任意選択的に、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値を読み取ることは、特に、
アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取ること、及び、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が1より大きいかどうかを判定することと、
数値が1より大きい場合、アクセス命令が遅延を発生させることを示すこと、及び、キャッシュにアクセスするステップを実行し、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと
を含む。
【0012】
任意選択的に、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することは、
アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値を読み取ることと、
レベル1キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすることと
を含む。
【0013】
任意選択的に、レベル1キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスするステップの後、方法は、
アクセス命令によって必要とされるデータが、レベル1キャッシュ、及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうかを判定することと、
取得されない場合、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスすることと
を含む。
【0014】
任意選択的に、アクセス命令によって必要とされるデータが取得された後、方法は、
アクセス命令によって取得されたデータの位置を記録すること。
をさらに含む。
【0015】
任意選択的に、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することは、
アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュであるかどうかを判定すること、
レベル1キャッシュである場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントすること、
または、
レベル1キャッシュではない場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントすること、及び、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定すること、ならびに、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリではないことが判定された場合、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように、アクセス命令によって搬送される位置識別子を設定すること
を含む。
【0016】
任意選択的に、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントするステップの後、方法は、
アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定すること、
及び、
含む場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータを廃棄すること
を含む。
【0017】
同様に、本開示は、キャッシュにアクセスするための装置をさらに提供し、ここで、キャッシュにアクセスするための装置は、
データを取得するためのアクセス命令を読み取るアクセス命令読取りユニットと、
アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定する遅延識別子判定ユニットと、
遅延識別子判定ユニットから判定結果を受信し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する、キャッシュアクセスプリフェッチユニットと、
アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する識別子修正ユニットと
を含む。
【0018】
任意選択的に、遅延識別子判定ユニットは、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子に従って、アクセス命令が遅延を発生させるかどうかを特に判定する。
【0019】
任意選択的に、遅延識別子判定ユニットは、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が、データミスの場合のレベル毎キャッシュアクセス時に発生する遅延、または、アクセス命令が演算を行うときに発生する遅延を発生させるかどうかを特に判定する。
【0020】
任意選択的に、遅延識別子判定ユニットは、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値を特に読み取る。
【0021】
任意選択的に、遅延識別子判定ユニットは、
アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取り、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が1より大きいかどうかを判定する数値読取りサブユニットと、
数値読取りサブユニットから判定結果を受信し、数値が1より大きい場合、キャッシュアクセスプリフェッチユニットを起動するキャッシュアクセスプリフェッチトリガサブユニットと
を含む。
【0022】
任意選択的に、キャッシュアクセスプリフェッチユニットは、
アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値を読み取るビット数値読取りサブユニットと、
レベル1キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスするキャッシュアクセスプリフェッチサブユニットと
を含む。
【0023】
任意選択的に、キャッシュアクセスプリフェッチユニットは、
レベル1キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスした後、アクセス命令によって必要とされるデータが、レベル1キャッシュ、及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうかを判定するデータ取得判定サブユニットと、
データ取得判定サブユニットから判定結果を受信し、取得されない場合、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスするレベル毎アクセスサブユニットと
をさらに含む。
【0024】
任意選択的に、キャッシュにアクセスするための装置は、
アクセス命令によって取得されたデータの位置を記録する位置記録ユニット
をさらに含む。
【0025】
任意選択的に、識別子修正ユニットは、
アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュであるかどうかを判定する位置判定サブユニットと、
位置判定サブユニットから判定結果を受信し、判定結果が「はい」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントするデクリメントサブユニットと、
位置判定サブユニットから判定結果を受信し、判定結果が「はい」でない場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントし、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定するインクリメントサブユニットと、
インクリメントサブユニットから判定結果を受信し、判定結果が「はい」でない場合、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように、アクセス命令によって搬送される位置識別子を設定する位置識別子設定サブユニットと
を含む。
【0026】
任意選択的に、デクリメントサブユニットは、
アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がデクリメントされた後、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定する繰り返し位置判定サブユニットと、
繰り返し位置判定サブユニットから判定結果を受信し、判定結果が「はい」である場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータを廃棄するデータ破棄サブユニットと
を含む。
【0027】
さらに、本開示は、
ディスプレイと、
1つまたは複数のプロセッサと、
プロセッサによって読み取られて、実行されるとき、データを取得するためのアクセス命令を読み取ることと、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することと、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することとを実行する、キャッシュ並列アクセスプログラムまたはコンピュータ実行可能命令を格納する1つまたは複数のコンピュータ記憶装置と
を含む電子機器をさらに提供する。
【0028】
従来の技術と比較して、本開示は以下の利点を有する。
【0029】
本開示による、キャッシュにアクセスするための方法、キャッシュにアクセスするための装置、及び電子機器は、データを取得するためのアクセス命令を読み取り、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行し、アクセス命令によって必要とされるデータが取得された位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する。技術的解決法は、キャッシュアクセス時の低ヒット率の問題を解決し、ミスの確率を減少させ、ターゲットデータ取得時の各レベルのキャッシュへのレベル毎アクセスによって生じるアクセス遅延を減少させ、それに対応して、キャッシュアクセス時に発生する消費電力を低減し、CPU性能を向上させる。
【0030】
本開示の例示的実施形態を明確に説明するために、図面の概要が以下で説明される。明らかに、以下で説明される図面は、本開示の単なるいくつかの例示的実施形態であり、これらの図面に従って、当業者によって他の図面が得られてもよい。
【図面の簡単な説明】
【0031】
【
図1】本開示の例示的実施形態による、キャッシュにアクセスするための方法のフローチャートである。
【
図2】本開示の例示的実施形態による、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行するフローチャートである。
【
図3】本開示の例示的実施形態によるミス防止方法のフローチャートである。
【
図4】本開示の例示的実施形態によるデータ廃棄方法のフローチャートである。
【
図5】本開示の例示的実施形態による、キャッシュにアクセスするための装置の概略図である。
【
図6】本開示の例示的実施形態による電子機器の概略図である。
【発明を実施するための形態】
【0032】
本開示の上記の目的、特徴、及び利点をより明確に理解するために、本開示は添付図面及び特定の実施態様を参照してさらに詳細に説明される。矛盾なしに、本開示の例示的実施形態及び例示的実施形態の特徴を互いに組み合わせてもよいことに注目すべきである。
【0033】
本開示を完全に理解するために、特定の詳細が以下の説明において図示されている。しかしながら、本開示は、本明細書の説明と異なる複数の他のモードで実装されてもよく、本開示の精神を逸脱しない範囲で、類似した展開が当業者によって行われてもよい。したがって、本開示は、以下で開示される具体的な実施態様によって限定されない。
【0034】
本開示の例示的実施形態は、キャッシュにアクセスするための方法及びキャッシュにアクセスするための装置を提供し、本開示の例示的実施形態は電子機器も提供し、それらは1つずつ以下で詳細に説明される。
【0035】
マルチレベルキャッシュアーキテクチャは、アクセス性能を向上させる。レベル1キャッシュへのアクセス時、ターゲットデータがレベル1キャッシュに存在しない場合、すなわち、ミスが起こった場合、レベル2キャッシュがアクセスされる。ターゲットデータがレベル2キャッシュにも存在しない場合、ターゲットデータが取得されるまで、次のレベルのキャッシュがアクセスされる。マルチレベルキャッシュアーキテクチャは、アクセス遅延を減らすためにレベル1キャッシュ及びレベル2キャッシュを設定し、ミス率を減らすためにレベル3キャッシュを設定するが、マルチレベルキャッシュアーキテクチャの導入は、各レベルのキャッシュへのアクセス時の遅延を増大もさせる。たとえば、レベル1キャッシュへのアクセス時のミスからレベル2キャッシュへのアクセスまでは6サイクルかかり、レベル2キャッシュへのアクセス時のミスからレベル3キャッシュへのアクセスまでは8サイクルかかる。示すように、マルチレベルキャッシュアーキテクチャがアクセス遅延を減らすために設定されるが、キャッシュアクセス時のミスかつ低ヒット率の場合には、各レベルのキャッシュへのレベル毎アクセスによって生じるアクセス遅延はなおも段階的に蓄積し、それは最終的に大きな遅延となる。さらに、各レベルのキャッシュへのレベル毎アクセスは、過剰に電力を消費する。各レベルのキャッシュに同時にアクセスする場合、ターゲットデータ取得のためのヒット率が向上し、ミスが減ることがあるが、過剰に電力を消費する。このような問題に関して、本開示の技術的解決法は、データを取得するためのアクセス命令を読み取り、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行し、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正し、それによって、キャッシュアクセス時のアクセス遅延を減少させる。
【0036】
本開示の例示的実施形態によって提供されるキャッシュにアクセスするための方法及び装置は、コンピュータなどのインテリジェント機器に適用されてもよく、たとえば、スマートフォン、パームコンピュータ、タブレットコンピュータなどの、アプリケーションプログラムがインストールされる他の電子機器にも適用し、メモリアクセスにおける遅延を低減し、ユーザがより簡単に使用できるようにしてもよい。
【0037】
本開示による技術的解決法をより容易に理解するために、例示的実施形態の詳細説明の前に、本開示の技術的解決法の概要が、以下のように説明される。
【0038】
キャッシュは、データ交換のためのキャッシュ領域である(キャッシュという)。特定のハードウェアが1つのデータを読み取る必要があるとき、最初に、レベル1キャッシュで検索が行われる。データが見つかった場合、データはすぐに読み取られて、処理のためにCPUに送信される。データが見つからない場合、次のレベルのキャッシュがアクセスされる。データをキャッシュで見つけることができない場合、データは比較的低速のメモリから読み取られて、処理のためにCPUに送信される。同時に、データが配置されているデータブロックはキャッシュに転送され、その後は、データブロック全体が、メモリを呼び出すことなく、キャッシュから読み取られる。キャッシュの処理速度はメモリの処理速度よりかなり速いので、キャッシュの機能はまさに、ハードウェアのより速い処理を支援することである。
【0039】
キャッシュは通常、レベル1キャッシュ(略してL1キャッシュ)を含むマルチレベルキャッシュアーキテクチャを採用し、レベル1キャッシュは、CPUカーネルのまわりに配置され、CPUの最も近くに統合されたCPUキャッシュであり、歴史上、最も初期のCPUキャッシュでもある。レベル1キャッシュの技術的な困難さ及び最も高い製造コストのために、容量改善は技術的な困難さ及びコストの大きな増加になるが、性能改善は大きくなく、そのため、価格性能比は低くなる。さらに、既存のレベル1キャッシュのヒット率は、すでに高い。したがって、レベル1キャッシュの容量はとりわけ最も小さく、それはレベル2キャッシュの容量より非常に小さい。
【0040】
レベル2キャッシュ、略してL2キャッシュは、CPUの第2のレベルの高速キャッシュであり、内部チップと外部チップとに分類される。内部チップレベル2キャッシュはクロックスピードと同じ速度で動作し、外部レベル2キャッシュはクロックスピードのわずか半分の速度で動作する。L2高速キャッシュの容量は、CPUの性能にも影響を与える。
【0041】
レベル3キャッシュ、略してL3キャッシュは、外部型を含んでもよく、それはメモリ待ち時間を減少させ、同時に、大量データ演算の場合のプロセッサの性能を向上させる。それは、メモリ待ち時間の減少、及び、大量データ演算能力の向上に有効である。また、サーバの分野において、このようなL3キャッシュの追加は、依然として、大きな性能改善をもたらす。第3のレベルのキャッシュは、主にミス率を低減するように設定される。
【0042】
メモリは、コンピュータにおける最も重要な構成要素の1つである。それは、CPUとの通信のためのブリッジである。メモリはまた、内部メモリとも呼ばれ、CPUの演算データの一時的な格納、及び、ハードディスクドライブなどの外部メモリとのデータの交換に使用される。コンピュータが動作する限り、CPUは、演算のために演算データをメモリに転送する。演算の終了後、CPUは結果を送信する。メモリの動作は、コンピュータの安定した動作も決定する。
【0043】
本開示の例示的実施形態は、キャッシュにアクセスするための方法を提供する。キャッシュにアクセスするための方法の例示的実施形態は、以下のように説明される。
【0044】
図1を参照すると、
図1は、本開示の例示的実施形態による、キャッシュにアクセスするための方法のフローチャートを示す。
【0045】
例示的なキャッシュにアクセスするための方法は以下を含む。
【0046】
ステップS101:データを取得するためのアクセス命令が読み取られる。
【0047】
この例示的な実施形態において、データを取得するためのアクセス命令を読み取ることは、アクセス命令を記憶するコンピュータ記憶装置から、データを取得するためのアクセス命令を抜き出すことと、アクセス命令をロードすることとを含む。ステップS101において、データを取得するためのアクセス命令が読み取られたとき、アクセス命令が取得する必要があるデータのボリューム情報が取得される。
【0048】
CPUがアクセス命令を実行するとき、最初に、アクセス命令を格納するコンピュータ記憶装置からアクセス命令を抜き出す、すなわち、命令抽出プロセスを完了することが必要であることに注目すべきである。次いで、アクセス命令は復号またはテストされ、対応する操作制御信号が、アクセス命令が取得する必要があるデータの対応する操作、たとえば、メモリ読み出し/書き込み操作、算術論理演算、または、入出力操作を開始するために生成される。アクセス命令の実行プロセスは、実際には、命令用記憶域から命令を抜き出し、命令を分析し、そして命令を実行する循環プロセスである。
【0049】
ステップS103:アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定する。
【0050】
ステップS101において、データを取得するためのアクセス命令が読み取られるとき、アクセス命令によって搬送される遅延識別子を読み取ることも必要である。アクセス命令によって搬送される遅延識別子は、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子である。
【0051】
この例示的な実施形態において、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することは、以下の方法、つまり、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマークを付けられる遅延識別子の数値を読み取ることで実装されてもよい。
【0052】
CPUによってアクセス命令を実行するプロセスにおいて、キャッシュまたはメモリへのアクセス時にアクセス命令が遅延を発生させる場合、次の、このようなアクセス命令の実行は、同じレベルのキャッシュまたはメモリへのアクセス時、依然として遅延を発生させ、性能を阻害する。このような特徴に基づき、障害を予測することによって、実行時にアクセス命令が遅延を発生させるかどうかが判定される。
【0053】
たとえば、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる遅延識別子は、2つのバイナリビットによってマーク付けされる。すなわち、ビット1及びビット0は、アクセス命令のキャッシュラインに設定される。バイナリビットのため、アクセス命令によって搬送される遅延識別子は以下の値を有する。
ビット1 ビット0
0 0
0 1
1 0
1 1
ここで、ビット1及びビット0は、アクセス命令のキャッシュラインに設定される2つのバイナリビットである。ビット1及びビット0の下のバイナリ数値の4つのグループは、ビット1及びビット0に対応する特定値である。
【0054】
値に関して、ビット1及びビット0の値を0及び0とするとき、ならびに、ビット1及びビット0の値を0及び1とするとき、すなわち、2つのバイナリビットの数値から変換される10進数値が1以下のとき、これは、アクセス命令がキャッシュアクセス中に遅延を発生させないことを示し、ビット1及びビット0の値を1及び0とするとき、ならびに、ビット1及びビット0の値を1及び1とするとき、すなわち、2つのバイナリビットの数値から変換される10進数値が1より大きいとき、これは、アクセス命令がキャッシュアクセス時に遅延を発生させることを示すことに注目すべきである。
【0055】
ビット1及びビット0の特定値の上記4つのグループにおいて、値の各グループは、アクセス命令の実際の実行結果によって割り当てられ、値の各グループに対応する特定の意味はあらかじめ設定され、実行時にアクセス命令が遅延を発生させるかどうかを判定するために使用される。
【0056】
この例示的な実施形態において、アクセス命令がキャッシュアクセス時に発生させることがある遅延には、以下の2つのタイプが含まれることに注目すべきである。
【0057】
第1のタイプは、データミスの場合にはレベル毎キャッシュアクセス時に発生する遅延である。
【0058】
CPUは、アクセス性能を向上させるために、マルチレベルキャッシュアーキテクチャを使用することに注目すべきである。アクセス順序は、レベル1キャッシュ、レベル2キャッシュ、レベル3キャッシュ、メモリである。しかしながら、各レベルのキャッシュへのアクセス時には、程度の異なる遅延が発生し、それが性能に影響を与える。
【0059】
第1のタイプの場合、レベル1キャッシュへのアクセス時にミスが起こった(必要なデータがレベル1キャッシュで取得されなかった)後にのみ、レベル2キャッシュにアクセスする。レベル2キャッシュへのアクセス時にミスが起こった(必要なデータがレベル2キャッシュで取得されなかった)後、メモリにアクセスするまで、レベル3キャッシュにアクセスする。
【0060】
特に、レベル1キャッシュへのアクセス時のミスからレベル2キャッシュへのアクセスまでは6サイクルかかり、レベル2キャッシュへのアクセス時のミスからレベル3キャッシュへのアクセスまでは8サイクルかかる。
【0061】
第2のタイプは、アクセス命令が演算を実行するときに発生する遅延である。
【0062】
アクセス命令がキャッシュアクセス後に複雑な演算を実行するときに発生する遅延に注目すべきである。たとえば、必要なデータがキャッシュから取得された後、このようなデータに基づく演算の場合には、演算遅延は、複雑な演算式または複雑な演算方法自体のために発生する。
【0063】
特定の実施態様において、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定するステップ103は、以下の方法、つまり、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取ること、及び、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が1より大きいかどうかを判定することと、数値が1より大きい場合に、アクセス命令が遅延を発生させることを示すこと、及び、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行するステップを実行すること、または、数値が1以下である場合に、通常キャッシュアクセス順序に従って、キャッシュにアクセスすることと、で実装されてもよい。
【0064】
アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が1より大きいかどうかを判定することは、特に、バイナリビットでマーク付けされる遅延識別子の数値を10進数値に変換することと、10進数値が1より大きいかどうかを判定することとを含むことに注目すべきである。
【0065】
ステップS105:遅延の発生を判定することに応じて、キャッシュにアクセスし、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する。
【0066】
ステップS103において、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が1より大きい場合、それは、キャッシュアクセスまたはメモリアクセス時に、アクセス命令が遅延を発生させることを示し、この場合、ステップ105が実行される。
【0067】
キャッシュアクセスまたはメモリアクセス時にアクセス命令が遅延を発生させることが判定された後、アクセス命令によって搬送される位置識別子のためにプリフェッチ操作が実行されてもよい。キャッシュにアクセスすること、及び、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することは、特に、ステップS105-1~ステップS105-2を含み、それは
図2を参照して以下で説明される。
【0068】
図2を参照すると、
図2は、本開示の例示的実施形態による、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行するフローチャートを示す。
【0069】
ステップS105-1:アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値が読み取られる。
【0070】
CPUによってアクセス命令を実行するプロセスにおいて、キャッシュまたはメモリへのアクセス時にアクセス命令が遅延を発生させる場合、次の、このようなアクセス命令の実行は、同じレベルのキャッシュまたはメモリへのアクセス時、依然として遅延を発生させ、性能を阻害する、すなわち、データが同じレベルのキャッシュまたはメモリで取得されることが示される。このような特徴に基づき、障害を予測することによって、アクセス命令が取得する必要があるデータがどのレベルのキャッシュまたはメモリに配置されるかを判定することが可能である。
【0071】
アクセス命令によって搬送される遅延識別子は、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる識別子であることに注目すべきである。
【0072】
特に、アクセス命令のキャッシュラインに設定されるビットでマーク付けされる遅延識別子は、2つのバイナリビットを使用することによりマーク付けされる。すなわち、ビット3及びビット2は、マーク付けのためにアクセス命令のキャッシュラインに設定される。バイナリビットのため、アクセス命令によって搬送される遅延識別子は以下の値を有する。
ビット3 ビット2
0 0
0 1
1 0
1 1
ここで、ビット3及びビット2は、アクセス命令のキャッシュラインに設定される2つのバイナリビットであり、ビット3及びビット2の下のバイナリ数値の4つのグループは、ビット3及びビット2に対応する特定値である。
【0073】
上記の値において、ビット3及びビット2の値を0及び0とするとき、このような2つのバイナリビットの数値から変換される10進数値は0であり、それは、アクセス命令によって必要とされるデータがレベル1キャッシュで取得される、すなわち、アクセス命令の実行時に発生する遅延が複雑な演算の実行により生じることを示すことに注目すべきである。ビット3及びビット2の値を0及び1とするとき、このような2つのバイナリビットの数値から変換される10進数値は1であり、それは、アクセス命令によって必要とされるデータがレベル2キャッシュで取得されることを示す。ビット3及びビット2の値を1及び0とするとき、このような2つのバイナリビットの数値から変換される10進数値は2であり、それは、アクセス命令によって必要とされるデータがレベル3キャッシュで取得されることを示す。ビット3及びビット2の値を1及び1とするとき、このような2つのバイナリビットの数値から変換される10進数値は3であり、
アクセス命令によって必要とされるデータがメモリで取得されることを示す。
【0074】
たとえば、アクセス命令によって必要とされるデータの位置が、遅延が発生する位置によって得られる理由は、キャッシュデータ読み取りの開始から、必要とされるデータの読取りまで、いくつかのサイクルがかかるという点にある。たとえば、通常のアクセスの場合、レベル2キャッシュへのアクセス時、レベル2キャッシュの読取りは、レベル1キャッシュの読取りが終了した後にのみ開始され(レベル1キャッシュでの必要とされるデータの取得の失敗からレベル2キャッシュへのアクセスまで6サイクルかかる)、レベル2キャッシュを読み取るためにも複数サイクルかかる(たとえば、8周期)。アクセス命令によって必要とされるデータがレベル2キャッシュで取得された後、レベル3キャッシュはもはやアクセスされないので、レベル3キャッシュを読み取るためのサイクルはなく、したがって、キャッシュアクセス時に最終的に遅延が発生する位置は、アクセス命令によって必要とされるデータの位置である。
【0075】
ビット3及びビット2の特定値の上記4つのグループにおいて、値の各グループは、アクセス命令によって必要とされるデータが取得される実際の位置によって割り振られ、値の各グループに対応する特定の意味はあらかじめ設定され、アクセス命令によって必要とされるデータの位置を判定するために使用される。
【0076】
ステップS105-2:レベル1キャッシュへのアクセス時、位置識別子の数値に対応するキャッシュレベルまたはメモリは、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従ってアクセスされる。
【0077】
このステップにおいて、アクセス命令によって搬送され、ビットでマーク付けされる、ステップS105-1で読み取られる位置識別子の数値を受信し、レベル1キャッシュへのアクセス時、位置識別子の数値に対応するキャッシュレベルまたはメモリは、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従ってアクセスされる。
【0078】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の読み取られる数値が2である場合、レベル1キャッシュのデータが読み取られているとき、レベル3キャッシュのデータは同時にアクセスされる。
【0079】
位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすることは、アクセス命令がレベル1キャッシュへのアクセスを開始するとき、同時に、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすること、あるいは、アクセス命令がレベル1キャッシュにアクセスする前に位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスする限り、アクセス命令がレベル1キャッシュにアクセスしている間に、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスすることを含んでもよく、その両方が本開示の保護範囲に属していることに注目すべきである。
【0080】
レベル1キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスするステップの後、アクセス命令がレベル1キャッシュにアクセスして、プリフェッチ操作を実行するときのミスを防ぐために、例示的実施形態の技術的解決法は、例示的実施態様を提供する。例示的実施態様は、ステップS106-1~S106-2を含み、それは
図3を参照して以下でさらに説明される。
【0081】
図3を参照すると、
図3は、本開示の例示的実施形態によるミス防止方法のフローチャートを示す。
【0082】
ステップS106-1:アクセス命令によって必要とされるデータがレベル1キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうか判定される。
【0083】
ステップS101において、データを取得するためのアクセス命令が読み取られているとき、アクセス命令が取得する必要があるデータのボリューム情報が取得され、アクセス命令によって必要とされるデータがレベル1キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうか判定される。
【0084】
たとえば、レベル1キャッシュのデータ及び位置識別子の数値に対応するキャッシュレベルまたはメモリのデータが読み取られ、アクセス命令によって必要とされるデータと同じボリューム情報を有するデータ、及び、アクセス命令によって必要とされるデータと同じデータ型のデータが、読み取り時に取得されるかどうか判定される。
【0085】
ステップS106-2:S106-1の判定の結果が「いいえ」である場合、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュの階層順による各レベルのキャッシュ、及びメモリが順次アクセスされる。
【0086】
この例示的な実施形態において、アクセス命令によって必要とされるデータが取得されるまで、複数のレベルのキャッシュ及びメモリの階層順に従って各レベルのキャッシュに順次アクセスすることは、以下の方法、つまり、アクセス命令によって必要とされるデータと同じ量の情報及び同じデータ型を有するデータが読み取り時に取得されない場合、アクセス命令によって必要とされるデータが取得されるまで、レベル2キャッシュ、レベル3キャッシュ、及びメモリに順次アクセスすることで実装されてもよい。
【0087】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の読み取られる数値が2である。レベル1キャッシュのデータが読み取られるときにレベル3キャッシュのデータが同時にアクセスされた後、アクセス命令によって必要とされるデータが取得されない場合、レベル2キャッシュがアクセスされ、アクセス命令によって必要とされるデータがレベル2キャッシュで取得される場合、キャッシュアクセスは停止されて、メモリはアクセスされない。
【0088】
アクセス命令によって必要とされるデータが取得された後、アクセス命令によって必要とされるデータの位置を取得するために、例示的実施形態の技術的解決法は、例示的実施態様を提供する。例示的実施態様において、アクセス命令によって必要とされるデータが取得された後、アクセス命令によって取得されたデータの位置は記録される。
【0089】
たとえば、アクセス命令によって必要とされるデータがレベル2キャッシュで取得された場合、アクセス命令によって取得されたデータの位置は、レベル2キャッシュとして記録される。
【0090】
ステップS107:アクセス命令によって搬送される遅延識別子及び位置識別子が、アクセス命令によって取得されたデータの位置に従って修正される。
【0091】
この例示的な実施形態において、ステップ105の実行後、遅延が発生する場合、以下の操作を実行する。すなわち、アクセス命令によって支持される遅延識別子及び位置識別子をより正確にし、データ位置の変化によって生じるエラーを防ぐために、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する。アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する操作は、たとえば、ステップS107-1からS107-4を含んでもよく、それは以下のように説明される。
【0092】
ステップS107-1:アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュであるかどうかを判定する。
【0093】
この例示的な実施形態において、アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュであるかどうかを判定することは、以下の方法、つまり、アクセス命令によって取得されたデータの記録された位置を取得することと、アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュであるかどうかを判定することとで実装されてもよい。
【0094】
ステップS107-2:S107-1での判定の結果が「はい」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はデクリメントされる。
【0095】
このステップにおいて、S107-1での判定結果が受信され、アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュである場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はデクリメントされる。
【0096】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントすることは、アクセス命令のキャッシュラインに設定されるビット1及びビット0の値を取得することと、ビット0の値から1を引くこととを含み、ここで、ビット0の値が0である場合、バイナリビットのため、ビット1から借りる。
【0097】
たとえば、ビット1及びビット0の値が1及び1である場合、ビット0の値から1が引かれた後、ビット1及びビット0の値は1及び0である。ビット1及びビット0の値が1及び0である場合、ビット0の値から1と引くとき、ビット1から借りて、ビット1及びビット0の値は0及び1である。
【0098】
ビット1及びビット0の値が0及び0である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がデクリメントされた後、ビット1及びビット0の値は依然として0及び0であることに注目すべきである。
【0099】
プリフェッチ操作が実行されるとき、レベル1キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリの読取り時に、データ取得を繰り返すことを防ぐために、本例示的実施形態の技術的解決法は、例示的実施態様を提供する。例示的実施態様は、ステップS107-2-1~S107-2-2を含んでもよく、それは
図4を参照して以下でさらに説明される。
【0100】
図4を参照すると、
図4は、本開示の例示的実施形態による、データ破棄方法のフローチャートを示す。
【0101】
ステップS107-2-1:アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定する。
【0102】
アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリをさらに含む、すなわち、アクセス命令によって取得されたデータの2つの位置が記録されているかどうか判定される。
【0103】
たとえば、レベル1キャッシュ及びレベル3キャッシュの両方がアクセス命令によって必要とされるデータを含み、アクセス時にプリフェッチ操作がレベル3キャッシュで実行される場合、アクセス命令によって取得されたデータの位置が記録されるとき、レベル1キャッシュ及びレベル3キャッシュが記録される。
【0104】
ステップS107-2-2:S107-2-1での判定の結果が「はい」である場合、
位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータは、廃棄される。
【0105】
このステップにおいて、ステップS107-2-1の判定結果が受信され、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリをさらに含む場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータは、廃棄される。
【0106】
たとえば、アクセス命令によって必要とされるデータがレベル1キャッシュ及びレベル3キャッシュに含まれる場合、プリフェッチ操作によってレベル3キャッシュから取得されたデータは廃棄される。
【0107】
ステップS107-3:S107-1での判定の結果が「いいえ」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はインクリメントされ、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうか判定される。
【0108】
このステップにおいて、ステップS107-1の判定結果が受信され、アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュでない場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子はインクリメントされ、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうか判定される。
【0109】
たとえば、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントすることは、アクセス命令のキャッシュラインに設定されるビット1及びビット0の値を取得することと、ビット0の値に1を加えることとを含む。ビット0の値が1である場合、バイナリビットのため、ビット1に繰り上げられる。
【0110】
たとえば、ビット1及びビット0の値が0及び1である場合、ビット0の値に1を加えるとき、ビット1に繰り上げられ、ビット1及びビット0の値は1及び0となる。ビット1及びビット0の値が1及び0である場合、ビット0の値に1を加え、ビット1及びビット0の値は1及び1となる。
【0111】
ビット1及びビット0の値が1及び1であるとき、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がインクリメントされた後、ビット飽和のため、ビット1及びビット0の値は依然として1及び1であることに注目すべきである。
【0112】
この例示的な実施形態において、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定することは、以下の方法、つまり、アクセス命令によって取得されたデータの記録された位置、及び位置識別子の数値に対応するキャッシュレベルまたはメモリを取得することと、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリと一致するかどうかを判定することと
で実装されてもよい。
【0113】
たとえば、アクセス命令によって取得される前記データの記録された位置はレベル2キャッシュであり、位置識別子の数値に対応する位置はレベル3キャッシュである。
【0114】
ステップS107-4:S107-3での判定の結果が「いいえ」である場合、アクセス命令によって搬送される位置識別子は、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定される。
【0115】
このステップにおいて、ステップS107-3の判定結果が受信され、アクセス命令によって取得されたデータの記録された位置が、位置識別子の数値に対応するキャッシュレベルまたはメモリと一致しない場合、アクセス命令によって支持される位置識別子は、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定される。
【0116】
この例示的な実施形態において、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子を、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定することは、以下の方法、つまり、アクセス命令によって取得されたデータの記録された位置を取得することと、アクセス命令によって取得されたデータの位置を、ビット3及びビット2のあらかじめ設定された対応する関係に従って、ビット3及びビット2の対応する特定値に変換することと、ビット3及びビット2の特定値に従って、アクセス命令によって搬送される位置識別子を設定することとで実装されてもよい。
【0117】
たとえば、アクセス命令によって取得されたデータの記録された位置は、レベル2キャッシュである。アクセス命令によって搬送される位置識別子に対応するビット3及びビット2の値は、1及び0であり、レベル3キャッシュがプリフェッチ操作時にアクセスされることを示す。次いで、アクセス命令によって取得されたデータの記録された位置は、レベル2キャッシュであり、対応するビット3及びビット2の特定値0及び1に変換される。こうして、アクセス命令によって搬送される位置識別子に対応するビット3及びビット2の値は設定され、アクセス命令によって搬送される位置識別子に対応するビット3及びビット2の値は、0及び1に更新される。
【0118】
従来のキャッシュ及びメモリアクセスは、キャッシュのマルチレベルキャッシュアーキテクチャによって、各レベルに順次アクセスすることであるので、キャッシュ及びメモリアクセス時に遅延が発生する。たとえば、アクセス命令によって必要とされるデータはメモリにあり、各レベルは、マルチレベルキャッシュアーキテクチャによって順次アクセスされる。メモリにアクセスする前に、レベル1キャッシュ、レベル2キャッシュ、及びレベル3キャッシュにアクセスする必要があり、そのため、アクセス遅延が発生する。しかしながら、本開示の例示的実施形態による技術的解決法は、障害予測によって、アクセス命令の実行時に遅延が発生するかどうかを判定し、アクセス命令によって必要とされるデータがどのレベルのキャッシュまたはメモリに配置されるかを判定し、マルチレベルキャッシュアーキテクチャによって各レベルが順次アクセスされるとき、アクセス命令によって必要とされるデータの予測された位置にアクセスし、それはキャッシュまたはメモリアクセスのための時間を節約し、データのヒット率を向上させ、キャッシュまたはメモリアクセス時のミス率を小さくし、それによって、対応して、キャッシュアクセス時の消費電力を低減し、CPU性能を向上させる。
【0119】
上記の例示的実施形態において、キャッシュにアクセスするための方法が提供される。キャッシュにアクセスするための方法に対応し、本開示は、キャッシュにアクセスするための装置をさらに提供する。装置の例示的実施形態は、その操作が方法の例示的実施形態の操作と略同様であるので、比較的簡単に説明される。関連する部分については、方法の例示的実施形態における説明を参照してもよい。装置の例示的実施形態の以下の説明は、単に例示しただけのものである。キャッシュにアクセスするための装置の例示的実施形態は、以下のように説明される。
【0120】
図5を参照すると、
図5は、本開示の例示的実施形態による、キャッシュにアクセスするための装置500の概略図を示す。
【0121】
装置500は、1つまたは複数のプロセッサ502またはデータ処理ユニット(複数可)、及び1つまたは複数のコンピュータ記憶装置504を含む。装置500は、1つまたは複数の入出力インタフェース506と、ネットワークインタフェース(複数可)508とをさらに含んでもよい。コンピュータ記憶装置504は、コンピュータ可読媒体の一例である。
【0122】
コンピュータ記憶装置504は、アクセス命令読取りユニット501と、遅延識別子判定ユニット503と、キャッシュアクセスプリフェッチユニット505と、識別子修正ユニット507とを含む、複数のモジュールまたはユニットをその中に格納してもよい。
【0123】
アクセス命令読取りユニット501は、データを取得するためのアクセス命令を読み取る。
【0124】
遅延識別子判定ユニット503は、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定する。
【0125】
キャッシュアクセスプリフェッチユニット505は、遅延識別子判定ユニット503から判定結果を受信し、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行する。
【0126】
識別子修正ユニット507は、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正する。
【0127】
任意選択的に、遅延識別子判定ユニット503は、ビットでマーク付けされ、アクセス命令のキャッシュラインに設定される識別子に従って、アクセス命令が遅延を発生させるかどうかをさらに判定する。
【0128】
任意選択的に、遅延識別子判定ユニット503は、アクセス命令によって搬送される遅延識別子に従って、データミスの場合のレベル毎キャッシュアクセス時に発生する遅延、または、アクセス命令が演算を行うときに発生する遅延をアクセス命令が発生させるかどうかをさらに判定する。
【0129】
任意選択的に、遅延識別子判定ユニット503は、アクセス命令が遅延を発生させるかどうかを判定するために、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子の数値をさらに読み取る。
【0130】
任意選択的に、遅延識別子判定ユニット503は、数値読取りサブユニットと、キャッシュアクセスプリフェッチトリガサブユニットとを含む。
【0131】
数値読取りサブユニットは、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値を読み取り、アクセス命令によって搬送され、バイナリビットでマーク付けされる遅延識別子の数値が1より大きいかどうかを判定する。
【0132】
キャッシュアクセスプリフェッチトリガサブユニットは、数値読取りサブユニットから判定結果を受信し、数値が1より大きい場合、キャッシュアクセスプリフェッチユニットを起動する。
【0133】
任意選択的に、キャッシュアクセスプリフェッチユニット505は、ビット数値読取りサブユニットと、キャッシュアクセスプリフェッチサブユニットとを含む。
【0134】
ビット数値読取りサブユニットは、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値を読み取る。
【0135】
キャッシュアクセスプリフェッチサブユニットは、レベル1キャッシュへのアクセス時、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスする。
【0136】
任意選択的に、キャッシュアクセスプリフェッチユニット505は、データ取得判定サブユニットと、レベル毎アクセスサブユニットとをさらに含む。
【0137】
レベル1キャッシュへのアクセス時、位置識別子の数値に対応するキャッシュレベルまたはメモリにアクセスした後、アクセス命令によって搬送され、ビットでマーク付けされる位置識別子の数値に従って、データ取得判定サブユニットは、アクセス命令によって必要とされるデータがレベル1キャッシュ及び位置識別子の数値に対応するキャッシュレベルまたはメモリで取得されるかどうかを判定する。
【0138】
レベル毎アクセスサブユニットは、データ取得判定サブユニットから判定結果を受信し、結果が「いいえ」である場合、複数のレベルのキャッシュの階層順に従って、アクセス命令によって必要とされるデータが取得されるまで、各レベルのキャッシュ及びメモリに順次アクセスする。
【0139】
任意選択的に、装置500は、位置記録ユニット(
図5に示されない)をさらに含んでもよい。位置記録ユニットは、アクセス命令によって取得されたデータの位置を記録する。
【0140】
任意選択的に、識別子修正ユニット507は、位置判定サブユニットと、デクリメントサブユニットと、インクリメントサブユニットと、位置識別子設定サブユニットと(すべて示されない)を含む。
【0141】
位置判定サブユニットは、アクセス命令によって取得されたデータの記録された位置がレベル1キャッシュであるかどうかを判定する。
【0142】
デクリメントサブユニットは、位置判定サブユニットから判定結果を受信し、判定結果が「はい」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をデクリメントする。
【0143】
インクリメントサブユニットは、位置判定サブユニットから判定結果を受信し、判定結果が「いいえ」である場合、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子をインクリメントし、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリであるかどうかを判定する。
【0144】
位置識別子設定サブユニットは、インクリメントサブユニットから判定結果を受信し、
判定結果が「いいえ」である場合、アクセス命令によって取得されたデータの記録された位置に従って、アクセス命令によって搬送される位置識別子を、アクセス命令によって搬送される位置識別子がキャッシュレベルまたはメモリを表し、そこからアクセス命令によって必要とされるデータが取得されるように設定する。
【0145】
任意選択的に、デクリメントサブユニットは、繰り返し位置判定サブユニットと、データ破棄サブユニットと(どちらも示されない)を含む。
【0146】
繰り返し位置判定サブユニットは、アクセス命令によって搬送され、ビットでマーク付けされる遅延識別子がデクリメントされた後、アクセス命令によって取得されたデータの記録された位置が位置識別子の数値に対応するキャッシュレベルまたはメモリを含むかどうかを判定する。
【0147】
データ破棄サブユニットは、繰り返し位置判定サブユニットの判定結果を受信し、判定結果が「はい」である場合、位置識別子の数値に対応するキャッシュレベルまたはメモリで取得される、アクセス命令によって必要とされるデータを廃棄する。
【0148】
上記の例示的実施形態において、キャッシュにアクセスするための方法及びキャッシュにアクセスするための装置が提供される。さらに、本開示は電子機器をさらに提供し、電子機器の例示的実施形態は以下のように説明される。
【0149】
図6を参照すると、
図6は、本開示の例示的実施形態による電子機器600の概略図である。
【0150】
電子機器は、ディスプレイ601と、1つまたは複数のプロセッサ603またはデータ処理ユニット(複数可)と、1つまたは複数のコンピュータ記憶装置605とを含む。コンピュータ記憶装置605は、コンピュータ可読媒体の一例である。
【0151】
コンピュータ記憶装置605は、プロセッサ603によって読み取られて、実行されるとき、データを取得するためのアクセス命令を読み取ることと、アクセス命令によって搬送される遅延識別子に従って、アクセス命令が遅延を発生させるかどうかを判定することと、遅延が発生する場合、キャッシュにアクセスして、アクセス命令によって搬送される位置識別子に従って、プリフェッチ操作を実行することと、アクセス命令によって取得されたデータの位置に従って、アクセス命令によって搬送される遅延識別子及び位置識別子を修正することとを実行する、キャッシュ並列アクセスプログラムまたはコンピュータ実行可能命令を格納する。
【0152】
典型的な構成において、装置は、1つまたは複数の中央処理装置(CPU)と、I/Oインタフェースと、ネットワークインタフェースと、コンピュータ可読媒体とを含む。
【0153】
コンピュータ可読媒体は、揮発性メモリ、ランダムアクセスメモリ(RAM)、及び/または不揮発性メモリ、たとえば、リードオンリーメモリ(ROM)またはフラッシュRAMなどを含んでもよい。
【0154】
1.コンピュータ可読媒体は、恒久的な、非恒久的な、携帯型の、及び非携帯型の媒体を含み、それらは任意の方法または技術によって情報記憶を実装することができる。情報は、コンピュータ実行可能命令、データ構造、プログラムモジュール、または他のデータでもよい。コンピュータの記憶媒体の例は、演算装置によってアクセスできる情報を格納するために使用することができる、相変化RAM(PRAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、他のタイプのランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリまたは他の内部メモリ技術、コンパクトディスクリードオンリーメモリ(CD-ROM)、デジタル多目的ディスク(DVD)または他の光学メモリ、カセット、カセット及びディスクメモリまたは他の磁気メモリデバイス、あるいは任意の他の非伝送媒体を含むが、これらに限定されるものではない。本明細書の定義に従って、コンピュータ可読媒体には、変調データ信号及びキャリアなどの非一時的コンピュータ可読媒体(一時的な媒体)を含まない。
【0155】
2.当業者は、本開示の例示的実施形態は、方法、システム、またはコンピュータプログラム製品として実装されてもよいことを理解すべきである。したがって、本開示は、全面的にハードウェアの実施形態、全面的にソフトウェアの実施形態、またはソフトウェアとハードウェアとを組み合わせた実施形態として実装されてもよい。さらに、本開示は、コンピュータ実行可能命令を格納する(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むが、これらに限定されない)1つまたは複数のコンピュータ使用可能記憶媒体上に実装されるコンピュータプログラム製品でもよい。
【0156】
本開示の例示的実施形態が上で開示されたが、それらは本開示を限定するために使用すべきではない。当業者は、本開示の精神と範囲から逸脱することなく、可能な変更及び修正を行ってもよい。したがって、本開示の保護範囲は、本開示の特許請求の範囲によって定義される範囲でなければならない。