DE102006002526A1 - Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben - Google Patents

Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben Download PDF

Info

Publication number
DE102006002526A1
DE102006002526A1 DE102006002526A DE102006002526A DE102006002526A1 DE 102006002526 A1 DE102006002526 A1 DE 102006002526A1 DE 102006002526 A DE102006002526 A DE 102006002526A DE 102006002526 A DE102006002526 A DE 102006002526A DE 102006002526 A1 DE102006002526 A1 DE 102006002526A1
Authority
DE
Germany
Prior art keywords
port
data
control
state disk
solid
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.)
Granted
Application number
DE102006002526A
Other languages
English (en)
Other versions
DE102006002526B4 (de
Inventor
Dong-ryul Hwaseong Ryu
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 DE102006002526A1 publication Critical patent/DE102006002526A1/de
Application granted granted Critical
Publication of DE102006002526B4 publication Critical patent/DE102006002526B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Abstract

Die vorliegende Erfindung betrifft eine Steuervorrichtung für eine Solid-State-Disk und ein Verfahren zum Betreiben einer Steuervorrichtung für eine Solid-State-Disk. DOLLAR A Die Steuervorrichtung für eine Solid-State-Disk gemäß der vorliegenden Erfindung besitzt einen ersten Port (PORT A), einen zweiten Port (PORT B) mit einer Mehrzahl von Kanälen, eine zentrale Prozessoreinheit (1400), die an einen CPU-Bus (1003) angeschlossen ist, einen Pufferspeicher (1700), der zum Speichern von Daten ausgebildet ist, die von dem oder zu dem ersten oder zweiten Port übertragen werden sollen, einen Puffer-Steuer-/Arbitrierblock (1600), der an den CPU-Bus angeschlossen und zum Steuern von Lese- und Schreibvorgängen des Pufferspeichers unter Kontrolle der zentralen Prozessoreinheit ausgebildet ist, einen ersten Datenübertragungsblock (1300, 1400), der zwischen dem ersten Port und dem puffer-Steuer-/Arbitrierblock geschaltet und dazu ausgebildet ist, in dem Pufferspeicher zu speichernde oder aus dem Pufferspeicher zu lesende Daten parallel zu dem CPU-Bus zu übertragen, und einen zweiten Datenübertragungsblock (RO_FIFO, ..., Rn_FIFO, 1800), der zwischen den zweiten Port und den Puffer-Steuer-/Arbitrierblock geschaltet und dazu ausgebildet ist, in dem Pufferspeicher zu speichernde und aus dem Pufferspeicher zu lesende Daten parallel zu dem CPU-Bus zu übertragen. DOLLAR A Verwendung beispielsweise in Computersystemen.

Description

  • Die vorliegende Erfindung betrifft eine Steuervorrichtung für eine Solid-State-Disk und ein Verfahren zum Betreiben einer Steuervorrichtung für eine Solid-State-Disk.
  • Bekannter Weise verwenden Computersysteme im Allgemeinen mehrere Typen von Speichersystemen. Beispielsweise verwenden Computersysteme im Allgemeinen sogenannte Hauptspeicher, die mit vergleichbaren und sehr schnellen Zugriffszeiten wahlfrei beschreib- und lesbar sind und deshalb gemeinhin als Speicher mit wahlfreiem Zugriff bzw. Direktzugriffsspeicher bezeichnet werden. Da jedoch Halbleiterspeicher relativ teuer sind, werden oft andere Speicher mit hoher Dichte und geringeren Kosten eingesetzt. Andere Speichersysteme umfassen beispielsweise Magnetplatten-Speichersysteme. Im Falle von Magnetplatten-Speichersystemen liegen Zugriffszeiten allgemein in der Größenordnung von einigen 10 ms. Andererseits liegen im Falle des Hauptspeichers die Zugriffszeiten in der Größenordnung von einigen 100 ns. Plattenspeicherung wird verwendet, um große Mengen von Daten zu speichern, die bei Bedarf sequentiell in den Hauptspeicher gelesen werden können. Ein anderer Typ von platten-ähnlicher Speicherung ist Solid-State-Disk-Speicherung (SSD, auch Solid State Drive bzw. Solid State-Laufwerk genannt). SSD ist eine Daten-Speicherungsvorrichtung, die Speicherchips, wie SDRAM, anstelle der in herkömmlichen Festplatten-Laufwerken eingesetzten rotierenden Platten zum Speichern von Daten verwendet.
  • Der Begriff "SSD" wird für zwei unterschiedliche Arten von Produkten verwendet. Der erste SSD-Typ, der auf schnellen, flüchtigen Speichern, wie SDRAM, basiert, zeichnet sich durch extrem schnellen Datenzugriff aus und wird vordringlich zum Beschleunigen von Anwendungen eingesetzt, die durch die Latenzzeit von Plattenlaufwerken eingeschränkt sind. Da diese SSD flüchtige Speicher verwendet, beinhaltet sie typischer Weise interne Batterie- und Backup-Plattensysteme, um die Datenpersistenz zu gewährleisten. Wenn die Energieversorgung aus irgendeinem Grund zusammenbricht, versorgt die Batterie die Einheit lange genug mit Energie, um alle Daten vom RAM auf die Backup-Platte zu kopieren. Nach dem Wiederherstellen der Energieversorgung werden die Daten von der Backup-Platte zurück in den RAM ko piert, und die SSD setzt ihren normalen Betrieb fort. Der erste SSD-Typ ist insbesondere für Computer geeignet, der schon die maximale Menge an RAM besitzt. Der zweite SSD-Typ verwendet Flash-Speicher zum Speichern von Daten. Derartige Produkte, welche für gewöhnlich dieselbe Größe wie herkömmliche Speichervorrichtungen besitzen, werden typischerweise als robuster Ersatz mit geringem Energieverbrauch für Festplattenlaufwerke eingesetzt. Um eine Verwechslung mit dem ersten Typ zu vermeiden, werden derartige Laufwerke im Allgemeinen als Flash Disks bezeichnet. Die vorliegende Erfindung zielt auf den zweiten SSD-Typ.
  • Der Erfindung liegt die Aufgabe zu Grunde, eine Steuervorrichtung für eine Solid-State-Disk und ein Verfahren zum Betreiben einer Steuervorrichtung für eine Solid-State-Disk anzugeben, die in der Lage sind, Daten ohne Einschränkung durch eine CPU-Bus-Geschwindigkeit zu übertragen.
  • Die Aufgabe wird gelöst durch eine Steuervorrichtung für eine Solid-State-Disk gemäß den Patentansprüchen 1 oder 18 und durch ein Verfahren zum Betreiben einer Steuervorrichtung für eine Solid-State-Disk gemäß Anspruch 30.
  • Vorzugsweise bewirken entweder der erste oder der zweite Datenübertragungsblock oder beide Datenübertragungsblöcke der Steuervorrichtung für eine Solid-State-Disk gemäß Patentanspruch 1 ein Umgehen des CPU-Busses beim Übertragen von Daten zwischen dem Pufferspeicher und dem jeweiligen ersten und zweiten Port.
  • Der vorliegend verwendete Begriff "Block" bezieht sich auf eine elektronische Schaltungsanordnung, welche die beschriebenen Vorgänge implementiert. Eine solche Schaltungsanordnung kann vollständig in Form verdrahteter Schaltkreise oder durch eine Kombination von Hardware, Software und/oder Firmware implementiert sein.
  • Die Erfindung wird nun in Verbindung mit den beigefügten Zeichnungen beschrieben. Es zeigt/zeigen:
  • 1 ein Blockdiagramm zur Darstellung einer Ausgestaltung einer Steuervorrichtung für eine Solid-State-Disk gemäß der vorliegenden Erfindung;
  • 2 ein Blockdiagramm zur Darstellung einer Busarchitektur zum Verbinden eines Puffer-Steuer-/Arbitrierblocks und FIFO-Registern in 1;
  • 3A und 3B Zeitablauf-Diagramme zum Beschreiben von Betriebsabläufen eines Puffer-Steuer-/Arbitrierblocks und von FIFO-Registern;
  • 4 ein Blockdiagramm einer Busarchitektur eines ECC-Blocks in 1;
  • 5 ein Zeitablauf-Diagramm zum Beschreiben von Fehlererkennungs- und Fehlerkorrekturoperationen eines ECC-Blocks in 1;
  • 6 ein Blockdiagramm zur Darstellung eines von n Kanälen eines Flash-Schnittstellensteuerblocks in 1;
  • 7 bis 9 Zeitablauf-Diagramme zum Beschreiben eines Schreibvorgangs gemäß einem 4-Wege-Interleave-Protokoll;
  • 10 ein Blockdiagramm zur Darstellung eines Flash-Schnittstellensteuerblocks in 1;
  • 11 ein Zeitablauf-Diagramm zur Darstellung eines Abruf-Taktsignals, das durch einen Verzögerungsschaltkreis eines Flash-Schnittstellensteuerblocks in 10 verzögert ist;
  • 12 ein Blockdiagramm zur Darstellung von mit Kanälen eines Flash-Schnittstellensteuerblocks verbundenen Speichertypen; und
  • 13 ein Blockdiagramm zur Darstellung einer anderen Struktur eines zweiten, durch eine Steuervorrichtung für eine Solid-State-Disk gemäß der vorliegenden Erfindung unterstützten Kanals.
  • 1 ist ein Blockdiagramm zur Darstellung einer Steuervorrichtung für eine Solid-State-Disk bzw. einer Solid-State-Disk-Steuervorrichtung gemäß einer bevorzugten Ausgestaltung der vorliegenden Erfindung. Eine Solid-State-Disk-Steuervorrichtung 1000 weist einen ersten Port PORT A und einen zweiten Port PORT B auf. Die Solid-State-Disk-Steuervorrichtung 1000 tauscht Daten mit einem externen Host (nicht gezeigt) über den ersten Port PORT A aus. Der erste Port weist zwei Kanäle auf: einen parallelen AT-Verbindung(PATA)-Bus 1001 und einen seriellen AT-Verbindung(SATA)-Bus 1002. Der zweite Port PORT B weist eine Mehrzahl von Kanälen auf, von denen jeder elektrisch mit einer Mehrzahl von nicht-flüchtigen Speichern verbunden ist. Vorliegend sind dieselben Speichertypen mit jedem Kanal verbunden. Ein mit einem Kanal verbundener nicht-flüchtiger Speicher kann ein Ein-Level-Flash-Speicher, ein Mehr-Level-Flash-Speicher, ein OneNAND-Flash-Speicher (ein einzelner Chip, in dem ein Flash-Speicher-Kern und eine Speicher-Steuerlogik integriert sind) oder dergleichen sein. Beispielsweise sind mit einem Kanal Ein-Level-Flash-Speicher verbunden, mit einem anderen Kanal sind Mehr-Level-Flash-Speicher verbunden, und mit dem anderen Kanal sind OneNAND-Flash-Speicher verbunden. Eine SATA-Schnittstelle (in 1 als "SATA I/F" bezeichnet) 1100, wird Vorrichtungs-Dongle genannt und wandelt serielle/parallele Daten in parallele/serielle Daten um. Beispielsweise empfängt die SATA-Schnittstelle 1100 serielle Daten, die durch einen SATA-Bus 1002 übertragen werden, und wandelt die empfangenen seriellen Daten in parallele Daten um. Die SATA-Schnittstelle 1100 wandelt parallele Daten von einem Multiplexer 1200 in serielle Daten um. Der Multiplexer 1200 überträgt über den PATA-Bus 1001 bereitgestellte parallele Daten an den Host-Schnittstellensteuerblock 1300. Der Multiplexer 1200 überträgt Daten von dem Host-Schnittstellensteuerblock 1300 zu dem PATA-Bus 1001 oder der SATA-Schnittstelle 1100. Zuvor wird bestimmt, ob der PATA-Bus 1001 oder der SATA-Bus 1002 des ersten Ports verwendet wird.
  • Weiterhin Bezug nehmend auf 1 ist der Host-Schnittstellensteuerblock 1300 mit dem PATA-Bus 1001 (auch "ein interner ITE-Bus" genannt), dem SATA-Bus 1002 und einem CPU-Bus 1003 verbunden. Der Host-Schnittstellensteuerblock 1300 führt eine Schnittstellen-Operation gemäß einem Steuerbefehl einer zentralen Prozessoreinheit (CPU) 1400 durch. Durch den Host-Schnittstellensteuerblock 1300 ein- oder auszugebende Daten werden durch einen Puffer-Steuer-/Arbitrierblock 1600 und ein FIFO-Register (L_FIFO) 1500 gespeichert, ohne über den CPU-Bus 1003 geleitet zu werden. Beispielsweise werden von außen eingegebene Daten durch den Host-Schnittstellensteuerblock 1300, das L_FIFO 1500 und den Puffer-Steuer-/Arbitrierblock 1600 bei Steuerung durch die CPU 1400 in dem Pufferspeicher 1700 gespeichert. In gleicher Weise werden in dem Pufferspeicher 1700 gespeicherte Daten durch den Puffer-Steuer-/Arbitrierblock 1600, das L_FIFO 1500 und den Host-Schnittstellensteuerblock 1300 nach außen ausgegeben.
  • Eine Daten-Übertragungsoperation der Solid-State-Disk-Steuervorrichtung 1000 kann durchgeführt werden, ohne den CPU-Bus 1003 zu benutzen, sodass eine Datenübertragungsgeschwindigkeit nicht durch eine CPU-Bus-Geschwindigkeit beeinträchtigt ist.
  • Das L_FIFO 1500 ist zwischen den Host-Schnittstellensteuerblock 1300 und den Puffer-Steuer-/Arbitrierblock 1600 eingeschleift. In einem Fall, in dem Bandbreiten der internen Busse 1004 und 1005 voneinander verschieden sind, wird das L_FIFO 1500 benutzt, um nicht verarbeitete Daten während einer Datenübertragung temporär zu speichern. Die Größe des L_FIFO 1500 ist so bestimmt, dass das L_FIFO 1500 während eines Datenübertragungsvorgangs nicht vollständig gefüllt ist. Der Host-Schnittstellensteuerblock 1300 weist ein Register 1301 auf, in dem von außen kommende Betriebskommandos und Adressen gespeichert werden. Der Host-Schnittstellensteuerblock 1300 kommuniziert einen Schreib- oder Lesevorgang in Abhängigkeit von in dem Register 1301 gespeicherten Informationen durch den CPU-Bus 1003 an die CPU 1400. Die CPU 1400 steuert den Host-Schnittstellensteuerblock 1300 und den Puffer-Steuer-/Arbitrierblock 1600 auf der Grundlage von eingegebenen Informationen. Dies wird weiter unten umfassender beschrieben.
  • Ein Flash-Schnittstellensteuerblock 1800 tauscht Daten mit externen nicht-flüchtigen Speichern durch einen zweiten Port aus. Der Flash-Schnittstellensteuerblock 1800 ist zum Unterstützen der NAND-Flash-Speicher, der OneNAND-Flash-Speicher und der Mehr-Level-Flash-Speicher ausgebildet. Der Flash-Schnittstellensteuerblock 1800 weist eine vorbestimmte Anzahl von Kanälen auf. Ein Kanal kann mit beliebigen einer Mehrzahl von nicht-flüchtigen Speichern verbunden sein. Kanäle können mit demselben Speichertyp oder mit unterschiedlichen Speichertypen verbunden sein. In einem Fall, bei dem unterschiedliche Typen von nicht-flüchtigem Speicher mit dem zweiten Port verbunden sind, unterstützt die Solid-State-Disk-Steuervorrichtung 1000 beim Hochfahren (Booten) darüber hinaus eine Funktion zum Diagnostizieren von Typen nicht-flüchtigen Speichers, die mit dem zweiten Port verbunden sind. Diese Funktion lässt sich in einfacher Weise mittels eines hinreichend bekannten Lesevorgangs der Geräte-ID erreichen. Wenn Lese- und Programmiervorgänge auf unterschiedlichen Kanälen erfolgen, führt der Flash-Schnittstellensteuerblock 1800 der vorliegenden Solid-State-Disk-Steuervorrichtung 1000 selektiv Software- und Hardware-Interleave-Operationen durch.
  • Durch den Flash-Schnittstellensteuerblock 1800 übertragene Daten werden durch ein FIFO-Register Ri_FIFO (i = 0 – n) und den Puffer-Steuer-/Arbitrierblock 1600 in den Pufferspeicher 1700 gespeichert. Durch den Flash-Schnittstellensteuerblock 1800 übertragene Daten werden durch ein FIFO-Register Ri_FIFO (i = 0 – n) und den Puffer-Steuer-/Arbitrierblock 1600 in den Pufferspeicher 1700 gespeichert, ohne durch den CPU-Bus 1003 geleitet zu werden. Beispielsweise werden durch den zweiten Port eingegebene Daten durch den Flash-Schnittstellensteuerblock 1800, das Ri_FIFO und den Puffer-Steuer-/Arbitrierblock 1600 bei Steuerung durch die CPU 1400 in den Pufferspeicher 1700 gespeichert. In gleicher Weise werden in dem Pufferspeicher 1700 gespeicherte Daten durch den Puffer-Steuer-/Arbitrierblock 1600, das Ri_FIFO und den Flash-Schnittstellensteuerblock 1800 bei Steuerung durch die CPU 1400 zu dem zweiten Port geleitet. Ein Datenübertragungsvorgang der Solid-State-Disk-Steuervorrichtung 1000 kann ohne Verwendung des CPU-Busses 1003 durchgeführt werden, sodass seine Datenübertragungsgeschwindigkeit nicht durch die CPU-Bus-Geschwindigkeit beeinträchtigt wird. Die FIFO-Register R0_FIFO-Rn_FIFO sind zwischen den Flash-Schnittstellensteuerblock 1800 und den Puffer-Steuer-/Arbitrierblock 1600 geschaltet. Für den Fall, dass Bandbreiten der internen Busse 1006 <n:0> und 1007 <n:0> voneinander verschieden sind, werden die FIFO-Register R0_FIFO-Rn_FIFO zum temporären Speichern nicht verarbeiteter Daten verwendet, während Daten übertragen werden. Die Größe jedes der FIFO-Register R0_FIFO-Rn_FIFO ist derart bestimmt, dass jedes der FIFO-Register Ri_FIFO während eines Datenübertragungsvorgangs nicht vollständig gefüllt ist.
  • Der Puffer-Steuer-/Arbitrierblock 1600 ist zum Steuern von Lese- und Schreibvorgängen des Pufferspeichers 1700 ausgebildet. Beispielsweise speichert der Puffer-Steuer-/Arbitrierblock 1600 durch das L_FIFO oder die Ri_FIFOs eingegebene Daten in den Pufferspeicher 1700. Der Puffer-Speicher-/Arbitrierblock 1600 liest in einen nicht-flüchtigen Speicher zu schreibende oder nach außen auszugebende Daten aus dem Pufferspeicher 1700 aus. Der Puffer-Steuer-/Arbitrierblock 1600 ist zum Verarbeiten von Daten in sequentieller Weise ausgebildet, wenn Datenverarbeitungsanfragen zusammenfallen. In diesem Fall ist es bevorzugt, die Menge auf einmal zu verarbeitender Daten zu begrenzen, sodass keine lange Zeit erforderlich ist, um eine beliebige Anfrage zu bearbeiten. Der Puffer-Speicher-/Arbitrierblock 1600 hat ausreichende Datenverarbeitungsfähigkeit, um gleichzeitige Anfragen der FIFO-Register R0_FIFO-Rn_FIFO zu bearbeiten. Das bedeutet, dass die Datenverarbeitungskapazität gleich groß oder größer als eine gesamte Bandbreite (L_FIFO + R0_FIFO + ... + Rn_FIFO) ist.
  • Fehlerprüf- und -korrektur (ECC)-Blöcke 1900_01900_n sind jeweils mit den FIFO-Registern R0_FIFO-Rn_FIFO verbunden, die ihrerseits parallel zwischen den Puffer-Steuer-/Arbitrierblock 1600 und den Flash-Schnittstellensteuerblock 1800 eingeschleift sind. Wenn Daten von dem Flash-Schnittstellensteuerblock 1800 zu dem Pufferspeicher 1700 durch ein beliebiges FIFO-Register (zum Beispiel R0_FIFO) übertragen werden, führt ein dem R0_FIFO zugeordneter ECC-Block 1900_0 eine Fehlererkennungsoperation für durch das R0_FIFO übertragene Daten durch. Wenn in den übertragenen Daten ein Fehler erkannt wird, ist der ECC-Block 1900_0 zum Anfordern einer Fehlerkorrektur von dem Puffer-Steuer-/Arbitrierblock 1600 und zum Korrigieren fehlerhafter Daten in dem Pufferspeicher 1700 ausgebildet. Jeder der ECC-Blöcke 1900_01900_n erzeugt ECC-Daten, wenn Hauptdaten durch ein zugehöriges FIFO-Register zu dem Flash-Schnittstellensteuerblock 1800 übertragen werden. So erzeugte ECC-Daten werden in einem nicht-flüchtigen Speicher gespeichert, der mit dem zweiten Port verbunden ist, wobei die Hauptdaten unter Kontrolle des Flash-Schnittstellensteuerblocks 1800 bleiben.
  • Der Pufferspeicher 1700 wird dazu benutzt, nach außen zu übertragende Daten (beispielsweise an einen externen Host oder einen nicht-flüchtigen Speicher) zu speichern. Darüber hinaus wird der Pufferspeicher 1700 benutzt, um durch die CPU 1400 ausgeführte Programme zu speichern. Der Pufferspeicher 1700 besteht vorzugsweise aus SRAM. Der Pufferspeicher 1700 kann einerseits aus SRAM zum Speichern von nach außen zu übertragenden Daten und aus SRAM zum Speichern von Programmen und Daten ausgebildet sein, die durch die CPU 1400 verwendet werden. Es ist jedoch für den Fachmann offensichtlich, dass die Art und Zuweisung von Pufferspeicher nicht auf die speziellen Beispiele dieser Offenbarung beschränkt ist.
  • Die CPU 1400 erzeugt einen Befehl unter Verwendung von Werten in Steuerregistern 1301 und 1801 in den Steuerblöcken 1300 und 1800. Die CPU 1400 setzt die Steuerregister 1301 und 1801 unter Verwendung von Steuerinformationen für Lese- und Schreibvorgänge. Wenn beispielsweise ein Lese-/Schreibbefehl von außen empfangen wird, wird er in dem Register 1301 des Host-Schnittstellensteuerblocks 1300 gespeichert. Der Host-Schnittstellensteuerblock 1300 benachrichtigt die CPU 1400 auf der Grundlage des in dem Register 1301 gespeicherten Befehls, dass ein Lese-/Schreibbefehl empfangen wurde. Die CPU 1400 steuert die Blöcke 1300 und 1600 gemäß einem Lese-/Schreibbefehl. Darüber hinaus speichert die CPU 1400 einen Lese-/Schreibbefehl in dem Register 1801 des Flash-Schnittstellensteuerblocks 1800. Der Flash-Schnittstellensteuerblock 1800 steuert einen Lese-/Schreibvorgang nicht-flüchtiger Speicher durch den zweiten Port auf der Grundlage des in dem Register 1801 gespeicherten Befehls.
  • Gemäß dieser Ausgestaltung der vorliegenden Erfindung wird dann, wenn ein Lese-/Schreibvorgang für nicht-flüchtige Speicher in Verbindung mit dem zweiten Port erforderlich ist, ein Datenübertragungsvorgang nicht über den CPU-Bus 1003 in der Solid-State-Disk-Steuervorrichtung 1000, sondern über einen FIFO-Pfad durchgeführt. Das bedeutet, dass eine Datenübertragung von dem ersten Port zu dem zweiten Port (oder von dem zweiten Port zu dem ersten Port) ohne Verwendung des CPU-Busses 1003 durchgeführt werden kann, sodass eine Datenübertragungsge schwindigkeit der vorliegenden Solid-State-Disk-Steuervorrichtung 1000 nicht durch eine Geschwindigkeit des CPU-Busses 1003 beeinträchtigt ist.
  • 2 ist ein Blockdiagramm zur Darstellung der Busarchitektur zum Verbinden eines Puffer-Steuer-/Arbitrierblocks und der FIFO-Register in 1, und 3A und 3B sind Zeitablauf-Diagramme zum Beschreiben des Betriebs des Puffer-Steuer-/Arbitrierblocks und der FIFO-Register.
  • Bezug nehmend auf 2 ist der Puffer-Steuer-/Arbitrierblock 1600 zum Bestätigen der Datenverarbeitungsanfrage ausgebildet, wenn ein Datenverarbeitungsvorgang durch FIFO-Register L_FIFO und R0_FIFO-Rn_FIFO nachgefragt wird. Ein Bus zwischen dem L_FIFO und dem Puffer-Steuer-/Arbitrierblock 1600 ist zum Übertragen eines Anforderungssignals REQ0, eines Erlaubnissignals GRT0, eines Lese-/Schreib-Unterscheidungssignals RW0, einer Adresse ADDRESS0, Lesedaten RD0, Schreibdaten WD0 und eines Datengültigkeitsintervall-Signals D_VALID0 ausgebildet. In gleicher Weise ist jeder der Busse 1006_01006_n zwischen den FIFO-Registern R0_FIFO-Rn_FIFO und dem Puffer-Steuer-/Arbitrierblock 1600 zum Übertragen eines Anforderungssignals REQ1, eines Erlaubnissignals GRT1, eines Lese-/Schreib-Unterscheidungssignals RW1, einer Adresse ADDRESS1, Lesedaten RD1, Schreibdaten WD1 und eines Datengültigkeitsintervall-Signals D_VALIDI ausgebildet.
  • Im Fall einer Übertragung von Daten aus dem Pufferspeicher 1700 zu dem L_FIFO, wie in 3A dargestellt, aktiviert das L_FIFO ein Anforderungssignal REQ0 für einen Lesevorgang. Zur selben Zeit wird eine Adresse ADDRESS0 zu lesender Daten von dem L_FIFO an den Puffer-Steuer-/Arbitrierblock 1600 übertragen. Wenn das Anforderungssignal REQ0 aktiviert ist, aktiviert der Puffer-Steuer-/Arbitrierblock 1600 das Erlaubnissignal GRT0, wenn ein vorhergehender Prozess beendet wurde. Wenn die Datenverarbeitungsanfrage erlaubt wurde, sendet das L_FIFO sequentiell Adressen an den Puffer-Steuer-/Arbitrierblock 1600. Der Puffer-Steuer-/Arbitrierblock 1600 liest gemäß empfangener Adressen Daten aus dem Pufferspeicher 1700 und gibt die gelesenen Daten während der Aktivierung eines Datengültigkeitsintervall-Signals D_VALID0 an das L_FIFO aus. Zu diesem Zeitpunkt deaktiviert das L_FIFO das Anforderungssignal REQ0, wenn eine vorbestimmte Datenmenge (zum Beispiel acht N- Bit-Daten) empfangen wurde. Dieses Deaktivieren ermöglicht es dem Puffer-Steuer-/Arbitrierblock 1600, die Anfrage eines anderen FIFO-Registers zu bearbeiten.
  • Im Fall einer Übertragung von Daten von dem L_FIFO zu dem Pufferspeicher 1700, wie in 3B dargestellt, aktiviert das L_FIFO das Anforderungssignal REQ0 für einen Schreibvorgang. Wenn das Anforderungssignal REQ0 aktiviert ist, aktiviert der Puffer-Steuer-/Arbitrierblock 1600 das Erlaubnissignal GRT0, wenn ein vorhergehender Prozess beendet wurde. Wenn die Datenverarbeitungsanfrage erlaubt wurde, sendet das L_FIFO sequentiell Adressen mit zu schreibenden Daten an den Puffer-Steuer-/Arbitrierblock 1600. Der Puffer-Steuer-/Arbitrierblock 1600 schreibt gemäß empfangener Adressen empfangene Daten in den Pufferspeicher 1700. Zu diesem Zeitpunkt deaktiviert das L_FIFO das Anforderungssignal REQ0, wenn eine vorbestimmte Datenmenge (zum Beispiel acht N-Bit-Daten) ausgegeben wurde. Dieses Deaktivieren ermöglicht es dem Puffer-Steuer-/Arbitrierblock 1600, die Anfrage eines anderen FIFO-Registers zu bearbeiten.
  • Datenübertragung von dem Pufferspeicher 1700 zu einem Ri_FIFO über einen Bus 1006_i wird auf dieselbe Weise, wie in 3A dargestellt, durchgeführt, und Datenübertragung von einem Ri_FIFO über einen Bus 1006_i zu dem Pufferspeicher 1700 wird auf dieselbe Weise durchgeführt, wie in 3B dargestellt. Daher wird auf eine Beschreibung von Lese- und Schreibvorgängen im Zusammenhang mit den FIFO-Registern R0_FIFO-Rn_FIFO verzichtet.
  • 4 ist ein Blockdiagramm zur Darstellung der Busstruktur eines ECC-Blocks in 1, und 5 ist ein Zeitablauf-Diagramm zum Beschreiben eines Fehlererkennungs- und Korrekturbetriebs eines ECC-Blocks.
  • Bezug nehmend auf 4 ist ein beispielhafter Bus zum Verbinden eines ECC-Blocks 1900_0 und eines R0_FIFO-Registers zum Übertragen eines ECC-Anforderungssignals ECC_REQ, eines ECC-Lese-/Schreib-Unterscheidungssignals ECC_RW, einer ECC-Adresse ECC_ADDRESS, von ECC-Wiederherstellungsdaten ECC_RMWD, eines ECC-Erlaubnissignals ECC_GRT und von ECC-Lesedaten ECC_RD ausgebildet.
  • Es sei angenommen, dass Daten durch R0_FIFO zu dem Pufferspeicher 1700 übertragen werden. Wenn anhand der übertragenen Daten ein Fehler erkannt wird, aktiviert der ECC-Block 1900_0 ein ECC-Anforderungssignal ECC_REQ, welches mit einer ECC-Adresse ADD1 fehlerhafter Daten durch das R0_FIFO zu dem Pufter-Steuer-/Arbitrierblock 1600 geleitet wird. Der Puffer-Steuer-/Arbitrierblock 1600 aktiviert das Erlaubnissignal ECC_GRT, wenn das Anforderungssignal ECC_REQ zusammen mit der Adresse ADD1 empfangen wird. Zu diesem Zeitpunkt wird das ECC-Lese-/Schreib-Unterscheidungssignal ECC_RW hoch gehalten, um auf diese Weise einen Lesevorgang anzuzeigen. Wenn das ECC-Lese-/Schreib-Unterscheidungssignal ECC_RW einen hohen Pegel hat, werden fehlerhafte Daten unter der Kontrolle des Puffer-Steuer-/Arbitrierblocks 1600 aus dem Pufferspeicher 1700 gelesen. Die fehlerhaften Daten ECC_RD, die auf diese Weise gelesen wurden, werden durch das R0_FIFO zu dem ECC-Block 1900_0 geleitet. Die fehlerhaften Daten ECC_RD werden durch den ECC-Block 1900_0 korrigiert, und die fehlerkorrigierten Daten ECC_RMWD werden durch das R0_FIFO zu dem Puffer-Steuer-/Arbitrierblock 1600 übertragen. Zu diesem Zeitpunkt geht das ECC-Lese-/Schreib-Unterscheidungssignal ECC_RW auf einen niedrigen Pegel, was einen Schreibvorgang anzeigt. Der Puffer-Steuer-/Arbitrierblock 1600 speichert die fehlerkorrigierten Daten ECC_RMWD in den Pufferspeicher 1700 in Abhängigkeit von dem ECC-Lese-/Schreib-Unterscheidungssignal ECC_RW. Anschließend deaktiviert der Puffer-Steuer-/Arbitrierblock 1600 das Erlaubnissignal ECC_GRT.
  • 6 ist ein Blockdiagramm zur Darstellung eines der Kanäle eines Flash-Schnittstellensteuerblocks in 1.
  • Bezug nehmend auf 6 ist ein Kanal mit einer Mehrzahl von nicht-flüchtigen Speichern verbunden. In dem vorliegenden Beispiel bestehen die nicht-flüchtigen Speicher aus NAND-Flash-Speichern. Wie aus dem Stand der Technik hinreichend bekannt ist, hat der NAND-Flash-Speicher eine Multiplex-I/O-Struktur mit Befehl/Adresse/Daten. Dies bedeutet, dass Befehle, Daten und Adressen über Eingangs-/Ausgangs-Pins bereitgestellt werden. Unter der Annahme, dass ein Kanal mit vier nichtflüchtigen Speichern verbunden ist, besitzt er Eingangs-/Ausgangsleitungen 1802, die gemeinschaftlich mit Speichern M0, M1, M2 und M3 verbunden sind, vier Chipfreigabesignal-Leitungen 1803a, 1803b, die jeweils mit zugehörigen Speichern ver bunden sind, und vier bereit/ausgelastet (ready/busy)-Signalleitungen 1804a1804d, die jeweils mit zugehörigen Speichern verbunden sind. Darüber hinaus, obwohl in der vorliegenden Figur nicht dargestellt, werden Steuersignale, wie /WE, /RE, CLE, ALE usw., gemeinsam an die Speicher M0-M3 angelegt.
  • Es sei angenommen, dass vier Flash-Speicher M0-M3 mit einem Kanal verbunden sind. Unter dieser Annahme sind nachfolgend Schreibvorgänge in Verbindung mit Hardware- und Software-Interleave-Protokollen detaillierter beschrieben. Um einen Schreibvorgang durchzuführen, speichert eine CPU 1400 ein Schreibkommando über einen CPU-Bus 1003 in einem Register 1801 eines Flash-Schnittstellensteuerblocks 1800 (vgl. 1). Der Flash-Schnittstellensteuerblock 1800 führt einen Schreibvorgang für Flash-Speicher in Abhängigkeit von dem in dem Register 1801 gespeicherten Schreibkommando aus. Im Falle der oben beschriebenen Kanalstruktur werden dann, wenn die Anzahl der zu schreibenden Sektoren größer als zwei ist, Schreibvorgänge für Flash-Speicher vorzugsweise nach Maßgabe von Hardware- und Software-Interleave-Protokollen durchgeführt. Zunächst wird ein Schreibvorgang des Hardware-Interleave-Protokolls unter Bezugnahme auf 7 beschrieben. Ein Zeitablauf-Diagramm zum Beschreiben eines Schreibvorgangs gemäß 4-Wege-Interleaving ist in 8 dargestellt.
  • Bezug nehmend auf 7 werden, sobald ein Schreibkommando für einen beliebigen Kanal durch die CPU 1400 in das Register 1801 des Flash-Schnittstellensteuerblocks 1800 geschrieben wurde, durch den Flash-Schnittstellensteuerblock 1800 kontinuierlich zu programmierende Daten ohne Einwirken der CPU 1400 an Flash-Speicher M0-M3 übertragen. Beispielsweise werden zu programmierende Daten auf einen Befehl und eine Adresse folgend kontinuierlich durch einen Kanal (das heißt Eingabe-/Ausgabeleitungen) 1802 zu dem Flash-Speicher M0 übertragen, und die übertragenen Daten werden während einer vorbestimmten Zeit tPROG(M0) in ein Speicherzellenfeld des Flash-Speichers M0 programmiert. Während ein Schreibvorgang für den Flash-Speicher M0 ausgeführt wird, wie in 7 dargestellt, überträgt der Flash-Schnittstellensteuerblock 1800 zu programmierende Daten durch den Kanal (das heißt Eingabe-/Ausgabeleitungen) 1802 zu dem Flash-Speicher M1. In gleicher Weise werden, wie zuvor beschrieben, in den Flash-Speichern M2 und M3 zu programmierende Daten übertragen. Demgemäß ist der Kanal durch jeden der Flash-Speicher M0-M3 während der Übertragung von Befehlen, Adressen und Daten belegt. Darüber hinaus ist der Kanal durch jeden Flash-Speicher während einer Status-Leseperiode belegt, die dazu dient zu bewerten, ob ein Schreibvorgang erfolgreich abgeschlossen wurde oder nicht. Sobald alle Daten programmiert sind, informiert der Flash-Schnittstellensteuerblock 1800 die CPU 1400, dass ein Schreibvorgang beendet wurde. In mit dem Kanal verbundene Flash-Speicher zu programmierende Daten sind Daten, die aus dem Pufferspeicher 1700 gelesen wurden.
  • Nachfolgend wird ein Schreibvorgang eines Software-Interleave-Protokolls unter Bezugnahme auf 8 beschrieben. 8 ist ein Zeitablauf-Diagramm zur Darstellung eines Schreibvorgangs gemäß einem 4-Wege-Interleaving unter der Annahme, dass eine Programmierzeit eines Flash-Speichers konstant gehalten wird.
  • Bezug nehmend auf 8 steuert der Flash-Schnittstellensteuerblock 1800, sobald ein Schreibkommando für einen beliebigen Kanal in das Register 1801 des Flash-Schnittstellensteuerblocks 1800 durch die CPU 1400 geschrieben wurde, Schreibvorgänge von Flash-Speichern M0-M3 gemäß einem Steuerbefehl bzw. unter der Kontrolle der CPU 1400. Beispielsweise werden zu programmierende Daten WD0 auf einen Befehl und eine Adresse folgend sequentiell durch einen Kanal (das heißt Eingabe-/Ausgabeleitungen) 1802 zu dem Flash-Speicher M0 übertragen. Sobald die Daten WD0 zu dem Flash-Speicher M0 übertragen wurden, informiert der Flash-Schnittstellensteuerblock 1800 die CPU 1400, dass die Datenübertragung zu dem Flash-Speicher M0 beendet ist. Die CPU 1400 speichert in dem Register 1801 einen Schreibbefehl zusammen mit Informationen betreffend einen Kanal, auf dem Programmierdaten übertragen werden. Diese Schritte (in 8 als mit "a" markierter Bereich dargestellt) werden innerhalb eines Bereichs tPROG durchgeführt, in dem zu dem Flash-Speicher M0 übertragene Daten WD0 programmiert werden. Wenn wiederum ein Schreibbefehl in das Register 1801 geschrieben wird, überträgt der Flash-Schnittstellensteuerblock 1800 auf eine Befehl und eine Adresse folgend sequentiell Programmierdaten WD1 durch einen Kanal (das heißt Eingabe-/Ausgabeleitungen) zu dem Flash-Speicher M1. In gleicher Weise wird die Übertragung von Daten zu Flash-Speichern M2 und M3 durchgeführt, wie vorstehend beschrieben, und es wird auf eine Beschreibung dieses Vorgangs verzichtet.
  • Wie bei dem Hardware-Interleave-Protokoll ist der Kanal sequentiell durch jeden Flash-Speicher während einer Periode belegt, in der ein Befehl, eine Adresse und Daten übertragen werden. Darüber hinaus ist der Kanal durch jeden Flash-Speicher während einer Status-Leseperiode belegt, die dazu dient zu bewerten, ob ein Schreibvorgang erfolgreich abgeschlossen wurde oder nicht.
  • Abweichend von der obigen Annahme, dass eine Programmierzeit eines Flash-Speichers konstant gehalten wird, wird die Programmierzeit tPROG eines Flash-Speichers nicht konstant gehalten. Das bedeutet, dass aufgrund möglicherweise unterschiedlicher Programmierzeiten von Flash-Speichern Zeitverlust während eines Schreibvorgangs des Software-Interleave-Protokolls auftreten kann, wie in 9 dargestellt.
  • 10 ist ein Blockdiagramm zur Darstellung eines Flash-Schnittstellensteuerblocks in 1.
  • Wie hinreichend bekannt ist, werden Daten von einem Flash-Speicher zu einem Flash-Schnittstellensteuerblock 1800 unter Verwendung eines Steuersignals, wie beispielsweise REB, übertragen. In diesem Fall wird die Übertragung von Daten von dem Flash-Speicher zu dem Flash-Schnittstellensteuerblock 1800 durch Leitungsauslastung von Eingabe-/Ausgabeleitungen oder eine Übertragungszeit beeinträchtigt. Das bedeutet, wie in 10 dargestellt, dass eine Zeit zum Übertragen von Daten von einem Punkt A zu einem Punkt A' in Abhängigkeit von einer Systemkonfiguration variiert. Um diese Streuung zu vermeiden, wird bevorzugter Weise eine Abrufzeit eines Abruf-Taktsignals F_CLK zum Bestimmen einer Datenabruf-Zeitgebung eines internen Datenabruf-Registers 1810 eingestellt. Ein Verzögerungsschaltkreis 1820 erzeugt das Abruf-Taktsignal F_CLK in Abhängigkeit von einem an einen Flash-Speicher angelegten REB-Signal, und das Abruf-Taktsignal F_CLK wird an ein Datenabruf-Register 1810 angelegt. Insbesondere wird eine Verzögerungszeit des Verzögerungsschaltkreises 1820 durch einen Wert, der in einem Register 1830 des Flash-Schnittstellensteuerblocks 1800 gesetzt ist, oder durch einen Wert, der über einen externen Anschluss 1840 angelegt wird, eingestellt. Wie in 11 dargestellt, erreichen Daten, die in einem Punkt A vorhanden sind und synchron mit dem REB-Signal ausgegeben werden, Punkt A' nach einer Verzögerungszeit Δt. Demgemäß ist es möglich, von einem Flash-Speicher übertragene Daten stabil abzurufen, indem das REB-Signal um Δt verzögert und das Abruf-Taktsignal F_CLK erzeugt wird.
  • 12 ist ein Blockdiagramm zur Darstellung von Speichertypen, welche mit Kanälen eines Flash-Schnittstellensteuerblocks verbunden werden können.
  • Bezug nehmend auf 12 ist ein Kanal CH. 1 gemeinschaftlich mit NAND-Flash-Speichern verbunden, wobei in jeder Zelle Ein-Bit-Daten gespeichert sind, ein weiterer Kanal CH. 2 ist gemeinschaftlich mit NAND-Flash-Speichern verbunden, wobei in jeder Zelle N-Bit-Daten gespeichert sind und der andere Kanal CH. n ist gemeinschaftlich mit OneNAND-Flash-Speichern verbunden. Es ist jedoch offensichtlich, dass unterschiedliche Typen von nicht-flüchtigen Speichern mit jedem Kanal verbunden sein können.
  • 13 ist ein Blockdiagramm zur Darstellung einer anderen Struktur eines zweiten Kanals, die durch die Solid-State-Disk-Steuervorrichtung 1000 unterstützt wird.
  • Bezug nehmend auf 13 ist ein Flash-Speicher mit einer Eingabe-/Ausgabe-Bitanordnung ×16 ausgebildet, indem zwei Flash-Speicher (Chip 1 und Chip 2) parallel verknüpft werden, wobei jeder eine Eingabe-/Ausgabe-Bitanordnung ×8 hat. Entsprechend dieser Kanalstruktur ist es möglich, die Anzahl von Flash-Speichern und eine Speicherkapazität zu verdoppeln. Einer von zwei Chips verwendet Eingabe-/Ausgabeleitungen I/O[7:0], und der andere verwendet Eingabe-/Ausgabeleitungen I/O[15:8]. In diesem Fall teilen sich die Chips alle Steuersignale.
  • Wie oben beschrieben, ist eine Datenübertragungsgeschwindigkeit der Solid-State-Disk-Steuervorrichtung 1000 nicht durch eine CPU-Bus-Geschwindigkeit beeinträchtigt, da ein Datenübertragungsvorgang der Solid-State-Disk-Steuervorrichtung nicht über einen CPU-Bus, sondern über einen FIFO-Pfad durchgeführt wird.

Claims (30)

  1. Steuervorrichtung für eine Solid-State-Disk, aufweisend: einen ersten Port (PORT A); einen zweiten Port (PORT B) mit einer Mehrzahl von Kanälen; eine zentrale Prozessoreinheit (1400), die an einen CPU-Bus (1003) angeschlossen ist; einen Pufferspeicher (1700), der zum Speichern von Daten ausgebildet ist, die von dem oder zu dem ersten oder zweiten Port zu übertragen sind; einen Puffer-Steuer-/Arbitrierblock (1600), der an den CPU-Bus angeschlossen und zum Steuern von Lese- und Schreibvorgängen des Pufferspeichers unter Kontrolle der zentralen Prozessoreinheit ausgebildet ist; einen ersten Datenübertragungsblock (1300, 1400), der zwischen den ersten Port und den Puffer-Steuer-/Arbitrierblock eingeschleift und dazu ausgebildet ist, in den Pufferspeicher zu speichernde oder aus dem Pufferspeicher zu lesende Daten parallel zu dem CPU-Bus zu übertragen; und einen zweiten Datenübertragungsblock (R0_FIFO, ..., Rn_FIFO, 1800), der zwischen den zweiten Port und den Puffer-Steuer-/Arbitrierblock eingeschleift und dazu ausgebildet ist, in den Pufferspeicher zu speichernde und aus dem Pufferspeicher zu lesende Daten parallel zu dem CPU-Bus zu übertragen.
  2. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 1, dadurch gekennzeichnet, dass der erste Datenübertragungsblock aufweist: einen Host-Schnittstellensteuerblock, der an den CPU-Bus angeschlossen und dazu ausgebildet ist, eine Schnittstelle mit einem externen Host durch den ersten Port unter Kontrolle der zentralen Prozessoreinheit zu bilden; und ein erstes FIFO-Register, das zum Bereitstellen eines Datenübertragungspfades zwischen dem Host-Schnittstellensteuerblock und dem Puffer-Steuer-/Arbitrierblock ausgebildet ist, insbesondere unter Umgehung des CPU-Busses.
  3. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 2, dadurch gekennzeichnet, dass der erste Port aufweist: einen ersten Kanal, der mit einem externen Host eines Typs mit serieller ATA-Schnittstelle verbunden ist; einen zweiten Kanal, der mit einem externen Host eines Typs mit paralleler ATA-Schnittstelle verbunden ist; einen Umwandlungsblock, der zum Umwandeln von durch den ersten Kanal einzugebenden Daten in ein serielles ATA-Format und zum Umwandeln von durch den ersten Kanal auszugebenden Daten in ein paralleles ATA-Format ausgebildet ist; und einen Multiplexer, der zum Übertragen von Daten von dem ersten Kanal oder von dem Umwandlungsblock zu dem Host-Schnittstellensteuerblock ausgebildet ist, wobei der Multiplexer Daten von dem Host-Schnittstellenblock entweder zu dem zweiten Kanal oder zu dem Umwandlungsblock überträgt.
  4. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 3, dadurch gekennzeichnet, dass der erste Port derart ausgebildet ist, dass Daten von dem ersten Kanal direkt zu dem Host-Schnittstellensteuerblock und Daten von dem Host-Schnittstellensteuerblock direkt zu dem externen Host des Typs mit serieller ATA-Schnittstelle durch den ersten Kanal übertragen werden.
  5. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass der zweite Datenübertragungsblock aufweist: eine Mehrzahl von zweiten FIFO-Registern, die jeweils zugehörigen Kanälen des zweiten Ports zugeordnet sind; und einen Speicher-Schnittstellensteuerblock, der an den CPU-Bus angeschlossen und dazu ausgebildet ist, eine Schnittstelle mit Halbleiterspeichern durch den zweiten Port zu bilden, wobei die Mehrzahl von zweiten FIFO-Registern dazu ausgebildet sind, Datenübertragungspfade zwischen dem Speicher-Schnittstellensteuerblock und dem Puffer-Steuer-/Arbitrierblock zu schaffen, insbesondere unter Umgehung des CPU-Busses.
  6. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 5, gekennzeichnet durch eine Mehrzahl von ECC-Blöcken, die jeweils mit den zweiten FIFO-Registern verbunden sind, wobei die Mehrzahl von ECC-Blöcken dazu ausgebildet ist, Fehler in durch die zweiten FIFO-Register übertragenen Daten zu erkennen und Fehlerkorrekturcodes der zu den Halbleiterspeichern übertragenen Daten zu erzeugen.
  7. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 6, dadurch gekennzeichnet, dass die ECC-Blöcke bei Erkennen eines Fehlers in durch entsprechende FIFO-Register übertragenen Daten dazu ausgebildet sind, fehlerhafte Daten ohne Einflussnahme der zentralen Prozessoreinheit zu korrigieren.
  8. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass jeder der Kanäle des zweiten Ports mit einer Mehrzahl von nicht-flüchtigen Speichern verbunden ist.
  9. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 8, dadurch gekennzeichnet, dass die mit jedem Kanal des zweiten Ports verbundenen nichtflüchtigen Speicher aus einem nicht-flüchtigen Speicher desselben Typs gebildet sind.
  10. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 8 oder 9, dadurch gekennzeichnet, dass dieselben Typen nicht-flüchtigen Speichers mit jedem Kanal des zweiten Ports verbunden sind.
  11. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 8 bis 10, dadurch gekennzeichnet, dass unterschiedliche Typen von nicht-flüchtigem Speicher mit jedem Kanal des zweiten Ports verbunden sind.
  12. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 8 bis 11, dadurch gekennzeichnet, dass der zweite Datenübertragungsblock dazu ausgebildet ist, Typen von nicht-flüchtigen Speichern, die mit den Kanälen des zweiten Ports verbunden sind, beim Einschalten der Energieversorgung zu erkennen und Lese- und Schreibvorgänge der nicht-flüchtigen Speicher jedes Kanals gemäß dem erkannten Ergebnis zu steuern.
  13. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 5 bis 12, dadurch gekennzeichnet, dass der zweite Datenübertragungsblock dazu aus gebildet ist, Lese- und Schreibvorgänge der mit den Kanälen des zweiten Ports verbundenen Halbleiterspeicher basierend entweder auf einem Hardware- oder einem Software-Interleave-Protokoll zu steuern, wenn Lese- und Schreibvorgänge auf den Kanälen des zweiten Ports nachgefragt werden.
  14. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 5 bis 12, dadurch gekennzeichnet, dass der Puffer-Steuer-/Arbitrierblock dazu ausgebildet ist, Daten sequentiell zu verarbeiten, wenn die ersten und zweiten FIFO-Register Datenverarbeitungsvorgänge nachfragen.
  15. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 5 bis 14, dadurch gekennzeichnet, dass der Speicher-Schnittstellensteuerblock aufweist: eine Steuerlogik, die zum Erzeugen eines ersten, durch den zweiten Port an einen Halbleiterspeicher zu übertragenden Taktsignals ausgebildet ist, wobei der Halbleiterspeicher Daten synchron zu dem ersten Taktsignal ausgibt; einen Verzögerungsschaltkreis, der zum Verzögern des ersten Taktsignals und zum Erzeugen eines zweiten Taktsignals ausgebildet ist; und ein Datenabruf-Register, das zum Abrufen der Daten aus dem Halbleiterspeicher synchron zu dem zweiten Taktsignal ausgebildet ist.
  16. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 15, dadurch gekennzeichnet, dass eine Verzögerungszeit des Verzögerungsschaltkreises durch Verzögerungsinformationen von einer externen Quelle bestimmt ist.
  17. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 15 oder 16, dadurch gekennzeichnet, dass der Speicher-Schnittstellensteuerblock weiterhin ein Register zum Speichern von Verzögerungsinformationen aufweist, die zum Bestimmen einer Verzögerungszeit des Verzögerungsschaltkreises verwendet werden.
  18. Steuervorrichtung für eine Solid-State-Disk, aufweisend: einen ersten Port (PORT A); einen zweiten Port (PORT B) mit einer Mehrzahl von Kanälen; eine zentrale Prozessoreinheit (1400), die an einen CPU-Bus (1003) angeschlossen ist; ein Pufferspeicher (1700), der zum Speichern von Daten ausgebildet ist, die von dem zweiten Port zu dem ersten Port und/oder von dem ersten Port zu dem zweiten Port zu übertragen sind; einen Host-Schnittstellensteuerblock (1300), der mit dem ersten Port und dem CPU-Bus verbunden ist und der dazu ausgebildet ist, eine Schnittstelle mit einem externen Host unter Kontrolle der zentralen Prozessoreinheit zu bilden; einen Puffer-Steuer-/Arbitrierblock (1600), der an den CPU-Bus angeschlossen und dazu ausgebildet ist, den Pufferspeicher unter Kontrolle der zentralen Prozessoreinheit zu steuern; ein erstes FIFO-Register (1500), das zum Bilden eines Datenübertragungspfads zwischen dem Host-Schnittstellensteuerblock (1300) und dem Puffer-Steuer-/Arbitrierblock (1600) ausgebildet ist; einen Speicher-Schnittstellensteuerblock (1800), der mit dem zweiten Port (PORT B) und dem CPU-Bus (1003) verbunden und der dazu ausgebildet ist, eine Schnittstelle mit nicht-flüchtigen Speichern unter Kontrolle der zentralen Prozessoreinheit zu bilden; und eine Mehrzahl von zweiten FIFO-Registern (R0_FIFO, ..., Rn_FIFO), die zum Bilden von Datenübertragungspfaden zwischen dem Speicher-Schnittstellensteuerblock und dem Puffer-Steuer-/Arbitrierblock ausgebildet sind.
  19. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 18, gekennzeichnet durch eine Mehrzahl von ECC-Blöcken, die jeweils mit den zweiten FIFO-Registern verbunden sind, wobei die Mehrzahl von ECC-Blöcken dazu ausgebildet ist, Fehler in durch zugehörige zweite FIFO-Register übertragenen Daten zu erkennen und Fehlerkorrekturcodes für zu den nicht-flüchtigen Speichern übertragenen Daten zu erzeugen.
  20. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 19, dadurch gekennzeichnet, dass bei Erkennen eines Fehlers von durch zugehörige zweite FIFO-Register übertragenen Daten die ECC-Blöcke dazu ausgebildet sind, fehlerhafte Daten ohne Einflussnahme der zentralen Prozessoreinheit zu korrigieren.
  21. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 18 bis 20, dadurch gekennzeichnet, dass nicht-flüchtige, mit jedem Kanal des zweiten Ports verbundene Speicher aus nicht-flüchtigen Speichern jeweils gleichen Typs gebildet sind.
  22. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 21, dadurch gekennzeichnet, dass dieselben Typen nicht-flüchtigen Speichers mit jedem Kanal des zweiten Ports verbunden sind.
  23. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 18 bis 22, dadurch gekennzeichnet, dass unterschiedliche Typen von nicht-flüchtigen Speichern mit jedem Kanal des zweiten Ports verbunden sind.
  24. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 18 bis 23, dadurch gekennzeichnet, dass der Speicher-Schnittstellensteuerblock dazu ausgebildet ist, Typen von nicht-flüchtigen Speichern, die mit den Kanälen des zweiten Ports verbunden sind, beim Einschalten der Energieversorgung zu erkennen und Lese- und Schreibvorgänge der nicht-flüchtigen Speicher jedes Kanals gemäß dem erkannten Ergebnis zu steuern.
  25. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 18 bis 24, dadurch gekennzeichnet, dass der Speicher-Schnittstellensteuerblock dazu ausgebildet ist, Lese- und Schreibvorgänge der mit den Kanälen des zweiten Ports verbundenen nicht-flüchtigen Speicher basierend entweder auf einem Hardware- oder einem Software-Interleave-Protokoll zu steuern, wenn Lese- und Schreibvorgänge auf den Kanälen des zweiten Ports nachgefragt werden.
  26. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 18 bis 25, dadurch gekennzeichnet, dass der Puffer-Steuer-/Arbitrierblock dazu aus gebildet ist, Daten sequentiell zu verarbeiten, wenn die ersten und zweiten FIFO-Register Datenverarbeitungsvorgänge nachfragen.
  27. Steuervorrichtung für eine Solid-State-Disk nach einem der Ansprüche 18 bis 26, dadurch gekennzeichnet, dass der Speicher-Schnittstellensteuerblock aufweist: eine Steuerlogik, die zum Erzeugen eines ersten, durch den zweiten Port an einen Halbleiterspeicher zu übertragenden Taktsignals ausgebildet ist, wobei der Halbleiterspeicher Daten synchron zu dem ersten Taktsignal ausgibt; einen Verzögerungsschaltkreis, der zum Verzögern des ersten Taktsignals und zum Erzeugen eines zweiten Taktsignals ausgebildet ist; und ein Datenabruf-Register, das zum Abrufen der Daten aus dem Halbleiterspeicher synchron zu dem zweiten Taktsignal ausgebildet ist.
  28. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 27, dadurch gekennzeichnet, dass eine Verzögerungszeit des Verzögerungsschaltkreises durch Verzögerungsinformationen von einer externen Quelle bestimmt ist.
  29. Steuervorrichtung für eine Solid-State-Disk nach Anspruch 27 oder 28, dadurch gekennzeichnet, dass der Speicher-Schnittstellensteuerblock weiterhin ein Register zum Speichern von Verzögerungsinformationen aufweist, die zum Bestimmen einer Verzögerungszeit des Verzögerungsschaltkreises verwendet werden.
  30. Verfahren zum Betreiben einer Steuervorrichtung für eine Solid-State-Disk mit einem ersten Port (PORT A), einem zweiten Port (PORT B) mit einer Mehrzahl von Kanälen, einer zentralen Prozessoreinheit (1400), die an einen CPU-Bus (1003) angeschlossen ist, einem Pufferspeicher (1700), der zum Speichern von Daten ausgebildet ist, und mit einem Puffer-Steuer-/Arbitrierblock (1600), der an den CPU-Bus (1003) angeschlossen und zum Steuern von Lese- und Schreibvorgängen des Pufferspeichers (1700) unter Kontrolle der zentralen Prozessoreinheit (1400) ausgebildet ist, wobei das Verfahren beinhaltet: Übertragen von in den Pufferspeicher (1700) zu speichernden bzw. aus dem Pufferspeicher (1700) zu lesenden Daten zwischen dem Pufferspeicher (1700) und dem ersten Port (PORT A) unter Umgehung des CPU-Busses (1003); und Übertragen von in den Pufferspeicher (1700) zu speichernden bzw. aus dem Pufferspeicher (1700) zu lesenden Daten zwischen dem Pufferspeicher (1700) und dem zweiten Port (PORT B) unter Umgehung des CPU-Busses (1003).
DE102006002526A 2005-01-11 2006-01-11 Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben Active DE102006002526B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050002611A KR100621631B1 (ko) 2005-01-11 2005-01-11 반도체 디스크 제어 장치
KR10-2005-0002611 2005-01-11

Publications (2)

Publication Number Publication Date
DE102006002526A1 true DE102006002526A1 (de) 2006-08-03
DE102006002526B4 DE102006002526B4 (de) 2011-06-30

Family

ID=36653071

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006002526A Active DE102006002526B4 (de) 2005-01-11 2006-01-11 Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben

Country Status (6)

Country Link
US (5) US20060152981A1 (de)
JP (1) JP5032027B2 (de)
KR (1) KR100621631B1 (de)
CN (1) CN1828511B (de)
DE (1) DE102006002526B4 (de)
TW (1) TWI319191B (de)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US7493430B2 (en) 2005-07-14 2009-02-17 Quantum Corporation Data flow control and bridging architecture enhancing performance of removable data storage systems
US20070299994A1 (en) * 2006-06-21 2007-12-27 Broadcom Corporation, A California Corporation Disk controller, host interface module and methods for use therewith
DE102006045903B4 (de) * 2006-09-28 2016-06-02 Intel Deutschland Gmbh Prozessoranordnung mit einer Kopplungsvorrichtung zum Koppeln eines Speichers mit einem Prozessor, Datenverarbeitungsanordnung und Verfahren zum Übertragen von Daten
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
WO2008070814A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
US8429677B2 (en) * 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US7460398B1 (en) * 2007-06-19 2008-12-02 Micron Technology, Inc. Programming a memory with varying bits per cell
KR101424782B1 (ko) * 2007-07-19 2014-08-04 삼성전자주식회사 솔리드 스테이트 디스크 컨트롤러 및 솔리드 스테이트디스크 컨트롤러의 데이터 처리 방법
US8001444B2 (en) * 2007-08-08 2011-08-16 Intel Corporation ECC functional block placement in a multi-channel mass storage device
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
CN101398745B (zh) * 2007-09-29 2011-12-21 群联电子股份有限公司 并行数据存取架构的固态盘存储系统与固态盘控制器
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US8719485B2 (en) * 2008-06-27 2014-05-06 Marvell World Trade Ltd. Solid-state disk with wireless functionality
JP2010020839A (ja) * 2008-07-10 2010-01-28 Panasonic Corp 半導体記憶装置
KR101391362B1 (ko) * 2008-07-23 2014-05-07 삼성전자주식회사 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
KR101491829B1 (ko) * 2008-08-14 2015-02-12 삼성전자주식회사 읽기 디스터번스를 방지하는 메모리 장치 및 그 방법
US9727473B2 (en) * 2008-09-30 2017-08-08 Intel Corporation Methods to communicate a timestamp to a storage system
KR101529290B1 (ko) 2008-10-02 2015-06-17 삼성전자주식회사 반도체 디스크 장치 및 그것의 데이터 처리 방법
WO2010045445A2 (en) * 2008-10-15 2010-04-22 Marvell World Trade Ltd. Architecture for data storage systems
TWI385672B (zh) * 2008-11-05 2013-02-11 Lite On It Corp 儲存裝置之適應性多通道控制器及其方法
KR101014149B1 (ko) 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
US8341311B1 (en) 2008-11-18 2012-12-25 Entorian Technologies, Inc System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
KR20100058166A (ko) * 2008-11-24 2010-06-03 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US8732350B2 (en) * 2008-12-19 2014-05-20 Nvidia Corporation Method and system for improving direct memory access offload
US9208108B2 (en) * 2008-12-19 2015-12-08 Nvidia Corporation Method and system for improved flash controller commands selection
US8694750B2 (en) * 2008-12-19 2014-04-08 Nvidia Corporation Method and system for data structure management
US8370603B2 (en) * 2008-12-23 2013-02-05 Apple Inc. Architecture for address mapping of managed non-volatile memory
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
KR101006748B1 (ko) * 2009-01-29 2011-01-10 (주)인디링스 패드들의 동시 스위칭을 제어하는 고체 상태 디스크를 위한컨트롤러
JP2010176646A (ja) * 2009-02-02 2010-08-12 Toshiba Information Systems (Japan) Corp メモリシステムおよびメモリシステムのインターリーブ制御方法
KR20100097964A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 불휘발성 메모리 장치의 소거 방법 및 그 독출 방법
TWI404067B (zh) * 2009-02-27 2013-08-01 Macronix Int Co Ltd 記憶體裝置及其操作方法
KR101504338B1 (ko) * 2009-03-04 2015-03-23 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법
KR20100099961A (ko) * 2009-03-04 2010-09-15 삼성전자주식회사 불휘발성 메모리 장치 및 그 동작 방법
US8285917B2 (en) * 2009-03-26 2012-10-09 Scaleo Chip Apparatus for enhancing flash memory access
CN101521041B (zh) * 2009-04-01 2013-02-13 北京泰科源科技有限责任公司 一种基于与非门结构内存的控制电路系统
US8205037B2 (en) 2009-04-08 2012-06-19 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips operating at different voltages
US8433845B2 (en) 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
CN101866679A (zh) * 2009-04-17 2010-10-20 众杰科技股份有限公司 固态硬盘的结构
US8321647B2 (en) 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US8438453B2 (en) * 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
US8341338B2 (en) 2009-05-06 2012-12-25 Samsung Electronics Co., Ltd. Data storage device and related method of operation
US8495332B2 (en) * 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
US8489907B2 (en) 2009-09-16 2013-07-16 Apple Inc. Method of selective power cycling of components in a memory device independently by reducing power to a memory array or memory controller
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
KR101574207B1 (ko) * 2009-10-16 2015-12-14 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
US8386650B2 (en) * 2009-12-16 2013-02-26 Intel Corporation Method to improve a solid state disk performance by using a programmable bus arbiter
US8683293B2 (en) * 2009-12-16 2014-03-25 Nvidia Corporation Method and system for fast two bit error correction
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
US9594675B2 (en) * 2009-12-31 2017-03-14 Nvidia Corporation Virtualization of chip enables
KR101008923B1 (ko) * 2010-01-15 2011-01-17 주식회사 노바칩스 다양한 종류의 반도체 메모리 장치들을 구비하는 반도체 메모리 시스템 및 이의 제어 방법
US9069687B2 (en) * 2010-01-29 2015-06-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory read-channel with selective transmission of error correction data
KR20110131648A (ko) * 2010-05-31 2011-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 메모리 카드 및 그것의 프로그램 방법
KR101734204B1 (ko) * 2010-06-01 2017-05-12 삼성전자주식회사 프로그램 시퀀서를 포함하는 플래시 메모리 장치 및 시스템, 그리고 그것의 프로그램 방법
JP4922442B2 (ja) 2010-07-29 2012-04-25 株式会社東芝 バッファ管理装置、同装置を備えた記憶装置、及びバッファ管理方法
US9465728B2 (en) 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
JP2012128644A (ja) * 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
CN102541459A (zh) * 2010-12-17 2012-07-04 西安奇维测控科技有限公司 一种电子硬盘的页数据管理办法
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
JP5259755B2 (ja) 2011-02-25 2013-08-07 株式会社東芝 マルチチャネルを有するメモリ装置及び同装置におけるメモリアクセス方法
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8918595B2 (en) 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US8839024B2 (en) * 2011-07-22 2014-09-16 Taejin Info Tech Co., Ltd. Semiconductor storage device-based data restoration
JP2013069047A (ja) * 2011-09-21 2013-04-18 Toshiba Corp メモリシステム
CN103106155B (zh) * 2011-11-10 2015-10-21 群联电子股份有限公司 存储器储存装置、存储器控制器与其数据传输方法
JP2013137713A (ja) 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、メモリシステムおよびメモリ書込み方法
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
JP5624578B2 (ja) * 2012-03-23 2014-11-12 株式会社東芝 メモリシステム
US8996782B2 (en) 2012-03-23 2015-03-31 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
JP5925549B2 (ja) * 2012-03-23 2016-05-25 株式会社東芝 メモリシステムおよびバンクインターリーブ方法
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
JP2014029634A (ja) * 2012-07-31 2014-02-13 International Business Maschines Corporation パケットバッファリングシステムおよび方法
US8954817B2 (en) 2012-07-31 2015-02-10 Kabushiki Kaisha Toshiba Storage apparatus and controller
US9471484B2 (en) 2012-09-19 2016-10-18 Novachips Canada Inc. Flash memory controller having dual mode pin-out
KR101951663B1 (ko) * 2012-12-14 2019-02-25 삼성전자주식회사 Crc 부호와 극 부호에 의한 부호화 방법 및 장치
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9706508B2 (en) * 2013-04-05 2017-07-11 Honeywell International Inc. Integrated avionics systems and methods
CN103235770B (zh) * 2013-04-25 2016-05-04 杭州华澜微电子股份有限公司 基于超位宽数字接口界面的固态存储器
JP2015215774A (ja) * 2014-05-12 2015-12-03 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
US10210114B2 (en) * 2014-08-01 2019-02-19 Universiti Teknologi Malaysia Interrupt-driven I/O arbiter for a microcomputer system
CN104123103A (zh) * 2014-08-05 2014-10-29 南车株洲电力机车研究所有限公司 一种大容量存储装置
KR20160076889A (ko) * 2014-12-23 2016-07-01 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
JP5889462B2 (ja) * 2015-03-26 2016-03-22 株式会社日立製作所 半導体装置、不揮発性メモリ装置の制御方法
US9772777B2 (en) * 2015-04-27 2017-09-26 Southwest Research Institute Systems and methods for improved access to flash memory devices
TWI758957B (zh) 2015-05-28 2022-03-21 日商鎧俠股份有限公司 半導體裝置
KR102417182B1 (ko) * 2015-06-22 2022-07-05 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US20160378352A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Efficient solid state drive data compression scheme and layout
JP6627346B2 (ja) * 2015-09-09 2020-01-08 ソニー株式会社 メモリコントローラ、記憶装置、情報処理システムおよびメモリ制御方法
FR3041806B1 (fr) * 2015-09-25 2017-10-20 Stmicroelectronics Rousset Dispositif de memoire non volatile, par exemple du type eeprom, ayant une capacite memoire importante, par exemple 16mbits
KR102392844B1 (ko) * 2017-03-10 2022-05-03 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 저장 장치
US10642535B2 (en) * 2018-01-23 2020-05-05 International Business Machines Corporation Register access in a distributed memory buffer system
TWI671637B (zh) * 2018-04-25 2019-09-11 點序科技股份有限公司 記憶體管理裝置及其操作方法
US10534551B1 (en) * 2018-06-22 2020-01-14 Micron Technology, Inc. Managing write operations during a power loss
CN110633054A (zh) * 2019-09-18 2019-12-31 深圳市硅格半导体有限公司 一种提高sata逻辑写性能的预启动方法及其系统
JP7413108B2 (ja) 2020-03-23 2024-01-15 キオクシア株式会社 半導体装置
JP7456010B2 (ja) * 2020-12-28 2024-03-26 キオクシア株式会社 メモリシステム
JP2023091307A (ja) * 2021-12-20 2023-06-30 キオクシア株式会社 半導体装置および制御方法

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0273411A (ja) * 1988-09-09 1990-03-13 Canon Inc ステージ位置決め装置
EP0466550B1 (de) * 1990-06-29 1998-11-18 Digital Equipment Corporation Umwandlung der Befehle von internen Prozessorregistern in I/O-Adressraum
US5822781A (en) * 1992-10-30 1998-10-13 Intel Corporation Sector-based storage device emulator having variable-sized sector
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5696897A (en) * 1994-01-31 1997-12-09 Sun Microsystems, Inc. Method and apparatus for a multi-layer system quiescent suspend and resume operation
JP3726284B2 (ja) * 1994-03-28 2005-12-14 ソニー株式会社 データ記録装置及び方法
JP3864422B2 (ja) * 1994-09-16 2006-12-27 ソニー株式会社 データ送出装置およびデータ送出方法
JPH08234716A (ja) * 1995-02-28 1996-09-13 Toshiba Corp ウインドウ画面表示方式
US5838935A (en) * 1995-06-15 1998-11-17 Intel Corporation Method and apparatus providing programmable decode modes for secondary PCI bus interfaces
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5875477A (en) * 1995-12-22 1999-02-23 Intel Corporation Method and apparatus for error management in a solid state disk drive using primary and secondary logical sector numbers
JP3093678B2 (ja) * 1996-06-28 2000-10-03 株式会社東芝 暗号化方法、復号方法、記録再生装置、復号装置、復号化ユニット装置及び記録媒体の製造方法
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
KR100217181B1 (ko) * 1997-01-21 1999-09-01 윤종용 데이타 고속 전송을 위한 시스템 디코더 및 트랙버퍼링 제어방법
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
JP3821536B2 (ja) * 1997-05-16 2006-09-13 沖電気工業株式会社 不揮発性半導体ディスク装置
JPH11327798A (ja) * 1998-05-20 1999-11-30 Matsushita Electric Ind Co Ltd データ転送制御装置
JP3734620B2 (ja) * 1998-06-24 2006-01-11 沖電気工業株式会社 半導体ディスク装置
US6141249A (en) * 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6401149B1 (en) * 1999-05-05 2002-06-04 Qlogic Corporation Methods for context switching within a disk controller
CA2370596C (en) * 1999-05-05 2010-01-12 Qlogic Corporation Systems and methods for a disk controller memory architecture
US6851069B1 (en) * 2000-01-13 2005-02-01 Intel Corporation Method, apparatus, and system for high speed data transfer using programmable DLL without using strobes for reads and writes
US6441290B2 (en) * 2000-02-01 2002-08-27 Yamaha Corporation Apparatus and method for reproducing or recording, via buffer memory, sample data supplied from storage device
JP3714087B2 (ja) * 2000-02-02 2005-11-09 ヤマハ株式会社 サンプルデータ再生装置およびサンプルデータ記録再生装置
KR100320563B1 (ko) * 2000-04-03 2002-01-15 정문술 메모리 및 입출력 포트 인터페이스 제어 장치
JP2002073411A (ja) 2000-08-24 2002-03-12 Seiko Epson Corp Eepromの記憶容量判別装置およびeepromの記憶容量判別方法
US6691203B1 (en) * 2000-08-30 2004-02-10 Mosel Vitelic Corporation Integrated controller to process both optical reads and optical writes of multiple optical media
US6874039B2 (en) * 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US7020739B2 (en) * 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
JP2002288112A (ja) * 2001-03-27 2002-10-04 Hitachi Ltd 通信制御用半導体装置およびインタフェースシステム
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123412D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
GB0123422D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
KR20030035326A (ko) * 2001-10-31 2003-05-09 엘지전자 주식회사 중앙처리장치와 주변 장치간의 버스 인터페이스 회로
US7159048B2 (en) * 2001-12-10 2007-01-02 Emulex Design & Manufacturing Corporation Direct memory access (DMA) transfer buffer processor
JP4314559B2 (ja) * 2003-04-16 2009-08-19 セイコーエプソン株式会社 プリンタ及びプリンタの制御方法
TW555100U (en) * 2002-11-27 2003-09-21 Power Quotient Int Co Ltd High speed of data transfer of solid state disk on module
IES20030722A2 (en) * 2003-10-01 2005-04-06 Yqa Now Ltd A data storage device
US7814554B1 (en) * 2003-11-06 2010-10-12 Gary Dean Ragner Dynamic associative storage security for long-term memory storage devices
JP2005166147A (ja) * 2003-12-01 2005-06-23 Yamaha Corp 光ディスクドライブ、光ディスク装置およびおよび光ディスクデバイスドライバプログラム
US7322002B2 (en) * 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US7493430B2 (en) * 2005-07-14 2009-02-17 Quantum Corporation Data flow control and bridging architecture enhancing performance of removable data storage systems
KR101020040B1 (ko) * 2010-05-17 2011-03-09 황명구 주변의 관련인물 검색 시스템 및 주변 관련의 관련인물 검색 서비스 방법
JP6816307B1 (ja) * 2019-06-17 2021-01-20 東芝三菱電機産業システム株式会社 電源装置および交流電源の異常検出方法

Also Published As

Publication number Publication date
CN1828511A (zh) 2006-09-06
US20060152981A1 (en) 2006-07-13
US8917565B2 (en) 2014-12-23
JP2006195990A (ja) 2006-07-27
CN1828511B (zh) 2010-10-06
US9652324B2 (en) 2017-05-16
US8159889B2 (en) 2012-04-17
TWI319191B (en) 2010-01-01
DE102006002526B4 (de) 2011-06-30
US20120173806A1 (en) 2012-07-05
US20090265513A1 (en) 2009-10-22
TW200641903A (en) 2006-12-01
KR20060081928A (ko) 2006-07-14
KR100621631B1 (ko) 2006-09-13
US20150067450A1 (en) 2015-03-05
US9223650B2 (en) 2015-12-29
JP5032027B2 (ja) 2012-09-26
US20160132389A1 (en) 2016-05-12

Similar Documents

Publication Publication Date Title
DE102006002526B4 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE102011086098B4 (de) Parallele Speicherlese- und Speicherschreib-Operationen in einem Speicher mit serieller Schnittstelle
DE60129710T2 (de) Anordnung und struktur für zuverlässige dateikopieoperation für nicht-flüchtige speicher
DE112011103916B4 (de) Speicherzugriffseinheit für gemeinsame Speichernutzung zwischen mehreren Prozessoren
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE102006029287A1 (de) DRAM-Chipbaustein kommunizierend mit Flash-Speicherchip und einen solchen Baustein umfassender Mehrchip-Verbund
DE102006050233A1 (de) Speichermodul, Speichersteuereinheit, Speichersystem und Verfahren zum Steuern eines Speichersystems
DE112005002336T5 (de) Befehl, der unterschiedliche Operationen in unterschiedlichen Chips steuert
DE112005002390T5 (de) Burst-Betrieb für die Speichertransaktion und Speicherkomponenten, welche die zeitweilig multiplexierte Fehlerkorrekturcodierung unterstützen
WO2006058892A2 (de) Speichersystem mit sektorbuffern
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE69930307T2 (de) Datenspeichersystem
DE102008008196A1 (de) Speicherkarte, Speichersystem und Verfahren zum Betreiben eines Speichersystems
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102007060058A1 (de) Verfahren und Vorrichtung zum Steuern eines gemeinschaftlich verwendeten Busses
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE10048402A1 (de) Datenspeichersystem
DE112008002273T5 (de) Optimale Lösung zur Steuerung von Datenkanälen
DE102021118940A1 (de) Speichersteuerung und speichereinrichtung mit derselben
DE102021114458A1 (de) Befehlsentleerung unter verwendung des host-speicherpuffers
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102008024262A1 (de) Anschlussmultiplexbildung
DE102015203202B4 (de) Speicher-Subsystem mit auf ein Wrapped-Lesen folgendem kontinuierlichen Lesen
DE102011017634B4 (de) Signalleitung zum Anzeigen eines Schreibfehlers in einem Speicher
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem

Legal Events

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

Ipc: G11C 7/00 AFI20060421BHDE

R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20111001