(57)【特許請求の範囲】
【請求項１】
拡張メモリにアクセスするための方法であり、コンピュータは、メモリバスを使用することにより拡張メモリシステムに接続され、前記拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、前記コンピュータは、前記拡張メモリに記憶されたアクセス対象のデータにアクセスする必要がある方法であって、
前記拡張メモリコントローラにより、前記コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するステップであり、全ての前記メモリアクセス要求に含まれるアクセスアドレスは、異なる行アドレス及び同じbankアドレスを含み、前記bankアドレスは、前記拡張メモリ内の前記アクセス対象のデータの物理アドレスのbankアドレスと同じであり、N≧1且つNは整数であるステップと、
前記拡張メモリコントローラにより、前記N+1個のメモリアクセス要求のうち第１のメモリアクセス要求を受信したときに、前記第１のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定し、前記アクセス対象のデータを取得するための読み取り要求を前記拡張メモリに送信し、特定の応答メッセージを前記プロセッサシステムに返信するステップであり、前記読み取り要求は、物理アドレスを含むステップと、
前記拡張メモリにより返信される前記アクセス対象のデータを受信する前に、前記N+1個のメモリアクセス要求のうち前記第１のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、前記拡張メモリコントローラにより、メモリバスプロトコルで指定されたアクセス遅延内に、前記拡張メモリコントローラが前記アクセス対象のデータを取得していないことを示す特定の応答メッセージを前記プロセッサシステムに返信するステップと、
前記拡張メモリコントローラにより、前記拡張メモリにより返信された前記アクセス対象のデータを受信した後に、前記アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージを前記プロセッサシステムに返信するのを停止するステップと、
前記拡張メモリコントローラにより、前記N+1個のメモリアクセス要求のうち他のメモリアクセス要求を受信したときに、前記データバッファから前記アクセス対象のデータを読み取り、前記アクセス対象のデータを前記プロセッサシステムに返信するステップと
を含む方法。
【請求項２】
前記拡張メモリコントローラにより、全ての前記N+1個のメモリアクセス要求に含まれる前記アクセスアドレスと前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスとの間のマッピング関係を予め設定するステップを更に含み、
前記拡張メモリコントローラにより、前記第１のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定することは、
前記拡張メモリコントローラにより、前記物理アドレスを取得するために、前記第１のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記マッピング関係を問い合わせることを含む、請求項１に記載の方法。
【請求項３】
前記拡張メモリコントローラにより、前記第１のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定した後に、
前記拡張メモリコントローラにより、前記データバッファにレコードを作成するステップであり、前記レコードは、タグフィールド及びデータフィールドを含み、前記タグフィールドを前記物理アドレスに設定するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記レコードは、有効性フィールドを更に含み、
前記拡張メモリコントローラにより、前記有効性フィールドを無効に設定するステップを更に含む、請求項３に記載の方法。
【請求項５】
前記N+1個のメモリアクセス要求のうち前記第１のメモリアクセス要求の後のメモリアクセス要求が受信される毎に、
前記拡張メモリコントローラにより、前記物理アドレスを取得するために、全ての前記メモリアクセス要求で搬送された前記アクセスアドレスに従って前記マッピング関係を問い合わせるステップと、
前記物理アドレスに従って前記データバッファ内の前記レコードを問い合わせ、前記レコード内の前記有効性フィールドが無効であると決定したときに、前記特定の応答メッセージを生成するステップと
を更に含む、請求項４に記載の方法。
【請求項６】
前記拡張メモリコントローラにより、前記拡張メモリにより返信された前記アクセス対象のデータを受信した後に、前記アクセス対象のデータをデータバッファに書き込むことは、
前記拡張メモリコントローラにより、前記物理アドレスに対応する前記レコードを求めて前記データバッファを検索し、前記レコード内の前記データフィールドを前記アクセス対象のデータに設定し、前記有効性フィールドを有効に設定することを含む、請求項４に記載の方法。
【請求項７】
拡張メモリにアクセスするための方法であり、コンピュータは、メモリバスを使用することにより拡張メモリシステムに接続され、前記拡張メモリシステムは、拡張メモリコントローラと前記拡張メモリとを含む方法であって、前記コンピュータが前記拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、
前記コンピュータ内のプロセッサシステムにより、前記アクセス対象のデータの仮想アドレスを受信するステップと、
前記プロセッサシステムにより、前記アクセス対象のデータの前記仮想アドレスに従ってN+1個のメモリアクセス要求を生成するステップであり、前記N+1個のメモリアクセス要求に含まれるアクセスアドレスは、異なる行アドレス及び同じbankアドレスを含み、前記bankアドレスは、前記拡張メモリ内の前記アクセス対象のデータの物理アドレスのbankアドレスと同じであり、N≧1且つNは整数であるステップと、
前記プロセッサシステムにより、前記N+1個のメモリアクセス要求を前記拡張メモリコントローラに送信するステップと、
前記プロセッサシステムにより、前記拡張メモリコントローラから、前記拡張メモリコントローラが前記アクセス対象のデータを取得していないことを示す特定の応答メッセージを受信するステップであり、前記特定の応答メッセージは、メモリバスプロトコルで指定されたアクセス遅延内に前記拡張メモリコントローラにより送信されるステップと、
前記プロセッサシステムにより、前記拡張メモリコントローラから前記アクセス対象のデータを受信するステップと
を含む方法。
【請求項８】
前記プロセッサシステムにより、前記アクセス対象のデータの前記仮想アドレスに従ってN+1個のメモリアクセス要求を生成する前に、
前記コンピュータにより前記拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定するステップであり、前記コンピュータにより前記拡張メモリからデータを取得するための前記遅延パラメータは、以下のパラメータ、すなわち、前記メモリアクセス要求を前記拡張メモリコントローラから前記拡張メモリに送信する遅延tPD1、前記メモリアクセス要求により読み取られたデータを前記拡張メモリから前記拡張メモリコントローラに送信する遅延tPD2、又は前記プロセッサシステムにより送信される２つの連続するメモリアクセス要求の間の時間間隔T_Intervalのうちいずれか１つ又はいずれかの組み合わせを含むステップを更に含む、請求項７に記載の方法。
【請求項９】
前記コンピュータにより前記拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定することは、
前記値Nを決定し、N≧[(tPD1+tPD2)/T_Interval]且つ[*]が丸め関数であることを含む、請求項８に記載の方法。
【請求項１０】
２つの連続するメモリアクセス要求の間の前記時間間隔T_Intervalは、  tGAPmin=tRCD+tRTP+tRP又はT_Fenceである、請求項８又は９に記載の方法。
【請求項１１】
前記プロセッサシステムにより、前記アクセス対象のデータの前記仮想アドレスに従ってN+1個のメモリアクセス要求を生成することは、
前記アクセス対象のデータの前記仮想アドレスAddr_Virtualに従って仮想対物理アドレス変換を実行し、これにより、前記仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得し、
前記物理アドレスAddr_Physicalに従ってN個のアクセスアドレスAddr_Physical(n)を生成し、nは整数且つ1≦n≦Nであり、前記N個のアクセスアドレスの行アドレスはAddr_Physical_Row(n)=n*M+Addr_Physical_Rowであり、nは整数且つ1≦n≦Nであり、Mは前記拡張メモリに含まれるメモリ行の数量であり、Addr_Physical_Rowは前記物理アドレスAddr_Physicalの行アドレスであり、N個の物理アドレスのそれぞれの前記行アドレス以外のアドレスは前記物理アドレスAddr_Physicalの前記行アドレス以外のアドレスと同じであり、
前記プロセッサシステムにより、Addr_Physical及びAddr_Physical(n)に従って前記N+1個のメモリアクセス要求を生成し、nは整数且つ1≦n≦Nであることを含む、請求項７乃至１０のうちいずれか１項に記載の方法。
【請求項１２】
コンピュータ内のプロセッサシステムによる拡張メモリ内のアクセス対象のデータへのアクセスに適用される拡張メモリコントローラであり、前記コンピュータ内の前記プロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、前記拡張メモリシステムは、前記拡張メモリコントローラと前記拡張メモリとを含む拡張メモリコントローラであって、
前記コンピュータ内の前記プロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するように構成された受信モジュールであり、全ての前記メモリアクセス要求に含まれるアクセスアドレスは、異なる行アドレス及び同じbankアドレスを含み、前記bankアドレスは、前記拡張メモリ内の前記アクセス対象のデータの物理アドレスのbankアドレスと同じであり、N≧1且つNは整数である受信モジュールと、
前記N+1個のメモリアクセス要求のうち第１のメモリアクセス要求が受信されたときに、前記第１のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定し、前記アクセス対象のデータを取得するための読み取り要求を生成し、前記読み取り要求は、前記物理アドレスを含み、
前記拡張メモリにより返信される前記アクセス対象のデータが受信される前に、前記N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に、前記拡張メモリコントローラが前記アクセス対象のデータを取得していないことを示す特定の応答メッセージを生成し、
前記拡張メモリにより返信された前記アクセス対象のデータが受信された後に、前記アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージを前記プロセッサシステムに返信するのを停止し、
前記N+1個のメモリアクセス要求のうち他のメモリアクセス要求が受信されたときに、前記データバッファから前記アクセス対象のデータを読み取り、前記アクセス対象のデータを送信モジュールに送信する
ように構成された実行モジュールと、
前記読み取り要求を前記拡張メモリに送信し、前記特定の応答メッセージを前記プロセッサシステムに返信し、
前記拡張メモリにより返信される前記アクセス対象のデータが受信される前に、前記N+1個のメモリアクセス要求のうち前記第１のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、前記メモリバスプロトコルで指定された前記アクセス遅延内に前記特定の応答メッセージを前記プロセッサシステムに返信し、
前記実行モジュールから前記アクセス対象のデータを受信し、前記アクセス対象のデータを前記プロセッサシステムに送信する
ように構成された前記送信モジュールと
を含む拡張メモリコントローラ。
【請求項１３】
前記実行モジュールは、
全ての前記N+1個のメモリアクセス要求に含まれる前記アクセスアドレスと前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスとの間のマッピング関係を予め設定し、
前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスを取得するために、前記第１のメモリアクセス要求で搬送された前記アクセスアドレスに従って、前記第１のメモリアクセス要求に含まれる前記アクセスアドレスと前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスとの間の前記マッピング関係を問い合わせるように更に構成される、請求項１２に記載の拡張メモリコントローラ。
【請求項１４】
前記実行モジュールは、
前記第１のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスが決定された後に、前記データバッファにレコードを作成し、前記レコードは、タグフィールド及びデータフィールドを含み、前記タグフィールドを前記物理アドレスに設定するように更に構成される、請求項１３に記載の拡張メモリコントローラ。
【請求項１５】
前記レコードは、有効性フィールドを更に含み、
前記実行モジュールは、前記レコード内の前記有効性フィールドを無効に設定するように更に構成される、請求項１４に記載の拡張メモリコントローラ。
【請求項１６】
前記実行モジュールは、
前記N+1個のメモリアクセス要求のうち前記第１のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、前記物理アドレスを取得するために、全ての前記メモリアクセス要求で搬送された前記アクセスアドレスに従って前記マッピング関係を問い合わせ、
前記物理アドレスに従って前記データバッファ内の前記レコードを問い合わせ、
前記レコード内の前記有効性フィールドが無効であると決定されたときに、前記特定の応答メッセージを生成するように更に構成される、請求項１５に記載の拡張メモリコントローラ。
【請求項１７】
前記実行モジュールは、前記拡張メモリにより返信された前記アクセス対象のデータが受信された後に、前記物理アドレスに対応する前記レコードを求めて前記データバッファを検索し、前記レコード内の前記データフィールドを前記アクセス対象のデータに設定し、前記有効性フィールドを有効に設定するように更に構成される、請求項１５に記載の拡張メモリコントローラ。
【請求項１８】
拡張メモリを含むコンピュータシステムであって、
プロセッサシステムと、
メインメモリと、
請求項１２乃至１７のうちいずれか１項に記載の拡張メモリコントローラと、
前記拡張メモリと
を含み、
前記拡張メモリコントローラは、前記拡張メモリに接続され、前記拡張メモリコントローラは、メモリインタフェースを使用することにより前記プロセッサシステムに接続され、前記プロセッサシステムは、前記メインメモリに接続され、前記メインメモリは、実行可能命令を記憶するように構成され、前記プロセッサシステムは、前記メインメモリに記憶された前記実行可能命令を実行するように構成され、これにより、前記プロセッサシステムは、請求項７乃至１１のうちいずれか１項に従って、前記コンピュータにより前記拡張メモリシステム内の前記拡張メモリにアクセスするための方法を実行するコンピュータシステム。
【請求項１９】
１つ以上のコンピュータ実行可能命令を含むコンピュータプログラムを有するコンピュータ読み取り可能記録媒体であって、前記１つ以上のコンピュータ実行可能命令は、コンピュータシステムの拡張メモリコントローラ上で実行されたときに、前記コンピュータシステムに請求項１乃至６のうちいずれか１項に記載の方法を実行させるコンピュータ読み取り可能記録媒体。
【請求項２０】
１つ以上のコンピュータ実行可能命令を含むコンピュータプログラムを有するコンピュータ読み取り可能記録媒体であって、前記１つ以上のコンピュータ実行可能命令は、コンピュータシステムのプロセッサ上で実行されたときに、前記コンピュータシステムに請求項７乃至１１のうちいずれか１項に記載の方法を実行させるコンピュータ読み取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
この出願は、2015年4月23日に「METHOD  FOR  ACCESSING  EXTENDED  MEMORY,  DEVICE,  AND  SYSTEM」という名称で中国特許庁に出願された中国特許出願第201510198452.X号の優先権を主張し、この全内容を参照により援用する。
【０００２】
［技術分野］
本発明は、コンピュータ分野に関し、特に拡張メモリにアクセスするための方法、デバイス及びシステムに関する。
【背景技術】
【０００３】
ビッグデータ（Big  Data）のアプリケーションは、コンピュータ処理能力にとってより高い要件を有する。コンピュータ処理能力を改善する重要な指標は、メモリ容量の改善である。適用シナリオでは、既存のメモリチップの限られた集積度のため、複数のメモリチップは、メモリ容量を拡張するために、拡張チップを使用することにより接続される。他の適用シナリオでは、いくつかの特定のアプリケーションに対する加速処理を実行するために、アプリケーション加速チップがより多くのコンピュータシステムに追加される。例えば、通常、GPU（Graphic  Processing  Unit、グラフィック処理ユニット）は、グラフィカルデータ及び画像データの処理中の加速のために使用される。一般的に、このようなアプリケーション加速チップは、ASIC（Application-Specific  Integrated  Circuit、特定用途向け集積回路）又はFPGA（Field  Programmable  Gate  Array、フィールドプログラマブルゲートアレイ）を使用することにより実現され得る。
【０００４】
前述の２つの適用シナリオが、図１に基づいて説明され得る。プロセッサ（Processor）システム101、システムメモリ102、メモリ拡張チップ103及び拡張メモリ104が図１に含まれ、メモリコントローラ1011がプロセッサシステム101に統合される。システムメモリ102は、メモリバスを使用することによりプロセッサシステム101に接続され、拡張メモリ104は、メモリバスを使用することによりメモリ拡張チップ103に接続され、プロセッサシステム101は、複数の方式でメモリコントローラ1011を通じてメモリ拡張チップ103に接続され得る。
【０００５】
第１の既存の技術では、実現方式は、プロセッサシステム101とメモリ拡張チップ103とを接続するためにI/Oバスを使用することである。一般的に使用されるI/Oバスは、PCI-E（Peripheral  Component  Interconnect-Express、ペリフェラル・コンポーネント・インターコネクト・エクスプレス）バス、Intel  QPI（Quick  Path  Interconnect、クイック・パス・インターコネクト）バス又はAMD  HT（HyperTransport、ハイパートランスポート）バスを含む。I/Oバスを使用することにより、比較的高い遅延が存在し、データアクセス遅延を補償するために、洗練したパイプライン設計がメモリ拡張チップ103に必要になる。
【０００６】
第２の既存の技術では、実現方式は、プロセッサシステム101とメモリ拡張チップ103とを接続するためにメモリバスを使用することである。メモリバスの使用は、メモリ拡張チップ103及びプロセッサシステム101が拡張メモリ104を直接共有することを可能にし、これにより、メモリアクセス遅延が比較的小さい。
【０００７】
第２の既存の技術における技術手段は、以下の問題を有する。プロセッサシステム101と拡張メモリ104との間にメモリ拡張チップ103が存在するため、プロセッサシステム101が拡張メモリ104内のデータにアクセスするためのメモリアクセス要求を送信した後に、統合されたメモリコントローラ1011がメモリアクセス要求を受信し、DDR（Double  Data  Rate）プロトコルを使用することにより拡張メモリ104にアクセスするときに、追加の遅延がメモリ拡張チップ103の存在により引き起こされる。その結果、メモリアクセス要求の処理結果は、DDRプロトコルにより要求される遅延内に返信されることができず、前述のコンピュータシステムにより拡張メモリ104にアクセスする実現性が影響を受ける。
【０００８】
前述の遅延の問題を解決するために、従来技術では、メモリコントローラの時系列パラメータを変更する方式が使用され、すなわち、プロセッサの時系列パラメータが実際のメモリアクセス遅延より大きくなるように、プロセッサに統合されたメモリコントローラの時系列パラメータが変更される。しかし、プロセッサは、最大の時系列パラメータの限られた設定範囲をサポートするため、拡張メモリにアクセスするプロセスにおける追加のアクセス遅延を補償することは困難である。
【発明の概要】
【０００９】
前述の問題に基づいて、本発明の実施例は、拡張メモリにアクセスするプロセスにおける遅延が補償できないという問題を有効に解決するための、拡張メモリにアクセスするための方法、デバイス、システムを提供する。
【００１０】
本発明の実施例の第１の態様は、コンピュータにより拡張メモリにアクセスするための方法を提供し、コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、コンピュータ内のプロセッサシステムは、拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があり、この方法は、
拡張メモリコントローラにより、コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するステップであり、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数であるステップと、
拡張メモリコントローラにより、N+1個のメモリアクセス要求のうち第１のメモリアクセス要求を受信したときに、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、アクセス対象のデータを取得するための読み取り要求を拡張メモリに送信し、特定の応答メッセージをプロセッサシステムに返信するステップであり、読み取り要求は、物理アドレスを含むステップと、
拡張メモリにより返信されるアクセス対象のデータを受信する前に、N+1個のメモリアクセス要求のうち第１のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、拡張メモリコントローラにより、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信するステップと、
拡張メモリコントローラにより、拡張メモリにより返信されたアクセス対象のデータを受信した後に、アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージをプロセッサシステムに返信するのを停止するステップと、
拡張メモリコントローラにより、N+1個のメモリアクセス要求のうち他のメモリアクセス要求を受信したときに、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信するステップと
を含む。
【００１１】
第１の態様を参照して、第１の可能な実現方式では、全てのN+1個のメモリアクセス要求内のアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む。
【００１２】
第１の態様及び第１の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、この方法は、拡張メモリコントローラにより、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定するステップを更に含み、拡張メモリコントローラにより、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定することは、拡張メモリコントローラにより、物理アドレスを取得するために、第１のメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせることを含む。
【００１３】
第１の態様の第２の可能な実現方式を参照して、第３の可能な実現方式では、拡張メモリコントローラにより、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定した後に、この方法は、拡張メモリコントローラにより、データバッファにレコードを作成するステップであり、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定するステップを更に含む。
【００１４】
第１の態様の第３の可能な実現方式を参照して、第４の可能な実現方式では、レコードは、有効性フィールドを更に含み、この方法は、拡張メモリコントローラにより、有効性フィールドを無効に設定するステップを更に含む。
【００１５】
第１の態様の第４の可能な実現方式を参照して、第５の可能な実現方式では、N+1個のメモリアクセス要求のうち第１のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、この方法は、拡張メモリコントローラにより、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせるステップと、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定したときに、特定の応答メッセージを生成するステップとを更に含む。
【００１６】
第１の態様の第４の可能な実現方式を参照して、第６の可能な実現方式では、拡張メモリコントローラにより、拡張メモリにより返信されたアクセス対象のデータを受信した後に、アクセス対象のデータをデータバッファに書き込むことは、拡張メモリコントローラにより、物理アドレスに対応するレコードを求めてデータバッファを検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定することを含む。
【００１７】
本発明の実施例の第２の態様は、拡張メモリにアクセスするための方法を提供し、コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、コンピュータ内のプロセッサシステムが拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、この方法は、
プロセッサシステムにより、アクセス対象のデータの記憶アドレスを受信するステップと、
プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成するステップであり、N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数であるステップと、
プロセッサシステムにより、N+1個のメモリアクセス要求を拡張メモリコントローラに送信するステップと
を含む。
【００１８】
第２の態様を参照して、第１の可能な実現方式では、プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成する前に、この方法は、
コンピュータにより拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定するステップであり、コンピュータにより拡張メモリからデータを取得するための遅延パラメータは、以下のパラメータ、すなわち、メモリアクセス要求を拡張メモリコントローラから拡張メモリに送信する遅延tPD1、メモリアクセス要求により読み取られたデータを拡張メモリから拡張メモリコントローラに送信する遅延tPD2、又はプロセッサシステムにより送信される２つの連続するメモリアクセス要求の間の時間間隔T_Intervalのうちいずれか１つ又はいずれかの組み合わせを含むステップを更に含む。
【００１９】
第２の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、コンピュータにより拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定することは、値Nを決定し、N≧[(tPD1+tPD2)/T_Interval]且つ[*]が丸め関数であることを含む。
【００２０】
第２の態様の第１の可能な実現方式及び第２の可能な実現方式を参照して、第３の可能な実現方式では、２つの連続するメモリアクセス要求の間の時間間隔T_Intervalは、  tGAPmin=tRCD+tRTP+tRP又はT_Fence（すなわち、プロセッサによりFence命令を実行するための遅延）である。
【００２１】
第２の態様、第２の態様の第１の可能な実現方式、第２の態様の第２の可能な実現方式及び第２の態様の第３の可能な実現方式を参照して、第４の可能な実現方式では、プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成することは、
アクセス対象のデータの記憶アドレスAddr_Virtualに従って仮想対物理アドレス変換を実行し、アクセス対象のデータの記憶アドレスは仮想アドレスであり、これにより、仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得し、
物理アドレスAddr_Physicalに従ってN個のアクセスアドレスAddr_Physical(n)を生成し、nは整数且つ1≦n≦Nであり、N個のアクセスアドレスの行アドレスはAddr_Physical_Row(n)=n*M+Addr_Physical_Rowであり、nは整数且つ1≦n≦Nであり、Mは拡張メモリに含まれるメモリ行の数量であり、Addr_Physical_Rowは物理アドレスAddr_Physicalの行アドレスであり、N個の物理アドレスのそれぞれの行アドレス以外のアドレスは物理アドレスAddr_Physicalの行アドレス以外のアドレスと同じであり、
プロセッサシステムにより、Addr_Physical及びAddr_Physical(n)に従ってN+1個のメモリアクセス要求を生成し、nは整数且つ1≦n≦Nであることを含む。
【００２２】
本発明の実施例の第３の態様は、コンピュータ内のプロセッサシステムによる拡張メモリ内のアクセス対象のデータへのアクセスに適用されるコンピュータ内の拡張メモリコントローラを提供し、コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、拡張メモリコントローラは、
コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するように構成された受信モジュールであり、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である受信モジュールと、
N+1個のメモリアクセス要求のうち第１のメモリアクセス要求が受信されたときに、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、アクセス対象のデータを取得するための読み取り要求を生成し、特定の応答メッセージをプロセッサシステムに返信し、読み取り要求は、物理アドレスを含み、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージを生成し、拡張メモリにより返信されたアクセス対象のデータが受信された後に、アクセス対象のデータをデータバッファに書き込み、N+1個のメモリアクセス要求のうち他のメモリアクセス要求が受信されたときに、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータを送信モジュールに送信するように構成された実行モジュールと、
読み取り要求を拡張メモリに送信し、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信し、実行モジュールからアクセス対象のデータを受信し、アクセス対象のデータをプロセッサシステムに送信するように構成された送信モジュールと
を含む。
【００２３】
第３の態様を参照して、第１の可能な実現方式では、全てのN+1個のメモリアクセス要求内のアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む。
【００２４】
第３の態様及び第３の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、実行モジュールは、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定し、拡張メモリ内のアクセス対象のデータの物理アドレスを取得するために、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って、第１のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を問い合わせるように更に構成される。
【００２５】
第３の態様の第２の可能な実現方式を参照して、第３の可能な実現方式では、実行モジュールは、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスが決定された後に、データバッファにレコードを作成し、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定するように更に構成される。
【００２６】
第３の態様の第３の可能な実現方式を参照して、第４の可能な実現方式では、レコードは、有効性フィールドを更に含み、実行モジュールは、レコード内の有効性フィールドを無効に設定するように更に構成される。
【００２７】
第３の態様の第４の可能な実現方式を参照して、第５の可能な実現方式では、実行モジュールは、メモリアクセス要求が受信される毎に、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定されたときに、特定の応答メッセージを生成するように更に構成される。
【００２８】
第３の態様の第４の可能な実現方式を参照して、第６の可能な実現方式では、実行モジュールは、拡張メモリにより返信されたアクセス対象のデータが受信された後に、物理アドレスに対応するレコードを求めてデータバッファを検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定するように更に構成される。
【００２９】
本発明の実施例の第４の態様は、拡張メモリを含むコンピュータシステムを提供し、コンピュータシステムは、プロセッサシステムと、メインメモリと、第３の態様又は第３の態様の各実現方式に記載の拡張メモリコントローラと、拡張メモリとを含み、拡張メモリコントローラは、拡張メモリに接続され、拡張メモリコントローラは、メモリインタフェースを使用することによりプロセッサシステムに接続され、プロセッサシステムは、メインメモリに接続され、メインメモリは、実行可能命令を記憶するように構成され、プロセッサシステムは、メインメモリに記憶された実行可能命令を実行するように構成され、これにより、プロセッサシステムは、第２の態様又は第２の態様の各実現方式に記載のように、コンピュータにより拡張メモリシステム内の拡張メモリにアクセスするための方法を実行する。
【００３０】
前述の技術的解決策に基づいて、本発明の実施例において提供される、拡張メモリにアクセスするための方法、デバイス及びシステムによれば、プロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信した後に（Nは1以上の正の整数）、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を拡張メモリに送信し、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラは、アクセス対象のデータが読み取られてデータバッファに書き込まれるまで、メモリバスプロトコルで指定されたアクセス遅延内に、受信したメモリアクセス要求についての特別な応答メッセージを返信し、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサシステムに返信する。前述のプロセスにおいて、行ミスのあるN+1個のメモリアクセス要求の実行により引き起こされる遅延は、拡張メモリコントローラにより拡張メモリからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する遅延を有効に補償するために使用される。
【図面の簡単な説明】
【００３１】
本発明の実施例における技術的解決策をより明確に説明するために、以下に、実施例を説明するために必要な添付図面について簡単に説明する。
【図１】従来技術における拡張メモリを含むコンピュータシステムのハードウェア構成の概略図である。
【図２】本発明の実施例によるコンピュータシステムのハードウェア構成の構造の概略図である。
【図３】本発明の実施例に従ってコンピュータにより拡張メモリにアクセスする遅延を分析する概略図である。
【図４】DDRプロトコルにおいてメモリアクセス要求の実行中に時系列を分析する概略図である。
【図５Ａ】拡張メモリ内のデータにアクセスするための処理方法の実施例の概略フローチャートである。
【図５Ｂ】アクセス対象のデータの記憶アドレスに従ってN+1個のアクセスアドレスを生成する概略フローチャートである。
【図６】本発明の実施例に従ってプロセッサにより検出される拡張メモリ空間の概略図である。
【図７】拡張メモリコントローラによりメモリアクセス要求を処理する実施例の概略フローチャートである。
【図８】拡張メモリコントローラにより実行されるインオーダー実行の実施例の概略フローチャートである。
【図９】拡張メモリコントローラにより実行されるアウトオブオーダー実行の実施例の概略フローチャートである。
【図１０】拡張メモリコントローラの実施例における構成の構造の概略図である。
【発明を実施するための形態】
【００３２】
以下に、本発明の実施例における添付図面を参照して、本発明の実施例における技術的解決策を明確且つ完全に説明する。明らかに、説明する実施例は、本発明の実施例の全てではなく、一部である。
【００３３】
一般的に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、及び特定のタスクを実行するため或いは特定の抽象データ型を実現するための他の種類の構造を含む。さらに、当業者は、各実施例がハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくか或いはプログラム可能な家庭用電化製品、小型コンピュータ、メインフレームコンピュータ及び同様のコンピューティングデバイスを含む他のコンピュータシステム構成を使用することにより実現されてもよいことを理解し得る。各実施例は、通信ネットワークを使用することにより接続されたリモート処理デバイスによりタスクが実行される分散コンピューティング環境で更に実現されてもよい。分散コンピューティング環境では、プログラムモジュールは、ローカル及びリモートの記憶デバイスに位置してもよい。
【００３４】
各実施例は、コンピュータ、コンピューティングシステム、又はコンピュータプログラムプロダクト若しくはコンピュータシステム等が例示的なプロセスの命令を実行するコンピュータプログラムのコンピュータ記憶媒体により実現されるプロセスとして実現されてもよい。例えば、コンピュータ読み取り可能記憶媒体は、揮発性コンピュータメモリ、不揮発性メモリ、ハードディスクドライブ、フラッシュドライブ、フロッピーディスク、コンパクトディスク（Compact  Disc）又は同様の媒体のうち１つ以上を使用することにより実現されてもよい。
【００３５】
この明細書において、「プロセッサシステム（Processor  System）」という用語は、プロセッサ及びメモリコントローラを含むシステムを示す。メモリコントローラがプロセッサ（Processor）に統合されるときに、プロセッサシステムは、メモリコントローラを含むプロセッサチップを示す。本発明のこの実施例の適用シナリオを参照して、プロセッサシステム内のプロセッサチップは、オブジェクトプログラムを実行するプロセスにおいて生成されたメモリアクセス命令を受信し、アクセス対象のデータのアドレスに従ってメモリアクセス要求を生成し、メモリアクセス要求をメモリコントローラに送信するように構成される。メモリコントローラは、メモリバスプロトコルに従って、メモリアクセス要求を、メモリチップにより実行可能なデータ読み取り／書き込み要求に分解する。
【００３６】
この明細書において、「メモリコントローラ（Memory  Controller）」という用語は、コンピュータシステム内のメモリを制御するコンピュータコンポーネントである。メモリコントローラは、メモリとプロセッサとの間のデータ交換を可能にする。具体的な適用では、メモリコントローラは、プロセッサ（Processor）と独立してもよく、或いはプロセッサに統合されてもよい。この明細書において、「メモリコントローラ」は、システムメモリ（System  Memory）へのアクセスを制御するように構成される。多くの場合、メモリコントローラは、プロセッサに統合される。メモリコントローラがプロセッサと独立している場合、メモリコントローラは、プロセッサに接続される必要がある。
【００３７】
この明細書において、「拡張メモリコントローラ」という用語は、メモリインタフェースを使用することによりメモリコントローラに接続するように構成され、プロセッサが拡張メモリにアクセスするためのブリッジとして使用される。
【００３８】
この明細書において、「拡張メモリ」という用語は、メモリ拡張を実現するために、メモリ拡張チップを使用することにより接続されるメモリを示す。拡張メモリは、以下の形式、すなわち、DRAM（Dynamic  Random  Access  Memory、ダイナミックランダムアクセスメモリ）、PCM（Phase Change  Memory、相変化メモリ）及びMRAM（Magnetic  Random  Access  Memory、磁気ランダムアクセスメモリ）で実現されてもよいが、これらに限定されない。
【００３９】
この明細書において、「メモリアクセス命令」という用語は、ソースコード（Source  Code）をコンパイル（Compile）することにより取得されたオブジェクトコード（Object  Code）に含まれるLoad及びStoreのようなメモリアクセス命令を示し、これらのメモリアクセス命令は、プロセッサにより要求される。実行プロセスにおいて、プロセッサは、仮想アドレス（Virtual  Address）対物理アドレス（Physical  Address）変換プロセスにおいてメモリアクセス命令内の仮想アドレスを物理アドレスに変換し、メモリアクセス要求を生成し、実行のためにメモリアクセス要求をメモリコントローラ（Memory  Controller）に送信する必要がある。
【００４０】
この明細書において、「メモリアクセス要求」という用語は、メモリ内のデータにアクセスするためのものであり且つプロセッサがメモリアクセス命令を実行した後に生成された要求を示す。メモリアクセス要求は、読み取り要求及び書き込み要求を含む。
【００４１】
この明細書において、「データバッファ」という用語は、拡張メモリから読み取られたアクセス対象のデータを記憶するように構成された記憶デバイスを示し、拡張メモリコントローラに統合されてもよく、或いは拡張メモリコントローラと独立して実現されてもよい。
【００４２】
［本発明の実施例に対応するシステムのハードウェアアーキテクチャ］
本発明の具体的な実施例について説明する前に、本発明の実施例に対応するシステムのハードウェア構成の構造について、まず説明する。図２を参照すると、以下のコンポーネントが含まれる。
【００４３】
プロセッサシステム（Processor  System）201：プロセッサシステム201は、プロセッサ2011とメモリコントローラ2012とを含む。命令実行コンポーネントとして、本発明において提供されるこの実施例では、プロセッサシステム201は、実行プロセスにおいて実行可能プログラムにより生成されたメモリアクセス命令を受信し、メモリアクセス命令に従ってメモリアクセス要求を生成するように構成される。プロセッサ2011は、メモリアクセス（Memory  Access）命令を処理し、メモリアクセス要求を生成し、メモリアクセス要求をメモリコントローラ2012に送信するように構成される。メモリコントローラ2012は、メモリアクセス要求に含まれる位置属性情報に従って、システムメモリ202にアクセスするか拡張メモリ204にアクセスするかを決定する。システムメモリ202がアクセスされるべきであると決定されたときに、メモリアクセス要求は、システムメモリ202に送信され、或いは拡張メモリ204がアクセスされるべきであると決定された場合、メモリアクセス要求は、拡張メモリコントローラ203に送信される。
【００４４】
システムメモリ（Memory）202：システムメモリ202は、メモリバスを使用することによりプロセッサシステム201に直接接続されたメモリを示し、実行プロセスにおいてプロセッサシステム201の動作データを一時的に記憶するように構成される。
【００４５】
拡張メモリコントローラ（Extended  Memory  Controller）203：拡張メモリコントローラ203は、拡張メモリ204に接続するように構成され、プロセッサシステム201が拡張メモリ204に対してメモリアクセス処理を実行するためのブリッジとして使用される。拡張メモリコントローラ203は、以下の種類のバスを使用することによりプロセッサシステム201に接続され、これらの種類のバスは、DDR（Double  Data  Rate、ダブルデータレート）バス、LPDDR（Low  Power  DDR、低電力DDR）バス又はWide  I/Oバスを含むが、これらに限定されない。拡張メモリコントローラ203は、少なくとも以下のモジュール、すなわち、拡張メモリ内のアクセス対象のデータに対して読み取り操作を実行するように構成された実行モジュール2031と、実行モジュール2031により拡張メモリ204から読み取られるアクセス対象のデータを一時的に記憶するように構成されたデータバッファ2032とを含む。アクセス対象のデータをキャッシュするためのコンポーネントとしてのデータバッファ2032は、拡張メモリコントローラ203に統合されてもよく、或いは拡張メモリコントローラ203と独立して実現されてもよい点に留意すべきである。これは、本発明のこの実施例において限定されない。
【００４６】
拡張メモリ（Extended  Memory）204：拡張メモリ204は、システムメモリ202とは異なる拡張メモリを示し、実行プロセスにおいてプロセッサシステム201の動作データを記憶するように構成される。拡張メモリ204は、DRAM（Dynamic  Random  Access  Memory、ダイナミックランダムアクセスメモリ）、PCM（Phase Change  Memory、相変化メモリ）及びMRAM（Magnetic  Random  Access  Memory、磁気ランダムアクセスメモリ）のような異なる記憶媒体を使用することにより実現されてもよい。
【００４７】
図２に示すシステムのハードウェア構成の構造の概略図において、メモリ拡張チップとしての役目をする拡張メモリコントローラ203の存在のため、拡張メモリ204内のデータを要求するために使用され且つプロセッサシステム201により送信された読み取り要求を実行するプロセスにおいて、比較的高い遅延が存在し、アクセス対象のデータは、DDRプロトコルにより要求されるアクセス遅延内に返信されることができない。図２を参照して、拡張メモリにアクセスする遅延の問題が図３に基づいて分析される。
【００４８】
図３において、以下の３つの遅延が拡張メモリ204内のデータを読み取る操作を実行する際に存在する。
【００４９】
tPD1：信号の送信遅延と拡張メモリコントローラ203内の論理処理の遅延とを含む、プロセッサシステム201により送信されたメモリアクセス要求を「拡張メモリコントローラ203」から「拡張メモリ204」に送信する遅延
tRL：「メモリアクセス要求の受信」から「アクセス対象のデータを拡張メモリ204と拡張メモリコントローラ203との間のバスに送信する」までの拡張メモリ204の遅延
tPD2：拡張メモリ204から読み取られたデータを「拡張メモリ204から拡張メモリコントローラ203に」且つ「拡張メモリコントローラ203」から「プロセッサシステム201内のメモリコントローラ2012」に送信する遅延
プロセッサの実際のメモリアクセス遅延は、tPD1+tRL+tPD2である。これは、メモリアクセスプロトコル（DDRプロトコル等）の要件、すなわち、アクセス対象のデータは、tRL遅延内に返信される必要があることを満たさない。したがって、遅延tPD1+tPD2をどのように補償するかが、本発明のこの実施例の出発点になる。
【００５０】
既存のメモリバスプロトコル（DDRプロトコルが一般的に使用される）は、固定遅延の同期メモリアクセスプロトコルである。１つのメモリアクセス要求の実行は、以下の３つの段階に分けられる。
【００５１】
A.アクティベート（Activate）：メモリコントローラ（Memory  Controller）は、DRAM内にあり且つ行アドレスに対応する１つの行のデータを行バッファ（Row  Buffer）に読み取るために、アクティベート（activate）コマンド及び行アドレス（Row  Address）を送信する。
【００５２】
B.読み取り／書き込み（Read/Write）：メモリコントローラは、列アドレスに対応しており且つ行バッファ内にあるデータを読み取る／書き込むために、Read/Writeコマンド及び列アドレス（Column  Address）を送信する。
【００５３】
C.プリチャージ（Pre-Charge）：メモリコントローラは、行バッファをクローズするためにpre-chargeコマンドを送信する。
【００５４】
２つの連続するメモリアクセス要求は、２つの連続するメモリアクセス要求の行アドレスが同じであるか否かに従って、以下の２つの種類に分類され得る。
【００５５】
(1)行ヒット（Row  Hit）：２つのメモリアクセス要求により操作される必要があるデータが同じBank内の同じ行に位置する（すなわち、行アドレスが同じである）。したがって、第１のメモリアクセス要求の読み取り／書き込み（Read/Write）コマンドが実行された後に、行データは、依然として行バッファ（Row  Buffer）に位置するため、メモリコントローラは、第１のメモリアクセス要求のプリチャージ段階及び第２のメモリアクセス要求のアクティベート操作段階を実行することなく、第２のメモリアクセス要求の読み取り／書き込みコマンド及び列アドレスを直接送信することができる。
【００５６】
(2)行ミス（Row  Miss）：２つのメモリアクセス要求により操作される必要があるデータが同じbank内の異なる行に位置する。第１のメモリアクセス要求の読み取り／書き込み（Read/Write）段階が実行された後に、行バッファをクローズするためにプリチャージ操作（例えば、Pre-Chargeコマンド）が実行される必要があり、次に、行データを行バッファに読み取るために、アクティベート操作（例えば、Activateコマンド）が第２のメモリアクセス要求の行に対して実行され、最後に、第２のメモリアクセス要求の読み取り／書き込みコマンド及び列アドレスが送信されることができる。
【００５７】
図４は、DDRプロトコルにおいてメモリアクセス要求を実行するプロセスにおける時系列要件を示す。
【００５８】
tRL：「読み取り（RD）コマンドの送信」から「データがメモリバスに入る」までの固定の遅延
tRCD：「アクティベート（ACT）コマンドの送信」から「読み取り（RD）コマンドの送信」までの最小時間間隔
tRTP：「読み取り（RD）コマンドの送信」から「プリチャージ（PRE）コマンドの送信」までの最小時間間隔
tRP：「プリチャージ（PRE）コマンドの送信」から「次のアクティベート（ACT）コマンドの送信」までの最小時間間隔
前述のパラメータに従って、行ミスのある２つの読み取り（RD）コマンドの間の最小時間間隔は、tGAPmin=tRCD+tRTP+tRPであると計算され得る。
【００５９】
さらに、メモリバリア（Memory  Barrier）技術が使用されてもよい。メモリバー（Memory  Bar）、メモリフェンス（memory  fence）、フェンス命令（Fence  instruction）等とも呼ばれるメモリバリアは、一種の同期フェンス命令であり、CPU又はコンパイラによりメモリにランダムにアクセスする操作における同期点であり、これにより、この点の後の操作は、この点の前の全ての読み取り／書き込み操作が実行された後にのみ実行されることができる。
【００６０】
拡張メモリにアクセスするプロセスにおける遅延を補償するために、本発明のこの実施例では、行ミスのある複数のメモリアクセス要求を実行するプロセスにおける遅延は、拡張メモリ内のアクセス対象のデータにアクセスする遅延を補償するために使用される。アプリケーションプログラムが拡張メモリ204内のデータにアクセスする要件のために、拡張メモリアクセス要求は、ソフトウェア（コンパイラ、Compiler等）を使用することにより、行ミスのある複数のメモリアクセス要求にコンパイルされるか、或いはfence命令が複数の生成されたメモリアクセス要求の間に挿入される。複数のメモリアクセス要求を実行するプロセスにおいて、行ミスのあるメモリアクセス要求の遅延と、複数のメモリアクセス要求の間のfence命令の実行により引き起こされる遅延とに基づいて、拡張メモリ内のアクセス対象のデータは、まず拡張メモリコントローラに読み取られ（データプリフェッチ段階）、次にメモリコントローラを使用することにより拡張メモリコントローラからプロセッサに読み取られる（データ読み取り段階）。
【００６１】
［本発明の方法の実施例］
図５Ａは、コンピュータにより拡張メモリにアクセスする方法の実施例の概略フローチャートを示し、以下のステップを含む。
【００６２】
510.プロセッサシステムは、アクセス対象のデータの記憶アドレスを受信する。
【００６３】
具体的には、実行プロセスにおいて、コンパイラを使用することにより取得された実行可能プログラムは、N+1個のメモリアクセス命令を生成し、N+1個のメモリアクセス命令は、アクセス対象のデータの記憶アドレスを全て含む。具体的な実現では、アクセス対象のデータの記憶アドレスは、仮想アドレスである。
【００６４】
530.プロセッサシステムは、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成し、N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である。
【００６５】
具体的には、生成されたN+1個のアクセスアドレスは互いに異なる。これは、N+1個のアクセスアドレスに従って生成されたメモリアクセス要求がMSHR（Miss-status  Handling  Register）内でプロセッサによりマージされるのを妨げる。N+1個のアクセスアドレスは同じ物理アドレスを指す。具体的な実現では、N+1個のアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間にマッピング関係が存在する。
【００６６】
550.プロセッサシステムは、生成されたN+1個のメモリアクセス要求を拡張メモリコントローラに送信する。
【００６７】
具体的には、拡張メモリ内のアクセス対象のデータにアクセスする遅延を補償するために、プロセッサシステムにおいて、N+1個のメモリアクセス要求を生成した後に、プロセッサは、N+1個のメモリアクセス要求をプロセッサシステム内のメモリコントローラに送信する。プロセッサは、定期的な間隔でN+1個のメモリアクセス要求をメモリコントローラに順次送信してもよく、或いは全てのN+1個のメモリアクセス要求をメモリコントローラに一度に送信してもよい。N+1個のメモリアクセス要求を受信した後に、メモリコントローラは、アクセスアドレスが互いに異なる（特に行アドレスが異なる）と決定し、行ミスのあるメモリアクセス要求としてN+1個のメモリアクセス要求を識別する。したがって、N+1個のメモリアクセス要求は、メモリアクセスプロトコルで指定された行ミスのあるメモリアクセス要求のための送信遅延要件に従って逐次送信される。
【００６８】
N+1個のメモリアクセス命令は、オブジェクトプログラム（Object  Program）に含まれる点に留意すべきである。オブジェクトプログラムは、ソースプログラム（Source  Program）をコンパイルすることにより、コンパイラ（Compiler）により取得される。ソースプログラムがコンパイルされるコンピュータシステムは、本発明のこの実施例におけるコンピュータシステムでもよく、或いはサードパーティのコンピュータシステムでもよい。
【００６９】
拡張メモリシステムを含むコンピュータについて、ソースプログラムを開発するときに、ソフトウェア開発者は、各変数のタイプ及び記憶位置を規定する。開発者は、いくつかの変数がシステムメモリに一時的に記憶され、他の変数が拡張メモリに一時的に記憶されることを規定する。
【００７０】
プログラムにおいて拡張メモリ内に規定された変数を使用するプロセスにおいて、変数（この明細書では「アクセス対象のデータ」と呼ばれる）に対する読み取り／書き込み操作が関与する必要がある。本発明のこの実施例では、ソースプログラムをコンパイルするプロセスにおいて、拡張メモリに記憶されたアクセス対象のデータの特定の部分にアクセスするための要求が存在するときに、コンパイラは、拡張メモリの遅延パラメータとメモリバスプロトコルの遅延要件とに従って、アクセス対象のデータにアクセスするための要求をN+1個のメモリアクセス要求にコンパイルし、N≧1且つNは整数である。
【００７１】
さらに、送信される必要があるメモリアクセス要求の数量は、以下のように決定される。
【００７２】
(1)メモリアクセス要求を「拡張メモリコントローラ」から「拡張メモリ」に送信する遅延はtPD1であり、メモリアクセス要求に従って読み取られたデータを「拡張メモリ」から「拡張メモリコントローラ」に送信する遅延はtPD2である。
【００７３】
具体的には、ひとたび拡張メモリを含むコンピュータシステムが決定されると、以下の２つのパラメータが決定されてもよい。
【００７４】
(2)プロセッサにより送信される行ミスのある２つの連続するメモリアクセス要求の間のDDRプロトコルに準拠した時間間隔はtGAPmin=tRCD+tRTP+tRPであると決定される。
【００７５】
具体的には、図４及び関係する説明を参照すると、プロセッサにより送信される行ミスのある２つのメモリアクセス要求の間の最小時間間隔は、少なくともtRCD+tRTP+tRPであり、前述のパラメータがDDRプロトコルにおいて指定される。
【００７６】
さらに、メモリアクセス要求が生成された後に、プロセッサは、プロセッサにより送信される２つの連続するメモリアクセス要求の間の時間間隔において各メモリアクセス要求の後に１つのfence命令を挿入してもよく、すなわち、遅延がfence命令を実行することにより実現され、fence命令の実行時間はT_Fenceである。
【００７７】
(3)生成される必要があるメモリアクセス要求の数量Nは、前述のパラメータに従って計算され、すなわち、N≧[(tPD1+tPD2)/(tRCD+tRTP+tRP)]であり、[*]は丸め関数である。
【００７８】
さらに、プロセッサが生成されたN+1個のメモリアクセス要求にfence命令を挿入した後に、計算されたN≧[(tPD1+tPD2)/T_Fence]であり、[*]は丸め関数である。T_Fenceはプロセッサによりfence命令を実行するための遅延である。
【００７９】
具体的な実現では、アクセス対象のデータの記憶アドレスに従って生成されたN+1個のアクセスアドレスは、図５Ｂに示すように、以下のステップ551〜553を実行することにより取得されてもよい。
【００８０】
551.アクセス対象のデータの記憶アドレスAddr_Virtualに従って仮想対物理アドレス変換が実行され、アクセス対象のデータの記憶アドレスは仮想アドレスであり、これにより、仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得する。
【００８１】
プロセッサにより受信されるメモリアクセス命令に含まれるアドレスは、一般的に仮想アドレスである点に留意すべきである。仮想対物理アドレス変換は、アクセス対象のデータの仮想アドレスに従って実行され、これにより、仮想アドレスに対応する物理アドレスを取得する。
【００８２】
552.物理アドレスAddr_Physicalに従ってN個のアクセスアドレスAddr_Physical(n)を生成し、nは整数且つ1≦n≦Nであり、N個のアクセスアドレスの行アドレスはAddr_Physical_Row(n)=n*M+Addr_Physical_Rowであり、nは整数且つ1≦n≦Nであり、Mは拡張メモリに含まれるメモリ行の数量であり、Addr_Physical_Rowは物理アドレスAddr_Physicalの行アドレスであり、N個の物理アドレスのそれぞれのbankアドレスは物理アドレスAddr_Physicalのbankアドレスと同じである。
【００８３】
具体的には、行ミスのあるN+1個のメモリアクセス要求を生成する目的で、N+1個のメモリアクセス要求のアドレスが同じbankアドレス及び異なる行アドレスを含むことが確保される必要がある。
【００８４】
拡張メモリのアドレス空間は、再定義される必要がある。図６を参照すると、N=1が一例として使用され、プロセッサは、アクセス対象のデータの物理アドレスに従って２つのアクセスアドレスを生成し、これにより、拡張メモリについての２つのメモリアクセス要求を生成する。
【００８５】
図６において、プロセッサにより検出されることができるメモリ空間は、２つの部分、すなわち、拡張メモリの実際のメモリ空間及びシャドウ空間を含む。拡張メモリに対応するメモリ空間は、M個のメモリ行を含み、シャドウ空間及び拡張メモリに対応するメモリ空間は、同じサイズである（行及び列のサイズが同じである）。２つのメモリアクセス要求が行ミスのあるメモリアクセス要求として使用されることを確保する目的で、２つのメモリアクセス要求のアドレスが同じbankアドレス及び異なる行アドレスを含むことが確保される必要がある。
【００８６】
したがって、メモリアクセス要求のアドレスにおいて、メモリアクセス要求の行アドレスはiであり、他のメモリアクセス要求の行アドレスはi+Mである。これは、２つのメモリアクセス要求の行アドレスが異なることを確保する。さらに、拡張メモリ空間内のアクセス対象のデータの物理アドレスに対応する行アドレスは、シャドウ空間内の行アドレスからオフセットMを減算することにより取得される。これは、２つのアドレスが拡張メモリ内の同じ物理アドレスを指すことを確保する。
【００８７】
さらに、行アドレスに加えて、拡張メモリ内の物理アドレスは、bankアドレスを含む。生成されたN+1個のアクセスアドレスが同じbankアドレス及び異なる行アドレスを含むことが確保される場合、プロセッサシステム内のメモリコントローラは、N+1個のメモリアクセス要求を受信したときに、N+1個のメモリアクセス要求を、行ミスのあるメモリアクセス要求として識別することができる。
【００８８】
本発明のこの実施例の説明を簡略化するために、アクセス対象のデータの物理アドレスに基づいて生成されたN+1個のアクセスアドレスが初期設定で同じメモリチップ（Chip）にある点に留意すべきである。具体的な実現では、bankアドレス及び行アドレスに加えて、アクセスアドレスは、メモリ物理アドレスとして、メモリ物理アドレスの要件に従ってchannelアドレス、DIMMアドレス、rankアドレス及びchipアドレスを更に含む。したがって、解決策の具体的な実現では、「生成されたN+1個のアクセスアドレス」は、「アクセス対象のデータの物理アドレス」のchannelアドレス、DIMMアドレス、rankアドレス及びchipアドレスと同じになるように設定されてもよい。
【００８９】
前述の実現方式では、N=1が一例として使用されることが理解され得る。他の値について、メモリアクセス要求のアドレスが生成されてもよく、N+1個のメモリアクセス要求は同様のプロセスに従って作成されてもよい。
【００９０】
553.プロセッサシステムは、Addr_Physical及びAddr_Physical(n)に従ってN+1個のメモリアクセス要求を生成し、nは整数且つ1≦n≦Nである。
【００９１】
前述の実施例では、コンピュータ内のプロセッサシステムにより拡張メモリ内のアクセス対象のデータにアクセスするプロセスにおいて、プロセッサは、N+1個のメモリアクセス要求を生成し、生成されたN+1個のメモリアクセス要求に含まれるアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含み、これにより、プロセッサに統合されたメモリコントローラは、N+1個のメモリアクセス要求を実行するときに、行ミスのあるメモリアクセス要求をトリガーする。行ミスのあるN+1個のメモリアクセス要求を実行するプロセスにおいて、拡張メモリコントローラは、この処理遅延に基づいて拡張メモリからアクセス対象のデータを読み取ることができ、最後に、アクセス対象のデータをプロセッサシステムに返信する。前述の実現方式では、アクセス対象のデータが指定された遅延範囲内に返信されることができないという問題を解決するために、行ミスのあるメモリアクセス要求を実行するプロセスにおける遅延が有効に使用される。
【００９２】
図７は、拡張メモリコントローラがプロセッサシステムにより送信されたN+1個のメモリアクセス要求を受信した後の処理プロセスを示す。拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含む。コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリコントローラに接続される。コンピュータ内のプロセッサシステムが拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、この方法は以下のステップを含む。
【００９３】
710.拡張メモリコントローラは、コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信し、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である。
【００９４】
具体的には、拡張メモリコントローラは、ステップ550に記載のプロセスにおいてプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信する。N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、N+1個のアクセスアドレスは同じ物理アドレスを指す。
【００９５】
730.N+1個のメモリアクセス要求のうち第１のメモリアクセス要求を受信したときに、拡張メモリコントローラは、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、読み取り要求を拡張メモリに送信し、特定の応答メッセージをプロセッサシステムに返信し、読み取り要求は、物理アドレスを搬送する。
【００９６】
具体的には、第１のメモリアクセス要求を受信したときに、拡張メモリコントローラは、第１のメモリアクセス要求のアクセスアドレスに従って物理アドレスを決定し、物理アドレスの読み取り要求を拡張メモリに送信し、読み取り要求は、拡張メモリからアクセス対象のデータを読み取るために使用される。
【００９７】
750.拡張メモリにより返信されるアクセス対象のデータを受信する前に、N+1個のメモリアクセス要求のうち第１のメモリアクセス要求の後のメモリアクセス要求が受信される毎に、拡張メモリコントローラは、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信する。
【００９８】
具体的には、アクセス対象のデータを読み取るプロセスにおいて比較的高い遅延が必要であり、メモリバスプロトコルは、固定遅延の同期メモリアクセスプロトコルであるため、拡張メモリコントローラは、メモリアクセス要求毎に応答メッセージを返信する必要がある。したがって、拡張メモリコントローラは、第１のメモリアクセス要求のための特定の応答メッセージをプロセッサに返信する。特定の応答メッセージは、プロセッサと拡張メモリコントローラとにより合意された特別な識別子であり、例えば、0x5a5a5a5a5a5a5a5aが特別な識別子として使用されてもよい点に留意すべきである。
【００９９】
特別な識別子は、カスタマイズ可能な識別子である点に留意すべきである。具体的な実現では、他の識別子も使用されてもよい。これは、本発明のいずれかの実施例において限定されない。
【０１００】
770.拡張メモリコントローラは、拡張メモリにより返信されたアクセス対象のデータを受信した後に、アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージをプロセッサシステムに返信するのを停止する。
【０１０１】
具体的には、ステップ730において、拡張メモリコントローラにより送信された読み取り要求は、拡張メモリに送信され、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて比較的高い遅延が必要になる。この段階で、N+1個のメモリアクセス要求のうちいくつかのメモリアクセス要求は、プロセッサにより拡張メモリコントローラに送信される。この場合、これらのメモリアクセス要求を受信した後に、拡張メモリコントローラは、メモリバスプロトコルにより要求される遅延内に特定の応答メッセージをプロセッサに返信し、これにより、アクセス対象のデータが取得されていないことをプロセッサに通知する。拡張メモリにより返信されたアクセス対象のデータを受信したときに、拡張メモリコントローラは、アクセス対象のデータをデータバッファに書き込む。
【０１０２】
データバッファは、拡張メモリコントローラに統合されてもよく、或いは拡張メモリコントローラと独立して実現されてもよい点に留意すべきである。
【０１０３】
790.N+1個のメモリアクセス要求のうち他のメモリアクセス要求を受信したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する。
【０１０４】
具体的には、メモリバスプロトコルは、固定遅延の同期メモリアクセスプロトコルであるため、アクセス対象のデータがデータバッファに書き込まれた後に、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサシステムに返信する。
【０１０５】
さらに、全てのN+1個のメモリアクセス要求内のアクセスアドレスが同じbankアドレス及び異なる行アドレスを含む。プロセッサに統合されたメモリコントローラは、この特徴を有するメモリアクセス要求を、行ミス（Row  Miss）のあるメモリアクセス要求として識別し、これにより、メモリアクセスプロトコルで指定された遅延は、N+1個のメモリアクセス要求を実行するプロセスにおいて生成されることができる。
【０１０６】
さらに、拡張メモリコントローラは、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定する、拡張メモリコントローラにより、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定することは、拡張メモリコントローラにより、前述の物理アドレスを取得するために、第１のメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせることを含む。
【０１０７】
さらに、ステップ730において、拡張メモリコントローラにより、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定した後に、この方法の実施例は、拡張メモリコントローラにより、データバッファにレコードを作成し、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定することを更に含む。
【０１０８】
さらに、ステップ730において、レコードは、有効性フィールドを含み、この方法の実施例は、拡張メモリコントローラにより、有効性フィールドを無効に設定することを更に含む。
【０１０９】
さらに、ステップ750において、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラがメモリアクセス要求を受信する毎に、この方法は、拡張メモリコントローラにより、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定したときに、特定の応答メッセージを生成することを更に含む。
【０１１０】
さらに、ステップ770において、拡張メモリコントローラにより、アクセス対象のデータをデータバッファに書き込むことは、拡張メモリコントローラにより、物理アドレスに対応するレコードを求めてデータバッファを検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定することを含む。
【０１１１】
前述の実現プロセスにおいて、第１のメモリアクセス要求を受信した後に、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を拡張メモリに送信する。拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラは、メモリバスプロトコルで指定されたアクセス遅延内に、受信したメモリアクセス要求についての特別な応答メッセージを返信し、これにより、プロセッサは、行ミスの要件に従って次のメモリアクセス要求を送信することができ、拡張メモリコントローラは、読み取られたデータをデータバッファに一時的に記憶し、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサシステムに返信する。前述のプロセスにおいて、行ミスのあるN+1個のメモリアクセス要求の実行により引き起こされる遅延は、拡張メモリコントローラにより拡張メモリからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する遅延を有効に補償するために使用される。
【０１１２】
実験から取得された経験値によれば、数個のレベルの拡張メモリが存在し、アクセス対象のデータの読み取り／書き込みが拡張メモリ内のデータに対して実行されるときに、N=1であり、すなわち、２つのメモリアクセス要求は、拡張メモリからデータを読み取る遅延を補償するために生成されることができる。以下に、N=1を一例として使用することにより２つの具体的な実現プロセスについて説明する。
【０１１３】
［I.インオーダー実行方式（図８参照）］
図６における拡張メモリを含むメモリ空間によれば、１つのみのシャドウ空間が仮想化される必要があることが習得され得る。図６が一例として使用される。図２におけるシステムの構造図を参照して、アクセス対象のデータが拡張メモリ内の第i行に位置し、アクセス対象のデータの行アドレスがiであることが仮定される。前述の方法によれば、２つの生成されるアクセスアドレスの行アドレスは、i及びi+Mである。２つのアクセスアドレスのbankアドレスは同じになるように設定される。前述の生成されたアクセスアドレスは、拡張メモリコントローラ内のデータバッファに記録される。
【０１１４】
２つのメモリアクセス要求は、生成された２つのアクセスアドレスに従って構築され、プロセッサにより拡張メモリコントローラに送信される。プロセッサが、まずi+Mの行アドレスを有するメモリアクセス要求を送信し、次にiの行アドレスを有するメモリアクセス要求を送信することが仮定される。この方法の実施例の実行プロセスは以下の通りである。
【０１１５】
810.拡張メモリコントローラは、第１のメモリアクセス要求を受信し、要求のアクセスアドレスを取得するために要求を解析し、要求の行アドレスがi+Mであると識別したときに、拡張メモリコントローラは、特別な識別子をプロセッサに返信する。
【０１１６】
具体的には、拡張メモリコントローラは、行アドレスに従って、メモリアクセス要求内のアドレスが拡張メモリの実際のメモリ空間又はシャドウ空間に位置すると識別することができるため、このステップにおいて、行アドレスがi+Mであると識別された場合、アクセスアドレスがシャドウ空間に位置すると決定され、特別な識別子（0x5a5a5a5a5a5a5a5a等）が生成され、プロセッサに返信される。
【０１１７】
830.拡張メモリコントローラは、読み取り要求を生成し、読み取り要求は、アクセス対象のデータの物理アドレスを含み、読み取り要求を拡張メモリに送信し、メモリバスプロトコルで指定されたメモリアクセス要求処理遅延内にアクセス対象のデータをデータバッファに読み取る。
【０１１８】
具体的には、第１のメモリアクセス要求を受信した後に、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を生成し、読み取り要求を拡張メモリに送信する。アクセス対象のデータは、メモリバスプロトコルで指定されたメモリアクセス要求遅延内にデータバッファに読み取られる。
【０１１９】
850.メモリバスプロトコルで指定された遅延の後に、拡張メモリコントローラは、第２のメモリアクセス要求を受信し、要求のアクセスアドレスを取得するために要求を解析し、要求の行アドレスがiであると識別したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する。
【０１２０】
具体的には、アクセス対象のデータをデータバッファに読み取った後に、拡張メモリコントローラは、プロセッサにより送信された第２のアクセス要求を受信し、アクセスアドレスの行アドレスを取得するために要求を解析し、要求の行アドレスがi、すなわち、拡張メモリの実際のメモリ空間に位置するアドレスであると決定したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する。
【０１２１】
前述の実施例では、事前に合意されたアドレスアクセス順序に従って、受信した第１のメモリアクセス要求に含まれるアクセスアドレスは、シャドウ空間のアドレスであり、第２のメモリアクセス要求に含まれるアクセスアドレスは、実際のメモリ空間のアドレスであり、シャドウ空間のアドレスと実際のメモリ空間のアドレスとの間にマッピング関係が存在する。シャドウ空間のアドレスを含むメモリアクセス要求が受信されたときに、アクセス対象のデータは、拡張メモリから読み取られ、データバッファにキャッシュされる。実際のメモリ空間のアドレスを含むメモリアクセス要求が受信されたときに、データは、データバッファからプロセッサに読み取られる。
【０１２２】
事前に合意された前述のアクセス順序は、さらに、「実際のメモリ空間のアドレスを最初にアクセスし、次にシャドウ空間のアドレスをアクセスする」というような順序でもよく、或いは、さらに、２つのメモリアクセス要求に含まれるアクセスアドレスがマッピング関係を有しており且つ同じ物理アドレスを指すことが確保されている場合、２つのメモリアクセス要求に含まれるアドレスが共にシャドウ空間のアドレス（すなわち、Addr1及びAddr2）であることが理解され得る。
【０１２３】
［II.アウトオブオーダー実行方式（図９参照）］
ここでのアウトオブオーダーは、メモリアクセス要求が拡張メモリコントローラに送信される順序と、プロセッサがメモリアクセス要求を送信する順序との間の不一致を示す。この場合、メモリアクセス要求が送信される順序は、アクセスアドレスの行アドレスがシャドウ空間に位置するか実際のメモリ空間に位置するかを決定することにより決定されることができない。したがって、この場合、メモリアクセス要求が送信される順序は、データバッファ内にアクセス対象のデータが存在するか否かを問い合わせることにより決定される。
【０１２４】
アクセス対象のデータが拡張メモリ内の第i行に位置し、アクセス対象のデータの行アドレスがiであることが仮定される。前述の方法によれば、２つの生成されるアクセスアドレスの行アドレスは、i及びi+Mである。２つのアクセスアドレスのbankアドレスは同じになるように設定される。前述の生成されたアクセスアドレスは、拡張メモリコントローラ内のデータバッファに記録される。
【０１２５】
２つのメモリアクセス要求は、生成された２つのアクセスアドレスに従って構築され、プロセッサにより拡張メモリコントローラに送信される。プロセッサが、まずi+Mの行アドレスを有するメモリアクセス要求を送信し、次にiの行アドレスを有するメモリアクセス要求を送信することが仮定される。この方法の実施例の実行プロセスは以下の通りである。
【０１２６】
910.拡張メモリコントローラは、２つのメモリアクセス要求を続いて受信し、２つのメモリアクセス要求内のアクセスアドレスは互いに異なり、２つのアクセスアドレスは同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの物理アドレスである。
【０１２７】
具体的には、２つのメモリアクセス要求内のアクセスアドレスは互いに異なる。これは、２つのアクセスアドレスに従って生成されたメモリアクセス要求がMSHR（Miss-status  Handling  Register）内でプロセッサによりマージされるのを妨げる。２つのアクセスアドレスは同じ物理アドレスを指す。これは、２つのアクセスアドレスと物理アドレスとの間にマッピング関係が存在することを示す。
【０１２８】
930.メモリアクセス要求のいずれかを受信した後に、拡張メモリコントローラは、アドレスをアクセス対象のデータの物理アドレスにマッピングし、データバッファを検索する。
【０１２９】
具体的には、データバッファは、データをキャッシュするように構成される。具体的な実現では、データバッファは、キャッシュを使用することにより実現されてもよい。記憶は、＜識別子，データ＞方式で実行される。アクセス対象のデータの物理アドレスは、識別子として使用されてもよい。
【０１３０】
950.アクセス対象のデータのレコードが見つからなかったときに、メモリアクセス要求が第１のメモリアクセス要求であると決定し、特別な識別子をプロセッサに返信し、アクセス対象のデータを読み取るための要求を拡張メモリに送信し、読み取り要求は、物理アドレスを含む。
【０１３１】
具体的には、ステップ950において、拡張メモリコントローラがアクセス対象のデータのレコードをデータバッファ内に見つけることができなかったときに、受信したメモリアクセス要求が第１のメモリアクセス要求であると決定される。この場合、アクセスアドレスが物理アドレスである読み取り要求が生成され、拡張メモリに送信され、読み取り要求は、アクセス対象のデータを読み取るために使用される。このプロセスにおいて、拡張メモリコントローラは、特別な識別子（0x5a5a5a5a5a5a5a5a等）を更に生成し、特別な識別子をプロセッサに送信し、これにより、プロセッサは、特別な識別子に従って、アクセス対象のデータがデータバッファに読み取られていないと決定する。
【０１３２】
970.アクセス対象のデータのレコードが見つかったときに、メモリアクセス要求が第２のメモリアクセス要求であると決定し、データバッファからデータを読み取り、データをプロセッサに返信する。
【０１３３】
具体的には、拡張メモリコントローラがアクセス対象のデータのレコードを見つけたとき、これは、メモリアクセス要求が第２のメモリアクセス要求であることを示し、データは、データバッファから読み取られ、プロセッサシステムに返信される。
【０１３４】
前述の実現方式では、プロセッサは、２つのメモリアクセス要求を生成し、２つのメモリアクセス要求を拡張メモリコントローラに送信し、これにより、拡張メモリコントローラは、２つのメモリアクセス要求に従って拡張メモリ内のアクセス対象のデータを読み取る。これは、プロセッサにより拡張メモリ内のアクセス対象のデータにアクセスする遅延がメモリアクセスプロトコルの要件を満たすことができないという問題を解決する。
【０１３５】
［本発明のデバイスの実施例］
本発明は、拡張メモリコントローラのデバイスの実施例を更に提供する。図１０を参照すると、拡張メモリコントローラは、コンピュータ内のプロセッサによる拡張メモリ内のアクセス対象のデータへのアクセスに適用される。拡張メモリコントローラは、メモリバスを使用することにより、コンピュータに接続される。拡張メモリコントローラは、
コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するように構成された受信モジュール1010であり、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である受信モジュール1010と、
N+1個のメモリアクセス要求のうち第１のメモリアクセス要求が受信されたときに、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、アクセス対象のデータを取得するための読み取り要求を拡張メモリに送信し、特定の応答メッセージを生成し、読み取り要求は、物理アドレスを含み、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージを生成し、拡張メモリにより返信されたアクセス対象のデータが受信された後に、アクセス対象のデータをデータバッファ1040に書き込み、特定の応答メッセージをプロセッサシステムに返信するのを停止し、アクセス対象のデータがデータバッファ1040に書き込まれた後に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信されたときに、データバッファ1040からアクセス対象のデータを読み取り、アクセス対象のデータを送信モジュールに送信するように構成された実行モジュール1020と、
読み取り要求を拡張メモリに送信し、特定の応答メッセージをプロセッサシステムに返信し、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうち第１のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信し、実行モジュール1020からアクセス対象のデータを受信し、アクセス対象のデータをプロセッサシステムに送信するように構成された送信モジュール1030と
を含む。
【０１３６】
さらに、全てのN+1個のメモリアクセス要求内のアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む。
【０１３７】
さらに、実行モジュール1020は、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定し、拡張メモリ内のアクセス対象のデータの物理アドレスを取得するために、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って、第１のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を問い合わせるように更に構成される。
【０１３８】
さらに、実行モジュール1020は、第１のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスが決定された後に、データバッファにレコードを作成し、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定するように更に構成される。
【０１３９】
さらに、レコードは、有効性フィールドを更に含み、実行モジュール1020は、レコード内の有効性フィールドを無効に設定するように更に構成される。
【０１４０】
さらに、実行モジュール1020は、N+1個のメモリアクセス要求のうち第１のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ1040内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定されたときに、特定の応答メッセージを生成するように更に構成される。
【０１４１】
さらに、実行モジュール1020は、物理アドレスに対応するレコードを求めてデータバッファ1040を検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定するように更に構成される。
【０１４２】
さらに、拡張メモリコントローラの前述の実施例において、データバッファ1040は、拡張メモリコントローラに統合される点に留意すべきである。これは単なる実現方式である。当業者は、データバッファ1040が拡張メモリコントローラと独立して更に実現されてもよいことを理解し得る。
【０１４３】
本発明は、拡張メモリを含むコンピュータシステムを更に提供する。図２に示すように、コンピュータシステムは、プロセッサシステム201と、システムメモリ202と、拡張メモリコントローラのデバイスの実施例に記載の拡張メモリコントローラ203と、拡張メモリ204とを含む。拡張メモリコントローラ203は、拡張メモリ204に接続され、拡張メモリコントローラ203は、メモリインタフェースを使用することによりプロセッサシステム201に接続される。プロセッサシステム201は、システムメモリ202に接続され、システムメモリ202は、実行可能命令を記憶するように構成される。プロセッサシステム201は、システムメモリ202に記憶された実行可能命令を実行するように構成され、これにより、プロセッサシステム201は、コンピュータにより拡張メモリにアクセスする方法の実施例に示す、コンピュータにより拡張メモリシステム内の拡張メモリにアクセスするための方法を実行する。
【０１４４】
当業者は、本発明において開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア又はこれらの組み合わせにより実現されてもよいことを認識し得る。ハードウェアとソフトウェアとの間の互換性を明確に記載するために、前述では、機能に従って各例の構成及びステップを一般的に説明している。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的解決策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現が本発明の範囲を超えると考えられるべきではない。
【０１４５】
便宜上且つ簡潔な説明の目的で、前述のシステム、装置及びユニットの詳細な動作処理について、前述の方法の実施例における対応するプロセスに参照が行われてもよく、詳細はここでは再び説明しないことが当業者により明確に理解され得る。
【０１４６】
この出願において提供されるいくつかの実施例において、開示のシステム、装置及び方法は、他の方式で実現されてもよいことが理解されるべきである。例えば、記載の装置の実施例は、単なる例である。例えば、ユニットの分割は、単に論理的な機能分割であり、実際の実現では他の分割でもよい。例えば、複数のユニット又はコンポーネントは結合されてもよく、或いは他のシステムに統合されてもよく、或いはいくつかの特徴が無視されてもよく或いは実行されなくてもよい。さらに、表示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを使用することにより実現されてもよい。装置又はユニットの間の間接結合又は通信接続は、電子的、機械的或いは他の形式で実現されてもよい。
【０１４７】
別々の部分として記載したユニットは、物理的に別々でもよく或いは別々でなくてもよく、ユニットとして表示された部分は、物理的なユニットでもよく或いは物理的なユニットでなくてもよく、１つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、本発明の実施例の解決策の目的を達成するために、実際のニーズに従って選択されてもよい。
【０１４８】
さらに、本発明の実施例における機能ユニットは、１つの処理ユニットに統合されてもよく、或いはユニットのそれぞれが物理的に単独で存在してもよく、或いは２つ以上のユニットが１つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実現されてもよく、或いはソフトウェア機能ユニットの形式で実現されてもよい。
【０１４９】
統合されたユニットがソフトウェア機能ユニットの形式で実現され、独立したプロダクトとして販売又は使用される場合、統合されたユニットは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。このような理解に基づいて、本発明の技術的解決策は、本質的に、或いは、従来技術に寄与する部分又は技術的解決策の全部若しくは一部は、ソフトウェアプロダクトの形式で実現されてもよい。ソフトウェアプロダクトは、記憶媒体に記憶され、コンピュータデバイス（パーソナルコンピュータ、サーバ又はネットワークデバイスでもよい）に対して本発明の実施例に記載の方法のステップの全部又は一部を実行するように命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ（ROM、Read-Only  Memory）、ランダムアクセスメモリ（RAM、Random  Access  Memory）、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
【０１５０】
前述の説明は、本発明の単に具体的な実施例に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術範囲内で当業者により容易に理解される如何なる変更又は置換も本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
【図１】
0006685323.tif 000002
【図２】
0006685323.tif 000003
【図３】
0006685323.tif 000004
【図４】
0006685323.tif 000005
【図５Ａ】
0006685323.tif 000006
【図５Ｂ】
0006685323.tif 000007
【図６】
0006685323.tif 000008
【図７】
0006685323.tif 000009
【図８】
0006685323.tif 000010
【図９】
0006685323.tif 000011
【図１０】
0006685323.tif 000012