(57)【要約】一形態において、装置はメモリコントローラを含む。メモリコントローラは、コマンドキューと、アービタと、を含む。コマンドキューは、メモリアクセス要求を受信して記憶する。アービタは、複数の基準に基づいてメモリアクセス要求をコマンドキューから選択し、選択したメモリアクセス要求をメモリチャネルに提供する。アービタは、アービタがコマンドキューから選択する第１タイプの連続するメモリアクセス要求の数をカウントするためのストリークカウンタを含む。ストリークカウンタが閾値に達すると、アービタは、第１タイプの要求の選択を停止し、少なくとも１つの第２タイプのメモリアクセス要求を選択する。アービタは、少なくとも１つの第２タイプのメモリアクセス要求をメモリチャネルに提供する。【選択図】図５
2019521448.tif 000002
【特許請求の範囲】
【請求項１】
メモリコントローラ（５００）を含む装置（１００／２００）であって、
前記メモリコントローラ（５００）は、
メモリアクセス要求を受信して記憶するコマンドキュー（５２０）と、
複数の基準に基づいて前記メモリアクセス要求を前記コマンドキュー（５２０）から選択し、選択したメモリアクセス要求をメモリチャネル（１３０／１４０）に提供するアービタ（５３８）と、を備え、
前記アービタ（５３８）は、前記アービタ（５３８）が前記コマンドキュー（５２０）から選択する第１タイプの連続するメモリアクセス要求の数をカウントするための第１ストリークカウンタ（７０２）を含み、
前記アービタ（５３８）は、前記第１ストリークカウンタ（７０２）が第１閾値に達すると、前記第１タイプの要求の選択を停止し、少なくとも１つの第２タイプのメモリアクセス要求を選択し、前記少なくとも１つの第２タイプのメモリアクセス要求を前記メモリチャネル（１３０／１４０）に提供する、
装置（１００／２００）。
【請求項２】
前記第１タイプはページヒット要求を含み、前記第２タイプはページ競合要求を含む、
請求項１の装置（１００／２００）。
【請求項３】
前記第１ストリークカウンタ（７０２）が前記第１閾値に達すると、前記メモリコントローラ（５２０）は、前記少なくとも１つの第２タイプのメモリアクセス要求を選択する前に、前記メモリチャネル（１３０／１４０）への前記第１タイプの最後のメモリアクセス要求に対するオートプリチャージを有効にする、
請求項１の装置（１００／２００）。
【請求項４】
前記第１タイプは第１ランクへのページヒット要求を含み、前記第２タイプは第２ランクへのページヒット要求を含む、
請求項１の装置（１００／２００）。
【請求項５】
各々がアクセスアドレスを含むメモリアクセス要求を受信し、前記アクセスアドレスをランク、バンク及び行にデコードするデコーダ（５２２）をさらに備え、
前記コマンドキュー（５２０）は、メモリアクセス要求毎に、前記ランク、前記バンク及び前記行を記憶し、前記アービタ（５３８）は、全ての適格なメモリアクセス要求の前記ランク、前記バンク及び前記行のうち少なくとも１つを調べることによって、前記少なくとも１つの第２タイプのメモリアクセス要求が存在すると判別する、
請求項１の装置（１００／２００）。
【請求項６】
前記装置（１００／２００）は、
アクセスアドレスを有するメモリアクセス要求を前記メモリコントローラ（５００）に提供するメモリアクセスエージェント（１１０／２１０／２２０）と、
前記メモリコントローラ（１２０）に接続されたメモリシステム（１２０）であって、前記メモリアクセス要求に応答し、少なくとも１つのランクのメモリを有し、各ランクは複数の行を有する複数のバンクを含む、メモリシステム（１２０）と、
をさらに備えるデータ処理システム（１００）である、
請求項１の装置（１００／２００）。
【請求項７】
前記データ処理システム（１００）は、
メモリアクセス要求を前記メモリコントローラ（５００）に提供する複数のメモリアクセスエージェント（１１０／２１０／２２０）を備える、
請求項６の装置（１００／２００）。
【請求項８】
前記メモリシステム（１２０）は、
前記メモリコントローラ（１２０）に接続された複数のメモリチャネル（１３０／１４０）であって、少なくとも１つのランクのメモリを有し、各ランクは複数の行を有する複数のバンクを含む、複数のメモリチャネル（１３０／１４０）を備える、
請求項６の装置（１００／２００）。
【請求項９】
メモリコントローラ（５００）を含む装置（１００／２００）であって、
前記メモリコントローラ（５００）は、
メモリアクセス要求を受信し、メモリアクセス要求を或るタイプにデコードするデコーダ（５２２）と、
デコードされたメモリアクセス要求を受信して記憶する、前記デコーダ（５２２）に接続されたコマンドキュー（５２０）と、
複数の基準に基づいて前記メモリアクセス要求を前記コマンドキュー（５２０）から選択し、選択したメモリアクセス要求をメモリチャネル（１３０／１４０）に提供するアービタ（５３８）と、を備え、
前記タイプは、対応するメモリアクセス要求が読出し要求か書込み要求かを示し、
前記アービタ（５３８）は、前記コマンドキュー（５２０）をスキャンし、第１タイプのメモリアクセス要求の数をカウントし、
前記アービタ（５３８）は、前記第１タイプのメモリアクセス要求の数が第１閾値以上である場合、第２タイプのメモリアクセス要求の選択を停止し、少なくとも１つの第１タイプのメモリアクセス要求を前記メモリチャネル（１３０／１４０）に提供する、
装置（１００／２００）。
【請求項１０】
前記第１タイプは書込み要求を含み、前記第２タイプは読出し要求を含む、
請求項９の装置（１００／２００）。
【請求項１１】
前記アービタ（５３８）が前記少なくとも１つの第１タイプのメモリアクセス要求を前記メモリチャネル（１３０／１４０）に提供する場合、前記アービタ（５３８）は、前記第１タイプのメモリアクセス要求が前記コマンドキュー（５２０）に存在しなくなるまで、又は、前記アービタ（５３８）が第２閾値数の前記第１タイプのメモリアクセス要求を選択するまで、前記第１タイプのメモリアクセス要求を選択する、
請求項９の装置（１００／２００）。
【請求項１２】
前記アービタ（５３８）が前記少なくとも１つの第１タイプのメモリアクセス要求を前記メモリチャネル（１３０／１４０）に提供した後に、前記アービタ（５３８）は、前記第２タイプのメモリアクセス要求が前記コマンドキュー（５２０）に存在しなくなるまで、又は、前記アービタ（５３８）が第３閾値数の前記第２タイプのメモリアクセス要求を選択するまで、前記第１タイプのメモリアクセス要求の選択を停止して前記第２タイプのメモリアクセス要求を選択する、
請求項１１の装置（１００／２００）。
【請求項１３】
前記第１タイプのメモリアクセス要求の数は、書込み要求の総数を含む、
請求項９の装置（１００／２００）。
【請求項１４】
前記第１タイプのメモリアクセス要求の数は、所定の優先順位の書込み要求の総数を含む、
請求項９の装置（１００／２００）。
【請求項１５】
前記所定の優先順位は、低優先順位、中優先順位及び高優先順位のうち１つを含む、
請求項１４の装置（１００／２００）。
【請求項１６】
前記メモリコントローラ（５００）は、前記所定の優先順位のメモリアクセス要求の数に対する閾値を、前記低優先順位、前記中優先順位及び前記高優先順位に対応する複数のプログラム可能なレジスタに記憶する、
請求項１５の装置（１００／２００）。
【請求項１７】
前記メモリコントローラ（５００）は、前記第１閾値を、対応するプログラム可能なレジスタに記憶する、
請求項９の装置（１００／２００）。
【請求項１８】
前記装置（１００／２００）は、
アクセスアドレスを有するメモリアクセス要求を前記メモリコントローラ（５００）に提供するメモリアクセスエージェント（１１０／２１０／２２０）と、
前記メモリコントローラ（１２０）に接続されたメモリシステム（１２０）であって、前記メモリアクセス要求に応答し、少なくとも１つのランクのメモリを有し、各ランクは複数の行を有する複数のバンクを含む、メモリシステム（１２０）と、
をさらに備えるデータ処理システム（１００）である、
請求項９の装置（１００／２００）。
【請求項１９】
前記データ処理システム（１００）は、
メモリアクセス要求を前記メモリコントローラ（５００）に提供する複数のメモリアクセスエージェント（１１０／２１０／２２０）を備える、
請求項１８の装置（１００／２００）。
【請求項２０】
前記メモリシステム（１２０）は、
前記メモリコントローラ（１２０）に接続された複数のメモリチャネル（１３０／１４０）であって、少なくとも１つのランクのメモリ有し、各ランクは複数の行を有する複数のバンクを含む、複数のメモリチャネル（１３０／１４０）を備える、
請求項１８の装置（１００／２００）。
【請求項２１】
ダイナミックランダムアクセスメモリシステム（１２０）へのメモリアクセス要求を順序付けるための方法であって、
メモリアクセス要求を受信することと、
前記メモリアクセス要求をコマンドキュー（５２０）に記憶することであって、前記メモリアクセス要求は、第１タイプのメモリアクセス要求と、少なくとも１つの第２タイプのメモリアクセス要求と、を含む、ことと、
前記第１タイプの連続するメモリアクセス要求のストリークを第１閾値に達するまで実行することであって、前記コマンドキュー（５２０）は、少なくとも１つの第１タイプの追加のメモリアクセス要求と、少なくとも１つ前記第２タイプのメモリアクセス要求と、を記憶する、ことと、
前記第２タイプの少なくとも１つのメモリアクセス要求を、前記第１タイプのメモリアクセス要求を実行した後に実行することと、を含む、
方法。
【請求項２２】
前記第１タイプのメモリアクセス要求を第１閾値に達するまで実行することは、
前記第１タイプの連続するメモリアクセス要求の数をカウントすることと、
前記数が前記第１閾値と等しいことに応じて、前記少なくとも１つの第２タイプのメモリアクセス要求を実行することと、を含む、
請求項２１の方法。
【請求項２３】
前記第１タイプはページヒット要求を含み、前記第２タイプはページミス要求を含む、
請求項２１の方法。
【請求項２４】
前記少なくとも１つの第２タイプのメモリアクセス要求を実行する前に、前記第１タイプの最後のメモリアクセス要求に対するオートプリチャージを有効にすることをさらに含む、
請求項２１の方法。
【請求項２５】
前記第１タイプは第１ランクへのページヒット要求を含み、前記第２タイプは第２ランクへのページヒット要求を含む、
請求項２１の方法。
【請求項２６】
受信したメモリアクセス要求をランク、バンク及び行にデコードすることと、
前記ランク、前記バンク及び前記行をコマンドキュー（５２０）に記憶することと、
全ての適格なメモリアクセス要求の前記ランク、前記バンク及び前記行のうち少なくとも１つを調べることによって、前記少なくとも１つの第２タイプのメモリアクセス要求が存在すると判別することと、をさらに含む、
請求項２１の方法。
【請求項２７】
ダイナミックランダムアクセスメモリシステム（１２０）へのメモリアクセス要求を順序付けるための方法であって、
メモリアクセス要求を受信することと、
前記メモリアクセス要求を、対応するメモリアクセス要求が読出し要求か書込み要求かを示すタイプにデコードすることと、
前記タイプを含むデコードされたメモリアクセス要求をコマンドキュー（５２０）に記憶することと、
前記メモリアクセス要求を、複数の基準に基づいて前記コマンドキュー（５２０）から選択することと、を含み、
前記選択することは、
前記コマンドキュー（５２０）をスキャンし、第１タイプのメモリアクセス要求の数をカウントすることと、
前記第１タイプのメモリアクセス要求の数が第１閾値以上である場合、第２タイプのメモリアクセス要求の選択を停止し、少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネル（１３０／１４０）に提供することと、を含む、
方法。
【請求項２８】
前記少なくとも１つの第１タイプのメモリアクセス要求を前記メモリチャネル（１３０／１４０）に提供する場合、前記第１タイプのメモリアクセス要求が前記コマンドキュー（５２０）に存在しなくなるまで、又は、第２閾値数の前記第１タイプのメモリアクセス要求を選択するまで、前記第１タイプのメモリアクセス要求を選択することをさらに含む、
請求項２７の方法。
【請求項２９】
前記少なくとも１つの第１タイプのメモリアクセス要求を前記メモリチャネル（１３０／１４０）に提供した後に、前記第２タイプのメモリアクセス要求が前記コマンドキュー（５２０）に存在しなくなるまで、又は、第３閾値数の前記第２タイプのメモリアクセス要求を選択するまで、前記第１タイプのメモリアクセス要求の選択を停止して前記第２タイプのメモリアクセス要求を選択することをさらに含む、
請求項２８の方法。
【請求項３０】
前記第１タイプのメモリアクセス要求の数は、書込み要求の総数を含む、
請求項２７の方法。
【請求項３１】
前記第１タイプのメモリアクセス要求の数は、所定の優先順位の書込み要求の総数を含む、
請求項２７の方法。
【請求項３２】
前記第１閾値を、対応するプログラム可能なレジスタに記憶することをさらに含む、
請求項２７の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップをメインメモリとして使用する。今日販売されている多くのＤＲＡＭチップは、半導体技術協会（ＪＥＤＥＣ：Joint Electron Devices Engineering Council）によって公表された様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ規格と互換性がある。ＤＤＲ  ＤＲＡＭは、様々な低電力モードを設けることによって、高性能及び低電力動作の両方を提供する。
【０００２】
最新のＤＤＲメモリコントローラは、保留中のメモリアクセス要求を記憶するためのキューを維持して、保留中のメモリアクセス要求を、生成又は記憶された順序から外れた順序で選択するのを可能にし、これによって効率を高める。例えば、メモリコントローラは、所定のメモリランクの同じ行への複数のメモリアクセス要求をキューから取り出し、これらをメモリシステムに連続的に発行することによって、現在の行をプリチャージして他の行をアクティブにするオーバーヘッドを回避することができる。しかしながら、特定のプログラムスレッドは、同じランク、バンク及びページに繰り返しアクセスする。効率を高めるために類似のアクセスをグループ化して選択する既知のメモリコントローラは、他のプログラムスレッドを「枯渇」させ、システム全体の性能を低下させる可能性がある。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアクセラレーテッドプロセッシングユニット（ＡＰＵ：accelerated processing unit）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、読出し／書込みトランザクション管理を実行するために使用することができるコマンドキューの機能ブロック図である。
【図７】いくつかの実施形態による、ストリーク管理を実行するために使用することができるアービタのブロック図である。
【発明を実施するための形態】
【０００４】
以下の説明では、異なる図面において同じ参照番号を使用して、類似又は同一の項目を示している。特に断りのない限り、「接続された」という単語及びこれに関連する動詞形は、当技術分野において既知の手段による直接接続及び間接的な電気接続の両方を含む。特に断りのない限り、直接接続の説明は、適切な形態の間接的な電気接続を使用する代替の実施形態をも意味している。
【０００５】
一形態では、データ処理システム等の装置はメモリコントローラを含む。メモリコントローラは、コマンドキューと、アービタと、を含む。コマンドキューは、メモリアクセス要求を受信して記憶する。アービタは、複数の基準に基づいてメモリアクセス要求をコマンドキューから選択し、選択したメモリアクセス要求をメモリチャネルに提供する。アービタは、アービタがコマンドキューから選択する第１タイプの連続するメモリアクセス要求の数をカウントするための第１ストリークカウンタを含む。第１ストリークカウンタが第１閾値に達すると、アービタは、第１タイプの要求の選択を停止し、少なくとも１つの第２タイプのメモリアクセス要求を選択する。アービタは、少なくとも１つの第２タイプのメモリアクセス要求をメモリチャネルに提供する。例えば、ストリークカウンタの一実施形態では、第１タイプの連続するメモリアクセス要求はページヒット要求を含み、第２タイプのメモリアクセス要求はページミス要求を含む。ストリークカウンタの他の実施形態では、第１タイプの連続するメモリアクセス要求は第１ランクへのページヒット要求を含み、第２タイプのメモリアクセス要求は第２ランクへのページヒット要求を含む。
【０００６】
他の形態では、データ処理システム等の装置は、メモリコントローラを含む。メモリコントローラは、デコーダと、コマンドキューと、アービタと、を含む。デコーダは、メモリアクセス要求を受信し、メモリアクセス要求を或るタイプにデコードする。コマンドキューは、デコーダに接続されており、デコードされたメモリアクセス要求を受信して記憶する。アービタは、複数の基準に基づいてメモリアクセス要求をコマンドキューから選択し、選択したメモリアクセス要求をメモリチャネルに提供する。タイプは、対応するメモリアクセス要求が読出し要求か書込み要求かを示す。アービタは、コマンドキューをスキャンし、第１タイプのメモリアクセス要求の数をカウントする。第１タイプは、読出し要求及び書込み要求のうち選択された１つである。第１タイプのメモリアクセス要求の数が第１閾値以上である場合、アービタは、第２タイプのメモリアクセス要求の選択を停止し、少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネルに提供する。第２タイプは、読出し要求及び書込み要求のうち第１タイプとは異なる１つである。
【０００７】
さらに他の形態では、ダイナミックランダムアクセスメモリシステムへのメモリアクセス要求を順序付けるための方法は、メモリアクセス要求を受信することを含む。メモリアクセス要求はコマンドキューに記憶される。メモリアクセス要求は、第１タイプのメモリアクセス要求と、少なくとも１つの第２タイプのメモリアクセス要求と、を含む。第１タイプの連続するメモリアクセス要求のストリークは、第１閾値に達するまで実行される。コマンドキューは、少なくとも１つの第１タイプの追加のメモリアクセス要求と、少なくとも１つの第２タイプのメモリアクセス要求と、を記憶する。少なくとも１つの第２タイプのメモリアクセス要求は、第１タイプのメモリアクセス要求を実行した後に実行される。
【０００８】
さらに他の形態では、ダイナミックランダムアクセスメモリシステムへのメモリアクセス要求を順序付けるための方法は、メモリアクセス要求を受信することを含む。メモリアクセス要求は、対応するメモリアクセス要求が読出し要求か書込み要求かを示すタイプにデコードされる。タイプを含むデコードされたメモリアクセス要求は、コマンドキューに記憶される。メモリアクセス要求は、複数の基準に基づいてコマンドキューから選択される。選択することは、コマンドキューをスキャンし、第１タイプのメモリアクセス要求の数をカウントすることを含む。第１タイプは、読出し要求及び書込み要求のうち選択された１つである。第１タイプのメモリアクセス要求の数が第１閾値以上である場合、第２タイプのメモリアクセス要求の選択を停止し、少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネルに提供する。第２タイプは、読出し要求及び書込み要求のうち第１タイプとは異なる１つである。
【０００９】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、周辺機器相互接続エクスプレス（ＰＣＩｅ）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネルと、ＰＣＩｅリンクへの接続用のＰＣＩｅルートコンプレックスと、ＵＳＢネットワークへの接続用のＵＳＢコントローラと、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースと、が含まれる。
【００１０】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、本例において別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１１】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、例えば読出し専用メモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（electrically erasable programmable ROM）等の様々な不揮発性メモリタイプの何れかであってもよい。
【００１２】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１３】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１４】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を設けることによって、最新のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、例えばＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ＧＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等の最新のＤＤＲメモリに接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードも設けており、組み込み型サーマルモニタリングも提供する。
【００１５】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００１６】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。本例において、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックス２１０は任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００１７】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンド等のグラフィックス操作を、高度に統合された並列形式で実行することの可能な高性能グラフィックス処理ユニット（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有するユニファイドメモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャをサポートしてもよいが、グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリを使用してもよい。
【００１８】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００１９】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２０】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２１】
周辺バスコントローラ２７０は、システムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２２】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロック源（例えば位相同期ループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を判断してもよい。
【００２３】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２４】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、パワーエンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。パワーエンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するためのパワーエンジン３２０を有する。
【００２５】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、パワーエンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。パワーエンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有のパワーエンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００２６】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、コンテンツアドレス可能メモリ（ＣＡＭ）５２４と、リプレイキュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、データバッファ（ＤＢ）５４６と、を含む。
【００２７】
インタフェース５１２は、外部バスを介したデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって仕様化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００２８】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表わされる物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、正規化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００２９】
リプレイキュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長検査（ＣＲＣ）応答、又は、ＧＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているか否かを判別する。リプレイキュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスがリプレイされるのを可能にする。
【００３０】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、及び、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、オートリフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。また、リフレッシュロジック５３２は、どの場合にＤＲＡＭデバイスを別のパワーダウンモードにするのかを決定する。
【００３１】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、同じバンクへの起動コマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、リプレイキュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、リプレイキュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３２】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３３】
電力コントローラ５５０は、アドバンストエクテンシブルインタフェースバージョン１（ＡＸＩ）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、パワーエンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「ＥＶＥＮＴ＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。パワーエンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。パワーエンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みトレーニングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みトレーニングエンジン５６８は、ＤＤＲインタフェース読出しレイテンシトレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３４】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのように復号するのかを決定するために、構成情報を記憶する。アービタ５３８は、復号化されたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバーヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバーヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３５】
アービタ５３８は、タイミングブロック５３４を使用して、保留中のアクセスのタイミング適格性を判別し、次に、効率性及び公平性の両方を保証する基準のセットに基づいて、コマンドキュー５２０から適格なアクセスを選択する。アービタ５３８は、効率性及び公平性の両方を保証する２つのメカニズムをサポートする。第１に、アービタ５３８は、コマンドキュー５２０に記憶されたメモリアクセス要求の属性と、書き込みが許可されているのと同時に読み出しが許可される条件を制御するためのプログラム可能な閾値と、を調べることによって読み出し／書き込みトランザクション管理を実行して効率性及び公平性の両方を保証する。第２に、アービタ５３８は、特定のタイプのアクセスのストリークがメモリバスを無期限に保持するのを許可しないように保証するストリークカウンタを含む。これらの２つのメカニズムについて説明する。
【００３６】
図６は、いくつかの実施形態による、読出し／書込みトランザクション管理を実行するために使用することができる図５のコマンドキュー５２０の機能ブロック図６００である。コマンドキュー５２０は、アドレス生成器５２２から受信した複数のランダムに配置された読出し及び書込みコマンドを含む。アドレス生成器５２２は、各メモリアクセス要求を、コマンドタイプ（読出し又は書込み）、ランク、バンク、行、及び、優先順位にデコードすることによって、コマンドキュー５２０は、コマンドフィールド６０２と、ランクフィールド６０４と、バンクフィールド６０６と、行フィールド６０８と、優先順位フィールド６１０と、をまとめて有するエントリを含む。優先順位フィールド６１０は、コマンド毎に、読出し又は書込みコマンド毎の重要度又は優先順位の表示を記憶する。したがって、一態様によれば、アービタ５３８は、コマンドのタイプと、優先順位によって表されるコマンドの対応する重要度と、に基づいて、実行するためのコマンドを選択する。さらなる態様として、本明細書でさらに説明するように、実行するためのコマンドを選択する際に他の考慮事項も利用することができる。
【００３７】
１つの特定の例では、アービタ５３８は、コマンドタイプ（例えば、読出し又は書込み）と優先順位レベル（低、中間、高）とを考慮する閾値カウンタのセットを使用する。この例では、アービタ５３８は、低、中間及び高優先順位の各々の保留中の書込みの数をカウントする低、中間及び高優先順位の書込み閾値カウンタを含む。また、アービタ５３８は、アービトレーションにおいて書込みが勝つことを可能にする日和見的な書込み閾値カウンタと、アービタ５３８に読出しを確実に中断させて書込みをサービスさせるための総書込み閾値と、保留中の読出しに戻る前に送信される書込みの最小数をカウントする最小書込み閾値カウンタと、保留中の書込みに戻る前に送信される読出しの最小数をカウントする最小読出し閾値カウンタと、を含む。閾値カウンタは、表１に要約されている。
【表１】
2019521448.tif 000003
【００３８】
アービタ５３８は、任意の所定の時間にコマンドキュー５２０に存在する読出し／書込みの数をカウントして、何れの閾値が満たされるかどうかを判別する。この目的のために、順序付けベース又はアドレスベースの依存性がないエントリのみがカウントされる。例示的な実施形態では、ＴｏｔａｌＷｒＴｈｒｅｓｈが満たされているかどうかを判別するために、アービタ５３８は、対応する重要度によって低、中間及び高優先順位の要求を重み付けすることによって、重み付けされた書込み要求の総数を決定する。
【００３９】
アービタ５３８は、３つの条件のうち何れかが発生したときに、読出しのサービスから書込みのサービスに変更するか、変更することが可能になる。第１に、コマンドキュー５２０の保留中の書込みの総数がＴｏｔａｌＷｒＴｈｒｅｓｈ又は優先順位毎のカウンタ（ＬｏＰｒｉＷｒＴｈｒｅｓｈ、ＭｅｄＰｒｉＷｒＴｈｒｅｓｈ若しくはＨｉＰｒｉＷｒＴｈｒｅｓｈ）の何れかを超える場合には、アービタ５３８が、最後の読出しから書込みへの切り替え以降にＭｉｎＲｄＴｈｒｅｓｈの数の読出しを送信したか、コマンドキュー５２０にこれ以上の読出しが存在せず、その後、アービタ５３８は書込みに切り替える。第２に、書込みの総数がＯｐｐＷｒＴｈｒｅｓｈを超えている場合、書込みは、読出しと共にアービトレーションの対象となる。この優先順位メカニズムによって、総閾値が満たされるか読出しが完了するまでの何れかの間に、書込みのためのページを開くＡＣＴコマンドを送信することができるようになる。第３に、アービタ５３８は、保留中の読出しがコマンドキュー５２０に無い場合に、読出しから書込みに変更する。これらの条件のうち何れかが満たされるが、メモリコントローラ５００がマルチサイクル読出しバーストを実行しており、この状況でバーストを継続するオプションが設定されている場合には、アービタ５３８は、この動作をアトミック動作であるとみなして、この動作を読出しから書込みに変更する前に完了する。アービタ５３８が読出しから書込みに変わる時点での保留中の書込みの数は、現在の書込みのセットに対する最大閾値になる。
【００４０】
アービタ５３８は、ＭｉｎＷｒＴｈｒｅｓｈの数の書込みが送信され、且つ、選択的に他の条件が満たされた後のみに、読出しのサービスに明示的に戻る。一実施形態では、他の条件は、読出し用のプログラム可能な閾値のセットのうち１つの閾値を満たすことを含む。このプログラム可能な閾値は、表１に示されている閾値を反映している。本実施形態において、ユーザは、読出しが全般的に書込みよりも優先されるように、対応する読出し閾値レジスタを、異なる値及び潜在的に低い値で構成することができる。この例であっても、適格な書込み要求がコマンドキュー５２０に無い場合、アービタ５３８は、読出し要求のサービスを直ちに再開し、そして、ＭｉｎＷｒＴｈｒｅｓｈが満たされた後に、１つ以上の読出し要求がコマンドキュー５２０に記憶され及び／又は適格になる。
【００４１】
この例では、これらの優先順位ルールに対する１つの例外は、「Ｆｏｒｃｅ  Ｅｎｔｒｙ」状態として知られる状態がコマンドキュー５２０内の何れかのエントリに設定されている場合に発生する。Ｆｏｒｃｅ  Ｅｎｔｒｙ状態は、コマンドキュー５２０内のエントリが数回バイパスされた後に設定される。アービタ５３８が読出しモードである間にＦｏｒｃｅ  Ｅｎｔｒｙが書込み要求に対して設定されると、アービタ５３８は、読出しから書込みに切り替わる。しかしながら、Ｆｏｒｃｅ  Ｅｎｔｒｙ要求が実行されると、アービタ５３８は、最小閾値分の書込みを送信するまで、読出しに戻る前に書込みを選択し続ける。したがって、ＭｉｎＲｄＴｈｒｅｓｈ及びＭｉｎＷｒＴｈｒｅｓｈの値は、ヒステリシスロジックを確立して、アービタ５３８が、読出しと書込みとの間でバスを頻繁に行き来させることによって効率を犠牲にしないことを確実にする。
【００４２】
図７は、いくつかの実施形態による、ストリーク管理を実行するために使用することができるアービタ７００のブロック図である。アービタ７００は、コマンドキュー５２０内の保留コマンドについての情報を受信し、選択情報をキュー５１４に提供する。図７の例において、アービタ７００は、１つのストリームが単一のバンク又はランクにアクセスし、これにより他のページヒット要求が無期限に待たされる間に全てのメモリ帯域幅を占有するのを防ぐための２つのストリークカウンタ７０２，７０４を含む。アービタ５３８は、ストリークカウンタ７０２，７０４のうち一方のストリークカウンタを使用して、他のページの競合がある場合に単一のバンクに対するページヒットアクセス数を追跡し続ける。ページヒットアクセス数が設定可能なカウントに達すると、アービタ５３８は、最後の読込み又は書込みアクセスのためのオートプリチャージを有効にし、最も早いページ競合要求が進行することが可能になる。
【００４３】
アービタ７００は、他のランクへのページヒットがある場合に、ストリークカウンタ７０２，７０４のうち他方のストリークカウンタを使用して、同じランクへのページヒットアクセス数を追跡する。同じランクへのページヒットアクセス数が設定可能なカウントに達すると、アービタ７００は、他のランクにコマンドを送信するまで当該同じランクへのアクセスをブロックする。アービタ７００が他のランクに切り替わると、他のランクに行く全ての要求がアービトレーションの対象となり、それらが進行することを可能にする。
【００４４】
より多くの又は異なるストリークカウンタを使用して、中断されないアクセスのストリームを引き起こし得る他のタイプのアクセスに対する公平性を確実にすることが可能であることが明らかである。また、図示した実施形態では、構成レジスタ５６２は、ストリークの最大許容長を定める１つ以上のレジスタを含む。
【００４５】
図５のメモリコントローラは、ハードウェア及びソフトウェアの様々な組み合わせによって実装されてもよい。例えば、ハードウェア回路は、プライオリティエンコーダ、有限ステートマシン、プログラマブルロジックアレイ（ＰＬＡ）等を含んでもよい。例えば、アービタ５３８は、保留中のコマンドの相対的なタイミング適格性を評価するために、記憶されたプログラム命令を実行するマイクロコントローラを用いて実装することができる。この場合、いくつかの命令は、マイクロコントローラによって実行されるために、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶されてもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００４６】
図１のＡＰＵ１１０、図５のメモリコントローラ又はこれらの一部（例えば、アービタ５３８）は、プログラムによって読出され、集積回路を製造するために直接的若しくは間接的に使用されるデータベース又は他のデータ構造の形態のコンピュータアクセス可能なデータ構造によって記述されてもよいし表現されてもよい。例えば、このデータ構造は、例えばＶｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述であってもよいし、レジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、ゲートのリストを含むネットリストを合成ライブラリから生成するために当該記述を合成し得る合成ツールによって読出されてもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。そして、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成してもよい。マスクは、集積回路を製造するために様々な半導体製造工程で使用されてもよい。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、所望により、ネットリスト（合成ライブラリ有り若しくは無し）又はデータセットであってもよいし、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００４７】
特定の実施形態について説明してきたが、これらの実施形態に対する様々な変更が当業者には明らかであろう。例えば、本明細書に開示されたストリークカウンタは、上述したタイプのアクセス又は他の類似のアクセスに使用することができる。全てではないが一部のアクセスタイプのストリークカウンタを実装することができる。さらに、効率と公平性との間のトレードオフは、上記の閾値を変更することによって、アプリケーション環境に応じて変更することができる。
【００４８】
したがって、一形態では、データプロセッサ又はデータ処理システム等の回路は、メモリアクセス要求を受信して記憶するためのコマンドキューを有するメモリコントローラと、アービタと、を含む。アービタは、いくつかの基準に基づいてメモリアクセス要求をコマンドキューから選択し、選択したメモリアクセス要求をメモリチャネルに提供する。アービタは、コマンドキューから選択した第１タイプの連続するメモリアクセス要求の数をカウントするための第１ストリークカウンタを含む。第１ストリークカウンタが第１閾値に達すると、アービタは、第１タイプの要求の選択を停止し、少なくとも１つの第２タイプのメモリアクセス要求を選択する。第１ストリークカウンタは、少なくとも１つの第２タイプのメモリアクセス要求をメモリチャネルに提供する。例えば、第１タイプはページヒット要求を含むことができ、第２タイプはページ競合要求を含むことができる。第１ストリークカウンタが第１閾値に達すると、メモリコントローラは、少なくとも１つの第２タイプのメモリアクセス要求を選択する前に、メモリチャネルへの第１タイプの最後のメモリアクセス要求に対するオートプリチャージを有効にすることができる。別の例では、第１タイプは第１ランクへのページヒット要求を含むことができ、第２タイプは第２ランクへのページヒット要求を含むことができる。
【００４９】
回路は、各々がアクセスアドレスを含むメモリアクセス要求を受信するデコーダをさらに含むことができる。デコーダは、アクセスアドレスを、ランク、バンク及び行にデコードする。この場合、コマンドキューは、メモリアクセス要求毎に、ランク、バンク及び行を記憶し、アービタは、全ての適格なメモリアクセス要求のランク、バンク及び行のうち少なくとも１つを調べることによって、第２タイプのメモリアクセス要求が存在すると判別する。
【００５０】
回路がデータ処理システムである場合、回路は、メモリアクセスエージェントと、メモリシステムと、をさらに含むことができる。メモリアクセスエージェントは、アクセスアドレスを有するメモリアクセス要求をメモリコントローラに提供する。メモリシステムは、メモリコントローラに接続されており、メモリアクセス要求に応答する。メモリシステムは、少なくとも１つのランクのメモリを有しており、各ランクは、行のセットを有するバンクのセットを含む。この場合、データ処理システムは、メモリアクセス要求をメモリコントローラに提供するためのメモリアクセスエージェントのセットをさらに含むことができる。さらに、メモリシステムは、メモリコントローラに接続されたメモリチャネルのセットを含むことができ、各メモリチャネルは、少なくとも１つのランクのメモリを有しており、各ランクは、行のセットを有するバンクのセットを含む。
【００５１】
他の形態では、データプロセッサ又はデータ処理システム等の回路は、メモリコントローラを含み、メモリコントローラは、デコーダと、コマンドキューと、アービタと、を含む。デコーダは、メモリアクセス要求を受信し、メモリアクセス要求を或るタイプにデコードする。コマンドキューは、デコーダに接続されており、デコードされたメモリアクセス要求を受信して記憶する。アービタは、基準のセットに基づいてメモリアクセス要求をコマンドキューから選択し、選択したメモリアクセス要求をメモリチャネルに提供する。タイプは、対応するメモリアクセス要求が読出し要求か書込み要求かを示す。アービタは、コマンドキューをスキャンし、第１タイプのメモリアクセス要求の数をカウントする。第１タイプのメモリアクセス要求の数が第１閾値以上である場合、アービタは、第２タイプのメモリアクセス要求の選択を停止し、少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネルに提供する。例えば、第１タイプは書込み要求であってもよく、第２タイプは読出し要求であってもよい。メモリコントローラは、第１閾値を、対応するプログラム可能なレジスタに記憶することができる。
【００５２】
アービタが少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネルに提供する場合、アービタは、第１タイプのメモリアクセス要求がコマンドキューに存在しなくなるまで、又は、アービタが第２閾値数の第１タイプのメモリアクセス要求を選択するまで、第１タイプのメモリアクセス要求を選択する。この場合、アービタが少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネルに提供した後に、アービタは、第１タイプのメモリアクセス要求の選択を停止し、第２タイプのメモリアクセス要求がコマンドキューに存在しなくなるまで、又は、アービタが第３閾値数の第２タイプのメモリアクセス要求を選択するまで、第２タイプのメモリアクセス要求を選択する。
【００５３】
例えば、第１タイプのメモリアクセス要求の数は、書込み要求の総数、又は、特定の優先順位の書込み要求の総数とすることができる。後者の場合、優先順位は、例えば、低優先順位、中優先順位及び高優先順位のうち１つであってもよい。この場合、メモリコントローラは、特定の優先順位のメモリアクセス要求の数に対する閾値を、低優先順位、中優先順位及び高優先順位に対応するプログラム可能なレジスタのセットに記憶することができる。
【００５４】
回路がデータ処理システムである場合、回路は、メモリアクセスエージェントと、メモリシステムと、をさらに含むことができる。メモリアクセスエージェントは、アクセスアドレスを有するメモリアクセス要求をメモリコントローラに提供する。メモリシステムは、メモリコントローラに接続されており、メモリアクセス要求に応答する。メモリシステムは、少なくとも１つのランクのメモリを有しており、各ランクは、行のセットを有するバンクのセットを含む。この場合、データ処理システムは、メモリアクセス要求をメモリコントローラに提供するためのメモリアクセスエージェントのセットをさらに含むことができる。さらに、メモリシステムは、メモリコントローラに接続されたメモリチャネルのセットを含むことができ、各メモリチャネルは、少なくとも１つのランクのメモリを有しており、各ランクは、行のセットを有するバンクのセットを含む。
【００５５】
さらに他の形態では、ダイナミックランダムアクセスメモリへのメモリアクセス要求を順序付けるための方法は、メモリアクセス要求を受信することを含む。メモリアクセス要求は、コマンドキューに記憶される。メモリアクセス要求は、第１タイプのメモリアクセス要求と、少なくとも１つの第２タイプのメモリアクセス要求と、を含む。第１タイプの連続するメモリアクセス要求のストリークは、第１閾値に達するまで実行される。コマンドキューは、少なくとも１つの第１タイプの追加のメモリアクセス要求と、少なくとも１つの第２タイプのメモリアクセス要求と、を記憶する。少なくとも１つの第２タイプのメモリアクセス要求は、第１タイプのメモリアクセス要求を実行した後に実行される。一例において、第１タイプはページヒット要求であってもよく、第２タイプはページミス要求であってもよい。オートプリチャージは、少なくとも１つの第２タイプのメモリアクセス要求を実行する前に、第１タイプの最後のメモリアクセス要求に対して有効にすることができる。他の例では、第１タイプは第１ランクへのページヒット要求であってもよく、第２タイプは第２ランクへのページヒット要求であってもよい。
【００５６】
受信したメモリアクセス要求は、ランク、バンク及び行にデコードすることができる。ランク、バンク及び行は、コマンドキューに記憶することができる。全ての適格なメモリアクセス要求のランク、バンク及び行のうち少なくとも１つを調べることによって、少なくとも１つの第２タイプのメモリアクセス要求が存在すると判別することができる。
【００５７】
さらに他の形態では、ダイナミックランダムアクセスメモリへのメモリアクセス要求を順序付けるための方法は、メモリアクセス要求を受信することを含む。メモリアクセス要求は、対応するメモリアクセス要求が読出し要求か書込み要求かを示すタイプにデコードされる。第１タイプの連続するメモリアクセス要求のストリークは、第１閾値に達するまで実行される。コマンドキューは、少なくとも１つの第１タイプの追加のメモリアクセス要求と、少なくとも１つの第２タイプのメモリアクセス要求と、を記憶する。少なくとも１つの第２タイプのメモリアクセス要求は、第１タイプのメモリアクセス要求を実行した後に実行される。
【００５８】
例えば、少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネルに提供する場合、第１タイプのメモリアクセス要求がコマンドキューに存在しなくなるまで、又は、第２閾値数の第１タイプのメモリアクセス要求を選択するまで、第１タイプのメモリアクセス要求を選択してもよい。この場合、少なくとも１つの第１タイプのメモリアクセス要求をメモリチャネルに提供した後に、第１タイプのメモリアクセス要求の選択を停止することができ、第２タイプのメモリアクセス要求がコマンドキューに存在しなくなるまで、又は、第３閾値数の第２タイプのメモリアクセス要求を選択するまで、第２タイプのメモリアクセス要求を選択することができる。
【００５９】
第１タイプのメモリアクセス要求は、書込み要求の総数、又は、特定の優先順位の書込み要求の総数を含むことができる。第１閾値は、対応するプログラム可能なレジスタに記憶することができる。
【００６０】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。
【図１】
2019521448.tif 000004
【図２】
2019521448.tif 000005
【図３】
2019521448.tif 000006
【図４】
2019521448.tif 000007
【図５】
2019521448.tif 000008
【図６】
2019521448.tif 000009
【図７】
2019521448.tif 000010
【手続補正書】
【提出日】平成31年4月19日(2019.4.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリコントローラ（５００）を含む装置（１００／２００）であって、
前記メモリコントローラ（５００）は、
メモリアクセス要求を受信して記憶するコマンドキュー（５２０）と、
複数の基準に基づいて前記メモリアクセス要求を前記コマンドキュー（５２０）から選択し、選択したメモリアクセス要求をメモリチャネル（１３０／１４０）に提供するアービタ（５３８）と、を備え、
前記アービタ（５３８）は、前記アービタ（５３８）が前記コマンドキュー（５２０）から選択する第１タイプの連続するメモリアクセス要求の数をカウントするための第１ストリークカウンタ（７０２）であって、前記第１タイプは、単一のバンクに対する他のページの競合が存在する場合の前記単一のバンクへのページヒットアクセスである、第１ストリークカウント（７０２）を含み、
前記アービタ（５３８）は、前記第１ストリークカウンタ（７０２）が第１閾値に達すると、前記第１タイプの要求の選択を停止し、少なくとも１つの第２タイプのメモリアクセス要求を選択し、前記少なくとも１つの第２タイプのメモリアクセス要求を前記メモリチャネル（１３０／１４０）に提供する、
装置（１００／２００）。
【請求項２】
前記第２タイプはページ競合要求を含む、
請求項１の装置（１００／２００）。
【請求項３】
前記第１ストリークカウンタ（７０２）が前記第１閾値に達すると、前記メモリコントローラ（５２０）は、前記少なくとも１つの第２タイプのメモリアクセス要求を選択する前に、前記メモリチャネル（１３０／１４０）への前記第１タイプの最後のメモリアクセス要求に対するオートプリチャージを有効にする、
請求項１の装置（１００／２００）。
【請求項４】
前記第１タイプは第１ランクへのページヒット要求を含み、前記第２タイプは第２ランクへのページヒット要求を含む、
請求項１の装置（１００／２００）。
【請求項５】
各々がアクセスアドレスを含むメモリアクセス要求を受信し、前記アクセスアドレスをランク、バンク及び行にデコードするデコーダ（５２２）をさらに備え、
前記コマンドキュー（５２０）は、メモリアクセス要求毎に、前記ランク、前記バンク及び前記行を記憶し、前記アービタ（５３８）は、全ての適格なメモリアクセス要求の前記ランク、前記バンク及び前記行のうち少なくとも１つを調べることによって、前記少なくとも１つの第２タイプのメモリアクセス要求が存在すると判別する、
請求項１の装置（１００／２００）。
【請求項６】
前記装置（１００／２００）は、
アクセスアドレスを有するメモリアクセス要求を前記メモリコントローラ（５００）に提供するメモリアクセスエージェント（１１０／２１０／２２０）と、
前記メモリコントローラ（１２０）に接続されたメモリシステム（１２０）であって、前記メモリアクセス要求に応答し、少なくとも１つのランクのメモリを有し、各ランクは複数の行を有する複数のバンクを含む、メモリシステム（１２０）と、
をさらに備えるデータ処理システム（１００）である、
請求項１の装置（１００／２００）。
【請求項７】
前記データ処理システム（１００）は、
メモリアクセス要求を前記メモリコントローラ（５００）に提供する複数のメモリアクセスエージェント（１１０／２１０／２２０）を備える、
請求項６の装置（１００／２００）。
【請求項８】
前記メモリシステム（１２０）は、
前記メモリコントローラ（１２０）に接続された複数のメモリチャネル（１３０／１４０）であって、少なくとも１つのランクのメモリを有し、各ランクは複数の行を有する複数のバンクを含む、複数のメモリチャネル（１３０／１４０）を備える、
請求項６の装置（１００／２００）。
【請求項９】
ダイナミックランダムアクセスメモリシステム（１２０）へのメモリアクセス要求を順序付けるための方法であって、
メモリアクセス要求を受信することと、
前記メモリアクセス要求をコマンドキュー（５２０）に記憶することであって、前記メモリアクセス要求は、単一のバンクに対する他のページの競合が存在する場合の前記単一のバンクへのページヒットアクセスである第１タイプのメモリアクセス要求と、少なくとも１つの第２タイプのメモリアクセス要求と、を含む、ことと、
前記第１タイプの連続するメモリアクセス要求のストリークを第１閾値に達するまで実行することであって、前記コマンドキュー（５２０）は、少なくとも１つの第１タイプの追加のメモリアクセス要求と、少なくとも１つ前記第２タイプのメモリアクセス要求と、を記憶する、ことと、
前記第２タイプの少なくとも１つのメモリアクセス要求を、前記第１タイプのメモリアクセス要求を実行した後に実行することと、を含む、
方法。
【請求項１０】
前記第１タイプのメモリアクセス要求を第１閾値に達するまで実行することは、
前記第１タイプの連続するメモリアクセス要求の数をカウントすることと、
前記数が前記第１閾値と等しいことに応じて、前記少なくとも１つの第２タイプのメモリアクセス要求を実行することと、を含む、
請求項９の方法。
【請求項１１】
前記第２タイプはページ競合要求を含む、
請求項９の方法。
【請求項１２】
前記少なくとも１つの第２タイプのメモリアクセス要求を実行する前に、前記第１タイプの最後のメモリアクセス要求に対するオートプリチャージを有効にすることをさらに含む、
請求項９の方法。
【請求項１３】
前記第１タイプは第１ランクへのページヒット要求を含み、前記第２タイプは第２ランクへのページヒット要求を含む、
請求項９の方法。
【請求項１４】
受信したメモリアクセス要求をランク、バンク及び行にデコードすることと、
前記ランク、前記バンク及び前記行をコマンドキュー（５２０）に記憶することと、
全ての適格なメモリアクセス要求の前記ランク、前記バンク及び前記行のうち少なくとも１つを調べることによって、前記少なくとも１つの第２タイプのメモリアクセス要求が存在すると判別することと、をさらに含む、
請求項９の方法。
【国際調査報告】
2019521448.tif 000011
2019521448.tif 000012