DE2336676C3 - Einrichtung zur Modifizierung von Mikroprogrammbefehlen - Google Patents
Einrichtung zur Modifizierung von MikroprogrammbefehlenInfo
- Publication number
- DE2336676C3 DE2336676C3 DE19732336676 DE2336676A DE2336676C3 DE 2336676 C3 DE2336676 C3 DE 2336676C3 DE 19732336676 DE19732336676 DE 19732336676 DE 2336676 A DE2336676 A DE 2336676A DE 2336676 C3 DE2336676 C3 DE 2336676C3
- Authority
- DE
- Germany
- Prior art keywords
- microprogram
- register
- instruction
- macro
- command
- 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.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
45
Die Erfindung betrifft eine Einrichtung zur Modifizierung von Mikroprogrammbefehlen nach dem Oberbegriff
des Anspruchs 1.
Zur Erhöhung der Flexibilität des datenverarbeitenden
Systems und aus Gründen der Kostenersparnis wird in modernen Rechenanlagen weitgehend von der
Technik der Mikroprogrammierung Gebrauch gemacht. Dabei wird ein Programmbefehl im Hauptspeicher
(Makrobefehl) als eine zeitliche Folge von Elementaroperationen, sogenannten Mikrooperationen, ausgeführt
Diese Mikrooperationen werden durch einzelne Mikrobefehle angestoßen, die aus einem Speicher in
Abhängigkeit vom vorliegenden Makrobefehl abgerufen werden. Neben anderen Informationen enthalten
diese Mikrobefehle Steuerfelder, aus denen direkt Signale zur Steuerung der Elementaroperationen 6>
abgeleitet werden. Einzelheiten dieser Technik sind z. B. beschrieben in dem Buch »Microprogramming« von S.
S. Husson, Englewood Cliffs, 1970.
In bekannten Einrichtungen dieser Art, so z. B. in
vielen der Rechenanlagen der Reihe IBM/360/370, besteht die Mikroprogrammsequenz zur Ausführung
eines Makrobefehls im wesentlichen aus folgenden Schritten:
1. Lesen des Makrobefehls im Hauptspeicher;
2. Aufbereitung der Operandenadressen;
3. Verzweigen zur speziellen Mikroprogrammausführungsroutine für den vorliegenden Makrobefehl;
4. Ausführung des vorliegenden Makrobefehls;
a) Lesen der Operanden
b) Verarbeiten der Operanden
c) Speichern des Resultats;
5. Verzweigen zu Schritt 1.
Prinzipiell ist nun für jede der unter Punkt 4 geschilderten Befehlsausführungsphasen eine spezielle
Mikroprogrammschrittfolge erforderlich. Dies bringt den Nachteil mit sich, daß in Datenverarbeitungsanlagen
mit einem mächtigen, aus vielen Instruktionen bestehenden Instruktionssatz ein Mikroprogrammspeicher
beträchtlicher Kapazität erforderlich ist, daß weiterhin infolge der notwendigen Programmverzweigungen
ein Zeitverlust in der Mikroprogrammausführung auftritt und daß schließlich die Erstellung der
Mikroprogramme sehr aufwendig ist
Zur Vermeidung dieser Schwierigkeiten wurde in der deutschen Auslegeschrift 12 50 659 angegeben, für
verschiedene Makrobefehle Mikroprogrammroutinen mit gleicher Anfangsadresse zu verwenden und an
bestimmten Punkten dieser Routinen, abhängig vom gerade durchzuführenden Makrobefehl, zu verschiedenen
Mikroprogrammadressen zu verzweigen. Die vorgeschlagene Adreßmodifizierung erfordert jedoch
einen komplizierten Schaltungsaufbau; außerdem ist die Einsparung an Speicherplatz noch nicht optimal, da
auch hier verschiedene Mikroinstruktionen für verschiedene Makrobefehle gespeichert werden müßten.
Aufgabe der vorliegenden Erfindung ist es nun, für eine mikroprogrammgesteuerte Befehlsausführungseinheit
eine Einrichtung zur Modifizierung von Mikroprogrammbefehlen anzugeben, die einfach strukturiert ist,
dabei jedoch eine hohe Flexibilität aufweist und zu einer möglichst großen Speicherplatzeinsparung führt
Dazu geht die Erfindung von der Feststellung aus, daß sich innerhalb des Instruktionsrepertoires einer modernen Datenverarbeitungsanlage Gruppen von Instruktionen
zusammenfassen lassen, die denselben Instruktionsaufbau besitzen, bei denen also beispielsweise die
Anzahl und die Lage der Felder in einer Instruktion gleich sind und die dasselbe Datenformat besitzen.
Für Instruktionen innerhalb einer derartigen Gruppe unterscheiden sich die oben erwähnten Mikroprogrammschritte
1 bis 5 nur in dem Schritt 4b, wo die eigentliche, durch den Makroinstruktionscode spezifl·
zierte Aufgabe durchgeführt wird. Durch Zusammenlegung der verschiedenen Ausführungsphasen für die
einzelnen Makroinstruktionen in eine für alle Instruktionen einer Gruppe gemeinsame Phase ließe sich danach
eine beträchtliche Einsparung an Speicherplatz und Ausführungszeit erreichen; diese gemeinsame Ausführungsphase
muß dabei selbstverständlich entsprechend
der jeweils vorliegenden Instruktion dynamisch modifiziert
werden, wobei eine Einrichtung geschaffen werden muß, die diese Modifizierung in einfacher und
zeitsparender Weise durchzuführen gestattet
Die Erfindung löst diese Aufgabe entsprechend den im kennzeichnenden Teil des Hauptanspruchs angegebenen
Merkmalen.
Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind den Unteransprüchen zu entnehmen.
Ein Ausfühn-Tigsbeispiel der Erfindung soll im
folgenden anhand von Zeichnungen dargestellt werden. Es zeigt
F i g. ί ein Prinzipschaltbild eines Mikroprogrammsteuerwerks
gemäß einem Ausführungsbeispiel der Erfindung,
F i g. 2 das Bitmuster der für die Erfindung maßgeblichen
Mikroprogrammbefehls-Steuerfelder während der verschiedenen Ausführungsphasen einer Makroinstruktion.
F i g. 1 zeigt in schematischer Weise die wesentlichen Elemente eines Mikroprogrammsteuerwerks, von denen
die Erfindung Gebrauch macht Die Makroinstruktionen, auch als Maschineninstruktionen bezeichnet
sind im Hauptspeicher HSi in Form von Programmen gespeichert Sie werden in der einleitenden Phase der
Befehlausführung aus dem Speicher abgerufen und in ein mit SDR 1 bezeichnetes Speicherausgangsregister 2
gebracht Der Befehlsschlüssel befindet sich dann in einem Feld OPCODEX. Von dort werden die im
Makrobefehl enthaltenen Informationen zur Mikroprogrammsteuerung an die entsprechenden Steuerelemente
weitergeleitet, so z. B. als Adresseninformation für
den Mikroprogrammspeicher CS 4 oder für die Aufbereitung der Operanden. Diese Einzelheiten sind
für die vorliegende Erfindung nicht wesentlich und sollen deshalb auch nicht weiter betrachtet werden. Im
späteren Verlauf der Befehlsausführung dienen die mit SDRi und SDR 2 bezeichneten Register 2 und 3 zur
Aufnahme der Operanden für die in der Ausführung befindliche Instruktion.
Das Mikroprogramm ist im Mikroprogrammspeicher CS 4 enthalten, aus dem die einzelnen Mikroinstruktionen
entsprechend der in der Einleitung geschilderten Einzelschritte 1 bis 5 durch ein (nicht dargestelltes)
Fortschaltewerk abgerufen und in ein Ausgangsregister CSDR 5 gebracht werden. Von den einzelnen Feldern
dieses Registers bestehen Verbindungen zu anderen Systemkomponenten, auf denen die entsprechend der
Bitverteilung in den Steuerfeldern erzeugten Steuersignale an die Systemkomponenten, wie z. B. die
arithmetische und logische Einheit ALU6, weitergeleitet
werden.
Die geniale Aufteilung des Ausgangsregisters CSDR 5 in die zur Steuerung der Anlage notwendigen
Felder (und damit die Aufteilung des gesamten Mikrobefehls in entsprechende Felder) ist für die
vorliegende Erfindung ohne Belang; deren Einfluß äußert sich nur im Vorhandensein eines zusätzlichen
Steuerfeldes 52 und zweier zusätzlicher spezieller Steuerbits 50 und Sl.
Bevor nun die Einzelheiten der Erfindung und ihre
Funktionsweise anhand der Elemente 7, 8 und 9 erläutert wird, soll zunächst auf das Makroinstruktionsformat eingegangen werden, wie es in den Rechenanlagen
des Systems IBM/360/370 verwendet wird, und auf welchem die Erfindung aufbaut. Es ist jedoch selbstverständlich,
daß die Erfindung auch anwendbar ist, wenn andere als die hier geseri'derten Instruktionsformate
zugrunde gelegt werden,
In dem genannten System besteht der Instruktionsschlüssel 20 aus acht Bits. Dabei ist er so aufgebaut, daß
die hochstelligen vier Bits Gruppen von Instruktionen zusammenfassen, die identisches Instruktions- und
Operandenformat besitzen; die niedrigstelligen Bits dienen dann zur Unterscheidung der Einzelinstruktionen
innerhalb der 16 Gruppen.
Als Beispiel für eine derartige Zusammenfassung von
Als Beispiel für eine derartige Zusammenfassung von
ίο Instruktionen in Gruppen können die logischen
Register-Register-Operationen dienen, d. h. solche, bei denen der Inhalt zweier Register R 1 und R 2 logisch
verknüpft wird:
Operation
Befehlsschlüssel
UND/? 1, Λ2
ODER Al, Λ 2
00010100
00010110
00010111
00010110
00010111
System IBM/360/370 sind in der Broschüre i3M System/360, Principles of Operation, IBM Form Nr. GA
22-6821 enthalten.
Innerhalb dieser so definierten Instruktionsgruppen kommt nun die Erfindung zum Tragen. Während der
einleitenden Phase steuert ein spezielles ßit 50 der für diese Phase wirksamen Mikroinstruktion die Übertragung
der niedrigstelligen Bits des Befehlsschlüssels aus dem Register 2 in das ALU-Index-Register 7. Dort wird
der Schlüssel bis zur Ausführungsphase dieses Befehls zwischengespeichert Für jedes der zu speichernden Bits
ist dementsprechend eine Selbsthalteschaltung 7a bis Td in üblicher Bauart vorgesehen, die gesetzt wird, wenn
zum Zeitpunkt der Übertragung das zu speichernde Bit und das Steuerbit 50 auf»1« stehen.
Wie schon erwähnt laufen die Mikroprogrammschritte für die Ausführung von Makroinstruktionen
innerhalb derselben Gruppe in identisch gleicher Weise ab; die einzelnen Mikroinstruktionen sind dabei auch
nur einmal im Mikroprogrammspeicher enthalten. Die notwendige Modifizierung der Mikroinstruktion erfolgt
im Abschnitt 4b der Ausführungsphase, in dem die Verarbeitung der Operanden durchgeführt wird. Dazu
wird der im ALU-Index-Register 7 zwischengespeicherte Teil des Befehlsschlüssels logisch verknüpft mit dem
so Inhalt des Steuerfeldes 52 im gerade angezogenen
Mikrobefehl. Dies erfolgt in der Weise, daß ein spezielles Steuerbit 5t in der Mikroprogramminstruktion
die UND-Schaltung 8 aktiviert und damit den Inhalt des ALU-Index-Registers der logischen Verknüpfungsschaltung
9 zuführt Gleichzeitig wird der Inhalt des Steuerfeldes 52 der Mikroinstruktion der Jogischui
Verknüpfungsschaltung 9 zugänglich gemacht in einer bevorzugten Ausführungsform der Erfindung handelt es
sich bei der logischen Verknüpfungsschaltung 9 um eine Schaltung, die das Inklusive ODER verwirklicht Das
für alle Instruktionen der Gruppe gleiche Steuerfeld 52 der Mikroinstruktion wird dabei durch die logische
Verknüpfungsschaltung 9 mit Hilfe des im ALU-Index-Register gespeicherten Teils des Befehlsschlüssels so
modifiziert, daß am Ausgang der logischen Verknüpfungsschaltung 9 die für diese Instruktion spezifischen
Steuersignale an die arithmetische und logische Einheit 6 zur Verfügung stehen.
Zur weiteren Verdeutlichung der Erfindung sei die Modifizierung der Mikroinstruktion für den Schritt 4b
am Beispiel der Register-Register-Operationen betrachtet. Zur Ausführung dieser Funktion sei angenommen,
daß die arithmetische Einheit folgende Steuersignale benötigt:
Operation
Steuersignal
UND R\. Rl
ODKR R\.R2
XOR R 1. R2
ODKR R\.R2
XOR R 1. R2
1000
1010
K)II
1010
K)II
Diese Bitmuster lassen sich nun leicht aus den früher angegebenen Befehlsschlüsseln der Makrobefehle erzeugen,
wenn als gemeinsames Steuerfeld 52 der Mikroinstruktion das Bitmuster Ί 100' gewählt wird. Die
Verknüpfung dieses Steuerfeldes mit den niedrigstelli gen vier Bits nach den Regeln der Antivalenz ergibt
dann gerade die geforderten Steuersignale, beispielsweise für eine UND R I. R 2-Operation:
Niedrigslelligc Bits im Bcfehlsschlüssel
Bitmuster im Steuerfeld 52
Steuerbits
Steuerbits
OKK)
IKW)
1Of)O
XOR
In F i g. 2 sind für dieses Beispiel die für die Erfindung maßgeblichen Steuerfelder in der Mikroinstruktion
während der Abarbeitung einer Makroinstruktion angegeben. Die übrigen, durch Kreuze angedeuteten
Bits unterscheiden sich in nichts von den sonst gebräuchlichen Steuerbits in Mikroinstruktionen. Die
früher erwähnten Schritte I bis 5 sind in der Figur durch S 1 bis 55 gekennzeichnet.
Anstelle der Exklusiv-ODER-Funktion kann /ur
Verknüpfung von Befehlsschlüssel und Steuerfeld 52 auch eine binäre Addition oder eine sonstige logische
Operation gewählt werden. Die Steuerbits 50 und 51 der Mikroinstruktion können entfallen, wenn die ihnen
entsprechenden Steuersignale aus anderen Quellen ermittelt werden, beispielsweise durch Decodierung von
Teilen des Makro-Befehlsschlüssels 20.
Hliitt
Claims (6)
1. Einrichtung zur Modifizierung von Mikroprogrammbefehlen
einer Datenverarbeitungsanlage während ihrer Ausführungsphase in Abhängigkeit vom auszuführenden Makrobefehl, dadurch gekennzeichnet,
daß ein erstes Register (7) zur zeitweisen Speicherung des Makrobefehlsschlüssels
(20) oder eines Teiles davon, sowie eine Schaltung (9) ι ο
zur logischen Verknüpfung des Inhalts des ersten Registers (7) mit einem ausgewählten Teil (Feld 52)
eines zweiten, einen Mikroprogrammbefehl enthaltenden Registers (5) vorgesehen sind, wobei das
Ergebnis der logischen Verknüpfung einen Mikroprogrammbefehl oder Teile davon darstellt.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Übertragung des Befehlsschlüssels
(20) in das erste Register (7) und die logische Verknüpfung in der Schaltung (9) durch das
Mikroprogramm gesteuert werden.
3. Einrichtung nach Anspruch 1 und/oder 2, dadurch gekennzeichnet, daß die logische Verknüpfungsschaltung
(9) ein Exklusives ODER realisiert
4. Einrichtung nach Anspruch 1 und/oder 2, dadurch gekennzeichnet, daß die logische Verknüpfungsschaltung
(9) eine Addition realisiert
5. Einrichtung nach Anspruch 2, dadurch gekennzeichnet,
daß ein erstes Mikroprogrammbefehlssteuerbit (50) die Übertragung von Teilen des Makrobefehlsschlüssels
(20) in das erste Register (7) steuert und daß durch ein zweites Mikroprogrammbefehlssteuerbit
(51) aktivierte UND-Glieder (8) die Verknüpfung der Inhalte des ersten Registers (7) und
des ausgewählten Feldes (32J im zweiten Register (5)
steuern.
6. Einrichtung nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß das zweite Register (5)
das Ausgangsregister eines Mikroprogrammspeichers (4) ist
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19732336676 DE2336676C3 (de) | 1973-07-19 | 1973-07-19 | Einrichtung zur Modifizierung von Mikroprogrammbefehlen |
IT2199874A IT1010167B (it) | 1973-07-19 | 1974-04-29 | Sistema per modificare istruzioni di un microprogramma |
GB2172874A GB1433076A (en) | 1973-07-19 | 1974-05-16 | Data processing systems |
FR7418506A FR2238189B1 (de) | 1973-07-19 | 1974-05-21 | |
JP8081974A JPS5334981B2 (de) | 1973-07-19 | 1974-07-16 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19732336676 DE2336676C3 (de) | 1973-07-19 | 1973-07-19 | Einrichtung zur Modifizierung von Mikroprogrammbefehlen |
Publications (3)
Publication Number | Publication Date |
---|---|
DE2336676A1 DE2336676A1 (de) | 1975-01-30 |
DE2336676B2 DE2336676B2 (de) | 1980-10-16 |
DE2336676C3 true DE2336676C3 (de) | 1981-06-19 |
Family
ID=5887367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19732336676 Expired DE2336676C3 (de) | 1973-07-19 | 1973-07-19 | Einrichtung zur Modifizierung von Mikroprogrammbefehlen |
Country Status (5)
Country | Link |
---|---|
JP (1) | JPS5334981B2 (de) |
DE (1) | DE2336676C3 (de) |
FR (1) | FR2238189B1 (de) |
GB (1) | GB1433076A (de) |
IT (1) | IT1010167B (de) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4085439A (en) * | 1976-08-27 | 1978-04-18 | Itek Corporation | Computer programming system having greatly reduced storage capacity and high speed |
JPS6019017B2 (ja) * | 1976-12-15 | 1985-05-14 | 富士通株式会社 | デ−タ処理システム |
AU541189B2 (en) * | 1980-02-11 | 1984-12-20 | Data General Corporation | Data processing system |
JPS5835579A (ja) * | 1981-08-28 | 1983-03-02 | Toppan Printing Co Ltd | 反射型ホログラムの製造方法 |
JPS5835578A (ja) * | 1981-08-28 | 1983-03-02 | Toppan Printing Co Ltd | ホログラムの複製方法 |
DE3311475C1 (de) * | 1983-03-29 | 1984-08-16 | Siemens AG, 1000 Berlin und 8000 München | Mikroprogramm-Steuereinrichtung |
GB8421066D0 (en) * | 1984-08-18 | 1984-09-19 | Int Computers Ltd | Microprogram control |
US4825363A (en) * | 1984-12-05 | 1989-04-25 | Honeywell Inc. | Apparatus for modifying microinstructions of a microprogrammed processor |
GB2215879A (en) * | 1988-03-23 | 1989-09-27 | Benchmark Technologies | Numerical processor using microcode |
EP0334621A3 (de) * | 1988-03-23 | 1992-12-30 | Du Pont Pixel Systems Limited | System mit verbesserter Befehlsausführung |
US6184902B1 (en) | 1997-04-30 | 2001-02-06 | Hewlett-Packard Company | Centralized branch intelligence system and method for a geometry accelerator |
US5956047A (en) * | 1997-04-30 | 1999-09-21 | Hewlett-Packard Co. | ROM-based control units in a geometry accelerator for a computer graphics system |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1250659B (de) * | 1964-04-06 | 1967-09-21 | International Business Machines Corporation, Armonk, NY (V St A) | Mikroprogrammgesteuerte Datenverarbeitungsanlage |
-
1973
- 1973-07-19 DE DE19732336676 patent/DE2336676C3/de not_active Expired
-
1974
- 1974-04-29 IT IT2199874A patent/IT1010167B/it active
- 1974-05-16 GB GB2172874A patent/GB1433076A/en not_active Expired
- 1974-05-21 FR FR7418506A patent/FR2238189B1/fr not_active Expired
- 1974-07-16 JP JP8081974A patent/JPS5334981B2/ja not_active Expired
Also Published As
Publication number | Publication date |
---|---|
IT1010167B (it) | 1977-01-10 |
GB1433076A (en) | 1976-04-22 |
JPS5334981B2 (de) | 1978-09-25 |
FR2238189A1 (de) | 1975-02-14 |
DE2336676B2 (de) | 1980-10-16 |
FR2238189B1 (de) | 1976-06-25 |
DE2336676A1 (de) | 1975-01-30 |
JPS5040050A (de) | 1975-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2755273C2 (de) | ||
DE2813128C2 (de) | Steuereinrichtung für Mikroprogrammspeicher | |
DE2714805C2 (de) | ||
DE1250659B (de) | Mikroprogrammgesteuerte Datenverarbeitungsanlage | |
DE2322674C3 (de) | Mikroprogramm-Steuereinrichtung | |
DE2542751C2 (de) | Datenverarbeitungsanlage | |
DE2318069C2 (de) | Mikroprogrammierte Rechenanlage mit Erweiterung von Steuerfunktionen mittels festverdrahteter logischer Matrix | |
DE2417795C2 (de) | Datenverarbeitungsanlage | |
DE3688232T2 (de) | Datenverarbeitungssystem. | |
DE1774296B2 (de) | Restruktuierbare Steuereinheit für elektronische Digitalrechner | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE3689389T2 (de) | Datenverarbeitungsprozessor. | |
DE2336676C3 (de) | Einrichtung zur Modifizierung von Mikroprogrammbefehlen | |
DE2719635A1 (de) | Anordnung fuer eine erweiterung einer mikroprogrammsteuerung einer datenverarbeitungsanlage | |
DE2910839A1 (de) | Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion | |
DE2717658A1 (de) | Anordnung zur ansteuerung eines mikroprogrammspeichers | |
DE1269393B (de) | Mikroprogramm-Steuerwerk | |
DE1197650B (de) | Parallel-Addierer | |
DE1806535B2 (de) | Seriell arbeitende digitale rechenanlage | |
DE1935944B2 (de) | Steuereinrichtung in einer elektronischen Datenverarbeitungsanlage | |
DE2835110A1 (de) | Schneller echtzeit-rechneremulator | |
DE3586709T2 (de) | Informationsverarbeitungseinheit. | |
DE2245284A1 (de) | Datenverarbeitungsanlage | |
DE2759120C2 (de) | ||
DE3226214C2 (de) | Datenverarbeitungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OD | Request for examination | ||
C3 | Grant after two publication steps (3rd publication) | ||
8339 | Ceased/non-payment of the annual fee |