JPH0916462A - データ処理装置および処理方法 - Google Patents

データ処理装置および処理方法

Info

Publication number
JPH0916462A
JPH0916462A JP7312965A JP31296595A JPH0916462A JP H0916462 A JPH0916462 A JP H0916462A JP 7312965 A JP7312965 A JP 7312965A JP 31296595 A JP31296595 A JP 31296595A JP H0916462 A JPH0916462 A JP H0916462A
Authority
JP
Japan
Prior art keywords
subsection
main section
memory address
address
data processing
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.)
Granted
Application number
JP7312965A
Other languages
English (en)
Other versions
JP3605205B2 (ja
Inventor
Simon C Watt
チャールズ ワット サイモン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of JPH0916462A publication Critical patent/JPH0916462A/ja
Application granted granted Critical
Publication of JP3605205B2 publication Critical patent/JP3605205B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Abstract

(57)【要約】 【課題】 メモリマネジメントユニットにより制御され
るアドレス空間を有するデータ処理システムを提供す
る。 【解決手段】 アドレス空間がメインセクション(チャ
ンク)およびサブセクション(グレイン)へ分割して処
理される。グレインは選定数のサイズの1つとして構成
することができる。グレインサイズとは無関係に、各チ
ャンク内に固定数のグレインがある。1バンクのグレイ
ンレジスタ20が各グレインに対するアクセスコントロ
ールパラメータを記憶する。動作に関して、メモリアド
レスva[31:0]がデコードされどのチャンクにそ
れが関連するかが確認されてそのチャンクに対するグレ
インサイズを決定することができる。グレインサイズが
決定されると、残りのアドレスをデコードしてアドレス
が位置するグレインを選別することができ次にそのグレ
インに対するアクセスコントロールパラメータが回復さ
れる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はデータ処理の分野に
関する。特に、本発明はデータメモリのさまざまな部分
へのアクセスを制御するメモリマネジメントコントロー
ラを有するデータ処理システムに関する。
【0002】
【従来の技術】データメモリのさまざまな部分へのアク
セスを制御するメモリマネジメントコントローラ/メモ
リマネジメントユニット/MMUを組み込んだデータ処
理システムを提供することが知られている。所望しない
限り別のタスクからのデータを変更することができない
ようにタスクを分離することが望ましいマルチタスク処
理システムにおいてこのようなメモリマネジメントユニ
ットは特に有用である。これにより1つのタスク内の問
題が別のタスクへ広がってそれを改変することが抑制さ
れるため信頼度が高まる。
【0003】代表的なメインフレームコンピュータにつ
いてこのような保護を実施する場合、どのタスクが物理
的メモリのどのエリアへのアクセスを有するかを定義す
るデータが中央処理装置の外部のランダムアクセスメモ
リに保持することができるページテーブル定義に記憶さ
れる。また、(アドバンストRISCマシン社製)AR
M600等の集積回路にオンチップメモリマネジメント
ユニットを組み込むことができる。このようなオンチッ
プ法ではメモリマネジメントユニットデータへのオフチ
ップアクセスの必要性を回避することにより動作速度が
増し中央処理装置コアを備えた集積回路の外部にデータ
メモリを付加することによる複雑化や費用の問題が回避
される。中央処理装置コアを備えた集積回路の外部に付
加回路素子を設ける必要性を回避することはサイズおよ
び費用が重要となる埋込コントローラ等の応用において
特に重要である。
【0004】メモリマネジメントユニットの設計におけ
る重要な要因はメモリアクセスを制御することができる
アドレスリゾルーションである。例えば、システムのデ
ータメモリは4kバイトセクションへ分割することがで
き、4kバイトセクション内の各アドレスへのアクセス
は共通ベースで管理される、すなわち、各セクションに
ついてそのセクションへのアクセスを有するタスクと提
供されるアクセスのタイプとは別々に定義される。した
がって、データメモリの各4kバイトセクションについ
て1組のアクセスコントロールパラメータを記憶する必
要がある。
【0005】データメモリを独立に管理することができ
る小さいサイズのセクションへ分割することによりデー
タメモリへのアクセス制御に高度のアドレスリゾルーシ
ョンを提供することが望ましい場合もある。例えば、デ
ータメモリが直接マッピングされた入出力位置もしくは
別々に処理すべきクリティカルコントロールパラメータ
を記憶するメモリセクションを表す場合にこのような小
ブロックが適切である。このような状況に対処するには
256バイトのセクションを有するリゾルーションとす
ることが望ましい。
【0006】これとは対照的に、(例えば、プリンタ内
のデータを定義するフォント等の)固定プログラム命令
すなわちデータを記憶するリードオンリメモリへのアク
セスの場合には、関連する大量のデータは粗いレベルの
リゾルーションで制御できればよい。この場合、4Mバ
イトセクションでアクセスを制御するのが適切である。
【0007】このような競合要求に対処する従来の方法
はメモリマネジメントユニットにシステムの全アドレス
空間内で所望される最小セクションサイズに対処できる
リゾルーションを持たせることである、すなわち、いく
つかのエリアを256バイトの細密なアドレスリゾルー
ションで制御する必要がある場合、全アドレス空間がこ
のようなリゾルーションで制御される。その結果、全ア
ドレス空間に対するアクセスコントロールパラメータを
保持するのに大量の記憶装置を必要とするという不利を
招くことになる。大量のアクセスコントロールパラメー
タを記憶する必要性により必要な集積回路のサイズが増
大するという不利を招くアクセスコントロールパラメー
タのオンチップ記憶の場合特にそうである。集積回路の
サイズが増大すると(製造歩留りの低減により)集積回
路のコストが増大しかつ(特に、回路サイズを低減する
ためにダイナミックメモリセルが使用される場合、付加
回路素子を駆動する必要があるため)回路の消費電力が
増大する。
【0008】
【発明が解決しようとする課題】本発明はシステム全体
のアクセスコントロールパラメータを処理するのに必要
なデータ記憶装置の量を増大する不利を招くことなく別
々に制御することができるデータメモリセクションのサ
イズの細密なアドレスリゾルーションの可能性を提供す
る問題に関連している。
【0009】
【課題を解決するための手段】本発明の1つの局面から
データ処理装置が提供され、該装置は、(i)データメ
モリのアドレス空間内の各メモリアドレスにデータ語を
記憶するデータメモリと、(ii)前記データメモリ内
の特定のメモリアドレスに記憶されたデータ語へのアク
セス要求を発生する手段と、(iii)前記アクセス要
求の処理を制御するメモリマネジメントコントローラ
と、を具備し、(iv)前記メモリマネジメントコント
ローラは前記アドレス空間を複数の固定サイズメインセ
クションへ分割し、各メインセクションは固定数のサブ
セクションを含みサブセクションサイズはメインセクシ
ョン内で一定であって各メインセクションに対して独立
に設定され、(v)前記メモリマネジメントコントロー
ラは各サブセクションに対して1つ以上のアクセスコン
トロールパラメータを記憶し、サブセクションの前記ア
クセスコントロールパラメータは前記メモリマネジメン
トコントローラにより使用されて前記サブセクション内
の特定のメモリアドレスへのアクセス要求の処理が制御
される。
【0010】本発明は各メインセクション内に固定数の
可変サイズサブセクションを設けることにより複雑さを
増すという不利を招くことなく1つのアドレス空間内に
アクセスコントロールの広範に異なるリゾルーションを
提供できると認識するものである。この方法により、メ
インセクション内の固定数のサブセクションに対して小
さいサブセクションサイズを使用すると、そのメインセ
クション内のアドレス空間の大きいエリアが全サブセク
ションの外側となって有効にアンマップされることを理
解されたい。システム内でのこのような連続性の欠如は
フィールド内のトレンドと衝突する。しかし、メインセ
クション内に固定数のサブセクションを設けると各メイ
ンセクションに対してどのリゾルーションが選択される
かに無関係にシステムが必要とするアクセスコントロー
ルパラメータの数は一定となる。そのため細密なリゾル
ーションが選定される場合にアクセスコントロールパラ
メータに必要な大量の記憶装置が回避される。メモリマ
ップの不連続性は通常欠点と見なされるが、アドレスが
広がるトレンドにより利用可能なアドレス空間が大きく
増大すれば、アドレス空間の浪費と見なされるものは問
題とはならない。
【0011】本発明は(例えば、構成が固定された埋込
コントローラのように)システムの製作中に各メインセ
クション内のサブセクションのサイズが一定であるよう
な状況で使用することができるが、各々が各メインセク
ションに対するサブセクションサイズを定義するデータ
を記憶する複数のメインセクションレジスタを具備する
実施例により(例えば、インストールされるRAMサイ
ズのさまざまなオプション等の)システム構成の変化に
対処する柔軟性が高められる。
【0012】サブセクションサイズを定義するデータを
メインセクションレジスタ内に記憶することにより一層
容易に変更できるようになる。
【0013】アクセス要求を発生する手段は(例えば、
ディスクドライブコントローラからのアクセス要求等
の)任意数の形式をとることができることを理解された
い。しかし、前記アクセス要求を発生する手段が中央処
理装置コアを具備する実施例に使用するのに本発明は特
に適している。
【0014】前記したように、サブセクションサイズを
定義するデータを記憶するためのメインセクションレジ
スタを設けることができる。これらのメインセクション
レジスタは、主要なハードウェアを再設計することなく
サブセクションサイズの構成を変化することができるよ
うに、ディップスイッチ等の、固定ハードウェアエレメ
ントにより書き込むことができる。しかし、実施例では
サブセクションサイズを定義する前記データはプログラ
ム命令制御の元で前記メインセクションへ書き込まれ
る。
【0015】プログラム制御の元でメインセクションレ
ジスタへデータを書き込むことによりユーザは僅かな努
力でシステムの構成において高度の柔軟性を有利に得る
ことができる。
【0016】プログラム制御の元でメインセクションレ
ジスタへ書き込むことができるようにする際の問題点は
プログラム内のバグにより当面の物理的ハードウェア構
成を表さない不適切なデータがこれらのメインセクショ
ンレジスタへ書き込まれる可能性があることである。メ
インセクションレジスタ内のデータはシステム全体の動
作にとって重要でありデータのこのような改変により重
大問点およびデータ損失を生じることがある。
【0017】この可能性を低減するために、実施例には
前記中央処理装置コアとのコプロセッサが含まれてお
り、前記メインセクションレジスタの書き込みは前記コ
プロセッサにより実行されるプログラム命令の制御の元
で行われる。
【0018】中央処理装置コアではなくコプロセッサが
メインセクションレジスタへの書き込みを行えるように
することによりメインセクションレジスタデータが改変
される可能性が低減される。コプロセッサは一般的に命
令の明確に定義されたサブセットしか演算しないため、
その演算におけるバグおよびメインセクションレジスタ
への不適切な書き込みを行う可能性が低くなる。
【0019】アドレス空間を分割する簡単で有利な方法
は前記特定のメモリアドレス内の固定位置を有する1つ
以上のメインセクションビットにより前記特定のメモリ
アドレスを含むメインセクションを定義することであ
る。
【0020】当該メインセクションへマップするこのよ
うな固定位置メインセクションビットを有することによ
り特定のメモリアドレスを簡単にデコードして当該メイ
ンセクションしたがってこのメモリアドレスに対するサ
ブセクションサイズを決定することができる。
【0021】前記特定のメモリアドレス内の可変位置を
有する1つ以上のサブセクションビットを与えて前記特
定のメモリアドレスを含むサブセクションを定義するこ
とが好ましい。サブセクションのサイズが変動する場合
には、このような可変位置サブセクションビットにより
サブセクションは各メインセクションのアドレス空間内
で隣接配置することができる。
【0022】サブセクションビットが特定のメモリアド
レス内で位置が変動する場合には、前記特定のメモリア
ドレスを含むメインセクションに対するサブセクション
サイズに応じて前記特定のメモリアドレス内から前記デ
コードするサブセクションビットを選定するためのバレ
ルシフタが特に効率的な実施例により提供される。
【0023】サブセクションサイズに応じてサブセクシ
ョンビットの高速選定を行うのにバレルシフターは特に
適している。
【0024】メモリマネジメントコントローラにより利
用されるアクセスコントロールパラメータはプログラム
実行中に修正できることが望ましい比較的ダイナミック
なデータである。したがって、実施例により各々が各サ
ブセクションに対する前記1つ以上のアクセスコントロ
ールパラメータを記憶する複数のサブセクションレジス
タが提供される。
【0025】アクセスコントロールパラメータをダイナ
ミックに修正することができる最も簡便な方法は前記1
つ以上のアクセスコントロールパラメータがプログラム
命令制御の元で前記サブセクションレジスタへ書き込ま
れるようにすることである。
【0026】メインセクションレジスタ内に記憶される
データとは対照的に、サブセクションレジスタ内のデー
タはデバイスの構成にとって重要性は低く規則的に修正
される可能性が高い。したがって、前記中央処理装置コ
アにより実行されるプログラム命令の制御の元で前記サ
ブセクションレジスタへの書き込みを行うことが望まし
い。
【0027】前記サブセクションレジスタが前記メイン
セクションビットおよび前記サブセクションビットに応
答して前記特定のメモリアドレスに対する前記アクセス
コントロールパラメータを読み取るようにアドレスされ
る実施例において所与特定のメモリアドレスに対する適
切なサブセクションレジスタの選定を簡便に達成するこ
とができる。
【0028】前記したように、本発明によりシステムの
メモリマップへある程度の非連続性が導入される。した
がって、未定義エリアへメモリアクセスがなされるとい
う特有の危険性が存在する。この問題に対抗するため
に、実施例により任意のサブセクションの外側の特定の
メモリアドレスへのアクセス要求を検出するアボート信
号発生器が提供される。
【0029】サブセクションの可変サイズによりアドレ
ス空間のさまざまな部分がさまざまな構成において未定
義とされる場合には、前記メインセクションビットが前
記特定のメモリアドレスの最上位ビットとなり前記サブ
セクションビットは前記特定のメモリアドレスの下位ビ
ットとなる実施例とされ、前記メインセクションビット
および前記サブセクションビット間の前記特定メモリア
ドレスの任意のビットが設定されると前記アボート信号
発生器によりアボート信号が発生される。
【0030】ワイドなアドレスバスを有するプロセッサ
内の大量のアドレス空間により1つ以上のメインセクシ
ョンがリザーブされるシステムが提供される。このよう
なシステムでは、前記特定のメモリアドレスがリザーブ
されたメインセクション内にある場合に前記アボート信
号発生器がアボート信号を発生することが望ましい。
【0031】メモリマネジメントコントローラにより利
用されるアクセスコントロールパラメータは多くの形式
をとることができる。特に好ましいコントロールパラメ
ータはライト要求をライトバッファ内にバッファできる
かどうかを示すフラグ、ライト要求をキャッシュメモリ
へ書き込むことができるかどうかを示すフラグ、および
所与のサブセクションへ特定タイプのアクセスを行うの
にどのプロセッサ動作モードを許可すべきかを示すフラ
グを含んでいる。
【0032】本発明は個別回路部品として実現すること
ができる。しかし、前記したように、本発明は集積回路
を含む実施例に使用するのに特に適している。このよう
な実施例では、従来のメモリマネジメントユニットに較
べて回路面積の節減が非常に著しい。
【0033】本発明のもう1つの局面によりデータ処理
方法が提供され、該方法は、(i)データメモリのアド
レス空間内の各メモリアドレスにデータ語を記憶し、
(ii)前記データメモリ内の特定のメモリアドレスに
記憶されたデータ語へのアクセス要求を発生し、(ii
i)メモリマネジメントコントローラにより前記アクセ
ス要求の処理を制御する、ステップを含み、(iv)前
記メモリマネジメントコントローラにより前記アドレス
空間は複数の固定サイズメインセクションへ分割され、
各メインセクションは固定数のサブセクションを含みサ
ブセクションサイズはメインセクション内で一定であっ
て各メインセクションに対して独立に設定され、(v)
前記メモリマネジメントコントローラにより各サブセク
ションについて1つ以上のアクセスコントロールパラメ
ータが記憶され、サブセクションに対する前記アクセス
コントロールパラメータは前記メモリマネジメントコン
トローラにより使用されて前記サブセクション内の特定
のメモリアドレスへのアクセス要求の処理が制御され
る。
【0034】
【発明の実施の形態】図1に32ビットシステムに対す
るアドレス空間マップを示す。アドレス空間は8つの等
サイズメインセクションすなわちチャンクへ分割され
る。8つのチャンクはChunk0からChunk7ま
でである。本実施例では奇数番のチャンクはリザーブさ
れる。最上位メインセクション(Chunk0)はメモ
リアドレス00000000から1FFFFFFF(1
6進)までである、すなわち、32Mバイトである。
【0035】各チャンクは16のサブセクションすなわ
ちグレインを含んでいる。グレインサイズはチャンク間
で変動することがある、すなわちChunk0は256
バイトの各グレインを含むことができ、Chunk2は
1Mバイトのグレインを含んでいる。グレインはチャン
ク内の最下位アドレスから上へ連続的に伸びている。最
上位グレインの頂部境界はそのチャンクのグレインサイ
ズに従って位置が変動する。頂部グレインの最上位境界
とチャンク内の最上位アドレス間のアドレス空間エリア
は未使用かつ未保護である。
【0036】図2にChunk0を2つの代替構成で示
し、1つは256バイトグレインでありもう1つは1k
バイトグレインである。256バイトグレインの場合に
は、最下位グレインはアドレス00000000から0
00000FFまでである。他のグレインはメモリ位置
00000FFFにおける最上位グレインの最上位アド
レスまで連続的に続く。このグレインサイズはここに記
載する特定実施例によりサポートされる最小グレインサ
イズである。他の実施例ではより小さいグレインサイズ
が可能である。小さいグレインサイズは入出力アドレス
空間に対処するメモリもしくは小型オンチップランダム
アクセスメモリのチャンクに適切である。
【0037】図2には各々が1kバイトのグレインサイ
ズを有するグレインにより構成されたChunk0であ
るアドレス空間の同じメインセクションも示されてい
る。この構成では、最下位グレインはアドレス0000
0000から000003FFまでである。最上グレイ
ン内の最上位アドレスはメモリアドレス00003FF
Fである。アドレス空間の00004000および1F
FFFFFF間のエリアは未使用かつ未保護である。
【0038】図3にメモリマネジメントユニットの一部
を示す。全体機能レベルにおいて、メモリマネジメント
ユニットは特定のアドレスva[31:0]を受信し当
該アクセスがバッファ可能か、キャッシュ可能か、もし
くはアボートすべきか、を示す信号をそのアドレスへ戻
す。これを達成するために、メモリマネジメントユニッ
トはデータ処理システムの状態を示すいくつかの入力も
要求しこのような状態変数に依存する適切な出力を発生
する。
【0039】仮想アドレスva[31:29]の最上位
3ビットにより仮想アドレスのあるチャンクが指定され
る。これらの3ビットは有効なチャンクのいずれがアク
セスされているかを示す4ビット出力もしくは3ビット
が図1に示すアドレス空間の1つのリザーブされたセク
ション内のアドレスを示す場合のチャンクアボート信号
を発生するように働くチャンクデコーダ10へ入力され
る。有効なチャンクがアクセスされているものとする
と、チャンクデコーダ10から出力されるビットの1つ
がハイとなる。これにより各々がそのチャンクに対する
グレインサイズを示す3ビットコードを記憶する4つの
チャンクレジスタ12の中の1つが選定される。選定さ
れたチャンクレジスタ12に記憶されている3ビットコ
ードはグレインデコーダ14へ通される。
【0040】グレインデコーダ14はアクセスされるチ
ャンクのグレインサイズを指定するその3ビット入力を
取り込んでマッピングしその出力である8ビットライン
の1つをロー値となるように制御する。グレインデコー
ダ14からの残りの7ビットライン出力はハイのままで
ある。さまざまな3ビットチャンクレジスタコードをそ
の対応するグレインサイズと共に表1に示す。
【0041】
【表1】
【0042】グレインデコーダ14からの出力はバレル
シフタ16へ送られる。ロー値を有するグレインデコー
ダ14からのビットライン出力は当該ビットラインに一
緒に接続されたゲートを有するバレルシフタ16内の4
個の電界効果型トランジスタをオン(すなわち、導電)
とする。特定アドレスva[25:8]の18ビットが
入力としてバレルシフタ16へ送られる。バレルシフタ
16はこれらの18ビットの中から4ビットを出力とし
て選定する。どの4ビットを選定するかはグレインデコ
ーダ14からのどのビット出力がローであるかによって
決まる。
【0043】表1にグレインサイズが記載されており、
選定される4ビットはアクセスされるアドレスに対する
グレイン番号(Grain#)を表す。256バイトの
グレインサイズについて考える。この場合、16のグレ
インにより占有される各チャンク内のアドレス空間はア
ドレスビットva[11:0]に対応するものである。
これらのアドレスビットのうち、4ビットva[11:
8]は16グレインのうちアドレスがその中にあるもの
を表し、8ビットva[7:0]は当該グレイン内の特
定のメモリ位置を表す。したがって、バレルシフタ16
により4ビットva[11:8]がグレイン番号として
選定される。
【0044】前記したオペレーションにより当該アドレ
スを含むチャンクを指定する4ビット出力がチャンクデ
コーダ10から発生され、当該グレインを与える4ビッ
トグレイン番号がバレルシフタ16から発生される。し
たがって、メモリアドレス空間内の全てのグレインの中
から、個別のグレインが識別されている。チャンクデコ
ーダ10からの4ビットおよびバレルシフタ16からの
4ビットが、1ブロックのグレインレジスタ20内の6
4個の4ビットレジスタから適切な1個を選定する、レ
ジスタセレクタ18へ入力される。グレインレジスタブ
ロック20内の各4ビットレジスタが当該メモリのグレ
インに対するアクセスコントロールパラメータを表す4
ビットデータを記憶している。1ビットはそのグレイン
内のデータがバッファ可能であるかを示し、1ビットは
そのグレイン内のデータがキャッシュ可能であるかを示
し、2ビットap[1:0]はそのグレイン内のデータ
へアクセスするのにシステムがどの動作モードでなけれ
ばならないかを指定するのに使用されるフラグである。
データがキャッシュ可能であるかバッファ可能であるか
を示すフラグはメモリマネジメントユニットから直接出
力される。フラグap[1:0]はモードデコーダ22
へ送られてさらに処理される。
【0045】モードデコーダ22は他にもいくつかのフ
ラグ入力を受信する。チャンクデコーダ10からのチャ
ンクアボート信号は特定アドレスva[31:0]がア
ドレス空間のリザーブされたチャンク内にあるかどうか
を示す。フラグspvはプロセッサが現在スーパーバイ
ザモードで作動しているかどうかを示す。フラグwNr
はアクセスがリードアクセスであるかライトアクセスで
あるかを示す。フラグsおよびrがコプロセッサにより
設定されてモードデコーダ22への他方の入力の処理方
法を修正する能力がユーザへ提供される。表2にモード
デコーダ22への入力をモードデコーダからのアボート
信号出力へマッピングする様子を示す。
【0046】
【表2】
【0047】表2にはチャンクアボート信号は含まれな
い。このチャンクアボート信号は他の入力から得られる
結果とORされて全体アボート信号出力が発生される。
【0048】グレインサイズを定義するチャンクレジス
タ12の内容がコプロセッサの制御の元で汎用システム
データバスCdata[31:0]を介して設定され
る。グレインサイズはシステム構成の機能でありパワー
アップによるシステムの初期化時のみ設定すればよい。
この機能を実施するコプロセッサを使用すれば主中央処
理装置コアが誤動作中にこれらの値を改変する可能性が
低減される。
【0049】これに対して、グレインレジスタ20に記
憶されたアクセスコントロールパラメータは中央処理装
置コアで実行されるプログラム命令によって変化し作動
中にも変化することがある。したがって、グレインレジ
スタ20内に記憶されるアクセスコントロールパラメー
タは中央処理装置コアの制御の元で汎用データバスCd
ata[31:0]を介して設定される。
【0050】32ビットメモリアドレス内のビットを使
用してグレインサイズを変える様子を図4に示す。例A
は1kバイトグレインの場合を示す。この場合、0−9
ビットはグレイン内のアドレスを表す。13−10ビッ
トはグレイン番号を表す、すなわち、図3のバレルシフ
タ16により選定され出力されるのは13−10ビット
である。最上位3ビット、31−29ビット、はチャン
ク番号を表す。28−14ビットはそのグレインサイズ
を有する各チャンク内のグレイン外側のアドレス空間を
表し未使用未保護アドレス空間である。この未使用未保
護アドレス空間へアクセスしようとする試みは検出され
アボートとなる。
【0051】図4の例Bは1つのグレインが1Mバイト
のサイズを有する場合に対応する。この場合、19−0
ビットはグレインアドレスに対応し23−20ビットは
グレイン番号に対応する。チャンク番号はやはり最上位
3ビット、31−29ビット、により与えられる。
【0052】例Cは256バイトのグレインサイズに対
応する。この場合、7−0ビットがグレインアドレスに
対応し、11−8ビットがグレイン番号に対応し31−
29ビットがチャンク番号に対応する。
【0053】最後に、例Dは4Mバイトのグレインサイ
ズに対応する。この場合、グレインアドレスは21ビッ
トから0ビットまでであり、グレインアドレスは25−
22ビットの中にありチャンクアドレスはやはり31−
29ビット中にある。4Mバイトのグレインサイズは本
実施例でサポートされる最大サイズであるが(表1参
照)、チャンク内のアドレス空間はまだ完全には充填さ
れない。28−26ビットは未使用である。
【0054】図5に図3の回路の動作を示す。この場
合、それぞれ256バイト、1kバイトおよび256k
バイトのグレインサイズを有するチャンク0,2,4,
および6によりメモリが構成される。これはチャンクレ
ジスタ12内に記憶されたさまざまな3ビットコードを
反映している(表1参照)。
【0055】本実施例において、アドレス400039
BC(16進)へのアクセスが試みられる。このアドレ
ス(va[31:29])の最上位3ビットは010で
ある。これはChunk2に対応する。チャンクデコー
ダ10はこれらの3ビットをデコードして001の3ビ
ットコードをグレインデコーダ14へ出力するチャンク
レジスタ12の中の適切なレジスタへアクセスする。
【0056】グレインデコーダ14は3ビットコード0
01をデコードしてメモリアドレスva[13:10]
の4ビットに対応するビットラインをローとする。した
がって、これらの4ビットが全アドレスva[31:
0]から選別されバレルシフタ16の出力は4ビットグ
レイン番号1110を有するようになる。
【0057】チャンクデコーダ10の前記アクションお
よびグレインデコーダ14とバレルシフタ16の組合せ
アクションによりチャンク番号およびグレイン番号がレ
ジスタセレクタ18へ送られその(第2のチャンクに対
応する)第2のバンクからレジスタ番号E(16進)が
選出される。選定されたレジスタを黒で示す。次に選定
されたグレインレジスタからの4つのアクセスコントロ
ールパラメータが選定されたグレインレジスタから出力
される。モードデコーダ22が選定されたグレインレジ
スタからの2ビットap[1:0]を受信し他の入力と
共にデコードしてアボート信号を発生する。キャッシュ
可能およびバッファ可能フラグは選定されたグレインレ
ジスタから直接読み出される。
【0058】図6にメモリアドレス00000919
(16進)へのアクセスを示す。このアドレスはChu
nk0内にある。チャンクレジスタはChunk0に対
する3ビットグレインサイズコード000を保持してい
る。これはグレインデコーダ14によりデコードされて
バレルシフタ16がva[11:8]ビットをグレイン
番号として選定するようにされる。この場合、グレイン
番号の4ビットは1001である。レジスタセレクタ1
8はチャンク仕様およびグレイン仕様に応答して第1バ
ンクの16個のレジスタの中のChunk0に対応する
レジスタ9を選定する。
【0059】図7にアドレス830CE06Aへのアク
セスを示す。このアドレスはChunk4内にある。C
hunk4は4Mバイトのグレインサイズを有してい
る。このグレインサイズはグレインデコーダ14へ送ら
れる3ビットコード111により表される。グレインデ
コーダ14およびバレルシフタ16はグレイン番号を表
す4ビットva[25:22]を一緒に選定する。これ
らのビットは1100である。したがって、グレイン番
号およびチャンクによりグレインレジスタ20の第3バ
ンクからグレインレジスタC(16進)が選定される。
【0060】最後に、図8にアドレスC0078AF5
へのメモリアクセスを示す。このアドレスはChunk
6内にある。Chunk6のグレインサイズは256k
バイトである。したがって、グレイン番号はva[2
1:18]ビット、すなわち0001、として選定され
る。1グレイン以内ではしたがって、グレインレジスタ
20の第4バンクが選定される。
【0061】図9に集積回路24を示す。集積回路24
は中央処理装置コア26、メモリマネジメントユニット
28、内部データキャッシュ30、ライトバッファ32
およびコプロセッサ34を含んでいる。これらの機能ユ
ニットはデータバスCdata[31:0]、仮想アド
レスバスva[31:0]および物理的アドレスバスp
a[31:0]により連結されている。中央処理装置コ
ア26は仮想アドレスva[31:0]をメモリマネジ
メントユニット28へ通す。メモリマネジメントユニッ
トは図3、図5、図6、図7および図8に関して検討し
たように仮想アドレスva[31:0]を分析する。こ
の分析に応答して、メモリマネジメントユニット28は
キャッシュ可能信号C、バッファ可能信号Bおよびアボ
ート信号Aを出力する。キャッシュ可能信号Cは内部デ
ータキャッシュ30へ通される。バッファ可能信号Bは
ライトバッファ32へ通される。3つの信号は全て中央
処理装置コア26へ通される。
【0062】コプロセッサ34はデータバスCdata
[31:0]に接続されていて通常のコプレッシング機
能を実施しさらに初期化されるとシステムのグレインサ
イズ指定コードをチャンクレジスタ12へ書き込むこと
ができるようにされる。
【0063】図3に示すチャンクデコーダのチャンクア
ボート信号を発生するアクションにより実現されないチ
ャンクへのメモリアクセスの試みが検出されアボートさ
れる。
【0064】メモリマネジメントユニット28は仮想ア
ドレスの実アドレスへのマッピングも行う。
【0065】図10に有効チャンク内のグレインの最上
位アドレスとそのチャンクの頂部間のメモリアドレスへ
のメモリアクセスの試みを検出する機構を示す。このよ
うなメモリアクセスはグレイン番号の頂部とチャンク番
号の底部間で少なくとも1つのビットがハイであるメモ
リアドレスへのアクセスに対応する。チャンク番号の底
部は常にva[28]ビットでありグレインアドレスの
頂部は(256バイトグレインに対する)va[12]
ビットから(4Mバイトグレインに対する)va[2
6]ビットの間で2ビットステップ変化する。これらの
任意のビットの設定をORゲート36により検出するこ
とができる。各ビットはブランキング回路38を介して
ORゲート36へ送られる。現在検出されたグレインデ
コーダ14からのグレインサイズに応答して、これらの
各ブランキング回路38は16のグレイン内の有効なグ
レインアドレスビットに対応するビットの通過を阻止す
る。グレインアドレス空間の頂部よりも上のビットだけ
がORゲート36へ通すことを許される。これらのビッ
トのいずれかが設定されると、アボート信号が発生され
る。このアボート信号はチャンクデコーダ10からのチ
ャンクアボート信号およびモードデコーダ22からの任
意のアボート信号と共にORされて複合アボート信号が
発生される。
【0066】添付図を参照して本発明の実施例について
詳細に説明してきたが、本発明はこれらの精密な実施例
に限定はされず、当業者ならば特許請求の範囲に明記さ
れた本発明の範囲および精神を逸脱することなくさまざ
まな変更および修正が可能であると思われる。
【図面の簡単な説明】
【図1】32ビットアドレス空間のメモリマップを示す
図。
【図2】サイズの異なるサブセクションを有するアドレ
ス空間のメインセクションを示す図。
【図3】メモリマネジメントユニットの一部を示す図。
【図4】サイズの異なるサブセクションに対するアドレ
ス内のビット空間の配分を示す図。
【図5】サイズの異なるサブセクションを含むメインセ
クションを有する図3のシステムの動作を示す図。
【図6】サイズの異なるサブセクションを含むメインセ
クションを有する図3のシステムの動作を示す図。
【図7】サイズの異なるサブセクションを含むメインセ
クションを有する図3のシステムの動作を示す図。
【図8】サイズの異なるサブセクションを含むメインセ
クションを有する図3のシステムの動作を示す図。
【図9】メモリマネジメントユニットを含むさまざまな
機能ユニットを有する集積回路を示す図。
【図10】メインセクション内の最上位サブセクション
よりも上のアドレス空間のエリアへの有効なメモリアク
セスの試みを検出する機構を示す図。
【符号の説明】
10 チャンクデコーダ 12 チャンクレジスタ 14 グレインデコーダ 16 バレルシフタ 18 レジスタセレクタ 20 グレインレジスタ 24 モードデコーダ 26 中央処理装置コア 28 メモリマネジメントユニット 30 内部データキャッシュ 32 ライトバッファ 34 コプロセッサ 36 ORゲート 38 ブランキング回路

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 データ処理装置であって、 (イ)データメモリのアドレス空間内の各メモリアドレ
    スにデータ語を記憶するデータメモリと、 (ロ)前記データメモリ内の特定のメモリアドレスに記
    憶されたデータ語へのアクセス要求を発生する手段と、 (ハ)前記アクセス要求の処理を制御するメモリマネジ
    メントコントローラと、 を具備し、 (ニ)前記メモリマネジメントコントローラは前記アド
    レス空間を複数の固定サイズメインセクションへ分割
    し、各メインセクションが固定数のサブセクションを含
    みサブセクションのサイズはメインセクション内で一定
    であって各メインセクションについて独立に設定され、 (ホ)前記メモリマネジメントコントローラは各サブセ
    クションについて1つ以上のアクセスコントロールパラ
    メータを記憶しており、サブセクションに対する前記ア
    クセスコントロールパラメータは前記メモリマネジメン
    トコントローラにより使用されて前記サブセクション内
    の特定のメモリアドレスへのアクセス要求の処理が制御
    される、データ処理装置。
  2. 【請求項2】 請求項1記載の装置であって、該装置は
    各々が各メインセクションのサブセクションサイズを定
    義するデータを記憶する複数のメインセクションレジス
    タを具備する、データ処理装置。
  3. 【請求項3】 請求項1記載の装置であって、前記アク
    セス要求発生装置は中央処理装置コアを具備する、デー
    タ処理装置。
  4. 【請求項4】 請求項2記載の装置であって、サブセク
    ションサイズを定義する前記データはプログラム命令制
    御の元で前記メインセクションレジスタへ書き込まれ
    る、データ処理装置。
  5. 【請求項5】 請求項4記載の装置であって、前記中央
    処理装置コアとのコプロセッサを具備し、前記メインセ
    クションレジスタは前記コプロセッサにより実行される
    プログラム命令の元で書き込まれる、データ処理装置。
  6. 【請求項6】 請求項1記載の装置であって、前記特定
    のメモリアドレス内の固定位置を有する1つ以上のメイ
    ンセクションビットにより前記特定のメモリアドレスを
    含むメインセクションが定義される、データ処理装置。
  7. 【請求項7】 請求項1記載の装置であって、前記特定
    のメモリアドレス内の可変位置を有する1つ以上のサブ
    セクションビットにより前記特定のメモリアドレスを含
    むサブセクションが定義される、データ処理装置。
  8. 【請求項8】 請求項7記載の装置であって、該装置は
    前記特定のメモリアドレスを含むメインセクションに対
    するサブセクションに従って前記特定のメモリアドレス
    内からデコードする前記サブセクションを選定するバレ
    ルシフタを具備する、データ処理装置。
  9. 【請求項9】 請求項1記載の装置であって、該装置は
    各々が各サブセクションに対する前記1つ以上のアクセ
    スコントロールパラメータを記憶する複数のサブセクシ
    ョンレジスタを具備する、データ処理装置。
  10. 【請求項10】 請求項9記載の装置であって、前記1
    つ以上のアクセスコントロールパラメータはプログラム
    命令制御の元で前記サブセクションレジスタへ書き込ま
    れる、データ処理装置。
  11. 【請求項11】 請求項10記載の装置であって、前記
    アクセス要求発生手段は中央処理装置コアを具備し、前
    記サブセクションレジスタは前記中央処理装置コアによ
    り実行されるプログラム命令の制御の元で書き込まれ
    る、データ処理装置。
  12. 【請求項12】 請求項9記載の装置であって、前記特
    定のメモリアドレス内の固定位置を有する1つ以上のメ
    インセクションビットにより前記特定のメモリアドレス
    を含むメインセクションが定義され、前記特定のメモリ
    アドレス内の可変位置を有する1つ以上のサブセクショ
    ンビットにより前記特定のメモリアドレスを含むサブセ
    クションが定義され、前記サブセクションレジスタは前
    記メインセクションビットおよび前記サブセクションビ
    ットに応答して前記特定のメモリアドレスに対する前記
    アクセスコントロールパラメータを読み取るようにアド
    レスされる、データ処理装置。
  13. 【請求項13】 請求項1記載の装置であって、該装置
    は任意のサブセクションの外側の特定のメモリアドレス
    へのアクセス要求を検出するアボート信号発生器を具備
    する、データ処理装置。
  14. 【請求項14】 請求項13記載の装置であって、前記
    特定のメモリアドレス内の固定位置を有する1つ以上の
    メインセクションビットにより前記特定のメモリアドレ
    スを含むメインセクションが定義され、前記特定のメモ
    リアドレス内の可変位置を有する1つ以上のサブセクシ
    ョンビットにより前記特定のメモリアドレスを含むサブ
    セクションが定義され、前記メインセクションビットは
    前記特定のメモリアドレスの最上位ビットであり前記サ
    ブセクションビットは前記特定のメモリアドレスの下位
    ビットであり、前記アボート信号発生器は前記メインセ
    クションビットと前記サブセクションビットとの間の前
    記特定のメモリアドレスの任意のビットがセットされる
    場合にアボート信号を発生する、データ処理装置。
  15. 【請求項15】 請求項13記載の装置であって、1つ
    以上のメインセクションがリザーブされ、前記アボート
    信号発生器は前記特定のメモリアドレスがリザーブされ
    たメインセクション内にある場合にアボート信号を発生
    する、データ処理装置。
  16. 【請求項16】 請求項1記載の装置であって、該装置
    はライトバッファを具備し、前記1つ以上のアクセスコ
    ントロールパラメータは前記ライトバッファを経由して
    前記特定のメモリアドレスへのライト要求を送ることが
    できるかを示すフラグを含む、データ処理装置。
  17. 【請求項17】 請求項1記載の装置であって、該装置
    はキャッシュメモリを具備し、前記1つ以上のアクセス
    コントロールパラメータは前記特定のメモリアドレスへ
    のライト要求を前記キャッシュメモリ書き込むことがで
    きるかを示すフラグを含む、データ処理装置。
  18. 【請求項18】 請求項1記載の装置であって、前記1
    つ以上のアクセスコントロールパラメータは1つ以上の
    フラグを含みそれらは前記装置の現在の処理モードを示
    す1つ以上のモードビットと論理的に結合して前記アク
    セス要求の進行を許可すべきかを決定する、データ処理
    装置。
  19. 【請求項19】 請求項1記載の装置であって、前記装
    置は集積回路である、データ処理装置。
  20. 【請求項20】 データ処理方法であって、該方法は、 (イ)データメモリのアドレス空間内の各メモリアドレ
    スにデータ語を記憶するステップと、 (ロ)前記データメモリ内の特定のメモリアドレスに記
    憶されたデータ語へのアクセス要求を発生するステップ
    と、 (ハ)メモリマネジメントコントローラにより前記アク
    セス要求の処理を制御するステップと、を含み、 (ニ)前記メモリマネジメントコントローラは前記アド
    レス空間を複数の固定サイズメインセクションへ分割
    し、各メインセクションが固定数のサブセクションを含
    みサブセクションのサイズはメインセクション内で一定
    であって各メインセクションに対して独立に設定され、 (ホ)前記メモリマネジメントコントローラは各サブセ
    クションについて1つ以上のアクセスコントロールパラ
    メータを記憶し、サブセクションに対する前記アクセス
    コントロールパラメータは前記メモリマネジメントコン
    トローラにより使用されて前記サブセクション内の特定
    のメモリアドレスへのアクセス要求の進行が制御され
    る、データ処理方法。
JP31296595A 1995-06-23 1995-11-30 データ処理装置および処理方法 Expired - Fee Related JP3605205B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB95128609 1995-06-23
GB9512860A GB2302604B (en) 1995-06-23 1995-06-23 Data memory access control

Publications (2)

Publication Number Publication Date
JPH0916462A true JPH0916462A (ja) 1997-01-17
JP3605205B2 JP3605205B2 (ja) 2004-12-22

Family

ID=10776587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31296595A Expired - Fee Related JP3605205B2 (ja) 1995-06-23 1995-11-30 データ処理装置および処理方法

Country Status (3)

Country Link
US (1) US5802598A (ja)
JP (1) JP3605205B2 (ja)
GB (1) GB2302604B (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3766188B2 (ja) * 1997-08-22 2006-04-12 沖電気工業株式会社 論理フォーマット変換方法およびデータ保存媒体
US6088777A (en) * 1997-11-12 2000-07-11 Ericsson Messaging Systems, Inc. Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages
US6033955A (en) * 1998-09-23 2000-03-07 Advanced Micro Devices, Inc. Method of making flexibly partitioned metal line segments for a simultaneous operation flash memory device with a flexible bank partition architecture
US6496901B1 (en) * 1999-09-22 2002-12-17 Storage Technology Corporation Mapping variable size data blocks into a fixed block structure
GB2393270B (en) * 2002-09-19 2005-07-27 Advanced Risc Mach Ltd Executing variable length instructions stored within a plurality of discrete memory address regions
KR100528967B1 (ko) * 2002-12-18 2005-11-15 한국전자통신연구원 가변 길이의 패킷 저장을 위한 메모리 관리 장치 및 방법
US7551636B2 (en) * 2003-07-10 2009-06-23 Computer Associates Think, Inc. System and method for buffering variable-length data
US7082075B2 (en) * 2004-03-18 2006-07-25 Micron Technology, Inc. Memory device and method having banks of different sizes
US7447847B2 (en) * 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
FR2890200A1 (fr) * 2005-08-25 2007-03-02 St Microelectronics Sa Procede de configuration d'un espace memoire divise en zones memoire
US9164686B2 (en) * 2007-06-29 2015-10-20 Seagate Technology, Llc Virtual storage space with cyclical wrapping grid function
CN101426099B (zh) * 2007-10-31 2010-08-25 晨星半导体股份有限公司 数字电视系统及数字电视中处理数据信号的方法
US7908455B2 (en) * 2008-02-27 2011-03-15 Microchip Technology Incorporated Low overhead memory management system and method
FR2929729A1 (fr) * 2008-04-03 2009-10-09 Alveol Technology Sarl Dispositif de gestion de la memoire d'un environnement informatique
US8555026B2 (en) 2010-09-06 2013-10-08 Lsi Corporation Methods and systems for storing variable width stack elements in a single memory stack
GB2568301B (en) 2017-11-13 2020-05-13 Advanced Risc Mach Ltd Address space access control

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4613953A (en) * 1983-04-22 1986-09-23 Ncr Corporation Paging register for memory devices
DE3502147A1 (de) * 1984-01-23 1985-08-08 Hitachi Microcomputer Engineering Ltd., Kodaira, Tokio/Tokyo Datenverarbeitungssystem mit verbesserter pufferspeichersteuerung
EP0259967B1 (en) * 1986-08-01 1994-03-23 Fujitsu Limited Directory memory
JPS63220342A (ja) * 1987-03-10 1988-09-13 Fujitsu Ltd ブロツクアクセス方式
GB8908861D0 (en) * 1989-04-19 1989-06-07 Rca Licensing Corp Apparatus and method for addressing memory
JPH0666056B2 (ja) * 1989-10-12 1994-08-24 甲府日本電気株式会社 情報処理システム
US5317711A (en) * 1991-06-14 1994-05-31 Integrated Device Technology, Inc. Structure and method for monitoring an internal cache

Also Published As

Publication number Publication date
GB9512860D0 (en) 1995-08-23
GB2302604A (en) 1997-01-22
JP3605205B2 (ja) 2004-12-22
US5802598A (en) 1998-09-01
GB2302604B (en) 2000-02-16

Similar Documents

Publication Publication Date Title
EP0042000B1 (en) Cache memory in which the data block size is variable
EP0979456B1 (en) Memory access protection
US5689679A (en) Memory system and method for selective multi-level caching using a cache level code
US7412581B2 (en) Processor for virtual machines and method therefor
EP0213843B1 (en) Digital processor control
JP3605205B2 (ja) データ処理装置および処理方法
EP0405318A2 (en) Microprocessor having cash bypass signal terminal
US5956751A (en) Computer memory management system using physical segmentation space allocation
US6122708A (en) Data cache for use with streaming data
JPH1027128A (ja) メモリボード、メモリアクセス方法及びメモリアクセス装置
JPS607301B2 (ja) コンピュ−タ・システム
US5987581A (en) Configurable address line inverter for remapping memory
US6029241A (en) Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor
US5127096A (en) Information processor operative both in direct mapping and in bank mapping, and the method of switching the mapping schemes
US5572700A (en) Cache access controller and method for permitting caching of information in selected cache lines
US5761719A (en) On-chip memory map for processor cache macro
US5592652A (en) Single-chip microcomputer system having address space allocation hardware for different modes
JPS5844263B2 (ja) 記憶制御回路
JPH10293684A (ja) コンピュータシステムおよびその立ち上げ制御方法
JP2005222519A (ja) メモリに記憶されたデータワード内のビット値へのアクセス
US6654646B2 (en) Enhanced memory addressing control
KR200204909Y1 (ko) 분할된 내부 코드 메모리를 갖는 마이크로컨트롤러
KR920003845B1 (ko) 개인용 컴퓨터의 사용자를 위한 rom의 영역 확장 시스템
US5860140A (en) Circuit and method for learning attributes of computer memory
US20020073295A1 (en) Enhanced memory addressing capability

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040826

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: 20040917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041001

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081008

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081008

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091008

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101008

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111008

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees