DE69826404T2 - Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen - Google Patents

Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen Download PDF

Info

Publication number
DE69826404T2
DE69826404T2 DE69826404T DE69826404T DE69826404T2 DE 69826404 T2 DE69826404 T2 DE 69826404T2 DE 69826404 T DE69826404 T DE 69826404T DE 69826404 T DE69826404 T DE 69826404T DE 69826404 T2 DE69826404 T2 DE 69826404T2
Authority
DE
Germany
Prior art keywords
data
register
register bank
bank
banks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69826404T
Other languages
English (en)
Other versions
DE69826404D1 (de
Inventor
Steven B. Sidman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Sharp Microelectronics Technology Inc
Original Assignee
Sharp Corp
Sharp Microelectronics Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp, Sharp Microelectronics Technology Inc filed Critical Sharp Corp
Publication of DE69826404D1 publication Critical patent/DE69826404D1/de
Application granted granted Critical
Publication of DE69826404T2 publication Critical patent/DE69826404T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Description

  • 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
    Figure 00190001
  • 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
    Figure 00230001
  • 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:
    Figure 00270001
    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.

Claims (10)

  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.
DE69826404T 1997-10-20 1998-10-20 Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen Expired - Fee Related DE69826404T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US954541 1997-10-20
US08/954,541 US6029242A (en) 1995-08-16 1997-10-20 Data processing system using a shared register bank and a plurality of processors

Publications (2)

Publication Number Publication Date
DE69826404D1 DE69826404D1 (de) 2004-10-28
DE69826404T2 true DE69826404T2 (de) 2005-09-29

Family

ID=25495580

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69826404T Expired - Fee Related DE69826404T2 (de) 1997-10-20 1998-10-20 Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen

Country Status (5)

Country Link
US (1) US6029242A (de)
EP (1) EP0911725B1 (de)
JP (1) JPH11212786A (de)
DE (1) DE69826404T2 (de)
TW (1) TW499639B (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1165840A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
US6212604B1 (en) 1998-12-03 2001-04-03 Sun Microsystems, Inc. Shared instruction cache for multiple processors
US7318090B1 (en) * 1999-10-20 2008-01-08 Sony Corporation Method for utilizing concurrent context switching to support isochronous processes
US6775752B1 (en) * 2000-02-21 2004-08-10 Hewlett-Packard Development Company, L.P. System and method for efficiently updating a fully associative array
JP2002108837A (ja) * 2000-09-29 2002-04-12 Nec Corp 計算機システムとその計算制御方法
CN1255721C (zh) * 2000-12-07 2006-05-10 皇家菲利浦电子有限公司 数字信号处理设备
US7117346B2 (en) * 2002-05-31 2006-10-03 Freescale Semiconductor, Inc. Data processing system having multiple register contexts and method therefor
JP3784766B2 (ja) * 2002-11-01 2006-06-14 株式会社半導体理工学研究センター 多ポート統合キャッシュ
US20040098568A1 (en) * 2002-11-18 2004-05-20 Nguyen Hung T. Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method
WO2005020077A1 (en) * 2003-08-13 2005-03-03 Thomson Licensing S.A. Dual bank shared data ram for efficient pipelined video and data processing
US8024551B2 (en) * 2005-10-26 2011-09-20 Analog Devices, Inc. Pipelined digital signal processor
US8285972B2 (en) * 2005-10-26 2012-10-09 Analog Devices, Inc. Lookup table addressing system and method
US7600081B2 (en) * 2006-01-18 2009-10-06 Marvell World Trade Ltd. Processor architecture having multi-ported memory
US7882284B2 (en) * 2007-03-26 2011-02-01 Analog Devices, Inc. Compute unit with an internal bit FIFO circuit
US9020146B1 (en) * 2007-09-18 2015-04-28 Rockwell Collins, Inc. Algorithm agile programmable cryptographic processor
US8301990B2 (en) * 2007-09-27 2012-10-30 Analog Devices, Inc. Programmable compute unit with internal register and bit FIFO for executing Viterbi code
US8825926B2 (en) * 2009-04-13 2014-09-02 Microchip Technology Incorporated Processor with assignable general purpose register set
US9367462B2 (en) 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
US8677150B2 (en) * 2012-02-01 2014-03-18 Intel Mobile Communications GmbH Low-power multi-standard cryptography processing units with common flip-flop/register banks
US20130275699A1 (en) * 2012-03-23 2013-10-17 Hicamp Systems, Inc. Special memory access path with segment-offset addressing
DE102014111305A1 (de) * 2014-08-07 2016-02-11 Mikro Pahlawan Prozessor-Modell, das ein einziges großes, lineares Register verwendet, mit FIFO-basierten I/O-Ports unterstützenden neuen Interface-Signalen und unterbrechungsgesteuerten Bus-Transfers, die DMA, Brücken und einen externen I/O-Bus eliminieren
GB2531058A (en) * 2014-10-10 2016-04-13 Aptcore Ltd Signal processing apparatus
EP3232321A1 (de) * 2016-04-12 2017-10-18 AptCore Ltd Signalverarbeitungsvorrichtung

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4630230A (en) * 1983-04-25 1986-12-16 Cray Research, Inc. Solid state storage device
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US5163132A (en) * 1987-09-24 1992-11-10 Ncr Corporation Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device
EP0814411A3 (de) * 1988-06-07 1998-03-04 Fujitsu Limited Vektordatenverarbeitungsvorrichtung
US5222223A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
US5185876A (en) * 1990-03-14 1993-02-09 Micro Technology, Inc. Buffering system for dynamically providing data to multiple storage elements
US5388217A (en) * 1991-12-13 1995-02-07 Cray Research, Inc. Distributing system for multi-processor input and output using channel adapters
US5418911A (en) * 1992-06-09 1995-05-23 Intel Corporation Data path switch method and apparatus that provides capacitive load isolation
US5507000A (en) * 1994-09-26 1996-04-09 Bull Hn Information Systems Inc. Sharing of register stack by two execution units in a central processor
US5680641A (en) * 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5787304A (en) * 1996-02-05 1998-07-28 International Business Machines Corporation Multipath I/O storage systems with multipath I/O request mechanisms
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor

Also Published As

Publication number Publication date
DE69826404D1 (de) 2004-10-28
JPH11212786A (ja) 1999-08-06
US6029242A (en) 2000-02-22
EP0911725A3 (de) 1999-11-17
EP0911725B1 (de) 2004-09-22
TW499639B (en) 2002-08-21
EP0911725A2 (de) 1999-04-28

Similar Documents

Publication Publication Date Title
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69824193T2 (de) Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
EP0875031B1 (de) Prozessor zur bildverarbeitung
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE3116100C2 (de) Datenverarbeitungseinheit
DE2837852C2 (de) Prozessor zum gleichzeitigen Ermitteln und Bereitstellen zweier Adressen von Befehls- und/oder Datenwortregistern eines bereichsweise adressierbaren Hauptspeichers
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE69635881T2 (de) VLIW-Befehlsprozessor mit variabler Wortlänge
DE2714805C2 (de)
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE2322674C3 (de) Mikroprogramm-Steuereinrichtung
DE60316774T2 (de) Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE3210816A1 (de) Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE3933171A1 (de) Einzelchip-prozessor fuer komplexe gleitkommazahlen
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE4010119A1 (de) Anordnung und verfahren zur umordnung eines speicherformats in einem mikroprozessor
DE2715073A1 (de) Mikroprogrammierte rechner-steuervorrichtung
DE3114921C2 (de) Mikroprogramm-Speicheranordnung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee