(57)【要約】  システムおよび方法は、マルチスレッドメモリ管理ユニット(MMU)内でアドレス変換を実行することに関する。2つ以上のアドレス変換要求がマルチスレッドMMUによって受信され、システムメモリのアドレスへのアドレス変換を取り出すために並列に処理され得る。アドレス変換がマルチスレッドMMUの変換キャッシュ内に存在する場合、アドレス変換は変換キャッシュから受信され、変換されたアドレスを使用してシステムメモリのアクセスのためにスケジュールされ得る。変換キャッシュ内にミスがある場合、2つ以上のアドレス変換要求が、2つ以上の変換テーブルウォークにおいて並列にスケジュールされ得る。
2018519581.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数のアップストリームデバイスから2つ以上のアドレス変換要求を受信するように構成されるマルチスレッドメモリ管理ユニット(MMU)を備え、
前記マルチスレッドMMUが、システムメモリの対応する変換されたアドレスを取得するために、前記2つ以上のアドレス変換要求のうちの少なくとも2つを並列に処理するようにさらに構成される、装置。
【請求項２】
前記1つまたは複数のアップストリームデバイスが、2つ以上のアドレス変換要求を生成するように構成される汎用プロセッサ、専用プロセッサ、またはマルチスレッドプロセッサのうちの1つまたは複数を備える、請求項1に記載の装置。
【請求項３】
前記マルチスレッドMMUが、前記2つ以上のアドレス変換要求を受信することと、変換キャッシュ内の変換のために前記2つ以上のアドレス変換要求を発行することとを行うように構成される1次スケジューラを備える、請求項1に記載の装置。
【請求項４】
前記1次スケジューラが、前記2つ以上のアドレス変換要求を、前記2つ以上のアドレス変換要求が前記1次スケジューラによって受信された順序とは異なる順序で前記変換キャッシュに発行するように構成される、請求項3に記載の装置。
【請求項５】
前記1次スケジューラが、前記2つ以上のアドレス変換要求が処理される間に前記2つ以上のアドレス変換要求を記憶するように構成される2つ以上の1次スケジューラスロットを備える、請求項3に記載の装置。
【請求項６】
前記2つ以上の1次スケジューラスロットが、前記1つまたは複数のアップストリームデバイスの2つ以上のエージェントに割り振られる、請求項5に記載の装置。
【請求項７】
前記割振りが、前記2つ以上のエージェントの分類に基づいてプログラム可能である、請求項6に記載の装置。
【請求項８】
前記割振りが、ラウンドロビン、固定優先度、または前記2つ以上のエージェントと関連付けられたプログラム可能優先度を含むアービトレーションポリシーに基づく、請求項6に記載の装置。
【請求項９】
前記2つ以上の1次スケジューラスロットが、対応する2つ以上の状態を含み、各状態が、対応する1次スケジューラスロット内に記憶されるアドレス変換要求のステータスを含む、請求項5に記載の装置。
【請求項１０】
前記1次スケジューラによって発行された前記2つ以上のアドレス変換要求のうちの1つまたは複数のヒッティングアドレス変換要求に対して前記変換キャッシュ内でヒットがある場合、前記変換キャッシュが、前記1つまたは複数のヒッティングアドレス変換要求に対して前記システムメモリの1つまたは複数の変換されたアドレスを含む対応する1つまたは複数の変換結果を前記1次スケジューラに提供するように構成される、請求項3に記載の装置。
【請求項１１】
前記1次スケジューラが、前記1つまたは複数のヒッティングアドレス変換要求に対して前記システムメモリの前記1つまたは複数の変換されたアドレスへのアクセスをスケジュールするように構成される、請求項10に記載の装置。
【請求項１２】
前記1次スケジューラが、対応する1つまたは複数のヒッティングアドレス変換要求と関連付けられた優先度、または前記1つまたは複数のヒッティングアドレス変換要求を生成した前記1つまたは複数のアップストリームデバイスと関連付けられたサービス品質(QoS)メトリックに基づいて、前記システムメモリの前記1つまたは複数の変換されたアドレスへの前記アクセスをスケジュールするように構成される、請求項11に記載の装置。
【請求項１３】
前記1次スケジューラが、前記アクセス間のハザードを回避するために前記アクセスを並べ替えることに基づいて前記システムメモリの前記1つまたは複数の変換されたアドレスへの前記アクセスをスケジュールするように構成される、請求項12に記載の装置。
【請求項１４】
前記1次スケジューラによって発行された1つまたは複数のミスアドレス変換要求に対して前記変換キャッシュ内でミスがある場合、前記変換キャッシュが、前記1つまたは複数のミスアドレス変換要求を2次スケジューラにフォワードするように構成される、請求項3に記載の装置。
【請求項１５】
前記2次スケジューラが、前記1つまたは複数のミスアドレス変換要求を受信することと、1つまたは複数の変換テーブルウォーカ(TTW)内の前記システムメモリのアドレスへの変換のために前記1つまたは複数のミスアドレス変換要求をスケジュールすることとを行うように構成される、請求項14に記載の装置。
【請求項１６】
前記2次スケジューラが2つ以上の2次スケジューラスロットを備え、前記2つ以上の2次スケジューラスロットが、前記1つまたは複数のミスアドレス変換要求のうちの2つ以上のミスアドレス変換要求を、前記2つ以上のミスアドレス変換要求に対応する前記システムメモリの変換されたアドレスを含む変換結果が前記1つまたは複数のTTWから受信されるとともに前記変換されたアドレスが前記変換キャッシュに戻されるまで記憶するように構成される、請求項15に記載の装置。
【請求項１７】
前記2つ以上の2次スケジューラスロットが対応する2つ以上の状態を含み、各状態が、対応する2次スケジューラスロット内に記憶されるミスアドレス変換要求のステータスを含む、請求項16に記載の装置。
【請求項１８】
前記2つ以上の2次スケジューラスロットが、前記1つまたは複数のアップストリームデバイスの2つ以上のエージェントに割り振られる、請求項16に記載の装置。
【請求項１９】
前記割振りが、前記2つ以上のエージェントの分類に基づいてプログラム可能である、請求項18に記載の装置。
【請求項２０】
前記割振りが、ラウンドロビン、固定優先度、または前記2つ以上のエージェントと関連付けられたプログラム可能優先度を含むアービトレーションポリシーに基づく、請求項18に記載の装置。
【請求項２１】
前記1つまたは複数のミスアドレス変換要求を受信することと、前記1つまたは複数のミスアドレス変換要求のうちの2つ以上のミスアドレス変換要求が同様のミスアドレス変換要求である場合、前記2つ以上の同様のミスアドレス変換要求のうちの1つだけを前記1つまたは複数のTTWにフォワードすることと、前記2つ以上の同様のミスアドレス変換要求のうちの残りのものを抑制することとを行うように構成される事前フィルタ処理ブロックをさらに含む、請求項15に記載の装置。
【請求項２２】
前記事前フィルタ処理ブロックが、2つ以上のミスアドレス変換要求に対して変換されるべき入力アドレスが同じ変換グラニュール内または前記同じ変換グラニュールの指定された倍数内に入る場合、前記2つ以上のミスアドレス変換要求が同様のミスアドレス変換要求であると判定するように構成される、請求項21に記載の装置。
【請求項２３】
前記1つまたは複数のミスアドレス変換要求に対して前記1つまたは複数のTTWから1つまたは複数の変換結果を受信することと、前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果である場合、前記同様の変換結果のうちの1つだけを前記変換キャッシュにフォワードすることと、残りの同様の変換結果を抑制することとを行うように構成される事後フィルタ処理ブロックをさらに含む、請求項15に記載の装置。
【請求項２４】
前記事後フィルタ処理ブロックが、前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果であるかどうかを判定するために前記変換キャッシュを精査するように構成される、請求項23に記載の装置。
【請求項２５】
前記1つまたは複数の変換結果を記憶するように構成される最近フィルされたキャッシュをさらに備え、前記事後フィルタ処理ブロックが、前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果であるかどうかを判定するために前記最近フィルされたキャッシュを精査するように構成される、請求項23に記載の装置。
【請求項２６】
前記1つまたは複数のミスアドレス変換要求のうちの2つ以上が前記システムメモリの冗長アクセスを伴うかどうかを判定することと、前記システムメモリの一意のアクセスだけが実行されることを許可することとを行うように構成される変換テーブルアクセスフィルタをさらに備える、請求項15に記載の装置。
【請求項２７】
前記変換テーブルアクセスフィルタが、2つ以上のミスアドレス変換要求に対する前記変換されたアドレスがメモリの同じブロックに入る場合、前記2つ以上のミスアドレス変換要求が冗長アクセスを伴うかどうかを判定するように構成される、請求項26に記載の装置。
【請求項２８】
前記変換テーブルアクセスフィルタが、1つまたは複数のミスアドレス変換要求の1つまたは複数の変換結果を保持するように構成される変換結果キャッシュを備える、請求項26に記載の装置。
【請求項２９】
前記変換テーブルアクセスフィルタが、前記1つまたは複数のミスアドレス変換要求に対する前記変換キャッシュからの1つまたは複数の変換結果を提供するように構成される、請求項28に記載の装置。
【請求項３０】
前記マルチスレッドMMUが、前記2つ以上のアドレス変換要求およびプリフェッチエンジンからの1つまたは複数のプリフェッチアドレス変換要求を受信することと、変換キャッシュ内の変換のために前記2つ以上のアドレス変換要求または1つまたは複数のプリフェッチアドレス変換要求のうちの少なくとも1つを発行することとを行うように構成されるメインスケジューラを備える、請求項3に記載の装置。
【請求項３１】
アドレス変換を実行する方法であって、
2つ以上のアドレス変換要求を受信するステップと、
マルチスレッドメモリ管理ユニット(MMU)内で、システムメモリの対応する変換されたアドレスを取得するために前記2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を並列に実行するステップと
を含む、方法。
【請求項３２】
前記マルチスレッドMMUの1次スケジューラ内に前記2つ以上のアドレス変換要求を記憶するステップと、前記1次スケジューラからの前記2つ以上のアドレス変換要求を、変換のために変換キャッシュに発行するステップとを含む、請求項31に記載の方法。
【請求項３３】
前記1次スケジューラからの前記2つ以上のアドレス変換要求を、前記2つ以上のアドレス変換要求が前記1次スケジューラによって受信された順序とは異なる順序で前記変換キャッシュに発行するステップを含む、請求項32に記載の方法。
【請求項３４】
前記2つ以上のアドレス変換要求が処理される間に、前記1次スケジューラの2つ以上の1次スケジューラスロット内に前記2つ以上のアドレス変換要求を記憶するステップを含む、請求項32に記載の方法。
【請求項３５】
1つまたは複数のアップストリームデバイスの2つ以上のエージェントの分類、またはラウンドロビン、固定優先度、もしくは前記2つ以上のエージェントと関連付けられたプログラム可能優先度を含むアービトレーションポリシーに基づいて、前記2つ以上のエージェントに前記2つ以上の1次スケジューラを割り振るステップを含む、請求項34に記載の方法。
【請求項３６】
前記変換キャッシュ内でヒットする1つまたは複数のヒッティングアドレス変換要求に対して前記システムメモリの1つまたは複数の変換されたアドレスを含む1つまたは複数の変換結果を、前記変換キャッシュから前記1次スケジューラに提供するステップを含む、請求項32に記載の方法。
【請求項３７】
対応する1つまたは複数のヒッティングアドレス変換要求と関連付けられた優先度、または前記1つまたは複数のヒッティングアドレス変換要求を生成した1つまたは複数のアップストリームデバイスと関連付けられたサービス品質(QoS)メトリックに基づいて、前記1次スケジューラによって、前記システムメモリの前記1つまたは複数の変換されたアドレスへのアクセスをスケジュールするステップを含む、請求項36に記載の方法。
【請求項３８】
前記アクセス間のハザードを回避するために、前記1次スケジューラによって、前記システムメモリの前記1つまたは複数の変換されたアドレスへの前記アクセスを並べ替えるステップを含む、請求項36に記載の方法。
【請求項３９】
前記変換キャッシュ内でミスしている1つまたは複数のミスアドレス変換要求を2次スケジューラにフォワードするステップを含む、請求項32に記載の方法。
【請求項４０】
1つまたは複数の変換テーブルウォーカ(TTW)内のアドレス変換に対して前記2次スケジューラによって受信された前記1つまたは複数のミスアドレス変換要求をスケジュールするステップをさらに含む、請求項32に記載の方法。
【請求項４１】
前記1つまたは複数のミスアドレス変換要求のうちの2つ以上のミスアドレス変換要求を、前記2つ以上のミスアドレス変換要求に対応する前記システムメモリの変換されたアドレスを含む変換結果が前記1つまたは複数のTTWから受信されるとともに前記変換されたアドレスが前記変換キャッシュに戻されるまで2つ以上の2次スケジューラスロット内に記憶するステップを含む、請求項40に記載の方法。
【請求項４２】
1つまたは複数のアップストリームデバイスの2つ以上のエージェントの分類、またはラウンドロビン、固定優先度、もしくは前記2つ以上のエージェントと関連付けられたプログラム可能優先度を含むアービトレーションポリシーに基づいて、前記2つ以上のエージェントに前記2つ以上の2次スケジューラスロットを割り振るステップを含む、請求項41に記載の方法。
【請求項４３】
2つ以上のミスアドレス変換要求が同様のミスアドレス変換要求である場合、前記2つ以上の同様のミスアドレス変換要求のうちの1つだけを前記1つまたは複数のTTWにフォワードするステップと、前記2つ以上の同様のミスアドレス変換要求のうちの残りのものを抑制するステップとをさらに含む、請求項40に記載の方法。
【請求項４４】
2つ以上のミスアドレス変換要求に対して変換されるべき入力アドレスが同じ変換グラニュール内または前記同じ変換グラニュールの指定された倍数内に入る場合、前記2つ以上のミスアドレス変換要求が同様のミスアドレス変換要求であると判定するステップを含む、請求項43に記載の方法。
【請求項４５】
前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果である場合、前記同様の変換結果のうちの1つだけを前記変換キャッシュにフォワードするステップと、残りの同様の変換結果を抑制するステップとをさらに含む、請求項40に記載の方法。
【請求項４６】
前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果であるかどうかを判定するために前記変換キャッシュを精査するステップを含む、請求項45に記載の方法。
【請求項４７】
前記1つまたは複数の変換テーブルウォーカ(TTW)内のアドレス変換に対してスケジュールされた前記1つまたは複数のミスアドレス変換要求のうちの2つ以上が、前記システムメモリの冗長アクセスを伴うかどうかを判定するステップと、前記システムメモリの一意のアクセスだけが実行されることを許可するステップとをさらに含む、請求項40に記載の方法。
【請求項４８】
2つ以上のミスアドレス変換要求に対する前記変換されたアドレスがメモリの同じブロックに入る場合、前記2つ以上のミスアドレス変換要求が冗長アクセスを伴うと判定するステップを含む、請求項47に記載の方法。
【請求項４９】
変換結果キャッシュ内で1つまたは複数のミスアドレス変換要求の1つまたは複数の変換結果を保持するステップと、前記1つまたは複数のミスアドレス変換要求に対して1つまたは複数の変換結果を前記変換キャッシュから提供するステップとをさらに含む、請求項47に記載の方法。
【請求項５０】
2つ以上のアドレス変換要求を受信するための手段と、
記憶するための手段の対応する変換されたアドレスを取得するために、前記2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を実行するための手段と
を含む、装置。
【請求項５１】
プロセッサによって実行されたときに、アドレス変換のための動作を前記プロセッサに実行させるコードを含む、非一時的コンピュータ可読記憶媒体であって、
2つ以上のアドレス変換要求を受信するためのコードと、
システムメモリの対応する変換されたアドレスを取得するために、前記2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を並列に実行するためのコードと
を含む、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2015年5月29日に出願された"MULTI-THREADED TRANSLATION AND TRANSACTION RE-ORDERING FOR MEMORY MANAGEMENT UNITS"と題する米国仮出願第62/168,712号の優先権を主張する。
【０００２】
本開示の態様はメモリ管理ユニット(MMU)に関し、より詳細には、例示的な態様は、複数の変換を並列に処理するように構成されるマルチスレッドMMUに関する。
【背景技術】
【０００３】
メモリ管理ユニット(MMU)は、プロセッサまたは周辺デバイス(一般にアップストリームクライアントまたはアップストリームデバイスと呼ばれる)に対するアドレス変換(および他のメモリ管理機能)を実行するように構成される。たとえば、MMUは、仮想メモリアドレスから物理メモリアドレスへの変換を実行するために当技術分野で知られている変換ルックアサイドバッファ(TLB)を備えてよい。
【０００４】
図1を参照すると、従来のMMU104は、アップストリームクライアントデバイス102からクライアント入力トランザクション116(たとえば、アドレスを読み取るかまたは書き込むことの要求)を受信し、変換がクライアント入力トランザクション116に対してMMU104内に存在する場合、MMU104はアドレス変換を実行する。アドレス変換情報は、クライアント入力トランザクション要求116におけるアドレスをクライアント出力トランザクション120に対するアドレスに変換するために使用される。
【０００５】
MMU104は、図1においてより詳細に示される。MMU104は、以前に完了した(または部分的に完了した)変換の結果を記憶する変換キャッシュ108を含むことができる。変換キャッシュ108内に記憶される情報を使用して変換されることができないクライアント入力トランザクション116は、変換テーブルウォーカ(TTW)114を使用する「変換テーブルウォーク」と呼ばれるプロセスを実行することによって解決される。特定のクライアント入力トランザクション116に対応する特定のエントリ(TTW0 112として示される)が、変換要求に対する変換テーブルウォークを実行するために使用される。いくつかの場合には、変換テーブルウォーク要求は、バス124からバス120を通してシステムメモリ106に送信され得、応答122は、システムメモリ106(ダウンストリームデバイス)から受信され、変換キャッシュ108に追加するために使用される対応する変換情報を含み得る。いくつかの場合には、クライアント出力トランザクションはバス120上で送信され得、応答122はクライアント出力トランザクションに関連し得、アップストリームクライアントデバイス102に送信され得る。
【０００６】
多数のクライアント入力トランザクション116は、それらが上記のようにサービスされ得る前に受信されるので、クライアント入力トランザクション116は、それらが変換キャッシュ108にアクセスできる前にトランザクションキュー110内に入れられてよい。トランザクションキュー110の先頭におけるクライアント入力トランザクション116は、変換キャッシュ108へのアクセスを順次許可される。トランザクションキュー110の先頭におけるクライアント入力トランザクション116に対して変換が変換キャッシュ108内に発見されない場合、トランザクションキュー110内のすべての他のトランザクションは、トランザクションキュー110の先頭におけるクライアント入力トランザクション116に対する変換結果が、TTW114およびシステムメモリ106のアクセスを使用して変換テーブルウォークの処理によって取得されるまで待つことを強いられる。トランザクションキュー110の先頭におけるクライアント入力トランザクション116に対する変換が取得される時間の間、MMU104は機能停止し、したがってMMU104の性能は低下する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、当技術分野において、一度に1つの変換テーブルウォークだけをサービスできる単一の変換テーブルウォーク(たとえば、TTW114)と、一度に1つのトランザクションだけを処理できるトランザクションキュー(たとえば、トランザクションキュー110)とを含む従来のMMUの前述の欠点を克服する必要がある。
【課題を解決するための手段】
【０００８】
例示的な態様は、マルチスレッドメモリ管理ユニット(MMU)内でアドレス変換を実行するためのシステムおよび方法に関する。2つ以上のアドレス変換要求が、マルチスレッドMMUによって受信されてもよく、それらのアドレス変換要求がマルチスレッドMMUの変換キャッシュ内に存在する場合にアドレス変換を取り出すために、または変換キャッシュ内でミスするアドレス変換要求に対して変換テーブルウォークを並列に実行するために、並列に処理され得る。
【０００９】
例示的なマルチスレッドMMUは、複数のクライアント要求の変換およびトランザクション並べ替えを並列に実行するように構成され得る。したがって、同時マルチスレッド変換は、例示的なマルチスレッドMMUによって受信された複数のクライアント入力トランザクションに対して実行され得る。また、例示的なマルチスレッドMMUは、新しく変換されたトランザクションが、変換されるのを待っている古いトランザクションをバイパスすることを可能にする(たとえば、従来のMMUにおいてトランザクションキューの先頭におけるトランザクションのみをサービスするという限定を回避する)トランザクション並べ替えを実行するように構成される。
【００１０】
いくつかの態様では、例示的なマルチスレッドMMUは、複数のスレッドの並列での変換を支援するために設けられた複数の変換テーブルウォーカに対する要求の重複を回避するために、変換要求の「事前フィルタ処理」を実行するように構成される。いくつかの態様では、変換結果の「事後フィルタ処理」もまた、変換キャッシュフィルの重複を回避するために実行される。また他の態様では、例示的な技法が、複数の要求に対する変換テーブルアクセスにおける重複または冗長を低減することによって、変換テーブルウォークの帯域幅消費を低減するために採用される。
【００１１】
したがって、例示的な一態様は、1つまたは複数のアップストリームデバイスから2つ以上のアドレス変換要求を受信するように構成されるマルチスレッドメモリ管理ユニット(MMU)を備える装置を対象とする。マルチスレッドMMUは、システムメモリの対応する変換されたアドレスを取得するために、2つ以上のアドレス変換要求のうちの少なくとも2つを並列に処理するようにさらに構成される。
【００１２】
別の例示的な態様は、アドレス変換を実行する方法を対象とし、方法は、マルチスレッドメモリ管理ユニット(MMU)内で、2つ以上のアドレス変換要求を受信するステップと、システムメモリの対応する変換されたアドレスを取得するために2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を並列に実行するステップとを含む。
【００１３】
別の例示的な態様は、2つ以上のアドレス変換要求を受信するための手段と、記憶するための手段の対応する変換されたアドレスを取得するために2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を並列に実行するための手段とを含む装置を対象とする。
【００１４】
また別の例示的な態様は、プロセッサによって実行されたときに、アドレス変換のための動作をプロセッサに実行させるコードを含む非一時的コンピュータ可読記憶媒体を対象とし、非一時的コンピュータ可読記憶媒体は、2つ以上のアドレス変換要求を受信するためのコードと、システムメモリの対応する変換されたアドレスを取得するために2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を並列に実行するためのコードとを含む。
【００１５】
添付図面は、本発明の態様の記載を援助するために提示され、態様の説明のためにだけ提供されており、態様を制限する意図はない。
【図面の簡単な説明】
【００１６】
【図１】従来のMMUを備えるシステムを示す図である。
【図２】マルチスレッドMMUを備える例示的なシステムを示す図である。
【図３Ａ】図2のマルチスレッドMMUの1次スケジューラを示す図である。
【図３Ｂ】図2のマルチスレッドMMUの1次スケジューラを示す図である。
【図４Ａ】図2のマルチスレッドMMUの2次スケジューラを示す図である。
【図４Ｂ】図2のマルチスレッドMMUの2次スケジューラを示す図である。
【図５】マルチスレッドMMUを備える別の例示的なシステムを示す図である。
【図６】変換テーブルアクセスフィルタに関する態様を示す図である。
【図７】変換テーブルアクセスフィルタに関する態様を示す図である。
【図８】変換テーブルアクセスフィルタを使用する方法に対するフローチャートである。
【図９】変換テーブルアクセスフィルタを使用する方法に対するフローチャートである。
【図１０】マルチスレッドMMUを使用して変換要求を処理する方法のフローチャートである。
【図１１】本開示の態様が有利に採用される場合がある例示的なワイヤレスデバイスを示す図である。
【発明を実施するための形態】
【００１７】
本発明の態様は、本発明の特定の態様を対象とする以下の説明および関連する図面において開示される。本発明の範囲から逸脱することなく、代替態様が考案され得る。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は詳細に説明されないか、または省略されることになる。
【００１８】
「例示的な」という単語は、本明細書では、「例、実例、または例証として機能する」を意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。同様に、「本発明の態様」という用語は、本発明のすべての態様が議論された特徴、利点、または動作モードを含むことを必要としない。
【００１９】
本明細書で使用する用語は、特定の態様のみを説明する目的のためのものであり、本発明の態様の限定であることを意図しない。本明細書で使用する単数形"a"、"an"、および"the"は、コンテキストがはっきりと別段に指示しない限り、複数形も含むことが意図される。さらに、「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことが理解されよう。
【００２０】
さらに、多くの態様が、たとえば、コンピューティングデバイスの要素によって実行されるべきアクションのシーケンスに関して説明される。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つもしくは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実行され得ることが認識されよう。加えて、本明細書で説明するアクションのこれらのシーケンスは、実行時に関連するプロセッサに本明細書で説明する機能を実行させるコンピュータ命令の対応するセットを記憶しているコンピュータ可読記憶媒体の任意の形態内に完全に具体化されると考えられ得る。したがって、本発明の様々な態様は、そのすべてが特許請求される主題の範囲内にあると考えられているいくつかの異なる形態において具体化されてもよい。加えて、本明細書で説明する態様の各々について、任意のそのような態様の対応する形態は、たとえば、説明するアクションを実行する「ように構成されるロジック」として本明細書で説明される場合がある。
【００２１】
本開示の例示的な態様は、2つ以上のクライアント要求の変換およびトランザクション並べ替えを並列に実行するように構成されるマルチスレッドMMUに関する。したがって、同時マルチスレッド変換は、例示的なマルチスレッドMMUによって受信された複数のクライアント入力トランザクションに対して実行され得る。また、例示的なマルチスレッドMMUは、新しく受信された変換要求に対するトランザクションが変換されるのを待っている古いトランザクションをバイパスすることを可能にするトランザクション並べ替えを実行し得る。
【００２２】
いくつかの態様では、例示的なマルチスレッドMMUは、複数のスレッドの並列での変換を支援するために設けられた複数の変換テーブルウォーカに対する要求の重複を回避するために、変換要求の「事前フィルタ処理」を実行することができる。いくつかの態様では、変換結果の「事後フィルタ処理」もまた、変換キャッシュフィルの重複を回避するために実施されてよい。また他の態様では、例示的な技法が、複数の要求に対する変換テーブルアクセスにおける重複または冗長を低減することによって、変換テーブルウォークの帯域幅消費を低減するために採用されてよい。
【００２３】
次に図2を参照すると、例示的な態様によるマルチスレッドMMUとして構成されるMMU204を備える処理システム200が示される。一般に、MMU204は、アップストリームデバイス202からクライアント入力トランザクション216を受信する場合がある。本明細書で使用する「トランザクション」という用語は、読取り/書込みシステムメモリ206に対する要求を含むことができ、いくつかの場合にはまた、要求に対する応答を含むことができる。たとえば、クライアント入力トランザクション216は、読取り/書込みシステムメモリ206に対する要求か、またはシステムメモリ206の指定されたアドレスへのアドレス変換に対するアドレス変換要求を含むことができる。アップストリームデバイス202は単一のデバイスではなく、汎用処理装置(GPU)、中央処理装置(CPU)、デジタル信号プロセッサ(DSP)など、任意の汎用または専用プロセッサを含む1つまたは複数のアップストリームデバイスを備える場合がある。その上、いくつかの場合には、アップストリームデバイス202はまた、2つ以上の処理スレッドを並列に処理することができるマルチスレッドプロセッサを備える場合がある。したがって、1つまたは複数のアップストリームデバイス202は、システムメモリ206のアドレスへのアドレス変換要求を生成するように構成されてよく、アドレス変換要求は、MMU204によってクライアント入力トランザクション216として受信されてよい。
【００２４】
マルチスレッド変換(すなわち、複数のトランザクションの同時処理)およびトランザクション並べ替えをサポートするために、例示的な態様は、1つまたは複数のマルチスレッドスケジューラを含み得るマルチスレッドMMUを対象とする。図2に示すように、MMU204は、以下のセクションで詳細に説明する1次スケジューラ210(それはマルチスレッドであり得る)および2次スケジューラ220(それもまたマルチスレッドであり得る)の2つのスケジューラを含む。
【００２５】
1次スケジューラ210は、クライアント入力トランザクション216を受信し、クライアント入力トランザクション216が受信された順序と同じであってもまたは異なってもよい順序で変換要求をスケジュールする。1次スケジューラ210は、任意の1つまたは複数の変換結果211が変換キャッシュ208から受信される前に、複数の変換要求209を変換のために変換キャッシュ208に発行することができる。この意味で、1次スケジューラ210は、同時に動作する複数の変換要求を有することができる。したがって、1次スケジューラ210は、本開示では「マルチスレッド」であるとして言及されてもよい。1次スケジューラ210は、(以前に変換キャッシュ208によって変換される)クライアント出力トランザクション242をシステムメモリ206に、クライアント入力トランザクション216が受信された順序と同じであってもまたは異なってもよい順序で送信することができる。したがって、1次スケジューラ210は、2つ以上の変換要求をアウトオブオーダで変換キャッシュ208に発行するように構成され得る。
【００２６】
2次スケジューラ220は、変換要求230(たとえば、それらは1次スケジューラ210から変換キャッシュ208に送信されたが、変換キャッシュ208内でミスしている)か、またはプリフェッチエンジン222からの変換要求228を受信する。プリフェッチエンジン222は、トランザクションに対する需要が発生する前にトランザクションをプリフェッチするように構成される別個の処理モジュールであり得る(たとえば、ループがプログラム内で認識される場合、所定のパターンに従う要求が繰り返されることになり、したがって、さらなる要求は、それらに対する需要が発生した後でそれらをフェッチすることで生じることがある待ち時間を回避するために前もってフェッチされてよい)。2次スケジューラ220は、変換要求228、230が受信された順序と同じかまたは異なる順序で変換要求236を発行することができる。また、2次スケジューラ220は、任意の1つまたは複数の変換結果238、240が受信される前に複数の変換要求236を発行することができる。この意味で、2次スケジューラ220はまた、同時に動作する複数の変換要求を有することができ、したがって、本開示のいくつかの態様では「マルチスレッド」であるとして言及されることもある。
【００２７】
一態様では、2次スケジューラ220は、要求236を変換テーブルウォーカ(TTW)214に送信することによって、変換キャッシュ208内でミスする要求230またはプリフェッチエンジン222からの要求228(または「プリフェッチアドレス変換要求」)に対する変換テーブルウォークを(受信の順序と同じかまたは異なる順序で)スケジュールするように構成される。この点について、2次スケジューラ220は事前フィルタ224と事後フィルタ226とを含み、それらの機能については以下で簡潔に紹介し、後のセクションで説明する。
【００２８】
無関係なまたは冗長な要求236が、TTW214に対して作成される可能性がある。事前フィルタ224は、TTW214に対して作成される無関係なまたは冗長な要求236を低減するように構成される。一方、事後フィルタ226は、無関係なまたは冗長な変換キャッシュフィルまたは変換結果238、240を低減するように構成される。
【００２９】
同じく図2から観測されるように、TTW214は、2つ以上の独立した変換テーブルウォーカ(TTW0〜TTWn-1、それぞれTTW212a〜212nとして指定される)を含む。TTW212a〜212nは、複数の要求236に対する変換テーブルウォークを並列に実行するために独立におよび同時に動作することができる。したがって、TTW214はまた、本開示では「マルチスレッド」であるとして言及されることがある。
【００３０】
次に図3Aを参照すると、1次スケジューラ210の展開図が示される。図示のように、1次スケジューラ210は、本明細書で1次スケジューラスロットと呼ばれる1つまたは複数のスケジューラエントリを含むことができる。図3Aでは、N個の1次スケジューラスロット0〜N-1が示され、スロット304a〜304nとして指定される。スロット304a〜304nについて、以下の図3Bを参照しながらより詳細に図示し、説明する。また、前に説明したクライアント入力トランザクション216は、1次スケジューラ210への入力として示される。1次スケジューラ210によって受信される各クライアント入力トランザクション216は、アドレス情報を含むことができるが、アドレス変換は、いくつかのクライアント入力トランザクション216に対して実行されない可能性がある。1次スケジューラ210によって送信された変換要求209に対応する、1次スケジューラ210によって受信された変換結果211もまた示される。1次スケジューラ210は、アドレス変換が要求されるかまたは指定されるすべてのクライアント入力トランザクション216に対する変換要求209を変換キャッシュ208に送信し、変換キャッシュ208から、変換要求209が(変換キャッシュ208内でミスがある場合に)2次スケジューラ220にフォワードされてよい。1次スケジューラ210は、クライアント出力トランザクション242をメモリ206に出力し、ここで出力トランザクション242は、MMU204によって処理されたクライアント入力トランザクション216に対応する。したがって、出力トランザクション242は、変換されたクライアント入力トランザクション216か、またはアドレス変換が要求または実行されなかったクライアント入力トランザクション216のいずれかに対応する。
【００３１】
次に図3Aおよび図3Bを併せて参照すると、1次スケジューラ210が1つまたは複数のクライアント入力トランザクション216を受信すると、1次スケジューラ210は、1つまたは複数のクライアント入力トランザクション216を記憶し、それらに対して並列に動作するように構成される。この点について、各クライアント入力トランザクション216は、対応するアドレス変換要求が処理される間に、たとえば変換要求に対して応答が受信され、続いて対応するクライアント入力トランザクション216が1次スケジューラ210から除去されるまで、1つまたは複数のスロット304a〜304nのうちの対応するスロット内に記憶される。変換が実行されないと判定される場合、同様に、対応する変換要求の処理が完了されたとして取り扱われ、対応するクライアント入力トランザクション216が1次スケジューラ210から除去されることになる。スロット304a〜304n(たとえば、図3Bにおいて具体的に示されるスロット0〜7に対応する)は、プログラム可能なやり方で(たとえば、エージェントの一定の分類に基づいて異なるエージェントに)割り振られてよく、またはアップストリームクライアントデバイス202の特定のエージェントに対応するために固定されたやり方で割り振られてもよい。
【００３２】
たとえば、アップストリームクライアントデバイス202は、1つまたは複数のエージェント(たとえば、エージェントA、Bなど)から構成されてよく、ここで1つまたは複数の要求のグループは1つのエージェントに対応してよい。エージェントは、グループまたはクラスに分類されてよい。各分類は、エージェントの各グループ/クラスが1次スケジューラ210に発行することができる変換要求の量に対する最小および最大の限度に基づく場合がある。図3Bに示すように、いくつかのスロットは、特定のエージェント(たとえば、エージェントAに対するスロット0および1、エージェントBに対するスロット2および3)のために予約されてよく、いくつかのスロット(たとえば、スロット4〜7)はすべてのエージェントのために利用可能であってよい。アップストリームクライアントデバイス202の特定のエージェントは、以下の条件が真であるときに1次スケジューラ210によって処理されるそのエージェントの変換要求を有することができる。(1)エージェントはMMU204に発行するために利用可能なクライアント入力トランザクション216(たとえば、変換要求)を有する、(2)1次スケジューラ210はすべてのエージェントに対応するスロット304a〜304nの最小の割振りを満足するほど十分な空いている利用可能なスロット304a〜304nを有する、および(3)1次スケジューラ210はエージェントのために許可されたスロット304a〜304nの最大数より少ないスロットを現在サービスしている。
【００３３】
上記の条件を実行または実施するために、アービトレーションユニット302が1次スケジューラ210内に設けられる。クライアントアップストリームデバイス202の複数のエージェントが上記の3つの条件を同時に満足する場合、アービトレーションユニット302は、どのエージェントのクライアント入力トランザクション216が最初に1次スケジューラ210によって受け入れられるかを判定するためにアービトレーションポリシーを実施するように構成される。ラウンドロビンもしくは固定優先度(たとえば、最も古いクライアント入力トランザクション216が最初にサービスされる)、プログラム可能優先度(たとえば、エージェントAからの要求はエージェントBからの要求より高い優先度になるようにプログラムされる場合がある)、または当技術分野で知られている任意の他の優先度ベースのアービトレーションポリシーなど、いくつかのタイプのアービトレーションポリシーがこの点においてアービトレーションユニット302によって実施され得る。
【００３４】
アービトレーションユニット302を通過した後、1次スケジューラ210によって処理するために適格であると判定されたクライアント入力トランザクション216は、利用可能なまたは空のスロット304a〜304n内にキューイングされるかまたは入れられる。明示的に示さないが、スロット304a〜304nの各々はまた、それに関連する状態を有してよく、スロットの状態は、そのスロット内に記憶されるクライアント入力トランザクション216に対するアドレス変換のステータスを含む。以下の状態は、本開示におけるスケジューラのスロットと関連付けられてよいが、それは網羅的なリストではなく、変形/追加が可能である。(1)「変換キャッシュルックアップを待機中」(たとえば、変換要求209がスケジュールされるべきであり、アドレス変換が実行されるとき)、(2)「変換が進行中」(たとえば、変換要求209がスケジュール済みであり、現在、変換結果211を待機中であるとき)、(3)「実行されるべき変換がないためメモリアクセスを待機中」(たとえば、クライアント出力トランザクション242は、変換が実行されるべきであると指定しないが、メモリアクセスに対してスケジュールされるとき)、(4)「変換完了」(たとえば、対応する変換結果211が受信済みであり、その時点で変換は完了しているとみなされ、トランザクションがクライアント出力トランザクション242としてメモリアクセスに対してスケジュールされるとき)。
【００３５】
したがって、クライアント入力トランザクション216が入れられるスロットの状態が、以下の「変換キャッシュルックアップを待機中」(アドレス変換が実行されるべきである場合)または「実行されるべき変換がないためメモリアクセスを待機中」(実行されるべきアドレス変換がない場合)のうちの1つに更新される。
【００３６】
1次スケジューラ210によって上記のようにスロット304a〜304nのうちの1つの中で受信され記憶された各クライアント入力トランザクション216は、最終的にMMU204によって処理される。あるクライアント入力トランザクション216が、変換が実行されるべきものとして指定される場合、対応する変換要求が、スケジューリングアルゴリズムを使用してスケジュールされる。この時点で、2次スケジューラ220はまた、1次スケジューラ210のスロット304a〜304nと同様のスロットを有することが理解されよう。2次スケジューラ220のスロットについて、以下のセクションにおいてより詳細に説明する。変換要求をスケジュールすることに関して、クライアント入力トランザクション216に対する変換要求は、割り振られていないかまたは空のスロットが2次スケジューラ220内で利用可能であり、1次スケジューラ210の1つまたは複数のスロット304a〜304nが、状態が「変換キャッシュルックアップを待機中」に設定されるクライアント入力トランザクション216を保持している場合、変換キャッシュ208または2次スケジューラ220に発行される。
【００３７】
スロット304a〜304n内の複数のクライアント入力トランザクション216が、それらの状態を「変換キャッシュルックアップを待機中」として設定される場合、1次スケジューラ210のメモリ変換スケジューリング308として示されるブロックは、各々がスロット304a〜304nのうちの1つに記憶される複数のクライアント入力トランザクション216の間で、スケジューリングアルゴリズムを用いてアービトレーションするように構成される。スケジューリングアルゴリズムは、ラウンドロビンもしくは固定優先度(たとえば、最も古いクライアント入力トランザクション216が最初にスケジュールされる)、プログラム可能優先度(たとえば、エージェントに基づく優先度、またはクライアント入力トランザクション216と関連付けられた優先度ベースのシグナリング)、または当技術分野で知られている他の適切な優先度ベースの選択メカニズムなどのアービトレーションアルゴリズムを含む場合がある。
【００３８】
クライアント入力トランザクション216が変換要求209として変換キャッシュ208に発行されるために選択されるとき、クライアント入力トランザクション216の対応するスロット304a〜304nは、「変換が進行中」に更新される。変換キャッシュ208は1つまたは複数の変換要求209を受信し、変換キャッシュ208が対応する変換を含むかどうかを検査するために、キャッシュルックアップが実行される。変換キャッシュ208内に1つまたは複数のヒットが存在する場合、すなわち特定の変換要求209(本開示では「ヒッティングアドレス変換要求」と呼ばれることがある)に対する変換キャッシュ208内に対応する変換が存在する場合、変換キャッシュ208は変換結果211を1次スケジューラ210にフォワードし、特定の変換要求209が送信された対応するスロットの状態は「変換完了」に更新される。一方、1つまたは複数の変換要求209(本開示では「ミスアドレス変換要求」とも呼ばれる)に対して変換キャッシュ208内に1つまたは複数のミスがあり、対応する変換が存在しない場合、2次スケジューラ220は、対応する1つまたは複数の変換要求236をスケジュールするために、TTW214の変換テーブルウォーカ(TTW)212a〜212n(図2参照)のうちの1つまたは複数にアクセスされる。変換結果238/240がTTW214から受信されると、変換結果は、1次スケジューラ210に(変換結果232/234を通して変換キャッシュ208に、およびそこで直ちに変換結果211を通して1次スケジューラに)フォワードされる。
【００３９】
TTW214を介して変換キャッシュ208または2次スケジューラ220は特定の変換要求209に対する変換を完了し、変換結果211が1次スケジューラ210に戻されると、1次スケジューラ210は、以下のアクションを実行することによって変換結果211を処理する。(1)変換結果211が、変換要求209が発行された対応するスロット304a〜304n内に記憶される、(2)対応するスロット304a〜304nの状態が「変換完了」としてマークされる。複数の変換結果211が同時に利用可能である場合、1次スケジューラ210は、どの変換結果211が処理するために最初に受信されるべきかを選択するように構成される。この点について、TTW214は、変換結果211の間で、ラウンドロビンもしくは固定優先度(最も古い変換結果211が最初に処理される)、プログラム可能優先度、または当技術分野で知られている他の優先度ベースの選択メカニズムなどのアルゴリズムに基づいてアービトレーションするように構成される。
【００４０】
したがって、1次スケジューラ210は、変換結果211をアウトオブオーダ(OOO)で受信してよく、変換結果211は、上記で説明したアービトレーション方式を使用して処理されてよい。ステータスが処理は「完了」であることを示すすべてのスロット304a〜304n(変換が要求/実行されないスロットを含む)に対して、スケジューリングアルゴリズムは、どの完了したトランザクション242がシステムメモリ206に発行されるかを判定するために採用される。この点について、スケジューリングアルゴリズムは順序付けルールが守られることを確実にするように設計され、順序付けハザードを生じることになるスロット304a〜304n内のクライアント入力トランザクション216は、システムメモリ206に対してスケジュールされることに適格ではない。ハザードを回避するための例示的な並べ替えルールについて、以下のセクションで説明する。スケジューリングアルゴリズムは、システムメモリ206に発行されることに適格であると判定される最高優先度の出力トランザクション242を選択するように設計されてよい。出力トランザクション242に対する優先度は、各クライアント入力トランザクション216と関連付けられてよく、または(たとえば、サービス品質(QoS)メトリックに基づく)優先度は、クライアント入力トランザクション216を発行したエージェント(クライアントアップストリームデバイス202の「マスター」とも呼ばれる)のタイプと関連付けられてもよい。出力トランザクション242をシステムメモリ206に発行することは、さらに、対応するクライアント入力トランザクション216を1次スケジューラ210から除去することを伴い、すなわち対応するクライアント入力トランザクション216は、その対応するスロット304a〜304nから割振りを解除される。
【００４１】
次に、並べ替えハザードを回避するために適用可能な並べ替えルールについて説明する。システムメモリ206が弱く順序付けられたメモリである場合、並べ替えハザードを回避するために、1次スケジューラ210は、(1)任意の2つの出力トランザクション242を並べ替えることが、リードアフターライト(RAW)ハザードを生じない、(2)任意の2つの出力トランザクション242を並べ替えることが、ライトアフターライト(WAW)ハザードを生じない、および(3)任意の2つの出力トランザクション242を並べ替えることが、ライトアフターリード(WAR)ハザードを生じないことを確実にするように構成され、RAW、WAWおよびWARハザードは当技術分野で知られている。
【００４２】
一方、システムメモリ206が強くまたは厳密に順序付けられたメモリである場合、並べ替えハザードを回避するために、1次スケジューラ210は、任意の2つの出力トランザクション242を並べ替えることが、厳密な順序付けハザードを生じないことを確実にするように構成される。2つの出力トランザクション242が同じエージェントによって生成されたクライアント入力トランザクション216から生じ、2つの出力トランザクション242が厳密な順序付けに対して指定される場合、出力トランザクション242を並べ替えることはできない。
【００４３】
いくつかの場合には、以下の追加の並べ替えルールもまた適用可能である場合がある。この点について、1次スケジューラは、並べ替えが以下のハザードを生じない、すなわち(1)任意の2つの出力トランザクション242を並べ替えることがインオーダーハザードを生じない、ことを確実にしなければならない。2つの出力トランザクション242が同じエージェントによって生成されたクライアント入力トランザクション216から生じ、そのエージェントが、2つの出力トランザクション242が発行されたのと同じ順序でのみ応答244を受信することができる場合、エージェントは、「インオーダー応答が指定される」とみなされ、2つの出力トランザクション242(両方とも「インオーダー」とマークされる)は、応答並べ替えバッファ(当技術分野で知られている)が実装されない場合、並べ替えることはできない。応答並べ替えバッファが実装される場合、上述の2つの出力トランザクション242を並べ替えることができ、応答並べ替えバッファは、「インオーダー応答が指定される」エージェントが、予想される順序に戻って応答244を受信するように元の順序を再構築するように構成される。
【００４４】
次に図4A〜図4Bを参照して、2次スケジューラ220について詳細に説明する。再び図2を参照すると、変換要求228/230が、それぞれ、プリフェッチエンジン222または変換キャッシュ208から受信されると、2次スケジューラはまた、1つまたは複数(たとえばM個)の変換要求228/230を記憶して並列に動作するように構成される。1次スケジューラ210のスロット304a〜304nと同様に、2次スケジューラ220によって受信された変換要求228/230は、変換結果238/240がTTW214から受信されるまで、スロット0〜M-1として示され、スロット404a〜404mとして指定されるM個の2次スケジューラスロットのうちの1つまたは複数の中に記憶される。
【００４５】
スロット404a〜404mは、(前に説明したように)クライアント入力トランザクション216が生じたエージェントの異なる分類に基づいてプログラム可能に、または固定されたやり方でエージェントに割り振られ得る。もう一度、各分類は、2次スケジューラ220に発行され得る、エージェントの各グループ/クラスからの変換要求の量の最小/最大限度に基づくことができる。エージェントは、以下の条件、(1)エージェントは利用可能な変換要求228/230を有する、(2)2次スケジューラ220はすべてのエージェントに対して最小のスロット割振りを満足するのに十分な利用可能なスロット404a〜404mを有する、および(3)2次スケジューラ220は要求しているエージェントに対して許可されたスロット404a〜404mの最大数より少ないものを現在サービスしている、が満足されるとき、エージェントの変換要求228/230が2次スケジューラ220によって処理されることに適格である。したがって、いくつかのスロットは特定のエージェントのために予約されてよく(たとえば、エージェントAに対するスロット0および1、エージェントBに対するスロット2および3)、いくつかのスロット(たとえば、スロット4〜7)はすべてのエージェントに対して利用可能であってよいことが、図4Bからわかる。
【００４６】
複数のエージェントが上記の条件を同時に満足する場合、アービトレーションブロック402は、どの変換要求228/230が最初に処理されるかを判定するためにアービトレーションポリシーを実装するように構成される。アービトレーションポリシーは、ラウンドロビンもしくは固定優先度(たとえば、最も古い変換要求228/230が最初に処理される)、プログラム可能優先度(たとえば、クライアント入力トランザクション216からの変換要求230はプリフェッチエンジン222からの変換要求228より優先される)、または当技術分野で知られている他の優先度ベースのアービトレーションポリシーであってよい。
【００４７】
変換要求228/230を受信し、アービトレーションブロック402によって変換要求228/230を選択すると、変換要求228/230は対応するスロット404a〜404mに割り当てられ、スロット(図示せず)の状態が「変換を待機中」(変換要求228/230が事前フィルタ処理に適格でない場合、図2の事前フィルタ処理ブロック224を参照しながら以下のセクションで説明する)かまたは(変換要求228/230が事前フィルタ処理に適格である場合、ここでXは前の変換要求236のスロットに対応する)「Xを待機中」をマークされる。
【００４８】
受信され、スロット404a〜404m内に記憶された各変換要求228/230は、最終的にTTW214のTTW212a〜212nのうちの1つに発行される(各TTW212a〜212nは1つの変換テーブルウォークを一度にサービスするように構成される)。割り振られていないTTW212a〜212nが変換要求228/230を受信するために利用可能であり、1つまたは複数のスロット404a〜404mが、状態が「変換を待機中」である変換要求228/230を保持している場合、変換要求228/230はTTW212a〜212nに発行される。
【００４９】
スロット404a〜404m内に記憶される2つ以上の変換要求228/230が状態「変換を待機中」を有する場合、スケジューリングブロック406は、ラウンドロビンもしくは固定優先度(たとえば、最も古い変換要求228/230が最初にスケジュールされる)、プログラム可能優先度(たとえば、変換要求228/230が生じたエージェントに基づく優先度)、または当技術分野で知られている他の優先度ベースの選択メカニズムなどのスケジューリングアルゴリズムに基づいてスケジューリングブロック406の間でアービトレーションするように構成される。
【００５０】
変換要求228/230がTTW212a〜212nのうちの1つに発行されるようにスケジュールされると、変換要求228/230を保持するスロット404a〜404mの状態は、「変換進行中」に更新される。対応するTTW212a〜212nは、変換要求228/230を処理するために以下のアクション、(1)2次変換キャッシュ(図示せず)を調べる、(2)変換を完了するために変換テーブルウォークを実行する、(3)完全な変換または部分的変換のいずれかを記憶できる変換キャッシュ(たとえば、変換キャッシュ208)にTTW212a〜212nからの結果を戻す、または(4)2次スケジューラ220にTTW212a〜212nからの結果を戻す、のうちの1つまたは複数を実行することになる。
【００５１】
2次スケジューラ220がTTW212a〜212nから変換結果238/240を受信すると、2次スケジューラ220はスロット404a〜404m内の変換結果238/240を処理し、対応するスロットを「変換完了」としてマークする。2つ以上の変換結果238/240が同時に戻される場合、TTW214は、たとえばラウンドロビンもしくは固定優先度(たとえば、最も古い変換結果238/240が最初に処理される)、プログラム可能優先度(たとえば、変換要求228/230が生じたエージェントに基づく優先度)、または当技術分野で知られている他の優先度ベースの選択メカニズムなどのアルゴリズムに基づいて、どの結果が最初に処理されるかを選択する。
【００５２】
2次スケジューラによって受信された変換結果238/240は、以下のように戻されるかまたはキューから取り出される。状態が「変換完了」としてマークされるスロット404a〜404mが選択され、それらのスロット内に含まれる変換結果238/240が1次スケジューラ210に(変換キャッシュ208を介して)戻される。プリフェッチ要求(変換要求228)に対応する変換結果238/240を含むスロット404a〜404nに対して、出力トランザクション242はプリフェッチ要求に対して生成されないためさらなるアクションは取られず、したがってスロット404a〜404mは割振りを解除され得る(解放され得る)。
【００５３】
状態が「変換完了」であるすべてのスロット404a〜404mからの変換結果238/240は、2つ以上の変換結果が同時に戻される準備ができている場合、アービトレーションプロセスを通して送信されてよい。アービトレーションプロセスは、ラウンドロビンもしくは固定優先度(たとえば、最も古い変換結果238/240が最初に戻される)、プログラム可能優先度(たとえば、対応する変換要求230が生じたエージェントに基づく優先度)、または当技術分野で知られている他の優先度ベースの選択メカニズムを含み得る。変換結果238/240が変換要求230が生じたエージェントに戻されると、対応するスロット404a〜404mは割振り解除される(解放される)。
【００５４】
上述のように、2つ以上のTTW212a〜212nは同時に動作することができる。各TTW212a〜212nは、受信された変換要求236に対するアドレスを変換するために、必要な変換キャッシュルックアップとメモリアクセス(変換テーブルウォーク)とを実行することができる。各TTW212a〜212nは、キャッシュフィル要求を発行し、変換結果238/240を2次スケジューラ220にフォワードすることができる。2次スケジューラ220は、変換結果238/240をアービトレーションし、必要に応じて変換結果238/240を適切な宛先にフォワードすることができる。
【００５５】
再び図2を参照して、次に、事前フィルタ処理ブロック224についてより詳細に説明する。2次スケジューラ220は、複数の変換要求236を並列に変換するプロセスに伴う冗長が最小化されるように、事前フィルタ処理を実行するように構成される。上記の説明から、複数の変換要求236(すなわち、ミスアドレス変換要求)を変換するプロセスは、変換テーブルウォークに対する(たとえば、システムメモリ206への)メモリアクセス、変換キャッシュルックアップ、変換要求236を処理するためのTTW212a〜212nなどのリソースの割振り、などを含むことがわかる。
【００５６】
複数の変換要求236が、たとえば、所与のアドレス空間の同じ変換グラニュール(granule)サイズ(たとえば、4KBグラニュールサイズ、それは例示的なMMU204に対する最小の変換グラニュールサイズであってよい)に対する変換を要求するとき、事前フィルタ処理ブロック224は、同様のミスアドレス変換要求の低減された数(たとえば、1)を除くすべての重複をフィルタで除去する、抑制する、または回避することと、複数の変換要求236の低減された数(たとえば、1)のうちの1つだけを処理のためにTTW212a〜212nにフォワードすることとを行うように構成される。次いで、事前フィルタ処理ブロック224は、1つまたは複数の後続の変換要求236に対して1つの変換または「最初の」変換の変換結果238/240を使用することができる。どの要求が同様であるかを判定するために、事前フィルタ処理ブロック224は、2次スケジューラ220において、プリフェッチエンジン222から受信された変換要求228/230または1次スケジューラ210から受信された変換要求228/230(それらは変換キャッシュ208内でミスしている)を、それぞれ検査する。変換要求230に関連するアドレス(および動作環境/アドレス空間を識別するための他の情報)が決定され、2次スケジューラ220によって現在サービスされている(すなわち、そのステータスが、それらの対応するスロット404a〜404m内で「変換進行中」または「変換を待機中」である)すべての他の変換要求236のアドレスと比較される。入力アドレスが同じ変換グラニュール(たとえば、同じ4KBブロック)に入る場合に、一致するかまたは同様の要求が発見され、動作環境/アドレス空間を識別するすべての他の情報は同一である。
【００５７】
一致が発見された場合、新しく受信された変換要求236を含むスロット404a〜404mのステータスは、「変換を待機中」ではなく「Xを待機中」としてマークされ、ここでXは、一致する変換要求236を含むスロット404a〜404mである。TTW212a〜212nがスロットXに対する変換結果238/240を戻すとき、ステータスが「Xを待機中」であるスロット404a〜404mは変換結果238/240によって更新され、そのステータスは「完了された変換」に更新される。代替態様では、ステータスが「Xを待機中」であるスロット404a〜404mを更新するのではなく、「Xを待機中」スロットに対する変換キャッシュルックアップ(またはTTW212a〜212nによる処理)が、スロットXに対する変換結果238/240が更新されるまで保留され得る。
【００５８】
いくつかの態様では、事前フィルタ処理ブロック224は、「ウィンドウ」ベースの処理を実施することができる。ウィンドウベースの処理では、TTW212a〜212nが変換要求236を処理するとき、アクセスされるアドレス空間の最小変換グラニュールに対するテーブルまたはページマッピングをフェッチすることに加えて、隣接するテーブルまたはページマッピングの整列されたウィンドウもまたフェッチされる。同時変換要求236が、このウィンドウによってカバーされるアドレスに対する変換を要求する場合、事前フィルタ処理ブロック224は、変換テーブルウォークが一度だけ実行され、後続の変換要求236の各々は、テーブルまたはページマッピングのウィンドウが変換結果238/240上に戻されるのを待つことを確実にするように構成され得る。
【００５９】
いくつかの他の態様では、最小変換グラニュールサイズ(たとえば、4KB変換ブロック)のミスアンダーミス事前フィルタ処理が採用され得る。ミスアンダーミス事前フィルタ処理は、多くの点で上記で説明したウィンドウベースの処理と同様である。特に、ミスアンダーミス処理における差異は以下のとおりである。最初の、および後続の変換要求236のアドレスが同じ整列されたウィンドウ(たとえば、4KBの最小変換グラニュールウィンドウサイズに限定されるのではなく、4KBなどの最小変換グラニュールの倍数)に入る場合、(たとえば、仮想から物理へのアドレス変換がMMU204によって実行されるべき場合にTTW212a〜212nから戻された仮想アドレスに対する)後続の変換要求236は、最初の変換要求236と同じであるかまたは一致するとみなされる。
【００６０】
再び図2を参照して、事後フィルタ処理ブロック226について、次により詳細に説明する。マルチスレッドTTW214は複数の変換を同時に処理し得るので、同時変換結果238/240は、冗長な/重複する情報で変換キャッシュ208をフィルする可能性がある。ミスアンダーミス事後フィルタ処理は、変換キャッシュ208に書き込まれる重複情報の量を排除する(または最小化する)ために事後フィルタ処理ブロック226によって採用されてよい。事後フィルタ処理ブロック226は、1つまたは複数のTTW212a〜212nから1つまたは複数の変換結果238/240を受信してよく、1つまたは複数の変換結果238/240のうちの2つ以上が同様の変換結果である場合、同様の変換結果のうちの1つだけを変換キャッシュ208にフォワードする一方で、残りの同様の変換結果を抑制する。
【００６１】
したがって、事後フィルタ処理の一態様では、重複情報が変換キャッシュ208内にフィルされないことを確実にするために、事後フィルタ処理ブロック226は、変換キャッシュ208をフィルする前に変換キャッシュ208を精査またはルックアップするように構成される。しかしながら、(たとえば、1次スケジューラ210からの他の変換要求209を処理するために潜在的に使用され得る)変換キャッシュ208ルックアップの帯域幅は、事後フィルタ処理ブロック226によって実行されるルックアップによる影響を受ける場合がある。たとえば、TTW212a〜212nからの変換キャッシュフィル要求(たとえば、変換結果238/240)が2次スケジューラ220において受信されると、事後フィルタ処理ブロック226は、変換結果238/240に対応する変換が変換キャッシュ208内にすでに存在するかどうかを検査するために、変換キャッシュ208を精査してよい。精査が一致を返す場合、事後フィルタ処理ブロック226は、TTW212a〜212nから受信された変換結果238/240を廃棄することができる。精査が一致を返さない場合、事後フィルタ処理ブロック226は、変換キャッシュ208に変換結果238/240がフィルされることを許可することができる。
【００６２】
事後フィルタ処理の別の態様では、最近フィルされた変換結果238/240の別個のキャッシュ(図示せず)が維持され得る。この別個のキャッシュは、本明細書では、最近フィルされた変換結果238/240を保持する「最近フィルされたキャッシュ(recently filled cache)」と呼ばれる。最近フィルされたキャッシュは、新しい変換結果232/234が最終的に変換キャッシュ208内にフィルされる前に重複する変換結果238を検査するために調べられ得る。最近フィルされたキャッシュは、変換キャッシュ208より小さくてよく、たとえば、最近フィルされたキャッシュのエントリの数は、TTW212a〜212nによって同時に処理され得る変換要求236の数に比例することができる。最近フィルされたキャッシュがこのようにして使用されるとき、変換キャッシュ208内に重複情報をフィルすることは依然として可能であるが、追加の変換キャッシュ精査は実行されないので、変換キャッシュ208のルックアップの帯域幅への影響はほとんどない。
【００６３】
事後フィルタ処理のために最近フィルされたキャッシュを利用する一態様では、フィルタ処理されていない変換結果(たとえば、事後フィルタ処理されていない変換結果238)が事後フィルタ処理ブロック226において受信されたとき、最近フィルされたキャッシュが調べられるかまたは精査される。特定の変換結果238に対して精査が一致を返す場合、事後フィルタ処理ブロック226は、一致する変換結果238を廃棄し、一致する変換結果238が変換キャッシュ208をフィルすることを防止してよい(というのは、本明細書では、最近発行された変換要求236に応答して一致する変換結果238が受信された場合、一致する変換結果238が変換キャッシュ208内にまだ存在する可能性が高いと考えるからである)。精査が一致をもたらさない場合、事後フィルタ処理ブロック226は、変換キャッシュ208とともに最近フィルされたキャッシュをフィルするために変換結果238を発行する。
【００６４】
いくつかの態様では、最近フィルされたキャッシュに基づく事後フィルタ処理は、以下のように構成されてよい。フィルタ処理されていない変換結果(たとえば、変換結果238)が2次スケジューラ220によって受信されたとき、2次スケジューラ220の各スロット404a〜404mは、変換結果238との一致があるかどうかを調べるために検査される。前に説明したように、スロット404a〜404mは、変換要求230(たとえば、仮想アドレス)と、変換要求230と関連付けられたコンテキスト情報とを含む場合がある。保留中の変換要求を有するスロット404a〜404mのいずれかの中の保留中の変換要求230と一致する変換結果238に対して、一致する変換要求230を含むスロット404a〜404mの状態は、「変換キャッシュフィル廃棄」としてマークされる。後続の変換結果238もまた、状態が「変換キャッシュフィル廃棄」であるスロットの変換要求230と一致する場合、この後続の変換結果238は重複であると判定され、後続の(重複する)変換結果238が変換キャッシュ208をフィルすることを許可するのではなく、事後フィルタ処理ブロック226によって廃棄される。状態が「変換キャッシュフィル廃棄」とマークされていないスロット404a〜404m内に記憶される変換要求230に対応する変換結果238は廃棄されず、変換キャッシュ208を(たとえば、図2に示す変換キャッシュフィル(フィルタ処理)結果232を介して)フィルすることを許可される。変換結果238がスロット404a〜404mのいずれかの中に記憶される変換要求230に対応または一致するかどうかを判定することは、アドレスフィールドおよびコンテキスト情報を照合するための、当技術分野で知られている任意の照合/ルックアップメカニズム(たとえば、仮想機械識別子、アドレス空間識別子、など)を伴うことができ、変換キャッシュ208を探索するプロセスと同様である場合がある。
【００６５】
次に図5を参照して、例示的なマルチスレッドMMUの代替実装形態を示す。図5は、MMU504を備える処理システム500を示す。処理システム500は、多くの点において図2の処理システム200と同様であり、したがって、これら2つの処理システムの同様の特徴を示すために同様の参照番号が維持される。同様の特徴を反復することなく処理システム200と500との間の顕著な差異に注目すると、MMU504は、MMU204の1次スケジューラ210および2次スケジューラ220を、1次スケジューラ210と2次スケジューラ220の両方の機能を実行するように構成される単一のメインスケジューラ510と置き換えていることが、図5からわかる。また、MMU504は、変換キャッシュ208に送信される変換要求509の事前フィルタ処理を実行するために事前フィルタ処理ブロック524を有する。事後フィルタ処理ブロック526は、変換結果238/240が変換キャッシュ208内にフィルされる前に変換結果238/240の事後フィルタ処理機能を実行する。プリフェッチエンジン222は、要求528(または本開示における「プリフェッチアドレス変換要求」)を、事前フィルタ処理が事前フィルタ処理ブロック524によって同様に適用され得るメインスケジューラ510に直接送信する。変換結果511(変換キャッシュ208から、または変換キャッシュ208内でミスする変換要求536に対してTTW212a〜212nを含むTTW214によって提供される変換結果238/240から)は、メインスケジューラ510に直接提供される。MMU504の残りの処理および機能はMMU204のものと同様であり、したがって、それらのさらなる詳細な説明は本明細書では回避される。
【００６６】
次に図6を参照して、変換テーブルへのアクセスの低減に関する態様を説明する。例示的なマルチスレッドMMU(たとえば、204/504)は、複数の変換テーブルウォークを同時に実行し得るので、これらの同時変換テーブルウォークのために採用されるステートマシンが調整されていない場合、ステートマシン(たとえば、TTW212a〜212n)は、仕事を重複させ、変換テーブルメモリ要求を同じ変換テーブルアドレスに2度以上まとめて発行する場合がある。したがって、いくつかの態様は重複する/冗長なメモリアクセスを排除し、相応して変換テーブルウォーカへのアクセスおよびマルチスレッドMMUのアクセス帯域幅を低減することに関する。この点について、図6は、前に説明したTTW214のTTW212a〜212nと、追加として重複する変換テーブルウォーク要求/アクセスを低減/排除することによって変換テーブルウォーク帯域幅を低減するように構成される変換テーブルアクセスフィルタ602とを示す。
【００６７】
変換テーブルアクセスフィルタ602は、TTW212a〜212nとメモリ206との間に構成または設置され得る。変換テーブルアクセスフィルタ602の展開図が、同様に図6に示される。変換テーブルアクセスフィルタ602は、TTW214に対する未処理の要求を保持するように構成される未処理のTTW要求状態ブロック606を含む。TTW212a〜212nに対応する対応のレジスタまたは記憶手段612a〜612nは、特定のTTW212a〜212nに関連する未処理の要求を保持するために設けられる。また、いくつかの態様では、オプションの変換結果キャッシュ608が、変換テーブルウォークのいくつかの変換結果(すなわち、メモリ206の変換されたアドレス)を記憶するために設けられ得る。未処理のTTW要求状態606およびレジスタ612a〜612nと、オプションで変換結果キャッシュ608とを使用して、変換テーブルアクセスフィルタ602は、メモリ206の重複する/冗長なアクセスを検出し、重複する/冗長なアクセスを低減または排除しながら、メモリ206の一意の(unique)アクセスだけを許可することができる。
【００６８】
例示的なマルチスレッドMMU(204/504)内の変換テーブルアクセスフィルタ602の効果について、図7を参照しながら説明する。2つの別個のテーブルウォーカ(たとえば、TTW212a〜212b)と関連付けられた2つのテーブルウォークシーケンスが、図7のウォークAおよびウォークBとして示される。一例では、TTW212a〜212bは、同じ変換テーブルを使用して同じアドレス空間内でアドレス"A"およびアドレス"B"に対する変換テーブルウォークを同時に実行することができる。アドレス"A"およびアドレス"B"が異なる変換グラニュール(たとえば、仮想メモリの4KBブロック)内に存在するが、メモリの同じブロック(たとえば、仮想メモリの2MBブロック)に入る場合、TTW212a〜212bは、アドレス"A"およびアドレス"B"に対して変換テーブルウォークの共通の要素を有することがわかる。この共通性は、図示のように、テーブルまたはページL1 702aおよびL2 702b内の同じ変換テーブルエントリへのメモリアクセスを重複させることをもたらす。テーブル704は、フィルタ処理のない(たとえば、変換テーブルアクセスフィルタ602の使用を伴わない)アドレス"A"および"B"に関連するテーブルウォークに対するメモリアクセスのリストを示し、テーブル706は、フィルタ処理を伴う(たとえば、変換テーブルアクセスフィルタ602の使用を伴う)アドレス"A"および"B"に関連するテーブルウォークに対するメモリアクセスのリストを示す。テーブル704と706とを比較すると、テーブル704内に存在する重複する変換テーブルアクセス(アドレス"B"に対するテーブルウォーク内に配備されたTTW212bに対するステップ1(L1)およびステップ2(L2))が、テーブル706内で排除されることがわかる。したがって、例示的な態様では、アクセスの数は変換テーブルアクセスフィルタ602が配備されると低減され、そのことで、低減された帯域幅がもたらされる。
【００６９】
次に図8を参照すると、変換テーブルへの無関係な/冗長なアクセスを抑制するためのアルゴリズムまたはフローチャートに関する方法800が示される。方法800は、選択的にイネーブルにされ得る。方法800がイネーブルにされると、TTW212a〜212nのうちの任意の1つに対して受信された新しい変換要求236の各々に対して、方法800は、メモリ206への無関係な/冗長なアクセスを抑制するために使用され得る。イネーブルは、たとえば、すべてのタイプのMMU204へのアクセスに対するグローバルイネーブルか、または特定の変換テーブルアクセスタイプに適用され得る個別イネーブルであり得る。変換テーブルアクセスタイプのいくつかの例には、ステージ1、レベル1〜3およびステージ2、レベル1〜3が含まれる。
【００７０】
方法800をより詳細に考察すると、ブロック802において、方法800は、たとえば、新しい変換要求236の各々から開始することができる。ブロック804において、変換テーブルアクセスフィルタ602がたとえばイネーブルにされるかどうかが判定される。変換テーブルアクセスフィルタ602がイネーブルにされる("yes"経路)場合、方法800はブロック806に進み、そこで、変換テーブルアクセスフィルタ602が特定の要求タイプに対してイネーブルにされるかどうかが判定される。ブロック804において、変換テーブルアクセスフィルタ602はイネーブルにされないと判定された場合、方法800はブロック810に進む。同様に、ブロック806において、変換テーブルアクセスフィルタ602は特定の要求タイプに対してイネーブルにされないと判定された場合、方法800はブロック810に進む。
【００７１】
ブロック806において、変換テーブルアクセスフィルタ602が特定の要求タイプに対してイネーブルにされると判定される場合、方法800はブロック808に進み、そこで、(たとえば、図6の未処理のTTW要求状態ブロック606またはレジスタ612a〜612nからの)新しい変換テーブル要求を満足する、重複する変換テーブルアクセスの未処理がすでに存在するかどうかが検査される。ブロック808において、判定が"no"である場合、方法800はブロック810に進む。ブロック810において、(たとえば、TTW214からメモリ206への)変換テーブルアクセスが、ブロック802において到来した新しい変換要求236を満足するために実行される。ブロック808において、判定が"yes"である場合、方法800はブロック812に進み、そこで、新しい変換テーブル要求が、(たとえば、変換テーブルアクセスフィルタ602を使用して)変換要求236に対して抑制される。次いで、方法800はブロック814に進み、それらの結果を使用して新しい変換要求236を満足するために、重複する変換テーブルアクセスが完了するのを待つ。ブロック814および810から方法800はブロック820に進み、そこで、方法800は終了するかまたは終わる。
【００７２】
いくつかの態様では、ブロック820は、新しい変換要求236を満足するためにブロック810から取得された、変換結果キャッシュ608内に記憶されるべきページテーブルデータを記憶することを含む場合がある。しかしながら、いくつかの他の態様では、追加のフィルタ処理ステップが、変換結果キャッシュ608内にページテーブルデータを記憶することを決定する前に実行されてよい。たとえば、ブロック810に続いて、方法800は、ページテーブルデータを記憶する前に実行され得る追加のフィルタ処理ステップを伴う場合がある。追加のフィルタ処理ステップについて、以下の図9を参照しながら説明する。
【００７３】
図9は、変換テーブル(たとえば、TTW214)への無関係な/冗長なアクセスを抑制するためのアルゴリズムまたはフローチャートに関する別の例示的な方法900を示す。ブロック802、804、806および810は、上記で説明した方法800のブロックと同様であり、したがって、それらについて、再度説明はしない。ブロック902で開始すると、ブロック902はブロック806における判定が"yes"である場合に到達され、ブロック902においてオプションの変換結果キャッシュ608がルックアップされる。変換要求236に対する要求された変換テーブルデータが変換結果キャッシュ608内で発見された場合、ブロック904において、方法900はブロック906に進む。ブロック906において、変換要求236に対する新しい変換テーブル要求は抑制され、変換結果キャッシュ608からのデータが、変換要求236をサービスするために使用され、ブロック906から方法900はブロック914に進み、そこで方法900は完了または終了する。
【００７４】
一方、ブロック904において、変換要求236に対する変換データが変換結果キャッシュ608内で発見されない場合、方法900はブロック810に進み、そこから、ブロック908〜912における追加のステップが実行される。ブロック908において、変換テーブルアクセスフィルタ602がイネーブルにされるかどうかをもう一度判定され、イネーブルにされないと判定された場合、方法900はブロック914において終わる。ブロック910において、変換テーブルアクセスフィルタ602がイネーブルにされる場合、変換テーブルアクセスフィルタ602が、特定の変換テーブル要求タイプの変換要求236に対してイネーブルにされるかどうかが判定され、イネーブルにされない場合、方法900はブロック914において終わる。ブロック910において、変換テーブルアクセスフィルタ602は、特定の変換テーブル要求タイプの変換要求236に対してイネーブルにされると判定される場合、ブロック912において、変換要求236に対するページテーブルデータが変換結果キャッシュ608内に記憶され、方法900はブロック914において終わる。
【００７５】
いくつかの例示的な態様では、ローカルキャッシュ(たとえば、変換結果キャッシュ608)が変換テーブルデータを保持し得るので、例示的なMMUによって受信された無効化コマンド(たとえば、当技術分野で知られているTLB無効化コマンド)に応答する間に注意が払われる。任意のTLB無効化コマンドがMMU204によって受信されると、たとえば、すべての変換結果キャッシュ608の内容は、無効であるとみなされる。したがって、メモリ206への、現在未処理であるすべての変換テーブルアクセスは、それらの結果が戻されるとき、それらが変換結果キャッシュ608に追加されないようにフラグを立てられる。いくつかの場合には、変換結果キャッシュ608内のすべてのエントリが、相応して無効化される。そのような場合、変換結果キャッシュ608は物理的にタグ付けされてよいので、すべての変換結果キャッシュ608は、任意のそのようなMMU無効化コマンドに対して無効化される。当業者によって理解されるように、他の同様の無効化手順が、本開示の範囲内で実施され得る。
【００７６】
態様は、本明細書において開示されるプロセス、関数、および/またはアルゴリズムを実行するための様々な方法を含むことを了解されたい。たとえば、図10は、アドレス変換を実行する方法1000を示す。方法1000は、2つ以上のアドレス変換要求(たとえば、アップストリームクライアントデバイス202からのクライアント入力トランザクション216)を受信することと、マルチスレッドメモリ管理ユニット(たとえば、MMU204)内でシステムメモリ(たとえば、メモリ206)の対応する変換されたアドレスを取得するために、2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を並列に実行することとを含む。
【００７７】
いくつかの態様では、方法1000は、(たとえば、1次スケジューラ210のスロット304a〜304n内の)少なくとも1つのスケジューラ内の2つ以上のアドレス変換要求を記憶することと、2つ以上のアドレス変換要求(たとえば、209)をマルチスレッドMMU内の変換キャッシュ(たとえば、変換キャッシュ208)に送信することとを含むことができる。いくつかの態様では、少なくとも1つのスケジューラ(たとえば、1次スケジューラ210)は、2つ以上のアドレス変換要求を、2つ以上のアドレス変換要求が少なくとも1つのスケジューラによって受信された順序と同じまたは異なる順序で変換キャッシュに発行することができる。いくつかの態様では、方法1000はまた、アドレス変換要求に対して変換キャッシュ内でヒットが存在する場合、2つ以上のアドレス変換要求のうちの1つのアドレス変換要求に対する変換(たとえば、変換結果211)を変換キャッシュから受信することか、または変換キャッシュ内でミスするアドレス変換要求(たとえば、230)を変換テーブルウォーカに(たとえば、2次スケジューラ220を通してTTW214に)フォワードすることを含むことができる。2つ以上の変換テーブルウォークは、2つ以上のアドレス変換要求に対して2つ以上の変換テーブルウォーカ(たとえば、212a〜212n)によって並列に実行され得る。
【００７８】
いくつかの態様では、方法1000は、アドレス変換要求を変換テーブルウォーカに重複してフォワードすることを回避するために、アドレス変換要求を変換テーブルウォーカにフォワードする前に、変換キャッシュ内でミスする(たとえば、事前フィルタ処理ブロック224内の)アドレス変換要求を事前フィルタ処理することを含むことができる。いくつかの態様では、方法1000はまた、変換キャッシュへのフィルの重複を回避するために、変換テーブルウォーカから取得された(たとえば、事後フィルタ処理ブロック226内の)変換結果を事後フィルタ処理することを含むことができる。いくつかの態様では、方法1000はまた、システムメモリへのアクセスにおける重複または冗長を低減することによって(たとえば、上記のように方法800または900において変換テーブルアクセスフィルタ602を使用することによって)、変換テーブルウォーカによって実行される変換テーブルウォークの帯域幅消費を低減することを含むことができる。
【００７９】
次に図11を参照すると、例示的態様に従って構成されるワイヤレスデバイスのブロック図が描かれており、全体的に1100で示される。ワイヤレスデバイス1100は、以下で説明するように、図2の処理システム200のいくつかの態様を含む。特にアップストリームクライアントデバイス202が示されており、アップストリームクライアントデバイス202はまた、マルチスレッドMMU204およびシステムメモリ206に結合されたプロセッサ(たとえば、デジタル信号プロセッサ(DSP)、中央処理装置(CPU)、など)であってよい。いくつかの場合には、MMU204を介するメモリ206への接続に加えて、プロセッサ202からメモリ206への直接接続が可能である。
【００８０】
図11は、プロセッサ202およびディスプレイ1128に結合された、ディスプレイコントローラ1126も示している。コーダ/デコーダ(コーデック)1134(たとえば、オーディオおよび/または音声コーデック)は、プロセッサ202に結合することができる。(モデムを含んでもよい)ワイヤレスコントローラ1140などの他の構成要素も示される。スピーカ1136およびマイクロフォン1138は、コーデック1134に結合することができる。図11は、ワイヤレスコントローラ1140をワイヤレスアンテナ1142に結合することができることも示している。特定の態様では、プロセッサ202、ディスプレイコントローラ1126、MMU204、メモリ206、コーデック1134、およびワイヤレスコントローラ1140は、システムインパッケージデバイスまたはシステムオンチップデバイスとして統合またはパッケージ化され得るシステム200内に含まれる。
【００８１】
特定の態様では、入力デバイス1130および電源1144が、システムオンチップデバイス200に結合される。さらに、特定の態様では、図11に示すように、ディスプレイ1128、入力デバイス1130、スピーカ1136、マイクロフォン1138、ワイヤレスアンテナ1142、および電源1144は、システムオンチップデバイス200の外部に位置する。ただし、ディスプレイ1128、入力デバイス1130、スピーカ1136、マイクロフォン1138、ワイヤレスアンテナ1142、および電源1144の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス200の構成要素に結合することができる。
【００８２】
図11はワイヤレス通信デバイスを示しているが、プロセッサ202、MMU204およびメモリ206は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、娯楽ユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、コンピュータ、ラップトップ、タブレット、モバイルフォン、または他の同様のデバイス内に組み込まれてもよいことに留意されたい。
【００８３】
当業者は、情報および信号が、様々な異なる技術および技法のいずれを使用しても表現され得ることを了解するであろう。たとえば、上の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現され得る。
【００８４】
さらに、当業者は、本明細書において開示される態様に関連して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得ることを了解するであろう。ハードウェアとソフトウェアとのこの互換性を明瞭に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上では全般的にその機能に関して説明された。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、具体的な適用例およびシステム全体に課される設計制約によって決まる。当業者は説明した機能を特定の適用例ごとに様々な方法で実施する場合があるが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００８５】
本明細書において開示される態様に関して説明する方法、シーケンスおよび/またはアルゴリズムは、直接ハードウェアにおいて具現化されても、プロセッサによって実行されるソフトウェアモジュールにおいて具現化されても、またはその2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取ること、および記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体は、プロセッサと一体であってもよい。
【００８６】
したがって、本発明の態様は、マルチスレッドプロセッサの管理/スケジューリングスレッドのための方法を実施するコンピュータ可読媒体を含み得る。したがって、本発明は例示の例に制限されず、本明細書に記載される機能を実施するための任意の手段は、本発明の態様に含まれる。
【００８７】
上記の開示が本発明の例示の態様を示す一方で、添付される請求項により規定されるような、本発明の範囲から逸脱することなく、本明細書に様々な変形および変更を行うことができることに留意されたい。本明細書に記載される本発明の態様に従う方法クレームの機能、ステップ、および/または動作を、任意の特定の順序で実施する必要はない。さらに、本発明の要素は、単数形で記載され、特許請求される場合があるが、単数形への制限が明示的に言及されない限り、複数形が意図される。
【符号の説明】
【００８８】
102  アップストリームクライアントデバイス
104  MMU
106  システムメモリ
108  変換キャッシュ
110  トランザクションキュー
112  エントリTTW0
114  変換テーブルウォーカ(TTW)
116  クライアント入力トランザクション
120  バス
122  応答
124  バス
200  処理システム
202  アップストリームデバイス
204  MMU
206  システムメモリ
208  変換キャッシュ
209  変換要求
210  1次スケジューラ
211  変換結果
212a〜212n  TTW
214  TTW
216  クライアント入力トランザクション
220  2次スケジューラ
222  プリフェッチエンジン
224  事前フィルタ/事前フィルタ処理ブロック
226  事後フィルタ/事後フィルタ処理ブロック
228  変換要求
230  変換要求
232  変換結果
234  変換結果
236  変換要求
238  変換結果
240  変換結果
242  クライアント出力トランザクション
244  応答
302  アービトレーションユニット
304a  スロット
304n  スロット
308  メモリ変換スケジューリング
402  アービトレーションブロック
404a  スロット
404m  スロット
406  スケジューリングブロック
500  処理システム
504  MMU
509  変換要求
510  メインスケジューラ
511  変換結果
524  事前フィルタ処理ブロック
526  事後フィルタ処理ブロック
528  要求
536  変換要求
602  変換テーブルアクセスフィルタ
606  TTW要求状態/TTW要求状態ブロック
608  変換結果キャッシュ
612a  レジスタ、記憶手段
612n  レジスタ、記憶手段
702a  ページL1
702b  ページL2
704  テーブル
706  テーブル
1100  ワイヤレスデバイス
1126  ディスプレイコントローラ
1128  ディスプレイ
1130  入力デバイス
1134  コーダ/デコーダ(コーデック)
1136  スピーカ
1138  マイクロフォン
1140  ワイヤレスコントローラ
1144  電源
【図１】
2018519581.tif 000003
【図２】
2018519581.tif 000004
【図３Ａ】
2018519581.tif 000005
【図３Ｂ】
2018519581.tif 000006
【図４Ａ】
2018519581.tif 000007
【図４Ｂ】
2018519581.tif 000008
【図５】
2018519581.tif 000009
【図６】
2018519581.tif 000010
【図７】
2018519581.tif 000011
【図８】
2018519581.tif 000012
【図９】
2018519581.tif 000013
【図１０】
2018519581.tif 000014
【図１１】
2018519581.tif 000015
【手続補正書】
【提出日】平成29年11月30日(2017.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
1つまたは複数のアップストリームデバイスから2つ以上のアドレス変換要求を受信するように構成されるマルチスレッドメモリ管理ユニット(MMU)を備え、
前記マルチスレッドMMUが、システムメモリの対応する変換されたアドレスを取得するために、前記2つ以上のアドレス変換要求のうちの少なくとも2つを並列に処理するようにさらに構成され、
前記マルチスレッドMMUが、1次スケジューラと、変換キャッシュと、2次スケジューラとを備え、
前記1次スケジューラが、前記2つ以上のアドレス変換要求を受信することと、前記変換キャッシュ内の変換のために前記2つ以上のアドレス変換要求を発行することとを行うように構成され、
前記1次スケジューラによって発行された1つまたは複数のミスアドレス変換要求に対して前記変換キャッシュ内でミスがある場合、前記変換キャッシュが、前記1つまたは複数のミスアドレス変換要求を前記2次スケジューラにフォワードするように構成され、
前記2次スケジューラが、前記1つまたは複数のミスアドレス変換要求を受信することと、1つまたは複数の変換テーブルウォーカ(TTW)内の前記システムメモリのアドレスへの変換のために前記1つまたは複数のミスアドレス変換要求をスケジュールすることとを行うように構成され、
前記マルチスレッドMMUが、
前記1つまたは複数のミスアドレス変換要求を受信することと、前記1つまたは複数のミスアドレス変換要求のうちの2つ以上のミスアドレス変換要求が同様のミスアドレス変換要求である場合、前記2つ以上の同様のミスアドレス変換要求のうちの1つだけを前記1つまたは複数のTTWにフォワードすることと、前記2つ以上の同様のミスアドレス変換要求のうちの残りのものを抑制することとを行うように構成される事前フィルタ処理ブロック、または
前記1つまたは複数のミスアドレス変換要求のうちの2つ以上が前記システムメモリの冗長アクセスを伴うかどうかを判定することと、前記システムメモリの一意のアクセスだけが実行されることを許可することとを行うように構成される変換テーブルアクセスフィルタ
のうちの少なくとも1つをさらに備える、装置。
【請求項２】
前記1つまたは複数のアップストリームデバイスが、2つ以上のアドレス変換要求を生成するように構成される汎用プロセッサ、専用プロセッサ、またはマルチスレッドプロセッサのうちの1つまたは複数を備える、請求項1に記載の装置。
【請求項３】
前記1次スケジューラが、前記2つ以上のアドレス変換要求を、前記2つ以上のアドレス変換要求が前記1次スケジューラによって受信された順序とは異なる順序で前記変換キャッシュに発行するように構成される、請求項1に記載の装置。
【請求項４】
前記1次スケジューラが、前記2つ以上のアドレス変換要求が処理される間に前記2つ以上のアドレス変換要求を記憶するように構成される2つ以上の1次スケジューラスロットを備え、前記2つ以上の1次スケジューラスロットが前記1つまたは複数のアップストリームデバイスの2つ以上のエージェントに割り振られ、前記割振りが、
前記2つ以上のエージェントの分類に基づいてプログラム可能であるか、または
ラウンドロビン、固定優先度、または前記2つ以上のエージェントと関連付けられたプログラム可能優先度を含むアービトレーションポリシーに基づき、前記2つ以上の1次スケジューラスロットが対応する2つ以上の状態を含み、各状態が、対応する1次スケジューラスロット内に記憶されるアドレス変換要求のステータスを含む、
請求項1に記載の装置。
【請求項５】
前記2つ以上の1次スケジューラスロットが対応する2つ以上の状態を含み、各状態が、対応する1次スケジューラスロット内に記憶されるアドレス変換要求のステータスを含む、請求項4に記載の装置。
【請求項６】
前記1次スケジューラによって発行された前記2つ以上のアドレス変換要求のうちの1つまたは複数のヒッティングアドレス変換要求に対して前記変換キャッシュ内でヒットがある場合、前記変換キャッシュが、前記1つまたは複数のヒッティングアドレス変換要求に対して前記システムメモリの1つまたは複数の変換されたアドレスを含む対応する1つまたは複数の変換結果を前記1次スケジューラに提供するように構成され、
前記1次スケジューラが、対応する1つまたは複数のヒッティングアドレス変換要求と関連付けられた優先度、または前記1つまたは複数のヒッティングアドレス変換要求を生成した前記1つまたは複数のアップストリームデバイスと関連付けられたサービス品質(QoS)メトリックに基づいて、かつ前記アクセス間のハザードを回避するために前記アクセスを並べ替えることにさらに基づいて、前記1つまたは複数のヒッティングアドレス変換要求に対して前記システムメモリの前記1つまたは複数の変換されたアドレスへのアクセスをスケジュールするように構成される、
請求項1に記載の装置。
【請求項７】
前記2次スケジューラが2つ以上の2次スケジューラスロットを備え、前記2つ以上の2次スケジューラスロットが、前記1つまたは複数のミスアドレス変換要求のうちの2つ以上のミスアドレス変換要求を、前記2つ以上のミスアドレス変換要求に対応する前記システムメモリの変換されたアドレスを含む変換結果が前記1つまたは複数のTTWから受信されるとともに前記変換されたアドレスが前記変換キャッシュに戻されるまで記憶するように構成され、
前記2つ以上の2次スケジューラスロットが、前記1つまたは複数のアップストリームデバイスの2つ以上のエージェントに割り振られ、前記割振りが、
前記2つ以上のエージェントの分類に基づいてプログラム可能であるか、または
ラウンドロビン、固定優先度、または前記2つ以上のエージェントと関連付けられたプログラム可能優先度を含むアービトレーションポリシーに基づく、
請求項1に記載の装置。
【請求項８】
前記2つ以上の2次スケジューラスロットが対応する2つ以上の状態を含み、各状態が、対応する2次スケジューラスロット内に記憶さいるミスアドレス変換要求のステータスを含む、請求項7に記載の装置。
【請求項９】
前記事前フィルタ処理ブロックが、2つ以上のミスアドレス変換要求に対して変換されるべき入力アドレスが同じ変換グラニュール内または前記同じ変換グラニュールの指定された倍数内に入る場合、前記2つ以上のミスアドレス変換要求が同様のミスアドレス変換要求であると判定するように構成される、請求項1に記載の装置。
【請求項１０】
前記1つまたは複数のミスアドレス変換要求に対して前記1つまたは複数のTTWから1つまたは複数の変換結果を受信することと、前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果である場合、前記同様の変換結果のうちの1つだけを前記変換キャッシュにフォワードすることと、残りの同様の変換結果を抑制することとを行うように構成される事後フィルタ処理ブロックであって、前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果であるかどうかを判定するために前記変換キャッシュを精査するように構成される、事後フィルタ処理ブロックと、
前記1つまたは複数の変換結果を記憶するように構成される最近フィルされたキャッシュであって、前記事後フィルタ処理ブロックが、前記1つまたは複数の変換結果のうちの2つ以上が同様の変換結果であるかどうかを判定するために前記最近フィルされたキャッシュを精査するように構成される、最近フィルされたキャッシュと
をさらに含む、請求項1に記載の装置。
【請求項１１】
前記変換テーブルアクセスフィルタが、2つ以上のミスアドレス変換要求に対する前記変換されたアドレスがメモリの同じブロックに入る場合、前記2つ以上のミスアドレス変換要求が冗長アクセスを伴うかどうかを判定するように構成され、前記変換テーブルアクセスフィルタが、1つまたは複数のミスアドレス変換要求の1つまたは複数の変換結果を保持するように構成される変換結果キャッシュを備える、請求項1に記載の装置。
【請求項１２】
前記変換テーブルアクセスフィルタが、前記1つまたは複数のミスアドレス変換要求に対する前記変換キャッシュからの1つまたは複数の変換結果を提供するように構成される、請求項11に記載の装置。
【請求項１３】
アドレス変換を実行する方法であって、
2つ以上のアドレス変換要求を受信するステップと、
マルチスレッドメモリ管理ユニット(MMU)内で、システムメモリの対応する変換されたアドレスを取得するために前記2つ以上のアドレス変換要求に対する2つ以上のアドレス変換を並列に実行するステップであって、
前記マルチスレッドMMUの1次スケジューラ内に前記2つ以上のアドレス変換要求を記憶し、かつ前記1次スケジューラからの前記2つ以上のアドレス変換要求を、変換のために変換キャッシュに発行するステップと、
前記変換キャッシュ内でミスしている1つまたは複数のミスアドレス変換要求を2次スケジューラにフォワードするステップと、
1つまたは複数の変換テーブルウォーカ(TTW)内のアドレス変換に対して前記2次スケジューラによって受信された前記1つまたは複数のミスアドレス変換要求をスケジュールするステップと、
2つ以上のミスアドレス変換要求が同様のミスアドレス変換要求であるかどうかを判定し、かつ前記2つ以上の同様のミスアドレス変換要求のうちの1つだけを前記1つまたは複数のTTWにフォワードしながら、前記2つ以上の同様のミスアドレス変換要求のうちの残りのものを抑制するステップか、または
前記1つまたは複数の変換テーブルウォーカ(TTW)内のアドレス変換に対してスケジュールされた前記1つまたは複数のミスアドレス変換要求のうちの2つ以上が、前記システムメモリの冗長アクセスを伴うかどうかを判定し、かつ前記システムメモリの一意のアクセスだけが実行されることを許可するステップ
のうちの少なくとも1つのステップと
を含む、方法。
【請求項１４】
請求項13に記載の方法を実行するための手段を含む、装置。
【請求項１５】
プロセッサによって実行されたときに、請求項13に記載の方法を前記プロセッサに実行させるコードを含む、非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2018519581.tif 000016
2018519581.tif 000017
2018519581.tif 000018