DE60118622T2 - Benutzer-konfigurierbares on-chip speichersystem - Google Patents

Benutzer-konfigurierbares on-chip speichersystem Download PDF

Info

Publication number
DE60118622T2
DE60118622T2 DE60118622T DE60118622T DE60118622T2 DE 60118622 T2 DE60118622 T2 DE 60118622T2 DE 60118622 T DE60118622 T DE 60118622T DE 60118622 T DE60118622 T DE 60118622T DE 60118622 T2 DE60118622 T2 DE 60118622T2
Authority
DE
Germany
Prior art keywords
fpga
address
memory
block
rams
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 - Lifetime
Application number
DE60118622T
Other languages
English (en)
Other versions
DE60118622D1 (de
Inventor
R. Ahmad San Jose ANSARI
M. Stephen Saratoga DOUGLASS
R. Mehul San Jose VASHI
P. Steven Boulder YOUNG
L. Prasad Milpitas SASTRY
Robert Castro Valley YIN
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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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
Priority claimed from US09/757,760 external-priority patent/US6522167B1/en
Application filed by Xilinx Inc filed Critical Xilinx Inc
Application granted granted Critical
Publication of DE60118622D1 publication Critical patent/DE60118622D1/de
Publication of DE60118622T2 publication Critical patent/DE60118622T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft im Allgemeinen Speichersystemdesign und insbesondere ein Speichersystem, das von Benutzern konfiguriert werden kann, um die Größe und Leistung des Speichersystems zu optimieren.
  • HINTERGRUND DER ERFINDUNG
  • Programmierbare integrierte Schaltungen (IC) sind ein gut bekannter Typ von integrierten Schaltungen, die von einem Benutzer programmiert werden können, um spezifizierte Logikfunktionen auszuführen. Ein Typ eines programmierbaren IC, das Field Programmable Gate Array (FPGA), ist aufgrund einer überlegenen Kombination von Kapazität, Flexibilität und Kosten sehr populär. Ein FPGA enthält gewöhnlich eine Gruppierung von konfigurierbaren Logikblöcken (CLBs), umgeben von einem Ring von programmierbaren Ein-/Ausgabeblöcken (IOBs). Die CLBs und IOBs sind durch eine programmierbare Verschaltungsstruktur verschaltet. Die CLBs, IOBs und Verschaltungsstruktur werden gewöhnlich durch Laden eines Stroms von Konfigurationsdaten (Bitstrom) in interne Konfigurationsspeicherzellen programmiert, die definieren, wie die CLBs, IOBs und Verschaltungsstruktur konfiguriert werden. Der Konfigurationsbitstrom kann von einem externen Speicher (z.B. einem externen PROM) gelesen werden. Die kollektiven Zustände der individuellen Speicherzellen bestimmen dann die Funktion des FPGAs.
  • Im Verlauf der Verbesserung der Verarbeitungstechnologie können mehr und mehr CLBs, IOBs und Verschaltungsstrukturen in einem FPGA hergestellt werden. Seit kurzem ist es möglich, ein gesamtes Datenverarbeitungssystem (enthaltend eine zentrale Steuereinheit, Speicher und verschiedene Controller) in ein FPGA zu bauen. In einigen Fällen werden nicht alle CLBs, IOBs und Verschaltungsstrukturen in dem FPGA zum Aufbauen des Datenverarbeitungssystems verwendet und einige davon können für andere Anwendungen verwendet werden.
  • Eine der wichtigsten Ressourcen in einem Datenverarbeitungssystem ist Speicher. Viele FPGAs sind mit Blöcken von Direktzugriffsspeichern (RAMs) versehen, die jeweils tausende von Speicherzellen aufweisen (bezeichnet als „Block-RAMs"). Diese Blöcke können in verschiedene Konfigurationen geordnet werden. Als Beispiel kann ein Block-RAM eine Kapazität von 16 Kilobit haben. Dieses Block-RAM kann von einem Benutzer so angeordnet werden, dass es eine Adressentiefe von entweder 16K, 8K, 4K, 2K, 1K und 0,5K mit der korrespondierenden Zahl von Bits pro Adresse als 1, 2, 4, 8, 16 bzw. 32 hat. Ein Benutzer kann auch eine Zahl von Blöcken kombinieren, um die Gesamtgröße eines Speichersystems zu erhöhen. Mehr Informationen über Block-RAMs sind zu finden in U.S.-Patent Nr. 5.933.023 mit dem Titel „FPGA Architecture Having RAM Blocks with Programmable Word Length and Width and Dedicated Address and Data Lines", übertragen an Xilinx, Inc. Dieses Patent ist hier eingefügt durch Literaturhinweis.
  • Im Allgemeinen ist es wünschenswert, einem Datenverarbeitungssystem zu gestatten, Zugriff auf so viel Speicher wie möglich zu haben. Einer der Gründe ist, dass einige Softwaremodule eine Mindestgröße von Speicher zur Ausführung erfordern. Ein anderer Grund ist, dass es manchmal möglich ist, die Datenverarbeitung zu beschleunigen, indem einer Task mehr Speicher zugewiesen wird. Andererseits erfordert eine große Speichergröße eine große Anzahl von Block-RAMs. Mit der Hinzufügung jedes Block-RAMs wird die Speicherdatenzugriffszeit des Speichers verlängert. Ein Weg zur Lösung dieses Problems besteht darin, Verzögerungen zwischen einer Anforderung auf Speicherzugriff und der Gewährung des Zugriffs einzuführen. In anderen Worten, es müssen „Wartezustände" eingefügt werden. Als ein Ergebnis ist die Leistung des Datenverarbeitungssystems an der Speicherschnittstelle reduziert.
  • Ein anderes Problem bei der Reservierung einer großen Speichergröße für das Datenverarbeitungssystem ist, dass die Gesamtzahl von Block-RAMs in einem FPGA begrenzt ist. Zusätzlich zum Datenverarbeitungssystem können andere Logikmodule in dem FPGA mehr Speicher benötigen. Wenn alle oder die meisten der Block-RAMs dem Datenverarbeitungssystem zugeordnet werden, kann das Design von anderen Logikmodulen darunter leiden.
  • Die optimale Speichergröße und Zahl von Wartezuständen variiert bei unterschiedlichen Designs. Beispielsweise tendieren Echtzeitanwendungen dahin, schnelle Ausführung zu benötigen, weil das Datenverarbeitungssystem die Berechnungen innerhalb einer kurzen Zeitperiode abschließen muss. Daher ist es wünschenswert, Wartezustände zu eliminieren. Andererseits kann es vorteilhaft sein, ein Allzweckdesign in die Lage zu versetzen, viele Softwareanwendungen auszuführen. Daher wäre es vorteilhaft, mehr Speicher in das Datenverarbeitungssystem aufzunehmen. Um Benutzern die größte Designflexibilität zu geben, ist es wünschenswert, den Benutzern zu gestatten, das Speichersystem zu Erzielung einer optimalen Leistung zu konfigurieren.
  • US-A-5.737.765 betrifft ein elektronisches System wie ein Computersystem, in dem der Zugriff auf Konfigurationsregister, die von einem Speicher-Controller verwendet werden, selektiv ermöglicht wird. Das offenbarte System enthält eine einzelne Integrierte-Schaltungs-Mikroprozessoreinheit, die einen Mikroprozessorkern, eine Speicher-Controller-Schaltung, eine Busbrückenschaltung und Konfigurationsregister enthält. Dieses System befasst sich nicht mit programmierbaren Speicherstrukturen.
  • US-A-5.550.782 betrifft eine programmierbare Gatteranordnungs-Integrierte-Schaltung, die eine Zahl von programmierbaren Logikmodulen aufweist, die in einer Vielzahl von Gatteranordnungsblöcken miteinander gruppiert sind. Die Gatteranordnungsblöcke sind auf der Schaltung in einer zweidimensionalen Anordnung angeordnet. Ein Leiternetz ist für die Verschaltung von jedem beliebigen Logikmodul mit jedem anderen beliebigen Logikmodul vorgesehen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Nach einem ersten Aspekt der vorliegenden Erfindung ist ein vom Benutzer programmierbarer Speicher-Controller vorgesehen, der mit einem Prozessor gekoppelt ist und einen oder mehrere Blöcke von Direktzugriffsspeicher (RAM) steuert, wobei der Prozessor einen ersten Satz von Adressenzeilen generiert, der Controller umfassend:
    einen vom Benutzer programmierbaren Adressen-Manager, der einen zweiten Satz von Adressenzeilen von dem ersten Satz von Adressenzeilen generiert, wobei der zweite Satz von Adressenzeilen eine programmierbare Tiefe aufweist und mit dem einen oder den mehreren RAM-Blöcken gekoppelt ist; und
    einen vom Benutzer programmierbaren Wartezustands-Manager, der Wartezustände basierend auf der Tiefe generiert.
  • Die vorliegende Erfindung stellt ein Auf-Chip-Datenverarbeitungssystem bereit, bestehend aus einem vom Benutzer konfigurierbaren Auf-Chip-Speichersystem und einem Auf-Chip-Prozessorkern. Das Speichersystem besteht aus mindestens einem Speicher-Controller, Block-RAMs und Speicherung von Designwerten, die mit dem Speichersystem in Zusammenhang stehen. Die Zahl der Block-RAMs und die Zahl der Adressenzeilen (d.h. Adressentiefe), die mit den Block-RAMs assoziiert sind, kann von Benutzern ausgewählt und konfiguriert werden. Ein Vorteil dieser Erfindung ist, dass nur die erforderliche Größe von Block-RAMs, die von dem Prozessorkern verwendet werden, dem Datenverarbeitungssystem zugewiesen wird. Alle die Block-RAMs, die nicht zugewiesen sind, können von anderen Auf-Chip-Anwendungen verwendet werden. Als ein Ergebnis optimiert sie die Verwendung einer wertvollen Ressource: Block-RAMs.
  • Eine Ausführungsform des Speicher-Controllers enthält einen Adressen-Manager, der einige der Adressenzeilen, die von dem Prozessorkern ausgehen, deaktivieren kann. Die Zahl der deaktivierten Adressenzeilen ist vom Benutzer konfigurierbar. Die Deaktivierung kann durch eine Kombination von Demultiplexern, Multiplexern und Speicherzellen, die vom Benützer bereitgestellte Informationen speichern, ausgeführt werden.
  • Benutzer können den Speicher-Controller der vorliegenden Erfindung anwenden, um die Zahl der Wartezustände des Speichersystems einzustellen. Um zu gewährleisten, dass das Speichersystem einwandfrei funktioniert, muss die Zahl der Wartezustände so ausgewählt werden, dass die Block-RAMs Zeit haben, auf eine Anforderung zu reagieren. Die vorliegende Erfindung enthält außerdem einen Algorithmus, der Benutzern gestattet, die optimale Kombination von Wartezuständen und assoziierter Adressentiefe auszuwählen.
  • Die Zahl der Wartezustände und/oder die Zahl der Adressenzeilen kann vor der Konfiguration eines FPGAs eingestellt werden. In einer anderen Ausführungsform können eine oder beide dieser zwei Parameter durch Programmierungsbefehle des Prozessorkerns eingestellt werden. Das Speichersystem der vorliegenden Erfindung kann außerdem auf ein Datenverarbeitungssystem angewandt werden, das separate Befehls- und Datenseiten aufweist. In diesem System ist ein Befehlsspeicher-Controller mit Block-RAMs assoziiert, die zum Speichern von Befehlen verwendet werden, und ein Datenspeicher-Controller ist mit Block-RAMs assoziiert, die zum Speichern von Daten verwendet werden. In einer Ausführungsform können die Befehls- und Daten-Block-RAMs physikalisch dieselben sein. In diesem Fall kann es wünschenswert sein, Speichermanagementeinheit-(MMU)-Anordnungen im Allgemeinen für Speicherschutz zu verwenden.
  • Das Datenverarbeitungssystem kann zwei Arten von Block-RAMs haben, lokale und globale. Lokale Block-RAMs haben eine direkte Verbindung zu dem Prozessorkern, während die globalen Block-RAMs durch die Verschaltungsstruktur der programmierbaren Logikvorrichtung mit dem Prozessorkern verbunden sind. Als ein Ergebnis sind die Verzögerungen beim Zugriff auf die lokalen Block-RAMs viel geringer als die der globalen Block-RAMs. Daher ist die Zahl der Wartezustände der lokalen Block-RAMs kleiner als die der globalen Block-RAMs.
  • Die obige Zusammenfassung der vorliegenden Erfindung beabsichtigt nicht, jede offenbarte Ausführungsform der vorliegenden Erfindung zu beschreiben. Die Figuren und ausführlichen Beschreibungen, die folgen, stellen zusätzliche beispielhafte Ausführungsformen und Aspekte der vorliegenden Erfindung bereit.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird in der ausführlichen Beschreibung und den folgenden Figuren, in denen sich dieselben Bezugszeichen auf ähnliche Elemente beziehen, anhand von Beispielen und nicht anhand von Beschränkungen erläutert.
  • 1A zeigt ein Blockdiagramm, das ein FPGA-System der vorliegenden Erfindung darstellt.
  • 1B zeigt ein Blockdiagramm, das einen Teil des FPGA-Systems von 1A darstellt.
  • 2 zeigt ein schematisches Diagramm, das ein Datenverarbeitungssystem der vorliegenden Erfindung darstellt, das auf einem FPGA implementiert ist.
  • 3A und 3B zeigen ein Blockdiagramm eines vom Benutzer konfigurierbaren Auf-Chip-Speicher-Controllers der vorliegenden Erfindung.
  • 4 zeigt ein Ablaufdiagramm eines Algorithmus der vorliegenden Erfindung zur Auswahl von Größen von Block-RAMs und assoziierter Wartezustände des Auf-Chip-Speicher-Controllers der vorliegenden Erfindung.
  • 5 zeigt ein Ablaufdiagramm, das die Verwendung des Ergebnisses des Ablaufdiagramms in 4 zum Aufbau eines Datenverarbeitungssystems der vorliegenden Erfindung darstellt.
  • 6 zeigt ein Ablaufdiagramm, das die Verwendung eines Prozessorkerns zur Konfiguration des Speicher-Controllers der vorliegenden Erfindung darstellt.
  • 7 zeigt ein schematisches Diagramm eines Datenverarbeitungssystems der vorliegenden Erfindung, das separate Befehls- und Datenseiten aufweist.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung betrifft den Aufbau eines Datenverarbeitungssystems unter Verwendung eines programmierbaren ICs. In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargestellt, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Es ist jedoch für einen Fachmann ersichtlich, dass die vorliegende Erfindung ohne diese spezifischen Einzelheiten ausgeführt werden kann. In anderen Fällen wurden gut bekannte Merkmale nicht ausführlich beschrieben, um zu vermeiden, dass die vorliegende Erfindung unverständlich wird.
  • 1A zeigt ein Blockdiagramm, das ein System darstellt, das ein FPGA 20 und einen assoziierten externen Speicher 12 enthält. FPGA 20 umfasst einen Konfigurationsspeicher 24, der aus einer Vielzahl von Bits besteht. Jedes Konfigurationsbit definiert den Zustand einer statischen Speicherzelle, die einen Teil des FPGAs wie ein Funktions-Nachschlagtabellen-Bit, einen Multiplexereingang oder einen Verschaltungs-Verbindungstransistor steuert. Konfiguration ist der Prozess des Ladens von designspezifischen Daten zum Definieren der funktionalen Operation der internen Blöcke und ihrer Verschaltungen, indem diese Werte in dem Konfigurationsspeicher gespeichert werden. FPGA 20 umfasst weiter einen ersten Abschnitt 26, der unter Verwendung von Bits im Konfigurationsspeicher 24 als ein Datenverarbeitungssystem der vorliegenden Erfindung konfiguriert werden kann. Das Datenverarbeitungssystem enthält einen Prozessorkern, einen konfigurierbaren Speicher-Controller, Block-RAMs und andere zusätzliche Komponenten. FPGA 20 enthält optional einen zweiten Abschnitt 28, der unter Verwendung von Bits im Konfigurationsspeicher 24 zur Ausführung von anderen Logik- oder Speicherfunktionen konfiguriert werden kann. Ein Beispiel eines FPGAs ist das FPGA VirtexTM von Xilinx, Inc., Rechtsnachfolger der vorliegenden Erfindung. Das FPGA VirtexTM wird in den Xilinx-Datenbüchern („The Programmable Logic Data Book 1999" und „The Programmable Logic Data Book 2000"), Kapitel 3, beschrieben, die hier durch Literaturhinweis eingefügt sind. Teile der Virtex-Architektur werden beschrieben von Young et. al. in U.S.-Patent 5.914.616, herausgegeben am 22. Juni 1999. Dieses wird hier auch durch Literaturhinweis eingefügt. Es ist zu beachten, dass FPGAs, die weiter fortgeschritten sind und eine höhere Kapazität aufweisen, in der vorliegenden Erfindung verwendet werden können.
  • Wenn FPGA 20 aktiviert wird, erhält es Konfigurationsbits von dem externen Speicher 12. Die Bits in Konfigurationsspeicher 24 sind entsprechend eingestellt. Ein Benutzer kann die Konfiguration von FPGA 20 ändern, indem er die Daten im externen Speicher 12 ändert. Wie nachstehend erläutert, kann die vorliegende Erfindung verwendet werden zur Optimierung des Designs des Datenverarbeitungssystems in FPGA 20.
  • Ein Beispiel des ersten Teils 26 wird in 1B gezeigt. Er enthält einen Prozessorkern und Speicher-Controller 42, verbunden mit einer Vielzahl von lokalen Block-RAMs (wie Block-RAMs 4447) und einer Vielzahl von globalen Block-RAMs (wie Block-RAMs 5257). Globale Block-RAMs 5257 werden gewöhnlich weit entfernt von Kern und Controller 42 angeordnet und können durch lange und langsame FPGA-Verbindungsdrähte damit verbunden sein. Als ein Ergebnis ist die Verzögerung relativ lang. Andererseits werden lokale Block-RAMs 4447 gewöhnlich nahe zum Kern und Controller 42 angeordnet. Diese Block-RAMs können direkt (d.h. ohne die Verwendung von konventionellem FPGA-Gewebe) mit Kern und Controller 42 durch Verbindungen 62a62d verbunden sein. Als ein Ergebnis ist die Verzögerung relativ kurz. Alternativ können die lokalen Block-RAMs 4447 auch mit den regulären FPGA-Verbindungsdrähten (wie die Drähte 64a und 64b) verbunden sein. Ein Aspekt der vorliegenden Erfindung berücksichtigt diese neue Architektur. Es ist zu beachten, dass die geografische Ausrichtung der verschiedenen Block-RAMs relativ zu Kern und Controller 42 in 1B lediglich für Erläuterungszwecke dargestellt ist. Ein andere Ausrichtung kann verwendet werden.
  • Die Datenbusbreite und Adressentiefe der globalen Block-RAMs können von Benutzern ausgewählt werden. In einer Ausführungsform sind die Datenbusbreite und Adressentiefe der lokalen Block-RAMs vorbestimmt. Es ist jedoch möglich, dass diese Parameter für lokale Block-RAMs auch vom Benutzer auswählbar sind.
  • 2 zeigt ein schematisches Diagramm, das ein Datenverarbeitungssystem 100 der vorliegenden Erfindung darstellt, das mit der Struktur in 1B korrespondiert. System 100 umfasst einen Prozessorkern 102, einen konfigurierbaren Speicher-Controller 104 und Block-RAMs (wie einen lokalen BRAMs 106 und einen globalen BRAM 108), gesteuert von Speicher-Controller 104. Controller 104 umfasst (a) einen Steuerblock 112, der mit Prozessorkern 102, BRAM 106 und BRAM 108 gekoppelt ist, (b) einen Wartezustands-Manager 114, der Steuerblock 112 anweist, Wartezustände in Übereinstimmung mit Benutzeranforderungen zu generieren, und (c) einen Adressen-Manager 116, der die Adressentiefe der Block-RAMs in Übereinstimmung mit Benutzeranforderungen einstellt.
  • Wartezustands-Manager 114 akzeptiert Eingänge von einem Registersatz 124 in Prozessorkern 102 (über einen mit S1 bezeichneten Bus) und einem Speicher 122 in dem FPGA. Daten in Speicher 122 und Registersatz 124 werden durch Benutzeranforderungen bestimmt, wie nachstehend ausführlicher erläutert. Es sollte beachtet werden, dass Speicher 122 eine oder mehrere Speicherzellen umfassen kann, abhängig von der Größe und Zahl der Daten, die in Speicher 122 gespeichert werden müssen. Ebenso kann Registersatz 124 eine oder mehrere Datenportionen enthalten. Dies beruht darauf, dass die lokalen und globalen Block-RAMs verschiedene Wartezustände benötigen können. Wartezustands-Manager 114 ist mit Steuerblock 112 verbunden und weist Block 112 an, Wartezustände korrespondierend mit den Daten in Registersatz 124 oder Speicher 122 zu generieren. Ausführliche Strukturen von Wartezustands-Manager 114 und Steuerblock 112 werden nachstehend beschrieben. Da die Zahl der Wartezustände sich auf die Leistung des Datenverarbeitungssystems 100 auswirkt, ist dies ein Faktor, der beim Design des Speicher-Controllers 104 berücksichtigt werden muss.
  • Adressen-Manager 116 akzeptiert Eingänge von einem Speicher 126 des FPGAs und einem Register 128 in Prozessorkern 102 (über einen mit S2 bezeichneten Bus). Daten in Speicher 126 und Register 128 werden durch Benutzeranforderungen bestimmt, wie nachstehend ausführlicher erläutert. Es sollte beachtet werden, dass Speicher 122 eine oder mehrere Speicherzellen umfassen kann, abhängig von der maximalen Zahl von Adressenzeilen in dem Speichersystem. Adressen-Manager 116 akzeptiert Adressenzeilen von Steuerblock 112 und wählt alle oder einige der Adressenzeilen zum Zweck der Adressierung der globalen Block-RAMs (dargestellt als AGbram) aus. Dieses Merkmal gestattet es einem Benutzer, die optimale Größe und Adressentiefe der globalen Block-RAMs zur Verwendung durch Prozessorkern 102 auszuwählen. Die übrigen globalen Block-RAMs können für andere Zwecke in dem FPGA verwendet werden. Adressen-Manager 116 generiert außerdem einen anderen Adressenbus (dargestellt als ALbram) für die lokalen Block-RAMs. Dieser Adressenbus gestattet den Zugriff auf die lokalen Block-RAMs mit minimalen Verzögerungen.
  • Steuerblock 112 ist vorzugsweise mit einer Speichermanagementeinheit 132 des Prozessorkerns 102 gekoppelt. Speichermanagementeinheit 132 sendet eine Leseadresse für Datenlade- und Befehlsabruf-Operationen aus. Sie sendet außerdem eine Schreibadresse für Daten, die in den Speicher zu schreiben sind, aus. Speichermanagementeinheit 132 generiert und empfängt außerdem geeignete Steuersignale von Steuerblock 112. Beispielsweise akzeptiert Block 112 einen Schreibdatenbus Dw, einen Steuersignalbus Creq und einen Adressenbus Acpu von Speichermanagementeinheit 132. Er steuert einen Lesedatenbus Dr und einen Steuersignalbus Cack zu Speichermanagementeinheit 132 des Prozessorkerns 102 an. Steuerblock 112 liefert außerdem Daten zu einen Schreibdatenbus Dwocm und steuert Signale zu einen Steuersignalbus Cbram der Block-RAMs 106 und 108. Steuerblock 112 empfängt einen Lesedatenbus Drocm von den Block-RAMs 106 und 108.
  • Es sollte beachtet werden, dass, obwohl 2 zeigt, dass ein einzelner Schreibdatenbus mit sowohl lokalen als auch globalen Block-RAMs verbunden ist, es möglich ist, andere Schreibdatenbusse für lokale und globale Block-RAMs zu entwerfen. Ebenso ist es möglich, obwohl 2 zeigt, dass ein einzelner Lesedatenbus mit sowohl lokalen als auch globalen Block-RAMs verbunden ist, andere Lesedatenbusse für lokale und globale Block-RAMs zu entwerfen.
  • Zusätzliche Einzelheiten des vom Benutzer konfigurierbaren Speicher-Controllers 104 werden in 3A und 3B gezeigt. 3A ist logisch unterteilt in Wartezustands-Manager 114 und Steuerblock 112, während 3B Adressen-Manager 116 zeigt. Diese Unterteilungen sind ähnlich den korrespondierenden Unterteilungen in 2. Wartezustands-Manager 114 umfasst einen Multiplexer 152 und einen Wartezustands-Registersatz 154. In der vorliegenden Erfindung können die lokalen Block-RAMs und globalen Block-RAMs verschiedene Wartezustände haben. Daher kann Wartezustands-Registersatz 154 mehr als ein Register enthalten. Wartezustands-Registersatz 154 dient zum Speichern von einem oder mehreren Werten, die die Zahl der Wartezustände beim Speicherzugriff repräsentieren. Diese Information wird zu einer Zustandsmaschine 160 in Steuerblock 112 geleitet, die die Wartezustände entsprechend generiert. Multiplexer 152 akzeptiert ein Auswahlsignal 156, das einen der zwei Eingänge zur Kopplung an den Wartezustands-Registersatz 154 auswählt (d.h. entweder von Registersatz 124 oder Speicher 122). Da die Daten in Registersatz 124 und Speicher 122 von einem Benutzer bestimmt werden, ist die Zahl der Wartezustände vom Benutzer konfigurierbar. Signal 156 wird durch FPGA-Konfigurationslogik gesteuert. In einer Ausführungsform werden die Daten von Speicher 122 während der FPGA-Einschaltung in den Wartezustands-Registersatz 154 geladen. Nachdem das FPGA konfiguriert wurde, kann Signal 156 die Steuerung des Wartezustands-Registersatzes 154 an Registersatz 124 abtreten. In dieser Weise können Benutzer vorher in Wartezustands-Registersatz 154 geladene Informationen überschreiben, wenn dies erforderlich ist.
  • Ein Aspekt der vorliegenden Erfindung ist, dass die Zahl der Wartezustände entweder über Hardware oder über Software eingestellt werden kann. In einer Ausführungsform ist Speicher 122 entworfen, um vor der FPGA-Konfiguration geladen zu werden, und die Daten darin dienen zum Konfigurieren des Speicher-Controllers 104. Dies ist ein Hardware-Verfahren zum Einstellen der Wartezustände. Nach der Konfiguration kann die Zahl der Wartezustände nicht durch Hardware geändert werden. Andererseits kann Registersatz 124 über Befehle des Prozessorkerns 102 programmiert werden. Damit ist dies ein Software-Verfahren zum Einstellen der Wartezustände. Die Werte von Registersatz 124 und damit die Zahl der Wartezustände können jederzeit nach der Konfiguration wiederholt geändert werden.
  • Steuerblock 112 umfasst einen Adressenwähler 162. Er akzeptiert den Adressenbus Acpu (von Speichermanagementeinheit 132) und wählt einige der Adressenzeilen aus, um einen neuen Bus Acpu* für Kopplung an Adressen-Manager 116 zu bilden. Die Zahl der Zeilen in Bus Acpu* kann jede Zahl zwischen 1 und der Zahl der Adressenzeilen in Bus Acpu betragen. In einer Ausführungsform der vorliegenden Erfindung hat Acpu 30 Zeilen und Acpu* hat 16 Zeilen. Es sollte für Fachleute leicht sein, Adressenwähler 162 zu entwerfen. Es ist zu beachten, dass die Zahl der Zeilen in Bus Acpu* nicht vom Benutzer konfigurierbar ist, weil das Design von Adressenwähler 162 vorbestimmt ist. Es ist weiter zu beachten, dass, wenn die Zahl der Zeilen in den Bussen Acpu und Acpu* dieselbe ist, der Adressenwähler 162 in Steuerblock 112 weggelassen werden kann. Wie nachstehend ausführlicher erklärt, kann die Zahl der Adressenzeilen weiter durch Adressen-Manager 116 reduziert werden. Diese Reduktion ist vom Benutzer konfigurierbar.
  • Steuerblock 112 kann einen temporären Speicher 164 umfassen für temporäre Speicherung von Daten, die von Bus Dw empfangen wurden, bevor diese an Bus Dwocm gesandt werden. Wenn kein Bedarf besteht, Leseoperationen während Schreiboperationen zu bedienen, wird der temporäre Speicher 164 eventuell nicht benötigt. Steuerblock 112 kann auch einen temporären Speicher 166 umfassen für temporäre Speicherung von Daten, die von einem Block-RAM durch Bus Drocm empfangen wurden, bevor diese an Bus Dr gesandt werden. Ein Block-RAM-Steuerblock 168 wird zum Generieren von Signalen in Steuersignalbus Cbram verwendet. Als ein Beispiel kann er Logik umfassen, um Lesen/Schreiben der Block- RAMs zu ermöglichen. Das Design des Block-RAM-Steuerblocks 168 ist abhängig von der Spezifikation der verwendeten Block-RAMs und sollte von Fachleuten leicht realisierbar sein.
  • Zustandsmaschine 160 dient zum Synchronisieren verschiedener Signale und Aktivitäten des Adressenwählers 162, des temporären Speichers 164, des temporären Speichers 166 und des Block-RAM-Steuerblocks 168. Als ein Beispiel akzeptiert sie Steuersignalbus Creq (Anforderung von Lese-, Schreib- oder Abbruchoperationen) und generiert Steuersignalbus Cack hinsichtlich des Status der Datenübertragung (Lese-, Schreibquittierung oder Abbruch). Das Design der Zustandsmaschine 160 ist abhängig von der Spezifikation von Prozessorkern 102 und der Block-RAMs zusammen mit dem Wert in Wartezustands-Registersatz 154. Es sollte für Fachleute leicht sein, die Zustandsmaschine 160 unter Verwendung dieser Informationen zu entwerfen.
  • Adressen-Manager 116 akzeptiert Bus Acpu* und generiert einen lokalen Block-RAM-Adressenbus ALbram und einen globalen Block-RAM-Adressenbus AGbram. In einer Ausführungsform ist die Zahl der Adressenzeilen im lokalen Block-RAM-Adressenbus ALbram vorbestimmt und ist vorzugsweise geringer als die Zahl der Adressenzeilen in Bus Acpu*. Andererseits ist die Zahl der Adressenzeilen im globalen Block-RAM-Bus AGbram vorbestimmt durch die Daten in entweder Speicher 126 oder Register 128 und ist gleich der oder kleiner als die Zahl der Adressenzeilen in Bus Acpu*.
  • Ein Teil 170 von Adressen-Manager 116, der die Generation von globalen Adressenzeilen handhabt, wird jetzt beschrieben. Er umfasst eine Vielzahl von Adressenzeilen-Deaktivierungseinheiten, von denen eine als Einheit 171 in 3 dargestellt ist. Jede Einheit kann eine Adressenzeile von Bus Acpu* deaktivieren. Einheit 171 umfasst einen Demultiplexer 172, der eine Adressenzeile von Bus Acpu* als Eingang akzeptiert. Einer der zwei Ausgänge des Demultiplexers 172 (z.B. Ausgang 180) ist eine einzelne Adressenzeile des globalen Block-RAM-Adressenbusses AGbram. Der andere Ausgang von Demultiplexer 172 (z.B. Ausgang 178) wird nicht verwendet. Wenn der Eingang von Demultiplexer 172 mit Ausgang 180 verbunden ist, ist die Adressenzeile aktiviert. Wenn andererseits der Eingang von Demultiplexer 172 mit Ausgang 178 verbunden ist, ist die Adressenzeile deaktiviert. Ob Ausgang 180 deaktiviert ist, wird von einem anderen Multiplexer 174 gesteuert. Ein Eingang von Multiplexer 174 ist ein Bit von Speicher 126 und ein anderer Eingang ist ein Bit von Register 128. Ein Auswahlsignal 176 wird verwendet, um auszuwählen, ob das Bit von Speicher 126 oder Register 128 an Demultiplexer 174 gekoppelt wird. Als ein Ergebnis wird von entweder einem Bit von Speicher 126 oder Register 128 bestimmt, ob eine Adressenzeile von Bus Acpu* deaktiviert wird. Unter Verwendung einer Vielzahl von Adressenzeilen-Deaktivierungseinheiten ist es möglich, einige der Adressenzeilen von Bus Acpu* zu deaktivieren, wodurch die Zahl der Adressenzeilen des globalen Block-RAM-Adressenbusses AGbram reduziert wird. Signal 176 wird von FPGA-Konfigurationslogik gesteuert. In einer Ausführungsform werden die Daten von Speicher 126 während der FPGA-Einschaltung in die Demultiplexer-172-Auswahlzeile geladen. Nachdem das FPGA konfiguriert wurde, tritt Signal 176 die Steuerung ab, so dass Register 128 die Deaktivierung bewirken kann. Der Demultiplexerblock wird nur als eine allgemeine logische Repräsentation verwendet. Es sollte beachtet werden, dass eine beliebige Kombination von logischen Gattern verwendet werden kann, um das gleiche Ergebnis zu erreichen.
  • Aus dem Obigen ist ersichtlich, dass die Bits von entweder Speicher 126 oder Register 128 verwendet werden können, um die Zahl von Adressenzeilen in Bus AGbram bestimmen. Ein Aspekt der vorliegenden Erfindung ist, dass die Zahl der Adressenzeilen des Block-RAM-Adressenbusses entweder über Hardware oder Software eingestellt werden können. In einer Ausführungsform ist Speicher 126 entworfen, um vor der FPGA-Konfiguration geladen zu werden, und die Daten darin dienen zum Konfigurieren des Adressen-Manager 116. Dies ist ein Hardware-Verfahren zum Einstellen der Zahl der Adressenzeilen. Andererseits kann Register 128 über Befehle des Prozessorkerns 102 programmiert werden. Damit ist dies ein Software-Verfahren zum Einstellen der Zahl der Adressenzeilen.
  • Ein Teil von Adressen-Manager 166, der die lokalen Adressenzeilen handhabt, wird jetzt beschrieben. Er umfasst eine Vielzahl von Multiplexern (wie Multiplexer 186), einen für jede Adressenzeile. Ein Eingang von Multiplexer 186 akzeptiert eine der vorbestimmten Adressenzeilen von Bus Acpu* und der andere Eingang akzeptiert eine der Adressenzeilen des globalen Block-RAM-Adressenbusses AGbram. Ein Steuersignal wird auf eine Leitung 188 angewandt, um eine gewünschte Adressenzeile auszuwählen. Der Ausgang von Multiplexer 186 ist eine der Adressenzeilen von Bus ALbram. Diese Anordnung gestattet es, dass durch direkte Verbindung (z.B. durch Verbindungen 62a62d) oder reguläre FPGA-Verbindungsdrähte (z.B. durch Drähte 64a64d) auf die lokalen Block-RAMs zugegriffen werden kann.
  • Steuerblock 112 akzeptiert ein Taktsignal (Clock). Dieses Signal wird verwendet zum Synchronisieren der Taktung des Wartezustands-Registersatzes 154, der Zustandsmaschine 160 und des Adressenwählers 162.
  • Damit ein Benutzer eines FPGAs ein Datenverarbeitungssystem der vorliegenden Erfindung effizienter entwerfen kann, wird ein Algorithmus offenbart, der einige der Designüberlegungen hinsichtlich der globalen Block-RAMs automatisieren kann. 4 zeigt ein Ablaufdiagramm 200 eines derartigen Algorithmus. In Schritt 202 bestimmt ein Benutzer die Größe von globalen Block-RAMs, die von dem Datenverarbeitungssystem verwendet werden, basierend auf seinen Designkriterien (in den nachstehenden Formeln mit dem Symbol „S" bezeichnet). Der Benutzer gibt außerdem die Breite des Prozessorkern-Datenbusses („Du") und die maximale Größe eines globalen Block-RAMs in dem FPGA („K") ein. Der Parameter Du ist abhängig von dem Design des Prozessorkerns und der Parameter K ist abhängig von der Architektur des FPGAs. Diese dienen als die Eingänge in das Ablaufdiagramm 200. In Schritt 204 wird die minimale Zahl („N") von globalen Block-RAMs, die benötigt werden, um die Anforderung zu erfüllen, unter Verwendung der folgenden Formel bestimmt: N = S/K.
  • In Schritt 206 werden die Adressentiefe („ADo") und Datenbusbreite („Do") des globalen Block-RAMs berechnet. Dies liefert das optimale Aspektverhältnis des globalen Block-RAMs. Die Adressentiefe ist gegeben durch die folgende Formel: ADo = S/N;und die Datenbusbreite für die globalen Block-RAMs wird durch die folgende Formel bestimmt: Do = Du/N.
  • Verfahren für die Konfiguration von Block-RAMs zum Erreichen eines vorbestimmten Aspektverhältnisses wurden im oben erwähnten U.S.-Patent Nr. 5.933.023 offenbart.
  • Ein Beispiel zur Veranschaulichung der obigen Gleichungen wird jetzt angeführt. Es wird angenommen, dass die Prozessorkern-Datenbusbreite (Du) 32 Bit ist, die Größe des erforderlichen Auf-Chip-Speichers (S) 8 KByte ist und die maximale Größe eines Block-RAMs (K) 16 Kilobit ist. Durch Anwendung dieser Zahlen auf die obigen Formeln werden die folgenden Ergebnisse erhalten: N = S/K = 4; Do = Du/N = 8;und ADo = S/N = 2 KByte.
  • Die Zahl der Adressenzeilen in dem globalen Block-RAM-Adressenbus AGbram ist gegeben durch log2(ADo) = 11. Das Aspektverhältnis ist 2K × 8. Die Gesamtzahl von Auf-Chip-Speicher lässt sich bestätigen als 4 × (2K × 8) = 8 KByte, was der gewünschte Wert ist.
  • Nach Abschluss der obigen Berechnung können die Werte der Parameter, die sich auf die Leistung des Speichersystems der vorliegenden Erfindung auswirken können, bestimmt werden entweder durch Messen der entsprechenden Taktungen oder Berechnen aus den Spezifikationen, die in den entsprechenden Datenbüchern aufgelistet sind (Schritt 208). In einer Ausführungsform der vorliegenden Erfindung wird die Leistung beeinflusst durch:
    die Taktperiode des Prozessorkerns („CPUclk");
    die Adressenführungsverzögerung von Speicher-Controller 104 zum am weitesten entfernten Block-RAM in dem FPGA („Tra");
    die Adresseneinrichtungszeit, die für ein Block-RAM erforderlich ist (Tsa)
    die Block-RAM-Zugriffszeit („Bacc");
    die Datenführungsverzögerung von dem am weitesten entfernten Block-RAM im FPGA zurück zum Prozessorkern („Trd");
    die Dateneinrichtungszeit, die für den Prozessorkern erforderlich ist („Tsd"); und
    die Adressenverzögerung durch Speicher-Controller 104, um die Adresse von dem Prozessorkern zu verriegeln („Td").
  • Unter Verwendung dieser Parameter ist es möglich, die Zahl der Wartezustände zu bestimmen, die für diese Wahl der Konfiguration von globalem Block-RAMs und Speicher-Controller erforderlich sind (Schritt 212). Die Zahl der Wartezustände (W) ist gegeben durch: W = R[(Tra + Tsa + Bacc + Trd + Tsd + Td)/CPUclk]wobei R für eine Rundungsoperation steht. Die Operation R bringt das Dezimalergebnis auf die nächste höhere ganze Zahl, so dass W eine ganze Zahl ist und die Leistungsanforderung erfüllt.
  • In Schritt 214 wird die Leistung vom Benutzer bewertet, um zu sehen, ob sie seine Anforderungen erfüllt. Wenn die Antwort negativ ist, muss die Zahl der globalen Block-RAMs, die zur Bedienung des Prozessorkerns verwendet werden, reduziert werden (Schritt 216). Dies beruht darauf, dass die Verzögerungen zwischen dem Prozessorkern und dem am weitesten entfernten globalen Block-RAM mit der Zahl der Block-RAMs größer werden. Ablaufdiagramm 200 verzweigt dann zurück zu Schritt 202 zur Neubewertung der Leistung eines neuen Satzes von Designwerten. Wenn die Antwort von Schritt 214 positiv ist, wird das Ergebnis akzeptiert und endet der Algorithmus. Ein Beispiel wird zur Veranschaulichung der obigen Berechnung angeführt. Es wird angenommen, dass
    CPUclk = 5 ns (d.h. 200 MHz);
    Tra = 1 ns;
    Tsa = 0,5 ns;
    Bacc = 2,5 ns;
    Trd = 3 ns;
    Tsd = 2,5 ns; und
    Td = 2,5 ns.
  • Unter Verwendung dieser Zahlen sind W = R[12 ns/5 ns] = R[2,4] = 3 Wartezustände.
  • Wie oben angeführt, kann das Einfügen von Wartezuständen auch erforderlich sein für den Zugriff auf die lokalen Block-RAMs. Die Zahl der Wartezustände kann unter Verwendung der oben beschriebenen Formel für W berechnet werden. Bei Verwendung von typischen Werten für die lokalen Block-RAMs ist die Zahl der Wartezustände gewöhnlich viel kleiner als die der globalen Block-RAMs.
  • Nach Fertigstellung des Designs wird das Ergebnis zur Konfiguration eines FPGAs verwendet. 5 zeigt ein Ablaufdiagramm 230 der Schritte, die bei der Einrichtung des Datenverarbeitungssystems der vorliegenden Erfindung verwendet werden. In Schritt 232 wird das Ergebnis des Algorithmus 200 mit anderen Informationen (z.B. die Struktur des Prozessorkerns und Abschnitt 28 von 1A) integriert, um Konfigurationsbits für ein FPGA zu generieren. Die Konfigurationsbits werden in einem externen Speicher gespeichert. Wenn das FPGA eingeschaltet wird, werden die Konfigurationsbits in dem externen Speicher in das FPGA geladen (Schritt 234). In Schritt 236 wird der FPGA-Bitstrom verwendet, um Speicher 126 zu konfigurieren (mit Auswirkungen auf die Zahl der Adressenzeilen des Block-RAMs). In Schritt 238 wird der FPGA-Bitstrom verwendet, um Speicher 122 zu konfigurieren (mit Auswirkungen auf die Zahl der Wartezustände). In Schritt 240 wird der Bitstrom verwendet, um die anderen Teile des FPGAs zu konfigurieren. Ablaufdiagramm 230 endet dann. Es ist zu beachten, dass die Reihenfolge der Schritte 236, 238 und 240 ohne Auswirkungen auf die vorliegende Erfindung geändert werden kann.
  • Ein Verfahren zur Verwendung des Prozessorkerns zum Konfigurieren des Speicher-Controllers 104 in einem FPGA wird jetzt unter Verwendung eines Ablaufdiagramms 250 von 6 beschrieben. In Schritt 252 entscheidet der Benutzer, ob es wünschenswert ist, den Prozessorkern zur Einstellung der Zahl von Wartezuständen zu verwenden. Wenn die Antwort negativ ist, wird ein Schritt 258 (unten beschrieben) ausgeführt. Wenn die Antwort positiv ist, wird Multiplexer 152 in Wartezustands-Manager 114 eingestellt, Registersatz 124 von Prozessorkern 102 an Wartezustands-Registersatz 154 zu koppeln (Schritt 254). In Schritt 256 wird ein geeigneter Werte) unter Verwendung von Programmierbefehlen von Prozessorkern 102 in Registersatz 124 geschrieben. Ablaufdiagramm 250 verzweigt dann zu Schritt 258.
  • In Schritt 258 entscheidet der Benutzer, ob es wünschenswert ist, den Prozessorkern zum Einstellen des Status von Adressen-Manager 116 zu verwenden. Wenn die Antwort negativ ist, endet Ablaufdiagramm 250. Wenn die Antwort positiv ist, wird Multiplexer 174 in Adressen-Manager 116 eingestellt, Register 128 von Prozessorkern 102 an Multiplexer 172 zu koppeln (Schritt 260). In Schritt 262 wird ein geeigneter Wert unter Verwendung der Programmierbefehle von Prozessorkern 102 in Register 128 geschrieben. Ablaufdiagramm 250 endet dann.
  • In einer anderen Ausführungsform der vorliegenden Erfindung können die Block-RAMs als Dual-Port-Speicher konfiguriert werden. In diesem Fall können die Inhalte der Block-RAMs für Prozessorkern 102 und andere Teile des FPGAs (wie der zweite Abschnitt 28 in 1A) zugreifbar sein.
  • Das Speichersystem der vorliegenden Erfindung kann auf ein Datenverarbeitungssystem erweitert werden, das separate Befehls- und Datenseiten aufweist. In der vorliegenden Erfindung wird ein separater, vom Benutzer konfigurierbarer Speicher-Controller für jede Seite verwendet, wie in dem Datenverarbeitungssystem 300 von 7 dargestellt. System 300 umfasst einen Prozessorkern 302, der eine separate Datenseite 304 und Befehlsseite 306 hat. Datenseite 304 umfasst eine Speichermanagementeinheit 344, einen Registersatz 322 und ein Register 324. Diese Register dienen ähnlichen Funktionen wie Registersatz 124 bzw. 128 von 2. Speichermanagementeinheit 344 enthält weiter einen Adressenumsetzpuffer („TLB") 348. Befehlsseite 306 umfasst eine Speichermanagementeinheit 346, einen Registersatz 326 und ein Register 328. Diese Register dienen ähnlichen Funktionen wie Registersatz 124 bzw. 128 von 2. Speichermanagementeinheit 346 enthält weiter einen TLB 350.
  • Datenverarbeitungssystem 300 umfasst einen Datenseiten-Speicher-Controller 308 und einen Befehlsseiten-Speicher-Controller 310. Die Strukturen dieser zwei Controller sind im Wesentlichen die gleichen wie die von Speicher-Controller 104, außer dass Datenseiten-Speicher-Controller 308 ein Basisadressenregister und einen Komparator 340 enthält und Befehlsseiten-Speicher-Controller 310 ein Basisadressenregister und einen Komparator 342 enthält. Diese zwei Basisadressenregister und Komparatoren werden für Aliasing verwendet. Datenseiten-Controller 308 ist mit zwei Speichern 332 und 334 assoziiert. Diese zwei Speicher dienen ähnlichen Funktionen wie Speicher 122 und 126 von 2. Befehlsseiten-Controller 310 ist mit zwei Speichern 336 und 338 assoziiert. Diese zwei Speicher dienen ähnlichen Funktionen wie Speicher 122 und 126 von 2.
  • Datenverarbeitungssystem 300 umfasst ein lokales Block-RAM 356, das mit dem Datenseiten-Controller 308 verbunden ist, und ein lokales Block-RAM 358, das mit dem Befehlsseiten-Controller 310 verbunden ist. Die Wartezustände, die mit den Block-RAMs 356 und 358 assoziiert sind, sind im Wesentlichen die gleichen. Datenverarbeitungssystem 300 enthält außerdem eine Bank von globalen Block-RAMs 360. Ein Teil 362 davon wird für Daten verwendet, ein anderer Teil 364 wird für Befehle verwendet, und der Rest 366 kann für andere Zwecke verwendet werden. Die Teile 362, 364 und 366 können verschiedene Adressentiefen und Speichergrößen haben.
  • Ablaufdiagramm 200 kann zur Berechnung der Leistung des Datenseiten-Speicher-Controllers 308 und des Befehlsseiten-Speicher-Controllers 310 verwendet werden. Es ist zu beachten, dass Wartezustände der Daten- und Befehlsseiten verschieden sein können, weil ihre korrespondierenden Speicher-Controller jeweils einen eigenen Wartezustands-Registersatz enthalten.
  • In einer Ausführungsform der vorliegenden Erfindung können die Block-RAM-Teile 362 und 364 physikalisch dieselben sein (d.h. ihre Basisadressen sind dieselben). Dies würde keine Verwirrung verursachen, wenn Prozessorkern 302 Befehls- und Datenreferenzen an den Befehlsspeicher-Controller 310 bzw. Datenspeicher-Controller 308 absondert. Dieses Design hat den Nachteil, dass es nicht imstande ist, separaten Schutz für die Daten- und Befehlsspeicherblöcke zu bieten. Beispielsweise ist, weil Datenspeicher 362 lesbar und beschreibbar sein muss, der Adressenbereich von Befehlsspeicher 364 als beschreibbar ausgewiesen. Dies ist im Allgemeinen nicht wünschenswert, weil Schreiben in den Befehlsadressierungsbereich nicht erkannt werden kann.
  • Ein Verfahren zum Lösen dieses Problems ist, die überlappenden Adressen unter Verwendung von Aliasing so zu behandeln, als ob sie an verschiedenen Adressen wären. Wenn Basisadressen beispielsweise beide auf 8'h00 eingestellt sind, könnte der Befehlsspeicher behandelt werden, als wäre er an Adresse 32'h00800000, und der Datenspeicher könnte behandelt werden, als wäre er an Adresse 32'h00000000. Basisadressenregister und Komparatoren 352 und 354 werden zur Durchführung eines derartigen Aliasing verwendet. Der Mechanismus zum Laden dieser zwei Komponenten ist identisch zu dem zum Laden des Wartezustandsregisters, wie oben beschrieben. Während die Befehls- und Datenspeicher-Controller sich noch in derselben Adressregion befinden, gestattet dies, in Kontrast mit dem vorherigen Verfahren, den Befehls- und Datenspeicher-Controllern, TLB-Abbildungen zu verwenden, was ihnen separaten Schutz gibt. TLB-Schutz kann gewährleisten, dass etwaige verfälschte Referenzen erkannt werden. Beispielsweise kann Festlegen des Befehlsspeicher-Controllers als nur ausführend und des Datenspeicher-Controllers als nicht ausführend ungewollte Befehlsreferenz verhindern. Es ist wichtig zu beachten, dass in einem Szenarium, in dem separate TLB für jeweils Befehle und Daten vorhanden sind, Adressenseparation nicht erforderlich ist.
  • Aus der obigen Beschreibung ist ersichtlich, dass ein neues Auf-Chip-Speichersystem und Verfahren für seine Implementierung offenbart wurden.

Claims (10)

  1. Field Programmable Gate Array (FPGA) (20), umfassend: einen Konfigurationsspeicher (126) zum Speichern von Konfigurationsbits zum Steuern von wenigstens einem Abschnitt des FPGAs; ein oder mehrere Block-RAMs (4447; 5257); einen Prozessor (102), wobei der Prozessor einen ersten Satz von Adressenzeilen erzeugt; und einen vom Benutzer programmierbaren Speicher-Controller (104), der mit dem Prozessor (102) gekoppelt ist und das eine oder die mehreren Block-RAMs steuert, wobei der Controller umfasst: einen vom Benutzer programmierbaren Adressen-Manager (116), der einen zweiten Satz von Adressenzeilen von dem ersten Satz von Adressenzeilen erzeugt, wobei der zweite Satz von Adressenzeilen eine programmierbare Tiefe aufweist und mit dem einen oder den mehreren Block-RAMs gekoppelt ist; einen vom Benutzer programmierbaren Wartezustands-Manager (114), der Wartezustände als eine Funktion der programmierbaren Tiefe erzeugt; so dass der Prozessor den notwendigen Betrag des Block-RAMs einer Datenverarbeitung zuordnet, um die Verwendung der Block-RAMs zu optimieren.
  2. FPGA nach Anspruch 1, wobei wenigstens eines des einen oder der mehreren Blöcke von RAMs ein konfigurierbares Aspektverhältnis aufweist, und wobei die programmierbare Tiefe eine Funktion des Aspektverhältnisses ist.
  3. FPGA nach Anspruch 1, wobei der Adressen-Manager (116) umfasst: eine Vielzahl von Logikkomponenten (170), die jeweils einen Eingang, der eine des ersten Satzes von Adressenzeilen akzeptiert, und einen Ausgang aufweisen; und einen Satz von Steuersignalen mit vom Benutzer programmierbaren Zuständen zum Aktivieren oder Deaktivieren der Vielzahl von Logikkomponenten.
  4. FPGA nach Anspruch 3, wobei wenigstens eines der einen oder mehreren Blöcke von RAMs ein konfigurierbares Aspektverhältnis aufweist, und wobei die Zustände des Satzes von Steuersignalen eine Funktion des Aspektverhältnisses ist.
  5. FPGA nach Anspruch 3, wobei die Vielzahl von Logikkomponenten Demultiplexer (172) umfassen.
  6. FPGA nach Anspruch 3, wobei der Adressen-Manager (116) ferner eine Vielzahl von Multiplexern (176) umfasst, die den Satz von Steuersignalen erzeugen.
  7. FPGA nach Anspruch 6, wobei ein Eingang zu jedem der Vielzahl von Multiplexern (176) mit dem Konfigurationsspeicher (126) gekoppelt ist.
  8. FPGA nach Anspruch 6, wobei der Prozessor (102) zu einem Register (128) gehört, wobei ein Eingang zu jedem der Vielzahl von Multiplexern (176) mit dem Register gekoppelt ist.
  9. FPGA nach Anspruch 8, wobei das Register (128) durch Softwarebefehle des Prozessors (120) programmierbar ist.
  10. FPGA nach Anspruch 5, wobei der Adressen-Manager (116) ferner eine Vielzahl von Multiplexern umfasst, die jeweils einen Ausgangsanschluss aufweisen, der ein jeweiliges eines des Satzes von Steuersignalen an einen jeweiligen einen der Demultiplexer liefert.
DE60118622T 2001-01-09 2001-12-10 Benutzer-konfigurierbares on-chip speichersystem Expired - Lifetime DE60118622T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US757760 1991-09-11
US09/757,760 US6522167B1 (en) 2001-01-09 2001-01-09 User configurable on-chip memory system
US917304 2001-07-27
US09/917,304 US6662285B1 (en) 2001-01-09 2001-07-27 User configurable memory system having local and global memory blocks
PCT/US2001/047743 WO2002056180A2 (en) 2001-01-09 2001-12-10 User configurable on-chip memory system

Publications (2)

Publication Number Publication Date
DE60118622D1 DE60118622D1 (de) 2006-05-18
DE60118622T2 true DE60118622T2 (de) 2007-04-05

Family

ID=27116447

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60118622T Expired - Lifetime DE60118622T2 (de) 2001-01-09 2001-12-10 Benutzer-konfigurierbares on-chip speichersystem

Country Status (6)

Country Link
US (1) US6662285B1 (de)
EP (1) EP1386247B1 (de)
JP (1) JP3853736B2 (de)
CA (1) CA2434031C (de)
DE (1) DE60118622T2 (de)
WO (1) WO2002056180A2 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6492881B2 (en) * 2001-01-31 2002-12-10 Compaq Information Technologies Group, L.P. Single to differential logic level interface for computer systems
US6605962B2 (en) 2001-05-06 2003-08-12 Altera Corporation PLD architecture for flexible placement of IP function blocks
US7076595B1 (en) * 2001-05-18 2006-07-11 Xilinx, Inc. Programmable logic device including programmable interface core and central processing unit
US7420392B2 (en) * 2001-09-28 2008-09-02 Xilinx, Inc. Programmable gate array and embedded circuitry initialization and processing
US6886092B1 (en) 2001-11-19 2005-04-26 Xilinx, Inc. Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion
US6934922B1 (en) 2002-02-27 2005-08-23 Xilinx, Inc. Timing performance analysis
US7085973B1 (en) 2002-07-09 2006-08-01 Xilinx, Inc. Testing address lines of a memory controller
JP3970716B2 (ja) * 2002-08-05 2007-09-05 松下電器産業株式会社 半導体記憶装置およびその検査方法
US7061485B2 (en) * 2002-10-31 2006-06-13 Hewlett-Packard Development Company, Lp. Method and system for producing a model from optical images
US6803786B1 (en) 2003-03-11 2004-10-12 Xilinx, Inc. Structures and methods providing columns of tightly coupled processor and RAM blocks within an array of logic blocks
US7885320B1 (en) 2003-09-11 2011-02-08 Xilinx, Inc. MGT/FPGA clock management system
US7421014B2 (en) * 2003-09-11 2008-09-02 Xilinx, Inc. Channel bonding of a plurality of multi-gigabit transceivers
EP1728166B1 (de) * 2004-03-10 2011-07-13 ST-Ericsson SA Integrierte schaltung und verfahren zur speicherzugriffsregelung
US8082382B2 (en) * 2004-06-04 2011-12-20 Micron Technology, Inc. Memory device with user configurable density/performance
US7535759B2 (en) * 2004-06-04 2009-05-19 Micron Technology, Inc. Memory system with user configurable density/performance option
JP4451733B2 (ja) 2004-06-30 2010-04-14 富士通マイクロエレクトロニクス株式会社 半導体装置
US7200693B2 (en) * 2004-08-27 2007-04-03 Micron Technology, Inc. Memory system and method having unidirectional data buses
US7624209B1 (en) 2004-09-15 2009-11-24 Xilinx, Inc. Method of and circuit for enabling variable latency data transfers
US7809982B2 (en) 2004-10-01 2010-10-05 Lockheed Martin Corporation Reconfigurable computing machine and related systems and methods
US20060136606A1 (en) * 2004-11-19 2006-06-22 Guzy D J Logic device comprising reconfigurable core logic for use in conjunction with microprocessor-based computer systems
US7209405B2 (en) * 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US20070028027A1 (en) * 2005-07-26 2007-02-01 Micron Technology, Inc. Memory device and method having separate write data and read data buses
US7720636B1 (en) 2007-02-14 2010-05-18 Xilinx, Inc. Performance monitors (PMs) for measuring performance in a system and providing a record of transactions performed
US7913022B1 (en) * 2007-02-14 2011-03-22 Xilinx, Inc. Port interface modules (PIMs) in a multi-port memory controller (MPMC)
US8479124B1 (en) 2007-02-14 2013-07-02 Xilinx, Inc. Graphical user interface (GUI) including input files with information that determines representation of subsequent content displayed by the GUI
US7711907B1 (en) * 2007-02-14 2010-05-04 Xilinx, Inc. Self aligning state machine
US7460398B1 (en) 2007-06-19 2008-12-02 Micron Technology, Inc. Programming a memory with varying bits per cell
US8407400B2 (en) 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
US8813018B1 (en) * 2012-10-05 2014-08-19 Altera Corporation Method and apparatus for automatically configuring memory size
US10657067B1 (en) 2016-09-12 2020-05-19 Xilinx, Inc. Memory management unit with prefetch
US10754993B2 (en) * 2018-09-25 2020-08-25 Northrop Grumman Systems Corporation Architecture to mitigate configuration memory imprinting in programmable logic
KR20210025403A (ko) 2019-08-27 2021-03-09 삼성전자주식회사 무선 통신 시스템에서 다중 fpga를 운영하기 위한 장치 및 방법
EP4198750A1 (de) * 2021-12-17 2023-06-21 dSPACE GmbH Verfahren zur datenkommunikation zwischen teilbereichen eines fpgas

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5072418A (en) * 1989-05-04 1991-12-10 Texas Instruments Incorporated Series maxium/minimum function computing devices, systems and methods
JPH02235156A (ja) * 1989-03-08 1990-09-18 Canon Inc 情報処理装置
JPH03210649A (ja) * 1990-01-12 1991-09-13 Fujitsu Ltd マイクロコンピュータおよびそのバスサイクル制御方法
US5550782A (en) * 1991-09-03 1996-08-27 Altera Corporation Programmable logic array integrated circuits
US5671355A (en) 1992-06-26 1997-09-23 Predacomm, Inc. Reconfigurable network interface apparatus and method
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
JPH0736858A (ja) 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
JP3708541B2 (ja) 1993-08-03 2005-10-19 ザイリンクス, インコーポレイテッド マイクロプロセサをベースとしたfpga
US5740404A (en) * 1993-09-27 1998-04-14 Hitachi America Limited Digital signal processor with on-chip select decoder and wait state generator
US5732250A (en) * 1994-09-15 1998-03-24 Intel Corporation Multi-function microprocessor wait state mechanism using external control line
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5933023A (en) 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
US5914616A (en) 1997-02-26 1999-06-22 Xilinx, Inc. FPGA repeatable interconnect structure with hierarchical interconnect lines
US6011407A (en) * 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
US5970254A (en) 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5995424A (en) * 1997-07-16 1999-11-30 Tanisys Technology, Inc. Synchronous memory test system
US6020755A (en) 1997-09-26 2000-02-01 Lucent Technologies Inc. Hybrid programmable gate arrays
US6279045B1 (en) 1997-12-29 2001-08-21 Kawasaki Steel Corporation Multimedia interface having a multimedia processor and a field programmable gate array
US6096091A (en) 1998-02-24 2000-08-01 Advanced Micro Devices, Inc. Dynamically reconfigurable logic networks interconnected by fall-through FIFOs for flexible pipeline processing in a system-on-a-chip
US6282627B1 (en) 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6343207B1 (en) 1998-11-03 2002-01-29 Harris Corporation Field programmable radio frequency communications equipment including a configurable if circuit, and method therefor
US6356987B1 (en) * 1999-03-10 2002-03-12 Atmel Corporation Microprocessing device having programmable wait states

Also Published As

Publication number Publication date
EP1386247A2 (de) 2004-02-04
WO2002056180A2 (en) 2002-07-18
CA2434031C (en) 2007-06-19
CA2434031A1 (en) 2002-07-18
EP1386247B1 (de) 2006-04-05
US6662285B1 (en) 2003-12-09
JP3853736B2 (ja) 2006-12-06
WO2002056180A3 (en) 2003-12-04
JP2004529403A (ja) 2004-09-24
DE60118622D1 (de) 2006-05-18

Similar Documents

Publication Publication Date Title
DE60118622T2 (de) Benutzer-konfigurierbares on-chip speichersystem
DE69834739T2 (de) Ausgleichen von daten die zwischen verschiedenen leitern fliessen die auf unterschiedlichen frequenzen operieren
DE102013106154B4 (de) Speichersystem und Ein-Chip-System mit linearer Adress-Remapping-Logik
DE69823180T2 (de) Speicherzugangsschutz
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE60100476T2 (de) Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors
DE3618163C2 (de) Speichermanagementanordnung für ein Mikroprozessorsystem
DE102006024655B4 (de) Speicherkarte und Speichersteuereinheit
DE69933328T2 (de) Mehrweg-Cachespeichervorrichtung und Verfahren
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE102007050864B4 (de) Verfahren und Vorrichtung zum Kommunizieren von Befehls- und Adresssignalen
DE102004033445A1 (de) Host-integrierte Schaltungseinheit und Ressourcenzugriffsverfahren
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE10296959T5 (de) System und Verfahren zum Steuern der Buszuteilung während Cache-Speicher-Burstzyklen
DE3724317A1 (de) Speicherzugriffssystem
DE2445617A1 (de) Hierarchische speicheranordnung
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE69734551T2 (de) Verfahren und Gerät zur Erzeugung von Paritätsblöcken
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
DE102013019278A1 (de) Generator für gefalteten FIFO-Speicher
DE69828890T2 (de) Konfigurierbare speichersteuerungsvorrichtung und verfahren hierfür
DE2718551A1 (de) Adressenumsetzvorrichtung in einer datenverarbeitungsvorrichtung
DE69726400T2 (de) Festkörper-datenprozessor mit vielseitiger mehrquellen-unterbrechungsorganisation
DE69629331T2 (de) System und Verfahren zur Bereitstellung einer flexiblen Speicherhierarchie

Legal Events

Date Code Title Description
8364 No opposition during term of opposition