Warning: fopen(111data/log202008051617.log): failed to open stream: No space left on device in /home/pde321/public_html/header.php on line 107

Warning: flock() expects parameter 1 to be resource, boolean given in /home/pde321/public_html/header.php on line 108

Warning: fclose() expects parameter 1 to be resource, boolean given in /home/pde321/public_html/header.php on line 113
Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen - Dokument DE69826404T2
 
PatentDe  


Dokumentenidentifikation DE69826404T2 29.09.2005
EP-Veröffentlichungsnummer 0000911725
Titel Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
Anmelder Sharp K.K., Osaka, JP;
Sharp Microeletronics Technology, Inc., Camas, Wash., US
Erfinder Sidman, Steven B., Vancouver, US
Vertreter Müller - Hoffmann & Partner Patentanwälte, 81667 München
DE-Aktenzeichen 69826404
Vertragsstaaten DE, FR, GB
Sprache des Dokument EN
EP-Anmeldetag 20.10.1998
EP-Aktenzeichen 983085762
EP-Offenlegungsdatum 28.04.1999
EP date of grant 22.09.2004
Veröffentlichungstag im Patentblatt 29.09.2005
IPC-Hauptklasse G06F 9/38
IPC-Nebenklasse G06F 9/30   

Beschreibung[de]

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 erforderlichen 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 Multiplexer 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 gesteuert.

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 Verarbeitungszeit 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 "Registerbank 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 verarbeitet.

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änken, 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 funktionalen 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.


Anspruch[de]
  1. Datenpfad für registerbasierte Datenverarbeitung, wobei der Datenpfad mit externen Datenquellen und -zielen und mit einem externen Controller zum Steuern des Datenpfads funktional verbunden ist, wobei der Datenpfad enthält:

    mehrere Datenspeicher-Registerbänke, wovon jede einen oder mehrere Eingangs/Ausgangs-Ports besitzt, über die funktionale Verbindungen mit den Registerbänken geschaffen werden;

    mehrere Datenprozessoren zum Verarbeiten von Daten in einer oder in mehreren Datenspeicher-Registerbänken, wenn sie mit einem Datenprozessor funktional verbunden sind;

    ein Datenpfad-Verbindungssystem, um die Registerbänke mit ausgewählten Vorrichtungen innerhalb und außerhalb des Datenpfades, der die Datenprozessoren in dem Datenpfad und die Datenquellen und -ziele außerhalb des Datenpfads umfasst, funktional zu verbinden; und

    einen Verbindungscontroller, der Steuersignale bereitstellt, die jede Registerbank mit einer Folge ausgewählter Vorrichtungen funktional verbinden, wobei 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) funktionales Verbinden der Registerbank mit einem Datenziel, um die Daten aus der Registerbank zum Datenziel auszuladen;

    wobei der Verbindungscontroller eine oder mehrere weitere Registerbänke mit den ausgewählten Vorrichtungen in der Folge funktional verbindet, wodurch die Daten in jeder Registerbank durch eine Folge von Datenprozessoren verarbeitet werden.
  2. Datenpfad für registerbasierte Datenverarbeitung nach Anspruch 1, bei dem die mehreren Datenspeicher-Registerbänke ein Multiportregister enthalten, das mehrere Eingangs/Ausgangs-Ports aufweist, und jede Registerbank in dem Datenpfad ein separat adressierbarer Abschnitt des Multiportregisters ist.
  3. Datenpfad für registerbasierte Datenverarbeitung nach Anspruch 2, bei dem das Datenpfad-Verbindungssystem funktionale Verbindungen zwischen den Eingangs/Ausgangs-Ports des Multiportregisters, den Datenprozessoren und den externen Datenquellen und -zielen enthält und der Verbindungscontroller einen Adresseninkrementierer enthält, um Adressen bereitzustellen, die den separat adressierbaren Abschnitten des Multiportregisters entsprechen, so dass jede Registerbank mit den ausgewählten Vorrichtungen in der Folge funktional verbunden wird.
  4. Datenpfad für registerbasierte Datenverarbeitung nach Anspruch 1, bei dem die mehreren Datenprozessoren n Prozessoren enthalten und die Folge ausgewählter Vorrichtungen, mit denen jede Registerbank durch den Verbindungscontroller funktional verbunden wird, nach den Verbindungen a), b) und c) und vor der Verbindung d) das funktionale Verbinden der Registerbank mit weiteren Datenprozessoren der Reihe nach mit bis zu n Datenprozessoren enthält, um Daten in Übereinstimmung mit jedem der Datenprozessoren zu verarbeiten.
  5. Datenpfad für registerbasierte Datenverarbeitung nach Anspruch 4, bei dem die Anzahl von Datenspeicher-Registerbänken wenigstens n + 2 Registerbänke ist, wobei wenigstens eine Registerbank mit einer Datenquelle in Übereinstimmung mit dem Folgeschritt a) verbunden werden kann, und eine Registerbank mit einem Datenziel in Übereinstimmung mit dem Folgeschritt d) verbunden werden kann, während andere Registerbänke mit n Datenprozessoren verbunden werden können.
  6. Datenpfad für registerbasierte Datenverarbeitung nach Anspruch 1, bei dem das Datenpfadverbindungssystem ein Multiplexersystem enthält, das durch den Verbindungscontroller gesteuert wird, um die Eingangs/Ausgangs-Ports der Registerbänke wahlweise mit der Folge ausgewählter Vorrichtungen zu verbinden.
  7. Datenverarbeitungsverfahren für die Verwendung in einem Datenpfad einer registerbasierten CPU, wobei der Datenpfad versehen ist mit mehreren Datenspeicher-Registerbänken, wovon jede einen oder mehrere Eingangs/Ausgangs-Ports besitzt, über die funktionale Verbindungen mit den Registerbänken geschaffen werden, mehreren Datenprozessoren zum Verarbeiten von Daten und einem Datenpfadverbindungssystem zum Schaffen funktionaler Verbindungen zwischen den Registerbänken und den Datenprozessoren, wobei das Verfahren enthält:

    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.
  8. Verfahren nach Anspruch 7, bei dem eine zweite Registerbank mit Daten geladen wird, während der Schritt des funktionalen Verbindens der ersten Registerbank mit einem ersten Datenprozessor ausgeführt wird, wobei die Daten in der zweiten Registerbank gleichzeitig mit der Verarbeitung der Daten in der zweiten Registerbank in die zweite Registerbank geladen werden.
  9. Verfahren nach Anspruch 8, bei dem Daten in eine dritte Registerbank geladen werden, während die zweite Registerbank mit dem ersten Datenprozessor funktional verbunden ist und die erste Registerbank mit dem zweiten Datenprozessor funktional verbunden ist, wobei eine Registerbank mit Daten geladen wird, während die andere Registerbank in Übereinstimmung mit dem ersten Datenprozessor verarbeitet wird und gleichzeitig eine nochmals weitere Registerbank in Übereinstimmung mit dem zweiten Datenprozessor verarbeitet wird.
  10. Verfahren nach Anspruch 7, bei dem die erste Registerbank sequentiell mit bis zu n Datenprozessoren funktional verbunden ist, wobei n größer oder gleich 2 ist.
Es folgen 8 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com