DE102004005123B4 - Arrangement for the translation of virtual instructions in a data processing unit - Google Patents

Arrangement for the translation of virtual instructions in a data processing unit Download PDF

Info

Publication number
DE102004005123B4
DE102004005123B4 DE200410005123 DE102004005123A DE102004005123B4 DE 102004005123 B4 DE102004005123 B4 DE 102004005123B4 DE 200410005123 DE200410005123 DE 200410005123 DE 102004005123 A DE102004005123 A DE 102004005123A DE 102004005123 B4 DE102004005123 B4 DE 102004005123B4
Authority
DE
Germany
Prior art keywords
memory
instruction
address
virtual
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE200410005123
Other languages
German (de)
Other versions
DE102004005123A1 (en
Inventor
Walter Jeroen Dr. Slegers
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.)
Continental Automotive GmbH
Original Assignee
Siemens 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 Siemens AG filed Critical Siemens AG
Priority to DE200410005123 priority Critical patent/DE102004005123B4/en
Publication of DE102004005123A1 publication Critical patent/DE102004005123A1/en
Application granted granted Critical
Publication of DE102004005123B4 publication Critical patent/DE102004005123B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code

Abstract

Anordnung zur Übersetzung von virtuellen Befehlen in einer Datenverarbeitungseinheit mit einem Prozessorkern (3), einem ersten Befehlsspeicher (2), einem zweiten Befehlsspeicher (7, 70) und einer Speicherzugriffseinheit (6, 60), welche alle über einen ersten Adress- und Datenbus (11, 12) miteinander verbunden sind, wobei der Prozessorkern (3) sowie die Speicherzugriffseinheit (6, 60) über den ersten Adress- und Datenbus (11, 12) einen Befehl aus dem ersten Befehlsspeicher (2) holen können,
dadurch gekennzeichnet,
– dass der von der Speicherzugriffseinheit (60) aus dem ersten Befehlsspeicher (2) geholte Befehl ein virtueller Befehl ist, welchen die Speicherzugriffseinheit (60) in eine Speicheraddresse des zweiten Befehlsspeichers (70) umwandelt, wobei die Umwandlung des virtuellen Befehls in die Speicheradresse des zweiten Befehlsspeichers (70) dadurch erfolgt, dass die Bits des virtuellen Befehls (D7 – D0) direkt auf eine entsprechende Anzahl von Adressleitungen (A12 – A5) eines zwischen der Speicherzugriffseinheit (60) und dem zweiten Befehlsspeicher (70) vorhandenen weiteren Adressbusses (23) gegeben werden,...
Arrangement for the translation of virtual instructions in a data processing unit having a processor core (3), a first instruction memory (2), a second instruction memory (7, 70) and a memory access unit (6, 60), all of which are accessible via a first address and data bus ( 11, 12) are interconnected, wherein the processor core (3) and the memory access unit (6, 60) via the first address and data bus (11, 12) can get an instruction from the first instruction memory (2),
characterized,
In that the instruction fetched from the first instruction memory (2) by the memory access unit (60) is a virtual instruction which the memory access unit (60) converts to a memory address of the second instruction memory (70), the conversion of the virtual instruction to the memory address of the memory second instruction memory (70) is effected in that the bits of the virtual instruction (D7 - D0) are applied directly to a corresponding number of address lines (A12 - A5) of a further address bus (23rd to 23rd) between the memory access unit (60) and the second instruction memory (70) ) are given,...

Figure 00000001
Figure 00000001

Description

Die Erfindung betrifft eine Anordnung zur Übersetzung von virtuellen Befehlen in einer Datenverarbeitungseinheit mit einem Prozessorkern, einem ersten Befehlsspeicher, einem zweiten Befehlsspeicher und einer Speicherzugriffseinheit, welche alle über einen ersten Adress- und Datenbus miteinander verbunden sind, wobei der Prozessorkern sowie die Speicherzugriffseinheit über den Adress- und Datenbus einen Befehl aus dem ersten Befehlsspeicher holen können.The The invention relates to an arrangement for the translation of virtual instructions in a data processing unit with a processor core, a first instruction memory, a second instruction memory and a Memory access unit, all via a first address and Data bus are interconnected, with the processor core as well the memory access unit via the address and data bus an instruction from the first instruction memory can get.

Eine solche schaltungstechnische Grundstruktur bildet die Zentraleinheit einer bekannten Datenverarbeitungseinheit, wobei diese Zentraleinheit als kundenspezifisches, integriertes Bauteil (ASIC) implementiert ist. Der erste Befehlsspeicher befindet sich dabei außerhalb des ASIC als externes RAM, während der zweite Befehlsspeicher innerhalb des ASIC als internes RAM ausgeführt ist. Der Hauptprozessor holt sich aus dem externen RAM das auszuführende Programm in Form von Maschinenbefehlen und nutzt das interne RAM zum Zwischenspeichern. Die Speicherzugriffseinheit, beispielsweise ein Graphikcontroller, greift ebenfalls auf das externe RAM zu und teilt sich dabei den Adress- und Datenbus mit dem Hauptprozessor. Zu dieser bekannten Datenverarbeitungseinheit gehören des Weiteren akustische und grafische Schnittstellen sowie Schnittstellen zu Massenspeichereinrichtungen, wie beispielsweise Festplatten und DVDs. Die Datenverarbeitungseinheit wird vorzugsweise in heutigen Navigationsgeräten in Kraftfahrzeugen eingesetzt.A such basic circuit structure forms the central unit a known data processing unit, said central unit is implemented as a custom, integrated component (ASIC). The first instruction memory is outside the ASIC as external RAM while the second instruction memory within the ASIC is implemented as internal RAM. The main processor fetches the program to be executed from the external RAM in the form of machine instructions and uses the internal RAM for caching. The memory access unit, for example a graphics controller, also accesses the external RAM and shares the Address and data bus with the main processor. To this known data processing unit belong Furthermore, acoustic and graphic interfaces as well as interfaces to Mass storage devices, such as hard disks and DVDs. The data processing unit is preferably in today navigation devices used in motor vehicles.

Je nach gewünschter Anwendung kann die Zentraleinheit auch mit anderen Hardwarekomponenten kombiniert und in anderen elektronischen Geräten eingesetzt werden, wie beispielsweise in Audio- und Multimediageräten in Kraftfahrzeugen oder in tragbaren Telekommunikationsgeräten. Durch die Ausführung als ASIC ist die Zentraleinheit besonders kompakt und benötigt weniger Leistung als eine handelsübliche Mikroprozessoreinheit, weshalb die Zentraleinheit bevorzugt bei so genannten Embedded Systemen eingesetzt wird.ever according to the desired Application, the central unit can also be combined with other hardware components and be used in other electronic devices, such as for example, in audio and multimedia devices in motor vehicles or in portable telecommunications equipment. By the execution as ASIC the central unit is very compact and requires less power than one commercial Microprocessor unit, which is why the central unit preferably at so-called embedded systems is used.

In der bekannten Ausführung verarbeitet die zu der Zentraleinheit gehörende Recheneinheit ausschließlich so genannte Maschinenbefehle, d.h. solche Befehle, die direkt von dem in der Recheneinheit integrierten Prozessorkern verstanden und ausgeführt werden können. Der Prozessorkern kann dabei ein CISC- oder ein RISC-Prozessor sein. Die Maschinenbefehle werden üblicherweise durch die Übersetzung eines in einer Hochsprache geschriebenen Computerprogramms in ein Maschinenprogramm erzeugt, wofür ein speziell an die Zielhardware und damit den ausführenden Prozessorkern angepasster Übersetzer (Compiler) verwendet werden muss.In the known design processes the arithmetic unit belonging to the central unit exclusively in this way said machine instructions, i. such commands directly from the understood and executed in the arithmetic unit integrated processor core can. The processor core can be a CISC or a RISC processor. The machine commands are usually through the translation of a computer program written in a high level language Machine program generates, for what a specific to the target hardware and thus the executing Processor core adapted translator (Compiler) must be used.

Da die nicht auf andere Prozessortypen übertragbaren Maschinenprogramme die Flexibilität in der Entwicklung neuer Systeme einschränken, geht man heute mehr und mehr dazu über, Programme zu verwenden, die bei Einsatz von Übersetzungshilfsmitteln von verschiedenen Prozessoren verstanden werden können. Dazu wird eine so genannte virtuelle Maschine – also ein virtueller Prozessor – definiert, welche virtuelle Maschinenbefehle, kurz virtuelle Befehle, versteht und ausführt. Die Hochsprachen-Computerprogramme werden nun in ein solches virtuelles Maschinenprogramm übersetzt und in einem Festwertspeicher abgelegt. Zur Laufzeit müssen dann die einzelnen virtuellen Befehle in die vom Prozessorkern ausführbaren Maschinenbefehle übersetzt werden.There the machine programs that can not be transferred to other types of processors the flexibility To limit the development of new systems, one goes today more and more about, Programs to use when using translation tools from different processors can be understood. This will be a so-called virtual machine - so a virtual processor - defines which understands virtual machine instructions, in short virtual instructions and executes. The high-level computer programs are now in such a virtual Machine program translated and stored in a read-only memory. At runtime then have to the individual virtual commands into executable by the processor core Machine instructions translated become.

Eine inzwischen im Embedded Bereich sehr weit verbreitete Programmiersprache ist Java. Zu Java wurde eine virtuelle Maschine, die Java Virtual Machine (JVM) definiert, deren zugehörige virtuelle Befehle Java Bytecodes genannt werden. Java Bytecodes werden offline aus einem Java-Computerprogramm durch Kompilierung erzeugt. Um die Bytecodes ausführbar zu machen, sind verschiedene technische Lösungen bekannt. Bei einer ersten Lösung werden die Bytecodes mittels eines speziellen, auf der Zielhardware laufenden Softwareprogramms interpretiert, d.h. das Programm (der Interpretierer) lädt die Bytecodes und führt sie auf dem Prozessorkern aus. Eine zweite Lösung ist eng mit der ersten verbunden, nur werden dort die Bytecodes nicht interpretiert sondern mittels eines so genannten Just-In-Time-Compilers kurz vor der Ausführung in Maschinenbefehle übersetzt. Die übersetzten Maschinenbefehle liegen dann in Form mehrerer Kilo- bis Megabytes im Arbeitsspeicher vor.A meanwhile in the Embedded area very widespread programming language is Java. Java became a virtual machine called Java Virtual Machine (JVM) defines its associated virtual commands Java Be called bytecodes. Java bytecodes become offline from one Java computer program generated by compilation. To the bytecodes executable To make various technical solutions are known. At a first solution The bytecodes are written by means of a special, on the target hardware running software program, i. the program (the Interpreter) loads the bytecodes and leads they out on the processor core. A second solution is close to the first one connected, only the bytecodes are not interpreted there but by means of a just-in-time compiler shortly before execution in Machine instructions translated. The translated Machine commands are then in the form of several kilobytes to megabytes in memory.

Um den bei beiden Lösungen erhöhten Speicheraufwand für den Interpretierer bzw. Compiler sowie für die Zwischenergebnisse der Übersetzung zu reduzieren wurden als Weiteres Hardware-Compiler entwickelt. Diese sind in der einfachsten Form Zusatzprozessoren, welche neben der eigentlichen Recheneinheit, die den Hauptprozessor enthält, vorhanden sind und welche die Übersetzung der Bytecodes in Maschinenbefehle jeweils dann vornehmen, wenn der nächste virtuelle Befehl aufgerufen wird. Durch die direkt beim Aufruf des virtuellen Befehls erfolgende Übersetzung wird der Speicherplatzbedarf deutlich reduziert, da nur die wenigen zu dem virtuellen Befehl gehörenden Maschinenbefehle zwischengespeichert werden müssen.In order to reduce the increased memory requirements for the interpreter or compiler as well as for the intermediate results of the translation in both solutions, hardware compilers were further developed. These are in the simplest form additional processors, which are in addition to the actual processing unit that contains the main processor, and which are the translation of the bytecodes in Maschinenbe each time the next virtual command is called. The translation that takes place directly when the virtual command is called significantly reduces the storage space requirement because only the few machine instructions belonging to the virtual command need to be cached.

Aus der EP-950216-B1 ist ein solcher Zusatzprozessor in Form eines JAVA-Präprozessors bekannt, welcher neben dem eigentlichen Hauptprozessor Zugriff auf einen externen Befehlsspeicher hat, in welchem die virtuellen Befehle (Bytecodes) und unter Umständen auch direkt Maschinenbefehle abgelegt sind. Der Präprozessor verfügt über eine Übersetzungseinheit, in der eine Übersetzungstabelle abgelegt ist, die die zu den virtuellen Befehlen jeweils zugehörige Folge von Maschinenbefehlen beinhaltet. Weiterhin ist in der im Präprozessor vorhandenen Übersetzungseinheit ein spezielles internes Register RSP (register stack pointer) zur Ablage der gerade aktuellen Nummer des Hauptprozessor-Registers, welches die zuletzt belegte Position des Speicherstapels (top of memory stack) enthält, vorgesehen.Out EP-950216-B1 is one such additional processor in the form of a JAVA preprocessor known, which in addition to the actual main processor access to has an external instruction store in which the virtual instructions (Bytecodes) and possibly also machine instructions are stored directly. The preprocessor has a translation unit, in the translation table is stored, the corresponding to the virtual commands sequence of machine commands. Furthermore, in the preprocessor existing translation unit a special internal register RSP (register stack pointer) for Storage of the currently current number of the main processor register, which the last occupied position of the memory stack (top of contains memory stack), intended.

Wenn der Hauptprozessor einen Befehl aus dem externen Befehlsspeicher anfordert, so erkennt der Präprozessor anhand der zugehörigen Befehlsadresse, ob es sich um einen virtuellen Befehl handelt, der erst in Maschinenbefehle übersetzt werden muss, oder ob es ein Maschinenbefehl ist, der unverändert an den Hauptprozessor weitergegeben werden kann. Sofern ein virtueller Befehl angefordert wurde, wird dieser von dem Präprozessor aus dem externen Befehlsspeicher abgeholt, mit Hilfe der zugehörigen Eintragung in der Übersetzungstabelle sowie dem aktuellen Inhalt des Registers RSP übersetzt und die resultierende Folge von Maschinenbefehlen wird dem Hauptprozessor über einen Zwischenspeicher, ein so genanntes Feeding Memory, zur Verfügung gestellt.If the main processor receives an instruction from the external instruction memory request, then recognizes the preprocessor based on the associated Command address, whether it is a virtual command, the first translated into machine instructions or whether it is a machine command that is unchanged the main processor can be passed. Unless a virtual Command was requested, this is from the preprocessor from the external Command memory retrieved using the associated entry in the translation table as well as the current contents of the register RSP and the resulting Sequence of machine commands is the main processor via a Cache, a so-called Feeding Memory, provided.

Die in der Übersetzungstabelle abgelegten Einträge zu den virtuellen Befehlen enthalten je nach der Komplexität des Befehls unterschiedlich viele Maschinenbefehle, die zu dessen Ausführung erforderlich sind. Da die Einträge in direkter Aufeinanderfolge im Speicher der Übersetzungseinheit abgelegt sind, benötigt der Präprozessor eine zusätzliche Indizierungstabelle (Code-Index-Table), welche zu jedem virtuellen Befehl den jeweiligen Startpunkt aus der Übersetzungstabelle enthält.The in the translation table filed entries to the virtual commands included depending on the complexity of the command different number of machine commands required to execute it are. Because the entries stored in direct succession in the memory of the translation unit are needed the preprocessor an additional Indexing Table, which corresponds to each virtual Command contains the respective starting point from the translation table.

Aus der im Internet veröffentlichten PhD-Thesis "Microarchitectural Techniques to Enable Efficient Java Execution" von Ramesh Radhakrishnan ist eine Hardware-Übersetzungseinheit für Java-Bytecode bekannt, die mit einem allgemein üblichen Prozessor zusammenwirkt. Die Hardware-Übersetzungseinheit holt den zu übersetzenden Bytecode aus dem Instruction Cache, vorverarbeitet ihn und übersetzt ihn mit Hilfe einer in der Hardware-Übersetzungseinheit enthaltenen ROM-Speichereinheit in den zugehörigen Maschinenbefehl.Out the published on the Internet PhD Thesis "Microarchitectural Techniques to Enable Efficient Java Execution "by Ramesh Radhakrishnan is a hardware translation unit for Java bytecode known, which cooperates with a common processor. The hardware translation unit get the translation Bytecode from the instruction cache, preprocessed and translated him using a contained in the hardware translation unit ROM storage unit in the associated Machine instruction.

Die US-4587612 offenbart einen so genannten Emulator-Hilfsprozessor, der mit einer Standard-CPU zusammenwirkt und der zwischen Instruction Cache und Daten Cache geschaltet ist. Der Hilfsprozessor wandelt einen Source-Befehl in einen Maschinenbefehl um, indem ein so genannter Mikro-Befehl geladen wird, der zusammengesetzt ist einem Gerüstteil für den zu bildenden Maschinenbefehl und aus einem Steuerteil. Der Gerüstteil wird nun entsprechend der Angaben im Steuerteil anhand von Daten aus dem zu übersetzenden Source-Befehl aufgefüllt, wobei Teile aus dem Source-Befehl kopiert oder umgerechnet werden. Daraus entsteht der zugehörige Maschinenbefehl.The US-4587612 discloses a so-called emulator auxiliary processor, which interacts with a standard CPU and between instructions Cache and data cache is switched. The auxiliary processor converts a source command into a machine command by a so-called Micro command is loaded, which is composed of a scaffolding part for forming machine command and a control part. The framework part becomes now according to the information in the control section based on data the source command to translate filled, where parts are copied or converted from the source command. This results in the associated Machine instruction.

Aufgabe der vorliegenden Erfindung ist es, die bekannte, als ASIC ausgeführte Anordnung so zu erweitern, dass mit der erweiterten Anordnung auch eine Ausführung von virtuellen Be fehlen möglich wird. Die anwendungsspezifischen Randbedingungen der Embedded Systeme bezüglich möglichst geringer Stückkosten und eines geringen Platzbedarfs sollen dabei berücksichtigt werden.task It is the object of the present invention to provide the known ASIC arrangement to extend so that with the extended arrangement also an execution of virtual Be missing possible becomes. The application-specific boundary conditions of the embedded systems in terms of preferably low unit costs and a small footprint should be taken into account.

Die Aufgabe wird durch eine eingangs beschriebene Anordnung mit den kennzeichnenden Merkmalen des Anspruchs 1 gelöst.The Task is by an arrangement described above with the characterizing features of claim 1 solved.

Die erfindungsgemäße Anordnung weist zwischen der Speicherzugriffseinheit und dem zweiten Befehlsspeicher einen weiteren Adressbus auf. In dem ersten Befehlsspeicher sind nun neben den Maschinenbefehlen auch virtuelle Befehle abgelegt. Greift der Hauptprozessor auf einen solchen virtuellen Befehl zu, so erfolgt der Zugriff nicht mehr direkt, sondern wird über die Speicherzugriffseinheit umgeleitet, indem der Hauptprozessor den entsprechend zugeordneten Adressbereich anspricht. Beim Holen eines virtuellen Befehls wandelt die Speicherzugriffseinheit diesen in eine Speicheradresse des zweiten Befehlsspeichers um und führt anschließend über den weiteren Adressbus einen Zugriff auf den zweiten Befehlsspeicher durch. An der Speicheradresse des zweiten Befehlsspeichers ist ein Maschinenbefehl abgelegt, welcher zu einer Folge von Maschinenbefehlen gehört, die einer Übersetzung des virtuellen Befehls in durch den Prozessorkern ausführbaren Programmcode entsprechen. Der Maschinenbefehl wird dann in der üblichen Weise aus dem zweiten Befehlsspeicher über den ersten Datenbus an den Prozessorkern übertragen.The arrangement according to the invention has a further address bus between the memory access unit and the second instruction memory. In the first instruction memory, virtual commands are now stored in addition to the machine instructions. Accesses the main processor to such a virtual command, the access is no longer directly, but is redirected through the memory access unit by the main processor responds to the corresponding allocated address range. When a virtual instruction is fetched, the memory access unit converts it into a memory address of the second instruction memory and then accesses the second instruction memory via the further address bus. At the Spei second instruction memory is stored a machine instruction, which belongs to a sequence of machine instructions that correspond to a translation of the virtual instruction in executable by the processor core program code. The machine instruction is then transferred in the usual manner from the second instruction memory via the first data bus to the processor core.

Die Umwandlung eines virtuellen Befehls in eine Speicheradresse des zweiten Befehlsspeichers erfolgt dadurch, dass der Befehl direkt auf den weiteren Adressbus gelegt wird, d. h. die Bitfolge des virtuellen Befehls wird auf eine gleiche Anzahl von Adressleitungen gelegt. Bei einem virtuellen Befehl, der aus 8 Bit besteht, werden entsprechend acht Adressleitungen angesprochen. Diese spezielle Ausführung reduziert den Aufwand an intelligenter Logik innerhalb der Speicherzugriffseinheit, da keine aktive Umsetzung oder Umrechnung des virtuellen Befehls in die Speicheradresse erfolgt, sondern die vom ersten bzw. zweiten Datenbus eingehenden Spannungssignale direkt als Spannungssignale an den weiteren Adressbus ausgegeben werden.The Conversion of a virtual command into a memory address of the second instruction memory is done by directing the instruction is placed on the further address bus, d. H. the bit sequence of the virtual command is placed on an equal number of address lines. At a virtual command, which consists of 8 bits, will pay attention accordingly Address lines addressed. This special design reduces the amount of intelligent logic within the storage access unit, there is no active conversion or conversion of the virtual command in the memory address, but the first or second Data bus incoming voltage signals directly as voltage signals be output to the other address bus.

Die erfindungsgemäße Anordnung ermöglicht die Erweiterung eines bekannten, zur Ausführung von Maschinenbefehlen ausgelegten ASIC zu einem ASIC mit integriertem Hardware-Compiler für virtuelle Befehle. Diese Erweiterung erfordert nur eine geringe Anzahl zusätzlicher Gatter (gates), da die bereits im ASIC vorhandene Speicherzugriffseinheit nur ein wenig erweitert werden muss und lediglich ein weiterer Adressbus in Form weniger Datenleitungen zwischen Speicherzugriffseinheit und zweitem Befehlsspeicher eingeführt wird. Die Kosten und auch der zusätzliche Platzbedarf für die Erweiterung sind also minimal, was in deutlichem Gegensatz zu den bekannten Ausführungen steht, bei denen ein zusätzlicher Präprozessor mit eigenem Speicher und eigener Datenverarbeitung eingeführt wird. Ein Präprozessor entspricht ja einer kompletten Recheneinheit, wofür beim ASIC-Entwurf mehrere Tausend Gatter benötigt werden.The inventive arrangement allows the extension of a known, to execute machine commands designed ASIC to an ASIC with integrated hardware compiler for virtual Commands. This extension requires only a small number of additional ones Gates, because the memory access unit already present in the ASIC just needs to be extended a bit and just another address bus in the form of a few data lines between memory access unit and second instruction memory. The cost and also the additional one Space required for the extension is so minimal, which is in marked contrast to the known versions stands where an additional preprocessor is introduced with its own memory and its own data processing. A preprocessor corresponds to a complete computing unit, what the ASIC design several thousand gates needed become.

Außerdem wird im Gegensatz zu den bekannten Ausführungen bei der erfindungsgemäßen Anordnung die Übersetzung nicht aktiv durch eine zusätzliche Recheneinheit vorgenommen, sondern sie ist in den Vorgang des Befehlszugriffs auf den ersten Befehlsspeicher eingebettet. Der abgeholte virtuelle Befehl nimmt auf dem Weg zum zweiten Befehlsspeicher lediglich einen kleinen „Umweg" über die Speicherzugriffseinheit, wo er in eine Speicheradresse des zweiten Befehlsspeichers umgewandelt wird. Die Übersetzung des virtuellen Befehls in Maschinenbefehle ist als Folge davon auch nicht in dem Speicher des zusätzlichen Präprozessors sondern im internen RAM des Hauptprozessors abgelegt, wobei das interne RAM gerade dem zweiten Befehlsspeicher entspricht.In addition, will in contrast to the known embodiments in the inventive arrangement the translation not active by an additional But it is in the process of command access embedded on the first instruction memory. The picked up virtual Command takes only one on the way to the second instruction memory small "detour" via the memory access unit, where it is converted to a memory address of the second instruction memory becomes. The translation the virtual command in machine commands is as a result of it too not in the memory of the extra preprocessor but stored in the internal RAM of the main processor, the internal RAM just corresponds to the second instruction memory.

In einer bevorzugten Ausgestaltung der Erfindung ist noch ein zweiter Adress- und Datenbus vorhanden, der die Speicherzugriffseinheit mit dem ersten Befehlsspeicher verbindet. Über diesen zweiten Adress- und Datenbus ist die Speicherzugriffseinheit in der Lage, nach Anforderung durch den Prozessorkern einen direkten Speicherzugriff (DMA) auf den ersten Befehlsspeicher durchzuführen, um einen virtuellen Befehl abzuholen, während beispielsweise der Prozessorkern über den ersten Adress- und Datenbus auf den zweiten Befehlsspeicher zugreift.In A preferred embodiment of the invention is still a second Address and data bus present, the memory access unit connects to the first instruction memory. About this second address and Data bus is the memory access unit capable of requesting through the processor core to a direct memory access (DMA) to perform the first instruction store to a virtual instruction pick up while For example, the processor core over the first address and Data bus accesses the second instruction memory.

In einer weiteren Ausgestaltung der Erfindung enthält der zweite Befehlsspeicher eine Tabelle, in der zu jedem virtuellen Befehl eine fest vorgegebene Anzahl an Maschinenbefehlen abgelegt ist. Damit entfällt die Notwendigkeit einer zusätzlichen Indizierungstabelle, wie sie in der EP-950216-B1 be schrieben ist, d.h. es ist nicht mehr erforderlich, sich zu jedem virtuellen Befehl den jeweiligen Startpunkt in der Tabelle zu merken. Vielmehr genügt es, die Adresse des allerersten Tabelleneintrags zu kennen, da daraus die Adressen aller übrigen Einträge berechnet werden können.In A further embodiment of the invention contains the second instruction memory a table in which a fixed default to each virtual command Number of machine commands is stored. This eliminates the need an additional one Indexing table as described in EP-950216-B1, i.e. It is no longer necessary to join any virtual command to remember the respective starting point in the table. Rather, it is enough, the To know the address of the very first table entry, as this results in the Addresses of all other entries calculated can be.

Die Berechnung erfolgt in einer vorteilhaften Ausgestaltung indirekt über die Gestaltung der Adressleitungen. Setzt sich nämlich die aus dem virtuellen Befehl gewonnene Speicheradresse zusammen aus einer Anzahl oberer Adress-Bits, welche dem virtuellen Befehl entsprechen, und einer Anzahl unterer Adress-Bits, welche durch die Anzahl an Maschinenbefehlen pro virtuellem Befehl in der Tabelle festgelegt ist, so muss sich die Speicherzugriffseinheit lediglich darum kümmern, dass die unteren Adress-Leitungen entsprechend dem gerade angeforderten Untereintrag des jeweiligen virtuellen Befehls richtig angesprochen werden.The Calculation takes place in an advantageous embodiment indirectly via the Design of the address lines. That's because it's made of the virtual Command obtained memory address together from a number of upper Address bits corresponding to the virtual instruction, and one Number of lower address bits, determined by the number of machine commands per virtual command is set in the table, so must the Memory access unit only take care that the lower address lines according to the currently requested subentry of the respective be addressed correctly.

In einer weiteren Vereinfachung des Zugriffs auf die zweite Speichereinheit entsprechen die unteren Adress-Bits des weiteren Adress-Busses den unteren Adress-Bits des ersten Adressbusses. Die Speicherzugriffseinheit benötigt dann keine intelligente Logik zur Berechnung des aktuell auszulesenden Tabelleneintrags. Bei einer solchen Anordnung fordert der Prozessorkern einen ersten Befehl an, welcher als virtueller Befehl aus dem ersten Befehlsspeicher gelesen wird und über die Speicherzugriffseinheit auf die oberen Leitungen des weiteren Adressbusses ausgegeben wird. Die unteren Adressleitungen werden nicht benutzt, d.h. dort liegt eine logische Null an. Im nächsten Arbeitsschritt fordert der Prozessorkern einen zweiten Befehl an, d.h. er springt in der Befehlsadresse um einen Schritt weiter. Die entsprechende logische Eins auf der untersten Adressleitung des ersten Adressbusses wird di rekt auf die zugehörige unterste Adressleitung des weiteren Adressbusses durchgereicht und damit der zweite Eintrag der Übersetzung des virtuellen Befehls aus der Tabelle gelesen.In a further simplification of the access to the second memory unit, the lower address bits of the further address bus correspond to the lower address bits of the first address bus. The memory access unit then does not require any intelligent logic for calculating the table entry currently to be read. In such an arrangement, the processor core requests a first instruction, which is read as a virtual instruction from the first instruction memory and output via the memory access unit to the upper lines of the further address bus. The lower address lines are not used, ie there is a logical zero. In the next step, the processor core requests a second command, ie he jumps in the command address one step further. The corresponding logical one on the lowest address line of the first address bus is di rectly passed to the associated lowest address line of the further address bus and thus read the second entry of the translation of the virtual command from the table.

Da die zu unterschiedlichen virtuellen Befehlen gehörenden Übersetzungen im allgemeinen aus einer unterschiedlichen Anzahl von Maschinenbefehlen bestehen, sind in weiteren Ausgestaltungen entsprechende Abhilfen vorgesehen. So wird bei einem Tabelleneintrag mit weniger als der vorgegebenen Anzahl an Maschinenbefehlen eine zusätzliche Sprungfunktion eingeführt, welche zu einem Überspringen der nicht benutzten, leeren Speicherstellen führt.There the translations belonging to different virtual commands in general consist of a different number of machine commands, Corresponding remedies are provided in further embodiments. Thus, when a table entry is less than the default Number of machine instructions introduced an additional jump function, which to a skip the unused, empty memory locations leads.

Übersteigt die bei der Übersetzung eines virtuellen Befehls entstehende Anzahl an Maschinenbefehlen die vorgesehene Länge eines Tabelleneintrags, so wird ein Teil dieser Maschinenbefehle im ersten Befehlsspeicher abgelegt und die Tabelle enthält dann eine Sprungfunktion auf diesen Teil der Maschinenbefehle. Alternativ ist es auch möglich, einen dritten, als weiteres internes RAM ausgeführten Befehlsspeicher vorzusehen, welcher die zusätzlichen Maschinenbefehle enthält und mit der Sprungfunktion dann auf diesen weiteren internen Befehlsspeicher zu verzweigen.exceeds the at the translation number of machine instructions resulting from a virtual instruction the intended length of a table entry, this becomes a part of these machine commands stored in the first instruction memory and then the table contains a jump function on this part of the machine commands. alternative it is also possible to provide a third instruction memory configured as another internal RAM, which the additional Contains machine instructions and with the jump function then to this further internal instruction memory to branch.

Bei einer weiteren Ausgestaltung der Erfindung holt die Speicherzugriffseinheit per direkten Speicherzugriff nicht nur einen virtuellen Befehl von dem ersten Befehlsspeicher, sondern mehrere virtuelle Befehle auf einmal. Dies wird auch als DMA Burst-Read-Zugriff bezeichnet. Die virtuellen Befehle werden in einem zusätzlich vorhandenen internen Puffer zwischengespeichert. Die Anzahl der Zugriffe auf den ersten Befehlsspeicher wird damit reduziert, was sich positiv auf die gesamte Rechengeschwindigkeit der Recheneinheit auswirkt.at Another embodiment of the invention fetches the memory access unit direct memory access not just a virtual command from the first instruction memory, but multiple virtual instructions at once. This is also known as DMA burst read access. The virtual Commands are in addition to one cached existing internal buffer. The number of Access to the first instruction memory is thus reduced, which positively to the total computing speed of the arithmetic unit effect.

Bei einer anderen Ausführungsform der Erfindung werden der bzw. die zu einem virtuellen Befehl gehörenden Operanden an einer festgelegten Adresse abgelegt. Die Adressen dieser Operanden müssen dann nicht vom Prozessorkern berechnet werden, so dass die insgesamt auszuführende Anzahl an Maschinenbefehlen und damit der vom Programmcode benötigte Speicherplatz reduziert wird.at another embodiment of the invention become the operand (s) belonging to a virtual instruction stored at a specified address. The addresses of these operands have to then not be calculated by the processor core, so the total executed Number of machine commands and thus the memory required by the program code is reduced.

Die Erfindung wird nachfolgend anhand eines Ausführungsbeispiels und der Zeichnung sowie in weiteren Unteransprüchen verdeutlicht. Es zeigen:The Invention will be described below with reference to an embodiment and the drawing and in further subclaims clarified. Show it:

1 einen bekannten ASIC; 1 a known ASIC;

2 eine bekannte Anordnung zur Übersetzung von virtuellen Befehlen; 2 a known arrangement for the translation of virtual commands;

3 eine erste Ausführung einer erfindungsgemäßen Anordnung; 3 a first embodiment of an inventive arrangement;

4 eine zweite Ausführung einer erfindungsgemäßen Anordnung. 4 a second embodiment of an arrangement according to the invention.

1 zeigt eine bekannte Recheneinheit 1 mit einem extern angeordneten, ersten Befehlsspeicher 2, wie sie heute in Navigationsgeräten eingesetzt wird. Die Recheneinheit 1 ist als ASIC ausgeführt. Zu der Recheneinheit 1 gehören ein Prozessorkern 3, der unter anderem einen Befehls-Cache 4 (Instruction Cache) und einen Daten-Cache 5 (Data Cache) enthält, eine Speicherzugriffseinheit 6, ein zweiter, intern angeordneter Befehlsspeicher 7 und eine Bus-Schnittstelle 8. Über die Bus-Schnittstelle 8 ist die Recheneinheit 1 mit einem externen Adressbus 9 und einem externen Datenbus 10 verbunden, an denen wiederum der erste Befehlsspeicher 2 angeschlossen ist. Der Prozessorkern 3, die Speicherzugriffseinheit 6 und der zweite Befehlsspeicher 7 hängen alle an einem ersten Adress bus 11 sowie einem ersten Datenbus 12 und sind über diese beiden Busse mit der Bus-Schnittstelle 8 und damit auch mit dem ersten Befehlsspeicher 2 verbunden. Die Adressbusse sind in den Figuren weiß dargestellt und die Datenbusse wurden grau hinterlegt. Der Prozessorkern 3 sowie die Speicherzugriffseinheit 6 können über den ersten Adress- und Datenbus 11/12 einen byteweisen Lese-Zugriff auf den ersten Befehlsspeicher 2 durchführen. Da sich die beiden Einheiten den ersten Adress- und Datenbus 11/12 teilen, müssen sie unter Umständen aufeinander warten. 1 shows a known arithmetic unit 1 with an externally arranged, first instruction memory 2 , as it is used today in navigation devices. The arithmetic unit 1 is executed as an ASIC. To the arithmetic unit 1 belong to a processor core 3 Among other things, a command cache 4 (Instruction cache) and a data cache 5 (Data Cache), a memory access unit 6 , a second internally-arranged instruction memory 7 and a bus interface 8th , Via the bus interface 8th is the arithmetic unit 1 with an external address bus 9 and an external data bus 10 connected to which in turn the first instruction memory 2 connected. The processor core 3 , the memory access unit 6 and the second instruction memory 7 all hang on a first address bus 11 and a first data bus 12 and are over these two buses with the bus interface 8th and thus with the first instruction memory 2 connected. The address busses are shown in white in the figures and the data buses are grayed out. The processor core 3 as well as the memory access unit 6 can over the first address and data bus 11 / 12 a bytewise read access to the first instruction memory 2 carry out. Since the two units have the first address and data bus 11 / 12 they may have to wait for each other.

In 2 ist die aus der EP-950216-B1 bekannte Ausführung einer Hardware-Übersetzungseinheit zur Übersetzung von virtuellen Befehlen, genauer von Java Bytecodes, dargestellt. Die Grundstruktur aus Hauptrecheneinheit 15 und externem Befehlsspeicher 16, die über einen externen Adress- und Datenbus 17 miteinander verbunden sind, ist vergleichbar mit der Anordnung aus 1. Zusätzlich ist ein Präprozessor 18 vorhanden, welcher eine Übersetzungseinheit 19 enthält, in der eine Übersetzungstabelle 20 sowie ein Register 21 abgelegt sind. Das Register 21 enthält die Nummer des Registers der Hauptrecheneinheit, welches die zuletzt belegte Position des Speicherstapels (Top of Stack) speichert. Fordert die Hauptrecheneinheit 15 einen nächsten auszuführenden Befehl an, so holt der Präprozessor 18 aus dem externen Befehlsspeicher 16 den nächsten Java Bytecode und übersetzt ihn mit Hilfe der Übersetzungstabelle 20 und der Einträge im Register 21 in Maschinenbefehle. Das Register 21 ermöglicht dabei das Auffinden der zu bestimmten Bytecodes benötigten, auf dem Speicherstapel (Stack) abgelegten Operanden, die beispielsweise zur Ausführung einer Rechenoperation erforderlich sind. Die aus der Übersetzung resultierenden Maschinenbefehle werden in ei nem Zwischenpuffer 22 (Feeding Memory) zwischengespeichert und von dort an die Hauptrecheneinheit 15 übertragen.In 2 the embodiment of a hardware translation unit known from EP-950216-B1 for the translation of virtual instructions, more specifically Java bytecodes, is shown. The basic structure of main arithmetic unit 15 and external instruction memory 16 that have an external address and data bus 17 are connected to each other, is similar to the arrangement of 1 , In addition, there is a preprocessor 18 in front which is a translation unit 19 contains, in which a translation table 20 and a register 21 are stored. The registry 21 contains the number of the register of the main processing unit, which stores the most recently occupied position of the memory stack (top of stack). Demands the main ruler 15 a next command to be executed, the preprocessor fetches 18 from the external instruction memory 16 the next Java bytecode and translate it using the translation table 20 and the entries in the register 21 in machine commands. The registry 21 makes it possible to find the required to certain bytecodes on the memory stack (stack) stored operands that are required, for example, to perform an arithmetic operation. The machine instructions resulting from the translation are stored in an intermediate buffer 22 (Feeding Memory) cached and from there to the main computing unit 15 transfer.

In 3 ist eine erste erfindungsgemäße Anordnung abgebildet. Von der in 1 dargestellten Recheneinheit 1 mit externem, ersten Befehlsspeicher 2 unterscheidet sie sich nur dahingehend, dass die Bus-Schnittstelle 8 weggelassen wurde, da die Erfindung sowohl bei extern als auch bei intern, innerhalb eines ASIC, angeordnetem ersten Befehlsspeicher 2 anwendbar ist. Nach wie vor vorhanden sind der Prozessorkern 3 mit dem Befehls-Cache 4 und dem Daten-Cache 5 und der erste Adress- und Datenbus 11/12. Der erste Adress- und Datenbus 11/12 ist sowohl oberhalb als auch unterhalb der Speicherzugriffseinheit 60 angeordnet worden, um den Vorgang der Übersetzung von virtuellen Befehlen veranschaulichen zu können.In 3 a first arrangement according to the invention is shown. From the in 1 illustrated arithmetic unit 1 with external, first instruction memory 2 It only differs in that the bus interface 8th has been omitted since the invention has both first and second internally, within an ASIC, arranged first instruction memory 2 is applicable. The processor core still exists 3 with the instruction cache 4 and the data cache 5 and the first address and data bus 11 / 12 , The first address and data bus 11 / 12 is both above and below the memory access unit 60 arranged to illustrate the process of translating virtual instructions.

Vom Aufbau gegenüber 1 leicht geändert wurden die Speicherzugriffseinheit 60 und der zweite Befehlsspeicher 70, zwischen denen ein weiterer Adressbus 23 eingeführt wurde. Aufgrund der geringen Abwandlung des ASIC aus 1 wurde eine sehr kostengünstige hardwaretechnische Lösung für eine Übersetzung von virtuellen Befehlen gefunden. Es sind nur wenige zusätzliche Gatter im ASIC erforderlich, um diese Zusatzfunktionalität zu integrieren.From the construction opposite 1 the memory access unit was changed slightly 60 and the second instruction memory 70 , between which another address bus 23 was introduced. Due to the small modification of the ASIC 1 A very cost-effective hardware solution for translating virtual instructions was found. Only a few additional gates in the ASIC are required to integrate this additional functionality.

Die Arbeitsweise der abgewandelten Speicherzugriffseinheit 60 sowie das Zusammenspiel zwischen Prozessorkern 3, Speicherzugriffseinheit 60 und zweitem Befehlsspeicher 70 während der Übersetzung eines virtuellen Befehls gehen aus 3 und den nachstehenden Tabellen hervor.The operation of the modified memory access unit 60 and the interaction between the processor core 3 , Memory access unit 60 and second instruction memory 70 while translating a virtual command go off 3 and the tables below.

Bei dem Ausführungsbeispiel handelt es sich um die Übersetzung von virtuellen Java-Befehlen, also Java Bytecodes. In dem zweiten Befehlsspeicher 70 ist eine Übersetzungstabelle abgelegt, welche zu jedem Bytecode eine fest vorgegebene Anzahl von acht Maschinenbefehlen enthält. Um die Übersetzungstabelle in den zweiten Befehlsspeicher 70 laden zu können, werden die Verbindungen 24 und 26 zu dem ersten Adress- und Datenbus 11/12 benötigt.In the embodiment, it is the translation of Java virtual commands, so Java bytecodes. In the second instruction memory 70 a translation table is stored which contains a fixed number of eight machine commands for each bytecode. To the translation table in the second instruction memory 70 to be able to load, the connections 24 and 26 to the first address and data bus 11 / 12 needed.

Der Prozessorkern 3 ist ein 32-Bit-Prozessor, beispielsweise ein MIPS R 3000. Ein Maschinenbefehl hat also eine Länge von 32 Bit (4 Byte). Pro Java Bytecode sind demnach, aufgrund der fest vorgegebenen Anzahl von acht Maschinenbefehlen je Tabelleneintrag, 32 Byte an Maschinenbefehlen in der Übersetzungstabelle abgelegt.The processor core 3 is a 32-bit processor, for example, a MIPS R 3000. So a machine command has a length of 32 bits (4 bytes). Per Java bytecode, therefore, 32 bytes of machine instructions are stored in the translation table due to the fixed number of eight machine instructions per table entry.

Im nachfolgenden Beispiel wird das in Tabelle 1 gezeigte kurze Java Programm zur Addition zweier Integer und zur Erzeugung eines neuen Objektes übersetzt. Die aus dem Java Programm entstandenen Bytecodes sind in der zweiten Spalte eingetragen. Zum besseren Verständnis der Bedeutung der Bytecodes dient Spalte 3.in the The following example shows the short Java shown in Table 1 Program for adding two integers and creating a new one Translated object. The bytecodes resulting from the Java program are in the second Column entered. To better understand the meaning of bytecodes serves column 3.

Tabelle 1: Bytecodes eines Java Programmes

Figure 00140001
Table 1: Bytecodes of a Java program
Figure 00140001

Die Geräteadresse der Speicherzugriffseinheit 60 ist die 0xFF000000, d.h. die Speicherzugriffseinheit 60 wird über die acht oberen Bits des ersten Adressbusses 11 angesprochen. Dies wird in 3 dadurch verdeutlicht, dass die Adressleitungen A31 bis A24 für die Aktivierung der Speicherzugriffseinheit 60 (device select) verantwortlich sind.The device address of the memory access unit 60 is the 0xFF000000, ie the memory access unit 60 gets over the eight upper bits of the first address bus 11 addressed. This will be in 3 thereby making clear that the address lines A31 to A24 for the activation of the memory access unit 60 (device select) are responsible.

Will also der Prozessorkern 3 einen Java-Befehl aus dem ersten Befehlsspeicher 2 holen, so greift er auf den Adressbereich oberhalb der 0xFF000000 zu, wodurch der Zugriff unter Mitwirkung der Speicherzugriffseinheit 60 erfolgt. Für einen direkten Zugriff auf den ersten Befehlsspeicher 2, beispielsweise zum Ablegen von zu speichernden Daten, ruft der Prozessorkern 3 eine Adresse auf, bei der die Speicherzugriffseinheit 60 nicht über die Adressleitungen A31 bis A24 aktiviert wird. Dann findet die Kommunikation zwischen Prozessorkern 3 und dem ersten Befehlsspeicher 2 an der Speicherzugriffseinheit 60 vorbei statt, was in 3 durch die unterbrochen dargestellten Busleitungen 11 und 12 veranschaulicht wird. Unterbrochen sind sie hier deshalb gezeichnet, da die 3 genau den Fall des Zugriffs auf einen Java-Befehl darstellen soll.So the processor core wants 3 a Java command from the first instruction store 2 fetch, it accesses the address area above the 0xFF000000, whereby access with the help of the memory access unit 60 he follows. For direct access to the first instruction memory 2 For example, to store data to be stored, the processor core calls 3 an address at which the memory access unit 60 is not activated via the address lines A31 to A24. Then the communication between the processor core takes place 3 and the first instruction memory 2 at the memory access unit 60 past what's in 3 through the bus lines shown interrupted 11 and 12 is illustrated. They are interrupted here because of that 3 exactly the case of access to a Java command is supposed to represent.

Zur Erläuterung des Funktionsbeispiels sind noch weitere Vorbemerkungen erforderlich. So steht der zuletzt abgelegte Eintrag des Java Speicherstapels (Top of Java Stack) im Register 22 des Prozessorkerns 3 und ist noch nicht im ersten Befehlsspeicher 2 abgelegt. Der Zeiger auf die Adresse des nächsten freien Eintrags im Speicherstapel (Java Stack Pointer) steht in Register 23.To explain the functional example, further preliminary remarks are required. Thus, the most recently stored entry of the Java memory stack (Top of Java Stack) is in the register 22 of the processor core 3 and is not yet in the first instruction memory 2 stored. The pointer to the address of the next free entry in the memory stack (Java Stack Pointer) is in register 23 ,

Die Basisadresse des Java Bytecodes im ersten Befehlsspeicher 2 ist die 0x87F80000. Dieser Wert ist in Register 21 enthal ten. Ausgehend von dieser Basisadresse entspricht die in Tabelle 1 in der ersten Spalte eingetragene Java-Adresse einem Offset, um zum jeweiligen Bytecode zu gelangen.The base address of the Java bytecode in the first instruction memory 2 is the 0x87F80000. This value is in registers 21 Based on this base address, the Java address entered in Table 1 in the first column corresponds to an offset in order to arrive at the respective byte code.

Der Offset des ersten Java Bytecodes, die 0x10, ist an den Offset 0x200 des Adressbereichs des Prozessorkerns 3 gemapped, d.h. die jeweilige Java-Adresse wird um 5 Bits nach links verschoben, um daraus die zugehörige Befehlsadresse für den Prozessorkern 3 zu erzeugen. Der Wert 5 ist in Register 20 abgelegt.The offset of the first Java bytecode, which is 0x10, is at offset 0x200 of the address range of the processor core 3 is mapped, ie the respective Java address is shifted by 5 bits to the left, in order therefrom the associated instruction address for the processor core 3 to create. The value 5 is in register 20 stored.

Umgekehrt bedeuten die zugewiesenen Adressbereiche Folgendes: Versucht der Prozessorkern 3 einen nächsten auszuführenden Java-Befehl zu lesen, so spricht er eine Adresse oberhalb der 0xFF000000 an. Diese Adresse muss dann um 5 Bits nach rechts verschoben und mit der Basisadresse des ersten Befehlsspeichers 2 logisch verodert werden, um die Adresse des aus dem ersten Befehlsspeicher 2 abzuholenden Java-Bytecodes zu erhalten. In 3 ist dies dadurch angedeutet, dass die Speicherzugriffseinheit 60 die oberen 13 Bit der Basisadresse 0x87F80000 (A31 – A19) direkt auf den ersten Adressbus 11 legt und die übrigen 19 Bit A18 – A0 aus den um 5 Bits nach rechts verschobenen Adressbits A23 – A5 des ersten Adressbusses 13 gewinnt. Zum Ablegen der Basisadresse (base address) in der Speicherzugriffseinheit 60 dient die Verbindung 25 zu dem ersten Datenbus 12.Conversely, the assigned address ranges mean the following: Tries the processor core 3 To read a next Java command to execute, it addresses an address above the 0xFF000000. This address must then be shifted 5 bits to the right and the base address of the first instruction memory 2 be logically ORed to the address of the first instruction memory 2 to receive Java bytecodes to be fetched. In 3 this is indicated by the memory access unit 60 the upper 13 bits of the base address 0x87F80000 (A31 - A19) directly on the first address bus 11 sets and the remaining 19 bits A18 - A0 from the 5 bits to the right shifted address bits A23 - A5 of the first address bus 13 wins. To store the base address in the memory access unit 60 serves the connection 25 to the first data bus 12 ,

Das weiterhin in den Tabellen auftauchende Register 1 dient zur Zwischenspeicherung von Werten.The tab still appearing in the tables 1 serves for intermediate storage of values.

Mit Tabelle 2 wird die Übersetzung des ersten Java Bytecodes 0x04 (iconst 1) veranschaulicht. Der Prozessorkern 3 veran lasst auf dem ersten Adressbus 11 einen Zugriff auf die Adresse 0xFF000200. Diese wird von der Speicherzugriffseinheit 60 in die Adresse 0x87F80010 des ersten Befehlsspeichers 2 umgewandelt und von dort wird der Bytecode 0x04 abgeholt. Dieser liegt danach auf dem ersten Datenbus 12 an.Table 2 illustrates the translation of the first Java bytecode 0x04 (iconst 1). The processor core 3 caused on the first address bus 11 an access to the address 0xFF000200. This is from the memory access unit 60 in the address 0x87F80010 of the first instruction memory 2 converted and from there the bytecode 0x04 is fetched. This is then on the first data bus 12 at.

Tabelle 2: Übersetzung von iconst 1

Figure 00170001
Table 2: Translation of iconst 1
Figure 00170001

Zur Übersetzung des Bytecodes 0x04 in einen Maschinenbefehl erfolgt nun der "Umweg" über den zweiten Befehlsspeicher 70. Wie aus 3 hervorgeht, entsprechen die auf dem ersten Datenbus 12 liegenden Daten D7 – D0 den oberen acht Adressbits A12 – A5 des weiteren Adressbusses 23, über den der Befehlsspeicher 70 angesprochen wird. Dies entspricht wieder einer Verschiebeoperation um 5 Bits nach links. Die mittleren Adressbits A4 – A2 werden direkt vom ersten Adressbus 11 durchgereicht und die unteren beiden Bits A1 – A0 sind nicht gesetzt.To translate bytecode 0x04 into a machine instruction, the "detour" via the second instruction memory now takes place 70 , How out 3 indicates that they correspond to the first data bus 12 lying data D7 - D0 the upper eight address bits A12 - A5 of the further address bus 23 over which the instruction memory 70 is addressed. This again corresponds to a shifting operation by 5 bits to the left. The middle address bits A4 - A2 are directly from the first address bus 11 passed through and the lower two bits A1 - A0 are not set.

Die Bits A4 – A0 entsprechen dem Offset innerhalb eines Eintrags in der Übersetzungstabelle. Wie man bei der zweiten vom Prozessorkern 3 erzeugten Adresse, der 0xFF000204, erkennen kann, fordert der Prozessorkern 3 die Befehle wortweise an, d.h. er springt jeweils um eine Wortlänge von 32 Bit weiter. Die unteren beiden Bits, welche 4 Bytes im Speicher ansprechen, werden aus diesem Grund niemals belegt sein. Je Java Bytecode sind acht Einträge in der Übersetzungstabelle abgelegt, weshalb ausgehend von dem ersten Offset mit dem Wert 0 sieben Mal um 0x04 (32 Bit) weitergegangen werden muss. Der letzte Offset ist also die 0x1C, was gerade einer Belegung der Bitpositionen A4 bis A2 entspricht.Bits A4 - A0 correspond to the offset within an entry in the translation table. As with the second from the processor core 3 generated address, which can detect 0xFF000204, requests the processor core 3 the commands word by word, ie he jumps each by a word length of 32 bits on. The lower two bits, which are 4 bytes in memory, will never be occupied for this reason. For each Java bytecode, eight entries are stored in the translation table, which is why, starting from the first offset with the value 0, it must be continued seven times by 0x04 (32 bits). The last offset is therefore the 0x1C, which corresponds to an assignment of bit positions A4 to A2.

Die Umwandlung der Daten 0x04 in die zugehörige Adresse in der Übersetzungstabelle führt also auf den Wert 0x0080. Dort befindet sich der erste zur Übersetzung gehörende Eintrag zum Bytecode 0x04. Dieser erste Eintrag ("sw r22, (r23)") wird über die Verbindung 26 zum ersten Datenbus 12 an den Prozessorkern 3 übertragen.The conversion of the data 0x04 into the corresponding address in the translation table thus results in the value 0x0080. There is the first entry belonging to the translation for bytecode 0x04. This first entry ("sw r22, (r23)") is about the connection 26 to the first data bus 12 to the processor core 3 transfer.

Dieser fordert daraufhin den nächsten auszuführenden Befehl an, d.h. er springt in der Befehlsadresse um eine Wortlänge weiter. Die Speicherzugriffseinheit 60 greift auf den ersten Befehlsspeicher 2 zu und holt dort wieder an Adresse 0x87F80010 den Bytecode 0x04 ab (die zum Offset gehörenden unteren 5 Bits bleiben aufgrund der Shiftoperation unberücksichtigt). Durch das anschließende Hinzufügen der unteren 5 Bits (A1 und A0 als Null sowie Adressleitungen A4 – A2) an die Adresse des zweiten Befehlsspeichers 70 wird dann auf den zweiten zum Bytecode 0x04 gehörenden Eintrag in der Übersetzungstabelle zugegriffen, und zwar an Adresse 0x0084.This then requests the next command to be executed, ie it jumps in the command address by one word length. The storage access unit 60 accesses the first instruction memory 2 and retrieves there at address 0x87F80010 the byte code 0x04 (the lower 5 bits belonging to the offset are disregarded due to the shift operation). By subsequently adding the lower 5 bits (A1 and A0 as zero and address lines A4-A2) to the address of the second instruction memory 70 then the second entry in the translation table associated with bytecode 0x04 is accessed, at address 0x0084.

Die Übersetzung des Bytecodes 0x04 besteht aus drei Maschinenbefehlen, nämlich „sw r22, (r23)", „addiu r23, r23, 4" und „addiu r22, r0, 1". Da jedoch je Bytecode-Eintrag ein Speicherplatz von acht Maschinenbefehlen vorgesehen ist, müssen fünf Plätze übersprungen werden. Der entsprechende Sprungbefehl steht in Tabelle 2 in Zeile 3 („beq r0, r0, 0x14"). Ein Sprung um 0x14 Bytes entspricht genau einem Sprung um 5 Wortlängen. Der Sprungbefehl wurde in diesem Beispiel vor den letzten auszuführenden Maschinenbefehl gesetzt, da der verwendete Prozessorkern 3 eine Pipeline-Architektur besitzt. Die Befehls-Pipeline wird nach einem Sprungbefehl nicht vollständig geleert, sondern der nach dem Sprung in der Pipeline befindliche Maschinenbefehl wird stets noch mit ausgeführt. Um diese Eigenart optimal zu nutzen, sind in allen Tabellen 2 bis 5 die Sprungbefehle vor den letzten auszuführenden Maschinenbefehl gesetzt.The translation of the bytecode 0x04 consists of three machine instructions, namely "sw r22, (r23)", "addiu r23, r23, 4" and "addiu r22, r0, 1", however, since each bytecode entry has a memory space of eight machine instructions If there are five places to skip, the corresponding branch instruction appears in Table 2 in line 3 ("beq r0, r0, 0x14"). A jump of 0x14 bytes corresponds to exactly one jump by 5 word lengths. The jump command in this example was before the last machine command to be executed set as the used processor core 3 has a pipeline architecture. The instruction pipeline is not completely emptied after a jump instruction, but the machine instruction in the pipeline after the jump is always executed as well. In order to optimally use this peculiarity, in all tables 2 to 5 the jump instructions are set before the last machine instruction to be executed.

Tabelle 3 enthält eine Beschreibung der Übersetzung des nächsten Java-Bytecodes, 0x10 0x78 (bipush 120). Die 0x78 ist der Operand des bipush-Befehls.table 3 contains a description of the translation the next Java bytecodes, 0x10 0x78 (bipush 120). The 0x78 is the operand of the bipush command.

Der Prozessorkern 3 hat vorher als letztes einen Sprung um 5 Wortlängen vorgenommen und fordert deshalb als nächstes einen Befehl von der Adresse 0xFF000220 an. Die Umwandlung der Adressen und der Zugriff auf den zweiten Befehlsspeicher 70 erfolgt in gewohnter Weise.The processor core 3 has previously made a last jump of 5 word lengths and therefore requests an instruction from address 0xFF000220 next. The conversion of the addresses and the access to the second instruction memory 70 done in the usual way.

Der Operand des bipush-Befehls, die Zahl 120, wird aus dem ersten Befehlsspeicher 2 geholt, wofür der zugehörige Programmzähler des Prozessorkerns 3 aus Register 31 abgeholt und in eine Adresse des ersten Befehlsspeichers 2 umgewandelt werden muss (zweite bis fünfte Zeile der Tabelle 3).The operand of the bipush instruction, number 120, is taken from the first instruction memory 2 fetched, for which the corresponding program counter of the processor core 3 from register 31 fetched and into an address of the first instruction memory 2 must be converted (second to fifth line of Table 3).

Tabelle 3: Übersetzung von bipush 120

Figure 00200001
Table 3: Translation of bipush 120
Figure 00200001

Als nächster Java Bytecode wird der Additionsbefehl 0x60 übersetzt (Tabelle 4). Dieser Befehl bewirkt das Holen der zwei auf dem Stack platzierten Integers sowie deren Addition. Da dafür nur drei Maschinenbefehle erforderlich sind, wird wieder eine Sprungfunktion vor dem letzten zur Übersetzung gehörenden Maschinenbefehl eingefügt.When Next Java bytecode, the addition instruction 0x60 is translated (Table 4). This Command causes the two integers placed on the stack to be fetched as well as their addition. Because of that Only three machine commands are required, again a jump function before the last for translation belonging Machine command inserted.

Tabelle 4: Übersetzung von iadd

Figure 00210001
Table 4: Translation of iadd
Figure 00210001

Als letztes wird ein neues Objekt im ersten Befehlsspeicher 2 erzeugt. Diese Operation erfordert mehr als die maximalen acht Maschinenbefehle, weshalb die Speicherzugriffseinheit 60 an eine im ersten Befehlsspeicher 2 abgelegte, externe Routine von Maschinenbefehlen verzweigen muss. Der erste Befehl aus Tabelle 5 speichert das auf dem Stack befindliche Objekt, den Top of Stack. Die nächsten drei Maschinenbefehle dienen dazu, die Adresse 0x80001000 der externen Routine in das Register R1 zu laden und zu dieser Routine zu springen. Als nächstes wird der Java Stack Pointer aus Register 23 in das Register 4 verschoben, wo er als Operand der auszuführenden Routine vorgehalten wird („add r4, r0, r23"). Dieser Befehl wird wie bei allen anderen Sprungbefehlen noch vor dem eigentlichen Sprung ausgeführt.Lastly, a new object will be in the first instruction store 2 generated. This operation requires more than the maximum eight machine instructions, which is why the memory access unit 60 to one in the first instruction memory 2 stored external routine of machine commands must branch. The first command in Table 5 stores the stacked object, the top of stack. The next three machine instructions are to load the address 0x80001000 of the external routine into register R1 and to jump to this routine. Next, the java stack pointer is out of register 23 in the register 4 moved, where it is kept as an operand of the routine to be executed ("add r4, r0, r23") .This command is executed like all other jump instructions before the actual jump.

Der darauf folgende Befehl („add r23, r0, r2") wird dann nach der Rückkehr von der externen Routine ausgeführt. Der in Register 2 befindliche Rückgabewert der externen Routine wird als neuer Java Stack Pointer nach Register 23 verschoben. Als letztes wird der an dieser Adresse befindliche neue Top of Stack geladen („lw r22, (r23)").The following command ("add r23, r0, r2") is then executed after returning from the external routine 2 The return value of the external routine is stored as a new Java Stack Pointer after register 23 postponed. Finally, the new top of stack at this address is loaded ("lw r22, (r23)").

Tabelle 5: Übersetzung von new

Figure 00220001
Table 5: Translation of new
Figure 00220001

4 zeigt eine zweite erfindungsgemäße Ausführung, bei der die Speicherzugriffseinheit 60 zusätzlich über einen zweiten Adressbus 13 und einen zweiten Datenbus 14 an den ersten Befehlsspeicher 2 angebunden ist. Über diesen zweiten Adress- und Datenbus 13/14 kann die Speicherzugriffseinheit 60 auf Anforderung durch den Prozessorkern 3 einen direkten Speicherzugriff auf den ersten Befehlsspeicher 2 durchführen, während der Prozessorkern 3 gleichzeitig über den ersten Adress- und Datenbus 11/12 auf den zweiten Befehlsspeicher 70 zugreifen kann. Bezüglich des Ablaufs der Übersetzung von virtuellen Befehlen ändert sich jedoch nichts. 4 shows a second embodiment according to the invention, in which the memory access unit 60 additionally via a second address bus 13 and a second data bus 14 to the first instruction memory 2 is connected. About this second address and data bus 13 / 14 can the memory access unit 60 on request by the processor core 3 direct memory access to the first instruction memory 2 perform while the processor core 3 simultaneously via the first address and data bus 11 / 12 to the second instruction memory 70 can access. However, nothing changes with regard to the execution of the translation of virtual commands.

Claims (12)

Anordnung zur Übersetzung von virtuellen Befehlen in einer Datenverarbeitungseinheit mit einem Prozessorkern (3), einem ersten Befehlsspeicher (2), einem zweiten Befehlsspeicher (7, 70) und einer Speicherzugriffseinheit (6, 60), welche alle über einen ersten Adress- und Datenbus (11, 12) miteinander verbunden sind, wobei der Prozessorkern (3) sowie die Speicherzugriffseinheit (6, 60) über den ersten Adress- und Datenbus (11, 12) einen Befehl aus dem ersten Befehlsspeicher (2) holen können, dadurch gekennzeichnet, – dass der von der Speicherzugriffseinheit (60) aus dem ersten Befehlsspeicher (2) geholte Befehl ein virtueller Befehl ist, welchen die Speicherzugriffseinheit (60) in eine Speicheraddresse des zweiten Befehlsspeichers (70) umwandelt, wobei die Umwandlung des virtuellen Befehls in die Speicheradresse des zweiten Befehlsspeichers (70) dadurch erfolgt, dass die Bits des virtuellen Befehls (D7 – D0) direkt auf eine entsprechende Anzahl von Adressleitungen (A12 – A5) eines zwischen der Speicherzugriffseinheit (60) und dem zweiten Befehlsspeicher (70) vorhandenen weiteren Adressbusses (23) gegeben werden, und – dass die Speicherzugriffseinheit (60) über den weiteren Adressbus (23) einen Zugriff auf die Speicheradresse des zweiten Befehlsspeichers (70) vornimmt, wobei an dieser Speicheradresse ein Maschinenbefehl abgelegt ist, welcher zu einer Folge von Maschinenbefehlen gehört, die einer Übersetzung des virtuellen Befehls in durch den Prozessorkern (3) ausführbaren Programmcode entsprechen.Arrangement for the translation of virtual instructions in a data processing unit with a processor core ( 3 ), a first instruction memory ( 2 ), a second instruction memory ( 7 . 70 ) and a memory access unit ( 6 . 60 ), all via a first address and data bus ( 11 . 12 ), wherein the processor core ( 3 ) as well as the memory access unit ( 6 . 60 ) over the first address and data bus ( 11 . 12 ) a command from the first instruction memory ( 2 ), characterized in that - that of the memory access unit ( 60 ) from the first instruction memory ( 2 ) command is a virtual command to which the memory access unit ( 60 ) in a memory address of the second instruction memory ( 70 ), wherein the conversion of the virtual instruction to the memory address of the second instruction memory ( 70 ) is performed in that the bits of the virtual instruction (D7 - D0) directly to a corresponding number of address lines (A12 - A5) of a between the memory access unit ( 60 ) and the second instruction memory ( 70 ) existing further address bus ( 23 ), and - that the memory access unit ( 60 ) via the further address bus ( 23 ) accesses the memory address of the second instruction memory ( 70 ), wherein at this memory address a machine instruction is stored, which belongs to a sequence of machine instructions which a translation of the virtual instruction in by the processor core ( 3 ) correspond to executable program code. Anordnung nach Anspruch 1, dadurch gekennzeichnet, dass die Speicherzugriffseinheit (60) über einen zweiten Adress- und Datenbus (13/14) mit dem ersten Befehlsspeicher (2) verbunden ist und auf Anforderung vom Prozessorkern (3) über diesen zweiten Adress- und Datenbus (13/14) einen direkten Speicherzugriff zum Übertragen eines Befehls aus dem ersten Befehlsspeicher (2) in den zweiten Befehlsspeicher (70) durchführt.Arrangement according to claim 1, characterized in that the memory access unit ( 60 ) via a second address and data bus ( 13 / 14 ) with the first instruction memory ( 2 ) and upon request from the processor core ( 3 ) via this second address and data bus ( 13 / 14 ) a direct memory access for transmitting a command from the first instruction memory ( 2 ) into the second instruction memory ( 70 ). Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der zweite Befehlsspeicher (70) eine Tabelle enthält, in der jeweils einem virtuellen Befehl eine fest vorgegebene Anzahl von Maschinenbefehlen zugeordnet ist.Arrangement according to one of the preceding claims, characterized in that the second instruction memory ( 70 ) contains a table in each of which a virtual command is assigned a fixed number of machine commands. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass sich die aus dem virtuellen Befehl gewonnene Speicheradresse zusammensetzt aus einer Anzahl oberer Adress-Bits (A12 – A5), welche dem virtuellen Befehl entsprechen (D7 – D0), und einer Anzahl unterer Adress-Bits (A4 – A0), welche durch die Anzahl an Maschinenbefehlen pro virtuellem Befehl in der Tabelle festgelegt ist.Arrangement according to one of the preceding claims, characterized characterized in that the recovered from the virtual command Memory address is composed of a number of upper address bits (A12 - A5), which correspond to the virtual instruction (D7 - D0), and a number of lower ones Address bits (A4 - A0) which by the number of machine instructions per virtual instruction in the Table is set. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die unteren Adress-Bits (A4 – A0) des weiteren Adressbusses (23) den unteren Adress-Bits (A4 – A0) des ersten Adressbusses (11) entsprechen.Arrangement according to one of the preceding claims, characterized in that the lower address bits (A4 - A0) of the further address bus ( 23 ) the lower address bits (A4 - A0) of the first address bus ( 11 ) correspond. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass bei einem virtuellen Befehl, der weniger als die fest vorgegebene Anzahl an Maschi nenbefehlen benötigt, zusätzlich eine Sprungfunktion zum Überspringen der leer gebliebenen Speicherstellen in der Tabelle abgelegt ist.Arrangement according to one of the preceding claims, characterized indicates that for a virtual command that is less than the fixed number of machine commands required, additionally a jump function to skip the empty memory locations are stored in the table. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Sprungfunktion vor dem letzten tatsächlich zur Übersetzung des virtuellen Befehls gehörenden Maschinenbefehl abgelegt ist.Arrangement according to one of the preceding claims, characterized characterized in that the jump function before the last actually to the translation belonging to the virtual command Machine command is stored. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass bei einem virtuellen Befehl, der mehr als die fest vorgegebene Anzahl an Maschinenbefehlen benötigt, einer der in der Tabelle abgelegten Maschinenbefehle eine Sprungfunktion ist, die auf eine im ersten Befehlsspeicher (2) abgelegte Folge von Maschinenbefehlen verzweigt.Arrangement according to one of the preceding claims, characterized in that, in the case of a virtual instruction which requires more than the fixed number of machine instructions, one of the machine instructions stored in the table is a jump function which is based on one in the first instruction memory ( 2 ) stored sequence of machine commands branched. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass in der Tabelle acht Maschinenbefehle pro virtuellem Befehl abgelegt sind.Arrangement according to one of the preceding claims, characterized characterized in that in the table eight machine instructions per virtual Command are filed. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Speicherzugriffseinheit (60) mehrere virtuelle Befehle mit einem einzigen direkten Speicherzugriff aus dem ersten Befehlsspeicher (2) holt und in einem Puffer zwischenspeichert.Arrangement according to one of the preceding claims, characterized in that the memory access unit ( 60 ) several virtual instructions with a single direct memory access from the first instruction memory ( 2 ) and cache in a buffer. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass ein zu einem virtuellen Befehl gehörender Operand an einer fest vorgegebenen Adresse in einem Speicher abgelegt ist.Arrangement according to one of the preceding claims, characterized characterized in that an operand associated with a virtual instruction is stored in a memory at a fixed address. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der virtuelle Befehl ein Java Bytecode ist.Arrangement according to one of the preceding claims, characterized characterized in that the virtual instruction is a Java bytecode.
DE200410005123 2004-02-02 2004-02-02 Arrangement for the translation of virtual instructions in a data processing unit Expired - Fee Related DE102004005123B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200410005123 DE102004005123B4 (en) 2004-02-02 2004-02-02 Arrangement for the translation of virtual instructions in a data processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200410005123 DE102004005123B4 (en) 2004-02-02 2004-02-02 Arrangement for the translation of virtual instructions in a data processing unit

Publications (2)

Publication Number Publication Date
DE102004005123A1 DE102004005123A1 (en) 2005-09-08
DE102004005123B4 true DE102004005123B4 (en) 2005-12-22

Family

ID=34832493

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200410005123 Expired - Fee Related DE102004005123B4 (en) 2004-02-02 2004-02-02 Arrangement for the translation of virtual instructions in a data processing unit

Country Status (1)

Country Link
DE (1) DE102004005123B4 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4587612A (en) * 1982-10-22 1986-05-06 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4587612A (en) * 1982-10-22 1986-05-06 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RADHAKRISHNAN,R.: Microarchitectural Techniques to Enable Efficient Java Execution, Dissertation, August 2000, University of Texas, Austin,S.67-74 *

Also Published As

Publication number Publication date
DE102004005123A1 (en) 2005-09-08

Similar Documents

Publication Publication Date Title
DE69723286T2 (en) REAL TIME PROGRAMMING LANGUAGE ACCELERATOR
DE69820027T2 (en) DEVICE FOR EXECUTING VIRTUAL MACHINE COMMANDS
DE10393920B4 (en) Methods and systems for controlling virtual machines
DE60131864T2 (en) SAVING STACK OPERANDS IN TABS
DE60203612T2 (en) DATA PROCESSING WITH MULTI-COMMAND PHRASES
DE69727773T2 (en) Improved branch prediction in a pipeline microprocessor
DE69433339T2 (en) Load / store functional units and data caches for microprocessors
DE69434669T2 (en) Speculative command queue for variable byte length commands
DE60006410T2 (en) METHOD AND SYSTEM FOR DISTRIBUTING OBJECT-ORIENTED COMPUTER PROGRAMS
DE69836902T2 (en) COMPUTER SETTING ON VARIABLE INSTRUCTIONS
DE69814174T2 (en) JAVA RUNTIME SYSTEM WITH CHANGED CONSTANT COLLECTION
DE102018213430A1 (en) Accelerator with low latency
DE60311462T2 (en) Method and apparatus for protocol processing in computer systems using the translation of memory addresses
DE112010004971T5 (en) A system, method, and apparatus for a cache flush of a page area and TLB invalidation of a range of entries
DE112013002956T5 (en) Preloading branch predictions
DE112005003098T5 (en) A method and apparatus for accessing physical memory from a high power CPU or processor element
DE102008025476A1 (en) Translation of a virtual address into a physical address with support of page attributes
DE19527031A1 (en) Improved device for reducing delays due to branching
DE69937611T2 (en) Intelligent buffer memory
DE69816775T2 (en) DEVICE FOR DATA PROCESSING WITH STACKED STRUCTURE
DE69815482T2 (en) Computer arrangement with processor and memory hierarchy and its operating method
DE69630416T2 (en) Microprocessor for executing commands with variable lengths
DE4238099C2 (en) Microprocessor with multiple operating modes
EP0075714B1 (en) On-chip microprocessor cache memory and its operating method
DE60014438T2 (en) CALL GATE EXPANSION FOR 64 BIT ADDRESSING

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: CONTINENTAL AUTOMOTIVE GMBH, 30165 HANNOVER, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0008400000