DE102004009428A1 - Speicher-Controller - Google Patents

Speicher-Controller Download PDF

Info

Publication number
DE102004009428A1
DE102004009428A1 DE200410009428 DE102004009428A DE102004009428A1 DE 102004009428 A1 DE102004009428 A1 DE 102004009428A1 DE 200410009428 DE200410009428 DE 200410009428 DE 102004009428 A DE102004009428 A DE 102004009428A DE 102004009428 A1 DE102004009428 A1 DE 102004009428A1
Authority
DE
Germany
Prior art keywords
command
commands
channels
memory bank
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE200410009428
Other languages
English (en)
Inventor
Tim Niggemeier
Thomas Brune
Lothar Freissmann
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.)
Deutsche Thomson Brandt GmbH
Original Assignee
Deutsche Thomson Brandt GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Deutsche Thomson Brandt GmbH filed Critical Deutsche Thomson Brandt GmbH
Priority to DE200410009428 priority Critical patent/DE102004009428A1/de
Priority to KR1020067010996A priority patent/KR101198981B1/ko
Priority to DE602004020504T priority patent/DE602004020504D1/de
Priority to CN2004800344988A priority patent/CN1882928B/zh
Priority to US10/581,873 priority patent/US7873797B2/en
Priority to PCT/EP2004/012940 priority patent/WO2005059764A1/en
Priority to JP2006543402A priority patent/JP5005350B2/ja
Priority to EP04797904A priority patent/EP1692617B1/de
Publication of DE102004009428A1 publication Critical patent/DE102004009428A1/de
Withdrawn 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol

Abstract

Die vorliegende Erfindung betrifft einen Speicher-Controller (1) für einen IC mit einem externen DRAM (2), wobei das externe DRAM (2) zumindest eine Speicherbank (21, 22, 23, 24) aufweist und über zumindest einen Kanal (6, 7, 8) mit dem IC kommuniziert. DOLLAR A Erfindungsgemäß weist der Speicher-Controller (1) einen Befehlsplaner (3) auf, der das Senden von Speicherbank-Befehlen gemäß einer statischen Prioritätsvergabe für Befehle und einer dynamischen Prioritätsvergabe für Kanäle priorisiert.

Description

  • Die vorliegende Erfindung betrifft einen Speicher-Controller für einen IC mit externem DRAM, insbesondere einen Speicher-Controller mit einem Befehlsplaner (Command-Scheduler).
  • In der Statistik der am meisten verkauften bespielten Bilddatenträger in Deutschland hat im letzten Jahr die DVD erstmals die Videokassette abgelöst. Es ist somit davon auszugehen, dass in absehbarer Zukunft DVD-Videorekorder den analogen Videorekorder als Aufnahmegerät ablösen werden. Insbesondere der sich z. Z. schnell verbreitende digitale Fernsehempfang (DVB) wird auch den Wunsch nach digitaler Speicherung wecken. Es zeigt sich hier aber bereits, dass selbst moderne Kompressionsverfahren wie MPEG-4 nur die Speicherung von durchschnittlich zwei Kinofilmen auf einer beschreibbaren DVD ermöglichen. Im Zuge von High Definition Television (HDTV) wird daher die Entwicklung neuer optischer Speichermedien mit größerer Speicherkapazität vorangetrieben. Ein solches optisches Speichermedium ist beispielsweise die Blu-ray Disk mit einer Kapazität von bis zu 54 GB. Zukünftige Laufwerke für optische Speichermedien sollten vorzugsweise zumindest die Formate von Blu-ray Disk, DVD und CD sowohl lesend als auch schreibend unterstützen. Zu diesem Zweck wird ein IC zur Steuerung des optischen Laufwerkes benötigt, der die genannten Formate beherrscht. Auch im Bereich der Bildverarbeitung, z.B. in DVB-Empfängern, werden leistungsfähige IC benötigt.
  • Zur Verringerung der Kosten digitaler Endverbraucher-Geräte werden heutzutage monolithische IC-Lösungen verwendet, sogenannte Ein-Chip-Lösungen, wo immer dies möglich ist. Dies bedeutet, dass eingebettete zentrale Recheneinheiten (CPU, central processing unit) und/oder digitale Signal-Prozessoren (DSP, digital signal processor) anstelle von dedizierter Hardware verwendet werden, um die Entwicklungszeit der Systeme zu reduzieren. Zum Speichern von Instruktionen und Daten dieser Prozessoren und zum Puffern des Datenstroms eines Laufwerks oder eines Videodatenstroms werden große Speicher mit bis zu mehreren Megabyte benötigt. Um die Kosten des Speichers gering zu halten, wird üblicherweise DRAM (dynamic RAM) anstelle von SRAM (static RAM) eingesetzt. Vorzugsweise wird für das DRAM ein SDRAM (synchronous DRAM) verwendet, aber auch andere Arten von DRAM, wie DDR-RAM (double data rate RAM), ESDRAM (enhanced synchronous DRAM), SLDRAM (synchronous link DRAM) oder RDRAM (Rambus DRAM) finden Verwendung. Im Folgenden wird entweder allgemein auf DRAM oder speziell auf SDRAM Bezug genommen. Selbstverständlich beschränkt sich die Erfindung nicht auf die Verwendung von SDRAM.
  • Eingebettetes DRAM ist verhältnismäßig teuer und IC-Prozesse, die eingebettetes DRAM unterstützen, sind selten. Daher wird in der Regel externes DRAM verwendet. Um die Kosten für die IC-Entwicklung gering zu halten, wird mit einer begrenzten Anzahl von Pins gearbeitet, insbesondere um eine geringe Baugröße des ICs zu erzielen. Aufgrund dieser Beschränkung ist oftmals der externe Datenbus zum DRAM schmaler als der interne Datenbus. Dies führt zu einem Engpass. Darüber hinaus wird das DRAM zum Speichern unterschiedlichster Daten genutzt, d.h. es wird gemeinsam von den vorhandenen CPU, DSP und Echtzeit-Datenströmen verwendet. Dies verschlimmert den Engpass zusätzlich.
  • Typische SDRAM-Module bestehen aus vier unabhängigen Speicherbänken. Jede Speicherbank besteht aus Zeilen, die wiederum aus Spalten bestehen. Um einen konkreten Datenwert anzusprechen, muss die entsprechende Zeile der entsprechenden Speicherbank zunächst aktiviert werden ('activate'). Nach der Aktivierung, die zwei bis vier Taktzyklen in Anspruch nimmt, kann der Datentransfer durch das Senden eines Lese- ('read') oder Schreibbefehls ('write') zusammen mit der gewünschten Spaltenadresse initiiert werden. Nach dem Datentransfer wird die Speicherbank 'vorgeladen' ('precharge'), um die offene Zeile zu deaktivieren und die Speicherbank für den nächsten Aktivierungsbefehl vorzubereiten. 'Vorladen' bedeutet konkret, dass eine Speicheradresse bereits zum Zugriff vorbereitet wird, weil das System von vorneherein weiß, dass in den nächsten Taktzyklen eine Anfrage an diese Adresse kommen wird.
  • Üblicherweise wird ein Burst-Transfer verwendet um mehrere Datenwerte mit nur einem einzigen Lese- oder Schreibbefehl zu lesen oder zu schreiben. Der Zugriff startet an einer vorgegebenen Stelle (Spalte) und wird über eine programmierte Anzahl von Stellen fortgesetzt. Nach der Initiierung eines neuen Bursts ist der Befehlsbus frei und kann für das Aktivieren oder Vorladen anderer Speicherbänke genutzt werden.
  • Die Speicherbänke werden also unabhängig voneinander kontrolliert, sie teilen sich aber die gleichen Befehlsleitungen. In jedem Taktzyklus kann daher nur ein Befehl abgesetzt werden.
  • Um mit der geringstmöglichen Anzahl an Pins und einer kleinen Baugröße auszukommen, muss der Datendurchsatz des externen Datenbusses zum DRAM-Modul maximiert werden. Ein Problem dabei ist, das DRAM wie oben am Beispiel von SDRAM erläutert, mehrere Taktzyklen zum Aktivieren von Zeilen und zum 'Vorladen' von Speicherbänken benötigt. Dies führt zu Wartezeiten von mehreren Taktzyklen zwischen den Datentransfers. Abhängig von der Länge der Lese- oder Schreibbursts können diese Wartezeiten dazu führen, dass insgesamt mehr Taktzyklen ungenutzt bleiben als Taktzyklen für den Datentransfer verwendet werden. Ein Beispiel dafür liefert 1a), die zwei Schreibbursts über je vier Taktzyklen zeigt. Zwischen den Schreibbursts liegen sieben Taktzyklen ohne Datentransfer. Zum Verbergen der Wartezeiten muss der nächste Datentransfer bereits vorbereitet werden, während ein Lese- oder Schreibburst im Gange ist. Ein Beispiel dafür ist in 1b) dargestellt, die ebenfalls zwei Schreibbursts über je vier Taktzyklen zeigt. Die Wartezeiten sind hinter anderen Datentransfers verborgen.
  • Es ist bekannt, zur Beseitigung des Engpasses einen breiteren externen Datenbus zum DRAM-Modul oder alternativ ein eingebettetes SRAM zu verwenden, um so die Arbeitslast des externen Datenbusses zu verringern. Beide Lösung sind in der Implementierung relativ teuer.
  • Es ist eine Aufgabe der Erfindung, einen Speicher-Controller vorzuschlagen, der einen hohen Datendurchsatz mit reduzierten Wartezeiten ermöglicht und kostengünstig zu implementieren ist.
  • Die Erfindung wird im Folgenden am Beispiel eines einzelnen DRAM-Moduls erläutert. Es ist ebenfalls möglich, mehrere Speichermodule zu verwenden, indem alle Speichermodule mit dem selben Datenbus und dem selben Befehlsbus verbunden werden. In diesem Fall wird ein Chip-Freigabesignal verwendet, um das gewünschte Modul auszuwählen.
  • Um ein oder mehrere DRAM-Module gemeinsam für mehrere Anwendungen zu verwenden muss sichergestellt werden, dass die Speicherbereiche für die verschiedenen Prozessoren und den Echtzeit-Datenstrom physikalisch getrennt sind. Dies bedeutet, dass alle eine oder mehrere speziell zugeordnete DRAM-Speicherbänke haben. Diese Anforderung kann entfallen, wenn gewährleistet ist, dass keine aufeinanderfolgenden Zugriffe auf eine gemeinsam verwendete Speicherbank auftreten.
  • Gemäß der Erfindung wird bei einem Verfahren zum Kommunizieren eines ICs mit einem externen DRAM, wobei das externe DRAM zumindest zwei Speicherbänke aufweist und über zumindest einen Kanal mit dem IC kommuniziert, das Senden von Speicherbank-Befehlen gemäß einer statischen Prioritätsvergabe für Befehle und einer dynamischen Prioritätsvergabe für Kanäle priorisiert.
  • Für die Erfindung ist es von Vorteil, wenn die Zustände der DRAM-Speicherbänke durch zugeordnete State-Machines abgebildet werden. Dies erlaubt es, alle Speicherbänke unabhängig voneinander zu kontrollieren. Die State-Machines empfangen für jeden Zugriff den Typ des Transfers (Lesen oder Schreiben), die Zeilennummer und die Spaltennummer. Durch das Einhalten bestimmter Regeln für die zeitliche Koordinierung kontrollieren sie die Speicherbänke, indem sie Befehle an den Befehlsplaner schicken. Jeder Kanal ist dabei mit der State-Machine verbunden, die die zugehörige Speicherbank kontrolliert. Falls ein Kanal auf mehrere Speicherbänke zugreifen darf, ist ein Netzwerk notwendig. Der Befehlsplaner stellt sicher, dass die gleiche Speicherbank nicht mehrfach nacheinander angesprochen wird. Zwischen zwei Zugriffen auf eine Speicherbank erfolgt stets ein Zugriff auf eine andere Speicherbank. Alternativ werden zwei aufeinanderfolgende Zugriffe auf eine Speicherbank jedoch dann zugelassen, wenn sie auf die gleiche Zeile der Speicherbank erfolgen, so dass keine Wartezeiten durch das Aktivieren oder Vorladen entstehen. Durch die Prioritätsvergabe werden die anhängigen Befehle derart gemäß ihrer Fähigkeit, einen neuen Burst zu starten, sortiert, dass eine optimale Nutzung des DRAM-Datenbusses erreicht wird. Dies bedeutet, dass Lese- und Schreibbefehle eine hohe Priorität haben, gefolgt von Aktivierungsbefehlen, die eine Voraussetzung für Lese- oder Schreibbefehle sind. Vorladebefehle erhalten die niedrigste Priorität, da sie nicht Teil des aktuellen Transfers sind. Vorladebefehle sind nur für aufeinanderfolgende Transfers notwendig, sie können daher verzögert werden. Wenn alles Bursts eine Länge von vier oder mehr Takten haben, ist die Arbeitslast der Befehlsleitungen gering genug, um Befehle mit niedriger Priorität ohne lange Verzögerung zu senden. Um die Reihenfolge der wartenden Befehle festzulegen, müssen die Befehle analysiert, gruppiert und gemäß ihrer Fähigkeit, einen Datentransfer so schnell wie möglich zu starten, sortiert werden:
    Figure 00060001
  • Durch die Erfindung ist die erreichte Bandbreite des DRAM-Moduls nah am physikalischen Maximum. Bei großer Arbeitslast sind die Latenzen durch Activate und Precharge vollständig versteckt, so dass die Zugriffszeiten weiterhin kurz sind. Die anspruchsvolle Aufgabe, für einige Kanäle Zugriffe mit geringer Latenz zu ermöglichen und gleichzeitig für andere Kanäle einen hohen Datendurchsatz zu gewährleisten, wird durch den erfindungsgemäßen Speicher-Controller sehr gut gelöst.
  • Gemäß einem weiteren Aspekt der Erfindung weist ein Speicher-Controller für einen IC mit einem externen DRAM, wobei das externe DRAM zumindest zwei Speicherbänke aufweist und über zumindest einen Kanal mit dem IC kommuniziert, einen Befehlsplaner auf, der das Senden von Speicherbank-Befehlen gemäß einer statischen Prioritätsvergabe für Befehle und einer dynamischen Prioritätsvergabe für Kanäle priorisiert.
  • Vorteilhafterweise weist ein Gerät zum Lesen und/oder Beschreiben optischer Speichermedien einen erfindungsgemäßen Speicher-Controller auf oder verwendet ein erfindungsgemäßes Verfahren zum Kommunizieren eines ICs mit einem externen DRAM.
  • Zum besseren Verständnis soll die Erfindung nachfolgend anhand der 1 bis 5 erläutert werden. Gleiche Bezugszeichen bezeichnen dabei gleiche Elemente. Selbstverständlich ist die Erfindung nicht auf die gezeigten Ausführungsbeispiele beschränkt. Merkmale der Erfindung können ohne Weiteres kombiniert oder abgewandelt werden, ohne den Geltungsbereich der Erfindung zu verlassen. Es zeigen:
  • 1 zwei Beispiele für zwei Schreibbursts über je vier Taktzyklen;
  • 2 das Blockschaltbild eines erfindungsgemäßen Speicher-Controllers;
  • 3 das Blockschaltbild eines Befehlsplaners;
  • 4 ein Zustandsdiagramm der Prioritätsvergabe; und
  • 5 ein Flussdiagramm des Befehlsplaners.
  • 2 zeigt das Blockschaltbild eines erfindungsgemäßen Speicher-Controllers am Beispiel eines SDRAM-Controllers 1 in einem System mit drei Kanälen: eine über einen AMBA-Bus 8 verbundene CPU sowie Input 6 und Output 7 eines Echtzeitdatenstroms. Jeder Speicherbank 21, 22, 23, 24 im SDRAM-Modul 2 ist eine State-Machine 41, 42, 43, 44 einer Speicherbank-Kontrolleinheit 4 zugeordnet, die den jeweiligen Zustand der Speicherbank 21, 22, 23, 24 abbildet und für die Einhaltung der Wartezeiten und der korrekten Zustandsabfolge zuständig ist. Diese State-Machines 41, 42, 43, 44 senden ihre Befehle für die Speicherbänke 21, 22, 23, 24 an einen Befehlsplaner 3 (Command-Bus-Scheduler), der über die Vergabe des externen Befehls- und Daten-Busses wacht. In jedem Takt-Zyklus sendet der Befehlsplaner 3 einen nach Priorität ausgewählten Befehl an das DRAM-Modul 2. Ihre Transferaufträge erhalten die State-Machines 41, 42, 43, 44 direkt von den drei Kanälen (Input 6, AMBA 8 und Output 7), die von einer Speicherbank-Planungseinheit 5 an Hand ihrer Adresse und Priorität an die entsprechende Speicherbank 21, 22, 23, 24 weitergeleitet werden. Die Speicherbank-Planungseinheit 5 enthält ein Netzwerk um allen Kanälen 6, 7, 8 den Zugriff auf alle Speicherbänke 21, 22, 23, 24 zu ermöglichen. Der Input-Kanal 6 übernimmt bei einem Lesezugriff auf das Speichermedium die Daten von einer ECC-Einheit (ECC: Error Correcetion Code, nicht dargestellt), der Output-Kanal 7 reicht die Daten an einen ATAPI-Block (nicht dargestellt) weiter. Beide Kanäle 6, 7 beinhalten FIFOs (nicht dargestellt), um ein Stocken des Datenflusses zu vermeiden. Bei einem Schreibzugriff auf das Speichermedium erhält der Input-Kanal 6 die Daten vom ATAPI-Block und der Output-Kanal 7 sendet sie an die ECC-Einheit weiter. Der AMBA-Kanal 8 (AMBA: Advanced Microcontroller Bus Architecture) besteht aus einem AMBA-Slave, der zudem auch Zugriffe auf ein Registerfile 34 (siehe 3) ermöglicht. Es enthält einen Lese- und einen Schreibcache (nicht dargestellt), um die Blockierungsdauer des AMBA-Busses zu reduzieren. Da der interne Zustand jeder der vier SDRRM-Speicherbänke 21, 22, 23, 24 durch eine eigene State-Machine abgebildet wird, kann es bereits beim Zugriff auf eine State-Machine 41, 42, 43, 44 zur Konkurrenz durch die drei Kanäle 6, 7, 8 kommen, die nicht durch einen vorgeschalteten Planungs-Algorithmus behandelt wird. Jedoch kann gewährleistet werden, dass diese Konkurrenzsituation nur selten auftritt. Daher wird dem Echtzeitdatenstrom der Sektordaten hier Vorrang gegenüber den ARM-Zugriffen gewährt.
  • Ein detaillierteres Blockschaltbild des Befehlsplaners 3 ist in 3 dargestellt. Die eingehenden Befehle der State-Machines 41, 42, 43, 44, die die vier Speicherbänke 21, 22, 23, 24 verwalten, werden von einem Befehlsanalysator 31 analysiert. Dabei wird für jeden der fünf möglichen Befehle – Activate, Read, Write, Precharge und Burst-Terminate – ermittelt, ob er mindestens einmal anliegt. Wenn dies der Fall ist, wird das erste Vorkommen an einen Planer 32 übermittelt. Es ist also nur relevant, ob ein Befehl wartet; die Speicherbank 21, 22, 23, 24 oder der in diesem Moment dazugehörige Kanal 6, 7, 8 sind ohne Belang. Der Planer 32 hat Zugriff auf ein Registerfile 34, das bestimmte Arbeitsparameter für den Planer 32 enthält.
  • Der Planer 32 selbst prüft zuerst das Vorhandensein eines globalen Befehls. Liegt ein Befehl zur Programmierung des Mode-Registers, das die Operationsparameter des DRAM enthält, für einen globalen Refresh oder ein globales Precharge an, so wird dieser direkt ausgeführt. Da von der Speicherbank-Kontrolleinheit 4 sichergestellt wird, dass ein globaler Befehl nur auftreten kann, wenn die Speicherbänke 21, 22, 23, 24 sich im Ruhezustand (Idle) befinden, ist hier keine weitere Prüfung notwendig.
  • Wird als globaler Befehl ein NOP (No Operation) übermittelt, so darf ein Speicherbank-Befehl an das DRAM-Modul 2 gesendet werden. Das Senden von Speicherbank-Befehlen erfolgt gemäß einer statischen Prioritätsvergabe für Befehle und einer dynamischen Prioritätsvergabe für Kanäle 6, 7, 8 die von einer Prioritätsvergabeeinheit 33 ausgeführt wird. Dabei ist die Priorität von Befehlen höher als die der Kanäle 6, 7, 8. Das bedeutet, dass erst ein Befehlstyp gewählt wird und, wenn es mehrere Kanäle 6, 7, 8 gibt, die diesen Befehl absetzen wollen, anschließend der Kanal 6, 7, 8 gewählt wird, der den Befehl absetzen darf.
  • Bei den Befehlen hat die höchste Priorität der Burst-Terminate-Befehl, um Bursts zu beenden. Die zweithöchste Priorität haben die Read- und Write-Befehle, da sie einen neuen Burst einleiten und ihr schnellstmögliches Absetzen somit die Voraussetzung für eine gute Auslastung des Datenbusses ist. Die nächst niedrigere Priorität hat der Activate-Befehl, der zum Öffnen einer Zeile dient. Da das Öffnen einer Zeile Voraussetzung für das Starten eines Bursts ist, liegt die Priorität des Activate-Befehls oberhalb der des Precharge-Befehls, welcher die niedrigste Priorität hat, da er nach Beendigung eines Bursts ausgeführt wird und, solange kein Folgezugriff ansteht, die Gesamtleistung nicht beeinflusst.
  • Die dynamische Priorisierung der Kanäle 6, 7, 8 erfolgt durch einen Algorithmus, wie er in Form einer Final-State-Machine, d.h. einem Zustandsdiagramm, in 4 dargestellt ist. Der gezeigte Algorithmus kontrolliert die Zugriffe einer CPU über einen AMBA-AHB (Advanced High-performance Bus) und eines Echtzeit-Datenstroms mit seinen beiden Kanälen (Input und Output). Die Zustände stellen die Prioritätsstufen dar. Dabei hat der im oberen Zustand gezeigte Kanal die höchste Priorität und der untere Kanal die niedrigste Priorität. Die Zustandsübergänge stellen den Kanal dar, der letztlich einen Lese- oder Schreibburst starten kann. Ein eventueller Zusatzkanal für einen Flash-Controller, beispielweise zum Übermitteln von Firmware etc., ist nicht berücksichtigt, da er nicht mit den anderen Kanälen konkurriert.
  • Wie zu sehen ist, wird die Abfolge Input → AMBA → Output → AMBA immer eingehalten, wenn alle drei Kanäle aktiv sind. Kann der Kanal mit der höchsten Priorität keinen Befehl absetzen, da er gerade nicht aktiv ist oder sein Befehl eine zu geringe Priorität besitzt, erhält der Kanal, der letztlich seinen Befehl absetzen kann, im nächsten Taktzyklus die niedrigste Priorität. Gleichzeitig wird aber sichergestellt, dass im nächsten Taktzyklus der AMBA-Kanal 8 die höchste Priorität erhält, wenn er im aktuellen Taktzyklus nicht die höchste Priorität hat und ein anderer Kanal zum Zuge kommt. Hat der AMBA-Kanal 8 die höchste Priorität erhalten, verliert er sie nur wieder, wenn er einen Befehl absetzen kann. Dadurch wird für den ARM die geringstmögliche Latenz sichergestellt.
  • Das gezeigte Zustandsdiagramm garantiert niedrige Verzögerungszeiten für die CPU-Zugriffe, da der AMBA-Kanal 8 nach jedem Burst über den Inputkanal 6 oder den Outputkanal 7 die höchste Priorität erhält. Weiterhin stellt das Zustandsdiagramm eine gerechte Benutzung des Datenbusses und abwechselnde Zugriffe auf die Speicherbänke 21, 22, 23, 24 sicher. Der Algorithmus ist für CPU-Zugriffe mit hoher Priorität und damit geringer Latenz bei gleichzeitigem garantierten Datendurchsatz für den Echtzeit-Datenstrom ausgelegt. Der Datendurchsatz wird durch die Länge der Lese- und Schreibbursts durch den Inputkanal 6 und den Outputkanal 7 beim Datentransfer vom und zum DRAM 2 festgelegt.
  • Die Entscheidung, welcher Kanal seinen Befehl absetzen darf, soll nachfolgend anhand des in 5 dargestellten Flussdiagramms erläutert werden. Möchte eine Speicherbank-FSM (FSM: Final State-Machine) ihren Burst beenden, hat dies die höchste Priorität. Wenn folglich nach den Start 9 bei der Analyse 10 ein Burst-Terminate (BST) gefunden wurde, wird der laufende Burst abgebrochen. Dies kann auf zwei Arten geschehen: zum einen durch das einfache Weitersenden 12 des Burst-Terminate-Befehls, zum anderen durch das Starten 14 eines neuen Bursts. Bevor nun ein Burst-Terminate abgesetzt wird, wird geprüft 11, ob ein Read- oder Write-Befehl ebenfalls auf sein Absetzen wartet. Ist dies der Fall, wird dieser Befehl anstelle des Burst-Terminate abgesetzt 14. Bei der Analyse wird lediglich geprüft, ob mindestens ein Read- oder Write-Befehl anliegt. Daher wird vor dem Absetzen 14 des Read- oder Write-Befehls anhand der dynamischen Prioritätsvergabe für die Kanäle geprüft, welches der Kanal ist, der einen Read- oder Write-Befehl und die höchste Priorität hat. Dieser Kanal darf dann seinen Befehl absetzen. Die Wahl des Kanals wird der Prioritätsvergabe mitgeteilt, die dadurch im nächsten Taktzyklus in einen neuen Zustand mit einer neuen Verteilung der Prioritäten geht. Die einzige Einschränkung bei der Ersetzung des Burst-Terminate-Befehls durch einen Read- oder Write-Befehl liegt darin, dass ein Leseburst nicht durch einen Schreibburst beendet werden darf, da sonst der Speicher-Controller 1 und das DRAM-Modul 2 gleichzeitig den Datenbus treiben. Bei Verwendung einer geringeren Taktfrequenz lässt sich diese Einschränkung aber umgehen, da die Hold-Zeit der Ausgänge des DRRM konstant ist und nicht von der Taktfrequenz abhängt.
  • Liegt kein Burst-Terminate-Befehl an, so wird auf das Vorhandensein von Read- oder Write-Befehlen geprüft 13 und bei Vorhandensein gemäß der Prioritätsvergabe der Befehl gesendet 14. Liegen auch keine Read- oder Write-Befehle an, so wird auf Activate-Befehle geprüft 15. Wartet ein solcher Activate-Befehl, so wird er gesendet 16. Ist kein Activate-Befehl vorhanden, so wird auf Precharge-Befehle geprüft 17. Ein eventuell anliegender Precharge-Befehl wird gesendet 18. Sollte kein Kanal 6, 7, 8 bzw. keine Speicherbank 21, 22, 23, 24 einen Befehl absetzen wollen, wird ein NOP (No Operation) gesendet. Wird ein Befehl an das DRAM-Modul 2 abgesetzt, wird die Speicherbank-FSM, von der dieser Befehl stammt, durch ein Signal informiert, wodurch sie im folgenden Taktzyklus in einen neuen Zustand geht.
  • Um bei der Befehlsübermittlung die Setup- und Hold-Zeiten des DRAM-Moduls 2 einzuhalten, wird das DRAM-Modul 2 vorzugsweise mit einem invertierten Systemtakt betrieben. Die Befehle und die Daten eines Schreibzugriffes werden vom DRAM-Modul 2 somit mit einer Verzögerung von einem halben Taktzyklus plus der Signallaufzeit durch die Input- und Output-Treiber und der Signallaufzeit auf der Schaltkreisplatine übernommen.

Claims (14)

  1. Verfahren zum Kommunizieren eines ICs mit einem externen DRAM, wobei das externe DRAM (2) zumindest eine Speicherbank (21, 22, 23, 24) aufweist und über zumindest einen Kanal (6, 7, 8) mit dem IC kommuniziert, dadurch gekennzeichnet, dass das Senden von Speicherbank-Befehlen gemäß einer statischen Prioritätsvergabe für Befehle und einer dynamischen Prioritätsvergabe für Kanäle priorisiert wird.
  2. Verfahren gemäß Anspruch 1, dadurch gekennzeichnet, dass bei der statische Prioritätsvergabe für Befehle ein 'Burst Terminate'-Befehl die höchste, ein 'Read'- oder 'Write'-Befehl die zweithöchste, ein 'Activate'-Befehl die dritthöchste und ein 'Precharge'-Befehl die niedrigste Priorität erhält.
  3. Verfahren gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass bei der dynamischen Prioritätsvergabe für Kanäle ein Kanal (6, 7, 8) nach dem Absetzten eines Befehls die niedrigste Priorität erhält.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass einer der Kanäle (6, 7, 8) bei der dynamischen Prioritätsvergabe im nächsten Taktzyklus die höchste Priorität erhält, wenn er im aktuellen Taktzyklus nicht die höchste Priorität hat und ein anderer Kanal (6, 7, 8) einen Befehl absetzt.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass einer der Kanäle (6, 7, 8) bei der dynamischen Prioritätsvergabe die höchste Priorität nur dann verliert, wenn er einen Befehl absetzen kann.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass die Kanäle (6, 7, 8) auf physikalisch getrennte Speicherbereiche des externen DRAM (2) zugreifen.
  7. Verfahren gemäß einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass die Kanäle (6, 7, 8) auf gemeinsam verwendete Speicherbereiche des externen DRAM (2) zugreifen und gewährleistet wird, dass keine aufeinanderfolgenden Zugriffe auf eine gemeinsam verwendeten Speicherbereich auftreten.
  8. Verfahren gemäß einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass ein Netzwerk (5) vorgesehen ist, dass Zugriffe zumindest eines Kanals (6, 7, 8) auf verschiedene Speicherbänke (21, 22, 23, 24) ermöglicht.
  9. Verfahren gemäß einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass zwischen zwei Zugriffen auf eine Speicherbank (21, 22, 23, 24) stets ein Zugriff auf eine andere Speicherbank (21, 22, 23, 24) erfolgt.
  10. Verfahren gemäß einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, dass zwei aufeinanderfolgende Zugriffe auf eine Speicherbank (21, 22, 23, 24) dann zugelassen werden, wenn sie auf die gleiche Zeile der Speicherbank (21, 22, 23, 24) erfolgen.
  11. Verfahren gemäß einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, dass die Zustände der Speicherbänke (21, 22, 23, 24) durch zugeordnete State-Machines (41, 42, 43, 44) abgebildet werden.
  12. Verfahren gemäß einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, dass mehrere DRAM-Module verwendet werden und ein Chip-Freigabesignal gesendet wird, um das gewünschte Modul auszuwählen.
  13. Speicher-Controller für einen IC mit einem externen DRAM, wobei das externe DRAM zumindest eine Speicherbank aufweist und über zumindest einen Kanal mit dem IC kommuniziert, dadurch gekennzeichnet, dass er einen Befehlsplaner aufweist, der das Senden von Speicherbank-Befehlen gemäß einer statischen Prioritätsvergabe für Befehle und einer dynamischen Prioritätsvergabe für Kanäle priorisiert.
  14. Gerät zum Lesen und/oder Beschreiben von Speichermedien, dadurch gekennzeichnet, dass es ein Verfahren gemäß einem der Ansprüche 1 bis 12 verwendet oder ein Speicher-Controller (1) gemäß Anspruch 13 aufweist.
DE200410009428 2003-12-09 2004-02-24 Speicher-Controller Withdrawn DE102004009428A1 (de)

Priority Applications (8)

Application Number Priority Date Filing Date Title
DE200410009428 DE102004009428A1 (de) 2004-02-24 2004-02-24 Speicher-Controller
KR1020067010996A KR101198981B1 (ko) 2003-12-09 2004-11-15 메모리 제어기
DE602004020504T DE602004020504D1 (de) 2003-12-09 2004-11-15 Speichersteuerung
CN2004800344988A CN1882928B (zh) 2003-12-09 2004-11-15 存储器控制器
US10/581,873 US7873797B2 (en) 2003-12-09 2004-11-15 Memory controller
PCT/EP2004/012940 WO2005059764A1 (en) 2003-12-09 2004-11-15 Memory controller
JP2006543402A JP5005350B2 (ja) 2003-12-09 2004-11-15 メモリコントローラ
EP04797904A EP1692617B1 (de) 2003-12-09 2004-11-15 Speichersteuerung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200410009428 DE102004009428A1 (de) 2004-02-24 2004-02-24 Speicher-Controller

Publications (1)

Publication Number Publication Date
DE102004009428A1 true DE102004009428A1 (de) 2005-09-08

Family

ID=34833065

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200410009428 Withdrawn DE102004009428A1 (de) 2003-12-09 2004-02-24 Speicher-Controller

Country Status (1)

Country Link
DE (1) DE102004009428A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116233200A (zh) * 2023-05-10 2023-06-06 浙江正泰仪器仪表有限责任公司 一种基于后续帧动态注册的电能表通信方法及系统
CN117009088A (zh) * 2023-09-25 2023-11-07 上海芯高峰微电子有限公司 内存管理方法、装置、芯片、电子设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138687A1 (en) * 2001-01-16 2002-09-26 Liuxi Yang Spin-wheel SDRAM access scheduler for high performance microprocessors
US20030033493A1 (en) * 2001-08-09 2003-02-13 Cismas Sorin C. Random access memory controller with out of order execution
US20030061459A1 (en) * 2001-09-27 2003-03-27 Nagi Aboulenein Method and apparatus for memory access scheduling to reduce memory access latency
US6587906B2 (en) * 1999-12-22 2003-07-01 Intel Corporation Parallel multi-threaded processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587906B2 (en) * 1999-12-22 2003-07-01 Intel Corporation Parallel multi-threaded processing
US20020138687A1 (en) * 2001-01-16 2002-09-26 Liuxi Yang Spin-wheel SDRAM access scheduler for high performance microprocessors
US20030033493A1 (en) * 2001-08-09 2003-02-13 Cismas Sorin C. Random access memory controller with out of order execution
US20030061459A1 (en) * 2001-09-27 2003-03-27 Nagi Aboulenein Method and apparatus for memory access scheduling to reduce memory access latency

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116233200A (zh) * 2023-05-10 2023-06-06 浙江正泰仪器仪表有限责任公司 一种基于后续帧动态注册的电能表通信方法及系统
CN116233200B (zh) * 2023-05-10 2023-08-15 浙江正泰仪器仪表有限责任公司 一种基于后续帧动态注册的电能表通信方法及系统
CN117009088A (zh) * 2023-09-25 2023-11-07 上海芯高峰微电子有限公司 内存管理方法、装置、芯片、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
DE112011103916B4 (de) Speicherzugriffseinheit für gemeinsame Speichernutzung zwischen mehreren Prozessoren
DE19983737B3 (de) System zum Neuordnen von Befehlen, die von einer Speichersteuerung zu Speichervorrichtungen ausgegeben werden, unter Verhinderung von Kollision
DE10330812B4 (de) Halbleiterspeichermodul
DE102006002526B4 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE60308150T2 (de) Adressenraum, bussystem, speicherungssteuerung und einrichtungssystem
DE19860650B4 (de) Synchrone Halbleiter-Speichervorrichtung mit einer Chip-Satz-Speichersteuervorrichtung mit Datenausblend-Maskenfunktion
DE19983745B9 (de) Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen
DE102008050308A1 (de) Verfahren und Vorrichtung zur Speicherzugriffsoptimierung
DE19855645A1 (de) Verfahren und Anordnung zum Betreiben eines Direktzugriffsspeichers
DE112018005427T5 (de) Autonome adress-/befehls-chip-synchronisierte datenchip-adress-ablaufsteuerung für ein verteiltes pufferspeichersystem
DE19960005A1 (de) Speichermodulsystem und Halbleiterspeicherbauelement mit Dateneingabe- und/oder Datenausgabesteuerung
DE2617408A1 (de) Datenverarbeitungsgeraet
CN1882928A (zh) 存储器控制器
DE102018119881B4 (de) Verwaltung einer DRAM-Bankaktivierung
DE102012219059A1 (de) Effizientes Befehlsabbildungsschema für Kurze-Datenburstlängen- Speichervorrichtungen
DE102008024262B4 (de) Anschlussmultiplexbildung
DE102005062537A1 (de) Mehrspeicherchip und Datenübertragungsverfahren hierfür
DE10125724A1 (de) Speichersystem, Speicherbauelement und Speicherdatenzugriffsverfahren
DE102020119400A1 (de) Techniken zum setzen eines 2-ebenen-auto-schliess-timers zum zugriff auf eine speichervorrichtung
DE10208716B4 (de) Steuerschaltung für ein S-DRAM
DE10227806B4 (de) Halbleiterspeichereinrichtung mit Hochgeschwindigkeitsbetrieb und Verfahren zum Verwenden und Entwerfen derselben
DE602004004780T2 (de) Verfahren und einrichtung zum transferieren von daten zwischen einem hauptspeicher und einer speichereinrichtung
DE102006046140A1 (de) Vorrichtung und Verfahren zum dynamischen Steuern eines Datentransfers in einer Speichervorrichtung
DE69924081T2 (de) Vorrichtung, System und Verfahren zur Verringerung von Buszugriffskonflikten während aufeinanderfolgenden Lese-Schreib-Operationen
DE10310055A1 (de) Systeme und Verfahren zum Erfassen und Kompensieren von Kleinblockdatenübertragungen

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
8141 Disposal/no request for examination
R005 Application deemed withdrawn due to failure to request examination

Effective date: 20110225