-
Ein Speicher, wie etwa ein Direktzugriffsspeicher (RAM), ist eine Form von Datenspeicher. Der Speicher kann ein Array von Blöcken aufweisen, die unter Verwendung von Adressbits adressierbar sind, um während einer Lese- oder Schreiboperation auf die Blöcke zuzugreifen. Ein RAM erlaubt den Zugriff auf Daten in einer beliebigen Zufallsreihenfolge.
-
Beispielsweise werden bei Radaranwendungen große Mengen an Daten auf verschachtelte Weise in einen Speicher geschrieben. Diese Daten müssen entschachtelt werden, bevor sie FFT-Beschleunigern (FFT: schnelle Fourier Transformation) zugeführt werden, und dann müssen die Daten wieder vor einer zweiten Phase der FFT-Verarbeitung umgeordnet werden. Daten werden in einem Array von Speicherblöcken auf verschachtelte Weise entlang seiner Dimensionen organisiert.
-
Der Zugriff auf den Speicher erfolgt im Allgemeinen unter Verwendung einer DMA-Steuerung (DMA: Direktspeicherzugriff), die einen Adresszähler aufweist, der um eine programmierbare Sprungbreite von zum Beispiel 2, 4 oder 8 Byte im Speicheradressenraum springt. Dieses Zugriffsverfahren ist insofern nachteilig, als es normalerweise keinen Burst-Zugriff gestattet, bei dem Daten in einer zusammenhängenden Sequenz transferiert werden. Stattdessen sind mehrere Verarbeitungszyklen erforderlich, um eine Lese- oder Schreiboperation abzuschließen.
-
Eine Aufgabe besteht darin, insbesondere eine verbesserte oder effizientere Möglichkeit eines Speicherzugriffs zu schaffen.
-
Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
-
Mindestens eines/eine der folgenden Beispiele und/oder Ausführungsformen können als innovativ betrachtet werden. Sie können mit anderen beschriebenen Aspekten oder Ausführungsformen kombiniert werden. Jede hier beschriebene Ausführungsform oder Ausgestaltung ist nicht unbedingt als gegenüber anderen Ausführungsformen oder Ausgestaltungen bevorzugt oder vorteilhaft aufzufassen.
-
So wird eine Vorrichtung vorgeschlagen umfassend:
- – einen Speicher, der ein Array von Blöcken aufweist, die unter Verwendung von Adressbits adressierbar sind; und
- – eine Permutationsschaltung, die mit dem Speicher gekoppelt und dafür ausgelegt ist, die Adressbits so zu permutieren, dass während eines Speicherzugriffs Blöcke von Daten virtuell umgeordnet werden.
-
Gemäß einer Ausführungsform ist das Array von Blöcken ein eindimensionales Array von Blöcken.
-
Es ist eine Ausgestaltung, dass das Array von Blöcken ein zweidimensionales Array von Blöcken ist.
-
Es ist eine Ausgestaltung, dass die Permutationsschaltung dafür ausgelegt ist, die Adressbits durch Vertauschen von Zeilenadressbits mit Spaltenadressbits zu permutieren.
-
Es ist eine Ausgestaltung, dass das Array von Blöcken ein dreidimensionales Array von Blöcken ist.
-
Es ist eine Ausgestaltung, dass die Permutationsschaltung dafür ausgelegt ist, die Adressbits durch Austauschen von Adressbits von mindestens zwei der drei Dimensionen zu permutieren.
-
Es ist eine Ausgestaltung, dass das Array von Blöcken ein Hyperwürfelarray von Blöcken mit mehr als drei Dimensionen ist.
-
Es ist eine Ausgestaltung, dass jede Dimension des Arrays von Blöcken 2N Blöcke aufweist, wobei N eine Zahl der jeweiligen Dimension ist.
-
Es ist eine Ausgestaltung, dass die Permutationsschaltung Folgendes umfasst:
- – einen Permutationsselektor, der dafür ausgelegt ist, eine Permutation auszuwählen; und
- – einen Multiplexer, der dafür ausgelegt ist, auf der Basis der ausgewählten Permutation einen von mehreren Busmastern auszuwählen, wobei nur einer der mehreren Busmaster ausgewählt wird, um es einer mit dem ausgewählten Busmaster gekoppelten Vorrichtung zu ermöglichen, auf den Speicher zuzugreifen.
-
Es ist eine Ausgestaltung, dass die Auswahl eines ersten der mehreren Busmaster dazu führt, dass die Adressbits permutiert werden, und die Auswahl eines zweiten der mehreren Busmaster dazu führt, dass die Adressbits unpermutiert bleiben.
-
Es ist eine Ausgestaltung, dass die Auswahl des ersten der mehreren Busmaster dazu führt, dass Daten geschrieben oder gelesen werden, und die Auswahl des zweiten der mehreren Busmaster dazu führt, dass Daten das Andere von geschrieben oder gelesen werden.
-
Es ist eine Ausgestaltung, dass die Permutationsschaltung einen Segmentselektor umfasst, der dafür ausgelegt ist, jegliche virtuell umzuordnende Segmente des Speichers auszuwählen, so dass weniger als alle Blöcke von Daten umgeordnet werden.
-
Es ist eine Ausgestaltung, dass die Permutationsschaltung dafür ausgelegt ist, virtuell Blöcke mit einer Größe von 2N Byte umzuordnen, wobei N eine Anzahl niedrigstwertiger Bits der Adressbits, die keiner Permutation unterzogen werden, repräsentiert.
-
Es ist eine Ausgestaltung, dass die Permutationsschaltung eine Nachschlagetabelle von Permutationsoptionen umfasst.
-
Es ist eine Ausgestaltung, dass sich die Permutationsschaltung auf einem Chip befindet und der Speicher ein externer Speicher ist, der sich außerhalb des Chips befindet.
-
Weiterhin wird ein Verfahren vorgeschlagen zum Zugreifen auf einen Speicher, der ein Array von Blöcken aufweist, die unter Verwendung von Adressbits adressierbar sind, wobei das Verfahren Folgendes umfasst:
- – Bereitstellen der Adressbits; und
- – Permutieren der Adressbits dergestalt, dass während eines Speicherzugriffs Blöcke von Daten virtuell umgeordnet werden.
-
Es ist eine Ausgestaltung, dass das Array von Blöcken ein zweidimensionales Array von Blöcken ist und der Permutationsschritt ein Vertauschen von Zeilenadressbits mit Spaltenadressbits umfasst.
-
Es ist eine Ausgestaltung, dass das Array von Blöcken ein dreidimensionales Array von Blöcken ist und der Permutationsschritt ein Vertauschen von Adressbits von mindestens zwei der drei Dimensionen umfasst.
-
Es ist eine Ausgestaltung, dass das Verfahren umfassend: ein Auswählen jeglicher virtuell umzuordnender Segmente des Speichers, so dass weniger als alle Blöcke von Daten umgeordnet werden.
-
Auch wird zur Lösung der obigen Aufgabe eine Vorrichtung vorgeschlagen, umfassend:
- – einen Speicher, der ein Array von Blöcken aufweist, die unter Verwendung von Adressbits adressierbar sind; und
- – ein Permutationsmittel zum Permutieren der Adressbits dergestalt, dass während eines Speicherzugriffs Blöcke von Daten virtuell umgeordnet werden.
-
Die Merkmale der jeweiligen Vorrichtung sind für das jeweiligen Verfahren anwendbar. Ebenso gilt umgekehrt, dass die Merkmale des jeweiligen Verfahrens mit der jeweiligen Vorrichtung kombiniert werden können.
-
Ausführungsformen werden unter Bezugnahme auf die Zeichnungen dargestellt und veranschaulicht. Die Zeichnungen dienen der Veranschaulichung des Grundprinzips, so dass zum Verständnis des Grundprinzips notwendige Aspekte dargestellt werden. Die Zeichnungen sind nicht maßstabgerecht. In den Zeichnungen stehen gleiche Bezugszeichen für gleiche Merkmale.
-
1 zeigt ein Diagramm einer Schaltung gemäß einer beispielhaften Ausführungsform.
-
2A–2C zeigen das Entschachteln eines zweidimensionalen Speichers gemäß einer beispielhaften Ausführungsform.
-
3A–3C zeigen das Entschachteln eines dreidimensionalen Speichers gemäß einer beispielhaften Ausführungsform.
-
4 zeigt das Entschachteln eines hyperwürfel-dimensionalen Speichers gemäß einer beispielhaften Ausführungsform.
-
5A zeigt ein Diagramm einer Schaltung gemäß einer beispielhaften Ausführungsform.
-
5B zeigt ein Diagramm einer Schaltung gemäß einer alternativen beispielhaften Ausführungsform.
-
6A zeigt ein Diagramm einer Schaltung gemäß einer alternativen beispielhaften Ausführungsform.
-
6B zeigt ein Blockschaltbild des Permutationsselektors von 6A gemäß einer beispielhaften Ausführungsform.
-
7 zeigt ein Flussdiagramm für ein Verfahren zum Adressieren eines Speichers gemäß einer beispielhaften Ausführungsform.
-
Die vorliegende Offenbarung betrifft eine Vorrichtung, die einen Speicher umfasst, der ein Array von unter Verwendung von Adressbits adressierbaren Blöcken aufweist, und insbesondere eine Vorrichtung, die einen Speicher und eine Permutationsschaltung umfasst, die mit dem Speicher gekoppelt und dafür ausgelegt ist, die Adressbits so zu permutieren, dass während eines Speicherzugriffs Blöcke von Daten virtuell umgeordnet werden. Durch Permutieren der Adressbits können Daten, die zu/von dem Speicher geschrieben/gelesen werden, effektiv verschachtelt oder entschachtelt werden. Diese Permutation wird am Anfang des Speicherzugriffs konfiguriert und erlaubt die Verwendung von Standard-Burstzugriffen für einen Datenblocktransfer, wodurch die Geschwindigkeit des Transfers beträchtlich erhöht wird.
-
1 zeigt ein Diagramm einer Schaltung 100 gemäß einer beispielhaften Ausführungsform. Genauer gesagt umfasst die Schaltung 100 einen Speicher 110 und eine Permutationsschaltung 120. Der Speicher 110 weist ein (nicht gezeigtes) Array von Blöcken auf, die unter Verwendung von Adressbits A0–A8 adressierbar sind, um Daten in die Blöcke zu schreiben und/oder Daten aus ihnen zu lesen. Die Permutationsschaltung 120 ist mit dem Speicher 110 gekoppelt und dafür ausgelegt, bestimmte der Adressbits A1–A6 so zu permutieren, dass während eines Speicherzugriffs Blöcke von Daten virtuell umgeordnet werden.
-
Eine Standardspeicheradresse ist 32-Bit breit und kann folgendermaßen aussehen: A31 A30 A29 A28 A27 ... A9 A8 A7 A6 A5 A4 A3 A2 A1 A0.
-
Bei einer Adressbitpermutationsoperation werden Gruppen der Speicheradressbit permutiert, wobei eine Gruppe ein oder mehrere Adressbits sein kann. Zum Beispiel können die Gruppen von Adressbits der oben gezeigten Standard-Speicheradresse durch Austauschen der Gruppe von Adressbits A6 A5 A4 mit der Gruppe von Adressbits A1 A0 folgendermaßen permutiert werden: A31 A30 A29 A28 A27 ... A9 A8 A7 A1 A0 A3 A2 A6 A5 A4 (Unterstreichung zur Veranschaulichung hinzugefügt).
-
Ein anderes Beispiel ist in 1 gezeigt, wobei die Gruppe von Adressbits A4 A3 A2 A1 mit der Gruppe von Adressbits A6 A5 ausgetauscht wird, so dass während des Zugriffs des Speichers 110 die Daten virtuell umgeordnet werden. Wie später ausführlicher erläutert werden wird, ist es möglich, Datenarrays als rechteckig, Würfel oder Hyperwürfel zu behandeln und die Größe und Position der „Dimensionen” zu konfigurieren und das Rechteck bzw. den Würfel bzw. den Hyperwürfel auf beliebige Weise zu drehen.
-
2A–2C zeigen das Entschachteln eines zweidimensionalen Speichers 210, der ein Array von 4 × 8 Blöcken aufweist, also insgesamt 32 Blöcke, gemäß einer beispielhaften Ausführungsform.
-
2A zeigt eine lineare Ansicht des Speichers 210A vor Adressbitpermutation. In den Blöcken des Speichers 210A sind Daten gespeichert, die mit der Zeit wie gesammelt verschachtelt werden. Beispielsweise kann der Speicher 210 Variablen speichern, die während eines Herstellungsvorgangs gemessen werden, wobei 0 Feuchtigkeit, 1 Temperatur, 2 Licht und 3 Druck ist. Jede dieser Variablen wird gemessen und dann in den Speicher 210 geschrieben und dann nochmals gemessen und dann in den Speicher 210 geschrieben usw.
-
2B zeigt eine zweidimensionale Ansicht der Adressbit-Permutationsoperation. Als Übersicht repräsentiert der Speicher 210B-1 auf der linken Seite der Figur eine zweidimensionale Ansicht des Speichers 210 vor Adressbitpermutation, die Adressbit-Permutationslogikschaltung 220 repräsentiert die Adressbit-Permutationsoperation und der Speicher 210B-2 auf der rechten Seite der Figur repräsentiert eine zweidimensionale Ansicht des Speichers 210 nach Adressbitpermutation.
-
Der Speicher 210B-1, der keiner Adressbitpermutation unterzogen wurde, repräsentiert den Speicher 210, während die Daten tatsächlich gespeichert werden, das heißt, auf verschachtelte Weise. Der Speicher 210 wird im Allgemeinen quer eine Zeile auf einmal geschrieben/gelesen, das heißt zuerst in der x-Achsenrichtung und dann in der y-Achsenrichtung. Genauer gesagt werden die Blöcke von Zeile 0 quer geschrieben/gelesen (zuerst Feuchtigkeit 0, dann Temperatur 1, dann Licht 2 und dann Druck 3), dann werden Blöcke von Zeile 1 quer geschrieben/gelesen (zuerst Feuchtigkeit 0, dann Temperatur 1, dann Licht 2 und dann Druck 3) usw. An jedem Beschreiben/Lesen einer Zeile ist eine Kombination verschiedener Arten von Daten beteiligt, und somit werden in diesem Fall die Daten auf verschachtelte Weise geschrieben/gelesen.
-
Die Adressbit-Permutationslogikschaltung 220 permutiert die Adressbits durch Austauschen der x-Adressbits A1 A0 mit den y-Adressbits A4 A3 A2, so dass die Zeilen x1 x0 mit den Spalten y2 y1 y0 vertauscht werden. Das Ergebnis ist, dass die Daten wie im Speicher 210B-2 dargestellt organisiert zu sein scheinen.
-
Der Speicher 210B-2 zeigt, wie die Blöcke virtuell organisiert werden, wenn Speicherzugriff nach Adressbitpermutation erfolgt, das heißt, die Blöcke scheinen auf eine entschachtelte Weise organisiert zu sein. Wie oben erwähnt, wird der Speicher 210 im Allgemeinen quer eine Zeile auf einmal geschrieben/gelesen, das heißt, zuerst in der x-Achsenrichtung und dann in der y-Achsenrichtung. Wenn der Speicher 210B-2 auf diese Weise gelesen wird, werden die Blöcke von Zeile 0 quer gelesen (nur Feuchtigkeitsblöcke 0), dann werden Blöcke der Zeile x1 quer gelesen (nur Temperaturblöcke 1) usw. Daten werden somit auf entschachtelte Weise gelesen, so dass Datenblöcke desselben Typs effizienter der Reihe nach unter Verwendung eines Burst-Zugriffsverfahrens gelesen werden können.
-
Ein Ergebnis der Adressenpermutation ist, dass, obwohl der physische Speicher 210 tatsächlich zuerst in der x-Achsenrichtung und dann in der y-Achsenrichtung gelesen wird, der Effekt darin besteht, dass die Reihenfolge, in der die Dimensionen gelesen werden, anders zu sein scheint. Das heißt, der Speicher 210 scheint stattdessen zuerst in der y-Achsenrichtung und dann in der x-Achsenrichtung gelesen zu werden.
-
2C zeigt den Speicher 210C nach Adressenpermutation, außer dass statt eine zweidimensionale Ansicht zu sein, wie im Fall des Speichers 210B-2, der Speicher 210C eine lineare Ansicht ist. Im Gegensatz zu dem in 2A gezeigten Speicher 210A sind die im Speicher 210C gezeigten Blöcke entschachtelt. Genauer gesagt wird, statt dass Blöcke einer Art zwischen anderen Arten von Blöcken verstreut sind, auf Blöcke eines selben Typs so zugegriffen, als seien sie zusammen gruppiert; Feuchtigkeitsblöcke 0 werden zusammen gruppiert, Temperaturblöcke 1 werden zusammen gruppiert, Lichtblöcke 2 werden zusammen gruppiert und Druckblöcke 3 werden zusammen gruppiert.
-
3A–3C zeigen das Entschachteln eines dreidimensionalen Speichers 310 mit einer Größe von 4 × 8 × 2 Blöcken, also insgesamt 64 Blöcken, gemäß einer beispielhaften Ausführungsform.
-
3A zeigt eine lineare Ansicht des Speichers 310A vor Adressenpermutation. In den Blöcken des Speichers 310A sind Daten gespeichert, die auf eine ähnliche Weise wie beim Speicher 210A von 2A verschachtelt werden. Der Unterschied zwischen Speicher 210A und Speicher 310A ist, dass Speicher 310A eine zusätzliche Dimension aufweist, die z-Dimension. Statt einer Seite von Blöcken weist der Speicher 310A zwei Seiten von Blöcken auf, die durch z0 bzw. z1 repräsentiert werden.
-
3B zeigt eine dreidimensionale Ansicht der Adressenpermutationsoperation. Als Übersicht repräsentiert der Speicher 310B-1 auf der linken Seite der Figur eine dreidimensionale Ansicht des Speichers 310 vor Adressenpermutation, die Adressbit-Permutationslogikschaltung 320 repräsentiert die Adressbit-Permutationsoperation und der Speicher 310B-2 auf der rechten Seite der Figur repräsentiert die dreidimensionale Ansicht des Speichers 310 nach Adressbitpermutation.
-
Der Speicher 310B-1, der keiner Adressbitpermutation unterzogen wurde, repräsentiert den Speicher 310, so wie die Daten tatsächlich gespeichert werden, das heißt, auf verschachtelte Weise. Blöcke von Zeile 0 werden quer geschrieben/gelesen (zuerst Blöcke der Feuchtigkeit 0, dann Temperatur 1, dann Licht 2 und dann Druck 3). Dann werden Blöcke von Zeile 1 quer geschrieben/gelesen (mit einer Mischung von Blöcken von Feuchtigkeit 0, Temperatur 1, Licht 2 und Druck 3) usw. Jedes Schreiben/Lesen einer Zeile führt zu einer Kombination verschiedener Arten von Daten, und somit werden in diesem Fall die Daten auf verschachtelte Weise geschrieben/gelesen.
-
Die Adressbit-Permutationslogikschaltung 320 permutiert die Adressbits durch Vertauschen von Gruppen von Adressbits, wie in der Figur gezeigt, um zu dem Speicher 310B-2 zu führen. Das Ergebnis ist, dass die Daten wie in dem Speicher 310B-2 dargestellt organisiert zu sein scheinen.
-
Der Speicher 310B-2 zeigt, wie die Blöcke virtuell organisiert werden, wenn der Speicherzugriff nach Adressbitpermutation erfolgt, das heißt, die Blöcke scheinen auf entschachtelte Weise organisiert zu sein. Ähnlich wie bei dem Speicher 210 von 2 werden Blöcke quer eine Zeile auf einmal gelesen, das heißt, über die Zeile x0 der Seite z0 (die nur Feuchtigkeitsblöcke 0 umfasst), dann über Zeile x1 von Seite z0 (die nur Temperaturblöcke 1 umfasst) usw. Der Unterschied bezüglich Speicher 210B-2 von 2B besteht jedoch darin, dass, nachdem die Seite z0 gelesen wird, die Seite z1 danach auf ähnliche Weise gelesen wird. Daten werden auf entschachtelte Weise gelesen, so dass Datenblöcke einer selben Art effizienter der Reihe nach unter Verwendung eines Burst-Zugriffsverfahrens gelesen werden können.
-
Ein Ergebnis der Adressbitpermutation ist, dass, obwohl der physische Speicher 310 tatsächlich zuerst in der x-Achsenrichtung gelesen wird, und dann in der y-Achsenrichtung und dann in der z-Achsenrichtung, der Effekt ist, dass die Reihenfolge, in der die Dimensionen gelesen werden, anders zu sein scheint. Der Speicher 310 scheint zuerst in der y-Achsenrichtung, dann der z-Achsenrichtung und dann der x-Achsenrichtung gelesen zu werden.
-
3C zeigt den Speicher 310C nach Adressenpermutation wie im Fall des Speichers 310B-2, außer dass statt eine dreidimensionale Ansicht zu sein, der Speicher 310C eine lineare Ansicht ist. Im Gegensatz zu dem in 3A dargestellten Speicher 310A sind die Blöcke, wie Speicher 310C dargestellt, entschachtelt. Genauer gesagt, werden Feuchtigkeitsblöcke 0 zusammen gruppiert, Temperaturblöcke zusammen gruppiert, Lichtblöcke zusammen gruppiert und Druckblöcke 3 zusammen gruppiert.
-
4 zeigt Entschachtelung eines (nicht gezeigten) Hyperwürfelspeichers mit mehr als drei Dimensionen gemäß einer beispielhaften Ausführungsform. Bei dieser beispielhaften Ausführungsform besitzt der Speicher vier Dimensionen mit einer Größe von 16 × 8 × 4 × 2 Blöcken, also insgesamt 1024 Blöcken. Die Adressbit-Permutationslogikschaltung 420, die die Adressbitpermutationsoperation repräsentiert, ist gezeigt. Der Speicher ist aufgrund der Schwierigkeit der Darstellung eines Arrays von Blöcken mit mehr als drei Dimensionen auf Papier nicht gezeigt.
-
Adressbit-Permutationslogikschaltung 420 permutiert die Adressbits durch Vertauschen von Gruppen von Adressbits wie gezeigt. Nach Durchsicht der obigen Beschreibungen des in 2A–2C gezeigten zweidimensionalen Beispiels und des in 3A–3C gezeigten dreidimensionalen Beispiels sind für Fachleute die Einzelheiten dieses vierdimensionalen Beispiels erkennbar. Die Adressbit-Permutationslogikschaltung 420 wird deshalb hier nicht ausführlicher besprochen, der Kürze halber und um Aspekte der Offenbarung nicht unnötigerweise zu verschleiern.
-
Es ist optimal, wenn der Speicher so bemessen ist, dass sein Array 2N Blöcke aufweist, wobei N eine Zahl der jeweiligen Dimension ist. Zum Beispiel hat das oben beschriebene vierdimensionale Array eine Größe von 16 × 8 × 4 × 2 Blöcken, also 24 × 23 × 22 × 21, wobei vier die Zahl der vierten Dimension, drei die Zahl der dritten Dimension ist usw. Es ist möglich, dass eine oder mehrere Dimensionen eines Arrays von Blöcken eine andere Größe als 2N aufweisen, es können aber zusätzliche Betrachtungen notwendig sein.
-
5A zeigt ein Diagramm einer Schaltung 500A gemäß einer beispielhaften Ausführungsform. Genauer gesagt zeigt die Schaltung 500A eine direkt mit dem Speicher 510 gekoppelte Adressbit-Permutationsschaltung 520. CPU1 552, CPU 554, DMA 556 und das Kommunikationsmodul 558 teilen sich den Zugriff auf den Speicher 510, wobei nur einer dieser Vorrichtungen auf einmal Zugriff gewährt wird. Der Zugriff wird durch das Bussystem ausgeführt, das aus Bus-Masterschnittstellen 532, 534, 536, 538, dem Bus-Master 540 und der Bus-Slave-Schnittstelle 530 besteht. Das Bussystem umfasst Datenleitungen, Adressenleitungen und Steuerleitungen. CPU1 552, CPU 554, DMA 556 und das Kommunikationsmodul 558 besitzen jeweils ihre eigene Bus-Master-Schnittstelle 532, 534, 536, 538 zum Senden von Steuersignalen C und Adressbits A, die im Speicher 510 spezifische Blöcke, auf die zugegriffen werden soll, identifizieren, zu der Bus-Slave-Schnittstelle 530. Bei dieser beispielhaften Ausführungsform steuern die Bus-Master-Schnittstellen 532, 534, 536, 538 die Adressenleitungen an. Daten D können in beiden Richtungen zwischen jeder der Vorrichtungen (CPU1 552, CPU2 554, DMA 556 und Kommunikationsmodul 558) und dem Speicher 510 übertragen werden, wobei Daten D in spezifische Speicherblöcke, die durch die Adressbits A identifiziert werden, geschrieben bzw. daraus gelesen werden.
-
5B zeigt ein Diagramm der Schaltung 500B gemäß einer alternativen beispielhaften Ausführungsform. Genauer gesagt zeigt die Schaltung 500B alternative Orte für eine Adressbit-Permutationsschaltung verglichen mit ihrem Ort in 5A. Die Adressbit-Permutationsschaltung 524 ist direkt mit DMA 556 gekoppelt, so dass DMA 556 seine eigenen Adressbits permutieren kann. Als Alternative kann sich die Adressbit-Permutationsschaltung 524 in dem DMA 556 befinden. Mittels einer externen Buseinheit 562 außerhalb des Chips von der Adressbit-Permutationsschaltung 516 ist eine andere Adressbit-Permutationsschaltung 526 mit einem externen Speicher 560 gekoppelt.
-
Obwohl die Adressbit-Permutationsschaltung als sich an bestimmten Orten oder in bestimmten Quantitäten in der Schaltung 500A und 500B befindend beschrieben wurde, soll die Offenbarung in dieser Hinsicht nicht beschränkt sein. Die Adressbit-Permutationsschaltung kann an einem beliebigen geeigneten Ort und in einer beliebigen geeigneten Quantität sein.
-
6A zeigt ein Diagramm einer Schaltung 600 gemäß einer beispielhaften Ausführungsform. Genauer gesagt umfasst die Schaltung 600 einen Speicher 610 und eine Adressbit-Permutationsschaltung 620. Wie oben mit Bezug auf 5A und 5B besprochen, wird Speicher 610 durch Datenleitungen, Steuerleitungen und Adressenleitungen mit dem Rest der Schaltung 600 gekoppelt. Die Anzahl der gezeigten Adressenleitungen ist neun, und die Anzahl der gezeigten Bus-Master ist zwei, aber die Offenbarung ist hinsichtlich beider dieser Aspekte nicht beschränkt.
-
Die Adressbit-Permutationsschaltung 620 umfasst einen Multiplexer 622, einen Permutationsselektor 624 und einen optionalen Segmentselektor 626 (nachfolgend mit Bezug auf 6B beschrieben). Der Multiplexer 622 empfängt von Adressenleitungen Adressbits A6 A5 A4 A3 A2 A1, die die Blöcke identifizieren, in die Daten geschrieben bzw. aus denen Daten gelesen werden sollen. Der Permutationselektor 624 ist dafür ausgelegt, den Multiplexer 622 unter Verwendung einer Permutationszahl zu steuern, die eine bestimmte Permutations-, Busmaster- und Lese-/Schreiboperation identifiziert, auf der Basis von Steuerinformationen, die er über Steuerleitungen empfängt. Es ist jede Kombination von Permutation-, Busmaster- und Lese-/Schreiboperation möglich.
-
Während eines Speicherzugriffs wird nur einer der Bus-Master ausgewählt, um es einer damit gekoppelten Vorrichtung zu ermöglichen, den Speicher 610 zu adressieren. Bei dieser konkreten beispielhaften Ausführungsform wählt der Multiplexer 622 zwischen dem Busmaster y zugewiesener Permutation x und dem Busmaster 0 zugewiesener Permutation 0 aus. Wie oben besprochen, können Daten in einer Reihenfolge geschrieben und in einer anderen Reihenfolge gelesen werden. Genauer gesagt, können Daten zuerst auf verschachtelte Weise unter Verwendung des Busmasters y mit unpermutierten Adressbits auf verschachtelte Weise geschrieben werden und dann unter Verwendung des Busmasters 0 durch Permutieren der Adressbits auf entschachtelte Weise aus Speicher gelesen werden.
-
Die Adressbit-Permutationsschaltung 620 ist dafür ausgelegt, Blöcke von Daten, die durch eine Adresse mit einer Größe von 2N Byte identifiziert werden, virtuell umzuordnen, wobei N eine Anzahl höchstwertiger Bit der Adressbits repräsentiert, die nicht Permutation unterzogen werden. Mit Bezug auf 6 wird A0 keiner Permutation unterzogen, und somit ist die Größe jedes der Datenblöcke 21 Byte oder 16 Bit, wobei 1 Byte 8 Bit ist. Würden A1 und A1 keiner Permutation unterzogen, wäre die Größe jedes der Datenblöcke 22 Byte oder 32 Bit. Die Datenblockgrößen können deshalb 8 Bit, 16 Bit, 32 Bit, 64 Bit usw. sein.
-
6B zeigt ein Blockschaltbild des Permutationsselektors 624 von 6A gemäß einer beispielhaften Ausführungsform. Der Permutationsselektor 624 kann eine bestimmte Permutation auswählen und auf eine Weise, die entweder dynamisch oder statisch ist, eine entsprechende Permutationszahl ausgeben.
-
Während dynamischer Auswahl erfolgt eine Permutationsauswahl für jeden Speicherzugriff. Die Auswahleinheit B wählt Informationen aus der Auswahleinheit A aus; die Auswahleinheit A wählt eine bestimmte Permutation, einen bestimmten Busmaster und eine bestimmte Lese-/Schreiboperation aus einer Nachschlagetabelle gemäß Busmaster-Tag- und Leser-/Schreibsteuerinformationen aus, die über Steuerleitungen empfangen werden. Es gibt viele Arten zum Organisieren von Permutationsoptionen in der Nachschlagetabelle, und somit ist die Offenbarung nicht auf die in 6B gezeigte bestimmte Tabelle beschränkt.
-
Als Alternative erfolgt während statischer Auswahl dieselbe Permutationsauswahl nicht für jeden Speicherzugriff, sondern bleibt stattdessen dieselbe. Der Permutationsselektor 624 wählt statisch eine Permutation über Software unter Verwendung eines statischen Steuerbit(s) aus. In diesem Fall wählt die Auswahleinheit B SW-Permutation aus, wobei in diesem Fall die Auswahleinheit A für die Busmaster-Tag-, Lese-/Schreibsteuerinformationen und die Nachschlagetabelle ignoriert wird.
-
Die Permutationsauswahl-Zahleinstellung wird im Allgemeinen für alle Speicherblöcke in dem Speicher 610 gespiegelt, weil sich die Adressen wiederholen. Dieser Spiegelungseffekt ist nicht immer erwünscht. Es kann der Fall sein, dass in bestimmten Fällen Adressbits nur für bestimmte Segmente des Speichers permutiert werden sollen, wobei ein Segment als ein oder mehrere Speicherblöcke definiert wird. Ein (in 6A gezeigter) Segmentselektor 626 wählt deshalb gegebenenfalls etwaige während des Speicherzugriffs einer Adressbitpermutation zu unterziehende Segmente aus und der Zugriff auf die verbleibenden Segmente erfolgt in ihrer Vorgabereihenfolge. Diese Segmentauswahl erfolgt unter Verwendung der N höchstwertigen Bit (MSB), wie etwa A7 und A8, wie in 6A gezeigt.
-
7 zeigt ein Flussdiagramm für ein Verfahren zum Adressieren eines Speichers mit einem Array von Blöcken, die durch Verwendung von Adressbits adressierbar sind, gemäß einer beispielhaften Ausführungsform.
-
Anfänglich werden im Schritt 710 Adressbits bereitgestellt.
-
Im Schritt 730 werden die Adressbits so permutiert, dass während eines Speicherzugriffs Blöcke von Daten virtuell umgeordnet werden.
-
Gegebenenfalls werden im Schritt 720 etwaige virtuell umzuordnende Speichersegmente so ausgewählt, dass weniger als alle der Blöcke von Daten umgeordnet werden. Wie oben mit Bezug auf 6B besprochen, verhindert dieses Auswahlmerkmal eine Spiegelung der Permutation für alle Speicherblöcke im gesamten Speicher.
-
Bei vielen Anwendungen wird Datenverschachtelung/-entschachtelung verwendet. Zu Beispielen gehören Radaranwendungen, wobei vielleicht acht ADC im Reigenverfahren gelesen werden. Die Daten aus jedem der ADC werden verschachtelt (z. B. 12345678 12345678 12345678 12345678) und müssen vor FFT-Verarbeitung entschachtelt werden (z. B. 1111 2222 3333 4444 5555 6666 7777 8888). Vor einer zweiten FFT-Verarbeitung müssen Daten dann nochmals umgeordnet werden. Die Datenumordnung wird durch Permutieren der Adressbits des Speichers erreicht. Das Umordnen von Daten auf diese Weise vermeidet Adressensprünge und -inkremente, die mehrere Verarbeitungszyklen erfordern. Der Speicher kann deshalb zur Einspeisung in FFT-Beschleuniger unter Verwendung von DMA mit Burstzugriff effizienter kopiert werden.
-
Obwohl das Obige in Verbindung mit beispielhaften Ausführungsformen beschrieben wurde, versteht sich, dass der Ausdruck „beispielhaft” lediglich als Beispiel gemeint ist und nicht als Bestes oder Optimales. Dementsprechend soll die Offenbarung Alternativen, Modifikationen und Äquivalente abdecken, die in den Schutzumfang der Offenbarung aufgenommen werden können.
-
Obwohl hier spezifische Ausführungsformen dargestellt und beschrieben wurden, versteht sich für Durchschnittsfachleute, dass vielfältige alternative und/oder äquivalente Implementierungen die gezeigten und beschriebenen spezifischen Ausführungsformen ersetzen können, ohne vom Schutzumfang der vorliegenden Anmeldung abzuweichen. Die vorliegende Anmeldung soll jegliche Anpassungen oder Abwandlungen der hier besprochenen spezifischen Ausführungsformen abdecken.