DE102010005431A1 - Datenbewegungsprozessor - Google Patents
Datenbewegungsprozessor Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 62
- 230000033001 locomotion Effects 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000004364 calculation method Methods 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 description 19
- 238000012546 transfer Methods 0.000 description 12
- 238000003860 storage Methods 0.000 description 8
- 150000001875 compounds Chemical class 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- UPBAOYRENQEPJO-UHFFFAOYSA-N n-[5-[[5-[(3-amino-3-iminopropyl)carbamoyl]-1-methylpyrrol-3-yl]carbamoyl]-1-methylpyrrol-3-yl]-4-formamido-1-methylpyrrole-2-carboxamide Chemical compound CN1C=C(NC=O)C=C1C(=O)NC1=CN(C)C(C(=O)NC2=CN(C)C(C(=O)NCCC(N)=N)=C2)=C1 UPBAOYRENQEPJO-UHFFFAOYSA-N 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000012086 standard solution Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent 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
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-Zyklen100 für ein Modem, das das Kommunikationsprotokoll High-Speed Downlink Packet Access (HSDPA) bereitstellt. Das Schaubild100 veranschaulicht relative Beträge von Verarbeitungszeit, die für jede der Funktionen in der Liste101 benötigt wird. Wie in1 gezeigt ist, machen die Datenhandhabungsfunktionen wie etwa Datenkopieroperationen102 , Datenspeicherungsoperationen103 und Speicherzuweisungsfunktionen104 beinahe drei Viertel der CPU-Zyklen aus. Hingegen sind die Funkverbindungskontroll-(RLC; radio link control)-Paketdateneinheit-(PDU; packet data unit)-Zuordnung105 , die RLC-Header-Decodierung106 und andere Datenverarbeitungsoperationen107 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-Maschine200 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 Adressenstapelspeicher201 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 Adressenstapelspeicher201 gespeichert. Es werden spezialisierte PUSH- und POP-Befehle verwendet, um Daten zu und von Koprozessoren203 , Datenports204 und einem Speicher205 zu transferieren. Adressdaten in dem Adressenstapelspeicher201 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 Adressenstapelspeicher201 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 Codespeicher206 und stellt die Befehle der Decodierlogik208 bereit. Die Decodierlogik208 analysiert die Befehlscodierung und lädt Adressdaten in den Adressenstapelspeicher201 und andere Daten in den Mehrzweckstapelspeicher202 . Andere Befehle werden der Ausführungs- und Verzweigungseinheit209 bereitgestellt, die Operationen wie etwa Berechnungen sowie arithmetische Logikeinheitfunktionen bei den Daten durchführt, die in dem Mehrzweckstapelspeicher202 gespeichert sind. Außerdem wirkt die Ausführungs- und Verzweigungseinheit209 auf Befehle ein, um Daten zwischen dem Mehrzweckstapelspeicher202 und einem Speicher205 , Koprozessoren203 oder Ports204 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 Verzweigungseinheit209 kann Befehle empfangen, die CRC- oder Chiffrieroperationen erfordern. Die Befehle würden bewirken, dass die Ausführungs- und Verzweigungseinheit209 zum Beispiel Daten von dem oberen Ende des Mehrzweckstapelspeichers202 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 Adressenstapelspeicher201 verwendet werden. Die Ausführungs- und Verzweigungseinheit209 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 Mehrzweckstapelspeicher202 oder zu dem Speicher205 oder zu dem Port204 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 Port204 als eine Ziel- oder Quelladresse identifiziert. -
3 veranschaulicht ein weiteres Ausführungsbeispiel des intelligenten DMP300 . Im DMP300 weist der Adressenstapelspeicher301 seine eigene Adressenberechnungseinheit (ACU)302 auf, und der Mehrzweckstapelspeicher303 ist mit der arithmetischen Logikeinheit (ALU)304 gekoppelt. Die ACU302 kann Adressenberechnungen parallel zu Operationen der ALU304 durchführen. So kann die ALU304 zum Beispiel einen ersten Datenwert von dem oberen Ende des Mehrzweckstapelspeichers303 laden (z. B. POP) und dann den nächsten Datenwert von dem oberen Ende des Mehrzweckstapelspeichers303 laden (z. B. POP). Befehle von der Decodierlogik308 können dann der ALU304 befehlen, Daten hinzuzufügen oder anderweitig auf die Daten einzuwirken. Die ALU304 kann dann das Ergebnis zurück in den Mehrzweckstapelspeicher303 speichern (z. B. PUSH) oder kann die Daten zu dem Koprozessor203 , dem Port204 oder dem Speicher205 bewegen. - Der DMP
300 kann auch eine Verzweigungs- und Schleifenschaltung305 umfassen, um Wiederholbefehle zu unterstützen oder um die Bewegung einer Sequenz von Daten zu steuern. Die Verzweigungs- und Schleifenschaltung305 kann zum Beispiel Adressdaten aus dem oberen Ende des Adressenstapelspeichers301 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 Codespeicher306 und stellt die Befehle der Decodierlogik308 bereit. Die Decodierlogik308 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 Busse309 –312 ermöglichen Lese- und Schreibzugriffe auf Koprozessoren203 , Ports204 und Speicher205 ,306 . - In einem Ausführungsbeispiel unterliegt der DMP
300 einer Pipeline-Verarbeitung, um eine hohe Taktfrequenz zu erreichen. Der DMP300 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 DMP300 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 - 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 - 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 in4 gezeigt ist, lediglich ein exemplarisches Beispiel ist und dass Ausführungsbeispiele der Erfindung nicht auf einen solchen Prozess beschränkt sind. Das Verfahren, das in4 veranschaulicht ist, kann zum Beispiel dem Code entsprechen, der in Tabelle 2 veranschaulicht ist. Das Verfahren, das in4 veranschaulicht ist, kann zum Beispiel unter Verwendung des DMP200 (2 ) oder300 (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 in4 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 Schritt401 wird der Programmco de aus dem Codespeicher geladen, und im Schritt402 werden die Befehle aus dem Programmcode decodiert. Im Schritt403 werden die Quelladressdaten in einen Adressenstapelspeicher geladen, und im Schritt404 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 Schritt406 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 Schritt408 , wenn zum Beispiel die Befehle in den Schritten405 –407 wiederholt werden sollen. Im Schritt408 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 Schritt409 , 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 Schritt410 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 Schritt411 . - 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)
- 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.
- Datenbewegungsprozessor nach Anspruch 1, wobei die Adressdaten einen bestimmten Speicherplatz identifizieren.
- Datenbewegungsprozessor nach Anspruch 1 oder 2, wobei die Adressdaten verwendet werden, um eine Speicheradressenleitung während einer Speicherlese- oder -schreiboperation anzusteuern.
- Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei der Adressenstapelspeicher mit einem Adressenport eines Busses verbunden ist.
- Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei der Adressenstapelspeicher mit einer Adressenleitung eines Speichers verbunden ist.
- Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei die anderen Daten verwendet werden, um Berechnungen innerhalb des Datenbewegungsprozessors durchzuführen.
- Datenbewegungsprozessor nach einem der vorhergehenden Ansprüche, wobei der Adressenstapelspeicher und der Mehrzweckstapelspeicher separat unter Verwendung eines Bytecodes gesteuert werden.
- 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.
- Verfahren nach Anspruch 8, das des Weiteren Folgendes umfasst: Laden von Bytecodebefehlen, um den Adressenstapelspeicher und den Mehrzweckstapelspeicher zu steuern.
- 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.
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)
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)
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 |
-
2009
- 2009-01-22 US US12/358,048 patent/US8209523B2/en not_active Expired - Fee Related
-
2010
- 2010-01-22 DE DE102010005431A patent/DE102010005431A1/de not_active Ceased
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 |