(57)【特許請求の範囲】
【請求項１】
メモリ管理ユニットによって、仮想アドレスを受信するステップと、
前記メモリ管理ユニットによって、前記仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断するステップと、
前記メモリ管理ユニットによって、ページテーブルベースアドレスを取得するためにページ・テーブル・ベース・アドレス・レジスタを読み取るステップと、
前記メモリ管理ユニットによって、前記ページテーブルベースアドレスに従って、前記ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子（ID）を取得するステップと、
前記メモリ管理ユニットによって、前記仮想アドレスおよび前記ページテーブルベースアドレスを、複数の前記メモリ制御デバイスの中の前記IDに対応する前記メモリ制御デバイスに送るステップと、
前記メモリ管理ユニットによって、前記メモリ制御デバイスによって送られるとともに前記仮想アドレスに対応している物理アドレスを受信するステップであって、前記物理アドレスは、前記仮想アドレスおよび前記ページテーブルベースアドレスに従って、前記メモリ制御デバイスによってページテーブルウォーク動作を実行することによって取得される、ステップと、
前記メモリ管理ユニットによって、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新するステップとを含むデータ処理方法。
【請求項２】
前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップの前に、前記データ処理方法は、
前記メモリ管理ユニットによって、ページテーブルウォーク動作識別子を生成するステップであって、前記ページテーブルウォーク動作識別子はページテーブルウォーク動作を示す、ステップをさらに含み、
前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップは、
前記メモリ管理ユニットによって、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスの前記ID、および前記ページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化するステップと、
前記メモリ管理ユニットによって、オンチップルータを使うことによって前記データパケットを前記メモリ制御デバイスに送るステップとを含む、請求項1に記載のデータ処理方法。
【請求項３】
前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップの前に、前記データ処理方法は、
前記メモリ管理ユニットによって、前記仮想アドレスを送るスレッドのIDを取得するステップと、
前記メモリ管理ユニットによって、前記メモリ管理ユニットに対応するプロセッサのIDを取得するステップとをさらに含み、
前記データパケットは、前記仮想アドレスを送る前記スレッドの前記IDおよび前記メモリ管理ユニットに対応する前記プロセッサの前記IDをさらに運ぶ、請求項2に記載のデータ処理方法。
【請求項４】
前記メモリ管理ユニットによって、前記仮想アドレス、および前記ページテーブルベースアドレスを前記メモリ制御デバイスに送る前記ステップの前に、前記データ処理方法は、
前記メモリ管理ユニットによって、前記仮想アドレスを送る前記スレッドの優先度情報を取得するステップをさらに含み、
前記データパケットは前記優先度情報をさらに運ぶ、請求項3に記載のデータ処理方法。
【請求項５】
前記メモリ管理ユニットによって、前記メモリ制御デバイスによって送られるとともに前記仮想アドレスに対応している物理アドレスを受信する前記ステップは、
前記メモリ管理ユニットによって、前記メモリ制御デバイスによって送られたデータパケットを受信するステップを含み、前記メモリ制御デバイスによって送られた前記データパケットは、前記仮想アドレスと、前記仮想アドレスに対応する前記物理アドレスとを運ぶ、請求項1から4のいずれか一項に記載のデータ処理方法。
【請求項６】
前記メモリ制御デバイスによって送られた前記データパケットは、ページテーブルウォーク動作完了識別子をさらに含み、
前記メモリ管理ユニットによって、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新する前記ステップの前に、前記データ処理方法は、
前記メモリ管理ユニットによって、前記ページテーブルウォーク動作完了識別子に従っ
て、前記メモリ制御デバイスによって送られた前記データパケットが前記トランスレーションルックアサイドバッファを更新するのに使われることを確認するステップをさらに含む、請求項5に記載のデータ処理方法。
【請求項７】
前記メモリ制御デバイスによって送られた前記データパケットは、スレッドのIDをさらに含み、
前記メモリ管理ユニットによって、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新する前記ステップの後、前記データ処理方法は、
前記スレッドの前記IDに従って、前記スレッドの前記IDに対応する前記スレッドをアクティブ化するステップをさらに含む、請求項5または6に記載のデータ処理方法。
【請求項８】
メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するステップと、
前記メモリ制御デバイスによって、前記仮想アドレスに対応する物理アドレスを取得するために、前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップと、
前記メモリ制御デバイスによって前記メモリ管理ユニットに、前記仮想アドレスに対応する前記物理アドレスを送るステップとを含むデータ処理方法であって、
前記仮想アドレスおよび前記ページテーブルベースアドレスは、前記メモリ制御デバイスの識別子（ID）とともにデータパケットの中にカプセル化された後に前記IDに対応する前記メモリ制御デバイスに送られ、前記メモリ制御デバイスの前記IDは、複数のメモリ制御デバイスの中から前記メモリ制御デバイスを識別するために使用される、
データ処理方法。
【請求項９】
メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信する前記ステップは、
前記メモリ制御デバイスによって、オンチップルータを使うことによって、前記メモリ管理ユニットによって送られたデータパケットを受信するステップであって、前記データパケットは、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスのID、プロセッサのID、およびスレッドのIDを含み、前記プロセッサは、前記メモリ管理ユニットに対応するプロセッサであり、前記仮想アドレスは、前記スレッドによって送信される、ステップを含み、
前記メモリ制御デバイスによって前記メモリ管理ユニットに、前記仮想アドレスに対応する前記物理アドレスを送る前記ステップは、
前記メモリ制御デバイスによって、前記物理アドレス、前記スレッドの前記ID、および前記プロセッサの前記IDをパケットの中にパックし、前記パケットを前記メモリ管理ユニットに送るステップを含む、請求項8に記載のデータ処理方法。
【請求項１０】
前記データパケットは、ページテーブルウォーク動作識別子をさらに含み、
前記メモリ制御デバイスによって、前記仮想アドレスに対応する物理アドレスを取得するために、前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行する前記ステップの前に、前記データ処理方法は、
前記メモリ制御デバイスによって、前記ページテーブルウォーク動作識別子に従って、前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するステップをさらに含む、請求項9に記載のデータ処理方法。
【請求項１１】
前記データパケットは優先度情報をさらに含み、
前記メモリ制御デバイスによって、前記仮想アドレスに対応する物理アドレスを取得するために、前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行する前記ステップの前に、前記データ処理方法は、
前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、前記メモリ制御デバイスによってページテーブルウォーク動作キャッシュに、前記優先度情報、ならびに前記優先度情報に対応する前記仮想アドレスおよび前記ページテーブルベースアドレスを記憶するステップと、
前記メモリ制御デバイスによって、前記ページテーブルウォーク動作キャッシュ中に記憶された前記優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するステップとをさらに含む、請求項10に記載のデータ処理方法。
【請求項１２】
仮想アドレスを受信するように構成された受信モジュールと、
前記仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断し、ページテーブルベースアドレスを取得するために、ページ・テーブル・ベース・アドレス・レジスタを読み取り、前記ページテーブルベースアドレスに従って、前記ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子（ID）を取得するように構成された処理モジュールであって、前記メモリ制御デバイスの前記IDは、複数のメモリ制御デバイスから前記メモリ制御デバイスを識別するために使用される、処理モジュールと、
前記仮想アドレス、および前記ページテーブルベースアドレスを、複数の前記メモリ制御デバイスの中の前記IDに対応する前記メモリ制御デバイスに送るように構成された送付モジュールとを備えるメモリ管理ユニットであって、
前記処理モジュールは、前記メモリ制御デバイスによって送られるとともに前記仮想アドレスに対応している物理アドレスを受信し、前記物理アドレスは、前記仮想アドレスおよび前記ページテーブルベースアドレスに従って、前記メモリ制御デバイスによってページテーブルウォーク動作を実行することによって取得され、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新するようにさらに構成される、メモリ管理ユニット。
【請求項１３】
前記処理モジュールは、ページテーブルウォーク動作識別子を生成するようにさらに構成され、前記ページテーブルウォーク動作識別子はページテーブルウォーク動作を示し、
前記送付モジュールは、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスの前記ID、および前記ページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化し、オンチップルータを使うことによって、前記データパケットを前記メモリ制御デバイスに送るように特に構成される、請求項12に記載のメモリ管理ユニット。
【請求項１４】
前記受信モジュールは、前記仮想アドレスを送るスレッドのIDおよび前記メモリ管理ユニットに対応するプロセッサのIDを取得するようにさらに構成され、
前記データパケットは、前記仮想アドレスを送る前記スレッドの前記IDおよび前記メモリ管理ユニットに対応する前記プロセッサの前記IDをさらに運ぶ、請求項13に記載のメモリ管理ユニット。
【請求項１５】
前記受信モジュールは、前記仮想アドレスを送る前記スレッドの優先度情報を取得するようにさらに構成され、
前記データパケットは前記優先度情報をさらに運ぶ、請求項14に記載の前記メモリ管理ユニット。
【請求項１６】
前記処理モジュールは、
前記メモリ制御デバイスによって送られたデータパケットを受信するように構成され、前記メモリ制御デバイスによって送られた前記データパケットは、前記仮想アドレスと、前記仮想アドレスに対応する前記物理アドレスとを運ぶ、請求項12から15のいずれか一項に記載の前記メモリ管理ユニット。
【請求項１７】
前記メモリ制御デバイスによって送られた前記データパケットはページテーブルウォーク動作完了識別子をさらに含み、
前記処理モジュールは、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新する前に、前記ページテーブルウォーク動作完了識別子に従って、前記メモリ制御デバイスによって送られた前記データパケットが前記トランスレーションルックアサイドバッファを更新するのに使われることを確認するようにさらに構成される、請求項16に記載のメモリ管理ユニット。
【請求項１８】
前記メモリ制御デバイスによって送られた前記データパケットはスレッドのIDをさらに含み、
前記処理モジュールは、前記物理アドレスに従って前記トランスレーションルックアサイドバッファを更新した後、前記スレッドの前記IDに従って、前記スレッドをアクティブ化するようにさらに構成される、請求項16または17に記載の前記メモリ管理ユニット。
【請求項１９】
メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するように構成された受信モジュールと、
前記仮想アドレスおよび前記ページテーブルベースアドレスに従ってページテーブルウォーク動作を実行して、前記仮想アドレスに対応する物理アドレスを取得するように構成された処理モジュールと、
前記メモリ管理ユニットに、前記仮想アドレスに対応する前記物理アドレスを送るように構成された送付モジュールとを備えるメモリ制御デバイスであって、
前記仮想アドレスおよび前記ページテーブルベースアドレスは、前記メモリ制御デバイスの識別子（ID）とともにデータパケットの中にカプセル化された後に前記IDに対応する前記メモリ制御デバイスに送られ、前記メモリ制御デバイスの前記IDは、複数のメモリ制御デバイスの中から前記メモリ制御デバイスを識別するために使用される、
メモリ制御デバイス。
【請求項２０】
前記受信モジュールは、前記メモリ管理ユニットによって送られたデータパケットを、オンチップルータを使うことによって受信するように特に構成され、前記データパケットは、前記仮想アドレス、前記ページテーブルベースアドレス、前記メモリ制御デバイスのID、プロセッサのID、およびスレッドのIDを含み、前記プロセッサは、前記メモリ管理ユニットに対応するプロセッサであり、前記仮想アドレスは、前記スレッドによって送信され、
前記送付モジュールは、前記物理アドレス、前記スレッドの前記ID、および前記プロセッサの前記IDをパケットの中にパックし、前記パケットを前記メモリ管理ユニットに送るように特に構成される、請求項19に記載のメモリ制御デバイス。
【請求項２１】
前記データパケットは、ページテーブルウォーク動作識別子をさらに含み、
前記受信モジュールは、前記データパケットを受信し、前記ページテーブルウォーク動作識別子に従って、前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するようにさらに構成される、請求項20に記載のメモリ制御デバイス。
【請求項２２】
前記データパケットは優先度情報をさらに含み、
前記受信モジュールは、前記データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、ページテーブルウォーク動作キャッシュに、前記優先度情報と、前記優先度情報に対応する前記仮想アドレスおよび前記ページテーブルベースアドレスとを記憶するようにさらに構成され、
前記処理モジュールは、前記ページテーブルウォーク動作キャッシュ中に記憶された前記優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するようにさらに構成される、請求項21に記載のメモリ制御デバイス。
【請求項２３】
請求項12から18のいずれか一項に記載の前記メモリ管理ユニットを備え、請求項19から22のいずれか一項に記載の前記メモリ制御デバイスと、少なくとも1つのオンチップルータとをさらに備え、前記少なくとも1つのオンチップルータは、前記メモリ制御デバイスと前記メモリ管理ユニットとの間の通信接続を確立するように構成される、プロセッサチップ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、詳細には、メモリ管理ユニット、メモリ制御デバイス、およびデータ処理方法に関する。
【背景技術】
【０００２】
コンピュータアーキテクチャ技術の発展とともに、マルチコア(Multi-Core)アーキテクチャ、さらにはメニーコア(Many Core)アーキテクチャをプロセッサチップ上で統合することは徐々に主流になっている。このアーキテクチャタイプのチップは、マルチコアプロセッサチップと呼ばれるか、またはチップマルチプロセッサ(Chip Multi-Processors、CMPs)チップと呼ばれる。既存のマルチコアプロセッサチップは概して、不均一キャッシュアーキテクチャ(Non-Uniformed Cache Architecture、NUCA)を有する。特に、各プロセッサコア(Core)は、レベル1キャッシュ(Level 1 cache)をプライベートに所有し、マルチコアプロセッサチップ上のプロセッサコアは、論理的にはレベル2キャッシュ(Level 2 cache)を共有する。ただし、プロセッサチップ上のキャッシュ容量は限られているので、マルチコアプロセッサチップの稼動中プロセスに関与するデータの一部は、マルチコアプロセッサチップの外のメモリデバイスにも記憶される場合がある。マルチコアプロセッサチップ上に統合されたメモリコントローラを使うことによって、マルチコアプロセッサチップは通信し、メモリデバイスは通信を実施する。
【０００３】
現代のオペレーティングシステムは、メモリ管理のための抽象化技術、すなわち、仮想メモリ(Virtual Memory)技術を提供する。つまり、プログラムは、仮想アドレス空間(Virtual Address Space)中で稼動し、どのプログラムも仮想メモリ中のアドレスを使う。オペレーティングシステムは、プログラムによって送られた仮想アドレスの、現実の物理アドレスへの「変換」において、メモリ管理ユニット(Memory Management Unit、MMU)を支援する。仮想アドレスと物理アドレスとの間の変換関係は概して、ページテーブル(Page Table)に記憶される。ページテーブルは、比較的大きい空間を占め、したがって、概して、チップの外のメモリデバイスに記憶され、いくつかの最も頻繁に使われるページテーブルのみが、プロセッサチップ上のトランスレーションルックアサイドバッファ(Translation Look-aside Buffer、TLB)に記憶される。
【０００４】
したがって、仮想アドレスを毎回取得した後、プロセッサは最初に、TLBから、仮想アドレスに対応する物理アドレスを照会する。仮想アドレスに対応する物理アドレスがTLB中に見つからない場合、プロセッサは、チップの外のメモリデバイスから、仮想アドレスに対応する物理アドレスを照会する必要がある。ページテーブルは概して、複数のレベルを有して設計されるので、プロセッサは、プロセッサによって必要とされる物理アドレスを取得するために、メモリデバイスに複数回アクセスする必要がある。したがって、メモリデバイスへのアクセスのたびに、プロセッサチップ上の通信チャネルへの負担を引き起こす。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の実施形態は、物理アドレスの取得のためにプロセッサがメモリデバイスに複数回アクセスするプロセスがプロセッサチップ上の通信チャネルへの負担を引き起こすという問題を解決するのを助けるための、データ処理方法、メモリ管理ユニット、およびメモリ制御デバイスを提供する。
【０００６】
本発明の実施形態の第1の態様は、メモリ管理ユニットによって、仮想アドレスを受信するステップと、メモリ管理ユニットによって、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断するステップと、メモリ管理ユニットによって、ページテーブルベースアドレスを取得するためにページ・テーブル・ベース・アドレス・レジスタを読み取るステップと、メモリ管理ユニットによって、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子IDを取得するステップと、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップと、メモリ管理ユニットによって、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信するステップであって、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得される、ステップと、メモリ管理ユニットによって、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するステップとを含むデータ処理方法を提供する。
【０００７】
第1の態様に関連して、第1の態様の第1の実装様式では、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップの前に、データ処理方法は、メモリ管理ユニットによって、ページテーブルウォーク動作識別子を生成するステップをさらに含み、ページテーブルウォーク動作識別子はページテーブルウォーク動作を示し、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップは、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、メモリ制御デバイスのID、およびページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化するステップと、メモリ管理ユニットによって、オンチップルータを使うことによってデータパケットをメモリ制御デバイスに送るステップとを含む。
【０００８】
第1の態様の第1の実装様式に関連して、第1の態様の第2の実装様式では、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップの前に、データ処理方法は、メモリ管理ユニットによって、仮想アドレスを送るスレッドのIDを取得するステップと、メモリ管理ユニットによって、メモリ管理ユニットに対応するプロセッサのIDを取得するステップであって、データパケットは、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDをさらに運ぶ、ステップとをさらに含む。
【０００９】
第1の態様の第1または第2の実装様式に関連して、第1の態様の第3の実装様式では、メモリ管理ユニットによって、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るステップの前に、データ処理方法は、メモリ管理ユニットによって、仮想アドレスを送るスレッドの優先度情報を取得するステップをさらに含み、データパケットは優先度情報をさらに運ぶ。
【００１０】
第1の態様または第1の態様の第1もしくは第2もしくは第3の実装様式に関連して、第1の態様の第4の実装様式では、メモリ管理ユニットによって、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信するステップは、メモリ管理ユニットによって、メモリ制御デバイスによって送られたデータパケットを受信するステップを含み、メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。
【００１１】
第1の態様の第4の実装様式に関連して、第1の態様の第5の実装様式では、メモリ制御デバイスによって送られるデータパケットは、ページテーブルウォーク動作完了識別子をさらに含み、メモリ管理ユニットによって、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するステップの前に、データ処理方法は、メモリ管理ユニットによって、ページテーブルウォーク動作完了識別子に従って、メモリ制御デバイスによって送られたデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認するステップをさらに含む。
【００１２】
第1の態様の第4または第5の実装様式に関連して、第1の態様の第6の実装様式では、メモリ制御デバイスによって送られるデータパケットはスレッドのIDをさらに含み、メモリ管理ユニットによって、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するステップの後、方法は、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化するステップをさらに含む。
【００１３】
第1の態様の実装様式のうちのいずれか1つに関して、第1の態様の第7の実装様式では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットは、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含んでよく、仮想アドレスの識別子は、仮想アドレスを示すのに使われ、メモリ管理ユニットは、仮想アドレスと仮想アドレスの識別子との間の対応を記憶し、メモリ管理ユニットは、仮想アドレスのものであるとともにメモリ制御デバイスによって送られる識別子をさらに受信し、仮想アドレスと仮想アドレスの識別子との間の記憶された対応に従って仮想アドレスを取得する。
【００１４】
本発明の実施形態の第2の態様は、メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するステップと、メモリ制御デバイスによって、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップと、メモリ制御デバイスによってメモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るステップとを含むデータ処理方法を提供する。
【００１５】
第2の態様に関連して、第2の態様の第1の実装様式では、メモリ制御デバイスによって、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するステップは、メモリ制御デバイスによって、オンチップルータを使うことによって、メモリ管理ユニットによって送られたデータパケットを受信するステップを含み、データパケットは、仮想アドレス、ページテーブルベースアドレス、プロセッサのID、およびスレッドのIDを含み、プロセッサのIDは、メモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDであり、メモリ制御デバイスによってメモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るステップは、メモリ制御デバイスによって、物理アドレス、スレッドのID、およびプロセッサのIDをパケットの中にパックするステップと、パケットをメモリ管理ユニットに送るステップとを含む。
【００１６】
第2の態様の第1の実装様式に関連して、第2の実装様式では、データパケットはページテーブルウォーク動作識別子をさらに含み、メモリ制御デバイスによって、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップの前に、方法は、メモリ制御デバイスによって、ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するステップをさらに含む。
【００１７】
第2の態様の第2の実装様式に関連して、第3の実装様式では、データパケットは優先度情報をさらに含み、メモリ制御デバイスによって、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するステップの前に、方法は、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、メモリ制御デバイスによってページテーブルウォーク動作キャッシュに、優先度情報、ならびに優先度情報に対応する仮想アドレスおよびページテーブルベースアドレスを記憶するステップと、メモリ制御デバイスによって、ページテーブルウォーク動作キャッシュ中に記憶された優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するステップとをさらに含む。
【００１８】
第1の態様の第7の実装様式に対応する、第2の態様の実装様式のうちのいずれか1つに関連して、第2の態様の第4の実装様式では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットが、仮想アドレス、仮想アドレスの識別子、およびページテーブルベースアドレスを含む場合、メモリ制御デバイスは、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスおよび仮想アドレスの識別子を送る。
【００１９】
本発明の実施形態の第3の態様は、メモリ管理ユニットを提供し、このメモリ管理ユニットは、
仮想アドレスを受信するように構成された受信モジュールと、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断し、ページテーブルベースアドレスを取得するために、ページ・テーブル・ベース・アドレス・レジスタを読み取り、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスの識別子IDを取得するように構成された処理モジュールと、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送り、処理モジュールは、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信するようにさらに構成され、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得され、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するように構成された送付モジュールとを含む。
【００２０】
第3の態様に関連して、第3の態様の第1の実装様式では、処理モジュールは、ページテーブルウォーク動作識別子を生成するようにさらに構成され、ページテーブルウォーク動作識別子はページテーブルウォーク動作を示し、送付モジュールは、仮想アドレス、ページテーブルベースアドレス、メモリ制御デバイスのID、およびページテーブルウォーク動作識別子を一緒に、データパケットの中にカプセル化し、オンチップルータを使うことによって、データパケットをメモリ制御デバイスに送るように特に構成される。
【００２１】
第3の態様の第1の実装様式に関連して、第2の実装様式では、受信モジュールは、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを取得するようにさらに構成され、データパケットは、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDをさらに運ぶ。
【００２２】
第3の態様の第1または第2の実装様式に関連して、第3の実装様式では、受信モジュールは、仮想アドレスを送るスレッドの優先度情報を取得するようにさらに構成され、データパケットは優先度情報をさらに運ぶ。
【００２３】
第3の態様または第3の態様の第1もしくは第2もしくは第3の実装様式に関連して、第4の実装様式では、処理モジュールが、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信することは、処理モジュールによって、メモリ制御デバイスによって送られたデータパケットを受信することを含み、メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。
【００２４】
第3の態様の第4の実装様式に関連して、第5の実装様式では、メモリ制御デバイスによって送られるデータパケットは、ページテーブルウォーク動作完了識別子をさらに含み、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する前に、処理モジュールは、ページテーブルウォーク動作完了識別子に従って、メモリ制御デバイスによって送られたデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることをさらに確認する。
【００２５】
第3の態様の第3または第4の実装様式に関連して、第6の実装様式では、メモリ制御デバイスによって送られたデータパケットは、スレッドのIDをさらに含み、処理モジュールは、物理アドレスに従ってトランスレーションルックアサイドバッファを更新した後、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化するようにさらに構成される。
【００２６】
第3の態様または第3の態様の実装様式のうちのいずれか1つに関連して、第7の実装様式では、送付モジュールによってメモリ制御デバイスに送られるデータパケットは、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含むことができ、仮想アドレスの識別子は、仮想アドレスを示すのに使われ、処理モジュールは、仮想アドレスと仮想アドレスの識別子との間の対応を記憶し、受信モジュールは、仮想アドレスのものであるとともにメモリ制御デバイスによって送られる識別子をさらに受信し、処理モジュールは、仮想アドレスと仮想アドレスの識別子との間の記憶された対応に従って、仮想アドレスを取得するようにさらに構成される。
【００２７】
本発明の実施形態の第4の態様は、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するように構成された受信モジュールを含むメモリ制御デバイスと、仮想アドレスに対応する物理アドレスを取得するために、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行するように構成された処理モジュールと、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るように構成された送付モジュールとを提供する。
【００２８】
第4の態様に関連して、第4の態様の第1の実装様式では、受信モジュールは、オンチップルータを使うことによって、メモリ管理ユニットによって送られたデータパケットを受信するように特に構成され、データパケットは、仮想アドレス、ページテーブルベースアドレス、プロセッサのID、およびスレッドのIDを含み、プロセッサのIDは、メモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDであり、送付モジュールは、物理アドレス、スレッドのID、およびプロセッサのIDをパケットの中にパックし、パケットをメモリ管理ユニットに送るように特に構成される。
【００２９】
第4の態様の第1の実装様式に関連して、第2の実装様式では、データパケットは、ページテーブルウォーク動作識別子をさらに含み、受信モジュールは、データパケットを受信し、ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断するようにさらに構成される。
【００３０】
第4の態様の第2の実装様式に関連して、第3の実装様式では、データパケットは優先度情報をさらに含み、受信モジュールは、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、ページテーブルウォーク動作キャッシュに、優先度情報、ならびに優先度情報に対応する仮想アドレスおよびページテーブルベースアドレスを記憶するようにさらに構成され、処理モジュールは、ページテーブルウォーク動作キャッシュ中に記憶された優先度情報に従って、優先的にページテーブルウォーク動作を実行するための仮想アドレスおよびページテーブルベースアドレスを判断するようにさらに構成される。
【００３１】
第3の態様の第7の実装様式に対応する、第4の態様の実装様式のうちのいずれか1つに関連して、第4の態様の第4の実装様式では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットが、仮想アドレス、仮想アドレスの識別子、およびページテーブルベースアドレスを含む場合、送付モジュールは、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスおよび仮想アドレスの識別子を送る。
【００３２】
本発明の実施形態の第5の態様は、第3の態様または第3の態様の実装様式のうちのいずれか1つによるメモリ管理ユニットを含むとともに、第4の態様または第4の態様の実装様式のうちのいずれか1つによるメモリ制御デバイスと、少なくとも1つのオンチップルータとをさらに含むプロセッサチップを提供し、少なくとも1つのオンチップルータは、メモリ制御デバイスとメモリ管理ユニットとの間の通信接続を確立するように構成される。
【００３３】
上に挙げた実施形態によると、TLB missが起こると、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される様々なタイプの情報をデータパケット中にパックし、データパケットをオンチップルータに送り、それにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信ネットワークに対して引き起こされる負担を削減し、というのは、メモリ管理ユニットはすべて、複数レベルページテーブルが照会される必要があるとき、データパケットを複数回送る必要があるからである。
【００３４】
本発明の実施形態における、または従来技術における技術的解決策をより明確に記載するために、以下で、実施形態に必要とされる添付の図面について簡潔に記載する。明らかに、以下の説明における添付の図面は、本発明のいくつかの実施形態を示し、当業者は、これらの添付の図面から、創造的努力なしで他の図面をさらに導き出すことができよう。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施形態において適用されるプロセッサチップの概略アーキテクチャ図である。
【図２】本発明の方法実施形態1において適用されるデータ処理方法の概略フローチャートである。
【図３】本発明の方法実施形態2において適用されるデータ処理方法の概略フローチャートである。
【図４】本発明のデバイス実施形態1において適用されるメモリ管理ユニットの概略構造図である。
【図５】本発明のデバイス実施形態2において適用されるメモリ制御デバイスの概略構造図である。
【図６】本発明のデバイス実施形態2において適用される別のメモリ制御デバイスの概略構造図である。
【図７】本発明のデバイス実施形態3において適用されるプロセッサチップの概略構造図である。
【発明を実施するための形態】
【００３６】
本発明の実施形態の目的、技術的解決策、および利点をより明らかにするために、以下では、本発明の実施形態における技術的解決策について、本発明の実施形態における添付の図面を参照して、明快および完全に説明する。明らかに、記載する実施形態は、本発明の実施形態の一部ではあるが、すべてではない。創造的努力なしで、本発明の実施形態に基づいて当業者によって得られるすべての他の実施形態は、本発明の保護範囲内であるものとする。
【００３７】
本明細書を通して、「プロセッサコア」という用語は一般に、プロセッサチップであるとともにデータ処理タスクを実行する1つもしくは複数の処理ユニットを指すか、またはプロセッサコアもしくは処理コアと呼ばれ得るか、または信号処理能力をもつ集積回路チップ、たとえば、汎用プロセッサ、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラム可能ゲートアレイ(Field Programmable Gate Array、FPGA)であり得る。
【００３８】
本明細書を通して、「メモリ管理ユニット」(英文全称:Memory Management Unit、英文略称:MMU)という用語は、仮想メモリおよび物理メモリの制御ラインを管理するように構成され、仮想アドレスを物理アドレスにマップし、ハードウェア機構のメモリアクセス認可を与えることも担当し、一般に、中央処理装置中に置かれる。マルチコア処理チップ上の各メモリ管理ユニットはまた、メモリ管理ユニットが置かれているプロセッサと通信する。
【００３９】
本明細書を通して、「メモリ制御デバイス」という用語は、従来のメモリコントローラによって所有されるとともにメモリデバイスにアクセスする際にCPUを支援するための機能を有するだけでなく、本明細書におけるページテーブルウォーク動作の実行に関連した機能も有するデバイスを指す。一般に、従来のメモリコントローラまたは従来のメモリコントローラの機能を有するユニットも、メモリ制御デバイスに統合される必要がある。
【００４０】
本明細書を通して、「トランスレーションルックアサイドバッファ」(英文全称:Translation look-aside buffer、英文略称:TLB)という用語は、送信ルックアサイドバッファまたはページテーブルバッファとも呼ばれ、一般にメモリ管理ユニット中に置かれ、ページテーブルの照会を高速化するための、いくつかの最も頻繁に使われるページテーブルを記憶するように構成される。さらに、本明細書におけるトランスレーションルックアサイドバッファヒット(TLB hit)は、仮想アドレスを受信するとき、メモリ管理ユニットが最初に、仮想アドレスに従ってTLBを照会することを意味する。対応する物理アドレスがTLBに記憶されていることが分かった場合、TLB hitが起こる。相応して、対応する物理アドレスがTLB中で見つからない場合、TLB missが起こり、この場合、仮想アドレスに対応する物理アドレスを取得してTLBを更新するために、ページテーブルウォーク動作が実行される必要がある。
【００４１】
本明細書を通して、「ページテーブルウォーク動作」(英文全称:Page Table Walk)という用語は、仮想アドレスおよびページテーブルベースアドレスに従って物理アドレスを取得する動作である。一般に、ページテーブルは複数のレベルに分割され、たとえば、ページテーブルが4つのレベルに分割される場合、ページテーブルウォーク動作が一度実行されると、ページテーブルベースアドレスおよび仮想アドレスの第1の部分に従って、レベル1ページテーブルが最初に照会される。レベル1ページテーブル中の対応するアドレスに記憶されたデータが取得された後、データが、要求される物理アドレスであるかどうか判断される。データが、要求される物理アドレスでない場合、レベル2ページテーブルが、データおよび仮想アドレスの第2の部分に従って照会され、次いで、レベル2ページテーブル中の対応するアドレスに記憶されたデータが取得される。上記プロセスは、レベル4ページテーブル中の対応するアドレスに記憶されたデータが取得されるまで繰り返される。アドレスは、仮想アドレスに対応する物理アドレスであり、ページテーブルウォーク動作が完了する。
【００４２】
本発明の実施形態におけるプロセッサチップのアーキテクチャ
【００４３】
図1は、本発明の実施形態によるプロセッサチップのアーキテクチャの一部の、概略図を記載する。図1はプロセッサチップのアーキテクチャの一部であり、プロセッサチップの実際のアーキテクチャは、図1に示す複数の部分の拡張を用いて形成され得ることが当業者には理解できよう(図1の、点線で置き換えられる部分は、破線ボックスに示される1つまたは複数の部分である)。プロセッサチップは一般に、複数のプロセッサコアを含み、マルチコアプロセッサチップとも呼ばれる。各プロセッサコアは、メモリ管理ユニットに対応し、TLBがメモリ管理ユニット中に配設される。各プロセッサコアは、オンチップルータを使うことによって別のプロセッサコアと通信することができ、またはプロセッサチップ上のメモリ制御デバイスと通信することができる。どのプロセッサコアも、メモリ制御デバイスを使うことによって、プロセッサチップの外のメモリデバイスと通信することができる。
【００４４】
方法実施形態1
この方法実施形態1はデータ処理方法を提供し、データ処理方法の概略フローチャートが図2に示されている。この方法は、メモリ管理ユニット、またはメモリ管理ユニットの機能が統合されている別のデバイスによって使われてよい。
【００４５】
ステップ202:メモリ管理ユニットが仮想アドレスを受信する。
【００４６】
ARMv8アーキテクチャにおいて使われる48ビット仮想アドレスが例として使われ、この仮想アドレスは一般に、4レベルのページテーブルを使う。仮想アドレス全体が5つのフィールドに分割され、VA[11:0]がページテーブル中のオフセットアドレスであり、VA[20:12]は、レベル3ページテーブルが位置するオフセットアドレスであり、VA[29:21]は、レベル2ページテーブルが位置するオフセットアドレスであり、VA[38:30]は、レベル1ページテーブルが位置するオフセットアドレスであり、VA[47:39]は、レベル0ページテーブルが位置するオフセットアドレスである。
【００４７】
ステップ203:メモリ管理ユニットが、仮想アドレスがトランスレーションルックアサイドバッファにヒットするかどうか判断する。
【００４８】
ステップ204:メモリ管理ユニットが、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断する。
【００４９】
上記の例に基づいて、仮想アドレスを受信した後、メモリ管理ユニットは最初に、VA[47:12]を使うことによって、TLB中のコンテンツアドレス可能メモリ(英文全称:Content Addressable Memory、英文略称:CAM)を照会する。Table 1(表1)に示すCAMが、例として使われる。メモリ管理ユニットが、CAM中でVA[47:12]のいかなる一致項目も見つけなかった場合、そのことは、トランスレーションルックアサイドバッファがヒットしないことを示し、TLB missが起こる。
【００５０】
ステップ205:メモリ管理ユニットが、仮想アドレスがトランスレーションルックアサイドバッファにヒットすると判断し、仮想アドレスに従って物理アドレスを取得して、アドレスマッピングを完了する。
【００５１】
上記の例に基づいて、メモリ管理ユニットがCAM中でVA[47:12]の一致項目を見つけた場合、そのことは、TLB hitが起こることを示す。この場合、メモリ管理ユニットは、CAMを使うことによって、VA[47:12]に対応するランダムアクセスメモリ(英文全称:Random access memory、英文略称:RAM)アドレスを取得し、RAMアドレスに従ってRAMにアクセスして、対応するRAMアドレスに記憶された物理アドレス、たとえば、PA[47:12]を取得する。この場合、PA[47:12]およびVA[11:0]によって形成される48ビットアドレスは、ステップ202において受信された48ビット仮想アドレスに対応する物理アドレスであり、アドレスマッピングが完了する。
【００５２】
【表１】
0006636526.tif 000002
【００５３】
ステップ206:メモリ管理ユニットがページ・テーブル・ベース・アドレス・レジスタを読み取って、ページテーブルベースアドレスを取得する。
【００５４】
たとえば、ステップ203において、トランスレーションルックアサイドバッファがヒットしない場合、ステップ204の後、メモリ管理ユニットはページ・テーブル・ベース・アドレス・レジスタにアクセスする。上記の例に基づいて、ARMv8アーキテクチャにおけるページ・テーブル・ベース・アドレス・レジスタはTTBR0/TTBR1であり、ページテーブルベースアドレス、たとえば、ページ・テーブル・ベース・アドレス・レジスタ中に記憶されたTTBR[47:12]が読み取られる。
【００５５】
ステップ208:メモリ管理ユニットが、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得する。
【００５６】
上記の例に基づいて、TTBR[47:12]を取得した後、メモリ管理ユニットは、TTBR[47:12]とメモリ制御デバイスのIDとの間の事前設定された対応に従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得する。実際、異なるページテーブルベースアドレスに対応するページテーブルが、異なるメモリデバイス中に記憶され、異なるメモリデバイスはまた、異なるメモリ制御デバイスによって管理される。したがって、ページテーブルベースアドレスは、メモリ制御デバイスのIDにも対応する。
【００５７】
随意に、ステップ210の前に、メモリ管理ユニットは、ページテーブルウォーク動作識別子をさらに生成し得る。ページテーブルウォーク動作識別子は、ページテーブルウォーク動作を示す。実際、ページテーブルウォーク動作識別子の形は限定されない。メモリ制御デバイスは、ページテーブルウォーク動作識別子に従って、ページテーブルウォーク動作識別子を運ぶデータパケット中で運ばれる内容が、ページテーブルウォーク動作に使われることを識別することができる。相応して、プロセッサコアによって送られたデータパケットが、通常のデータ読取り/書込み動作を実行するためのデータパケットである場合、データパケットは、メモリ制御デバイスが異なるタイプのデータパケットを受信した後、異なるタイプのデータパケットを異なるやり方で識別し、処理するためにメモリ制御デバイスによって使われる別の動作識別子を運ぶことができる。
【００５８】
随意に、ステップ210の前に、メモリ管理ユニットは、仮想アドレスを送るスレッドのIDと、メモリ管理ユニットに対応するプロセッサのIDとをさらに取得することができる。スレッドがデータを読み取るか、または書き込む必要があるとき、メモリ管理ユニットがTLBにアクセスし、TLB missが起きた場合、スレッドは、ページテーブルウォーク動作が完了した後でのみ、実行され続けてよい。したがって、スレッドは一般に、中断される必要があり、たとえば、プロセッサコアのスレッド選択モジュール中に記憶される必要がある。仮想アドレスに対応する物理アドレスを運ぶデータパケットがメモリ管理ユニットに戻される必要があるとき、最初に、オンチップルータが、メモリ管理ユニットにデータパケットをルーティングするために、メモリ管理ユニットに対応するプロセッサのIDを必要とし、次いで、メモリ管理ユニットが、物理アドレスを運ぶデータパケットを受信し、トランスレーションルックアサイドバッファの更新を完了した後、スレッド選択モジュール中で複数のスレッドが中断され得るので、メモリ管理ユニットは、スレッド選択モジュール中で対応するスレッドをアクティブ化するために、物理アドレスに対応するスレッドのID番号も必要とする。ページテーブルウォーク動作およびトランスレーションルックアサイドバッファの更新が完了したので、スレッドによって送られる仮想アドレスはトランスレーションルックアサイドバッファに明確にヒットし、そうすることによってスレッドは稼動し続けることができる。
【００５９】
随意に、ステップ210の前に、メモリ管理ユニットは、仮想アドレスを送るスレッドの優先度情報をさらに取得することができる。特に、優先度情報は、仮想アドレスを送るスレッドが、優先的に処理される必要があることを示すことができ、異なるスレッドによって送られた仮想アドレスに対応するデータパケットの異なる処理優先度を見分けるのに使われ、ページテーブルウォーク動作に使われるデータパケットおよび通常の読取り/書込み動作用のデータパケットの異なる処理優先度も示すことができる。
【００６０】
ステップ210:メモリ管理ユニットが仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送る。
【００６１】
たとえば、ステップ202〜ステップ208において仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDを取得した後、メモリ管理ユニットは、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDを、プロセッサチップのオンチップ通信プロトコルに準拠するデータパケット中にカプセル化し、データパケットをオンチップルータに送り、そうすることによって、オンチップルータは、データパケットを、データパケット中で運ばれるメモリ制御デバイスのIDに従って、対応するメモリ制御デバイスにルーティングすることができる。
【００６２】
別の例では、メモリ管理ユニットが、ステップ202〜ステップ208において仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDを取得した後、メモリ管理ユニットは、データパケットのカプセル化を担当しない場合がある。そうではなく、メモリ管理ユニットは、上記データをプロセッサコアまたは専用データパケットカプセル化モジュールに送る。プロセッサコアまたは専用データパケットカプセル化モジュールは、データをデータパケット中にカプセル化し、データパケットをオンチップルータに送る。オンチップルータは、データパケットを、データパケット中にカプセル化されたメモリ制御デバイスのIDに従って、対応するメモリ制御デバイスにルーティングする。
【００６３】
随意に、ステップ210の前に、メモリ管理ユニットがページテーブルウォーク動作識別子をさらに生成した場合、ステップ210におけるデータパケットは、ページテーブルウォーク動作識別子をさらに含み得る。
【００６４】
随意に、ステップ210の前に、メモリ管理ユニットが、仮想アドレスを送るスレッドのIDと、メモリ管理ユニットに対応するプロセッサのIDとをさらに取得した場合、ステップ210におけるデータパケットは、仮想アドレスを送るスレッドのIDと、メモリ管理ユニットに対応するプロセッサのIDとをさらに含み得る。
【００６５】
随意に、ステップ210の前に、メモリ管理ユニットが、仮想アドレスを送るスレッドの優先度情報をさらに取得した場合、ステップ210におけるデータパケットは、仮想アドレスを送るスレッドの優先度情報をさらに含み得る。
【００６６】
Table 2(表2)は、ステップ210におけるデータパケットの可能フレーム構造を示す。ページテーブルウォーク動作識別子、プロセッサのID、ならびにスレッドのIDおよび優先度情報はすべて、随意の内容である。
【００６７】
随意の解決策では、メモリ管理ユニットによってメモリ制御デバイスに送られるデータパケットは、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含み得ることに留意されたい。仮想アドレスの識別子は、仮想アドレスを示すのに使われる。メモリ管理ユニットは、仮想アドレスと仮想アドレスの識別子との間の対応を記憶する。つまり、メモリ管理ユニットは最初に、仮想アドレスと仮想アドレスの識別子との間の対応を記憶し、次いで、仮想アドレスの識別子をデータパケット中にカプセル化し、データパケットをメモリ制御デバイスに送り、それにより、メモリ制御デバイスが、ページテーブルウォーク動作を完了し、データパケットを戻したとき、データパケットは、仮想アドレスを運ぶ必要はないが、仮想アドレスの識別子をのみを運ぶ必要がある。
【００６８】
【表２】
0006636526.tif 000003
【００６９】
ステップ212:メモリ管理ユニットが、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信し、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得される。
【００７０】
たとえば、ステップ210において、メモリ管理ユニットがデータパケットを送った後、メモリ制御デバイスは、データパケットの内容に従ってページテーブルウォーク動作を実行して、仮想アドレスに対応する物理アドレスを取得する。メモリ管理ユニットは、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスをさらに受信する。
【００７１】
随意に、ステップ212において、メモリ管理ユニットは、メモリ制御デバイスによって送られたデータパケットを受信する。メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。
【００７２】
随意に、ステップ210においてメモリ管理ユニットによってメモリ制御デバイスに送られたデータパケットが、仮想アドレス、仮想アドレスの識別子、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをさらに含み得る場合、ステップ212においてメモリ制御デバイスによって送られたデータパケットは、仮想アドレスの識別子と、仮想アドレスに対応する物理アドレスとを運ぶ。
【００７３】
ステップ214:メモリ管理ユニットが、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する。
【００７４】
たとえば、物理アドレスを受信した後、メモリ管理ユニットは、トランスレーションルックアサイドバッファ中のCAMおよびRAMを更新する必要があり、それにより、VA[47:12]に従ってCAMを再度照会するとき、メモリ管理ユニットは、RAMアドレスを見つけ、RAMアドレスを使うことによって対応するRAMを照会して、物理アドレスを取得し、つまり、トランスレーションルックアサイドバッファにヒットすることができる。
【００７５】
随意に、ステップ212において、メモリ管理ユニットが、メモリ制御デバイスによって送られたデータパケットを受信した場合、そして、データパケットはページテーブルウォーク動作完了識別子をさらに含む。データパケットに従ってトランスレーションルックアサイドバッファを更新する前に、メモリ管理ユニットは、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認する必要がある。具体的には、様々なタイプのデータパケットがプロセッサチップ上で同時に送信され得るので、データパケットを受信したとき、プロセッサコアまたはメモリ管理ユニットは、データパケットのタイプを見分ける必要がある。したがって、データパケットは、データパケットのタイプを識別するのに使われるページテーブルウォーク動作完了識別子をさらに含む。ページテーブルウォーク動作完了識別子は、上記ページテーブルウォーク動作識別子に対応し、後者は、データパケットが、ページテーブルウォーク動作用に使われる内容を含むことを示すのに使われ、前者は、データパケットが、ページテーブルウォーク動作が完了した後に取得された内容を含むことを示すのに使われる。
【００７６】
随意に、ステップ212においてメモリ管理ユニットによって受信されたデータパケットがスレッドのIDをさらに含み、スレッドのIDが、仮想アドレスを送るスレッドのIDである場合、トランスレーションルックアサイドバッファを更新した後、メモリ管理ユニットは、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化する。特に、メモリ管理ユニットによって送られたデータパケットが、仮想アドレスを送るスレッドのIDを運ぶ場合、メモリ制御デバイスが、データパケットに対応する物理アドレスを取得した後、メモリ制御デバイスによってメモリ管理ユニットに送られたデータパケットはスレッドのIDをさらに運び、それにより、メモリ制御デバイスによって送られたデータパケットを受信し、トランスレーションルックアサイドバッファを更新した後、メモリ管理ユニットは、スレッドのIDに従って、対応するスレッドをアクティブ化すればよい。
【００７７】
Table 3(表3)は、メモリ制御デバイスによって送られたデータパケットの可能フレーム構造を示す。ページテーブルウォーク動作完了識別子、プロセッサのID、スレッドのID、および仮想アドレスはすべて、随意の内容である。
【００７８】
【表３】
0006636526.tif 000004
【００７９】
この方法実施形態では、メモリ管理ユニットが仮想アドレスを受信し、TLB missが起きた場合、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される様々なタイプの情報をデータパケット中にパックし、データパケットをオンチップルータに送り、そうすることにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信チャネルに対して引き起こされる負担が削減し、というのは、複数レベルページテーブルが照会される必要があるとき、複数のプロセッサコアのメモリ管理ユニットがすべて、データパケットを複数回送る必要があるからである。その上、メモリ管理ユニットとメモリ制御デバイスとの間の通信の回数量が削減され、むしろ、メモリ制御デバイスが、チップの外のメモリデバイスへの複数回のアクセスを完了するので、ページテーブルウォーク動作の完了も高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
【００８０】
方法実施形態2
この方法実施形態2はデータ処理方法を提供し、データ処理方法の概略フローチャートが図3に示されている。この方法は、メモリ制御デバイス、またはメモリ制御デバイスの機能が統合されている別のデバイスによって使われ得る。
【００８１】
ステップ402:メモリ制御デバイスが、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信する。
【００８２】
具体的には、メモリ制御デバイスは、メモリ管理ユニットによって送られたデータパケットを受信する。データパケットは、仮想アドレスおよびページテーブルベースアドレスを運ぶ。データパケットは、方法実施形態1のステップ210およびステップ210の随意の解決策において言及したデータパケットであってよい。
【００８３】
随意に、データパケットは、プロセッサのIDおよびスレッドのIDをさらに含む。プロセッサのIDは、ステップ402におけるメモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDである。
【００８４】
随意に、データパケットは、ページテーブルウォーク動作識別子をさらに含む。この場合、メモリ制御デバイスがステップ404を実施する前に、メモリ制御デバイスは、ページテーブルウォーク動作識別子に従って、データパケットは、ページテーブルウォーク動作を実行するのに使われると判断する。
【００８５】
随意に、データパケットは優先度情報をさらに含む。この場合、ステップ404が実施される前に、ページテーブルウォーク動作識別子に従って、データパケットは、ページテーブルウォーク動作を実行するのに使われることが最初に確認され、データパケットは次いで、ページテーブルウォーク動作キャッシュ、たとえば、Table 4(表4)に記憶される。相応して、メモリ制御デバイスは、別のデータパケット、たとえば、通常のデータ読取り/書込みデータパケットをさらに受信する場合もあり、これらのデータパケットは、通常のデータ読取り/書込みを示す識別子も含む。これらのデータパケットを受信した後、メモリ制御デバイスは、これらのデータパケットをアンパックし、アンパック後に取得された内容をデータ読取り/書込みキャッシュに記憶すればよい。
【００８６】
【表４】
0006636526.tif 000005
【００８７】
ステップ404:メモリ制御デバイスが、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行して、仮想アドレスに対応する物理アドレスを取得する。
【００８８】
具体的には、方法実施形態1に基づいて、仮想アドレス全体が5つのフィールドに分割され、VA[11:0]はページテーブル中のオフセットアドレスであり、VA[20:12]は、レベル3ページテーブルが位置するオフセットアドレスであり、VA[29:21]は、レベル2ページテーブルが位置するオフセットアドレスであり、VA[38:30]は、レベル1ページテーブルが位置するオフセットアドレスであり、VA[47:39]は、レベル0ページテーブルが位置するオフセットアドレスであり、ページテーブルベースアドレスはTTBR[47:12]である。
【００８９】
最初に、メモリ制御デバイスは、物理アドレス1={TTBR[47:12], VA[47:39], 000}を形成し、物理アドレス1に従って、ページテーブルを記憶するメモリデバイスを照会し、物理アドレス1に対応するページテーブル中の内容を読み取り、内容がボトムレベルのページテーブルであるかどうか判断する。たとえば、物理アドレス1に対応するページテーブル中の内容の最下位2ビットが01である場合、そのことは、ページテーブルがボトムレベルのページテーブルであることを示し、物理アドレス1に対応するページテーブルは、ページテーブルウォーク動作用に要求される物理アドレスを含む。物理アドレス1に対応するページテーブル中の内容の最下位2ビットが10である場合、そのことは、ページテーブルがボトムレベルのページテーブルではないことを示し、ページテーブル中の内容、たとえば、L0_Dspt[47:12]が読み取られる。
【００９０】
第2に、物理アドレス2={L0_Dspt[47:12], VA[38:30], 000}が形成され、上記プロセスが、ボトムレベルのページテーブルが見つかり、ボトムレベルのページテーブル中に含まれる物理アドレスが取得されるまで、再度繰り返される。4レベルのページテーブルが、例として使われる。レベル4ページテーブルにおいて取得される物理アドレスはL4_Dspt[47:12]であり、L4_Dspt[47:12]とVA[11:0]が、新たな48ビットアドレスを形成する。アドレスは、ステップ402における、仮想アドレスに対応する物理アドレスである。したがって、ページテーブルウォーク動作は完了する。実際、ページテーブルのレベルの量に関するとともに、ページテーブル中の内容が次のレベルのページテーブルそれともボトムレベルのページテーブルをポイントするのかを識別する複数の実装様式があり、ここでは単にいくつかの例について記載することに留意されたい。
【００９１】
随意に、ステップ402において受信されたデータパケットは優先度情報を含む。ステップ404の前に、データパケットがページテーブルウォーク動作キャッシュ中にキャッシュされている場合、ステップ404を実施する前に、メモリ制御デバイスは最初に、ページテーブルウォーク動作キャッシュ、たとえば、Table 4(表4)中の優先度情報の各断片に従って、優先的に処理されるべきである仮想アドレスおよびページテーブルベースアドレスを選択する。メモリ制御デバイスが、通常のデータ読取り/書込みデータパケットをさらに受信し、データパケットをデータ読取り/書込みキャッシュに記憶する場合、メモリ制御デバイスは、データ読取り/書込みキャッシュおよびページテーブルウォーク動作キャッシュ中に記憶されたタスクの優先度を包括的に考慮することによって、優先的に処理されるべきタスクをさらに選択すればよい。
【００９２】
随意に、ステップ406の前に、メモリ制御デバイスは、ページテーブルウォーク動作完了識別子をさらに生成する。ページテーブルウォーク動作完了識別子は、方法実施形態1のステップ212において、メモリ管理ユニットによって受信されたデータパケット中で運ばれるページテーブルウォーク動作識別子である。
【００９３】
ステップ406:メモリ制御デバイスが、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送る。
【００９４】
随意に、ステップ402におけるデータパケットがプロセッサのIDおよびスレッドのIDをさらに含む場合、ステップ404において物理アドレスを取得した後、メモリ制御デバイスは、物理アドレス、スレッドのID、およびプロセッサのIDをパケット中にさらにパックし、パケットをメモリ管理ユニットに送ってよい。メモリ制御デバイスによって送られるデータパケットは、方法実施形態1におけるTable 3(表3)に示すデータパケットに対応する。
【００９５】
随意に、ステップ406の前に、メモリ制御デバイスがページテーブルウォーク動作完了識別子をさらに生成する場合、メモリ制御デバイスは、ページテーブルウォーク動作完了識別子をメモリ管理ユニットにさらに送ってよく、そうすることにより、データパケットに従ってトランスレーションルックアサイドバッファを更新する前に、メモリ管理ユニットは、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認する必要がある。
【００９６】
この方法実施形態では、ページテーブルウォーク動作を実行するために要求される内容を受信した後、メモリ制御デバイスはページテーブルウォーク動作を実行し、それにより、ページテーブルウォーク動作のプロセス中のページテーブルへの複数回のアクセスは、メモリ制御デバイスとチップの外のメモリデバイスとの間で完了するだけでよい。メモリ管理ユニットとメモリ制御デバイスとの間で複数の対話が実施される必要はなく、そうすることによって、チップに対して通信負担が軽くなる。その上、メモリ制御デバイスとメモリデバイスとの間の直接対話により、効率も増大し、ページテーブルウォーク動作の完了が高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
【００９７】
デバイス実施形態1
本発明の装置実施形態1は、メモリ管理ユニット600を提供する。メモリ管理ユニット600の概略構造図が、図4に示されている。メモリ管理ユニット600は、受信モジュール602、処理モジュール604、および送付モジュール606を含む。
【００９８】
受信モジュール602は、仮想アドレスを受信するように構成される。
【００９９】
具体的には、受信モジュール602は、実際の稼動中プロセスにおいて、方法実施形態1におけるステップ202を実施する。
【０１００】
随意に、受信モジュール602は、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを取得するようにさらに構成される。詳細については、方法実施形態1のステップ210の前の、メモリ管理ユニットの随意のアクションを参照されたい。
【０１０１】
随意に、受信モジュール602は、仮想アドレスを送るスレッドの優先度情報を取得するようにさらに構成される。詳細については、方法実施形態1のステップ210の前の、メモリ管理ユニットの随意のアクションを参照されたい。
【０１０２】
処理モジュール604は、仮想アドレスがトランスレーションルックアサイドバッファにヒットしないと判断し、ページテーブルベースアドレスを取得するために、ページ・テーブル・ベース・アドレス・レジスタを読み取り、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得するように構成される。
【０１０３】
具体的には、処理モジュール604は、実際の稼動中プロセスにおいて、方法実施形態1における、ステップ204〜ステップ208と、ステップ204〜ステップ208の随意の解決策とを実施する。
【０１０４】
随意に、処理モジュール604は、ページテーブルウォーク動作識別子を生成するようにさらに構成される。ページテーブルウォーク動作識別子は、ページテーブルウォーク動作を示す。詳細については、方法実施形態1のステップ210の前の、メモリ管理ユニットの随意のアクションを参照されたい。
【０１０５】
送付モジュール606は、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDをメモリ制御デバイスに送るように構成される。
【０１０６】
具体的には、送付モジュール606は、実際の稼動中プロセスにおいて、方法実施形態1における、ステップ210と、ステップ210の随意の解決策とを実施する。
【０１０７】
随意に、処理モジュール604がページテーブルウォーク動作識別子を生成した場合、送付モジュール606は、ページテーブルウォーク動作識別子をメモリ制御デバイスに送るようにさらに構成される。詳細については、方法実施形態1におけるステップ210の随意のアクションを参照されたい。
【０１０８】
随意に、受信モジュール602が、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを取得した場合、送付モジュール606は、メモリ制御デバイスに、仮想アドレスを送るスレッドのIDおよびメモリ管理ユニットに対応するプロセッサのIDを一緒に送るようにさらに構成される。詳細については、方法実施形態1におけるステップ210の随意のアクションを参照されたい。
【０１０９】
随意に、受信モジュール602が、仮想アドレスを送るスレッドの優先度情報を取得した場合、送付モジュール606は、メモリ制御デバイスに、仮想アドレスを送るスレッドの優先度情報を送るようにさらに構成される。詳細については、方法実施形態1におけるステップ210の随意のアクションを参照されたい。
【０１１０】
処理モジュール604は、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信し、物理アドレスは、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行することによって、メモリ制御デバイスによって取得され、物理アドレスに従ってトランスレーションルックアサイドバッファを更新するようにさらに構成される。
【０１１１】
具体的には、処理モジュール604は、実際の稼動中プロセスにおいて、方法実施形態1におけるステップ212およびステップ214をさらに実施する。
【０１１２】
随意に、処理モジュール604が、メモリ制御デバイスによって送られるとともに仮想アドレスに対応している物理アドレスを受信することは、処理モジュール604によって、メモリ制御デバイスによって送られたデータパケットを受信することを含み、メモリ制御デバイスによって送られたデータパケットは、仮想アドレスと、仮想アドレスに対応する物理アドレスとを運ぶ。代替として、受信モジュール602は、メモリ制御デバイスによって送られたデータパケットを受信し、受信モジュール602は、処理モジュール604に、データパケット中で運ばれる仮想アドレスおよび仮想アドレスに対応する物理アドレスを送る。
【０１１３】
随意に、メモリ制御デバイスによって送られたデータパケットはページテーブルウォーク動作完了識別子をさらに含み、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する前に、処理モジュール604は、ページテーブルウォーク動作完了識別子に従って、メモリ制御デバイスによって送られたデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることをさらに確認する。代替として、受信モジュール602によって受信されたデータパケットはページテーブルウォーク動作完了識別子をさらに含み、受信モジュール602は、処理モジュール604に、データパケット中で運ばれる仮想アドレスおよび仮想アドレスに対応する物理アドレスと一緒にページテーブルウォーク動作識別子を送り、処理モジュール604は、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認し、物理アドレスに従ってトランスレーションルックアサイドバッファを更新する。
【０１１４】
随意に、メモリ制御デバイスによって送られたデータパケットはスレッドのIDをさらに含み、処理モジュール604は、物理アドレスに従ってトランスレーションルックアサイドバッファを更新した後、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化するようにさらに構成される。代替として、受信モジュール602によって受信されたデータパケットはスレッドのIDをさらに含み、受信モジュール602は、処理モジュール604に、データパケット中で運ばれる仮想アドレスおよび仮想アドレスに対応する物理アドレスと一緒にスレッドのIDを送り、物理アドレスに従ってトランスレーションルックアサイドバッファを更新した後、処理モジュール604は、スレッドのIDに従って、スレッドのIDに対応するスレッドをアクティブ化する。
【０１１５】
このデバイス実施形態は、メモリ管理ユニットを提供する。メモリ管理ユニットが仮想アドレスを受信し、TLB missが起きた場合、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される様々なタイプの情報をデータパケット中にパックし、データパケットをオンチップルータに送り、そうすることにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信チャネルに対して引き起こされる負担が削減し、というのは、複数レベルページテーブルが照会される必要があるとき、複数のプロセッサコアのメモリ管理ユニットがすべて、データパケットを複数回送る必要があるからである。その上、メモリ管理ユニットとメモリ制御デバイスとの間の通信の回数量が削減され、むしろ、メモリ制御デバイスが、チップの外のメモリデバイスへの複数回のアクセスを完了するので、ページテーブルウォーク動作の完了も高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
【０１１６】
デバイス実施形態2
本発明のデバイス実施形態2は、メモリ制御デバイス800を提供する。メモリ制御デバイス800の概略構造図が、図5に示されている。メモリ制御デバイスは、受信モジュール802、処理モジュール804、および送付モジュール806を含む。
【０１１７】
受信モジュール802は、メモリ管理ユニットによって送られた仮想アドレスおよびページテーブルベースアドレスを受信するように構成される。
【０１１８】
具体的には、図5に示すように、オンチップルータからデータパケットを取得した後、受信モジュール802は、データパケットを解析して、データパケット中で運ばれる仮想アドレスおよびページテーブルベースアドレスを取得し、仮想アドレスおよびページテーブルベースアドレスを処理モジュール804に送る。
【０１１９】
随意に、データパケットは、プロセッサのIDおよびスレッドのIDをさらに含む。プロセッサのIDは、仮想アドレスおよびページテーブルベースアドレスを送るメモリ管理ユニットに対応するプロセッサのIDであり、スレッドのIDは、仮想アドレスを送るスレッドのIDである。
【０１２０】
随意に、データパケットは、ページテーブルウォーク動作識別子をさらに含む。受信モジュール802は、データパケットを解析して、ページテーブルウォーク動作識別子、仮想アドレス、およびページテーブルベースアドレスを取得し、ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断し、次いで、仮想アドレスおよびページテーブルベースアドレスを処理モジュール804に送るようにさらに構成される。受信モジュール802によって受信されたデータパケットが、通常のデータ読取り/書込み動作を実行するためのデータパケットである場合、データパケットは、メモリ制御デバイスが異なるタイプのデータパケットを受信した後、異なるタイプのデータパケットを異なるやり方で識別し、処理するためにメモリ制御デバイスによって使われる別の動作識別子を運ぶことができる。
【０１２１】
処理モジュール804は、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行して、仮想アドレスに対応する物理アドレスを取得するように構成される。
【０１２２】
具体的には、処理モジュール804は、仮想アドレスおよびページテーブルベースアドレスに従ってメモリデバイスにアクセスし、仮想アドレスおよびページテーブルベースアドレスに従ってページテーブルウォーク動作を実行する。具体的な動作詳細については、方法実施形態2におけるステップ404の内容を参照されたい。
【０１２３】
随意に、処理モジュール804は、ページテーブルウォーク動作完了識別子を生成するようにさらに構成され、メモリ管理ユニットは、ページテーブルウォーク動作完了識別子に従って、ページテーブルウォーク動作完了識別子を運ぶデータパケットが、トランスレーションルックアサイドバッファを更新するのに使われることを確認する。
【０１２４】
送付モジュール806は、メモリ管理ユニットに、仮想アドレスに対応する物理アドレスを送るように構成される。
【０１２５】
随意に、受信モジュール802によって受信されたデータパケットがプロセッサのIDおよびスレッドのIDを含む場合、送付モジュール806は、物理アドレス、スレッドのID、およびプロセッサのIDをパケットの中にパックし、パケットをメモリ管理ユニットに送るようにさらに構成される。
【０１２６】
随意に、処理モジュール804が、ページテーブルウォーク動作完了識別子をさらに生成した場合、送付モジュール806は、ページテーブルウォーク動作完了識別子をデータパケットの中にカプセル化し、データパケットをメモリ管理ユニットに送るようにさらに構成される。
【０１２７】
随意に、図6に示すように、データパケットが優先度情報およびページテーブルウォーク動作識別子をさらに含む場合、メモリ制御デバイス800は、ページテーブルウォーク動作キャッシュ808をさらに含む。ページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断した後、受信モジュール802は、優先度情報、仮想アドレス、およびページテーブルベースアドレスを、記憶のためにページテーブルウォーク動作キャッシュ808に送る。処理モジュール804は、ページテーブルウォーク動作キャッシュ808に記憶された優先度情報の各断片に従って、最も高い優先度をもつ優先度情報に対応する仮想アドレスおよびページテーブルベースアドレスを判断し、ページテーブルウォーク動作を実行する。
【０１２８】
このデバイス実施形態は、メモリ制御デバイスを提供する。ページテーブルウォーク動作を実行するために要求される内容を含むデータパケットを受信した後、メモリ制御デバイスはページテーブルウォーク動作を実行し、それにより、ページテーブルウォーク動作のプロセス中の、ページテーブルへの複数回のアクセスは、メモリ制御デバイスとチップの外のメモリデバイスとの間で完了するだけでよい。メモリ管理ユニットとメモリ制御デバイスとの間で複数の対話が実施される必要はなく、そうすることによって、チップに対して通信負担が軽くなる。その上、メモリ制御デバイスとメモリデバイスとの間の直接対話により、効率も増大し、ページテーブルウォーク動作の完了が高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
【０１２９】
デバイス実施形態3
本発明のデバイス実施形態3は、デバイス実施形態1における任意の随意のメモリ管理ユニットを含むとともに、デバイス実施形態2における任意の随意のメモリ制御デバイスをさらに含むプロセッサチップと、メモリ制御デバイスとメモリ管理ユニットとの間の通信接続を確立するように構成された少なくとも1つのオンチップルータとを提供する。
【０１３０】
プロセッサチップの実際の稼動中、最初に、メモリ管理ユニットは、仮想アドレスを受信し、TLB missが起きた後、ページテーブルウォーク動作を実行するために要求される情報をオンチップルータに送り、オンチップルータは、必要な情報を対応するメモリ制御デバイスに送る。次いで、ページテーブルウォーク動作を実行するために要求される情報を運ぶデータパケットを受信した後、メモリ制御デバイスは、ページテーブルウォーク動作を実行するために要求されるとともにデータパケット中で運ばれる情報に従ってページテーブルウォーク動作を実行して、物理アドレスを取得し、物理アドレスをパケットの中にパックし、パケットをオンチップルータに送る。オンチップルータがデータパケットをメモリ管理ユニットにルーティングした後、メモリ管理ユニットは、物理アドレスに従ってトランスレーションルックアサイドバッファを更新し得る。プロセスの具体的な実装詳細については、方法実施形態1および2ならびにデバイス実施形態1および2を参照されたい。詳細について、ここで再度は記載しない。
【０１３１】
本実施形態は、プロセッサチップ1000の最適化された作業手順について記述する。プロセッサチップ1000は、メモリ管理ユニット1002と、少なくとも2つのオンチップルータ、つまり、オンチップルータ1004およびオンチップルータ1022と、メモリ制御デバイス1006とを含む。
【０１３２】
ステップ1:メモリ管理ユニット1002は、仮想アドレスAを受信し、仮想アドレスAに従ってトランスレーションルックアサイドバッファを照会し、TLB missが起こる。詳細については、方法実施形態1におけるステップ202およびステップ204を参照されたい。
【０１３３】
ステップ2:メモリ管理ユニット1002は、ページテーブルウォーク動作識別子を生成し、ページ・テーブル・ベース・アドレス・レジスタを読み取ってページテーブルベースアドレスを取得し、ページテーブルベースアドレスに従って、ページテーブルベースアドレスに対応するメモリ制御デバイスのIDを取得する。この例では、メモリ制御デバイス1006は、ページテーブルベースアドレスに対応するメモリ制御デバイスであると想定される。詳細については、方法実施形態1におけるステップ208を参照されたい。
【０１３４】
ステップ3:メモリ管理ユニット1002は、仮想アドレスを送るスレッドのID、スレッドに対応する優先度情報、およびメモリ管理ユニット1002に対応するプロセッサのIDを取得し、オンチップルータ1022に、これらの情報断片を、仮想アドレス、ページテーブルベースアドレス、およびメモリ制御デバイスのIDと一緒に送る。具体的には、上記情報はデータパケットの形で送られてよく、データパケットの構造については、Table 2(表2)を参照されたい。詳細については、方法実施形態1におけるステップ210およびステップ210の前の随意のステップを参照されたい。
【０１３５】
ステップ4:オンチップルータ1022および別のオンチップルータは、メモリ制御デバイスのIDに従って、上記情報を運ぶデータパケットをオンチップルータ1004にルーティングし、オンチップルータ1004は、データパケットをメモリ制御デバイス1006に送る。
【０１３６】
ステップ5:メモリ制御デバイス1006がデータパケットを受信する。受信モジュール1008は最初に、データパケット中で運ばれたページテーブルウォーク動作識別子に従って、データパケットが、ページテーブルウォーク動作を実行するのに使われると判断し、次いで、データパケットを解析し、データパケットの内容をページテーブルウォーク動作キャッシュ1012に記憶する。相応して、受信モジュール1008によって受信されたデータパケット中で運ばれる識別子が、データパケットが通常のデータ読取り/書込み動作パケットであることを示す場合、受信モジュール1008は、データパケットを解析し、データパケットをデータキャッシュ1010に記憶する。通常のデータ読取り/書込み動作はページテーブルウォーク動作とは異なるので、ここで、2つの異なるキャッシュが、データパケットの内容を記憶するのに使われてよい。実際には、1つのキャッシュが使われてもよく、異なる動作タイプが、処理中に見分けられる。ページテーブルウォーク動作キャッシュ1012に記憶されたデータパケットの内容が、Table 4(表4)に示されている。詳細については、方法実施形態2におけるステップ402およびステップ402の随意のステップを参照されたい。
【０１３７】
ステップ6:ページテーブルウォーク処理モジュール1016が、ページテーブルウォーク動作キャッシュ1012に記憶されているとともに処理されるべき各ページテーブルウォーク動作についての情報に対応する優先度情報に従って、処理優先度が最も高いページテーブルウォーク動作を選択する。実際には、優先度選択は、ページテーブルウォーク動作キャッシュ1012とデータキャッシュ1010の両方において実施されてもよいことに留意されたい。ページテーブルウォーク動作処理モジュール1016とデータ処理モジュール1014の両方が、それぞれの動作を処理する準備ができているので、データセレクタ(Multiplexer)1018は、メモリコントローラ1020と対話するために、2つのモジュールのうちの1つを選択する。その上、ここで、メモリコントローラ1020の機能は、従来のメモリコントローラのものと同様であり、つまり、従来のメモリコントローラが、このデバイス実施形態におけるメモリ制御デバイス1006に統合されていることに留意されたい。その上、ここで、ページテーブルウォーク処理モジュール1016、データセレクタ1018、およびメモリコントローラ1020は、デバイス実施形態2における処理モジュール804に統合されてよい。実際には、これらの3つのモジュールは、別々に展開されてもよい。
【０１３８】
ステップ7:ページテーブルウォーク処理モジュール1016が、データセレクタ1018を使うことによってメモリコントローラ1020にアクセスし、ページテーブルウォーク動作キャッシュ1012に記憶された仮想アドレスAおよび対応するページテーブルベースアドレスに従ってページテーブルウォーク動作を完了し、仮想アドレスAに対応する物理アドレスBを取得する。詳細については、方法実施形態2におけるステップ404を参照されたい。
【０１３９】
ステップ8:ページテーブルウォーク動作処理モジュール1016が、ページテーブルウォーク動作完了識別子を生成し、送付モジュール1022に、ページテーブルウォーク動作完了識別子を、仮想アドレスAに対応するデータパケット中で運ばれる物理アドレスB、プロセッサのID、およびスレッドのIDと一緒に送り、送付モジュール1022が、ページテーブルウォーク動作完了識別子、プロセッサのID、スレッドのID、および物理アドレスBをデータパケットの中にカプセル化し、データパケットをオンチップルータ1004に送る。データパケットの構造については、Table 3(表3)を参照されたい。
【０１４０】
ステップ9:オンチップルータ1004および別のオンチップルータが、データパケット中で運ばれるプロセッサのIDに従って、データパケットをオンチップルータ1022にルーティングし、オンチップルータ1022がデータパケットをメモリ管理ユニット1002に送る。
【０１４１】
ステップ10:データパケットを受信した後、メモリ管理ユニット1002は、ページテーブルウォーク動作完了識別子に従って、データパケットが、トランスレーションルックアサイドバッファを更新するのに使われると判断し、データパケットを解析して、データパケット中で運ばれる仮想アドレスAおよび物理アドレスBを取得し、仮想アドレスAおよび物理アドレスBに従って、トランスレーションルックアサイドバッファの更新を完了する。詳細については、方法実施形態1におけるステップ214を参照されたい。
【０１４２】
ステップ11:トランスレーションルックアサイドバッファの更新を完了した後、メモリ管理ユニット1002は、スレッドのものであるとともにデータパケット中で運ばれるIDに従って、スレッドのIDを有効にし、そうすることにより、ステップ1においてTLB missが起こると、スレッドが実行され続けることができないために中断されているスレッドが実行され続けてよい。この場合、スレッドは、仮想アドレスに対応する物理アドレスにアクセスする必要がある。トランスレーションルックアサイドバッファの更新が完了しているので、このときはトランスレーションルックアサイドバッファのアクセスにおいて、TLB hitが明確に起こる。したがって、スレッドは実行され続けてよい。
【０１４３】
このデバイス実施形態は、プロセッサチップを提供する。プロセッサチップ上のメモリ管理ユニットが仮想アドレスを受信し、TLB missが起きた場合、メモリ管理ユニットは、ページテーブルウォーク動作を実行するために要求される情報を対応するメモリ制御デバイスに送り、対応するメモリ制御デバイスはページテーブルウォーク動作を完了し、それにより、ページテーブルウォーク動作は、プロセッサコアに対応するメモリ管理ユニットによって実行されるのではなく、プロセッサチップ上のメモリ制御デバイスのみによって実行され、そうすることによって、オンチップ通信ネットワーク上で引き起こされる負担を削減し、というのは、複数のプロセッサコアのメモリ管理ユニットはすべて、複数レベルページテーブルが照会される必要があるとき、データパケットを複数回送る必要があるからである。その上、メモリ管理ユニットとメモリ制御デバイスとの間の通信の回数量が削減され、むしろ、メモリ制御デバイスが、チップの外のメモリデバイスへの複数回のアクセスを完了するので、ページテーブルウォーク動作の完了も高速化され、そうすることによって、ページテーブルウォーク動作の全体的効率を向上するのを助ける。
【０１４４】
上記実施形態において、各実施形態の記述はそれぞれの焦点を有する。実施形態において詳しく記載されていない部分については、他の実施形態における関連記述に対して参照を行えばよい。方法実施形態1における実装詳細およびデバイス実施形態1におけるメモリ管理ユニットの機能は本質的に同じであり、方法実施形態2における実装詳細およびデバイス実施形態2におけるメモリ制御デバイスの機能は本質的に同じであることに留意されたい。デバイス実施形態1およびデバイス実施形態2において記載したデバイスは、デバイス実施形態3を形成するように、プロセッサチップ上で統合される。したがって、これらの3つの間の技術的詳細は互いを参照する場合がある。
【０１４５】
最後に、上記実施形態は、本発明を限定することではなく、本発明の技術的解決策を記載することを意図しているにすぎないことに留意されたい。本発明を、上記実施形態を参照して詳しく記載したが、当業者は、本発明の実施形態の技術的解決策の範囲から逸脱することなく、上記実施形態に記載した技術的解決策に対する修正を依然として行っても、そのいくつかの技術的特徴に対する等価な置換えを行ってもよいことを理解されたい。
【符号の説明】
【０１４６】
600  メモリ管理ユニット
602  受信モジュール
604  処理モジュール
606  送付モジュール
800  メモリ制御デバイス
802  受信モジュール
804  処理モジュール
806  送付モジュール
808  ページテーブルウォーク動作キャッシュ
1000  プロセッサチップ
1002  メモリ管理ユニット
1004  オンチップルータ
1006  メモリ制御デバイス
1008  受信モジュール
1010  データキャッシュ
1012  ページテーブルウォーク動作キャッシュ
1014  データ処理モジュール
1016  ページテーブルウォーク処理モジュール、ページテーブルウォーク動作処理モジュール
1018  データセレクタ(Multiplexer)
1020  メモリコントローラ
1022  オンチップルータ、送付モジュール
【図１】
0006636526.tif 000006
【図２】
0006636526.tif 000007
【図３】
0006636526.tif 000008
【図４】
0006636526.tif 000009
【図５】
0006636526.tif 000010
【図６】
0006636526.tif 000011
【図７】
0006636526.tif 000012