DE10310055A1 - Systeme und Verfahren zum Erfassen und Kompensieren von Kleinblockdatenübertragungen - Google Patents

Systeme und Verfahren zum Erfassen und Kompensieren von Kleinblockdatenübertragungen

Info

Publication number
DE10310055A1
DE10310055A1 DE10310055A DE10310055A DE10310055A1 DE 10310055 A1 DE10310055 A1 DE 10310055A1 DE 10310055 A DE10310055 A DE 10310055A DE 10310055 A DE10310055 A DE 10310055A DE 10310055 A1 DE10310055 A1 DE 10310055A1
Authority
DE
Germany
Prior art keywords
data
sectors
transfer
block
host
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
DE10310055A
Other languages
English (en)
Inventor
Robin Alexis Takasugi
Stewart R Wyatt
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10310055A1 publication Critical patent/DE10310055A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Es werden Systeme und Verfahren zum Erfassen einer Kleinblockdatenübertragung offenbart. Ein repräsentatives System umfaßt ein Datenübertragungssystem, bei dem Daten in eine Mehrzahl von Sektoren organisiert sind, und eine Hostvorrichtung, ein Speichermedium und eine Datenübertragungssteuerung, die betreibbar konfiguriert ist, um zwischen einer Hostschnittstelle und einer Speichermedienschnittstelle zu koppeln. Die Datenübertragungssteuerung weist eine Mehrzahl von auf derselben gespeicherte Datensektoren auf, und der Host weist Daten auf, die in eine Mehrzahl von Blöcken, die ein Vielfaches von Sektoren darstellen, organisiert sind, wobei die Datenübertragungssteuerung konfiguriert ist, um eine Datenübertragung eines Sektors von Daten anzufordern, eine erste Wiedergewinnung von Sektoren von Daten von dem Speichermedium durchzuführen und einen Zähler, der die Anzahl von Wörtern für die aktuelle Blockgröße enthält, auf die erste Wiedergewinnung hin zu dekrementieren, anschließende Wiedergewinnungen durchzuführen, bis entweder der Zählerwert Null ist oder der Zählerwert geringer ist als ein Wert in einem Register, das die Anzahl von Wörtern für den aktuellen Sektor enthält. Eine Unterbrechnung wird ausgelöst, wenn der Wert des Zählers nicht Null und geringer als der Wert in dem Register ist, und der Wert in dem Zähler wird gleich dem Wert in dem Register neu eingestellt. Der Block von Daten, der noch übertragen werden muß, wird an den Host gesendet. Es werden auch Systeme ...

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf Datenübertragungen bei Computernetzen. Spezieller bezieht sich die Erfindung auf ein Erfassen von Kleinblockübertragungen bei einer nicht-flüchtigen Halbleiterspeichersteuerung.
  • In der Regel speichern nicht-flüchtige Halbleiterspeichervorrichtungen Daten in fundamentalen Einheiten einer gewissen Größe, z. B. Sektoren von 512 Bytes. Die Speichervorrichtung überträgt diese Sektoren durch die Steuerung der Speichervorrichtung zu und von einer Hostvorrichtung gemäß einem Hostschnittstellenprotokoll, das Daten in dieselben fundamentalen Einheiten organisiert. Ein einzelner Austausch von Dateneinheiten kann in einer Datenphase stattfinden. Der Abschluß einer Anforderung einer Hostvorrichtung, Daten zu übertragen, kann mehrere Datenphasen beinhalten und erfordert, daß Aktionen durch die Intervention der Logikschaltung oder des Mikroprozessors der Steuerung durchgeführt werden.
  • Hostschnittstellenprotokolle definieren Aktionen, die durch die Intervention der Logikschaltung oder des Mikroprozessors der Steuerung durchgeführt werden. Manche Hostschnittstellenprotokolle ermöglichen den Austausch von Daten in einer Datenphase in Blöcken, die Vielfache von Datensektoren sind. Hosts senden Daten in Blöcken, um einen zwischen den einzelnen Sektoren auftretenden Mehraufwand, der mit einem auf jeden einzelnen Sektor bezogenen Quittungsaustausch verbunden ist, zu verringern. Wenn Daten in Blöcken von mehreren Sektoren gesendet werden, findet der Quittungsaustausch erst am Ende des Blockes statt. Die angeforderte tatsächliche Übertragungslänge der Speichervorrichtung wird bei manchen Hostschnittstellenprotokollen in der Regel jedoch in der fundamentalen Dateneinheit ausgedrückt, z. B. Sektoren von 512 Bytes. Die Hostvorrichtung fordert die Speichervorrichtung auf, Daten in Datenphasen von mehreren Sektoren zurückzusenden. Um die Datenübertragung abzuschließen, kann die angeforderte Übertragung an einem gewissen Punkt eine bestimmte Anzahl von Dateneinheiten beinhalten, die kein Vielfaches der angeforderten Datenphasengröße ist. Falls ein Datenübertragungssystem konfiguriert ist, um lediglich Vielfache der angeforderten Dateneinheit zu handhaben, kann die Datenübertragung fehlschlagen, wenn das System auf eine Phasengröße trifft, die kein Vielfaches der angeforderten Dateneinheit ist.
  • Auf der Basis des Vorstehenden sollte man erkennen, daß ein Bedarf an verbesserten Systemen und Verfahren besteht, die diese bzw. andere Unzulänglichkeiten des Standes der Technik angehen.
  • Es ist die Aufgabe der vorliegenden Erfindung, Systeme, ein Verfahren sowie einen Prozessor zu schaffen, die ein Erfassen von Kleinblockübertragungen bei nicht-flüchtigen Halbleiterspeichersteuerungen ermöglichen.
  • Diese Aufgabe wird durch Systeme gemäß den Ansprüchen 1, 37 oder 40, durch ein Verfahren gemäß Anspruch 22 sowie durch einen Prozessor gemäß Anspruch 34 gelöst.
  • Die vorliegende Erfindung bezieht sich auf Systeme und Verfahren zum Erfassen von Kleinblockübertragungen bzw. Runt- Block-Übertragungen in einer nicht-flüchtigen Halbleiterspeichersteuerung. Diesbezüglich umfaßt ein repräsentatives Ausführungsbeispiel eines derartigen Verfahrens folgende Schritte: Anfordern einer Datenübertragung von einer Quelle an einen Host, Übertragen der Daten von der Quelle an den Host, Dekrementieren eines Zählers in einer Steuerung auf jede Datenübertragung hin, fortgesetztes Übertragen von Daten, bis ein Wert in dem Zähler nicht Null ist, aber geringer ist als ein Wert in einem Register, das die Menge von Daten, die in einer Datenphase übertragen werden sollen, verfolgt, und Unterbrechen der Steuerung, wenn der Wert in dem Zähler nicht Null und geringer ist als der Wert in dem Register, und Neueinstellen des Wertes in dem Zähler auf den Wert in dem Register.
  • Ein repräsentatives System für ein Kleinblockdatenübertragungssystem umfaßt ein System, das konfiguriert ist, um Daten zwischen einem Speichermedium und einem Hostsystem, bei dem Daten in eine Mehrzahl von Blockgrößen organisiert sind, die ein Vielfaches eines Datensektors sein können, zu übertragen, und das eine Datenübertragungssteuerung umfaßt, die betreibbar konfiguriert ist, um zwischen dem Hostsystem und dem Speichermedium zu koppeln, und die eine Mehrzahl von auf demselben gespeicherten Daten aufweist, die in Datensektoren organisiert sind. Die Datenübertragungssteuerung ist konfiguriert, um das Speichermedium aufzufordern, zumindest einen Datensektor zu übertragen, zu ermitteln, ob die Anzahl von angeforderten Datensektoren durch eine Blockgröße gerade teilbar ist, und die Datensektorübertragungsanforderung zu unterbrechen, wenn die angeforderte Anzahl von Datensektoren nicht gerade durch die Blockgröße teilbar ist, was zu dem Auftreten einer Kleinblockübertragung führt. Auf die Unterbrechung hin stellt die Datenübertragungssteuerung die Anzahl von zu sendenden Datensektoren gleich der Anzahl von Datensektoren, die noch übertragen werden sollen, neu ein. Die Datenübertragung findet anschließend statt, und der Datenübertragungsprozeß ist abgeschlossen.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen, die nicht unbedingt maßstabsgetreu ist, wobei das Hauptaugenmerk statt dessen darauf gelegt wird, die Prinzipien der vorliegenden Erfindung klar zu veranschaulichen, näher erläutert. Es zeigen:
  • Fig. 1 ein schematisches Diagramm, das ein Ausführungsbeispiel eines Systems zeigt, das verwendet werden kann, um ein Ausführungsbeispiel des Kleinblockübertragungssystems der vorliegenden Erfindung zu implementieren;
  • Fig. 2 ein Flußdiagramm, das eine Funktionalität eines Ausführungsbeispiels eines Kleinblockübertragungssystems der Fig. 1 zeigt;
  • Fig. 3 ein schematisches Diagramm, das ein computer- oder prozessorbasiertes System zeigt, das verwendet werden kann, um ein Ausführungsbeispiel des Kleinblockübertragungssystems der vorliegenden Erfindung zu implementieren;
  • Fig. 4 ist ein schematisches Diagramm, das ein Ausführungsbeispiel des in Fig. 1 gezeigten Kleinblocksystems zeigt;
  • Fig. 5 ein schematisches Diagramm, das ein Ausführungsbeispiel der Hostschnittstelle des in Fig. 4 gezeigten Kleinblocksystems zeigt;
  • Fig. 6 ein schematisches Diagramm, das ein Ausführungsbeispiel des Datenbewegers des in Fig. 4 gezeigten Kleinblocksystems zeigt;
  • Fig. 7 ein schematisches Diagramm, das ein Ausführungsbeispiel der Speichermedienschnittstelle des in Fig. 4 gezeigten Kleinblocksystems zeigt;
  • Fig. 8 ein Flußdiagramm, das eine Funktionalität eines Ausführungsbeispiels einer Schreibübertragung des Kleinblockübertragungssystems der Fig. 1 zeigt; und
  • Fig. 9 ein Flußdiagramm, das eine Funktionalität eines Ausführungsbeispiels einer Leseübertragung des Kleinblockübertragungssystems der Fig. 1 zeigt.
  • Hierin ist eine Speichervorrichtung offenbart, die ein Kleinblockübertragungssystem bereitstellt. Um eine Beschreibung des erfindungsgemäßen Systems zu erleichtern, wird unter Bezugnahme auf die Figuren eine beispielhafte Vorrichtung erörtert, die verwendet werden kann, um das Kleinblockübertragungssystem zu implementieren. Obwohl diese Vorrichtung ausführlich beschrieben wird, wird man erkennen, daß diese Vorrichtung lediglich zu Veranschaulichungszwecken bereitgestellt wird und daß verschiedene Modifizierungen denkbar sind, ohne von dem erfindungsgemäßen Konzept abzuweichen. Nachdem die beispielhafte Vorrichtung beschrieben wurde, wird ein Betriebsbeispiel der Vorrichtung geliefert, um zu erklären, auf welche Weise die Vorrichtung verwendet werden kann, um die Kleinblockübertragung bereitzustellen.
  • Unter ausführlicherer Bezugnahme auf die Zeichnungen, bei denen in allen Ansichten gleiche Bezugszeichen entsprechende Teile bezeichnen, ist Fig. 1 ein schematisches Diagramm, das ein Ausführungsbeispiel eines Systems 90 zeigt, das verwendet werden kann, um ein Ausführungsbeispiel des Kleinblockübertragungssystems der vorliegenden Erfindung zu implementieren. Das System 90 umfaßt ein Kleinblockübertragungssystem 100, das wirksam zwischen eine Hostvorrichtung 102 und ein Speichermedium 104 gekoppelt ist. Datenübertragungen können zwischen der Hostvorrichtung 102 und dem Speichermedium 104 stattfinden.
  • Fig. 2 ist ein Flußdiagramm 108, das eine Funktionalität eines Ausführungsbeispiels eines Kleinblockübertragungssystems der Fig. 1 zeigt. Allgemein wird bei 110 die Datenblockgröße auf eine gewisse Anzahl von Sektoren eingestellt. Bei 112 wird eine Übertragung eines Datenblockes angefordert. In der Regel erfolgt der Austausch von Daten in Datensektoren, die in Blöcke eines oder mehrerer Sektoren gruppiert sind. Bei 114 finden Übertragungen von Datenblöcken statt, bis die Anzahl der in der Übertragung verbleibenden Sektoren nicht gerade durch die bei Schritt 110 eingestellte Blockgröße teilbar ist, und somit tritt eine Bedingung "Kleinblockübertragung" auf. Wenn diese Bedingung auftritt, werden die Datenübertragungen bei 116 unterbrochen, und die Blockgröße wird gleich der Anzahl von Datensektoren, die in der Übertragung verbleiben, neueingestellt, so daß die Datensektoren übertragen werden können. Bei 118 werden die verbleibenden Datensektoren, die auf eine Übertragung warten, übertragen, und die Datenübertragung ist abgeschlossen.
  • Fig. 3 veranschaulicht ein schematisches Diagramm, das ein computer- oder prozessorbasiertes System zeigt, das verwendet werden kann, um ein Ausführungsbeispiel des Kleinblockübertragungssystems zu implementieren. Wie nachstehend ausführlicher beschrieben wird, kann ein Kleinblockübertragungssystem verwendet werden, um ganze Datenblöcke in zahlreichen Datenphasen zu übertragen, und es kann eine Datenphase, die manche Sektoren von Daten enthält, die kleiner sind als ein ganzer Datenblock, identifizieren und übertragen, was als "Kleinblockübertragung" bezeichnet wird. Ein Kleinblockübertragungssystem kann in Software, Firmware, Hardware oder einer Kombination derselben implementiert sein. Wenn es in Software implementiert ist, kann ein Kleinblockübertragungssystem ein Programm sein, das durch eine computer- oder prozessorbasierte Vorrichtung ("Computer") 120, wobei ein Beispiel derselben schematisch in Fig. 3 gezeigt ist, ausführbar ist.
  • Was eine Hardwarearchitektur betrifft, umfaßt der Computer 120 der Fig. 3 allgemein einen Prozessor 122, einen Speicher 124 und eine oder mehrere Eingabe- und/oder Ausgabevorrichtungen (I-/O-Vorrichtungen) 130 (oder Peripheriegeräte), die über eine lokale Schnittstelle 128 kommunikativ gekoppelt sind. Die lokale Schnittstelle 128 kann beispielsweise einen oder mehrere Busse oder andere verdrahtete oder drahtlose Verbindungen sein, wie in der Technik bekannt ist. Die lokale Schnittstelle 128 kann zusätzliche Elemente umfassen, die der Einfachheit der Beschreibung halber weggelassen wurden. Diese zusätzlichen Elemente können beispielsweise Steuerungen, Puffer (Caches), Treiber, Repeater und/oder Empfänger sein. Ferner kann die lokale Schnittstelle Adreß-, Steuerungs- und/oder Datenverbindungen umfassen, um geeignete Kommunikationen unter den Komponenten des Computers 120 zu ermöglichen.
  • Der Prozessor 122 kann eine Hardwarevorrichtung sein, die konfiguriert ist, um eine Software auszuführen, die in dem Speicher 124 gespeichert sein kann. Der Prozessor 122 kann ein beliebiger kundenspezifischer oder im Handel erhältlicher Prozessor, eine Zentralverarbeitungseinheit (central processing unit - CPU) oder ein Hilfsprozessor unter mehreren Prozessoren sein. Ferner kann der Prozessor beispielsweise ein halbleiterbasierter Mikroprozessor (in Form eines Mikrochips) sein.
  • Der Speicher 124 kann eine beliebige Kombination von flüchtigen Speicherelementen (z. B. Direktzugriffsspeicher (RAM, beispielsweise DRAM, SRAM usw.)) und/oder nicht-flüchtigen Speicherelementen (z. B. ROM, Festplattenlaufwerk, Band, CDROM usw.) umfassen. Überdies kann der Speicher 124 elektronische, magnetische, optische und/oder andere Typen von Speichermedien beinhalten. Man beachte, daß der Speicher 124 eine verteilte Architektur aufweisen kann, bei der verschiedene Komponenten voneinander entfernt angeordnet sind, jedoch für den Prozessor 122 zugänglich sind.
  • Die Software im Speicher 124 kann ein oder mehrere separate Programme umfassen, von denen jedes eine in eine Reihenfolge gebrachte Auflistung von ausführbaren Anweisungen zum Implementieren logischer Funktionen aufweist. Die Software im Speicher 124 umfaßt eine Kleinblockübertragungssystemsoftware und ein geeignetes Betriebssystem (O/S) 126. Das Betriebssystem 126 steuert die Ausführung anderer Computerprogramme, beispielsweise des Kleinblockübertragungssystems. Das Betriebssystem 126 kann ferner eine Terminplanung, eine Eingangs-/Ausgangssteuerung, eine Datei- und Datenverwaltung, eine Speicherverwaltung, eine Kommunikationssteuerung und verwandte Dienste bereitstellen.
  • Die I-/O-Vorrichtung(en) 130 kann bzw. können Eingabevorrichtungen wie beispielsweise ein Tastenfeld und/oder einen Empfänger umfassen. Die I-/O-Vorrichtung(en) 130 kann bzw. können ferner Ausgabevorrichtungen wie beispielsweise eine Anzeigevorrichtung und/oder einen Sender umfassen. Die I-/O-Vorrichtung(en) 130 kann bzw. können ferner Vorrichtungen umfassen, die konfiguriert sind, um sowohl Eingaben als auch Ausgaben zu kommunizieren, beispielsweise ein Netzkommunikationstor.
  • Wenn der Computer 120 im Betrieb ist, ist der Prozessor 122 konfiguriert, um eine in dem Speicher 124 gespeicherte Software auszuführen, Daten von und zu dem Speicher 124 zu kommunizieren und allgemein Operationen des Computers 120 zu steuern. Das Kleinblockübertragungssystem 100 und das O/S 126 werden ganz oder teilweise durch den Prozessor 122 gelesen, vielleicht in dem Prozessor 122 zwischengespeichert und anschließend ausgeführt.
  • Wenn das Kleinblockübertragungssystem in Software implementiert ist, sollte man beachten, daß Kleinblockübertragungsbefehle in einem beliebigen computerlesbaren Medium zur Verwendung durch ein oder in Verbindung mit einem beliebigen computerbezogenen System oder Verfahren gespeichert werden können. Im Kontext dieses Dokuments ist ein computerlesbares Medium eine elektronische, magnetische, optische oder andere physische Vorrichtung oder Einrichtung, die ein Computerprogramm zur Verwendung durch ein oder in Verbindung mit einem computerbezogenen System oder Verfahren enthalten oder speichern kann. Kleinblockübertragungssystemprogramme können in einem computerlesbaren Medium zur Verwendung durch ein bzw. eine oder in Verbindung mit einem bzw. einer Anweisungsausführungssystem, -vorrichtung oder - gerät, beispielsweise einem computerbasierten System, einem einen Prozessor enthaltenden System oder einem anderen System verkörpert sein, das die Anweisungen von dem bzw. der Anweisungsausführungssystem, -vorrichtung oder -gerät abrufen und die Anweisungen ausführen kann.
  • Gemäß der Verwendung des Begriffs in diesem Dokument kann ein "computerlesbares Medium" eine beliebige Einrichtung sein, die ein Programm zur Verwendung durch das bzw. die oder in Verbindung mit dem bzw. der Anweisungsausführungssystem, -vorrichtung oder -gerät speichern, kommunizieren, weiterverbreiten oder transportieren kann. Somit kann ein computerlesbares Medium beispielsweise ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -gerät oder ein Ausbreitungsmedium sein, ist jedoch nicht auf dieselben beschränkt. Spezifischere Beispiele (eine nicht erschöpfende Liste) eines computerlesbaren Mediums enthalten folgende: eine elektrische Verbindung (elektronisch), die einen oder mehrere Drähte aufweist, eine tragbare Computerdiskette (magnetisch), einen Direktzugriffsspeicher (RAM) (elektronisch), einen Nur-Lese-Speicher (ROM) (elektronisch), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM, EEPROM oder Flash-Speicher) (elektronisch), einen Lichtwellenleiter (optisch) und einen tragbaren Compact-Disk-Nur-Lese-Speicher (CDROM)(optisch). Man beachte, daß das computerlesbare Medium sogar Papier oder ein anderes geeignetes Medium sein könnte, auf das das Programm gedruckt ist, da das Programm elektronisch aufgenommen, beispielsweise über ein optisches Scannen des Papiers oder des anderen Mediums, daraufhin zusammengestellt, interpretiert oder auf andere geeignete Weise verarbeitet werden könnte, falls nötig, und dann in einem Computerspeicher gespeichert werden könnte.
  • Wenn es in Hardware implementiert ist, kann das Kleinblockübertragungssystem mit einer beliebigen oder einer Kombination verschiedener Technologien implementiert sein. Beispielsweise können die folgenden Technologien, die jeweils in der Technik hinreichend bekannt sind, verwendet werden: (eine) diskrete Logikschaltung(en), die Logikgatter zum Implementieren von Logikfunktionen auf Datensignale hin aufweist bzw. aufweisen, eine anwendungsspezifische integrierte Schaltung (ASIC), die geeignete Kombinationslogikgatter aufweist, (ein) programmierbare(s) Gatterarray (PGA) und ein feldprogrammierbares Gatterarray (FPGA).
  • Nun wird auf das schematische Diagramm der Fig. 4 Bezug genommen, das die Funktionalität eines repräsentativen Ausführungsbeispiels eines Kleinblocksystems 100 der vorliegenden Erfindung zeigt. Ein allgemein bei 200 gezeigtes System ist konfiguriert, um Daten zu übertragen, einschließlich Kleinblockübertragungen gemäß einem Ausführungsbeispiel der Erfindung. Eine Hostvorrichtung 102 ist mit einer Hostschnittstelle 204 gekoppelt. Die Hostvorrichtung 102 ist allgemein eine externe Vorrichtung, beispielsweise ein Computer, der einen Prozessor und einen Speicher aufweist und in der Lage ist, ein Anwendungsprogramm zu betreiben, das es ermöglicht, daß Daten von einem bzw. in ein Datenspeichermedium 104 gelesen bzw. geschrieben werden.
  • Die Hostschnittstelle 204 ist mit einem Datenübertragungsprozessor, auch als Datenbeweger oder Datenübertragungssteuerung 206 zum Steuern der Datenübertragungen zwischen dem Speichermedium 104 und der Hostvorrichtung 102 bezeichnet, gekoppelt. Eine Speichermedienschnittstelle 210 ist zwischen das Datenspeichermedium 104 und den Datenbeweger 206 gekoppelt. Das Speichermedium 104 kann eine beliebige Einrichtung sein, die ein Programm zur Verwendung durch ein bzw. eine oder in Verbindung mit einem bzw. einer Anweisungsausführungssystem, -vorrichtung oder -gerät speichern, kommunizieren, weiterverbreiten oder transportieren kann.
  • Eine Karte, beispielsweise eine Speicherschnittstellenkarte, weist eine Anzahl von Registern auf, die ein Mehrbit- Statusregister (nicht gezeigt) umfassen, von dem zwei Bits in dieser Erörterung von Interesse sind. Ein Bit stellt einen Kartenvorrichtung-Besetzt-Zustand (BUSY) dar und dient dazu, einen Hostzugriff auszusperren. Ein anderes Bit stellt eine Datenanforderung (DRQ - data request) dar und dient dazu, eine Hostdatenübertragung anzufordern.
  • Der Datenbeweger 206 organisiert und steuert den Fluß von Daten zwischen der Hostvorrichtung 102 und dem Speichermedium 104. Der Datenbeweger 206 kann einen Speicher umfassen, der ermöglicht, daß Daten, die von dem Speichermedium 104 wiedergewonnen werden, bis zu einem Zeitpunkt, an dem es angemessen ist, die Daten an die Hostvorrichtung 102 zu übertragen, vorübergehend gespeichert werden.
  • Bei einem Ausführungsbeispiel betreibt die Hostvorrichtung 102 Anwendungsprogramme, die Befehlsinformationen in Register in der Hostschnittstelle 204 schreiben. Ein Betriebssystem 126 handhabt Hostvorrichtungskommunikationen, indem es verschiedene Dienste bereitstellt, beispielsweise Zurverfügungstellen, einem Anwendungsprogramm, einer Sammlung von I-/O-Befehlen, Verwaltung von Unterbrechungs- und DMA- Systemen und indem es einen Speicher bereitstellt, in dem die Daten empfangen werden können. Durch die Hostschnittstelle 204, die unter der Steuerung des Datenbewegers 206 arbeitet, treten Daten in die Hostvorrichtung 102 ein und verlassen dieselbe.
  • Wie durch die gestrichelte Linie gezeigt ist, können die Hostschnittstelle 204, der Datenbeweger 206, ein Mikroprozessor 207, eine Speichermedienschnittstelle 210, ein Speicher, beispielsweise ein SRAM 213 und ein ROM 219, ein Teil einer einzigen anwendungsspezifischen integrierten Schaltung (ASIC) 209 sein. Bei einem alternativen Ausführungsbeispiel können die in Fig. 4 gezeigten Blöcke jeweils auf einer separaten ASIC vorliegen, oder eine beliebige Kombination derselben kann in eine einzige ASIC integriert sein.
  • Bei einem Ausführungsbeispiel schreibt die Hostvorrichtung 102 allgemein Befehlsinformationen in Register, was bewirkt, daß die Hardware in der ASIC 209 ihren eingebetteten Mikroprozessor 207 unterbricht. Der Mikroprozessor 207 ist mit der Hostschnittstelle 204, dem Datenbeweger 206 und der Speichermedienschnittstelle 210 über Busse verbunden, die es ermöglichen, daß der Mikroprozessor 207 Register in der Hostschnittstelle 204, dem Datenbeweger 206 und der Speichermedienschnittstelle 210 schreibt und liest. Der Mikroprozessor 207 untersucht Register, extrahiert die Befehlsinformationen und richtet die Hardware in der ASIC 209 ein, d. h. die Hostschnittstelle 204, den Datenbeweger 206 und die Speichermedienschnittstelle 210, um die in dem Befehl angeforderte Aktion, beispielsweise Lesen eines Sektors von Daten, durchzuführen. Nach der Ausführung des Befehls speichert der Mikroprozessor 207 Statusinformationen für die Operation in einem Register, das als Statusregister dient, und weist den Host 102 eventuell an, das Statusregister zu lesen. Die Firmware zum Betreiben der Hostschnittstelle 204, des Datenbewegers 206 und der Speichermedienschnittstelle 210 kann sich in einem auf geeignete Weise dimensionierten SRAM 213 und/oder ROM 219 an verschiedenen Adressen befinden.
  • Unter Bezugnahme auf Fig. 5 ist ein schematisches Diagramm gezeigt, das ein Ausführungsbeispiel der Hostschnittstelle 204 des in Fig. 4 gezeigten Systems 200 zeigt. Unter Verwendung von in der Branche standardmäßigen Protokollen, die in der Branche hinreichend bekannt sind, implementiert die Hostschnittstelle 204 eine Schnittstelle mit der Hostvorrichtung 102. Bei einem Ausführungsbeispiel ist eine geeignete Hostschnittstelle eine von der Firma Hewlett Packard erhältliche Schnittstelle vom Typ CompactFlash™. Jedoch können bei dieser Erfindung auch andere Speichertechnologien verwendet werden, einschließlich Speichern, die von der Firma Hewlett Packard erhältlich sind.
  • Die Hostschnittstelle 204 ist sowohl mit dem Host 102 als auch dem Datenbeweger 206 gekoppelt und überträgt Blöcke von Daten, die von dem Datenbeweger 206 empfangen werden. Bei einem Ausführungsbeispiel wird die Firmware durch (ein) Logikmodul(n) 215 der Hostschnittstelle 204 gesteuert. Das bzw. die Logikmodul(n) 215 der Hostschnittstelle 204 umfaßt bzw. umfassen einen Code, um einen bestimmten Hardwaresatz, entsprechend der Hostschnittstelle und der Systeminfrastruktur, beispielsweise einen Prozessor und seine Peripheriegeräte wie beispielsweise Zeitgebungseinrichtungen, zu betreiben, und ein diagnostisches Tor. Das Logikmodul 215 in der Hostschnittstelle 204 enthält auch einen Code, der einen Zugriff auf Register der Hostschnittstelle 204 und auf Unterbrechungshandhabevorrichtungen ermöglicht.
  • Wie in Fig. 5 gezeigt ist, liefern Signale zwischen der Hostschnittstelle 204 und dem Datenbeweger 206 eine Angabe des Status jeder Vorrichtung und ihrer Bereitschaft, eine bestimmte Funktion fortzusetzen. Beispielsweise gibt ein Signal H_XferBlk 212 von dem Datenbeweger 206 an, daß der Datenbeweger 206 einen zu lesenden Block von Daten oder einen Raum für eine Schreiboperation aufweist. Die Angabe wird bekräftigt, bis sie durch ein Blockübertragungsbestätigungssignal (Signal H_BlkXferred 214) gelöscht wird. Das an den Datenbeweger 206 gesendete Signal H_BlkXferred 214 gibt an, daß die Hostvorrichtung 102 die Blockübertragung abgeschlossen hat, und kann die Hostschnittstelle 204 auffordern, mit Übertragungen von zusätzlichen Datenblöcken fortzufahren. Ein von dem Datenbeweger 206 gesendetes Signal H_FinalRead 216 gibt der Hostschnittstelle 204 gegenüber an, daß der Block, den der Datenbeweger 206 an die Hostschnittstelle 204 zu senden im Begriff ist und der sich immer noch in dem Puffer befindet, der letzte der Übertragung sein wird.
  • Die Hostschnittstelle 204 umfaßt eine Mehrzahl von Registern 217. Bestimmte Register befinden sich im Inneren der Hostschnittstelle 204, und andere Register sind für andere Systemhardwarekomponenten zugänglich. Extern zugängliche Register umfassen ein Wörter-Pro-Block-Register 218, das als Teil einer Übertragungsinitialisierung geladen wird. Während einer Kleinblockübertragung wird das Wörter-Pro- Block-Register 218, das den in den Wörter-Pro-Block-Zähler zu ladenden Wert enthält, für eine letzte Sektorübertragung mit neuen Wörtern pro Block neu geladen. Die Informationen bezüglich der neu geladenen Wörter pro Blockgröße werden von dem extern zugänglichen Register 218 in das interne Register 220 der Hostschnittstelle 204 geladen, das Wörter pro Blockgröße zählt. Die Blockgröße kann die Größe aufweisen, die ein Puffer enthalten kann, ist aber nicht hierauf beschränkt. Obwohl oben beispielhafte Register beschrieben wurden, sollen diese Beispiele von Registern nicht erschöpfend sein, sondern sind statt dessen lediglich repräsentativ für Hostschnittstellenregister.
  • Fig. 6 zeigt ein schematisches Diagramm, das ein Ausführungsbeispiel des Datenbewegers 206 des in Fig. 4 gezeigten Systems 200 zeigt.
  • Der Datenbeweger 206 kommuniziert mit der Hostschnittstelle 204, wie oben beschrieben. Der Datenbeweger 206 befindet sich ferner in Kommunikation mit der Speichermedienschnittstelle 210.
  • Bei einem Ausführungsbeispiel steuern bzw. steuert (ein) Steuerlogikmodul(n) 221 Register und einen Teil der Firmware, der sich in einem auf geeignete Weise dimensionierten SRAM 213 und/oder ROM 219 an verschiedenen Adressen befindet. Das Steuerlogikmodul 221 enthält einen Code, um einen bestimmten Hardwaresatz, in der Regel entsprechend der Hostschnittstelle, Vorrichtungsschnittstelle, Systeminfrastruktur, beispielsweise einen Prozessor und seine Peripheriegeräte wie beispielsweise Zeitgebungsvorrichtungen, zu betreiben, und ein diagnostisches Tor. Das Steuerlogikmodul 221 enthält Steuerregister, die die Operationen steuern, die der Datenbeweger 206 durchführt, beispielsweise Steuern des Datenflusses und dessen, ob Datenpuffer beschrieben werden können oder ob von denselben gelesen werden kann. Das Steuerlogikmodul 221 steuert ferner eine weiche Neueinstellungsfunktion.
  • Das Steuerlogikmodul 221 des Datenbewegers 206 kann in zwei logische Stücke unterteilt werden, eines für das Hostschnittstellenende und eines für das Speichermedienschnittstellenende. Das Steuerlogikmodul 221 erzeugt Unterbrechungen, und eine Unterbrechungssteuerungsfirmware des Steuerlogikmoduls 221 verwaltet die Unterbrechungen. Signale dienen dazu, die Datenübertragung zwischen der Speichermedienschnittstelle 210 und dem Datenbeweger 206 zu erleichtern. Beispielsweise gibt ein Signal SMI_XferSect 222 von dem Datenbeweger 206 an die Speichermedienschnittstelle 210 an, daß der Datenbeweger 206 einen Datensektor zum Schreiben oder einen Raum für ein Lesen von dem Speichermedium 104 aufweist. Ein SMI_SectXferred-Signal 224 von der Speichermedienschnittstelle 210 gibt dem Datenbeweger 206 an, daß die Speichermedienschnittstelle 210 die aktuelle Datensektorübertragung abgeschlossen hat, und fordert an, die Übertragung fortzusetzen.
  • Register befinden sich im Innern des Datenbewegers 206 und anderen Blöcken. Die meisten sind für den Mikroprozessor 207 und Firmware zugänglich; manche sind lediglich für die Hardware zugänglich und manche sind sowohl für den Mikroprozessor 207 und Firmware als auch für die Hostvorrichtung 102 zugänglich.
  • Ein Register HostXferSectCtr 228 gibt die Anzahl von zu übertragenden Sektoren, die durch ATA-Lies-Sektoren-, -Schreib-Sektoren-, Lies-Mehrere-Sektoren- oder Schreib- Mehrere-Sektoren-Befehle definiert sind. Ferner gibt ein Register SectsPerBlk 230 die Anzahl von Sektoren im Block an, wie sie durch einen ATA-Stelle-Mehrere-Ein-Befehl definiert sind. Ein Register HostDataOp (nicht gezeigt) ist mit einem bestimmten Hostdatenübertragungsoperationscode (z. B. Lesen oder Schreiben) geladen.
  • Am Speichermedienende gibt ein Register SMI_LW_PerSect 232 die langen Wörter pro Sektor an. Ein Register BuffSects 234 gibt die Anzahl von Sektoren in einem Puffer 238 für eine Zugriffssteuerung an. Es sind Puffer enthalten, die Sektoren für eine Übertragung halten. Der Puffer kann beispielsweise ein 1024-Byte-Abschnitt (2-Sektor-Abschnitt) des SRAM 213 sein. Ein Datenblock ist nicht auf die Größe des Puffers beschränkt und kann bei manchen Ausführungsbeispielen größer sein als die Puffergröße. Ein Register DeviceXfer- SectCtr 240 gibt die Anzahl von zu übertragenden Sektoren an. (Nicht gezeigte) Unterbrechungsregister geben einen Unterbrechungsstatus sowohl von dem Hostende als auch/oder von dem Speichermedienende des Datenbewegers 206 an.
  • Fig. 7 zeigt ein schematisches Diagramm, das ein Ausführungsbeispiel der Speichermedienschnittstelle 210 (die auch als Speichervorrichtungsschnittstelle bezeichnet wird) des in Fig. 4 gezeigten Systems 200 zeigt. Die Speichermedienschnittstelle 210 umfaßt Register, Zähler und Zustandsmaschinen, um das Protokoll, Befehle an die Speichervorrichtung zu schreiben und Daten und einen Status zu lesen, zu implementieren. Einrichtungen, um Konfigurationsinformationen von der Speichervorrichtung 104 zu schreiben und einen Status von derselben zu lesen und das Speichervorrichtungsneueinstellungsprotokoll auszuführen, können sich in der Speichermedienschnittstelle 210 befinden. Die Speichermedienschnittstelle 210 weist eine Schaltungsanordnung auf, um mit dem Datenbeweger 206 eine Schnittstelle zu bilden, und weist die Fähigkeit auf, eine Anzahl von externen Speichervorrichtungen zu steuern.
  • Die Speichermedienschnittstelle umfaßt (ein) Logikmodul(n) 245. Das Logikmodul 245 umfaßt einen Code, der einen bestimmten Hardwaresatz, in der Regel entsprechend der Vorrichtungsschnittstelle, Systeminfrastruktur, beispielsweise einen Prozessor und seine Peripheriegeräte wie beispielsweise Zeitgebungsvorrichtungen, betreibt, und ein diagnostisches Tor. Das Logikmodul 245 in der Speichermedienschnittstelle 210 enthält einen Code und/oder Hardware, um Unterbrechungen (Interrupte) zu dem Mikroprozessor 207 und den Unterbrechungshandhabevorrichtungen zu erzeugen. Firmware befindet sich in einem Abschnitt des SRAM 213 und/oder ROM 219 der ASIC 209.
  • Die Speichermedienschnittstelle 210 signalisiert dem Datenbeweger 206, wie oben angegeben wurde. In der Speichermedienschnittstelle 210 enthaltene Register umfassen ein Register SML_XferLen 244, das die Anzahl von zu übertragenden Datensektoren angibt, wobei bei einer ordnungsgemäßen Übertragungsadresse begonnen wird. Ferner dient ein Register SMIXferCtr 246 als ein Herunterzähler, der von dem Register SML_XferLen 244 zum Verfolgen von übertragenen Datensektoren geladen ist.
  • Die Beispiele von Signalen und Registern sollen nicht erschöpfend sein, sondern sollen lediglich repräsentativ für Hostschnittstellen-, Datenbeweger- und Speichermedienschnittstellensignale und -register sein.
  • Fig. 8 zeigt ein Flußdiagramm 250, das eine Funktionalität eines Ausführungsbeispiels einer Schreibübertragung des Systems 200 der Fig. 4 zeigt.
  • Bei 252 stellt die Hostvorrichtung die Blockgröße unter Verwendung eines CompactFlash-Stelle-Mehrere-Ein-Befehls (hiernach "CF"-Stelle-Mehrere-Ein-Befehl) ein. Die Hostvorrichtung fordert eine Datenübertragung über CF-Lies- Sektoren- oder -Schreib-Sektoren-Befehle (Zielvorrichtung verwendet eine Blockgröße von 1 Sektor/Block) oder über einen CF-Lies-Mehrere-Sektoren-Befehl oder -Schreib-Mehrere- Sektoren-Befehl (Zielvorrichtung verwendet die Anzahl von Sektoren pro Block, die zuvor in dem Stelle-Mehrere-Ein- Befehl festgelegt wurden), an. Die Hostvorrichtung legt normalerweise die Übertragungslänge in Sektoren fest.
  • Bei 254 lädt die Firmware Zähler in dem Datenbeweger mit der Übertragungslänge in Sektoren, beispielsweise unter Verwendung, an dem Hostschnittstellenende, des Registers HostXferSectCtrs und, an dem Vorrichtungsschnittstellenende, des Registers DeviceXferSectCtrs. Die Firmware lädt auch ein Register SectsPerBlk (das mit dem Register HostXferSectCtr zusammenarbeitet) mit der zuvor festgelegten Blockgröße. Das Register Host_LW_PerBlk auf der Hostschnittstellenseite des Datenbewegers ist mit der Anzahl von internen Dateneinheiten, d. h. 32-Bit-Langwörtern, pro Block, geladen. Falls die Anzahl von Sektoren bei der Übertragung durch Register SectsPerBlk gerade teilbar ist, wird die Firmware nicht wieder betrieben, bis die letzten Daten übertragen sind, und die unten beschriebenen Ereignisse werden alle in Hardware gehandhabt.
  • Für eine Lese- oder Schreiboperation führt die Datenbewegerhardware eine erste Anforderung eines Datenblocks von dem Hostende für ein Schreiben oder eines Sektors von dem Vorrichtungsende für ein Lesen durch, indem sie Signale H_XferBlk bzw. SMI_XferSect sendet. An diesem Punkt wird eine Flußdiagrammschleife betrieben. Allgemein gesagt gibt es ein "Quellenende" und ein "Zielende" des Datenbewegers. Bei einer Leseoperation ist das Quellenende der Vorrichtungsschnittstellenabschnitt des Datenbewegers, und das Zielende ist der Hostschnittstellenabschnitt. Bei einer Schreiboperation ist das Quellenende der Hostschnittstellenteil, und das Zielende ist der Vorrichtungsschnittstellenteil. Somit startet die Datenbewegerhardware das Quellenende immer als erstes und das Zielende immer als zweites.
  • Wie in Fig. 8 gezeigt ist, ist für eine Schreiboperation das Quellenende die Hostschnittstelle; deshalb startet der Datenbeweger das Quellenende, indem er die Übertragung einer Blocksektorenmenge anfordert. Bei 256 wird ein Vergleich des Wertes des Registers HostXferSectCtr durchgeführt, um zu ermitteln, ob das Register HostXferSectCtr geringer ist als das Register SectsPerBlk. Falls das HostXferSectCtr nicht geringer ist als das Register SectsPerBlk, ist das Register HostXferSectCtr nicht erschöpft, und bei 258 ist in dem Puffer Raum. Die Datenbewegerhardware fährt daraufhin fort, Sektoren von dem Hostschnittstellenblock anzufordern. Bei 262 bewegt sich ein Datenblock von dem Host zu dem Puffer. Das Fortschreiten von Übertragungen wird durch ein Verwalten des Registers HostXferSectCtr, das der Datenbeweger nach jeder erfolgreichen Blockübertragung um SectsPerBlk dekrementiert, verfolgt. Bei 264 wird, falls das Register DeviceXferSectCtr bei 266 größer ist als Null, eine Prüfung durchgeführt, um zu ermitteln, ob in dem Puffer Sektoren verbleiben. Falls das Register DeviceXferSectCtr gleich Null ist, ist die Übertragung abgeschlossen, und bei 268 hört der Datenbeweger damit auf, Sektoren von der Vorrichtungsschnittstelle 210 anzufordern.
  • Falls Sektoren in dem Puffer verbleiben, fordert der Datenbeweger die Vorrichtungsschnittstelle bei 270 auf, einen Sektor von Daten von dem Puffer an das Speichermedium zu übertragen. Bei 272 bewegt sich ein Sektor von Daten von dem Puffer zu der Vorrichtungsschnittstelle. Der Prozeß setzt sich bei 256 fort, um zu ermitteln, ob der Wert des Registers HostXferSectCtr unter dem Wert in dem Register SectsPerBlk liegt. Bei 274 ist das Register HostXferSectCtr unter dem Wert in dem Register SectsPerBlk, und es wird ein Vergleich des Registers HostXferSectCtr durchgeführt, um zu ermitteln, ob es nicht Null ist. Falls das Register HostXferSectCtr nicht Null und geringer als das Register SectsPerBlk ist, wartet ein Kleinblock auf eine Übertragung.
  • Falls die Übertragungslänge nicht gerade durch das Register SectsPerBlk teilbar ist, sondern das Register HostXfer- SectCtr Null ist, d. h. falls kein Kleinblock existiert, setzt sich der Prozeß bei 264 fort. Falls das Register HostXferSectCtr nicht Null und weniger als das Register SectsPerBlk ist, liegt eine Kleinblockbedingung vor, und bei 276 unterbricht der Datenbeweger die Firmware, die der Mikroprozessor in dem SRAM oder ROM betreibt. An diesem Punkt wartet der Code in einer Schleife darauf, daß das Vorrichtungsende fertig wird, d. h. 268 erreicht. Bei einem Schreiben oder Lesen, wenn alle Daten an die oder von der Hostseite übertragen werden, unterbricht die Hostschnittstelle den Mikroprozessor, um ihn darüber zu informieren, daß die Übertragung auf der Hostseite erledigt ist, und gleichzeitig sendet die Hostschnittstelle das Signal H_BlkXferred an den Datenbeweger. Auf einen Schreiben- Befehl hin tritt die Unterbrechungshandhabevorrichtung in eine Schleife ein, die darauf wartet, daß das Vorrichtungsende abgeschlossen wird. Wenn das Vorrichtungsende abschließt, wird der Schreiben-Befehl fertiggestellt, und die Firmware kann einen Status einrichten und die Hostvorrichtung benachrichtigen, ihn zu lesen. Für ein Lesen oder Schreiben wird ein Status gesendet, wenn das Zielende erledigt ist.
  • Bei 280 programmiert die Firmware das Register SectsPerBlk auf den Wert in dem Register HostXferSectCtr um und startet den Datenbeweger erneut. Bei einem alternativen Ausführungsbeispiel bewirkt ein Durchfallen durch den Test bei 256 mit einem Nicht-Null-Wert von HostXferSectCtr nicht, daß eine Unterbrechung erzeugt wird, sondern daß die Ausgabe des Registers SectsPerBlk durch Verwendung eines Multiplexers abgewählt wird und durch die Ausgabe des Registers HostXferSectCtr ersetzt wird. Diese Konfiguration kann die Hinzufügung einer inkrementalen Hardware erfordern, erhöht jedoch die Leistungsfähigkeit, indem der Mehraufwand einer Unterbrechungsverarbeitung vermieden wird. Der Prozeß beginnt bei 256. Um all diese verbleibenden Sektoren an den Puffer zu übertragen, werden die Sektoren von dem Host als einzelner Block, der kleiner ist als ursprünglich festgelegt, angefordert. Das Register HostXferSectCtr wird schließlich Null, und die Datenübertragung ist an dem Hostende fertiggestellt; anschließend beenden Sektoren ein Fließen von dem Puffer zu der Speichervorrichtung. Auf ein Bedienen einer Kleinblockunterbrechung hin wird das Register SectsPerBlk mit der ursprünglichen Anzahl von Sektoren, die durch den Host in dem Stelle-Mehrere-Ein-Befehl eingestellt wurden, neu geladen.
  • Fig. 9 ist ein Flußdiagramm 282, das eine Funktionalität eines Ausführungsbeispiels einer Leseübertragung des Systems 200 der Fig. 4 zeigt. Bei 284 sendet die Hostvorrichtung einen Lies-Mehrere-Sektoren-Befehl nach einem Einstellen der Blockgröße. Bei 286 lädt die Firmware das Register SectsPerBlk, das Register HostXferSectCtr, das Register Host_LW_PerBlk und das Register DeviceXferSectCtr. Bei 288 wird ein Vergleich durchgeführt, um zu ermitteln, ob der Wert des Registers DeviceXferSectCtr größer ist als Null. Falls dies der Fall ist, wird bei 290 eine Bestimmung durchgeführt, ob in dem Puffer Platz für einen Sektor ist. Falls dies der Fall ist, fordert der Datenbeweger die Vorrichtungsschnittstelle bei 292 auf, einen Sektor von Daten von dem Speichermedium zu übertragen. Bei 294 bewegt sich ein Sektor von Daten von der Vorrichtungsschnittstelle zu dem Puffer.
  • Bei 296 wird ein Vergleich durchgeführt, ob das Register HostXferSectCtr geringer ist als das Register SectsPerBlk. Fall dies der Fall ist, wird bei 298 eine Bestimmung durchgeführt, ob das Register HostXferSectCtr größer ist als Null. Falls dies nicht der Fall ist, endet der Datenübertragungsprozeß bei 300.
  • Falls das Register HostXferSectCtr bei 298 größer ist als Null, wird bei 302 eine Kleinblockübertragung benötigt, und der Datenbeweger unterbricht die Datenübertragung. Bei einem alternativen Ausführungsbeispiel bewirkt ein Durchfallen bei dem Test bei 296 nicht ein Erzeugen einer Unterbrechung, sondern, daß die Ausgabe des Registers SectsPerBlk durch Verwendung eines Multiplexers abgewählt wird und durch die Ausgabe des Registers HostXferSectCtr ersetzt wird. Diese Konfiguration erfordert die Hinzufügung einer Inkrementalhardware, erhöht jedoch die Leistungsfähigkeit, indem der Mehraufwand einer Unterbrechungsverarbeitung vermieden wird. Bei 304 lädt eine Firmware das Register SectsPerBlk erneut mit dem Register-HostXferSectCtr-Wert und das Register Host_LW_PerBlk mit Langwörtern im Wert des Registers SectsPerBlk und startet anschließend den Datenbeweger erneut. Der Prozeß setzt sich bei 296 fort.
  • Bei 306 wird eine Bestimmung durchgeführt, ob sich ein Block in dem Puffer befindet. Falls dies nicht der Fall ist, setzt sich der Prozeß bei 288 fort. Falls dies der Fall ist, fordert der Datenbeweger die Rostschnittstelle bei 308 auf, einen Block von Daten von dem Puffer an den Rost zu übertragen. Bei 310 bewegt sich ein Block von Daten von dem Puffer zu dem Host. Der Prozeß setzt sich bei 288 fort.
  • Ein Block- oder Sektor-Quittungsaustausch findet zwischen dem Datenbeweger und den Schnittstellenblöcken statt. Die Firmware lud zuvor Register sowohl auf der Host- als auch der Vorrichtungsschnittstellenseite des Datenbewegers mit der Anzahl von internen Dateneinheiten (32-Bit-Langwörter) pro Block Register Host_LW_PerBlk und pro Sektor Register SMI_LW_PerSect. Die Datenbewegerhardware lädt Langwort- Zähler (beispielsweise Host_LW_Ctr und SMI_LW_Ctr) von diesen Registern, um dem Datenbeweger zu sagen, wann eine Bestätigung des Blocks oder Sektors, der durch die Host- oder Vorrichtungsschnittstellenblöcke übertragen wird, zu erwarten ist. Die Host- und Vorrichtungsschnittstellenblöcke selbst weisen interne Block- und Sektor-Langwort-Zähler auf, um ihnen zu sagen, wann die Übertragung des aktuellen Sektors oder Blocks zu bestätigen ist.
  • Ein Block- oder Sektor-Quittungsaustausch mit den Hostschnittstellen- oder Vorrichtungsschnittstellenblöcken wird solange durchgeführt, wie immer noch Sektoren zu übertragen sind; der Datenbeweger fordert die Übertragung eines Sektors oder Blocks an, indem er das Signal H_XferBlk an den Hostschnittstellenblock oder das Signal SMI_XferSect an den Vorrichtungsschnittstellenblock sendet. An diesem Punkt fließen die Daten zwischen dem Puffer in dem Datenbewegerblock und den Hostschnittstellen- oder Vorrichtungsschnittstellenblöcken in Einheiten von Langwörtern. Bei einem alternativen Ausführungsbeispiel sind Zähler in der Rostschnittstelle 16 Bits breit, z. B. halbe Langwörter. Während jedes Langwort übertragen wird, dekrementiert die Datenbewegerhardware den Host_LW_Ctr oder den SMI_LW_Ctr, während die Langwort-Zähler, die sich im Innern der Hostschnittstellen- und der Vorrichtungsschnittstellenblöcke befinden, dekrementiert werden. Am Ende einer Sektorübertragung mit dem Vorrichtungsschnittstellenblock geht der interne Langwort-Zähler des Vorrichtungsschnittstellenblocks auf Null, was ihn veranlaßt, das Sektorbestätigungs-SMI_SectXferred- Signal an das Vorrichtungsschnittstellenende des Datenbewegers zu senden, das dieses Signal erwartet, da sein eigener SMI_LW_Ctr auf Null gegangen ist.
  • Falls noch weitere Sektoren zu übertragen sind, wie durch einen Nicht-Null-Wert in DeviceXferSectCtr angegeben ist, gibt der Datenbeweger ein weiteres Signal SMI_XferSect an den Vorrichtungsschnittstellenblock aus und lädt den SMI_LW_Ctr neu.
  • Eine Übertragung eines Blocks mit dem Hostschnittstellenende wird auf ähnliche Weise durchgeführt, wobei der Datenbeweger ein Signal H_XferBlk ausgibt. Der interne Langwort- Zähler des Hostschnittstellenblocks und der Host_LW-Ctr des Datenbewegers verfolgen die Übertragung der Langwörter in einem Block. Wenn der interne Langwort-Zähler des Hostschnittstellenblocks zu Null geht, sendet er das Signal H_BlkXferred an den Datenbeweger, der es erwartet, da sein eigenes Host_LW_Ctr zu Null gegangen ist. Falls noch weitere Blöcke zu übertragen sind, werden die Langwort-Zähler wieder durch die Hardware neu geladen, und der Datenbeweger gibt ein weiteres Signal H_XferBlk aus.
  • Ein Beispiel der vorliegenden Erfindung im Betrieb liegt vor, wenn der Host eine Datenphasengröße (d. h. einen Block) von vier Sektoren einstellt. Der Host sendet dann eine Datenübertragungsanforderung mit einer Länge von elf Sektoren. Diese Übertragung kann nicht in einer Anzahl von integralen Datenphasen abgeschlossen werden. Die erste Übertragung würde vier Sektoren senden. Es müssen noch sieben Sektoren gesendet werden. Die nächste Übertragung würde vier Sektoren senden. Es müssen noch drei Sektoren gesendet werden. Somit wurden zwei ganze Blockübertragungen gesendet, und eine "Kleinblock"-Datenphase von drei Sektoren muß noch gesendet werden. An diesem Punkt wird die Datenübertragung unterbrochen, und die Datenphasengröße wird auf drei Sektoren neu eingestellt. Die drei verbleibenden, noch zu sendenden Sektoren stimmen nun mit der Datenphasengröße (einem Block) überein, und die Übertragung findet statt. Es sind keine weiteren Sektoren mehr zu senden, und die Übertragung ist abgeschlossen. Der Prozessor oder die Hardware lädt anschließend das Sektoren-Pro-Block-Register mit einem normalen, Nicht-Kleinst-Wert.

Claims (42)

1. Datenübertragungssystem zum Übertragen von Daten zwischen einem Speichermedium (104) und einem Hostsystem, bei dem die Daten in eine Mehrzahl von Blockgrößen organisiert sind, die ein Vielfaches eines Datensektors sein können, wobei das Datenübertragungssystem folgende Merkmale aufweist:
eine Datenübertragungssteuerung (206), die betreibbar konfiguriert ist, um zwischen dem Hostsystem und dem Speichermedium zu koppeln, wobei die Datenübertragungssteuerung (206) eine Mehrzahl von auf derselben gespeicherten Daten aufweist, die in Datensektoren organisiert sind, und wobei die Datenübertragungssteuerung konfiguriert ist, um
eine Hostvorrichtung (102) aufzufordern, zumindest einen Datensektor zu übertragen;
zu ermitteln, ob die Anzahl von angeforderten Datensektoren durch eine Blockgröße gerade teilbar ist; und
eine Datensektorübertragungsanforderung zu unterbrechen, wenn die angeforderte Anzahl von Datensektoren nicht gerade durch die Blockgröße teilbar ist.
2. Datenübertragungssystem gemäß Anspruch 1, bei dem die Datenübertragungssteuerung (206) ferner konfiguriert ist, um die Anzahl von zu sendenden Datensektoren gleich der Anzahl von in der Übertragung verbleibenden Datensektoren neu einzustellen.
3. Datenübertragungssystem gemäß Anspruch 1 oder 2, bei dem die Datenübertragungssteuerung (206) ferner konfiguriert ist, um eine Übertragung der Datensektoren an die Hostvorrichtung (102) anzufordern, solange die Anzahl von Datensektoren, die noch zu übertragen sind, größer als die oder gleich der Blockgröße ist.
4. Datenübertragungssystem gemäß einem der Ansprüche 1 bis 3, bei dem die Datenübertragungssteuerung (206) ferner konfiguriert ist, um eine Übertragung der Datensektoren in dem Speichermedium (104) an die Hostvorrichtung (102) anzufordern, solange die Anzahl von angeforderten Datensektoren größer als oder gleich der Blockgröße ist, und um die Anzahl von zu sendenden Datensektoren gleich der Anzahl von in der Übertragung verbleibenden Datensektoren neu einzustellen, bevor die Datensektoren von dem Speichermedium (104) an die Hostvorrichtung (102) übertragen werden.
5. Datenübertragungssystem gemäß einem der Ansprüche 1 bis 4, das ferner eine Speichermedienschnittstelle (210), die betreibbar konfiguriert ist, um das Speichermedium (104) mit der Datenübertragungssteuerung (206) zu koppeln, und eine Hostschnittstelle (204) aufweist, die betreibbar konfiguriert ist, um die Hostvorrichtung (102) mit der Datenübertragungssteuerung (206) zu koppeln.
6. Datenübertragungssystem gemäß einem der Ansprüche 1 bis 5, das ferner Register aufweist, die die Anzahl von Datensektoren, die in der Übertragung verbleiben, zählen.
7. Datenübertragungssystem gemäß einem der Ansprüche 1 bis 6, bei dem die Datenübertragungssteuerung (206) ferner einen Puffer (238) aufweist, der die Datensektoren, die darauf warten, gesendet zu werden, enthält.
8. Datenübertragungssystem gemäß einem der Ansprüche 5 bis 7, bei dem die Datenübertragungssteuerung (206) konfiguriert ist, um die Speichermedienschnittstelle (210) aufzufordern, Datensektoren von dem Speichermedium (104) an die Datenübertragungssteuerung (206) zu übertragen.
9. Datenübertragungssystem gemäß einem der Ansprüche 5 bis 8, bei dem die Speichermedienschnittstelle (210) konfiguriert ist, um der Datenübertragungssteuerung (206) zu bestätigen, daß ein Sektor von Daten an das Speichermedium (104) übertragen wurde.
10. Datenübertragungssystem gemäß einem der Ansprüche 5 bis 9, bei dem die Hostschnittstelle (204) der Datenübertragungssteuerung (206) bestätigt, daß ein Block von Daten an einen Host (102) übertragen wurde.
11. Datenübertragungssystem gemäß einem der Ansprüche 1 bis 10, bei dem die Datenübertragungssteuerung (206) ferner Register aufweist, die um die Anzahl von Datensektoren, die an die Hostvorrichtung (102) übertragen werden, dekrementiert werden.
12. Datenübertragungssystem gemäß einem der Ansprüche 8 bis 11, bei dem die Speichermedienschnittstelle (210) konfiguriert ist, um die Sektoren von Daten, die von dem Speichermedium (104) an einen Puffer in der Datenübertragungssteuerung (206) bewegt werden, zu übertragen.
13. Datenübertragungssystem gemäß Anspruch 12, das ferner einen Komparator aufweist, der die Anzahl von Sektoren von Daten in dem Puffer mit der Anzahl von Sektoren in einem Hostübertragungsregister vergleicht.
14. Datenübertragungssystem gemäß einem der Ansprüche 8 bis 13, bei dem die Datenübertragungssteuerung (206) konfiguriert ist, um zu ermitteln, wann ein Block von Daten in einem Puffer in der Datenübertragungssteuerung (206) befindlich ist.
15. Datenübertragungssystem gemäß Anspruch 14, bei dem die Datenübertragungssteuerung (206) konfiguriert ist, um die Hostschnittstelle (204) aufzufordern, den Block von Daten von dem Puffer an das Hostsystem (102) und den Block von Datenübertragungen von dem Puffer an das Hostsystem zu übertragen.
16. Datenübertragungssystem gemäß einem der Ansprüche 5 bis 15, bei dem die Datenübertragungssteuerung (206) konfiguriert ist, um anzufordern, daß ein Block von Daten in einen Puffer übertragen wird, wenn der Puffer einen verfügbaren Speicher aufweist, um den Block von Daten zu speichern.
17. Datenübertragungssystem gemäß Anspruch 16, bei dem die Datenübertragungssteuerung (206) den Block von Daten von dem Hostsystem zu dem Puffer in der Datenübertragungssteuerung (206) bewegt.
18. Datenübertragungssystem gemäß Anspruch 17, das ferner einen Komparator aufweist, der ermittelt, ob ein Wert in einem Sektorübertragungszähler in der Datenübertragungssteuerung (206) größer ist als Null, und der, falls dies nicht der Fall ist, die Datenübertragung anhält.
19. Datenübertragungssystem gemäß Anspruch 18, bei dem, falls der Wert in dem Sektorübertragungszähler größer ist als Null, die Datenübertragungssteuerung (206) konfiguriert ist, um zu ermitteln, ob sich ein Sektor von Daten in einem Sektorpuffer befindet.
20. Datenübertragungssystem gemäß Anspruch 19, bei dem, falls sich der Sektor von Daten in dem Sektorpuffer befindet, die Datenübertragungssteuerung (206) konfiguriert ist, um das Speicherschnittstellenmedium aufzufordern, den Sektor von Daten von dem Sektorpuffer an das Speichermedium (104) zu übertragen.
21. Datenübertragungssystem gemäß Anspruch 20, bei dem die Datenübertragungssteuerung (206) konfiguriert ist, um den Sektor von Daten an das Speichermedium (104) zu übertragen.
22. Verfahren zum Erfassen einer Kleinblockübertragung in einem Datenübertragungsverarbeitungssystem, das folgende Schritte aufweist:
Anfordern einer Datenübertragung von einer Quelle an einen Host;
Übertragen der Daten von der Quelle an den Host und Dekrementieren eines Zählers in einer Steuerung auf jede Datenübertragung hin; und
Fortsetzen des Übertragens von Daten, bis ein Wert in dem Zähler nicht Null, aber geringer als ein Wert in einem Register ist, das die Menge von Daten, die in einer einzigen Datenphase übertragen werden sollen, verfolgt.
23. Verfahren gemäß Anspruch 22, das ferner die Schritte des Unterbrechens der Steuerung, wenn der Wert in dem Zähler nicht Null und geringer als der Wert in dem Register ist, und des Neueinstellens des Wertes in dem Zähler gleich dem Wert in dem Register umfaßt.
24. Verfahren gemäß Anspruch 22 oder 23, das ferner den Schritt des Ersetzens des Wertes in dem Register durch den Wert in dem Zähler umfaßt.
25. Verfahren gemäß einem der Ansprüche 22 bis 24, das ferner den Schritt des Abwählens des Wertes in dem Register unter Verwendung eines Multiplexers und des Ersetzens des Wertes in dem Register durch den Wert in dem Zähler umfaßt.
26. Verfahren gemäß einem der Ansprüche 22 bis 25, das ferner den Schritt des Ladens des Registers mit einer Anzahl von Sektoren in einem Block und des Ladens des Zählers mit einer Anzahl von zu übertragenden Sektoren umfaßt.
27. Verfahren gemäß Anspruch 26, das ferner den Schritt des Einstellens einer Blockgröße als ein Vielfaches eines Sektors umfaßt.
28. Verfahren gemäß Anspruch 26 oder 27, bei dem der Schritt des Anforderns einer Datenübertragung von einer Quelle an einen Host ferner ein Anfordern der Datenübertragung eines Blocks von Daten durch ein Senden eines Signals an eine Rostschnittstelle (204) umfaßt.
29. Verfahren gemäß einem der Ansprüche 22 bis 28, bei dem der Schritt des Anforderns einer Datenübertragung von einer Quelle an einen Host ferner ein Anfordern einer Übertragung eines Sektors von Daten durch ein Senden eines Signals an eine Speichermedienschnittstelle (210) umfaßt.
30. Verfahren gemäß Anspruch 29, das ferner den Schritt des Speicherns des Blockes von Daten in einem Puffer umfaßt.
31. Verfahren gemäß Anspruch 30, das ferner den Schritt des Speicherns des Sektors von Daten in einem Puffer umfaßt.
32. Verfahren gemäß einem der Ansprüche 22 bis 31, das ferner den Schritt des Definierens der Daten als Sektoren und des Sendens von Daten an den Host als einen einzelnen Block, wenn die Sektoren dieses einzelnen Blocks in einem Puffer vorliegen, umfaßt.
33. Verfahren gemäß Anspruch 32, das ferner den Schritt des Dekrementierens des Zählers und des Abbrechens des Anforderns von Datenübertragungen, wenn die Sektoren den Puffer füllen, umfaßt.
34. Datenübertragungsprozessor, der auf einem computerlesbaren Medium gespeichert ist, wobei der Datenübertragungsprozessor durch eine Steuerung ausführbar ist und folgende Merkmale aufweist:
eine Logik, die konfiguriert ist, um ein Speichermedium (104) aufzufordern, zumindest einen Datensektor einer Mehrzahl von Datensektoren, die in einer Anforderung verbleiben, zu übertragen;
eine Logik, die konfiguriert ist, um zu ermitteln, ob Sektoren, die in der Anforderung verbleiben, durch eine definierte Blockgröße gerade teilbar sind; und
eine Logik, die konfiguriert ist, um eine Datensektorübertragungsanforderung zu unterbrechen, wenn eine Anzahl von angeforderten Datensektoren nicht gerade durch die Blockgröße teilbar ist.
35. Datenübertragungsprozessor gemäß Anspruch 34, der ferner eine Logik aufweist, die konfiguriert ist, um die Anzahl von Datensektoren, die gesendet werden sollen, gleich der Anzahl von Datensektoren, die noch zu übertragen sind, neu einzustellen.
36. Datenübertragungsprozessor gemäß Anspruch 34 oder 35, der ferner eine Logik aufweist, die konfiguriert ist, um die Datensektoren in dem Speichermedium (104) an die Hostvorrichtung (102) zu übertragen, solange die Anzahl von Datensektoren, die noch zu übertragen sind, durch die Blockgröße gerade teilbar ist.
37. System zum Erfassen von Kleinblockübertragungen, das folgende Merkmale aufweist:
eine Hostvorrichtung (102) zum Einstellen einer Größe von Datenblöcken;
ein Speichermedium (104) zum Speichern von Daten in Datensektoren; und
ein Kleinblockübertragungssystem, das wirksam zwischen die Hostvorrichtung (102) und das Speichermedium (104) gekoppelt ist, wobei das Kleinblocksystem ausgelegt ist, um Datensektoren zwischen der Hostvorrichtung (102) und dem Speichermedium (104) zu übertragen, während die Datensektoren durch die Blockgröße gerade teilbar sind.
38. System gemäß einem der Ansprüche 34 bis 37, bei dem das Kleinblockübertragungssystem ferner eine Logik aufweist, die konfiguriert ist, um die Datenübertragungen zu unterbrechen, wenn die Datensektoren, die noch zu übertragen sind, nicht gerade durch die Blockgröße teilbar sind.
39. System gemäß einem der Ansprüche 35 bis 38, bei dem das Kleinblockübertragungssystem ferner eine Logik aufweist, die konfiguriert ist, um eine Blockgröße gleich der Anzahl von Datensektoren, die in der Übertragung verbleiben, neu einzustellen und verbleibende Datensektoren zu übertragen.
40. System zum Erfassen von Kleinblockübertragungen, das folgende Merkmale aufweist:
eine Einrichtung zum Einstellen einer Größe von Datenblöcken;
eine Einrichtung zum Speichern von Daten in Datensektoren; und
eine Einrichtung, die die Einrichtung zum Einstellen der Größe von Datenblöcken mit der Einrichtung zum Speichern von Daten in Datensektoren koppelt, wobei die Einrichtung ausgelegt ist, um Datensektoren zwischen der Einrichtung zum Einstellen der Größe von Datenblöcken und der Einrichtung zum Speichern von Daten in Datensektoren zu übertragen, während die Datensektoren durch die Blockgröße gerade teilbar sind.
41. System gemäß Anspruch 40, bei dem die Einrichtung, die die Einrichtung zum Einstellen der Größe von Datenblöcken mit der Einrichtung zum Speichern der Daten in Datensektoren koppelt, ferner eine Logik aufweist, die konfiguriert ist, um die Datenübertragungen zu unterbrechen, wenn die Datensektoren, die noch zu übertragen sind, nicht gerade durch die Blockgröße teilbar sind.
42. System gemäß Anspruch 41, bei dem die Einrichtung, die die Einrichtung zum Einstellen der Größe von Datenblöcken mit der Einrichtung zum Speichern der Daten in Datensektoren koppelt, ferner eine Logik aufweist, die konfiguriert ist, um eine Blockgröße gleich der Anzahl von Datensektoren, die in einer Übertragung verbleiben, neu einzustellen und verbleibende Datensektoren zu übertragen.
DE10310055A 2002-03-08 2003-03-07 Systeme und Verfahren zum Erfassen und Kompensieren von Kleinblockdatenübertragungen Withdrawn DE10310055A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/094,857 US20030172229A1 (en) 2002-03-08 2002-03-08 Systems and methods for detecting and compensating for runt block data transfers

Publications (1)

Publication Number Publication Date
DE10310055A1 true DE10310055A1 (de) 2003-09-25

Family

ID=22247588

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10310055A Withdrawn DE10310055A1 (de) 2002-03-08 2003-03-07 Systeme und Verfahren zum Erfassen und Kompensieren von Kleinblockdatenübertragungen

Country Status (4)

Country Link
US (1) US20030172229A1 (de)
JP (1) JP2003288317A (de)
DE (1) DE10310055A1 (de)
GB (1) GB2388934A (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3839288B2 (ja) * 2001-09-12 2006-11-01 株式会社ルネサステクノロジ メモリカード
JP2004227501A (ja) * 2003-01-27 2004-08-12 Yamaha Corp データ転送制御装置および方法
US7155548B2 (en) * 2003-11-04 2006-12-26 Texas Instruments Incorporated Sequential device control with time-out function
US8706987B1 (en) * 2006-12-01 2014-04-22 Synopsys, Inc. Structured block transfer module, system architecture, and method for transferring
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US9189396B2 (en) 2012-08-24 2015-11-17 Dell Products L.P. Snapshot coordination
US9262329B2 (en) * 2012-08-24 2016-02-16 Dell Products L.P. Snapshot access
US20140310493A1 (en) * 2013-04-11 2014-10-16 International Business Machines Corporation Migrating data across storages with dissimilar allocation sizes
US8797669B1 (en) 2013-08-30 2014-08-05 Western Digital Technologies, Inc. Disk drive executing rotational position optimization (RPO) algorithm to facilitate a read-modify-write operation
US9971522B2 (en) 2014-07-21 2018-05-15 Toshiba Memory Corporation Memory system and method
US10423568B2 (en) * 2015-12-21 2019-09-24 Microsemi Solutions (U.S.), Inc. Apparatus and method for transferring data and commands in a memory management environment
US10564890B2 (en) * 2017-07-07 2020-02-18 Seagate Technology Llc Runt handling data storage system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0551494A4 (en) * 1991-08-07 1995-03-01 Adaptec Inc Intelligent hardware for automatically reading and writing multiple sectors of data between a computer bus and a disk drive
GB9606927D0 (en) * 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
US6134631A (en) * 1996-08-19 2000-10-17 Hyundai Electronics America, Inc. Non-volatile memory with embedded programmable controller
US6324604B1 (en) * 1998-07-07 2001-11-27 Emc Corporation Magnetic disk storage for storing data in disk block size from fixed length of host block in non-integer multiple of the disk block size
US6618788B1 (en) * 2000-09-27 2003-09-09 Cypress Semiconductor, Inc. ATA device control via a packet-based interface

Also Published As

Publication number Publication date
GB0303822D0 (en) 2003-03-26
US20030172229A1 (en) 2003-09-11
JP2003288317A (ja) 2003-10-10
GB2388934A (en) 2003-11-26

Similar Documents

Publication Publication Date Title
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE60036465T2 (de) Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE102012209016B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE68913914T2 (de) Multiprozessorsystem mit Vervielfältigung von globalen Daten.
DE102009043411B4 (de) Bereitstellen eines Zurückstellungsmechanismus für "gepostete" Interrupt-Transaktionen
DE3751514T2 (de) Adressieranordnung für RAM-Puffer-Steuereinrichtung.
DE19983026B4 (de) Brücke zwischen zwei Bussen mit einem Puffer mit einer einstellbaren Mindestspeicherraummenge für ein Akzeptieren einer Schreibanforderung und Verfahren hierzu
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE60115795T2 (de) Adaptiver Wiederholungsmechanismus
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE602004012492T2 (de) DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102012208803B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE102019124450A1 (de) Bandbreitenbegrenzung in solid-state-laufwerken
DE102006002526A1 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE112018005427T5 (de) Autonome adress-/befehls-chip-synchronisierte datenchip-adress-ablaufsteuerung für ein verteiltes pufferspeichersystem
DE3301628A1 (de) Schaltungsanordnung fuer den datenaustausch zwischen zwei rechnern
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE10048402B4 (de) Datenspeichersystem
DE102012209011A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE10310055A1 (de) Systeme und Verfahren zum Erfassen und Kompensieren von Kleinblockdatenübertragungen
DE69122142T2 (de) Steuerungsanlage für ein Mehrprozessorsystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal