DE102010005431A1 - Datenbewegungsprozessor - Google Patents

Datenbewegungsprozessor Download PDF

Info

Publication number
DE102010005431A1
DE102010005431A1 DE102010005431A DE102010005431A DE102010005431A1 DE 102010005431 A1 DE102010005431 A1 DE 102010005431A1 DE 102010005431 A DE102010005431 A DE 102010005431A DE 102010005431 A DE102010005431 A DE 102010005431A DE 102010005431 A1 DE102010005431 A1 DE 102010005431A1
Authority
DE
Germany
Prior art keywords
data
address
stack
multipurpose
memory
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.)
Ceased
Application number
DE102010005431A
Other languages
English (en)
Inventor
Ulf Nordqvist
Siegmar Koeppe
Jinan Lin
Stefan Maier
Xiaoning Nie
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.)
Intel Deutschland GmbH
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102010005431A1 publication Critical patent/DE102010005431A1/de
Ceased 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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Abstract

Es werden hier ein System und ein Verfahren zur Verarbeitung von Daten offenbart. In einem Ausführungsbeispiel umfasst ein Datenbewegungsprozessor einen Codespeicher, der mit einer Codeabrufschaltung gekoppelt ist, und eine Decodierschaltung, die mit der Codeabrufschaltung gekoppelt ist. Ein Adressenstapelspeicher ist mit der Decodierschaltung gekoppelt und ist so konfiguriert, dass er Adressdaten speichert. Ein Mehrzweckstapelspeicher ist mit der Decodierschaltung gekoppelt und ist so konfiguriert, dass er andere Daten speichert. Der Datenbewegungsprozessor verwendet Daten aus dem Mehrzweckstapelspeicher, um Berechnungen durchzuführen. Der Datenbewegungsprozessor verwendet Adressdaten aus dem Adressenstapelspeicher, um Quell- und Zielspeicherplätze zu identifizieren. Die Adressdaten können verwendet werden, um eine Adressenleitung eines Speichers während einer Lese- oder Schreiboperation anzusteuern. Der Adressenstapelspeicher und der Mehrzweckstapelspeicher werden separat unter Verwendung eines Bytecodes gesteuert.

Description

  • Die vorliegende Erfindung betrifft allgemein ein System und ein Verfahren zum Bewegen von Daten in einem programmierbaren Datenbewegungsprozessor (DMP; data moving processor) und insbesondere einen DMP, der Bytecode benutzt und eine auf Stapelspeichern basierende Architektur integriert, die separate Mehrzweckstapelspeicher und Adressenstapelspeicher aufweist.
  • In Breitbandkommunikationssystemen gehört das Bewegen von Daten zwischen Prozessoren, Speicherplätzen und Ports zu den kritischsten Aufgaben. Typischerweise transferiert ein Modem-Empfänger Daten von einem empfangenden FIFO zu einer Speicherspeicherung, Koprozessoren, wie etwa einem Prüfer für eine zyklische Redundanzprüfung (CRC; cyclic redundancy check), und Bitausrichtungsschaltungen. Die Daten können ferner zu einem Hostprozessor, einer Rückwandplatinen- bzw. Backplane-Schnittstelle oder zu einem anderen Ziel transferiert werden. In dem Falle eines Modem-Senderabschnitts werden die Daten zwischen denselben Bauelementen in der umgekehrten Richtung transferiert. Die Datenbewegungsfunktion ist einer der größten Benutzer der Zentraleinheit CPU in Hochgeschwindigkeits-Modems.
  • 1 veranschaulicht eine typische Verteilung von CPU-Zyklen 100 für ein Modem, das das Kommunikationsprotokoll High-Speed Downlink Packet Access (HSDPA) bereitstellt. Das Schaubild 100 veranschaulicht relative Beträge von Verarbeitungszeit, die für jede der Funktionen in der Liste 101 benötigt wird. Wie in 1 gezeigt ist, machen die Datenhandhabungsfunktionen wie etwa Datenkopieroperationen 102, Datenspeicherungsoperationen 103 und Speicherzuweisungsfunktionen 104 beinahe drei Viertel der CPU-Zyklen aus. Hingegen sind die Funkverbindungskontroll-(RLC; radio link control)-Paketdateneinheit-(PDU; packet data unit)-Zuordnung 105, die RLC-Header-Decodierung 106 und andere Datenverarbeitungsoperationen 107 nur für etwa ein Viertel der CPU-Zyklen verantwortlich.
  • Zur Steigerung der Datentransferraten werden die Datenbewegungsfunktionen bis heute nach dem Stand der Technik in festverdrahteten Schaltungen implementiert. So können zum Beispiel dedizierte Datenbewegungsbeschleuniger in VDSL- und HSDPA-Chips verwendet werden. Diese Beschleuniger sind auf bestimmte Aufgaben – d. h., VDSL- oder HSDPA-Anwendungen – spezialisiert und weisen eine begrenzte Konfigurierbarkeit auf. Als eine Folge davon können bekannte Datenbewegungsbeschleuniger nicht mit anderen Protokollen oder in anderen Kontext wiederverwendet werden. Ein beträchtlicher Betrag an Zeit und Anstrengung sind für die Gestaltung und Verifikation der festverdrahteten Datenbewegungsbeschleuniger-Blöcke bei jeder Generierung der Chips erforderlich. Außerdem sind Weiterentwicklungen (d. h., spätere Versionen) von Protokollstandards in einem bereits existierenden Datenbewegungschip, nachdem er konstruiert worden ist, schwierig zu implementieren oder können darin überhaupt nicht implementiert werden.
  • Die Standardlösung für den Datentransfer ist ein Direktspeicherzugriff-(DMA; direct memory access)-Kontroller, der für die Verwendung beim Bewegen von Daten zwischen einer CPU, einem Speicher und Peripheriegeräten wohl bekannt ist. Die Grundfunktion eines DMA-Kontrollers liegt darin, eine Sequenz von Daten von einer Quelladresse zu einer Zieladresse zu bewegen. Die Host-CPU konfiguriert die DMA-Steuerregister normalerweise mit relevanten Parametern, wie zum Beispiel der Quelladresse, der Zieladresse und der Anzahl von Worten, die transferiert werden soll, und ruft die Ausführungsstände aus den Statusregistern ab.
  • Noch weiterentwickelte bzw. verbesserte DMAs, wie etwa der ARM PrimeCell DMA Controller (PL080), können durch eine verkettete Liste von Deskriptoren mit einer vordefinierten Listenstruktur arbeiten. Diese DMA-Kontroller setzen die Statusregister so, dass sie die Zustände IDLE (Ruhe), RUN (Betrieb) und ERROR (Fehler) anzeigen und Interrupts (Unterbrechungen) an den Hostprozessor im Falle der Beendigung oder von Fehlerzuständen senden. Im Allgemeinen stellt ein DMA-Kontroller einfache Beschleunigungsfunktionen bereit und stützt sich auf die Intelligenz des Hostkontrollers. Die Host-CPU wird häufig für Datentransfers bei hoher Bandbreite unterbrochen, was die Leistung der CPU für andere Aufgaben wesentlich verschlechtert. Selbst wenn der Hostprozessor die Fähigkeit besitzt, eine Unterbrechungslatenzzeit zu verbergen, indem er zum Beispiel das Multithreading benutzt, müssen die Konfigurationsparameter sehr oft aktualisiert werden, wie zum Beispiel für jeden Datenrahmen, was eine weitere Leistungsverminderung der Host-CPU verursacht.
  • Diese und andere Probleme werden durch bevorzugte Ausführungsbeispiele der vorliegenden Erfindung im Allgemeinen gelöst oder umgangen, und im Allgemeinen werden durch die bevorzugten Ausführungsbeispiele der vorliegenden Erfindung technische Vorteile erzielt, wobei die Erfindung einen auf Stapelspeichern basierenden Datenbewegungsprozessor (DMP) bereitstellt, der eine sehr kompakte Codegröße ermöglicht. Ausführungsbeispiele der vorliegenden Erfindung stellen sowohl einen Mehrzweckdatenstapelspeicher als auch einen separaten Adressenstapelspeicher bereit. Der auf Stapelspeichern basierende DMP weist dedizierte Stapelspeicher auf, die eine separate Speicherung von Adressdaten erlauben und für direkte Datenbewegungen zwischen Speicherplätzen, Ports und Koprozessoren sorgen.
  • Gemäß einem Aspekt der Erfindung wird ein Datenbewegungsprozessor zur Verfügung gestellt, der Folgendes umfasst:
    eine Codespeicherschnittstelle, die mit einer Codeabrufschaltung gekoppelt ist;
    eine Decodierschaltung, die mit der Codeabrufschaltung gekoppelt ist;
    einen Adressenstapelspeicher, der mit der Decodierschaltung gekoppelt ist und so konfiguriert ist, dass er Adressdaten speichert; und
    einen Mehrzweckstapelspeicher, der mit der Decodierschaltung gekoppelt ist und so konfiguriert ist, dass er andere Daten speichert, wobei der Mehrzweckstapelspeicher und der Adressenstapelspeicher parallel arbeiten.
  • Vorteilhaft können die Adressdaten einen bestimmten Speicherplatz identifizieren.
  • Vorteilhaft werden die Adressdaten verwendet, um eine Speicheradressenleitung während einer Speicherlese- oder -schreiboperation anzusteuern.
  • Vorteilhaft ist der Adressenstapelspeicher mit einem Adressenport eines Busses verbunden.
  • Vorteilhaft ist der Adressenstapelspeicher mit einer Adressenleitung eines Speichers verbunden.
  • Vorteilhaft werden die anderen Daten verwendet, um Berechnungen innerhalb des Datenbewegungsprozessors durchzuführen.
  • Vorteilhaft werden der Adressenstapelspeicher und der Mehrzweckstapelspeicher separat unter Verwendung eines Bytecodes gesteuert.
  • Vorteilhaft enthält jeder Befehl ein oder mehrere Bytes.
  • Vorteilhaft werden der Adressenstapelspeicher und der Mehrzweckstapelspeicher separat unter Verwendung eines Bytecodes gesteuert.
  • Vorteilhaft umfasst der Datenbewegungsprozessor des Weiteren Folgendes:
    eine Koprozessorschnittstelle.
  • Vorteilhaft umfasst der Datenbewegungsprozessor des Weiteren Folgendes:
    eine Vielzahl von Koprozessoren, die mit der Koprozessorschnittstelle gekoppelt sind, wobei jedem Koprozessor ein eindeutiger Identifikator zugewiesen ist.
  • Vorteilhaft umfasst der Datenbewegungsprozessor des Weiteren Folgendes:
    eine Portschnittstelle.
  • Vorteilhaft umfasst der Datenbewegungsprozessor des Weiteren Folgendes:
    eine Vielzahl von Ports, die mit der Portschnittstelle gekoppelt sind,
    wobei jedem Port ein eindeutiger Identifikator zugewiesen ist.
  • Vorteilhaft umfasst der Bytecode Push-(Einspeicher-)- und Pop-(Ausspeicher-)-Befehle, um Daten zwischen dem Mehrzweckstapelspeicher und einem Koprozessor zu bewegen.
  • Vorteilhaft umfasst der Bytecode Push- und Pop-Befehle, um Daten zwischen dem Mehrzweckstapelspeicher und einem Port zu bewegen.
  • Vorteilhaft umfasst der Bytecode Push- und Pop-Befehle, um Daten zwischen dem Mehrzweckstapelspeicher und einem Speicher zu bewegen.
  • Vorteilhaft umfasst der Datenbewegungsprozessor des Weiteren Folgendes:
    eine Adressenberechnungseinheit, die mit dem Adressenstapelspeicher gekoppelt ist.
  • Vorteilhaft umfasst der Datenbewegungsprozessor des Weiteren Folgendes:
    eine arithmetische Logikeinheit, die mit dem Mehrzweckstapelspeicher gekoppelt ist.
  • Vorteilhaft umfasst der Datenbewegungsprozessor des Weiteren Folgendes:
    eine Verzweigungs- und Schleifenschaltung, die mit dem Adressenstapelspeicher und dem Mehrzweckstapelspeicher gekoppelt ist, wobei die Verzweigungs- und Schleifenschaltung aktualisierte Adressdaten für die Verwendung bei der Bewegung von Daten von dem Mehrzweckstapelspeicher zu einer Zieladresse bereitstellt.
  • Vorteilhaft werden die aktualisierten Adressdaten durch das Inkrementieren oder Dekrementieren eines Zeigers auf einen Platz in einem Speicher berechnet.
  • Vorteilhaft wird ein festgesetzter Bereich von Speicherplätzen zugewiesen, wobei die Adressdaten in einer zirkulären Art und Weise aktualisiert werden, so dass die Adressdaten auf einen ersten Platz in dem Speicherbereich zeigen, nachdem sie auf einen letzten Platz in dem Speicherbereich gezeigt haben.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren zur Verarbeitung von Daten zur Verfügung gestellt, das Folgendes umfasst:
    Laden eines Programmcodes aus einem Codespeicher;
    Decodieren von Befehlen aus dem Programmcode;
    Laden von Adressdaten in einen Adressenstapelspeicher;
    Laden von anderen Daten in einen Mehrzweckstapelspeicher parallel zu dem Laden der Adressdaten in den Adressenstapelspeicher; und
    Bewegen von Daten von dem Mehrzweckstapelspeicher zu einer Zieladresse, die von dem Adressenstapelspeicher identifiziert worden ist.
  • Vorteilhaft umfasst das Verfahren des Weiteren Folgendes:
    Laden von Bytecodebefehlen, um den Adressenstapelspeicher und den Mehrzweckstapelspeicher zu steuern.
  • Vorteilhaft umfasst der Bytecode Push- und Pop-Befehle, um Daten zwischen dem Mehrzweckstapelspeicher und einem Koprozessor, einem Port oder einer Speicherschnittstelle zu bewegen.
  • Vorteilhaft umfasst das Verfahren des Weiteren Folgendes:
    Laden von Daten aus dem Mehrzweckstapelspeicher in eine arithmetische Logikeinheit (ALU) zur Verarbeitung.
  • Vorteilhaft umfasst das Verfahren des Weiteren Folgendes:
    Laden der Adressdaten aus dem Adressenstapelspeicher in eine Adressenberechnungseinheit zur Verarbeitung.
  • Vorteilhaft umfasst das Verfahren des Weiteren Folgendes:
    Steuern einer sequentiellen Bewegung von Daten unter Verwendung einer Verzweigungs- und Schleifenschaltung.
  • Vorteilhaft entspricht die Zieladresse einem Speicher, einem Port oder einem Koprozessor.
  • Die intelligente DMP-Maschine, die hier offenbart wird, ist flexibler als festverdrahtete Maschinen und ist im Vergleich zu Systemen, die RISC CPUs verwenden, viel effizienter. Ausführungsbeispiele des DMP stellen eine programmierbare Verarbeitungsreihenfolge sowie eine programmierbare Quelle und ein programmierbares Ziel bereit und erlauben es dem Benutzer, weitere Operationen bezüglich der Daten zu programmieren. Außerdem sehen die Ausführungsbeispiele der Erfindung die Verwendung eines sehr kompakten Codes vor, da keine Notwendigkeit besteht, Registerdateiadressen zu definieren. Anders als bekannte DMA-Kontroller muss der hier offenbarte DMP keine Registeradressen identifizieren, und deshalb werden Registeradressbits eliminiert, wodurch eine kleinere Codegröße gestattet wird. Die einfachere Hardware und die spezialisierten Datenbewegungsbefehle sorgen für eine höhere Leistung in dem intelligenten DMP im Vergleich zu traditionellen DMA-Kontrollern.
  • In Übereinstimmung mit einem Ausführungsbeispiel der Erfindung umfasst ein Datenbewegungsprozessor eine Codespeicherschnittstelle, die mit einer Codeabrufschaltung gekoppelt ist, und eine Decodierschaltung, die mit der Codeabrufschaltung gekoppelt ist. Ein Adressenstapelspeicher ist mit der Decodierschaltung gekoppelt und ist so konfiguriert, dass er Adressdaten speichert, und ein Mehrzweckstapelspeicher ist mit der Decodierschaltung gekoppelt und ist so konfiguriert, dass er andere Daten speichert. Die Adressdaten identifizieren einen bestimmten Speicherplatz und können dazu verwendet werden, eine Speicheradressenleitung während einer Speicherschreib- oder -leseoperation anzusteuern. Der Adressenstapelspeicher kann mit einem Adressenport eines Busses oder einer Adressenleitung eines Speichers verbunden sein. Die Daten in dem Mehrzweckstapelspeicher werden verwendet, um Berechnungen innerhalb des Datenbewegungsprozessors durchzuführen. Der Adressenstapelspeicher und der Mehrzweckstapelspeicher werden separat unter Verwendung von Bytecode gesteuert.
  • Der Datenbewegungsprozessor umfasst des Weiteren eine Koprozessorschnittstelle, die mit einer Vielzahl von Koprozessoren gekoppelt ist, wobei jedem Koprozessor ein eindeutiger Identifikator zugewiesen ist. Der Datenbewegungsprozessor umfasst eine Portschnittstelle, die mit einer Vielzahl von Ports gekoppelt ist, wobei jedem Port ein eindeutiger Identifikator zugewiesen ist. Der Bytecode kann Push-(Einspeicher-)- und Pop-(Ausspeicher-)-Befehle umfassen, um Daten zwischen dem Mehrzweckstapelspeicher und einem Koprozessor, einem Port oder einem Speicher zu bewegen.
  • Der Datenbewegungsprozessor kann des Weiteren eine Adressenberechnungseinheit, die mit dem Adressenstapelspeicher gekoppelt ist, und eine arithmetische Logikeinheit, die mit dem Mehrzweckstapelspeicher gekoppelt ist, umfassen. Der Datenbewegungsprozessor kann eine Verzweigungs- und Schleifenschaltung umfassen, die mit dem Adressenstapelspeicher und dem Mehrzweckstapelspeicher gekoppelt ist, wobei die Verzweigungs- und Schleifenschaltung aktualisierte Adressdaten zur Verwendung bei der Bewegung von Daten von dem Mehrzweckstapelspeicher zu einer Zieladresse bereitstellt. Die aktualisierten Adressdaten können zum Beispiel von der Adressenberechnungseinheit berechnet werden, die einen Zeiger auf einen Platz in einem Speicher inkrementiert oder dekrementiert. Die Adressdaten können unter Verwendung jedes jetzt bekannten oder später entwickelten Prozesses oder Verfahrens berechnet werden.
  • In Übereinstimmung mit einem anderen Ausführungsbeispiel der Erfindung umfasst ein Verfahren zur Verarbeitung von Daten in einem Datenbewegungsprozessor das Laden eines Programmcodes aus einem Codespeiche, das Decodieren von Befehlen aus dem Programmcode, das Laden von Adressdaten in einen Adressenstapelspeicher, das Laden von anderen Daten in einen Mehrzweckstapelspeicher parallel zum Laden der Adressdaten in den Adressenstapelspeicher, und das Bewegen von Daten von dem Mehrzweckstapelspeicher zu einer Zieladresse, die von dem Adressenstapelspeicher identifiziert wurde. Bytecode-Befehle können geladen werden, um den Adressenstapelspeicher und den Mehrzweckstapelspeicher zu steuern. Der Bytecode kann Push- und Pop-Befehle umfassen, um Daten zwischen dem Mehrzweckstapelspeicher und einem Koprozessor, einem Port oder einer Speicherschnittstelle zu bewegen.
  • Der Datenbewegungsprozessor kann Daten aus dem Mehrzweckstapelspeicher zur Verarbeitung in eine arithmetische Logikeinheit (ALU; arithmetic logic unit) laden. Der Datenbewegungsprozessor kann Adressdaten aus dem Adressenstapelspeicher für die Verarbeitung in eine Adressenberechnungseinheit laden. Die sequentielle Bewegung von Daten kann durch die Verwendung einer Verzweigungs- und Schleifenschaltung gesteuert werden. Die Zieladresse kann einem Speicher, einem Port oder einem Koprozessor entsprechen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Für ein vollständigeres Verständnis der vorliegenden Erfindung und ihrer Vorteile wird nun Bezug auf die nachfolgenden Beschreibungen genommen, die in Verbindung mit den beigefügten Zeichnungen vorgenommen werden, in denen:
  • 1 eine typische Verteilung von CPU-Zyklen in einem Modem veranschaulicht;
  • 2 ein schematisches Diagramm eines Ausführungsbeispiels eines Kernstapelspeichers einer intelligenten DMP-Maschine ist, die separate Adressenstapelspeicher und Mehrzweckstapelspeicher aufweist;
  • 3 ein schematisches Diagramm eines anderen Ausführungsbeispiels eines intelligenten DMP ist, der seine eigene Adressenberechnungseinheit (ACU; address calculation unit) aufweist; und
  • 4 ein Ablaufdiagramm ist, das ein exemplarisches Ausführungsbeispiel eines Verfahrens zur Verwendung der Erfindung veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG VON VERANSCHAULICHENDEN AUSFÜHRUNGSBEISPIELEN
  • Die vorliegende Erfindung stellt viele anwendbare erfinderische Konzepte bereit, die in einer breiten Vielfalt von spezifischen Kontexten verwirklicht werden können. Die erörterten spezifischen Ausführungsbeispiele sind aber lediglich veranschaulichend für spezifische Möglichkeiten, die Erfindung umzusetzen und zu verwenden, und beschränken nicht den Schutzumfang der Erfindung.
  • Die vorliegende Erfindung ist auf einen flexiblen DMP ausgerichtet, der eine Architektur gemäß Befehlsvorrat (ISA; instruction set architecture) aufweist, die eine hohe Code-Dichte und Flexibilität aufweist, um effizient Daten zwischen Speicherplätzen, Koprozessoren, Ports, FIFO-Pufferspeichern, etc. hin- und herzubewegen. Ausführungsbeispiele der intelligenten DMP-Maschine, die hier offenbart ist, verwenden einen Bytecode und eine auf Stapelspeichern basierende Architektur gemäß Befehlsvorrat (ISA), die auf das Beschleunigen von Datenbewegungsfunktionen spezialisiert ist. Die DMP- Maschine implementiert spezialisierte Befehle für das Bewegen von Daten zum Beispiel zwischen Speicherplätzen, Koprozessoren und Portschnittstellen. Die Befehle sind so codiert, dass sie eine kleine Gesamtcodegröße erzielen. Die vorgeschlagene ISA nutzt den Vorteil eines separaten Adressenstapelspeichers zusätzlich zu dem Mehrzweckdatenstapelspeicher. Der Adressenstapelspeicher hält Quell- und/oder Zieladressen, wie etwa Speicherplätze, Koprozessoren und Portschnittstellen. Die ISA kann erweitert werden, um das Multithreading in zum Beispiel Mehrkanalanwendungen zu unterstützen.
  • Der DMP verwendet Befehle mit variabler Länge, die in ein oder mehrere Achtbitzeichen bzw. Bytes codiert sind (Bytecode). Der DMP verwendet eine Kernstapelspeicherarchitektur, um interne Daten zu speichern, anstatt dass er typische Register verwendet. Wie in 2 veranschaulicht ist, besteht der Kernstapelspeicher in der intelligenten DMP-Maschine 200 aus separaten Adressen-(201)- und Mehrzweck-(202)-Stapelspeichern. Der Adressenstapelspeicher (AS; address stack) 201 unterstützt Quell- und Zieladressdaten. Daten werden mittels einer PUSH-Funktion (Einspeicherfunktion) aus zum Beispiel einem Speicher, Koprozessor oder Port in den Mehrzweckstapelspeicher (GPS; general purpose stack) 202 geladen. Die Daten werden aus einer Quelladresse für den Speicherplatz, die Koprozessornummer oder den Port, die in dem Adressenstapelspeicher 201 gespeichert ist, geladen. Daten werden mittels einer POP-Funktion (Ausspeicherfunktion) in einem Speicher gespeichert oder zu einem Port oder Koprozessor bewegt. Die Zieladresse des Speicherplatzes, der Koprozessornummer oder des Ports wird in dem Adressenstapelspeicher 201 gespeichert. Es werden spezialisierte PUSH- und POP-Befehle verwendet, um Daten zu und von Koprozessoren 203, Datenports 204 und einem Speicher 205 zu transferieren. Adressdaten in dem Adressenstapelspeicher 201 werden verwendet, um PUSH- und POP-Operationen zu unterstützen und um eine nächste Adresse in dem Fall zu generieren, wenn mehrere Speicherplätze verwendet werden. In einem Ausführungsbeispiel kann zum Beispiel eine Anfangsadressstelle aus dem Adressenstapelspeicher 201 als eine Zieladresse oder Quelladresse abgerufen werden. Eine nächste Adresse kann durch einen Bytecode-Befehl durch das automatische Inkrementieren oder Dekrementieren einer Anfangsadressstelle erzeugt werden, die zum Beispiel als der Zeiger auf ein lineares Feld (Array) funktioniert.
  • Eine Codeabrufschaltung 207 lädt Befehle aus dem Codespeicher 206 und stellt die Befehle der Decodierlogik 208 bereit. Die Decodierlogik 208 analysiert die Befehlscodierung und lädt Adressdaten in den Adressenstapelspeicher 201 und andere Daten in den Mehrzweckstapelspeicher 202. Andere Befehle werden der Ausführungs- und Verzweigungseinheit 209 bereitgestellt, die Operationen wie etwa Berechnungen sowie arithmetische Logikeinheitfunktionen bei den Daten durchführt, die in dem Mehrzweckstapelspeicher 202 gespeichert sind. Außerdem wirkt die Ausführungs- und Verzweigungseinheit 209 auf Befehle ein, um Daten zwischen dem Mehrzweckstapelspeicher 202 und einem Speicher 205, Koprozessoren 203 oder Ports 204 zu bewegen.
  • Die Koprozessoren 203 können zum Beispiel einen CRC-Koprozessor zur Durchführung von zyklischen Redundanzprüfungsoperationen und einen Chiffrierkoprozessor zum Verschlüsseln und Entschlüsseln von Daten umfassen. Jeder Koprozessor kann durch eine Nummer identifiziert sein, so kann zum Beispiel der Koprozessor 0 ein CRC-Koprozessor sein und der Koprozessor 1 kann ein Chiffrierkoprozessor sein. Die Ausführungs- und Verzweigungseinheit 209 kann Befehle empfangen, die CRC- oder Chiffrieroperationen erfordern. Die Befehle würden bewirken, dass die Ausführungs- und Verzweigungseinheit 209 zum Beispiel Daten von dem oberen Ende des Mehrzweckstapelspeichers 202 oder aus einem Speicherplatz in den spezifizierten Koprozessor lädt. Der Koprozessor kann zum Beispiel als Koprozessor 0 oder Koprozessor 1 identifiziert werden, indem Adressdaten aus dem Adressenstapelspeicher 201 verwendet werden. Die Ausführungs- und Verzweigungseinheit 209 kann auch Kontrollbits an den spezifizierten Koprozessor senden, um anzuzeigen, welche Operationen bei den Daten durchgeführt werden sollen. Nachfolgende Befehle können dann die Daten von dem Koprozessor zurück zu dem Mehrzweckstapelspeicher 202 oder zu dem Speicher 205 oder zu dem Port 204 bewegen.
  • Die Ports 204 stellen eine einfache Schnittstelle zu externer Hardware bereit und stellen eine Einrichtung zum Bewegen von Daten zu und von der externen Hardware bereit. Daten können zu und von der externen Hardware zum Beispiel unter Verwendung eines Lese- oder Schreibbefehls bewegt werden, der den Port 204 als eine Ziel- oder Quelladresse identifiziert.
  • 3 veranschaulicht ein weiteres Ausführungsbeispiel des intelligenten DMP 300. Im DMP 300 weist der Adressenstapelspeicher 301 seine eigene Adressenberechnungseinheit (ACU) 302 auf, und der Mehrzweckstapelspeicher 303 ist mit der arithmetischen Logikeinheit (ALU) 304 gekoppelt. Die ACU 302 kann Adressenberechnungen parallel zu Operationen der ALU 304 durchführen. So kann die ALU 304 zum Beispiel einen ersten Datenwert von dem oberen Ende des Mehrzweckstapelspeichers 303 laden (z. B. POP) und dann den nächsten Datenwert von dem oberen Ende des Mehrzweckstapelspeichers 303 laden (z. B. POP). Befehle von der Decodierlogik 308 können dann der ALU 304 befehlen, Daten hinzuzufügen oder anderweitig auf die Daten einzuwirken. Die ALU 304 kann dann das Ergebnis zurück in den Mehrzweckstapelspeicher 303 speichern (z. B. PUSH) oder kann die Daten zu dem Koprozessor 203, dem Port 204 oder dem Speicher 205 bewegen.
  • Der DMP 300 kann auch eine Verzweigungs- und Schleifenschaltung 305 umfassen, um Wiederholbefehle zu unterstützen oder um die Bewegung einer Sequenz von Daten zu steuern. Die Verzweigungs- und Schleifenschaltung 305 kann zum Beispiel Adressdaten aus dem oberen Ende des Adressenstapelspeichers 301 laden (z. B. POP). Die Adresse kann ein Zeiger auf eine erste Stelle in einem Feld, wie etwa einem linearen Datenfeld (einer linearen Array von Daten), sein. Die Verzweigungs- und Schleifenschaltung kann dann sukzessive die Adressdaten inkrementieren oder dekrementieren, so dass Operationen wie etwa eine Lade- oder Speicheroperation bei jeder Adressstelle des Feldes durchgeführt werden können.
  • Die Codeabrufschaltung 307 lädt Befehle aus dem Codespeicher 306 und stellt die Befehle der Decodierlogik 308 bereit. Die Decodierlogik 308 analysiert die Befehlscodierung und extrahiert die Informationen, wie zum Beispiel einen Zähler, um den Beginn und das Ende einer Schleifenausführung zu steuern. Interne Busse 309312 ermöglichen Lese- und Schreibzugriffe auf Koprozessoren 203, Ports 204 und Speicher 205, 306.
  • In einem Ausführungsbeispiel unterliegt der DMP 300 einer Pipeline-Verarbeitung, um eine hohe Taktfrequenz zu erreichen. Der DMP 300 kann 2 oder mehr Pipeline-Stufen aufweisen. In einer Implementierung mit zwei Pipeline-Stufen werden zum Beispiel der Befehlsabruf und das Decodieren in einer ersten Pipeline-Stufe durchgeführt und die Ausführung/das Zurückschreiben finden in einer zweiten Pipeline-Stufe statt. In einer Implementierung mit drei Pipeline-Stufen wird der Befehlsabruf in einer ersten Stufe bewerkstelligt, das Decodieren findet in einer zweiten Stufe statt und die Ausführung/das Zurückschreiben finden in einer dritten Pipeline-Stufe statt. In anderen Ausführungsbeispielen kann der DMP 300 das Multithreading implementieren, indem ein separater Kernstapelspeicher für jeden Thread (Prozessstrang) bereitgestellt wird.
  • Tabelle 1 veranschaulicht einen exemplarischen Befehlssatz für den auf Stapelspeichern basierenden DMP, der hier offenbart ist. Der exemplarische DMP-Code, der in Tabelle 1 gezeigt ist, repräsentiert eine Befehlssequenz für das Bewegen von acht Datenworten von einem Quell-(src)-Speicherplatz zu einem Ziel-(dst)-Speicherplatz. Wie in Tabelle 1 veranschaulicht ist, benötigt die vorliegende DMP-Erfindung eine Codegröße von nur 8 Bytes, um diese Operation zu bewerkstelligen, während eine typische RISC CPU eine Codegröße von 20 Bytes benötigen würde, um die gleiche Aufgabe durchzuführen.
    DMP-Code Größe RISC-Code Größe
    ld_src 3 ldi src 4
    ld_dst 3 ldi dst 4
    ld8_w+ 1 loop 8 4
    st8_w+ 1 ldr src+ 4
    str dst+ 4
    end loop
    Gesamtcodegrö-ße: 8 Gesamtcodegrö-ße: 20
    TABELLE 1
  • Die Quell- und Zieladressen werden jeweils in den Befehlen ld_src und ld_dst identifiziert. Diese Befehle umfassen zwei Bytes an Adressdaten und ein Byte eines Befehls (zum Beispiel laden (load)) für eine Gesamtgröße von jeweils drei Bytes. Die Adressdaten können in den Adressenstapelspeicher in dem DMP geladen werden. Die Befehle ld8_w+ und st8_w+, die nur jeweils ein Byte betragen, führen die Datenbewegungsfunktion mit einer impliziten Schleife von acht mal durch, indem sie acht mal Daten von der Quell-(src)-Adresse laden und die Daten dann in der Ziel-(dst)-Adresse speichern. Die Daten werden von der Quelladresse durch den Befehl ld8_w+ in den Mehrzweckstapelspeicher geladen (PUSH) und dann aus dem Mehrzweckstapelspeicher durch den Befehl st8_w+ zu der Zieladresse gespeichert (POP). Nach dem Laden des ersten Datenwortes aus der Anfangsquelladresse (src) und dem Speichern in der Anfangszieladresse (dst) inkrementiert eine Autoinkrementierungsschaltung die Quell- und Zieladressen, um die Stellen zu identifizieren, zu denen das nächste Datenwort bewegt (d. h., geladen/gespeichert) werden soll. Die Verzweigungs- und Schleifenschaltung steuert die wiederholte Lade-/Speicherungsoperation insgesamt acht mal.
  • Wie oben angemerkt worden ist, beträgt der Code, der benötigt wird, um diese Daten unter Verwendung der DMP-Vorrichtung zu bewegen, nur acht (8) Bytes. Befehle für eine auf RISC basierende CPU, die eine ähnliche Operation durchführt, würden insgesamt 20 Bytes benötigen, wie dies in Tabelle 1 veranschaulicht ist. Durch die Verwendung der Mehrzweck- und Adressenstapelspeicher ist der DMP-Bytecode für die Datenbewegungsfunktion viel kompakter und effizienter.
  • Tabelle 2 veranschaulicht eine Datenbewegungsfunktion, die mit einer Koprozessorverarbeitung kombiniert ist, in der Daten zu einem Speicher bewegt werden und eine Kopie der Daten zu dem CRC-Koprozessor übermittelt wird. Wie in Tabelle 2 gezeigt ist, veranschaulichen die Gesamtcodegrößen wiederum, dass der DMP-Bytecode im Vergleich zu dem Code für eine RISC CPU viel kompakter und effizienter ist.
    DMP-Code Größe RISC-Code Größe
    ld_src 3 ldi src 4
    ld_dst 3 ldi dst 4
    repeat N 3 loop i 4
    ld_w+ 1 ldr src 4
    push_cop 1 str dst 4
    st_w+ 1 mvr2p 4
    end repeat end loop
    popw_cop 1 mvp2 r 4
    st_w+ 1 str dst 4
    Gesamtcodegrö-ße: 14 Gesamtcodegrö-ße: 32
    TABELLE 2
  • Die Quell- und Zieladressen werden jeweils in den Befehlen ld_src und ld_dst identifiziert. Die Adressdaten können in den Adressenstapelspeicher in dem DMP geladen werden. Die Funktion ld_w+ lädt ein Datenbyte von der Quelladresse zu dem Mehrzweckstapelspeicher. Die Quelladresse kann aus dem Adressenstapelspeicher geladen werden. Der Befehl push_cop bewegt die Daten von dem oberen Ende des Mehrzweckstapelspeichers zu einem Koprozessor. Wenn das System mehrere Koprozessoren enthält, dann identifiziert der Befehl push_cop einen spezifischen Koprozessor. Der Befehl push_cop kann auch Kontrollbits enthalten, die den Koprozessor instruieren, eine bestimmte Operation, wie zum Beispiel eine CRC-Funktion, durchzuführen.
  • Der Befehl st8_w+ speichert die Daten aus dem Mehrzweckstapelspeicher zu und in der Ziel-(dst)-Adresse. Die Zieladresse kann aus dem Adressenstapelspeicher geladen werden. Die Befehle repeat N und end repeat bewirken, dass die Befehle ld_w+, push_cop und st_w+ N mal wiederholt (repeat) werden. Eine Verzweigungs- und Schleifenschaltung kann verwendet werden, um die Anzahl an Malen (N) zu steuern, die die Daten geladen, zu einem Koprozessor geschoben und gespeichert werden. Die ursprünglichen Quell-(src)- und Ziel-(dst)-Adressen, die in den Adressenstapelspeicher geladen werden, können Zeiger auf Speicherfelder (Speicher-Arrays) sein. Die Verzweigungs- und Schleifenschaltung kann die Quell- und Zieladressdaten inkrementieren, um die Plätze zu identifizieren, in die jedes Byte bewegt (d. h., geladen/gespeichert) werden soll. Die Verzweigungs- und Schleifenschaltung inkrementiert die Adressdaten in diesem Beispiel N mal.
  • Der Befehl popw_cop ruft Daten, wie etwa ein CRC-Ergebnis, aus dem Koprozessor ab und speichert die Koprozessordaten in dem Mehrzweckstapelspeicher. Der letzte Befehl st_w+ speichert die Koprozessordaten aus dem Mehrzweckstapelspeicher heraus an einem Speicherplatz. Ähnlich wie in dem Beispiel von Tabelle 1 ist der DMP-Code, der in der Tabelle 2 zum Bewegen von Daten zu und von einem Koprozessor und Speicher veranschaulicht ist, kleiner (14 Bytes) als der Code, der für ähnliche Operationen in einem RISC CPU System benötigt würde (32 Bytes).
  • Die vorliegende Erfindung unterscheidet sich von den existierenden DMA-Kontrollern darin, dass sie nicht durch Konfigurationsregister oder Listenstrukturen gesteuert wird, die in einem Datenspeicher gespeichert sind. Statt dessen weist der DMP seinen eigenen Codespeicher (206, 306) auf, und die Ausführung wird vollständig durch den eigenen Befehlssatz gesteuert. In bekannten DMAs gibt es keine CPU, die für eine Datenbewegung dediziert ist, die sich auf Bytecodes stützt und einen erweiterten Kernstapelspeicher mit einem separaten Stapelspeicher für Quell- und Zieladressen verwendet.
  • Bytecode-Maschinen sind in der Implementierung einer Java Virtual Machine (virtuelle Maschine von Java) bekannt; aber die existierenden Java-Implementierungen basieren infolge der Allgemeingültigkeit der Anwendungen auf einem einzigen Mehrzweckstapelspeicher. Der DMP ist eine durch Bytecode programmierte Datenbewegungsmaschine, die zusätzlich zu – und parallel zu – dem Mehrzweckstapelspeicher noch einen separaten Adressenstapelspeicher verwendet.
  • 4 veranschaulicht ein Ablaufdiagramm eines exemplarischen Ausführungsbeispiels eines Verfahrens zum Bewegen von Daten. Es wird verstanden werden, dass das Verfahren, das in 4 gezeigt ist, lediglich ein exemplarisches Beispiel ist und dass Ausführungsbeispiele der Erfindung nicht auf einen solchen Prozess beschränkt sind. Das Verfahren, das in 4 veranschaulicht ist, kann zum Beispiel dem Code entsprechen, der in Tabelle 2 veranschaulicht ist. Das Verfahren, das in 4 veranschaulicht ist, kann zum Beispiel unter Verwendung des DMP 200 (2) oder 300 (3) implementiert werden, soll aber nicht auf eine solche Konfiguration beschränkt sein. Darüber hinaus wird es klar sein, dass die Schritte des Verfahrens, das in 4 veranschaulicht ist, in der angegebenen Reihenfolge oder in jeder anderen Reihenfolge oder gleichzeitig oder in Verbindung mit anderen Schritten oder Verfahren durchgeführt werden können. Im Schritt 401 wird der Programmco de aus dem Codespeicher geladen, und im Schritt 402 werden die Befehle aus dem Programmcode decodiert. Im Schritt 403 werden die Quelladressdaten in einen Adressenstapelspeicher geladen, und im Schritt 404 werden Zieladressdaten in den Adressenstapelspeicher geladen. Diese Adressdaten können zum Beispiel geladen werden, indem Adressdaten an das obere Ende des Adressenstapelspeichers geschoben bzw. an dem oberen Ende des Adressenstapelspeichers eingespeichert werden.
  • Im Schritt 405 werden Daten von einem Speicherplatz, der von der Quelladresse spezifiziert wird, in einen Mehrzweckstapelspeicher geladen. Dies kann zum Beispiel dadurch bewerkstelligt werden, dass Quelladressdaten aus dem Adressenstapelspeicher ausgespeichert (popping) werden, Daten aus der Quelladresse geladen werden und darin die Daten in den Mehrzweckstapelspeicher eingespeichert (pushing) werden. Im Schritt 406 werden Daten aus dem Mehrzweckstapelspeicher in einen Koprozessor geladen. Dies kann in dem DMP dadurch bewerkstelligt werden, dass Daten von dem oberen Ende des Mehrzweckstapelspeichers ausgespeichert werden und dann die Daten zu einem Koprozessor gesendet werden. Der DMP kann Kontrollbits in den Daten umfassen, die zu dem Koprozessor gesendet werden, um die Operationen zu identifizieren, die von dem Koprozessor durchgeführt werden sollen.
  • Im Schritt 407 werden Daten aus dem Mehrzweckstapelspeicher zu einem Speicherplatz geladen, der von der Zieladresse spezifiziert wird. Dies kann dadurch bewerkstelligt werden, dass eine Zielstelle aus dem Adressenstapelspeicher ausgespeichert wird und andere Daten aus dem Mehrzweckstapelspeicher ausgespeichert werden. Der DMP speichert dann die Daten zu und in der Zieladresse. Der Prozess geht weiter zu Schritt 408, wenn zum Beispiel die Befehle in den Schritten 405407 wiederholt werden sollen. Im Schritt 408 kann eine Verzweigungs- und Schleifenschaltung Adressdaten, die für eine nächste Datenbewegungsiteration verwendet werden sollen, inkrementieren oder dekrementieren. Nachdem die Befehle eine gewünschte Anzahl von Malen wiederholt worden sind, geht der Prozess weiter zu Schritt 409, in dem Daten von dem Koprozessor zu dem Mehrzweckstapelspeicher geladen werden. Der DMP kann Daten aus dem Koprozessor ausspeichern (pop) und dann die Daten an das obere Ende des Mehrzweckstapelspeichers schieben bzw. sie dort einspeichern (push). Im Schritt 410 werden die Daten aus dem Mehr zweckstapelspeicher ausgespeichert und in eine Zieladresse geladen. Die Zieladresse kann aus dem Adressenstapelspeicher ausgespeichert werden. Der Prozess endet dann im Schritt 411.
  • Obwohl die vorliegende Erfindung und ihre Vorteile im Einzelnen beschrieben worden sind, sollte es klar sein, dass verschiedene Veränderungen, Ersetzungen und Abänderungen daran durchgeführt werden können, ohne dass von dem Erfindungsgedanken und dem Schutzumfang der Erfindung, wie sie von den angehängten Ansprüchen definiert ist, abgewichen wird. Darüber hinaus soll der Schutzumfang der vorliegenden Erfindung nicht auf die bestimmten Ausführungsbeispiele des Prozesses, der Maschine, der Herstellung, der Stoffverbindung, der Einrichtungen, der Verfahren und der Schritte beschränkt sein, die in der Beschreibung beschrieben sind. Ein Durchschnittsfachmann auf dem Gebiet wird aus der Offenbarung der vorliegenden Erfindung ohne weiteres Prozesse, Maschinen, Herstellungsarten, Stoffverbindungen, Einrichtungen, Verfahren oder Schritte, die im Augenblick existieren oder später noch entwickelt werden, erkennen, die im Wesentlichen die gleiche Funktion durchführen oder im Wesentlichen zu den gleichen Ergebnissen führen wie die entsprechenden Ausführungsbeispiele, die hier beschrieben worden sind, und die in Übereinstimmung mit der vorliegenden Erfindung verwendet werden können. Dem entsprechend ist es so gedacht, dass die angehängten Ansprüche derartige Prozesse, Maschinen, Herstellungsarten, Stoffverbindungen, Einrichtungen, Verfahren oder Schritte in ihrem Schutzumfang einschließen sollen.

Claims (10)

  1. Datenbewegungsprozessor, der Folgendes umfasst: eine Codespeicherschnittstelle, die mit einer Codeabrufschaltung gekoppelt ist; eine Decodierschaltung, die mit der Codeabrufschaltung gekoppelt ist; einen Adressenstapelspeicher, der mit der Decodierschaltung gekoppelt ist und so konfiguriert ist, dass er Adressdaten speichert; und einen Mehrzweckstapelspeicher, der mit der Decodierschaltung gekoppelt ist und so konfiguriert ist, dass er andere Daten speichert, wobei der Mehrzweckstapelspeicher und der Adressenstapelspeicher parallel arbeiten.
  2. Datenbewegungsprozessor nach Anspruch 1, wobei die Adressdaten einen bestimmten Speicherplatz identifizieren.
  3. Datenbewegungsprozessor nach Anspruch 1 oder 2, wobei die Adressdaten verwendet werden, um eine Speicheradressenleitung während einer Speicherlese- oder -schreiboperation anzusteuern.
  4. Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei der Adressenstapelspeicher mit einem Adressenport eines Busses verbunden ist.
  5. Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei der Adressenstapelspeicher mit einer Adressenleitung eines Speichers verbunden ist.
  6. Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei die anderen Daten verwendet werden, um Berechnungen innerhalb des Datenbewegungsprozessors durchzuführen.
  7. Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei der Adressenstapelspeicher und der Mehrzweckstapelspeicher separat unter Verwendung eines Bytecodes gesteuert werden.
  8. Verfahren zur Verarbeitung von Daten, das Folgendes umfasst: Laden eines Programmcodes aus einem Codespeicher; Decodieren von Befehlen aus dem Programmcode; Laden von Adressdaten in einen Adressenstapelspeicher; Laden von anderen Daten in einen Mehrzweckstapelspeicher parallel zu dem Laden der Adressdaten in den Adressenstapelspeicher; und Bewegen von Daten von dem Mehrzweckstapelspeicher zu einer Zieladresse, die von dem Adressenstapelspeicher identifiziert worden ist.
  9. Verfahren nach Anspruch 8, das des Weiteren Folgendes umfasst: Laden von Bytecodebefehlen, um den Adressenstapelspeicher und den Mehrzweckstapelspeicher zu steuern.
  10. Verfahren nach Anspruch 8 oder 9, wobei der Bytecode Push- und Pop-Befehle umfasst, um Daten zwischen dem Mehrzweckstapelspeicher und einem Koprozessor, einem Port oder einer Speicherschnittstelle zu bewegen.
DE102010005431A 2009-01-22 2010-01-22 Datenbewegungsprozessor Ceased DE102010005431A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/358,048 2009-01-22
US12/358,048 US8209523B2 (en) 2009-01-22 2009-01-22 Data moving processor

Publications (1)

Publication Number Publication Date
DE102010005431A1 true DE102010005431A1 (de) 2010-08-05

Family

ID=42309128

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010005431A Ceased DE102010005431A1 (de) 2009-01-22 2010-01-22 Datenbewegungsprozessor

Country Status (2)

Country Link
US (1) US8209523B2 (de)
DE (1) DE102010005431A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9734326B2 (en) 2014-02-04 2017-08-15 Nxp Usa, Inc. Dynamic interrupt stack protection
US9411747B2 (en) * 2014-02-04 2016-08-09 Freescale Semiconductor, Inc. Dynamic subroutine stack protection

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997015001A2 (en) * 1995-10-06 1997-04-24 Patriot Scientific Corporation Risc microprocessor architecture
KR100529416B1 (ko) * 1996-01-24 2006-01-27 선 마이크로시스템즈 인코퍼레이티드 스택기반컴퓨터를위한명령폴딩방법및장치
US5960212A (en) * 1996-04-03 1999-09-28 Telefonaktiebolaget Lm Ericsson (Publ) Universal input/output controller having a unique coprocessor architecture
US6349383B1 (en) * 1998-09-10 2002-02-19 Ip-First, L.L.C. System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution
JP2002014809A (ja) * 2000-06-28 2002-01-18 Mitsubishi Electric Corp マイクロプロセッサ並びにアセンブラ、その方法およびそのプログラムを記録した記録媒体
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
US7113985B2 (en) * 2002-10-15 2006-09-26 Intel Corporation Allocating singles and bursts from a freelist
US7257665B2 (en) * 2003-09-29 2007-08-14 Intel Corporation Branch-aware FIFO for interprocessor data sharing
EP1645968B1 (de) * 2004-10-11 2008-03-19 Texas Instruments Incorporated Mehrfädiges DMA
US7660967B2 (en) * 2007-02-01 2010-02-09 Efficient Memory Technology Result data forwarding in parallel vector data processor based on scalar operation issue order

Also Published As

Publication number Publication date
US8209523B2 (en) 2012-06-26
US20100185832A1 (en) 2010-07-22

Similar Documents

Publication Publication Date Title
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE102010051476B4 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE3210816C2 (de)
DE3248215C2 (de)
DE69817333T2 (de) Verfahren und Vorrichtung zum Laden von Befehlskodes in einen Speicher und zum Verbinden dieser Befehlskodes
DE69734403T2 (de) Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur
DE3638572C2 (de)
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE3131341A1 (de) "pufferspeicherorganisation"
DE112016005849T5 (de) Hardwarebeschleuniger und Verfahren für zustandsbehafetete Komprimierungs- und Dekomprimierungsoperationen
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE4010384A1 (de) Verfahren zur uebertragung von buendeldaten in einem mikroprozessor
EP1599794B1 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
DE102015007422A1 (de) Befehlssatz zum Eliminieren fehlausgerichteter Speicherzugriffe während der Verarbeitung eines Arrays mit fehlausgerichteten Datenzeilen
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE602004010399T2 (de) Neuadressierbare virtuelle dma-steuer und statusregister
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE3043653A1 (de) Datenverarbeitungsanlage
DE102018128626A1 (de) Systeme, Verfahren und Vorrichtungen für Matrixoperationen
DE102020134280A1 (de) Vorrichtung und verfahren zur effizienten gleitkomma-komprimierung
DE2556617A1 (de) Datenverarbeiter zum rotierbaren verschieben von bits eines datenwortes
DE102018125971A1 (de) Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln
DE3936339A1 (de) Controller fuer direkten speicherzugriff

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R082 Change of representative

Representative=s name: VIERING, JENTSCHURA & PARTNER, DE

Representative=s name: VIERING, JENTSCHURA & PARTNER, 81675 MUENCHEN, DE

R081 Change of applicant/patentee

Owner name: INTEL MOBILE COMMUNICATIONS GMBH, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 85579 NEUBIBERG, DE

Effective date: 20130207

R082 Change of representative

Representative=s name: VIERING, JENTSCHURA & PARTNER MBB PATENT- UND , DE

Effective date: 20120229

Representative=s name: VIERING, JENTSCHURA & PARTNER MBB PATENT- UND , DE

Effective date: 20130207

Representative=s name: VIERING, JENTSCHURA & PARTNER, DE

Effective date: 20120229

Representative=s name: VIERING, JENTSCHURA & PARTNER, DE

Effective date: 20130207

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20130628