METHOD FOR THE CONTROL OF DATA TRANSFER BETWEEN A DATA TRANSMITTER AND A DATA RECEIVER ON A BUS, USING A CONTROL UNIT WHICH IS CONNECTED TO THE BUS

Abstract: The data transferred between a data transmitter, for example a memory (MM), and a data receiver, for example a peripheral device (PL), is carried out by a DMA control (DMA) operating simultaneously in conjunction with a microprocessor (MP). For this purpose, the DMA control uses a channel program located, for example, in the memory (MM), which consists of transfer commands and control commands. The data transfer can be effected either in selector mode or in multiplex mode. Switching between selector mode and multiplex mode is determined by the content of a register placed in a mode register in the control device ( or DMA). If the data transfer is to be effected in multiplex mode, the choice is between byte/word multiplex mode or block multiplex mode. The operating mode in multiplex mode is determined by the transfer, and in the channel program. Thus, a data transfer can occur both in block multiplex mode and in byte multiplex mode over the same channel. The DMA control carries out the command initiation and the greatest proportion of the command execution in the case of byte multiplex or block multiplex mode in identical steps, only the number of bytes to be transmitted being different. <IMAGE>

Description: Verfahren zum Steue-rn eines Datentransfers zwischen einem Datensender und einem Datenempfänger über einen Bus mit einer Bus angeschlossenen Steuereinrichtung ¯¯¯¯¯ Die Erfindung bezieht sich auf ein Verfahren zum Steuern eines Datentransfers von einem Datensender zu einem Datenempfänger über einen Bus mit Hilfe einer am Bus angeschlossenen Steuereinrichtung, die in Abhängigkeit eines Transferbefehle und Steuerbefehle enthaltenden Kanalprogramms den Datentransfer zwischen Datensender und Datenempfänger im Selektor-oder Multiplexbetrieb durchführt. Aus den DE-PS 23 39 813 und 23 39 787 ist es bekannt, dass Datentransfers zwischen einem Datensender, z. B. einem Speicher, und einem Datenempfänger, z.B. einem peripheren Gerät, bei einem Datenverarbeitungssystem mit Hilfe von sog. Kanalprogrammen durchgeführt wird. Die Kanalprogramme geben an, wie der Datentransfer durchzuführen ist, sie geben aber auch an, wie die organisatorischen Abläufe, wie Gerätestart, Gerätezustandsabfrage, Gerätestop, Unterbrechungsanforderung an die Recheneinheit usw. auszuführen sind. Die -Kanalprogramme werden im Datenverarbeitungssystem dieser Art mit Hilfe von Kanalwerken durchgeführt, die zum Teil unabhängig von der Recheneinheit des Datenverarbeitungssystems den Datentransfer durchführen. Die Kanalwerke von derartigen Grossrechnern führen den Datentransfer entweder im Selektorbetrieb oder im Byte/Wort Multiplexbetrieb durch. Die Übertragungseinrichtungen, über die der Datentransfer erfolgt, werden im folgenden Kanäle genannt. Selektorkanäle sind Hochgeschwindigkeitskanäle, die je weils zu einer Zeit nur die Bearbeitung eines einzigen Kanalprogramms und damit die Bedienung eines einzigen peripheren Gerätes zulassen. Sind an einen Selektorkanal mehrere Geräte angeschlossen, so kann ein Wechsel von einem peripheren Gerät zu einem anderen erst nach gänzlicher Ab Bearbeitung des ganzen Kanalprogramms, also erst beim nächsten Neustart des Selektorkanals vorgenommen werden. Beim Byte-Multiplexkanal dagegen kann nach jedem Byte-Transfer für ein Gerät ein Wechsel zu einem anderen Gerät vorgenommen werden. Dies setzt voraus, dass für jedes gestartete Gerät am Multiplexkanal auch ein Kanalprogramm vorhanden ist. Bei jeder peripher2m; Bedienungsanforderung muss der Multiplexkanal in Abhängigkeit z.B. der Gerätenummer oder Unterkanalnummer auf das spezifische Kanalprogramm zusteuern, um de erforderlichen Bearbeitungsparameter zu erhalten. Da bei einem derartigen Verarbeitungssystem eine Vielzahl von einzelnen Geräten bedient werden muss, ist die Anzahl der Kanaiprogramme gross, so dass diese im Hauptspeicher oder Systemspeicher abgespeichert werden müssen. Dann aber ist für jeden Bytetransfer die Ansteuerung des Kanalprogramms im Systemspeicher notwendig, mit der Folge, dass der Byte-Muliplexa5Ralkeinen-hohen Transferraten arbeitet. Es ist nun weieerh.n bekannt, die Datenübertragung im Blockmultiplexbetrieb durchzuführen. Ein Blockmultiplexkanal ist überall besonders vorteilhaft, wo an einem Kanal mehrere periphere Einheiten oder Geräte angeschlossen werden und bei den Geräten Wartezeiten eintreten können, nach denen aber der Datentransfer mit hoher Geschwindigkeit erfolgen muss. Beispiele für solche Geräte sind z.B. Plattenspeichergeräte oder Geräte, die mit einem Pufferspeicher ausgerüstet sind, in welchem die zu übertragenden Daten zunächst gesammelt werden, bevor sie übertragen werden. Der Vorteil des Blockmultiplexbetriebs besteht darin, dass die Wartezeiten der peripheren Geräte dazu verwendet werden können, Datentransferszu anderen oder von anderen Geräten auszuführen. Wie die Datenübertragung im Blockmultiplexbetrieb auszuführen ist, ergibt sich aus den oben angegebenen deutschen Patentschriften. Die Steuerung des Datentransfers zwischen einem Datensender und einem Datenempfänger kann auch mit Hilfe von Mikrocomputersystemen erfolgen. Solche Mikrocomputersysteme enthalten in der Regel einen Mikrocomputer, einen Speicher und periphere Geräte, die entweder direkt oder über Zwischeneinheiten mit einem Bus verbunden sind. Ober den Bus erfolgt dann die Übertragung der Adressen, der Daten und der Steuersignale. Die Steuerung des Datentransfers z.B. zwischen dem Speicher und einem peripheren Gerät wird vom Mikrocomputer in Abhängigkeit des sog. Kanalprogramms gesteuert. Um den Mikrocomputer von der Steuerung zu entlasten, ist es bekannt, zusätzlich an den Bus z.B. eine DMA Steuerung anzuschliessen, die den Datentransfer unabhängig vom Mikrocomputer steuert. Während die DMA Steuerung den Datentransfer durchführt, kann dann der Mikrocomputer andere Aufgaben erledigen. Ein derartiges System ergibt sich z.B. aus "Elektronik Praxis", Nr. 9, Sept. 1982, S. 131 134. Die der Erfindung zugrundeliegende Aufgabe besteht darin, ein Verfahren anzugeben, bei dem eine Steuereinrichtung, z.B. eine DMA Steuerung, den Datentransfer zwischen einem Datensender und einem Datenempfänger in einem der drei Betriebsarten durchführen kann, also den dazu verwendeten Kanal entweder im Selektorbetrieb, Bytemultiplexbetrieb oder Blockmultiplexbetrieb benutzt. Diese Aufgabe wird bei einem Verfahren der eingangs angegebenen Art dadurch gelöst, dass die Umschaltung zwischen Selektorbetrieb und Multiplexbetrieb durch den Inhalt einer Registerstelle in einem Modusregister der Steuereinrichtung festgelegt wird und dass bei Umschaltung in den Multiplexbetrieb die Daten übertragung im Byte/Wortmultiplexbetrieb oder Blockmultiplexbetrieb erfolgt. Ob der Kanal im Blockmultiplexbetrieb oder Bytemultiplexbetrieb arbeitet, wird mit Hilfe des im Kanalprogramm enthaltenen Transferbefehls festgelegt. Da somit mit dem Kanal sowohl im Bytemultiplexbetrieb als auch im Blockmultiplexbetrieb gearbeitet werden kann, ist es zweckmässig, die Abarbeitung des entsprechenden Transferbefehls bei beiden Betriebsarten möglichst identisch zu gestalten. Identisch ist die organisatorische Bearbeitung eines Transferbe fehis in beiden Betriebsarten in folgenden Schritten: Starten eines Gerätes oder Unterkanals,an dem das Gerät angeschlossen ist, dabei kann die Siartoperation zwischen zwei Datentransfers anderer Unterkanäle eingeschoben werden. Anschliessend geht der neu aktivierte Unterkanal in Warteposition. Trifft nun an der Steuereinrichtung eine G#räteanforde- rung des neu gestarteten Gerätes ein, so wird im Gegensatz zum Bytemultiplexbetrieb, bei dem nur ein einziges Byte übertragen wird und anschliessend wieder der Wartezustand eingenommen wird, beim Blockmultiplexbetrieb der gesamte Blocktransfer ausgeführt. Das heisst auf eine einzige Bedienungsanforderung erfolgt ein ganzer Blocktransfer. Wie beim Bytemultiplexkanal oder Selektorkanal erfolgt nach dem Übertragen des letzten Datums des Blockes automatisch eine Befehlskettung, so dass der nächste Kanalbefehl im Kanalprogramm bearbeitet wird. Der nächste Kanalbefehl kann dabei ein Steuerbefehl oder wiederum ein Transferbefehl sein. Wie beim Bytmultiplexkanal, so wird auch am Blockmultiplexkanal der Wartezustand des Unterkanals wieder eingenommen, sobald bei der Befehlskettung im Kanalprogramm ein Transferbefehl erkannt wird. Erst eine erneute Bedienuncsanforderung des gestarteten Gerätes initiiert den nächsten Blocktransfer. Wartezeiten zwischen dem Starten des Gerätes und der ersten Bedienungsanforderung können jederzeit zur Bearbeitung von Bedienungsanforderungen anderer Unterkanäle ausgenutzt werden. Jede Anforderungsbearbeitung beginnt mit der Abfrage der Adresse des Datenempfängers, z.B. der Abfrage der Geräten nummer oder der Nummer des Unterkanals. Mit dieser Adresse wird dann z.B. über eine Tabelle im Speicher :#jf das spe- zifische Kanalprogramm zugegriffen. Andere Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen. An Hand eines Ausführungsbeispiels1 das in den Figuren dargestellt ist, wird die Erfindung weiter erläutert. Es zeigen Figur 1 ein Blockschaltbild eines Mikrocomputersysterns mit einer DMA Steuerung1 Figur 2 den Aufbau der DMA Steuerung, Figur 3 eine ausführlichere Darstellung eines Teils der DMA Steuerung, Figur 4 den Aufbau eines Modusregisters, figur 5 der Aufbau eines Transferbefehls, Figur 6 den Aufbau eines Befehlsregisters, Figur 7 ein Ablaufdiagramm, in dem die einzelnen Be r3ei- tungsschritte bei einem Blockmultiplexkanal dare- stellt sind. ri-#ur 1 zeict einen möglichen Aufbau eines Mikrocomputer- systems mit einer DMA Steuerung. Der Mikroprosessor MP ur. die DMA Steuerung DMA ist über einen internen Bus IB zur Übertragung von Daten, Adressen und Steuersignale miteinander verbunden. Dem Mikroprozessor MP ist eine Unter brechungssteuerung US zugeordnet, dielJnterbrechungsanforderungen IT von der Steuerung DMA bzw. von anderen Stellen des Mikrocomputersystems in aufbereiteter Form dem MikroprozesSOr- MP zuführt. Der interne Bus IB ist über Zwischenspeicher ZW, Bustreiber BT mit einem externen BU verbunden, der aus einem Adressbus AD, einem Datenbus DB und einem Steuerbus SB besteht. An dem externen Bus BU sind ein Speicher MM, externe Geräte Pl, P2 und P3 angeschlossen. Zu dem liegt am externen Bus BU eine Unterbrechungs- und Prioritätssteuerung UP, von der aus Unterkanäl#K#zu langsamen peripheren Geräten PL führen. Der zum Betrieb des Mikrocomputersystems erforderliche Takt wird durch einen TaktgeneratorTS & abgegeben. Die Ansteuerung der einzelnen Einheiten des Mikrocomputersystems durch den Mikroprozessor MP erfolgt über den Steuerbus SB, bei den ausgehend von Adressen der anzusteuernden Einheiten durch einen PROM-Baustein PROdas entsprechende Auswahlsignal erzeugt wird. Der Zugriff zum Bus zwischen dem Mikrocomputer MP'und der Steuerung DMA wird durch die Signale HOLD und HLDA festgelegt. Der Datentransfer zwischen z.B. dem Speicher MM und den peripheren Geräten Pl bis P3 wird durch die Steuerung DMA gesteuert und zwar mit Hilfe von Bedienungsanforderungen DREQ von den peripheren Geräten und Quittungssignalen DACK von der Steuerung DMA. Unterbrechungsanforderungen zwischen deniperipheren Geräten P1 und P3 und der Steuerung DMA werden über Signale EOD ausgetauscht. Die Geräte P1 bis P3 sind schnelle Geräte und der Datentransfer zwischen diesen peripheren Geräten und z.B. dem Speicher MM erfolgt im Selektorbetrieb. Die Unterbrechungssteuerung UP, mit der die langsamen peripheren Geräte PL über Unterkanäle UK verbunden sind, arbeitet mit der Steuerung DMA mit Hilfe von Bedienungsanforde rungen IOR und Quittungssignalen IOA auf die Bedienungsanforderungen zusammen. Wenn mehrere periphere Geräte PL über mehrere Unterkanäle UK Bedienungsanforderungen stellen, dann wählt die Unterbrechungssteuerung UP entsprechend den Prioritäten der peripheren Geräte PL das höchstpriore periphere Gerät aus und gibt dessen Bedienungsanforderung an die Steuerung DMA. Diese quittiert die Bedienungsanforderung und leitet den gewünschten Datentransfer zwischen dem peripheren Gerät und z.B. dem Speicher MM ein. Da die Geräte PL langsame Geräte sind, kann der Datentransfer zwischen ihnen und dem Datenempfänger bzw. Datensender im Multiplexbetrieb erfolgen Die in Figur 1 gezeigten Einheiten sind alles handelsübliche Bausteine bis auf die Steuerung DMA, die in Figur 2 ausführlicher dargestellt ist. Die in Figur 2 gezeigte DMA Steuerung enthält zunächst einen Sequencer SE bekannten Aufbaus. Dieeer besteht aus einem Bedingungsmultiplexer CC, einem Befehlsdecoder MAP, einem ersten Multiplexer MUX1, einem Mikroadressenregister MA, einem Adressaddierer DR und einem zweiten Multiplexer MUX2. Der Sequencer SE erzeugt aus einem Kanalbefehl mit Hilfe des Befehlsdecoders MAP die Startadresse des Mikroprogramms, das zur Ausführung des Kanalbefehis erforderlich ist. Diese Mikroprogramme stehen im ,Mikropro- grammspeicher MPS. Der Mikroprogrammspeicher MPS ist mit einem Mikrobefehjsregister MBR verbundeninden die ausgegebenen Mikrobefehle aufgenommen werden. Von dort aus gehen dann die einzelnen Leitungen für Steuersignale und Adressen zu den übrigen Einheiten der DMA Steuerung. Das Mikrobefehlsregister MBRSt.. auch mit dem Sequencer SE verbunden, um aus dem vorhergehenden Mikrobefehl die Adresse des nächst zu bearbeitenden Mikrobefenls entwickeln zu können. Der Aufbau eines Sequencers SE und das Zusammenspiel mit den genannten Einheiten ergibt sich z.3. aus der oben angegenbenen Literaturstelle ¯Elektronik Praxis". Eine weitere Einheit der WMA Steuerung ist die Adresse nein- heit AU. Diese enthält Adressenregister ADR für den abzuarbeitenden Kanalbefehl, für den Datensender und Datenempfänger. Da die Inhalte, also die Adressen der Adressenregister ADR verändert werden müssen, enthält die Adresseneinheit AU weiterhin einen Addierer AD, in dem zu der in den Adressenregistern enthaltenen Inhalten z.B. vom Mikrobefehlsregister MBR oder simon anderen Einheiten der DMA Steuerung gelieferte Grössen hinzuaddiert werden können. Die Adressen der Adressenregister ADR können in einem Pufferspeicher PS zwischengespeichert werden und dann auf den Adressbus AB ausgegeben werden. Die einzelnen Grössen, die zu den Adressen im Addierer AD hinzuaddiert werden, werden über einen dritten Mulitplexer MUX3dem Addierer AD zugeführt. Die DMA Steuerung enthält weiterhin eine Dateneinheit DU. Die Dateneinheit DU ist mit dem Datenbus DB verbunden. Die Dateneinheit DU enthält einen Zwischenspeicher PS2, ein Eingangsregister EPS und ein Ausgangsregister APS und einen Pufferspeicher DAR. Der Pufferspeicher DAR liegt zwischen dem Eingangsregister EPS und dem Ausgangsregister APS und er dient dazu, die zu übertragenden Daten in der DMA Steuerung zwischenspeichernzu können. Die in der DMA Steuerung abzuarbeitenden Befehle und der Status der Kanäle sind in Registern des Steuerregistersatzes CR abgespeichert. Der Registersatz CR enthält ein Kanalbefehlsregister CCR zur Aufnahme des zu bearbeitenden Kanalbefehis, ein Modusregister GMR, ein Befehlsregister GCR zur Aufnahme des Startbefehls und ein Statusregister CSR zur Übernahme des Kanal status nach Beendigung einer Transferoperation. Die Register CR sind mit dem Sequencer SE in der in Figur 2 angegebenen Weise verbunden. Mit Hilfe eines Bytezählers BZ stellt die DMA Steuerung fest, wieviel Byte bei einer Transferoperation übertragen worden sind. In Abhängigkeit der Anzahl der übertragenen Byte kann die Transferoperation beendet werden. Aus diesem Grunde ist der Bytezähler BZ auch mit dem Sequencer SE verbunden. Er ist ebenfalls mit einer Schaltungsanordnung ITS zur Erzeugung von Unterbrechungsanforderungen IT und EOD verbunden. Schliesslich enthält die DMA Steuerung noch eine Prioritätslogik PR, eine Anpassungsschaltung ANS zur Anpassung der von der DMA Steuerung erzeugten und entgegengenommenen Signale an den Mikroprozessor MP bzw. an die Peripherie und einen Taktgenerator TG. Die einzelnen Einheiten der DMA Steuerung sind über einen internen Datenbus ID und einen internen Adress- und Steuerbus IA miteinander verbunden. Über einen Schalter S1 kann der externe Adressbus AB mit dem internen Adressbus IA verbunden werden. Dies ist erforderlich, um die DMA-Register zum Laden und Lesen vom Mikroprozessor MP aus adressieren zu können (z.B. Laden des Startbefehls in das Befehisregister GCR). Aus Figur 3 ergibt sich der Aufbau des Adressenregisters ADR in der Adresseneinheit AU. Im Adressenregistersatz ADR ist ein Adressenregister CPR zur Aufnahme der Adresse des Kanalbefehls, ein Adressenregister SPR zur Aufnahme der Adresse des Datensenders, ein Adressenregister DPR zur Aufnahme der Adresse des Datenempfängers und ein Adressenregister MTPR zur Aufnahme eines Adressteils der einem Unterkanal zugeord #nthalten neten Startadresse für dessen Kanalprogramm Den Adressenregistern ist ein Eingangszwischenregister ZW vorgeschaltet. Die Ansteuerung der Adressenregister zum Schreiben oder zum Lesen erfolgt über Steuersignale vom internen Adressbus IA in Abhängigkeit von Taktsignalen Tl und T2 vom Taktgenerator TG. Die Adresse des zu beschreibenden oder zu lesenden Adressregisters wird dem Mikrobefehisregister MBR entnommen und an den Registersatz ADR angelegt. Sie ist in Figur 2 und Figur 3 ARG bezeichnet. Soll der Datentransfer zwischen dem Datonsender und dem Datenempfänger im Multiplexbetrieb durchgeführt werden, also über die Unterbrechungssteuerung UP In Figur 1, dann wird dies der DMA Steuerung vom Mikroprp##ssorMP mitgeteilt. Dazu wird in das Modusregister GMR der DMA Steuerung ein Moduswort eingespeichert, bei dem ein Bit zur Kennzeichnung der Betriebsart enthalten ist. Durch dieses Bit wird die entsprechende Registerstelle im Modusregister GMR eingestellt. Ist dieses Bit z.B. logisch 0, dann wird im Selektorbetrieb gearbeitet, ist es logisch 1, dann wird im Multiplexbetrieb gearbeitet. In Figur 4 ist das Register GMR dargestellt und gezeigt, dass j.B. die dritte Registerstelle darüber entscheidet, in welcher Betriebsart die Datenübertragung erfolgt. Die übrigen Teile des Modusregisters GMR sind zur Erläuterung der Betriebsart der Datenübertragung nicht erforderlich und sind darum nicht dargestellt. Die Entscheidung darüber, ob der Multiplexbetrieb ein Bytemultiplexbetrieb oder ein Blockmultiplexbetrieb sein soll, trifft - . der Transferbefehl, der im Kanalbefehlsregister CCR abgespeichert wird. Der Aufbau eines derartigen Transferbefehls zeigt Figur 5. Auch hier sind nur die Teile des Transferbefehls dargestellt, die zur Erläuterung der Betriebsart der Datenübertragung erforderlich sind. Mit Hilfe des Bestandteils TL: im Transferbefehl wird festgelegt, ob im Bytemultiplexbetrieb oder im Blockmultiplexbetrieb gearbeitet wird. Ist z.B. der TeilTLl logisch 01, dann wird im Bytemultiplexbetrieb gearbeitet, ist er z.B. logisch 11, dann wird im Blockmultiplexbetrieb gearbeitet. Mit Hilfe des Teils TLI kann ausserdem codiert werden, ob der Befehl ein Transferbefehl ist oder ein Steuerbefehl. Der TeilTL2 des Transferbefehls gibt an, ob die Übertragung der Daten wortweise oder byteweise erfolgt, in welcher Richtung der Datentransfer durchgeführt wird und ob die Adresse des Datenempfängers erhöht oder erniedrigt wird. Entsprechend gibt der Teil T#3 des Befehls an, ob die Adresse des Datensenders erhöht oder erniedrigt wird. Aus Figur 6 ergibt sich der Aufbau des Startbefehls, der in das Befehlsregister GCR eingespeichert wird und mit dem ein bestimmtes Gerät gestartet oder gestoppt wird. In einem Teil TEl des Befehlsregisters GCR ist der auszuführende Befehl angegeben, z.B. der Startbefehl oder der Stoppbefehl, in einem Teil TE2 ist der Kanal angegeben, über den der Datentransfer durchzuführen ist, in einem Teil TE3 ist die Adresse des Unterkanals angegeben, über die beim Multiplexbetrieb der Datentransfer erfolgen soll. Im folgenden wird in Verbindung mit dem Ablaufdiagramm der Figur 7 beschrieben, wie der Multiplexbetrieb bei der Daten übertragung#z.B. zwischen dem Speicher MM und dem peripheren Gerät PLO über den Unterkanal UKO nach Figur 1 durchgeführt wird. Vor dem ersten Datentransfer muss die DMA-Steuerung initialisiert werden. Dazu gehört das Laden des Modusregisters GMR und des Adressregisters ADR durch den Mikroprozessor MP. Vor der Ausführung des Datentransfers hinterlegt der Mikroprozessor MP auch das zugehörige Kanalprogramm im Speicher MM. Nach dieser Vorarbeit trägt der Mikroprozessor MP den Startbefehl für den Unterkanal UKO in das Befehisregister GCR der DMA-Steuerung ein. Dies ist der Schritt S1 in Figur 7. Im Schritt S2 übernimmt die DMA-Steuerung nach Figur 2 die weitere Bearbeitung des Startbefehls. Aus dem Inhalt des Modusregisters GMR kann die DMA Steuerung entnehmen, dass die Datenübertragung im Multiplexbetrieb erfolgen soll. Entsprechend setzt die DMA Steuerung eine interne Anforderung INA, siehe Schritt S2. Der Startbefehl kann erst dann zur Ausführung kommen, wenn der Multiplexkanal eine gerade laufende Bearbeitung beendet hat,also den Wartezustand eingenommen hat. Erst dann wird auf Grund der internen Anforderung INA die Startbearbeitung aufgenommen ( Schritt S3,S4 und S5). Die Adresse des anzusteuernden peripheren Gerätes PLO ergibt sich aus dem Inhalt des Befehlsregisters GCR. Dort ist die Adresse des entsprechenden Unterkanals UKO im Teil TE3 enthalten, ausserdem im Teil TE1 angegeben, dass der Unterkanal UKO bzw. das daran angeschlossene Gerät PLO gestartet werden soll. Die DMA Steuerung gibt dementsprechend eine Aufforderung an den Unterkanal UKO bzw. das periphere Gerät PLO, die Datenübertragung zu beginnen und geht dann ¯in einem Schritt S4 der Figur 7 wieder in den Wartezustand über. Dieser Wartezustand wird dann beendet, wenn eine Bedienungsanforderung vom peripheren Gerät PLO bei der DMA Steuerung eintrifft. Diese Überprüfung wird ebenfalls in Schritt S4 in Figur 7 dargestellt. Der Wartezustand bleibt solange erhalten, bis eine Bedienungsaufforderung von dem aufgeforderten Gerät eintrifft. Während des Wartezustandes können jedoch Bedienungsanforderungen von anderen Geräten bearbeitet werden bzw. andere Geräte über den Multiplexkanal gestartet werden. Trifft vom peripheren Gerät PLO die Bedienungsanforderung ein, dann wird in einem Schritt S5 festgestellt, ob nicht höherpriore Anforderungen von anderen Geräten zunächst zu bearbeiten sind (Schritt S5). Ist dies nicht der Fall, dann wird in einem Schritt S6 die Adresse des anfordernden Gerätes geholt und diese Adresse in einem Gerätenummernregister VRG zwischengespeichert. Mit Hilfe dieser Gerätenummer aus dem Gerätenummernregister VRG und dem Inhalt des Adressenregisters MTPR kann die Adresse des ersten zu bearbeitenden Kanalbefehls im Speicher MM berechnet werden. Dies erfolgt mit Hilfe des Addierers AD, dem über den Multiplexer MUX3 die Gerätenummer und der Inhalt des Registers MTPR zugeführt wird. Die neuberechnete Adresse wird dann über den Adressbus AB ausgegeben und unter dieser Adresse der erste Kanalbefehl in das Kanalsbefehlsregister CCR eingespeichert (Schritt 57). Entsprechend dem Kanalbefehl wird die erste Datenübertragung eines Bytes oder Wortes durchgeführt (Schritt S8) und anschliessend überprüft, ob die Datenübertragung beendet ist (Schritt S9). Dies erfolgt mit Hilfe des Bytezählers BZ, der von der DMA Steuerung aus dem Kanalbefehl geladen worden ist und der die Anzahl der zu übertragenden Bytes oder Worte angibt. Sind alle Daten für diesen Datentransferbefehl übertragen worden, dann ist dieser Kanalbefehl abgearbeitet worden und der nächste Kanalbefehl wird in einem Schritt 510 aus dem Speicher MM geholt. Ist dagegen die Datenübertragung, die durch einen Transferbefehl durchgeführt werden soll, noch nicht beendet, wird in einem Schritt S11 abgefragt, ob ein anderer Grund zur Beendigung der Datenübertragung vorliegt, z.B. eine Unterbrechungsanforderung des peripheren Geräts vorliegt. Ist dies nicht der Fall, dann wird anhand des Kanalbefehls im Kanalbefehlsregister CCR festgestellt, ob Blockmultiplexbetrieb vorliegt oder nicht (Schritt S12). Liegt Blockmultiplexbetrieb vor, dann wird mit dem Schritt S8 fortgefahren. Liegt dagegen ein Bytemultiplexbetrieb vor, dann wird in einem Schritt 513 der Übertragungsvorgang unterbrochen und im Schritt S14 wieder in den Wartezustand übergegangen. Beim Bytemultiplexbetrieb wird dann mit Schritt S4 fortgefahren. Ist im Schritt S10 der nächste Kanalbefehl geholt worden, dann wird überprüft, ob dieser ein Ste-uerbefehl ist (Schritt S15). Ist der Befehl ein Transferbefehl, dann wird mit dem Schritt S14 fortgefahren; liegt aber ein Steuerbefehl vor, so wird überprüft (Schritt S16), ob es ein Stopbefehl ist. Ist dies der Fall, wird die Bearbeitung des Kanalprogramms beendet und ein Interrupt IT an den Mikroprozessor MP ge geben (Schritt S17). Liegt kein Stopbefehl vor, dann wird der Steuerbefehl ausgeführt (Schritt S18) und mit dem Schritt S10 fortgefahren. Die einzelnen, geschilderten Schritte werden durch Mikrobefehle veranlasst, die im Mikroprogrammspeicher MPS gespeichert sind. Der Sequencer SE erzeugt in Abhängigkeit des Kanalbefehls im Kanalbefehlsregister CCR und in Abgängigkeit des Inhalts des Modusregisters GMR durch den Befehlsdecoder MAP die Startadresse für das Mikroprogramm, das dem Kanalbefehlswort zugeordnet ist. Das dem Kanalbefehl zugeordnete Mikroprogramm läuft dann unter Steuerung durch den Sequencer ab und die dabei vom Mikroprogrammspeicher MPS abgegebenen Mikrobefehle steuern die DMA Steuerung und den Datentransfer in der oben geschilderten Weise. Ein besonderer Vorteil der Erfindung besteht darin, dass durch die DMA Steuerung der Datentransfer im Blockmultiplexbetrieb oder im Bytemultiplexbetrieb durchgeführt werden kann, ohne dass grosse Änderungen in der DMA Steuerung erforderlich sind. Die gesamte Befehiseinleitung und Befehlsdurchführung sind beim Blockmultiplex und Bytemultiplex identisch bis auf die Durchführung des Datentransfers, der beim Bytemultiplexbetrieb nur in einem Byte besteht, während beim Blockmultiplexbetrieb ein ganzer Datenblock übertragen wird. 6 Patentansprüche 7 Figuren

Claims: Method for controlling data transfer between a transmitter (PL; MM) and a receiver (MM; PL) by means of a control device (DMA) via at least one channel, in which the control device (DMA) employs channel programs for executing the data transfer, in which the data transfer can be generally controlled in selector mode or in multiplex mode, in which the data transfer can be controlled both in byte/word multiplex mode and in block multiplex mode, characterised in that given control of the data transfer in multiplex mode, it is possible to select freely between byte/word multiplex mode and block multiplex mode, the selected multiplex mode being defined by the respective current transfer command in the channel program. Method according to claim 1, characterised in that the channel operated in multiplex mode has a plurality of subchannels (UK), in that each of the subchannels (UK) can process its own channel program, and in that it is possible to select different multiplex modes for different subchannels (UK). Method according to one of the preceding claims, characterised in that, at the beginning of data transfer, the mode register (GMR) and a first address register (MTPR) are loaded with the partial address of the peripheral device by a microprocessor connected to the bus, in that the command register (GCR) is subsequently loaded with the start command for a subchannel by the microprocessor (MP), in that the address of the subchannel or the device number is taken from the start command and is combined with the partial address in the address register (MTPR), the data receiver/transmitter is addressed and is requested to output an operating request, and in that the control device then assumes the waiting state, in that, after the operating request has been received from the data receiver/transmitter with output of its address, the first command of the channel program is addressed using this address and the partial address and is stored in the channel command register (CCR), in that the addresses of the data transmitter and data receiver are stored in a second and third address register (SPR) and (DPR), in that the byte counter (BZ) is loaded with the number of bytes to be transmitted, and in that the data transfer is then carried out in block multiplex mode until the byte counter is 0, or until only one byte/word is transmitted in byte/word multiplex mode. Control device for data transfer via a bus between a data transmitter and a data receiver in dependence on a channel program containing transfer commands and control commands in selector or multiplex mode for carrying out a method according to Claim 1, in which the control device is designed as a DMA controller which contains a microprogram memory (MPS) addressed by a sequencer (SE) for receiving the microprograms assigned to the channel commands, an address unit (AU) for receiving the data receiver address and the data transmitter address and the address of the channel command word, a data stage (DU) for temporarily storing the data to be transmitted, a byte counter (BZ) and a control register stage (CR) with a mode register (GMR), a channel command register (CCR) and a command register (GCR), characterised in that the sequencer (SE) is designed in such a way that, depending on the contents of the channel command register (CCR) and depending on the contents of the mode register (GMR), it generates via the command decoder (MAP) the start address for the microprogram assigned to the channel command word for controlling the byte/word multiplex mode or block multiplex mode and controls the respective program execution for the mode selected in each case.

Inventors: BOENING, WERNER, ING. GRAD., Böning, Werner, Ing. grad.
Applicants: SIEMENS AKTIENGESELLSCHAFT
Application year: 1983
Main classification: G06F13
IPC codes: G06F13