-
Hintegrund
und Zusammenfassung der Erfindung Diese Anmeldung beansprucht die
Priorität
auf der Grundlage einer Teilfortführung der US-Patentanmeldung,
laufende Nummer 08/515.645, eingereicht am 16. August 1995, nun
US-Patent Nr. 5.680.641.
-
Die
Erfindung bezieht sich im Allgemeinen auf Computer und insbesondere
auf einen Datenverarbeitungs-Datenpfad, der in einer registerbasierten
CPU verwendet wird.
-
Universelle
registerbasierte Computer verwenden eine oder mehrere Bänke von
Datenspeicherregistern innerhalb der CPU, in denen die Daten während der
arithmetischen Verarbeitung oder anderen Datenverarbeitung vorübergehend
gespeichert werden. Die Datenspeicherregister sind normalerweise
in Registerbänken
angeordnet, die außerdem
als Registerblöcke
oder einfach Register bekannt sind. Die einzelnen Registerbänke können einen
Teil eines größeren Blocks
des Speichers, wie z. B. ein Multiportregister, bilden, in denen
jede Registerbank ein separat adressierbarer Abschnitt des Multiportregisters
mit einem separaten Satz von Eingang/Ausgangs-Ports ist. Die Größe jeder
Registerbank ist durch die interne Architektur des Computers bestimmt,
wobei sie eine Sache der Entwurfswahl ist. Die Daten strömen durch
Busse, die eine Verbindung mit größeren Computer-Speichereinheiten
und mit einer oder mehreren Arithmetik- und Logikeinheiten (ALUs)
der CPU herstellen, in die Register der CPU und aus den Registern
der CPU. Eine 32-Bit-CPU besitzt typischerweise 32-Bit-Datenbusse
und 32-Bit-Register, die erlauben, dass die Daten durch den Datenpfad
parallel bewegt werden. Die Datenspeicher-Registerbänke in einer
CPU werden zusammen mit bestimmten anderen spezialisierten Registern
zum Speichern von Befehlen und Speicheradresseninformationen, den
ALUs, und den bei der Verarbeitung der Daten verwendeten verbindenden
Datenbussen gemeinschaftlich als der CPU-Datenpfad bezeichnet.
-
In
einer registerbasierten CPU werden die Daten in Übereinstimmung mit den Programmierbefehlen von
einem Software-Decodierer und Logiksteuerblock bewegt und verarbeitet,
der sich außerhalb
des Datenpfades befindet, der aber mit allen Hauptelementen in der
CPU funktional verbunden ist. In den CPUs des Standes der Technik
werden die Daten vom Haupt- oder Cache-Speicher des Computers abgerufen
und in die Registerbank der CPU geladen. Sobald die Registerbank
geladen worden ist, werden die Operanden in den einzelnen Registern
durch die ALU in Übereinstimmung
mit den Programmbefehlen vom Logiksteuerblock verarbeitet. Die ALU
könnte
z. B. die Inhalte von zwei verschiedenen Speicherstellen im Registerspeicher
addieren oder multiplizieren und das Ergebnis in einer dritten Registerstelle
speichern. Sobald die Rechenverarbeitung abgeschlossen ist, werden
die Daten aus der Registerbank ausgeladen und zum Hauptspeicher
oder einem anderen Ort im Computer geschickt. Die registerbasierten
CPUs sind flexibel und effizient. Die Register beschleunigen die
Verarbeitung, weil die Daten schnell zu ALU geliefert und in anderen
Registerstellen gespeichert werden können, ohne dass die Daten durch
den verhältnismäßig langsameren
Hauptspeicher des Computers geladen und gespeichert werden müssen.
-
Während die
registerbasierten CPUs beim Verarbeiten der Daten effizient sind,
stellt die tatsächlich aktive
Rechenzeit, in der die Daten in einem einzelnen CPU-Datenpfad verarbeitet
werden, nur einen Bruchteil der Gesamtzeit des Verarbeitungszyklus
dar. Die Daten müssen
zuerst aus dem Speicher in die Registerbank der CPU geladen werden
und dann durch die ALU verarbeitet werden, wobei dann die verarbeiteten
Daten aus der Registerbank ausgeladen und zum Speicher oder anderswohin übertragen
werden. Folglich geschieht die tatsächliche Berechnung nur während des
Prozessschritts, wenn die Daten in der Registerbank speicherresident
sind. Die CPU führt
während
des Ladens und Ausladens der Registerbänke die tatsächliche
Datenverarbeitung nicht aus.
-
Ein
noch effizienterer Datenpfad ist in US-A-5680641, eingereicht am
16. August 1995, das an den gleichen Anmelder wie die Grundanmeldung
mit der laufenden Nr. 08/515.654 übertragen worden ist, beschrieben.
Es ist eine registerbasierte CPU beschrieben, in der die Arithmetik-
und Logikeinheit der CPU mit den im Voraus geladenen Registerbänken verbunden
ist, die mit den Daten in Übereinstimmung
mit einer algorithmisch erzeugten Adressenfolge selektiv geladen
worden sind, die die durch die ALU ausgeführten erforderli chen arithmetischen
Berechnungen verringert. Während
die ALU die Daten in einer Registerbank verarbeitet, werden die
Daten gleichzeitig in eine zweite Registerbank geladen, wobei sie
gleichzeitig aus einer dritten Registerbank ausgeladen werden können. Die
Prozedur minimiert die Leerlaufzeit der ALU, z. B. wenn die Registerbänke geladen
und ausgeladen werden.
-
Weil
immer Zeit erforderlich ist, um die Daten zwischen den Registerbänken zu
bewegen, wäre
es vorteilhaft, wenn derartige Datenbewegungen minimiert werden
könnten.
Bestimmte digitale Signalverarbeitungsberechnungen (DSP-Berechnungen)
erfordern z. B., dass die Daten durch eine Folge arithmetischer
Verarbeitungsschritte verarbeitet werden, die am effizientesten
unter Verwendung separater Datenprozesse oder ALUs ausgeführt werden
können.
Die Methodologie des Standes der Technik zum Ausführen derartiger
mehrerer Verarbeitungsschritte verwendet mehrere Datenspeicher-Registerbänke, die
mit jedem Datenprozessor verbunden sind. Die Daten werden von einer
oder mehreren Registerbänken
durch ihren zugeordneten Prozessor bewegt, wobei sie dann zu einer
oder mehreren anderen Registerbänken übertragen
werden, die dem nächsten
Prozessor in der Folge zugeordnet sind, bis die Verarbeitung der
Daten abgeschlossen ist. Selbst bei effizienten Datenübertragungen
unter Verwendung großer
Parallelübertragungsbusse
gibt es einen bestimmten Zusatzaufwand, der jeder Datenübertragung
zwischen den Registerbänken
geordnet ist.
-
EP-A-0
346 031 (FUJITSU LTD), 13. Dezember 1989 (1989-12-13), offenbart
einen Datenpfad, der funktional mit externen Datenquellen und -zielen
verbunden ist, und einen externen Controller zum Steuern des Datenpfades.
Dieser Datenpfad umfasst mehrere Speicherzugriffspipelines, mehrere
Berechnungspipelines und einen Satz Vektorregister, die aus mehreren
Registerbänken
bestehen. Jede der Pipelines kann zyklisch auf jede der mehreren
Registerbänke
zugreifen, wenn einer oder mehrere einer vorgegebenen Anzahl von
Zeitschlitzen einem Befehl, der die Pipeline verwendet, zugeordnet
sind.
-
Es
würde der
vorteilhaft sein, einen CPU-Verarbeitungs-Datenpfad und eine CPU-Verarbeitungs-Architektur
zu schaffen, die den Zusatzaufwand der Datenübertragung minimieren würden, der
für mehrere
Datenverarbeitungsschritte erforderlich ist, ohne bedeutende Änderungen
an der Operation der CPU oder der Programmier-Software, die ihre
Operationen steuert, zu erfordern.
-
Es
würde außerdem in
einer registerbasierten CPU vorteilhaft sein, zu erlauben, dass
die CPU mehrere ALUs besitzt, um die Daten durch eine Folge von
ALUs zu bewegen und zu verarbeiten, indem vorgegebene Steuersignale
im Datenpfad geändert
werden, anstatt die Daten durch eine Folge von Registerbänken zu
bewegen.
-
Es
würde außerdem vorteilhaft
sein, den Rechenwirkungsgrad eines CPU-Datenpfades in einem registerbasierten
Computer zu verbessern, indem den ALUs erlaubt wird, die Registerbänke im Datenpfad
gemeinsam zu benutzen.
-
Demzufolge
wird ein Datenpfad für
ein System registerbasierter Datenprozessoren geschaffen. Der Datenpfad
ist mit externen Datenquellen und -zielen und mit einem externen
Controller zum Steuern des Datenpfades funktional verbunden, wobei
der Datenpfad das Folgende enthält.
Es sind mehrere Datenspeicher-Registerbänke vorgesehen, wovon jede
einen oder mehrere Eingangs/Ausgangs-Ports besitzt, über die funktionale
Verbindungen mit den Registerbänken
geschaffen werden. Es sind mehrere Datenprozessoren zum Verarbeiten
von Daten in einer oder in mehreren Datenspeicher-Registerbänken vorgesehen,
wenn einzelne Registerbänke
mit einem Datenprozessor funktional verbunden sind. Die Registerbänke sind
mit ausgewählten
Vorrichtungen sowohl innerhalb als auch außerhalb des Datenpfades unter
Verwendung eines Datenpfad-Verbindungssystems funktional verbunden.
Das Verbindungssystem verbindet funktional die Registerbänke mit
den Datenprozessoren im Datenpfad und den Datenquellen und -zielen
außerhalb
des Datenpfades. Es ist ein Verbindungscontroller vorgesehen, der
Steuersignale erzeugt, die jede Registerbank mit einer Folge ausgewählter Vorrichtungen
funktional verbinden. Die Folge umfasst a) funktionales Verbinden
einer Registerbank mit einer Datenquelle, um Daten in die Registerbank
zu laden; b) funktionales Verbinden der Registerbank mit einem Ersten
der Datenprozessoren, um Daten in Übereinstimmung mit dem ersten
Datenprozessor zu verarbeiten; c) funktionales Verbinden der Registerbank
mit einem Zweiten der Datenprozessoren, um Daten in Übereinstimmung
mit dem zweiten Datenprozessor zu verarbeiten; d) und funktionales
Verbinden der Registerbank mit einem Datenziel, um die Daten aus
der Registerbank zum Datenziel auszuladen. Der Verbindungscontroller
verbindet funktional eine oder mehrere weitere Registerbänke mit
den ausgewählten
Vorrichtungen in der obenerwähnten
Folge, vorzugsweise wenn die Folge ausgeführt wird. Folglich wird, wenn
der Folgeschritt b in Bezug auf eine Registerbank ausgeführt wird,
der Folgeschritt a in Bezug auf eine andere Registerbank ausgeführt, wobei,
wenn der Folgeschritt c in Bezug auf die erste Registerbank ausgeführt wird,
der Folgeschritt b in Bezug auf die zweite Registerbank ausgeführt wird,
während
der Folgeschritt a in Bezug auf eine dritte Registerbank ausgeführt wird,
und so weiter. Das System erlaubt, dass die Daten in jeder Registerbank
durch eine Folge von Datenprozessoren verarbeitet werden, indem
die Registerbank mit einer derartigen Folge von Datenprozessoren
sequentiell verbunden wird.
-
In
seiner bevorzugten Form verwendet das Datenpfad-Verbindungssystem
ein Multiportregister, das mehrere Eingangs/Ausgangs-Ports aufweist,
wobei jede Registerbank in dem Datenpfad ein separat adressierbarer
Abschnitt des Multiportregisters ist. In einem derartigen System
schafft der Verbindungscontroller die Adresseninkrementierung, wie
sie notwendig ist, um die einzelnen Registerbänke innerhalb des Multiportregisters
zu adressieren. In dieser Weise stellt der Verbindungscontroller
Steuersignale bereit, die jeden separat adressierbarer Abschnitt
des Multiportregisters mit den ausgewählten Vorrichtungen in der
oben beschriebenen Folge a) bis d) funktional verbinden. Alternativ
kann das Datenpfad-Verbindungssystem ein Multiplexersystem sein,
das durch den Verbindungscontroller gesteuert wird, in dem mehrere
Multiplexerschalter die Eingangs/Ausgangs-Ports der einzelnen Registerbänke mit
der obenbeschriebenen Folge der ausgewählten Vorrichtungen verbinden.
-
Obwohl
die Folge der ausgewählten
Vorrichtungen einen ersten und zweiten Datenprozessor spezifiziert,
mit dem die einzelnen Registerbänke
funktional verbunden sind, berücksichtigt
der Datenpfad der Erfindung die effiziente Verarbeitung der Daten
durch n Prozessoren, wobei n größer oder
gleich 2 ist. Die Verbindungsfolge erlaubt, dass jede Registerbank
mit irgendeiner Anzahl von Datenprozessoren funktional verbunden
wird.
-
Die
Erfindung enthält
ferner ein Verfahren für
die Verwendung in einem Datenpfad einer registerbasierten CPU des
gerade beschriebenen Typs. Das Verfahren umfasst die Schritte:
Laden
von Daten in eine erste Registerbank in dem Datenpfad;
funktionales
Verbinden der ersten Registerbank mit einem ersten Datenprozessor,
um darin Daten in Übereinstimmung
mit dem ersten Datenprozessor zu verarbeiten;
funktionales
Verbinden der ersten Registerbank mit einem zweiten Datenprozessor,
um Daten in Übereinstimmung
mit dem zweiten Datenprozessor zu verarbeiten;
Entladen der
Daten aus der ersten Registerbank zu einem Ziel in der CPU, wobei
die Daten in der ersten Registerbank durch eine Folge von Datenprozessoren
verarbeitet werden.
-
Ein
Hauptvorteil des Systems und des Verfahrens der Erfindung ist die
Verringerung der Anzahl der Datenübertragungen zwischen den Registerbänken im
Vergleich zu den herkömmlichen
CPU-Datenpfad-Methodologien. Die Erfindung vermeidet viele Datenübertragungen
in mehreren Verarbeitungsschritten durch das Senden von Steuersignalen
an ein Verbindungssystem, um die Verbindungen zwischen mehreren
Datenprozessoren und mehreren Datenspeicher-Registerbänken zu ändern. Es
ist immer schneller, Steuersignale zu bewegen, als Daten zu bewegen.
Folglich verringert die Erfindung den Zusatzaufwand bei der Datenverarbeitung.
-
Kurzbeschreibung
der Zeichnung
-
1 (Stand
der Technik) ist eine schematische Veranschaulichung eines CPU-Datenpfades in einem registerbasierten
Computer.
-
2 (Stand
der Technik) ist eine schematische Veranschaulichung eines CPU-Datenpfades wie in 1,
der eine zweite Registerbank enthält, um Unterbrechungen zu verarbeiten.
-
3 ist
eine schematische Veranschaulichung eines geeigneten Datenpfad-Verbindungssystems, das
Multiplexer und Demultiplexer verwendet, um zwei austauschbare Registerbänke mit
einer einzelnen ALU zu verbinden.
-
4 ist
eine Tabelle, die die Portverbindungsfolgen für das Datenpfad-Verbindungssystem
nach 3 veranschaulicht.
-
5 ist
eine vereinfachte schematische Veranschaulichung des Datenpfades
nach 3.
-
6 ist
eine schematische Veranschaulichung eines Datenpfades gemäß einer
ersten Ausführungsform
der Erfindung.
-
7 ist
eine schematische Veranschaulichung einer Ausführungsform der Multiportverbindung
in dem Datenpfad unter Verwendung eines Multiportregisters.
-
8 ist
eine schematische Veranschaulichung eines Datenpfades wie in 6,
die eine alternative Ausführungsform
der Erfindung zeigt.
-
Ausführliche
Beschreibung der bevorzugten Ausführungsform
-
1 (Stand
der Technik) zeigt einen repräsentativen
CPU-Datenpfad des Standes der Technik für einen registerbasierten Computer.
Der Datenpfad 10 enthält
die Elemente der CPU, die die Berechnung der Daten abwickeln. 1 ist
ein vereinfachtes Schema, das die aktiven Hauptelemente und Verbindungsdatenbusse
des Datenpfades 10 veranschaulicht. Zahlreiche funktionale
Verbindungen, die den Fachleuten auf dem Gebiet vertraut sind, sind
aus 1 und den anderen Figuren hierin weggelassen worden,
um die wesentlichen Merkmale der Erfindung deutlich zu veranschaulichen.
Der Befehlsdecodierungs- und Logiksteuerblock 20 ist z.
B. über
mehrere Signalpfade, die bei 24 schematisch veranschaulicht
sind, mit allen veranschaulichten Elementen im Datenpfad 10 funktional
verbunden. Der Befehlsdecodierungs- und Logiksteuerblock 20 ist
ein externer Controller für
den Datenpfad 10, wobei er sowohl die verschiedenen Elemente
des Datenpfades als auch andere (nicht gezeigte) Teile des Computers
basierend auf der Software-Programmierung und den Steuersignalen
steuert, die in einer Weise, die den Fachleuten auf dem Gebiet wohlbekannt
ist, zum Logiksteuerblock 20 geliefert werden. Das andere
in 1 gezeigte externe Element ist der Speicherblock 30,
der den Hauptspeicher des Computers einschließlich des Cache-Speichers schematisch
darstellt. Die Daten und funktionalen Befehle werden durch den Datenpfad 10 unter
Verwendung des Codierungs- und Befehlsformats des Computers aus
dem Speicher 30 abgerufen und im Speicher 30 gespeichert.
Die Erfindung ist auf die Architektur des Datenpfades 10 und
ein verbessertes Verfahren des Betreibens eines derartigen Datenpfades
gerichtet, wobei sie nicht auf irgendein spezielles Software- oder
Befehlsformat oder irgendeinen speziellen Software- oder Befehlstyp
eingeschränkt
ist.
-
Der
in 1 gezeigte Datenpfad 10 ist ein vereinfachtes
Schema, das sie wesentliche Elemente einer registerbasierten CPU
des Standes der Technik zeigt. Eine aus sechzehn 32-Bit-Datenspeicherregistern
bestehende Registerbank 40 ist bei 40 gezeigt.
Es können
alternativ Registerbänke
mit anderen Größen mit
der Erfindung verwendet werden. Die Registerbank 40 kann
außerdem
zusätzliche
Speicherregister enthalten, um Programmstatusinformationen oder
dergleichen zu halten. Die Erfindung ist auf Datenspeicherregister,
die in den Berechnungsfunktionen verwendet werden, und nicht auf
die verschiedenen Statusregister, die außerdem in einem CPU-Datenpfad
vorgesehen sein könnten,
gerichtet.
-
Der
Datenbus 45 ist ein 32-Bit-Bus, der die Daten zu dem und
von dem Speicher 30 überträgt. Die Registerbank 40 besitzt
einen oder mehrere Eingangs/Ausgangs-Ports (E/A-Ports), um die Daten
in die Register zu laden und aus den Registern auszuladen. Wie in 1 der
veranschaulicht ist, besitzt die Registerbank 40 die E/A-Ports 50, 51, 52, 53.
Der Port 50 ist mit dem Datenpfad 45 verbunden.
Die Ports 52, 53 liefern die Daten von der Registerbank 40 zur
Arithmetik- und Logikeinheit (ALU) 60 der CPU. Die ALU
führt die
mathematischen Berechnungen über
die Verbindungsbusse 62, 64 aus. Die Busse 62, 64 sind
schematisch. Typischerweise sind zwei oder mehr Hauptdatenbusse
in einem CPU-Datenpfad vorgesehen, um die Daten zwischen den Hauptelementen
der CPU zu übertragen.
Dies erlaubt der ALU, mehrere Register gleichzeitig zu lesen. Das
Ergebnis einer ALU-Operation wird über eine separate Busleitung,
die in 1 bei 66 schematisch veranschaulicht
ist, zur Registerbank zurückgeschickt.
-
Die
ALU-Ergebnisse können
alternativ in ein Speicheradressenregister 70 geschrieben
werden, das die Adresseninformationen für die Speicherung der aus der
Registerbank 40 ausgeladenen und über den Bus 45 zum
Speicher zurückgeschickten
Daten zum Computer-Speicher 30 liefert. Die ALU-Ergebnisse
können außerdem durch
das Speicheradressenregister 70 in Übereinstimmung mit den Programmierbefehlen
vom Logiksteuerblock 20 direkt zum Speicher zurückgeschickt
werden. Im Datenpfad 20 ist außerdem ein separates Programmierbefehlsregister 77 vorgesehen,
um die Befehle zum Logiksteuerblock 20 zu schicken. Das
Befehlsregister speichert die Befehle in Reaktion auf einen Befehlsholbefehl
vom Logiksteuerblock, der die ALU umgeht.
-
2 ist
ein Schema eines Datenpfades 10 und der zugeordneten Vorrichtungen,
das zu dem ähnlich ist,
das in 1 gezeigt ist. Gleichen Elementen in 2 sind
die gleichen Bezugszeichen zugeordnet worden, die in 1 verwendet
werden. Der in 2 gezeigte Datenpfad 10 enthält einen
Zugang des Standes der Technik, um die durch das Laden und Ausladen
der Daten in die Registerbank 40 in einem Datenpfad mit einer
einzelnen ALU dargestellten Rechenineffizienzen zu beseitigen. Das
Problem ist die "Ausfallzeit" der ALU 60,
wann immer Daten über
einen oder mehrere der E/A-Ports 50, 51, 52, 53 in
das Register geladen oder aus dem Register ausgeladen werden. Die
ALU kann während
des Ladens oder Ausladens keine Daten verarbeiten oder Berechnungen
ausführen.
Der Abruf vom Speicher der Daten im Speicher 30 dauert
wenigstens einige Taktzyklen. Die Speicheradressen müssen für jedes übertragene
Datenelement identifiziert werden. Unter manchen Umständen ist
die Lade/Auslade-Verzögerung,
um auf den Speicher 30 zuzugreifen, unannehmbar. Eine Programmunterbrechung,
bei der die Computer-Software die CPU-Verarbeitung unterbricht,
um eine alternative Berechnung zu bearbeiten, der durch den Computer
Priorität
gegeben worden ist, erfordert z. B., dass die Daten aus der aktiven
Registerbank 40 gelöscht
werden. 2 zeigt eine Lösung, die
durch einige Computer-Hersteller verwendet wird, um die Verzögerung zu
vermeiden, die ein derartiges Ereignis verursachen würde. Diese
Lösung
besteht darin, eine zweite parallele Registerbank 80 vorzusehen,
die zur Registerbank 40 ähnlich oder völlig gleich
ist, die für
die Registerbank 40 beim Empfang eines Unterbrechungsbefehls getauscht
werden kann. Die Unterbrechung ist in 2 durch
den Pfeil 84 schematisch veranschaulicht. Beim Empfang
eines Unterbrechungsbefehls schließt die CPU typischerweise die
in Gang befindliche Berechnung ab und tauscht dann die Registerbank 80 für die Registerbank 40,
um die Daten in der Registerbank 40 zu erhalten. In dieser
Weise müssen
die Inhalte der Registerbank 40 nicht in den Speicher 30 ausgeladen
werden, um die Register für
die Unterbrechungsverarbeitung freizumachen. Die Ersetzung der Registerbank 40 durch die
Registerbank 80 innerhalb des Datenpfades 10 beschleunigt
die Unterbrechungsantwortzeit und erlaubt der CPU, schnell in ihren
Zustand vor der Unterbrechung zurückzukehren, wenn das Unterbrechungsereignis abgeschlossen
ist.
-
In 2 ist
das Tauschen der Registerbänke 40 und 80 schematisch
veranschaulicht. Den Datenbusleitungen zu den E/A-Ports 50, 51, 52, 53 sind
die Buchstaben A, B, C bzw. D zugeordnet worden. Völlig gleiche
E/A-Busleitungen sind mit völlig
gleichen E/A-Ports 50, 51, 52, 53 an
der Registerbank 80 verbunden, die als A', B', C', D' bezeichnet sind.
Die Verbindungen durch die Busleitungen A, B, C, D werden durch
die Leitungen A',
B', C', D' umgeleitet, wenn
die Registerbänke
während
einer Unterbrechung getauscht werden. Wie für die Fachleute auf dem Gebiet
selbstverständlich
ist, wird das tatsächliche
Umschalten der Verbindungen zwischen den Registerbänken 40 und 80 durch
geeignete Verbindungen, wie z. B. (nicht gezeigte) Multiplexerschalter
ausgeführt,
die durch den Logiksteuerblock 20 innerhalb des Datenpfades 10 gesteuert
werden. Die Konfiguration eines Multiplexers, um den Tausch zwischen
den Registerbänken 40 und 80 auszuführen, hängt von
der Anzahl und vom Ort der E/A-Ports und Prozessorports ab, wobei
sie durch die Anordnung und die Verdrahtung des Datenpfades 10 erreicht
werden kann, wie es erforderlich ist. Alternativ müssen die
Registerbänke 40 und 80 nicht
notwendigerweise physikalisch voneinander getrennt sein, wobei sie
in der Tat ein Teil einer einzelnen größeren Registerbank sein könnten. Funktional
verbleibt die Registerbank 80 separat und unbenutzt, mit
Ausnahme während
der Unterbrechungsantwort, wobei die E/A- und Prozessorports 50, 51, 52, 53 an
der Registerbank 80 gesperrt und mit irgendwelchen externen
Datenbussen nicht verbunden sind, mit Ausnahme während der Unterbrechungsantwort.
Wenn die Registerbänke 40 und 80 beide
Teil eines größeren Blocks
sind, der mehrere Registerbänke
enthält,
sind die E/A- und Prozessorports des Abschnitts des Blocks, der
die Registerbank 80 enthält, gesperrt, bis sie für die Unterbrechungsantwort
benötigt
werden. Es sind im Stand der Technik zahlreiche Variationen der
physikalischen Architektur, um die Funktion der Registerbank 80 als
Teil der Unterbrechungsantwort auszuführen, verfügbar, wobei den Fachleuten
auf dem Gebiet andere Alternativen leicht einfallen werden.
-
Die
Technik des Vorsehens einer redundanten Datenspeicher-Registerbank 80 für die schnelle
Unterbrechungsantwort wird in vielen registerbasierten CPUs verwendet,
z. B. in der von Zilog, Inc. of Campell, California, hergestellten
Z80 und in der ARM-600-Serie der RISC-Prozessoren. Die Technik nach 2 spart während der
Unterbrechungen Zeit und erhält
den Prozessorzustand während
der CPU-Datenverarbeitung, ist aber, wie sie gegenwärtig verwendet
wird, nur auf die Unterbrechungsfunktionen eingeschränkt.
-
3 veranschaulicht
ein geeignetes Datenpfad-Verbindungssystem, das Mul tiplexer und
Demultiplexer verwendet, um die notwendigen funktionalen Verbindungen
zwischen der Registerbank und der ALU im Datenpfad, der in 2 gezeigt
ist, zu bilden. Den Elementen des CPU-Datenpfades 10, die
den Datenpfaden des Standes der Technik gemeinsam sind, die in den 1 und 2 veranschaulicht
sind, sind in 3 die gleichen Bezugszeichen
zugeordnet, wobei die Funktionalität dieser Elemente die gleiche
wie die der Elemente ist, die vorausgehend unter Bezugnahme auf
die 1 und 2 beschrieben worden sind. Im
CPU-Datenpfad 10 nach 3 werden
zwei völlig
gleiche und austauschbare Registerbänke, die als das Register 100 und
das Register 102 gekennzeichnet sind, verwendet, um die
Daten für
die CPU-Berechnungen zu laden, zu verarbeiten und auszuladen. Der
Unterschied zwischen den Registerbänken 100 und 102 und
der Registerbank 40 in 1 ist, dass
die E/A- und Prozessorports 50, 51, 52, 53,
wie sie in 1 veranschaulicht und beschrieben
worden sind, und wie sie in den Registerbänken 100, 102 vorgesehen
sind, mit den Multiplexeren 110, 110' und den Demultiplexern 112, 112' verbunden sind.
Es ist der Zweck der Multiplexer und Demultiplexer, eine Datenpfadverbindung
zu schaffen, um die Ports der Registerbänke 100, 102 selektiv
mit der ALU 60 und dem Datenbus 45 zu verbinden.
-
Der
Multiplexer 110 enthält
wenigstens 3 Quellen der Daten, um die Daten in die Register der
Registerbank 100 zu laden und aus ihnen auszuladen. Ein
Eingang in den Multiplexer 110 ist der Datenbus 45,
während
ein weiterer der ALU-Ausgangsbus 66 ist. Ein dritter Eingang
kommt über
den Bus 120 von einer alternativen Datenquelle 125.
Die alternative Datenquelle 125 könnte z. B. ein Echtzeit-Datenstrom
von einem digitalisierten Video- oder Audiosignal sein. Der Multiplexer 110 wählt aus
diesen Datenquellen auf der Grundlage von vom Lade/Speicher-Steuerlogikblock 135 auf
der Steuerleitung 130 an den Multiplexer gelieferten Befehlen
aus. Der Lade/Speicher-Steuerlogikblock empfängt die Steuerbefehle vom Computer-Logiksteuerblock 20 in Übereinstimmung
mit auf der Grundlage der Betriebs-Software des Computers im Voraus
programmierten Befehlen.
-
Der
Multiplexer 110' besitzt
außerdem
mehrere Eingangsdatenquellen, um mit den Ports 50, 51 und der
Registerbank 102 eine Verbindung herzustellen. Die Datenquellen
sind dieselben Datenquellen, die zum Multiplexer 110 geliefert
werden. Der Multiplexer 110' wird
durch eine Leitung 130' in
der gleichen Weise wie der Multiplexer 110 durch den Lade/Speicher-Steuerlogikblock 135 ge steuert.
-
Das
Zwischenschalten der Multiplexer 110, 110' zwischen die
Dateneingänge
und die E/A-Eingangsports der Registerbänke 100 bzw. 102 vergrößert effektiv
die Anzahl der E/A-Ports für
die Registerbänke,
indem es erlaubt, dass wenigstens eine weitere Quelle der Daten
mit den Registerbänken 100, 102 verbunden wird.
-
Der
Demultiplexer 112 ist mit den Prozessorports 52, 53 der
Registerbank 100 verbunden, wobei er die Daten über die
Busse 62, 64 zur ALU 64 lenkt. Eine alternative
Ausgangsübertragungsstelle
vom Demultiplexer 112 ist über den Bus 145 zu
einer separaten Datenspeicherstelle 140.
-
Der
Demultiplexer 112' empfängt die
Daten von den Prozessorports 52, 53 der Registerbank 102 und lenkt
wie der Demultiplexer 112 die Daten zu den Bussen 62, 64 und 145.
Die Demultiplexer 112, 112' werden beide über die Leitungen 130 bzw. 130' durch den Lade/Speicher-Steuerlogikblock 135 gesteuert.
Die funktionale Wirkung des Installierens der Demultiplexer 112, 112' zwischen den
Prozessorports 52, 53 der Registerbänke 100 bzw. 102 und
der ALU 60 ist, auszuwählen,
welche der zwei Registerbänke 100, 102 mit
der ALU 60 verbunden wird. Ähnlich sind die Multiplexer 110, 110', abhängig von
den von der Lade/Speicher-Steuerlogik 135 empfangenen Steuerbefehlen,
alternativ mit den Datenbussen 45 und 66 oder
dem Bus 120 verbunden.
-
4 ist
eine Tabelle, die die Folge der Verbindungen veranschaulicht, die
durch die Lade/Speicher-Steuerlogik 135, die Multiplexer 110, 110' und die Demultiplexer 112, 112' geschaffen
werden. Die Verbindungen mit den E/A- und Prozessorports 50, 51, 52, 53 für die Registerbank 100 befinden
sich in der linken Spalte unter "Register
A(100)". Im Folgeschritt
1 der Tabelle sind die Ports 50, 51, 52, 53 des
Registers 100 mit den Bussen 45, 66, 62 bzw. 64 verbunden.
Als solche wird die Registerbank 100 bei der Verarbeitung
der Daten verwendet. Gleichzeitig mit den obenerwähnten Verbindungen
mit der Registerbank 100 sind die E/A- und Prozessorports 50, 51, 52, 53 der
Registerbank 102 so, wie in der rechten Spalte des Folgeschritts
1 unter dem Titel "Register
B(102)" gezeigt
ist. Der Port 50 des Registers 102 ist mit dem
Bus 120 verbunden, während der
Port 52 mit dem Bus 145 verbunden ist, was bedeutet,
dass sich die Registerbank 102 in der Lade/Auslade-Betriebsart
befindet. In der nächsten
Folge, dem Schritt 2, ist der Port 50 der Registerbank 100 mit
dem Bus 120 verbunden, während der Port 52 mit
dem Bus 145 verbunden ist, wobei sich die Registerbank 100 in der
Lade/Auslade-Betriebsart befindet. Gleichzeitig sind im Folgeschritt
2 die Ports 50, 51, 52, 53 der
Registerbank 102 mit den Bussen 45, 66, 62 bzw. 64 verbunden,
wobei sich die Registerbank 102 in der Prozessphase der
Operation befindet, in der die Daten durch die ALU 50 verarbeitet
werden. Der Folgeschritt 3 wiederholt die für den Folgeschritt
1 beschriebenen Verbindungen. Der Folgeschritt 4 wiederholt
die für
den Folgeschritt 2 beschriebenen Verbindungen. Die Folge der Verbindungen
kann in diese Weise unbegrenzt wiederholt werden.
-
Der
in 3 gezeigte Datenpfad erlaubt, dass die Registerbänke 100, 102 zwischen
den Lade/Auslade-Operationen und den Datenverarbeitungsoperationen
wiederholt getauscht werden. Während
die Registerbank 100 ausgeladen und neu mit Daten geladen
wird, ist die Registerbank 102 mit der ALU 60 verbunden, wobei
die Daten darin verarbeitet werden. Wenn die E/A-Port- und Prozessorport-Verbindungen
durch den Lade/Speicher-Steuerlogikblock 135 umgeschaltet
werden, werden die Daten in der Registerbank 100 verarbeitet,
während
gleichzeitig die Daten aus der Registerbank 102 geladen
und neu in die Registerbank 102 geladen werden.
-
Tatsächlich arbeitet
die Lade/Speicher-Steuerlogik 135 als ein Verbindungscontroller,
der funktional mit den austauschbaren Registerbänken 100, 102 verbunden
ist. Die Lade/Speicher-Steuerlogik 135 arbeitet zusammen
mit den Multiplexern 110, 110' und den Demultiplexern 112, 112' als ein Datenpfad-Verbindungssystem,
um die Eingangs/Ausgangs-Ports einer der austauschbaren Registerbänke (100 bis 102)
mit der ALU 60 zu verbinden, wodurch die Daten in dieser
Registerbank verarbeitet werden, während sie die ungenutzten Ports
der anderen Registerbank mit den Datenbussen 120, 145 selektiv
verbinden, wodurch die Daten in die andere Registerbank geladen
und aus der anderen Registerbank ausgeladen werden. Die Multiplexer 110, 110' und die Demultiplexer 112, 112' erlauben dann,
dass die gerade beschriebenen Verbindungen umgekehrt werden, wobei
der erste Multiplexer mit den Daten-Lade/Auslade-Bussen 120, 145 verbunden
ist, während
die zweite Registerbank mit den E/A-Prozessorports verbunden ist,
um die Daten darin zu verarbeiten. Die Fähigkeit, die Registerbänke 100, 102 zwischen
den Lade/Auslade-Funktionen und den Datenverarbeitungsfunktionen
umzuschalten, verkürzt
die Ver arbeitungszeit und führt
zu einem effizienteren Prozessorbetrieb. Die funktionale Grundoperation
des in 3 gezeigten Datenpfades 10 ist die gleiche
wie die des in 1 gezeigten Datenpfades, mit
Ausnahme für
das Umschalten zwischen den Registerbänken 100 und 102.
Folglich arbeitet die für
den in 1 gezeigten Hauptprozessor-Logiksteuerblock 20 geschriebene
Software praktisch ungeändert
im Datenpfad nach 3, weil die wesentliche Architektur
und die wesentlichen Verbindungen zum CPU-Datenpfad unverändert sind,
sobald eine Registerbank mit der ALU 60 verbunden worden
ist.
-
Das
Vorhergehende hat den veranschaulichenden Hintergrund getrennt,
um die typische Architektur des Standes der Technik eines CPU-Datenpfades
zu verstehen. Der Datenpfad nach 3 erlaubt,
dass die Ströme
der Daten von einer Quelle, wie z. B. einer Echtzeit-Videoeingabe,
effizienter als in dem in 1 gezeigten
Signalregisterbanksystem verarbeitet werden. Die Daten werden in
1 Registerbank geladen und aus 1 Registerbank ausgeladen, während ein
separater Satz der Daten in einer weiteren Registerbank durch die ALU
verarbeitet wird. Die Daten in beiden Registerbänken sind vorzugsweise für andere
Verarbeitungsoperationen oder für
die Überwachung
durch den Logikcontroller 20 zugänglich, wobei vorzugsweise
alle Datenbusse in den Datenbussen im Datenpfad überwacht werden können und
auf sie zugegriffen werden kann, wie es erforderlich ist. Demzufolge
enthält
der Datenpfad 10 einen Bus-Sender/Empfänger 180, der mit
allen Daten- und Adressenbussen verbunden ist, um zu erlauben, dass
die allgemeinen Computer-Operationen durch den externen Controller überwacht
werden, der vom Steuerlogikblock 20 eingeschlossen ist.
-
5 stellt
eine vereinfachte schematische Veranschaulichung des Datenpfades
nach 3 bereit, die beim Vereinfachen der erforderlichen
Beschreibung in den Ausführungsformen
der Erfindung dienen wird, die folgt. Die Erfindung schafft einen
Datenpfad mit mehreren Prozessoren (ALUs), die eine oder mehrere
Registerbänke
gemeinsam benutzen, wobei die Komplexität des Zeigens aller Verbindungen
nach 3 verwirrend ist. Außerdem sind die in 3 veranschaulichten
Verbindungen den Fachleuten auf dem Gebiet der registerbasierten
Verarbeitung wohlbekannt, wobei ein vereinfachteres Schema angemessen
ist, um irgendeinem Fachmann auf dem Gebiet zu ermöglichen,
eine geeignete Architektur zum Ausführen der Erfindung zu schaffen.
In 5 ist der Kasten "Registerbank A" die Registerbank 100 in 3,
während "Register bank B" die Registerbank 102 ist.
Die Datenquelle 125 ist die externe Datenquelle außerhalb
des Datenpfades 10, wie in 3. Der Datenprozessor 60 ist
die ALU 60 in 3. Das Ziel "Speicher 210" ist der Computer-Hauptspeicher 30,
der den Datenspeicherstellenblock 140 außerhalb
des Datenpfades 10 enthält.
Die Multiport-Datenpfadverbindung 230 ist eine schematische
Darstellung des Datenpfad-Verbindungssystems, das in 3 sowohl
die MUXs 110, 110' und
die DE-MUXs 112 und 112' als auch den Lade/Speicher-Steuerlogikblock 135 enthält. Die
Datenpfad-Verbindung 230 enthält die funktionalen Verbindungen
zwischen allen anderen Elementen und dem Ziel 210, die
in 5 gezeigt sind.
-
Der
Operation des Datenpfades nach 5 ist die
gleiche wie die des Datenpfades 10 in 3.
Die Daten werden von der Datenquelle 125 über den
Eingangsbus 120 z. B. zur Registerbank A100 übertragen, wobei
die Daten durch die Verbindung 230 gehen und zur Registerbank
A 100 geleitet werden. Dann wird die Registerbank A durch die Verbindung 230 mit
dem Prozessor 60 verbunden, während die Daten von der Datenquelle 125 über den
Bus 120 durch die Verbindung 230 zur Registerbank
B102 geladen werden. Wenn die Verarbeitung an den Daten in der Registerbank
A 100 abgeschlossen ist, wird die Registerbank B 102 über die Verbindung 230 mit
dem Prozessor 60 verbunden, während die Daten in der Registerbank
A100 zum externen Speicher 210 ausgeladen werden.
-
Die
Datenpfad-Verbindung 230 kann ein anderes Verbindungssystem
als ein Satz von Multiplexern und Demultiplexern sein. Die Datenpfad-Speicherbänke A und
B könnten
z. B. aus separat adressierbaren Ports eines einzelnen Multiportspeichers
bestehen. Es ist in der Technik wohlbekannt, mehrere Eingangs/Ausgangs-Ports
zu besitzen. Es wird ein numerischer Block von Adressen verwendet,
um auf die Registerbank A zuzugreifen, während ein anderer numerischer
Block von Adressen auf die Registerbank B zugreift. In einer derartigen
Konfiguration würde
die Verbindung 230 einen geeigneten Adresseninkrementierer
enthalten, um zu sichern, dass die gewünschten funktionalen Verbindungen
zwischen jeder separat adressierbaren Registerbank und den Vorrichtungen,
mit denen sie funktional verbunden wird, hergestellt werden. Dies
wird ausgeführt,
indem die Adressen inkrementiert werden, um die Daten, die in eine
der entsprechenden Registerbänke geladen
oder aus einer der entsprechenden Registerbänke ausgeladen werden, selektiv
zu lenken, sodass die Daten zur geeigneten Registerbank gelenkt
werden. Die Datenpfad-Verbindung 230 schafft außerdem die funktionalen
Verbindungen sowohl zur externen Datenquelle 125 und zum
externen Datenziel 210 als auch zum Datenprozessor 60.
-
6,
die eine schematische Darstellung eines Datenpfades wie in 5 ist,
zeigt eine erste Ausführungsform
der Erfindung, in der zwei Datenprozessoren (ALUs) jeder mehrere
Registerbänke
im Datenpfad gemeinsam benutzen, um die Daten effizient sequentiell
zu verarbeiten. Der Datenpfad 10 zeigt einen CPU-Datenpfad
für einen
registerbasierten Computer, der funktional durch einen (nicht gezeigten)
Befehlsdecodierungs- und Logiksteuerblock wie den Block 20 in 1 gesteuert
wird. Der Datenpfad 10 enthält mehrere Datenspeicher-Registerbänke A, B,
C und D 250, 252, 254 bzw. 256. Die Registerbänke können Teil eines geeigneten
Multiportregisters sein, in dem jede separate Registerbank separat
durch separate Eingangs/Ausgangs-Ports (E/A-Ports) adressierbar ist. Die E/A-Ports
für die
Registerbank A 250 sind schematisch bei 260 veranschaulicht;
die E/A-Ports für
die Registerbank B 252 sind bei 262 gezeigt; die E/A-Ports
für die
Registerbänke
C 254 sind bei 264 gezeigt und die E/A-Ports für die Registerbank
D 256 sind bei 266 gezeigt.
-
Die
Registerbänke
A-D sind mit den Vorrichtungen innerhalb und außerhalb des Datenpfades 10 durch eine
Multiport-Datenpfadverbindung 230 funktional verbunden.
Die Busse 270, 272, 274 und 276 schaffen
die Verbindungen zwischen den Registerbänken A, B, C bzw. D und der
Verbindung 230. Wie für
die Fachleute auf dem Gebiet selbstverständlich ist, ist die Verbindung 230 geeignet
ein Multiport-Verbindungsbus, der einen (nicht gezeigten) Adresseninkrementierer
enthält,
um die separat adressierbaren Abschnitte eines segmentierten Multiportspeichers
zu adressieren.
-
7 zeigt
ein Beispiel, wie ein Multiportspeicher als ein Teil der Datenpfad-Verbindung 230 implementiert
sein würde.
In 7 repräsentiert
der Kasten 281 eine Multiport-Registerbank mit vier separat
adressierbaren Registerbänken
A, B, C und D, wie in 6. Für die Leichtigkeit der Erklärung ist
jede Registerbank durch eine interne Adresse adressierbar, die durch
16-Bit-Intervalle getrennt sind. Die Registerbank A ist als die
Adressen 0-15 adressierbar; die Registerbank B ist als 16-31 adressierbar
usw. Wie die Daten am Datenpfad 10 ankommen, bildet das
Verbindungssystem eine funktionale Verbindung mit jeder ausgewählten Registerbank,
indem es die Adressen um den geeigneten Betrag inkrementiert, der
erforderlich ist, um die Adressen in der Ziel-Registerbank zu erreichen.
Das wird durch eine Registerbank-Ablaufsteuerung 283 erreicht,
die das geeignete Inkrement aus einem Register 285 aufruft,
das die Registerbank-Versatzwerte für die Registerbänke A, B,
C und D speichert. Die Versatzwerte werden dann zu den Addierern 287 übertragen,
die den ausgewählten
Versatzwert mit den ankommenden Datenadressen auf den Leitungen
M, N, O und P kombinieren. Die Versatzwerte sichern, wenn sie mit
den ankommenden Adresseninformationen kombiniert werden, dass nur
eine der lokalen Registerbänke
adressiert wird, wobei eine funktionale Verbindung mit dieser Registerbank
erzeugt wird. Andere geeignete funktionale Verbindungssysteme innerhalb
des Umfangs der Erfindung, wie er in den beigefügten Ansprüchen definiert ist, werden
den Fachleuten auf dem Gebiet einfallen.
-
Alternativ
kann die Verbindung 230 einen oder mehrere Multiplexer
und Demultiplexer umfassen, die die Registerbänke mit anderen Vorrichtungen
innerhalb und außerhalb
des Datenpfades in einer Weise verbinden, die im Allgemeinen unter
Bezugnahme auf die 3 und 4 veranschaulicht
und beschrieben worden ist.
-
Der
Datenpfad nach 6 enthält erste und zweite Datenprozessoren
oder ALUs, die als der Prozessor 1 300 und der Prozessor
2 302 gekennzeichnet sind. Die Datenprozessoren 300, 302 können irgendein geeigneter
Typ von Rechenprozessor sein, der Operanden in einzelnen Speicherstellen
innerhalb eines Speichers, mit dem er verbunden ist, verarbeitet.
In der Erfindung wird jeder Datenprozessor 300, 302 mit
allen Registerbänken
A-D im Datenpfad 10 sequentiell verbunden und benutzt alle
Registerbänke
A-D im Datenpfad 10 gemeinsam. Die Registerbänke werden
sequentiell mit jedem Prozessor verbunden, wie es durch den (nicht gezeigten)
externen Computercontroller angewiesen wird. Der Typ oder die Komplexität der durch
die Datenprozessoren 300, 302 ausgeführten Verarbeitung
ist eine Sache der Entwurfswahl und nicht durch die Erfindung eingeschränkt. Einer
der Prozessoren kann ein sehr einfacher Arithmetikprozessor sein,
der z. B. Zahlen addiert oder subtrahiert, während der andere ein im hohen
Grade komplexer DSP-Prozessor sein kann. Ungeachtet des Typs der
ausgeführten
Verarbeitung werden die Daten in einer Registerbank, die mit einem
der Prozessoren 300, 302 verbunden ist, in Übereinstimmung
mit dem Algorithmus und den Befehlen dieses Prozessors verar beitet.
-
In
der Ausführungsform
nach 6 ist der Prozessor 300 funktional über den
Verbindungsbus 310 und die Datenpfad-Verbindung 230 mit
den Registerbänken
A bis D verbunden. Der Prozessor 302 ist über den
Verbindungsbus 312 und die Datenpfad-Verbindung 230 funktional
mit den Registerbänken
A bis D verbunden.
-
Die
Operation des Datenpfades 10 nach 6 wird nun
unter Bezugnahme auf die Tabelle 1 beschrieben. Die Tabelle zeigt
eine Folge von Verbindungen, die hergestellt werden, um die Daten
durch die Prozessoren 300 und 302 zu verarbeiten,
wobei die Verbindungen in einer Weise beschrieben werden, die zu
der in der Tabelle nach 4 gezeigten Folge ähnlich ist.
In 6 und Tabelle 1 ist der erste Schritt in der Folge,
die Daten von einer externen Datenquelle 350 über den
Dateneingangsbus 352 über
den Bus 270 in die Registerbank A 250 zu laden. Diese Verbindung
wird durch die Datenpfad-Verbindung 230 entweder durch
das Umschalten der geeigneten Verbindungen in den Multiplexern (falls
Multiplexer verwendet werden) oder durch das Inkrementieren der
Speicheradressen der ankommenden Daten zu den Adressen, die der
Registerbank eindeutig zugeordnet sind, unter Verwendung eines geeigneten
Inkrementierers in der Verbindung 230 geschaffen. In der
Tabelle 1 ist die funktionale Verbindung zwischen den Bussen 352 und 270 durch "350/270" angegeben, wobei
sie als ein Ladeschritt durch das eingeklammerte "(Laden)" bezeichnet ist.
Dies bedeutet, dass die Daten von der externen Datenquelle 350 in
die Registerbank A geladen werden.
-
Tabelle
1 Die
Verbindungsfolge für
Fig 6
-
Der
Folgeschritt 2 lädt
die Daten in die Registerbank B 252, indem der ankommende Datenbus 352 mit
dem Bus 272 verbunden wird. Gleichzeitig wird die Registerbank
A 250 über
den Prozessorbus 310 durch die Datenpfad-Verbindung 230 mit
dem Prozessor 1 300 verbunden. Folglich ist der E/A-Bus 270 der
Registerbank A mit dem Prozessor 1 300, dem Bus 310,
verbunden, wie in der Tabelle 1 durch "270/310" angegeben ist. Im Folgeschritt 2 werden
die Daten in der Registerbank A in Übereinstimmung mit den Arithmetikprozessen des
Prozessors 1 300 verarbeitet, wie in der Tabelle 1 durch
das eingeklammerte "(Verarbeiten
1)" angegeben ist.
-
Im
nächsten
Folgeschritt 3 wird die Registerbank A funktional mit dem Prozessor
2 302 verbunden, wobei der Bus 270 über die
Datenpfad-Verbindung 230 mit dem Bus 312 verbunden
ist. Dies ist in der Tabelle 1 durch "270/312" angegeben, wobei die Verarbeitung der
Daten in der Registerbank A in Übereinstimmung mit
dem Datenprozessor 2 302 durch "(Verarbeiten 2)" angegeben ist. Gleichzeitig wird die
Registerbank B über
die Busse 270 und 310 und die Datenpfad-Verbindung 230 mit
dem Prozessor 1 verbunden, was in der Tabelle 1 als "272/310 (Verarbeiten
1)" angegeben ist.
Während
die Daten in der Registerbank A im Datenprozessor 2 verarbeitet
werden und die Daten in der Registerbank B im Datenprozessor 1 verarbeitet
werden, werden die Daten über
die Busse 352 und 274 durch die Datenpfad-Verbindung 230 in
die Registerbank C geladen. Dies ist in der Tabelle 1 durch "352/274 (Laden)" angegeben.
-
Der
nächste
Folgeschritt (Schritt 4) ist, die verarbeiteten Daten aus der Registerbank
A auszuladen. Dies wird ausgeführt,
indem der Datenbus 270 mit dem externen "Auslade"-Datenbus 370 verbunden
wird. Der Speicher 380 ist eine schematische Darstellung
des Ziels für
die Daten, die aus dem Datenpfad 10 hervorgehen, der normalerweise
der Computer-Hauptspeicher ist, wie bei 30 in 1 und 140/30 in 3 angegeben ist.
Im Folgeschritt 4 wird der E/A-Bus 270 der Registerbank
A mit dem Datenausladebus 370 funktional verbunden, wie
durch "270/370" angegeben ist. Die
eingeklammerte Funktionsangabe, die in diesem Schritt für die Registerbank
A verwendet wird, ist "(Speichern)". Gleichzeitig wird
die Registerbank B über
die Busse 272 und 312 mit dem Datenprozessor 2 302 funktional
verbunden. Außerdem
wird die Registerbank C gleichzeitig über die Busse 274/310 mit
dem Datenprozessor 1 300 funktional verbunden. Außerdem wird
die Registerbank D gleichzeitig über
die Busse 352 und 276 mit der externen Datenquelle 350 funktional
verbunden, wodurch die Daten von der externen Quelle 350 in
die Registerbank D 256 geladen werden.
-
Im
nächsten
Folgeschritt 5 wird die Registerbank A in der gleichen
Weise wie im obigen Folgeschritt 1 mit der externen Datenquelle 350 verbunden.
Die Registerbank A wird abermals funktional mit frischen Daten,
die in Übereinstimmung
mit den Folgeschritten 2 und 3 zu verarbeiten sind, geladen,
wobei danach die Daten in Übereinstimmung
mit dem Folgeschritt 4 ausgeladen werden. Gleichzeitig
mit dem Laden der Registerbank A wie im Folgeschritt 1 wird die
Registerbank B über
die Busse 272 und 370 durch die Datenpfad-Verbindung 230 mit
dem Ausladebus 370 funktional verbunden. Gleichzeitig wird
die Registerbank C über
die Busse 274 und 312 durch die Verbindung 230 mit
dem Prozessor 2 302 funktional verbunden. Gleichzeitig
wird die Registerbank D über
die Busse 276 und 310 durch die Verbindung 230 mit
dem Prozessor 1 300 funktional verbunden.
-
Die
oben beschriebene Verbindungsfolge für die Registerbänke A bis
D umfasst die Folgeschritte 1, 2, 3, 4 und 5 in der Tabelle 1. Die
Folge ist eine sich kontinuierlich wiederholende Folge von Verbindungen
für die
Registerbänke.
Jede Registerbank geht durch eine Folge von vier Schritten, nämlich Laden
(die Daten werden in das Register geladen), Verarbeiten 1 (die Daten
werden durch den Prozessor 1 300 verarbeitet), Verarbeiten
2 (die Daten werden durch den Prozessor 2 302 verarbeitet)
und Speichern (die Daten verlassen den Datenpfad über den
Bus 370). Der Folgeschritt 5 in 1 beginnt
eine Wiederholung des Ladeschritts für die Registerbank A; der Folgeschritt
6 beginnt eine Wiederholung des Ladeschritts für die Registerbank B; der Folgeschritt
7 beginnt eine Wiederholung des Ladeschritts für die Registerbank C; und der
Folgeschritt 8 beginnt eine Wiederholung des Ladeschritts für die Registerbank
D. Die Verbindungsschritte werden dann jeden vierten Schritt wiederholt,
wobei der Schritt 9 eine Wiederholung des Folgeschritts 5 ist, der
Schritt 10 ist eine Wiederholung des Folgeschritts 6 usw.
-
Der
oben beschriebene Datenpfad erlaubt jedem von mehreren Datenprozessoren,
jede von mehreren Registerbänken
gemeinsam zu benutzen, indem die Verbindungen zwischen den Datenprozessoren
und den einzelnen Registerbänken
verschoben werden. Dies minimiert die Übertragung der Blöcke der
Daten zwischen den Registerbänken
innerhalb eines Datenpfades. Stattdessen verschiebt die Erfindung
die Verbindungen zwischen den Registerbänken und den Prozessoren, indem
Steuersignale an die verschiedenen Elemente im Datenpfad geschickt
werden, der diese Verbindungen herstellt. Es ist immer schneller,
Steuersignale zu bewegen, als Daten zu bewegen, deshalb ist die
Datenpfad-Konfiguration
der Erfindung schneller als die Datenpfade des Standes der Technik,
in denen die Daten seriell durch eine Folge von Registerbänken oder
anderen Speichervorrichtungen bewegt werden.
-
Die
Erfindung ist nicht auf Datenpfade eingeschränkt, in denen die Daten durch
zwei verschiedene Datenprozessoren verarbeitet werden, wie in 6 gezeigt
ist, sondern sie kann verwendet werden, um mehrere Datenbänke durch
irgendeine Anzahl von Datenprozessoren sequentiell zu verbinden. 8 veranschaulicht schematisch
einen Datenpfad 10 gemäß der Erfindung,
der die Registerbänke
A bis Z umfasst, wobei Z irgendeine ganze Zahl darstellt, einschließlich Zahlen,
die größer als
die alphabetische Folge von A bis Z sind. Die Daten in den verschiedenen
Registerbänken
werden durch n Datenprozessoren sequentiell verarbeitet, wobei n
irgendeine ganze Zahl ist. In der bevorzugten Form der Erfindung
ist Z gleich n + 2, was bedeutet, dass die Anzahl der registrierten
Bänke um
zwei größer als
die Anzahl der Datenprozessoren in dem Datenpfad ist. Das erlaubt,
dass eine Registerbank für
das Laden der Daten in die Registerbank verwendet wird, dass eine
Registerbank für
das Ausladen der Daten aus dem Datenpfad in den Computer-Hauptspeicher
verwendet wird, und dass die verbleibenden Registerbänke für die gleichzeitige
Verarbeitung der Daten mit den n Datenprozessoren verbunden werden.
Dies ist der Fall für
die Ausführungsform
nach 6, in der n = 2 und Z = 4 gilt.
-
In
der Ausführungsform
nach 8 ist die Multiport-Datenpfadverbindung 230 entweder
ein Multiplexer-Verbindungssystem wie in 3 oder das
Adressenablaufsteuerungs-Verbindungssystem, das unter Bezugnahme
auf 7 gezeigt und beschrieben worden ist. Die Verbindung 230 verbindet
die mehreren Datenspeicherbänke
A bis Z 450, 452, 454, 456 bzw. 458.
Jede Registerbank ist über
einen Eingangs/Ausgangs-Bus 470, 472, 474, 476 bzw. 478 mit
der Verbindung 230 verbunden. Die Datenprozessoren 1 bis
n sind irgendein geeigneter Typ des Arithmetikprozessors, ungeachtet
der Komplexität
der ausgeführten
Datenverarbeitung. Der Prozessor 1 500 ist über den
Bus 510 mit der Verbindung 230 funktional verbunden;
der Prozessor 2 502 ist über den Bus 512 mit
der Verbindung 230 funktional verbunden; und der Prozessor
n 504 ist über
den Bus 514 mit der Verbindung 230 funktional
verbunden. Die Daten werden vom Äußeren des
Datenpfades 10 durch die Datenquelle 550 in die
ausgewählten
Registerbänke
geladen, was in 8 schematisch als "Laden" angegeben ist. Der
ankommende Datenbus ist 552, wobei er mit der Verbindung 230 funktional
verbunden ist. Die Daten verlassen den Datenpfad 10 über den
Bus 570 zum Computer-Hauptspeicher oder zu einem anderen
Datenziel, wie in 8 schematisch durch "Speichern" 580 angegeben
ist.
-
Die
Tabelle 2 veranschaulicht einen Abschnitt der Verbindungsfolge für die Ausführungsform
nach 8, in der bis zu n Verarbeitungsschritte unter
Verwendung von n Datenprozessoren ausgeführt werden, die mit Z Registerbän ken, wobei
Z gleich n + 2 ist, sequentiell verbunden werden. In der Tabelle
2 sind nur die Verbindungen für
die Registerbänke
A, B und C veranschaulicht, wobei es leicht selbstverständlich ist,
dass die zusätzlichen
Verbindungen mit den verbleibenden Registerbänken dem Verbindungsmuster
der ersten drei Registerbänke
folgen, wie kurz beschrieben wird.
-
Es
ist vielleicht das leichteste, die in der Tabelle 2 dargelegten
Verbindungen zu erklären,
indem die Verbindungen für
jede Registerbank beschrieben werden.
-
Tabelle
2 Die
Verbindungsfolge für
Fig 8
-
Die
Registerbank A 450 wird zuerst über
die Busse 552 und 470, die durch die Verbindung 230 funktional
verbunden sind, von der externen Datenquelle 550 geladen.
Im nächsten
Folgeschritt wird die Registerbank A durch die Busse 470 und 510 mit
dem Datenprozessor 1 500 funktional verbunden. Im nächsten Folgeschritt
wird die Registerbank A durch die Busse 470 und 512 mit
dem Datenprozessor 2 502 verbunden. Als Nächstes wird
die Registerbank A durch die Busse 470 und 512 mit
dem Prozessor 2 502 verbunden. Dann wird die Registerbank
A mit jedem Datenprozessor bis zum Datenprozessor n 504 sequentiell
verbunden, was im Schritt n + 1 durch eine Verbindung zwischen den
Bussen 470 und 514 eintritt. Der letzte Schritt
in der Verbindungsfolge für
die Registerbank A, der in der Tabelle 2 gezeigt ist, ist der Schritt
n + 2, in dem die Registerbank A mit dem Datenpfad-Ausladebus 570 verbunden
wird, wobei die Daten aus der Registerbank ausgeladen und zum Computer-Hauptspeicher
oder einen anderen Speicher, der in 8 bei 580 angegeben
ist, geschickt werden. Dann beginnt die Folge für die Registerbank A wie im
Schritt 1, in dem die Registerbank mit den Daten von der Datenquelle 550 geladen
wird. Der Folgeschritt n + 3 in der Tabelle 2 ist der Anfang des Wiederholungszyklus
für die
Registerbank A, in dem die im Schritt 1 gezeigten Verbindungen wiederholt
werden, da es der funktionale "Lade"-Schritt ist. Die
Folge wird dann für
die Registerbank A durch die Schritte Verarbeiten 1, Verarbeiten
2 usw. bis zum Speicherschritt wiederholt.
-
Die
Registerbank B wiederholt die gerade für die Registerbank A beschriebene
gleiche Folge einen Schritt später,
wobei in der zweiten Spalte der Tabelle 2 der E/A-Bus 470 durch
den E/A-Portbus 472 ersetzt ist. Ähnlich wiederholt die Registerbank
C die gleiche Folge, beginnend mit dem Folgeschritt 3, in dem die
Registerbank C durch ihren E/A-Bus 474 mit den Daten geladen
wird. Wie in der Ausführungsform
nach 6 wird jede Registerbank mit jedem Prozessor sequentiell
verbunden, wobei eine Registerbank gleichzeitig für das Laden
verwendet wird, wobei eine weitere Registerbank für das Ausladen
verwendet wird. Es gibt konzeptionell keine Grenze für die Anzahl
der Registerbänke
und der Verarbeitungsschritte, durch die der oben beschriebene Zyklus
wiederholt werden kann.
-
Das
System, um die Registerbänke
zwischen mehreren Datenprozessoren gemeinsam zu benutzen, eignet
sich leicht für
ein Verfahren der Datenverarbeitung gemäß der Erfindung. Das Verfahren
ist in den 6 und 8 durch
die Funktionswörter
schematisch veranschaulicht, die um den Umfang des Datenpfades 10 dargelegt
sind. In 6 ist der Ladenschritt durch
die Ladefunktion 350 der externen Datenquelle veranschaulicht,
die sich am linken Ende der Datenpfad-Verbindung befindet. Für jede Registerbank,
die zuerst mit den Daten geladen wird, bewegt sich das Verfahren
zum nächsten
Schritt, der den Schritt 582 des "Verarbeitens 1" ausführt, in dem die Registerbank,
die gerade geladen worden ist, in Übereinstimmung mit dem ersten
Datenprozessor 300 in 6 verarbeitet
wird. Der nächste
Schritt 584 des "Verarbeitens
2" verbindet die
Registerbank funktional mit dem Datenprozessor 2 302.
-
In
der folgenden Beschreibung werden die Schritte in dem Prozess unter
Bezugnahme auf eine einzelne Registerbank beschrieben, die als die "erste Registerbank" bezeichnet wird.
Der erste Schritt ist das Laden der Daten von der externen Datenquelle 350 in
die erste Registerbank. Bei der Bewegung von links nach rechts in 6 ist
der nächste
Schritt das funktionale Verbinden der ersten Registerbank, die gerade
mit den Daten geladen worden ist, mit einem ersten Datenprozessor,
der der Datenprozessor 1 300 in 6 ist. Die Daten
werden dann in Übereinstimmung
mit dem Datenprozessor 1 verarbeitet. Der nächste Schritt in dem Verfahren
ist das funktionale Verbinden der ersten Registerbank mit einem
zweiten Datenprozessor, dem Datenprozessor 2 302 in 6,
um die Daten darin in Übereinstimmung
mit dem zweiten Datenprozessor zu verarbeiten. Der letzte Schritt
ist das Ausladen der Daten aus der ersten Registerbank durch das
funktionale Verbinden der Registerbank mit dem externen Speicher
oder der externen Speicherung 380.
-
Vorausgesetzt,
dass im oben beschriebenen Verfahren die erste Registerbank die
Registerbank A in 6 ist, enthält das Verfahren vorzugsweise
ferner das gleichzeitige Laden und Verarbeiten einer zweiten Registerbank,
das genau der gleichen Folge folgt, aber um einen Zyklus verzögert ist.
Mit anderen Worten, die Daten in der zweiten Registerbank, der Registerbank
B in 6, werden gleichzeitig geladen, wenn die Daten in
der ersten Registerbank verarbeitet werden. Dieser Schritt ist in
der Tabelle 1 veranschaulicht, in der im Folgeschritt 2 die Registerbank
B gleichzeitig geladen wird, während
die Registerbank A durch den ersten Datenprozessor 1 verarbeitet
wird. Das Verfahren enthält
vorzugsweise ferner den Schritt des Ladens einer dritten Registerbank
mit den Daten, während
die zweite Registerbank mit dem ersten Datenprozessor funktional
verbunden wird und sich die erste Registerbank mit dem zweiten Datenprozessor
in einer funktionalen Verbindung befindet. Dies ist in der Tabelle
1 im Folgeschritt 3 veranschaulicht, in dem die Registerbank C geladen
wird, während
die Registerbank B im Datenprozessor 1 verarbeitet wird und die
Daten in der Registerbank im Datenprozessor 2 verarbeitet werden,
wobei dies alles gleichzeitig erfolgt.
-
Das
Verfahren berücksichtigt
das sequentielle Verbinden mehrerer Registerbänke mit bis zu n Datenprozessoren,
wobei n größer als
oder gleich 2 ist. Die Anzahl der Registerbänke für den effizientesten Betrieb des
Verfahrens beträgt
vorzugsweise n + 2. Jede Registerbank geht durch eine Folge von
vier Schritten, nämlich
Laden (die Daten werden in das Register geladen), Verarbeiten 1
(die Daten werden durch den Prozessor 1 300 verarbeitet),
Verarbeiten 2 (die Daten werden durch den Prozessor 2 302 verarbeitet)
und Speichern (die Daten verlassen die Datenpfad-Datei).
-
Die
Erfindung ist bei der wiederholten Verarbeitung von Datenströmen besonders
nützlich,
wie sie für die
Verarbeitung digitalisierter Video- oder Audiosignale erforderlich
ist. Es gibt viele Typen der Verarbeitung, die die Aspekte der digitalen
Signalverarbeitung (DSP) mit anderen Formen der digitalen Berechnung
kombinieren. Die DSP ist durch die wiederholte Ausführung kurzer
Schleifen von Befehlen an großen
Blöcken
der Daten gekennzeichnet. Die andere Verarbeitung wird an diesen
verarbeiteten Blöcken
der Daten oft nach der DSP-Phase der Verarbeitung ausgeführt. Einer
FFT-Routine könnte
z. B. irgendeine Folge von logischen Operationen folgen, die die
neu berechneten FFT-Koeffizienten
als Teil eines größeren Algorithmus
verwenden.
-
Ein
häufiger
Zugang ist, separate DSP-Vorrichtungen und allgemeinere CPU-Vorrichtungen zu
besitzen, die im Verlauf eines Algorithmus miteinander kommunizieren.
Diese Vorrichtungen können
große
Systeme oder integrierte Schaltungen (ICs) sein. Dieser Zugang erfordert
separate Software- und Hardware-Entwicklungssysteme und irgendeine
Form der Systemintegration, um den richtigen Betrieb zu sichern.
Es gibt deutliche Vorteile hinsichtlich einer kürzeren Entwicklungszeit und
einer einfacheren System-Hardware, in dem die effiziente Berechnung
der DSP-Algorithmen innerhalb der Beschränkungen eines Standard-CPU-Befehlssatzes
und einer Standard-CPU-Architektur ausgeführt werden kann.
-
Der
Hauptgedanke hinter der in US-A-5680641 beschriebenen Erfindung
(die als die "frühere Anmeldung" bezeichnet wird)
ist, die Idee der Register-Kontextumschaltung zu erweitern, um den
Programm-Zusatzaufwand der Lade- und Speicherbefehle in einem registerbasierten
Datenprozessor zu verringern. Dieser Hauptgedanke ist besonders
für die
DSP (die digitale Signalverarbeitung) durch einen ansonsten universellen Datenprozessor
geeignet, bei der kleine wiederholte Schleifen der Berechnung über große Blöcke der
Daten wiederholt werden. Die Daten werden in der richtigen Reihenfolge
für die
Berechnung durch die Holeinheit geholt und in einer Registerbank
deponiert, wobei diese Bank dann mit dem tatsächlichen Datenverarbeitungselement
funktional verbunden wird. Beim Abschluss eines Zyklus der Verarbeitung
wird dann dieselbe Registerbank mit einer Speichereinheit funktional
verbunden, die die Ergebnisse in der richtigen Reihenfolge in den Hauptdatenspeicher
schreibt. In der früheren
Anmeldung gibt es optimal drei Registerbänke, die effektiv zwischen
den Hol-, Verarbeitungs- und Speicherfunktionen rotieren. Während eine
Registerbank mit den geholten Daten gefüllt wird, werden die Daten
einer weiteren Registerbank verarbeitet, während die dritte Registerbank die
fertiggestellten Ergebnisse in den Speicher schreibt. Wenn die Registerbänke als
A, B und C bekannt sind, ist die Rotationsfolge:
und so
weiter. In dieser Weise wird der Zusatzaufwand der Lade- und Speicheroperationen
vor dem Datenprozessor verborgen. Weil viele Typen der Datenprozessoren
ihre Operationen nur an Daten in einer Registerdatei (ohne Speicherbezugnahmen)
ausführen,
ist die Verringerung dieses Zusatzaufwands eine wichtige Überlegung.
-
Die
Grundgedanken der Patentanmeldung sind, dass der Gedanke der rotierenden
Registerbank anstatt nur eines Prozessors viele Datenprozessoren
und die zugeordneten Datenhol- und -speichereinheiten umfassen kann,
dass diese Datenprozessoren vom selben Typ sein können, aber
nicht sein müssen,
und dass mehrere Formen der Multiport-Datenpfadverbindung möglich sind.
Zwei derartige Formen sind diskrete Registerbänke und eine Multiplexierungsanordnung,
um jede Registerbank zum geeigneten Zeitpunkt mit ihrem entsprechenden
Prozessor funktional zu verbinden, oder zweitens eine wahre Multiport-Registerdatei, in
der die funktionale Verbindung in der Struktur der Speicher selbst
implizit ist und die Änderung
der Registerbankverbindung ausgeführt wird, indem verschiedene
Adressenversatzwerte für
jeden Registerbankabschnitt der Multiport-Registerdatei eingeführt werden.
Es gibt eine Anzahl von Vorteilen, ein System in dieser Weise zu
organisieren:
- 1. Der Ladezusatzaufwand und
der Speicherzusatzaufwand sind wie vorher minimiert.
- 2. Die Zwischenergebnisse der Verarbeitung werden leicht zur
nächsten
Stufe der Berechnung in einem rechenfertigen Format übertragen.
Es wird angemerkt, dass die Verarbeitungselemente nicht vom selben Typ
sein müssen,
obwohl sie es sein können.
Wenn die Verarbeitungselemente vom selben Typ sind, dann kann eine
einzelne vereinheitlichte Software-Entwicklungsumgebung verwendet
werden, um den Code für jedes
Verarbeitungselement für
seine Stufe der Gesamtberechnung zu entwickeln. Die Leichtigkeit
der Codeentwicklung ist eine wichtige Überlegung in Systemen, die
mehrere Verarbeitungselemente besitzen. Es ist außerdem möglich, dass
die Verarbeitungselemente verschiedene Typen sind, die für diese
Stufe der Gesamtberechnung optimiert sind. Ein Datenpfad-Verarbeitungselement
könnte
z. B. DSP-ähnlich
sein, wobei es für
die effiziente Berechnung von Multiplikations- und Multiplikations-Akkumulations-Operationen optimiert
ist, während
ein weiteres Datenpfad-Verarbeitungselement für die logischen Operationen
an den Ergebnissen des vorhergehenden Schrittes optimiert sein könnte.
- 3. Die niedrigere Leistung und die höhere Geschwindigkeit als andere
Zugänge.
Obwohl das Gesamtsystem eine Art Pipeline umfasst, besitzt das vorgeschlagene
System gegenüber
herkömmlichen
Pipelineschemata einen Vorteil, weil die Übermittlung der Ergebnisse
von einer Stufe der Berechnung zu einer weiteren nicht die tatsächliche
Bewegung irgendwelcher Daten erfordert. Anstatt dass die Datenelemente
einzeln von einem Register oder einer Registerbank zum oder zur
anderen übertragen
werden, besitzt die ganze Registerbank ihre funktionalen Verbindungen,
die zum geeigneten Zeitpunkt in der Gesamtberechnung zum nächsten Verarbeitungselement
in der Folge umgeschaltet werden. Das Ändern der funktio nalen Verbindung
einer Registerbank ist eine viel schnellere Operation mit niedrigerer
Leistung als das tatsächliche Bewegen
der Daten in der Registerbank zu einer anderen Speicherstelle oder
zu einem anderen Satz von Speicherstellen.
-
Wie
vorausgehend erwähnt
worden ist, kann das Umschalten der funktionalen Verbindungen zwischen
den Registerbänken
und den Datenpfadelementen in wenigstens zwei Arten ausgeführt werden:
diskrete Registerbänke,
deren Eingänge
und Ausgänge
durch Multiplexer oder einen ähnlichen
Datenweiterleitungsschalter umgeschaltet werden, um eine Verbindung
mit dem geeigneten Datenpfad-Verarbeitungselement herzustellen,
oder das Einbetten aller Registerbänke in eine einzelne Multiport-Registerdatei
mit separaten Eingangs- und Ausgangsports, die mit jedem Datenpfad-Verarbeitungselement
verbunden sind. In diesem zweiten Fall sind die physikalischen Verbindungen
mit jedem Datenpfad-Verarbeitungselement fest, aber der Zugriff
auf jede Registerbank wird durch das Ändern der Adressenversatzwerte
an jedem Port ausgeführt.