DE102007003522A1 - Endpunkt-Steuervorrichtung und -verfahren - Google Patents

Endpunkt-Steuervorrichtung und -verfahren Download PDF

Info

Publication number
DE102007003522A1
DE102007003522A1 DE102007003522A DE102007003522A DE102007003522A1 DE 102007003522 A1 DE102007003522 A1 DE 102007003522A1 DE 102007003522 A DE102007003522 A DE 102007003522A DE 102007003522 A DE102007003522 A DE 102007003522A DE 102007003522 A1 DE102007003522 A1 DE 102007003522A1
Authority
DE
Germany
Prior art keywords
data
write
fifo
read
buffer
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
DE102007003522A
Other languages
English (en)
Inventor
Won-Tae Kim
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102007003522A1 publication Critical patent/DE102007003522A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

Endpunkt-Steuervorrichtung und -verfahren. Die vorliegende Erfindung betrifft eine Endpunkt-Steuervorrichtung und ein Verfahren zum Steuern von Endpunkten für ein Gerät, das zwischen einem Host und einer Mehrzahl von Endpunkten über einen Universal Serial Bus kommuniziert. Die Endpunkt-Steuervorrichtung für ein Gerät, das zwischen einem Host (10) und einer Mehrzahl von Endpunkten über einen Universal Serial Bus kommuniziert, weist auf: eine Mehrzahl von Puffern (260, 2611~2614, 2621, 2622), die mit der Mehrzahl von Endpunkten korrespondieren; eine erste Speichereinheit (241), die Datenspeicherungsstatusinformation der Puffer (260, 2611~2614, 2621, 2622) enthält; eine Steuereinheit (24), die einen leeren Puffer aus der Mehrzahl von Puffern (260, 2611~2614), 2621, 2622) für einen ausgewählten Endpunkt unter den Endpunkten in Abhängigkeit von den Datenspeicherungsstatusinformationen allokiert; und eine zweite Speichereinheit (242), die ein Ergebnis der Pufferallokierung durch die Steuereinheit (24) enthält. Verwendung beispielsweise in der Speichertechnik.

Description

  • Die vorliegende Erfindung betrifft eine Endpunkt-Steuervorrichtung und ein Verfahren zum Steuern von Endpunkten für ein Gerät, das zwischen einem Host und einer Mehrzahl von Endpunkten mittels eines Universal Serial Bus (USB) kommuniziert.
  • USB ist typischerweise ein industrieller Standard zum Verbinden eines Hosts mit einem peripheren Gerät, beispielsweise einer Tastatur, Maus, Web-Kamera, einem Joystick oder einem Speichergerät. Da ein USB in der Lage ist, eine Plug-and-Play-Funktion für das periphere Gerät bereitzustellen, besteht keine Notwendigkeit, einen Einstellschalter oder Jumper zu setzen, eine besondere Karte zu installieren oder ein entsprechendes System zu verändern. Aufgrund der vorteilhaften Eigenschaften des USB, wie Anwenderfreundlichkeit, niedriger Preis und hohe Leistungsfähigkeit, wird er weitläufig in einer Vielzahl von Host-Geräten eingesetzt.
  • Bei der Verwendung eines USB kann ein Host mit 127 USB-Geräten verbunden sein, von denen jedes maximal 16 Endpunkte aufweisen darf. Dies bedeutet, dass es für ein einzelnes USB-Gerät erlaubt ist, 16 Funktionen darin einzubetten. Ein USB-System ist mit einem unabhängigen Kanal ausgestattet, der als Pipe bezeichnet wird, um den Host mit einem Endpunkt des USB-Geräts zu verbinden. Jeder derartige Endpunkt ist einem First-in-/First-out(FIFO)-Speicher einer gegebenen Größe zugeordnet, um Daten mit dem Host auszutauschen. Der FIFO-Speicher fun giert als ein Puffer, der zwischen dem Host und dem Endpunkt ausgetauschte Daten speichert.
  • Die meisten Bus-Transaktionen, die in dem USB-System durchgeführt werden, beginnen mit dem Senden von Paketen, so genannten „Token-Paketen" („token packets"), die Typen und Richtungen der Transaktionen, USB-Geräteadressen und Endpunkt-Nummern enthalten. Während der Transaktion erfolgt die Datenübertragung von dem USB-Gerät zu dem Host, was als „IN"-Richtung bezeichnet wird, oder von dem Host zu dem USB-Gerät, was als „OUT"-Richtung bezeichnet wird. Der Host oder das USB-Gerät, das die Daten empfängt, antwortet darauf mittels eines Handshake-Pakets. Der Typ des Handshake-Pakets, beispielsweise ACK, informiert hinsichtlich eines normalen Datenempfangs, während der andere Typ des Handshake-Pakets, z.B. NAK, darüber informiert, dass ein Fehler beim Datenempfang vorliegt oder dass Daten nicht angekommen sind.
  • Wie hinreichend bekannt ist, stimmt der USB mit dem Kommunikationsstandard für serielle Kommunikation überein und ist deshalb nur in der Lage, zur selben Zeit Daten in einen einzelnen FIFO-Speicher zu schreiben bzw. aus einem derartigen FIFO-Speicher zu lesen. Wenn daher eine Verarbeitungsgeschwindigkeit für Daten, die in der IN/OUT-Richtung ausgetauscht werden, unzureichend ist, sendet das USB-Gerät eine NAK-Antwort, d.h. ein NAK-Handshake-Paket, an den Host. Beim Empfang der NAK-Antwort überträgt der Host das Paket nach einer vorbestimmten Zeit erneut an das USB-Gerät. Nichtsdestotrotz führen zu häufige NAK-Antworten zu einer Verschlechterung der Datenaustauschrate in dem USB-System. Daher sind einige Lösungsansätze vorgeschlagen worden, die eine solche Verschlechterung der Datenaustauschrate vermeiden sollen, beispielsweise ein Anheben einer Systemtaktfrequenz des USB-Geräts oder eine Vergrößerung des FIFO-Speichers. Da die Systemtaktfrequenz proportional zu einer Leistungsaufnahme ist, lässt sich dieser Lösungsansatz jedoch nicht bei einem tragbaren USB-Gerät einsetzen, das mit gerin ger Leistung auskommen muss. Weiterhin würde eine Vergrößerung des FIFO-Speichers unausweichlich die gesamte Chipgröße erhöhen.
  • Der Erfindung liegt das technische Problem zugrunde, eine Endpunkt-Steuervorrichtung und ein Verfahren zum Steuern von Endpunkten für ein Gerät anzugeben, das zwischen einem Host und einer Mehrzahl von Endpunkten mittels eines Universal Serial Bus kommuniziert, die in der Lage sind, die Datenaustauscheffizienz zu erhöhen, ohne die Leistungsaufnahme oder die Chipgröße in einem USB-System zu erhöhen.
  • Die Erfindung löst das Problem mittels einer Vorrichtung mit den Merkmalen des Patentanspruchs 1 und mittels eines Verfahrens mit den Merkmalen des Patentanspruchs 10.
  • Vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben, deren Wortlaut hiermit durch Bezugnahme in die Beschreibung aufgenommen wird, um unnötige Textwiederholungen zu vermeiden.
  • Beispielhafte Ausgestaltungen der vorliegenden Erfindung zielen darauf ab, die oben angegebenen Probleme zu lösen, indem sie eine Endpunkt-Steuervorrichtung und ein Verfahren angeben, die in der Lage sind, die Datenaustauscheffizienz zu verbessern, ohne die Leistungsaufnahme oder die Chipgröße in einem USB-System zu erhöhen.
  • In einer beispielhaften Ausgestaltung allokiert eine Steuereinheit einen Puffer, um zu erreichen, dass jeder Endpunkt mehr als ein Datum empfängt.
  • Vorteilhafte Ausgestaltungen der Erfindung, die weiter unten im Detail beschrieben sind, sind in der Zeichnung dargestellt. Es zeigt/zeigen:
  • 1 ein Blockschaltbild zur Darstellung der Gesamtstruktur eines USB-Systems gemäß einer beispielhaften Ausgestaltung der Erfindung;
  • 2 ein Diagramm zur Darstellung einer Konfiguration eines FIFO-Speicherblocks und eines Merkmals des Allokierens mit FIFO-Speichern bezüglich Endpunkten gemäß einer beispielhaften Ausgestaltung der vorliegenden Erfindung;
  • 3 ein Diagramm zur Darstellung eines Betriebs der FIFO-Steuereinheit gemäß 1;
  • 4 und 5 Flussdiagramme zur Darstellung von Ausgestaltungen eines Endpunkt-Steuerverfahrens zum Austauschen von Daten in einer „OUT"-Richtung; und
  • 6, 7A und 7B Flussdiagramme zur Darstellung beispielhafter Ausgestaltungen eines Endpunkt-Steuerverfahrens zum Austauschen von Daten in einer „IN"-Richtung.
  • Eine fortschrittliche Endpunkt-Steuervorrichtung, die durch beispielhafte Ausgestaltungen der vorliegenden Erfindung bereitgestellt wird, allokiert dynamisch mehr oder zusätzliche FIFO-Speicher in Abhängigkeit von den Nutzungszuständen der FIFO-Speicher, die Endpunkten zu einer ersten Zeit zugewiesen wurden. Auf diese Weise minimiert sie eine Antwort für unnormale Datenübertragungen, d.h. eine negative Antwort oder NAK-Antworten, und verbessert auf diese Weise effektiv die Datenaustauscheffizienz in einem USB-System.
  • 1 ist ein Blockschaltbild zur Darstellung der Gesamtstruktur eines USB-Systems gemäß einer beispielhaften Ausgestaltung der vorliegenden Erfindung.
  • Bezugnehmend auf 1 umfasst das USB-System einen Host 10 und ein USB-Gerät 20, das mit dem Host 10 verbunden ist. Das USB-Gerät 20 weist gemäß der vorliegenden Erfindung eine physikalische Schicht (PHY)-Block 21, einen Verbindungsblock 22, einen Endpunkt-Steuerblock 23 und einen Anwendungsblock 27 auf.
  • Der PHY-Block 21 dient dazu, das USB-Gerät physikalisch mit dem Host 10 zu verbinden. Der Verbindungsblock 22 steuert im Wesentlichen gültige digitale Daten durch Verarbeitung von Daten, die von dem PHY-Block 21 übertragen werden, oder wandelt digitale Daten in Übertragungsdaten um, die in den PHY-Block 21 gesendet werden sollen. Der PHY-Block 21 und der Verbindungsblock 22 können unabhängig voneinander in unterschiedlichen Chips ausgebildet oder in einem einzelnen Verbindungschip integriert sein, der weiterhin eine Steuerfunktion aufweist. Der Anwendungsblock 27 ist dafür eingerichtet, eine durch das USB-Gerät bereitgestellte Funktion auszuführen und umfasst eine Steuerschaltung, wie einen Mikrocontroller oder eine zentrale Prozessoreinheit (CPU).
  • Der Endpunkt-Steuerblock 23 ist zwischen den Verbindungsblock 22 und den Anwendungsblock 27 geschaltet. Der Endpunkt-Steuerblock 23 umfasst einen FIFO-Steuerblock 26 und eine FIFO-Steuereinheit 24.
  • Der FIFO-Speicherblock 26 umfasst einen oder mehrere FIFO-Speicher, die einer Mehrzahl der Endpunkte entsprechen. Jeder FIFO-Speicher kann aus einer primären Speichereinheit, wie einem statischen Speicher mit wahlfreiem Zugriff (static random access memory – SRAM) oder einem Flip-Flop, oder aus einer sekundären Speichereinheit, wie einem Festplattenlaufwerk (hard disk drive – HDD) oder einem dynamischen Speicher mit wahlfreiem Zugriff (dynamic random access memory – DRAM), gebildet sein. Da der FIFO-Speicher mit zwei Ports ausgerüstet ist, ist es erlaubt, gleichzeitig Daten aus dem FIFO-Speicher zu lesen und Daten in den FIFO-Speicher zu schreiben. Aufgrund der charakteristischen Eigenschaft des USB kann eine Datenaustauschoperation zwischen dem FIFO-Speicherblock 26 und dem Anwendungsblock 27 unabhängig von einer Datenaustauschoperation zwischen dem FIFO-Speicherblock 26 und dem Verbindungsblock 22 durchgeführt werden.
  • Eine logische Organisation des USB-Geräts 20 kann als eine Aggregation oder eine Ansammlung von Endpunkten betrachtet werden. Die Endpunkte haben ihre eigenen Identifizierungsnummern, zwischen denen durch Kombination mit Geräteadressen unterschieden wird. Gemäß den Eigenschaften der Endpunkte werden Übertragungsmuster zwischen dem Host 10 und dem USB-Gerät 20 bestimmt. Die Charakteristiken der Endpunkte sind in einem Beschreiber (Descriptor) aufgezeichnet. Der Beschreiber enthält außerdem die Frequenz des Buszugriffs, die Latenzzeit, Bandbreite, Endpunktnummern, die maximale Paketgröße usw. Das USB-Gerät 20 umfasst grundsätzlich Endpunkt0 (Endpoint0), der zum Initialisieren verwendet wird. Endpoint0 wird mit Konfiguration, Status und Steuerinformationen des Buszugriffs für das USB-Gerät 20 eingerichtet. Ein Full-Speed USB-Gerät darf maximal 16 Endpunkte aufweisen, jeder für diesbezügliche Eingabe- und Ausgabeseiten, innerhalb eines eingeschränkten Protokollbereichs, während ein Low-Speed USB-Gerät zusätzlich zu Endpoint0 zwei Endpunkte aufweisen darf.
  • 2 ist ein Diagramm zur Darstellung einer Konfiguration des FIFO-Speicherblocks 26 und eines Merkmals des Allokierens der FIFO-Speicher in Bezug auf Endpunkte gemäß einer beispielhaften Ausgestaltung der vorliegenden Erfindung.
  • Bezugnehmend auf die 1 und 2 wird in dem FIFO-Speicherblock 26 ein FIFO-Speicher für Endpoint0 allokiert, wohingegen zwei FIFO-Speicher für Endpoint1 und Endpoint2 allokiert werden können, während ein FIFO-Speicher für Endpoint3 und Endpoint4 allokiert werden kann.
  • Wie in 2 dargestellt, ist der FIFO-Speicherblock 26 in einen FIFO-Speicher 260 für Endpoint0, eine erste FIFO-Gruppe 261 und eine zweite FIFO-Gruppe 262 unterteilt. Die erste FIFO-Gruppe 261 fungiert als eine FIFO-Speichergruppe, die für Endpunkte bereitgestellt wird, bei denen eine große Datenmenge ausgetauscht wird, wie in einer mobilen Disk. Die erste FIFO-Gruppe 61 kann aus zwei Paaren von FIFO-Speichern 2611 und 2612 sowie 2613 und 2614 für Endpoint1 und Endpoint2 gebildet sein.
  • Beispielsweise werden die beiden FIFO-Speicher 2611 und 2612, die Endpoint1 zugewiesen sind, für die Datenübertragung in der IN-Richtung allokiert. Einer der FIFO-Speicher 2611 und 2612, der keine gültigen Daten enthält, wird einem Write-In-FIFO zugewiesen, in den während Datenübertragung in der IN-Richtung durch den Anwendungsblock 27 geschrieben wird. Der andere der FIFO-Speicher 2611 und 2612, der gültige Daten aufweist, wird einem Read-Out-FIFO zugewiesen, der während der Datenübertragung in der IN-Richtung durch den Host 10 gelesen wird. Andererseits werden die beiden FIFO-Speicher 2613 und 2614, die Endpoint2 zugewiesen sind, für Datenübertragung in der OUT-Richtung allokiert. Einer der FIFO-Speicher 2613 und 2614, der keine gültigen Daten aufweist, wird einem Write-In-FIFO zugewiesen, in den während der Datenübertragung in der OUT-Richtung durch den Host 10 geschrieben wird. Der andere der FIFO-Speicher 2613 und 2614, der gültige Daten aufweist, wird einem Read-Out-FIFO zugewiesen, der während der Datenübertragung in der OUT-Richtung durch den Anwendungsblock 27 gelesen wird. Es sei darauf hingewiesen, dass diese Zuordnungen mit den FIFO-Speichern in den Richtungen der Datenübertragung nur eine anfängliche Einrichtung für allgemeine Lese- und Schreiboperationen darstellen, jedoch in der Verwendung nicht hierauf beschränkt sind. Wie im Folgenden detailliert ausgeführt ist, werden die vier FIFO-Speicher 2611~2614, die zu der ersten FIFO-Gruppe 261 gehören, für die Mehrzahl von Endpunkten, d.h. Endpoint1 und Endpoint2, dynamisch allokiert. Insbesondere wird die Gesamtanzahl von FIFO-Speichern, die dem Endpunkt zugewiesen sind, in Abhängigkeit von einem vollen oder leeren Zustand in einem FIFO- Speicher angepasst, der dem zum Schreiben oder Lesen angeforderten Endpunkt zuvor zugewiesen wurde.
  • Die vier FIFO-Speicher 2611~2614, die in der ersten FIFO-Gruppe 261 enthalten sind, stellen die maximale Paketgröße dar und sind gleichartig ausgebildet. Beispielsweise ist es den FIFO-Speichern 2611~2614 erlaubt, in der maximalen Paketgröße von 256 Byte ausgebildet zu sein, und sie sind jeweils Eingängen mit jeweils 256 Byte zugeordnet. Die FIFO-Speicher 2611~2614 können in der Einheit der maximalen Paketgröße verwaltet werden oder können anteilig in Einheiten mehrerer Datensektoren geregelt werden, die kleiner als die maximale Paketgröße sind. Für diese Verwaltung kann jeder FIFO-Speicher ein einzelnes physikalisches Speicherfeld aufweisen oder kann in eine Mehrzahl von Speichersektoren segmentiert sein.
  • Während gemäß 2 die FIFO-Speicher 2611 und 2612, die als „Endpoint1/2 FIFO" bezeichnet sind, zu einer ersten Zeit für die Transaktion für Endpoint1 allokiert sind, werden sie auch für Endpoint2 verwendet. Des Weiteren werden die FIFO-Speicher 2613 und 2614, die als „Endpoint2/1 FIFO" bezeichnet sind, auch für Endpoint1 verwendet, obwohl sie zu der ersten Zeit für die Transaktion für Endpoint2 allokiert wurden.
  • Wenn beispielsweise alle FIFO-Speicher 2611 und 2612, die Endpoint1 zugewiesen sind, benutzt werden, allokiert die FIFO-Steuereinheit 24 als einen zusätzlichen FIFO-Speicher die FIFO-Speicher 2613 und 2614, die in einem leeren Zustand vorbereitet sind, in Abhängigkeit von einer Voll-/Leer-Statusinformation. Diese zusätzliche Allokierung von FIFO-Speicher wird vorab durch die FIFO-Steuereinheit 24 vorgenommen, bevor eine Anforderung für Write-In/Read-Out zum Endpoint1 erzeugt wird. Auf diese Weise beginnt die Write-In-/Read-Out-Operation sofort mit dem zusätzlichen FIFO-Speicher, wenn eine Anforderung für eine Write-In-/Read-Out-Operation zum Endpoint1 ergeht. In diesem Fall werden die FIFO-Speicher 2613 und 2614 logisch für Endpoint1 verwendet, obwohl sie phy sikalisch für Endpoint2 ausgebildet oder angeordnet sind. Die FIFO-Steuereinheit 24 speichert derartige Abbildungsinformationen der FIFO-Speicher in der Abbildungsinformations-Speichereinheit 242. Die Abbildungsinformations-Speichereinheit 242 speichert die Abbildungsinformationen hinsichtlich Endpunkten, d.h. Informationen bezüglich der logischen Endpunkte, die Adressen entsprechen, welche von dem Anwendungsblock 27 eingegeben werden, und Endpunkte, d.h. Informationen über den physikalischen Endpunkt, der praktische Daten enthält.
  • Wie hinreichend bekannt ist, handelt es sich bei USB um ein Gerät mit einem Kommunikationsprotokoll zum Ausführen serieller Kommunikation. Daher ist es erlaubt, eine Write-In-/Read-Out-Operation zu einem Endpunkt nur einmalig vorzunehmen. Eine beispielhafte Ausgestaltung der vorliegenden Erfindung ermöglicht es, den FIFO-Speicher eines bestimmten Endpunktes, der gegenwärtig nicht verwendet wird, einem anderen Endpunkt zuzuweisen, indem die inhärente Eigenschaft des USB verwendet wird. Gemäß dieser Abbildungseigenschaft ist es möglich, Write-In-/Read-Out-Daten mit jedem Endpunkt dynamisch zu speichern, ohne eine Größe des FIFO-Speichers zu erhöhen. Im Ergebnis führt dies dazu, dass die Anzahl negativer Antworten, d.h. NAK-Antworten, aufgrund unzureichender Kapazität des FIFO-Speichers, der dem Endpunkt zugewiesen ist, spürbar reduziert wird, wodurch die Verschlechterung der Betriebsgeschwindigkeit beim Übertragen von Daten minimiert wird.
  • Die zweite FIFO-Gruppe 262 ist dazu vorgesehen, Austauschoperationen für kleinvolumige Daten, wie ein ASDL-Modem oder einen MP3-Player, durchzuführen. Die zweite FIFO-Gruppe 262 umfasst einen FIFO-Speicher 2621, der Endpoint3 zugewiesen ist, und einen FIFO-Speicher 2622, der Endpoint4 zugewiesen ist. Nichtsdestotrotz handelt es sich bei diesem Abbildungsmuster ohne Beschränkung nur um eine anfängliche Anordnung. Speziell können die beiden FIFO-Speicher 2621 und 2622 der zweiten FIFO-Gruppe 262 ebenso wie die erste FIFO-Gruppe 261 flexibel für den Endpoint3 und den Endpoint4 allokiert werden. Die beiden FIFO- Speicher 2621~2622, die in der zweiten FIFO-Gruppe 262 enthalten sind, stellen die maximale Paketgröße dar und sind untereinander gleich ausgebildet. Beispielsweise ist es erlaubt, dass die FIFO-Speicher 2621~2622 mit der maximalen Paketgröße von 128 Byte ausgebildet und jeweils für Einträge mit jeweils 128 Byte allokiert sind. Die maximale Paketgröße ist in Abhängigkeit von einer Datenübertragungsmenge und der Fähigkeit eines Datenmanagements durch die FIFO-Steuereinheit 24 veränderbar. Des Weiteren können die FIFO-Speicher 2621~2622 in der Einheit der maximalen Paketgröße verwaltet werden, oder sie können anteilig in Einheiten einer Mehrzahl von Datensektoren reguliert werden, die kleiner als die maximale Paketgröße sind. Für diese Verwaltung kann jeder FIFO-Speicher ein einzelnes physikalisches Speicherfeld aufweisen oder kann in eine Mehrzahl von Speichersektoren segmentiert sein.
  • Während in 2 der FIFO-Speicher 2621, der als „Endpoint3/4 FIFO" bezeichnet ist, zu einer ersten Zeit für eine Transaktion für Endpoint3 allokiert ist, kann er auch für Endpoint4 verwendet werden. Des Weiteren kann der FIFO-Speicher 2622, der als „Endpoint4/3 FIFO" bezeichnet ist, auch für Endpoint3 verwendet werden, obwohl er zu der ersten Zeit für eine Transaktion für Endpoint4 allokiert wurde. Dieses Allokierungsschema mit den FIFO-Speichern 2621 und 2622 der zweiten FIFO-Gruppe 262 für die Endpunkte entspricht im Wesentlichen demjenigen für die FIFO-Speicher 2611~2614 der ersten FIFO-Gruppe 261, jedoch mit unterschiedlichen Ziel-FIFO-Speichern.
  • 3 ist ein Diagramm zur Darstellung eines Betriebs der FIFO-Steuereinheit 24, die in 1 gezeigt ist. Bezugnehmend auf die 1 und 3 überwacht die FIFO-Steuereinheit 24 Datenspeicherzustände des FIFO-Speicherblocks 26 und steuert Daten-Write-In-/Read-Out-Operationen in dem FIFO-Speicherblock 26. Die FIFO-Steuereinheit 24 weist eine Statusinformations-Speichereinheit 241 und eine Abbildungsinformations-Speichereinheit 242 auf.
  • Die Statusinformations-Speichereinheit 241 speichert Informationen, die anzeigen, ob die FIFO-Speicher des FIFO-Speicherblocks 26 sich in gültigen Zuständen befinden, oder sie speichert Statusinformationen in Bezug darauf, ob die FIFO-Speicher voll oder leer sind. Für diese Funktion kann die Statusinformations-Speichereinheit 241 aus einem Status-Transferregister gebildet sein, das hinsichtlich der Anzahl von Daten unterrichtet, die in jedem der FIFO-Speicher gespeichert sind. Die Abbildungsinformations-Speichereinheit 242 speichert Abbildungsinformationen über einen Endpunkt, d.h. einen logischen Endpunkt, der einer Eingangsadresse entspricht, und über einen Endpunkt, d.h. einen physikalischen Endpunkt, der praktische Daten enthält. Die Abbildungsinformations-Speichereinheit 242 ist in der Lage, weitere Informationen bezüglich der Übertragungsrichtung zusätzlich zu den Abbildungsinformationen zu enthalten. Die Abbildungsinformationen, die in der Abbildungsinformations-Speichereinheit 242 gespeichert sind, können in Form einer Tabelle oder als Zeiger abgelegt sein. Strukturelle Eigenschaften der Abbildungsinformations-Speichereinheit 242 können veränderbar sein und durch den Fachmann modifiziert werden.
  • Wenn eine Write-In-/Read-Out-Anforderung von dem Verbindungsblock 22 oder dem Anwendungsblock 27 erfolgt, transferiert die FIFO-Steuereinheit 24 eine Write-In-/Read-Out-Adresse Write Add/Read Add sowie Daten, ein Aktivierungssignal und ein Taktsignal CLK in Abhängigkeit von einer Adresse ADD, Endpunktinformationen und Transferrichtungs-Informationen zu dem FIFO-Speicher 26. Speziell allokiert die FIFO-Steuereinheit 24 vorab den Endpunkt des FIFO-Speichers, der in einem leeren Zustand eingerichtet ist, d.h. einem Zustand, der es ermöglicht, Daten auf der Grundlage von Informationen zu speichern, die in der Abbildungsinformations-Speichereinheit 242 gespeichert sind. Während dieser Zeit ist jedem Endpunkt der FIFO-Speicher zugeordnet, um weiterhin mehr Daten zu empfangen, und seine logische Adresse, d.h. eine Adresse, für die eine Write-In- oder Read-Out-Operation von dem Verbindungsblock 22 oder dem Anwendungsblock 27 angefordert wird, muss nicht mit seiner physikalischen Adresse übereinstimmen, bei der es sich um eine Adresse handelt, bei der praktische Daten geschrieben oder gelesen werden. Die FIFO-Steuereinheit 24 bestimmt, ob zu speichernde Daten Write-In- oder Read-Out-Daten sind, wenn eine Write-In-/Read-Out-Anforderung von dem Verbindungsblock 22 oder dem Anwendungsblock 27 ergeht, und speichert die Daten in seinem entsprechenden FIFO-Speicher. Durch das Allokieren der FIFO-Speicher für jeden Eintrag mittels dieser beispielhaften Ausgestaltung der vorliegenden Erfindung kann das System derart konfiguriert werden, dass die Anzahl der FIFO-Speicher innerhalb eines erlaubten Bereichs angepasst wird, ohne auf einen festen Wert begrenzt zu sein. Unter Bezugnahme auf 3 und Tabelle 1 wird nachfolgend ein Betrieb der FIFO-Steuereinheit 24 beschrieben. [Tabelle 1]
    Figure 00120001
  • Die obige Tabelle 1 enthält Informationen, d.h. Informationen über den Voll-/Leer-Zustand, der Validierungs- oder Gültigkeitszustände für die FIFO-Speicher darstellt, sowie Abbildungsinformationen über logische und physikalische Endpunkte. Diejenigen Informationen, welche die Validierung oder Gültigkeit der FIFO-Speicher repräsentieren, sind in der Statusinformations-Speichereinheit 241 gespeichert, und die Informationen betreffend die logischen und physikalischen Endpunkte sind in der Abbildungsinformations-Speichereinheit 242 gespeichert.
  • In Tabelle 1 steht Endpoint# für eine Identifizierungsnummer des Endpunktes. 7 Bit an gültigen Daten geben an, ob Daten in den FIFO-Speichern vorhanden sind, d.h. die Voll-/Leer-Zustände der FIFO- Speicher. In den 7 Bit an gültigen Daten sind die Bits ausgehend von dem MSB angeordnet und entsprechen den physikalischen Adressen der FIFO-Speicher, d.h. A, B, C, D, E, F und G. Wenn beispielsweise ein bestimmter Endpunkt einen FIFO-Speicher mit einer physikalischen Adresse D verwendet und dieser FIFO-Speicher gültige Daten speichert, wird ein gültiges Datenbit, das der physikalischen Adresse D entspricht, auf „1" gesetzt. Dann wird ein gültiges Datenbit des FIFO-Speichers, das einer physikalischen Adresse entspricht, die nicht verwendet wird oder bei der keine gültigen Daten gespeichert sind, obwohl sie benutzt wird, auf „0" gesetzt. In Tabelle 1 bedeutet dies für Endpoint0, der den gültigen Daten „0000000" entspricht, dass Endpoint0 keinen der FIFO-Speicher verwendet. Endpoint1 entspricht den gültigen Daten „0001100", was bedeutet, dass Endpoint1 die FIFO-Speicher mit physikalischen Adressen D und E verwendet, die gültige Daten speichern. In Tabelle 1 existieren drei „1 "-er (zwei für Endpoint1 und einer für Endpoint3) über alle Elemente der gültigen Daten. Dies bedeutet, dass unter sieben FIFO-Speichern drei FIFO-Speicher in vollen oder gefüllten Zuständen eingerichtet sind, während die restlichen vier FIFO-Speicher als leere FIFO-Speicher eingerichtet sind.
  • In Tabelle 1 zeigen die mit dem Lesezeiger bezeichneten Elemente die physikalischen Adressen der FIFO-Speicher an, aus denen Daten in Abhängigkeit von Read-Out-Anforderungen gelesen werden, die von dem Verbindungsblock 22 oder dem Anwendungsblock 27 erzeugt werden. Die mit dem Schreibzeiger bezeichneten Elemente zeigen die physikalischen Adressen der FIFO-Speicher an, aus denen Daten in Abhängigkeit von Write-In-Anforderungen gelesen werden, die von dem Verbindungsblock 22 oder dem Anwendungsblock 27 erzeugt werden. In Tabelle 1 stellen die mit FIFO-Richtung bezeichneten Elemente Richtungen der Datenübertragung während einer Transaktion dar. Die Richtung „IN" bedeutet eine Datenübertragung von dem USB-Gerät 20 zu dem Host 10, während die Richtung „OUT" eine Datenübertragung von dem Host 10 zu dem USB-Gerät 20 bedeutet. Während der Datenübertragung in der „IN"-Richtung wird in dem Anwendungsblock 27 eine Write-In-Operation durchgeführt, und in dem Verbindungsblock 22 wird eine Read-Out-Operation durchgeführt. Anderenfalls wird während der „OUT"-Richtung die Write-In-Operation im Verbindungsblock 22 durchgeführt, und die Read-Out-Operation wird in dem Anwendungsblock 27 durchgeführt.
  • Wenn in Tabelle 1 eine Daten-Write-In-Anforderung zum Schreiben von Daten in dem Endpoint1 durch den Host 10 erzeugt wird, werden Write-In-Daten in den FIFO-Speicher gespeichert, d.h. bei der Adresse B, die durch den Schreibzeiger bestimmt wird. Währenddessen werden Statusinformationen bezüglich der Datenspeicherung in dem FIFO-Speicher, d.h. bei der Adresse B von „0" auf „1" aktualisiert. Die aktualisierten Datenspeicherungsstatusinformationen werden in der Statusinformations-Speichereinheit 241 gespeichert. Nach dem Speichern von Daten in dem gegenwärtigen Write-In-FIFO-Speicher, d.h. bei der Adresse B gemäß dem Lesezeiger selektiert die FIFO-Steuereinheit 24 für die Allokierung einen neuen unter den FIFO-Speichern, die in den leeren Zuständen eingerichtet sind. Der Schreibzeiger wird mit einem neuen Wert aktualisiert, um auf diese Weise den neu allokierten FIFO-Speicher zu bestimmen. Die Allokierungsinformationen für den aktualisierten FIFO-Speicher, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gesichert. Die Eintragswerte für Endpoint1 sind in der nachstehenden Tabelle 2 angegeben. [Tabelle 2]
    Figure 00140001
  • Gemäß dem Erstellungsmerkmal für die Write-In-Operation und den Schreibzeiger kann jeder Endpunkt so eingestellt werden, dass er zusätzliche Daten zu den dort bereits vorab gespeicherten Daten empfängt.
  • Wenn jedoch alle FIFO-Speicher in den gefüllten Zuständen eingerichtet sind, ist es unmöglich, einen zusätzlichen FIFO-Speicher zu allokieren.
  • Bezugnehmend auf Tabelle 2 werden für den Fall, dass eine Read-Out-Anforderung für die „OUT"-Richtung für Endpoint1 durch den Anwendungsblock 27 ergeht, Daten aus dem FIFO-Speicher, d.h. von der physikalischen Adresse D gelesen, die durch den Lesezeiger bestimmt wird. Die Read-Out-Daten werden zu dem Anwendungsblock 27 übertragen, und anschließend werden die Statusinformationen für die Datenspeicherung in dem FIFO-Speicher, d.h. bei der Adresse D von „1" nach „0" aktualisiert. Diese aktualisierten Statusinformationen bezüglich der Datenspeicherung werden in der Statusinformations-Speichereinheit 241 gesichert. Nach dem Lesen von Daten aus dem voreingestellten FIFO-Speicher, d.h. bei der Adresse D wird die FIFO-Steuereinheit 24 aktualisiert, sodass der Lesezeiger einen FIFO-Speicher, d.h. die Adresse E bestimmt, in dem bzw. bei der gültige Daten gespeichert sind. Allokierungsinformationen des aktualisierten FIFO-Speichers, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert. Während dieser Aktualisierung sind die Eintragswerte, die Endpoint1 entsprechen, in Tabelle 3 angeordnet. [Tabelle 3]
    Figure 00150001
  • Wie unten beschrieben, analysiert die FIFO-Steuereinheit 24 gemäß der beispielhaften Ausgestaltung der vorliegenden Erfindung die Write-In-/Read-Out-Operationen des Verbindungsblocks 22, der in dem USB-Gerät 20 enthalten ist, und allokiert in flexibler Weise die FIFO-Speicher für die Write-In-/Read-Out-Operationen auf der Grundlage des Analyseergebnisses. Die FIFO-Steuereinheit 24 schreibt außerdem Write-In-/Read-Out- Daten in den allokierten FIFO-Speicher. Eine derartige dynamische Allokierung des FIFO-Speichers wird in Echtzeit durchgeführt. Die obige Beschreibung betrifft die Write-In- und Read-Out-Operationen, die während einer Datenübertragung in der „OUT"-Richtung durchgeführt werden. Obwohl die vorstehende Beschreibung sich nicht mit der Datenübertragung in der „IN"-Richtung beschäftigt, sind die Vorgänge beim Allokieren/Aktualisieren des FIFO-Speichers und beim Schreiben/Lesen von Daten grundsätzlich die gleichen wie in der „OUT"-Richtung, unterscheiden sich jedoch von dem letztgenannten Fall in Bezug auf die Datentransferrichtung. Datenaustausch (Senden + Empfangen) der „OUT"- und der „IN"-Richtung wird detaillierter unter Bezugnahme auf 4 bis 7 beschrieben.
  • Die FIFO-Steuereinheit 24 gemäß der beispielhaften Ausgestaltung der Erfindung ist in der Lage, die Größe des FIFO-Speicherblocks, der jedem Endpunkt zugewiesen ist, anzupassen. Speziell regelt die FIFO-Steuereinheit 24 in flexibler Weise die Abbildungsoperationen für die Endpunkte und FIFO-Speicher in Übereinstimmung mit der gesamten Speicherkapazität des FIFO-Speicherblocks 26, der anteilig zu verwaltenden Datengröße, der Anzahl zu unterstützender Endpunkte und einem Umstand, der angibt, ob die FIFO-Struktur physikalisch aus einzelnen Speichern oder einer Mehrzahl von Speichern gebildet ist.
  • Wenn die maximale Paketgröße der FIFO-Speicher 2611~2614, die in der ersten FIFO-Gruppe 261 enthalten sind, unter Bezugnahme auf 2 beispielsweise 256 Byte beträgt, ist die FIFO-Steuereinheit 24 in der Lage, die FIFO-Speicher für einen Puffer für die IN-/OUT-Operation, d.h. für die Daten-Write-In-/Read-Out-Operation für jeden Endpunkt zu allokieren. Während dieser Operation werden die Daten, die in dem neu allokierten FIFO-Speicher gespeichert sind, in Einheiten von 256 Byte gesteuert.
  • Zusätzlich kann jeder FIFO-Speicher mit einer Einheit aus mehreren Datenbits innerhalb des Bereichs der maximalen Paketgröße gesteuert werden. Beispielsweise sind in jedem FIFO-Speicherstrang 256 Byte als Ganzes in zwei Speicherfelder unterteilt, von denen jedes 128 Byte an Daten speichert. Wenn einer der FIFO-Speicher 2611 und 2612, die für Endpoint1 eingerichtet sind, dem Endpoint2 zugewiesen wird, ist die FIFO-Steuereinheit 24 in der Lage, die 128 Byte an Daten, die sequentiell in den beiden Speicherfeldern gespeichert sind, in den neu allokierten FIFO-Speichern 2611 oder 2612 anzuordnen. Durch diese Konfiguration ist es möglich, die Abbildungsoperationen mit Endpunkten und FIFO-Speichern in Übereinstimmung mit einer Größe der Daten, die in den FIFO-Speicher geschrieben oder daraus gelesen werden, effizient zu steuern, ohne die FIFO-Speicher zu verbrauchen. Obwohl die vorstehende Beschreibung den Fall beschreibt, bei dem die Endpunkte und die für diese allokierten FIFO-Speicher unter den FIFO-Speichern zu der ersten FIFO-Gruppe 261 gehören, handelt es sich dabei nur um eine beispielhafte Ausgestaltung, die zum Verständnis dieser beispielhaften Ausgestaltung der vorliegenden Erfindung beitragen soll. In dem Fall, dass die Datengröße für jeden FIFO-Speicher kleiner eingestellt wird, kann es möglich sein, die Allokierung mit FIFO-Speichern unter den FIFO-Speichern 2611~2614 der ersten FIFO-Gruppe 261 und den FIFO-Speichern 2621 und 2622 der zweiten FIFO-Gruppe 262 durchzuführen.
  • Es folgt eine detaillierte Beschreibung des Verfahrens zum Steuern der Endpunkte für Datenübertragungsrichtungen in den „IN"- und „OUT"-Modi.
  • 4 und 5 sind Flussdiagramme, die beispielhafte Ausgestaltungen eines Endpunkt-Steuerverfahrens zum Austauschen von Daten in der „OUT"-Richtung zeigen. 4 zeigt Möglichkeiten zum Schreiben von Daten, die von dem Host 10 gemäß 1 während der Datenübertragung in „OUT"-Richtung eingegeben wurden, in einen Write-In-FIFO-Speicher eines ausgewählten Endpunkts und zum Allokieren eines neuen Write-In-FIFO-Speichers.
  • Bezugnehmend auf die 1, 2 und 4 empfängt die FIFO-Steuereinheit 24 die Write-In-Daten D und die Adresse ADD, die zum Datenaustausch in der „OUT"-Richtung verwendet werden sollen, von dem Host 10 (Schritt S1100). Die Daten D und die Adresse ADD werden der FIFO-Steuereinheit 24 durch den Host 10 über den Verbindungsblock 22 bereitgestellt. Die FIFO-Steuereinheit 24 ermittelt, ob die Datenspeicherungsstatusinformationen des FIFO-Speichers, der durch den Schreibzeiger des Endpunkts bestimmt ist, in dem die Daten D gespeichert werden sollen, auf „1" gesetzt ist (Schritt S1200). Die Statusinformation mit dem Wert „1" bedeutet, dass es nicht möglich ist, die Daten, die in Schritt S1100 eingegeben wurden, zusätzlich in dem Write-In-FIFO-Speicher des entsprechenden Endpunkts zu speichern, da dieser mit Daten gefüllt ist. Wie nachfolgend detailliert beschrieben wird, ist die beispielhafte Ausgestaltung der vorliegenden Erfindung dazu ausgebildet, den FIFO-Speicher so einzustellen, dass dieser in der Lage ist, mehr Daten für jeden Endpunkt zu empfangen. Somit bedeutet ein Umstand, dass der Write-In-FIFO-Speicher, der durch den Schreibzeiger bestimmt ist, keine weiteren Daten empfangen kann, dass alle FIFO-Speicher bereits mit Daten gefüllt sind.
  • Ausgehend von der Bestimmung in Schritt S1200, ob die Datenspeicherungs-Statusinformation des Write-In-FIFO-Speichers auf „1" gesetzt ist, d.h. ob alle FIFO-Speicher mit Daten gefüllt sind, erzeugt sie eine negative Antwort (NAK-Antwort) an den Host 10 (Schritt S1900). Wenn sich anderenfalls aus der Bestimmung in Schritt S1200 ergibt, dass die Datenspeicherungs-Statusinformation des Write-In-FIFO-Speichers von „1" abweicht, d.h., dass sie auf „0" gesetzt ist, werden die Write-In-Daten D in dem Write-In-FIFO-Speicher gespeichert (Schritt S1300). Anschließend erzeugt sie eine ACK-Antwort an den Host 10 (Schritt S1400). Nach dem Speichern der Daten in dem Write-In-FIFO-Speicher werden Statusinformationen des Write-In-FIFO-Speichers von „0" auf „1" aktualisiert (Schritt S1500). Die aktualisierten Statusinformationen des FIFO-Speichers werden in der Statusinformations-Speichereinheit 241 gespeichert.
  • Anschließend wird bestimmt, ob alle FIFO-Speicher mit Daten gefüllt sind (Schritt S1600). Von der Bestimmung in Schritt S1600 ausgehend wird dann, wenn alle FIFO-Speicher mit Daten gefüllt sind, ein neuer Write-In-FIFO-Speicher zusätzlich allokiert (Schritt S1700). Anschließend werden die Abbildungsinformationen aktualisiert, sodass der Schreibzeiger den neuen Write-In-FIFO-Speicher anzeigt (Schritt S1800). Allokierungsinformationen für die aktualisierten FIFO-Speicher, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert. Ausgehend von der Bestimmung in Schritt S1600 wird dann, wenn alle FIFO-Speicher bereits mit Daten gefüllt sind und ein neuer Write-In-FIFO-Speicher nicht zusätzlich allokiert werden kann, das Verfahren beendet.
  • 5 zeigt Möglichkeiten zum Übertragen von Daten, die aus einem Write-In-FIFO-Speicher eines Endpunkts während der Datenübertragung in der „OUT"-Richtung gelesen wurden, zu dem Anwendungsblock 27 in 1 und zum Allokieren eines neuen Write-In-FIFO-Speichers.
  • Bezugnehmend auf 5 ermittelt der Anwendungsblock 27 zunächst, ob Daten in einem zu lesenden Endpunkt vorhanden sind. Für diese Operation bestimmt die FIFO-Steuereinheit 24, ob Datenspeicherungsstatusinformationen eines Read-Out-FIFO-Speichers, der durch den Lesezeiger eines entsprechenden Endpunkts bestimmt ist, auf „1" gesetzt sind (Schritt S2200). Dieses Bestimmungsergebnis wird an den Anwendungsblock 27 übertragen. Hierbei bedeutet ein Wert „1" für die Statusinformationen, dass Daten in dem entsprechenden FIFO-Speicher gespeichert sind.
  • Ausgehend von dem Bestimmungsergebnis in Schritt S2200 werden dann, wenn die Datenspeicherungsstatusinformationen des Read-Out-FIFO-Speichers auf „1" gesetzt sind, d.h., wenn dort zu lesende Daten vorhanden sind, die Daten D aus dem entsprechenden Read-Out-FIFO-Speicher gelesen (Schritt S2300). Die Read-Out-Daten werden zu dem Anwendungsblock 27 übertragen (Schritt S2400). Anschließend werden die Statusinformationen des Read-Out-FIFO-Speichers von „1" auf „0" aktualisiert (Schritt S2500). Die aktualisierten Statusinformationen des FIFO-Speichers werden in der Statusinformations-Speichereinheit 241 gesichert.
  • Anschließend werden die Abbildungsinformationen aktualisiert, sodass der Lesezeiger den nächsten FIFO-Speicher bestimmt, der gültige Daten enthält (Schritt S2550). Die aktualisierten Allokierungsinformationen des FIFO-Speichers, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert.
  • In dem Endpunkt-Steuerschema gemäß der beispielhaften Ausgestaltung der vorliegenden Erfindung werden Statusinformationen des Schreibzeigers geprüft, um den FIFO-Speicher in die Lage zu versetzen, dass jeder Endpunkt mehr Daten empfängt. Speziell wird bestimmt, dass die Datenspeicherungs-Statusinformation eines Write-In-FIFO-Speichers, der durch den Schreibzeiger bestimmt wird, auf „1" gesetzt ist (Schritt S2600). Ausgehend von der Bestimmung in Schritt S2600 werden die Datenspeicherungsstatusinformationen des Write-In-FIFO-Speichers auf „1" gesetzt, und ein neuer Write-In-FIFO-Speicher wird für diesen allokiert (Schritt S2700). Der Umstand, dass die Datenspeicherungsstatusinformationen des Write-In-FIFO-Speichers bei „1" bleiben, bedeutet, dass alle FIFO-Speicher bereits in Schritt S1600 gemäß 4 mit Daten gefüllt eingerichtet wurden. In der beispielhaften Ausgestaltung der vorliegenden Erfindung ist nach Abschluss der Read-Out-Operation in den Schritten S2300 bis S2500 wenigstens einer der FIFO-Speicher in dem leeren Zustand eingerichtet. Somit ist es möglich, einen neuen Write-In-FIFO-Speicher zu allokieren.
  • Nach dem Allokieren des neuen Write-In-FIFO-Speichers in Schritt S2700 werden die Abbildungsinformationen aktualisiert, sodass der Schreibzeiger den neuen Write-In-FIFO-Speicher bestimmt (Schritt S2800). Die aktualisierten Allokierungsinformationen des FIFO-Speichers, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert.
  • 6, 7A und 7B sind Flussdiagramme zur Darstellung beispielhafter Ausgestaltungen eines Endpunkt-Steuerverfahrens zum Austausch von Daten in der „IN"-Richtung. 6 zeigt Möglichkeiten zum Speichern von Daten, die von dem Anwendungsblock 27 während der Datenübertragung in der „IN"-Richtung übertragen wurden, in einen Write-In-FIFO-Speicher eines ausgewählten Endpunkts und zum Allokieren eines neuen Write-In-FIFO-Speichers.
  • Bezugnehmend auf die 1, 3 und 6 empfängt die FIFO-Steuereinheit 24 die Write-In-Daten D, die für den Datenaustausch in der „IN"-Richtung verwendet werden sollen, von dem Anwendungsblock 27 sowie eine zu schreibende Endpunkt-Nummer (Schritt S3100). Die FIFO-Steuereinheit 24 ermittelt, ob alle FIFO-Speicher, die dem entsprechenden Endpunkt zugeordnet sind, mit Daten gefüllt sind. Für diese Operation bestimmt die FIFO-Steuereinheit 24, ob die Datenspeicherungsstatusinformationen des FIFO-Speichers, der durch den Schreibzeiger des entsprechenden Endpunkts bezeichnet ist, auf „1" gesetzt sind (Schritt S3200). Der Wert „1" für die Statusinformation in dem Write-In-FIFO-Speicher bedeutet, dass der entsprechende Write-In-FIFO-Speicher bereits Daten enthält, und zeigt somit an, dass alle FIFO-Speicher, die dem entsprechenden Endpunkt zugeordnet sind, bereits mit Daten gefüllt sind.
  • Ausgehend von der Bestimmung in Schritt S3200 wird dann, wenn die Datenspeicherungsstatusinformationen des Write-In-FIFO-Speichers auf „1" gesetzt sind, d.h., wenn alle FIFO-Speicher des entsprechenden Endpunkts mit Daten gefüllt sind, dem Anwendungsblock 27 nicht gestattet, mit der Daten-Write-In-Operation fortzufahren. Wenn sich andererseits aus der Bestimmung in Schritt S3200 ergibt, dass die Datenspeicherungsstatusinformationen des Write-In-FIFO-Speichers nicht gleich „1" sind, d.h., dass sie auf „0" gesetzt sind, werden die Write-In-Daten D in dem entspre chenden Write-In-FIFO-Speicher gespeichert (Schritt S3300). Anschließend werden die Statusinformationen des Write-In-FIFO-Speichers von „0" auf „1" aktualisiert (Schritt S3500). Die aktualisierten Statusinformationen des FIFO-Speichers werden in der Statusinformations-Speichereinheit 241 gespeichert.
  • In Fortführung des Verfahrens wird bestimmt, ob alle FIFO-Speicher mit Daten gefüllt sind (Schritt S3600). Ausgehend von der Bestimmung in Schritt S3600 wird dann, wenn alle FIFO-Speicher mit Daten gefüllt sind, ein neuer Write-In-FIFO-Speicher zusätzlich allokiert (Schritt S3700). Anschließend werden die Abbildungsinformationen aktualisiert, sodass der Schreibzeiger den neuen Write-In-FIFO-Speicher angibt (Schritt S3800). Allokierungsinformationen für den aktualisierten FIFO-Speicher, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert. Wenn sich aus der Bestimmung in Schritt S3600 ergibt, dass alle FIFO-Speicher mit Daten gefüllt sind, kann ein neuer Write-In-FIFO-Speicher nicht zusätzlich allokiert werden, und das Verfahren wird beendet.
  • 7A und 7B zeigen beispielhafte Verfahren zum Übertragen von Daten, die aus einem Write-In-FIFO-Speicher eines Endpunkts während der Datenübertragung in der „OUT"-Richtung gelesen wurden, zu dem Host 10 und zum Allokieren eines neuen Write-In-FIFO-Speichers.
  • Bezugnehmend auf 7A und 7B erzeugt der Host 10 ein IN-Token, um Daten, d.h. IN-Daten anzufordern, die von einem entsprechenden Endpunkt gelesen werden sollen (Schritt S4100). Die FIFO-Steuereinheit 24 bestimmt, ob Datenspeicherungsstatusinformationen eines Read-Out-FIFO-Speichers, der durch den Lesezeiger eines entsprechenden Endpunkts bestimmt ist, auf „1" gesetzt sind (Schritt S4200). Ein Wert „1" für die Statusinformationen bedeutet, dass Daten in dem entsprechenden FIFO-Speicher gespeichert sind.
  • Ausgehend von der Bestimmung in S4200 wird dann, wenn die Datenspeicherungsstatusinformationen des Read-Out-FIFO-Speichers nicht auf „1" gesetzt sind, d.h., wenn dort keine zu lesenden Daten vorhanden sind, eine negative Antwort (NAK-Antwort) an den Host 10 erzeugt (Schritt S4900). Ausgehend von der Bestimmung in Schritt S4200 werden dann, wenn die Datenspeicherungsstatusinformationen des Read-Out-FIFO-Speichers auf „1" verbleiben, d.h., wenn dort zu lesende Daten vorhanden sind, die Daten D aus dem entsprechenden Read-Out-FIFO-Speicher gelesen (Schritt S4300). Die gelesenen Daten werden über den Verbindungsblock 22 zu dem Host 10 übertragen.
  • Anschließend wird bestimmt, ob eine ACK-Antwort durch den Host 10 erzeugt wurde (Schritt S4400). Ausgehend von der Bestimmung in Schritt S4400 wird dann, wenn durch den Host 10 die ACK-Antwort nicht erzeugt wurde, das Verfahren am Anfang wieder aufgenommen. Ausgehend von der Bestimmung in Schritt S4400 werden dann, wenn die ACK-Antwort durch den Host 10 erzeugt wurde, die Statusinformationen des Read-Out-FIFO-Speichers von „1" auf „0" aktualisiert (Schritt S4500). Die aktualisierten Statusinformationen des FIFO-Speichers werden in der Statusinformations-Speichereinheit 241 gespeichert. Anschließend werden die Abbildungsinformationen aktualisiert, sodass der Lesezeiger den nächsten FIFO-Speicher angibt, der gültige Daten enthält (S4550). Die aktualisierten Allokierungsinformationen des FIFO-Speichers, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert.
  • Gemäß dem Endpunkt-Steuerschema in Übereinstimmung mit der beispielhaften Ausgestaltung der vorliegenden Erfindung werden Statusinformationen des Schreibzeigers überprüft, um den FIFO-Speicher in die Lage zu versetzen, dass jeder Endpunkt mehr Daten empfängt. Für diese Funktion wird bestimmt, dass die Datenspeicherungs-Statusinformation eines Write-In-FIFO-Speichers, der durch den Schreibzeiger bestimmt ist, auf „1" gesetzt ist (Schritt S4600). Ausgehend von der Bestimmung in Schritt S4600 werden die Datenspeicherungsstatusinformationen des Write-In-FIFO-Speichers auf „1" gesetzt, und ein neuer Write-In-FIFO-Speicher wird zusätzlich hierfür allokiert (Schritt S4700). Der Umstand, dass die Datenspeicherungs-Statusinformation des Write-In-FIFO-Speichers auf „1" bleibt, bedeutet, dass alle FIFO-Speicher bereits zuvor mit Daten gefüllt eingerichtet wurden (in Schritt S3600 in 4). Bei der beispielhaften Ausgestaltung der vorliegenden Erfindung ist nach Abschluss der Read-Out-Operation in den Schritten S4300 bis S4500 wenigstens einer der FIFO-Speicher in dem leeren Zustand eingerichtet. Somit ist es möglich, hierfür zusätzlich einen neuen Write-In-FIFO-Speicher zu allokieren. Nach dem Allokieren des neuen Write-In-FIFO-Speichers werden die Abbildungsinformationen aktualisiert, sodass der Schreibzeiger den neuen Write-In-FIFO-Speicher angibt (Schritt S4800). Die aktualisierten Allokierungsinformationen des FIFO-Speichers, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert. Wenn sich aus dem Bestimmungsergebnis in Schritt S4600 ergibt, dass alle FIFO-Speicher mit Daten gefüllt sind, kann ein neuer Write-In-FIFO-Speicher nicht zusätzlich hierfür allokiert werden und das Verfahren wird beendet.
  • Wie oben beschrieben, ist es im Zuge des Endpunkt-Steuerverfahrens gemäß der beispielhaften Ausgestaltung der vorliegenden Erfindung möglich, dynamisch oder flexibel den FIFO-Speicher jedes Endpunkts für eine entsprechende Transaktion zu allokieren oder zuzuweisen, ohne eine Systemtaktfrequenz zu erhöhen oder eine Kapazität des FIFO-Speichers zu vergrößern. Speziell minimiert dies bei einer beispielhaften Ausgestaltung der vorliegenden Erfindung das Erzeugen der negativen Antwort, d.h. der NAK-Antwort, da die dynamische Allokierung in Echtzeit durchgeführt wird, und verbessert die Effizienz des Datenaustausches in dem USB-System.

Claims (18)

  1. Endpunkt-Steuervorrichtung für ein Gerät, das zwischen einem Host (10) und einer Mehrzahl von Endpunkten über einen Universal Serial Bus kommuniziert, wobei die Vorrichtung aufweist: – eine Mehrzahl von Puffern (260, 2611~2614, 2621, 2622), die mit der Mehrzahl von Endpunkten korrespondieren; – eine erste Speichereinheit (241), die Datenspeicherungsstatusinformationen der Puffer (260, 2611~2614, 2621, 2622) enthält; – eine Steuereinheit (24), die einen leeren Puffer aus der Mehrzahl von Puffern (260, 2611~2614, 2621, 2622) für einen ausgewählten Endpunkt unter den Endpunkten in Abhängigkeit von den Datenspeicherungsstatusinformationen allokiert; und – eine zweite Speichereinheit (242), die ein Ergebnis der Pufferallokierung durch die Steuereinheit (24) enthält.
  2. Endpunkt-Steuervorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Puffer First-in-/First-out(FIFO)-Speicher sind.
  3. Endpunkt-Steuervorrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Datenspeicherungsstatusinformationen für jeden Puffer angibt, ob dieser leer ist.
  4. Endpunkt-Steuervorrichtung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die erste Speichereinheit ein Statustransferregister umfasst, das hinsichtlich der Anzahl von Daten informiert, die in jedem Puffer gespeichert sind.
  5. Endpunkt-Steuervorrichtung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die zweite Speichereinheit logische und physikalische Adressen der Puffer enthält, die für den ausgewählten Endpunkt allokiert sind.
  6. Endpunkt-Steuervorrichtung nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass das Puffer-Allokierungsergebnis entweder in einer Abbildungstabelle oder in Form von Zeigern gespeichert ist.
  7. Endpunkt-Steuervorrichtung einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Mehrzahl von Puffern dieselbe Speichergröße aufweisen.
  8. Endpunkt-Steuervorrichtung einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass die Mehrzahl von Puffern Daten in einer Einheit speichert, die gleich groß oder kleiner als eine maximale Paketgröße ist.
  9. Endpunkt-Steuervorrichtung einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass die Steuereinheit den Puffer allokiert, sodass jeder Endpunkt mehr Daten empfängt.
  10. Verfahren zum Steuern von Endpunkten für ein Gerät (20), das zwischen einem Host (10) und den Endpunkten über einen Universal Serial Bus kommuniziert, wobei das Verfahren beinhaltet: – Empfangen einer Write-In-/Read-Out-Anforderung für einen ausgewählten Endpunkt; – Durchführen der angeforderten Write-In-/Read-Out-Operation mittels eines Puffers (260, 2611~2614, 2621, 2622), der für den Endpunkt allokiert ist; – Aktualisieren von Datenspeicherungsstatusinformationen des Puffers (260, 2611~2614, 2621, 2622); und – Allokieren eines Write-In-/Read-Out-Puffers für den ausgewählten Endpunkt für die Write-In-/Read-Out-Operation in Abhängigkeit von den Datenspeicherungsstatusinformationen.
  11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, dass das Allokieren des Write-In-/Read-Out-Puffers ein Allokieren eines Puf fers, der gültige Daten enthält, für den Read-Out-Puffer in Abhängigkeit von den Datenspeicherungsstatusinformationen beinhaltet.
  12. Verfahren nach Anspruch 10 oder 11, dadurch gekennzeichnet, dass das Allokieren des Write-In-/Read-Out-Puffers ein Allokieren eines leeren Puffers für den Write-In-Puffer in Abhängigkeit von den Datenspeicherungsstatusinformationen beinhaltet.
  13. Verfahren nach einem der Ansprüche 10 bis 12, dadurch gekennzeichnet, dass der Write-In-Puffer allokiert wird, sodass jeder Endpunkt mehr Daten empfängt.
  14. Verfahren nach einem der Ansprüche 10 bis 13, dadurch gekennzeichnet, dass ein Ergebnis der Allokierung mit dem Write-In-/Read-Out-Puffer gespeichert wird.
  15. Verfahren nach einem der Ansprüche 10 bis 14, dadurch gekennzeichnet, dass ein Allokierungsergebnis des Write-In-/Read-Out-Puffers entweder in einer Abbildungstabelle oder in Form von Zeigern gespeichert wird.
  16. Verfahren nach einem der Ansprüche 10 bis 15, dadurch gekennzeichnet, dass ein Allokierungsergebnis des Write-In-/Read-Out-Puffers Abbildungsinformationen für logische und physikalische Adressen des allokierten Write-In-/Read-Out-Puffers beinhaltet.
  17. Verfahren nach einem der Ansprüche 10 bis 16, dadurch gekennzeichnet, dass die Write-In-/Read-Out-Operation mit Daten in einer Einheit durchgeführt wird, die gleich groß oder kleiner als eine maximale Paketgröße ist.
  18. Verfahren nach einem der Ansprüche 10 bis 17, dadurch gekennzeichnet, dass der Puffer ein First-in-/First-out(FIFO)-Speicher ist.
DE102007003522A 2006-01-19 2007-01-19 Endpunkt-Steuervorrichtung und -verfahren Withdrawn DE102007003522A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2006-0005945 2006-01-19
KR1020060005945A KR20070076726A (ko) 2006-01-19 2006-01-19 엔드포인트 제어 장치 및 방법

Publications (1)

Publication Number Publication Date
DE102007003522A1 true DE102007003522A1 (de) 2007-08-30

Family

ID=38264586

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007003522A Withdrawn DE102007003522A1 (de) 2006-01-19 2007-01-19 Endpunkt-Steuervorrichtung und -verfahren

Country Status (3)

Country Link
US (1) US20070168583A1 (de)
KR (1) KR20070076726A (de)
DE (1) DE102007003522A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099534B1 (en) * 2006-12-14 2012-01-17 Cypress Semiconductor Corporation Implementation of logical endpoints in USB device
US8131890B1 (en) * 2007-03-23 2012-03-06 Cypress Semiconductor Corporation Circuit and method for increasing universal serial bus (USB) device endpoints
US8681526B2 (en) * 2008-07-02 2014-03-25 Cradle Ip, Llc Size and retry programmable multi-synchronous FIFO
US20100117624A1 (en) * 2008-11-11 2010-05-13 Alcatel-Lucent Usa Inc. Network-distributed oscilloscope and method of operation thereof
JP2011065630A (ja) * 2009-08-20 2011-03-31 Renesas Electronics Corp データ転送制御装置及びデータ転送制御方法
US8447901B2 (en) 2011-02-18 2013-05-21 Ab Initio Technology Llc Managing buffer conditions through sorting
US9003084B2 (en) 2011-02-18 2015-04-07 Ab Initio Technology Llc Sorting
KR101593170B1 (ko) * 2014-08-19 2016-02-19 서울시립대학교 산학협력단 큐 저장장치의 데이터 처리 장치, 방법 및 그 기록매체
US11386115B1 (en) * 2014-09-12 2022-07-12 Amazon Technologies, Inc. Selectable storage endpoints for a transactional data storage engine
CN110188059B (zh) * 2019-05-17 2020-10-27 西安微电子技术研究所 数据有效位统一配置的流控式fifo缓存装置及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3649226B2 (ja) * 2003-05-20 2005-05-18 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
KR100557215B1 (ko) * 2003-08-19 2006-03-10 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법

Also Published As

Publication number Publication date
KR20070076726A (ko) 2007-07-25
US20070168583A1 (en) 2007-07-19

Similar Documents

Publication Publication Date Title
DE102007003522A1 (de) Endpunkt-Steuervorrichtung und -verfahren
DE60003387T2 (de) Direktspeicherzugriffssteuerung in einem rechnersystem
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE69322221T2 (de) Personalcomputer mit programmierbaren Schwellwert-Fiforegistern zur Datenübertragung
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
DE4003759C2 (de) Verfahren und Anordnung zur Übertragung von Daten über einen Bus zwischen selektiv ankoppelbaren Stationen
DE69227499T2 (de) Einen Flashspeicher verwendendes Speichergerät
DE102019124450A1 (de) Bandbreitenbegrenzung in solid-state-laufwerken
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE102019116213A1 (de) Qualität von für Enterprise-Halbleiterlaufwerke optimierten dienstbasierten Arbitrierungen
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE102004057756B4 (de) USB-Steuerungseinrichtung mit OTG-Steuerungseinheit
DE102005013683A1 (de) Speicherkarte und zugehöriges Betriebsverfahren
DE102006029287A1 (de) DRAM-Chipbaustein kommunizierend mit Flash-Speicherchip und einen solchen Baustein umfassender Mehrchip-Verbund
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE102013110085A1 (de) Host zum Steuern einer nicht-flüchtigen Speicherkarte, System mit demselben sowie Verfahren zum Betreiben des Hosts und des Systems
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
DE102005015723A1 (de) IC-Kartensystem, Speicherkarte und Steuerverfahren
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
DE10030148A1 (de) Brückenvorrichtung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee