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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 230000000873 masking effect Effects 0.000 claims abstract 4
- 230000001960 triggered effect Effects 0.000 claims abstract 3
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 2
- SYGWYBOJXOGMRU-UHFFFAOYSA-N chembl233051 Chemical compound C1=CC=C2C3=CC(C(N(CCN(C)C)C4=O)=O)=C5C4=CC=CC5=C3SC2=C1 SYGWYBOJXOGMRU-UHFFFAOYSA-N 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 210000003608 fece Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements 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)...
– 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 Speicher100 bei Adressen 101h bis 10Ch geschrieben werden. Als solches, weil der Speicher100 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 in2 , zum Schreiben von Daten "ABCD" an den unausgerichteten Ort im Speicher100 , 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 Speicher100 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 in3 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 Rotierer200 , ein Speicherkombinierregister (STCR)300 und einen Maskenwähler400 . Die Daten sind in einem internen Register100 des Prozessors gespeichert und werden in einen Speicher500 an einen unausgerichteten Ort geschrieben. Der Speicher500 hat eine Vielzahl von m-Bit-Worten, die durch Wortgrenzen unterteilt sind. In dieser Ausführungsform beträgt m bevorzugt 32, d.h. der Speicher500 besteht aus einer Vielzahl von 32 Bit-Worten. - Der Rotierer
200 ist mit dem internen Register100 zum Rotieren der Daten des internen Registers100 an eine erste Position und in. Übereinstimmung mit der geschriebenen unausgerichteten Adresse der Daten gekoppelt. Das STCR300 ist mit dem Rotierer200 gekoppelt, um temporar Daten. des Rotierers200 zu speichern. Der Maskenwähler400 ist mit dem Rotierer200 und dem STCR300 zum wahlweisen. Maskieren deren Daten in Übereinstimmung mit der geschriebenen unausgerichteten Adresse der Daten und Schreiben der maskierten Daten in den Speicher500 , 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-Register300 und den Maskenwähler400 zu erzeugen. Die drei Befehle haben Formate, die in5 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 STCR300 . 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 Speicher500 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 STCR300 . Zusätzlich wird der rotierte Inhalt um ein 1 Byte maskiert und dann in den Speicher500 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 STCR300 "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 STCR300 gespeichert ist und schreibt dann den kombinierten Inhalt in den Speicher500 und schreibt schließlich den rotierten Inhalt des Registers rD in das STCR300 . 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 STCR300 und den maskierten Inhalt in den Inhalt "aABCD", und schreibt dann den Inhalt "aABCD" in den Speicher500 an Adresse 101 h und schließlich schreibt er den Inhalt "DABC" von Register rD in das STCR300 . Folglich, wenn die Ausführung von SCB R16, [101h] vollständig ist, ist der Inhalt von STCR300 "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 STCR300 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 Speicher500 . 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 Speicher500 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 STCR300 , Daten "XYZW" in Speicher500 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 Speicher500 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 STCR300 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 Speicher500 bei Adresse 101h bis 103h (erster Maskierungsschreibschritt) geschrieben. Deswegen, nachdem der Befehl SCB R16, [101h] vollständig ausgeführt ist, hat das STCR300 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 Speicher500 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 STCR300 geschrieben. Deswegen, nachdem der Befehl SCW R17, [105h] vollständig ausgeführt ist, hat STCR300 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 Speicher500 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 STCR300 geschrieben. Deswegen, nachdem der Befehl SCW R18, [109h] vollständig ausgeführt ist, hat das STCR300 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 Speicher500 bei Adresse 10Ch zu schreiben (zweiter Maskierungsschreibschritt). Deswegen, nachdem der Befehl SCE [10Dh] vollständig ausgeführt ist, hat das STCR300 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 Speicher500 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 STCR300 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 STCR300 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 Speicher500 bei Adresse 104h zu schreiben. Deswegen, nachdem der Befehl SCE [105h] vollständig ausgeführt ist, hat das STCR300 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)
- 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. - 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. - Verfahren nach einem der Ansprüche 1 oder 2, wobei m den Wert 32 aufweist.
- Verfahren nach einem der Ansprüche 1 oder 2, wobei die Rotationsschritte nach rechts um 8 Bits jeweils an die erste Position rotieren.
- Verfahren nach einem der Ansprüche 1 oder 2, wobei die Rotationsschritte jeweils nach rechts um 16 Bits an die erste Position rotieren.
- Verfahren nach einem der Ansprüche 1 oder 2, wobei die Rotationsschritte jeweils nach rechts um 24 Bits an die erste Position rotieren.
- Verfahren nach einem der Ansprüche 1 oder 2, wobei der ungeschriebene Teil eine Größe von weniger als m Bits aufweist.
- 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. - 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. - Vorrichtung nach Anspruch 8, wobei m den Wert 32 aufweist.
- Vorrichtung nach Anspruch 8, wobei der Rotierer (
200 ) nach rechts um 8 Bits an die erste Position rotiert. - Vorrichtung nach Anspruch 8, wobei der Rotierer (
200 ) nach rechts um 16 Bits an die erste Position rotiert. - Vorrichtung nach Anspruch 8, wobei der Rotierer (
200 ) nach rechts um 24 Bits an die erste Position rotiert. - Vorrichtung nach Anspruch 8, wobei der ungeschriebene Teil eine Größe von weniger als m Bits aufweist.
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)
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)
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)
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 |
-
2003
- 2003-12-19 TW TW092136303A patent/TWI230357B/zh not_active IP Right Cessation
-
2004
- 2004-11-17 US US10/989,408 patent/US7308556B2/en not_active Expired - Fee Related
- 2004-11-19 GB GB0425479A patent/GB2409309B/en not_active Expired - Fee Related
- 2004-12-08 DE DE102004059125A patent/DE102004059125B4/de not_active Expired - Fee Related
Patent Citations (2)
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 |