Gebiet der Erfindung:
-
Die Erfindung bezieht sich auf ein Daten-Dialogsystem gemäß dem
Gattungsbegriff des unabhängigen Patentanspruches, und insbesondere auf
Dialogsysteme, in denen Datenpakete rasch und zuverlässig von Punkt zu Punkt
in einem Raum (oder Zeit) abgeliefert werden müssen, die aber bei der
Übertragung beeinträchtigt werden können. Insbesondere ist die Erfindung
geeignet für die Berechnung der Prüfsumme, wie sie in dem international
genormten Transport-Schichtprotokoll ISO IS/8073 spezifiziert ist, und sie kann
für andere ähnliche Protokolle verwendet werden, die eine Prüfsumme erfordern.
Hintergrund der Erfindung:
-
Eines von verschiedenen Problemen, die beim Dialog zwischen
Datenverarbeitungseinrichtungen angetroffen werden, ist dies, daß die
Datenpakete bei der Übertragung beeinträchtigt werden können. Verschiedene
geschichtete Dialogprotokolle werden typischerweise verwendet, um diese Daten-
Dialogprobleme zu lösen. Insbesondere ist das Transport-Schichtprotokoll für die
zuverlässige End-Zu-End-Übertragung von Daten zwischen Systemen
verantwortlich und es ist die primäre Protokollschicht, welche diese
beeinträchtigten Pakete feststellt und diese kompensiert. Das Verfahren, das in
dem genormten Transport-Schichtprotokoll (internationaler Standard ISO IS/8073)
zur Feststellung von beeinträchtigten Paketen verwendet wird, wurde ursprünglich
durch Fletcher vorgeschlagen [Fletcher, J., "An Arithmetic Checksum for Serial
Transmissions" IEEE Transactions on Communications, Band COM-30, Nr.1,
Januar 1982, Seiten 247-252]. Dieses Verfahren berechnet eine arithmetische
Prüfsumme, die in Paketen enthalten ist, wenn sie übertragen werden, so daß
angetroffene Fehler während der Übertragung festgestellt werden können, wenn
sie empfangen werden. Diese Veröffentlichung bezieht sich auf ein verbessertes
Verfahren für die Berechnung von Prüfsummenfunktionen für Protokolle, welche
Fehler-Prüffunktionen des arithmetischen Typs gemäß Fletcher verwenden.
-
Andere Protokolle, die die Fletcher-Prüfsumme benutzen, umfassen das Protokoll
für die Vorgabe des Netzwerkservice ISO IS/8473 im verbindungslosen Modus
und das Department of Defense Transmission Control Protocol/Internet Protocol
(TCP/IP), das in dem Arpanet verwendet wird.
-
Die serielle Informationsübertragung zwischen Computern kann durch Fehler
beeinträchtigt werden, die aus Fehlfunktionen der Hardware und
Umgebungsstörungen resultieren. Verschiedene Verfahren werden
typischerweise benutzt, um die Fehler festzustellen, so daß sie entdeckt werden
können aus Funktionen, die die Prüfsumme, Produktcodes und zyklische
Redundanzprüfungen umfassen. Diese Verfahren geben verschiedene
Schutzpegel vor. Die Verwendung der Fletcher-Prüfsumme ist besonders
vorteilhaft für allgemeine Standard-Computer-Dialogverbindungen, da die
Prüfsumme leicht in gleicher Weise in Systemen mit hoher und geringer Leistung
verwirklicht werden kann. Dialoge zwischen Hochleistungssystemen können
Nutzen aus einem Fehlerfeststellverfahren ziehen, das speziell für die
Hochleistungsanwendung entworfen ist. Die genormte Allzweck-
Prüfsummenmethode ist jedoch auch in diesem Fall immer noch erwünscht, um
eine Kompatibilität mit Systemen geringer Leistung vorzugeben. Es ist jedoch
allgemein anerkannt, daß das Verfahren zur Verwirklichung der Prüfsumme die
Durchgangsleistung des Dialogsystems beträchtlich beeinflussen kann. Daher ist
es vorteilhaft, ein Verfahren zur Berechnung der Prüfsumme mit hoher
Geschwindigkeit vorzugeben, um die System-Durchgangsleistung aufrecht zu
erhalten.
-
Zusätzlich zur Feststellung von Fehlern müssen Daten physikalisch aus einem
Computer-Systemspeicher für Zwecke der Übertragung kopiert werden und in den
Speicher für den Empfang kopiert werden. Ein Hauptproblem bei der Erzielung
einer hohen Durchgangsleistung des Dialogsystems ist die
Verarbeitungsverwaltung, die Ausführungsoperationen, wie beispielsweise dem
Kopieren und der Berechnung der Prüfsumme zugeordnet ist und die mit jedem
Byte des Pakets ausgeführt werden. Diese zwei Operationen werden
insbesondere im Stand der Technik der Reihe nach durchgeführt und demzufolge
mit einer zusätzlichen Zeit, um das Paket vollständig zu verarbeiten. Im Stand der
Technik ist die Nützlichkeit der Kombination von Softwareprogrammen
vorgeschlagen worden, welche die Prüfsumme berechnen und Kopierfunktionen
ausführen. Diese bekannten Verfahren sind jedoch immer noch sehr
leistungseinschränkend infolge der Verwendung von Software, die Allzweck-
Prozessorbefehle steuert, um die Aufgabe zu bewerkstelligen.
-
Ein weiterer leistungsbeschränkender Punkt im Entwurf von Dialogsystemen
bezieht sich auf die übliche und nützliche Praxis der Zuordnung von Daten zu
verschiedenen diskontinuierlichen Speicherplätzen in dem Speicher des
Computersystems. Obgleich nützlich hinsichtlich der optimalen Nutzung des
Speichers, stellt diese Praxis Probleme für Hochleistungsdialoge dar, bei denen
in einem vorgegebenen Daten-Dialogpaket zu übertragende Daten in mehreren
Datenpuffern enthalten sein können. Dies kompliziert weiter die Berechnung einer
Prüfsumme und das Auslesen und Einschreiben von Puffern für die Übertragung
und den Empfang.
-
Die vorliegende Erfindung geht von einem Daten-Dialogsystem mit
Prüfsummenberechnung zur Fehlerfeststellung aus, wie es in der US-A-35 73 726
offenbart ist.
Zusammenfassung der Erfindung:
-
Im Hinblick auf vorstehende Ausführungen liegt eine breite Aufgabe dieser
Erfindung, wie sie in den Ansprüchen offenbart ist, in der Vorgabe eines
wirtschaftlichen Hoch leistungs-Daten-Dialogsystems für die Feststellung der
Beeinträchtigung von Digitaldaten, die während der Übertragung oder
Speicherung aufgetreten sein kann.
-
Diese Aufgabe wird gelöst durch die kennzeichnenden Merkmale der
unabhängigen Ansprüche. Weitere vorteilhafte Ausführungsbeispiele des
erfindungsgemäßen Systems können den abhängigen Ansprüchen entnommen
werden.
-
Die Erfindung gibt ein Fehler-Feststellsystem vor, bei dem Hardwareeinrichtungen
für die Abtastung und Prüfung der Daten vorgesehen sind, ohne daß
Prozessorzeit im Softwarebetrieb benutzt wird mit Ausnahme für die Auslösung
und Beendigung der Prüfoperation.
-
Die Erfindung gibt ferner einen wirtschaftlichen Schaltkreis vor, der eine minimale
Anzahl von elektrischen Komponenten für die Berechnung der Prüfsummen mit
hoher Geschwindigkeit (Speicher-Übertragungsgeschwindigkeit) sowohl beim
Empfang als auch bei der Übertragung in einem Daten-Dialogsystem besitzt.
Hierbei wird eine minimale Anzahl von Eingängen pro Logik-
Berechnungskomponente erforderlich.
-
Schließlich gibt die Erfindung eine Hochgeschwindigkeits-(Speicher-
Übertragungsgeschwindigkeit)-Prüfsummen-Berechnungseinheit vor, die die
Prüfsummenberechnung parallel mit der Hochgeschwindigkeitsbewegung der
Daten von einem Speicherplatz zu einem anderen ausführt unter Verwendung
eines automatischen Adressen-Erzeugungsschaltkreises vom DMA-Typ, wodurch
das Erfordernis der Neuabtastung der Daten für irgendeinen Zweck vermieden
wird. Die Kopie kann der Übertragung, dem Empfang oder irgendeinem anderen
Grund dienen.
Kurze Beschreibung der Zeichnungen:
-
Fig. 1 ist eine schematische Darstellung eines Computersystems,
welches ausgelegt ist für das Senden und den Empfang von
Datenübertragungen und das mit einer Prüfsummen-
Berechnungseinheit gemäß der Erfindung ausgerüstet ist;
-
Fig. 1a und 1b sind schematische Diagramme, die den Übertragungs- und
Empfangsmodus des Computersystems gemäß Fig. 1 zeigen;
-
Fig. 2 ist ein schematisches Diagramm der Speicherorganisation
eines typischen Pakets von Daten, das benutzt wird, um
Information durch ein Paket-Schalternetzwerk zu übertragen,
auf das die Prüfsummen-Neuerung der Erfindung anwendbar
ist;
-
Fig. 3 ist ein schematisches Diagramm des Prüfsummen-
Berechnungsabschnittes der Prüfsummen-Berechnungseinheit
gemäß Fig. 1;
-
Fig. 4 ist ein schematisches Diagramm eines Teiladdierers des Typs,
wie er für die Prüfsummen-Berechnungseinheit verwendet wird;
-
Fig. 5 ist ein schematisches Diagramm einer praktischen
Ausführungsform des Prüfsummen-Berechnungsabschnittes
der Prüfsummen-Berechnungseinheit gemäß Fig. 3; und
-
Fig. 6 ist ein schematisches Diagramm eines typischen Paketes von
Daten gemäß Fig. 2 mit der Ausnahme, daß ein Puffer-
Verkettungsmerkmal veranschaulicht ist, wobei das Paket nicht
aneinandergrenzende Abschnitte im Speicher aufweist.
Detaillierte Beschreibung:
-
Bezugnehmend auf Fig. 1 der Zeichnungen ist dort eine schematische Zeichnung
eines Daten-Dialogsystems dargestellt, welches eine Prüfsummen-
Berechnungseinheit 10 zwischen einem universellen Zentralcomputer 12 und
einer Netzwerk-Schnittstelle 14 aufweist. Daten werden über die Schnittstelle 14
zu einem Dialognetzwerk übertragen und von diesem empfangen.
-
Die Prüfsummen-Berechnungseinheit 10 umfaßt einen Prüfsummen-
Berechnungsabschnitt 16, einen Datenfluß-Steuerabschnitt 18 und einen
Netzwerk-Speicherabschnitt 22. Pakete von Daten liegen in einem
Hauptspeicherabschnitt 20 des Zentralcomputers 12 vor und in dem Netzwerk-
Speicherabschnitt 22, der temporär Datenpakete vor der Übertragung und nach
dem Empfang durch die Netzwerk-Schnittstelle 14 speichert.
-
Der Datenfluß im Übertragungsmodus erfolgt vom Hauptspeicher 20 des
Zentralcomputers 12, von wo er parallel über eine Buseinheit 23 zu dem
Prüfsummen-Berechnungsabschnitt 16 und dem Netzwerk-Speicherabschnitt 22
gerichtet wird. Nach der temporären Speicherung in dem Netzwerk-
Speicherabschnitt fließt er aus der Netzwerk-Schnittstelle heraus. Der Datenfluß
im Empfangsmodus ist von der Netzwerk-Schnittstelle 14 zu dem Netzwerk-
Speicherabschnitt 22 gerichtet, von wo er in einer ähnlichen Weise parallel über
die Buseinheit 23 zu dem Prüfsummen-Berechnungsabschnitt 16 und zu dem
Hauptspeicher 20 des Zentralcomputers gerichtet wird.
-
Die Buseinheit 23 ist schematisch in den Fig. 1 a und 1 b dargestellt, um die
Datenflußrichtungen während der zwei Betriebsmoden, der Übertragung und des
Empfangs zu verdeutlichen. Diesbezüglich gibt ein bidirektionaler Bus 24 mit
einer Breite von 32 Bit direkte Verbindungen zwischen dem
Zentralcomputerspeicher 20 und dem Netzwerk-Speicherabschnitt 22 für einen bidirektionalen
Betrieb vor.
-
Der Bus 25 besitzt ebenfalls eine Breite von 32 Bit und verbindet den
Prüfsummen-Berechnungsabschnitt 16 mit dem Zentraispeicher 20 und dem
Netzwerk-Speicher 22 über den Bus 24 für einen Betrieb in einer Richtung, wobei
die Datenworte immer in den Prüfsummen-Berechnungsabschnitt 16 sowohl bei
der Übertragung als auch dem Empfang gelesen werden.
-
Die Hardwarelogik der Prüfsummen-Berechnungseinheit von Fig. 1 umfaßt
Adressengeneratoren 32 und 34, die über Verbindungen 35 und 36 durch den
Datenfluß-Steuerabschnitt 18 für eine entsprechende Abtastung über
Verbindungen 37 und 38 in einem direkten Speicher-Zugriffsmodus (DMA), in
dem Hauptspeicher 20 und dem Netzwerk-Speicherabschnitt 22 gesteuert
werden.
-
Der DMA-Adressengenerator 32 arbeitet während der Übertragung, um Daten von
dem Hauptspeicher 20 auf den Bus 23 zum Zwecke des gleichzeitigen
Einschreibens (1.) in den Netzwerk-Speicherabschnitt 22 und (2.) in den
Prüfsummen-Berechnungsabschnitt 16 zu bewegen. Der DMA-Adressengenerator
34 arbeitet während der Übertragung, um Daten in den Netzwerk-
Speicherabschnitt 22 zur temporären Speicherung zu bewegen, bevor sie über
die Netzwerk-Schnittstelle 14 übertragen werden.
-
Während des Empfangs arbeitet der DMA-Adressengenerator 34, um Daten von
dem Netzwerk-Speicherabschnitt 22 auf den Bus 23 zum Zwecke der
gleichzeitigen Einschreibung (1.) in den Hauptspeicher 20 und (2.) in den
Prüfsummen-Berechnungsabschnitt 16 zu bewegen. Der DMA-Adressengenerator
32 arbeitet während des Empfangs, um Daten in den Hauptspeicher 20 zur
Verwendung durch den Zentralcomputer 12 zu bewegen.
-
Fig. 2 zeigt ein typisches beispielhaftes Datenpaket 30, das in einem
Hauptspeicher 20 mit einer Breite von 32 Bit organisiert ist und einer Übertragung
von dem Zentralcomputer 12 zu der Netzwerk-Schnittstelle 14 unterliegt. Das
Datenpaket umfaßt eine Reihe von Bytes mit 8 Bit, die die Protokoll-
Steuerinformation PCI für die verschiedenen Schichten des Protokolls 150
festlegen und die die Transport-Schichtdaten 151 festlegen. Die Protokoll-
Steuerinformation umfaßt die Transportschicht PCI 152 und die untere
Netzwerkschicht PCI 153.
-
Die Grenze A ist die erste Grenze für das Doppelwort mit 32 Bit am oder vor dem
Beginn des Paketes, mit dem die erste DMA-Operation beginnt. Der tatsächliche
Start des Paketes ist der Start der unteren Netzwerkschicht PCI, die sich von dem
Punkt B zu dem Punkt C erstreckt. Die Startadresse der Transportschicht, die sich
zwischen den Punkten C und F erstreckt, umfaßt die ersten und zweiten auf die
Prüfsumme bezogenen Bytes X und Y, die an den Punkten D und E entsprechend
angeordnet sind. Der Beginn der Transportschichtdaten befindet sich an
irgendeinem Punkt F, der auf einer Doppelwortgrenze liegen kann oder auch
nicht. Das Ende der Daten und gleichzeitig auch das Paket befindet sich an
irgendeinem Punkt G. Der Raum H zwischen einem solchen Ende und dem Ende
des 32-Bit-Doppelwortes 1 kann 0,1, 2 oder 3 Bytes umfassen, die mit Nullen
gefüllt sind.
-
Eine Offset-Anzahl von Bytes zwischen dem Start der DMA-Operation A und dem
Start der Prüfsummenoperation wird zwischen dem Punkt A und dem Punkt C
gezählt. Ein zweiter Offset zwischen dem Ende der Transportschichtdaten G und
dem Ende der DMA-Operation wird zwischen dem Punkt G und dem Punkt 1
gezählt. Der Prüfsummen-Datenfluß-Steuerabschnitt 15 benutzt die zwei Offsets,
um den Prüfsummen-Berechnungsabschnitt über die Leitung 52 zu steuern. Diese
Steuerung ruft den Beginn der Prüfsummenbildung mit dem Byte hervor, das
unmittelbar auf den Punkt C folgt, und den Stop mit dem Byte, das unmittelbar vor
dem Punkt G liegt. Unter Verwendung des Offsets können die voneinander
unabhängigen Anforderungen der Kopie eines Datenblockes und der
Prüfsummenbildung mit einer Untergruppe der kopierten Daten während
gleichzeitiger Operationen verwirklicht werden, wobei das Kopieren an den
beliebigen Punkten A und 1 entsprechend beginnt und endet, und die
Prüfsummenbildung an den Punkten C und G entsprechend beginnt und endet.
-
Während der Übertragungsoperation werden Datenpakete 30 in dem
Hauptspeicher 20 in der Form von Worten mit einer Breite von 32 Bit zu dem
Netzwerk-Speicherabschnitt 22 über die Busverbindung 24 bewegt. Gleichzeitig
und parallel werden Datenpakete zu dem Prüfsummen-Berechnungsabschnitt 16
über die Busverbindung 25 bewegt. Die obige Parallelbewegung von Daten wird
in eine Direktspeicherzugriffs-(DMA)-Operation durch den Adressengenerator 32
ausgeführt mit nur einer Abtastung der Daten in dem Hauptspeicher 20 für jedes
Wort mit einer Breite von 32 Bit.
-
Bei der Vorbereitung der Übertragung besitzen die Datenpakete 30 in dem
Hauptspeicher 20, jeweils gemäß dem 150-Transportschicht-
Prüfsummenalgorithmus, Bytes X und Y, die auf "Summen" und "Summe von
Summen" bezogen sind und die den Wert Null besitzen, bevor die Prüfsumme
berechnet wird. Gemäß der Erfindung werden die Paketdaten zu dem
Prüfsummen-Berechnungsabschnitt 16 gesendet, wo Werte für die Bytes X und Y
gemäß dem Prüfsummenalgorithmus berechnet werden. Zur gleichen Zeit wird
eine identische Kopie der Daten mit Null-Bytes X und Y von dem Hauptspeicher
20 zu dem Netzwerk-Speicherabschnitt 22 gesendet.
-
Die berechneten X- und Y-Bytewerte werden zu dem Netzwerk-Speicherabschnitt
22 ausgegeben, um die Null-Bytes X und Y der darin kopierten Daten über einen
Prüfsummen-Datenausgang 80, den Datenfluß-Steuerabschnitt 18 und eine
Verbindung 82 zwischen dem Abschnitt 18 und dem Netzwerk-Speicherabschnitt
22 zu füllen. Die Paketdaten mit den Bytewerten X und Y werden sodann auf das
Netzwerk über die Netzwerk-Schnittstelle 14 übertragen.
-
Während der Empfangsoperation werden Datenpakete 30 in dem Netzwerk-
Speicherabschnitt 22 in der Form von Worten mit einer Breite von 32 Bit zu dem
Hauptspeicherabschnitt 20 über die Busverbindung 24 bewegt. Gleichzeitig und
parallel werden die Datenpakete zu dem Prüfsummen-Berechnungsabschnitt 16
über die Busverbindung 25 bewegt. Die obige Parallelbewegung von Daten wird
in einer Direktspeicherzugriff-(DMA)-Operation durch den Adressengenerator 34
ausgeführt mit nur einer Abtastung der Daten in dem Netzwerk-Speicherabschnitt
22 für jedes Wort von 32 Bit.
-
Die in dem Netzwerk-Speicherabschnitt 22 empfangenen Datenpakete 30
besitzen gemäß dem LSO-Transportschicht-Prüfsummenalgorithmus
komplementäre Bytes X und Y entsprechend der "Summe" und "Summe von
Summen" mit spezifischen Werten, welche durch eine Prüfsummenoperation von
einer Übertragungsstation berechnet wurden. Während der Empfangsoperation
wird jedes übertragene Datenpaket auf Fehler an der Empfangsstation geprüft, in
dem aktuelle Summen- und Summe von Summen-Werte für alle Bytes in dem
Transportschichtpaket von den Punkten C bis G in Fig. 2 berechnet werden.
Jeder Wert wird dem Wert Null bei Abwesenheit eines Fehlers entsprechend als
direkte Folge der spezifischen, auf die Summe und die Summe von Summen
bezogenen Werte, die in den Bytes X und Y durch die Übertragungsstation
gespeichert sind. Die Prüfsummenberechnungen beim Empfang geben eine
Fehlerfeststellung durch kontinuierliche Prüfung jedes empfangenen Datenpakets
auf Werte von Null für die Summe und die Summe von Summen vor.
-
Werte für die Summen- und Summe von Summen-Bytes werden an den
Hauptspeicher 20 über den Prüfsummen-Datenausgang 80, den Datenfluß-
Steuerabschnitt 18 und eine Verbindung 84 zwischen dem Steuerabschnitt 15
und dem Hauptspeicher 20 ausgegeben, um den korrekten oder nicht-korrekten
Empfang des Paketes anzuzeigen.
-
Der Prüfsummen-Berechnungsabschnitt 16 von Fig. list in schematischen
Einzelheiten in Fig. 3 dargestellt. Die Eingangsseite des Abschnittes 16 ist
wirksam mit dem Datenbus 25 verbunden, um Datenbits 32 zu einer Zeit zu
empfangen, während Daten zwischen den Speichern 20 und 22 während der
Übertragung und des Empfangs bewegt werden. Eine Vierweg-
Multiplexerlregistereinheit 40 speist eine Reihe von Teiladdierern 45, 46 und 47
mit einem Byte zu jedem Zeitpunkt. Diese Addierer führen die erforderlichen
Fletcher-Prüfsummenoperationen aus.
-
Der Prüfsummen-Berechnungsabschnitt 16 umfaßt eine Prüfsummen-
Steuereinheit 50, die mit der Multiplexereinheit 40 und den Teiladdierern
verbunden ist, um deren Steuerung zu bewirken. Eine Steuerverbindung 52 (in
Fig. 1 gezeigt) ist zwischen dem Datenfluß-Steuerabschnitt 18 und der
Prüfsummen-Steuereinheit 150 vorgesehen.
-
Ein Datenausgang 55 des Prüfsummen-Berechnungsabschnittes 16 besteht aus
zwei 8 Bit-Worten, die mit "Summe" und "Summe von Summen" bezeichnet sind,
welche die Werte sind, die durch den 150-Transportschicht-
Prüfsummenalgorithmus im Falle des Empfangs gefordert werden. Der Ausgang
55 besitzt den Wert "Null" sowohl für die Bytes der Summe als auch der Summe
von Summen, in dem Fall, wo keine Fehler in dem empfangenen Paket
festgestellt werden. Andernfalls weicht das Ergebnis von Null ab. Im
Übertragungsmodus werden die Ausgangswerte 55 in einer relativ geringen
Berechnung benutzt, die durch den Datenfluß-Steuerabschnitt 18 ausgeführt wird
und die in dem Transportschicht-Protokollstandard festgelegt ist, um die exakten
Prüfsummenbytes X und Y zu erzeugen, die in das Datenpaket vor der
Übertragung eingeschrieben werden.
-
Bezieht man sich auf Fig. 3 und nimmt man an, daß sich das Gerät in einem
Übertragungsmodus befindet, so wird auf den Bus 25, der ein Wort mit einer
Breite von 32 Bit von dem Hauptspeicher 20 führt, durch den Multiplexer 40
zugegriffen, der es in vier 8 Bit-Worte (n = 8) unterteilt, welche der Reihe nach
den Eingängen A0 bis A7 des Teiladdierers 45 zugeführt werden.
-
Mit der Verbindungskonfiguration gemäß Fig. 3 kann der Teiladdierer 45
unabhängig den geforderten "Summen"-Wert (Modulo 255) für den Datenausgang
55 erzeugen. Die Erzeugung eines "Summe von Summen"-Wertes (Modulo 255)
erfordert die gemeinsame Teilnahme aller drei Teiladdierer 45, 46 und 47 bei der
Verbindungskonfiguration gemäß Fig. 3. Diese Ausgangswerte 55 werden
benutzt, um die Prüfsummenbytes X und Y zu berechnen, die in das Datenpaket
vor der Übertragung eingeschrieben werden.
-
Wenn sich das Gerät in einem Empfangsmodus befindet, so wird auf den Bus 25
in ähnlicher Weise durch den Multiplexer 40 zugegriffen, welcher das Wort in vier
8 Bit-Worte (n = 8) unterteilt, die der Reihe nach den Eingangen A0 bis A7 des
Teiladdierers 45 zugeführt werden. Mit identischem Betrieb erzeugt der
Teiladdierer 45 den geforderten "Summen"-Wert für den Datenausgang 55, und
der "Summe von Summen"-Wert wird durch die gemeinsame Einwirkung aller drei
Teiladdierer 45, 46 und 47 gebildet. Der Datenfluß-Steuerabschnitt 18 übermittelt
die Werte für die Summe und die Summe von Summen zu dem Hauptspeicher 20
des Zentralcomputers 12 über die Leitung 84 (in Fig. 1 gezeigt). Der
Zentralcomputer triffi eine Feststellung, ob der fehlerfreie Empfang des Paketes,
der auf diesen Werten basiert, in beiden Fällen Null beträgt oder nicht.
-
Damit der Prüfsummen-Berechnungsabschnitt nicht als ein
leistungsbeschränkender Engpaß im Hinblick auf die maximal mögliche
Geschwindigkeit im Falle eines DMA-gesteuerten Speichers wirkt, muß bei einer
Speicherkopieroperation alleine die Prüfsummenoperation mit einer
Geschwindigkeit ausgeführt werden, die dem vierfachen der Geschwindigkeit der
Speicherübertragung entspricht. Das heißt, vier Bytes müssen einer
Prüfsummenbildung während der Zeit einer DMA-Übertragung mit 32 Bit
unterzogen werden.
-
Die Prüfsummenoperationen in dem hier offenbarten Ausführungsbeispiel werden
durch Teiladdierer 45, 46 und 47 ausgeführt, die durch acht Volladdierer
aufgebaut werden, von denen jeder eine Breite von einem Bit aufweist und die
parallel betrieben werden, um einen "Teiladdierer" zu bilden. Ein solcher
Teiladdierer ist in Fig. 4 gezeigt und umfaßt acht Volladdierer 60 bis 67 mit einer
Breite von einem Bit und ein "Teilsummen-Ausgangsregister" 71 mit einer Breite
von acht Bit und ein "Teilübertrags"-Ausgangsregister 72 mit einer Breite von acht
Bit.
-
Jeder Volladdierer mit einer Breite von einem Bit besitzt drei Eingänge für die
Addition von drei Bits (An und Bn und einen Übertragseingang Cn), und somit
besitzt jeder der Teiladdierer 24 Eingänge, die drei Worte A, B und C mit 8 Bit
aufnehmen, wie dies in Fig. 4 gezeigt ist. Jeder Volladdierer mit einer Breite von
einem Bit besitzt zwei Ausgangsbits für die Summe Sn und den Übertrag Cn, und
jeder Teiladdierer ist somit über einen Bus 75 mit einer Breite von 8 Bit an das
Register 71 angeschlossen, das einen "Teilsummen"-Wert ausgibt und über einen
Bus 76 mit einer Breite von 8 Bit an das Register 72 angeschlossen ist, welches
einen "Teilübertragst"-Wert ausgibt. Obgleich die Einzelbitaddierer unabhängig
voneinander betrieben werden, besitzen ihre Ausgangsbits, die in den Registern
71 und 72 gespeichert werden, eine 8 Bit-Binärgewichtung wie ein normaler
binärer Summenausgang.
-
Der Teiladdierer ist insofern ein Teiladdierer, als er nicht die Fortpflanzung von
Übertragsbits durch die Addierer-Bitpositionen (vom Übertragsausgang zum
Übertragseingang) von der am wenigstens signifikanten Bitposition zu der
signifikantesten Bitposition in jedem Addierzyklus in Rechnung stellt. Durch die
Vermeidung des Wartens auf Überträge, die sich durch den Addierer fortpflanzen,
um einen korrekten Summenausgang zu erzeugen, kann der Addierer der Reihe
nach eine Liste von Binärworten mit einer sehr schnellen Zykluszeit und mit einer
minimalen Verzögerung pro Wort addieren, da jeder Addierer mit einer Breite von
einem Bit unabhängig und parallel arbeiten kann.
-
Um Überträge in Rechnung zu stellen, ohne auf die Übertragsfortpflanzung zu
warten, kann alternativ ein vollständiges Summenresultat an jeder
Ausgangsbitposition gebildet werden, indem alle 24 Eingangsbits bezüglich ihrer
Einwirkung auf das Ausgangssummenbit in Rechnung gestellt werden. Dieses
Verfahren kann mit einer hohen Geschwindigkeit arbeiten, besitzt aber den
Nachteil einer sehr großen Anzahl von Logikeingängen, die für jedes Ausgangsbit
zu berücksichtigen sind, und somit einen hohen Aufwand speziell bei breiten
Binärworten. Die geringe Anzahl von Eingängen, die pro Bitposition bei der
Erfindung erforderlich sind, resultiert aus seiner Bereitschaft, eine teilweise
vervollständigte Summe (in zwei Teilen) für eine vollständige Summe bei jeder
der letzten Summieroperation nachfolgenden Summieroperation in der Reihe zu
ersetzen.
-
Der "Teilsummen"-Ausgang 75 an jeder Zyklusgrenze ist nicht die tatsächliche
Summe der zuvor addierten Summanden, da ihm eine Berücksichtigung der
Übertragswerte fehlt. Der Teilübertragsausgang 76 besitzt einen ähnlichen
Mangel. Wenn diese zwei Ausgänge 75 und 76 vollständig summiert würden, so
würde der Ausgang die korrekte laufende Summe für die vorangehenden
Summanden sein. Bei der Erfindung ist jedoch eine vollständige Summe niemals
so lange verfügbar, bis das endgültige Resultat gebildet ist.
-
Um dem Mangel Rechnung zu tragen, wird der Teilübertragsausgang nach links
verschoben zu der nächst höheren Bitposition und zusammen mit der Teilsumme
und dem nächsten Summanden in dem nächsten Addierzyklus gemäß Fig. 3
addiert. Die Längsverschiebung tritt an den Verbindungspunkten C0-C7 nach Art
eines umlaufenden Übertrages auf, wodurch die erforderliche Modulo 255-
Arithmetik verwirklicht wird. Dies führt zu einem Summenausgang in dem ersten
Addierer 45, der solange nicht die endgültige korrekte Summe ist, bis genügend
Zyklen ausgeführt worden sind, nachdem der letzte von Null abweichende
Summand addiert worden ist, um alle verbleibenden Teilüberträge zu addieren.
7 Zyklen (im Falle eines Summanden mit 8 Bit), nachdem die einlaufenden
Summanden enden und Werte von Null für die Summanden substituiert worden
sind, beträgt der Teilübertragsausgang Null und der Teilsummenausgang wird
das vollständige Summenresultat (keine Teilsumme) enthalten. Obgleich
zusätzliche Zyklen benötigt werden, um das endgültige Summenresultat zu
erzeugen, kann somit jeder Zyklus mit höherer Geschwindigkeit ausgeführt
werden. Wenn eine große Anzahl von Summanden addiert werden, ergibt sich
somit eine Zeiteinsparung, um die endgültige Summe zu erzeugen.
-
Bezüglich des Verfahrens der Bildung der Summe von Summen muß diese
Addition den letzten Summenwert mit dem laufenden Gesamtwert der Summe von
Summen zusammenaddieren. Diese Werte kommen jeweils in zwei Teilen,
aufgrund des verwendeten Verfahrens der Teiladdition. Infolgedessen muß die
Summe von Summen-Addition vier Eingänge zusammenaddieren, welche aus
zwei neuen Teileingängen für die Summe und zwei laufenden Gesamt-
Teileingängen für die Summe von Summen bestehen. Das Ergebnis wird gebildet
durch Verwendung der zweiten und dritten Teiladdierer 46 und 47. Die neuen
Teileingänge für die Summe bestehen aus:
-
1) der neuen Teilsumme (Eingang an A0-A7 am Teiladdierer 47), und
-
2) dem neuen Teilübertrag (Eingang an B0-B7 des Teiladdierers 46).
-
Die laufenden Gesamt-Teileingänge für die Summe von Summen sind:
-
3) die laufende Teilsumme von Summen (Eingang an B0-B7 des
Teiladdierers 47), und
-
4) der laufende Teilübertrag von dem Summe von Summen-
Additionszyklus (Eingang an A0-A7 des Teiladdierers 46).
-
Diese vier Eingänge (anstelle von drei Eingängen bei einem normalen Addierer:
A, B & Übertragseingang) werden effektiv in zwei Stufen des Summe von
Summen-Addierers teiladdiert, der die zweiten und dritten Teiladdierer 46 und 47
umfaßt. Da diese Addition ebenfalls eine "Teiladdition" ist, werden zwei
zusätzliche Ausgangswerte gebildet. Die gesonderten, durch die Teiladdition
erzeugten Teilwerte, nämlich die Teilsumme und der Teilübertrag von dem
Teiladdierer 46, müssen bei der Bildung der Summe von Summen-Ergebnissen
berücksichtigt werden. Dem wird Rechnung getragen an den Eingängen C0-C7
des Teiladdierers 47 und den Eingängen C0-C7 des Teiladdierers 46. Die
Summieroperation der vier Eingänge, die erforderlich ist, um das Summe von
Summen-Resultat unter Verwendung des Teiladditionsverfahrens zu erhalten,
wird somit durch Verwendung der einfachen Teiladdierer 46 und 47 mit drei
Eingängen erzielt.
-
Das Verfahren der Verbindung der zwei Teiladditionsstufen 46 und 47 gestattet
es, daß das endgültige Summe von Summen-Resultat in dem dritten Teiladdierer
47 verbleiben kann, anstatt zwischen den beiden bei abwechselnden Zyklen hin
und her zu schalten. Tatsächlich wird der Teiladdierer 46 benutzt, um strikt
Teilübertragseingänge aufzusummieren, während der Teiladdierer 47 benutzt
wird, um strikt Teilsummeneingänge aufzuaddieren. Da die Teilüberträge auf null
zurückgeführt werden, nachdem ihren Einflüssen vollständig Rechnung getragen
worden ist, weisen beide Ausgänge des Teiladdierers 46 den Wert Null auf,
nachdem alle Überträge berücksichtigt worden sind. Somit muß man nur
sicherstellen, daß sieben oder mehr zusätzliche Zyklen nach dem letzten von Null
abweichenden Summanden von dem Teiladdierer 45 empfangen worden sind, um
sicherzugehen, daß das Ergebnis korrekt ist und von dem Teilsummenausgang
des dritten Teiladdierers 47 ablesbar ist.
-
Ein praktisches Ausführungsbeispiel des Prüfsummen-Berechnungsabschnittes
16 ist in Fig. 5 gezeigt, in welcher entsprechende Hardware-Komponenten die
gleichen Bezugszeichen aufweisen.
-
Gemäß Fig. 1 kann in einigen Fällen das Datenpaket, das einer
Prüfsummenbildung unterzogen werden soll, in einer Gruppe von getrennten
Datenpuffern gespeichert werden, die diskontinuierlich in verschiedenen
Abschnitten des Hauptspeichers 20 angeordnet sind. In diesem Fall verwendet
die Prüfsummenoperation den Adressengenerator 32 in einem Puffer-
Verkettungsmodus, der eine größere Wirksamkeit bei der Verbindung der
getrennten Pakete zu einem einzigen logischen Paket für die Prüfsummenbildung
und die Übertragung bezweckt. Der Zentralcomputer 12 ist somit nicht
erforderlich, um die getrennten Datenpuffer zu einem aneinandergrenzenden
Datenpuffer zu organisieren, bevor der Steuerabschnitt 18 und der
Adressengenerator 32 die Übertragung- und Prüfsummenbildung derselben auf
den Bus 23 bewirken.
-
Fig. 6 zeigt ein Paket 30, welches mit drei Teilen 131, 132 und 133 dargestellt ist,
die diskontinuierlich in verschiedenen Abschnitten des Hauptspeichers 20
angeordnet sind. Pufferdeskriptoren 135, 136 und 137 sind ebenfalls im Speicher
20 entsprechend angeordnet, um jeden der Paketteile miteinander zu verbinden
und den Datenfluß-Steuerabschnitt 18 mit Hinweisadressen zu jedem getrennten
Paketteil zu versehen. Jeder Pufferdeskriptor besitzt drei Felder, welche
umfassen (1.) eine Hinweisadresse zu dem Beginn eines Paketteiles, (2.) die
Länge des Paketteiles und (3.) einen Hinweis bzw. eine Verbindung zu dem
nächsten Pufferdeskriptor. Das Wort "NULL", auf das durch die nächste
Pufferverbindung des letzten Pufferdeskriptors 137 hingewiesen wird, zeigt dem
Datenfluß-Steuerabschnitt 18 an, daß keine weiteren Pakete einem
vorgegebenen Paket zugeordnet sind.
-
Der Steuerabschnitt 18 arbeitet mit dem Adressengenerator 32 und den
Pufferdeskriptoren zusammen, um der Reihe nach die Paketdatenteile 131,132
und 133 auf den Bus 23 zu laden, der diese als Datenströme zu dem
Prüfsummen-Berechnungsabschnitt 16 und dem Netzwerk-Speicherabschnitt 22
richtet. Puffer-Hinweisadressen von jedem der Pufferdeskriptoren werden in den
Hauptspeicher-Abschnitt 20 kopiert und in den Datenfluß-Steuerabschnitt 18 über
die Leitung 140 geladen, wo auf sie durch den Adressengenerator 32 zugegriffen
werden kann.
-
Der Adressengenerator lädt den Datenpuffer 131, beginnend am Punkt A und mit
32 Bit, auf einmal auf den Bus 23, bis er zu dem Punkt F gelangt, wo die Puffer-
Verkettungsoperation bewirkt wird. Dieses Verfahren wird für die Datenpuffer 132
und 133 über Pufferdeskriptoren 136 und 137 wiederholt, bis ein vollständiges
Paket bewegt worden ist und einer Prüfsummenbildung unterzogen worden ist.
-
Eine ähnliche Puffer-Verkettungsoperation kann verwendet werden, um in
diskontiniuerliche Pufferspeicherplätze in dem Netzwerk-Speicherabschnitt 22
einzuschreiben, wenn dies für große Datenpakete gewünscht ist. Eine Leitung ist
dementsprechend vorgesehen, um nächste Hinweisadressenwerte von dem
Speicherabschnitt 22 in den Datenfluß-Steuerabschnitt 18 zu laden, in welchem
auf sie durch den Adressengenerator 34 zugegriffen werden kann.
-
Die Berechnung der Prüfsumme im Datenempfangsmodus (Fig. 1b) wird in
ähnlicher Weise ausgeführt unter Verwendung der Puffer-Verkettungsoperation
mit den zwei Adressengeneratoren und dem Datenfluß-Steuerabschnitt 18.
-
Die Erfindung wird ebenfalls mit Vorteil in Situationen verwendet, wo die
Dialoganforderungen oder die Anforderungen des Zentralsystems die Bewegung
von Daten aus dem Zentralspeicher ausschließen, bis die Prüfsumme berechnet
worden ist, und die X- und Y-Werte in das Paket eingefügt worden sind. In diesem
Fall arbeitet die Prüfsummen-Berechnungseinheit (Fig. 1) in einer ähnlichen
Weise, um die Prüfsumme auf Befehl des Zentralcomputers zu berechnen, wobei
jedoch die Daten nicht in dem Netzwerk-Speicherabschnitt während der
Berechnung der Prüfsumme gespeichert sind. In diesem Fall sind der Netzwerk-
Speicherabschnitt 22 und der zugeordnete Adressengenerator 34 für die
Berechnung der Prüfsumme nicht erforderlich. Die X- und Y-Werte werden über
die Leitung 84 in den Hauptspeicher 20, anstatt n den Neztwerkspeicher 22
zurückgeführt. Die Einheit liefert eine rasche Berechnung der Prüfsumme, ohne
daß ausgedehnte Software-Verarbeitungsschritte des Zentralcomputers
erforderlich sind.
-
Im Empfangsmodus gestattet das entsprechende Erfordernis die Berechnung der
Prüfsumme nur, nachdem das Paket vollständig in dem Hauptspeicher 20
gespeichert ist. In diesem Modus greift die Prüfsummen-Berechnungseinheit auf
das empfangene Paket in dem Hauptspeicher zu unter Verwendung des
Adressengenerators 32 und des Busses 23, um die Prüfsumme zu berechnen.
Die Summen- und Summe von Summen-Werte sind über die Leitung 84 für den
Hauptspeicher 20 verfügbar.
-
Es liegt dem Fachmann auf der Hand, daß zahlreiche Modifikationen der
vorliegenden Erfindung vorgenommen werden können, ohne daß von dem Geist
der Erfindung abgewichen wird, die nur durch den Rahmen der angefügten
Ansprüche beschränkt werden soll.