(57)【要約】複数のプロセッサによって共有されるメモリのページテーブルの選択されたアドレス変換を記憶するように構成された、各プロセッサと関連付けられた複数の変換索引バッファ（ＴＬＢ）を採用するデータ処理デバイスが提供される。この処理デバイスは、アドレス変換が、プロセッサによって要求され、且つ、当該プロセッサと関連付けられたＴＬＢ内で検出されない場合には、要求されたアドレス変換のために別のＴＬＢをプローブするように構成されている。他のＴＬＢに対するプローブは、要求されたアドレスのためのページテーブルウォークの前に行われてもよいし、ウォークは、プローブと同時に開始されてもよい。プローブが、要求されたアドレス変換を検出することに成功した場合には、ページテーブルウォークが回避または中止され得る。【選択図】図１
2016504686.tif 000002
【特許請求の範囲】
【請求項１】
第１の処理装置と、
第２の処理装置と、
前記第１および第２の処理装置によって共有されるメモリのページテーブルと、
前記第１の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）階層と、
前記第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層と、を備えるデータ処理デバイスであって、
前記データ処理デバイスは、前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢ階層内で検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢ階層をプローブするように構成されている、データ処理デバイス。
【請求項２】
前記要求されたアドレス変換が前記第２のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記要求されたアドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項３】
前記第２のＴＬＢ階層の前記プローブと同時に、前記要求されたアドレス変換のために前記ページテーブルのウォークを開始するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項４】
前記第２の処理装置によって要求されたアドレス変換が前記第２のＴＬＢ階層内で検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブするように構成されている、請求項１に記載のデータ処理デバイス。
【請求項５】
前記第２の処理装置によって要求された前記アドレス変換が前記第１のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項４に記載のデータ処理デバイス。
【請求項６】
前記第１のＴＬＢ階層の前記プローブと同時に、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始するように構成されている、請求項４に記載のデータ処理デバイス。
【請求項７】
前記第１の処理装置は、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）または加速処理装置（ＡＰＵ）であり、
前記第２の処理装置は、ＣＰＵ、ＧＰＵまたはＡＰＵである、請求項１に記載のデータ処理デバイス。
【請求項８】
前記第１の処理装置はＣＰＵであり、前記第２の処理装置はＧＰＵである、請求項１に記載のデータ処理デバイス。
【請求項９】
前記第１の処理装置を含む複数の第１の処理装置をさらに備え、
前記第１のＴＬＢ階層は、前記第１の処理装置によって使用されるために、前記ページテーブルの選択されたアドレス変換を記憶するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項１０】
前記複数の第１の処理装置の各々は、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）または加速処理装置（ＡＰＵ）の何れかである、請求項９に記載のデータ処理デバイス。
【請求項１１】
前記複数の第１の処理装置の全てがＣＰＵであり、
前記第１のＴＬＢ階層は、各ＣＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＣＰＵと関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするための前記条件は、前記第１の処理装置によって要求された前記アドレス変換が、前記第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢの検索において検出されないことである、請求項１０に記載のデータ処理デバイス。
【請求項１２】
前記複数の第１の処理装置の全てがＧＰＵであり、
前記第１のＴＬＢ階層は、各ＧＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＧＰＵの全てと関連付けられた単一のＴＬＢを含み、
前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするための前記条件は、前記第１の処理装置によって要求された前記アドレス変換が、前記単一のＴＬＢの検索において検出されないことである、請求項１０に記載のデータ処理デバイス。
【請求項１３】
前記第２の処理装置を含む複数の第２の処理装置をさらに備え、
前記第２のＴＬＢ階層は、各第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記複数の第２の処理装置の各々と関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
前記データ処理デバイスは、前記第１の処理装置によって要求された前記アドレス変換を検出するために、選択された第２の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢを検索することによって、前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするように構成されている、請求項１に記載のデータ処理デバイス。
【請求項１４】
前記第１の処理装置を含む複数の第１の処理装置と、前記第２の処理装置を含む複数の第２の処理装置と、をさらに備え、
前記第１のＴＬＢ階層は、前記第１の処理装置によって使用されるために、前記ページテーブルの選択されたアドレス変換を記憶するように構成されており、
前記第２のＴＬＢ階層は、前記第２の処理装置によって使用されるために、前記ページテーブルの選択されたアドレス変換を記憶するように構成されている、請求項４に記載のデータ処理デバイス。
【請求項１５】
前記複数の第１の処理装置の各々は、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）または加速処理装置（ＡＰＵ）であり、
前記複数の第２の処理装置の各々は、ＣＰＵ、ＧＰＵまたはＡＰＵである、
請求項１４に記載のデータ処理デバイス。
【請求項１６】
前記複数の第１の処理装置の全てがＣＰＵであり、
前記第１のＴＬＢ階層は、各ＣＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＣＰＵと関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするための前記条件は、前記第１の処理装置によって要求された前記アドレス変換が、前記第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢの検索において検出されないことであり、
前記複数の第２の処理装置の全てがＧＰＵであり、
前記第２のＴＬＢ階層は、各ＧＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＧＰＵの全てと関連付けられた単一のＴＬＢを含み、
前記第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブするための前記条件は、前記第２の処理装置によって要求された前記アドレス変換が前記単一のＴＬＢの検索において検出されないことであり、
前記データ処理デバイスは、前記第２の処理装置によって要求された前記アドレス変換を検出するために、選択された第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢを検索することによって、前記第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブするように構成されている、請求項１５に記載のデータ処理デバイス。
【請求項１７】
前記第１の処理装置によって要求された前記アドレス変換が前記第２のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第１の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行し、
前記第２の処理装置によって要求された前記アドレス変換が前記第１のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項１６に記載のデータ処理デバイス。
【請求項１８】
前記第２のＴＬＢ階層の前記プローブと同時に、前記第１の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始し、
前記第１のＴＬＢ階層の前記プローブと同時に、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始する、請求項１６に記載のデータ処理デバイス。
【請求項１９】
第１の処理装置と、
第２の処理装置と、
前記第１および第２の処理装置によって共有されるメモリのページテーブルと、
前記第１の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）と、
前記第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢと、を備え、
前記データ処理デバイスは、前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢ内で検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢをプローブするように構成されている、データ処理デバイス。
【請求項２０】
前記要求されたアドレス変換が前記第２のＴＬＢの前記プローブで検出されなかったことを条件として、前記要求されたアドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項１９に記載のデータ処理デバイス。
【請求項２１】
前記第２のＴＬＢの前記プローブと同時に、前記要求されたアドレス変換のために前記ページテーブルのウォークを開始するように構成されている、請求項１９に記載のデータ処理デバイス。
【請求項２２】
前記第１の処理装置を含む複数の第１の処理装置と、前記第２の処理装置を含む複数の第２の処理装置と、をさらに備え、
前記第１のＴＬＢは、前記第１の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第１のＴＬＢ階層の一部であり、
前記第２のＴＬＢは、前記第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層の一部である、請求項１９に記載のデータ処理デバイス。
【請求項２３】
レベル２のＴＬＢをさらに備え、
前記第１および第２のＴＬＢは、前記第１および第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成されたＴＬＢ階層の第１のレベルを含み、
前記レベル２のＴＬＢは、前記ＴＬＢ階層の第２のレベルを含み、
前記データ処理デバイスは、前記要求されたアドレス変換が前記第２のＴＬＢと前記レベル２のＴＬＢとの両方の前記プローブにおいて検出されなかったことを条件として、前記要求されたアドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項１９に記載のデータ処理デバイス。
【請求項２４】
レベル２のＴＬＢをさらに備え、
前記第１および第２のＴＬＢは、前記第１および第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成されたＴＬＢ階層の第１のレベルを含み、
前記レベル２のＴＬＢは、前記ＴＬＢ階層の第２のレベルを含み、
前記データ処理デバイスは、前記要求されたアドレス変換が前記レベル２のＴＬＢ内で検出されなかったことを条件として、前記第２のＴＬＢの前記プローブと同時に、前記要求されたアドレス変換のために前記ページテーブルのウォークを開始するように構成されている、請求項１９に記載のデータ処理デバイス。
【請求項２５】
第１の処理装置によって使用されるためのページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）階層と、第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層と、を提供することと、
前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢ階層で検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢ階層をプローブすることと、を含む、データ処理方法。
【請求項２６】
前記要求されたアドレス変換が前記第２のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記要求されたアドレス変換のために前記ページテーブルのウォークを実行することをさらに含む、請求項２５に記載のデータ処理方法。
【請求項２７】
前記第２のＴＬＢ階層の前記プローブと同時に、前記要求されたアドレス変換のために前記ページテーブルのウォークを開始することをさらに含む、請求項２５に記載のデータ処理方法。
【請求項２８】
前記第２の処理装置によって要求されたアドレス変換が前記第２のＴＬＢ階層内で検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブすることをさらに含む、請求項２５に記載のデータ処理方法。
【請求項２９】
前記第２の処理装置によって要求された前記アドレス変換が前記第１のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行することをさらに含む、請求項２８に記載のデータ処理方法。
【請求項３０】
前記第１のＴＬＢ階層の前記プローブと同時に、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始することをさらに含む、請求項２８に記載のデータ処理方法。
【請求項３１】
前記第１の処理装置は、複数の中央処理装置（ＣＰＵ）のうち１つのＣＰＵであり、
前記第１のＴＬＢ階層は、各ＣＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＣＰＵと関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層を前記プローブすることは、前記第１の処理装置によって要求された前記アドレス変換が、前記第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢの検索において検出されなかったことを条件とする、請求項２５に記載のデータ処理方法。
【請求項３２】
前記第１の処理装置は、複数の画像処理装置（ＧＰＵ）のうち１つのＧＰＵであり、
前記第１のＴＬＢ階層は、各ＧＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＧＰＵの全てと関連付けられた単一のＴＬＢを含み、
前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層を前記プローブすることは、前記第１の処理装置によって要求された前記アドレス変換が前記単一のＴＬＢの検索において検出されなかったことを条件とする、請求項２５に記載のデータ処理方法。
【請求項３３】
前記第２の処理装置は、複数の第２の処理装置のうち１つの第２の処理装置であり、
前記第２のＴＬＢ階層は、各第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記複数の第２の処理装置の各々と関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
前記第１の処理装置によって要求された前記アドレス変換を検出するために、選択された第２の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢを検索することによって、前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブすることをさらに含む、請求項２５に記載のデータ処理方法。
【請求項３４】
前記第１の処理装置は、複数の中央処理装置（ＣＰＵ）のうち１つのＣＰＵであり、
前記第１のＴＬＢ階層は、各ＣＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＣＰＵと関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
前記第２の処理装置は、複数の画像処理装置（ＧＰＵ）のうち１つのＧＰＵであり、
前記第２のＴＬＢ階層は、各ＧＰＵによって使用されるための前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＧＰＵの全てと関連付けられた単一のＴＬＢを含み、
前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層を前記プローブすることは、前記第１の処理装置によって要求された前記アドレス変換が、前記第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢの検索において検出されなかったことを条件とし、
前記第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層を前記プローブすることは、前記第２の処理装置によって要求された前記アドレス変換が、前記単一のＴＬＢの検索において検出されなかったことを条件とする、請求項２８に記載のデータ処理方法。
【請求項３５】
前記第１の処理装置によって要求された前記アドレス変換が前記第２のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第１の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行することと、
前記第２の処理装置によって要求された前記アドレス変換が前記第１のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行することと、をさらに含む、請求項３４に記載のデータ処理方法。
【請求項３６】
前記第２のＴＬＢ階層の前記プローブと同時に、前記第１の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始することと、
前記第１のＴＬＢ階層の前記プローブと同時に、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始することと、をさらに含む、請求項３４に記載のデータ処理方法。
【請求項３７】
第１の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）と、第２の処理装置によって使用されるための前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢと、を提供することと、
前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢで検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢをプローブすることと、を含む、データ処理方法。
【請求項３８】
前記要求されたアドレス変換が前記第２のＴＬＢの前記プローブで検出されなかったことを条件として、前記要求されたアドレス変換のために前記ページテーブルのウォークを実行することをさらに含む、請求項３７に記載のデータ処理方法。
【請求項３９】
前記第２のＴＬＢの前記プローブと同時に、前記要求されたアドレス変換のために前記ページテーブルのウォークを開始することをさらに含む、請求項３７に記載のデータ処理方法。
【請求項４０】
前記第１のＴＬＢは、複数の第１の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第１のＴＬＢ階層の一部であり、
前記第２のＴＬＢは、複数の第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層の一部であり、
前記第１の処理装置によって要求されたアドレス変換のために前記第２のＴＬＢをプローブすることは、前記要求されたアドレス変換が前記第１のＴＬＢ階層で検出されなかったことを条件とする、請求項３７に記載のデータ処理方法。
【請求項４１】
前記第１および第２のＴＬＢは、前記第１および第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成されたＴＬＢ階層の第１のレベルを含み、レベル２のＴＬＢは、前記ＴＬＢ階層の第２のレベルを含み、
前記要求されたアドレス変換が前記第２のＴＬＢと前記レベル２のＴＬＢとの両方の前記プローブで検出されなかったことを条件として、前記要求されたアドレス変換のために前記ページテーブルのウォークを実行することをさらに含む、請求項３７に記載のデータ処理方法。
【請求項４２】
前記第１および第２のＴＬＢは、前記第１および第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成されたＴＬＢ階層の第１のレベルを含み、レベル２のＴＬＢは、前記ＴＬＢ階層の第２のレベルを含み、
前記要求されたアドレス変換が前記レベル２のＴＬＢ内で検出されなかったことを条件として、前記第２のＴＬＢの前記プローブと同時に、前記要求されたアドレス変換のために前記ページテーブルのウォークを開始することをさらに含む、請求項３７に記載のデータ処理方法。
【請求項４３】
集積回路を製造するために、汎用コンピュータによって実行されるための命令のセットを記憶するコンピュータ可読記憶媒体であって、前記集積回路は、
第１の処理装置と、
第２の処理装置と、
前記第１および第２の処理装置によって共有されるメモリのページテーブルと、
前記第１の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）階層と、
前記第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層と、を含み、
前記データ処理デバイスは、前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢ階層内で検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢ階層をプローブするように構成されている、コンピュータ可読記憶媒体。
【請求項４４】
前記命令は、デバイスの製造のために使用されるハードウェア記述言語（ＨＤＬ）命令である、請求項４３に記載のコンピュータ可読記憶媒体。
【請求項４５】
集積回路を製造するために、汎用コンピュータによって実行されるための命令のセットを記憶するコンピュータ可読記憶媒体であって、前記集積回路は、
第１の処理装置と、
第２の処理装置と、
前記第１および第２の処理装置によって共有されるメモリのページテーブルと、
前記第１の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）と、
前記第２の処理装置によって使用されるための前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢと、を含み、
前記処理デバイスは、前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢ内で検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢをプローブするように構成されている、コンピュータ可読記憶媒体。
【請求項４６】
前記命令は、デバイスの製造のために使用されるハードウェア記述言語（ＨＤＬ）命令である、請求項４５に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１２年１２月２１日出願の米国出願第１３／７２３，３７９号の利益を主張するものであり、当該米国出願の内容は、参照により本明細書に組み込まれる。
【０００２】
本開示は、概して、メモリのページテーブルのアドレス変換に関連する変換索引バッファ（ＴＬＢ）を採用するプロセッサを含むデータ処理デバイスを対象とする。
【背景技術】
【０００３】
データ処理の技術分野において、仮想アドレスの使用はよく知られている。従来、仮想アドレスと関連付けられたデータの対応する物理メモリ上の位置を含む仮想アドレスのリスト（すなわち、アドレス変換）を維持するために、ページテーブルが提供されている。仮想アドレスのページテーブルリストから、記憶されたデータの物理的メモリアドレスを取得するプロセスは、ページテーブルウォークとして知られている。
【０００４】
一般的には、４Ｋｂおよび８Ｋｂの仮想ページが用いられているが、例えば２Ｍｂまたは４Ｍｂ以上等のように、さらに大きいサイズの仮想ページを用いることができる。ページテーブルウォークは、プロセッサの動作速度と比較して、相当量の時間がかかる可能性がある。仮想アドレスに対応する記憶データの物理アドレスを取得する（すなわち、変換）ためにページテーブルウォークを実行するのを回避するために、変換索引バッファ（ＴＬＢ）を用いて、プロセッサによって使用され、または使用される可能性が高いと考えられるアドレス変換を記憶する。
【０００５】
従来、プロセッサは、最初に、メモリのページテーブルと関連付けられたＴＬＢ内で所望のアドレス変換を検索する。所望のアドレス変換が検出された場合には、ページテーブルウォークの必要がなくなる。所望のアドレス変換が検出されなかった場合には、アドレス変換を検出するために、ページテーブルのウォークが実行される。いくつかの事例では、プロセッサがレベルの階層を通って降下して所望の変換を検索し、ＴＬＢの階層を通って降下するときに検出されない場合にのみ、プロセッサがページテーブルウォークを実行するように、異なる機能を果たすことの可能な複数のレベルのＴＬＢが、プロセッサとページテーブルとの間に配置されている。
【０００６】
ページテーブルおよびＴＬＢは、概して、これらに限定されないが、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）および加速処理装置（ＡＰＵ）を含む任意の種類のデータプロセッサとともに採用されてもよい。
【発明の概要】
【課題を解決するための手段】
【０００７】
複数のプロセッサによって共有されたメモリのページテーブルの選択されたアドレス変換を記憶するように構成され、各プロセッサと関連付けられた複数の変換索引バッファ（ＴＬＢ）を採用するデータ処理デバイスが提供される。処理デバイスは、アドレス変換がプロセッサによって要求され、且つ、アドレス変換が当該プロセッサと関連付けられたＴＬＢ内で検出されない場合には、要求されたアドレス変換のために別のＴＬＢがプローブされるように構成されている。他のＴＬＢにわたるプローブは、要求されたアドレスのためのページテーブルウォークの前に生じてもよいし、ページテーブルウォークと同時に開始してもよい。プローブが、要求されたアドレス変換を検出することに成功した場合には、ページテーブルウォークが回避または中断され得る。
【０００８】
一実施形態において、データ処理デバイスは、第１および第２の処理装置と、共有メモリのページテーブルと、を含む。第１の変換索引バッファ（ＴＬＢ）階層は、第１の処理装置による使用のために、ページテーブルの選択されたアドレス変換を記憶するように構成されている。第２のＴＬＢ階層は、第２の処理装置による使用のために、ページテーブルの選択されたアドレス変換を記憶するように構成されている。処理デバイスは、第１の処理装置によって要求されたアドレス変換が第１のＴＬＢ階層内で検出されなかったことを条件に、要求されたアドレス変換のために第２のＴＬＢ階層をプローブするように構成されている。
【０００９】
かかるデータ処理デバイスは、要求されたアドレス変換が第２のＴＬＢ階層のプローブで検出されなかったことを条件に、要求されたアドレス変換のためにページテーブルウォークを実行するように構成することができる。代替として、データ処理デバイスは、第２のＴＬＢ階層のプローブと同時に、要求されたアドレス変換のためにページテーブルウォークを開始するように構成することができる。
【００１０】
いくつかの実施形態において、データ処理デバイスは、第２の処理装置によって要求されたアドレス変換が第２のＴＬＢ階層内で検出されなかったことを条件に、第２の処理装置によって要求されたアドレス変換のために第１のＴＬＢ階層をプローブするように構成されている。この場合、データ処理デバイスは、第２の処理装置によって要求されたアドレス変換が第１のＴＬＢ階層のプローブで検出されなかったことを条件に、第２の処理装置によって要求されたアドレス変換のためにページテーブルウォークを実行するように構成することができる。代替として、データ処理デバイスは、第１のＴＬＢ階層のプローブと同時に、第２の処理装置によって要求されたアドレス変換のためにページテーブルウォークを開始するように構成することができる。
【００１１】
各処理装置は、例えば、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）もしくは加速処理装置（ＡＰＵ）、または、これらの組み合わせ等のように、同じ種類であってもよいし異なる種類であってもよい。第１または第２の処理装置の何れかあるいは両方は、ＴＬＢ階層と関連付けられた複数の第１または第２の処理装置のうち１つであってもよい。
【００１２】
一例では、第１の処理装置の全てがＣＰＵであり、第１のＴＬＢ階層は、ＣＰＵによって使用されるための、ページテーブルの選択されたアドレス変換を記憶するために各ＣＰＵと関連付けられたレベル１のＴＬＢと、レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含む。この例において、処理デバイスは、第１の処理装置によって要求されたアドレス変換のために第２のＴＬＢ階層をプローブする条件として、第１の処理装置によって要求されたアドレス変換を検出するための、第１の処理装置と関連付けられたレベル１のＴＬＢおよびレベル２のＴＬＢの検索が失敗であるように構成されている。
【００１３】
別の例では、第１の処理装置の全てがＧＰＵであり、第１のＴＬＢ階層は、ＧＰＵによって使用されるための、ページテーブルの選択されたアドレス変換を記憶するために各ＧＰＵと関連付けられた単一のＴＬＢを含む。この例において、処理デバイスは、第１の処理装置によって要求されたアドレス変換を検出するための単一のＴＬＢの検索が失敗したことが、第１の処理装置によって要求されたアドレス変換のために第２のＴＬＢ階層をプローブする条件であるように構成されている。
【００１４】
データ処理デバイスは、複数の第２の処理装置を有してもよく、第２のＴＬＢ階層は、第２の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するために複数の第２の処理装置の各々と関連付けられたレベル１のＴＬＢと、レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含む。この場合、処理デバイスは、第１の処理装置によって要求されたアドレス変換を検出するために、選択された第２の処理装置と関連付けられたレベル１のＴＬＢおよびレベル２のＴＬＢを検索することによって、第１の処理装置によって要求されたアドレス変換のために第２のＴＬＢ階層をプローブするように構成されている。
【００１５】
別の実施形態において、データ処理デバイスは、第１の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）と、第２の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢと、を含む。処理デバイスは、第１の処理装置によって要求されたアドレス変換が第１のＴＬＢ内で検出されなかったことを条件に、要求されたアドレス変換のために第２のＴＬＢをプローブするように構成されている。
【００１６】
かかるデータ処理デバイスは、レベル２のＴＬＢを含むことができ、第１および第２のＴＬＢは、第１および第２の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成されたＴＬＢ階層の第１のレベルを含み、レベル２のＴＬＢは、ＴＬＢ階層の第２のレベルを含む。この場合、データ処理デバイスは、要求されたアドレス変換が第２のＴＬＢおよびレベル２のＴＬＢの両方のプローブで検出されなかったことを条件に、要求されたアドレス変換のためにページテーブルウォークを実行するように構成することができる。代替として、データ処理デバイスは、要求されたアドレス変換がレベル２のＴＬＢ内で検出されなかったことを条件に、第２のＴＬＢのプローブと同時に、要求されたアドレス変換のためにページテーブルウォークを開始するように構成することができる。
【００１７】
例示的な実施形態および代替の実施形態に対応する方法も提供される。
【００１８】
また、別の実施形態では、選択的に設計される集積回路の製造を促進するために、汎用コンピュータによって実行される命令のセットを記憶する非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）なコンピュータ可読記憶媒体が提供される。非一時的なコンピュータ可読記憶媒体は、実施形態の１つ以上の態様を含むデバイスの製造のために使用されるハードウェア記述言語（ＨＤＬ）命令を含む。
【００１９】
かかる集積回路は、第１の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成された第１のＴＬＢ階層と、第２の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層と、を含むことができる。この場合、集積回路は、第１の処理装置によって要求されたアドレス変換が第１のＴＬＢ階層内で検出されなかったことを条件に、要求されたアドレス変換のために第２のＴＬＢ階層をプローブするように構成される。
【００２０】
代替として、集積回路は、第１の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）と、第２の処理装置によって使用されるための、ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢと、を含むことができる。この場合、集積回路は、第１の処理装置によって要求されたアドレス変換が第１のＴＬＢ内で検出されなかったことを条件に、要求されたアドレス変換のために第２のＴＬＢをプローブするように構成されている。
【００２１】
添付の図面とともに一例として提供される以下の説明から、より詳細に理解することができる。
【図面の簡単な説明】
【００２２】
【図１】１つ以上の開示された実施形態が実装され得る処理デバイスのブロック図である。
【図２】１つ以上の開示された実施形態が実装され得る別の処理デバイスのブロック図である。
【図３】１つ以上の開示された実施形態が実装され得るさらなる処理デバイスのブロック図である。
【発明を実施するための形態】
【００２３】
データ処理デバイスは、今日、至るところで用いられており、多数の種々の製品内に組み入れられている。一般に、プロセッサは、ページテーブルに記憶されたアドレス変換を必要とする度にページテーブルウォークを実行することを回避するために、メモリのページテーブルの選択されたアドレス変換を記憶するように構成された変換索引バッファ（ＴＬＢ）を利用するように構成されている。
【００２４】
図１を参照すると、例示的なデータ処理デバイス１００が示されており、複数のプロセッサは、ページテーブル１２０を含むメモリ１１０を共有している。図１の例において、処理デバイス１００は、第１の処理装置１４１，１４２の第１のグループ１４０のために、ページテーブル１２０の選択されたアドレス変換を記憶するように構成された第１のＴＬＢ階層１３０を含む。処理デバイス１００は、第２の処理装置１６１，１６２の第２のグループ１６０のために、ページテーブル１２０の選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層１５０も含む。
【００２５】
動作中、ページテーブル１２０の選択されたアドレス変換は、第１の処理装置１４１，１４２の第１のグループ１４０のために、第１のＴＬＢ階層１３０に記憶される。ページテーブル１２０の選択されたアドレス変換は、第２の処理装置１６１，１６２の第２のグループ１６０の第２のＴＬＢ階層１５０にも記憶される。データ処理に関係して、処理装置１４１，１４２，１６１，１６２は、最初に、メモリのページテーブルと関連付けられた、それら各々のＴＬＢ階層１３０，１５０内で所望のアドレス変換を検索する。ＴＬＢ階層１３０，１５０が複数のレベルのＴＬＢを含む場合には、プロセッサは、階層レベルを通って降下して、所望のアドレス変換を検索する。
【００２６】
所望のアドレス変換が検出された場合には、ページテーブル１２０のウォークを実行する必要がなくなる。所望のアドレス変換が検出されなかった場合には、アドレス変換を検出するために、ページテーブル１２０のウォークを実行することが必要になり得る。
【００２７】
ページテーブルウォークの結果を待機する必要をできるだけ回避するために、処理デバイス１００は、第１のグループ１４０の第１の処理装置１４１，１４２のうち何れか１つによって要求されたアドレス変換が、第１のＴＬＢ階層１３０内で検出されなかったことを条件として、要求されたアドレス変換のために第２のＴＬＢ階層１５０をプローブ１７０するように構成されている。さらに、データ処理デバイス１００は、要求されたアドレス変換が第２のＴＬＢ階層１５０のプローブ１７０で検出されなかったことを条件として、要求されたアドレス変換のためにページテーブル１２０のウォークを実行するように構成されている。代替として、データ処理デバイス１００は、第２のＴＬＢ階層のプローブと同時に、要求されたアドレス変換のためにページテーブル１２０のウォークを開始するように構成され得る。
【００２８】
一実施形態において、データ処理デバイス１００は、第２の処理装置１６１，１６２によって要求されたアドレス変換が第２のＴＬＢ階層１５０内で検出されなかったことを条件として、第２の処理装置１６１，１６２の一方によって要求されたアドレス変換のために、第１のＴＬＢ階層１３０をプローブ１７２するように構成されている。この場合、データ処理デバイス１００は、第２の処理装置１６１，１６２によって要求されたアドレス変換が第１のＴＬＢ階層１３０のプローブ１７２で検出されなかったことを条件として、第２の処理装置１６１，１６２によって要求されたアドレス変換のために、ページテーブル１２０のウォークを実行するように構成することができる。代替として、データ処理デバイス１００は、第１のＴＬＢ階層１３０のプローブ１７２と同時に、第２の処理装置１６１，１６２によって要求されたアドレス変換のために、ページテーブルのウォークを開始するように構成することができる。
【００２９】
処理装置１４１，１４２，１６１，１６２は、例えば、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）または加速処理装置（ＡＰＵ）等の任意の種類であってもよい。一実施形態において、各グループ１４０，１６０内の処理装置は同じ種類であるが、同じグループに異なる種類のプロセッサが含まれ得る。各グループ１４０，１６０は、図の例では２つの処理装置を含んでいるが、これは、図示を目的としたものである。異なったサイズの処理装置のグループを使用することができる。また、各グループ１４０，１６０は、３つ以上のプロセッサを含んでもよいし、グループ１４０，１６０の両方は、単一のプロセッサのみを有してもよい。
【００３０】
処理デバイス１００は、メモリおよび各ＴＬＢ階層を共有する処理装置の３つ以上のグループを含んでもよい。かかる場合、任意の処理装置が自身に関連付けられたＴＬＢ階層を参照しても満たすことができない変換要求は、要求されたアドレス変換のために他のＴＬＢ階層の全てまたは一部のプローブとなる可能性がある。一実施形態において、任意のプローブされたＴＬＢ階層でヒットが生じた場合には、ページテーブルウォークが回避される。代替として、プローブは、ページテーブルウォークの開始と並行して発行されてもよい。この場合において、変換ヒットが任意のクエリされたデバイスによって返された場合には、ページテーブルウォークが中止され、または、その応答が無視される。
【００３１】
２つのＴＬＢ階層１３０，１５０が図示されているが、追加のＴＬＢ階層が、追加のグループの処理装置のために、ページテーブル１２０の選択されたアドレス変換を記憶するように構成された処理デバイス１００に含まれてもよい。また、メモリ１１０および／または他のメモリと関連付けられた複数のページテーブルの選択されたアドレス変換を記憶するように構成されたＴＬＢ階層は、単一または複数のレベルを含めて構成されてもよい。
【００３２】
図２を参照すると、実施形態のより具体的な例が示されている。図２において、例示的なデータ処理デバイス２００は、ページテーブル２２０を含む共有メモリ２１０を有する。処理デバイス２００は、中央処理装置（ＣＰＵ）２４１，２４２のグループ２４０のための、ページテーブル２２０の選択されたアドレス変換を記憶するように構成された第１のＴＬＢ階層２３０を含む。ＣＰＵのグループ２４０のためのＴＬＢ階層２３０は、ＣＰＵのグループ２４０の各ＣＰＵ２４１，２４２と関連付けられたレベル１のＴＬＢ２３１，２３２と、レベル１のＴＬＢ２３１，２３２と関連付けられたレベル２のＴＬＢ２８０と、を含む、マルチレベルの階層である。
【００３３】
ＴＬＢ階層２３０および／またはＣＰＵのグループ２４０の構成に関する変形は、当業者にとっては容易に明らかとなるであろう。例えば、追加のＣＰＵがＣＰＵのグループ２４０に含まれる場合には、ＴＬＢ階層２３０は、破線で示されるように、追加のＣＰＵの各々と関連付けられた追加のレベル１のＴＬＢと、レベル２のＴＬＢ２８０と、を含むことができる。また、ＴＬＢ階層２３０は、３つ以上のレベルを含んでもよい。
【００３４】
図２の例において、処理デバイス２００は、画像処理装置（ＧＰＵ）２６１，２６２のグループ２６０のための、ページテーブル２２０の選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層２５０も含む。この例において、ＧＰＵのグループ２６０のＴＬＢ階層２５０は、ＧＰＵのグループ２４０の全てのＧＰＵ２６１，２６２の各々と関連付けられた単一のＴＬＢを有する単一レベルの階層である。
【００３５】
ＴＬＢ階層２５０および／またはＧＰＵのグループ２６０の構成に関する変形は、当業者にとっては容易に明らかとなるであろう。例えば、追加のＧＰＵがＧＰＵのグループ２６０に含まれる場合には、追加のＧＰＵの各々は、破線で示されるように、ＴＬＢ２５０と関連付けられる。
【００３６】
動作中、ページテーブル２２０の選択されたアドレス変換は、グループ２４０のＣＰＵ２４１，２４２のために、第１のＴＬＢ階層２３０に記憶される。ページテーブル２２０の選択されたアドレス変換は、グループ２６０のＧＰＵ２６１，２６２のために、第２のＴＬＢ階層２５０にも記憶される。データ処理と関係して、ＣＰＵ２４１，２４２およびＧＰＵ２６１，２６２は、最初に、各々のＴＬＢ階層２３０，２５０内で所望のアドレス変換を検索する。ＣＰＵのＴＬＢ階層２３０に関して、ＣＰＵ２４１，２４２は、所望のアドレス変換のために、最初に、各々に関連付けられたレベル１のＴＬＢ２３１，２３２を検索し、次いで、レベル２のＴＬＢを検索する。
【００３７】
所望のアドレス変換が検出された場合には、ページテーブル２２０のウォークの必要がなくなる。所望のアドレス変換が検出されなかった場合には、アドレス変換を検出するために、ページテーブル２２０のウォークを実行することが必要になり得る。かかるページテーブルウォークは、時間的に非常にコストがかかる場合がある。例えば、非仮想ｘ８６システムにおいて、所望の変換を呼び出すために、最大４回のメモリアクセスが必要になる場合がある。ネストされたページテーブルのウォークがある仮想システムでは、この場合には２４回のメモリアクセスになる場合があるので、非常にコストがかかる。
【００３８】
ＣＰＵおよびＧＰＵが同じページテーブルを共有する異種処理デバイス２００では、ＣＰＵによって必要とされる変換がＧＰＵ階層内で検出される可能性、または、この反対の可能性が極めて高い。２つのＣＰＵとＧＰＵとの間でデータを共有する演算プログラムの場合には、１つの処理装置の階層が、他の処理装置によって要求された変換を保持する可能性が増加する。
【００３９】
ページテーブル２２０のウォークの結果を待機する必要をできるだけ回避するために、処理デバイス２００は、ＣＰＵのグループ２４０のＣＰＵ２４１，２４２の一方によって要求されたアドレス変換が、ＣＰＵのＴＬＢ階層２３０内で検出されなかったことを条件として、要求されたアドレス変換のために、ＧＰＵのＴＬＢ２５０をプローブ２７０するように構成されている。データ処理デバイス２００は、要求されたアドレス変換がＧＰＵのＴＬＢ２５０のプローブ２７０で検出されなかったことを条件として、要求されたアドレス変換のために、ページテーブル２２０のウォークを実行するようにさらに構成されている。代替として、データ処理デバイス２００は、ＧＰＵのＴＬＢ２５０のプローブ２７０と同時に、要求されたアドレス変換のために、ページテーブル２２０のウォークを開始するように構成することができる。
【００４０】
一実施形態において、データ処理デバイス２００は、ＧＰＵ２６１，２６２によって要求されたアドレス変換がＧＰＵのＴＬＢ２５０内で検出されなかったことを条件として、ＧＰＵ２６１，２６２の一方によって要求されたアドレス変換のために、ＣＰＵのＴＬＢ階層２３０をプローブ２７２するように構成されている。かかる場合、データ処理デバイス２００は、ＧＰＵ２６１，２６２によって要求されたアドレス変換がＣＰＵのＴＬＢ階層２３０のプローブ２７２で検出されなかったことを条件として、ＧＰＵ２６１，２６２によって要求されたアドレス変換のために、ページテーブル２２０のウォークを実行するように構成することができる。代替として、データ処理デバイス２００は、ＣＰＵのＴＬＢ階層２３０のプローブ２７２と同時に、ＧＰＵ２６１，２６２によって要求されたアドレス変換のために、ページテーブルのウォークを開始するように構成することができる。
【００４１】
標準的な場合には、ＣＰＵ２４１，２４２は、メモリ２１０のいくつかの領域上で、当該領域のアドレスの変換をＴＬＢ階層２３０にもたらす作業を実行することができる。ＣＰＵ２４１，２４２は、ＧＰＵ２６１，２６２のうち１つ以上が当該メモリ領域上で作業を実行するようにオフロードすることもできる。ＧＰＵ２６１，２６２は、次いで、メモリに正しくアクセスするために、適切なアドレス変換を要求する。ＧＰＵ２６１，２６２によるこの作業のための特定のアドレス変換がＧＰＵのＴＬＢ２５０内で検出されなかった場合には、ＣＰＵのＴＬＢ２３０内で、具体的には、ＧＰＵに作業を割り当てたＣＰＵがアドレスを検索する方法でＣＰＵのＴＬＢ階層２３０をプローブすることによって、当該アドレス変換が検出される可能性が高い。
【００４２】
例えば、ＣＰＵ２４２は、作業をＧＰＵ２６１に割り当ててもよい。ＧＰＵ２６１がこの作業のためのアドレス変換を要求したが、ＧＰＵのＴＬＢ２５０内でアドレス変換を検出しなかった場合には、要求されたアドレス変換のために、ＣＰＵのＴＬＢ２３０をプローブ２７２する。かかる場合、プローブ２７２は、アドレス変換を検出するために、ＣＰＵ２４２と関連付けられたレベル１のＴＬＢ２３２を検索し、次いで、レベル２のＴＬＢ２８０を検索する。かかるプローブがアドレス変換を生成しない場合には、ＧＰＵは、要求されたアドレス変換のためのページテーブルウォークの結果を待機する。
【００４３】
ＣＰＵおよびＧＰＵのグループを含む例示的な処理デバイス２００において、ＣＰＵのＴＬＢ階層２３０は、メモリ管理装置（ＭＭＵ）のコンテキストで動作し、ＧＰＵのＴＬＢ２５０は、ページテーブルウォークを実行する入力／出力メモリ管理装置（ＩＯＭＭＵ）のコンテキストで動作する。このようなコンテキストにおいて、ＧＰＵの変換要求がＧＰＵのＴＬＢ内で失敗すると、ＩＯＭＭＵは、要求された仮想アドレスおよびアドレス空間ＩＤ（ＡＳＩＤ）の両方を含むプローブメッセージ２７２であって、所望の変換を要求するプローブメッセージ２７２を、ＣＰＵのＭＭＵへ送信するように構成されてもよい。複数のＣＰＵを有する例示的なデバイス２００において、プローブは、ＧＰＵがアドレス変換要求を行っているというタスクを起動したＣＰＵのＩＤを含むことができ、それによって、プローブ２７２をその特定のＣＰＵへ指示して、プローブの帯域幅を節約する。プローブが成功した場合には、ＣＰＵのＭＭＵは、ＩＯＭＭＵがＧＰＵのアドレス変換要求を満たすために、フルページテーブルウォークを実行するよりもはるかに迅速に、ＩＯＭＭＵへ変換を返すことができる。
【００４４】
代替の実施形態は、ページテーブルウォークのためにＩＯＭＭＵへ要求を発行する前に、プローブ２７２が、ＣＰＵのＭＭＵに対して直接行われる。ＣＰＵのＭＭＵが変換を返す場合には、ＩＯＭＭＵの相互作用は、ＧＰＵによって開始されない。この場合、ＣＰＵのＭＭＵも変換を含まない場合には、ＩＯＭＭＵ要求が生成される。
【００４５】
図３を参照すると、さらなる実施形態が示されている。図３において、例示的なデータ処理デバイス３００は、ページテーブル３２０を含む共有メモリ３１０を有する。処理デバイス３００は、処理装置３４１，３４２のグループ３４０のための、ページテーブル３２０の選択されたアドレス変換を記憶するように構成されたＴＬＢ階層３３０を含む。ＴＬＢ階層３３０は、グループ３４０の処理装置３４１，３４２の各々と関連付けられたレベル１のＴＬＢ３３１，３３２と、レベル１のＴＬＢ３３１，３３２と関連付けられたレベル２のＴＬＢ３８０と、を含む、マルチレベルの階層である。
【００４６】
ＴＬＢ階層３３０および／またはグループ３４０の構成に関する変形は、当業者にとっては容易に明らかとなるであろう。例えば、追加の処理装置がグループ３４０に含まれる場合には、ＴＬＢ階層３３０は、破線で示されるように、追加の処理装置の各々と関連付けられた追加のレベル１のＴＬＢと、レベル２のＴＬＢ３８０と、を含むことができる。また、ＴＬＢ階層３３０は、３つ以上のレベルを含むことができる。
【００４７】
動作中、ページテーブル３２０の選択されたアドレス変換は、グループ３４０の処理装置３４１，３４２のためにＴＬＢ階層３３０に記憶され、ページテーブル３２０のいくつかの選択されたアドレス変換が、処理装置３４１のためにレベル１のＴＬＢ３３１に記憶され、ページテーブル３２０のいくつかの選択されたアドレス変換が、処理装置３４２のためにレベル１のＴＬＢ３３２に記憶される。データ処理と関係して、処理装置３４１，３４２は、最初に、各々の第１のレベルのＴＬＢ３３１，３３２内で所望のアドレス変換を検索し、次いで、レベル２のＴＬＢ３８０内で所望のアドレス変換を検索する。
【００４８】
所望のアドレス変換が検出された場合には、ページテーブル３２０のウォークの必要がなくなる。所望のアドレス変換が検出されない場合には、アドレス変換を検出するために、ページテーブル３２０のウォークを実行することが必要になり得る。
【００４９】
ページテーブルのウォークの結果を待機する必要をできるだけなくすために、処理デバイス３００は、処理装置３４１によって要求されたアドレス変換が、処理装置３４１と関連付けられたレベル１のＴＬＢ３３１内で検出されなかったことを条件として、要求されたアドレス変換のために、レベル１のＴＬＢ３３２をプローブ３７０するように構成されている。データ処理デバイス３００は、要求されたアドレス変換がレベル１のＴＬＢ３３１のプローブ３７０で検出されなかったことを条件として、要求されたアドレス変換のために、ページテーブル３２０のウォークを実行するようにさらに構成されている。代替として、データ処理デバイス３００は、レベル１のＴＬＢ３３２のプローブ３７０と同時に、要求されたアドレス変換のためにページテーブル３２０のウォークを開始するように構成することができる。
【００５０】
一実施形態において、データ処理デバイス３００は、処理装置３４２によって要求されたアドレス変換が、処理装置３４２と関連付けられたレベル１のＴＬＢ３３２内で検出されなかったことを条件として、要求されたアドレス変換のためにレベル１のＴＬＢ３３１をプローブ３７２するように構成されている。データ処理デバイス３００は、要求されたアドレス変換がレベル１のＴＬＢ３３２のプローブ３７２で検出されなかったことを条件として、要求されたアドレス変換のためにページテーブル３２０のウォークを実行するようにさらに構成されている。代替として、データ処理デバイス３００は、レベル１のＴＬＢ３３１のプローブ３７２と同時に、要求されたアドレス変換のためにページテーブル３２０のウォークを開始するように構成することができる。
【００５１】
処理装置３４１，３４２は、例えば、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）または加速処理装置（ＡＰＵ）等の任意の種類であってもよい。図３の実施形態は、ページテーブルウォークを開始する前に、または、その開始と同時に追加のプローブを提供するために、図１に関して示されたグループ内でも適用可能である。処理デバイス３００は、メモリおよび個々のＴＬＢ階層を共有する、３つ以上の処理装置を含むことができる。かかる場合、任意の処理装置が自身に関連付けられたレベル１のＴＬＢを参照しても満たすことができない変換要求は、要求されたアドレス変換のために他のレベル１のＴＬＢの全てまたは一部のプローブとなる可能性がある。一実施形態において、任意のプローブされたレベル１のＴＬＢでヒットが生じた場合には、ページテーブルウォークが回避される。代替として、プローブは、ページテーブルウォークの開始と並行して発行されてもよい。この場合において、変換ヒットが任意のクエリされたデバイスによって返された場合には、ページテーブルウォークが中止され、または、その応答が無視される。
【００５２】
本明細書に説明される方法は、共有メモリを採用する任意のマルチプロセッサデバイスで実装されてもよいこと、および、本明細書の開示に基づいて多数の変形が可能であること、を理解されたい。特徴および要素は特定の組み合せで上記のように説明されるが、各特徴または要素は、他の特徴および要素を含まずに単独で、他の特徴および要素を含めて、または、他の特徴および要素を含まずに多様な組み合せで用いられてもよい。
【００５３】
提供される方法は、汎用コンピュータ、プロセッサまたはプロセッサコアに実装されてもよい。適切なプロセッサは、例として、汎用プロセッサ、特殊目的プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアと関連付けられた１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、用途特定集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他の種類の集積回路（ＩＣ）、および／または、ステートマシンが挙げられる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令およびネットリスト（コンピュータ可読媒体上に記憶されることが可能な命令等）を含む他の中間データの結果を使用して製造プロセスを構成することによって、製造されてもよい。このような処理の結果は、開示された実施形態の１つ以上の態様を実装するプロセッサを製造するための半導体製造プロセスにおいて、その後使用されるマスクワークであってもよい。
【００５４】
本明細書で提供された方法またはフローチャートは、汎用コンピュータまたはプロセッサによる実行のために、非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）なコンピュータ可読記憶媒体に組み入れられたコンピュータプログラム、ソフトウェアまたはファームウェアに実装されてもよい。非一時的なコンピュータ可読記憶媒体の例としては、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスクおよび取り外し可能ディスク等の磁気媒体、磁気光学媒体、ならびにＣＤ−ＲＯＭディスクおよびデジタル多用途ディスク（ＤＶＤ）等の光学媒体が挙げられる。
【図１】
2016504686.tif 000003
【図２】
2016504686.tif 000004
【図３】
2016504686.tif 000005
【手続補正書】
【提出日】平成27年8月25日(2015.8.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の処理装置と、
第２の処理装置と、
前記第１および第２の処理装置によって共有されるメモリのページテーブルと、
前記第１の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）階層と、
前記第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層と、を備えるデータ処理デバイスであって、
前記データ処理デバイスは、前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢ階層内で検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢ階層をプローブするように構成されており、
前記データ処理デバイスは、前記第２の処理装置によって要求されたアドレス変換が前記第２のＴＬＢ階層内で検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブするように構成されている、
データ処理デバイス。
【請求項２】
前記第１の処理装置によって要求されたアドレス変換が前記第２のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第１の処理装置によって要求されたアドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項３】
前記第２のＴＬＢ階層の前記プローブと同時に、前記第１の処理装置によって要求されたアドレス変換のために前記ページテーブルのウォークを開始するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項４】
前記第２の処理装置によって要求された前記アドレス変換が前記第１のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項５】
前記第１のＴＬＢ階層の前記プローブと同時に、前記第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項６】
前記第１の処理装置は、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）または加速処理装置（ＡＰＵ）であり、
前記第２の処理装置は、ＣＰＵ、ＧＰＵまたはＡＰＵである、請求項１に記載のデータ処理デバイス。
【請求項７】
前記第１の処理装置を含む複数の第１の処理装置をさらに備え、
前記第１のＴＬＢ階層は、前記第１の処理装置によって使用されるために、前記ページテーブルの選択されたアドレス変換を記憶するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項８】
前記複数の第１の処理装置の全てがＣＰＵであり、
前記第１のＴＬＢ階層は、各ＣＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＣＰＵと関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
選択された第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするための前記条件は、前記選択された第１の処理装置によって要求された前記アドレス変換が、前記選択された第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢの検索において検出されないことである、請求項７に記載のデータ処理デバイス。
【請求項９】
前記複数の第１の処理装置の全てがＧＰＵであり、
前記第１のＴＬＢ階層は、各ＧＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＧＰＵの全てと関連付けられた単一のＴＬＢを含み、
選択された第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするための前記条件は、前記選択された第１の処理装置によって要求された前記アドレス変換が、前記単一のＴＬＢの検索において検出されないことである、請求項７に記載のデータ処理デバイス。
【請求項１０】
前記第２の処理装置を含む複数の第２の処理装置をさらに備え、
前記第２のＴＬＢ階層は、各第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記複数の第２の処理装置の各々と関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
前記データ処理デバイスは、前記第１の処理装置によって要求された前記アドレス変換を検出するために、選択された第２の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢを検索することによって、前記第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするように構成されている、請求項１に記載のデータ処理デバイス。
【請求項１１】
前記第１の処理装置を含む複数の第１の処理装置と、前記第２の処理装置を含む複数の第２の処理装置と、をさらに備え、
前記第１のＴＬＢ階層は、前記第１の処理装置によって使用されるために、前記ページテーブルの選択されたアドレス変換を記憶するように構成されており、
前記第２のＴＬＢ階層は、前記第２の処理装置によって使用されるために、前記ページテーブルの選択されたアドレス変換を記憶するように構成されている、請求項１に記載のデータ処理デバイス。
【請求項１２】
前記複数の第１の処理装置の各々は、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）または加速処理装置（ＡＰＵ）であり、
前記複数の第２の処理装置の各々は、ＣＰＵ、ＧＰＵまたはＡＰＵである、
請求項１１に記載のデータ処理デバイス。
【請求項１３】
前記複数の第１の処理装置の全てがＣＰＵであり、
前記第１のＴＬＢ階層は、各ＣＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＣＰＵと関連付けられた個別のレベル１のＴＬＢと、前記レベル１のＴＬＢと関連付けられたレベル２のＴＬＢと、を含み、
選択された第１の処理装置によって要求された前記アドレス変換のために前記第２のＴＬＢ階層をプローブするための前記条件は、前記選択された第１の処理装置によって要求された前記アドレス変換が、前記選択された第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢの検索において検出されないことであり、
前記複数の第２の処理装置の全てがＧＰＵであり、
前記第２のＴＬＢ階層は、各ＧＰＵによって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するために前記各ＧＰＵの全てと関連付けられた単一のＴＬＢを含み、
選択された第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブするための前記条件は、前記選択された第２の処理装置によって要求された前記アドレス変換が前記単一のＴＬＢの検索において検出されないことであり、
前記データ処理デバイスは、前記選択された第２の処理装置によって要求された前記アドレス変換を検出するために、前記選択された第１の処理装置と関連付けられた前記レベル１のＴＬＢおよび前記レベル２のＴＬＢを検索することによって、前記選択された第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブするように構成されている、請求項１２に記載のデータ処理デバイス。
【請求項１４】
前記選択された第１の処理装置によって要求された前記アドレス変換が前記第２のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記選択された第１の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行し、
前記選択された第２の処理装置によって要求された前記アドレス変換が前記第１のＴＬＢ階層の前記プローブで検出されなかったことを条件として、前記選択された第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを実行するように構成されている、請求項１３に記載のデータ処理デバイス。
【請求項１５】
前記第２のＴＬＢ階層の前記プローブと同時に、前記選択された第１の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始し、
前記第１のＴＬＢ階層の前記プローブと同時に、前記選択された第２の処理装置によって要求された前記アドレス変換のために前記ページテーブルのウォークを開始する、請求項１３に記載のデータ処理デバイス。
【請求項１６】
第１の処理装置によって使用されるためのページテーブルの選択されたアドレス変換を記憶するように構成された第１の変換索引バッファ（ＴＬＢ）階層と、第２の処理装置によって使用されるための、前記ページテーブルの選択されたアドレス変換を記憶するように構成された第２のＴＬＢ階層と、を提供することと、
前記第１の処理装置によって要求されたアドレス変換が前記第１のＴＬＢ階層で検出されなかったことを条件として、前記要求されたアドレス変換のために前記第２のＴＬＢ階層をプローブすることと、
前記第２の処理装置によって要求されたアドレス変換が前記第２のＴＬＢ階層内で検出されなかったことを条件として、前記第２の処理装置によって要求された前記アドレス変換のために前記第１のＴＬＢ階層をプローブすることと、を含む、データ処理方法。
【国際調査報告】
2016504686.tif 000006
2016504686.tif 000007