JPH0944438A - 同期タイプ入出力命令の多重処理方法 - Google Patents

同期タイプ入出力命令の多重処理方法

Info

Publication number
JPH0944438A
JPH0944438A JP19026995A JP19026995A JPH0944438A JP H0944438 A JPH0944438 A JP H0944438A JP 19026995 A JP19026995 A JP 19026995A JP 19026995 A JP19026995 A JP 19026995A JP H0944438 A JPH0944438 A JP H0944438A
Authority
JP
Japan
Prior art keywords
instruction
output
input
processor
channel
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
JP19026995A
Other languages
English (en)
Other versions
JP3219974B2 (ja
Inventor
Shigeki Yoshino
茂樹 吉野
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP19026995A priority Critical patent/JP3219974B2/ja
Publication of JPH0944438A publication Critical patent/JPH0944438A/ja
Application granted granted Critical
Publication of JP3219974B2 publication Critical patent/JP3219974B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 複数の命令プロセッサから同期タイプ入出力
命令が発行されたとき、該命令を多重に処理することに
よって高速化を図る。 【構成】 起動情報格納領域8を獲得した命令プロセッ
サ1は、領域8に起動情報を格納し、領域10に識別情
報(命令プロセッサ番号)を格納する。命令プロセッサ
1は、インタフェース制御装置2を介して入出力プロセ
ッサ4に対して入出力起動をかける。入出力プロセッサ
4は起動応答を返し、チャネル6、デバイスを起動し、
入出力割り込みを報告する。これで、インタフェース2
とチャネルパス5が開放され、他のプロセッサ1からの
入出力命令の起動を可能にする。入出力プロセッサ4
が、命令プロセッサ1に対応した記憶領域11に終了の
通知を書き込むまで、命令プロセッサ1は該記憶領域を
ポーリングする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の命令プロセッサ
から発行される同期タイプ入出力命令を多重に処理する
方法に関する。
【0002】
【従来の技術】同期タイプ入出力命令は、命令プロセッ
サと入出力プロセッサ間のハードウェアのインタフェー
スが、一般に、命令プロセッサから入出力プロセッサへ
の入出力起動と、その応答である入出力起動応答と、命
令終了を報告する入出力割込みからなり、命令プロセッ
サと入出力プロセッサが同期して命令を実行することか
らその名が付けられている。そして、このハードウェア
のインタフェースは、1つの同期タイプ入出力命令の起
動から終了までの間、占有されるため、同時に1つの同
期タイプ入出力命令しか実行できない。
【0003】同期タイプ入出力命令を多重で処理するた
めに、各命令プロセッサと各入出力プロセッサ間の前記
インタフェースを、各々独立に持つことで、複数の命令
プロセッサからの同期タイプ入出力命令の実行を並行し
て行う方法があるが、命令プロセッサと入出力プロセッ
サの数が増えるに従い、ハードウェア量が膨大になる。
【0004】一方、非同期タイプの入出力命令は、命令
プロセッサが命令をキューに登録すると次の命令に進
み、入出力プロセッサが非同期にキューから命令を読み
出して命令を実行するもので、多くの入出力命令を処理
することができるが、命令が起動されてから実行される
までの時間が不確定となる。
【0005】図4は、従来のデータ処理システムを示す
図である。1はプログラムを解析し、入出力プロセッサ
に対して入出力命令の起動と終了処理を行う複数の命令
プロセッサ、2は1つの命令プロセッサと1つの入出力
プロセッサを接続するインタフェース制御装置、3は命
令プロセッサを選択するセレクタ、4は入出力命令の起
動を受け付け、実行し、その終了報告を行う複数の入出
力プロセッサ、5はチャネルを選択して起動するチャネ
ルパス制御部、6はデバイスを起動するチャネル、7は
命令プロセッサ1、入出力プロセッサ4の双方からアク
セス可能な記憶装置、8は複数の命令プロセッサに共通
の同期入出力命令用起動情報の格納領域、9は同期タイ
プ入出力命令と非同期タイプ入出力命令を持つプログラ
ムである。なお、各チャネル6には、図示しないデバイ
ス、あるいは他のデータ処理システムが接続されてい
る。
【0006】図5は、従来の同期タイプ入出力命令の処
理の流れを説明する図である。n台の命令プロセッサ
が、例えば同時に同期タイプ入出力命令を実行するもの
として、その動作を説明する。n台の内の複数の命令プ
ロセッサが同時に入出力命令を実行する場合、あるいは
複数の命令プロセッサが順次入出力命令を実行する場合
でも同様である。
【0007】n台の命令プロセッサ1は、まず記憶装置
7上の同期入出力命令用起動情報の格納領域8の獲得を
要求する。例えば、命令プロセッサ1aがこの格納領域
8を獲得できたとする。命令プロセッサ1aは、格納領
域8に同期入出力命令用起動情報としてコマンド情報と
起動するデバイスの指示情報を格納する。
【0008】その後、命令プロセッサ1aは、インタフ
ェース制御装置2に対して入出力プロセッサ4を選択す
る選択信号と入出力起動を出す。インタフェース制御装
置2のセレクタ3は、例えば入出力プロセッサ4aを選
択し、入出力起動201を送る。入出力プロセッサ4a
のチャネルパス制御部5は、インタフェース制御装置2
を介して命令プロセッサ1aに入出力起動応答202を
返し、次いで、チャネルパス制御部5は、記憶装置7上
の格納領域8内の起動情報を参照して、チャネル6を選
択し、チャネルを起動する。
【0009】チャネル6は指定されたデバイスを起動し
て同期タイプ入出力命令の処理203を実行し、このチ
ャネル6とデバイスでの処理が終了すると、チャネル6
はチャネルパス制御部5に終了割込みを報告する。これ
を受けてチャネルパス制御部5はインタフェース制御装
置2を介して命令プロセッサ1aに入出力割込み204
を報告する。命令プロセッサ1aは入出力割込み204
を受け取ると、プログラム9に対して終了報告205を
実行する。
【0010】このように、インタフェース制御装置2お
よびチャネルパス制御部5は、入出力起動の受け付けか
ら入出力割込みを報告するまで、1台の命令プロセッサ
によって占有されるため、1台目の命令プロセッサが入
出力命令を終了してから、2台目の命令プロセッサが動
作し、同様にしてn台目の命令プロセッサまで順々に実
行されることになる。従って、このデータ処理システム
の処理能力は、n−1個の命令プロセッサが停止してい
て、1台の命令プロセッサがn個の同期タイプ入出力命
令を実行することに相当し、データ処理システムが複数
の命令プロセッサで構成されていても十分な処理性能が
得られないことになる。
【0011】
【発明が解決しようとする課題】命令プロセッサ数の増
加により、入出力命令の発行数も同時に増加し、これに
対応するために非同期タイプ入出力命令が開発され、少
ないハードウェアで多くの命令を処理できるようになっ
た。しかし、近年、処理速度が要求されることから、再
び同期タイプ入出力命令を用いて高速処理を行う必要が
出てきた。このため、今まで主に非同期タイプ命令を処
理していたシステムにおいても、複数の命令プロセッサ
からの同期タイプ入出力命令を処理しなければならなく
なったが、前述したように、1つの同期タイプ入出力命
令が終了するまで他の同期タイプ入出力命令が実行でき
ないため、他の命令プロセッサが待たされることにな
り、高速に処理することができないという問題があっ
た。
【0012】本発明の目的は、複数の命令プロセッサか
ら同期タイプ入出力命令が発行されたとき、該命令を多
重に処理することによって高速化を図った同期タイプ入
出力命令の多重処理方法を提供することにある。
【0013】
【課題を解決するための手段】前記目的を達成するため
に、本発明では、入出力プロセッサに対して同期タイプ
入出力命令(以下、入出力命令という)の起動と該命令
の終了処理を実行する複数の命令プロセッサと、該入出
力命令の起動を受けて、その応答を該命令プロセッサに
返し、起動情報を基にチャネルを選択し起動するチャネ
ルパス制御手段と、該起動情報を基にデバイスを起動し
て前記入出力命令の処理を実行する複数のチャネルとを
備えた複数の入出力プロセッサと、命令プロセッサと該
命令プロセッサによって選択される入出力プロセッサと
の間を接続するインタフェース制御手段と、前記起動情
報が格納され、前記複数の命令プロセッサと複数の入出
力プロセッサからアクセスされる記憶手段と、を備えた
データ処理システムにおいて、前記複数の命令プロセッ
サから発行される入出力命令を多重に処理する方法であ
って、該複数の命令プロセッサの内、起動情報と命令プ
ロセッサを識別する情報を、前記記憶手段に書き込んだ
第1の命令プロセッサが選択され、該第1の命令プロセ
ッサによって選択された入出力プロセッサ内のチャネル
パス制御手段の入出力起動が指示され、該入出力起動に
応じて、該第1の命令プロセッサに応答を返すととも
に、前記起動情報を基にチャネルおよびデバイスが起動
され、該デバイスの起動に応じて、前記チャネルパス制
御手段から第1の命令プロセッサに入出力割り込みが通
知され、該入出力割り込みが通知された時点で、前記イ
ンタフェース制御手段とチャネルパス制御手段を、他の
命令プロセッサに開放することを特徴としている。
【0014】また、前記チャネル起動時に、前記記憶手
段から前記識別情報が読み出されてチャネル内に格納さ
れ、前記デバイスにおける処理が終了することに応じ
て、該チャネル内の識別情報で指定される前記記憶手段
内の領域に、終了通知を含む情報が格納され、前記入出
力割り込みが通知された第1の命令プロセッサは、該命
令プロセッサに割り当てられた前記領域に、前記終了通
知を含む情報が格納されるまで、該領域に対してポーリ
ングすることを特徴としている。
【0015】
【作用】命令プロセッサが入出力プロセッサに対して同
期タイプ入出力命令の起動を出し、入出力プロセッサが
起動受け付け時に、命令プロセッサと入出力プロセッサ
間のインタフェースを開放して、他の命令プロセッサか
らの別の同期タイプ入出力命令を起動可能とする。命令
プロセッサは記憶領域に終了報告が入るまでポーリング
を行い、入出力プロセッサは受け付けた同期タイプ入出
力命令の処理を実行し、処理終了後に記憶領域に終了通
知を格納する。命令プロセッサが終了通知を受けると、
同期タイプ入出力命令を終了させる。これによって、入
出力プロセッサが1つの同期タイプ入出力命令の処理を
実行中に、他の命令プロセッサからの同期タイプ入出力
命令の起動を受け付け、処理を実行することができ、同
期タイプ入出力命令を、命令プロセッサの数まで多重に
処理することができる。
【0016】
【実施例】以下、本発明の一実施例を図面を用いて具体
的に説明する。図1は、本発明のデータ処理システムの
構成を示す図である。命令プロセッサ1、インタフェー
ス制御装置2は、図4で説明した従来のものと同様であ
る。本発明では、記憶装置7に、命令プロセッサに対応
した記憶領域11と、起動情報の格納領域8内に命令プ
ロセッサの識別情報(命令プロセッサの番号)の格納領
域10が設けられている。また、入出力プロセッサ4の
チャネル6内には、命令プロセッサの識別情報とデバイ
ス情報を格納する領域12が設けられている。
【0017】各命令プロセッサに対応した記憶領域11
は、例えば、命令プロセッサ1aと記憶領域11aが対
応し、命令プロセッサ1bと記憶領域11bが対応して
いて、各命令プロセッサに対応して記憶領域が割り当て
られている。
【0018】図3は、命令プロセッサ毎に割り当てられ
た記憶領域11を示す。各記憶領域11は、同期タイプ
入出力命令の終了を通知する情報21と、命令の実行結
果の情報22(例えば、データ転送、メッセージ転送の
成功、失敗)などが格納されている。また、各命令プロ
セッサに割り当てられた記憶領域のアドレスは、それぞ
れ固定のアドレスである。
【0019】また、記憶装置7内の識別情報の格納領域
10は、命令プロセッサ1が、その識別情報(プロセッ
サ番号)を入出力プロセッサ4に対して通知するための
ものである。すなわち、命令プロセッサ1が同期タイプ
の入出力命令の起動時に、識別情報の格納領域10に命
令プロセッサの識別情報を格納し、入出力プロセッサ4
が同期タイプの入出力命令の起動受取時に、この命令プ
ロセッサの識別情報10を読み出す。
【0020】図2は、本発明の同期タイプ入出力命令の
処理の流れを説明する図である。従来例で説明したと同
様に、n台の命令プロセッサが同時に同期タイプ入出力
命令を実行するものとして、本実施例の動作を説明す
る。
【0021】前述したと同様に、n台の命令プロセッサ
1は、まず記憶装置7上の同期入出力命令用起動情報の
格納領域8の獲得を要求する。例えば、命令プロセッサ
1aがこの格納領域8を獲得できたとすると、命令プロ
セッサ1aは、格納領域8に同期入出力命令用起動情報
としてコマンド情報と起動するデバイスの指示情報を格
納すると共に、識別情報の格納領域10に命令プロセッ
サの番号を格納する。
【0022】その後、命令プロセッサ1aは、インタフ
ェース制御装置2に対して入出力プロセッサ4の選択信
号と入出力起動101を出す。インタフェース制御装置
2のセレクタ3は、例えば入出力プロセッサ4aを選択
し、入出力起動を送る。入出力プロセッサ4aのチャネ
ルパス制御部5は、インタフェース制御装置2を介して
命令プロセッサ1aに入出力起動応答102を返し、次
いで、チャネルパス制御部5は、記憶装置7上の格納領
域8内の起動情報を参照して、チャネル6を選択し、チ
ャネルを起動する。
【0023】チャネル6は、記憶装置7上の起動情報の
格納領域8から起動情報を直接読み出して命令プロセッ
サ1aの識別情報10を得る。あるいは他の実施例とし
て、チャネル起動時にチャネルパス制御部5から起動情
報を受け取って命令プロセッサ1aの識別情報10を得
る。そして、チャネル6は、命令プロセッサ1aの識別
情報を得ると、チャネル6内部の格納部12に、この命
令プロセッサ1aの識別情報と起動されるデバイス情報
を格納する。
【0024】チャネル6は指定されたデバイスを起動す
ると、チャネルパス制御部5に起動成功を報告し、チャ
ネルパス制御部5は、インタフェース制御装置2を介し
て命令プロセッサ1aに入出力割込み103を報告す
る。入出力割込み103を受け取った命令プロセッサ1
aは、命令プロセッサ1aに対応した記憶領域11aに
終了通知の情報が格納されるまで、該記憶領域11aに
対するポーリング104を開始する。起動されたデバイ
スとチャネルは、同期タイプ入出力命令の処理105の
実行を開始する。
【0025】一方、入出力プロセッサ4のチャネルパス
制御部5から入出力割込み103が報告された時点で、
命令プロセッサ1aと入出力プロセッサ4間のインタフ
ェース制御装置2とチャネルパス制御部5が開放され、
他の命令プロセッサからの同期タイプ入出力命令の入出
力起動を実行することができるようになる。例えば、命
令プロセッサ1bが前述したと同様にして格納領域8を
獲得できたとすると、命令プロセッサ1bは格納領域8
に起動情報(コマンド情報とデバイス情報)を書き込み
(前の情報に上書きされる)、格納領域10に命令プロ
セッサ1bの番号を書き込む。そして、前述したと同様
に、インタフェース制御装置2に対して、入出力プロセ
ッサ4の選択信号と入出力起動を出力する。
【0026】従って、起動されたデバイスが入出力命令
の処理実行を行っている間に、次々と他の命令プロセッ
サからの同期タイプ入出力命令の入出力起動が実行され
る。
【0027】デバイスでの処理が終了すると、チャネル
6は、格納領域12内に記憶していた、デバイスに対応
した命令プロセッサの識別情報を基に、命令プロセッサ
1aに対応した記憶領域11aに、終了通知の情報と実
行結果の情報106を格納する。記憶領域11aをポー
リングしていた命令プロセッサ1aは、終了通知の情報
と実行結果の情報を記憶領域11aから読み出すと、プ
ロセッサ9に終了報告107を実行する。なお、命令プ
ロセッサによるポーリングと、他の命令プロセッサによ
る起動情報などの書き込みによって、記憶装置に対する
アクセスが競合したときは、ポーリングが優先される。
【0028】以下、同様にして、他の命令プロセッサか
ら出された同期タイプ入出力命令が並行して多重に実行
される。この結果、本発明のデータ処理システムでは、
n台の命令プロセッサが同時に1個の同期タイプ入出力
命令を実行するにほぼ等しい処理能力を得ることができ
る。
【0029】
【発明の効果】以上、説明したように、本発明によれ
ば、同期タイプ入出力命令を、命令プロセッサ数まで多
重に処理することができるので、各命令プロセッサと各
入出力プロセッサ間に各々独立した専用のハードウェア
を設ける必要がなく、少ないハードウェアで効率良く高
速に処理することが可能となる。しかも、1つの同期タ
イプ入出力命令において、デバイスでの処理実行時間が
長い命令ほど、その効果が顕著なものとなる。
【図面の簡単な説明】
【図1】本発明のデータ処理システムの構成を示す図で
ある。
【図2】本発明の同期タイプ入出力命令の処理の流れを
説明する図である。
【図3】命令プロセッサ毎に割り当てられた記憶領域を
示す。
【図4】従来のデータ処理システムを示す図である。
【図5】従来の同期タイプ入出力命令の処理の流れを説
明する図である。
【符号の説明】
1 命令プロセッサ 2 インタフェース制御装置 3 セレクタ 4 入出力プロセッサ 5 チャネルパス制御部 6 チャネル 7 記憶装置 8 起動情報の格納領域 9 プログラム 10 命令プロセッサの識別情報格納領域 11 命令プロセッサに対応した記憶領域 12 命令プロセッサの識別情報とデバイス情報を格納
する領域

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 入出力プロセッサに対して同期タイプ入
    出力命令(以下、入出力命令という)の起動と該命令の
    終了処理を実行する複数の命令プロセッサと、該入出力
    命令の起動を受けて、その応答を該命令プロセッサに返
    し、起動情報を基にチャネルを選択し起動するチャネル
    パス制御手段と、該起動情報を基にデバイスを起動して
    前記入出力命令の処理を実行する複数のチャネルとを備
    えた複数の入出力プロセッサと、命令プロセッサと、該
    命令プロセッサによって選択される入出力プロセッサと
    の間を接続するインタフェース制御手段と、前記起動情
    報が格納され、前記複数の命令プロセッサと複数の入出
    力プロセッサからアクセスされる記憶手段と、を備えた
    データ処理システムにおいて、前記複数の命令プロセッ
    サから発行される入出力命令を多重に処理する方法であ
    って、該複数の命令プロセッサの内、起動情報と命令プ
    ロセッサを識別する情報を、前記記憶手段に書き込んだ
    第1の命令プロセッサが選択され、該第1の命令プロセ
    ッサによって選択された入出力プロセッサ内のチャネル
    パス制御手段の入出力起動が指示され、該入出力起動に
    応じて、該第1の命令プロセッサに応答を返すととも
    に、前記起動情報を基にチャネルおよびデバイスが起動
    され、該デバイスの起動に応じて、前記チャネルパス制
    御手段から第1の命令プロセッサに入出力割り込みが通
    知され、該入出力割り込みが通知された時点で、前記イ
    ンタフェース制御手段とチャネルパス制御手段を、他の
    命令プロセッサに開放することを特徴とする同期タイプ
    入出力命令の多重処理方法。
  2. 【請求項2】 前記チャネル起動時に、前記記憶手段か
    ら前記識別情報が読み出されてチャネル内に格納され、
    前記デバイスにおける処理が終了することに応じて、該
    チャネル内の識別情報で指定される前記記憶手段内の領
    域に、終了通知を含む情報が格納され、前記入出力割り
    込みが通知された第1の命令プロセッサは、該命令プロ
    セッサに割り当てられた前記領域に、前記終了通知を含
    む情報が格納されるまで、該領域に対してポーリングす
    ることを特徴とする請求項1記載の同期タイプ入出力命
    令の多重処理方法。
JP19026995A 1995-07-26 1995-07-26 同期タイプ入出力命令の多重処理方法 Expired - Fee Related JP3219974B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19026995A JP3219974B2 (ja) 1995-07-26 1995-07-26 同期タイプ入出力命令の多重処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19026995A JP3219974B2 (ja) 1995-07-26 1995-07-26 同期タイプ入出力命令の多重処理方法

Publications (2)

Publication Number Publication Date
JPH0944438A true JPH0944438A (ja) 1997-02-14
JP3219974B2 JP3219974B2 (ja) 2001-10-15

Family

ID=16255348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19026995A Expired - Fee Related JP3219974B2 (ja) 1995-07-26 1995-07-26 同期タイプ入出力命令の多重処理方法

Country Status (1)

Country Link
JP (1) JP3219974B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008126138A1 (ja) * 2007-03-26 2008-10-23 Fujitsu Limited 入出力完了検出システム
WO2021016931A1 (zh) * 2019-07-31 2021-02-04 华为技术有限公司 一种集成芯片以及处理传感器数据的方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10063376B2 (en) 2015-10-01 2018-08-28 International Business Machines Corporation Access control and security for synchronous input/output links
US10120818B2 (en) 2015-10-01 2018-11-06 International Business Machines Corporation Synchronous input/output command

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008126138A1 (ja) * 2007-03-26 2008-10-23 Fujitsu Limited 入出力完了検出システム
WO2021016931A1 (zh) * 2019-07-31 2021-02-04 华为技术有限公司 一种集成芯片以及处理传感器数据的方法

Also Published As

Publication number Publication date
JP3219974B2 (ja) 2001-10-15

Similar Documents

Publication Publication Date Title
US5349682A (en) Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors
US4435755A (en) Balanced channel finding method
US4110823A (en) Soft display word processing system with multiple autonomous processors
EP0491342A2 (en) Method for fast communication between user program and operating system
JPH04348451A (ja) 並列計算機
EP0409285B1 (en) Method and apparatus for data transfer between processor elements
JP2003263331A (ja) マルチプロセッサシステム
JPH0944438A (ja) 同期タイプ入出力命令の多重処理方法
US5860026A (en) Information processing system for controlling operations of input/output devices of another clusters according to control instructions issued from a cluster
JPH0798663A (ja) 非同期i/o制御方式
JPH08212178A (ja) 並列計算機
JP2585905B2 (ja) マルチタスク実行装置
JP2000215071A (ja) 仮想計算機システム
JPS6097440A (ja) 仮想多重プロセツサ装置
JPH1185673A (ja) 共有バスの制御方法とその装置
JP2001229038A (ja) マルチオペレーテング計算機システム
JP2755103B2 (ja) 記憶装置のアクセス方法
JP3252517B2 (ja) 入出力制御方法および入出力制御システム
JPH0535507A (ja) 中央処理装置
JPH10124438A (ja) 入出力処理装置
JPH06187312A (ja) マルチcpuシステムにおける処理方法および装置
JP2001344119A (ja) トランザクション実行制御方式およびトランザクション実行制御方法
JPH04232559A (ja) システムのプロセッサ間対話方法及び該方法を実施するためのシステム
JPH10507548A (ja) データ処理システムおよび方法およびこのようなシステムとの通信システム
JP3591883B2 (ja) 計算機及びそのシステム及びその制御方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees