TECHNISCHES GEBIETTECHNICAL AREA
Diese Erfindung betrifft ein Verfahren und eine Vorrichtung zum Entfernen nicht benötigter Anweisungen und insbesondere ein Verfahren und eine Vorrichtung zum Entfernen nicht benötigter Anweisungen in einem Computer, sowie ein Verfahren zur Kompression von Anweisungscodes.This invention relates to a method and apparatus for removing unneeded instructions, and more particularly to a method and apparatus for removing unneeded instructions in a computer, and to a method for compressing instruction codes.
STAND DER TECHNIKSTATE OF THE ART
Bei einem reduced instruction set computer(RISC)-Aufbau sind alle Anweisungen mit gleicher Länge und einem vereinfachten Format aufgebaut. Dementsprechend kann der Aufbau des Prozessors und Kompilierers bei einem solchen RISC-Aufbau vereinfacht werden.In a reduced instruction set computer (RISC) setup, all instructions are built with the same length and a simplified format. Accordingly, the structure of the processor and compiler can be simplified in such a RISC structure.
Im Gegensatz zu einem complicated instrutction set computer(CISC)-Aufbau hat der vorstehend genannte RISC-Aufbau den Nachteil geringerer Effektivität und eines größeren Programmcodes. Daher werden die Programmcodes für RISC-Aufbaue häufig komprimiert, um die Anforderungen an den Speicherplatz im Speicher zu verringern.In contrast to a complicated instrutction set computer (CISC) design, the above-mentioned RISC design has the disadvantage of lower efficiency and larger program code. As a result, RISC build program code is often compressed to reduce storage space requirements.
Jedoch ist die Position der Anweisung des komprimierten Programmcodes nicht die gleiche wie diejenige im originalen Programmcode. Daher ist es der wichtigste Punkt des Komprimierens und Dekomprimierens, die korrekte Position der Anweisung aus dem komprimierten Programmcode herausfinden zu können. Insbesondere sollte das komprimierte Programm gemeinsam mit dem Ablaufplan des Programms dekomprimiert werden, so dass das Programm in ordnungsgemäße Programmteile dekomprimiert werden kann, die jeweils zum richtigen Zeitpunkt ausgeführt werden. Wenn das gesamte Programm dekomprimiert wird bevor das Programm ausgeführt wird, ist der Nutzen des Dekomprimierens des Programmcodes verringert. Andererseits falls die zutreffenden Positionen von Anweisungen unmittelbar aus dem dekomprimierten Programmcode herausgefunden werden soll, ist das am weitesten verbreitete Verfahren die Erzeugung eines Indexes. Der Index speichert die jeweiligen Beziehungen zwischen der Originaladresse von Anweisungen in einem unkomprimierten Programmcode und die Adressen der Anweisungen in dem komprimierten Programmcode.However, the position of the compressed program code instruction is not the same as that in the original program code. Therefore, the most important point of compression and decompression is finding out the correct position of the instruction from the compressed program code. In particular, the compressed program should be decompressed along with the schedule of the program so that the program can be decompressed into proper program parts that are executed at the right time. If the entire program is decompressed before the program is executed, the benefit of decompressing the program code is reduced. On the other hand, if the proper positions of instructions are to be found directly from the decompressed program code, the most common method is the generation of an index. The index stores the respective relationships between the original address of instructions in uncompressed program code and the addresses of the instructions in the compressed program code.
Durch die Verwendung des Indexes kann die Dekomprimierungseinheit die Positionen der Anweisungen richtig herausfinden und im Folgenden eine angemessene Dekomprimierung ausführen, um einen zutreffenden Programmcode zu erzeugen. Zur Handhabung dieses vorstehend beschriebenen Indexes ist es unglücklicherweise nicht nur notwendig, einen aufwändigen Index-Schaltkreis zu verwenden, sondern es steigen auch die Kosten entsprechend.Through the use of the index, the decompression unit can correctly find out the positions of the instructions and subsequently perform an appropriate decompression to generate an appropriate program code. Unfortunately, to handle this index described above, not only is it necessary to use a sophisticated index circuit, but the cost also increases accordingly.
Vorstehend beschriebene Komprimierungsverfahren für Programmcodes sind in den folgenden Artikeln oder Patenten beschrieben:
Andrew Wolfe und Alex Chanin, ”Executing Compressed Programs an An Embedded RISC Architecture” in proc. Micro-25: The 25th Annual International Symposium an Microarchitecture, 1992” US Patent No. 6,732,256 ”Method and apparatus for object code compression and decompression for computer systems” und US patent No. 6,892,292 ”Apparatus for one-cycle decompression of compressed data and methods of Operation thereof.”Program code compression methods described above are described in the following articles or patents:
Andrew Wolfe and Alex Chanin, "Executing Compressed Programs to An Embedded RISC Architecture" in proc. Micro-25: The 25 th Annual International Symposium on Microarchitecture, 1992 " US Pat. 6,732,256 "Method and apparatus for object code compression and decompression for computer systems" and US patent no. 6,892,292 Apparatus for one-cycle decompression of compressed data and methods of operation thereof.
Es gibt noch ein anderes wohl bekanntes Komprimierungsverfahren für Programmcodes bei dem der Satz an Anweisungen ausgedehnt wird. Das Verfahren verwendet eine zusätzliche Ausdehnungsanweisung mit einer kürzeren Länge, um eine ursprüngliche Anweisung zu ersetzen. Ein solches Verfahren ist beschrieben in dem US Patent 6,195,743 ”Verfahren und System zur Komprimierung eines Ausführungsprogramms für RISC durch eine Ausdehnung des Satzes der Anweisungen”.There is another well-known program code compression method in which the set of instructions is extended. The method uses an additional expansion instruction with a shorter length to replace an original instruction. Such a method is described in the US Patent 6,195,743 "Method and system for compressing an execution program for RISC by extending the set of instructions".
Weitere Beschreibungen finden sich in:
U.S Patente No. 6,199,126 , 6,233,674 , 5,852,471 , 5,862,398 , 5,878,267 , 5,893,143 , 6,131,152 , 6,216,223 , 6,442,680 und 6,859,870 , und in den Veröffenmtlichungen: M. Kozuch und A. Wolfe. ”Compression of Embedded System Programs” IEEE International Conference an Computer Design: VLSI in Computers & Processors, 1994, Haris Lekatsas und Wayne Wolf. ”Code Compression for Embedded Systems” 35th Design Automation Conference 1998, Charles Lefurgy, Eva Piccininni und Trevor Mudge. ”Reducing Code Size with Run-Time Decompression, und NIHAR R. MAHAPATRA, JIANGJIANG LIU; KRISHNAN SUNDARESAN; SRINIVAS DANGETI und BALAKRISHNA V. VENKATRAO: ”The Potential of Compression to Improve Memory System Performance, Power Consumption, and Cost”.Further descriptions can be found in:
US Pat. 6,199,126 . 6,233,674 . 5,852,471 . 5,862,398 . 5,878,267 . 5,893,143 . 6,131,152 . 6,216,223 . 6,442,680 and 6,859,870 , and in the publications: M. Kozuch and A. Wolfe. "Compression of Embedded System Program" IEEE International Conference on Computer Design: VLSI in Computers & Processors, 1994, Haris Lekatsas and Wayne Wolf. "Code Compression for Embedded Systems" 35 th Design Automation Conference 1998, Charles Lefurgy, Eva Piccininni and Trevor Mudge. "Reducing Code Size with Run-Time Decompression, and NIHAR R. MAHAPATRA, JIANGJIANG LIU; KRISHNAN SUNDARESAN; SRINIVAS DANGETI and BALAKRISHNA V. VENKATRAO: "The Potential of Compression to Improve Memory System Performance, Power Consumption, and Cost".
Aus der US 2004/0024990 A1 ist ein Computersystem bekannt, das in der Lage ist, nicht benötigte Anweisungen zu entfernen. Das Computersystem umfasst dabei einen Speicher zum Speichern einer Vielzahl von Anweisungen, einen Mikroprozessoreinheit MPU und, neben weiteren Elementen, eine Java Stack-Maschine JSM, die einen Kern aufweist, der mit einem Datenspeicher und einen Anweisungsspeicher verbunden ist.From the US 2004/0024990 A1 For example, a computer system is known which is capable of removing unneeded instructions. The computer system comprises a memory for storing a plurality of instructions, a microprocessor unit MPU and, among other elements, a Java Stack Machine JSM having a core connected to a data memory and an instruction memory.
Letzterer umfasst einen Pufferspeicher zum Speichern einer Vielzahl von pufferbaren Anweisungen. Der Kern der Java-Stack-Maschine umfasst eine Vor-Decodierlogik, mit deren Hilfe es möglich ist, nicht benötigte Anweisungen zu überspringen oder zu entfernen. Die Vor-Decodierlogik überprüft Anweisungen einer Vielzahl von Anweisungen oder Bytecodes, ob eine dieser Anweisungen eine ”Java Impdep1”-Anweisung ist, während die Decodierlogik oder Bearbeitungseinheit eine vorherige Anweisung oder den Bytecode decodiert. Wird dabei festgestellt, dass der Bytecode oder die Anweisung eine derartige Anweisung ist, dann wird die Bearbeitungseinheit veranlasst, das Decodieren dieser Anweisung zu überspringen und gleichzeitig aus einem ersten Bearbeitungsmodus in einen zweiten zu schalten, um die nächste Anweisung im zweiten Modus zu decodieren. Dabei kann ein Programmzähler benutzt werden, der auf die Anweisung zeigt, die von der Bearbeitungseinheit decodiert wird. Wenn gleichzeitig die Vor-Decodierlogik feststellt, dass eine Java Impdepl-Anweisung vorliegt, kann eine Programmzählerberechnungslogik den Programmzähler erhöhen, um die Java Impdepl-Anweisung zu überspringen und direkt auf die nachfolgende zu decodierende Anweisung zeigen, so dass die Java Impdepl-Anweisung nicht decodiert oder bearbeitet wird.The latter includes a buffer memory for storing a plurality of bufferable instructions. The core of the Java stack engine includes pre-decode logic that allows it to skip unneeded instructions or remove. The pre-decode logic checks instructions of a plurality of instructions or bytecodes whether one of these instructions is a "Java Impdep1" instruction while the decode logic or processing unit is decoding a previous instruction or the bytecode. If it is determined that the bytecode or instruction is such an instruction, then the processing unit is caused to skip the decoding of that instruction and simultaneously to switch from a first edit mode to a second to decode the next instruction in the second mode. A program counter pointing to the instruction decoded by the processing unit can be used. At the same time, as the pre-decode logic determines that there is a Java Impdepl instruction, program counter calculation logic may increment the program counter to skip the Java Impdepl instruction and point directly to the subsequent instruction to be decoded so that the Java Impdepl instruction does not decode or edited.
Die US 6,907,516 B2 betrifft ein Komprimierverfahren, bei dem ein Disassembler eine Anzahl von Segmenten aus einer binären Liste extrahiert. Ein sequentieller Korrelationskomprimierer komprimiert dann jedes der extrahierten Segmente, um komprimierte Segmente zu erhalten. Ferner können in Basisblöcken einer binären Liste enthaltene Instruktionen neu geordnet werden, um das Komprimierungsverhältnis zu verbessernThe US 6,907,516 B2 relates to a compression method in which a disassembler extracts a number of segments from a binary list. A sequential correlation compressor then compresses each of the extracted segments to obtain compressed segments. Further, instructions contained in basic blocks of a binary list may be rearranged to improve the compression ratio
Die US 2004/0111710 A1 betrifft eine Komprimierungsverfahren, bei dem während der Analyse und Komprimierung eines Programms eine Adressenzuordnung erzeugt wird, die die nicht komprimierte Adressen mit den komprimierten Adressen verknüpft.The US 2004/0111710 A1 relates to a compression method in which, during the analysis and compression of a program, an address assignment is created which links the uncompressed addresses with the compressed addresses.
ZUSAMMENFASSUNG DER ERFINDUNGSUMMARY OF THE INVENTION
Angesichts der vorstehend genannten Probleme liegt eine Aufgabe der Erfindung darin, ein Verfahren und eine Vorrichtung zum Entfernen nicht benötigter Anweisungen zu schaffen, um die Effektivität des Computersystems zu verbessern, sowie einen entsprechenden Computer und ein Verfahren zur Kompression von Anweisungscodes.In view of the above problems, an object of the invention is to provide a method and apparatus for removing unneeded instructions to improve the effectiveness of the computer system, and a corresponding computer and method for compressing instruction codes.
Diese Aufgabe wird erfindungsgemäß durch eine Vorrichtung gemäß Anspruch 1, ein Verfahren gemäß Anspruch 5, einen Computer gemäß Anspruch 9 und ein Verfahren gemäß Anspruch 10 gelöst.This object is achieved by a device according to claim 1, a method according to claim 5, a computer according to claim 9 and a method according to claim 10.
Eine Vorrichtung und ein Verfahren zum Entfernen nicht benötigter Anweisungen umfassen: einen Vergleichsschaltkreis enthaltend eine Vielzahl an Vergleichereinheiten zum Vergleichen einer Vielzahl an Anweisungen mit wenigstens einem vorgegebenen Muster, um eine Vielzahl an Vergleichssignalen zu erzeugen, einen Steuerungslogik-Schaltkreis zur Erzeugung eines Anweisungsauswahl-Signals und einen Multiplexer zum Empfangen der Vielzahl an Anweisungen und des Anweisungsauswahl-Signals und zur Ausgabe wenigstens einer der Vielzahl an Anweisungen entsprechend dem Anweisungsauswahl-Singal, wobei der Steuerungslogik-Schaltkreis ein Schritt-Signal an eine Verarbeitungseinheit ausgibt und die Verarbeitungseinheit die vom Multiplexer ausgegebene Anweisung entsprechend dem Schrittsignal bearbeitet.An apparatus and method for removing unneeded instructions comprises: a comparison circuit including a plurality of comparator units for comparing a plurality of instructions having at least one predetermined pattern to generate a plurality of comparison signals, a control logic circuit for generating an instruction selection signal, and a multiplexer for receiving the plurality of instructions and the instruction selection signal and outputting at least one of the plurality of instructions according to the instruction selection signal, the control logic circuit outputting a step signal to a processing unit and the processing unit outputting the instruction output from the multiplexer processed the step signal.
KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS
Es zeigen:Show it:
1 ein funktionales Blockschaltbild eines Computersystems entsprechend der Technik dieser Erfindung, 1 a functional block diagram of a computer system according to the technique of this invention,
2 unkomprimierte Anweisungen, 2 uncompressed instructions,
3a die Anweisungen aus 2 nach der Komprimierung, 3a the instructions 2 after compression,
3b die komprimierten Anweisungen aus 3a, die hintereinander angeordnet sind, 3b the compressed statements 3a which are arranged one behind the other,
4 komprimierte Anweisungen, 4 compressed instructions,
5 die Anweisungen aus 4 nach der Dekomprimierung, 5 the instructions 4 after decompression,
6a ein Flussdiagramm eines Komprimierungsverfahrens gemäß der Erfindung, 6a a flow chart of a compression method according to the invention,
6b ein Flussdiagramm eines Komprimierungsverfahrens gemäß der Erfindung, 6b a flow chart of a compression method according to the invention,
7 komprimierte Anweisungen nach einer anderen Ausführungsform der Erfindung, 7 compressed instructions according to another embodiment of the invention,
8a das Flussdiagramm eines Komprimierungsverfahrens gemäß der Erfindung, 8a the flow chart of a compression method according to the invention,
8b das Flussdiagramm eines Komprimierungsverfahrens gemäß der Erfindung, 8b the flow chart of a compression method according to the invention,
9 komprimierte Anweisungen nach einer anderen Ausführungsform der Erfindung, 9 compressed instructions according to another embodiment of the invention,
10 komprimierte Anweisungen, die jeweils nach verschiedenen Komprimierungsverfahren gemäß der Erfindung komprimiert sind, 10 compressed instructions, each compressed according to different compression methods according to the invention,
11 eine Vorrichtung zur Entfernung nicht benötigter Anweisungen gemäß der Erfindung, und 11 a device for removing unneeded instructions according to the invention, and
12 ein Computersystem mit einer Entfernereinheit gemäß der Erfindung. 12 a computer system with a remover unit according to the invention.
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNGDETAILED DESCRIPTION OF THE INVENTION
Der Kerngedanke der Erfindung wird mit Bezug auf die beiliegenden Zeichnungen erläutertet.The essence of the invention will be explained with reference to the accompanying drawings.
1 ist ein funktionales Blockschaltbild eines Computersystems 100 entsprechend der Erfindung. Das Computersystem 100 umfasst einen Hauptspeicher 102 zur Speicherung von Anweisungen und Daten, einen Pufferspeicher 104 zur Speicherung pufferbarer Anweisungen und Daten, eine Dekomprimierungseinheit 106 zum Empfang unkomprimierter/komprimierter Anweisungen, die aus dem Pufferspeicher 104 kommen, zur Dekomprimierung der komprimierten Anweisungen, eine Bearbeitungseinheit 108 zum Empfang unkomprimierter/dekomprimierter Anweisungen von der Dekomprimierungseinheit 106 und zur Bearbeitung der Daten aus dem Pufferspeicher 104, und einen Adressenumsetzer 110 zur Umsetzung der Adressen aus der Bearbeitungseinheit 108 in entsprechende Adressen im Hauptspeicher 102 oder Pufferspeicher 104. 1 is a functional block diagram of a computer system 100 according to the invention. The computer system 100 includes a main memory 102 for storing instructions and data, a buffer memory 104 for storing bufferable instructions and data, a decompression unit 106 to receive uncompressed / compressed instructions from the buffer 104 come to decompress the compressed instructions, a processing unit 108 for receiving uncompressed / decompressed instructions from the decompression unit 106 and for processing the data from the buffer memory 104 , and an address translator 110 to implement the addresses from the processing unit 108 in corresponding addresses in the main memory 102 or cache 104 ,
Wenn die Bearbeitungseinheit 108 eine bestimmte Anweisung braucht, wird eine Anweisungsadresse an den Adressenumsetzer 110 ausgegeben. Der Adressenumsetzer 110 setzt die Anweisungsadresse in eine entsprechende Adresse im Pufferspeicher 104 oder im Hauptspeicher 102 um. Wenn die zu vorstehend genannter Adresse zugehörige Anweisung im Pufferspeicher 104 gespeichert ist erhält die Bearbeitungseinheit 108 die benötigte Anweisung unmittelbar aus dem Pufferspeicher 104. Andernfalls, wenn der Pufferspeicher 104 die zu vorstehend genannter Adresse gehörige Anweisung nicht speichert, liest die Bearbeitungseinheit 108 die benötigten Anweisungen oder Daten aus dem Hauptspeicher 102 aus.If the editing unit 108 requires a particular instruction, an instruction address is sent to the address translator 110 output. The address translator 110 sets the instruction address to a corresponding address in the buffer memory 104 or in main memory 102 around. If the instruction associated with the above-mentioned address is in the buffer memory 104 is saved receives the processing unit 108 the required instruction directly from the buffer memory 104 , Otherwise, if the cache 104 the instruction associated with the above-mentioned address does not store reads the processing unit 108 the required instructions or data from the main memory 102 out.
Da die unkomprimierten Anweisungen mehr Speicherplatz des Hauptspeichers 102 oder des Pufferspeichers 104 belegen können die Anweisungen komprimiert und die komprimierten Anweisungen dann im Hauptspeicher 102 oder im Pufferspeicher 104 gespeichert werden. Somit können mehr Anweisungen in dem Hauptspeicher 102 und dem Pufferspeicher 104 gespeichert werden. Für eine vorgegebene Bandbreite eines Datenbusses ist die Effektivität beim Auslesen verbessert, wenn die im Hauptspeicher 102 gespeicherten Anweisungen komprimiert worden sind.Because the uncompressed instructions take up more memory of main memory 102 or the cache 104 The statements can be compressed and the compressed statements then stored in main memory 102 or in the buffer memory 104 get saved. Thus, more instructions may be in main memory 102 and the cache 104 get saved. For a given bandwidth of a data bus, read-out efficiency is improved when stored in main memory 102 stored instructions have been compressed.
Weiterhin wird ein neues Verfahren zur Komprimierung von Anweisungen angegeben, wobei Anweisungsblöcke, wie Anweisungsblöcke eines RISC-Aufbaus, eine bestimmte Länge haben, beispielsweise entsprechend der Größe des Puffers, in Anweisungsblöcke mit einem bestimmten Komprimierungsverhältnis komprimiert werden können.Furthermore, a new method for compressing instructions is given, in which instruction blocks, such as instruction blocks of a RISC structure, have a certain length, for example corresponding to the size of the buffer, which can be compressed into instruction blocks with a specific compression ratio.
Durch vorstehend beschriebenes bestimmtes Komprimierungsverhältnis kann mit dem Adressenumsetzer 110 die entsprechende Adresse im Hauptspeicher 102 oder im Pufferspeicher 104 errechnet werden, wo die entsprechende komprimierte Anweisung sich befindet, wenn die Bearbeitungseinheit 108 eine Anweisung an einer bestimmten Adresse auslesen muss. Hierfür liest die Bearbeitungseinheit 108 die komprimierte Anweisung aus dem Hauptspeicher 102 oder dem Pufferspeicher 104 aus. Falls das bestimmte Komprimierungsverhältnis 1/2 ist und die Bearbeitungseinheit eine binäre Anweisungsadresse 0100 ausgibt führt der Adressenumsetzer 110 eine Veränderungsfunktion der Anweisungsadresse 0100 entsprechend dem Komprimierungsverhältnis 1/2 aus. Somit wird die Anweisungsadresse 0100, dies entspricht der Vier im Dezimalsystem, in 0010 umgewandelt, dies entspricht der Zwei im Dezimalsystem. Das Komprimierungsverhältnis 1/2 ist nur beispielhaft gewählt. In realen Ausgestaltungen kann jedes andere Komprimierungsverhältnis, beispielsweise 1/2n, verwendet werden. Dies ist alles von der Erfindung mit umfasst.By the above-described specific compression ratio can with the address converter 110 the corresponding address in the main memory 102 or in the buffer memory 104 where the corresponding compressed instruction is located when the processing unit 108 must read a statement at a specific address. The processing unit reads for this 108 the compressed statement from main memory 102 or the cache 104 out. If the determined compression ratio is 1/2 and the processing unit issues a binary instruction address 0100, the address translator executes 110 a change function of the instruction address 0100 corresponding to the compression ratio 1/2. Thus, the instruction address 0100, which corresponds to the four in the decimal system, is converted to 0010, which corresponds to the two in the decimal system. The compression ratio 1/2 is chosen only as an example. In realizations, any other compression ratio, for example 1/2 n , may be used. This is all embraced by the invention.
Wenn das Komprimierungsverhältnis nicht 1/2n beträgt muss von dem Adressenumsetzer 110 eine andere logische Operation durchgeführt werden, die komplizierter sein kann als die vorstehend beschriebene Veränderungsfunktion. Die vorstehend genannten komplizierten logischen Operationen sind dem Fachmann bekannt und brauchen keine nähere Erläuterung.If the compression ratio is not 1/2 n from the address translator 110 another logical operation may be performed, which may be more complicated than the above-described change function. The above-mentioned complicated logical operations are known in the art and need no further explanation.
Üblicherweise wird für die Größe eines unkomprimierten Blocks eine Cache-Line als Einheit gewählt. Eine Cache-Line enthält häufig 4, 8, 16 oder 32 Anweisungen. Zur Vereinfachung enthält im folgenden ein unkomprimierter Anweisungsblock vier Anweisungen.Typically, a cache line is chosen as the unit for the size of an uncompressed block. A cache line often contains 4, 8, 16 or 32 instructions. For simplicity, an uncompressed instruction block will contain four instructions in the following.
Im folgenden sind die Anweisungen beispielhaft komprimiert, dies schränkt den Schutzumfang aber nicht ein. In einer realen Ausgestaltung kann vom Fachmann dieses Komprimierungsverfahren dazu verwendet werden, um nur-zu-lesende Daten zu komprimieren. Dies ist vom Schutzumfang der Erfindung mit umfasst.In the following, the instructions are compressed by way of example, but this does not limit the scope of protection. In a real embodiment, this compression method can be used by those skilled in the art to compress read-only data. This is included within the scope of the invention.
Im folgenden wird das Verfahren zum Komprimieren von Anweisungen beschrieben. Das Komprimieren der Anweisungen kann durchgeführt werden, nachdem ein Kompilierer/Assembler einen höher angesiedelten Programmcode in einen ausführbaren Programmcode kompiliert/assembliert hat. Die vorstehend genannten ausführbaren Programmcodes sind häufig Maschinencodes.The following describes the method of compressing instructions. Compressing the instructions may be performed after a compiler / assembler has compiled / assembled a higher-level program code into executable program code. The above executable program codes are often machine codes.
Der Vorgang des Komprimierens von Anweisungen wird häufig mit Hilfe eines unabhängigen Komprimierungsprogramms ausgeführt, um den kompilierten/assemblierten Maschinencode zu komprimieren oder durch das Verwenden eines Kompilierers/Assemblers mit einer Komprimierungsfunktion, um gleichzeitig während des Kompilierens/Assembelns der Programmcodes diese zu komprimieren. The process of compressing instructions is often performed using an independent compression program to compress the compiled / assembled machine code or by using a compiler / assembler with a compression function to concurrently compress it during compilation / assembilation of the program code.
2 ist eine Darstellung von Anweisungen in einem RISC-Aufbau. Jede Cache-Line umfasst z. B. vier Anweisungen, wobei jede der Anweisungen I1–I6 die gleiche Länge hat. Die Anweisungen I1–I16 sind keine speziellen RISC-Anweisungen. Hierbei sind vier Anweisungen zu einem Anweisungsblock zugehörig. Beispielsweise die Anweisungen I1–I4, I5–I8, I9–I12 und I3–I16 gehören jeweils zu den Anweisungsblöcken 202, 204, 206 und 208. Dies ist nur beispielhaft und schränkt den Schutzumfang nicht ein. Beispielsweise kann der Anweisungsblock 2n Anweisungen enthalten, wie 8, 16 oder 32 Anweisungen. 2 is a representation of instructions in a RISC setup. Each cache line comprises e.g. For example, there are four instructions, each of instructions I1-I6 having the same length. Instructions I1-I16 are not special RISC instructions. There are four instructions associated with a statement block. For example, instructions I1-I4, I5-I8, I9-I12 and I3-I16 belong to the instruction blocks, respectively 202 . 204 . 206 and 208 , This is only an example and does not limit the scope of protection. For example, the instruction block may include 2 n instructions, such as 8, 16 or 32 instructions.
Die RISC-Anweisungen I1–I16 in 2 haben die gleiche Länge und ein einfaches Format. Hierbei kann unter anderem ein Huffman-Verschlüsselungs- und Komprimierungsverfahren zum Komprimieren der RISC-Anweisungen I1–I16 verwendet werden. Das Komprimierungsverfahren führt das Komprimieren der vorstehend beschriebenen Anweisungsblöcke als jeweils einzelne Einheit aus oder dadurch, dass jede einzelne Anweisung eine Einheit ist. Das Ergebnis der Komprimierung ist in 3a dargestellt.The RISC instructions I1-I16 in 2 have the same length and a simple format. Among others, a Huffman encryption and compression method may be used to compress the RISC instructions I1-I16. The compression method performs the compression of the above-described instruction blocks as a single unit or by making each individual instruction a unit. The result of the compression is in 3a shown.
Weitere verwendbare Verfahren zur Komprimierung von RISC-Anweisungen beinhalten arithmetische Verschlüsselungen und dergleichen. Da diese dem Fachmann bekannt sind werden hierzu keine weiteren Erläuterungen gemacht.Other useful methods for compressing RISC instructions include arithmetic encryptions and the like. Since these are known to those skilled in the art, no further explanation will be given.
Weiterhin ist es möglich, wie in 3a dargestellt, dass verschiedene Anweisungsblöcke 302–308 jeweils unterschiedliche Komprimierungsverhältnisse aufweisen. Wenn daher die komprimierten Anweisungsblöcke 302–308 hintereinander gespeichert werden wie im Stand der Technik, um das Ziel des verringerten Speicherplatzes, wie in 3b dargestellt, zu erreichen, sind die ursprünglichen Positionen der Anweisungsblöcke 304–308 zufällig in verschiedenen Adressen angeordnet. Daher ist es im Stand der Technik notwendig, einen Index einzusetzen, der eine eindeutige Zuordnung zwischen der Anweisungsadresse vor der Komprimierung und der Anweisungsadresse nach der Komprimierung ermöglicht.Furthermore, it is possible, as in 3a shown that different statement blocks 302 - 308 each have different compression ratios. Therefore, if the compressed statement blocks 302 - 308 stored consecutively as in the prior art to the goal of reduced storage space, as in 3b to reach are the original positions of the instruction blocks 304 - 308 randomly arranged in different addresses. Therefore, in the prior art, it is necessary to employ an index that allows unambiguous association between the instruction address before compression and the instruction address after compression.
Um eine eindeutige Beziehung zwischen der Anweisungsadresse vor der Komprimierung und der Anweisungsadresse nach der Komprimierung zu erhalten wird eine komprimierte Nicht-Operationsansweisung (nop) in die komprimierten Anweisungen I1–I16 eingesetzt, um neue Anweisungsblöcke 402–414 zu bilden, wie in 4 dargestellt. Ebenso können unkomprimierte nop-Anweisungen in die unkomprimierten Anweisungen I1–I16 eingesetzt werden um dann die Anweisungen zu komprimieren, um neue Anweisungsblöcke 402–414 zu bilden. Jeder Anweisungsblock 402–414 verfügt über ein eigenes Komprimierungsverhältnis. Daher kann die Adresse in jedem Anweisungsblock 402–414 aus dem eigenen Komprimierungsverhältnis und der Anzahl der eingesetzten nop-Anweisungen ermittelt werden.To obtain a unique relationship between the instruction address before compression and the instruction address after compression, a compressed non-instruction instruction (nop) is inserted into the compressed instructions I1-I16 to provide new instruction blocks 402 - 414 to form, as in 4 shown. Likewise, uncompressed nop instructions may be inserted into the uncompressed instructions I1-I16 to then compress the instructions to new instruction blocks 402 - 414 to build. Each statement block 402 - 414 has its own compression ratio. Therefore, the address in each statement block 402 - 414 determined from their own compression ratio and the number of nop instructions used.
Hier beträgt das eigene Komprimierungsverhältnis 1/2. Dies stellt keine Beschränkung dar. In tatsächlichen Ausführungen kann ein Komprimierungsverhältnis von 1/2n oder sonstige Verhältnisse gewählt werden. Da die nop-Anweisung bei einem RISC-Aufbau keinerlei Funktion ausführen muss ist der Code der nop-Anweisung sehr einfach, so dass die nop-Anweisung ein sehr großes Komprimierungsverhältnis aufweisen kann. Vorstehend wurde beschrieben, dass eine nop-Anweisung verwendet wird. Dies stellt aber keine Beschränkung der Erfindung dar. Bei tatsächlichen Ausführungen und solange eine Anweisung ein großes Komprimierungsverhältnis hat und die Richtigkeit des ursprünglichen Programms nicht beeinflusst, kann die Anweisung verwendet werden, um die vorstehend beschriebene nop-Anweisung zu ersetzen.Here the own compression ratio is 1/2. This is not a limitation. In actual embodiments, a compression ratio of 1/2 n or other ratios may be chosen. Since the nop instruction does not need to perform any function in a RISC setup, the code of the nop instruction is very simple, so the nop instruction can have a very large compression ratio. It has been described above that a nop instruction is used. However, this is not a limitation of the invention. In actual implementations and as long as an instruction has a large compression ratio and does not affect the correctness of the original program, the instruction may be used to replace the nop instruction described above.
Wie in 4 dargestellt, beinhaltet jede Cache-Line zwei Anweisungsblöcke. Jeder Anweisungsblock umfasst vier Anweisungen. Die Anweisungsblöcke 404–414 beinhalten die eingesetzten nop-Anweisungen. Wenn, wie in 3a dargestellt, die Größe des Anweisungsblocks, der aus vier komprimierten Anweisungen zusammengesetzt ist, kleiner ist als die Hälfte des unkomprimierten Anweisungsblocks, wie der Anweisungsblock 302, der aus den Anweisungen I1–I4 zusammengesetzt ist, dann besteht keine Notwendigkeit, eine nop-Anweisung in die vier Anweisungen einzusetzen oder die vier Anweisungen zu trennen, um einen neuen Anweisungsblock zu bilden.As in 4 Each cache line includes two instruction blocks. Each instruction block comprises four instructions. The instruction blocks 404 - 414 include the used nop instructions. If, as in 3a As shown, the size of the instruction block composed of four compressed instructions is less than half of the uncompressed instruction block, such as the instruction block 302 which is composed of instructions I1-I4, then there is no need to insert a nop instruction into the four instructions or separate the four instructions to form a new instruction block.
Wenn die ursprünglich komprimierten vier Anweisungen nicht zu einem Anweisungsblock mit einem Komprimierungsverhältnis von ½ (0,5) oder kleiner zusammengesetzt werden können, müssen die vier Anweisungen getrennt werden. Die getrennten Anweisungen bilden mit den nop-Anweisungen neue Anweisungsblöcke. Beispielsweise ist der Anweisungsblock 304 aus den Anweisungen I5–I8 zusammengesetzt und wird getrennt. Mit den getrennten Anweisungen werden jeweils neue Anweisungsblöcke 404 und 406 mit nop-Anweisungen gebildet, wie in 4 dargestellt.If the originally compressed four instructions can not be assembled into a block of instructions with a compression ratio of ½ (0.5) or smaller, the four instructions must be separated. The separate instructions form new instruction blocks with the nop instructions. For example, the statement block 304 composed of the instructions I5-I8 and is separated. The separate statements each become new statement blocks 404 and 406 formed with nop instructions, as in 4 shown.
Wenn die vier Anweisungen des Anweisungsblocks nicht die Hälfte des Speicherplatzes der Cache-Line, wie beispielsweise die Anweisungsblöcke 402–408 und 414, belegen können eine oder eine Vielzahl an Bits 416 in den leeren Teil des Anweisungsblocks hinzugefügt werden. Diese Bits 416 werden vernachlässigbare Bits nach der Dekomprimierung. If the four instructions of the instruction block do not occupy half the cache line memory space, such as the instruction blocks 402 - 408 and 414 , can occupy one or a plurality of bits 416 be added to the empty part of the instruction block. These bits 416 become negligible bits after decompression.
Wenn das Programm ausgeführt wird werden die Anweisungen häufig nacheinander bearbeitet entsprechend ihren Adressen. Hierzu gibt es eine Ausnahme. Falls eine Verzweigungsanweisung, eine Sprunganweisung oder eine Aufrufanweisung, die auf eine Zieladresse verweist, ausgeführt wird, kann das Programm springen, um die Anweisung in der Zieladresse auszuführen. Nachfolgend wird die Anweisung der Zieladresse ausgeführt. Hierbei wird zur Vermeidung einer falschen Ausführung des Programms die vorstehend genannte Zieladresse, auf die von der Verzweigungsanweisung, der Sprunganweisung oder der Aufrufanweisung hingewiesen wird, entsprechend der Anzahl der eingesetzten nop-Anweisungen korrigiert.When the program is executed, the instructions are often processed sequentially according to their addresses. There is an exception for this. If a branch instruction, a jump instruction or a call instruction referring to a destination address is executed, the program may jump to execute the instruction in the destination address. Subsequently, the instruction of the destination address is executed. Here, in order to avoid erroneous execution of the program, the above-mentioned destination address pointed to by the branch instruction, the jump instruction or the call instruction is corrected according to the number of used nop instructions.
Zum Beispiel ist in den 2 und 5 die unkomprimierte Anweisung I9 die neunte Anweisung, aber die Anweisung I9 wird die I3. Anweisung nach dem Einsetzen der nop-Anweisungen, wobei diese 13 Anweisungen die Anweisungen I1–I9 und vier nop-Anweisungen beinhalten. Angenommen, dass die unkomprimierten Anweisungen I1–I16 jeweils zu den binären Adressen 0000, 0001, 0010, ..., I110 und I111 gehören und dass die unkomprimierte Anweisung I1 auf die Zieladresse 1000 verweist. Dann wird die Anzahl der eingesetzten nop-Anweisungen hinzuaddiert, hier ist diese Anzahl vier, wobei die Anweisung I9 auf die Zieladresse 1000 verwies. Somit wird die Zieladresse 1000 zu 1100 verändert, so dass Fehler durch unzutreffende Zieladressen vermieden sind.For example, in the 2 and 5 the uncompressed I9 instruction is the ninth instruction, but the I9 instruction becomes the I3. Instruction after the insertion of the nop instructions, these 13 instructions containing the instructions I1-I9 and four nop instructions. Assume that the uncompressed instructions I1-I16 belong to the binary addresses 0000, 0001, 0010, ..., I110, and I111, respectively, and that the uncompressed I1 instruction references the destination address 1000. Then the number of nop instructions used is added, here this number is four, with instruction I9 referring to the destination address 1000. Thus, the destination address 1000 is changed to 1100, so that errors due to incorrect destination addresses are avoided.
Nachfolgend wird beschrieben, wie ein Computersystem die komprimierten Anweisungen verwendet. Da die in den 1 und 4 dargestellten komprimierten Anweisungsblöcke 402–414 jeweils ein eigenes Komprimierungsverhältnis, hier 1/2 (0,5), aufweisen, kann der Adressenumsetzer 110 eine entsprechende Adresse im Hauptspeicher 102 oder im Pufferspeicher 104 nach der Adresse, die von der Bearbeitungseinheit 108 kommt, berechnen. Wenn die Bearbeitungseinheit 108 eine Anweisungsadresse 1100, entsprechend der Anweisung 19 in 5, übermittelt, führt der Adressenumsetzer 110 die vorstehend beschriebene Verschiebung an der Anweisungsadresse 1100 entsprechend dem Komprimierungsverhältnis ½(0,5) derart aus, dass die Anweisungsadresse 1100 in 0110 umgewandelt wird, entsprechend der Anweisung 19 aus 5. Nachfolgend geben der Hauptspeicher 102 oder der Pufferspeicher 104 alle Anweisungen der Cache-Line, in der die Adresse 0110 angeordnet ist, an die Dekomprimierungseinheit 106 weiter. Die Dekomprimierungseinheit 106 verwendet dann ein Dekomprimierungsverfahren, wie eine Huffman-Verschlüsselung, die dem Komprimierungsverfahren entspricht, um jede Anweisung zu dekomprimieren. Die dekomprimierten Anweisungen der Adresse 1100, die Anweisung 19 in 5, wird dann ausgegeben. Somit kann die Bearbeitungseinheit 108 die dekomprimierte Anweisung normal ausführen.The following describes how a computer system uses the compressed instructions. Since the in the 1 and 4 shown compressed instruction blocks 402 - 414 each have their own compression ratio, here 1/2 (0.5), the address translator 110 a corresponding address in the main memory 102 or in the buffer memory 104 according to the address provided by the processing unit 108 comes, calculate. If the editing unit 108 an instruction address 1100 corresponding to instruction 19 in FIG 5 , transmitted, the address translator performs 110 the above-described shift at the instruction address 1100 corresponding to the compression ratio ½ (0.5) such that the instruction address 1100 is converted to 0110, according to the instruction 19 5 , Below is the main memory 102 or the cache 104 all instructions of the cache line in which the address 0110 is located, to the decompression unit 106 further. The decompression unit 106 then uses a decompression method, such as Huffman encryption, which corresponds to the compression method to decompress each instruction. The decompressed instructions of address 1100, instruction 19 in 5 , is then issued. Thus, the processing unit 108 perform the decompressed statement normally.
Dadurch, dass nop-Anweisungen mit einem sehr hohen Komprimierungsverhältnis verwendet werden, ist es möglich, dass der neue komprimierte Anweisungsblock immer noch vier Anweisungen enthält und ein eigenes Komprimierungsverhältnis von 1/2(0,5) aufweist. Somit haben die Anweisungsadressen vor dem Komprimieren und die Anweisungsadressen nach dem Komprimieren eine eindeutige Beziehung. Wenn das Programm ausgeführt wird, kann mit einem Adressenumsetzer eine einfache Verschiebung erfolgen, so dass die richtigen Anweisungsadressen erhalten werden. Es ist nicht notwendig, dass eine nop-Anweisung am Ende eines Anweisungsblocks eingesetzt wird. Bei tatsächlichen Ausführungen kann die Einsetzposition frei gewählt werden, solange die Genauigkeit des Programms erhalten wird. Beispielsweise kann die nop-Anweisung zwischen zwei voneinander abhängige oder mit einander verbundene Anweisungen oder an das Ende einer Schleifenanweisung eingesetzt werden.By using nop instructions with a very high compression ratio, it is possible that the new compressed statement block still contains four instructions and has its own compression ratio of 1/2 (0.5). Thus, the instruction addresses before compression and the instruction addresses after compression have a unique relationship. When the program is executed, a simple translation can be done with an address translator so that the correct instruction addresses are obtained. It is not necessary to insert a nop instruction at the end of a statement block. In actual embodiments, the insertion position can be chosen freely as long as the accuracy of the program is obtained. For example, the nop instruction may be inserted between two interdependent or inter-related instructions or at the end of a loop instruction.
6a ist ein Flussdiagramm des Komprimierens eines Programmcodes. Die Darstellung in 6a dient im Zusammenhang mit den zugehörigen Darstellungen in 3a und 4 zur Erläuterung des Ablaufs. 6a Fig. 10 is a flowchart of compressing a program code. The representation in 6a used in conjunction with the related representations in 3a and 4 to explain the process.
Schritt 602: es wird ein üblicher Kompilierer/Assembler zum Kompilieren/Assembeln eines Programms in ausführbare Programmcodes eines Computersystems verwendet, dies sind häufig Maschinencodes.step 602 A common compiler / assembler is used to compile / assemble a program into executable program codes of a computer system, these are often machine codes.
Schritt 604: es wird eine vorgegebene Huffman-Verschlüsselung eingelesen. Hier kann mit der vorgegebenen Huffman-Verschlüsslung die Länge einer komprimierten Anweisung weniger als die Hälfte der Länge eines unkomprimierten Anweisungsblocks betragen, so dass die Länge der komprimierten Anweisung geringer ist als die Länge eines komprimierten Anweisungsblocks.step 604 : a default Huffman encryption is read. Here, with the given Huffman encryption, the length of a compressed instruction may be less than half the length of an uncompressed instruction block such that the length of the compressed instruction is less than the length of a compressed instruction block.
Schritt 606: der Anweisungsblock wird nach der Huffman-Verschlüsselung komprimiert.step 606 : The statement block is compressed after Huffman encryption.
Schritt 608: es wird ermittelt, ob eine nop-Anweisung in den komprimierten Anweisungsblock mit einem bestimmten Komprimierungsverhältnis eingesetzt werden muss, um einen Anweisungsblock mit dem bestimmten Komprimierungsverhältnis zu erhalten. Wenn ja folgt Schritt 610, ansonsten Schritt 616.step 608 : It determines if there is a nop statement in the compressed statement block with a specific compression ratio must be used to obtain a block of instructions with the particular compression ratio. If yes, follow step 610 , otherwise step 616 ,
Schritt 610: es wird eine nop-Anweisung in den unkomprimierten Anweisungsblock eingesetzt, um einen neuen Anweisungsblock zu bilden.step 610 An nop instruction is inserted into the uncompressed instruction block to form a new instruction block.
Schritt 612: es wird bestimmt, ob eine Zieladresse in der Anweisung in dem Anweisungsblock angepasst werden muss. Wenn ja folgt Schritt 614, ansonsten Schritt 606.step 612 It is determined whether a destination address in the instruction in the instruction block needs to be adjusted. If yes, follow step 614 , otherwise step 606 ,
Schritt 614: die Zieladresse, die angepasst werden muss, wird geändert und zu Schritt 606 zurückgegangen.step 614 : The destination address that needs to be adjusted is changed and to step 606 declined.
Schritt 616: der komprimierte Programmcode wird erzeugt mit einem bestimmten Komprimierungsverhältnis. Einer oder mehre der vorstehend beschriebenen Schritte kann wiederholt werden, um das gesamte Komprimierungsverfahren zu vervollständigen.step 616 : The compressed program code is generated with a specific compression ratio. One or more of the steps described above may be repeated to complete the entire compression process.
Im Schritt 610 kann weiterhin die Anzahl der eingesetzten nop-Anweisungen zur Erzeugung eines Zählwerts gezählt werden. In Schritt 614 kann die Zieladresse entsprechend dem Zählwert angepasst werden. Weiterhin können im Schritt 610 Bits zu dem Anweisungsblock hinzugefügt werden, wenn die Anweisungen in dem Anweisungsblock den Anweisungsblock nicht auffüllen, wobei diese Bits nach der Dekomprimierung unbeachtliche Bits werden. Ebenso kann in Schritt 612 die Anweisung, die auf eine Zieladresse verweist, nicht notwendigerweise in dem Anweisungsblock angeordnet sein, in den nop-Anweisungen eingesetzt werden. Beispielsweise kann in den 3b und 4, falls die Anweisung I1 mit einer Zieladresse auf die Anweisung 16 verweist und in Schritt 610 die nop-Anweisung in den unkomprimierten Anweisungsblock 304 eingesetzt wird, um einen neuen Anweisungsblock zu bilden, muss in Schritt 612 dann die Zieladresse in der Anweisung 11 innerhalb des Anweisungsblocks 302 angepasst werden.In step 610 Furthermore, the number of used nop instructions for generating a count can be counted. In step 614 the destination address can be adjusted according to the count value. Furthermore, in step 610 Bits are added to the instruction block if the instructions in the instruction block do not fill the instruction block, which bits become insignificant bits after decompression. Likewise, in step 612 the instruction pointing to a destination address, not necessarily located in the instruction block, will be inserted into the nop instructions. For example, in the 3b and 4 if the instruction I1 with a destination address refers to the instruction 16 and in step 610 the nop statement in the uncompressed statement block 304 is used to form a new statement block must in step 612 then the destination address in instruction 11 within the instruction block 302 be adjusted.
In 6b ist dargestellt, wie in Schritt 610 komprimierte nop-Anweisungen oder Bits am Ende der komprimierten Anweisung eingesetzt werden, um einen neuen komprimierten Anweisungsblock zu bilden. Wenn in Schritt 612 ermittelt wird, dass keine andere Zieladresse angepasst werden muss, geht der Vorgang zurück zu Schritt 608, ansonsten zu Schritt 614.In 6b is shown as in step 610 compressed nop instructions or bits are used at the end of the compressed instruction to form a new compressed instruction block. When in step 612 is determined that no other destination address needs to be adjusted, the process goes back to step 608 , otherwise to step 614 ,
In 7 ist eine andere Ausführungsform dargestellt. In 7 werden n Anweisungen verwendet, wobei die Länge jeder der n Anweisungen kürzer ist als eine halbe Cache-Line, d. h. die Länge des Anweisungsblock wenn das bestimmte Komprimierungsverhältnis ½ (0,5) ist. Somit bilden die Anweisungen I1–I3 einen neuen Anweisungsblock 702. Hier ist n eine natürliche Zahl von 1–4 und wenn die Länge der n Anweisungen nicht größer ist als eine halbe Cache-Line werden den n Anweisungen zusätzliche Bits 706 hinzugefügt, um den neuen Anweisungsblock zu bilden. Der Unterschied dieser Ausführungsform und der vorstehend beschriebenen Ausführungsform besteht darin, dass diese Ausführungsform keine nop-Anweisungen zur Bildung eines neuen Anweisungsblocks benötigt. Um jedoch zu erreichen, dass in jedem dekomprimierten Anweisungsblock immer noch vier Anweisungen enthalten sind, so dass die Adresse in jeder Anweisung mit einer bestimmten Regel errechnet werden kann, werden (4 – n) Anweisungen dem Anweisungsblock hinzugefügt, der n Anweisungen aufweist, wenn der Anweisungsblock dekomprimiert wird.In 7 another embodiment is shown. In 7 n instructions are used, where the length of each of the n instructions is shorter than half a cache line, ie the length of the instruction block when the particular compression ratio is ½ (0.5). Thus, the instructions I1-I3 form a new instruction block 702 , Here, n is a natural number of 1-4 and if the length of the n instructions is not greater than half a cache line, the n instructions will be extra bits 706 added to form the new statement block. The difference between this embodiment and the embodiment described above is that this embodiment does not require nop instructions to form a new instruction block. However, to achieve that there are still four instructions in each decompressed instruction block so that the address in each instruction can be computed with a particular rule, (4-n) instructions are added to the instruction block which has n instructions if the instruction Statement block is decompressed.
Beispielsweise beinhaltet der Anweisungsblock 702 drei (n = 3) Anweisungen. Daher wird, wenn der Anweisungsblock 702 dekomprimiert wird, eine (4 – 3 = 1) nop-Anweisung eingesetzt, so dass der Anweisungsblock 704 vier Anweisungen aufweist.For example, the instruction block includes 702 three (n = 3) instructions. Therefore, if the statement block 702 is decompressed, a (4 - 3 = 1) nop statement is inserted so that the statement block 704 has four instructions.
8a ist ein Flussdiagramm der Komprimierung der Ausführungsform in 7. Er umfasst folgende Schritte: 8a FIG. 14 is a flowchart of the compression of the embodiment in FIG 7 , It includes the following steps:
Schritt 802: mit einem herkömmlichen Kompilierer/Assembler wird ein Programm in ausführbare Programmcodes eines Computersystems kompiliert/assembelt. Dies ist häufig ein Maschinencode.step 802 A conventional compiler / assembler compiles / assembles a program into executable program codes of a computer system. This is often a machine code.
Schritt 804: es werden vorgegebene Huffman-Verschlüsselungen eingelesen. Hier kann die vorgegebene Huffman-Verschlüsselung die Länge einer komprimierten Anweisung auf weniger als die Hälfte der Länge eines unkomprimierten Anweisungsblocks verkürzen, so dass die Länge der komprimierten Anweisung geringer ist als die Länge eines komprimierten Anweisungsblocks.step 804 : given Huffman encryptions are read. Here, the default Huffman encryption may shorten the length of a compressed instruction to less than half the length of an uncompressed instruction block such that the length of the compressed instruction is less than the length of a compressed instruction block.
Schritt 806: komprimieren des Anweisungsblocks entsprechend der Huffman-Verschlüsselung.step 806 : Compressing the statement block according to Huffman Encryption.
Schritt 808: es wird bestimmt, ob ein komprimierter Anweisungsblock in einen komprimierten Anweisungsblock mit einem bestimmten Komprimierungsverhältnis umgeändert werden muss. Wenn ja folgt Schritt 810, ansonsten Schritt 816.step 808 : Determines whether a compressed statement block must be changed to a compressed statement block with a specific compression ratio. If yes, follow step 810 , otherwise step 816 ,
Schritt 810: mit den n komprimierten Anweisungen, wobei die Länge der n komprimierten Anweisungen kürzer ist als die Länge des komprimierten Anweisungsblocks, wird ein Anweisungsblock neu angeordnet, wobei n eine natürliche Zahl von 1 bis 4 ist.step 810 with the n compressed instructions, where the length of the n compressed instructions is shorter than the length of the compressed instruction block, an instruction block is rearranged, where n is a natural number from 1 to 4.
Schritt 812: es wird Bestimmt ob eine Zieladresse geändert werden muss. Wenn ja folgt Schritt 814, ansonsten Schritt 806. step 812 : It is determined if a destination address needs to be changed. If yes, follow step 814 , otherwise step 806 ,
Schritt 814: ändern der Zieladresse, die geändert werden muss, und weitergehen zu Schritt 806.step 814 : Change the destination address that needs to be changed, and go to step 806 ,
Schritt 816: erzeugen des komprimierten Programmcodes mit dem bestimmten Komprimierungsverhältnis. Einer oder mehrere der vorstehend genannten Schritte kann wiederholt werden, um das gesamte Komprimierungsverfahren zu vervollständigen.step 816 : Generate the compressed program code with the specified compression ratio. One or more of the above steps may be repeated to complete the entire compression process.
In Schritt 810 kann weiterhin der Wert von (4 – n) errechnet werden, so dass ein Zählwert erzeugt wird. Der Schritt 812 ändert die Zieladresse entsprechend des Zählwerts. Ebenso können in Schritt 810 dem Anweisungsblock Bits hinzugefügt werden, um den Anweisungsblock aufzufüllen. In 8b ist dargestellt, dass in Schritt 810 mit einer unkomprimierten Anweisung ein neuer Anweisungsblock gebildet werden kann. Wenn nachfolgend in Schritt 812 bestimmt wird, dass es keinen Bedarf zur Änderung irgendeiner Zieladresse gibt, geht das Verfahren zurück zu Schritt 806, ansonsten zu Schritt 814.In step 810 Furthermore, the value of (4-n) can be calculated so that a count value is generated. The step 812 changes the destination address according to the count value. Likewise, in step 810 bits are added to the instruction block to fill the instruction block. In 8b is shown in step 810 a new statement block can be formed with an uncompressed instruction. If following in step 812 it is determined that there is no need to change any destination address, the process goes back to step 806 , otherwise to step 814 ,
In einer weiteren Ausführungsform, falls die Länge einer bestimmten komprimierten Anweisung größer ist als die Länge des komprimierten Anweisungsblocks oder größer als die Länge der unkomprimierten Anweisung, wie in 9 dargestellt, wird unmittelbar mit dieser Anweisung und anderen komprimierten Anweisungen ein komprimierter Anweisungsblock gebildet.In another embodiment, if the length of a particular compressed instruction is greater than the length of the compressed instruction block or greater than the length of the uncompressed instruction, as in 9 , a compressed instruction block is formed immediately with this instruction and other compressed instructions.
Da, wie in 9 ersichtlich, die Länge der komprimierten Anweisung I1 größer ist als die Länge der nicht dargestellten unkomprimierten Anweisung I1 werden die unkomprimierte Anweisung I1, die komprimierte Anweisung I2, eine nop-Anweisung und die Anweisung I3 zur Bildung eines komprimierten Anweisungsblocks 902 verwendet. Um sicherzustellen, dass die Dekomprimierungseinheit die Dekomprimierung nur für die vorstehend genannten komprimierten Anweisungen ausführt, sind zusätzlich vier Bits am Ende des Anweisungsblocks 902 vorgesehen, wobei jedes Bit jeweils zu einer Anweisung innerhalb des Anweisungsblocks 902 zugeordnet ist. Angenommen der Bitwert 1 gibt wieder, dass die zugehörige Anweisung nicht komprimiert ist, und der Bitwert 0 stellt dar, dass die zugehörige Anweisung komprimiert ist. Somit sind für die vorstehend genannten vier Anweisungen innerhalb des Anweisungsblocks 902 die vier Bits jeweils auf die Werte 1, 0, 0 und 0 gesetzt. Somit ist wiedergegeben, dass nur die erste Anweisung I1 von den vier Anweisungen I1, I2, nop und I3 nicht komprimiert ist. Durch diese Vorgehensweise weiss die Dekomprimierungseinheit welche Anweisung dekomprimiert werden muss.There, as in 9 As can be seen, the length of the compressed instruction I1 is greater than the length of the uncompressed instruction I1, not shown, the uncompressed instruction I1, the compressed instruction I2, a nop instruction and the instruction block I3 for forming a compressed instruction block 902 used. In order to ensure that the decompression unit carries out the decompression only for the aforementioned compressed instructions, an additional four bits are at the end of the instruction block 902 each bit being associated with an instruction within the instruction block 902 assigned. Assuming the bit value of 1 indicates that the associated instruction is not compressed, the bit value 0 represents that the associated instruction is compressed. Thus, for the above four instructions within the instruction block 902 the four bits are set to the values 1, 0, 0 and 0 respectively. Thus, it is shown that only the first instruction I1 of the four instructions I1, I2, nop and I3 is not compressed. By doing so, the decompression unit knows which statement must be decompressed.
Es ist möglich, dass mit den vorstehend beschriebenen Komprimierungsverfahren verschiedene Anweisungsblöcke nach einer Prioritätenliste komprimiert werden. Wie in 10 dargestellt kann bestimmt werden, ob die komprimierten Anweisungen I1, I2 und I3 den Anweisungsblock 102 mit einem bestimmten Komprimierungsverhältnis zusammen mit der komprimierten nop-Anweisung bilden können. Wenn dies möglich ist, kann mit einem Ablauf wie in den 6a oder 6 b der Anweisungsblock 1002 gebildet werden. Wenn dies nicht möglich ist kann ermittelt werden, ob die drei Anweisungen I1, I2 und I3 unmittelbar den Anweisungsblock 1004 bilden können, um dann den Anweisungsblock wie in den 8a und 8b dargestellt zu bilden. Mit dem Komprimierungsverfahren können ausschließlich lesbare Daten komprimiert werden. Das Komprimierungsverfahren dieser Daten kann aus den vorstehend genannten Ausführungsformen vom Fachmann abgeleitet werden und wird daher nicht weiter beschrieben.It is possible that, with the compression methods described above, different instruction blocks are compressed according to a priority list. As in 10 It may be determined whether the compressed instructions I1, I2 and I3 represent the instruction block 102 with a specific compression ratio together with the compressed nop instruction. If this is possible, can proceed as in the 6a or 6 b the instruction block 1002 be formed. If this is not possible, it can be determined if the three instructions I1, I2 and I3 immediately follow the instruction block 1004 then form the instruction block as in the 8a and 8b shown to form. With the compression method only readable data can be compressed. The compression method of this data can be derived from the above-mentioned embodiments by a person skilled in the art and therefore will not be further described.
Es ist möglich, dass ein Programm nicht benötigte Anweisungen enthält, wie eingesetzte nop-Anweisungen oder andere entfernbare Anweisungen, die die Genauigkeit des Programms nicht beeinflussen, wenn sie entfernt sind. Diese nicht benötigten Anweisungen können aber die Rechenzeit der Bearbeitungseinheit beanspruchen und daher die Effektivität des gesamten Computersystems verringern. Daher wird eine Vorrichtung und ein Verfahren zum Entfernen nicht benötigter Anweisungen beschrieben. Eine Ausführungsform hiervon wird im Folgenden beschrieben.It is possible for a program to contain unneeded instructions, such as nop instructions used or other removable instructions that do not affect the accuracy of the program when removed. However, these unneeded instructions can take the processing unit's computation time and therefore reduce the effectiveness of the entire computer system. Therefore, an apparatus and method for removing unneeded instructions will be described. An embodiment thereof will be described below.
In 11 ist eine Vorrichtung zum Entfernen nicht benötigter Anweisungen dargestellt. Ein Entfernerschaltkreis 1100 empfängt den Anweisungsblock 1102 und entfernt die nop-Anweisung innerhalb des Anweisungsblocks 1102. Der Entfernerschaltkreis 1100 umfasst eine Vielzahl an Vergleichereinheiten 1104, 1006, 1008 und 1110, um jeweils jede Anweisung I1, I2, nop, I3 mit einem vorgegebenen Muster zu vergleichen und um eine Vielzahl an Vergleichssignalen zu erzeugen. Hierbei ist das vorgegebene Muster die nop-Anweisung-Dies stellt aber keine Einschränkung dar. In anderen Ausgestaltungen kann das vorgegebene Muster anderen vorstehend beschriebenen entfernbaren Anweisungen entsprechen.In 11 a device for removing unneeded instructions is shown. A remover circuit 1100 receives the instruction block 1102 and removes the nop instruction within the instruction block 1102 , The remover circuit 1100 includes a variety of comparator units 1104 . 1006 . 1008 and 1110 to compare each instruction I1, I2, nop, I3 with a predetermined pattern and to generate a plurality of comparison signals. Here, the given pattern is the nop instruction-but this is not a limitation. In other embodiments, the given pattern may correspond to other removable instructions described above.
Der Entfernerschaltkreis 1100 umfasst weiterhin einen Steuerungslogikschaltkreis 1112 zur Erzeugung eines Anweisungsauswahlsignals und eines Schrittsignals, das der Vielzahl an Vergleichssignalen zugeordnet ist. Weiterhin ist ein Multiplexer 1114 vorgesehen, zum Empfang der Anweisungen I1, I2, nop, I3 des Anweisungsblocks 1102. Dieser gibt wahlweise mindestens eine Anweisung an die Bearbeitungseinheit 108 aus in Abhängigkeit des Anweisungsauswahlsignals, das von dem Steuerungslogikschaltkreis 1112 erzeugt wurde. Hierbei wird nur von dem Vergleichssignal, das von der Vergleichereinheit 1108 ausgegeben wird, angezeigt, dass das vorgegebene Muster der verglichenen Anweisung entspricht, nämlich der vorstehend beschriebenen nop-Anweisung. Somit informiert das Anweisungsauswahlsignal den Multiplexer 1114 in Abhängigkeit des Vergleichssignals, um zu veranlassen, dass der Multiplexer 1114 nur die Anweisungen I1, I2 und I3 ausgibt ohne die nop-Anweisung.The remover circuit 1100 further comprises a control logic circuit 1112 for generating an instruction selection signal and a step signal associated with the plurality of comparison signals. Furthermore, a multiplexer 1114 provided for receiving the instructions I1, I2, nop, I3 of the instruction block 1102 , This optionally gives at least one instruction to the processing unit 108 depending on the Instruction selection signal generated by the control logic circuit 1112 was generated. Here, only the comparison signal, that of the comparator unit 1108 indicating that the predetermined pattern corresponds to the compared instruction, namely the above-described nop instruction. Thus, the instruction selection signal informs the multiplexer 1114 in response to the comparison signal to cause the multiplexer 1114 only the instructions I1, I2 and I3 issue without the nop instruction.
Der Betrieb und die Funktionen vorstehend beschriebenen Vergleichereinheiten 1104–1110, des Multiplexer 1114 und des Programmszählers 1116 sind dem Fachmann bekannt und müssen nicht weiter beschrieben werden. Der Steuerungslogikschaltkreis 1112 kann einfache logische Operationen zum Vergleichen von Signalen, die von den Vergleichereinheiten 1104 bis 1110 ausgeben werden, ausführen. Somit kann der Aufbau des Steuerungslogikschaltkreises 1112 von einem Fachmann vorgenommen werden und wird nicht näher beschrieben.The operation and functions of the comparator units described above 1104 - 1110 , the multiplexer 1114 and the program counter 1116 are known in the art and need not be further described. The control logic circuit 1112 can do simple logical operations to compare signals from the comparator units 1104 to 1110 to spend. Thus, the structure of the control logic circuit 1112 be made by a person skilled in the art and will not be described in detail.
Der Entfernerschaltkreis 1100 entfernt die nop-Anweisung aus dem Anweisungsblock 1102. Um zu vermeiden, dass die Bearbeitungseinheit 108 fälschlicherweise annimmt, dass die Anweisung I3 eine Anweisung ist, die an der Adresse gespeichert ist, die der entfernten nop-Anweisung zugehört, übermittelt der Steuerungslogikschaltkreis 1112 das vorstehend beschriebene Schrittsignal an den Programmzähler 1116 der Bearbeitungseinheit 108. Somit erzeugt der Programmzähler 1116 eine Programmzähltaktung (PC-Takt, engl: PC-stride) entsprechend dem Schrittsignal. Somit kann die Bearbeitungseinheit 108 die Anweisungen entsprechend ihren von dem PC-Takt angezeigten Adressen bearbeiten.The remover circuit 1100 removes the nop statement from the statement block 1102 , To avoid the editing unit 108 erroneously assumes that the instruction I3 is an instruction stored at the address belonging to the remote nop instruction, the control logic circuit transmits 1112 the above-described step signal to the program counter 1116 the processing unit 108 , Thus, the program counter generates 1116 a program count (PC clock, PC stride) according to the step signal. Thus, the processing unit 108 edit the instructions according to their addresses indicated by the PC clock.
Angenommen, dass jeder der Anweisungen I1, I2, nop, I3 innerhalb des Anweisungsblocks 1102 jeweils die Anweisungsadresse 0000, 0004, 0008, 000C, im Hexadezimalsystem zugeordnet ist. Wenn die Vergleichereinheiten 1104 bis 1110 bestimmen, dass die Anweisung I1 nicht dem vorgegebenen Muster entspricht, die Anweisung 12 nicht dem vorgegebenen Muster entspricht, die nop-Anweisung dem vorgegebenen Muster entspricht und die Anweisung I3 nicht dem vorgegebenen Muster entspricht so gibt der Steuerungslogikschaltkreis 1112 ein Taktsignal mit den PC-Takten +4 und +8 aus entsprechend den von den Vergleichereinheiten 1104 bis 1110 ausgegebenen Vergleichssignalen. Somit kann die Bearbeitungseinheit 108 die Anweisungen an den Anweisungsadressen 0000, 0004 (0000 + 0004 = 0004) und 0000 (0004 + 0008) entsprechend den PC-Takten +4 und +8 richtig bearbeiten. Somit kann die Bearbeitungseinheit 108 die Anweisungen I1, I2 und I3 richtig und in der richtigen Reihenfolge bearbeiten.Assume that each of the instructions I1, I2, nop, I3 within the instruction block 1102 in each case the instruction address 0000, 0004, 0008, 000C, is assigned in the hexadecimal system. If the comparator units 1104 to 1110 determine that the instruction I1 does not conform to the given pattern, the instruction 12 does not conform to the given pattern, the nop instruction conforms to the given pattern, and the instruction I3 does not conform to the given pattern, the control logic circuit issues 1112 a clock signal with PC clocks +4 and +8 off corresponding to that of the comparator units 1104 to 1110 output comparison signals. Thus, the processing unit 108 correctly process the instructions at instruction addresses 0000, 0004 (0000 + 0004 = 0004) and 0000 (0004 + 0008) according to PC clocks +4 and +8. Thus, the processing unit 108 handle the instructions I1, I2 and I3 correctly and in the right order.
Die Anweisungen I1 und I2 sind aufeinanderfolgende Anweisungen, die nicht dem vorgegebenen Muster entsprechen. Somit ist der PC-Takt zwischen den Anweisungen I1 und I2 Vier, was bedeutet, dass nach der Bearbeitung der Anweisung I1 die an der Anweisungsadresse 0000 angeordnet ist, die Bearbeitungseinheit 108 die Anweisung 12 bearbeiten muss, die an der Anweisungsadresse 0004 entsprechend dem PC-Takt 4 angeordnet ist. Da jedoch zwischen der Anweisung I2 und der Anweisung I3 eine nop-Anweisung vorhanden ist und die nop-Anweisung nicht in die Bearbeitungseinheit 108 eingegeben wird, ist der PC-Takt zwischen der Anweisung I2 und I3 Acht. Das bedeutet, dass nach der Bearbeitung der Anweisung I2, die an der Anweisungsadresse 0004 angeordnet ist, die Bearbeitungseinheit 108 die Anweisung I3 bearbeiten muss, die an der Anweisungsadresse 0000 entsprechend dem PC-Takt 8 angeordnet ist.Instructions I1 and I2 are sequential instructions that do not conform to the given pattern. Thus, the PC clock between instructions I1 and I2 is four, which means that after processing the instruction I1 located at the instruction address 0000, the processing unit 108 must process the instruction 12 located at the instruction address 0004 corresponding to the PC clock 4. However, since there is a nop instruction between instruction I2 and instruction I3, and the nop instruction does not exist in the processing unit 108 is entered, the PC clock between instructions I2 and I3 is eight. That is, after the processing of the instruction I2 located at the instruction address 0004, the processing unit 108 must process the instruction I3 located at the instruction address 0000 corresponding to the PC clock 8.
Falls die Anweisung 12 auch eine nop-Anweisung ist, übermittelt der Steuerungslogikschaltkreis 1112 ein Taktsignal mit dem PC-Takt +12 an den Programmzähler 1116 entsprechend den Vergleichssignalen. Somit muss die Bearbeitungseinheit 108 nach dem Bearbeiten der Anweisung I1, die an der Anweisungsadresse 0000 angeordnet ist, die Anweisung I3 bearbeiten, die an der Anweisungsadresse 000C (0000 + 000C = 000C) entsprechend dem PC-Takt 12 angeordnet ist.If instruction 12 is also a nop instruction, the control logic circuit transmits 1112 a clock signal with the PC clock +12 to the program counter 1116 according to the comparison signals. Thus, the processing unit 108 after processing the instruction I1 located at the instruction address 0000, edit the instruction I3 located at the instruction address 000C (0000 + 000C = 000C) corresponding to the PC clock 12.
Wenn der Anweisungsblock 1102 eine Cache-Line belegt, das bedeutet, dass eine Cache-Line vier Anweisungen umfasst, muss der Steuerungslogikschaltkreis 1112 vorher wissen, ob die erste Anweisung oder die folgende Anweisung in der nächsten Cache-Line eine nop-Anweisung ist. Da der Steuerungslogikschaltkreis 1112 nicht vorher wissen kann, ob die erste Anweisung oder die folgende Anweisung in der nächsten Cache-Line eine nop-Anweisung ist, kann das Taktsignal mit einem richtigen PC-Takt nicht erzeugt werden. Wenn also die erste Anweisung in der nächsten Cache-Line nicht eine nop-Anweisung ist, muss der Steuerungslogikschaltkreis 1112 theoretisch ein Taktsignal mit den PC-Takten +4, +8 und +4 an die Bearbeitungseinheit 108 übermitteln. Somit ist nach der Bearbeitung der Anweisung I1 und der Bearbeitung der Anweisungen I2 und I3 entsprechend den PC-Takten +4 und +8 die Bearbeitungseinheit 108 in der Lage, die erste Anweisung der nächsten Cache-Line entsprechend dem PC-Takt +4 zu bearbeiten.If the statement block 1102 a cache line occupies that means that a cache line comprises four instructions, the control logic circuit must 1112 know beforehand whether the first statement or the next statement in the next cache line is a nop statement. Since the control logic circuit 1112 can not know beforehand whether the first instruction or the next instruction in the next cache line is a nop instruction, the clock signal can not be generated with a proper PC clock. Thus, if the first instruction in the next cache line is not a nop instruction, the control logic circuit must 1112 theoretically a clock signal with the PC clocks +4, +8 and +4 to the processing unit 108 to transfer. Thus, after the processing of the instruction I1 and the processing of the instructions I2 and I3 corresponding to the PC clocks +4 and +8, the processing unit 108 able to process the first instruction of the next cache line according to the PC clock +4.
Falls jedoch die erste Anweisung der nächsten Cache-Line eine nop-Anweisung ist und die zweite Anweisung der nächsten Cache-Line keine nop-Anweisung ist, muss der Steuerungslogikschaltkreis 1112 theoretisch ein Taktsignal mit dem PC-Takten +4, +8 und +8 an die Bearbeitungseinheit 108 übermitteln. Somit ist nach der Bearbeitung der Anweisung I1 und der Bearbeitung der Anweisungen I2 und I3 entsprechend den PC-Takten +4 und +8 die Bearbeitungseinheit 108 in der Lage, die zweite Anweisung der nächste Cache-Line entsprechend dem PC-Takt +8 zu bearbeiten.However, if the first instruction of the next cache line is a nop instruction and the second instruction of the next cache line is not a nop instruction, the control logic circuit must 1112 theoretically a clock signal with the PC clocks +4, +8 and +8 to the processing unit 108 to transfer. Thus, after the processing of the instruction I1 and the processing of the instructions I2 and I3 corresponding to the PC clocks +4 and +8, the processing unit 108 being able to process the second instruction of the next cache line according to the PC clock +8.
Zur Lösung der vorstehend genannten Probleme werden zwei Lösungen vorgeschlagen. Bei der ersten Lösung führt die Bearbeitungseinheit 108 die erste Anweisung jeder Cache-Line aus. Falls die erste Anweisung dem vorgegebenen Muster entspricht, hier ist das vorgegebene Muster eine nop-Anweisung, kann der Steuerungslogikschaltkreis 1112 die zu übermittelnden Taktsignale mit den PC-Takten richtig ermitteln.To solve the above-mentioned problems, two solutions are proposed. At the first solution, the processing unit leads 108 the first statement of each cache line. If the first instruction conforms to the predetermined pattern, here the predetermined pattern is a nop instruction, the control logic circuit may 1112 correctly determine the clock signals to be transmitted with the PC clocks.
Bei der zweiten Lösung wird die Bearbeitungseinheit 108 angehalten bis die Vergleichereinheiten 1104, 1106, 1108 und 1110 die Vergleichssignale der nächsten Cache-Line ausgeben und der Steuerungslogikschaltkreis 1112 das Taktsignal entsprechend der Vergleichssignale ausgibt.The second solution becomes the processing unit 108 stopped until the comparator units 1104 . 1106 . 1108 and 1110 output the comparison signals of the next cache line and the control logic circuit 1112 the clock signal corresponding to the comparison signals outputs.
Bei einer anderen Ausführungsform kann eine Vielzahl an vorgegebenen Mustern anstatt nur eines vorgegebenen Musters vorgesehen sein. Wenn eine bestimmte Anweisung mit der Vielzahl an vorgegebenen Mustern verglichen wird und festgestellt wird, dass die bestimmte Anweisung mit einem der vorgegebenen Muster übereinstimmt, wird die bestimmte Anweisung nicht zur Bearbeitung in die Bearbeitungseinheit 108 eingegeben.In another embodiment, a plurality of predetermined patterns may be provided instead of just one predetermined pattern. When a particular instruction is compared with the plurality of predetermined patterns and it is determined that the particular instruction matches one of the predetermined patterns, the particular instruction does not become editable in the processing unit 108 entered.
In 11 ist dargestellt, dass, falls die von der Bearbeitungseinheit 108 empfangene Anweisung einem bestimmten vorgegebenen Muster entspricht, der Steuerungslogikschaltkreis 112 den Multiplexer 1114 derart ansteuert, dass die von der Bearbeitungseinheit 108 benötigte Anweisung ausgegeben wird, die der Anweisungsadresse entspricht, die von der Bearbeitungseinheit 108 übermittelt wurde. Somit kann die erforderliche Anweisung an die Bearbeitungseinheit 108 ausgegeben werden.In 11 is shown that, if that of the editing unit 108 received instruction corresponds to a certain predetermined pattern, the control logic circuit 112 the multiplexer 1114 so controls that of the processing unit 108 required statement corresponding to the instruction address received from the processing unit 108 was transmitted. Thus, the required instruction to the processing unit 108 be issued.
In 12 ist ein Blockschaltbild eines Computersystems 1200 wiedergegeben. Es umfasst eine Entfernereinheit 1100. Die Entfernereinheit 1100 ist zwischen der Bearbeitungseinheit 108 und dem Pufferspeicher 104 angeordnet. Wenn die Bearbeitungseinheit 108 eine Anweisungsadresse an den Pufferspeicher 104 übermittelt, um den dieser Anweisungsadresse zugehörigen Anweisungsblock anzufordern und wenn der Pufferspeicher 104 den Anweisungsblock speichert, wird der Anweisungsblock von der Entfernereinheit 1100 bearbeitet und dann an die Bearbeitungseinheit 108 weitergeleitet. Wenn der Pufferspeicher 104 den Anweisungsblock nicht speichert, umgeht die Bearbeitungseinheit 108 den Pufferspeicher 104 und fordert den Anweisungsblock unmittelbar vom Hauptspeicher 102 an. Zu diesem Zeitpunkt wird der Anweisungsblock vom Pufferspeicher 104 und der Entfernereinheit 1100 bearbeitet und dann an die Bearbeitungseinheit 108 weitergeleitet. Zusätzlich kann eine Dekomprimierungseinheit 106 zwischen dem Pufferspeicher 104 und der Entfernereinheit 1100 vorgesehen sein. Die zusätzliche Dekomprimierungseinheit 106 kann komprimierte Anweisungen dekomprimieren und die dekomprimierten Anweisungen an die Entfernereinheit 110 zur Bearbeitung ausgeben. Ebenso kann die Anweisungsadresse, die von der Bearbeitungseinheit 108 ausgegeben wird, von einem Adressenumsetzer 110 bearbeitet und an den Pufferspeicher 104 oder den Hauptspeicher 102 weitergeleitet werden. Dies ist alles vom Schutzumfang der Erfindung mit umfasst.In 12 is a block diagram of a computer system 1200 played. It includes a remover unit 1100 , The remover unit 1100 is between the processing unit 108 and the cache 104 arranged. If the editing unit 108 an instruction address to the buffer 104 to request the instruction block associated with this instruction address and if the cache 104 stores the instruction block, the instruction block is retrieved from the remover unit 1100 edited and then to the processing unit 108 forwarded. If the cache 104 does not save the instruction block, bypasses the processing unit 108 the buffer memory 104 and requests the instruction block directly from main memory 102 at. At this time, the instruction block becomes the buffer memory 104 and the remover unit 1100 edited and then to the processing unit 108 forwarded. In addition, a decompression unit 106 between the buffer memory 104 and the remover unit 1100 be provided. The additional decompression unit 106 can decompress compressed instructions and the decompressed instructions to the remover unit 110 for editing. Similarly, the instruction address provided by the processing unit 108 is output from an address translator 110 processed and to the cache 104 or the main memory 102 to get redirected. This is all within the scope of the invention.