DE10314928A1 - Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung - Google Patents

Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung Download PDF

Info

Publication number
DE10314928A1
DE10314928A1 DE10314928A DE10314928A DE10314928A1 DE 10314928 A1 DE10314928 A1 DE 10314928A1 DE 10314928 A DE10314928 A DE 10314928A DE 10314928 A DE10314928 A DE 10314928A DE 10314928 A1 DE10314928 A1 DE 10314928A1
Authority
DE
Germany
Prior art keywords
bit
address
program
memory
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
DE10314928A
Other languages
English (en)
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
Priority to DE10314928A priority Critical patent/DE10314928A1/de
Priority to CNB2004800151951A priority patent/CN100465880C/zh
Priority to EP04722539A priority patent/EP1620790A2/de
Priority to PCT/EP2004/003063 priority patent/WO2004088503A2/de
Publication of DE10314928A1 publication Critical patent/DE10314928A1/de
Priority to US11/241,844 priority patent/US7444488B2/en
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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

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: DOLLAR A (a) Auslesen des Bitsegments mit einer ersten Bitweite aus einem ersten Bitfeld der ersten Speichereinheit, beginnend an einem ersten Startpunkt; DOLLAR A (b) Speichern des ausgelesenen Bitsegments in erstes Bitfeld der zweiten Speichereinheit, beginnend an einem zweiten Startpunkt; DOLLAR A (c) Aktualisieren des ersten und/oder des zweiten Startpunktes um einen vorgegebenen Wert; DOLLAR A (d) Speichern des aktualisierten ersten und/oder des zweiten Startpunktes für nachfolgende Verfahrensschritte.

Description

  • 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 C166-Familie mit einer 16-Bit-Architektur sowie der TriCore mit einer 32-Bit-Architektur. Diese programmgesteuerten Einheiten weisen eine Speichereinrichtung, einen Befehlsdecodier-, 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 Bitfeldmanipulation (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 A1 sowie auf die Spezifikation 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 „Move"-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:
    Figure 00020001
  • Mit dem „Move"-Befehl MVR wird ein Bitsegment der Bitweite #bits vom Quellregister Rs an der Bitposition #offset0 zum Zielregister Rd an der Bitposition #offset1 bewegt. Formal gesehen wird diese Operation wie folgt beschrieben:
    Rd(#bits, #offset1) ⇐ 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:
    Figure 00020002
    Figure 00030001
  • Die erste Zeile des Programms gibt an, dass ein erste Byte (8 Bits) an der Bitposition 0 an einer ersten Stelle R1 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 angegeben.
  • 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 positive 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 beispielsweise 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 Datenspeichers 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 Speicherzugriffe 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:
  • Figure 00050001
  • Die ersten beiden Zeilen geben an, dass ein Lesezeiger bzw. ein Schreibzeiger an die entsprechenden Stellen R1, R3 geladen werden. Anschließend (dritte Zeile) wird das erste Byte geladen. Nach zwei Programmschritten (vierte und fünfte Zeile), 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äche.
  • Bei Anwendung einer programmgesteuerten Einheit, insbesondere einer programmgesteuerten Einheit mit einem festen Befehlssatz (Instruction Set), besteht somit der Bedarf, häufig wiederkehrende 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 Einheit 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 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. (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 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 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 einen geringeren Speicher auch eine Reduzierung der Speichergröße zur Folge.
  • Sowohl im Falle einer registerindirekten Adressierung eines Speichers wie auch im Falle einer direkten Registeradressierung 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 Inkrementieren 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 Funktionalitä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, wodurch 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:
  • 1 eine schematische Darstellung zur Veranschaulichung des erfindungsgemäßen Verfahrens zur Bitfeldmanipulation (Bit Field Manipulation) bei direkter Adressierung;
  • 2 in einem Blockschaltbild die Pipeline-Architektur der erfindungsgemäßen programmgesteuerten Einheit;
  • 3 ein detailliertes Blockschaltbild zur Veranschaulichung der Implementierung des zusätzlichen Registers der erfindungsgemäßen programmgesteuerten Einheit aus 2;
  • 4 eine schematische Darstellung des erfindungsgemäßen Verfahrens zur Bitfeldverschiebung (Bit Field Movement) bei indirekter Adressierung;
  • 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 programmgesteuerten 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:
    Figure 00100001
  • Dabei bezeichnet Rs das Quellregister (Register Source) und Rd das Zielregister (Register Destination). Offset0_reg und offset1_reg bezeichnen jeweils die Bitpositionszeiger für die entsprechenden Register. #bits bezeichnet die Bitweite und #offset0 bzw. #offset1 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 offset1_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:
    Figure 00110001
  • In einer vereinfachten Umsetzung ergibt sich daraus ein Programm mit den folgenden Schritten:
    Figure 00110002
  • 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, gespeichert (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 „Move"-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 offset0_reg, offset1_reg. 1 zeigt eine schematische Darstellung zur Veranschaulichung dieses erfindungsgemäßen Verfahrens.
  • In 1 sind mit Rs und Rd jeweils ein Datenwort aus dem Quellregister bzw. dem Zielregister bezeichnet. Zunächst werden die Bitpositionszeiger offset0_reg, offset1 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 offset1_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, offset1_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 offset1_reg, durch Addition mit einem jeweiligen Offset-Wert #offset0, #offset1 aktualisiert werden. Im vorliegenden Beispiel sind beide Offset-Werte identisch und betragen #offset0 = #offset1 = 8 Bits. Diese aktualisierten Bitpositionszeiger offset0_reg, offset1_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, offset1_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 2 und 3 näher erläutert.
  • 2 zeigt dabei anhand eines Blockschaltbildes die Pipeline-Architektur einer erfindungsgemäßen programmgesteuerten Einheit mit zusätzlichem Register.
  • In 2 ist mit Bezugszeichen 1 die entsprechende programmgesteuerte Einheit, die hier als Pipeline-Prozessor ausgebildet 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 Befehlssatz (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 gekoppelt.
  • Für die Implementierung der oben anhand von 1 dargestellten Funktionalität zur Aktualisierung der Bitpositionszeiger für Quellregister 7 und Zielregister 11 ist erfindungsgemäß ein zusätzliches Register 13 vorgesehen. Dieses zusätzliche Register 13 ist in 2 in der zweiten Pipelinestufe 3 angeordnet und mit der ALU-Einheit 8 gekoppelt.
  • 3 zeigt ein detailliertes Blockschaltbild zur Veranschaulichung der Implementierung des zusätzlichen Registers der erfindungsgemäßen programmgesteuerten Einheit aus 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, #reg1 die jeweiligen Registeradressen für das Quellregister Rs und Zielregister Rd. Diese Signale #reg0, #reg1 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, #reg1 werden aus dem Datenregister 20 Datensignale data1, data0 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 Bitfeldmanipulation 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, #offset1 bereit, die in einer ersten Betriebsweise direkt dem Addierer 23 zugeführt werden. In dieser ersten Betriebsweise wird das Signal #offset1 im Addierer 23 vom Signal #offset0 abgezogen und das daraus resultierende Signal sh0 dem Barrel-Shifter 11 zugeführt. Der Barrel-Shifter 11, dem darüber hinaus das Datensignal data0 zuge führt wird, erzeugt ausgehend davon ein Ausgangssignal, welches dem Multiplexer 21 zugeführt wird.
  • Die programmgesteuerte Einheit weist erfindungsgemäß ein zusä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, offset1_reg des zusätzlichen Registers 13 werden einerseits den jeweils nachgeschalteten Multiplexern 26, 27 zugeführt. Andererseits werden diese Signale offset0_reg, offset1_reg über eine Rückkopplungsschleife den jeweiligen Addierern 24, 25 zugeführt und dort mit den Offsetsignalen #offset0, #offset1 addiert. Das Ergebnis dieser jeweiligen Additionen wird jeweils in den entsprechenden Eingang des zusätzlichen Registers 13 eingekoppelt.
  • Über das Enable-Signal #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 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 1 bis 3 beschriebene Ausführungsbeispiel bezog sich auf eine direkte Adressierung, bei der eine Bitfeldmanipulation vorgenommen wurde. In dem nachfolgenden, anhand der 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:
    Figure 00160001
  • 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:
    Figure 00160002
  • 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:
    Figure 00170001
  • 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 muss. 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 Instruktionen 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 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 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 dabei 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 Bitsegment 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.
  • 5 zeigt das Blockschaltbild einer programmgesteuerten Einheit für die Implementierung des erfindungsgemäßen Verfahrens zur Bitfeldverschiebung mittels indirekter Adressierung entsprechend 4. Die 5 wie auch die oben beschriebene 3 zeigen lediglich eine schematische Darstellung der programmgesteuerten Einheit, d. h. dort sind insbesondere funktionelle 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 3 werden die Befehlscodes #reg0, #reg1 nicht in den Befehlsdecoder 6 eingekoppelt, sondern direkt in das Register 20. Die Signale #reg0, #reg1 entsprechen den Registerinhalten Rs, Rd des Quellregisters bzw. des Zielregisters.
  • Der Befehlsdecoder 6 erzeugt das Ausgangssignal #disp, 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 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 Barrel-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 Eingang 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 cs_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 bevorzugten 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 Adressierungsarten 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.
  • 1
    programmgesteuerte Einheit
    2 – 4
    Pipelinestufen
    5
    Befehlsspeicher, Programmspeicher
    6
    Befehlsdecoder
    7
    Quellregister
    8
    Recheneinheit, ALU
    9
    Datenspeicher
    10
    Ausgangsanschlüsse
    11
    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 (32)

  1. 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 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.
  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 gekennzeichnet, dass vor dem Verfahrensschritt (a) eine Initialisierung stattfindet.
  4. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, dass vor dem Verfahrensschritt (a) ein Rücksetzen der Startpunkte und/oder der Adressen stattfindet.
  5. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, 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, dadurch gekennzeichnet, dass ein Cache-Speicher mit den Daten aus der ersten Speichrereinheit 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, dadurch gekennzeichnet, 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 Bitsegment 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.
DE10314928A 2003-04-02 2003-04-02 Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung Ceased DE10314928A1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE10314928A DE10314928A1 (de) 2003-04-02 2003-04-02 Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung
CNB2004800151951A CN100465880C (zh) 2003-04-02 2004-03-23 移动位字段的方法和程控单元
EP04722539A EP1620790A2 (de) 2003-04-02 2004-03-23 Verfahren und programmgesteuerte einheit zur bitfeldverschiebung
PCT/EP2004/003063 WO2004088503A2 (de) 2003-04-02 2004-03-23 Verfahren und programmgesteuerte einheit zur bitfeldverschiebung
US11/241,844 US7444488B2 (en) 2003-04-02 2005-09-30 Method and programmable unit for bit field shifting

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10314928A DE10314928A1 (de) 2003-04-02 2003-04-02 Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung

Publications (1)

Publication Number Publication Date
DE10314928A1 true DE10314928A1 (de) 2004-11-04

Family

ID=33103170

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10314928A Ceased DE10314928A1 (de) 2003-04-02 2003-04-02 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
WO2013095576A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Processor-based apparatus and method for processing bit streams

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4941085A (en) * 1986-08-27 1990-07-10 Ken Sakamura Data processing system having apparatus for increasing the execution speed of bit field instructions

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4941085A (en) * 1986-08-27 1990-07-10 Ken Sakamura Data processing system having apparatus for increasing the execution speed of bit field instructions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SHAPIRO, J.S.: File: base/lib/unix/lib/strcpy.c, 1999, S. 1 (http://www.eros-os.org/eros-src/base/l ib/unix/lib/strcpy.c)
SHAPIRO, J.S.: File: base/lib/unix/lib/strcpy.c, 1999, S. 1 (http://www.eros-os.org/eros-src/base/lib/unix/lib/strcpy.c) *

Also Published As

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

Similar Documents

Publication Publication Date Title
DE2755273C2 (de)
DE2555963C2 (de) Einrichtung zur Funktionsmodifizierung
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE1499722C2 (de) Einrichtung zur Modifizierung von Informationswörtern
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE3688824T2 (de) Datenverarbeitungssystem.
DE2935906C2 (de) Mikroprozessor
DE2436963A1 (de) Verfahren und vorrichtung zur mikroprogrammierung in der zentraleinheit eines digitalrechners
DE3688232T2 (de) Datenverarbeitungssystem.
DE2318069A1 (de) Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix
DE2718110A1 (de) Datenverarbeitungseinheit
DE69130414T2 (de) Prozessor und Verfahren zur parallelen Verarbeitung
DE3802025C1 (de)
DE2935857A1 (de) Verfahren und schaltungsanordnung zur durchfuehrung von additionen
EP1079307B1 (de) Verfahren zum Betrieb eines Speichersystems sowie Speichersystem
DE2854400A1 (de) Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen
DE112006000514T5 (de) CPU-Architektur mit einzelnem Zyklus und geringer Leistungsaufnahme
DE2725614C2 (de)
DE2245284A1 (de) Datenverarbeitungsanlage
EP1407348B1 (de) Verfahren zum ansteuern einer zentralen verarbeitungseinheit für eine adressierung bezüglich eines speichers und controller
DE10040267A1 (de) Prozessor-Speicher-System
DE10314928A1 (de) Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung
EP0347970A2 (de) Verfahren zum Prüfen eines Festwertspeichers und Anordnung zur Durchführung des Verfahrens
DE10393188T5 (de) Verarbeitung von Wiederholungs-String-Operationen
DE69930893T2 (de) Digitaler Signalprozessor für Daten mit grosser Bitlänge

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection