DE19653568A1 - Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und absteigende Byte-Reihenfolge im Speicher - Google Patents
Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und absteigende Byte-Reihenfolge im SpeicherInfo
- Publication number
- DE19653568A1 DE19653568A1 DE19653568A DE19653568A DE19653568A1 DE 19653568 A1 DE19653568 A1 DE 19653568A1 DE 19653568 A DE19653568 A DE 19653568A DE 19653568 A DE19653568 A DE 19653568A DE 19653568 A1 DE19653568 A1 DE 19653568A1
- Authority
- DE
- Germany
- Prior art keywords
- byte
- word
- alignment
- multiplexers
- access network
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Time-Division Multiplex Systems (AREA)
Description
CPUs greifen auf den Hauptspeicher wortweise zu. Ein Wort ist mehrere Bytes
groß, wobei die Zahl der Bytes meist eine Zweierpotenz ist. Im Programmiermo
dell wird der Speicher logisch Byte-weise organisiert. Zugriffe auf Teilwörter sind
erlaubt. Dazu muß der Zugriff auf Teilwörter im Speicher diese Teilwörter an der
korrekten Position des Wortes extrahieren oder einfügen.
Wörter werden mit zwei verschiedenen Byte-Reihenfolgen organisiert, aufstei
gend (niederwertigstes Byte zuerst) und absteigend (höchstwertiges Byte zuerst).
Die Größe von Teilwörtern in Bytes ist ebenfalls meist eine Zweierpotenz.
Der Zugriff auf Wörter und Teilwörter ist leichter, wenn das Wort in Teilwörter
gleicher Größe aufgeteilt ist, also auf ausgerichtete Position zugegriffen wird.
Man unterscheidet zwischen den Positionen im Wort (Teilwortadresse) und
den Adressen des Wortes selbst (Speicheradresse oder Wortadresse).
In bisher bekannten CPUs erfolgt der Zugriff auf Teilwörter unter Verwendung
von Multiplexern beim Lesen und Demultiplexern beim Schreiben. Es wurde vor
geschlagen, Zugriffe in der jeweils anderen Byte-Reihenfolge durch Invertierung
der Bits der Teilwortadresse oberhalb der Ausrichtung zu bewerkstelligen. Das
ändert die Reihenfolge der Bytes im Speicher, während Wörter jedesmal gleich
gespeichert werden.
Der Nachteil dieses Vorgehens ist, daß unterschiedliche Programme, die jeweils
verschiedene Byte-Reihenfolgen verwenden, ihre (meist Byte-weise gespeicherten)
Daten nicht in einem gemeinsamen Speichersegment teilen können. Deshalb wer
den auch Operationen verwendet, die die Bytes vertauschen, um Daten in der
jeweils anderen Byte-Reihenfolge zu laden und zu speichern, oder diese Opera
tionen werden in den Datenpfad von und zum Speicher eingefügt. Dies jedoch
verlängert den Zeitbedarf für die Lese- oder Schreiboperation, verlängert also
ggf. den kritischen Pfad. Zudem werden mehr Gatter benötigt.
Zweck der Erfindung ist es, den Zeit- und Gatterbedarf für die Lese- und
Schreiboperation zu minimieren, und dennoch den Zugriff auf Wörter und Teil
wörter in sowohl aufsteigender als auch absteigender Byte-Reihenfolge zu erlau
ben. Dazu wird erfindungsgemäß ein Multiplexer-Netzwerk verwendet, um die
Teilwortauswahl, das Einfügen des Teilwortes und das Vertauschen der Bytes in
einem Schritt für ausgerichtete Zugriffe zu bewerkstelligen.
Für ein 2n Bytes großes Speicherwort besteht die Einheit aus 2n Byte-breiten
Multiplexern, wobei jeder Multiplexern aus den 2n Bytes am Eingang eines aus
wählt. Jeder Multiplexer hat ein n Bit breites Kontrollsignal, wobei ein Kontroll
signal vom Wert i den Eingang i auswählt (Eingänge von 0 bis 2n - 1). Invertie
rung einzelner Bits des Kontrollsignals für verschiedene Multiplexer ändern die
Auswahl, so daß die richtigen Bytes ausgewählt werden.
Tab. 1 zeigt, wie die Eingabebytes aus einem Acht-Byte-Word ausgewählt
werden. Jede Spalte zeigt die Ausgabe vom höchst- zum niederwertigsten Byte.
Jede Zeile zeigt die Byte-Auswahl für verschiedene Kontrollsignale. Fettgedruckte
Zahlen stehen für die verschiedenen Positionen der höchstwertigen Bytes in ab
steigender Byte-Reihenfolge, kursive Zählen entsprechend für aufsteigende Byte-
Reihenfolge.
Das Kontrollsignal für Byte i berechnet sich aus dem Kontrollsignal für Byte 0
exklusiv oder-verknüpft mit dem Zähler i. Das Kontrollsignal für Byte 0 wird wie
folgt abhängig davon berechnet, ob Ganzzahlen oder Festpunktzahlen geladen
oder gespeichert werden, in welcher Byte-Reihenfolge geladen oder gespeichert
wird und welche Teilwortposition adressiert wird:
- - Wenn Teilwörter an die am wenigsten signifikante Position innerhalb des CPU-Worts geladen (z. B. Ganzzahlen) oder von dieser Position gespeichert werden, wird das Kontrollsignal wie folgt berechnet: Die Bits oberhalb der Ausrichtung in der Teilwortadresse werden invertiert, die Bits darunter sind 0 für absteigende, 1 für aufsteigende Byte-Reihenfolge.
- - Wenn Teilwörter an die höchstsignifikante Position innerhalb des CPU- Worts geladen (z. B. Festkommazahlen) oder von dieser gespeichert werden, werden die Bits oberhalb der Ausrichtung nicht invertiert, die Bits darunter sind ebenfalls 0 für absteigende, 1 für aufsteigende Byte-Reihenfolge.
- - Für Lesezugriffe liegt der Wert aus dem Speicher am Eingang der Multiple xer. Aus dem Ausgang muß das Teilwort in bekannter Weise ausmaskiert werden, indem eine Byte-Maske berechnet wird, und jedes Bit in der Mas ke mit jedem Bit des korrespondierenden Bytes mit AND-Gates verknüpft wird.
- - Für Schreibzugriffe liegt der in der CPU berechnete Wert am Eingang der Multiplexer. Aus dem Ausgang muß das Teilwort mit dem Speicherwort in bekannter Weise vermischt werden, in dem eine Byte-Maske berechnet wird, wobei für jedes gültige Byte aus dem Multiplexer ein Bit eines zusätzlichen Kontrollsignals auf 1 gesetzt wird, und für jedes ungültige Byte ein Bit dieses Kontrollsignals auf 0. Nur gültige Bytes dürfen in bekannter Weise in den Speicher übernommen werden.
Jeder Multiplexer mit 2n Eingängen kann in bekannter Weise aus kaskadierten
Multiplexern mit zwei Eingängen (2 : 1-Multiplexern) zusammengesetzt werden,
mit einer Kaskadenlänge n. Das würde in 2n - 1 2 : 1-Multiplexern resultieren, also
sieben 2 : 1-Multiplexern für ein 64-Bit-Wort. Wegen der besonderen Charakteri
stik der Auswahl können aber die elementaren Multiplexer mehrfach wiederver
wendet werden. Insbesondere können 2 2 : 1-Multiplexer zu einem 2 : 2-Multiplexer
(Multiplexer mit zwei Eingängen und zwei Ausgängen) zusammengefaßt werden,
wobei die Kontrollsignale dann ein Bit aus dem Kontrollsignal und dessen Inverses
sind.
Die Zeichnung Fig. 1 zeigt die Transistorschaltung eines Ein-Bit 2 : 2-Multiplexer
in CMOS-Technologie. Dieser Multiplexer berechnet
mit etwa der Gatterlaufzeit eines NAND-Gatters mit zwei Eingängen, wobei
c₀ und c₁ die Kontrollsignale, i₀ und i₁ die Eingangswerte und f₀ und f₁ die
Ausgänge sind. n dieser Ein-Bit-Multiplexer werden in bekannter Weise zu einem
n-Bit-Multiplexer kombiniert.
Der durch die Erfindung erreichbare Vorteil kann anhand eines Beispiels für
ein 64-Bit-Speicherwort wie folgt abgeschätzt werden:
Für ein 64-Bit-Speicherwort werden vier 8-Bit 2 : 2-Multiplexer benötigt, wobei jeder zwei Bytes aus einem Byte-Paar auswählt und als Eingang c₀ das niederwer tigste Bit des Kontrollsignals, und dessen Inverses als Eingang c₁ verwendet wird. Zwei 16-Bit 2 : 2-Multiplexer wählen zwischen Byte-Paaren aus unter Verwendung des zweiten Bits im Kontrollsignals und dessen Inverses für c₀ und c₁. Zwischen den beiden Worthälften wählt ein 32-Bit 2 : 2-Multiplexer aus, unter Verwendung des höchstwertigen Bits im Kontrollsignal und dessen Inverses für c₀ und c₁.
Für ein 64-Bit-Speicherwort werden vier 8-Bit 2 : 2-Multiplexer benötigt, wobei jeder zwei Bytes aus einem Byte-Paar auswählt und als Eingang c₀ das niederwer tigste Bit des Kontrollsignals, und dessen Inverses als Eingang c₁ verwendet wird. Zwei 16-Bit 2 : 2-Multiplexer wählen zwischen Byte-Paaren aus unter Verwendung des zweiten Bits im Kontrollsignals und dessen Inverses für c₀ und c₁. Zwischen den beiden Worthälften wählt ein 32-Bit 2 : 2-Multiplexer aus, unter Verwendung des höchstwertigen Bits im Kontrollsignal und dessen Inverses für c₀ und c₁.
Also hat die Einheit für ein 64-Bit-Wort einen kritischen Pfad von drei inver
tierenden Multiplexern und einem Inverter, und insgesamt 96 2 : 2 Multiplexer und
64 Inverter oder 896 Transistoren. Da sowohl beim Lesen als auch beim Schreiben
invertiert wird, können die Inverter ggf. wegfallen, sofern man in Kauf nehmen
kann, daß die Werte invertiert gespeichert werden.
Die Berechnung des Kontrollsignals sowie die Setup-Zeiten der Multiplexer
sind nicht kritisch, da sie parallel mit der Hauptspeicheradressierung vorgenom
men werden können.
Claims (6)
1. Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und ab
steigende Byte-Reihenfolge im Speicher, dadurch gekennzeichnet, daß 2n
Multiplexer verwendet werden, wobei jeder Multiplexer aus den 2n Bytes
eines Wortes eine Byte auswählt. Die Kontrollwörter für die Multiplexer
werden durch geeignetes Invertieren der Adreßbits oberhalb der Ausrich
tung des Teilwortes und Setzen bzw. Löschen der Adreßbits unterhalb der
Ausrichtung des Teilwortes berechnet.
2. Zugriffsnetzwerk nach Anspruch 1, dadurch gekennzeichnet, daß das
Kontrollwort für das höchstwertige Byte 0 durch Invertieren der Adreßbits
oberhalb der Ausrichtung berechnet wird, um Ganzzahlen zu laden und zu
speichern, und durch 0-Bits unterhalb der Ausrichtung des Teilwortes für
absteigende Byte-Reihenfolge bzw. 1-Bits unterhalb der Ausrichtung des
Teilwortes für aufsteigende Byte-Reihenfolge.
3. Zugriffsnetzwerk nach Anspruch 1, dadurch gekennzeichnet, daß das
Kontrollwort für das höchstwertige Byte 0 durch Übernahme der Adreßbits
oberhalb der Ausrichtung berechnet wird, um Fixpunktzahlen zu laden und
zu speichern, und durch 0-Bits unterhalb der Ausrichtung des Teilwortes
für absteigende Byte-Reihenfolge bzw. 1-Bits unterhalb der Ausrichtung des
Teilwortes für aufsteigende Byte-Reihenfolge.
4. Zugriffsnetzwerk nach Anspruch 1 bis 3, dadurch gekennzeichnet, daß
das n-Bit breite Kontrollwort für den Multiplexer für Byte i berechnet wird,
indem das Kontrollwort für Byte 0 mit dem Zähler i durch exklusives Oder
verknüpft wird.
5. Zugriffsnetzwerk nach Ansprüchen 1 bis 4, dadurch gekennzeichnet, daß
die 2n Multiplexer als kaskadisch angeordnete 2 : 1 Multiplexer implementiert
werden, und gemeinsame 2 : 1-Selektionen mit gemeinsamen 2 : 1 Multiplexer
realisiert werden.
6. Zugriffsnetzwerk nach Anspruch 5, dadurch gekennzeichnet, daß zwei
2 : 1-Multiplexer, welche aus gleichen Bytes mit zueinander inversen Kon
trollsignalen auswählen, zu einem 2 : 2-Multiplexer kombiniert werden.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19653568A DE19653568A1 (de) | 1996-12-20 | 1996-12-20 | Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und absteigende Byte-Reihenfolge im Speicher |
US08/984,685 US5918075A (en) | 1996-12-20 | 1997-12-03 | Access network for addressing subwords in memory for both little and big endian byte order |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19653568A DE19653568A1 (de) | 1996-12-20 | 1996-12-20 | Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und absteigende Byte-Reihenfolge im Speicher |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19653568A1 true DE19653568A1 (de) | 1997-07-10 |
Family
ID=7815712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19653568A Withdrawn DE19653568A1 (de) | 1996-12-20 | 1996-12-20 | Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und absteigende Byte-Reihenfolge im Speicher |
Country Status (2)
Country | Link |
---|---|
US (1) | US5918075A (de) |
DE (1) | DE19653568A1 (de) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119224A (en) * | 1998-06-25 | 2000-09-12 | International Business Machines Corporation | Fast shift amount decode for VMX shift and vperm instructions |
US6351750B1 (en) * | 1998-10-16 | 2002-02-26 | Softbook Press, Inc. | Dynamic conversion of byte ordering for use on different processor platforms |
US20020078342A1 (en) * | 2000-09-25 | 2002-06-20 | Broadcom Corporation | E-commerce security processor alignment logic |
US20020061107A1 (en) * | 2000-09-25 | 2002-05-23 | Tham Terry K. | Methods and apparatus for implementing a cryptography engine |
US7124261B2 (en) * | 2004-02-09 | 2006-10-17 | Arm Limited | Access to bit values within data words stored in a memory |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5652454A (en) * | 1979-10-05 | 1981-05-11 | Hitachi Ltd | Input/output control method of variable word length memory |
US5524256A (en) * | 1993-05-07 | 1996-06-04 | Apple Computer, Inc. | Method and system for reordering bytes in a data stream |
GB9402470D0 (en) * | 1994-02-09 | 1994-03-30 | Texas Instruments Ltd | Improvements in or relating to mask generation |
US5477543A (en) * | 1994-08-03 | 1995-12-19 | Chromatic Research, Inc. | Structure and method for shifting and reordering a plurality of data bytes |
US5687328A (en) * | 1995-05-16 | 1997-11-11 | National Semiconductor Corporation | Method and apparatus for aligning data for transfer between a source memory and a destination memory over a multibit bus |
US5721957A (en) * | 1996-06-03 | 1998-02-24 | International Business Machines Corporation | Method and system for storing data in cache and retrieving data from cache in a selected one of multiple data formats |
-
1996
- 1996-12-20 DE DE19653568A patent/DE19653568A1/de not_active Withdrawn
-
1997
- 1997-12-03 US US08/984,685 patent/US5918075A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5918075A (en) | 1999-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0079471B1 (de) | Schaltungsanordnung und Verfahren zur Bildung von Skalarprodukten und Summen von Gleitkommazahlen mit maximaler Genauigkeit | |
DE60019148T2 (de) | Dma-deskriptor-architektur mit verknüpfter liste | |
DE2524046C2 (de) | Elektronische Datenverarbeitungsanlage | |
DE1246289B (de) | Bedingungsregister fuer eine programmgesteuerte Datenverarbeitungsanlage | |
DE2718110A1 (de) | Datenverarbeitungseinheit | |
DE2718551C3 (de) | Adressenumsetzer | |
DE2134816A1 (de) | Einrichtung zur adressenuebersetzung | |
DE2940653A1 (de) | Programmierbare logische anordnung | |
DE2830334C2 (de) | ||
DE2212967A1 (de) | Einrichtung und Verfahren zur Verwendung eines dreifeldrigen Wortes zur Darstellung einer Gleitkommazahl | |
DE19653568A1 (de) | Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und absteigende Byte-Reihenfolge im Speicher | |
DE2657118A1 (de) | Anordnung zur verarbeitung von daten | |
DE4225758A1 (de) | Schaltungsanordnung mit einer Wirts-Recheneinheit (Host-CPU), einem Fuzzy-Logic-Coprozessor und einem Wissensbasis-Speicher | |
DE4026569A1 (de) | Zentraleinheit | |
DE3000012A1 (de) | Schaltungsanordnung zur ausfuehrung eines uebertragungsbefehls in einer datenverarbeitungsanlage | |
EP0262636B1 (de) | Schaltungsanordnung zum Auswählen und/oder Ausrichten von Dateneinheiten in Datenverarbeitungsanlagen | |
DE1449540B2 (de) | Digitalrechner | |
DE19944040C2 (de) | Integrierter Speicher mit zwei Burstbetriebsarten | |
DE3609056A1 (de) | Zaehlerschaltkreis | |
DE2702586B2 (de) | Schaltungsanordnung zum Steuern des Speicherzugriffs bei einem Rechner | |
DE3543976C2 (de) | ||
DE2501985A1 (de) | Mit gleitkomma arbeitender rechenmechanismus | |
DE2345098C3 (de) | Steuerwerk für einen Prozessor eines Rechners | |
DE2645044A1 (de) | Speicheranordnung mit direkter adressierung | |
DE3603319C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OAV | Applicant agreed to the publication of the unexamined application as to paragraph 31 lit. 2 z1 | ||
8122 | Nonbinding interest in granting licences declared | ||
8139 | Disposal/non-payment of the annual fee |