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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/18—Packaging or power distribution
- G06F1/183—Internal mounting support structures, e.g. for printed circuit boards, internal connecting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4247—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
- G06F13/426—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05K—PRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
- H05K7/00—Constructional details common to different types of electric apparatus
- H05K7/14—Mounting supporting structure in casing or on frame or rack
- H05K7/1438—Back panels or connecting means therefor; Terminals; Coding means to avoid wrong insertion
- H05K7/1439—Back panel mother boards
- H05K7/1444—Complex or three-dimensional-arrangements; Stepped or dual mother boards
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05K—PRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
- H05K7/00—Constructional details common to different types of electric apparatus
- H05K7/14—Mounting supporting structure in casing or on frame or rack
- H05K7/1485—Servers; Data center rooms, e.g. 19-inch computer racks
- H05K7/1487—Blade assemblies, e.g. blade cases or inner arrangements within a blade
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/002—Bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/103—Hybrid, i.e. RAID systems with parity comprising a mix of RAID types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
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.
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.
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.
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.
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:
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.
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
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
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
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
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
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
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.
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
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
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
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.
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.
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
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.
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
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
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.
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
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.
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
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
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.
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
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
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.
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
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.
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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.
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
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
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.
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
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)
-
imagen1 REIVINDICACIONES1. 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 un10 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 el15 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. - 3. El aparato de la reivindicación 1, que comprende además un módulo de RAID de HCNV (3508) que almacena los25 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.
- 4. El aparato de la reivindicación 1, en el que el almacenamiento de estado sólido y el uno o más dispositivos de30 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 clientes35 independientes de los segmentos de datos de una banda de RAID.
- 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
- 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ás45 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.
- 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ólido50 independiente del almacenamiento de estado sólido que funciona como memoria caché para los dispositivos de almacenamiento HCNV.
- 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 la55 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.
- 9. El aparato de la reivindicación 8, en el que los mensajes de control de la memoria caché se comunican mediantemetadatos, "metadatos de control de la memoria caché", para el objeto o fichero. 60
-
- 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.
-
- 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.
57imagen2 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 - 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").
- 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 la30 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 el35 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 de40 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.4558
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)
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)
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 |
-
2007
- 2007-12-06 CN CN200780050982A patent/CN101681282A/zh active Pending
- 2007-12-06 US US11/952,098 patent/US20080140724A1/en not_active Abandoned
- 2007-12-06 CN CN200780050974A patent/CN101715575A/zh active Pending
- 2007-12-06 US US11/952,124 patent/US20080313364A1/en not_active Abandoned
- 2007-12-06 WO PCT/US2007/086686 patent/WO2008070798A1/en active Application Filing
- 2007-12-06 WO PCT/US2007/086688 patent/WO2008070800A1/en active Search and Examination
- 2007-12-06 CA CA002672100A patent/CA2672100A1/en not_active Abandoned
- 2007-12-06 WO PCT/US2007/086702 patent/WO2008070812A2/en active Application Filing
- 2007-12-06 KR KR1020097014065A patent/KR20090095641A/ko not_active Application Discontinuation
- 2007-12-06 KR KR1020147028326A patent/KR101532951B1/ko active IP Right Grant
- 2007-12-06 EP EP07865345A patent/EP2115563A2/en not_active Ceased
- 2007-12-06 US US11/952,106 patent/US8495292B2/en active Active
- 2007-12-06 CN CN2007800509700A patent/CN101622594B/zh active Active
- 2007-12-06 US US11/952,113 patent/US8261005B2/en active Active
- 2007-12-06 WO PCT/US2007/025050 patent/WO2008070174A2/en active Application Filing
- 2007-12-06 WO PCT/US2007/086705 patent/WO2008127458A2/en active Application Filing
- 2007-12-06 EP EP07865334A patent/EP2108143A2/en not_active Ceased
- 2007-12-06 KR KR1020097014055A patent/KR101490327B1/ko active IP Right Grant
- 2007-12-06 WO PCT/US2007/025048 patent/WO2008070172A2/en active Application Filing
- 2007-12-06 US US12/001,065 patent/US8417774B2/en not_active Expired - Fee Related
- 2007-12-06 WO PCT/US2007/025049 patent/WO2008070173A1/en active Search and Examination
- 2007-12-06 CN CN2007800510106A patent/CN101689131B/zh not_active Expired - Fee Related
- 2007-12-06 US US11/952,123 patent/US8019938B2/en active Active
- 2007-12-06 KR KR1020097014058A patent/KR20090087498A/ko active Search and Examination
- 2007-12-06 US US11/952,095 patent/US9575902B2/en active Active
- 2007-12-06 ES ES07867661.6T patent/ES2507072T3/es active Active
- 2007-12-06 JP JP2009540484A patent/JP2010512584A/ja active Pending
- 2007-12-06 JP JP2009540483A patent/JP2010515116A/ja active Pending
- 2007-12-06 CN CN200780050972A patent/CN101689130A/zh active Pending
- 2007-12-06 CN CN201210539998.3A patent/CN103049058B/zh active Active
- 2007-12-06 EP EP07869018A patent/EP2109812A2/en not_active Withdrawn
- 2007-12-06 WO PCT/US2007/025188 patent/WO2008070191A2/en active Search and Examination
- 2007-12-06 WO PCT/US2007/086704 patent/WO2008070814A2/en active Application Filing
- 2007-12-06 US US11/952,115 patent/US8015440B2/en active Active
- 2007-12-06 KR KR1020097014067A patent/KR20090102789A/ko not_active Application Discontinuation
- 2007-12-06 KR KR1020097014054A patent/KR20090087119A/ko not_active Application Discontinuation
- 2007-12-06 JP JP2009540489A patent/JP5611597B2/ja active Active
- 2007-12-06 US US11/952,121 patent/US9734086B2/en active Active
- 2007-12-06 EP EP07865346A patent/EP2126679A2/en not_active Withdrawn
- 2007-12-06 WO PCT/US2007/086690 patent/WO2008070802A2/en active Application Filing
- 2007-12-06 EP EP07873664A patent/EP2126698A2/en not_active Withdrawn
- 2007-12-06 WO PCT/US2007/086703 patent/WO2008070813A2/en active Application Filing
- 2007-12-06 EP EP07853274A patent/EP2126709A2/en not_active Withdrawn
- 2007-12-06 EP EP07867661.6A patent/EP2109822B1/en active Active
- 2007-12-06 WO PCT/US2007/086691 patent/WO2008070803A1/en active Application Filing
- 2007-12-06 CN CN200780051023A patent/CN101690068A/zh active Pending
- 2007-12-06 WO PCT/US2007/086687 patent/WO2008070799A2/en active Search and Examination
- 2007-12-06 US US11/952,091 patent/US8266496B2/en active Active
- 2007-12-06 EP EP07869020A patent/EP2126680A2/en not_active Withdrawn
- 2007-12-06 KR KR1020097014064A patent/KR20090102788A/ko not_active Application Discontinuation
- 2007-12-06 JP JP2009540309A patent/JP5523835B2/ja not_active Expired - Fee Related
- 2007-12-06 US US11/952,120 patent/US7934055B2/en not_active Expired - Fee Related
- 2007-12-06 WO PCT/US2007/086683 patent/WO2008070796A2/en active Application Filing
- 2007-12-06 WO PCT/US2007/086701 patent/WO2008070811A2/en active Application Filing
- 2007-12-06 US US11/952,101 patent/US8402201B2/en active Active
- 2007-12-06 CA CA002672035A patent/CA2672035A1/en not_active Abandoned
- 2007-12-06 US US11/952,109 patent/US8296337B2/en active Active
- 2007-12-06 US US11/952,116 patent/US8019940B2/en active Active
- 2007-12-06 EP EP07865335.9A patent/EP2100214B1/en active Active
-
2010
- 2010-12-29 US US12/981,394 patent/US8189407B2/en not_active Expired - Fee Related
-
2011
- 2011-03-29 US US13/075,000 patent/US8412904B2/en active Active
- 2011-05-27 US US13/118,237 patent/US20110252190A1/en not_active Abandoned
- 2011-06-30 US US13/174,449 patent/US20110258512A1/en not_active Abandoned
- 2011-07-13 US US13/182,315 patent/US8412979B2/en not_active Expired - Fee Related
- 2011-08-05 US US13/204,436 patent/US8214591B2/en active Active
- 2011-08-05 US US13/204,551 patent/US8285927B2/en active Active
-
2012
- 2012-05-01 US US13/461,628 patent/US8482993B2/en active Active
- 2012-06-04 US US13/488,301 patent/US8601211B2/en active Active
- 2012-08-03 US US13/566,471 patent/US8762658B2/en active Active
- 2012-08-30 US US13/600,077 patent/US8533569B2/en active Active
- 2012-09-07 US US13/607,486 patent/US8533406B2/en active Active
- 2012-10-09 US US13/648,009 patent/US9519594B2/en active Active
- 2012-12-28 US US13/730,602 patent/US9454492B2/en active Active
-
2013
- 2013-07-11 US US13/939,927 patent/US9824027B2/en active Active
-
2014
- 2014-06-19 US US14/309,751 patent/US9632727B2/en active Active
-
2016
- 2016-08-04 US US15/228,893 patent/US10387327B2/en active Active
- 2016-09-15 US US15/266,486 patent/US10146700B2/en active Active
-
2017
- 2017-01-10 US US15/402,936 patent/US11061825B2/en active Active
- 2017-03-15 US US15/460,126 patent/US10387328B2/en active Active
-
2018
- 2018-11-29 US US16/204,947 patent/US20190171581A1/en not_active Abandoned
-
2019
- 2019-08-16 US US16/543,464 patent/US11640359B2/en active Active
-
2021
- 2021-06-09 US US17/343,116 patent/US11573909B2/en active Active
-
2022
- 2022-10-19 US US18/047,982 patent/US11960412B2/en active Active
- 2022-12-19 US US18/067,964 patent/US11847066B2/en active Active
Also Published As
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) |