-
Die
vorliegende Erfindung betrifft eine Datenverarbeitungsvorrichtung
mit Multi-Endian-Unterstützung.
-
Bei
Datenverarbeitungsvorrichtungen bzw. Computern ist der Speicher üblicherweise
in Einheiten aufgeteilt, welche als Bytes bezeichnet werden. Ein
Byte umfasst dabei typischerweise acht Bit, wobei jedes der Bits
entweder einen Wert von 0 oder von 1 annehmen kann. Durch ein Byte
sind somit Zahlenwerte von in dezimaler Darstellung 0-255 darstellbar.
Zur Darstellung größerer Zahlenwerte
ist die Verwendung mehrerer Bytes erforderlich, welche zu einem
Datenwort zusammengesetzt werden. Zur Anordnung der einzelnen Bytes
in dem Datenwort bestehen mehrere Möglichkeiten. Die Art und Weise, auf
welche die Bytes angeordnet werden, wird hierin als Endian-Modus
bezeichnet. Insbesondere ist in diesem Zusammenhang ein so genannter
Little-Endian-Modus bekannt, bei welchem kleinwertige Bytes zuerst
angeordnet werden. Weiterhin ist ein Big-Endian-Modus bekannt, bei welchem großwertige
Bytes zuerst angeordnet werden. Einige Datenverarbeitungseinheiten
und Betriebssysteme arbeiten in dem Little-Endian-Modus, während andere
in dem Big-Endian-Modus arbeiten. Einige Datenverarbeitungseinheiten
sowie Betriebssysteme sind in der Lage, sowohl den Little-Endian-Modus
als auch den Big-Endian-Modus zu unterstützen. In diesem Fall ist eine
Umschaltung zwischen dem Little-Endian-Modus und dem Big-Endian-Modus
möglich.
Der Endian-Modus beeinflusst sowohl die Hardware als auch die Software
eines Datenverarbeitungssystems.
-
Als
Embedded-Systeme werden hierin Datenverarbeitungsvorrichtungen bezeichnet,
welche mehrere Datenverarbeitungseinheiten oder Prozessoren, Peripherieeinheiten
und Verbindungsstrukturen beinhalten, typischerweise innerhalb einer
einzigen integrierten Schaltung. Bei den Prozessoren kann es sich
um zentrale Datenverarbeitungseinheiten (Central Processing Unit,
CPU), digitale Signalprozessoren (Digital Signal Processor, DSP)
oder Hardware-Beschleuniger handeln. Ein Betriebssystem wie Linux,
WinCE oder ein proprietäres
Betriebssystem wie Brillianto kann auf diesen Datenverarbeitungseinheiten
ausgeführt
werden. Jede Datenverarbeitungseinheit sowie das auf dieser Datenverarbeitungseinheit
laufende Betriebssystem sind dazu ausgestaltet, entweder in dem
Big-Endian-Modus oder dem Little-Endian-Modus zu arbeiten.
-
Peripherieeinheiten
innerhalb eines Embedded-Systems dienen typischerweise als Schnittstelle der
Datenverarbeitungseinheiten nach außen (beispielsweise ein DDR-SDRAM-Controller,
eine USB-Schnittstelle, ein PCIe-Bus oder dergleichen), der Datenübertragung
zwischen zwei Orten (beispielsweise ein DMA-Controller) oder der Unterstützung der
Datenverarbeitungseinheiten, um die Datenverarbeitung zu beschleunigen
(beispielsweise bei einer Verschlüsselung). Somit müssen auch
die Peripherieeinheiten mit den unterschiedlichen Endian-Modi zurechtkommen.
-
Verbindungsstrukturen
innerhalb eines Embedded-Systems können Busse wie beispielsweise ein
Bus gemäß der Advanced-Microprocessor-Bus-Architecture
(AMBA), gemäß der „Advanced-High-Performance
(AHB)"-Spezifikation
oder gemäß der „Flexible-Peripherals-Interface
(FPI)"-Spezifikation
sein. Weiterhin können
als Verbindungsstrukturen auch so genannte Crossbars oder Koppelfelder verwendet
werden. Allgemein müssen
auch die Verbindungsstrukturen mit dem jeweiligen Endian-Modus der
Datenverarbeitungseinheiten oder der Peripherieeinheiten zurechtkommen.
-
Bei
bestehenden Lösungen
für Systeme
mit gemischter Endian-Konfiguration
wird jedoch stets ein gemeinsamer Endian-Modus für die Prozessoren eines Embedded-Systems
oder allgemeiner für
die Komponenten einer Datenverarbeitungsvorrichtung gewählt.
-
Aufgabe
der vorliegenden Erfindung ist es, eine Datenverarbeitungsvorrichtung
bereitzustellen, welche eine verbesserte Unterstützung für gemischte Endian-Konfigurationen
bietet.
-
Diese
Aufgabe wird gelöst
durch eine Datenverarbeitungsvorrichtung gemäß Patentanspruch 1. Die abhängigen Patentansprüche definieren
bevorzugte oder vorteilhafte Ausführungsformen der Erfindung.
-
Gemäß einem
Ausführungsbeispiel
der Erfindung wird eine Datenverarbeitungsvorrichtung bereitgestellt,
welche wenigstens eine erste Komponente und eine zweite Komponente
umfasst, welche miteinander gekoppelt sind. Die erste Komponente ist
in einem ersten Endian-Modus betreibbar, während die zweite Komponente
in einem zweiten Endian-Modus betreibbar ist, welcher sich von dem
ersten Endian-Modus unterscheidet. Bei dem ersten Endian-Modus kann
es sich um den Little-Endian-Modus handeln, und bei dem zweiten
Endian-Modus kann es sich um den Big-Endian-Modus handeln. Die erste Komponente
und die zweite Komponente können zwei
Prozessoren der Datenverarbeitungsvorrichtung sein. Weiterhin ist
es möglich,
dass die erste Komponente und die zweite Komponente ein Prozessor
bzw. eine Peripherieeinheit der Datenverarbeitungsvorrichtung sind.
Es ist somit möglich,
jede der Komponenten in ihrem eigenen Endian-Modus zu betreiben,
unabhängig
von anderen Komponenten oder Verbindungsstrukturen der Datenverarbeitungsvorrichtung.
-
Gemäß einem
Ausführungsbeispiel
ist bei der erfindungsgemäßen Datenverarbeitungsvorrichtung
vorgesehen, die Hardware-Architektur
derart auszugestalten, dass zumindest einigen oder allen Komponenten
des Systems Zugriffseigenschaftsinformationen von Zugriffen, beispielsweise
auf einen Speicher, zugänglich
gemacht werden. Die Zugriffseigenschaftsinformationen können insbesondere
einen Zugrifftyp (Abruf eines Befehls, Laden von Daten, Speichern
von Daten, Datenbreite) und einen Endian-Modus des Zugriffs (beispielsweise
Big-Endian- Modus
oder Little-Endian-Modus) beinhalten. Auf diese Weise wird gewährleistet,
dass die angeforderten Befehle oder Daten unabhängig von dem Endian-Modus korrekt übermittelt
werden.
-
Gemäß einem
Ausführungsbeispiel
ist die Datenverarbeitungsvorrichtung auf einem einzigen Halbleiterchip
implementiert, d. h. als Embedded-System ausgestaltet. Die Datenverarbeitungsvorrichtung
kann in einem Kommunikationssystem, beispielsweise einem Voice-over-Internet-Protocol-Kommunikationssystem
oder in einem Computersystem eingesetzt werden.
-
Die
Erfindung wird nachfolgend unter Bezugnahme auf die beigefügten Zeichnungen
näher erläutert.
-
1 zeigt
schematisch eine Datenverarbeitungsvorrichtung gemäß einem
Ausführungsbeispiel der
Erfindung.
-
2a und 2b zeigen
schematisch die Funktionsweise einer Umsetzungsvorrichtung, welche
gemäß einem
Ausführungsbeispiel
in der Datenverarbeitungsvorrichtung eingesetzt wird.
-
3a und 3b zeigen
schematisch die Funktionsweise einer weiteren Umsetzungsvorrichtung,
welche gemäß einem
Ausführungsbeispiel
in der Datenverarbeitungsvorrichtung eingesetzt wird.
-
Die
Erfindung wird nachfolgend anhand eines Ausführungsbeispiels näher erläutert, welches sich
auf eine Datenverarbeitungsvorrichtung bezieht, die als ein Embedded-System
ausgestaltet ist. Die Datenverarbeitungsvorrichtung kann Bestandteil
eines Kommunikationssystems, beispielsweise eines so genannten Voice-over-Internet-Protocol-Kommunikationssystems
oder allgemeiner eines Computersystems sein. Es versteht sich jedoch,
dass die nachfolgend dargestellten Konzepte auch auf andere Anwendungsgebiete übertragen
werden können.
Weiterhin versteht es sich, dass in den Figuren und der zugehörigen Be schreibung
jede dargestellte Verbindung oder Kopplung direkt oder indirekt
ausgestaltet sein kann, d. h. dass zwischen die dargestellten Funktionsblöcke oder
Einheiten weitere Funktionsblöcke
oder Einheiten gekoppelt sein können.
Die dargestellten Bitbreiten der Verbindungen sind lediglich beispielhaft
gewählt
und können
selbstverständlich
gemäß den Erfordernissen
der Anwendung angepasst werden.
-
In 1 ist
schematisch eine Datenverarbeitungsvorrichtung dargestellt, welche
als ein Embedded-System ausgestaltet ist. Die Datenverarbeitungsvorrichtung
umfasst innerhalb einer einzigen integrierten Schaltung mehrere
Prozessoren (oder Datenverarbeitungseinheiten) 10a, 10b, 10c.
Bei den Prozessoren 10a, 10b, 10c kann
es sich beispielsweise um eine CPU 10a, einen DSP 10b und
einen Hardware-Beschleuniger 10c handeln. Die Prozessoren 10a, 10b, 10c sind
jeweils über
eine Datenverbindung mit einer Breite von 64 Bit mit einem Crossbar 14 gekoppelt.
Der Crossbar 14 dient der Verbindung der Prozessoren 10a, 10b, 10c untereinander sowie
der Verbindung der Prozessoren 10a, 10b, 10c mit
Peripherieeinheiten 17, 18, 19. Die Peripherieeinheiten
können
beispielsweise einen DMA-Controller 17,
einen Systembus 18 und/oder einen Speicher-Controller 19 beinhalten.
Der Systembus 18 kann als FPI-Bus, als AMBA-Bus oder als
AHB-Bus ausgestaltet sein. Der Speicher-Controller 19 kann beispielsweise
für einen
Zugriff auf Speicher vom DDR-SDRAM-Typ ausgestaltet sein. Weiterhin
verbindet der Crossbar 14 die Prozessoren 10a, 10b, 10c mit
einer ROM-Speichervorrichtung 16. Die ROM-Speichervorrichtung 16 dient
der Speicherung eines Betriebscodes oder Bootcodes für die Prozessoren 10a, 10b, 10c.
Die Prozessoren 17, 18, 19 und die Peripherieeinheiten
werden nachstehend auch als Komponenten der Datenverarbeitungsvorrichtung bezeichnet.
-
Die
Datenverarbeitungsvorrichtung beinhaltet weiterhin Umsetzungsvorrichtungen 20, 22,
welche jeweils zwischen den Crossbar 14 und die ROM-Speichervorrichtung 16 und
die Peripherieeinheiten 17, 18, 19 gekoppelt
sind. Die Umsetzungsvorrich tungen 20 bewerkstelligen abhängig von
einem Steuersignal AC eine Vertauschung von Bytes innerhalb der über sie übermittelten
Datenworte. Die Umsetzungsvorrichtungen 22 bewerkstelligen
darüber
hinaus auch eine Anpassung der Datenbreite, beispielsweise zwischen
64 Bit und 32 Bit oder zwischen 64 Bit und 16 Bit.
-
Das
Steuersignal AC wird abhängig
von einem Zugriff, welcher von einem der Prozessoren 10a, 10b, 10c oder
einer der Peripherieeinheiten 17, 18, 19 initiiert
wird, durch die jeweils initiierte Komponente erzeugt. Das Steuersignal
AC beinhaltet eine Zugriffseigenschaftsinformation, welche einen
Zugriffstyp (Abruf eines Befehls, Laden von Daten, Speichern von
Daten, Datenbreite) und den Endian-Modus des Zugriffs beinhaltet.
Der Endian-Modus des Zugriffs ist dabei bestimmt durch den Endian-Modus
der Komponente, welche den Zugriff initiiert. Bei dem Endian-Modus
kann es sich um den Little-Endian-Modus oder um den Big-Endian-Modus handeln. Im
Rahmen der Datenbreite kann insbesondere definiert werden, ob bei
dem Zugriff lediglich ein Byte, ein vollständiges Datenwort, welches die
volle Datenbreite der Verbindung ausschöpft, oder ein Teildatenwort,
welches mehrere Bytes umfasst aber lediglich einen Teil der Datenbreite
der Datenverbindung ausschöpft, übertragen
wird. Beispielsweise können Halbdatenworte übertragen
werden, welche lediglich die halbe Datenbreite der Datenverbindung
ausschöpfen.
Diese Informationen werden von den Umsetzungsvorrichtungen 20, 22 verwendet,
um auch bei unterschiedlichen Endian-Modi der Komponenten 10a, 10b, 10c, 17, 18, 19 der
Datenverarbeitungsvorrichtung eine korrekte Übermittlung der Daten oder Adressen
zu gewährleisten.
-
Wenn
die Datenverbindung zwischen den Komponenten 10a, 10b, 10c, 17, 18, 19 mehrere
logische Kanäle
unterstützt,
beispielsweise für
die Verbindung zu dem DMA-Controller 17, welche mehrere logische
DMA-Kanäle
beinhaltet, erfolgt die Umsetzung einzeln für jeden der logischen Kanäle.
-
Die
dargestellte Struktur ermöglicht,
jede der Komponenten 10a, 10b, 10c, 17, 18, 19 der
Datenverarbeitungsvorrichtung in ihrem eigenen Endian-Modus zu betreiben.
Dies betrifft insbesondere die Prozessoren 10a, 10b und 10c.
Diese können
unabhängig
von ihrem Endian-Modus auf die ROM-Speichervorrichtung 16 zugreifen,
um auszuführende
Befehle zu laden. Insbesondere wird stets ein Zugriff auf die korrekten
Speicheradressen gewährleistet.
Hinsichtlich des in der ROM-Speichervorrichtung 16 gespeicherten
Betriebscodes bestehen keine besonderen Einschränkungen. Insbesondere kann
der Betriebscode für
einen beliebigen Endian-Modus entwickelt sein, wobei die korrekte Ausführung durch
die Umsetzungsvorrichtung 20 zwischen dem Crossbar 14 und
der ROM-Speichervorrichtung 16 sichergestellt ist. In dem
Betriebscode können
sowohl relative Sprünge
zwischen Speicheradressen als auch absolute Sprünge zwischen Speicheradressen
verwendet werden. Über
den Systembus 18 ist es möglich, Eingangsdaten und Ausgangsdaten
in einem beliebigen Endian-Modus extern zu verarbeiten. Beispielsweise
können
einer zur Datenverschlüsselung
ausgestalteten Peripherieeinheit Daten zugeführt werden. Vor der Verschlüsselung werden
die Daten entsprechend dem Endian-Modus der die Verschlüsselung
veranlassenden Komponente umgesetzt. Die zurückgegebenen verschlüsselten Daten
werden wiederum abhängig
von dem jeweiligen Endian-Modus zurück umgesetzt.
-
Nachfolgend
soll anhand von 2a und 2b die
Umsetzung von Datenworten in den Umsetzungsvorrichtungen 20 näher erläutert werden.
-
2a zeigt
beispielhaft jeweils 8 Byte umfassende Datenworte. Ein Datenwort
im Big-Endian-Modus ist mit B bezeichnet, während ein Datenwort im Little-Endian-Modus
mit L bezeichnet ist. Die Bytes der Datenworte sind mit ansteigender
Wertigkeit von 0 bis 7 nummeriert. Bei der in 2a dargestellten
Konfiguration ist eine Vertauschungsfunktion der Umsetzungsvorrichtung 20 aktiviert,
so dass die Anordnung der Bytes in den Datenworten vom Big-Endian-Modus
in den Little-Endian-Modus
verändert
wird und umgekehrt.
-
Bei
der in 2b dargestellten Konfiguration ist
die Vertauschungsfunktion der Umsetzungsvorrichtung 20 deaktiviert,
d. h. die Anordnung der Bytes in den Datenworten bleibt unverändert. In 2b ist beispielhaft
ein Datenwort im Big-Endian-Modus
dargestellt (mit B bezeichnet), welches von der Umsetzungsvorrichtung
unverändert
als Datenwort im Big-Endian-Modus
ausgegeben wird (ebenfalls mit B bezeichnet). Es versteht sich jedoch,
dass bei dieser Konfiguration der Umsetzungsvorrichtung 20 auch ein
Datenwort im Little-Endian-Modus,
welches in die Umsetzungsvorrichtung 20 eingegeben wird,
wieder als Datenwort im Little-Endian-Modus ausgibt.
-
Als
nächstes
soll anhand von 3a und 3b die
Umsetzung von Datenworten in den Umsetzungsvorrichtungen 22 näher erläutert werden. Die
Funktionsweise entspricht grundsätzlich
derjenigen der Umsetzungsvorrichtung 20, welche anhand von 2a und 2b erläutert wurde.
Bei der Umsetzungsvorrichtung 22 erfolgt jedoch zusätzlich eine Anpassung
der Datenbreite des übermittelten
Datenworts. In 3a und 3b sind
beispielhaft ein 8 Byte umfassendes Datenwort und ein 4 Byte umfassendes
Datenwort dargestellt, zwischen welchen die Umsetzung erfolgt. Das
8 Byte umfassende Datenwort kann auch als Volldatenwort bezeichnet
werden, während
das 4 Byte umfassende Datenwort als Halbdatenwort bezeichnet werden
kann.
-
In 3a ist
die Umsetzung zwischen einem Volldatenwort im Big-Endian-Modus (mit
B bezeichnet) und einem Halbdatenwort im Little-Endian-Modus (mit
L bezeichnet) dargestellt. Bei der Umsetzung wird ein Teil der Bytes
des Volldatenworts weggelassen. Welche der Bytes weggelassen werden, kann
von der Umsetzungsvorrichtung abhängig von der in dem Steuersignal
AC enthaltenen Datenbreiteninformation im Zusammenhang mit der ebenfalls in
dem Steuersignal AC enthaltenen Endian-Modus-Information entschieden werden. In diesem
Fall werden die vier ersten Bytes des Volldatenworts weggelassen.
Darüber
hinaus erfolgt für
die übrigen Bytes
die bereits erläuterte
Umordnung.
-
In 3b ist
die Umsetzung zwischen einem Volldatenwort im Little-Endian-Modus
(mit L bezeichnet) und einem Halbdatenwort im Big-Endian-Modus (mit
B bezeichnet) veranschaulicht. Wiederum wird abhängig von dem Steuersignal AC
ein Teil der Bytes des Volldatenworts weggelassen, in diesem Fall
jedoch die letzten vier Bytes. Für
die übrigen
Bytes erfolgt die bereits erläuterte
Umordnung.
-
Bei
der oben beschriebenen Datenverarbeitungsvorrichtung sind verschiedenartige
Modifikationen möglich.
So kann beispielsweise gemäß einem Ausführungsbeispiel
der Erfindung auf die Umsetzungsvorrichtung 20 zwischen
dem Crossbar 14 und der ROM-Speichervorrichtung 16 verzichtet
werden, indem entsprechende Umsetzungsvorrichtungen jeweils zwischen
den Prozessoren 10a, 10b, 10c und dem
Crossbar 14 angeordnet werden. Eine solche Anordnung bietet
Vorteile dahingehend, dass vereinfachte Umsetzungseinheiten verwendet
werden können,
beispielsweise, indem eine Scrambling- oder Verwürfelungsfunktion speziell an
die Erfordernisse des jeweiligen Prozessors angepasst wird.
-
Weiterhin
kann in der ROM-Speichervorrichtung auch ein Betriebscode gespeichert
sein, welcher einen Codeabschnitt für den Little-Endian-Modus und
einen Codeabschnitt für
den Big-Endian-Modus
beinhaltet. Indem ein weiterer, typischerweise kurzer, Codeabschnitt
bereitgestellt wird, welcher Endianneutral ist und zur Durchführung einer Überprüfung des
Endian-Modus eines Zugriffs ausgestaltet ist, kann innerhalb des
Betriebscodes eine Endian-Modus-abhängige Verzweigung in den entsprechenden
Codeabschnitt vorgesehen werden. Auch in diesem Fall kann auf eine
Umsetzungsvorrichtung zwischen dem Crossbar 14 und der
ROM-Speichervorrichtung 16 verzichtet werden.
-
Weiterhin
ist es gemäß einem
Ausführungsbeispiel
der Erfindung möglich,
den Betriebscode Endian-neutral abzufassen.
-
Darüber hinaus
ist es gemäß einem
Ausführungsbeispiel
der Erfindung auch möglich,
die Umsetzungsvorrichtungen 20, 22 auf andere
Art und Weise zu steuern als durch das Steuersignal AC. Beispielsweise
kann hierfür
eine Registereinstellung zum Einsatz kommen. Weiterhin ist es möglich, die Umsetzungsvorrichtungen
adressierungsabhängig zu
steuern. Insbesondere könnten
in diesem Fall zwei voneinander verschiedene Adressbereiche vorgesehen
sein, welche jedoch physikalisch demselben Speicherbereich entsprechen.
In einem dieser Adressbereiche wird die Vertauschungsfunktion der Umsetzungsvorrichtung
aktiviert. Auf diese Weise besteht die Möglichkeit, auf die Verwendung
eines gesonderten Signals zur Übermittlung
der Zugriffseigenschaften zu verzichten.
-
Zuletzt
versteht es sich, dass die oben beschriebenen Konzepte nicht auf
den Little-Endian-Modus und den Big-Endian-Modus beschränkt sind,
sondern auf jede Art von unterschiedlichen Byte-Reihenfolgen in
einem Datenwort angewendet werden können. So könnte beispielsweise auch der so
genannte Middle-Endian-Modus
berücksichtigt werden.
Darüber
hinaus ist es auch möglich,
mehr als zwei unterschiedliche Endian-Modi gleichzeitig in der Datenverarbeitungsvorrichtung
zu verwenden.