DE68924719T2 - Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. - Google Patents
Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.Info
- Publication number
- DE68924719T2 DE68924719T2 DE68924719T DE68924719T DE68924719T2 DE 68924719 T2 DE68924719 T2 DE 68924719T2 DE 68924719 T DE68924719 T DE 68924719T DE 68924719 T DE68924719 T DE 68924719T DE 68924719 T2 DE68924719 T2 DE 68924719T2
- Authority
- DE
- Germany
- Prior art keywords
- bank
- memory
- address
- program
- interrupt
- 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 - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 63
- 238000000034 method Methods 0.000 title claims description 37
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 12
- 230000000717 retained effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000009191 jumping Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
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)
Description
- Die vorliegende Erfindung betrifft ganz allgemein eine Vorrichtung und ein Verfahren zum Ausführen eines Unterprogrammes und insbesondere eine Vorrichtung und ein Verfahren zum Ausführen einer Subroutine und eines Unterbrechungsverarbeitungsprogrammes in einem System, das einen Programmspeicher mit zwei oder mehr Speicherbänken aufweist.
- Es ist ein Programm erforderlich, um zu bewirken, daß ein Datenverarbeitungssystem eine vorbestimmte Datenverarbeitungsoperation durchführt. Deshalb umfaßt ein gewöhnliches Datenverarbeitungssystem, in seiner einfachsten Form, einen Hauptspeicher zum Speichern verschiedener Daten, ein von einer externen Vorrichtung oder dgl. zugeführtes Anwenderprogramm, einen Programmspeicher zum Festspeichern eines diesem Verarbeitungssystem oder dgl. eigenen Programms und eine Zentralverarbeitungseinheit (CPU) zum Durchführen einer Datenverarbeitung in Übereinstimmung mit den Programmen.
- Da jedoch das Datenverarbeitungssystem dafür ausgebildet ist, viele Funktionen auszuführen, hat sich der Umfang jedes der Verarbeitungsprogramme vergrößert, so daß der Speicherbereich zum Speichern der Verarbeitungsprogramme zugenommen hat. Da die Speicherkapazität der CPU durch die Anzahl von Adressenbits, die durch die CPU genutzt werden können, definiert ist, können in diesem Fall die umfangreichen Verarbeitungsprogramme nicht alle in dem Speicherbereich gespeichert werden. Um damit fertig zu werden, wurde ein Speicherbank-Umschaltschema in die Praxis umgesetzt, in welchem eine Anzahl von Speicherbänken vorgesehen sind und die Speicherbänke so umgeschaltet werden, daß ein Speicherbereich in der CPU erweitert wird. Zu diesem Anlaß werden verschiedene Datenverarbeitungsprogramme in den jeweiligen Speicherbänken gespeichert. Das Umschalten der Speicherbänke wird im allgemeinen in Übereinstimmung mit einem ausschließlich für ein Bankumschalten benutztes Steuerprogramm durchgeführt, das in einem getrennt von den Speicherbänken vorgesehenen, Gemeinschaftsbereich eines Hauptspeichers gespeichert ist.
- Jedoch in einem System mit relativ kleiner Kapazität, in welchem einem Programmbereich im Hinblick auf seine Speicherkapazität Beschränkungen auferlegt sind, und ein solcher Gemeinschaftsbereich in einem Hauptspeicher nicht vorgesehen werden kann, ist es notwendig, Verarbeitungsprogramme in Speicherbänken derart zu gestalten, daß sie einen Bankumschaltvorgang steuern. Die japanische Patentoffenlegungsschrift Nr. 120543/1987 offenbart ein Beispiel eines solchen Bankumschaltvorganges. Mit Bezug auf Fig. 1 wird nun eine Beschreibung eines in dieser Schrift offenbarten, herkömmlichen Bankumschaltverfahrens durchgeführt.
- Unter Bezug auf Fig. 1 wird davon ausgegangen, daß jede der Bänke A und B Adressen OOOOH bis FFFFH hat und ein Speicherbereich mit Adressen von OOOOH bis 1FFFH für Programme zugewiesen ist. Zudem wird davon ausgegangen, daß dieses Datenverarbeitungssystem ein System mit Vorabrufschema ist, bei dem während der Ausführung eines Befehles der nächste Befehle herangeholt wird.
- Zuerst wird durch die CPU auf die Bank A zugegriffen, so daß Schritte (Befehle) der darin gespeicherten Programme sequentiell herausgelesen und ausgeführt werden. Wenn das Programm zu einer Adresse x vorrückt, so daß ein dort gespeicherter Bankumschaltbefehl herausgelesen und ausgeführt wird, wird von der Bank A zur Bank B als der Speicherbank umgeschaltet, auf die zugegriffen werden soll. Dieser Bankumschaltvorgang wird durch ein zusätzliches Bit an einer Adresse ausgeführt. Genauer gesagt wird eine Kombination aus diesem zusätzlichen Bit und einem gezählten Wert eines Adresszählers (Programmzählers) zur Adressierung zu einer Bankadresse. Zum Beispiel ist das zusätzliche Bit für die Bank A "0" und das zusätzliche Bit für die Bank B "1". Auf die Bank A wird im Falle von Adressen 00000 bis 0FFFF zugegriffen, während auf die Bank B im Falle von Adressen 10000 bis 1FFFF zugegriffen wird.
- In diesem Bankumschaltschema wird ein zusätzliches Bit (das an einer geeigneten Position eines Speichers, praktischerweise in einem erweiterten Adressregister, gespeichert ist) durch den Bankumschaltbefehl aktualisiert, so daß ein Bankumschaltvorgang erreicht wird. Der Programmzähler wird jedoch nicht im Zähiwert geändert. Somit wird eine durch den Programmzähler ausgegebene Speicherzugriffsadresse zu einer Adresse x, x+1, x+2 ... . Deshalb werden in der Bank B Programmbefehle, die in der Adresse x+2 und nachfolgenden Adressen in der Bank B gespeichert sind, sequentiell ausgeführt. Da hier indessen von einem System eines Vorabrufschemas ausgegangen wird, wird ein durch Zugriff auf die Adresse x in der Bank A ausgelesener Bankumschaltbefehl zu einer Zeit, in welcher auf die nächste Adresse x+1 zugegriffen wird, so ausgeführt, daß eine Bankumschaltung erreicht wird. Da ein mit der Adresse x+1 ausgelesener Befehl ein Befehl in der Bank A ist und nicht benötigt wird, wird aus diesem Anlaß ein Befehl "NOP" (keine Operation) mit der Adresse x+1 in der Bank A gespeichert. Als Ergebnis wird in einer Zeit, in welcher auf die Adresse x+2 zugegriffen wird, kein Befehl ausgeführt, und es wird nur ein Befehl aus der Adresse x+2 (dargestellt durch den schraffierten Bereich in Fig. 1) in der Bank B ausgelesen. Wenn auf die Adresse x+3 zugegriffen wird, wird ein Befehl mit der Adresse x+2 in der Bank B ausgeführt.
- Falls dieses Bankumschaltschema auf die Ausführung einer Subroutine angewendet wird, treten somit folgende Probleme auf. Eine Programmtechnik zum Speichern eines in getrennten Speicherbereichen wiederholt benutzten Programms als Subroutine und zum bedarfsweisen Aufrufen dieser Subroutine ist bekannt, um dadurch die Redundanz eines Programms zu vermeiden und einen Programmbereich effektiv zu nutzen. Es sei der Fall betrachtet, in welchem in dem oben beschriebenen Bankumschaltschema eine Subroutine in einer Speicherbank von einer Hauptroutine in der anderen Speicherbank aufgerufen und ausgeführt wird. In diesem Fall ist in einer Vielzahl von Abschnitten, in welchen eine Hauptroutine versucht, eine Subroutine aufzurufen, eine Adressabstimmung zwischen einer Bankumschaltadresse der Hauptroutine und einer ersten Adresse der Subroutine erforderlich, so daß viel Zeit zum Entwickeln eines Programmes benötigt wird und die Effektivität der Programmentwicklung gesenkt wird.
- Unter der Voraussetzung, daß die Anzahl an aufzurufenden Subroutinen groß ist (es gibt viele Arten von Subroutinen) bringt zudem die Beschränkung, daß eine Adressabstimmung erforderlich ist, eine Situation hervor, in welcher ein Programm, welches ein gewünschtes Ende bildet, nicht entwickelt werden kann. Unter Berücksichtigung eines Falles, in welchem drei oder mehr Speicherbänke vorgesehen sind, tauchen die gleichen Schwierigkeiten auf, falls das oben beschriebene Bankumschaltschema angewendet wird, so daß es nahezu unmöglich ist, die Subroutinen z. B. ineinander zu verschachteln.
- Um eine solche Schwierigkeit zu überwinden, ist es notwendig, alle benötigten Subroutinen in jeder der Speicherbänke zu speichern. In diesem Fall jedoch nimmt die in jeder der Speicherbänke benötigte Speicherkapazität zu, so daß nicht alle gewünschten Programme in einem begrenzten Programmspeicherbereich gespeichert werden können.
- Zudem umfaßt ein Verarbeitungsprogramm eine Unterbrechungsverarbeitungsroutine ähnlich einer Subroutine. Die Unterbrechungsverarbeitungsroutine stimmt mit der Subroutine darin überein, daß sie ein unabhängiges Programm ist, das in einem anderen Speicherbereich als einem Bereich für die Hauptroutine gespeichert ist, während sie sich gegenüber der Subroutine vollständig darin unterscheidet, daß sie nicht auf den Verarbeitungsinhalt der Hauptroutine bezogen ist. In der folgenden Beschreibung werden die Subroutine und die Unterbrechungsverarbeitungsroutine allgemein als Unterprogramm bezeichnet, in dem Sinne, daß sie ein von der Hauptroutine getrenntes Programm sind.
- Ein Unterbrechungssteuerungsverfahren in dem Speicherbank- Umschaltschema ist z. B. in der japanischen Patentoffenlegungsschrift Nr. 30050/1982 offenbart. In dieser Druckschrift des Standes der Technik ist ein Unterbrechungsverarbeitungsprogramm bzw. ein Banksteuerprogramm für einen Unterbrechungsvorgang zum Bestimmen einer besonderen Speicherbank, welche das Unterbrechungsverarbeitungsprogramm, eine Bankadresse oder dgl. speichert, in einem getrennt von einer Anzahl von Speicherbänken vorgesehenen Gemeinschaftsspeicherbereich gespeichert. Eine Unterbrechungsverarbeitung wird in Übereinstimmung mit einem in diesem Gemeinschaftsspeicherbereich und/oder in einer besonderen Speicherbank gespeicherten Verarbeitungsprogramm ausgeführt.
- Dieses Schema des Standes der Technik kann nicht auf ein System angewendet werden, in welchem ein Bereich zum Speichern eines mit einer Unterbrechungsverarbeitung verbundenen Programmes im Hinblick auf eine Systemgestaltung oder in Abhängigkeit von einer Speicherkapazität des Systems nicht in einem getrennt von Speicherbänken vorgesehenen Gemeinschaftsspeicherbereich ausgebildet sein kann. Folglich muß in einem solchen System das gleiche Unterbrechungsverarbeitungsprogramm zwangsweise in jeder der Speicherbänke gespeichert werden. Dies bewirkt, daß das Unterbrechungsverarbeitungsprogramm unnötigerweise einen um das Speicherbankumschaltschema erweiterten Speicherbereich belegt, so daß ein Speicherbereich zum Speichern eines gewünschten Verarbeitungsprogrammes knapp wird.
- Zudem hat die oben beschriebene japanische Patentoffenlegungsschrift Nr. 120543/1987 ein Verfahren vorgeschlagen, mit dem nachfolgend auf einen Bankumschaltbefehl eine einen Befehl JMP (Sprung) anstelle eines Befehl NOP benutzende Sprungadresse bestimmt wird, um die Notwendigkeit einer Adressabstimmung in dem Speicherbank-Umschaltschema auszuschließen. In diesem Verfahren des Standes der Technik wird jedoch die Sprungadresse unter Verwendung des Befehls JMP nur nach einem Bankumschaltschritt bestimmt, und eine Bestimmung einer Rückkehradresse oder dgl. wird gar nicht berücksichtigt. Hinzu kommt, daß in einer allgemeinen CPU nicht sichergestellt ist, daß das eigentliche Umschalten der Speicherbänke nach Ausführung des Befehls JMP abgeschlossen ist. Somit macht es dieses Verfahren schwierig, eine zuverlassige Operation auszuführen. Folglich kann dieses Verfahren des Standes der Technik nicht auf ein Subroutine-Ausführungsverfahren und ein Unterbrechungsverarbei tungsverfahren in einem System mit Speicherbank-Umschaltschema angewendet werden.
- Das Dokument D1 des Standes der Technik, Electrical Design News, Band 32, April 1987, Seiten 189 bis 194, 196, 198, Newton, MA, USA; T. Kendall: "Page addressing expands addressable memory in maP systems", offenbart eine Seitenadressierung für eine Speicherplatzerweiterung in einem Mikroprozessorsystem. In D1 ist eine globale Subroutine in einer besonderen Seite gespeichert, und die Seite und die Adresse der globalen Subroutine sind in einer Nachschlagstabelle gesammelt. Auf diese Tabelle wird durch einen Befehl in einem unter Ausführung stehenden Programm Bezug genommen. Zudem offenbart D1, daß Aufruf-, Sprung-, Reset- und Unterbrechungsbefehle auf jeder Seite an identischen Stellen angeordnet sind.
- Eine Aufgabe der vorliegenden Erfindung ist, eine Datenverarbeitungsvorrichtung eines Speicherbank-Umschaltschemas zu schaffen, in welchem ein das Umschalten von Speicherbänken umfassendes Programm ohne Berücksichtigung einer Adressabstimmung unter den Speicherbänken gespeichert werden kann.
- Eine weitere Aufgabe der vorliegenden Erfindung ist, eine Datenverarbeitungsvorrichtung mit Bankumschaltschema zu schaffen, in welchem ein Programm, das Umschaltschritte für Speicherbänke enthält, in einem beschränkten Speicherbereich wirksam gespeichert werden kann.
- Noch eine weitere Aufgabe der vorliegenden Erfindung ist, eine Datenverarbeitungsvorrichtung mit Bankumschaltschema zu schaffen, in welchem eine Subroutine und eine Unterbrechungshandhabungssubroutine, die das Umschalten von Speicherbänken anfordern, in einer Freiwahl-Speicherbank angeordnet sein können.
- Eine weitere Aufgabe der vorliegenden Erfindung ist, eine Subroutine-Ausführungsvorrichtung mit Bankumschaltschema zu schaffen, in welcher eine Subroutine in einer Freiwahl- Speicherbank von einer Freiwahl-Speicherbank aufgerufen werden kann und die Rückkehr zu der Ursprungs-Speicherbank durchgeführt werden kann.
- Noch eine weitere Aufgabe der vorliegenden Erfindung ist, eine Unterbrechungsverarbeitungs-Ausführungsvorrichtung mit Bankumschaltschema zu schaffen, in welcher ein Programmbereich effektiv genutzt werden kann.
- Noch eine weitere Aufgabe der vorliegenden Erfindung ist, ein Unterprogramm-Ausführungsverfahren in einer Datenverarbeitungsvorrichtung mit Bankumschaltschema zu schaffen, durch welches ein Unterprogramm aufgerufen werden kann und die Rückkehr zwischen Freiwahl-Speicherbänken durchgeführt werden kann.
- Noch eine weitere Aufgabe der vorliegenden Erfindung ist, ein Verfahren zum Ausführen einer Subroutine und eines Unterbrechungsverarbeitungsprogrammes in einer Datenverarbeitungsvorrichtung mit Speicherbankumschaltschema zu schaffen, durch welches ein Speicherbereich effektiv genutzt werden kann.
- Noch eine weitere Aufgabe der vorliegenden Erfindung ist, ein Subroutine-Ausführungsverfahren zu schaffen, durch welches die Ausführungszeit eines Programms, das eine das Umschalten von Speicherbänken anfordernde Subroutine anfordert, verkürzt werden kann.
- Eine weitere Aufgabe der vorliegenden Erfindung ist, ein Unterprogramm-Ausführungsverfahren mit Bankumschaltvorgang zu schaffen, durch welches das gleiche Bankumschaltsteuerprogramm gemeinsam für eine Vielzahl von Unterprogrammen benutzt werden kann.
- Noch eine weitere Aufgabe der vorliegenden Erfindung ist, ein Unterprogramm-Ausführungsverfahren mit Bankumschaltvorgang zu schaffen, durch welches Speicherbänke in wenigen Verarbeitungsschritten umgeschaltet werden können.
- Die Datenverarbeitungsvorrichtung mit Bankumschaltschema gemäß der vorliegenden Erfindung, wie beansprucht, hat eine Anzahl von Speicherbänken, wobei ein Bankumschaltsteuerprogramm in einem Speicherbereich mit den gleichen Adressen in jeder der Anzahl von Speicherbänken gespeichert ist.
- In jedem Schritt dieses Bankumschaltsteuerprogramms wird eine Adressabstimmung unter den Speicherbänken erreicht.
- Das Verfahren zum Ausführen eines Unterprogrammes gemäß der vorliegenden Erfindung umfaßt, wie beansprucht, die Schritte des Umschaltens von Speicherbänken und des Auslesens eines Bankumschaltsteuerprogramms aus einer zweiten Speicherbank in Übereinstimmung mit einem Bankumschaltsteuerprogramm in einer ersten Speicherbank, wenn die Ausführung eines Unterprogrammes in der zweiten Speicherbank während der Ausführung eines Verarbeitungsprogrammes in der ersten Speicherbank angefordert wird, des Aufrufens eines angeforderten Unterprogrammes in Übereinstimmung mit dem ausgelesenen Bankumschaltsteuerprogramm in der zweiten Speicherbank, des Zurückkehrens zu dem Bankumschaltsteuerprogramm in der zweiten Speicherbank, nachdem die Ausführung dieses angeforderten Unterprogrammes abgeschlossen ist, des Umschaltens der Speicherbänke von der zweiten Speicherbank zu der ersten Speicherbank und des Auslesens des Bankumschaltsteuerprogrammes aus der ersten Speicherbank in Übereinstimmung mit dem zurückgekehrten Bankumschaltsteuerprogrammes in der zweiten Speicherbank und des Zurückkehrens zu dem Ursprungsverarbeitungsprogramm in Übereinstimmung mit dem ausgelesenen Bankumschaltsteuerprogramm in der ersten Speicherbank.
- In dem oben beschriebenen Schema wird ein Bankumschaltsteuerprogramm nur in demselben Adressenbereich in jedem der Speicherbänke gespeichert, und das Umschalten der Speicherbänke, das Aufrufen des Unterprogrammes und die Rückkehr zu dem Ursprungsverarbeitungsprogramm wird in Übereinstimmung mit diesem Bankumschaltsteuerprogramm erreicht. Somit muß eine Adressabstimmung des Hauptprogrammes und des Unterprogrammes nicht berücksichtigt werden, so daß das Unterprogramm an beliebigen Adresspositionen der Speicherbank angeordnet sein kann. Folglich kann der Speicherbereich effektiv genutzt werden, und die Programmentwicklungszeit kann verkürzt werden.
- Insbesondere kann der Speicherbereich in einem Schema, in welchem eine Art eines Bankumschaltsteuerprogrammes gemeinsam für eine Vielzahl von Unterprogrammen verwendet wird, effektiver genutzt werden.
- Zudem können die Speicherbänke in einem Schema, in welchem eine Bankumschaltsteuerroutine für jedes Unterprogramm vorgesehen ist, in einigen wenigen Verarbeitungsschritten umgeschaltet werden, das heißt, mit hoher Geschwindigkeit.
- Die vorstehenden und weiteren Aufgaben, Merkmale, Aspekte und Vorteile der vorliegenden Erfindung werden aus der folgenden, detaillierten Beschreibung der vorliegenden Erfindung in Verbindung mit den beigefügten Zeichnungen weiter verdeutlicht.
- Fig. 1 ist ein Diagramm, das schematisch ein System mit einem herkömmlichen Bankumsdhaltschema zeigt;
- Fig. 2 ist ein Diagramm, das schematisch eine Systemkonfiguration mit einem Bankumschaltschema gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- Fig. 3 ist ein Diagramm, das schematisch die Inhalte zeigt, die in Speicherbänken in einem Subroutineausführungsschema gespeichert sind, das das in Fig. 2 gezeigte System verwendet;
- Fig. 4 ist ein Diagramm, das schematisch eine Systemkonfiguration eines Bankumschaltschemas gemäß einer weiteren Ausführungsform der vorliegenden Erfindung zeigt;
- Fig. 5 ist ein Diagramm, das den Inhalt darstellt, der in einer Speicherbank in einem Subroutineausführungsschema gespeichert ist, das das in Fig. 4 gezeigte System verwendet;
- Fig. 6 ist ein Diagramm, das schematisch eine Systemkonfiguration mit einem Bankumschaltschema gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung zeigt;
- Fig. 7 ist ein Diagramm, das den Inhalt darstellt, der in jeder Speicherbank in einem Unterbrechungsverarbeitungsschema gespeichert ist, das das in Fig. 6 gezeigte System verwendet;
- Fig. 8 ist ein Diagramm, das den in jeder Speicherbank in einem weiteren Unterbrechungsverarbeitungsschema, das das in Fig. 6 gezeigte System verwendet, gespeicherten Inhalt darstellt;
- Fig. 9 ist ein Diagramm, das schematisch eine Systemkonfiguration eines Speicherbankumschaltschemas gemäß einer weiteren Ausführungsform der vorliegenden Erfindung zeigt;
- Fig. 10 ist ein Diagramm, das den in jeder Speicherbank in einem Unterbrechungssteuerschema, das das in Fig. 9 gezeigte System verwendet, gespeicherten Inhalt darstellt; und
- Fig. 11 ist ein Diagramm, das den in jeder Speicherbank in einem weiterem Unterbrechungssteuerschema, das das in Fig. 9 gezeigte System verwendet, gespeicherten Inhalt darstellt.
- Mit Bezug auf die Zeichnungen wird nun eine Beschreibung eines Unterprogrammausführungsschemas in einem Datenverarbeitungssystem mit einem Speicherbankumschaltschema der Reihe nach für eine Subroutine und eine Unterbrechungshandhabungsroutine durchgeführt.
- Fig. 2 zeigt eine schematische Anordnung eines Hauptbereichs eines Datenverarbeitungssystems mit Speicherbankumschaltschema gemäß einer ersten Ausführungsform der vorliegenden Erfindung. Mit Bezug auf Fig. 2 umfaßt ein Datenverarbeitungssystem eine CPU 1 zum Durchführen einer Datenverarbeitung, einer Steueroperation oder dgl. in Übereinstimmung mit einem angewendeten Programm, Speicherbänke A4 und B5 zum jeweiligen Speichern eines vorbestimmten Verarbeitungsprogrammes und einen Hauptspeicher 7 zum Speichern verschiedener Daten, eines von einer externen Vorrichtung (nicht dargestellt) geladenen Anwenderprogramms oder dgl.
- Für die CPU 1 wird beispielhaft ein im Handel erhältlicher, von der Intel Corp. hergestellter 16-Bit 8086 verwendet. Die Speicherbank A4 umfaßt einen Nurlesespeicher (ROM), welcher ein vorbestimmtes, systemeigenes erstes Verarbeitungsprogramm fest speichert. Ebenso umfaßt die Speicherbank B5 einen ROM, welcher ein systemeigenes zweites Verarbeitungsprogramm fest speichert. Der Hauptspeicher 7 umfaßt einen Freizugriffsspeicher (RAM) von der Art, daß der Inhalt desselben aktualisiert werden kann. Es ist ein Registerbereich zum temporären Speichern des aus den Speicherbänken A4 und B5 und dem Hauptspeicher 7 ausgelesenen Inhaltes vorgesehen. Dieser Registerbereich, welcher in der folgenden Beschreibung der Operation als Register BX dargestellt wird, ist in der CPU 1 vorgesehen, wie dargestellt, oder andernfalls in einer vorbestimmten Region des Hauptspeichers 7 vorgesehen.
- Um die Speicherbänke umzuschalten, sind ein Bankregister 8 zum Speichern eines Bankbestimmungsdatums zum Spezifizieren einer zuzugreifenden Bank und ein Dekoder 9 zum Auswählen einer der Speicherbänke A4 und B5 in Abhängigkeit von dem Inhalt des Registers 8, um die ausgewählte Bank in einen Freigabezustand zu bringen, vorgesehen.
- Der Dekoder 9 hat einen allgemeinen Aufbau, das heißt, umfaßt einen NOR- oder NAND-Dekoder. Obwohl in der oben beschriebenen Systemkonfiguration die Speicherbänke A und B jeweils ROMs 4 und 5 umfassen, können die Speicherbänke A und B auf einem einzigen ROM-Chip vorgesehen sein.
- Mit Bezug auf Fig. 3 wird nun eine Beschreibung der jeweils in den Speicherbänken A und B gespeicherten Inhalte durchgeführt.
- Jede der Speicherbänke A4 und B5 umfaßt einen Bereich 90 zum Speichern eines Bankumschaltsteuerprogramms (nachfolgend als Bankumschaltmanager bezeichnet) und einen Bereich 100 zum Speichern eines vorbestimmten Verarbeitungsprogramms. Derselbe Adressbereich (Adressen 0 bis 5 in Fig. 3) in jeder der Speicherbänke A4 und B5 ist dem Bereich 90 zugewiesen. Die Verarbeitungsprogrammspeicherbereiche 100 in den Speicherbänken A4 und B5 speichern unterschiedliche Verarbeitungsprogramme. Um interne Daten und Adressen zu übertragen, sind ein Datenbus 2 und ein Adressbus 3 vorgesehen.
- Mit Bezug auf die Figuren 2 und 3 wird nun eine Beschreibung einer Operation durchgeführt, in welcher eine Subroutine in der Speicherbank B5 von einer Hauptroutine in der Speicherbank A4 aufgerufen und ausgeführt wird. In Fig. 3 ist der Operationsablauf durch Pfeile wiedergegeben.
- In dem Speicherbereich 100 in der Speicherbank B5 sind eine Anzahl von Subroutinen SUB 1, SUB 2, ... an Adresspositionen gespeichert, die unabhängig von einer Adresse sind, an welcher ein Subroutineaufrufbefehl CALL der Hauptroutine in der Speicherbank A4 gespeichert ist.
- In der Hauptroutine der Speicherbank A4 ist ein Befehl MOV BX, Y zum Übertragen des Inhaltes einer Startadresse Y einer Subroutine SUB 1 an das Register BX (vorgesehen in der CPU 1 oder dem RAM 7, in Fig. 2 ist es in der CPU 1 enthalten) an einer Adresse X gespeichert, und ein Befehl CALL 0 zum Aufruf eines Bankumschaltmanagers, der an der Adresse 0 startet, ist an der nächsten Adresse x+1 gespeichert.
- In dem Bankumschaltmanager in der Speicherbank A4 ist ein Befehl zum Umschalten der Speicherbänke von der Bank A zur Bank B an der Adresse 0 gespeichert, ein Befehl JMP $ zum Springen zur nächsten Adresse durch andauernde Schleifenbildung ist an der Adresse 1 gespeichert, ein Befehl NOP ist an der jeweiligen Adresse 2 bis 4 gespeichert, und ein Befehl RET zum Zurückkehren zur Hauptroutine nach der Beendigung der Subroutine ist an der Adresse 5 gespeichert.
- In einem Bankumschaltmanager für die Speicherbank B5 ist ein Befehl NOP an der jeweiligen Adresse 0, 1 und 5 gespeichert, ist ein Befehl CALL BX zum Aufrufen des Inhaltes des Register BX an der Adresse 2 gespeichert, ist ein Bankumschaltbefehl zum Umschalten der Speicherbänke von der Bank A zur Bank B an der Adresse 3 gespeichert und ist ein Befehl JMP $ an der Adresse 4 gespeichert. Eine Subroutine, die an einer in dem Register BX gesetzten Adresse startet, wird durch den Befehl CALL BX an der Adresse 2 aufgerufen.
- Es sei der Fall betrachtet, in welchem die Hauptroutine in der Speicherbank A4 ausgeführt wird und ein Programmschritt die Adresse X erreicht. Ein Datum, das eine Adresse Y anzeigt, wird durch den MOV-Befehl an der Adresse X in dem Register BX gesetzt. Dann wird der Inhalt der Adresse 0 in der Speicherbank A4 durch den CALL-Befehl an der Adresse x+1 aufgerufen, so daß ein Bankumschalten von der Speicherbank A auf die Speicherbank B durchgeführt wird. Nachfolgend wird der JMP-Befehl an der Adresse 1 in der Speicherbank A4 ausgelesen. Ein Vorabrufschema wird hier als System vorausgesetzt. Der JMP $-Befehl an der Adresse 1 in der Speicherbank A4 wird während der Ausführung des Bankumschaltbefehls an der Adresse 0 in der Speicherbank A4 ausgelesen und in einem Befehlsregister (nicht gezeigt) gehalten. Somit ist der Inhalt der Adresse 1 in der Speicherbank A4 ein als nächstes nach dem Umschalten der Speicherbänke auszuführender Befehl. Die CPU 1 setzt durch den Bankumschaltbefehl ein Bankbestimmungsdatum der Speicherbank B5 und schreibt dieses in das Bankregister 7, und der Dekoder 8 dekodiert das in dieses Bankregister 7 gesetzte Datum, um die Speicherbank A4 zu inaktivieren und die Speicherbank B5 zu aktivieren, so daß ein Bankumschalten erreicht wird. Da in diesem Fall das System ein Vorabrufschema ist, wird der wesentliche Bankumschaltvorgang während der Ausführung des Befehls JMP $ an der Adresse 1 in der Speicherbank A4 abgeschlossen. Somit wird der Befehl CALL BX an der Adresse 2 in der Speicherbank B4 nach dem Befehl JMP $ ausgeführt. Die Adresse Y, welche bereits in dem Register BX gespeichert wurde, wird durch diesen CALL-Befehl ausgelesen, so daß die an dieser Adresse Y startende Subroutine SUB 1 ausgeführt wird. Wenn die Subroutine SUB 1 beendet ist und der Schritt zu einer Adresse Y' fortschreitet, wird der dem CALL-Befehl in der Speicherbank B5 nachfolgende Bankumschaltbefehl an der Adresse (Adresse 3) ausgeführt, so daß ein Bankumschalten von der Speicherbank B5 auf die Speicherbank A4 unter der Steuerung der CPU 1 durchgeführt wird. Nachfolgend wird dann der Befehl RET an der Adresse 5 in der Speicherbank A4 durch den Befehl JMP $ an der Adresse 4 in der Speicherbank B5 ausgeführt. Der Inhalt der nächsten, dem CALL-Befehl in der Speicherbank A4 nachfolgenden Adresse (Adresse X+2) wird ausgelesen und ausgeführt. Folglich ist die Rückkehr zur Hauptroutine in der Speicherbank A4 beendet, so daß das Programm dieser Hauptroutine sequentiell ausgeführt wird.
- Wenn die Hauptroutine in der Speicherbank A4 die Subroutine SUB 2 in der Speicherbank B5 aufruft, ist es notwendig, eine Startadresse W in der Subroutine SUB 2 an das den MOV- Befehl benutzende Register BX zu übertragen.
- Um von der Hauptroutine in der Speicherbank B5 die Subroutine in der Speicherbank A4 aufzurufen und die Subroutinen wechselweise durch eine der beiden Speicherbänke A4 und B5 aufzurufen, wird ein Bereich für einen Bankumschaltmanager um das 2-fache des in Fig. 3 gezeigten Bereichs erweitert, um denselben Umschaltmanager wie den Bankumschaltmanager (Adressen 0 bis 5) der Speicherbank A4 in diesem erweiterten Bereich der Speicherbank B5 zu speichern und denselben Umschaltmanager wie den in Fig. 3 gezeigten Bankumschaltmanager der Speicherbank B5 in dem erweiterten Bereich der Speicherbank A4 zu speichern. Bei dieser Gelegenheit werden ein in dem erweiterten Bereich gespeicherter Befehl MOV zum Aufrufen einer Subroutine und ein Befehl CALL zum Aufrufen des Bankumschaltmanagers in der Hauptroutine in der Speicherbank B5 sowie in der Hauptroutine in der Speicherbank A4 gespeichert.
- Es wird nun eine Beschreibung einer Struktur durchgeführt, in welcher drei oder mehr Speicherbänke vorgesehen sind und eine Subroutine aus den drei oder mehr Speicherbänken aufgerufen und ausgeführt wird.
- Fig. 4 zeigt als Beispiel eine schematische Anordnung mit dem System eines Bankumschaltschemas, das drei Speicherbänke umfaßt. In Fig. 4 ist als Zusatz zu der in Fig. 2 gezeigten Anordnung eine Speicherbank C6 vorgesehen, die eine dritte Speicherbank bildet. Die Speicherbank C6 umfaßt einen ROM. Die Speicherbänke A4, B5 und C6 speichern unterschiedliche Verarbeitungsprogramme.
- Es sind ein Register AH zum Speichern eines Rückkehrbankbestimmungsdatums, ein Register AL zum Speichern eines Datums zum Bestimmen einer Speicherbank, welche das Umschaltziel ist, und ein Register BX zum Speichern einer Startadresse einer Subroutine vorgesehen. Die Register AH, AL und BX sind, wie dargestellt, in der CPU 1 vorgesehen oder in einem vorbestimmten Bereich im Hauptspeicher (RAM) 7 vorgesehen. Im allgemeinen sind die Register A, B, C, D und dgl. zum temporären Speichern zu verarbeitender Daten in der CPU 1 vorgesehen. Die Register A bis D werden geeignet als die Register AL, AH und BX benutzt.
- Fig. 5 zeigt ein Beispiel der jeweils in Speicherbänken gespeicherten Inhalte. Jede der Speicherbänke A4, B5 und C6 umfaßt einen Bankumschaltmanager-Speicherbereich 90 und einen Verarbeitungsprogrammbereich 100 zum Speichern eines vorbestimmten Programms. Derselbe bestimmte Bereich in jedem der Speicherbänke A4, B5 und C6, das heißt, ein Bereich an Adressen 0 bis (S-1), ist dem Bankumschaltmanager- Speicherbereich 90 zugeteilt. Ein Bereich in den verbleibenden Adressen in jeder der Speicherbänke A4, B5 und C6 ist dem Verarbeitungsprogrammbereich 100 zugeteilt. Die Speicherbänke A4, B5 und C6 speichern jeweils unterschiedliche Verarbeitungsprogramme.
- Ein Bankumschaltmanager umfaßt grob ein erstes bis viertes Programm, welche jeweils an Adressen 0 bis (P-1), Adressen P bis (Q-1), Adressen Q bis (R-1) und Adressen R bis (S-1) gespeichert sind.
- In jeder der Bänke A4, B5 und C6 umfaßt das an den Adressen 0 bis (P-1) gespeicherte erste Programm einen Befehl zum Bewahren seines eigenen Bankbestimmungsdatums in einem vorbestimmten Register, welches z. B. das Register AH ist, als Rückkehrbankbestimmungsdatum und einen Befehl zum Dekodieren eines in dem vorbestimmten Register, wie beispielsweise dem Register A1, aufbewahrten Sprungbestimmungsdatums und zum Springen zu einer entsprechenden Adresse in dem zweiten Programm (wie unten beschrieben).
- Das zweite Programm, das in den Adressen P bis (Q-1) in jeder der Speicherbänke A4, B5 und C6 gespeichert ist, wird zum tatsächlichen Umschalten zu einer Sprungbank benutzt. Das zweite Programm umfaßt eine Kombination aus einem NOP- Befehl und einem JMP Q-Befehl und zwei Bankumschaltbefehlen zum Umschalten der Bänke von seiner eigenen Bank zu einer der beiden anderen Speicherbänke. In dem zweiten Programm sind ein Befehl zum Umschalten zur Bank A, ein Befehl zum Umschalten zur Bank B und ein Befehl zum Umschalten zur Bank C jeweils an den gleichen Adressen in den Speicherbänken A, B und C gespeichert. Der NOP-Befehl ist in den Bänken an den gleichen Adressen gespeichert, die die Bestimmungsziele darstellen, auf die durch die Bankumschaltbefehle umgeschaltet werden soll.
- Die dritten Programme an den Adressen Q bis (R-1) in den drei Speicherbänken sind jeweils gleich, wobei jedes einen Befehl zum Aufrufen einer Subroutine, die an einer in dem Register BX aufbewahrten Sprungadresse startet, und einen Befehl zum Dekodieren eines in dem Register AH aufbewahrten Rückkehrbank-Bestimmungsdatums umfaßt, um in dem vierten Programm zu einer entsprechenden Adresse zu springen (wie unten beschrieben).
- Das vierte Programm an den Adressen R bis (S-1) ist ein Rückkehrprogramm zum eigentlichen Umschalten zu einer Rückkehrbank. Das vierte Programm hat fast das gleiche Schema wie das zweite Programm, unterscheidet sich aber von dem zweiten Programm darin, daß ein RET-Befehl anstelle des JMP-Befehls gespeichert ist.
- Unter der Voraussetzung, daß Subroutinen SUB 1 und SUB 2 jeweils in Bereichen gespeichert sind, die an Adressen Y und W in der Speicherbank C6 starten, wird nun eine Beschreibung einer Operation zum Aufrufen der Subroutine SUB 1 in der Speicherbank C6 von der Hauptroutine in der Speicherbank A4 durchgeführt. Kurz zur Darstellungsweise ausgeführt, wird in der folgenden Beschreibung davon ausgegangen, daß dieses System kein Vorabrufschema ist, und ein Befehl jedesmal dann herangeholt wird, wenn die Ausführung des Befehis abgeschlossen ist.
- Ein MOV-Befehl zum Bewahren eines Sprungbankbestimmungsdatums (spezifiziert die Bank C6), das eine die Subroutine SUB 1 speichernde Speicherbank angibt, ist an einer Adresse X in der Speicherbank A4 gespeichert. Ein MOV-Befehl zum Bewahren einer Startadresse der Subroutine SUB 1 in dem Register BX als Sprungadresse ist an Adresse X+1 gespeichert. Ein CALL-Befehl zum Aufrufen eines an der Adresse 0 startenden Bankumschaltmanagers (ein erstes Programm) ist an Adresse X+2 gespeichert. Es sei angemerkt, daß die Adresse X zum Aufrufen einer Subroutine in der Hauptroutine und der Startadresse der Subroutine SUB 1 voneinander vollständig unabhängig sind. Es wird nun eine Beschreibung der Operation durchgeführt. Pfeile in Fig. 5 stellen den Operationsablauf dar.
- Wenn eine Verarbeitung der Hauptroutine in der Speicherbank A4 fortschreitet und ein Programm zu der Adresse X gelangt, wird durch den MOV-Befehl an der Adresse X ein Sprungbank (Speicherbank C6) -Bestimmungsdatum in dem Register AL gespeichert. An der Adresse X+1 wird die Startadresse Y der Subroutine SUB 1 in dem Register BX aufbewahrt. Nachfolgend wird an der Adresse X+2 der Inhalt der Adresse 0 in der Speicherbank A4 aufgerufen, so daß der Bankumschaltmanager in der Speicherbank A4 ausgeführt wird. Bei diesem Bankumschaitmanager wird seine eigene Speicherbanknummer A in dem Register AH als Rückkehrbankbestimmungsdatum aufbewahrt. Dann wird eine Sprungbanknummer (in diesem Fall die Bank C), welche bereits in dem Register AL aufbewahrt wurde, dekodiert, und dann wird ein Sprung zu einer entsprechenden Adresse in dem zweiten Programm in der Speicherbank A4 durchgeführt. Da die Bank C6 die Sprungbank ist, findet in dem zweiten Programm ein Sprung zu einer Adresse zum Ausführen der Umschaltung auf die Bank C statt, so daß ein Bankumschalten zu der Speicherbank C6 durchgeführt wird. In der Speicherbank C6 ist in Nachfolge auf den NOP-Befehl ein JMP Q-Befehl gespeichert. Andererseits verändert sich ein Adresszeiger (nicht dargestellt) zum Ausgeben einer auszuführenden Adresse in der Zeit des Bankumschaltvorganges absolut nicht in seinem Inhalt. Somit ist der nach Beendigung des Bankumschaltvorganges auszuführende Befehl der JMP Q- Befehl in der Speicherbank C6. Folglich wird der in dem Register BX aufbewahrte Inhalt der Startadresse Y der Subroutine SUB 1 in Übereinstimmung mit dem Befehl CALL BX an der Adresse Q ausgelesen, so daß die Subroutine SUB 1 ausgeführt wird.
- Eine Rückkehrbankbestimmungsoperation des dritten Programms in der Speicherbank C6 wird durch einen RET-Befehl an einer Adresse Y' durchgeführt, nachdem die Ausführung der Subroutine SUB 1 beendet ist. In dieser Rückkehrbankbestimmungsoperation wird das in dem Register AH aufbewahrte Rückkehrbankbestimmungsdatum zuerst dekodiert, und ein Sprung zu einer entsprechenden Adresse des vierten Programmes in der Speicherbank C6 wird in Übereinstimmung mit dem Dekodierungsergebnis durchgeführt. Da die Rückkehrbank die Speicherbank A4 ist, findet in diesem Fall im vierten Programm in der Speicherbank C6 ein Sprung zu einem Befehl zum Umschalten auf die Bank A statt, so daß ein Umschalten von der Bank C6 zur Bank A4 durchgeführt wird.
- Nach der Bankumschaltung wird die Rückkehr zu der Hauptroutine in der Speicherbank A4 durch den RET-Befehl des vierten Programms in der Speicherbank A4 herbeigeführt. Der Inhalt des Bankregisters 8 wird durch den Bankumschaltbefehl unter Steuerung der CPU 1 geändert, und der Dekoder 9 aktiviert eine entsprechende Speicherbank in Übereinstimmung mit diesem geänderten Inhalt des Bankregisters, so daß eine Bankumschaltung erreicht wird.
- Für den Fall, daß die Subroutine SUB 2 aufgerufen wird, ist es ferner notwendig, durch den MOV-Befehl an der Adresse X im Speicher A4 die Startadresse W der Subroutine SUB 2 in dem Register BX auf zubewahren.
- Obwohl in der oben beschriebenen Ausführungsform eine Beschreibung für den Fall durchgeführt wurde, in welchem die Subroutine in der Speicherbank C6 von der Hauptroutine in der Speicherbank A4 aufgerufen wird, kann natürlich auch eine Subroutine in einer anderen Speicherbank von einer Hauptroutine in einer beliebig anderen der Speicherbänke aufgerufen werden.
- In der oben beschriebenen Weise kann in einem System mit einem Speicherbankumschaltschema mit einer Anzahl von Speicherbänken eine Subroutine in einer frei gewählten Speicherbank aus einer Hauptroutine in einer beliebigen Speicherbank aufgerufen und ausgeführt werden. Zudem ist eine störanfällige Adressabstimmung zwischen der Hauptroutine und der Subroutine nicht erforderlich. Somit kann die Subroutine an einer frei gewählten Adresse angeordnet werden, so daß die Arbeitseffektivität beim Entwickeln eines Programms deutlich verbessert werden kann.
- Da ein Bankumschalten in Übereinstimmung mit nur einem in einem bestimmten Adressbereich gespeicherten Programm erreicht werden kann, kann zudem ein Programmbereich zum Bankumschalten reduziert werden.
- Eine Beschreibung wird nun für den Fall durchgeführt, in welchem das oben beschriebene Schema, in welchem ein Bankumschaltprogramm in einem bestimmten Adressbereich in einer Speicherbank gespeichert ist, auf einen Unterbrechungshandhaber (handler) angewendet wird.
- Fig. 6 zeigt einen Hauptbereich einer mit einer Unterbrechungsverarbeitung in Verbindung stehenden Konfiguration, in einem System mit einem Speicherbankumschaltschema, das zwei darin vorgesehene Speicherbänke aufweist.
- In Fig. 6 ist als Zusatz zu der in Fig. 2 gezeigten Anordnung eine Unterbrechungssteuereinheit 20 vorgesehen. Die Unterbrechungssteuereinheit 20 überwacht verschiedene Unterbrechungssignale, erzeugt ein Signal INT zum Anzeigen des Auftritts einer Unterbrechung, um dieses der CPU 1 zum Zeitpunkt des Auftritts einer Unterbrechung zuzuführen und sendet eine Vektoradresse, die dem Typ der auftretenden Unterbrechung entspricht, an einen Adressbus 2.
- Eine Unterbrechungsvektortabelle, die eine Startadresse jedes auszuführenden Unterbrechungshandhabers enthält und mit Bezug auf jede Vektoradresse in Tabellenform entwickelt ist, ist in einem vorbestimmten Bereich im Hauptspeicher 7 gespeichert. Wenn eine Unterbrechung auftritt, unterbricht die CPU 1 ein in Ausführung befindliches Verarbeitungsprogramm und liest eine der Vektoradresse aus dieser Tabelle entsprechende Startadresse aus, um ein an der aus der Tabelle ausgelesenen Adresse startendes Unterprogramm auszuführen.
- Fig. 7 zeigt ein Beispiel eines in Speicherbänken A und B gespeicherten Programms. Fig. 7 zeigt nur ein Programm, das eine bestimmte Unterbrechung aus einer Vielzahl von Unterbrechungen betrifft. Zudem wird davon ausgegangen, daß eine Adresse X dazu bestimmt ist, zum Zeitpunkt des Auftritts dieser Unterbrechung in Übereinstimmung mit einer Unterbrechungsvektortabelle im Hauptspeicher 7 ausgeführt zu werden.
- Jede der Speicherbänke A4 und B5 umfaßt einen Bereich 90 zum Speichern eines Bankumschaltsteuerprogrammes (Bankumschaltmanager) und einen Bereich 100 zum Speichern eines vorbestimmten Verarbeitungsprogramms. In jeder der Speicherbänke A4 und B5 ist der gleiche Adressenbereich (Adressen 0 bis 5 in Fig. 7) dem Bankumschaltmanager- Speicherbereich 90 zugeordnet.
- Der Verarbeitungsprogrammbereich 100 in der Speicherbank A4 umfaßt einen Bereich (ein Bereich von Adressen X bis W) zum Speichern eines Unterbrechungsverarbeitungsprogrammes 12, das eine bestimmte Unterbrechung betrifft, und einen Bereich zum Speichern eines vorbestimmten Verarbeitungsprogrammes. Genauer ausgedrückt, wird eine Unterbrechungshandhabungssubroutine, die den gegenwärtigen Inhalt einer Unterbrechungsverarbeitung anzeigt, in dem Bereich der Adressen Y bis W in der Speicherbank A4 gespeichert und werden ein CALL-Befehl zum Aufrufen dieser Unterbrechungshandhabungsroutine und ein IRET-Befehl, der die Rückkehr von einer Subroutine zu einer Hauptroutine anzeigt, jeweils in den Adressen X und X+1 gespeichert. Eine Startadresse der Unterbrechungshandhabungssubroutine ist die Adresse Y. Zudem ist ein RET-Befehl, der die Beendigung einer Subroutine und die Rückkehr zur Hauptroutine anzeigt, an der Adresse W gespeichert.
- In der Speicherbank B5 ist ein Unterbrechungssteuerprogramm 13 an Adressen X bis Z gespeichert. Dieses Unterbrechungssteuerprogramm 13 umfaßt einen PUSH-Befehl zum Speichern des Inhaltes des Register BX in einem Stapel (stack) (vorgesehen in der CPU 1), einen MOV-Befehl zum Ubertragen der Startadresse Y der Unterbrechungshandhabungsroutine an das Register BX, einen CALL-Befehl zum Aufrufen des an der Adresse 0 startenden Bankumschaltmanagers, einen POP-Befehl zum Laden des in dem Stapel gespeicherten Inhaltes in das Register BX und einen IRET-Befehl zum Zurückkehren von der Unterbrechungshandhabungssubroutine zu der Hauptroutine.
- In dem Bankumschaltmanager der Speicherbank B5 sind ein Befehl zum Umschalten der Bänke von der Bank B zur Bank A, ein JMP $-Befehl, ein NOP-Befehl und ein RET-Befehl jeweils an der Adresse 0, der Adresse 1, den Adressen 2 bis 4 und der Adresse 5 gespeichert.
- In dem Bankumschaltmanager für die Speicherbank A4 sind ein NOP-Befehl, ein CALL-Befehl zum Aufrufen einer an einer in das Register BX gesetzten Adresse startenden Routine und JMP $-Befehl für eine Dauerschleife jeweils an den Adressen 0, 1 und 5, der Adresse 2 und der Adresse 4 gespeichert. Eine Beschreibung der Operation wird nun durchgeführt. In Fig. 7 ist der Operationsablauf durch Pfeile wiedergegeben.
- Es wird davon ausgegangen, daß eine Unterbrechung während der Ausführung der Hauptroutine in der Speicherbank B5 (an einem durch den Stern in Fig. 7 wiedergegebenen Punkt) auftritt. Ein Signal INT zum Anzeigen des Auftritts eines Befehls wird der CPU 1 von der Unterbrechungssteuereinheit 20 zugeführt, und eine Vektoradresse wird auf den Adressbus 2 ausgegeben. Die in der Unterbrechungsvektortabelle in dem Hauptspeicher 7 gespeicherte Adresse X wird in Übereinstimmung mit dieser Vektoradresse ausgelesen, der Inhalt des Registers BX wird in den Stapel geschoben und ein an der Adresse X startendes Unterbrechungssteuerprogramm wird durch die CPU 1 ausgeführt. Genauer ausgedrückt wird die Startadresse Y der Unterbrechungssubroutine dann von der Tabelle an das Register BX übertragen. Deshalb wird die Adresse 0 in der Speicherbank B5 aufgerufen, so daß der Befehl an der Adresse 0 ausgeführt wird, und dann wird der JMP $-Befehl ausgeführt. Folglich werden die Speicherbänke von der Bank B5 zur Bank A4 umgeschaltet und wird der CALL- Befehl an der Adresse 2 in der Speicherbank A4 ausgeführt. Auf die in dem Register BX gespeicherte Adresse Y wird durch diesen CALL-Befehl zugegriffen, so daß eine an der Adresse Y startende Unterbrechungshandhabungssubroutine ausgeführt wird. Nachdem die Ausführung dieser Unterbrechungshandhabungssubroutine beendet ist, wird durch den RET-Befehl an der Adresse W die Rückkehr zu einer der Adresse des CALL-Befehls des Bankumschaltmanagers in der Speicherbank A4 nachfolgenden Adresse herbeigeführt. Der Inhalt der Adresse 3, welche das Bestimmungsziel der Rückkehr ist, ist ein Bankumschaltbefehl. Die Speicherbänke werden durch den Bankumschaltbefehl zusammen mit dem JMP $- Befehl an der Adresse 4 von der Bank A4 zur Bank B5 umgeschaltet, und dann wird der RET-Befehl an der Adresse 5 in der Bank B5 ausgeführt. Ein POP-Befehl, der an einer der Adresse des CALL-Befehls in dem Programm 13 in der Speicherbank B5 nachfolgenden Adresse gespeichert ist, wird durch diesen RET-Befehl ausgeführt. Folglich wird der in den Stapel gesetzte Inhalt in das Register BX geladen. Der IRET-Befehl wird nach diesem Ladevorgang ausgeführt, und die Ausführung einer unterbrochenen Hauptroutine in der Hauptspeicherbank B4 wird wieder aufgenommen.
- Genauso kann mit Bezug auf eine andere Art und Weise der Unterbrechung, falls ein MOV-Befehl zum Übertragen einer Startadresse eines auszuführenden Unterbrechungsverarbeitungsprogrammes an das Register BX an einer durch die Unterbrechung bezeichneten, bestimmten Adresse gespeichert ist (das heißt, einer Adresse in einer Tabelle, die einer Vektoradresse entspricht), eine Verarbeitung der Unterbrechung unter Verwendung des Bankumschaltmanagers im Bereich 90 durchgeführt werden.
- Wenn indessen eine Unterbrechung während einer Verarbeitung der Hauptroutine in der Speicherbank A4 auftritt, wird eine an der Adresse Y startende Unterbrechungshandhabungssubroutine durch den CALL-Befehl an der Adresse X in der Speicherbank A4 ausgeführt. Nachdem die Ausführung dieser Unterbrechungshandhabungssubroutine abgeschlossen ist, wird durch den RET-Befehl an der Adresse W die Rückkehr zu der Ursprungshauptroutine herbeigeführt, so daß die Unterbrechungsverarbeitung wieder aufgenommen wird.
- Zudem kann in dem Unterbrechungssteuerprogramm 13 die Überführung zur Adresse 0 auch unter Verwendung des JMP-Befehls anstelle des CALL-Befehls herbeigeführt werden. In diesem Fall ist es notwendig, daß der POP-Befehl und der IRET-Befehl in dem Bankumschaltmanager der Speicherbank A4 ausgeführt werden und die Rückkehr zu dem unterbrochenen Verarbeitungsprogramm in der Speicherbank B5 nicht über das Unterbrechungssteuerprogramm 13 herbeigeführt wird, nachdem durch den Bankumschaltmanager in der Speicherbank B5 eine Bankumschaltung durchgeführt ist, so daß die Unterbrechungshandhabungsroutine ausgeführt wird. Genauer ausgedrückt werden der POP BX-Befehl, der Bankumschaltbefehl und der IRET-Befehl an den Adressen 3 bis 5 in Bereich 90 in der Bank A4 gespeichert.
- Mit Bezug auf Fig. 8 wird nun eine Beschreibung eines weiteren Unterbrechungsverarbeitungsverfahrens durchgeführt. Das in Fig. 8 gezeigte Verfahren unterscheidet sich in zweierlei Hinsicht stark von dem in Fig. 7 gezeigten Verfahren. Der erste Unterschied ist der, daß ein Unterbrechungssteuerprogramm (13 in Fig. 7) zum Übertragen einer Startadresse einer auszuführenden Unterbrechungshandhabungsroutine an ein vorbestimmtes Register in dem in Fig. 8 gezeigten Verfahren nicht gespeichert wird. Vielmehr wird in dem in Fig. 8 gezeigten Verfahren durch einen JMP-Befehl ein Bankumschaltmanager in der Speicherbank B5 an einer Adresse X sofort ausgeführt.
- Der zweite Unterschied besteht darin, in dem in Fig. 8 gezeigten Verfahren die Adresse direkt durch Aufrufen der Unterbrechungshandhabungssubroutine in dem Bankumschaltmanager der Speicherbank A4 zu bestimmen. Genauer ausgedrückt unterscheidet sich das in Fig. 8 gezeigte Verfahren von dem in Fig. 7 gezeigten Verfahren darin, daß kein vorbestimmtes Register BX benutzt wird und ein CALL Y-Befehl anstelle des CALL BX-Befehls benutzt wird. Die in den Figuren 7 und 8 gezeigten Schemata (oder Programmstrukturen) sind mit Ausnahme des vorstehenden im wesentlichen gleich.
- Gemäß dem in Fig. 8 gezeigten Verfahren wird, auch wenn eine Unterbrechung während der Ausführung einer Verarbeitung einer Hauptroutine in einer Speicherbank B5 auftritt, eine Unterbrechungshandhabungssubroutine in einer Speicherbank A4 ausgeführt, nachdem die Bänke umgeschaltet sind, und wird eine unterbrochene Hauptroutine in der Speicherbank B5 nach der Ausführung der Unterbrechungshandhabungssubroutine wieder aufgenommen, wie in dem in Fig. 7 gezeigten Verfahren.
- Da eine Startadresse Y der Unterbrechungshandhabungssubroutine in dem Bankumschaltmanager zur Verfügung stehen muß, kann in dem in Fig. 8 gezeigten Verfahren ein in einem Bereich 90 gespeicherter Bankumschaltmanager nicht gemeinsam für andere Unterbrechungsarten genutzt werden, so daß Bankumschaltmanager jeweils für mögliche Unterbrechungsarten vorgesehen sein müssen. Im Vergleich jedoch mit dem in Fig. 7 gezeigten Verfahren ist die Anzahl an Verarbeitungsschritten deutlich vermindert, wie in Fig. 8 gezeigt. Folglich kann die für eine Unterbrechungssteuerung benötigte Zeit reduziert werden, was bei der Handhabung von häufig auftretenden Unterbrechungen wirkungsvoll ist.
- Indessen können die in den Figuren 7 und 8 gezeigten Verfahren natürlich in Kombination benutzt werden, abhängig vom Unterbrechungstypus.
- Obwohl in dem in Fig. 8 gezeigten Schema die Rückkehr zu einem unterbrochenen Verarbeitungsprogramm durch einen IRET-Befehl in einem Bankumschaltmanager der Speicherbank BS herbeigeführt wird, kann zudem auch ein Schema benutzt werden, in welchem ein CALL 0-Befehl an eine Adresse X in der Speicherbank B4, wie in Fig. 8 in Klammern dargestellt, anstelle des JMP 0-Befehis gespeichert ist, und die Rückkehr zu einem unterbrochenen Verarbeitungsprogramm kann ferner unter Verwendung eines RET-Befehis anstelle des IRET-Befehis in dem Bankumschaltmanager herbeigeführt werden.
- Es wird nun eine Beschreibung eines Unterbrechungsverarbeitungsverfahrens in einem System mit einem Speicherbankumschaltschema mit darin vorgesehenen drei oder mehr Speicherbänken durchgeführt. Als Beispiel wollen wir einen Fall betrachten, in welchem drei Speicherbänke vorgesehen sind.
- Fig. 9 zeigt eine schematische Konfiguration des Systems. Es ist als Zusatz zu der in Fig. 6 gezeigten Konfiguration eine Speicherbank C6 mit einem ROM vorgesehen. Das Bankregister 7 speichert ein Bankbestimmungsdatum zum Bestimmen einer der Speicherbänke A4, B5 und C6. Der Dekoder 9 dekodiert das Bankbestimmungsdatum in dem Bankregister 8, um nur die entsprechende, bestimmte Speicherbank zu aktivieren. Die weitere Konfiguration ist im wesentlichen gleich der in Fig. 6 gezeigten.
- Fig. 10 ist ein Diagramm, das ein Beispiel der jeweils in den Speicherbänken A4, B5 und C6 gespeicherten Inhalte zeigt. Fig. 10 zeigt ein Schema, in welchem eine bestimmte Unterbrechungsverarbeitung aus einer Vielzahl von Unterbrechungsverarbeitungen durchgeführt wird. Eine Startadresse X einer Subroutine für diese bestimmte Unterbrechungsverarbeitung wird durch eine in einer vorbestimmten Region in dem Hauptspeicher 7 entwickelten Unterbrechungsvektortabelle bestimmt. Da der Hauptspeicher 7 ein RAM ist, wird diese Unterbrechungsvektortabelle in einer vorbestimmten Region des Hauptspeichers 7 in Übereinstimmung mit einem Bootstrap-Programm gespeichert, wenn das System eingeschaltet wird.
- Mit Bezug auf Fig. 10 umfaßt jede der Speicherbänke A4, B5 und C6 einen Bankumschaltmanager-Speicherbereich 90 und einen Verarbeitungsprogrammbereich 100 zum Speichern eines vorbestimmten Verarbeitungsprogrammes. Dem Bereich 90 ist der gleiche Adressbereich in jeder der Speicherbänke A4, B5 und C6 zugeordnet, das heißt, ein Bereich an Adressen 0 bis
- Ein Bankumschaltmanager hat das gleiche Schema wie das zum Ausführen der in Fig. 5 gezeigten Subroutine. Genauer ausgeführt umfaßt der Bankumschaltmanager, dessen Einzelheiten nicht wiederholt werden, ein in Adressen 0 bis (P-1) gespeichertes erstes Programm zum Setzen einer Rückkehrbank und einer Sprungbank, ein in Adressen P bis (Q-1) gespeichertes zweites Programm zum eigentlichen Bankumschalten zur Sprungbank, ein in Adressen Q bis (R-1) gespeichertes drittes Programm zum Setzen einer Startadresse einer Unterbrechungshandhabungssubroutine und zum Bestimmen der Rückkehrbank und ein in Adressen R bis (S-1) gespeichertes viertes Programm zum eigentlichen Bankumschalten zur Rückkehrbank.
- Ein Unterbrechungsverarbeitungsprogramm 33, das eine bestimmte Unterbrechung betrifft, ist in einem Bereich an Adressen X bis W in der Speicherbank C gespeichert. Das Unterbrechungsverarbeitungsprogramm 33 hat an einer Adresse X ein CALL Y-Befehl gespeichert, an einer Adresse X+1 ein IRET-Befehl gespeichert und an Adressen Y bis W eine Unterbrechungshandhabungssubroutine gespeichert und zeigt den Inhalt der gegenwärtigen Unterbrechungsverarbeitung an. Eine Beschreibung wird nun für eine Verarbeitungsoperation durchgeführt, die auftritt, wenn eine Unterbrechung während der Ausführung eines Verarbeitungsprogrammes in einer der beiden Hauptbänke A4 und B5 auftritt. In Fig. 10 wird ein Beispiel des Operationsablaufs durch Pfeile wiedergegeben.
- Für einen Fall, daß eine Unterbrechung während der Ausführung des Verarbeitungsprogramms in der Speicherbank A4 oder BS auftritt (in Fig. 10 wird beispielhaft ein Fall dargestellt, in welchem eine Unterbrechung an einem durch den Stern in der Speicherbank A4 gezeigten Punkt auftritt> , wird in Antwort auf eine Vektoradresse von der Unterbrechungssteuereinheit 20 die Adresse X aus der Tabelle in dem Hauptspeicher 7 ausgelesen, so daß der Inhalt dieser Adresse X durch den CPU 1 ausgeführt wird. Ein Bereich an Adressen X bis Z in jedem der Speicherbänke A4 und B5 speichert ein Unterbrechungssteuerprogramm, das einen MOV-Befehl zum Aufbewahren des Bankbestimmungsdatums BANK No. A mit einem entsprechenden Unterbrechungsverarbeitungsprogramm in dem Register AL, einen MOV-Befehl zum Aufbewahren der ersten Adresse Y der Unterbrechungshandhabungssubroutine in dem Register BX, einen CALL-Befehl zum Aufrufen eines Bankumschaltmanagers und einen IRET-Befehl, der die Rückkehr zu der unterbrochenen Adresse anzeigt.
- Wie durch den Stern in Fig. 10 dargestellt, wird somit, wenn während der Ausführung des Verarbeitungsprogrammes in der Speicherbank A4 eine Unterbrechung auftritt, zuerst ein an der Adresse X in der Speicherbank A4 startendes Unterbrechungssteuerprogramm ausgeführt. Genauer ausgedrückt werden das Sprungbankbestimmungsdatum BANK No. C und eine Sprungadresse jeweils in dem Register AL und BX aufbewahrt, und der Übergang der Ausführung der CPU 1 auf den Bankumschaitmanager für den Hauptspeicher A4 tritt nach diesem Aufbewahrungsvorgang auf. In dem Bankumschaltmanager der Speicherbank A4 wird seine eigene Speicherbanknummer, das heißt, die Speicherbank A, zuerst als Rückkehrbankbestimmungsdatum z. B. in dem Register AH aufbewahrt. Nachfolgend wird das in dem Register AL aufbewahrte Sprungbankbestimmungsdatum dekodiert, und dann findet ein Sprung zu einer entsprechenden Adresse in dem zweiten Programm statt. Da die Speicherbank C6 eine Sprungbank ist, findet ein Sprung zu einer Adresse zum Ausführen der Speicherbank C6 statt, und dann werden die Bänke von der Speicherbank A auf die Speicherbank C umgeschaltet.
- In der Speicherbank C6 ist ein JMP Q-Befehl nachfolgend auf einen NOP-Befehl gespeichert. Nach Umschalten auf die Speicherbank C6 wird somit eine an der in dem Register BX gespeicherten Adresse Y startende Unterbrechungshandhabungssubroutine aufgerufen und ausgeführt. Nach der Ausführung der Subroutine wird eine in dem Register AH aufbewahrte Rückkehradresse in Übereinstimmung mit dem RET-Befehl an der Adresse W dekodiert. Da die Speicherbank A4 in diesem Fall die Rückkehrbank ist, findet ein Sprung zu einer Adresse zum Zurückkehren zu der Speicherbank A4 statt, so daß eine Bankumschaltung auf die Speicherbank A4 durchgeführt wird. Nach der Bankumschaltung wird die Rückkehr zu dem Unterbrechungssteuerprogramm (IRET-Befehl) in der Speicherbank A durch einen RET-Befehl in der Speicherbank A4 herbeigeführt, so daß die Rückkehr zu einem Verarbeitungsprogramm, welches vor der Unterbrechung ausgeführt wurde, durch das Steuerprogramm herbeigeführt wird.
- Indessen wird die gleiche Verarbeitung durchgeführt, wenn die oben beschriebene bestimmte Unterbrechung während der Ausführung des Verarbeitungsprogrammes in der Speicherbank BS auftritt. Wenn diese besondere Unterbrechung während der Ausführung eines Verarbeitungsprogramms in der Speicherbank C6 auftritt, wird zudem durch den CALL-Befehl an der Adresse X eine Unterbrechungshandhabungssubroutine ausgeführt. Nach der Ausführung dieser Unterbrechungshandhabungssubroutine wird durch den RET-Befehl und den IRET-Befehl die Rückkehr zu dem ursprünglichen, unterbrochenen Verarbeitungsprogramm herbeigeführt, um das unterbrochene Verarbeitungsprogramm wieder aufzunehmen.
- In dem oben beschriebenen Schema kann eine Bankumschaltung von einer frei gewählten Bank zu einer anderen frei gewählten Bank in Übereinstimmung mit Bankumschaltmanagern durchgeführt werden, die in dem gleichen Adressbereich der Bänke gespeichert sind. Falls somit in bezug auf ein in einer anderen Speicherbank gespeichertes Unterbrechungsverarbeitungsprogramm und einen anderen Unterbrechungstypus ein Unterbrechungssteuerprogramm zum Aufbewahren eines Sprungsbankbestimmungsdatums und/oder einer Sprungadresse für ein auszuführendes Unterbrechungshandhabungsprogramm in dem Register AL und/oder dem Register BX an einer bestimmten, durch die Unterbrechung festgelegten Adresse gespeichert wird, kann eine Unterbrechungssteuerung unter gemeinsamer Nutzung des in dem Bereich 90 gespeicherten Bankumschaltmanagers durchgeführt werden.
- Fig. 11 zeigt ein Schema, in welchem das in Fig. 8 gezeigte Schema auf ein System mit drei Speicherbänken angewendet wird. In dem in Fig. 11 gezeigten Schema ist ein Bankumschaltmanager nur für eine besondere Unterbrechungsart vorgesehen, wie in dem in Fig. 8 gezeigten Schema. Genauer ausgedrückt, sind ein Sprungbankbestimmungsdatum und eine Sprungadresse (eine erste Adresse einer Unterbrechungshandhabungssubroutine) für einen Bankumschaltvorgang in einer Speicherbank C6 und eine Adresse Y in einem Bankumschaltmanager jeder der Speicherbänke fest gespeichert. Falls in diesem Schema eine Unterbrechung während der Ausführung eines Verarbeitungsprogrammes in der Speicherbank A4 auftritt (einer durch den Stern in Fig. 11 wiedergegebenen Stelle), tritt durch JMP 0 an einer Adresse X der Übergang zu dem Bankumschaltmanager der Speicherbank A4 unmittelbar auf. Nach dem Aufbewahren eines Datums zum Bestimmen der Bank A4 als Rückkehrbank wird das Umschalten der Speicherbank C6 exklusiv durchgeführt. Nach dem Bankumschalten wird die Adresse Y durch den CALL Y-Befehl direkt bestimmt, so daß eine Unterbrechungshandhabungssubroutine aufgerufen wird. Nachdem die Ausführung dieser Handhabungssubroutine beendet ist, wird ein Umschalten auf die Rückkehrbank durchgeführt. Nach dem Umschalten zu der Rückkehrbank wird durch einen in dem Bankumschaltmanager der Speicherbank A4 enthaltenen IRET-Befehl die Rückkehr zu einem unterbrochenen Verarbeitungsprogramm herbeigeführt.
- In diesem Schema kann nicht der gleiche Bankumschaltmanager gemeinsam für alle Unterbrechungsarten benutzt werden, anders als bei dem vorher beschriebenen Schema. Jedoch ist die Anzahl der Verarbeitungsschritte deutlich vermindert, so daß die für die Unterbrechungssteuerung erforderliche Zeit reduziert werden kann.
- Um indessen einen Bankumschaltmanager gemeinsam für eine Vielzahl von Unterbrechungsarten gemeinsam zu nutzen, sofern es eine Bankumschaltung auf die gleiche Speicherbank betrifft, ist es notwendig, anstelle des JMP O-Befehls an der Adresse X einen MOV BX, Y-Befehl, einen CALL O-Befehl und einen IRET-Befehl in einem an der Adresse X beginnenden Bereich zu speichern und jeweils einen RET-Befehl und einen CALL BX-Befehl anstelle des IRET-Befehls und CALL Y-Befehls in dem Bankumschaltmanager zu speichern. Genauer ausgedrückt wird die erste Adresse der Unterbrechungshandhabungssubroutine nach Erzeugung einer Unterbrechung und vor dem Übergang zu dem Bankumschaltmanager in einem Register BX gespeichert, und wird der Inhalt des Registers BX aufgerufen, um nach dem Bankumschalten durch den Bankumschaltmanager die Unterbrechungshandhabungssubroutine auszuführen. Folglich kann, auch wenn eine Vielzahl von Arten an Unterbrechungshandhabungssubroutinen beispielsweise nur in der Speicherbank C6 gespeichert sind, eine Unterbrechungsverarbeitung durchgeführt werden, ohne die Anzahl der Bankumschaltmanager zu erhöhen. In diesem Fall sind eine Anzahl von an der Adresse X in jedem der Speicherbänke A4 und B5 beginnende Steuerprogramme entsprechend der Anzahl an Unterbrechungsverarbeitungsvorgängen vorgesehen.
- In einem System mit vier oder mehr Speicherbänken wird indessen nur die Anzahl der oben beschriebenen Bankbestimmungsdaten erhöht. Somit kann das System ganz leicht auf ein System mit vier oder mehr darin enthaltenen Speicherbänken erweitert werden.
- Entsprechend dem oben beschriebenen Schema wird in einem System mit Bankumschaltschema ein Bankumschaltmanager in jeder der Speicherbänke in dem gleichen Adressenbereich gespeichert und wird ein Bankumschalten in Übereinstimmung mit diesem Bankumschaltmanager durchgeführt, so daß eine angeforderte Unterbrechungsverarbeitung durchgeführt werden kann. Folglich kann in einem System, in welchem kein Gemeinschaftsspeicherbereich extern von Speicherbänken vorgesehen sein kann, eine Unterbrechungsverarbeitung unter Nutzung eines in einer bestimmten Speicherbank gespeicherten Unterbrechungshandhabungsprogramms durchgeführt werden, auch wenn während der Ausführung eines Verarbeitungsprogramms in einer frei gewählten Speicherbank eine Unterbrechung auftritt, und ein unterbrochenes Verarbeitungsprogramm kann wieder aufgenommen werden. Folglich kann als Programmbereich zum Speichern eines Hauptverarbeitungsprogramms ein großer Speicherbereich benutzt werden, so daß der Speicherbreich effektiv ausgenutzt werden kann. Somit sind lange Verarbeitungsprogramme sowie gewünschte und angeforderte Verarbeitungsprogramme insgesamt in der Speicherbank gespeichert.
- Obwohl die vorliegende Erfindung im Detail beschrieben und dargestellt wurde, wird deutlich gemacht, daß dies nur zur Darstellung und beispielhaft erfolgt ist und nicht als Beschränkung angesehen werden darf und der Schutzbereich der vorliegenden Erfindung nur durch den Wortlaut der anhängenden Ansprüche beschränkt ist.
Claims (9)
1. Vorrichtung zum Ausführen eines Unterprogramms in einem
Datenverarbeitungssystem mit einer Anzahl von
Speicherbänken (4, 5, 6), zwischen denen umgeschaltet werden kann,
wobei jede der Anzahl von Speicherbänken einen ersten
Speicherbereich (90) aufweist zum Speichern eines Bankumschalt-
Steuerprogramms und einen zweiten Speicherbereich (100) zum
Speichern eines vorgegebenen Verarbeitungsprogramms, das
sich in jeder der Anzahl von Speicherbänken unterscheidet,
dadurch gekennzeichnet, daß zumindest
eine bestimmte Speicherbank (6) unter der Anzahl von
Speicherbänken ein Unterbrechungshandhabungsprogramm in dem
zweiten Speicherbereich speichert,
wobei die Speicherbank (4, 5) außer der bestimmten
Speicherbank (6) einen ersten Speicherbereich (90) aufweist
zum Speichern eines ersten Steuerprogramms zur Auswahl der
bestimmten Speicherbank, wenn das
Unterbrechungshandhabungsprogramm während der Ausführung eines
Verarbeitungsprogramms in dem zweiten Speicherbereich ausgeführt werden
muß, und ein zweites Steuerprogramm zur Rückkehr zu dem
durch das Unterbrechungshandhabungsprogramm unterbrochenen
Verarbeitungsprogramm, nachdem die Ausführung des
Unterbrechungshandhabungsprogramms beendet ist,
wobei die bestimmte Speicherbank (6) einen dritten
Speicherbereich (90) aufweist zum Speichern eines dritten
Steuerprogramms zum Aufruf des
Unterbrechungshandhabungsprogramms und eines vierten Steuerprogramms zur Auswahl
einer Speicherbank, die das unterbrochene
Verarbeitungsprogramm speichert, nachdem die Ausführung des
Unterbrechungshandhabungsprogramms beendet ist, und
wobei der erste Speicherbereich (90) und der dritte
Speicherbereich (90) jeweils in Speicherbereiche vorgesehen
sind, denen dieselben Adressen in entsprechenden
Speicherbänken zugeordnet sind, und wobei die Vorrichtung ferner
Mittel (20) aufweist zur Erzeugung einer Vektoradresse, die
einer erzeugten Unterbrechung zugeordnet ist, und
Vektormittel (7) zum Speichern einer Startadresse eines
Unterbrechungssteuerprogramms, das das erste Steuerprogramm
aufruft, um durch die Vektoradresse adressiert zu werden,
wobei das Unterbrechungssteuerprogramm in Speicherregionen
gespeichert ist, die dieselbe Startadresse im ersten
Speicherbereich jeder der Anzahl von Speicherbänken außer
der bestimmten Speicherbank aufweist.
2. Vorrichtung nach Anspruch 1, wobei
der dritte Speicherbereich (90) der bestimmten Speicherbank
(6) einen Befehl zum Aufrufen des
Unterbrechungshandhabungsprogramms, das auszuführen ist, speichert und einen
Befehl zum Bankumschalten von der bestimmten Speicherbank
zu einer Rückkehrspeicherbank, und
wobei jeder der ersten Speicherbereiche (90) der
Speicherbänke (4, 5) außer der bestimmten Speicherbank einen ersten
Befehl speichert zum Einstellen einer
Identifizierungsinformation zur Angabe ihrer eigenen Speicherbank als
Information zum Spezifizieren der Rückkehrspeicherbank, und
einen zweiten Befehl zum Umschalten der Speicherbank zu der
bestimmten Speicherbank, wobei der erste und der zweite
Befehl in identischen Adreßpositionen in jeder der
Speicherbänke außer der bestimmten Speicherbank gespeichert sind,
und
wobei die Vorrichtung ferner Verarbeitungsmittel (1)
aufweist, die abhängig von der Erzeugung einer Unterbrechung
sind, zum Abarbeiten des Unterbrechungssteuerprogramms und
des Unterbrechungshandhabungsprogramms durch
Bankumschaltung
zwischen einer Speicherbank, die ein in Ausführung
befindliches Verarbeitungsprogramm speichert, und der
bestimmten Speicherbank.
3. Vorrichtung nach Anspruch 1, wobei das
Unterbrechungshandhabungsprogramm eine Anzahl von
Unterbrechungshandhabungsroutinen aufweist, die unterschiedliche Startadressen
aufweisen, und wobei
das Unterbrechungssteuerprogramm jeweils für die Anzahl von
Unterbrechungshandhabungsroutinen in dem zweiten
Speicherbereich jeder der Speicherbänke ausschließlich der
bestimmten Speicherbank vorgesehen ist.
4. Vorrichtung nach Anspruch 3, wobei die Vektormittel (7)
die Startadressen der Unterbrechungssteuerprogramme, die
das erste Steuerprogramm aufrufen, in einer Tabelle
bezüglich Vektoradressen speichert, die den jeweiligen
Unterbrechungshandhabungsroutinen zugeordnet sind.
5. Vorrichtung nach Anspruch 1, wobei das
Unterbrechungssteuerprogramm einen Befehl zum Speichern von Daten, die
durch die bestimmte Speicherbank spezifiziert sind, umfaßt
und einen Befehl zum Speichern von Daten, die eine
Startadresse des Unterbrechungshandhabungsprogramms
speichert.
6. Verfahren der Ausführung eines Unterprogramms in einem
Datenverarbeitungssystem mit einer Anzahl von
Speicherbänken, die jeweils ein Bankumschaltungs-Steuerprogramm in
einem ersten Adreßbereich (90) speichert und wobei ein
Verarbeitungsprogramm, das für die Speicherbank spezifisch ist,
in einem Adreßbereich (100) jeder Speicherbank mit
identischer Adresse zu jeder anderen Speicherbank gespeichert
ist, dadurch gekennzeichnet , daß ein
Unterbrechungshandhabungsprogramm in dem zweiten Adreßbereich
einer bestimmten Speicherbank gespeichert ist und wobei
jede der Anzahl von Speicherbänken ausschließlich der
bestimmten Bank ein Unterbrechungssteuerprogramm speichert
zum Aufrufen des Bankumschalt-Steuerprogramms in einem
Adreßbereich mit derselben Startadresse wie die der anderen
Speicherbank in dem zweiten Adreßbereich, wobei das
Verfahren die Schritte aufweist:
Wenn eine Unterbrechung während der Ausführung eines
Verarbeitungsprogramms in einer anderen Speicherbank als der
bestimmten Speicherbank auftritt, Unterbrechen des laufenden
Verarbeitungsprogramms und Fortschreiten zum
Unterbrechungshandhabungsprogramm in der Speicherbank,
gemäß dem Unterbrechungssteuerprogramm, Speichern einer
Startadresse des Unterbrechungshandhabungsprogramms in
einer ersten Steuereinrichtung (BX) und Fortschreiten zu dem
Bankumschalt-Steuerprogramm in der Speicherbank,
gemäß dem Bankumschalt-Steuerprogramm, Umschalten von der
Speicherbank zu der bestimmten Speicherbank,
Lesen der in der ersten Speichereinrichtung gespeicherten
Adresse,
gemäß der ausgelesenen Startadresse Auslesen des
Unterbrechungshandhabungsprogramms und Ausführung desselben,
nach Beendigung des Unterbrechungshandhabungsprogramms
Fortschreiten zum Bankumschalt-Steuerprogramm in der
bestimmten Speicherbank,
Ausführung des Bankumschalt-Steuerprogramms in der ersten
Speicherbank zum Umschalten von der ersten Speicherbank zu
der Speicherbank ohne eine Änderung einer Adresse
ausschließlich einer Bankadresse, die eine Speicherbank
bezeichnet, und
Ausführung eines Programmes von einer Adresse, die von der
bestimmten Speicherbank zur Speicherbank rückgeführt wurde,
und Rückführung des unterbrochenen Verarbeitungsprogramms
zur Wiederaufnahme desselben.
7. Verfahren nach Anspruch 6, wobei das
Unterbrechungshandhabungsprogramm eine Anzahl unterschiedliche
Unterbrechungshandhabungsroutinen aufweist und wobei jede der
Anzahl von Speicherbänken eine Anzahl von
Unterbrechungssteuerprogrammen für jeweilige
Unterbrechungshandhabungsroutinen in dem zweiten Adreßbereich aufweist, und wobei der
Schritt des Fortschreitens zu dem
Unterbrechungssteuerprogramm die Schritte einschließt:
Erzeugung einer Vektoradresse gemäß der erzeugten
Unterbrechung und
gemäß der Vektoradresse, Auslesen der Startadresse des
Unterbrechungssteuerprogramms aus einer zweiten
Speichereinrichtung, die die Startadresse des
Unterbrechungssteuerprogramms für jeweilige Unterbrechungshandhabungsroutinen in
einem Tabellenformat bezüglich der Vektoradresse speichert,
wobei die Startadresse der Anzahl von Speicherbänken
gemeinsam ist.
8. Verfahren nach Anspruch 6 oder 7, wobei jeder der
Schritte des Umschaltens der Speicherbänke den Schritt der
Änderung einer Bank aufweist, während eine Adresse eines
Speicherbereichs unverändert gehalten wird.
9. Verfahren nach Anspruch 6 mit weiterhin vor dem Schritt
der Speicherung einer Startadresse einem Schritt der
Speicherung von Daten, die die erste Speicherbank
spezifizieren, und vor dem Schritt des Umschaltens zum ersten
Speicher, Speichern von Daten, die die eigene Speicherbank als
Rückkehrbankadresse spezifizieren.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63041535A JPH01216428A (ja) | 1988-02-24 | 1988-02-24 | メモリバンクのサブルーチン実行方式 |
JP63041536A JPH01216433A (ja) | 1988-02-24 | 1988-02-24 | 割込制御方式 |
JP63122313A JPH01292432A (ja) | 1988-05-19 | 1988-05-19 | メモリバンクのサブルーチン実行方式 |
JP63129052A JPH01297732A (ja) | 1988-05-26 | 1988-05-26 | 割込制御方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68924719D1 DE68924719D1 (de) | 1995-12-14 |
DE68924719T2 true DE68924719T2 (de) | 1996-05-23 |
Family
ID=27461073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68924719T Expired - Fee Related DE68924719T2 (de) | 1988-02-24 | 1989-02-24 | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. |
Country Status (4)
Country | Link |
---|---|
US (1) | US5146581A (de) |
EP (1) | EP0330226B1 (de) |
KR (1) | KR920006614B1 (de) |
DE (1) | DE68924719T2 (de) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2003821C (en) * | 1989-04-20 | 1996-12-03 | Richard J. Molnar | Process controller single memory chip shadowing technique |
US5253354A (en) * | 1990-08-31 | 1993-10-12 | Advanced Micro Devices, Inc. | Row address generator for defective DRAMS including an upper and lower memory device |
US5293591A (en) * | 1991-06-10 | 1994-03-08 | Advanced Micro Devices, Inc. | Processing system including memory selection of multiple memories and method in an interrupt environment |
JP3092116B2 (ja) * | 1991-08-26 | 2000-09-25 | 日本電気株式会社 | プログラム変更方式 |
TW241346B (de) * | 1991-10-15 | 1995-02-21 | Bull Hn Information Syst | |
US5557766A (en) * | 1991-10-21 | 1996-09-17 | Kabushiki Kaisha Toshiba | High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank |
DE69231176T2 (de) * | 1991-12-23 | 2000-11-23 | Microsoft Corp., Redmond | Verfahren zum Integrieren eines diskreten Unterprogramms in ein Hauptprogramm |
US5537531A (en) * | 1992-06-26 | 1996-07-16 | Kabushiki Kaisha Toshiba | Portable computer with a bank switch for switching between a ROM and a memory, both allocated to the same address space, by changing a port address of a keyboard controller |
CA2080159C (en) * | 1992-10-08 | 1998-09-15 | Paul Alan Gresham | Digital signal processor interface |
DE4403791A1 (de) * | 1994-02-03 | 1995-08-10 | Siemens Ag | Datenverarbeitungsanlage |
GB2289148B (en) * | 1994-04-29 | 1998-08-05 | Motorola As | Electronic device with microprocessor and banked memory and method of operation |
US5802544A (en) * | 1995-06-07 | 1998-09-01 | International Business Machines Corporation | Addressing multiple removable memory modules by remapping slot addresses |
JP2000195262A (ja) * | 1998-12-25 | 2000-07-14 | Internatl Business Mach Corp <Ibm> | Sdram及びsdramのデ―タ・アクセス方法 |
FR2820223A1 (fr) * | 2001-01-31 | 2002-08-02 | St Microelectronics Sa | Microprocesseur comprenant des moyens de gestion et d'acces a un espace adressable pagine |
JP3699003B2 (ja) * | 2001-04-18 | 2005-09-28 | Necマイクロシステム株式会社 | データ処理装置および方法 |
TWI284806B (en) * | 2003-02-27 | 2007-08-01 | Mediatek Inc | Method for managing external memory of a processor and chip for managing external memory |
TWI222597B (en) * | 2003-03-14 | 2004-10-21 | Mediatek Inc | Method for accessing external memory of a microprocessor |
JP5319238B2 (ja) * | 2008-10-29 | 2013-10-16 | 真二 栗本 | 情報処理システム、情報処理装置、情報処理方法、および情報処理プログラム |
DE102018128045A1 (de) * | 2018-11-09 | 2020-05-14 | Infineon Technologies Ag | Behandlung von Ausnahmen in einem Programm |
US11550577B2 (en) * | 2019-05-15 | 2023-01-10 | Western Digital Technologies, Inc. | Memory circuit for halting a program counter while fetching an instruction sequence from memory |
US20200364052A1 (en) * | 2019-05-15 | 2020-11-19 | Western Digital Technologies, Inc. | Branch penalty reduction using memory circuit |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3866182A (en) * | 1968-10-17 | 1975-02-11 | Fujitsu Ltd | System for transferring information between memory banks |
US3737860A (en) * | 1972-04-13 | 1973-06-05 | Honeywell Inf Systems | Memory bank addressing |
US4340932A (en) * | 1978-05-17 | 1982-07-20 | Harris Corporation | Dual mapping memory expansion unit |
JPS5730050A (en) * | 1980-07-30 | 1982-02-18 | Fujitsu Ltd | Interruption control system |
US4368515A (en) * | 1981-05-07 | 1983-01-11 | Atari, Inc. | Bank switchable memory system |
US4503491A (en) * | 1981-06-29 | 1985-03-05 | Matsushita Electric Industrial Co., Ltd. | Computer with expanded addressing capability |
US4481570A (en) * | 1981-08-07 | 1984-11-06 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Automatic multi-banking of memory for microprocessors |
JPS60157646A (ja) * | 1984-01-27 | 1985-08-17 | Mitsubishi Electric Corp | メモリバンク切換装置 |
US4725945A (en) * | 1984-09-18 | 1988-02-16 | International Business Machines Corp. | Distributed cache in dynamic rams |
US4744048A (en) * | 1985-10-09 | 1988-05-10 | American Telephone And Telegraph Company | Display context switching arrangement |
JPS6289149A (ja) * | 1985-10-15 | 1987-04-23 | Agency Of Ind Science & Technol | 多ポ−トメモリシステム |
FR2591775B1 (fr) * | 1985-12-12 | 1988-03-04 | Inst Nat Rech Inf Automat | Dispositif electronique formant memoire stable rapide perfectionnee |
US4755935A (en) * | 1986-01-27 | 1988-07-05 | Schlumberger Technology Corporation | Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction |
JPS6356754A (ja) * | 1986-08-28 | 1988-03-11 | Toshiba Corp | 入出力チヤネル |
CA1330596C (en) * | 1986-11-19 | 1994-07-05 | Yoshiaki Nakanishi | Memory cartridge and data processing apparatus |
US4933846A (en) * | 1987-04-24 | 1990-06-12 | Network Systems Corporation | Network communications adapter with dual interleaved memory banks servicing multiple processors |
EP0338317B1 (de) * | 1988-04-20 | 1996-01-10 | Sanyo Electric Co., Ltd. | In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas |
-
1989
- 1989-02-22 US US07/313,677 patent/US5146581A/en not_active Expired - Fee Related
- 1989-02-24 EP EP89103296A patent/EP0330226B1/de not_active Expired - Lifetime
- 1989-02-24 KR KR1019890002294A patent/KR920006614B1/ko not_active IP Right Cessation
- 1989-02-24 DE DE68924719T patent/DE68924719T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR920006614B1 (ko) | 1992-08-10 |
KR890013557A (ko) | 1989-09-23 |
US5146581A (en) | 1992-09-08 |
EP0330226A3 (de) | 1991-10-09 |
EP0330226B1 (de) | 1995-11-08 |
EP0330226A2 (de) | 1989-08-30 |
DE68924719D1 (de) | 1995-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE3889578T2 (de) | Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation. | |
DE69028153T2 (de) | Cache-Speicherfehlgriffsvorhersageverfahren und -vorrichtung | |
DE3687724T2 (de) | Digitalprozessorsteuerung. | |
DE19526007C2 (de) | Horizontal partitionierter Befehls-Cache-Speicher | |
DE69032812T2 (de) | Vorrichtung und Verfahren zur parallelen Verarbeitung | |
DE2350884C2 (de) | Adreßumsetzungseinheit | |
DE3751164T2 (de) | Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten. | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
DE2944419C2 (de) | ||
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69331292T2 (de) | Elektronisches Gerät und Verfahren zur festen Informationsmodifikation | |
DE69131917T2 (de) | Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür | |
DE3500804A1 (de) | Unterbrechungssteuerkreis | |
DE1803767A1 (de) | Elektronisches Datenverarbeitungssystem | |
DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
DE69130414T2 (de) | Prozessor und Verfahren zur parallelen Verarbeitung | |
DE3043653A1 (de) | Datenverarbeitungsanlage | |
DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher | |
DE69714532T2 (de) | Synchrone Halbleiterspeichervorrichtung mit Makrobefehlsspeichern und Ausführungsverfahren dafür | |
DE69230898T2 (de) | Speicherauswahl enthaltendes Verarbeitungs-System und Verfahren | |
EP1079307B1 (de) | Verfahren zum Betrieb eines Speichersystems sowie Speichersystem | |
DE2948442C2 (de) | Digitalrechenanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |