ES2507072T3 - Aparato, sistema, y método para un almacenamiento de estado sólido como memoria caché para un almacenamiento no volátil de alta capacidad - Google Patents

Aparato, sistema, y método para un almacenamiento de estado sólido como memoria caché para un almacenamiento no volátil de alta capacidad Download PDF

Info

Publication number
ES2507072T3
ES2507072T3 ES07867661.6T ES07867661T ES2507072T3 ES 2507072 T3 ES2507072 T3 ES 2507072T3 ES 07867661 T ES07867661 T ES 07867661T ES 2507072 T3 ES2507072 T3 ES 2507072T3
Authority
ES
Spain
Prior art keywords
storage
data
solid state
module
controller
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.)
Active
Application number
ES07867661.6T
Other languages
English (en)
Inventor
David Flynn
John Strasser
Jonathan Thatcher
Michael Zappe
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.)
Fusion IO LLC
Original Assignee
Fusion IO LLC
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=39223046&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2507072(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Fusion IO LLC filed Critical Fusion IO LLC
Application granted granted Critical
Publication of ES2507072T3 publication Critical patent/ES2507072T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/18Packaging or power distribution
    • G06F1/183Internal mounting support structures, e.g. for printed circuit boards, internal connecting means
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0608Saving storage space on 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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/0643Management of files
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0656Data buffering arrangements
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K7/00Constructional details common to different types of electric apparatus
    • H05K7/14Mounting supporting structure in casing or on frame or rack
    • H05K7/1438Back panels or connecting means therefor; Terminals; Coding means to avoid wrong insertion
    • H05K7/1439Back panel mother boards
    • H05K7/1444Complex or three-dimensional-arrangements; Stepped or dual mother boards
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K7/00Constructional details common to different types of electric apparatus
    • H05K7/14Mounting supporting structure in casing or on frame or rack
    • H05K7/1485Servers; Data center rooms, e.g. 19-inch computer racks
    • H05K7/1487Blade assemblies, e.g. blade cases or inner arrangements within a blade
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/002Bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/103Hybrid, i.e. RAID systems with parity comprising a mix of RAID types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Turbine Rotor Nozzle Sealing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Transfer Systems (AREA)
  • Cooling Or The Like Of Electrical Apparatus (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Bus Control (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Storage Device Security (AREA)

Abstract

Un aparato para gestionar el almacenamiento de datos sobre uno o más dispositivos de almacenamiento no volátiles de alta capacidad "HCNV" (150, 3404), comprendiendo el aparato: un controlador de almacenamiento (152) que comprende un controlador de almacenamiento de estado sólido (104) y un controlador de almacenamiento HCNV (3402); un módulo del extremo frontal de la memoria caché (3502) que gestiona las transferencias de datos asociadas con una petición de almacenamiento, funcionando las transferencias de datos entre un dispositivo solicitante y un almacenamiento de estado sólido como memoria caché para uno o más dispositivos de almacenamiento HCNV, comprendiendo las transferencias de datos uno o más de datos, metadatos e índices de metadatos, comprendiendo el almacenamiento de estado sólido una red de elementos de almacenamientos de datos de estado sólido no volátiles; un módulo del extremo posterior de la memoria caché (3504) que gestiona las transferencias de datos entre el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV; y un módulo de almacenamiento secuencial (802) que almacena secuencialmente segmentos de datos de las transferencias de datos en divisiones de almacenamiento del almacenamiento de estado sólido por orden de procesamiento en el orden en el que los segmentos de datos llegan desde el dispositivo solicitante.

Description

imagen1
DESCRIPCIÓN
Aparato, sistema, y método para un almacenamiento de estado sólido como memoria caché para un almacenamiento no volátil de alta capacidad 5 Antecedentes de la invención
Campo de la invención
10 La presente invención se refiere a gestión de datos y más particularmente se refiere al uso de un almacenamiento de estado sólido como memoria caché para dispositivos de almacenamiento no volátiles de alta capacidad
Descripción de las técnicas relacionadas
15 En general, la memoria caché es ventajosa porque los datos que se acceden a menudo o que se cargan como parte de una aplicación o sistema operativo se pueden almacenar en memoria caché con un acceso posterior mucho más rápido que cuando los datos se tiene que acceder a través de un dispositivo de almacenamiento no volátil de alta capacidad ("HCNV"), tal como una unidad de disco duro ("HDD"), una unidad óptica, un almacenamiento de cinta, etc. La memoria caché está usualmente incluida en un ordenador. Los documentos WO 02/01365, US
20 2005/0177687 y "Windows PC Accelerators" de Microsoft muestran el uso de la memoria no volátil como caché.
Sumario de la invención
Algunos dispositivos de almacenamiento y sistemas incluyen memoria caché en los dispositivos de almacenamiento
25 de HCHV. Algunos dispositivos de almacenamiento HCNV contienen memoria caché de estado de estado sólido no volátil, esta proporciona el beneficio de reducción de los tiempos de acceso pero solo puede proporcionar un funcionamiento consistente con la capacidad usualmente limitada de la interfaz del dispositivo de almacenamiento HCNV. Existen algunos dispositivos de almacenamiento de memoria caché de estado sólido no volátiles que están usualmente situados en la placa base; estos dispositivos no se pueden usar en entornos multi-usuario ya que no se
30 proporciona la coherencia de la memoria caché. Algunos controladores de dispositivos HCNV también incluyen memoria caché. Cuando los controladores de la memoria caché de HCNV redundante se comparten entre múltiples clientes, se requieren algoritmos sofisticados de coherencia de la memoria caché para asegurar que no se corrompen los datos.
35 Usualmente, las memorias caché se implementan en DRAM, que tienen como objetivo la capacidad de la memoria caché y que requieren una potencia de funcionamiento relativamente alta. Si se pierde la potencia que soporta la memoria caché volátil, se pierden los datos almacenados en la memoria caché. Usualmente, se usa alguna batería de respaldo para evitar la pérdida de datos en el caso de fallo de potencia, con suficiente capacidad para traspasar la memoria caché a la memoria no volátil antes de que falle la batería de respaldo. Además, los sistemas de batería
40 de respaldo consumen potencia, requieren redundancia, impactan negativamente en la fiabilidad y consumen espacio. Las baterías también se tienen que mantener en una base regular y la baterías de respaldo pueden ser relativamente cara.
A partir de la discusión anterior, debería ser evidente que existe una necesidad de un aparato, sistema y método que
45 gestionen los datos usando un almacenamiento de estado sólido como memoria caché. Ventajosamente, tal aparato, sistema, y método proporcionarían una memoria caché no volátil que consume poca potencia, proporciona una capacidad significativamente mayor y no requiere una batería de respaldo para mantener los datos almacenados en la memoria caché.
50 La presente invención se ha desarrollado en respuesta al presente estado de la técnica, y en particular en respuesta a los problemas y necesidades en la técnica que no se han resuelto aun completamente por los sistemas disponibles actualmente para la gestión del almacenamiento de datos. Por consiguiente, la presente invención se ha desarrollado para proporcionar un aparato, sistema, y método para gestionar el almacenamiento de datos sobre uno
o más dispositivos de almacenamiento no volátil de alta capacidad ("HCNV") que superen muchos o todos los 55 inconvenientes tratados anteriormente en la técnica.
El aparato se proporciona, en una realización con una pluralidad de módulos incluyendo un módulo del extremo frontal de la memoria caché y un módulo del extremo posterior de la memoria caché. El módulo del extremo frontal de la memoria caché gestiona las transferencias de datos asociadas con una petición de almacenamiento. Las 60 transferencias de datos son entre un dispositivo solicitante y una función de almacenamiento de estado sólido como memoria caché para uno o más dispositivos de almacenamiento HCNV, y las transferencias de datos pueden incluir uno o más de datos, metadatos, e índices de metadatos. El almacenamiento de estado sólido puede incluir una red de elementos de almacenamiento de datos de estado sólido, no volátil. El módulo del extremo posterior de la memoria caché gestiona las transferencias de datos entre el almacenamiento de estado sólido y el uno o más
65 dispositivos de almacenamiento HCNV.
imagen2
En una realización del aparato el módulo del extremo frontal de la memoria caché y el módulo del extremo posterior de la memoria caché están localizadas conjuntamente con un controlador de almacenamiento de estado sólido que gestiona el almacenamiento de estado sólido. En una realización adicional, el módulo del extremo frontal de la memoria caché, el módulo del extremo posterior de la memoria caché y el controlador del almacenamiento de
5 estado sólido pueden operar de forma autónoma desde el dispositivo solicitante.
En una realización, el aparato incluye un módulo de RAID de HCNV que almacena datos almacenados en memoria caché en el almacenamiento de estado sólido en dos o más dispositivos de almacenamiento HCNV en una red redundante de unidades independientes ("RAID") consistente con un nivel de RAID. Los datos pueden aparecer a un dispositivo solicitante como un conjunto. En otra realización, el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV pueden incluir un dispositivo de almacenamiento híbrido dentro de un conjunto de dispositivos de almacenamiento híbrido que está configurado como un grupo de RAID. Un segmento de datos almacenados en memoria caché en el almacenamiento de estado sólido y más tarde almacenados sobre un dispositivo de HCNV puede incluir uno de N segmentos de datos de una banda o un segmento de datos de paridad
15 de la banda. El dispositivo de almacenamiento híbrido usualmente recibe peticiones de almacenamiento de uno o más clientes independientes de los segmentos de datos de una banda de RAID. En una realización adicional, el dispositivo de almacenamiento híbrido puede ser un dispositivo de almacenamiento de un grupo de RAID distribuido de extremo frontal, compartido que recibe dos o más peticiones de almacenamiento simultáneas desde dos o más clientes.
En una realización adicional del aparato, el dispositivo de almacenamiento HCNV puede ser una unidad de disco duro ("HDD"), una unidad óptica, un almacenamiento de cinta. En otra realización, el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV pueden ser un dispositivo de almacenamiento híbrido. En una realización, el aparato también puede incluir un módulo de emulación del dispositivo normalizado que 25 proporciona acceso al dispositivo de almacenamiento híbrido emulando un dispositivo normalizado conectado a uno
o más dispositivos solicitantes antes de cargar el uno o más dispositivos solicitantes con código específico para la operación del dispositivo de almacenamiento híbrido. El dispositivo normalizado usualmente se puede soportar por la normativa BIOS de la industria.
En otra realización, el dispositivo de almacenamiento de estado sólido se puede dividir en dos o más regiones, en el que una o más particiones se pueden usar como un almacenamiento de estado sólido independiente del almacenamiento de estado sólido que funciona como memoria caché para los dispositivos de almacenamiento HCNV. En otra realización más, uno o más clientes envían los mensajes de control de memoria caché al módulo del extremo frontal de la memoria caché y al módulo del extremo posterior de la memoria caché para gestionar el estado
35 de uno o más ficheros u objetos almacenados dentro del dispositivo de almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV.
En una realización del aparato, los mensajes de control de la memoria caché pueden incluir uno o más mensajes de control. Diversas realizaciones de los mensajes de control pueden incluir un mensaje de control que causa que el módulo del extremo posterior de la memoria caché ancle una porción de un objeto o fichero en el almacenamiento de estado sólido o un mensaje de control que causa que el módulo del extremo posterior de la memoria caché desancle una porción de un objeto o fichero en el almacenamiento de estado sólido. Otras realizaciones de los mensajes de control pueden incluir un mensaje de control que causa que el módulo del extremo posterior de la memoria caché traspase una porción de un objeto o fichero desde el almacenamiento de estado sólido al uno o más 45 dispositivos de almacenamiento HCNV o un mensaje de control causa que el módulo del extremo posterior de la memoria caché precargue una porción de un objeto o fichero al almacenamiento de estado sólido desde el uno o más dispositivos de almacenamiento HCNV. Otra realización más de un mensaje de control puede ser un mensaje de control que causa que el módulo del extremo posterior de la memoria caché descargue una o más porciones de uno o más objetos o ficheros desde el almacenamiento de estado sólido al uno o más dispositivos de almacenamiento HCNV para liberar una cantidad determinada de espacio de almacenamiento en el almacenamiento de estado sólido. En una realización, los mensajes de control de la memoria caché se comunican mediante metadatos ("metadatos de control de la memoria caché") para el objeto o fichero. En una realización adicional, los metadatos de control de la memoria caché pueden ser persistentes. En otra realización, los metadatos de control de la memoria caché se pueden establecer a través de atributos establecidos en el momento de creación del fichero u
55 objeto. En un otra realización más, los metadatos de control de la memoria caché se pueden obtener a partir de un sistema de gestión del fichero u objeto.
En una realización del aparato, el aparato puede incluir un elemento de almacenamiento de la memoria caché volátil en el que el módulo del extremo frontal de la memoria caché y el módulo del extremo posterior de la memoria caché almacenan datos en el elemento de almacenamiento de la memoria caché volátil y gestionan los datos almacenados en el almacenamiento de estado sólido y el elemento de almacenamiento de la memoria caché volátil. El módulo del extremo posterior puede gestionar además transferencias de datos entre el elemento de almacenamiento de la memoria caché volátil, el almacenamiento de estado sólido y los dispositivos de almacenamiento HCNV. En una realización adicional, los metadatos y/o los metadatos de índices para los objetos y ficheros almacenados en los
65 dispositivos de almacenamiento HCNV se pueden mantener dentro del dispositivo de almacenamiento de estado sólido y el elemento de almacenamiento de la memoria caché volátil.
imagen3
En una realización adicional del aparato, los metadatos y/o los metadatos de índices para objetos y ficheros almacenados en los dispositivos de almacenamiento HCNV se pueden mantener dentro del dispositivo de almacenamiento de estado sólido. En otra realización, el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV pueden incluir un dispositivo de almacenamiento de modo que los
5 dispositivos de almacenamiento HCNV están ocultos de la vista del cliente conectado al dispositivo de almacenamiento.
También se presenta un sistema de la presente invención. El sistema sustancialmente incluye los módulos y realizaciones descritos anteriormente con respecto al aparato. En una realización, el sistema incluye un 10 almacenamiento de estado sólido que incluye una red de elementos de almacenamiento de datos de estado sólido no volátil. El sistema también incluye uno o más dispositivos de almacenamiento HCNV y un controlador de almacenamiento. El controlador de almacenamiento, en una realización, puede incluir un controlador de almacenamiento de estado sólido y un controlador del dispositivo de almacenamiento HCNV. El controlador de almacenamiento puede incluir también un módulo del extremo frontal de la memoria caché y un módulo del extremo 15 posterior de la memoria caché. El módulo del extremo frontal de la memoria caché gestiona las transferencias de datos asociadas con una petición de almacenamiento. Las transferencias de datos son usualmente entre un dispositivo solicitante y el almacenamiento de estado sólido que funciona como una memoria caché para el uno o más dispositivos de almacenamiento HCNV. Las transferencias de datos pueden incluir uno o más de datos, metadatos, e índices de metadatos. El módulo del extremo posterior de la memoria caché gestiona las
20 transferencias de datos entre el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV.
En una realización, el sistema incluye una interfaz de red conectada al controlador de almacenamiento, en el que la interfaz de red facilita transferencias de datos entre el dispositivo solicitante y el controlador del almacenamiento de
25 estado sólido a través de una red de ordenadores. En otra realización, el sistema incluye un servidor que incluye el almacenamiento de estado sólido, el uno o más dispositivos de almacenamiento HCNV, y el controlador de almacenamiento. En otra realización más, el uno o más dispositivos de almacenamiento HCNV se conectan al controlador de almacenamiento a través de una red del área de almacenamiento ("SAN").
30 Un método de la presente invención también se presenta para compartir un dispositivo entre múltiples ordenadores. El método en las realizaciones desveladas sustancialmente incluye las etapas necesarias para realizar las funciones presentadas anteriormente con respecto a la operación del aparato y el sistema descritos. En una realización, el método incluye gestionar las transferencias de datos asociadas con una petición de almacenamiento, en el que las transferencias de datos son entre un dispositivo solicitante y el almacenamiento de estado sólido que funciona como
35 una memoria caché para uno o más dispositivos de almacenamiento HCNV. Las transferencias de datos pueden incluir uno o más de datos, metadatos e índices de metadatos. El almacenamiento de estado sólido puede incluir una red de elementos de almacenamiento de datos de estado sólido. El método también puede incluir gestionar transferencias de datos entre el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV.
40 Un aspecto de la invención proporciona un aparato para gestionar el almacenamiento de datos sobre uno o más dispositivos de almacenamiento no volátil, de alta capacidad ("HCNV") comprendiendo el aparato: un módulo del extremo frontal de la memoria caché que gestiona las transferencias de datos asociadas con una petición de almacenamiento, las transferencias de datos entre un dispositivo solicitante y un almacenamiento de estado sólido
45 que funciona como una memoria caché para uno o más dispositivos de almacenamiento HCNV, comprendiendo las transferencias de datos uno o más de datos, metadatos e índices de metadatos, comprendiendo el almacenamiento de estado sólido una red de elementos de almacenamiento de datos de estado sólido, no volátil; y un módulo del extremo posterior de la memoria caché que gestiona las transferencias de datos entre el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV.
50 El módulo del extremo frontal de la memoria caché y el módulo del extremo posterior de la memoria caché pueden estar localizados conjuntamente con un controlador de almacenamiento de estado sólido que gestiona el almacenamiento de estado sólido.
55 El módulo del extremo frontal de la memoria caché, el módulo del extremo posterior de la memoria caché y el controlador del almacenamiento de estado sólido pueden operar de forma autónoma del dispositivo solicitante.
El controlador de estado sólido puede comprender además un módulo controlador del almacenamiento de objetos que sirve las peticiones de objetos desde uno o más dispositivos solicitantes y gestiona los objetos de las peticiones
60 de objetos dentro del almacenamiento de estado sólido.
El aparato puede comprender además un módulo RAID de HCNV que almacena datos en memoria caché en el almacenamiento de estado sólido en dos o más dispositivos de almacenamiento HCNV en una red redundante de unidades independientes ("RAID") consistente con un nivel de RAID, en el que los datos aparecen para un
65 dispositivo solicitante como un todo.
imagen4
El almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV pueden comprender un dispositivo de almacenamiento híbrido dentro de un conjunto de dispositivos de almacenamiento híbrido que está configurado como un grupo de RAID, en el que un segmento de datos en memoria caché en el almacenamiento de estado sólido y almacenado más tarde sobre un dispositivo de HCNV comprende uno de N segmentos de datos de
5 una banda o un segmento de datos de paridad de la banda, en el que el dispositivo de almacenamiento híbrido recibe peticiones de almacenamiento desde uno o más clientes independientes de segmentos de datos de una banda de RAID.
El dispositivo de almacenamiento híbrido puede ser un dispositivo de almacenamiento de un grupo de RAID 10 distribuido de extremos de entrada compartidos que recibe dos o más peticiones de almacenamiento simultáneas desde uno o más clientes.
El dispositivo de almacenamiento HCNV puede ser uno de una unidad de disco duro ("HDD"), una unidad óptica, y un almacenamiento de cinta.
15 El almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV pueden comprender un dispositivo de almacenamiento híbrido y pueden comprender además un módulo de emulación de dispositivo normalizado que proporciona acceso al dispositivo de almacenamiento híbrido emulando un dispositivo normalizado conectado al uno o más dispositivos solicitantes antes de cargar el uno o más dispositivos solicitantes con código
20 específico para la operación del dispositivo de almacenamiento híbrido, soportándose el dispositivo normalizado por la normativa BIOS de la industria.
El dispositivo de almacenamiento de estado sólido se puede dividir en dos o más regiones, y se pueden usar una o más particiones como almacenamiento de estado sólido independiente del almacenamiento de estado sólido que 25 funciona como una memoria caché para los dispositivos de almacenamiento HCNV.
Uno o más clientes pueden enviar mensajes de control de la memoria caché al módulo del extremo frontal de la memoria caché y el módulo del extremo posterior de la memoria caché para gestionar el estado de uno o más ficheros u objetos almacenados dentro del dispositivo de almacenamiento de estado sólido y el uno o más
30 dispositivos de almacenamiento HCNV.
El mensaje de control de la memoria caché puede comprender uno o más de: un mensaje de control que causa que el módulo del extremo posterior de la memoria caché ancle una porción de un objeto o fichero en el almacenamiento de estado sólido; un mensaje de control que causa que el módulo del extremo posterior de la memoria caché 35 desancle una porción de un objeto o fichero en el almacenamiento de estado sólido; un mensaje de control que causa que el módulo del extremo posterior de la memoria caché traspase una porción de un objeto o fichero desde el almacenamiento de estado sólido al uno o más dispositivos de almacenamiento HCNV; un mensaje de control que causa que el módulo del extremo posterior de la memoria caché precargue una porción de un objeto o fichero al almacenamiento de estado sólido desde el uno o más dispositivos de almacenamiento HCNV; un mensaje de control
40 que causa que el módulo del extremo posterior de la memoria caché descargue una o más porciones de uno o más objetos o ficheros desde el almacenamiento de estado sólido al uno o más dispositivos de almacenamiento HCNV para liberar una cantidad determinada de espacio de almacenamiento en el almacenamiento de estado sólido.
Los mensajes de control de la memoria caché se pueden comunicar mediante metadatos ("metadatos de control de 45 la memoria caché") para el objeto o fichero.
Los metadatos del control de la memoria caché pueden ser persistentes.
Los metadatos del control de la memoria caché se pueden establecer mediante de atributos fijados en el momento 50 de creación del fichero u objeto.
Los metadatos del control de la memoria caché se pueden obtener a partir de un sistema de gestión de ficheros u objetos.
55 El aparato puede comprender además un elemento de almacenamiento de la memoria caché volátil y el módulo del extremo frontal de la memoria caché y el módulo del extremo posterior de la memoria caché pueden comprender además almacenar datos en el elemento de almacenamiento de la memoria caché volátil y gestionar los datos almacenados en el almacenamiento de estado sólido y el elemento de almacenamiento de la memoria caché volátil, y el módulo del extremo posterior puede gestionar además transferencias de datos entre el elemento de
60 almacenamiento de la memoria caché volátil, el almacenamiento de estado sólido y los dispositivos de almacenamiento HCNV.
Uno o más de los metadatos, los metadatos de índices para objetos y ficheros almacenados en los dispositivos de almacenamiento HCNV se pueden mantener dentro del dispositivo de almacenamiento de estado sólido y el 65 elemento de almacenamiento de la memoria caché volátil.
imagen5
Uno o más de los metadatos y los metadatos de índices para objetos y ficheros almacenados en los dispositivos de almacenamiento HCNV se pueden mantener dentro del dispositivo de almacenamiento de estado sólido.
El almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV pueden comprender un 5 dispositivo de almacenamiento de modo que los dispositivos de almacenamiento HCNV están ocultos de la vista del cliente conectado al dispositivo de almacenamiento.
Un aspecto de la invención proporciona un sistema para la gestión del almacenamiento de datos sobre uno o más dispositivos de almacenamiento no volátil de alta capacidad ("HCNV"), comprendiendo el sistema: un 10 almacenamiento de estado sólido que comprende una red de elementos de almacenamiento de datos de estado sólido no volátil; uno o más dispositivos de almacenamiento HCNV; y un controlador de almacenamiento que comprende un controlador del almacenamiento de estado sólido; un controlador del dispositivo de almacenamiento HCNV; un módulo del extremo frontal de la memoria caché que gestiona transferencias de datos asociadas con una petición de almacenamiento, siendo las transferencias de datos entre un dispositivo solicitante y el almacenamiento
15 de estado sólido que funciona como memoria caché para el uno o más dispositivos de almacenamiento HCNV, comprendiendo las transferencias de datos uno o más de datos, metadatos e índices de metadatos; y un módulo del extremo posterior de la memoria caché que gestiona las transferencias de datos entre el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV.
20 El sistema puede comprender además una interfaz de red conectada al controlador de almacenamiento, facilitando la interfaz de red las transferencias de datos entre el dispositivo solicitante y el controlador de almacenamiento de estado sólido a través de una red de ordenadores.
El sistema puede comprender además un servidor, en el que el servidor incluye el almacenamiento de estado sólido, 25 el uno o más dispositivos de almacenamiento HCNV, y el controlador de almacenamiento.
El uno o más dispositivos de almacenamiento HCNV se pueden conectar a un controlador de almacenamiento a través de una red del área de almacenamiento ("SAN").
30 Otro aspecto de la invención proporciona un producto de programa de ordenador que comprende un medio legible por ordenador que tiene un código ejecutable de programa utilizable por el ordenador que se puede ejecutar para realizar las operaciones para la gestión del almacenamiento de datos sobre uno o más dispositivos de almacenamiento no volátil de alta capacidad ("HCNV"), comprendiendo las operaciones del producto de programa de ordenador: gestionar las transferencias de datos asociadas con una petición de almacenamiento, las
35 transferencias de datos entre un dispositivo solicitante y un almacenamiento de estado sólido que funciona como una memoria caché para uno o más dispositivos de almacenamiento HCNV, comprendiendo las transferencias de datos uno o más de datos, metadatos e índices de metadatos, comprendiendo el almacenamiento de estado sólido una red de elementos de almacenamiento de datos de estado sólido no volátil; y gestionar las transferencias de datos entre el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV.
40 La referencia a lo largo de esta memoria descriptiva a características, ventajas o lenguaje similar no implica que todas las características ventajas que se pueden realizar con la presente invención debieran estar o que estén en cualquier realización única de la invención. Más bien, el lenguaje referente a las características y ventajas se entiende que significa que la propiedad, ventaja o característica específica descrita en conexión con una realización
45 está incluida en al menos una realización de la presente invención. De este modo, la discusión de las características y ventajas, y lenguaje similar, a lo largo de la presente memoria descriptiva se puede referir, pero no necesariamente, a la misma realización.
Además, las propiedades, ventajas y características descritas de la invención se pueden combinar en cualquier
50 forma adecuada en una o más realizaciones. Un experto en la materia relevante reconocerá que la invención se puede poner en práctica sin una o más de las características específicas o ventajas de una realización particular. En otros casos, se pueden reconocer características y ventajas adicionales en ciertas realizaciones que puede que no estén presentes en todas las realizaciones de la invención.
55 Estas características y ventajas de la presente invención se harán totalmente evidentes a partir de la siguiente descripción y reivindicaciones adjuntas, o se puede aprender por la puesta en práctica de la invención como se muestra en este documento más adelante.
Breve descripción de los dibujos
60 Para que las ventajas de la invención se entiendan con facilidad, se proporcionará una descripción más particular de la invención descrita brevemente anteriormente por referencia a realizaciones específicas que se ilustran en los dibujos adjuntos. Entendiendo que estos dibujos representan solo realizaciones típicas de la invención y que por lo tanto no se deben considerar como limitativas de su ámbito, la invención se describirá y explicará con especificidad y
65 detalle adicionales mediante el uso de los dibujos adjuntos, en los que:
imagen6
la Figura 1A es un diagrama de bloques esquemático que ilustra una realización de un sistema para la gestión de datos en un dispositivo de almacenamiento de estado sólido de acuerdo con la presente invención; la Figura 1B es un diagrama de bloques esquemático que ilustra una realización de un sistema para la gestión de objetos en un dispositivo de almacenamiento de acuerdo con la presente invención;
5 la Figura 1C es un diagrama de bloques esquemático que ilustra una realización de un sistema para una red del área de almacenamiento en servidor de acuerdo con la presente invención; la Figura 2A es un diagrama de bloques esquemático que ilustra una realización de un aparato para la gestión de objetos en un dispositivo de almacenamiento de acuerdo con la presente invención; la Figura 2B es un diagrama de bloques esquemático que ilustra una realización de un controlador del dispositivo de almacenamiento de estado sólido en un dispositivo de almacenamiento de estado sólido de acuerdo con la presente invención; la Figura 3 es un diagrama de bloques esquemático que ilustra una realización de un controlador del almacenamiento de estado sólido con una conducción de datos de escritura y una conducción de datos de lectura en un dispositivo de almacenamiento de estado sólido de acuerdo con la presente invención;
15 la Figura 4A es un diagrama de bloques esquemático que ilustra una realización de un controlador de intercalado de bancos en el controlador de almacenamiento de estado sólido de acuerdo con la presente invención; la Figura 4B es un diagrama de bloques esquemático que ilustra una realización alternativa de un controlador de intercalado de bancos en el controlador del almacenamiento de estado sólido de acuerdo con la presente invención; la Figura 5A es un diagrama de flujo esquemático que ilustra una realización de un método para la gestión de datos en un dispositivo de almacenamiento de estado sólido que usa una conducción de datos de acuerdo con la presente invención; la Figura 5B es un diagrama de flujo esquemático que ilustra una realización de un método para una SAN en servidor de acuerdo con la presente invención;
25 la Figura 6 es un diagrama de flujo esquemático que ilustra otra realización de un método para la gestión de datos en un dispositivo de almacenamiento de estado sólido que usa una conducción de datos de acuerdo con la presente invención; la Figura 7 es un diagrama de flujo esquemático que ilustra una realización de un método para la gestión de datos en un dispositivo de almacenamiento de estado sólido que usa un intercalado de bancos de acuerdo con la presente invención; la Figura 8 es un diagrama de bloques esquemático que ilustra una realización de un aparato para la recogida de basura en un dispositivo de almacenamiento de estado sólido de acuerdo con la presente invención; la Figura 9 es un diagrama de flujo esquemático que ilustra otra realización de un método para la recogida de basura en un dispositivo de almacenamiento de estado sólido de acuerdo con la presente invención;
35 la Figura 10 es un diagrama de bloques esquemático que ilustra una realización de un sistema para una RAID progresiva, una RAID distribuida del extremo frontal, una RAID distribuida y compartida del extremo frontal de acuerdo con las presentes invenciones; la Figura 11 es un diagrama de bloques esquemático que ilustra una realización de un aparato para una RAID distribuida del extremo frontal de acuerdo con la presente invención; la Figura 12 es un diagrama de flujo esquemático que ilustra una realización de un método para una RAID distribuida del extremo frontal de acuerdo con la presente invención; la Figura 13 es un diagrama de bloques esquemático que ilustra una realización de un aparato para una RAID distribuida compartida del extremo frontal de acuerdo con la presente invención; la Figura 14 es un diagrama de flujo esquemático que ilustra una realización de un método para una RAID
45 distribuida compartida del extremo frontal de acuerdo con la presente invención; la Figura 15 es un diagrama de bloques esquemático que ilustra una realización de un sistema con almacenamiento de estado sólido como memoria caché para un dispositivo de almacenamiento no volátil de alta capacidad de acuerdo con la presente invención; la Figura 16 es un diagrama de bloques esquemático que ilustra una realización de un aparato con almacenamiento de estado sólido como memoria caché para un dispositivo de almacenamiento no volátil de alta capacidad de acuerdo con la presente invención; la Figura 17 es un diagrama de flujo esquemático que ilustra una realización de un método con almacenamiento de estado sólido como memoria caché para un dispositivo de almacenamiento no volátil de alta capacidad de acuerdo con la presente invención;
55 Descripción detallada de la invención
Muchas de las unidades funcionales descritas en esta memoria descriptiva se han etiquetado como módulos, para enfatizar más particularmente en su independencia de implementación. Por ejemplo, un módulo se puede implementar como un circuito hardware que comprende circuitos VLSI a medida o redes de puertas, o semiconductores distribuidos tales como chips de lógica, transistores u otros componentes discretos. Un módulo también se puede implementar en dispositivos de hardware programable tales como redes de puertas programables en campo, lógica de red programable, dispositivos de lógica programable o similares.
65 Los módulos también se pueden implementar en software para su ejecución por diversos tipos de procesadores. Un módulo identificado de código ejecutable puede comprender, por ejemplo, uno o más bloques físicos o lógicos de instrucciones de ordenador que se pueden organizar, por ejemplo, como un objeto, procedimiento o función. Sin embargo, las instrucciones ejecutables de un módulo identificado no necesariamente están localizadas juntas físicamente, sino que pueden comprender instrucciones dispares almacenadas en diferentes localizaciones que cuando se juntan lógicamente, comprenden el módulo y consiguen el propósito establecido para el módulo.
imagen7
5 En efecto, un módulo de código ejecutable puede ser una única instrucción, o muchas instrucciones y puede incluso estar distribuido sobre varios segmentos de código diferentes entre diferentes programas y a través de varios dispositivos de memoria. De forma similar, los datos operativos se pueden identificar e ilustrar en este documento dentro de módulos, y se pueden realizar en cualquier forma adecuada y organizarse dentro de cualquier tipo adecuado de estructura de datos. Los datos operativos se pueden recoger como un conjunto de datos únicos, o pueden estar distribuidos sobre diferentes localizaciones incluyendo sobre dispositivos de almacenamiento diferentes, y puede existir, al menos parcialmente, meramente como señales electrónicas sobre un sistema o red. Donde un módulo o porciones de un módulo se implementan en software, las porciones de software se almacenan sobre uno o más medios legibles por ordenador.
15 A lo largo de esta memoria descriptiva se hace referencia a "una realización" o lenguaje similar que significa que una propiedad, estructura o característica particular descrita en conexión con la realización está incluida en al menos una realización de la presente invención. De este modo, las apariciones de la frase "en una realización" y lenguaje similar a lo largo de esta memoria descriptiva se puede referir, pero no necesariamente a la misma realización.
La referencia a un medio de transporte de señal puede tomar cualquier forma capaz de generar una señal, que causa que se genere una señal, o que causa la ejecución de un programa de instrucciones legibles por máquina sobre un aparato de procesamiento digital. El medio que transporta una señal se puede realizar por una línea de transmisión, un disco compacto, un disco de video digital, una cinta magnética, una unidad de Bernouilli, un disco
25 magnético, una tarjeta perforada, una memoria flash, circuitos integrados u otro dispositivo de memoria de un aparato de procesamiento digital.
Además, las propiedades, estructuras o características descritas de la invención se pueden combinar en cualquier modo adecuado en una o más realizaciones. En la siguiente descripción, se proporcionan, numerosos detalles específicos, tales como ejemplos de programación, módulos software, selecciones de usuario, transacciones de red, consultas de bases de datos, estructuras de bases de datos, módulos hardware, circuitos hardware, chips hardware, etc. para proporcionar un entendimiento completo de las realizaciones de la invención. Un experto en la materia relevante reconocerá, sin embargo que la invención se puede poner en práctica sin uno o más de los detalles específicos o con otros métodos, componentes, materiales y así sucesivamente. En otros casos, no se muestran o
35 se describen con detalle estructuras, materiales u operaciones bien conocidas para evitar oscurecer aspectos de la invención.
Los diagramas de flujo esquemáticos incluidos en este documento se muestran en general como diagramas de flujos lógicos. Como tal, el orden representado y las etapas etiquetadas son indicativas de una realización del presente método. Otras etapas y métodos se pueden concebir como equivalentes en función, lógica, o efecto a una o más etapas, o porciones de las mismas, del método ilustrado. Adicionalmente, el formato y los símbolos empleados se proporcionan para explicar las etapas lógicas del método y se entiende que no limitan el ámbito del método. Aunque se pueden emplear diversos tipos de flechas y tipos de líneas en los diagramas de flujo, se entiende que no limitan el ámbito del método correspondiente. En efecto, algunas flechas u otras conexiones se pueden usar para indicar
45 solo el flujo lógico del método. Por ejemplo, una flecha puede indicar un periodo de espera o monitorización de una duración no específica entre etapas numeradas del método representado. Adicionalmente, el orden en el que ocurre un método particular se puede adherir o no de forma estricta al orden de las etapas correspondientes mostradas.
Sistema de almacenamiento de estado sólido
La Figura 1A es un diagrama de bloques esquemático que ilustra una realización de un sistema 100 para la gestión de datos en un dispositivo de almacenamiento de estado lógico de acuerdo con la presente invención. El sistema 100 incluye un dispositivo de almacenamiento de estado lógico 102, un controlador del almacenamiento de estado sólido 104, una conducción de datos de escritura 106, una conducción de datos de lectura 108, un almacenamiento
55 de estado sólido 110, un ordenador 112, un cliente 114, y una red de ordenadores 116, que se describen a continuación.
El sistema 100 incluye al menos un dispositivo de almacenamiento de estado sólido 102. En otra realización, el sistema 100 incluye dos o más dispositivos de almacenamiento de estado sólido 102. Cada uno de los dispositivos de almacenamiento de estado sólido 102 puede incluir un almacenamiento de estado sólido no volátil 110, tal como una memoria flash, una nano memoria de acceso aleatorio ("nano RAM o NRAM"), una RAM magneto -resistiva ("MRAM"), una RAM dinámica ("DRAM"), una RAM de cambio de fase ("PRAM"), etc. El dispositivo de almacenamiento de estado sólido 102 se describe con más detalle con respecto a las Figuras 2 y 3. El dispositivo de almacenamiento de estado sólido 102 se representa en un ordenador 112 conectado a un cliente 114 a través de
65 una red de ordenadores 116. En una realización, el dispositivo de almacenamiento de estado sólido 102 es interno al ordenador 112 y está conectado usando un bus del sistema, tal como un bus exprés de interconexión de componentes periféricos ("PCI-e"), un bus de Conexión de Tecnología Avanzada Serie ("ATA serie"), o similares. En otra realización, el dispositivo de almacenamiento de estado sólido 102 es externo al ordenador 112 y está conectado por una conexión del bus serie universal ("USB"), un bus del Instituto de Ingenieros Eléctricos y Electrónicos ("IEEE") 1394 ("FireWire") o similares. En otras realizaciones, el dispositivo de almacenamiento de
imagen8
5 estado sólido 102 está conectado al ordenador 112 usando un bus exprés de interconexión de componentes periféricos ("PCI") que usa una extensión del bus óptico o eléctrico externo o la solución de bus de funcionamiento en red tal como Infiniband o la Conmutación Avanzada del PCI Exprés ("PCIe-AS"), o similares.
En diversas realizaciones, el dispositivo de almacenamiento de estado sólido 102 puede ser en la forma de un módulo de memoria dual en línea ("DIMM"), una tarjeta secundaria, o un micro -módulo. En otra realización, el dispositivo de almacenamiento de estado sólido 102 es un elemento dentro de un módulo montado en armazón. En otra realización, el dispositivo de almacenamiento de estado sólido 102 está contenido dentro de un paquete que está integrado directamente sobre un ensamblaje de alto nivel (por ejemplo, una tarjeta base, ordenador portátil, procesador gráfico). En una realización, los componentes individuales que comprenden el dispositivo de
15 almacenamiento de estado sólido 102 están integrados directamente sobre un ensamblaje de nivel superior sin empaquetamiento intermedio.
El dispositivo de almacenamiento de estado sólido 102 incluye uno o más controladores de almacenamiento de estado sólido 104, cada uno de ellos puede incluir una conducción de datos de escritura 106 y una conducción de datos de lectura 108 y cada uno incluye un almacenamiento de estado sólido 110, que se describen con más detalle más adelante con respecto a las Figuras 2 y 3.
El sistema 100 incluye uno o más ordenadores 112 conectados al dispositivo de almacenamiento de estado sólido
102. Un ordenador 112 puede ser un hospedador, un servidor, un controlador de almacenamiento de una red de
25 área de almacenamiento ("SAN"), una estación de trabajo, un ordenador portátil, un ordenador de mano, un superordenador, un agrupamiento de ordenadores, un conmutador de red, un encaminador o dispositivo, una base de datos o dispositivo de almacenamiento, un sistema de adquisición de datos o captura de datos, un sistema de diagnóstico, un sistema de prueba, un robot, un dispositivo electrónico portátil, un dispositivo inalámbrico, o similares. En otra realización, un ordenador 112 puede ser un cliente y el dispositivo de almacenamiento de estado sólido 102 opera de forma autónoma para servir a las peticiones de datos enviadas desde el ordenador 112. En esta realización, el ordenador 112 y el dispositivo de almacenamiento de estado sólido 102 se puede conectar usando una red de ordenadores, un bus de sistema u otro medio de comunicación adecuado para la conexión entre un ordenador 112 y un dispositivo de almacenamiento de estado sólido autónomo 102.
35 En una realización, el sistema 100 incluye uno o más clientes 114 conectados a uno o más ordenadores 112 a través de una o más redes de ordenadores 116. Un cliente 114 puede ser un hospedador, un servidor, un controlador de almacenamiento de una SAN, una estación de trabajo, un ordenador personal, un ordenador portátil, un ordenador de mano, un superordenador, un agrupamiento de ordenadores, un conmutador de red, un encaminador o dispositivo, una base de datos o dispositivo de almacenamiento, un sistema de adquisición de datos
o captura de datos, un sistema de diagnóstico, un sistema de prueba, un robot, un dispositivo electrónico portátil, un dispositivo inalámbrico, o similares. La red de ordenadores 116 puede incluir la Internet, una red de área ancha ("WAN"), una red de área metropolitana ("MAN"), una red de área local ("LAN"), un sistema de token ring, una red inalámbrica, una red de canal de fibra, una SAN, un almacenamiento conectado en red ("NAS"), ESCON o similares
o cualquier combinación de las redes. La red de ordenadores 116 puede incluir también una red de la familia 802 del 45 IEEE de las tecnologías de red, como la Ethernet, token ring, WiFi, WiMax, y similares.
La red de ordenadores 116 puede incluir servidores, conmutadores, enrutadores, cableados, radios, y otro equipo usados para facilitar la conexión en red de ordenadores 112 y clientes 114. En una realización, el sistema 100 incluye múltiples ordenadores 112 que comunican como pares sobre una red de ordenadores 116. En otra realización, el sistema 100 incluye múltiples dispositivos de almacenamiento de estado sólido 102 que comunican como pares sobre una red de ordenadores 116. Un experto en la materia reconocerá otras redes de ordenadores 116 que comprenden una o más redes de ordenadores 116 y equipo relacionado con una conexión única o redundante entre uno o más clientes 114 u otro ordenador con uno o más dispositivos de almacenamiento de estado sólido 102 o uno o más dispositivos de almacenamiento de estado sólido 102 conectado a uno o más ordenadores
55 112. En una realización, el sistema 100 incluye dos o más dispositivos de almacenamiento de estado sólido 102 conectados a través de la red de ordenadores 116 a un cliente 114 sin un ordenador 112.
Controlador de almacenamiento -objetos gestionados
La Figura 1B es un diagrama de bloques esquemático que ilustra una realización de un sistema 101 para la gestión de objetos en un dispositivo de almacenamiento de acuerdo con la presente invención. El sistema 101 incluye uno o más dispositivos de almacenamiento 150, cada uno con un controlador de almacenamiento 152 y uno o más dispositivos de almacenamiento de datos 154, y uno o más dispositivos solicitantes 155. Los dispositivos de almacenamiento 152 están conectados juntos en red y acoplados a uno o más dispositivos solicitantes 155. El 65 dispositivo solicitante 155 envía peticiones de objetos a un dispositivo de almacenamiento 150a. Una petición de objetos puede ser una petición para crear un objeto, una petición para escribir datos en un objeto, una petición para
imagen9
leer datos desde un objeto, una petición para borrar un objeto, una petición para un punto de control de un objeto, una petición para copiar un objeto y similares. Un experto en la materia reconocerá otras peticiones de objetos.
En una realización, el controlador de almacenamiento 152 y el dispositivo de almacenamiento de datos 154 son
5 dispositivos separados. En otra realización, el controlador de almacenamiento 152 y el dispositivo de almacenamiento de datos 154 están integrados dentro de un dispositivo de almacenamiento 150. En otra realización, un dispositivo de datos 154 es un almacenamiento de estado sólido 110 y el controlador de almacenamiento 152 es un controlador del dispositivo de almacenamiento de estado sólido 202. En otras realizaciones, el dispositivo de almacenamiento de datos 154 puede ser una unidad de disco duro, una unidad óptica, un almacenamiento de cinta o similares. En otra realización, un dispositivo de almacenamiento 150 puede incluir dos o más dispositivos de almacenamiento de datos 154 de diferentes tipos.
En una realización, el dispositivo de almacenamiento de datos 154 es un almacenamiento de estado sólido 110 y está dispuesto como una red de elementos de almacenamiento de estado sólido 216, 218, 220. En otra realización,
15 el almacenamiento de estado sólido 110 está dispuesto en dos o más bancos 214a -n. El almacenamiento de estado sólido 110 se describe con más detalle más adelante con respecto a la Figura 2B.
Los dispositivos de almacenamiento 150a -n pueden estar juntos conectados en red y actuar como un dispositivo de almacenamiento distribuido. El dispositivo de almacenamiento 150a acoplado al dispositivo solicitante 155 controla las peticiones de objetos al dispositivo de almacenamiento distribuido. En una realización, los dispositivos de almacenamiento 150 y los controladores de almacenamiento asociados 152 gestionan objetos y aparecen a los dispositivos solicitantes 155 como un sistema de ficheros de objetos distribuidos. En este contexto, un sistema de ficheros de objetos en paralelo es un ejemplo de un tipo de sistema de ficheros de objetos distribuidos. En otra realización, los dispositivos de almacenamiento 150 y los controladores de almacenamiento asociados 152 25 gestionan los objetos y aparecen al dispositivo solicitante 155 como servidores de ficheros de objetos distribuidos. En este contexto, un servidor de ficheros de objetos en paralelo es un ejemplo de un tipo de servidor de ficheros de objetos distribuidos. En estas y otras realizaciones el dispositivo solicitante 155 puede gestionar exclusivamente objetos o participar en la gestión de los objetos en conjunción con los dispositivos de almacenamiento 150; esto usualmente no limita la capacidad de los dispositivos de almacenamiento 150 para gestionar completamente objetos para otros clientes 114. En el caso degenerado, cada uno de los dispositivos de almacenamiento distribuido, el sistema de ficheros de objetos distribuidos y el servidor de ficheros de objetos distribuidos pueden operar independientemente como un único dispositivo. Los dispositivos de almacenamiento conectados en red 150a -n pueden operar como dispositivos de almacenamiento distribuidos, sistemas de ficheros de objetos distribuidos, servidores de ficheros de objetos distribuidos, y cualquier combinación de los mismos que tienen imágenes de una o
35 más de estas capacidades configuradas para uno o más dispositivos solicitantes 155. Por ejemplo, los dispositivos de almacenamiento 150 se pueden configurar para operar como dispositivos de almacenamiento distribuidos para un primer dispositivo solicitante 155a, mientras que operan como dispositivos de almacenamiento distribuido y sistemas de ficheros de objetos distribuidos para los dispositivos solicitantes 155b. Donde el sistema 101 incluye un dispositivo de almacenamiento 150a, el controlador de almacenamiento 152a del dispositivo de almacenamiento 150a, gestiona objetos que pueden aparecer a los dispositivos solicitantes 155 como un sistema de ficheros de objetos o un servidor de ficheros de objetos.
En una realización donde los dispositivos de almacenamiento 150 están juntos conectados en red como un dispositivo de almacenamiento distribuido, los dispositivos de almacenamiento 150 sirven como una red redundante
45 de unidades independientes ("RAID") gestionada por uno o más controladores del almacenamiento distribuido 152. Por ejemplo, una petición de escritura de un segmento de datos de un objeto da como resultado en el segmento de datos que se desmonte a través de los dispositivos de almacenamiento de datos 154a -n con una banda de paridad, que depende del nivel de RAID. Un beneficio de tal disposición es que tal sistema de gestión de objetos puede continuar estando disponible cuando el dispositivo de almacenamiento único 150 tiene un fallo, ya sea del controlador de almacenamiento 152, el dispositivo de almacenamiento de datos 154, u otros componentes del dispositivo de almacenamiento 150.
Cuando se usan redes redundantes para interconectar los dispositivos de almacenamiento 150 y los dispositivos solicitantes 155, el sistema de gestión de objetos puede continuar estando disponible en presencia de fallos de red
55 siempre que una de las redes siga estando operativa. Un sistema 101 con un dispositivo de almacenamiento único 150a también puede incluir múltiples dispositivos de almacenamiento de datos 154a y el controlador de almacenamiento 152a del dispositivo de almacenamiento 150a puede actuar como un controlador de RAID y desmontar los segmentos de datos a través de los dispositivos de almacenamiento de datos 154a del dispositivo de almacenamiento 150a y puede incluir una banda de paridad, dependiendo del nivel de RAID.
En una realización, donde el uno o más dispositivos de almacenamiento 150a -n son dispositivos de almacenamiento de estado sólido 102 con un controlador del dispositivo de almacenamiento de estado sólido 202 y el almacenamiento de estado sólido 110, el dispositivo de almacenamiento de estado sólido 102 puede estar configurado como una configuración DIMM, una tarjeta secundaria, un micro -módulo, etc. y residir en un ordenador 65 112. El ordenador 112 puede ser un servidor o dispositivo similar con dispositivos de almacenamiento de estado sólido 102 conectados en red y actuando como controladores de RAID distribuidos. Ventajosamente, los dispositivos
imagen10
de almacenamiento 102 pueden estar conectados usando PCI-e, PCIe-AS, Infiniband u otro bus de altas prestaciones, bus conmutado, bus conectado en red, o una red y puede proporcionar un sistema de almacenamiento de RAID muy compacto, de altas prestaciones con un controlador único o controladores de almacenamiento de estado sólido único o distribuido 202 que desmontan de forma autónoma un segmento de datos a través del
5 almacenamiento de estado sólido 110a -n.
En una realización, la misma red usada por el dispositivo solicitante 155 para comunicar con los dispositivos de almacenamiento 150 se puede usar por el dispositivo de almacenamiento par 150a para comunicar con los dispositivos de almacenamiento pares 150b -n para lograr la funcionalidad de RAID. En otra realización, se puede usar una red separada entre los dispositivos de almacenamiento 150 para el fin de estructuración de RAID. En otra realización, los dispositivos solicitantes 155 pueden participar en el proceso de estructuración de RAID enviando peticiones redundantes a los dispositivos de almacenamiento 150. Por ejemplo, el dispositivo solicitante 155 puede enviar una primera petición de escribir un objeto a un primer dispositivo de almacenamiento 150a y una segunda petición de escribir un objeto con el mismo segmento de datos a un segundo dispositivo de almacenamiento 150b
15 para conseguir una simetría simple.
Con la capacidad para el manejo de objetos dentro de los dispositivos de almacenamiento 102, los controladores de almacenamiento 152 tienen únicamente la capacidad de almacenar un segmento de datos u objeto usando un nivel de RAID mientras que otro segmento de datos u objeto se almacena usando un nivel de RAID diferente o sin el desmontaje de RAID. Estos agrupamientos de RAID múltiples se pueden asociar con múltiples particiones dentro de los dispositivos de almacenamiento 150. RAID 0, RAID 1, RAID 5, RAID 6 y tipos compuestos de RAID 10, 50, 60, se pueden soportar simultáneamente a través de una diversidad de grupos de RAID que comprenden dispositivos de almacenamiento de datos 154a -n. Un experto en la materia reconocerá otros tipos y configuraciones de RAID y configuraciones que se pueden soportar simultáneamente.
25 También, debido a que los controladores de almacenamiento 152 operan de forma autónoma como controladores de RAID, los controladores de RAID pueden realizar estructuraciones de RAID progresivas y pueden transformar objetos o porciones de objetos desmontados a través de los dispositivos de almacenamiento de datos 154 con un nivel de RAID a otro nivel de RAID sin que se afecte al dispositivo solicitante 155, que participa o incluso que detecta el cambio en los niveles de RAID. En la realización preferida, el progreso de la configuración de RAID desde un nivel a otro nivel se puede lograr de forma autónoma sobre un objeto o incluso sobre la base de un paquete e iniciarse por un módulo de control de RAID distribuido que opera en uno de los dispositivos de almacenamiento 150 o los controladores de almacenamiento 152. Usualmente, la progresión de RAID será desde un funcionamiento superior y una configuración de almacenamiento de más baja eficiencia tal como una RAID a un funcionamiento inferior y una
35 configuración de almacenamiento de más alta eficiencia tal como RAID 5 donde la transformación se inicia dinámicamente en base a la frecuencia de acceso. Pero se puede ver que el progreso de la configuración desde RAID 5 a RAID 1 también es posible. Otros procesos para iniciar la progresión de RAID se puede configurar o solicitar desde clientes o agentes externos tal como una petición del servidor de gestión del sistema de almacenamiento. Un experto en la materia reconocerá otras características y beneficios del dispositivo de almacenamiento 102 con un controlador de almacenamiento 152 que gestiona objetos de forma autónoma.
Dispositivo de almacenamiento de estado sólido con una san en servidor
La Figura 1C es un diagrama de bloques esquemático que ilustra una realización de un sistema 103 para una red de
45 área de almacenamiento ("SAN") en servidor de acuerdo con la presente invención. El sistema 103 incluye un ordenador 112 configurado usualmente como un servidor ("servidor 112"). Cada servidor 112 incluye uno o más dispositivos de almacenamiento 150 donde el servidor 112 y los dispositivos de almacenamiento 150 están cada uno conectado a una interfaz de red compartida 156. Cada dispositivo de almacenamiento 150 incluye un controlador de almacenamiento 152 y el dispositivo de almacenamiento de datos correspondiente 154. El sistema 103 incluye los clientes 114, 114a, 114b que son bien internos o externos a los servidores 112. Los clientes 114, 114a, 114b pueden comunicar con cada servidor 112 y cada dispositivo de almacenamiento 150 a través de uno o más redes de ordenadores 116, que son sustancialmente similares a las descritas anteriormente.
El dispositivo de almacenamiento 150 incluye un módulo DAS 158, un módulo NAS 160, un módulo de
55 comunicaciones de almacenamiento 162, un módulo de SAN en servidor 164, un módulo de interfaz común 166, un módulo proxy 170, un módulo de bus virtual 172, un módulo RAID del extremo frontal 174, y un módulo RAID del extremo posterior 176, que se describen más adelante. Aunque los módulos 158 -176 se muestran en un dispositivo de almacenamiento 150, todos o una porción de cada módulo 158 -176 puede estar en el dispositivo de almacenamiento 150, el servidor 112, el controlador de almacenamiento 152 u otra localización.
Un servidor 112, usado en conjunción con una SAN en servidor, es un ordenador que funciona como un servidor. El servidor 112 incluye al menos una función de servidor, tal como una función de servidor de ficheros, pero también puede incluir otras funciones de servidor. Los servidores 112 pueden ser parte de una granja de servidores y pueden dar servicio a otros clientes 114. En otras realizaciones, el servidor 112 también puede ser un ordenador personal, 65 una estación de trabajo u otro ordenador que alberga dispositivos de almacenamiento 150. Un servidor 112 puede acceder a uno o más dispositivos de almacenamiento 150 en el servidor 112 como un almacenamiento de conexión
imagen11
directa ("DAS"), un almacenamiento de conexión SAN o un almacenamiento de conexión en red ("NAS"). Los controladores de almacenamiento 152 que participan en una SAN en servidor o NAS pueden ser internos o externos al servidor 12.
5 En una realización, el aparato de SAN en servidor incluye un módulo DAS 158 que configura al menos una porción de al menos un dispositivo de almacenamiento de datos 154 controlado por un controlador de almacenamiento 152 en un servidor 112 como un dispositivo DAS conectado al servidor 112 para dar servicio a las peticiones de almacenamiento desde al menos un cliente 114 al servidor 112. En una realización, un primer dispositivo de almacenamiento de datos 154a se configura como un DAS para el primer servidor 112a mientras que también se configura como un dispositivo de almacenamiento SAN en servidor para el primer servidor 112a. En otra realización, el primer dispositivo de almacenamiento de datos 154a se divide de modo que una partición es un DAS y la otra es una SAN en servidor. En otra realización, al menos una porción del espacio de almacenamiento dentro del primer dispositivo de almacenamiento de datos 154a se configura como un DAS para el primer servidor 112a y la misma porción de espacio de almacenamiento sobre el primer dispositivo de almacenamiento de datos 154a se configura
15 como una SAN en servidor para el primer servidor 112a.
En otra realización, el aparato de SAN en servidor incluye un módulo de NAS 160 que configura un controlador de almacenamiento 152 como un dispositivo NAS para al menos un cliente 114 y sirve las peticiones de ficheros desde el cliente 114. El controlador de almacenamiento 152 también se puede configurar como un dispositivo SAN en servidor para el primer servidor 112a. Los dispositivos de almacenamiento 150 pueden conectar directamente con la red de ordenadores 116 a través de la interfaz de red compartida 156 independiente del servidor 112 en el que reside el dispositivo de almacenamiento 150.
En una forma elemental, un aparato en una SAN en servidor incluye un primer controlador de almacenamiento 152a
25 dentro un primer servidor 112a donde el primer controlador de almacenamiento 152a controla al menos un dispositivo de almacenamiento 154a. El primer servidor 112a incluye una interfaz de red 156 compartida por el primer servidor 112a y el primer controlador de almacenamiento 152a. El aparato de SAN en servidor incluye un módulo de comunicaciones de almacenamiento 162 que facilita las comunicaciones entre el primer controlador de almacenamiento 152a y al menos un dispositivo externo al primer servidor 112a de modo que la comunicación entre el primer controlador de almacenamiento 152a y el dispositivo externo es independiente del primer servidor 112a. El módulo de comunicaciones de almacenamiento 162 puede permitir al primer controlador de almacenamiento 152a acceder independientemente a la interfaz de red 156a para la comunicación externa. En una realización, el módulo de comunicaciones de almacenamiento 162 accede a un conmutador en la interfaz de red 156a para el tráfico de red directo entre el primer controlador de almacenamiento 152a y dispositivos externos.
35 El aparato de SAN en servidor también incluye un módulo de SAN en servidor 164 que sirve a una petición de almacenamiento usando uno o ambos de un protocolo de red y un protocolo de bus. El módulo de SAN en servidor 164 sirve a la petición de almacenamiento independiente desde el primer servidor 112a y la petición de servicio que se recibe desde un cliente interno o externo 114, 114a.
En una realización, el dispositivo externo al primer servidor 112a es un segundo controlador de almacenamiento 152b. El segundo controlador de almacenamiento 152b controla al menos un dispositivo de almacenamiento de datos 154b. El módulo de SAN en servidor 164 sirve la petición de almacenamiento usando la comunicación a través de la interfaz de red 156a y entre el primer y segundo controladores de almacenamiento 152a, 152b independientes
45 del primer servidor 112a. El segundo controlador de almacenamiento 152b puede estar dentro de un segundo servidor 112b o dentro de algún otro dispositivo.
En otra realización, el dispositivo externo al primer servidor 112a es un cliente 114 y la petición de almacenamiento se origina con el cliente externo 114 donde el primer controlador de almacenamiento 152a está configurado como al menos parte de una SAN y el módulo de SAN en servidor 164 sirve la petición de almacenamiento a través de la interfaz de red 156a independiente del primer servidor 112a. El cliente externo 114 puede estar en el segundo servidor 112b o puede ser externo al segundo servidor 112b. En una realización, el módulo de SAN en servidor 164 puede servir las peticiones de almacenamiento desde el cliente externo 114 incluso cuando el primer servidor 112a no está disponible.
55 En otra realización, el cliente 114a que origina la petición de almacenamiento es interno al primer servidor 112a donde el primer controlador de almacenamiento 152a está configurado como al menos parte de una SAN y el módulo de SAN en servidor 164 sirve la petición de almacenamiento a través de una o más de la interfaz de red 156a y el bus de sistema.
Las configuraciones de SAN tradicionales permiten el acceso a un dispositivo de almacenamiento remoto del servidor 112b como si el dispositivo de almacenamiento residiese dentro del servidor 112 como un almacenamiento de conexión directa ("DAS") de modo que el dispositivo de almacenamiento aparece como un dispositivo de almacenamiento de bloques. Usualmente, un dispositivo de almacenamiento conectado a una SAN requiere un 65 protocolo de SAN, tal como un canal de fibra, una interfaz de Internet de un pequeño sistema de ordenadores ("iSCSI"), HyperSCSI, Conectividad de Fibra ("FICON"), la Conexión de Tecnología Avanzada ("ATA") sobre
imagen12
Ethernet, etc. La SAN en servidor incluye un controlador de almacenamiento 152 dentro de un servidor 112 mientras que aun permite la conexión de red entre el controlador de almacenamiento 152a y el controlador de almacenamiento remoto 152b o un cliente externo 114 usando un protocolo de red y/o un protocolo de bus.
5 Usualmente, los protocolos de SAN son una forma de protocolo de red y más protocolos de red que están emergiendo, tal como infiniband que permitiría a un controlador de almacenamiento 152a y los dispositivos de almacenamiento de datos asociados 154a, configurarse como una SAN y comunicar con un cliente externo 114 o un segundo controlador de almacenamiento 152b. En otro ejemplo, un primer controlador de almacenamiento 152a puede comunicar con un cliente externo 114 o un segundo controlador de almacenamiento 152b usando Ethernet.
10 Un controlador de almacenamiento 152 puede comunicar sobre un bus con controladores de almacenamiento interno 152 o clientes 114a. Por ejemplo, un controlador de almacenamiento 152 puede comunicar sobre un bus usando PCI-e que puede soportar la Virtualización de Entradas / Salidas sobre PCI Exprés ("PCIe-IOV"). Otros protocolos de bus emergentes permiten a un bus de sistema extenderse fuera del ordenador o servidor 112 y
15 permitirían a un controlador de almacenamiento 152a configurarse como una SAN. Uno de tales protocolos de bus es el PCIe-AS. La presente invención no está limitada simplemente a los protocolos de SAN, sino que también se puede aprovechar de los protocolos de red y de bus emergentes para servir las peticiones de almacenamiento. Un dispositivo externo, bien en la forma de un cliente 114 o de controlador de almacenamiento externo 152b, puede comunicar sobre un bus de sistema extendido o una red de ordenadores 116. Una petición de almacenamiento,
20 como se usa en este documento, incluye peticiones para escribir datos, leer datos, borrar datos, consultar datos, etc. y puede incluir datos de objetos, metadatos, y peticiones de gestión así como peticiones de datos de bloques.
Un servidor tradicional 112 usualmente tiene una raíz compleja que controla el acceso a los dispositivos dentro del servidor 112. Usualmente, esta raíz compleja del servidor 112 pertenece a la interfaz de red 156 de modo que
25 cualquier comunicación a través de la interfaz de red 156 está controlada por el servidor 112. Sin embargo, en la realización preferida del aparato de SAN en servidor, el controlador de almacenamiento 152 es capaz de acceder a la interfaz de red 156 independientemente de modo que los clientes 114 pueden comunicar directamente con uno o más de los controladores de almacenamiento 152a en el primer servidor 112a formando una SAN o de modo que uno o más de los primeros controladores de almacenamiento 152a pueden estar conectados en red con un segundo
30 controlador de almacenamiento 152b u otros controladores de almacenamiento remotos 152 para formar una SAN. En la realización preferida, los dispositivos remotos del primer servidor 112a pueden acceder al primer servidor 112a
o el primer controlador de almacenamiento 152a a través de una dirección de red única, compartida. En una realización, el aparato de SAN en servidor incluye un módulo de interfaz común 166 que configura la interfaz de red 156, el controlador de almacenamiento 152 y el servidor 112 de modo que el servidor 112 y el controlador de
35 almacenamiento 152 son accesibles usando una dirección de red compartida.
En otras realizaciones, el servidor 112 incluye dos o más interfaces de red 156. Por ejemplo, el servidor 112 puede comunicar sobre una interfaz de red 156 mientras que el dispositivo de almacenamiento 150 puede comunicar sobre otra interfaz. En otro ejemplo, el servidor 112 incluye múltiples dispositivos de almacenamiento 150, cada uno de
40 ellos con una interfaz de red 156. Un experto en la materia reconocerá otras configuraciones de un servidor 112 con uno o más dispositivos de almacenamiento 150 y una o más interfaces de red 156 donde uno o más de los dispositivos de almacenamiento 150 accede a la interfaz de red 156 independiente del servidor 112. Un experto en la materia también reconocerá cómo se pueden extender estas diversas configuraciones para soportar la redundancia de red y mejorar la disponibilidad.
45 Ventajosamente, el aparato de SAN en servidor elimina mucha de la complejidad y el coste de una SAN tradicional. Por ejemplo, una SAN típica requiere servidores 112 con controladores de almacenamiento externo 152 y dispositivos de almacenamiento de datos asociados 154. Esto ocupa un espacio adicional en un armazón y requiere cableado, conmutadores, etc. El cableado, la conmutación y otro código de control distinto requerido para configurar
50 un SAN tradicional ocupan espacio, degradan el ancho de banda y son caros. El aparato de SAN en servidor permite a los controladores de almacenamiento 152 y el almacenamiento asociado 154 fijar en un servidor 112 un factor de forma, reduciendo de este modo el espacio requerido y con un coste inferior. Una SAN en servidor también permite la conexión usando una comunicación relativamente rápida sobre buses de datos de alta velocidad internos y externos.
55 En una realización, el dispositivo de almacenamiento 150 es un dispositivo de almacenamiento de estado sólido 102, el controlador de almacenamiento 152 es un controlador de almacenamiento de estado sólido 104, y el dispositivo de almacenamiento de datos 154 es un almacenamiento de estado sólido 110. Esta realización es ventajosa debido a la velocidad del dispositivo de almacenamiento de estado sólido 102 como se describe en este documento.
60 Además, el dispositivo de almacenamiento de estado sólido 102 se puede configurar en un DIMM que puede fijarse convenientemente en un servidor 112 y requiere una pequeña cantidad de espacio.
El uno o más clientes internos 114a, b en el servidor 112 también pueden conectar con la red de ordenadores 116 a través de la interfaz de red 156 del servidor 112 y la conexión del cliente está usualmente controlada por el servidor
65 112. Esto tiene varias ventajas. Los clientes 114a pueden acceder lógicamente y remotamente a los dispositivos de En otra realización, los clientes 114, 114a dentro o fuera del servidor 112 pueden actuar como servidores de ficheros
imagen13
5 para los clientes 114 a través de una o más redes 116 mientras que usan dispositivos de almacenamiento conectados localmente 150 como dispositivos DAS, dispositivos de almacenamiento conectados en red 150, dispositivos de almacenamiento de estado sólido conectados en red 102 que participan como parte de unas SAN en servidor, unas SAN externas, y SAN híbridas. Un dispositivo de almacenamiento 150 puede participar en un DAS, una SAN en servidor, SAN, NAS, etc., simultáneamente y en cualquier combinación. Adicionalmente, cada uno de los dispositivos de almacenamiento 150 se pueden dividir de tal modo que una primera partición hace al dispositivo de almacenamiento 150 disponible como un DAS, una segunda partición hace al dispositivo de almacenamiento 150 disponible como un elemento en una SAN en servidor, una tercera partición hace al dispositivo de almacenamiento 150 disponible como un NAS, una cuarta partición hace al dispositivo de almacenamiento 150 disponible como un elemento en una SAN, etc. De forma similar, el dispositivo de almacenamiento 150 se puede dividir de forma
15 consistente con la seguridad y los requisitos de control de acceso. Un experto en la materia reconocerá que cualquier número de combinaciones y permutaciones de los dispositivos de almacenamiento, dispositivos de almacenamiento virtual, redes de almacenamiento, redes de almacenamiento virtual, almacenamiento privado, almacenamiento compartido, sistemas de ficheros en paralelo, sistemas de ficheros de objetos en paralelo, dispositivos de almacenamiento de bloques, dispositivos de almacenamiento de objetos, dispositivos de almacenamiento, dispositivos de red y similares se pueden construir y soportar.
Además, conectando directamente a la red de ordenadores 116, los dispositivos de almacenamiento 150 pueden comunicar con cada uno de los otros y pueden actuar como una SAN en servidor. Los clientes 114a en los servidores 112 y los clientes 114 conectados a través de la red de ordenadores 116 pueden acceder a los
25 dispositivos de almacenamiento 150 como una SAN. Moviendo los dispositivos de almacenamiento 150 dentro de los servidores 112 y teniendo la capacidad de configurar los dispositivos de almacenamiento 150 como una SAN, la combinación de servidor 112 / dispositivo de almacenamiento 150 elimina la necesidad en las SAN convencionales de controladores de almacenamiento dedicados, redes de canal de fibra, y otros equipos. El sistema de SAN en servidor 103 tiene la ventaja de posibilitar al dispositivo de almacenamiento 150 la compartición de los recursos comunes tales como potencia, enfriamiento, gestión y espacio físico con el cliente 114 y el ordenador 112. Por ejemplo, los dispositivos de almacenamiento 150 pueden rellenar ranuras vacías de los servidores 112 y proporcionar todas las capacidades de funcionamiento, fiabilidad y disponibilidad de una SAN o NAS. Un experto en la materia reconocerá que otras características y beneficios de un sistema de SAN en servidor 103.
35 En otra configuración, se colocan múltiples dispositivos de almacenamiento de SAN en servidor 150a dentro de una infraestructura de servidor único 112a. En una realización, el servidor único 112a está comprendido de uno o más clientes de servidores de módulo internos 114a interconectados usando una IOV de PCI exprés sin una interfaz de red externa 156, cliente externo 114, 114b o el dispositivo de almacenamiento externo 150b.
Además, el dispositivo de almacenamiento de SAN en servidor 150 puede comunicar a través de una o más redes de ordenadores 116 con dispositivos de almacenamiento pares 150 que están localizados en un ordenador 112 (para la Figura 1A), o se conectan directamente a la red de ordenadores 116 sin un ordenador 112 para formar una SAN híbrida que tiene todas las capacidades de ambas una SAN y una SAN en servidor. Esta flexibilidad tiene el beneficio de simplificar la extensibilidad y la migración entre una diversidad de implementaciones de red de
45 almacenamiento de estado sólido posibles. Un experto en la técnica reconocerá otras combinaciones, configuraciones, implementaciones, y arquitecturas para la localización y la interconexión de controladores de estado sólido 104.
Donde la interfaz de red 156a se puede controlar por solo un agente que opera dentro del servidor 112a, un módulo de establecimiento de enlace 168 que opera dentro de ese agente puede establecer trayectorias de comunicación entre clientes internos 114a y dispositivos de almacenamiento 150a / primeros controladores de almacenamiento 152a a través de la interfaz de red 156a con los dispositivos de almacenamiento externos 150b y los clientes 114, 114b. En una realización preferida, una vez que se ha establecido la trayectoria de comunicación, los dispositivos de almacenamiento internos individuales 150a y los clientes internos 114a son capaces de establecer y gestionar sus
55 propias colas de comandos y transferir tanto comandos como datos a través de la interfaz de red 156a a dispositivos de almacenamiento externos 150b y clientes 114, 114b en cualquier dirección, directamente y a través de un RDMA independiente del proxy o agente que controla la interfaz de red 156a. En una realización, el módulo de establecimiento del enlace 168 establece los enlaces de comunicaciones durante el proceso de inicialización, tal como en el arranque o inicialización del hardware.
En otra realización, un módulo proxy 170 dirige al menos una porción de los comandos usados en servir una petición de almacenamiento a través del primer servidor 112a mientras que al menos los datos, y posiblemente otros comandos, asociados con la petición de almacenamiento se comunican entre el primer controlador de almacenamiento 152a y el dispositivo de almacenamiento externo 150b independiente del primer servidor 112a. En
65 otra realización, el módulo proxy 170 retransmite los comandos o los datos en nombre de los dispositivos de almacenamiento internos 150a y los clientes 114a.
imagen14
En una realización, el primer servidor 112a incluye uno o más servidores dentro del primer servidor 112a e incluye un módulo de bus virtual 172 que permite al uno o más servidores en el primer servidor 112a acceder de forma independiente a uno o más controladores de almacenamiento 152a a través de buses virtuales separados. Los
5 buses virtuales se pueden establecer usando un protocolo de bus avanzado tal como un PCIe-IOV. Las interfaces de red 156a que soportan la IOV pueden permitir al uno o más servidores y el uno o más controladores de almacenamiento 152a controlar de forma independiente la una o más interfaces de red 156a.
En diversas realizaciones el aparato de SAN en servidor permite a dos o más dispositivos de almacenamiento 150 estar configurados en una RAID. En una realización, el aparato de SAN en servidor incluye un módulo RAID del extremo frontal 174 que configura dos o más controladores de almacenamiento 152 como una RAID. Donde una petición de almacenamiento desde un cliente 114, 114a incluye una petición para almacenar datos, el módulo RAID del extremo frontal 174 sirve la petición de almacenamiento escribiendo los datos en la RAID de forma consistente con el nivel de RAID implementado. Un segundo controlador de almacenamiento 152 puede estar localizado bien en
15 el primer servidor 112a o externo al primer servidor 112a. El módulo RAID del extremo frontal 174 permite el establecimiento de RAID de los controladores de almacenamiento 152 de modo que los controladores de almacenamiento 152 son visibles para el cliente 114, 114a que envía la petición de almacenamiento. Esto permite el desmontaje y la información de paridad a gestionar por el controlador de almacenamiento 152 designado como maestro o por el cliente 114, 114a.
En otra realización, el aparato de SAN en servidor incluye un módulo de RAID del extremo posterior 176 que configura dos o más dispositivos de almacenamiento de datos 154 controlados por un controlador de almacenamiento 152 como una RAID. Donde la petición de almacenamiento desde el cliente 114 comprende una petición de almacenar datos, el módulo RAID del extremo posterior 176 sirve la petición de almacenamiento
25 escribiendo los datos en la RAID de forma consistente con el nivel de RAID implementado de modo que los dispositivos de almacenamiento 154 configurados como una RAID se acceden por el cliente 114, 114a como un dispositivo de almacenamiento de datos único 154 controlado por el primer controlador de almacenamiento 152. Esta implementación de RAID permite la estructuración en RAID de dispositivos de almacenamiento de datos 154 controlados por un controlador de almacenamiento 152 en un modo en el que la estructuración en RAID es transparente para cualquier cliente 114, 114a que accede a los dispositivos de almacenamiento de datos 154. En otra realización, tanto la RAID del extremo frontal como la RAID del extremo posterior se implementan para tener una RAID multinivel. Un experto en la materia reconocerá otros modos de estructurar en RAID los dispositivos de almacenamiento 154 consistentes con el controlador de almacenamiento de estado sólido 104 y al almacenamiento de estado sólido asociado 110 descrito en este documento.
35 Aparato para el almacenamiento de objetos gestionados por el controlador
La Figura 2A es un diagrama de bloques que ilustra una realización de un aparato 200 para la gestión de objetos en un dispositivo de almacenamiento de acuerdo con la presente invención. El aparato 200 incluye un controlador de almacenamiento 152 con un módulo receptor de peticiones de objetos 260, un módulo de análisis 262, un módulo de ejecución de comandos 264, un módulo de índices de objetos 266, un módulo de poner en cola las peticiones de objetos 268, un empaquetador 302 con un módulo de mensajes 270, y un módulo de reconstrucción de índices de objetos 272, que se describen a continuación.
45 El controlador de almacenamiento 152 es sustancialmente similar al controlador de almacenamiento 152 descrito en relación con el sistema 101 de la Figura 1B y puede ser el controlador de dispositivos de almacenamiento de estado sólido 202 descrito en relación con la Figura 2. El aparato 200 incluye un módulo receptor de peticiones de objetos 260 que recibe una petición de objetos desde uno o más dispositivos solicitantes 155. Por ejemplo, para una petición de almacenar datos de un objeto, el controlador de almacenamiento 152 almacena el segmento de datos como un paquete de datos en un dispositivo de almacenamiento de datos 154 acoplado al controlador de almacenamiento
152. La petición de objetos está usualmente dirigida a un segmento de datos almacenado o que se va a almacenar en uno o más paquetes de datos de objetos para un objeto gestionado por el controlador de almacenamiento 152. La petición de objetos puede solicitar que el controlador de almacenamiento 152 cree un objeto a rellenar más tarde con datos mediante una petición de objeto posterior que pueden usar una transferencia de acceso directo a memoria
55 local o remota ("DMA", "RDMA").
En una realización, la petición de objetos es una petición de escritura para escribir todo o parte de un objeto para un objeto creado anteriormente. En un ejemplo, la petición de escritura es para un segmento de datos de un objeto. Los otros segmentos de datos del objeto se pueden escribir en el dispositivo de almacenamiento 150 o en los otros dispositivos de almacenamiento. En otro ejemplo, la petición de escritura es para un objeto completo. En otro ejemplo, la petición de objetos es para leer datos desde un segmento de datos gestionado por el controlador de almacenamiento 152. En otra realización más, la petición de objetos es una petición de borrado, para borrar un segmento de datos u objeto.
65 Ventajosamente, el controlador de almacenamiento 152 puede aceptar peticiones de escritura que hacen más que escribir un nuevo objeto o añadir datos a un objeto existente. Por ejemplo, una petición de escritura recibida por el módulo receptor de peticiones de objetos 260 puede incluir una petición de añadir datos por delante de los datos almacenados por el controlador de almacenamiento 152, insertar datos dentro de los datos almacenados, o reemplazar un segmento de datos. El índice de objetos mantenido por el controlador de almacenamiento 152 proporciona la flexibilidad requerida para estas operaciones de escritura complejas que no está disponible en otros
imagen15
5 controladores de almacenamiento, pero actualmente está disponible solo fuera de los controladores de almacenamiento en los sistemas de ficheros de servidores y otros ordenadores.
El aparato 200 incluye un módulo de análisis 262 que analiza la petición de objetos dentro de uno o más comandos. Usualmente, el módulo de análisis 262 analiza la petición de objetos dentro de uno o más memorias intermedias. Por ejemplo, se pueden analizar uno o más comandos en la petición de objetos dentro de una memoria intermedia de comandos. Usualmente el módulo de análisis 262 prepara una petición de objeto de modo que la información en la petición de objeto se puede entender y ejecutar por el controlador de almacenamiento 152. Un experto en la materia reconocerá otras funciones de un módulo de análisis 262 que analiza una petición de objetos dentro de uno
o más comandos.
15 El aparato 200 incluye un módulo de ejecución de comandos 264 que ejecuta los comandos analizados de la petición de objetos. En una realización, el módulo de ejecución de comandos 264 ejecuta un comando. En otra realización, el módulo de ejecución de comandos 264 ejecuta múltiples comandos. Usualmente, el módulo de ejecución de comandos 264 interpreta un comando analizado desde la petición de objetos, tal como un comando de escritura, y crea a continuación, colas y ejecuta subcomandos. Por ejemplo, un comando de escritura analizado a partir de una petición de objetos puede dirigir el controlador de almacenamiento 152 para almacenar múltiples segmentos de datos. La petición de objetos puede incluir también los atributos requeridos tales como el cifrado, la compresión, etc. El módulo de ejecución de comandos 264 puede dirigir el controlador de almacenamiento 152 para comprimir los segmentos de datos, cifrar los segmentos de datos, crear uno más paquetes de datos y las cabeceras
25 asociadas para cada paquete de datos, cifrar los paquetes de datos con una clave de cifrado de medios, añadir el código de corrección de errores, y almacenar los paquetes de datos en una localización específica. Almacenar los paquetes de datos en una localización específica y otros subcomandos también se pueden descomponer en otros subcomandos de nivel inferior. Un experto en la materia reconocerá otros modos en los que el módulo de ejecución de comandos 264 puede ejecutar uno o más comandos analizados a partir de una petición de objetos.
El aparato 200 incluye un módulo de índices de objetos 266 que crea una entrada de objetos en un índice de objetos en respuesta al controlador de almacenamiento 152 creando un objeto o almacenando el segmento de datos del objeto. Usualmente, el controlador de almacenamiento 152 crea un paquete de datos a partir del segmento de datos y la localización de donde se almacena el paquete de datos se asigna en el momento que se almacena el segmento
35 de datos. Los metadatos de objetos recibidos con un segmento de datos o una parte de la petición de objeto se pueden almacenar en un modo similar.
El módulo de índices de objetos 266 crea una entrada de objetos dentro de un índice de objetos en el momento que se almacena el paquete de datos y se asigna la dirección física del paquete de datos. La entrada de objetos incluye un mapeo entre un identificador lógico del objeto y una o más direcciones físicas correspondientes a dónde almacenó el controlador de almacenamiento 152 uno o más paquetes de datos y cualesquiera paquetes de metadatos de objetos. En otra realización, la entrada en el índice de objetos se crea antes de que se almacenen los paquetes de datos del objeto. Por ejemplo, si el controlador de almacenamiento 152 determina una dirección física de dónde están los paquetes de datos que se van a almacenar más pronto, el módulo del índice de objetos 266
45 puede crear una entrada en el índice de objetos más temprano.
Usualmente, cuando una petición de objetos o grupo de peticiones de objetos da como resultado que se modifica un objeto o segmento de datos, posiblemente durante una operación de leer -modificar -escribir, el módulo de índices de objetos 266 actualiza una entrada en el índice de objetos correspondiente al objeto modificado. En una realización, el índice de objetos crea un nuevo objeto y una nueva entrada en el índice de objetos para el objeto modificado. Usualmente, cuando se modifica solo una porción de un objeto, el objeto incluye los paquetes de datos modificados y algunos paquetes de datos que permanecen sin cambiar. En ese caso, la nueva entrada incluye un mapeo a los paquetes de datos sin cambiar y donde estaban escritos originalmente y a los objetos modificados escritos en una nueva localización.
55 En otra realización, cuando el módulo receptor de peticiones de objetos 260 recibe una petición de objetos que incluye un comando que borra un bloque de datos u otros elementos de objetos, el controlador de almacenamiento 152 puede almacenar al menos un paquete tal como un paquete de borrado que incluye información que incluye una referencia al objeto, la relación con el objeto, y el tamaño del bloque de datos borrado. Adicionalmente, puede indicar además que los elementos del objeto borrado se rellenen con ceros. De este modo, la petición de borrar el objeto se puede usar para emular la memoria o almacenamiento real que se borra y realmente tiene una porción de la memoria / almacenamiento apropiado realmente almacenado con ceros en las células de la memoria / almacenamiento.
65 Ventajosamente, la creación de un índice de objetos con las entradas que indican el mapeo entre los segmentos de datos y los metadatos de un objeto permite al controlador de almacenamiento 152 manejarse de forma autónoma y gestionar los objetos. Esta capacidad permite una gran cantidad de flexibilidad para almacenar datos en el dispositivo de almacenamiento 150. Una vez que se crea la entrada de índices para el objeto, se puede dar servicio a peticiones de objetos posteriores con respecto al objeto de forma eficiente por el controlador de almacenamiento
imagen16
152.
5 En una realización, el controlador de almacenamiento 152 incluye un módulo de puesta en cola de las peticiones de objetos 268 que pone en cola una o más peticiones de objetos recibidas por el módulo receptor de peticiones de objetos 260 antes de analizarse por el módulo de análisis 262. El módulo de puesta en cola de las peticiones de objetos 268 permite flexibilidad entre cuándo se recibe la petición del objeto y cuándo se ejecuta.
10 En otra realización, el controlador de almacenamiento 152 incluye un empaquetador 302 que crea uno o más paquetes de datos a partir del uno o más segmentos de datos donde los paquetes de datos se dimensionan para el almacenamiento en el dispositivo de almacenamiento de datos 154. El empaquetador 302 se describe a continuación con más detalle con respecto a la Figura 3. El empaquetador 302 incluye, en una realización, un
15 módulo de mensajes 270 que crea una cabecera para cada paquete. La cabecera incluye un identificador de paquete y una longitud de paquete. El identificador de paquete relaciona el paquete con el objeto para el que se formó el paquete.
En una realización, cada paquete incluye un identificador de paquete que está auto-contenido ya que el identificador
20 de paquete contiene información adecuada para identificar el objeto y la relación dentro del objeto de los elementos del objeto contenidos dentro del paquete. Sin embargo, una realización más eficiente preferida es almacenar los paquetes en contenedores.
Un contenedor es una construcción de datos que facilita un almacenamiento más eficiente de paquetes y ayuda a
25 establecer la relación entre un objeto y los paquetes de datos, los paquetes de metadatos y otros paquetes relacionados con el objeto que se almacenan dentro del contenedor. Obsérvese que el controlador de almacenamiento 152 usualmente trata los metadatos de objetos recibidos como parte de un objeto y los segmentos de datos en un modo similar. Usualmente "paquete" se puede referir a un paquete de datos que comprende datos, un paquete de metadatos que comprende metadatos, u otro paquete de otro tipo de paquete. Un objeto se puede
30 almacenar en uno o más contenedores y un contenedor usualmente incluye paquetes para no más de un objeto único. Un objeto se puede distribuir entre múltiples contenedores. Usualmente un contenedor se almacena dentro de un bloque de borrado lógico único (división de almacenamiento) y usualmente nunca se divide entre bloques lógicos de borrado.
35 Un contenedor, en un ejemplo, se puede dividir entre dos o más páginas lógicas / virtuales. Un contenedor se identifica por una etiqueta de contenedor que asocia ese contenedor con un objeto. Un contenedor puede contener cero para muchos paquetes y los paquetes dentro de un contenedor son usualmente de un objeto. Un paquete puede ser de muchos tipos de elementos de objetos, incluyendo elementos de atributos de objetos, elementos de datos de objetos, elementos de índices de objetos y similares. Se pueden crear paquetes híbridos que incluyen más
40 de un tipo de elemento de objeto. Cada uno de los paquetes puede contener de cero para muchos elementos del mismo tipo de elemento. Cada paquete dentro de un contenedor usualmente contiene un identificador único que identifica la relación con el objeto.
Cada paquete está asociado con un contenedor. En una realización preferida, los contenedores están limitados a un
45 bloque de borrado de modo que al comienzo o cerca del comienzo de cada bloque de borrado se puede encontrar un paquete de contenedor. Esto ayuda a limitar las pérdidas de datos para un bloque de borrado con una cabecera de paquete corrompido. En esta realización, si el índice de objeto no está disponible y la cabecera del paquete dentro del bloque de borrado está corrompida, los contenidos desde la cabecera del paquete corrompido hasta el final del bloque de borrado se pueden perder porque posiblemente no hay ningún mecanismo fiable para determinar
50 la localización de los siguientes paquetes. En otra realización, un enfoque más fiable es tener un contenedor limitado a una frontera de página. Esta realización, requiere más código de control para la cabecera. En otra realización, los contenedores pueden fluir a través de la página y las fronteras de bloque de borrado. Esto requiere menos código de control para la cabecera pero se puede perder una mayor porción de los datos si se corrompe una cabecera de paquete. Para estas diversas realizaciones se espera que se use algún tipo de RAID para asegurar adicionalmente
55 la integridad de los datos.
En una realización, el aparato 200 incluye un módulo de reconstrucción de los índices de objetos 272 que reconstruye las entradas en el índice de objetos usando la información procedente de las cabeceras de paquetes almacenadas en el dispositivo de almacenamiento de datos 154. En una realización, el módulo de reconstrucción de 60 índices de objetos 272 reconstruye las entradas del índice de objetos leyendo las cabeceras para determinar el objeto al que pertenece cada paquete y la información de secuencia para determinar a dónde pertenecen en el objeto los datos o metadatos. El módulo de reconstrucción de índices de objetos 272 usa la información de dirección física para cada paquete y la información del sello temporal o de secuencia para crear un mapeo entre las localizaciones físicas de los paquetes y el identificador de objeto y la secuencia de segmento de datos. La 65 información del sello temporal o de secuencia se usa por el módulo de reconstrucción de índices de objetos 272
imagen17
para repetir la secuencia de cambios realizados para el índice y por lo tanto reestablecer usualmente el estado más reciente. En otra realización, el módulo de reconstrucción de índices de objetos 272 localiza los paquetes usando la información de la cabecera de los paquetes junto con la información de los paquetes de contenedor para identificar
5 las localizaciones físicas de los paquetes, el identificador de objetos, y el número de secuencia de cada paquete para reconstruir las entradas en el índice de objetos. En una realización, los bloques de borrado están sellados en el tiempo o se les da un número de secuencia cuando se escriben los paquetes y el sello temporal o la información de secuencia de un bloque de borrado se usa junto con la información recogida desde las cabeceras de contenedor y las cabeceras de paquete para reconstruir el índice de objeto. En otra realización, la información del sello temporal o
10 de secuencia se escribe para un bloque de borrado cuando se recupera el bloque de borrado.
Cuando el índice de objeto se almacena en memoria volátil, un error, una pérdida de potencia u otro problema que cause que el controlador de almacenamiento 152 se caiga sin almacenar el índice de objeto podría ser un problema si el índice de objeto no se puede reconstruir. El módulo de reconstrucción del índice de objeto 272 permite
15 almacenar el índice de objeto en una memoria volátil permitiendo las ventajas de la memoria volátil, tales como un rápido acceso. El módulo de reconstrucción del índice de objeto 272 permite la rápida reconstrucción del índice de objeto de forma autónoma sin dependencia de un dispositivo externo al dispositivo de almacenamiento 150.
En una realización, el índice de objeto en la memoria volátil se almacena periódicamente en un dispositivo de
20 almacenamiento de datos 154. En un ejemplo particular, el índice de objeto, o "metadatos de índice" se almacena periódicamente en un almacenamiento de estado sólido 110. En otra realización, los metadatos de índices se almacenan en un almacenamiento de estado sólido 110n separado del almacenamiento de estado sólido 110a110n-1 que almacena paquetes. Los metadatos de índices se gestionan de forma independiente de los datos y los metadatos de objetos transmitidos desde un dispositivo solicitante 155 y gestionados por el controlador de
25 almacenamiento 152 / controlador del dispositivo de almacenamiento de estado sólido 202. La gestión y el almacenamiento de los metadatos de índices por separado de los otros datos y metadatos de un objeto permite un flujo de datos eficiente sin el controlador de almacenamiento 152 / controlador del dispositivo de almacenamiento de estado sólido 202 que procesa innecesariamente los metadatos de objetos.
30 En una realización, donde una petición de objeto recibida por el módulo de recepción de peticiones de objetos 260 incluye una petición de escritura, el controlador de almacenamiento 152 recibe uno o más segmentos de datos de un objeto desde la memoria de un dispositivo solicitante 155 como una operación de acceso directo a memoria local o remota ("DMA", "RDMA"). En un ejemplo preferido, el controlador de almacenamiento 152 extrae los datos desde la memoria del dispositivo solicitante 155 en uno o más operaciones de DMA o RDMA. En otro ejemplo, el dispositivo
35 solicitante 155 introduce los segmentos de datos al controlador de almacenamiento 152 en una o más operaciones de DMA o RDMA. En otra realización, donde la petición de objetos incluye una petición de lectura, el controlador de almacenamiento 152 transmite uno o más segmentos de datos de un objeto a la memoria del dispositivo solicitante 155 en una o más operaciones de DMA o RDMA. En un ejemplo preferido, el controlador de almacenamiento 152 introduce datos a la memoria del dispositivo solicitante 155 en una o más operaciones de DMA o RDMA. En otro
40 ejemplo, el dispositivo solicitante 155 introduce datos desde el controlador de almacenamiento 152 en una o más operaciones de DMA o RDMA. En otro ejemplo, el controlador de almacenamiento 152 extrae conjuntos de peticiones de comandos de objetos desde la memoria del dispositivo solicitante 155 en una o más operaciones de DMA o DRMA. En otro ejemplo, el dispositivo solicitante 155 introduce conjuntos de peticiones de comandos de objetos al controlador de almacenamiento 152 en una o más operaciones de DMA o RDMA.
45 En una realización, el controlador de almacenamiento 152 emula el almacenamiento de bloques y un objeto comunicado entre el dispositivo solicitante 155 y el controlador de almacenamiento 152 comprende uno o más bloques de datos. En una realización, el dispositivo solicitante 155 incluye una unidad de modo que el dispositivo de almacenamiento 150 aparece como un dispositivo de almacenamiento de bloques. Por ejemplo, el dispositivo
50 solicitante 155 puede enviar un bloque de datos de cierto tamaño junto con una dirección física de donde quiere el dispositivo solicitante 155 que se almacene el bloque de datos. El controlador de almacenamiento 152 recibe el bloque de datos y usa la dirección del bloque físico transmitido con el bloque de datos o la transformación de la dirección de bloque físico como un identificador de objeto. El controlador de almacenamiento 152 almacena a continuación el bloque de datos como un objeto o segmento de datos de un objeto empaquetando el bloque de
55 datos y almacenando el bloque de datos a voluntad. El módulo de índices de objetos 266 crea a continuación una entrada en el índice de objeto usando el identificador de objeto basado en bloques físicos y la localización física real donde el controlador de almacenamiento 152 almacenó los paquetes de datos comprendiendo los datos desde el bloque de datos.
60 En otra realización, el controlador de almacenamiento 152 emula el almacenamiento de bloques aceptando objetos de bloques. Un objeto de bloque puede incluir uno o más bloques de datos en una estructura de bloques. En una realización, el controlador de almacenamiento 152 trata el objeto de bloques como cualquier otro objeto. En otra realización, un objeto puede representar un dispositivo de bloque entero, una partición de un dispositivo de bloques,
o algún otro sub-elemento lógico o físico de un dispositivo de bloques incluyendo una pista, sector, canal y similares. 65 Es de notar en particular la capacidad de re-mapear un grupo de RAID de dispositivos de bloque para un objeto que soporta una diferente construcción de RAID tal como una RAID progresiva. Un experto en la materia reconocerá otros mapeos de dispositivos de bloques tradicionales o futuros para los objetos.
imagen18
Dispositivo de almacenamiento de estado sólido
5 La Figura 2B es un diagrama de bloques esquemático que ilustra una realización 201 de un controlador de dispositivo de almacenamiento de estado sólido 202 que incluye una conducción de datos de escritura 106 y una conducción de datos de lectura 108 en un dispositivo de almacenamiento de estado sólido 102 de acuerdo con la presente invención. El controlador del dispositivo de almacenamiento de estado sólido 202 puede incluir varios controladores de almacenamiento de estado sólido 0 -N 104a -n, controlando cada uno el almacenamiento de estado sólido 110. En la realización representada, se muestran dos controladores de estado sólido: el controlador de estado sólido 0 140a y el controlador de almacenamiento de estado sólido N 104n, y cada uno controla el almacenamiento de estado sólido 110a -n. En la realización representada, el controlador de almacenamiento de estado sólido 0 140a controla un canal de datos de modo que el almacenamiento de estado sólido conectado 110a
15 almacena los datos. El controlador de almacenamiento de estado sólido N 104n controla un canal de metadatos de índices asociado con los datos almacenados y el almacenamiento de estado sólido asociado 110n almacena los metadatos de índices. En una realización alternativa, el controlador del dispositivo de almacenamiento de estado sólido 202 incluye un controlador de estado sólido único 104a con un almacenamiento de estado sólido único 110a. En otra realización hay una pluralidad de controladores de almacenamiento de estado sólido 104a -n y el almacenamiento de estado sólido asociado 110a -n. En una realización, uno o más controladores de estado sólido 104a -104n -1, acopados a su almacenamiento de estado sólido asociado 110a -110n -1 controlan los datos mientras que al menos un controlador de almacenamiento de estado sólido 104n, acoplado a su almacenamiento de estado sólido asociado 110n, controla los metadatos de índices.
25 En una realización, al menos un controlador de estado sólido 104 es una red de puertas programable en campo ("FPGA") y las funciones de controlador se programan dentro de la FPGA. En una realización particular, la FPGA es una FPGA de Xinlix®. En otra realización, el controlador de almacenamiento de estado sólido 104 comprende componentes específicamente diseñados como un controlador de almacenamiento de estado sólido 104, tal como un circuito integrado de aplicación específica ("ASIC") o una solución de lógica a medida. Cada uno de los controladores de almacenamiento de estado sólido 104, usualmente incluye una conducción de datos de escritura 106 y una conducción de datos de lectura 108, que se describen además con relación a la Figura 3. En otra realización, al menos un controlador de almacenamiento de estado sólido 104 está constituido de una combinación de FPGA, ASIC y componentes de lógica a medida.
35 Almacenamiento de estado sólido
El almacenamiento de estado sólido 110 es una red de elementos de almacenamiento de estado sólido no volátiles 216, 218, 220, dispuestos en bancos 214 y accedidos en paralelo a través de un bus de entrada / salida ("I/O") de almacenamiento bidireccional 210. El bus de almacenamiento I/O 210, en una realización, es capaz de una comunicación unidireccional en un momento cualquier. Por ejemplo, cuando se están escribiendo datos en el almacenamiento de estado sólido 110, los datos no se pueden leer desde el almacenamiento de estado sólido 110. En otra realización, los datos pueden fluir en ambas direcciones simultáneamente. Sin embargo, el modo bidireccional, como se usa en este documento con respecto a un bus de datos, se refiere a una trayectoria de datos que puede tener el flujo de datos en una única dirección en un momento, pero cuando se para el flujo de datos en
45 una dirección sobre el bus de datos bidireccional, los datos pueden fluir en la dirección opuesta sobre el bus de datos bidireccional.
Un elemento de almacenamiento de estado sólido (por ejemplo, SSS 0.0 216a) está usualmente configurado como un chip (un empaquetamiento de uno o más dados) o un dado sobre el circuito impreso. Como se representa, un elemento de almacenamiento de estado sólido (por ejemplo, 216a) opera independientemente o semiindependientemente de otros elementos de almacenamiento de estado sólido (por ejemplo, 218a) incluso si estos diversos elementos están empaquetados juntos en un empaquetamiento de chip, una pila de empaquetamientos de chips, o algunos otros elementos de empaquetamiento. Como se representa, una columna de elementos de almacenamiento de estado sólido 216, 218, 220 se designa como un banco 214. Como se representa, puede haber 55 "n" bancos 214a -n y "m" elementos de almacenamiento de estado sólido 216a -m, 218a -m, 220a -m por banco en una red de nxm elementos de almacenamiento de estado sólido 216, 218, 220, en un almacenamiento de estado sólido 110. En una realización, un almacenamiento de estado sólido 110a incluye veinte elementos de almacenamiento de estado sólido 216, 218, 220 por banco 214 con ocho bancos 214 y un almacenamiento de estado sólido 110n incluye 2 elementos de almacenamiento de estado sólido 216, 218 por banco 214 con un banco
214. En una realización, cada elemento de almacenamiento de estado sólido 216, 218, 220 está comprendido de dispositivos de célula de un nivel único ("SLC"). En otra realización, cada elemento de almacenamiento de estado sólido 216, 218, 220 está comprendido de dispositivos de célula multi-nivel ("MLC").
En una realización, los elementos de almacenamiento de estado sólido para múltiples bancos que comparten una
65 fila 210a del bus (I/O) de almacenamiento común (216b, 218b, 220b) están empaquetados juntos. En una realización, un elemento de almacenamiento de estado sólido 216, 218, 220 puede tener uno o más dados por chip con uno o más chips apilados verticalmente y se puede acceder a cada dado independientemente. En otra realización, un elemento de almacenamiento de estado sólido (por ejemplo, SSS 0.0216a) puede tener uno o más dados virtuales por dado y uno o más dados por chip y uno o más chips apilados verticalmente y se puede acceder a cada dado virtual independientemente. En otra realización, un elemento de almacenamiento de estado sólido SSS 0.
imagen19
5 216a puede tener uno o más dados virtuales por dado y uno o más dados por chip con algunos o todos de uno o más dados apilados verticalmente y se puede acceder a cada dado virtual independientemente.
En una realización, dos datos se apilan verticalmente con cuatro pilas por grupo para formar ocho elementos de almacenamiento (por ejemplo, SSS 0.0-SSS 0.8) 216a -220a, cada uno en un banco separado 214a -n. En otra realización, 20 elementos de almacenamiento (por ejemplo, SSS 0.0 -SSS 20.0) 216 forman un banco virtual 214a de modo que cada uno de los ocho bancos virtuales tiene 20 elementos de almacenamiento (por ejemplo, SSS 0.0 -SSS 20.8) 216, 218, 220. Los datos se envían al almacenamiento de estado sólido 110 sobre el bus I/O del almacenamiento 210 a todos los elementos de almacenamiento de un grupo particular de elementos de almacenamiento (SSS 0.0-SSS 0.8) 216a, 218a, 220a. El bus de control de almacenamiento 212a se usa para
15 seleccionar un banco particular (por ejemplo, el banco 0 -214a) de modo que los datos recibidos sobre el bus I/O de almacenamiento 210 conectado a todos los bancos 214 se escriben solo al banco seleccionado 214a.
En una realización preferida, el bus I/O de almacenamiento 210 está comprendido de uno o más buses I/O independientes ("IIOBa -m" que comprende 210a.a -m, 210n. a -m) en el que los elementos de almacenamiento de estado sólido dentro de cada fila comparten uno de los buses I/O independientes acceden a cada uno de los elementos de almacenamiento de estado sólido 216, 218, 220 en paralelo de modo que todos los bancos 214 se acceden simultáneamente. Por ejemplo, un canal del bus I/O de almacenamiento 210 puede acceder a un primer elemento de almacenamiento de estado sólido 216a, 218a, 220a de cada banco 214a-n simultáneamente. Un segundo canal del bus I/O de almacenamiento 210 puede acceder a un segundo elemento de almacenamiento de
25 estado sólido 216b, 218b, 220b de cada banco 214a-n simultáneamente. Cada fila del elemento de almacenamiento de estado sólido 216, 218, 220 se accede simultáneamente. En una realización, donde los elementos de almacenamiento de estado sólido 216, 218, 220 son multinivel (apilados físicamente), todos los niveles físicos de los elementos de almacenamiento de estado sólido 216, 218, 220 se acceden simultáneamente. Como se usa en este documento "simultáneamente" también incluye un acceso casi simultáneo donde los dispositivos se acceden en intervalos ligeramente diferentes para evitar ruido de conmutación. Simultáneamente como se usa en este contexto se distinguirá de un acceso secuencial o un acceso serie en el que los comandos y/o datos se envían individualmente uno después de otro.
Usualmente, los bancos 214a-n se seleccionan independientemente usando el bus de control de almacenamiento
35 212. En una realización, se selecciona un banco 214 usando una activación de chip o una selección de chip. Cuando tanto la selección de chip como la activación de chip están disponibles, el bus de control de almacenamiento 212 puede seleccionar un nivel de un elemento de almacenamiento de estado sólido multinivel 216, 218, 220. En otras realizaciones se usan otros comandos por el bus de control de almacenamiento 212 para seleccionar individualmente un nivel de un elemento de almacenamiento de estado sólido multinivel 216, 218, 220. Los elementos de almacenamiento de estado sólido 216, 218, 220 también se pueden seleccionar mediante una combinación de control e información de dirección transmitida sobre el bus I/O de almacenamiento 210 y el bus de control de almacenamiento 212.
En una realización, cada elemento de almacenamiento de estado sólido 216, 218, 220 se divide en bloques de
45 borrado y cada bloque de borrado se divide en páginas. Una página típica es de 2000 bytes ("2 kB"). En un ejemplo, un elemento de almacenamiento de estado sólido (por ejemplo SSS 0.0) incluye dos registros y puede programar dos páginas de modo que un elemento de almacenamiento de estado sólido de dos registros 216, 218, 220 tiene una capacidad de 4kB. Un banco 214 de 20 elementos de almacenamiento de estado sólido 216, 218, 220 tendría entonces una capacidad de 80 kB de páginas accedidas con la misma dirección que salen de los canales del bus I/O de almacenamiento 210.
Este grupo de páginas en un banco 214 de elementos de almacenamiento de estado sólido 216, 218, 220 de 80 kB se puede llamar una página virtual. De forma similar, un bloque de borrado de cada elemento de almacenamiento 216a -m de un banco 214a puede estar agrupado para formar un bloque de borrado virtual. En una realización
55 preferida, un bloque de borrado de páginas dentro de un elemento de almacenamiento de estado sólido 216, 218, 220 se borra cuando se recibe un comando de borrado dentro de un elemento de almacenamiento de estado sólido 216, 218, 220. Mientras que el tamaño y el número de bloques de borrado, páginas, niveles u otras divisiones lógicas y físicas dentro de un elemento de almacenamiento de estado sólido 216, 218, 220 que se espera que cambien con el tiempo con los adelantos en la tecnología, se espera que muchas realizaciones consistentes con las nuevas configuraciones sean posibles y sean consistentes con la descripción general en este documento.
Usualmente, cuando se escribe un paquete a una localización particular dentro de un elemento de almacenamiento de estado sólido 216, 218, 220, en el que el paquete se intenta escribir a una localización dentro de una página particular que es específica de un bloque de borrado particular de un elemento particular de un banco particular, se 65 envía una dirección física sobre el bus I/O de almacenamiento 210 y se sigue por el paquete. La dirección física contiene suficiente información para el elemento de almacenamiento de estado sólido 216, 218, 220 para dirigir el
imagen20
paquete a la localización designada dentro de la página. Como todos los elementos de almacenamiento en una fila de elementos de almacenamiento (por ejemplo SSS 0.0 -SSS 0.N 216a, 218a, 220a) se acceden simultáneamente por el bus apropiado dentro del bus I/O de almacenamiento 210a.a, para alcanzar la página adecuada y evitar escribir el paquete de datos a páginas direccionadas de forma similar en la fila de elementos de almacenamiento
5 (SSS 0.0 -SSS 0.N 216a, 218a, 220a), el banco 214a que incluye el elemento de almacenamiento de estado sólido SSS 0.0 216a con la página correcta donde se va a escribir el paquete de datos se selecciona simultáneamente por el bus de control de almacenamiento 212.
De forma similar, un comando de lectura que viaja sobre el bus I/O de almacenamiento 210 requiere un comando
10 simultáneo sobre el bus de control de almacenamiento 212 para seleccionar un banco único 214a y la página apropiada dentro del banco 214a. En una realización preferida, un comando de lectura lee una página entera, y debido a que hay múltiples elementos de almacenamiento de estado sólido 216, 218, 220 en paralelo en un banco 214, se lee una página virtual entera con un comando de lectura. Sin embargo, el comando de lectura se puede descomponer en sub-comandos, como se explicará más adelante con respecto a la intercalación de bancos.
15 También se puede acceder una página virtual en una operación de escritura.
Se puede enviar un comando de borrar un bloque de borrado para borrar un bloque de borrado sobre el bus I/O de almacenamiento 210 con una dirección del bloque de borrado particular para borrar el bloque de borrado particular. Usualmente se puede enviar un comando de borrar un bloque de borrado sobre las trayectorias en paralelo del bus 20 I/O de almacenamiento 210 para borrar un bloque de borrado virtual, cada uno con una dirección de bloque de borrado particular para borrar un bloque de borrado particular. Simultáneamente un banco particular (por ejemplo el banco 0 214a) se selecciona sobre el bus de control de almacenamiento 212 para impedir el borrado de bloques de borrado direccionados de forma similar en todos los bancos (bancos 1 -N 214b -n). También se pueden mandar otros comandos a una localización particular usando una combinación del bus I/O de almacenamiento 210 y el bus
25 de control de almacenamiento 212. Un experto en la materia reconocerá otros modos de seleccionar una localización particular de almacenamiento usando el bus I/O de almacenamiento bidireccional 210 y el bus de control de almacenamiento 212.
En una realización. Los paquetes se escriben secuencialmente en el almacenamiento de estado sólido 110. Por
30 ejemplo, los paquetes se hacen fluir hacia las memorias intermedias de escritura de almacenamiento de un banco 214a de los elementos de almacenamiento 216 y cuando las memorias intermedias están llenas, se programan los paquetes en una página virtual designada. Los paquetes rellenan a continuación las memorias intermedias de escritura de almacenamiento y, cuando están llenas, los paquetes se escriben en la siguiente página virtual. La siguiente página virtual puede estar en el mismo banco 214a o en otro banco (por ejemplo 214b). Esto proceso
35 continúa, de página virtual en página virtual, usualmente hasta que el bloque de borrado virtual está relleno. En otra realización, el flujo puede continuar a través de fronteras de bloque de borrado virtuales continuando el proceso, un bloque de borrado virtual tras otro bloque de borrado virtual.
En una operación de lectura, modificación, escritura los paquetes de datos asociados con el objeto se localizan y se
40 leen en una operación de lectura. Los segmentos de datos del objeto modificado que se ha modificado no se escriben en la localización de la que se leen. En cambio, los segmentos de datos modificados se convierten de nuevo a paquetes de datos y a continuación se escriben en la siguiente localización disponible en la página virtual que se está escribiendo actualmente. Las entradas al índice de objetos para los paquetes de datos respectivos se modifican para apuntar a los paquetes que contienen los segmentos de datos modificados. La entrada o entradas en
45 el índice de objetos para los paquetes de datos asociados con el mismo objeto que no se ha modificado incluirán punteros a la localización original de los paquetes de datos sin modificar. De este modo, si se mantiene el objeto original, por ejemplo para mantener una versión anterior del objeto, el objeto original tendrá punteros en el índice de objetos para todos los paquetes de datos como se escribieron originalmente. El nuevo objeto tendrá punteros en el índice de objeto a algunos paquetes de datos originales y punteros a los paquetes de datos modificados en la página
50 virtual que se ha escrito actualmente.
En una operación de copia, el índice de objetos incluye una entrada para el objeto original mapeado a varios paquetes almacenados en el almacenamiento de estado sólido 110. Cuando se realiza una copia, se crea un nuevo objeto y se crea una nueva entrada en el índice de objetos mapeando el nuevo objeto a los paquetes originales. El
55 nuevo objeto también se escribe al almacenamiento de estado sólido 110 con su localización mapeada a la nueva entrada en el índice de objetos. Los paquetes del nuevo objeto se pueden usar para identificar los paquetes dentro del objeto original al que se refiere en caso de que se hayan realizado cambios en el objeto original que no se han propagado a la copia y el índice de objeto se pierde o se corrompe.
60 Ventajosamente, la escritura secuencial de paquetes facilita un uso más frecuente del almacenamiento de estado sólido 110 y permite al controlador del dispositivo de almacenamiento sólido 202 monitorizar los puntos calientes del almacenamiento y el nivel de uso de las diversas páginas virtuales en el almacenamiento de estado sólido 110. La escritura secuencial de paquetes también facilita un sistema potente, de recogida de basura eficiente, que se describe con detalle más adelante. Un experto en la materia reconocerá otros beneficios del almacenamiento
65 secuencial de los paquetes de datos.
imagen21
Controlador del dispositivo de almacenamiento de estado sólido
En diversas realizaciones, el controlador del dispositivo de almacenamiento de estado sólido 202 también incluye un bus de datos 204, un bus local 206, un controlador de la memoria intermedia 208, las memorias intermedias 0 -N
5 222a -n, un controlador maestro 224, un controlador de acceso directo a memoria ("DMA") 226, un controlador de memoria 228, una red de memoria dinámica 230, una red de memoria aleatoria estática 232, un controlador de gestión 234, un bus de gestión 236, un puente 238 para un bus del sistema 240 y lógica diversa 242, que se describe más adelante. En otras realizaciones, el bus del sistema 240 está acoplado a una o más tarjetas de interfaz de red ("NIC") 244, algunas de las cuales pueden incluir controladores de DMA remoto ("RDMA") 246, una o más unidades de procesamiento central ("CPU") 248, uno o más controladores de memoria externos 250 y redes de memorias externas asociadas 252, uno o más controladores de almacenamiento 254, controladores de pares 256, y procesadores específicos de la aplicación 258 que se describen más adelante. Los componentes 244 -258 conectados al bus del sistema 240 pueden estar localizados en el ordenador 112 o pueden estar en otros dispositivos.
15 Usualmente, el controlador del almacenamiento de estado sólido 104 comunica los datos al almacenamiento de estado sólido 110 sobre un bus I/O de almacenamiento 210. En una realización típica donde el almacenamiento de estado sólido está dispuesto en bancos 214 y cada banco 214 incluye múltiples elementos de almacenamiento 216, 218, 220 accedidos en paralelo, el bus I/O de almacenamiento 210 es una red de buses, uno para cada fila de elementos de almacenamiento 216, 218, 220 que abarca los bancos 214. Como se usa en este documento, el término "bus I/O de almacenamiento" se puede referir a un bus I/O de almacenamiento 210 o una red de buses de datos independientes 204. En una red preferida, cada bus I/O de almacenamiento 210 que accede a una fila de elementos de almacenamiento (por ejemplo, 216a, 218a, 220a) puede incluir un mapeo de lógico a físico para las divisiones del almacenamiento (por ejemplo, los bloques de borrado) accedidos en una fila de elementos de
25 almacenamiento 216a, 218a, 220a. Este mapeo permite re-mapear una dirección lógica mapeada a una dirección física de una división del almacenamiento a una división de almacenamiento diferente si falla la primera división de almacenamiento, falla parcialmente, es inaccesible o tiene algún otro problema. El re-mapeo se explica adicionalmente en relación con el módulo de re-mapeo 430 en las Figuras 4A y 4B.
Los datos también se pueden comunicar a los controladores de almacenamiento de estado sólido 104 desde un dispositivo solicitante 155 a través del bus del sistema 240, el puente 238, el bus local 206, las memorias intermedias 222, y finalmente sobre un bus de datos 204. El bus de datos 204 usualmente está conectado a una o más memorias intermedias 222a -n controladas con un controlador de memoria intermedia 208. El controlador de memorias intermedias 208 usualmente controla la transferencia de datos desde el bus local 206 a las memorias
35 intermedias 222 y a través del bus de datos 204 a la memoria intermedia de entrada de la conducción 306 y la memoria intermedia de salida 330. El controlador de la memoria intermedia 208 usualmente controla cómo se pueden almacenar temporalmente en una memoria intermedia 222 los datos que llegan desde un dispositivo solicitante 155 y a continuación transmitirlos sobre un bus de datos 204, o viceversa, para tener en cuenta los diferentes dominios de reloj, para impedir colisiones de datos, etc. El controlador de la memoria intermedia 208 usualmente funciona en conjunción con el controlador maestro 224 para coordinar los flujos de datos. A medida que llegan los datos, los datos que llegan sobre el bus del sistema 240, se transfieren al bus local 206 a través de un puente 238.
Usualmente, los datos se transfieren desde el bus local 206 a una o más memorias intermedias de datos 222 según
45 se dirigen por el controlador maestro 224 y el controlador de la memoria intermedia 208. Los datos fluyen a continuación desde las memorias intermedias 222 al bus de datos 204, a través de un controlador de estado sólido 104 y sobre el almacenamiento de estado sólido 110 tal como una memoria flash NAND u otro medio de almacenamiento. En una realización preferida, los datos y los metadatos asociados fuera de banda ("metadatos del objeto") que llegan con los datos se comunican usando uno o más canales de datos que comprenden uno o más controladores de almacenamiento de estado sólido 104a -104n-1 y almacenamiento de estado sólido asociado 110a -110n-1 mientras que el menos un canal (controlador de almacenamiento de estado sólido 104n, almacenamiento de estado sólido 110n) se dedica a los metadatos en banda, tales como la información de índices y otros metadatos generados internamente para el dispositivo de almacenamiento de estado sólido 102.
55 El bus local 206 es usualmente un bus bidireccional o un conjunto de buses que permiten la comunicación de datos y comandos entre dispositivos internos al controlador del dispositivo de almacenamiento de estado sólido 202 y entre los dispositivos internos al dispositivo de almacenamiento de estado sólido 102 y los dispositivos 244 -258 conectados al bus del sistema 240. El puente 238 facilita la comunicación entre el bus local 206 y el bus del sistema
240. Un experto en la materia reconocerá otras realizaciones tales como las estructuras de anillo o configuraciones de estrella conmutadas y las funciones de los buses 240, 206, 204, 210 y los puentes 238.
El bus del sistema 240 es usualmente un bus de un ordenador 112 u otro dispositivo en el que el dispositivo de almacenamiento de estado sólido 102 está instalado o conectado. En una realización, el bus del sistema 240 puede ser un bus PCI-e, un bus de Conexión de Tecnología Avanzada Serie ("ATA serie"), un bus ATA en paralelo, o 65 similares. En otra realización, el bus del sistema 240 es un bus externo tal como una interfaz de un pequeño sistema de ordenadores ("SCSI"), FireWire, Fiber Channel, USB, PCIe-AS o similares. El dispositivo de almacenamiento de
imagen22
estado sólido 102 puede estar empaquetado para fijarse internamente a un dispositivo o como un dispositivo conectado externamente.
El controlador del dispositivo de almacenamiento de estado sólido 202 incluye un controlador maestro 224 que
5 controla las funciones de más alto nivel dentro del dispositivo de almacenamiento de estado sólido 102. El controlador maestro 224, en diversas realizaciones, controla el flujo de datos interpretando las peticiones de objetos y otras peticiones, dirige la creación de índices para mapear los identificadores de objetos asociados con datos a localizaciones físicas de datos asociados, coordinando peticiones de DMA, etc. Muchas de las funciones descritas en este documento se controlan completamente o en parte por el controlador maestro 224.
En una realización, el controlador maestro 224 usa controladores incorporados. En otra realización, el controlador maestro 224 usa la memoria local tal como una red de memoria dinámica 230 (memoria de acceso aleatorio dinámica "DRAM"), una red de memoria estática 232 (memoria de acceso aleatorio estática "SRAM"), etc. En una realización, la memoria local se controla usando el controlador maestro 224. En otra realización, el controlador
15 maestro 224 accede a la memoria local a través de un controlador de memoria 228. En otra realización, el controlador maestro 224 se ejecuta en un servidor Linux y puede soportar diversas interfaces de servidor común, tales como el World Wide Web, el lenguaje de marcación de hipertexto ("HTML"), etc. En otra realización, el controlador maestro 224 usa un nano-procesador. El controlador maestro 224 se puede construir usando lógica programable o estándar, o cualquier combinación de tipos de los controladores listados anteriormente. Un experto en la materia reconocerá muchas realizaciones para el controlador maestro 224.
En una realización, donde el controlador de almacenamiento 152 / controlador de dispositivo de almacenamiento de estado sólido 202 gestiona múltiples dispositivos de almacenamiento de datos / almacenamiento de estado sólido 110a-n, el controlador maestro 224 divide la carga de trabajo entre controladores internos, tales como los
25 controladores de almacenamiento de estado sólido 104a -n. Por ejemplo, el controlador maestro 224 puede dividir un objeto a escribir en los dispositivos de almacenamiento de datos (por ejemplo el almacenamiento de estado sólido 110a -n) de modo que una porción del objeto se almacena sobre cada uno de los dispositivos de almacenamiento de datos conectados. Esta característica es una mejora de funcionamiento que permite un almacenamiento y acceso más rápidos a un objeto. En una realización, el controlador maestro 224 se implementa usando una FPGA. En otra realización, el firmware dentro del controlador maestro 224 se puede actualizar a través del bus de gestión 236, el bus del sistema 240 sobre una red conectada a una NIC 244 u otro dispositivo conectado al bus del sistema 240.
En una realización, el controlador maestro 224, que gestiona objetos, emula el almacenamiento de bloques de modo
35 que un ordenador 112 u otro dispositivo conectado al dispositivo de almacenamiento 152 / dispositivo de almacenamiento de estado sólido 102 ve el dispositivo de almacenamiento de estado sólido 102 como un dispositivo de almacenamiento de bloques y envía datos a una dirección física específica en el dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102. A continuación el controlador maestro 224 divide los bloques y almacena los bloques de datos como si fuesen objetos. El controlador maestro 224 mapea a continuación los bloques y las direcciones físicas enviadas con el bloque a las localizaciones reales determinadas por el controlador maestro 224. El mapeo se almacena en el índice de objetos. Usualmente, para la emulación de bloques, una interfaz de programa de aplicación ("API") de dispositivos de bloques se proporciona en una unidad en el ordenador 112, en el cliente 114, o en otro dispositivo que desee usar el dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102 como un dispositivo de almacenamiento de bloques.
45 En otra realización, el controlador maestro 224 coordina con los controladores de NIC 244 y los controladores de RDMA incorporados 246 para entregar las transferencias de datos de RDMA justo a tiempo y los conjuntos de comandos. El controlador de NIC 244 puede estar oculto detrás de un puerto no transparente para posibilitar el uso de las unidades del cliente. También, una unidad sobre un cliente 114 puede tener acceso a la red de ordenadores 116 a través de una unidad de memoria de I/O usando una API de pila normalizada y operando en conjunción con las NIC 244.
En una realización, el controlador maestro 224 es también un controlador de la red redundante de unidades independientes ("RAID"). Donde el dispositivo de almacenamiento de datos / dispositivo de almacenamiento de
55 estado sólido 102 está conectado en red con uno o más de otros dispositivos de almacenamiento de datos / dispositivos de almacenamiento de estado sólido 102, el controlador maestro 224 puede ser un controlador de RAID para una RAID de nivel único, una RAID multinivel, una RAID progresiva, etc. El controlador maestro 224 también permite almacenar algunos objetos en una red de RAID y almacenar otros objetos sin RAID. En otra realización, el controlador maestro 224 puede ser un elemento de controlador de RAID distribuido. En otra realización, el controlador maestro 224 puede comprender muchas RAID, RAID distribuidas y otras funciones como se describe en otras partes.
En una realización, el controlador maestro 224 coordina con gestores de red únicos o redundantes (por ejemplo, conmutadores) para establecer un enrutamiento, para equilibrar el uso de ancho de banda, conmutación por error, 65 etc. En otra realización, el controlador maestro 224 coordina con lógica específica de la aplicación integrada (a través del bus local 206) y software de la unidad asociada. En otra realización, el controlador maestro 224 coordina
imagen23
con procesadores específicos de la aplicación conectados 258 o lógica (a través del bus del sistema externo 240) y el software de la unidad asociada. En otra realización, el controlador maestro 224 coordina con la lógica específica de la aplicación remota (a través de la red de ordenadores 116) y el software de la unidad asociada. En otra realización, el controlador maestro 224 coordina con el bus local 206 o el bus externo conectado al controlador de
5 almacenamiento de la unidad de disco duro ("HDD").
En una realización, el controlador maestro 224 comunica con uno o más controladores de almacenamiento 254 donde el dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102 puede aparecer como un dispositivo de almacenamiento conectado a través de un bus SCSI, SCSI de Internet, ("iSCSI"), canal de fibra, etc. Entre tanto el dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102 puede gestionar objetos de forma autónoma y puede aparecer como un sistema de ficheros de objetos o un sistema de ficheros de objetos distribuido. El controlador maestro 224 también se puede acceder por los controladores de pares 256 y/o procesadores específicos de la aplicación 258.
15 En otra realización, el controlador maestro 224 coordina con un controlador de gestión autónomo integrado para validad periódicamente el código de FPGA y/o el software del controlador, validar el código de FPGA mientras que se ejecuta (reinicio) y/o validar el software del controlador durante el encendido (reinicio), soporta las peticiones de reinicio externas, soporta las peticiones de inicio debidas a excesos de tiempo de ejecución (watchdog timeout), y soporta las mediciones de voltaje, corriente, potencia, temperatura, y otras mediciones del entorno y el establecimiento de interrupciones por umbral. En otra realización, el controlador maestro 224 gestiona la recogida de basura para liberar a los bloques de borrado para su reutilización. En otra realización, el controlador maestro 224 gestiona la nivelación de uso. En otra realización, el controlador maestro 224 permite al dispositivo de almacenamiento de datos / dispositivo de almacenamiento de estado lógico 102 dividirse en múltiples dispositivos virtuales y permite el cifrado de medios con base en la partición. En otra realización más, el controlador maestro 224
25 soporta un controlador de almacenamiento de estado sólido 104 con una avanzada corrección de ECC multi-bit. Un experto en la materia reconocerá otras características y funciones de un controlador maestro 224 en un controlador de almacenamiento 152, o más específicamente en un dispositivo de almacenamiento de estado sólido 102.
En una realización, el controlador del dispositivo de almacenamiento de estado sólido 202 incluye un controlador de memoria 228 que controla una red de memoria aleatoria dinámica 230 y/o una red de memoria aleatoria estática
232. Como se ha establecido anteriormente, el controlador de memoria 228 puede ser independiente o estar integrado con el controlador maestro 224. El controlador de memoria 228 usualmente controla la memoria volátil de algún tipo tal como una DRAM (red de memoria aleatoria dinámica 230) y SRAM (red de memoria aleatoria estática 232). En otros ejemplos, el controlador de memoria 228 también controla otros tipos de memoria tales como la
35 memoria de solo lectura programable y borrable eléctricamente ("EEPROM"), etc. En otras realizaciones, el controlador de memoria 228 controla dos o más tipos de memoria y el controlador de memoria 228 puede incluir más de un controlador. Usualmente, el controlador de memoria 228 controla tanta SRAM 232 como sea factible y la DRAM 230 para suplementar la SRAM 232.
En una realización, el índice de objeto se almacena en una memoria 230, 232 y a continuación se descarga periódicamente a un canal del almacenamiento de estado sólido 110n u otra memoria no volátil. Un experto en la materia reconocerá otros usos y configuraciones del controlador de memoria 228, la red de memoria dinámica 230 y la red de memoria estática 232.
45 En una realización, el controlador del dispositivo de almacenamiento de estado sólido 202 incluye un controlador de DMA 226 que controla las operaciones de DMA entre el dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102 y uno o más controladores de memoria externos 250 y redes de memoria externas asociadas 252 y las CPU 248. Obsérvese que los controladores de memoria externos 250 y las redes de memoria externas 252 se llaman externas porque son externas para el dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102. Además el controlador de DMA 226 también puede controlar las operaciones de RDMA con los dispositivos solicitantes a través de una NIC 244 y el controlador de RDMA asociado
246. El DMA y el RDMA se explican con más detalle más adelante.
En una realización, el controlador del dispositivo de almacenamiento de estado sólido 202 incluye un controlador de
55 gestión 234 conectado a un bus de gestión 236. Usualmente el controlador de gestión 234 gestiona las métricas del entorno y el estado del dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102. El controlador de gestión 234 puede monitorizar la temperatura del dispositivo, la velocidad del ventilador, los parámetros de la fuente de alimentación, etc. sobre el bus de gestión 236. El controlador de gestión 234 puede soportar la lectura y programación de la memoria de solo lectura programable y borrable ("EEPROM") para el almacenamiento del código de la FPGA y el software del controlador. Usualmente el bus de gestión 236 está conectado a los diversos componentes dentro del dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102. El controlador de gestión 234 puede comunicar alertas, interrupciones, etc. sobre el bus local 206
o puede incluir una conexión separada a un bus de sistema 240 u otro bus. En una realización el bus de gestión 236 es un bus Entre Circuitos Integrados ("I2C"). Un experto en la materia reconocerá otras funciones y usos
65 relacionados con un controlador de gestión 234 conectado a los componentes del dispositivo de almacenamiento / dispositivo de almacenamiento de estado sólido 102 por un bus de gestión 236.
imagen24
En una realización, el controlador del dispositivo de almacenamiento de estado sólido 202 incluye lógica diversa 242 que se puede adaptar para una aplicación específica. Usualmente cuando el controlador del dispositivo de estado sólido 202 o el controlador maestro 224 esta / están configurados usando una FPGA u otro controlador configurable, se puede incluir lógica a medida en base a una aplicación particular, requisitos del cliente, requisitos de
5 almacenamiento, etc.
Conducción de datos
La Figura 3 es un diagrama de bloques esquemático que ilustra una realización 300 de un controlador de
10 almacenamiento de estado sólido 104 con una conducción de datos de escritura 106 y una conducción de datos de lectura 108 en un dispositivo de almacenamiento de estado sólido 102 de acuerdo con la presente invención. La realización 300 incluye un bus de datos 204, un bus local 206, y un control de la memoria intermedia 208, que son sustancialmente similares a los descritos en relación con el controlador del dispositivo de almacenamiento de estado sólido 202 de la Figura 2. La conducción de datos de escritura 106 incluye un empaquetador 302 y un generador del
15 código de corrección de errores ("ECC") 304. En otras realizaciones, la conducción de datos de escritura 106 incluye una memoria intermedia de entrada 306, una memoria intermedia de sincronización de la escritura 308, un módulo del programa de escritura 310, un módulo de compresión 312, un módulo de cifrado 314, una derivación del recogedor de basura 316 (con una porción dentro de la conducción de datos de lectura 108), un módulo de cifrado de medios 318, y una memoria intermedia de escritura 320. La conducción de datos de lectura 108 incluye una
20 memoria intermedia de sincronización de lectura 328, un módulo de corrección de ECC 322, un des-empaquetador 324, un módulo de alineamiento 326 y una memoria intermedia de salida 330. En otras realizaciones, la conducción de datos de lectura 108 puede incluir un módulo de descifrado de medios 332, una porción de la derivación del recogedor de basuras 316, un módulo de descifrado 334, un módulo de descompresión 336, y un módulo del programa de lectura 338. El controlador del almacenamiento de estado sólido 104 también puede incluir los registros
25 de control y estado 340 y las colas de control 342, el controlador de intercalado de bancos 344, una memoria intermedia de sincronización 346, un controlador del bus de almacenamiento 348, y un multiplexor ("MUX") 350. Los componentes del controlador de estado sólido 104 y la conducción de datos de escritura asociada 106 y la conducción de datos de lectura 108 se describen más adelante. En otras realizaciones se puede usar el almacenamiento de estado sólido síncrono 110 y se pueden eliminar las memorias intermedias de sincronización
30 308, 328.
Conducción de datos de escritura
La conducción de datos de escritura 106 incluye un empaquetador 302 que recibe un segmento de datos o
35 metadatos a escribir al almacenamiento de estado sólido, bien directamente o indirectamente a través de otra etapa de la conducción de datos de escritura 106, y crea uno o más paquetes dimensionados para el almacenamiento de estado sólido 110. El segmento de datos o metadatos es usualmente parte de un objeto, pero también puede incluir un objeto entero. En otra realización, el segmento de datos es parte de un bloque de datos, pero puede incluir también un objeto entero de datos. Usualmente se recibe un objeto desde un ordenador 112, el cliente 114, u otro
40 ordenador o dispositivo y se transmite al dispositivo de almacenamiento de estado sólido 102 en segmentos de datos transmitidos en flujo continuo al dispositivo de almacenamiento de estado sólido 102 o el ordenador 112. Un segmento de datos, también puede ser conocido por otro nombre, tal como una parcela de datos pero como se denomina en este documento incluye todo o una porción de un objeto o bloque de datos.
45 Cada objeto se almacena como uno o más paquetes. Cada objeto puede tener uno o más paquetes de contenedor. Cada paquete contiene una cabecera. La cabecera puede incluir un campo del tipo de cabecera. Los campos de tipo pueden incluir datos, atributos del objeto, metadatos, delimitadores de segmentos de datos (multi-paquete), estructuras de objetos, enlaces de objetos, y similares. La cabecera también puede incluir información con respecto al tamaño del paquete, tal como el número de bytes de datos incluidos en el paquete. La longitud del paquete se
50 puede establecer por el tipo de paquete. La cabecera puede incluir información que establece la relación del paquete con el objeto. Un ejemplo podría ser el uso de un desplazamiento en una cabecera de paquete de datos para identificar la localización del segmento de datos dentro del objeto. Un experto en la técnica reconocerá otra información que se puede incluir en la cabecera añadida a los datos por el empaquetador 302 y otra información que se puede añadir a un paquete de datos.
55 Cada paquete incluye una cabecera y posiblemente datos del segmento de datos o metadatos. La cabecera de cada paquete incluye la información pertinente para relacionar el paquete con el objeto al que pertenece el paquete. Por ejemplo, la cabecera puede incluir un identificador de objetos y un desplazamiento que indica el segmento de datos, objeto, o bloque de datos a partir del cual se forma el paquete de datos. La cabecera también puede incluir una
60 dirección lógica usada por el controlador del bus de almacenamiento 348 para almacenar el paquete. La cabecera también puede incluir información con respecto al tamaño del paquete, tal como el número de bytes incluidos en el paquete. La cabecera también puede incluir un número de secuencia que identifica a dónde pertenece el segmento de datos con respecto a otros paquetes dentro del objeto cuando se reconstruye el segmento de datos o el objeto. La cabecera puede incluir un campo de tipo de cabecera. Los campos de tipo pueden incluir datos, atributos de
65 objetos, metadatos, delimitadores del segmento de datos (multi-paquete), estructuras de objetos, enlaces de objetos, y similares. Un experto en la materia reconocerá otra información que se puede incluir en una cabecera añadida a los datos o metadatos por un empaquetador 302 y otra información que se puede añadir a un paquete.
imagen25
La conducción de datos de escritura 106 incluye un generador de ECC 304 que genera uno o más códigos de
5 corrección de errores ("ECC") para el uno o más paquetes recibidos desde el empaquetador 302. El generador de ECC 304 usualmente usa un algoritmo de corrección de errores para generar el ECC que se almacena con el paquete. El ECC almacenado con el paquete se usa usualmente para detectar y corregir errores introducidos dentro de los datos a través de la transmisión y almacenamiento. En una realización, los paquetes se transmiten de forma continua dentro del generador de ECC 304 como bloques no codificados de longitud N. Se calcula un síndrome de
10 longitud S, se añade y se saca como un bloque codificado de longitud N + S. El valor de N y S son dependientes de las características del algoritmo que se selecciona para conseguir el funcionamiento específico, eficacia, y métricas de robustez. En la realización preferida no hay ninguna relación fija entre los bloques de ECC y los paquetes, el paquete puede comprender más de un bloque de ECC; el bloque de ECC puede comprender más de un paquete; y un primer paquete puede terminar en cualquier punto dentro del bloque de ECC y un segundo paquete puede
15 comenzar después del fin del primer paquete dentro del mismo bloque de ECC. En la realización preferida, los algoritmos de ECC no se modifican dinámicamente. En una realización preferida, el ECC almacenado con los paquetes de datos es suficientemente robusto para corregir errores en más de dos bits.
Ventajosamente, el uso de un algoritmo robusto de ECC que permita la corrección de más de un único bit o incluso
20 la corrección de un doble bit permite que la vida del almacenamiento de estado sólido 110 se prolongue. Por ejemplo si se usa memoria flash como medio de almacenamiento en el almacenamiento de estado sólido 110, la memoria flash se puede escribir aproximadamente 100.000 veces sin error por ciclo de escritura. Esta limitación de uso se puede extender usando un algoritmo de ECC robusto. Teniendo el generador de ECC 304 y el módulo de corrección de ECC correspondiente 322 incorporado en el dispositivo de almacenamiento de estado sólido 102, el dispositivo
25 de almacenamiento de estado sólido 102 puede corregir errores internamente y tener una vida útil mayor que si se usa un algoritmo de ECC menos robusto, tal como la corrección de un único bit. Sin embargo, en otras realizaciones el generador de ECC 304 puede usar un algoritmo menos robusto y puede corregir errores de un único bit o de doble bit. En otra realización el dispositivo de almacenamiento de estado sólido 110 puede comprender un almacenamiento menos fiable tal como una memoria flash de célula multi-nivel ("MLC") para aumentar la capacidad,
30 cuyo almacenamiento puede no ser suficientemente fiable sin algoritmos de ECC más robustos.
En una realización, la conducción de escritura 106 incluye una memoria intermedia de entrada 306 que recibe un segmento de datos a escribir al almacenamiento de estado sólido 110 y almacena los segmentos de datos entrantes hasta la siguiente etapa de la conducción de datos de escritura 106, tal como el empaquetador 302 (u otra etapa 35 para una conducción de datos de escritura más compleja 106) es fácil procesar el siguiente segmento de datos. La memoria intermedia de entrada 306 usualmente permite discrepancias entre la tasa a la que se reciben los segmentos de datos y la tasa a la que se procesan por la conducción de datos de escritura 106 usando una memoria intermedia de datos dimensionada apropiadamente. La memoria intermedia de entrada 306 también permite que el bus de datos 204 transfiera datos a la conducción de datos de escritura 106 a tasas mayores que la que se puede 40 sostener por la conducción de datos de escritura 106 para mejorar la eficacia de la operación del bus de datos 204. Usualmente, cuando la conducción de datos de escritura 106 no incluye una memoria intermedia de entrada 306, se realiza una función de almacenamiento temporal en otra parte, tal como en el dispositivo de almacenamiento de estado sólido 102 pero fuera de la conducción de datos de escritura 106, en el ordenador 112, tal como dentro de una tarjeta de interfaz de red ("NIC") u otro dispositivo, por ejemplo cuando se usa el acceso de memoria directo
45 remoto ("RDMA").
En otra realización, la conducción de datos de escritura 106 también incluye una memoria intermedia de sincronización de escritura 308 que almacena temporalmente los paquetes recibidos desde el generador de ECC 304 antes de escribir los paquetes al almacenamiento de estado sólido 110. La memoria intermedia de
50 sincronización de escritura 308 está localizada en una frontera entre un domino de reloj local y un dominio de reloj del almacenamiento de estado sólido y proporciona el almacenamiento temporal tener en cuenta las diferencias en los dominios de reloj. En otras realizaciones se puede usar el almacenamiento de estado sólido síncrono 110 y se pueden eliminar las memorias intermedias de sincronización 308, 328.
55 En una realización, la conducción de datos de escritura 106 también incluye un módulo de cifrado de medios 318 que recibe el uno o más paquetes desde el empaquetador 302, bien directamente o indirectamente, y cifra el uno o más paquetes usando una clave de cifrado única para el dispositivo de almacenamiento de estado sólido 102 antes de enviar los paquetes al generador de ECC 304. Usualmente, se cifra todo el paquete, incluyendo las cabeceras. En otra realización las cabeceras no se cifran. En este documento, la clave de cifrado se entiende que significa una
60 clave de cifrado secreta que se gestiona externamente desde una realización que integra el almacenamiento de estado sólido 110 y donde la realización requiere la protección de cifrado. El módulo de cifrado de medios 318 y el módulo de descifrado de medios correspondiente 332 proporcionan un nivel de seguridad para los datos almacenados en el almacenamiento de estado sólido 110. Por ejemplo, cuando los datos se cifran con el módulo de cifrado de medios 318, si el almacenamiento de estado sólido 110 se conecta a un controlador de almacenamiento
65 de estado sólido diferente 104, el dispositivo de almacenamiento de estado sólido 102 o el ordenador 112, los contenidos del almacenamiento de estado lógico 110 usualmente no se podrían leer sin el uso de la misma clave de cifrado usada durante la escritura de datos al almacenamiento de estado sólido 110 sin un esfuerzo significativo. En una realización típica, el dispositivo de almacenamiento de estado sólido 102 no almacena la clave de cifrado en el almacenamiento no volátil y no permite ningún acceso externo a la clave de cifrado. La clave de cifrado se
imagen26
5 proporciona al controlador de almacenamiento de estado sólido 104 durante la inicialización. El dispositivo de almacenamiento de estado sólido 102 puede usar y almacenar un número arbitrario criptográfico no secreto que se usa en conjunción con una clave de cifrado. Un número arbitrario diferente se puede almacenar con cada paquete. Los segmentos de datos se pueden dividir entre múltiples paquetes con números arbitrarios únicos para el propósito de mejorar la protección por el algoritmo de cifrado. La clave de cifrado se puede recibir desde un cliente 114, un ordenador 112, un gestor de claves u otro dispositivo que gestiona la clave de cifrado a usar por el controlador de almacenamiento de estado sólido 104. En otra realización, el almacenamiento de estado sólido 110 puede tener dos
o más particiones y el controlador de almacenamiento de estado sólido 104 se comporta entonces como si fuesen dos o más controladores de almacenamiento de estado sólido 104, operando cada uno sobre una partición única dentro del almacenamiento de estado sólido 110. En esta realización, se puede usar una clave de cifrado de medios
15 única con cada partición.
En otra realización, la conducción de datos de escritura 106 también incluye un módulo de cifrado 314 que cifra un segmento de datos o metadatos recibido desde la memoria intermedia de entrada 306, bien directamente o indirectamente, antes de enviar el segmento de datos al empaquetador 302, usando el segmento de datos cifrado una clave de cifrado recibida en conjunción con el segmento de datos. El módulo de cifrado 314 difiere del módulo de cifrado de medios 318 en que las claves de cifrado usadas por el módulo de cifrado 314 para cifrar los datos no pueden ser comunes para todos los datos almacenados dentro del dispositivo de almacenamiento de estado sólido 102 sino que puede variar sobre la base de un objeto y recibirse en conjunción con los segmentos de datos de recepción como se describe más adelante. Por ejemplo, una clave de cifrado para un segmento de datos a cifrar por
25 el módulo de cifrado 314 se puede recibir con el segmento de datos o se puede recibir como parte de un comando para escribir un objeto al que pertenece el segmento de datos. El dispositivo de almacenamiento de estado sólido 102 puede usar y almacenar un número aleatorio criptográfico no secreto en cada paquete de objeto que se usa en conjunción con la clave de cifrado. Se puede almacenar un número aleatorio diferente con cada paquete. Los segmentos de datos se pueden dividir entre múltiples paquetes con números aleatorios únicos para el propósito de mejorar la protección por el algoritmo de cifrado. En una realización, el número aleatorio usado por el módulo de cifrado de medios 318 es el mismo que se usó por el módulo de cifrado 314.
La clave de cifrado se puede recibir desde un cliente 114, un ordenador 112, un gestor de claves u otro dispositivo que mantiene la clave de cifrado a usar para el cifrado del segmento de datos. En una realización, las claves de
35 cifrado se transfieren al controlador de almacenamiento de estado sólido 104 desde uno de, un dispositivo de almacenamiento de estado sólido 102, un ordenador 112, un cliente 114 y otro agente externo que tiene la capacidad de ejecutar métodos normalizados de la industria para transferir de forma segura y proteger las claves privadas y públicas.
En una realización, el módulo de cifrado 314 cifra un primer paquete con una primera clave de cifrado recibida en conjunción con el paquete y cifra un segundo paquete con una segunda clave de cifrado recibida en conjunción con el segundo paquete. En otra realización, el módulo de cifrado 314 cifra un primer paquete con una primera clave de cifrado recibida en conjunción con el paquete y pasa un segundo paquete de datos sobre la siguiente etapa sin cifrado. Ventajosamente, el módulo de cifrado 314 incluido en la conducción de datos de escritura 106 del dispositivo
45 de almacenamiento de estado sólido 102 permite el cifrado de datos objeto por objeto o segmento por segmento sin un sistema de ficheros único u otro sistema externo para mantener el seguimiento de las diferentes claves de cifrado usadas para almacenar los objetos o segmentos de datos correspondientes. Cada dispositivo solicitante 155 o gestor de claves relacionado gestiona independientemente las claves de cifrado usadas para cifrar solo los objetos o segmentos de datos enviados por el dispositivo solicitante 155.
En otra realización, la conducción de datos de escritura 106 incluye un módulo de compresión 312 que comprime los datos para el segmento de metadatos antes de enviar el segmento de datos al empaquetador 302. El módulo de compresión 312 usualmente comprime un segmento de datos o metadatos usando una rutina de compresión conocida por los expertos en la materia para reducir el tamaño de almacenamiento del segmento. Por ejemplo, si un
55 segmento de datos incluye una cadena de caracteres de 512 ceros, el módulo de compresión 312 puede reemplazar los 512 ceros con un código o clave que indica los 512 ceros donde el código es mucho más compacto que el espacio ocupado por los 512 ceros.
En una realización, el módulo de compresión 312 comprime un primer segmento con una primera rutina de compresión y pasa junto a un segundo segmento sin compresión. En otra realización, el módulo de compresión 312 comprende un primer segmento con una primera rutina de compresión y comprime el segundo segmento con una segunda rutina de compresión. Tener esta flexibilidad dentro del dispositivo de almacenamiento de estado sólido 102 es beneficioso de modo que los clientes 114 u otros dispositivos que escriben datos al dispositivo de almacenamiento de estado sólido 102 pueden especificar cada uno una rutina de compresión o de modo que uno 65 puede especificar una rutina de compresión mientras que otro especifica sin compresión. La selección de rutinas de compresión también se puede seleccionar de acuerdo con configuraciones por defecto sobre cada tipo de objeto o
imagen27
en base a la clase de objeto. Por ejemplo, un primer objeto de un objeto especificado puede anular el establecimiento de la rutina de compresión por defecto y un segundo objeto de la misma clase de objetos y tipo de objetos puede usar la rutina de compresión por defecto y un tercer objeto de la misma clase de objetos y tipo de objeto puede no usar ninguna compresión.
5 En una realización, la conducción de datos de escritura 106 incluye una derivación del recogedor de basura 316 que recibe segmentos de datos desde la conducción de datos de lectura 108 como parte de una derivación de datos en un sistema de recogida de basura. Un sistema de recogida de basura usualmente marca los paquetes que ya no son válidos, usualmente porque el paquete se marca para su borrado o porque se han modificado y almacenado los datos modificados en una localización diferente. Al mismo tiempo, el sistema de recogida de basura determina que una sección particular de almacenamiento se puede recuperar. Esta determinación puede ser debida a una falta de capacidad de almacenamiento disponible, un porcentaje de datos marcados como inválidos que alcanza un umbral, una consolidación de datos válidos, una tasa de detección de errores para esa sección de almacenamiento que alcanza un umbral o un mejor funcionamiento basado en la distribución de datos, etc. Se pueden considerar
15 numerosos factores por el algoritmo de recogida de basura para determinar cuándo se recupera una sección de almacenamiento.
Una vez que una sección de almacenamiento se ha marcado para la recuperación, usualmente se deben relocalizar los paquetes válidos en la sección. La derivación del recogedor de basura 316 permite leer los paquetes dentro de la conducción de datos de lectura 108 y transferirlos a continuación directamente a la conducción de datos de escritura 106 sin encaminarse por el almacenamiento de estado sólido 104. En una realización preferida, la derivación de recogida de basura 316 es parte de un sistema autónomo de recogida de basura que opera dentro del dispositivo de almacenamiento de estado sólido 102. Esto permite al dispositivo de almacenamiento de estado sólido 102 gestionar los datos de modo que los datos se difunden sistemáticamente a través del almacenamiento de estado sólido 110
25 para mejorar el funcionamiento, la fiabilidad de los datos y para evitar la sobreutilización y la subutilización de cualquier localización o área del almacenamiento de estado sólido 110 y alargar la vida útil del almacenamiento de estado sólido 110.
La derivación del recogedor de basura 316 coordina la inserción de segmentos dentro de la conducción de datos de escritura 106 con otros segmentos distintos de los escritos por los clientes 114 u otros dispositivos. En la realización representada, la derivación de recogedor de basura 316 está antes del empaquetador 302 en la conducción de datos de escritura 106 y después del des-empaquetador 324, en la conducción de datos de lectura 108, pero también se puede localizar en otra parte en las conducciones de datos de lectura y escritura 106, 108. La derivación del recogedor de basura 316 se puede usar durante un traspaso de la conducción de escritura 106 para rellenar el
35 resto de la página virtual para mejorar la eficacia de almacenamiento dentro del almacenamiento de estado sólido 110 y por lo tanto reducir la frecuencia de la recogida de basura.
En una realización, la conducción de datos de escritura 106 incluye una memoria intermedia de escritura 320 que almacena temporalmente datos para unas operaciones de escritura eficientes. Usualmente, la memoria intermedia de escritura 320 incluye suficiente capacidad para paquetes que rellenan al menos una página virtual en el almacenamiento de estado sólido 110. Esto permite a una operación de escritura enviar una página entera de datos al almacenamiento de estado sólido 110 sin interrupción. El dimensionamiento de la memoria intermedia de escritura 320 de la conducción de datos de escritura 106 y las memorias intermedias dentro de la conducción de datos de lectura 108 para que sean de la misma capacidad o mayor que la de la memoria intermedia de escritura de
45 almacenamiento dentro del almacenamiento de estado sólido 110, permite que la escritura y lectura de datos sea más eficiente ya que se puede crear un único comando de escritura para enviar una página virtual completa de datos al almacenamiento de estado sólido 110 en lugar de múltiples comandos.
Mientras que la memoria intermedia de escritura 320 se está rellenando, el almacenamiento de estado sólido 110 se puede usar para otras operaciones de lectura. Esto es ventajoso porque otros dispositivos de estado sólido con menor memoria intermedia de escritura o sin memoria intermedia de escritura pueden ocupar el almacenamiento de estado sólido cuando se escriben los datos a una memoria intermedia de escritura de almacenamiento y los datos que fluyen dentro de la memoria intermedia de escritura de almacenamiento se paran. Las operaciones de lectura se bloquearán hasta que toda la memoria intermedia de escritura del almacenamiento se rellene y se programe. Otro
55 enfoque para los sistemas sin una memoria intermedia de escritura o una memoria intermedia de escritura pequeña es traspasar la memoria intermedia de escritura de almacenamiento que no está llena para posibilitar las lecturas. De nuevo esto es ineficiente porque se requieren múltiples ciclos de escritura / programa para rellenar una página.
Para la realización representada con una memoria intermedia de escritura 320 dimensionada mayor que una página virtual, un único comando de escritura que incluye numerosos subcomandos, se puede seguir a continuación por un único comando de programa para transferir la página de datos desde la memoria intermedia de escritura de almacenamiento en cada uno de los elementos de almacenamiento estado sólido 216, 218, 220 a la página designada dentro de cada elemento de almacenamiento de estado sólido 216, 218, 220. Esta técnica tiene los beneficios de eliminar la programación parcial de la página, que es conocido que reduce la fiabilidad y durabilidad de
65 los datos y liberar el banco de destino para lecturas y otros comandos mientras que se rellena la memoria intermedia.
imagen28
En una realización, la memoria intermedia de escritura 320 es una memoria intermedia ping-pong donde un lado de la memoria intermedia se rellena y a continuación se designa para la transferencia en un momento apropiado mientras que el otro lado de la memoria intermedia de ping-pong se está rellenando. En otra realización, la memoria intermedia de escritura 320 incluye un primer registro del tipo primero en entrar -primero en salir ("FIFO") con una
5 capacidad de más de una página virtual de segmentos de datos. Un experto en la materia reconocerá otras configuraciones de memoria intermedia de escritura 320 que permiten que una página virtual de datos se almacene antes de escribir los datos en el almacenamiento de estado sólido 110.
En otra realización, la memoria intermedia de escritura 320 se dimensiona más pequeña que una página virtual de modo que menos de una página de información se podría escribir a una memoria intermedia de escritura de almacenamiento en el almacenamiento de estado lógico 110. En la realización, para impedir una parada en la conducción de datos de escritura 106 a partir del mantenimiento de las operaciones de lectura, los datos se ponen en cola usando el sistema de recogida de basura que necesita moverse de una localización a otra como parte del proceso de recogida de basura. En el caso de una parada de datos en la conducción de datos de escritura 106, los 15 datos se pueden alimentar a través de la derivación del recogedor de basura 316 a la memoria de escritura 320 y a continuación sobre la memoria intermedia de escritura de almacenamiento en el almacenamiento de estado sólido 110 para rellenar las páginas de una página virtual ante de programar los datos. De este modo una parada de datos en la conducción de datos de escritura 106 no pararía la lectura del dispositivo de almacenamiento de estado sólido
102.
En otra realización, la conducción de datos de escritura 106 incluye un módulo de programa de escritura 310 con una o más funciones definibles por el usuario dentro de la conducción de datos de escritura 106. El módulo de programa de escritura 310 permite a un usuario modelar la conducción de datos de escritura 106. Un usuario puede modelar la conducción de datos de escritura 106 en base al requisito o aplicación de datos particular. Donde el
25 controlador de almacenamiento de estado sólido 104 es una FPGA, el usuario puede programar la conducción de datos de escritura 106 con comandos a medida y funciones de forma relativamente fácil. Un usuario también puede usar el módulo del programa de escritura 310 para incluir funciones a medida con un ASIC, sin embargo, la adaptación con un ASIC puede ser más difícil que con una FPGA. El módulo de programa de escritura 310 puede incluir memorias intermedias y mecanismos de deriva para permitir a un primer segmento de datos ejecutarse en el módulo del programa de escritura 310 mientras que el segundo segmento de datos puede continuar a través de la conducción de datos de escritura 106. En otra realización, el módulo de programa de escritura 310 puede incluir un núcleo de procesador que se puede programar mediante software.
Obsérvese que el módulo del programa de escritura 310 se muestra entre la memoria intermedia de entrada 306 y el
35 módulo de compresión 312, sin embargo, el módulo del programa de escritura 310 podría estar en cualquier parte en la conducción de datos de escritura 106 y se puede distribuir entre las diversas etapas 302 -320. Además, puede haber múltiples módulos de programa de escritura 310 distribuidos entre las diversas etapas 302 -320 que se programan y operan independientemente. Además, el orden de las etapas 302 -320 se puede alterar. Un experto en la materia reconocerá alteraciones realizables en el orden de las etapas 302 -320 en base a requisitos de usuario particulares.
Conducción de datos de lectura
La conducción de datos de lectura 108 incluye un módulo de corrección de ECC 322 que determina si existe un error
45 de datos en los bloques de ECC de un paquete solicitado recibido desde el almacenamiento de estado sólido 110 usando el ECC almacenado con cada uno de los bloques de ECC del paquete solicitado. El módulo de corrección de ECC 322 corrige a continuación cualesquiera errores en el paquete solicitado si existe cualquier error y los errores son corregibles usando el ECC. Por ejemplo, si el ECC puede detectar un error en seis bits pero solo puede corregir tres errores de bit, el módulo de corrección de ECC 322 corrige los bloques de ECC del paquete solicitado con hasta tres bits en error. El módulo de corrección de ECC 322 corrige los bits en error cambiando los bits en error al estado correcto de uno o cero de modo que el paquete solicitado es idéntico a cuando se escribió en el almacenamiento de estado sólido 110 y se generó el ECC para el paquete.
Si el módulo de corrección de ECC 322 determina que los paquetes solicitados contienen más bits en error de los
55 que puede corregir el ECC, el módulo de corrección de ECC 322 no puede corregir los errores en los bloques de ECC corrompidos del paquete solicitado y envía una interrupción. En una realización, el módulo de corrección de ECC 322 envía una interrupción con un mensaje indicando que el paquete solicitado está en error. El mensaje puede incluir información de que el módulo de corrección de ECC no puede corregir los errores o la incapacidad del módulo de corrección de ECCC 322 para corregir los errores puede estar implicada. En otra realización, el módulo de corrección de ECC 322 envía los bloques de ECC corrompidos del paquete solicitado con la interrupción y/o el mensaje.
En la realización preferida, un bloque de ECC corrompido o porción de un bloque de ECC corrompido del paquete solicitado que no se puede corregir por el módulo de corrección de ECC 322 se lee por el controlador maestro 224, 65 se corrige y se devuelve al módulo de corrección de ECC 322 para un procesamiento adicional por la conducción de datos de lectura 108. En una realización, un bloque de ECC corrompido o porción de un bloque de ECC corrompido
imagen29
del paquete solicitado se envía al dispositivo solicitante de los datos. El dispositivo solicitante 155 puede corregir el bloque de ECC o reemplazar los datos usando otra copia, tal como una copia de respaldo o espejo, y a continuación puede usar los datos de reemplazo del paquete de datos solicitado o devolverlo a la conducción de datos de lectura
108. El dispositivo solicitante 155 puede usar la información de cabecera en el paquete solicitado en error para
5 identificar los datos requeridos para reemplazar el paquete solicitado corrompido o reemplazar el objeto al que pertenece el paquete. En otra realización preferida, el controlador de almacenamiento de estado sólido 104 almacena los datos usando algún tipo de RAID y es capaz de recuperar los datos corrompidos. En otra realización, el módulo de corrección de ECC 322 envía una interrupción y/o mensaje y el dispositivo receptor falla en la operación de lectura asociada con el paquete de datos solicitado. Un experto en la materia reconocerá otras opciones y acciones a tomar como resultado de que el módulo de corrección de ECC 322 determine que uno o más bloques de ECC del paquete solicitado están corrompidos y que el módulo de corrección de ECC 322 no puede corregir los errores.
La conducción de datos de lectura 108 incluye un des-empaquetador 324 que recibe los bloques de ECC del
15 paquete solicitado desde el módulo de corrección de ECC 322, directamente o indirectamente y comprueba y elimina una o más cabeceras del paquete. El des-empaquetador 324 puede validar las cabeceras de paquete comprobando los identificadores de paquete, la longitud de los datos, la localización de los datos, etc. dentro de las cabeceras. En una realización, la cabecera incluye un código de huella digital que se puede usar para validar que el paquete entregado a la conducción de datos de lectura 108 es el paquete solicitado. El des-empaquetador 324 también elimina las cabeceras del paquete solicitado añadidas por el empaquetador 302. El des-empaquetador 324 se puede dirigir para que no opere en ciertos paquetes sino que pase estos hacia delante sin modificación. Un ejemplo podría ser una etiqueta de un contenedor que se solicita durante el curso de un proceso de reconstrucción donde se requiere la información de la cabecera por el módulo de reconstrucción de índices de objetos 272. Ejemplos adicionales incluyen la transferencia de paquetes de diversos tipos destinados para uso dentro del
25 dispositivo de almacenamiento de estado sólido 102. En otra realización, la operación del des-empaquetador 324 puede ser dependiente del tipo de paquete.
La conducción de datos de lectura 108 incluye un módulo de alineamiento 326 que recibe datos desde el desempaquetador 324 y elimina los datos no deseados. En una realización, un comendo de lectura enviado al almacenamiento de estado sólido 110 recupera un paquete de datos. Un dispositivo que solicita datos puede no requerir todos los datos dentro del paquete recuperado y el módulo de alineamiento 326 elimina los datos no deseados. Si se solicitan todos los datos dentro de una página recuperada, el módulo de alineamiento 326 no elimina ningún dato.
35 El módulo de alineamiento 326 re-formatea los datos o segmentos de datos de un objeto en una forma compatible con el dispositivo que solicita el segmento de datos antes de redirigir el segmento de datos a la siguiente etapa. Usualmente, como los datos se procesan por la conducción de datos de lectura 108, el tamaño de los segmentos de datos o paquetes cambia en las diversas etapas. El módulo de alineamiento 326 usa los datos recibidos para formatear los datos dentro de los segmentos de datos adecuados para enviar al dispositivo solicitante 155 y se unen para formar una respuesta. Por ejemplo, los datos desde una porción de un primer paquete de datos se pueden combinar con los datos desde una porción de un segundo paquete de datos. Si un segmento de datos es mayor que un dato solicitado por el dispositivo solicitante 155, el módulo de alineamiento 326 puede descartar los datos no deseados.
45 En una realización, la conducción de datos de lectura 108 incluye una memoria intermedia de sincronización de lectura 328 que almacena temporalmente uno o más paquetes solicitados leídos desde el almacenamiento de estado sólido 110 antes del procesamiento por la conducción de datos de lectura 108. La memoria intermedia de sincronización de lectura 328 está en el límite entre el dominio de reloj del almacenamiento de estado sólido y el dominio de reloj del bus local y proporciona el almacenamiento temporal para dar cuenta de las diferencias de los dominios de reloj.
En otra realización, la conducción de datos de lectura 108 incluye una memoria intermedia de salida 330 que recibe los paquetes solicitados desde el módulo de alineamiento 326 y almacena los paquetes antes de su transmisión al dispositivo solicitante. La memoria intermedia de salida 330 da cuenta de las diferencias entre cuando se reciben los
55 segmentos de datos desde las etapas de la conducción de datos de lectura 108 y cuando se transmiten los segmentos de datos a otras partes del controlador de almacenamiento de estado sólido 104 o al dispositivo solicitante 155. La memoria intermedia de salida 330 también permite que el bus de datos 204 reciba datos desde la conducción de datos de lectura 108 a tasas mayores que las que se pueden sostener por la conducción de datos de lectura 108 para mejorar la eficacia de operación del bus de datos 204.
En una realización, la conducción de datos de lectura 108 incluye un módulo de descifrado de medios 332 que recibe uno o más paquetes solicitados cifrados desde el módulo de corrección de ECC 322 y descifra el uno o más paquetes solicitados usando una clave de cifrado única para el dispositivo de almacenamiento de estado sólido 102 antes de enviar el uno o más paquetes solicitados al des-empaquetador 324. Usualmente la clave de cifrado usada 65 para descifrar los datos por el módulo de descifrado de medios 332 es idéntica a la clave de cifrado usada por el módulo de cifrado de medios 318. En otra realización, el almacenamiento de estado sólido 110 puede tener dos o
imagen30
más particiones y el controlador de almacenamiento de estado sólido 104 se comporta como si fuesen dos o más controladores de almacenamiento de estado sólido 104 operando cada uno sobre una partición única dentro del almacenamiento de estado sólido 110. En esta realización, se puede usar una clave de cifrado de medios única con cada partición.
5 En otra realización, la conducción de datos de lectura 108 incluye un módulo de descifrado 334 que descifra un segmento de datos formateado por el des-empaquetador 324 antes de enviar el segmento de datos a la memoria intermedia de salida 330, usando el segmento de datos descifrado una clave de cifrado recibida en conjunción con la petición de lectura que inicia la recuperación del paquete solicitado recibido por la memoria intermedia de
10 sincronización de lectura 328. El módulo de descifrado 334 puede descifrar un primer paquete con una clave de cifrado recibida en conjunción con la petición de lectura para el primer paquete y a continuación puede descifrar un segundo paquete con una clave de cifrado diferente o puede pasar el segundo paquete sobre la siguiente etapa de la conducción de datos de lectura 108 sin descifrado. Usualmente, el módulo de descifrado 334 usa una clave de cifrado diferente para descifrar un segmento de datos que la que usa el módulo de descifrado de medios 332 para
15 descifrar los paquetes solicitados. Cuando se almacenó el paquete con el número aleatorio de cifrado no secreto, el número aleatorio se usa en conjunción con una clave de cifrado para descifrar el paquete de datos. La clave de cifrado se puede recibir desde un cliente 114, un ordenador 112, un gestor de claves, u otro dispositivo que gestione la clave de cifrado a usar por el controlador de almacenamiento de estado sólido 104.
20 En otra realización la conducción de datos de lectura 108 incluye un módulo de descompresión 336 que descomprime un segmento de datos formateado por el des-empaquetador 324. En la realización preferida, el módulo de descompresión 336 usa la información de compresión almacenada en uno o ambos de la cabecera del paquete y la etiqueta del contenedor para seleccionar una rutina complementaria que se usó para comprimir los datos por el módulo de compresión 312. En otra realización, la rutina de descompresión usada por el dispositivo de
25 descompresión 336 se dicta por el dispositivo que solicita el segmento de datos que se va a descomprimir. En otra realización, el módulo de descompresión 336 selecciona una rutina de descompresión de acuerdo con la configuración por defecto en base al tipo de objeto o a la clase del objeto. Un primer paquete de un primer objeto puede ser capaz de anular una rutina de descompresión por defecto y un segundo paquete de un segundo objeto de la misma clase de objeto y el mismo tipo de objeto puede usar la rutina de descompresión por defecto y un tercer
30 paquete de un tercer objeto de la misma clase de objeto y tipo de objeto puede no usar ninguna descompresión.
En otra realización, la conducción de datos de lectura 108 incluye un módulo de programa de lectura 338 que incluye una o más funciones definibles por el usuario dentro de la conducción de datos de lectura 108. El módulo de programa de lectura 338 tiene similares características al módulo de programa de escritura 310 y permite a un 35 usuario proporcionar funciones a medida para la conducción de datos de lectura 108. El módulo de programa de lectura 338 puede estar localizado como se muestra en la Figura 3, puede estar localizado en otra posición dentro de la conducción de datos de lectura 108, o puede incluir múltiples partes en múltiples localizaciones dentro de la conducción de datos de lectura 108. Adicionalmente, puede haber múltiples módulos de programa de lectura 338 dentro de múltiples localizaciones dentro de la conducción de datos de lectura 108 que operan independientemente.
40 Un experto en la materia reconocerá otras formas de un módulo de programa de lectura 338 dentro de una conducción de datos de lectura 108. Como con la conducción de datos de escritura 106, las etapas de la conducción de datos de lectura 108 se pueden re-disponer y un experto en la materia reconocerá otros órdenes de las etapas dentro de la conducción de datos de lectura 108.
45 El controlador de almacenamiento de estado sólido 104 incluye registros de control y estado 340 y las colas de control correspondientes 342. Los registros de control y estatus 340 y las colas de control 342 facilitan el control y los comandos de secuenciación y subcomandos asociados con los datos procesados en las conducciones de datos de escritura y lectura 106, 108. Por ejemplo, un segmento de datos en el empaquetador 302 puede tener uno o más comandos de control correspondientes o instrucciones en una cola de control 342 asociadas con el generador de
50 ECC 304. A medida que el segmento de datos se empaqueta se pueden ejecutar algunas de las instrucciones o comandos dentro del empaquetador 302. Otros comandos o instrucciones se pueden pasar a la siguiente cola de control 342 a través de registros de control y estado 340 a medida que los paquetes de datos formados de nuevo creados desde el segmento de datos se pasan a la siguiente etapa.
55 Los comandos e instrucciones se pueden cargar simultáneamente dentro de las colas de control 342 para un paquete que se redirige a la conducción de datos de escritura 106 extrayendo cada etapa de la conducción el comando o instrucción apropiada a medida que el paquete respectivo se ejecuta por esa etapa. De forma similar, los comandos y las instrucciones se pueden cargar simultáneamente dentro de las colas de control 342 para un paquete que se está contestando desde la conducción de datos de lectura 108 extrayendo cada etapa de la conducción el
60 comando o instrucción apropiada a medida que se ejecuta el paquete respectivo por esa etapa. Un experto en la materia reconocerá otras características y funciones de los registros de control y estado 340 y las colas de control
342.
El controlador de almacenamiento de estado sólido 104 y/o el dispositivo de almacenamiento de estado sólido 102 65 pueden incluir también un controlador de intercalado de bancos 344, una memoria intermedia de sincronización 346, un controlador del bus de almacenamiento 348, un multiplexor ("MUX") 350, que se describen en relación con las Figuras 4A y 4B.
imagen31
Intercalado de bancos
5 La Figura 4A es un diagrama de bloques esquemático que ilustra una realización 400 de un controlador de intercalado de bancos 344 en el controlador de almacenamiento de estado sólido 104 de acuerdo con la presente invención. El controlador de intercalado de bancos 344 se conecta a los registros de control y estado 340 y al bus I/O de almacenamiento 210 y el bus de control de almacenamiento 212 a través del MUX 350, el controlador del bus de almacenamiento 348 y la memoria intermedia de sincronización 346 que se describen a continuación. El controlador de intercalado de bancos 344 incluye un agente de lectura 402, un agente de escritura 404, un agente de borrado 406 un agente de gestión 408, colas de lectura 410a -n, colas de escritura 412a -n, colas de borrado 414a -n y colas de gestión 416a -n para los bancos 214 en el almacenamiento de estado sólido 110, los controladores de bancos 418a -n, un árbitro de bus 420, y un MUX de estados 422, que se describen a
15 continuación. El controlador del bus de almacenamiento 348 incluye un módulo de mapeo 424 con un módulo de remapeo 430, un módulo de captura de estatus 426, y un controlador de bus NAND 428, que se describen a continuación.
El controlador de intercalado de bancos 344 dirige uno o más comandos a una o más colas en el controlador de intercalado de bancos 344 y coordina entre los bancos 214 del almacenamiento de estado sólido 110, la ejecución de los comandos almacenados en las colas, de modo que un comando de un primer tipo se ejecuta sobre un banco 214a mientras que un comando de un segundo tipo se ejecuta sobre un segundo banco 214b. El uno o más comandos están separados por tipos de comandos dentro de las colas. Cada banco 214 del almacenamiento de estado sólido 110 tiene un conjunto correspondiente de colas dentro del controlador de intercalado de bancos 344 y
25 cada conjunto de colas incluye una cola para cada tipo de comando.
El controlador de intercalado de bancos 344 coordina entre los bancos 214 del almacenamiento de estado sólido 110 la ejecución de los comandos almacenados en las colas. Por ejemplo, un comando de un primer tipo se ejecuta sobre un banco 214a mientras que un comando de un segundo tipo se ejecuta sobre un segundo banco 214b. Usualmente, los tipos de comandos y los tipos de colas incluyen comandos de lectura y escritura y colas 410, 412, pero también pueden incluir otros comandos y colas que son específicas del medio de almacenamiento. Por ejemplo, en la realización representada en la Figura 4A las colas de borrado y gestión 414 y 416 están incluidas y serían apropiadas para memoria flash, NRAM, MRAM, DRAM, PRAM, etc.
35 Para otros tipos de almacenamiento de estado sólido 110, se pueden incluir otros tipos de comandos y las colas correspondientes sin desviarse del ámbito de la invención. La naturaleza flexible del controlador de almacenamiento de estado sólido de FPGA 104 permite la flexibilidad en los medios de almacenamiento. Si se cambiase la memoria flash a otro tipo de almacenamiento de estado sólido, el controlador de intercalado de bancos 344, el controlador del bus de almacenamiento 348 y el MUX 350 se podrían alterar para acomodarse al tipo de medios sin afectar significativamente a las conducciones de datos 106, 108 y otras funciones del controlador de almacenamiento de estado sólido 104.
En la realización representada en la Figura 4A, el controlador de intercalado de bancos 344 incluye, para cada banco 214; una cola de lectura 410 para la lectura de datos desde el almacenamiento de estado sólido 110, una cola
45 de escritura 412 para escritura de comandos al almacenamiento de estado sólido 110, una cola de borrado 414 para borrar un bloque de borrado en el almacenamiento de estado sólido, una cola de gestión 416 para los comandos de gestión. El controlador de intercalado de bancos 344 también incluye los agentes de lectura, escritura, borrado y gestión correspondientes 402, 404, 406, 408. En otra realización, los registros de control y estado 340 y las colas de control 342 o componentes similares ponen en cola comandos para los datos enviados a los bancos 214 del almacenamiento de estado sólido 110 sin un controlador de intercalado de bancos 344.
Los agentes 402, 404, 406, 408, en una realización, dirigen comandos del tipo apropiado destinados a un banco particular 214a a la cola correcta para el banco 214a. Por ejemplo, el agente de lectura 402 puede recibir un comando de lectura para el banco 1 214b y dirigir un comando de lectura a la cola de lectura del al banco 1 410b. El
55 agente de escritura 404 puede recibir un comando de escritura para escribir datos en una localización en el banco 0 214a del almacenamiento de estado sólido 110 y a continuación enviar el comando de escritura a la cola de escritura del banco 0 412a. De forma similar, el agente de borrado 406 puede recibir un comando de borrado para borrar un bloque de borrado en el banco 1 214b y a continuación pasar el comando de borrado a la cola de borrado del banco 1 414b. El agente de gestión 408 usualmente recibe comandos de gestión, peticiones de estado, y similares, tales como un comando de reinicio, o una petición de lectura de un registro de configuración de un banco 214, tal como un banco 0 214a. El agente de gestión 408 envía el comando de gestión a la cola de gestión del banco 0 416a.
Los agentes 402, 404, 406, 408 usualmente también monitorizan el estado de las colas 410, 412, 414, 416 y envían el estado, interrupciones y otros mensajes cuando las colas 410, 412, 414, 416 están llenas, casi llenas, no 65 funcionales, etc. En una realización, los agentes 402, 404, 406, 408 reciben comandos y generan los subcomandos correspondientes. En una realización, los agentes 402, 404, 406, 408 reciben comandos a través de los registros de
imagen32
control y estado 340 y generan los subcomandos correspondientes que se redirigen a las colas 410, 412, 414, 416. Un experto en la materia reconocerá otras funciones de los agentes 402, 404, 406, 408.
Las colas 410, 412, 414, 416 usualmente reciben comandos y almacenan los comandos hasta que se requieren para
5 enviarlos a los bancos de almacenamiento de estado sólido 214. En una realización típica, las colas 410, 412, 414, 416 son registros del tipo primero en entrar primero en salir ("FIFO") o un componente similar que opera como un FIFO. En otra realización las colas 410, 412, 414, 416 almacenan comandos en un orden que compagina datos, orden de importancia, u otros criterios.
10 Los controladores de bancos 418 usualmente reciben comandos desde las colas 410, 412, 414, 416 y generan los subcomandos apropiados. Por ejemplo, la cola de escritura del banco 0 412a puede recibir un comando para escribir una página de paquetes de datos al banco 0 214a. El controlador del banco 0 418a puede recibir el comando de escritura en un momento apropiado y puede generar uno o más subcomandos de escritura para cada paquete de datos almacenado en la memoria intermedia de escritura 320 a escribir a la página en el banco 0 214a. Por ejemplo,
15 el controlador del banco 0 418a puede generar comandos para validar el estatus del banco 0 214a y la red de almacenamiento de estado sólido 216, seleccionar la localización apropiada para escribir uno o más paquetes de datos, borrar las memorias intermedias de entrada dentro de la red de memoria de almacenamiento de estado sólido 216, transferir el uno o más paquetes de datos a las memorias intermedias de entrada, programar las memorias intermedias de entrada dentro de la localización seleccionada, verificar que los datos se programaron correctamente,
20 y si ocurren fallos del programa hacer una o más interrupciones del controlador maestro 224 reintentando la escritura a la misma localización física y reintentando la escritura a una localización física diferente. Adicionalmente, en conjunción con el comando de escritura de ejemplo, el controlador del bus de almacenamiento 348 causará que el uno o más comandos para multiplicar a cada uno de los buses I/O de almacenamiento 210a -n con la dirección lógica del comando mapeado a la primera dirección física para el bus I/O de almacenamiento 210a, y mapeado a la
25 segunda dirección física para el bus I/O de almacenamiento 210b, y así sucesivamente como se describe adicionalmente más adelante.
Usualmente, el árbitro de bus 420 selecciona de entre los controladores de bancos 418 y extrae los subcomandos desde las colas de salida dentro de los controladores de bancos 418 y los redirige al Controlador del Bus de 30 Almacenamiento 348 en una secuencia que optimiza el funcionamiento de los bancos 214. En otra realización, el árbitro de bus 420 puede responder a una interrupción de nivel alto y modificar el criterio de selección normal. En otra realización, el controlador maestro 224 puede controlar el árbitro de bus 420 a través de los registros de control y estado 340. Un experto en la técnica reconocerá otros medios por los que el árbitro de bus 420 puede controlar e intercalar la secuencia de comandos desde los controladores de bancos 418 al almacenamiento de estado sólido
35 110.
El árbitro de bus 420 usualmente coordina la selección de comandos apropiados, y los datos correspondientes cuando se requiere por el tipo de comando, desde los controladores de bancos 418 y envía los comandos y los datos al controlador del bus de almacenamiento 348. El árbitro de bus 420 usualmente también envía comandos al 40 bus de control de almacenamiento 212 para seleccionar el banco apropiado 214. Para el caso de memoria flash u otro almacenamiento de estado sólido 110 con un bus I/O de almacenamiento serie bidireccional asíncrono 210, solo un comando (información de control) o conjunto de datos se puede transmitir cada vez. Por ejemplo, cuando se está transmitiendo un comando de escritura o datos al almacenamiento de estado sólido 110 sobre el bus I/O de almacenamiento 210, los comandos de lectura, la lectura de datos, los comandos de borrado, los comandos de
45 gestión u otros comandos de estado no se pueden transmitir sobre el bus I/O de almacenamiento 210. Por ejemplo, cuando se están leyendo los datos desde el bus I/O de almacenamiento 210, no se pueden escribir datos al almacenamiento de estado sólido 110.
Por ejemplo, durante una operación de escritura sobre el banco 0, el árbitro de bus 420 selecciona el controlador del
50 banco 0 418a que puede tener un comando de escritura o una serie de subcomandos de escritura en la parte superior de su cola lo que causa que el controlador del bus de almacenamiento 348 ejecute la siguiente secuencia. El árbitro de bus 420 redirige el comando de escritura al controlador de bus del almacenamiento 348, que establece un comando de escritura seleccionando el banco 0 214a a través del bus de control de almacenamiento 212, enviando un comando para borrar las memorias intermedias de entrada de los elementos de almacenamiento de
55 estado sólido 110 asociadas con el banco 0 214a, y enviando un comando para validar el estado de los elementos de almacenamiento de estado sólido 216, 218, 220 asociados con el banco 0 214a. El controlador del bus de almacenamiento 348 transmite a continuación un subcomando de escritura sobre el bus I/O de almacenamiento 210, que contiene las direcciones físicas incluyendo la dirección lógica del bloque de borrado para cada elemento de almacenamiento de estado sólido de borrado físico individual 216a -m ya que se mapean desde la dirección lógica
60 del bloque de borrado. El controlador del bus de almacenamiento 348 multiplexa a continuación la memoria intermedia de escritura 320 a través de la memoria intermedia síncrona de escritura 308 para el bus I/O de almacenamiento 210 a través del MUX 350 y hace fluir los datos de escritura a la página apropiada. A continuación, cuando la página está llena el controlador del bus de almacenamiento 348 causa que los elementos de almacenamiento de estado sólido 216a -m asociados con el banco 0 214a programen la memoria intermedia de
65 entrada a las células de memoria dentro de los elementos de almacenamiento de estado sólido 216a -m.
imagen33
Finalmente, el controlador del bus de almacenamiento 348 valida el estado para asegurar que la página se programó correctamente. Una operación de lectura es similar al ejemplo de escritura anterior. Durante una operación de lectura, usualmente el árbitro del bus 420, u otro componente del controlador de intercalado de bancos 344, recibe los datos y la
5 información de estado correspondiente y envía los datos a la conducción de datos de lectura 108 mientras que envía la información de estado sobre los registros de control y estado 340. Usualmente, un comando de lectura de datos redirigido desde el árbitro de bus 420 al controlador de bus de almacenamiento 348 causará que el MUX 350 controle la entrada de los datos de lectura sobre el bus I/O de almacenamiento 210 a la conducción de datos de lectura 108 y envíe información de estado a los registros apropiados de control y estado 340 a través del MUX de
10 estados 422.
El árbitro de bus 420 coordina los diversos tipos de comandos y modos de acceso de datos de modo que solo un tipo de comando apropiado o los datos correspondientes están sobre el bus en un momento determinado. Si el árbitro de bus 420 ha seleccionado un comando de escritura, los subcomandos de escritura y los datos
15 correspondientes se escribirán al almacenamiento de estado sólido 110, el árbitro de bus 420 no permitirá otros tipos de comandos sobre el bus I/O de almacenamiento 210. Ventajosamente, el árbitro de bus 420 usa la información de temporización, tal como los tiempos de ejecución previsibles de los comandos, junto con la información de estado recibida concerniente al estado del banco 214 para coordinar la ejecución de diversos comandos sobre el bus con el objetivo de minimizar o eliminar el tiempo de reposo de los buses.
20 El controlador maestro 224 a través del árbitro de bus 420 usualmente usa los tiempos de terminación esperados de los comandos almacenados en las colas 410, 42, 414, 416, junto con la información de estado, de modo que cuando los subcomandos asociados con un comando se ejecutan sobre un banco 214a. otros subcomandos de otros comandos se ejecutan sobre otros bancos 214b -n. Cuando un comando se ejecuta completamente sobre el banco
25 214a, el árbitro de bus 420 dirige otro comando al banco 214a. El árbitro de bus 420 puede coordinar también los comandos almacenados en las colas 410, 412, 414, 416 con otros comandos que no están almacenados en las colas 410, 412, 414, 416.
Por ejemplo, se puede enviar un comando de borrado para borrar un grupo de bloques de borrado dentro del
30 almacenamiento de estado sólido 110. Un comando de borrado puede tardar de 10 a 1000 veces más de tiempo en ejecutarse que un comando de escritura o un comando de lectura o de 10 a 100 veces más de tiempo para ejecutar un comando de programa. Para N bancos 214, el controlador de intercalado de bancos 344 puede dividir el comando de borrado en N comandos, cada uno para borrar un bloque de borrado virtual de un banco 214a. Mientras que el banco 0 214a está ejecutando un comando de borrado, el árbitro de bus 420 puede seleccionar otros
35 comandos para su ejecución sobre los otros bancos 214b -n. El árbitro de bus 420 también puede funcionar con otros componentes, tales como el controlador de bus de almacenamiento 348, el controlador maestro 224, etc. para coordinar la ejecución de comandos entre los buses. La coordinación en la ejecución de los comandos usando el árbitro de bus 420, los controladores de bancos 418, las colas 410, 412, 414, 416 y los agentes 402, 404, 406, 408 del controlador de intercalado de bancos 344 pueden aumentar drásticamente el rendimiento sobre otros sistemas
40 de almacenamiento de estado sólido sin una función de intercalado de bancos.
En una realización, el controlador de estado sólido 104 incluye un controlador de intercalado de bancos 344 que sirve a todos los elementos de almacenamiento 216, 218, 220 del almacenamiento de estado sólido 110. En otra realización, el controlador de estado sólido 104 incluye un controlador de intercalado de bancos 344 para cada fila 45 de elementos de almacenamiento 216a -m, 218a -m, 220a -m. Por ejemplo, un controlador de intercalado de bancos 344 sirve a una fila de elementos de almacenamiento SSS 0.0 -SSS 0.N 216a, 218a, 220a, un segundo controlador de intercalado de bancos 344 sirve a una segunda fila de elementos de almacenamiento SSS 1.0 -SSS
1.N 216b, 218b, 220b etc.
50 La Figura 4B es un diagrama de bloques esquemático que ilustra una realización alternativa 401 de un controlador de intercalado de bancos 344 en el controlador de almacenamiento de estado sólido 104 de acuerdo con la presente invención. Los componentes 210, 212, 340, 346, 348, 350, 402 -430 representados en la realización mostrada en la Figura 4B son sustancialmente similares al aparato de intercalado de bancos 400 descrito en relación con la Figura 4A excepto que el cada banco 214 incluye una cola única 432a -n y los comandos de lectura, los comandos de
55 escritura, los comandos de borrado, los comandos de gestión, etc. para un banco (por ejemplo el banco 0 214a) se dirigen a una cola única.432a para el banco 214a. Las colas 432, en una realización son FIFO. En otra realización, las colas 432 pueden tener comandos extraídos desde las colas 432 en un orden distinto que el orden en el que se almacenaron. En otra realización alternativa (no mostrada), el agente de lectura 402, el agente de escritura 404, el agente de borrado 406, y el agente de gestión 408 se pueden combinar en un único agente que asigna comandos a
60 las colas apropiadas 432a -n.
En otra realización alternativa (no mostrada) los comandos se almacenan en una cola única donde los comandos se pueden extraer de la cola en un orden distinto a como se almacenaron de modo que el controlador de intercalado de bancos 344 puede ejecutar un comando sobre un banco 214a mientras que otros comandos se ejecutan en los 65 bancos restantes 214b -n. Un experto en la materia reconocerá fácilmente otras configuraciones de colas y tipos
imagen34
para posibilitar la ejecución de un comando sobre un banco 214a mientras que otros comandos se ejecutan sobre otros bancos 214b -n.
Componentes específicos de almacenamiento
5 El controlador de almacenamiento de estado sólido 104 incluye una memoria intermedia de sincronización 346 que memoriza temporalmente los comandos y los mensajes de estado enviados hacia y recibidos desde el almacenamiento de estado sólido 110. La memoria intermedia de sincronización 346 se localiza en una frontera entre el domino del reloj del almacenamiento de estado sólido y el domino del reloj del bus local y proporciona el almacenamiento temporal para dar cuenta de las diferencias en el dominio del reloj. La memoria intermedia de sincronización 346, la memoria intermedia de sincronización de escritura 308, y la memoria intermedia de sincronización de lectura 328 pueden ser independientes o pueden actuar juntas para almacenar temporalmente los datos, comandos, mensajes de estado, etc. En la realización preferida, la memoria intermedia de sincronización 346 está localizada donde hay el menor número de señales que cruzan los dominios de reloj. Un experto en la materia
15 reconocerá que la sincronización entre los dominios de reloj se puede mover arbitrariamente a otras localizaciones dentro del dispositivo de almacenamiento de estado sólido 102 para optimizar algún aspecto de la implementación del diseño.
El controlador de almacenamiento de estado sólido 104 incluye un controlador del bus de almacenamiento 348 que interpreta y traduce los comandos para los datos enviados y leídos desde el almacenamiento de estado sólido 110 y los mensajes de estado recibidos desde el almacenamiento de estado sólido 110 en base al tipo de almacenamiento de estado sólido 110. Por ejemplo, el controlador del bus de almacenamiento 348 puede tener diferentes requisitos de temporización para los diferentes tipos de almacenamiento, almacenamientos con diferentes características de funcionamiento, almacenamientos de diferentes fabricantes, etc. El controlador del bus de almacenamiento 348
25 también envía comandos de control al bus de control de almacenamiento 212.
En la realización preferida, el controlador de almacenamiento de estado sólido 104 incluye un MUX 350 que comprende una red de multiplexores 350a -n donde cada multiplexor está dedicado a una fila en la red de almacenamiento de estado sólido 110. Por ejemplo, un multiplexor 350a está asociado con los elementos de almacenamiento de estado sólido 216a, 218a, 220a. El MUX 350 encamina los datos desde la conducción de datos de escritura 106 y los comandos desde el controlador del bus de almacenamiento 348 al almacenamiento de estado sólido 110 a través del bus I/O de almacenamiento 210 y encamina los datos y los mensajes de estado desde el almacenamiento de estado sólido 110 a través del bus I/O de almacenamiento 210 a la conducción de datos de lectura 108 y los registros de control y estado 340 a través del controlador del bus de almacenamiento 348, la
35 memoria intermedia de sincronización 346, y el controlador de intercalado de bancos 344.
En la realización preferida, el controlador de almacenamiento de estado sólido 104 incluye un MUX 350 para cada fila de elementos de almacenamiento de estado sólido (por ejemplo SSS 0.1 216a, SSS 0.2 218a, SSS 0.N 220a). Un MUX 350 combina los datos desde la conducción de datos de escritura 106 y los comandos enviados al almacenamiento de estado sólido 110 a través del bus I/O de almacenamiento 210 y separa los datos a procesar por la conducción de datos de lectura 108 de los comandos. Los paquetes almacenados en la memoria intermedia de escritura 320 se dirigen sobre buses de la memoria intermedia de escritura 320 a través de la memoria intermedia de sincronización de escritura 308 para cada fila de elementos de almacenamiento de estado sólido (SSS x.0 a SSS
x.N 216, 218, 220) al MUX 350 para cada fila de elementos de almacenamiento de estado sólido (SSS x.0 a SSS
45 x.N 216, 218, 220). Los comandos y los datos de lectura se reciben por los MUX 350 desde el bus I/O de almacenamiento 210. Los MUX 350 también dirigen mensajes de estado al controlador del bus de almacenamiento
348.
El controlador del bus de almacenamiento 348 incluye un módulo de mapeo 424. El módulo de mapeo 424 mapea una dirección lógica de un bloque de borrado a una o más direcciones físicas de un bloque de borrado. Por ejemplo, un almacenamiento de estado sólido 110 con una red de veinte elementos de almacenamiento (por ejemplo SSS 0.0 a SSS M.0 216) por bloque 214a pueden tener una dirección lógica para un bloque de borrado particular mapeado a veinte direcciones físicas por elemento de borrado. Debido a que los elementos de almacenamiento se acceden en paralelo, los bloques de borrado en la misma posición en cada elemento de almacenamiento en una fila de
55 elementos de almacenamiento 216a, 218a, 220a compartirán una dirección física. Para seleccionar un bloque de borrado (por ejemplo en el elemento de almacenamiento SSS 0.0 216a) en lugar de todos los bloques de borrado en la fila (por ejemplo en los elementos de almacenamiento SSS 0.0, 0,1, … 0..N 216a, 218a, 220a), se selecciona un banco (en este caso el banco 0 214a).
Este mapeo de lógico a físico para los bloques de borrado para borrar bloques es beneficioso debido a que si un bloque de borrado resulta dañado o inaccesible, se puede cambiar el mapeo para mapear a otro bloque de borrado. Esto mitiga el perjuicio de perder un bloque de borrado virtual entero cuando un bloque de borrado del elemento falla. El módulo de re-mapeo 430 cambia un mapeo de una dirección lógica de un bloque de borrado a uno o más direcciones físicas de un bloque de borrado virtual (difundido sobre la red de elementos de almacenamiento). Por 65 ejemplo, el bloque de borrado virtual 1 se puede mapear para borrar el bloque 1 del elemento de almacenamiento SSS 0.0 216a, para borrar el bloque 1 del elemento de almacenamiento SSS 1.0 216b …, y el elemento de
imagen35
5 debido al uso, etc. o no se puede usar por alguna razón, el módulo de re-mapeo 430 podría cambiar el mapeo de lógico a físico para la dirección lógica que apunta al bloque de borrado 1 del bloque de borrado virtual 1. Si un bloque de borrado de repuesto (sea el bloque de borrado 221) del elemento de almacenamiento SSS 0.0 216a está disponible y actualmente no mapeado, el módulo de re-mapeo 430 podría cambiar el mapeo del bloque de borrado virtual 1 para apuntar al bloque de borrado 221 del elemento de almacenamiento SSS 0.0 216a, mientras que continúa apuntado al bloque de borrado 1 del elemento de almacenamiento SSS 1.0 216b, el bloque de borrado 1 del elemento de almacenamiento SSS 2.0 (no mostrado)…, y al elemento de almacenamiento M. 0.216m. El módulo de mapeo 424 o el módulo de re-mapeo 430 podrían mapear bloques de borrado en un orden prescrito (el bloque de borrado virtual 1 al bloque de borrado 1 de los elementos de almacenamiento, el bloque de borrado virtual 2 al bloque de borrado 2 del elemento de almacenamiento, etc.) o puede mapear bloques de borrado de los elementos
15 de almacenamiento 216, 218, 220 en otro orden en base a algunos otros criterios.
En una realización, los bloques de borrado se podrían agrupar por tiempo de acceso. Significando el agrupamiento por tiempo de acceso que el tiempo de ejecutar un comando, tal como la programación de datos (escritura) en páginas de bloques de borrado específicas, pueden nivelar la terminación de comandos de modo que un comando ejecutado a través de bloques de borrado de un bloque de borrado virtual no esté limitado por el bloque de borrado más lento. En otras realizaciones, los bloques de borrado se pueden agrupar por el nivel de uso, salud, etc. Un experto en la técnica reconocerá otros factores a considerar con el mapeo o re-mapeo de los bloques de borrado.
En una realización, el controlador del bus de almacenamiento 348 incluye un módulo de captura de estados 426 que
25 recibe mensajes de estado desde el almacenamiento de estado sólido 110 y envía los mensajes de estado al MUX de estados 422. En otra realización, cuando el almacenamiento de estado sólido 110 es una memoria flash, el controlador del bus de almacenamiento 348 incluye un controlador de bus NAND 428. El controlador de bus NAND 428 dirige los comandos desde las conducciones de datos de lectura y escritura 106, 108 a la localización correcta en el almacenamiento de estado sólido 110, coordina la temporización de la ejecución de comandos en base a las características de la memoria flash, etc. si el almacenamiento de estado sólido 110 es otro tipo de almacenamiento de estado sólido, el controlador de bus NAND 428 se reemplazaría por un controlador de bus específico para el tipo de almacenamiento. Un experto en la materia reconocerá otras funciones de un controlador de bus NAND 428.
Diagramas de flujo
35 La Figura 5A es un diagrama de flujo esquemático que ilustra una realización de un método 500 para gestionar los datos en un dispositivo de almacenamiento de estado sólido 102 que usa una conducción de datos de acuerdo con la presente invención. El método 500 comienza en 502 y la memoria intermedia de entrada 306 recibe 504 uno o más segmentos de datos a escribir al almacenamiento de estado sólido 110. El uno o más segmentos de datos usualmente incluyen al menos una porción de un objeto pero puede ser un objeto entero. El empaquetador 302 puede crear uno o más paquetes específicos del objeto en conjunción con un objeto. El empaquetador 302 añade una cabecera a cada paquete que usualmente incluye la longitud del paquete y un número de secuencia para el paquete dentro del objeto. El empaquetador 302 recibe 504 el uno o más segmentos de datos o metadatos que se almacenaron en la memoria intermedia de entrada 306 y empaqueta 506 el uno o más segmentos de datos o
45 metadatos creando uno o más paquetes dimensionados para el almacenamiento de estado sólido 110 donde cada paquete incluye una cabecera y datos desde el uno o más segmentos.
Usualmente, un primer paquete incluye un identificador de objetos que identifica el objeto para el cual se creó el paquete. Un segundo paquete puede incluir una cabecera con información usada por el dispositivo de almacenamiento sólido 102 para asociar el segundo paquete al objeto identificado en el primer paquete y la información de desplazamiento localizando el segundo paquete dentro del objeto y los datos. El controlador del dispositivo de almacenamiento de estado sólido 202 gestiona el banco 214 y el área física al que fluyen los paquetes.
55 El generador de ECC 304 recibe un paquete desde el empaquetador 302 y genera 508 el ECC para los paquetes de datos. Usualmente, no hay una relación fija entre los paquetes y los bloques de ECC. Un bloque de ECC puede comprender uno o más paquetes. Un paquete puede comprender uno o más bloques de ECC. Un paquete puede comenzar y terminar en cualquier parte dentro de un bloque de ECC. Un paquete puede comenzar en cualquier parte en un primer bloque de ECC y terminar en cualquier parte de un bloque de ECC posterior.
La memoria intermedia de sincronización de escritura 308 memoriza temporalmente 510 los paquetes según se distribuyen dentro de los bloques de ECC correspondientes antes de escribir los bloques de ECC en el almacenamiento de estado sólido 110 y a continuación el controlador de almacenamiento de estado sólido 104 escribe 512 los datos en el momento apropiado considerando las diferencias de los dominios de reloj, y el método
65 500 termina 514. La memoria intermedia de sincronización de escritura 308 está localizada en la frontera entre el dominio de reloj local y el domino de reloj del almacenamiento de estado sólido 110. Obsérvese que el método 500 describe recibir uno o más segmentos de datos y escribir uno o más paquetes de datos por conveniencia, pero usualmente se recibe un flujo de segmentos de datos y un grupo. Usualmente varios bloques de ECC que comprenden una página virtual completa del almacenamiento de estado sólido 110 se escriben en el almacenamiento de estado sólido 110. Usualmente el empaquetador 302 recibe segmentos de datos de un tamaño y
imagen36
5 genera paquetes de otro tamaño. Esto requiere necesariamente segmentos de datos o metadatos o partes de segmentos de datos o metadatos a combinar para formar paquetes de datos para capturar todos los datos de los segmentos dentro de los paquetes.
La Figura 5B es un diagrama de flujo esquemático que ilustra una realización de un método para una SAN en
10 servidor de acuerdo con la presente invención. El método 501 comienza 552 y el módulo de comunicación de almacenamiento 162 facilita 554 la comunicación entre un primer controlador de almacenamiento 152a y al menos un dispositivo externo al primer servidor 112a. La comunicación entre el primer controlador de almacenamiento 152a y el dispositivo externo es independiente del primer servidor 112a. El primer controlador de almacenamiento 152a está dentro del primer servidor 112a y el primer controlador de almacenamiento 152a controla al menos un
15 dispositivo de almacenamiento 154a. El primer servidor 112a incluye una interfaz de red 156a colocada con el primer servidor 112a y el primer controlador de almacenamiento 152a. El módulo de SAN en servidor 164 sirve 556 la petición de almacenamiento y el método 501 termina 558. El módulo de SAN en servidor 164 sirve 556 la petición de almacenamiento usando un protocolo de red y/o un protocolo de bus. El módulo de SAN en servidor 164 sirve 556 la petición de almacenamiento independiente del primer servidor 112a y la petición de servicio se recibe desde un
20 cliente 114, 114a.
La Figura 6 es un diagrama de flujo esquemático que ilustra otra realización de un método 600 para gestionar los datos en un dispositivo de almacenamiento de estado sólido 102 usando una conducción de datos de acuerdo con la presente invención. El método 600 comienza 602 y la memoria intermedia de entrada 306 recibe 604 uno o más
25 segmentos de datos o metadatos a escribir en el almacenamiento de estado sólido 110. El empaquetador 302 añade una cabecera a cada paquete que típicamente incluye la longitud del paquete dentro del objeto. El empaquetador 302 recibe 604 el uno o más segmentos que se almacenan en la memoria intermedia de entrada 306 y empaqueta 606 el uno o más segmentos creando uno o más paquetes dimensionados para el almacenamiento de estado sólido 110 donde cada paquete incluye una cabecera y datos del uno o más segmentos.
30 El generador de ECC 304 recibe un paquete desde el empaquetador 302 y genera 608 uno o más bloques de ECC para los paquetes. La memoria intermedia de sincronización de escritura 308 almacena temporalmente 610 los paquetes según se distribuyen dentro de los bloques de ECC correspondientes antes de escribir los bloques de ECC en el almacenamiento de estado sólido 110 y a continuación el controlador del almacenamiento de estado sólido 104
35 escribe 612 los datos en un momento apropiado considerando las diferencias de los dominios de reloj. Cuando se solicitan datos desde el almacenamiento de estado sólido 110, los bloques de ECC que comprenden uno o más paquetes de datos se leen dentro de la memoria intermedia de sincronización de lectura 328 y se almacenan temporalmente 614. Los bloques de ECC del paquete se reciben sobre el bus I/O de almacenamiento 210. Como el bus I/O de almacenamiento 210 es bidireccional, cuando se leen datos, se paran las operaciones de escritura, las
40 operaciones de comandos, etc.
El módulo de corrección de ECC 322 recibe los bloques de ECC de los paquetes solicitados mantenidos en la memoria intermedia de sincronización de lectura 328 y corrige 616 los errores dentro de cada bloque de ECC cuando sea necesario. Si el módulo de corrección de ECC 322 determina que existen uno o más errores en un
45 bloque de ECC y los errores son corregibles usando el síndrome de ECC, el módulo de corrección de ECC 322 corrige 616 los errores en el bloque de ECC. Si el módulo de corrección de ECC 322 determina que un error detectado no es corregible usando el ECC, el módulo de corrección de ECC 322 envía una interrupción.
El des-empaquetador 324 recibe 618 el paquete solicitado después de que el módulo de corrección de ECC 322
50 corrige cualesquiera errores y desempaqueta 618 los paquetes comprobando y eliminando la cabecera de paquete de cada paquete. El módulo de alineamiento 326 recibe los paquetes después de desempaquetar, elimina los datos no deseados, y reformatea 620 los paquetes de datos como segmentos de datos o metadatos de un objeto en una forma compatible con el dispositivo solicitante del segmento u objeto. La memoria intermedia de salida 330 recibe los paquetes solicitados después de desempaquetar y almacena temporalmente 622 los paquetes antes de su
55 transmisión al dispositivo solicitante 155, y el método 600 termina 624.
La Figura 7 es un diagrama de flujo esquemático que ilustra una realización de un método 700 para la gestión de datos en un dispositivo de almacenamiento de estado sólido 102 usando un intercalado de bancos de acuerdo con la presente invención. El método 700 comienza 702 y el controlador de intercalado de bancos 344 dirige 604 uno o 60 más comandos a dos o más colas 410, 42, 414, 416. Usualmente los agentes 402, 404, 406, 408 dirigen 704 los comandos a las colas 410, 42, 414, 416 por tipo de comando. Cada conjunto de colas 410, 42, 414, 416 incluye una cola para cada tipo de comando. El controlador de intercalado de bancos 344 coordina 706 entre los bancos 214 la ejecución de los comandos almacenados en las colas 410, 42, 414, 416 de modo que un comando de un primer tipo se ejecuta en un banco 214a mientras que un comando de un segundo tipo se ejecuta en un segundo banco 214b, y
65 el método 700 termina 708.
imagen37
Recuperación del espación de almacenamiiento
La Figura 8 es un diagrama de bloques esquemático que ilustra una realización de un aparato 800 para la recogida de basura en un dispositivo de almacenamiento de estado sólido 102 de acuerdo con la presente invención. El
5 aparato 800 incluye un módulo de almacenamiento secuencial 802, un módulo de selección de división de almacenamiento 804, un módulo de recuperación de datos 806, y un módulo de recuperación de la división de almacenamiento 808, que se describen a continuación. En otras realizaciones, el aparato 800 incluye un módulo de marcación de basura 810 y un módulo de borrado 812.
El aparato 800 incluye un módulo de almacenamiento secuencial 802 que escribe secuencialmente paquetes de datos en una página dentro de una división de almacenamiento. Los paquetes se almacenan secuencialmente según sean paquetes nuevos o paquetes modificados. Los paquetes modificados en esta realización típicamente no se escriben de nuevo en la localización donde estaban almacenados anteriormente. En una realización, el módulo de almacenamiento secuencial 802 escribe un paquete a la primera localización en una página de una división de
15 almacenamiento, a continuación a la siguiente localización de la página, y a la siguiente, y la siguiente, hasta que se rellena la página. El módulo de almacenamiento secuencial 802 comienza a continuación a rellenar la siguiente página en la división de almacenamiento. Esto continúa hasta que se rellena la división de almacenamiento.
En una realización preferida, el módulo de almacenamiento secuencial 802 comienza a escribir paquetes a las memorias intermedias de escritura de almacenamiento en los elementos de almacenamiento (por ejemplo SSS 0.0 a SSS M.0 216) de un banco (banco 0 214a). Cuando las memorias intermedias de escritura de almacenamiento están llenas, el controlador de almacenamiento de estado sólido 104 causa que los datos en las memorias intermedias de escritura de almacenamiento se programen en las páginas designadas dentro de los elementos de almacenamiento 216 del banco 214a. A continuación se selecciona otro banco (por ejemplo, el banco 1 214b) y el
25 módulo de almacenamiento secuencial 802 comienza a escribir los paquetes a las memorias intermedias de escritura de almacenamiento de los elementos de almacenamiento 218 del banco 214b mientras que el primer banco 0 214a está programando las páginas designadas. Cuando las memorias intermedias de escritura de almacenamiento de este banco 214b están llenas, los contenidos de las memorias intermedias de escritura de almacenamiento se programan dentro de otra página designada en cada elemento de almacenamiento 218. Este proceso es eficiente porque mientras que un banco 214a está programando una página, las memorias intermedias de escritura de almacenamiento de otro banco 214b se pueden estar rellenando.
La división de almacenamiento incluye una porción de un almacenamiento de estado sólido 110 en un dispositivo de almacenamiento de estado sólido 102. Usualmente la división de almacenamiento es un bloque de borrado. Para
35 memorias flash, una operación de borrado sobre un bloque de borrado escribe unos a cada bit en el bloque de borrado cargando cada célula. Este es un proceso largo en comparación con una operación de programa que comienza con una localización en la que son todo unos, y según se escriben los datos, se cambian algunos bits a cero descargando las células escritas con un cero. Sin embargo, cuando el almacenamiento de estado sólido 110 no es una memoria flash o tiene memoria flash donde el ciclo de borrado tarda una cantidad de tiempo similar que otras operaciones, tales como una operación de lectura o de programa, puede que no se requiera borrar la división de almacenamiento.
Como se usa en este documento, una división de almacenamiento es equivalente en área a un bloque de borrado pero puede borrarse o no. Cuando se usa un bloque de borrado en este documento, un bloque de borrado se puede
45 referir a un área particular de un tamaño designado dentro de un elemento de almacenamiento (por ejemplo SS 0.0 216a) y usualmente incluye una cierta cantidad de páginas. Donde se usa "bloque de borrado" en conjunción con memoria flash, usualmente es una división de almacenamiento que se borra antes de escribirse. Donde se usa "bloque de borrado" con "almacenamiento de estado sólido" se puede borrar o no. Como se usa en este documento, un bloque de borrado puede incluir un bloque de borrado o un grupo de bloques de borrado con un bloque de borrado en cada una de las filas de elementos de almacenamiento (por ejemplo, SSS 0.0 a SSS M.0 216a -n) que también se puede referir en este documento como un bloque de borrado virtual. Cuando se refiere a la construcción lógica asociada con el bloque de borrado virtual, los bloques de borrado se pueden referir en este documento como un bloque de borrado lógico ("LEB").
55 Usualmente, los paquetes se almacenan secuencialmente por orden de procesamiento. En una realización, donde se usa una conducción de datos de escritura 106, el módulo de almacenamiento secuencial 802 almacena paquetes en el orden en el que salen de la conducción de datos de escritura 106. Este orden puede ser el resultado de segmentos de datos que llegan desde un dispositivo solicitante 155 mezclados con paquetes de datos válidos que se están leyendo desde otra división de almacenamiento como datos válidos que se están recuperando desde una división de almacenamiento durante una operación de recuperación como se explica más adelante. El reenrutamiento de paquetes de datos válidos recuperados para la conducción de datos de escritura 106 puede incluir la derivación del recogedor de basuras 316 como se ha descrito anteriormente en relación con el controlador del almacenamiento de estado sólido 104 de la Figura 3.
65 El aparato 800 incluye un módulo de selección de la división de almacenamiento 804 que selecciona una división de almacenamiento para la recuperación. La selección de una división de almacenamiento para la recuperación puede ser para la reutilización de la división de almacenamiento por el módulo de almacenamiento secuencial 802 para la escritura de datos, añadiendo de este modo la división de almacenamiento recuperado para la pila de almacenamiento, o para recuperar datos válidos desde la división de almacenamiento después de la determinación de que está fallando la división de almacenamiento, que no es fiable, que se debería refrescar, o por otra razón para
imagen38
5 tomar la división de almacenamiento temporalmente o permanentemente fuera de la pila de almacenamiento. En otra realización, el módulo de la sección de división de almacenamiento 804 selecciona una división de almacenamiento para la recuperación identificando una división de almacenamiento o bloque de borrado con una cantidad elevada de datos inválidos.
En otra realización, el módulo de selección de la división de almacenamiento 804 selecciona una división de almacenamiento para la recuperación identificando una división de almacenamiento o bloque de borrado con una baja cantidad de uso. Por ejemplo, identificar una división de almacenamiento o bloque de borrado con una baja cantidad de uso puede incluir identificar una división de almacenamiento con una baja cantidad de datos inválidos, un bajo número de ciclos de borrado, una baja tasa de errores de bits o una baja cuenta de programa (bajo número
15 de veces que se escribe una página de datos en una memoria intermedia para una página en la división de almacenamiento; la cuenta de programa se puede medir desde cuando se fabricó el dispositivo, desde cuando se borró la última división de almacenamiento, desde otros eventos arbitrarios y desde combinaciones de estos). El módulo de selección de la división de almacenamiento 804 también puede usar cualquier combinación de los anteriores u otros parámetros para determinar una división de almacenamiento con una baja cantidad de uso. La selección de una división de almacenamiento para la recuperación determinando una división de almacenamiento con una baja cantidad de uso puede ser deseable para encontrar divisiones de almacenamiento que están infrautilizadas, se puede recuperar la nivelación de uso, etc.
En otra realización el módulo de selección de la división de almacenamiento 804 selecciona una división de
25 almacenamiento para la recuperación identificando una división de almacenamiento o bloque de borrado con una alta cantidad de uso. Por ejemplo, la identificación de una división de almacenamiento o bloque de borrado con una cantidad elevada de uso puede incluir identificar una división de almacenamiento con un número elevado de ciclos de borrado, una elevada tasa de errores de bits, una división de almacenamiento con un bloque de ECC no recuperable o una elevada cuenta de programa. El módulo de selección de la división de almacenamiento 804 puede usar también cualquier combinación de los anteriores u otros parámetros para determinar una división de almacenamiento con una elevada cantidad de uso. La selección de una división de almacenamiento para recuperación determinando una división de almacenamiento con una elevada cantidad de uso puede ser deseable encontrar divisiones de almacenamiento que están sobre utilizadas, se puede recuperar refrescando la división de almacenamiento usando un ciclo de borrado, etc. o retirar la división de almacenamiento del servicio como no
35 utilizable.
El aparato 800 incluye un módulo de recuperación de datos 806 que lee paquetes de datos válidos desde la división de almacenamiento seleccionada para recuperación, pone en cola los paquetes de datos válidos con otros paquetes de datos a escribir secuencialmente por el módulo de almacenamiento secuencial 802 y actualiza un índice con una nueva dirección física de los datos válidos escritos por el módulo de almacenamiento secuencial 802. Usualmente el índice es el índice de objeto que mapea los identificadores de objetos de datos de objetos a direcciones físicas de donde se derivan los paquetes a partir de los objetos de datos que están almacenados en el almacenamiento de estado sólido 110.
45 En una realización el aparato 800 incluye un módulo de recuperación de la división de almacenamiento 808 que prepara la división de almacenamiento para utilizar o reutilizar y marca la división de almacenamiento como disponible al módulo de almacenamiento secuencial 802 para escribir secuencialmente paquetes de datos después de que el módulo de recuperación de datos 806 ha completado la copia de datos válidos desde la división de almacenamiento. En otra realización, el aparato 800 incluye un módulo de recuperación de la división de almacenamiento 808 que marca la división de almacenamiento seleccionada para la recuperación como no disponible para el almacenamiento de los datos. Usualmente esto es debido a que el módulo de selección de la división de almacenamiento 804 que identifica una división de almacenamiento o bloque de borrado con una elevada cantidad de uso de modo que la división de almacenamiento o bloque de borrado no está en condición de usarse para almacenamiento de datos fiable
55 En una realización, el aparato 800 es un controlador del dispositivo de almacenamiento de estado sólido 202 de un dispositivo de almacenamiento de estado sólido 102. En otra realización, el aparato 800 controla un controlador del dispositivo de almacenamiento de estado sólido 202. En otra realización, una porción del aparato 800 está en un controlador del dispositivo de almacenamiento de estado sólido 202. En otra realización, el índice de objetos actualizado por el módulo de recuperación de datos 806 está también localizado en el controlador del dispositivo de almacenamiento de estado sólido 202.
En una realización, la división de almacenamiento es un bloque de borrado y el aparato 800 incluye un módulo de borrado 810 que borra un bloque de borrado seleccionado para la recuperación después de que el módulo de 65 recuperación de datos 806 haya copiado los paquetes de datos válidos desde el bloque de borrado seleccionado y antes de que el módulo de recuperación de la división de almacenamiento 808 marque el bloque de borrado como
imagen39
disponible. Para la memoria flash y otro almacenamiento de estado sólido con una operación de borrado que tarda mucho más tiempo que las operaciones de lectura o escritura, es deseable borrar un bloque de datos antes de que esté disponible para la escritura de nuevos datos para una operación eficiente. Cuando el almacenamiento de estado sólido 110 está dispuesto en bancos 214, la operación de borrado por el módulo de borrado 810 se puede
5 ejecutar sobre un banco mientras que en otros bancos se ejecutan lecturas, escrituras u otras operaciones.
En una realización, el aparato 800 incluye un módulo de marcación de basuras 812 que identifica un paquete de datos en una división de almacenamiento como inválido en respuesta a una operación que indica que el paquete de datos ya no es válido. Por ejemplo, si se borra un paquete de datos, el módulo de marcación de basuras 812 puede 10 identificar el paquete de datos como inválido. Una operación de leer -modificar -escribir es otro modo para identificar un paquete de datos como inválido. En una realización el módulo de marcación de basuras 812 puede identificar el paquete de datos como inválido actualizando un índice. En otra realización, el módulo de marcación de basuras 812 puede identificar el paquete de datos como inválido almacenando otro paquete de datos que indica que el paquete de datos inválido se ha borrado. Esto es ventajoso porque el almacenamiento de la información de que
15 se ha borrado el paquete, en el almacenamiento de estado sólido 110, permite al módulo de reconstrucción de índices de objetos 272 o módulo similar reconstruir el índice del objeto con una entrada que indica que se ha borrado el paquete de datos inválidos.
En una realización, el aparato 800 se puede usar para rellenar el resto de una página virtual de datos siguiendo un
20 comando de traspaso para mejorar el funcionamiento global, donde el comando de traspaso para el flujo de datos, dentro de la conducción de escritura 106 hasta que la conducción de escritura 106 se vacía y todos los paquetes se han escrito permanentemente dentro del almacenamiento de estado sólido no volátil 110. Esto tiene el beneficio de reducir la cantidad requerida de recogida de basura, la cantidad de tiempo usado para borrar las divisiones de almacenamiento y la cantidad de tiempo requerido para programar páginas virtuales. Por ejemplo, se puede recibir
25 un comando de traspaso cuando solo un pequeño paquete está preparado para escribirse dentro de la página virtual del almacenamiento de estado sólido 110. La programación de esta página virtual casi vacía podría dar como resultado la necesidad de recuperar inmediatamente el espacio gastado, causando que los datos válidos dentro de la división de almacenamiento se recojan como basura innecesariamente y la división de almacenamiento borrada, recuperada y devuelta a la pila de espacio disponible para escritura por el módulo de almacenamiento secuencial
30 802.
La marcación de los paquetes de datos como inválidos en lugar de borrar realmente un paquete de datos inválido, es eficiente porque, como se ha mencionado anteriormente, para la memoria flash y para otros almacenamientos similares una operación de borrado tarda una cantidad significativa de tiempo. Permitir a un sistema de recogida de
35 basura como se ha descrito en el aparato 800 operar de forma autónoma dentro del almacenamiento de estado sólido 110 proporciona un modo de separar las operaciones de borrado de las operaciones de lectura, escritura y otras operaciones más rápidas de modo que el dispositivo de almacenamiento de estado sólido 102 puede operar más rápido que muchos otros sistemas de almacenamiento de estado sólido o dispositivos de almacenamiento de datos.
40 La Figura 9 es un diagrama de flujo esquemático que ilustra una realización de un método 900 para la recuperación de almacenamiento de acuerdo con la presente invención. El método 900 comienza 902 y el módulo de almacenamiento secuencial 802 escribe secuencialmente 904 paquetes de datos en una división de almacenamiento. La división de almacenamiento es una porción de un almacenamiento de estado sólido 110 en un
45 dispositivo de almacenamiento de estado sólido 102. Usualmente una división de almacenamiento es un bloque de borrado. Los paquetes de datos se derivan de un objeto y los paquetes de datos se almacenan secuencialmente por orden de procesamiento.
El módulo de selección de la división de almacenamiento 804 selecciona 906 una división de almacenamiento para
50 recuperar y el módulo de recuperación de datos 806 lee 908 los paquetes de datos válidos desde la división de almacenamiento seleccionada para la recuperación. Típicamente los paquetes de datos válidos son paquetes de datos que no se han marcado para el borrado o eliminación o alguna otra marcación de datos inválidos y se consideran datos válidos o "buenos". El módulo de recuperación de datos 806 pone en cola 910 los paquetes de datos válidos con otros paquetes de datos programados para escribir secuencialmente por el módulo de
55 almacenamiento secuencial 802. El módulo de recuperación de datos 806 actualiza 912 un índice con una nueva dirección física de datos válidos escritos por el módulo de almacenamiento secuencial 802. El índice incluye un mapeo de direcciones físicas de paquetes de datos a identificadores de objetos. Los paquetes de datos son los almacenados en el almacenamiento de estado sólido 110 y los identificadores de objetos corresponden a los paquetes de datos.
60 Después de que el módulo de recuperación de datos 806 completa la copia de datos válidos desde la división de almacenamiento, el módulo de recuperación de la división de almacenamiento 808 marca 914 la división de almacenamiento seleccionada para recuperación como disponible para el módulo de almacenamiento secuencial 802 para la escritura secuencial de paquetes de datos y el método 900 termina 916.
65 Raid distribuida del extremo frontal
imagen40
Los sistemas de RAID tradicionales están configurados con un controlador de RAID que funciona para recibir datos, calcular patrones de desmontaje para los datos, dividir los datos en segmentos de datos, calcular una banda de
5 paridad, almacenar los datos sobre dispositivos de almacenamiento, actualizar los segmentos de datos, etc. Aunque algunos controladores de RAID permiten que algunas funciones estén distribuidas, los dispositivos de almacenamiento gestionados por el controlador de RAID no comunican con los clientes 114 directamente para el almacenamiento de los datos desmontados en una RAID. En efecto las solicitudes de almacenamiento y los datos para una estructuración en RAID pasan a través del controlador de RAID.
Requerir al controlador de RAID para que toque todos los datos a almacenar en una RAID es ineficiente porque crea un cuello de botella en el flujo de datos. Esto es especialmente cierto durante un proceso de lectura -modificación escritura donde se consume ancho de banda y tiempo de funcionamiento de todas las unidades en el grupo de RAID mientras que solo se actualiza realmente un subconjunto. Además, la región del dispositivo de almacenamiento
15 designado para los datos gestionados por el controlador de RAID se dedica usualmente al grupo de RAID y no se puede acceder de forma independiente. El acceso a un dispositivo de almacenamiento 150 por un cliente usualmente debe lograrse por partición del dispositivo de almacenamiento 150. Cuando se usa la partición, las particiones accesibles para el almacenamiento general no se usan para la RAID y las particiones asignadas al grupo de RAID no son accesibles para el almacenamiento de datos general. Los esquemas que sobre-suscriben las particiones para una utilización de optimización global son complejos y más difíciles de gestionar. Además, el espacio de almacenamiento asignando para un grupo de RAID no se puede acceder por más de un controlador RAID a menos que se designe uno como maestro y otros controladores de RAID actúen como esclavos salvo que el controlador de RAID maestro esté inactivo, no funcional, etc.
25 Los controladores de RAID típicos también generan segmentos de datos de paridad fuera de los dispositivos de almacenamiento 150 del grupo de RAID. Esto puede ser ineficaz porque los segmentos de los datos de paridad se generan usualmente y se envían a continuación a un dispositivo de almacenamiento 150 para su almacenamiento, lo que requiere capacidad de cálculo del controlador de RAID. El seguimiento de la localización de segmentos de datos de paridad y las actualizaciones también se debe hacer en el controlador de RAID en vez de hacerse autónomamente en el dispositivo de almacenamiento 150.
Cuando sea necesario asegurar que los datos permanecen disponibles si el controlador de RAID separado está fuera de línea, los controladores de RAID típicamente están en conexión cruzada con las unidades y entre sí, y/o en espejo como conjuntos completos, haciendo la disponibilidad de datos cara y difícil de gestionar y reduciendo
35 drásticamente la fiabilidad del subsistema de almacenamiento
Lo que se necesita es un sistema, un aparato y un método para una RAID distribuida del extremo frontal que permita la estructuración en RAID por segmento de datos, por objeto, por fichero o base similar y que elimine la necesidad de controladores RAID y los pares de controladores RAID situados entre el cliente y los dispositivos de almacenamiento. En tal sistema, aparato y método se puede crear un grupo de RAID para un segmento de datos objeto o fichero y gestionarse dentro de un grupo de dispositivos de almacenamiento por un controlador de RAID mientras que un segundo grupo de RAID se puede crear para otro segmento de datos, objeto, fichero que abarca algunos de los mismos dispositivos de almacenamiento del primer grupo de RAID. Las funciones de control de RAID se pueden distribuir entre los clientes 114, un dispositivo de gestión de RAID de tercera parte o entre los dispositivos
45 de almacenamiento 150. El sistema de RAID distribuido del extremo frontal, el aparato y el método también pueden enviar comandos a los dispositivos de almacenamiento 150 de un grupo de RAID y pueden permitir a los dispositivos de almacenamiento 150 acceder directamente y copiar los datos a través de un acceso directo a memoria ("DMA"), o DMA remoto ("RDMA").
La Figura 10 es un diagrama de bloques esquemático que ilustra una realización de un sistema 1600 que se puede acceder para una RAID distribuida del extremo frontal de acuerdo con las presentes invenciones. Las descripciones anteriores para las componentes representadas en la Figura 10 relacionadas con una RAID progresiva también son aplicables a una RAID distribuida del extremo frontal. Con respecto a una RAID distribuida del extremo frontal, el conjunto de dispositivos de almacenamiento 1604 forma un grupo de RAID e incluye dispositivos de almacenamiento
55 150 que son autónomos y son capaces de recibir independientemente y dar servicio a las peticiones de almacenamiento desde un cliente 114 sobre una red 116 o una o más redes redundantes 116.
Entre los dispositivos de almacenamiento 150 dentro del conjunto de dispositivos de almacenamiento 1604, uno o más se designan como dispositivos de almacenamiento de paridad-espejo 1602 para una banda. Típicamente, el uno o más dispositivos de almacenamiento de paridad-espejo 1602 funcionan de forma sustancialmente similar a los otros dispositivos de almacenamiento 150. En configuraciones típicas donde los dispositivos de almacenamiento designados de paridad-espejo 1602 alternan entre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604, los dispositivos de almacenamiento de paridad-espejo 1602 tienen esencialmente las mismas características que los otros dispositivos de almacenamiento 150 debido a que también 65 deben operar como dispositivos de almacenamiento no de paridad-espejo. Las características similares son con respecto a la operación dentro de un grupo de RAID y la operación autónoma para una comunicación con un cliente
imagen41
5 Los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 pueden ser independientes, agrupados dentro de uno o más servidores 112, puede residir cada uno en un servidor 112, se pueden acceder a través de uno o más servidores 112, etc. Uno o más clientes 114 pueden residir en servidores 112 que incluyen uno o más dispositivos de almacenamiento 150, pueden residir en servidores separados 112, pueden residir en ordenadores, estaciones de trabajo, ordenadores portátiles, etc. que acceden a los dispositivos de almacenamiento 150 a través de una o más redes de ordenadores 116 o similares.
En una realización, la red 116 incluye un bus de sistema y uno o más de los dispositivos de almacenamiento 150, 1602 del conjunto de dispositivos de almacenamiento 1604 comunican usando el bus del sistema. Por ejemplo, el bus del sistema puede ser un bus PCI-e, un bus de Conexión de Tecnología Avanzada Serie ("ATA serie"), un bus
15 ATA en paralelo o similares. En otra realización, el bus del sistema es un bus externo tal como una interfaz de un pequeño sistema de ordenadores ("SCSI"), FireWire, Fiber Channel, USB, PCIe-AS, Infiniband o similares. Un experto en la materia apreciará otras configuraciones de sistema 1600 con dispositivos de almacenamiento 150 que son autónomos y son capaces de recibir de forma independiente y servir peticiones de almacenamiento desde un cliente 114 sobre una o más redes 116.
La Figura 11 es un diagrama de bloque esquemático que ilustra una realización de un aparato 2100 para una RAID distribuida del extremo frontal de acuerdo con la presente invención. El aparato 2100, en diversas realizaciones, incluye un módulo receptor de peticiones de almacenamiento 2102, un módulo de asociación de desmontaje 2104, un módulo de asociación de paridad-espejo 2106, un módulo transmisor de peticiones de almacenamiento 2108, un
25 módulo de generación de paridad del extremo frontal 2110, u módulo de alternancia de paridad 2118, un módulo de recuperación de segmentos de datos 2112, un módulo de reconstrucción de datos 2114, un módulo de reconstrucción de paridad 2116 y un módulo de comunicaciones de entre pares 2120, que se describen a continuación. En diversas realizaciones, el aparato 2100 se puede incluir en un dispositivo de almacenamiento 150 tal como un dispositivo de almacenamiento de estado sólido 102, un controlador del dispositivo de almacenamiento 152 tal como un controlador de almacenamiento de estado sólido 104, un servidor 112, un dispositivo de gestión de RAID de terceras partes, etc. o se puede distribuir entre más de un componente.
El aparato 2100 incluye un módulo receptor de peticiones de almacenamiento 2102 que recibe una petición de almacenamiento para almacenar datos en un conjunto de dispositivos de almacenamiento 1604. Los datos pueden
35 ser una porción de un fichero o un objeto o pueden ser un fichero entero u objeto. Un fichero puede incluir un bloque de información arbitraria o recurso para almacenar información, que está disponible para un programa de ordenador. Un fichero puede incluir cualquier estructura de datos accedida por un procesador. Un fichero puede incluir una base de datos, una cadena de texto, un código de ordenador, etc. Un objeto es usualmente una estructura de datos para la programación orientada a objetos y puede incluir una estructura con o sin datos. En una realización, un objeto es un subconjunto de un fichero. En otra realización un objeto es independiente de un fichero. En cualquier caso; un objeto y un fichero se definen en este documento para incluir el conjunto entero de datos, estructuras de datos, código de ordenador y otra información que se puede almacenar sobre un dispositivo de almacenamiento.
El conjunto de dispositivos de almacenamiento 1604 incluye dispositivos de almacenamiento autónomos 150 que
45 forman un grupo de RAID que reciben independientemente peticiones de almacenamiento desde un cliente 114 sobre una o más redes 116. Uno o más de los dispositivos de almacenamiento autónomos 150 dentro del conjunto de dispositivos de almacenamiento 1604 se designan como dispositivos de almacenamiento de paridad-espejo 1602 para una banda. Otras peticiones de almacenamiento desde otro cliente 114 se pueden almacenar sobre un segundo conjunto de dispositivos de almacenamiento donde el segundo conjunto de dispositivos de almacenamiento puede incluir uno o más de los mismos dispositivos de almacenamiento 150 (y dispositivos de almacenamiento de paridad-espejo 1602) como el primer conjunto de dispositivos de almacenamiento 1604. Los dispositivos de almacenamiento 150 comunes a ambos conjuntos de dispositivos de almacenamiento 1604 pueden tener espacio de almacenamiento asignado solapante dentro de los dispositivos de almacenamiento común 150.
55 El aparato 2100 incluye un módulo de asociación de desmontaje 2104 que calcula un patrón de bandas para los datos. El patrón de bandas incluye una o más bandas. Cada banda incluye un conjunto de N segmentos de datos. Los N segmentos de datos de un banda pueden incluir también uno o más segmentos de datos vacíos. El módulo de asociación de desmontaje 2104 asocia cada uno de los N segmentos de datos con uno de los N dispositivos de almacenamiento 150a -n en el conjunto de dispositivos de almacenamiento 1604 asignados a la banda. En una realización el módulo de asociación de desmontaje 2104 asocia un segmento de datos con un dispositivo de almacenamiento 150 con una petición de almacenamiento a enviar al dispositivo de almacenamiento 150 que dirige al dispositivo de almacenamiento 150 para obtener los datos correspondientes al segmento de datos desde el cliente 114 que envía la petición de almacenamiento.
65 En otra realización, la petición de almacenamiento está sustancialmente libre de datos de los segmentos de datos. Sustancialmente libre de datos significa que la petición de almacenamiento generalmente no incluye los datos que son el sujeto de la petición de almacenamiento pero pueden incluir caracteres, cadenas de caracteres, etc. que pueden ser parte de los datos. Por ejemplo, si los datos comprenden una serie de caracteres repetidos, idénticos, tal como una serie de ceros, la petición de almacenamiento puede incluir una indicación de que los datos incluyen una serie de ceros, sin incluir todos los ceros contenidos en los datos. Un experto en la materia reconocerá otros modos
imagen42
5 para enviar una petición de almacenamiento sin enviar el volumen de datos mientras que se permite una pequeña cantidad o una instancia única de ciertos caracteres o cadenas de caracteres en la petición de almacenamiento. La petición de almacenamiento incluye comandos que permiten N dispositivos de almacenamiento 150a -n para recuperar los datos usando una operación de DMA o RDMA o similares.
10 En otra realización, el módulo de asociación de desmontaje 2104 asocia un segmento de datos con un dispositivo de almacenamiento 150 identificando en una petición de almacenamiento a enviar al dispositivo de almacenamiento 150 los datos del segmento de datos. La Identificación de datos del segmento de datos puede incluir un identificador del segmento de datos, una localización o dirección del segmento de datos, una longitud del segmento de datos u otra información que permitirá al dispositivo de almacenamiento 150 reconocer qué datos comprende el segmento
15 de datos.
En una realización, el módulo de asociación de desmontaje 2104 asocia un segmento de datos con un dispositivo de almacenamiento 150 en una petición de almacenamiento de modo que un cliente 114 puede enviar los datos que comprenden los segmentos de datos en una difusión de modo que cada dispositivo de almacenamiento 150 es 20 capaz de almacenar los segmentos de datos asociados y descartar los datos correspondientes a los segmentos de datos no asignados al dispositivo de almacenamiento 150. En otra realización el módulo de asociación de desmontaje 2104 asocia un segmento de datos con un dispositivo de almacenamiento 150 en una petición de almacenamiento, posiblemente direccionando cada segmento de datos, de modo que un cliente 114 puede enviar datos que comprenden los segmentos de datos en una transmisión multi-destino de modo que cada dispositivo de
25 almacenamiento 150 es capaz de almacenar los segmentos de datos asociados y descartar los datos correspondientes a segmentos de datos no asignados al dispositivo de almacenamiento 150. Un experto en la materia reconocerá otros modos para que el módulo de asociación de desmontaje 2104 asocie un segmento de datos con un dispositivo de almacenamiento 150 para su difusión, transmisión multi-destino, transmisión de origen y destino únicos, difusión limitada, etc. uno o más segmentos de datos a uno o más dispositivos de almacenamiento.
30 En una realización relacionada, el módulo de asociación de desmontaje 2104 asocia un segmento de datos con un dispositivo de almacenamiento 150 en una petición de almacenamiento de modo que un cliente 114 puede difundir, transmitir multi-destino, transmitir con destino único, etc. la petición de almacenamiento y cada dispositivo de almacenamiento 150 es capaz de recibir una porción de la petición de almacenamiento desde el cliente 114 que
35 pertenece al segmento de datos asociado con el dispositivo de almacenamiento 150 y puede descartar porciones de la petición de almacenamiento que no pertenecen al uno o más segmentos de datos no asociados con el dispositivo de almacenamiento 150.
En otra realización, la petición de almacenamiento recibida por el módulo receptor de peticiones de almacenamiento
40 2102 incluye los datos que son el sujeto de la petición de almacenamiento y el módulo de asociación de desmontaje 2104 asocia un segmento de datos con un dispositivo de almacenamiento 150 preparando una petición de almacenamiento para el dispositivo de almacenamiento 150 que incluye el segmento de datos. El módulo de asociación de desmontaje 2104 puede operar dentro de un cliente 114, un dispositivo de gestión de terceras partes RAID, un dispositivo de almacenamiento 150, 1602, etc.
45 El aparato 2100 incluye un módulo de asociación de paridad-espejo 2106 que asocia un conjunto de N segmentos de datos con uno o más dispositivos de almacenamiento de paridad-espejo 1602 en el conjunto de dispositivos de almacenamiento 1604. El uno o más dispositivos de almacenamiento de paridad-espejo 1602 están en adición a los N dispositivos de almacenamiento 150a -n. En una realización el módulo de asociación de paridad-espejo 2106
50 asocia un conjunto de N segmentos de datos a los dispositivos de almacenamiento de paridad-espejo 1602 de modo que cada dispositivo de almacenamiento de paridad-espejo 1602 puede recibir y almacenar los N segmentos de datos de una banda para la generación de un segmento de datos de paridad. En otra realización, el módulo de asociación de paridad-espejo 2106 asocia un segmento de datos de la banda con cada dispositivo de almacenamiento de paridad-espejo 1602 de modo que los dispositivos de almacenamiento 1602a -m actúan como
55 un espejo para los N segmentos de datos almacenados sobre los N dispositivos de almacenamiento 150a -n.
En diversas realizaciones, el módulo de asociación de paridad-espejo 2106 asocia el conjunto de N segmentos de datos con el uno o dos dispositivos de almacenamiento de paridad-espejo 1602 usando una única petición de almacenamiento, múltiples peticiones de almacenamiento, u otra técnica de asociación descrita anteriormente en
60 relación con el módulo de asociación de desmontaje 2104, tal como las peticiones de almacenamiento que configuran el dispositivo de almacenamiento de paridad-espejo 1602 para DMA, RDMA, difusión, transmisión multidestino, o incluyendo los N segmentos de datos en las peticiones de almacenamiento. El módulo de asociación de paridad-espejo 2106 puede operar dentro de un cliente 114, un dispositivo de gestión de RAID de tercera parte, un dispositivo de almacenamiento 150, 1602, etc.
65 El aparato 2100 incluye un módulo transmisor de peticiones de almacenamiento 2108 que transmite una o más peticiones de almacenamiento a cada uno de los dispositivos de almacenamiento 150, 1602 en el conjunto de dispositivos de almacenamiento 1604, siendo cada una de las peticiones de almacenamiento suficiente para almacenar sobre el dispositivo de almacenamiento 150, 1602 el uno o más segmentos de datos asociados con el
imagen43
5 dispositivo de almacenamiento 150, 1602 que recibe la petición de almacenamiento. En una realización, cada una de las peticiones de almacenamiento no incluye los datos que son el sujeto de la petición de almacenamiento. En una realización adicional, cada petición de almacenamiento posibilita a los N dispositivos de almacenamiento 150 y los dispositivos de almacenamiento de paridad-espejo 1602 del conjunto de dispositivos de almacenamiento 1604 para descargar datos de un segmento de datos asociado usando DMA o RDMA. En otra realización, una petición de almacenamiento contiene suficiente información para recoger las peticiones de almacenamiento relevantes o datos relevantes para los segmentos de datos asociados a partir de una difusión desde el cliente 114. En otra realización, una petición de almacenamiento incluye los datos de un segmento de datos asociado.
En una realización, cada petición de almacenamiento identifica los dispositivos de almacenamiento 150, 1602 que
15 son parte del conjunto de dispositivos de almacenamiento 1604 de una banda. Incluyendo una identificación de los dispositivos de almacenamiento 150, 1602 del conjunto de dispositivos de almacenamiento 1604. En el caso de un fallo de un dispositivo de almacenamiento 150 que actúa como maestro, otro dispositivo de almacenamiento 150 puede tomar el control como maestro para gestionar los datos con estructuración en RAID. En otra realización, la identificación del conjunto de dispositivos de almacenamiento 1604 posibilita a los dispositivos de almacenamiento autónomos 150, 1602 recuperar los datos cuando un dispositivo de almacenamiento está fuera de línea, y reconstruir los datos cuando se añade un dispositivo de almacenamiento de sustitución dentro del conjunto de dispositivos de almacenamiento 1604 independientes del cliente. En otra realización, la identificación de los dispositivos de almacenamiento 150, 1602 del conjunto de dispositivos de almacenamiento 1604 representa un grupo de transmisión multi-destino para la transmisión de segmentos de datos o peticiones de almacenamiento. La
25 identificación se puede almacenar junto con los metadatos para el objeto o fichero almacenado sobre los dispositivos de almacenamiento 150, 1602 dentro del conjunto de dispositivos de almacenamiento 1604.
En una realización, cuando el módulo de asociación de paridad-espejo 2106 asocia un conjunto de N segmentos de datos con cada uno del uno o más dispositivos de almacenamiento de paridad-espejo 1602, el aparato 2100 incluye un módulo de generación de paridad del extremo frontal 2110 que calcula, independientemente del cliente 114, un segmento de datos de paridad para la banda y almacena el segmento de datos de paridad sobre el dispositivo de almacenamiento de paridad-espejo 1602. El segmento de datos de paridad se calcula a partir del conjunto de N segmentos de datos proporcionados al dispositivo de almacenamiento de paridad-espejo 1602. Cuando más de un dispositivo de almacenamiento de paridad-espejo 1602 está incluido en el conjunto de dispositivos de
35 almacenamiento 1604, el módulo de generación de paridad del extremo frontal 2110 usualmente genera los diversos segmentos de datos de paridad de modo que dos o más dispositivos de almacenamiento 150, 1602 en el conjunto de dispositivos de almacenamiento 1604 pueden fallar y la información de los segmentos de datos de paridad permite la recuperación de los segmentos de datos no disponibles o los segmentos de datos de paridad.
En otra realización, el módulo de generación de paridad del extremo frontal 2110 calcula el segmento de datos de paridad cuando opera dentro de un dispositivo de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 y/o un dispositivo de gestión de RAID de terceras partes. Por ejemplo, un servidor 112 separado del cliente 114 que transmite la petición de almacenamiento puede calcular el segmento de datos de paridad. En otra realización, el módulo de generación de paridad del extremo frontal 2110 opera dentro de un
45 dispositivo de almacenamiento de paridad-espejo para calcular el segmento de datos de paridad. Por ejemplo, un controlador de almacenamiento 152 en el dispositivo de almacenamiento de paridad-espejo 1602 puede actuar como un controlador de almacenamiento maestro para el grupo de RAID formado por el conjunto de dispositivos de almacenamiento 1604.
En otra realización, el módulo de generación de paridad del extremo frontal 2110 calcula el segmento de datos de paridad y transmite a continuación el segmento de datos de paridad calculado a uno o más dispositivos de almacenamiento de paridad-espejo adicionales 1602 en un segundo conjunto de dispositivos de almacenamiento formando un espejo. Esta realización es ventajosa porque el código de control asociado con el cálculo del segmento de datos de paridad se realiza una vez, en lugar de hacerse para cada conjunto de dispositivos de almacenamiento
55 1604 con el beneficio adicional de reducir el tráfico de datos sobre la red 116.
El aparato 2100 puede incluir también, en una realización, un módulo de recuperación de segmentos de datos 2112 que recupera un segmento de datos almacenado sobre un dispositivo de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 si el dispositivo de almacenamiento 150 no está disponible y se recibe una petición para leer bien los segmentos de datos no disponibles o los datos que incluye el segmento de datos no disponible. El segmento de datos se recupera usando los segmentos de datos sobre dispositivos de almacenamiento disponibles 150 del conjunto de dispositivos de almacenamiento 1604, una combinación de los segmentos de datos de paridad y segmentos de datos sobre dispositivos de almacenamiento disponibles 150, 1602 del conjunto de dispositivos de almacenamiento 1604, o desde un dispositivo de almacenamiento de espejo que contiene una copia 65 del segmento de datos. Típicamente, el dispositivo de almacenamiento de espejo es un dispositivo de almacenamiento 150 de un conjunto de dispositivos de almacenamiento de espejo que almacena una copia de los N
imagen44
segmentos de datos. El módulo de recuperación de segmentos de datos 2112 puede operar y recuperar los segmentos de datos no disponibles desde el dispositivo de almacenamiento 150, un dispositivo de almacenamiento de paridad-espejo 1602, un dispositivo de gestión de RAID de terceras partes, un dispositivo de almacenamiento de espejo, etc.
5 En otra realización, el aparato 2100 incluye un módulo de reconstrucción de datos 2114 que almacena un segmento de datos recuperado sobre un dispositivo de almacenamiento de sustitución 150 en una operación de reconstrucción. Por ejemplo, si un dispositivo de almacenamiento 150 se convierte en no disponible debido a un fallo, pérdida de sincronización, etc. el módulo de reconstrucción de datos 2114 puede reconstruir un dispositivo de almacenamiento 150 para sustituir al dispositivo de almacenamiento no disponible 150. En una realización, el dispositivo de almacenamiento reconstruido 150 es el dispositivo de almacenamiento original 150 que se ha convertido en disponible.
El segmento de datos recuperado iguala a un segmento de datos no disponible almacenado sobre el dispositivo de
15 almacenamiento no disponible 150 del conjunto de dispositivos de almacenamiento 1604. La operación de reconstrucción usualmente restaura uno o más segmentos de datos y segmentos de datos de paridad sobre el dispositivo de almacenamiento de sustitución 150 para igualar segmentos de datos y segmentos de datos de paridad almacenados anteriormente sobre el dispositivo de almacenamiento no disponible 150.
En una realización, el segmento de datos recuperado se recupera para la operación de reconstrucción usando los segmentos de datos disponibles sobre dispositivos de almacenamiento disponibles 150 del conjunto de dispositivos de almacenamiento 1604. En otra realización, el segmento de datos recuperado se recupera para la operación de reconstrucción usando una combinación de un segmento de datos de paridad desde uno o más dispositivos de almacenamiento de paridad-espejo 1602 y los segmentos de datos disponibles sobre dispositivos de
25 almacenamiento disponibles 150 del conjunto de dispositivos de almacenamiento 1604. En otra realización, el segmento de datos recuperado se recupera para la operación de reconstrucción usando un segmento de datos de compaginación leídos desde un dispositivo de almacenamiento de paridad-espejo 1602. En otra realización más, el segmento de datos recuperado se recupera para la operación de reconstrucción usando un segmento de datos de compaginación desde un dispositivo de almacenamiento de espejo. El módulo de reconstrucción de datos 2114 podría operar y almacenar un segmento de datos recibido desde un cliente 114, un dispositivo de gestión de RAID de terceras partes, un dispositivo de almacenamiento 150, 1602, un dispositivo de almacenamiento de espejo, etc.
El aparato 2100 incluye, en otra realización, un módulo de reconstrucción de paridad 2116 que reconstruye el segmento de datos de paridad recuperado sobre un dispositivo de almacenamiento de sustitución 1602 en una
35 operación de reconstrucción. Una operación de reconstrucción es sustancialmente similar a la operación de reconstrucción descrita en relación con el módulo de reconstrucción de datos 2114. El módulo de reconstrucción de paridad 2116 opera similar al módulo de reconstrucción de datos 2114 excepto que el módulo de reconstrucción de paridad 2116 reconstruye un segmento de datos de paridad recuperado. El segmento de datos de paridad recuperado compagina un segmento de datos de paridad no disponible almacenado sobre un dispositivo de almacenamiento de paridad-espejo no disponible 1602 asignado a la banda.
El segmento de datos de paridad se recupera, en diversas realizaciones, copiando el segmento de datos de paridad almacenado sobre un dispositivo de almacenamiento de paridad-espejo 1602 en un conjunto de dispositivos de almacenamiento de espejo, copiando el segmento de datos de paridad desde el dispositivo de almacenamiento de
45 paridad-espejo 1602 en el conjunto de dispositivos de almacenamiento 1604 (si es idéntico al segmento de datos de paridad no disponible), generando el segmento de datos de paridad usando uno o más de los N segmentos de datos y los segmentos de datos de parida almacenados sobre los dispositivos de almacenamiento disponibles 150, 1602 del conjunto de dispositivos de almacenamiento 1604 y un dispositivo de almacenamiento de espejo que contiene una copia de un segmento de datos, etc. El módulo de reconstrucción de datos 2114 puede operar y almacenar un segmento de datos recuperado mientras que reside sobre un cliente 114, un dispositivo de gestión de RAID de terceras partes, un dispositivo de almacenamiento 150, un dispositivo de almacenamiento de espejo, etc.
Ventajosamente, el aparato 2100 no está limitado al almacenamiento de datos en los dispositivos de almacenamiento 150, 1602 para las particiones dedicadas a la operación de RAID distribuida del extremo frontal
55 descrita en este documento. En cambio, un dispositivo de almacenamiento autónomo (por ejemplo 150a) puede recibir independientemente peticiones de almacenamiento desde un cliente 114 para almacenar datos con estructura de RAID o sin estructura de RAID en una o más regiones del dispositivo de almacenamiento 150a que también están disponibles para el almacenamiento de datos por el módulo de asociación de desmontaje 2104, el módulo de asociación de paridad-espejo 2106 y el módulo de generación de paridad del extremo frontal 2110.
En una realización, una o más peticiones de almacenamiento recibidas por el módulo receptor de peticiones de almacenamiento 2102 o transmitidas por el módulo transmisor de peticiones de almacenamiento 2108, identifican los dispositivos de almacenamiento 150 que comprende el conjunto de dispositivos de almacenamiento 1604 de la banda. Ventajosamente, la identificación del dispositivo de almacenamiento 150 del conjunto de dispositivos de 65 almacenamiento 1604 en las peticiones de almacenamiento facilita a un controlador de RAID de respaldo operar si un controlador maestro no está funcional. Por ejemplo, si los dispositivos de almacenamiento 150 del conjunto de
imagen45
dispositivos de almacenamiento 1604 se identifican en peticiones de almacenamiento y el controlador maestro es un dispositivo de almacenamiento de paridad-espejo 1602 y no está disponible, otro dispositivo de almacenamiento de paridad-espejo 1602 u otro de los N dispositivos de almacenamiento 150a -n puede convertirse en el controlador maestro.
5 En una realización, el aparato 2100 incluye un módulo de alternancia de paridad 2118 que alterna, para cada banda, los dispositivos de almacenamiento 150 en el conjunto de dispositivos de almacenamiento 1604 que están designados como dispositivos de almacenamiento de paridad-espejo 1602 para la banda. Los beneficios del módulo de alternancia de paridad 2118 se han descrito anteriormente. En otra realización, los dispositivos de
10 almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 forman un grupo de pares y el aparato 2100 incluye un módulo de comunicación entre pares 2120 que transmite y recibe peticiones de almacenamiento dentro de los dispositivos de almacenamiento 150, 1602 del conjunto de dispositivos de almacenamiento 1604. El módulo de comunicaciones entre pares 2120 también puede transmitir y recibir peticiones de almacenamiento con dispositivos pares fuera del conjunto de dispositivos de almacenamiento 1604.
15 En una realización preferida, la petición de almacenamiento es una petición de objetos para almacenar un objeto desmontando los datos del objeto a través de los dispositivos de almacenamiento 150, 1602 del conjunto de dispositivos de almacenamiento 1604 usando los módulos 2102 -2120 del aparato 2100. En otra realización, uno o más de los dispositivos de almacenamiento autónomos 150, 1602 del conjunto de dispositivos de almacenamiento
20 1604 están asignados dentro de un primer grupo de RAID para al menos una porción de un primer objeto o fichero y asignados dentro de un segundo grupo de RAID para el menos una porción de un segundo objeto o fichero. Por ejemplo, un dispositivo de almacenamiento 150a puede ser un controlador de RAID maestro para el conjunto de dispositivos de almacenamiento 1604 para una o más bandas y un segundo dispositivo de almacenamiento 150b puede ser un controlador de RAID maestro para un grupo de RAID que incluye algunos o todos los dispositivos de
25 almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604. Ventajosamente, el aparato 2100 permite flexibilidad en el agrupamiento de los dispositivos de almacenamiento 150, 1602 para formar grupos de RAID para diversos clientes 114.
La Figura 12 es un diagrama de flujo esquemático que ilustra una realización de un método 2200 para la RAID
30 distribuida del extremo frontal de acuerdo con la presente invención. El método 2200 comienza 2202 y el módulo receptor de peticiones de almacenamiento 2102 recibe 2204 una petición de almacenamiento para almacenar datos en N dispositivos de almacenamiento 150a -n del conjunto de dispositivos de almacenamiento 1604. El módulo de asociación de desmontaje 2104 calcula 2206 un patrón de bandas para los datos y asocia 2208 los N segmentos de datos cada uno con uno de los N dispositivos de almacenamiento 150a -n.
35 El módulo de asociación de paridad-espejo 2106 asocia 2210 un conjunto de N segmentos de datos con uno o más dispositivos de almacenamiento de paridad-espejo 1602. El módulo transmisor de la petición de almacenamiento 2108 transmite 2212 una o más peticiones de almacenamiento a cada dispositivo de almacenamiento 150, 1602 en el conjunto de dispositivos de almacenamiento 1604. Cada petición de almacenamiento es suficiente para almacenar
40 sobre el dispositivo de almacenamiento 150 el uno o más segmentos de datos asociados con el dispositivo de almacenamiento 150 que reciben la petición de almacenamiento. Los segmentos de los datos se transfieren a continuación a los dispositivos de almacenamiento 150, 1602 del conjunto de dispositivos de almacenamiento 1604 usando DMA, RDMA, difusión, transmisión multi-destino, etc. según se dirige por las peticiones de almacenamiento. Opcionalmente, el módulo de generación de paridad del extremo frontal 2110 calcula 2214 un segmento de datos de
45 paridad para la banda y el método 2200 termina 2216.
Raid distribuida, del extremo frontal, compartida
La RAID tradicional usa una red de discos u otros dispositivos de almacenamiento con al menos una porción de
50 cada dispositivo dedicada a la RAID y la formación del grupo de RAID. Un controlador de RAID gestiona las peticiones de almacenamiento para el grupo de RAID. Para los sistemas redundantes, el controlador de RAID tiene un controlador de RAID de respaldo listo para tomar el control si falla el controlador de RAID maestro o no está disponible. Las peticiones de almacenamiento desde múltiples clientes que buscan acceder a los mismos datos almacenados en la RAID usualmente se ejecutan de forma secuencial por orden de llegada.
55 Un sistema de RAID distribuido, del extremo frontal, como se ha descrito anteriormente en relación con el sistema 1600, el aparato 2100 y el método 2200 representado en las Figuras 10, 11 y 12 respectivamente, incluye dispositivos de almacenamiento autónomos 150 que pueden incluir cada uno un controlador de almacenamiento 152 que puede funcionar como un controlador de RAID distribuido y los dispositivos de almacenamiento 150 se pueden
60 configurar cada uno en múltiples grupos de RAID solapantes que sirven a múltiples clientes 114. Ocasionalmente, dos clientes 114 pueden buscar acceder a los mismos datos. Si una petición de almacenamiento llega primero y se ejecuta entonces usualmente no hay ninguna inconsistencia de los datos. Si, por el contrario, dos o más peticiones de almacenamiento para los mismos datos llegan en el mismo momento o casi el mismo momento, los datos se pueden corromper.
65 Por ejemplo, si los datos se almacenan sobre cuatro dispositivos de almacenamiento 150 en un grupo de RAID, donde uno de los dispositivos de almacenamiento 150 se asigna como dispositivo de almacenamiento de paridadespejo 1602, y un primer cliente 114 envía una petición de almacenamiento a un primer controlador de almacenamiento 152a que actúa como un controlador de RAID y un segundo cliente 114 envía una segunda petición
imagen46
5 de almacenamiento a un dispositivo de almacenamiento 150a que actúa como un segundo controlador de RAID y ambas peticiones de almacenamiento acceden a los mismos datos, el primer dispositivo de almacenamiento 150a puede comenzar la ejecución de la petición de almacenamiento sobre el primer dispositivo de almacenamiento 150a y a continuación los otros dispositivos de almacenamiento 150b -n del grupo de RAID. Al mismo tiempo, el segundo controlador de RAID sobre el segundo dispositivo de almacenamiento 150b puede comenzar la ejecución de la segunda petición de almacenamiento sobre otro dispositivo de almacenamiento (por ejemplo, 150b) y a continuación sobre los restantes dispositivos de almacenamiento 150a, c -n del grupo de RAID. Esta discordancia en la ejecución se puede causar por la distancia física entre los dispositivos de almacenamiento 150, discrepancias del tiempo de ejecución, etc. El resultado pueden ser datos corrompidos.
15 Lo que se necesita es un sistema, aparato, y método para una RAID distribuida, del extremo frontal compartida que maneje las peticiones de almacenamiento concurrentes que buscan acceso de los mismos datos. Ventajosamente, el sistema, aparato, y método controlarían el acceso a los datos de modo que una petición de almacenamiento se ejecuta antes de que se ejecute una segunda petición de almacenamiento.
La figura 10 es un diagrama de bloques esquemático que ilustra una realización que sirve como un sistema 1600 para una RAID distribuida del extremo frontal compartida de acuerdo con las presentes invenciones, además de la RAID progresiva y la RAID distribuida del extremo frontal. Las descripciones anteriores para los componentes representados en la Figura 10 relacionados con la RAID progresiva y la RAID distribuida del extremo frontal también son aplicables para una RAID distribuida del extremo frontal compartida. Como con la RAID distribuida del extremo
25 frontal, el conjunto de dispositivos de almacenamiento 1604 forma un grupo de RAID e incluye dispositivos de almacenamiento 150 que son autónomos y capaces de recibir de forma independiente y servir peticiones de almacenamiento desde un cliente 114 sobre una red 116.
Con respecto a la RAID distribuida del extremo frontal compartida, el sistema 1600 incluye dos o más clientes 114 de modo que los dos o más clientes 114 envían cada uno una petición de almacenamiento con relación a los mismos datos. Las peticiones de almacenamiento son concurrentes ya que las peticiones de almacenamiento llegan de modo que una petición de almacenamiento no está completada antes de la llegada de la otra petición de almacenamiento. Entre los dispositivos de almacenamiento 150 dentro del conjunto de dispositivos de almacenamiento 1604, uno o más se designan como dispositivos de almacenamiento de paridad-espejo 1602 para
35 una banda. Típicamente, el uno o más dispositivos de almacenamiento de paridad-espejo 1602 funcionan de forma sustancialmente similar a los otros dispositivos de almacenamiento 150.
En configuraciones típicas donde los dispositivos de almacenamiento de paridad-espejo designados 1602 alternan entre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604, los dispositivos de almacenamiento de paridad-espejo 1602 tienen esencialmente las mismas características que los otros dispositivos de almacenamiento 150 porque deben operar también como dispositivos de almacenamiento no de paridad-espejo. Las características similares son con respecto a la operación dentro de un grupo de RAID y de operación autónoma para la comunicación del cliente independiente 114 como se ha descrito anteriormente. En diversas realizaciones, los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento
45 1604 pueden diferir en otros aspectos no relacionados con el funcionamiento dentro del entorno de RAID descrito.
Los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 pueden ser independientes, agrupados dentro de uno o más servidores 112, puede residir cada uno en un servidor 112, se pueden acceder a través de uno o más servidores 112, etc. Uno o más clientes 114 pueden residir en servidores 112 que incluyen uno más dispositivos de almacenamiento 150, pueden residir en servidores separados 112, pueden residir en ordenadores, estaciones de trabajo, ordenadores portátiles, etc. que acceden a los dispositivos de almacenamiento 150 a través de la red de ordenadores 116 o similares.
En una realización, la red 116 incluye un bus del sistema y uno o más dispositivos de almacenamiento 150, 1602 del
55 conjunto de dispositivos de almacenamiento 1604 que comunican usando el bus del sistema. Por ejemplo, el bus del sistema puede ser un bus PCI-e, un bus de Conexión de Tecnología Avanzada Serie ("ATA serie"), un bus ATA en paralelo o similares. En otra realización, el bus del sistema es un bus externo tal como una interfaz de un pequeño sistema de ordenadores ("SCSI"), FireWire, Fiber Channel, USB, PCIe-AS, Infiniband o similares. Un experto en la materia apreciará otras configuraciones de sistema 1600 con dispositivos de almacenamiento 150 que son autónomos y son capaces de recibir de forma independiente y servir peticiones de almacenamiento desde un cliente 114 sobre una red 116.
La figura 13 es un diagrama de bloque esquemático que ilustra una realización de un aparato 2300 para una RAID distribuida del extremo frontal compartida de acuerdo con la presente invención. El aparato 2300 incluye, en diversas 65 realizaciones, un módulo receptor de múltiples peticiones de almacenamiento 2302, un módulo de desmontaje 2304, un módulo de paridad-espejo 2306, un módulo secuenciador 2308, un módulo de validación de maestro 2310, un
imagen47
módulo de determinación del maestro 2312, un módulo de error de maestro 2314, un módulo de generación de paridad 2316 y un módulo de alternancia de paridad 2318, que se describen a continuación.
El aparato 2300 incluye un módulo receptor de múltiples peticiones de almacenamiento 2302 que recibe al menos
5 dos peticiones de almacenamiento desde al menos dos clientes 114 para almacenar datos en los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604. Los datos incluyen datos de un fichero o de un objeto. Las peticiones de almacenamiento concernientes al aparato 2300 tienen cada una al menos una porción de los datos en común y, además, son peticiones de almacenamiento concurrentes que llegan de modo que una petición de almacenamiento no se ha completado antes de la llegada de las peticiones de almacenamiento. Estas peticiones de almacenamiento concurrentes corren el riesgo de corromper datos comunes en el sistema de RAID distribuido del extremo frontal 1600. En una realización, las peticiones de almacenamiento concurrentes pueden proceder de un cliente 114. En otra realización las peticiones de almacenamiento concurrentes proceden de dos o más clientes 114.
15 Las múltiples peticiones de almacenamiento pueden actualizar uno o más segmentos de datos almacenados sobre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 donde los datos almacenados anteriormente se desmontan por el módulo de desmontaje 2304 en segmentos de datos almacenados sobre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604. En una realización, una petición de almacenamiento escribe los datos para la primera vez al grupo de RAID. En este caso, los datos usualmente habrían existido en otra parte y accedidos por uno o más clientes 114 y a continuación una petición de almacenamiento copia los datos al grupo de RAID mientras que otra petición de almacenamiento accede de forma concurrente a los datos.
Las múltiples peticiones de almacenamiento pueden comprender una petición de actualizar uno o más segmentos
25 de datos almacenados sobre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 y uno o más peticiones de lectura con objetivo de al menos una porción de los datos en común. Si la petición de actualización no se completa, entonces las respuestas a las peticiones de lectura desde los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 pueden estar comprendidas por una combinación de datos preexistentes y actualizados que corrompen los datos.
El aparato 2300 incluye un módulo de desmontaje 2304 que calcula, para cada una de las peticiones de almacenamiento concurrentes, un patrón de bandas para los datos y escribe N segmentos de datos de una banda a N dispositivos de almacenamiento 150a -n dentro del conjunto de dispositivos de almacenamiento 1604. El patrón de bandas incluye una o más bandas y cada banda incluye un conjunto de N segmentos de datos. Cada uno de los
35 N segmentos de datos se escribe a un dispositivo de almacenamiento separado 150 dentro del conjunto de dispositivos de almacenamiento 1604 y asignado a la banda. El aparato 2300 incluye un módulo de paridad-espejo 2306 que escribe, para cada una de las peticiones de almacenamiento concurrentes, un conjunto de N segmentos de datos de la banda a los dispositivos de almacenamiento 150 dentro del conjunto de dispositivos de almacenamiento 1604 designados como dispositivos de almacenamiento de paridad-espejo 1602. Los dispositivos de almacenamiento de paridad-espejo 1602 son en adición a los N dispositivos de almacenamiento 150a -n.
El módulo de desmontaje 2304 también se usa para calcular la identidad de uno o más dispositivos de almacenamiento 150a -n desde los que se leen uno o más segmentos de datos que son parte de un fichero u objeto.
45 El aparato 2300 incluye un módulo de secuenciador 2308 que asegura la terminación de una primera petición de almacenamiento desde un primer cliente 114 antes de ejecutar una segunda petición de almacenamiento desde un segundo cliente 114 donde las, al menos dos peticiones de almacenamiento concurrentes incluyen la primera y segunda peticiones de almacenamiento. En otras realizaciones, el módulo del secuenciador 2308 asegura la terminación de la primera petición de almacenamiento antes de ejecutar dos o más de otras peticiones de almacenamiento concurrentes. Ventajosamente, el módulo secuenciador 2308 facilita una ejecución ordenada de las peticiones de almacenamiento concurrentes para impedir la corrupción de datos. En una realización, el módulo secuenciador 2308 coordina la ejecución de las peticiones de almacenamiento concurrentes usando un controlador maestro al que deben acceder todas las peticiones de almacenamiento para los datos, usando un sistema de
55 bloqueo, una confirmación de dos fases, u otros medios conocidos para los expertos en la materia. Algunos de los métodos usados por el módulo secuenciador 2308 se tratan a continuación.
En una realización, el módulo secuenciador 2308 asegura la terminación de la primera petición de almacenamiento antes de la ejecución de las peticiones de almacenamiento concurrentes recibiendo una confirmación desde cada uno de los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 que reciben una petición de almacenamiento en conjunción con la primera petición de almacenamiento antes de la ejecución de la segunda petición de almacenamiento. Usualmente, una confirmación confirma la terminación de una petición de almacenamiento. En una realización, cada uno de los dispositivos de almacenamiento 150 afectados por la petición de almacenamiento se escribe a cada uno de los dispositivos de almacenamiento 150 y se recibe una confirmación
65 desde los mismos antes de que el módulo secuenciador 2308 comience la ejecución de una segunda petición de almacenamiento
imagen48
La terminación de una petición de almacenamiento, en una realización puede incluir la terminación de una porción de una primera petición de almacenamiento dirigida a un dispositivo de almacenamiento único (por ejemplo, 150a) antes de la ejecución de una porción de una segunda petición de almacenamiento pendiente sobre el mismo dispositivo de almacenamiento 150a. El módulo secuenciador 2308 puede verificar de forma independiente la 5 terminación de las porciones de la petición de almacenamiento sobre los dispositivos de almacenamiento 150. En esta realización, la escritura de segmentos de datos relacionados con una primera petición de almacenamiento no necesita mantenerse hasta que todos los segmentos de datos de la primera petición de almacenamiento se han completado. El módulo secuenciador 2308 puede coordinar las diversas ejecuciones que tienen lugar sobre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 para asegurar que los
10 datos no se corrompen.
En una realización, la confirmación de la terminación de una petición de almacenamiento se recibe después de que el módulo de desmontaje 2304 y el módulo de paridad-espejo 2306 escriben cada uno los segmentos de datos relacionados con la petición de almacenamiento a los dispositivos de almacenamiento 150 del conjunto de
15 dispositivos de almacenamiento 1604. En otra realización, la confirmación de la terminación de una petición de almacenamiento se recibe después de que el módulo de desmontaje 2304 y el módulo de paridad-espejo 2306 escriben cada uno los segmentos de datos relacionados con la petición de almacenamiento a los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 y cada uno de los dispositivos de almacenamiento 150, 1602 confirma que se han escrito los segmentos de datos.
20 En una realización, el módulo secuenciador 2308 selecciona una primera petición de almacenamiento para su ejecución seleccionando una petición de almacenamiento de entre las peticiones concurrentes que llegan primero. En otra realización, el módulo secuenciador 2308 selecciona una primera petición de almacenamiento para su ejecución seleccionando una petición de almacenamiento con el sello temporal más temprano. En otra realización, el
25 módulo secuenciador 2308 selecciona una primera petición de almacenamiento para su ejecución seleccionando una petición de almacenamiento que usa algún criterio de selección. Por ejemplo, el módulo secuenciador 2308 puede seleccionar una petición de almacenamiento que se marca de alguna forma por un cliente solicitante 114 como de alta prioridad, se puede seleccionar una petición de almacenamiento de un cliente favorecido 114, etc. Un experto en la materia reconocerá otros modos en los que el módulo secuenciador 2308 puede seleccionar una
30 primera petición de almacenamiento usando algunos criterios de selección.
En una realización, el módulo receptor de múltiples peticiones de almacenamiento 2302, el módulo de desmontaje 2304, el módulo de paridad-espejo 2306, y el módulo secuenciador 2308 son parte de un controlador maestro (no mostrado) que controla y sirve las peticiones de almacenamiento concurrentes. Todo o parte del controlador maestro 35 puede residir y operar en un cliente 114, un dispositivo de gestión de RAID de terceras partes, un dispositivo de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604, o un controlador de almacenamiento 152 en un dispositivo de almacenamiento 150. Usando un controlador maestro para ejecutar peticiones de servicio para los datos, el módulo secuenciador 2308 puede ser conocedor de las peticiones de almacenamiento dirigidas a los datos y puede reconocer entonces las peticiones de almacenamiento concurrentes y puede secuenciar a
40 continuación las peticiones de almacenamiento concurrentes de modo que los datos almacenados en los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 no se corrompen. Un experto en la materia reconocerá otras implementaciones de un controlador maestro que controla el servicio de una petición de almacenamiento dirigida a los datos.
45 En una realización, el controlador maestro es parte de un grupo de dos o más controladores maestros capaces de servir a las peticiones de almacenamiento concurrentes desde uno o más clientes 114 donde las peticiones de almacenamiento se dirigen en los datos almacenados sobre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604. Por ejemplo, un controlador maestro puede servir peticiones de almacenamiento para un primer cliente 114 y un segundo controlador maestro puede servir las peticiones de
50 almacenamiento para un segundo cliente 114. El primer y el segundo clientes 114 pueden ambos tener acceso a los datos almacenados sobre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604, posibilitando de este modo peticiones de almacenamiento concurrentes. Un controlador maestro puede ser parte de un dispositivo de almacenamiento 150a mientras que el otro controlador maestro puede ser parte de un segundo dispositivo de almacenamiento 150b. En otra realización, el primer controlador maestro puede ser parte de
55 primer conjunto de dispositivos de almacenamiento 1604a y el segundo controlador maestro puede ser parte de un conjunto de dispositivos de almacenamiento de espejo 1604b
Donde el controlador maestro es parte de un grupo de controladores maestros que acceden a los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604, el aparato 2300 puede incluir un módulo 60 de validación maestro 2310 que confirma que un controlador maestro que sirve una petición de almacenamiento recibida está controlando la ejecución de la petición de almacenamiento por delante de la ejecución de una o más peticiones de almacenamiento concurrentes antes de la ejecución de la petición de almacenamiento recibida. En esta realización, las peticiones de almacenamiento concurrentes se reciben por otros controladores maestros y la petición de servicio tiene al menos una porción de los datos en común con las peticiones de almacenamiento
65 concurrentes recibidas por los otros controladores maestros.
imagen49
Por ejemplo, un controlador maestro puede recibir una petición de almacenamiento y el módulo de validación del maestro 2310 puede sondear a continuación a los otros controladores maestros antes de la ejecución de la petición de almacenamiento para verificar que el controlador maestro es aún el controlador maestro para los datos de la petición de almacenamiento. Parte de la validación puede incluir la verificación de que los controladores maestros 5 pueden comunicar con cada uno de los otros de modo que el controlador maestro designado se verifica antes de la ejecución de la petición de almacenamiento. Esto puede ser útil en situaciones donde un controlador de RAID del extremo frontal se designa como maestro y otros de respaldo. En otro ejemplo, un controlador maestro puede recibir una petición de almacenamiento para leer un segmento de datos desde un fichero u objeto y el módulo de validación del maestro 2310 puede sondear a continuación a los otros controladores maestros para verificar que no hay
10 ninguna actualización en marcha para el fichero u objeto. En otro ejemplo, un controlador maestro puede usar el módulo de validación del maestro 2310 para adquirir el control de los datos para la petición de almacenamiento.
Un modo de verificar que un controlador maestro es aún el maestro para la ejecución de una petición de almacenamiento es usar un esquema de sondeo de tres vías donde dos dispositivos / controladores deben estar 15 disponibles para votar qué controlador es el maestro para que continúe una petición de almacenamiento. El esquema usa un dispositivo (no mostrado) que es una tercera parte para los controladores que compiten para ser maestros y mantiene un registro de qué controlador está asignado para ser maestro. Este dispositivo de verificación del maestro puede ser otro controlador, puede ser un cliente 114 sobre un servidor, etc. y es capaz de comunicar con los controladores en el grupo que pueden actuar como controlador maestro. Una porción del módulo de
20 validación del maestro 2310 puede residir entonces sobre el dispositivo de verificación del maestro con una porción del módulo de verificación del maestro 2310 residiendo en cada controlador.
En un ejemplo, el sistema 1600 incluye un primer controlador de RAID distribuida del extremo frontal ("primer controlador"), un segundo controlador de la RAID distribuida del extremo frontal ("segundo controlador"), cada uno 25 de los cuales puede ser el maestro, y un dispositivo de verificación del maestro separado. Los controladores primero y segundo y el dispositivo de verificación del maestro están todos en comunicación entre sí. El módulo de verificación del maestro 2310 puede designar al primer controlador como controlador maestro y el segundo controlador como de respaldo para los datos almacenados sobre los dispositivos de almacenamiento 150 del conjunto de dispositivos de almacenamiento 1604 y el módulo de verificación del maestro 2310 puede almacenar
30 esta información del maestro sobre los controladores y el dispositivo de verificación del maestro. Siempre que se mantenga la comunicación entre el primer controlador, el segundo controlador y el dispositivo de verificación del maestro, el módulo de verificación del maestro 2310 puede confirmar que el primer controlador es el maestro.
Si el primer controlador maestro recibe una petición de almacenamiento y el segundo controlador de respaldo pasa a
35 no disponible o se pierde la comunicación con el primer controlador y el dispositivo de verificación del maestro, el módulo de validación del maestro 2310 puede verificar mediante la comunicación entre el dispositivo de verificación del maestro y el primer controlador maestro que el primer controlador es aún maestro, y como tanto el primer controlador como el dispositivo de verificación del maestro confirman que el primer controlador es en efecto el controlador maestro, el módulo de validación del maestro 2310 puede permitir continuar la petición de
40 almacenamiento. Las peticiones de almacenamiento recibidas por el segundo controlador de respaldo no continuarían porque a través del módulo de verificación de maestro 2310, reconoce que el segundo controlador no es el maestro.
Si por otra parte, el primer controlador maestro no está disponible o no puede comunicar con el segundo controlador
45 de respaldo y el dispositivo de verificación del maestro y el segundo controlador de respaldo recibe una petición de almacenamiento, el módulo de validación del maestro 2310 puede reconocer que tanto el segundo controlador como el módulo de verificación del maestro no pueden comunicar con el primer controlador y el módulo de verificación del maestro 2310 puede designar al segundo controlador de respaldo para que sea el maestro y pueda continuar la petición de almacenamiento. El cambio de designación del maestro se puede grabar sobre el segundo controlador.
50 Si el primer controlador está operativo y tiene simplemente la comunicación perdida con el segundo controlador y el dispositivo de verificación de maestro, cualesquiera peticiones de almacenamiento para los datos recibidos por el primer controlador no se ejecutarán. Si se restaura la comunicación, el primer controlador no ejecutará aún las peticiones de almacenamiento porque tanto el segundo controlador como el dispositivo de verificación del maestro
55 reconocen al segundo controlador como el maestro. Por supuesto esta designación de maestro se puede reiniciar. Un experto en la materia reconocerá una diversidad de medios estáticos y dinámicos para asignar y reasignar la designación del maestro a uno de los controladores maestros.
Si el dispositivo de verificación del maestro no está disponible y el primer controlador de almacenamiento recibe una
60 petición de almacenamiento, la porción del módulo de verificación del maestro 2310 que opera sobre los controladores primero y segundo puede verificar que el primer controlador es el maestro y puede continuar la petición de almacenamiento. Si el segundo controlador recibe una petición de almacenamiento, la porción del módulo de verificación de maestro 2310 que opera sobre los controladores primero y segundo puede verificar que el primer controlador es el maestro y la petición de almacenamiento no continuará. En otras realizaciones, más de dos
65 controladores son parte de un esquema de sondeo. Un experto en la materia reconocerá otros modos con los que el módulo de verificación del maestro 2310 puede verificar que un controlador es el maestro antes de la ejecución de una petición de almacenamiento.
imagen50
En otra realización, el aparato 2300 incluye un módulo de determinación del maestro 2312. Antes de enviar una
5 petición de almacenamiento, el módulo de determinación del maestro 2312 envía una petición de determinación del maestro al grupo de controladores maestros. El grupo de controladores maestros identifica a continuación qué controlador está designado como maestro para una petición de almacenamiento y envía de vuelta una respuesta que identifica el controlador maestro para el módulo de determinación del maestro 2312. El módulo de determinación del maestro 2312 recibe la identificación del controlador maestro para la petición de almacenamiento y la dirige al
10 dispositivo solicitante para que envíe la petición de almacenamiento al controlador maestro designado. En una realización, el módulo de determinación del maestro 2312 reside y opera en un cliente 114. En otra realización, el módulo de determinación del maestro 2312 reside y se ejecuta en un dispositivo de gestión de RAID de terceras partes. En otra realización, el módulo de determinación del maestro 2312 reside en un dispositivo de almacenamiento 150. En otra realización, el módulo de determinación del maestro 2312 está distribuido entre dos o
15 más dispositivos de almacenamiento 150.
En una realización adicional, el aparato 2300 incluye un módulo de error de maestro 2314 que devuelve una indicación de error. El módulo de error de maestro 2314 devuelve una indicación de error, en una realización, si un módulo receptor de múltiples peticiones de almacenamiento 2302 que está controlado por un controlador maestro
20 recibe una petición de almacenamiento no controlada por el controlador maestro.
En otra realización, el módulo de error de maestro 2314 devuelve una indicación de error si el módulo de determinación del maestro 2312 o el módulo de validación del maestro 2310 determina que el controlador maestro ya no es el maestro determinado en el momento de la terminación de la ejecución de la petición de almacenamiento. 25 Esta realización usualmente ocurre cuando un controlador maestro comienza la ejecución de una petición de almacenamiento y pierde la comunicación con otros controladores maestros del grupo, o, en un esquema de sondeo, pierde la comunicación con los otros controladores maestros y el dispositivo de verificación del maestro. En otra realización, el módulo de error de maestro 2314 devuelve una indicación de error si un módulo receptor de múltiples peticiones de almacenamiento 2302 controlado por un controlador maestro recibe una petición de
30 almacenamiento que no está controlada por el controlador maestro.
En otra realización, el controlador maestro controla las peticiones de almacenamiento a uno o más controladores maestros secundarios. Los controladores maestros secundarios controlan cada uno las peticiones de almacenamiento para los datos almacenados sobre los dispositivos de almacenamiento 150, 1602 del conjunto de
35 dispositivos de almacenamiento 1604. En otra realización, el controlador maestro que controla el controlador maestro secundario es también un controlador maestro secundario para las peticiones de almacenamiento dirigidas para los datos almacenados sobre los dispositivos de almacenamiento 150, 1602 del conjunto de dispositivos de almacenamiento 1604.
40 En otra realización, el controlador maestro controla las peticiones de almacenamiento a uno o más controladores maestros secundarios y cada uno de los controladores maestros secundarios controla las peticiones de almacenamiento para los datos almacenados sobre los dispositivos de almacenamiento 150 de un conjunto de dispositivos de almacenamiento único para el controlador maestro secundario. El aparato 2300 es flexible de modo que cualquiera de los controladores maestros puede ser maestro para los otros controladores que actúan como
45 controladores maestros secundarios. Algunos controladores maestros secundarios pueden compartir un conjunto de dispositivos de almacenamiento 1604 y otros pueden controlar un conjunto de dispositivos de almacenamiento diferente. En otras realizaciones, el controlador maestro puede ser un dispositivo de almacenamiento de paridadespejo 1602 o uno de los N dispositivos de almacenamiento 150a -n.
50 En otra realización, un controlador maestro secundario se puede convertir a controlador maestro cuando el controlador maestro está fuera de línea o es incapaz de determinar que es el maestro designado. Un experto en la materia reconocerá una diversidad de medios estáticos y dinámicos para asignar y reasignar la designación de maestro de entre uno o más controladores maestros secundarios,
55 En una realización preferida, el aparato 2300 incluye un módulo de generación de paridad 2316 que calcula un segmento de datos de paridad para la banda y almacena el segmento de datos de paridad sobre un dispositivo de almacenamiento de paridad-espejo 1602. La banda de paridad se calcula a partir del conjunto de N segmentos de datos sobre el dispositivo de almacenamiento de paridad-espejo 1602. Esta realización es típica de RAID 5, RAID 6
o algunos otros niveles de RAID, pero usualmente no está incluida para RAID 0, RAID 1, RAID 10, etc.
60 En otra realización preferida, el aparato 2300 incluye un módulo de alternancia de paridad 2318 que alterna, para cada banda, cuál de los dispositivos de almacenamiento 150 dentro del conjunto de dispositivos de almacenamiento 1604 están asignados para ser uno o más dispositivos de almacenamiento de paridad-espejo 1602 para la banda. La rotación de los segmentos de datos de paridad por banda mejora el funcionamiento. El módulo de alternancia de
65 paridad 2318 se puede usar en conjunción con el módulo de desmontaje 2304 para calcular la identidad de uno más dispositivos de almacenamiento 150a -n desde los cuales se lee, escribe o actualiza uno o más segmentos de datos que son parte de un fichero u objeto. Las funciones de los diversos módulos 2302-2318 pueden residir juntas en un controlador maestro único o pueden estar distribuidas entre uno o más clientes 114, los dispositivos de gestión de RAID de terceras partes, y uno o más
imagen51
5 dispositivos de almacenamiento 150, 1602. Un experto en la técnica reconocerá diversas realizaciones donde las funciones descritas en este documento están distribuidas.
La Figura 14 es un diagrama de flujo esquemático que ilustra una realización de un método 2400 para una RAID distribuida del extremo frontal compartida de acuerdo con la presente invención. El método 2400 comienza 2402 y el 10 módulo receptor de múltiples peticiones de almacenamiento 2302 recibe 2402 al menos dos peticiones de almacenamiento desde al menos dos clientes 114 para leer o almacenar datos en uno o más dispositivos de almacenamiento 150 de un conjunto de dispositivos de almacenamiento 1604. Los datos proceden de un fichero o de un objeto y las peticiones de almacenamiento tienen cada una al menos una porción de los datos en común y son concurrentes de modo que una petición de almacenamiento no está completa antes de la llegada de otra de las al 15 menos dos peticiones de almacenamiento. El módulo de desmontaje 2304 calcula 2406 un patrón de banda para los datos, donde el patrón de bandas incluye una o más bandas y cada banda incluye un conjunto de N segmentos de datos. El módulo de desmontaje 2304 también lee o escribe 2408 los N segmentos de datos de una banda para los N dispositivos de almacenamiento 150a -n dentro del conjunto de dispositivos de almacenamiento 1604 cuando cada uno de los N segmentos de datos se escribe a un dispositivo de almacenamiento separado 150 o se lee desde
20 el mismo.
Cuando la petición de almacenamiento es una operación de escritura, el módulo de paridad-espejo 2306 escribe 2410 un conjunto de N segmentos de datos de la banda a uno o más dispositivos de almacenamiento de paridadespejo 1602 dentro del conjunto de dispositivos de almacenamiento 1604, donde los dispositivos de almacenamiento 25 de paridad-espejo 1602están en adición a los N dispositivos de almacenamiento 150a -n. El módulo de paridadespejo 2306 también puede leer 2410 los segmentos de datos almacenados en los dispositivos de paridad-espejo 1602 o un segmento de datos de paridad. El módulo secuenciador 2308 asegura 2412 la terminación de una primera petición de almacenamiento desde un primer cliente 114 antes de ejecutar una segunda petición de almacenamiento desde un segundo cliente 114 y el método 2400 termina 2416. Las peticiones de almacenamiento primera y segunda
30 son peticiones de almacenamiento concurrentes.
La presente invención se puede realizar en otras formas específicas sin apartarse de su espíritu o características esenciales. Las realizaciones descritas se considerarán en todos los aspectos solo como ilustrativas y no como restrictivas. El ámbito de la invención se indica, por lo tanto por las reivindicaciones adjuntas más que por la
35 descripción anterior.
ALMACENAMIENTO DE ESTADO SÓLIDO COMO MEMORIA CACHÉ PARA UN ALMACENAMIENTO NO VOLÁTIL DE ALTA CAPACIDAD
40 En general, la memoria caché es ventajosa porque los datos que se acceden a menudo o que se cargan como parte de una aplicación o sistema operativo se pueden almacenar en memoria caché con un acceso posterior mucho más rápido que cuando los datos se acceden a través de un dispositivo de almacenamiento no volátil de alta capacidad ("HCNV"), tal como una unidad de disco duro ("HDD"), una unidad óptica, un almacenamiento de cinta, etc. La memoria caché usualmente está incluida en un ordenador.
45 Algunos dispositivos de almacenamiento y sistemas incluyen memoria caché en los dispositivos de almacenamiento HCNV. Algunos dispositivos de almacenamiento HCNV contienen memoria caché de estado sólido no volátil; esto proporciona el beneficio de la reducción de tiempos de acceso pero solo puede proporcionar un funcionamiento consistente con la capacidad usualmente limitada de la interfaz del dispositivo de almacenamiento HCNV. Existen
50 algunos dispositivos de almacenamiento de la memoria caché de estado sólido no volátil que están típicamente situados en la placa base; estos dispositivos no se pueden usar en entornos multi-cliente ya que no se proporciona la coherencia de la memoria caché. Algunos controladores de dispositivos de HCNV también incluyen memoria caché. Cuando se comparten los controladores de la memoria caché de HCNV redundantes entre múltiples clientes, se requieren algoritmos sofisticados de coherencia de la memoria caché para asegurar que los datos no se
55 corrompen.
Usualmente, las memorias caché se implementan en DRAM, hacen de la capacidad de la memoria caché un objetivo primordial, y requieren potencia relativamente alta para el funcionamiento. Si se pierde la potencia que soporta la memoria caché volátil se pierden los datos almacenados en la memoria caché. Usualmente, se usa
60 alguna batería de respaldo para evitar que los datos de pierdan en el caso de un fallo de potencia, con capacidad suficiente para descargar la memoria caché a una memoria no volátil antes de que falle la batería de respaldo. Además, los sistemas de batería de respaldo consumen potencia, requieren redundancia, impactan negativamente en la fiabilidad y consumen espacio. Las baterías también se tienen que mantener sobre una base regular y la batería de respaldo puede ser relativamente cara.
65 A partir de la discusión anterior, debería ser evidente que existe una necesidad de un aparato, sistema y método que gestionen los datos usando un almacenamiento de estado sólido como memoria caché. Ventajosamente, tal aparato, sistema, y método proporcionarían una memoria caché no volátil que consume poca potencia, proporciona una capacidad significativamente mayor y no requiere una batería de respaldo para mantener los datos almacenados en
imagen52
5 la memoria caché.
La Figura 15 es un diagrama de bloques esquemático que ilustra una realización de un sistema 3400 con almacenamiento de estado sólido 110 como memoria caché para un dispositivo de almacenamiento no volátil de alta capacidad 3404 de acuerdo con la presente invención. El sistema 3400 incluye un dispositivo de almacenamiento de estado sólido 102 con un controlador de almacenamiento 152 que incluye un controlador de almacenamiento de estado sólido 104 y un controlador de HCLV 3402, almacenamiento de estado sólido 110 y una interfaz de red 156. El sistema 3400 incluye un dispositivo solicitante 155 conectado al dispositivo de almacenamiento de estado sólido 102 a través de una red de ordenadores 116 y uno o más dispositivos de almacenamiento de HVNV 3404a -n. Un experto en la materia reconocerá que el sistema 3400 representado en la Figura 15 es meramente una realización y
15 que pueden ser posibles muchas otras configuraciones que permiten al almacenamiento de estado sólido 110 ser una memoria caché para un dispositivo de almacenamiento.
El sistema 3400 incluye un dispositivo de almacenamiento de estado sólido 102 con una interfaz de red 156 y un controlador de almacenamiento 152. En otra realización, la interfaz de red 156 está fuera del dispositivo de almacenamiento de estado sólido 102. Por ejemplo, la interfaz de red 156 puede estar en un servidor 112 que puede ser que incluya o no el dispositivo de almacenamiento de estado sólido 102.
En la realización representada, el dispositivo de almacenamiento de estado sólido 102 incluye un controlador de almacenamiento 152 que incluye un controlador del almacenamiento de estado sólido 104 y un controlador del
25 almacenamiento no volátil de alta capacidad ("HCNV") 3402. En otra realización, el dispositivo de almacenamiento de estado sólido 102 incluye un controlador del almacenamiento de estado sólido 104 y un controlador del almacenamiento HCNV 3402 que no están en el controlador de almacenamiento 152. En otras realizaciones, el dispositivo de almacenamiento de estado sólido 102 incluye un controlador del almacenamiento de estado sólido 104 que incluye un controlador de almacenamiento HCNV 3402 o viceversa.
En la realización representada, el sistema 3400 incluye un dispositivo de almacenamiento de estado sólido 102 con un almacenamiento de estado sólido integrado 110 y con dispositivos de almacenamiento HCNV externos 3404a -n. En otra realización, los controladores de almacenamiento 152, 104, 3402 pueden estar separados del almacenamiento de estado sólido 110. En otra realización, los controladores 152, 104, 3402 y el almacenamiento de
35 estado sólido 110 están incluidos en un dispositivo de almacenamiento HCNV 3404. El dispositivo de almacenamiento HCNV 3404 también puede incluir una interfaz de red 156. Un experto en la materia reconocerá que son posibles otras muchas configuraciones. El dispositivo de almacenamiento de estado sólido 102, el controlador del almacenamiento de estado sólido 104, el almacenamiento de estado sólido 110, el bus I/O de almacenamiento 210, la interfaz de red 156, la red de ordenadores 116 y el dispositivo solicitante 155 son sustancialmente similares a otras realizaciones de los dispositivos y bus descritos anteriormente.
En una realización, el dispositivo solicitante 155 está conectado al dispositivo de almacenamiento de estado sólido 102, el controlador de almacenamiento 152, el controlador del almacenamiento de estado sólido 104, etc. a través de un bus del sistema. Las transferencias de datos entre el dispositivo solicitante 155 y el almacenamiento de estado
45 sólido 110 pueden ocurrir sobre el bus del sistema.
Los dispositivos de almacenamiento HCNV 3404 son típicamente dispositivos de almacenamiento de alta capacidad que proporcionan almacenamiento no volátil y son usualmente más lentos para la escritura y la lectura de datos que el almacenamiento de estado sólido 110. Los dispositivos de almacenamiento HCNV 3404 también pueden ser más baratos por unidad de capacidad de almacenamiento que el almacenamiento de estado sólido 110. Los dispositivos de almacenamiento HCNV 3404 pueden ser una unidad de disco duro ("HDD"), una unidad óptica, un almacenamiento de cinta, y similares. La provisión de almacenamiento de estado sólido 110 como memoria caché para los dispositivos de los dispositivos de almacenamiento HCNV 3404 usualmente aumenta la velocidad del acceso y almacenamiento de datos. Un experto en la materia reconocerá otros beneficios del almacenamiento de
55 estado sólido 110 como memoria caché para un dispositivo de almacenamiento HCNV 3404.
En una realización, los dispositivos de almacenamiento HCNV 3404 están conectados al controlador de almacenamiento 152 a través de una red de área de almacenamiento ("SAN"). En una realización, un controlador de SAN separado conecta los dispositivos de almacenamiento HCNV 3404 al controlador de almacenamiento 152. En otra realización el controlador de almacenamiento HCNV 3402 o el controlador de almacenamiento 152 actúan como un controlador de SAN. Un experto en la materia reconocerá otros modos en los que los dispositivos de almacenamiento HCNV 3404 se pueden conectar en una SAN.
La Figura 16 es un diagrama de bloques esquemático que ilustra una realización de un aparato 3500 con
65 almacenamiento de estado sólido como memoria caché para un dispositivo de almacenamiento no volátil de alta capacidad de acuerdo con la presente invención. El aparato 3500 incluye un módulo del extremo frontal de memoria caché 3502, un módulo del extremo posterior de memoria caché 3504, un controlador de almacenamiento de objetos 3506, un módulo de HCNV 3508, y un módulo de emulación del dispositivo estándar 3510, que se describen a continuación. Los módulos 3502 -3510 del aparato 3500 se representan en un controlador de almacenamiento 152 con un controlador del almacenamiento de estado sólido 104 y un controlador del almacenamiento HCNV 3402, pero
imagen53
5 algunos o todos de cada módulo 3502 -3510 pueden estar incluidos en el controlador de almacenamiento de estado sólido 104, el controlador de almacenamiento HCNV 3402, un servidor 112 un dispositivo de almacenamiento de HCNV 3404 u otra localización.
El aparato 3500 incluye un módulo del extremo frontal de la memoria caché 3502 que gestiona las transferencias de datos asociadas con una petición de almacenamiento, donde las transferencias de datos son entre el dispositivo solicitante 155 y el almacenamiento de estado sólido 110 que funciona como una memoria caché para uno o más dispositivos de almacenamiento HCNV 3404a -n. El aparato 3500 también incluye un módulo del extremo posterior de la memoria caché 3504 que gestiona las transferencias de datos entre el almacenamiento de estado sólido 110 y los dispositivos de almacenamiento HCNV 3404a -n. Las transferencias de datos pueden incluir datos, metadatos
15 y/o índices de metadatos. El almacenamiento de estado sólido 110, como se ha descrito anteriormente es una red de elementos de almacenamiento de datos de estado sólido no volátil 216, 218, 220, que están usualmente dispuestos en bancos 214. En diversas realizaciones, el almacenamiento de estado sólido 110 puede ser memoria flash, nano memoria de acceso aleatorio ("nano RAM" o "NRAM"), RAM magneto-resistiva ("MRAM"), RAM dinámica ("DRAM"), RAM de cambio de fase ("PRAM") o similares.
Usualmente el módulo del extremo frontal de la memoria caché 3502, el módulo del extremo posterior de la memoria caché 3504 y el controlador del almacenamiento de estado sólido 104 operan de forma autónoma desde el dispositivo solicitante 155. Por ejemplo, el dispositivo solicitante 155 puede ver el controlador de almacenamiento 152 con el controlador de almacenamiento de estado sólido 104 y el controlador de almacenamiento HCNV 3402,
25 junto con el almacenamiento asociado 110, 3404a -n, como un único dispositivo de almacenamiento. En otro ejemplo, el dispositivo solicitante 155 puede ver los dispositivos de almacenamiento HCNV 3404a -n y el almacenamiento de estado sólido 110 puede ser transparente.
En una realización, el controlador de almacenamiento de estado sólido 104 incluye un módulo controlador del almacenamiento de objetos 3506 que sirve las peticiones de objetos desde uno o más dispositivos solicitantes 155 y gestiona objetos de las peticiones de objetos dentro del almacenamiento de estado sólido 110. En la realización, el controlador de estado sólido 104, junto con el módulo controlador del almacenamiento de objetos 3506, gestionan las peticiones de objetos como se ha descrito anteriormente, y en particular como se describe en relación con el aparato 200 representado en la Figura 2A.
35 En otra realización, el aparato 3500 incluye un módulo RAID de HCNV 3508 que almacena datos en memoria caché en el almacenamiento de estado sólido 110 en dos o más dispositivos de almacenamiento HCNV 3404a -n en una red redundante de unidades independientes ("RAID") consistente con un nivel de RAID. En la realización, los datos aparecen para un dispositivo solicitante 155 como un todo de modo que la estructuración en RAID es oculta para el dispositivo solicitante 155. Por ejemplo, el módulo del extremo frontal de la memoria caché 3502 puede almacenar en memoria caché datos procedentes del dispositivo solicitante 155 en el almacenamiento de estado sólido 110 y el módulo del extremo posterior de memoria caché 3504 puede cooperar con el módulo de RAID de HCNV 3508 para desmontar los datos y almacenar los segmentos de datos y los segmentos de datos de paridad en los dispositivos de almacenamiento HCNV 3404a -n consistentes con un nivel de RAID. Un experto en la materia reconocerá otros
45 modos en los que los datos procedentes de un dispositivo solicitante 155se puedan estructurar en RAID en los dispositivos de almacenamiento HCNV 3404a -n.
En otra realización, el almacenamiento de estado sólido 110 y los dispositivos de almacenamiento HCNV 3404a -n comprenden un dispositivo de almacenamiento híbrido dentro de un conjunto de dispositivos de almacenamiento híbridos que está configurado como un grupo de RAID. Por ejemplo, el conjunto de dispositivos de almacenamiento híbrido puede ser un conjunto de dispositivos de almacenamiento de RAID distribuido del extremo frontal 1604 y el dispositivo de almacenamiento híbrido puede ser un dispositivo de almacenamiento 150, 1602 en el conjunto de dispositivos de almacenamiento como se ha descrito anteriormente en relación con el sistema 1600, el aparato 2100, y el método 2200 representados en las Figuras 10, 11 y 12 respectivamente. En la realización, un segmento
55 de datos en memoria caché en el almacenamiento de estado sólido 110 y almacenados más tarde sobre un dispositivo de HCNV 3404 es uno de los N segmentos de datos de una banda o un segmento de datos de paridad de una banda. Como en la RAID del extremo frontal, el dispositivo de almacenamiento híbrido recibe peticiones de almacenamiento desde uno o más clientes 114 independientes de los segmentos de datos de una banda de RAID.
En una realización adicional, el dispositivo de almacenamiento híbrido es un dispositivo de almacenamiento 150, 1602 de un grupo de RAID distribuido del extremo frontal 1604 que recibe dos o más peticiones de almacenamiento simultáneo desde dos o más clientes 114, como se ha descrito anteriormente en relación con la RAID del extremo frontal compartida como se ha descrito en relación con el sistema 1600, el aparato 2300 y el método 2400 representados en las Figuras 10, 13 y 14, respectivamente. Ventajosamente, esta realización asegura que la
65 memoria caché redundante, compartida mantiene la coherencia sin complejos protocolos y algoritmos adicionales de coherencia.
imagen54
En otra realización, el almacenamiento de estado sólido 110 y los dispositivos de almacenamiento HCNV 3204a -n comprenden un dispositivo de almacenamiento híbrido y el aparato 3500 incluye un módulo de emulación del dispositivo estándar 3510 que proporciona acceso al dispositivo de almacenamiento híbrido emulando un dispositivo 5 estándar conectado al uno o más dispositivos solicitantes 155 antes de cargar los dispositivos solicitantes 155 con código específico para la operación del dispositivo de almacenamiento híbrido. En la realización, el dispositivo estándar se soporta por una normativa BIOS de la industria. Esta operación de arranque permite al dispositivo híbrido su reconocimiento y acceso por los dispositivos solicitantes 155 con funcionalidad limitada hasta las unidades específicas para el controlador de almacenamiento de estado sólido 104, el controlador de
10 almacenamiento HCNV 3402, y posiblemente los otros módulos 3502 -3510 del aparato 3500 se puede cargar sobre los dispositivos solicitantes 155.
En una realización, el dispositivo de almacenamiento de estado sólido 110 se puede dividir en dos o más regiones donde una o más de las particiones se usan como almacenamientos de estado sólido independientes del
15 funcionamiento del almacenamiento de estado sólido como memoria caché para los dispositivos de almacenamiento HCNV 3404. Por ejemplo, algunas particiones del almacenamiento de estado sólido 110 se pueden acceder por los clientes 114 para almacenamiento de datos general mientras que una o más particiones se dedican como memoria caché par los dispositivos de almacenamiento HCNV 3404.
20 En una realización, más de un cliente 114 (o dispositivo solicitante 155) es capaz de enviar mensajes de control de la memoria caché al módulo del extremo frontal de memoria caché 3502 y el módulo del extremo posterior de la memoria caché 3504 para gestionar el estado de uno o más ficheros u objetos almacenados dentro del dispositivo de almacenamiento de estado sólido 110 y el uno o más dispositivos de almacenamiento HCNV 3404. Ventajosamente, la capacidad para los clientes 114 / dispositivos solicitantes 155 para gestionar la memoria caché
25 en base a cada fichero, o por segmento de datos proporciona una gran acuerdo de flexibilidad para compartir un dispositivo de almacenamiento de estado sólido 110.
Numerosos mensajes de control de la memoria caché son permisibles y posibles. Por ejemplo, un mensaje de control de la memoria caché puede incluir un mensaje de control que cause que el módulo del extremo posterior de 30 la memoria caché 3504 ancle una porción de un objeto o fichero en el almacenamiento de estado sólido 110. Otro mensaje de control de la memoria caché puede incluir un mensaje de control que cause que el módulo del extremo posterior de la memoria caché 3504 desancle una porción de un objeto o fichero en el almacenamiento de estado sólido 110. Otro mensaje de control de la memoria caché puede incluir un mensaje de control que cause que el módulo del extremo posterior de memoria caché 3504 transfiera una porción de un objeto o fichero desde el 35 almacenamiento de estado sólido 110 al uno o más dispositivos de almacenamiento HCNV 3404. Otro mensaje de control de la memoria caché puede incluir un mensaje de control que cause que el módulo del extremo posterior de la memoria caché 3504 precargue una porción de un objeto o fichero al almacenamiento de estado sólido 110 desde el uno o más dispositivos de almacenamiento HCNV 3404. Otro mensaje de control de la memoria caché puede incluir un mensaje de control que cause que el módulo del extremo posterior de la memoria caché 3504 descargue
40 una o más porciones del uno o más objetos o ficheros desde el almacenamiento de estado sólido a los dispositivos de almacenamiento HCNV 3404 para liberar una cantidad determinada de espacio de almacenamiento en el almacenamiento de estado sólido 110. Un experto en la materia reconocerá otros posibles mensajes de control de la memoria caché.
45 En una realización, los mensajes de control de la memoria caché se comunican mediante metadatos ("metadatos de control de la memoria caché") para el objeto o fichero. Los metadatos de control de la memoria caché, en una realización, son persistentes. En otra realización, los metadatos de control de la memoria caché se establecen mediante un conjunto de atributos en el momento de creación del fichero o el objeto. En la realización, los atributos se pueden heredar a través de la relación para una clase de objetos particular, características por defecto de los
50 tipos de ficheros específicos, etc. En otra realización, los metadatos de control de la memoria caché se obtienen desde un sistema de gestión de ficheros u objetos. Un experto en la materia reconocerá otros modos en los que se pueden comunicar mensajes de control de la memoria caché mediante metadatos.
En una realización, el sistema 3400 incluye un elemento de almacenamiento de la memoria caché volátil. Por
55 ejemplo, además del almacenamiento de estado sólido 110, el sistema 3400 también puede incluir una memoria de acceso aleatoria ("RAM") de algún tipo que es volátil. En esta realización, el módulo del extremo frontal de la memoria caché 3502 y el módulo del extremo posterior de la memoria caché 3504 almacenan algunos datos en el elemento de almacenamiento de la memoria caché volátil y gestionan los datos almacenados en el almacenamiento de estado sólido 110 y el elemento de almacenamiento de memoria caché volátil y el módulo de almacenamiento del
60 extremo posterior 3504 también gestiona las transferencias de datos entre el elemento de almacenamiento de la memoria caché volátil, el almacenamiento de estado sólido y los dispositivos de almacenamiento HCNV. Por ejemplo, los datos que no son críticos o se pueden recuperar fácilmente desde otra fuente se pueden almacenar en memoria caché volátil mientras que otros datos se pueden almacenar en el almacenamiento de estado sólido 110 funcionando como memoria caché.
65
imagen55
En una realización adicional, los metadatos y/o metadatos de índices para objetos y ficheros almacenados en los dispositivos de almacenamiento HCNV 3404 se mantienen dentro del dispositivo de almacenamiento de estado sólido 110 y en el elemento de almacenamiento de la memoria caché volátil. Como se ha descrito anteriormente en relación con el aparato 200 representado en la Figura 2A, ciertos metadatos se pueden almacenar en un elemento 5 de almacenamiento de la memoria caché volátil y se pueden usar para reconstruir un índice si los datos en el elemento de almacenamiento caché volátil se pierden. En una realización, los metadatos y los metadatos de índices se almacenan en el almacenamiento de estado sólido 110 donde está incluido el elemento de almacenamiento de la memoria caché no volátil. Un experto en la materia reconocerá otros beneficios y modos de usar los elementos de almacenamiento de la memoria caché volátil junto con el almacenamiento de estado sólido 110 funcionando como
10 memoria caché.
La Figura 17 es un diagrama de flujo esquemático que ilustra una realización de un método 3600 con almacenamiento de estado sólido como memoria caché para un dispositivo de almacenamiento no volátil de alta capacidad de acuerdo con la presente invención.
15 El método 3600 comienza 3602 y el módulo del extremo frontal de la memoria caché 3502 gestiona 3604 las transferencias de datos asociadas con una petición de almacenamiento, donde las transferencias de datos son entre un dispositivo solicitante 155 y el almacenamiento de estado sólido 110 funcionando como memoria caché para uno
o más dispositivos de almacenamiento HCNV 3404a -n. El módulo del extremo posterior de la memoria caché 3504 gestiona 3606 las transferencias de datos entre el almacenamiento de estado sólido 110 y el uno o más dispositivos
20 de almacenamiento HCNV 3404a-n y el método 3600 termina 3608. El método 3600 opera de forma sustancialmente similar a como se describió anteriormente con relación al aparato 3500 de la Figura 16.
La presente invención se puede realizar en otras formas específicas sin apartarse de sus características esenciales. Las realizaciones descritas se considerarán en todos los aspectos solo como ilustrativas y no restrictivas. Por lo
25 tanto el ámbito de la invención se indica por las reivindicaciones adjuntas más que por la descripción anterior.

Claims (12)

  1. imagen1
    REIVINDICACIONES
    1. Un aparato para gestionar el almacenamiento de datos sobre uno o más dispositivos de almacenamiento no volátiles de alta capacidad "HCNV" (150, 3404), comprendiendo el aparato:
    5 un controlador de almacenamiento (152) que comprende un controlador de almacenamiento de estado sólido
    (104) y un controlador de almacenamiento HCNV (3402); un módulo del extremo frontal de la memoria caché (3502) que gestiona las transferencias de datos asociadas con una petición de almacenamiento, funcionando las transferencias de datos entre un dispositivo solicitante y un
    10 almacenamiento de estado sólido como memoria caché para uno o más dispositivos de almacenamiento HCNV, comprendiendo las transferencias de datos uno o más de datos, metadatos e índices de metadatos, comprendiendo el almacenamiento de estado sólido una red de elementos de almacenamientos de datos de estado sólido no volátiles; un módulo del extremo posterior de la memoria caché (3504) que gestiona las transferencias de datos entre el
    15 almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV; y un módulo de almacenamiento secuencial (802) que almacena secuencialmente segmentos de datos de las transferencias de datos en divisiones de almacenamiento del almacenamiento de estado sólido por orden de procesamiento en el orden en el que los segmentos de datos llegan desde el dispositivo solicitante.
    20 2. El aparato de la reivindicación 1, en el que el módulo del extremo frontal de la memoria caché, el módulo del extremo posterior de la memoria caché, y el controlador de almacenamiento de estado sólido operan de forma autónoma del dispositivo solicitante.
  2. 3. El aparato de la reivindicación 1, que comprende además un módulo de RAID de HCNV (3508) que almacena los
    25 datos almacenados en memoria caché en al almacenamiento de estado sólido en dos o más dispositivos de almacenamiento HCNV en una red redundante de unidades independientes, "RAID", consistentes con un nivel de RAID, en el que los datos aparecen al dispositivo solicitante como un todo.
  3. 4. El aparato de la reivindicación 1, en el que el almacenamiento de estado sólido y el uno o más dispositivos de
    30 almacenamiento HCNV comprende un dispositivo de almacenamiento híbrido dentro de un conjunto de dispositivos de almacenamiento híbrido que se configuran como un grupo de RAID, en el que un segmento de datos almacenado en memoria caché en el almacenamiento de estado sólido y almacenado más tarde sobre un dispositivo de HCNV comprende uno de N segmentos de datos de una banda o segmentos de datos de paridad de la banda, en el que el dispositivo de almacenamiento híbrido recibe peticiones de almacenamiento desde uno o más clientes
    35 independientes de los segmentos de datos de una banda de RAID.
  4. 5. El aparato de la reivindicación 4, en el que el dispositivo de almacenamiento híbrido es un dispositivo de almacenamiento de un grupo de RAID distribuido del extremo frontal compartido que recibe dos o más peticiones simultáneas de almacenamiento desde dos o más clientes.
    40
  5. 6. El aparato de la reivindicación 1, en el que el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV comprenden un dispositivo de almacenamiento híbrido y comprenden además un módulo de emulación de un dispositivo normalizado (3510) que proporciona acceso al dispositivo de almacenamiento híbrido emulando un dispositivo normalizado conectado al uno o más dispositivos solicitantes antes de cargar el uno o más
    45 dispositivos solicitantes con código específico para la operación del dispositivo de almacenamiento híbrido, estando soportado el dispositivo normalizado por una normativa BIOS de la industria.
  6. 7. El aparato de la reivindicación 1, en el que el dispositivo de almacenamiento de estado sólido se puede dividir en dos o más regiones, en el que una o más particiones se pueden usar como almacenamiento de estado sólido
    50 independiente del almacenamiento de estado sólido que funciona como memoria caché para los dispositivos de almacenamiento HCNV.
  7. 8. El aparato de la reivindicación 1, en el que uno o más clientes (114) envían mensajes de control de la memoria caché al módulo del extremo del extremo frontal de la memoria caché y al módulo del extremo posterior de la
    55 memoria caché para gestionar un estado de uno o más ficheros u objetos almacenados dentro del dispositivo de almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV.
  8. 9. El aparato de la reivindicación 8, en el que los mensajes de control de la memoria caché se comunican mediante
    metadatos, "metadatos de control de la memoria caché", para el objeto o fichero. 60
  9. 10.
    El aparato de la reivindicación 9, en el que los metadatos de control de la memoria caché son uno de: persistentes, establecidos a través del conjunto de atributos en el momento de la creación del fichero u objeto; y obtenidos desde un sistema de gestión de ficheros u objetos.
  10. 11.
    El aparato de la reivindicación 1, en el que uno o más de los metadatos y metadatos de índices para los objetos y ficheros almacenados en los dispositivos de almacenamiento HCNM se mantienen dentro del dispositivo de almacenamiento de estado sólido.
    57
    imagen2
    5 12. El aparato de la reivindicación 1, en el que el almacenamiento de estado sólido y el uno o más dispositivos de almacenamiento HCNV comprenden un dispositivo de almacenamiento de modo que los dispositivos de almacenamiento HCNV están ocultos de la vista de un cliente conectado al dispositivo de almacenamiento y aparecen al dispositivo solicitante como un único dispositivo de almacenamiento.
    10 13. Un sistema para la gestión del almacenamiento de datos sobre uno o más dispositivos de almacenamiento no volátiles de alta capacidad "HCNV", comprendiendo el sistema:
    un almacenamiento de estado sólido (110) que comprende una red de elementos de almacenamiento de datos de estado sólido no volátiles;
    15 uno o más dispositivos de almacenamiento HCNV (150, 3404); y un controlador de almacenamiento (152) que comprende un controlador del almacenamiento de estado sólido (104); un controlador del dispositivo de almacenamiento HCNV (3402); y el aparato de acuerdo con la reivindicación 1.
    20
  11. 14. El sistema de la reivindicación 13 que comprende además una interfaz de red (156) conectada al controlador de almacenamiento, facilitando la interfaz de red las transferencias de datos entre el dispositivo solicitante y el controlador del almacenamiento de estado sólido a través de una red de ordenadores.
    25 15. El sistema de la reivindicación 13, en el que el uno o más dispositivos de almacenamiento HCNV están conectados al controlador de almacenamiento a través de una red de área de almacenamiento ("SAN").
  12. 16. Un producto de programa de ordenador que comprende un medio legible por ordenador que tiene un código de programa utilizable por el ordenador que, cuando se ejecuta sobre un procesador, realiza operaciones para la
    30 gestión del almacenamiento de datos sobre uno o más dispositivos de almacenamiento no volátiles de alta capacidad "HCNV" (150, 3404), comprendiendo las operaciones del producto de programa de ordenador:
    gestionar las transferencias de datos asociadas con una petición de almacenamiento usando un módulo del extremo frontal de la memoria caché (3502), las transferencias de datos entre un dispositivo solicitante y el
    35 almacenamiento de estado sólido que funciona como una memoria caché para uno o más dispositivos de almacenamiento HCNV, comprendiendo las transferencias de datos uno o más de datos, metadatos e índices de metadatos, comprendiendo el almacenamiento de estado sólido una red de elementos de almacenamiento de datos de estados sólido no volátil; gestionar transferencias de datos entre el almacenamiento de estado sólido y el uno o más dispositivos de
    40 almacenamiento HCNV usando un módulo del extremo posterior de la memoria caché (3504); y almacenar secuencialmente los segmentos de datos de las transferencias de datos en divisiones de almacenamiento del almacenamiento de estado sólido por orden de procesamiento en el orden que llegan los segmentos de datos desde el dispositivo solicitante.
    45
    58
ES07867661.6T 2006-12-06 2007-12-06 Aparato, sistema, y método para un almacenamiento de estado sólido como memoria caché para un almacenamiento no volátil de alta capacidad Active ES2507072T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US87311106P 2006-12-06 2006-12-06
US873111P 2006-12-06
US97447007P 2007-09-22 2007-09-22
US974470P 2007-09-22
PCT/US2007/025049 WO2008070173A1 (en) 2006-12-06 2007-12-06 Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage

Publications (1)

Publication Number Publication Date
ES2507072T3 true ES2507072T3 (es) 2014-10-14

Family

ID=39223046

Family Applications (1)

Application Number Title Priority Date Filing Date
ES07867661.6T Active ES2507072T3 (es) 2006-12-06 2007-12-06 Aparato, sistema, y método para un almacenamiento de estado sólido como memoria caché para un almacenamiento no volátil de alta capacidad

Country Status (8)

Country Link
US (39) US20080140724A1 (es)
EP (9) EP2115563A2 (es)
JP (4) JP2010512584A (es)
KR (7) KR20090095641A (es)
CN (7) CN101681282A (es)
CA (2) CA2672100A1 (es)
ES (1) ES2507072T3 (es)
WO (15) WO2008070798A1 (es)

Families Citing this family (1283)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685126B2 (en) 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US7146524B2 (en) * 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7650510B2 (en) * 2002-04-30 2010-01-19 General Dynamics Advanced Information Systems, Inc. Method and apparatus for in-line serial data encryption
AU2003291014A1 (en) 2002-11-14 2004-06-15 Isilon Systems, Inc. Systems and methods for restriping files in a distributed file system
US8346884B2 (en) 2003-01-21 2013-01-01 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US7490325B2 (en) 2004-03-13 2009-02-10 Cluster Resources, Inc. System and method for providing intelligent pre-staging of data in a compute environment
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US8051425B2 (en) 2004-10-29 2011-11-01 Emc Corporation Distributed system with asynchronous execution systems and methods
US8238350B2 (en) 2004-10-29 2012-08-07 Emc Corporation Message batching with checkpoints systems and methods
US8055711B2 (en) 2004-10-29 2011-11-08 Emc Corporation Non-blocking commit protocol systems and methods
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
EP1866767B1 (en) 2005-03-16 2018-04-18 III Holdings 12, LLC Automatic workload transfer to an on-demand center
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US8112655B2 (en) * 2005-04-21 2012-02-07 Violin Memory, Inc. Mesosynchronous data bus apparatus and method of data transmission
US9286198B2 (en) 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8143653B2 (en) * 2005-08-10 2012-03-27 Samsung Electronics Co., Ltd. Variable resistance memory device and system thereof
US8325768B2 (en) 2005-08-24 2012-12-04 Intel Corporation Interleaving data packets in a packet-based communication system
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US20080220880A1 (en) * 2005-09-07 2008-09-11 Bally Gaming, Inc. Trusted Cabinet Identification System
US7788303B2 (en) 2005-10-21 2010-08-31 Isilon Systems, Inc. Systems and methods for distributed system scanning
US7551572B2 (en) 2005-10-21 2009-06-23 Isilon Systems, Inc. Systems and methods for providing variable protection
US7917474B2 (en) 2005-10-21 2011-03-29 Isilon Systems, Inc. Systems and methods for accessing and updating distributed data
US7797283B2 (en) 2005-10-21 2010-09-14 Isilon Systems, Inc. Systems and methods for maintaining distributed data
US7848261B2 (en) 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
WO2007116612A1 (ja) * 2006-03-31 2007-10-18 Matsushita Electric Industrial Co., Ltd. コマンド出力制御装置
US7756898B2 (en) 2006-03-31 2010-07-13 Isilon Systems, Inc. Systems and methods for notifying listeners of events
US8046629B1 (en) 2006-07-24 2011-10-25 Marvell World Trade Ltd. File server for redundant array of independent disks (RAID) system
US7634686B2 (en) 2006-07-24 2009-12-15 Marvell World Trade Ltd. File server for redundant array of independent disks (RAID) system
US7822932B2 (en) 2006-08-18 2010-10-26 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7680836B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7899800B2 (en) 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7680842B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7590652B2 (en) * 2006-08-18 2009-09-15 Isilon Systems, Inc. Systems and methods of reverse lookup
US7953704B2 (en) 2006-08-18 2011-05-31 Emc Corporation Systems and methods for a snapshot of data
US7882071B2 (en) 2006-08-18 2011-02-01 Isilon Systems, Inc. Systems and methods for a snapshot of data
US8028186B2 (en) 2006-10-23 2011-09-27 Violin Memory, Inc. Skew management in an interconnection system
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8271604B2 (en) * 2006-12-19 2012-09-18 International Business Machines Corporation Initializing shared memories for sharing endpoints across a plurality of root complexes
US7860930B2 (en) * 2006-12-19 2010-12-28 International Business Machines Corporation Communication between host systems using a transaction protocol and shared memories
US7657663B2 (en) * 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
US7813366B2 (en) * 2006-12-19 2010-10-12 International Business Machines Corporation Migration of a virtual endpoint from one virtual plane to another
US7984454B2 (en) * 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US7836238B2 (en) * 2006-12-19 2010-11-16 International Business Machines Corporation Hot-plug/remove of a new component in a running PCIe fabric
US7991839B2 (en) * 2006-12-19 2011-08-02 International Business Machines Corporation Communication between host systems using a socket connection and shared memories
US7836129B2 (en) * 2006-12-19 2010-11-16 International Business Machines Corporation Communication between host systems using a queuing system and shared memories
US8286029B2 (en) 2006-12-21 2012-10-09 Emc Corporation Systems and methods for managing unavailable storage devices
US7593938B2 (en) 2006-12-22 2009-09-22 Isilon Systems, Inc. Systems and methods of directory entry encodings
US8139432B2 (en) * 2006-12-27 2012-03-20 Samsung Electronics Co., Ltd. Variable resistance memory device and system thereof
US8239706B1 (en) * 2007-01-03 2012-08-07 Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Data retrieval system and method that provides retrieval of data to any point in time
US7509448B2 (en) 2007-01-05 2009-03-24 Isilon Systems, Inc. Systems and methods for managing semantic locks
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US7900015B2 (en) 2007-04-13 2011-03-01 Isilon Systems, Inc. Systems and methods of quota accounting
US7779048B2 (en) 2007-04-13 2010-08-17 Isilon Systems, Inc. Systems and methods of providing possible value ranges
US8966080B2 (en) 2007-04-13 2015-02-24 Emc Corporation Systems and methods of managing resource utilization on a threaded computer system
US8332574B2 (en) * 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
US8309521B2 (en) * 2007-06-19 2012-11-13 Zimmer, Inc. Spacer with a coating thereon for use with an implant device
US8116454B2 (en) 2007-07-23 2012-02-14 Savi Technology, Inc. Method and apparatus for providing security in a radio frequency identification system
US7743204B2 (en) * 2007-08-01 2010-06-22 Transcend Information, Inc. Non-volatile memory device and data access circuit and data access method
KR20090014828A (ko) * 2007-08-07 2009-02-11 삼성전자주식회사 에러 정정 코드를 암호화하는 플래시 메모리 시스템 및플래시 메모리 시스템의 암호화 방법
US11237956B2 (en) * 2007-08-13 2022-02-01 Digital Kiva, Inc. Apparatus and system for object-based storage solid-state device
US7949692B2 (en) 2007-08-21 2011-05-24 Emc Corporation Systems and methods for portals into snapshot data
US7966289B2 (en) 2007-08-21 2011-06-21 Emc Corporation Systems and methods for reading objects in a file system
US7882068B2 (en) 2007-08-21 2011-02-01 Isilon Systems, Inc. Systems and methods for adaptive copy on write
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8527991B2 (en) * 2007-09-27 2013-09-03 Proximal System Corporation Apparatus, system, and method for cross-system proxy-based task offloading
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
WO2009072104A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
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
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
TWI350454B (en) * 2007-12-10 2011-10-11 Phison Electronics Corp Anti-attacking method for private key, controller and storage device executing the same
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8220041B2 (en) * 2007-12-13 2012-07-10 Trend Micro Incorporated Method and system for protecting a computer system during boot operation
US8621137B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US9112886B2 (en) * 2007-12-27 2015-08-18 Verizon Patent And Licensing Inc. Method and system for providing centralized data field encryption, and distributed storage and retrieval
CN101217468A (zh) * 2007-12-28 2008-07-09 华为技术有限公司 路由查表系统、三态内容寻址存储器和网络处理器
US9047468B2 (en) * 2007-12-28 2015-06-02 Intel Corporation Migration of full-disk encrypted virtualized storage between blade servers
GB2458260A (en) * 2008-02-26 2009-09-16 Advanced Risc Mach Ltd Selectively disabling error repair circuitry in an integrated circuit
KR101086855B1 (ko) * 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
JP5245472B2 (ja) * 2008-03-13 2013-07-24 富士通株式会社 制御方法、ディスクアレイ装置
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US7949636B2 (en) 2008-03-27 2011-05-24 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7953709B2 (en) 2008-03-27 2011-05-31 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7984324B2 (en) * 2008-03-27 2011-07-19 Emc Corporation Systems and methods for managing stalled storage devices
US7870345B2 (en) 2008-03-27 2011-01-11 Isilon Systems, Inc. Systems and methods for managing stalled storage devices
JP2009238094A (ja) * 2008-03-28 2009-10-15 Hitachi Ltd ストレージシステム及びデータ保存方法
US9141934B2 (en) * 2008-04-07 2015-09-22 Blackberry Limited Techniques for deploying virtual software applications on desktop computers
US8194492B2 (en) * 2008-04-08 2012-06-05 Samsung Electronics Co., Ltd. Variable resistance memory device and system
EP2111011A1 (en) * 2008-04-16 2009-10-21 Thomson Telecom Belgium Device and method for sharing files
US7933939B2 (en) * 2008-04-16 2011-04-26 Quantum Corporation Apparatus and method for partitioning data blocks
US20090319772A1 (en) * 2008-04-25 2009-12-24 Netapp, Inc. In-line content based security for data at rest in a network storage system
US9395929B2 (en) * 2008-04-25 2016-07-19 Netapp, Inc. Network storage server with integrated encryption, compression and deduplication capability
US8296398B2 (en) * 2008-04-29 2012-10-23 Overland Storage, Inc. Peer-to-peer redundant file server system and methods
US8117464B1 (en) 2008-04-30 2012-02-14 Netapp, Inc. Sub-volume level security for deduplicated data
US8589697B2 (en) 2008-04-30 2013-11-19 Netapp, Inc. Discarding sensitive data from persistent point-in-time image
JP5335779B2 (ja) * 2008-05-12 2013-11-06 パナソニック株式会社 半導体記録装置
CN102027455A (zh) 2008-05-13 2011-04-20 拉姆伯斯公司 用于存储器器件的分式编程命令
CN102124527A (zh) 2008-05-16 2011-07-13 弗森-艾奥公司 用于检测和替代失效的数据存储器的装置、系统和方法
US8775718B2 (en) * 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US20090300282A1 (en) * 2008-05-30 2009-12-03 Promise Technology, Inc. Redundant array of independent disks write recovery system
WO2010011428A1 (en) * 2008-06-06 2010-01-28 Pivot3 Method and system for data migration in a distributed raid implementation
US8893160B2 (en) * 2008-06-09 2014-11-18 International Business Machines Corporation Block storage interface for virtual memory
CN101609413A (zh) * 2008-06-18 2009-12-23 鸿富锦精密工业(深圳)有限公司 远程获取系统信息的装置及方法
US8185505B1 (en) * 2008-06-20 2012-05-22 Emc Corporation Techniques for processing recovery points
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8719485B2 (en) 2008-06-27 2014-05-06 Marvell World Trade Ltd. Solid-state disk with wireless functionality
US8219750B2 (en) 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8615678B1 (en) * 2008-06-30 2013-12-24 Emc Corporation Auto-adapting multi-tier cache
US8300825B2 (en) * 2008-06-30 2012-10-30 Intel Corporation Data encryption and/or decryption by integrated circuit
US9323681B2 (en) 2008-09-18 2016-04-26 Avere Systems, Inc. File storage system, cache appliance, and method
US9342528B2 (en) * 2010-04-01 2016-05-17 Avere Systems, Inc. Method and apparatus for tiered storage
US8214404B2 (en) 2008-07-11 2012-07-03 Avere Systems, Inc. Media aware distributed data layout
US9118695B1 (en) * 2008-07-15 2015-08-25 Pc-Doctor, Inc. System and method for secure optimized cooperative distributed shared data storage with redundancy
US8819011B2 (en) * 2008-07-16 2014-08-26 Cleversafe, Inc. Command line interpreter for accessing a data object stored in a distributed storage network
US20100017556A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US20100030963A1 (en) * 2008-08-04 2010-02-04 Sandisk Il Ltd. Managing storage of cached content
CN101334797B (zh) * 2008-08-04 2010-06-02 中兴通讯股份有限公司 一种分布式文件系统及其数据块一致性管理的方法
KR101636777B1 (ko) * 2008-08-08 2016-07-21 시게이트 테크놀로지 엘엘씨 하이브리드 저장 장치 및 그에 대한 논리 블록 어드레스 할당 방법
US8145749B2 (en) * 2008-08-11 2012-03-27 International Business Machines Corporation Data processing in a hybrid computing environment
JP2010044827A (ja) 2008-08-13 2010-02-25 Toshiba Corp 不揮発性半導体記憶装置
US8359514B2 (en) * 2008-08-15 2013-01-22 Micron Technology, Inc. Data and error correction code mixing device and method
US8078906B2 (en) * 2008-08-21 2011-12-13 Infinidat, Ltd. Grid storage system and method of operating thereof
US8495291B2 (en) 2008-08-21 2013-07-23 Infinidat Ltd. Grid storage system and method of operating thereof
US8452922B2 (en) * 2008-08-21 2013-05-28 Infinidat Ltd. Grid storage system and method of operating thereof
US8443137B2 (en) * 2008-08-21 2013-05-14 Infinidat Ltd. Grid storage system and method of operating thereof
US20100049919A1 (en) * 2008-08-21 2010-02-25 Xsignnet Ltd. Serial attached scsi (sas) grid storage system and method of operating thereof
US8307044B2 (en) * 2008-08-28 2012-11-06 Netapp, Inc. Circuits, systems, and methods to integrate storage virtualization in a storage controller
GB2463078B (en) * 2008-09-02 2013-04-17 Extas Global Ltd Distributed storage
US8141102B2 (en) 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
US7984267B2 (en) * 2008-09-04 2011-07-19 International Business Machines Corporation Message passing module in hybrid computing system starting and sending operation information to service program for accelerator to execute application program
JP5110166B2 (ja) * 2008-09-05 2012-12-26 富士通株式会社 Macアドレス管理方法
US8230442B2 (en) 2008-09-05 2012-07-24 International Business Machines Corporation Executing an accelerator application program in a hybrid computing environment
US8225019B2 (en) * 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
JP2012503819A (ja) * 2008-09-25 2012-02-09 エルエスアイ コーポレーション 外部記憶アレイにおいて帯域外管理アプリケーションを認証するための方法及び/又は装置
US20100083247A1 (en) * 2008-09-26 2010-04-01 Netapp, Inc. System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA
CN101685381B (zh) 2008-09-26 2013-07-24 美光科技公司 固态大容量存储装置的数据串流
WO2010037147A2 (en) * 2008-09-29 2010-04-01 Whiptail Technologies Method and system for a storage area network
US8074039B2 (en) * 2008-09-29 2011-12-06 Intel Corporation Redundant array of independent disks-related operations
JP5183403B2 (ja) * 2008-09-30 2013-04-17 株式会社日立製作所 ストレージシステムおよび制御プログラムならびにストレージシステム制御方法
TWI380642B (en) * 2008-10-01 2012-12-21 Network bridging apparatus for storage device and data stream transmitting method thereof
US7934124B2 (en) * 2008-10-10 2011-04-26 Oracle America, Inc. Self-contained densely packed solid-state storage subsystem
US7904749B2 (en) 2008-10-24 2011-03-08 Hitachi, Ltd. Fast data recovery from HDD failure
US9626124B2 (en) * 2008-10-24 2017-04-18 Hewlett-Packard Development Company, L.P. Direct-attached/network-attached storage device
US8176247B2 (en) * 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
US8386439B2 (en) * 2008-10-29 2013-02-26 Bruce Backa System and method for user-driven data archiving
JP2012507783A (ja) * 2008-10-30 2012-03-29 エルエスアイ コーポレーション ストレージコントローラのデータ再配分
TWI385672B (zh) * 2008-11-05 2013-02-11 Lite On It Corp 儲存裝置之適應性多通道控制器及其方法
EP2353075A1 (en) * 2008-11-07 2011-08-10 Dell Compellent Thin import for a data storage system
US9063874B2 (en) 2008-11-10 2015-06-23 SanDisk Technologies, Inc. Apparatus, system, and method for wear management
US9170897B2 (en) 2012-05-29 2015-10-27 SanDisk Technologies, Inc. Apparatus, system, and method for managing solid-state storage reliability
US8516343B2 (en) * 2008-11-10 2013-08-20 Fusion-Io, Inc. Apparatus, system, and method for retiring storage regions
US8275933B2 (en) * 2008-11-10 2012-09-25 Fusion-10, Inc Apparatus, system, and method for managing physical regions in a solid-state storage device
TW201021494A (en) * 2008-11-20 2010-06-01 Inventec Corp Remote data access device and remote data access method
US8065422B2 (en) * 2008-11-26 2011-11-22 Netapp, Inc. Method and/or apparatus for certifying an in-band management application of an external storage array
US20100161932A1 (en) * 2008-12-18 2010-06-24 Ori Moshe Stern Methods for writing data from a source location to a destination location in a memory device
US8316201B2 (en) * 2008-12-18 2012-11-20 Sandisk Il Ltd. Methods for executing a command to write data from a source location to a destination location in a memory device
US9208108B2 (en) * 2008-12-19 2015-12-08 Nvidia Corporation Method and system for improved flash controller commands selection
WO2010071655A1 (en) 2008-12-19 2010-06-24 Hewlett-Packard Development Company, L.P. Redundant data storage for uniform read latency
US8732350B2 (en) * 2008-12-19 2014-05-20 Nvidia Corporation Method and system for improving direct memory access offload
US8694750B2 (en) * 2008-12-19 2014-04-08 Nvidia Corporation Method and system for data structure management
US7925925B2 (en) 2008-12-30 2011-04-12 Intel Corporation Delta checkpoints for a non-volatile memory indirection table
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US20100180182A1 (en) * 2009-01-09 2010-07-15 Seagate Technology Llc Data memory device and controller with interface error detection and handling logic
KR101627321B1 (ko) * 2009-01-13 2016-06-03 삼성전자주식회사 I/o 리퀘스트 핸들링 방법 및 이를 이용한 솔리드 스테이트 드라이브
TWI397821B (zh) * 2009-01-19 2013-06-01 Phison Electronics Corp 資料串傳送方法、系統及其控制器
US8527734B2 (en) 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US9286232B2 (en) * 2009-01-26 2016-03-15 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses
US8347050B2 (en) * 2009-01-27 2013-01-01 Microsoft Corporation Append-based shared persistent storage
US8843880B2 (en) * 2009-01-27 2014-09-23 International Business Machines Corporation Software development for a hybrid computing environment
US8255909B2 (en) 2009-01-28 2012-08-28 International Business Machines Corporation Synchronizing access to resources in a hybrid computing environment
US20100191923A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data Processing In A Computing Environment
WO2010087803A1 (en) * 2009-01-29 2010-08-05 Lsi Corporation Allocate-on-write snapshot mechanism to provide dynamic storage tiering on-line data placement for volumes
US8001206B2 (en) 2009-01-29 2011-08-16 International Business Machines Corporation Broadcasting data in a hybrid computing environment
US9170864B2 (en) * 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
US8543756B2 (en) 2009-02-02 2013-09-24 Marvell World Trade Ltd. Solid-state drive command grouping
US8010718B2 (en) * 2009-02-03 2011-08-30 International Business Machines Corporation Direct memory access in a hybrid computing environment
KR20100091379A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법
WO2010093529A2 (en) * 2009-02-12 2010-08-19 Rambus Inc. Memory interface with reduced read-write turnaround delay
US20100211546A1 (en) * 2009-02-13 2010-08-19 Lennox Manufacturing Inc. System and method to backup data about devices in a network
KR101023883B1 (ko) * 2009-02-13 2011-03-22 (주)인디링스 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템
US8386724B2 (en) 2009-02-19 2013-02-26 Micron Technology, Inc. Methods and apparatus for designating or using data status indicators
US8195878B2 (en) 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
KR101563647B1 (ko) * 2009-02-24 2015-10-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
CN101504670A (zh) * 2009-03-04 2009-08-12 成都市华为赛门铁克科技有限公司 数据操作方法、系统、客户端和数据服务器
JP4719802B2 (ja) * 2009-03-09 2011-07-06 富士通株式会社 ストレージ管理装置、ストレージ管理方法およびストレージシステム
TWI406130B (zh) * 2009-03-10 2013-08-21 Phison Electronics Corp 資料處理系統、控制器及其搜尋特定記憶體區的方法
US20100241868A1 (en) * 2009-03-19 2010-09-23 Hani Nachef Method and apparatus for storing, managing, and securing personal information
US8725946B2 (en) * 2009-03-23 2014-05-13 Ocz Storage Solutions, Inc. Mass storage system and method of using hard disk, solid-state media, PCIe edge connector, and raid controller
US8074037B2 (en) * 2009-03-30 2011-12-06 Inventec Corporation Storage service device with dual controller and backup method thereof
JP5663843B2 (ja) * 2009-04-01 2015-02-04 セイコーエプソン株式会社 記憶装置、基板、液体容器、不揮発性のデータ記憶部の制御方法、ホスト回路と着脱可能な記憶装置を含むシステム
US8782326B2 (en) * 2009-04-01 2014-07-15 Seiko Epson Corporation Memory device and system including a memory device electronically connectable to a host circuit
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8639871B2 (en) * 2009-04-08 2014-01-28 Google Inc. Partitioning a flash memory data storage device
US8433845B2 (en) 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8195874B2 (en) 2009-04-10 2012-06-05 Hitachi, Ltd. Storage apparatus and method for shredding storage medium
US8806165B2 (en) 2009-04-10 2014-08-12 Kaminario Technologies Ltd. Mass-storage system utilizing auxiliary solid-state storage subsystem
US20100262755A1 (en) * 2009-04-10 2010-10-14 Honeywell International Inc. Memory systems for computing devices and systems
US8799572B2 (en) 2009-04-20 2014-08-05 Microsoft Corporation Sliding-window multi-class striping
US8560879B1 (en) * 2009-04-22 2013-10-15 Netapp Inc. Data recovery for failed memory device of memory device array
US8037217B2 (en) * 2009-04-23 2011-10-11 International Business Machines Corporation Direct memory access in a hybrid computing environment
US8214621B2 (en) 2009-04-29 2012-07-03 Microsoft Corporation Storage optimization across media with differing capabilities
US8165030B2 (en) * 2009-04-30 2012-04-24 Avaya Inc. System and method for monitoring a network communication at multiple network layers
US8072890B2 (en) * 2009-05-01 2011-12-06 Avaya Inc. System and method for testing a dynamic communication across a network
CN101882119B (zh) * 2009-05-08 2014-05-14 上海炬力集成电路设计有限公司 与非型闪存控制器及其数据传输方法
US8238254B2 (en) * 2009-05-14 2012-08-07 Avaya Inc. Detection and display of packet changes in a network
US8250282B2 (en) * 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
KR20100124087A (ko) * 2009-05-18 2010-11-26 삼성전자주식회사 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8161251B2 (en) 2009-05-27 2012-04-17 Microsoft Corporation Heterogeneous storage array optimization through eviction
US9377967B2 (en) 2009-05-27 2016-06-28 Dell Products L.P. Systems and methods for scalable storage management
US8732396B2 (en) 2009-06-08 2014-05-20 Lsi Corporation Method and apparatus for protecting the integrity of cached data in a direct-attached storage (DAS) system
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
KR101324688B1 (ko) 2009-06-12 2013-11-04 바이올린 메모리 인코포레이티드 영구 가비지 컬렉션을 갖는 메모리 시스템
US8321630B1 (en) 2010-01-28 2012-11-27 Microsoft Corporation Application-transparent hybridized caching for high-performance storage
US20100318720A1 (en) * 2009-06-16 2010-12-16 Saranyan Rajagopalan Multi-Bank Non-Volatile Memory System with Satellite File System
US20110004742A1 (en) * 2009-07-06 2011-01-06 Eonsil, Inc. Variable-Cycle, Event-Driven Multi-Execution Flash Processor
US8291131B2 (en) 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
KR20140040870A (ko) * 2009-07-07 2014-04-04 엘에스아이 코포레이션 계층화된 비휘발성 스토리지를 위한 시스템 및 방법
KR101662824B1 (ko) * 2009-07-08 2016-10-06 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
EP2460104A4 (en) 2009-07-27 2016-10-05 Ibm METHOD AND SYSTEM FOR TRANSFORMING LOGICAL DATA OBJECTS FOR STORAGE USE
US8527838B2 (en) * 2009-07-31 2013-09-03 Cleversafe, Inc. Memory controller utilizing an error coding dispersal function
KR20110015217A (ko) * 2009-08-07 2011-02-15 삼성전자주식회사 향상된 신호 무결성을 가지는 메모리 시스템
US8180972B2 (en) 2009-08-07 2012-05-15 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment by maintaining remote memory values locally
CN101996685B (zh) * 2009-08-11 2013-12-04 中颖电子股份有限公司 存储器管理数据的差错控制方法及差错控制器
US8359431B2 (en) * 2009-08-20 2013-01-22 Hitachi, Ltd. Storage subsystem and its data processing method for reducing the amount of data to be stored in a semiconductor nonvolatile memory
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
WO2011024239A1 (en) * 2009-08-31 2011-03-03 Hitachi, Ltd. Storage system having plurality of flash packages
US8407562B2 (en) * 2009-09-01 2013-03-26 Marvell World Trade Ltd. Systems and methods for compressing data in non-volatile semiconductor memory drives
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
WO2011031796A2 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
EP2476079A4 (en) * 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
WO2011031900A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
FI126228B (fi) * 2009-09-16 2016-08-31 Varaani Works Oy Menetelmä ja tallennuspalvelin tiedon varmentamiseen
US9465771B2 (en) 2009-09-24 2016-10-11 Iii Holdings 2, Llc Server on a chip and node cards comprising one or more of same
US8599863B2 (en) 2009-10-30 2013-12-03 Calxeda, Inc. System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US9077654B2 (en) 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
US9876735B2 (en) 2009-10-30 2018-01-23 Iii Holdings 2, Llc Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect
US20130107444A1 (en) 2011-10-28 2013-05-02 Calxeda, Inc. System and method for flexible storage and networking provisioning in large scalable processor installations
US9054990B2 (en) 2009-10-30 2015-06-09 Iii Holdings 2, Llc System and method for data center security enhancements leveraging server SOCs or server fabrics
US20110103391A1 (en) 2009-10-30 2011-05-05 Smooth-Stone, Inc. C/O Barry Evans System and method for high-performance, low-power data center interconnect fabric
US8526605B2 (en) * 2009-10-09 2013-09-03 Seagate Technology Llc Data encryption to provide data security and memory cell bit wear leveling
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
JP5391993B2 (ja) * 2009-10-19 2014-01-15 富士通株式会社 ディスクアレイ装置
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9648102B1 (en) 2012-12-27 2017-05-09 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9680770B2 (en) * 2009-10-30 2017-06-13 Iii Holdings 2, Llc System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US9311269B2 (en) 2009-10-30 2016-04-12 Iii Holdings 2, Llc Network proxy for high-performance, low-power data center interconnect fabric
US9098376B2 (en) * 2009-10-30 2015-08-04 Cleversafe, Inc. Distributed storage network for modification of a data object
US8352834B2 (en) * 2009-11-12 2013-01-08 Broadlogic Network Technologies Inc. High throughput interleaver / deinterleaver
EP2323135A1 (en) * 2009-11-12 2011-05-18 SiTel Semiconductor B.V. Method and apparatus for emulating byte wise programmable functionality into sector wise erasable memory
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US8495471B2 (en) * 2009-11-30 2013-07-23 International Business Machines Corporation Solid-state storage system with parallel access of multiple flash/PCM devices
WO2011070611A1 (en) * 2009-12-08 2011-06-16 Hitachi, Ltd. Storage system and storage control apparatus provided with cache memory group including volatile memory and nonvolatile memory
US20110137861A1 (en) * 2009-12-09 2011-06-09 International Business Machines Corporation Methods for Achieving Efficient Coherent Access to Data in a Cluster of Data Processing Computing Nodes
CN102652313B (zh) * 2009-12-11 2015-04-15 国际商业机器公司 闪速存储器控制器及其操作方法
US8433865B2 (en) * 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US8375225B1 (en) * 2009-12-11 2013-02-12 Western Digital Technologies, Inc. Memory protection
KR101670746B1 (ko) * 2009-12-15 2016-11-09 엘지전자 주식회사 무선 통신 시스템에서의 멀티캐스트 및 브로드캐스트 서비스 데이터를 위한 자원 할당 방법 및 이를 위한 장치
US8683293B2 (en) * 2009-12-16 2014-03-25 Nvidia Corporation Method and system for fast two bit error correction
US8250380B2 (en) * 2009-12-17 2012-08-21 Hitachi Global Storage Technologies Netherlands B.V. Implementing secure erase for solid state drives
CN102656566B (zh) * 2009-12-17 2015-12-16 国际商业机器公司 固态存储系统中的数据管理
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8321501B2 (en) * 2009-12-23 2012-11-27 Intel Corporation Secure out-of-band storage control
KR20110073932A (ko) * 2009-12-24 2011-06-30 주식회사 하이닉스반도체 Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법
US9369526B2 (en) * 2009-12-29 2016-06-14 International Business Machines Corporation Distributed storage time synchronization based on retrieval delay
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US9594675B2 (en) * 2009-12-31 2017-03-14 Nvidia Corporation Virtualization of chip enables
US8327225B2 (en) 2010-01-04 2012-12-04 Micron Technology, Inc. Error correction in a stacked memory
US8868575B2 (en) * 2010-01-13 2014-10-21 International Business Machines Corporation Method and system for transformation of logical data objects for storage
TWI587139B (zh) * 2010-01-20 2017-06-11 旺玖科技股份有限公司 驅動裝置及其取得資料之方法
US11301592B2 (en) * 2010-01-28 2022-04-12 Pure Storage, Inc. Distributed storage with data obfuscation and method for use therewith
US9417905B2 (en) * 2010-02-03 2016-08-16 International Business Machines Corporation Terminating an accelerator application program in a hybrid computing environment
US8447916B2 (en) * 2010-02-17 2013-05-21 Microsoft Corporation Interfaces that facilitate solid state storage configuration
US8843459B1 (en) 2010-03-09 2014-09-23 Hitachi Data Systems Engineering UK Limited Multi-tiered filesystem
US8281182B2 (en) * 2010-03-12 2012-10-02 Cleversafe, Inc. Dispersed storage unit selection
US20110230711A1 (en) * 2010-03-16 2011-09-22 Kano Akihito Endoscopic Surgical Instrument
CN102207910A (zh) * 2010-03-29 2011-10-05 联想(北京)有限公司 一种只读存储器、数据安全保护系统、方法及计算机
US8578132B2 (en) 2010-03-29 2013-11-05 International Business Machines Corporation Direct injection of data to be transferred in a hybrid computing environment
CN102208987A (zh) * 2010-03-29 2011-10-05 鸿富锦精密工业(深圳)有限公司 主板管理控制器网络配置系统及方法
JP5447092B2 (ja) * 2010-03-30 2014-03-19 富士通株式会社 処理装置,データ移行方法及びデータ移行プログラム
US9015268B2 (en) * 2010-04-02 2015-04-21 Intel Corporation Remote direct storage access
US8577986B2 (en) 2010-04-02 2013-11-05 Microsoft Corporation Mapping RDMA semantics to high speed storage
JP5521716B2 (ja) * 2010-04-06 2014-06-18 富士通株式会社 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8407517B2 (en) 2010-04-08 2013-03-26 Hitachi, Ltd. Methods and apparatus for managing error codes for storage systems coupled with external storage systems
US8296508B1 (en) * 2010-04-27 2012-10-23 Micron Technology, Inc. Secure memory device erase
US9015443B2 (en) 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
US20110270945A1 (en) * 2010-04-30 2011-11-03 Hitachi, Ltd. Computer system and control method for the same
US9811662B2 (en) * 2010-05-03 2017-11-07 Panzura, Inc. Performing anti-virus checks for a distributed filesystem
JP2013530448A (ja) * 2010-05-05 2013-07-25 マーベル ワールド トレード リミテッド キャッシュストレージアダプタアーキテクチャ
US8634186B2 (en) * 2010-05-07 2014-01-21 Advanced Micro Devices, Inc. Non-volatile memory controller cable arrangement
CN102244591B (zh) * 2010-05-10 2015-04-15 淮南东正电子科技有限公司 客户端服务器及对其功能测试全程监测的方法
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8495296B2 (en) 2010-05-18 2013-07-23 International Business Machines Corporation System and method for optimizing data remanence over hubrid disk clusters using various storage technologies
TWI469576B (zh) * 2010-05-20 2015-01-11 Hon Hai Prec Ind Co Ltd 用戶端伺服器及對其功能測試全程監測的方法
JP5598089B2 (ja) * 2010-05-28 2014-10-01 富士通株式会社 プログラム、情報処理装置及び情報処理方法
JP4829365B1 (ja) * 2010-05-31 2011-12-07 株式会社東芝 データ記憶装置及びデータ書き込み方法
US20110296131A1 (en) * 2010-05-31 2011-12-01 Samsung Electronics Co., Ltd Nonvolatile memory system and the operation method thereof
US8904104B2 (en) * 2010-06-09 2014-12-02 Taejin Info Tech Co., Ltd. Hybrid storage system with mid-plane
US8892980B2 (en) 2010-06-15 2014-11-18 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US8719675B1 (en) * 2010-06-16 2014-05-06 Google Inc. Orthogonal coding for data storage, access, and maintenance
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
CN101883181A (zh) * 2010-06-18 2010-11-10 中兴通讯股份有限公司 处理短消息的方法及终端
US8522076B2 (en) * 2010-06-23 2013-08-27 International Business Machines Corporation Error detection and recovery in a shared pipeline
KR20120002760A (ko) * 2010-07-01 2012-01-09 삼성전자주식회사 낸드 플래쉬 메모리의 동작 신뢰성을 향상시키는 데이터 기록 방법 및 데이터 기록 장치
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
JP2012022422A (ja) * 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
US8281043B2 (en) * 2010-07-14 2012-10-02 Intel Corporation Out-of-band access to storage devices through port-sharing hardware
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8484415B2 (en) * 2010-07-19 2013-07-09 Taejin Info Tech Co., Ltd. Hybrid storage system for a multi-level raid architecture
TWI455144B (zh) 2010-07-22 2014-10-01 Silicon Motion Inc 使用於快閃記憶體的控制方法與控制器
EP2598996B1 (en) * 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8510519B2 (en) * 2010-08-02 2013-08-13 Taejin Info Tech Co., Ltd. Hybrid raid controller
US8713268B2 (en) 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US9530436B1 (en) * 2010-08-12 2016-12-27 Western Digital Technologies, Inc. Methods and systems for providing data security in data storage devices
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8904226B2 (en) * 2010-08-26 2014-12-02 Cleversafe, Inc. Migrating stored copies of a file to stored encoded data slices
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8583867B1 (en) * 2010-09-08 2013-11-12 Netapp, Inc. Non-disruptive data migration between processing systems that do not share storage
US8412672B1 (en) 2010-09-08 2013-04-02 Netapp, Inc. High availability network storage system incorporating non-shared storage suitable for use with virtual storage servers
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US8589625B2 (en) * 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
CN101957767A (zh) * 2010-09-21 2011-01-26 深圳创维数字技术股份有限公司 基于与非型闪存存储设备的系统软件升级方法
US20120079583A1 (en) * 2010-09-23 2012-03-29 Microsoft Corporation Offload reads and writes
JP2012068936A (ja) * 2010-09-24 2012-04-05 Toshiba Corp メモリシステム
WO2012050934A2 (en) 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
US8463991B2 (en) 2010-09-28 2013-06-11 Pure Storage Inc. Intra-device data protection in a raid array
US9244769B2 (en) 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US9251058B2 (en) * 2010-09-28 2016-02-02 SanDisk Technologies, Inc. Servicing non-block storage requests
WO2012050935A2 (en) * 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for data transformations within a data storage device
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9229808B2 (en) 2010-10-01 2016-01-05 Pure Storage, Inc. Reconstruct reads in a raid array with dynamic geometries
US9348696B2 (en) 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
US8755221B2 (en) * 2010-10-18 2014-06-17 Avalanche Technology, Inc. Emulation of static random access memory (SRAM) by magnetic random access memory (MRAM)
US8892809B2 (en) * 2010-10-25 2014-11-18 Marvell World Trade Ltd. Data compression and encoding in a memory system
US8938574B2 (en) * 2010-10-26 2015-01-20 Lsi Corporation Methods and systems using solid-state drives as storage controller cache memory
US8447925B2 (en) 2010-11-01 2013-05-21 Taejin Info Tech Co., Ltd. Home storage device and software including management and monitoring modules
US8990494B2 (en) 2010-11-01 2015-03-24 Taejin Info Tech Co., Ltd. Home storage system and method with various controllers
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US9465728B2 (en) 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
CN102467440A (zh) * 2010-11-09 2012-05-23 鸿富锦精密工业(深圳)有限公司 内存错误检测系统及方法
TWI474329B (zh) * 2010-11-15 2015-02-21 Silicon Motion Inc 提昇錯誤更正能力之方法以及記憶裝置及控制器
US8601197B2 (en) * 2010-11-15 2013-12-03 Atmel Rousset S.A.S. Microcontroller including flexible connections between modules
TW201222273A (en) * 2010-11-29 2012-06-01 Inventec Corp Computer system and method for managing computer device
WO2012099937A2 (en) 2011-01-18 2012-07-26 Lsi Corporation Higher-level redundancy information computation
EP2646922A4 (en) * 2010-12-01 2015-11-25 Lsi Corp DYNAMIC MANAGEMENT OF HIGHER LEVEL REDUNDANCY MODE WITH INDEPENDENT SILICON ELEMENTS
TW201224288A (en) * 2010-12-01 2012-06-16 Hon Hai Prec Ind Co Ltd System and method for controlling a fan
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
JP2012123499A (ja) * 2010-12-07 2012-06-28 Toshiba Corp メモリシステム
US9021472B2 (en) * 2010-12-10 2015-04-28 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Virtualizing baseboard management controller operation
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9280477B2 (en) * 2010-12-13 2016-03-08 Seagate Technology Llc Data storage management in a memory device
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US8527693B2 (en) 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
JP5296041B2 (ja) * 2010-12-15 2013-09-25 株式会社東芝 メモリシステムおよびメモリシステムの制御方法
US8560792B2 (en) 2010-12-16 2013-10-15 International Business Machines Corporation Synchronous extent migration protocol for paired storage
CN103354939B (zh) 2010-12-17 2016-03-16 艾沃思宾技术公司 用于使dram和mram访问交错的存储器控制器和方法
US8412816B2 (en) 2010-12-17 2013-04-02 Dell Products L.P. Native bi-directional communication for hardware management
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8438247B1 (en) 2010-12-21 2013-05-07 Amazon Technologies, Inc. Techniques for capturing data sets
AU2015202148B2 (en) * 2010-12-21 2016-05-05 Amazon Technologies, Inc. Techniques for capturing data sets
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US20120198126A1 (en) * 2011-01-28 2012-08-02 Apple Inc. Methods and systems for performing selective block switching to perform read operations in a non-volatile memory
US8972650B2 (en) * 2011-01-28 2015-03-03 Apple Inc. Methods and systems for performing efficient page reads in a non-volatile memory
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US8595415B2 (en) * 2011-02-02 2013-11-26 Micron Technology, Inc. At least semi-autonomous modules in a memory system and methods
US8639971B1 (en) * 2011-02-17 2014-01-28 Scale Computing Condition detection and reporting in complex systems
CN102110154B (zh) * 2011-02-21 2012-12-26 中国科学院计算技术研究所 一种集群文件系统中文件冗余存储方法
KR20120096212A (ko) * 2011-02-22 2012-08-30 삼성전자주식회사 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이들의 동작 방법
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8705544B2 (en) * 2011-03-07 2014-04-22 Broadcom Corporation Method and apparatus for routing in a single tier switched network
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US8601085B1 (en) * 2011-03-28 2013-12-03 Emc Corporation Techniques for preferred path determination
JP5581256B2 (ja) * 2011-03-28 2014-08-27 株式会社東芝 メモリシステム、コントローラ、およびメモリシステムの制御方法
US8924500B2 (en) * 2011-03-29 2014-12-30 Amazon Technologies, Inc. Local storage linked to networked storage system
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
US8677031B2 (en) 2011-03-31 2014-03-18 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
US9252985B2 (en) * 2011-04-04 2016-02-02 Taejin Info Tech Co., Ltd Impedance matching between FPGA and memory modules
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US10838886B2 (en) 2011-04-19 2020-11-17 Micron Technology, Inc. Channel depth adjustment in memory systems
TWI467365B (zh) * 2011-04-20 2015-01-01 Taejin Infotech Co Ltd 受RAID控制的半導體儲存裝置及其形成方法以及PCI-Express類型的受RAID控制的半導體儲存裝置
US8527699B2 (en) 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation
US20120278550A1 (en) * 2011-04-26 2012-11-01 Byungcheol Cho System architecture based on raid controller collaboration
US9176670B2 (en) * 2011-04-26 2015-11-03 Taejin Info Tech Co., Ltd. System architecture based on asymmetric raid storage
US20120278527A1 (en) * 2011-04-26 2012-11-01 Byungcheol Cho System architecture based on hybrid raid storage
US8832402B2 (en) * 2011-04-29 2014-09-09 Seagate Technology Llc Self-initiated secure erasure responsive to an unauthorized power down event
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
US8909888B2 (en) * 2011-04-29 2014-12-09 Seagate Technology Llc Secure erasure of data from a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US8996790B1 (en) * 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US8543758B2 (en) * 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
CN102223510B (zh) * 2011-06-03 2012-11-14 浙江宇视科技有限公司 缓存调度方法和装置
KR101835604B1 (ko) 2011-06-03 2018-03-07 삼성전자 주식회사 메모리를 위한 스케줄러
US20120311271A1 (en) * 2011-06-06 2012-12-06 Sanrad, Ltd. Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network
WO2012168960A1 (en) * 2011-06-07 2012-12-13 Hitachi, Ltd. Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
US9329939B2 (en) * 2011-06-08 2016-05-03 Taejin Info Tech Co., Ltd Two-way raid controller for a semiconductor storage device
US9183165B2 (en) * 2011-06-10 2015-11-10 International Business Machines Corporation Firmware management of storage class memory for connected or disconnected I/O adapters
US8819302B2 (en) 2011-06-13 2014-08-26 Lsi Corporation System to manage input/output performance and/or deadlock in network attached storage gateway connected to a storage area network environment
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US8924630B2 (en) * 2011-06-21 2014-12-30 Taejin Info Tech Co., Ltd. Semiconductor storage device-based high-speed cache storage system
US8819316B2 (en) * 2011-06-21 2014-08-26 Taejin Info Tech Co., Ltd. Two-way raid controller with programmable host interface for a semiconductor storage device
US8904106B2 (en) 2011-06-22 2014-12-02 International Business Machines Corporation Parallel block allocation for declustered logical disks
US10966339B1 (en) * 2011-06-28 2021-03-30 Amazon Technologies, Inc. Storage system with removable solid state storage devices mounted on carrier circuit boards
CN102855146B (zh) * 2011-06-30 2016-05-11 鸿富锦精密工业(深圳)有限公司 固件更新系统及方法
US9207879B2 (en) * 2011-07-06 2015-12-08 Taejin Info Tech Co., Ltd. Redundant array of independent disk (RAID) controlled semiconductor storage device (SSD)-based system having a high-speed non-volatile host interface
US9335939B2 (en) * 2011-07-12 2016-05-10 Violin Memory Inc. RAIDed memory system
US9417823B2 (en) 2011-07-12 2016-08-16 Violin Memory Inc. Memory system management
US9104651B1 (en) 2011-07-15 2015-08-11 Scale Computing, Inc. Techniques for distributing tests and test suites across a network
US8949305B1 (en) * 2011-07-15 2015-02-03 Scale Computing, Inc. Distributed dynamic system configuration
US8671249B2 (en) 2011-07-22 2014-03-11 Fusion-Io, Inc. Apparatus, system, and method for managing storage capacity recovery
US8874994B2 (en) 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US12099752B2 (en) 2011-07-27 2024-09-24 Pure Storage, Inc. Error prediction based on correlation using event records
EP2737431A4 (en) * 2011-07-27 2015-03-25 Cleversafe Inc GENERATION OF DISTRIBUTED STORAGE NETWORK EVENT RECORDS
US10678619B2 (en) 2011-07-27 2020-06-09 Pure Storage, Inc. Unified logs and device statistics
US11016702B2 (en) 2011-07-27 2021-05-25 Pure Storage, Inc. Hierarchical event tree
US9063841B1 (en) * 2011-08-01 2015-06-23 Marvell Israel (M.L.S.L.) Ltd. External memory management in a network device
US20130036263A1 (en) * 2011-08-01 2013-02-07 Shu-Min Liu Solid state storage device using volatile memory
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US9344287B2 (en) 2013-01-23 2016-05-17 Nexenta Systems, Inc. Scalable transport system for multicast replication
KR20130021633A (ko) * 2011-08-23 2013-03-06 삼성전자주식회사 오류정정부호를 이용한 데이터의 은닉과 검출 방법 및 장치
US8931107B1 (en) 2011-08-30 2015-01-06 Amazon Technologies, Inc. Techniques for generating block level data captures
US8656251B2 (en) * 2011-09-02 2014-02-18 Apple Inc. Simultaneous data transfer and error control to reduce latency and improve throughput to a host
US9195530B1 (en) * 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US20130067289A1 (en) * 2011-09-14 2013-03-14 Ariel Maislos Efficient non-volatile read cache for storage system
US9269063B2 (en) 2011-09-23 2016-02-23 Elwha Llc Acquiring and transmitting event related tasks and subtasks to interface devices
US20130081022A1 (en) * 2011-09-23 2013-03-28 Elwha LLC, a limited liability company of the State of Delaware Configuring interface devices with respect to tasks and subtasks
US9619357B2 (en) * 2011-09-28 2017-04-11 International Business Machines Corporation Hybrid storage devices
WO2013048493A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
EP2761469B1 (en) 2011-09-30 2019-11-13 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
WO2013048477A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Direct i/o access for system co-processors
CN107608910B (zh) 2011-09-30 2021-07-02 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
EP2761465B1 (en) * 2011-09-30 2022-02-09 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
WO2013048491A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
US9274864B2 (en) * 2011-10-04 2016-03-01 International Business Machines Corporation Accessing large amounts of data in a dispersed storage network
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
CN102447732A (zh) * 2011-10-11 2012-05-09 浪潮电子信息产业股份有限公司 一种在bmc开发中智能配置宿主机嵌入式环境的方法
US9813491B2 (en) 2011-10-20 2017-11-07 Oracle International Corporation Highly available network filer with automatic load balancing and performance adjustment
US9263106B2 (en) * 2011-10-21 2016-02-16 Nvidia Corporation Efficient command mapping scheme for short data burst length memory devices
US9092594B2 (en) 2011-10-31 2015-07-28 Iii Holdings 2, Llc Node card management in a modular and large scalable server system
US9047068B2 (en) * 2011-10-31 2015-06-02 Dell Products L.P. Information handling system storage device management information access
US8694855B1 (en) 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US8938658B2 (en) 2011-11-07 2015-01-20 Sandisk Enterprise Ip Llc Statistical read comparison signal generation for memory systems
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
TW201321943A (zh) * 2011-11-17 2013-06-01 Hon Hai Prec Ind Co Ltd 風扇控制系統及方法
US9015411B2 (en) 2011-12-02 2015-04-21 Compellent Technologies System and method for unbalanced raid management
US9298548B2 (en) * 2011-12-12 2016-03-29 Cleversafe, Inc. Distributed computing in a distributed storage and task network
US10671585B2 (en) * 2012-01-31 2020-06-02 Pure Storage, Inc. Storing indexed data to a dispersed storage network
US9430286B2 (en) 2011-12-12 2016-08-30 International Business Machines Corporation Authorizing distributed task processing in a distributed storage network
US20130238900A1 (en) 2011-12-12 2013-09-12 Cleversafe, Inc. Dispersed storage network secure hierarchical file directory
US10176045B2 (en) 2011-12-12 2019-01-08 International Business Machines Corporation Internet based shared memory in a distributed computing system
US8959416B1 (en) * 2011-12-16 2015-02-17 Western Digital Technologies, Inc. Memory defect management using signature identification
US8694849B1 (en) * 2011-12-19 2014-04-08 Pmc-Sierra Us, Inc. Shuffler error correction code system and method
CN103176759A (zh) * 2011-12-20 2013-06-26 鸿富锦精密工业(深圳)有限公司 Bios post代码显示系统及方法
US8806111B2 (en) 2011-12-20 2014-08-12 Fusion-Io, Inc. Apparatus, system, and method for backing data of a non-volatile storage device using a backing store
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US10133662B2 (en) 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations
JP2015507798A (ja) * 2011-12-29 2015-03-12 メモリー テクノロジーズ リミティド ライアビリティ カンパニー メモリ・モジュールにおいてデータ・エンティティを消去するための方法
US10613982B1 (en) * 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
KR101888074B1 (ko) * 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
EP2802991B1 (en) * 2012-01-12 2020-05-06 SanDisk Technologies LLC Systems and methods for managing cache admission
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US8782344B2 (en) 2012-01-12 2014-07-15 Fusion-Io, Inc. Systems and methods for managing cache admission
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
US20150019792A1 (en) * 2012-01-23 2015-01-15 The Regents Of The University Of California System and method for implementing transactions using storage device support for atomic updates and flexible interface for managing data logging
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US8775714B2 (en) * 2012-01-30 2014-07-08 Infineon Technologies Ag System and method for a bus interface
US9652182B2 (en) 2012-01-31 2017-05-16 Pavilion Data Systems, Inc. Shareable virtual non-volatile storage device for a server
US20130205065A1 (en) * 2012-02-02 2013-08-08 Lsi Corporation Methods and structure for an improved solid-state drive for use in caching applications
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
WO2013119074A1 (ko) * 2012-02-09 2013-08-15 Noh Sam Hyuk 신뢰성 있는 ssd를 위한 효율적인 raid 기법
KR101445025B1 (ko) 2012-02-09 2014-09-26 서울시립대학교 산학협력단 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US8949512B2 (en) * 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US9195586B2 (en) 2012-02-23 2015-11-24 Hgst Technologies Santa Ana, Inc. Determining bias information for offsetting operating variations in memory cells based on wordline address
US8935256B2 (en) * 2012-03-02 2015-01-13 Cleversafe, Inc. Expanding a hierarchical dispersed storage index
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
US20130238851A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Hybrid storage aggregate block tracking
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
JP5659178B2 (ja) * 2012-03-16 2015-01-28 株式会社東芝 不揮発性記憶装置及び不揮発性メモリの制御方法
US20130242425A1 (en) * 2012-03-16 2013-09-19 Toshiba America Electronics Components, Inc. Write reordering in a hybrid disk drive
US8301832B1 (en) * 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
CN103365667B (zh) * 2012-03-26 2018-01-26 联想企业方案(新加坡)有限公司 一种在主机系统中安装操作系统的方法和装置
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9268692B1 (en) * 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) * 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
EP2834962A1 (en) * 2012-04-06 2015-02-11 Interdigital Patent Holdings, Inc. Optimization of peer-to-peer content delivery service
KR101969883B1 (ko) * 2012-04-13 2019-04-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN102681794B (zh) * 2012-04-23 2014-12-10 浪潮(北京)电子信息产业有限公司 基于双控制器实现磁盘冗余阵列保护的方法及系统
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
CN103377161A (zh) * 2012-04-24 2013-10-30 鸿富锦精密工业(深圳)有限公司 主板及应用于该主板的数据处理方法
WO2013162547A1 (en) * 2012-04-25 2013-10-31 Hewlett-Packard Development Company, L.P. Network management
US9218462B2 (en) * 2012-04-25 2015-12-22 Hewlett Packard Enterprise Development Lp Authentication using lights-out management credentials
US8839073B2 (en) 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US8751710B2 (en) * 2012-05-08 2014-06-10 Entegra Technologies, Inc. Reconfigurable modular computing device
KR101961324B1 (ko) * 2012-05-09 2019-03-22 삼성전자주식회사 메모리 장치 및 메모리 장치의 파워 관리 방법
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US9077665B1 (en) 2012-05-24 2015-07-07 Scale Computing, Inc. Transferring virtual machines and resource localization in a distributed fault-tolerant system
CN102710763B (zh) * 2012-05-29 2015-11-25 新华网股份有限公司 一种分布式缓存池化、分片及故障转移的方法及系统
WO2013180691A1 (en) 2012-05-29 2013-12-05 Intel Corporation Peer-to-peer interrupt signaling between devices coupled via interconnects
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US8984201B2 (en) 2012-06-01 2015-03-17 International Business Machines Corporation Providing I2C bus over Ethernet
KR102133316B1 (ko) * 2012-06-07 2020-07-21 바이올린 메모리 인코포레이티드 메모리 시스템 관리
US9229901B1 (en) 2012-06-08 2016-01-05 Google Inc. Single-sided distributed storage system
US9172744B2 (en) * 2012-06-14 2015-10-27 Microsoft Technology Licensing, Llc Scalable storage with programmable networks
US20130339583A1 (en) * 2012-06-19 2013-12-19 Marvell World Trade Ltd. Systems and methods for transferring data out of order in next generation solid state drive controllers
US9003162B2 (en) 2012-06-20 2015-04-07 Microsoft Technology Licensing, Llc Structuring storage based on latch-free B-trees
US8924832B1 (en) * 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US20140006537A1 (en) * 2012-06-28 2014-01-02 Wiliam H. TSO High speed record and playback system
US9098302B2 (en) * 2012-06-28 2015-08-04 Intel Corporation System and apparatus to improve boot speed in serial peripheral interface system using a baseboard management controller
WO2014016860A1 (en) * 2012-07-23 2014-01-30 Hitachi, Ltd. Raid storage system and rebuild process
JP2014026388A (ja) * 2012-07-25 2014-02-06 Toshiba Corp 記憶装置、コントローラ、および書き込み制御方法
US9712373B1 (en) * 2012-07-30 2017-07-18 Rambus Inc. System and method for memory access in server communications
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US20140052897A1 (en) * 2012-08-17 2014-02-20 Seagate Technology Llc Dynamic formation of garbage collection units in a memory
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
CN103629132B (zh) * 2012-08-20 2016-09-14 国网浙江桐庐县供电公司 风扇共享控制系统及方法
US10430216B1 (en) 2012-08-23 2019-10-01 Scale Computing Inc Virtual machine automated selection
US10019287B1 (en) 2012-08-23 2018-07-10 Scale Computing Virtual machine resource display
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9094163B2 (en) * 2012-08-28 2015-07-28 Aoptix Technologies, Inc. Assessment and correction of transmitted data
US8676851B1 (en) 2012-08-30 2014-03-18 Google Inc. Executing transactions in distributed storage systems
US9058122B1 (en) 2012-08-30 2015-06-16 Google Inc. Controlling access in a single-sided distributed storage system
US8862561B1 (en) 2012-08-30 2014-10-14 Google Inc. Detecting read/write conflicts
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US9830964B2 (en) * 2012-09-10 2017-11-28 Texas Instruments Incorporated Non-volatile array wakeup and backup sequencing control
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
JP2014063497A (ja) * 2012-09-21 2014-04-10 Plx Technology Inc 論理装置の機能を有するpciエクスプレススイッチ
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US9304828B2 (en) * 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management
TWI502600B (zh) * 2012-09-28 2015-10-01 Leadconn Technology Co Ltd 記憶體識別碼修正裝置
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9652216B2 (en) * 2012-10-04 2017-05-16 Dell Products L.P. System and method for providing out-of-band software or firmware upgrades for a switching device
KR102081980B1 (ko) * 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
DE112013007751B3 (de) * 2012-10-22 2023-01-12 Intel Corporation Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
US20140114928A1 (en) * 2012-10-22 2014-04-24 Robert Beers Coherence protocol tables
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
WO2014066986A1 (en) * 2012-11-02 2014-05-08 Vod2 Inc. Data distribution methods and systems
WO2014081414A1 (en) * 2012-11-20 2014-05-30 Empire Technology Development Llc Multi-element solid-state storage device management
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9098401B2 (en) 2012-11-21 2015-08-04 Apple Inc. Fast secure erasure schemes for non-volatile memory
KR101988287B1 (ko) 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9448883B1 (en) * 2012-12-04 2016-09-20 Cadence Design Systems, Inc. System and method for allocating data in memory array having regions of varying storage reliability
US9071585B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Copy offload for disparate offload providers
WO2014091526A1 (en) 2012-12-13 2014-06-19 Hitachi, Ltd. Computer realizing high-speed access and data protection of storage device, computer system, and i/o request processing method
US9251201B2 (en) 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size
CN104704569B (zh) * 2012-12-19 2017-11-14 慧与发展有限责任合伙企业 Nvram路径选择
US9639457B1 (en) * 2012-12-20 2017-05-02 Datadirect Networks, Inc. Data storage system and method for data migration between high-performance computing architectures and data storage devices using storage controller with distributed XOR capability
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US9049265B1 (en) 2012-12-26 2015-06-02 Google Inc. Serving remote access to storage resources
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9703697B2 (en) 2012-12-27 2017-07-11 Intel Corporation Sharing serial peripheral interface flash memory in a multi-node server system on chip platform environment
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
WO2014102879A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Data storage apparatus and control method thereof
US9848029B2 (en) * 2012-12-28 2017-12-19 Opentv, Inc. Highly-scalable data transmission
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9727268B2 (en) 2013-01-08 2017-08-08 Lyve Minds, Inc. Management of storage in a storage network
JP5985403B2 (ja) * 2013-01-10 2016-09-06 株式会社東芝 ストレージ装置
US8995302B1 (en) 2013-01-16 2015-03-31 Pmc-Sierra Us, Inc. Method and apparatus for translated routing in an interconnect switch
US9224452B2 (en) * 2013-01-17 2015-12-29 Qualcomm Incorporated Heterogeneous memory systems, and related methods and computer-readable media for supporting heterogeneous memory access requests in processor-based systems
JP2014137721A (ja) * 2013-01-17 2014-07-28 Toshiba Corp 記憶制御装置、データ記憶装置及び記憶制御方法
US9143279B2 (en) * 2013-01-18 2015-09-22 Qualcomm Incorporated Methods and devices for facilitating data retransmissions in wireless communication systems
US9542101B2 (en) * 2013-01-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. System and methods for performing embedded full-stripe write operations to a data volume with data elements distributed across multiple modules
US9195585B2 (en) * 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9128858B1 (en) 2013-01-29 2015-09-08 Pmc-Sierra Us, Inc. Apparatus and method for adjusting a correctable raw bit error rate limit in a memory system using strong log-likelihood (LLR) values
US9092353B1 (en) 2013-01-29 2015-07-28 Pmc-Sierra Us, Inc. Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system
US9256384B2 (en) 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US9930066B2 (en) 2013-02-12 2018-03-27 Nicira, Inc. Infrastructure level LAN security
US20140229695A1 (en) * 2013-02-13 2014-08-14 Dell Products L.P. Systems and methods for backup in scale-out storage clusters
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US8990661B1 (en) 2013-03-05 2015-03-24 Pmc-Sierra Us, Inc. Layer specific attenuation factor LDPC decoder
US11966355B2 (en) * 2013-03-10 2024-04-23 Mellanox Technologies, Ltd. Network adapter with a common queue for both networking and data manipulation work requests
US10275375B2 (en) 2013-03-10 2019-04-30 Mellanox Technologies, Ltd. Network interface controller with compression capabilities
US9397701B1 (en) 2013-03-11 2016-07-19 Microsemi Storage Solutions (Us), Inc. System and method for lifetime specific LDPC decoding
US8935598B1 (en) 2013-03-12 2015-01-13 Pmc-Sierra Us, Inc. System and method for adaptive check node approximation in LDPC decoding
US9727453B2 (en) * 2013-03-14 2017-08-08 Sandisk Technologies Llc Multi-level table deltas
US10817312B2 (en) * 2013-03-14 2020-10-27 Microsoft Technology Licensing, Llc Programming model for performant computing in document-oriented storage services
US8984365B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for reduced memory storage in LDPC decoding
US8984376B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for avoiding error mechanisms in layered iterative decoding
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US9235467B2 (en) 2013-03-15 2016-01-12 Pmc-Sierra Us, Inc. System and method with reference voltage partitioning for low density parity check decoding
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9612900B2 (en) * 2013-03-15 2017-04-04 SEAKR Engineering, Inc. Centralized configuration control of reconfigurable computing devices
US9335950B2 (en) * 2013-03-15 2016-05-10 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9842053B2 (en) * 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US8983967B2 (en) * 2013-03-15 2015-03-17 Datadirect Networks, Inc. Data storage system having mutable objects incorporating time
US9450610B1 (en) 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US9590656B2 (en) 2013-03-15 2017-03-07 Microsemi Storage Solutions (Us), Inc. System and method for higher quality log likelihood ratios in LDPC decoding
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US8954657B1 (en) * 2013-09-27 2015-02-10 Avalanche Technology, Inc. Storage processor managing solid state disk array
US9448738B2 (en) * 2013-03-15 2016-09-20 Western Digital Technologies, Inc. Compression and formatting of data for data storage systems
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
US9990382B1 (en) * 2013-04-10 2018-06-05 Amazon Technologies, Inc. Secure erasure and repair of non-mechanical storage media
US9552176B2 (en) * 2013-04-12 2017-01-24 Microsoft Technology Licensing, Llc Block storage using a hybrid memory device
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
TWI489296B (zh) * 2013-05-17 2015-06-21 Wistron Corp 電腦
US10127166B2 (en) * 2013-05-21 2018-11-13 Sandisk Technologies Llc Data storage controller with multiple pipelines
US9336166B1 (en) * 2013-05-30 2016-05-10 Emc Corporation Burst buffer appliance with operating system bypass functionality to facilitate remote direct memory access
JP2014235531A (ja) * 2013-05-31 2014-12-15 株式会社東芝 データ転送装置、データ転送システム、およびプログラム
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9058267B2 (en) 2013-06-11 2015-06-16 Avago Technologies General IP Singapore) Pte Ltd I/O path selection
US9009375B2 (en) 2013-06-11 2015-04-14 Lsi Corporation Sharing of bypassed I/O transaction information
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9697358B2 (en) * 2013-06-13 2017-07-04 Google Inc. Non-volatile memory operations
CN104238638A (zh) * 2013-06-17 2014-12-24 中兴通讯股份有限公司 一种小型化的计算存储融合系统
CN103336671B (zh) * 2013-06-17 2016-07-13 北京奇虎科技有限公司 从网络中获取数据的方法和设备
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9785355B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9430412B2 (en) * 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US10063638B2 (en) 2013-06-26 2018-08-28 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9785356B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9122712B1 (en) * 2013-06-28 2015-09-01 Emc Corporation Compressing container files
US9311110B2 (en) * 2013-07-08 2016-04-12 Intel Corporation Techniques to initialize from a remotely accessible storage device
US9030883B2 (en) * 2013-07-16 2015-05-12 Freescale Semiconductor, Inc. Adaptive erase recovery for non-volatile memory (NVM) systems
US8949486B1 (en) 2013-07-17 2015-02-03 Mellanox Technologies Ltd. Direct memory access to storage devices
US9336135B1 (en) 2013-07-24 2016-05-10 NXGN Data, Inc. Systems and methods for performing search and complex pattern matching in a solid state drive
US9092321B2 (en) 2013-07-24 2015-07-28 NXGN Data, Inc. System and method for performing efficient searches and queries in a storage node
US9336313B1 (en) 2013-07-24 2016-05-10 NXGN Data, Inc. Systems and methods for performing single and multi threaded searches and complex pattern matching in a solid state drive
US9021189B2 (en) * 2013-07-24 2015-04-28 NXGN Data, Inc. System and method for performing efficient processing of data stored in a storage node
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
WO2015016883A1 (en) * 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Off-memory-module ecc-supplemental memory system
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9448896B2 (en) 2013-08-07 2016-09-20 Seagate Technology Llc Torn write mitigation
KR102081588B1 (ko) 2013-08-08 2020-02-26 삼성전자 주식회사 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
GB201315435D0 (en) 2013-08-30 2013-10-16 Ibm Cache management in a computerized system
EP2926214B1 (en) * 2013-09-04 2017-04-12 IDT Europe GmbH Fpga power management system
US9684686B1 (en) * 2013-09-04 2017-06-20 Amazon Technologies, Inc. Database system recovery using non-volatile system memory
US9313274B2 (en) 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
US9298534B2 (en) * 2013-09-05 2016-03-29 Kabushiki Kaisha Toshiba Memory system and constructing method of logical block
US20150082063A1 (en) * 2013-09-18 2015-03-19 Lenovo (Singapore) Pte. Ltd. Baseboard management controller state transitions
CN103488435B (zh) * 2013-09-24 2017-08-04 华为技术有限公司 Raid子系统及其数据读写方法
US20160203017A1 (en) * 2013-09-25 2016-07-14 Hewlett Packard Enterprise Development Lp Baseboard management controller providing peer system identification
US9658799B2 (en) 2013-09-25 2017-05-23 International Business Machines Corporation Data storage device deferred secure delete
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9330143B2 (en) * 2013-10-24 2016-05-03 Western Digital Technologies, Inc. Data storage device supporting accelerated database operations
US10444998B1 (en) 2013-10-24 2019-10-15 Western Digital Technologies, Inc. Data storage device providing data maintenance services
US9690515B2 (en) * 2013-10-25 2017-06-27 Sandisk Technologies Llc Delayed automation to maximize the utilization of read and write cache
CN103530417B (zh) * 2013-10-29 2016-08-17 北京视博数字电视科技有限公司 文件解包方法和装置
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
TWI510910B (zh) * 2013-11-11 2015-12-01 Wistron Corp 電腦系統及其遠端控制方法
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9141291B2 (en) 2013-11-26 2015-09-22 Sandisk Technologies Inc. Adaptive context disbursement for improved performance in non-volatile memory systems
US9218891B2 (en) * 2013-11-27 2015-12-22 Silicon Motion, Inc. Data storage device and flash memory control method
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9998359B2 (en) 2013-12-18 2018-06-12 Mellanox Technologies, Ltd. Simultaneous operation of remote management and link aggregation
AU2013408054B2 (en) * 2013-12-20 2017-09-28 Huawei Technologies Co., Ltd. Method and device for transmitting data
US9678678B2 (en) * 2013-12-20 2017-06-13 Lyve Minds, Inc. Storage network data retrieval
US9684568B2 (en) * 2013-12-26 2017-06-20 Silicon Motion, Inc. Data storage device and flash memory control method
TWI524183B (zh) * 2014-01-09 2016-03-01 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US20150205534A1 (en) * 2014-01-17 2015-07-23 Kabushiki Kaisha Toshiba Controller, solid-state drive and control method
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10148746B2 (en) 2014-01-28 2018-12-04 Mellanox Technologies, Ltd. Multi-host network interface controller with host management
JP6279620B2 (ja) * 2014-01-29 2018-02-14 株式会社日立製作所 ストレージ装置
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9798620B2 (en) 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
US9286208B2 (en) * 2014-02-07 2016-03-15 Kabushiki Kaisha Toshiba Controller controlling an interleave operation, solid-state drive including the controller, and control method controlling an interleave operation
US10521387B2 (en) 2014-02-07 2019-12-31 Toshiba Memory Corporation NAND switch
US9933980B2 (en) 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
KR102188062B1 (ko) * 2014-02-28 2020-12-07 삼성전자 주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9666244B2 (en) * 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
US20150248443A1 (en) 2014-03-02 2015-09-03 Plexistor Ltd. Hierarchical host-based storage
US9958178B2 (en) * 2014-03-06 2018-05-01 Dell Products, Lp System and method for providing a server rack management controller
US20150254082A1 (en) * 2014-03-10 2015-09-10 Plx Technology, Inc. Remote booting over pci express using synthetic remote boot capability
US9639285B2 (en) * 2014-03-13 2017-05-02 Aupera Technologies, Inc. Distributed raid in a flash based memory system
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US9727503B2 (en) 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US10296371B2 (en) 2014-03-17 2019-05-21 International Business Machines Corporation Passive two-phase commit system for high-performance distributed transaction execution
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9781027B1 (en) * 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US9911477B1 (en) * 2014-04-18 2018-03-06 Altera Corporation Memory controller architecture with improved memory scheduling efficiency
KR102318478B1 (ko) 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US9354872B2 (en) * 2014-04-24 2016-05-31 Xitore, Inc. Apparatus, system, and method for non-volatile data storage and retrieval
US10048962B2 (en) 2014-04-24 2018-08-14 Xitore, Inc. Apparatus, system, and method for non-volatile data storage and retrieval
JP6213366B2 (ja) * 2014-04-25 2017-10-18 富士通株式会社 演算処理装置とその制御方法
JP5936152B2 (ja) 2014-05-17 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリアクセストレース方法
US9891993B2 (en) 2014-05-23 2018-02-13 International Business Machines Corporation Managing raid parity stripe contention
US9280293B2 (en) * 2014-05-23 2016-03-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. RAID 1 mirror meshed into a co-existing RAID 5 parity stream
CN104020962B (zh) * 2014-05-27 2018-03-13 华为技术有限公司 一种raid 1数据写入的方法、cpu系统及存储设备
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
GB2526873A (en) * 2014-06-06 2015-12-09 Roke Manor Research System and method for mitigating remanence in volatile memory
US9594571B2 (en) * 2014-06-10 2017-03-14 Cisco Technology, Inc. Mechanism for obviating the need for host-side basic input/output system (BIOS) or boot serial peripheral interface (SPI) device(s)
US20170052723A1 (en) * 2014-06-10 2017-02-23 Hewlett Packard Enterprise Development Lp Replicating data using remote direct memory access (rdma)
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9613218B2 (en) * 2014-06-30 2017-04-04 Nicira, Inc. Encryption system in a virtualized environment
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9417804B2 (en) 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9588843B2 (en) 2014-07-14 2017-03-07 International Business Machines Corporation System and method for transferring traditional RAID to distributed array
US9514211B2 (en) 2014-07-20 2016-12-06 Microsoft Technology Licensing, Llc High throughput data modifications using blind update operations
TWI505078B (zh) 2014-07-28 2015-10-21 Ibm 系統管理控制器、電腦系統、以及系統管理方法
US9442798B2 (en) * 2014-07-31 2016-09-13 Winbond Electronics Corporation NAND flash memory having an enhanced buffer read capability and method of operation thereof
WO2016018383A1 (en) 2014-07-31 2016-02-04 Hewlett-Packard Development Company Live migration of data
US9367392B2 (en) 2014-08-01 2016-06-14 Winbond Electronics Corporation NAND flash memory having internal ECC processing and method of operation thereof
WO2016032548A1 (en) * 2014-08-25 2016-03-03 Hewlett Packard Enterprise Development Lp Providing transactional support to a data storage system
FR3025333B1 (fr) * 2014-08-26 2017-12-08 Bull Sas Serveur comprenant une pluralite de modules
US10540109B2 (en) 2014-09-02 2020-01-21 Hewlett Packard Enterprise Development Lp Serializing access to fault tolerant memory
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
KR102330391B1 (ko) * 2014-09-11 2021-11-24 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법
US20160077959A1 (en) * 2014-09-12 2016-03-17 Qualcomm Incorporated System and Method for Sharing a Solid-State Non-Volatile Memory Resource
US10275171B2 (en) * 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
US10146468B2 (en) * 2014-09-20 2018-12-04 Netronome Systems, Inc. Addressless merge command with data item identifier
US9720789B2 (en) * 2014-10-15 2017-08-01 Netapp, Inc. Multicast transport configuration
US10666682B2 (en) * 2014-10-15 2020-05-26 Marvell Asia Pte, Ltd. Systems and methods for allowing flexible chip configuration by external entity while maintaining secured boot environment
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9984768B2 (en) 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words
US9959059B2 (en) * 2014-10-20 2018-05-01 Sandisk Technologies Llc Storage error management
WO2016064417A1 (en) 2014-10-24 2016-04-28 Hewlett Packard Enterprise Development Lp End-to-end negative acknowledgment
US9519442B2 (en) * 2014-10-27 2016-12-13 Aeroflex Colorado Springs Inc. Method for concurrent system management and error detection and correction requests in integrated circuits through location aware avoidance logic
CN104391805B (zh) * 2014-10-27 2017-12-05 浪潮集团有限公司 一种用于加密固态存储的数据结构
US9712382B2 (en) 2014-10-27 2017-07-18 Quanta Computer Inc. Retrieving console messages after device failure
CN104281499B (zh) * 2014-10-28 2017-10-13 苏州工业职业技术学院 基于奇偶校验的raid条带镜像数据分布方法
WO2016068893A1 (en) * 2014-10-29 2016-05-06 Hewlett-Packard Development Company, L.P. Communicating over portions of a communication medium
WO2016068903A1 (en) 2014-10-29 2016-05-06 Hewlett Packard Enterprise Development Lp Trans-fabric instruction set for a communication fabric
US9565269B2 (en) 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9712619B2 (en) 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US9519429B2 (en) * 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
US20160162186A1 (en) * 2014-12-09 2016-06-09 San Disk Technologies Inc. Re-Ordering NAND Flash Commands for Optimal Throughput and Providing a Specified Quality-of-Service
US9582463B2 (en) 2014-12-09 2017-02-28 Intel Corporation Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
KR102301937B1 (ko) 2014-12-22 2021-09-15 삼성전자주식회사 가상 머신 환경에서의 입출력 방법
US9846576B2 (en) * 2014-12-27 2017-12-19 Intel Corporation Technologies for reprogramming network interface cards over a network
US20160191508A1 (en) * 2014-12-31 2016-06-30 Nexenta Systems, Inc. Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System
US10423670B1 (en) * 2015-01-05 2019-09-24 Amazon Technologies, Inc. Object coding in a host-side processing device
US9853873B2 (en) 2015-01-10 2017-12-26 Cisco Technology, Inc. Diagnosis and throughput measurement of fibre channel ports in a storage area network environment
US9542320B2 (en) * 2015-01-12 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-node cache coherency with input output virtualization
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
WO2016118627A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Managing meta-data in an object memory fabric
CN107533457B (zh) 2015-01-20 2021-07-06 乌尔特拉塔有限责任公司 对象存储器数据流指令执行
US9529580B2 (en) * 2015-01-21 2016-12-27 Ford Global Technologies, Llc Vehicle control update methods and systems
US10229085B2 (en) 2015-01-23 2019-03-12 Hewlett Packard Enterprise Development Lp Fibre channel hardware card port assignment and management method for port names
US10664369B2 (en) 2015-01-30 2020-05-26 Hewlett Packard Enterprise Development Lp Determine failed components in fault-tolerant memory
WO2016122610A1 (en) 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Preventing data corruption and single point of failure in a fault-tolerant memory
WO2016122637A1 (en) 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Non-idempotent primitives in fault-tolerant memory
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US9985820B2 (en) 2015-02-22 2018-05-29 Mellanox Technologies, Ltd. Differentiating among multiple management control instances using addresses
US9729440B2 (en) 2015-02-22 2017-08-08 Mellanox Technologies, Ltd. Differentiating among multiple management control instances using IP addresses
JP6228347B2 (ja) * 2015-02-25 2017-11-08 株式会社日立製作所 ストレージ装置及び記憶デバイス
CN107250986A (zh) * 2015-02-26 2017-10-13 新加坡科技研究局 数据分条、分配和重构
US10440115B2 (en) * 2015-02-27 2019-10-08 Pure Storage, Inc. Write intent messaging in a dispersed storage network
US11188665B2 (en) 2015-02-27 2021-11-30 Pure Storage, Inc. Using internal sensors to detect adverse interference and take defensive actions
US9728245B2 (en) * 2015-02-28 2017-08-08 Intel Corporation Precharging and refreshing banks in memory device with bank group architecture
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US20160266813A1 (en) * 2015-03-09 2016-09-15 Unisys Corporation Storage subsystem technologies
US20160267050A1 (en) * 2015-03-09 2016-09-15 Unisys Corporation Storage subsystem technologies
KR102398213B1 (ko) 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US20160266802A1 (en) * 2015-03-10 2016-09-15 Kabushiki Kaisha Toshiba Storage device, memory system and method of managing data
US9600181B2 (en) * 2015-03-11 2017-03-21 Microsoft Technology Licensing, Llc Live configurable storage
US9900250B2 (en) 2015-03-26 2018-02-20 Cisco Technology, Inc. Scalable handling of BGP route information in VXLAN with EVPN control plane
US9940234B2 (en) * 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US9830093B2 (en) * 2015-03-27 2017-11-28 Intel Corporation Method and apparatus for improving immunity to defects in a non-volatile memory
WO2016159996A1 (en) 2015-03-31 2016-10-06 Hewlett Packard Enterprise Development Lp Preventing data corruption and single point of failure in fault-tolerant memory fabrics
KR102309798B1 (ko) * 2015-04-16 2021-10-06 삼성전자주식회사 Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법
US9800547B2 (en) 2015-04-16 2017-10-24 International Business Machines Corporation Preventing network attacks on baseboard management controllers
US9979799B2 (en) * 2015-04-27 2018-05-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Impersonating a specific physical hardware configuration on a standard server
CN107209738B (zh) 2015-05-02 2020-01-10 慧与发展有限责任合伙企业 储存存储器直接访问
US10121013B2 (en) * 2015-05-07 2018-11-06 Samsung Electronics Co., Ltd. XOR-based scrambler/descrambler for SSD communication protocols
US9519433B2 (en) 2015-05-13 2016-12-13 VSector Security Technologies, LLC Secure virtual sector erasure method and system
US10222986B2 (en) 2015-05-15 2019-03-05 Cisco Technology, Inc. Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US10244250B2 (en) 2015-05-29 2019-03-26 Samsung Electronics Co., Ltd. Variable-rate texture compression using fixed-rate codes
US9760314B2 (en) 2015-05-29 2017-09-12 Netapp, Inc. Methods for sharing NVM SSD across a cluster group and devices thereof
US20160357456A1 (en) * 2015-06-03 2016-12-08 Kabushiki Kaisha Toshiba Memory device that divides write data into a plurality of data portions for data writing
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US11588783B2 (en) 2015-06-10 2023-02-21 Cisco Technology, Inc. Techniques for implementing IPV6-based distributed storage space
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
TWI553477B (zh) * 2015-06-12 2016-10-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US10048898B2 (en) * 2015-06-15 2018-08-14 Sandisk Technologies Llc Data retention in a memory block based on local heating
US10248610B2 (en) * 2015-06-23 2019-04-02 Mellanox Technologies, Ltd. Enforcing transaction order in peer-to-peer interactions
WO2016209268A1 (en) * 2015-06-26 2016-12-29 Hewlett Packard Enterprise Development Lp Self-tune controller
US9857986B2 (en) 2015-06-30 2018-01-02 International Business Machines Corporation Wear leveling of a memory array
US9910791B1 (en) * 2015-06-30 2018-03-06 EMC IP Holding Company LLC Managing system-wide encryption keys for data storage systems
CN105159851A (zh) * 2015-07-02 2015-12-16 浪潮(北京)电子信息产业有限公司 多控存储系统
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
KR102036514B1 (ko) * 2015-07-13 2019-10-28 엘에스산전 주식회사 메모리 소자를 이용한 데이터 엑세스 장치
US10089196B2 (en) * 2015-07-14 2018-10-02 Shannon Systems Ltd. Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same
US10303647B2 (en) 2015-07-15 2019-05-28 Mellanox Technologies, Ltd. Access control in peer-to-peer transactions over a peripheral component bus
US10778765B2 (en) 2015-07-15 2020-09-15 Cisco Technology, Inc. Bid/ask protocol in scale-out NVMe storage
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
WO2017019095A1 (en) * 2015-07-30 2017-02-02 Hewlett Packard Enterprise Development Lp Interleaved access of memory
US10257273B2 (en) 2015-07-31 2019-04-09 Netapp, Inc. Systems, methods and devices for RDMA read/write operations
US9952797B2 (en) 2015-07-31 2018-04-24 Netapp, Inc. Systems, methods and devices for addressing data blocks in mass storage filing systems
US10078614B2 (en) 2015-08-10 2018-09-18 Sandisk Technologies Llc Systems and methods of data transfer
KR102401600B1 (ko) * 2015-08-31 2022-05-25 삼성전자주식회사 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치
US9484954B1 (en) * 2015-09-10 2016-11-01 Intel Corporation Methods and apparatus to parallelize data decompression
US10736239B2 (en) 2015-09-22 2020-08-04 Z-Impact, Inc. High performance computing rack and storage system with forced cooling
US10078494B2 (en) * 2015-09-25 2018-09-18 Arizona Board Of Regents On Behalf Of Arizona State University Secure true random number generation using 1.5-T transistor flash memory
US10013323B1 (en) 2015-09-29 2018-07-03 EMC IP Holding Company LLC Providing resiliency to a raid group of storage devices
US10459891B2 (en) * 2015-09-30 2019-10-29 Western Digital Technologies, Inc. Replicating data across data storage devices of a logical volume
US10853266B2 (en) * 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
EP3262515B1 (en) * 2015-09-30 2019-08-07 Hewlett-Packard Enterprise Development LP Cryptographic-based initialization of memory content
US10320905B2 (en) 2015-10-02 2019-06-11 Oracle International Corporation Highly available network filer super cluster
US10360119B2 (en) * 2015-10-06 2019-07-23 Netapp, Inc. Data recovery in a distributed storage system
US20170102952A1 (en) * 2015-10-07 2017-04-13 Dell Products, L.P. Accessing data stored in a remote target using a baseboard management controler (bmc) independently of the status of the remote target's operating system (os)
US9678682B2 (en) * 2015-10-13 2017-06-13 International Business Machines Corporation Backup storage of vital debug information
JP6567683B2 (ja) * 2015-10-16 2019-08-28 国立大学法人東北大学 情報処理システム、情報処理装置、情報処理方法、及び、プログラム
US10108340B2 (en) 2015-10-21 2018-10-23 Western Digital Technologies, Inc. Method and system for a common processing framework for memory device controllers
US9886196B2 (en) 2015-10-21 2018-02-06 Western Digital Technologies, Inc. Method and system for efficient common processing in memory device controllers
US9934094B2 (en) * 2015-10-30 2018-04-03 Seagate Technology Llc Process for verification of randomly generated I/O requests
US10254998B2 (en) 2015-11-03 2019-04-09 Samsung Electronics Co., Ltd. Coordinated garbage collection of flash devices in a distributed storage system
US20170123700A1 (en) 2015-11-03 2017-05-04 Samsung Electronics Co., Ltd. Io redirection methods with cost estimation
KR102314137B1 (ko) * 2015-11-04 2021-10-18 삼성전자 주식회사 리커버리 동작을 선택적으로 수행하는 불휘발성 메모리 장치 및 그 동작방법
TWI559155B (zh) * 2015-11-26 2016-11-21 英業達股份有限公司 輸入/輸出埠切換方法及其電子裝置及系統
US9811259B2 (en) * 2015-11-27 2017-11-07 Netapp, Inc. Read I/O completions outside file operating system domain
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
EP3387547B1 (en) 2015-12-08 2023-07-05 Ultrata LLC Memory fabric software implementation
EP3387548B1 (en) 2015-12-08 2023-08-02 Ultrata LLC Memory fabric operations and coherency using fault tolerant objects
US9892075B2 (en) 2015-12-10 2018-02-13 Cisco Technology, Inc. Policy driven storage in a microserver computing environment
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US10437483B2 (en) * 2015-12-17 2019-10-08 Samsung Electronics Co., Ltd. Computing system with communication mechanism and method of operation thereof
US10339098B2 (en) * 2015-12-22 2019-07-02 Spectra Logic, Corp. Container-level array storage
US10063422B1 (en) * 2015-12-29 2018-08-28 Amazon Technologies, Inc. Controlled bandwidth expansion in compressed disaggregated storage systems
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US10901937B2 (en) 2016-01-13 2021-01-26 Red Hat, Inc. Exposing pre-registered memory regions for remote direct memory access in a distributed file system
US10713211B2 (en) * 2016-01-13 2020-07-14 Red Hat, Inc. Pre-registering memory regions for remote direct memory access in a distributed file system
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
US10157153B2 (en) * 2016-02-03 2018-12-18 Qualcomm Incorporated Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems
CN113407244A (zh) * 2016-03-01 2021-09-17 华为技术有限公司 一种级联板、ssd远程共享访问的系统和方法
US10776272B2 (en) 2016-03-02 2020-09-15 Mellanox Technologies, Ltd. Control of persistent memory via a computer bus
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US10409719B2 (en) 2016-03-17 2019-09-10 Samsung Electronics Co., Ltd. User configurable passive background operation
US10230810B1 (en) 2016-03-18 2019-03-12 Barefoot Networks, Inc. Storing packet data in mirror buffer
US9583182B1 (en) * 2016-03-22 2017-02-28 Intel Corporation Multi-level memory management
US10303646B2 (en) 2016-03-25 2019-05-28 Microsoft Technology Licensing, Llc Memory sharing for working data using RDMA
US10404676B2 (en) * 2016-03-29 2019-09-03 Intel Corporation Method and apparatus to coordinate and authenticate requests for data
US9852025B2 (en) 2016-03-29 2017-12-26 Alibaba Group Holding Limited Protecting data stored on a solid state drive
US20170300249A1 (en) * 2016-04-15 2017-10-19 Western Digital Technologies, Inc. Validity tracking for garbage collection
US10140172B2 (en) 2016-05-18 2018-11-27 Cisco Technology, Inc. Network-aware storage repairs
CN107436725B (zh) * 2016-05-25 2019-12-20 杭州海康威视数字技术股份有限公司 一种数据写、读方法、装置及分布式对象存储集群
KR102643467B1 (ko) 2016-05-31 2024-03-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20170351639A1 (en) 2016-06-06 2017-12-07 Cisco Technology, Inc. Remote memory access using memory mapped addressing among multiple compute nodes
US10664169B2 (en) 2016-06-24 2020-05-26 Cisco Technology, Inc. Performance of object storage system by reconfiguring storage devices based on latency that includes identifying a number of fragments that has a particular storage device as its primary storage device and another number of fragments that has said particular storage device as its replica storage device
CN106201338B (zh) * 2016-06-28 2019-10-22 华为技术有限公司 数据存储方法及装置
US9690886B1 (en) * 2016-06-30 2017-06-27 Zerto Ltd. System and method for a simulation of a block storage system on an object storage system
KR102635134B1 (ko) * 2016-06-30 2024-02-08 에스케이하이닉스 주식회사 메모리 컨트롤러, 비동기식 메모리 버퍼칩 및 이를 포함하는 메모리 시스템
CN106201352B (zh) * 2016-07-07 2019-11-29 广东高云半导体科技股份有限公司 非易失性fpga片上数据流文件的保密系统及解密方法
US10120702B2 (en) * 2016-07-12 2018-11-06 American Megatrends, Inc. Platform simulation for management controller development projects
TWI620074B (zh) * 2016-07-12 2018-04-01 緯創資通股份有限公司 伺服器系統及儲存單元的控制方法
US10534716B2 (en) * 2016-07-13 2020-01-14 Seagate Technology Llc Limiting access operations in a data storage device
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10157677B2 (en) 2016-07-28 2018-12-18 Ip Gem Group, Llc Background reference positioning and local reference positioning using threshold voltage shift read
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
US20180039427A1 (en) * 2016-08-08 2018-02-08 Nuvoton Technology Corporation Reducing programming time of memory devices using data encoding
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
US10379778B2 (en) * 2016-08-18 2019-08-13 International Business Machines Corporation Using a master encryption key to sanitize a dispersed storage network memory
US10798073B2 (en) 2016-08-26 2020-10-06 Nicira, Inc. Secure key management protocol for distributed network encryption
US10152393B2 (en) 2016-08-28 2018-12-11 Microsoft Technology Licensing, Llc Out-of-band data recovery in computing systems
US11563695B2 (en) 2016-08-29 2023-01-24 Cisco Technology, Inc. Queue protection using a shared global memory reserve
US10838786B2 (en) * 2016-09-05 2020-11-17 Mitsubishi Electric Corporation Embedded system, embedded system control method and data consistency judgment method
US10236917B2 (en) * 2016-09-15 2019-03-19 Qualcomm Incorporated Providing memory bandwidth compression in chipkill-correct memory architectures
US10193634B2 (en) 2016-09-19 2019-01-29 Hewlett Packard Enterprise Development Lp Optical driver circuits
US10162752B2 (en) 2016-09-22 2018-12-25 Qualcomm Incorporated Data storage at contiguous memory addresses
US9824034B1 (en) * 2016-09-27 2017-11-21 International Business Machines Corporation Parallel ordering queue using encoded command types
US10031050B2 (en) 2016-10-13 2018-07-24 International Business Machines Corporation Universal manufacturing test platform
KR20180045220A (ko) * 2016-10-25 2018-05-04 삼성전자주식회사 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템
US10459644B2 (en) 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US10545770B2 (en) 2016-11-14 2020-01-28 Intel Corporation Configurable client hardware
US10685710B2 (en) 2016-11-17 2020-06-16 Toshiba Memory Corporation Memory controller
US10198397B2 (en) 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Flow control in remote direct memory access data communications with mirroring of ring buffers
US10198378B2 (en) * 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Faster data transfer with simultaneous alternative remote direct memory access communications
RU168565U1 (ru) * 2016-11-21 2017-02-08 Федеральное государственное унитарное предприятие "Научно-исследовательский институт "Квант" Реконфигурируемый вычислительный модуль
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US11461273B1 (en) * 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
CN106775874B (zh) * 2016-12-20 2020-08-25 珠海全志科技股份有限公司 终端设备的系统升级方法
US10397144B2 (en) * 2016-12-22 2019-08-27 Intel Corporation Receive buffer architecture method and apparatus
WO2018125031A1 (en) * 2016-12-27 2018-07-05 Intel Corporation Cross-component health monitoring and improved repair for self-healing platforms
US10275179B2 (en) 2017-01-16 2019-04-30 Oracle International Corporation Distributed virtual block storage network
US10545914B2 (en) 2017-01-17 2020-01-28 Cisco Technology, Inc. Distributed object storage
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10979223B2 (en) * 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10243823B1 (en) 2017-02-24 2019-03-26 Cisco Technology, Inc. Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks
US10713203B2 (en) 2017-02-28 2020-07-14 Cisco Technology, Inc. Dynamic partition of PCIe disk arrays based on software configuration / policy distribution
US10254991B2 (en) 2017-03-06 2019-04-09 Cisco Technology, Inc. Storage area network based extended I/O metrics computation for deep insight into application performance
US11003381B2 (en) * 2017-03-07 2021-05-11 Samsung Electronics Co., Ltd. Non-volatile memory storage device capable of self-reporting performance capabilities
CN106843989A (zh) * 2017-03-10 2017-06-13 郑州云海信息技术有限公司 一种实现程序更新的系统及方法
US10079612B1 (en) 2017-03-15 2018-09-18 Alibaba Group Holding Limited Distributed erasure coding pool deployed in hyperscale infrastructure
US10664406B2 (en) 2017-03-21 2020-05-26 International Business Machines Corporation Coordinated utilization of parallel paths to improve efficiency
CN114089915B (zh) * 2017-03-27 2022-12-20 珠海极海半导体有限公司 基于flash存储器的文件追加写操作方法及装置
CN108665939B (zh) * 2017-03-31 2021-01-05 厦门旌存半导体技术有限公司 为存储器提供ecc的方法与装置
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10705911B2 (en) * 2017-04-24 2020-07-07 Hewlett Packard Enterprise Development Lp Storing data in a distributed storage system
US10524022B2 (en) 2017-05-02 2019-12-31 Seagate Technology Llc Data storage system with adaptive data path routing
US10812560B2 (en) * 2017-05-09 2020-10-20 EMC IP Holding Company LLC System and method for packet transmission using segment routing
US20180329634A1 (en) * 2017-05-10 2018-11-15 Strato Scale Ltd. Object overlay for storage-area network (san) appliances
US10459807B2 (en) 2017-05-23 2019-10-29 International Business Machines Corporation Determining modified portions of a RAID storage array
US10635529B2 (en) * 2017-05-25 2020-04-28 Western Digital Technologies, Inc. Parity offload for multiple data storage devices
US10725859B2 (en) * 2017-05-25 2020-07-28 Western Digital Technologies, Inc. Parity generation offload using peer-to-peer data transfers in data storage system
US10860508B2 (en) * 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
US10915405B2 (en) * 2017-05-26 2021-02-09 Netapp, Inc. Methods for handling storage element failures to reduce storage device failure rates and devices thereof
CN107145428A (zh) * 2017-05-26 2017-09-08 郑州云海信息技术有限公司 一种服务器及服务器监控方法
JP7087279B2 (ja) * 2017-05-26 2022-06-21 富士通株式会社 情報処理装置及びプログラム
KR102234725B1 (ko) * 2017-05-30 2021-04-02 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
US10616076B2 (en) * 2017-05-30 2020-04-07 International Business Machines Corporation Network asset management
US10223318B2 (en) * 2017-05-31 2019-03-05 Hewlett Packard Enterprise Development Lp Hot plugging peripheral connected interface express (PCIe) cards
WO2018226228A1 (en) 2017-06-08 2018-12-13 Hitachi Data Systems Corporation Deduplicating distributed erasure coded objects
US10152422B1 (en) 2017-06-13 2018-12-11 Seagate Technology Llc Page-based method for optimizing cache metadata updates
US11003532B2 (en) * 2017-06-16 2021-05-11 Microsoft Technology Licensing, Llc Distributed data object management system operations
KR102077283B1 (ko) * 2017-06-27 2020-02-14 주식회사 케이티 원격 백업 디바이스
US10389342B2 (en) 2017-06-28 2019-08-20 Hewlett Packard Enterprise Development Lp Comparator
US10216685B1 (en) * 2017-07-19 2019-02-26 Agiga Tech Inc. Memory modules with nonvolatile storage and rapid, sustained transfer rates
US10303534B2 (en) 2017-07-20 2019-05-28 Cisco Technology, Inc. System and method for self-healing of application centric infrastructure fabric memory
US10785301B2 (en) * 2017-08-03 2020-09-22 Toshiba Memory Corporation NVM express over fabrics
US20190042781A1 (en) * 2017-08-04 2019-02-07 Bitdefender IPR Management Ltd. Secure Storage Device
CN107506138B (zh) * 2017-08-11 2020-12-18 东莞记忆存储科技有限公司 一种固态硬盘提升寿命的方法
US10831935B2 (en) * 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US11321208B2 (en) * 2017-09-06 2022-05-03 Hitachi, Ltd. Distributed storage system and distributed storage control method
US10949199B1 (en) 2017-09-14 2021-03-16 Barefoot Networks, Inc. Copying packet data to mirror buffer
US10503590B2 (en) * 2017-09-21 2019-12-10 International Business Machines Corporation Storage array comprising a host-offloaded storage function
US10379948B2 (en) 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices
US10404596B2 (en) 2017-10-03 2019-09-03 Cisco Technology, Inc. Dynamic route profile storage in a hardware trie routing table
US10469367B2 (en) 2017-10-04 2019-11-05 Cisco Technology, Inc. Segment routing network processing of packets including operations signaling and processing of packets in manners providing processing and/or memory efficiencies
US10353606B2 (en) * 2017-10-12 2019-07-16 International Business Machines Corporation Partial data replay in a distributed memory buffer system
CN107748704A (zh) * 2017-10-13 2018-03-02 郑州云海信息技术有限公司 基于fpga的内存镜像实现的方法及装置
CN110325958B (zh) * 2017-10-13 2021-09-17 华为技术有限公司 分布式块存储系统中数据存储方法、装置及计算机可读存储介质
US10942666B2 (en) 2017-10-13 2021-03-09 Cisco Technology, Inc. Using network device replication in distributed storage clusters
US11502948B2 (en) 2017-10-16 2022-11-15 Mellanox Technologies, Ltd. Computational accelerator for storage operations
US11005771B2 (en) 2017-10-16 2021-05-11 Mellanox Technologies, Ltd. Computational accelerator for packet payload operations
CN109697017B (zh) * 2017-10-20 2022-03-15 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
KR102427323B1 (ko) * 2017-11-08 2022-08-01 삼성전자주식회사 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
CN108062358B (zh) * 2017-11-28 2020-12-29 厦门市美亚柏科信息股份有限公司 innodb引擎删除记录的离线恢复方法、存储介质
US10708240B2 (en) 2017-12-14 2020-07-07 Mellanox Technologies, Ltd. Offloading communication security operations to a network interface controller
WO2019119212A1 (zh) * 2017-12-18 2019-06-27 华为技术有限公司 识别osd亚健康的方法、装置和数据存储系统
FR3075413B1 (fr) * 2017-12-20 2020-01-10 Bull Sas Procede de pre-chargement de donnees
KR102032878B1 (ko) * 2017-12-22 2019-10-16 한국외국어대학교 연구산학협력단 플래시 메모리 컨트롤러의 에러 정정 방법
CN109976663B (zh) * 2017-12-27 2021-12-28 浙江宇视科技有限公司 分布式存储响应方法和系统
US10592173B2 (en) * 2018-01-10 2020-03-17 International Business Machines Corporation Increasing storage efficiency of a data protection technique
CN110096451B (zh) * 2018-01-29 2023-08-04 华为技术有限公司 一种数据存储方法及装置
CN110096220B (zh) * 2018-01-31 2020-06-26 华为技术有限公司 一种分布式存储系统、数据处理方法和存储节点
US10608939B1 (en) 2018-02-13 2020-03-31 Barefoot Networks, Inc. Identifying congestion in a network
US11157356B2 (en) 2018-03-05 2021-10-26 Samsung Electronics Co., Ltd. System and method for supporting data protection across FPGA SSDs
US10909066B2 (en) * 2018-04-03 2021-02-02 Microsoft Technology Licensing, Llc Virtual RDMA switching for containerized applications
CN108804027B (zh) * 2018-04-10 2021-06-08 四川中电昆辰科技有限公司 单比特定位时隙分配表的压缩存储方法
CN115174733B (zh) * 2018-04-28 2024-09-24 华为技术有限公司 一种界面显示方法、装置及设备
US10579606B2 (en) * 2018-05-03 2020-03-03 Samsung Electronics Co., Ltd Apparatus and method of data analytics in key-value solid state device (KVSSD) including data and analytics containers
US11003537B2 (en) * 2018-05-29 2021-05-11 Micron Technology, Inc. Determining validity of data read from memory by a controller
US10558565B2 (en) 2018-05-29 2020-02-11 Microsoft Technology Licensing, Llc Garbage collection implementing erasure coding
CN110597451B (zh) * 2018-06-12 2021-02-23 华为技术有限公司 一种虚拟化缓存的实现方法及物理机
US10785024B2 (en) 2018-06-20 2020-09-22 International Business Machines Corporation Encryption key structure within block based memory
US10515042B1 (en) * 2018-06-20 2019-12-24 Quanta Computer Inc. DAS storage cable identification
US11509606B2 (en) * 2018-06-29 2022-11-22 Intel Corporation Offload of storage node scale-out management to a smart network interface controller
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10409511B1 (en) 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
CN110659234B (zh) * 2018-06-30 2024-02-02 联想企业解决方案(新加坡)有限公司 服务器主板和主板dimm插槽的填充方法
US10725862B2 (en) * 2018-07-06 2020-07-28 Macronix International Co., Ltd. Data recovery method to error correction code in memory
US11194588B2 (en) * 2018-07-09 2021-12-07 Dell Products L.P. Information handling systems and method to provide secure shared memory access at OS runtime
KR102495539B1 (ko) * 2018-07-16 2023-02-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN110729006B (zh) * 2018-07-16 2022-07-05 超威半导体(上海)有限公司 存储器控制器中的刷新方案
US11238005B2 (en) 2018-07-20 2022-02-01 Samsung Electronics Co., Ltd. SFF-TA-100X based multi-mode protocols solid state devices
US10831411B2 (en) 2018-07-24 2020-11-10 International Business Machines Corporation Storage controller with OCS for managing active-passive backend storage arrays
US10825477B2 (en) * 2018-08-02 2020-11-03 Western Digital Technologies, Inc. RAID storage system with logical data group priority
US11132256B2 (en) 2018-08-03 2021-09-28 Western Digital Technologies, Inc. RAID storage system with logical data group rebuild
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10901848B2 (en) * 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US11347678B2 (en) 2018-08-06 2022-05-31 Oracle International Corporation One-sided reliable remote direct memory operations
KR20200021819A (ko) * 2018-08-21 2020-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러, 저장 장치 및 그 동작 방법
CN109240608B (zh) * 2018-08-22 2021-08-31 郑州云海信息技术有限公司 一种配置信息同步方法及装置
CN109362236A (zh) * 2018-08-31 2019-02-19 深圳大学 基于双云端的数据安全存储方法、装置、设备及存储介质
JP7091203B2 (ja) 2018-09-19 2022-06-27 キオクシア株式会社 メモリシステムおよび制御方法
US11030316B2 (en) 2018-09-20 2021-06-08 Samsung Electronics Co., Ltd. System and method for providing security protection for FPGA based solid state drives
DE102018007628A1 (de) * 2018-09-26 2020-03-26 Giesecke+Devrient Mobile Security Gmbh Dezentralisierte Identitätsmanagement-Lösung
US10877810B2 (en) 2018-09-29 2020-12-29 Western Digital Technologies, Inc. Object storage system with metadata operation priority processing
US10956071B2 (en) * 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US10817430B2 (en) * 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
US10652208B2 (en) * 2018-10-03 2020-05-12 Axonius Solutions Ltd. System and method for managing network connected devices
TWI679532B (zh) 2018-10-05 2019-12-11 緯穎科技服務股份有限公司 監測系統與方法
US20200117722A1 (en) * 2018-10-12 2020-04-16 Goke Us Research Laboratory Efficient file storage and retrieval system, method and apparatus
CN109586931B (zh) * 2018-10-18 2021-01-15 招商证券股份有限公司 组播方法及终端设备
KR20200046495A (ko) * 2018-10-24 2020-05-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10761932B2 (en) * 2018-10-25 2020-09-01 Hewlett Packard Enterprise Development Lp Data and metadata storage in storage devices
US10983985B2 (en) * 2018-10-29 2021-04-20 International Business Machines Corporation Determining a storage pool to store changed data objects indicated in a database
US11023155B2 (en) 2018-10-29 2021-06-01 International Business Machines Corporation Processing event messages for changed data objects to determine a storage pool to store the changed data objects
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
US10936295B2 (en) * 2018-11-01 2021-03-02 Dell Products L.P. Software update system
US11429674B2 (en) 2018-11-15 2022-08-30 International Business Machines Corporation Processing event messages for data objects to determine data to redact from a database
US11409900B2 (en) 2018-11-15 2022-08-09 International Business Machines Corporation Processing event messages for data objects in a message queue to determine data to redact
CN109683809B (zh) * 2018-11-19 2021-08-31 深圳市艾锐达光电有限公司 一种数据存储方法及终端
US10749758B2 (en) 2018-11-21 2020-08-18 International Business Machines Corporation Cognitive data center management
US10951403B2 (en) * 2018-12-03 2021-03-16 Winbond Electronics Corporation Updating cryptographic keys stored in non-volatile memory
CN109788697B (zh) * 2018-12-04 2021-04-09 华为技术有限公司 具有平行背板的电子设备及存储设备
US10949297B2 (en) * 2018-12-05 2021-03-16 Micron Technology, Inc. NAND device mixed parity management
US11734192B2 (en) 2018-12-10 2023-08-22 International Business Machines Corporation Identifying location of data granules in global virtual address space
US11016908B2 (en) * 2018-12-11 2021-05-25 International Business Machines Corporation Distributed directory of named data elements in coordination namespace
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
CN111367466B (zh) * 2018-12-26 2023-08-15 深圳市茁壮网络股份有限公司 一种磁盘预退休方法和装置
CN109710547B (zh) * 2018-12-29 2020-12-08 浙江理工大学 一种工业物联网中的缓冲内存管理设计与实现方法
US11182258B2 (en) * 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
US11455402B2 (en) 2019-01-30 2022-09-27 Seagate Technology Llc Non-volatile memory with precise write-once protection
KR20200095130A (ko) 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11144488B2 (en) * 2019-02-04 2021-10-12 American Megatrends International, Llc Techniques of sending alerts from storage services running on server san target
CN109947447A (zh) * 2019-02-25 2019-06-28 南京百敖软件有限公司 一种服务器传感器监控在线更新方法
KR101995034B1 (ko) * 2019-02-26 2019-07-02 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10997029B2 (en) * 2019-03-07 2021-05-04 International Business Machines Corporation Core repair with failure analysis and recovery probe
CN112219197B (zh) 2019-03-08 2024-01-23 御眼视觉技术有限公司 基于优先级的共享资源访问管理
US11151093B2 (en) * 2019-03-29 2021-10-19 International Business Machines Corporation Distributed system control for on-demand data access in complex, heterogenous data storage
US11184439B2 (en) 2019-04-01 2021-11-23 Mellanox Technologies, Ltd. Communication with accelerator via RDMA-based network adapter
US11494107B2 (en) * 2019-04-11 2022-11-08 Apple Inc. Managing parity information for data stored on a storage device
TWI704567B (zh) * 2019-04-18 2020-09-11 大陸商上海川源信息科技有限公司 磁碟陣列系統的資料還原方法
US11316904B2 (en) * 2019-04-25 2022-04-26 Super Micro Computer, Inc. Network switches with secured switch ports to baseboard management controllers
US20200342109A1 (en) * 2019-04-29 2020-10-29 Hewlett Packard Enterprise Development Lp Baseboard management controller to convey data
CN111857547B (zh) * 2019-04-29 2024-05-24 伊姆西Ip控股有限责任公司 用于管理数据存储的方法、设备和计算机可读介质
KR20200126531A (ko) * 2019-04-30 2020-11-09 에스케이하이닉스 주식회사 메모리 시스템 및 그의 커맨드 수행 방법
WO2020236283A1 (en) * 2019-05-23 2020-11-26 Cray Inc. System and method for dynamic allocation of reduction engines
US11487616B2 (en) 2019-05-24 2022-11-01 Texas Instruments Incorporated Write control for read-modify-write operations in cache memory
US11620389B2 (en) 2019-06-24 2023-04-04 University Of Maryland Baltimore County Method and system for reducing false positives in static source code analysis reports using machine learning and classification techniques
US20220253236A1 (en) * 2019-07-02 2022-08-11 Microsoft Technology Licensing, Llc Hardware-based memory compression
US11044044B2 (en) 2019-07-16 2021-06-22 Microsoft Technology Licensing, Llc Peak to average power ratio reduction of optical systems utilizing error correction
US11075656B2 (en) 2019-07-16 2021-07-27 Microsoft Technology Licensing, Llc Bit error reduction of communication systems using error correction
US11983277B2 (en) 2019-07-16 2024-05-14 Hewlett Packard Enterprise Development Lp Identifying a security vulnerability in a computer system
US11172455B2 (en) 2019-07-16 2021-11-09 Microsoft Technology Licensing, Llc Peak to average power output reduction of RF systems utilizing error correction
US10911284B1 (en) 2019-07-16 2021-02-02 Microsoft Technology Licensing, Llc Intelligent optimization of communication systems utilizing error correction
US11031961B2 (en) 2019-07-16 2021-06-08 Microsoft Technology Licensing, Llc Smart symbol changes for optimization of communications using error correction
US11086719B2 (en) 2019-07-16 2021-08-10 Microsoft Technology Licensing, Llc Use of error correction codes to prevent errors in neighboring storage
US11063696B2 (en) 2019-07-16 2021-07-13 Microsoft Technology Licensing, Llc Increasing average power levels to reduce peak-to-average power levels using error correction codes
CN110489367B (zh) * 2019-07-29 2020-10-02 苏州浪潮智能科技有限公司 一种灵活调配且易于cpld管理背板的方法与系统
US10911141B1 (en) 2019-07-30 2021-02-02 Microsoft Technology Licensing, Llc Dynamically selecting a channel model for optical communications
KR102650809B1 (ko) 2019-08-02 2024-03-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11200106B2 (en) 2019-08-12 2021-12-14 Advanced Micro Devices, Inc. Data integrity for persistent memory systems and the like
US11487908B2 (en) * 2019-08-16 2022-11-01 Macronix International Co., Ltd. Secure memory
US11150812B2 (en) 2019-08-20 2021-10-19 Micron Technology, Inc. Predictive memory management
CN110569262A (zh) * 2019-08-21 2019-12-13 广州汇思信息科技有限公司 一种电子试卷生成方法、电子设备以及存储介质
US10817460B2 (en) * 2019-08-28 2020-10-27 Advanced New Technologies Co., Ltd. RDMA data sending and receiving methods, electronic device, and readable storage medium
US10866861B1 (en) * 2019-08-29 2020-12-15 Micron Technology, Inc. Deferred error-correction parity calculations
KR102316271B1 (ko) * 2019-08-29 2021-10-22 동국대학교 산학협력단 데이터 저장장치의 주소 맵핑 테이블 운용 방법
US11016692B2 (en) 2019-09-11 2021-05-25 International Business Machines Corporation Dynamically switching between memory copy and memory mapping to optimize I/O performance
US10942857B1 (en) 2019-09-11 2021-03-09 International Business Machines Corporation Dynamically adjusting a number of memory copy and memory mapping windows to optimize I/O performance
JP2021043708A (ja) * 2019-09-11 2021-03-18 キオクシア株式会社 メモリシステム
CN110688328B (zh) * 2019-09-27 2023-03-14 山东华芯半导体有限公司 一种axi总线分主机映射集的可配置重映射实现方法
US11604771B2 (en) 2019-09-30 2023-03-14 Dell Products L.P. Method and system for data placement in a linked node system
US11360949B2 (en) * 2019-09-30 2022-06-14 Dell Products L.P. Method and system for efficient updating of data in a linked node system
US11481293B2 (en) 2019-09-30 2022-10-25 Dell Products L.P. Method and system for replica placement in a linked node system
US11288372B2 (en) 2019-10-07 2022-03-29 Microsoft Technology Licensing, Llc Secure installation of baseboard management controller firmware via a physical interface
US11243859B2 (en) * 2019-10-09 2022-02-08 Microsoft Technology Licensing, Llc Baseboard management controller that initiates a diagnostic operation to collect host information
US11151041B2 (en) * 2019-10-15 2021-10-19 Micron Technology, Inc. Tokens to indicate completion of data storage
CN110990324A (zh) * 2019-10-25 2020-04-10 苏州浪潮智能科技有限公司 一种实现输出控制的方法、装置、计算机存储介质及终端
CN110753121A (zh) * 2019-10-25 2020-02-04 北京浪潮数据技术有限公司 一种镜像仓库的部署方法、装置、设备及介质
US11251979B2 (en) * 2019-10-30 2022-02-15 International Business Machines Corporation Control of information units for encryption
CN110795508B (zh) * 2019-11-04 2023-04-07 中国建设银行股份有限公司 数据的复制方法、装置、设备和存储介质
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
US11580233B1 (en) * 2019-11-13 2023-02-14 Meta Platforms, Inc. Baseboard-management-controller storage module
WO2021095232A1 (ja) 2019-11-15 2021-05-20 キオクシア株式会社 ストレージシステム及びウェハ
CN110866291B (zh) * 2019-11-15 2023-03-24 北京工业大学 一种基于双重安全机制的废旧电子产品信息清除方法
JP7214758B2 (ja) 2019-11-15 2023-01-30 キオクシア株式会社 ストレージデバイスおよびストレージシステム
CN111080840B (zh) * 2019-12-04 2022-02-18 中国直升机设计研究所 一种直升机飞控系统数据发送及复现方法
US11256448B2 (en) 2019-12-16 2022-02-22 Samsung Electronics Co., Ltd. Network storage gateway
US12099746B2 (en) * 2019-12-16 2024-09-24 Micron Technology, Inc. Interrupt signaling for a memory device
US11706479B2 (en) * 2019-12-19 2023-07-18 Comcast Cable Communications, Llc Methods and systems for storing user-specific media sequences
CN111211944B (zh) * 2020-01-07 2021-11-12 深圳市吉祥腾达科技有限公司 一种路由器一wan多拨稳定性测试系统及测试方法
US10978097B1 (en) 2020-01-16 2021-04-13 International Business Machines Corporation Indicating tracks as erased without deleting data for the tracks
KR20210094178A (ko) * 2020-01-20 2021-07-29 삼성전자주식회사 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템
US11210002B2 (en) 2020-01-29 2021-12-28 Samsung Electronics Co., Ltd. Offloaded device-driven erasure coding
US11316917B2 (en) * 2020-03-04 2022-04-26 Samsung Electronics Co., Ltd. Methods and apparatus for peer-to-peer data channels for storage devices
US11231934B2 (en) 2020-03-05 2022-01-25 Samsung Electronics Co., Ltd. System and method for controlling the order of instruction execution by a target device
KR102289834B1 (ko) * 2020-03-09 2021-08-12 한림대학교 산학협력단 센서 장치의 저장 공간을 이용한 가상 스토리지 시스템 및 이의 작동 방법
KR102289835B1 (ko) * 2020-03-10 2021-08-12 한림대학교 산학협력단 블록 단위로 저장 데이터를 송수신하는 가상 스토리지 시스템 및 이의 작동 방법
CN113495681B (zh) * 2020-04-07 2024-09-24 杭州萤石软件有限公司 一种nand flash文件数据存取方法、装置及存储介质
US20210342169A1 (en) * 2020-04-29 2021-11-04 Hewlett Packard Enterprise Development Lp Emulating physical security devices
US11481203B2 (en) 2020-04-30 2022-10-25 Forcepoint Llc Shared pipeline for multiple services
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US20210349781A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for data recovery using parity space as recovery space
US20210357119A1 (en) * 2020-05-15 2021-11-18 Rey Bruce Artificial intelligence-based hybrid raid controller device
CN111835610B (zh) * 2020-05-29 2022-05-03 中车株洲电力机车研究所有限公司 数据共享方法、系统、存储介质及电子设备
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11307782B2 (en) * 2020-06-03 2022-04-19 Micron Technology, Inc. Host identification and verification system and method for a memory system
US11507544B2 (en) 2020-06-05 2022-11-22 Vmware, Inc. Efficient erasure-coded storage in distributed data systems
US11334497B2 (en) * 2020-06-05 2022-05-17 Vmware, Inc. Efficient segment cleaning employing local copying of data blocks in log-structured file systems of distributed data systems
US11262919B2 (en) * 2020-06-05 2022-03-01 Vmware, Inc. Efficient segment cleaning employing remapping of data blocks in log-structured file systems of distributed data systems
US11263146B2 (en) * 2020-06-05 2022-03-01 Vmware, Inc. Efficient accessing methods for bypassing second layer mapping of data blocks in file systems of distributed data systems
JP7475989B2 (ja) * 2020-06-26 2024-04-30 キオクシア株式会社 メモリシステムおよび制御方法
KR102208497B1 (ko) * 2020-07-01 2021-01-27 주식회사 파두 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US11283719B2 (en) 2020-07-13 2022-03-22 Google Llc Content addressable memory (CAM) based hardware architecture for datacenter networking
WO2022020404A1 (en) * 2020-07-22 2022-01-27 Analog Devices, Inc. Synchronizing communication channels between digital front-end processors
US11567831B2 (en) 2020-07-28 2023-01-31 Micron Technology, Inc. Generating a protected and balanced codeword
US11494264B2 (en) 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11237906B1 (en) 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
CN114095153A (zh) 2020-08-05 2022-02-25 迈络思科技有限公司 密码数据通信装置
IL276538B2 (en) 2020-08-05 2023-08-01 Mellanox Technologies Ltd A cryptographic device for data communication
US20220046080A1 (en) * 2020-08-06 2022-02-10 Dell Products L.P. Systems and methods for shared access among host information handling system and multiple client information handling systems via management controller
US11327858B2 (en) * 2020-08-11 2022-05-10 Seagate Technology Llc Preserving data integrity during controller failure
JP7175944B2 (ja) * 2020-08-31 2022-11-21 楽天グループ株式会社 通信システム、送信装置、受信装置、通信方法、及びプログラム
TWI817039B (zh) * 2020-09-08 2023-10-01 以色列商無比視視覺科技有限公司 用以管理多個啟動器存取共享資源之方法及系統以及相關電腦程式產品
EP4202707A4 (en) * 2020-09-17 2023-08-23 Huawei Technologies Co., Ltd. COMMUNICATION METHOD AND APPARATUS USING AN INTER-INTEGRATED CIRCUIT
CN111930517B (zh) * 2020-09-18 2023-07-14 北京中科立维科技有限公司 一种高性能自适应垃圾收集方法和计算机系统
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11736566B2 (en) 2020-09-28 2023-08-22 Vmware, Inc. Using a NIC as a network accelerator to allow VM access to an external storage via a PF module, bus, and VF module
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US12021759B2 (en) 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US12061583B1 (en) * 2020-09-29 2024-08-13 Amazon Technologies, Inc. Systems for processing data using stages
US11809282B2 (en) * 2020-09-29 2023-11-07 EMC IP Holding Company LLC Optimized pipeline to boost de-dup system performance
US11914492B2 (en) * 2020-10-13 2024-02-27 Dell Products, L.P. System and method for highly granular power/thermal control in information handling systems
US11327909B1 (en) 2020-10-26 2022-05-10 Mellanox Technologies, Ltd. System for improving input / output performance
US11531498B2 (en) * 2020-11-20 2022-12-20 Western Digital Technologies, Inc. Peer storage device messaging over control bus
US11544205B2 (en) 2020-11-20 2023-01-03 Western Digital Technologies, Inc. Peer storage devices sharing host control data
TWI754473B (zh) * 2020-11-27 2022-02-01 中強光電股份有限公司 用於光譜模型解釋的電子裝置和方法
US11543992B2 (en) * 2020-12-09 2023-01-03 Western Digital Technologies, Inc. Decreasing physical secure erase times in solid state drives
CN112380071B (zh) * 2020-12-09 2023-10-27 成都傲梅科技有限公司 一种快速备份ntfs文件系统的方法
TWI758013B (zh) * 2020-12-15 2022-03-11 技嘉科技股份有限公司 基板管理控制系統、電子裝置以及基板管理控制方法
CN112698697A (zh) * 2020-12-30 2021-04-23 湖南博匠信息科技有限公司 一种软件定义vpx机箱
US11556424B2 (en) 2021-01-19 2023-01-17 Western Digital Technologies, Inc. Non-volatile storage device having fast boot code transfer with low speed fallback
US11606422B2 (en) * 2021-01-20 2023-03-14 Samsung Electronics Co., Ltd. Server for controlling data transmission through data pipeline and operation method thereof
CN114817121A (zh) * 2021-01-22 2022-07-29 伊姆西Ip控股有限责任公司 用于处理数据的方法、电子设备和计算机程序产品
CN112765223B (zh) * 2021-01-26 2023-07-14 红云红河烟草(集团)有限责任公司 一种基于队列的设备参数数据对齐方法
US11645219B2 (en) * 2021-02-02 2023-05-09 American Megatrends International, Llc Method for generating a hybrid BMC system and hybrid BMC system
JP2022122478A (ja) * 2021-02-10 2022-08-23 株式会社日立製作所 ストレージコントローラのネットワークインタフェース
US11573718B2 (en) * 2021-02-12 2023-02-07 Western Digital Technologies, Inc. Disaggregation of control path and data path
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11940935B2 (en) * 2021-04-19 2024-03-26 Mellanox Technologies, Ltd. Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host
CN117256102A (zh) * 2021-04-21 2023-12-19 拉姆伯斯公司 具有用于并发接口操作的单向端口的集成电路存储器设备
US12081526B2 (en) * 2021-05-19 2024-09-03 Western Digital Technologies, Inc. Data storage device data recovery using remote network storage
US12040988B2 (en) 2021-05-25 2024-07-16 Google Llc Acknowledgement coalescing module utilized in content addressable memory (CAM) based hardware architecture for data center networking
KR20230097169A (ko) 2021-06-01 2023-06-30 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템의 전력 관리
US11783866B2 (en) 2021-06-02 2023-10-10 Western Digital Technologies, Inc. Data storage device and method for legitimized data transfer
CN113538754B (zh) * 2021-06-08 2023-04-07 福建新大陆通信科技股份有限公司 一种ctid智能门锁授权数据管理方法及系统
US11782641B2 (en) * 2021-06-09 2023-10-10 International Business Machines Corporation Backend aware virtualized storage
EP4359899A1 (en) * 2021-06-24 2024-05-01 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11625189B2 (en) * 2021-06-28 2023-04-11 Western Digital Technologies, Inc. Systems and methods for fragmentation management in host buffers
US11321178B1 (en) * 2021-06-29 2022-05-03 Dell Products, L. P. Automated recovery from raid double failure
US11726666B2 (en) 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US11675602B2 (en) 2021-07-28 2023-06-13 International Business Machines Corporation Methods and systems for creating root-of-trust for computing system components
CN113590043B (zh) * 2021-07-29 2024-08-16 北京沃东天骏信息技术有限公司 一种数据存储方法、装置、设备及存储介质
US20230049602A1 (en) * 2021-08-10 2023-02-16 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for hierarchical aggregation for computational storage
US12074962B2 (en) 2021-08-10 2024-08-27 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for dividing and encrypting data
CN115905056A (zh) 2021-08-11 2023-04-04 迈络思科技有限公司 改进存储子系统中的步调
US11609700B2 (en) 2021-08-11 2023-03-21 Mellanox Technologies, Ltd. Pacing in a storage sub-system
CN115906722A (zh) * 2021-08-16 2023-04-04 富联精密电子(天津)有限公司 用于提高可编程器件引脚复用率的服务器系统及方法
US12132802B2 (en) 2021-09-01 2024-10-29 Google Llc Off-chip memory backed reliable transport connection cache hardware architecture
US12112200B2 (en) 2021-09-13 2024-10-08 International Business Machines Corporation Pipeline parallel computing using extended memory
US11662955B2 (en) 2021-09-27 2023-05-30 GRAID Technology Inc. Direct memory access data path for RAID storage
US20230121562A1 (en) * 2021-10-15 2023-04-20 Dell Products, L.P. Telemetry of artificial intelligence (ai) and/or machine learning (ml) workloads
EP4418096A1 (en) * 2021-10-21 2024-08-21 Seoul National University R&DB Foundation Storage device system for quantum circuit simulation
CN114143276B (zh) * 2021-11-23 2024-10-01 青芯半导体科技(上海)有限公司 一种PCI-e交换机及其配置分支模式的方法
JP2023091307A (ja) * 2021-12-20 2023-06-30 キオクシア株式会社 半導体装置および制御方法
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US11971771B2 (en) 2022-01-25 2024-04-30 Western Digital Technologies, Inc. Peer storage device messaging for power management
US11921602B2 (en) 2022-02-14 2024-03-05 Cribl, Inc. Edge-based data collection system for an observability pipeline system
US20230351019A1 (en) * 2022-04-27 2023-11-02 Dell Products L.P. Secure smart network interface controller firmware update
US11853201B2 (en) 2022-05-25 2023-12-26 Micron Technology, Inc. Selective single-level memory cell operation
KR102537770B1 (ko) * 2022-06-08 2023-05-30 삼성전자주식회사 기입 스로틀링을 이용한 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US12079084B2 (en) * 2022-08-01 2024-09-03 Microsoft Technology Licensing, Llc Distributed raid for parity-based flash storage devices
US12081450B2 (en) * 2022-08-30 2024-09-03 Xerox Corporation System and method using improved message queue and packing scheme for electronic device
US12117948B2 (en) 2022-10-31 2024-10-15 Mellanox Technologies, Ltd. Data processing unit with transparent root complex
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)
CN115657963B (zh) * 2022-11-14 2023-04-11 苏州浪潮智能科技有限公司 基于固态硬盘的顺序写方法、装置、电子设备及存储介质
CN115801633B (zh) * 2023-02-08 2023-04-28 湖南国科亿存信息科技有限公司 San存储的多客户端共享并发性能测试方法和系统
US12093220B1 (en) * 2023-06-27 2024-09-17 International Business Machines Corporation Controlling layers in container images to reduce redundant content between layers
US11979459B1 (en) * 2023-10-12 2024-05-07 International Business Machines Corporation Configuration of data connections between a host and a shared network adapter
CN117407324B (zh) * 2023-12-12 2024-03-15 深圳市银闪科技有限公司 基于固态硬盘的数据存储方法、装置、固态硬盘控制器
CN117667465B (zh) * 2024-01-31 2024-04-16 苏州元脑智能科技有限公司 代码共享方法、装置、交换机、多主机系统、设备和介质

Family Cites Families (1285)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE20535E (en) 1937-10-19 Valve for aerated liquid vessels
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
SE347103B (es) 1964-10-30 1972-07-24 Olivetti & Co Spa
US4092732A (en) * 1977-05-31 1978-05-30 International Business Machines Corporation System for recovering data stored in failed memory unit
US4290105A (en) * 1979-04-02 1981-09-15 American Newspaper Publishers Association Method and apparatus for testing membership in a set through hash coding with allowable errors
NL8201847A (nl) * 1982-05-06 1983-12-01 Philips Nv Inrichting voor het beschermen tegen onbevoegd uitlezen van in een geheugen te memoriseren programmawoorden.
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US4598361A (en) * 1985-01-11 1986-07-01 Burroughs Corporation Allocator for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US5043871A (en) 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US4980861A (en) 1987-01-16 1990-12-25 Microchip Technology Incorporated NAND stack ROM
US4858070A (en) 1987-04-24 1989-08-15 Racal Data Communications Inc. Modular expandable housing arrangement for electronic apparatus
JPH02105730A (ja) 1988-10-14 1990-04-18 Sony Corp データ記録方法
JPH02148235A (ja) 1988-11-30 1990-06-07 Toshiba Corp データ退避方式
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
US5535328A (en) 1989-04-13 1996-07-09 Sandisk Corporation Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells
US7190617B1 (en) * 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5247658A (en) * 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5111463A (en) 1989-11-09 1992-05-05 Exabyte Corporation Error correction method and apparatus
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5124987A (en) 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) * 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
WO1992003786A1 (de) * 1990-08-14 1992-03-05 Siemens Aktiengesellschaft Einrichtung zur interruptverteilung in einem mehrrechnersystem
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5291496A (en) * 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
JP3227707B2 (ja) 1990-12-29 2001-11-12 日本電気株式会社 走行モード別キャッシュメモリ制御方式
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5274799A (en) 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5325509A (en) * 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5325523A (en) 1991-04-10 1994-06-28 International Business Machines Corporation Method for deleting objects from library resident optical disks by accumulating pending delete requests
US5438671A (en) * 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5465355A (en) * 1991-09-04 1995-11-07 International Business Machines Corporation Establishing and restoring paths in a data processing I/O system
US5313475A (en) * 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5263003A (en) 1991-11-12 1993-11-16 Allen-Bradley Company, Inc. Flash memory circuit and method of operation
US5323489A (en) * 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
US5499367A (en) 1991-11-15 1996-03-12 Oracle Corporation System for database integrity with multiple logs assigned to client subsets
US5469555A (en) * 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
JP3058743B2 (ja) 1992-01-21 2000-07-04 株式会社日立製作所 ディスクアレイ制御装置
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5481708A (en) * 1992-06-05 1996-01-02 Borland International, Inc. System and methods for optimizing object-oriented compilations
JP3328321B2 (ja) 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5414840A (en) 1992-06-25 1995-05-09 Digital Equipment Corporation Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory
JPH0628108A (ja) * 1992-07-09 1994-02-04 Hitachi Ltd データ記憶システム
JPH0644139A (ja) * 1992-07-22 1994-02-18 Ricoh Co Ltd ディスクキャッシュシステムおよびそのページ置き換え制御方法
US5596736A (en) * 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5381528A (en) 1992-10-15 1995-01-10 Maxtor Corporation Demand allocation of read/write buffer partitions favoring sequential read cache
US5388108A (en) 1992-10-23 1995-02-07 Ncr Corporation Delayed initiation of read-modify-write parity operations in a raid level 5 disk array
US5357475A (en) * 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
US5337275A (en) 1992-10-30 1994-08-09 Intel Corporation Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5416915A (en) * 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5579474A (en) * 1992-12-28 1996-11-26 Hitachi, Ltd. Disk array system and its control method
US5845329A (en) * 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
EP0612015A1 (en) * 1993-02-16 1994-08-24 International Business Machines Corporation Improved disk array system having special parity groups for data blocks with high update activity
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
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
JP3594626B2 (ja) 1993-03-04 2004-12-02 株式会社ルネサステクノロジ 不揮発性メモリ装置
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5761402A (en) * 1993-03-08 1998-06-02 Hitachi, Ltd. Array type disk system updating redundant data asynchronously with data access
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US6078520A (en) * 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) * 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5765207A (en) 1993-06-22 1998-06-09 International Business Machines Corporation Recursive hardware state machine
US5592641A (en) * 1993-06-30 1997-01-07 Intel Corporation Method and device for selectively locking write access to blocks in a memory array using write protect inputs and block enabled status
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) * 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
JPH07110784A (ja) 1993-10-14 1995-04-25 Fujitsu Ltd 追加形式レコード格納方法及び装置
US5809527A (en) * 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5559988A (en) * 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5379304A (en) 1994-01-28 1995-01-03 International Business Machines Corporation Method and structure for providing error correction code and parity for each byte on SIMM's
JP3378874B2 (ja) 1994-03-18 2003-02-17 富士通株式会社 情報処理装置及びメモリボード
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5596708A (en) * 1994-04-04 1997-01-21 At&T Global Information Solutions Company Method and apparatus for the protection of write data in a disk array
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5434994A (en) 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) * 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
IT1274925B (it) * 1994-09-21 1997-07-29 Texas Instruments Italia Spa Architettura di memoria per dischi a stato solido
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5664187A (en) 1994-10-26 1997-09-02 Hewlett-Packard Company Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
JP3011035B2 (ja) * 1994-12-08 2000-02-21 株式会社日立製作所 計算機システム
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5566315A (en) 1994-12-30 1996-10-15 Storage Technology Corporation Process of predicting and controlling the use of cache memory in a computer system
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5745671A (en) * 1995-02-28 1998-04-28 International Business Machines Corporation Data storage system with localized XOR function
US5574882A (en) 1995-03-03 1996-11-12 International Business Machines Corporation System and method for identifying inconsistent parity in an array of storage
US5701434A (en) * 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5742787A (en) 1995-04-10 1998-04-21 Intel Corporation Hardware reset of a write state machine for flash memory
US5799140A (en) 1995-04-21 1998-08-25 International Business Machines Corporation Disk array system and method for storing data
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
EP0747825B1 (en) * 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation SDRAM data allocation system and method
JP3732869B2 (ja) 1995-06-07 2006-01-11 株式会社日立製作所 外部記憶装置
US5721874A (en) 1995-06-16 1998-02-24 International Business Machines Corporation Configurable cache with variable, dynamically addressable line sizes
JPH096706A (ja) 1995-06-22 1997-01-10 Hitachi Ltd 疎結合計算機システム
JP3062050B2 (ja) 1995-07-21 2000-07-10 インターナショナル・ビジネス・マシーンズ・コーポレ−ション ディスク駆動制御方法及び装置
US6801979B1 (en) * 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6081878A (en) * 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6757800B1 (en) * 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5754563A (en) * 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
GB2291991A (en) 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5799200A (en) 1995-09-28 1998-08-25 Emc Corporation Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller
US5933847A (en) 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US5893138A (en) 1995-10-02 1999-04-06 International Business Machines Corporation System and method for improving channel hardware performance for an array controller
JP3363292B2 (ja) * 1995-10-12 2003-01-08 株式会社日立製作所 データベース管理システム
US6470405B2 (en) 1995-10-19 2002-10-22 Rambus Inc. Protocol for communication with dynamic memory
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) * 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5758118A (en) 1995-12-08 1998-05-26 International Business Machines Corporation Methods and data storage devices for RAID expansion by on-line addition of new DASDs
US6745292B1 (en) 1995-12-08 2004-06-01 Ncr Corporation Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
US5734861A (en) * 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5720025A (en) * 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
JPH09198336A (ja) 1996-01-22 1997-07-31 Nec Corp 二次記憶装置への遠隔アクセス方法
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5835964A (en) 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5805501A (en) 1996-05-22 1998-09-08 Macronix International Co., Ltd. Flash memory device with multiple checkpoint erase suspend logic
JP3545535B2 (ja) * 1996-05-29 2004-07-21 株式会社アドバンテスト 半導体メモリ試験方法および装置
US5922080A (en) 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US6424872B1 (en) 1996-08-23 2002-07-23 Fieldbus Foundation Block oriented control system
US5768152A (en) * 1996-08-28 1998-06-16 International Business Machines Corp. Performance monitoring through JTAG 1149.1 interface
TW338165B (en) 1996-09-09 1998-08-11 Sony Co Ltd Semiconductor nand type flash memory with incremental step pulse programming
US5996054A (en) 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US5832515A (en) 1996-09-12 1998-11-03 Veritas Software Log device layered transparently within a filesystem paradigm
JP3608694B2 (ja) * 1996-09-18 2005-01-12 株式会社アドバンテスト メモリ試験装置
US6201739B1 (en) 1996-09-20 2001-03-13 Intel Corporation Nonvolatile writeable memory with preemption pin
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5960462A (en) * 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) * 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5822759A (en) 1996-11-22 1998-10-13 Versant Object Technology Cache system
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US5867430A (en) 1996-12-20 1999-02-02 Advanced Micro Devices Inc Bank architecture for a non-volatile memory enabling simultaneous reading and writing
US5933824A (en) * 1996-12-23 1999-08-03 Lsi Logic Corporation Methods and apparatus for locking files within a clustered storage environment
US6073218A (en) * 1996-12-23 2000-06-06 Lsi Logic Corp. Methods and apparatus for coordinating shared multiple raid controller access to common storage devices
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
DE19700112C2 (de) 1997-01-03 1999-03-04 Fraunhofer Ges Forschung Vorrichtung zur Lichtumlenkung mittels Totalreflexion
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6311290B1 (en) 1997-02-14 2001-10-30 Intel Corporation Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6182188B1 (en) 1997-04-06 2001-01-30 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
TW465234B (en) 1997-02-18 2001-11-21 Discovision Ass Single chip VLSI implementation of a digital receiver employing orthogonal frequency division multiplexing
US6073232A (en) * 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) * 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
US6311305B1 (en) 1997-03-06 2001-10-30 T.T.R. Technologies Ltd. Method and system for overriding error correction
US6034897A (en) 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US5953737A (en) 1997-03-31 1999-09-14 Lexar Media, Inc. Method and apparatus for performing erase operations transparent to a solid state storage system
JPH10301719A (ja) * 1997-04-28 1998-11-13 Yamaha Corp ディスクアレイ装置及びそれを用いた情報処理システム
JPH10320270A (ja) 1997-05-15 1998-12-04 Matsushita Electric Ind Co Ltd メモリモジュール
JP3459868B2 (ja) * 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6038619A (en) * 1997-05-29 2000-03-14 International Business Machines Corporation Disk drive initiated data transfers responsive to sequential or near sequential read or write requests
US6578113B2 (en) 1997-06-02 2003-06-10 At&T Corp. Method for cache validation for proxy caches
US6092158A (en) 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6047334A (en) * 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
US6311256B2 (en) 1997-06-30 2001-10-30 Emc Corporation Command insertion and reordering at the same storage controller
US6044438A (en) 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US5893086A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US6298401B1 (en) * 1997-08-11 2001-10-02 Seagate Technology Llc Object oriented storage device having a disc drive controller providing an interface exposing methods which are invoked to access objects stored in a storage media
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6092215A (en) * 1997-09-29 2000-07-18 International Business Machines Corporation System and method for reconstructing data in a storage array system
US6014747A (en) 1997-09-30 2000-01-11 Intel Corporation Method and apparatus for system's and chassis protection utilizing system management interrupts
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6061678A (en) 1997-10-31 2000-05-09 Oracle Corporation Approach for managing access to large objects in database systems using large object indexes
US6205521B1 (en) 1997-11-03 2001-03-20 Compaq Computer Corporation Inclusion map for accelerated cache flush
US6334173B1 (en) 1997-11-17 2001-12-25 Hyundai Electronics Industries Co. Ltd. Combined cache with main memory and a control method thereof
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US6470238B1 (en) 1997-11-26 2002-10-22 Intel Corporation Method and apparatus to control device temperature
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6415373B1 (en) * 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6725331B1 (en) 1998-01-07 2004-04-20 Emc Corporation Method and apparatus for managing the dynamic assignment resources in a data storage system
EP1061449A4 (en) 1998-02-04 2005-12-21 Hitachi Ltd METHOD OF MANAGING ANEMATORY DISK, DISC STRUCTURE AND MEMORY
US6115793A (en) 1998-02-11 2000-09-05 Ati Technologies, Inc. Mapping logical cache indexes to physical cache indexes to reduce thrashing and increase cache size
US6292844B1 (en) 1998-02-12 2001-09-18 Sony Corporation Media storage device with embedded data filter for dynamically processing data during read and write operations
US7200623B2 (en) 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US6295581B1 (en) 1998-02-20 2001-09-25 Ati Technologies, Inc. Method and apparatus for assuring cache coherency
US6112319A (en) * 1998-02-20 2000-08-29 Micron Electronics, Inc. Method and system for verifying the accuracy of stored data
US5969986A (en) * 1998-06-23 1999-10-19 Invox Technology High-bandwidth read and write architectures for non-volatile memories
US6295577B1 (en) 1998-02-24 2001-09-25 Seagate Technology Llc Disc storage system having a non-volatile cache to store write data in the event of a power failure
US6170042B1 (en) * 1998-02-24 2001-01-02 Seagate Technology Llc Disc drive data storage system and method for dynamically scheduling queued commands
US6170063B1 (en) 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
US7188001B2 (en) * 1998-03-23 2007-03-06 Cepheid System and method for temperature control
US6157963A (en) * 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
US6138125A (en) * 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
JP4398589B2 (ja) * 1998-04-01 2010-01-13 ヒューレット・パッカード・カンパニー データ記憶装置およびその方法
US6209003B1 (en) 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
US6467022B1 (en) * 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
US6101601A (en) * 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6219751B1 (en) * 1998-04-28 2001-04-17 International Business Machines Corporation Device level coordination of access operations among multiple raid control units
US6321263B1 (en) * 1998-05-11 2001-11-20 International Business Machines Corporation Client-based application availability
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6061511A (en) * 1998-06-12 2000-05-09 Ikos Systems, Inc. Reconstruction engine for a hardware circuit emulator
US6883063B2 (en) * 1998-06-30 2005-04-19 Emc Corporation Method and apparatus for initializing logical objects in a data storage system
JP2000020490A (ja) 1998-07-01 2000-01-21 Fujitsu Ltd 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
US6505305B1 (en) * 1998-07-16 2003-01-07 Compaq Information Technologies Group, L.P. Fail-over of multiple memory blocks in multiple memory modules in computer system
US6185654B1 (en) * 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
GB2368415B (en) 1998-07-21 2002-10-30 Seagate Technology Llc Improved memory system apparatus and method
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US7170906B2 (en) 1998-07-22 2007-01-30 Synchrodyne Networks, Inc. Time-based grooming and degrooming methods with common time reference for optical networks
US6374266B1 (en) * 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
US20010042195A1 (en) 1998-08-04 2001-11-15 Ralph M. Kling Method and apparatus for performing predicate prediction
US6353878B1 (en) 1998-08-13 2002-03-05 Emc Corporation Remote control of backup media in a secondary storage subsystem through access to a primary storage subsystem
US6269382B1 (en) 1998-08-31 2001-07-31 Microsoft Corporation Systems and methods for migration and recall of data from local and remote storage
JP2000076117A (ja) * 1998-08-31 2000-03-14 Kano Densan Hongkong Yugenkoshi 電子機器及びその制御方法及び記憶媒体
US6209088B1 (en) * 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
KR100331542B1 (ko) * 1998-10-09 2002-06-20 윤종용 불량메모리셀어레이블락들을스킵할수있는어드레스디코더를구비하는반도체메모리장치및이를사용하는복합반도체장치
JP2000122814A (ja) * 1998-10-15 2000-04-28 Hitachi Ltd 拡張型ネットワーク接続二次記憶方法及び装置
KR100285967B1 (ko) 1998-10-20 2001-04-16 윤덕용 플래쉬 메모리를 이용한 데이터 저장장치 및 방법
FR2785693B1 (fr) 1998-11-06 2000-12-15 Bull Sa Dispositif et procede de cache disque securise en ecriture pour disques durs de sous-systeme a memoire de masse
US6928505B1 (en) 1998-11-12 2005-08-09 Edwin E. Klingman USB device controller
US6279041B1 (en) 1998-11-13 2001-08-21 International Business Machines Corporation Methods, systems and computer program products for differencing data communications using a message queue
US6034882A (en) * 1998-11-16 2000-03-07 Matrix Semiconductor, Inc. Vertically stacked field programmable nonvolatile memory and method of fabrication
AU2158900A (en) 1998-11-25 2000-06-19 Sun Microsystems, Inc. A method for enabling comprehensive profiling of garbage-collected memory systems
US6470436B1 (en) 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
US7233977B2 (en) 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6189078B1 (en) 1998-12-22 2001-02-13 Unisys Corporation System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6601151B1 (en) * 1999-02-08 2003-07-29 Sun Microsystems, Inc. Apparatus and method for handling memory access requests in a data processing system
US6618451B1 (en) 1999-02-13 2003-09-09 Altocom Inc Efficient reduced state maximum likelihood sequence estimator
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6571312B1 (en) * 1999-02-19 2003-05-27 Mitsubishi Denki Kabushiki Kaisha Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6795890B1 (en) 1999-02-19 2004-09-21 Mitsubishi Denki Kabushiki Kaisha Data storage method, and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6347341B1 (en) * 1999-02-22 2002-02-12 International Business Machines Corporation Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device
US6412080B1 (en) * 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
US6321345B1 (en) * 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
MY122279A (en) * 1999-03-03 2006-04-29 Sony Corp Nonvolatile memory and nonvolatile memory reproducing apparatus
JP2000259525A (ja) 1999-03-10 2000-09-22 Nec Corp 通信プロトコルにおける応答返却方法および通信制御装置
US6295571B1 (en) 1999-03-19 2001-09-25 Times N Systems, Inc. Shared memory apparatus and method for multiprocessor systems
US6535869B1 (en) 1999-03-23 2003-03-18 International Business Machines Corporation Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
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
EP1729304B1 (en) * 1999-04-01 2012-10-17 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6412030B1 (en) 1999-04-16 2002-06-25 Koninklijke Philips Electronics N.V. System and method to optimize read performance while accepting write data in a PCI bus architecture
US6535949B1 (en) 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
US6105076A (en) * 1999-04-23 2000-08-15 International Business Machines Corporation Method, system, and program for performing data transfer operations on user data
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US6341289B1 (en) * 1999-05-06 2002-01-22 International Business Machines Corporation Object identity and partitioning for user defined extents
US6849480B1 (en) 1999-05-07 2005-02-01 Seagate Technology Llc Surface mount IC stacking method and device
US6535997B1 (en) 1999-05-19 2003-03-18 International Business Machines Corporation Data integrity in smartcard transactions
US7194740B1 (en) * 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
JP4106811B2 (ja) 1999-06-10 2008-06-25 富士通株式会社 半導体記憶装置及び電子装置
TW443083B (en) 1999-06-23 2001-06-23 Asustek Comp Inc Printed circuit board structure
US6557084B2 (en) 1999-07-13 2003-04-29 International Business Machines Corporation Apparatus and method to improve performance of reads from and writes to shared memory locations
US6513112B1 (en) 1999-07-26 2003-01-28 Microsoft Corporation System and apparatus for administration of configuration information using a catalog server object to describe and manage requested configuration information to be stored in a table object
US20040230710A1 (en) 1999-07-27 2004-11-18 Inline Connection Corporation System and method of automatic installation of computer peripherals
EP1073064A1 (en) * 1999-07-30 2001-01-31 STMicroelectronics S.r.l. Non-volatile memory with the functional capability of simultaneous modification of the contents and burst mode read or page mode read
JP2001043031A (ja) * 1999-07-30 2001-02-16 Toshiba Corp 分散パリティ生成機能を備えたディスクアレイ制御装置
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US8078794B2 (en) 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US7889544B2 (en) 2004-04-05 2011-02-15 Super Talent Electronics, Inc. High-speed controller for phase-change memory peripheral device
US7620769B2 (en) 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
US7457897B1 (en) * 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
JP3756708B2 (ja) * 1999-09-30 2006-03-15 株式会社東芝 情報処理端末装置およびそのファイル管理方法
US6779145B1 (en) * 1999-10-01 2004-08-17 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6401175B1 (en) * 1999-10-01 2002-06-04 Sun Microsystems, Inc. Shared write buffer for use by multiple processor units
US6742078B1 (en) * 1999-10-05 2004-05-25 Feiya Technology Corp. Management, data link structure and calculating method for flash memory
ATE247296T1 (de) * 1999-10-25 2003-08-15 Sun Microsystems Inc Speichersystem mit unterstützung von dateistufenzugriffen und blockstufenzugriffen
AU2746001A (en) 1999-10-25 2001-05-08 Infolibria, Inc. Fast indexing of web objects
US6496366B1 (en) 1999-10-26 2002-12-17 Rackable Systems, Llc High density computer equipment storage system
US6850408B1 (en) 1999-10-26 2005-02-01 Rackable Systems, Inc. High density computer equipment storage systems
US6278633B1 (en) 1999-11-05 2001-08-21 Multi Level Memory Technology High bandwidth flash memory that selects programming parameters according to measurements of previous programming operations
US6684274B1 (en) 1999-11-09 2004-01-27 Sun Microsystems, Inc. Host bus adapter based scalable performance storage architecture
US20020049883A1 (en) 1999-11-29 2002-04-25 Eric Schneider System and method for restoring a computer system after a failure
US6405201B1 (en) * 1999-12-02 2002-06-11 Sun Microsystems, Inc. Method and apparatus for reducing network traffic for remote file append operations
DE19961499A1 (de) 1999-12-20 2001-07-05 Ericsson Telefon Ab L M Caching von Objekten in Platten-gestützten Datenbanken
US7024695B1 (en) * 1999-12-30 2006-04-04 Intel Corporation Method and apparatus for secure remote system management
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US20060161725A1 (en) 2005-01-20 2006-07-20 Lee Charles C Multiple function flash memory system
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US20080195798A1 (en) 2000-01-06 2008-08-14 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems and Methods Thereof
US20050204187A1 (en) 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US20080320209A1 (en) 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US6779080B2 (en) * 2000-01-11 2004-08-17 International Business Machines Corporation Serial data storage system with automatically adjusted data protection to implement worm media with limited overwrite allowing write appending
TW504694B (en) 2000-01-12 2002-10-01 Hitachi Ltd Non-volatile semiconductor memory device and semiconductor disk device
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6757291B1 (en) * 2000-02-10 2004-06-29 Simpletech, Inc. System for bypassing a server to achieve higher throughput between data network and data storage system
USD475705S1 (en) 2000-02-18 2003-06-10 Rackable Systems, Inc. Computer chassis for dual, opposing main boards
EP1128267A1 (en) * 2000-02-25 2001-08-29 Hewlett-Packard Company, A Delaware Corporation Disk storage system having redundant solid state data storage devices
EP1130516A1 (en) 2000-03-01 2001-09-05 Hewlett-Packard Company, A Delaware Corporation Address mapping in solid state storage device
JP2001250044A (ja) * 2000-03-07 2001-09-14 Nec Corp 電子商取引システム、電子商取引方法、及び電子商取引プログラムを記録する記録媒体
US6609212B1 (en) 2000-03-09 2003-08-19 International Business Machines Corporation Apparatus and method for sharing predictive failure information on a computer network
US6240040B1 (en) * 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US6587937B1 (en) 2000-03-31 2003-07-01 Rockwell Collins, Inc. Multiple virtual machine system with efficient cache memory design
US6823398B1 (en) * 2000-03-31 2004-11-23 Dphi Acquisitions, Inc. File system management embedded in a storage device
JP2001297316A (ja) 2000-04-14 2001-10-26 Mitsubishi Electric Corp メモリカード及びその制御方法
US6523102B1 (en) * 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US7089391B2 (en) * 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6643748B1 (en) * 2000-04-20 2003-11-04 Microsoft Corporation Programmatic masking of storage units
US6487636B1 (en) 2000-04-24 2002-11-26 Hewlett-Packard Co. Method and apparatus for mapping data in a heterogeneous disk array storage system
US6697797B1 (en) 2000-04-28 2004-02-24 Micro Data Base Systems, Inc. Method and apparatus for tracking data in a database, employing last-known location registers
US6420215B1 (en) 2000-04-28 2002-07-16 Matrix Semiconductor, Inc. Three-dimensional memory array and method of fabrication
KR100399034B1 (ko) 2000-05-02 2003-09-22 한국과학기술원 효율적 메모리 셀 어레이 관리 방법
JP4601119B2 (ja) * 2000-05-02 2010-12-22 株式会社アドバンテスト メモリ試験方法・メモリ試験装置
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US7720928B2 (en) 2000-06-02 2010-05-18 Hewlett-Packard Development Company, L.P. Centralized fine-grained enhancements for distributed table driven I/O mapping
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6751769B2 (en) 2000-06-06 2004-06-15 International Business Machines Corporation (146,130) error correction code utilizing address information
US6532527B2 (en) 2000-06-19 2003-03-11 Storage Technology Corporation Using current recovery mechanisms to implement dynamic mapping operations
US6779094B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
AU2001275147A1 (en) 2000-06-23 2002-01-08 Intel Corporation Non-volatile cache
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6859824B1 (en) 2000-06-30 2005-02-22 Hitachi, Ltd. Storage system connected to a data network with data integrity
US6525926B1 (en) 2000-07-11 2003-02-25 Racklogic Technologies, Inc. Multinode high density computing apparatus
US6981070B1 (en) * 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6567307B1 (en) * 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6675318B1 (en) * 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6892298B2 (en) 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
US6883044B1 (en) 2000-07-28 2005-04-19 Micron Technology, Inc. Synchronous flash memory with simultaneous access to one or more banks
US7085445B2 (en) 2000-08-04 2006-08-01 Seungug Koh Micro-opto-electro-mechanical waveguide switches
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP4397109B2 (ja) * 2000-08-14 2010-01-13 富士通株式会社 情報処理装置及びクロスバーボードユニット・バックパネル組立体の製造方法
CN101179079B (zh) * 2000-08-14 2010-11-03 矩阵半导体公司 密集阵列和电荷存储器件及其制造方法
JP2002056671A (ja) * 2000-08-14 2002-02-22 Hitachi Ltd ダイナミック型ramのデータ保持方法と半導体集積回路装置
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US7155559B1 (en) 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
US6728866B1 (en) 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
US6883079B1 (en) * 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
EP1410555A4 (en) 2000-09-11 2004-12-22 Jinglong F Zhang METHOD AND DEVICE, THE OR THE SINGLE-SIDED TRANSFORMATIONS USED
US20040236798A1 (en) 2001-09-11 2004-11-25 Sudhir Srinivasan Migration of control in a distributed segmented file system
US6625685B1 (en) * 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US6725342B1 (en) 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
JP3922516B2 (ja) 2000-09-28 2007-05-30 株式会社ルネサステクノロジ 不揮発性メモリと不揮発性メモリの書き込み方法
US6745284B1 (en) 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
JP4413406B2 (ja) 2000-10-03 2010-02-10 株式会社東芝 不揮発性半導体メモリ及びそのテスト方法
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
DE60041263D1 (de) * 2000-10-18 2009-02-12 St Microelectronics Srl Verschachtelte Speichereinrichtung mit willkürlichem und sequentiellem Zugriff
US6594712B1 (en) * 2000-10-20 2003-07-15 Banderacom, Inc. Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link
US20030021417A1 (en) * 2000-10-20 2003-01-30 Ognjen Vasic Hidden link dynamic key manager for use in computer systems with database structure for storage of encrypted data and method for storage and retrieval of encrypted data
US6779088B1 (en) * 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US7185162B1 (en) 2000-10-26 2007-02-27 Cypress Semiconductor Corporation Method and apparatus for programming a flash memory
US7248691B1 (en) 2000-10-31 2007-07-24 Microsoft Corporation Hashing using multiple sub-hashes
US6694453B1 (en) 2000-11-14 2004-02-17 Hewlett-Packard Development Company, L.P. Apparatus and method to handle power supply failures for a peripheral device
US6549987B1 (en) 2000-11-16 2003-04-15 Intel Corporation Cache structure for storing variable length data
US7257129B2 (en) * 2000-11-22 2007-08-14 Silicon Image Memory architecture with multiple serial communications ports
JP4216457B2 (ja) 2000-11-30 2009-01-28 富士通マイクロエレクトロニクス株式会社 半導体記憶装置及び半導体装置
US6564288B2 (en) 2000-11-30 2003-05-13 Hewlett-Packard Company Memory controller with temperature sensors
US6745310B2 (en) * 2000-12-01 2004-06-01 Yan Chiew Chow Real time local and remote management of data files and directories and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
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
JP2002184190A (ja) 2000-12-11 2002-06-28 Toshiba Corp 不揮発性半導体記憶装置
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US20020108016A1 (en) * 2000-12-13 2002-08-08 Seagate Technology Llc System for characterizing performance of data handling systems under particular stimuli
US6938252B2 (en) 2000-12-14 2005-08-30 International Business Machines Corporation Hardware-assisted method for scheduling threads using data cache locality
SE0004736D0 (sv) * 2000-12-20 2000-12-20 Ericsson Telefon Ab L M Mapping system and method
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
US7107480B1 (en) 2000-12-22 2006-09-12 Simpletech, Inc. System and method for preventing data corruption in solid-state memory devices after a power failure
US6611836B2 (en) 2000-12-26 2003-08-26 Simdesk Technologies, Inc. Server-side recycle bin system
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
DE60041199D1 (de) 2000-12-29 2009-02-05 St Microelectronics Srl Programmierverfahren für nichtflüchtigen Speicher
KR100708475B1 (ko) * 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
US6553472B2 (en) 2001-01-12 2003-04-22 Sun Microsystems, Inc. Method for programming clock delays, command delays, read command parameter delays, and write command parameter delays of a memory controller in a high performance microprocessor
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
GB2383853A (en) * 2001-01-26 2003-07-09 Xmg Ltd A method system and apparatus for networking devices over an asynchronous network such as the internet
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020161846A1 (en) * 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US6606690B2 (en) 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US20040233910A1 (en) 2001-02-23 2004-11-25 Wen-Shyen Chen Storage area network using a data communication protocol
US6795895B2 (en) * 2001-03-07 2004-09-21 Canopy Group Dual axis RAID systems for enhanced bandwidth and reliability
US6802023B2 (en) 2001-03-15 2004-10-05 Hewlett-Packard Development Company, L.P. Redundant controller data storage system having hot insertion system and method
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
US6965638B2 (en) 2001-04-17 2005-11-15 Texas Instruments Incorporated Increasing performance in modems in presence of noise
US7260820B1 (en) 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
US6742081B2 (en) 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
AU2002305315A1 (en) 2001-05-08 2002-11-18 International Business Machines Corporation 8b/10b encoding and decoding for high speed applications
EP1395904B1 (en) * 2001-05-22 2016-07-20 Accenture Global Services Limited Broadband communications
US6824393B2 (en) * 2001-05-29 2004-11-30 International Business Machines Corporation Fragmented backplane system for I/O applications
US7062644B2 (en) * 2001-05-30 2006-06-13 International Business Machines Corporation Method, system, and program for initializing a storage device comprising multiple storage units through a storage controller
US6684301B1 (en) 2001-05-31 2004-01-27 Lsi Logic Corporation Out of order execution memory access request FIFO
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
US6876656B2 (en) * 2001-06-15 2005-04-05 Broadcom Corporation Switch assisted frame aliasing for storage virtualization
JP3976227B2 (ja) * 2001-06-18 2007-09-12 日立ソフトウエアエンジニアリング株式会社 端末のデータ消去管理方法及びプログラム。
US7107430B2 (en) 2001-06-19 2006-09-12 Massachusetts Institute Of Technology Mechanism to reduce the cost of forwarding pointer aliasing
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2003006041A (ja) 2001-06-20 2003-01-10 Hitachi Ltd 半導体装置
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6694281B2 (en) * 2001-07-12 2004-02-17 Seagate Technology Llc Real time signal analysis of a remote block data storage device
US7076510B2 (en) * 2001-07-12 2006-07-11 Brown William P Software raid methods and apparatuses including server usage based write delegation
US6950966B2 (en) * 2001-07-17 2005-09-27 Seachange International, Inc. Data transmission from raid services
US7036068B2 (en) 2001-07-25 2006-04-25 Hewlett-Packard Development Company, L.P. Error correction coding and decoding in a solid-state storage device
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US6556440B2 (en) 2001-07-26 2003-04-29 Dell Products L.P. Dishrack shroud for shielding and cooling
JP4156817B2 (ja) 2001-07-27 2008-09-24 株式会社日立製作所 記憶装置システム
US6996668B2 (en) 2001-08-06 2006-02-07 Seagate Technology Llc Synchronized mirrored data in a data storage device
US20030033463A1 (en) * 2001-08-10 2003-02-13 Garnett Paul J. Computer system storage
US6525953B1 (en) 2001-08-13 2003-02-25 Matrix Semiconductor, Inc. Vertically-stacked, field-programmable, nonvolatile memory and method of fabrication
US7165005B2 (en) * 2001-08-14 2007-01-16 National Instruments Corporation Measurement module interface protocol database and registration system
US7013232B2 (en) * 2001-08-15 2006-03-14 National Insurance Corporation Network-based system for configuring a measurement system using configuration information generated based on a user specification
WO2003022024A1 (fr) 2001-08-30 2003-03-13 Fujitsu Limited Unite de circuit imprime et appareil electronique
US6735546B2 (en) 2001-08-31 2004-05-11 Matrix Semiconductor, Inc. Memory device and method for temperature-based control over write and/or read operations
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US7177197B2 (en) 2001-09-17 2007-02-13 Sandisk Corporation Latched programming of memory and method
US6845465B2 (en) 2001-09-17 2005-01-18 Sun Microsystems, Inc. Method and system for leveraging spares in a data storage system including a plurality of disk drives
KR100437610B1 (ko) 2001-09-20 2004-06-30 주식회사 하이닉스반도체 정상 모드와 부분 어레이 셀프 리프레쉬 모드를 갖는저전력 반도체 메모리 장치
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US20030058681A1 (en) 2001-09-27 2003-03-27 Intel Corporation Mechanism for efficient wearout counters in destructive readout memory
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US6823417B2 (en) 2001-10-01 2004-11-23 Hewlett-Packard Development Company, L.P. Memory controller for memory card manages file allocation table
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US6515909B1 (en) 2001-10-05 2003-02-04 Micron Technology Inc. Flash memory device with a variable erase pulse
US7000063B2 (en) 2001-10-05 2006-02-14 Matrix Semiconductor, Inc. Write-many memory device and method for limiting a number of writes to the write-many memory device
US6643181B2 (en) 2001-10-24 2003-11-04 Saifun Semiconductors Ltd. Method for erasing a memory cell
US6552955B1 (en) 2001-10-30 2003-04-22 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device with reduced power consumption
US6710901B2 (en) * 2001-11-02 2004-03-23 Canadian Production Promotion Group Inc. Method and apparatus for two-photon, volumetric spatially resolved holographic data storage in photosensitive glass
US6754800B2 (en) 2001-11-14 2004-06-22 Sun Microsystems, Inc. Methods and apparatus for implementing host-based object storage schemes
US20030093741A1 (en) * 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6977847B2 (en) 2001-11-23 2005-12-20 M-Systems Flash Disk Pioneers Ltd. Detecting partially erased units in flash devices
US7136436B2 (en) 2001-11-28 2006-11-14 Texas Instruments Incorporated Boundary detection using multiple correlations
US6715046B1 (en) * 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US6883068B2 (en) 2001-12-17 2005-04-19 Sun Microsystems, Inc. Methods and apparatus for implementing a chche replacement scheme
US7548975B2 (en) 2002-01-09 2009-06-16 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network through a virtual enclosure
US7036043B2 (en) 2001-12-28 2006-04-25 Storage Technology Corporation Data management with virtual recovery mapping and backward moves
US6839819B2 (en) 2001-12-28 2005-01-04 Storage Technology Corporation Data management appliance
US6697076B1 (en) 2001-12-31 2004-02-24 Apple Computer, Inc. Method and apparatus for address re-mapping
US6925573B2 (en) 2002-01-02 2005-08-02 Intel Corporation Method and apparatus to manage use of system power within a given specification
US6785078B2 (en) 2002-01-04 2004-08-31 International Business Machines Corporation Concurrent read and write access to simulated sequential data of a removable random access data storage medium
US7290109B2 (en) * 2002-01-09 2007-10-30 Renesas Technology Corp. Memory system and memory card
US20030130969A1 (en) 2002-01-10 2003-07-10 Intel Corporation Star intelligent platform management bus topology
US7069349B2 (en) * 2002-01-10 2006-06-27 Intel Corporation IPMI dual-domain controller
TWI257085B (en) 2002-01-21 2006-06-21 Koninkl Philips Electronics Nv Method of encoding and decoding
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) * 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US6839826B2 (en) 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses
US6724640B1 (en) 2002-02-15 2004-04-20 Steve Cooper Blade armor shielding
US6748504B2 (en) 2002-02-15 2004-06-08 International Business Machines Corporation Deferred copy-on-write of a snapshot
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US20030163633A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US7197567B1 (en) 2002-02-28 2007-03-27 Cisco Technology, Inc. Devices, softwares and methods for enabling SIP devices to operate in H.323 networks and H.323 devices to operate in sip networks
JP3722767B2 (ja) * 2002-03-13 2005-11-30 三菱電機インフォメーションテクノロジー株式会社 ハードディスク装置、コンピュータ
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
US7010663B2 (en) 2002-03-22 2006-03-07 Sun Microsystems, Inc. Method and system for dividing a plurality of existing volumes of storage into a plurality of virtual logical units of storage
US6850969B2 (en) * 2002-03-27 2005-02-01 International Business Machined Corporation Lock-free file system
JP4042841B2 (ja) * 2002-03-29 2008-02-06 富士通株式会社 行列演算処理装置
US7421642B2 (en) 2002-04-05 2008-09-02 Seagate Technology Llc Method and apparatus for error detection
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US6948102B2 (en) * 2002-04-29 2005-09-20 International Business Machines Corporation Predictive failure analysis for storage networks
US6707748B2 (en) 2002-05-07 2004-03-16 Ritek Corporation Back up power embodied non-volatile memory device
US7293196B2 (en) 2002-05-08 2007-11-06 Xiotech Corporation Method, apparatus, and system for preserving cache data of redundant storage controllers
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US6751129B1 (en) 2002-05-21 2004-06-15 Sandisk Corporation Efficient read, write methods for multi-state memory
US6898667B2 (en) * 2002-05-23 2005-05-24 Hewlett-Packard Development Company, L.P. Managing data in a multi-level raid storage array
US6766432B2 (en) 2002-05-24 2004-07-20 Sun Microsystems, Inc. Memory management system supporting object deletion in non-volatile memory
US7013364B2 (en) * 2002-05-27 2006-03-14 Hitachi, Ltd. Storage subsystem having plural storage systems and storage selector for selecting one of the storage systems to process an access request
US7318173B1 (en) 2002-06-03 2008-01-08 National Semiconductor Corporation Embedded controller based BIOS boot ROM select
US20030229689A1 (en) 2002-06-06 2003-12-11 Microsoft Corporation Method and system for managing stored data on a computer network
US7944920B2 (en) * 2002-06-11 2011-05-17 Pandya Ashish A Data processing system using internet protocols and RDMA
JP2004021811A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US6894931B2 (en) 2002-06-20 2005-05-17 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7081377B2 (en) 2002-06-27 2006-07-25 Sandisk 3D Llc Three-dimensional memory
US6737675B2 (en) 2002-06-27 2004-05-18 Matrix Semiconductor, Inc. High density 3D rail stack arrays
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP2004030438A (ja) 2002-06-27 2004-01-29 Renesas Technology Corp マイクロコンピュータ
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7305668B2 (en) * 2002-07-31 2007-12-04 Intel Corporation Secure method to perform computer system firmware updates
US6950952B2 (en) * 2002-08-01 2005-09-27 Intel Corporation Dynamic power level control based on a board latch state
US7051152B1 (en) * 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
US7043610B2 (en) 2002-08-19 2006-05-09 Aristos Logic Corporation System and method for maintaining cache coherency without external controller intervention
JP2004086295A (ja) 2002-08-23 2004-03-18 Megawin Technology Co Ltd Nand型フラッシュメモリディスク装置及び論理アドレス検出の方法
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7130979B2 (en) 2002-08-29 2006-10-31 Micron Technology, Inc. Dynamic volume management
US7103731B2 (en) 2002-08-29 2006-09-05 International Business Machines Corporation Method, system, and program for moving data among storage units
US7882081B2 (en) * 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US20040054867A1 (en) * 2002-09-13 2004-03-18 Paulus Stravers Translation lookaside buffer
US7051174B2 (en) 2002-09-24 2006-05-23 International Business Machines Corporation Method, system, and program for restoring data in cache
US20040064558A1 (en) 2002-09-26 2004-04-01 Hitachi Ltd. Resource distribution management method over inter-networks
JP4005895B2 (ja) 2002-09-30 2007-11-14 株式会社東芝 不揮発性半導体メモリ装置
US7219169B2 (en) 2002-09-30 2007-05-15 Sun Microsystems, Inc. Composite DMA disk controller for efficient hardware-assisted data transfer operations
JP4130615B2 (ja) 2003-07-02 2008-08-06 株式会社日立製作所 ストレージ装置を有するネットワークにおける障害情報管理方法及び管理サーバ
US6822878B2 (en) 2002-10-09 2004-11-23 Hewlett-Packard Development Company, L.P. Circuit board support arrangement, method, and method for using the same
US7200758B2 (en) * 2002-10-09 2007-04-03 Intel Corporation Encapsulation of a TCPA trusted platform module functionality within a server management coprocessor subsystem
US7225247B2 (en) * 2002-10-17 2007-05-29 Intel Corporation Serial port redirection using a management controller
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US20040260947A1 (en) * 2002-10-21 2004-12-23 Brady Gerard Anthony Methods and systems for analyzing security events
US6973531B1 (en) 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
JP3929872B2 (ja) 2002-10-30 2007-06-13 株式会社東芝 キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US7415565B2 (en) 2002-10-31 2008-08-19 Ring Technology Enterprises, Llc Methods and systems for a storage system with a program-controlled switch for routing data
US7085953B1 (en) * 2002-11-01 2006-08-01 International Business Machines Corporation Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array
JP4199519B2 (ja) 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US7035974B2 (en) * 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US20040098544A1 (en) * 2002-11-15 2004-05-20 Gaither Blaine D. Method and apparatus for managing a memory system
US7254676B2 (en) * 2002-11-15 2007-08-07 Intel Corporation Processor cache memory as RAM for execution of boot code
US6845053B2 (en) 2002-11-15 2005-01-18 Micron Technology, Inc. Power throughput adjustment in flash memory
CN100550155C (zh) 2002-11-18 2009-10-14 松下电器产业株式会社 纠错、纠错编码、数据再现及数据记录的方法及其电路
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US6836434B2 (en) 2002-11-21 2004-12-28 Micron Technology, Inc. Mode selection in a flash memory device
JP2004171411A (ja) 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US7003620B2 (en) 2002-11-26 2006-02-21 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
CA2508141C (en) 2002-12-02 2009-11-03 Silverbrook Research Pty Ltd Dead nozzle compensation
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7324614B2 (en) * 2002-12-18 2008-01-29 Texas Instruments Incorporated High speed decoder
US7552192B2 (en) 2002-12-18 2009-06-23 Ronnie Gerome Carmichael Massively parallel computer network-utilizing MPACT and multipoint parallel server (MPAS) technologies
US7069307B1 (en) 2002-12-20 2006-06-27 Network Appliance, Inc. System and method for inband management of a virtual disk
ES2359558T3 (es) 2002-12-20 2011-05-24 International Business Machines Corporation Sistema y método seguros para gestión de san en un entorno de servidor no seguro.
US6849905B2 (en) * 2002-12-23 2005-02-01 Matrix Semiconductor, Inc. Semiconductor device with localized charge storage dielectric and method of making same
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US7010645B2 (en) 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US6973551B1 (en) 2002-12-30 2005-12-06 Emc Corporation Data storage system having atomic memory operation
US7505321B2 (en) 2002-12-31 2009-03-17 Sandisk 3D Llc Programmable memory array structure incorporating series-connected transistor strings and methods for fabrication and operation of same
US7005350B2 (en) 2002-12-31 2006-02-28 Matrix Semiconductor, Inc. Method for fabricating programmable memory array structures incorporating series-connected transistor strings
EP1435576B1 (en) 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Method and apparatus for block-oriented memory management provided in smart card controllers
US7024551B2 (en) * 2003-01-07 2006-04-04 Sun Microsystems, Inc. Method and apparatus for updating boot code using a system controller
US6816917B2 (en) 2003-01-15 2004-11-09 Hewlett-Packard Development Company, L.P. Storage system with LUN virtualization
JP2004227098A (ja) * 2003-01-20 2004-08-12 Hitachi Ltd 記憶デバイス制御装置の制御方法、及び記憶デバイス制御装置
US7664909B2 (en) 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US7698483B2 (en) 2003-01-21 2010-04-13 Nextio, Inc. Switching apparatus and method for link initialization in a shared I/O environment
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
WO2004077219A2 (en) 2003-01-30 2004-09-10 Vaman Technologies (R & D) Limited System and method of mapping patterns of data, optimising disk read and write, verifying data integrity across clients and servers of different functionality having shared resources
US7107419B1 (en) 2003-02-14 2006-09-12 Google Inc. Systems and methods for performing record append operations
US7065618B1 (en) 2003-02-14 2006-06-20 Google Inc. Leasing scheme for data-modifying operations
US7181569B2 (en) 2003-02-26 2007-02-20 International Business Machines Corporation Method, system, and article of manufacture for writing on sequential storage media
JP2004265162A (ja) * 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
US7526598B2 (en) 2003-03-03 2009-04-28 Sandisk Il, Ltd. Efficient flash memory device driver
US6959369B1 (en) * 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7227959B2 (en) 2003-03-10 2007-06-05 Shure Incorporated Multi-channel digital feedback reducer system
WO2004081794A1 (ja) 2003-03-10 2004-09-23 Sharp Kabushiki Kaisha データ処理装置、データ処理用のプログラムおよび記録媒体
US7076723B2 (en) * 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
JP2004278439A (ja) 2003-03-17 2004-10-07 Toshiba Kyaria Kk 流体機械
JP2004280752A (ja) 2003-03-19 2004-10-07 Sony Corp データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
KR100526178B1 (ko) 2003-03-31 2005-11-03 삼성전자주식회사 플래시 메모리 액세스 장치 및 방법
US7293165B1 (en) * 2003-04-03 2007-11-06 Advanced Micro Devices, Inc. BMC-hosted boot ROM interface
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7987249B2 (en) 2003-04-09 2011-07-26 Intel Corporation Soft system failure recovery for management consoles supporting ASF RMCP
JP2004310621A (ja) 2003-04-10 2004-11-04 Hitachi Ltd 記憶装置システムにおけるファイルアクセス方法及びファイルアクセスのためのプログラム
US6865122B2 (en) * 2003-04-11 2005-03-08 Intel Corporation Reclaiming blocks in a block-alterable memory
CN100342377C (zh) 2003-04-16 2007-10-10 华为技术有限公司 一种提高数据处理效率的方法
US20040207440A1 (en) * 2003-04-17 2004-10-21 Naysen Robertson Electrical circuit for controling another circuit or system
US7661014B2 (en) 2003-04-23 2010-02-09 Dot Hill Systems Corporation Network storage appliance with integrated server and redundant storage controllers
US7281076B2 (en) 2003-04-30 2007-10-09 Hewlett-Packard Development Company, L.P. Form factor converter and tester in an open architecture modular computing system
US20040230866A1 (en) * 2003-04-30 2004-11-18 Hewlett-Packard Development Company, L.P. Test system for testing components of an open architecture modular computing system
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP4270371B2 (ja) 2003-05-09 2009-05-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶システム、制御装置、制御方法、及び、プログラム
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
JP2004348818A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7412449B2 (en) 2003-05-23 2008-08-12 Sap Aktiengesellschaft File object storage and retrieval using hashing techniques
US7035111B1 (en) 2003-05-23 2006-04-25 Hewlett-Packard Development Company, L.P. Circuit board orientation with different width portions
US7388904B2 (en) 2003-06-03 2008-06-17 Vativ Technologies, Inc. Near-end, far-end and echo cancellers in a multi-channel transceiver system
US7434097B2 (en) 2003-06-05 2008-10-07 Copan System, Inc. Method and apparatus for efficient fault-tolerant disk drive replacement in raid storage systems
US7380081B2 (en) 2003-06-06 2008-05-27 Hewlett-Packard Development Company, L.P. Asynchronous data redundancy technique
US7380198B2 (en) * 2003-06-11 2008-05-27 International Business Machines Corporation System and method for detecting write errors in a storage device
US7263607B2 (en) * 2003-06-12 2007-08-28 Microsoft Corporation Categorizing electronic messages based on trust between electronic messaging entities
US7454555B2 (en) 2003-06-12 2008-11-18 Rambus Inc. Apparatus and method including a memory device having multiple sets of memory banks with duplicated data emulating a fast access time, fixed latency memory device
US7243203B2 (en) * 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US7237141B2 (en) 2003-06-19 2007-06-26 Lsi Corporation Method for recovering data from a redundant storage object
KR20060025562A (ko) 2003-06-23 2006-03-21 코닌클리케 필립스 일렉트로닉스 엔.브이. 정보 기록 장치 및 방법
US6906961B2 (en) * 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US7117326B2 (en) 2003-06-26 2006-10-03 Intel Corporation Tracking modifications to a memory
US7437258B2 (en) * 2003-06-26 2008-10-14 Hewlett-Packard Development Company, L.P. Use of I2C programmable clock generator to enable frequency variation under BMC control
US7493226B2 (en) * 2003-06-26 2009-02-17 Hewlett-Packard Development Company, L.P. Method and construct for enabling programmable, integrated system margin testing
US7400996B2 (en) * 2003-06-26 2008-07-15 Benjamin Thomas Percer Use of I2C-based potentiometers to enable voltage rail variation under BMC control
US20040267483A1 (en) * 2003-06-26 2004-12-30 Percer Benjamin Thomas Methods and systems for masking faults in a margin testing environment
US7275098B1 (en) 2003-06-27 2007-09-25 Emc Corporation Methods and apparatus for administering software modules in a storage area network management application
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7010630B2 (en) * 2003-06-30 2006-03-07 International Business Machines Corporation Communicating to system management in a data processing system
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
NZ544882A (en) * 2003-07-24 2008-06-30 Lucidyne Technologies Inc Wood tracking system by identification of surface characteristics
GB0320142D0 (en) 2003-08-28 2003-10-01 Ibm Data storage systems
US7149947B1 (en) * 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US20050055495A1 (en) * 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
JP2005108304A (ja) 2003-09-29 2005-04-21 Toshiba Corp 半導体記憶装置及びその制御方法
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US20050091215A1 (en) 2003-09-29 2005-04-28 Chandra Tushar D. Technique for provisioning storage for servers in an on-demand environment
US20050071461A1 (en) * 2003-09-30 2005-03-31 Intel Corporation Proxy alerting
US7299354B2 (en) * 2003-09-30 2007-11-20 Intel Corporation Method to authenticate clients and hosts to provide secure network boot
IES20030722A2 (en) 2003-10-01 2005-04-06 Yqa Now Ltd A data storage device
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
JP2005115600A (ja) * 2003-10-07 2005-04-28 Hitachi Ltd 情報処理装置及び方法
JP4492084B2 (ja) * 2003-10-07 2010-06-30 株式会社日立製作所 ストレージパス制御方法
US20050080887A1 (en) * 2003-10-08 2005-04-14 Chun-Liang Lee Redundant management control arbitration system
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7127560B2 (en) 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
US20050091452A1 (en) * 2003-10-28 2005-04-28 Ying Chen System and method for reducing data loss in disk arrays by establishing data redundancy on demand
JP4379079B2 (ja) * 2003-10-30 2009-12-09 ソニー株式会社 データ再生処理装置、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7143240B2 (en) 2003-10-31 2006-11-28 International Business Machines Corporation System and method for providing a cost-adaptive cache
US7428691B2 (en) * 2003-11-12 2008-09-23 Norman Ken Ouchi Data recovery from multiple failed data blocks and storage units
US7315923B2 (en) * 2003-11-13 2008-01-01 Commvault Systems, Inc. System and method for combining data streams in pipelined storage operations in a storage network
US7412583B2 (en) * 2003-11-14 2008-08-12 International Business Machines Corporation Virtual incremental storage method
CN100543702C (zh) 2003-11-18 2009-09-23 松下电器产业株式会社 文件记录装置及其控制方法和执行方法
JP4493321B2 (ja) * 2003-11-19 2010-06-30 株式会社日立製作所 ディスクアレイ装置及びデータ退避方法
US7171514B2 (en) 2003-11-20 2007-01-30 International Business Machines Corporation Apparatus and method to control access to logical volumes using parallel access volumes
US20050114595A1 (en) 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
US8112574B2 (en) 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7162571B2 (en) 2003-12-09 2007-01-09 Emc Corporation Methods and apparatus for parsing a content address to facilitate selection of a physical storage location in a data storage system
US8892821B2 (en) 2003-12-10 2014-11-18 International Business Machines Corporation Method and system for thread-based memory speculation in a memory subsystem of a data processing system
US7350127B2 (en) * 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7822790B2 (en) * 2003-12-23 2010-10-26 International Business Machines Corporation Relative positioning and access of memory objects
US7464100B2 (en) 2003-12-24 2008-12-09 Sap Ag Reorganization-free mapping of objects in databases using a mapping chain
JP4111910B2 (ja) * 2003-12-26 2008-07-02 富士通株式会社 ディスクキャッシュ装置
US7281114B2 (en) 2003-12-26 2007-10-09 Tdk Corporation Memory controller, flash memory system, and method of controlling operation for data exchange between host system and flash memory
US7418490B1 (en) * 2003-12-29 2008-08-26 Sun Microsystems, Inc. System using multiple sets of device management policies for managing network devices connected on different network interfaces
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8504798B2 (en) 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7162560B2 (en) 2003-12-31 2007-01-09 Intel Corporation Partitionable multiprocessor system having programmable interrupt controllers
US8250295B2 (en) 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
JP2005196410A (ja) * 2004-01-06 2005-07-21 Sony Corp データ通信装置及びデータ通信装置のメモリ管理方法
JP4401788B2 (ja) * 2004-01-06 2010-01-20 株式会社日立製作所 ストレージ制御装置
US20050154786A1 (en) * 2004-01-09 2005-07-14 International Business Machines Corporation Ordering updates in remote copying of data
US7188229B2 (en) 2004-01-17 2007-03-06 Sun Microsystems, Inc. Method and apparatus for memory management in a multi-processor computer system
US7328307B2 (en) * 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
JP4496790B2 (ja) * 2004-01-26 2010-07-07 ソニー株式会社 データ記憶装置及び方法、並びに記録再生システム
US7042664B2 (en) 2004-01-26 2006-05-09 Seagate Technology Llc Method and system for host programmable data storage device self-testing
JP4477365B2 (ja) 2004-01-29 2010-06-09 株式会社日立製作所 複数インタフェースを有する記憶装置、および、その記憶装置の制御方法
US7064994B1 (en) 2004-01-30 2006-06-20 Sun Microsystems, Inc. Dynamic memory throttling for power and thermal limitations
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
JP4524120B2 (ja) 2004-02-03 2010-08-11 富士通株式会社 ブレード型光伝送装置
JP2005222234A (ja) 2004-02-04 2005-08-18 Seiko Epson Corp メディア変換装置、ネットワーク型ダイレクト出力システム、および出力処理指示の転送方法
US7130956B2 (en) * 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
US7873693B1 (en) * 2004-02-13 2011-01-18 Habanero Holdings, Inc. Multi-chassis fabric-backplane enterprise servers
CN100468362C (zh) * 2004-02-20 2009-03-11 西门子能量及自动化公司 用于初始化和利用plc的存储装置的方法
US7394271B2 (en) * 2004-02-27 2008-07-01 Wells-Cti, Llc Temperature sensing and prediction in IC sockets
DE102004011201B4 (de) * 2004-03-04 2006-10-12 Siemens Ag Verfahren zum Management und zur Überwachung des Betriebs mehrerer in wenigstens ein Kommunikationsnetz eingebundener verteilter Hard- und/oder Softwaresysteme sowie System zur Durchführung des Verfahrens
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7532537B2 (en) 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7260695B2 (en) 2004-03-05 2007-08-21 International Business Machines Corporation Scanning modified data during power loss
US20080082736A1 (en) 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
US20050201306A1 (en) * 2004-03-15 2005-09-15 Engel Glenn R. Method and system for supplying power to multiple devices using power-transmitting network connections
US7165144B2 (en) 2004-03-19 2007-01-16 Intel Corporation Managing input/output (I/O) requests in a cache memory system
US7720864B1 (en) 2004-03-25 2010-05-18 Symantec Operating Corporation Expiration of access tokens for quiescing a distributed system
JP2005316951A (ja) * 2004-03-30 2005-11-10 Seiko Epson Corp 情報端末、情報処理システム、及び、これらの制御方法
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
US7281192B2 (en) * 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7788460B2 (en) * 2004-04-13 2010-08-31 Intel Corporation Defragmenting objects in a storage medium
US7224545B2 (en) * 2004-04-15 2007-05-29 Quantum Corporation Methods and systems for overwrite protected storage media
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
KR100647370B1 (ko) * 2004-04-20 2006-11-23 주식회사 하이닉스반도체 멀티 프로토콜 시리얼 인터페이스 시스템
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
CA2564844C (en) * 2004-04-26 2014-12-09 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US8374175B2 (en) * 2004-04-27 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for remote direct memory access over a network switch fabric
US7412614B2 (en) 2004-04-29 2008-08-12 Hewlett-Packard Development Company, L.P. Power management using a pre-determined thermal characteristic of a memory module
US7430571B2 (en) 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7773521B2 (en) 2004-04-30 2010-08-10 Emc Corporation Storage switch traffic bandwidth control
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7370163B2 (en) 2004-05-03 2008-05-06 Gemini Storage Adaptive cache engine for storage area network including systems and methods related thereto
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
TWI255426B (en) 2004-05-18 2006-05-21 Carry Computer Eng Co Ltd Storage control apparatus capable of analyzing volume information and the control method thereof
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
WO2005114374A2 (en) * 2004-05-21 2005-12-01 Computer Associates Think, Inc. Object-based storage
JP2005339198A (ja) 2004-05-27 2005-12-08 Internatl Business Mach Corp <Ibm> キャッシュヒット率推定装置、キャッシュヒット率推定方法、プログラム及び記録媒体
US7009889B2 (en) 2004-05-28 2006-03-07 Sandisk Corporation Comprehensive erase verification for non-volatile memory
US7904181B2 (en) 2004-06-01 2011-03-08 Ils Technology Llc Model for communication between manufacturing and enterprise levels
JP2005346321A (ja) 2004-06-02 2005-12-15 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置のバッテリ出力制御方法
US7502369B2 (en) * 2004-06-02 2009-03-10 Intel Corporation High speed interface systems and methods
US7590522B2 (en) * 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7734643B1 (en) 2004-06-30 2010-06-08 Oracle America, Inc. Method for distributed storage of data
US7386890B2 (en) 2004-06-30 2008-06-10 Intel Corporation Method and apparatus to preserve a hash value of an executable module
US7045717B2 (en) 2004-06-30 2006-05-16 International Business Machines Corporation High speed cable interconnect to a computer midplane
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
JP2006023854A (ja) * 2004-07-06 2006-01-26 Sharp Corp 情報処理装置、記憶装置、記憶制御装置及びプログラム
JP2006031268A (ja) * 2004-07-14 2006-02-02 Sharp Corp 情報処理装置、及び記憶制御装置
US7177883B2 (en) * 2004-07-15 2007-02-13 Hitachi, Ltd. Method and apparatus for hierarchical storage management based on data value and user interest
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7594471B2 (en) * 2004-07-21 2009-09-29 Detnet South Africa (Pty) Ltd. Blasting system and method of controlling a blasting operation
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US20060020616A1 (en) 2004-07-22 2006-01-26 Geoffrey Hardy Indexing operational logs in a distributed processing system
US7366852B2 (en) 2004-07-29 2008-04-29 Infortrend Technology, Inc. Method for improving data reading performance and storage system for performing the same
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US7386700B2 (en) 2004-07-30 2008-06-10 Sandisk Il Ltd Virtual-to-physical address translation in a flash file system
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
TWI300186B (en) 2004-07-30 2008-08-21 Mediatek Inc Method and apparatus for data recording with pseudo-merge
US7213125B2 (en) 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
JP2006048506A (ja) * 2004-08-06 2006-02-16 Toshiba Corp プロセッサ、メモリ管理システム及びメモリ管理プログラム
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US20060036904A1 (en) * 2004-08-13 2006-02-16 Gemini Storage Data replication method over a limited bandwidth network by mirroring parities
JP4315876B2 (ja) 2004-08-17 2009-08-19 富士通株式会社 ファイル管理プログラム、ファイル管理方法、及びファイル管理装置
US7340487B2 (en) 2004-08-18 2008-03-04 International Business Machines Corporation Delayed deletion of extended attributes
US7477570B2 (en) 2004-08-20 2009-01-13 Micron Technology, Inc. Sequential access memory with system and method
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US20060047926A1 (en) 2004-08-25 2006-03-02 Zheng Calvin G Managing multiple snapshot copies of data
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
US7241655B2 (en) 2004-08-30 2007-07-10 Micron Technology, Inc. Method of fabricating a vertical wrap-around-gate field-effect-transistor for high density, low voltage logic and memory array
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JP4646574B2 (ja) 2004-08-30 2011-03-09 株式会社日立製作所 データ処理システム
WO2006025322A1 (ja) 2004-08-30 2006-03-09 Matsushita Electric Industrial Co., Ltd. 記録装置
JP4113170B2 (ja) 2004-09-08 2008-07-09 株式会社東芝 半導体装置
JP4192129B2 (ja) 2004-09-13 2008-12-03 株式会社東芝 メモリ管理装置
JP4737438B2 (ja) 2004-09-16 2011-08-03 日本電気株式会社 複数の処理ユニットでリソースを共有する情報処理装置
US7395452B2 (en) 2004-09-24 2008-07-01 Microsoft Corporation Method and system for improved reliability in storage devices
US7062624B2 (en) 2004-09-29 2006-06-13 Hitachi, Ltd. Method for managing volume groups considering storage tiers
US7444493B2 (en) * 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
JP4104586B2 (ja) 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
US8655853B2 (en) 2004-10-01 2014-02-18 Sap Ag System and method for optimizing database transaction termination
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
GB2418769B (en) 2004-10-02 2009-06-17 Hewlett Packard Development Co Method and system for storing data
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US7257690B1 (en) 2004-10-15 2007-08-14 Veritas Operating Corporation Log-structured temporal shadow store
US20060090948A1 (en) 2004-10-18 2006-05-04 Allen Gregory T Driver side airbag detainment and containment device
US7308603B2 (en) 2004-10-18 2007-12-11 International Business Machines Corporation Method and system for reducing memory faults while running an operating system
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
US7328317B2 (en) * 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US7565569B2 (en) * 2004-10-22 2009-07-21 International Business Machines Corporation Data protection in a mass storage system
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
ITMI20042072A1 (it) * 2004-10-29 2005-01-29 St Microelectronics Srl Dispositivo di memoria flsh dotato di interfaccia di comunicazione low pin count
US7318119B2 (en) * 2004-10-29 2008-01-08 International Business Machines Corporation System and method for fault tolerant controller for network RAID
US7310711B2 (en) 2004-10-29 2007-12-18 Hitachi Global Storage Technologies Netherlands B.V. Hard disk drive with support for atomic transactions
KR100645058B1 (ko) 2004-11-03 2006-11-10 삼성전자주식회사 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법
CA2590875C (en) 2004-11-05 2011-09-13 Data Robotics Incorporated Storage system condition indicator and method
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
US7430465B2 (en) * 2004-11-17 2008-09-30 Spx Corporation Open-ended PC host interface for vehicle data recorder
US7475274B2 (en) * 2004-11-17 2009-01-06 Raytheon Company Fault tolerance and recovery in a high-performance computing (HPC) system
US7337277B2 (en) 2004-11-18 2008-02-26 International Business Machines Corporation Apparatus, system, and method for flushing cache data
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US7778984B2 (en) * 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
WO2006057061A1 (ja) 2004-11-29 2006-06-01 Fujitsu Limited 分散トランザクション処理方法、装置、及びプログラム
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
US7668883B2 (en) * 2004-11-30 2010-02-23 Kabushiki Kaisha Toshiba System for secure erasing of files
US7610307B2 (en) 2004-11-30 2009-10-27 Microsoft Corporation Method and system of detecting file system namespace changes and restoring consistency
US20060149954A1 (en) * 2004-12-03 2006-07-06 Matt Hageman Apparatus and method for accommodating different central processing units in a computer
WO2006062511A1 (en) 2004-12-06 2006-06-15 Teac Aerospace Technologies, Inc. System and method of erasing non-volatile recording media
US20060120235A1 (en) * 2004-12-06 2006-06-08 Teac Aerospace Technologies System and method of erasing non-volatile recording media
US8156281B1 (en) 2004-12-07 2012-04-10 Oracle America, Inc. Data storage system and method using storage profiles to define and modify storage pools
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US8495266B2 (en) 2004-12-10 2013-07-23 Hewlett-Packard Development Company, L.P. Distributed lock
US7694298B2 (en) * 2004-12-10 2010-04-06 Intel Corporation Method and apparatus for providing virtual server blades
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
JP3810425B2 (ja) 2004-12-16 2006-08-16 松下電器産業株式会社 改竄検出用データ生成方法、および改竄検出方法及び装置
US7739290B2 (en) 2004-12-17 2010-06-15 Sap (Ag) System and method for object persistence
US20060136685A1 (en) 2004-12-17 2006-06-22 Sanrad Ltd. Method and system to maintain data consistency over an internet small computer system interface (iSCSI) network
KR100662256B1 (ko) * 2004-12-20 2006-12-28 한국전자통신연구원 낮은 프로세스 점유율을 가지는 객체기반 스토리지 장치및 그 제어 방법
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
KR100876084B1 (ko) 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US8301810B2 (en) 2004-12-21 2012-10-30 Infortrend Technology, Inc. SAS storage virtualization controller, subsystem and system using the same, and method therefor
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
US7392429B2 (en) 2004-12-22 2008-06-24 Microsoft Corporation System and method for maintaining persistent state data
US7472309B2 (en) 2004-12-22 2008-12-30 Intel Corporation Methods and apparatus to write a file to a nonvolatile memory
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US20060143209A1 (en) * 2004-12-29 2006-06-29 Zimmer Vincent J Remote management of a computer system
US7441081B2 (en) 2004-12-29 2008-10-21 Lsi Corporation Write-back caching for disk drives
US20060139330A1 (en) * 2004-12-29 2006-06-29 Kutch Patrick G Adaptive mouse re-direction
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
US7254672B1 (en) 2004-12-30 2007-08-07 Storage Technology Corporation Translation device driver for translating between disk device driver and tape device driver commands
CN1277213C (zh) * 2004-12-31 2006-09-27 大唐微电子技术有限公司 一种闪存文件系统管理方法
KR100725390B1 (ko) 2005-01-06 2007-06-07 삼성전자주식회사 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US20060159456A1 (en) 2005-01-18 2006-07-20 Fujitsu Limited System and method for conserving resources in an optical storage area network
US7689599B1 (en) 2005-01-31 2010-03-30 Symantec Operating Corporation Repair of inconsistencies between data and metadata stored on a temporal volume using transaction log replay
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7426649B2 (en) 2005-02-09 2008-09-16 International Business Machines Corporation Power management via DIMM read operation limiter
KR20070102753A (ko) 2005-02-14 2007-10-19 코닌클리케 필립스 일렉트로닉스 엔.브이. 크기가 축소된 메모리 테이블에 의한 블록 인터리빙
US20060184736A1 (en) 2005-02-17 2006-08-17 Benhase Michael T Apparatus, system, and method for storing modified data
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7487343B1 (en) * 2005-03-04 2009-02-03 Netapp, Inc. Method and apparatus for boot image selection and recovery via a remote management module
US7747836B2 (en) 2005-03-08 2010-06-29 Netapp, Inc. Integrated storage virtualization and switch system
US7269534B2 (en) * 2005-03-11 2007-09-11 Dell Products L.P. Method to reduce IPMB traffic and improve performance for accessing sensor data
US8446892B2 (en) 2005-03-16 2013-05-21 Qualcomm Incorporated Channel structures for a quasi-orthogonal multiple-access communication system
US20060212644A1 (en) 2005-03-21 2006-09-21 Acton John D Non-volatile backup for data cache
US8745011B2 (en) 2005-03-22 2014-06-03 International Business Machines Corporation Method and system for scrubbing data within a data storage subsystem
US7486564B2 (en) 2005-03-31 2009-02-03 Sandisk Corporation Soft programming non-volatile memory utilizing individual verification and additional soft programming of subsets of memory cells
US7522457B2 (en) 2005-03-31 2009-04-21 Sandisk Corporation Systems for erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7457166B2 (en) 2005-03-31 2008-11-25 Sandisk Corporation Erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7463521B2 (en) 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
US7702928B2 (en) 2005-04-08 2010-04-20 Hewlett-Packard Development Company, L.P. Memory module with on-board power-consumption monitoring
US7451344B1 (en) 2005-04-08 2008-11-11 Western Digital Technologies, Inc. Optimizing order of error recovery steps in a disk drive
KR101077992B1 (ko) 2005-04-11 2011-10-31 엘지전자 주식회사 홈네트워크 제어 시스템 및 상기 홈네트워크 제어시스템에서의 데이터 흐름 제어 방법
US7620773B2 (en) * 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US7130960B1 (en) 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US9286198B2 (en) 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
US7366825B2 (en) 2005-04-26 2008-04-29 Microsoft Corporation NAND flash memory management
US7743210B1 (en) 2005-04-29 2010-06-22 Netapp, Inc. System and method for implementing atomic cross-stripe write operations in a striped volume set
US7523546B2 (en) 2005-05-04 2009-04-28 Nokia Corporation Method for manufacturing a composite layer for an electronic device
US7370261B2 (en) * 2005-05-09 2008-05-06 International Business Machines Corporation Convolution-encoded raid with trellis-decode-rebuild
US7707232B2 (en) 2005-05-13 2010-04-27 Microsoft Corporation Implementation for collecting unmanaged memory
JP2006324754A (ja) 2005-05-17 2006-11-30 Fujitsu Ltd 最大事後確率復号方法及び復号装置
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7752381B2 (en) * 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
KR101268984B1 (ko) 2005-05-26 2013-05-29 삼성전자주식회사 메타 데이터를 제공하기 위한 애플리케이션이 포함된정보저장매체, 메타 데이터를 제공하는 장치 및 방법
JP2006331158A (ja) 2005-05-27 2006-12-07 Hitachi Ltd ストレージシステム
US20060293045A1 (en) 2005-05-27 2006-12-28 Ladue Christoph K Evolutionary synthesis of a modem for band-limited non-linear channels
US7383392B2 (en) 2005-05-31 2008-06-03 Hewlett-Packard Development Company, L.P. Performing read-ahead operation for a direct input/output request
US7536529B1 (en) 2005-06-10 2009-05-19 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for provisioning space in a data storage system
US7444526B2 (en) 2005-06-16 2008-10-28 International Business Machines Corporation Performance conserving method for reducing power consumption in a server system
US7590799B2 (en) * 2005-06-16 2009-09-15 Seagate Technology Llc OSD deterministic object fragmentation optimization in a disc drive
US7930589B2 (en) 2005-06-17 2011-04-19 Analog Devices, Inc. Interrupt-responsive non-volatile memory system and method
US20060294300A1 (en) 2005-06-22 2006-12-28 Seagate Technology Llc Atomic cache transactions in a distributed storage system
US20070027948A1 (en) * 2005-06-23 2007-02-01 International Business Machines Corporation Server blades connected via a wireless network
US7590796B2 (en) 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US7533330B2 (en) * 2005-06-27 2009-05-12 Seagate Technology Llc Redundancy for storage data structures
US7340665B2 (en) 2005-06-28 2008-03-04 Seagate Technology Llc Shared redundancy in error correcting code
US20070006048A1 (en) 2005-06-29 2007-01-04 Intel Corporation Method and apparatus for predicting memory failure in a memory system
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7743217B2 (en) 2005-06-29 2010-06-22 Stmicroelectronics S.A. Cache consistency in a multiprocessor system with shared memory
US7797479B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US7774542B2 (en) 2005-07-06 2010-08-10 Ji Zhang System and method for adaptive operation of storage capacities of RAID systems
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7555676B2 (en) * 2005-07-18 2009-06-30 Dell Products L.P. Systems and methods for providing remotely accessible in-system emulation and/or debugging
US7895398B2 (en) 2005-07-19 2011-02-22 Dell Products L.P. System and method for dynamically adjusting the caching characteristics for each logical unit of a storage array
US7991940B2 (en) * 2005-07-25 2011-08-02 Surf Communication Solutions Ltd. Communication processor board
JP5162846B2 (ja) 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US20070028051A1 (en) 2005-08-01 2007-02-01 Arm Limited Time and power reduction in cache accesses
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US20070033371A1 (en) * 2005-08-04 2007-02-08 Andrew Dunshea Method and apparatus for establishing a cache footprint for shared processor logical partitions
US8417915B2 (en) 2005-08-05 2013-04-09 Arm Limited Alias management within a virtually indexed and physically tagged cache memory
US7480771B2 (en) 2005-08-17 2009-01-20 Sun Microsystems, Inc. Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7424577B2 (en) 2005-08-26 2008-09-09 Network Appliance, Inc. Dynamic optimization of cache memory
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP4701929B2 (ja) * 2005-09-02 2011-06-15 株式会社日立製作所 ブート構成変更方法、管理サーバ、及び計算機システム
JP2007071805A (ja) 2005-09-09 2007-03-22 Denso Corp 力学量センサの製造方法
US7970015B2 (en) 2005-09-12 2011-06-28 Hob Gmbh & Co. Kg Method for transmitting a message by compressed data transmission between a sender and a receiver via a data network
US20070061508A1 (en) * 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
US7979394B2 (en) 2005-09-20 2011-07-12 Teradata Us, Inc. Method of managing storage and retrieval of data objects
US7523378B2 (en) 2005-09-23 2009-04-21 Intel Corporation Techniques to determine integrity of information
US7424666B2 (en) * 2005-09-26 2008-09-09 Intel Corporation Method and apparatus to detect/manage faults in a system
KR100734629B1 (ko) 2005-09-28 2007-07-03 한국전자통신연구원 부분 캐싱 방법 및 이를 이용한 적응형 콘텐츠 전송 방법
US7652922B2 (en) * 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US8078588B2 (en) 2005-10-10 2011-12-13 Oracle International Corporation Recoverable execution
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
CN1863081B (zh) * 2005-10-14 2010-05-05 华为技术有限公司 基板管理控制器的管理系统和方法
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7457928B2 (en) 2005-10-28 2008-11-25 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US20070100893A1 (en) 2005-10-31 2007-05-03 Sigmatel, Inc. System and method for accessing data from a memory device
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7877554B2 (en) 2005-11-04 2011-01-25 Oracle America, Inc. Method and system for block reallocation
US7634585B2 (en) 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US8782186B2 (en) * 2005-11-12 2014-07-15 Hewlett-Packard Development Company, L.P. Systems and methods for addressing managed elements
US7624239B2 (en) 2005-11-14 2009-11-24 Sandisk Corporation Methods for the management of erase operations in non-volatile memories
US7739472B2 (en) * 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US8799882B2 (en) 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US7415575B1 (en) 2005-12-08 2008-08-19 Nvidia, Corporation Shared cache with client-specific replacement policy
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
TW200722990A (en) * 2005-12-14 2007-06-16 Inventec Corp Power-on self test debugging system and method
US7814479B2 (en) * 2005-12-14 2010-10-12 International Business Machines Corporation Simultaneous download to multiple targets
US7376034B2 (en) 2005-12-15 2008-05-20 Stec, Inc. Parallel data storage system
US7234964B1 (en) * 2005-12-20 2007-06-26 International Business Machines Corporation Systems, methods, and media for providing visual indication of a blade configuration
US8032745B2 (en) * 2005-12-20 2011-10-04 International Business Machines Corporation Authentication of I2C bus transactions
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US20070143567A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143561A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US7440455B2 (en) 2005-12-22 2008-10-21 Level 3 Communications, Llc Registration of multiple VoIP devices
US7673111B2 (en) * 2005-12-23 2010-03-02 Intel Corporation Memory system with both single and consolidated commands
US7907600B2 (en) 2005-12-23 2011-03-15 Qualcomm Incorporated System and method for optimizing robust header compression (ROHC) in high delay variance environment
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US8713551B2 (en) * 2006-01-03 2014-04-29 International Business Machines Corporation Apparatus, system, and method for non-interruptively updating firmware on a redundant hardware controller
US7849454B2 (en) * 2006-01-13 2010-12-07 Dell Products L.P. Automatic firmware corruption recovery and update
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US7793059B2 (en) 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
US8055979B2 (en) 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7827442B2 (en) * 2006-01-23 2010-11-02 Slt Logic Llc Shelf management controller with hardware/software implemented dual redundant configuration
TWM298188U (en) 2006-01-23 2006-09-21 Genesys Logic Inc Control device for accessing Non-Volatile memory
US9002795B2 (en) 2006-01-26 2015-04-07 Seagate Technology Llc Object-based data storage device
US7676666B2 (en) * 2006-02-02 2010-03-09 Dell Products L.P. Virtual BIOS firmware hub
KR100746225B1 (ko) 2006-02-13 2007-08-03 삼성전자주식회사 반도체 메모리 장치 및 이를 구비한 메모리 시스템
KR100746033B1 (ko) 2006-02-17 2007-08-06 삼성전자주식회사 무결성 측정 장치 및 방법
US20070220369A1 (en) * 2006-02-21 2007-09-20 International Business Machines Corporation Fault isolation and availability mechanism for multi-processor system
US8166539B2 (en) * 2006-02-24 2012-04-24 Dell Products L.P. Authentication of baseboard management controller users in a blade server system
KR100781520B1 (ko) 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
JP4392049B2 (ja) 2006-02-27 2009-12-24 富士通株式会社 キャッシュ制御装置およびキャッシュ制御プログラム
KR20070089460A (ko) 2006-02-28 2007-08-31 삼성전자주식회사 우선 순위에 따른 비휘발성 메모리의 연산 처리 장치 및방법
US7852873B2 (en) * 2006-03-01 2010-12-14 Lantronix, Inc. Universal computer management interface
JP2007233903A (ja) * 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US7344439B2 (en) 2006-03-06 2008-03-18 International Business Machines Corporation System, method, and apparatus for distributing air in a blade server
US7747925B2 (en) 2006-03-06 2010-06-29 Fujifilm Corporation Apparatus and method for error correction code striping
US20070208790A1 (en) * 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP2007240904A (ja) 2006-03-09 2007-09-20 Hitachi Ltd プラズマディスプレイ装置
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US20070245217A1 (en) 2006-03-28 2007-10-18 Stmicroelectronics S.R.L. Low-density parity check decoding
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US7562180B2 (en) 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
US7551492B2 (en) 2006-03-29 2009-06-23 Mosaid Technologies, Inc. Non-volatile semiconductor memory with page erase
US7640249B2 (en) 2006-03-29 2009-12-29 Sap (Ag) System and method for transactional session management
US7831778B2 (en) 2006-03-30 2010-11-09 Silicon Image, Inc. Shared nonvolatile memory architecture
JP5188493B2 (ja) 2006-03-30 2013-04-24 シリコン イメージ,インコーポレイテッド 可変のポート速度を有するマルチポート・メモリ・デバイス
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
WO2007116612A1 (ja) * 2006-03-31 2007-10-18 Matsushita Electric Industrial Co., Ltd. コマンド出力制御装置
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US7567472B2 (en) 2006-04-12 2009-07-28 Micron Technology, Inc. Memory block testing
JP4787055B2 (ja) 2006-04-12 2011-10-05 富士通株式会社 情報分割記録機能を持つ情報処理装置
TW200739349A (en) 2006-04-12 2007-10-16 Giga Byte Tech Co Ltd Volatile storage device and serial connection type mixed storage device having the same
US7451264B2 (en) * 2006-04-13 2008-11-11 Sandisk Corporation Cycle count storage methods
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US7509460B2 (en) 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
US7653778B2 (en) * 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7653832B2 (en) 2006-05-08 2010-01-26 Emc Corporation Storage array virtualization using a storage block mapping protocol client and server
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US20070271495A1 (en) 2006-05-18 2007-11-22 Ian Shaeffer System to detect and identify errors in control information, read data and/or write data
US7424587B2 (en) 2006-05-23 2008-09-09 Dataram, Inc. Methods for managing data writes and reads to a hybrid solid-state disk drive
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US7464240B2 (en) 2006-05-23 2008-12-09 Data Ram, Inc. Hybrid solid state disk drive with controller
US7973531B2 (en) 2006-05-30 2011-07-05 Koninklijke Philips Electronics N.V. Detuning a radio-frequency coil
US8453147B2 (en) 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
US20080005222A1 (en) * 2006-06-07 2008-01-03 Lambert Timothy M System and Method for Server Information Handling System Management Through Local I/O Devices
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7694103B1 (en) 2006-06-23 2010-04-06 Emc Corporation Efficient use of memory and accessing of stored records
US7650458B2 (en) 2006-06-23 2010-01-19 Microsoft Corporation Flash memory driver
US8429242B1 (en) 2006-06-26 2013-04-23 Emc Corporation Methods and apparatus for providing content
JP4842719B2 (ja) * 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7660937B2 (en) * 2006-06-28 2010-02-09 Hewlett-Packard Development Company, L.P. Emulating a USB host controller
US7810013B2 (en) 2006-06-30 2010-10-05 Intel Corporation Memory device that reflects back error detection signals
US7644206B2 (en) * 2006-06-30 2010-01-05 Seagate Technology Llc Command queue ordering by positionally pushing access commands
US7970989B2 (en) 2006-06-30 2011-06-28 Intel Corporation Write ordering on disk cached platforms
GB0613192D0 (en) 2006-07-01 2006-08-09 Ibm Methods, apparatus and computer programs for managing persistence
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US7783956B2 (en) 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
US7395390B2 (en) 2006-07-12 2008-07-01 Inventec Corporation System for backing up cache memory in a double backup server structure
US8046629B1 (en) * 2006-07-24 2011-10-25 Marvell World Trade Ltd. File server for redundant array of independent disks (RAID) system
TWI349289B (en) 2006-07-31 2011-09-21 Toshiba Kk Nonvolatile memory system, data read/write method for nonvolatile memory system, data read method for memory system, and data write method for memory system
US7519830B2 (en) 2006-08-03 2009-04-14 Motorola, Inc. Secure storage of data
US8046660B2 (en) 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US8427489B2 (en) * 2006-08-10 2013-04-23 Avocent Huntsville Corporation Rack interface pod with intelligent platform control
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US7478299B2 (en) * 2006-08-14 2009-01-13 International Business Machines Corporation Processor fault isolation
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
US7899800B2 (en) 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7676625B2 (en) 2006-08-23 2010-03-09 Sun Microsystems, Inc. Cross-coupled peripheral component interconnect express switch
US7500078B2 (en) 2006-08-25 2009-03-03 Dell Products L.P. Thermal control of memory modules using proximity information
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7788513B2 (en) 2006-08-29 2010-08-31 Hewlett-Packard Development Company, L.P. Method of reducing power consumption of a computing system by evacuating selective platform memory components thereof
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US7870306B2 (en) * 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
US7774392B2 (en) 2006-09-15 2010-08-10 Sandisk Corporation Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order
US20080077767A1 (en) 2006-09-27 2008-03-27 Khosravi Hormuzd M Method and apparatus for secure page swapping in virtual memory systems
US8806116B2 (en) 2008-02-12 2014-08-12 Virident Systems, Inc. Memory modules for two-dimensional main memory
US7761625B2 (en) 2006-09-28 2010-07-20 Virident Systems, Inc. Methods for main memory with non-volatile type memory modules, and related technologies
US7630225B2 (en) 2006-09-29 2009-12-08 Sandisk Corporation Apparatus combining once-writeable and rewriteable information storage to support data processing
US7573744B2 (en) 2006-09-29 2009-08-11 Kabushiki Kaisha Toshiba Semiconductor memory device having different capacity areas
US7752412B2 (en) 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information
US20080133689A1 (en) 2006-10-05 2008-06-05 Holt John M Silent memory reclamation
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
US7499338B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation Partitioned soft programming in non-volatile memory
US7495954B2 (en) 2006-10-13 2009-02-24 Sandisk Corporation Method for partitioned erase and erase verification to compensate for capacitive coupling effects in non-volatile memory
US7499317B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling
US7535766B2 (en) 2006-10-13 2009-05-19 Sandisk Corporation Systems for partitioned soft programming in non-volatile memory
US9465823B2 (en) 2006-10-19 2016-10-11 Oracle International Corporation System and method for data de-duplication
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
KR100843543B1 (ko) 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
JP4437489B2 (ja) 2006-10-25 2010-03-24 株式会社日立製作所 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
US7958280B2 (en) 2006-10-27 2011-06-07 Stec, Inc. Parallel data transfer in solid-state storage
US7822887B2 (en) 2006-10-27 2010-10-26 Stec, Inc. Multi-channel solid-state storage system
US8122196B2 (en) 2006-10-30 2012-02-21 Netapp, Inc. System and procedure for rapid decompression and/or decryption of securely stored data
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
PL2097794T5 (pl) 2006-11-03 2018-01-31 Air Prod & Chem System i sposób monitorowania procesu
KR100780773B1 (ko) 2006-11-03 2007-11-30 주식회사 하이닉스반도체 플래시 메모리소자의 프로그램 시작 바이어스 설정방법 및이를 이용한 프로그램 방법
US20080109647A1 (en) 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
US7970859B2 (en) * 2006-11-09 2011-06-28 Raritan Americas, Inc. Architecture and method for remote platform control management
US7567462B2 (en) 2006-11-16 2009-07-28 Micron Technology, Inc. Method and system for selectively limiting peak power consumption during programming or erase of non-volatile memory devices
US7877358B2 (en) 2006-11-21 2011-01-25 Microsoft Corporation Replacing system hardware
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
CN100530070C (zh) 2006-11-24 2009-08-19 骆建军 基于flash的硬盘
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US7783830B2 (en) 2006-11-29 2010-08-24 Seagate Technology Llc Solid state device pattern for non-solid state storage media
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
US8595573B2 (en) 2006-12-03 2013-11-26 Apple Inc. Automatic defect management in memory devices
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
CN101622596A (zh) 2006-12-06 2010-01-06 弗森多系统公司(dba弗森-艾奥) 使用空数据令牌指令管理存储设备中的数据的装置、系统和方法
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
TW200825696A (en) 2006-12-15 2008-06-16 Inventec Corp Power management system
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US20080155051A1 (en) 2006-12-23 2008-06-26 Simpletech, Inc. Direct file transfer system and method for a computer network
WO2008077285A1 (en) 2006-12-27 2008-07-03 Intel Corporation Method of managing data on a non-volatile memory
US8060482B2 (en) 2006-12-28 2011-11-15 Intel Corporation Efficient and consistent software transactional memory
US20080162787A1 (en) 2006-12-28 2008-07-03 Andrew Tomlin System for block relinking
KR100811274B1 (ko) 2006-12-28 2008-03-07 주식회사 하이닉스반도체 낸드형 플래쉬 메모리소자의 데이터 소거방법
US7978541B2 (en) 2007-01-02 2011-07-12 Marvell World Trade Ltd. High speed interface for multi-level memory
US8880480B2 (en) 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
US7769945B2 (en) 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7564722B2 (en) 2007-01-22 2009-07-21 Micron Technology, Inc. Memory system and method having volatile and non-volatile memory devices at same hierarchical level
JP4813385B2 (ja) 2007-01-29 2011-11-09 株式会社日立製作所 ストレージシステムの複数の論理リソースを制御する制御装置
US20080183968A1 (en) 2007-01-30 2008-07-31 Chi-Ting Huang Computer system having cache system directly connected to nonvolatile storage device and method thereof
KR100817087B1 (ko) 2007-02-13 2008-03-27 삼성전자주식회사 플래시 메모리를 구비하는 스토리지 장치에서의 버퍼 캐시운용 방법
US20080201535A1 (en) 2007-02-21 2008-08-21 Hitachi, Ltd. Method and Apparatus for Provisioning Storage Volumes
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
WO2008106686A1 (en) 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
US8190778B2 (en) * 2007-03-06 2012-05-29 Intel Corporation Method and apparatus for network filtering and firewall protection on a secure partition
US7502255B2 (en) 2007-03-07 2009-03-10 Sandisk Corporation Method for cache page copy in a non-volatile memory
US7499320B2 (en) 2007-03-07 2009-03-03 Sandisk Corporation Non-volatile memory with cache page copy
US8490148B2 (en) * 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US20080228862A1 (en) * 2007-03-12 2008-09-18 Timothy Mackey Systems and Methods for End-User Experience Monitoring
US20080229046A1 (en) 2007-03-13 2008-09-18 Microsoft Corporation Unified support for solid state storage
KR101395778B1 (ko) 2007-03-14 2014-05-19 삼성전자주식회사 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US7599967B2 (en) 2007-03-20 2009-10-06 Oracle International Corporation No data loss system with reduced commit latency
US7908501B2 (en) 2007-03-23 2011-03-15 Silicon Image, Inc. Progressive power control of a multi-port memory device
US9152349B2 (en) 2007-03-23 2015-10-06 Emc Corporation Automated information life-cycle management with thin provisioning
US20100122017A1 (en) 2007-03-28 2010-05-13 Masayuki Toyama Memory controller, non-volatile memory system, and host device
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US20080244181A1 (en) 2007-03-30 2008-10-02 Michael Walz Dynamic run-time cache size management
JP2008250961A (ja) 2007-03-30 2008-10-16 Nec Corp 記憶媒体の制御装置、データ記憶装置、データ記憶システム、方法、及び制御プログラム
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
WO2008131058A2 (en) 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US7903468B2 (en) 2007-04-23 2011-03-08 Ramot At Telaviv University Ltd. Adaptive dynamic reading of flash memories
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US7606079B2 (en) 2007-04-25 2009-10-20 Sandisk Corporation Reducing power consumption during read operations in non-volatile storage
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8175099B2 (en) * 2007-05-14 2012-05-08 Microsoft Corporation Embedded system development platform
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US7752360B2 (en) 2007-05-16 2010-07-06 Nuova Systems, Inc. Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US9396103B2 (en) 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US20080303692A1 (en) * 2007-06-08 2008-12-11 Tomonori Hirai Method and System for Assigning Identity Addresses to Local Management Modules
US20080320253A1 (en) 2007-06-19 2008-12-25 Andrew Tomlin Memory device with circuitry for writing data of an atomic transaction
US7752389B1 (en) 2007-06-20 2010-07-06 Emc Corporation Techniques for determining physical data layout of RAID devices
US7865761B1 (en) 2007-06-28 2011-01-04 Emc Corporation Accessing multiple non-volatile semiconductor memory modules in an uneven manner
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8046546B2 (en) 2007-07-25 2011-10-25 AGIGA Tech Variable partitioning in a hybrid memory subsystem
US8074034B2 (en) 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
US8028198B2 (en) 2007-07-30 2011-09-27 Micron Technology, Inc. Devices, methods, and apparatuses for detection, sensing, and reporting functionality for semiconductor memory
US8001444B2 (en) 2007-08-08 2011-08-16 Intel Corporation ECC functional block placement in a multi-channel mass storage device
US7970919B1 (en) 2007-08-13 2011-06-28 Duran Paul A Apparatus and system for object-based storage solid-state drive and method for configuring same
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
US7934072B2 (en) 2007-09-28 2011-04-26 Lenovo (Singapore) Pte. Ltd. Solid state storage reclamation apparatus and method
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
TWI578330B (zh) 2007-10-09 2017-04-11 A-Data Technology Co Ltd Solid state semiconductor storage device with temperature control function and control method thereof
US8621605B2 (en) 2007-10-09 2013-12-31 International Business Machines Corporation Method for reducing the time to diagnose the cause of unexpected changes to system files
KR101433859B1 (ko) 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US8346912B2 (en) * 2007-10-15 2013-01-01 Dell Products, Lp System and method of emulating a network controller within an information handling system
WO2009052525A1 (en) 2007-10-19 2009-04-23 Virident Systems, Inc. Managing memory systems containing components with asymmetric characteristics
US20090113235A1 (en) * 2007-10-30 2009-04-30 Selinger Robert D Raid with redundant parity
CA2704537C (en) 2007-11-05 2015-10-13 Nokia Siemens Networks Oy Buffer status reporting apparatus, system, and method
US8572310B2 (en) 2007-11-06 2013-10-29 Samsung Electronics Co., Ltd. Invalidating storage area of non-volatile storage medium based on metadata
US7840839B2 (en) 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
US8548953B2 (en) 2007-11-12 2013-10-01 F5 Networks, Inc. File deduplication using storage tiers
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8131927B2 (en) 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US8416657B2 (en) * 2007-12-03 2013-04-09 Mediatek Inc. Method and system for managing data from host to optical disc
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
US8001334B2 (en) 2007-12-06 2011-08-16 Silicon Image, Inc. Bank sharing and refresh in a shared multi-port memory device
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
JP5238235B2 (ja) 2007-12-07 2013-07-17 株式会社日立製作所 管理装置及び管理方法
WO2009079478A1 (en) 2007-12-14 2009-06-25 Virident Systems, Inc. Distributing metadata across multiple different disruption regions within an asymmetric memory system
JP5428288B2 (ja) 2007-12-25 2014-02-26 日本電気硝子株式会社 ガラス板の製造方法及び製造設備
US8621137B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US7917689B2 (en) 2007-12-28 2011-03-29 Intel Corporation Methods and apparatuses for nonvolatile memory wear leveling
US8239611B2 (en) 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US20110066792A1 (en) 2008-02-10 2011-03-17 Rambus Inc. Segmentation Of Flash Memory For Partial Volatile Storage
US20090216944A1 (en) 2008-02-22 2009-08-27 International Business Machines Corporation Efficient validation of writes for protection against dropped writes
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US8489820B1 (en) 2008-03-18 2013-07-16 Netapp, Inc Speculative copying of data from main buffer cache to solid-state secondary cache of a storage server
US8175528B2 (en) 2008-03-18 2012-05-08 Spansion Llc Wireless mass storage flash memory
JP5040773B2 (ja) 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8001434B1 (en) 2008-04-14 2011-08-16 Netlist, Inc. Memory board with self-testing capability
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
US8266114B2 (en) 2008-09-22 2012-09-11 Riverbed Technology, Inc. Log structured content addressable deduplicating storage
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
WO2010011428A1 (en) 2008-06-06 2010-01-28 Pivot3 Method and system for data migration in a distributed raid implementation
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8010738B1 (en) 2008-06-27 2011-08-30 Emc Corporation Techniques for obtaining a specified lifetime for a data storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
US8019953B2 (en) 2008-07-01 2011-09-13 Lsi Corporation Method for providing atomicity for host write input/outputs (I/Os) in a continuous data protection (CDP)-enabled volume using intent log
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US9772936B2 (en) 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8046551B1 (en) 2008-08-14 2011-10-25 Emc Corporation Techniques for processing I/O requests
KR100977709B1 (ko) 2008-08-20 2010-08-24 주식회사 셀픽 플래시메모리 저장장치 및 그에 따른 관리 방법
US8209439B2 (en) 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
KR101487190B1 (ko) 2008-09-11 2015-01-28 삼성전자주식회사 압축 코덱을 구비한 플래시 메모리 집적 회로
US8335889B2 (en) 2008-09-11 2012-12-18 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
EP2350837A4 (en) 2008-09-15 2012-10-17 Virsto Software Corp STORAGE MANAGEMENT SYSTEM FOR VIRTUAL MACHINES
US8417928B2 (en) 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
US20100082922A1 (en) 2008-09-30 2010-04-01 Vmware, Inc. Virtual machine migration using local storage
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8407427B2 (en) 2008-10-29 2013-03-26 Silicon Image, Inc. Method and system for improving serial port memory communication latency and reliability
US7777652B2 (en) 2008-10-29 2010-08-17 Silicon Image, Inc. Coding system for memory systems employing high-speed serial links
US8990573B2 (en) 2008-11-10 2015-03-24 Citrix Systems, Inc. System and method for using variable security tag location in network communications
KR101541812B1 (ko) 2008-11-19 2015-08-06 삼성전자주식회사 비휘발성 메모리 장치
US20100146187A1 (en) 2008-12-05 2010-06-10 Grimsrud Knut S Endurance management technique
US9015209B2 (en) 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US8205060B2 (en) 2008-12-16 2012-06-19 Sandisk Il Ltd. Discardable files
US8266365B2 (en) 2008-12-17 2012-09-11 Sandisk Il Ltd. Ruggedized memory device
US8645641B2 (en) 2008-12-17 2014-02-04 Seagate Technology Llc Intelligent storage device controller
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
CN102349111B (zh) 2008-12-30 2015-08-05 美光科技公司 串行非易失性存储器的增强的可寻址性
US8347041B2 (en) 2009-01-02 2013-01-01 Lsi Corporation System and method to preserve and recover unwritten data present in data cache of a disk subsystem across power outages
US8037364B2 (en) * 2009-01-09 2011-10-11 International Business Machines Corporation Forced management module failover by BMC impeachment consensus
US20100199020A1 (en) 2009-02-04 2010-08-05 Silicon Storage Technology, Inc. Non-volatile memory subsystem and a memory controller therefor
US20100217948A1 (en) 2009-02-06 2010-08-26 Mason W Anthony Methods and systems for data storage
US8032708B2 (en) 2009-02-11 2011-10-04 Oracle America, Inc. Method and system for caching data in a storgae system
CN101819564B (zh) 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US8589700B2 (en) 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
US8375195B2 (en) 2009-03-05 2013-02-12 Oracle America, Inc. Accessing memory locations for paged memory objects in an object-addressed memory system
US8296628B2 (en) 2009-03-06 2012-10-23 Texas Instruments Incorporated Data path read/write sequencing for reduced power consumption
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8423710B1 (en) 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
US8418021B2 (en) 2009-03-27 2013-04-09 Mediatek Inc. Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof
US8364923B2 (en) 2009-03-30 2013-01-29 Oracle America, Inc. Data storage system manager and method for managing a data storage system
US8433845B2 (en) 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8639871B2 (en) 2009-04-08 2014-01-28 Google Inc. Partitioning a flash memory data storage device
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8214663B2 (en) 2009-04-15 2012-07-03 International Business Machines Corporation Using power proxies combined with on-chip actuators to meet a defined power target
KR101573722B1 (ko) 2009-04-20 2015-12-03 삼성전자주식회사 비휘발성 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템
US20100281207A1 (en) 2009-04-30 2010-11-04 Miller Steven C Flash-based data archive storage system
US8402069B2 (en) 2009-05-04 2013-03-19 Microsoft Corporation Use of delete notifications by file systems and applications to release storage space
US8095770B2 (en) 2009-05-08 2012-01-10 Oracle America Inc. Method and system for mapping data to a process
KR101606453B1 (ko) 2009-05-13 2016-04-01 삼성전자주식회사 비휘발성 데이터 저장 장치의 읽기 및 쓰기 성능 향상 방법
US8095738B2 (en) 2009-06-15 2012-01-10 International Business Machines Corporation Differential caching mechanism based on media I/O speed
US8230257B2 (en) 2009-06-26 2012-07-24 Seagate Technology Llc Systems, methods and devices for controlling backup power provided to memory devices and used for storing of sensitive data
US20100332871A1 (en) 2009-06-30 2010-12-30 International Buisness Machines Corporation Capping power consumption in a data storage system
US8291131B2 (en) 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US8234450B2 (en) 2009-07-10 2012-07-31 Via Technologies, Inc. Efficient data prefetching in the presence of load hits
US8214610B2 (en) 2009-07-15 2012-07-03 Lsi Corporation Managing backup device metadata in a high availability disk subsystem
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US20110029728A1 (en) 2009-07-28 2011-02-03 Lsi Corporation Methods and apparatus for reducing input/output operations in a raid storage system
US8332673B2 (en) 2009-08-04 2012-12-11 Hitachi, Ltd. System and method to manage power consumption
US20110035562A1 (en) 2009-08-10 2011-02-10 Hewlett-Packard Development Company, L.P. Providing mirroring write data
US8176284B2 (en) 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8560765B2 (en) 2009-09-08 2013-10-15 Lsi Corporation Systems and methods for variable level use of a multi-level flash memory
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
WO2011031900A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
KR101644125B1 (ko) 2009-09-22 2016-07-29 삼성전자주식회사 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
WO2011036228A1 (en) 2009-09-23 2011-03-31 Conor Maurice Ryan A flash memory device and control method
US10360039B2 (en) 2009-09-28 2019-07-23 Nvidia Corporation Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value
TW201111986A (en) 2009-09-29 2011-04-01 Silicon Motion Inc Memory apparatus and data access method for memories
CA2680601C (en) 2009-10-16 2010-11-02 Ibm Canada Limited - Ibm Canada Limitee Managing multiple speculative assist threads at differing cache levels
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8103910B2 (en) 2009-11-13 2012-01-24 International Business Machines Corporation Local rollback for fault-tolerance in parallel computing systems
US8327106B2 (en) 2009-11-16 2012-12-04 International Business Machines Corporation Selective device access control
US8250324B2 (en) 2009-11-30 2012-08-21 International Business Machines Corporation Method to efficiently locate meta-data structures on a flash-based storage device
WO2011085489A1 (en) 2010-01-13 2011-07-21 Magna Electronics Inc. Vehicular camera and method for periodic calibration of vehicular camera
US8315092B2 (en) 2010-01-27 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US8478945B2 (en) 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
US8589766B2 (en) 2010-02-24 2013-11-19 Apple Inc. Codeword remapping schemes for non-volatile memories
US8285937B2 (en) 2010-02-24 2012-10-09 Apple Inc. Fused store exclusive/memory barrier operation
US8725940B2 (en) 2010-02-27 2014-05-13 Cleversafe, Inc. Distributedly storing raid data in a raid memory and a dispersed storage network memory
US8712984B2 (en) 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US8438361B2 (en) 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
US8130551B2 (en) 2010-03-31 2012-03-06 Sandisk Technologies Inc. Extra dummy erase pulses after shallow erase-verify to avoid sensing deep erased threshold voltage
US8360333B2 (en) 2010-04-06 2013-01-29 Naddor David J HD barcode
US8463846B2 (en) 2010-05-06 2013-06-11 Cdnetworks Co., Ltd. File bundling for cache servers of content delivery networks
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8738724B2 (en) 2010-05-25 2014-05-27 Microsoft Corporation Totally ordered log on appendable storage
EP2577470A4 (en) 2010-06-04 2013-12-25 Sandisk Entpr Ip Llc CACHE ADMINISTRATION AND ACCELERATION IN STORAGE MEDIA
US20110314071A1 (en) 2010-06-17 2011-12-22 Openwave Systems Inc. Metadata-based data access and control
US8402226B1 (en) 2010-06-18 2013-03-19 Emc Corporation Rate proportional cache write-back in a storage server
EP2598996B1 (en) 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8713268B2 (en) 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
WO2012050934A2 (en) 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8738846B2 (en) 2010-10-15 2014-05-27 Arkologic Limited File system-aware solid-state storage management system
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8396936B2 (en) 2010-10-28 2013-03-12 Hewlett-Packard Development Company, L.P. Computer system with cooperative cache
US8990538B2 (en) 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US8527693B2 (en) 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
JP2012128660A (ja) 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8458145B2 (en) 2011-01-20 2013-06-04 Infinidat Ltd. System and method of storage optimization
US8364888B2 (en) 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US9063862B2 (en) 2011-05-17 2015-06-23 Sandisk Technologies Inc. Expandable data cache
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US10133662B2 (en) 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
JP2013137713A (ja) 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、メモリシステムおよびメモリ書込み方法
US9779038B2 (en) 2013-01-31 2017-10-03 Apple Inc. Efficient suspend-resume operation in memory devices
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array

Also Published As

Publication number Publication date
JP2010512586A (ja) 2010-04-22
US20080256183A1 (en) 2008-10-16
WO2008070799A3 (en) 2008-10-23
US8019938B2 (en) 2011-09-13
US20110047356A2 (en) 2011-02-24
WO2008070174A2 (en) 2008-06-12
US20170003902A1 (en) 2017-01-05
US9824027B2 (en) 2017-11-21
WO2008070814A2 (en) 2008-06-12
EP2109812A2 (en) 2009-10-21
KR20090102789A (ko) 2009-09-30
US20080141043A1 (en) 2008-06-12
US8402201B2 (en) 2013-03-19
US20120324311A1 (en) 2012-12-20
WO2008070172A3 (en) 2008-07-24
US8266496B2 (en) 2012-09-11
US8189407B2 (en) 2012-05-29
US20090132760A1 (en) 2009-05-21
US20120215961A1 (en) 2012-08-23
KR20090095641A (ko) 2009-09-09
US20130304872A1 (en) 2013-11-14
US20080140910A1 (en) 2008-06-12
US7934055B2 (en) 2011-04-26
US10146700B2 (en) 2018-12-04
US10387328B2 (en) 2019-08-20
KR20140133923A (ko) 2014-11-20
US9575902B2 (en) 2017-02-21
WO2008127458A2 (en) 2008-10-23
US20110157992A1 (en) 2011-06-30
KR101490327B1 (ko) 2015-02-05
US20080313312A1 (en) 2008-12-18
CN101689131B (zh) 2013-03-20
WO2008070796A3 (en) 2009-12-10
WO2008127458A3 (en) 2010-01-07
US20080256292A1 (en) 2008-10-16
WO2008070812A2 (en) 2008-06-12
EP2100214A1 (en) 2009-09-16
US20130124791A1 (en) 2013-05-16
CN101689130A (zh) 2010-03-31
US20190171581A1 (en) 2019-06-06
EP2126709A2 (en) 2009-12-02
US11640359B2 (en) 2023-05-02
EP2126680A2 (en) 2009-12-02
JP2010515116A (ja) 2010-05-06
US20110252190A1 (en) 2011-10-13
KR101532951B1 (ko) 2015-07-09
WO2008070800B1 (en) 2008-07-31
US8296337B2 (en) 2012-10-23
CN101622594A (zh) 2010-01-06
US20080168304A1 (en) 2008-07-10
EP2115563A2 (en) 2009-11-11
US20080140909A1 (en) 2008-06-12
EP2109822A1 (en) 2009-10-21
US8533569B2 (en) 2013-09-10
US9519594B2 (en) 2016-12-13
WO2008070172A2 (en) 2008-06-12
US8412904B2 (en) 2013-04-02
EP2100214B1 (en) 2013-10-30
KR20090087119A (ko) 2009-08-14
US11960412B2 (en) 2024-04-16
JP5523835B2 (ja) 2014-06-18
WO2008070802A3 (en) 2008-10-09
WO2008070191A2 (en) 2008-06-12
US20110289267A1 (en) 2011-11-24
KR20090102788A (ko) 2009-09-30
WO2008070191B1 (en) 2008-09-04
WO2008070813A2 (en) 2008-06-12
US8533406B2 (en) 2013-09-10
US8601211B2 (en) 2013-12-03
US20080140932A1 (en) 2008-06-12
US20110296277A1 (en) 2011-12-01
EP2126679A2 (en) 2009-12-02
WO2008070800A1 (en) 2008-06-12
US8417774B2 (en) 2013-04-09
US20080140724A1 (en) 2008-06-12
CA2672100A1 (en) 2008-06-12
WO2008070802A2 (en) 2008-06-12
WO2008070811A2 (en) 2008-06-12
US20080183953A1 (en) 2008-07-31
CA2672035A1 (en) 2008-06-12
WO2008070796A2 (en) 2008-06-12
US20170147241A1 (en) 2017-05-25
US8762658B2 (en) 2014-06-24
US20110179225A1 (en) 2011-07-21
WO2008070191A3 (en) 2008-07-24
US20230144287A1 (en) 2023-05-11
CN103049058A (zh) 2013-04-17
CN101622594B (zh) 2013-03-13
US11847066B2 (en) 2023-12-19
US20080229079A1 (en) 2008-09-18
US20110258512A1 (en) 2011-10-20
WO2008070812A3 (en) 2009-12-23
US8015440B2 (en) 2011-09-06
KR20090097906A (ko) 2009-09-16
WO2008070798A1 (en) 2008-06-12
WO2008070813A3 (en) 2009-12-23
US20140372679A1 (en) 2014-12-18
WO2008070803A1 (en) 2008-06-12
WO2008070814A3 (en) 2008-11-13
US20080183882A1 (en) 2008-07-31
US8482993B2 (en) 2013-07-09
US11573909B2 (en) 2023-02-07
US20130097367A1 (en) 2013-04-18
EP2108143A2 (en) 2009-10-14
WO2008070811A3 (en) 2008-08-07
US8214591B2 (en) 2012-07-03
US20170185347A1 (en) 2017-06-29
CN101689131A (zh) 2010-03-31
US20130067294A1 (en) 2013-03-14
CN101681282A (zh) 2010-03-24
JP2010512584A (ja) 2010-04-22
US20210294753A1 (en) 2021-09-23
US8412979B2 (en) 2013-04-02
US9632727B2 (en) 2017-04-25
US8495292B2 (en) 2013-07-23
US20120179869A1 (en) 2012-07-12
US20080313364A1 (en) 2008-12-18
CN103049058B (zh) 2018-01-02
US20120331206A1 (en) 2012-12-27
US20160342366A1 (en) 2016-11-24
WO2008070174A3 (en) 2009-09-11
US8019940B2 (en) 2011-09-13
US20190370185A1 (en) 2019-12-05
JP5611597B2 (ja) 2014-10-22
US20230134374A1 (en) 2023-05-04
US10387327B2 (en) 2019-08-20
WO2008070799A2 (en) 2008-06-12
US9454492B2 (en) 2016-09-27
US20130024642A1 (en) 2013-01-24
EP2126698A2 (en) 2009-12-02
US8261005B2 (en) 2012-09-04
US9734086B2 (en) 2017-08-15
US8285927B2 (en) 2012-10-09
EP2109822B1 (en) 2014-06-25
CN101690068A (zh) 2010-03-31
KR20090087498A (ko) 2009-08-17
CN101715575A (zh) 2010-05-26
JP2010512568A (ja) 2010-04-22
WO2008070173A1 (en) 2008-06-12
US11061825B2 (en) 2021-07-13

Similar Documents

Publication Publication Date Title
ES2507072T3 (es) Aparato, sistema, y método para un almacenamiento de estado sólido como memoria caché para un almacenamiento no volátil de alta capacidad
CN101636712B (zh) 在存储控制器内服务对象请求的装置、系统和方法
JP2010512568A5 (es)
JP2010512584A5 (es)
JP2010512586A5 (es)