EP1620790A2 - Verfahren und programmgesteuerte einheit zur bitfeldverschiebung - Google Patents

Verfahren und programmgesteuerte einheit zur bitfeldverschiebung

Info

Publication number
EP1620790A2
EP1620790A2 EP04722539A EP04722539A EP1620790A2 EP 1620790 A2 EP1620790 A2 EP 1620790A2 EP 04722539 A EP04722539 A EP 04722539A EP 04722539 A EP04722539 A EP 04722539A EP 1620790 A2 EP1620790 A2 EP 1620790A2
Authority
EP
European Patent Office
Prior art keywords
bit
memory
address
program
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
EP04722539A
Other languages
English (en)
French (fr)
Inventor
Xiaoning Nie
Thomas Wahl
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of EP1620790A2 publication Critical patent/EP1620790A2/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Definitions

  • the invention relates to a method and a program-controlled unit for shifting bit fields in a memory device of a program-controlled unit, in particular for bit field manipulation.
  • Such program-controlled units are designed, for example, as microprocessors, microcontrollers, signal processors or the like.
  • the processor architecture selected for the program-controlled unit in connection with the respectively selected compiler technology and the respective application essentially determines the performance, the speed and the flexibility of the program-controlled unit.
  • the user of the program-controlled unit has access to an assembler programming language that has a fixed instruction set (instruction set) based on a register model.
  • Examples of such program-controlled units are the processors of the Cl ⁇ family with a 16-bit architecture distributed by Infineon Technologies AG and the tri-core with a 32-bit architecture. These program-controlled units have a memory device, an instruction decoding, address and data register, a pipeline, and barrel shifter and bit mask generator for processing the bit instructions. Modern program-controlled units, in particular processors with pipeline architecture or protocol processors, have bit field manipulation (English: Bit Field Manipulation) as additional functionality. Bit field manipulation involves a bit segment consisting of one or more bits, which are contained in a first data string. are taken from the first data string, processed and inserted into a corresponding bit field in a second data string. A data string can contain, for example, a word (32 bits), a double word (64 bits), a half word (16 bits) etc.
  • a common command in bit field manipulation is the "move" command, in which some bits are taken from a first data word and inserted in a modified manner in a second data word.
  • This "move" command for bit field manipulation points in the assembler programming language the following structure:
  • the first line of the program indicates that a first byte (8 bits) at bit position 0 should be taken from a first position R1 of the source register and should be moved to a bit position at a second position R2.
  • the second line indicates that this bit is processed (added) at the second position R2.
  • the result R3 of the previous process step is inserted at position R15 in the target register and saved (third line).
  • register-indirect addressing in which the address of the register is the content of another register. This type of addressing has the advantage over direct addressing that when the
  • the operand address does not have to be read at the same time. It is used when the same operand address is frequently accessed within a program section.
  • a further development is register-direct addressing with displacement, in which the current address is calculated from the content of an address register from a constant address distance (displacement). This address distance is signed (two's complement) and thus allows a positive or negative address distance to the base address in the address register.
  • This method is used for data accesses that have a fixed structure in memory. By changing the base address in the address register, the same element is accessed in the next data record, or a variable base address can be taken into account.
  • the first byte is then loaded (third line). After two program steps (fourth and fifth lines), in which no operation is provided, the byte read out is processed in accordance with the sixth line and saved as the result in accordance with the seventh line. This process is repeated until all four bytes have been read out. This results in a total of 22 command steps for the "move" command, ie for moving a single word consisting of 32 bits from the memory. A large number of command steps and frequent access to the memory, however, lead to a high power consumption of the program-controlled unit and also to a large chip area.
  • the object of the present invention is to enable improved, in particular simplified, processing of commands in a program-controlled unit.
  • a method for shifting a bit field in a memory device of a program-controlled unit as a result of executing an instruction in which a bit segment within a first storage unit is moved to a second storage unit using the following method steps:
  • a program-controlled unit for processing instructions in a processor in particular with pipelined architecture, with a memory in which instructions are stored, with at least one storage unit from which a Bitseg- ment and / or a bit field can be read out and / or another ⁇ are available
  • the present invention is based on the finding that recurring program steps are not constantly new must be downloaded from a memory or a register.
  • the idea on which the present invention is based is therefore to embed these recurring program steps in a program loop.
  • the number of commands required for this can be significantly reduced, particularly in the case of a large number of repeating program steps.
  • a reduction in the individual program steps or program functions results in a reduction in the power consumption and, moreover, in a smaller memory also in a reduction in the memory size.
  • the memory accesses or the register accesses can advantageously be kept very low by means of the method according to the invention or the program-controlled unit according to the invention.
  • an update of the bit position pointer is provided for the implementation of this functionality.
  • the method according to the invention advantageously provides that the last or alternatively also the next bit position is stored as a bit position pointer (starting point).
  • this bit position pointer indicates at which point the data should be stored or read out. This is achieved by incrementing a fixed offset with the last bit position pointer, which is stored in the additional register. The new bit position pointer then results from the old, stored bit position pointer plus the specified offset or the specified bit width.
  • an additional register is used for bit field manipulation in the case of direct addressing. leads.
  • This additional register contains the functionality of a program loop in that it maintains the bit position in which the next bit segment is to be read out after a bit segment has been read from a data string.
  • the provision of this additional register for storing the last bit position advantageously does not change the number of connections in the register.
  • the present invention extends the existing functionality, in particular when data is read out sequentially from a memory using variable bit positions.
  • an architecture of the program-controlled unit is provided which stores the data last read out (sequentially) in a Cashe memory, which further reduces the power consumption due to the memory accesses which are thereby eliminated. So this is a data storage.
  • FIG. 1 shows a schematic illustration to illustrate the method according to the invention for bit field manipulation (bit field manipulation) with direct addressing;
  • FIG. 2 shows the pipeline architecture of the program-controlled unit according to the invention in a block diagram
  • FIG. 3 shows a detailed block diagram to illustrate the implementation of the additional register of the program-controlled unit according to the invention from FIG. 2;
  • FIG. 4 shows a schematic representation of the method according to the invention for bit field movement (indirect field addressing);
  • FIG. 5 shows the block diagram of a program-controlled unit for executing a method according to the invention for bit field shifting by means of indirect addressing.
  • the present invention provides for a program loop to be introduced for a program-controlled unit with a pipeline architecture for repetitive program steps or program blocks. This loop should advantageously be possible without the provision of additional register connections.
  • the resulting program has the following functionality:
  • Rs denotes the source register (Register Source) and Rd the destination register (Register Destination).
  • Offset0_reg and offsetl_reg each indicate the bit position pointers for the corresponding registers. #bits denotes the bit width and # offset0 or #offsetl denote the respective offset in the
  • Source register and destination register in which the respective bit position pointers read or insert the corresponding bit segments in a subsequent read or insert step.
  • the first line therefore means that a bit segment of bit width #bits at the position offset0_reg should be moved from the source register to the position offsetl_reg.
  • the next two lines indicate the method according to the invention, at that the two current bit position pointers for source register and target register result from the addition of the previously used bit position pointer with the corresponding offset.
  • the register positions are preset by initializing them.
  • the counter reading of a counter is set to three.
  • Lines three to six contain the program loop, line 3 being used to read and write one byte from the corresponding bit position in the source register.
  • the offset registers are then updated.
  • program line 5 the content of R3 is saved to the address contained in R15 (indirect addressing).
  • the last line 6 sets the counter reading down by one (decrement).
  • the loop should be continued again at line three until the count is zero. Simply inserting a loop reduces the number of instructions required for the "Move" command MVR to a total of 6 compared to the 12 instructions required at the beginning.
  • the loop in the above program flow is possible by updating the bit position pointer offsetO_reg, offsetl_reg assigned to the source register and destination register Rs, Rd.
  • FIG. 1 shows a schematic illustration to illustrate this method according to the invention.
  • Rs and Rd each designate a data word from the source register and the target register.
  • the bit position pointers offset0_reg, offsetl_reg are initialized, i.e. set to 0 in the present case.
  • the second step (2) the second byte is written from the source register Rs to the destination register Rd.
  • the start positions which determine the position at which the second byte is read or written, are in turn determined by the bit position pointers offset0_reg, offsetl__reg.
  • these values of the bit position pointers were updated by updating the values of the respectively old bit position pointers, i.e. offset0_reg and offsetl_reg, by addition with a respective offset value # offset0, #offsetl.
  • These updated bit position pointers offset0_reg, offsetl__reg are therefore taken into account in the second step (2) for determining the starting position.
  • the bit position pointers offset0_reg, offsetl_reg are updated accordingly for the further bytes (steps (3), (4)).
  • FIG. 2 uses a block diagram to show the pipeline architecture of a program-controlled unit according to the invention with an additional register.
  • the corresponding program-controlled unit which is designed here as a pipeline processor, is designated by reference number 1 in FIG.
  • a three-stage pipeline is provided.
  • the reference numerals 2 to 4 denote the different pipeline registers for the individual pipeline stages.
  • the program-controlled unit 1 contains an instruction memory 5 in which a fixed instruction set (instruction set) is stored.
  • command decoder 6 is connected to a command decoder 6 via the pipeline stage 2. Downstream of the command decoder 6 is the source register 7, from which is dependent on that by the command decoder
  • Computing unit 8 is designed here as an arithmetic logic unit (ALU).
  • ALU arithmetic logic unit
  • a data memory 9 can also be provided, which is also coupled to the source register 7 on the input side.
  • the ALU unit 8 and the data memory 9 are connected via the pipeline stage 4 on the one hand to output connections 10 and on the other hand to a barrel shifter 11.
  • the barrel shifter 11 contains a device for bit field manipulation.
  • the barrel shifter 11 is coupled on the output side to the target register 12.
  • an additional register 13 is provided for the implementation of the functionality for updating the bit position pointers for source register 7 and destination register 11 shown above with reference to FIG. 1.
  • This additional register 13 is arranged in FIG. 2 in the second pipeline stage 3 and is coupled to the ALU unit 8.
  • FIG. 3 shows a detailed block diagram to illustrate the implementation of the additional register of the program-controlled unit according to the invention from FIG. 2.
  • the individual commands or instructions inst are read out from the program memory 5 and fed to the command decoder 6.
  • the command decoder 6 generates the respective register addresses for the source register Rs and target register Rd by means of the signals # reg0, #regl. These signals # reg0, #regl are fed to the register 20, the register 20 containing the functionality of the source register 7 and the target register 12 , Depending on the register addresses # reg0, #regl, data signals datal, dataO are output from the data register 20 and fed to a multiplexer 21.
  • the program-controlled unit also contains a barrel shifter 11, a mask generator 22 and an adder 23.
  • the elements 11, 22, 23 are used for bit field manipulation.
  • the command decoder 6 generates a signal #bits, which indicates a bit width and which is fed to the mask generator 22. Based on this, the mask generator 22 generates a mask for bit field manipulation.
  • the mode of operation of this bit field manipulation is generally known to the person skilled in the art and is described in detail, for example, in the publications already mentioned in the introduction to the description, so that it will not be discussed in more detail here.
  • the command decoder 6 On the output side, the command decoder 6 also provides two offset signals # offset0, #offsetl, which are fed directly to the adder 23 in a first operating mode. In this first mode of operation, the signal #offsetl in the adder 23 is subtracted from the signal # offset0 and the resulting signal shO is fed to the barrel shifter 11.
  • the barrel shifter 11 On the output side, the command decoder 6 also provides two offset signals # offset0, #offsetl, which are fed directly to the adder 23 in a first operating mode. In this first mode of operation, the signal #offsetl in the adder 23 is subtracted from the signal # offset0 and the resulting signal shO is fed to the barrel shifter 11.
  • the barrel shifter 11 The barrel shifter
  • Shifter 11 which is also assigned the data signal dataO leads, generates an output signal from this, which is fed to the multiplexer 21.
  • the program-controlled unit has an additional register 13 which, in addition to the first operating mode, enables a second operating mode.
  • the additional register 13 has two inputs and two outputs.
  • An adder 24, 25 is connected upstream of the inputs of the additional register 13, and a multiplexer 26, 27 is connected downstream of the two outputs.
  • the output signals offset0_reg, offsetl_reg of the additional register 13 are supplied on the one hand to the multiplexers 26, 27 which are connected downstream.
  • these signals offset0_reg, offsetl_reg are fed to the respective adders 24, 25 via a feedback loop and are added there with the offset signals # offset0, #offsetl. The result of these respective additions is coupled into the corresponding input of the additional register 13.
  • the multiplexers 26, 27 and the additional register 13 are controlled via the enable signal #so_enb, which is also provided by the command decoder 6.
  • FIGS. 2 and 3 can advantageously be used to implement the “Move” command and thus to perform a bit field manipulation in a very simple, power-saving manner.
  • Rs and Rd again denote the content of the source register and target register.
  • Base_adr denotes a start address in the memory designed as a stack memory.
  • #disp denotes the address distance (displacement) of the address to the base address in the stack memory and bit_pos denotes the bit position pointer.
  • #bits again denotes the bit width, i.e. the number of bits to be moved.
  • #auto_increment 1 means that the bit position pointer is incremented by the number of bits #bits.
  • Rs ⁇ Rs + #bits also applies.
  • the Save STX command has a similar assembly syntax:
  • the position pointers for the stack memory are loaded first.
  • the position pointers bit_pos are also set to 0.
  • Lines four to nine indicate the program loop according to the invention. First a bit segment is loaded according to line four, processed accordingly according to line seven and written again according to line eight to a corresponding line of the target register. According to line nine, the loop counter is reset by one and the loop starts again until the loop counter has reached zero.
  • the register content Rs of the source register specifies at which point in the stack memory 9 the data are to be read out.
  • the source register Rs has a first bit segment 30 in which the corresponding address in the memory 9 is specified.
  • the #disp signal specifies an address distance in relation to the address specified in the source register, which thus determines the current address.
  • a second bit segment 31 contains the position pointer bit_pos, which indicates at which point of the current address the data with the bit width #bits should be read out.
  • This bit segment 32 read out from the stack memory 9 is then inserted into the bit segment 33 of the target register with the content Rd.
  • bit segment 32 is in the
  • Bit segment 33 written starting with zero of the target register Rd, however, depending on the implementation, it could also be written anywhere in the target register Rd.
  • FIG. 5 shows the block diagram of a program-controlled unit for implementing the method according to the invention for bit field shifting by means of indirect addressing corresponding to FIG. 4.
  • FIG. 5 as well as FIG. 3 described above only show a schematic representation of the program-controlled unit, i. H. there functional units that are not directly necessary for the presentation of the invention have not been shown for the sake of clarity.
  • the command codes # reg0, #regl are not coupled into the command decoder 6, but directly into the register 20.
  • the signals # reg0, #regl correspond to the register contents Rs, Rd of the source register or of the target register.
  • the command decoder 6 generates the output signal tdisp, which is added in the adder 40 together with the output signal A of the register 20.
  • the signal resulting therefrom denotes the current address in the stack memory 9, which is fed to the address input a_mem of the stack memory 9.
  • a bit segment to be read is fed to the barrel shifter 11 based on the respective current address.
  • the command decoder 6 also generates the signal #bits, which is fed to the mask generator 22, which, based on this, generates a signal mask, which is fed to the barrel shifter 11.
  • the barrel shifter 11 uses this and the data signal read from the stack memory 9 to generate a shifted data signal which is written into the target register 20. In addition, the position pointer is updated for the next addressing.
  • the program-controlled unit in FIG. 5 also has a control unit 41 for controlling the reading process from the memory 9. Memory access to the stack memory 9 is only made possible via the signal #cs, which is supplied from the command decoder 6 to the control unit 41.
  • the stack memory 9 has a control input cs_mem, into which a control signal cs_o from the control unit 41, which is derived from the signal #cs, can be coupled.
  • Signal #auto_increment is used to control the incrementation or decrementation of the read or write pointer after a read or write operation has taken place.
  • a cashe memory 42 is provided between the data output o_mem of the memory 9 and the bar rel shifter 11.
  • the Cashe memory 42 is also connected to the output or memory unit 41 and can thus be acted upon by the control signal cs_o.
  • the respective current address with which the memory 9 is addressed by the register 20 is connected to the control unit 41 via the input adr.
  • the control unit 41 compares this current address with previously coupled addresses and thus determines whether the current address was previously available. If this comparison reveals that the address was already present, then the memory 9 is deactivated via the control signal es 0. The corresponding data will be read out from the Cashe memory 42 instead.
  • the bit segment read out of the Cashe memory 42 is shifted via the barrel shifter 11 and masked via the mask generator 21 and then written back to the destination register in the register 20 as a new base address.
  • the prerequisite for this is that the data corresponding to the current address is still available in the Cashe memory 42. Since the stack memory 9 is not specifically accessed for this very advantageous implementation, but rather the corresponding data can be read directly from the Cashe memory 42, there is advantageously a significant reduction in the energy consumption.
  • the program-controlled unit can be designed as a microcontroller, microprocessor, signal processor or the like. This can be a processor with a pipeline architecture or a protocol processor.
  • processor architecture described, but is not limited thereto. Rather, any processor architecture with 64 bits, 16 bits, 8 bits or any other bit width can be provided here.
  • the present invention is also not limited to the above addressing types, namely direct register addressing or indirect register addressing with displacement, but can be expanded to any addressing types.
  • the specified pipeline structure can also have more or less than three stages.
  • the invention is also not limited to reading or writing to memory designed as a register, but can be used within the scope of the invention for reading and writing any memory, z. B. address or data registers, but also on data storage such as RAM, SRAM, etc. can be expanded.
  • the first and / or the second bit field is designed as a 32-bit data word and the bit segment to be read out has a bit width of 8 bits.
  • the invention is not restricted to this, but can of course be extended to bit fields of any width. It is only essential that the bit segments have at least the same or a smaller bit width than the bit fields.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Abstract

Die Erfindung betrifft ein Verfahren und eine programmgesteuerte Einheit zur Bitfeldverschiebung in einer Speichereinrichtung einer programmgesteuerten Einheit infolge einer Ausführung eines Befehls, bei dem ein Bitsegment innerhalb einer ersten Speichereinheit in eine zweite Speichereinheit verschoben wird, mit den folgenden Verfahrensschritten: a) Auslesen des Bitsegments mit einer ersten Bitweite aus einem ersten Bitfeld der ersten Speichereinheit beginnend an einem ersten Startpunkt; b) Speichern des ausgelesenen Bitsegments in erstes Bitfeld der zweiten Speichereinheit beginnend an einem zweiten Startpunkt; c) Aktualisieren des ersten und/oder des zweiten Startpunktes um einen vorgegebenen Wert; d) Speichern des aktualisierten ersten und/oder des zweiten Startpunktes für nachfolgende Verfahrensschritte .

Description

Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung
Die Erfindung betrifft ein Verfahren und eine programmgesteuerte Einheit zur Bitfeldverschiebung in einer Speichereinrichtung einer programmgesteuerten Einheit, insbesondere bei der Bitfeldmanipulation.
Derartige programmgesteuerte Einheiten sind beispielsweise als Mikroprozessoren, Mikrocontroller, Signalprozessoren oder dergleichen ausgebildet. Die für die programmgesteuerte Einheit gewählte Prozessorarchitektur in Zusammenhang mit der jeweils gewählten Compilertechnologie und der jeweiligen Applikation bestimmt im Wesentlichen die Leistungsfähigkeit, die Geschwindigkeit und die Flexibilität der programmgesteuerten Einheit.
Zur hardwarenahen Programmierung steht dem Anwender der programmgesteuerten Einheit eine Assembler-Programmiersprache zur Verfügung, die auf der Basis eines Registermodels einen festen Befehlsatz (Instruction Set) aufweist.
Beispiele solcher programmgesteuerten Einheiten sind die von der Firma Infineon Technologies AG vertriebenen Prozessoren der Clββ-Familie mit einer 16-Bit-Architektur sowie der Tri- Core mit einer 32-Bit-Architektur . Diese programmgesteuerten Einheiten weisen eine Speichereinrichtung, einen Befehlsdeco- dier-, Adress- und Datenregister, eine Pipeline sowie Barrel- Shifter und Bitmaskengenerator für die Verarbeitung der Bitbefehle auf. Moderne programmgesteuerte Einheiten, insbesondere Prozessoren mit Pipeline-Architektur oder Protokollprozessoren, weisen als zusätzliche Funktionalität eine Bitfeld- manipulation (Englisch: Bit Field Manipulation) auf. Bei der Bitfeldmanipulation wird ein Bitsegment bestehend aus einem oder mehreren Bits, welche in einem ersten Datentstring ent- halten sind, aus dem ersten Datenstring entnommen, bearbeitet und in ein entsprechendes Bitfeld in einem zweiten Datenstring eingefügt. Ein Datenstring kann beispielsweise ein Wort (32 Bit), ein Doppelwort (64 Bit), ein Halbwort (16 Bit) etc. enthalten.
Zum allgemeinen Hintergrund einer programmgesteuerten Einheit mit Bitfeldmanipulation wird auf das US-Patent 6,061,783, die US-Patentanmeldung US 2002/0120828 AI sowie auf die Spezifi- kation zu dem eingangs erwähnten TriCore-Microcontrollern der Firma Infineon Technologies AG verwiesen. Diese Druckschriften werden hinsichtlich der Bitfeldmanipulation vollinhaltlich in die vorliegende Patentanmeldung miteinbezogen.
Ein üblicher Befehl bei der Bitfeldmanipulation ist der „Mo- ve" -Befehl, bei dem einige Bits aus einem ersten Datenwort entnommen werden und entsprechend modifiziert in ein zweites Datenwort eingefügt werden. Dieser „Move" -Befehl zur Bitfeldmanipulation weist in der Assembler-Programmiersprache die folgende Struktur auf:
MVR R #offsetl Rs #offset0 #bits
Mit dem „Move" -Befehl MVR wird ein Bitsegment der Bitweite #bits vom Quellregister Rs an der Bitposition #offset0 zum Zielregister Rd an der Bitposition #offsetl bewegt. Formal gesehen wird diese Operation wie folgt beschrieben:
Rd(#bits, #offsetl) <= Rs(#bits, #offset0)
Um diesen „Move" -Befehl mit einem einfachen Befehlssatz umzusetzen, sind eine Vielzahl einzelner Programmcodes erforderlich. Nachfolgend soll diese Umsetzung des „Move" -Befehls beispielhaft dargestellt werden:
mvr R2 0 Rl 0 8 // nimm erstes Byte addi R3 R2 1 // prozessiere das Byte str R15 R3 // speichere das Ergebnis mvr R2 0 Rl 8 8 // nimm das zweite Byte, etc, addi R3 R2 1 str R15 R3 mvr R2 0 Rl 16 8 addi R3 R2 1 str R15 R3 mvr R2 0 Rl 24 8 addi R3 R2 1 str R15 0 R l 32 0 0
Die erste Zeile des Programms gibt an, dass ein erste Byte (8 Bits) an der Bitposition 0 an einer ersten Stelle Rl des Quellregisters entnommen werden soll und an eine Bitposition an eine zweite Stelle R2 bewegt werden soll. Die zweite Zeile bezeichnet, dass eben dieses Bit an der zweiten Stelle R2 prozessiert (addiert) wird. Das Ergebnis R3 des vorigen Prozessschrittes wird an die Stelle R15 im Zielregister eingefügt und abgespeichert (dritte Zeile) . Diese Prozessschritte werden solange wiederholt, bis sämtliche 32 Bit, also das gesamte Wort, aus dem Quellregister entnommen, bearbeitet und ins Zielregister geschrieben wurde. Entsprechend wird also gemäß der vierten Zeile in obigem Programm das zweite Byte an der Bitposition 8 entnommen und weitergeschoben.
Es zeigt sich, dass für die einfache Funktion des Befehls „Move" in diesem Fall insgesamt 12 Befehlsschritte (Programmcodes) benötigt werden. Ein Nachteil einer Vielzahl von Befehlsschritten besteht darin, dass der Befehlsspeicher größer wird. Aufgrund häufiger Zugriffe auf den Befehlsspeicher führt dies unmittelbar zu einem größeren Energieverbrauch. Darüber hinaus führt eine Vielzahl von Befehlsschritten auch zu einem entsprechend groß auszubildenden Speicher, was letztendlich auch die Chip-Fläche vergrößert und damit die gesamte programmgesteuerte Einheit zusätzlich verteuert. Die obige Problematik wurde im Fall einer programmgesteuerten Einheit mit direkter Adressierung der Register beschrieben. Bei dieser Adressierungsart wird die Adresse (bzw. die Nummer) des Registers unmittelbar als (Immediate-) Wert angege- ben.
Darüber hinaus existiert auch eine registerindirekte Adressierung, bei der die Adresse des Registers der Inhalt eines anderen Registers ist. Diese Adressierungsart hat gegenüber der direkten Adressierung den Vorteil, dass beim Holen des
Befehls die Operandenadresse nicht gleichzeitig gelesen werden muss. Sie wird eingesetzt, wenn innerhalb eines Programmteils häufig auf dieselbe Operandenadresse zugegriffen wird.
Eine Weiterbildung ist die registerindirekte Adressierung mit Displacement, bei der die aktuelle Adresse aus dem Inhalt eines Adressregisters von einer konstanten Adressdistanz (Displacement) berechnet wird. Dieses Adressdistanz ist vorzeichenbehaftet (Zweierkomplement) und erlaubt so eine posi- tive bzw. auch negative Adressdistanz zur Basisadresse im Adressregister. Diese Methode wird bei solchen Datenzugriffen verwendet, die in einer festen Struktur im Speicher vorliegen. Durch das Ändern der Basisadresse im Adressregister wird so auf das gleiche Element im nächsten Datensatz zugegriffen, bzw. es kann eine variable Basisadresse berücksichtigt werden.
Prozessoren ohne die Möglichkeit einer indirekten Speicheradressierung müssten im Falle eines 32-Bit-Speichers beispiels- weise drei einzelne Bit in ein 32-Bit-breites Datenwort ablegen. Die übrigen 29 Bits dieses Datenwortes bleiben damit ungenutzt. Damit reduziert diese Form der indirekten Datenadressierung, die nachfolgend auch als Bitfeldzugriff auf den Datenspeicher bezeichnet wird, die Speichergröße des Daten- Speichers und somit auch die Chipfläche signifikant. Ein solcher Bitfeldzugriff auf den Datenspeicher weist allerdings keine Schleife mit einem sequentiellen Zugriff auf einzelne Bitstrukturen auf, da bei den jeweiligen Zugriffen die Bitpositionen und deren Offset-Wert als konstante Werte (sogenannte Immediate-Werte) vorgegeben sind. Ein damit einhergehendes Problem besteht auch darin, dass die Anzahl der Speicher- Zugriffe immer die gleiche bleibt, wodurch im Vergleich zur herkömmlichen Speicherzugriffen keine Energieeinsparung vorgesehen ist.
Diese Problematik sei anhand des nachfolgenden Programmes, welches den eingangs beschriebenen „Move" -Befehl MVR im Falle einer registerindirekten Adressierung beschreibt, veranschaulicht:
ldi Rl 0 0x030 // lade Lesezeiger = 0x30 llddii R R33 00 00xx004400 // lade Schreibzeiger = 0x40 ldr R2 0 Rl 0 8 // nimm erstes Byte nop nop addi R3R2 1 // prozessiere das Byte ssttrr R R1155 RR33 // speichere das Ergebnis ldr R2 0 Rl 8 8 // nimm das zweite Byte nop nop addi R3 R2 1 str R15 R3 ldr R2 0 Rl 16 8 // nimm das dritte Byte nop nop addi R3 R2 1 str R15 R3 ldr R2 0 Rl 24 8 // nimm das vierte Byte nop nop addi R3 R2 1 str R15 0 R3 32 0 0 Die ersten beiden Zeilen geben an, dass ein Lesezeiger bzw. ein Schreibzeiger an die entsprechenden Stellen Rl, R3 geladen werden. Anschließend (dritte Zeile) wird das erste Byte geladen. Nach zwei Programmschritten (vierte und fünfte Zei- le), in denen keine Operation vorgesehen ist, wird gemäß der sechsten Zeile das ausgelesene Byte prozessiert und gemäß der siebenten Zeile als Ergebnis abgespeichert. Dieser Vorgang wird solange wiederholt, bis alle vier Bytes ausgelesen wurden. Es ergeben sich damit insgesamt 22 Befehlsschritte für den "Move"-Befehl, also zum Verschieben eines einzelnen Wortes bestehend aus 32 Bit aus dem Speicher. Eine große Anzahl von Befehlsschritten und häufige Zugriffe auf den Speicher führen allerdings zu einem hohen Leistungsverbrauch der programmgesteuerten Einheit und ferner zu einer großen Chipflä- ehe.
Bei Anwendung einer programmgesteuerten Einheit, insbesondere einer programmgesteuerten Einheit mit einem festen Befehlssatz (Instruction Set), besteht somit der Bedarf, häufig wie- derkehrende Funktionen innerhalb eines auszuführenden Programms effektiver zu gestalten.
Der vorliegenden Erfindung liegt die Aufgabe zugrunde, eine verbesserte, insbesondere eine vereinfachte, Bearbeitung von Befehlen bei einer programmgesteuerten Einheit zu ermöglichen.
Die der Erfindung zugrunde liegende Aufgabe wird erfindungsgemäß durch ein Verfahren bzw. eine programmgesteuerte Ein- heit zur Bitfeldverschiebung mit den Merkmalen der Patentansprüche 1 und 26 gelöst.
Demgemäß ist vorgesehen:
Ein Verfahren zur Bitfeldverschiebung in einer Speichereinrichtung einer programmgesteuerten Einheit infolge einer Ausführung eines Befehls bei dem ein Bitsegment innerhalb einer ersten Speichereinheit in eine zweite Speichereinheit verschoben wird, mit den folgenden Verfahrensschritten:
(a) Auslesen des Bitsegments mit einer ersten Bitweite aus einem ersten Bitfeld der ersten Speichereinheit begin- nend an einem ersten Startpunkt;
(b) Speichern des ausgelesenen Bitsegments in erstes Bitfeld der zweiten Speichereinheit beginnend an einem zweiten Startpunkt;
(c) Aktualisieren des ersten und/oder des zweiten Startpunk- tes um einen vorgegebenen Wert;
(d) Speichern des aktualisierten ersten und/oder des zweiten Startpunktes für nachfolgende Verfahrensschritte. (Patentanspruch 1)
Eine programmgesteuerte Einheit zur Bearbeitung von Befehlen in einem Prozessor, insbesondere mit Pipeline-Architektur, mit einem Speicher, in dem Befehle abgelegt sind, mit mindestens einer Speichereinheit, aus der ein Bitseg- ment und/oder ein Bitfeld auslesbar und/oder wieder ein¬ fügbar sind,
- mit mindestens einem zusätzlichen Register zur Speicherung des aktualisierten ersten und/oder zweiten Startpunktes mittels eines Verfahrens nach einem der vorstehenden An- sprüche,
- mit mindestens einer Einrichtung zur Berechnung des aktualisierten ersten und/oder zweiten Startpunkts,
- mit einer Einrichtung zu Bitfeldmanipulation, die das Bitsegment innerhalb des ersten Bitfeldes in einen Bereich des zweiten Bitfeldes verschiebt. (Patentanspruch 26)
Vorteilhafte Ausgestaltungen und Weiterbildungen sind den Unteransprüchen sowie der Beschreibung unter Bezugnahme auf die Zeichnungen entnehmbar.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, dass immer wiederkehrende Programmschritte nicht ständig neu aus einem Speicher bzw. einem Register herausgeladen werden müssen. Die der vorliegenden Erfindung zu Grunde liegende Idee besteht daher darin, diese wiederkehrenden Programmschritte in eine Programmschleife (Loop) einzubetten. Damit lässt sich insbesondere bei einer Vielzahl von sich wiederholenden Programmschritten die Anzahl der dafür erforderlichen Befehle signifikant reduzieren. Eine Reduzierung der einzelnen Programmschritte bzw. Programmfunktionen hat eine Reduzierung des Leistungsverbrauchs und darüber hinaus durch ei- nen geringeren Speicher auch eine Reduzierung der Speichergröße zur Folge.
Sowohl im Falle einer registerindirekten Adressierung eines Speichers wie auch im Falle einer direkten Registeradressie- rung können mittels des erfindungsgemäßen Verfahrens bzw. der erfindungsgemäßen programmgesteuerten Einheit die Speicherzugriffe bzw. die Registerzugriffe vorteilhafterweise sehr gering gehalten werden.
Für die Implementierung dieser Funktionalität ist erfindungsgemäß eine Aktualisierung des Bitpositionszeigers vorgesehen.
Das erfindungsgemäße Verfahren sieht für diese zusätzliche Funktionalität vorteilhafterweise vor, dass die letzte bzw. alternativ auch die nächste Bitposition als Bitpositionszeiger (Startpunkt) abgespeichert wird. Dieser Bitpositionszeiger gibt im Falle von sich wiederholenden Programmabschnitten an, an welcher Stelle die Daten abgespeichert werden sollen bzw. ausgelesen werden sollen. Dies wird erreicht durch In- krementieren eines festen Offsets mit dem letzten Bitpositionszeiger, der in dem zusätzlichen Register abgespeichert wird. Der neue Bitpositionszeiger ergibt sich dann aus dem alten, abgespeicherten Bitpositionszeiger plus dem vorgegebenen Offset bzw. der vorgegebenen Bitweite.
Für die Bitfeldmanipulation im Falle einer direkten Adressierung wird erfindungsgemäß ein zusätzliches Register einge- führt. Dieses zusätzliche Register beinhaltet die Funktionalität einer Programmschleife, indem sie die Bitposition beibehält, bei der nach einem Auslesen eines Bitsegmentes aus einem Datenstring das nächste Bitsegment ausgelesen werden soll. Durch das Vorsehen dieses zusätzlichen Registers zur Speicherung der letzten Bitposition wird die Anzahl der Anschlüsse des Registers vorteilhafterweise nicht verändert.
Durch die vorliegende Erfindung wird die bestehende Funktio- nalität insbesondere bei dem sequentiellen Auslesen von Daten aus einem Speicher unter Verwendung variabler Bitpositionen erweitert. Zu diesem Zweck ist eine Architektur der programmgesteuerten Einheit vorgesehen, welche die zuletzt ausgelesenen Daten (sequentiell) in einem Cashe-Speicher ablegt, wo- durch aufgrund der dadurch wegfallenden Speicherzugriffe der Leistungsverbrauch weiter reduziert wird. Es handelt sich hier also um einen Datencashe-Speicher .
Die vorliegende Erfindung wird nachfolgend anhand der in den Figuren der Zeichnungen angegebenen Ausführungsbeispiele näher erläutert. Es zeigt dabei:
Figur 1 eine schematische Darstellung zur Veranschaulichung des erfindungsgemäßen Verfahrens zur Bitfeldmanipu- lation (Bit Field Manipulation) bei direkter Adressierung;
Figur 2 in einem Blockschaltbild die Pipeline-Architektur der erfindungsgemäßen programmgesteuerten Einheit;
Figur 3 ein detailliertes Blockschaltbild zur Veranschaulichung der Implementierung des zusätzlichen Registers der erfindungsgemäßen programmgesteuerten Einheit aus Figur 2; Figur 4 eine schematische Darstellung des erfindungsgemäßen Verfahrens zur Bitfeldverschiebung (Bit Field Move- ment) bei indirekter Adressierung;
Figur 5 das Blockschaltbild einer programmgesteuerten Einheit zur Ausführung eines erfindungsgemäßen Verfahrens zur Bitfeldverschiebung mittels indirekter Adressierung.
In allen Figuren der Zeichnungen sind gleiche bzw. funktionsgleiche Elemente und Signale - sofern nichts anderes angegeben ist - mit gleichen Bezugszeichen versehen worden.
Die vorliegende Erfindung sieht vor, bei einer programmge- steuerten Einheit mit Pipeline-Architektur für sich wiederholende Programmschritte bzw. Programmblöcke eine Programmschleife einzuführen. Diese Schleife sollte vorteilhafterweise ohne das Vorsehen zusätzlicher Registeranschlüsse möglich sein. Das sich daraus ergebende Programm weist die folgende Funktionalität auf:
Rd(#bits, offsetl_reg) <= Rs (#bits, offset0_reg) offset0_reg <= (offset_reg + #offset0) offsetl_reg <= (offsetl_reg + #offsetl)
Dabei bezeichnet Rs das Quellregister (Register Source) und Rd das Zielregister (Register Destination) . Offset0_reg und offsetl_reg bezeichnen jeweils die Bitpositionszeiger für die entsprechenden Register. #bits bezeichnet die Bitweite und #offset0 bzw. #offsetl bezeichnen den jeweiligen Offset im
Quellregister und Zielregister, bei denen die jeweiligen Bitpositionszeiger bei einem nachfolgenden Auslese- bzw. Einfügeschritt die entsprechenden Bitsegmente auslesen bzw. einfügen. Die erste Zeile beinhaltet also, dass ein Bitsegment der Bitbreite #bits an der Stelle offset0_reg vom Quellregister an die Stelle offsetl_reg bewegt werden soll. Die nächsten beiden Zeilen bezeichnen das erfindungsgemäße Verfahren, bei dem sich die beiden aktuellen Bitpositionszeiger für Quellregister und Zielregister aus der Addition des jeweils vorher verwendeten Bitpositionszeiger mit dem entsprechenden Offset ergibt .
In der Assembler-Programmiersprache hat das entsprechende Programm die folgende Syntax:
MVRSO Rd #offsetl Rs #offset0 #bits
In einer vereinfachten Umsetzung ergibt sich daraus ein Programm mit den folgenden Schritten:
init 1 0 0 0 0 ldi R4 0 3 // Lade Zähler = 3
_loop: mvrso R2 0 Rl 8 8 addi R3 R2 1 str R15 R3 decibr R4 1 _loop 1 // Dekrementiere mit 1; Sprung- befehl, wenn Zähler = 0
Gemäß Zeile 1 des Programmes werden die Registerplätze vorbesetzt, indem sie initialisiert werden. In Zeile zwei wird der Zählerstand eines Zählers auf drei gesetzt. Die Zeilen drei bis sechs beinhalten die Programmschleife, wobei gemäß Zeile drei jeweils ein Byte aus der entsprechenden Bitposition des Quellregisters ausgelesen und geschrieben wird. Danach werden die Offsetregister aktualisiert. In Programmzeile 5 wird der Inhalt von R3 auf die Adresse, die in R15 enthalten ist, ge- speichert (indirekte Adressierung) . Die letzte Zeile 6 setzt den Zählerstand jeweils um eins nach unten (Dekrementieren) . Ferner soll die Schleife wieder bei Zeile drei fortgesetzt werden, solange bis der Zählerstand null ist. Das bloße Einführen einer Schleife reduziert die Anzahl der für den „Mo- ve" -Befehl MVR erforderlichen Instruktionen auf insgesamt 6 im Vergleich zu den eingangs dafür erforderlichen 12 Instruktionen. Die Schleife im obigen Programmablauf ist möglich durch Aktualisierung der dem Quellregister und Zielregister Rs, Rd zugeordneten Bitpositionszeigers offsetO_reg, offsetl_reg. Fi- gur 1 zeigt eine schematische Darstellung zur Veranschaulichung dieses erfindungsgemäßen Verfahrens.
In Figur 1 sind mit Rs und Rd jeweils ein Datenwort aus dem Quellregister bzw. dem Zielregister bezeichnet. Zunächst wer- den die Bitpositionszeiger offset0_reg, offsetl_reg initialisiert, d.h. im vorliegenden Fall auf 0 gesetzt. In einem ersten Schritt (1) wird das erste Byte (#bits = 8 Bits) beginnend von der Startposition, die durch den Bitpositionszeiger offset0_reg = 0 Bits festgelegt ist, in einen entsprechenden Bereich des Zielregisters Rd beginnend mit der Startposition, die durch den Bitpositionszeiger offsetl_reg = 0 Bits festgelegt ist, geschrieben. Im zweiten Schritt (2) wird das zweite Byte vom Quellregister Rs in das Zielregister Rd geschrieben. Die Startpositionen, die festlegen, an welcher Position das zweite Byte ausgelesen bzw. eingeschrieben wird, werden wiederum durch die Bitpositionszeiger offset0_reg, offsetl__reg bestimmt. Vor dem zweiten Schritt (2) wurden allerdings diese Werte der Bitpositionszeiger aktualisiert, indem die Werte der jeweils alten Bitpositionszeiger, also offset0_reg und offsetl_reg, durch Addition mit einem jeweiligen Offset-Wert #offset0, #offsetl aktualisiert werden. Im vorliegenden Beispiel sind beide Offset-Werte identisch und betragen #offset0 = #offsetl = 8 Bits. Diese aktualisierten Bitpositionszeiger offset0_reg, offsetl__reg werden also bei dem zweiten Schritt (2) für die Bestimmung der Startposition berücksichtigt. Für die weiteren Bytes (Schritte (3), (4)) werden die Bitpositionszeiger offset0_reg, offsetl_reg entsprechend aktualisiert.
Zur Aktualisierung der jeweiligen Bitpositionszeigerwerte ist das Vorsehen eines zusätzlichen Registers erforderlich. Der Aufbau einer programmgesteuerten Einheit mit einem solchen zusätzlichen Register zum Speichern der jeweils, aktualisier- ten Bitpositionszeigerwerte wird nachfolgend anhand der Figuren 2 und 3 näher erläutert.
Figur 2 zeigt dabei anhand eines Blockschaltbildes die Pipe- line-Architektur einer erfindungsgemäßen programmgesteuerten Einheit mit zusätzlichem Register.
In Figur 2 ist mit Bezügszeichen 1 die entsprechende programmgesteuerte Einheit, die hier als Pipeline-Prozessor aus- gebildet ist, bezeichnet. Im vorliegenden Ausführungsbeispiel ist eine dreistufige Pipeline vorgesehen. Die Bezugszeichen 2 bis 4 bezeichnen dabei die verschieden Pipeline-Register für die einzelnen Pipelinestufen. Die programmgesteuerte Einheit 1 enthält einen Befehlsspeicher 5, in dem ein fester Be- fehlssatz (Instruction Set) abgelegt ist. Der Befehlsspeicher
5 ist über die Pipelinestufe 2 mit einem Befehlsdecoder 6 verbunden. Dem Befehlsdecoder 6 nachgeschaltet ist das Quellregister 7, aus dem abhängig von den durch den Befehlsdecoder
6 decodierten Befehlen Daten ausgelesen werden und über die Pipelinestufen 3 einer Recheneinheit 8 zugeführt werden. Die
Recheneinheit 8 ist hier als arithmetisch logische Einheit (ALU) ausgebildet. In der zweiten Pipelinestufe 3 kann ferner ein Datenspeicher 9 vorgesehen sein, der eingangsseitig ebenfalls mit dem Quellregister 7 gekoppelt ist. Die ALU-Einheit 8 und der Datenspeicher 9 sind über die Pipelinestufe 4 einerseits mit Ausgangsanschlüssen 10 und andererseits mit einem Barrel-Shifter 11 verbunden. Der Barrel-Shifter 11 enthält eine Einrichtung zur Bitfeldmanipulation. Der Barrel- Shifter 11 ist ausgangsseitig mit dem Zielregister 12 gekop- pelt.
Für die Implementierung der oben anhand von Figur 1 dargestellten Funktionalität zur Aktualisierung der Bitpositionszeiger für Quellregister 7 und Zielregister 11 ist erfin- dungsgemäß ein zusätzliches Register 13 vorgesehen. Dieses zusätzliche Register 13 ist in Figur 2 in der zweiten Pipelinestufe 3 angeordnet und mit der ALU-Einheit 8 gekoppelt. Figur 3 zeigt ein detailliertes Blockschaltbild zur Veranschaulichung der Implementierung des zusätzlichen Registers der erfindungsgemäßen programmgesteuerten Einheit aus Figur 2.
Aus dem Programmspeicher 5 werden die einzelnen Befehle bzw. Instruktionen inst ausgelesen und dem Befehlsdecoder 6 zugeführt. Der Befehlsdecoder 6 erzeugt mittels der Signale #reg0, #regl die jeweiligen Registeradressen für das Quellregister Rs und Zielregister Rd. Diese Signale #reg0, #regl werden dem Register 20 zugeführt, wobei das Register 20 die Funktionalität des Quellregisters 7 und des Zielregisters 12 beinhaltet. In Abhängigkeit der Registeradressen #reg0, #regl werden aus dem Datenregister 20 Datensignale datal, dataO ausgegeben und einem Multiplexer 21 zugeführt.
Die programmgesteuerte Einheit enthält ferner einen Barrel- Shifter 11, einen Maskengenerator 22 sowie einen Addierer 23. Die Elemente 11, 22, 23 dienen der Bitfeldmanipulation. Der Befehlsdecoder 6 erzeugt ein Signal #bits, welches eine Bitweite angibt und welches dem Maskengenerator 22 zugeführt wird. Der Maskengenerator 22 erzeugt ausgehend davon eine Maske zur Bitfeldmanipulation. Die Funktionsweise dieser Bit- feldmanipulation ist dem Fachmann allgemein bekannt und beispielsweise in den bereits in der Beschreibungseinleitung genannten Druckschriften ausführlich beschrieben, so dass hier nicht näher darauf eingegangen werden soll.
Der Befehlsdecoder 6 stellt ausgangsseitig ferner zwei Offsetsignale #offset0, #offsetl bereit, die in einer ersten Betriebsweise direkt dem Addierer 23 zugeführt werden. In dieser ersten Betriebsweise wird das Signal #offsetl im Addierer 23 vom Signal #offset0 abgezogen und das daraus resultierende Signal shO dem Barrel-Shifter 11 zugeführt. Der Barrel-
Shifter 11, dem darüber hinaus das Datensignal dataO zuge- führt wird, erzeugt ausgehend davon ein Ausgangssignal, welches dem Multiplexer 21 zugeführt wird.
Die programmgesteuerte Einheit weist erfindungsgemäß ein zu- sätzliches Register 13 auf, welches neben dem ersten Betriebsmodus einen zweiten Betriebsmodus ermöglicht. Das zusätzliche Register 13 weist zwei Eingänge und zwei Ausgänge auf. Den Eingängen des zusätzlichen Registers 13 ist jeweils ein Addierer 24, 25 vorgeschaltet, den beiden Ausgängen ist jeweils ein Multiplexer 26, 27 nachgeschaltet. Die Ausgangssignale offset0_reg, offsetl_reg des zusätzlichen Registers 13 werden einerseits den jeweils nachgeschalteten Multiple- xern 26, 27 zugeführt. Andererseits werden diese Signale off- set0_reg, offsetl_reg über eine Rückkopplungsschleife den je- weiligen Addierern 24, 25 zugeführt und dort mit den Offset- signalen #offset0, #offsetl addiert. Das Ergebnis dieser jeweiligen Additionen wird jeweils in den entsprechenden Eingang des zusätzlichen Registers 13 eingekoppelt.
Über das Enable-Ξignal #so_enb, welches ebenfalls vom Befehlsdecoder 6 bereit gestellt wird, werden die Multiplexer 26, 27 sowie das zusätzliche Register 13 gesteuert.
Mittels der in den Figuren 2 und 3 dargestellten Anordnungen lässt sich vorteilhafterweise eine Implementierung des Befehls „Move" und damit auf sehr einfache, leistungssparende Weise eine Bitfeldmanipulation, durchführen.
Das obige anhand der Figuren 1 bis 3 beschriebene Ausfüh- rungsbeispiel bezog sich auf eine direkte Adressierung, bei der eine Bitfeldmanipulation vorgenommen wurde. In dem nachfolgenden, anhand der Figuren 4 und 5 beschriebenen Ausführungsbeispiel wird das erfindungsgemäße Verfahren für eine registerindirekte Adressierung eines Speicherzugriffes, bei dem eine Bitfeldverschiebung (Bit Field Movement) vorgenommen werden soll, eingesetzt. Im Falle des eingangs beschriebenen „Move" -Befehls führt das erfindungsgemäße Verfahren in diesem Fall die folgenden Instruktionen aus:
Bei einem Lesevorgang: Rd <= mem( (base_adr + #disp) , bit_pos, #bits)
Bei einem Schreibvorgang: mem( (base_adr + disp) , bit_pos, #bits) <= Rs
Dabei bezeichnen Rs und Rd wiederum den Inhalt von Quellregister bzw. Zielregister. Base_adr bezeichnet eine Startadresse in dem als Stackspeicher ausgebildeten Speicher. #disp bezeichnet die Adressdistanz (Displacement) der Adresse zu der Basisadresse in dem Stackspeicher und bit_pos bezeichnet den Bitpositionszeiger. #bits bezeichnet wiederum die Bitweite, also die Anzahl der zu bewegenden Bits. Für die Assembler-Betriebssprache ergibt sich somit die folgende Syntax im Falle eine Lesevorgangs:
LDX Rd #bits @Rs #disp #auto_increment
Dabei ist das Register @Rs als Basisadresse base_adr = Rs [31:5] gesetzt und der Bitzeiger bit_pos = Rs [4:0] gesetzt. #auto_increment = 1 bezeichnet, dass der Bitpositionszeiger jeweils um die Anzahl der Bits #bits weitergesetzt wird. Es gilt ferner Rs <= Rs + #bits.
Der Befehl Speichern STX weist eine ähnliche Assemblersyntax auf:
STX @Rd #bits Rs #disp #auto_increment
Hier ist das Register @Rd mit der Basisadresse base_adr = Rd [31:5] und die Bitposition bit_pos = Rd [4:0] gesetzt.
Es ergibt sich in einer vereinfachten Umsetzung damit der folgende Programmablauf bei einem Lesebefehl: ldi R4 5 0x030 // Lade Positionszeiger = 0x30, bit_pos = 0 ldi R5 5 0x040 // Lade Positionszeiger = 0x40, bit_pos = 0 ldi R6 0 8 // Prozessiere 4 8 bits loop; ldx R2 8 R4 0x08 1 , nop nop addi R3 R2 1 str R5 8 R3 0x080 1 decibr R6 l_loop 1 //Dekrementiere um 1; Sprungbefehl wenn Zähler nicht 1
Gemäß den ersten beiden Zeilen dieses Programms werden zunächst die Positionszeiger für den Stackspeicher geladen. Ferner werden die Positionszeiger bit_pos auf 0 gesetzt. Gemäß Zeile drei wird festgelegt, dass 8 mal jeweils 1 Byte prozessiert werden uss. Die Zeilen vier bis neun geben die erfindungsgemäße Programmschleife an. Dabei wird zunächst gemäß Zeile vier ein Bitsegment geladen, gemäß Zeile sieben entsprechend prozessiert und gemäß Zeile acht wieder an eine entsprechende Zeile des Zielregisters geschrieben. Gemäß Zeile neun wird der Schleifenzähler um eins zurückgesetzt und die Schleife beginnt wieder von vorn, solange, bis der Schleifenzähler bei Null angelangt ist.
Es ergeben sich hier im Vergleich zu den in der Beschreibungseinleitung für denselben Befehl benötigten 22 Instrukti- onen zum Auslesen und Verschieben eines Datenwortes aus dem Speicher lediglich neun Instruktionen. Damit geht eine deutliche Reduzierung der Leistungsaufnahme einher.
Anhand der schematischen Darstellung in Figur 4 soll dieses erfindungsgemäße Verfahren zur Bitfeldverschiebung (Bit Field Movement) bei indirekter Adressierung erläutert werden. Im Falle einer indirekten Adressierung mit Displacement legt der Registerinhalt Rs des Quellregisters fest, an welcher Stelle des Stackspeichers 9 die Daten ausgelesen werden sollen. Zu diesem Zwecke weist das Quellregister Rs ein erstes Bitsegment 30 auf, in dem die entsprechende Adresse im Speicher 9 angegeben ist. Das Signal #disp gibt einen Adressabstand bezogen auf die im Quellregister angegebene Adresse an, die somit die aktuelle Adresse bestimmt. Ein zweites Bitsegment 31 enthält den Positionszeiger bit_pos, der angibt, an welcher Stelle der aktuellen Adresse die Daten mit der Bitweite #bits ausgelesen werden sollen. Dieses aus dem Stackspeicher 9 ausgelesene Bitsegment 32 wird dann in das Bitsegment 33 des Zielregisters mit dem Inhalt Rd eingefügt.
Im Beispiel in Figur 4 wird das Bitsegment 32 dabei in das
Bitsegment 33 beginnend mit Null des Zielregisters Rd eingeschrieben, jedoch könnte es auch, je nach Implementierung, an einer beliebigen Stelle des Zielregisters Rd eingeschrieben werden.
Mittels des erfindungsgemäßen Verfahrens werden bei konstant bleibendem Inhalt Rs des Quellregisters 7 fortwährend Datensegmente 32 aus dem Stackspeicher 9 in das Zielregister an die Stelle 33 geschrieben. Der Adressabstand #disp bleibt da- bei stets konstant. Es wird lediglich die jeweilige Bitposition bit_pos für den nächsten Ausleseschritt aktualisiert.
Für den ersten Ausleseschritt n gilt beispielsweise:
n: bit_pos = 16; #bits = 10
Für den nächsten Ausleseschritt n+1 gilt dann im Falle eines 32 bit Datenwortes:
n+1: bit_pos = 10 + 16 = 26; #bits = 6 In einer vorteilhaften Ausgestaltung erfolgt für den Fall, dass das Datensegment 32 am Ende des entsprechenden Datenwortes 34 im Stackspeicher 9 angelangt ist, ein Übertrag auf den Adressinhalt im Bitsegment 30. Dabei wird die im Bitseg ent 30 abgelegte Adresse mit Eins addiert. Dies bewirkt, dass die Adresse im Stackspeicher 9 um eine Zeile nach unten versetzt wird und bei konstantem Adressabstand somit auch die aktuelle Adresse um eine Zeile nach unten versetzt wird. Durch den Ü- bertrag wird darüber hinaus der Positionszeiger aufgrund des Rücksetzens der Bitposition im Bitsegment 31 auf null gesetzt, so dass das Datenwort in der nachfolgende Zeile beginnend mit Null ausgelesen werden kann.
Figur 5 zeigt das Blockschaltbild einer programmgesteuerten Einheit für die Implementierung des erfindungsgemäßen Verfahrens zur Bitfeldverschiebung mittels indirekter Adressierung entsprechend Figur 4. Die Figur 5 wie auch die oben beschriebene Figur 3 zeigen lediglich eine schematische Darstellung der programmgesteuerten Einheit, d. h. dort sind insbesondere funktioneile Einheiten, die nicht direkt für die Darstellung der Erfindung notwendig sind, der besseren Übersicht wegen nicht dargestellt worden.
Im Unterschied zu der direkten Adressierung aus Figur 3 wer- den die Befehlscodes #reg0, #regl nicht in den Befehlsdecoder 6 eingekoppelt, sondern direkt in das Register 20. Die Signale #reg0, #regl entsprechen den Registerinhalten Rs, Rd des Quellregisters bzw. des Zielregisters.
Der Befehlsdecoder 6 erzeugt das Ausgangssignal tdisp, welches in dem Addierer 40 zusammen mit dem Ausgangssignal A des Registers 20 addiert wird. Das sich daraus ergebende Signal bezeichnet die aktuelle Adresse im Stackspeicher 9, welche dem Adresseingang a_mem des Stackspeichers 9 zugeführt wird. An einem Ausgang o_mem des Stackspeichers 9 wird ausgehend von der jeweiligen aktuellen Adresse ein auszulesendes Bitsegment dem Barrel-Shifter 11 zugeführt. Der Befehlsdecoder 6 erzeugt ferner das Signal #bits, welches dem Maskengenerator 22 zugeführt wird, der ausgehend davon ein Signal mask erzeugt, welches dem Barrel-Shifter 11 zugeführt wird. Der Barrel-Shifter 11 erzeugt daraus und aus dem vom Stackspeicher 9 ausgelesenen Datensignal ein verschobenes Datensignal, welches in das Zielregister 20 geschrieben wird. Darüber hinaus wird der Positionszeiger für die nächste Adressierung aktualisiert.
Die programmgesteuerte Einheit in Figur 5 weist ferner eine Steuereinheit 41 zum Steuern des Lesevorgangs aus dem Speicher 9 auf. Über das Signal #cs, welches vom Befehlsdecoder 6 der Steuereinheit 41 zugeführt wird, wird ein Speicherzugriff auf den Stackspeicher 9 erst möglich gemacht. Zu diesem Zweck weist der Stackspeicher 9 einen Steuereingang cs_mem auf, in den ein Steuersignal cs_o der Steuereinheit 41, welches vom Signal #cs abgeleitet ist, einkoppelbar ist.
Das ebenfalls vom Befehlsdecoder 6 zur Verfügung gestellte
Signal #auto_increment wird zur Steuerung der Inkrementierung bzw. auch Dekrementierung des Lese- bzw. Schreibzeigers nach einer erfolgten Lese- bzw. Schreiboperation verwendet.
Zwischen dem Datenausgang o_mem des Speichers 9 und dem Bar- rel-Shifter 11 ist in einer vorteilhaften Ausgestaltung ein Cashe-Speicher 42 vorgesehen. Der Cashe-Speicher 42 ist ferner mit dem Ausgang oder Speichereinheit 41 verbunden und damit mit dem Steuersignal cs_o beaufschlagbar. Über den Ein- gang adr ist der Steuereinheit 41 die jeweils aktuelle Adresse, mit der der Speicher 9 von dem Register 20 adressiert wird, verbunden. Die Steuereinheit 41 vergleicht diese aktuelle Adresse mit bereits früher eingekoppelten Adressen und stellt damit fest, ob die aktuelle Adresse bereits vorher vorhanden war. Ergibt dieser Vergleich, dass die Adresse bereits vorhanden war, dann wird der Speicher 9 über das Steuersignal es 0 inaktiviert. Die entsprechenden Daten werden statt dessen aus dem Cashe-Speicher 42 ausgelesen. Das aus dem Cashe-Speicher 42 ausgelesene Bitsegment wird über den Barrel-Shifter 11 verschoben und über den Maskengenerator 21 maskiert und dann als neue Basisadresse in das Zielregister im Register 20 zurückgeschrieben. Voraussetzung dafür ist, dass die der jeweils aktuellen Adresse entsprechenden Daten noch in dem Cashe-Speicher 42 vorhanden sind. Da für diese sehr vorteilhafte Implementierung nicht eigens auf den Stackspeicher 9 zugegriffen wird, sondern die entsprechenden Daten direkt aus dem Cashe-Speicher 42 ausgelesen werden können, ergibt sich vorteilhafterweise eine signifikante Reduzierung des Energieverbrauchs.
Obwohl die vorliegende Erfindung vorstehend anhand eines be- vorzugten Ausführungsbeispiels beschrieben wurde, ist sie darauf nicht beschränkt, sondern auf vielfältige Weise modifizierbar .
So kann beispielsweise die programmgesteuerte Einheit als MikroController, Mikroprozessor, Signalprozessor oder dergleichen ausgebildet sein. Es kann sich dabei um einen Prozessor mit Pipeline-Architektur oder einen Protokollprozessor handeln.
Darüber hinaus wurde die Erfindung vorstehend anhand einer
32-Bit-Prozessorarchitektur beschrieben, jedoch ist sie nicht darauf beschränkt. Vielmehr kann hier eine beliebige Prozessorarchitektur mit 64 Bits, 16 Bits, 8 Bits oder einer beliebig anderen Bitweite vorgesehen sein.
Auch ist die vorliegende Erfindung nicht auf die vorstehenden Adressierungsarten, nämlich einer direkten Registeradressierung oder einer indirekten Registeradressierung mit Displacement, beschränkt, sondern kann auf beliebige Adressierungsar- ten erweitert werden. Darüber hinaus kann die angegebene Pipelinestruktur auch mehr oder weniger als drei Stufen aufweisen.
Die Erfindung sei ferner nicht auf das Auslesen bzw. Beschreiben von als Register ausgebildete Speicher festgelegt, sondern kann im Rahmen der Erfindung zum Auslesen und Beschreiben von beliebigen Speichern, z. B. Adress- oder Datenregister, aber auch auf Datenspeicher wie RAM, SRAM, etc. erweitert werden.
Das erste und/oder das zweite Bitfeld ist in den vorstehenden Ausführungsbeispielen als 32-Bit breites Datenwort ausgebildet und das auszulesende Bitsegment weist eine Bitweite von 8 Bits auf. Die Erfindung sei aber nicht darauf beschränkt, sondern kann selbstverständlich auf beliebig breite Bitfelder erweitert werden. Wesentlich ist nur, dass die Bitsegmente zumindest eine gleiche oder geringere Bitweite als die Bitfelder aufweisen.
Bezugszeichenliste
I programmgesteuerte Einheit 2 - 4 Pipelinestufen 5 Befehlsspeicher, Programmspeicher
6 Befehlsdecoder
7 Quellregister
8 Recheneinheit, ALU
9 Datenspeicher 10 Ausgangsanschlüsse
II Barrel-Shifter
12 Zielregister
13 zusätzliches Register 20 Register 21 Multiplexer
22 Maskengenerator
23 - 25 Addierer
26 - 27 Multiplexer
30 Bitsegment für die Adresse 31 Bitsegment für den Positionszeiger
32 Bitsegment für auszulesende Daten
33 Bitsegment für einzulesende Daten
34 Datenwort, Dateninhalt 40 Addierer 41 Steuereinheit
42 Cashe-Einheit

Claims

Patentansprüche
1. Verfahren zur Bitfeldverschiebung in einer Speichereinrichtung einer programmgesteuerten Einheit infolge einer Aus- führung eines Befehls, bei dem ein Bitsegment innerhalb einer ersten Speichereinheit in eine zweite Speichereinheit verschoben wird, mit den folgenden Verfahrensschritten:
(a) Auslesen des Bitsegments mit einer ersten Bitweite aus einem ersten Bitfeld der ersten Speichereinheit begin- nend an einem ersten Startpunkt;
(b) Speichern des ausgelesenen Bitsegments in erstes Bitfeld der zweiten Speichereinheit beginnend an einem zweiten Startpunkt;
(c) Aktualisieren des ersten und/oder des zweiten Start- punktes um einen vorgegebenen Wert;
(d) Speichern des aktualisierten ersten und/oder des zweiten Startpunktes für nachfolgende Verfahrensschritte.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet , dass nach dem Verfahrensschritt (d) folgender Verfahrensschritt vorgesehen ist:
(e) Zurückspringen zurück zum Verfahrensschritt (a) .
3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekenn z eichnet , dass vor dem Verfahrensschritt (a) eine Initialisierung stattfindet.
4. Verfahren nach einem der Ansprüche 1 oder 2, dadurch ge kennz ei chnet , dass vor dem Verfahrensschritt (a) ein Rücksetzen der Startpunkte und/oder der Adressen stattfindet.
5. Verfahren nach einem der vorstehenden Ansprüche, dadurch ge kennz eichnet , dass zwischen den Verfahrensschritten (a) und (c) das ausgelesenen Bitsegment bearbeitet wird.
6. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet , dass der vorgegebene Wert im Fall des ersten Startpunktes ein erster Offsetwert und im Fall des zweiten Startpunktes ein zweiter Offsetwert ist.
7. Verfahren nach Anspruch 6 dadurch gekennzeichnet , dass der erste Offsetwert gleich dem zweiten Offsetwert ist.
8. Verfahren nach einem der Anspruch 6 oder 7, dadurch gekennzeichnet , dass der erste Offsetwert und/oder der zweite Offsetwert gleich der Bitweite des Bitsegmentes entspricht.
9. Verfahren nach einem der Ansprüche 6 bis 8, dadurch gekennzeichnet , dass der erste und der zweite Offsetwert identisch sind.
10. Verfahren nach einem der Ansprüche 6 bis 9, dadurch gekennzeichnet , dass die Offsetwerte durch Addition zweier (Immediate-) Werte aktualisiert werden.
11. Verfahren nach einem der Ansprüche 6 bis 10, dadurch gekennzeichnet , dass die Offsetwerte durch Addition der Bitweite aktualisiert werden.
12. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet , dass der erste und der zweite Startpunkt nicht identisch sind.
13. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren zur Bitfeldmanipulation verwendet wird.
14. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet , dass das Verfahren bei der direkten Registeradressierung verwendet wird und die erste Speichereinheit als Quellregister zum Speichern einer Adresse und die zweite Speichereinheit als Zielregister ausgebildet ist.
15. Verfahren nach einem der Ansprüche 1 bis 13, dadurch gekennzeichnet , dass das Verfahren bei der registerindirekten Adressierung eines Speichers verwendet wird und die erste Speichereinheit als Halbleiterspeicher, insbesondere als stapelweise organisierter Speicher (Stackspeicher) , und die zweite Speichereinheit als Zielregister ausgebildet ist.
16. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die letzte Adresse gespeichert wird und die' aktuelle Adresse mit der letzten, abgespeicherten Adresse verglichen wird, wobei für den Fall, dass der Vergleich aus aktueller und abgespeicherter Adresse ergibt, dass diese Adressen gleich sind, die erste Speichereinheit nicht aktiviert und damit nicht ausgelesen wird.
17. Verfahren nach einem der Ansprüche 1 bis 16, dadurch gekennzeichnet, dass die letzte Adresse gespeichert wird und die aktuelle Adresse mit der letzten, abgespeicherten Adresse verglichen wird, wobei für den Fall, dass der Vergleich aus aktueller und abgespeicherter Adresse ergibt, dass diese Adressen nicht gleich sind, die Daten aus der ersten Speichereinheit ausgelesen werden.
18. Verfahren nach Anspruch 17, da du r ch ge kenn z e i c hn e t , dass ein Cache-Speicher mit den Daten aus der ersten Speichereinheit beschrieben wird.
19. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die der aktuellen Adresse zugeordneten Bitsegmente aus einem Cache-Speicher in die zweite Speichereinheit ausgelesen werden.
20. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass für den Fall, dass ein Bitsegment innerhalb des ersten Bitfeldes am Ende des entsprechenden Bitfeldes angelangt ist, ein Übertrag auf die dem Bitfeld zugeordnete Adresse erfolgt.
21. Verfahren nach Anspruch 20, da du r ch g e kenn z e i chne t , dass bei dem Übertrag eine Addition der dem Bitfeld zugeordneten Adresse mit eins erfolgt.
22. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet-, dass das Bitsegment Bestandteil eines auszulesenden und zu bearbeitenden Datums ist.
23. Verfahren nach einem der Ansprüche 1 bis 21, dadurch gekennzeichnet, dass das Bitsegment Bestandteil einer auszulesenden und zu bearbeitenden Adresse ist.
24. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Bitfelder ein Datenwort oder eine Bruchteil oder ein Vielfaches davon beinhalten.
25. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet , dass bei der wiederholten Ausführung eines Befehls verschiedene Bitfelder nacheinander bearbeitet werden.
26. Programmgesteuerte Einheit zur Bearbeitung von Befehlen in einem Prozessor, insbesondere mit Pipeline-Architektur, mit einem Speicher, in dem Befehle abgelegt sind, - mit mindestens einer Speichereinheit, aus der ein Bitsegment und/oder ein Bitfeld auslesbar und/oder wieder einfügbar sind, mit mindestens einem zusätzlichen Register zur Speicherung des aktualisierten ersten und/oder zweiten Startpunktes mittels eines Verfahrens nach einem der vorstehenden Ansprüche, mit mindestens einer Einrichtung zur Berechnung des aktualisierten ersten und/oder zweiten Startpunkts, mit einer Einrichtung zu Bitfeldmanipulation, die das Bit- segment innerhalb des ersten Bitfeldes in einen Bereich des zweiten Bitfeldes verschiebt.
27. Programmgesteuerte Einheit nach Anspruch 26, dadurch gekennzeichnet , dass ein Befehlsdekoder zum Auslesen und Dekodieren zumindest eines Befehls aus dem Speicher vorgesehen ist.
28. Programmgesteuerte Einheit nach einem der Ansprüche 26 oder 27, dadurch gekennzeichnet , dass im Falle einer direkten Registeradressierung die erste Speichereinheit als Quellregister zum Speichern einer Adresse und die zweite Speichereinheit als Zielregister ausgebildet ist .
29. Programmgesteuerte Einheit nach einem der Ansprüche 26 oder 27, dadurch gekennzeichnet, dass im Falle einer registerindirekten Adressierung die erste Speichereinheit Halbleiterspeicher, insbesondere als stapelweise organisierter Speicher (Stackspeicher) , und die zweite Speichereinheit als Zielregister ausgebildet ist.
30. Programmgesteuerte Einheit nach einem der Ansprüche 26 bis 29, dadurch gekennzeichnet, dass eine Überbrückung vorgesehen ist, mittels der das zusätzliche Register nach Maßgabe eines Freigabesignal überbrückbar oder einschaltbar ist.
31. Programmgesteuerte Einheit nach einem der Ansprüche 26 bis 30, dadurch gekennzeichnet, dass eine Steuereinheit vorgesehen ist, die bei der Adressierung der ersten Speichereinheit die aktuelle Adresse mit bereits früher vorhandenen Adressen vergleicht, wobei für den Fall, dass dieser Vergleich ergibt, dass die aktuelle Adresse bereits früher vorhanden war, die erste Speichereinheit inaktiv gesetzt oder überbrückt wird.
32. Programmgesteuerte Einheit nach Anspruch 31, dadurch gekennzeichnet, dass ein Cache-Speicher vorgesehen ist, wobei für den Fall, dass die Steuereinheit erkennt, dass die aktuelle Adresse bereits früher vorhanden war, die der aktuellen Adresse zugeordneten Bitsegmente aus einem Cache-Speicher in die zweite Speichereinheit ausgelesen werden.
EP04722539A 2003-04-02 2004-03-23 Verfahren und programmgesteuerte einheit zur bitfeldverschiebung Ceased EP1620790A2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10314928A DE10314928A1 (de) 2003-04-02 2003-04-02 Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung
PCT/EP2004/003063 WO2004088503A2 (de) 2003-04-02 2004-03-23 Verfahren und programmgesteuerte einheit zur bitfeldverschiebung

Publications (1)

Publication Number Publication Date
EP1620790A2 true EP1620790A2 (de) 2006-02-01

Family

ID=33103170

Family Applications (1)

Application Number Title Priority Date Filing Date
EP04722539A Ceased EP1620790A2 (de) 2003-04-02 2004-03-23 Verfahren und programmgesteuerte einheit zur bitfeldverschiebung

Country Status (5)

Country Link
US (1) US7444488B2 (de)
EP (1) EP1620790A2 (de)
CN (1) CN100465880C (de)
DE (1) DE10314928A1 (de)
WO (1) WO2004088503A2 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2485774A (en) 2010-11-23 2012-05-30 Advanced Risc Mach Ltd Processor instruction to extract a bit field from one operand and insert it into another with an option to sign or zero extend the field
CN104011660B (zh) * 2011-12-22 2017-03-01 英特尔公司 用于处理位流的基于处理器的装置和方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2520882B2 (ja) * 1986-08-27 1996-07-31 株式会社日立製作所 デ−タ処理装置およびデ−タ処理方法
US5210835A (en) * 1986-08-27 1993-05-11 Ken Sakamura Data processing system having apparatus for increasing the execution speed of bit field instructions
JP2748957B2 (ja) * 1987-09-30 1998-05-13 健 坂村 データ処理装置
EP0382246A3 (de) * 1989-02-09 1991-09-11 Nec Corporation Bitadressierungsanordnung
JP2932963B2 (ja) * 1994-01-21 1999-08-09 モトローラ・インコーポレイテッド 効率的なビット移動能力を有するデータ・プロセッサとその方法
US6061783A (en) * 1996-11-13 2000-05-09 Nortel Networks Corporation Method and apparatus for manipulation of bit fields directly in a memory source
US6128725A (en) * 1997-01-24 2000-10-03 Texas Instruments Incorporated Microprocessor with an instruction for setting or clearing a bit field
US6332188B1 (en) * 1998-11-06 2001-12-18 Analog Devices, Inc. Digital signal processor with bit FIFO
GB2346470B (en) * 1999-02-05 2003-10-29 Advanced Risc Mach Ltd Bitmap font data storage within data processing systems

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2004088503A2 *

Also Published As

Publication number Publication date
CN100465880C (zh) 2009-03-04
DE10314928A1 (de) 2004-11-04
CN1799025A (zh) 2006-07-05
WO2004088503A3 (de) 2005-12-01
WO2004088503A2 (de) 2004-10-14
US7444488B2 (en) 2008-10-28
US20060101248A1 (en) 2006-05-11

Similar Documents

Publication Publication Date Title
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE2755273C2 (de)
DE2555963C2 (de) Einrichtung zur Funktionsmodifizierung
DE69624195T2 (de) Markierter vorausladungsabstand-und befehlsdekoder von variabler länge, befehlssätze und ihre verwendungsweise
DE60132633T2 (de) Digitale signalprozessorvorrichtung
DE3851746T2 (de) Sprungvorhersage.
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE69130414T2 (de) Prozessor und Verfahren zur parallelen Verarbeitung
DE3802025C1 (de)
DE10353267B3 (de) Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
EP1407348B1 (de) Verfahren zum ansteuern einer zentralen verarbeitungseinheit für eine adressierung bezüglich eines speichers und controller
DE2854400A1 (de) Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen
DE2245284A1 (de) Datenverarbeitungsanlage
EP0347970B1 (de) Verfahren zum Prüfen eines Festwertspeichers und Anordnung zur Durchführung des Verfahrens
DE2403039C2 (de) Einrichtung zur Befehlsausführung in einer adressenerweiterten elektronischen Datenverarbeitungsanlage
DE2725614A1 (de) Datenverarbeitungsanlage mit einer anordnung fuer einen schnellen und normalen befehlsaufruf
DE10040267A1 (de) Prozessor-Speicher-System
EP1620790A2 (de) Verfahren und programmgesteuerte einheit zur bitfeldverschiebung
DE10393188T5 (de) Verarbeitung von Wiederholungs-String-Operationen
DE69930893T2 (de) Digitaler Signalprozessor für Daten mit grosser Bitlänge
DE10201439B4 (de) Mikroprozessor
DE10110578A1 (de) Hierarchisches Prioritätsfilter mit integrierter Serialisierung
EP1031081B1 (de) Programmgesteuerte einheit und verfahren
DE10359949A1 (de) Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Taktzyklusverlust, ohne Umschalt-Programmbefehl und ohne Erweiterung des Programmbefehlsformates

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20050928

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL LT LV MK

DAX Request for extension of the european patent (deleted)
RBV Designated contracting states (corrected)

Designated state(s): DE FR GB

RIN1 Information on inventor provided before grant (corrected)

Inventor name: WAHL, THOMAS

Inventor name: NIE, XIAONING

17Q First examination report despatched

Effective date: 20070302

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: INFINEON TECHNOLOGIES AG

APBK Appeal reference recorded

Free format text: ORIGINAL CODE: EPIDOSNREFNE

APBN Date of receipt of notice of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA2E

APBR Date of receipt of statement of grounds of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA3E

APAF Appeal reference modified

Free format text: ORIGINAL CODE: EPIDOSCREFNE

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

APBT Appeal procedure closed

Free format text: ORIGINAL CODE: EPIDOSNNOA9E

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20140605