-
Die Erfindung bezieht sich auf ein Datenverarbeitungssystem, und
insbesondere auf ein Mehrfachspeichersystem in einer
Datenverarbeitungskonfiguration, die mehrere
Verarbeitungseinheiten einschließt.
-
Das traditionelle Datenverarbeitungssystem enthält eine einzige
Zentraleinheit mit einem Speicher, der einen adressierbaren
Speicher für das Speichern von Informationen aufweist, die
Instruktionen, Daten und andere Speicheradressen einschließen.
Bei dieser Konfiguration sorgt eine Speichersteuereinheit für
Zugriff auf die Speicherstellen für die Zentraleinheit. Die
Zentraleinheit greift auf die Speicherstellen über die
Speichersteuereinheit zu, um innerhalb des Speichers
Informationen zu lesen und zu schreiben.
-
Eine Multiprozessor-Konfiguration schließt auch einen Speicher
ein und eine Speichersteuereinheit. Da jedoch die mehrfach
vorhandenen Verarbeitungseinheiten alle Zugriff auf die
Speicherstellen fordern, wird die Funktion der
Speichersteuereinheit komplexer. In einigen Multiprozessor-
Konfigurationen ist jedem Prozessor ein separater und
unabhängiger Speicher zugeordnet, der diesem einzigen Prozessor
ausschließlich zugeordnet ist. Jedoch werden in den
fortschrittlicheren Multiprozessor-Konfigurationen
Speicherstellen von mehreren Prozessoren gemeinsam benutzt.
-
Der IBM RT Personal Computer ist ein Datenverarbeitungssystem
mit einer Datenstation, das einen einzigen Prozessor besitzt.
Auf diesem Prozessor läuft kein Objektcode, der für ältere
Prozessoren, wie z.B. den IBM PC AT assembliert oder kompiliert
wurde. Jedoch stellt die RT PC-Datenstation eine
Coprozessorumgebung bereit, die den Prozessor des IBM PC AT
einschließt, um vorhandenen Code für den IBM PC AT oder andere,
auf dem Intel 80286-Mikroprozessor basierende Geräte laufen zu
lassen. Der AT-Coprozessor ist mit einem Eingabe-/Ausgabe (E/A)-
Kanal konfiguriert, um mit dem RT-Prozessor zu kommunizieren.
Diese Anordnung erfordert eine spezielle Speicherumgebung, die
in der Veröffentlichung IBM RT Personal Computer Technology,
Form-Nummer SA 23-1057 veröffentlicht ist, die zwei Artikel
enthält, die den AT-Coprozessor ansprechen. Der erste trägt den
Titel "Use of a coprocessor for emulating the PC AT" von John W.
Irwin, und der zweite lautet "Coprocessor Software Support" von
Rajan Krishnamurty und Terry Mothersole.
-
Ein Problem, auf das man bei solch einer Multiprozessorumgebung
stieß, besteht in dem Aktualisieren eines Speichers, z.B. eines
Video-Puffers, der beiden Prozessoren gemeinsarn ist.
-
Der Technologiebereich des Standes der Technik schließt das
US Patent 4 392 200 ein, das den Titel trägt "Cached
MultiProcessor System with Pipeline Timing", das ein
Multiverarbeitungssystem beschreibt, das eine gemeinsame
Steuereinheit benutzt, die einen Cache-Speicher zum
Durchschreiben enthält. Die Speicherverwaltungsschaltung und der
Cache werden in abwechselnder Folge durch den Prozessor benutzt.
-
US Patent 4 209 839 mit dem Titel " Shared Synchronous Memory
MultiProcessing Arrangements" offenbart ein
Multiverarbeitungssystem, das einen gemeinsam benutzten Speicher zwischen dem
Prozessor besitzt, der die Speicherschnittstellen
synchronisiert. Dies erlaubt es den Prozessoren, einen Speicher,
der anderen Prozessoren zugeordnet ist, gemeinsam zu benutzen.
-
Das IBM Technical Disclosure Bulletin mit dem Titel "Read-Only
Bypass of Cache", volume 25, number 3B, August 1982, offenbart
einen Cache mit einem Hintergrund und einem Speichergerät. Die
Speichersteuereinheit leitet ein benutzendes Gerät entweder zu
dem Cache oder zu dem Hintergrundspeicher, während jegliches
Schreiben ausgeschaltet wird, bis der Hintergrund durch das
Benutzergerät gespeichert worden ist.
-
Keines dieser Systeme nach dem Stand der Technik löst voll das
Problem des Aufrechterhaltens aktualisierter Daten von zwei oder
mehr Prozessoren, ohne wesentlichen Verlust an
Verarbeitungszeit. Auf dieses Problem ist die vorliegende
Erfindung gerichtet.
-
Gemäß der Erfindung wird ein
Multiprozessor-Datenverarbeitungssystem bereitgestellt, das einschließt einen ersten Prozessor
und einen zweiten Prozessor, einen ersten Speicher, auf den von
jedem Prozessor unabhängig zugegriffen werden kann, und einen
zweiten Speicher, und dadurch gekennzeichnet ist, daß der zweite
Prozessor in der Lage ist, gleichzeitig sowohl auf den ersten
als auch den zweiten Speicher für Schreiboperationen
zuzugreifen, wenn der erste Prozesssor auf keinen der Speicher
zugreift, um so eine Kopie des in den ersten Speicher
eingeschriebenen Datensatzes in dem zweiten Speicher
aufrechtzuerhalten, und in der Lage ist, auf den zweiten Speicher
zuzugreifen, wenn der erste Prozessor auf den ersten Speicher
zugreift und so damit fortfährt, in dem zweiten Speicher eine
Kopie des Datensatzes aufrechtzuerhalten, und dadurch, daß der
erste Prozessor in der Lage ist, auf den zweiten Speicher für
Leseoperationen zuzugreifen, um die Kopie der Daten aus dem
zweiten Speicher in den ersten Speicher zu übertragen, bevor dem
zweiten Prozessor der Zugriff auf den ersten Speicher bewilligt
wird.
-
Ein Ausführungsbeispiel der Erfindung wird jetzt als Beispiel
beschrieben unter Bezugnahme auf die zugehörigen Zeichnungen, in
denen:
-
Figur 1 ein Systemblockdiagramm eines Multiverarbeitungs
systems ist,
-
Figur 2 ein symbolisches Diagramm der Speichermap ist, wie sie
von einem Coprozessor gesehen wird,
-
Figur 3 ein symbolisches Diagramm der Speichermap ist, wie sie
von dem Hauptprozessor und anderen Geräten gesehen
wird, die mit dem Informationsbus verbunden sind,
-
Figur 4 ein Blockdiagramm der Schaltung des Coprozessors, des
Zugriffs auf die Video-Warteschlange und der
Schreibsteuerung ist,
-
Figur 5 ein Flußdiagramm ist, das die Funktion der logischen
Schaltung zur Steuerung der Warteschlange darstellt,
-
Figur 6 ein Zeitdiagramm ist, das die doppelte Schreibfunktion
durch die Steuerlogik der Warteschlange darstellt,
-
Figur 7 ein Blockdiagramm des Coprozessors, der
Zugriffsschaltung für den Video-Puffer und der
Steuerschaltung für das Durchschreiben ist,
-
Figur 8 ein schematisches Blockdiagramm der Ausfilterlogik für
Speicheradressen des Coprozessors ist,
-
Figur 9 ein Blockdiagramm der Schaltung des Video-
Steuerregisters ist,
-
Figur 10 ein schematisches Blockdiagramm der Schaltung des
Steuerregisters für das binäre Eingabe-/Ausgabesystem
ist und
-
Figur 11 ein Blockdiagramm der Schaltung zur
Speicherverschiebung ist.
-
Diese Erfindung bezieht sich auf ein Speichersystem für eine
Multiverarbeitungs-Konfiguration. Das typische
Multiprozessorsystem schließt verschiedene unabhängige Prozessoren ein, die
miteinander über einen Informationsbus verbunden sind.
Gewöhnlich ist der Informationsbus auch mit einigen Eingabe-/
Ausgabe (E-/A)-Geräten und anderen Speichergeräten verbunden,
wie z.B. einem Massenspeicher.Figur 1 stellt ein solches
Multiverarbeitungssystem dar. Insbesondere stellt Figur 1 die
Architektur für die vorliegende Erfindung dar, wie sie
verkörpert ist in einer RT PC-Datenstation, die von der
International Business Machines Corporation hergestellt wird.
Der RT PC schließt einen Hauptprozessor 12 ein, der mit einer
Hauptspeichersteuerung 14, einem Hauptspeicher 16 und einem
Informations-E-/A-Bus 10 verbunden ist. Zusätzlich schließt in
der Konfiguration, die in Figur 1 dargestellt ist, das System
einen Coprozessor-Modul 20 ein, der aus einem Coprozessor 22 und
einem Speicher 24 besteht. In der Konfiguration nach Figur 1 ist
der Coprozessor-Modul mit dem E-/A-Bus 10 über die Leitung 25
verbunden. Der Coprozessor 22 selbst ist mit dem E-/A-Bus 10
über die Leitung 23 verbunden, was einen unabhängigen Zugriff
auf den Coprozessor 22 anzeigt. Weiter schließt das
Multiprozessorsystem in Figur 10 einen E-/A-Adapter 34 ein, der
mit dem E-/A-Bus 10 verbunden ist. Der E-/A-Adapter 34 schließt
einen E-/A-Erweiterungsspeicher 36 ein, der Erweiterungen für
das Betriebssystem des Coprozessor-Moduls 20 in einem
Festwertspeicher (ROS) 36 einschließt. Ein Video-Adapter 18 ist auch mit
dem E-/A-Bus 10 verbunden und ist weiter mit einer Anzeige 17
verbunden. Die Information für die Anzeige 17 ist in einem
Speicher 19 enthalten, der als Pufferspeicher arbeitet. Der
Video-Adapter 18 kann auch einen E-/A-Erweiterungsspeicher 36
enthalten. Jede verschiedene Adapterart, die einen E-/A-
Erweiterungs-Festwertspeicher besitzt, spricht auf einen
verschiedenen Bereich niedriger Adressen an, um einen Konflikt
zu vermeiden.
-
Im Betrieb würde der Hauptprozessor 12 Anzeigeinformationen über
den Video-Adapter 18 an den Video-Puffer RAM 19 für die Anzeige
17 liefern. Wenn jedoch der Coprozessor-Modul einbezogen ist,
ist für den Coprozessor 22 die Möglichkeit vorhanden, seine
eigene Anzeige über den Video-Adapter 18 zu liefern. Um die
Zusammenarbeit zwischen dem Hauptprozessor 12 und dem
Coprozessor 22 in solch einer Weise zu erleichtern, daß das
Ausmaß an Verkehr auf dem E-/A-Bus 10 minimiert wird, ist ein
besonderes Merkmal vorgesehen, bei dem der Coprozessor 22 seine
Video-Anzeigedaten in dem Coprozessor-Modul RAM 24 als einem
Schattenbereich 26 in dem Video-Puffer speichern darf. Wenn
daher der Coprozessor 22 den Video-Adapter 18 steuert, behält
der Schattenbereich 26 des Video-Puffers einen Datensatz bei,
der in die Anzeige 17 geschrieben wurde. Wenn der Hauptprozessor
12 den Video-Adapter 18 steuert, wird der Coprozessor 22 am
Schreiben in den Puffer 19 gehindert. Der Schattenbereich 26 des
Video-Puffers fährt fort, einen Datensatz des Video-Ausgangs des
Coprozessors beizubehalten. Wenn die Steuerung des Video-
Adapters 18 wieder von dem Hauptprozessor 12 an den Coprozessor
22 übergeht, stoppt der Hauptprozessor 12 den Coprozessor 22
augenblicklich und kopiert den Schattenbereich 26 des Video-
Puffers in den Video-Adapter 18, bevor der Coprozessor 22 erneut
Zugriff auf den Video-Puffer 19 erhält. Wenn die Steuerung des
Video-Adapters 18 vom Coprozessor 22 zum Hauptprozessor 12
übergeht, ist kein Kopiervorgang erforderlich, da der
Schattenpuffer 26 des Video-Adapters einen richtigen Datensatz
der Video-Anzeige enthält.
-
Die Video-Adapter Karte kann von einer Art sein, die durch die
Software im Coprozessor 22 nicht unterstützt wird. Zum Beispiel
kann der Video-Adapter 18 eine an allen Punkten adressierbare
(APA) Anzeige sein, während der Code, der auf dem Coprozessor 22
läuft, nur eine Zeichenanzeige unterstützt. In diesem Fall wird
der Coprozessor 22 am Schreiben in den Video-Puffer RAM 19
gehindert, und der Hauptprozessor 12 übersetzt den Inhalt des
Video-Schattenpuffers 26 und plaziert das übersetzte Bild in den
Video-Adapter RAM 19 in einer Form, die für die APA-Anzeige
geeignet ist.
-
Eine Unterbrechung für den Hauptprozessor ist jedesmal
vorgesehen, wenn der Coprozessor in den Video-Schattenpuffer 26
schreibt. Wenn der Hauptprozessor 12 versucht, den gesamten
Anzeigepuffer jedesmal, wenn er geändert wird, zu übersetzen,
würde die Arbeitsbelastung des Hauptprozessors 12 und des
E-/A-Busses 10 untragbar sein. Aus diesem Grund liefert ein
Video-Warteschlangenbereich 30 und die zugehörige Schaltung eine
Liste geänderter Zeichen in den Schattenbereich 26 des Video-
Puffers. Es sind diese Änderungen, die dann benutzt werden, um
den Video-Puffer RAM 19 zu aktualisieren.
-
Zusätzlich enthält der Coprozessormodul 20 RAM 24 einen E-/A-ROS
(read only storage=Festwertspeicher)-Schattenbereich 28. Der
Speicherbereich 28 dient der Speicherung des BIOS aus der E-/A-
Erweiterung ROS 36. Das BIOS wird durch den Hauptprozessor 12
über den E-/A-Bus 10 geladen, wenn der Coprozessormodul 20
initialisiert wird. Dieser BIOS-Bereich 28 ist zusätzlich zu dem
normalen PC BIOS-Bereich 32 vorhanden, der auch vorgesehen ist.
Bei dem bevorzugten Ausführungsbeispiel ist der Coprozessor 22
ein INTEL 80286. Gemäß der Architektur des 80286 ist die Stelle
des PC BIOS-Bereichs 32 innerhalb des Speichers 24 vorgegeben.
-
Die Speichermap für den Coprozessormodul 20 ist in Figur 2
dargestellt. Es ist wichtig, zu verstehen, daß diese Speichermap
diejenige ist, die von dem Coprozessor 22 gesehen wird und nicht
vom Hauptprozessor 12 oder irgendwelchen anderen Geräten, die
mit dem E-/A-Bus 10 verbunden sind. Die Adressen dieser
Speichermap variieren von 000000(HEX) bis FFFFFF(HEX). Die
Speichermap 40 ist in vier Abschnitte unterteilt gemäß den
Adressen, die an der linken Seite der Speichermap selbst
dargestellt sind. Speicherstellen von 000000(HEX) bis
09FFFF(HEX) enthalten die 640 K Bytes des aktiven Speichers des
Coprozessors. Die Speicherstellen im Bereich 26 (von den
Adressen 0A0000(HEX) bis 0BFFFF(HEX)) enthalten den
Schattenbereich 26 des Video-Puffers nach Figur 1. Der
Speicherbereich zwischen den Adressen 0C0000(Hex) und
0DFFFF(HEX) ist in vier getrennt gesteuerte Unterbereiche
unterteilt. Jeder Unterbereich enthält entweder den BIOS-
Schattenbereich 28 des 128K E-/A-ROS (Read Only Storage)
innerhalb des RAM 24 oder den 128K E-/A-ROS 36 auf dem E-/A-
Adapter 34, der von dem E-/A-Bus 10 zugreifbar ist. Auf welchen
ROS (28 oder 36) zugegriffen wird, wird bestimmt durch das
Setzen von Steuerbits durch den Hauptprozessor 12 auf dem
Coprozessormodul 20, was genauer beschrieben wird. Der
Speicherbereich 28 ist das BIOS, das durch den Hauptprozessor 12
(Figur 1) von dem E-/A-Adapter 34 (Figur 1) geladen wird. Von
den Adressen 0E0000(HEX) bis 0EFFFF(HEX) werden 64 Kilobytes des
BASIC-Interpretierers gespeichert mit Ausnahme eines 8K
Kilobytes-Bereiches 42, der für die Video-Warteschlange
vorgesehen ist. Die nächsten 64 Kilobytes sind dem PC BIOS
ausschließlich zugeordnet. Die Speicherstellen von der Adresse
100000(HEX) bis FDFFFF(HEX) sind verfügbar für das Adressieren
des E-/A-Busses 10 oder wahlweise des zusätzlichen Speichers des
Coprozessors. Von der Speicherstelle FE0000(HEX) bis FEFFFF(HEX)
ist ein 64 Kilobytes-Bild des BASIC-Interpretierers angeordnet,
wie das früher zusammen mit einem 8K Teil 44 für die Video-
Warteschlange diskutiert wurde Von der Speicherstelle
FF0000(HEX) bis FFFFFF(HEX) ist ein Bild des 64 Kilobytes-BIOS
gespeichert, das früher diskutiert wurde.
-
Figur 3 stellt die Speichermap dar, wie sie von dem
Hauptprozessor12 und irgendwelchen anderen Geräten gesehen wird,
die auf den E-/A-Bus 10 zugreifen. Die Speichermap 50 erscheint
ähnlich zu der Speichermap 40 nach Figur 2. Jedoch ist der
Bereich 52 der Video-Pufferspeicher RAM 19 des Video-Adapters
18. Die entsprechende Speicherstelle auf dem Coprozessormodul 20
ist der Schattenbereich 26 (Figur 2) des Video-Puffers. In
ähnlicher Weise ist der Bereich der E-/A-Karte ROS BIOS (von den
Adressen 0C0000(HEX) bis zur Adresse 0DFFFF(HEX)) die
E-/A-Erweiterung BIOS ROS 36 auf dem E-/A-Adapter 34 und dem
Video-Adapter 18. Von 0EFFFF(HEX) bis 0F0000(HEX) ist der
Speicherbereich für BASIC mit Ausnahme des Bereichs 42, der der
Speicherbereich für die Video-Warteschlange ist und nur für
Leseoperationen zugreifbar ist. Von 0F0000(HEX) bis 0FFFFF(HEX)
ist das BIOS gespeichert und auch nur für Leseoperationen
zugreifbar Der Bereich von der Speicheradresse 100000(HEX) bis
FFFFFF(HEX) ist ein Lese-/Schreibbereich für jedes Gerät, wie
z.B. den Prozessor 12, das auf den Speicher vom E-/A-Bus 10
zugreift.
-
Basierend auf dem Inhalt des Verschiebungsregisters 80 stellt
ein voller Adressenbereich 45 von 1 Megabyte den
Schreib-/Lesezugriff für den RAM 20 des Coprozessors bereit. Der für das
Verschiebungsregister 80 ausgewählte Wert benutzt einen
Schutzmechanismus auf dem E-/A-Bus 10, um Zugriff auf den Raum
45 durch alle außer den Hauptprozessor 12 zu verhindern.
-
Wie vorher diskutiert wurde, ist es ein Ziel der vorliegenden
Erfindung, für eine Fähigkeit zu sorgen, die es sowohl dem
Hauptprozessor 12 (Figur 1) als auch dem Coprozessor 22 (Figur
1) erlaubt, auf den Video-Adapter 18 zuzugreifen und Video-Daten
für den Video-Puffer RAM 19 für die Anzeige auf der Video-
Anzeige 17 bereitzustellen. Da der Coprozessor 22 Video-Daten
dem Video-Puffer RAM 19 nicht liefern kann, wenn der
Hauptprozessor 12 solche Video-Daten liefert, werden die Video-
Daten des Coprozessors 22 zu dem RAM 24 in dem Coprozessormodul
20 geliefert, wie das vorher diskutiert wurde. Während es eine
Lösung sein kann, einen zweiten Puffer in dem Video-Adapter 18
vorzusehen, würde seine Wartung den Datenfluß auf dem E-/A-Bus
10 erhöhen, wenn sowohl der Hauptprozessor 12 als auch der
Coprozessor 22 Video-Daten liefern würden. Durch Vorsehen des
Puffers auf dem Coprozessormodul 20 werden die Video-Daten des
Coprozessors 20 aufgezeichnet, ohne daß sie auf den E-/A-Bus 10
plaziert werden, wenn der Hauptprozessor 12 Daten zu dem Video-
Puffer RAM 19 liefert.
-
Wenn die Video-Daten des Coprozessors 22 auf der Anzeige 17
anzuzeigen sind, muß der Hauptprozessor 12 auf den Video-
Pufferbereich im RAM 24 des Coprozessormoduls 20 zugreifen, um
den Video RAM 19 zu aktualisieren. Es sollte für die Fachleute
offensichtlich sein, daß die Adresse des Video-Puffers RAM 19
auf dem E-/A-Bus 10 verschieden sein muß von dem Video-
Pufferbereich 26 im RAM 24 des Coprozessormoduls 20 für den
Hauptprozessor 12, um die Daten des Coprozessors 22 zu
übertragen. Ebenso sollte es für die Fachleute klar sein, daß es
für den Coprozessor 22 vorteilhaft ist, sowohl den Video-Puffer
RAM 19 als auch den Video-Pufferspeicherbereich 26 im RAM 24
gleichzeitig zu adressieren, d.h., daß die beiden RAM Bereiche
die gleiche Adresse haben würden. Ein Ziel der vorliegenden
Erfindung ist es, für eine Lösung dieses Dilemmas durch
Aktivieren des Coprozessors 22, zu sorgen, um in eine Adresse
des Video-Puffers zu schreiben und daher gleichzeitig sowohl in
den Video-Pufferbereich 26 als auch in den Video-Puffer RAM 19
zu schreiben, während auch für die Fähigkeit des Hauptprozessors
12 gesorgt wird, unabhängig auf den Video-Puffer RAM 19
zuzugreifen und getrennt und unabhängig auf den Video-
Pufferbereich 26. Dies wird dadurch erreicht, daß man den
Coprozessor 22 auf den RAM 24 gemäß einer Adreßmap (Figur 2)
zugreifen läßt, während man es dem Hauptprozessor 12 gestattet,
auf das RAM 24 unter Benutzung einer anderen Adreßmap (Figur 3)
zuzugreifen.
-
Es ist auch erwünscht, für einen zweckmäßigen Weg für den
Hauptprozessor 12 zu sorgen, um eine PC-kompatible Anzeige auf
einer Anzeige einer neuen Generation zu emulieren, die an einer
anderen Adresse angeordnet ist oder ein anderes Protokoll
erfordert, das durch den auf dem Coprozessor laufenden Code
nicht erkannt wird. In diesem Fall liest der Hauptprozessor 12
den Schattenbereich 26 des Video-Puffers und steuert den Video-
Adapter 18 durch Schreiben einer geeigneten übersetzten Version
des Inhaltes des Schattenbereiches 26 des Video-Puffers in den
Video-Puffer RAM 19. Nach der anfänglichen Übersetzung sind
daher die einzigen Änderungen, die an den früheren Video-Daten
des Coprozessors 22 gemacht werden müssen, die in dem Video-
Puffer RAM 19 gespeichert sind, die Aktualisierungen, die an den
Video-Daten dieses Coprozessors 22 seit der letzten Übersetzung
vorgenommen wurden. Die vorliegende Erfindung sorgt für solch
ein zweckmäßiges Aktualisieren durch Vorsehen einer Video-
Warteschlange 30 im RAM 24. Diese Video-Warteschlange 30 wird
automatisch mit den Adressen all der Video-Daten aktualisiert,
die benutzt wurden, um den Video-Puffer 26 durch den Coprozessor
22 zu aktualisieren. Daher werden nur die aktualisierten Daten
über den E-/A-Bus 10 geladen und durch den Hauptprozessor 12
übersetzt, um das Video-Bild des Coprozessors 22 in dem Video-
Puffer RAM 19 zu aktualisieren.
-
Figur 4 zeigt den Zugriff auf den Video-Puffer 26 durch sowohl
den E-/A-Bus 10 als auch den Coprozessor 22. Der Hauptprozessor
12 greift auf den Video-Puffer 26 über den E-/A-Bus 10 durch
einen Adreßdecodierer 78 zu. Der Adreßdecodierer 78 bestimmt in
Kombination mit dem Verschiebungsregister 80, ob die Adresse auf
dem E-/A-Bus 10 den Adreßraum 30 oder 26 adressieren soll. Das
Verschiebungsregister 80 speichert eine Adressenverschiebung,
die benutzt wird, um zu bestimmen, wo der Adreßraum 45 in der
Adreßmap für den Hauptprozessor 12 (siehe Figur 3) residiert.
Wenn diese Adressen empfangen werden, wird für die gesamte
Adressenmap des Coprozessors einschließlich des Video-Puffers 26
und der Video-Warteschlange 30 für einen verschobenen Zugriff
auf den Bus gesorgt. Daher kann der Hauptprozesssor 12 dann
Daten der Video-Warteschlange 30 und des Video-Puffers 26 lesen
und schreiben.
-
Wie vorher diskutiert wurde, ist eine Schaltung vorgesehen, um
es dem Hauptprozessor 12 zu gestatten, in dem Video-Puffer 26
nur aktualisierte Video-Daten zu lesen. Dieses Merkmal besteht
aus einem Verfahren zum automatischen Erzeugen einer
Schreibinformation für die Video-Warteschlange 30, wenn der
Coprozessor 22 Daten in den Video-Puffer 26 schreibt. Dieser
Prozeß wird durch das Video-Steuerregister 6- gesteuert, das
Befehlssteuerdaten von dem Hauptprozessor 12 über den E-/A-Bus
10 empfängt. Insbesondere wird das Video-Steuerregister 64
gesetzt, um zu bestimmen, über welche Adreßbereiche die
Schreibadresse in die Warteschlange 30 eingegeben wird. Das
Ausgangssignal des Warteschlangen-Steuerregisters 64 wird an die
Video-Steuerlogik 62 geliefert. Die Steuerlogik 62 der
Warteschlange steuert alle Speicherzugriffe sowohl intern als
auch extern, während die Adreßinformation der Warteschlange und
die Daten in dem Coprozessormodul 20 RAM 24 gemultiplext werden.
Die Steuerlogik 62 der Warteschlange aktualisiert auch den
Adreßgenerator 70 der Warteschlange.
-
Wenn der Coprozessor 22 Daten an den Video-Puffer 26 liefert und
die Video-Daten nicht über den E-/A-Bus 10 geliefert werden,
zeigt das Video-Steuerregister 64 der Steuerlogik 62 der
Warteschlange an, daß die Video-Warteschlange 30 die Adressen
aller Änderungen in dem Video-Puffer 26 speichern soll. Wenn
daher der Coprozessor 22 eine Aktualisierung an den Video-Puffer
26 liefert, sorgt die Steuerlogik 62 der Warteschlange für die
Speicherung dieser Daten in dem Video-Puffer 26, während
gleichzeitig in dem Schreibzyklus die Adresse dieser Änderung
des Video-Puffers 26 an die Video-Warteschlange 30 geliefert
wird. Wenn daher die Aktualisierungen des Video-Puffers 26 über
den E-/A-Bus 10 an den Video-Adapter RAM 19 zu liefern sind,
aktualisiert der Hauptprozessor 12 lediglich die Daten, die in
den Adressen enthalten sind, die in der Video-Warteschlange 30
gespeichert sind.
-
Wenn in Fig. 4 der Coprozessor eine Aktualisierung an den
Videopuffer 26 liefert, wird die tatsächliche Adresse der
Aktualisierung an den Multiplexer 74 geliefert, der durch die
Steuerlogik 62 der Warteschlange gesteuert wird, um die
aktualisierten Video-Daten über den Multiplexer 72 in den
Bereich 26 des Video-Puffers RAM einzuschreiben. Zusätzlich
Verzögert die Steuerlogik 62 der Warteschlange die Beendigung
dieses Speicherzugriffs, um zu erlauben, daß die Adresse der
Änderung in das Halteregister 66 gesetzt wird. Dann
aktualisiert, nachdem die Daten im Video-Puffer 26 aktualisiert
worden sind, die Steuerlogik 62 der Warteschlange die Video-
Warteschlange 30 mit der Adresse der Änderung. Die Adresse der
Änderung wird über den Multiplexer 72 zu der Video-Warteschlange
30 geliefert. Die Adresse der Warteschlange, an der diese
Änderungsadresse gespeichert ist, wird über den Multiplexer 74
durchgeschaltet. Die Warteschlangenadresse wird von dem
Warteschlangen-Generator 68 empfangen. Der Warteschlangenerator
68 ist mit einem Adreßzähler 70 der Warteschlange verbunden,
der lediglich die Warteschlangenadresse jedesmal erhöht, wenn
ein Eintrag in die Video-Warteschlange 30 gemacht wird. Für den
RAM 24 erscheint der Vorgang als zwei Datenschreibvorgänge. Dem
Coprozessor 22 erscheint der Vorgang als ein einzelener
Schreibvorgang, bei dem zwei Dateneingaben gleichzeitig gemacht
werden.
-
Figur 5 ist eine Darstellung des Arbeitsflusses in der
Steuerlogik 62 der Warteschlange. Die Logik 62 bestimmt aus dem
Adreßdecoder 60, ob der Coprozessor 22 versucht, Daten in den
Video-Pufferbereich im Schritt 100 zu schreiben. Wenn das der
Fall ist, wird im Schritt 102 bestimmt, ob oder ob nicht die
Warteschlangen-Selbsthalteschaltung in dem Video-Steuerregister
64 gesetzt ist, um Daten für diesen Adreßbereich zu speichern.
Im Schritt 104 schickt die Logik 62 ein Signal 206 (Figur 6)
NICHT BEREIT, um den Speicherzugriffszyklus des Coprozessors zu
erweitern. Im Schritt 106 werden die niederstelligen 16 Bits der
Adresse des Coprozessors 22 in dem Adreßhalteregister 66
gespeichert. In Schritt 108 wird die Adresse für die
Warteschlange 30 geschaffen durch Verketten einer festen,
höherstelligen Adresse mit dem Inhalt des Warteschlangenzählers
70 über den Warteschlangen-Adreßgenerator 68. Zu diesem
Zeitpunkt empfängt der Video-Puffer 26, gleichzeitig mit der
Funktion der Steuerlogik 62 der Warteschlange, die Adresse der
Änderung von dem Multiplexer 72. Nach einer zweckmäßigen
Verzögerung, um es dem RAM 24 des Coprozessors zu gestatten,
richtig eingeschrieben zu werden, wird der Schreibimpuls im
Schritt 110 abeschaltet, um die Adreßänderung zu ermöglichen. An
dem Ende dieses ursprünglichen Schreibzyklus schreibt die
Steuerlogik 62 der Video-Warteschlange über den Multiplexer 74
im Schritt 112 die geänderte Adresse in die
Video-Warteschlange
30 durch Ersetzen der Adresse des Coprozessors mit der
Warteschlangen-Adresse des Warteschlangengenerators 68. Im
Schritt 114 wird dann der Inhalt 66 des Adreßhalteregisters, das
die Adresse der Änderung enthält, als Daten an den
Multiplexer 72 zu der Video-Warteschlange 30 geliefert. Die
Steuerlogik 62 der Warteschlange aktiviert dann im Schritt 116
wieder den Schreibimpuls für den Speicher 116. Im Schritt 118
wird das Signal NICHT BEREIT entfernt, was es dem Coprozessor 22
erlaubt, fortzufahren. Am Ende dieses Schreibzyklus stellt im
Schritt 120 die Steuerlogik 62 der Warteschlange die Multiplexer
72 und 74 rück. Im Schritt 122 wird der Adreßgenerator 68 der
Warteschlange erhöht, um auf die nächste Adresse der
Warteschlange zu zeigen.
-
Figur 6 stellt das Zeitdiagramm für die Funktion der Steuerlogik
62 der Warteschlange dar. Der Coprozessor liefert anfangs eine
Adresse, um die Video-Daten in dem Video-Puffer 26 zu ändern,
was als ein Signal 200 dargestellt ist. Der Adreßdecodierer
liefert ein Signal 202, das der Steuerlogik 62 der Warteschlange
anzeigt, daß die Adresse des Coprozessors für den Video-Puffer
26 bestimmt ist. Der Coprozessor 22 liefert ein
Schreibimpulssignal 204. Die Steuerlogik 62 der Warteschlange
liefert ein Signal 206 NICHT BEREIT an den Coprozessor 22, was
anzeigt, daß der Schreibzyklus zu erweitern ist. Die Daten des
Coprozessors 22 werden dann durch das Signal 212 in den RAM 24
geladen. Die Steuerlogik 62 der Warteschlange liefert einen
Schreibsperrimpuls 210 an die Multiplexer 72 und 74, um die
Adresse von dem Speicher RAM 24 zu entfernen, und zu dem
Adreßhalteregister 66, um die Adresse durchzuschalten. Die
Steuerlogik 62 der Warteschlange liefert dann das Signal 208
Adresse Der Warteschlange Durchschalten. Der Schreibsperrimpuls
210 wird dann entfernt, und der Schreibimpuls 214 steigt an, um
die Adresse der Änderung über den Multiplexer 74 in der Video-
Warteschlange 30 an der vom Multiplexer 72 erhaltenen
Warteschlangenadresse zu schreiben. Die Steuerlogik 62 der
Warteschlange liefert dann das Signal 216 Warteschlangenzähler
Weiterschalten, um den Warteschlangen-Adreßzähler 70 zu erhöhen.
-
In Figur 7 ist die Funktion des Coprozessors 20 dargestellt,
wenn der Coprozessor 22 Video-Daten sowohl dem Video-Puffer 26
als auch dem Video-Adapter 18 liefert. Bei dieser Konfiguration
steuern das Video-Steuerregister 64 und der Adreßdecodierer 60
die Bus-Steuerlogik 82, die Video-Daten über den E-/A-Bus 10 an
den Video-Adapter 18 liefert. Wie vorher in Figur 4 erläutert,
liefert der Coprozessor 22, wenn er Informationen an den Video-
Adapter 18 liefert, gleichzeitig Informationen an den Video-
Puffer 26. Dies wird erreicht durch Benutzen der Video-Adresse
und der Video-Daten des Coprozessors 22 und durch Liefern sowohl
zu dem internen RAM 24, zu dem Video-Puffer 26 als auch über die
Steuerlogik 82 des Busses auf den E-/A-Bus 10 zu dem Video-
Adapter 18. Da die Adressen für sowohl den Video-Pufferr 26 als
auch den Video-Adapter 18 für den Coprozessor 22 die gleichen
sind, muß der Coprozessor 22 nicht 2 getrennte
Schreiboperationen durchführen. Eine einzige Schreiboperation
liefert die Daten sowohl dem Puffer 26 als auch dem Adapter 18.
Die Bestimmung, ob Daten auf dem E-/A-Bus geschrieben werden
oder nichtt, wird durch die Bits festgelegt die in dem Video-
Steuerregister 64 gesetzt sind. Diese Bits werden durch den
Hauptprozessor 12 gesetzt. In ähnlicher Weise kann der
Hauptprozessor 12 über den Video-Puffer 26 auf Daten zugreifen,
wie das früher beschrieben wurde, unter Benutzung einer
Verschiebeadresse in dem Verschiebungsregister 80 und der
Adresse über den E-/A-Bus 10, die durch den Adreßdecodierer 78
decodiert wird und an die Durchschaltlogik 76 für den Zugriff
geliefert wird, um auf die Daten an der Verschiebeadresse in dem
Video-Puffer 26 zuzugreifen.
-
Figur 8 ist eine Darstellung der Adressen-Durchschaltlogik des
Coprozessor-Moduls 20. Der Zweck der Figur 8 ist es,
darzustellen, wie sowohl der Coprozessor 22 als auch der
Hauptprozessor 12 über den E-/A-Bus 10 auf den internen RAM 24
des Coprozessor-Moduls 20 zugreifen. Das Register 90 für den
BIOS-Modus und die Verschiebung 80 sind durch den Hauptprozessor
12 über den E-/A-Bus 10 adressierbar. Wie das früher erklärt
wurde, wird das BIOS-Register 90 benutzt, wenn der
Hauptprozessor 12 spezielle Betriebssystemsoftware zu dem
Bereich 32 von RAM 24 (siehe Figur 1) liefert. Wenn der
Coprozessor 22 versucht, den internen RAM 24 zu adressieren,
wird eine Adresse an den Adreßdecodierer 4 geliefert, der
feststellt, daß der Coprozessor 22 versucht, auf den internen
RAM 24 zuzugreifen. Die Decodierlogik 4 liefert dann Signale an
die Speicherzugriffsschaltung 82, die angeben, daß Zugriff
gefordert wird, und die Zugriff auf gesteuerte oder Festwert-
Speicherbereiche identifiziert. Wenn der Zugriff des
Coprozessors 22 nicht für den internen RAM 24 bestimmt ist, wird
die Adresse über den dreier Zustände fähigen Treiber 2 an den
E-/A-Bus 10 geliefert und der Bus 10 muß vor dem Zugriff
freigegeben werden. Die Bus-Steuerlogik 82 würde dem Coprozessor
Nicht Bereit signalisieren, bis der Bus 10 erhalten wird. In
ähnlicher Weise wird, wenn der Hauptprozessor 12 versucht, den
internen RAM 24 zu adressieren, die Adresse über den Empfänger 1
empfangen. Diese Adresse wird gleichzeitig an den Multiplexer
74, die Vergleichsschaltung 76 und den Adreßdecodierer 5
geliefert. Wenn die von der Vergleichsschaltung 76 empfangene
Adresse ein Übereinstimmungs-Ausgangssignal an das ODER-Glied 6
liefert, dann versucht der Hauptprozessor 12, auf die
verschobene Speichermap zuzugreifen, wie das früher erläutert
wurde. Wenn die Adresse durch die Decodierlogik 5 decodiert wird
und ein Signal dem ODER-Glied 6 zugeführt wird, versucht der
Hauptprozessor 12, die unteren 640K oder die oberen 128K der
Speichermap zu adressieren. In jedem Fall wird der Multiplexer
74 aktiviert, um für einen Zugriff des Externen Busses Auf Den
Speicher 24 zu sorgen. Die Zeitsteuerung 82 für den
Speicherzugriff empfängt auch ein Eingangssignal von der
Steuerlogik 62 der Warteschlange, wie das vorher erläutert
wurde. Steuerleitungen 8, die zwischen dem Coprozessor 22 und
der Steuerschaltung 82 für den Speicherzugriff angeschlossen
sind, liefern Steuer- und Taktsignale für den Coprozessor 22,
der auf den internen RAM 24 zugreift und für den Coprozessor 22,
der auf E-/A-Bus 10 zugreift. Das Ausgangssignal der
Zeitgeberschaltung 82 für den Speicherzugriff wird an den
Multiplexer 74 geliefert, der eine der verschiedenen Adressen
multiplext, um auf die Speicherstelle in dem internen RAM 24
zuzugreifen. Der Adreßgenerator 68 der Warteschlange ist mit dem
Multiplexer 74 verbunden, um die Adresse für das Schreiben der
Video-Warteschlange zu liefern, wie das vorher unter der
Steuerung der Steuerlogik 62 der Warteschlange erläutert wurde.
-
Figur 9 ist ein Diagramm des Video-Steuerregisters 64, das mit
dem E-/A-Bus 10 verbunden ist. Das Video-Steuerregister wird
durch den Hauptprozessor 12 über den E-/A-Bus 10 gesetzt. Das
Setzen des Video-Steuerregisters 64 bestimmt, welche(r)
Adreßbereich(e) von der Video-Warteschlange 30 in dem internen
RAM 24 zu benutzen sind. Wenn daher eine Adresse vom Coprozessor
22 über den Adreßdecocdierer 60 empfangen wird, liefert der
Adreßdecodierer 60 ein Signal auf den angegebenen Leitungen, das
in der Zeitgeberschaltuung 82 für den Speicherzugriff mit dem
Inhalt der Selbsthalteschaltungen 1A, 2A und 3A des Video-
Steuerregisters 64 kombiniert wird, um zu bestimmen, ob (l)
Coprozessordaten sowohl in den RAM 19 als auch in den RAM 24 zu
schreiben sind, oder (2) die Daten nur in den RAM 24 zu
schreiben sind. Wie das früher erklärt wurde, aktiviert das den
Coprozessor 22, gleichzeitig in zwei getrennte Speicherbereiche
unter der Steuerung des Hauptprozessors 12 zu schreiben, wenn
der Coprozessor 22 die Steuerung der Anzeige 17 besitzt oder
alternativ nur in den internen RAM 24 zu schreiben, um den
Video-Puffer 26 zu aktualisieren, wenn der Hauptprozessor 12 die
Steuerung der Anzeige 17 besitzt. Ein zweiter Satz von
Selbsthalteschaltungen (1B, 2B, 3B) innerhalb des Video-
Steuerregisters 64 bestimmt über die Steuerlogik 62 der
Warteschlange, ob die Adresse des Video-Zugriffs in den
Warteschlangenbereich 42 geschrieben werden sollte.
-
Figur 10 stellt das Register 90 für den BIOS-Modus dar, das mit
dem E-/A-Bus 10 verbunden ist. Das Register 90 für den BIOS-
Modus wird durch den Hauptprozessor 12 geladen. Der
Adreßdecodierer 94 empfängt Adressen vom Coprozessor 22, um zu
bestimmen, ob die Adressen sich in irgendwelchen von vier
getrennten Adreßräumen befinden, wie dargestellt. Das
Ausgangssignal des Adreßdecodierers 94 wird mit den
Einstellungen des BIOS-Modusregisters 90 und der Logik 82 für
den Speicherzugriff kombiniert, um zu bestimmen, ob dem
Coprozessor 22 die BIOS-Daten von dem internen RAM 24 oder von
dem E-/A-Adapter 34 (Figur 1) lesen soll. Wie vorher erortert,
aktiviert dies den Prozessor, zu überwachen, wo der Coprozessor
22 auf das Betriebssystem zugreift. Es ist wichtig, zu
verstehen, daß dieses Merkmal die tatsächliche Leistung der
Funktion des Coprozessors 22 erhöht durch Zulassen, daß dem
Hauptprozessor 12 den Coprozessor 22 dazu führt, sein BIOS in
dem internen RAM 24 zu lesen. Dieser RAM 24 ist durch den
Hauptprozessor 12 bei der anfänglichen Programmladephase des
Coprozessors 22 vorgeladen worden. Es versteht sich, daß, wenn
der Coprozessor 22 auf den E-/A-Adapter 18 oder 34 zugreift, um
die BIOS-Daten zu lesen, der Zugriff ein 8 Bit-Zugriff ist, der
einige Zugriffe auf den E-/A-Bus erfordert, um ein 32-Bitwort zu
lesen. Auf der anderen Seite greift der Hauptprozessor 12 auf
die E-/A-Adapter 18 oder 34 nur einmal während der anfänglichen
Programmladezeit zu und überträgt 32 Bits zu einem Zeitpunkt zu
dem internen RAM 24 des Coprozessor-Moduls 20. Wenn daher der
Coprozessor 22 auf BIOS-Information zugreifen muß, ist er in der
Lage, das in dem RAM 24 in einer Breite von 32 Bits zu tun,
wobei der Zugriff schneller und ohne eine überschüssige Zahl an
Datenübertragungen über den E-/A-Bus 10 bewirkt wird.
-
Figur 11 stellt das Verschieberegister 80 dar, das auch durch
den Hauptprozessor 12 über den E-/A-Bus 10 geladen wird. Wie
vorher erläutert, wird der Vergleicher 76 dazu benutzt, die
Adresse des E-/A-Bus 10 mit der in dem Verschieberegister
gespeicherten Adresse zu vergleichen, um zu bestimmen, ob der
Hauptprozessor 12 auf die gesamten ein Megabyte des internen RAM
24 zugreifen soll. Der Decodierer 95 prüft die Adresse des
Hauptprozessors, um zu bestimmen, ob er nur auf die ersten 640K
und die letzten 128K des internen RAM 24 zugreifen soll.