KR101394845B1 - 비휘발성 메모리 상태 정보를 획득하여 이용하기 위한 시스템들 및 방법들 - Google Patents
비휘발성 메모리 상태 정보를 획득하여 이용하기 위한 시스템들 및 방법들 Download PDFInfo
- Publication number
- KR101394845B1 KR101394845B1 KR1020120109551A KR20120109551A KR101394845B1 KR 101394845 B1 KR101394845 B1 KR 101394845B1 KR 1020120109551 A KR1020120109551 A KR 1020120109551A KR 20120109551 A KR20120109551 A KR 20120109551A KR 101394845 B1 KR101394845 B1 KR 101394845B1
- Authority
- KR
- South Korea
- Prior art keywords
- nvm
- state information
- addressing
- memory
- command
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3485—Performance evaluation by tracing or monitoring for I/O devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
비휘발성 메모리(NVM) 상태 정보를 획득 및 이용하기 위한 시스템들 및 방법들이 제공된다. 상태 정보는 NVM의 한 부분에서 검출된 에러들의 수 또는 비휘발성 메모리의 한 부분을 판독 또는 프로그래밍하는데 필요한 시간량과 같은 NVM 디바이스의 부분들의 성능 및 신뢰성과 연관된 다양한 정보를 포함할 수 있다. 동작 동안에, 어드레스 지정 상태 정보는 호스트 디바이스 상에 수동적으로 저장될 수 있으며 커맨드의 일부로서 메모리 컨트롤러에게 제공될 수 있다. 메모리 컨트롤러는 커맨드로부터 상태 정보를 추출할 수 있으며 이 정보를 이용하여 액세스 요청들을 실행할 수 있다. 액세스 요청이 완료된 후, 메모리 컨트롤러는 상태 정보를 업데이트할 수 있으며 이 정보를 호스트 디바이스에게 되전송할 수 있다.
Description
본 발명은 비휘발성 메모리 상태 정보를 획득하여 이용하기 위한 시스템 및 방법에 관한 것이다.
대용량 저장을 위해 플래시 메모리(예를 들면, NAND 플래시 메모리 및 NOR 플래시 메모리) 같은 다양한 유형의 비휘발성 메모리(NVM)가 사용될 수 있다. 예를 들면, 소비자 전자장치(예를 들면, 휴대용 미디어 플레이어)는 플래시 메모리를 이용하여 음악, 비디오, 이미지, 및 다른 미디어 또는 유형의 정보를 포함하는 데이터를 저장한다.
몇몇의 플래시 메모리 시스템에서, 호스트 시스템은, 플래시 메모리의 물리 블록에 매핑되거나 그러한 블록으로 변환되는 논리 블록 어드레스(logical block address; LBA)에 대한 판독 및 프로그램 연산을 요청한다. 이러한 매핑은 호스트 연산 시스템이 플래시 메모리를 디스크 드라이브와 유사한 방식으로 액세스하도록 할 수 있다. 플래시 메모리가 랜덤 액세스 방식으로 한번에 한 바이트 또는 워드로 판독되거나 프로그래밍될 수 있지만, 일반적으로 한번에 한 블록으로 소거된다. 최근에 소거된 블록으로 시작하면, 그 블록 내의 임의의 바이트가 프로그래밍될 수 있다. 일단, 한 바이트가 프로그래밍되었다면, 이 바이트는 전체 블록이 소거될 때까지 다시 프로그래밍될 수 없다. 플래시 메모리가 유한 수의 소거-프로그램 사이클을 갖기 때문에, 플래시 메모리의 수명을 연장하기 위해 소거-프로그램 사이클의 수를 최소화하는 것이 바람직하다.
전술한 플래시 메모리의 고유 특성에 기인하여, 플래시 메모리 및 다른 NVM들의 상태 정보를 효과적으로 획득하여 사용할 수 있는 시스템, 방법 및 디바이스가 필요하다.
비휘발성 메모리(NVM) 상태 정보를 획득하여 이용하기 위한 시스템 및 방법이 개시된다. 본 발명의 실시예는 호스트 및 비휘발성 메모리 패키지를 갖는 시스템에서 동작할 수 있다. 호스트는 휘발성 메모리를 포함할 수 있고, 논리 대 물리적 매핑을 유지, NVM 패키지에 대한 프로그램, 판독 또는 소거 커맨드를 발행, 및 마모도 평준화(wear leveling) 및 불요 정보 정리(garbage collection) 동작을 수행하는 등의 비휘발성 메모리 기능을 실행할 수 있다. 호스트는 또한 본 발명의 실시예에 따라 상태 데이터베이스를 유지할 수 있다. NVM 패키지는 호스트에 교환가능하게 연결되어 있고 메모리 컨트롤러 및 비휘발성 메모리(예를 들면, 낸드 플래시)를 포함할 수 있다. 몇몇 실시예에서, NVM 패키지는 또한 에러 정정 코드 엔진을 포함할 수 있다.
상태 데이터베이스는 NVM에 연관된 정보를 저장할 수 있다. 즉, NVM 내의 각각의 물리적 로케이션(예를 들면, 페이지 또는 블록)에 대해, 그러한 물리적 로케이션에 지정된 고유한 상태 정보가 데이터베이스에 저장된다. 데이터베이스에 저장된 상태 정보는 그러한 지정 어드레스 위치에서 NVM을 액세스하는데 사용되는 다양한 소프트웨어 및/또는 하드웨어 파라미터를 지정하는 어드레스 지정 상태 정보일 수 있다. 상태 정보는, 예를 들면, 페이지 정확성, 임계치 전압, 판독, 프로그램, 또는 소거에 요구되는 시간 및/또는 사이클의 수, 사용되는 에러 정정 코드 등을 포함할 수 있다. 상태 정보는 메모리 컨트롤러에 의해 생성될 수 있지만 호스트에 의해 유지되는 데이터베이스에 저장된다. 상태 정보가 호스트 상에 저장될 수 있지만, 호스트는 NVM을 관리하는 방식으로 상태 정보를 해석, 수정 또는 사용하지 않는다.
호스트가 NVM을 액세스하기를 원하는 경우, 액세스 커맨드(예를 들면, 판독 또는 프로그램 커맨드), 어드레스 및 어드레스 지정 상태 정보를 포함하는 커맨드 패킷을 어셈블링할 수 있고, 그러한 커맨드 패킷을 메모리 컨트롤러에 제공할 수 있다. 호스트는 상태 정보 데이터베이스를 액세스하여, 커맨드 패킷에 포함하기 위해 어드레스에 기초하여 어드레스 지정 상태 정보를 검색한다. 메모리 컨트롤러가 커맨드 패킷을 수신하는 경우, 메모리 컨트롤러는 상태 정보를 추출하고, NVM에서 액세스되는 물리적 로케이션에 지정된 소프트웨어 및/또는 하드웨어 파라미터에 따라 액세스 요청을 실행할 수 있다.
커맨드가 실행된 후, 메모리 컨트롤러는 액세스 요청을 실행시키기 위해 동작 파라미터들 중 하나 이상에 변경이 요구되는지를 결정할 수 있다. 변경이 요구되었다면, 메모리 컨트롤러는 상태 정보를 업데이트할 수 있고, 그 업데이트된 상태 정보 및 NVM 어드레스를 호스트 디바이스로 전송할 수 있다. 다음에, 호스트는 업데이트된 상태 정보를 데이터베이스에 저장할 수 있다.
본 발명의 상기 및 다른 양상, 특성, 및 다양한 특징은 첨부 도면을 참조하여 다음의 상세한 설명을 고려할 때 자명해질 것이고, 도면에서 유사한 참조 부호는 도면 전체에 걸쳐 유사한 부분을 지칭한다.
도 1은 본 발명의 다양한 실시예에 따라 메모리 컨트롤러와 함께 호스트 및 NVM 패키지를 포함하는 예시적인 시스템을 도시하는 도면.
도 2는 본 발명의 다양한 실시예에 따른 예시적인 시스템.
도 3은 본 발명의 다양한 실시예에 따른 예시적인 데이터 구조.
도 4는 본 발명의 몇몇 실시예에 따라 상태 정보를 획득하여 사용하는 예시적인 프로세스를 도시하는 플로우 차트.
도 1은 본 발명의 다양한 실시예에 따라 메모리 컨트롤러와 함께 호스트 및 NVM 패키지를 포함하는 예시적인 시스템을 도시하는 도면.
도 2는 본 발명의 다양한 실시예에 따른 예시적인 시스템.
도 3은 본 발명의 다양한 실시예에 따른 예시적인 데이터 구조.
도 4는 본 발명의 몇몇 실시예에 따라 상태 정보를 획득하여 사용하는 예시적인 프로세스를 도시하는 플로우 차트.
도 1은 NVM 패키지(104) 및 호스트(102)를 포함하는 시스템(100)을 도시하는 도면이다. 호스트(102)는 상태 정보를 NVM 패키지(104)에 제공하도록 구성되어 있으며, NVM 패키지(104)는 메모리 컨트롤러(106), 호스트 인터페이스(110), 및 대응하는 NVM(128a-n)을 갖는 메모리 다이(112a-n)을 포함할 수 있다. 예를 들면, 예시적인 시스템(100)에 도시된 바와 같이, 호스트(102)는 상태 정보를 NVM 패키지(104)에 제공할 수 있고, NVM 패키지(104)는 상태 정보를 이용하여 액세스 요청(예를 들면, 판독, 프로그램 및 소거 동작) 및 시스템(100)의 성능, 신뢰성 및/또는 전력 사용을 향상시킬 수 있는 메모리 관리 기능(예를 들면, 마모도 평준화 및 불요 정보 정리)을 수행할 수 있다. NVM 패키지(104)는 또한 상태 정보를 업데이트하고, 상태 정보 데이터베이스에의 저장을 위해 이것을 다시 호스트(102)로 전송할 수 있다.
호스트(102)는 휴대가능 미디어 플레이어, 셀룰러 전화, 포켓 크기의 개인용 컴퓨터, 개인 휴대정보 단말기(PDA), 데스크톱 컴퓨터, 랩톱 컴퓨터, 및/또는 태블릿 컴퓨팅 디바이스 같은 다양한 호스트 디바이스 및/또는 시스템 중 임의의 것일 수 있다. NVM 패키지(104)는 (예를 들면, 메모리 다이(112a-n) 내에) NVM(128a-n)을 포함할 수 있고, 볼 그리드 어레이 패키지 또는 다른 적절한 유형의 집적 회로(IC) 패키지일 수 있다. NVM 패키지(104)는 호스트(102)의 일부이거나 및/또는 그와 분리될 수 있다. 예를 들면, 호스트(102)는 보드-레벨(board-level) 디바이스일 수 있고, NVM 패키지(104)는 상기 보드-레벨 디바이스 상에 설치되는 메모리 서브시스템일 수 있다. 다른 실시예에서, NVM 패키지(104)는 유선인터페이스(예를 들면, SATA) 또는 무선 인터페이스(예를 들면, Bluetooth™)를 이용하여 호스트(102)에 연결될 수 있다.
호스트(102)는 NVM 패키지(104)와 상호작용하도록 구성되는 호스트 컨트롤러(114)를 포함할 수 있다. 예를 들면, 호스트(102)는 판독, 프로그램, 및 소거 동작들과 같은 다양한 액세스 요청을 NVM 패키지(104)에 전송할 수 있다. 호스트 컨트롤러(114)는 소프트웨어 및/또는 펌웨어 명령어들의 실행에 기초하여 동작들을 수행하도록 구성되는 하나 이상의 프로세서 및/또는 마이크로프로세서를 포함할 수 있다. 부가적으로 및/또는 대안으로, 호스트 컨트롤러(114)는 다양한 동작을 수행하도록 구성되는 ASIC(application-specific integrated circuit)들과 같은 하드웨어 기반 컴포넌트들을 포함할 수 있다. 호스트 컨트롤러(114)는 호스트(102)와 NVM 패키지(104) 간에 공유되는 통신 프로토콜에 따라 NVM 패키지(104)로 전송되는 정보(예를 들면, 커맨드, 데이터)를 포맷팅할 수 있다.
호스트(102)는 휘발성 메모리(108)를 포함하는 저장 컴포넌트(134)를 포함할 수 있다. 휘발성 메모리(108)는 캐시 메모리 또는 RAM과 같은 다양한 휘발성 메모리 유형 중 임의의 것일 수 있다. 호스트(102)는 휘발성 메모리(108)를 이용하여, 메모리 동작을 수행하고 및/또는 NVM 패키지(104)로부터 판독되거나 및/또는 NVM 패키지(104)로 기록되는 데이터를 일시적으로 저장한다. 예를 들면, 휘발성 메모리(108)는 NVM 패키지(104)로 전송될 메모리 동작의 큐(queue)를 일시적으로 저장하거나, 또는 NVM 패키지(104)로부터 수신된 데이터를 저장할 수 있다. 부가하여, 휘발성 메모리(108)는 본 발명의 실시예에 따라 상태 정보 데이터베이스를 저장할 수 있다. 호스트 컨트롤러(114)는 발행된 커맨드를 메모리 컨트롤러(106)에 포함시키기 위해 상태 정보 데이터베이스를 액세스하여 어드레스 지정 상태 정보를 검색할 수 있다. NVM 패키지(104)에서 충분한 양의 휘발성 메모리를 유지하는 것은 너무 비용이 많이 들기 때문에, NVM 패키지(104)의 휘발성 메모리에서와는 반대로, 호스트(102)의 휘발성 메모리에 상태 정보 데이터베이스를 유지하는 것이 일반적으로 필요하다.
호스트(102)는 호스트 인터페이스(110) 및 메모리 컨트롤러(106)를 이용하여 통신 채널(116)을 통해 NVM 패키지(104)와 통신할 수 있다. 통신 채널(116)은 양방향 통신하는데 적절한 임의의 버스일 수 있다. 통신 채널(116)은 고정되거나, 탈착가능하거나, 또는 무선일 수 있다. 통신 채널(116)은, 예를 들면, USB(universal serial bus), SATA(serial advanced technology) 버스, 또는 임의의 적절한 다른 버스일 수 있다.
메모리 컨트롤러(106)는 소프트웨어 및/또는 펌웨어 명령어들의 실행에 기초하여 동작들을 수행하도록 구성되는 하나 이상의 프로세서 및/또는 마이크로프로세서(120)를 포함할 수 있다. 부가적으로 및/또는 대안으로, 메모리 컨트롤러(106)는 다양한 동작을 수행하도록 구성되는, ASIC과 같은 하드웨어 기반 컴포넌트를 포함할 수 있다. 메모리 컨트롤러(106)는 호스트(102)에 의해 발행된 커맨드들을 실행하는 등의 다양한 동작을 수행할 수 있다.
호스트 컨트롤러(114) 및 메모리 컨트롤러(106)는 혼자 또는 조합하여, 불요 정보 정리 및 마모도 평준화와 같은 다양한 메모리 관리 기능을 수행할 수 있다. 메모리 컨트롤러(106)가 적어도 몇 개의 메모리 관리 기능을 수행하도록 구성되는 구현예에서, NVM 패키지(104)는 "관리되는 NVM"(또는 NAND 플래시 메모리에 대해서는 "관리되는 NAND")로 명명될 수 있다. 이것은, NVM 패키지(104) 외부의 호스트 컨트롤러(114)가 NVM 패키지(104)에 대한 메모리 관리 기능을 수행하는 "로우(raw) NVM"(또는 NAND 플래시 메모리에 대해서는 "로우 NAND")에 대비될 수 있다.
몇몇 실시예에서, 메모리 컨트롤러(106)는 메모리 다이(112a-n)와 동일한 패키지에 통합될 수 있다. 다른 실시예에서, 메모리 컨트롤러(106)는 개별 패키지에 또는 호스트(102)와 동일한 패키지에 물리적으로 로케이팅될 수 있다. 몇몇 실시예에서, 메모리 컨트롤러(106)는 생략될 수 있고, 메모리 컨트롤러(106)에 의해 일반적으로 수행되는 모든 메모리 관리 기능(예를 들면, 불요 정보 정리 및 마모도 평준화)은 호스트 컨트롤러[예를 들면, 호스트 컨트롤러(114)]에 의해 수행될 수 있다.
메모리 컨트롤러(106)는 휘발성 메모리(122)를 포함할 수 있다. 휘발성 메모리(122)는 캐시 메모리 또는 RAM과 같은 임의의 다양한 휘발성 메모리 타입이 될 수 있다. 메모리 컨트롤러(106)는 액세스 요청을 수행하고 및/또는 메모리 다이들(112a-n)내의 NVM(128a-n)들로부터 판독 및/또는 이들에 기입되는 데이터를 임시로 저장하기 위해 휘발성 메모리(122)를 이용할 수 있다. 예컨대, 휘발성 메모리(122)는 펌웨어를 저장할 수 있고, 메모리 컨트롤러(106)는 NVM 패키지(104)상에서의 동작들(예컨대, 판독/프로그램 동작들)을 수행하기 위해 펌웨어를 이용할 수 있다. 휘발성 메모리(122)는 또한 NVM과 연관된 상태 정보를 NVM 패키지(104)내에 임시 저장할 수 있다. 메모리 컨트롤러(106)는 디버그 로그들, 명령어들, 및 NVM 패키지(104)가 동작을 위해 이용하는 펌웨어와 같은 다양한 정보를 지속적으로 저장하기 위해 NVM(128a-n)을 이용할 수 있다.
메모리 컨트롤러(106)는 NVM(128a-n)들에 액세스하기 위해 공유 내부 버스(126)를 이용할 수 있고, 이것은 지속적인 데이터 저장을 위해 이용될 수 있다. 단지 하나의 공유 내부 버스(126)가 NVM 패키지(104)내에 도시되었지만, NVM 패키지는 둘 이상의 공유 내부 버스를 포함할 수 있다. 각각의 내부 버스는 메모리 다이들(112a-n)과 관련하여 도시된 복수(예컨대, 2, 3, 4, 8, 32 등)의 메모리 다이들에 연결될 수 있다. 메모리 다이들(112a-n)은 적층 구성을 포함하는 다양한 구성들로 물리적으로 배치될 수 있고, 몇몇 실시예에 따르면 집적 회로("IC") 다이들이 될 수 있다.
NVM(128a-n)는 플로팅 게이트 또는 전하 트랩핑 기술에 기초하는 NAND 플래시 메모리, NOR 플래시 메모리, "EPROM"(erasable programmable read only memory), "EEPROM"(electrically erasable programmable read only memory), "FRAM"(ferroelectric RAM), "MRAM"(magnetoresistive RAM), "PCM"(phase change memory), 또는 이들의 조합과 같은 임의의 다양한 NVM 이 될 수 있다.
도 2는 다양한 실시예들에 따라 시스템(100)(도 1)의 펌웨어, 소프트웨어, 및/또는 하드웨어 컴포넌트들의 몇몇을 더 상세히 도시하는, 전자 디바이스(200)의 블록도를 도시한다. 전자 디바이스(200)는 도 1과 관련하여 전술한 바와 같은 임의의 특징 및 기능들을 가질 수 있고, 또한, 그 반대도 마찬가지다. 도시된 바와 같이, 점선은 층들의 경계를 정한다. 어느 컴포넌트가 경계선내에 들어가는지에 대한 도시는 단지 설명적인 것이며, 하나 이상의 컴포넌트들이 상이한 층에 연계될 수 있다.
전자 디바이스(200)는 파일 시스템(210), 호스트 컨트롤러(212), NVM 버스 컨트롤러(216), 메모리 컨트롤러(220), 및 NVM(230)을 포함할 수 있다. 몇몇 실시예에서, 파일 시스템(210) 및 호스트 컨트롤러(212)는 소프트웨어 또는 펌웨어 모듈이 될 수 있고, NVM 버스 컨트롤러(216), 메모리 컨트롤러(220), 및 NVM(230)은 하드웨어 모듈이 될 수 있다. 따라서, 이들 실시예들에서, 호스트 컨트롤러(212)는 NVM 인터페이스(218)의 소프트웨어 또는 펌웨어 양태를 나타낼 수 있고, NVM 버스 컨트롤러(216)는 NVM 인터페이스(218)의 하드웨어 양태를 나타낼 수 있다.
파일 시스템(210)은 "FAT"(File Allocation Table) 파일 시스템, 또는 "HFS+"(Hierarchical File System Plus)와 같은 임의의 적절한 타입의 파일 시스템을 포함할 수 있고, 전자 디바이스(200)의 운영 시스템의 일부(예컨대, 도 1의 SoC 제어 회로(112)의 일부)가 될 수 있다. 몇몇 실시예에서, 파일 시스템(210)은 페이지들의 논리 대 물리적 매핑을 제공하는, 플래시 파일 시스템을 포함할 수 있다. 이들 실시예에서, 파일 시스템(210)은 이하 개시되는 호스트 컨트롤러(212)의 몇몇 또는 모든 기능들을 수행할 수 있고, 이에 따라 파일 시스템(210) 및 호스트 컨트롤러(212)는 별개의 모듈이 되거나 또는 되지 않을 수 있다.
파일 시스템(210)은 애플리케이션 및 운영 시스템에 대한 파일 및 폴더 구조들을 관리할 수 있다. 파일 시스템(210)은 전자 디바이스(200) 상에서 동작하는 애플리케이션 또는 운영 시스템의 제어하에 동작할 수 있고, 애플리케이션 또는 운영 시스템이 정보가 NVM(230)으로부터 판독되거나 NVM(230)에 저장되어야 한다는 요청을 하는 경우 기입 및 판독 커맨드를 호스트 컨트롤러(212)에 제공할 수 있다. 각각의 판독 및 기입 커맨드와 함께, 파일 시스템(210)은 사용자 데이터가 어디서 판독되고 기입되어야 하는지를 나타내기 위해 논리 페이지 어드레스 또는 페이지 오프셋을 갖는 LBA와 같은 논리 어드레스를 제공할 수 있다.
파일 시스템(210)은 판독 및 기입 요청을 NVM(230)과 직접적으로 호환되지 않는 호스트 컨트롤러(212)에 제공할 수 있다. 예컨대, 논리 어드레스들은 하드-드라이브-기반 시스템을 대표하는 규약 또는 프로토콜들을 이용할 수 있다. 플래시 메모리와 달리, 하드-드라이브-기반 시스템은 먼저 블록 소거를 수행하지 않고, 메모리 로케이션에 중복 기입할 수 있다. 또한, 하드 드라이브들은 디바이스의 수명을 증가시키기 위해 마모도 평준화를 필요로 하지 않을 수 있다. 따라서, NVM 인터페이스(218)는, 파일 시스템 요청들을 핸들링하고, 또한 NVM(230)에 적절한 방식으로 다른 관리 기능들을 수행하기 위해 메모리-지정, 벤더-지정, 또는 이들 양자 모두인 임의의 기능들을 수행할 수 있다.
호스트 컨트롤러(212)는 트랜슬레이션 레이어(214)를 포함할 수 있다. 몇몇 실시예에서, 트랜슬레이션 레이어(214)는 "FTL"(flash translation layer)이 될 수 있거나 또는 이를 포함할 수 있다. 기입 커맨드시에, 트랜슬레이션 레이어(214)는 제공된 논리 어드레스를 NVM(230)상의 프리, 소거된 물리적 로케이션으로 매핑할 수 있다. 판독 커맨드시에, 트랜슬레이션 레이어(214)는 요청된 데이터가 저장되는 물리 어드레스를 결정하기 위해 제공된 논리 어드레스를 이용할 수 있다. 각각의 NVM이 NVM의 크기 또는 벤더에 기초하는 상이한 레이아웃을 가질 수 있기 때문에, 이러한 매핑 동작은 메모리 및/또는 벤더-지정이 될 수 있다. 트랜슬레이션 레이어(214)는 논리 대 물리 어드레스 매핑에 부가하여 임의의 다른 적절한 기능들을 수행할 수 있다. 예컨대, 트랜슬레이션 레이어(214)는, 불요 정보 정리("GC") 및 마모도 평준화와 같은 플래시 트랜슬레이션 레이어들에 전형적일 수 있는 임의의 다른 기능들을 수행할 수 있다.
예컨대, 트랜슬레이션 레이어(214)는 소거를 위해 NVM(230)의 프로그램된 블록을 비우기(free-up) 위해 불요 정보 정리를 수행할 수 있다. 일단 비워지고 소거되면, 메모리 로케이션들은 예컨대, 파일 시스템(210)으로부터 수신된 새로운 사용자 데이터를 저장하는데 이용될 수 있다. 몇몇 경우에, GC 프로세스는 프로그램된 블록으로부터의 유효 데이터를 소거된 메모리 로케이션들을 갖는 다른 블록으로 복사하는 것을 포함할 수 있으며, 이에 따라 프로그램된 블록내의 유효 데이터를 무효화한다. 일단 프로그램된 블록내의 모든 메모리 로케이션들이 무효화되었으면, 트랜슬레이션 레이어(214)는 NVM 버스 컨트롤러(216)에게 프로그램된 블록상에서 소거 동작을 수행하도록 지시할 수 있다. 여기서 이용되는 바와 같은, "유효 데이터"는 하나 이상의 논리 어드레스들(예컨대, LBA들)에 대응하는 가장 최근의 기입 요청에 응답하여 프로그램된 사용자 데이터를 지칭할 수 있고, 이에 따라 하나 이상의 논리 어드레스들에 대한 사용자 데이터의 유효 버전이 될 수 있다.
호스트 컨트롤러(212)는 어드레스 지정 상태 정보를 저장하기 위한 상태 데이터베이스(215)를 포함할 수 있다. 상태 데이터베이스(215)는 NVM(230)내의 물리적 로케이션들에 대응하는 정보의 룩업 테이블을 포함할 수 있다. 파일 시스템(210)이 커맨드 및 논리 어드레스를 호스트 컨트롤러(212)로 송신하는 경우, 트랜슬레이션 레이어(214)는 NVM(230)내의 물리적 로케이션을 결정하고, 호스트 컨트롤러(212)는 이 물리적 로케이션을 이용하여 상태 데이터 베이스(215)로부터 어드레스 지정 상태 정보를 획득한다. 몇몇 실시예에서, 호스트 컨트롤러(212)는 상태 데이터베이스(215)로부터 메모리 컨트롤러(220)에 제공될 수 있는 커맨드 패킷으로 획득되는 상태 정보를 포함한다. 이 실시예에서, 호스트 컨트롤러(212)는 데이터 검색 에이전트로 작용하고, 임의의 NVM 관리 결정을 하기 위해 상태 정보를 이용하지는 않는다. 호스트 컨트롤러(212)는 또한 상태 데이터베이스(215)를 메모리 컨트롤러(220)로부터 수신된 상태 정보로 업데이팅함으로써 데이터 파퓰레이팅 에이전트로서 작용할 수 있다.
메모리 컨트롤러(220)는 상태 데이터베이스(215)에 저장되는 상태 정보를 생성한다. 결과적으로, 단지 메모리 컨트롤러(220)만이 상태 정보를 해석하고 이용할 수 있다. 호스트 컨트롤러(212)가 상태 정보를 데이터베이스(215)내에 저장할 수 있을지라도, NVM 관리 결정을 하는데 이용할 수는 없다.
상태 데이터베이스내에 저장된 정보(도 1의 휘발성 메모리(108)내에 상주할 수 있음)는 NVM 인터페이스(218) 또는 호스트 인터페이스(110)의 소프트웨어 및/또는 하드웨어 컴포넌트 다운스트림이 NVM(230)의 임의의 지정 물리적 로케이션에 대한 커맨드 요청을 더 효율적으로 처리할 수 있도록 하는 정보가 될 수 있다. 예컨대, 상태 정보는, 어느 에러 정정 코드가 예컨대, NVM 패키지(104)에 상주하는 ECC 엔진에 의해 구현되어야 하는지를 지정할 수 있다. 다른 예로서, 상태 정보는, 프로그램 전압, 프로그램/검증 사이클의 수, NVM 내의 지정 물리적 로케이션에 대해 요구되는 프로그램 해상도와 같은 메모리 컨트롤러 하드웨어 세팅들을 저장할 수 있다.
상태 정보는 NVM의 부분의 열화 및/또는 오류의 가능성을 나타내는 임의의 데이터를 포함할 수 있다. 일반적으로, 상태 정보는 그 자신의 효율적이고 신뢰할만한 이용에 대한 결정을 하는데 이용될 수 있는 NVM에 관한 임의의 데이터를 포함할 수 있다. 중요한 성능 및 캘리브레이션 파라미터들을 저장함으로써, 메모리 컨트롤러(106 및 220)는 불필요한 레이턴시 및 데이터 손상을 피하기 위해 커맨드 요청을 실행하는 방식을 변경할 수 있다.
하나의 특정 예에서, 상태 정보는 호스트에 의해 개시되는 판독 동작을 선-보상(pre-compensate)하는데 이용될 수 있다. 호스트는 NVM의 지정 부분(예컨대, 블록)에 대한 판독 동작을 개시할 수 있다. 메모리 컨트롤러는 판독 동작을 수신할 수 있고, NVM의 물리 어드레스(예컨대, 블록 또는 페이지)와 연관된 상태 정보를 검사할 수 있다. 상태 정보는 블록이 판독되었던 최종 시간 및 판독 동작이 하나의 판독 사이클보다 많이 요구된다는 것을 나타낼 수 있다. 예컨대, 판독 동작은 8개의 판독 사이클을 취했을 수도 있고, 여기서 각각의 판독 사이클은 점차적으로 변경된 판독 조건(예컨대, 점차적으로 시프트된 임계 전압값)을 이용한다. 상태 정보에 기초하여, 메모리 컨트롤러는 물리적 로케이션상에서의 요청된 판독 동작을 수행하기 위해 최종의 공지된 성공적인 판독 조건(들)을 이용하는 것을 결정할 수 있다. 판독 동작이 성공적이면, 메모리 컨트롤러는 물리적 로케이션(예컨대, 블록)에 관한 상태 정보를 호스트로 변경없이 다시 반환할 수 있다. 그러나, 판독 동작이 부가적인 판독 사이클에 요구되면, 메모리 컨트롤러는 물리적 로케이션(예컨대, 블록)에 관한 상태 정보를 업데이트할 수 있고, 업데이트된 상태 정보를 호스트에 다시 반환할 수 있다.
다른 예에서, 상태 정보는 호스트가 프로그램 동작을 개시할 때, NVM의 부분을 더 효율적으로 프로그래밍하는데 이용될 수 있다. NVM(예컨대, NAND 플래시 메모리)은 시간, 사용(예컨대, 판독/프로그램 사이클의 수), 및 동작 온도에 따라 열화되는 경향이 있다. 이러한 열화는 예컨대, 메모리 셀들의 임계 전압의 시프트에서 그 자신을 드러내보일 수 있다. 따라서, 상태 정보는 NVM의 부분들에 대한 이러한 중요한 파라미터들을 추적할 수 있다. 메모리 컨트롤러(106)가 호스트(102)로부터 NVM(128a-n)의 지정 부분에 대한 데이터를 프로그램하기 위한 요청을 수신하는 경우, 메모리의 그 부분과 연관된 상태 정보를 참조할 수 있고, 얼마나 많이 그리고 얼마나 빨리 프로그램된 셀들이 열화될 가능성이 있는지를 판정할 수 있다. 예컨대, 호스트(102)가 빨리 열화될 가능성이 있는 메모리의 부분(예컨대, 시간, 온도, 및 상태 정보내의 사이클 데이터에 의해 표시되는)에 대한 프로그램 동작을 개시하면, 메모리 컨트롤러(106)는 예상되는 임계 전압 드리프트에 대한 보상을 위해 프로그래밍 전압을 변경시키는 것을 결정할 수 있다.
몇몇 실시예에 따라 획득되고 이용될 수 있는 상태 정보의 추가 예시들은 NVM의 부분에서의 불량 비트들의 수, DLL 타이밍 세팅들, 및/또는 데이터를 프로그래밍 또는 판독하기 위해 요구되는 사이클들의 시간 또는 수를 반영하는 비트 에러 레이트 데이터를 포함할 수 있다. 상태 정보는 또한 페이지 보정 시에 컴파일될 수 있는데, 이는 검출된 에러들을 보정하기 위한 메모리 디바이스의 용량을 나타낼 수 있다. 예를 들어, 에러들을 보정하기 위해 요구되는 에러 정정 코드("ECC") 사이클들의 수 또는 이용되는 ECC 기술들(예를 들어, High Bit Flip ECC, Low Bit Flip ECC, 소프트웨어 ECC 등)은 NVM의 부분의 상태를 나타낼 수 있다.
호스트 컨트롤러(212)는 NVM 액세스 커맨드들(예를 들어 프로그래밍, 판독, 및 삭제 커맨드들)을 완료하기 위해 NVM 버스 컨트롤러(216)와 인터페이싱할 수 있다. NVM 버스 컨트롤러(216)는 메모리 컨트롤러(220)에게 하드웨어 인터페이스와 같이 동작할 수 있고, 버스 프로토콜, 데이터 레이트, 및 다른 사항들을 이용하여 메모리 컨트롤러(220)와 통신할 수 있다.
NVM 인터페이스(218)는 여기서 몇몇 경우 "메타데이터"로 언급되는 메모리 관리 데이터에 기초하여 NVM(230)을 관리할 수 있다. 메타데이터는 호스트 컨트롤러(212)에 의해 생성될 수 있고, 또는 호스트 컨트롤러(212)의 제어하의 모듈 동작에 의해 생성될 수 있다. 예를 들어, 메타데이터는 논리적 및 물리 어드레스들 간의 매핑, 불량 블록 관리, 마모도 평준화, 데이터 에러들을 검출 또는 보정하기 위해 이용되는 ECC 데이터, 또는 이들의 임의의 조합을 관리하기 위해 이용되는 임의의 정보를 포함할 수 있다. 메타데이터는 논리 어드레스와 같은 사용자 데이터와 함께 파일 시스템(210)에 의해 제공되는 데이터를 포함할 수 있다. 따라서, 일반적으로, "메타데이터"는 사용자 데이터에 대한 또는 이와 관련하는, 또는 비휘발성 메모리의 동작 및 메모리 로케이션들을 관리하는 데에 일반적으로 이용되는 임의의 정보를 말할 수 있다. 몇몇 실시예에서, 메타데이터 및 상태 정보는 상호 배타적(mutually exclusive)이다.
NVM 인터페이스(218)는 NVM(230) 내에 메타데이터를 저장하도록 구성될 수 있다. 몇몇 실시예에서, NVM 인터페이스(218)는 사용자 데이터가 저장되는 동일한 메모리 로케이션(예를 들어, 페이지)에 사용자 데이터와 연관되는 메타데이터를 저장할 수 있다. 예를 들어, NVM 인터페이스(218)는 NVM(230)의 하나 이상의 메모리 로케이션에 사용자 데이터, 연관된 논리 어드레스, 및 사용자 데이터에 대한 ECC 데이터를 저장할 수 있다. NVM 인터페이스(218)는 동일한 메모리 로케이션에 사용자 데이터에 관한 다른 유형의 메타데이터도 저장할 수 있다.
NVM 인터페이스(218)는 또한 NVM(230) 내에 상태 정보를 저장할 수 있다. NVM 인터페이스(218)는 NVM(230) 내에 상태 데이터베이스(215)의 콘텐츠를 주기적으로 저장할 수 있고, 또는 NVM 인터페이스(218)는 파워다운 이벤트 동안에(예를 들어, 디바이스가 꺼지는 때에) 상기 콘텐츠를 저장할 수 있다. 상태 정보가 NVM(230)에 저장되면, 상태 데이터베이스(215)를 포퓰레이트(populate)하기 위해 파워업 동안에 상기 콘텐츠가 검색될 수 있다.
NVM 인터페이스(218)는 NVM(230)의 파워 업 시에, 또는 NVM(230)의 동작 동안에 전자 디바이스(200)가 그 로케이션에 어떤 데이터가 주재하는지를 결정할 수 있다. 특히, 파일 시스템(210)은 사용자 데이터의 물리 어드레스가 아닌 논리 어드레스에 따라 사용자 데이터를 참조할 수 있기 때문에, NVM 인터페이스(218)는 사용자 데이터 및 논리 어드레스를 함께 저장하여 이들의 연결을 유지할 수 있다. 이런 방식으로, 만약 물리/논리 매핑을 유지하는 NVM(230) 내의 인덱스 테이블이 만료되면, NVM 인터페이스(218)는, 예를 들어, 여전히 파워 업 시에 적절한 매핑을 결정하거나 전자 디바이스(200)를 재부팅할 수 있다.
도 3은 호스트 디바이스[예를 들어, 도 1의 호스트(102)]와 메모리 컨트롤러[예를 들어, 도 1의 메모리 컨트롤러(106)] 간에 전달될 수 있는 커맨드 패킷(300)의 설명적 다이어그램이다. 커맨드 패킷(300)은 커맨드 액세스 요청(331), 어드레스(333), 상태 정보(335), 데이터(337), 및 메타데이터(339)를 포함할 수 있다. 커맨드 액세스 요청(331)은, 예를 들어 판독, 프로그래밍, 또는 삭제 요청과 같은, 호스트 디바이스에 의해 메모리 컨트롤러에게 제공되는 임의의 적절한 명령어일 수 있다. 어드레스(333)는 액세스될 NVM 내의 물리 어드레스(들)일 수 있다. 예를 들어, 어드레스(들)는 트랜슬레이션 레이어[예를 들어, 트랜슬레이션 레이어(214)]로부터 도출될 수 있다.
커맨드 패킷은 또한 상태 정보(335)를 포함할 수 있다. 상태 정보(335)는 어드레스(333)와 연관될 수 있고, 따라서 여기서 어드레스 지정 상태 정보로서 언급될 수 있다. 어드레스 지정 상태 정보는 호스트 컨트롤러에 의해, 커맨드 패킷(300) 내에 상기 정보를 포함하는 상태 데이터베이스[예를 들어, 상태 데이터베이스(215)]로부터 검색될 수 있다. 커맨드 패킷(300)이 메모리 컨트롤러에 의해 검색되는 때에, 이것은 상태 정보(335)를 추출하고, 그에 따라 커맨드 액세스 요청(331)을 실행할 수 있다. 몇몇 실시예에 따라, 상태 정보(335)는 페이지 보정, 임계 전압, 시간 및/또는 NVM의 그 부분을 판독, 프로그래밍 또는 삭제하기 위해 요구되는 사이클들의 수와 같은 어드레스 지정 NVM 상태 표시자들을 포함할 수 있다. 다른 실시예들에서, 상태 정보(335)는, 개별 NVM 상태 표시자들로부터 계산된 NVM의 일반화된 상태 표시일 수 있는 상태 등급일 수 있다. 상태 정보(335)는 메모리 컨트롤러(220)에 지정될 수 있고, 그에 따라 그 메모리 컨트롤러에 의해서만 해석되고 이용될 수 있다. 따라서, 어떤 제조사가 메모리 컨트롤러 및 NVM을 생산하는 지와 무관하게, 이것은 자신이 처리 및 사용할 수 있는 커맨드 패킷(300) 내의 상태 정보를 수신할 수 있다. 더욱이, 호스트 컨트롤러는 상태 정보의 콘텐츠에 대해 완전히 인식할 수 없다(agnostic).
데이터 구조(330)는 또한 데이터(337) 및 메타데이터(339)를 포함할 수 있다. 예를 들어, 액세스 요청이 프로그래밍 요청이라면, 데이터(337)는 NVM에 프로그래밍되고 있는 데이터일 수 있다. 데이터(337)는 임의의 적절한 유형의 데이터일 수 있다. 호스트 디바이스가 미디어 플레이어인 실시예들에서, 데이터(337)는 하나 이상의 미디어 파일(예를 들어, 노래, 비디오, 이미지, 전자 책 등)을 나타낼 수 있다. 메타데이터(339)는 논리 어드레스와 물리 어드레스 간의 매핑을 관리, 불량 블록 관리, 마모도 평준화, 데이터 에러들을 검출 또는 보정하기 위해 이용되는 ECC 데이터, 또는 이들의 임의의 조합을 관리하기 위해 이용되는 임의의 정보를 포함할 수 있다.
예시 커맨드 프로그램 요청에서, 메모리 컨트롤러는, 제1 버스 사이클에서 통신 채널[예를 들어, 도 1의 통신 채널(116)]을 거쳐 호스트 디바이스로부터 프로그램 커맨드 패킷을 수신하고 커맨드 레지스터[예를 들어, 휘발성 메모리(122)] 내에 저장할 수 있다. 하나 이상의 버스 사이클은 그 후 어드레스(333)를 휘발성 메모리 내의 어드레스 레지스터에 입력하는 데에 이용될 수 있다. 그 다음, 데이터(337) 및 메타데이터(339)는 페이지 버퍼로 로드될 수 있고, 그 후 어드레스 레지스터 내에 저장되는 어드레스에 NVM 으로 프로그래밍된다.
예시적 커맨드 판독 요청에서, 메모리 컨트롤러는 제1 버스 사이클에서 통신 채널을 거쳐 호스트 디바이스로부터 커맨드 판독 패킷을 수신하고 커맨드 레지스터에 저장할 수 있다. 하나 이상의 버스 사이클은 어드레스 레지스터 내에 어드레스(333)를 입력하는 데에 이용될 수 있다. 그 다음, 어드레스(333)에 NVM 내에 저장되는 데이터는 페이지 버퍼로 전달되고 버스가 준비되는 때에 호스트로 전송될 수 있다.
도 4는, 어떻게 시스템이 본 발명의 실시예를 따라 상태 정보를 이용하는 지에 대한 단계의 설명적 흐름도이다. 시스템은, 다른 것들을 포함하면서, 호스트 디바이스[예를 들어, 호스트(102)], 메모리 컨트롤러[메모리 컨트롤러(106)], 및 NVM[예를 들어 NVM(128)]를 포함할 수 있다. 단계 410에서, NVM에 대한 상태 정보 데이터베이스는 적어도 하나의 저장 컴포넌트에 유지된다. 적어도 하나의 저장 컴포넌트는 호스트 디바이스에 연관된 휘발성 메모리일 수 있다. 상태 정보 데이터베이스는 물리 어드레스 지정 상태 정보를 저장한다.
단계 420에서, 커맨드들이 메모리 컨트롤러에게 제공되고, 각각의 커맨드는 커맨드 액세스 요청, 어드레스, 및 어드레스 지정 상태 정보를 포함한다. 호스트 디바이스는 트랜슬레이션 레이어[예를 들어, 트랜슬레이션 레이어(214)]로부터 물리 어드레스를 획득함으로써 커맨드를 패키징할 수 있고, 이 물리 어드레스를 상태 정보 데이터베이스로부터 어드레스 지정 상태 정보를 검색하기 위해 이용할 수 있다. 호스트에 의해 조직되는 커맨드 패킷은 도 3과 연관하여 앞서 논의된 것과 유사할 수 있다.
단계 430에서, 메모리 컨트롤러는 커맨드에서 어드레스 지정 상태 정보를 추출할 수 있다. 단계 440에서, 메모리 컨트롤러는 어드레스 지정 상태 정보에 따라 액세스 요청을 추출할 수 있다. 예를 들어, 메모리 컨트롤러는, NVM의 물리 어드레스에 대해 커맨드를 실행하는 때에, 어드레스 지정 상태 정보에 있는 모든 하드웨어 및/또는 소프트웨어 파라미터들을 고려한다. 프로그램 커맨드가 실행되면, 상태 정보는, 프로그래밍이 얼마나 양호하게 튜닝되어야 하는지를 지정하거나 프로그램 타임을 지정하거나 최후 프로그램 전압 레벨이 주어진 로케이션에 대해 얼마가 되어야 하는지를 지정할 수 있다. 이 정보를 이용하여, 컨트롤러는 데이터가 의도된 로케이션에 가장 적절한 방식으로 데이터를 프로그래밍할 수 있다.
단계 450에서, 액세스 요청이 어드레스 지정 상태 정보를 따라 실행되었는지를 결정한다. 액세스 요청이 어드레스 지정 상태 정보를 따라 실행되었다면, 프로세스는 단계 480에서 종료된다. 액세스 요청이 어드레스 지정 상태 정보를 따라 실행되지 않았다면, 프로세스는 단계 460으로 진행한다. 예를 들어, 상이한 소프트웨어 및/또는 하드웨어 파라미터가 어드레스 지정 상태 정보에 포함된 것이 아닌 액세스 요청을 실행할 필요가 있었다면, 프로세스는 단계 460으로 진행된다. 예를 들어, 메모리 컨트롤러는, 상태 정보가 제안하였던 파라미터의 값에 대해 이용되는 실제 파라미터와 비교할 수 있다.
단계 460에서, 메모리 컨트롤러는 패킷 내에 변경된 파라미터를 패키징하여 상태 정보를 업데이트하고, 이것을 호스트 디바이스에게 제공할 수 있다. 패킷은 어드레스와 업데이트된 상태 정보를 포함할 수 있다. 단계 470에서, 호스트 디바이스는 메모리 컨트롤러로부터 수신된 변경된 파라미터(들)를 이용하여 상태 정보 데이터베이스 내의 상태 정보를 업데이트할 수 있다.
도 4에 도시된 단계들은 단지 설명적이라는 것과, 이미 존재하는 단계들은 수정되거나 생략될 수 있고, 추가 단계들이 부가될 수 있으며, 어떤 단계들의 순서가 바뀔 수 있다는 것을 이해하여야 한다.
비휘발성 메모리 상태 정보를 획득하여 이용하는 시스템들 및 방법들이 기술되었지만, 본 발명의 사상과 범주를 벗어나지 않고서 많은 변경들이 이루어질 수 있다는 것을 이해해야 한다. 당업자가 보았을 때, 공지되지 않거나 혹은 후에 고안된 것으로, 본 청구대상을 실질적으로 변경하지 않은 것은, 본 청구범위 내의 균등물로서 고려된다는 점은 명확하다. 따라서, 당업자에게 현재 또는 미래에 알려진 명백한 균등물은 정의된 요소의 범주 내에 있는 것으로 정의된다.
본 발명의 기술된 실시예들은 제한이 아닌 예시의 목적으로 제공된다.
Claims (20)
- 비휘발성 메모리(NVM):
제1 버스를 통해 상기 NVM에 통신가능하게 결합된 메모리 컨트롤러; 및
적어도 하나의 저장 컴포넌트를 갖는 호스트 디바이스
를 포함하는 시스템으로서,
상기 호스트 디바이스는 제2 버스를 통해 상기 메모리 컨트롤러에 통신가능하게 결합되고,
상기 호스트 디바이스는,
상기 NVM에 대한 상태(health) 정보 데이터베이스를 상기 적어도 하나의 저장 컴포넌트에서 유지하고 - 상기 상태 정보 데이터베이스는 어드레스 지정 상태 정보(address specific health information)를 저장하고, 상기 어드레스 지정 상태 정보는 해당 지정 어드레스에서 NVM을 액세스하는데 사용되는 하나 이상의 파라미터를 포함하고, 상기 어드레스 지정 상태 정보는 상기 NVM의 적어도 일부의 열화 가능성을 나타내는 정보를 포함함 -,
상기 제2 버스를 통해 상기 메모리 컨트롤러에게 커맨드들을 제공하도록 동작하며 - 각각의 커맨드는 액세스 요청, 어드레스 및 어드레스 지정 상태 정보를 포함하고, 상기 커맨드들은 상기 NVM을 액세스하는데 사용됨 -,
상기 메모리 컨트롤러는,
상기 커맨드로부터 상기 어드레스 지정 상태 정보를 추출하고,
상기 어드레스 지정 상태 정보에 따라 상기 액세스 요청을 실행하도록 동작하는
시스템. - 제1항에 있어서,
상기 비휘발성 메모리는 NAND 플래시 메모리를 포함하는 시스템. - 제1항에 있어서,
상기 메모리 컨트롤러는,
상기 어드레스 지정 상태 정보를 업데이트하고,
상기 업데이트된 어드레스 지정 상태 정보를 상기 호스트 디바이스에게 제공하도록 또한 동작하는 시스템. - 제3항에 있어서,
상기 호스트 디바이스는 상기 업데이트된 어드레스 지정 상태 정보를 상기 상태 정보 데이터베이스에 저장하도록 또한 동작하는 시스템. - 제1항에 있어서,
상기 호스트 디바이스는 상기 상태 정보 데이터베이스에 저장된 임의의 어드레스 지정 상태 정보와 독립하여 동작하는 시스템. - 제1항에 있어서,
상기 호스트 디바이스는 상기 상태 정보 데이터베이스에서 임의의 어드레스 지정 상태 정보를 독립적으로 수정하지 않는 시스템. - 제1항에 있어서,
상기 어드레스 지정 상태 정보는 에러 정정 파라미터들, 프로그램 파라미터들, 판독 파라미터들 또는 이들의 임의의 조합을 포함하는 시스템. - 제1항에 있어서,
상기 호스트 디바이스는,
파일 시스템으로부터 파일 시스템 커맨드를 수신하고,
상기 파일 시스템 커맨드로부터 액세스될 물리 어드레스를 결정하고,
상기 물리 어드레스에 대한 어드레스 지정 상태 정보를 검색하기 위해 상기 상태 정보 데이터베이스에 액세스하며,
상기 NVM 컨트롤러에게 제공된 상기 커맨드에 상기 검색된 어드레스 지정 상태 정보 및 상기 물리 어드레스를 통합하도록 또한 동작하는 시스템. - 비휘발성 메모리(NVM)와 통신하는 메모리 컨트롤러에 의해 구현되는 방법으로서,
메모리 컨트롤러에서, 호스트 디바이스로부터 커맨드를 수신하는 단계 - 상기 커맨드는 액세스 요청, 어드레스 및 상기 어드레스와 연관되는 어드레스 지정 상태 정보를 포함하고, 상기 어드레스 지정 상태 정보는 해당 지정 어드레스에서 NVM을 액세스하는데 사용되는 하나 이상의 파라미터를 포함하고, 상기 어드레스 지정 상태 정보는 상기 NVM의 적어도 일부의 열화 가능성을 나타내는 정보를 포함하고, 상기 커맨드는 상기 NVM을 액세스하는데 사용됨 -;
상기 어드레스 지정 상태 정보를 프로세싱하여 적어도 하나의 NVM 동작 파라미터를 획득하는 단계; 및
상기 적어도 하나의 NVM 동작 파라미터에 따라 상기 액세스 요청을 실행하는 단계
를 포함하는 방법. - 제9항에 있어서,
상기 액세스 요청을 실행하기 위해 상기 적어도 하나의 동작 파라미터에서 변경이 요구되었는지 여부를 결정하는 단계;
상기 액세스 요청을 실행하기 위해 상기 적어도 하나의 동작 파라미터 중 하나의 파라미터에서 변경이 요구되었다고 결정되면, 상기 적어도 하나의 동작 파라미터에 상기 변경을 포함시키도록 상기 어드레스 지정 상태 정보를 업데이트하는 단계; 및
상기 업데이트된 어드레스 지정 상태 정보 및 상기 어드레스를 상기 호스트 디바이스에게 전송하는 단계
를 더 포함하는 방법. - 제9항에 있어서,
상기 적어도 하나의 NVM 동작 파라미터는 에러 정정 코드(ECC) 파라미터를 포함하는 방법. - 제9항에 있어서,
상기 적어도 하나의 NVM 동작 파라미터는 판독 파라미터를 포함하는 방법. - 제9항에 있어서,
상기 적어도 하나의 NVM 동작 파라미터는 프로그램 파라미터를 포함하는 방법. - 제9항에 있어서,
상기 액세스 요청은 판독 요청 또는 프로그램 요청인 방법. - 비휘발성 메모리 패키지로서,
호스트와 통신하기 위한 인터페이스;
비휘발성 메모리(NVM); 및
상기 인터페이스 및 상기 NVM에 결합된 컨트롤러
를 포함하며,
상기 컨트롤러는,
상기 인터페이스로부터 커맨드를 수신하고 - 상기 커맨드는 액세스 요청, 어드레스 및 어드레스 지정 상태 정보를 포함하고, 상기 어드레스 지정 상태 정보는 해당 지정 어드레스에서 NVM을 액세스하는데 사용되는 하나 이상의 파라미터를 포함하고, 상기 커맨드는 상기 NVM을 액세스하는데 사용됨 -,
상기 어드레스 지정 상태 정보를 프로세싱하여 적어도 하나의 NVM 동작 파라미터를 획득하고 - 상기 어드레스 지정 상태 정보는 상기 NVM의 적어도 일부의 열화 가능성을 나타내는 정보를 포함함 - ,
상기 적어도 하나의 NVM 동작 파라미터에 따라 상기 액세스 요청을 실행하도록 동작하는
비휘발성 메모리 패키지. - 제15항에 있어서,
상기 컨트롤러는,
상기 액세스 요청을 실행하기 위해 상기 적어도 하나의 동작 파라미터에서 변경이 요구되었는지 여부를 결정하고,
상기 액세스 요청을 실행하기 위해 상기 적어도 하나의 동작 파라미터 중 하나의 파라미터에서 변경이 요구되었다고 결정되면, 상기 적어도 하나의 동작 파라미터에 상기 변경을 포함시키도록 상기 어드레스 지정 상태 정보를 업데이트하며,
상기 업데이트된 어드레스 지정 상태 정보 및 상기 어드레스를 상기 인터페이스에게 전송하도록 또한 동작하는 비휘발성 메모리 패키지. - 제15항에 있어서,
상기 적어도 하나의 NVM 동작 파라미터는 에러 정정 코드(ECC) 파라미터를 포함하는 비휘발성 메모리 패키지. - 제15항에 있어서,
상기 적어도 하나의 NVM 동작 파라미터는 판독 파라미터를 포함하는 비휘발성 메모리 패키지. - 제15항에 있어서,
상기 적어도 하나의 NVM 동작 파라미터는 프로그램 파라미터를 포함하는 비휘발성 메모리 패키지. - 제17항에 있어서,
상기 메모리 컨트롤러에게 결합된 에러 정정 코드(ECC) 엔진을 더 포함하고, 상기 메모리 컨트롤러는 상기 ECC 엔진에게 지시하여 상기 ECC 파라미터를 이용하게 하는 비휘발성 메모리 패키지.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/285,145 | 2011-10-31 | ||
US13/285,145 US10359949B2 (en) | 2011-10-31 | 2011-10-31 | Systems and methods for obtaining and using nonvolatile memory health information |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130047578A KR20130047578A (ko) | 2013-05-08 |
KR101394845B1 true KR101394845B1 (ko) | 2014-05-13 |
Family
ID=47044822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120109551A KR101394845B1 (ko) | 2011-10-31 | 2012-09-28 | 비휘발성 메모리 상태 정보를 획득하여 이용하기 위한 시스템들 및 방법들 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10359949B2 (ko) |
EP (1) | EP2587362B1 (ko) |
JP (1) | JP5749237B2 (ko) |
KR (1) | KR101394845B1 (ko) |
CN (1) | CN103092764B (ko) |
TW (1) | TWI511151B (ko) |
WO (1) | WO2013066518A1 (ko) |
Families Citing this family (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8775717B2 (en) | 2007-12-27 | 2014-07-08 | Sandisk Enterprise Ip Llc | Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories |
WO2013147865A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | A mechanism for saving and retrieving micro-architecture context |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9921980B2 (en) * | 2013-08-12 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for configuring I/Os of memory for hybrid memory modules |
JP6102632B2 (ja) * | 2013-08-14 | 2017-03-29 | ソニー株式会社 | 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法 |
US9639463B1 (en) * | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
CN105164656B (zh) * | 2013-08-30 | 2018-03-06 | 慧与发展有限责任合伙企业 | 完成包的返回 |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9612773B2 (en) * | 2013-11-21 | 2017-04-04 | Samsung Electronics Co., Ltd. | User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
GB201322075D0 (en) | 2013-12-13 | 2014-01-29 | Ibm | Device for selecting a level for at least one read voltage |
US9558107B2 (en) | 2013-12-24 | 2017-01-31 | International Business Machines Corporation | Extending useful life of a non-volatile memory by health grading |
US9619381B2 (en) * | 2013-12-24 | 2017-04-11 | International Business Machines Corporation | Collaborative health management in a storage system |
US9406368B2 (en) | 2014-01-21 | 2016-08-02 | International Business Machines Corporation | Dynamic temperature adjustments in spin transfer torque magnetoresistive random-access memory (STT-MRAM) |
US9418721B2 (en) * | 2014-01-21 | 2016-08-16 | International Business Machines Corporation | Determining and storing bit error rate relationships in spin transfer torque magnetoresistive random-access memory (STT-MRAM) |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
KR20150112075A (ko) * | 2014-03-26 | 2015-10-07 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US9653184B2 (en) | 2014-06-16 | 2017-05-16 | Sandisk Technologies Llc | Non-volatile memory module with physical-to-physical address remapping |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US20160018998A1 (en) * | 2014-07-17 | 2016-01-21 | Sandisk Enterprise Ip Llc | Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules |
US9569120B2 (en) * | 2014-08-04 | 2017-02-14 | Nvmdurance Limited | Adaptive flash tuning |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9563373B2 (en) | 2014-10-21 | 2017-02-07 | International Business Machines Corporation | Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management |
US10365859B2 (en) | 2014-10-21 | 2019-07-30 | International Business Machines Corporation | Storage array management employing a merged background management process |
US9990467B2 (en) * | 2014-10-24 | 2018-06-05 | Samsung Electronics Co., Ltd. | Electronic system with health monitoring mechanism and method of operation thereof |
US10339048B2 (en) | 2014-12-23 | 2019-07-02 | International Business Machines Corporation | Endurance enhancement scheme using memory re-evaluation |
US9990279B2 (en) | 2014-12-23 | 2018-06-05 | International Business Machines Corporation | Page-level health equalization |
US9785570B2 (en) * | 2015-03-09 | 2017-10-10 | Samsung Electronics Co., Ltd. | Memory devices and modules |
KR20160112439A (ko) | 2015-03-19 | 2016-09-28 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 동작 방법 |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US9891833B2 (en) * | 2015-10-22 | 2018-02-13 | HoneycombData Inc. | Eliminating garbage collection in nand flash devices |
CN106779008A (zh) * | 2015-11-23 | 2017-05-31 | 杭州海康威视数字技术股份有限公司 | Sd卡、摄像机和sd卡可靠性预警系统 |
US10437483B2 (en) | 2015-12-17 | 2019-10-08 | Samsung Electronics Co., Ltd. | Computing system with communication mechanism and method of operation thereof |
KR20170073792A (ko) * | 2015-12-18 | 2017-06-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN108121673B (zh) * | 2016-11-29 | 2023-09-22 | 三星电子株式会社 | 控制器以及包括控制器和非易失性存储器件的存储设备 |
US11003381B2 (en) * | 2017-03-07 | 2021-05-11 | Samsung Electronics Co., Ltd. | Non-volatile memory storage device capable of self-reporting performance capabilities |
US10147475B1 (en) | 2017-05-09 | 2018-12-04 | Micron Technology, Inc. | Refresh in memory based on a set margin |
CN107220185A (zh) * | 2017-05-23 | 2017-09-29 | 建荣半导体(深圳)有限公司 | 基于闪存的数据存储方法、装置以及闪存芯片 |
US10921984B2 (en) * | 2017-06-14 | 2021-02-16 | Western Digital Technologies, Inc. | Protection of user data in data storage devices using preemptive health reporting |
JP6785204B2 (ja) | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10936205B2 (en) | 2017-10-05 | 2021-03-02 | International Business Machines Corporation | Techniques for retention and read-disturb aware health binning |
US10824352B2 (en) | 2017-12-06 | 2020-11-03 | International Business Machines Corporation | Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded |
KR20190068902A (ko) * | 2017-12-11 | 2019-06-19 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 |
KR102507302B1 (ko) * | 2018-01-22 | 2023-03-07 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
KR20190093361A (ko) * | 2018-02-01 | 2019-08-09 | 에스케이하이닉스 주식회사 | 호스트 및 메모리 컨트롤러를 포함하는 전자 시스템 및 이의 동작 방법 |
US10699791B2 (en) | 2018-08-24 | 2020-06-30 | International Business Machines Corporation | Adaptive read voltage threshold calibration in non-volatile memory |
CN110955609B (zh) * | 2018-09-26 | 2024-07-02 | 北京忆恒创源科技股份有限公司 | 用于多流、开放通道存储设备的演进的自动流跟踪(east) |
KR102589402B1 (ko) | 2018-10-04 | 2023-10-13 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 디바이스의 동작 방법 |
US10936456B1 (en) | 2019-02-20 | 2021-03-02 | Apple Inc. | Handling malfunction in a memory system comprising a nonvolatile memory by monitoring bad-block patterns |
KR20210006664A (ko) * | 2019-07-09 | 2021-01-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11150812B2 (en) * | 2019-08-20 | 2021-10-19 | Micron Technology, Inc. | Predictive memory management |
CN111722799B (zh) * | 2020-05-28 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、装置、设备及可读存储介质 |
US11429480B2 (en) | 2020-08-31 | 2022-08-30 | Micron Technology, Inc. | Method of demand scrubbing by placing corrected data in memory-side cache |
JP7102482B2 (ja) * | 2020-10-23 | 2022-07-19 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US20240020194A1 (en) * | 2020-11-04 | 2024-01-18 | Alibaba Group Holding Limited | Error detection, prediction and handling techniques for system-in-package memory architectures |
US11990200B2 (en) * | 2021-01-28 | 2024-05-21 | Micron Technology, Inc. | Bit retiring to mitigate bit errors |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180328A1 (en) * | 2006-01-27 | 2007-08-02 | Cornwell Michael J | Monitoring health of non-volatile memory |
US20090182962A1 (en) * | 2008-01-16 | 2009-07-16 | Apple Inc. | Memory Subsystem Hibernation |
US7805511B1 (en) | 2008-04-30 | 2010-09-28 | Netapp, Inc. | Automated monitoring and reporting of health issues for a virtual server |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0617363B1 (en) * | 1989-04-13 | 2000-01-26 | SanDisk Corporation | Defective cell substitution in EEprom array |
US5127014A (en) * | 1990-02-13 | 1992-06-30 | Hewlett-Packard Company | Dram on-chip error correction/detection |
US5517626A (en) * | 1990-05-07 | 1996-05-14 | S3, Incorporated | Open high speed bus for microcomputer system |
AU2476192A (en) * | 1991-08-16 | 1993-03-16 | Multichip Technology | High-performance dynamic memory system |
US5452418A (en) * | 1992-04-24 | 1995-09-19 | Digital Equipment Corporation | Method of using stream buffer to perform operation under normal operation mode and selectively switching to test mode to check data integrity during system operation |
US5353256A (en) * | 1993-06-30 | 1994-10-04 | Intel Corporation | Block specific status information in a memory device |
US5488691A (en) * | 1993-11-17 | 1996-01-30 | International Business Machines Corporation | Memory card, computer system and method of operation for differentiating the use of read-modify-write cycles in operating and initializaiton modes |
US5737744A (en) * | 1995-10-13 | 1998-04-07 | Compaq Computer Corporation | Disk array controller for performing exclusive or operations |
US20080320209A1 (en) * | 2000-01-06 | 2008-12-25 | Super Talent Electronics, Inc. | High Performance and Endurance Non-volatile Memory Based Storage Systems |
US6854121B2 (en) * | 2001-02-16 | 2005-02-08 | Canon U.S.A., Inc. | Command interface to object-based architecture of software components for extending functional and communicational capabilities of network devices |
US7210004B2 (en) * | 2003-06-26 | 2007-04-24 | Copan Systems | Method and system for background processing of data in a storage system |
US20050210304A1 (en) * | 2003-06-26 | 2005-09-22 | Copan Systems | Method and apparatus for power-efficient high-capacity scalable storage system |
KR100555881B1 (ko) | 2004-07-21 | 2006-03-03 | 오준택 | 잠열저장물질을 함유한 마이크로캡슐의 제조방법 |
US9171585B2 (en) * | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US20070094445A1 (en) * | 2005-10-20 | 2007-04-26 | Trika Sanjeev N | Method to enable fast disk caching and efficient operations on solid state disks |
US20090070654A1 (en) * | 2006-02-09 | 2009-03-12 | International Business Machines Corporation | Design Structure For A Processor System With Background Error Handling Feature |
US7512847B2 (en) | 2006-02-10 | 2009-03-31 | Sandisk Il Ltd. | Method for estimating and reporting the life expectancy of flash-disk memory |
US20070214314A1 (en) * | 2006-03-07 | 2007-09-13 | Reuter James M | Methods and systems for hierarchical management of distributed data |
US7653778B2 (en) * | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
JP4700562B2 (ja) * | 2006-05-18 | 2011-06-15 | 株式会社バッファロー | データ記憶装置およびデータ記憶方法 |
JP2008198310A (ja) | 2007-02-15 | 2008-08-28 | Megachips Lsi Solutions Inc | ビットエラーの修復方法および情報処理装置 |
US8706932B1 (en) * | 2007-08-30 | 2014-04-22 | Virident Systems, Inc. | Replaceable non-volatile memory apparatus with a plurality of pluggable electrical connectors |
WO2009072102A2 (en) * | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices |
CN104274121B (zh) | 2008-10-22 | 2017-05-03 | 创科地板护理技术有限公司 | 手控真空吸尘器 |
JP5134569B2 (ja) * | 2009-02-23 | 2013-01-30 | ラピスセミコンダクタ株式会社 | メモリ装置 |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
JP4843693B2 (ja) | 2009-03-30 | 2011-12-21 | 株式会社東芝 | 記憶装置 |
US8316173B2 (en) * | 2009-04-08 | 2012-11-20 | International Business Machines Corporation | System, method, and computer program product for analyzing monitor data information from a plurality of memory devices having finite endurance and/or retention |
US8812770B2 (en) * | 2009-07-13 | 2014-08-19 | Microsoft Corporation | Health reporting from non-volatile block storage device to processing device |
KR101678909B1 (ko) * | 2009-09-17 | 2016-11-23 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 소거 리프레쉬 방법 |
US8255006B1 (en) * | 2009-11-10 | 2012-08-28 | Fusionone, Inc. | Event dependent notification system and method |
US20110252289A1 (en) * | 2010-04-08 | 2011-10-13 | Seagate Technology Llc | Adjusting storage device parameters based on reliability sensing |
US8819503B2 (en) * | 2010-07-02 | 2014-08-26 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
US8737138B2 (en) * | 2010-11-18 | 2014-05-27 | Micron Technology, Inc. | Memory instruction including parameter to affect operating condition of memory |
US20120239413A1 (en) * | 2011-02-16 | 2012-09-20 | Medicity, Inc. | Sending Healthcare Information Securely |
KR20140096044A (ko) * | 2011-09-29 | 2014-08-04 | 코그노산테 홀딩스, 엘엘씨 | 건강 정보의 지능형 라우팅을 위한 방법 및 시스템 |
-
2011
- 2011-10-31 US US13/285,145 patent/US10359949B2/en active Active
-
2012
- 2012-09-24 WO PCT/US2012/056809 patent/WO2013066518A1/en active Application Filing
- 2012-09-26 EP EP12186068.8A patent/EP2587362B1/en active Active
- 2012-09-28 TW TW101136079A patent/TWI511151B/zh active
- 2012-09-28 JP JP2012230293A patent/JP5749237B2/ja active Active
- 2012-09-28 KR KR1020120109551A patent/KR101394845B1/ko active IP Right Grant
- 2012-09-28 CN CN201210504255.2A patent/CN103092764B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180328A1 (en) * | 2006-01-27 | 2007-08-02 | Cornwell Michael J | Monitoring health of non-volatile memory |
US20090182962A1 (en) * | 2008-01-16 | 2009-07-16 | Apple Inc. | Memory Subsystem Hibernation |
US7805511B1 (en) | 2008-04-30 | 2010-09-28 | Netapp, Inc. | Automated monitoring and reporting of health issues for a virtual server |
Also Published As
Publication number | Publication date |
---|---|
EP2587362A2 (en) | 2013-05-01 |
US20130111298A1 (en) | 2013-05-02 |
US10359949B2 (en) | 2019-07-23 |
TWI511151B (zh) | 2015-12-01 |
TW201324520A (zh) | 2013-06-16 |
EP2587362A3 (en) | 2013-08-28 |
CN103092764B (zh) | 2016-12-21 |
KR20130047578A (ko) | 2013-05-08 |
EP2587362B1 (en) | 2018-10-24 |
JP2013097789A (ja) | 2013-05-20 |
CN103092764A (zh) | 2013-05-08 |
WO2013066518A1 (en) | 2013-05-10 |
JP5749237B2 (ja) | 2015-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101394845B1 (ko) | 비휘발성 메모리 상태 정보를 획득하여 이용하기 위한 시스템들 및 방법들 | |
EP2605142B1 (en) | Lba bitmap usage | |
US8230160B2 (en) | Flash memory storage system and flash memory controller and data processing method thereof | |
US8762625B2 (en) | Stochastic block allocation for improved wear leveling | |
US10963175B2 (en) | Apparatus and method for searching valid data in memory system | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
US8838877B2 (en) | File system derived metadata for management of non-volatile memory | |
US11269722B2 (en) | Apparatus for diagnosing memory system and operating method thereof | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
KR102649131B1 (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
US10990325B2 (en) | Write control method, associated data storage device and controller thereof | |
US8819387B2 (en) | Memory storage device, memory controller, and method for identifying valid data | |
US20170090782A1 (en) | Writing management method and writing management system for solid state drive | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
KR20200087487A (ko) | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US11694728B2 (en) | Storage device and operating method thereof | |
US20240143226A1 (en) | Data storage device and method for managing a write buffer | |
US20240126473A1 (en) | Data storage device and method for managing a write buffer | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170420 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180417 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190417 Year of fee payment: 6 |