(57)【要約】  本発明は、以下を備える計算システムに関する。命令で制御される１つまたは複数のプロセッサコアと、キャッシュメモリ（１１４）を備えるメモリコントローラとを有する演算装置と、データバス（１０６Ａ）およびアドレスバス（１０６Ｂ）を介してメモリコントローラ（１１２）に接続されたメモリ回路（１０４）とを備える。メモリ回路（１０４）は、アドレスバス（１０６）上に提供される複数の第１アドレスによってアクセス可能な第１のｍビットメモリロケーションを有するように適合される。演算装置（１０２）は、第１のｍビットメモリロケーションにアクセスするメモリ動作ごとに、複数の第１のアドレスの中からアドレスを選択するように構成される。
2019531546.tif 000002
【特許請求の範囲】
【請求項１】
命令で制御される１つ以上のプロセッシングコア(108)と、キャッシュメモリ(114)を含むメモリコントローラ(112)とを有する演算装置(102)と、
データバス(106A)およびアドレスバス(106B)を介して前記メモリコントローラに接続されるメモリ回路(104)と、を備える計算システムであって、
前記メモリ回路(104)は、アドレスバス(106B)上に提供される複数の第１アドレスによってアクセス可能な第１のｍビットのメモリロケーションを有するように適合され、
前記演算装置(102)は、前記第１のｍビットのメモリロケーションにアクセスするメモリの動作ごとに、前記複数の第１アドレスのうちの１つのアドレスを選択するように構成される、計算システム。
【請求項２】
前記第１のｍビットのメモリロケーションは、複数のＰ個の第１アドレスによってアクセス可能であり、
前記演算装置(102)は、前記第１のメモリロケーションにアクセスするＮ番目と（Ｎ＋Ｐ）番目のアクセス動作中に、前記第１のメモリロケーションにアクセスするために、前記アドレスのうち１番目を使用するように構成されている、請求項１に記載の計算システム。
【請求項３】
前記複数の第１アドレスの各アドレスは、第１のｎビット値および第２のｐビット値を含み、
前記演算装置(102)は、第１の選択されたｎビット値および書込データに従って生成された第２のｐビット値を有する前記第１アドレスのうちの１つを使用して、前記第１のメモリロケーションの読み出し動作を実行することによって、ｍビットの前記第１のメモリロケーションに前記書込データを書き込む動作を実行するように構成される,請求項１または２に記載の計算システム。
【請求項４】
前記メモリ回路(104)は、前記第１アドレスのうちの１つを使用して、前記第１のメモリロケーションに向けられた読み出し動作を受信することに応じて、前記アドレスの前記第２のｐビット値を前記第１のメモリロケーションに書き込むように適合される、請求項３に記載の計算システム。
【請求項５】
ｐおよびｍは正の整数であり、ｍがＰ以上である、請求項３または４に記載の計算システム。
【請求項６】
前記メモリ回路(104)は、前記アドレスバス(106B)上に提供される複数の第２アドレスによってアクセス可能な第２のメモリロケーションを有するように適合される、請求項１から５のいずれか１項に記載の計算システム。
【請求項７】
前記第１および第２のメモリロケーションは、前記メモリ回路(104)の第１のメモリロケーション範囲(304)の一部であり、前記第１のメモリロケーション範囲はスライディングアドレスウィンドウ(305)によって選択され、前記スライディングアドレスウィンドウ中では前記第１のメモリロケーション範囲のメモリロケーションが以下の（１）および（２）によってアドレス可能であり、
前記メモリ回路(104)は、第１および第２のアドレス範囲(R0,R1)内のアドレスを、前記スライディングアドレスウィンドウ(305)内の対応するアドレスに変換するように適合されたアドレス変換回路を含む、請求項６に記載の計算システム：
（１）前記第１の複数のアドレスのうちの１つおよび前記第２の複数のアドレスのうちの１つを含む第１のアドレスの範囲(R0)における対応するアドレス；
（２）前記第１の複数のアドレスのうちの別の１つのアドレスと前記第２の複数のアドレスのうちの別の１つのアドレスとを含む第２のアドレスの範囲(R1)における対応するアドレス。
【請求項８】
前記アドレス変更回路(122)は、前記スライディングアドレスウィンドウ(305)の位置を定義するためにプログラム可能な少なくとも１つのレジスタを含む、請求項７に記載の計算システム。
【請求項９】
前記アドレス変更回路(122)の前記少なくとも１つのレジスタは、前記スライディングアドレスウィンドウ(305)の位置およびサイズを定義するようにプログラム可能である、特徴とする請求項８に記載の計算システム。
【請求項１０】
前記メモリコントローラ(112)は、キャッシュクリア動作を実行するように適合され、前記キャッシュクリア動作は、前記メモリコントローラによって実行されるメモリアクセス命令の１つまたは複数のシーケンスを含み、以下の（１）、（２）、または（３）の結果ことをとなる、請求項１から９のいずれか１項に記載の計算システム：
（１）前記メモリコントローラ(112)の前記キャッシュメモリ(114)に格納されたキャッシュメモリ書き込みトランザクションの全部又は一部が、前記メモリ回路(104)に書き込まれる；
（２）前記メモリコントローラ(112)の前記キャッシュメモリ(114)に格納され、キャッシュクリア動作前に前記メモリ回路から読み出されたデータを含む読み出しデータの全部または一部を、前記キャッシュメモリからクリアする；または、
（３）前記メモリコントローラ(112)の前記キャッシュメモリ(114)に格納されたキャッシュメモリ書き込みトランザクションの全部または一部が前記メモリ回路(104)に書き込まれ、かつ、前記メモリコントローラの前記キャッシュメモリ(114)に格納された前記読み出しデータの全部または一部がキャッシュメモリからクリアされる。
【請求項１１】
前記メモリ回路(104)は、補助プロセッサ(118)をさらに含み、前記メモリアクセス命令シーケンスは、前記補助プロセッサを制御するために、前記メモリ回路(104)の１つまたは複数のコマンドレジスタにアクセスするためのレジスタアクセス命令のみを含む、請求項１０に記載の計算システム。
【請求項１２】
前記メモリ回路(104)は、前記演算装置(102)によってアクセス可能であり、前記メモリ回路(104)において実行されるメモリアクセストランザクションを記録するように適合されたモニタリング回路(126)を含み、前記演算装置(102)は、前記モニタリング回路(126)によって記録された前記トランザクションに基づいて、前記１つまたは複数のメモリアクセス命令シーケンスを生成するように構成される、請求項１０または１１に記載の計算システム。
【請求項１３】
前記メモリ回路(104)は、さらに補助プロセッサ(118)を含み、前記第１および第２のメモリロケーションは、前記補助プロセッサの制御レジスタである、請求項６に記載の計算システム。
【請求項１４】
前記演算装置(102)は、第１および第２のタイプのコマンドを生成するように構成され、前記メモリ回路(104)は、前記演算装置（102）から受信されたコマンドの順序を変更するように適合され、それにより、前記第１のタイプの第１のコマンドと第２のコマンドの間で前記演算装置(102)によって生成された前記第２のタイプのコマンドの第１のグループについて、前記第２のタイプのコマンドのグループに関連して、前記第１のタイプの前記第１および第２のコマンドの順序が尊重される、請求項１３に記載の計算システム。
【請求項１５】
前記メモリ回路(104)は、少なくとも前記第１のタイプの各順序に関連付けられた順序値に基づいて、前記コマンドの順序を変更するように適合され、前記各コマンドの順序値は以下の（１）から（３）の何れかに含まれる、請求項１４に記載の計算システム：
（１）前記コマンドの受信体の前記アドレス；
（２）前記コマンド自体；
（３）部分的に前記コマンドの受信体の前記アドレス、および部分的に前記コマンド自体。
【請求項１６】
前記演算装置(102)は、キャッシュメモリ管理命令によって設定可能なＣＰＵキャッシュメモリをさらに含み、前記コントローラメモリの前記キャッシュメモリ(114)は、キャッシュメモリ管理命令によって設定可能ではない、請求項１から１５のいずれか１項に記載の計算システム。
【請求項１７】
前記メモリ回路(104)は、不揮発性メモリマトリックスを含む、請求項１から１６のいずれか１項に記載の計算システム。
【請求項１８】
データバス(106A)およびアドレスバス(106B)を介して演算装置(102)のメモリコントローラ(112)に接続されたメモリ回路(104)にアクセスする方法であって、
前記演算装置(102)は、１つまたは複数のコアプロセッサ(108)と、キャッシュメモリ(114)を含むメモリコントローラを備え、
前記プロセスは、前記演算装置によって、前記メモリ回路(104)の第１のｍビットのメモリロケーションにアクセスするメモリの動作ごとに、複数の第１アドレスから１つのアドレスを選ぶことを含み、
前記第１のｍビットのメモリロケーションは、前記アドレスバス(106B)上に提供される前記複数の第１のアドレスのそれぞれによって、アクセス可能である方法。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願に対する相互参照〕
本願は、２０１６年６月１０日に出願された仏国特許出願第ＦＲ２０１７／５８３７３号に対する優先権を主張し、該文献は、本願明細書に統合された一部とみなされる。
【０００２】
本開示は、プロセッサ、メモリ、およびプロセッサとメモリの間のコントロールインターフェースとを備える計算システムに関する。
【背景技術】
【０００３】
ＰＩＭ(Processor In Memory) プロセッサは、メモリ回路、例えば、ＤＲＡＭメモリ回路に直接的に集積されたプロセッサである。本明細書では、このメモリ回路をＰＩＭ回路と呼ぶ。
【０００４】
ＰＩＭプロセッサは、メインプロセッサ、典型的にはIntel（登録商標）、ＡＲＭ、またはPower Processorによって制御される。本明細書では、このプロセッサをＨＣＰＵ（ホストＣＰＵ）と呼ぶ。
【０００５】
ＰＩＭプロセッサおよびＨＣＰＵは、ＰＩＭプロセッサが集積されているメモリにアクセスする。本明細書では、このメモリをＰＩＭメモリと呼ぶ。
【０００６】
仏国特許出願公開第3032814号明細書は、ＰＩＭ及びＨＣＰＵプロセッサがＰＩＭメモリにアクセスすることを可能にする方法を記載している。
【０００７】
各ＰＩＭプロセッサは、ＨＣＰＵがそれを制御できるようにするレジスタを有する。ＨＣＰＵによってアクセス可能なこれらのレジスタは、ＰＩＭ回路の物理アドレス空間において視認することができる。本明細書では、これらのレジスタをインタフェースレジスタと呼び、ＰＩＭプロセッサの全てのインタフェースレジスタをこのＰＩＭプロセッサのインタフェースと呼び、ＨＣＰＵ上で動作しこのインタフェースを制御するソフトウェアをインタフェースソフトウェアと呼ぶ。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】仏国特許出願公開第3032814号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
（コミュニケーションの特徴）
ＨＣＰＵは、通常、ＰＩＭプロセッサを使用するために、以下の動作を実行する。
・ＰＩＭメモリに、パラメータ、命令、およびデータを多数入力する。
・このＰＩＭプロセッサのいくつかのインタフェースレジスタにおいて、比較的少ないパラメータ、命令、データおよびコマンドを入力する。
・ＰＩＭプロセッサのインタフェースレジスタから、比較的少ないステータスおよび結果を読み取る。
・ＰＩＭメモリからの多くの結果を読み取る。
【００１０】
（遅延入力の問題）
ＨＣＰＵによって生成され、ＰＩＭプロセッサのインターフェース、ＰＩＭメモリのいずれかを送信先とする入力は、遅延なく処理されなければならない。
【００１１】
ＨＣＰＵはキャッシュシステムを有しており、このことがＰＩＭ回路への入力を未決定の時間だけ遅延させ得る。
【００１２】
ＨＣＰＵプロセッサは、プロセッサのキャッシュメモリにだけ書き込まれたアドレスによって指定されたデータのメインメモリにおける更新を強制するキャッシュメモリ管理のための命令を有する。
【００１３】
残念ながら、ＨＣＰＵなどの高性能プロセッサでは、ＤＲＡＭコントローラのキャッシュメモリを有する場合、これらのキャッシュメモリ管理命令は、ＤＲＡＭコントローラのキャッシュメモリに影響を及ぼさない。
【００１４】
さらに、これらの更新命令は、書き込まれたデータがＤＲＡＭコントローラに転送されることを保証するが、メモリ回路に転送されることを保証しない。
【００１５】
システムが集積ＰＩＭプロセッサを備えず通常のメモリを有する場合、メモリ回路に入力が迅速に到達するかどうかは問題ではないので、ソフトウェアは入力後にキャッシュメモリ管理命令を使用する必要がない。
【００１６】
本明細書では、キャッシュメモリ管理命令によって影響を受けるキャッシュメモリを「ＣＰＵキャッシュメモリ」と呼び、これらの命令によって影響を受けないキャッシュメモリを「ＤＲＡＭキャッシュメモリ」と呼ぶ。
【００１７】
（不揮発性メモリの入力遅延の問題）
遅延入力は、ＰＩＭプロセッサを備えない不揮発性メモリにとっても問題である。
例えば、エバースピン社が製造したＭＲＡＭメモリのようないくつかのＭＲＡＭメモリ（磁気メモリ）は、ＤＲＡＭ互換インターフェースを提供し、ＤＲＡＭコントローラとの使用を可能にするように設計されている。
【００１８】
このようなメモリを使用するコンピュータシステムの電力供給を遮断できるようになる前に、キャッシュメモリＤＲＡＭ内の待機状態にあるＭＲＡＭをターゲットとする入力がそれ以上存在しないことを確認できるようにすることが重要であり、そうでなければ、電力供給が遮断された場合にこれらの記録が失われることになる。
【００１９】
（マージされる入力の問題）
別の問題は、あるアドレスに書き込まれるべきＣｌデータがＤＲＡＭキャッシュメモリに記憶される場合、同じアドレスに新しくＣ２データが到着すると、このデータはＣ２データで置き換えられてしまう。ＤＲＡＭキャッシュメモリは、Ｃｌデータをメモリ回路に書き込まず、Ｃ２データによって置き換えることが最適であると推論してしまう。
【００２０】
この推論がメモリにとって正しければ、ＨＣＰＵのコマンドを受け取るインタフェースレジスタにとっては正しくない。ＣｌデータおよびＣ２データが２つの別個のコマンドである場合、まずＣｌデータが、次にＣ２データがＰＩＭ回路に書き込まれる必要がある。
【００２１】
（並べ替え入力の問題）
また、ＤＲＡＭキャッシュメモリは、データ入力の実行順序を変更する可能性があり、これらの入力が異なるアドレスを持っている場合でも問題となる。
【００２２】
従って、以下の順序、
・まず、ＰＡＲＡＭと呼ばれるインターフェースレジスタへコマンドパラメータの入力する
・次に、ＣＭＤと呼ばれる別のインターフェースレジスタへ対応するコマンドを入力する
で構成されるコマンドは、ＤＲＡＭキャッシュメモリによって反対の順序で実行できるので、ＣＭＤに書き込まれたコマンドは、まだ新しいパラメータが書き込まれていないＰＡＲＡＭレジスタの古い値を、パラメータとして用いて実行されるであろう。
【００２３】
（古い隠れた値の問題）
ＨＣＰＵがＡＶアドレスで値Ｖ２を読み取る場合、この値Ｖ２はＰＩＭプロセッサによって生成されたため、ＨＣＰＵによって読み取られる値は、この最新の値Ｖ２であり、この同じＡＶアドレスでのＶ２生成前の読み取り中にキャッシュメモリにコピーされた以前の値Ｖ１ではないことが重要である。
【００２４】
ＨＣＰＵプロセッサはキャッシュメモリ管理命令を有し、キャッシュメモリ内のアドレスによって指定されたデータを無効にすることができる。
【００２５】
また、ＡＶアドレスをパラメータとしてこのような命令を実行した後、値Ｖ１はもはやキャッシュメモリ内に存在せず、ＨＣＰＵがＡＶアドレスでデータを読み直す場合、ＨＣＰＵはメモリ回路から値Ｖ２を取得し、キャッシュメモリはその値Ｖ２を隠す。
【００２６】
残念ながら、これらのキャッシュメモリ管理命令は、ＤＲＡＭキャッシュメモリに影響を及ぼさない。
【００２７】
ＡＶアドレスをターゲットとする無効化命令は、値Ｖ１がもはやそのＣＰＵキャッシュメモリ内に存在しないことを保証するが、値Ｖ１がＤＲＡＭキャッシュメモリ内に存在しないことは保証しない。
【００２８】
そうである場合、このアドレスはもはやＣＰＵキャッシュメモリ内にないので、ＨＣＰＵがＡＶアドレスを再度読み取るとき、ＨＣＰＵは、ＤＲＡＭコントローラからのＡＶアドレスでの読み取りを要求する。しかし、後者は、そのＤＲＡＭキャッシュメモリからの次のような入力を有する。
・有効であり、
・ＡＶアドレスに対応し、
・まだ古い値Ｖ１を含んでいる。
【００２９】
したがって、ＰＩＭ回路から値Ｖ２を読み出す代わりに、ＤＲＡＭコントローラは、そのＤＲＡＭキャッシュメモリから値Ｖ１を返すだけである。
【００３０】
システムが、集積ＰＩＭプロセッサを備えず、通常のメモリを有する場合、ソフトウェアは、データを読み取る前にキャッシュメモリ管理命令を使用する必要がない。ＨＣＰＵだけがメモリを変更するので、ＣＰＵキャッシュメモリ内のデータは常に最新である。一方で、ＰＩＭプロセッサを有するシステムでは、ＰＩＭプロセッサもメモリを変更することができる。
【００３１】
（ＨＣＰＵの変更）
最も論理的な解決策は、キャッシュメモリ管理命令がＤＲＡＭキャッシュにも影響を与えるようにＨＣＰＵを変更することである。
【００３２】
残念ながら、ＨＣＰＵ製造業者にそのように変更を説得することは非常に難しい。
・ＨＣＰＵの設計コストは非常に高く、そのような設計には数年かかる。
・このような変更によるＨＣＰＵの設計の遅れは、製造業者にとって非常に高いコストとなる。
・このような変更によるＰＩＭプロセッサのサポートは、製造業者の工業およびマーケッティング戦略に反する可能性がある。
【００３３】
したがって、ＨＣＰＵの変更を必要とせず、ＰＩＭプロセッサのインタフェースにおいて、インタフェースソフトウェアによって完全に実施される、ＨＣＰＵとＤＲＡＭに集積されたＰＩＭプロセッサ間の通信の問題に対する解決策が必要である。
【００３４】
（発明の概要）
したがって、実施形態は、以下を備える計算システムを提供する。計算システムは、１つ又は複数の命令によって制御されるプロセッシングコア及びキャッシュメモリを備えるメモリコントローラを有する演算装置、および、データバス及びアドレスバスを介して前記メモリコントローラに接続されるメモリ回路と、を備える。前記メモリ回路は、前記アドレスバス上に提供される複数の第１のアドレスによってアクセス可能な第１のｍビットメモリロケーションを有するように構成され、前記演算装置は、前記第１のｍビットメモリロケーションにアクセスするメモリの動作ごとに、前記複数の第１のアドレスからアドレスを選択するように構成される。
【００３５】
一実施形態によれば、第１のｍビットメモリロケーションは、Ｐ個の複数の第１のアドレスによってアクセス可能であり、演算装置は、第１のメモリロケーションにアクセスするためのＮ番目および（Ｎ＋Ｐ）番目の動作中に、第１のアドレスのうちの１つを使用して第１のメモリロケーションにアクセスするように構成される。
【００３６】
一実施形態によれば、複数の第、のアドレスのそれぞれのアドレスは、ｎビットの第１の値と、ｐビットの第２の値とを含み、演算装置は、書き込みデータに従って生成された第1の選択されたnビット値および第2のpビット値を有する第1のアドレスのうちの１つを使用して、第1のメモリロケーションの読み出し動作を実行することによって、第１のロケーションメモリのｍビットへのデータ書き込み動作を実行するように構成される。
【００３７】
一実施形態によれば、メモリ回路は、第１のアドレスのうちの１つを使用する第１のメモリロケーションにおける読み出し動作を受信することに応じて、第１のメモリロケーションにおけるアドレスの第２のｐビット値が書き込まれるように適合される。
【００３８】
一実施形態によれば、ｐおよびｎは整数であり、ｎはｐ以上である。
【００３９】
一実施形態によれば、メモリ回路は、アドレスバス上に提供される複数の第２のアドレスを介してアクセス可能な第２のメモリロケーションを有するように適合される。
【００４０】
一実施形態によれば、第１および第２のメモリロケーションは、メモリ回路の第１のメモリロケーション範囲の一部であり、第１のメモリロケーション範囲は、スライディングアドレスウィンドウによって選択され、第１のメモリロケーション範囲のメモリロケーションは、以下によって、アドレス指定可能である：
第１の複数のアドレスのうちの１つおよび第２の複数のアドレスのうちの１つを含むアドレスの第１の範囲内の対応するアドレス；
第1の複数のアドレスのうちの１つおよび第２の複数のアドレスのうちの１つを含む第２のアドレス範囲における対応するアドレス；
前記メモリ回路は、前記第１および第２のアドレス範囲のアドレスを前記スライディングアドレスウィンドウの対応するアドレスに変換するように適合されたアドレス変換回路を含む。
【００４１】
一実施形態によれば、アドレス変換回路は、スライディングアドレスウインドウの位置を定義する少なくとも1つのプログラマブルレジスタを含む。
【００４２】
別の実施形態によれば、前記少なくとも１つのアドレス変換回路レジスタは、スライディングアドレスウィンドウの位置およびサイズを定義するようにプログラム可能である。
【００４３】
別の実施形態によれば、メモリコントローラは、キャッシュメモリ退避の動作を実行するように構成され、キャッシュメモリ退避動作は、以下の結果をもたらすメモリコントローラによって実行される１つまたは複数のメモリアクセス命令シーケンスを含む。
・メモリコントローラのキャッシュメモリに格納されたキャッシュメモリ書き込みトランザクションの全部又は一部がメモリ回路に書き込まれる。
・メモリコントローラのメモリキャッシュに記憶された読み出しデータの全部または一部がメモリキャッシュから除去され、読み出しデータはキャッシュの退避動作によってメモリ回路から読み出されたデータを含む。
・メモリコントローラのメモリキャッシュに記憶されたキャッシュメモリ読み出しトランザクションの全部または一部がメモリ回路に書き込まれ、メモリコントローラのキャッシュメモリに記憶された読み出しデータの全部または一部がキャッシュメモリからクリアされる。
【００４４】
別の実施形態によれば、メモリ回路は、補助プロセッサをさらに含み、記憶アクセス命令のシーケンスは、補助プロセッサを制御するためにメモリ回路の1つ以上の制御レジスタにアクセスするためのレジスタアクセス命令のみを含む。
【００４５】
別の実施形態によれば、メモリ回路は、演算装置によってアクセス可能であり、メモリ回路で実行される記憶アクセストランザクションを記録するように適合されたモニタリング回路を含み、演算装置は、モニタリング回路によって記録されたトランザクションに基づいて前記１つまたは複数のメモリアクセス命令シーケンスを生成するように構成される。
別の実施形態によれば、メモリは補助プロセッサをさらに含み、第１および第２のメモリロケーションは補助プロセッサ制御レジスタである。
【００４６】
別の実施形態によれば、演算装置は、第１のタイプおよび第２のタイプのコマンドを生成するように構成され、メモリ回路は、計算装置から受信したコマンドの順序を、第１のタイプの第1のコマンドと第２のコマンドとの間で計算装置によって生成された第２のタイプのコマンドの第１のグループについて、第２のタイプのコマンドグループに関する第１のタイプの第１のコマンドおよび第２のコマンドの順序が尊重されるように変更するように適合される。
【００４７】
別の実施形態によれば、メモリ回路は、少なくとも第１のタイプの各コマンドに関連付けられた順序値に基づいてコマンドの順序を変更するように適合され、各順序の順序値は、以下の何れかに含まれる：
コマンドの受信体のアドレス、
コマンド自体、または
部分的にはコマンド受信体のアドレスに、部分的にはコマンド自体に。
【００４８】
別の実施形態によれば、演算装置は、キャッシュメモリ管理命令によって設定することができるＣＰＵキャッシュメモリをさらに含み、メモリコントローラのキャッシュメモリは、キャッシュメモリ管理命令によって設定することができない。
【００４９】
別の実施形態によれば、メモリは不揮発性メモリマトリクスを含む。
【００５０】
別の実施形態は、データバスおよびアドレスバスを介して演算装置のメモリコントローラに接続されたメモリ回路へのアクセスプロセスを提供し、計算デバイスは、１つまたは複数のプロセッシングコアと、キャッシュメモリを備えたメモリコントローラを有し、前記プロセスは、演算装置によって、メモリ回路の第１のｍビットメモリロケーションにアクセスするメモリの動作ごとに、複数の第1のアドレスから１つを選択することを含み、第１のｍビットメモリロケーションは、アドレスバス上に提供される複数の第１のアドレスのそれぞれによってアクセス可能である。
【００５１】
別の実施形態によれば、メイン回路と少なくとも１つのメモリ回路とから構成されるシステムが提供される。メイン回路は、少なくとも１つのメインプロセッサと、メモリ回路に接続されたメモリコントローラとを備え、メモリコントローラは、メインプロセッサのキャッシュメモリ管理命令によって影響を受けないキャッシュメモリを備える。メモリ回路は、少なくとも１つの補助プロセッサを備え、この補助プロセッサは、メインプロセッサにアクセス可能なインタフェースを備え、このインタフェースはレジスタを備え、各インタフェースレジスタは、複数のアドレスを介してメインプロセッサによってアクセス可能であり、このインタフェースは、メインプロセッサ上で動作するソフトウェアによって制御され、ソフトウェアは、インタフェースの所与のレジスタへのアクセスごとに、所与のレジスタに対応する複数のアドレスから１つのアドレスを選択する。
【００５２】
別の実施形態によれば、所与のインターフェースレジスタにアクセスするためのアドレスの選択は、このレジスタへのＮ番目アクセス中に使用されるアドレスが、このレジスタへの（Ｎ＋Ｐ）番目アクセス中に使用されるように行われ、Ｐは、このレジスタに関連する複数のアドレスを構成するアドレスの数である。
【００５３】
別の実施形態によれば、少なくとも１つのインターフェースレジスタへのアクセスアドレスは、メジャーフィールドと呼ばれる第１のｎビットフィールドを、マイナーフィールドと呼ばれる第２のｐビットフィールドと組み立てることによって構築され、メジャーフィールドの値は、複数の値の中から選択され、マイナー・フィールドの値は、０と（２＾Ｐ）−１との間に含まれる任意の値を有することができ、アドレス｛メジャーフィールド、マイナーフィールド｝でのインターフェースレジスタの読み取りは、マイナーフィールド値によるその書き込みを含み、ソフトウエアは、レジスインターフェースに値を書き込むためにそのような読み取りを使用する。
【００５４】
別の実施形態によれば、マイナーフィールドの考えられる値は、インターフェースレジスタに書き込むことができる値に制限される。
【００５５】
読み出し動作中に、メモリに書き込まれるビットを送信するためにアドレスフィールドを使用することの利点は、書き込み動作の場合のように、読み出し動作がキャッシュメモリにおいて待機状態に置かれる可能性が低いことである。
【００５６】
別の実施形態によれば、インターフェースレジスタは、メモリ回路の記憶範囲上の追加のアクセスウィンドウの位置、および必要に応じて、その大きさを設定することを可能にし、このアクセスウィンドウは、複数のアドレス範囲を介してアクセス可能であり、インターフェースソフトウェアは、アクセスウィンドウを関係するメモリ範囲上に配置することによって、回路メモリのメモリへのアクセスを提供し、そのアクセスウィンドウにアクセスすることを可能にする複数のアドレス範囲の中からアクセスアドレスを選択する。
【００５７】
別の実施形態によれば、インターフェースソフトウェアは、アクセスウインドウへのＮ番目アクセスのアドレスが所与のアドレス範囲から選択される場合、（Ｎ＋Ｐ）番目のアクセスのアドレスが同じアドレス範囲（Ｐは複数のアドレス範囲を構成するアドレス範囲の数）で選択されるように、アクセスウインドウにアクセスするアドレスを選択する。
【００５８】
別の実施形態によれば、インターフェースを制御するソフトウェアは、1組の所定のアクセスシーケンスから選択されたアクセスシーケンスを使用して、このシーケンスの前に発行された書き込みトランザクションをメモリコントローラのキャッシュから除去し、したがって、これらの書き込みトランザクションの効果的な実行を強制し、所定のアクセスシーケンスの決定は、メモリコントローラのキャッシュから、既知の特性または観測から推定された特性から行われる。
【００５９】
別の実施形態によれば、インターフェースを制御するソフトウェアは、１組の所定のアクセスシーケンスから選択されたアクセスシーケンスを使用して、このシーケンスの前に読み取られたデータをコントローラメモリキャッシュから除去し、所定のシーケンスの決定は、コントローラメモリキャッシュの観測から既知または推測される特性から行われる。
【００６０】
別の実施形態によれば、インターフェースを制御するソフトウェアは、１組の所定のアクセスシーケンスの中から選択されたアクセスシーケンスを使用して、コントローラメモリキャッシュから書き込みトランザクションおよびこのシーケンスの前に読み取られたデータを除去し、所定のシーケンスの決定は、メモリ・コントローラ・キャッシュの既知のまたは観察から推論された特性に基づく。
【００６１】
別の実施形態によれば、アクセスシーケンスは、メモリ回路に関連づけられる物理アドレスのサブセットに対応して、書き込みトランザクションまたはリードデータがメモリコントローラキャッシュから退避するのを保証するだけであるように低減される。
【００６２】
別の実施形態によれば、前記所定のアクセスシーケンスは、インターフェースレジスタへのアクセスのみを含む。
【００６３】
別の実施形態によれば、インターフェースは、メモリ回路に最後に到達したトランザクションを記録するメカニズムを含み、この記録メカニズムは、インターフェース自体を介してメインプロセッサによってアクセス可能である。別の実施形態によれば、インターフェースを制御するソフトウェアは、前もって最後のトランザクションの記録メカニズムを使用して、前記所定のアクセスシーケンスを自動的に決定する。
【００６４】
別の実施形態によれば、インターフェースは、ＨＣＰＵからコマンドを受け取ることができる少なくとも１つのコマンドレジスタを含み、これらのコマンドは、高く順序付けられたコマンドと低く順序付けられたコマンドとに分類される。２つの高く順序付けられたコマンド間に発行される低く順序付けられたコマンドは、低く順序付けられたコマンドが順不同で実行されることができる低く順序付けられたコマンドのセットを形成し、高く順序付けられたコマンドは、他の高く順序付けられたコマンドに対して、および低く順序付けられたコマンドのセットに対して、順序付けられて実行される。
【００６５】
別の実施形態によれば、インターフェースは、ＨＣＰＵからコマンドを受け取ることができる少なくとも１つのコマンドレジスタを備え、これらのコマンドはすべて高い順序に順序付けられている。
【００６６】
別の実施形態によれば、コマンドは、コマンド自体に含まれる数の使用によって並べ替えられる。
【００６７】
別の実施形態によれば、コマンドは、コマンドアドレスに含まれる数の使用によって並べ替えられる。
【００６８】
別の実施形態によれば、コマンドは、数の使用によって並べ替えられ、数の一部はコマンド自体に含まれ、残りはコマンドのアドレスに含まれる。
【００６９】
別の実施形態によれば、補助プロセッサはメモリ回路に集積されず、メモリ回路に接続された回路に埋め込まれる。
【００７０】
別の実施形態によれば、集積プロセッサはなく、メモリは不揮発性である。
【図面の簡単な説明】
【００７１】
これらおよび他の特徴および利点は、添付の図面に関連して以下の特定の実施形態の網羅的でない記述において詳述される。
【図１】図１は、実施形態による計算システムを模式的に示す。
【図２】図２は、実施形態による図１のシステムのメモリインターフェースをより詳細に示す。
【図３】図３は、別の実施形態による図１のシステムのより詳細なメモリインターフェースを示す。
【発明を実施するための形態】
【００７２】
（ＤＲＡＭキャッシュ）
（ＤＲＡＭキャッシュメモリのサイズ）
ＤＲＡＭキャッシュメモリの存在は、以下の最適化を可能にする。
・ページオープン、特に低速動作を最小限に抑えるために、特にリフレッシュ要求を含むメモリ回路への要求を再スケジューリングすること。
・近い将来おそらくアクセスされるデータの予想される読み込み。
ＣＰＵキャッシュメモリのサイズがかなり大きい（最大数十Ｍｂ）ということは、ＤＲＡＭキャッシュメモリが、それが達成できる性能向上の本質的な部分に対して大きなサイズである必要がないことを意味する。
【００７３】
ＨＣＰＵ製造業者のマーケティング文書は、常に、ＣＰＵキャッシュメモリのサイズには言及しているが、ＤＲＡＭキャッシュメモリについては存在そのものに言及していないことは注目に値する。これは、ＤＲＡＭキャッシュメモリのサイズが、ＣＰＵキャッシュメモリのサイズに比べて、重要でないからである。
【００７４】
（応用可能性）
これらの技術がＤＲＡＭキャッシュメモリ上で動作するならば、それらがＣＰＵキャッシュメモリ上でも動作するであろうことが想像できるので、キャッシュメモリ管理命令なしで完全に実行するために、以下に説明する技術を使用するかどうかという問題が生じる。
【００７５】
しかし、これらの技術は大きなキャッシュメモリに適用される場合には効果的ではなく、そのため、キャッシュメモリ管理命令は、そのようなキャッシュメモリの管理によく適合される。
【００７６】
また、キャッシュメモリ管理命令を使用しない理由はなく、記述された技術は、それらを完成させ、置き換えないために使用される。
【００７７】
（規約：キャッシュメモリ管理命令の暗黙の使用）
本明細書では、説明を簡略化するために、キャッシュメモリ管理命令は、以下の場合に暗黙的に使用されるものとする。
【００７８】
「ＨＣＰＵがデータを書き込む」といった場合は、ＨＣＰＵは実際には以下の２つの動作を実行することを理解されたい。
・ＨＣＰＵは、通常の書き込み命令を用いてこのデータをメモリに書き込む。
・ＨＣＰＵは、ＣＰＵキャッシュメモリの対応する入力を更新するが、ＤＲＡＭキャッシュメモリに影響しないキャッシュメモリ管理命令を使用する。
【００７９】
「ＨＣＰＵがデータを読み取る」といった場合には、ＨＣＰＵは実際には以下の２つの動作を実行することを理解されたい。
・ＨＣＰＵは、ＣＰＵキャッシュメモリの対応する入力を無効にするが、ＤＲＡＭキャッシュメモリに影響しないキャッシュメモリ管理命令を使用する。
・ＨＣＰＵは、通常の書き込み命令を用いてメモリ内のこのデータ読み出す。
【００８０】
（メモリバリア命令の暗黙の使用）
ＨＣＰＵは、通常、高性能のプロセッサであり、したがって、順序を変えて命令を実行することができ（Out of order processor：000プロセッサ）、キャッシュメモリ管理命令に加えて、「メモリバリア」命令の使用が可能であり、適切な順序で命令の実行を強制することができる。
【００８１】
ＭＢ(Memory Barrier)命令は、ＢＭ命令の後の命令によって生成されるアクセスが実行される前に、ＢＭ命令の前の命令によって生成されるすべてのアクセスがＣＰＵキャッシュメモリの観点から完全に実行されることを保証する。
【００８２】
ＨＣＰＵの命令のセットは、最適性能のために、この概念に近い変形を含み、例えば、書込みのみまたは読込みのみのためのバリア命令を含む。
【００８３】
これら全ては当業者に周知であり、適用可能な場合には、当業者は最も適切なバリア命令を選択する。
【００８４】
（インターフェースレジスタの解決法）
上記課題を解決するための技術は、以下を含む。
・インタフェースレジスタに関する問題の解決。
・ＰＩＭメモリに関する問題の解決
インタフェースレジスタの数がＰＩＭメモリのメモリワードの数よりもはるかに少ないという事実から差異が生じる。
【００８５】
「マッピングされた」レジスタという表現は、レジスタが物理アドレスによってアクセス可能であることを意味する。レジスタは数回マッピングすることができる。それは、いくつかの異なる物理アドレスによってアクセス可能であることを意味する。
【００８６】
（インタフェースレジスタ数の削減）
図１は、例えば、ＤＤＲタイプ（英語の「ダブルデータレート」から）のバスによってメモリ回路１０４に接続されたプロセッシング装置１０２を含む計算システムを示している。バスは、例えば、データバス１０６Ａおよびアドレスバス１０６Ｂを含む。
【００８７】
装置１０２は、例えば、１つ以上の処理コア１０８、ＣＰＵ（Central Processing Unit）キャッシュメモリ１１０、およびキャッシュメモリ１１４を含むメモリコントローラ１１２を含む。キャッシュメモリ１１４は、例えば、メモリ回路１０４がＤＲＡＭ型メモリである場合にはＤＲＡＭキャッシュである。
【００８８】
メモリ回路１０４は、例えば、メモリ１１６、プロセッシング装置１１８、およびインターフェース１２０を含む。さらに、回路１０４は、例えば、１つ以上のレジスタ１２４およびモニタリング回路1２６を含むアドレス変換回路１２２を含む。
【００８９】
この解決法によれば、各インタフェースレジスタは数回マッピングすることができ、その回数はＤＲＡＭキャッシュメモリの特性に依存する。
【００９０】
所定サイズの物理アドレスの範囲では、インターフェースレジスタの数が少なければ少ないほど、それらの各々を多数回マッピングすることができる。非常に少ないインターフェースレジスタを有するインターフェースを実装することも可能であり、したがって、間接アクセスシステムを使用して、そのレジスタの各々を多数回マッピングさせることができる。
【００９１】
例えば、ＰＩＭプロセッサ１１８のインターフェースは、直接アクセス可能なレジスタを３個だけ備え、はるかに多くのレジスタへの間接アクセスを可能にすることができる。
・index＿register、書き込み時のみアクセス可能
・write＿register、書き込み時のみアクセス可能
・read＿register、読み取り時のみアクセス可能
このようなインターフェースは、多数のレジスタへの間接的なアクセスを提供する。
【００９２】
間接的にしかアクセスできないレジスタを読み取るには、
・このレジスタのインデックスを、インデックスレジスタに書き込む必要がある。
・read＿registerを読み込む必要がある。
【００９３】
間接的にしかアクセスできないレジストリを書き込むには、
・このレジスタのインデックスは、インデックスレジスタに書き込む必要がある。
・書き込むべきデータを、書き込みレジスタに書き込む必要がある。
【００９４】
本明細書では、ＨＣＰＵによって直接アクセス可能なＰＩＭプロセッサのインタフェースレジスタのセットのみが、このＰＩＭプロセッサのインタフェースと呼ばれ、本発明の観点からは、間接的にアクセス可能なレジスタは、ＰＩＭプロセッサのインタフェースの一部ではない。
【００９５】
（インタフェースレジスタ毎の多数アドレスの生成）
図２に示されるように、メモリ回路１０４は２＾Ｎのメモリワードを含むが、多くのアドレスを生成するために、これはｉ＞０である２＾（Ｎ＋ｉ）のメモリワードを有すると記述される。
【００９６】
サイズが２＾Ｎである物理アドレスの範囲は、メモリワードをマッピングするために割り当てられ、ＰＩＭプロセッサのインターフェース１２０のレジスタ２０２および２０４をマッピングするために利用可能なサイズが（（２＾ｉ）−１）ｘ（２＾Ｎ）である物理アドレスの範囲が残り、これらのレジスタの各々を多数回マッピングすることが可能になる。
【００９７】
ブートコード（ＢＩＯＳ／ブート・ファームウェア）およびオペレーティングシステム（ＯＳ）は、記述されたサイズではなく、メモリの実際のサイズを考慮に入れなければならない。
・システム起動中に実行されるメモリテストは、実際のメモリに対応する物理アドレスの範囲のみに関係するものでなければならない。
・ＯＳは、メモリの実際のサイズを考慮に入れて、そのメモリアロケータのデータベースを初期化しなければならない。
【００９８】
（インタフェースレジスタのための本発明のメカニズム）
インターフェースレジスタの場合、インターフェースソフトウェアは、レジスタへのアクセス（例えば、図２のレジスタ２０２へのアクセス２０８、およびレジスタ２０４へのアクセス２１０）ごとに、それをマッピングする異なるアドレスを使用する。
【００９９】
結果として、
・ＤＲＡＭキャッシュメモリは、アドレスが一致しないので、その入力の１つに既に持っているデータを提供せず、ＤＲＡＭキャッシュメモリに影響しないキャッシュメモリ無効化命令の問題を解決する。
・マージにはトランザクションが同じアドレスを有するが必要なので、ＤＲＡＭキャッシュメモリは、書き込みトランザクションをマージしない。
・ＤＲＡＭキャッシュメモリはすぐに「オーバーフロー」してしまうので、当然、そこに格納された書き込みトランザクションを転送する。
【０１００】
最後の点について、インタフェースソフトウェアには、以下のことが可能である。
・アドレス指定されたインタフェースレジスタを再度読出すことによって、書込みが実際に実行されることを、いつでも保証する（もちろん、このレジスタをマッピングする別のアドレスを使用して）。
・一連の入力の後、読み出しまたは書き込みで、ＤＲＡＭキャッシュメモリから以前の書き込みを押し出すことを唯一の目的とする「偽」アクセスを生成することができる（そして、これらの入力が実際に行われたことを確認でき、そうでない場合には、新しい偽アクセスを生成することができる）。
【０１０１】
もちろん、インターフェースレジスタは、無限の回数だけマッピングすることはできないので、このレジスタへのアクセスがある回数を過ぎると、それをマッピングするアドレスのセットが使い尽くされ、すでに利用されているアドレスが再び利用されることになる。
【０１０２】
このため、アドレスが再利用される前に、ＤＲＡＭキャッシュへの入力がこのアドレスに関連付けられることがないように、各インタフェースレジスタの利用可能なアドレスのセットは十分に多くなければならない。
【０１０３】
インタフェースレジスタをマッピングする全てのアドレスの最小サイズは、もちろん、  ＤＲＡＭキャッシュメモリのサイズおよび特性によって決まる。
【０１０４】
（アドレスリストの簡単な生成）
制御レジスタをマッピングする一連のアドレスは、円関数Ｆによって生成される：
アドレスＡ１を利用する場合、次のアドレスＡ２は、Ｆ（Ａ１）で与えられる
「現在のアドレス」と呼ばれるメモリワードに関連する状態は、その最後のアクセスに利用されたアドレスによって要約される（アドレスの一部が固定されている場合は、このアドレスのフィールドを参照のこと）。
【０１０５】
（共用アドレスのシリーズ）
いくつかのインターフェースレジスタは、それぞれが個々の現在のアドレスに関連付けられる代わりに、共用の現在のアドレスを利用することができ、これは、以下のように、アクセスごとに管理される。
・レジスタへのアクセスのためのアドレスは、考慮されるレジスタに依存するオフセットと、共用の現在のアドレスとの和の結果である。
・アクセスに続いて、共用の現在アドレスが関数Ｆによって更新される。
【０１０６】
（コマンドライティングのリスケジュール）
本明細書では、コマンドを受け取ることができるインタフェースレジスタを、ドキュメントコントロールレジスタと呼び、このようなレジスタに到着するコマンドは２つのクラスに分けられる。
弱く順序付けられたクラス：例えば、データ書き込みコマンド、命令およびパラメータを含む。
高く順序付けられたクラス：例えば、以下のコマンドを含む；
・ＰＩＭプロセッサの起動
・ＰＩＭプロセッサの停止
・ＰＩＭプロセッサのステータスの取得
コマンドの一方または他方のクラスへの帰属は、コマンド自体にコード化される。順序付けの規則は、以下の通りである。
【０１０７】
弱く順序付けられたコマンドは、他の弱く順序付けられたコマンドに対して、順序付けがされない。したがって、
・別の弱く順序付けられたコマンドより前に発行された弱く順序付けられたコマンドは、それ（他の弱く順序付けられたコマンド）より後に実行することができる。
【０１０８】
弱く順序付けられたコマンドは、高く順序付けられたコマンドに対して、順序付けがされる。したがって、
・強く順序付けられたコマンドの前に発行された弱く順序付けられたコマンドは、後者の後に実行することができない。
・高く順序が付けられたコマンドの後に発行された弱く順序付けられたコマンドは、後者の前に実行することができない。
【０１０９】
高く順序付けられたコマンドどうしは、互いに対して順序付けられる。したがって、
・別の高く順序付けられたコマンドの前に発行された高く順序付けられたコマンドは、後者の後で実行できない。
【０１１０】
（高く順序付けられたコマンドのリスケジューリング）
ＤＲＡＭキャッシュメモリがあるために、強く順序付けられたコマンドは、コマンドレジストリを受信することによって、順不同に受信され得るが、これらのコマンドは、コマンド生成の順序で実行されなければならない。この目的のために、強く順序付けられたコマンドは、コマンド生成中に番号が付けられる。
【０１１１】
（コマンドの番号付）
この方法では、あるコマンドレジスタに宛てられた強く順序付けられた各コマンドは、コマンドに番号を付けるために使用されるｎビットの範囲を含む。
【０１１２】
さらに、以下のハードウェアリソースがコマンドレジスタに関連付けられる：
・実行すべき高く順序付けられたコマンドの現在の番号を含む、「現在コマンド番号」と呼ばれるｎビットのカウンタ。
・コントロールバッファと呼ばれる２＾Ｎ個の入力のメモリであって、それぞれの入力は、以下の通りである。
【０１１３】
（１）有効状態、無効状態いずれも取り得、
（２）初期では、無効状態であり、
（３）有効状態においては、高く順序付けられたコマンドを記憶することができる。
【０１１４】
これらのハードウェアリソースは、以下のアルゴリズムに従う：
・高く順序付けられたコマンドがコマンドレジスタに書き込まれると、その番号Ｖが現在コマンド番号と比較される。
【０１１５】
（１）番号が一致する場合、コマンドが実行され、
（２）そうでなければ、コマンドはバッファコマンド入力に［Ｖ］と記録され、この入力は有効として記録され、
（３）コマンドが完了すると、現在コマンド番号はインクリメントされ、その新しい値はＷと記される。
【０１１６】
コマンドバッファへの［Ｗ］入力が有効である場合、それを含むコマンドが実行され、入力は無効として記録される。
【０１１７】
インタフェースソフトウェアは、最後に実行されたコマンドを確認するために現在コマンド番号を読み取ることができ、それによって、どれだけのコマンドが実行されたか、したがって、コマンドバッファの容量を超えることなく、どれだけの新しい強く順序付けられたコマンドを生成できるかを知ることができる。したがって、前のコマンドが実行されるごとに、高く順序付けられたコマンドを生成することができる。
【０１１８】
高く順序付けられたコマンドと弱く順序付けられたコマンドとの区別を確立することのより、以下のことが可能となる。
・コマンドバッファのサイズを制限する。
・弱く順序付けられたコマンドを、発行順ではなく到着順で実行し、そのことによって性能を向上させる。
・インタフェースがそれをサポートする内部並列処理機構を有する場合、弱く順序付けられたコマンドを並列して実行する。
【０１１９】
（アドレスの番号付け）
この方法は、前述した方法の変形例であり、コマンドが書き込まれるアドレスの一部をコマンド番号として用いる。
【０１２０】
コマンドレジスタをマッピングする一連のアドレスは、円関数Ｆによって生成される：
Ａｌアドレスが利用される場合、Ａ２によるアドレスはＦ（Ａｌ）によって与えられる。
【０１２１】
関数Ｆは：
・ＣＡとマークされたアドレスのｎビット範囲のみを修正する。
・ＣＡのＭ個の可能な値のうちＥ個のセットを定義する。
【０１２２】
コマンドレジスタは、以下のハードウェアリソースに関連付けられる。
・実行すべき高く順序付けられたコマンドの現在の番号を含む、現在コマンド番号と呼ばれるｎビットのカウンタ。
・コマンドバッファと呼ばれるＭ個の入力のメモリであり、各入力は、
（１）組Ｅの値のうち１つによってのみインデックス付けされ、
（２）有効状態または無効状態にすることができ、
（３）初期では無効状態であり、
（４）有効状態において、高く順序付けられたコマンドを保存することができる。
【０１２３】
これらのハードウェアリソースは、以下のアルゴリズムに従う：
・高く順序が付けられたコマンドがコマンドレジスタに到着すると、そのＣＡフィールドは、現在コマンド番号の値と比較される。
【０１２４】
（１）ＣＡと現在コマンド番号が一致する場合、コマンドが実行され、
（２）さもなければ、コマンドは、このＣＡインデックスを有するコマンドバッファのエントリに記録され、この入力は有効と記録される。
【０１２５】
高く順序付けられたコマンドが完了すると、現在コマンド番号は関数Ｆによって変更される。そして、
（１）新しい現在コマンド番号によって指定されたコマンドバッファの入力が有効である場合、それを含むコマンドが実行され、その入力は無効としてフラグが立てられる。
【０１２６】
（混合番号付）
この方法は、上述の両方の方法を利用する。コマンド番号は、部分的にはアドレスフィールドと、部分的にはコマンドフィールドとから構成される。
【０１２７】
（弱く順序付けられたコマンドのリスケジュール）
弱く順序付けられたコマンドは、リスケジュールされる必要はなく、以下のことが保障されるだけでよい。
【０１２８】
（１）弱く順位付けられたコマンドを生成する前に、実行されることを待つ高く順位付けられたコマンドがないこと、
（２）高く順位付けられたコマンドを生成する前に、実行されるのを待つ弱く順位付けられたコマンドがないこと。
【０１２９】
上記第１の点は、インタフェースソフトウェアによって、以下の事項を知ることができるため、容易に確認される。
【０１３０】
・高く順位付けられたコマンドがいくつ発行されたか
・現在コマンド番号を読み込むことで、高く順位付けられたコマンドがいくつ実行されたか。
【０１３１】
第２の点は、各コマンドレジスタによって受信された弱く順位付けられたコマンドがいくつ実行されたかをカウントするレジスタを、各コマンドレジスタに関連付けることによって容易に確認される。
【０１３２】
注：コマンドの到着速度が、コマンドの実行速度よりも高い場合には、弱く順序付けられたコマンドを記憶するためにＦＩＦＯを利用してもよい。
【０１３３】
（早期読取りの回避）
ＤＲＡＭキャッシュメモリが早期読み取りを実行することを避けることが望ましい。このタイプの読み取りは、ＤＲＡＭキャッシュが、各アクセスがその前のアクセスから固定された「アドレス距離」（厳密なアドレス）で起こる一連のアクセスのような、通常のアクセスパターンに従うときに、自動的に引き起こされる可能性がある。ＤＲＡＭキャッシュメモリは、このようなアクセスパターンを検出し、このアクセスパターンに基づいて予めデータの読み出しを決定することができるロジックを有することができる。
【０１３４】
注：最も一般的な割当てポリシーである遅延書込み割当てポリシー（「ライトバック」）を有するＣＰＵキャッシュメモリでは、平均してメモリへの書込みが最も効率的であるため、最初に読取りが実行される。
【０１３５】
早期の読み取りを避けるために、同じインタフェースレジスタの利用可能なアドレスのセットは、このレジスタへの３つの連続するアクセス、Ｎ、Ｎ＋１およびＮ＋２に対して以下のように走査されることが望ましい。
【０１３６】
アドレス（Ｎ＋２）−アドレス（Ｎ＋ｌ）＜＞アドレス（Ｎ＋ｌ）−アドレス（Ｎ）
ＤＲＡＭキャッシュメモリの早期読取りのこのロジックに関し、これは、一連のアクセスのアドレスが同じＤＲＡＭページに残っているか否かという事実を考慮に入れる可能性が高く、インターフェースレジスタにアクセスするために利用される一連のアドレスは、この事実を考慮に入れなければならない。
【０１３７】
当業者は、ＤＲＡＭキャッシュメモリの早期読出しストラテジの機能に応じて、アドレス使用の順序が多かれ少なかれ複雑になり得るが、早期ローディングストラテジが起動されず、いかなる通常のアクセスパターンも認識しないような順序を生成することが可能であるとき、容易に理解するであろう。
【０１３８】
いずれにせよ、起こり得る早期の読み取りから保護するために、ＰＩＭプロセッサのインターフェースは、それらの読取りによって変更されるレジスタを含まないことが望ましい。
【０１３９】
（ＰＩＭメモリ用の解決）
インタフェースレジスタへのアクセスの問題は、基本的に、これらのレジスタの各々が複数回マッピングされるという事実によって解決される。
【０１４０】
これは、ＰＩＭメモリでは不可能である。例えば、２＾（Ｎ＋２）個のメモリワードを含むメモリとして記述されるが、実際には２＾個のメモリワードしか含まないメモリを考える。そのようなメモリは、メモリワードより４倍多いアドレスを有する。
【０１４１】
対称性によって、ＰＩＭメモリへのアクセスの問題を解決し、いくつかのメモリワードを他のメモリワードよりも多くマッピングすることは有益ではないと考えるのが妥当である。したがって、以下の分配を行うことが論理的であろう：
・メモリ回路の物理アドレス空間の１／４は、ＰＩＭプロセッサのインタフェースに充てる。そのレジスタの数は非常に少ないので、これらのレジスタの各々は何百万回もマッピングされ、これらのインタフェースレジスタに対するアクセス問題を容易に解決することができる。
【０１４２】
物理アドレス空間の３／４は、ＰＩＭメモリ自体のマッピング専用であり、実際には各メモリワードを３回しかマッピングすることができない。
【０１４３】
結論として、アドレス変更機構が各アクセスに対して有効であるのに十分な回数だけメモリワードをマッピングすることは不可能である。
【０１４４】
（スライドウインドウを利用した解決法）
メモリが４倍大きいことを公表する代わりに、さらに大きいことを公表することが必要であるが、これは、ＤＲＡＭメモリコントローラによってサポートされていないメモリ構成に相当するため、一般的に不可能である。
【０１４５】
図３に示されるように、解決法は、スライディングウィンドウと呼ばれるアクセスウィンドウ３０５を使用することであり、ＰＩＭメモリ３０２内のアクセスウィンドウ３０５の位置３０４（および場合によってはサイズも）は、インターフェースレジスタを介して設定することができる。このスライディングウィンドウは、マルチプルウィンドウと呼ばれる広い範囲の物理アドレス３０６に何度もマッピングされる。
【０１４６】
（物理アドレスの編成）
例えば、前述の実施例のように、公表されたサイズが実際のサイズより４倍大きいＰＩＭメモリを考えると、ＰＩＭ回路の物理アドレスは以下のように編成され得る。
・最初の２＾Ｎ個の物理アドレスは、従来通り、実際のメモリをマッピングする。
・次の２＾Ｎ個の物理アドレスは、インターフェースを何度もマッピングし、
・２＾Ｎ（Ｎ＋ｌ）個の物理アドレスはマルチプルウィンドウを構成し、マルチプルウィンドウではスライディングウィンドウが何度もマッピングされる。
注：従来ＰＩＭメモリをマッピングしていた物理アドレス空間は、ＰＩＭプロセッサによってアクセスされないＰＩＭメモリの範囲にアクセスするために、ＨＣＰＵによって利用され得る。
注：スライディングウインドウが配置されるＰＩＭメモリ範囲は、実施形態によって、ＰＩＭメモリの従来の物理アドレス空間を介してアクセス可能であってもよいし、またはアクセス可能でなくてもよい。
【０１４７】
次に、スライディングウィンドウ内のアクセス（例えば、図３のアクセス３０８、３１０、および３１２）が、このスライディングウィンドウが通常配置されるＰＩＭメモリ範囲内のアクセス（例えば、図３のアクセス３０８’、３１０’、３１２’）で処理される。
【０１４８】
スライディングウィンドウは、複数の物理アドレス範囲を介してアクセス可能であり、これらの物理アドレス範囲はすべて、マルチプルウィンドウを構成する。
【０１４９】
スライディングウィンドウは、それがＤＲＡＭからのページ上に完全に含まれるようなものであり、スライディングウィンドウの位置は、対｛ｘ、ｙ｝として表すことができる。
・ｘはページ番号であり、
・ｙはページ上のバイトオフセットである。
【０１５０】
ここで、スライディングウィンドウのサイズおよびｙの可能な値は、スライディングウィンドウ内で、ＰＩＭメモリの２つのページが重なり合わないようなものである。
【０１５１】
インタフェースソフトウェアがＰＩＭメモリ範囲にアクセスしたい場合は、
・スライディングウインドウが考慮されるメモリ範囲と一致するように１つまたは複数のインタフェースレジスタを構成する。
・所望のアクセスを実行するために、変更するアドレスを用いてアクセスする。
・スライディングウインドウを介したすべてのアクセスが実行されたならば、次の範囲に移動することができる。
・書き込みは有効である。
・読み取りは有効である。
注：最後の２つのサブ項目に関して言うと、ＨＣＰＵが０００プロセッサである場合、メモリバリア命令の利用が必要となる場合がある。
【０１５２】
インタフェースソフトウェアが関係するすべての範囲を書き込んだとき、偽のアクセスを利用して、ＤＲＡＭキャッシュメモリからそこに見つかる可能性のある待機中の最後の書込みを押し出す。
【０１５３】
一般に、インタフェースソフトウェアは、現在スライディングウィンドウによってターゲットとされているＰＩＭメモリにアクセスするために、共用の現在のアドレスの利用を含む、インタフェースレジスタにアクセスするための上述の解決策をすべて利用することができる。
【０１５４】
（スライディングウィンドウの移動）
スライディングウィンドウの移動は、現在のアドレスまたは共用のアドレスを変更しない。インタフェースソフトウェアは、個々の現在のアドレスまたは共通のアドレスがアクセスに利用される場合に限り、これを変更する。スライディングウィンドウを動かしても変更されない。
【０１５５】
スライディングウインドウの位置を利用したアクセスはすべて、ウインドウが別の位置に移動される前は、有効でなければならない（メモリ回路に到達していなければならない）。
【０１５６】
（本発明を具体化するロジックを横切る時間に関する考察）
何度もマッピングされるインターフェースレジスタをいくつか実装することは、特にそのようなレジスタの数が非常に少ないので、ロジックの速度に関していうと、あまり困難ではない。
【０１５７】
一方、スライディングウィンドウ機構を実装するロジックの速度は、以下に説明するように、より問題となり得る。
【０１５８】
前述のように、スライディングウィンドウの位置は、対｛ｘ、ｙ｝によって表すことができる。
【０１５９】
ｘは、ページ番号で、
ｙは、ページ上のバイトオフセットである。
【０１６０】
したがって、スライディングウィンドウは、ＰＩＭメモリのページｘに関連付けられ、この関連付けは、インターフェースレジスタを介してプログラム可能である。
【０１６１】
ＤＲＡＭメモリコントローラが、マルチプルウィンドウの任意のページＰをターゲットとするページアクティベーショントランザクションを発行する場合、ページＰの番号をページ番号ｘで置き換えなければならない。
【０１６２】
このページがマルチプルウィンドウに属することを決定するには、ページ番号の非常に少ないビットを調べれば十分であるため、この場合の復号化は単純である。
【０１６３】
それにもかかわらず、この単純な復号化、および値ｘによる値Ｐの置換は、メモリ回路の起動ロジックによって構成されるロジック経路の交差時間をわずかに増加させる。
ロジックウィンドウ機構を実装するために、起動動作の待ち時間をわずかに延長するようにしてよく、この値は、メモリコントローラにおいてプログラム可能である。
【０１６４】
（アクセスバリアの方法）
この方法では、ＤＲＡＭキャッシュを重要性のないトランザクションで満たすために、所定のアクセスシーケンスが利用される。
【０１６５】
保留中の書き込みを追跡して、更新を行い、
読み取ったデータを追跡して、無効化する。
ＤＲＡＭキャッシュメモリの特性を知ることにより、以下のアクセスシーケンスを作成することが可能である。
【０１６６】
ＤＣＷ  ＢＡＲＲＩＥＲ (Dram Cache Write Barrier)、ＤＲＡＭキャッシュの書き込みバリアである：DCW＿BARRIERの開始前に行われたすべての書き込みが、DCW＿BARRIERの終了時に有効（ＰＩＭプロセッサによって可視）になることを保証する。
【０１６７】
DCR_BARRIER (Dram Cache Read Barrier)は、DCR＿BARRIERの終了後に読み取られるすべてのデータが、DCR＿BARRIERが開始された日付よりも新しいことを保証する、ＤＲＡＭキャッシュの読み取りバリアである。
DCM_BARRIER (Dram Cache Memory Barrier)ＤＲＡＭキャッシュに対する読出しおよび書込みバリアであり、以下のいずれかに等しい。
DCR＿BARRIERの前のDCW＿BARRIER、または、DCW＿BARRIERの前のDCR＿BARRIER。
DCW＿BARRIERおよびDCR＿BARRIERは両方とも、ＤＲＡＭキャッシュメモリから前のデータを追跡することによって動作するので、ＤＲＡＭキャッシュメモリが読取りおよび書込みの管理において非対称でない限り、通常、以下の結果となる。
DCW_BARRIER= DCR_BARRIER= DCM_BARRIER
いくつかのＤＲＡＭキャッシュ・アーキテクチャは、DCW＿BARRIER、DCR＿BARRIERおよびDCM＿BARRIERのシーケンスの減少を可能にし、したがって、これらのバリアの効果が、指定されたパラメータを有するアドレス範囲にのみ適用される場合、それらの実行時間の減少を可能にすることができる。
【０１６８】
例えば、アドレス範囲が先頭アドレスと末尾アドレスで指定されている場合、以下のBARRIERアクセスシーケンスの変形例が使用されてもよい。
DCW＿BARRIER（start＿addr、end＿addr）は、アドレス範囲｛start＿addr、end＿addr｝内のDCW_BARRIER(start_addr、end＿addr）の開始前に実行されるすべての書き込みが、DCW＿BARRIER（start＿addr、end＿addr）の終了時に有効であることを保証する。
DCR＿BARRIER（start＿addr、end＿addr）は、DCR＿BARRIER（start＿addr、end addr)の終了後にアドレス範囲｛start＿addr、end addr}で読み込まれたすべての値が、DCR＿BARRIER（start＿addr、end addr)が開始された日付よりも最近であることを保証する。
DCM_BARRIER(start addr、end＿addr）は、以下の何れかに等しい。
DCR−BARRIER（start＿addr、end＿addr）の前のDCW＿BARRIER（start＿addr、end＿addr）、または、DCR−BARRIER（start＿addr、end＿addr）の前のDCR＿BARRIER（start＿addr、end＿addr）。
【０１６９】
（不揮発性メモリへの応用）
ＰＩＭプロセッサは、不揮発性メモリを有しないにも関わらず、本発明の全ての態様の使用を可能にするインターフェースを有することができ、特に以下のものを許容する。
・ＤＲＡＭキャッシュメモリから待機中の入力を転送し、
・ＰＩＭメモリへの書き込みが有効であることを確認する。
【０１７０】
（ＤＲＡＭキャッシュメモリの特性の決定）
本発明で使用されるアドレスシーケンスは、ＤＲＡＭキャッシュの特性に依存する。
【０１７１】
（資料の入手）
ＨＣＰＵ製造業者にそのＨＣＰＵを変更するように依頼するよりも、ＨＣＰＵ製造業者からＤＲＡＭキャッシュに関する文書を入手する方がはるかに容易である。
【０１７２】
（ＤＲＡＭキャッシュメモリの挙動の分析）
ＨＣＰＵ内に存在するＤＲＡＭキャッシュに関する情報が入手できない場合、ＨＣＰＵプロセッサのＤＲＡＭメモリコントローラによって生成されるトラフィックを解析することが可能である。この種の分析は、ＤＲＡＭおよびＤＩＭＭメモリカードの製造業者によって、特に、それらの製品を開発し、それらの適合性を検査するために、一般に行われるが、ＨＣＰＵプロセッサを使用するコンピュータ製造業者によっても、それらのシステムの開発のために行われる。
【０１７３】
Tektronix社製の分析システムのようないくつかの分析システムは、ＨＣＰＵプロセッサのＤＲＡＭコントローラのトラフィックを分析することができる。
この目的のために設計されたプログラムをＨＣＰＵ上で実行し、Tektronix社のトラフィック分析ツールなどを使用することによって、とりわけ、以下のＤＲＡＭキャッシュパラメータを決定することが可能である。
・ＤＲＡＭキャッシュエントリの最大サイズ。
・ＤＲＡＭキャッシュメモリの結合性（associativity）は、
・ＤＲＡＭキャッシュメモリ内の入力の数。
・代替ポリシー
（インターフェースを介したＤＲＡＭキャッシュメモリの分析）
インターフェースは、受信されたＮ個の最後のトランザクション、または少なくともそれらの特性の十分な部分を記録する物理的手段を含むことができ、この記録は、インターフェース自体を介してアクセス可能である。
【０１７４】
これらの記録手段の存在は、インターフェースソフトウェアの開発担当者が、非常に高価な外部分析手段の使用を避けることを可能にする。
【０１７５】
多くの場合、外部分析手段なしに、ＤＲＡＭキャッシュメモリの特性を自動的に決定することができ、したがって、DCR＿BARRIER、DCW＿BARRIER、およびDCM＿BARRIERアクセスシーケンスの作成を自動化することができるインターフェースソフトウェアを設計することさえ可能である。
【０１７６】
（ＤＲＡＭ回路ベンチの検討）
ＤＲＡＭメモリは、ベンチ、ページ、および列に編成される。
【０１７７】
簡単にするために、本発明の記載では、ベンチの存在を考慮に入れておらず、ＤＲＡＭは、ベンチ、ページ、およびメモリワードに編成されている。基本的に、ＤＲＡＭにおけるベンチの存在によって、数ページオープン（多くとも、ベンチ当たり１ページオープン）を有することを可能にする。当業者によって容易に理解されるように、本明細書に記載される発明は、ベンチの存在によって変更されない。
【図１】
2019531546.tif 000003
【図２】
2019531546.tif 000004
【図３】
2019531546.tif 000005
【国際調査報告】
2019531546.tif 000006
2019531546.tif 000007
2019531546.tif 000008
2019531546.tif 000009