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 Speicher

Info

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
Application number
DE19653568A
Other languages
English (en)
Inventor
Bernd Paysan
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to DE19653568A priority Critical patent/DE19653568A1/de
Publication of DE19653568A1 publication Critical patent/DE19653568A1/de
Priority to US08/984,685 priority patent/US5918075A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing 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.
Vorteilhafte Ausführung unter Verwendung von 2 : 2 Multi­ plexern
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₁.
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.
DE19653568A 1996-12-20 1996-12-20 Zugriffsnetzwerk zur Adressierung von Teilwörtern für aufsteigende und absteigende Byte-Reihenfolge im Speicher Withdrawn DE19653568A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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