(57)【要約】      （修正有）【課題】メモリ・アクセス・バッファによってバッファリング及び処理されるメモリの書き込みアクセス要求を発行するデータ処理装置を提供する。【解決手段】キャッシュ・ユニットは、キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、アクセスされたデータ項目をキャッシュするように構成される。メモリ・トランザクションは、バッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、対応する書き込み動作によって書き込みされるよう制約される。バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、及びキャッシュ・ユニットが非書き込み割り当てポリシーで動作するように構成される場合、引き続き書き込み割り当てポリシーで動作させる。【選択図】図３
2015232879.tif 000002
【特許請求の範囲】
【請求項１】
データ項目をメモリのメモリ・アドレスに格納させるために、前記メモリ・アドレス及び前記データ項目を指定する書き込みアクセス要求を発行するように構成されたプロセッサ・ユニットと、
キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、前記プロセッサ・ユニットによる後続のアクセスのために、前記メモリから、アクセスされたデータ項目のローカル・コピーを格納するように構成された前記キャッシュ・ユニットと、
メモリ・トランザクション・トリガ条件が満たされるまで、前記プロセッサ・ユニットによって発行された１つ又は複数の書き込みアクセス要求をバッファリングし、次いで、前記１つ又は複数のバッファリングされた書き込みアクセス要求を実行する、前記メモリに関するメモリ・トランザクションを開始させるように構成されたメモリ・アクセス・バッファとを備えるデータ処理装置であって、
前記メモリ・トランザクションが、前記１つ又は複数のバッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作によって書き込まれる、前記書き込み動作を実行するよう制約され、
前記データ処理装置が、前記バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するように構成され、
前記キャッシュ・ユニットが、前記アクセスされたデータ項目の前記ローカル・コピーが前記キャッシュ・ユニットに格納されず、また前記アクセス・アンダーサイズ条件が満たされる非書き込み割り当てポリシーとして、前記アロケーション・ポリシーで動作するように構成される場合、データ処理装置が、前記キャッシュ・ユニットに、前記アクセスされたデータ項目の前記ローカル・コピーが前記キャッシュ・ユニットに格納される書き込み割り当てポリシーとして、引き続き前記アロケーション・ポリシーで動作するように構成される、前記データ処理装置。
【請求項２】
前記キャッシュ・ユニットが、前記後続のアクセスによって前記アクセスされたデータ項目の前記ローカル・コピーの修正が、前記メモリ内の対応するオリジナル・データ項目の修正も生じさせる、書き込みスルーモードで動作するように構成される、請求項１に記載のデータ処理装置。
【請求項３】
前記メモリ・アクセス・バッファが、前記メモリ・アクセス・トランザクションが実行されるべき前記１つ又は複数のバッファリングされた書き込みアクセス要求が、少なくとも１つの所定の範囲のメモリ・アドレス内にすべてのメモリ・アドレスを備えるとは限らない前記少なくとも１つの所定の範囲のメモリ・アドレス内のメモリ・アドレスを指定する場合、前記メモリ・アクセス・トランザクションに、前記少なくとも１つの所定の範囲のメモリ・アドレスによって表示される少なくとも１つの拡張されたデータ項目を取り出すステップと、前記バッファリングされた書き込みアクセス要求において指定された前記１つ又は複数のデータ項目を、前記取り出された少なくとも１つの拡張されたデータ項目に統合させるステップと、前記修正された少なくとも１つの拡張されたデータ項目を前記メモリに書き戻しするステップとを備えさせるように構成される、請求項１又は２に記載のデータ処理装置。
【請求項４】
前記キャッシュ・ユニットに、前記書き込み割り当てポリシーとして引き続き前記アロケーション・ポリシーで動作させた後で、及び前記メモリ・トランザクション・トリガ条件が満たされた場合、メモリ・アクセス・トランザクションが実行されるべき、前記バッファリングされた書き込みアクセス要求が、前記指定されたメモリ・アドレスがある少なくとも１つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるメモリ・アドレスを指定すると、アクセス・フル・サイズ条件を識別するように構成され、前記アクセス・フル・サイズ条件が満たされると、前記メモリ・アクセス・バッファが、前記キャッシュ・ユニットに、前記非書き込み割り当てポリシーとして前記アロケーション・ポリシーでの動作に切り替えさせるように構成される、請求項１から３までのいずれか一項に記載のデータ処理装置。
【請求項５】
前記キャッシュ・ユニットが、まず前記非書き込み割り当てポリシーとして前記アロケーション・ポリシーで動作するように構成される、請求項１から４までのいずれか一項に記載のデータ処理装置。
【請求項６】
データ項目が、関連付けられるエラー訂正コードを有する前記メモリに格納され、前記所定の範囲のメモリ・アドレスが、前記関連付けられるエラー訂正コードを更新するために前記メモリから読み出される必要があるユニット・データ項目サイズによって決定される、請求項１から５までのいずれか一項に記載のデータ処理装置。
【請求項７】
前記メモリ・トランザクションに含めるための更新されたエラー訂正コード値を決定するように構成されたエラー訂正コード決定ユニットをさらに備える、請求項６に記載のデータ処理装置。
【請求項８】
前記メモリ・アクセス・バッファが、前記エラー訂正コード決定ユニットを備える、請求項７に記載のデータ処理装置。
【請求項９】
前記所定の範囲のメモリ・アドレスが、前記メモリに関する前記メモリ・トランザクションのユニット・データ・サイズによって決定される、請求項１から５までのいずれか一項に記載のデータ処理装置。
【請求項１０】
前記メモリ・アクセス・バッファがアクセス・スロットを備え、前記アクセス・スロットが、前記プロセッサ・ユニットによって発行された書き込みアクセス要求を、前記アクセス・スロットに関連して格納された選択されたメモリ・アドレスに関してバッファリングするように構成される、請求項１から９までのいずれか一項に記載のデータ処理装置。
【請求項１１】
前記アクセス・スロットが、前記キャッシュ・ライン・サイズ未満のサイズを有するように構成される、請求項１０に記載のデータ処理装置。
【請求項１２】
前記メモリ・アクセス・バッファが、複数のアクセス・スロットを備え、各アクセス・スロットは、前記アクセス・スロットに関連して格納された選択されたメモリ・アドレスに関して前記プロセッサ・ユニットによって発行された書き込みアクセス要求をバッファリングするように構成される、請求項１から１１までのいずれか一項に記載のデータ処理装置。
【請求項１３】
複数のアクセス・スロットでバッファリングされた前記複数の書き込みアクセス要求に関して前記アクセス・アンダーサイズ条件を識別するように構成される、請求項１２に記載のデータ処理装置。
【請求項１４】
少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない前記バッファリングされた書き込みアクセス要求が、単一のメモリ・トランザクションにおいて実行されると、前記アクセス・アンダーサイズ条件を識別するように構成される、請求項１から１３までのいずれか一項に記載のデータ処理装置。
【請求項１５】
前記メモリ・アクセス・バッファが、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない前記バッファリングされた書き込みアクセス要求が、互いからの所定の分離未満で実行される別々のメモリ・トランザクションにおいて実行されると、前記アクセス・アンダーサイズ条件を識別するように構成される、請求項１２又は請求項１３に記載のデータ処理装置。
【請求項１６】
前記別々のメモリ・トランザクションが、互いに連続して実行される、請求項１５に記載のデータ処理装置。
【請求項１７】
前記メモリ・アクセス・バッファが、前記アクセス・アンダーサイズ条件を識別するように構成され、前記メモリ・アクセス・バッファが、前記キャッシュ・ユニットに、前記アクセス・アンダーサイズ条件に応じてアロケーション・ポリシーを変更させるように構成される、請求項１から１６までのいずれか一項に記載のデータ処理装置。
【請求項１８】
データ項目をメモリのメモリ・アドレスに格納させるために、前記メモリ・アドレス、及び前記データ項目を指定する書き込みアクセス要求を発行するステップと、
アロケーション・ポリシーに応じて、後続のアクセスのために、前記メモリからアクセスされたデータ項目のローカル・コピーを格納するステップと、
メモリ・トランザクション・トリガ条件が満たされるまで、発行された１つ又は複数の書き込みアクセス要求をバッファリングし、次いで、前記１つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、前記メモリに関するメモリ・トランザクションを開始させるステップであって、前記メモリ・トランザクションが、前記１つ又は複数のバッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作によって書き込まれる、前記書き込み動作を実行するように制約される、ステップと、
前記バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するステップと、
前記アロケーション・ポリシーが、前記アクセスされたデータ項目の前記ローカル・コピーが格納されず、前記アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、前記アロケーション・ポリシーを、前記アクセスされたデータ項目の前記ローカル・コピーが格納される書き込み割り当てポリシーに変更させるステップと、を備える、データ処理の方法。
【請求項１９】
データ項目をメモリのメモリ・アドレスに格納させるために、前記メモリ・アドレス、及び前記データ項目を指定する書き込みアクセス要求を発行するための手段と、
アロケーション・ポリシーに応じて、後続のアクセスのために、前記メモリからアクセスされたデータ項目のローカル・コピーを格納するための手段と、
メモリ・トランザクション・トリガ条件が満たされるまで、発行するための前記手段によって発行された１つ又は複数の書き込みアクセス要求をバッファリングし、次いで、前記１つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、前記メモリに関するメモリ・トランザクションを開始させるための手段であって、前記メモリ・トランザクションが、前記１つ又は複数のバッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作によって書き込まれる、前記書き込み動作を実行するように制約される、手段と、
前記バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するための手段と、
前記アロケーション・ポリシーが、前記アクセスされたデータ項目の前記ローカル・コピーが格納されず、前記アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、前記アロケーション・ポリシーを、前記アクセスされたデータ項目の前記ローカル・コピーが格納される書き込み割り当てポリシーに変更させるための手段と、を備える、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関する。より詳細には、本発明は、データ処理装置内のキャッシュ・ユニットの使用の適応に関する。
【背景技術】
【０００２】
データ処理装置内のプロセッサ・ユニットに関連するキャッシュ・ユニットであって、プロセッサ・ユニットによってメモリ内でアクセスされたデータ項目のローカル・コピーを格納して、それらのデータ項目へのアクセスが再び要求された場合、代わりにキャッシュに格納されたローカル・コピーにアクセスすることによって、メモリに格納されたデータ項目へのアクセスに付随する遅れを大幅に回避できるように構成されているキャッシュ・ユニットを提供することが知られている。キャッシュされたデータ項目へのそのような後のアクセスが行われた場合、及びこのアクセスが、書き込みアクセス（ｗｒｉｔｅ  ａｃｃｅｓｓ）である場合、そのコピーがキャッシュ内で更新され、書き戻し（ｗｒｉｔｅ−ｂａｃｋ）構成内でそのように（「ダーティ（ｄｉｒｔｙ）」）マーク付けされてもよく、又はシステムは、キャッシュ内のデータ項目への変更がメモリ内の元の記憶場所にすぐに伝搬される、書き込みスルー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）構成を有してもよい。
【０００３】
この文脈では、キャッシュ・ユニットは、書き込み誤りが発生した場合、すなわち、プロセッサ・ユニットが、キャッシュ・ユニット内で現在キャッシュされていないメモリにデータ項目を書き込みしようとする場合、その行動を決定するアロケーション・ポリシー（割り当て方針、ａｌｌｏｃａｔｉｏｎ  ｐｏｌｉｃｙ）を有することが知られている。たとえば、データ項目の記憶装置の信頼性が重要な要因であるデータ処理装置では、書き込み誤りが発生した場合、データ項目は、そのデータ項目のコピーがやはりキャッシュ内に引き込まれることなしにターゲット・メモリに書き込まれる、「非書き込み割り当て（ｎｏ−ｗｒｉｔｅ  ａｌｌｏｃａｔｅ）」ポリシーが使用されてよい。さらに、そのようなキャッシュ・アロケーション・ポリシーは、データ項目をキャッシュにポピュレートする（ｐｏｐｕｌａｔｅ）ことが、一般的にメモリからキャッシュ・ライン全体を取り出すことを含み、また、それに付随するさらなるバス・アクティビティを回避することが好ましいと決定され得るので、さらに好ましい場合がある。
【発明の概要】
【０００４】
第１の態様の観点において、本発明は、データ項目をメモリのメモリ・アドレスに格納させるために、メモリ・アドレス及びデータ項目を指定する書き込みアクセス要求（ｗｒｉｔｅ  ａｃｃｅｓｓ  ｒｅｑｕｅｓｔ）を発行するように構成されたプロセッサ・ユニットと、キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、プロセッサ・ユニットによる後続のアクセスのために、メモリから、アクセスされたデータ項目のローカル・コピーを格納するように構成されたキャッシュ・ユニットと、メモリ・トランザクション・トリガ条件が満たされるまで、プロセッサ・ユニットによって発行された１つ又は複数の書き込みアクセス要求をバッファリングし、次いで、１つ又は複数のバッファリングされた書き込みアクセス要求を実行することを備える、メモリに関するメモリ・トランザクションを開始させるように構成されたメモリ・アクセス・バッファとを備えるデータ処理装置であって、メモリ・トランザクションが、１つ又は複数のバッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが書き込み動作（ｗｒｉｔｅ  ｏｐｅｒａｔｉｏｎ）によって書き込まれる書き込み動作を実行するよう制約され、データ処理装置が、バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ（ｕｎｄｅｒｓｉｚｅ）条件を識別するように構成され、キャッシュ・ユニットが、アクセスされたデータ項目のローカル・コピーがキャッシュ・ユニットに格納されず、またアクセス・アンダーサイズ条件が満たされる非書き込み割り当てポリシーとして、アロケーション・ポリシーで動作するように構成される場合、データ処理装置が、キャッシュ・ユニットに、アクセスされたデータ項目のローカル・コピーがキャッシュ・ユニットに格納される書き込み割り当てポリシー（ｗｒｉｔｅ  ａｌｌｏｃａｔｅ  ｐｏｌｉｃｙ）として、引き続きアロケーション・ポリシーで動作させるように構成される、データ処理装置を提供する。
【０００５】
本発明は、特定の状況下では、キャッシュ・ユニットの非書き込み割り当てポリシーが、キャッシュ・ユニットの動作にとって最も望ましい構成ではない場合があることを認識する。具体的には、本発明の発明者は、書き込まれるべきメモリ・アドレスが所定の範囲のメモリ・アドレス内にある場合は、その所定の範囲内のすべてのメモリ・アドレスが書き込み動作によって書き込みされなければならないという制約が存在する書き込み動作を備えるメモリ・トランザクションが実行されるべきである場合に、そのような状況が発生し得ることを識別した。言い換えれば、この所定の範囲のメモリ・アドレス内の任意のメモリ・アドレスに書き込みアクセスが行われると、その所定の範囲内のすべてのメモリ・アドレスが書き込み動作で書き込みされなければならない。メモリ・トランザクションへのこの種類の制約は、いくつかの異なる理由で存在し得る。たとえば、メモリに格納されたデータ項目（メモリ・トランザクションの目標）が、それらとともに、関連付けられるエラー訂正コードを格納している場合があり、エラー訂正メカニズムの構成は、格納されたエラー訂正コードが、関連付けられるメモリ・アドレスの範囲を有するいくつかのデータ項目にそれぞれ関連するというものである。したがって、そのグループ内の任意のデータ項目が更新される場合（書き込みアクセスによって）、グループに関連して格納されたエラー訂正コードを正確に更新するために、グループ全体が再び書き込まれる必要がある。別の実例では、メモリ・トランザクションへのこの制約は、たとえそのようなブロック内の個々のデータ項目がそれら自体のメモリ・アドレスを有していても、データ項目のグループだけがブロックとしてともに書き込まれることを可能にする、メモリ自体のハードウェア構成に起因する場合がある。
【０００６】
本技法によれば、データ処理装置は、プロセッサ・ユニットによって発行された書き込みアクセス要求を、これらの１つ又は複数の書き込みアクセス要求がメモリ・トランザクションによって実施される前に一時的に保持（バッファリング）する、メモリ・アクセス・バッファを提供される。このメモリ・トランザクションは、１つ又は複数の所定の条件が満たされることによってトリガされ（メモリ・トランザクション・トリガ条件）、その条件は、たとえば、タイムアウト又はバッファがその全容量に到達することでよい。このバッファリングは、複数の書き込みアクセス要求が結合して、それと組み合わせて、たとえそれぞれの個々の書き込みアクセス要求が、それ自体はその範囲全体をカバーしていなくても、所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを指定する機会を提供する。この文脈では、本発明の発明者は、メモリ・アクセス・バッファによってバッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合（本明細書では、アクセス・アンダーサイズ条件と呼ばれる）、これは、キャッシュ・ユニットのアロケーション・ポリシーを適応することが有益である状況を表すと確証した。具体的には、現在、キャッシュ・ユニットが、メモリ内でアクセスされたデータ項目のキャッシングが発生せず、またアクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーに従って動作している場合、本技法に従って、データ処理装置は、キャッシュ・ユニットに、アクセスされたデータ項目がキャッシュ・ユニット内でキャッシュされる書き込み割り当てポリシーを使用して引き続き動作させる。
【０００７】
したがって、メモリ・トランザクションが、複数の所定の範囲のメモリ・アドレスの一部にのみ書き込み動作を実行しようとする書き込みアクセス要求を備える状況では、現在、キャッシュ・ユニットが、アクセスされたデータ項目のローカル・コピーはキャッシュ・ユニットに格納されていないと定義する、キャッシュ・アロケーション・ポリシー（非書き込みアロケーション・ポリシー）で動作している場合、データ処理装置は、キャッシュ・アロケーション・ポリシーを、アクセスされたデータ項目のローカル・コピーがキャッシュ・ユニットに格納される書き込み割り当てポリシーに切り替えるように構成される。そのような構成は、書き込みアロケーション・ポリシーを実装するための、キャッシュへのアロケーション（ライン・フィル動作（ｌｉｎｅ−ｆｉｌｌ  ｏｐｅｒａｔｉｏｎ）による）が、一般的に、メモリ・トランザクションを仲介するシステム・バスにさらなる負荷をもたらすという事実に関わらず、有益であると決定されている。しかしながら、アクセス・アンダーサイズ条件が満たされると、指定された複数の所定の範囲のメモリ・アドレスに読み出し（ｒｅａｄ）（アクセス・アンダーサイズ条件による）及び書き込み動作を実行するための、すでに実行されているはすのバス・トランザクションによる、システム・バスへの負荷をさらに著しく増加せずに、関連するデータ項目のキャッシングの利益を得ることができることが分かっている。
【０００８】
いくつかの実施例では、キャッシュ・ユニットは、後続のアクセスによってアクセスされたデータ項目のローカル・コピーの修正が、メモリ内の対応するオリジナル・データ項目の修正も生じさせる、書き込みスルーモードで動作するように構成されている。キャッシュ・ユニットの書き込みスルー構成は、これがメモリアップ・ツー・デート内のデータを保持する方法（すなわち、書き戻し構成の場合、「ダーティな」データはキャッシュ内に保持されない）のために、好ましい場合がある。本技法は、書き込みスルーモードで動作するように構成されたキャッシュ・ユニットの文脈において、この構成ではキャッシュの利用の信頼性が一般的に低下し、さらなるキャッシュ・アロケーションが大幅な追加のバス・トランザクション・コストなしに達成され得るので、特定の適用を見出だす場合があり、これは特に価値がある。
【０００９】
いくつかの実施例では、メモリ・アクセス・バッファは、メモリ・アクセス・トランザクションが実行されるべき１つ又は複数のバッファリングされた書き込みアクセス要求が、少なくとも１つの所定の範囲のメモリ・アドレス内にすべてのメモリ・アドレスを備えるとは限らない、少なくとも１つの所定の範囲のメモリ・アドレス内のメモリ・アドレスを指定する場合、メモリ・アクセス・トランザクションに、少なくとも１つの所定の範囲のメモリ・アドレスによって表示される少なくとも１つの拡張されたデータ項目を取り出すステップと、バッファリングされた書き込みアクセス要求において指定された１つ又は複数のデータ項目を、取り出された少なくとも１つの拡張されたデータ項目に統合させるステップと、修正された少なくとも１つの拡張されたデータ項目をメモリに書き戻しするステップとを備えさせるように構成されている。
【００１０】
したがって、メモリ・トランザクションは、所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスが、書き込み動作によって書き込まれる方法で書き込み動作を実行するよう制約されるという事実によって、バッファリングされた書き込みアクセス要求が、所与の所定の範囲のメモリ・アドレスの一部だけを指定すると、メモリ・トランザクション要求は読み出し−修正−書き込み（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ）動作として実行され得る。この読み出し−修正−書き込み動作は、メモリからの所定の範囲のメモリ・アドレスによって指定された「完全な（ｆｕｌｌ）」データ項目をメモリから読み出しするステップと、書き込みアクセス要求が関連する、その一部を修正するステップ（バッファリングされた書き込みアクセス要求で指定された１つ又は複数のデータ項目を「完全な」データ項目に統合することによって）と、そのように修正された「完全な」データ項目を再びメモリに書き戻しするステップとを備える。そのような実施例では、バッファリングされた書き込みアクセス要求が、読み出し動作、具体的には、所定の範囲のメモリ・アドレスのすべてに対応するデータを取り出す読み出し動作を備えるメモリ・アクセス・トランザクションをもたらすという事実は、アクセス・アンダーサイズ条件が満たされる場合（すなわち、少なくとも２つの所定の範囲のメモリ・アドレスが、バッファリングされた書き込みアクセス要求によって部分的に書き込まれる場合）、ライン・フィル動作のために要求されたデータのほとんど（又はすべて）がすでにメモリから取り出されているので、このアロケーションが実行されるべき重要なさらなるバッファ・アクセス・トランザクションを生じさせることなしに、キャッシュ・アロケーションが生じ得る（すなわち、取り出された拡張されたデータ項目に対応するデータ項目をキャッシュにポピュレートする）ことを意味する。
【００１１】
いくつかの実施例では、データ処理装置は、キャッシュ・ユニットに、書き込み割り当てポリシーとして引き続きアロケーション・ポリシーで動作させた後で、及びメモリ・トランザクション・トリガ条件が満たされた場合、メモリ・アクセス・トランザクションが実行されるべき、バッファリングされた書き込みアクセス要求が、指定されたメモリ・アドレスがある少なくとも１つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるメモリ・アドレスを指定すると、アクセス・フル・サイズ条件（ａｃｃｅｓｓ  ｆｕｌｌ−ｓｉｚｅ  ｃｏｎｄｉｔｉｏｎ）を識別するように構成され、アクセス・フル・サイズ条件が満たされると、メモリ・アクセス・バッファは、キャッシュ・ユニットに、非書き込み割り当てポリシーとしてアロケーション・ポリシーでの動作に切り替えさせるように構成されている。
【００１２】
したがって、アクセス・アンダーサイズ条件の識別、及び書き込み割り当てポリシーに従って操作するためのキャッシュ・ユニットの切り替えに続いて、正しい状況下で、非書き込みアロケーション・ポリシーに従って動作するようにキャッシュ・ユニットをスイッチ・バックすることが有益であることが認識される。そのような状況は、本明細書では、指定されたメモリ・アドレスが属する少なくとも１つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるメモリ・アドレスを指定するメモリ・アクセス・トランザクションが実行される必要がある場合、満たされていると認識される。言い換えれば、メモリ・アクセス・トランザクション内の所定の範囲のメモリ・アドレスのうちの少なくとも１つが、バッファリングされた書き込みアクセス要求によって「完全にアクセスされる（ｆｕｌｌｙ  ａｃｃｅｓｓｅｄ）」、すなわち、それらのバッファリングされた書き込みアクセス要求が、その所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスに書き込みするのは、この時である。この場合、このメモリ・トランザクションは、比較的単純な方法、たとえば、データの連続ブロックが、１つ又は複数の所定の範囲のメモリ・アドレスに書き込みされてよく、比較的シンプルなバス・トランザクションだけを必要とする方法で実行され得ることが認識され、書き込み割り当てポリシーに従ってキャッシュ・ユニットを動作することは、場合によってはさらなるバス・トランザクションを招く場合があり、したがって、キャッシュ・ユニットを非書き込み割り当てポリシーに切り替えることによって、バス・トランザクションの全体的な数を減少させることができる。
【００１３】
いくつかの実施例では、キャッシュ・ユニットは、まず非書き込み割り当てポリシーとしてアロケーション・ポリシーで動作するように構成されている。キャッシュ・ユニットは、いくつかの異なる方法で構成され得ることが認識され、これらは指定されたハードウェア又はソフトウェアのいずれかであるが、キャッシュ・ユニットが動作しているアロケーション・ポリシーがハードウェア構成の一部である場合、プロセッサ・ユニットへの処理負荷は減少される。したがって、非書き込み割り当てポリシーで動作するために、まずキャッシュ・ユニットを、そのようなハードウェア構成の一部として構成することが有益であってよい。
【００１４】
メモリ・トランザクションがブロックとして書き込みするよう制約される、所定の範囲のメモリ・アドレスは、データ項目がメモリに格納される方法の様々な異なる態様に対応し得る。しかしながら、一実施例では、データ項目は、関連付けられるエラー訂正コードを有するメモリに格納され、所定の範囲のメモリ・アドレスは、関連付けられるエラー訂正コードを更新するためにメモリから読み出される必要があるユニット・データ項目サイズによって決定される。したがって、そのような実施例では、エラー訂正コードは、所定の範囲のメモリ・アドレスに格納されたデータ項目を参照して生成されてよく、したがって、所定の範囲のメモリ・アドレス内の任意のデータ項目が更新されると、そのデータ項目のブロック全体の関連付けられるエラー訂正コードも同様に更新される必要がある。
【００１５】
対応するエラー訂正コードの計算は、データ処理装置内でいくつかの異なる方法で行うことができ、たとえば、これは、基本的にメモリ自体の機能であってもよく、データ処理装置の機能であってもよい。一実施例では、データ処理装置は、メモリ・トランザクションに含めるための更新されたエラー訂正コード値を決定するように構成されたエラー訂正コード決定ユニットをさらに備える。したがって、バッファリングされた書き込みアクセス要求がメモリ・トランザクションとして実行されるべきである場合、エラー訂正コード決定ユニットは、バッファリングされた書き込みアクセス要求で指定されたデータ項目に関連してメモリに書き込みされ得る、対応するエラー訂正コード値を提供することができる。いくつかの実施例では、メモリ・アクセス・バッファは、エラー訂正コード決定ユニットを備える。
【００１６】
いくつかの実施例では、所定の範囲のメモリ・アドレスは、メモリに関するメモリ・トランザクションのユニット・データ・サイズによって決定される。したがって、所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスに書き込みするメモリ・トランザクションの制約は、メモリ自体の機能に起因する場合があり、たとえば、メモリは、書き込みトランザクション（ｗｒｉｔｅ  ｔｒａｎｓａｃｔｉｏｎ）においてともにアクセスされる必要があるメモリ・アドレスの最小グループがあるように構成され得る。
【００１７】
メモリ・アクセス・バッファは、様々な方法で構成されてよいが、一実施例では、メモリ・アクセス・バッファはアクセス・スロットを備え、アクセス・スロットは、プロセッサ・ユニットによって発行された書き込みアクセス要求を、アクセス・スロットに関連して格納された選択されたメモリ・アドレスに関してバッファリングするように構成される。したがって、特定のメモリ・アドレスとアクセス・スロットとの関連によって、メモリ・アクセス・バッファが、通常は、それらの書き込みアクセス要求が関連するデータ項目の密接な空間相関のおかげで、単一のメモリ・トランザクション内でともに有効に実行され得る書き込みアクセス要求を蓄積することが可能になる。言い換えれば、アクセス・スロットは、メモリ・アドレス、及びそのメモリ・アドレスに関連する書き込みアクセス要求を格納して、（すなわち、メモリ・アドレスで、又はそのメモリ・アドレスからのスロットのサイズによって表されるオフセット内で）次いで、実行される前に、そのアクセス・スロット内に蓄積され得る。
【００１８】
書き込みアクセス要求のためにアクセス・スロットがバッファリングすることができるデータ項目のサイズは異なってよいが、一実施例では、アクセス・スロットは、キャッシュ・ライン・サイズ未満のサイズを有するように構成される。言い換えれば、アクセス・スロットのサイズは、（最大数の）バッファリングされたデータ項目が、キャッシュ・ユニット内のキャッシュ・ライン・サイズ未満である、結合されたサイズを有するようなサイズでよい。キャッシュ・ユニット内のキャッシュ・ライン・サイズは、一般的に、特定のデータ項目がキャッシュ・ユニット内でキャッシュされるべきである場合（ライン・フィル動作によって）、キャッシュ・ユニットがメモリから取り出される、データの単位を表すと認識される。したがって、アクセス・スロットのサイズと比較することによって、キャッシュ・ユニットのライン・フィル動作は、それをサポートするために、実行される必要があるバス・トランザクションに関して重要な動作を表し、したがって、キャッシュ・ユニットを、書き込み割り当てポリシーに従って動作するように切り替えることは、原則として著しいさらなるバス・トランザクションの発生をもたらす点に留意されたい。しかしながら、データ処理装置が、キャッシュ・ユニットを書き込み割り当てポリシーに従って動作するように切り替えるように構成される本技法の文脈では、アクセス・アンダーサイズ条件が満たされる場合、そのような著しいさらなるバス・トランザクション負担は生じない。
【００１９】
メモリ・アクセス・バッファはアクセス・スロットを１つだけ備え得るが、いくつかの実施例では、メモリ・アクセス・バッファは、複数のアクセス・スロットを備え、各アクセス・スロットは、そのアクセス・スロットに関連して格納された選択されたメモリ・アドレスに関してプロセッサ・ユニットによって発行された書き込みアクセス要求をバッファリングするように構成される。言い換えれば、各アクセス・スロットは、メモリ・アドレス、及びそのメモリ・アドレスに関連する書き込みアクセス要求を格納して、（すなわち、メモリ・アドレスで、又はそのメモリ・アドレスからのスロットのサイズによって表されるオフセット内で）次いで、実行される前に、そのアクセス・スロット内に蓄積され得る。
【００２０】
アクセス・アンダーサイズ条件は、１つだけのアクセス・スロットに関して識別され得るが、いくつかの実施例では、データ処理装置は、複数のアクセス・スロットでバッファリングされた複数の書き込みアクセス要求に関してアクセス・アンダーサイズ条件を識別するように構成される。
【００２１】
データ処理装置は、単一のメモリ・トランザクションに関して、又は複数のメモリ・トランザクションに関してアクセス・アンダーサイズ条件を識別するように構成され得る。一実施例では、データ処理装置は、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らないバッファリングされた書き込みアクセス要求が、単一のメモリ・トランザクションにおいて実行されると、アクセス・アンダーサイズ条件を識別するように構成される。
【００２２】
いくつかの実施例では、メモリ・アクセス・バッファは、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らないバッファリングされた書き込みアクセス要求が、互いからの所定の分離未満で実行される別々のメモリ・トランザクションにおいて実行されると、アクセス・アンダーサイズ条件を識別するように構成される。
【００２３】
この所定の分離はいくつかの形式を取ることができ、たとえば、別々のメモリ・トランザクションのタイミング分離、又は一連のメモリ・トランザクションにおける通常の分離によって定義される。
【００２４】
一実施例では、別々のメモリ・トランザクションは、互いに連続して（ｂａｃｋ−ｔｏ−ｂａｃｋ）実行される。言い換えれば、これらの別々のメモリ・トランザクションは、それらの間にさらなるメモリ・トランザクションが実行されることなしに実行される。
【００２５】
アクセス・アンダーサイズ条件は、データ処理装置のいくつかの異なる構成要素によって識別することができ、同様に、キャッシュ・ユニットに、データ処理装置のいくつかの異なる構成要素によるアクセス・アンダーサイズ条件に応じて、アロケーション・ポリシーを変更させることができるが、一実施例では、メモリ・アクセス・バッファは、アクセス・アンダーサイズ条件を識別するように構成され、メモリ・アクセス・バッファは、キャッシュ・ユニットに、アクセス・アンダーサイズ条件に応じてアロケーション・ポリシーを変更させるように構成される。
【００２６】
本発明の第２の態様の観点において、本発明は、データ項目をメモリのメモリ・アドレスに格納させるために、メモリ・アドレス、及びデータ項目を指定する書き込みアクセス要求を発行するステップと、アロケーション・ポリシーに応じて、後続のアクセスのために、メモリからアクセスされたデータ項目のローカル・コピーを格納するステップと、メモリ・トランザクション・トリガ条件が満たされるまで、発行された１つ又は複数の書き込みアクセス要求をバッファリングし、次いで、１つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、メモリに関するメモリ・トランザクションを開始させるステップであって、メモリ・トランザクションが、１つ又は複数のバッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、書き込み動作によって書き込まれる書き込み動作を実行するように制約されるステップと、バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するステップと、アロケーション・ポリシーが、アクセスされたデータ項目のローカル・コピーが格納されず、アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、アロケーション・ポリシーを、アクセスされたデータ項目のローカル・コピーが格納される書き込み割り当てポリシーに変更させるステップとを備える、データ処理の方法を提供する。
【００２７】
本発明の第３の態様の観点において、本発明は、データ項目をメモリのメモリ・アドレスに格納させるために、メモリ・アドレス、及びデータ項目を指定する書き込みアクセス要求を発行するための手段と、アロケーション・ポリシーに応じて、後続のアクセスのために、メモリからアクセスされたデータ項目のローカル・コピーを格納するための手段と、メモリ・トランザクション・トリガ条件が満たされるまで、発行するための手段によって発行された１つ又は複数の書き込みアクセス要求をバッファリングし、次いで、１つ又は複数のバッファリングされた書き込みアクセス要求を実行するステップを備える、メモリに関するメモリ・トランザクションを開始させるための手段であって、メモリ・トランザクションが、１つ又は複数のバッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、書き込み動作によって書き込まれる書き込み動作を実行するように制約される、手段と、バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、アクセス・アンダーサイズ条件を識別するための手段と、アロケーション・ポリシーが、アクセスされたデータ項目のローカル・コピーが格納されず、アクセス・アンダーサイズ条件が満たされる、非書き込み割り当てポリシーである場合、アロケーション・ポリシーを、アクセスされたデータ項目のローカル・コピーが格納される書き込み割り当てポリシーに変更させるための手段とを備える、データ処理装置を提供する。
【００２８】
本発明を、例示のためだけに、添付の図面に示される本発明の実施例を参照してさらに説明する。
【図面の簡単な説明】
【００２９】
【図１】一実施例における、データ処理装置を概略的に示す図である。
【図２】一実施例における、データ処理装置を概略的に示す図である。
【図３】一実施例における、ストア・バッファ、及びキャッシュ・アロケーション・ポリシーにおける結果として生じる変更の例示的内容を概略的に示す図である。
【図４Ａ】一実施例における、ハード・ドライブ・メモリに接続されたデータ処理装置を概略的に示す図である。
【図４Ｂ】一実施例における、ＮＡＮＤフラッシュ・メモリに接続されたデータ処理装置を概略的に示す図である。
【図５Ａ】一実施例の方法において行われる一連のステップを概略的に示す図である。
【図５Ｂ】一実施例の方法において行われる一連のステップを概略的に示す図である。
【発明を実施するための形態】
【００３０】
図１は、一実施例における、データ処理装置１０を概略的に示している。データ処理装置内のプロセッサ・ユニット１２は、メモリ１４内の指定されたメモリ・アドレスにデータ項目を書き込みすることを含む、データ処理作業を実行するように構成されている。プロセッサ・ユニット１２は、メモリ・アドレス、及びデータ項目を指定する書き込みアクセス要求を発行することによって、データ項目を、メモリ１４内の指定されたメモリ・アドレスに書き込みさせる。プロセッサ・ユニット１２によって発行された書き込みアクセス要求は、ストア・バッファ１６によって受信される。ストア・バッファ１６は、書き込みアクセス要求がメモリ・トランザクションとして実行される前に、それらの書き込みアクセス要求を一時的にバッファリングする、いくつかのアクセス・スロット２２を備える。ストア・バッファ１６からのメモリ・トランザクションは、メモリ１４へのシステム・バス（図示せず）を介して、バス・インターフェース・ユニット１８を介して進む。データ処理装置は、プロセッサ・ユニットがそのデータ処理作業の一部として現在使用しているデータ項目のローカル・コピーを格納するように構成されたキャッシュ２０も備え、したがって、メモリ１４からこれらのデータ項目を取り出すことに付随する遅れを大幅に回避することができる。プロセッサ・ユニット１２によるキャッシュ２０の内容へのアクセスは、ストア・バッファ１６によって仲介され、したがって、プロセッサ１２によって発行された書き込みアクセス要求がストア・バッファ１６によって受信されると、指定されたデータ項目が現在キャッシュ内に格納されているかどうかを決定するためにキャッシュ・ルックアップが開始される。キャッシュ２０はいくつかのキャッシュ・ライン２４を備え、キャッシュに格納されたデータ項目２６は、一般的に、所与のキャッシュ・ライン２４の比較的小さい割合だけを占める。
【００３１】
データ処理装置１０は、デフォルトで、キャッシュ・ユニット２０が非書き込み割り当てポリシーで動作するように構成されており、上述のキャッシュ・ルックアップが行われてキャッシュ・ミスが発生すると、プロセッサ１２からストア・バッファ１６によって受信された書き込みアクセス要求に応答して、データ項目がキャッシュ２０に格納されず、メモリ１４に直接書き込まれることを意味する。これは、同じデータ項目への後続のアクセスがプロセッサ・ユニット１２によって行われた場合、より高速なアクセスのためにキャッシュで利用可能ではないことを意味するが、このデータ項目をキャッシュに格納することは、メモリ１４から、データのキャッシュ・ライン全体の価値を取り出すことを備えるライン・フィル動作を含むので、バス・システムにより軽い負荷がかけられる。それにもかかわらず、本技法によるデータ処理装置１０は、プロセッサ・ユニット１２からストア・バッファ１６によって受信された書き込みアクセス要求の性質に応じて、そのキャッシュ・アロケーション・ポリシーを動的に適応させるように構成される。以下の図面を参照してより詳細に説明されるように、これらの書き込みアクセス要求は監視され、適切な環境下で、キャッシュ・アロケーション・ポリシーは、データ項目のローカル・コピーがキャッシュ・ユニットに格納される、書き込み割り当てポリシーに切り替えられる。ストア・バッファ１６によって受信される書き込みアクセス要求の監視は、いくつかの方法で実装されてよく、一般的に、図１に示されるアクセス・モニタ２８を設けることによって示される。このアクセス・モニタ２８は、ストア・バッファ１６に関連付けられているものとして示されているが、この関連付けは機能的なものであり、アクセス・モニタ２８はデータ処理装置１０の別の構成要素を表すこともでき、又は、図２を参照して後述される実施例の場合は、アクセス・モニタ２８はそれ自体がストア・バッファ１６の一部であってもよいことが認識されるべきである。
【００３２】
図２は、一実施例におけるデータ処理装置の構成をより詳細に、概略的に示している。データ処理装置は図２でコア３０によって表されており、それは（「複数のコア」３２によって示されるように）いくつかのプロセッサ・コアのうちの１つであり、それぞれはコア３０と同じ方法で構成されている。コア３０は、実行ユニット３４、ストア・バッファ３６、キャッシュ３８、及び（その周囲に）バス・インターフェース・ユニット４０を備える。図１に示される実施例を参照して上述したように、図２のストア・バッファ３６は、データ項目が指定されたメモリ・アドレスに書き込まれるべきである場合、実行ユニット３４によって発行された書き込みアクセス要求を管理するために提供される。バス・インターフェース・ユニット４０は、コア３０とシステム・バス４２との間にインターフェースを提供し、これは、この例では、英国、ケンブリッジのＡＲＭ  Ｌｔｄによって提供されるＡＸＩバスである。やはりシステム・バス４２に結合されているのはメモリ４４であり、この例では、コア３０に関連して提供される低遅れＲＡＭであり、このメモリでは、データが比較的迅速にアクセスされ得る（システム内のメモリの他の例と比較して）。低遅れＲＡＭ４４の記憶場所はバイト・アドレス指定可能であり、すなわち、データがバイト・レベルの粒度でメモリ４４に格納され、したがって、データの個々のバイトがメモリ内でアドレス指定され得る（したがって、書き込み及び読み出しされ得る）。しかしながら、さらに、メモリ４４は、３２ビットのデータ・チャンク（すなわち、４バイトのブロック）に関連してエラー訂正コード（ＥＣＣ：ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｃｏｄｅ）を格納する。データに関連するこのＥＣＣの格納は、冗長性のレベル、ひいてはそのデータの保護を提供し、したがって格納されたデータ項目にエラーが発生すると（たとえば、粒子の衝突のために）、エラーがあまり広範囲ではない限り、検出及び／又は補正することができる。
【００３３】
メモリ４４内のデータに関連するＥＣＣの格納は、ストア・バッファ３６による書き込みアクセス要求の管理の結果も有し、その中で、実行ユニット３４からストア・バッファ３６によって受信される書き込みアクセス要求は、メモリ４４内のわずか１つのバイトを指定することができるが、４バイト（３２ビット）「チャンク」のデータに関連するＥＣＣの格納は、サブ・チャンク（すなわち、３２ビットのチャンク内のすべての４バイトより少ない）を指定する書き込みアクセス要求は、それにもかかわらず、ＥＣＣはチャンク全体に関して決定されなければならないので、３２ビットのチャンクのすべてを書き込みするメモリ・トランザクションによって実装されなければならないことを意味する。
【００３４】
ストア・バッファ３６の全体的な制御は、制御ユニット４６によって維持される。ストア・バッファ３６は４つのアクセス・スロット４８を備え、そのそれぞれは、ステート・マシン５０に基づいて動作して、そのアクセス・スロットに割り当てられた書き込みアクセス要求のために指定されたアドレス５２を保持するように構成されている。各アクセス・スロットは、最大で４つの３２ビットのデータ・チャンクを保持することができる。実行ユニット３４からストア・バッファ３６によって受信される書き込みアクセス要求は、制御ユニット４６によって管理され、具体的には、その書き込みアクセス要求に関連付けられるメモリ・アドレスに応じて、各受信された書き込みアクセス要求をアクセス・スロット４８のうちの１つに割り当てる。アクセス・スロットのうちの１つにすでに格納されているメモリ・アドレスを指定する書き込みアクセス要求が受信されると、又は、少なくとも受信されたアドレスが、アクセス・スロットに格納されたアドレスによって表される範囲、及びアクセス・スロットが保持できる１２８ビット（４×３２ビット）データ範囲内にある場合、後続の書き込みアクセス要求は、そのアクセス・スロットに蓄積され得る。任意のアクセス・スロットの現在の内容に関連しないメモリ・アドレスを指定する書き込みアクセス要求が受信されると、新しい書き込みアクセス要求がフリーのアクセス・スロットに割り当てられるか、又は、アクセス・スロットがフリーになるまでバッファリングされなければならない。したがって、各アクセス・スロットは、１２８ビットのデータ範囲（４チャンク）に関連する書き込みアクセス要求を蓄積するために役立つ。ストア・バッファ３６内のアクセス・スロットは、メモリ・トランザクション・トリガ条件が満たされるまで書き込みアクセス要求の蓄積を継続し、その時点で、ストア・バッファ３６は、メモリ４４にアクセスするために、そのアクセス・スロットの内容を、バス・インターフェース・ユニット４０及びシステム・バス４２を介してメモリ・トランザクションとして実施させる。制御ユニット４６は、各３２ビット（４バイト）のデータのチャンクに関連してメモリ４４に格納されたエラー訂正コード（ＥＣＣ）を計算するように構成されたＥＣＣ計算ユニット５４も備える。そのような各データのチャンクに関連するＥＣＣの格納、及び具体的には、ＥＣＣは３２ビット・チャンク（各個々のバイトとは反対に）に関して決定されるという事実は、ストア・バッファが実行する書き込みトランザクションは、完全な３２ビット・チャンク全体に関していなければならず、チャンクの一部（サブ・チャンク）だけに関して実行することはできないことを意味する。その結果、メモリ・トランザクション・トリガ条件が満たされ、アクセス・スロットの内容が、この内容をメモリ４４に書き込みするためにメモリ・トランザクションとして実施される状況では、そのアクセス・スロット内の４つの３２ビット・チャンクのうちのいずれかが、部分的にのみ満たされる場合（すなわち、チャンク内のすべての４バイト未満が、書き込まれるよう指定される）、このメモリ・トランザクションは、読み出し−修正−書き込みトランザクションとして実���され、対応するチャンクがまずメモリ４４から読み出しされ、書き込まれるべき新しいサブ・チャンクが、メモリから読み出しされたチャンクに統合され、新しいＥＣＣがＥＣＣ計算ユニット５４によって決定され、次いで、関連付けられる更新されたＥＣＣを有する完全なチャンクがメモリ４４に書き込まれる。反対に、アクセス・スロットの内容が、そのアクセス・スロットの内容がメモリ・トランザクションとして書き出される時に唯一の完全なデータのチャンクである場合、このメモリ・トランザクションは、指定されたチャンク（ユニット５４によって計算された、関連付けられるＥＣＣを有する）がメモリ４４に書き込まれる、直接書き込みトランザクションとして実装され得る。
【００３５】
ストア・バッファ３６の動作の全体的な管理の一部として、制御ユニット４６は、実行されているメモリ・アクセスを監視する（及び、図１に示されるアクセス・モニタ２８の役割を担う）。書き込みアクセス要求が、実行ユニット３４、並びに上述のアクセス・スロット４８の使用の管理から受信されると、制御ユニット４６は、書き込みアクセス要求で指定されたデータ項目が、キャッシュ３８のキャッシュ・ラインに現在格納されているかどうかを決定するために、キャッシュ３８内で、キャッシュ・ルックアップを実行させる。キャッシュ３８は、キャッシュの動作を制御する制御ユニット５６を備える。データ項目がキャッシュ３８に現在格納されていない場合（キャッシュ・ミス）、デフォルトで、コア３０が、キャッシュ３８のキャッシュ・ラインにこのデータをポピュレートせずに、指定されたデータ項目をメモリ４４に書き込みするように構成される。言い換えれば、一般的に、キャッシュ３８は、非書き込みアロケーション・ポリシーに従って動作するように構成されている。この構成は、一般的に、指定されたデータ項目を含む６４バイトのキャッシュ・ライン全体をポピュレートするためにライン・フィル動作を実行することに関連付けられるさらなるバス・トランザクションを回避するので、低遅れＲＡＭ４４に関連するコア３０の動作にとって好ましい。この方法でバス・トランザクションの数を減らすことは、低遅れ（すなわち、高速の）ＲＡＭを、コア３０のデータ記憶場所として使用することをサポートし、したがって、保留中のバス・トランザクションのキューのために実行ユニット３４が機能停止する可能性を下げる。
【００３６】
ストア・バッファ３６の制御ユニット４６は、書き込みアクセス要求、及びより具体的には、ストア・バッファ３６の所与のアクセス・スロット４８における書き込みアクセス要求の蓄積に起因するメモリ・トランザクションの「占有」を監視するようにさらに構成される。制御ユニット４６は、複数のサブ・チャンク・データ項目が指定されるメモリ・トランザクションが行われる時の状況を識別するように構成される。言い換えれば、所与のアクセス・スロットで指定され得る４つの３２ビット・チャンクのうちの複数が、実際には、そのチャンクの一部だけが書き込まれるよう指定する場合、制御ユニット４６は、これを「アクセス・アンダーサイズ条件」として識別する。アクセス・アンダーサイズ条件が制御ユニット４６によって識別されると、キャッシュ３８（及び、具体的には、その制御ユニット５６）に、キャッシュ・ユニットが現在非書き込み割り当てポリシーで動作している場合、キャッシュ・ユニットは書き込み割り当てポリシーでの動作に切り替えられるべきであるとシグナリングする。書き込み割り当てポリシーでキャッシュを動作することは、キャッシュに対応するデータ項目をポピュレートするためにライン・フィル動作がさらに行われることを意味するが、複数のサブ・チャンク・書き込み動作が実行される場合、対応するライン・フィル動作は、そうではない場合よりも負担が軽いことが分かっているので、ストア・バッファ３６の制御ユニット４６の動作のこの構成は価値があると判断される。これは、これらのサブ・チャンク書き込み動作が、ストア・バッファ３６による読み出し−修正−書き込み動作として処理され、したがって具体的には、これらのデータ項目に関する読み出しトランザクションはすでに実行されており、この文脈では、これらのデータ項目をキャッシュ３８内で引き続き利用可能にする利益は、これらのサブ・チャンク・データ項目をキャッシュにポピュレートするために、関連するキャッシュ・ラインの残りの部分を取り出すことのさらなる負担を上回るという事実によるものである。
【００３７】
ストア・バッファ３６の制御ユニット４６は、単一のアクセス・スロット内の複数のサブ・チャンク・データ項目を識別するだけでなく、複数のアクセス・スロット４８内のバッファリングされた書き込みアクセス要求が、サブ・チャンク・データ項目を指定する場合、アクセス・アンダーサイズ条件も識別できるように構成される。異なるアクセス・スロットから生じる多くのトランザクションが次々に行われる場合があるので、制御ユニット４６は、ストア・バッファ３６によって開始された最近のメモリ・トランザクションの記録、及び、アクセス・スロットごとのそれらのメモリ・トランザクションが、少なくとも１つのサブ・チャンク・データ項目を備えるかどうかを維持するように特に構成された履歴ストレージ５８を備えている。したがって、制御ユニット４６は、２つの異なるアクセス・スロット４８から生じる２つのトランザクションが行われ、それぞれがサブ・チャンク・データ項目を備え、メモリ・トランザクションが連続する場合、すなわち、さらなるメモリ・トランザクションによって分離されない場合、アクセス・アンダーサイズ条件を識別するように構成されている。
【００３８】
ストア・バッファ３６は、各コアに関連して提供されるキャッシュ・ユニット３８間のキャッシュ・コヒーレンシを維持するために、データ処理システム内のさらなるコア３２の他のストア・バッファと通信するようにさらに構成される。これは、当業者が精通している方法であり、本明細書では、簡潔にするためにこの通信のさらなる詳細は省略される。
【００３９】
図３は、ストア・バッファ３６の制御ユニット４６が、キャッシュ・ユニット３８にアロケーション・ポリシーを変更させる２つの状況に対応する、ストア・バッファ３６の２つのアクセス・スロットの内容を概略的に示している。図３の上部は、２つのアクセス・スロット（ＷＢＵＦ０及びＷＢＵＦ１）が、それぞれ個々に複数のサブ・チャンク書き込みを備える状況を概略的に示しており、実際には、図示された例では、各アクセス・スロットで利用可能な４つの３２ビット・チャンクのそれぞれは、チャンクごとに実行されるべきである単一のバイト・サブ・チャンク書き込みに対応する単一の有効なバイトによってのみポピュレートされている。したがって、ストア・バッファ３６の制御ユニット４６は、これらが連続して行われると仮定すると、アクセス・スロットのアクセス・アンダーサイズ条件を個別に、又は、実際には、各アクセス・スロットによって開始されたメモリ・トランザクションのアクセス・アンダーサイズ条件を識別する。その結果、制御ユニット４６は、キャッシュ・ユニット３８に、引き続き書き込みアロケーション・ポリシーで動作させる（すでにそのように行っていない場合）。図３は、ストア・バッファ３６の制御ユニット４６が、キャッシュ・ユニット３８に、書き込み割り当てポリシーによる動作から、非書き込みアロケーション・ポリシーでの動作に切り替えさせる状況をさらに示している。これは、制御ユニット４６が、アクセス・スロットの内容に基づいて実行されるべきメモリ・トランザクションが、完全なチャンク書き込みだけを備える、すなわち、実行されるべきサブ・チャンク書き込みがないと識別する場合に生じる。図３の下部は、ＷＢＵＦ０とＷＢＵＦ１の両方のアクセス・スロットの完全なチャンク書き込み構成を示している。
【００４０】
上述の実施例では、メモリへの書き込みトランザクションは４バイトのデータのチャンクに関して行われなければならないという制約は、メモリ４４内の各３２ビット・チャンクに関連して格納されたＥＣＣのためである。しかしながら、本技法はそのようなＥＣＣベースの構成に決して限定されず、また、ストア・バッファのアクセス・スロットから開始された書き込みトランザクションは、データ項目のブロック（すなわち、複数の個々のアドレス指定可能な記憶場所に広がる、対応するメモリ・アドレスを有するグループ）に関して行われなければならないという制約は、様々なシステム構成の特徴に起因する場合があるということを理解することは重要である。図４Ａ及び図４Ｂは、この場合の２つのデータ処理システムを概略的に示している。図４Ａに示される実例では、データ処理装置１０（及び、したがって図１に関して上述のように構成される）は、ハード・ドライブ６０として組み込まれたメモリにアクセスする。このハード・ドライブ６０の構成は、ハード・ドライブ６０によって受信されたアクセス要求が５１２バイトのセクタ６２内のデータにアクセスするよう制約されるというものであり、書き込みアクセス要求が５１２バイト未満のセクタに関連して実行ユニット１２によって発行される場合、それでも「完全な」５１２バイトの書き込み動作が実行されなければならないことを意味する。同様に、図４Ｂは、別の実施例を概略的に示しており、データ処理装置１０によるメモリ・アクセスがＮＡＮＤフラッシュ・メモリ６４へのアクセスであるこの例では、データは２０４８バイト・ページ６６に書き込みされなければならないという制約が存在する。
【００４１】
図５Ａ及び図５Ｂは、一実施例の方法による、データ処理装置内で行われる一連のステップを概略的に示している。ステップ１００で、指定されたデータ項目を指定されたメモリ・アドレスに書き込みしようとする書き込みアクセス要求が、プロセッサによって発行される。この書き込みアクセス要求は、ストア・バッファによって受信され、次いで、ステップ１０２で、ストア・バッファの利用可能なアクセス・スロット内に一時的にバッファリングされる。ストア・バッファは、キャッシュ・ルックアップ手順を開始させて、ステップ１０４で、キャッシュ・ヒットが発生したかどうかが決定される。キャッシュ・ヒットが発生した場合、フローは、指定されたデータ項目を含むキャッシュ・エントリが修正されて、ストア・バッファが、この修正をメモリに書き込みスルーするために書き込みアクセス要求の処理を継続する、ステップ１０６を介して進む。その後、又はステップ１０４でキャッシュ・ミスが発生した場合、ステップ１０８で、このアクセス・スロットのためにメモリ・トランザクション・トリガ条件が満たされるかどうかが決定される。言い換えれば、ストア・バッファが、このアクセス・スロットが排出されるべきかどうかを決定する。当業者によって、この条件は、当業者が精通しているいくつかの理由で満たされ得ることが認識されるので、本明細書では、簡潔にするためにさらなる説明は省略される。メモリ・トランザクション・トリガ条件が満たされない場合、フローはストア・バッファが待機するステップ１１０に進み、ステップ１１２で、プロセッサから別の新しい書き込みアクセス要求が受信されたかどうかが決定される。そのような新しい書き込みアクセス要求が受信されない場合、及びメモリ・トランザクション・トリガ条件が満たされない場合、フローはステップ１０８、ステップ１１０、ステップ１１２のループを巡回する。プロセッサから別の新しい書き込みアクセス要求が受信されると、フローはステップ１０２に進み、この新しい書き込みアクセス要求が、ストア・バッファの利用可能なスロット内にバッファリングされる。具体的には、新しい書き込みアクセス要求が、ストア・バッファ内のすでにバッファリングされた書き込みアクセス要求に十分に近いメモリ・アドレスに関連する場合、新しい書き込みアクセス要求は、そのアクセス・スロットに格納された、以前に受信された書き込みアクセス要求から、適切なオフセットで、同じアクセス・スロット内にバッファリングされる。
【００４２】
ステップ１０８で、メモリ・トランザクション・トリガ条件がアクセス・スロットのために満たされたことが一旦決定されると、次いでステップ１１４で、メモリ・トランザクションが複数の完全ではないチャンク（ｎｏｎ−ｆｕｌｌ−ｃｈｕｎｋ）・アクセスを備えるかどうかが決定される。完全ではないチャンク・アクセスを備えない場合、フローはステップ１１６に進み、必要なメモリ・トランザクションにサブ・チャンク・アクセスが１つだけあるかどうかが決定される。そうではない場合、すなわち、必要なメモリ・トランザクションは完全なチャンク・書き込みアクセスだけを備える場合、ステップ１１８で、書き込みメモリ・トランザクションが実行されて、キャッシュ・ユニットが非書き込みアロケーション・ポリシーに切り替えられる（すでにこのポリシーに従って動作していない場合）。その後、フローはステップ１１０に戻り、上述のように、プロセッサからの新しい書き込みアクセス要求が処理される。
【００４３】
ステップ１１４に戻ると、ここで、メモリ・トランザクションに複数の完全ではないチャンク・アクセスがあると決定されると、次いでステップ１２０で、必要なメモリ・トランザクションが、指定された複数の完全ではないチャンクを備える完全なデータのチャンクがまずメモリから読み出しされ、バッファリングされた書き込みアクセス要求内の指定されたデータ項目が、メモリから取り出されたデータの完全なチャンクに統合され、またこれらの４つのチャンクに関連付けられるＥＣＣが更新され、したがって修正された完全なデータのチャンクがメモリに書き戻しされる、読み出し−修正−書き込み動作として実行される。その後、ステップ１２２で、現在のキャッシュ・アロケーション・ポリシーが、非書き込みアロケートかどうかが決定される。この場合、次いでステップ１２４で、キャッシュ・ユニットがアロケーション・ポリシーを書き込みアロケートに切り替えられ、上述のように、フローはステップ１１０を介して進む。代替で、ステップ１２２で、キャッシュ・アロケーション・ポリシーが非書き込みアロケートではない（すなわち、すでに書き込みアロケートである）と決定されると、フローはステップ１１０に直接進む。
【００４４】
次にステップ１１６に戻ると、メモリ・トランザクションに、指定されたサブ・チャンク・アクセスが１つだけあると決定されると、フローはステップ１２６に進み、メモリ・トランザクションは、１つの指定されたサブ・チャンクに対応する完全なチャンクがまずメモリから読み出しされ、指定されたデータ項目が、完全なチャンクに統合され、完全なチャンクに対応するＥＣＣが決定され、したがって修正された完全なチャンクがメモリに書き戻しされる、読み出し−修正−書き込み動作として実行される。その後、ステップ１２８で、他のアクセス・スロットによって開始されたものを含む、ストア・バッファによって実行された以前のメモリ・トランザクションに（少なくとも）１つのサブ・チャンク・アクセスがあったかどうかが決定される。少なくとも１つのサブ・チャンク・アクセスがなかった場合、フローは直接ステップ１１０に進む。しかしながら、少なくとも１つのサブ・チャンク・アクセスがあった場合、フローは、キャッシュ・アロケーションを必要に応じて書き込みアロケートに切り替えるために、上述のように、ステップ１２２、及び場合によってはステップ１２４を介して進む。
【００４５】
全体的に要約すると、プロセッサ・ユニットが、メモリ・アクセス・バッファによってバッファリング及び処理されるメモリの書き込みアクセス要求を発行するように構成される、データ処理装置及びデータを処理する方法が開示される。キャッシュ・ユニットは、キャッシュ・ユニットのために定義されたアロケーション・ポリシーに応じて、アクセスされたデータ項目をキャッシュするように構成される。メモリ・トランザクションは、バッファリングされた書き込みアクセス要求によって指定された１つ又は複数のメモリ・アドレスが存在する所定の範囲のすべてのメモリ・アドレスが、対応する書き込み動作によって書き込みされなければならないように実行されるよう制約される。バッファリングされた書き込みアクセス要求が、少なくとも２つの所定の範囲のメモリ・アドレス内のすべてのメモリ・アドレスを備えるとは限らない場合、及びキャッシュ・ユニットが非書き込み割り当てポリシーで動作するように構成される場合、データ処理装置は、キャッシュ・ユニットに、引き続き書き込み割り当てポリシーで動作させるように構成される。
【００４６】
本明細書では特定の実施例を説明してきたが、本発明はそれに限定されず、それへの多くの修正及び追加が本発明の範囲内で行われてよいことが理解されよう。たとえば、以下の従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなしに独立請求項の特徴を伴って実施され得る。
【符号の説明】
【００４７】
１０  データ処理装置
１２  プロセッサ・ユニット
１２  プロセッサ
１４  メモリ
１６  ストア・バッファ
１８  バス・インターフェース・ユニット
２０  キャッシュ
２２  アクセス・スロット
２４  キャッシュ・ライン
２６  データ項目
２８  アクセス・モニタ
３０  コア
３２  複数のコア
３４  実行ユニット
３６  ストア・バッファ
３８  キャッシュ・ユニット
３８  キャッシュ
４０  バス・インターフェース・ユニット
４２  システム・バス
４４  メモリ
４６  制御ユニット
４８  アクセス・スロット
５０  ステート・マシン
５２  指定されたアドレス
５４  ＥＣＣ計算ユニット
５６  制御ユニット
５８  履歴ストレージ
６０  ハード・ドライブ
６２  ５１２バイトのセクタ
６４  ＮＡＮＤフラッシュ・メモリ
６６  ２０４８バイト・ページ
【図１】
2015232879.tif 000003
【図２】
2015232879.tif 000004
【図３】
2015232879.tif 000005
【図４Ａ】
2015232879.tif 000006
【図４Ｂ】
2015232879.tif 000007
【図５Ａ】
2015232879.tif 000008
【図５Ｂ】
2015232879.tif 000009
【外国語明細書】
2015232879000001.pdf