KR20100138896A - 하이브리드 비휘발성 고체 상태 메모리 시스템에 대한 피로 관리 시스템 및 방법 - Google Patents

하이브리드 비휘발성 고체 상태 메모리 시스템에 대한 피로 관리 시스템 및 방법 Download PDF

Info

Publication number
KR20100138896A
KR20100138896A KR20107019163A KR20107019163A KR20100138896A KR 20100138896 A KR20100138896 A KR 20100138896A KR 20107019163 A KR20107019163 A KR 20107019163A KR 20107019163 A KR20107019163 A KR 20107019163A KR 20100138896 A KR20100138896 A KR 20100138896A
Authority
KR
South Korea
Prior art keywords
write
memory
solid
logical addresses
cycle life
Prior art date
Application number
KR20107019163A
Other languages
English (en)
Other versions
KR101576575B1 (ko
Inventor
판타스 수타르자
Original Assignee
마벨 월드 트레이드 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마벨 월드 트레이드 리미티드 filed Critical 마벨 월드 트레이드 리미티드
Publication of KR20100138896A publication Critical patent/KR20100138896A/ko
Application granted granted Critical
Publication of KR101576575B1 publication Critical patent/KR101576575B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

고체 상태 메모리 시스템은 제 1 기록 사이클 수명 및 제 1 세트의 물리적 어드레스들을 가지는 제 1 비휘발성 반도체 메모리, 및 제 2 기록 사이클 수명 및 제 2 세트의 물리적 어드레스들을 가지는 제 2 비휘발성 반도체 메모리를 포함한다. 상기 제 1 기록 사이클 수명이 상기 제 2 기록 사이클 수명보다 더 크다. 상기 시스템은 복수의 논리적 어드레스들에 대한 기록 빈도 랭킹을 발생시키는 피로 관리 모듈을 더 포함한다. 상기 피로 관리 모듈은 상기 기록 빈도 랭킹들을 기반으로 하여 상기 복수의 논리적 어드레스들 각각을 상기 제 1 세트의 물리적 어드레스들 또는 상기 제 2 세트의 물리적 어드레스들의 물리적 어드레스로 맵핑한다.

Description

하이브리드 비휘발성 고체 상태 메모리 시스템에 대한 피로 관리 시스템 및 방법{FATIGUE MANAGEMENT SYSTEM AND METHOD FOR HYBRID NONVOLATILE SOLID STATE MEMORY SYSTEM}
관련 출원들과의 상호-참조
본 출원은 2006년 12월 11일자로 출원된 미국 가출원 번호 제60/869,493호의 이점을 주장하는, 2007년 12월 7일자로 출원된 미국 출원 일련 번호 제11/952,648호의 부분 연속 출원이다. 본 출원은 또한 2009년 2월 4일자로 출원된 미국 출원 번호 제12/365,455호 및 2008년 2월 29일자로 출원된 미국 가출원 번호 제61/032,774호에 대한 우선권을 주장한다. 상기 출원들의 명세서들이 전체적으로 참조로 본원에 통합되어 있다.
본 명세서는 고체 상태 메모리(solid state memory)들에 관한 것이며, 특히 하이브리드 비휘발성 고체 상태 메모리(hybrid nonvolatile solid state memory)에 관한 것이다.
본원에 제공된 배경 설명은 명세서의 상황을 일반적으로 나타내기 위한 것이다. 현재 명명된 발명자들의 작업은 본 배경 섹션(background section)에서 설명되는 범위, 뿐만 아니라, 출원 시에 종래 기술로서 인가받을 수 없는 설명의 양상들까지, 본 명세서에 대하여 종래 기술로서 명시적으로도 암시적으로도 인정되지 않는다.
전하 저장 소자(charge storage device)들을 사용하는 플래시 메모리 칩(flash memory chip)은 반도체-기반 대량 저장 소자들에 대한 지배적인 칩 유형이 되었다. 전하 저장 소자들은 저장될 데이터 파일(data file)들이 음악 및 영상 파일들을 포함하는 애플리케이션(application)들에서 특히 적합하다. 그러나, 전하 저장 소자들은 제한된 수의 기록 사이클(write cycle)들을 유지할 수 있고, 상기 제한된 수의 기록 사이클들 이후에, 전하 저장 소자들은 더 이상 데이터를 신뢰 가능하게 저장할 수 없다.
제한된 수의 기록 사이클들은 제거 가능한 USB(유니버셜 시리얼 버스) 드라이브들, MP3(MPEG 계층 3) 플레이어들, 및 디지털 카메라 메모리 카드들과 같은 많은 애플리케이션들에 대해 수용 가능할 수 있다. 그러나, 컴퓨터 시스템들 내의 대용량 비휘발성 저장장치(bulk nonvolatile storage)에 대한 일반적인 대체물(replacement)들로서 사용될 때, 제한된 수의 기록 사이클들은 수용 가능하지 않을 수 있다.
저장 셀(strorage cell) 당 단일 비트가 저장되는 저 밀도 플래시 소자들은 전형적으로 100,000 기록 사이클 정도의 사용 가능한 수명을 갖는다. 비용을 감소시키기 위하여, 플래시 소자들은 저장 셀 당 2 비트를 저장할 수 있다. 그러나, 저장 셀 당 2 비트를 저장하는 것은 소자의 사용 가능한 수명을 10,000 기록 사이클 정도의 레벨로 감소시킬 수 있다.
플래시 소자들은 특히 대량 저장장치의 부분이 가상 메모리 페이징 공간(virtual memory paging space)으로서 사용되는 경우에, 대량 저장장치의 역할을 할만큼 충분히 긴 수명을 가질 수 없다. 가상 메모리 페이징 공간은 전형적으로 RAM(랜덤 액세스 메모리) 내의 이용 가능한 공간이 적을 때 RAM으로부터 데이터를 저장하기 위하여 운영 시스템들에 의해 사용된다. 단지 설명을 위하여, 플래시 메모리 칩은 2 GB(기가바이트)의 용량을 가질 수 있고, 셀 당 2 비트를 저장할 수 있고, 약 4 MB/s(초 당 메가바이트)의 기록 처리량(write throughput)을 가질 수 있다. 이와 같은 플래시 메모리 칩에서, 500 초마다 한 번 칩 내에 모든 비트를 기록하는 것(즉, 2E9 bytes/4E6 bytes/s)이 이론적으로 가능하다.
그 다음에, 2 개월보다 더 적은 단지 5E6 초(1E4 사이클들 * 5E2 초)에서 모든 비트를 10,000 번 기록하는 것이 이론적으로 가능하다. 그러나, 실제로, 대부분의 드라이브 저장장치는 100% 듀티 사이클(duty cycle)로 기록되지는 않을 것이다. 더 실제적인 기록 듀티 사이클은 컴퓨터가 지속적으로 활성이고 가상 메모리 페이징 동작들을 수행할 때 발생할 수 있는 10%일 수 있다. 10% 기록 듀티 사이클에서, 플래시 소자의 사용 가능한 수명은 대략적으로 20 개월에서 소진될 수 있다. 대조적으로, 자기 하드 디스크 저장 소자(magnetic hard disk storage device)에 대한 수명 예상치는 전형적으로 10 년을 초과한다.
도 1은 종래의 고체-상태 디스크(100)의 기능적인 블록도를 도시한다. 고체-상태 디스크(100)는 제어기(102) 및 플래시 메모리(104)를 포함한다. 제어기(102)는 호스트(host)(미도시)로부터 명령들 및 데이터를 수신한다. 메모리 액세스(memory access)가 요청될 때, 제어기(102)는 데이터를 판독하거나 데이터를 플래시 메모리(104)에 기록하고, 이 정보를 호스트에 전달한다.
플래시 메모리(104)의 에어리어(area)(또는 메모리 블록)는 자신이 소정 횟수 기록 또는 소거된 이후에 저장에 대해 신뢰 불가능해질 수 있다. 이 소정 횟수는 플래시 메모리(104)의 기록 사이클 수명이라고 칭해진다. 일단 플래시 메모리(104)의 기록 사이클 수명이 초과되었다면, 제어기(102)는 더 이상 플레시 메모리(104)에 데이터를 신뢰 가능하게 저장할 수 없고, 고체-상태 디스크(100)는 더 이상 사용 가능하지 않을 수 있다.
다양한 실시예들에서, 본 명세서는 고체 상태 메모리 시스템에 관한 것이다. 상기 시스템은 제 1 기록 사이클 수명 및 제 1 세트의 물리적 어드레스(physical address)들을 가지는 제 1 비휘발성 반도체 메모리, 및 제 2 기록 사이클 수명 및 제 2 세트의 물리적 어드레스들을 가지는 제 2 비휘발성 반도체 메모리를 포함한다. 상기 제 1 기록 사이클 수명이 상기 제 2 기록 사이클 수명보다 더 크다. 상기 시스템은 복수의 논리적 어드레스들에 대한 기록 빈도 랭킹(write frequency ranking)을 발생시키는 피로 관리 모듈(fatigue management module)을 더 포함한다. 상기 피로 관리 모듈은 상기 기록 빈도 랭킹들을 기반으로 하여 상기 복수의 논리적 어드레스들 각각을 상기 제 1 세트의 물리적 어드레스들 또는 상기 제 2 세트의 물리적 어드레스들의 물리적 어드레스로 맵핑(mapping)한다.
다양한 실시예들에서, 본 명세서는 고체 상태 메모리 시스템에 대한 피로 관리 방법에 관한 것이다. 상기 방법은 제 1 기록 사이클 수명 및 제 1 세트의 물리적 어드레스들을 가지는 제 1 비휘발성 반도체 메모리를 제공하는 단계, 및 제 2 기록 사이클 수명 및 제 2 세트의 물리적 어드레스들을 가지는 제 2 비휘발성 반도체 메모리를 제공하는 단계를 포함한다. 상기 제 1 기록 사이클 수명이 상기 제 2 기록 사이클 수명보다 더 크다. 상기 방법은 복수의 논리적 어드레스들에 대한 기록 빈도 랭킹을 발생시키는 단계, 및 상기 기록 빈도 랭킹들을 기반으로 하여 상기 복수의 논리적 어드레스들 각각을 상기 제 1 세트의 물리적 어드레스들 또는 상기 제 2 세트의 물리적 어드레스들의 물리적 어드레스로 맵핑하는 단계를 더 포함한다.
또 다른 특징들에서, 상술된 시스템들 및 방법들은 하나 이상의 프로세서들에 의해 실행되는 컴퓨터 프로그램(computer program)에 의해 구현된다. 상기 컴퓨터 프로그램은 메모리, 비휘발성 데이터 저장장치 및/또는 다른 적절한 유형 저장 매체(tangible storage medium)들과 같지만, 이에 제한되지 않는 컴퓨터 판독 가능한 매체에 상주할 수 있다.
또 다른 특징들에서, 상술된 시스템들 및 방법들은 하나 이상의 프로세서들에 의해 실행되는 컴퓨터 프로그램에 의해 구현된다. 상기 컴퓨터 프로그램은 메모리, 비휘발성 데이터 저장장치 및/또는 다른 적절한 유형 저장 매체들과 같지만, 이에 제한되지 않는 컴퓨터 판독 가능한 매체에 상주할 수 있다.
본 명세서의 이용 가능성의 부가적인 에어리어들은 이하에 제공되는 상세한 설명으로부터 명백해질 것이다. 상세한 설명 및 특정 예들이 본 명세서의 바람직한 실시예를 나타내면서, 단지 설명을 위한 것이며, 본 명세서의 범위를 제한하고자 하는 것이 아니라는 점이 이해되어야 한다.
본 명세서는 상세한 설명 및 첨부 도면들로부터 더 충분히 이해될 것이다.
도 1은 종래 기술에 따른 고체 상태 디스크 드라이브의 기능적인 블록도.
도 2는 본 명세서에 따른 고체 상태 디스크 드라이브의 기능적인 블록도.
도 3은 웨어 레벨링 모듈(wear leveling module)을 포함하는 고체 상태 디스크 드라이브의 기능적인 블록도.
도 4A는 도 3의 웨어 레벨링 모듈 및 기록 모니터링 모듈(write monitoring module)을 포함하는 고체 상태 디스크 드라이브의 기능적인 블록도.
도 4B는 도 3의 웨어 레벨링 모듈 및 기록 맵핑 모듈을 포함하는 고체 상태 디스크 드라이브의 기능적인 블록도.
도 5는 열화 테스팅 모듈(degradation testing module) 및 도 3의 웨어 레벨링 모듈을 포함하는 고체 상태 디스크 드라이브의 기능적인 블록도.
도 6은 맵핑 모듈 및 도 3의 웨어 레벨링 모듈을 포함하는 고체 상태 디스크 드라이브의 기능적인 블록도.
도 7A 내지 7E는 도 2 내지 5에 도시된 고체 상태 디스크 드라이브들을 동작시키는 방법의 예시적인 흐름도들.
도 8은 도 6에 도시된 고체 상태 디스크 드라이브를 동작시키는 방법의 예시적인 흐름도.
도 9는 고체 상태 디스크 드라이브를 포함하는 시스템의 기능적인 블록도.
도 10은 본 명세서에 따른 피로 관리 모듈을 포함하는 고체 상태 디스크 드라이브의 기능적인 블록도.
도 11은 본 명세서에 따른 메모리들 각각에 대한 독립적인 웨어 레벨링 모듈들을 갖는 피로 관리 모듈을 포함하는 고체 상태 디스크 드라이브의 기능적인 블록도.
도 12는 본 명세서에 따른 예시적인 맵핑/기록 빈도 랭킹 테이블.
도 13은 도 10의 고체 상태 디스크 드라이브를 동작시키는 방법의 예시적인 흐름도.
다음의 설명은 사실상 단지 예시적이며, 결코 본 명세서, 이의 애플리케이션, 또는 용도들을 제한하고자 하는 것이 아니다. 명확화를 위하여, 유사한 요소들을 식별하기 위하여 도면들에서 동일한 참조 번호들이 사용될 것이다. 본원에 사용된 바와 같은 구 A, B, 및 C 중 적어도 하나는 비-배타적 논리합(non-exclusive logical or)을 사용하여 논리적 (A 또는 B 또는 C)를 의미하도록 구성되어야 한다. 방법 내의 단계들이 본 명세서의 원리들을 변경함이 없이 상이한 순서로 실행될 수 있다는 점이 이해되어야 한다. 본원에 사용된 바와 같이, 용어 "기반으로 하는" 또는 "실질적으로 기반으로 하는"은 또 다른 값의 함수인, 또 다른 값에 비례하는, 또 다른 값에 따라 변화하는, 및/또는 또 다른 값에 대한 관계를 가지는 값을 칭한다. 상기 값은 또한 하나 이상의 다른 값들의 함수일 수 있고, 하나 이상의 다른 값들에 비례할 수 있고, 하나 이상의 다른 값들에 따라 변화할 수 있고, 및/또는 하나 이상의 다른 값들과 관계를 가질 수 있다.
본원에 사용된 바와 같은 용어 모듈은 주문형 반도체(Application Specific Integrated Circuit: ASIC), 전자 회로, 하나 이상의 소프트웨어 또는 펌웨어 프로그램들을 실행하는 프로세서(공유, 전용, 또는 그룹)와 메모리, 결합적 논리 회로, 및/또는 설명된 기능을 제공하는 다른 적절한 구성요소들을 칭한다.
질화물 판독-전용 메모리(Nitride Read-Only Memory: NROM) 및 NAND 플래시와 같은 전하-저장-기반 플래시 소자들의 비용이 최근 몇 년에 감소하고 있다. 동시에, 새로운 고-밀도 메모리 기술들이 개발되고 있다. 상 변화 메모리(Phase Change Memory: PCM)와 같이, 이러한 메모리 기술들 중 일부는 전하-저장-기반 플래시 소자들보다 상당히 더 높은 기록 내구성 능력(write endurance capability)을 제공할 수 있다. 그러나, 더 새로운 기술들이기 때문에, 이러한 메모리들의 저장 용량, 액세스 시간, 및/또는 비용이 플래시 소자들의 저장 용량, 액세스 시간, 및/또는 비용보다 덜 매력적일 수 있다.
새로운 메모리 기술들의 더 긴 기록 사이클 수명을 종래의 기술들의 저비용과 결합하기 위하여, 고체-상태 메모리 시스템이 메모리의 유형들 둘 모두를 사용하여 구성될 수 있다. 많은 양의 저비용 메모리가 더 높은 기록 사이클 수명을 갖는 더 적은 양의 메모리와 결합될 수 있다. 더 높은 기록 사이클 수명을 갖는 메모리는 운영 시스템 페이징 데이터와 같은 빈번하게 변화하는 데이터를 저장하는데 사용될 수 있다.
도 2는 예시적인 고체-상태 메모리 시스템을 도시한다. 상기 고체-상태 메모리 시스템은 컴퓨터 시스템 또는 데이터를 저장할 필요가 있을 수 있는 다른 장치, 예를 들어, 셀 전화, 셋 톱 박스(set top box), 자동차 구성요소, 무선 개인용 디지털 보조장치(PDA), 등에서 고체-상태 디스크로서 사용될 수 있다. 단지 예를 들어, 2 GB PCM 칩과 같은 PCM 칩이 NAND 플래시 소자들 또는 NROM 플래시 소자들과 결합될 수 있다. PCM 메모리의 기록 사이클 수명은 곧 1E13 기록 사이클들 정도일 수 있다. 1E7 기록 사이클을 초과하는 기록 사이클 수명을 갖는 PCM 칩이 이용 가능하다. 1E7 기록 사이클들에서, PCM 칩은 1E4 기록 사이클들을 견딜 수 있는 2 비트/셀 플래시 소자보다 1000배 더 긴 기록 사이클 수명을 갖는다.
PCM 칩들은 플래시 소자보다 더 빠른 데이터 처리량을 제공할 수 있다. 예를 들어, PCM 칩은 플래시 소자보다 100배 더 빠른 데이터 처리량을 제공할 수 있다. PCM 칩이 플래시 소자보다 100배 더 빠른 데이터 처리량을 제공할지라도, 1000배 더 큰 기록 사이클 수명은 플래시 소자보다 10배 더 긴 유효 기록 사이클 수명을 산출한다. 예를 들어, 10% 기록 듀티 사이클에서, PCM 칩이 플래시 소자보다 100배 더 빠른 데이터 처리량을 제공할지라도, PCM 칩의 수명을 소진하는데 15.9년이 걸릴 것이다.
도 2는 본 명세서의 하나의 구현예에 따른 예시적인 고체-상태 디스크(200)의 기능적인 블록도를 도시한다. 고체-상태 디스크(200)는 제어기(202) 및 제 1 및 제 2 고체-상태 비휘발성 메모리들(204, 206)을 포함한다. 본 명세서의 나머지 전체에 걸쳐, 고체-상태 비휘발성 메모리들은 집적 회로(Integrated Circuit: IC)들로서 구현될 수 있다. 제어기(202)는 호스트(220)로부터 액세스 요청들을 수신한다. 제어기(202)는 이하에 더 상세히 설명되는 바와 같이, 상기 액세스 요청들을 제 1 고체-상태 비휘발성 메모리(204) 또는 제 2 고체-상태 비휘발성 메모리(206)로 지향시킨다.
단지 예를 들어, 제 1 고체-상태 비휘발성 메모리(204)는 상대적으로 저렴한 비휘발성 메모리 어레이들을 포함할 수 있고, 큰 용량을 가질 수 있다. 제 2 고체-상태 비휘발성 메모리(206)는 제 1 고체-상태 비휘발성 메모리(204)보다 더 고가이고 더 작은 용량을 가지면서, 더 큰 기록 사이클 수명을 가질 수 있다. 다양한 구현예들에서, 호스트(220)는 상대적으로 빈번하게 변화할 데이터에 대응하는 논리적 어드레스들 및 상대적으로 드물게 변화할 데이터에 대응하는 논리적 어드레스들을 제어기(202)에 지정할 수 있다.
제어기(202)는 상대적으로 빈번하게 변화할 데이터에 대응하는 논리적 어드레스들을 제 2 고체-상태 비휘발성 메모리(206) 내의 물리적 어드레스들로 맵핑할 수 있다. 제어기(202)는 상대적으로 드물게 변화할 데이터에 대응하는 논리적 어드레스를 제 1 고체-상태 비휘발성 메모리(204) 내의 물리적 어드레스들로 맵핑할 수 있다.
제 1 고체-상태 비휘발성 메모리(204)는 단일-레벨 셀(Single-Level Cell: SLC) 플래시 메모리 또는 다중-레벨 셀(Multi-Level Cell: MLC) 플래시 메모리를 포함할 수 있다. 제 2 고체-상태 비휘발성 메모리(206)는 단일-레벨 셀(SLC) 플래시 메모리 또는 다중-레벨 셀(MLC) 플래시 메모리를 포함할 수 있다.
상세한 논의 이전에, 도면들의 간소화된 설명이 제공된다. 도 3은 웨어 레벨링 모듈(260)을 포함하는 예시적인 고체-상태 디스크(250)를 도시한다. 하나의 구현예에서, 웨어 레벨링 모듈(260)은 호스트(220)로부터의 논리적 어드레스들의 제 1 및 제 2 고체-상태 메모리들(204, 206) 내의 물리적 어드레스들로의 맵핑을 제어한다. 웨어 레벨링 모듈(260)은 호스트로부터의 정보를 기반으로 하여 이 맵핑을 수행할 수 있다.
대안적으로 또는 추가적으로, 웨어 레벨링 모듈(260)은 고체-상태 비휘발성 메모리들(204, 206) 둘 모두의 모든 에어리어들에 걸친 웨어를 측정 또는 추정할 수 있고, 고체-상태 비휘발성 메모리들(204, 206) 둘 모두의 모든 에어리어들에 걸친 웨어를 등화하기 위하여 맵핑을 변화시킬 수 있다. 하나의 구현예에서, 웨어 레벨링 모듈(260)의 목적은 고체-상태 비휘발성 메모리들(204, 206)의 모든 에어리어들에 걸친 웨어를 레벨링하여, 하나의 에어리어가 고체-상태 비휘발성 메모리들(204, 206)의 다른 에어리어들 이전에 웨어 아웃(wear out)되지 않도록 하는 것이다.
다양한 비휘발성 메모리들의 경우에, 메모리 블록에 데이터를 기록하는 것은 전체 메모리 블록에 소거하거나 기록하는 것을 필요로 할 수 있다. 이와 같은 블록-중심 메모리에서, 웨어 레벨링 모듈(260)은 각각의 메모리 블록이 소거 또는 기록되었던 횟수를 추적할 수 있다. 기록 요청이 호스트로부터 도착할 때, 웨어 레벨링 모듈(260)은 이용 가능한 메모리 블록들 중으로부터 가장 적게 기록되었던 메모리의 메모리 블록을 선택할 수 있다. 그 후, 웨어 레벨링 모듈(260)은 인입 논리적 어드레스를 이 메모리 블록의 물리적 어드레스로 맵핑한다. 시간이 지남에 따라, 이것은 메모리 블록들에 걸친 기록 동작들의 거의 균일한 분포를 생성할 수 있다.
도 4A 및 4B는 웨어 레벨링을 제어하는 것을 돕는 추가적인 모듈들을 포함한다. 도 4A에서, 웨어 레벨링 모듈(260)은 데이터가 논리적 어드레스들 각각으로 얼마나 빈번하게 기록되는지를 결정한다. 하나의 구현예에서, 상대적으로 빈번한 기록들 또는 소거들의 타겟(target)인 논리적 어드레스들은 그 만큼의 웨어를 경험하지 않았던 물리적 어드레스들로 맵핑된다.
도 4B에서, 기록 맵핑 모듈(356)이 호스트(220)로부터 기록 빈도 정보를 수신한다. 기록 빈도 정보는 상대적으로 빈번하게 변화할 것으로 예상되는 데이터에 대응하는 논리적 어드레스 및/또는 상대적으로 드물레 변화할 것으로 예상되는 데이터에 대응하는 논리적 어드레스를 식별한다. 게다가, 기록 맵핑 모듈(356)은 도 4A에 도시된 바와 같이, 데이터가 실제로 논리적 어드레스들로 얼마나 빈번하게 기록되는지를 결정할 수 있다. 도 5는 기록들 또는 소거들의 수를 기반으로 하여 남아있는 수명을 추정하는 것 이외에, 또는 그 대신에, 메모리 및 결과적인 남아있는 수명의 열화가 경험적으로 결정되는 고체-상태 디스크(400)를 도시한다.
도 6은 제 1 및 제 2 고체-상태 비휘발성 메모리들(462, 464)의 조합이 데이터를 캐싱(caching)하는데 사용되는 고체-상태 디스크(450)를 도시한다. 하나의 구현예에서, 제 1 고체-상태 비휘발성 메모리(462)는 높은 저장 용량(예를 들어, 2 GB 이상)을 갖는다. 하나의 구현예에서, 제 2 고체-상태 비휘발성 메모리(464)는 제 1 고체-상태 비휘발성 메모리(462)보다 더 빠른 액세스 시간을 가지며, 제 1 고체-상태 비휘발성 메모리(462)보다 더 작은 저장 용량(예를 들어, 2 GB 이하)을 갖는다. 제 1 및 제 2 고체-상태 메모리들(462, 464)은 둘 모두 높은 기록 사이클 수명들을 가질 수 있다.
맵핑 모듈(465)은 액세스 시간 고려사항들을 기반으로 하여 호스트로부터의 논리적 어드레스들을 제 1 및 제 2 고체-상태 비휘발성 메모리들(462, 464)로 맵핑하는데 사용될 수 있다. 맵핑 모듈(465)은 고속 액세스 시간들이 바람직하거나 바람직하지 않은 어드레스들의 목록과 같은 액세스 시간 정보를 호스트(480)로부터 수신할 수 있다. 대안적으로 또는 추가적으로, 맵핑 모듈(465)은 논리적 어드레스들로의 액세스들을 모니터링할 수 있고, 감소된 액세스 시간들이 어느 논리적 어드레스들에 대해 가장 유리할 것인지를 결정할 수 있다. 낮은 액세스 시간들이 중요한 논리적 어드레스들은 (하나의 구현예에서) 감소된 액세스 시간들을 가지는 제 2 고체-상태 비휘발성 메모리(464)로 맵핑될 수 있다.
본원에 사용된 바와 같은 액세스 시간들은 예를 들어, 판독 시간들, 기록 시간들, 소거 시간들, 및/또는 판독, 기록, 또는 소거 시간들 중 하나 이상을 통합한 결합된 액세스 시간들을 포함할 수 있다. 예를 들어, 결합된 액세스 시간은 판독, 기록, 및 소거 시간들의 평균일 수 있다. 맵핑될 특정 논리적 어드레스들을 제 2 고체-상태 비휘발성 메모리(464)로 지향시킴으로써, 호스트(480)는 고속 부트 시간 또는 애플리케이션 시동(fast boot time or application startup)과 같은 동작들에 대해 저장장치를 최적화할 수 있다. 맵핑 모듈(465)은 또한 제 1 및 제 2 고체-상태 비휘발성 메모리들(462, 464) 내의 어느 한 에어리어가 조기에 웨어 아웃되지 않도록 하기 위하여 맵핑을 적응시키는 웨어 레벨링 모듈(260)과 통신할 수 있다.
도 7A 내지 7E는 도 4A 내지 5에 도시된 제어기들에 의해 수행되는 예시적인 단계들을 도시한다. 도 8은 도 6에 도시된 제어기에 의해 수행되는 예시적인 단계들을 도시한다. 도 2 내지 8에 도시된 시스템들 및 방법들의 상세한 논의가 이제 제공된다.
이제 도 3을 참조하면, 고체-상태 디스크(250)는 제어기(252) 및 제 1 및 제 2 고체-상태 비휘발성 메모리들(204 및 206)을 포함한다. 제어기(252)는 호스트(220)와 통신한다. 제어기(252)는 웨어 레벨링 모듈(260) 및 제 1 및 제 2 메모리 인터페이스들(262, 264)을 포함한다. 웨어 레벨링 모듈(260)은 제 1 및 제 2 메모리 인터페이스들(262, 264)을 통하여 각각 제 1 및 제 2 고체-상태 비휘발성 메모리들(204 및 206)과 통신한다.
웨어 레벨링 모듈(260)은 호스트(220)로부터 논리적 어드레스들을 수신한다. 논리적 어드레스들은 제 1 메모리 인터페이스(262) 및/또는 제 2 메모리 인터페이스(264)와 관련된 물리적 어드레스들로 변환된다. 기록 동작 동안, 호스트(220)로부터의 데이터가 제 1 메모리 인터페이스(262)를 통하여 제 1 고체-상태 비휘발성 메모리(204)에 기록되고, 제 2 메모리 인터페이스(264)를 통하여 제 2 고체-상태 비휘발성 메모리(206)에 기록된다. 판독 동작 동안, 데이터는 제 1 또는 제 2 고체-상태 비휘발성 메모리(204, 206)로부터 각각 제 1 또는 제 2 메모리 인터페이스(262, 264)를 통하여 호스트(220)에 제공된다.
단지 예를 들어, 제 1 고체-상태 비휘발성 메모리(204)는 용량의 메가바이트 당 상대적으로 저렴할 수 있으므로, 큰 용량을 가질 수 있다. 제 2 고체-상태 비휘발성 메모리(206)는 제 1 고체-상태 비휘발성 메모리(204)보다 더 긴 기록 사이클 수명을 가질 수 있고, 더 고가일 수 있으므로, 따라서 더 작은 용량을 가질 수 있다.
제 1 및 제 2 고체-상태 비휘발성 메모리들(204 및 206)은 블록들로 기록 및/또는 소거될 수 있다. 예를 들어, 메모리 블록에서 1 바이트를 소거하기 위하여, 메모리 블록의 모든 바이트들이 소거될 필요가 있을 수 있다. 게다가, 메모리 블록의 1 바이트를 기록하기 위하여, 메모리 블록의 모든 바이트들이 기록될 필요가 있을 수 있다. 웨어 레벨링 모듈(260)은 제 1 및 제 2 고체-상태 비휘발성 메모리들(204, 206)의 메모리 블록들에 대해 수행된 기록 및/또는 소거 동작들을 수를 추적 및 저장할 수 있다.
웨어 레벨링 모듈(260)은 기록 및/또는 소거 사이클 카운트(write and/or erase cycle count)들의 표준화된 버전(version)을 사용할 수 있다. 예를 들어, 제 1 고체-상태 비휘발성 메모리(204) 내의 메모리 블록에 대해 수행된 기록 사이클들의 수는 제 1 고체-상태 비휘발성 메모리(204) 내의 메모리 블록이 견딜 수 있는 기록 사이클들의 총수로 나누어질 수 있다. 제 2 고체-상태 비휘발성 메모리(206) 내의 메모리 블록에 대한 표준화된 기록 사이클 카운트는 상기 메모리 블록에 대해 이미 수행된 기록 사이클들의 수를 상기 메모리 블록이 견딜 수 있는 기록 사이클들의 수로 나눔으로써 획득될 수 있다.
웨어 레벨링 모듈(260)은 가장 낮은 표준화된 기록 사이클 카운트를 가지는 메모리 블록으로 새로운 데이터를 기록할 수 있다. 분수 기록 사이클 카운트들을 피하기 위하여, 기록 사이클 카운트들은 상기 기록 사이클 카운트들을 각각의 메모리들(204 및 206)의 기록 사이클 수명을 기반으로 한 상수들과 승산함으로써 표준화될 수 있다. 예를 들어, 제 1 고체-상태 비휘발성 메모리(204)의 메모리 블록에 대해 수행된 기록 사이클들의 수가 비율과 승산될 수 있다. 상기 비율은 제 1 고체-상태 비휘발성 메모리(204)의 기록 사이클 수명으로 나누어진 제 2 고체-상태 비휘발성 메모리(206)의 기록 사이클 수명일 수 있다.
다양한 구현예들에서, 기록 사이클 카운트는 단지 부분적으로 표준화될 수 있다. 예를 들어, 제 2 고체-상태 비휘발성 메모리(206)의 기록 사이클 수명은 제 1 고체-상태 비휘발성 메모리(204)의 기록 사이클 수명보다 상당히 더 높을 수 있다. 이와 같은 경우에, 제 1 고체-상태 비휘발성 메모리(204)의 기록 사이클 카운트는 실제 기록 사이클 수명보다 더 적은 기록 사이클 수명을 사용하여 표준화될 수 있다. 이것은 웨어 레벨링 모듈(260)이 어드레스들을 제 2 고체-상태 비휘발성 메모리(206)로 할당하는 쪽으로 너무 과중하게 바이어싱(biasing)되지 않도록 할 수 있다.
표준화는 소정 팩터(factor)를 사용하여 수행될 수 있다. 예를 들어, 제 1 고체-상태 비휘발성 메모리(204)의 기록 사이클 수명이 1E6이고, 고체-상태 디스크(250)의 소정 애플리케이션에 대하여, 제 2 고체-상태 비휘발성 메모리(206)의 필요한 기록 사이클 수명이 1E9인 경우에, 표준화는 1,000의 팩터를 사용하여 수행될 수 있다. 상기 팩터는 정확한 계산치가 아니라, 반올림된 추정치일 수 있다. 예를 들어, 1000의 팩터는 각각의 기록 사이클 수명들이 4.5E6 및 6.3E9일 때 사용될 수 있다.
웨어 레벨링 모듈(260)은 데이터 시프팅 모듈(data shifting module)(261)을 포함할 수 있다. 하나의 구현예에서, 데이터 시프팅 모듈(261)은 소정 시간 기간에 걸쳐 변화되지 않은 채로 유지되는 저장된 데이터를 가지는 제 1 메모리 블록을 식별한다. 이와 같은 저장된 데이터는 정적 데이터라고 칭해질 수 있다. 정적 데이터는 제 1 메모리 블록보다 더 빈번한 기록 사이클들을 경험하였던 메모리의 제 2 메모리 블록으로 이동될 수 있다. 웨어 레벨링 모듈(260)은 제 1 메모리 블록의 물리적 어드레스로 원래 맵핑되었던 논리적 어드레스들을 제 2 메모리 블록의 물리적 어드레스들로 맵핑할 수 있다. 정적 데이터가 이제 제 2 메모리 블록에 저장되기 때문에, 제 2 메모리 블록은 더 적은 기록 사이클들을 경험할 수 있다.
추가적으로, 정적 데이터는 제 2 고체-상태 비휘발성 메모리(206)로부터 제 1 고체-상태 비휘발성 메모리(204)로 시프팅될 수 있다. 예를 들어, 데이터 시프팅 모듈(261)은 제 2 고체-상태 비휘발성 메모리(206)의 가장 적게 사용된 메모리 블록(Least Used memory Block: LUB)을 식별할 수 있다. 소정 기간 동안 메모리 블록에 대해 수행된 기록 사이클들의 수가 소정 임계값보다 더 적거나 소정 임계값과 동일한 경우에, 상기 메모리 블록은 LUB라고 칭해진다. 제 2 고체-상태 비휘발성 메모리(206) 내의 사용 가능하거나 이용 가능한 메모리의 양이 소정 임계값으로 감소할 때, 웨어 레벨링 모듈(260)은 LUB를 제 1 고체-상태 비휘발성 메모리(204)의 메모리 블록으로 맵핑할 수 있다.
때때로, 제 1 고체-상태 비휘발성 메모리(204)의 제 1 메모리 블록에 대해 수행된 기록 동작들의 수가 소정 임계값을 초과할 수 있다. 웨어 레벨링 모듈(260)은 제 1 메모리 블록으로 원래 맵핑되었던 논리적 어드레스들의 제 2 고체-상태 비휘발성 메모리(206)의 제 2 메모리 블록으로의 맵핑을 바이어싱함으로써, 제 1 고체-상태 비휘발성 메모리(204) 상에서 웨어를 감소시킬 수 있다.
이제 도 4A를 참조하면, 고체-상태 디스크(300)는 호스트(220)와 인터페이싱하는 제어기(302)를 포함한다. 제어기(302)는 웨어 레벨링 모듈(260), 기록 모니터링 모듈(306), 및 제 1 및 제 2 메모리 인터페이스들(262 및 264)을 포함한다. 기록 모니터링 모듈(306)은 호스트(220)로부터 수신되는 논리적 어드레스들을 모니터링한다. 기록 모니터링 모듈(306)은 또한 판독 동작이 발생하고 있는지 또는 기록 동작이 발생하고 있는지를 표시하는 제어 신호들을 수신할 수 있다. 추가적으로, 기록 모니터링 모듈(306)은 데이터가 논리적 어드레스들로 기록되는 빈도들을 측정함으로써 데이터가 빈번하게 기록되는 논리적 어드레스들을 추적한다. 이 정보는 논리적 어드레스를 예를 들어, 제 2 고체-상태 비휘발성 메모리(206)의 물리적 어드레스들로 바이어싱하는 웨어 레벨링 모듈(260)에 제공된다.
이제 도 4B를 참조하면, 고체-상태 디스크(350)는 호스트(220)와 인터페이싱하는 제어기(352)를 포함한다. 제어기(352)는 웨어 레벨링 모듈(260), 기록 맵핑 모듈(356), 및 제 1 및 제 2 메모리 인터페이스들(262 및 264)을 포함한다. 기록 맵핑 모듈(356)은 더 빈번하게 기록될 논리적 어드레스들을 표시하는 어드레스 정보를 호스트(220)로부터 수신한다. 이 정보는 논리적 어드레스들을 제 2 고체-상태 비휘발성 메모리(206)로 바이어싱하는 웨어 레벨링 모듈(260)에 제공된다.
기록 맵핑 모듈(356)은 또한 도 4A의 기록 모니터링 모듈(306)과 유사한 기능을 포함할 수 있다. 그러므로, 기록 맵핑 모듈(356)은 측정된 기록 빈도 데이터를 기반으로 하여 저장된 기록 빈도 데이터를 갱신할 수 있다. 추가적으로, 기록 맵핑 모듈(356)은 호스트(220)에 의해 제공되지 않았던 논리적 어드레스들에 대한 기록 빈도들을 결정할 수 있다. 하나의 구현예에서, 기록 빈도 데이터는 논리적 어드레스가 소정 기간 동안 액세스되지 않았을지라도 조정될 수 있다. 웨어 레벨링 모듈(260)은 빈번하게 기록된 것으로 플래깅(flagging)되는 논리적 어드레스들에 대응하는 모든 데이터를 제 2 고체-상태 비휘발성 메모리(206)에 저장할 수 있다.
제 2 고체-상태 비휘발성 메모리(206)가 가득 찬 경우에, 기록 동작들은 제 1 고체-상태 비휘발성 메모리(204)로 할당될 수 있고, 그 역도 또한 마찬가지이다. 데이터는 또한 제 2 고체-상태 비휘발성 메모리(206)에서 공간을 생성하기 위하여 제 2 고체-상태 비휘발성 메모리(206)로부터 제 1 고체-상태 비휘발성 메모리(204)로 재맵핑 및 이동될 수 있고, 그 역도 또한 마찬가지이다. 대안적으로, 데이터는 단지 제 2 또는 제 1 고체-상태 비휘발성 메모리(206, 204)의 웨어 레벨이 소정 임계값보다 더 크거나 소정 임계값과 동일할 때 제 1 또는 제 2 고체-상태 비휘발성 메모리(204, 206)로 맵핑될 수 있다. 제 1 및 제 2 고체-상태 비휘발성 메모리(204, 206)의 웨어 레벨에 대한 소정 임계값은 동일하거나 상이할 수 있다는 점이 주의되어야 한다. 더욱이, 소정 임계값은 상이한 시점에서 변화할 수 있다. 예를 들어, 특정 수의 기록 동작들이 제 1 고체-상태 비휘발성 메모리(204)에 대해 수행되었다면, 소정 임계값은 수행된 기록 동작들을 고려하도록 조정될 수 있다.
웨어 레벨링 모듈(260)은 또한 기록 모니터링 모듈(306) 및 기록 맵핑 모듈(356)을 구현할 수 있다. 이하에서, 웨어 레벨링 모듈(260)은 또한 기록 모니터링 모듈(306) 및 기록 맵핑 모듈(356)을 포함할 수 있다.
이제 도 5를 참조하면, 고체-상태 디스크(400)는 호스트(220)와 인터페이싱하는 제어기(402)를 포함한다. 제어기(402)는 웨어 레벨링 모듈(260), 열화 테스팅 모듈(406), 및 제 1 및 제 2 메모리 인터페이스들(262, 264)을 포함한다. 열화 테스팅 모듈(406)은 제 1 및 제 2 고체-상태 비휘발성 메모리의 저장 능력이 열화되었는지를 결정하기 위하여 제 1 및 제 2 고체-상태 비휘발성 메모리들(204, 206)을 테스팅한다.
다양한 구현예들에서, 열화 테스팅 모듈(406)은 (하나의 구현예에서의) 제 1 고체-상태 비휘발성 메모리(204)의 기록 사이클 수명이 제 2 고체-상태 비휘발성 메모리(206)의 기록 사이클 수명보다 더 적기 때문에 제 1 고체-상태 비휘발성 메모리(204)만을 테스팅할 수 있다. 열화 테스팅 모듈(406)은 열화에 대해 주기적으로 테스팅할 수 있다. 열화 테스팅 모듈(406)은 비활동(inactivity) 기간들 동안 대기할 수 있고, 그 포인트에서, 열화 테스팅 모듈(406)은 제 1 및/또는 제 2 메모리 인터페이스들(262, 264)에 어드레스들 및 데이터를 제공할 수 있다.
열화 테스팅 모듈(406)은 제 1 및/또는 제 2 고체-상태 비휘발성 메모리들(204, 206)의 선택된 에어리어들로 데이터를 기록하고 나서, 상기 데이터를 판독할 수 있다. 그 후, 열화 테스팅 모듈(406)은 판독된 데이터를 기록된 데이터와 비교할 수 있다. 게다가, 열화 테스팅 모듈(406)은 열화 테스팅의 이전 반복들에서 기록된 데이터를 판독할 수 있다.
대안적으로, 열화 테스팅 모듈(406)은 제 1 및 제 2 시간들에서 동일한 물리적 어드레스에 동일한 데이터를 기록할 수 있다. 2개의 시간들 각각에서, 열화 테스팅 모듈(406)은 기록된 데이터를 재판독할 수 있다. 열화 테스팅 모듈(406)은 2개의 시간들에서 재판독된 데이터를 비교하거나 또는 제 2 시간에 재판독된 데이터를 기록된 데이터와 비교함으로써 물리적 어드레스에 대한 열화 값을 결정할 수 있다.
웨어 레벨링 모듈(260)은 열화 테스팅 모듈(406)에 의해 측정되는 열화 값을 기반으로 하여 자신의 맵핑을 적응시킬 수 있다. 예를 들어, 열화 테스팅 모듈(406)은 열화의 양을 기반으로 하여 메모리 블록에 대한 최대 기록 사이클 카운트를 추정할 수 있다. 그 후, 웨어 레벨링 모듈(260)은 표준화를 위해 이 최대 기록 사이클 카운트를 사용할 수 있다.
대안적으로, 웨어 레벨링 모듈(260)은 할당 판정들을 행하기 위하여 메모리 블록에 대한 남아있는 기록 사이클들의 수를 사용할 수 있다. 고체-상태 비휘발성 메모리들(204, 206) 중 하나가 자신의 사용 가능한 수명의 종단(예를 들어, 소정 임계값)에 접근하고 있는 경우에, 웨어 레벨링 모듈(260)은 모든 새로운 기록들을 고체-상태 비휘발성 메모리들(204, 206) 중 다른 하나로 할당할 수 있다.
웨어 레벨링 모듈(260)은 또한 열화 테스팅 모듈(406)을 구현할 수 있다. 이하에서, 웨어 레벨링 모듈(260)은 열화 테스팅 모듈(406)을 포함한다.
이제 도 6을 참조하면, 더 빠른 액세스 시간을 갖는 작은 고체-상태 비휘발성 메모리가 더 느린 액세스 시간을 갖는 큰 고체-상태 비휘발성 메모리와 함께 사용될 수 있다. 고체-상태 디스크(450)는 제어기(460), 제 1 고체-상태 비휘발성 메모리(462), 및 제 2 고체-상태 비휘발성 메모리(464)를 포함할 수 있다. 제어기(460)는 호스트(480)와 인터페이싱한다. 제어기(460)는 제 1 및 제 2 메모리 인터페이스들(472, 474)을 포함할 수 있다. 제 1 고체-상태 비휘발성 메모리(462)는 저렴할 수 있고, 높은 저장 용량 및 높은 기록 사이클 수명을 가질 수 있지만, 더 낮은 판독/기록 속도(즉, 액세스 시간)를 가질 수 있다. 제 2 고체-상태 비휘발성 메모리(464)는 제 1 고체-상태 비휘발성 메모리(462)에 비하여 저장 용량이 더 작을 수 있고, 더 고가일 수 있고, 높은 기록 사이클 수명 및 더 빠른 액세스 시간을 가질 수 있다.
제 2 고체-상태 비휘발성 메모리(464)는 제 1 고체-상태 비휘발성 메모리(462)보다 더 짧은 기록 액세스 시간, 판독 액세스 시간, 소거 시간, 프로그램 시간, 또는 누적 액세스 시간을 가질 수 있다. 따라서, 제 2 고체-상태 비휘발성 메모리(464)는 데이터를 캐싱하는데 사용될 수 있다. 제어기(460)는 웨어 레벨링 모듈(260) 및 맵핑 모듈(465)을 포함할 수 있다. 웨어 레벨링 모듈(260)은 또한 맵핑 모듈을 구현할 수 있다. 맵핑 모듈(465)은 제 1 및 제 2 고체-상태 비휘발성 메모리(462, 464)의 액세스 시간들 및/또는 저장 용량들을 기반으로 하여 논리적 어드레스들을 제 1 및 제 2 고체-상태 비휘발성 메모리(462, 464) 중 하나의 물리적 어드레스들로 맵핑할 수 있다.
구체적으로는, 맵핑 모듈은 데이터가 논리적 어드레스들로 기록될 수 있는 빈도들 및 액세스 시간들과 관련된 데이터를 호스트(220)로부터 수신할 수 있다. 맵핑 모듈(465)은 다른 것들보다 더 빈번하고/하거나 더 빨리 기록되어야 하는 논리적 어드레스들을 제 2 고체-상태 비휘발성 메모리(464)의 물리적 어드레스들로 맵핑할 수 있다. 모든 다른 논리적 어드레스들은 제 1 비휘발성 메모리(462)의 물리적 어드레스들로 맵핑될 수 있다. 실제 기록 빈도들 및 액세스 시간들은 데이터가 기록될 때 기록 빈도들 및/또는 액세스 시간들을 측정함으로써 갱신될 수 있다. 그렇게 할 시에, 맵핑 모듈(465)은 판독/기록/소거 동작들 동안 고체-상태 디스크(450)로 행해진 모든 액세스들에 대해 전체 액세스 시간을 최소화할 수 있다.
호스트(220)에 의해 실행되는 애플리케이션에 따라, 맵핑 모듈(465)은 논리적 어드레스들을 제 1 및 제 2 고체-상태 비휘발성 메모리(462, 464) 중 하나로 맵핑할 때 추가적인 팩터들을 고려할 수 있다. 상기 팩터들은 기록되는 메모리 블록의 길이 및 메모리 블록이 기록될 필요가 있는 액세스 시간을 포함할 수 있지만, 이에 제한되지 않는다.
이제 도 7A 내지 7E를 참조하면, 상이한 기록 사이클 수명들 및 저장 용량들을 가지는 제 1 및 제 2 비휘발성 고체-상태(NonVolatile Solid-state: NVS) 메모리들을 사용하는 하이브리드 NVS 메모리 시스템을 제공하는 방법(500)이 도시되어 있다. 제 1 NVS 메모리는 제 2 NVS 메모리보다 더 낮은 기록 사이클 수명 및 더 높은 용량을 갖는다.
도 7A에서, 방법(500)은 단계(502)에서 시작된다. 제어는 단계(504)에서 데이터가 기록되어야 하는 논리적 어드레스들에 대한 기록 빈도들을 호스트로부터 수신한다. 제어는 단계(506)에서 낮은 기록 빈도들을 갖는(예를 들어, 소정 임계값보다 더 적은 기록 빈도들을 갖는) 논리적 어드레스들을 제 1 NVS 메모리로 맵핑한다. 제어는 단계(508)에서 높은 기록 빈도들을 갖는(예를 들어, 소정 임계값보다 더 큰 기록 빈도들을 갖는) 논리적 어드레스들을 제 2 NVS 메모리로 맵핑한다.
제어는 단계(510)에서 단계들(506 및 508)에서 발생된 맵핑에 따라 데이터를 제 1 및/또는 제 2 NVS 메모리들로 기록한다. 제어는 단계(512)에서 데이터가 실제로 논리적 어드레스들에 기록되는 실제 기록 빈도들을 측정하고 맵핑을 갱신한다.
도 7B에서, 제어는 단계(514)에서 데이터 시프트 분석을 수행할 시간이 도달되었는지를 결정한다. 단계(514)의 결과가 거짓인 경우에, 제어는 단계(516)에서 열화 분석을 수행할 시간이 도달되었는지를 결정한다. 단계(516)의 결과가 거짓인 경우에, 제어는 단계(518)에서 웨어 레벨 분석을 수행할 시간이 도달되었는지를 결정한다. 단계(514)의 결과가 거짓인 경우에, 제어는 단계(510)로 리턴한다.
도 7C에서, 단계(514)의 결과가 참인 경우에, 제어는 단계(520)에서 소정 시간 동안 제 1 NVS 메모리의 제 1 메모리 블록으로의 기록 동작들의 수가 소정 임계값보다 더 크거나 소정 임계값과 동일한지를 결정한다. 단계(520)의 결과가 거짓인 경우에, 제어는 단계(516)로 리턴한다. 단계(520)의 결과가 참인 경우에, 제어는 단계(522)에서 제 1 메모리 블록에 대응하는 논리적 어드레스들을 제 2 NVS 메모리의 제 2 메모리 블록으로 맵핑한다.
제어는 단계(524)에서 제 2 NVS 메모리 내의 이용 가능한 메모리가 소정 임계값보다 더 적은지를 결정한다. 단계(524)의 결과가 거짓인 경우에, 제어는 단계(516)로 리턴한다. 단계(524)의 결과가 참인 경우에, 제어는 단계(526)에서 제 2 NVS 메모리의 메모리 블록이 LUB라는 것을 식별한다. 제어는 단계(528)에서 LUB에 대응하는 논리적 어드레스들을 제 1 NVS 메모리의 메모리 블록으로 맵핑하고, 단계(516)로 리턴한다.
도 7D에서, 단계(516)의 결과가 참인 경우에, 제어는 단계(530)에서 제 1 시간에 물리적 어드레스로 데이터를 기록한다. 제어는 단계(532)에서 물리적 어드레스로부터 데이터를 재판독한다. 제어는 단계(534)에서 제 2 시간에(예를 들어, 제 1 시간 이후의 소정 시간 이후에) 물리적 어드레스로 데이터를 기록한다. 제어는 단계(536)에서 물리적 어드레스로부터 데이터를 재판독한다. 제어는 단계(538)에서 단계(532)에서 재판독된 데이터를 단계(536)에서 재판독된 데이터와 비교하고, 물리적 어드레스에 대한 열화 값을 발생시킨다. 제어는 단계(540)에서 맵핑을 갱신하고, 단계(518)로 리턴한다.
도 7E에서, 단계(518)의 결과가 참일 때, 제어는 단계(542)에서 각각 제 1 및 제 2 메모리들의 기록 사이클 수명 레이팅(write cycle lifetime rating)들 및 제 1 및 제 2 메모리들에 대해 수행된 기록 동작들의 수를 기반으로 하여 제 1 및 제 2 NVS 메모리들에 대한 웨어 레벨들을 발생시킨다. 제어는 단계(544)에서 제 2 NVS 메모리의 웨어 레벨이 소정 임계값보다 더 큰지를 결정한다. 단계(544)의 결과가 참인 경우에, 제어는 단계(546)에서 모든 논리적 메모리 블록들을 제 1 NVS 메모리의 물리적 메모리 블록들로 맵핑하고, 단계(510)로 리턴한다.
단계(544)의 결과가 거짓인 경우에, 제어는 단계(548)에서 제 1 NVS 메모리의 웨어 레벨이 소정 임계값보다 더 큰지를 결정한다. 단계(548)의 결과가 참인 경우에, 제어는 단계(550)에서 모든 논리적 메모리 블록들을 제 2 NVS 메모리의 물리적 메모리 블록들로 맵핑하고, 단계(510)로 리턴한다. 단계(548)의 결과가 거짓인 경우에, 제어는 단계(510)로 리턴한다.
이제 도 8을 참조하면, 상이한 액세스 시간들 및 저장 용량들을 가지는 제 1 및 제 2 비휘발성 고체-상태(NVS) 메모리들을 사용하여 데이터를 캐싱하는 하이브리드 NVS 메모리 시스템을 제공하는 방법(600)이 도시되어 있다. 제 1 NVS 메모리는 제 2 NVS 메모리보다 더 높은 액세스 시간 및 더 높은 용량을 갖는다. 제 1 및 제 2 NVS 메모리들은 높은 기록 사이클 수명들을 갖는다.
방법(600)은 단계(602)에서 시작된다. 제어는 단계(604)에서 데이터를 논리적 어드레스들로 기록하는 기록 빈도 및 액세스 시간 요건에 관한 데이터를 호스트로부터 수신한다. 제어는 단계(606)에서 낮은 기록 빈도들을 가지고/가지거나(예를 들어, 소정 임계값보다 더 적은 기록 빈도들을 가지고/가지거나) 더 느린 액세스 시간들을 필요로 하는 논리적 어드레스들을 제 1 NVS 메모리로 맵핑한다. 제어는 단계(606)에서 높은 기록 빈도들을 가지고/가지거나(예를 들어, 소정 임계값보다 더 큰 기록 빈도들을 가지고/가지거나) 더 빠른 액세스 시간들을 필요로 하는 논리적 어드레스들을 제 2 NVS 메모리로 맵핑한다. 제어는 단계(608)에서 낮은 기록 빈도들을 가지고/가지거나(예를 들어, 소정 임계값보다 더 적은 기록 빈도들을 가지고/가지거나) 더 느린 액세스 시간들을 필요로 하는 논리적 어드레스들을 제 1 NVS 메모리로 맵핑한다.
제어는 단계(610)에서 단계들(606 및 608)에서 발생된 맵핑에 따라 데이터를 제 1 및/또는 제 2 NVS 메모리들로 기록한다. 제어는 단계(612)에서 데이터가 실제로 논리적 어드레스들로 기록되는 실제 기록 빈도들 및/또는 실제 액세스 시간들을 측정하고, 맵핑을 갱신한다. 단계(614)에서, 제어는 도 7A 내지 7E에 도시된 바와 같은 방법(500)의 단계(514)에서 시작하는 단계들을 실행한다.
본 명세서의 원리들에 따른 웨어 레벨링 모듈들은 하나 이상의 비휘발성 반도체 메모리들의 각각의 메모리 블록에 대한 웨어 레벨들을 결정할 수 있다. 용어 메모리 블록은 함께 기록 및/또는 소거될 수 있는 메모리 셀들의 그룹을 칭할 수 있다. 단지 논의를 위하여, 용어 메모리 블록은 함께 소거되는 메모리 셀들의 그룹에 대해 사용될 것이며, 메모리 셀의 웨어 레벨은 메모리 셀이 유지되었던 소거 사이클들이 수를 기반으로 할 것이다.
메모리 블록 내의 메모리 셀들은 개별적인 메모리 셀들이 소거가 개시되었을 때 프로그래밍되지 않을 수 있을지라도, 동일한 수의 소거들을 경험할 것이므로, 그 만큼의 웨어를 경험하지 않을 수 있다. 그러나, 웨어 레벨링 모듈은 메모리 블록의 메모리 셀들의 웨어 레벨들이 메모리 블록이 경험한 소거 사이클들의 수에 의해 추정될 수 있다고 가정할 수 있다.
웨어 레벨링 모듈은 제 1 및 제 2 메모리들의 각각의 메모리 블록에 의해 경험된 소거들의 수를 추적할 수 있다. 예를 들어, 이러한 수들은 제 1 및/또는 제 2 메모리들의 특정 영역에, 웨어 레벨링 모듈의 별도의 작동 메모리에, 또는 이들의 각각의 메모리 블록들과 함께 저장될 수 있다. 단지 예를 들어, 사용자 데이터에 대해 사용되지 않는 메모리 블록의 소정 에어리어가 메모리 블록이 소거되었던 총 횟수를 저장하는데 사용될 수 있다. 메모리 블록이 막 소거되려고 할 때, 웨어 레벨링 모듈은 그 값을 판독할 수 있고, 메모리 블록이 소거된 이후에 상기 값을 증분시킬 수 있고 상기 증분된 값을 메모리 블록에 기록할 수 있다.
동종의 메모리 아키텍처의 경우에, 소거 카운트가 메모리 블록의 웨어 레벨로서 사용될 수 있다. 그러나, 제 1 및 제 2 메모리들이 상이한 수명들을 가질 수 있고, 이는 각각의 메모리 셀이 견딜 수 있는 소거들의 수가 상이하다는 것을 의미한다. 다양한 구현예들에서, 제 2 메모리는 제 1 메모리보다 더 긴 수명을 갖는다. 그러므로, 각각의 메모리 블록이 견딜 수 있는 소거들의 수는 제 1 메모리보다 제 2 메모리에서 더 크다.
그러므로, 메모리 블록에 대해 수행된 소거들의 수는 제 1 메모리의 메모리 블록 및 제 2 메모리의 메모리 블록 사이의 적절한 비교가 아닐 수 있다. 적절한 비교들을 성취하기 위하여, 소거 카운트들이 표준화될 수 있다. 표준화의 하나의 방식은 소거 카운트를 그 메모리 내의 메모리 블록이 견딜 수 있는 것으로 예상되는 소거 카운트들의 총수로 나누는 것이다. 단지 예를 들어, 제 1 메모리는 10,000의 기록 사이클 수명을 가지는 반면, 제 2 메모리는 100,000의 기록 사이클 수명을 갖는다.
1,000 번 소거되었던 제 1 메모리 내의 메모리 블록은 1/10의 표준화된 웨어 레벨을 갖는 반면, 1,000 번 소거되었던 제 2 메모리 내의 메모리 블록은 1/100의 표준화된 웨어 레벨을 가질 것이다. 일단 웨어 레벨들이 표준화되었다면, 마치 모든 메모리 블록들이 단일 기록 사이클 수명을 갖는 단일 메모리를 형성하는 것처럼 제 1 및 제 2 메모리들 둘 모두의 모든 메모리 블록들에 걸쳐 웨어 레벨링 알고리즘(wear leveling algorithm)이 사용될 수 있다. 본원에 사용되는 바와 같은 웨어 레벨들은 달리 언급되지 않는다면, 표준화된 웨어 레벨들이다.
분수들을 피하는 표준화의 또 다른 방식은 (더 낮은 기록 사이클 수명을 갖는) 제 1 메모리 내의 메모리 블록들의 소거 카운트들을 기록 사이클 수명들의 비율과 승산하는 것이다. 현재의 예에서, 비율은 10(100,000/10,000)이다. 1,000 번 소거되었던 제 1 메모리 내의 메모리 블록은 10,000의 표준화된 웨어 레벨을 갖는 반면, 1,000 번 소거되었던 제 2 메모리 내의 메모리 블록은 1,000의 표준화된 웨어 레벨을 가질 것이다.
논리적 어드레스에 대한 기록 요청이 웨어 레벨링 모듈에 도착할 때, 웨어 레벨링 모듈은 상기 논리적 어드레스가 이미 물리적 어드레스로 맵핑되었는지를 결정할 수 있다. 그러한 경우에, 웨어 레벨링 모듈은 기록을 상기 물리적 어드레스로 지향시킬 수 있다. 기록이 메모리 블록의 소거를 필요로 하는 경우에, 웨어 레벨링 모듈은 더 낮은 웨어 레벨들을 갖는 임의의 사용되지 않은 메모리 블록들이 존재하는지를 결정할 수 있다. 그러한 경우에, 웨어 레벨링 모듈은 기록을 가장 낮은 웨어 레벨을 갖는 사용되지 않은 메모리 블록으로 지향시킬 수 있다.
이미 맵핑되지 않은 논리적 어드레스에 대한 기록 요청에 대하여, 웨어 레벨링 모듈은 상기 논리적 어드레스를 가장 낮은 웨어 레벨을 갖는 사용되지 않은 메모리 블록으로 맵핑할 수 있다. 웨어 레벨링 모듈이 상기 논리적 어드레스가 상대적으로 드물게 재기록될 것이라고 예상하는 경우에, 상기 웨어 레벨링 모듈은 상기 논리적 어드레스를 가장 높은 웨어 레벨을 갖는 사용되지 않은 메모리 블록으로 맵핑할 수 있다.
웨어 레벨링 모듈이 액세스 빈도들을 추정하기 위한 양호한 데이터를 가질 때, 상기 웨어 레벨링 모듈은 인입 기록에 대하여 사용된 메모리 블록을 자유롭게 하기 위하여 사용된 메모리 블록으로부터 데이터를 이동시킬 수 있다. 이 방식으로, 상대적으로 빈번하게 액세스되는 메모리 블록으로의 인입 기록이 낮은 웨어 레벨을 갖는 메모리 블록으로 기록될 수 있다. 또한, 상대적으로 드물게 액세스되는 메모리 블록으로의 인입 기록은 높은 웨어 레벨을 갖는 메모리 블록으로 기록될 수 있다. 이동되었던 데이터는 이동된 데이터가 얼마나 자주 재기록되는 것으로 예상되는지를 기반으로 하여 선택될 수 있는 사용되지 않은 메모리 블록에 배치될 수 있다.
주기적으로와 같이 다양한 시간들에서, 웨어 레벨링 모듈은 메모리 블록들의 웨어 레벨들을 분석할 수 있고, 상대적으로 빈번하게 재기록되는 논리적 어드레스들을 낮은 웨어 레벨들을 갖는 메모리 블록들로 재맵핑할 수 있다. 게다가, 웨어 레벨링 모듈은 상대적으로 드물게 재기록되는 논리적 어드레스들을 높은 웨어 레벨들을 갖는 메모리 블록들로 재맵핑할 수 있는데, 이는 정적 데이터 시프팅으로서 공지되어 있다. 재맵핑은 2개의 메모리 블록들에서 데이터를 스왑(swap)하는 것을 포함할 수 있다. 스왑 동안, 메모리 블록들 중 하나로부터의 데이터가 사용되지 않은 메모리 블록 또는 임시 저장장치에 저장될 수 있다.
웨어 레벨링 모듈은 또한 자신들의 기록 사이클 수명을 능가한 메모리 블록들을 목록을 유지할 수 있다. 새로운 데이터가 이러한 메모리 블록들에 기록되지 않을 것이며, 그러한 메모리 블록들에 이전에 저장되었던 데이터가 다른 메모리 블록들에 기록된다. 웨어 레벨링 모듈의 목적이 메모리 블록이 다른 메모리 블록들 이전에 웨어 아웃되지 않도록 하는 것일지라도, 일부 메모리 블록들은 현실 세계 환경들 하에서 조기에 웨어 아웃될 수 있다. 신뢰 불가능한 메모리 블록들을 식별하여 제거하는 것은 고체-상태 메모리가 더 이상 사용 가능하지 않기 이전에 남아있는 메모리 블록들의 전체 수명이 사용되도록 한다.
본 명세서가 설명을 위하여, 제 1 및 제 2 고체-상태 비휘발성 메모리들(204, 206)을 설명하였지만, 본 명세서의 내용들이 다른 유형들의 메모리들에도 적용될 수 있다는 점이 이해되어야 한다. 게다가, 메모리들은 개별적인 모듈들로 제한되지 않을 수 있다. 예를 들어, 본 명세서의 내용들은 단일 메모리 칩 내의 또는 다수의 메모리 칩들에 걸친 메모리 존(memory zone)들에 적용될 수 있다. 각각의 메모리 존은 본 명세서의 내용들에 따라 데이터를 저장하는데 사용될 수 있다.
도 9는 시스템(900)을 도시한다. 시스템(900)은 데이터를 저장하는 임의의 장치, 예를 들어, 컴퓨터, 셋 톱 박스, 셀룰러 전화(또는 다른 유형의 무선 휴대용 장치), 등일 수 있다. 시스템(900)은 상술된 바와 같이 데이터를 저장하는 고체 상태 디스크(200)를 포함한다.
도 10은 본 명세서에 따른 예시적인 고체-상태 메모리 시스템을 도시한다. 상기 메모리 시스템은 호스트(1005)와 통신하는 고체-상태 디스크(1000)를 포함한다. 고체-상태 디스크는 제어기(1010), 제 1 고체-상태 비휘발성 메모리(1001) 및 제 2 고체-상태 비휘발성 메모리(1002)를 포함한다. 단지 예로서, 제 1 고체-상태 비휘발성 메모리(1001)는 단일-레벨 셀(SLC) 플래시 칩과 같은 높은 내구성(즉, 높은 기록 사이클 수명) 메모리 소자를 포함할 수 있다. 제 1 고체-상태 비휘발성 메모리(1001)는 다중-레벨 셀(MLC) 플래시 칩과 같은 더 낮은 내구성 및/또는 더 높은 용량(및/또는 밀도) 메모리 소자를 포함할 수 있는 제 2 고체-상태 비휘발성 메모리(1002)에 비하여, 더 고가일 수 있고, 더 낮은 용량(및/또는 밀도)을 가질 수 있다. 이 방식으로, 고체-상태 디스크(1000)는 내구성 레벨들, 용량, 및 비용을 평형화하는 저장 시스템을 제공할 수 있다.
제어기(1010)는 제 1 및 제 2 고체-상태 비휘발성 메모리들과 각각 인터페이싱하는 제 1 메모리 인터페이스(1011) 및 제 2 메모리 인터페이스(1012)를 포함할 수 있다. 또한, 제어기(1010)는 호스트(1005)로부터 수신된 논리적 어드레스들을 제 1 및 제 2 고체-상태 비휘발성 메모리들(1001, 1002)에 존재하는 물리적 어드레스들로 맵핑하는 맵핑 모듈(1013) 및 피로 관리 모듈(1014)을 포함할 수 있다. 기록 동작 동안, 호스트(1005)로부터의 데이터가 제 1 메모리 인터페이스(1011)를 통하여 제 1 고체-상태 비휘발성 메모리(1001)에, 그리고 제 2 메모리 인터페이스(1012)를 통하여 제 2 고체-상태 비휘발성 메모리(1002)에 기록된다. 판독 동작 동안, 데이터가 제 1 또는 제 2 고체-상태 비휘발성 메모리(1001, 1002)로부터 각각 제 1 또는 제 2 메모리 인터페이스(1011, 1012)를 통하여 호스트(1005)에 제공된다.
맵핑 모듈(1013) 및 피로 관리 모듈(1014)은 특정 논리적 어드레스가 제 1 또는 제 2 고체-상태 비휘발성 메모리들(1001, 1002) 중 어느 것으로 맵핑될 것일지를 결정할 수 있다. 피로 관리 모듈(1014)은 또한 맵핑 모듈을 통합하여, 맵핑 모듈(1013) 및 피로 관리 모듈(1014) 둘 모두의 기능들을 수행할 수 있다.
일반적으로, 피로 관리 모듈(1014)은 호스트(1005)로부터 수신된 논리적 어드레스들로의 기록 동작들의 수 및/또는 빈도를 모니터링한다. 상기 논리적 어드레스들은 하나 이상의 대응하는 메모리 블록들을 식별할 수 있다. 피로 관리 모듈(1014)은 가장 빈번하게 기록된 논리적 어드레스들을 더 높은 내구성을 갖는 메모리에 존재하는 물리적 어드레스들로 맵핑할 것이다. 이 목적의 촉진에서, 피로 관리 모듈(1014)은 호스트(1005)로부터 수신된 논리적 어드레스들 각각에 대한 기록 빈도 랭킹을 발생시킬 수 있다. 기록 빈도 랭킹들은 각각의 논리적 어드레스로의 기록들의 수의 순서로 논리적 어드레스들의 전체 세트를 포함할 수 있다. 대안적으로, 기록 빈도 랭킹은 소정 기간에 걸친 각각의 논리적 어드레스로의 기록 동작들의 수를 포함할 수 있다. 소정 기간의 사용은 높은 수의 총 기록 동작들을 갖지만 더 이상 빈번하게 기록되지 않는 논리적 어드레스들이 높은 빈도 어드레스로서 지정되는 것으로부터 낮은 빈도 어드레스로 지정되는 것으로 변화되도록 한다.
기록 빈도 랭킹을 발생시키기 위하여, 피로 관리 모듈(1014)은 호스트(1005)가 기록 동작을 요청하는 각각의 논리적 어드레스에 대해 기록 카운트를 유지할 수 있다. 고체-상태 디스크(1000)가 처음으로 사용될 때, 예를 들어, 운영 시스템이 처음으로 설치될 때, 또는 스왑 공간의 재-정의(re-definition)가 존재하는 재-포맷팅(re-formatting) 이후에, 피로 관리 모듈(1014) 및 맵핑 모듈(1013)은 도시된 예에서 제 1 고체-상태 비휘발성 메모리(1001)인 더 높은 내구성 비휘발성 메모리에 처음으로 기록할 수 있다. 제 1 고체-상태 비휘발성 메모리(1001)의 사용 가능한 물리적 어드레스들 중 소정 퍼센티지(percentage) 또는 모두가 파퓰레이팅(populating)된 이후에, 다음에 기록된 논리적 어드레스는 더 낮은 내구성 비휘발성 메모리로 맵핑될 수 있다. 일단 더 높은 내구성 메모리가 특정 임계값까지 파퓰레이팅되고, 더 낮은 내구성 메모리가 기록되기 시작하면, 피로 관리 모듈(1014)은 2개의 메모리들로의 맵핑을 관리하도록 동작할 것이다. 즉, 가장 빈번하게 기록되는 논리적 어드레스들은 더 높은 내구성 메모리 내의 물리적 어드레스들로 맵핑될 것이지만, 가장 빈번하지 않게 기록되는 논리적 어드레스들은 더 낮은 내구성 메모리로 맵핑될 것이다.
하나의 예에서, 피로 관리 모듈(1014)은 논리적 어드레스들에 대해 수행되었던 기록 동작들의 총 수에 따라 논리적 어드레스들을 랭킹한다. 가장 높게 랭킹된 논리적 어드레스들은 더 높은 내구성 메모리 내의 물리적 어드레스들로 맵핑될 것이며, 남아있는 논리적 어드레스들은 더 낮은 내구성 메모리 내의 물리적 어드레스들로 어드레싱된다. 대안적으로, 논리적 어드레스들의 랭킹은 그 대신에, 소정 기간에 걸친 기록 동작들의 수를 기반으로 할 수 있다. 이 예에서, 일정 시간 기간 동안 기록되지 않았던 과중하게 기록된 논리적 어드레스들은 최근에 더 빈번하게 기록되었던 논리적 어드레스들 아래로 랭킹될 수 있다. 따라서, 더 높은 내구성 메모리로 맵핑되는 논리적 어드레스들은 더 낮은 내구성 메모리 내의 논리적 어드레스들보다 자신들과 관련된 기록 동작들의 총수가 더 낮을 수 있다. 또 다른 예에서, 총 기록 동작들 및 기간 당 기록 랭킹의 조합이 사용될 수 있다.
또 다른 예시적인 실시예에서, 논리적 어드레스에 대한 기록 빈도는 상기 논리적 어드레스가 최종적으로 기록된 이래로 경과되었던 시간 기간에 의해 결정될 수 있다. 이 방식으로, 기록 빈도 랭킹들은 가장 최근에 기록된 논리적 어드레스를 랭킹들의 최상부에 놓는 반면, 기록된 이래로 가장 긴 시간 기간을 갖는 논리적 어드레스를 최하부에 놓음으로써 결정될 수 있다. 고체-상태 디스크(1000)가 전력 온(power on)될 때마다 논리적 어드레스들의 이와 같은 완전한 재-랭킹이 발생하지 않도록 경과된 시간이 저장될 수 있다는 점이 고려된다. 또 다른 실시예에서, 특정 논리적 어드레스에 대한 기록 사이클들 사이의 경과된 시간의 평균이 각각의 논리적 어드레스에 대한 기록 빈도 랭킹을 발생시키는데 사용될 수 있다. 따라서, 그 후에 드물게 기록되었던 이전에 빈번하게 기록된 논리적 어드레스는 궁극적으로 더 낮은 기록 빈도 랭킹으로 이동할 것이므로, 더 낮은 내구성 메모리에 저장될 것이다. 부가적인 실시예에서, 기록 사이클들 사이의 경과된 시간의 평균이 상기에 더 충분히 논의된 바와 같이, 더 낮은 내구성 메모리 및 더 높은 내구성 메모리의 기록 사이클 수명들(또는, 남아있는 기록 사이클 수명들)을 기반으로 하여 표준화될 수 있다.
논리적 어드레스에 대한 기록 빈도를 결정하고, 이에 따라 논리적 어드레스에 대한 기록 빈도 랭킹을 결정하기 위하여, 각각의 논리적 어드레스에 대한 기록 카운트의 가중된 시간-감쇠 평균(time-decay average)이 다음 식에 따라 계산될 수 있고:
WCA(n+1) = WCA(n) * (1-a) + WE(n) * a (1)
여기서, WCA(n)은 시간단계 n에서의 시간 평균화된 기록 카운트이고; WE(n)은 시간단계 n에서 수행되는 기록들이 존재하는 경우에 1과 동일하고 그렇지 않은 경우에 0과 동일한, 시간단계 n에서의 실제 기록 이벤트(write event)이며; 'a'는 적절한 시간-감쇠를 갖도록 선택된 상수이고 종종 "발생률 상수(attack rate constant)"라고 칭해지며, (1-a)는 종종 "감쇠율 상수(decay rate constant)"라고 칭해진다. 대안적으로, 2 파라미터 시스템이 사용되어, 식 1이 다음에 되도록 할 수 있고:
WCA(n+1) = WCA(n) * d + WE(n) * a (2)
여기서, d는 감쇠율 상수이고, 다른 모든 변수들은 상기와 동일하다.
논리적 어드레스들의 제 1 또는 제 2 메모리들 중 하나 내의 물리적 어드레스들로의 실제 맵핑은 상술된 웨어 레벨링 기능을 포함할 수 있다. 따라서, 상술된 바와 같이, 특정 논리적 어드레스의 제 1 또는 제 2 메모리로의 할당은 피로 관리 모듈(1014)에 의해 결정될 수 있는 반면, 선택된 메모리 내의 특정 물리적 어드레스는 웨어 레벨링 모듈에 의해 결정될 수 있다.
이제 도 11을 참조하면, 본 명세서에 따른 메모리들 각각에 대한 독립적인 웨어 레벨링 모듈들을 포함하는 예시적인 고체-상태 메모리 시스템이 도시되어 있다. 상기 메모리 시스템은 호스트(1205)와 통신하는 고체-상태 디스크(1200)를 포함한다. 고체-상태 디스크는 제어기(1210), 제 1 고체-상태 비휘발성 메모리(1201) 및 제 2 고체-상태 비휘발성 메모리(1202)를 포함할 수 있다. 단지 예로서, 제 1 고체-상태 비휘발성 메모리(1201)는 단일-레벨 셀(SLC) 플래시 칩과 같은 높은 내구성(즉, 높은 기록 사이클 수명) 메모리 소자를 포함할 수 있다. 제 1 고체-상태 비휘발성 메모리(1201)는 다중-레벨 셀(MLC) 플래시 칩과 같은 더 낮은 내구성 및/또는 더 높은 용량(및/또는 밀도) 메모리 소자를 포함할 수 있는 제 2 고체-상태 비휘발성 메모리(1202)에 비하여, 더 고가일 수 있고, 더 낮은 용량(및/또는 밀도)을 가질 수 있다. 이 방식으로, 고체-상태 디스크(1200)는 내구성 레벨들, 용량, 및 비용을 평형화하는 저장 시스템을 제공할 수 있다.
제어기(1210)는 제 1 및 제 2 고체-상태 비휘발성 메모리들과 각각 인터페이싱하는 제 1 메모리 인터페이스(1211) 및 제 2 메모리 인터페이스(1212)를 포함할 수 있다. 또한, 제어기(1210)는 호스트(1205)로부터 수신된 논리적 어드레스들을 제 1 및 제 2 고체-상태 비휘발성 메모리들(1201, 1202)에 존재하는 물리적 어드레스들로 맵핑하는 맵핑 모듈(1213) 및 피로 관리 모듈(1214)을 포함할 수 있다. 기록 동작 동안, 호스트(1205)로부터의 데이터가 제 1 메모리 인터페이스(1211)를 통하여 제 1 고체-상태 비휘발성 메모리(1201)에, 그리고 제 2 메모리 인터페이스(1212)를 통하여 제 2 고체-상태 비휘발성 메모리(1202)에 기록된다. 판독 동작 동안, 데이터가 제 1 또는 제 2 고체-상태 비휘발성 메모리(1201, 1202)로부터 각각 제 1 또는 제 2 메모리 인터페이스(1211, 1212)를 통하여 호스트(1205)에 제공된다.
맵핑 모듈(1213) 및 피로 관리 모듈(1214)은 특정 논리적 어드레스가 제 1 또는 제 2 고체-상태 비휘발성 메모리들(1201, 1202) 중 어느 것으로 맵핑될 것일지를 결정할 수 있다. 피로 관리 모듈(1214)은 또한 맵핑 모듈을 통합하여, 맵핑 모듈(1213) 및 피로 관리 모듈(1214) 둘 모두의 기능들을 수행할 수 있다. 맵핑 모듈(1213)은 은 또한 제 1 및 제 2 웨어 레벨링 모듈들(1215, 1216)을 포함할 수 있다. 대안적으로, 제 1 및 제 2 웨어 레벨링 모듈들(1215, 1216)은 피로 관리 모듈(1214)에 포함될 수 있거나, 또는 심지어 맵핑 모듈(1213) 및 피로 관리 모듈(1214)로부터 분리될 수 있다(도시되지 않음).
제 1 및 제 2 웨어 레벨링 모듈들(1215, 1216)은 제 1 및 제 2 고체-상태 비휘발성 메모리들(1201, 1202) 각각 내의 각각의 물리적 어드레스들의 독립적인 웨어 레벨링을 제공할 수 있다. 상기에 논의된 바와 같이, 웨어 레벨링 모듈의 목적은 고체-상태 비휘발성 메모리들의 모든 에어리어들에 걸친 웨어를 레벨링하여, 하나의 에어리어(또는 물리적 어드레스)가 상기 메모리 내의 에어리어들 중 나머지 이전에 웨어 아웃되지 않도록 하는 것일 수 있다. 제 1 및 제 2 고체-상태 비휘발성 메모리들(1201, 1202) 각각 내의 오버헤드 에어리어(overhead area)가 메모리 내의 물리적 어드레스들 사이에서 데이터를 이동시키는데 사용될 수 있는데, 이는 종종 "가비지 수집(garbage collection)"이라고 칭해진다.
이제 도 12를 참조하면, 본 명세서에 따른 예시적인 맵핑/기록 빈도 랭킹 테이블(800)이 도시되어 있다. 맵핑/기록 빈도 랭킹 테이블(800)은 컬럼(column)(802)에서 논리적 어드레스들(LA1 내지 LAn)의 목록을 포함한다. 각각의 논리적 어드레스(LA1 내지 LAn)에 대하여, 총 기록 카운터가 컬럼(804)에서 모니터링 및 유지된다. 총 기록 카운트들(WC1 내지 WCn)은 논리적 어드레스들(LA1 내지 LAn)로 각각 수행된 기록들의 수를 포함한다. 컬럼(806)에서, 논리적 어드레스들(LA1 내지 LAn) 각각에 대한 기록 빈도 랭킹들(WFR1 내지 WFRn)이 저장된다. 기록 빈도 랭킹들(WFR1 내지 WFRn)은 상기에 논의된 바와 같이, 다양한 방식들로 결정될 수 있다. 논리적 어드레스들(LA1 내지 LAn)이 각각 맵핑되는 물리적 어드레스들(PA1 내지 PAn)이 컬럼(808)에 저장된다. 컬럼들(804 내지 808)은 필요 또는 희망에 따라 갱신되어, 그 내에 포함된 정보가 정확하고/하거나 최신이다.
이제 도 13을 참조하면, 하이브리드 내구성 고체-상태 저장 소자의 피로를 관리하는 예시적인 방법(1100)이 도시되어 있다. 이 예에서, 제 1 메모리는 제 2 NVS 메모리보다 더 높은 내구성 레벨(또는 기록 사이클 수명)을 갖는다. 방법(1100)은 단계(1102)에서 시작된다. 제어는 단계(1104)에서 기록될 논리적 어드레스(1130)를 수신한다. 단계(1106)에서, 제어는 수신된 논리적 어드레스(1130)에 대한 기록 빈도를 결정한다. 단계(1106)에서의 기록 빈도 결정을 기반으로 하여, 1108에서 상기 논리적 어드레스(1130)에 대한 기록 빈도 랭킹이 결정된다.
단계(1110)에서, 기록될 논리적 어드레스(1130)에 대한 기록 빈도 랭킹이 제 1 메모리에 존재하는 가장 낮은 기록 빈도 랭킹과 비교된다. 논리적 어드레스(1130)에 대한 기록 빈도 랭킹이 제 1 메모리 내의 가장 낮은 기록 빈도 랭킹보다 더 낮은 경우에, 단계(1112)에서, 논리적 어드레스(1130)가 제 2 메모리로 맵핑된다. 단계(1114)에서, 데이터는 논리적 어드레스(1130)로 기록될 데이터를 제 2 메모리 어레이로 기록하는 것을 포함하는 맵핑에 따라 기록된다. 방법(1100)은 단계(1116)에서 종료된다.
그러나, 논리적 어드레스(1130)에 대한 기록 빈도 랭킹이 제 1 메모리 내의 가장 낮은 기록 빈도 랭킹보다 더 높은 경우에, 방법은 단계(1118)로 통과된다. 단계(1118)에서, 제 1 메모리에 존재하는 가장 낮은 기록 빈도 랭킹을 갖는 논리적 어드레스가 제 2 메모리로 대신 맵핑된다. 단계(1120)에서, 제 1 메모리 내의 가장 낮은 기록 빈도 랭킹을 포함하는 논리적 어드레스에 존재하는 데이터가 제 2 메모리로 이동된다. 그 후, 단계(1122)에서, 논리적 어드레스(1130)가 제 1 메모리로 맵핑된다. 방법(1100)은 맵핑에 따라 데이터를 기록하는 단계(1114)로 통과된다. 방법(1100)은 단계(1116)에서 종료된다.
당업자들은 이제 본 명세서의 넓은 내용들이 다양한 형태들로 구현될 수 있다는 점을 상기의 설명으로부터 인식할 수 있다. 예를 들어, 상술된 방법들의 하나 이상의 단계들이 상이한 순서로(또는 동시에) 수행될 수 있고, 여전히 희망하는 결과들을 성취할 수 있다. 그러므로, 본 명세서가 특정 예들을 포함하지만, 다른 변경들이 도면들, 명세서, 및 다음의 청구항들의 연구 시에 당업자들에게 명백할 것이기 때문에, 본 명세서의 실제 범위가 그렇게 제한되어서는 안된다.

Claims (14)

  1. 고체 상태 메모리 시스템에 있어서:
    제 1 기록 사이클 수명 및 제 1 세트의 물리적 어드레스들을 가지는 제 1 비휘발성 반도체 메모리;
    제 2 기록 사이클 수명 및 제 2 세트의 물리적 어드레스들을 가지는 제 2 비휘발성 반도체 메모리; 및
    복수의 논리적 어드레스들에 대한 기록 빈도 랭킹을 발생시키고; 상기 기록 빈도 랭킹들을 기반으로 하여 상기 복수의 논리적 어드레스들 각각을 상기 제 1 세트의 물리적 어드레스들 또는 상기 제 2 세트의 물리적 어드레스들의 물리적 어드레스로 맵핑하는 피로 관리 모듈을 포함하고,
    상기 제 1 기록 사이클 수명이 상기 제 2 기록 사이클 수명보다 더 큰,
    고체 상태 메모리 시스템.
  2. 청구항 1에 있어서, 상기 복수의 논리적 어드레스들 중 하나에 대한 상기 기록 빈도 랭킹이 상기 복수의 논리적 어드레스들 중 하나에 대한 기록 동작들의 수를 기반으로 하는 고체 상태 메모리 시스템.
  3. 청구항 1에 있어서, 상기 복수의 논리적 어드레스들 중 하나에 대한 상기 기록 빈도 랭킹이 소정 기간 동안 상기 복수의 논리적 어드레스들 중 하나에 대한 기록 동작들의 수를 기반으로 하는 고체 상태 메모리 시스템.
  4. 청구항 1에 있어서, 상기 복수의 논리적 어드레스들 중 하나에 대한 상기 기록 빈도 랭킹이 상기 복수의 논리적 어드레스들 중 하나에 대한 시간 평균화된 기록 카운트를 기반으로 하는 고체 상태 메모리 시스템.
  5. 청구항 4에 있어서, 상기 시간 평균화된 기록 카운트가:
    WCA(n+1) = WCA(n) * d + WE(n) * a를 기반으로 하고,
    여기서, WCA(n)이 시간단계 n에서의 시간 평균화된 기록 카운트이고;
    WE(n)이 시간단계 n에서의 실제 기록 이벤트여서, 기록 이벤트가 시간단계 n에서 발생되는 경우에 WE(n)이 1과 동일하고 그렇지 않은 경우에 0과 동일하며;
    d는 제 1 상수이고;
    a는 제 2 상수인 고체 상태 메모리 시스템.
  6. 청구항 1에 있어서, 웨어 레벨링 모듈을 더 포함하고, 상기 웨어 레벨링 모듈은:
    상기 제 1 기록 사이클 수명을 기반으로 하여 상기 제 1 비휘발성 반도체 메모리에 대한 제 1 웨어 레벨을 발생시키고;
    상기 제 2 기록 사이클 수명을 기반으로 하여 상기 제 2 비휘발성 반도체 메모리에 대한 제 2 웨어 레벨을 발생시키며;
    상기 복수의 논리적 어드레스들의 맵핑이 부가적으로 상기 제 1 웨어 레벨 및 상기 제 2 웨어 레벨을 기반으로 하는 고체 상태 메모리 시스템.
  7. 청구항 1에 있어서, 상기 제 1 비휘발성 반도체 메모리로 맵핑되는 논리적 어드레스들의 가장 낮은 기록 빈도 레이팅이 상기 제 2 비휘발성 반도체 메모리로 맵핑되는 논리적 어드레스들의 가장 높은 기록 빈도 레이팅보다 더 큰 고체 상태 메모리 시스템.
  8. 고체 상태 메모리 시스템에 대한 피로 관리 방법에 있어서:
    제 1 기록 사이클 수명 및 제 1 세트의 물리적 어드레스들을 가지는 제 1 비휘발성 반도체 메모리를 제공하는 단계;
    제 2 기록 사이클 수명 및 제 2 세트의 물리적 어드레스들을 가지는 제 2 비휘발성 반도체 메모리를 제공하는 단계;
    복수의 논리적 어드레스들에 대한 기록 빈도 랭킹을 발생시키는 단계; 및
    상기 기록 빈도 랭킹들을 기반으로 하여 상기 복수의 논리적 어드레스들 각각을 상기 제 1 세트의 물리적 어드레스들 또는 상기 제 2 세트의 물리적 어드레스들의 물리적 어드레스로 맵핑하는 단계를 포함하고,
    상기 제 1 기록 사이클 수명이 상기 제 2 기록 사이클 수명보다 더 큰,
    고체 상태 메모리 시스템에 대한 피로 관리 방법.
  9. 청구항 8에 있어서, 상기 복수의 논리적 어드레스들 중 하나에 대한 상기 기록 빈도 랭킹이 상기 복수의 논리적 어드레스들 중 하나에 대한 기록 동작들의 수를 기반으로 하는 고체 상태 메모리 시스템에 대한 피로 관리 방법.
  10. 청구항 8에 있어서, 상기 복수의 논리적 어드레스들 중 하나에 대한 상기 기록 빈도 랭킹이 소정 기간 동안 상기 복수의 논리적 어드레스들 중 하나에 대한 기록 동작들의 수를 기반으로 하는 고체 상태 메모리 시스템에 대한 피로 관리 방법.
  11. 청구항 8에 있어서, 상기 복수의 논리적 어드레스들 중 하나에 대한 상기 기록 빈도 랭킹이 상기 복수의 논리적 어드레스들 중 하나에 대한 시간 평균화된 기록 카운트를 기반으로 하는 고체 상태 메모리 시스템에 대한 피로 관리 방법.
  12. 청구항 11에 있어서, 상기 시간 평균화된 기록 카운트가:
    WCA(n+1) = WCA(n) * d + WE(n) * a를 기반으로 하고,
    여기서, WCA(n)이 시간단계 n에서의 시간 평균화된 기록 카운트이고;
    WE(n)이 시간단계 n에서의 실제 기록 이벤트여서, 기록 이벤트가 시간단계 n에서 발생되는 경우에 WE(n)이 1과 동일하고 그렇지 않은 경우에 0과 동일하며;
    d는 제 1 상수이고;
    a는 제 2 상수인 고체 상태 메모리 시스템에 대한 피로 관리 방법.
  13. 청구항 8에 있어서, 상기 제 1 기록 사이클 수명을 기반으로 하여 상기 제 1 비휘발성 반도체 메모리에 대한 제 1 웨어 레벨을 발생시키는 단계; 및
    상기 제 2 기록 사이클 수명을 기반으로 하여 상기 제 2 비휘발성 반도체 메모리에 대한 제 2 웨어 레벨을 발생시키는 단계를 더 포함하며,
    상기 복수의 논리적 어드레스들의 맵핑이 부가적으로 상기 제 1 웨어 레벨 및 상기 제 2 웨어 레벨을 기반으로 하는 고체 상태 메모리 시스템에 대한 피로 관리 방법.
  14. 청구항 8에 있어서, 상기 제 1 비휘발성 반도체 메모리로 맵핑되는 논리적 어드레스들의 가장 낮은 기록 빈도 레이팅이 상기 제 2 비휘발성 반도체 메모리로 맵핑되는 논리적 어드레스들의 가장 높은 기록 빈도 레이팅보다 더 큰 고체 상태 메모리 시스템에 대한 피로 관리 방법.
KR1020107019163A 2008-02-29 2009-02-24 하이브리드 비휘발성 고체 상태 메모리 시스템에 대한 피로 관리 시스템 및 방법 KR101576575B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US3277408P 2008-02-29 2008-02-29
US61/032,774 2008-02-29
US12/365,455 2009-02-04
US12/365,455 US9153337B2 (en) 2006-12-11 2009-02-04 Fatigue management system and method for hybrid nonvolatile solid state memory system

Publications (2)

Publication Number Publication Date
KR20100138896A true KR20100138896A (ko) 2010-12-31
KR101576575B1 KR101576575B1 (ko) 2015-12-10

Family

ID=40551048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107019163A KR101576575B1 (ko) 2008-02-29 2009-02-24 하이브리드 비휘발성 고체 상태 메모리 시스템에 대한 피로 관리 시스템 및 방법

Country Status (6)

Country Link
US (3) US9153337B2 (ko)
EP (1) EP2248131B1 (ko)
KR (1) KR101576575B1 (ko)
CN (1) CN102047341B (ko)
TW (1) TWI490693B (ko)
WO (1) WO2009108619A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130050591A (ko) * 2011-11-08 2013-05-16 삼성전자주식회사 불휘발성 메모리를 포함하는 메모리 장치 및 불휘발성 메모리의 제어 방법
KR20140060795A (ko) * 2012-11-12 2014-05-21 삼성전자주식회사 반도체 장치의 테스트 방법 및 반도체 테스트 장비
KR20160077343A (ko) * 2014-12-22 2016-07-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20170020257A (ko) * 2015-08-14 2017-02-22 삼성전자주식회사 Tco 모델 기반 온라인 플래시 자원 할당 방법 및 시스템
KR20170027927A (ko) * 2015-09-02 2017-03-13 삼성전자주식회사 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
KR20180042699A (ko) * 2016-10-18 2018-04-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Families Citing this family (250)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US8187100B1 (en) * 2007-03-02 2012-05-29 Dp Technologies, Inc. Shared execution of hybrid states
US7913032B1 (en) * 2007-04-25 2011-03-22 Apple Inc. Initiating memory wear leveling
US8678925B1 (en) 2008-06-11 2014-03-25 Dp Technologies, Inc. Method and apparatus to provide a dice application
US20090319721A1 (en) * 2008-06-19 2009-12-24 Silicon Motion, Inc. Flash memory apparatus and method for operating the same
US8527690B2 (en) * 2008-06-26 2013-09-03 Microsoft Corporation Optimization of non-volatile solid-state memory by moving data based on data generation and memory wear
KR20100013485A (ko) * 2008-07-31 2010-02-10 삼성전자주식회사 메모리 장치 및 웨어 레벨링 방법
US8516203B2 (en) 2008-08-13 2013-08-20 Sandisk Technologies Inc. Methods and apparatus for passing information to a host system to suggest logical locations to allocate to a file
US8825940B1 (en) 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
US8694750B2 (en) * 2008-12-19 2014-04-08 Nvidia Corporation Method and system for data structure management
US9176859B2 (en) * 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
JP4666080B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666081B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4844639B2 (ja) * 2009-02-19 2011-12-28 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US10079048B2 (en) * 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8572443B2 (en) * 2009-04-08 2013-10-29 International Business Machines Corporation System, method, and computer program product for determining a retention behavior for at least one block of a memory device having finite endurance and/or retention
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US20120150527A1 (en) * 2009-08-21 2012-06-14 Tadhg Creedon Storage peripheral device emulation
CN102033756A (zh) * 2009-09-27 2011-04-27 环旭电子股份有限公司 基本输入输出系统支持多种触控屏幕的方法
US8291194B2 (en) * 2009-11-16 2012-10-16 Mediatek Inc. Methods of utilizing address mapping table to manage data access of storage medium without physically accessing storage medium and related storage controllers thereof
US9594675B2 (en) 2009-12-31 2017-03-14 Nvidia Corporation Virtualization of chip enables
US8621141B2 (en) 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
US8700841B2 (en) 2010-04-19 2014-04-15 International Business Machines Corporation Sub-LUN input/output profiling for SSD devices
US20120023144A1 (en) * 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
JP2012033047A (ja) * 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
KR20120032253A (ko) * 2010-09-28 2012-04-05 삼성전자주식회사 데이터 저장 장치들을 시험하는 방법 및 이를 위한 젠더
US9465728B2 (en) 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
US20120278532A1 (en) * 2010-11-24 2012-11-01 Wladyslaw Bolanowski Dynamically configurable embedded flash memory for electronic devices
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US9176864B2 (en) * 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US9177609B2 (en) 2011-06-30 2015-11-03 Sandisk Technologies Inc. Smart bridge for memory core
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US20130067289A1 (en) * 2011-09-14 2013-03-14 Ariel Maislos Efficient non-volatile read cache for storage system
CN103946813B (zh) * 2011-09-30 2017-08-25 英特尔公司 基于使用统计量追踪的远存储器访问信号的生成
US9348741B1 (en) * 2011-12-19 2016-05-24 Western Digital Technologies, Inc. Systems and methods for handling write data access requests in data storage devices
US9208070B2 (en) * 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
WO2013095644A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Page miss handler including wear leveling logic
KR101625777B1 (ko) 2011-12-28 2016-05-30 인텔 코포레이션 휘발성 메모리 및 비휘발성 메모리 간의 코드 및 데이터 저장소들을 분산하기 위한 방법 및 장치
WO2013100975A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Workload adaptive address mapping
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9128847B2 (en) * 2012-10-18 2015-09-08 Hitachi, Ltd. Cache control apparatus and cache control method
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9292451B2 (en) 2013-02-19 2016-03-22 Qualcomm Incorporated Methods and apparatus for intra-set wear-leveling for memories with limited write endurance
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9348743B2 (en) 2013-02-21 2016-05-24 Qualcomm Incorporated Inter-set wear-leveling for caches with limited write endurance
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
KR101752583B1 (ko) 2013-03-14 2017-07-11 마이크론 테크놀로지, 인크. 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들
US20140281129A1 (en) * 2013-03-15 2014-09-18 Tal Heller Data tag sharing from host to storage systems
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9342389B2 (en) * 2013-04-04 2016-05-17 SK Hynix Inc. Neighbor based and dynamic hot threshold based hot data identification
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9330143B2 (en) * 2013-10-24 2016-05-03 Western Digital Technologies, Inc. Data storage device supporting accelerated database operations
US10444998B1 (en) 2013-10-24 2019-10-15 Western Digital Technologies, Inc. Data storage device providing data maintenance services
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
KR102165460B1 (ko) * 2013-11-27 2020-10-14 삼성전자 주식회사 전자 장치 및 전자 장치의 메모리 관리 방법
US9928166B2 (en) 2013-12-24 2018-03-27 International Business Machines Corporation Detecting hot spots through flash memory management table snapshots
US9564212B2 (en) 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9760481B2 (en) * 2014-06-13 2017-09-12 Sandisk Technologies Llc Multiport memory
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9042160B1 (en) * 2014-07-03 2015-05-26 Sandisk Technologies Inc. Memory device with resistive random access memory (ReRAM)
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US10528461B2 (en) * 2014-08-04 2020-01-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Controlling wear among flash memory devices based on remaining warranty
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10228990B2 (en) * 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
JP2017107321A (ja) * 2015-12-08 2017-06-15 京セラドキュメントソリューションズ株式会社 電子機器およびデータアクセス制御プログラム
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US9886324B2 (en) 2016-01-13 2018-02-06 International Business Machines Corporation Managing asset placement using a set of wear leveling data
US10078457B2 (en) * 2016-01-13 2018-09-18 International Business Machines Corporation Managing a set of wear-leveling data using a set of bus traffic
US10095597B2 (en) 2016-01-13 2018-10-09 International Business Machines Corporation Managing a set of wear-leveling data using a set of thread events
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
KR20180021284A (ko) * 2016-08-18 2018-03-02 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10061524B2 (en) * 2016-09-01 2018-08-28 International Business Machines Corporation Wear-leveling of memory devices
CN107025066A (zh) 2016-09-14 2017-08-08 阿里巴巴集团控股有限公司 在基于闪存的存储介质中写入存储数据的方法和装置
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10459644B2 (en) 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
GB2559119B (en) * 2017-01-20 2020-12-30 Advanced Risc Mach Ltd Apparatus and methods to prolong lifetime of memories
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
EP3367385B1 (en) 2017-02-28 2020-07-08 ams AG Memory arrangement and method for operating a memory arrangement
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US10325668B2 (en) * 2017-04-05 2019-06-18 Micron Technology, Inc. Operation of mixed mode blocks
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
FR3070081B1 (fr) * 2017-08-10 2021-04-09 Safran Identity & Security Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
JP7010667B2 (ja) * 2017-11-06 2022-01-26 キオクシア株式会社 メモリシステムおよび制御方法
CN111108488B (zh) * 2017-11-07 2022-05-10 华为技术有限公司 内存块回收方法和装置
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
TWI680373B (zh) 2018-03-29 2019-12-21 大陸商合肥沛睿微電子股份有限公司 固態硬碟及其運作方法
TWI705333B (zh) * 2018-03-29 2020-09-21 大陸商合肥沛睿微電子股份有限公司 控制電路及控制方法
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10831378B2 (en) * 2018-09-24 2020-11-10 International Business Machines Corporation Optimizing data access in a DSN memory for wear leveling
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10877671B2 (en) * 2018-12-03 2020-12-29 Vast Data Ltd. Techniques for prolonging lifespan of storage drives
KR20200095103A (ko) 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
KR20200117256A (ko) 2019-04-03 2020-10-14 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
KR20200139573A (ko) * 2019-06-04 2020-12-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11080205B2 (en) * 2019-08-29 2021-08-03 Micron Technology, Inc. Classifying access frequency of a memory sub-system component
US10902929B1 (en) 2019-08-29 2021-01-26 Micron Technology, Inc. Zone swapping for wear leveling memory
US11320987B2 (en) * 2019-08-29 2022-05-03 Micron Technology, Inc. Scanning techniques for a media-management operation of a memory sub-system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11150825B2 (en) * 2019-12-05 2021-10-19 Microsoft Technology Licensing, Llc Adaptive spare block usage in solid state drives
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11200113B2 (en) 2020-01-14 2021-12-14 Intel Corporation Auto-increment write count for nonvolatile memory
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11145376B1 (en) * 2020-03-26 2021-10-12 Macronix International Co., Ltd. Memory system and method capable of performing wear leveling
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
TWI775143B (zh) * 2020-09-09 2022-08-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
WO2023020783A1 (en) * 2021-07-30 2023-02-23 Robert Bosch Gmbh A method to extend lifespan of an electronic control unit (ecu) and the ecu thereof
EP4134826A1 (en) * 2021-08-09 2023-02-15 Giesecke+Devrient Mobile Security GmbH Management of memory of a processing device
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
CN115793987B (zh) * 2023-01-09 2023-05-09 苏州浪潮智能科技有限公司 一种磨损均衡的方法、装置、电子设备和存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4638430A (en) 1983-07-15 1987-01-20 United Technologies Corporation EAROM and EEPROM data storage management
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JPH05151097A (ja) 1991-11-28 1993-06-18 Fujitsu Ltd 書換回数制限型メモリのデータ管理方式
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
DE19534873A1 (de) * 1995-09-20 1997-03-27 Philips Patentverwaltung Schaltungsanordnung mit einem Differenzverstärker
JP3200012B2 (ja) 1996-04-19 2001-08-20 株式会社東芝 記憶システム
US6163773A (en) 1998-05-05 2000-12-19 International Business Machines Corporation Data storage system with trained predictive cache management engine
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
JP2001067881A (ja) 1999-08-30 2001-03-16 Toshiba Corp 連想記憶装置及び記憶媒体
JP2001266599A (ja) 2000-03-17 2001-09-28 Nec Microsystems Ltd 半導体記憶装置の試験方法および試験装置
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US7035967B2 (en) 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
EP1713085A1 (en) 2002-10-28 2006-10-18 SanDisk Corporation Automated wear leveling in non-volatile storage systems
US7032087B1 (en) 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
JP2006338370A (ja) 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
US7752382B2 (en) 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7596656B2 (en) 2006-09-28 2009-09-29 Sandisk Corporation Memory cards with end of life recovery and resizing
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
JP5006940B2 (ja) * 2006-12-27 2012-08-22 インテル・コーポレーション 不揮発性メモリのイニシアチブウェアレベリング
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130050591A (ko) * 2011-11-08 2013-05-16 삼성전자주식회사 불휘발성 메모리를 포함하는 메모리 장치 및 불휘발성 메모리의 제어 방법
KR20140060795A (ko) * 2012-11-12 2014-05-21 삼성전자주식회사 반도체 장치의 테스트 방법 및 반도체 테스트 장비
KR20160077343A (ko) * 2014-12-22 2016-07-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20170020257A (ko) * 2015-08-14 2017-02-22 삼성전자주식회사 Tco 모델 기반 온라인 플래시 자원 할당 방법 및 시스템
KR20170027927A (ko) * 2015-09-02 2017-03-13 삼성전자주식회사 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
KR20180042699A (ko) * 2016-10-18 2018-04-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20160019141A1 (en) 2016-01-21
TWI490693B (zh) 2015-07-01
US20090138654A1 (en) 2009-05-28
US9727455B2 (en) 2017-08-08
EP2248131B1 (en) 2015-02-18
CN102047341B (zh) 2014-11-19
WO2009108619A1 (en) 2009-09-03
US20170337127A1 (en) 2017-11-23
CN102047341A (zh) 2011-05-04
EP2248131A1 (en) 2010-11-10
US9153337B2 (en) 2015-10-06
US10067866B2 (en) 2018-09-04
KR101576575B1 (ko) 2015-12-10
TW200937192A (en) 2009-09-01

Similar Documents

Publication Publication Date Title
US10067866B2 (en) Method and apparatus for mapping logical addresses between memories of a solid-state disk based on write frequency rankings
US10204042B2 (en) Memory system having persistent garbage collection
US10452281B2 (en) Data segregation in a storage device
US20080140918A1 (en) Hybrid non-volatile solid state memory system
KR100914089B1 (ko) 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치
US8200904B2 (en) System and method for clearing data from a cache
JP5728672B2 (ja) ハイブリッドメモリ管理
KR100789406B1 (ko) 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US9021185B2 (en) Memory controller and methods for enhancing write performance of a flash device
EP1559112B1 (en) Maintaining an average erase count in a non-volatile storage system
US7120729B2 (en) Automated wear leveling in non-volatile storage systems
US20130339574A1 (en) Variability aware wear leveling
US20110107016A1 (en) Solid state storage systems and methods for flexibly controlling wear leveling

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: 20181122

Year of fee payment: 4