DE102004059125B4 - Vorrichtung und Verfahren zum Schreiben von Daten in einen Speicher eines Prozessors an einen unausgerichteten Ort - Google Patents

Vorrichtung und Verfahren zum Schreiben von Daten in einen Speicher eines Prozessors an einen unausgerichteten Ort Download PDF

Info

Publication number
DE102004059125B4
DE102004059125B4 DE102004059125A DE102004059125A DE102004059125B4 DE 102004059125 B4 DE102004059125 B4 DE 102004059125B4 DE 102004059125 A DE102004059125 A DE 102004059125A DE 102004059125 A DE102004059125 A DE 102004059125A DE 102004059125 B4 DE102004059125 B4 DE 102004059125B4
Authority
DE
Germany
Prior art keywords
data
memory
rotated
register
accordance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102004059125A
Other languages
English (en)
Other versions
DE102004059125A1 (de
Inventor
Bor-Sung Liang
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.)
Sunplus Technology Co Ltd
Original Assignee
Sunplus Technology Co Ltd
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 Sunplus Technology Co Ltd filed Critical Sunplus Technology Co Ltd
Publication of DE102004059125A1 publication Critical patent/DE102004059125A1/de
Application granted granted Critical
Publication of DE102004059125B4 publication Critical patent/DE102004059125B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data

Abstract

Verfahren zum Schreiben von Daten in einen Speicher (500) eines Prozessors an einem unausgerichteten Ort, wobei der Speicher (500) durch Wortgrenzen in eine Vielzahl von Worten mit jeweils m (positive ganze Zahl) Bits unterteilt ist und die Daten an eine unausgerichtete Adresse des Speichers (500) geschrieben werden sollen, wobei das Verfahren umfasst:
– einen durch einen ersten Befehl (SCB) angestoßenen Startrotationsschritt zur Erzeugung erster rotierter Daten, welcher die ersten zu schreibenden Daten in der Länge eines Wortes abgreift und sie an eine erste Position in Übereinstimmung mit der unausgerichteten Adresse der Daten rotiert und die ersten rotierten Daten temporär in einem Speicherkombinierregister (300) speichert;
– einen durch den ersten Befehl (SCB) angestoßenen ersten Maskierungsschreibschritt, welcher die ersten rotierten Daten in Übereinstimmung mit der unausgerichteten Adresse der Daten maskiert und die ersten rotierten maskierten Daten in den Speicher (500) schreibt;
– einen durch einen letzten Befehl (SCE)...

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf ein technisches Gebiet der Datenverarbeitung und spezieller auf eine Vorrichtung und auf ein. Verfahren zum Schreiben von Daten in einen Speicher eines Prozessors an einen unausgerichteten Ort.
  • Während ein Prozessor Datenverarbeitung durchführt, kann die Datenausrichtung die Leistungsfähigkeit von vielen Schlüsselabläufen beeinflussen, wie die Operationen auf Ketten, Feldern und ähnlichem. Wie gezeigt in 1, überschreiten Daten, wie Buchstaben "ABCDEFGHIJKL" normalerweise die Grenze oder Grenzen, wenn sie von Registern R16, R17 und R18 in einen Speicher 100 bei Adressen 101h bis 10Ch geschrieben werden. Als solches, weil der Speicher 100 keine Daten verarbeiten kann, muss ein Prozessor viele zusätzliche Operationen durchführen, bevor die Daten im Speicher am unausgerichteten Ort gespeichert werden.
  • Bei diesem Problem ist es ein typisches Schema, dass, nachdem die Daten vom Speicher 100 am unausgerichteten Ort zum Prozessor geladen werden, verschiedene Befehle im Prozessor zum Erhalten der benötigten Daten angewendet werden. Wie gezeigt in 2, zum Schreiben von Daten "ABCD" an den unausgerichteten Ort im Speicher 100, werden Daten "abcd" bei der Adresse 100h im Register R1 geladen, um zunächst um 24 Bits nach rechts zum Sichern benötigter Daten "a" zu verschieben, und dann nach links um 24 Bits zu verschieben, um die Daten "a" in Position zu platzieren. Als nächstes werden Daten "ABCD" im Register R16 nach rechts um 8 Bits verschoben und dann in Register R2 (OABC) gespeichert. Als nächstes wird eine ODER-Operation auf Register R1 und R2 ausgeführt, um ein Ergebnis zu erhalten, das in Register R1 gespeichert werden soll (aABC). Als nächstes werden Daten "efgh" bei Adresse 104h in Register R1 geladen, um zunächst nach links um 8 Bits zu verschieben und um die benötigten Daten "fgh" zu sichern, und dann nach rechts um 8 Bits zu verschieben, um die benötigten Daten "fgh" an geeigneter Position zu platzieren. Als nächstes werden Daten ABCD in Register R16 nach links um 24 Bits verschoben und dann in Register R2 gespeichert (D000). Als nächstes wird eine ODER-Operation auf Register R1 und R2 ausgeführt, um ein Ergebnis zu erhalten, das in Register R1 gespeichert werden soll (Dfgh). Schließlich wird der Inhalt (Dfgh) von Register R1 in den Speicher 100 bei Adresse 104h geschrieben.
  • Wie zitiert, falls eine benötigte Länge von unausgerichteten Daten, welche gespeichert werden sollen, n-Worte beträgt (von denen jedes 32 Bits hat), benötigt das typische Schema 12 n-Befehle, um die Speicheroperationen zu beschreiben und wenigstens 12 n-Befehlszyklen, um die Speicheroperation abzuschließen, was viel Speicherplatz zum Speichern benötigter Programmcodes erfordert und ebenso die Prozessorlast erhöht, was zu schlechter Leistungsfähigkeit führt.
  • Bei diesem Problem führt, USP 4,814,976 gewährt für Hansen, et al. für einen "RISC-Computer mit unausgerichteter Referenzbehandlung und ein Verfahren für denselben" die Ausrichtung als Laden unausgerichteter Daten durch und speichert Daten, welche eine Grenze vollständig zweimal überschreiten, aus. Wie gezeigt in 3 werden Daten "ABC" in die Speicheradressen 101h bis 103h geschrieben. In diesem Fall bleiben die Daten bei der Speicheradresse 100h unverändert. Als nächstes werden Daten "D" in Register 16 in die Speicheradresse 104h geschrieben. In diesem Fall bleiben Daten in der Speicheradresse 105h bis 107h unverändert. In ähnlicher Weise wird der Inhalt in Register R17 und R18 sequentiell in Speicheradressen 105h bis 10Ch jeweils geschrieben.
  • Wie zitiert, falls eine benötigte Länge von unausgerichteten Daten, welche geladen werden sollen, n-Worte beträgt, erfordert es 2 n-Befehle, um die Speicheroperationen zu beschreiben und wenigstens 2 n-Befehlszyklen, um die Speicheroperation abzuschließen. Weil Lesen und Schreiben an derselben Speicherposition und demselben Register wiederholt werden, kann das Blockieren der Prozessorpipeline erhöht werden und die Busbandbreite wird verschwendet. Speziell kann bei einigen Systemen ohne Cache die Verzögerung offensichtlich sein.
  • US 2003/0120889 A1 beschreibt ein Verfahren zur Verarbeitung nicht ausgerichteter Operanden in einem Prozessor mit Pipeline Architektur. Dazu wird ein ausgerichteter Operand aus zwei Teilen erzeugt, wobei zwei in einem Speicher ausgerichtet enthaltene Operanden ausgelesen und Teile davon nach Verschiebung (mit der Gleitkommaeinrichtung) zum Bilden des ausgerichteten Operanden in einem Register kombiniert werden.
  • US 6 223 268 B1 beschreibt ein System und ein Verfahren zum Schreiben spezifischer Bytes in einen Speicher mit großer Wortbreite, insbesondere für Daten von Digital Video Disks (DVD). Dazu verfügt die Steuerschaltung des Speichers über die Fähigkeit, einzelne Bytes in einem Speicherwort zu adressieren und die in einem Speicherwort nicht zu überschreibenden Bytes zu maskieren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Aufgabe der vorliegenden Erfindung ist es, eine Vorrichtung und ein Verfahren zum Schreiben von Daten in einen Speicher eines Prozessors an einen unausgerichteten Ort bereitzustellen, welche die vorhergehenden Probleme vermeiden und die benötigten Befehlszyklen verringern kann, um die Datenschreiboperation abzuschließen, wodurch die Leistungsfähigkeit erhöht wird.
  • Diese Aufgabe wird gemäß der Erfindung durch ein Verfahren nach Patentanspruch 1 und eine Vorrichtung nach Patentanspruch 8 gelöst. Die abhängigen Patentansprüche enthalten vorteilhafte Ausgestaltungen der Erfindung.
  • Diese und andere Aufgaben, Vorteile und neue Merkmale der Erfindung werden von der nachfolgenden Beschreibung im Einzelnen mehr zu Tage treten, wenn diese in Verbindung mit den beigefügten Zeichnungen genommen wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein schematisches Diagramm zum Schreiben eines Satzes von Registerdaten in einen Speicher an einem unausgerichteten Ort;
  • 2 ist ein schematisches Diagramm, das herkömmliche Programmcodes zum Speichern eines Satzes von Registerdaten in einen Speicher an einem unausgerichteten Ort darstellt;
  • 3 ist ein schematisches Diagramm, welche weiter herkömmliche Programmcodes zum Speichern eines Satzes von Registerdaten in einen Speicher an einem unausgerichteten Ort darstellt;
  • 4 ist ein Blockdiagramm einer Vorrichtung zum Schreiben von Daten in einen Prozessor in einen Speicher an einem unausgerichteten Ort in Übereinstimmung mit der Erfindung;
  • 5 ist eine Tabelle, die Befehlsformate in Übereinstimmung mit der Erfindung veranschaulicht;
  • 6 veranschaulicht schematisch einen SCB-Befehl in Übereinstimmung mit der Erfindung;
  • 7 veranschaulicht schematisch einen SCW-Befehl in Übereinstimmung mit der Erfindung;
  • 8 veranschaulicht schematisch einen SCE-Befehl in Übereinstimmung mit der Erfindung;
  • 9 ist eine Tabelle, welche die Ausführung von SCB-, SCW- und SCE-Befehlen in Übereinstimmung mit der Erfindung zeigt;
  • 10 zeigt ein Beispiel der Erfindung; und
  • 11 zeigt ein weiteres Beispiel der Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • 4 ist ein Blockdiagramm einer Vorrichtung zum Schreiben von Daten in einen Speicher eines Prozessors an einem unausgerichteten Ort in Übereinstimmung mit der Erfindung. Wie gezeigt, beinhaltet die Vorrichtung einen Rotierer 200, ein Speicherkombinierregister (STCR) 300 und einen Maskenwähler 400. Die Daten sind in einem internen Register 100 des Prozessors gespeichert und werden in einen Speicher 500 an einen unausgerichteten Ort geschrieben. Der Speicher 500 hat eine Vielzahl von m-Bit-Worten, die durch Wortgrenzen unterteilt sind. In dieser Ausführungsform beträgt m bevorzugt 32, d.h. der Speicher 500 besteht aus einer Vielzahl von 32 Bit-Worten.
  • Der Rotierer 200 ist mit dem internen Register 100 zum Rotieren der Daten des internen Registers 100 an eine erste Position und in. Übereinstimmung mit der geschriebenen unausgerichteten Adresse der Daten gekoppelt. Das STCR 300 ist mit dem Rotierer 200 gekoppelt, um temporar Daten. des Rotierers 200 zu speichern. Der Maskenwähler 400 ist mit dem Rotierer 200 und dem STCR 300 zum wahlweisen. Maskieren deren Daten in Übereinstimmung mit der geschriebenen unausgerichteten Adresse der Daten und Schreiben der maskierten Daten in den Speicher 500, gekoppelt.
  • Drei Befehle SCB (Speicher-Kombinier-Beginn), SCW (Speicher-Kombinier-Wort) und SCE (Speicher-Kombinier-Ende) werden in der Erfindung definiert, um entsprechende Steuerungssignale für den Rotierer 200 das Speicher-Kombinier-Register 300 und den Maskenwähler 400 zu erzeugen. Die drei Befehle haben Formate, die in 5 gezeigt sind.
  • Wie gezeigt in 6, rotiert der Befehl SCB rD, [Addr] den Inhalt von Register rD um 0-, 1-, 2- und 3-Bytes jeweils in Übereinstimmung mit der geschriebenen Adresse Addr (s = Addr [1:0]) und schreibt den rotierten Inhalt in das STCR 300. Zusätzlich wird der rotierte Inhalt jeweils um 0-, 1-, 2- und 3-Byte in Übereinstimmung mit der geschriebenen Adresse Addr (s = Addr [1:0]) maskiert und dann in den Speicher 500 geschrieben. Zum Beispiel rotiert der Befehl SCB R16, [101h] den Inhalt von Register R16, um 1 Byte in Übereinstimmung mit der geschriebenen Adresse 101 h (s = 1) und schreibt dann den rotierten Inhalt in das STCR 300. Zusätzlich wird der rotierte Inhalt um ein 1 Byte maskiert und dann in den Speicher 500 bei Adresse 101h geschrieben. Folglich, falls der Inhalt von Register R16 "ABCD" ist und die Ausführung von SCB R16 [101h] vollständig ist, ist der Inhalt des STCR 300 "DABC", der Inhalt der Speicheradressen 101h bis 103h sind "ABC", und der Inhalt der Speicheradresse 100h bleibt unverändert.
  • Wie gezeigt in 7, rotiert der Befehl SCW rD, [Addr] und maskiert dann den Inhalt von Register rD um jeweils 0-, 1-, 2- und 3-Bytes in Übereinstimmung mit der geschriebenen Adresse Addr (s = Addr [1:0]), kombiniert als nächstes den maskierten Inhalt, der im STCR 300 gespeichert ist und schreibt dann den kombinierten Inhalt in den Speicher 500 und schreibt schließlich den rotierten Inhalt des Registers rD in das STCR 300. Zum Beispiel, rotiert der Befehl SCW R16 [101h] den Inhalt "ABCD" von Register R16 um 1 Byte in Übereinstimmung mit der geschriebenen Adresse 101h (s = 1), um derartig den Inhalt "DABC" zu erhalten und maskiert den Inhalt "DABC" um 1 Byte "D" in Übereinstimmung mit der geschriebenen Adresse 101h (s = 1), kombiniert als nächstes Bytes "abcd" gespeichert in dem STCR 300 und den maskierten Inhalt in den Inhalt "aABCD", und schreibt dann den Inhalt "aABCD" in den Speicher 500 an Adresse 101 h und schließlich schreibt er den Inhalt "DABC" von Register rD in das STCR 300. Folglich, wenn die Ausführung von SCB R16, [101h] vollständig ist, ist der Inhalt von STCR 300 "DABC", die Inhalte der Speicheradressen 101h bis 103h sind "ABC" und der Inhalt der Speicheradresse 100h ist "a".
  • Wie gezeigt in 8, maskiert der Befehl SCE [Addr] den Inhalt des STCR 300 um jeweils 0-, 1-, 2- und 3-Bytes in Übereinstimmung mit der geschriebenen Adresse Addr (s = Addr [1:0]) und schreibt dann den maskierten Inhalt in den Speicher 500. Zum Beispiel maskiert der Befehl SCE [101h] den Inhalt "abcd" um 3 Bytes "bcd" in Übereinstimmung mit der geschriebenen Adresse 101h (s = 1) und schreibt den Inhalt "a" in den Speicher 500 bei Adresse 100h. Folglich, wenn die Ausführung von SCE [101h] vollständig ist, ist der Inhalt von 101h bis 103h unverändert und der Inhalt der Speicheradresse 100h ist "a".
  • 9 zeigt eine zusammenfassende Tabelle vom Ausführen der Befehle SCB rD, [Addr], SCW rD, [Addr] und SCE [Addr] unter Datenanordnung von Little-Endian und Big-Endian. Wie gezeigt, für Daten "abcd" in STCR 300, Daten "XYZW" in Speicher 500 bei Adressen 100h bis 103h und Daten "ABCD" in Register rD, s = 0 repräsentiert Addr = 4N (positive ganze Zahl), s = 1 repräsentiert Addr = 4N + 1, s = 2 repräsentiert Addr = 4N + 2 und s = 3 repräsentiert Addr = 4N + 3.
  • 10 zeigt ein Beispiel der Erfindung. Wie gezeigt, wird zum Schreiben von Daten "ABCDEFGHIJKL" in Register R16 bis R18 in Speicher 500 bei Adresse 101h bis 10Ch ein Befehl. SCB R16, [101h] zunächst ausgeführt, um den Inhalt "ABCD" von Register R16 um 1 Byte in der Übereinstimmung mit der geschriebenen Adresse 101h (s = 1) zu rotieren, um folglich "DABC" (erster Rotationsschritt) zu erhalten und dann den Inhalt "DABC" in STCR 300 zu schreiben. Als nächstes wird der Inhalt "DABC" maskiert, um 1 Byte in Übereinstimmung mit der geschriebenen Adresse 101h (s = 1) und dann in den Speicher 500 bei Adresse 101h bis 103h (erster Maskierungsschreibschritt) geschrieben. Deswegen, nachdem der Befehl SCB R16, [101h] vollständig ausgeführt ist, hat das STCR 300 einen Inhalt "DABC", die Inhalte der Speicheradressen 101h bis 103h sind "ABC", und der Inhalt der Speicheradresse 101h bleibt unverändert als "a".
  • Als nächstes wird ein Befehl SCW R17, [105h] ausgeführt, um zuerst den Inhalt "EFGH" von Register R17 um 1 Byte in Übereinstimmung mit der geschriebenen Adresse 105h (s = 1) zu rotieren, um "HEFG" (zweiter Rotationsschritt) zu erhalten, als nächstes, den Inhalt "HEFG" um 1 Byte ("H") zu maskieren in Übereinstimmung mit der geschriebenen Adresse 105h (s = 1) und dann mit dem Inhalt "DABC" im STCR 300 zu kombinieren, um "DEFG" zu bilden, der in den Speicher 500 in 4 Bytes von Adressen 104h bis 107h geschrieben werden soll, welche die Adresse 105h (erster Schreibschritt) enthält und schließlich wird der Inhalt "HEFG" von Register 17, der rotiert ist, in das STCR 300 geschrieben. Deswegen, nachdem der Befehl SCW R17, [105h] vollständig ausgeführt ist, hat STCR 300 einen Inhalt "HEFG" und die Inhalte der Speicheradressen 104h bis 107h sind "DEFG".
  • Dann wird ein Befehl SCW R18, [109h] ausgeführt, um zuerst den Inhalt "IJKL" von Register R18 um 1 Byte in Übereinstimmung mit der geschriebenen Adresse 109h (s = 1) zu rotieren, um LIJK (zweiter Rotationsschritt) zu erhalten, als nächstes den Inhalt "LIJK" um 1 Byte ("L") in Übereinstimmung mit der geschriebenen Adresse 109h (s = 1) zu maskieren und dann mit dem Inhalt "HEFG" im STCR 300 zu kombinieren, um "HIJK" zu bilden, der in den Speicher 500 in 4 Bytes der Adressen 108h bis 10Bh geschrieben werden soll, welcher die Adresse 109h (zweiter Schreibschritt) enthält und schließlich wird der Inhalt "IJKL" von Register 18, der rotiert ist, in das STCR 300 geschrieben. Deswegen, nachdem der Befehl SCW R18, [109h] vollständig ausgeführt ist, hat das STCR 300 einen Inhalt "LIJK" und die Inhalte der Speicheradressen 108h bis 10Bh sind "HIJK".
  • Schließlich wird ein Befehl SCE [10Dh] ausgeführt, um den Inhalt "LIJK" von STCR 300 um 3 Bytes ("IJK") in Übereinstimmung mit der geschriebenen Adresse 10Dh (s = 1) zu maskieren und das Ergebnis ("L") in den Speicher 500 bei Adresse 10Ch zu schreiben (zweiter Maskierungsschreibschritt). Deswegen, nachdem der Befehl SCE [10Dh] vollständig ausgeführt ist, hat das STCR 300 einen Inhalt "LIJK", die Inhalte von Speicheradressen 10Dh bis 10Fh sind jeweils unverändert mit "n", "0" und "p", und Speicheradresse 10Ch hat einen Inhalt "L".
  • 11 zeigt ein weiteres Beispiel der Erfindung. Wie gezeigt, zum Schreiben von Daten "ABCD" in Register R16 in Speicher 500 bei Adressen 101h bis 104h wird ein Befehl SCB R16, [101h] ausgeführt, um zuerst den Inhalt "ABCD" von Register R16 um 1 Byte in Übereinstimmung mit der geschriebenen Adresse 101h (s = 1) zu rotieren, um folglich DABC zu erhalten und dann den Inhalt "DABC" in STCR 300 zu schreiben.
  • Als nächstes wird der Inhalt "DABC" um 1 Byte in Übereinstimmung mit der geschriebenen Adresse 101h (s = 1) maskiert und dann in den Speicher 500 bei Adressen 101h bis 103h geschrieben. Deswegen, nachdem der Befehl SCB R16, [101h] vollständig ausgeführt ist, hat das STCR 300 einen Inhalt "DABC", die Inhalte der Speicheradressen 101h bis 103h sind "ABC" und der Inhalt von Speicheradresse 101h bleibt unverändert als "a".
  • Als nächstes wird ein Befehl SCE [105h] ausgeführt, um den Inhalt "DABC" von STCR 300 um 3 Bytes ("ABC") in Übereinstimmung mit der geschriebenen Adresse 105h (s = 1) zu maskieren, und das Ergebnis ("D") in Speicher 500 bei Adresse 104h zu schreiben. Deswegen, nachdem der Befehl SCE [105h] vollständig ausgeführt ist, hat das STCR 300 einen Inhalt "DABC", die Inhalte von Speicheradressen 105h bis 107h bleiben jeweils mit "f', "g" und "h" unverändert und Speicheradresse 104h hat einen Inhalt "D".
  • In Anbetracht des Vorhergehenden ist es bekannt, dass, falls eine benötigte Länge von unausgerichteten Daten, welche in Speicher 500 geschrieben werden soll, n-Worte beträgt, die Erfindung die Speicheroperation lediglich durch (n + 1) Befehle beschreiben kann, was lediglich (n + 1) Befehlszyklen benötigt, um die Schreiboperation abzuschließen, wodurch die Codes verringert werden und die Leistungsfähigkeit relativ erhöht wird. Zusätzlich tritt wiederholtes Le sen/Schreiben nicht an der gleichen Speicher- oder Registerposition auf, und folglich ist die Blockierwahrscheinlichkeit einer Prozessorpipeline verringert. Ferner wird der Inhalt der gleichen Speicherposition lediglich einmal während sie benötigt wird geladen und demnach wird die Busbandbreite gespart, um die beste Auslastung zu erzielen.

Claims (14)

  1. Verfahren zum Schreiben von Daten in einen Speicher (500) eines Prozessors an einem unausgerichteten Ort, wobei der Speicher (500) durch Wortgrenzen in eine Vielzahl von Worten mit jeweils m (positive ganze Zahl) Bits unterteilt ist und die Daten an eine unausgerichtete Adresse des Speichers (500) geschrieben werden sollen, wobei das Verfahren umfasst: – einen durch einen ersten Befehl (SCB) angestoßenen Startrotationsschritt zur Erzeugung erster rotierter Daten, welcher die ersten zu schreibenden Daten in der Länge eines Wortes abgreift und sie an eine erste Position in Übereinstimmung mit der unausgerichteten Adresse der Daten rotiert und die ersten rotierten Daten temporär in einem Speicherkombinierregister (300) speichert; – einen durch den ersten Befehl (SCB) angestoßenen ersten Maskierungsschreibschritt, welcher die ersten rotierten Daten in Übereinstimmung mit der unausgerichteten Adresse der Daten maskiert und die ersten rotierten maskierten Daten in den Speicher (500) schreibt; – einen durch einen letzten Befehl (SCE) angestoßenen zweiten Maskierungsschreibschritt (SCE), welcher den ungeschriebenen Teil der zuletzt rotierten Daten maskiert und der den ungeschriebenen maskierten Teil in den Speicher (500) schreibt.
  2. Verfahren nach Anspruch 1, welches weiterhin umfasst: – mindestens einen durch einen dem ersten Befehl (SCB) folgenden weiteren Befehl (SCW) angestoßenen weiteren Rotationsschritt zur Erzeugung weiterer rotierter Daten, welcher die nächsten zu schreibenden, weiteren Daten in der Länge eines Wortes abgreift und die weiteren Daten an die erste Position in Übereinstimmung mit der unausgerichteten Adresse der weiteren Daten rotiert und die ersten rotierten Daten temporär in dem Speicherkombinierregister (300) speichert; – einen von dem weiteren Befehl (SCW) angestoßenen Schreibschritt, welcher den ungeschriebenen Teil der vorhergehend rotierten Daten und einen Teil der weiteren rotierten Daten kombiniert, um eine erste Kombination in der Länge eines Wortes zu bilden, und der die erste Kombination in den Speicher (500) schreibt.
  3. Verfahren nach einem der Ansprüche 1 oder 2, wobei m den Wert 32 aufweist.
  4. Verfahren nach einem der Ansprüche 1 oder 2, wobei die Rotationsschritte nach rechts um 8 Bits jeweils an die erste Position rotieren.
  5. Verfahren nach einem der Ansprüche 1 oder 2, wobei die Rotationsschritte jeweils nach rechts um 16 Bits an die erste Position rotieren.
  6. Verfahren nach einem der Ansprüche 1 oder 2, wobei die Rotationsschritte jeweils nach rechts um 24 Bits an die erste Position rotieren.
  7. Verfahren nach einem der Ansprüche 1 oder 2, wobei der ungeschriebene Teil eine Größe von weniger als m Bits aufweist.
  8. Vorrichtung zum Schreiben von Daten aus einem internen Register (100) in einen Speicher (500) eines Prozessors an einen unausgerichteten Ort, wobei der Speicher (500) durch Wortgrenzen in eine Vielzahl von Worten mit jeweils m (positive ganze Zahl) Bits unterteilt ist, und die Daten an ei ne unausgerichtete Adresse des Speichers (500) geschrieben werden sollen, wobei die Vorrichtung umfasst: – einen Rotierer (200), welcher mit dem internen Register (100) gekoppelt ist, zum Rotieren der Daten des internen Registers (100) an eine erste Position in Übereinstimmung mit der unausgerichteten Adresse; – ein Speicherkombinierregister (300), welches mit dem Rotierer (200) gekoppelt ist, zum temporären Speichern der Daten des Rotierers (200); und – einen Maskenwähler (400), welcher mit dem Rotierer (200) und dem Speicherkombinierregister (300) gekoppelt ist, zum wahlweisen Maskieren von deren Daten in Übereinstimmung mit der unausgerichteten Adresse und Speichern der maskierten Daten in den Speicher (500); und wobei der Prozessor – einen ersten Befehl (SCB) ausführt, so dass der Rotierer (200) Daten des internen Registers (100) in der Länge eines Wortes an die erste Position in Übereinstimmung mit der unausgerichteten Adresse der Daten rotiert, wodurch erste rotierte Daten erzeugt werden, und die ersten rotierten Daten temporär im Speicherkombinierregister (300) speichert, und dann der Maskenwähler (400) die Daten des Rotierers (200) und des Speicherkombinierregisters (300) maskiert in Übereinstimmung mit der unausgerichteten Adresse und die maskierten Daten in den Speicher (500) schreibt; und – einen letzten Befehl (SCE) ausführt, so dass der Maskenwähler (400) den ungeschriebenen Teil der zuletzt rotierten Daten maskiert und in den Speicher (500) schreibt.
  9. Vorrichtung nach Anspruch 8, wobei der Prozessor – mindestens einen weiteren Befehl (SCW) ausführt, so dass der Rotierer (200) die nächsten zu schreibenden, weiteren Daten in der Länge eines Wortes abgreift und die weiteren Daten an die erste Position rotiert, wodurch zweite rotierte Daten erzeugt werden und die zweiten rotierten Daten temporär im Speicherkombinierregister (300) speichert, und dann der Maskenwähler (400) den ungeschriebenen Teil der vorhergehend rotierten Daten und einen Teil der weiteren rotierten Daten in Übereinstimmung mit der unausgerichteten Adresse der weiteren Daten kombiniert, um eine Kombination in der Länge eines Speicherwortes zu bilden, und die Kombination in den Speicher (500) schreibt.
  10. Vorrichtung nach Anspruch 8, wobei m den Wert 32 aufweist.
  11. Vorrichtung nach Anspruch 8, wobei der Rotierer (200) nach rechts um 8 Bits an die erste Position rotiert.
  12. Vorrichtung nach Anspruch 8, wobei der Rotierer (200) nach rechts um 16 Bits an die erste Position rotiert.
  13. Vorrichtung nach Anspruch 8, wobei der Rotierer (200) nach rechts um 24 Bits an die erste Position rotiert.
  14. Vorrichtung nach Anspruch 8, wobei der ungeschriebene Teil eine Größe von weniger als m Bits aufweist.
DE102004059125A 2003-12-19 2004-12-08 Vorrichtung und Verfahren zum Schreiben von Daten in einen Speicher eines Prozessors an einen unausgerichteten Ort Expired - Fee Related DE102004059125B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW092136303A TWI230357B (en) 2003-12-19 2003-12-19 Device and method for writing data in a processor to memory at unaligned location
TW092136303 2003-12-19

Publications (2)

Publication Number Publication Date
DE102004059125A1 DE102004059125A1 (de) 2005-07-21
DE102004059125B4 true DE102004059125B4 (de) 2008-04-03

Family

ID=33550773

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004059125A Expired - Fee Related DE102004059125B4 (de) 2003-12-19 2004-12-08 Vorrichtung und Verfahren zum Schreiben von Daten in einen Speicher eines Prozessors an einen unausgerichteten Ort

Country Status (4)

Country Link
US (1) US7308556B2 (de)
DE (1) DE102004059125B4 (de)
GB (1) GB2409309B (de)
TW (1) TWI230357B (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2053568A1 (de) * 2007-09-28 2009-04-29 Gemplus Verfahren zur Erzeugung von Masken in einem Kommunikationsobjekt und entsprechendes Kommunikationsobjekt

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223268B1 (en) * 1999-01-08 2001-04-24 Sony Corporation System and method for writing specific bytes in a wide-word memory
US20030120889A1 (en) * 2001-12-21 2003-06-26 Patrice Roussel Unaligned memory operands

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58149548A (ja) * 1982-03-02 1983-09-05 Hitachi Ltd メモリ制御方式
US4495598A (en) * 1982-09-29 1985-01-22 Mcdonnell Douglas Corporation Computer rotate function
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
EP0363176B1 (de) * 1988-10-07 1996-02-14 International Business Machines Corporation Prozessoren für wortorganisierte Daten
US5168561A (en) * 1990-02-16 1992-12-01 Ncr Corporation Pipe-line method and apparatus for byte alignment of data words during direct memory access transfers
JPH03248226A (ja) * 1990-02-26 1991-11-06 Nec Corp マイクロプロセッサ
US5386531A (en) * 1991-05-15 1995-01-31 International Business Machines Corporation Computer system accelerator for multi-word cross-boundary storage access
JPH06332792A (ja) * 1993-05-21 1994-12-02 Mitsubishi Electric Corp データ処理装置及びそのデータ読み出し制御回路,データ書き込み制御回路
US5740398A (en) * 1993-10-18 1998-04-14 Cyrix Corporation Program order sequencing of data in a microprocessor with write buffer
US6820186B2 (en) * 2001-03-26 2004-11-16 Sun Microsystems, Inc. System and method for building packets
US7051168B2 (en) * 2001-08-28 2006-05-23 International Business Machines Corporation Method and apparatus for aligning memory write data in a microprocessor
EP1508853A1 (de) * 2003-08-19 2005-02-23 STMicroelectronics Limited Rechnersystem und Verfahren zum Laden von nicht-ausgerichteten Wörtern

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223268B1 (en) * 1999-01-08 2001-04-24 Sony Corporation System and method for writing specific bytes in a wide-word memory
US20030120889A1 (en) * 2001-12-21 2003-06-26 Patrice Roussel Unaligned memory operands

Also Published As

Publication number Publication date
US20050138344A1 (en) 2005-06-23
GB0425479D0 (en) 2004-12-22
GB2409309B (en) 2006-05-24
TWI230357B (en) 2005-04-01
US7308556B2 (en) 2007-12-11
GB2409309A (en) 2005-06-22
DE102004059125A1 (de) 2005-07-21
TW200521838A (en) 2005-07-01

Similar Documents

Publication Publication Date Title
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE3151745C2 (de)
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE3210816C2 (de)
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE2755273A1 (de) Mikroprozessor
DE2719635A1 (de) Anordnung fuer eine erweiterung einer mikroprogrammsteuerung einer datenverarbeitungsanlage
DE2718110A1 (de) Datenverarbeitungseinheit
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE3043653A1 (de) Datenverarbeitungsanlage
DE2134816A1 (de) Einrichtung zur adressenuebersetzung
DE102004059125B4 (de) Vorrichtung und Verfahren zum Schreiben von Daten in einen Speicher eines Prozessors an einen unausgerichteten Ort
DE3421737A1 (de) Vorrichtung zur erfassung von operandenueberlappungen
DE3314035A1 (de) Operationsverarbeitungseinrichtung
DE112017003338T5 (de) System, Vorrichtung und Verfahren zum Inspizieren dauerhafter Daten in einem Speicher
DE10040267A1 (de) Prozessor-Speicher-System
CH632349A5 (de) Einrichtung zur mikrobefehlssteuerung.
DE3226214A1 (de) Arithmetisches betriebssystem
DE69930893T2 (de) Digitaler Signalprozessor für Daten mit grosser Bitlänge
DE102004059124B4 (de) Prozessorbasierende Struktur und Verfahren zum Laden unausgerichteter Daten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee