JP6981662B2 - プログラム可能なメモリ転送リクエストユニット - Google Patents

プログラム可能なメモリ転送リクエストユニット Download PDF

Info

Publication number
JP6981662B2
JP6981662B2 JP2018510006A JP2018510006A JP6981662B2 JP 6981662 B2 JP6981662 B2 JP 6981662B2 JP 2018510006 A JP2018510006 A JP 2018510006A JP 2018510006 A JP2018510006 A JP 2018510006A JP 6981662 B2 JP6981662 B2 JP 6981662B2
Authority
JP
Japan
Prior art keywords
memory transfer
port
memory
address space
transfer request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018510006A
Other languages
English (en)
Other versions
JP2018523247A (ja
Inventor
アーロン ジッティンズ ベンジャミン
Original Assignee
アーロン ジッティンズ ベンジャミン
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AU2015901247A external-priority patent/AU2015901247A0/en
Application filed by アーロン ジッティンズ ベンジャミン filed Critical アーロン ジッティンズ ベンジャミン
Publication of JP2018523247A publication Critical patent/JP2018523247A/ja
Application granted granted Critical
Publication of JP6981662B2 publication Critical patent/JP6981662B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Description

発明の分野
発明は、これに限定されないが、いわゆるメモリ保護ユニット、メモリ管理ユニット、命令キャッシュ、データキャッシュおよびメモリ管理ユニットにおいて用いられるトランスレーション・ルックアサイド・バッファの形でのキャッシュの実装および利用に関する。本発明のさまざまな実施形態は、多くの32ビットおよび64ビットプロセッサ環境において用いることに適している。限定されないが、これはリアルタイムの、安全でセキュリティ・クリティカルの、サイバー・フィジカル・コンピューティング環境、さらにかなりリソースが制約されたコンピューティング環境を含む。
発明の背景
出版された文書に対する本明細書における言及は、前記文書の内容が本明細書の当業者の一般的な知識の一部であるということを認めたことにはならない。メモリ管理アーキテクチャの例を[1]、[2]および[3]に開示する。さまざまなメモリ保護ユニット(MPU)およびメモリ管理ユニット(MMU)技術のアーキテクチャを記述するために利用される専門用語は、矛盾する定義を有する場合がある。請求項を含め、本明細書では以下のとおりとする。
●「備える」は述べられた特徴、整数、ステップまたは構成要素の存在を規定するために用いられるが、1つ以上の別の特徴、整数、ステップおよび構成要素の存在または追加を排除する。
●メモリコントローラ(例えば図1の115)に接続されるメモリ格納(例えば図1の118)は、メモリ格納として高レベルの抽象的概念として記述することができる。
●周辺機器(例えば図1のネットワークコントローラ105)は、外部I/Oピンを有しても、有さなくてもよい。周辺機器は少なくとも1つのインターコネクト・インターフェースを備え、各インターコネクタ・インターフェースはインターコネクトマスタまたはインターコネクトターゲットポートのいずれかである。
●バスはインターコネクトのタイプである。クロスバーはインターコネクトのタイプである。
●メモリからメモリへのダイレクトメモリアクセス(MWM DMA)ユニット(例えば図1の140)は、1つのメモリロケーションに格納されるメモリの値を読み、前記値を異なるメモリロケーションに書き込む目的のための1つ以上のインターコネクトマスタ(例えば図1の143および144)にわたるメモリ転送リクエストを発行するために特に最適化されたプログラム可能なハードウェア回路である。M2M DMAは異なるマスターデバイス(例えば図1の110または194)による制御の支配下にあるスレーブデバイスである。本タイプのM2M DMAユニットの既知の例はインテルの8237Aである。M2M DMAユニットはさらに、メモリ格納から連続したメモリロケーションを読み、データの各ワードをメモリマップド周辺機器の同じアドレスに書き込むような、追加のメモリ移動の関連ケーパビリティを供給することができる。M2M DMAユニットはプログラム可能なダイレクトメモリアクセス(PDMA)ユニットとして記述することができる。
●メモリ保護ユニット(MPU)は入力アドレス空間に関連したメモリ転送リクエストを受信して、それに応答して出力アドレス空間に関連したメモリ転送リクエストを生成する。MPUは(a)アクセス制御が入力アドレス空間の1つ以上の領域に適用することができ、(b)MPUが常に入力アドレス空間におけるメモリ転送リクエストのアドレスと、出力アドレス空間における対応するメモリ転送リクエストのアドレスの間の恒等変換を利用することを特徴とする。あるMPUアーキテクチャを2つ以上の領域記述子のランタイムでの入力アドレス空間の同じ連続した領域へのマッピングを支持するように明確に設計する。
●メモリ管理ユニット(MMU)は入力アドレス空間に関連するメモリ転送リクエストを受信し、それに応答して出力アドレス空間に関連する対応するメモリ転送リクエストを生成する。MMUを(a)アクセス制御が入力アドレス空間の1つ以上の領域に適用することができ、(b)MMUが入力アドレス空間に関連するメモリ転送リクエストのアドレスおよび出力アドレス空間における対応するメモリ転送リクエストのアドレスを変換することに適用する。
●正しい形式のメモリ転送リクエストは、メモリ転送リクエストに対する関連のインターコネクト・プロトコルの要件を正しく満たすいかなるメモリ転送リクエストである。正しい形式のメモリ転送リクエストを受信することは、リクエストが発行において不正な形式でなく、リクエストが転送において破壊されなかったことを示している。
メモリ管理技術が記述される複数の出版物において、「仮想アドレス空間」は「物理アドレス空間」にマッピングされる。本用語は、与えられたコンピュータアーキテクチャにおいて利用される汎用プロセッサ上で走るソフトウェアのための単一レベルのアドレス変換手段がある場合に明瞭である。本明細書において、前記用語を「入力アドレス空間」が「変換されたアドレス空間に」マッピングされたという用語を使用する。この後者の用語は、2つ以上のレベルのアドレス変換手段を有するコンピュータアーキテクチャを考慮する場合に、各レベルのメモリアドレス変換手段のために一貫して用いることができる。この後者の用語はさらに、汎用プロセッサ、グラフィックプロセッサおよび別のタイプのインターコネクトマスタ周辺機器からのメモリ転送リクエストを受信することに適用されるメモリアドレス変換手段のために一貫して用いることができる。
請求項を含めた本明細書により、ページ、ページ記述子、フレーム、セグメント、セグメント記述子およびレンジ記述子を次のように定義する。
●Nバイト長の「フレーム」は、Nバイト長さであり、Nバイト境界で開始する変換されたアドレス空間における連続したメモリの領域を定義する。
●Nバイト長の「ページ」は、Nバイト長さであり、Nバイト境界で開始する入力アドレス空間における連続したメモリの領域を定義する。「ページ記述子」は入力アドレス空間に関連したメモリのページを記述する。入力アドレス空間におけるメモリのページは変換されたアドレス空間におけるメモリのフレームにマッピングしてもよい。
●Nバイト長の「セグメント」は、Nバイトの長さであり、Oバイト境界を起点として入力アドレス空間においてメモリの連続領域を定義する。割り当てられたセグメント部分はNバイト長未満であってよく、また本セグメント内に位置するアドレスオフセットから始まってよい。用語「可変長セグメント」とは、割り当てられたセグメントのポートの長さを変更してよいことを意味する。割り当てられたセグメント部分を、変換されたアドレス空間におけるPバイト境界上でメモリの連続領域にマッピングしてよい。O値およびP値はまた異なってよい。N値、O値およびP値との間の関係は、セグメント化方式の実装の詳細に応じて変化する。実際には、ハードウェアにて実装手段を用いるために幾つかのコンピュータアーキテクチャを設計して、入力されたアドレス空間において割り当てられた2つのプログラム可能セグメント部分が重複するのを防止する。前記他のコンピュータアーキテクチャの訂正動作では、入力されたアドレス空間において、割り当てられた2つのプログラム可能セグメント部分が実行時に重複しないことを確実にするための、管理ソフトウェアが必要とされる場合もある。「セグメント記述子」は、入力されたアドレス空間と関連したメモリのセグメントを記述する。
●Nバイト長の「範囲記述子」はNバイト長である入力アドレス空間においてメモリの連続領域を定義する。範囲を下限アドレスおよび上限アドレス、または下限アドレスおよび範囲長さにより定義してよい。与えられた範囲記述子において可能であるプログラム可能なアドレス変換がない場合、入力アドレス空間における範囲を、恒等変換を用いて出力アドレス空間におけるメモリの連続領域にマッピングする。範囲記述子は入力アドレス空間においてファイングレイン境界(例えば64バイト粒度)において開始および終了してよい。あるいは、範囲記述子は入力アドレス空間においてコースグレイン境界(例えばキビバイト粒度)において開始および終了してよい。商用オフザシェルフMPU実装において、プログラム可能なアドレス変換ケーパビリティを有さない2つ以上の範囲記述子が入力アドレス空間において重複メモリ領域に関連することを明らかに可能にすることは一般的である。
請求項を含めて本明細書を通じて、キャッシュライン、キャッシュブロック、キャッシュサブブロックおよびキャッシュタグを次のように定義する。
●「キャッシュライン」はメモリの連続領域である。従来の汎用目的のコンピュータアーキテクチャにおいて、キャッシュラインの長さは8バイトから32バイトの範囲である。原理的には、キャッシュラインはページまたはセグメントの最大長と同じ長さを有することができる。各キャッシュラインはキャッシュタグと関連している。キャッシュラインの内容において、「キャッシュタグ」はキャッシュラインに関するメタデータを格納する。前記メタデータは、限定されないが、入力アドレス空間において前記アドレス、および/または変換されたアドレス空間および前記キャッシュの状態において前記アドレスを含んでよい。
●「キャッシュブロック」はキャッシュサブブロックに再分割されたメモリの連続領域である。従来の汎用目的のコンピュータアーキテクチャにおいて、キャッシュブロックは2から4のキャッシュサブブロックからなる。従来の汎用目的のコンピュータアーキテクチャにおいて、キャッシュサブブロックの長さは8バイトから32バイトの範囲である。各キャッシュブロックはキャッシュタグと関連している。キャッシュブロックの内容において、キャッシュタグはキャッシュブロックに関するメタデータを格納する。メタデータは、限定されないが、入力アドレス空間において前記アドレス、および/または変換されたアドレス空間および前記キャッシュの状態において前記アドレスを含んでよい。
請求項を含めて本明細書を通じて、「プログラム可能なメモリ転送リクエスト処理(PMTRP)」ユニットおよび「領域記述子」を次のように定義する。
●PMTRPはさまざまなポリシーに従ってメモリ転送リクエストを受信して処理することに適用し、各メモリ転送リクエストは特定のアドレス空間に関連し、各アドレス空間は前記PMTRPユニットにより実施される複数のポリシーに関連する。「領域記述子」は、さまざまなポリシーを特定のPMTRPユニットインスタンスに関連する特定のアドレス空間の特定領域に関連づけるために用いる。例えば、
Figure 0006981662
くてもよい。
Figure 0006981662
くてもよい。
Figure 0006981662
るメモリサブシステムのデフォルト動作を修正するフィールドに適用してもよいし、そうでなくてもよい(例えば、キャッシュ書き込みポリシー、および/またはメモリオーダポリシーを調整することにより)。
●領域記述子に関連するアドレス空間の領域は、
Figure 0006981662
関して規制してもよいし、そうでなくてもよく、さらに、
Figure 0006981662
てもよい。
したがって、「領域記述子」のフィールドはさまざまな記述子を実行することに適用することができる。これは、限定されないが、ページ記述子、セグメント記述子、トランスレーション・ルックアサイド・バッファ記述子、プログラムのアドレス変換なしの範囲記述子、プログラムのアドレス空間ありの範囲記述子およびキャッシュタグを含む。
明らかに、与えられた領域記述子の特定フィールドを、前記領域記述子インスタンスのために特に定義する。
PMTRPユニットを、前記PMTRPユニットの1つ以上のインターコネクトターゲットポートにメモリ転送リクエストを発行することに適用する1つ以上のインターコネクトマスタから独立して定義する。非限定例により、MMU機能を実行するPMTRPユニットは一般性を失うことなく1つのインターコネクトマスタの周辺機器に対するプライベートIOMMUとして用いるために適用してよい。さらにMMU機能を実行するPMTRPは一般性を失うことなく複数のインターコネクトマスタの周辺機器にわたって共有される、共有IOMMUとして用いるために適用してよい。
請求項を含めて本明細書を通じて、「プログラム可能な領域記述子」を、前記領域記述子の1つ以上のフィールドをプログラムで調整してよい領域記述子として定義する。
コンピュータアーキテクチャのメインメモリを管理するための初期のMMUスキームは一般的に、小さい記憶容量を有するメインメモリで用いるために適用した。物理メモリの記憶容量が向上するにつれ、異なる原理に基づくMMUスキームを、小さい記憶容量のために設計されたこれらの初期のMMUスキームのさまざまな認知または実際の制限[1]、[2]を克服するために利用した。
著者の知る限り、ファイングレインメモリ割り当てケーパビリティで大きな入力アドレス空間をサポートする全ての発行されたMMUスキームは、(ソフトウェアまたはハードウェアのどちらかで制御する)トランスレーション・ルックアサイド・バッファ(TLB)を利用する。これらのTLBを、入力アドレス空間と関連付けることができる比較的少数の潜在的に非常に大きな数の領域記述子をキャッシュすることに用いる。VAX−11/780アーキテクチャを考える[3]。VAX−11/780MMUスキームは32ビット入力アドレス空間全体を割り当てるために8,388,608の領域記述子を必要とする[3]。VAX−11/780の複数の実装では一元化したTLBを利用して高速メモリにおいて、これらの8,388,608の領域記述子[2]までの128までをキャッシュし、1つ以上のテーブルにおいてイネーブルな領域記述子を格納し、比較的遅いメインメモリストレージに格納した。後に著者の知る限りにおいて、工業利用では潜在的に非常に大きな数のイネーブルな領域記述子の管理を改善するための領域記述子を捜す場合、2つ(以上)のレベルの間接参照(インデックススキーム、ハッシュスキーム、連結リストスキーム)を利用することに主に焦点を当ててきた。2つ以上の間接参照のレベルの利用に対する工業的トレンドは明らかに、VAX−11/780アーキテクチャ[2]のようなシングルレベルの変換アーキテクチャにおいて発見されるさまざまな技術的困難を解決することである。著者の知る限り、32ビットまたは64ビットアドレス空間においてリーフ領域記述子にアクセスするための2つ以上の間接参照のレベルをサポートする全ての発行されたMMUスキームの実装は、それらのパフォーマンスを加速するために(ソフトウェアまたはハードウェアのどちらかで制御する)TLBを利用する。データキャッシュと組み合わせて領域記述子をキャッシュするためにTLBを利用することは、可能なデータキャッシュを有し、可能なTLBケーパビリティを有するプロセッサコアにおいて走るソフトウェアの静的タイミング解析を実行する複雑度を顕著に向上させる。32ビットおよび64ビット入力アドレス空間において、比較的ファイングレインのメモリ割り当てに対するサポートのある、低レイテンシで、ハイスループットで、一定時間のオペレーションを有するMMUアーキテクチャに対して長年必要とされている。マイクロコントローラ市場において、メモリ保護ユニット(MPU)として処理することができ、さらに市販のハイアシュランスのセキュリティ・クリティカル・リアルタイム・オペレーティングシステム(RTOS)を走らせるMMUとして処理することができるPMTRPユニットを供給する必要性もある。これは、多くのハイアシュランスのRTOSがアドレス変換ケーパビリティのあるハードウェアMMUのアベイラビリティに依存しているからである。さらに、より迅速なタスクスワッピングおよび改善されたシステムパフォーマンスをサポートするためのリアルタイム環境において時間解析可能な方法で遅延の少ない領域記述子の再プログラミングを低コストで加速するための手段も長年にわたって必要とされている。
さらに、性的に時間解析可能なリアルタイムシステムにおいて用いることに適切な、それぞれが異なるソフトウェアの制御下にある(例えばハイパーバイザは第1レベルのMMUスキームを制御し、ハイパーバイザにおいてホストされるオペレーティングシステムは第2レベルのMMUスキームを制御する)2階層のアドレス変換をサポートすることが長年必要とされている。Linuxのような汎用目的のオペレーティングシステムをサポートするためのページベースのMMUスキームを走らせる必要があるリソース制約の環境(例えばモノのインターネット)において、従来のページベースのMMUよりもより少ない実装するハードウェア回路領域を必要とし、さらにユーザアドレス空間コンテキストスワップの後にソフトウェアのより迅速な実行をサポートする刷新的なMMUアーキテクチャに対する注目すべき市場のニーズがある。
本発明の好ましい実施形態は、上記市場ニーズに対して新しく刷新的な解決手段を供給する。
本発明の好ましい実施形態の説明
より迅速なタスクスワッピングおよび改善されたシステムパフォーマンスをサポートするためにリアルタイム環境において時間解析可能な方法で遅延の少ない領域記述子の再プログラミングを低コストで加速するための方法が長年にわたって必要とされている。
図1は、本発明の好ましい実施形態のためのデータを処理する装置(100)の部分を示すブロック概略図である。装置(100)はプロセッサユニット(110)を備える。プロセッサユニット(110)はインターコネクト(190)に接続されるインターコネクトマスタポート(111)を有する。プロセッサユニットの例は、限定されないが、汎用16ビット、32ビットまたは64ビットプロセッサコア、グラフィックプロセッサユニットまたは特定用途向けプロセッサコアを含む。原理的には、インターコネクトマスタの周辺機器をプロセッサユニット(110)の代わりに用いてもよい。
装置(100)はさらに不揮発性メモリストア(112)を備える。前記不揮発性メモリストア(112)はインターコネクトターゲットポート(113)によりインターコネクト(190)に接続される。
装置(100)はさらにプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニット(120)を備える。PMTRPユニットが利用することができる機能の例は、限定されないが、ページベースのメモリ管理ユニット(MMU)、最近アクセスしたページ記述子をキャッシュするトランスレーション・ルックアサイド・バッファを備えるページベースのMMU、セグメントベースのMMU、最近アクセスしたセグメント記述子をキャッシュするトランスレーション・ルックアサイド・バッファを備えるセグメントベースのMMUおよびキャッシュタグとキャッシュデータがPMTRPユニット(120)のメモリストア(123)のプログラム可能なコンフィギュレーションデータに格納されるキャッシュを含む。
キャッシュタグは、限定されないが、シングルビットキャッシュラインの現在フィールド、(32ビット/64ビット)入力アドレスフィールド、(32ビット/64ビット)変換アドレスフィールド、システムソフトウェアタスクのためのアクセス制御ポリシーをコード化するマルチビットフィールド、インターコネクトマスタの周辺機器のためのアクセス制御ポリシーをコード化するマルチビットフィールド、シングルビット「キャッシュラインの現在」フラグ、8、16および/または32ビット粒度を備える現在マスクフィールド、フラグを「読み込むための最近アクセスしたキャッシュライン」、シングルビット「キャッシュラインのダーティ」フラグ、8、16および/または32ビット粒度を備えるダーティマスクフィールド、マルチビットキャッシュモードフィールド(例えばライトスルー、ライトバックなど)、マルチバスマスター環境においてメモリコンシステンシを示すマルチビットメモリオーダフィールドのようなさまざまなフィールドを備えてよい。
装置(100)はさらに以下を備える。
●プログラム可能なダイレクトメモリアクセス(PDMA)ユニット(140)。
●任意の一方向のインターコネクトブリッジ(160)。前記ブリッジ(160)のインターコネクトマスタポート(161)はインターコネクト(191)に接続されている。前記ブリッジ(160)のインターコネクトターゲットポート(162)はインターコネクト(192)に接続されている。
●SDRAMコントローラ(115)。SDRAMコントローラ(115)のインターコネクトターゲットポート(116)はインターコネクト(192)に接続されている。
●SDRAMメモリストア(118)。前記SDRAMメモリストア(118)のターゲットポート(119)はSDRAMコントローラ(115)のマスタポートに接続されている。
●インターコネクトターゲットポート(171)および格納手段(172)を備えるオンチップSRAMメモリストア(170)。
●ネットワークインターフェース周辺機器(105)。前記ネットワークインターフェース周辺機器(105)のインターコネクトターゲットポート(106)およびインターコネクトマスタポート(107)はインターコネクト(192)に接続されている。
●高精細度マルチメディアインターフェース(HDMI)周辺機器(180)。前記HDMI周辺機器(180)のインターコネクトターケットポート(181)およびインターコネクトマスタポート(182)は共にインターコネクト(192)に接続されている。
●デュアルポート(188,189)ユニバーサルシリアルバス(USB)周辺機器(185)。前記USB周辺機器(185)のインターコネクトターゲットポート(186)およびインターコネクトマスタポート(187)は共にインターコネクト(192)に接続されている。
●集積コア(199)、MMUサブシステム(197)およびキャッシュサブシステム(199)を備える汎用プロセッサ(194)。前記汎用プロセッサ(194)はインターコネクトマスタポート(195)およびインターコネクトターゲットポート(196)の両方を介してインターコネクト(292)に接続されている。
集合的に、プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニット(120)、プログラム可能なダイレクトメモリアクセス(PDMA)ユニット、任意のブリッジ(160)およびインターコネクト(191)は、コンポジットプログラム可能なメモリ転送リクエスト処理ユニット(165)として集合的に記述することができる。
本模範的明細書において、プロセッサユニット(110)は、インターコネクトマスタ(111)からインターコネクト(190)にデータメモリ転送リクエスト、および/またはコードメモリ転送リクエストを発行することに適用する。
プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニット(120)は、書き込みポート(126)および読み込みポート(127)にわたってランタイム制御ユニット(122)にアクセスすることに適用する制御ユニット(121)を有する。ランタイム制御ユニット(122)は1つ以上の制御レジスタ(図示されていない)のバンクを有する。PMTRPユニット(120)はメモリストア(123)にアクセスすることに適用する。メモリストア(123)はPMTRPユニット(120)のためにプログラム可能なコンフィギュレーションデータを格納することに適用する。前記プログラム可能なコンフィギュレーションデータは、少なくとも2つのプログラム可能な領域記述子要素を格納することに適用する。制御ユニット(121)はさらに、インターコネクト(190)に接続されているインターコネクトターゲット(128)上でメモリ転送リクエストを受信することに適用する。制御ユニット(121)はさらに、インターコネクト(192)に接続されているインターコネクトマスタ(129)上でメモリ転送リクエストを送信することに適用する。制御ユニット(121)はさらに、処理時間においてメモリストア(123)のプログラム可能なコンフィギュレーションデータにおいて格納される少なくとも2つのプログラム可能な領域記述子要素においてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致するインターコネクトターゲットポート(128)で受信する第1アドレス空間に関連するメモリ転送リクエストを処理することに適用する。
プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニット(120)は、メモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータ内に格納される領域記述子要素の部分にアクセスするためにメモリ転送リクエストを受信することに適用するインターコネクトターゲットポート(134)を有する。これはPDMAユニット(140)のインターコネクトマスタ(143)による前記メモリストア(123)内の適切なメモリロケーションへの正しい形式のメモリ転送リクエストを許可して処理する読み取り手段(132)および書き込み手段(133)を含む。
本発明の好ましい実施形態において、プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニット(120)のインターコネクトターゲットポート(134)はさらに、領域記述子でないメモリストア(123)において格納されるプログラム可能なコンフィギュレーションデータの部分にアクセスするためにメモリ転送リクエストを受信することに適用する。
PMTRPユニット(120)はランタイム制御ユニット(122)にメモリ転送リクエストを読み取りて書き込むことに適用する。インターコネクトターゲットポート(124)はインターコネクト(190)に接続される。あるいは、PMTRPユニット(120)はランタイム制御ユニット(122)にメモリ転送リクエストを読み取りて書き込むことに適用するインターコネクトターゲットポート(136)を有する。インターコネクトターゲットポート(136)はインターコネクト(192)に接続される。
プログラム可能なダイレクトメモリアクセス(PDMA)ユニット(140)はインターコネクト(191)に接続される第1インターコネクトマスタポート(143)、インターコネクト(192)に接続される第2インターコネクトマスタポート(144)およびインターコネクト(192)に接続されるインターコネクトターゲットポート(142)を有する。PDMAユニット(140)は一方向FIFOモジュールを利用することに適用する。FIFOユニット(147)の第1ポートは第1サブ制御回路(145)に接続される。FIFOユニット(147)の第2ポートは第2サブ制御ユニット(146)に接続される。第1サブ制御回路(145)は、インターコネクトマスタ(143)にメモリ転送リクエストを発行し、カウンタ(151)および現在のメモリアドレスインデックス(152)を利用することに適用する。第2サブ制御回路(146)はインターコネクトマスタ(144)にメモリ転送リクエストを発行し、カウンタ(153)および現在のアドレスインデックス(154)を利用することに適用する。
PDMAユニット(140)はインターコネクトターゲットポート(142)上で受信する1つ以上のメモリ転送リクエストでプログラムすることに適用する。本模式図において、PDMAユニット(140)は1つのプログラム可能なメモリからメモリへの転送記述子(148,149,150)を有する。前記メモリからメモリへの転送記述子(148,149,150)は、ソースメモリアドレスフィールド(148)、ターゲットメモリアドレスフィールド(149)およびメモリ転送長フィールド(150)の3つのフィールドを有する。メモリからメモリへの転送記述子はフィールド(148)、(149)、(150)の順で書き込むことによりプログラムされる。PDMAユニット(140)のメモリからメモリへの転送処理は結局、書き込まれるメモリからメモリへの転送記述子の3つのフィールド(148,149,150)を開始する。本処理を次のように実行する。ソースアドレス(148)の値を2つのサブ制御回路(145,146)の1つの現在のアドレスポインタ(151,153)にロードする。ターゲットアドレス(149)を2つのサブ制御回路(145,146)の他方の現在のアドレスポインタ(151,153)にロードする。例えば、ソースアドレス(148)の高ビットを、PDMAユニット(140)のどのマスタポート(143,144)と前記ソースアドレスが関連するかを示すことに用いることができる。
あるいは、PDMAユニット(140)はどのマスタポートが前記ソースアドレスと関連する課を決定するために各前記マスタポート(143,144)と関連する異なるメモリアドレス範囲に対してソースアドレスを比較することに適用する。メモリ転送長フィールド(150)の値をさらに両方のカウンタフィールド(151,153)にコピーする。FIFOユニット(147)を前記FIFOユニットのキューに存在するデータの要素がないことを保証するためにリセットする。制御ユニット(141)はさらに、2つのサブ制御回路(145,156)にリクエストされたメモリからメモリへの転送処理を実行するために必要な読み込みまたは書き込みを開始することを命令する。ソースアドレスから読み込まれたメモリのワードをFIFOユニット(147)にプッシュする。ターゲットアドレスに書き込まれたメモリのワードをFIFOユニット(147)からポップする。カウンタ(251)および(253)の値を、それぞれ読み取りまたは書き込みデータの量に従って減らす。前記カウンタフィールド(151)がゼロである場合、サブ制御ユニット(145)のプロセスは完了する。前記カウンタフィールド(153)がゼロである場合、サブ制御ユニット(146)のプロセスは完了する。
図2は、本発明の好ましい実施形態に従う図1に示されたPMTRPユニット(120)のメモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータにアクセスするためのアドレス空間(201)の分割を示すブロック図(200)である。前記メモリアドレス空間(201)は12のフィールド(210から221)に分割される。各フィールド(210から221)は32ビット長である。前記アドレス空間(201)を論理的に、
●PMTRPユニット(120)のターゲットポート(128)のアドレス空間のシステムパートのコンフィギュレーションに関係する第1の連続したセット(202)の6フィールド(210から215)と、
●PMTRPユニット(120)のターゲットポート(128)のアドレス空間のシステムパートのコンフィギュレーションに関係する第1の連続したセット(203)の6フィールド(216から221)
に分割する。
フィールド(210)はシステムアドレス空間(202)に関連するコンフィギュレーションおよび/または状態情報を格納する。フィールド(211)から(214)はシステムアドレス空間に関係する少なくとも1つの領域記述子を格納することに適用する。PMTRPユニット(120)を、いかなる値もフィールド(210)から(214)に書き込むことはPMTRP制御ユニット(121)に、アドレス空間のシステム部(202)に対するコンフィギュレーションデータが現在再プログラミングされていることを通知するように適用する。PMTRPユニットを、いかなる値もフィールド(215)に書き込むことはPMTRP制御ユニット(121)に、アドレス空間のシステム部に対するコンフィギュレーションデータが再プログラミングを終了したことを通知するように適用する。
フィールド(216)はユーザアドレス空間(203)に関連するコンフィギュレーションおよび/または状態情報を格納する。フィールド(216)から(221)はユーザアドレス空間に関連する少なくとも1つの領域記述子を格納することに適用する。PMTRPユニット(120)を、いかなる値もフィールド(216)から(221)に書き込むことはPMTRP制御ユニット(121)に、アドレス空間のユーザ部(203)に対するコンフィギュレーションでータが現在再プログラミングされていることを通知するように適用する。PMTRPユニット(120)を、いかなる値もフィールド(221)に書き込むことはPMTRP制御ユニット(121)に、アドレス空間のユーザ部に対するコンフィギュレーションデータが再プログラミングを終了したことを通知するように適用する。PMTRPユニット(120)のメモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータのアドレス空間(201)のこの新しいコンフィギュレーションは、全てのシステムデータを連続するメモリからメモリへの転送処理(フィールド210から215にわたる)を用いてアップデートし、全てのユーザデータを連続するメモリからメモリへの転送処理(フィールド216から221にわたる)を用いてアップデートし、システムデータとユーザデータの両方を連続するメモリからメモリへの転送処理(フィールド210から221にわたる)を用いてアップデートすることを可能にする。
有利には、このことは新しい方法においてPDMAユニット(140)によりPMTRPユニット(120)の設定可能なデータの非常に速い再プログラミングを可能にする。
本発明のさらに好ましい実施形態において、装置(100)をリセットする場合、PMTRPユニット(120)は前記ランタイム制御ユニット(122)の状態をリセットし、プログラム可能なコンフィギュレーションでータ(123)の状態をリセットする。さらに、PMTRPユニット(120)に対する処理のデフォルトモードは、マスタポート(129)への修正なしにターゲットポート(128)上で受信するメモリ転送リクエストをリレーし、ターゲットポート(128)への修正なしにマスタポート(129)上で受信するメモリ転送応答をリレーすることである。
図3は、1つのメモリからメモリへの転送処理(図1の148,149および150)においてPMTRPユニット(図1の120)のメモリストア(図1の123)において格納される全てのプログラム可能なコンフィギュレーションデータにPDMAユニット(図1の140)により実行されるメモリからメモリへの転送処理を示すフローチャート(300)である。PMTRPユニット(図1の120)はメモリ管理ユニットの機能を実装する。本フローチャートにおいて、PMTRPユニット(120)およびプロセッサコア(110)は既に初期化されている。
ラベル(301)はプロセッサコア(110)により実行されるステップのシーケンス(301,305,308,311,314,330,331,334)を示す。ラベル(302)はPDMAユニット(140)により実行されるステップのシーケンス(303,307,310,313,316,317,320,322,326,336)を示す。ラベル(304)はSDRAMストア(115,118)により実行されるステップのシーケンス(304,308,319,324,325,337)を示す。
フローチャート(300)はステップ(301)、(302)、(303)および(304)で開始する。
ステップ(305)において、プロセッサコア(110)はPDMAユニット(140)の「ソースメモリアドレス」フィールド(148)に向けられた32ビット書き込みメモリ転送リクエストを発行する。前記メモリ転送リクエストを、ステップ(306)においてPMTRPユニット(120)のターゲットポート(128)上で受信する。PMTRPユニット(120)は、前記ターゲットポート(128)に関連し、メモリストア(123)に格納されるプログラム可能なコンフィギュレーションでータに格納されるメモリ変換アドレスに従って、前記メモリ転送リクエストを処理する。PMTRPユニット(120)はマスタポート(129)、続いてインターコネクト(192)を通じて、前記処理したメモリ転送リクエストをPDMAユニット(140)に転送する。PDMAユニット(140)はさらに、ステップ(307)において前記ターゲットポート(142)上で前記メモリ転送リクエストを受信する。PDMAユニット(140)は前記メモリ転送リクエストのデータフィールドを前記「ソースメモリアドレス」フィールド(148)に書き込む。
ステップ(308)において、プロセッサコア(110)はPDMAユニット(140)のターゲットポート(142)の「ターゲットメモリアドレス」フィールド(149)に向けられた32ビット書き込みメモリ転送リクエストを発行する。前記メモリ転送リクエストをPMTRPユニット(120)はPDMAユニット(140)にステップ(309)において処理して転送する。ステップ(310)において、前記PDMAユニット(140)はメモリ転送リクエストを受信し、メモリ転送リクエストのデータを「ターゲットメモリアドレス」フィールド(149)に書き込む。
ステップ(311)において、プロセッサコア(110)はPDMAユニット(140)の「メモリ転送長」フィールド(150)に向けられた32ビット書き込みメモリ転送リクエストを発行する。前記メモリ転送リクエストをPMTRPユニット(120)はPDMAユニット(140)にステップ(312)において処理して転送する。ステップ(313)において、前記PDMAユニット(140)は前記メモリ転送リクエストを受信し、メモリ転送リクエストのデータを前記「長さメモリアドレス」フィールド(150)に書き込む。メモリ転送長フィールド(250)を書き込む場合にメモリからメモリへの転送処理を初期化する。
ステップ(314)において、プロセッサコア(110)は、前記PMTRPユニットのプログラム可能なコンフィギュレーションデータのシステム部とユーザ部の両方が完全にアップデートされた後に、読み込み応答を発行する前記PMTRPユニット(120)となるPMTRPユニット(120)のターゲットポート(124)のアドレス空間内のメモリロケーションに向けられるリードメモリ転送リクエストを発行する。前記メモリ転送リクエストをステップ(315)で受信して処理する。対応するメモリ転送応答を下記のステップ(329)において発行する。
ステップ(316)において、「ソースメモリアドレス」(148)の値を現在のアドレスポインタ(153)の値としてロードする。「ターゲットメモリアドレス」(149)の値を現在のアドレスポインタ(151)の値としてロードする。「メモリ転送長」(150)の値をカウンタフィールド(151)の値およびカウンタフィールド(153)の値としてロードする。FIFOユニット(147)を、前記FIFOユニットのキューに存在するデータの要素がないことを保証するためにリセットする。サブ制御回路(145)に、ソースメモリから読み取りたデータの処理を開始するように命令する。サブ制御回路(146)に、ターゲットメモリに書き込んだデータの処理を開始するように命令する。
ステップ(317)において、サブ制御回路(146)はリクエストされたメッセージ長(159)の第1の半分を読み出すためにポート(144)にわたるバーストメモリ読み取りメモリ転送リクエストを発行する。バーストメモリ転送リクエストは、2つ以上のデータのワード上で処理することに適用するメモリ転送リクエストである。前記バースト読み取りメモリ転送リクエストは「現在のアドレスポインタ」(151)の値を使用する。前記読み込みバーストメモリ転送リクエストをステップ(318)においてSDRAMストアにより受信して処理する。リクエストされたデータをSDRAMストアがPDMAユニット(140)のマスタポート(144)にバーストメモリ転送応答の形でステップ(319)において発行する。
ステップ(320)において、PDMAユニット(140)はリクエストされたデータを含むマスタポート(144)上の読み込みバーストメモリ転送応答を受信する。前記データをFIFOユニット(147)にプッシュする。「現在のアドレスポインタ」(154)の値は増加し、カウンタ(153)の値は受信したデータの量に従って減少する。
ステップ(320)において、サブ制御ユニット(145)は前記データをFIFOユニット(147)からポップし、「現在のアドレスポインタ」(152)を用いてPMTRPユニット(120)のターゲットポート(134)に向けられた書き込みバーストメモリ転送リクエストを発行する。「現在のアドレスポインタ」(151)の値は増加し、カウンタ(152)の値は書き込んだデータ量に従って減少する。
ステップ(321)において、PMTRPユニット(120)はターゲットポート(134)上で前記バースト書き込みメモリ転送リクエストを受信し、メモリストア(123)に格納されるプログラム可能なコンフィギュレーションでータに書き込んで読み出す。PMTRP制御ユニット(121)は、システムおよびメモリストア(123)に格納されるプログラム可能なコンフィギュレーションでータのユーザ部がアップデートされる場合にアクティブに追跡し、システムのコンフィギュレーションおよび前記プログラム可能なコンフィギュレーションでータのユーザ部が図2を記述するテキストに示されるようにファイナライズされる場合にアクティブに追跡する。
ステップ(322)において、PDMAユニット(140)はステップ(317)で発行された前記バーストメモリ読み取りメモリ転送リクエストによりリクエストされた全てのデータを受信した。サブ制御回路(146)はリクエストされたメモリ長(150)の第2の半分を読み出すために、ポート(144)によりバーストメモリ読み取りメモリ転送リクエストを発行する。前記バースト読み取りメモリ転送リクエストは「現在のアドレスポインタ」(151)の値を使用する。
ステップ(322)において、PDMAユニット(140)のサブ制御ユニット(145)は、FIFOユニット(147)に格納されるいかなる顕著なデータもPMTRPユニット(120)に転送することを続ける。これは必要に応じて追加の書き込みメモリ転送リクエストを発行してもよいし、そうでなくてもよい。
ステップ(324)において、ステップ(322)で発行した読み取りバーストメモリ転送リクエストをSDRAMストアにより受信して処理する。ステップ(325)において、リクエストしたデータをSDRAMストアがPDMAユニット(140)のマスタポート(144)にバーストメモリ転送応答として発行する。
ステップ(326)において、PDMAユニット(140)はデータをPMTRPユニット(120)に転送することを続ける。前記カウンタ(153)の値がゼロである場合、PDMAユニット(140)のサブ制御回路(146)は終了する。サブ制御回路(146)および(145)の両方が終了する場合、PDMAユニット(140)のメモリからメモリへの転送処理は完了したことになる(少なくともPDMAユニットに関する限り)。
ステップ(327)において、PMTRPユニット(120)はPDMAユニット(140)のマスタポート(143)により発行されたものとして書き込みメモリ転送データを受信して処理することを続ける。
ステップ(328)において、PMTRPユニット(120)は再プログラミンを完了した。PMTRPユニット(120)はPMTRPユニットのメモリストア(123)のプログラム可能なコンフィギュレーションでコード化されたポリシーに従って、PMTRPユニット(120)のターゲットポート(128)上で受信されたメモリ転送リクエストを処理する。
ステップ(329)において、PMTRPユニット(120)のランタイム制御ユニット(122)はプロセッサコア(110)に読み取りデータフィールドにおいて値1で読み取りメモリ転送応答を送信する。これはプロセッサコアに、PMTRPユニット(120)が完全に再プログラムされたことを通知する。ステップ(330)において、プロセッサコア(110)は前記メモリ転送応答を受信する。
ステップ(331)において、プロセッサコア(110)はPMTRPユニット(120)のターゲットポート(128)の入力アドレス空間に向けられる書き込みメモリ転送リクエストを発行する。ステップ(322)において、前記書き込み転送リクエストをPMTRPユニット(120)のターゲットポート上で受信し、PMTRPユニットのメモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータに現在格納されるポリシーに従って前記制御ユニット(121)で処理する。
フローチャートはラベル(334)、(335)、(336)および(337)において終了する。
本発明の別の好ましい実施形態において、図1のPMTRPユニット(120)は図1のプロセッサコア(110)と確実に接続され、図1のメモリストア(112)は図1のインターコネクト(190)から切り離されて図1のインターコネクト(192)に接続され、図1のPMTRPユニット(120)のバスターゲット(124)を利用せず、図1のPMTRPユニット(120)のバスターゲットを利用する。
32ビットおよび64ビット入力アドレス空間において比較的ファイングレインメモリ割り当てに対するサポートで、低レイテンシで、ハイスループットで、一定時間の処理を有するMMUアーキテクチャに対する長年の必要性がある。
図4は、図1のPMTRPユニット(120)がメモリ管理ユニット(MMU)の機能を実装することに適用する本発明の好ましい実施形態を部分的に示すハイブリッドのブロック概略図およびデータフロー図である。
MMU(120)は入力アドレス空間(414)に関連する少数のセグメント記述子がある大きな入力アドレス空間(例えばこの場合では31ビット入力アドレス空間(414))で用いるために適用する新規の単一レベルのダイレクトインデックスセグメントベースのメモリアドレス変換方式を利用し、各セグメント記述子は前記セグメント内でファイングレインメモリ割り当て(533)をサポートする。この新規メモリアドレス変換スキームは、限定されないが、図6および図8を参照して記述されるものを含む、メモリ編成方式の範囲で用いるためのものである。特に、図8を参照して記述される新規のメモリ編成方式は、大きな入力アドレス空間および(b)ファイングレインなメモリ割り当てのための手段を供給する少数の領域記述子の組合せを利用して、別の単一レベルのダイレクトインデックスメモリアドレス変換方式[1][2]に関連するアドレス空間のサイズスケーリング問題に予期しない解決法を供給する。有利なことに、PMTRPユニット(120)の1つのハードウェアの実装は、図6および図8において記述されるメモリ編成方式の両方をサポートすることができる。
この方式は出力アドレス空間より大きい、同じまたは小さい大きな入力アドレス空間で用いるために平凡に適用する。
PMTRPユニット(120)の領域記述子はセグメント記述子(430)に対して示されるように、フィールドでセグメント記述子を記述することに適用する。
ラベル(410)はPMTRPユニット(120)のインターコネクトターゲットポート(128)上で受信するメモリ転送リクエストのフィールドを示す。前記メモリ転送リクエスト(410)はフィールド(411)、(412)および(414)で示される。フィールド(411)は前記メモリ転送リクエスト(410)のために3ビット制御フィールドをコード化する。これらの3つのビットは「データのための読み取り」、「書き込み」および「実行するための読み取り」処理をそれぞれコード化する。フィールド(412)は前記メモリ転送リクエスト(410)に対してシステムレベル特権またはユーザレベル特権のどちらかを示す1ビットの特権値をコード化する。フィールド(414)は入力アドレス空間において31ビット入力アドレスの値をコード化する。31ビット入力アドレス(414)の5つの最上位ビット(415)をセグメントインデックスセレクタとして利用する。31ビット入力アドレス(414)の残りの26ビット(416)を前記セグメント(415)内のディスプレースメントオフセットとして利用する。
単一レベルのダイレクトインデックスセグメント記述子ルックアップモジュール(420)は、ランタイムでプログラムすることができる32セグメント記述子のテーブルを格納する。前記テーブルのセグメント記述子をPMTRPユニット(120)のインターコネクトターゲットポート(128)上で受信するメモリ転送リクエストの入力アドレス(614)の上位5ビット(615)によりランタイムでインデックスする。
各セグメント記述子は、セグメント記述子(430)により示されるように、5つのフィールド(431)、(432)、(434)、(435)および(436)からなる。セグメント記述子(430)は合計64ビット長である。本発明の本実施形態において、前記セグメント記述子(430)は231バイトのストレージをアドレスすることができる31ビット出力アドレス空間もサポートする。セグメント記述子(430)のフィールド(431から436)は次のとおりである。フィールド(431)は前記セグメント記述子に関連する6ビットのメタデータをコード化する。フィールド(432)は変換されたアドレス空間内で29ビット長のディスプレースメントオフセットをコード化する。フィールド(432)のビット数を減少することにより、入力アドレス空間がマッピングすることができる物理的アドレス空間サイズを低減する。前記結果、これはセグメント記述子を格納することに必要なハードウェアリソースを低減することができる。フィールド(434)は8バイト粒度により24ビットで割り当てられたセグメント長をコード化する。フィールド(433)は論理的に24ビットで割り当てられたセグメント長を24ビットで割り当てられたセグメント長値(437)に伸ばす。特に、バイナリ値ゼロを前記29ビットで割り当てられたセグメント長値(437)の各上位5ビット(433)に格納する。フィールド(435)はユーザ特権アクセスに対して3ビットパーミッションフィールドをコード化する。これらの3つのビットは「データのための読み取り」、「書き込み」および「実行のための読み取り」パーミッションをそれぞれコード化する。フィールド(436)はシステム特権アクセスに対して3ビットパーミッションフィールドをコード化する。これらの3つのビットは「データのための読み取り」、「書き込み」および「実行のための読み取り」パーミッションをそれぞれコード化する。
セグメント記述子ルックアップモジュール(420)の出力をメモリ転送リクエストリアセンブリおよびパーミッションチェックモジュール(440)への入力として供給する。前記モジュール(440)は、メモリ転送リクエスト(410)の31ビットディスプレースメントフィールド(416)の29の最上位ビット(417)を入力として受信し、前記セグメント記述子(430)に対する変換アドレス空間内で29ビットディスプレースメントオフセット(432)を入力として受信し、さらに変換されたメモリ転送リクエスト(413)の31ビットアドレス(454,454)の最上位29ビット(454)として利用される出力として29ビット値を生成する29ビットワイド算術加算処理を備える。
メモリ転送リアセンブリおよびパーミッションチェックモジュール(440)はさらに、
●メモリ転送リクエスト(410)のディスプレースメントオフセット(416)の値がメモリ転送リクエスト(410)に関連するセグメント記述子(430)の29ビットセグメント長(437)より小さいまたは同じであることをチェックし、メモリ転送リクエスト(410)の3ビット制御フィールド(411)および1ビット特権フィールド(412)がフィールド(435)においてコード化され、メモリ転送リクエスト(410)に関連するセグメント記述子(430)のパーミッションポリシーにより許可されることをチェックする、
パーミッションチェックモジュール(442)を備える。本発明の好ましい実施形態において、前記フォールト信号はプロセッサコア(110)に発行されるインタラプトとなってよい。
前記セグメント記述子(430)のメタバイトフィールド(431)の値を変換メモリ転送リクエスト(413)のメタフィールド(453)として利用する。本発明の好ましい実施形態において、メタデータフィールド(431)は、
●追加のメモリアドレス変換手段によるメモリアドレス変換の追加のレベルを条件的に可能にする単一ビットカスケードフィールドと、
●キャッシュモードの選択(例えばライトスルー、ライトバック)およびメモリ一貫性を保持するためのメモリオーダ要件を含む、メモリサブシステムを制御するための4ビット
をコード化することに適用する。
メモリ転送リクエスト(410)の3ビット処理(411)および1ビット特権フィールド(412)の値(413)を、変換されたメモリ転送リクエスト(413)の3ビット処理(451)および1ビット特権フィールド(435)の値としてそれぞれ供給する。
入力メモリ転送リクエスト(410)のアドレス(416)の下位の2ビット(418)の値を変換されたメモリリクエスト(450)の下位の2ビット(454)の値として供給する。
図5は、本発明の好ましい実施形態に従うPMTRPユニット(120)の制御ユニット(121)により実行されるメモリアドレス変換処理のステップを示すフローチャート(500)である。
フローチャートはステップ(501)で開始する。
ステップ(502)において、メモリ転送リクエストをポート(128)上のPMTRPユニット(120)の制御ユニット(121)により受信する。
ステップ(503)において、前記メモリ転送リクエスト(410)のアドレス(414)の5つの最上位ビット(415)をセグメント記述子ルックアップモジュール(420)へのインデックスとして供給する。セグメント記述子ルックアップモジュール(420)は、前記インデックス値に関連するセグメント記述子(430)の値を出力としてリリースする。セグメント記述子ルックアップモジュール(420)の出力をリアセンブリおよびパーミッションチェックモジュール(440)により受信する。
ステップ(504)において、パーミッションチェックモジュール(442)はステップ(502)で受信したメモリ転送リクエスト(414)とステップ(503)において発行された対応するセグメント記述子の間で一貫性チェックを実行する。
ステップ(505)において、ステップ(504)の一貫性チェックが失敗した場合、ステップ(506)に移動し、そうでない場合はステップ(509)に移動する。
ステップ(506)において、ポート(443)上でパーミッションチェックフォールトイベント信号を生成する。
ステップ(507)において、ステップ(502)において受信したメモリ転送リクエスト(410)が書き込みメモリ転送リクエストである場合はステップ(515)に移動し、そうでない場合はステップ(508)に移動する。
ステップ(508)において、書き出すメモリ転送応答を発行する。値ゼロを前記メモリ転送応答のデータフィールドに格納する。インターコネクトプロトコルがケーパビリティをオファーする場合、前記メモリ転送リクエストに対するエラー状態に戻る。ステップ(515)に移動する。
ステップ(509)において、図4を記述するテキストにおいて記述されるように、29ビットワイド追加処理(441)を実行し、変換されたメモリ転送リクエスト(450)のフィールドを組み立てる。
ステップ(510)において、ステップ(502)において受信したメモリ転送リクエストが書き込みメモリ転送リクエストである場合はステップ(511)に移動し、そうでない場合はステップ(512)に移動する。
ステップ(511)において、PMTRPユニット(120)のマスタポート(129)上で書き込みメモリ転送リクエストを発行する。ステップ(515)に移動する。
ステップ(512)において、PMTRPユニット(120)のマスタポート(129)上で読み取りメモリ転送リクエストを発行する。
ステップ(513)において、PMTRPユニット(120)のマスタポート(129)上で対応する読み取りメモリ転送応答を受信する。
ステップ(514)において、PMTRPユニット(120)のターゲットポート(128)上でステップ(513)において受信した前記読み取りメモリ転送応答の結果を転送する。
フローチャートはステップ(515)で終了する。
図6は、本発明の好ましい実施形態に従う、入力アドレス空間(610)と変換されたアドレス空間(630)の間のセグメントベースのアドレス変換方式のマッピング例を示すブロック図(600)である。本図において、入力アドレス空間(610)は長方形(610)の左上角においてゼロで開始し、前記長方形(610)の右下角で終了する。本図(600)において、ターゲットアドレス空間(630)は長方形(630)の左上角においてゼロで開始し、前記長方形(630)の右下角で終了する。線形入力アドレス空間(610)を同じ長さのN=8のパーティションに再分割する(611から618)。本図において、入力アドレス空間パーティションにおけるセグメントのオフセットを8バイト粒度(例えばラベル632)の出力アドレス空間のいかなる位置にもマッピングすることができる。セグメントの割り当てられた長さはさらに8バイト粒度(例えばラベル634、837、838)を有する。
パーティション(611)に対するセグメント記述子を、前記パーティション(611)の全体長さを割り当て、ターゲットアドレス空間(630)において、前記ベースオフセットを高いアドレス(631)に変換するとして示す。パーティション(612)に対するセグメント記述子は前記パーティション(612)の上部を割り当て、ターゲットアドレス空間(630)において前記ベースオフセットを高いアドレス(632)に変換する。第1セグメント(611)および第2セグメント(612)の割り当てられた部分は入力アドレス空間において連続している。パーティション(613)に対するセグメント記述子は前記パーティションのどの部分も割り当てない。(614)に対するセグメント記述子は前記パーティション(614)の上部を割り当て、ターゲットアドレス空間(630)において前記ベースオフセットを同じアドレス(634)に変換する。
パーティション(615)に対するセグメント記述子は前記パーティションのどのメモリも割り当てない。パーティション(616)に対するセグメント記述子は前記パーティションのどのメモリも割り当てない。
(617)に対するセグメント記述子は前記パーティション(617)の上部における小領域を割り当て、ターゲットアドレス空間(630)において前記ベースオフセットを低いアドレス(637)に変換する。(618)に対するセグメント記述子は前記パーティション(618)の上部における小領域を割り当て、ターゲットアドレス空間において前記ベースオフセットを低いアドレス(638)に変換する。本図において、パーティション(617)に対するセグメント記述子を、ユーザがメモリの前記割り当てられた領域に書き込むことを可能にするパーミッションアクセスポリシーで適用し、パーティション(618)に対するセグメント記述子を、アンキャッシュユーザが変換されたアドレス空間の同じ部分に読み出すことを可能にするパーミッションアクセスポリシーで適用する。
このようにして、入力アドレス空間において全ての可変長セグメントは、前記セグメント記述子の遅延が少なく効率的ハードウェアのインデックスを可能にするパーティション境界で開始する(図21のラベル123で示されるような範囲記述子のテーブルを利用することと比較する場合)。セグメントの割り当てられた長さの8バイト粒度およびディスプレースメントオフセットの8バイト粒度は、複数の従来のMMUにおいてみられるような4キビバイト長ページで可能であるよりも、変換されたメモリアドレス空間により効率的な入力アドレス空間のパッキングを可能にする。変換されたアドレス空間へのマッピングのファイン粒度は、かなり制限されたメモリストレージケーパビリティを有するエンベッドマイクロアプリケーションにおいて特に望ましい。
図7は、[3]の図6−1に示されるようなDEC VAX−11/760に対する単一レベルのダイレクトマッピングページベースの方式の入力アドレス空間(701)の編成を示すブロック図(670)である。各ページ記述子を32入力アドレス空間の512バイトの連続領域にマッピングする。入力アドレス空間(701)を処理空間(702)およびシステム空間(702)に等しく分割する。ユーザ空間(702)をP0と呼ばれる第1領域(710)およびP1と呼ばれる第2領域(711)に動的に分割する。領域P0はユーザ空間の上部で開始して下向きに成長する。領域P1はユーザ空間の底部で開始して上向きに成長する。システム空間(703)を「システム領域」および「予約領域」と呼ばれる第1領域(712)に動的に分割する。システム領域(712)はシステム空間の上部で開始して下向きに成長する。このメモリ編成を、メモリアドレス変換[3]をサポートする3つの領域(P0、P1およびシステム領域)のためのページ記述子を格納する単一レベルのダイレクトインデックステーブルのサイズを制限するためにDECが選択した。
図8は、本発明の好ましい実施形態に対する単一レベルのダイレクトマッピングされたセグメントベース方式に対する入力空間(701)の新規編成を示すブロック図(670)である。本例においてN=8のセグメント(811から818)に等しく分割されたMビット入力アドレス空間(801)を考える。上位4セグメント(811,812,813,814)はシステム空間(803)に関連し、下位4セグメント(815,816,817,818)はユーザ空間(802)に関連する。
入力アドレス空間がM=32ビットである場合、単一領域記述子は変換されたアドレス空間の512メビバイトをマッピングすることができる。リアルタイムのエンベッドシステムの大多数は512メビバイトより少ない物理メモリを有する。この場合において、それらのエンベッドシステムは物理メモリのストレージキャパシティ全体を1つの領域記述子にマッピングすることができる。このことは、物理メモリのいかなる連続する領域にもアクセスするために2つ以上のセグメント記述子をマッピングする必要性を回避する。多くのセーフティクリティカルリアルタイムオペレーティングシステムは、電源をオンにする場合にRTOS上で走る各アプリケーションに利用可能にメモリを統計的に割り当てる。これは、システム空間および前記RTOSインスタンスの各アプリケーション空間に対する多くの領域記述子を、前記デバイスの電源がオンになる前に統計的に作ることができることを意味する。例えば、RTOSの実行可能なコードをシステム特権読み取り用パーミッションアクセスでパーティション(811)によりマッピングすることができる。BSS、Stacksおよび前記RTOSのHeapをシステム特権読み取り/書き込みパーミッションアクセスによりパーティション(812)にマッピングすることができる。セグメント(813)はプロセッサコアによって実行されるメモリからメモリへのコピー機能をサポートするために、入力アドレス空間においてメインメモリ全体を連続したメモリ領域にマッピングすることができる。セグメント(814)は電源を入れた時にマッピングしないままであることができる。第1アプリケーションの実行可能なコードをユーザ特権読み取り用パーミッションアクセスによりパーティション(815)にマッピングすることができる。BSS、Stackおよび前記第1アプリケーションのHeapをユーザ特権読み取り/書き込みパーミッションアクセスによりパーティション(816)にマッピングすることができる。第1アプリケーションと第2アプリケーションの間で共有されるメモリの第1領域を、セグメント(817)においてユーザ特権読み取り/書き込みパーミッションアクセスによりマッピングすることができる。第1アプリケーションと第2アプリケーションの間で共有されるメモリの第2領域を、セグメント(818)においてユーザ特権読み取り用パーミッションアクセスによりマッピングすることができる。この静的マッピングはランタイムにおいてダイナミックマッピングも実行するケーパビリティを妨げない。
N=8からN=16に領域記述子の数が増加することはメモリの非常に微妙な編成をサポートする一方で、システム空間(802)およびユーザ空間(803)の両方に対して非常に小さい領域記述子テーブルを維持する。領域記述子テーブルの完全なコンテンツを低レイテンシでハイスループットのアクセスに対してオンチップSRAMに容易に格納することができる。32ビットから64ビットへの入力アドレス空間のサイズを増加させる一方で、同時にターゲットアドレス空間定数のサイズを保持することは、領域記述子テーブルのストレージ要件を増加しない。
大きな入力アドレス空間のために新規なセグメンテーション方式を利用する当社のPMTRPユニットで共に設計されたこの新規メモリ編成(800)は、非常に小さい回路領域オーバーヘッドにより一定時間のメモリアドレス変換を可能にし、リソースが制限されたセーフティクリティカルサイバーフィジカルアプリケーションに利用的に適合する。
本発明の好ましい実施形態において、4キキバイトの固定されたページベースのMMU方式を条件的にイネーブルなメモリアドレス変換手段の第2レベルとして利用する。
2階層のアドレス変換をサポートする長年の必要性があり、各アドレス変換のレベルは統計的に時間解析可能なリアルタイムシステムに適切な異なるソフトウェアの制御下(例えばハイパーバイザは第1レベルのMMU方式を制御し、ハイパーバイザ上でホストするオペレーティングシステムは第2レベルのMMU方式を制御する)にある。
図9は本発明の好ましい実施形態に従う2階層のメモリ管理手段を示すブロック図(900)である。図(900)はPMTRPユニット(910)およびMMU(920)を示す。
本発明の好ましい実施形態において、PMTRPユニット(910)のプログラム可能なコンフィギュレーションデータのコンテンツをプロセッサコア上で走るソフトウェアハイパーバイザにより制御する。プロセッサコアは前記PMTRPユニット(910)のプログラム可能なコンフィギュレーションを構成するために、PMTRPユニット(910)のターゲットポート(911)に1つ以上のメモリ転送リクエストを発行する。
MMUユニット(920)のプログラム可能なコンフィギュレーションデータのコンテンツをバーチャルマシンおよび前記ハイパーバイザの実行ソフトウェアにおいてハイパーバイザ上でホストするオペレーティングシステムにより一緒に制御する。前記ソフトウェアハイパーバイザ上で走るオペレーティングシステムは、オペレーティングシステムがそれ自身の内部処理に必要なポリシーを定義する。それらのポリシーをPMTRPユニット(910)のターゲットポート(912)にコード化して書き込む。さらにそれらのポリシーをハイパーバイザの実行ソフトウェアにより制御されるPMTRPユニット(910)におけるポリシーにより変換する。それらの変換されたポリシーをさらにPMTRPユニット(910)により、前記MMUユニット(920)のプログラム可能なコンフィギュレーションデータに書き込む。
特に、PMTRPユニット(910)はPMTRPユニット(910)のプログラム可能なコンフィギュレーションデータにおいてコード化されたポリシーに従って、前記ターゲットポート(912)上で受信したメモリ転送リクエストを受信して処理することに適用する。PMTRPユニット(910)のプログラム可能なコンフィギュレーションデータにおけるそれらのポリシーは、ターゲットポート(912)上で受信して、前記ターゲットポート(921)上でMMU(910)のプログラム可能なコンフィギュレーションデータに書き込むように意図される1つ以上の領域記述子のメモリアドレス変換をどのように実行するかをコード化する。これらの変換されたポリシーをさらにPMTRPユニット(910)により、ターゲットポート(921)を用いてMMUユニット(920)のプログラム可能なコンフィギュレーションデータに書き込む。
例えば、PMTRPユニット(910)においてコード化されたポリシーは、全てのそれらのアドレスをマスターポート(923)の変換されたアドレス空間に変換するために相対オフセットに沿ってターゲットポート(922)上で受信するメモリ転送リクエストによりアクセスすることができるターゲットポート(922)の入力アドレス空間の連続領域を特定してよい。
MMU(920)は前記ターゲットポート(922)上でメモリ転送リクエストを受信し、MMUユニット(920)のプログラム可能なコンフィギュレーションデータにおいてコード化されるポリシーに従ってそれらのアドレスを変換することに適用する。
このようにして、MMU(920)のプログラム可能なコンフィギュレーションデータに書き込まれたメモリアドレス変換は2階層のメモリアドレス変換をシリアルに実行することに論理的に等しい(ソフトウェアハイパーバイザレベルのメモリアドレス変換により従うオペレーティングシステムレベルのメモリアドレス変換)。有利なことに、2階層のアドレス空間変換は単一レベルのアドレス空間変換のレイテンシによりMMU(920)によりランタイムで影響を受け得る。
図10は本発明の好ましい実施形態に従う、メモリ転送リクエスト(1010)およびメモリ変換応答(1040)において存在してよいさまざまなフィールドを示すブロック図(1000)である。
メモリ転送リクエスト(1010)に関して、オプションフィールド(1011)はインターコネクトマスタデバイスのグループを識別するデバイスグループ識別子をコード化する。オプションフィールド(1012)はデバイスタイプ(ネットワークインターフェース、グラフィックプロセッサユニットなどのような)をコード化する。オプションフィールド(1013)はデバイス識別子をコード化する。オプションフィールド(1014)は、このメモリ変換リクエストのコンシステンシポリシー(アンキャッシュ、デフォルトキャッシュポリシー、書き込み専用キャッシュ、ライトバックキャッシュなどのような)を示す。オプションフィールド(1015)はメモリオーダリングポリシー(トータルのストアオーダ、リラックスメモリオーダ、パーシャルストアオーダなど)をコード化する。オプションフィールド(1016)はインターコネクトロックリクエストフラグをコード化する。オプションフィールド(1017)は「データのための読み取り」処理をコード化する。オプションフィールド(1018)は「書き込み」処理をコード化する。オプションフィールド(1019)は「実行のための読み込み」処理をコード化する。オプションフィールド(1020)はこのメモリ転送リクエストの長さをコード化する。オプションフィールド(1021)はこのメモリ転送リクエストに関連するアドレス空間記述子をコード化する。フィールド(1022)はアクセスするためのメモリのアドレスをコード化する。オプションフィールド(1023)は書き込みメモリ転送リクエストの一部として書き込むためにデータをコード化する。オプションフィールド(1024)は書き込みメモリ転送リクエストのためにバイトイネーブルマスクをコード化する。オプションフィールド(1025)はこのメモリ転送リクエストの特権レベルをコード化する。
メモリ転送応答(1040)に関して、オプションフィールド(1041)は関連するメモリ転送リクエスト(1010)のための結果コードをコード化する。オプションフィールド(1042)はこれに関連する読み取りデータが有効であるかどうかを示す1ビット値をコード化する。オプションフィールド(1043)は読み取りメモリ転送リクエスト(1010)に関連する読み取りデータを格納する。オプションフィールド(1044)は読み取りバイトイネーブルマスクをコード化する。
本発明の好ましい実施形態において、PMTRPユニット(120)はメモリ転送リクエスト(1010)の1つ以上のフィールド(1012)を用いて前記ターゲットポート(128)上で受信するメモリ転送リクエストを発行する発信インターコネクトマスタを識別するための手段に適用する。本発明の好ましい実施形態において、PMTRPユニット(120)は前記メモリ転送リクエスト(1010)の1つ以上のフィールド(1011)を用いて前記ターゲットポート(128)上で受信するメモリ転送リクエストを発行する発信インターコネクトマスタのデバイスグループを識別するための手段に適用する。本発明の好ましい実施形態において、PMTRPユニット(120)は前記メモリ転送リクエスト(1010)の1つ以上のフィールド(1012)を用いて前記ターゲットポート(128)上で受信するメモリ転送リクエストを発行する発信インターコネクトマスタのデバイスグループを識別するための手段に適用する。本発明の好ましい実施形態において、PMTRPユニット(120)は前記メモリ転送リクエストの1つ以上のフィールド(1011,1012,1013,1021)を用いて前記ターゲットポート(128)上で受信するメモリ転送リクエストでアドレス空間記述子を結び付けるための手段に適用する。本発明の好ましい実施形態において、ポリシーを少なくとも1つの領域記述子においてコード化し、PMTRPユニット(120)のプログラム可能なコンフィギュレーションデータはターゲットポート(128)上で受信したメモリ転送リクエストの1つ以上のフィールド(1011,1012,1013,1016,1021)と関連する。
32ビットおよび64ビット入力アドレス空間において、比較的ファイングレインメモリ割り当てに対するサポートにより、低レイテンシで、ハイスループットで、一定の時間の処理を有するMMUアーキテクチャに対して長年必要とされてきた。さらにより迅速なタスクスワッピングおよび改善されたシステムパフォーマンスをサポートするためにリアルタイム環境において時間解析可能な方法で低レイテンシにより領域記述子の再プログラミングを低コストで加速するための手段に対して長年必要とされてきた。PMTRPユニット(120)をページベースのMMU方式で採用する図1の好ましい実施形態について述べる。
図11は、図1のPMTRPユニット(120)を分割された単一レベルのダイレクトインデックスのページベースメモリ管理ユニット(MMU)の機能を実装することに適用する、本発明の好ましい実施形態(1100)を部分的に示すハイブリッドブロック概略図およびデータフロー図である。本図において、PMTRPユニット(120)は8のパーティション(1151から1158)を利用する。これらの8のパーティション(1151から1158)を8つの独立したメモリ転送リクエスト処理領域として記述することができる。各それらのパーティションを64の領域記述子の単一レベルのダイレクトインデックステーブルによりバックアップする。各それらの512の領域記述子はファイングレインのメモリ割り当てを備える可変長ページ記述子である。各それらの512の領域記述子を1つの物理メモリストアに格納することができる。
ラベル(1101)はPMTRPユニット(120)のインターコネクトターゲットポート上で受信したメモリ転送リクエストのフィールドを示す。
前記メモリ転送リクエスト(410)をフィールド(1106)、(1107)、(1102)および(1105)で示す。フィールド(1106)は2ビット特権フィールドを次の3つの特権でコード化する。つまり、ソフトウェアのためのユーザ特権、ソフトウェアのためのスーパバイザ特権、およびインターコネクトマスタ周辺機器のためのアクセス特権である。
フィールド(1107)は3ビットにおいて5つの空間の1つの選択をコード化する。
フィールド(1102)は32ビット入力アドレスをコード化する。32ビット入力アドレスの2つの最上位ビット(1110)は、前記アドレス空間(1120)を4つの空間に細分化する。つまり、インターコネクトマスタプライベート空間(1211)、システム空間(1122)、高ユーザ空間(1123)および低ユーザ空間(1124)である。32ビット入力アドレス(1102)の次の6つの重要なビット(1111)は各空間(1121,1122,1123,1124)を64の空間に細分化する。32ビット入力アドレス(1102)の残りの24ビット(1112)は32ビット入力アドレス(1102)の上位8ビット(1103)内でオフセットを供給する。
フィールド(1105)は前記メモリ転送リクエスト(410)に対して3ビット制御フィールドをコード化する。これらの3ビットは「データのための読み取り」、「書き込み」、および「実行のための読み取り」処理をそれぞれコード化する。
パーティション選択モジュール(1130)は入力としてフィールド(1106)、(1107)、(1110)および(1111)の値を受信する。パーティション選択モジュール(1130)は以下を行うことに適用する。
●パーティション選択中にフォールトを示す出力(1140)をリリースする。
●メモリアドレス変換が必要でないことを示す出力(1131)をリリースする。前記出力を入力としてリアセンブリおよびパーミッションチェックモジュール(1170)に供給する。
●メモリ転送リクエスト(1101)の32ビットアドレス(1102)の変換のために8つのパーティション(1151から1158)のどのパーティションを使用するかを示す出力をリリースする。前記出力を入力として分割された1階層のダイレクトインデックスページ記述子クックアップモジュール(1150)に供給する。
分割された1階層のダイレクトページ記述子ルックアップモジュール(1150)は8つのパーティション(8つの独立したメモリ転送リクエスト処理領域)を有する。各それらの8つのパーティションはランタイムでプログラムすることができる64のページ記述子のテーブルを有する。メモリアドレス変換を実行する場合に利用するパーティションの選択を、ターゲットポート(128)上で受信する各メモリ転送リクエスト(1101)に対してパーティション選択モジュール(1130)によりランタイムで行う。
本発明の好ましい実施形態において、メモリ転送リクエスト(1101)の5つの空間(1107)を分割された1階層のダイレクトマッピングされたページ記述子ルックアップ(1150)にマッピングすることを、パーティション選択モジュール(1130)の実装により静的に行う。このシンプルな性的マッピングを低ハードウェア回路リソースで、ランタイムにおいて非常に速いスピードで組合せ論理を用いて容易に実装することができる。
図11のパーティション選択モジュール(1130)内に描かれている矢印は、次の入力空間およびパーティションの模式的マッピングを示す。
●インターコネクトマスタプライベート空間(1121)をいかなる8つのパーティション(1151から1158)にもマッピングしない。
●システムレベル空間(1122)を常にパーティション(1158)にマッピングする。本発明の好ましい実施形態において、前記メモリ転送リクエスト(1101)の特権レベル(1106)がシステムレベル特権を有さない場合にフォールト(1140)を送る。
●メモリ転送リクエスト(1101)の空間選択フィールド(1107)の値が0である場合、低ユーザ空間(1124)をパーティション(1151)にマッピングし、高ユーザ空間(1123)をパーティション(1152)にマッピングする。このようにして、ユーザ空間(1123,1124)全体を割り当てることができる。
●メモリ転送リクエスト(1101)の空間選択フィールド(1107)の値が1である場合、低ユーザ空間(1124)をパーティション(1153)にマッピングし、高ユーザ空間(1123)をパーティション(1154)にマッピングする。このようにして、ユーザ空間全体を割り当てることができる。
●メモリ転送リクエスト(1101)の空間選択フィールド(1107)の値が2である場合、低ユーザ空間(1124)をパーティション(1155)にマッピングし、高ユーザ空間(1123)をいかなるパーティションにもマッピングしない。
●メモリ転送リクエスト(1101)の空間選択フィールド(1107)の値が3である場合、低ユーザ空間(1124)をパーティション(1156)にマッピングし、高ユーザ空間(1123)をいかなるパーティションにもマッピングしない。
●メモリ転送リクエスト(1101)の空間選択フィールド(1107)の値が4である場合、低ユーザ空間(1124)をパーティション(1157)にマッピングし、高ユーザ空間(1123)をいかなるパーティションにもマッピングしない。
プロセッサコア上で走るソフトウェアは、
●パーティション選択モジュール(1130)により管理されるメモリ転送リクエスト(1107)の5つの空間(1107)に実行するシステムにより管理されるアドレス空間をマッピングすることと、
●分割された1階層のダイレクトマッピングページ記述子ルックアップモジュール(1150)のページ記述子をプログラミングすることと、
●前記実行システムのアドレス空間コンテキストスワップ中にメモリ転送リクエスト(1107)の空間選択フィールド(1107)に供給する値を変えることと、
に対して責任がある。
実行システム上で走る低メモリストレージ要求を備える5つの直近のスケジュールされたユーザアプリケーションを、パーティション選択モジュール(1130)のいかなる5つの空間にもマッピングすることができる。
それらの5つの空間の間の非常に低いレイテンシのタスクスワッピングを、メモリ転送リクエスト(1107)の空間選択フィールド(1107)に供給する値を単に変化させることにより、実行システムで達成することができる。例えば、プロセッサコア(110)を、メモリ転送リクエストを発行する場合にプロセッサコアにより使用される空間選択フィールド(1107)の値を決定するコンフィギュレーションレジスタで適用してよい。実行システム上で走る高メモリストレージ要求を備える2つの直近のスケジュールされたユーザアプリケーションを、ページ記述子ルックアップモジュール(1150)の2つのパーティションにマッピングするパーティション選択モジュール(1130)の2つの空間にマッピングすることができる。
ページ記述子ルックアップモジュール(1150)は、選択したページ記述子の値を入力としてリアセンブリおよびパーミッションチェックモジュール(1170)にリリースすることに適用する。
リアセンブリおよびパーミッションチェックモジュール(1170)はさらに、入力として2ビット特権フィールド(1106)の値、3ビット空間セレクタフィールド(1107)、32ビット入力アドレスの8つの最上位ビット(1103)、32ビット入力アドレスの24の最下位ビット(1112)および入力メモリ転送リクエスト(1101)の3ビット制御フィールド(1105)を受信する。リアセンブリおよびパーミッションチェックモジュールは、
●メモリ転送リクエストの処理中にフォールトを示す単一ビット出力(1172)をリリースし、
●変換されたメモリ転送リクエストの値を出力(1173)としてリリースし、
●メモリアドレス変換の追加レベルが変換されたメモリ転送リクエストに対して必要であることを示す単一ビットカスケード出力(1171)をリリースする、
ことに適用する。
変換されたアドレス空間(1190)は、
●変換されたアドレス空間(1190)の上位1/4(1191)が入力アドレス空間(1120)のインターコネクトマスタプライベート空間(1211)と1対1で関連し、
●変換されたアドレス空間(1190)の下位3/4(1191)が入力アドレス空間(1120)のシステム空間(1122)、高ユーザ空間(1123)および低ユーザ空間(1124)と関連する、
ことを示す。
図12は、図1のPMTRPユニット(120)はメモリ管理ユニット(MMU)の機能を実装することに適用する、本発明の好ましい実施形態を部分的に示すハイブリッドブロック概略図およびデータフロー図である。前記MMUは大きな入力アドレス空間および比較的少量のページ記述子を備える単一レベルのダイレクトインデックスのページベースのメモリアドレス変換方式を利用する。
本方式を出力アドレス空間より大きい、同じまたは小さい大きな入力アドレスで用いるために適用することができる。
この場合、PMTRPユニット(120)の領域記述子は、ページ記述子(1210)により示されるようにページ記述子をコード化することに適用する。図12は、図11を示すテキストに示されるように、メモリ転送リクエスト(1101)および前記フィールド(1102)、(1103)、(1104)、(1105)、(1106)、(1107)および(1129)を利用する。図12はさらに図11を示すテキストに示されるように、パーティション選択モジュール(1130)、分割された1階層ダイレクトインデックスページルックアップモジュール(1129)および前記出力(1131)、(1140)、(1171)および(1172)を利用する。
ページ記述子(1210)により示されるように、各ページ記述子は7つのフィールド(1121)、(1212)、(1213)、(1214)、(1215)、(1216)および(1217)からなる。ページ記述子(1210)は32ビットの全長を有する。前記ページ記述子(1210)は232バイトの入力アドレス空間をサポートし、232バイトの出力アドレス空間をサポートする。本ページ記述子(1210)のフィールドは次のとおりである。
●フィールド(1211)は、別のレベルのメモリアドレス変換がこのページ記述子と関連するメモリ転送リクエストに対して必要であるかを示す1ビットカスケードフィールドである。
●フィールド(1212)は12の異なるページ長をコード化することができる4ビット値をコード化する。本図において、ページ長は、4キキバイト、16キキバイト、32キキバイト、64キキバイト、128キキバイト、256キキバイト、512キキバイト、1メビバイト、2メビバイト、4メビバイト、8メビバイトおよび16メビバイトである。
●フィールド(1213)は8ビットフレーム識別子をコード化する。
●フィールド(1214)はフレーム内で12ビット長ディスプレースメントオフセットをコード化する。ビット数(つまり12ビット)はフィールド(1212)の異なるページ長(つまり12ページ長)の数に対応する。
●フィールド(1215)はユーザ特権ソフトウェアアクセスに対する3ビットパーミッションフィールドをコード化する。これらの3つのビットは「データのための読み取り」、「書き込み」および「実行のための読み取り」パーミッションをそれぞれコード化する。
●フィールド(1216)はシステム特権ソフトウェアアクセスに対する2ビットパーミッションフィールドをコード化する。これらの2つのビットは「いかなる目的のための読み取り」または「書き込み」パーミッションをそれぞれコード化する。
●フィールド(1217)はシステム特権周辺機器アクセスに対する2ビットパーミッションフィールドをコード化する。これらの2ビットは「データのための読み取り」および「書き込み」パーミッションをそれぞれコード化する。
メモリ転送リクエスト(1101)の32ビットアドレスフィールド(1102)は論理的に2つのフィールドに分割される。
●ページ識別子をコード化する最上位8ビット(1103)。
●32ビットアドレス(1102)の別の24ビット(1104)はページ(1103)内でディスプレースメントをコード化する。これらの24ビット(11014)を、ページ内のディスプレースメントの12の最上位ビット(1201)と、ページ内のディスプレースメントの12の最下位ビット(1202)とに細分化する。
ページ記述子ルックアップモジュール(図11の1129および図12の1129)の出力を入力として、メモリ転送リクエストリアセンブリおよびパーミッションチェックモジュール(図11の1170および図12の1170)に供給する。モジュール(図12の1170)は、以下を行う12ビット幅組合せ処理を備える。
●メモリ転送リクエスト(1101)のページ(1103)内のディスプレースメントの12の最上位ビット(1201)を入力として受信する。
●フレーム(1214)内で12ビット長ディスプレースメントオフセットを入力として受信する。
●パススルー信号(1131)の値が1である場合、
Figure 0006981662
上位ビット(1201)を出力(1286)としてリリースし、
Figure 0006981662
メントの12の最上位ビット(1201)をフレーム(1214)内で12ビット長ディスプレースメントオフセットと組合せ、前記組合せの結果を出力(1286)としてリリースする。本発明の好ましい実施形態において、12ビット幅の算術加算を組合せ関数として利用する。別の機能の組合せは、限定されないが、12ビット幅XOR、またはどのフィールド(1201)のビットまたはどの(1214)のビットを出力としてリリースするかを決定するために長さフィールド(1212)の値を用いる組合せ関数を含む。
メモリ転送リクエストリアセンブリおよびパーミッションチェックモジュール(1170)はさらに以下を行うパーミッションチェックモジュール(1274)を備える。
●メモリ転送リクエスト(1101)のページ内のディスプレースメントの12の最上位ビット(1201)の値が、前記メモリ転送リクエスト(1101)と関連するページ記述子(1210)のページ長より少ないか等しいことを確認する。
●メモリ転送リクエスト(1101)の制御フィールド(1105)および特権フィールド(1106)が、前記メモリ転送リクエスト(1101)に関連するページ記述子(1210)のフィールド(1215,1216,1217)においてコード化されるパーミッションポリシーにより許可されることを確認する。前記パーミッションチェックが失敗した場合、フォールト信号を投げる(1172)。
本発明の好ましい実施形態において、フォールト信号(1140)または(1172)のアクティベーションにより、プロセッサコア(110)に発行される中断イベントとなる。
変換されたメモリ転送リクエスト(1280)の値を次のように生成する。変換されたメモリ転送リクエスト(1280)の制御フィールド(1281)の値を入力メモリ転送リクエスト(1101)の制御フィールド(1105)の値に設定する。変換されたメモリ転送リクエスト(1280)の特権フィールド(1282)の値を入力メモリ転送リクエスト(1101)の特権フィールド(1106)の値に設定する。変換されたメモリ転送リクエスト(1280)のオプションの空間選択フィールド(1283)の値を入力メモリ転送リクエスト(1101)の空間選択フィールド(1107)の値に設定する。パススルー信号(1131)の値が1である場合、変換されたメモリ転送リクエスト(1205)のアドレスフィールド(1284,1285)の8ビットフレームフィールド(1284)の値を入力メモリ転送リクエスト(1102)のフレームフィールド(1103)の値に設定する。そうでない場合、変換されたメモリ転送リクエスト(1280)のアドレスフィールド(1284,1285)の8ビットフレームフィールド(1284)の値を、前記メモリ転送リクエスト(1101)に関連するページ記述子(1210)のフレーム識別子(1213)の値に設定する。変換されたメモリ転送リクエスト(1280)のアドレスフィールド(1284,1285)の24ビットディスプレースメントフィールド(1285)の最上位12ビットの値を12ビット幅の組合せ処理モジュール(1273)の出力(1286)の値に設定する。変換されたメモリ転送リクエスト(1280)のアドレス(1284,1285)の24ビットディスプレースメントフィールド(1285)の最下位12ビットの値をメモリ転送リクエスト(1101)の最下位の12ビットのアドレスフィールド(1104)の値に設定する。
図13は、図11および図12に示されるような、本発明の好ましい実施形態に従うPMTRPユニット(図1の120)の制御ユニット(図1の121)により実行されるメモリアドレス変換処理を示すフローチャート(1300)である。
フローはステップ1301で開始する。
ステップ(1302)において、メモリ転送リクエストをターゲットポート(128)上の制御ユニット(121)で受信する。
ステップ(1303)において、パーティション選択モジュール(1130)は、もしあればどのパーティションが前記メモリ転送リクエストに関連しているかを決定するためにメモリ転送リクエスト(1101)を処理する。パーミッションチェックをシステム空間(1122)に向けられたメモリ転送リクエストに関して実行する。さらにチェックを高ユーザ空間(1124)に向けられたメモリ転送リクエストおよび前記高ユーザ空間(1124)にマッピングしたパーティションのアヴェイラビリティに関して実行する。
ステップ(1304)において、フォールトがステップ(1303)中に生成される場合はステップ(1308)に移動し、そうでない場合はステップ(1305)に移動する。
ステップ(1305)において、ステップ(1303)において選択されたパーティションをパーティションインデックスとして分割された単一レベルのダイレクトインデックスページ記述子ルックアップモジュール(1150)に供給する。各4つの空間(図11の1121、1122、1123および1124)を64の空間に細分化するメモリ転送リクエスト(11102)の32ビットアドレスフィールド(1102)の6ビット(1111)をページインデックスとして、前記分割されたページ記述子ルックアップモジュール(1150)に供給する。ページ記述子ルックアップモジュールはリクエストされたページ記述子の値を取り込み、出力として前記値をリリースする。ページ記述子ルックアップモジュールの出力を入力としてリアセンブリおよびパーミッションチェックモジュール(1170)により受信する。
ステップ(1306)において、パーミッションチェックモジュール(図12の1274)は、ステップ(1302)において受信されたメモリ転送アドレスとステップ(1305)において発行されたページ記述子との間でコンシステンシチェックを実行する。
ステップ(1307)において、ステップ(1306)において実行されたコンシステンシチェックが失敗した場合にはステップ(1308)に移動し、そうでない場合はステップ(1311)に移動する。
ステップ(1308)において、フォールト信号(1140または1172上)を生成する。
ステップ(1309)において、ステップ(1302)において受信されたメモリ転送リクエストが書き込みリクエストである場合はステップ(1307)に移動し、そうでない場合はステップ(1310)に移動する。
ステップ(1310)において、データフィールドにおいて値ゼロで読み取りメモリ転送宝刀を発行する。インターコネクトプロトコルがケーパビリティをオファーする場合、前記メモリ転送リクエストのためにエラーステータス(図10の1041)に戻る。ステップ(1317)に移動する。
ステップ(1311)において、12ビット幅のマージ処理(1273)を実行し、変換されたメモリ転送リクエスト(1280)のフィールドを生成する。
ステップ(1312)において、ステップ(1202)において受信されたメモリ転送リクエストが書き込みリクエストである場合はステップ(1313)に移動し、そうでない場合はステップ(1314)に移動する。
ステップ(1313)において、PMTRPユニット(120)のマスタポート(129)上で書き込みメモリ転送リクエストを発行する。ステップ(1317)に移動する。
ステップ(1314)において、PMTRPユニット(120)のマスタポート(129)上で読み取りメモリ転送リクエストを発行する。
ステップ(1315)において、PMTRPユニット(120)のマスタポート(129)上で対応する読み取りメモリ転送応答を受信する。
ステップ(1316)において、PMTRPユニット(120)のターゲットポート(128)上で前記読み取りメモリ転送応答の結果を転送する。
フローチャートはステップ(1317)で終了する。
かなりリソースが制限されたエンベッドマイクロ環境において、PMTRPユニット(図1の120)に専ら向けられたハードウェアリソースの量を低減する必要性がある。特に、Linuxのような汎用のオペレーティングシステムをサポートするページベースのMMU方式を走らせる必要があるリソース制限された環境(モノのインターネットのような)において、従来のページベースのMMUよりも少ない実行するハードウェア回路領域を必要とし、さらにユーザアドレス空間コンテキストスワップの後に迅速なソフトウェアの実行をサポートする新規のMMUアーキテクチャに対して長年必要とされてきた。さらに、変換ルックアサイドバッファを利用するMMU方式に対してタスクコンテキストスイッチの後にソフトウェアのパフォーマンスを改善する必要性もある。さらに、迅速なタスクスワッピングおよび改善されたシステムパフォーマンスをサポートするためにリアルタイム環境において時間解析可能な方法により低レイテンシで領域記述子の再プログラミングを低コストで加速する手段に対して長年必要とされていた。
図12を参照して、本発明の別の好ましい実施形態で次の修正を行う。
●2ビットフィールド(1216)および2ビットフィールド(1217)を利用しない。システム特権を備えるソフトウェアには全てのデータにアクセスすることを許可する。周辺機器には全てのデータにアクセスすることを許可する。
●フィールド(1212)は256ビットの異なるページ長をコード化することができる8ビット値をコード化する。第1セットの128ページ長(0から127の値を備える)は4キキバイトの粒度を有し、4KBから512KBの範囲をマッピングする。第2セットの128ページ長(128から255の値を備える)は128KBの粒度を有し、128KBから16メビバイトの範囲をマッピングする。
この別のコンフィギュレーションはページ記述子(1210)に対してメモリ割り当ての改善された粒度を供給する一方で、32ビットの記述子長を保持する。現在のリソース制限されたエンベッドマイクロアプリケーションにおける多くのアプリケーションでは512KBより少ないメモリを必要とするため、4KB粒度で物理メモリに効率的にマッピングをすることができる。必要な場合には、ページ長(1212)の粒度およびディスプレースメントオフセット(1214)の粒度を技術者が容易に増加することができる。
PMTRPユニット(120)のマスタポート(129)により少なくとも1つのメモリ転送リクエストを生成して送信し、前記マスタポート(129)上で対応する応答を受信することにより、PMTRPユニット(120)を少なくとも2つのプログラム可能な領域記述子の少なくとも2つのセット(2つのテーブルとして実行してよい)へのアクセスをキャッシュする手段で適用する、図1の好ましい実施形態を述べる。この特定の適用は、キャッシュされた領域記述子を、変換されたメモリ転送リクエストを向けてよい同じメモリストア(170)に直接格納することを可能にする。特に、これらのキャッシュされた領域記述子テーブルを2階層の変換ルックアサイドバッファ方式を実装するために用い、第1レベルのキャッシュされたTLBエントリをPMTRPユニットのプログラム可能なコンフィギュレーションデータに格納する。第2レベルのTLBエントリをPMTRPユニットのプログラム可能なコンフィギュレーションデータから分離することにより、各ユーザアドレス空間は比較的大きくて安価なメインメモリに格納される自身専用の第2レベルの変換ルックアサイドバッファテーブルを有することを可能にし、コンテキストスワップ後により高い第2レベルのTLBヒットレートとなる。例えば、TLBルックアップの第1レベルはキャッシュされたTLB記述子の完全に関連するルックアップを利用し、TLBルックアップの第2レベルはキャッシュされたTLB記述子の単一レベルのダイレクトインデックスルックアップを利用することができる。本発明の好ましい実施形態において、個別のユーザアドレス空間を有する各ソフトウェアアプリケーションは、キャッシュされたTLB記述子の単一レベルのダイレクトインデックスルックアップの地震専用のテーブルを有する。
図14は、本発明の好ましい実施形態に従うPMTRPユニット(120)のメモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータにアクセスするためのアドレス空間(1400)の分割を示すブロック図である。図14において、前記メモリアドレス空間(1400)を23のフィールド(1401から1423)に分割する。各23のフィールド(1401から1423)は32ビット長である。前記アドレス空間(1400)を論理的に、
●PMTRPユニット(120)のターゲットポート(128)のアドレス空間のシステム部のコンフィギュレーションに関連する第1の連続する6フィールド(1401から1406)のセットと(1431)、
●PMTRPユニット(120)のターゲットポート(128)のアドレス空間のユーザ部のコンフィギュレーションに関連する第2の連続する6フィールド(1407から1413)のセット(1432)と、
●PMTRPユニット(120)のターゲットポート(128)のアドレス空間のシステム部またはユーザ部のどちらからのコンフィギュレーションに関連する第3の連続する6フィールド(1414から1423)のセット(1433)と、
に分割する。
第1の連続するフィールドセットは以下を備える。
●第1システム領域記述子テーブルに関連するコンフィギュレーションメタデータをコード化する16ビット長フィールド(1401.a)。第1システム領域記述子テーブルのベースアドレスオフセットを32長フィールド(1402)に格納する。
●第2システム領域記述子テーブルに関連するコンフィギュレーションメタデータをコード化する16ビット長フィールド(1401.b)。第2システム領域記述子テーブルのベースアドレスオフセットを32ビット長フィールド(1403)に格納する。
●システム領域のための第2レベルのアドレス変換をコード化するフィールド(1404および1405)。特にフィールド(1404)は第1レベルの変換されたアドレス空間内でシステムアドレス空間の最大長をコード化し、フィールド(1405)は第2レベルの変換されたアドレス空間内でシステムアドレス空間のディスプレースメントオフセットをコード化する。
PMTRPユニット(120)を、いかなる値もフィールド(1401,1402,1403,1404,1405)に書き込むことが、PMTRP制御ユニット(121)に対して、アドレス空間のシステム部に対するコンフィギュレーションデータを現在再プログラミングしているということを通知するように適用する。PMTRPユニット(121)を、いかなる値もフィールド(1406)に書き込むことが、PMTRP制御ユニット(121)に対して、アドレス空間のシステム部に対するコンフィギュレーションデータは再プログラミンを終了したことを通知するように適用する。
第2の連続するフィールドセット(1431)は以下を備える。
●第1ユーザ領域記述子テーブルに関連するコンフィギュレーションメタデータをコード化する16ビット長フィールド(1407.a)。第1ユーザ領域記述子テーブルのベースアドレスオフセットを32ビット長フィールド(1408)に格納する。
●第2ユーザ領域記述子テーブルに関連するコンフィギュレーションメタデータをコード化する16ビット長フィールド(1407.b)。第2ユーザ領域記述子テーブルのベースアドレスオフセットを32ビット長フィールド(1409)に格納する。
●フィールド(1410)をハッシュインデックスの1階層記述子テーブルにおいてコード化される領域記述子と入力アドレス空間の領域を関連付けるためのハッシュ変換を計算することを実行システムがアシストすることに用いる。ハッシュに対する値をフィールド(1410)に書き込む。ハッシュされた値をさらにフィールド(1410)から読み取る。
●ユーザ領域に対して第2レベルのアドレス変換をコード化するフィールド(1411)から(1412)。特にフィールド(1411)は第1レベルの変換されたアドレス空間内でユーザアドレス空間の最大長をコード化し、フィールド(1412)は第2レベルの変換されたアドレス空間内でユーザアドレス空間のディスプレースメントオフセットをコード化する。
PMTRPユニット(120)を、いかなる値もフィールド(1407,1408,1409,1410,1411,1412)に書き込むことが、PMTRP制御ユニット(121)に対して、アドレス空間のユーザ部に対するコンフィギュレーションデータを現在再プログラミングしているということを通知するように適用する。PMTRPユニット(120)を、いかなる値もフィールド(1406)に書き込むことが、PMTRP制御ユニット(121)に対して、アドレス空間のユーザ部に対するコンフィギュレーションデータは再プログラミンを終了したことを通知するように適用する。
第3の連続するフィールドセット(1431)は以下を備える。
●第1の128ビット長キャッシュライン(1415から1418)。
●第2の128ビット長キャッシュライン(1419から1422)。
●第1キャッシュライン(1415から1418)および第2キャッシュライン(1419から1422)のためにタグデータをコード化するフィールド(1414)。
PMTRPユニット(120)を、いかなる値もフィールド(1414,1415,1416,1417,1418,1419.1420,1421,1422)に書き込むことが、PMTRP制御ユニット(121)に対して、キャッシュに対するコンフィギュレーションデータを現在再プログラミングしているということを通知するように適用する。PMTRPユニットを、いかなる値もフィールド(1413)に書き込むことが、PMTRP制御ユニット(121)に対して、キャッシュ対するコンフィギュレーションデータは再プログラミンを終了したことを通知するように適用する。
本発明の好ましい実施形態において、PMTRPユニット(120)のプログラム可能なコンフィギュレーションデータのキャッシュフィールド(1433)は領域記述子に対する変換ルックアサイドバッファを実装することに適用し、
●第1の128ビット長キャッシュライン(1415から1418)は第1の128ビット長領域記述子を格納することに適用し、
●第2の128ビット長キャッシュライン(1419から1422)は第2の128ビット長領域記述子を格納することに適用する。
本発明の好ましい実施形態において、2つの128ビット長領域記述子を、ユーザ空間またはシステム空間に関連する領域記述子をキャッシュすることに用いる。
図15は、本発明の好ましい実施形態に従う図14において利用する16ビット幅のコンフィギュレーションメタデータフィールド(1510)を示すブロック図である。前記コンフィギュレーションメタデータフィールド(1510)をPMTRPユニット(120)のメモリストア(123)において格納されるプログラム可能なコンフィギュレーションデータのフィールド(1401.a,1402.b,1407.a,1407.b)において利用する。16ビットコンフィギュレーションメタデータフィールド(1510)のフィールドは以下を備える。
●このコンフィギュレーションメタデータに関連する領域記述子テーブルが有効であるかどうかを示す1ビット長フィールド(1511)。
●線形ダイレクトマッピングまたは非線形ダイレクトマッピングインデックス方式を領域記述子の前記テーブルにおいて領域記述子にアクセスするために利用するかどうかを示す1ビット長フィールド(1512)。
●テーブルにおいて領域記述子の数をコード化する3ビット長フィールド(1513)。本発明の好ましい実施形態において、領域記述子の数を8,16,32,64,128,256,512および1024の領域記述子の8つのテーブル長の1つから選択することができる。
●領域記述子のコード化フォーマットを示す3ビット長フィールド(1514)。コード化フォーマットの5つの例は以下を含む。
Figure 0006981662
●記述子のタイプに最も適切な最大ページ長または最大セグメント長を示す6ビット長フィールド(1515)。本発明の好ましい実施形態において、6ビットバイナリ値000000は十進法の値1をコード化し、6ビット値111111は十進法の値64をコード化する。最大長フィールドの値を、値2の、前記6ビットフィールドの十進法の値のべき乗()として計算する。前記6ビット長フィールドの十進法の値が32である場合、最大長を(232)=4ギビバイトとして計算する。
●追加の長さチェックを第1アドレス変換処理が完了した後に利用するかどうかを示す1ビット長フィールド(1516)。
●第2アドレス変換を第1アドレス変換処理が完了した後に利用するかどうかを示す1ビット長フィールド(1517)。
図16は、本発明の好ましい実施形態に従う図14において利用された領域記述子(1600)を示すブロック図である。
領域記述子(1600)を32ビット長ページ記述子として構成する場合、図16のフィールドを、この領域記述子が有効であるかどうかを示す1ビット長フィールド(1611)、周辺機器は同時に「データのための読み取り」および「書き込み」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1612)、スーパバイザソフトウェアは同時に「データのための読み取り」、「書き込み」および「実行のための読み取り」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1613)、ユーザソフトウェアに対してぞれぞれ「データのための読み取り」、「書き込み」および「実行のための読み取り」パーミッションをコード化する3ビット長フィールド(1614)、このページのためにフレーム識別子をコード化する26ビット長フィールド(1615)として利用する。フィールド1621,1622,1623,1624,1625,1631,1635,1640)は利用していない。
領域記述子(1600)を64ビット長セグメント記述子として構成する場合、図16のフィールドを、この領域記述子が有効であるかどうかを示す1ビット長フィールド(1611)、周辺機器は同時に「データのための読み取り」および「書き込み」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1612)、スーパバイザソフトウェアは同時に「データのための読み取り」、「書き込み」および「実行のための読み取り」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1613)、ユーザソフトウェアに対してそれぞれ「データのための読み取り」、「書き込み」および「実行のための読み取り」パーミッションをコード化する3ビット長フィールド(1614)、64バイト粒度を備えるこの領域ための変換されたアドレス空間内のディスプレースメントをコード化する26ビット長フィールド(1615)、64バイト粒度を備えるこのセグメントの割り当てられた部分の長さをコード化する26ビット長フィールド(1625)として利用する。フィールド(1621,1622,1623,1624)は今後の利用のために予約する。フィールド(1625,1631,1635,1640)は利用しない。
領域記述子(1600)を64ビット長キャッシュページ記述子として(構成する場合、図16のフィールドを、この領域記述子が有効であるかどうかを示す1ビット長フィールド(1611)、周辺機器は同時に「データのための読み取り」および「書き込み」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1612)、スーパバイザソフトウェアは同時に「データのための読み取り」、「書き込み」および「実行のための読み取り」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1613)、ユーザソフトウェアに対してそれぞれ「データのための読み取り」、「書き込み」および「実行のための読み取り」パーミッションをコード化する3ビット長フィールド(1614)、64バイト粒度を備えるこの領域ための変換されたアドレス空間内のディスプレースメントをコード化する26ビット長フィールド(1615)、64バイト粒度を備えるこのセグメントの割り当てられた部分の長さをコード化する26ビット長フィールド(1625)、このキャッシュ領域記述子のためのデータ書き込み(ダーティ)フラグをコード化する1ビット長フィールド(1621)、このキャッシュ領域記述子のためのデータ読み取りフラグをコード化する1ビット長フィールド(1622)、この領域記述子に関連する領域内でメモリロケーションに向けられたメモリ転送リクエストに用いるキャッシュポリシーをコード化する1ビット長フィールド(1623)として利用する。フィールド(1624)は今後の利用のために予約する。フィールド(1625,1631,1635,1640)は利用しない。
領域記述子(1600)を128ビット長キャッシュセグメント記述子として構成する場合、図16のフィールドを、この領域記述子が有効であるかどうかを示す1ビット長フィールド(1611)、周辺機器は同時に「データのための読み取り」および「書き込み」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1612)、スーパバイザソフトウェアは同時に「データのための読み取り」、「書き込み」および「実行のための読み取り」がこの領域記述子に関連するメモリの領域にアクセスすることを可能にするかどうかを示す1ビット長フィールド(1613)、ユーザソフトウェアに対してそれぞれ「データのための読み取り」、「書き込み」および「実行のための読み取り」パーミッションをコード化する3ビット長フィールド(1614)、64バイト粒度を備えるこの領域ための変換されたアドレス空間内のディスプレースメントをコード化する26ビット長フィールド(1615)、このキャッシュ領域記述子のためのデータ書き込み(ダーティ)フラグをコード化する1ビット長フィールド(1621)、このキャッシュ領域記述子のためのデータ読み取りフラグをコード化する1ビット長フィールド(1622)、この領域記述子に関連する領域内でメモリロケーションに向けられたメモリ転送リクエストに用いるキャッシュポリシーをコード化する1ビット長フィールド(1623)、64バイト粒度を備えるこのセグメントの割り当てられた部分の長さをコード化する26ビット長フィールド(1625)、64バイト粒度を備えるこのセグメントの割り当てられた部分の長さをコード化する26ビット長フィールド(1635)として利用する。フィールド(1624)は今後の利用のために予約する。フィールド1631,1640)は今後の使用のために予約する。
領域記述子(1600)を32ビット長テーブル記述子として構成する場合、図16のフィールドを、この領域記述子が有効であるかどうかを示す1ビット長フィールド(1611)、領域記述子のテーブルのアドレス(変換されたアドレス空間において)をコード化する26ビット長フィールドとして利用する。フィールド(1612,1613,1614)は今後の使用のために予約する。
本発明の好ましい実施形態において、Nビット長領域記述子をメモリにおいて整列したNビットである。
図17は、図1、14、15および16を参照として示されるような、本発明の好ましい実施形態に従う装置(1700)を部分的に示すハイブリッドブロック概略図およびデータフロー図である。図17のプロセッサコア(110)および前記マスタポート(111)は図1に示されるものである。図17のPMTRPユニット(120)および前記関連のラベル(121,123,128,129,130,131,134,130)は図1に示されるものである。装置(1700)はさらに、コア(110)上のIRQターゲットポート(1711)およびIRQターゲットポート(1711)に接続されるPMTRPユニット(120)上のIRQマスタポート(1728)を備える。
PMTRMPユニット(120)のメモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータを図14に述べるテキストに従って適用する。
ラベル(1710)はシステム空間(1711)およびユーザ空間(1712)に等しく分割された入力アドレス空間を示す。ラベル(1720)は変換されたアドレス空間を示す。PMTRPユニットのマスタポート(129)により発行されたメモリ転送リクエストは、前記変換されたアドレス空間(1720)に向けられたものである。
ラベル(図17の1402)は第1システム領域記述子テーブルフィールド(図14の1402)のベースアドレスオフセットは8つの領域記述子を格納するシステム領域記述子テーブルに関連していることを示す。ポート(128)の入力アドレス空間(1710)のシステム空間(1711)は変換されたアドレス空間(1720)に格納された第1システム領域記述子テーブル(1421)に関連している。
ラベル(図17の1408)は第1ユーザ領域記述子テーブルフィールド(図14の1408)のベースアドレスオフセットが8つの領域記述子を格納するユーザ領域記述子テーブル(1422)に関連していることを示す。ポート(128)の入力アドレス空間(1710)のユーザ空間(1712)は変換されたアドレス空間(1720)に格納された第1ユーザ領域記述子テーブル(1422)に関連する。
ラベル(図17の{1415から1418})はユーザ領域記述子テーブル(1423)の領域記述子の1つを図14の第1の128ビット長キャッシュライン({1415から1418})にキャッシュすることを示す。本実施形態において、領域記述子テーブル(1423)は16の領域記述子を格納する。ユーザ空間(1712)は変換されたアドレス空間(1720)に格納されたユーザ領域記述子テーブル(1423)に関連する。
領域(1725)は第1の128ビット長キャッシュライン({1415から1418})にキャッシュされた領域記述子に関連する。ユーザ空間(1712)は変換されたアドレス空間(1720)に格納された領域(1725)に関連する。
本発明の好ましい実施形態において、システム領域記述子テーブル(1421)を次2つの方式の1つで構成する。
●単一レベルダイレクトマッピング・インデックスセグメントテーブル方式。
●2階層TLB方式のために領域記述子を格納する単一レベルダイレクトマッピング・インデックスキャッシュページテーブル方式。
本発明の好ましい実施形態において、領域記述子テーブル(1422)は第1レベルの2階層ダイレクトマッピングインデックステーブル方式をコード化し、領域記述子テーブル(1423)は第2レベルの2階層ダイレクトマッピングインデックステーブル方式をコード化する。
本発明の好ましい実施形態において、第1レベルの2階層ダイレクトマッピングインデックステーブル方式および第2レベルの2階層ダイレクトマッピングインデックステーブル方式を、2階層テーブルルックアップ処理中に同じキャッシュライン({1415から1418})に順次ロードする。
本発明の好ましい実施形態において、PMTRPユニット(図17の120)の制御ユニット(図17の121)を追加のバスマスタインターフェース(1729)で適用する。PMTRPユニット(図17の121)をさらに2つの異なるメモリストアに同時に格納される2つの領域記述子要素を読み取るために変換されたアドレス空間(1720)に2つの同時アクセスを発行するための手段で適用する。
図18は、図14、15、16および17に従うPMTRPユニット(図17の121)の制御ユニット(図17の121)により実行されるメモリアドレス変換処理を示すフローチャート(1800)である。本模式的フローチャートにおいて、PMTRPユニットは単一レベルのダイレクトマッピング領域記述子テーブルをクエリすることだけに適用する。
フローチャートはステップ(1801)で開始する。
ステップ(1802)において、メモリ転送リクエストをターゲットポート(128)上のPMTPユニット(120)により受信する。
ステップ(1803)において、キャッシュタグデータフィールド(図14の1414)のコンテンツおよび2つの128ビットキャッシュラインフィールド({1415から1418})と({1419から1422})を、もしあれば、2つの128ビットキャッシュラインのどちらがこのメモリ転送リクエストに関連するかを決定するためにクエリを行う。
ステップ(1804)において、どちらのキャッシュラインもこのメモリ転送リクエストに関連していない場合はステップ(1805)に移動し、そうでない場合はステップ(1809)に移動する。
ステップ(1805)において、図14の第1システム領域記述子テーブル(1401.a)、第2システム領域記述子テーブル(1401.b)、第1ユーザ領域記述子テーブル(1407.a)および第2ユーザ領域記述子テーブル(1407.b)に関連するコンフィギュレーションメタデータのコンテンツを、このメモリ転送リクエストに関係する領域記述子のテーブルのアドレスオフセット(1402,1403,1408,1409)を決定するためにクエリを行う。
ステップ(1806)において、バースト読み取りメモリ転送リクエストを、ステップ(1805)において選択された領域記述子テーブルからこのメモリ転送リクエストに関連する領域記述子をレトリーブするために発行する。バーストメモリ転送リクエストの長さを、このメモリ転リクエストに関連するコンフィギュレーションメタデータの領域記述子コード化方式フィールド(図15の1515)により示される領域記述子のタイプに関係して決定する。
ステップ(1807)において、選択された領域記述子要素の値を2つの128ビットキャッシュライン({1415から1418})および({1419から1422})の直近で使用していないキャッシュラインにロードする。
ステップ(1808)において、(1807)において受信した領域記述子要素の値を検査する。
ステップ(1809)において、領域記述子要素が有効でない場合はステップ(1813)に移動する。領域記述子がステップ(1802)においてメモリ転送リクエストのアドレスに関係していないキャッシュされた領域記述子である場合にはステップ(1813)に移動する。ステップ(1810)に移動する。
ステップ(1810)において、ステップ(1802)においてポート(128)上の制御ユニットにより受信されたメモリ転送リクエストに関係するキャッシュラインに格納される領域記述子を、前記PMTRPユニットのリアセンブリおよびパーミッションチェックモジュールにより受信する。
ステップ(1811)において、パーミッションチェックモジュールはステップで受信したメモリ転送アドレスとステップ(1810)において受信したセグメント記述子の間でコンシステンシチェックを実行する。
ステップ(1812)において、コンシステンシチェックが失敗した場合はステップ(1813)に移動し、そうでない場合はステップ(1816)に移動する。
ステップ(1813)において、図17のPMTRPユニット(120)のポート(1728)上で中断することによりフォールト通知イベントを生成する。
ステップ(1814)において、ステップ(1802)で受信したメモリ転送リクエストが書き込みリクエストである場合にはステップ(1815)に移動し、そうでない場合はステップ(1820)に移動する。
ステップ(1815)において、データフィールド(1043)において値ゼロで読み取りメモリ転送応答を発行する。インターコネクトプロトコルがエラーレポート機能を供給する場合には、前記メモリ転送リクエストに対してエラーステータス(1041)を返す。ステップ(1822)に移動する。
ステップ(1814)において、メモリアドレス変換を実行し、変換されたメモリ転送リクエストのフィールドを生成する。
ステップ(1817)において、ステップ(1802)において受信したメモリ転送リクエストが書き込みリクエストである場合はステップ(1818)に移動し、そうでない場合はステップ(1819)に移動する。
ステップ(1818)において、PMTRPユニットのマスタポート(1818)上で書き込みメモリ転送リクエストを発行する。ステップ(1822)に移動する。
ステップ(1819)において、PMTRPユニットのマスタポート(129)上で読み取りメモリ転送リクエストを発行する。
ステップ(1820)において、マスタポート(129)上で対応する読み取りメモリ転送応答を受信する。
ステップ(1821)において、ターゲットポート(128)上で前記読み取りメモリ転送応答の結果を転送する。
フローチャートはステップ(1822)で終了する。
本発明の好ましい実施形態において、ステップ(1805)、(1806)、(1808)および(1809)はさらに、2つの領域記述子をレトリーブして評価することに適用する。例えば、キャッシュされた領域記述子の2ウェイセットアソシエイティブテーブルに格納された領域記述子をサーチする。この適用は、セットアソシエイティブキャッシュ方式を実装する技術者によって容易に実行することができる。
本発明の好ましい実施形態において、ステップ(1805)、(1806)、(1808)および(1809)はさらに、2階層領域記述子ウォークを実行することに適用する。この適用は、2階層MMU方式を実装する技術者によって容易に実行することができる。
32ビットおよび64ビット入力アドレス空間において比較的ファイングレインのメモリ割り当てに対するサポートで、低レイテンシで、ハイスループットで、一定時間の処理を有するMMUアーキテクチャが長年必要とされている。マイクロコントローラ市場においてさらに、メモリ保護ユニット(MPU)として処理することができ、市販のハイアシュランスのセキュリティ・クリティカル・リアルタイム・オペレーティングシステム(RTOS)を走らせるためのMMUとして処理することもできるPMTRPユニットを供給する必要性もある。これは、多くのハイアシュランスRTOSがアドレス変換機能を備えるハードウェアMMUのアベイラビリティに依存しているからである。さらに、より迅速なタスクスワッピングおよび改善されたシステムパフォーマンスをサポートするためにリアルタイム環境において時間解析可能な方法により低レイテンシで領域記述子の再プログラミングを低コストで加速するための手段に対する永年の必要性がある。
図19は、本発明の好ましい実施形態に従うプログラム可能なメモリアドレス変換ポリシーで適用した範囲記述子(1910)に存在してよいさまざまなフィールドを示すブロック図である。範囲の下限アドレスおよび上限アドレスを、それぞれフィールド(1914)および(1918)に格納する。フィールド(1911)はユーザ特権ソフトウェアアクセスに対して1ビットの「データのための読み取り」パーミッションフィールドをコード化する。フィールド(1912)はユーザ特権ソフトウェアアクセスに対して1ビットの「書き込み」パーミッションフィールドをコード化する。フィールド(1913)はユーザ特権ソフトウェアアクセスに対して1ビットの「実行のための読み取り」パーミッションフィールドをコード化する。フィールド(1914)はこの範囲記述子に関連する入力アドレス空間の連続する領域の29ビット下限アドレスをコード化する。フィールド(1915)はユーザ特権ソフトウェアアクセスに対して1ビットの「データのための読み取り」パーミッションフィールドをコード化する。フィールド(1916)はユーザ特権ソフトウェアアクセスに対して1ビットの「書き込み」パーミッションフィールドをコード化する。フィールド(1917)はユーザ特権ソフトウェアアクセスに対して1ビットの「実行のための読み取り」パーミッションフィールドをコード化する。フィールド(1918)はこの範囲記述子に関連する入力アドレス空間の連続する領域の29ビット上限アドレスをコード化する。この領域の長さは、上限アドレス(1918)の値から下限アドレス(1914)の値を引き、さらに値1を加えることにより計算する。フィールド(1920)は、この範囲記述子が有効であるかどうかを示す1ビットの値をコード化する。フィールド(1921)は、メモリアドレス変換がこの範囲記述子に対して有効であるかどうかを示す1ビットの値をコード化する。フィールド(1922)は入力アドレス空間におけるアドレスを変換されたアドレス空間におけるアドレスに変換することに用いられる符号付き30ビットの値をコード化する。最上位ビット(1923)は残り29ビット(1924)の符号(+/−)をコード化する。
図20は、本発明の好ましい実施形態に従うメモリ転送リクエスト(2001)のフィールドを示すブロック図(2000)である。メモリ転送リクエスト(2001)はフィールド(2005から2013)を備える。フィールド(2005)はメモリ転送リクエスト(2001)の3ビット(2006,2007,2008)制御フィールドをコード化する。フィールド(2006)はユーザ特権ソフトウェアアクセスに対して「データのための読み取り」パーミッションフィールドをコード化する。フィールド(2007)はユーザ特権ソフトウェアアクセスに対して「書き込み」パーミッションフィールドをコード化する。フィールド(2009)は前記メモリ転送リクエスト(2001)に対してユーザレベル特権(2010)またはシステムレベル特権(2011)のどちらかを示す2ビット(2010,2011)特権値をコード化する。フィールド(2012)は前記メモリ転送リクエスト(2001)に関連する入力アドレス空間における32ビットアドレスをコード化する。フィールド(2013)を前記32ビットアドレス(2012)の29の最上位ビットにマッピングする。
図21は、図1のPMTRPユニット(120)が2つのメモリ管理ユニット(2101,2140)を利用することに適用する本発明の好ましい実施形態(2100)を部分的に示すハイブリッドブロック概略図およびデータフロー図である。メモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータは図1に示すとおりである。ターゲットポート(134)は図1に示される図21のメモリストア(123)内に格納される領域記述子要素の部分にアクセスするためにメモリ転送リクエストを受信することに適用する。図21のラベル(2001)は図20のメモリ転送リクエスト(2001)である。第1MMU(2101)は図19の範囲記述子により示されるようなプログラム可能なメモリアドレス変換ポリシーで適用された8つの範囲記述子(2111から2118)を利用する。本実施形態において、8つの範囲記述子(2111から2118)を各メモリ転送リクエストに対して並列して評価する。
範囲記述子コンパレータモジュール(2121)は入力としてメモリ転送リクエスト(2001)および範囲記述子(2111)の値を受信し、入力としてコンパレータあぐれげーたモジュール(2130)受信する出力を生成する。範囲記述子コンパレータモジュール(2123)は入力としてメモリ転送リクエスト(2001)および範囲記述子(2113)の値を受信し、入力としてコンパレータアグリゲータモジュール(2130)に受信する出力を生成する。範囲記述子コンパレータモジュール(2124)は入力としてメモリ転送リクエスト(2001)および範囲記述子(2114)の値を受信し、入力としてコンパレータアグリゲータモジュール(2130)に受信する出力を生成する。範囲記述子コンパレータモジュール(2125)は入力としてメモリ転送リクエストおよび範囲記述子(2115)の値を受信し、入力としてコンパレータアグリゲータモジュール(2130)に受信する出力を生成する。範囲記述子コンパレータモジュール(2126)は入力としてメモリ転送リクエスト(2001)および範囲記述子(2116)の値を受信し、入力としてコンパレータアグリゲータモジュール(2130)に受信する出力を生成する。範囲記述子コンパレータモジュール(2127)は入力としてメモリ転送リクエスト(2001)および範囲記述子(2117)の値を受信し、入力としてコンパレータアグリゲータモジュール(2130)に受信する出力を生成する。範囲記述子コンパレータモジュール(2128)は入力としてメモリ転送リクエスト(2001)および範囲記述子(2118)の値を受信し、入力としてコンパレータアグリゲータモジュール(2130)に受信する出力を生成する。範囲記述子(2111から2118)の機能を図22に示す。
第2メモリ管理ユニット(2140)は少なくとも2階層の変換テーブルで32ビットページベースのMMU方式を利用することに適用するPMTRPユニットである。
コンパレータ結果アグリゲータモジュール(2130)は以下を行うことに適用する。
●メモリ転送リクエスト(2001)のアドレス(2012)が前記第2MMU(2140)により変換されるかどうかを示す第2MMU(2140)に入力として供給されるカスケードフラグ出力(2134)を生成する。
●2入力1出力マルチプレクサ(2150)に選択入力として供給されるカスケードフラグ出力(2132)を生成する。
●2入力1出力マルチプレクサ(2150)に第1データ入力として供給される変換されたメモリ転送リクエストを出力(2133)として生成する。
●フォールトイベントをアグリゲートするフォールトアグリゲーションユニット(2160)に入力として供給されるトランザクションフォールトを出力(2131)として生成する。
第2メモリ管理ユニット(2140)は以下を行うことに適用する。
●2入力1出力マルチプレクサ(2150)に第2データ入力として供給される変換されたメモリ転送リクエストを出力(2140)として生成する。
●フォールトイベントをアグリゲートするフォールトアグリゲーションユニット(2160)に入力として供給されるトランザクションフォールトを出力(2142)として生成する。
フォールトを第1MMU(2101)により発行する(2131)か、あるいはフォールトを第2MMU(2140)により発行する(2142)場合に、フォールトアグリゲーションユニット(2160)はフォールトイベントを出力(2161)として発行する。
2入力1出力マルチプレクサ(2150)は出力(2151)として変換されたメモリ転送リクエストを生成する。フォールトアグリゲーションユニットがフォールトイベント(2161)を発行しない場合、前記変換されたメモリ転送リクエスト(2151)をPMTRPユニット(120)のマスタポート(129)により出力として発行する。
図22は、本発明の好ましい実施形態に従う範囲記述子コンパレータモジュール(2200)を部分的に示すハイブリッドブロック模式図およびデータフロー図である。図22のラベル(1911,1912,1913,1914,1915,1916,1917,1918,1921,1923,1920および1924)は図19の範囲記述子(1910)に示すとおりである。ラベル(2006,2007,2008および2013)は図20のメモリ転送リクエスト(2001)に示すとおりである。コンパレータモジュール(2220)は次のサブモジュールを備える。
●アドレス(2012)の値が入力アドレス空間の連続する領域の下限アドレス(2013)の値以上である場合、大きいか等しいコンパレータモジュール(2210)はメモリ転送リクエスト(2001)の32ビットアドレス(2012)の上位29ビット(2013)の値を受信し、それを入力アドレス空間の連続領域の29ビットの下限アドレス(1914)の値と比較し、単一ビット値1を出力として生成する。そうでない場合、コンパレータモジュール(2210)は単一ビット値0を出力として生成する。前記単一ビット値を3入力1出力ANDモジュール(2122)に第1入力として供給する。
●アドレス(2012)の値が入力アドレス空間の連続する領域の下限アドレス(2013)の値以下である場合、小さいか等しいコンパレータモジュール(2211)はメモリ転送リクエスト(2001)の32ビットアドレス(2012)の上位29ビットの値を比較し、それを入力アドレス空間の連続する領域の29ビットの上限アドレス(1918)の値と比較し、単一ビット値1を出力として生成する。そうでない場合、コンパレータモジュール(2211)は単一ビット値0を出力として生成する。前記単一ビット値を3入力1出力ANDモジュール(2122)に第2入力として供給する。
●範囲記述子イネーブルフラグ(1920)の値を3入力1出力ANDモジュール(2122)に第3入力として供給する。3入力1出力ANDモジュール(2122)の各3つのデータ入力が単一ビット値1である場合、ANDモジュール(2212)の出力は単一ビット値1である。そうでない場合、ANDモジュール(2212)の出力は単一ビット値0である。
●前記ANDモジュール(2212)の出力を出力(2240)の範囲記述子アクティブフィールド(2236)に対する値として供給する。このフィールド(2236)は、このメモリ転送リクエスト(2001)がこの範囲記述子(1910)に関連しているかどうかを示す。
●アドレス変換モジュール(2213)はメモリ転送リクエスト(2001)の32ビットアドレス(2012)の符号なし上位29ビット(2013)の値および入力アドレス空間におけるアドレスを変換されたアドレス空間におけるアドレスに変換することに用いられる符号付30ビット値(1922)の値の符号付算術加算を実行する。
●2入力1出力29ビット幅マルチプレクサ(2216)は符号付算術処理の出力を前記第2データ入力として受信する。マルチプレクサ(2216)は一定の29ビット長値0(つまり29ビット全ては一定の単一ビット値0に設定されている)を前記第1データ入力として受信する。
●モジュール(2215)は、このメモリ転送リクエストがこの範囲記述子に関連するかどうかを示す2入力1出力ANDモジュール(2122)の出力を入力として受信する。前記範囲記述子の変換イネーブルフィールド(1921)の値が有効であり、モジュール(2122)の出力が単一ビット値1である場合、モジュール(2215)の出力は単一ビット値1であり、そうでない場合は前記モジュール(2215)の出力は単一ビット値0である。
●モジュール(2215)の出力を出力(2240)の変換アクティブフィールド(2237)に対する値として供給する。
●モジュール(2215)の出力を2入力1出力29ビット幅マルチプレクサ(2216)へ選択入力として供給する。選択入力の値が単一ビット値1である場合、変換されたアドレスを含むマルチプレクサ(2216)への第1データ入力の値をマルチプレクサ(2216)の出力としてリリースする。そうでない場合、一定値ゼロを含むマルチプレクサ(2216)への第2データ入力の値をマルチプレクサ(2216)の出力としてリリースする。
●パーミッションチェックモジュール(2220)は入力として、ユーザの「データのための読み取り」パーミッションフィールド(1911)の値、メモリ転送リクエストの「データのための読み取り」フィールド(2006)の値、メモリ転送リクエスト(2001)の特権レベル(2009の値およびこのメモリ転送リクエストがこの範囲記述子と関連するかどうかを示すモジュール(2212)の出力を受信する。パーミッションチェックモジュール(2220)は、前記入力を評価し、パーミッションチェックが失敗した場合は単一ビット値1をリリースし、そうでない場合は単一ビット値0をリリースする。
●パーミッションチェックモジュール(2221)は入力として、ユーザ「書き込み」パーミッションモジュール(1912)の値、メモリ転送リクエストの「書き込み」フィールド(2007)、メモリ転送リクエスト(2001)の特権レベル(2009)の値およびこのメモリ転送リクエストがこの範囲記述子と関連するかどうかを示すモジュール(2212)の出力を受信する。パーミッションチェックモジュール(2221)は、前記入力を評価し、パーミッションチェックが失敗した場合は単一ビット値1をリリースし、そうでない場合は単一ビット値0をリリースする。
●パーミッションチェックモジュール(2222)は入力として、ユーザの「実行のための読み取り」パーミッションフィールド(1913)の値、メモリ転送リクエストの「実行のための読み取り」フィールド(2008)の値、メモリ転送リクエスト(2001)の特権レベル(2009)の値およびこのメモリ転送リクエストがこの範囲記述子と関連しているかどうかを示すモジュール(2212)の出力を受信する。パーミッションチェックモジュール(2222)は、前記入力を評価し、パーミッションチェックが失敗した場合は単一ビット値1をリリースし、そうでない場合は単一ビット値0をリリースする。
●パーミッションチェックモジュール(2223)は入力として、メモリ転送リクエストの「実行のための読み取り」フィールド(2006)の値、メモリ転送リクエスト(2001)の特権レベル(2009)の値およびこのメモリ転送リクエストがこの範囲記述子と関連しているかどうかを示すモジュール(2212)の出力を受信する。パーミッションチェックモジュール(2223)は前記入力を評価し、パーミッションチェックが失敗した場合は単一ビット値1をリリースし、そうでない場合は単一ビット値0をリリースする。
●パーミッションチェックモジュール(2224)はシステム「書き込み」パーミッションフィールド(1916)の値、メモリ転送リクエストの「書き込み」フィールド(2007)の値、メモリ転送リクエスト(2001)の特権レベル(2009)の値およびこのメモリ転送リクエストがこの範囲記述子と関連しているかどうかを示すモジュール(2212)の出力を受信する。パーミッションチェックモジュール(2224)は前記入力を評価し、パーミッションチェックが失敗した場合は単一ビット値1をリリースし、そうでない場合は単一ビット値0をリリースする。
●パーミッションチェックモジュール(2225)は入力として、システムの「実行のための読み込み」パーミッションフィールド(1917)の値、メモリ転送リクエストの「実行のための読み込み」フィールド(2008)の値、メモリ転送リクエスト(2001)の特権レベル(2009)の値およびこのメモリ転送リクエストがこの範囲記述子と関連しているかどうかを示すモジュール(2212)の出力を受信する。パーミッションチェックモジュール(2225)は前記入力を評価し、パーミッションチェックが失敗した場合は単一ビット値1をリリースし、そうでない場合は単一ビット値0をリリースする。
●パーミッションチェックモジュール(2220から2225)の出力をフォールトアグリゲーションユニット(2226)への入力として供給する。いかなる前記出力も単一ビット値1である場合、フォールトアグリゲーションユニット(2226)は単一ビット値1をリリースする。そうでない場合、フォールトアグリゲーションユニット(2226)は単一ビット値0をリリースする。アグリゲーションユニット(2226)の出力を出力(2240)のパーミッションチェックフォールトフィールド(2230)に対する値として供給する。
図23は本発明の好ましい実施形態に従うコンパレータ結果アグリゲータモジュール(図21の2130)を部分的に示すハイブリッドブロック概略図(2300)である。2ビット(図19の2010,2010)特権レベルフィールド(図23の2009)は図19が示すとおりである。1ビットカスケードフラグ(図23の2134)は図21が示すとおりである。1ビットトランザクションフォールトフラグ(図23の2131)は図21が示すとおりである。
ラベル(2310)は8つのコンパレータモジュール(2121から2128)による出力として同時にリリースされる8つの変換アクティブフィールド(2237)を示す。
ラベル(2320)は8つの範囲記述子コンパレータモジュール(2121から2128)により出力として同時にリリースされる8つのパーミッションチェックフォールトフィールド(2230)を示す。
ラベル(2301)は前記MMU(2101)のアドレス変換を可能にする単一ビット「変換イネーブル」コンフィギュレーションフィールドを示す。
カスケードモジュール(2312)は入力として、8つの(2310)変換アクティブフィールド(2237)および単一ビット変換イネーブルコンフィギュレーションフィールド(2301)を受信する。変換イネーブルコンフィギュレーションフィールド(2301)の値が1であり、どの8つの(2310)変換アクティブフィールド(2237)が値1を有していない場合、カスケードモジュール(2312)の出力の単一ビット値は1である。そうでない場合、カスケードモジュールの出力は値0である。カスケードモジュール(2312)の出力を単一ビットカスケードフラグ(2134)の値として利用する。
トランザクションフォールトモジュール(2311)は入力として8つの(2310)トランザクションアクティブフィールド(2237)および単一ビット変換イネーブルコンフィギュレーションフィールド(2301)を受信する。変換イネーブルコンフィギュレーションフィールド(2301)の値が1で、8つの(2310)変換アクティブフィールド(2237)の1つ以上が値1を有する場合、トランザクションフォールトモジュール(2311)の出力の単一ビット値は1である。変換イネーブルコンフィギュレーションファイル(2301)の値が0であり、いかなる8つの変換アクティブフィールド(2237)が値1を有する場合、トランザクションフォールトモジュール(2311)の出力の単一ビット値も1である。そうでない場合、トランザクションフォールトモジュール(2311)の出力の単一ビット値は値0である。
パーミッションチェックフォールトモジュール(2322)は入力として、8つの範囲記述子コンパレータモジュール(2121から2128)により発行される8つの(2320)パーミッションチェックフォールトフィールド(2230)を受信する。8つの(2320)ユーザパーミッションチェックフォールトフィールド(2320)のいかなる1つも値1である場合、パーミッションチェックフォールトモジュール(2322)の出力の単一ビット値を値1に設定する。そうでない場合、パーミッションチェックフォールトモジュール(2322)の出力の単一ビット値を0に設定する。
フォールトアグリゲーションモジュール(2360)は入力として、モジュール(2311)および(2322)の出力を受信する。いかなる前記単一ビット入力が値1である場合、フォールトアグリゲーションモジュール(2360)は値1の単一ビット出力を生成する。そうでない場合、フォールトアグリゲーションモジュール(2360)は値0の単一ビット出力を生成する。ふぉーるとアグリゲーションモジュール(2360)の出力をトランザクションフォールトフラグ(2131)の値として供給する。
図24は、本発明の好ましい実施形態に従う2つのMMU手段(図21の2101から2140)を用いた入力アドレス空間(2401)の変換されたアドレス空間(2402)へのマッピングの例を示すブロック図(600)である。ラベル(2400)は8つの範囲記述子(2111から2118)を示す。範囲記述子(2111)の範囲記述子イネーブルフラグ(1920)は無効であると示されている。各範囲記述子(2112から2118)の範囲記述子イネーブルフラグ(1920)は有効であると示されている。変換イネーブルフラグ(1921)は範囲記述子(2111,2112,2117)に対して無効であり、範囲記述子(2113,2114,2115,2116,2118)に対して有効である。範囲記述子(2112)を、アドレス変換なしで書き込み許可を有効にするように構成する。範囲記述子(2117)を、アドレス変換なしで読み取り許可を有効にするように構成する。範囲記述子(2113,2114,2115,2116,2118)を、入力アドレス空間の範囲をターゲットアドレス空間({2113,2433},{2114,2434},{2115,2435},{2116,2436},{2118,2438})の範囲にマッピングするものとして示す。領域記述子(2112)に関連するメモリアドレスに向けられた書き込みメモリ転送リクエストを、恒等変換であるアドレス変換(2435)で実行する。
第1MMU(2101)のいかなる領域記述子(2111から2118)の1つに関連しない、いかなるメモリ領域(2410,2411,2412,2413,2414,2415,2416)の1つに向けられるメモリ転送リクエストを、追加の処理のために第2MMU(2140)に転送する。例えば、入力アドレス空間における領域(2420)は第2MMU(2140)において1つ以上の領域記述子に関連する。領域(2420)を第2MMU(2140)によりターゲットアドレス空間においてメモリ範囲(2422)に変換する。
本発明の好ましい実施形態において、装置は、
ターゲットポートであり、第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第1ポートと、
第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つの領域記述子であり、それぞれに対して、領域記述子のタイプは固定長ページを備えるページ記述子、可変長ページを備えるページ記述子、セグメント記述子、トランスレーションルックアサイドバッファ記述子、範囲記述子、プログラム可能なメモリアドレス変換ポリシーで適用された範囲記述子、キャッシュタグ記述子の1つから選択される第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つの領域記述子を備えるプログラム可能なコンフィギュレーションデータと、
マスタポートであり、第2アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第2ポートと、
処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化された第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポートで受信された第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、
処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化された第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポートで受信された第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、
ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするための第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
少なくとも1つの領域記述子の1つに関連する第3アドレス空間においてメモリロケーションに向けられる第3ポート上で受信する正しい形式のメモリ転送リクエストを処理する手段と、を備えるプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットと、
ターゲットポートであり、PDMAユニットを制御するためにメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第1ポートと、
マスタポートであり、メモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
メモリからメモリへの転送処理を記述することができる少なくとも1つのメモリからメモリへの転送制御記述子を含むプログラム可能なコンフィギュレーションデータと、
第2ポートおよび少なくとも1つのメモリからメモリへの転送制御記述子を用いてメモリからメモリへの転送処理を処理する手段と、を備えるプログラム可能なダイレクトメモリアクセス(PDMA)ユニットと、を備え、
PDMAユニットは前記第2ポートからPMTRPユニットの第3ポートへメモリ転送リクエストを送信することに適用し、PMTRPユニットはPMTRPユニットの少なくとも1つの領域記述子の少なくとも1つの部分に関連する第3アドレス空間においてメモリロケーションに向けられるPDMAユニットの第2ポートに発行される正しい形式のメモリ転送リクエストを受信して処理することに適用することを特徴とする。
本発明のさらなる好ましい実施形態において、
プログラム可能なコンフィギュレーションデータの部分は第1アドレス空間のユーザ部に関連し、
PMTRPユニットの第3ポートにアクセス可能である第1アドレス空間のユーザ部に関連するPMTRPユニットのすべてのプログラム可能なコンフィギュレーションデータを1つのPDMAユニットのメモリからメモリへの転送処理においてプログラム可能である。
本発明の好ましい実施形態において、装置は、
ターゲットポートであり、第1アドレス空間におけるメモリアドレスと、アドレス空間識別子と、に関連し、第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第1ポートと、
N+1の論理的に独立したMTRP領域の1つに関連する値を送信することに適用する第2ポートと、
第1ポート上で受信するメモリ転送リクエストに応答して第2ポート上のN+1の論理的に独立したMTRP領域の1つに関連する値を生成する手段と、
メモリ転送リクエストを第3ポート上でN+1の論理的に独立したMTRP領域の1つにマッピングできなかったことを示す手段と、を備え、
少なくともN+1の論理的に独立したメモリ転送リクエスト処理領域の1つで、少なくともNの連続するパーティションに分割される第1アドレス空間に関連するメモリ転送リクエストをマッピングすることに適用し、
Nの値は少なくとも2であり、
N+1の論理的に独立したMTRP領域の少なくとも2つを、第1アドレス空間の少なくともNの連続するパーティションの同じパーティションにマッピングすることができ、
第1ポート上で受信するメモリ転送リクエストに関連するメモリアドレスがマッピングされたN+1の論理的に独立したMTRP領域の少なくとも2つを有することができる第1アドレス空間の少なくともNの連続するパーティションの1つに関連する場合、メモリ転送リクエストに関連するアドレス空間識別子の値を、マッピングする少なくとも2つのN+1の論理的に独立したPMTRP領域を区別することに用いる。
本発明のさらなる好ましい実施形態において、各少なくともN+1の論理的に独立したメモリ転送リクエスト処理(MTRP)領域は前記領域に向けられるメモリ転送リクエストを変換するためにプログラム可能なメモリアドレス変換を利用する。
本発明のさらなる好ましい実施形態において、装置は、
ターゲットポートであり、第1インターコネクトから第1空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第1ポートと、
マスタポートであり、第1インターコネクトではない第2インターコネクトに第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
それぞれが第1アドレス空間のメモリ領域にプログラム的に関連し、プログラム可能なアクセスパーミッションポリシーを備え、プログラム可能なメモリアドレス変換ポリシーを備える第1セットの少なくとも2つのプログラム可能な領域記述子と、
ターゲットポートであり、第1セットの少なくとも2つのプログラム可能な領域記述子にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
第1セットの少なくとも2つのプログラム可能な領域記述子の少なくとも1つのプログラム可能な領域記述子の部分に関連する第3アドレス空間においてメモリロケーションに向けられる第3ポート上で受信する正しい形式のメモリ転送リクエストを処理する手段と、
出力ポートである第4ポートと、
第1セットの少なくとも2つのプログラム可能なメモリ領域記述子に格納されるような受信したメモリ転送リクエストに関連する少なくとも1つのポリシーに一致する第1ポート上で受信するメモリ転送リクエストに応答してメモリ転送リクエストを第2ポート上で生成して送信する手段と、
プログラム的に前記アドレスに関連する少なくとも2つのプログラム可能な記述子の1つが有効な変換ポリシーを有する場合、第1ポート上で受信するメモリ転送リクエストのアドレスを変換する手段と、
前記アドレスにプログラム的に関連する少なくとも2つのプログラム可能な領域記述子の1つ以上のプログラム可能な領域記述子が前記有効な変換ポリシーを有する場合、第4ポート上で信号を生成する手段と、を有するプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットを備える。
本発明のさらに好ましい実施形態において、PMTRPユニットの第1セットの少なくとも2つのプログラム可能な領域記述子の少なくとも1つのプログラム可能な領域記述子は、1つ以上のプロセッサコア上で走るソフトウェアのために発行される実行可能なコードメモリ転送リクエストに関連する少なくとも1つのパーミッションフィールドと、1つ以上のプロセッサコア上で走るソフトウェアのために発行されるデータメモリ転送リクエストに関連する少なくとも1つのパーミッションフィールドと、を有する。
本発明のさらに好ましい実施形態において、
PTRMPユニットは前記PMTRPユニットの第1ポート上で受信するメモリ転送リクエストをアドレス空間識別子と関連付ける手段を備え、
前記PMTRPユニットのプログラム可能な領域記述子の少なくとも1つはアドレス空間識別胃に関連付けることができる。
本発明のさらに好ましい実施形態において、装置は、
ターゲットポートであり、第1インターコネクトから第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を受信することに適用する第1ポートと、
第1インターコネクトではない第2インターコネクトに第2アドレス空間に関連するメモリ転送リクエストを送信し、メモリ転送を受信することに適用する第2ポートと、
第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つのキャッシュされた領域記述子を備えるプログラム可能なコンフィギュレーションデータと、
第2ポートでセットのキャッシュされた領域記述子である少なくとも1つのメモリ転送リクエストを生成して送信することにより少なくともNセットの少なくとも2つの領域記述子にアクセスし、対応する応答を受信し、前記受信した領域記述子をキャッシュする手段と、
処理時間において第2ポートでアクセス可能なNセットの少なくとも2つの領域記述子の第1セットにおいてコード化されるポリシーに従って第1ポート上で受信されるメモリ転送リクエストを処理する手段と、
Nセットの少なくとも2つの領域記述子の第1セットに格納されるように前記受信されたメモリ転送リクエストに関連する少なくとも1つのポリシーに一致する第1ポート上で受信するメモリ転送リクエストに応答して第2ポート上でメモリ転送リクエストを生成して送信する手段と、を備え、
Nの値は少なくとも1である。
本発明のさらに好ましい実施形態において、Nの値は少なくとも2であり、PMTRPユニットはさらに、
第1ポートの第1アドレス空間を少なくとも2つの連続した領域に分割し、
第1アドレス空間の少なくとも2つの連続した領域の各領域に対して、前記領域を第2ポートでアクセス可能なNセットの少なくとも2つの領域記述子の異なるセットとプログラム的に関連させる、ことに適用する。
本発明のさらに好ましい実施形態において、PMTRPユニットはさらに、
第2ポートで少なくとも1つのメモリ転送リクエストを生成して送信し、対応する応答を受信することにより、それぞれが少なくとも2つの領域記述子を含む少なくとも1つの領域記述子のキャッシュにアクセスする手段と、
処理時間において第2ポートでアクセス可能な少なくとも1つの領域記述子のキャッシュの1つにおいてコード化されるポリシーに一致して第1ポート上で受信するメモリ転送リクエストを処理する手段と、
処理時間において第2ポートでアクセス可能な少なくとも1つの領域記述子のキャッシュの1つにおいてコード化されるポリシーに一致して第1ポート上で受信されるメモリ転送リクエストに応答してメモリ転送リクエストを第2ポート上で生成して送信する手段と、に適用する。
本発明のさらに好ましい実施形態において、PMTRPユニットはさらに、
第2インターコネクトではない第3インターコネクトに第3アドレス空間に関連するメモリ転送リクエストを送信し、メモリ転送を受信することに適用する第3ポートと、
処理時間において第3ポートでアクセス可能な少なくともNセットのプログラム可能な領域記述子の1セットにおいてコード化されるポリシーに一致する第1ポート上で受信されるメモリ転送リクエストを処理する手段と、
処理時間において第3ポートでアクセス可能な少なくともNセットのプログラム可能な領域記述子の1セットにおいてコード化されるポリシーに一致する第1ポート上で受信されるメモリ転送リクエストに応答してメモリ転送リクエストを第2ポート上で生成して送信する手段と、に適用する。
本発明のさらに好ましい実施形態において、装置は、
ターゲットポートであり、Nのパーティションに細分化され、範囲がMキキバイトである第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を受信することに適用する第1ポートと、
マスタポートであり、範囲がOキキバイトである第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、それぞれが第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化し、すべてが同じタイプの領域記述子であり、前記タイプの領域記述子を少なくとも8の異なるページ長のサポートを備えるページ記述子および少なくとも16の異なる割り当てられたセグメント長のサポートを備えるセグメント記述子の1つから選択され、少なくともNが異なる第1アドレス空間のNパーティションの1つに関連する少なくともNの領域記述子と、
処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信する第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、
処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信する第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、を有するプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットを備え、
Mの値は少なくとも1024であり、
Nの値は少なくとも2であり、16384より小さく、
Oの値は少なくとも1である。
本発明のさらに好ましい実施形態において、PMTRPユニットはさらに、
ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信する第3ポートと、
少なくともNの領域記述子の少なくとも1つの部分にアクセスする有効なメモリロケーションに向けられた第3ポート上で受信された正しい形式のメモリ転送リクエストを処理する手段と、
第3ポート上でメモリ転送応答を送信することにより少なくともNの領域記述子の少なくとも1つの部分にアクセスするメモリロケーションに向けられる第3ポート上で受信する正しい形式の読み取りメモリ転送リクエストに応答する手段と、を備える。
本発明のさらに好ましい実施形態において、PMTRPユニットは、
●どの少なくともNの領域記述子がメモリ転送リクエストに関連するかを識別するダイレクトインデックスルックアップ方式のタイプと、
●どの少なくともNの領域記述子がメモリ転送リクエストに関連するかを識別するコンテンツ・アソシエイティブ・メモリ・ルックアップ方式と、
●どの少なくともNの領域記述子がメモリ転送リクエストに関連するかを識別する古アソシエイティブ・ルックアップ方式と、
のルックアップ方式の1つを利用することに適用する。
本発明のさらに好ましい実施形態において、装置は、
ターゲットポートであり、第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適応する第1ポートと、
それぞれに対してタイプが、固定長ページを備えるページ記述子、可変長ページを備えるページ記述子、セグメント記述子、トランスレーション・ルックアサイド・バッファ記述子、プログラム可能なメモリアドレス変換ポリシーで適用した領域記述子の5つのタイプの1つから選択される、第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つの領域記述子と、
マスタポートであり、第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、
ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
少なくとも1つの領域記述子の少なくとも1つの部分に関連する第3アドレス空間においてメモリロケーションに向けられた第3ポート上で受信される正しく形成されるメモリ転送リクエストを処理する手段と、を備える第1プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットと、
ターゲットポートであり、第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を受信することに適用する第1ポートと、
第1ポート上で1つ以上のメモリ転送リクエストで受信される領域記述子においてコード化される少なくとも1つのポリシーの少なくとも1つをどのように転送するかについて少なくとも1つのポリシーをコード化する、第1アドレス空間の領域に関係する少なくとも1つのポリシーをコード化する少なくとも1つの記述子を備えるプログラム可能なコンフィギュレーションデータと、
マスタポートであり、第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、
処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、
ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
少なくとも1つの記述子の少なくとも1つの部分に関連する第3アドレス空間においてメモリロケーションに向けられた第3ポート上で受信される正しく形成されるメモリ転送リクエストを処理する手段と、を備える第2プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットと、を備え、
第2PMTRPユニットの第2ポートは第1PMTRPユニットの第3ポートに接続されている。
発明のさまざまな実施形態を複数の異なる形で実現してよく、プロセッサ(例えばマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサまたは汎用コンピュータ)で使用するためのコンピュータプログラムロジック、プログラム可能なロジックデバイス(例えば現場でプログラム可能なゲートアレイ(FPGA)、または別のPLD)で使用するためのプログラム可能なロジック、個別部品、集積回路(例えば特定用途向け集積回路(ASIC))、またはそれらの組合せを含むいかなる別の手段を含む。本発明の実施形態において、主にユーザとサーバの間のすべての通信を、コンピュータが実行可能な形に変換され、前記ようなものとしてコンピュータが読み取り可能な媒体に格納され、オペレーティングシステム下でマイクロプロセッサにより実行されるセットのコンピュータプログラム命令として実装する。
コンピュータプログラムロジックは機能のすべてまたは一部を実装し、ここで述べられるものをさまざまな形において実現してよく、ソースコードの形、コンピュータが実行可能な形およびさまざまな中間形(例えばアセンブラ、コンパイラ、リンカまたはロケータにより生成される形)を含む。ソースコードはさまざまなオペレーティングシステムまたはオペレーティング環境で使用するために、いかなるさまざまなプログラミング言語(例えばオブジェクトコード、アセンブリ言語、SPARK ADA,Fortran,C,C++,JAVA,RubyまたはHTMLのようなハイレベル言語)において実装される一連のコンピュータプログラム命令を含んでよい。ソースコードはさまざまなデータ構造および通信メッセージを定義して使用してよい。ソースコードはコンピュータが実行可能な形(例えばインタープリタ経由で)であってよく、またはソースコードを(トランスレータ、アセンブラまたはコンパイラ経由で)コンピュータが実行可能な形に変換してよい。
コンピュータプログラムを、半導体メモリデバイス(例えばRAM、ROM、PROM、EEPROMまたはフラッシュプログラム可能なRAM)、磁気メモリデバイス(例えばフロッピーディスクまたは固定ディスク)、光学メモリデバイス(例えばCD−ROMまたはDVD−ROM)、PCカード(例えばPCMCIAカード)または別のメモリデバイスのような有形記憶媒体において永久または一時的にいかなる形(例えばソースコードの形、コンピュータが実行可能な形または中間形)において固定してよい。コンピュータプログラムをいかなるさまざまな通信技術を用いてコンピュータに転送可能な信号においていかなる形でも固定してよく、限定されないが、アナログ技術、デジタル技術、光学技術、無線技術(例えばブルートゥース)、ネットワーク技術およびインターネットワーク技術を含む。コンピュータプログラムを伴う印刷書類または電子書類(シュリンクパックされたソフトウェア)を備える取り外し可能な記憶媒体としていかなる形で分配し、コンピュータシステム(例えばオンシステムROMまたは固定ディスク)でプリロードし、または通信システム(例えばインターネットまたはワールド・ワイド・ウェブ)によりサーバまたは電子掲示板から分配してよい。ハードウェアロジック(プログラム可能なロジックデバイスで使用するためのプログラム可能なロジックを含む)は機能のすべてまたは一部を実装し、ここで記述されるものを従来の手動の方法を用いて設計するか、コンピュータ支援設計(CAD)、ハードウェア記述言語(例えばVHDLまたはAHDL)またはPLDプログラミング言語(例えばPALASM、ABELまたはCUPL)のようなさまざまなツールを用いて電子的に設計、取り込み、シミュレーションまたは記録してよい。
プログラム可能なロジックを半導体メモリデバイス(例えばRAM、ROM、PROM、EEPROMまたはフラッシュプログラミング可能なRAM)、磁気メモリデバイス(例えばフロッピーディスクまたは固定ディスク)、光学メモリデバイス(例えばCD−ROMまたはDVD−ROM)または別のメモリデバイスのような有形記憶媒体において永久または一時的に固定してよい。プログラム可能なロジックを限定されないが、アナログ技術、デジタル技術、光学技術、無線技術(例えばブルートゥース)、ネットワーク技術およびインターネットワーク技術を含むいかなるさまざまな通信技術を用いてコンピュータに転送可能な信号において固定してよい。プログラム可能なロジックを取り外し可能な記憶媒体としていかなる形で分配し、コンピュータシステム(例えばオンシステムROMまたは固定ディスク)でプリロードし、または通信システム(例えばインターネットまたはワールド・ワイド・ウェブ)によりサーバまたは電子掲示板から分配してよい。
図面の簡単な説明
発明のより良い理解について、そして、それがどのように有効に実施することができる方法を示すために、添付の図面の中で、非限定的な例だけとして、それの実施形態は示されています。
図1は、本発明の好ましい実施形態のためのデータを処理する装置(100)の部分を示すブロック概略図である。
図2は、本発明の好ましい実施形態に従う図1に示されたPMTRPユニット(120)のメモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータにアクセスするためのアドレス空間(201)の分割を示すブロック図(200)である。
図3は、1つのメモリからメモリへの転送処理(図1の148,149および150)においてPMTRPユニット(図1の120)のメモリストア(図1の123)において格納される全てのプログラム可能なコンフィギュレーションデータにPDMAユニット(図1の140)により実行されるメモリからメモリへの転送処理を示すフローチャート(300)である。
図4は、図1のPMTRPユニット(120)がメモリ管理ユニット(MMU)の機能を実装することに適用する本発明の好ましい実施形態を部分的に示すハイブリッドのブロック概略図およびデータフロー図である。
図5は、本発明の好ましい実施形態に従うPMTRPユニット(120)の制御ユニット(121)により実行されるメモリアドレス変換処理のステップを示すフローチャート(500)である。
図6は、本発明の好ましい実施形態に従う、入力アドレス空間(610)と変換されたアドレス空間(630)の間のセグメントベースのアドレス変換方式のマッピング例を示すブロック図(600)である。
図7は、[3]の図6−1に示されるようなDEC VAX−11/760に対する単一レベルのダイレクトマッピングページベースの方式の入力アドレス空間(701)の編成を示すブロック図(670)である。
図8は、本発明の好ましい実施形態に対する単一レベルのダイレクトマッピングされたセグメントベース方式に対する入力空間(701)の新規編成を示すブロック図(670)である。
図9は本発明の好ましい実施形態に従う2階層のメモリ管理手段を示すブロック図(900)である。
図10は本発明の好ましい実施形態に従う、メモリ転送リクエスト(1010)およびメモリ変換応答(1040)において存在してよいさまざまなフィールドを示すブロック図(1000)である。
図11は、図1のPMTRPユニット(120)を分割された単一レベルのダイレクトインデックスのページベースメモリ管理ユニット(MMU)の機能を実装することに適用する、本発明の好ましい実施形態(1100)を部分的に示すハイブリッドブロック概略図およびデータフロー図である。
図12は、図1のPMTRPユニット(120)はメモリ管理ユニット(MMU)の機能を実装することに適用する、本発明の好ましい実施形態を部分的に示すハイブリッドブロック概略図およびデータフロー図である。
図13は、図11および図12に示されるような、本発明の好ましい実施形態に従うPMTRPユニット(図1の120)の制御ユニット(図1の121)により実行されるメモリアドレス変換処理を示すフローチャート(1300)である。
図14は、本発明の好ましい実施形態に従うPMTRPユニット(120)のメモリストア(123)に格納されるプログラム可能なコンフィギュレーションデータにアクセスするためのアドレス空間(1400)の分割を示すブロック図である。
図15は、本発明の好ましい実施形態に従う図14において利用する16ビット幅のコンフィギュレーションメタデータフィールド(1510)を示すブロック図である。
図16は、本発明の好ましい実施形態に従う図14において利用された領域記述子(1600)を示すブロック図である。
図17は、図1、14、15および16を参照として示されるような、本発明の好ましい実施形態に従う装置(1700)を部分的に示すハイブリッドブロック概略図およびデータフロー図である。
図18は、図14、15、16および17に従うPMTRPユニット(図17の121)の制御ユニット(図17の121)により実行されるメモリアドレス変換処理を示すフローチャート(1800)である。
図19は、本発明の好ましい実施形態に従うプログラム可能なメモリアドレス変換ポリシーで適用した範囲記述子(1910)に存在してよいさまざまなフィールドを示すブロック図である。
図20は、本発明の好ましい実施形態に従うメモリ転送リクエスト(2001)のフィールドを示すブロック図(2000)である。
図21は、図1のPMTRPユニット(120)が2つのメモリ管理ユニット(2101,2140)を利用することに適用する本発明の好ましい実施形態(2100)を部分的に示すハイブリッドブロック概略図およびデータフロー図である。
図22は、本発明の好ましい実施形態に従う範囲記述子コンパレータモジュール(2200)を部分的に示すハイブリッドブロック模式図およびデータフロー図である。
図23は本発明の好ましい実施形態に従うコンパレータ結果アグリゲータモジュール(図21の2130)を部分的に示すハイブリッドブロック概略図(2300)である。
図24は、本発明の好ましい実施形態に従う2つのMMU手段(図21の2101から2140)を用いた入力アドレス空間(2401)の変換されたアドレス空間(2402)へのマッピングの例を示すブロック図(600)である。
参考文献
[1]Henry M.Levy,Capability−Based Computer Systems,Digital Press,1984.
[2]Harvey G.Cragon,Memory Systems and Pipelined Processor,1996.
[3]Digital.Vax11/780 Hardware Handbook,1979−80,1979.

Claims (15)

  1. ターゲットポートであり、第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第1ポートと、
    第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つの領域記述子であり、それぞれに対して、領域記述子のタイプは固定長ページを備えるページ記述子、可変長ページを備えるページ記述子、セグメント記述子、トランスレーションルックアサイドバッファ記述子、範囲記述子、プログラム可能なメモリアドレス変換ポリシーで適用された範囲記述子、キャッシュタグ記述子の1つから選択される第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つの領域記述子を備えるプログラム可能なコンフィギュレーションデータと、
    マスタポートであり、第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
    処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化された第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポートで受信された第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、
    処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化された第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポートで受信された第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、
    ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするための第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
    少なくとも1つの領域記述子の1つに関連する第3アドレス空間においてメモリロケーションに向けられる第3ポート上で受信する正しい形式のメモリ転送リクエストを処理する手段と、を備えるプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットと、
    ターゲットポートであり、PDMAユニットを制御するためにメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第1ポートと、
    マスタポートであり、メモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
    メモリからメモリへの転送処理を記述することができる少なくとも1つのメモリからメモリへの転送制御記述子を含むプログラム可能なコンフィギュレーションデータと、
    第2ポートおよび少なくとも1つのメモリからメモリへの転送制御記述子を用いてメモリからメモリへの転送処理を処理する手段と、を備えるプログラム可能なダイレクトメモリアクセス(PDMA)ユニットと、を備え、
    PDMAユニットは前記第2ポートからPMTRPユニットの第3ポートへメモリ転送リクエストを送信することに適用し、PMTRPユニットはPMTRPユニットの少なくとも1つの領域記述子の少なくとも1つの部分に関連する第3アドレス空間においてメモリロケーションに向けられるPDMAユニットの第2ポートに発行される正しい形式のメモリ転送リクエストを受信して処理することに適用することを特徴とする装置。
  2. プログラム可能なコンフィギュレーションデータの部分は第1アドレス空間のユーザ部に関連し、
    PMTRPユニットの第3ポートにアクセス可能である第1アドレス空間のユーザ部に関連するPMTRPユニットのすべてのプログラム可能なコンフィギュレーションデータを1つのPDMAユニットのメモリからメモリへの転送処理においてプログラム可能であることを特徴とする請求項1に記載の装置。
  3. PMTRPユニットのプログラム可能なコンフィギュレーションデータはさらに少なくとも1つのキャッシュラインまたは少なくとも1つのキャッシュブロックを備えることを特徴とする請求項1または2のいずれか1項に記載の装置。
  4. ターゲットポートであり、第1インターコネクトから第1空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第1ポートと、
    マスタポートであり、第1インターコネクトではない第2インターコネクトに第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
    それぞれが第1アドレス空間のメモリ領域にプログラム的に関連し、プログラム可能なアクセスパーミッションポリシーを備え、プログラム可能なメモリアドレス変換ポリシーを備える第1セットの少なくとも2つのプログラム可能な領域記述子と、
    ターゲットポートであり、第1セットの少なくとも2つのプログラム可能な領域記述子にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
    第1セットの少なくとも2つのプログラム可能な領域記述子の少なくとも1つのプログラム可能な領域記述子の部分に関連する第3アドレス空間においてメモリロケーションに向けられる第3ポート上で受信する正しい形式のメモリ転送リクエストを処理する手段と、
    出力ポートである第4ポートと、
    第1セットの少なくとも2つのプログラム可能なメモリ領域記述子に格納されるような受信したメモリ転送リクエストに関連する少なくとも1つのポリシーに一致する第1ポート上で受信するメモリ転送リクエストに応答してメモリ転送リクエストを第2ポート上で生成して送信する手段と、
    プログラム的に前記アドレスに関連する少なくとも2つのプログラム可能な記述子の1つが有効な変換ポリシーを有する場合、第1ポート上で受信するメモリ転送リクエストのアドレスを変換する手段と、
    前記アドレスにプログラム的に関連する少なくとも2つのプログラム可能な領域記述子の1つ以上のプログラム可能な領域記述子が前記有効な変換ポリシーを有する場合、それを示す信号を第4ポートを介して生成する手段と、を有するプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットを備えることを特徴とする装置。
  5. PMTRPユニットの第1セットの少なくとも2つのプログラム可能な領域記述子の少なくとも1つのプログラム可能な領域記述子は、
    1つ以上のプロセッサコア上で走るソフトウェアのために発行される実行可能なコードメモリ転送リクエストに関連する少なくとも1つのパーミッションフィールドと、1つ以上のプロセッサコア上で走るソフトウェアのために発行されるデータメモリ転送リクエストに関連する少なくとも1つのパーミッションフィールドと、を有することを特徴とする請求項4に記載の装置。
  6. ターゲットポートであり、第1インターコネクトから第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を受信することに適用する第1ポートと、
    第1インターコネクトではない第2インターコネクトに第2アドレス空間に関連するメモリ転送リクエストを送信し、メモリ転送応答を受信することに適用する第2ポートと、
    第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つのキャッシュされた領域記述子を備えるプログラム可能なコンフィギュレーションデータと、
    第2ポートでセットのキャッシュされた領域記述子である少なくとも1つのメモリ転送リクエストを生成して送信し、少なくともNセットの少なくとも2つの領域記述子にアクセスし、対応する応答を受信し、前記受信した領域記述子をキャッシュする手段と、
    処理時間において第2ポートでアクセス可能なNセットの少なくとも2つの領域記述子の第1セットにおいてコード化されるポリシーに従って第1ポート上で受信されるメモリ転送リクエストを処理する手段と、
    Nセットの少なくとも2つの領域記述子の第1セットに格納されるように前記受信されたメモリ転送リクエストに関連する少なくとも1つのポリシーに一致する第1ポート上で受信するメモリ転送リクエストに応答して第2ポート上でメモリ転送リクエストを生成して送信する手段と、を有するプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットを備え、
    Nの値は少なくとも1であることを特徴とする装置。
  7. Nの値は少なくとも2であり、PMTRPユニットはさらに、
    第1ポートの第1アドレス空間を少なくとも2つの連続した領域に分割し、
    第1アドレス空間の少なくとも2つの連続した領域の各領域に対して、前記領域を第2ポートでアクセス可能なNセットの少なくとも2つの領域記述子の異なるセットとプログラム的に関連させる手段を備えることを特徴とする請求項6に記載の装置。
  8. Nセットの少なくとも2つのPMTRPユニットの領域記述子の各セットに対して、
    前記セットにおけるすべての領域記述子は同じタイプであり、
    すべての領域記述子のタイプは、固定長ページを備えるページ記述子、可変長ページを備えるページ記述子、セグメント記述子、トランスレーション・ルックアサイド・バッファ記述子、領域記述子、プログラム可能なメモリアドレス変換ポリシーで適用された領域記述子の1つから選択され、
    Nセットの少なくとも2つのPMTRPユニットの領域記述子の少なくとも2セットは異なるタイプの領域記述子を有することを特徴とする請求項6に記載の装置。
  9. Nセットの少なくとも2つのPMTRPユニットの領域記述子の各セットに対して、
    前記セットにおけるすべての領域記述子は同じタイプであり、
    すべての領域記述子のタイプは、固定長ページを備えるページ記述子、可変長ページを備えるページ記述子、セグメント記述子、トランスレーション・ルックアサイド・バッファ記述子、範囲記述子、プログラム可能なメモリアドレス変換ポリシーで適用された範囲記述子の1つから選択され、
    Nセットの少なくとも2つのPMTRPユニットの領域記述子の少なくとも2セットは異なるタイプの領域記述子を有することを特徴とする請求項7に記載の装置。
  10. PMTRPユニットはさらに、
    第2ポートで少なくとも1つのメモリ転送リクエストを生成して送信し、対応する応答を受信することにより、それぞれが少なくとも2つの領域記述子を含む少なくとも1つの領域記述子のキャッシュにアクセスする手段と、
    処理時間において第2ポートでアクセス可能な少なくとも1つの領域記述子のキャッシュの1つにおいてコード化されるポリシーに一致して第1ポート上で受信するメモリ転送リクエストを処理する手段と、
    処理時間において第2ポートでアクセス可能な少なくとも1つの領域記述子のキャッシュの1つにおいてコード化されるポリシーに一致して第1ポート上で受信されるメモリ転送リクエストに応答してメモリ転送リクエストを第2ポート上で生成して送信する手段と、を備えることを特徴とする請求項9に記載の装置。
  11. PMTRPユニットはさらに、
    少なくとも2つの領域記述子のキャッシュにアクセスする手段と、
    第1ポートの第1アドレス空間を少なくとも2つの連続する領域に分割することと、
    各それらの少なくとも2つの連続する領域を第2ポートでアクセス可能な少なくとも2つの領域記述子のキャッシュの1つをプログラム的に関連付ける手段と、を備えることを特徴とする請求項10に記載の装置。
  12. PMTRPユニットはさらに、
    第2インターコネクトではない第3インターコネクトに第3アドレス空間に関連するメモリ転送リクエストを送信し、メモリ転送を受信することに適用する第3ポートと、
    処理時間において第3ポートでアクセス可能な少なくともNセットのプログラム可能な領域記述子の1セットにおいてコード化されるポリシーに一致する第1ポート上で受信されるメモリ転送リクエストを処理する手段と、
    処理時間において第3ポートでアクセス可能な少なくともNセットのプログラム可能な領域記述子の1セットにおいてコード化されるポリシーに一致する第1ポート上で受信されるメモリ転送リクエストに応答してメモリ転送リクエストを第2ポート上で生成して送信する手段と、を備えることを特徴とする請求項7または10に記載の装置。
  13. ターゲットポートであり、Nのパーティションに細分化され、範囲がMキバイトである第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を受信することに適用する第1ポートと、
    マスタポートであり、範囲がOキバイトである第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
    それぞれが第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化し、すべてが同じタイプの領域記述子であり、前記タイプの領域記述子を少なくとも8の異なるページ長のサポートを備えるページ記述子および少なくとも16の異なる割り当てられたセグメント長のサポートを備えるセグメント記述子の1つから選択され、少なくともNが異なる第1アドレス空間のNパーティションの1つに関連する少なくともNの領域記述子と、
    処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信する第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、
    処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信する第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、を有するプログラム可能なメモリ転送リクエスト処理(PMTRP)ユニットを備え、
    Mの値は少なくとも1024であり、
    Nの値は少なくとも2であり、16384より小さく、
    Oの値は少なくとも1であることを特徴とする装置。
  14. PMTRPユニットはさらに、
    ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信する第3ポートと、
    少なくともNの領域記述子の少なくとも1つの部分にアクセスする有効なメモリロケーションに向けられた第3ポート上で受信された正しい形式のメモリ転送リクエストを処理する手段と、
    第3ポート上でメモリ転送応答を送信することにより少なくともNの領域記述子の少なくとも1つの部分にアクセスするメモリロケーションに向けられる第3ポート上で受信する正しい形式の読み取りメモリ転送リクエストに応答する手段と、を備えることを特徴とする請求項13に記載の装置。
  15. ターゲットポートであり、第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適応する第1ポートと、
    それぞれに対してタイプが、固定長ページを備えるページ記述子、可変長ページを備えるページ記述子、セグメント記述子、トランスレーション・ルックアサイド・バッファ記述子、プログラム可能なメモリアドレス変換ポリシーで適用した領域記述子の5つのタイプの1つから選択される、第1アドレス空間の領域に関連する少なくとも1つのポリシーをコード化する少なくとも1つの領域記述子と、
    マスタポートであり、第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、
    ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
    少なくとも1つの領域記述子の少なくとも1つの部分に関連する第3アドレス空間においてメモリロケーションに向けられた第3ポート上で受信される正しく形成されるメモリ転送リクエストを処理する手段と、を備える第1プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニット(第1PMTRPユニット)と、
    第1PMTRPユニットとは独立した構成であって、
    ターゲットポートであり、第1アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を受信することに適用する第1ポートと、
    第1ポート上で1つ以上のメモリ転送リクエストで受信される領域記述子においてコード化される少なくとも1つのポリシーの少なくとも1つをどのように転送するかについて少なくとも1つのポリシーをコード化する、第1アドレス空間の領域に関係する少なくとも1つのポリシーをコード化する少なくとも1つの記述子を備えるプログラム可能なコンフィギュレーションデータと、
    マスタポートであり、第2アドレス空間に関連するメモリ転送リクエストを送信し、対応するメモリ転送応答を受信することに適用する第2ポートと、
    処理時間においてプログラム可能なコンフィギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストを処理する手段と、
    処理時間においてプログラム可能なコンフイギュレーションデータにおいてコード化される第1アドレス空間に関連する少なくとも1つのポリシーに一致する第1ポート上で受信される第1アドレス空間に関連するメモリ転送リクエストに応答して第2アドレス空間に関連するメモリ転送リクエストを第2ポート上で生成して送信する手段と、
    ターゲットポートであり、プログラム可能なコンフィギュレーションデータの部分にアクセスするために第3アドレス空間に関連するメモリ転送リクエストを受信し、対応するメモリ転送応答を送信することに適用する第3ポートと、
    少なくとも1つの記述子の少なくとも1つの部分に関連する第3アドレス空間においてメモリロケーションに向けられた第3ポート上で受信される正しく形成されるメモリ転送リクエストを処理する手段と、を備える第2プログラム可能なメモリ転送リクエスト処理(PMTRP)ユニット(第2PMTRPユニット)と、を備え、
    第2PMTRPユニットの第2ポートは第1PMTRPユニットの第3ポートに接続されていることを特徴とする装置。
JP2018510006A 2015-04-07 2016-04-07 プログラム可能なメモリ転送リクエストユニット Active JP6981662B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2015901247 2015-04-07
AU2015901247A AU2015901247A0 (en) 2015-04-07 Efficient memory management and cache subsystems
PCT/IB2016/051969 WO2016162817A1 (en) 2015-04-07 2016-04-07 Programmable memory transfer request units

Publications (2)

Publication Number Publication Date
JP2018523247A JP2018523247A (ja) 2018-08-16
JP6981662B2 true JP6981662B2 (ja) 2021-12-15

Family

ID=57072234

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018510006A Active JP6981662B2 (ja) 2015-04-07 2016-04-07 プログラム可能なメモリ転送リクエストユニット

Country Status (12)

Country Link
US (1) US10223306B2 (ja)
EP (1) EP3281118A1 (ja)
JP (1) JP6981662B2 (ja)
KR (1) KR101891686B1 (ja)
CN (1) CN107995978B (ja)
AU (1) AU2016245421B2 (ja)
CA (1) CA2982871A1 (ja)
MA (1) MA41915A (ja)
MY (1) MY188909A (ja)
RU (1) RU2690751C2 (ja)
SG (1) SG11201708200XA (ja)
WO (1) WO2016162817A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MA41915A (fr) * 2015-04-07 2018-02-13 Benjamin Gittins Unités de requête de transfert de mémoire programmable
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10613989B2 (en) * 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10909046B2 (en) 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
GB2575877B (en) * 2018-07-27 2021-06-09 Advanced Risc Mach Ltd Memory protection unit using memory protection table stored in memory system
CN113805813B (zh) * 2018-11-30 2024-07-16 北京忆芯科技有限公司 降低读命令处理延迟的方法与装置
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US11003588B2 (en) * 2019-08-22 2021-05-11 Advanced Micro Devices, Inc. Networked input/output memory management unit
US11520705B1 (en) 2019-11-27 2022-12-06 Rockwell Collins, Inc. Input/output (I/O) memory management unit (IOMMU) multi-core interference mitigation
US11610102B1 (en) * 2019-11-27 2023-03-21 Amazon Technologies, Inc. Time-based memory allocation for neural network inference
GB2593486B (en) * 2020-03-24 2022-06-15 Advanced Risc Mach Ltd Apparatus and method using plurality of physical address spaces
US11281528B2 (en) * 2020-05-01 2022-03-22 EMC IP Holding Company, LLC System and method for persistent atomic objects with sub-block granularity
US11429528B2 (en) * 2020-11-19 2022-08-30 Micron Technology, Inc. Split cache for address mapping data
KR20230092151A (ko) * 2021-12-17 2023-06-26 삼성전자주식회사 스토리지 장치 및 이의 동작 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212597B1 (en) * 1997-07-28 2001-04-03 Neonet Lllc Apparatus for and method of architecturally enhancing the performance of a multi-port internally cached (AMPIC) DRAM array and like
EP1182558A1 (en) * 2000-08-21 2002-02-27 Texas Instruments Incorporated MME descriptor having big/little endian bit to control the transfer data between devices
EP1296237A1 (en) * 2001-09-25 2003-03-26 Texas Instruments Incorporated Data transfer controlled by task attributes
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US20110153877A1 (en) * 2009-12-23 2011-06-23 King Steven R Method and apparatus to exchange data via an intermediary translation and queue manager
US20120061700A1 (en) * 2010-09-09 2012-03-15 Andreas Eder Method and system for providing a reliable light emitting diode semiconductor device
US9405700B2 (en) * 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US9058275B2 (en) * 2011-06-10 2015-06-16 International Business Machines Corporation Data returned responsive to executing a start subchannel instruction
US20130111168A1 (en) * 2011-10-27 2013-05-02 Freescale Semiconductor, Inc. Systems and methods for semaphore-based protection of shared system resources
US10452580B2 (en) * 2013-03-26 2019-10-22 Vmware, Inc. Method and system for providing remote direct memory access to virtual machines
US9274951B2 (en) * 2013-05-31 2016-03-01 Altera Corporation Cache memory controller for accelerated data transfer
MA41915A (fr) * 2015-04-07 2018-02-13 Benjamin Gittins Unités de requête de transfert de mémoire programmable

Also Published As

Publication number Publication date
SG11201708200XA (en) 2017-11-29
JP2018523247A (ja) 2018-08-16
CN107995978B (zh) 2021-06-18
AU2016245421A1 (en) 2017-11-23
AU2016245421B2 (en) 2020-09-17
MA41915A (fr) 2018-02-13
MY188909A (en) 2022-01-13
WO2016162817A1 (en) 2016-10-13
EP3281118A1 (en) 2018-02-14
CN107995978A (zh) 2018-05-04
RU2017138467A3 (ja) 2019-05-07
KR101891686B1 (ko) 2018-08-27
US20180129620A1 (en) 2018-05-10
US10223306B2 (en) 2019-03-05
RU2690751C2 (ru) 2019-06-05
RU2017138467A (ru) 2019-05-07
KR20180016982A (ko) 2018-02-20
CA2982871A1 (en) 2016-10-13

Similar Documents

Publication Publication Date Title
JP6981662B2 (ja) プログラム可能なメモリ転送リクエストユニット
EP2202643B1 (en) Methods and apparatus for providing user level DMA and memory access management
KR101179341B1 (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
US7613898B2 (en) Virtualizing an IOMMU
AMD et al. Technology (IOMMU) specification
US20130145055A1 (en) Peripheral Memory Management
US20130262736A1 (en) Memory types for caching policies
US20050144422A1 (en) Virtual to physical address translation
US20130145051A1 (en) Direct Device Assignment
WO2013081884A1 (en) Efficient memory and resource management
US11392492B2 (en) Memory management apparatus and method for compartmentalization using linear address metadata
EP3757799B1 (en) System and method to track physical address accesses by a cpu or device
US11409662B2 (en) Apparatus and method for efficient process-based compartmentalization
CN111164581A (zh) 用于修补页的系统、方法和装置
WO2018189511A1 (en) Cache-based communication between execution threads of a data processing system
CN114207596A (zh) 将中断从输入-输出存储器管理单元提供到访客操作系统
US20240320161A1 (en) Apparatuses, methods, and systems for a device translation lookaside buffer pre-translation instruction and extensions to input/output memory management unit protocols
TWI791086B (zh) 在資料處理設備中的位址轉換
WO2023064590A1 (en) Software indirection level for address translation sharing
CN118843857A (zh) 用于存储器地址空间的页面的“读值只有x”性质
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180508

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190401

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210301

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211111

R150 Certificate of patent or registration of utility model

Ref document number: 6981662

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250