KR102502318B1 - 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법 - Google Patents
판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR102502318B1 KR102502318B1 KR1020200071363A KR20200071363A KR102502318B1 KR 102502318 B1 KR102502318 B1 KR 102502318B1 KR 1020200071363 A KR1020200071363 A KR 1020200071363A KR 20200071363 A KR20200071363 A KR 20200071363A KR 102502318 B1 KR102502318 B1 KR 102502318B1
- Authority
- KR
- South Korea
- Prior art keywords
- controller
- data
- read
- head portion
- tail portion
- Prior art date
Links
Images
Classifications
-
- 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/10—Address translation
-
- 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/0611—Improving I/O performance in relation to response time
-
- 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/04—Addressing variable-length words or parts of words
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/0658—Controller construction 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
호스트로부터의 데이터 길이가 2개의 엔드들에서 제어기의 기록 길이에 정렬되지 않을 때 감소된 레이턴시의 판독-수정-기록 동작들을 허용하는, 메모리 및 제어기를 포함하는 저장 디바이스의 태양들이 제공된다. 제어기가 호스트 디바이스로부터 데이터에 대한 기록 커맨드를 수신하는 경우, 제어기는 헤드 부분의 제1 판독을 그리고 제1 판독을 수행한 직후에 테일 부분의 제2 판독을 수행한다. 제어기는 헤드 부분 또는 테일 부분 중 하나의 부분의 단일 L2P 변환을 수행하고, 래치들로의 헤드 부분 및 테일 부분과 연관된 데이터를 한 번에 감지하고, 다른 데이터 감지를 수행하지 않고 헤드 부분 및 테일 부분 양측 모두에 대한 래치들로부터 데이터를 판독한다. 제어기는 이어서, 제1 판독 및 제2 판독을 수행한 후에 기록 커맨드에 응답하여 데이터를 기록한다.
Description
본 발명은 대체적으로 전자 디바이스들에 관한 것으로, 더 상세하게는 저장 디바이스들에 관한 것이다.
저장 디바이스들은 사용자들이 데이터를 저장하고 검색할 수 있게 한다. 저장 디바이스들의 예들은 비휘발성 메모리 디바이스들을 포함한다. 비휘발성 메모리는 대체적으로 전력 사이클 후에 데이터를 보유한다. 비휘발성 메모리의 일례는 하나 이상의 다이들 상에 NAND 셀들의 어레이(들)를 포함할 수 있는 플래시 메모리이다. 플래시 메모리는 솔리드 스테이트 디바이스(SSD)들, 보안 디지털(SD) 카드들 등에서 발견될 수 있다.
플래시 저장 디바이스는 데이터와 연관된 제어 정보를 저장할 수 있다. 예를 들어, 플래시 저장 디바이스는 논리적 어드레스들을 물리적 어드레스들에 매핑하는 것을 포함하는 제어 테이블들을 유지할 수 있다. 이러한 제어 테이블들은 플래시 메모리에서, 논리적 섹터들 또는 블록들의 물리적 로케이션(location)을 추적하는 데 사용된다. 제어 테이블들은 전력 사이클 후에 저장된 데이터에 대한 액세스를 가능하게 하기 위해 비휘발성 메모리에 저장된다.
플래시 저장 디바이스들은 대체적으로 최소 길이의 데이터를 갖는데, 이는 한 번에 플래시 메모리로부터 판독되고 그에 기록될 수 있다. 예를 들어, 전형적인 플래시 저장 디바이스는 4 KB의 데이터를 한 번에 판독하거나 기록할 수 있다(예컨대, 플래시 저장소는 4 KB의 판독 길이 또는 기록 길이, 또는 4 KB의 제어기 동작 단위를 갖는다). 따라서, 플래시 저장 디바이스가, 플래시 저장 디바이스의 제어기 동작 단위와 이미 정렬되어 있는 데이터에 대한 기록 커맨드를 수신하는 경우(예컨대, 4 KB의 데이터가 수신됨), 플래시 저장 디바이스는 데이터를 메모리에 기록하도록 호스트 커맨드를 간단히 실행시킬 수 있다.
그러나, 플래시 저장 디바이스가, 플래시 저장 디바이스의 제어기 동작 단위와 정렬되어 있지 않은 데이터(예를 들어, 상기 예에서 4 KB 미만의 데이터)에 대한 기록 커맨드를 수신하는 경우, 플래시 저장 디바이스는 대체적으로 데이터를 메모리에 기록하기 전에 기록 커맨드를 제어기 동작 단위와 정렬시키기 위해 판독-수정-기록(read-modify-write, RMW) 동작을 수행한다. 예를 들어, 플래시 저장 디바이스가 512 바이트의 데이터에 대한 기록 커맨드를 수신하는 경우, 플래시 저장 디바이스는 메모리로부터 대략 3.5 KB의 인접 데이터를 판독하고, 512 바이트와 3.5 KB를 4 KB의 데이터(예컨대, 기록 길이와 정렬됨)로 병합하기 위해 기록 커맨드를 수정하고, 정렬된 데이터를 플래시 메모리에 기록함으로써 RMW를 수행할 수 있다.
저장 디바이스의 일 태양이 본 명세서에 개시된다. 저장 디바이스는 데이터를 저장하도록 구성된 메모리, 및 제어기를 포함한다. 제어기는 하나 이상의 요청된 논리적 어드레스들을 포함하는 데이터에 대한 기록 커맨드를 호스트 디바이스로부터 수신하도록 구성되고, 여기서 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이는 제어기의 기록 길이에 정렬되지 않는다. 제어기는 적어도 하나의 선행하는(preceding) 논리적 어드레스를 포함하는 헤드 부분과 연관된 데이터의 제1 판독, 및 적어도 하나의 후행하는(following) 논리적 어드레스를 포함하는 테일 부분과 연관된 데이터의 제2 판독을 수행하도록 추가로 구성된다. 제어기는 메모리로부터 하나 이상의 래치들로의 헤드 부분 및 테일 부분과 연관된 데이터를 감지하도록, 데이터를 감지한 후에 헤드 부분 또는 테일 부분 중 하나의 부분에 대해 하나 이상의 래치들로부터 데이터를 판독하도록, 그리고 다른 감지를 수행하지 않고 테일 부분 또는 헤드 부분 중 다른 하나의 부분에 대해 하나 이상의 래치들로부터 데이터를 판독하도록 추가로 구성된다. 제어기는 제1 판독 및 제2 판독을 수행한 후에 기록 커맨드에 응답하여 데이터를 기록하도록 추가로 구성된다.
저장 디바이스의 다른 태양이 본 명세서에 개시된다. 저장 디바이스는 데이터를 저장하도록 구성된 메모리, 및 제어기를 포함한다. 제어기는 하나 이상의 요청된 논리적 어드레스들을 포함하는 데이터에 대한 기록 커맨드를 호스트 디바이스로부터 수신하도록 구성되고, 여기서 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이는 제어기의 기록 길이에 정렬되지 않는다. 제어기는 적어도 하나의 선행하는 논리적 어드레스를 포함하는 헤드 부분과 연관된 데이터의 제1 판독, 및 적어도 하나의 후행하는 논리적 어드레스를 포함하는 테일 부분과 연관된 데이터의 제2 판독을 수행하도록 추가로 구성된다. 제어기는 제1 판독 또는 제2 판독 중 하나의 판독을, 제1 판독 또는 제2 판독 중 다른 하나의 판독을 수행한 직후에 수행하도록, 그리고 제1 판독 및 제2 판독을 수행한 후에 기록 커맨드에 응답하여 데이터를 기록하도록 추가로 구성된다.
저장 디바이스의 추가의 태양이 본 명세서에 개시된다. 저장 디바이스는 데이터를 저장하도록 구성된 메모리, 및 제어기를 포함한다. 제어기는 하나 이상의 요청된 논리적 어드레스들을 포함하는 데이터에 대한 기록 커맨드를 호스트 디바이스로부터 수신하도록 구성되고, 여기서 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이는 제어기의 기록 길이에 정렬되지 않는다. 제어기는 적어도 하나의 선행하는 논리적 어드레스를 포함하는 헤드 부분과 연관된 데이터의 제1 판독, 및 적어도 하나의 후행하는 논리적 어드레스를 포함하는 테일 부분과 연관된 데이터의 제2 판독을 수행하도록 추가로 구성된다. 제어기는 헤드 부분 또는 테일 부분 중 하나의 부분의 제1 물리적 어드레스로의 논리-물리(logical-to-physical, L2P) 변환을 수행하도록, 그리고 다른 L2P 변환을 수행하지 않고 제1 물리적 어드레스에 기초하여 헤드 부분 또는 테일 부분 중 다른 하나의 부분에 대한 제2 물리적 어드레스를 식별하도록 추가로 구성된다. 제어기는 제1 판독 및 제2 판독을 수행한 후에 기록 커맨드에 응답하여 데이터를 기록하도록 추가로 구성된다.
저장 디바이스의 다른 태양들이 다음의 상세한 설명으로부터 당업자들에게 용이하게 명백해지게 될 것이며, 여기서 장치들 및 방법들의 다양한 태양들은 예시로서 도시되고 기술되어 있다는 것이 이해된다. 알 수 있는 바와 같이, 이들 태양들은 다른 그리고 상이한 형태들로 구현될 수 있고, 그의 여러 세부사항들은 다양한 다른 측면들에서 수정될 수 있다. 따라서, 도면 및 상세한 설명은 사실상 예시적인 것으로 간주되어야 하며 제한적인 것은 아니다.
이제 본 발명의 다양한 태양들이 첨부 도면을 참조하여, 제한으로서가 아니라 예로서 상세한 설명에서 제시될 것이다.
도 1은 호스트 디바이스와 통신하는 저장 디바이스의 예시적인 실시예를 예시하는 블록도이다.
도 2는 도 1의 저장 디바이스의 비휘발성 메모리 내의 L2P 매핑 테이블의 일례를 예시하는 개념도이다.
도 3은 RAW의 일례를 예시하는 개념도이다.
도 4는 도 1의 저장 디바이스에 의해 RMW를 수행하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 5는 도 1의 저장 디바이스에 의해 RMW를 수행하기 위한 다른 예시적인 방법을 예시하는 흐름도이다.
도 6은 도 1의 저장 디바이스에 의해 RMW를 수행하기 위한 다른 예시적인 방법을 예시하는 흐름도이다.
도 1은 호스트 디바이스와 통신하는 저장 디바이스의 예시적인 실시예를 예시하는 블록도이다.
도 2는 도 1의 저장 디바이스의 비휘발성 메모리 내의 L2P 매핑 테이블의 일례를 예시하는 개념도이다.
도 3은 RAW의 일례를 예시하는 개념도이다.
도 4는 도 1의 저장 디바이스에 의해 RMW를 수행하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 5는 도 1의 저장 디바이스에 의해 RMW를 수행하기 위한 다른 예시적인 방법을 예시하는 흐름도이다.
도 6은 도 1의 저장 디바이스에 의해 RMW를 수행하기 위한 다른 예시적인 방법을 예시하는 흐름도이다.
첨부된 도면들과 관련하여 아래에 설명된 상세한 설명은 본 발명의 다양한 예시적인 실시예들의 설명으로서 의도되고, 본 발명이 실시될 수 있는 실시예들만을 나타내도록 의도되지 않는다. 상세한 설명은 본 발명의 완전한 이해를 제공하려는 목적으로 구체적인 상세사항들을 포함한다. 그러나, 본 발명이 이들 구체적인 상세사항들 없이 실시될 수 있다는 것이 당업자들에게 명백할 것이다. 일부 경우들에서, 잘 알려진 구조물들 및 컴포넌트들은 본 발명의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다. 약어들 및 다른 서술적 용어는 단지 편의성 및 명확함을 위해 사용될 수 있으며, 본 발명의 범주를 제한하도록 의도되지 않는다.
단어 "예시적인" 및 "예"는 본 명세서에서 일례, 경우, 또는 예시로서의 역할을 의미하는 데 사용된다. 본 명세서에서 "예시적인"으로 설명된 임의의 예시적인 실시예는 반드시 다른 예시적인 실시예들에 비해 바람직하거나 유리한 것으로 해석되지는 않는다. 마찬가지로, 장치, 방법 또는 제조품의 "예시적인 실시예"라는 용어는, 본 발명의 모든 예시적인 실시예들이 설명된 컴포넌트들, 구조물, 특징부들, 기능, 프로세스들, 이점들, 이익들, 또는 동작 모드들을 포함한다는 것을 요구하지는 않는다.
하기의 상세한 설명에서, 호스트 디바이스와 통신하는 저장 디바이스의 다양한 태양들이 제시될 것이다. 이들 태양들은 SSD 및 SD 카드와 같은 플래시 저장 디바이스들에 매우 적합하다. 그러나, 당업자는 이들 태양들이 데이터를 저장할 수 있는 모든 타입들의 저장 디바이스들로 확장될 수 있음을 인식할 것이다. 따라서, 특정 장치 또는 방법에 대한 임의의 참조는 단지 본 발명의 다양한 태양들을 예시하도록 의도되며, 그러한 태양들이 본 발명의 사상 및 범주로부터 벗어나지 않고서 광범위한 응용예들을 가질 수 있음을 이해한다.
저장 디바이스가 제어기 동작 단위(예컨대, 4 KB의 기록 길이)에 정렬되지 않은 데이터(예컨대, 512 바이트의 데이터를 포함함)와 연관된 논리적 어드레스들의 범위를 포함하는 기록 커맨드를 수신하는 경우, 저장 디바이스는 RMW를 수행할 수 있다. 예를 들어, 저장 디바이스는, 호스트 디바이스가 저장 디바이스의 메모리에서 데이터의 작은 조각만을 수정하도록 요청받고 있을 때 RMW를 수행할 수 있다. 그러한 부정렬(unalignment)은 기업용 SSD들 또는 다른 고용량 저장 디바이스들에 공통적일 수 있고, 여기서 저장 디바이스의 제어기는 전형적으로, 더 큰 메모리들에 저장된 데이터의 논리적-물리적 어드레스 매핑들을 효율적으로 관리하기 위해 더 큰 논리적 어드레스 범위들(예를 들어, 16 KB의 데이터, 64 KB의 데이터 등에 걸쳐 있음)에서 동작한다. 본 발명의 목적들을 위해, 본 명세서에 설명된 저장 디바이스는 4 KB의 제어기 동작 단위 또는 기록 길이를 갖는 것으로 가정될 것이지만, 저장 디바이스가 다른 기록 길이들(예컨대, 16 KB, 64 KB 등)을 가질 수 있다는 것이 인식되어야 한다.
호스트 디바이스로부터의 기록 커맨드에서 수신된 논리적 어드레스가 제어기 유닛 동작과 연관된 논리적 어드레스들의 범위의 시작, 끝, 또는 중간에 있는 경우, 부정렬이 발생할 수 있다. 예를 들어, 4 KB의 데이터는 8개의 논리적 어드레스들(예컨대, 논리적 블록 어드레스들(LBA0 내지 LBA7))의 범위와 연관될 수 있고, 여기서 각각의 LBA는 512 바이트의 데이터와 연관될 수 있다. 그러한 경우에, 기록 커맨드에 지정된 논리적 어드레스(들)가 범위의 시작(예컨대, 상기 예에서 LBA0 내지 LBA6 중 하나 이상)에, 범위의 끝(예컨대, 상기 예에서 LBA1 내지 LBA7 중 하나 이상)에, 또는 범위의 중간(예컨대, 상기 예에서 LBA1 내지 LBA6 중 하나 이상)에 있으면, 기록 커맨드에서의 데이터의 길이는 제어기의 기록 길이와 정렬되지 않을 수 있다.
그 결과, 저장 디바이스는 메모리로부터 정렬되지 않은 부분(들)(예컨대, 범위의 헤드 부분 및/또는 테일 부분)을 판독하고, 정렬되지 않은 부분(들)의 논리적 어드레스들을 포함하도록 기록 커맨드를 수정하고(예컨대, 헤드 부분 및/또는 테일 부분과 병합함), 이어서 병합된 논리적 어드레스들에 기록함으로써 길이들을 정렬시키도록 RMW를 수행한다. 따라서, 상기 예에서, 기록 커맨드에 지정된 논리적 어드레스가 LBA3(예컨대, LBA0 내지 LBA7 범위의 중간)이면, 저장 디바이스는 메모리로부터 헤드 부분(예컨대, LBA0 내지 LBA2에 대응함) 및 테일 부분(예컨대, LBA4 내지 LBA7에 대응함)을 판독함으로써 그리고 이들 2개의 부분들을 포함시키고 (예컨대, LBA0 내지 LBA7에서) 4 KB 기록 동작을 수행하도록 기록 커맨드를 수정함으로써 RMW를 수행한다. 이러한 프로세스의 일례가 아래에 설명되는 도 3에 예시된다.
저장 디바이스가 통상적인 기록 커맨드를 (RMW 없이) 수행하는 경우, 제어기는 대체적으로 휘발성 메모리(예컨대, RAM) 내의 버퍼를 할당하여, 데이터를 메모리에 기록하기 전에 호스트 디바이스로부터 수신된 데이터를 일시적으로 저장한다. 버퍼는 대체적으로, 제어기의 기록 길이(예컨대, 4 KB의 제어기 동작 단위)의 것과 동일한 길이를 갖도록 크기가 정해진다. 그러나, 저장 디바이스가 RMW를 수행하는 경우, 제어기는 휘발성 메모리에서의 제한된 공간으로 인해 메모리로부터 판독된 헤드 부분 및 테일 부분에 대해 별개의 버퍼를 할당하지 않을 수 있다. 그 결과, 제어기는 대체적으로, RMW를 수행할 때 (예컨대, 동일한 버퍼를 사용하여) 호스트 데이터와 제자리에 있는 정렬되지 않은 데이터(예컨대, 헤드 부분 및 테일 부분)를 병합한다. 이러한 프로세스는 또한, 이하에 논의된 도 3에 대하여 설명된다.
저장 디바이스의 제어기는 대체적으로 버퍼에 호스트 데이터를 저장하기 때문에, 버퍼에서 호스트 데이터를 현재 겹쳐쓰지 않고서 RMW 동안 헤드 부분 및 테일 부분을 획득할 때 저장 디바이스는 전체 4 KB의 데이터(예를 들어, LBA0 내지 LBA7)를 한번에 판독할 수 없다. 따라서, 제어기는 대체적으로, 메모리로부터 논리적 어드레스들(예컨대, LBA0 내지 LBA7)의 전체 범위보다는 헤드 부분 및/또는 테일 부분에 대한 판독 요청을 실행시킨다. 기록 커맨드에 지정된 논리적 어드레스가 범위의 시작(예컨대, LBA0) 또는 끝(예컨대, LBA7)에 있는 경우, 단지 하나의 판독 요청이 전송되고, 하나의 L2P 매핑 변환이 테일 부분(예컨대, LBA1 내지 LBA7) 또는 헤드 부분(예컨대, LBA0 내지 LBA6) 중 어느 하나에 대해 각각 수행된다. 그러나, 기록 커맨드에 지정된 논리적 어드레스가 범위의 중간(예컨대, LBA3)에 있는 경우, 2개의 별개의 판독 요청들이 NAND 내의 동일한 물리적 로케이션으로 전송되고, 2개의 별개이지만 동일한 L2P 매핑 변환들이 헤드 부분(예컨대, LBA0 내지 LBA2) 및 테일 부분(예컨대, LBA4 내지 LBA7)에 대해 수행된다. 이러한 프로세스의 일례가 도 4와 관련하여 하기에 설명된다. 따라서, 헤드 부분 및 테일 부분 양측 모두를 필요로 하는 RMW들에 대해 추가적인 레이턴시가 부과될 수 있다.
그러한 범위 기록 커맨드들의 중간에 대한 이러한 추가적인 레이턴시를 감소시키기 위해, 본 발명은 즉각적인, 연속적인(back-to-back) 방식으로 RMW 동안 헤드 부분 및 테일 부분에 대한 내부 판독 요청들을 각각 발행한다. 2개의 판독 요청들이 제어기 유닛 동작에 대한 논리적 어드레스들(예컨대, 상기 예에서 LBA0 내지 LBA7)의 동일한 범위 하에 포함되고 따라서 동일한 물리적 어드레스에 매핑될 수 있기 때문에, 저장 디바이스의 제어기는 판독 요청들 양측 모두를 담당(serve)하기 위해 단일의 L2P 매핑 변환을 수행할 수 있다. 제어기는 이어서, 식별된 물리적 어드레스에 저장된 데이터의 래치들(예컨대, LBA0 내지 LBA7에 대응하는 베이스 데이터)로의 단일 감지를 수행할 수 있고, 이로부터 헤드 부분(예컨대, LBA0 내지 LBA2에 대응하는 데이터) 및 테일 부분(예컨대, LBA4 내지 LBA7에 대응하는 데이터)이 별개로 제어기로 전송되어 휘발성 메모리의 버퍼 내에 병합될 수 있다. 그 결과, 본 발명은 저장 디바이스가 헤드 부분 및 테일 부분 양측 모두에 대해 단지 단일의 L2P 매핑 변환 및 단일의 NAND 판독만을 수행하도록 허용함으로써, 저장 디바이스가 감소된 레이턴시로 범위 기록 커맨드들의 중간에 대한 RMW를 수행하는 것을 허용한다. 이러한 프로세스의 일례가 도 5와 관련하여 하기에 예시된다.
도 1은 예시적인 실시예에 따른, 호스트 디바이스(104)(또한 "호스트")와 통신하는 저장 디바이스(102)의 예시적인 블록도(100)를 도시한다. 호스트(104) 및 저장 디바이스(102)는 컴퓨터 시스템(예컨대, 서버, 데스크톱, 모바일/랩톱, 태블릿, 스마트폰 등)과 같은 시스템을 형성할 수 있다. 도 1의 컴포넌트들은 물리적으로 공동-위치될 수 있거나 그렇지 않을 수 있다. 이와 관련하여, 호스트(104)는 저장 디바이스(102)로부터 원격으로 위치될 수 있다. 도 1은 호스트(104)가 저장 디바이스(102)로부터 분리되어 도시되어 있는 것을 예시하지만, 다른 실시예들에서, 호스트(104)는 전체적으로 또는 부분적으로 저장 디바이스(102) 내에 통합될 수 있다. 대안적으로, 호스트(104)는 다수의 원격 엔티티들에 걸쳐서, 그 전체로, 또는 대안적으로 저장 디바이스(102) 내의 일부 기능을 갖고 분포될 수 있다.
당업자는, 다른 예시적인 실시예들이 도 1에 도시된 이들 요소들보다 많은 또는 적은 요소를 포함할 수 있다는 것 및 개시된 프로세스들이 다른 환경들에서 구현될 수 있다는 것을 인식할 것이다. 예를 들어, 다른 예시적인 실시예들은 저장 디바이스(102)와 통신하는 상이한 수의 호스트들, 또는 호스트(들)와 통신하는 다수의 저장 디바이스들(102)을 포함할 수 있다.
호스트 디바이스(104)는 저장 디바이스(102)에 데이터를 저장하고/하거나 그로부터 데이터를 검색할 수 있다. 호스트 디바이스(104)는, 예를 들어 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(예컨대, 랩톱) 컴퓨터, 태블릿 컴퓨터, 모바일 컴퓨팅 디바이스, 예컨대 스마트폰, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스 등을 포함하는 임의의 컴퓨팅 디바이스를 포함할 수 있다. 호스트 디바이스(104)는 적어도 하나의 프로세서(101) 및 호스트 메모리(103)를 포함할 수 있다. 적어도 하나의 프로세서(101)는 데이터를 프로세싱할 수 있는 임의의 형태의 하드웨어를 포함할 수 있고, 범용 프로세싱 유닛(예컨대, CPU(central processing unit)), 전용 하드웨어(예컨대, ASIC(application specific integrated circuit)), DSP(digital signal processor), 설정가능형 하드웨어(예컨대, FPGA(field programmable gate array)), 또는 소프트웨어 명령어들, 펌웨어 등에 의해 구성된 임의의 다른 형태의 프로세싱 유닛을 포함할 수 있다. 호스트 메모리(103)는 호스트 디바이스(104)에 의해, 호스트에 의해 프로세싱된 데이터 또는 명령어들, 또는 저장 디바이스(102)로부터 수신된 데이터를 저장하는 데 사용될 수 있다. 일부 예들에서, 호스트 메모리(103)는 비휘발성 메모리, 예컨대 자기 메모리 디바이스들, 광학 메모리 디바이스들, 홀로그래픽 메모리 디바이스들, 플래시 메모리 디바이스들(예컨대, NAND 또는 NOR), PCM(phase-change memory) 디바이스들, ReRAM(resistive random-access memory) 디바이스들, MRAM(magnetoresistive random-access memory) 디바이스들, F-RAM(ferroelectric random-access memory), 및 임의의 다른 타입의 비휘발성 메모리 디바이스들을 포함할 수 있다. 다른 예들에서, 호스트 메모리(103)는 RAM(random-access memory), DRAM(dynamic random access memory), SRAM(static RAM), 및 SDRAM(synchronous dynamic RAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 등)과 같은 휘발성 메모리를 포함할 수 있다. 호스트 메모리(103)는 또한, 함께 통합되든 별개의 유닛들로서든, 비휘발성 메모리 및 휘발성 메모리 양측 모두를 포함할 수 있다.
호스트 인터페이스(106)는 버스/네트워크(108)를 통해 호스트(104)와 저장 디바이스(102)를 인터페이스하도록 구성되고, 예를 들어 이더넷 또는 와이파이, 또는 다른 가능한 후보들 중에서, SATA(Serial Advanced Technology Attachment), PCIe(PCI express), SCSI(Small Computer System Interface), 또는 SAS(Serial Attached SCSI)와 같은 버스 표준을 사용하여 인터페이스할 수 있다. 대안적으로, 호스트 인터페이스(106)는 무선일 수 있고, 예를 들어, 셀룰러 통신(예컨대, 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 등), 액세스 포인트들을 통한 무선 분배 방법들(예컨대, IEEE 802.11, WiFi, HiperLAN 등), IR(Infra Red), 블루투스, 지그비, 또는 다른 WWAN(Wireless Wide Area Network), WLAN(Wireless Local Area Network), WPAN(Wireless Personal Area Network) 기술, 또는 비교가능한 광역, 로컬 영역, 및 개인 영역 기술들을 사용하여 호스트(104)와 저장 디바이스(102)를 인터페이스할 수 있다.
도 1의 예시적인 실시예에 도시된 바와 같이, 저장 디바이스(102)는 호스트(104)로부터 수신된 데이터를 비휘발성으로 저장하기 위한 비휘발성 메모리(NVM)(110)를 포함한다. NVM(110)은, 예를 들어, 플래시 집적 회로들, NAND 메모리(예컨대, SLC(single-level cell) 메모리, MLC(multi-level cell) 메모리, TLC(triple-level cell) 메모리, QLC(quad-level cell) 메모리, PLC(penta-level cell) 메모리, 또는 이들의 임의의 조합), 또는 NOR 메모리를 포함할 수 있다. NVM(110)은 저장 디바이스(102)를 동작시키기 위한 시스템 데이터 또는 저장 디바이스(102) 내의 저장을 위해 호스트로부터 수신된 사용자 데이터를 저장할 수 있는 복수의 메모리 로케이션들(112)을 포함할 수 있다. 예를 들어, NVM은 n개의 로우(row)들 및 m개의 컬럼(column)들을 갖는 메모리 로케이션들(112)의 2-D NAND 어레이를 포함하는 교차점 아키텍처를 가질 수 있고, 여기서 m 및 n은 NVM의 크기에 따라 미리정의된다. 도 1의 예시된 예시적인 실시예에서, 각각의 메모리 로케이션(112)은 다수의 셀들(116)을 포함하는 블록(114)일 수 있다. 셀들(116)은 예를 들어, SLC들, MLC들, TLC들, QLC들, 및/또는 PLC들일 수 있다. 메모리 로케이션들(112)의 다른 예들이 가능한데; 예를 들어, 각각의 메모리 로케이션은 다수의 블록들을 포함하는 다이일 수 있다. 또한, 각각의 메모리 로케이션은 3-D NAND 어레이 내의 하나 이상의 블록들을 포함할 수 있다. 또한, 예시된 메모리 로케이션들(112)은 하나 이상의 물리적 블록들에 매핑되는 논리적 블록들일 수 있다.
저장 디바이스(102)는 또한, 예를 들어 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있는 휘발성 메모리(118)를 포함한다. 휘발성 메모리(118)에 저장된 데이터는 NVM(110)으로부터 판독된 데이터 또는 NVM(110)에 기록될 데이터를 포함할 수 있다. 이와 관련하여, 휘발성 메모리(118)는 데이터를 일시적으로 저장하기 위한 버퍼(128)(예컨대, 기록 버퍼 또는 판독 버퍼)를 포함할 수 있다. 도 1은 휘발성 메모리(118)가 저장 디바이스(102)의 제어기(123)로부터 멀리 있는 것으로 예시하지만, 휘발성 메모리(118)는 제어기(123) 안에 통합될 수 있다.
메모리(예컨대, NVM(110))는 호스트 디바이스(104)로부터 수신된 데이터(119)를 저장하도록 구성된다. 데이터(119)는 메모리 로케이션들(112) 중 임의의 메모리 로케이션의 셀들(116)에 저장될 수 있다. 일례로서, 도 1은 데이터(119)가 상이한 메모리 로케이션들(112)에 저장되는 것을 예시하지만, 데이터는 동일한 메모리 로케이션에 저장될 수 있다. 다른 예에서, 메모리 로케이션들(112)은 상이한 다이들일 수 있고, 데이터는 상이한 다이들 중 하나 이상의 다이에 저장될 수 있다.
데이터(119) 각각은 논리적 어드레스와 연관될 수 있다. 예를 들어, NVM(110)은 각각의 데이터(119)를 논리적 어드레스와 연관시키는, 저장 디바이스(102)에 대한 L2P 매핑 테이블(120)을 저장할 수 있다. L2P 매핑 테이블(120)은 호스트(104)로부터 기록된 데이터에 대해 지정된 논리적 어드레스들의 물리적 어드레스들로의 매핑을, 각각의 데이터가 저장되는 로케이션(들)을 나타내는 NVM(110)에 저장한다. 이러한 매핑은 저장 디바이스의 제어기(123)에 의해 수행될 수 있다. L2P 매핑 테이블은, 데이터가 저장되는 NVM 내의 각각의 메모리 로케이션(112)과 연관된 LBA(logical block address)와 같은 식별자를 포함하는 테이블 또는 다른 데이터 구조물일 수 있다. 도 1은 도 1의 개념들을 과도하게 모호하게 하는 것을 피하기 위해 NVM의 메모리 로케이션들(112) 중 하나의 로케이션에 저장된 단일의 L2P 매핑 테이블(120)을 예시하지만, L2P 매핑 테이블(120)은 실제로, NVM의 하나 이상의 메모리 로케이션들에 저장된 다수의 테이블들을 포함할 수 있다.
도 2는 호스트 디바이스로부터 수신된 데이터(202)의, 도 1의 NVM(110) 내의 논리적 어드레스들 및 물리적 어드레스들로의 매핑을 예시하는 L2P 매핑 테이블(205)의 일례의 개념도(200)이다. 데이터(202)는 도 1의 데이터(119)에 대응할 수 있는 한편, L2P 매핑 테이블(205)은 도 1의 L2P 매핑 테이블(120)에 대응할 수 있다. 하나의 예시적인 실시예에서, 데이터(202)는 하나 이상의 페이지들(204), 예컨대 페이지들 1 내지 x에 저장될 수 있으며, 여기서 x는 NVM(110)에 기록되는 데이터의 페이지들의 총 수이다. 각각의 페이지(204)는 LBA(208), NVM에 기록된 데이터와 연관된 물리적 어드레스(210), 및 데이터의 길이(212)를 식별하는 L2P 매핑 테이블(205)의 하나 이상의 엔트리들(206)과 연관될 수 있다. LBA(208)는 호스트 디바이스로부터 수신된 데이터에 대한 기록 커맨드에서 지정된 논리적 어드레스일 수 있다. 물리적 어드레스(210)는 LBA(208)와 연관된 데이터가 물리적으로 기록되는 오프셋 및 블록을 나타낼 수 있다. 길이(212)는 기록된 데이터의 크기(예를 들어, 4 KB 또는 일부 다른 크기)를 나타낼 수 있다.
다시 도 1을 참조하면, 휘발성 메모리(118)는 또한 저장 디바이스(102)를 위한 캐시(122)를 저장한다. 캐시(122)는 호스트(104)에 의해 요청된 데이터에 대해 지정된 논리적 어드레스들의, 데이터가 저장되는 로케이션(들)을 나타내는 NVM(110) 내의 물리적 어드레스들로의 매핑을 보여주는 엔트리들을 포함한다. 이러한 매핑은 제어기(123)에 의해 수행될 수 있다. 제어기(123)가 데이터(119)에 대한 판독 커맨드 또는 기록 커맨드를 수신하는 경우, 제어기는 각각의 데이터의 논리-물리 매핑을 위해 캐시(122)를 체크한다. 매핑이 존재하지 않는 경우(예컨대, 그것이 데이터에 대한 제1 요청인 경우), 제어기는 L2P 매핑 테이블(120)에 액세스하고 매핑을 캐시(122)에 저장한다. 제어기(123)가 판독 커맨드 또는 기록 커맨드를 실행하는 경우, 제어기는 캐시로부터의 매핑에 액세스하고, 지정된 물리적 어드레스에서 데이터를 NVM(110)으로부터 판독하거나 데이터를 그것에 기록한다. 캐시는, 데이터가 판독되고 있는 NVM 내의 각각의 메모리 로케이션(112)과 연관된 논리적 어드레스를 포함하는 테이블 또는 다른 데이터 구조물의 형태로 저장될 수 있다.
NVM(110)은 각각의 메모리 로케이션(112)에 접속된 감지 증폭기들(124) 및 데이터 래치들(126)을 포함한다. 예를 들어, 메모리 로케이션(112)은 다수의 비트 라인들 상에 셀들(116)을 포함하는 블록일 수 있고, NVM(110)은 각각의 비트 라인 상에 감지 증폭기(124)를 포함할 수 있다. 또한, 하나 이상의 데이터 래치들(126)이 비트 라인들 및/또는 감지 증폭기들에 접속될 수 있다. 데이터 래치들은, 예를 들어, 시프트 레지스터들일 수 있다. 데이터가 메모리 로케이션(112)의 셀들(116)로부터 판독되는 경우, 감지 증폭기들(124)은 비트 라인들 상의 전압들을 로직 레벨(예를 들어, '0' 또는 '1'로서 판독가능함)로 증폭시킴으로써 데이터를 감지하고, 감지된 데이터는 데이터 래치들(126)에 저장된다. 이어서, 데이터는 데이터 래치들(126)로부터 제어기(123)로 전송되고, 그 후에 데이터가 호스트 디바이스(104)로 전송될 때까지 데이터는 휘발성 메모리(118)에 저장된다. 데이터가 메모리 로케이션(112)의 셀들(116)에 기록되는 경우, 제어기(123)는 프로그래밍된 데이터를 데이터 래치들(126)에 저장하고, 데이터는 후속하여 데이터 래치들(126)로부터 셀들(116)로 전송된다.
저장 디바이스(102)는, 명령어들을 실행하기 위한 하나 이상의 프로세서들과 같은 회로부를 포함하고, 마이크로제어기, 디지털 신호 프로세서(DSP), ASIC, FPGA, 하드-와이어드 로직, 아날로그 회로부 및/또는 이들의 조합을 포함할 수 있는 제어기(123)를 포함한다.
제어기(123)는 판독 커맨드에 응답하여 다양한 메모리 로케이션들(112)의 셀들(116) 중 하나 이상의 셀로부터 전송된 데이터를 수신하도록 구성된다. 예를 들어, 제어기(123)는 감지 증폭기들(124)을 활성화시켜 셀(116)들로부터 데이터 래치들(126)로의 데이터를 감지함으로써 데이터(119)를 판독할 수 있고, 제어기(123)는 데이터 래치들(126)로부터 데이터를 수신할 수 있다. 제어기(123)는 또한, 기록 커맨드에 응답하여 셀들(116) 중 하나 이상의 셀로 데이터를 프로그래밍하도록 구성된다. 예를 들어, 제어기(123)는 셀들(116) 내로 프로그래밍될 데이터를 데이터 래치들(126)로 전송함으로써 데이터(119)를 기록할 수 있다. 제어기(123)는, 데이터를 셀들(116)에 기록하거나 이로부터 판독할 때 NVM(110) 내의 L2P 매핑 테이블(120)에 액세스하도록 추가로 구성된다. 예를 들어, 제어기(123)는 호스트 디바이스(104)로부터의 판독 또는 기록 커맨드들에 응답하여 NVM(110)으로부터 논리적-물리적 어드레스 매핑들을 수신할 수 있고, 커맨드들에서 식별된 논리적 어드레스들에 매핑되는 물리적 어드레스들을 식별할 수 있고(예컨대, 논리적 어드레스들을 물리적 어드레스들로 변환함), 매핑된 물리적 어드레스들에 위치된 셀들(116)에 데이터를 저장하거나 액세스할 수 있다.
제어기(123)는 메모리 로케이션들(112)에 병렬로 액세스하도록 추가로 구성될 수 있다. 예를 들어, 메모리 로케이션들(112)은 NVM(110)의 상이한 다이들에 저장된 블록들(114)일 수 있고, 각각의 다이는 그 자신의 데이터 버스에 의해 제어기(123)에 접속될 수 있다. 제어기는 다수의 데이터 버스들을 통해 상이한 다이들 상에서 동시에 데이터를 셀들(116)에 기록하거나 이로부터 판독할 수 있다. 추가적으로, 제어기(123)는 메모리 로케이션들(112)에 병렬로 액세스하는 것을 억제하도록 구성될 수 있고, 대신에, 메모리 로케이션들(112)에 직렬로 액세스할 수 있다. 예를 들어, 제어기는 다수의 데이터 버스들을 통해 동시보다는 순차적으로 메모리 로케이션(112)의 셀들(116)에 데이터를 기록하거나 이로부터 판독하도록 결정할 수 있다.
제어기(123) 및 그의 컴포넌트들은 본 개시내용 전반에 걸쳐 기술된 제어기의 다양한 기능들을 수행하는 임베디드 소프트웨어로 구현될 수 있다. 대안적으로, 전술된 기능들 및 컴포넌트들 각각을 구현하기 위한 소프트웨어는 NVM(110)에 또는 저장 디바이스(102) 또는 호스트 디바이스(104) 외부의 메모리에 저장될 수 있고, 제어기(123)의 하나 이상의 프로세서에 의한 실행을 위해 제어기(123)에 의해 액세스될 수 있다. 대안적으로, 제어기의 기능들 및 컴포넌트들은 제어기(123)에서 하드웨어로 구현될 수 있거나, 전술된 하드웨어 및 소프트웨어의 조합을 사용하여 구현될 수 있다.
동작 시에, 호스트 디바이스(104)는 기록될 데이터의 길이뿐만 아니라 하나 이상의 논리적 어드레스들(예컨대, LBA들)을 지정하는 기록 커맨드를 저장 디바이스(102)로 전송함으로써 저장 디바이스(102)에 데이터를 저장한다. 인터페이스 요소(106)는 기록 커맨드를 수신하고, 제어기는 데이터를 저장하기 위해 저장 디바이스(102)의 NVM(110) 내의 메모리 로케이션(112)을 할당한다. 제어기(123)는 데이터에 대해 할당된 메모리 로케이션(112)의 물리적 어드레스에 데이터와 연관된 논리적 어드레스를 매핑하기 위해 NVM(및 캐시(122))에 L2P 매핑을 저장한다. 제어기는 또한, L2P 매핑된 데이터의 길이를 저장한다. 이어서, 제어기(123)는 할당된 메모리 로케이션에 접속된 하나 이상의 데이터 래치들(126)로 데이터를 전송함으로써 메모리 로케이션(112)에 데이터를 저장하며, 이로부터 데이터는 셀들(116)로 프로그래밍된다.
호스트(104)는 저장 디바이스(102)로부터 검색될 데이터와 연관된 하나 이상의 논리적 어드레스들뿐만 아니라 판독될 데이터의 길이를 지정하는 판독 커맨드를 전송함으로써 저장 디바이스(102)로부터 데이터를 검색할 수 있다. 인터페이스(106)는 판독 커맨드를 수신하고, 제어기(123)는 판독 커맨드에서 지정된 논리적 어드레스들을 데이터의 로케이션을 나타내는 물리적 어드레스들로 변환하기 위해 캐시(122) 또는 달리 NVM 내의 L2P 매핑에 액세스한다. 이어서, 제어기(123)는, 감지 증폭기들(124)을 사용하여 데이터를 감지하고 판독 데이터가 호스트 인터페이스(106)를 통해 호스트(104)로 반환될 때까지 그것을 데이터 래치들(126)에 저장함으로써, 물리적 어드레스에 의해 지정된 메모리 로케이션(112)로부터 요청된 데이터를 판독한다.
저장 디바이스(102)가 호스트 디바이스(104)로부터 기록 커맨드를 수신하는 경우, 저장 디바이스는 RMW 동작을 수행할 수 있다. 도 3은 호스트 디바이스로부터 수신된 기록 커맨드(302)에 응답하여 저장 디바이스에 의해 수행되는 RMW 동작의 일례(300)를 예시한다. 저장 디바이스는 도 1의 저장 디바이스(102)에 대응할 수 있고, 호스트 디바이스는 도 1의 호스트 디바이스(104)에 대응할 수 있다. 이러한 예에서, 기록 커맨드(302)는 제어기 유닛 동작의 범위의 중간의 논리적 어드레스(303)(예컨대, LBA3)와 연관된 512 바이트의 호스트 데이터를 포함한다. 또한, 도 3의 예는 저장 디바이스의 제어기가 8개의 논리적 어드레스들(예컨대, LBA0 내지 LBA7)에 걸쳐 있는 4 KB의 기록 길이(304)를 갖는 것으로 가정하지만, 기록 길이는 전술된 바와 같은 그러한 배열들로 제한되지 않는다.
제어기(예컨대, 도 1의 제어기(123))가 기록 커맨드(302)를 수신하는 경우, 제어기는 호스트 데이터를 일시적으로 저장하기 위해 기록 길이(304)와 동일한 길이를 갖는 휘발성 메모리 내의 버퍼(306)(예컨대, 버퍼(128))를 할당한다. 호스트 데이터가 기록 길이(304)와 상이한(예컨대, 이와 정렬되지 않은) 데이터 길이(308)를 갖기 때문에, 저장 디바이스는 기록 커맨드(302)를 실행하기 전에 데이터를 정렬시키도록 진행한다. 예를 들어, 제어기는 NVM(110)으로부터의 헤드 부분(312)(예컨대, LBA0 내지 LBA2와 연관된 데이터)의 제1 판독(310)을 수행하고 버퍼의 각각의 로케이션에서 호스트 데이터와 제자리에 헤드 부분을 병합하고, 제어기는 후속적으로 NVM(110)으로부터의 테일 부분(316)(예컨대, LBA4 내지 LBA7과 연관된 데이터)의 제2 판독(314)을 수행하고 버퍼의 각각의 로케이션에서 호스트 데이터와 제자리에 테일 부분을 병합한다. 이러한 예에서, 헤드 부분(312)은 3개의 논리적 어드레스들에 걸쳐 있는 헤드 데이터 길이(318)를 갖고, 테일 부분(316)은 4개의 논리적 어드레스들에 걸쳐 있는 테일 데이터 길이(320)를 갖지만, 호스트 데이터 길이(308), 헤드 데이터 길이(318), 및 테일 데이터 길이(320)의 합이 기록 길이(304)와 동일한 한, 헤드 및 테일 부분들의 길이들은 호스트 데이터의 로케이션에 따라 상이할 수 있다. 일단 호스트 데이터가 이러한 방식으로 정렬되면, 제어기는 버퍼(306) 내의 전체 데이터를 NVM(110)에 기록하여 RMW 동작을 완료한다.
도 4는 헤드 부분 및 테일 부분이 NVM(110)으로부터 독립적으로 판독되는 RMW 동작의 방법의 예시적인 흐름도(400)를 예시한다. 흐름도(400)에 기술된 다양한 단계들은, 저장 디바이스의 제어기가 호스트 데이터에 대한 요청된 논리적 어드레스(예컨대, LBA3)를 포함하는 기록 커맨드를 수신한 후에 발생할 수 있다. 또한, 흐름도(400)에 기술된 동작들은 4 KB의 기록 길이(예컨대, 8개의 LBA들에 대응함)를 가정하지만, 전술된 바와 같은 저장 디바이스에 기초하여 다른 기록 길이들이 사용될 수 있다.
블록(402)에 의해 표현되는 바와 같이, (예컨대, LBA3을 포함하는) 기록 커맨드를 수신한 후에, 저장 디바이스의 제어기는 헤드 부분(예컨대, 헤드 부분(312))에 대한 판독 커맨드를 발행할 수 있다. 예를 들어, 도 3을 참조하면, 제어기는 초기에, 기록될 호스트 데이터에 대한 4 KB 논리적 어드레스 범위(예컨대, LBA0 내지 LBA7)에서 선행하는 논리적 어드레스들인 LBA0 내지 LBA2와 연관된 데이터를 판독할 수 있다.
따라서, 블록(404)에 의해 표현되는 바와 같이, 제어기는 헤드 부분에 대해 L2P 변환을 수행할 수 있다. 제어기는, 예를 들어 헤드 부분에 대한 변환 요청 파라미터들을 설정할 수 있고(예컨대, 식별된 물리적 어드레스를 저장하기 위해 휘발성 메모리 내에 필드를 생성함), 호스트 데이터에 대한 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스에 액세스하여 이를 변환하라는 변환 요청을 L2P 매핑 테이블(120)에 발행할 수 있다. 예를 들어, 도 2를 참조하면, 제어기는 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스(예컨대, LBA0)에 대응하는 논리적 어드레스(208)와 연관된 물리적 어드레스(210)를 PBA 26으로서 식별할 수 있다. 제어기는 이어서, 식별된 물리적 어드레스(210)를 휘발성 메모리 내의 생성된 필드에 저장할 수 있다.
그 후에, 블록(406)에 의해 표현되는 바와 같이, 제어기는 식별된 물리적 어드레스에서 NAND(예컨대, NVM(110))로부터 4 KB 논리적 어드레스 범위 내의 데이터를 감지한다. 예를 들어, 도 1을 참조하면, 제어기는 감지 증폭기들(124)을 활성화시켜, PBA 26에 대응하는 메모리 로케이션들(112) 내의 셀들(116)로부터 래치들(126)로의 데이터 판독을 수행할 수 있다. 예를 들어, 감지 증폭기들(124)은 래치들(126)로의 8개의 비트들(LBA0 내지 LBA7 각각에 대한 하나의 비트에 대응함)을 감지할 수 있다.
그 후에, 블록(408)에 의해 표현되는 바와 같이, 제어기는 헤드 부분에 대한 래치들로부터 감지된 데이터를 전송할 수 있다. 예를 들어, LBA0 내지 LBA2에만 연관된 데이터(119)가 래치들(126)로부터 제어기(123)로 전송될 수 있다.
이어서, 블록(410)에 의해 표현되는 바와 같이, 제어기는 호스트 데이터에 대한 기록 커맨드에 할당된 버퍼에서 헤드 부분에 대해 전송된 데이터를 병합한다. 예를 들어, 일단 헤드 부분(예컨대, LBA0 내지 LBA2와 연관된 데이터)이 제어기(123)로 전송되면, 제어기는 휘발성 메모리(118) 내의 버퍼(128)에 이전에 저장된 호스트 데이터(LBA3에 대응함)와 헤드 부분을 병합한다. 이어서, 제어기는 바로 후술되는 바와 같이 테일 부분에 대해 독립적으로 전술된 프로세스를 반복할 수 있다.
블록(412)에 의해 표현되는 바와 같이, 헤드 부분의 판독을 완료한 후에, 저장 디바이스의 제어기는 테일 부분(예컨대, 테일 부분(316))에 대한 판독 커맨드를 발행할 수 있다. 예를 들어, 도 3을 참조하면, 제어기는 기록될 호스트 데이터에 대한 4 KB 논리적 어드레스 범위(예컨대, LBA0 내지 LBA7)에서 후행하는 논리적 어드레스들인 LBA4 내지 LBA7과 연관된 데이터를 판독할 수 있다.
따라서, 블록(414)에 의해 표현되는 바와 같이, 제어기는 테일 부분에 대해 L2P 변환을 수행할 수 있다. 제어기는, 예를 들어 테일 부분에 대한 변환 요청 파라미터들을 설정(예컨대, 식별된 물리적 어드레스를 저장하기 위해 휘발성 메모리 내에 필드를 생성함)할 수 있고, 호스트 데이터에 대한 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스에 액세스하고 이를 변환하도록 L2P 매핑 테이블(120)에 다른 변환 요청을 발행할 수 있다. 예를 들어, 도 2를 참조하면, 제어기는, 본 예에서 예시되는 바와 같이 다시 PBA 26일 수 있는 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스(예컨대, LBA0)에 대응하는 논리적 어드레스(208)와 연관된 물리적 어드레스(210)를 다시 식별함으로써 블록(404)의 동작을 반복할 수 있다. 제어기는 이어서, 식별된 물리적 어드레스(210)를 휘발성 메모리 내의 생성된 필드에 저장할 수 있다.
그 후에, 블록(416)에 의해 표현되는 바와 같이, 제어기는 식별된 물리적 어드레스에서 NAND(예컨대, NVM(110))로부터 4 KB 논리적 어드레스 범위 내의 데이터를 감지한다. 예를 들어, 도 1을 참조하면, 제어기는 감지 증폭기들(124)을 다시 활성화시켜 PBA 26에 대응하는 메모리 로케이션들(112) 내의 셀들(116)로부터 래치들(126)로의 데이터 판독을 수행함으로써 블록(406)의 동작을 반복할 수 있다. 예를 들어, 감지 증폭기들(124)은 래치들(126)로의 8개의 비트들(LBA0 내지 LBA7 각각에 대한 하나의 비트에 대응함)을 다시 감지할 수 있다.
그 후에, 블록(418)에 의해 표현되는 바와 같이, 제어기는 테일 부분에 대한 래치들로부터 감지된 데이터를 전송할 수 있다. 예를 들어, LBA4 내지 LBA7에만 연관된 데이터(119)가 래치들(126)로부터 제어기(123)로 전송될 수 있다.
다음으로, 블록(420)에 의해 표현되는 바와 같이, 제어기는 버퍼 내의 호스트 데이터와 테일 부분에 대한 전송된 데이터를 병합한다. 예를 들어, 일단 테일 부분(예컨대, LBA4 내지 LBA7과 연관된 데이터)이 제어기(123)로 전송되면, 제어기는 휘발성 메모리(118) 내의 버퍼(128)에 이전에 저장된 호스트 데이터 및 헤드 부분과 테일 부분을 병합한다.
마지막으로, 블록(422)에 의해 표현되는 바와 같이, 제어기는 병합된 데이터를 메모리(예컨대, 버퍼(128))에 기록한다. 예를 들어, 제어기는 모든 4 KB의 정렬된 데이터(예컨대, 헤드 부분, 호스트 데이터, 및 테일 부분)를 NVM(110)에 기록하여 RMW의 동작을 완료할 수 있다.
그러나, 전술된 바와 같이, 도 4의 RMW 예는 헤드 부분 및 테일 부분을 판독할 때 중복 동작들(예컨대, 블록들(404, 414 및 406, 416))이 수행되도록 요구할 수 있는데, 그 이유는 2개의 동일한 L2P 매핑 변환들(예컨대, PBA 26을 식별하기 위함) 및 2개의 동일한 NAND 감지들(예컨대, LBA0 내지 LBA7에서의 4 KB의 데이터)이 수행되기 때문이다. 이러한 중복 동작은, 기록 길이 내의 중간 논리적 어드레스와 연관된 정렬되지 않은 호스트 데이터에 응답하여 헤드 부분 및 테일 부분 양측 모두가 판독되고 있을 때, 불필요한 레이턴시가 RMW 동작에 추가되게 할 수 있다.
중복 동작으로부터 이러한 추가적인 레이턴시를 감소시키기 위해, 제어기는 헤드 부분에 대한 판독 커맨드를 발행한 직후에 테일 부분에 대한 판독 커맨드를 발행할 수 있다(또는 그 반대일 수 있음). 도 5는 헤드 부분 후에 테일 부분이 NVM(110)으로부터 즉시 판독되는 RMW를 수행하는 방법의 예시적인 흐름도(500)를 예시한다. 예를 들어, 본 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은, 후술되는 바와 같이 제어기(예컨대, 제어기(123))를 사용하여, 또는 일부 다른 적합한 수단에 의해 제어될 수 있다.
흐름도(500)에 기술된 다양한 단계들은, 저장 디바이스의 제어기가 호스트 데이터에 대한 요청된 논리적 어드레스(예컨대, LBA3)를 포함하는 기록 커맨드를 수신한 후에 발생할 수 있다. 또한, 흐름도(400)에 기술된 동작들은 4 KB의 기록 길이(8개의 LBA들에 대응함)를 가정하지만, 전술된 바와 같은 저장 디바이스에 기초하여 다른 기록 길이가 사용될 수 있다. 추가적으로, 도 5는 헤드 부분 판독 직후에 테일 부분 판독이 발생하는 예를 예시하지만, 그 반대도 가능한데; 헤드 부분 판독이 테일 부분 판독 직후에 발생할 수 있다.
블록(502)에 의해 표현되는 바와 같이, (예컨대, LBA3을 포함하는) 기록 커맨드를 수신한 후에, 저장 디바이스의 제어기는 헤드 부분(예컨대, 헤드 부분(312))에 대한 판독 커맨드를 발행한다. 예를 들어, 도 3을 참조하면, 제어기는 초기에, 기록될 호스트 데이터에 대한 4 KB 논리적 어드레스 범위(예컨대, LBA0 내지 LBA7)에서 선행하는 논리적 어드레스들인 LBA0 내지 LBA2와 연관된 데이터를 판독할 수 있다.
블록(504)에 의해 표현되는 바와 같이, 헤드 부분에 대한 판독 커맨드를 발행한 직후에(예컨대, 도 4 에서와 같이 헤드 부분 판독이 완료되는 것을 기다리지 않고), 저장 디바이스의 제어기는 테일 부분에 대한 판독 커맨드를 발행한다. 예를 들어, 도 3을 참조하면, 제어기는 기록될 호스트 데이터에 대한 4 KB 논리적 어드레스 범위(예컨대, LBA0 내지 LBA7)에서 후행하는 논리적 어드레스들인 LBA4 내지 LBA7과 연관된 데이터를 판독할 수 있다.
따라서, 블록(506)에 의해 표현되는 바와 같이, 제어기는 헤드 부분 및 테일 부분에 대해 단일의 L2P 변환을 수행한다. 제어기는, 예를 들어 헤드 부분 및 테일 부분에 대한 변환 요청 파라미터들을 설정(예컨대, 식별된 물리적 어드레스를 저장하기 위해 휘발성 메모리 내에 필드들을 생성함)할 수 있고, 호스트 데이터에 대한 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스에 액세스하고 이를 변환하도록 L2P 매핑 테이블(120)에 변환 요청을 발행할 수 있다. 예를 들어, 도 2를 참조하면, 제어기는 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스(예컨대, LBA0)에 대응하는 논리적 어드레스(208)와 연관된 물리적 어드레스(210)를 PBA 26으로서 식별할 수 있다. 제어기는 이어서, 식별된 물리적 어드레스(210)를 헤드 부분 및 테일 부분 양측 모두에 대해 휘발성 메모리 내의 생성된 필드에 저장할 수 있다.
그러나, 도 4의 예와는 달리, 제어기는 제1 판독(예컨대, 헤드 부분 판독)을 실행할 때 연관된 논리적 어드레스 범위에 대한 물리적 어드레스를 식별하고, 이어서 제2 판독(예컨대, 테일 부분 판독)을 실행할 때 사용을 위해 휘발성 메모리 내에 식별된 물리적 어드레스를 저장함으로써 단일 변환만을 수행할 수 있다. 이러한 동작은 제2 판독이 전술된 바와 같이 제1 판독을 (예컨대, 제1 판독의 완료 전에) 바로 뒤따르기 때문에 가능하고, 따라서 제1 판독에 대한 변환 요청이 제2 판독을 담당할 수 있다. 또한, 제1 판독 및 제2 판독과 연관된 물리적 어드레스들은 동일할 것으로 예상되는데, 그 이유는 그들 양측 모두가 동일한 4 KB-정렬된 논리적 어드레스 범위에 대응하기 때문이다. 대조적으로, 도 4의 예에서와 같이 제1 판독이 완료된 후에 제2 판독이 발생하는 경우, 제2 판독을 달성하기 위해 추가적인 변환 요청이 전송될 필요가 있을 것이고, 이는 도 5의 예에서 회피될 수 있는 불필요한 지연을 추가한다.
그 후에, 블록(508)에 의해 표현되는 바와 같이, 제어기는 식별된 물리적 어드레스에서 NAND(예컨대, NVM(110))로부터 4 KB 논리적 어드레스 범위 내의 데이터를 감지한다. 예를 들어, 도 1을 참조하면, 제어기는 감지 증폭기들(124)을 활성화시켜 PBA 26에 대응하는 메모리 로케이션들(112) 내의 셀들(116)로부터 래치들(126)로의 데이터 판독을 수행할 수 있다. 예를 들어, 감지 증폭기들(124)은 래치들(126)로의 8개의 비트들(LBA0 내지 LBA7 각각에 대한 하나의 비트에 대응함)을 감지할 수 있다.
그러나, 도 4의 예와는 달리, 이러한 예에서, 제어기는, 제2 판독(예컨대, 테일 부분 판독)을 실행할 때 래치들 내의 데이터를 이미 판독한 반면, 제1 판독(예컨대, 헤드 부분 판독)을 실행할 때 래치들(126) 내로의 데이터를 판독하도록 단일 NAND 감지만을 수행한다. 이러한 배열은 제2 판독이 전술된 바와 같이 제1 판독을 바로 뒤따르기 때문에 가능하며, 따라서, 래치들(126) 내에서 데이터를 겹쳐쓸 수 있는 다른 물리적 어드레스에 대한 개재하는(intervening) 판독 커맨드의 가능성이 상당히 감소된다. 대조적으로, 도 4의 예에서와 같이 제1 판독이 완료된 후에 제2 판독이 발생하는 경우, 상이한 물리적 어드레스에 대한 개재하는 판독 커맨드가 2개의 판독들 사이의 시간에 발생할 수 있고, 이는 제1 판독의 실행 동안에 새로운 데이터의 감지 및 래치들 내에 저장된 데이터의 겹쳐쓰기를 필요로 할 것이다. 그 결과, 제2 판독의 실행을 위해 제2 감지가 요구될 것이고, 이는 도 5의 예에서 회피될 수 있는 불필요한 지연을 추가한다.
그 후에, 블록(510)에 의해 표현되는 바와 같이, 제어기는 헤드 부분에 대한 래치들로부터(예컨대, 제1 판독의 실행으로부터) 감지된 데이터를 전송할 수 있다. 예를 들어, LBA0 내지 LBA2에만 연관된 데이터(119)가 래치들(126)로부터 제어기(123)로 전송될 수 있다. 유사하게, 블록(512)에 의해 표현되는 바와 같이, 제어기는 테일 부분에 대한 래치들로부터(예컨대, 제2 판독의 실행으로부터) 감지된 데이터를 전송할 수 있다. 예를 들어, LBA4 내지 LBA7에만 연관된 데이터(119)가 래치들(126)로부터 제어기(123)로 전송될 수 있다.
이어서, 블록(514)에 의해 표현되는 바와 같이, 제어기는 호스트 데이터에 대한 기록 커맨드에 할당된 버퍼에서 헤드 부분에 대한 전송된 데이터를 병합한다. 예를 들어, 일단 헤드 부분(예컨대, LBA0 내지 LBA2와 연관된 데이터)이 제어기(123)로 전송되면, 제어기는 휘발성 메모리(118) 내의 버퍼(128)에 이전에 저장된 호스트 데이터(LBA3에 대응함)와 헤드 부분을 병합한다. 유사하게, 블록(516)에 의해 표현되는 바와 같이, 제어기는 버퍼 내의 호스트 데이터와 테일 부분에 대한 전송된 데이터를 병합한다. 예를 들어, 일단 테일 부분(예컨대, LBA4 내지 LBA7과 연관된 데이터)이 제어기(123)로 전송되면, 제어기는 휘발성 메모리(118) 내의 버퍼(128)에 이전에 저장된 호스트 데이터 및 헤드 부분과 테일 부분을 병합한다.
마지막으로, 블록(518)에 의해 표현되는 바와 같이, 제어기는 병합된 데이터를 메모리(예컨대, 버퍼(128))에 기록한다. 예를 들어, 제어기는 모든 4 KB의 정렬된 데이터(예컨대, 헤드 부분, 호스트 데이터, 및 테일 부분)를 NVM(110)에 기록하여 RMW의 동작을 완료할 수 있다. 그 결과, 도 5의 예에 예시된 바와 같은 RMW 동작은, 도 4의 예에서와 같이 각각의 판독이 완료된 후보다는 헤드 부분 판독 및 테일 부분 판독이 연속적인 방식으로 발생하는 것을 허용함으로써 입력/출력 레이턴시를 감소시킬 수 있다.
도 6은 RMW를 수행하기 위한 방법의 예시적인 흐름도(600)를 예시한다. 예를 들어, 본 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은, 후술되는 바와 같이 제어기(예컨대, 제어기(123))를 사용하여, 또는 일부 다른 적합한 수단에 의해 제어될 수 있다. 도 6은 헤드 부분 판독 후에 발생하는 테일 부분 판독을 예시하지만, 본 방법은 이러한 순서로 제한되지 않는데; 예를 들어, 헤드 부분 판독이 테일 부분 판독 후에 발생할 수 있다.
블록(602)에 의해 표현되는 바와 같이, 제어기는 호스트 디바이스로부터 하나 이상의 요청된 논리적 어드레스들을 포함하는 데이터에 대한 기록 커맨드를 수신한다. 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이는 제어기의 기록 길이에 정렬되지 않을 수 있다. 예를 들어, 도 1 내지 도 5를 참조하면, 저장 디바이스(102)의 제어기(123)는 호스트 디바이스(104)로부터의 데이터(119)에 대한 요청된 논리적 어드레스(303)(예컨대, LBA3)를 포함하는 기록 커맨드(302)를 수신할 수 있다. 호스트 데이터는 제어기(123)의 기록 길이(304)와는 상이한(예를 들어, 이와 정렬되지 않은) 데이터 길이(308)를 가질 수 있다.
블록(604)에 의해 표현되는 바와 같이, 제어기는 적어도 하나의 선행하는 논리적 어드레스를 포함하는 헤드 부분과 연관된 데이터의 제1 판독을 수행하고, 블록(606)에 의해 표현되는 바와 같이, 제어기는 적어도 하나의 후행하는 논리적 어드레스를 포함하는 테일 부분과 연관된 데이터의 제2 판독을 수행한다. 제어기는 제1 판독 또는 제2 판독 중 하나의 판독을, 제1 판독 또는 제2 판독 중 다른 하나의 판독을 수행한 직후에 수행할 수 있다. 예를 들어, 도 1, 도 3 및 도 5를 참조하면, 제어기는 NVM(110)으로부터 헤드 부분(312)(예컨대, LBA0 내지 LBA2와 연관된 데이터)의 제1 판독(310)을, 그리고 NVM(110)으로부터 테일 부분(316)(예컨대, LBA4 내지 LBA7과 연관된 데이터)의 제2 판독(314)을 수행할 수 있다. 예를 들어, 블록(502)에 의해 표현된 바와 같이, 호스트 데이터에 대한 요청된 논리적 어드레스(예컨대, LBA3)를 포함하는 기록 커맨드를 수신한 후에, 제어기는 기록될 호스트 데이터에 대한 4 KB 논리적 어드레스 범위(예컨대, LBA0 내지 LBA7)에서 선행하는 논리적 어드레스들인 LBA0 내지 LBA2와 연관된 데이터를 판독할 수 있다. 유사하게, 블록(504)에 의해 표현되는 바와 같이, 헤드 부분에 대한 판독 커맨드를 발행한 직후에(예컨대, 헤드 부분 판독이 완료되는 것을 기다리지 않고), 제어기는 기록될 호스트 데이터에 대한 4 KB 논리적 어드레스 범위(예컨대, LBA0 내지 LBA7)에서 후행하는 논리적 어드레스들인 LBA4 내지 LBA7과 연관된 데이터를 판독할 수 있다.
제어기의 기록 길이는 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이와 헤드 부분 및 테일 부분의 데이터 길이의 합일 수 있다. 예를 들어, 헤드 부분(312)은 3개의 논리적 어드레스들에 걸쳐 있는 헤드 데이터 길이(318)를 가질 수 있고, 테일 부분(316)은 4개의 논리적 어드레스들에 걸쳐 있는 테일 데이터 길이(320)를 가질 수 있지만, 호스트 데이터 길이(308), 헤드 데이터 길이(318), 및 테일 데이터 길이(320)의 합이 기록 길이(304)와 동일한 한, 헤드 및 테일 부분들의 길이들은 호스트 데이터의 로케이션에 따라 상이할 수 있다.
블록(608)에 의해 표현된 바와 같이, 제어기는 헤드 부분 또는 테일 부분 중 하나의 부분의 제1 물리적 어드레스로의 L2P 변환을 수행한다. 예를 들어, 도 5를 참조하면, 블록(506)에 의해 표현되는 바와 같이, 제어기는 헤드 부분 및 테일 부분에 대해 단일의 L2P 변환을 수행할 수 있다. 제어기는, 예를 들어 헤드 부분 및 테일 부분에 대한 변환 요청 파라미터들을 설정(예컨대, 식별된 물리적 어드레스를 저장하기 위해 휘발성 메모리 내에 필드들을 생성함)할 수 있고, 호스트 데이터에 대한 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스에 액세스하고 이를 변환하도록 L2P 매핑 테이블(120)에 변환 요청을 발행할 수 있다. 예를 들어, 도 2를 참조하면, 제어기는 4 KB 논리적 어드레스 범위 내의 제1 논리적 어드레스(예컨대, LBA0)에 대응하는 논리적 어드레스(208)와 연관된 물리적 어드레스(210)를 PBA 26으로서 식별할 수 있다. 제어기는 이어서, 식별된 물리적 어드레스(210)를 헤드 부분 및 테일 부분 양측 모두에 대해 휘발성 메모리 내의 생성된 필드에 저장할 수 있다.
블록(610)에 의해 표현되는 바와 같이, 제어기는 다른 L2P 변환을 수행하지 않고 제1 물리적 어드레스에 기초하여 헤드 부분 또는 테일 부분 중 다른 하나의 부분에 대한 제2 물리적 어드레스를 식별한다. 헤드 부분 및 테일 부분은 동일한 물리적 어드레스에 매핑될 수 있다. 예를 들어, 도 5를 참조하면, 제어기는 제1 판독(예컨대, 헤드 부분 판독)을 실행할 때 연관된 논리적 어드레스 범위에 대한 물리적 어드레스를 식별하고, 이어서 제2 판독(예컨대, 테일 부분 판독)을 실행할 때 사용을 위해 휘발성 메모리 내에 식별된 물리적 어드레스를 저장함으로써 단일 변환만을 수행할 수 있다. 제1 판독 및 제2 판독과 연관된 물리적 어드레스들은 동일할 것으로 예상되는데, 그 이유는 그들 양측 모두가 동일한 4 KB-정렬된 논리적 어드레스 범위에 대응하기 때문이다. 따라서, 제어기가 전술된 바와 같이 제1 판독과 연관된 물리적 어드레스(210)를 PBA 26인 것으로 식별하면, 제어기는 제2 판독과 연관된 물리적 어드레스가 또한 PBA 26임을 결정할 수 있다.
블록(612)에 의해 표현되는 바와 같이, 제어기는 메모리로부터 하나 이상의 래치들로의 헤드 부분 및 테일 부분과 연관된 데이터를 감지한다. 예를 들어, 도 5를 참조하면, 블록(508)에 의해 표현되는 바와 같이, 제어기는 식별된 물리적 어드레스에서 NAND(예컨대, NVM(110))로부터 4 KB 논리적 어드레스 범위 내의 데이터를 감지할 수 있다. 예를 들어, 도 1을 참조하면, 제어기는 감지 증폭기들(124)을 활성화시켜 PBA 26에 대응하는 메모리 로케이션들(112) 내의 셀들(116)로부터 래치들(126)로의 데이터 판독을 수행할 수 있다.
블록(614)에 의해 표현되는 바와 같이, 제어기는 데이터를 감지한 후에 헤드 부분 또는 테일 부분 중 하나의 부분에 대해 하나 이상의 래치들로부터 데이터를 판독한다. 예를 들어, 도 5를 참조하면, 블록(510)에 의해 표현되는 바와 같이, 제어기는 헤드 부분에 대한 래치들로부터(예컨대, 제1 판독의 실행으로부터) 감지된 데이터를 전송할 수 있다. 예를 들어, LBA0 내지 LBA2에만 연관된 데이터(119)가 래치들(126)로부터 제어기(123)로 전송될 수 있다.
블록(616)에 의해 표현되는 바와 같이, 제어기는 다른 감지를 수행하지 않고 테일 부분 또는 헤드 부분 중 다른 하나의 부분에 대해 하나 이상의 래치들로부터 데이터를 판독한다. 예를 들어, 도 5를 참조하면, 전술된 바와 같이 제2 판독이 제1 판독을 바로 뒤따르는 경우, 제어기는, 제2 판독(예컨대, 테일 부분 판독)을 실행할 때 래치들 내의 데이터를 이미 판독한 반면, 제1 판독(예컨대, 헤드 부분 판독)을 실행할 때 래치들(126) 내로의 데이터를 판독하도록 단일의 NAND 감지만을 수행할 수 있다. 따라서, 블록(512)에 의해 표현되는 바와 같이, 제어기는 테일 부분에 대한 래치들로부터(예컨대, 제2 판독의 실행으로부터) 감지된 데이터를 전송할 수 있다. 예를 들어, LBA4 내지 LBA7에만 연관된 데이터(119)가 래치들(126)로부터 제어기(123)로 전송될 수 있다.
블록(618)에 의해 표현되는 바와 같이, 제어기는, 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터, 제1 판독을 수행한 후에 헤드 부분과 연관된 데이터, 및 제2 판독을 수행한 후에 테일 부분과 연관된 데이터를 버퍼에 저장한다. 버퍼는 제어기의 기록 길이에 걸쳐 있다. 예를 들어, 도 3을 참조하면, 제어기가 기록 커맨드(302)를 수신하는 경우, 제어기는 호스트 데이터를 일시적으로 저장하기 위해 기록 길이(304)와 동일한 길이를 갖는 휘발성 메모리 내의 버퍼(306)(예컨대, 버퍼(128))를 할당한다. 호스트 데이터가 기록 길이(304)와 상이한(예컨대, 이와 정렬되지 않은) 데이터 길이(308)를 갖기 때문에, 저장 디바이스는 기록 커맨드(302)를 실행하기 전에 데이터를 정렬시키도록 진행한다. 예를 들어, 도 5를 참조하면, 블록(514)에 의해 표현되는 바와 같이, 제어기는 호스트 데이터에 대한 기록 커맨드에 할당된 버퍼 내의 헤드 부분에 대한 전송된 데이터를 병합하고, 블록(516)에 의해 표현되는 바와 같이, 제어기는 테일 부분에 대한 전송된 데이터를 버퍼 내의 호스트 데이터와 병합한다.
마지막으로, 블록(620)에 의해 표현되는 바와 같이, 제어기는 제1 판독 및 제2 판독을 수행한 후에 기록 커맨드에 응답하여 데이터를 기록한다. 제어기는 기록 커맨드에 응답하여 하나 이상의 요청된 논리적 어드레스들, 헤드 부분, 및 테일 부분과 연관된 데이터를 메모리에 기록할 수 있다. 예를 들어, 도 5를 참조하면, 블록(518)에 의해 표현되는 바와 같이, 제어기는 병합된 데이터를 메모리(예컨대, 버퍼(128))에 기록할 수 있다. 예를 들어, 제어기는 모든 4 KB의 정렬된 데이터(예컨대, 헤드 부분, 호스트 데이터, 및 테일 부분)를 NVM(110)에 기록하여 RMW의 동작을 완료할 수 있다.
따라서, 본 발명은 2-엔드 부정렬(예컨대, 기록 길이 내의 범위 논리적 어드레스들의 중간 또는 중앙)을 갖는 호스트 기록 커맨드들에 대한 L2P 변환들 및 NAND 판독들(감지)의 수를 감소시킴으로써 RMW 동작을 개선한다. 예를 들어, 본 발명은, 헤드 부분들과 테일 부분들에 대한 2개의 L2P 변환들 및 데이터 감지들을 수행할 수 있는 RMW 구현예들과는 대조적으로, 저장 디바이스의 제어기가 단지 하나의 L2P 변환 및 NVM으로부터의 4 KB의 정렬된 데이터 감지를 수행하고, 그에 따라 헤드 부분들 및 테일 부분들의 더 빠른 전송을 수행하게 할 수 있다.
본 발명의 다양한 태양들은 당업자가 본 발명을 실시할 수 있게 하기 위해 제공된다. 본 개시내용 전반에 걸쳐 제시된 예시적인 실시예들에 대한 다양한 변형들이 당업자에게 용이하게 명백할 것이며, 본 명세서에 개시된 개념들은 다른 자기 저장 디바이스들로 확장될 수 있다. 따라서, 청구범위는 본 발명의 다양한 태양들로 제한되는 것으로 의도되지 않으며, 청구범위의 언어에 부합하는 전체 범주를 따르도록 한다. 당업자에게 알려져 있거나 나중에 알려지게 될 본 개시내용 전반에 걸쳐 기술된 예시적인 실시예들의 다양한 컴포넌트들에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며, 청구범위에 의해 망라되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도, 그러한 개시내용이 청구항에서 명시적으로 인용되는지 여부에 관계없이 공중에게 전용되는 것으로 의도되지 않는다. 어떠한 청구항 구성요소도, 그 구성요소가 문구 "~하기 위한 수단"을 사용하여 명확하게 인용되지 않으면, 또는, 방법 청구항의 경우, 그 구성요소가 문구 "~하기 위한 단계"를 사용하여 인용되지 않으면, 미국의 35 U.S.C. §112(f)의 규정들, 또는 다른 관할지역의 유사한 법령 또는 법치 하에서 해석되지 않는다.
Claims (20)
- 저장 디바이스로서,
메모리; 및
호스트 데이터에 대한 하나 이상의 요청된 논리적 어드레스들을 포함하는 기록 커맨드를 호스트 디바이스로부터 수신하도록 구성된 제어기를 포함하고, 상기 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이는 상기 제어기의 기록 길이에 정렬되지 않고;
상기 제어기는, 적어도 하나의 선행하는(preceding) 논리적 어드레스와 연관된 헤드 부분에 대한 제1 판독 커맨드를 상기 하나 이상의 요청된 논리적 어드레스들에 발행하도록, 그리고 적어도 하나의 후행하는(following) 논리적 어드레스와 연관된 테일 부분에 대한 제2 판독 커맨드를 상기 하나 이상의 요청된 논리적 어드레스들에 발행하도록 추가로 구성되고;
상기 제어기는, 상기 메모리로부터 하나 이상의 래치들로의 상기 하나 이상의 요청된 논리적 어드레스들, 상기 적어도 하나의 선행하는 논리적 어드레스, 및 상기 적어도 하나의 후행하는 논리적 어드레스와 연관된 데이터를 감지하도록, 상기 데이터를 감지한 후에 상기 하나 이상의 래치들로부터 상기 헤드 부분을 판독하도록, 그리고 다른 감지를 수행하지 않고 상기 하나 이상의 래치들로부터 상기 테일 부분을 판독하도록 구성되고;
상기 제어기는, 상기 제1 판독 커맨드에 응답하여 상기 헤드 부분이 판독되고 상기 제2 판독 커맨드에 응답하여 상기 테일 부분이 판독된 후에, 상기 기록 커맨드에 응답하여 상기 호스트 데이터를 기록하도록 구성되고;
상기 제어기는, L2P(logical-to-physical) 변환에 응답하여 상기 헤드 부분에 대한 제1 물리적 어드레스를 식별하도록, 그리고 다른 L2P 변환을 수행하지 않고 상기 테일 부분에 대한 제2 물리적 어드레스를 식별하도록 구성되고;
상기 헤드 부분 및 상기 테일 부분은 동일한 물리적 어드레스와 연관되는 것인, 저장 디바이스. - 제1항에 있어서, 상기 제어기의 기록 길이는 상기 호스트 데이터의 데이터 길이, 상기 헤드 부분의 헤드 데이터 길이, 및 상기 테일 부분의 테일 데이터 길이의 합인 것인, 저장 디바이스.
- 제1항에 있어서, 상기 메모리는 상기 제어기의 기록 길이에 걸쳐 있는 버퍼를 포함하고, 상기 제어기는 상기 호스트 데이터, 상기 헤드 부분이 판독된 후에 상기 헤드 부분, 및 상기 테일 부분이 판독된 후에 상기 테일 부분을 상기 버퍼에 저장하도록 추가로 구성되는 것인, 저장 디바이스.
- 제1항에 있어서, 상기 제어기는 상기 기록 커맨드에 응답하여 상기 호스트 데이터, 상기 헤드 부분, 및 상기 테일 부분을 상기 메모리에 기록하도록 추가로 구성되는 것인, 저장 디바이스.
- 저장 디바이스로서,
메모리; 및
호스트 데이터에 대한 하나 이상의 요청된 논리적 어드레스들을 포함하는 기록 커맨드를 호스트 디바이스로부터 수신하도록 구성된 제어기를 포함하고, 상기 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이는 상기 제어기의 기록 길이에 정렬되지 않고;
상기 제어기는, 적어도 하나의 선행하는 논리적 어드레스와 연관된 헤드 부분에 대한 제1 판독 커맨드를 상기 하나 이상의 요청된 논리적 어드레스들에 발행하도록, 그리고 적어도 하나의 후행하는 논리적 어드레스와 연관된 테일 부분에 대한 제2 판독 커맨드를 상기 하나 이상의 요청된 논리적 어드레스들에 발행하도록 추가로 구성되고;
상기 제어기는,
상기 헤드 부분에 대한 상기 제1 판독 커맨드를, 상기 테일 부분에 대한 상기 제2 판독 커맨드를 발행한 직후에 발행하도록, 또는
상기 테일 부분에 대한 상기 제2 판독 커맨드를, 상기 헤드 부분에 대한 상기 제1 판독 커맨드를 발행한 직후에 발행하도록 추가로 구성되고,
상기 제어기는, 상기 제1 판독 커맨드에 응답하여 상기 헤드 부분이 판독되고 상기 제2 판독 커맨드에 응답하여 상기 테일 부분이 판독된 후에, 상기 기록 커맨드에 응답하여 상기 호스트 데이터를 기록하도록 추가로 구성되고;
상기 제어기는, L2P(logical-to-physical) 변환에 응답하여 상기 헤드 부분에 대한 제1 물리적 어드레스를 식별하도록, 그리고 다른 L2P 변환을 수행하지 않고 상기 테일 부분에 대한 제2 물리적 어드레스를 식별하도록 추가로 구성되고;
상기 헤드 부분 및 상기 테일 부분은 동일한 물리적 어드레스와 연관되는 것인, 저장 디바이스. - 제5항에 있어서, 상기 제어기는, 상기 메모리로부터 하나 이상의 래치들로의 상기 하나 이상의 요청된 논리적 어드레스들, 상기 적어도 하나의 선행하는 논리적 어드레스, 및 상기 적어도 하나의 후행하는 논리적 어드레스와 연관된 데이터를 감지하도록, 상기 데이터를 감지한 후에 상기 하나 이상의 래치들로부터 상기 헤드 부분을 판독하도록, 그리고 다른 감지를 수행하지 않고 상기 하나 이상의 래치들로부터 상기 테일 부분을 판독하도록 구성되는 것인, 저장 디바이스.
- 제5항에 있어서, 상기 제어기의 기록 길이는 상기 호스트 데이터의 데이터 길이, 상기 헤드 부분의 헤드 데이터 길이, 및 상기 테일 부분의 테일 데이터 길이의 합인 것인, 저장 디바이스.
- 제5항에 있어서, 상기 메모리는 상기 제어기의 기록 길이에 걸쳐 있는 버퍼를 포함하고, 상기 제어기는 상기 호스트 데이터, 상기 헤드 부분이 판독된 후에 상기 헤드 부분, 및 상기 테일 부분이 판독된 후에 상기 테일 부분을 상기 버퍼에 저장하도록 추가로 구성되는 것인, 저장 디바이스.
- 제5항에 있어서, 상기 제어기는 상기 기록 커맨드에 응답하여 상기 호스트 데이터, 상기 헤드 부분, 및 상기 테일 부분을 상기 메모리에 기록하도록 추가로 구성되는 것인, 저장 디바이스.
- 저장 디바이스로서,
메모리; 및
호스트 데이터에 대한 하나 이상의 요청된 논리적 어드레스들을 포함하는 기록 커맨드를 호스트 디바이스로부터 수신하도록 구성된 제어기를 포함하고, 상기 하나 이상의 요청된 논리적 어드레스들과 연관된 데이터 길이는 상기 제어기의 기록 길이에 정렬되지 않고;
상기 제어기는, 적어도 하나의 선행하는 논리적 어드레스와 연관된 헤드 부분에 대한 제1 판독 커맨드를 상기 하나 이상의 요청된 논리적 어드레스들에 발행하도록, 그리고 적어도 하나의 후행하는 논리적 어드레스와 연관된 테일 부분에 대한 제2 판독 커맨드를 상기 하나 이상의 요청된 논리적 어드레스들에 발행하도록 추가로 구성되고, 상기 제어기는, 상기 제1 판독 커맨드에 응답하여 상기 헤드 부분이 판독되고 상기 제2 판독 커맨드에 응답하여 상기 테일 부분이 판독된 후에, 상기 기록 커맨드에 응답하여 상기 호스트 데이터를 기록하도록 추가로 구성되고;
상기 제어기는, L2P(logical-to-physical) 변환에 응답하여 상기 헤드 부분에 대한 제1 물리적 어드레스를 식별하도록, 그리고 다른 L2P 변환을 수행하지 않고 상기 테일 부분에 대한 제2 물리적 어드레스를 식별하도록 추가로 구성되고;
상기 헤드 부분 및 상기 테일 부분은 동일한 물리적 어드레스와 연관되는 것인, 저장 디바이스. - 제10항에 있어서, 상기 제어기는,
상기 헤드 부분에 대한 상기 제1 판독 커맨드를, 상기 테일 부분에 대한 상기 제2 판독 커맨드를 발행한 직후에 발행하도록, 또는
상기 테일 부분에 대한 상기 제2 판독 커맨드를, 상기 헤드 부분에 대한 상기 제1 판독 커맨드를 발행한 직후에 발행하도록 추가로 구성되는 것인, 저장 디바이스. - 제10항에 있어서, 상기 제어기는, 상기 메모리로부터 하나 이상의 래치들로의 상기 하나 이상의 요청된 논리적 어드레스들, 상기 적어도 하나의 선행하는 논리적 어드레스, 및 상기 적어도 하나의 후행하는 논리적 어드레스와 연관된 데이터를 감지하도록, 상기 데이터를 감지한 후에 상기 하나 이상의 래치들로부터 상기 헤드 부분을 판독하도록, 그리고 다른 감지를 수행하지 않고 상기 하나 이상의 래치들로부터 상기 테일 부분을 판독하도록 구성되는 것인, 저장 디바이스.
- 제10항에 있어서, 상기 제어기의 기록 길이는 상기 호스트 데이터의 데이터 길이, 상기 헤드 부분의 헤드 데이터 길이, 및 상기 테일 부분의 테일 데이터 길이의 합인 것인, 저장 디바이스.
- 제10항에 있어서, 상기 메모리는 상기 제어기의 기록 길이에 걸쳐 있는 버퍼를 포함하고, 상기 제어기는 상기 호스트 데이터, 상기 헤드 부분이 판독된 후에 상기 헤드 부분, 및 상기 테일 부분이 판독된 후에 상기 테일 부분을 상기 버퍼에 저장하도록 추가로 구성되는 것인, 저장 디바이스.
- 제10항에 있어서, 상기 제어기는 상기 기록 커맨드에 응답하여 상기 호스트 데이터, 상기 헤드 부분, 및 상기 테일 부분을 상기 메모리에 기록하도록 추가로 구성되는 것인, 저장 디바이스.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/733,652 US11294824B2 (en) | 2020-01-03 | 2020-01-03 | System and method for reduced latency of read-modify-write operations |
US16/733,652 | 2020-01-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210087864A KR20210087864A (ko) | 2021-07-13 |
KR102502318B1 true KR102502318B1 (ko) | 2023-02-21 |
Family
ID=76432350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200071363A KR102502318B1 (ko) | 2020-01-03 | 2020-06-12 | 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11294824B2 (ko) |
KR (1) | KR102502318B1 (ko) |
CN (1) | CN113076057B (ko) |
DE (1) | DE102020116366A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220106307A (ko) * | 2021-01-22 | 2022-07-29 | 삼성전자주식회사 | 스토리지 장치 및 그 구동 방법 |
US20230214254A1 (en) * | 2022-01-05 | 2023-07-06 | Western Digital Technologies, Inc. | PCIe TLP Size And Alignment Management |
US11899956B2 (en) | 2022-06-22 | 2024-02-13 | Western Digital Technologies, Inc. | Optimized read-modify-writes during relocation of overlapping logical blocks |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010080021A (ja) | 2008-09-29 | 2010-04-08 | Toshiba Storage Device Corp | 記録制御方法及び記録制御部、並びに記憶装置 |
JP2015064685A (ja) | 2013-09-24 | 2015-04-09 | 日本電気株式会社 | ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム |
JP2015082269A (ja) * | 2013-10-24 | 2015-04-27 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法 |
US20150154112A1 (en) | 2013-12-02 | 2015-06-04 | Sandisk Technologies Inc. | Batch command techniques for a data storage device |
US20170160932A1 (en) | 2015-12-03 | 2017-06-08 | Sandisk Technologies Inc. | Reading Logical Groups of Data from Physical Locations in Memory Using Headers |
US20190155723A1 (en) | 2017-11-21 | 2019-05-23 | SK Hynix Inc. | Data storage device and operating method thereof |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3825465B2 (ja) * | 2004-03-31 | 2006-09-27 | 松下電器産業株式会社 | メモリカード及びメモリカードシステム |
US7428626B2 (en) * | 2005-03-08 | 2008-09-23 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
US7944452B1 (en) * | 2006-10-23 | 2011-05-17 | Nvidia Corporation | Methods and systems for reusing memory addresses in a graphics system |
US8924631B2 (en) | 2011-09-15 | 2014-12-30 | Sandisk Technologies Inc. | Method and system for random write unalignment handling |
US9218279B2 (en) * | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US9304709B2 (en) | 2013-09-06 | 2016-04-05 | Western Digital Technologies, Inc. | High performance system providing selective merging of dataframe segments in hardware |
WO2015048037A1 (en) * | 2013-09-24 | 2015-04-02 | Rambus Inc. | Memory component having internal read-modify-write operation |
US9703699B2 (en) * | 2014-09-17 | 2017-07-11 | Kabushiki Kaisha Toshiba | Hybrid-HDD policy for what host-R/W data goes into NAND |
JP6476969B2 (ja) | 2015-02-17 | 2019-03-06 | 富士通株式会社 | ストレージ制御装置、制御プログラムおよび制御方法 |
US10114566B1 (en) | 2015-05-07 | 2018-10-30 | American Megatrends, Inc. | Systems, devices and methods using a solid state device as a caching medium with a read-modify-write offload algorithm to assist snapshots |
US10387046B2 (en) * | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
KR102353027B1 (ko) * | 2017-07-03 | 2022-01-20 | 삼성전자주식회사 | 스토리지 장치의 데이터 트레이닝 방법 |
KR102293069B1 (ko) * | 2017-09-08 | 2021-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법 |
US10430330B2 (en) | 2017-10-18 | 2019-10-01 | Western Digital Technologies, Inc. | Handling of unaligned sequential writes |
KR102421149B1 (ko) * | 2018-01-02 | 2022-07-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10372603B2 (en) * | 2017-11-27 | 2019-08-06 | Western Digital Technologies, Inc. | Handling of unaligned writes |
US10572391B2 (en) * | 2018-02-09 | 2020-02-25 | Western Digital Technologies, Inc. | Methods and apparatus for implementing a logical to physical address mapping in a solid state drive |
US11144472B2 (en) * | 2019-03-27 | 2021-10-12 | Intel Corporation | Memory management apparatus and method for managing different page tables for different privilege levels |
-
2020
- 2020-01-03 US US16/733,652 patent/US11294824B2/en active Active
- 2020-06-12 KR KR1020200071363A patent/KR102502318B1/ko active IP Right Grant
- 2020-06-17 CN CN202010553752.6A patent/CN113076057B/zh active Active
- 2020-06-22 DE DE102020116366.5A patent/DE102020116366A1/de active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010080021A (ja) | 2008-09-29 | 2010-04-08 | Toshiba Storage Device Corp | 記録制御方法及び記録制御部、並びに記憶装置 |
JP2015064685A (ja) | 2013-09-24 | 2015-04-09 | 日本電気株式会社 | ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム |
JP2015082269A (ja) * | 2013-10-24 | 2015-04-27 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法 |
US20150154112A1 (en) | 2013-12-02 | 2015-06-04 | Sandisk Technologies Inc. | Batch command techniques for a data storage device |
US20170160932A1 (en) | 2015-12-03 | 2017-06-08 | Sandisk Technologies Inc. | Reading Logical Groups of Data from Physical Locations in Memory Using Headers |
US20190155723A1 (en) | 2017-11-21 | 2019-05-23 | SK Hynix Inc. | Data storage device and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN113076057B (zh) | 2024-06-21 |
KR20210087864A (ko) | 2021-07-13 |
US20210209030A1 (en) | 2021-07-08 |
US11294824B2 (en) | 2022-04-05 |
CN113076057A (zh) | 2021-07-06 |
DE102020116366A1 (de) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102652694B1 (ko) | 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화 | |
KR102502318B1 (ko) | 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법 | |
US11513723B2 (en) | Read handling in zoned namespace devices | |
US20210389878A1 (en) | Read Latency Reduction through Command and Polling Overhead Avoidance | |
US11892928B2 (en) | Delayed thermal throttling and associated data routing techniques | |
KR102365602B1 (ko) | 지능형 임계치 검출을 통한 커맨드 최적화 | |
US11403011B1 (en) | Host memory buffer allocation management | |
US11481150B2 (en) | Read modify write optimization for video performance | |
US11347420B2 (en) | Attribute mapping in multiprotocol devices | |
US11281405B2 (en) | Controlled die asymmetry during MLC operations for optimal system pipeline | |
US11314445B2 (en) | Pattern tracking for efficiently predicting control pages | |
US11726717B2 (en) | NAND dropped command detection and recovery | |
US11775222B2 (en) | Adaptive context metadata message for optimized two-chip performance | |
US20230359550A1 (en) | File system integration into data mining model | |
US20230359391A1 (en) | Allocation of host memory buffer for sustained sequential writes | |
US11604735B1 (en) | Host memory buffer (HMB) random cache access | |
US20240086071A1 (en) | Ssd use of host memory buffer for improved performance | |
US12026384B2 (en) | Open block relocation | |
US11256423B2 (en) | Efficiently identifying command readiness based on system state and data spread in multi queue depth environment | |
US11823766B2 (en) | MLM mapped NAND latch | |
US20230359378A1 (en) | Encoding-aware data routing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |