[go: up one dir, main page]

DE10318300A1 - Paketpufferspeicher mit integrierter Zuweisungs-Freigabeschaltung - Google Patents

Paketpufferspeicher mit integrierter Zuweisungs-Freigabeschaltung

Info

Publication number
DE10318300A1
DE10318300A1 DE10318300A DE10318300A DE10318300A1 DE 10318300 A1 DE10318300 A1 DE 10318300A1 DE 10318300 A DE10318300 A DE 10318300A DE 10318300 A DE10318300 A DE 10318300A DE 10318300 A1 DE10318300 A1 DE 10318300A1
Authority
DE
Germany
Prior art keywords
memory
address
data
blocks
block
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.)
Ceased
Application number
DE10318300A
Other languages
English (en)
Inventor
Paul Gresham
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.)
Mitel Networks Corp
Original Assignee
Mitel Networks Corp
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 Mitel Networks Corp filed Critical Mitel Networks Corp
Publication of DE10318300A1 publication Critical patent/DE10318300A1/de
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

Ein Pufferspeicher mit einer Speicherzuweisungs- und Freigabeschaltung. Der Pufferspeicher weist einen Adressraum, der in Adressblöcke geteilt ist, und einen Speicheradressraum auf, der in Speicherblöcke geteilt ist. Die Schaltung weist in Reaktion auf eine Zuweisungsabfrage für eine Zuweisung eines Puffers einer gewissen Größe ausreichend Adressblöcke und Speicherblöcke für den Puffer zu. Die Schaltung gibt in Reaktion auf eine Freigabeabfrage, um eine gewisse Speichergröße freizugeben, ganze nicht verwendete Adressblöcke und Speicherblöcke frei.

Description

    Gebiet der Erfindung
  • Die Erfindung betrifft einen Speicher und insbesondere einen Pufferspeicher mit einer integrierten Zuweisungs- (allocation) und Freigabe-(deallocation-)schaltung.
  • Hintergrund der Erfindung
  • Pufferspeicher zur temporären Speicherung von Paketdaten müssen sich an hohe Verkehrsraten mit einer breiten Reichweite von Paketgrößen anpassen. Die traditionelle Technik zum Handhaben von solchen Paketdaten ist, die maximale Puffergröße für den Gesamtverkehr vorzubelegen. In Systemen mit großen Mengen verfügbaren Speichers ist dies die wirtschaftlichste Lösung, aber es bringt externe Hardware, Speicherchips und Speicher- Controller mit sich. Es bringt auch große Busschnittstellen zur externen Hardware und größere Stufenverzögerungen durch eine Stiftelektronik mit sich. Somit weisen integrierte Schaltungschips unter Verwendung traditioneller Ansätze sehr hohe Stiftanzahlen auf und Chipsätze mit großen Stiftanzahlen haben auch komplexe Verdrahtungsanforderungen für Leiterplatten.
  • Eine Anzahl von Speicherverwaltungstechniken für Pufferspeicher wurden implementiert. Beispielsweise werden Speicherzuweisungstabellen typischerweise durch eine Software von einem Prozessor verwaltet, der gewöhnlicherweise mit einem Betriebssystem läuft, das für die Zuweisung und die Aufhebung der Zuweisung bzw. die Freigabe des Speichers sorgt. Beispielsweise sind die Malloc()- und die free()-Operationen Standard-"C"- Funktionsaufrufe. Jedoch können die Aufrufe nicht einen Teil einer Zuweisung, sondern nur die Gesamtheit einer Zuweisung aufheben.
  • Des Weiteren sind traditionelle Techniken zum Handhaben einer Speicherfragmentierung nur teilweise wirksam. Die meisten Betriebssysteme beinhalten Routinen, die die Liste des zugewiesenen und freigegebenen Speichers durchsehen können und die freigegebene Liste in wenigere, größere Klötze (chunks) verdichten können. Jedoch brauchen alle software-gesteuerten Speicherzuweisungen aufgrund der seriellen Natur des Befehlsstroms des Prozessors und der Komplexität in den meisten modernen Betriebssystemen länger für eine Verarbeitung.
  • Die meisten hardware-gesteuerten Speicherverwaltungseinheiten halten Zuweisungstabellen in einem Hauptspeicher aufrecht und verwenden Speicherzuweisungs-Cache-Speicher, die assoziative Verweistabellen beinhalten. Diese arbeiten sehr gut, außer dass die Cache-Speicher eine beschränkte Größe haben. Wenn ein Cache-Fehltreffer auftritt, muss der Bustransfer in einem Mittelzyklus angehalten (trapped) werden und die fehlenden Cache-Einträge müssen aus den Zuweisungstabellen im Speicher geladen werden. All dies trägt zur Komplexität der Hardware und Software bei.
  • Viele Speichersteuerhardware oder -software können keine Teile des nicht verwendeten Speichers in den Speicherpool zurückgeben. Um dies zu erreichen, ist eine weitere Zuweisung der korrekten Größe erforderlich, der eine Speicher-Zu-Speicher- Kopie der Daten von der größeren Zuweisung zur kleineren Zuweisung folgt. Dann kann die größere Zuweisung vollständig an den Speicherpool zurückgegeben werden. Dieser Vorgang birgt einen nicht gewünschten Aufwand (Speicher-zu-Speicher-Kopie und eine zusätzliche Speicherzuweisung).
  • Es ist deshalb wünschenswert, einen Pufferspeicher vorzusehen, der sich teilweise um einige der Nachteile des oben erläuterten Vorsehens von Pufferspeicher kümmert.
  • Zusammenfassung der Erfindung
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Pufferspeicher mit einem Zuweisungs- und Freigabeschaltkreis vorgesehen. Der Pufferspeicher weist einen Adressraum, der in Adressblöcke geteilt ist, und einen Speicheradressraum auf, der in Speicherblöcke geteilt ist. Die Schaltung weist in Reaktion auf eine Zuweisungsabfrage für eine Zuweisung eines Puffers einer bestimmten Größe ausreichend Adressblöcke und Speicherblöcke für den Puffer zu. Die Schaltung gibt in Reaktion auf eine Freigabeabfrage, um eine gewisse Speichergröße freizugeben, ganze nicht verwendete Adressblöcke und Speicherblöcke frei.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird eine Speicherschaltung zum Puffern von Daten vorgesehen, wobei die Speicherschaltung einen Adresseingabebus mit einem Adressraum zum Empfangen von Adressdaten, einen Dateneingabebus zum Empfangen von Daten und einen Datenausgabebus zum Ausgeben von Daten aufweist; aufweisend
    einen Pufferspeicher mit einem Speicheradressraum und Speicheradressdaten, einem Adressanschluss bzw. -port zum Empfangen der Speicheradressdaten, um den Pufferspeicher zu adressieren, einem Dateneingabeanschluss bzw. -port, um Daten über den Dateneingabebus zum Speichern im Pufferspeicher zu empfangen, und einem Datenausgabeport zum Ausgeben der im Pufferspeicher gespeicherten Daten über den Datenausgabebus;
    einen Adressumsetzer, um die Adressdaten zur Umsetzung in die Speicheradressdaten und zum Bereitstellen der Speicheradressdaten an den Adressport des Pufferspeichers zu empfangen; und
    eine Speicherzuweisungsschaltung mit einer Zuweisungs-/Freigabe-Signalleitung zum Empfangen von Zuweisungs- und Freigabeabfragen, einem Bytezählbus zum Empfangen eines Bytezählers mit jeder der Zuweisungs- und Freigabeabfragen, einem adressierenden Bus zum Bereitstellen einer ersten Startadresse in Reaktion auf eine Zuweisungsabfrage und zum Empfangen einer zweiten Startadresse bei einer Freigabeabfrage und einem Steuerbus, um Daten in den Adressumsetzer zum Umsetzen der Adressdaten in die Speicheradressdaten zu laden;
    wobei der Adressspeicher in Adressblöcke geteilt ist, der Speicheradressraum in Speicherblöcke geteilt ist, und jeder Adressblock eine ganze Anzahl von Speicherblöcken aufweist;
    wobei die Speicherzuweisungsschaltung in Reaktion auf die Zuweisungsabfrage ausreichend aufeinander folgende Adressen im Adressraum in den Adressblöcken und eine ausreichende Anzahl von Speicherblöcken des Pufferspeichers zuweist, um den Bytezählbetrag des Speichers zu speichern, die erste Startadresse über den Adressbus vorsieht und die Daten in den Adressumsetzer zur Umsetzung der Adressdaten in die Speicheradressdaten lädt, und
    wobei die Speicherzuweisungsschaltung in Reaktion auf die Freigabeabfrage die Adressblöcke freigibt, die bei dem ersten ganzen Adressblock von der zweiten Startadresse für die gesamten Adressblöcke der Bytezählmenge des Speichers starten, und die Speicherblöcke freigibt, die den freigegebenen Adressblöcken entsprechen.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren vorgesehen, um Speicher einer Speicherschaltung zum Puffern von Daten zuzuweisen und freizugeben, wobei die Speicherschaltung aufweist:
    einen Adresseingabebus mit einem Adressraum zum Empfangen von Adressdaten, einem Dateneingabebus zum Empfangen von Daten und einem Datenausgabebus zum Ausgeben von Daten;
    einen Pufferspeicher mit einem Speicheradressraum und Speicheradressdaten, einem Adressport zum Empfangen der Speicheradressdaten, um den Pufferspeicher zu adressieren, einem Dateneingabeport, um die Daten über den Dateneingabebus zum Speichern im Pufferspeicher zu empfangen, und einem Datenausgabeport zum Ausgeben der im Pufferspeicher gespeicherten Daten über den Datenausgabebus;
    einen Adressumsetzer, um die Adressdaten zur Umsetzung in die Speicheradressdaten und zum Bereitstellen der Speicheradressdaten an den Adressport des Pufferspeichers zu empfangen; und
    eine Speicherzuweisungsschaltung mit einer Zuweisungs- Freigabe-Signalleitung zum Empfangen von Zuweisungs- und Freigabeabfragen, einem Bytezählbus zum Empfangen eines Bytezählers bei jeder der Zuweisungs- und Freigabeabfragen, einem adressierenden Bus zum Vorsehen einer ersten Startadresse in Reaktion auf eine Zuweisungsabfrage und zum Empfangen einer zweiten Startadresse bei einer Freigabeabfrage, und einem Steuerbus, um Daten in den Adressumsetzer zur Umsetzung der Adressdaten in die Speicheradressdaten zu laden;
    wobei das Verfahren aufweist:
    Teilen des Adressraums in Adressblöcke und der Speicheradressraum wird in Speicherblöcke geteilt, wobei jeder Adressblock eine ganze Anzahl von Speicherblöcken aufweist;
    wobei die Speicherzuweisungsschaltung in Reaktion auf die Zuweisungsabfrage ausreichend aufeinander folgende Adressen im Adressraum in den Adressblöcken und eine ausreichende Anzahl der Speicherblöcke des Pufferspeichers zuweist, um die Bytezählmenge des Speichers zu speichern, die erste Startadresse über den Adressbus vorsieht und die Daten in den Adressumsetzer zur Umsetzung der Adressdaten in die Speicheradressdaten lädt; und
    wobei die Speicherzuweisungsschaltung in Reaktion auf die Freigabeabfrage die Adressblöcke, die bei dem ersten ganzen Adressblock der zweiten Startadresse, für die ganzen Adressblöcke der Bytezählmenge des Speichers starten, freigibt und die Speicherblöcke freigibt, die den freigegebenen Adressblöcken entsprechen.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung wird detailliert mit Bezug auf die beigefügten Zeichnungen beschrieben werden, in denen gleiche Ziffern gleiche Teile bezeichnen.
  • Fig. 1 ist ein Blockdiagramm eines Paketpufferspeichers 100 gemäß einer Ausführungsform der Erfindung;
  • Fig. 2 ist ein Blockdiagramm einer beispielhaften Implementierung eines Paketpufferspeichers der Fig. 1 mit einer Speicherzuweisung-CCT;
  • Fig. 3 ist ein Blockdiagramm der Speicherzuweisung-CCT der Fig. 2 mit einer Adressblockzuweisungs-Speicherhardware und einer Adressblock-Zuweisungshardware;
  • Fig. 4 ist ein Flussdiagramm der Schritte einer Zuweisungsabfrage für eine maximale Paketpuffergröße (packet size buffer) von 2048 Bytes bei der beispielhaften Implementierung 200 der Fig. 2;
  • Fig. 5 ist ein Flussdiagramm der Schritte einer Freigabeabfrage bei der exemplarischen Implementierung 200 der Fig. 2;
  • Fig. 6 ist ein Blockdiagramm der Speicherblock-Zuweisungshardware der Fig. 3; und
  • Fig. 7 ist ein Blockdiagramm der Adressblock-Zuweisungsspeicherhardware der Fig. 3.
  • Detaillierte Beschreibung
  • Bezug nehmend auf Fig. 1 ist ein Blockdiagramm eines Paketpufferspeichers 100 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Der Paketpufferspeicher 100 weist einen Speicherzuweisungsschaltkreis 105, einen Adressumsetzer 110, einen Speicher 120, einen Adresseingabebus 125 zum Empfangen von Adressdaten, um auf den Speicher 120 zuzugreifen, einen Dateneingabebus 130, um Daten für eine Speicherung im Speicher 120 zu empfangen, einen Datenausgabebus 135 zum Ausgeben von Daten vom Speicher 120, eine Adressbusausgabe 140 zum Übermitteln von Speicheradressdaten vom Adressumsetzer 110, um den Speicher 120 zu adressieren, und einen Steuerbus 145 zum Steuern des Adressumsetzers 110 auf. Die Speicherzuweisungsschaltung 105 ist des Weiteren mit einem Bytezählbus 150, einem Zuweisungs-/Freigabesignal 155 und einem adressierenden Bus 160 verbunden.
  • Die Adressbuseingabe 125 weist einen Adressraum auf, der in Adressblöcke fester Größe (Adressblöcke) in der Speicherzuweisungsschaltung 105 aufgeteilt ist. Der Speicher 120 weist einen Speicheradressraum auf, der auch in Speicheradressblöcke fester Größe (Speicherblöcke) in der Speicherzuweisungsschaltung 105 aufgeteilt ist.
  • Der Paketspeicherpuffer 100 steht typischerweise unter der Steuerung eines Prozessors. Um einen Speicherpuffer anzuweisen, ein Paket zu speichern, sendet der Prozessor ein Zuweisungssignal an den Paketspeicherpuffer 100 über das Zuweisungs-/Freigabesignal 155 mit einem Bytezähler der Speichermenge, die am Bytezählbus 150 abgefragt wird. Die Speicherzuweisungsschaltung 105 lokalisiert dann einen konsekutiven Adressraum, in Adressblöcken, der ausreicht, um den Bytezähler zu speichern, und sieht eine erste Startadresse am adressierenden Bus 160 zum Prozessor vor. Die Speicherzuweisungsschaltung 105 weist ferner ausreichend Speicherblöcke zum Speichern des Bytezählers zu und lädt den Adressumsetzer 110 mit den notwendigen Daten, um die Adressdaten in Speicheradressdaten umzusetzen.
  • Um nicht verwendeten Speicher freizugeben, sendet der Prozessor ein Freigabesignal über das Zuweisungs-/Freigabesignal 155 an den Paketspeicherpuffer 100 mit einem Freigabebytezähler der Speichermenge, die freizugeben ist, und eine zweite Startadresse an den adressierenden Bus 160. Die Speicherzuweisungsschaltung 105 gibt dann (befreit) ganze und nicht verwendete Adressblöcke und Speicherblöcke frei. Die Speicheradressdaten zu den nicht verwendeten Speicherblöcken werden vom Adressumsetzer 110 gelesen und dementsprechend als freie Speicherblöcke in der Speicherzuweisungsschaltung 105 eingestellt.
  • Bezug nehmend auf Fig. 2 ist ein Blockdiagramm einer exemplarischen Implementierung 200 des Paketspeicherpuffers 100 der Fig. 1 mit einer Speicherzuweisung-CCT 250 gezeigt. Die exemplarische Implementierung 200 des Paketspeicherpuffers 100 hat den Speicher 120 in 512 Blöcke (Speicherblöcke) des Speicher, wobei jeder 32 Byte lang (8 Langwörter) ist, für insgesamt 16K Bytes (4K Langwörter) und den Adressraum der Adressbuseingabe 125 in 255 Blöcke (Adressblöcke) vom Speicherraum (jeder Block mit 128 Adressen) für insgesamt einen adressierbaren Raum von 32K (Langwörter) konfiguriert. Der erste Adressblock, der einer Adresse 0 entspricht, wird nicht verwendet. Anstatt dessen wird ein Adressblock 0, die NULL-Adresse, während einer Zuweisung zurückgegeben, falls die Zuweisung fehlschlägt, zum Beispiel wenn es nicht genügend Speicher gibt. Die maximale Puffergröße von 2048 Bytes (512 Langwörter) wurde eingestellt, um einer maximalen Paketgröße zu entsprechen.
  • Der Adressumsetzer 110 ist mit einem Multiplexer 210 und einem indirekten Speicher (indirection memory) 215 mit einem 4k-Adressraum à 9 Bits (4k-Adressraum von 9 Bits bei jedem Adressraum) implementiert. Der indirekte Speicher 215 weist einen IM-Adressport 218 zum Adressieren des indirekten Speichers 215, einen IM-Dateneingabeport 220 zum Eingeben von Daten in den indirekten Speicher 215 und einen IM-Datenausgabeport 222 zum Ausgeben von Daten auf, die in dem indirekten Speicher 215 gespeichert sind. Der IM-Adressport 218 ist 12 Bits breit, was mit dem 4k-Adressraum übereinstimmt. Der IM-Dateneingabeport 220 und der IM-Datenausgabeport 222 sind beide 9 Bits breit.
  • Der Speicher 120 weist einen Pufferspeicher 230 mit einem 4k-Adressraum à 32 Bits auf. Der Pufferspeicher 230 weist einen BM-Adressport 232 (12 Bits breit), einen BM-Dateneingabeport 234 (32 Bits breit) und einen BM-Datenausgabeport 236 (32 Bits breit) auf. Der BM-Adressport 232 ist 12 Bits breit, die mit dem 4k-Adressraum korrespondieren.
  • Der Adresseingabebus 125 ist mit einem externen Adressbus 205 implementiert, der 15 Bits breit ist. Die 15 Bits stimmen mit dem gesamten adressierbaren Raum von 32K Bytes überein. Die höchstwertigen 12 Bits der 15 Bits werden durch den Multiplexer 210 an den IM-Adressport 218 zur Adressumsetzung in 9 Bits gemultiplext. Die 9 Bits werden dann mit den niedrigstwertigen 3 Bits der 15 Bits kombiniert, um 12 Bit-Adressen zum Adressieren des Pufferspeichers 230 zu bilden.
  • Der externe Adressbus 205 ist 15 Bits breit und die drei niedrigstwertigen Bits werden direkt an den Pufferspeicher 230weitergeleitet, wobei die drei niedrigstwertigen Bits die Adressen innerhalb von Speicherblöcken adressieren und wobei die 12 höchstwertigen Bits (mit genullten drei niedrigstwertigen Bits) die Adressen zu den Speicherblöcken repräsentieren. Somit repräsentiert jede der 9 Bit Adressen, die im indirekten Speicher 215 gespeichert sind, einen Speicherblock, und dementsprechend repräsentiert ein Inkrementieren der Zählerausgabe um eins ein Adressieren des nächsten Speicherblocks.
  • Die Speicherzuweisungsschaltung 105 ist mit der Speicherzuweisung-CCT 250 implementiert, die einen MAC-Freigabeadressport 252 (15 Bits breit) zum Empfangen der zweiten Startadresse (einer Freigabeadresse); einen MAC-Freigabeadressport 254 (15 Bits breit) zum Senden der ersten Startadresse (einer Zuweisungsadresse); einen MAC-Adressport 256 (12 Bits breit) zum Adressieren des indirekten Speichers 215 über den Multiplexer 210; einen MAC-Ausgabeport 258 (9 Bits), um 9-Bit-Adressen an den indirekten Speicher 215 zur Speicherung zu senden, so dass der indirekte Speicher 215 dementsprechend 12-Bit-Adressen zu 9-Bit-Adressen umsetzt; einen MAC-Eingabeport 260 (9 Bits breit) zum Empfangen der 9-Bit-Adressen, die im indirekten Speicher 215 gespeichert sind; und einen Bytezählport 262 (11 Bits) zum Empfangen des Bytezählers aufweist.
  • Die Speicherzuweisung-CCT 250 weist des Weiteren Abfrage- und Zuweisungs-/Freigabesignalleitungen 264, um Abfragen für eine Zuweisung und Freigabe von Speicher zu empfangen; externe Zugriffs- und Lese/Schreibsignalleitungen 266, um externe Abfragen zu empfangen, um aus/an den Pufferspeicher 230 zu lesen/schreiben; eine MEM-Ack-Leitung 275 zum Angeben einer Vollendung eines Speicher-Lese/Schreib-Zugriffs durch eine externe Vorrichtung auf den Pufferspeicher 230; eine Fertig- (Done-)Leitung 270 zum Angeben einer Vervollständigung einer Zuweisung und Freigabe von Speicherabfragen; und Steuersignalleitungen 268 (nicht gezeigt) zum Multiplexer 210 auf zum Auswählen eines Adressierens von entweder dem externen Adressbus 205 oder dem MAC-Adressport 256 und dem indirekten Speicher 215 und dem Pufferspeicher 230 zum Auswählen von Lesen und Schreiben an die jeweiligen Speicher.
  • Bezug nehmend auf Fig. 3 ist ein Blockdiagramm der Speicherzuweisung-CCT 250 der Fig. 2 mit einer Adressblock- Zuweisungshardware 330 und einer Speicherblock-Zuweisungshardware 320 gezeigt. Die Speicherzuweisung-CCT 250 weist einen Steuer-FSM 300 (eine Zustandsmaschine) zum Empfangen und Senden von Signalen über Signalleitungen 305 (umfassend die Steuersignale 268), um alle der Teile der exemplarischen Implementierung 200 zu steuern; die Speicherblock-Zuweisungshardware 320 zum Verwalten der Speicherblöcke des Pufferspeichers 230; und die Adress-Zuweisungshardware 330 zum Verwalten der Adressblöcke des Adressraums der exemplarischen Implementierung 200 auf.
  • Die Speicherzuweisung-CCT 250 weist ferner einen ersten MUX (Multiplexer) 350, um zwischen den Ausgaben des MAC- Eingabeports 260 und den Ausgaben eines Blockadress- Ausgabeports 322 (9 Bits) der Speicherblock-Zuweisungshardware 320 zu multiplexen, um eine Eingabe an einen Blockadress- Eingabeport 324 (9 Bits) der Speicherblock-Zuweisungshardware 320 vorzusehen, und einen zweiten MUX 355 auf, um zwischen der Ausgabe des MAC-Freigabeadressports 252 (höchstwertige 12 Bits) und der Ausgabe eines Adresszuweisungs-Ausgabeports 332 (12 Bits) der Adress-Zuweisungshardware 330 zu multiplexen.
  • Die Speicherzuweisung-CCT 250 weist ferner auf einen Zähler 360 zum Empfangen der Ausgabe des zweiten MUX 355 und Ausgeben einer Zählerausgabe, wo die Zählerausgabe, welche eine Adresse ist, auf die Adresse des nächsten Adressblocks unter der Steuerung der Steuer-FSM 300 erniedrigt wird; ein Halteregister 365, um die Zählerausgabe unter der Steuerung des Steuer-FSM 300 zu speichern und drei niedrigstwertige Nullen zum Bilden von 15-Bit Adressausgaben am MAC-Zuweisungsadressport 254 hinzuzufügen. Die Zählerausgabe wird weiter an einen Adresszuweisungs-Eingabeport 334 der Adress-Zuweisungshardware 330 gesendet, so dass die Adress-Zuweisungshardware 330 die Adressen der Adressblöcke empfängt, die zugewiesen und freigegeben sind.
  • Die Speicherzuweisung-CCT 250 weist ferner einen Bytezähler 370 mit dem Bytezählport 262 zum Empfangen und Zählen der Anzahl des Bytezählers auf, so dass die Steuer-FSM 300 dementsprechend geeignete Anzahlen von Adressblöcken und Speicherblöcken zuweist und freigibt.
  • Signalleitungen zur und von der Steuer-FSM 300 wurden als Signalleitungen 305 gruppiert, um die Fig. 3 nicht zu komplex werden zu lassen. Die Signalleitungen 305, die notwendig sind, um alle Teile der exemplarischen Implementierung 200 zu steuern, sind dem Fachmann bekannt.
  • Die niedrigstwertigen 3 Bits einer Adresse, die am MAC- Freigabeadressport 252 vorgesehen sind, werden an den Steuer- FSM 300 gegeben, um zu bestimmen, ob die Adresse sich am Anfang eines Adressblocks befindet. Falls die Adresse nicht am Anfang eines Adressblocks ist, gibt dies an, dass der Adressblock, der die Adresse beinhaltet, zumindest teilweise zum Puffern eines Paketes benutzt wurde, dann wird die Adresse, wenn sie an den Zähler 360 zum Ausgeben als Zählerausgabe gegeben wird, durch den Zähler 360 auf den Anfang des nächsten Adressblocks erniedrigt. Falls die Adresse am Anfang eines Adressblocks ist, dann wird die Adresse, wenn sie an den Zähler 360 gegeben wird, nicht geändert, da der Adressblock, der die Adresse beinhaltet, nicht verwendet wurde.
  • Bezug nehmend auf Fig. 4 ist ein Flussdiagramm der Schritte einer Zuweisungsabfrage für eine maximale Paketpuffergröße von 2048 Bytes an der exemplarischen Implementierung 200 der Fig. 2 gezeigt. Für die maximale Paketpuffergröße von 2048 Bytes oder 512 Langwörtern muss die exemplarische Implementierung 200 16 Speicherblöcke und 4 aufeinander folgende Adressblöcke zuweisen. Es sind jeweils nicht 64 und 16, da der Pufferspeicher 230 in Langwörtern (4 Bytes pro Langwort) und nicht Bytes organisiert ist.
  • Für die Zuweisungsabfrage einer Vorrichtung empfängt die exemplarische Implementierung 200 ein Zuweisungssignal an den Zuweisungs/Freigabesignalleitungen 264 und ein 2048-Byte-Signal am Bytezählport 262 (Schritt 400). Die Steuer-FSM 300 berechnet die Anzahl der Adressblöcke, die verwendet wird, um die Bytes des Bytezählers vom Bytezähler 370 zu speichern, die in diesem Fall vier ist, und signalisiert der Adress-Zuweisungshardware 330 für die erste Startadresse vier aufeinander folgender Adressblöcke (Schritt 405) und die Adress-Zuweisungshardware 330 liefert dann die erste Startadresse an einem Adresszuweisungs- Ausgabeport 332 an den zweiten MUX 335, die an den Zähler 360 (Schritt 406) gegeben wird.
  • Es ist klar, dass die Steuer-FSM 300 des Weiteren die anderen Teile der exemplarischen Implementierung 200 aufweist, um die Schritte dieser Zuweisungsabfrage ohne weitere Anweisungen auszuführen, um anzugeben, dass die Steuer-FSM 300 dementsprechend die anderen Teile steuert, um diese Schritte auszuführen.
  • Die Steuer-FSM 300 signalisiert der Speicherblock- Zuweisungshardware 320, eine Adresse zu einem freien Speicherblock zu liefern (Schritt 410). Der Zähler 360 liefert die Zählerausgabe an die Adress-Zuweisungshardware 330 über den Adress-Zuweisungseingabeport 334, so dass die Adress- Zuweisungshardware 330 den Adressblock markiert, auf den die Zählerausgabe als benutzt zeigt, wenn die Zählerausgabe die erste Adresse eines Adressblocks ist (Schritt 412). Der Zähler 360 liefert des Weiteren die Zählerausgabe an den IM-Adressport 218 des indirekten Speichers 215 zum Adressieren des indirekten Speichers 215 (Schritt 420). Der Zähler 360 liefert des Weiteren die Zählerausgabe an das Halteregister 365, welches die Steuer-FSM 300 steuert, um nur die erste Startadresse zu halten, bis die Schritte für diese Zuweisungsabfrage vervollständigt sind, um die erste Startadresse an die Vorrichtung über den MAC-Zuweisungsadressport 254 zu liefern, selbst wenn die Zählerausgabe inkrementiert wird, um mehr Speicherblockadressen im indirekten Speicher 215 zu speichern (Schritt 422).
  • Beim Empfangen der Signale von der Steuer-FSM 300, um eine Adresse zu einem freien Speicherblock zu liefern, liefert die Speicherblock-Zuweisungshardware 320 die Adresse des nächsten freien Speicherblocks über den Blockadress-Ausgabeport 322 über den ersten MUX 350 an den IM-Dateneingabeport 220. Die Adresse des nächsten freien Speicherblocks wird auch an die Speicherblock-Zuweisungshardware 320 über den Blockadress-Eingabeport 324 zurückgegeben, so dass die Speicherblock-Zuweisungshardware 320 den nächsten freien Speicherblock als nicht frei (benutzt) markiert (Schritt 425).
  • Der indirekte Speicher 215 speichert dann die Adresse des nächsten freien Speicherblocks vom IM-Dateneingabeport 220 bei der Adresse am IM-Adressport 218 (Schritt 430).
  • Der Bytezähler 370 wird um 32, die Anzahl Bytes in einem Speicherblock (Schritt 440), dekrementiert und dann wird bestimmt, ob der Bytezähler Null oder eine negative Zahl geworden ist (Schritt 442). Falls Ja, dann wurden ausreichend Speicherblöcke zugewiesen und ein Fertig-Signal wird über die Fertig- Leitung 270 gesendet (Schritt 444). Falls Nein, dann wird die Zählerausgabe des Zählers 360 um acht, die Anzahl der Adressen für einen Speicherblock, inkrementiert, um einen anderen Speicherblock zuzuweisen (Schritt 446), und diese Zuweisung wird dann vom Schritt 410 wiederholt.
  • Bezug nehmend auf Fig. 5 ist ein Flussdiagramm der Schritte einer Freigabeabfrage an der exemplarischen Implementierung 200 der Fig. 2 gezeigt. Für die Freigabeabfrage von der Vorrichtung empfängt die exemplarische Implementierung 200 ein Freigabesignal an den Zuweisung/Freigabesignalleitungen 264, ein 1048-Byte-Signal am Byte-Zählport 262 und die zweite Startadresse (erste Adresse, von der freigegeben wird) am MAC- Freigabeadressport 252 (Schritt 500). Die 1048 Bytes sind die Anzahl von Bytes, die nicht verwendet werden, nachdem das Paket gepuffert ist und somit freigegeben ist, so dass der Pufferspeicher 230 für weitere Zuweisungen frei ist.
  • Die 12 höchstwertigen Bits der zweiten Startadresse werden an den Zähler 360 über den zweiten MUX 355 und die drei niedrigstwertigen Bits an die Steuer-FSM 300 gegeben (Schritt 505). Bestimme, ob die drei niedrigstwertigen Bits der zweiten Startadresse nicht Null sind (Schritt 510). Falls Nein, die drei niedrigstwertigen Ziffern sind nicht Null, wird dann die Zählausgabe um Eins (was einen Speicherblock repräsentiert) zum nächsten Speicherblock inkrementiert, da nicht Null bedeutet, dass ein Teil des aktuellen Speicherblocks verwendet wird; und der Bytezähler 370 dekrementiert den Bytezähler um 32 Bytes (die einen Speicherblock repräsentieren) (Schritt 515). Falls ja, dann fahre fort.
  • Die Zählausgabe wird an die Adress-Zuweisungshardware 330 über den Adresszuweisungs-Eingabeport 334 und an den indirekten Speicher 215 über den Multiplexer 210 durch den IM-Adressport 218 gegeben (Schritt 520).
  • Der indirekte Speicher 215 gibt dann die bei der Adresse (der Zählausgabe) gespeicherte Speicherblockadresse aus, die am IM-Adressport 218 am IM-Datenausgabeport 222 empfangen wird (Schritt 525). Die Speicherblockadresse wird an die Speicherblock-Zuweisungshardware 320 über den ersten MUX 350 durch den Adresseingabeport 324 gegeben (Schritt 530). Die Speicherblock- Zuweisungshardware 320 markiert dann den Speicherblock bei der Speicherblockadresse als frei (nicht benutzt) (Schritt 532).
  • Die Adresszuweisungshardware 330 markiert den Adressblock, auf den die Zählausgabe als frei (nicht benutzt) zeigt, wenn die Zählausgabe die erste Adresse eines Adressblocks ist (Schritt 535).
  • Der Bytezähler 370 wird um 32, die Anzahl der Bytes in einem Speicherblock (Schritt 540), inkrementiert und dann wird bestimmt, ob der Bytezähler Null oder eine negative Zahl geworden ist (Schritt 542). Falls Ja, wurden ausreichend Speicherblocks freigegeben und ein Fertig-Signal wird über die Fertig- Leitung 270 gesendet (Schritt 544). Falls nein, dann wird die Zählausgabe des Zählers 360 um Eins zur Adresse des nächsten Speicherblocks inkrementiert, um den nächsten Speicherblock freizugeben (Schritt 546), und diese Freigabe wird dann vom Schritt 520 wiederholt.
  • Der Fachmann wird wissen, dass auf die exemplarische Implementierung 200 durch eine externe Vorrichtung für Lese- und Schreiboperationen unter Verwendung des externen Adressbusses 205 zum Adressieren; die externen Zugriffs- und Lese/Schreib- Signalleitungen 266 zum Empfangen externer Abfragen zum Lesen/Schreiben vom/an den Pufferspeicher 230; die MEM- Bestätigungsleitung 275 zum Bestätigen einer Vervollständigung einer Zugriffsoperation (Lesen/Schreiben); den BM- Dateneingabeport 234 (32 Bits breit) zum Schreiben von Daten (zur Speicherung) in die exemplarische Implementierung 200; und den BM-Datenausgabeport 236 (32 Bits breit) zum Lesen von der exemplarischen Implementierung 200 gespeicherten Daten zugegriffen wird.
  • Bezug nehmend auf Fig. 6 ist ein Blockdiagramm einer Speicherblock-Zuweisungshardware 320 der Fig. 3 gezeigt. Die Speicherblock-Zuweisungshardware 320 weist eine 512 Bit große Speicherblock-Zuweisungstabelle 610 zum Angeben eines freien oder nicht freien Statusses an jeden der Speicherblöcke; eine SET/CLR-Hardware 620 zum Einstellen des Statusses jedes Bits der 512 Bit großen Speicherblock-Zuweisungstabelle 610; einen 512-Bit-Dekoder 630 zum Dekodieren der Adresse am Blockadresseingabeport 324, um das adressierte Bit der 512 Bit großen Speicherblockzuweisungstabelle 610 einzustellen; und einen Prioritätskodierer 600 zum Erfassen des nächsten freien Speicherblocks auf.
  • Das Kodieren in der Hardwaresprache VERILOG RTL für die 512 Bit große Speicherblockzuweisungstabelle 610 ist immer @ (posedge CLK) if (ENA) Memory_Table [BLOCK_NO] < = SET/CLEAR.
  • Der Prioritätskodierer 600 gibt die Nummer des nächsten Speicherblocks an, der für eine Speicherung verfügbar ist. Ein Beispiel für einen 16-Bit-nächster-Speicherblock-Detektor (16 Bit Next Memory Block Dtector). In der VERILOG RTL-Kodierung (module b_look(in,out,ok)) ist




  • Der Prioritätskodierer 600 ist unter Verwendung dieses module b_look(in,out,ok) implementiert, dass 34 mal instantiiert ist, um somit einen 512-Bit-nächsten-Speicherblock-Detektor zu schaffen.
  • Bezug nehmend auf Fig. 7 ist ein Blockdiagramm der Adressblock-Zuweisungshardware 330 der Fig. 3 gezeigt. Die Adressblock-Zuweisungshardware 330 weist eine 255 Bit große Adressblock-Zuweisungstabelle 710 zum Angeben eines freien oder nicht freien Statusses an jeden der Adressblöcke; eine SET/CLR- Hardware 720 zum Einstellen des Statusses jedes Bits der 255 Bit großen Adressblock-Zuweisungstabelle 710; ein 255-Bit- Dekorder 730 zum Dekodieren der Adresse am Adresszuweisungs- Eingabeport 334, um das adressierte Bit der 255 Bit großen Adressblockzuweisungstabelle 710 einzustellen; und einen Spezialprioritätskodierer 700 zum Erfassen aufeinander folgender freier Adressblöcke auf.
  • Die Kodierung in der Hardwaresprache VERILOG RTL für die 255 Bit große Adressblock-Zuweisungstabelle 710 ist immer @ (posedge CLK) if (AENA) Address_Table [ABLK_NO] < = ASET/CLEAR.
  • Der Spezialprioritätskodierer 700 gibt die Anzahl des nächsten Adressblocks an, der für eine Speicherung verfügbar ist. Ein Beispiel für einen 16-Bit-nächster-Adressblock- Detektor in der VERILOG RTL-Kodierung (module b_look3(in,count,out,ok)) ist




  • Der Spezialprioritätskodierer 700 ist unter Verwendung dieses Moduls b_look3(in,count,out,ok) implementiert, das erweitert ist, um einen 512-Bit-nächster-Adressblock-Detektor zu schaffen. Der Spezialprioritätskodierer 700 empfängt des Weiteren einen 2-Bit-erforderlicher-Block-Zähler (2 bit Needed Block Count) 740 von der Steuer-FSM 300, der die Nummer eines erforderlichen Adressblocks angibt. Die 2-Bit-benötigter-Block- Zähler-740-Leitungen zwischen der Steuer-FSM 300 zum Spezialprioritätskodierer 700 wurden in den Figuren nicht gezeigt.
  • Für einen Fachmann ist es klar, dass die Steuer-FSM 300 verschiedene Teile der exemplarischen Implementierung 200 signalisiert, um die oben beschriebenen Operationen ohne Express- Anweisungen auszuführen, um anzugeben, dass die Steuer-FSM 300 entsprechend die verschiedenen Teile steuert.
  • Für einen Fachmann ist es klar, dass die Operation der exemplarischen Implementierung 200 als ein integrierter Schaltungschip durch Taktzyklen angetrieben wird und dass in dieser Anmeldung beschriebene Schritte zumindest einen Taktzyklus erfordern können.
  • Obwohl hier bevorzugte Ausführungsformen der Erfindung beschrieben wurden, ist es für den Fachmann klar, dass Variationen hierzu vorgenommen werden können, ohne den Schutzbereich der Erfindung oder der beigefügten Patentansprüche zu verlassen.

Claims (22)

1. Speicherschaltung zum Puffern von Daten, wobei die Speicherschaltung einen Adresseingabebus mit einem Adressraum zum Empfangen von Adressdaten, einen Dateneingabebus zum Empfangen von Daten und einen Datenausgabebus zum Ausgeben von Daten aufweist, die aufweist:
einen Pufferspeicher mit einem Speicheradressraum und Speicheradressdaten, einem Adressport zum Empfangen der Speicheradressdaten, um den Pufferspeicher zu adressieren, einen Dateneingabeport, um die Daten über den Dateneingabebus zum Speichern im Pufferspeicher zu empfangen, und einen Datenausgabeport zum Ausgeben der im Pufferspeicher gespeicherten Daten über den Datenausgabebus;
einen Adressumsetzer, um die Adressdaten zur Umsetzung in die Speicheradressdaten und zum Bereitstellen der Speicheradressdaten an den Adressport des Speicherpuffers, zu empfangen; und
eine Speicherzuweisungsschaltung mit einer Zuweisung-/Freigabesignalleitung zum Empfangen von Zuweisungs- und Freigabeabfragen, einem Byte-Zählbus zum Empfangen eines Byte- Zählers bei jeder der Zuweisungs- und Freigabeabfragen, einem adressierenden Bus zum Vorsehen einer ersten Startadresse in Reaktion auf eine Zuweisungsabfrage und zum Empfangen einer zweiten Startadresse mit einer Freigabeabfrage, und einem Steuerbus, um Daten in den Adressumsetzer zur Umsetzung der Adressdaten in die Speicheradressdaten zu laden;
wobei der Adressraum in Adressblöcke geteilt ist, der Speicheradressraum in Speicherblöcke geteilt ist und jeder Adressblock eine feste Anzahl von Speicherblöcken aufweist;
wobei die Speicherzuweisungsschaltung in Reaktion auf die Zuweisungsabfrage ausreichend aufeinander folgende Adressen im Adressraum in den Adressblöcken und eine ausreichende Anzahl der Speicherblöcke des Pufferspeichers zuweist, um den Bytezählerbetrag des Speichers zu speichern, die erste Startadresse über den Adressbus vorsieht und die Daten in den Adressumsetzer zum Umsetzen der Adressdaten in die Speicheradressdaten lädt;
wobei die Speicherzuweisungsschaltung in Reaktion auf die Freigabeabfrage die Adressblöcke, die beim ersten ganzen Adressblock der zweiten Startadresse für die ganzen Adressblöcke des Bytezählbetrags des Speichers beginnen, freigibt und die Speicherblöcke freigibt, die den freigegebenen Adressblöcken entsprechen; und
wobei der Adressumsetzer einen indirekten Speicher aufweist, um die Daten zur Umsetzung der Adressdaten in die Speicheradressdaten speichert, wo die Daten im indirekten Speicher die Speicheradressdaten aufweisen, die bei Adressen des indirekten Speichers gespeichert sind, die den Adressdaten entsprechen.
2. Speicherschaltung nach Anspruch 1, wobei die Speicherzuweisungsschaltung eine Adressblock-Zuweisungshardware zum Erfassen aufeinander folgender Adressblöcke gemäß dem Bytezähler und dann zum Vorsehen der ersten Startadresse und zum Erfassen (tracking) eines Status zu jedem Adressblock aufweist, in dem der Status frei oder benutzt ist.
3. Speicherschaltung nach Anspruch 2, wobei die Speicherzuweisungsschaltung des Weiteren eine Speicherblock- Zuweisungshardware aufweist zum Erfassen freier Speicherblöcke und zum Vorsehen der Speicheradressdaten eines einzelnen Speicherblocks, der ein nächster freier Speicherblock ist, und zum Erfassen eines Status zu jedem Speicherblock, in dem der Status frei oder benutzt ist.
4. Speicherschaltung gemäß Anspruch 3, wobei die Speicherschaltung des Weiteren einen Zähler aufweist, der in Reaktion auf die Zuweisungsabfrage die erste Startadresse zum Adressieren des indirekten Speichers inkrementiert, um die Speicheradressdaten nächster freier Speicherblöcke zu speichern, und zum Vorsehen der Adressen der aufeinander folgenden Adressblöcke an die Adressblock-Zuweisungshardware, um den Status der jeweiligen Adressblöcke in benutzt zu ändern; und wo die Speicheradressdaten nächster freier Speicherblöcke an die Speicherblock- Zuweisungshardware bereitstellen, um den Status der jeweiligen Speicherblöcke in benutzt zu ändern.
5. Speicherschaltung gemäß Anspruch 4, wobei der Zähler in Reaktion auf die Freigabeabfrage die zweite Startadresse zum Adressieren des indirekten Speichers inkrementiert, um gespeicherte Speicheradressdaten für die Speicherblock- Zuweisungshardware auszulesen, um den Status der jeweiligen Speicherblöcke in frei zu ändern, und zum Vorsehen der Adressen von der zweiten Startadresse der aufeinander folgenden Adressblöcke an die Adressblock-Zuweisungshardware, um den Status der jeweiligen Adressblöcke in frei zu ändern.
6. Speicherschaltung gemäß Anspruch 2, wobei die Adressblock- Zuweisungshardware des Weiteren eine Adressblock- Zuweisungstabelle zum Erfassen des Status jedes Adressblocks und einen Spezialprioritätskodierer zum Erfassen aufeinander folgender freier Adressblöcke der Adressblock-Zuweisungstabelle aufweist.
7. Speicherschaltung gemäß Anspruch 6, wobei der Spezialprioritätskodierer eine Instantiierung aufweist von
18'b100xxxxxx. . .xxxxxxx: begin out < = 4'd13; ok < = 1'b0; end
wobei (X+1) die Anzahl der Adressblöcke ist, in denen die Null einen freien Adressblock repräsentiert.
8. Speicherschaltung gemäß Anspruch 6, wobei der Spezialprioritätskodierer eine Instantiierung aufweist von 18'b100xxxxxx. . .xxxxxxx: begin out < = 4'd13; ok < = 1'b0; end
wobei (X+2) die Anzahl der Adressblöcke ist, in denen die Nullen zwei aufeinander folgende freie Adressblöcke repräsentieren.
9. Speicherschaltung gemäß Anspruch 3, wobei die Speicherblock-Zuweisungshardware des Weiteren eine Speicherblock- Zuweisungstabelle zum Erfassen des Status jedes Speicherblocks und einen Prioritätskodierer zum Erfassen des nächsten freien Speicherblocks der Speicherblock-Zuweisungstabelle und zum Vorsehen der Speicheradressdaten des nächsten freien Speicherblocks aufweist.
10. Speicherschaltung gemäß Anspruch 3, wobei der Spezialprioritätskodierer eine Instantiierung aufweist von
X'bxx0xxxxxxx. . .xxxxxx: begin out < = 4'd13; ok < = 1'b0; end
wobei (X+1) die Anzahl der Speicherblöcke ist, in denen die Null einen freien Speicherblock repräsentiert.
11. Speicherschaltung gemäß Anspruch 1, wobei die niedrigstwertigen Bits der Adressdaten, die eine Adressierung des Pufferspeichers innerhalb eines Speicherblocks repräsentieren, den Adressumsetzer umgehen, um den Pufferspeicher zu adressieren.
12. Verfahren zum Zuweisen und Freigeben von Speicher einer Speicherschaltung zum Puffern von Daten, wobei die Speicherschaltung aufweist
einen Adresseingabebus mit einem Adressraum zum Empfangen von Adressdaten, einem Dateneingabebus zum Empfangen von Daten und einem Datenausgabebus zum Ausgeben von Daten;
einen Pufferspeicher mit einem Speicheradressraum und Speicheradressdaten, einem Adressport zum Empfangen der Speicheradressdaten, um den Pufferspeicher zu adressieren, einem Dateneingabeport, um die Daten über den Dateneingabebus zum Speichern im Pufferspeicher zu empfangen, und einem Datenausgabeport zum Ausgeben der im Pufferspeicher gespeicherten Daten über den Datenausgabebus;
einen Adressumsetzer, um die Adressdaten zur Umsetzung in die Speicheradressdaten zu empfangen und die Speicheradressdaten an den Adressport des Speicherpuffers bereitzustellen; und
eine Speicherzuweisungsschaltung mit einer Zuweisungs-/Freigabesignalleitung zum Empfangen von Zuweisungs- und Freigabeabfragen, einem Bytezählbus zum Empfangen eines Bytezählers bei jeder der Zuweisungs- und Freigabeabfragen, einem adressierenden Bus zum Vorsehen einer ersten Startadresse in Reaktion auf eine Zuweisungsabfrage und zum Empfangen einer zweiten Startadresse bei einer Freigabeabfrage, und einem Steuerbus, um Daten in den Adressumsetzer zum Umsetzen der Adressdaten in die Speicheradressdaten zu laden;
wobei das Verfahren aufweist
Teilen des Adresssraums in Adressblöcke und der Speicheradressraums wird in Speicherblöcke geteilt, wobei jeder Adressblock eine feste Anzahl von Speicherblöcken aufweist;
wobei die Speicherzuweisungsschaltung in Reaktion auf die Zuweisungsabfrage ausreichend aufeinander folgende Adressen im Adressraum in den Adressblöcken und eine ausreichende Anzahl der Speicherblöcke des Pufferspeichers zuweist, um den Bytezählbetrag des Speichers zu speichern, die erste Startadresse über dem Adressbus vorsieht und die Daten in den Adressumsetzer zum Umsetzen der Adressdaten in die Speicheradressdaten lädt;
wobei die Speicherzuweisungsschaltung in Reaktion auf die Freigabeabfrage die Adressblöcke freigibt, die bei dem ersten ganzen Adressblock der zweiten Startadresse für die ganzen Adressblöcke des Bytezählerbetrags des Speichers beginnen, und die Speicherblöcke freigibt, die den freigegebenen Adressblöcken entsprechen; und
wobei der Adressumsetzer einen indirekten Speicher aufweist, um die Daten zur Umsetzung der Adressdaten in die Speicheradressdaten zu speichern, wobei die Daten im indirekten Speicher die Speicherdressdaten aufweisen, die bei Adressen des indirekten Speichers gespeichert sind, die den Adressdaten entsprechen.
13. Verfahren nach Anspruch 12, wobei die Speicherzuweisungsschaltung eine Adressblock-Zuweisungshardware zum Erfassen aufeinander folgender Adressblöcke gemäß dem Bytezähler und dann zum Vorsehen der ersten Startadresse und zum Erfassen eines Status zu jedem Adressblock aufweist, wobei der Status frei oder benutzt ist.
14. Verfahren gemäß Anspruch 13, wobei die Speicherzuweisungsschaltung des Weiteren eine Speicherblock-Zuweisungshardware aufweist zum Erfassen freier Speicherblöcke und zum Vorsehen der Speicheradressdaten eines einzelnen Speicherblocks, der ein nächster freier Speicherblock ist, und zum Erfassen eines Status zu jedem Speicherblock, wobei der Status frei oder benutzt ist.
15. Verfahren gemäß Anspruch 14, wobei die Speicherzuweisungsschaltung des Weiteren einen Zähler aufweist, der in Reaktion auf die Zuweisungsabfrage die erste Startadresse zum Adressieren des indirekten Speichers inkrementiert, um die Speicheradressdaten der nächsten freien Speicherblöcke zu speichern, und zum Vorsehen der Adressen der aufeinander folgenden Adressblöcke an die Adressblock-Zuweisungshardware, um den Status der jeweiligen Adressblöcke in benutzt zu ändern; und wobei die Speicheradressdaten nächster freier Speicherblöcke an die Speicherblock-Zuweisungshardware vorgesehen werden, um den Status der jeweiligen Speicherblöcke in benutzt zu ändern.
16. Verfahren gemäß Anspruch 15, wobei der Zähler in Reaktion auf die Freigabeabfrage die zweite Startadresse zum Adressieren des indirekten Speichers inkrementiert, um die gespeicherten Speicheradressdaten für die Speicherblock-Zuweisungshardware auszulesen, um den Status der jeweiligen Speicherblöcke in frei zu ändern, und zum Vorsehen der Adressen von der zweiten Startadresse der aufeinander folgenden Adressblöcke an die Adressblock-Zuweisungshardware, um den Status der jeweiligen Adressblöcke in frei zu ändern.
17. Verfahren gemäß Anspruch 13, wobei die Adressblock- Zuweisungshardware des Weiteren eine Adressblock- Zuweisungstabelle zum Erfassen des Status jedes Adressblocks und einen Spezialprioritätskodierer zum Erfassen aufeinander folgender freier Adressblöcke der Adressblockzuweisungstabelle aufweist.
18. Verfahren gemäß Anspruch 17, wobei der Spezialprioritäskodierer eine Instantiierung aufweist von
18'b1x0xxxxxx. . .xxxxxxx: begin out < = 4'd13; ok < = 1'b0; end
wobei (X+1) die Anzahl der Adressblöcke ist, in denen die Null einen freien Adressblock repräsentiert.
19. Verfahren gemäß Anspruch 17, wobei der Spezialprioritätsdekodierer eine Instant Üerung aufweist von
18'b100xxxxxx. . .xxxxxxx: begin out < = 4'd13; ok < = 1'b0; end
wobei (X+2) die Anzahl der Adressblöcke ist, in denen die Nullen zwei aufeinander folgende freie Adressblöcke repräsentieren.
20. Verfahren gemäß Anspruch 14, wobei die Speicherblock- Zuweisungshardware des Weiteren eine Speicherblock- Zuweisungstabelle zum Erfassen des Status jedes Speicherblocks und einen Prioritätskodierer zum Erfassen des nächsten freien Speicherblocks der Speicherblockzuweisungstabelle und zum Vorsehen der Speicheradressdaten des nächsten freien Speicherblocks aufweist.
21. Verfahren gemäß Anspruch 14, wobei der Prioritätskodierer eine Instantiierung aufweist von
X'bxx0xxxxxxx. . .xxxxxx: begin out < = 4'd13; ok < = 1'b0; end
wobei (X+1) die Anzahl der Speicherblöcke ist, in denen die Null einen freien Speicherblock repräsentiert.
22. Verfahren gemäß Anspruch 12, wobei die niedrigstwertigen Bits der Adressdaten, die eine Adressierung des Pufferspeichers innerhalb eines Speicherblocks repräsentieren, den Adressumsetzer umgehen, um den Pufferspeicher zu adressieren.
DE10318300A 2002-04-16 2003-04-15 Paketpufferspeicher mit integrierter Zuweisungs-Freigabeschaltung Ceased DE10318300A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0208617A GB2387677B (en) 2002-04-16 2002-04-16 Packet buffer memory with integrated allocation/de-allocation circuit

Publications (1)

Publication Number Publication Date
DE10318300A1 true DE10318300A1 (de) 2003-11-06

Family

ID=9934864

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10318300A Ceased DE10318300A1 (de) 2002-04-16 2003-04-15 Paketpufferspeicher mit integrierter Zuweisungs-Freigabeschaltung

Country Status (5)

Country Link
US (1) US6925544B2 (de)
CA (1) CA2425278C (de)
DE (1) DE10318300A1 (de)
FR (1) FR2838537B1 (de)
GB (1) GB2387677B (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082387B2 (en) * 2007-10-29 2011-12-20 Micron Technology, Inc. Methods, systems, and devices for management of a memory system
US7908455B2 (en) * 2008-02-27 2011-03-15 Microchip Technology Incorporated Low overhead memory management system and method
JP5132451B2 (ja) * 2008-07-02 2013-01-30 株式会社リコー 画像形成装置
US8327198B2 (en) 2009-08-14 2012-12-04 Intel Corporation On-die logic analyzer for semiconductor die
KR20110121362A (ko) * 2010-04-30 2011-11-07 삼성전자주식회사 메모리 풀에서 메모리 단편화를 방지하는 데이터 관리 방법
US20160320967A1 (en) * 2015-04-29 2016-11-03 Broadcom Corporation Receive Side Packet Aggregation
US20230281042A1 (en) * 2022-03-02 2023-09-07 Nvidia Corporation Memory allocation for processing sequential data
KR20250108407A (ko) * 2024-01-08 2025-07-15 삼성전자주식회사 보안 파라미터의 초기화를 보장하기 위한 메모리 컨트롤러, 그의 동작 방법, 및 스토리지 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313582A (en) * 1991-04-30 1994-05-17 Standard Microsystems Corporation Method and apparatus for buffering data within stations of a communication network
US6212613B1 (en) * 1999-03-22 2001-04-03 Cisco Technology, Inc. Methods and apparatus for reusing addresses in a computer
US6279080B1 (en) * 1999-06-09 2001-08-21 Ati International Srl Method and apparatus for association of memory locations with a cache location having a flush buffer
US6286088B1 (en) * 1999-06-28 2001-09-04 Hewlett-Packard Company Memory management system and method for relocating memory

Also Published As

Publication number Publication date
CA2425278A1 (en) 2003-10-16
GB0208617D0 (en) 2002-05-22
FR2838537A1 (fr) 2003-10-17
FR2838537B1 (fr) 2007-02-09
CA2425278C (en) 2006-01-24
US6925544B2 (en) 2005-08-02
GB2387677B (en) 2005-06-22
US20030212875A1 (en) 2003-11-13
GB2387677A (en) 2003-10-22

Similar Documents

Publication Publication Date Title
DE69229473T2 (de) Verfahren und vorrichtung zum puffern von daten in nachrichtennetzwerkstationen
DE69217664T2 (de) Multimedia-signalprozessor-rechnersystem
DE69322221T2 (de) Personalcomputer mit programmierbaren Schwellwert-Fiforegistern zur Datenübertragung
DE69326429T2 (de) Netzwerkschnittstelle mit unabhängiger pufferverwaltung
DE69031967T2 (de) Informationsverarbeitungsanordnung
DE69737919T2 (de) Verfahren zur Zuordnung von Systembetriebsmitteln in einer hierarchischen Busstruktur
DE69737709T2 (de) Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung
DE2235841C2 (de) Datenverarbeitungsanlage mit Speichersteuerung für mindestens einen Prozessor und diesen zugeordneten Pufferspeichern
DE2227882C2 (de) Virtuelle Speicheranordnung
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE60130079T2 (de) Verfahren und vorrichtung zur paketvermittlung mittels eines geteilten pufferspeichers
DE69329047T2 (de) Verfahren und System zur Verminderung der Speicherzuordnungsanforderungen
DE69228521T2 (de) Mikroprozessorarchitektur mit der möglichkeit zur unterstützung mehrerer verschiedener prozessoren
DE3787908T2 (de) Serielle Übertragungssteuerungsvorrichtung.
DE68928040T2 (de) Pufferspeichersubsystem für Peripheriesteuerungen und Verfahren
DE69708933T2 (de) Adressenuebersetzung in rechnerbusbrueckegeraeten
DE2719247B2 (de) Datenverarbeitungssystem
DE69021687T2 (de) Verfahren und Vorrichtung zur Zählung von Ereignissen unter Verwendung eines flüchtigen Speichers.
DE2939411C2 (de) Datenverarbeitungsanlage mit virtueller Speicheradressierung
DE69524975T2 (de) System und verfahren zur befehlsverarbeitung und datenübertragung in einem schallrechnersystem
KR880002099B1 (ko) 메모리의 제어방식
DE102007029833B4 (de) Mikrocontroller mit Datenmodifikationsmodul und System umfassend ein Datenmodifikationsmodul
DE69119149T2 (de) Struktur zur direkten Speicher-zu-Speicher-Übertragung
DE3502147A1 (de) Datenverarbeitungssystem mit verbesserter pufferspeichersteuerung
DE10318300A1 (de) Paketpufferspeicher mit integrierter Zuweisungs-Freigabeschaltung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 1200

8131 Rejection