KR20110107856A - 논리적 어드레스 오프셋 - Google Patents
논리적 어드레스 오프셋 Download PDFInfo
- Publication number
- KR20110107856A KR20110107856A KR1020117019228A KR20117019228A KR20110107856A KR 20110107856 A KR20110107856 A KR 20110107856A KR 1020117019228 A KR1020117019228 A KR 1020117019228A KR 20117019228 A KR20117019228 A KR 20117019228A KR 20110107856 A KR20110107856 A KR 20110107856A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- offset
- memory unit
- logical address
- data area
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
본 발명은 논리적 어드레스 오프셋을 위한 방법들, 디바이스들, 및 시스템들을 포함한다. 일 방법 실시예는 메모리 유닛 포멧팅 동작을 검출하는 것을 포함한다. 그 후 포멧팅 동작의 검출에 응답하여, 방법은 메모리 유닛 상에서 포멧 정보를 검사하고, 논리적 어드레스 오프셋을 계산하고, 이 오프셋을 호스트 논리적 어드레스에 적용하는 것을 포함한다.
Description
본 발명은 일반적으로 반도체 메모리 디바이스들, 방법들, 및 시스템들에 관한 것으로서, 보다 구체적으로는 논리적 어드레스 오프셋에 관한 것이다.
메모리 디바이스들은 통상적으로 컴퓨터들 또는 다른 전자 디바이스들에서 인터널(internal), 반도체, 집적 회로들로서 제공된다. 휘발성 및 비-휘발성 메모리를 포함하는 다수의 상이한 형태들의 메모리가 존재한다. 휘발성 메모리는 그 데이터를 유지하는데 전력을 필요로 할 수 있고, 특히 랜덤-액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함한다. 비-휘발성 메모리는 전력 공급되지 않을 때 저장된 정보를 보유함으로써 영구적인 데이터를 제공할 수 있고 특히, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적으로 삭제 가능한 프로그래밍 가능 ROM(EEPROM), 삭제 가능한 프로그래밍 가능 ROM(EPROM), 및 상변화 랜덤 액세스 메모리(phase change random access memory ; PCRAM)를 포함한다.
메모리 디바이스들은 솔리드 스테이트 드라이브(SSD)를 형성하도록 서로 조합될 수 있다. 솔리드 스테이트 드라이브는 비-휘발성 및 휘발성 메모리의 다양한 다른 형태들 중에서 예를 들어, NAND 플래시 메모리 및 NOR 플래시 메모리와 같은 비-휘발성 메모리를 포함할 수 있고, 및/또는 예를 들어, DRAM 및 SRAM과 같은 휘발성 메모리를 포함할 수 있다.
SSD는 솔리드 스테이트 드라이브가 성능, 크기, 무게, 견고성, 동작 온도 범위, 및 전력 소비 견지에서 하드 드라이브들에 비해 이점을 가질 수 있기 때문에, 컴퓨터용 주요 저장 디바이스로서 하드 디스크 드라이브들을 대체하기 위해 사용될 수 있다. 예를 들어, SSD들은 이동부들(moving part)이 없기 때문에 자기 디스크 드라이브들에 비하면 우월한 성능을 가질 수 있고, 이는 탐색 시간, 지연, 및 자기 디스크 드라이브와 연관된 다른 전자-기계적 지연들을 향상시킬 수 있다. SSD 제조자들은 내부 배터리 전원을 이용하지 않을 수 있는 플래시 SSD들을 생성하기 위해 비-휘발성 플래시 메모리를 이용할 수 있고, 따라서, 드라이브가 더욱 다 기능적이고 간결하게 되는 것을 허용한다.
SSD는 다수의 메모리 디바이스들 예를 들어, 다수의 메모리 칩들(본 명세서에서 사용된 "다수의" 어떤 것(something)은 하나 이상의 이러한 사물들을 지칭할 수 있고 예를 들어, 다수의 메모리 디바이스들은 하나 이상의 메모리 디바이스들을 지칭할 수 있음)을 포함할 수 있다. 메모리 디바이스들의 콜렉션은 메모리 유닛으로서 지칭될 수 있다. 이 기술 분야의 숙련자가 이해할 수 있는 바와 같이, 메모리 칩은 다수의 다이들을 포함할 수 있다. 각 다이는 다수의 메모리 어레이들 및 그 주변 회로들을 포함할 수 있다. 메모리 어레이들은 다수의 물리적 블록들로 편성된(organized) 다수의 메모리 셀들을 포함할 수 있고, 물리적 블록들은 다수의 페이지들로 편성될 수 있다.
일부 포멧 유틸리티들은 SSD를 구성하는 메모리 어레이들의 물리적 특성들을 알지 못할 수 있다. 따라서, SSD가 특정 파일 시스템용의 이런 유틸리티를 이용하여 포멧팅될 때 메모리 유닛은 다수의 영역들로 분할될 수 있고, 다수의 영역들 각각은 메모리 셀들의 블록 또는 페이지와 같은 물리적 경계에 대응하거나 대응하지 않을 수 있는 시작 논리적 어드레스를 갖는다. 예를 들어, 파일 시스템의 사용자 데이터 영역은 메모리 셀들의 블록 또는 페이지의 중간에 맵핑될 수 있는 시작 논리적 주소를 가질 수 있다.
도 1은 본 발명의 하나 이상의 실시예들에 따라 동작될 수 있는 전자 메모리 시스템의 기능적 블록도.
도 2는 본 발명의 하나 이상의 실시예들에 따른 메모리 제어기의 기능적 블록도.
도 3은 본 발명의 하나 이상의 실시예들에 따른 메모리 디바이스의 일부의 다이어그램을 예시하는 도면.
도 4는 본 발명의 하나 이상의 실시예들에 따른 파일 시스템으로 포멧팅된 메모리 유닛의 블록도.
도 2는 본 발명의 하나 이상의 실시예들에 따른 메모리 제어기의 기능적 블록도.
도 3은 본 발명의 하나 이상의 실시예들에 따른 메모리 디바이스의 일부의 다이어그램을 예시하는 도면.
도 4는 본 발명의 하나 이상의 실시예들에 따른 파일 시스템으로 포멧팅된 메모리 유닛의 블록도.
본 발명은 논리적 어드레스 오프셋을 위한 방법들, 디바이스들, 및 시스템들을 포함한다. 하나의 방법 실시예들은 메모리 유닛 포멧팅 동작을 검출하는 것을 포함한다. 그 후, 포멧팅 동작의 검출에 응답하여, 방법은 메모리 유닛에 관한 포멧 정보를 검사하고, 논리적 어드레스 오프셋을 계산하고, 및 이 오프셋을 호스트 논리적 어드레스에 적용하는 것을 포함한다.
본 발명의 이하의 상세한 설명에서, 명세서의 일부를 형성하고 본 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는지에 관한 예시로서 도시되는 첨부 도면들이 참조된다. 이 실시예들은 이 기술 분야의 숙련자가 본 발명의 실시예들을 실시하는 것을 가능하도록 충분히 상세하게 기술되고, 본 발명의 범위로부터 벗어남 없이 프로세스, 전기적 및/또는 구조적 변경들이 행해질 수 있는 다른 실시예들이 활용될 수 있다는 것을 이해한다. 여기서 사용된 바와 같이, 구체적으로 도면들에서 참조 번호들에 대해 지정자들 "N", "M", "R", 및 "S"은 이렇게 지정된 다수의 특별한 특징이 본 발명의 하나 이상의 실시예들과 함께 포함될 수 있다는 것을 표시한다.
본 명세서의 도면들은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자들은 도면에서 엘리먼트 또는 구성요소를 식별한다는 번호 규칙을 따른다. 상이한 도면들 사이에서 유사한 엘리먼트들 또는 구성요소들은 유사한 숫자들을 사용하여 식별될 수 있다. 예를 들어, 101은 도 1의 엘리먼트 "01"을 참조할 수 있고, 유사한 요소는 도면 2에서 201로서 참조될 수 있다. 이해될 것처럼, 본 명세서의 다양한 실시예들에 도시된 엘리먼트는 본 발명의 다수의 부가적인 실시예들을 제공하도록 부가, 교환, 및/또는 제거될 수 있다. 또한, 이해될 것처럼, 도면들에서 제공된 엘리먼트들의 비율 및 상대적 크기(scale)는 본 발명의 실시예들을 예시하기 위해 의도되었으며, 제한적인 의미로 받아들여져선 안 된다.
도 1은 본 발명의 하나 이상의 실시예들에 따라 동작될 수 있는 전자 메모리 시스템(120)을 포함하는 계산 시스템(100)의 기능적 블록도이다. 도 1에서 예시된 실시예에서, 메모리 시스템(120)은 예를 들어, 솔리드 스테이트 드라이브(SSD)는 메모리 제어기(101), 호스트 인터페이스 커넥터(103), 및 다수의 메모리 어레이들(130-1, ...,130N)을 포함할 수 있다. 솔리드 스테이트 메모리 디바이스들(130-1, ...,130-N)은 본 명세서에서 집합적으로 메모리 유닛(132)로서 지칭된다. 파일 시스템은 메모리 유닛(132)이 데이터 저장을 위한 저장 볼륨을 제공할 수 있도록 메모리 유닛(132)으로 포켓팅될 수 있다. 하나 이상의 실시예에서, 호스트 인터페이스 커넥터(103), 메모리(132), 및 메모리 제어기(101)를 포함하는 메모리 시스템(120)은 예를 들어, 인쇄된 회로 보드와 같은 이산 메모리 모듈의 부분일 수 있다.
도 1에 예시된 바와 같이, 메모리 제어기(101)는 호스트 인터페이스 커넥터(103) 및 솔리드 스테이트 메모리 디바이스들(130-1, ..., 130-N)에 연결될 수 있다. 호스트 인터페이스 커넥터(103)는 메모리 시스템(120)과 호스트 시스템(102)과 같은 다른 디바이스 사이에서 정보를 통신하는데 이용될 수 있다. 호스트 시스템(102)은 메모리 액세스 드라이브, 예를 들어, 처리기를 포함할 수 있다. 이 기술 분야의 숙련자는 "처리기"가 병렬 처리 시스템, 보조처리기들(coprocessors) 등과 같이 하나 이상의 처리기들을 의도할 수 있다는 것을 이해할 것이다. 호스트 시스템들의 예들로는 랩톱 컴퓨터들, 개인용 컴퓨터들, 디지털 카메라들, 디지털 레코딩 및 재생 디바이스들, 휴대용 전화, PDA들, 메모리 카드 리더들, 인터페이스 허브들 등을 포함한다. 하나 이상의 실시예들에 있어서, 호스트 인터페이스 커넥터(103)는 표준화된 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(120)이 컴퓨터 시스템(100)에 데이터 저장을 위해 이용될 때, 호스트 인터페이스 커넥터(103)는 다른 커넥터들 및 인터페이스 중에서 직렬 고급 기술 연결(SATA), 주변 구성요소 상호접속 익스프레스(peripheral component interconnect express; PCIe), 또는 범용 직렬 버스(USB)일 수 있다. 일반적으로, 그러나 호스트 인터페이스 커넥터(103)는 호스트 인터페이스 커넥터(103)에 대해 호환 가능한 수용기들(receptors)을 구비한 호스트 시스템(102)과 메모리 시스템(120) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 통과시키기 위한 인터페이스를 제공할 수 있다.
메모리 제어기(101)는 다른 동작들 중에서 데이터를 감지, 프로그래밍, 및 삭제하기 위해 솔리드 스테이트 메모리 디바이스(130-1, ..., 130-N)와 통신할 수 있다. 메모리 제어기(101)는 하나 이상의 집적 회로들 및/또는 이산 컴포넌트들일 수 있는 회로를 가질 수 있다. 하나 이상의 실시예들에 있어서, 메모리 제어기(101)의 회로는 솔리드 스테이트 메모리 디바이스들(130-1, ..., 130-N)에 대한 액세스를 제어하기 위한 제어 회로 및 호스트 시스템(102)과 메모리 시스템(120) 간의 번역층(translation layer)을 제공하기 위한 회로를 포함할 수 있다. 따라서, 메모리 제어기는 적절한 시간에 적절한 I/O 연결시에 적절한 신호를 수신하도록 솔리드 스테이트 메모리 디바이스들(130-1, ..., 130-N)의 I/O 연결(도 1에서 도시되지 않음)을 선택적으로 결합할 수 있다. 유사하게, 호스트 시스템(102)과 메모리 시스템(120) 간의 통신 프로토콜은 솔리드 스테이트 메모리 디바이스들(130-1, ..., 130-N)의 액세스를 위해 요구되는 것과 상이할 수 있다. 그 후 메모리 제어기(101)는 호스트로부터 수신된 명령들을 적절한 명령들로 번역하여 솔리드 스테이트 메모리 디바이스들(130-1, ..., 130-N)에 대한 소정의 액세스를 달성할 수 있다.
솔리드 스테이트 메모리 디바이스들(130-1, ..., 130-N)은 메모리 셀들, 예를 들어, 비휘발성 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 어레이들은 예를 들어, NAND 아키텍처를 갖는 플래시 어레이일 수 있다. NAND 아키텍처에서, "로우(row)"의 메모리 셀들의 제어 게이트들은 워드 라인과 결합될 수 있고, 메모리 셀들은 선택 게이트 소스 트랜지스터와 선택 게이트 드레인 트랜지스터 사이에서 "스트링(string)"에서 직렬의 소스-드레인으로 결합될 수 있다. 스트링은 선택 게이트 드레인 트랜지스터에 의해 비트 라인에 연결될 수 있다. 용어들 "로우들" 및 "스트링들"의 사용은 선형 메모리 셀들의 선형 또는 직교 배열 둘 다를 암시하지 않는다. 이 기술 분야의 숙련자가 이해할 수 있는 바와 같이, 비트 라인들 및 소스 라인들로의 메모리 셀들의 연결 방식은 어레이가 NAND 아키텍처인지, NOR 아키텍처인지, AND 아키텍처인지, 또는 몇몇 다른 메모리 어레이 아키텍처인지 여부에 의존한다.
도 1의 실시예는 본 발명의 실시예들을 모호하게 하지 않기 위해 예시되지 않은 부가적인 회로를 포함할 수 있다. 예를 들어, 메모리 시스템(120)은 I/O 회로를 통한 I/O 연결들을 통해 제공된 어드레스 신호들을 래치(latch)하기 위한 어드레스 회로를 포함할 수 있다. 어드레스 신호들은 솔리드 스테이트 메모리 디바이스(130-1, ..., 130-N)를 액세스하도록 로우 디코더 및 컬럼 디코더에 의해 수신 및 디코딩될 수 있다. 어드레스 입력 연결들의 수는 솔리드 스테이트 메모리 디바이스(130-1, ..., 130-N의 밀도 및 아키텍처에 의존할 수 있다는 것은 이 기술 분야의 숙련자라면 이해할 것이다.
도 2는 본 발명의 하나 이상의 실시예들에 따른 메모리 제어기(201)의 기능적 블록도이다. 메모리 제어기(201)는 도 1에 예시된 메모리 제어기(101)에 유사할 수 있다. 메모리 제어기(201)는 예를 들어, 도 1에 예시된 호스트 인터페이스 커넥터(103)를 통해 호스트 시스템과 인터페이싱할 수 있는 호스트 인터페이스(I/F)(204)를 포함한다. 호스트 I/F는 메모리 제어기(201)의 제어 메모리 및 제어 회로(208)에 결합된다. 제어 회로(208)는 제어기 메모리(210) 및 비교기(214)에 결합될 수 있다. 제어기 메모리(210)는 부가기(212)에 결합될 수 있다. 비교기(214) 및 부가기(212)는 서로 및 메모리 유닛 인터페이스(I/F)(206)에 결합될 수 있다. 메모리 제어기는 메모리 유닛 I/F(206)을 통해 메모리 유닛, 예를 들어, 도 1에 예시된 메모리 유닛(132)에 결합될 수 있다.
메모리 제어기(201)는 본 발명의 실시예들을 모호하게 하지 않도록 여기서 예시되지 않는 부가적인 컴포넌트들을 포함할 수 있다. 또한, 메모리 제어기(201)는 본 발명의 범위로부터 벗어남 없이 예시된 컴포넌트의 상이한 배열들을 가질 수 있다. 메모리 제어기(201)는 집적 회로의 형태를 취할 수 있고―여기서 도 2에 예시된 컴포넌트들은 집적 회로의 기능을 나타냄―, 또는 메모리 제어기(201)는 이상 컴포넌트들의 조합일 수 있다.
호스트 I/F(204)는 호스트 시스템, 예를 들어, 도 1의 호스트 시스템(102)에 신호들을 송신하고 및/또는 이로부터 신호들을 수신할 수 있다. 메모리 유닛 I/F(206)은 메모리 유닛, 예를 들어, 도 1의 메모리 유닛(132)에 신호들을 송신하고 및/또는 이로부터 신호를 수신할 수 있다. 제어 회로(208)는 호스트 I/F(204)를 통해 호스트 시스템으로부터 제공된 신호들을 디코딩할 수 있다. 이 신호들은 다양한 판독, 기록, 삭제, 또는 메모리 유닛에 대한 다른 동작 신호들을 포함할 수 있다. 제어기 메모리(210)는 제어기(201)에 국부적인 메모리일 수 있고 DRAM, EPROM, EEPROM, 플래시 등과 같은 비-휘발성 메모리 또는 휘발성 메모리일 수 있다. 제어기 메모리(210)는 여기서 시술된 바와 같이 하나 이상의 논리적 어드레스 오프셋들을 저장하도록 구성될 수 있다. 부가적인 회로 및 제어 신호들이 제공될 수 있고, 도 2의 디바이스 상세는 예시를 용이하게 하기 위해 간소화되었다는 것을 이 기술 분야의 숙련자라면 이해할 것이다.
비교기(214)는 호스트 논리적 어드레스를 메모리 유닛 상에서 포멧팅된 파일 시스템의 다수의 영역들에 대응하는 논리적 어드레스들의 범위와 비교하도록 구성된 하나 이상의 논리적 어드레스 범위 비교기들을 포함할 수 있다. 예를 들어, 비교기(214)는 여기서 보다 상세히 기술되는 바와 같이, 호스트 논리적 어드레스가 사용자 데이터 영역에 대응하는 논리적 어드레스들의 범위 내에 있는지를 결정하도록 사용될 수 있다. 이해할 것처럼, 호스트 논리적 어드레스는 여기서 보다 상세히 기술되는 호스트 논리적 블록 어드레스(LBA)일 수 있다. 참조의 편의를 위해, 용어 "호스트 LBA"가 여기서 사용될 것이며, 본 발명의 하나 이상의 실시예들에 있어서 호스트 논리적 어드레스들의 다른 형태의 사용을 배제하지 않는다.
부가기(212)는 호스트 I/F(204)를 통해 수신된 논리적 어드레스에 오프셋, 예를 들어, 제어기 메모리(210)에 저장된 오프셋을 부가하도록 구성될 수 있다. 하나 이상의 실시예들에서, 부가기(212)는 이 오프셋을 메모리 유닛 I/F(206)에 걸쳐 송신되는 호스트 LBA 이전의 호스트 LBA에 부가할 수 있다.
제어기(201)는 논리적 어드레스 오프셋을 계산하고 이 오프셋을 제어기 메모리(210)에 저장할 수 있다. 예를 들어, 하나 이상의 논리적 어드레스 오프셋들은 제어기 회로(208)가 포멧팅 동작을 검출할 때까지 메모리(210)에 저장될 수 있다. 제어기(201)는 호스트 I/F(204)로부터, 예를 들어, 호스트 LBA들과 연관된 메모리 유닛의 일부를 액세스하고자 하는 호스트 시스템에 응답하여 호스트 LBA들을 수신할 수 있다. 비교기(214)가 어드레스들의 특정 범위, 예를 들어, 파일 시스템의 사용자 데이터 영역에 대응하는 범위 내에서 호스트 LBA를 검출하면, 부가기(212)는 이 오프셋을 호스트 LBA에 부가하고 메모리 유닛 I/F(206)을 통해 오프셋 호스트 LBA를 패싱한다. 제어기(201)에 의해 수행되는 이러한 동작들은 호스트 시스템에 투명할 수 있고 여기서 보다 상세히 설명된다.
하나 이상의 실시예들에서, 예를 들어, 검사된 포멧 정보에 따라 메모리 유닛과 연관된 다양한 물리적 파라미터는 제어기 메모리(210)에 저장될 수 있고, 제어 회로(208)에 통신될 수 있다. 물리적 파라미터들의 예들은 다른 파라미터들 중에서 유닛 크기, 페이지 크기, 블록 크기, 파일 시스템 형태, 미디어 형태, 및 메모리 셀 형태를 포함한다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 메모리 어레이(330)의 일부의 다이어그램을 예시한다. 도 3에서 도시되지 않았지만, 이 기술 분야의 숙련자는 메모리 어레이(330)가 그 동작들과 연관된 다양한 주변 회로들과 함께 특정 반도체 다이 상에 위치될 수 있다는 것을 이해할 것이다. 메모리 디바이스(330)는 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다.
도 3에서 도시된 바와 같이, 메모리 어레이(330)는 메모리 셀들의 다수의 물리적인 블록들(340-0(블록 0), 340-1(블록 1), ..., 340-M(블록 M))을 가진다. 도 3에 도시된 예에서, 표시자 "M"은 다수의 물리적인 블록들을 메모리 어레이(330)가 포함할 수 있다는 것을 표시하는데 이용된다. 예로서, 어레이(330)의 다수의 물리적인 블록들은 128블록들, 4,096블록들, 또는 32,768블록들일 수 있지만, 실시예들은 어레이(330)내의 임의의 특정수의 또는 다수의 물리적 블록들로 국한되지 않는다. 또한, 실시예들은 어레이에서 이용되는 메모리의 형태들, 예를 들어, 비-휘발성, 휘발성 등으로 국한되지 않는다. 도 3에서 예시된 실시예에서, 메모리 어레이(330)는 예를 들어, 각 물리적 블록(340-0, 340-1, ..., 340-M)이 단위로서 함께 삭제될 수 있도록 예를 들어, NAND 플래시 메모리 어레이 디바이스(330)일 수 있으며, 예를 들어, 각 물리적 블록의 셀들은 실질적으로 동시성 방식으로 삭제될 수 있다. 예를 들어, 각 물리적 블록의 셀들은 단일의 삭제 동작에서 함께 삭제될 수 있다.
표시자 "R"은 물리적 블록, 예를 들어, 340-0, 340-1, ..., 340-M가 다수의 로우들을 포함할 수 있다는 것을 표시하는데 이용된다. 일부 실시예들에서, 각 물리적 블록의 로우들의 수, 예를 들어, 워드 라인들은 32일 수 있지만, 실시예들에서 물리적 블록당 특정수의 로우들(350-0, 350-1, ..., 350-R)로 국한되지 않는다. 이 기술 분야의 숙련자가 이해할 수 있는 바와 같이, 각 로우(350-0, 350-1, ..., 350-R)는 하나 이상의 물리적 페이지들, 예를 들어, 짝수 페이지 및 홀수 페이지를 포함할 수 있다. 물리적 페이지는 기록 및/또는 판독의 단위, 예를 들어, 메모리 셀들의 기능적 그룹으로서 또는 함께 기록 및/또는 판독되는 다수의 셀들을 지칭한다. 따라서, 짝수 페이지 및 홀수 페이지는 개별적인 기록 및/또는 판독 동작들로 기록 및/또는 판독될 수 있다. 멀티레벨 셀들(MLC)을 포함하는 실시예에 있어서, 물리적 페이지는 데이터의 상위 페이지 및 하위 페이지로 논리적으로 분할될 수 있다. 예를 들어, 하나의 메모리 셀은 하나 이상의 비트들을 데이터의 상위 페이지 및 하나 이상의 비트들을 데이터의 하위 페이지에 기여(contribute)할 수 있다. 따라서, 데이터의 상위 페이지 및 하위 페이지는 논리적 상위 페이지 및 논리적 하위 페이지 둘 다가 동일한 물리적 페이지의 일부이기 때문에 하나의 기록 및/또는 판독 동작들의 일부로서 기록 및/또는 판독될 수 있다. 예시의 용이성을 위해, 도 3의 각 로우(350-0, 350-1, ..., 350-R)는 단지 하나의 물리적 및 논리적 페이지를 포함하지만, 실시예들이 이것으로 국한되는 것은 아니다.
본 발명의 하나 이상의 실시예들에서, 및 도 3에서 도시된 바와 같이, 페이지는 다수의 섹터들(352-0, 352-1, ..., 352-S)에 데이터를 저장할 수 있다. 표시자 "S"는 페이지가 다수의 섹터들을 포함할 수 있다는 것을 표시하는데 이용된다. 각 섹터(352-0, 352-1, ..., 352-S)는 시스템 및/또는 사용자 데이터를 저장할 수 있고, 에러 보정 코드(ECC) 정보, 및 논리적 블록 어드레스(LBA) 정보와 같은 오버헤드 정보를 포함할 수 있다. 이 기술 분야의 숙련자가 이해하는 바와 같이, 논리적 블록 어드레싱은 정보의 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 스킴(scheme)이며, 예를 들어, 각 섹터는 고유한 LBA에 대응할 수 있다. 하나 이상의 실시예들에서, 섹터는 저장 볼륨의 최소 어드레싱 가능한 부분(smallest addressable portion)이다. 예로서, 데이터의 섹터는 다수의 데이터 바이트들, 예를 들어, 256바이트, 512바이트, 또는 1,024 바이트일 수 있다. 예를 들어, SSD는 페이지에서 4, 8, 또는 16 섹터들을 가질 수 있고, 여기서 섹터는 512 바이트일 있고, SSD는 물리적 블록당 128, 256, 또는 512 페이지들을 가질 수 있고, 그러므로 물리적 블록 크기들은 131072바이트, 262144바이트, 및 524288 바이트이다. 실시예들은 이 예들로 국한되지 않는다.
물리적 블록들(340-0, 340-1, ..., 340-M), 로우들(350-0, 350-1, ..., 350-R), 섹터들(352-0, 352-1, ..., 352-S), 및 페이지들에 대한 다른 구성들이 가능하다는 것에 주의한다. 예를 들어, 물리적 블록들(340-0, 340-1, ..., 340-M)의 로우들(350-0, 350-1, ..., 350-R)은 예를 들어, 512 바이트의 데이터 이상 또는 이하를 포함할 수 있는 단일의 섹터에 대응하는 데이터를 각각 저장할 수 있다.
도 4는 본 발명의 하나 이상의 실시예들에 따라 파일 시스템(460)으로 포멧팅된 메모리 유닛의 블록도를 예시한다. 여기서 개시된 바와 같이, 포멧팅된 메모리 유닛은 저장 볼륨을 제공할 수 있다. 도 4에 예시된 실시예가 파일 할당표(FAT) 파일 시스템을 포함하지만, 본 발명의 실시예들은 특정 형태의 파일 시스템으로 국한되지 않는다. 예를 들어, 본 발명의 하나 이상의 실시예들은 NTFS(New Technology File System), 유닉스 파일 시스템(UFS), 유니버셜 디스크 포멧(UDF) 등과 같은 다른 파일 시스템으로 이용될 있다. 하나 이상의 실시예들에서, 파일 시스템(460)으로 포멧팅된 메모리 유닛은 시스템 데이터 영역(461) 및 사용자 데이터 영역(462)을 포함할 수 있다. 시스템 데이터 영역(461)은 파일 시스템(460)의 구조 및 동작과 관련되는 포멧 정보, 예를 들어, "메타데이터"(465)를 포함할 수 있다. 도 4에서 예시된 실시예에서, 시스템 데이터 영역(461)은 파티션 부트 레코드(464), 보존 데이터(466), 제 1 파일 할당표(468), 제 2 파일 할당표(470) 및 루트 디렉토리(472)와 같은 다수의 섹터들을 포함한다
파티션 부트 레코드(PBR)(464)는 파일 시스템(460)의 제 1 영역으로서 예시된다. PBR(464)는 마스터 부트 레코드(master boot record) 및 볼륨 부트 레코드(volume boot record) 둘 중 하나 또는 둘 다를 포함한다. 예를 들어, PBR(464)은 운영 체제를 부팅하기 위한 코드 또는 저장 볼륨의 다른 영역들에 저장된 다른 프로그램을 포함할 수 있다. PBR(464)는 포멧 정보, 예를 들어, 파일 시스템 메타데이터(465)를 포함할 수 있다. 포멧 정보, 예를 들어, 파일 시스템 메타데이터(465)는 다른 파라미터들 중에서, 메모리 크기, 페이지 크기, 블록 크기, 파일 시스템 형태, 미디어 형태, 메모리 셀 형태, 및 파일 시스템의 다수의 섹터들의 크기 및/또는 시작 어드레스들을 포함할 수 있다. 메타데이터(465)가 PBR(464)내에 있는 것으로 예시되지만, 실시예들은 이것으로 국한되지 않는다. 예를 들어, 메타데이터(465)는 시스템 데이터 영역(461)의 하나 이상의 다른 섹션들에 위치될 수 있다. 파일 시스템 메타데이터(465)는 메타데이터를 포함하는 파일 시스템의 형태의 식별을 허용할 수 있는 정보를 포함할 수 있다.
보존 영역(466)은 일반적으로 비어 있을 수 있다. 보존 영역(466)을 이용할 수 있는 일부 애플리케이션들은 다중-부트 로더들, 보안 애플리케이션들 등을 포함한다.
파일 할당표들(468 및 470)은 사용자 데이터 영역(462)의 각각의 어드레싱되는 부분으로 맵핑되는 엔트리들의 리스트를 포함할 수 있다. 이러한 어드레싱되는 부분들은 할당 단위들, 예를 들어, 클러스터들로서 칭해질 수 있다. 컴퓨팅 디바이스들을 위한 일부 운영 체제들은 하드 디스크 드라이브들 상의 저장 볼륨들과 함께 작동하도록 설계될 수 있기 때문에, 이러한 운영 체제들은 할당 단위들로서 클러스터들을 이용할 수 있고, 여기서 클러스터는 디스크 상의 다수의 순차적인 트랙 섹터들이다. 그러나 솔리드 스테이트 메모리 디바이스에 대한 할당 단위로서 클러스터를 이용하는 것은 클러스터의 일부들, 예를 들어, 다수의 섹터들이 연속적이라는 것을 요구하지 않는다. 파일 할당표들(468 및 470)은 데이터가 저장된 사용자 데이터 영역(462)의 일부들이 자유로운지, 가능하게는 사용 불가능한지, 및 메모리 유닛에서 데이터가 저장된 곳에 관한 정보를 포함할 수 있다. 다양한 실시예들에서, 예를 2개의 파일 할당표들은 하나가 다른 파일 할당표의 잠재적 장애에 대한 백업으로서 기능하도록 리던던트 정보(reduntant information)를 저장할 수 있으며, 예를 들면, 파일 할당표 2는 파일 할당표 1의 리던던트 사본일 수 있다.
루트 디렉토리(472)는 명칭, 형태, 생성 정보, 크기, 파일 및/또는 디렉토리의 제 1 부분의 어드레스, 및 기타 정보와 같은 파일 및/또는 디렉토리 정보를 포함할 수 있다. 도 4에서 예시된 바와 같은 전용 루트 디렉토리(472)는 일반적으로 FAT12 및 FAT16 파일 시스템들과 함께 사용된다. 다른 파일 시스템들, 예를 들어, FAT32는 사용자 데이터 영역(462)에 루트 디렉토리(472)와 연관된 정보를 저장할 수 있다.
도 4에 예시된 실시예에서, 사용자 데이터는 도 1에 도시된 호스트 시스템(102)과 같은 호스트 시스템으로부터 수신된 데이터일 수 있다. 사용자 데이터는 사용자 데이터 영역(462)에 기록되고 이로부터 다수회 판독 및 삭제될 수 있다. 하나 이상의 실시예들에서, 시스템 데이터 영역(461)의 말단(476) 및 사용자 데이터 영역(462)의 선두(476)는 논리적 어드레스들에 의해 서로 인접하게 될 수 있다. 예를 들어, 시스템 데이터 영역(461)의 말단의 논리적 어드레스는 0020이면, 사용자 데이터 영역의 시작 논리적 어드레스는 0021이다. 따라서 도 4에 예시되는 바와 같이 오프셋(474)은 사용자 데이터 영역(462) 내에 있을 수 있다. 오프셋(474)은 여기서 보다 상세히 기술된다.
데이터 저장을 위해 사용하기 이전에, 메모리 유닛은 메모리 유닛을 편제하고 추상층을 호스트에 제공하는 데이터 구조들이 설치되도록 포멧팅될 수 있다. 포멧팅에 의해 제공된 추상층은 메모리 유닛에 대한 일반적인 액세스 방법을 호스트에 제공하도록 상이한 용량 디바이스들, 상이한 미디어 형태들, 및 상이한 인터페이스 형태들을 허용한다. 메모리 유닛의 포멧팅은 파일 시스템 메타데이터(465)를 포함하는 PBR 데이터를 기록하는 것을 포함할 수 있으며, 여기서 PBR(464)은 시스템 데이터 및 사용자 데이터를 위해 메모리 유닛의 공간(space)을 할당할 수 있다.
메모리 제어기, 예를 들어, 도 1의 메모리 제어기(101)는 메모리 유닛 포멧팅 동작을 검출하고 메모리 유닛으로 포멧팅된 파일 시스템(460)과 연관된 메타데이터(465)를 검사한다. 그 후, 포멧팅 동작의 검출에 응답하여, 메모리 제어기는 파일 시스템 메타데이터(465)에 따라 메모리 유닛의 사용자 데이터 영역(462)의 시작 논리적 어드레스(476)를 결정할 수 있다. 제어기는 논리적 어드레스 오프셋(474)을 계산할 수 있는데, 이는 사용자 데이터 영역(462)의 시작 논리적 어드레스로 적용되는 것으로서, 메모리 셀의 하나 이상의 물리적 페이지의 선두, 예를 들어, 물리적 페이지 경계, 및 메모리 셀들의 하나 이상의 물리적 블록의 선두, 예를 들어, 물리적 블록 경계에 대응한다. 하나 이상의 실시예들에서, 논리적 어드레스 오프셋(474)은 시스템 데이터 영역(461)의 말단(476)과 메모리 셀들의 물리적 블록 및 메모리 셀들의 후속하는 하나 이상의 물리적 페이지의 선두(478) 사이의 논리적 어드레스들의 차이와 동등할 수 있다. 예를 들어, 시스템 데이터 영역(461)과 연관된 마지막 논리적 어드레스가 0030이고, 다음 블록의 선두와 연관된 논리적 어드레스가 0032인 경우, 논리적 어드레스 오프셋(474)은 0002이다. 계산된 논리적 어드레스 오프셋(474)은 후속 사용을 위해 제어기의 메모리, 예를 들어, 비-휘발성 메모리에 저장될 수 있다.
제어기는 논리적 어드레스 오프셋(474)을 사용자 데이터 영역(462)의 시작 어드레스 이상인 호스트 LBA에 적용할 수 있다. 하나 이상의 실시예들에서, 제어기는 논리적 어드레스 오프셋(474)을 사용자 데이터 영역(462)의 시작 어드레스들 이상인 모든 호스트 LBA들에 적용할 수 있다. 그러한 것으로서, 호스트가 사용자 데이터 영역(462) 내에서 액세스, 예를 들어, 기록, 판독, 또는 삭제를 시도하는 어드레스는 거기에 적용된 오프셋을 가질 수 있다. 호스트는 적용되는 오프셋의 지식을 갖지 않을 수 있고, 알맞게 동작할 수 있다. 그러나 제어기는 사용자 데이터 영역(462)의 유효한 선두(effective beginning)가 메모리 셀들의 물리적 블록 및 메모리 셀들의 하나 이상의 물리적 페이지들의 선두, 예를 들어, 페이지 및/또는 블록 경계로 오프셋되도록 사용자 데이터 논리적 어드레스에 오프셋을 적용할 수 있다. 호스트 LBA들로의 논리적 어드레스 오프셋(474)의 적용은 사용자 데이터 영역(462)에서 호스트에 의해 액세스되는 논리적 어드레스들에 오프셋(474)을 부가하는 것을 포함할 수 있다.
하나 이상의 실시예들에서, 제어기는 페이지 크기, 블록 크기, 및/또는 파일 시스템 메타데이터(465)를 사용하여 오프셋(474)을 계산할 수 있다. 제어기는 메모리 유닛의 편제의 지식, 특히 기록 또는 삭제 크기, 페이지 내의 섹터들의 수, 블록 내의 페이지들의 수, 메타데이터(465), 파일 시스템(460)의 섹션들의 위치, 및 파일 시스템(460) 형태의 지식을 이용하여 오프셋(474)을 계산할 수 있다. 오프셋(474)의 사용은 사용자 데이터(462) 섹션의 시작을 페이지 및/또는 블록 경계와 정렬시킬 수 있다. 하나 이상의 실시예들에서, 본 명세서에서 기술된 바와 같이, 오프셋들은 파일 시스템(460)의 다른 섹션들, 예를 들어, PBR(464), 보존 섹션(466), FAT1(468), FAT2(470), 루트 디렉토리(472) 등에 대해 계산될 수 있다. 그러한 것으로서, 파일 시스템(460)의 하나 이상의 섹션들의 선두는 페이지 및/또는 블록 경계와 정렬될 수 있다.
사용자 데이터 영역(462)은 "할당 단위들"로 양자화될 수 있는데, 여기서 다수의 논리적 블록들이 이른바 할당 단위로 불리는 단일의 할당 엔트리에 의해 할당 또는 표현된다. 할당 단위는 단일의 파일을 저장하기 위해 할당될 수 있는 최소량의 공간일 수 있다. 할당 단위는 하나 이상의 섹터들을 포함할 수 있다. 예를 들어, FAT 형태 파일 시스템들은 소용량 디바이스들을 위해 1:1 할당 단위 대 논리적 블록 맵핑으로 시작하여 할당 단위당 최대 64 섹터들 이상까지 할당 단위들을 2 멱들(powers)로 증가하는 512바이트 섹터들의 그룹들로 편성할 수 있다. 각 섹터는 고유한 LBA를 갖고 있으므로, 할당 단위들의 어드레싱은 모듈러스를 이용할 수 있다. 예를 들어, 할당 단위당 64 섹터들의 경우에, 호스트에 의한 액세스는 64의 모듈러스를 갖는 메모리에서 발생할 수 있다. 본 발명의 하나 이상의 실시예들에 따라, 논리적 어드레스 오프셋(474)은 사용자 데이터의 시작 어드레스, 예를 들어, 사용자 데이터(478)의 선두를 파일 시스템(460)의 할당 단위 경계와 정렬시키는데 이용될 수 있다. 하나 이상의 실시예들에서, 할당 단위 경계는 클러스터 경계일 수 있다.
메모리 시스템의 물리적 섹터는 논리적 섹터에 대응할 수 있고, 오류 보정 코드(ECC) 정보, 및 논리적 블록 어드레스(LBA) 정보와 같은 오버헤드 정보와, 사용자 데이터를 포함할 수 있다. 이 기술 분야의 숙련자는 이해할 것처럼, 논리적 블록 어드레싱은 정보의 논리적 섹터를 식별하기 위해 호스트에 의해 종종 사용되는 스킴이다. 예로서, 각 물리적 섹터는 다수의 데이터 바이트들, 예를 들어, 다른 바이트 수들 중에서 256바이트, 512바이트, 또는 1,024 바이트를 나타내는 정보를 저장할 수 있다. 그러나 본 발명의 실시예들은 논리적 섹터와 연관된 또는 물리적 섹터에 저장된 특정수의 데이터 바이트들로 국한되지 않는다.
본 발명의 하나 이상의 실시예들에 따라, 사용자 데이터 영역 내의 호스트 LBA들에 논리적 어드레스 오프셋을 적용하는 것은 일부 사례들에서 데이터의 기록 및/또는 삭제와 연관된 동작 오버헤드의 양을 감소시킬 수 있다. 기록에 대해서, 오버헤드는 기록 명령에 의해 어드레싱되는 메모리 셀들에 기록된 데이터 외에 복사 또는 이동되는 다수의 부가적인 메모리 셀들과 연관된 데이터를 지칭할 수 있다. 삭제에 대해, 오버헤드는 삭제되도록 의도되지 않은 데이터를 보유하기 위해 복사 또는 이동되는 다수의 메모리 셀들과 연관된 데이터를 지칭할 수 있다. 예를 들어, 몇몇의 이전의 접근들의 경우가 될 수 있는 것처럼, 시스템 데이터 영역(461)의 말단(476)이 사용자 데이터의 선두(478)와 일치하는 경우, 예를 들어, 논리적 오버헤드 오프셋이 사용되지 않는 경우, 시스템 데이터 및 사용자 데이터는 동일한 페이지 및/또는 블록에 기록될 수 있다. 이러한 블록에 대해, 블록에서 시스템 데이터 또는 사용자 데이터 둘 중 하나에 대한 삭제 동작은 시스템 및 사용자 데이터 둘 다를 삭제하는 것을 포함할 수 있다. 이러한 페이지에 대해, 시스템 또는 사용자 데이터 둘 중 하나에 대한 기록 동작은 기록되지 않는 시스템 또는 사용자 데이터를 이동 또는 복사하는 것을 포함할 수 있다. 본 발명의 하나 이상의 실시예들에 다른 오버헤드의 감소는 경계 부근의 시스템 데이터 또는 사용자 데이터 상에 수행되는 기록 및/또는 삭제 동작들이 타겟의 시스템 또는 사용자 데이터에만 영향을 미치도록 시스템 데이터와 사용자 데이터 사이의 페이지 및/또는 블록 경계 분리의 제공에 적어도 부분적으로 기초할 수 있다.
하나 이상의 실시예들에서, 논리적 어드레스 오프셋을 사용자 데이터 영역(462)을 액세스하는 호스트 LBA들에 적용하는 것은 메모리 유닛, 예를 들어, 도 1의 메모리 유닛(132)의 마모율(wear rate)을 제어하기 위해 구현될 수 있는 마모 레벨링(wear leveling)을 보완할 수 있다. 다양한 실시예들에서, 마모 레벨링은 블록을 재이용(reclaim)하기 위해 이동되는 유효 블록들의 양을 최소화하기 위한 동적 마모 레벨링을 포함할 수 있다. 동적 마모 레벨링은 다수의 무효한(invalid) 페이지들(즉, 다른 페이지에 재기록되는 및/또는 더 이상 해당 무효한 페이상에서 필요로 되지 않는 데이터를 갖는 페이지들)을 갖는 블록들이 블록들을 삭제함으로써 재이용되는 이른바 가비지 컬렉션(garbage collection)이라 칭하는 기술을 포함할 수 있다. 정적 마모 레벨링은 블록의 수명을 늘리기 위해 높은 삭제 카운트들을 갖는 블록들에 정적 데이터를 기록하는 것을 포함한다. 이 기술 분야의 숙련자가 이해할 수 있는 바와 같이, 마모 레벨링은 솔리드 스테이트 메모리 어레이가 다수의 프로그램 및/또는 삭제 사이클들 이후에 장애를 경험할 수 있으므로 솔리드 스테이트 메모리 어레이의 수명을 증가시킬 수 있다. 논리적 어드레스 오프셋을 사용자 데이터 영역(462)을 액세스하는 호스트 LBA들에 적용하는 것은 여기서 기술되는 바와 같이 오버헤드를 감소시키는데 도움을 줄 수 있고, 그럼으로서 시스템 데이터 영역(461)의 말단(476)과 사용자 데이터의 선두(478) 부근의 기록 및/또는 삭제 동작들의 총수를 감소시킨다.
하나 이상의 실시예들에서, 제어기는 메타데이터(465)를 검사하고, 사용자 데이터 영역(462)의 시작 논리적 어드레스를 결정하고, 및 포멧팅 동작 동안 및/또는 이에 응답하여, 및 임의의 사용자 데이터가 사용자 데이터 영역(462)에 기록되기 이전에 논리적 어드레스 오프셋(474)을 계산할 수 있다. 이러한 실시예들은 논리적 어드레스 오프셋(474)이 계산되기 이전에 사용자 데이터가 사용자 데이터 영역(462)에 기록되는 사례들에서 논리적 어드레스 오프셋(474)이 호스트 LBA들에 적용되는 것을 방지하는데 도움을 주는데 유용할 수 있다. 이런 사례들에서, 논리적 어드레스 오프셋(474)의 계산 및 이를 호스트 LBA들에 적용하는 것은 오프셋의 계산 이전에 기록된 사용자 데이터를 복구할 수 없는 무능력을 발생시킬 수 있다. 즉, 이전에 기록된 사용자 데이터를 액세스하고자 하는 호스트 LBA는 거기에 적용된 오프셋을 가질 수 있고, 이전에 기록된 사용자 데이터의 시작 논리적 어드레스와 상이한 시작 논리적 어드레스를 발생시킬 수 있다. 예를 들어, 이전에 기록된 사용자 데이터가 논리적 어드레스 0050에서 시작하고, 후속하여, 0008의 논리적 어드레스 오프셋이 계산된 경우, 호스트 시스템에 의해 0050에서 이전에 기록된 사용자 데이터를 액세스하고자 하는 미래의 시도들은 오프셋의 적용에 의해 논리적 어드레스(0058)에 대한 액세스들을 야기할 것이다.
이러한 상황들이 일어날 수 있는 상태의 예는 포멧 동작이 모니터링 또는 검출되지 않고 논리적 어드레스 오프셋이 파워 온(power on)시에 계산되는 경우의 메모리 유닛의 상황이다. 이러한 예에서, 디바이스는 새로운 포멧이 적용되는 동안 파워 온시에 계산된 논리적 어드레스 오프셋을 사용할 수 있다. 포멧 동작의 동적인 모니터링 및 검출 없이, 다음 전력 사이클에서, 디바이스는 새로운 논리적 어드레스 오프셋을 계산할 수 있고, 새롭게 계산된 오프셋이 포멧 동안 활성이던 논리적 어드레스 오프셋과 상이한 경우, 파일 시스템은 오류가 있을 수 있다.
본 발명의 하나 이상의 실시예들에 따라, 논리적 어드레스 오프셋들은 이러한 상황들을 방지하는데 도움을 주기 위해 포멧팅 동작의 검출에 후속하여 계산 및 적용된다. 마찬가지로, 본 발명의 하나 이상의 실시예들에 따라, 메모리 유닛은 포멧팅 동작의 검출 이전에 논리적 어드레스 오프셋(474)을 이용하지 않고 동작될 수 있다. 이러한 실시예들은 본 발명에 따른 제어기가 논리적 어드레스 오프셋을 이용하지 않고 이전에 포멧팅 및 제어되었던 메모리 유닛을 동작하는 사례들에서 특히 유용하다.
하나 이상의 실시예들에서, 메모리 제어기는 메모리 유닛과의 결합에 응답하여 메모리 유닛의 사용자 데이터 영역(462)에 사용자 데이터가 기록되었는지를 검출하도록 구성될 수 있다. 이러한 실시예들에서, 제어기는 사용자 데이터가 사용자 데이터 영역(462)에 이전에 기록되었음을 검출하는 것에 응답하여 디폴트(default) 논리적 어드레스 오프셋 및/또는 기존에 저장된 논리적 어드레스 오프셋(474)을 이용하여 메모리 유닛을 동작하도록 구성될 수 있다. 예를 들어, 디폴트 논리적 어드레스 오프셋은, 호스트 LBA들에 적용시에, 디폴트 논리적 어드레스 오프셋이 호스트 LBA들을 변경하지 않도록 0이 될 수 있다. 이러한 실시예들에서, 위에서 기술한 바와 같이 다른 이익들 중에서 데이터 액세스 오류들을 방지하는데 도움을 주므로 유익할 수 있다.
논리적 어드레스 오프셋(474)은 제어기의 메모리, 예를 들어, 비휘발성 메모리, 예를 들어, 도 2의 제어기(201)의 메모리(210)에 저장될 수 있다. 이에 따라, 동일한 논리적 어드레스 오프셋(474)은 후속 포멧팅 동작이 검출될 때까지 사용자 데이터 영역(462) 내에서 호스트에 의해 액세스되는 논리적 어드레스들에 적용될 수 있다. 여기서 기술되는 바와 같이, 이러한 실시예들은 데이터가 정확히 액세스될 수 있는 것을 보장하도록 돕는데 유익할 수 있다. 예를 들어, 논리적 어드레스 오프셋(474)이 사용자 데이터 영역(462) 내의 호스트 LBA들을 위해 사용되는 경우, 동일한 오프셋은 메모리 유닛의 동작 전반에 걸쳐 파일 시스템(460)을 위해 사용될 수 있다. 상이한 오프셋이 메모리 유닛의 저장 볼륨을 재포멧팅하지 않고 사용되었던 경우, 호스트 시스템이 오프셋을 알지 못할 수 있으므로 데이터 액세스 오류들이 발생할 수 있다.
하나 이상의 실시예들에서, 시스템 데이터 영역(461)의 다수의 섹션들, 예를 들어, PBR(464), 보존 영역(466), FAT1(468), FAT2(470), 및/또는 루트 디렉토리(472)가 물리적 페이지 및/또는 물리적 블록 경계와 정렬될 수 있다. 따라서 도 4에서 예시되지 않았지만, 시스템 데이터 영역(461)의 다수의 섹션들에 대한 다수의 부가적인 논리적 어드레스 오프셋들은 파일 시스템(460) 메타데이터(465)를 이용하여 포멧팅 동작을 검출한 이후 제어기에 의해 계산될 수 있다. 여기서 사용되는 "부가적인(additional)" 논리적 어드레스 오프셋은 사용자 데이터 영역(462)에 대한 논리적 어드레스 오프셋(474) 이외의 논리적 어드레스 오프셋이다. 제어기에 의해 계산되는 부가적인 논리적 어드레스 오프셋은 사용자 데이터 영역(462)에 대한 논리적 어드레스 오프셋(474)의 경우에서와 같이 제어기의 메모리, 예를 들어, 비휘발성 메모리에 저장될 수 있다. 즉, 하나 이상의 실시예들에서, 제어기 메모리는 하나를 초과한 논리적 어드레스 오프셋을 저장할 수 있다. 제어기는 시스템 데이터 영역(461)의 다수의 섹터들의 시작 어드레스를 결정할 수 있다. 시스템 데이터 영역(461)의 특정 섹션에 대한 부가적인 논리적 어드레스 오프셋은 특정 섹션과 연관되는 데이터가 물리적 페이지 및/또는 물리적 블록 경계에서 시작하도록 특정 섹션을 액세스하는 호스트 LBA에 적용될 수 있다. 예를 들어, FAT1(468)에 대한 논리적 어드레스 오프셋은 제어기에 의해 FAT1(468) 내의 호스트 LBA에 적용될 수 있다.
하나 이상의 실시예들에서, 제어기(101)와 같은 제어기 내의 제어 회로는 예를 들어, 데이터가 특정 방식으로 메모리 유닛에 기록되도록 메모리 유닛에 명령들을 통신할 수 있다. 제어기 내의 제어 회로로부터의 명령들은 호스트 LBA로의 적용 오프셋을 계산함으로써 특정 명령과 연관되는 데이터에 대한 페이지의 선두에서 데이터를 기록하도록 구성될 수 있다. 또한, 하나 이상의 실시예들에서, 제어기 내의 제어 회로로부터의 명령들은 호스트 LBA들로의 적용 오프셋을 계산함으로써 삭제된 블록에 데이터를 기록할 때 물리적 블록의 제 1 페이지, 예를 들어, 물리적 블록 경계에 데이터를 기록하도록 구성될 수 있다. 하나 이상의 실시예들에서, 제어기로부터의 명령들은 메모리 어레이의 페이지의 제 1 메모리 셀, 예를 들어, 페이지 경계에 데이터를 기록할 수 있고, 및/또는 호스트 LBA들로의 적용 오프셋을 계산함으로써 비어있는, 예를 들어, 삭제된 페이지의 선두에 데이터를 기록할 수 있다. 이러한 실시예들은 호스트 LBA들이 물리적 페이지 및/또는 물리적 블록의 선두에서 시작하도록 오프셋될 것이기 때문에 데이터 삭제 및 재기록의 사례들을 감소시킬 수 있고, 이는 몇몇의 이전의 접근들에서 일어날 수 있는 것처럼, 선행 물리적 페이지 및/또는 물리적 블록에서 섹터들을 이동 및/또는 복제할 필요가 없다.
하나 이상의 실시예들에서, 다수의 블록들은 메모리 어레이에 데이터를 기록하는 것과 연관된 기록 증폭(write amplification)의 양을 감소시키도록 스페어 블록들(spare blocks)로서 지정될 수 있다. 스페어 블록은 호스트 논리적 어드레스들로 맵핑될 수 없고, 그러므로, 호스트 시스템에 의해 액세스될 수 없다. 제어기는 상이한 블록들을 삭제하기 이전에 데이터, 예를 들어, 상이한 블록들로부터 업데이트된 데이터를 스페어 블록에 기록할 수 있다. 상이한 블록이 삭제될 때, 새로운 스페어 블록이 될 수 있다. 예를 들어, 디바이스가 100,000 LBA들을 갖는 경우, 100,000 LBA들보다 적게 호스트에 보고할 수 있고 내부 사용, 예를 들어, 제어기에 의해 내부 사용을 위해 그 차이를 이용한다. 기록 증폭은 데이터를 솔리드 스테이트 메모리 어레이들에 데이터를 기록할 때 발생하는 프로세스이다. 메모리 어레이에 데이터를 무작위로 기록할 때, 메모리 어레이는 어레이 내의 자유 공간을 스캔한다. 메모리 어레이 내의 자유 공간은 프로그래밍되지 않는 메모리 셀들 개별적인 셀들, 페이지들, 및/또는 블록들일 수 있다. 데이터를 기록하기에 충분한 자유 공간이 존재하는 경우, 데이터는 메모리 어레이내의 자유 공간에 기록된다. 일 위치에서 자유 공간이 충분히 존재하지 않는 경우, 메모리 어레이 내의 데이터는 삭제, 이동, 및 메모리 어레이에 이미 존재하는 데이터를 새로운 위치로 재기록함으로써 재배치되어 메모리 어레이에 기록될 새로운 데이터를 위한 자유 공간을 확보한다. 메모리 어레이내의 구 데이터의 재배치는, 메모리 어레이들이 새로운 데이터를 기록하기 위해 해야 하는 기록의 양이 메모리 어레이내의 자유 공간의 양 및 메모리 어레이 상에 기록될 새로운 데이터의 크기에 기초하여 증폭되기 때문에 이른바 기록 증폭이라 칭해질 수 있다. 기록 증폭은 자유 공간(즉, 정적 데이터가 기록되지 않을 곳)으로서 지정되는 메모리 어레이 상의 공간의 양을 증가시킴으로써 감소될 수 있고, 따라서 더 적은 데이터가 재배치될 것이므로 기록되어야 하는 데이터의 양의 더 적은 증폭을 허용한다.
하나 이상의 실시예들에서, 호스트 LBA들로의 오프셋을 계산 및 적용하는 것은 기록 증폭의 양을 감소시키고 기록 증폭을 원하는 레벨들로 제어하는데 필요한 지정된 자유 공간의 양을 또한 감소시키기 위해 이용될 수 있다. 호스트 LBA로의 오프셋의 적용은 메모리 어레이가 물리적 블록 및 페이지들의 경계들에서 시작하는 효율적인 방식으로 데이터를 채우게 할 수 있고, 그러므로 포멧팅된 메모리 어레이의 데이터 스트링은 물리적 블록 및/또는 페이지의 중간에서 시작하지 않을 것이고, 이에 따라 데이터 스트링이 새로운 데이터를 위해 메모리 어레이내의 공간을 자유롭게 하도록 다른 위치로 재기록될 기회를 감소시킨다.
하나 이상의 실시예들에서, 메모리 유닛에 기록되는 시스템 데이터 및 사용자 데이터는 메모리 유닛의 물리적 구조와 정렬될 수 있다. 즉, 데이터는 삭제된 블록에 기록될 때 물리적 블록의 선두에서 기록되고, 데이터는 삭제된 페이지에 기록될 때 물리적 블록의 선두에서 기록된다. 또한, 일부 실시예들에서, 데이터는 부분적으로 기록된 페이지에 기록되지 않을 것이고 데이터는 다음 이용 가능한 삭제된 페이지에 기록될 것이다.
결론
본 발명은 논리적 어드레스 오프셋을 위한 방법들, 디바이스들, 및 시스템들을 포함한다. 일 방법 실시예는 메모리 유닛 포멧팅 동작을 검출하는 것을 포함한다. 그 후 포멧팅 동작의 검출에 응답하여, 방법은 메모리 유닛 상에서 포멧 정보를 검사하고, 논리적 어드레스 오프셋을 계산하고, 이 오프셋을 호스트 논리적 어드레스에 적용하는 것을 포함한다.
엘리먼트가 다른 엘리먼트 "상에(on)", "에 연결된" 또는 "와 결합된" 것으로 지칭될 때, 다른 엘리먼트 바로 상에, 에 연결 또는 와 결합될 수 있고 또는 개재 엘리먼트들(intervening elements)이 존재할 수 있다. 대조적으로, 엘리먼트가 다른 엘리먼트 "바로 상에" 또는 "에 직접 결합된" 것으로 지칭될 때, 어떠한 개재 엘리먼트 또는 층들도 존재하지 않는다. 여기서 사용된 바와 같이, 용어 "및/또는"는 하나 이상의 연관된 나열 항목들의 임의의 및 모든 조합들을 포함한다. 여기서 사용된 바와 같이, 용어 "또는"는 달리 언급이 없는 한 논리적으로 포괄적인 오아(or)를 의미한다. 즉, "A 또는 B"은 (A만), (B만), 또는 (A 및 B 둘 다)을 포함할 수 있다. 즉, "A 또는 B"은 (A 및/또는 B) 또는 (A 및 B 중 하나 이상)을 의미할 수 있다.
용어 제 1, 제 2 등은 다양한 엘리먼트들을 기술하기 위해 여기서 사용되었지만, 이 엘리먼트들은 이 용어들로 국한되지 않아야 한다는 것을 이해할 것이다. 이 용어들은 단지 하나의 엘리먼트를 다른 엘리먼트로부터 구분하기 위해 사용된다. 따라서 제 1 엘리먼트는 본 발명의 교시로부터 벗어남 없이 제 2 엘리먼트로 불릴 수 있다.
특정 실시예들이 여기서 예시 및 기술되었지만, 이 기술 분야의 숙련자라면 동일한 경과들을 달성하도록 계산된 장치가 도시된 특정 실시예들을 대체할 수 있다는 것을 이해할 것이다. 본 발명은 본 발명의 하나 이상의 실시예들의 개조물들 또는 변동물들을 포함하도록 의도한다. 위의 설명은 예시적인 방식으로 기술되었으며 제한적인 것은 아니란 것을 이해한다. 위의 실시예들 및 여기서 구체적으로 기술되지 않은 다른 실시예들의 조합은 위의 설명을 복습하면 이 기술 분야의 숙련자에게 명백해질 것이다. 본 발명의 하나 이상의 실시예들의 범위는 위의 구조들 및 방법들이 사용되는 다른 응용들을 포함한다. 그러므로 본 발명의 하나 이상의 실시예들의 범위는 첨부된 청구범위와 이러한 청구범위의 자격을 갖춘 등가물들 전체 영역을 참조하여 결정되어야 한다.
앞선 상세한 설명에서, 일부 특징들은 본 발명을 능률적으로 하기 위해 하나의 실시예들에 함께 그룹핑되었다. 본 발명의 이러한 방법은 본 발명의 개시된 실시예들이 각 청구항에서 명시적으로 기재된 것보다 많은 특징을 이용해야 한다는 의미를 반영하는 것으로 해석되어선 안 된다. 오히려, 이하의 청구범위는 반영하는 것처럼, 신규성 있는 주제는 단일의 개시된 실시예의 모든 특징들보다 적은 특징들에 달려있다. 따라서 이하의 청구범위는 상세한 설명내로 통합되고, 각 청구항은 개별의 실시예들로서 그 자신을 주장한다.
Claims (40)
- 메모리 유닛을 동작하는 방법으로서,
메모리 유닛 포멧팅 동작(memory unit formatting operation)을 검출하는 단계; 및
상기 포멧팅 동작의 검출에 응답하여,
상기 메모리 유닛 상에서 포멧 정보를 검사하는 단계;
논리적 어드레스 오프셋을 계산하는 단계; 및
상기 오프셋을 호스트 논리적 어드레스에 적용하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 1 항에 있어서,
상기 방법은 상기 포멧 정보에 따라 상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스(starting logical address)를 결정하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 2 항에 있어서,
상기 방법은 상기 오프셋을 상기 사용자 데이터 영역의 시작 어드레스 이상인 호스트 논리적 어드레스(host logical address)에 적용하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 3 항에 있어서,
상기 오프셋을 상기 호스트 논리적 어드레스에 적용하는 단계는 상기 오프셋을 상기 논리적 어드레스에 부가하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 3 항에 있어서,
상기 방법은 후속 메모리 유닛 포멧팅 동작이 검출될 때까지 동일한 오프셋을 이용하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 2 항에 있어서,
상기 방법은 상기 오프셋을 상기 사용자 데이터 영역의 시작 어드레스 이상인 모든 호스트 논리적 어드레스들에 적용하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 1 항에 있어서,
상기 오프셋을 상기 호스트 논리적 어드레스에 적용하는 단계는 상기 오프셋을 사용자 데이터 영역의 시작 논리적 어드레스에 적용하는 단계를 포함하고,
오프셋 시작 논리적 어드레스(offset starting logical address)는 메모리 셀들의 물리적 페이지의 선두 또는 메모리 셀들의 물리적 블록의 선두에 대응하는, 메모리 유닛 동작 방법. - 제 1 항에 있어서,
상기 방법은 포멧 정보를 검사하고, 사용자 데이터를 상기 메모리 유닛의 사용자 데이터 영역에 기록하기 이전에 상기 오프셋을 계산 및 적용하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 1 항에 있어서,
상기 방법은 상기 메모리 유닛의 제어기에 의해 수행되는, 메모리 유닛 동작 방법. - 제 9 항에 있어서,
상기 방법은 상기 제어기의 비-휘발성 메모리에 상기 오프셋을 저장하는 단계를 포함하는, 메모리 유닛 동작 방법. - 메모리 유닛을 동작하는 방법으로서,
메모리 유닛 포멧팅 동작을 검출하는 단계; 및
상기 포멧팅 동작의 검출에 응답하여,
상기 메모리 유닛 상에서 포멧 정보를 검사하는 단계;
상기 포멧 정보에 따라 상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스를 결정하는 단계;
논리적 어드레스 오프셋을 계산-상기 오프셋은 메모리 셀들의 후속 물리적 페이지의 선두 또는 메모리 셀들의 후속 물리적 블록의 선두와 상기 시스템 데이터 영역의 말단(end)사이의 논리적 어드레스들의 차이와 동등함-하는 단계; 및
상기 오프셋을 상기 사용자 데이터 영역내의 호스트 논리적 어드레스들에 적용하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 11 항에 있어서,
상기 방법은,
상기 오프셋을 상기 사용자 데이터 영역의 시작 논리적 어드레스에 적용하는 단계; 및
상기 사용자 데이터 영역의 오프셋 시작 논리적 어드레스들을 상기 파일 시스템의 할당 단위 경계와 정렬시키는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 12 항에 있어서,
상기 파일 시스템의 상기 할당 단위 경계는 클러스터 경계를 포함하는, 메모리 유닛 동작 방법. - 제 11 항에 있어서,
상기 방법은,
상기 포멧 정보에 따라 상기 메모리 유닛의 시스템 데이터 영역의 시작 어드레스를 결정하는 단계; 및
상기 시스템 데이터 영역 내에 있는 호스트 논리적 어드레스들에 적용될 제 2 오프셋을 계산하는 단계를 포함하고,
상기 시스템 데이터 영역의 시작 어드레스에 적용되는 것으로서 상기 제 2 오프셋은 메모리 셀들의 물리적 페이지의 선두 또는 메모리 셀들의 물리적 블록의 선두에 대응하는, 메모리 유닛 동작 방법. - 제 14 항에 있어서,
시스템 데이터 영역은 파일 할당표 및 루트 디렉토리를 포함하는 시스템 데이터 영역들의 그룹으로부터 선택되는, 메모리 유닛 동작 방법. - 제 11 항에 있어서,
상기 방법은 호스트에 의한 상기 사용자 데이터 영역에 대한 액세스를 검출하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 16 항에 있어서,
상기 사용자 데이터 영역에 대한 액세스를 검출하는 단계는 상기 사용자 데이터 영역에 대한 논리적 어드레스 범위를 하나 이상의 호스트 논리적 어드레스들과 비교하는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 11 항에 있어서,
상기 방법은 상기 메모리 유닛 포멧팅 동작을 검출하기 이전에 상기 메모리 유닛을 디폴트(default) 논리적 어드레스 오프셋으로 동작시키는 단계를 포함하는, 메모리 유닛 동작 방법. - 제 18 항에 있어서,
상기 디폴트 논리적 어드레스 오프셋은 0인, 메모리 유닛 동작 방법. - 메모리 제어기로서,
호스트 인터페이스;
메모리 유닛 인터페이스; 및
제어 회로를 포함하고, 상기 제어 회로는,
메모리 유닛 포멧팅 동작을 검출하고; 및
상기 포멧팅 동작의 검출에 응답하여,
상기 메모리 유닛 상에서 포멧 정보를 검사하고;
논리적 어드레스 오프셋을 계산하고;
상기 오프셋을 호스트 논리적 어드레스들에 적용하도록 구성되는, 메모리 제어기. - 제 20 항에 있어서,
상기 제어 회로는 상기 포멧 정보에 따라 상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스를 결정하도록 구성되는, 메모리 제어기. - 제 20 항에 있어서,
상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스에 적용되는 것으로서 상기 오프셋은 메모리 셀들의 물리적 페이지의 선두 또는 메모리 셀들의 물리적 블록의 선두에 대응하는, 메모리 제어기. - 제 20 항에 있어서,
호스트 논리적 어드레스가 사용자 데이터 영역 내에 있는지를 결정하기 위해 상기 호스트 논리적 어드레스를 상기 메모리 유닛의 사용자 데이터 영역에 대응하는 논리적 어드레스들의 범위와 비교하도록 구성된 다수의 논리적 어드레스 범위 비교기들을 포함하는, 메모리 제어기. - 제 20 항에 있어서,
상기 오프셋을 저장하도록 구성된 비-휘발성 메모리를 포함하는, 메모리 제어기. - 제 24 항에 있어서,
상기 비-휘발성 메모리 및 상기 메모리 유닛 인터페이스에 결합된 부가기를 포함하고,
상기 부가기는 상기 오프셋을 상기 메모리 유닛 인터페이스를 거쳐 송신되는 호스트 논리적 어드레스 이전의 호스트 논리적 어드레스에 부가하도록 구성되는, 메모리 제어기. - 메모리 제어기로서,
호스트 인터페이스;
메모리 유닛 인터페이스; 및
제어 회로를 포함하고, 상기 제어 회로는,
메모리 유닛 포멧팅 동작을 검출하고, 그 후 상기 포멧팅 동작의 검출에 응답하여,
상기 메모리 유닛 상에서 포멧 정보를 검사하고;
상기 포멧 정보에 따라 상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스를 결정하고;
논리적 어드레스 오프셋을 계산-상기 오프셋은 메모리 셀들의 후속 물리적 페이지의 선두 또는 메모리 셀들의 후속 물리적 블록의 선두와 상기 시스템 데이터 영역의 말단 사이의 논리적 어드레스들의 차이와 동등함-하고; 및
상기 오프셋을 상기 사용자 데이터 영역내의 호스트 논리적 어드레스들에 적용하도록 구성되는, 메모리 제어기. - 제 26 항에 있어서,
상기 제어기는 메모리를 포함하고, 상기 제어 회로는 제어기 메모리에 상기 오프셋을 저장하도록 구성되는, 메모리 제어기. - 제 27 항에 있어서,
상기 제어 회로는 상기 제어 회로가 후속 포멧팅 동작을 검출할 때까지 상기 오프셋을 저장하도록 구성되는, 메모리 제어기. - 제 26 항에 이어서,
상기 제어 회로는 상기 사용자 데이터 영역이 물리적 블록 경계에서 시작하도록 상기 오프셋을 상기 사용자 데이터 영역의 선두에 대응하는 호스트 논리적 어드레스에 적용하도록 구성되는, 메모리 제어기. - 메모리 시스템으로서,
호스트 인터페이스 커넥터;
메모리 유닛; 및
상기 호스트 인터페이스 커넥터 및 상기 메모리 유닛에 결합된 메모리 제어기를 포함하고, 상기 메모리 제어기는,
메모리 유닛 포멧팅 동작을 검출하고, 그 후 상기 포멧팅 동작의 검출에 응답하여,
상기 메모리 유닛 상에서 포멧 정보를 검사하고;
논리적 어드레스 오프셋을 계산하고; 및
상기 오프셋을 호스트 논리적 어드레스에 적용하도록 구성되는, 메모리 시스템. - 제 30 항에 있어서,
상기 메모리 제어기는 상기 포멧 정보에 따라 상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스를 결정하도록 구성되고; 및
상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스에 적용되는 것으로서 상기 오프셋은 메모리 셀들의 물리적 페이지의 선두 또는 메모리 셀들의 물리적 블록의 선두에 대응하는, 메모리 시스템. - 제 30 항에 있어서,
상기 메모리 제어기는 상기 메모리 유닛의 시스템 데이터 영역으로부터 상기 포멧 정보를 검사하도록 구성되는, 메모리 시스템. - 제 30 항에 있어서,
상기 메모리 유닛은 다수의 플래시 메모리 어레이들을 포함하고; 및
상기 호스트 인터페이스 커넥터, 상기 메모리 유닛, 및 상기 메모리 제어기는 이산 모듈(discrete module)의 부분인, 메모리 시스템. - 제 30 항에 있어서,
상기 메모리 시스템은 솔리드 스테이트 드라이브(solid state drive)를 포함하는, 메모리 시스템. - 제 30 항에 있어서,
상기 메모리 제어기는 상기 메모리 제어기가 메모리 유닛 포멧팅 정보를 검출하기 이전에 디폴트 논리적 어드레스 오프셋으로 상기 메모리 유닛을 동작하도록 구성되는, 메모리 시스템. - 메모리 시스템으로서,
호스트 인터페이스 커넥터;
메모리 유닛; 및
상기 호스트 인터페이스 커넥터 및 상기 메모리 유닛에 결합된 메모리 제어기를 포함하고, 상기 메모리 제어기는,
메모리 유닛 포멧팅 동작을 검출하고, 그 후 상기 포멧팅 동작의 검출에 응답하여,
상기 메모리 유닛 상에서 포멧 정보를 검사하고;
상기 포멧 정보에 따라 상기 메모리 유닛의 사용자 데이터 영역의 시작 논리적 어드레스를 결정하고;
논리적 어드레스 오프셋을 계산-상기 오프셋은 메모리 셀들의 후속 물리적 페이지의 선두 또는 메모리 셀들의 후속 물리적 블록의 선두와 상기 시스템 데이터 영역의 말단 사이의 논리적 어드레스들의 차이와 동등함-하고; 및
상기 오프셋을 상기 사용자 데이터 영역내의 호스트 논리적 어드레스들에 적용하도록 구성되는, 메모리 시스템. - 제 36 항에 있어서,
상기 메모리 제어기는 상기 메모리 유닛의 시스템 데이터 영역의 파티션 부트 레코드(partition boot record)로부터 상기 포멧 정보를 검사하도록 구성되는, 메모리 시스템. - 제 36 항에 있어서,
상기 제어기는 상기 사용자 데이터 영역이 물리적 블록 경계에서 시작하도록 상기 오프셋을 상기 사용자 데이터 영역의 선두에 대응하는 호스트 논리적 어드레스에 적용하도록 구성되는, 메모리 시스템. - 제 38 항에 있어서,
상기 사용자 데이터 영역의 상기 선두는 상기 파일 시스템의 할당 단위 경계와 정렬되는, 메모리 시스템. - 제 39 항에 있어서,
상기 파일 시스템의 상기 할당 단위 경계는 클러스터 경계(cluster boundary)를 포함하는, 메모리 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/356,765 | 2009-01-21 | ||
US12/356,765 US8180995B2 (en) | 2009-01-21 | 2009-01-21 | Logical address offset in response to detecting a memory formatting operation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147000924A Division KR101528714B1 (ko) | 2009-01-21 | 2010-01-15 | 메모리 유닛 동작 방법 및 메모리 제어기 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20110107856A true KR20110107856A (ko) | 2011-10-04 |
Family
ID=42337870
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117019228A KR20110107856A (ko) | 2009-01-21 | 2010-01-15 | 논리적 어드레스 오프셋 |
KR1020147000924A KR101528714B1 (ko) | 2009-01-21 | 2010-01-15 | 메모리 유닛 동작 방법 및 메모리 제어기 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147000924A KR101528714B1 (ko) | 2009-01-21 | 2010-01-15 | 메모리 유닛 동작 방법 및 메모리 제어기 |
Country Status (7)
Country | Link |
---|---|
US (3) | US8180995B2 (ko) |
EP (1) | EP2382547B1 (ko) |
JP (1) | JP2012515954A (ko) |
KR (2) | KR20110107856A (ko) |
CN (2) | CN107273058B (ko) |
TW (1) | TWI432960B (ko) |
WO (1) | WO2010090696A2 (ko) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101637481B1 (ko) * | 2009-04-10 | 2016-07-07 | 삼성전자주식회사 | 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브 장착 장치 및 컴퓨팅 시스템 |
US8612718B2 (en) * | 2009-08-19 | 2013-12-17 | Seagate Technology Llc | Mapping alignment |
US8578126B1 (en) * | 2009-10-29 | 2013-11-05 | Netapp, Inc. | Mapping of logical start addresses to physical start addresses in a system having misalignment between logical and physical data blocks |
US8677203B1 (en) * | 2010-01-11 | 2014-03-18 | Apple Inc. | Redundant data storage schemes for multi-die memory systems |
CN101963891A (zh) * | 2010-09-25 | 2011-02-02 | 成都市华为赛门铁克科技有限公司 | 数据存储处理方法与装置、固态硬盘***与数据处理*** |
US8732431B2 (en) | 2011-03-06 | 2014-05-20 | Micron Technology, Inc. | Logical address translation |
TWI451250B (zh) * | 2011-03-28 | 2014-09-01 | Phison Electronics Corp | 記憶體組態方法、記憶體控制器與記憶體儲存裝置 |
EP2715510B1 (en) | 2011-05-24 | 2018-05-02 | Marvell World Trade Ltd. | Method for storage devices to achieve low write amplification with low over provision |
CN102831072B (zh) * | 2012-08-10 | 2016-03-02 | 深圳市江波龙电子有限公司 | 闪存设备及其管理方法、数据读写方法及读写装置 |
US9030903B2 (en) * | 2012-09-24 | 2015-05-12 | Intel Corporation | Method, apparatus and system for providing a memory refresh |
US9336090B2 (en) * | 2012-10-10 | 2016-05-10 | Hitachi, Ltd. | Storage apparatus comprising snapshot function, and storage control method |
US9430376B2 (en) * | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
JP2014142748A (ja) * | 2013-01-23 | 2014-08-07 | Sony Corp | 記憶装置およびその制御方法 |
CN104956348B (zh) * | 2013-04-02 | 2018-04-20 | 慧与发展有限责任合伙企业 | Sata发起方寻址和存储设备分片 |
JP5996497B2 (ja) * | 2013-08-22 | 2016-09-21 | 株式会社東芝 | ストレージ装置 |
US9846698B1 (en) | 2013-12-16 | 2017-12-19 | Emc Corporation | Maintaining point-in-time granularity for backup snapshots |
US9720618B1 (en) | 2013-12-16 | 2017-08-01 | EMC IP Holding Company LLC | Maintaining backup snapshots using continuous replication from multiple sources |
US10157014B1 (en) | 2013-12-16 | 2018-12-18 | EMC IP Holding Company LLC | Maintaining backup snapshots on deduplicated storage using continuous replication |
US10031690B1 (en) | 2013-12-16 | 2018-07-24 | EMC IP Holding Company LLC | Initializing backup snapshots on deduplicated storage |
US10255137B1 (en) | 2013-12-16 | 2019-04-09 | EMC IP Holding Company LLC | Point-in-time recovery on deduplicated storage |
US9875162B1 (en) | 2013-12-16 | 2018-01-23 | Emc Corporation | Recovering corrupt storage systems |
US9852066B2 (en) * | 2013-12-20 | 2017-12-26 | Sandisk Technologies Llc | Systems and methods of address-aware garbage collection |
US9977737B2 (en) * | 2013-12-25 | 2018-05-22 | Cavium, Inc. | Method and an apparatus for memory address allignment |
US9772789B1 (en) | 2014-03-25 | 2017-09-26 | EMC IP Holding Company LLC | Alignment fixing on a data protection system during continuous data replication to deduplicated storage |
US10229056B1 (en) * | 2014-03-25 | 2019-03-12 | EMC IP Holding Company LLC | Alignment fixing on a storage system during continuous data replication to deduplicated storage |
US9588847B1 (en) | 2014-03-25 | 2017-03-07 | EMC IP Holding Company LLC | Recovering corrupt virtual machine disks |
US9389800B1 (en) | 2014-03-27 | 2016-07-12 | Emc Corporation | Synthesizing virtual machine disk backups |
US20170075816A1 (en) * | 2014-04-24 | 2017-03-16 | Hitachi, Ltd. | Storage system |
JP6318073B2 (ja) * | 2014-10-23 | 2018-04-25 | アルパイン株式会社 | 電子機器 |
US10338817B2 (en) * | 2014-12-30 | 2019-07-02 | Sandisk Technologies Llc | Systems and methods for storage recovery |
TWI560608B (en) * | 2016-01-22 | 2016-12-01 | Qisda Corp | Disk access method |
WO2017131798A1 (en) * | 2016-01-29 | 2017-08-03 | Hewlett Packard Enterprise Development Lp | Storing data in a storage device |
GB2547893B (en) * | 2016-02-25 | 2018-06-06 | Advanced Risc Mach Ltd | Combining part of an offset with a corresponding part of a base address and comparing with a reference address |
TWI637264B (zh) * | 2016-05-20 | 2018-10-01 | 慧榮科技股份有限公司 | 資料儲存裝置之資料頁對齊方法及其查找表的製作方法 |
US10390114B2 (en) * | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a data center |
CN108334276B (zh) * | 2017-01-20 | 2021-01-29 | 宇瞻科技股份有限公司 | 快闪记忆体的动态对齐数据方法 |
TWI612421B (zh) * | 2017-01-20 | 2018-01-21 | 宇瞻科技股份有限公司 | 快閃記憶體的動態對齊資料方法 |
WO2018211493A1 (en) * | 2017-05-18 | 2018-11-22 | Kaminario Technologies Ltd. | Garbage collection in a distributed storage system |
US10810116B2 (en) * | 2017-06-29 | 2020-10-20 | Sap Se | In-memory database with page size adaptation during loading |
US11113205B2 (en) * | 2017-07-31 | 2021-09-07 | Micron Technology, Inc. | Die addressing using a reduced size translation table entry |
CN107678980B (zh) * | 2017-10-19 | 2021-04-16 | 歌尔科技有限公司 | 数据存储方法、装置及可穿戴设备 |
US10860474B2 (en) * | 2017-12-14 | 2020-12-08 | Micron Technology, Inc. | Multilevel addressing |
KR102563760B1 (ko) * | 2018-02-22 | 2023-08-07 | 에스케이하이닉스 주식회사 | 인터페이스 유닛 및 그것의 동작방법 |
TWI669610B (zh) | 2018-06-13 | 2019-08-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
KR20200122685A (ko) * | 2019-04-18 | 2020-10-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 내에서 서로 다른 종류의 데이터를 처리하기 위한 장치 및 방법 |
WO2021069943A1 (en) * | 2019-10-09 | 2021-04-15 | Micron Technology, Inc. | Self-adaptive wear leveling method and algorithm |
CN115803719A (zh) | 2020-07-17 | 2023-03-14 | 美光科技公司 | 视频数据和文件***元数据的存储 |
TWI806262B (zh) * | 2021-11-29 | 2023-06-21 | 慧榮科技股份有限公司 | 橋接裝置與資料儲存系統 |
TWI806276B (zh) * | 2021-12-08 | 2023-06-21 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存系統 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US6728851B1 (en) * | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US5930815A (en) | 1995-07-31 | 1999-07-27 | Lexar Media, Inc. | Moving sequential sectors within a block of information in a flash memory mass storage architecture |
US5907856A (en) | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US6125435A (en) | 1995-09-13 | 2000-09-26 | Lexar Media, Inc. | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory |
JPH1069420A (ja) * | 1996-08-29 | 1998-03-10 | Sony Corp | 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法 |
US6389503B1 (en) * | 1997-08-04 | 2002-05-14 | Exabyte Corporation | Tape drive emulation by removable disk drive and media formatted therefor |
JP3588231B2 (ja) * | 1997-08-04 | 2004-11-10 | 東京エレクトロンデバイス株式会社 | データ処理システム及びブロック消去型記憶媒体 |
GB9814960D0 (en) * | 1998-07-10 | 1998-09-09 | Koninkl Philips Electronics Nv | Coding device and communication system using the same |
JP4173642B2 (ja) * | 1999-02-22 | 2008-10-29 | 株式会社ルネサステクノロジ | メモリカードのデータ書き込み方法 |
US6535995B1 (en) * | 1999-03-10 | 2003-03-18 | International Business Machines Corporation | Prototype-based virtual in-line sparing |
US6141249A (en) | 1999-04-01 | 2000-10-31 | Lexar Media, Inc. | Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time |
US6405295B1 (en) * | 1999-09-07 | 2002-06-11 | Oki Electric Industry, Co., Ltd. | Data storage apparatus for efficient utilization of limited cycle memory material |
JP3942807B2 (ja) | 2000-06-06 | 2007-07-11 | 株式会社ルネサステクノロジ | ブロックアラインメント機能付き半導体記憶装置 |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
JP4238514B2 (ja) * | 2002-04-15 | 2009-03-18 | ソニー株式会社 | データ記憶装置 |
US8289984B2 (en) | 2003-01-13 | 2012-10-16 | Emlilex Design & Manufacturing Corporation | Allocation-unit-based virtual formatting methods and devices employing allocation-unit-based virtual formatting methods |
US20050041453A1 (en) | 2003-08-22 | 2005-02-24 | Brazis Paul W. | Method and apparatus for reading and writing to solid-state memory |
JP4130808B2 (ja) * | 2004-01-30 | 2008-08-06 | 松下電器産業株式会社 | フォーマット方法 |
JP4177292B2 (ja) * | 2004-05-31 | 2008-11-05 | Tdk株式会社 | メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
WO2005124530A2 (en) * | 2004-06-21 | 2005-12-29 | Kabushiki Kaisha Toshiba | Method for controlling memory card and method for controlling nonvolatile semiconductor memory |
JP4177301B2 (ja) * | 2004-07-29 | 2008-11-05 | Tdk株式会社 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
US7836247B2 (en) * | 2004-12-17 | 2010-11-16 | International Business Machines Corporation | Method, apparatus, and computer program product for permitting access to a storage drive while the drive is being formatted |
US7461197B2 (en) * | 2005-12-19 | 2008-12-02 | Broadcom Corporation | Disk formatter and methods for use therewith |
US20070143566A1 (en) | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with data alignment in a directly mapped file storage system |
JP2008123473A (ja) * | 2006-10-20 | 2008-05-29 | Toshiba Corp | 記憶装置及びその制御方法 |
US8046522B2 (en) * | 2006-12-26 | 2011-10-25 | SanDisk Technologies, Inc. | Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks |
EP2097825B1 (en) | 2006-12-26 | 2013-09-04 | SanDisk Technologies Inc. | Use of a direct data file system with a continuous logical address space interface |
JP4991320B2 (ja) * | 2007-01-12 | 2012-08-01 | 株式会社東芝 | ホスト装置およびメモリシステム |
TW200841762A (en) | 2007-04-14 | 2008-10-16 | kun-di Huang | Wireless headphone of a digital music walkman |
KR101270777B1 (ko) | 2007-06-20 | 2013-05-31 | 삼성전자주식회사 | 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록시스템 및 방법 |
KR100982700B1 (ko) * | 2008-04-22 | 2010-09-17 | 웅진코웨이주식회사 | 두 개의 물받이를 구비하는 얼음 정수기 |
WO2010030996A1 (en) * | 2008-09-15 | 2010-03-18 | Virsto Software | Storage management system for virtual machines |
-
2009
- 2009-01-21 US US12/356,765 patent/US8180995B2/en active Active
-
2010
- 2010-01-15 KR KR1020117019228A patent/KR20110107856A/ko active Application Filing
- 2010-01-15 KR KR1020147000924A patent/KR101528714B1/ko active IP Right Grant
- 2010-01-15 JP JP2011546262A patent/JP2012515954A/ja active Pending
- 2010-01-15 CN CN201710540513.5A patent/CN107273058B/zh active Active
- 2010-01-15 WO PCT/US2010/000095 patent/WO2010090696A2/en active Application Filing
- 2010-01-15 EP EP10738832.4A patent/EP2382547B1/en active Active
- 2010-01-15 CN CN2010800051605A patent/CN102292712A/zh active Pending
- 2010-01-18 TW TW099101251A patent/TWI432960B/zh active
-
2012
- 2012-04-30 US US13/459,923 patent/US8683173B2/en active Active
-
2014
- 2014-02-20 US US14/184,876 patent/US8930671B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8180995B2 (en) | 2012-05-15 |
EP2382547B1 (en) | 2018-10-10 |
WO2010090696A2 (en) | 2010-08-12 |
EP2382547A2 (en) | 2011-11-02 |
US20120215972A1 (en) | 2012-08-23 |
KR20140016430A (ko) | 2014-02-07 |
KR101528714B1 (ko) | 2015-06-15 |
US20140229660A1 (en) | 2014-08-14 |
US8930671B2 (en) | 2015-01-06 |
US20100185830A1 (en) | 2010-07-22 |
CN107273058A (zh) | 2017-10-20 |
TW201040720A (en) | 2010-11-16 |
TWI432960B (zh) | 2014-04-01 |
WO2010090696A3 (en) | 2010-10-21 |
US8683173B2 (en) | 2014-03-25 |
CN107273058B (zh) | 2019-06-18 |
JP2012515954A (ja) | 2012-07-12 |
CN102292712A (zh) | 2011-12-21 |
EP2382547A4 (en) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101528714B1 (ko) | 메모리 유닛 동작 방법 및 메모리 제어기 | |
US10564690B2 (en) | Power interrupt management | |
KR101759811B1 (ko) | 솔리드 스테이트 메모리를 포멧팅하기 위한 메모리 제어기, 방법, 및 솔리드 스테이트 메모리 시스템 | |
KR101491943B1 (ko) | 트랜잭션 로그 복구 | |
CN114730300B (zh) | 对区命名空间存储器的增强型文件***支持 | |
US20110072188A1 (en) | Memory system including non-volatile storage media, computing system including memory system and method of operating memory system | |
KR20170125178A (ko) | Raid 스토리지 장치 및 그것의 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
A107 | Divisional application of patent | ||
J201 | Request for trial against refusal decision | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20140113 Effective date: 20141031 |