KR20110059792A - 고체 상태 대량 저장 디바이스들을 위한 데이터 스트리밍 - Google Patents
고체 상태 대량 저장 디바이스들을 위한 데이터 스트리밍 Download PDFInfo
- Publication number
- KR20110059792A KR20110059792A KR20117009371A KR20117009371A KR20110059792A KR 20110059792 A KR20110059792 A KR 20110059792A KR 20117009371 A KR20117009371 A KR 20117009371A KR 20117009371 A KR20117009371 A KR 20117009371A KR 20110059792 A KR20110059792 A KR 20110059792A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- entries
- linked list
- metadata
- user data
- Prior art date
Links
Images
Classifications
-
- 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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
- 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/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/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/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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
이용자 데이터 및 메타데이터 모두에 대한 엔트리들을 포함하는 링크된 목록들을 생성함으로써 방법들 및 장치들은 대량 저장 디바이스들에서의 데이터 스트리밍을 용이하게 한다. 혼합된 데이터 유형들을 포함하는 상기 링크된 목록들은 이용자 데이터를 수신하고 출력하는 것을 용이하게 하고, 이용자 데이터의 흐름을 중단하지 않고 상기 이용자 데이터에 대응하는 메타데이터를 각각 삽입하거나 무시한다.
Description
본 발명은 일반적으로 반도체 메모리에 관한 것으로서, 특히 하나 이상의 실시예들에서, 본 발명은 고체 상태(solid state) 대량 저장 디바이스(bulk storage device)들을 위한 데이터 스트리밍(data streaming)의 제어를 제공하는 방법들 및 장치에 관한 것이다.
전자 디바이스들은 흔히 자신들에게 이용 가능한 어떤 유형의 대량 저장 디바이스를 갖는다. 흔한 예는 하드 디스크 드라이브(HDD)이다. HDD들은 상대적으로 낮은 비용으로 대량의 저장이 가능하며, 현재 소비자 HDD들은 1 테라바이트(terabyte) 이상의 용량을 갖는 것들이 구입 가능하다.
HDD들은 일반적으로 회전하는 자기 매체 또는 플래터(platter)들 상에 데이터를 저장한다. 데이터는 전형적으로 플래터들 상에 자속 역전(magnetic flux reversal)의 패턴으로 저장된다. 데이터를 전형적인 HDD에 기록하기 위해서, 플래터가 고속으로 회전되는 동안, 플래터 위에서 떠 움직이는(floating) 기록 헤드(write head)는 일련의 자기 펄스(magnetic pulse)들을 발생시켜 자성 입자(magnetic particle)들을 상기 플래터 상에 정렬시켜 데이터를 표현한다. 전형적인 HDD로부터 데이터를 판독하기 위해서, 자기저항 판독 헤드(read head)가 고속으로 회전되고 있는 플래터 상에서 떠 움직일 때 상기 자기저항 판독 헤드 내에서 저항 변화들이 유도된다. 실제로, 그 결과에 따른 데이터 신호는 아날로그 신호로서, 상기 아날로그 신호의 피크(peak)들 및 밸리(valley)들은 데이터 패턴의 자속 역전들의 결과물이다. 그 후에 부분 응답 최대 우도(partial response maximum likelihood: PRML)라 칭해지는 디지털 신호 프로세싱 기술들이 이용되어 아날로그 데이터 신호를 샘플링해서 데이터 신호를 발생시키는 일을 담당할 가능성이 있는 데이터 패턴을 결정한다.
HDD들은 자신의 기계적 특성으로 인해 특정한 결점들을 갖는다. HDD들은 충격, 진동 또는 강한 자기장들로 인해 손상되거나 과도한 판독/기록 에러들이 발생하기 쉽다. 게다가, HDD들은 휴대용 전자 디바이스들에 있어서 상대적으로 큰 전력의 이용자이다.
대량 저장 디바이스의 다른 예는 고체 상태 드라이브(solid state drive: SSD)이다. 회전하는 매체 상에 데이터를 저장하는 대신, SSD들은 반도체 메모리 디바이스들을 이용하여 자신들의 데이터를 저장하지만, 흔히 인터페이스 및 폼 팩터(form factor)를 포함하므로, SSD들의 호스트 시스템(host system)에 자신이 마치 전형적인 HDD인 것처럼 보이도록 한다. SSD들의 메모리 디바이스들은 전형적으로 비휘발성 플래시 메모리 디바이스들이다.
플래시 메모리 디바이스들은 광범위한 전자 애플리케이션들에 대한 비휘발성 메모리의 인기있는 소스(source)로 개발되었다. 플래시 메모리 디바이스들은 전형적으로 높은 메모리 밀도들, 높은 신뢰성, 및 낮은 전력 소비를 가능하게 하는 1-트랜지스터 메모리 셀(one-transistor memory cell)을 이용한다. 셀들의 임계 전압의 변화들은, 전하 저장 노드(node)들(예를 들어 부동 게이트(floating gate)들 또는 트랩 층(trapping layer)들) 또는 다른 물리적 현상(예를 들어 위상 변화 또는 분극(polarization))의 프로그래밍을 통해, 각각의 셀의 데이터 값을 결정한다. 플래시 메모리 및 다른 비휘발성 메모리를 공동으로 이용하는 것들은 개인용 컴퓨터들, 개인용 휴대정보 단말기(personal digital assistant: PDA)들, 디지털 카메라들, 디지털 매체 재생기들, 디지털 녹음기들, 게임들, 전기 제품들, 차량들, 무선 디바이스들, 모바일 전화기들, 및 제거 가능 메모리 모듈(module)들을 포함하고, 비휘발성 메모리를 이용하는 것들은 계속해서 확장된다.
HDD들과는 달리, SSD들의 동작은 일반적으로 SSD 자체의 고체 특성으로 인해 진동, 충격, 또는 자기장에 관한 것들에 영향을 받지 않는다. 유사하게, 움직이는 부분들이 없으므로, SSD들은 HDD들보다 더 낮은 전력 요건들을 갖는다. 그러나, SSD들은 현재 동일한 폼 팩터의 HDD들에 비해 저장 용량이 훨씬 더 낮고 같은 저장 용량들에 대해서는 비용이 현저하게 더 높다.
전자 시스템의 데이터 저장 디바이스들 및 데이터 생성기/소비자 디바이스들 사이에서 데이터를 효율적으로 이동시킬 때, 전자 시스템의 1차 프로세서로 하여금 다른 임무들에 전념하도록 하는 동안 저장 디바이스에 직접 액세스하는 것을 허용하는 직접 메모리 액세스(direct memory access: DMA)가 개발되었다. 그와 같은 시스템들에서, 데이터는 흔히 규정된 크기의 패킷들 내에서 저장 디바이스들로 또는 저장 디바이스들로부터 전송된다. 이 패킷들은 대량 저장 디바이스에 의해 수신될 때 흔히 링크된 목록 프로토콜(linked-list protocol)을 이용하여 휘발성 저장소에 저장된다. 이는 대량 저장 디바이스의 비휘발성 저장 에어리어(area)에 기록될 데이터를 대기하지 않고도 데이터를 효율적으로 전송하는 것을 용이하게 한다.
플래시 메모리 디바이스들은 일반적으로 이용자 데이터와 함께 저장되며 흔히 메타데이터(metadata)로 칭해지는 일부 비이용자 데이터(non-user data)를 이용한다. 예를 들어, 대량 저장 디바이스에 의해 생성되는 상태 표시자들, 에러 정정 코드 데이터, 매핑 정보(mapping information) 등이 이용자 데이터와 함께 저장될 수 있다. 이 두 데이터 유형들을 함께 저장한 결과로, 이용자 데이터의 규정된 유닛이 메모리 디바이스로 스트리밍(streaming)되고, 이후에 이용자 데이터의 스트리밍이 중단되어 후속 기록 래치(write latch)들이 메타데이터로 채워지게 된다. 일단 메타데이터가 메모리 디바이스에 기록되면, 이용자 데이터의 다른 규정된 유닛이 스트리밍될 수 있다. 이 주기적인 이용자 데이터의 중단은 대량 저장 디바이스가 자체의 비휘발성 저장 에어리어들로의 상이한 데이터 유형들 사이의 트래픽을 관리할 때 비효율들을 발생시킬 수 있다.
위에서 설명된 이유들과, 본 명세서를 읽고 이해하게 될 경우에 당업자들에게 명백해질 다른 이유들로 인해, 대량 저장 디바이스들을 위한 데이터 스트리밍의 대안적인 제어에 대한 필요성이 당업계에 존재한다.
도 1은 본 발명의 실시예에 따른 적어도 하나의 메모리 모듈을 갖는 전자 시스템의 기능적 블럭도이다.
도 2는 본 발명의 실시예에 따른 도 1의 마스터 제어기(master controller)의 추가적인 세부사항을 도시한 블럭도이다.
도 3은 본 발명의 실시예에 따른 페이지의 데이터 구조의 하나의 실시예를 표현한 도면이다.
도 4a는 본 발명의 실시예에 따른 링크된 목록을 표현한 도면이다.
도 4b는 본 발명의 실시예에 따라 다양한 데이터 유닛들이 어떻게 저장되고 액세스되는지를 개념적으로 도시하는 휘발성 메모리의 일부를 표현한 도면이다.
도 5는 본 발명의 실시예에 따라 대량 저장 디바이스에 데이터를 기록하는 방법의 순서도이다.
도 6은 본 발명의 실시예에 따라 대량 저장 디바이스로부터 데이터를 판독하는 방법의 순서도이다.
도 2는 본 발명의 실시예에 따른 도 1의 마스터 제어기(master controller)의 추가적인 세부사항을 도시한 블럭도이다.
도 3은 본 발명의 실시예에 따른 페이지의 데이터 구조의 하나의 실시예를 표현한 도면이다.
도 4a는 본 발명의 실시예에 따른 링크된 목록을 표현한 도면이다.
도 4b는 본 발명의 실시예에 따라 다양한 데이터 유닛들이 어떻게 저장되고 액세스되는지를 개념적으로 도시하는 휘발성 메모리의 일부를 표현한 도면이다.
도 5는 본 발명의 실시예에 따라 대량 저장 디바이스에 데이터를 기록하는 방법의 순서도이다.
도 6은 본 발명의 실시예에 따라 대량 저장 디바이스로부터 데이터를 판독하는 방법의 순서도이다.
본 실시예들의 다음의 상세한 설명에서, 본 실시예들의 일부를 형성하고, 상기 실시예들이 실행될 수 있는 특정 실시예들이 예시로서 도시되는 첨부 도면들이 참조된다. 상기 실시예들은 충분히 자세하게 기술되어 당업자들이 본 발명을 실시할 수 있도록 하며, 다른 실시예들이 이용될 수 있고, 프로세스, 전기 또는 기계적 변화들이 본 발명의 범위를 벗어나지 않고 행해질 수 있음이 이해될 것이다. 그러므로 다음의 상세한 설명은 제한하는 의미로 받아들여지지 않아야 한다.
도 1은 본 발명의 하나의 실시예에 따른, 전자 시스템(120)의 일부로서 프로세서(130)와 통신 상태에 있는(예를 들어, 결합되어 있는) 고체 상태 드라이브(SSD)(100), 즉 대량 저장 디바이스의 블럭도이다. 전자 시스템(120)은 자체의 프로세서(130)를 통해 SSD(100)의 동작을 제어한다는 점에서 SSD(100)의 호스트로서 간주될 수 있다. 전자 시스템들의 일부 예들은 개인용 컴퓨터들, 랩탑 컴퓨터(laptop computer)들, 개인용 휴대정보 단말기(PDA)들, 디지털 카메라들, 디지털 매체 재생기들, 디지털 녹음기들, 전자 게임기들 등을 포함한다. 프로세서(130)는 디스크 드라이브 제어기 또는 다른 외부 프로세서일 수 있다. 전형적으로 프로세서(130) 및 SSD(100)를 접속시키는데 이용되는 표준 프로토콜을 이용하는 통신 버스(132)가 존재한다. 통신 버스(132)는 전형적으로 어드레스, 데이터, 전력 및 다양한 I/O 신호들을 포함하는 다수의 신호들로 구성된다. 통신 버스(132)의 유형은 시스템(120)에서 이용되는 드라이브 인터페이스의 유형에 좌우될 것이다. 일부 종래의 디스크 드라이브 인터페이스 버스 프로토콜들의 예들은 IDE, ATA, SATA, PATA, 파이버 채널(fiber channel) 및 SCSI이다. 다른 드라이브 인터페이스들이 존재하고 당업계에 공지되어 있다. 도 1은 본 발명의 실시예들에 집중하기 위해 간소화되었음에 주목해야 한다. 추가 또는 상이한 구성요소들, 접속들 및 I/O 신호들은 본 발명의 범위로부터 벗어나지 않고 당업계에 공지되어 있는 바와 같이 구현될 수 있다. 예를 들어, SSD(100)는 전력 조절/분배 회로, 휘발성 메모리(114)를 위한 전용 제어기 등을 포함할 수 있다. 그러나, 그와 같은 추가 구성요소들은 본 발명의 이해에 필수적인 것은 아니다.
본 발명의 하나의 실시예에 따른 SSD(100)는 도 1에 도시되는 바와 같이, 프로세서(130), 예를 들어 드라이브 제어기가 통신 버스(132)를 통해 SSD(100)와 상호작용할 수 있도록 하는 인터페이스(102)를 포함한다. 인터페이스(102)는 통상적으로 당업자들에게 공지되어 있는 많은 표준화된 커넥터(connector)들 중 하나일 수 있다. 이 인터페이스(102) 커넥터 중 일부 예들은 IDE, ATA, SATA 및 PCMCIA 커넥터들이다. 본 발명의 다양한 실시예들은 다양한 종래의 유형의 HDD들을 에뮬레이팅(emulate)하도록 구성될 수 있기 때문에, 다른 디스크 드라이브 커넥터들은 또한 인터페이스(102)에서 이용될 수 있다.
도 1의 SSD(100)는 또한 마스터 제어기(104), 다수의 메모리 모듈들(1061 내지 106N), 및 휘발성 메모리(114)를 포함한다. 마스터 제어기(104)에 의해 수행되는 기능들 중 일부는 SSD(100) 내의 동작들을 관리하고 프로세서(130)와 같은 SSD(100)의 외부의 디바이스들과 통신 버스(132)를 통해 통신하는 것이다. 메모리 모듈들(1061 내지 106N)은 SSD(100)에 대한 대량 저장 매체의 역할을 한다. 휘발성 메모리(114)는 SSD(100)로부터 그리고 SSD(100)로의 데이터 전송들을 위한 버퍼 저장소 역할을 한다.
마스터 제어기(104)는 SSD(100)의 다양한 동작들을 관리한다. 논의되는 바와 같이, SSD는 표준 HDD에 대한 대체품으로 이용될 수 있고, 표준 인터페이스들 및 통신 프로토콜들을 갖는 많은 표준화된 HDD들이 존재한다. 그러므로, 마스터 제어기(104)의 많은 기능들 중 하나는 이 표준화된 HDD 프로토콜들 중 하나의 동작을 에뮬레이팅하는 것이다. 마스터 제어기(104)의 다른 기능은 SSD(100)에 설치되는 메모리 모듈들(106)의 동작을 관리하는 것이다. 마스터 제어기(104)는 다양한 표준 통신 프로토콜들을 이용하여 메모리 모듈들(106)과 통신하도록 구성될 수 있다. 예를 들어, 본 발명의 하나의 실시예에서, 마스터 제어기(104)는 SATA 프로토콜을 이용하여 메모리 모듈들(106)과 상호 작용한다. 다른 실시예들은 다른 통신 프로토콜들을 이용하여 메모리 모듈들(106)과 통신할 수 있다. 마스터 제어기(104)는 또한 ECC 검사와 같은 메모리 모듈들과 관련된 추가 기능들을 수행할 수 있다. 마스터 제어기(104)의 구현은 하드웨어 또는 하드웨어/소프트웨어 결합을 이용함으로써 달성될 수 있다. 예를 들어, 마스터 제어기(104)는 전체적으로 또는 부분적으로 상태 기계(state machine)에 의해 구현될 수 있다. 마스터 제어기(104)는 본 발명의 하나 이상의 방법들을 수행하도록 더 구성된다.
메모리 모듈들(106)은 내부 통신 버스(112)를 이용하여 마스터 제어기(104)에 결합된다. 마스터 제어기(104) 및 메모리 모듈들(106) 사이의 통신은 도시된 바와 같은 공통 버스(112) 및/또는 마스터 제어기(104) 및 각각의 메모리 모듈(106) 사이의 개별 접속들을 이용함으로써 구현될 수 있다.
제어 회로(110)는 자체의 대응하는 메모리 모듈(1061 내지 106N) 상의 비휘발성 메모리 디바이스들(116)의 동작을 관리한다. 메모리 디바이스들(116)은 플래시 메모리 디바이스들일 수 있다. 제어 회로(110)는 또한 메모리 모듈(1061 내지 106N)과 통신하기 위해 마스터 제어기(104)에 의해 이용되는 통신 프로토콜을 변환하는 역할을 할 수 있다. 예를 들어, 본 발명의 하나의 실시예에서, 마스터 제어기(104)는 메모리 모듈(1061 내지 106N)과의 상호 작용을 위해 SATA 프로토콜을 이용하는 중일 수 있다. 그와 같은 실시예에서, 제어 회로(110)는 SATA 인터페이스를 에뮬레이팅하도록 구성된다. 제어 회로(110)는 또한 보안 특징(security feature)들과 같은 다른 메모리 기능들을 관리하여 메모리 모듈에 저장된 데이터로의 액세스 및 웨어 레벨링(wear leveling)을 조정할 수 있다.
상술한 바와 같이, 대량 저장 디바이스에서 발생된 데이터를 외부 디바이스로부터 수신되는 이용자 데이터의 스트림들로 삽입하는 것은 대량 저장 디바이스에서 삽입이 수행되는 동안 스트리밍이 중단되기 때문에 비효율이 발생할 수 있다. 다양한 실시예들이 두 데이터 유형들에 대한 엔트리(entry)들을 포함하는 링크된 목록을 생성함으로써 이 문제를 처리한다. 엔트리들은 규정된 순서를 갖는다. 예를 들어, 링크된 목록은 이용자 데이터에 대한 세 엔트리들 이후에 메타데이터에 대한 하나의 엔트리를 가지도록 규정될 수 있다. 이는 규정된 데이터 구조를 갖는 스트리밍 데이터를 용이하게 한다.
링크된 목록 프로토콜들은 전송할 데이터의 유닛의 크기 및 상기 데이터의 유닛에 대한 시작 어드레스를 규정함으로써 효율적인 데이터의 스트리밍을 제공한다. 이 방식으로, 데이터는 시작 어드레스에서 시작해서 후속하는 연속 어드레스들을 통해 규정된 크기가 전송될 때까지 스트리밍될 수 있다. 그리고나서 링크된 목록에서의 다음 엔트리가 다음 데이터의 유닛의 크기 및 다음 데이터의 시작 어드레스를 규정하고, 프로세스가 반복될 수 있다.
이전 시스템들에서, 이용자 데이터가 대량 저장 디바이스에 의해 수신되었을 때, 상기 이용자 데이터는 휘발성 메모리에 저장될 것이다. 휘발성 메모리에 저장될 데이터 유닛들의 크기와, 상기 데이터 유닛들 각각이 저장될 곳의 시작 어드레스들을 규정하는 링크된 목록이 생성될 것이다. 마스터 제어기가 후속해서 상기 데이터 유닛들을 자신의 비휘발성 메모리 모듈들에 스트리밍할 때, 이는 전송된 다수의 유닛들을 폴링(polling)하고나서, 메모리 모듈로의 데이터 전송을 중단해서 특정한 수의 이용자 데이터의 유닛들이 전송된 이후에 메타데이터를 전송하기 시작할 것이다. 메타데이터를 전송하는 것이 완료된 이후에, 마스터 제어기는 링크된 목록을 역으로 참조하여 링크된 목록의 다음 엔트리에 따라 이용자 데이터의 스트리밍을 재개시할 것이다.
본원에서 설명되는 다양한 실시예들은 이용자 데이터 엔트리들 내에 있는 메타데이터에 대한 링크된 목록 엔트리들을 삽입한다. 메타데이터 엔트리가 삽입되기 전에 생성될 이용자 데이터 엔트리들의 수에 대한 값이 규정된다. 예를 들어, 이용자 데이터는 하나의 섹터(sector)와 같은 특정한 크기의 유닛들 내의 SDD(100)에 의해 수신될 수 있다. 그러므로, 이용자 데이터에 대한 각각의 링크된 목록 엔트리는 휘발성 메모리(114)에서 상기 수신된 유닛의 저장을 위해 마스터 제어기(104)에 의해 선택된 바와 같이 이용자 데이터의 수신된 유닛을 나타내는 크기 및 시작 어드레스를 규정할 것이다. 섹터에 의해 데이터 유닛들을 규정할 필요가 없을지라도 섹터는 흔히 512 바이트들로 취해지거나 512 바이트들을 섹터 크기로 이용하는 것을 주목하라. 이 예에 대해 계속하면, 페이지당 4 KB의 이용자 데이터 및 80 바이트의 메타데이터에 대해 구성되는 메모리 디바이스에 이용자 데이터를 기록하고, 페이지를 각각 2 KB의 이용자 데이터의 두 섹션들로 분리하고, 이용자 데이터의 각각의 섹션이 각각의 40 바이트의 메타데이터의 섹션에 선행하는 것이 바람직한 경우, 본 예에서의 값은 4로 선택될 것이므로, 수신된 이용자 데이터에 대해 각각 512 바이트의 규정된 크기를 가지는 4개의 링크된 목록 엔트리들이 생성될 것이고, 이후에 40 바이트들의 크기를 규정하는 메타데이터에 대한 링크된 목록 엔트리가 뒤따른다.
이용자 데이터의 수신은 메타데이터 엔트리의 삽입으로 인해 중단될 필요가 없고 상기 엔트리에 대응하는 메타데이터는 링크된 목록 엔트리의 생성 이전에 발생될 필요가 없다. 마스터 제어기(104)가 대응하는 메타데이터 유닛의 크기를 인지하기 때문에, 마스터 제어기는 단지 메타데이터 유닛 크기 및 시작 어드레스에 의해 규정되는 자신의 휘발성 메모리(114) 내의 저장 에어리어들을 예약한다. 일부 메타데이터는 수신된 이용자 데이터, 예를 들어 에러 정정 코드(ECC)의 생성 데이터에 기초한 계산들을 필요로 할 수 있으므로, 이는 차기 이용자 데이터가 수신될 수 있기 전에 상기 데이터의 계산을 필요로 하는 데이터 플로우를 중단할 것이다. 단지 데이터에 대한 저장 위치를 예약하고, 링크된 목록 엔트리를 상술한 바와 같이 생성함으로써, 일단 메타데이터가 생성되고 저장되면, 이용자 데이터 및 이의 대응하는 메타데이터는 중단 없이 메모리 모듈(106)로 스트리밍될 수 있으므로 마스터 제어기(104)가 웨어 레벨링 및 신호 프로세싱과 같은 다른 임무들을 위해 자신의 프로세싱 자원들을 이용하는 것을 가능하게 한다.
상술한 예가 메모리 모듈로의 기록을 위해 이용자 데이터의 수신에 대한 실시예를 기술했을지라도, 본원에서 서술되는 개념들은 또한 메모리 모듈로부터 이용자 데이터를 판독하는데 적용될 수 있다. 그러므로, 메모리 모듈들로부터 수신될 이용자 데이터 유닛들 및 메타 데이터들의 크기 및 위치를 규정하는 링크된 목록이 생성될 것이다. 그리고나서 데이터는 메모리 모듈로부터 스트리밍될 것이고 링크된 목록에 규정된 바대로 상기 어드레스들에 저장될 것이다. 그리고나서 이용자 데이터는 통신 버스(132) 상에서의 출력을 위해 이용 가능할 것이다.
도 2는 본 발명의 실시예에 따른 도 1의 마스터 제어기(104)의 추가적인 세부사항들을 도시하는 블럭 개략도이다. 도 2에서, 마스터 제어기(104)는 프로세서(218)를 포함한다. 프로세서(218)는 SSD(100)의 일반적인 동작들을 제공한다. 예를 들어, 프로세서(218)는 신호 프로세싱을 수행하여 메모리 모듈들(106)로부터 수신되는 신호들을 평가(evaluate)할 수 있고, 웨어 레벨링을 수행하여 다양한 메모리 디바이스들의 상대적으로 고른 이용을 유지할 수 있다. 프로세서(218)는 부가적으로 외부 디바이스로부터 수신되는 명령들을 디코딩할 수 있다. 하나의 실시예의 경우, 프로세서(218)는 본원에서 설명되는 바와 같이 링크된 목록들을 생성한다.
마스터 제어기(104)는 각각 휘발성 메모리(114) 및 비휘발성 메모리 모듈(106)의 제어 및 액세스를 위해 휘발성 메모리 제어기(222) 및 비휘발성 메모리 제어기(224)를 더 포함한다. 다양한 실시예들에서, 프로세서(218)는 링크된 목록들을 생성하도록 구성될 수 있으나, 반면에 비휘발성 메모리 제어기(224)는 프로세서(218)에 의한 부가적인 전송 없이도 메모리 모듈들(106)로 그리고 메모리 모듈들(106)로부터의 링크된 목록들에 의해 규정되는 바대로 데이터를 스트리밍하도록 구성될 수 있다.
도 3은 본 발명의 실시예에 따라 페이지(330)의 데이터 구조의 하나의 실시예를 나타내는 도면이다. 페이지(330)는 하나 이상의 이용자 데이터 부분들(332) 및 하나 이상의 메타데이터 부분들(334)을 갖는다. 메타데이터 부분들(334)은 외부 디바이스에 의한 후속 검색을 위해 메모리 디바이스 상에 저장하도록 외부 디바이스로부터 일반적으로 수신되지 않은 데이터를 포함한다. 예들은 페이지(330)의 논리 어드레스, ECC 데이터, 상태 표시자들 등을 포함한다. 하나의 예로서, 각각의 이용자 데이터 부분(332)은 2,048 바이트들의 이용자 데이터를 포함하고 각각의 메타데이터 부분(334)은 48 바이트들의 메타데이터를 포함한다. 페이지(330)는 설계자가 선택할 수 있는 다른 목적들을 위해 추가 데이터 부분들(도시되지 않음)을 더 포함할 수 있다.
기록 동작 동안 이용자 데이터를 SSD(100)로 제공하는 외부 디바이스가 일반적으로 메타데이터를 인지하지 않기 때문에, 이는 전형적으로 프로그램될 이용자 데이터를 데이터의 하나의 스트림 내의 논리 어드레스, 예를 들어 페이지(330)에 대응하는 어드레스에 제공할 것이다. 상술한 바와 같이, 이 이용자 데이터의 스트림은 규정된 크기의 하나 이상의 유닛들, 예를 들어 데이터의 섹터의 유닛들을 포함할 수 있다. 다양한 실시예들의 경우, 이용자 데이터를 논리 어드레스에 기록하라는 명령을 수신하는 것에 응답하여, 마스터 제어기(104)는 링크된 목록을 생성하여 이용자 데이터의 저장을 위한 유닛 크기들 및 위치들을 규정한다. 마스터 제어기(104)는 부가적으로 링크된 목록 내의 엔트리들을 생성하여 메타데이터의 저장을 위한 유닛 크기들 및 위치들을 규정한다. 링크된 목록의 구조는 페이지(330)의 원하는 데이터 구조에 따를 것이다. 예를 들어, 이용자 데이터 부분들(332a 및 332b)이 각각 2,048 바이트들이고, 메타데이터 부분들(334a 및 334b)이 각각 48 바이트들이고, 이용자 데이터 유닛들이 각각 512 바이트들이고 메타데이터 유닛들은 각각 48 바이트들인 경우, 페이지(330)의 판독 또는 기록을 위한 링크된 목록은 4개의(2,048 바이트/512 바이트) 이용자 데이터 엔트리들을 포함하고, 이후에 하나의 메타데이터 엔트리가 뒤따르고, 그 이후에 4개의 이용자 데이터 엔트리들이 뒤따르고, 그 이후에 하나의 메타데이터 엔트리가 뒤따를 것이다. 각각의 이용자 데이터 엔트리는 512 바이트들의 크기를 규정할 것이고 각각의 메타데이터 엔트리는 48 바이트들의 크기를 규정할 것이다.
도 4a는 본 발명의 실시예에 따른 링크된 목록(440)을 나타내는 도면이다. 링크된 목록(440)은 하나 이상의 이용자 데이터 엔트리들(442) 및 하나 이상의 메타데이터 엔트리들(444)을 포함한다. 이용자 데이터 엔트리들(442) 및 메타데이터 엔트리들(444) 각각에 있는 점선은 각각의 엔트리가 상기 엔트리에 대한 데이터 유닛의 크기 및 상기 데이터 유닛에 대한 시작 어드레스 이 둘 모두를 규정하는 것을 나타낸다.
도 4b는 다양한 데이터 유닛들이 메모리 모듈로의 전송을 위해 저장되고 액세스되는 방법을 개념적으로 도시한, 휘발성 메모리(114)의 일부를 표현하는 도면이다. 휘발성 메모리(114)는 하나 이상의 서브-세그먼트(sub-segment)들(446)을 갖는다. 개별 서브-세그먼트들(446)이 동일 크기를 가질 필요는 없지만, 각각의 서브-세그먼트(446)는 휘발성 메모리(114) 내의 인접하는 어드레스 공간을 나타낸다. 이용자 데이터 유닛들, 예를 들어 도 4b에서의 이용자 데이터(0 내지 7)가 SSD(100)에 의해 수신될 때, 각각의 이용자 데이터 유닛은 링크된 목록(440)에 의해 규정되는 바와 같이 서브-세그먼트(446)에 저장된다. 서브-세그먼트들(446)이 인접하는 어드레스 공간을 나타낼지라도, 개별 이용자 데이터 유닛들은 인접하는 서브-세그먼트들(446)에 저장될 필요는 없음을 주목하라. 예를 들어, 이용자 데이터(2)가 종료하고 이용자 데이터(3)가 시작하는 장소들 사이에 저장 위치들이 있을 수 있다. 이 저장 위치들은 이용되지 않을 수 있고, 또는 상기 저장 위치들은 프로세서(218)에 의해 이용되는 다른 데이터의 저장을 위해 이미 지정될 수 있다.
메타데이터 유닛들, 예를 들어 도 4b에서의 메타데이터(0 내지 1)는 이용자 데이터 유닛들이 수신되고 있는 동안 또는 상기 데이터 전송이 완료된 후에 휘발성 메모리(114)에 기록될 수 있다. 메타데이터 유닛들은 링크된 목록(440)에 의해 규정되는 바와 같이 서브-세그먼트(446) 내에 저장된다. 이용자 데이터에 있어서와 마찬가지로, 개별 메타데이터 유닛들은 인접하는 서브-세그먼트들(446)에 저장될 필요가 없다. 그러나, 메타데이터 유닛들의 데이터는 개별 서브-세그먼트들(446)의 연속 어드레스 공간들에 저장된다.
링크된 목록(440)에 대한 엔트리들은 상기 엔트리들에 대응하는 데이터를 수신하기 전에 프로그래밍된다. 그러나, 전체 링크된 목록(440)은 데이터 전송을 완료하기 전에 생성될 필요는 없다. 예를 들어, 호스트 디바이스가 SSD(100)에 기록 명령을 발행할지라도, 기록 명령은 8개의 이용자 데이터 유닛들을 선행할 수 있다. 그러므로, 링크된 목록 엔트리가 제 1 이용자 데이터 유닛을 수신하기 전에 제 1 이용자 데이터 유닛에 대해 생성될지라도, 후속 링크된 목록 엔트리들은 제 1 이용자 데이터 유닛이 수신되고 있는 동안 생성될 수 있다. 또한, 메타데이터 유닛들에 대한 링크된 목록 엔트리들은 후속 스트리밍을 위해 메타데이터를 휘발성 메모리(114)에 기록하기 전에 생성되지만, 메타데이터를 생성하기 전에 생성될 필요는 없다.
다양한 실시예들은 부가적으로 메타데이터 유닛들이 휘발성 메모리(114)에 전송될 때, 또는 메타데이터 유닛들이 메모리 모듈들(106)에 전송되기 전에 제어될 수 있다. 예를 들어, 메타데이터는 자신의 대응하는 링크된 목록 엔트리들이 유효 시작 어드레스들로 프로그래밍될 때까지 휘발성 메모리(114)에 전송되어서는 안 된다. 게다가, 이용자 데이터의 전송이 완료된 이후에까지 일부 메타데이터가 생성되지 않을 수 있기 때문에, 그와 같은 메타데이터를 메모리 모듈(106)로 스트리밍하는 것은 링크된 목록에 의해 규정된 서브-세그먼트가 유효 메타데이터를 포함한 이후까지도 지연되어야 한다. 그러므로, 비휘발성 메모리 제어기(224)는 메타데이터의 대응하는 링크된 목록 엔트리(444)가 생성될 때까지 메타데이터를 스트리밍하는 휘발성 메모리(114)로 메타데이터를 저장하는 것을 금지하거나, 링크된 목록에 의해 규정되는 서브-세그먼트(446)가 유효 메타데이터를 포함한 이후까지 휘발성 메모리(114)로부터 메타데이터의 스트리밍을 금지하도록 구성될 수 있다.
이용자 데이터 유닛들 및 메타데이터 유닛들을 데이터의 비휘발성 저장을 위해 메모리 모듈로 전송하기 위하여, 비휘발성 메모리 제어기(224)는 이후에 링크된 목록(440)에 따라 휘발성 메모리로부터 데이터를 스트리밍한다. 그러므로, 도 4b에 도시되는 바와 같이, 이용자 데이터 0은 이용자 데이터 1 내지 3에 선행하여 메모리 모듈에 제공된다. 이용자 데이터 3의 전송의 완료 시에, 메타데이터 0이 이용자 데이터 4 내지 7에 선행하여 전송되고나서, 그 후에 메타데이터 1이 전송된다. 이 방식으로, 이용자 데이터 및 메타데이터는 규정된 데이터 구조를 가지는 메모리 모듈에 제공되며, 메모리 모듈은 메타데이터의 삽입을 위해 프로세서(218)에 의한 데이터 스트리밍 동작의 중단을 요구하지 않는다. 메타데이터는 일반적으로 외부 디바이스에 제공되지 않기 때문에, SSD(100)의 명령을 판독한 것에 응답할 때, 휘발성 메모리(114)로부터 통신 버스(132)로의 데이터 스트리밍은 링크된 목록(440) 내의 메타데이터 엔트리(444)를 생략해야만 한다.
도 5는 본 발명의 실시예에 따른 대량 저장 디바이스에 데이터를 기록하는 방법의 순서도이다. 550에서, 기록 명령이 디코딩(decoding)된다. 디코딩은 일반적으로 대량 저장 디바이스의 마스터 제어기의 프로세서에 의해 수행될 수 있다.
기록 명령은 이용자 데이터가 기록되어야 하는 적어도 논리 어드레스를 규정하는 외부 제공 명령이다. 기록 명령은 대량 저장 디바이스에 기록될 이용자 데이터를 더 제공한다. 기록 명령은 이용자 데이터 유닛 크기를 규정할 수 있을지라도, 기록 명령은 프로토콜에 의해 규정될 수 있다. 그러므로, 주어진 프로토콜의 기록 명령은 디바이스에 명령을 명시적으로 제공할 필요없이 상기 명령을 따르는 다수의 이용자 데이터 유닛들 및 상기 유닛들 각각의 크기를 규정할 수 있다.
552에서, 기록 명령을 디코딩하는 것에 응답하여, 링크된 목록이 생성된다. 링크된 목록은 이용자 데이터에 대한 규정된 엔트리들의 수, 메타데이터에 대한 규정된 엔트리들의 수, 및 규정된 엔트리들의 순서를 가질 것이다. 상술한 바와 같이, 각각의 링크된 목록 엔트리는 저장될 데이터의 유닛 크기 및 상기 데이터의 유닛이 저장되어야 할 시작 어드레스를 규정할 것이다. 링크된 목록 엔트리들은 어떤 유형의 데이터가 자신들의 대응하는 어드레스들에 저장되는지를 규정할 필요가 없다. 예를 들어, 대량 저장 디바이스의 마스터 제어기의 프로세서는 링크된 목록들을 생성하여, 메타데이터 유닛을 다음 엔트리의 어드레스에 저장하기 전에, 이용자 데이터 유닛들을 특정한 수의 엔트리들의 어드레스들에 저장하도록 구성될 수 있다. 링크된 목록은 충분한 엔트리들, 즉, 엔트리들의 수 및 각각의 엔트리에 대한 크기의 결합을 포함하여 기록 명령과 연관되는 모든 이용자 데이터가 저장 위치들을 규정하도록 해야 한다. 링크된 목록은 또한 메타데이터에 대한 적어도 하나의 엔트리를 포함할 것이다.
554에서, 기록 명령에 응답하여 수신되는 이용자 데이터는 이용자 데이터에 대한 링크된 목록 엔트리들에 의해 규정되는 어드레스들 및 유닛 크기들에 따라 저장된다. 예를 들어, 호스트는 이용자 데이터 유닛들을 대량 저장 디바이스에 전송하기 시작할 것이다. 제 1 이용자 데이터 유닛이 수신될 때, 제 1 이용자 데이터 유닛의 데이터는 시작 어드레스에 의해 규정된 위치에서 시작하여 휘발성 메모리에 기록되고, 그 후에 제 1 이용자 데이터 유닛의 데이터는 링크된 목록 엔트리에 의해 규정되는 크기에 도달할 때까지 인접하는 메모리 공간의 후속 어드레스들에 기록된다. 그리고나서 수신되는 다음의 이용자 데이터 유닛은 기록 명령과 연관되는 이용자 데이터 모두가 수신될 때까지 이용자 데이터에 대한 다음 링크된 목록 엔트리 등등에 따라 휘발성 메모리에 저장될 것이다.
556에서, 수신된 이용자 데이터와 연관되는 대량 저장 디바이스에 의해 생성되는 메타데이터는 메타데이터에 대한 링크된 목록 엔트리들에 의해 규정되는 어드레스들 및 유닛 크기들에 따라 저장된다. 이용자 데이터의 수신에 따라 도 5에 도시될지라도, 메타데이터의 일부 또는 전부는 이용자 데이터의 전부가 수신되기 전에 자신의 링크된 목록 엔트리들에 따라 저장될 수 있다. 예를 들어, 기록 명령은 8개의 이용자 데이터 유닛들과 연관될 수 있다. 이 예의 경우, 대량 저장 디바이스는 첫째의 4 개의 이용자 데이터 유닛들을 수신하고, 상기 이용자 데이터 유닛들에 대한 메타데이터를 생성하고, 마지막 4개의 이용자 데이터 유닛들이 수신되기 전에 상기 메타데이터를 휘발성 메모리에 저장할 수 있다.
558에서, 이용자 데이터 및 메타데이터는 링크된 목록에 의해 규정되는 데이터 구조를 갖는 비휘발성 메모리로 스트리밍된다. 예를 들어, 링크된 목록이 각각 512 바이트들의 4개의 이용자 데이터 엔트리들, 48 바이트들의 하나의 메타데이터 엔드리, 각각 512 바이트들의 4개의 이용자 데이터 엔트리들, 및 48 바이트들의 하나의 메타데이터 엔트리를 가지는 경우, 비휘발성 메모리에 제공되는 데이터의 구조는 2,048 바이트들의 이용자 데이터, 그 뒤에는 48 바이트들의 메타데이터, 그 뒤에는 2,048 바이트들의 이용자 데이터, 그리고 그 뒤에는 48 바이트들의 메타데이터의 구조를 가질 것이다.
도 6은 본 발명의 실시예에 따른 대량 저장 디바이스로부터의 데이터를 판독하는 방법의 순서도이다. 660에서, 판독 명령이 디코딩된다. 디코딩은 일반적으로 대량 저장 디바이스의 마스터 제어기의 프로세서에 의해 수행될 수 있다.
판독 명령은 이용자 데이터가 검색되어야 할 적어도 논리 어드레스를 규정하는 외부 제공 명령이다. 판독 명령이 이용자 데이터 유닛 크기를 규정할 수 있을지라도, 이는 상기 데이터를 포함하는 메모리 디바이스의 데이터 구조에 의해 규정될 수 있다. 그러므로, 메모리 디바이스의 데이터 구조는 상기 디바이스에 명령을 명시적으로 제공할 필요없이 검색할 다수의 이용자 데이터 유닛들 및 상기 유닛들의 각각의 크기를 규정할 수 있다.
662에서, 판독 명령을 디코딩하는 것에 응답하여, 링크된 목록이 생성된다. 링크된 목록은 이용자 데이터에 대한 규정된 엔트리들의 수, 메타데이터에 대한 규정된 엔트리들의 수, 및 엔트리들의 규정된 순서를 가질 것이다. 상술한 바와 같이, 데이터가 외부 디바이스로부터 수신되든지 또는 대량 저장 디바이스의 메모리 모듈로부터 수신되는지 간에, 각각의 링크된 목록 엔트리는 저장될 데이터의 유닛 크기 및 상기 데이터의 유닛이 저장되어야 할 시작 어드레스를 규정할 것이다. 링크된 목록 엔트리들은 어떤 유형의 데이터가 자신들의 대응하는 어드레스들에 저장되는지를 규정할 필요가 없다. 예를 들어, 대량 저장 디바이스의 마스터 제어기의 프로세서는 링크된 목록들을 생성하여 특정한 수의 엔트리들의 어드레스들에 이용자 데이터 유닛들을 저장하고 난 후에 다음 엔트리의 어드레스에 메타데이터 유닛을 저장하도록 구성될 수 있다. 링크된 목록은 충분한 엔트리들, 즉, 다수의 엔트리들 및 각각의 엔트리에 대한 크기의 결합을 포함함으로써 판독 명령과 연관되는 모든 데이터가 규정된 저장 위치들을 가지도록 해야 한다. 링크된 목록은 또한 메타데이터에 대한 적어도 하나의 엔트리를 포함할 것이다.
664에서, 판독 명령에 응답하여 대량 저장 디바이스의 메모리 디바이스로부터 데이터가 판독되고, 상기 데이터는 상기 데이터에 대한 링크된 목록 엔트리들에 의해 규정되는 유닛 크기들 및 어드레스들에 따라 휘발성 메모리로 스트리밍된다. 예를 들어, 판독 명령으로 인해 메모리 디바이스로부터 판독되는 데이터의 페이지가 형성될 수 있다. 그 후에 이 데이터의 페이지는 링크된 목록 엔트리들에 따라 휘발성 메모리에 기록된다. 예를 들어, 링크된 목록이 각각 512 바이트들의 4개의 이용자 데이터 엔트리들, 48 바이트들의 하나의 메타데이터 엔트리, 각각 512 바이트들의 4개의 이용자 데이터 엔트리들 및 48 바이트들의 하나의 메타데이터 엔트리를 가지는 경우, 데이터의 처음 2,048 바이트들은 첫 번째 이용자 데이터 엔트리들에 따라 저장되고, 다음 데이터의 48 바이트들은 첫 번째 메타데이터 엔트리에 따라 저장되고, 데이터의 다음 2,048 바이트들은 마지막 4개의 이용자 데이터 엔트리들에 따라 저장되고, 데이터의 다음 48 바이트들은 마지막 메타데이터 엔트리에 따라 저장된다. 하나의 실시예의 경우, 비휘발성 메모리 제어기는 마스터 제어기의 프로세서에 의한 개입 없이 비휘발성 메모리 디바이스로부터 휘발성 메모리 제어기로 데이터를 스트리밍하도록 구성된다. 이 방식으로, 데이터가 링크된 목록에 따라 휘발성 메모리에 정주되어 있는 동안, 프로세서는 자유롭게 다른 임무들을 처리하므로 휘발성 메모리로의 데이터 전송에 관여될 필요가 없다.
666에서, 이용자 데이터는 외부 디바이스로 출력된다. 메타데이터는 일반적으로 대량 저장 디바이스에 의해 내부에서 이용되고 외부 디바이스들에 의해 이용하기 위해 의도되지 않는다. 따라서, 링크된 목록은 단지 메타데이터에 대한 링크된 목록 엔트리들을 생략함으로써 검색된 데이터의 이용자 데이터 부분들만을 전송하는데 이용될 수 있다.
특정 실시예들이 본원에서 도시되고 설명되었을지라도, 동일한 목적을 달성하기 위해 계산되는 임의의 장치가 도시된 특정한 실시예들을 대신하여 대체될 수 있음이 당업자에 의해 인식될 것이다. 본 발명의 많은 개조물들은 당업자에게 명백할 것이다. 따라서, 본 출원은 본 명세서의 임의의 개조물들 또는 변형물들을 포괄하도록 의도된다.
Claims (25)
- 대량 저장 디바이스에 데이터를 기록하는 방법으로서,
상기 대량 저장 디바이스에서 수신된 기록 명령을 디코딩하는 단계;
상기 기록 명령을 디코딩하는 것에 응답하여 링크된 목록(linked list)을 생성하는 단계로서, 상기 링크된 목록은 외부 디바이스로부터 수신될 이용자 데이터에 대한 하나 이상의 엔트리들, 상기 대량 저장 디바이스에 의해 생성되는 메타데이터에 대한 하나 이상의 엔트리들, 및 규정된 데이터 구조에 대응하는 규정된 엔트리들의 순서를 가지는, 링크된 목록을 생성하는 단계;
상기 기록 명령에 응답하여 상기 외부 디바이스로부터 이용자 데이터를 수신하고, 이용자 데이터에 대한 상기 링크된 목록의 상기 하나 이상의 엔트리들에 따라 상기 이용자 데이터를 휘발성 메모리에 저장하는 단계;
메타데이터에 대한 상기 링크된 목록의 상기 하나 이상의 엔트리들에 따라 상기 수신된 이용자 데이터와 연관되는 메타데이터를 상기 휘발성 메모리에 저장하는 단계; 및
상기 이용자 데이터 및 상기 메타데이터를, 상기 링크된 목록에 의해 규정된 데이터 구조를 갖는 비휘발성 메모리에 스트리밍하는 단계를 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 1에 있어서,
상기 링크된 목록을 생성하는 단계는 각각의 엔트리에 대응하는 데이터의 유닛의 크기를 규정하는 엔트리들과, 상기 대응하는 데이터가 저장되어야 할 상기 휘발성 메모리의 시작 어드레스를 규정하는 엔트리들을 생성하는 단계를 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 2에 있어서,
데이터의 유닛의 크기를 규정하는 것은 상기 기록 명령의 프로토콜에 의해 규정된 크기에 대응하는 이용자 데이터의 유닛의 크기를 규정하는 것을 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
규정된 데이터 구조에 대응하는 규정된 엔트리들의 순서를 갖는 상기 링크된 목록을 생성하는 단계는 상기 기록 명령에 의해 어드레싱(addressing)되는 상기 비휘발성 메모리의 페이지의 데이터 구조에 대응하는 규정된 엔트리들의 순서를 갖는 링크된 목록을 생성하는 단계를 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
상기 메타데이터를 저장하는 단계는 상기 기록 명령과 연관되는 상기 이용자 데이터 전부를 수신하기 전에 상기 메타데이터의 적어도 일부를 저장하는 단계를 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
상기 수신된 데이터에 응답하여 상기 메타데이터의 적어도 일부를 생성하는 단계를 더 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 6에 있어서,
상기 수신된 데이터에 응답하여 상기 메타데이터의 적어도 일부를 생성하는 단계는 상기 수신된 데이터에 대한 에러 정정 코드 데이터를 생성하는 단계를 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
상기 기록 명령을 디코딩하는 것에 응답하여 상기 링크된 목록을 생성하는 단계로서, 상기 링크된 목록은 상기 외부 디바이스로부터 수신될 이용자 데이터에 대한 둘 이상의 엔트리들과, 상기 대량 저장 디바이스에 의해 생성되는 메타데이터에 대한 둘 이상의 엔트리들을 가지는, 링크된 목록을 생성하는 단계;
상기 외부 디바이스로부터 상기 이용자 데이터를 이용자 데이터의 제 1 및 제 2 부분들로서 수신하고, 이용자 데이터에 대한 상기 링크된 목록의 둘 이상의 엔트리들에 따라 이용자 데이터의 상기 제 1 및 제 2 부분들을 상기 휘발성 메모리에 저장하는 단계;
상태 표시자들, 에러 정정 코드 데이터 및 매핑 정보(mapping information) 중 적어도 하나를 포함하는 이용자 데이터의 수신된 제 1 부분과 연관되는 제 1 메타데이터를 생성하는 단계;
상태 표시자들, 에러 정정 코드 데이터 및 매핑 정보 중 적어도 하나를 포함하는 이용자 데이터의 수신된 제 1 부분과 연관되는 제 2 메타데이터를 생성하는 단계;
상기 이용자 데이터의 제 2 부분의 전부를 수신하기 이전에 메타데이터에 대한 상기 링크된 목록의 둘 이상의 엔트리들에 따라 상기 제 1 메타데이터를 상기 휘발성 메모리에 저장하는 단계; 및
상기 이용자 데이터의 제 2 부분을 수신한 후에 메타데이터에 대한 상기 링크된 목록의 둘 이상의 엔트리들에 따라 상기 제 2 메타데이터를 상기 휘발성 메모리에 저장하는 단계를 더 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 8에 있어서,
상기 링크된 목록을 생성하는 단계는 각각의 엔트리에 대응하는 데이터의 유닛의 크기를 규정하는 엔트리들과, 상기 대응하는 데이터가 저장되어야 할 휘발성 메모리의 시작 어드레스를 규정하는 엔트리들을 생성하는 단계를 포함하고, 이용자 데이터에 대한 데이터의 유닛의 크기는 메타데이터에 대한 유닛의 크기와 상이한, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 8에 있어서,
규정된 데이터 구조에 대응하는 규정된 엔트리들의 순서를 갖는 상기 링크된 목록을 생성하는 단계는 상기 기록 명령에 의해 어드레싱되는 상기 비휘발성 메모리의 페이지의 데이터 구조에 대응하는 규정된 엔트리들의 순서를 갖는 링크된 목록을 생성하는 단계를 포함하고, 상기 비휘발성 메모리의 상기 페이지의 상기 데이터 구조는 이용자 데이터 부분들로 인터리빙(interleaving)되는 메타데이터 부분들을 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 대량 저장 디바이스로부터 데이터를 판독하는 방법으로서,
상기 대량 저장 디바이스에서 수신된 판독 명령을 디코딩하는 단계;
상기 판독 명령을 디코딩하는 것에 응답하여 링크된 목록을 생성하는 단계로서, 상기 링크된 목록은 이용자 데이터에 대한 하나 이상의 엔트리들, 메타데이터에 대한 하나 이상의 엔트리들, 및 상기 대량 저장 디바이스의 비휘발성 메모리의 데이터 구조에 대응하는 규정된 엔트리들의 순서를 가지는, 링크된 목록을 생성하는 단계;
상기 판독 명령에 응답하여 상기 비휘발성 메모리로부터 데이터를 판독하고 상기 링크된 목록에 따라 상기 데이터를 휘발성 메모리에 저장하는 단계; 및
상기 데이터의 적어도 일부를 외부 디바이스에 출력하는 단계를 포함하는, 대량 저장 디바이스로부터 데이터를 판독하는 방법. - 청구항 11에 있어서,
상기 링크된 목록을 생성하는 단계는 각각의 엔트리에 대응하는 데이터의 유닛의 크기를 규정하는 엔트리들과, 상기 대응하는 데이터가 저장되어야 할 상기 휘발성 메모리의 시작 어드레스를 규정하는 엔트리들을 생성하는 단계를 포함하는, 대량 저장 디바이스에 데이터를 기록하는 방법. - 청구항 12에 있어서,
데이터의 유닛의 크기를 규정하는 것은 상기 판독 명령의 프로토콜에 의해 규정되는 크기에 대응하는 이용자 데이터의 유닛의 크기를 규정하는 것을 포함하는, 대량 저장 디바이스로부터 데이터를 판독하는 방법. - 청구항 11 내지 청구항 13 중 어느 한 항에 있어서,
규정된 데이터 구조에 대응하는 규정된 엔트리들의 순서를 갖는 상기 링크된 목록을 생성하는 단계는 상기 판독 명령에 의해 어드레싱되는 상기 비휘발성 메모리의 페이지의 데이터 구조에 대응하는 규정된 엔트리들의 순서를 갖는 링크된 목록을 생성하는 단계를 포함하는, 대량 저장 디바이스로부터 데이터를 판독하는 방법. - 청구항 11 내지 청구항 13 중 어느 한 항에 있어서,
상기 데이터의 적어도 일부를 외부 디바이스로 출력하는 단계는 외부 디바이스로부터 수신된 데이터에 대응하는 데이터의 일부만을 출력하는 단계 및 상기 대량 저장 디바이스에 의해 생성된 데이터의 일부를 출력하지 않는 단계를 포함하는, 대량 저장 디바이스로부터 데이터를 판독하는 방법. - 청구항 11 내지 청구항 13 중 어느 한 항에 있어서,
상기 판독 명령을 디코딩하는 것에 응답하여 상기 링크된 목록을 생성하는 단계를 더 포함하고, 상기 링크된 목록은 이용자 데이터에 대한 둘 이상의 엔트리들 및 메타데이터에 대한 둘 이상의 엔트리들을 갖고,
상기 데이터의 적어도 일부를 외부 디바이스로 출력하는 단계는, 메타데이터에 대한 상기 링크된 목록 엔트리들에 대응하는 데이터를 외부 디바이스에 출력하지 않고, 이용자 데이터에 대한 상기 링크된 목록 엔트리들에 대응하는 데이터를 외부 디바이스에 출력하는 단계를 포함하는, 대량 저장 디바이스로부터 데이터를 판독하는 방법. - 청구항 16에 있어서,
상기 이용자 데이터에 대한 상기 링크된 목록 엔트리들에 대응하는 데이터를 출력하는 단계는 상기 데이터를 판독하는 동안 생성되는 에러들을 정정하기 위해서 메타데이터에 대한 상기 링크된 목록 엔트리들에 대응하는 데이터를 이용하는 단계를 포함하는, 대량 저장 디바이스로부터 데이터를 판독하는 방법. - 마스터 제어기;
상기 마스터 제어기에 연결되는 휘발성 메모리; 및
상기 마스터 제어기와 연결되고 비휘발성 메모리 디바이스들을 포함하는 하나 이상의 메모리 모듈들을 포함하고;
상기 마스터 제어기는 수신된 판독 및 기록 명령에 응답하여 링크된 목록을 생성하도록 구성되고;
상기 링크된 목록은 외부 디바이스로부터 수신되거나 외부 디바이스로 출력될 이용자 데이터에 대한 하나 이상의 엔트리들을 포함하고;
상기 링크된 목록은 상기 대량 저장 디바이스에 의해 생성될 메타데이터에 대한 하나 이상의 엔트리들을 포함하고;
상기 링크된 목록의 엔트리들은 규정된 데이터 구조에 대응하는 순서를 갖는, 대량 저장 디바이스. - 청구항 18에 있어서,
상기 규정된 데이터 구조는 상기 수신된 판독 또는 기록 명령에 의해 어드레싱되는 비휘발성 메모리 디바이스의 물리적 페이지의 데이터 구조에 대응하는, 대량 저장 디바이스. - 청구항 19에 있어서,
상기 규정된 데이터 구조는 상기 판독 또는 기록 명령의 프로토콜에 의해 규정되는 데이터 유닛 크기들에 추가적으로 대응하는, 대량 저장 디바이스. - 청구항 18 내지 청구항 20 중 어느 한 항에 있어서,
각각의 링크된 목록 엔트리는, 상기 엔트리에 대응하는 데이터의 유닛의 크기에 대한 표시와, 상기 대응하는 데이터의 유닛이 저장될 휘발성 메모리의 시작 어드레스의 표시를 포함하는, 대량 저장 디바이스. - 청구항 18 내지 청구항 20 중 어느 한 항에 있어서,
상기 마스터 제어기는, 판독 명령에 응답하여, 이용자 데이터에 대한 상기 링크된 목록 엔트리들에만 대응하는 외부 디바이스에 데이터를 출력하도록 추가적으로 구성되는, 대량 저장 디바이스. - 청구항 18 내지 청구항 20 중 어느 한 항에 있어서,
상기 마스터 제어기는 프로세서, 휘발성 메모리 제어기, 및 비휘발성 메모리 제어기를 더 포함하고, 상기 비휘발성 메모리 제어기는 판독 명령에 응답하여, 프로세서에 의한 개입 없이 비휘발성 메모리 디바이스로부터 휘발성 메모리 제어기로 데이터를 스트리밍하도록 구성되는, 대량 저장 디바이스. - 청구항 18 내지 청구항 20 중 어느 한 항에 있어서,
상기 마스터 제어기는, 기록 명령에 응답하여, 수신된 이용자 데이터에 대응하는 메타데이터를 생성하고 상기 링크된 목록에 따라 상기 메타데이터를 상기 휘발성 메모리에 저장하도록 추가적으로 구성되는, 대량 저장 디바이스. - 청구항 24에 있어서,
상기 마스터 제어기는 상기 이용자 데이터 모두가 수신되기 전에 수신된 이용자 데이터에 대응하는 메타데이터의 적어도 일부를 저장하도록 추가적으로 구성되는, 대량 저장 디바이스.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN0810211463.7 | 2008-09-26 | ||
CN2008102114637A CN101685381B (zh) | 2008-09-26 | 2008-09-26 | 固态大容量存储装置的数据串流 |
US12/327,879 US8930645B2 (en) | 2008-09-26 | 2008-12-04 | Method and apparatus using linked lists for streaming of data for soild-state bulk storage device |
US12/327,879 | 2008-12-04 | ||
PCT/US2009/057451 WO2010036572A2 (en) | 2008-09-26 | 2009-09-18 | Data streaming for solid-state bulk storage devices |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110059792A true KR20110059792A (ko) | 2011-06-03 |
KR101359772B1 KR101359772B1 (ko) | 2014-02-06 |
Family
ID=42048553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117009371A KR101359772B1 (ko) | 2008-09-26 | 2009-09-18 | 고체 상태 대량 저장 디바이스들을 위한 데이터 스트리밍 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8930645B2 (ko) |
EP (1) | EP2342644A4 (ko) |
JP (1) | JP5263561B2 (ko) |
KR (1) | KR101359772B1 (ko) |
CN (1) | CN101685381B (ko) |
WO (1) | WO2010036572A2 (ko) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8713066B1 (en) * | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8638602B1 (en) * | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
WO2012092347A2 (en) | 2010-12-28 | 2012-07-05 | Digital Storage Solutions, Inc. | System for writing and dispensing solid-state storage devices |
KR101861247B1 (ko) * | 2011-04-06 | 2018-05-28 | 삼성전자주식회사 | 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템 |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US9158461B1 (en) | 2012-01-18 | 2015-10-13 | Western Digital Technologies, Inc. | Measuring performance of data storage systems |
KR102036348B1 (ko) * | 2012-02-27 | 2019-10-24 | 삼성전자 주식회사 | 메모리 컨트롤러 및 이의 동작 방법 |
US9146856B2 (en) * | 2012-04-10 | 2015-09-29 | Micron Technology, Inc. | Remapping and compacting in a memory device |
WO2013166101A1 (en) * | 2012-05-02 | 2013-11-07 | Massachusetts Institute Of Technology | Managing buffer memory |
US8984247B1 (en) * | 2012-05-10 | 2015-03-17 | Western Digital Technologies, Inc. | Storing and reconstructing mapping table data in a data storage system |
JP6000732B2 (ja) * | 2012-08-03 | 2016-10-05 | キヤノン株式会社 | データ転送装置及びその制御方法、プログラム |
US9582213B2 (en) | 2013-02-21 | 2017-02-28 | Netapp, Inc. | Object store architecture for distributed data processing system |
JP5695126B2 (ja) | 2013-05-14 | 2015-04-01 | 株式会社日立製作所 | 計算機システム、サーバモジュール及びストレージモジュール |
CN104572432B (zh) * | 2013-10-24 | 2018-09-04 | 杭州迪普科技股份有限公司 | 一种无锁链表管理装置 |
TWI530954B (zh) * | 2013-11-22 | 2016-04-21 | 新唐科技股份有限公司 | 保護非揮發性記憶體中儲存之程式碼的裝置 |
JP6318769B2 (ja) * | 2014-03-28 | 2018-05-09 | 富士通株式会社 | ストレージ制御装置、制御プログラム、および制御方法 |
US20150339069A1 (en) * | 2014-05-22 | 2015-11-26 | Kabushiki Kaisha Toshiba | Memory system and method |
JP6050794B2 (ja) * | 2014-08-22 | 2016-12-21 | 株式会社日立製作所 | フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置 |
US9811456B2 (en) * | 2014-11-26 | 2017-11-07 | Advanced Micro Devices, Inc. | Reliable wear-leveling for non-volatile memory and method therefor |
US10089339B2 (en) * | 2016-07-18 | 2018-10-02 | Arm Limited | Datagram reassembly |
US10409518B1 (en) | 2017-04-20 | 2019-09-10 | Seagate Technology Llc | Reordered local data deduplication in storage devices |
GB201709499D0 (en) * | 2017-06-15 | 2017-08-02 | Microsoft Technology Licensing Llc | Memory management in non-volatile memory |
CN115328856B (zh) * | 2022-07-05 | 2023-05-09 | 荣耀终端有限公司 | 一种文件页管理的方法、装置及电子设备 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06103225A (ja) * | 1992-09-18 | 1994-04-15 | Fujitsu Ltd | チェーン式dma方式及びそのためのdmaコントローラ |
JPH07336408A (ja) * | 1994-06-06 | 1995-12-22 | Hitachi Ltd | 通信制御システム及び通信制御装置 |
US5996054A (en) * | 1996-09-12 | 1999-11-30 | Veritas Software Corp. | Efficient virtualized mapping space for log device data storage system |
JP3563541B2 (ja) * | 1996-09-13 | 2004-09-08 | 株式会社東芝 | データ格納装置及びデータ格納方法 |
EP0837397B1 (en) * | 1996-10-18 | 2006-04-05 | Matsushita Electric Industrial Co., Ltd. | Data transfer apparatus and data transfer system for arbitrating a plurality of I/O ports in DMA |
US6378035B1 (en) * | 1999-04-06 | 2002-04-23 | Microsoft Corporation | Streaming information appliance with buffer read and write synchronization |
JP2000347815A (ja) * | 1999-06-07 | 2000-12-15 | Hitachi Ltd | ディスクアレイシステム |
JP2002140286A (ja) * | 2000-10-31 | 2002-05-17 | Ricoh Co Ltd | 情報処理装置及びdma転送方法 |
JP3979486B2 (ja) * | 2001-09-12 | 2007-09-19 | 株式会社ルネサステクノロジ | 不揮発性記憶装置およびデータ格納方法 |
JP2004021811A (ja) * | 2002-06-19 | 2004-01-22 | Hitachi Ltd | 不揮発メモリを使用したディスク制御装置 |
US7127465B2 (en) * | 2002-09-30 | 2006-10-24 | Sun Microsystems, Inc. | Memory-efficient metadata organization in a storage array |
US7093101B2 (en) * | 2002-11-21 | 2006-08-15 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
EP1640872B1 (en) * | 2003-06-27 | 2008-10-15 | Fujitsu Limited | Data transfer method and system |
US20060031628A1 (en) * | 2004-06-03 | 2006-02-09 | Suman Sharma | Buffer management in a network device without SRAM |
US8327099B2 (en) * | 2005-04-27 | 2012-12-04 | Incomm Technologies Co., Ltd | Method for soft configuring a memory device |
US20080162782A1 (en) * | 2005-06-15 | 2008-07-03 | Nagarajan Suresh | Using Transacted Writes and Caching Mechanism to Improve Write Performance in Multi-Level Cell Flash Memory |
US20060294300A1 (en) * | 2005-06-22 | 2006-12-28 | Seagate Technology Llc | Atomic cache transactions in a distributed storage system |
EP1739672A1 (en) * | 2005-07-01 | 2007-01-03 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for managing memory accesses in an AV decoder |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
JP2007310627A (ja) * | 2006-05-18 | 2007-11-29 | Konica Minolta Business Technologies Inc | 画像処理装置 |
US7822891B2 (en) * | 2006-06-13 | 2010-10-26 | Broadcom Corporation | System and method for transferring a multidimensional array of data to a non-contiguous buffer |
JP4883797B2 (ja) * | 2006-09-08 | 2012-02-22 | キヤノン株式会社 | 記録装置 |
WO2008070813A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US7802005B2 (en) * | 2007-03-30 | 2010-09-21 | Motorola, Inc. | Method and apparatus for configuring buffers for streaming data transfer |
JP2008293484A (ja) * | 2007-04-27 | 2008-12-04 | Panasonic Corp | バッファメモリ共有装置 |
US8386630B1 (en) * | 2007-09-09 | 2013-02-26 | Arris Solutions, Inc. | Video-aware P2P streaming and download with support for real-time content alteration |
US20090125726A1 (en) * | 2007-11-14 | 2009-05-14 | Mcm Portfolio Llc | Method and Apparatus of Providing the Security and Error Correction Capability for Memory Storage Devices |
US7962452B2 (en) * | 2007-12-28 | 2011-06-14 | International Business Machines Corporation | Data deduplication by separating data from meta data |
-
2008
- 2008-09-26 CN CN2008102114637A patent/CN101685381B/zh active Active
- 2008-12-04 US US12/327,879 patent/US8930645B2/en active Active
-
2009
- 2009-09-18 WO PCT/US2009/057451 patent/WO2010036572A2/en active Application Filing
- 2009-09-18 EP EP09816724A patent/EP2342644A4/en not_active Withdrawn
- 2009-09-18 JP JP2011529124A patent/JP5263561B2/ja active Active
- 2009-09-18 KR KR1020117009371A patent/KR101359772B1/ko active IP Right Grant
-
2015
- 2015-01-05 US US14/589,382 patent/US9575674B2/en active Active
-
2017
- 2017-02-14 US US15/432,510 patent/US10007431B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2010036572A2 (en) | 2010-04-01 |
JP5263561B2 (ja) | 2013-08-14 |
US20150113357A1 (en) | 2015-04-23 |
CN101685381B (zh) | 2013-07-24 |
US20100082919A1 (en) | 2010-04-01 |
EP2342644A2 (en) | 2011-07-13 |
US10007431B2 (en) | 2018-06-26 |
WO2010036572A3 (en) | 2010-06-17 |
US9575674B2 (en) | 2017-02-21 |
US20170153817A1 (en) | 2017-06-01 |
US8930645B2 (en) | 2015-01-06 |
EP2342644A4 (en) | 2012-10-24 |
CN101685381A (zh) | 2010-03-31 |
JP2012503828A (ja) | 2012-02-09 |
KR101359772B1 (ko) | 2014-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101359772B1 (ko) | 고체 상태 대량 저장 디바이스들을 위한 데이터 스트리밍 | |
US11640266B2 (en) | Rate limit on the transitions of zones to open | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
KR101405741B1 (ko) | 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작 | |
US9921774B2 (en) | Data storage management in a memory device | |
CN101800071B (zh) | 固态盘设备及其编程失败处理方法 | |
US20130176785A1 (en) | Method for accessing a flash memory, and associated flash memory system | |
US9123443B2 (en) | Memory device, memory management device, and memory management method | |
US11520523B2 (en) | Data integrity protection of ZNS needs | |
WO2023129205A1 (en) | Variable length ecc code according to value length in nvme key value pair devices | |
US20150234741A1 (en) | Command Execution Using Existing Address Information | |
US11294598B2 (en) | Storage devices having minimum write sizes of data | |
JP2012521032A (ja) | Ssdコントローラおよびssdコントローラの動作方法 | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
US20220075524A1 (en) | Storage Devices Hiding Parity Swapping Behavior | |
US10073685B2 (en) | Methods of system optimization by over-sampling read | |
KR20210056625A (ko) | 데이터 저장 장치 및 이를 이용한 스토리지 시스템 | |
US12001719B2 (en) | Storage media based search function for key value data storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170103 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180119 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190117 Year of fee payment: 6 |