KR20160042224A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20160042224A
KR20160042224A KR1020140134982A KR20140134982A KR20160042224A KR 20160042224 A KR20160042224 A KR 20160042224A KR 1020140134982 A KR1020140134982 A KR 1020140134982A KR 20140134982 A KR20140134982 A KR 20140134982A KR 20160042224 A KR20160042224 A KR 20160042224A
Authority
KR
South Korea
Prior art keywords
hash value
processor
access count
access
data
Prior art date
Application number
KR1020140134982A
Other languages
English (en)
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 에스케이하이닉스 주식회사
Priority to KR1020140134982A priority Critical patent/KR20160042224A/ko
Priority to US14/600,909 priority patent/US20160098214A1/en
Priority to TW104113256A priority patent/TWI682275B/zh
Priority to CN201510347610.3A priority patent/CN105489242B/zh
Priority to US14/820,261 priority patent/US9678827B2/en
Priority to TW104132898A priority patent/TWI683252B/zh
Priority to CN201510646958.2A priority patent/CN105489239B/zh
Publication of KR20160042224A publication Critical patent/KR20160042224A/ko
Priority to US16/289,096 priority patent/US11010289B2/en

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
    • 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/1016Performance improvement
    • 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
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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

Abstract

본 발명에 따른 데이터 저장 장치는 액세스 커맨드에 대응하는 타겟 영역을 액세스하도록 구성된 불휘발성 메모리 장치; 및 제1 해시 함수에 근거하여 상기 타겟 영역에 대응하는 제1 해시 값을 산출하고, 상기 제1 해시 값으로 인덱싱된 액세스 횟수를 업데이트하도록 구성된 프로세서를 포함한다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 불휘발성 메모리 장치의 일정 영역을 과도하게 액세스함에 따라 일정 영역에 인접한 인접 영역에 저장된 데이터의 변형 또는 손실을 방지하기 위한 신뢰성 유지 동작을 수행하는 데이터 저장 장치 및 그 동작 방법에 관한 것이다.
반도체 장치, 그 중에서도 반도체 메모리 장치는 데이터를 저장하는 용도로 사용될 수 있다. 메모리 장치는 그 타입을 크게 불휘발성과 휘발성으로 구분할 수 있다.
불휘발성 메모리 장치는 전원이 인가되지 않더라도 저장된 데이터를 유지할 수 있다. 불휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
휘발성 메모리 장치는 전원이 인가되지 않는 경우 저장된 데이터를 유지하지 못하고 소실할 수 있다. 휘발성 메모리 장치는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등을 포함할 수 있다. 휘발성 메모리 장치는 비교적 빠른 처리 속도에 기반하여, 데이터 처리 시스템에서 일반적으로 버퍼 메모리 장치, 캐시 메모리 장치, 동작 메모리 장치 등의 용도로 사용될 수 있다.
본 발명의 실시 예는 데이터 신뢰성이 향상된 데이터 저장 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 액세스 커맨드에 대응하는 타겟 영역을 액세스하도록 구성된 불휘발성 메모리 장치; 및 제1 해시 함수에 근거하여 상기 타겟 영역에 대응하는 제1 해시 값을 산출하고, 상기 제1 해시 값으로 인덱싱된 액세스 횟수를 업데이트하도록 구성된 프로세서를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 단일의 해시 값에 대응하는 복수의 영역들을 포함하는 불휘발성 메모리 장치; 및 상기 복수의 영역들의 액세스 횟수를 통합적으로 관리하도록 구성된 프로세서를 포함하되, 상기 액세스 횟수는 상기 해시 값으로 인덱싱될 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 단일의 해시 값에 대응하는 복수의 영역들 중 제1 영역을 액세스하기 위한 액세스 커맨드를 생성하는 단계; 및 상기 해시 값으로 인덱싱된 액세스 횟수를 증가시키는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 향상된 데이터 신뢰성을 제공할 수 있다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치를 예시적으로 도시한 블록도,
도2는 도1에 도시된 불휘발성 메모리 장치를 세부적으로 도시한 블록도,
도3a는 도2에 도시된 페이지들과 워드 라인들의 대응 관계를 도시한 도면,
도3b는 도2에 도시된 페이지들과 워드 라인들의 또 다른 대응 관계를 도시한 도면,
도4는 도1에 도시된 해싱부의 동작 방법을 예시적으로 설명하기 위한 도면,
도5는 도1에 도시된 데이터 저장 장치의 동작 방법을 예시적으로 설명하기 위한 순서도,
도6은 도1에 도시된 프로세서가 신뢰성 유지 동작을 수행하는 방법을 예시적으로 설명하기 위한 순서도,
도7은 도1에 도시된 프로세서가 인접 영역에 대해 데이터 점검 동작을 수행하는 방법을 예시적으로 설명하기 위한 순서도,
도8 및 도9는 도1에 도시된 프로세서가 신뢰성 유지 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면,
도10은 본 발명의 다른 실시 예에 따른 데이터 저장 장치를 예시적으로 도시한 블록도,
도11은 도10에 도시된 제1 해싱부 및 제2 해싱부의 동작 방법을 예시적으로 설명하기 위한 도면,
도12는 도10에 도시된 프로세서가 신뢰성 유지 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치(10)를 예시적으로 도시한 블록도이다.
데이터 저장 장치(10)는 외부 장치(미도시)의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치(10)는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 데이터 저장 장치(10)는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick), 다양한 멀티 미디어(Multi Media) 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 솔리드 스테이트 드라이브(Solid State Drive) 등으로 구성될 수 있다.
데이터 저장 장치(10)는 컨트롤러(100) 및 불휘발성 메모리 장치(200)를 포함할 수 있다.
컨트롤러(100)는 프로세서(110), 메모리(120) 및 ECC(Error Correction Code) 유닛(130)을 포함할 수 있다.
프로세서(110)는 데이터 저장 장치(10)의 제반 동작을 제어할 수 있다. 프로세서(110)는 불휘발성 메모리 장치(200)의 타겟 영역을 액세스하기 위해 액세스 커맨드, 예를 들어, 라이트 커맨드 또는 리드 커맨드를 생성하고, 생성된 액세스 커맨드를 불휘발성 메모리 장치(200)로 제공할 수 있다. 프로세서(110)는 메모리(120) 상에서 데이터 저장 장치(10)의 동작을 제어하기 위한 소프트웨어 프로그램을 구동할 수 있다.
프로세서(110)는 신뢰성 유지 동작을 수행할 수 있다. 신뢰성 유지 동작은 불휘발성 메모리 장치(200)의 일정 영역을 과도하게 액세스함으로써 일정 영역에 인접한 인접 영역에 저장된 데이터가 변형 또는 손실되는 것을 방지하기 위해서 수행될 수 있다. 신뢰성 유지 동작은 액세스 횟수 테이블(125)의 관리를 바탕으로 데이터 점검 동작을 수행함으로써 수행될 수 있다. 프로세서(110)는, 예를 들어, 리드 커맨드를 통해 불휘발성 메모리 장치(200)를 액세스할 때마다 신뢰성 유지 동작을 수행할 수 있다.
프로세서(110)는 메모리(120) 상에서 액세스 횟수 테이블(125)을 관리할 수 있다. 액세스 횟수 테이블(125)은 불휘발성 메모리 장치(200)의 일정 영역이 얼마나 액세스되었는지를 나타내는 액세스 횟수를 포함할 수 있다. 프로세서(110)는 불휘발성 메모리 장치(200)를 액세스할 때마다, 불휘발성 메모리 장치(200)의 타겟 영역에 대응하는 해시 값을 산출하고, 액세스 횟수 테이블(125)에서 산출된 해시 값으로 인덱싱된 액세스 횟수를 업데이트할 수 있다.
프로세서는 해싱부(115)를 포함할 수 있다. 해싱부(115)는 타겟 영역의 어드레스(ADD_T)에 근거하여 타겟 영역에 대응하는 해시 값(HV)을 산출할 수 있다. 해싱부(115)는 해시 함수에 근거하여 타겟 영역의 어드레스(ADD_T)를 해시 값(HV)으로 해싱할 수 있다. 예시적으로, 해싱부(115)는 디지털 회로, 아날로그 회로, 또는 디지털 및 아날로그 회로의 조합과 같은 하드웨어로 구현될 수 있다. 다른 예로서, 해싱부(115)는 펌웨어 등과 같은 소프트웨어로 구현될 수 있다. 다른 예로서, 해싱부(115)는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다.
프로세서(110)는 메모리(120)의 용량을 효율적으로 사용하기 위해서, 불휘발성 메모리 장치(200)의 복수의 영역들의 액세스 횟수를 통합적으로 관리할 수 있다. 프로세서(110)는, 액세스 횟수가 통합적으로 관리되는 복수의 영역들 중 어느 하나가 액세스되는 경우, 해당 액세스 횟수를 업데이트할 수 있다. 즉, 복수의 영역들에 대해 통합적으로 관리되는 액세스 횟수는 복수의 영역들 각각이 액세스된 횟수를 모두 더한 값일 수 있다.
프로세서(110)는 액세스 횟수가 통합적으로 관리되는 복수의 영역들을 공통의 해시 값에 대응시킬 수 있다. 해싱부(115)는 해시 함수에 근거하여 복수의 영역들 각각의 어드레스를 공통의 해시 값으로 해싱할 수 있다. 복수의 영역들에 대해 통합적으로 관리되는 액세스 횟수는 공통의 해시 값으로 인덱싱될 수 있다. 정리하면, 프로세서(110)는, 액세스 횟수가 통합적으로 관리되는 복수의 영역들 중 어느 하나가 액세스되는 경우, 액세스된 영역의 어드레스에 근거하여 복수의 영역들에 대응하는 공통의 해시 값을 산출하고 산출된 해시 값으로 인덱싱된 액세스 횟수를 업데이트할 수 있다.
액세스 횟수가 통합적으로 관리되는 복수의 영역들은 서로 다른 워드 라인들에 대응할 수 있다. 액세스 횟수가 통합적으로 관리되는 복수의 영역들은 복수의 페이지들일 수 있다.
프로세서(110)는 액세스 횟수 테이블(125)에 근거하여 불휘발성 메모리 장치(200)의 일정 영역을 과도하게 액세스한 것으로 판단되는 경우, 일정 영역의 인접 영역에 대해 데이터 점검 동작을 수행할 수 있다. 데이터 점검 동작은 인접 영역에 저장된 데이터의 변형 정도를 체크하고, 데이터의 변형 정도에 따라 인접 영역에 저장된 데이터를 변형되기 전의 상태로 복구시키기 위한 리클레임 동작을 선택적으로 수행함으로써 수행될 수 있다.
메모리(120)는 프로세서(110)의 동작 메모리, 버퍼 메모리 또는 캐시 메모리 등의 기능을 수행할 수 있다. 메모리(120)는 프로세서(110)에 의해 구동되는 소프트웨어 프로그램 및 각종 프로그램 데이터를 저장하거나, 외부 장치 및 불휘발성 메모리 장치(200) 간에 전송되는 데이터를 버퍼링하거나 또는 캐시 데이터를 임시 저장할 수 있다.
메모리(120)는 프로세서(110)에 의해 관리되는 액세스 횟수 테이블(125)을 저장할 수 있다. 상술한 바와 같이, 프로세서(110)가 불휘발성 메모리 장치(200)의 복수의 영역들의 액세스 횟수를 통합적으로 관리하는 경우, 메모리(120)의 한정된 영역은 효율적으로 사용될 수 있다. 만일, 프로세서(110)가 복수의 영역들의 액세스 횟수를 통합적으로 관리하지 않고 복수의 영역들 각각의 액세스 횟수를 개별적으로 관리한다면, 복수의 영역들의 총 개수만큼의 액세스 횟수들이 메모리(120)를 차지할 것이다. 액세스 횟수 테이블(125)은 불휘발성 메모리 장치(200)에 백업될 수 있다.
ECC 유닛(130)은 데이터가 불휘발성 메모리 장치(200)로 라이트되기 전에, 추후 데이터의 리드 시 에러 발생 여부를 판단하고 발생된 에러를 정정할 수 있도록, 라이트될 데이터를 인코딩할 수 있다. 예를 들어, ECC 유닛(130)은 불휘발성 메모리 장치(200)에 라이트될 데이터에 대한 패리티 데이터를 생성하고, 생성된 패리티 데이터를 라이트될 데이터에 부가함으로써, 라이트될 데이터를 인코딩할 수 있다.
ECC 유닛(130)은 인코딩된 데이터가 불휘발성 메모리 장치(200)로부터 리드되면, 리드된 데이터를 디코딩, 즉, 리드된 데이터에 대한 에러 정정 동작을 수행할 수 있다. 예를 들어, ECC 유닛(130)은 리드된 데이터에 포함된 패리티 데이터를 참조하여, 리드된 데이터에 발생된 에러를 검출하고 검출된 에러를 정정함으로써 에러 정정 동작을 수행할 수 있다.
ECC 유닛(130)은, 과도하게 액세스된 일정 영역의 인접 영역에 대해 데이터 점검 동작이 수행될 때, 해당 인접 영역으로부터 리드된 데이터의 변형 정도를 체크할 수 있다. 예를 들어, ECC 유닛(130)은 인접 영역으로부터 리드된 데이터에 발생된 에러를 검출함으로써 에러 발생률을 체크할 수 있다. ECC 유닛(130)은, 프로세서(110)가 인접 영역에 저장된 데이터를 변형되기 전의 상태로 복구시키기 위한 리클레임 동작의 수행이 필요한지 여부를 판단할 수 있도록, 인접 영역으로부터 리드된 데이터의 에러 발생률을 프로세서(110)로 보고할 수 있다.
불휘발성 메모리 장치(200)는 컨트롤러(100)의 제어 하에 데이터를 저장할 수 있다. 불휘발성 메모리 장치(200)는 액세스 커맨드에 대응하는 타겟 영역을 액세스할 수 있다.
도2는 도1에 도시된 불휘발성 메모리 장치(200)를 세부적으로 도시한 블록도이다.
불휘발성 메모리 장치(200)는 제어 로직(210), 인터페이스부 (220), 어드레스 디코더(230), 데이터 입출력부(240) 및 메모리 셀 어레이(250)를 포함할 수 있다.
제어 로직(210)은 불휘발성 메모리 장치(200)의 제반 동작을 제어할 수 있다. 제어 로직(210)은 컨트롤러(100)로부터 제공된 액세스 커맨드, 예를 들어, 라이트, 리드 또는 소거 커맨드에 응답하여 메모리 셀 어레이(250)에 대한 라이트, 리드 또는 소거 동작을 제어할 수 있다.
인터페이스부(220)는 컨트롤러(100)와 액세스 커맨드를 포함한 각종 제어 신호들 및 데이터를 주고 받을 수 있다. 인터페이스부(220)는 입력된 각종 제어 신호들 및 데이터를 불휘발성 메모리 장치(200)의 내부 유닛들로 전송할 수 있다.
어드레스 디코더(230)는 액세스 커맨드에 포함된 로우 어드레스 및 컬럼 어드레스를 디코딩할 수 있다. 어드레스 디코더(230)는 로우 어드레스의 디코딩 결과에 따라 워드 라인들(WL)이 선택적으로 구동되도록 제어할 수 있다. 어드레스 디코더(230)는 컬럼 어드레스의 디코딩 결과에 따라 비트 라인들(BL)이 선택적으로 구동되도록 데이터 입출력부(240)를 제어할 수 있다.
데이터 입출력부(240)는 인터페이스부(220)로부터 전송된 데이터를 비트 라인들(BL)을 통해 메모리 셀 어레이(250)로 전송할 수 있다. 데이터 입출력부(240)는 메모리 셀 어레이(250)로부터 비트 라인들(BL)을 통해 리드된 데이터를 인터페이스부(220)로 전송할 수 있다.
메모리 셀 어레이(250)는 워드 라인들(WL)과 비트 라인들(BL)이 교차하는 영역에 각각 배치된 복수의 메모리 셀들(미도시)을 포함할 수 있다. 메모리 셀들은 셀 당 저장되는 데이터 비트 수에 따라 구별될 수 있다. 예를 들어, 메모리 셀들은 셀 당 1비트를 저장하는 싱글 레벨 셀과 셀 당 적어도 2비트들을 저장하는 멀티 레벨 셀로 구별될 수 있다.
메모리 셀 어레이(250)는 동작 단위에 따라 구분되는 복수의 저장 영역들을 포함할 수 있다. 예를 들어, 메모리 셀 어레이(250)는 제1 내지 제8 페이지들(P1~P8)을 포함할 수 있다. 도2의 메모리 셀 어레이(250)는 8개의 페이지들을 포함하는 것으로 도시되지만, 메모리 셀 어레이(250)에 포함된 페이지들의 개수는 이에 제한되지 않는다.
페이지는 메모리 셀 어레이(250)에 대해 라이트 동작 또는 리드 동작이 수행되는 단위일 수 있다. 다른 말로 하면, 메모리 셀 어레이(250)는 페이지 단위로 액세스될 수 있다. 페이지는 대응하는 어드레스를 부여받고, 어드레스에 따라 액세스될 수 있다. 페이지는 대응하는 워드 라인을 구동함으로써 액세스될 수 있다.
도3a는 도2에 도시된 페이지들(P1~P8)과 워드 라인들(WL1~WL8)의 대응 관계를 도시한 도면이다.
도3a를 참조하면, 1개의 워드 라인은 1개의 페이지와 대응할 수 있다. 메모리 셀 어레이(250)에 포함된 제1 내지 제8 페이지들(P1~P8) 각각은 제1 내지 제8 워드 라인들(WL1~WL8) 각각에 대응할 수 있다. 1개의 워드 라인이 1개의 페이지와 대응할 때, 워드 라인에 연결된 메모리 셀들은 싱글 레벨 셀들일 수 있다.
상술한 바와 같이, 신뢰성 유지 동작에서, 타겟 영역에 대응하는 액세스 횟수가 업데이트되고, 인접 영역에 대해 데이터 점검 동작이 수행될 수 있다. 이때, 타겟 영역과 인접 영역은 인접한 워드 라인들 각각에 대응될 수 있다. 1개의 워드 라인이 1개의 페이지와 대응할 때, 타겟 영역이, 예를 들어, 제3 페이지(P3)일 때 인접 영역은 제2 및 제4 페이지(P2, P4)일 수 있다.
도3b는 도2에 도시된 페이지들(P1~P8)과 워드 라인들(WL1~WL4)의 또 다른 대응 관계를 도시한 도면이다.
도3b를 참조하면, 1개의 워드 라인은 2개의 페이지들과 대응할 수 있다. 메모리 셀 어레이(250)에 포함된 제1 및 제2 페이지들(P1, P2)은 제1 워드 라인(WL1)에 대응하고, 제3 및 제4 페이지들(P3, P4)은 제2 워드 라인(WL2)에 대응하고, 제5 및 제6 페이지들(P5, P6)은 제3 워드 라인(WL3)에 대응하고, 제7 및 제8 페이지들(P7, P8)은 제4 워드 라인(WL4)에 대응할 수 있다. 1개의 워드 라인이 2개의 페이지들과 대응할 때 워드 라인에 연결된 메모리 셀들은 멀티 레벨 셀들일 수 있다.
상술한 바와 같이, 신뢰성 유지 동작에서, 타겟 영역에 대응하는 액세스 횟수가 업데이트되고, 인접 영역에 대해 데이터 점검 동작이 수행될 수 있다. 이때, 타겟 영역과 인접 영역은 인접한 워드 라인들 각각에 대응될 수 있다. 1개의 워드 라인이 2개의 페이지들과 대응할 때, 타겟 영역이, 예를 들어, 제3 페이지(P3)일 때 인접 영역은 제1, 제2, 제5 및 제6 페이지(P1, P2, P5, P6)일 것이다.
도4는 도1에 도시된 해싱부(115)가 액세스 커맨드에 의해 액세스된 타겟 영역에 대응하는 해시 값(HV)을 산출하는 방법을 예시적으로 설명하기 위한 도면이다. 도4를 참조하면, 해시 값들(HV)로 인덱싱된 액세스 횟수 테이블(125)이 함께 도시된다.
해싱부(115)는 제1 내지 제8 페이지들(도2의 P1~P8) 각각에 대응하는 해시 값(HV)을 산출할 수 있다. 해싱부(115)는 해시 함수에 근거하여 제1 내지 제8 페이지들(P1~P8) 각각의 어드레스(ADD)를 대응하는 해시 값(HV)으로 해싱할 수 있다. 예를 들어, 액세스 커맨드에 의해 액세스된 타겟 영역이 제1 페이지(P1)인 경우, 해싱부(115)는 제1 페이지의 어드레스(ADD_P1)를 해시 값 '2'로 해싱할 수 있다.
상술한 바와 같이, 프로세서(110)는 복수의 페이지들의 액세스 횟수를 통합적으로 관리할 수 있고, 이를 위해서, 해싱부(115)는 복수의 페이지들의 어드레스들을 공통의 해시 값으로 해싱할 수 있다. 공통의 해시 값으로 해싱되는 복수의 페이지들은 해시 함수에 의해 결정될 수 있다.
해싱부(115)는, 액세스 횟수가 통합적으로 관리되는 복수의 페이지들 중 어느 하나가 액세스되는 경우, 대응하는 공통의 해시 값을 산출할 수 있다. 산출된 공통의 해시 값은 복수의 페이지들에 대해 통합적으로 관리되는 액세스 횟수의 인덱스 값일 수 있다.
도4를 참조하면, 해싱부(115)는, 예를 들어, 제3 및 제8 페이지들의 어드레스들(ADD_P3, ADD_P8)을 공통의 해시 값 '1'로 해싱할 수 있다. 해싱부(115)는 제3 및 제8 페이지들(P3, P8) 중 어느 하나가 액세스되는 경우, 해시 값 '1'을 산출할 수 있다. 이러한 해싱은 프로세서(110)로 하여금 제3 및 제8 페이지들(P3, P8)의 액세스 횟수를 공통의 해시 값 '1'로 인덱싱시킴으로써 통합적으로 관리하도록 할 것이다.
도4에서, 해싱부(115)는 2개의 페이지들의 어드레스들을 공통의 해시 값으로 해싱하는 것으로 도시되나, 공통의 해시 값으로 해싱되는 페이지들의 개수는 이에 제한되는 것은 아니다. 본 발명의 실시 예에 따르면, 액세스 횟수가 통합적으로 관리되는 복수의 페이지들의 개수는 제한되지 않는다.
도5는 도1에 도시된 데이터 저장 장치(10)의 동작 방법을 예시적으로 설명하기 위한 순서도이다.
S110 단계에서, 프로세서(110)는 타겟 영역을 액세스하기 위한 액세스 커맨드를 생성할 수 있다. 예를 들어, 프로세서(110)는 타겟 영역으로부터 데이터를 리드하기 위한 리드 커맨드를 생성할 수 있다. 불휘발성 메모리 장치(200)는 프로세서(110)로부터 제공된 액세스 커맨드에 응답하여 타겟 영역을 액세스할 것이다.
S120 단계에서, 프로세서(110)는 신뢰성 유지 동작을 수행할 수 있다. 신뢰성 유지 동작은 액세스 횟수 테이블(125)의 관리를 바탕으로 데이터 점검 동작을 수행함으로써 수행될 수 있다.
프로세서(110)는 불휘발성 메모리 장치(200)를 액세스할 때마다 신뢰성 유지 동작을 수행할 수 있다. 프로세서(110)는, 예를 들어, 리드 커맨드를 통해 불휘발성 메모리 장치(200)를 액세스할 때마다 신뢰성 유지 동작을 수행할 수 있다.
도6은 도1에 도시된 프로세서(110)가 신뢰성 유지 동작을 수행하는 방법을 예시적으로 설명하기 위한 순서도이다. 도6에 도시된 절차는 도5의 S120 단계에 대응될 수 있다. 도6에 도시된 절차에 앞서, 프로세서(110)는 타겟 영역을 액세스하기 위한 액세스 커맨드를 생성한 것으로 가정한다.
S210 단계에서, 해싱부(115)는 타겟 영역에 대응하는 해시 값을 산출할 수 있다. 해싱부(115)는 해시 함수에 근거하여 타겟 영역의 어드레스를 대응하는 해시 값으로 해싱할 수 있다.
S220 단계에서, 프로세서(110)는 산출된 해시 값으로 인덱싱된 액세스 횟수를 증가시킬 수 있다.
S230 단계에서, 프로세서(110)는 업데이트된 액세스 횟수가 임계값에 도달했는지 여부를 판단할 수 있다. 액세스 횟수가 임계값에 도달한 것으로 판단되는 경우(예), 절차는 S240 단계로 진행될 수 있다. 액세스 횟수가 임계값에 도달하지 않은 것으로 판단되는 경우(아니오), 절차는 종료될 수 있다. 즉, 액세스 횟수가 임계값에 도달하지 않은 경우는. 타겟 영역이 아직 과도하게 액세스되지 않은 것을 암시하기에, 프로세서(110)는 신뢰성 유지 동작을 종료할 수 있다.
S240 단계에서, 프로세서(110)는 타겟 영역에 인접한 인접 영역에 대해 데이터 점검 동작을 수행할 수 있다. 데이터 점검 동작은 인접 영역에 저장된 데이터의 변형 정도를 체크하고, 데이터의 변형 정도에 따라 인접 영역에 저장된 데이터를 변형되기 전의 상태로 복구시키기 위한 리클레임 동작을 선택적으로 수행함으로써 수행될 수 있다.
S250 단계에서, 프로세서(110)는 S210 단계에서 산출된 해시 값으로 인덱싱된 액세스 횟수를 감소시킬 수 있다. S240 단계에서 데이터 점검 동작을 통해 인접 영역에 저장된 데이터가 점검되었으므로, 프로세서(110)는 인접 영역에 대한 후속 데이터 점검 동작을 지연시키기 위해서 타겟 영역에 대응하는 액세스 횟수를 감소시킬 수 있다.
상술한 바와 같이, 프로세서(110)는 타겟 영역을 비롯한 복수의 영역들의 액세스 횟수를 통합적으로 관리할 수 있다. 이러한 경우, S220 단계에서 증가된 액세스 횟수는 통합적으로 관리되는 복수의 영역들 중 타겟 영역 이외의 영역들에 대한 액세스에 의해서도 증가될 수 있다. 타겟 영역을 액세스함으로써 액세스 횟수가 임계 값에 비로소 도달하더라도, 그러한 결과는 타겟 영역 이외의 영역들에 대한 과도한 액세스에 기인한 것일 수 있다. 따라서, 프로세서(110)는 타겟 영역에 대응하는 액세스 횟수를 완전히 리셋하지 않고 설정 값으로 감소시킴으로써, 통합적으로 관리되는 복수의 영역들 타겟 영역 이외의 영역들에 대한 과도한 액세스의 가능성을 어느 정도 유지시킬 수 있다.
도7은 도1에 도시된 프로세서(110)가 인접 영역에 대해 데이터 점검 동작을 수행하는 방법을 예시적으로 설명하기 위한 순서도이다. 도7에 도시된 절차는 도6의 S240 단계에 대응될 수 있다.
S310 단계에서, 프로세서(110)는 타겟 영역에 인접한 인접 영역에 저장된 데이터를 리드할 수 있다.
S320 단계에서, ECC 유닛(130)은 인접 영역으로부터 리드된 데이터의 에러 발생률을 체크할 수 있다. ECC 유닛(130)은 프로세서(110)가 인접 영역에 대한 리클레임 동작의 수행이 필요한지 여부를 판단할 수 있도록, 에러 발생률을 프로세서(110)로 보고할 수 있다.
S330 단계에서, 프로세서(110)는 인접 영역으로부터 리드된 데이터의 에러 발생률에 근거하여 인접 영역에 대해 리클레임 동작을 수행할 필요가 있는지 여부를 결정할 수 있다. 예를 들어, 프로세서(110)는 에러 발생률과 임계값을 비교하고 에러 발생률이 임계값을 초과하는 경우 리클레임 동작을 수행할 필요가 있는 것으로 결정할 수 있다. 리클레임 동작이 수행될 필요가 있는 것으로 결정되는 경우(예), 절차는 S340 단계로 진행될 수 있다. 리클레임 동작이 수행될 필요가 없는 것으로 결정되는 경우(아니오), 절차는 종료될 수 있다.
S340 단계에서, 프로세서(110)는 인접 영역에 저장된 데이터를 변형되기 전의 상태로 복구시키기 위해 인접 영역에 대해 리클레임 동작을 수행할 수 있다. 예를 들어, 프로세서(110)는 가비지 컬렉션 동작을 통해서 리클레임 동작을 수행할 수 있다. 프로세서(110)는 인접 영역에 저장된 데이터를 다른 영역에 다시 저장함으로써 변형되기 전의 상태로 복구시킬 수 있다.
도8 및 도9는 도1에 도시된 프로세서(110)가 신뢰성 유지 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면이다. 도8을 참조하면, 프로세서(110)가 신뢰성 유지 동작을 수행하는 과정, 예를 들어, 도6에서 좌측 화살표(A1)에 따른 절차가 도시된다. 도9를 참조하면, 프로세서(110)가 신뢰성 유지 동작을 수행하는 또 다른 과정, 예를 들어, 도6에서 우측 화살표(A2)에 따른 절차가 도시된다. 도8 및 도9에서 프로세서(110)는, 타겟 영역으로부터 인접 영역으로 미치는 리드 디스터번스 효과에 의한 데이터 변형 또는 손실를 방지하기 위해, 리드 커맨드를 통해 불휘발성 메모리 장치(200)를 액세스할 때마다 신뢰성 유지 동작을 수행하는 것으로 가정한다.
이하, 도4, 도6 및 도8을 참조하여 프로세서(110)가 신뢰성 유지 동작을 수행하는 방법이 상세하게 설명될 것이다. 도8에서, 프로세서(110)는 타겟 영역, 예를 들어, 제2 페이지(P2)에 대한 리드 커맨드를 생성하고, 제2 페이지(P2)를 리드한 것으로 가정한다.
해싱부(115)는 제2 페이지(P2)에 대응하는 해시 값(HV)을 산출할 수 있다(①). 해싱부(115)는, 도4에 도시된 산출 방법에 따라, 해시 함수에 근거하여 제2 페이지(P2)의 어드레스(ADD_P2)를 해시 값 '3'으로 해싱할 수 있다.
프로세서(110)는 메모리(120) 상의 액세스 횟수 테이블(125)에서 산출된 해시 값 '3'으로 인덱싱된 액세스 횟수를 증가시킬 수 있다(②).
프로세서(110)는 업데이트된 액세스 횟수가 임계값에 도달했는지 여부를 판단할 수 있다. 임계값이 100으로 설정된 경우, 프로세서(110)는 업데이트된 액세스 횟수가 아직 76이기 때문에 임계값에 도달하지 않은 것으로 판단할 수 있다. 프로세서(110)는 신뢰성 유지 동작을 종료할 수 있다.
다음으로, 도4, 도6 및 도9를 참조하여 프로세서(110)가 신뢰성 유지 동작을 수행하는 또 다른 방법이 상세하게 설명될 것이다. 도9에서, 프로세서(110)는 타겟 영역, 예를 들어, 제3 페이지(P3)에 대한 리드 커맨드를 생성하고, 제3 페이지(P3)를 리드한 것으로 가정한다.
해싱부(115)는 제3 페이지(P3)에 대응하는 해시 값(HV)을 산출할 수 있다(①). 해싱부(115)는, 도4에 도시된 산출 방법에 따라, 해시 함수에 근거하여 제3 페이지의 어드레스(ADD_P3)를 해시 값 '1'로 해싱할 수 있다.
프로세서(110)는 메모리(120) 상의 액세스 횟수 테이블(125)에서 산출된 해시 값 '1'로 인덱싱된 액세스 횟수를 증가시킬 수 있다(②).
프로세서(110)는 업데이트된 액세스 횟수가 임계값에 도달했는지 여부를 판단할 수 있다. 임계값이 100으로 설정된 경우, 프로세서(110)는 업데이트된 액세스 횟수가 100이기 때문에 임계값에 도달한 것으로 판단할 수 있다.
프로세서(110)는 인접 영역에 대해 데이터 점검 동작을 수행할 수 있다(③). 도3a에서 도시된 바와 같이 1개의 워드 라인에 1개의 페이지가 대응될 때, 프로세서(110)는 제2 및 제4 페이지들(P2, P4)에 대해 데이터 점검 동작을 수행할 수 있다.
프로세서(110)는 인접 영역에 대해 데이터 점검 동작을 수행한 뒤 액세스 횟수 테이블(125)에서 해시 값 '1'로 인덱싱된 액세스 횟수를 감소시킬 수 있다(④). 데이터 점검 동작을 통해 제2 및 제4 페이지들(P2, P4)에 저장된 데이터가 점검되었으므로, 프로세서(110)는 제2 및 제4 페이지들(P2, P4)에 대한 후속 데이터 점검 동작을 지연시키기 위해서 액세스 횟수를 감소시킬 수 있다. 다만, 해시 값 '1'로 인덱싱된 액세스 횟수는, 도4를 참조하면, 제3 및 제8 페이지들(P3, P8)에 대해 통합적으로 관리되는 액세스 횟수이기 때문에 프로세서(110)는 해시 값 '1'로 인덱싱된 액세스 횟수를 설정 값, 예를 들어, 70으로 감소시킬 수 있다. 즉, 프로세서(110)는 제3 페이지(P3)가 아닌 제8 페이지(P8)에 대한 과도한 액세스의 가능성을 어느 정도 유지시키기 위해, 해시 값 '1'로 인덱싱된 액세스 횟수를 완전히 리셋하지 않을 수 있다.
도10은 본 발명의 다른 실시 예에 따른 데이터 저장 장치(20)를 예시적으로 도시한 블록도이다. 도10에 있어서, 도1에서 설명된 데이터 저장 장치(10)의 구성 요소와 실질적으로 동일한 구성 요소에 대해서는 도1과 동일한 참조 부호가 사용될 것이고, 해당 구성 요소에 대한 상세한 설명은 생략될 것이다.
데이터 저장 장치(20)는 컨트롤러(300)가 제1 해싱부(315) 및 제2 해싱부(317)를 포함하는 것을 제외하고 도1에 도시된 데이터 저장 장치(10)와 실질적으로 유사하게 구성되고 동작할 수 있다.
프로세서(310)는 액세스 횟수 테이블(325)을 관리할 수 있다. 프로세서(310)는 액세스 커맨드를 통해 불휘발성 메모리 장치(200)를 액세스할 때마다, 불휘발성 메모리 장치(200)의 타겟 영역에 대응하는 복수의 해시 값들, 예를 들어, 제1 해시 값(HV1) 및 제2 해시 값(HV2)을 산출하고, 액세스 횟수 테이블(325)에서 산출된 제1 해시 값(HV1)으로 인덱싱된 액세스 횟수 및 제2 해시 값(HV2)으로 인덱싱된 액세스 횟수를 모두 업데이트할 수 있다.
프로세서(310)는 제1 해싱부(315) 및 제2 해싱부(317)를 포함할 수 있다. 제1 해싱부(315) 및 제2 해싱부(317) 각각은 도1의 해싱부(115)와 실질적으로 유사하게 구성되고 동작할 수 있다. 제1 해싱부(315) 및 제2 해싱부(317)는 타겟 영역에 대응하는 서로 다른 해시 값들을 각각 산출할 수 있다. 제1 해싱부(315)는 제1 해시 함수에 근거하여 타겟 영역의 어드레스(ADD_T)를 제1 해시 값(HV1)으로 해싱할 수 있다. 제2 해싱부(317)는 제2 해시 함수에 근거하여 타겟 영역의 어드레스(ADD_T)를 제2 해시 값(HV2)으로 해싱할 수 있다.
도10에서 프로세서(310)는 2개의 해싱부를 포함하는 것으로 도시되나, 포함되는 해싱부의 개수는 이에 제한되는 것은 아니다. 실시 예에 따라, 프로세서(310)에 포함되는 해싱부들의 개수만큼 타겟 영역에 대응하는 서로 다른 해시 값들이 산출될 수 있고, 프로세서(310)는 산출된 해시 값들 각각으로 인덱싱된 액세스 횟수들을 모두 업데이트할 수 있다.
도11은 도10에 도시된 제1 해싱부(315) 및 제2 해싱부(317)가 액세스 커맨드에 의해 액세스된 타겟 영역에 대응하는 서로 다른 해시 값들(HV), 즉, 제1 해시 값(HV1) 및 제2 해시 값(HV2)을 각각 산출하는 방법을 예시적으로 설명하기 위한 도면이다. 도11을 참조하면, 해시 값들(HV)로 인덱싱된 액세스 횟수 테이블(325)이 함께 도시된다.
제1 해싱부(315) 및 제2 해싱부(317)는 제1 내지 제8 페이지들(P1~P8) 각각에 대응하는 제1 해시 값(HV1) 및 제2 해시 값(HV2)을 산출할 수 있다. 제1 해싱부(315)는 제1 해시 함수에 근거하여 제1 내지 제8 페이지들(P1~P8) 각각의 어드레스(ADD)를 대응하는 제1 해시 값(HV1)으로 해싱할 수 있다. 제2 해싱부(317)는 제2 해시 함수에 근거하여 제1 내지 제8 페이지들(P1~P8) 각각의 어드레스(ADD)를 대응하는 제2 해시 값(HV2)으로 해싱할 수 있다. 예를 들어, 액세스 커맨드에 의해 액세스된 타겟 영역이 제3 페이지(P3)인 경우, 제1 해싱부(315)는 제3 페이지(P3)의 어드레스(ADD_P3)를 제1 해시 값 '1'로 해싱하고, 제2 해싱부(317)는 제3 페이지(P3)의 어드레스(ADD_P3)를 제2 해시 값 '3'으로 해싱할 수 있다.
프로세서(310)가 제1 해싱부(315)에 의해 제1 해시 값(HV1)만을 산출하는 것으로 가정하면, 제1 해시 값(HV1)으로 인덱싱된 제1 액세스 횟수 테이블(325_1)을 관리할 것이다. 마찬가지로, 프로세서(310)가 제2 해싱부(317)에 의해 제2 해시 값(HV2)만을 산출하는 것으로 가정하면, 제2 해시 값(HV2)으로 인덱싱된 제2 액세스 횟수 테이블(325_2)을 관리할 것이다. 프로세서(310)는 제1 해싱부(315) 및 제2 해싱부(317)에 의해 제1 해시 값(HV1) 및 제2 해시 값(HV2)을 산출함에 따라, 제1 액세스 횟수 테이블(325_1)과 제2 액세스 횟수 테이블(325_2)이 통합된 액세스 횟수 테이블(325)을 관리할 수 있다.
도12는 도10에 도시된 프로세서(310)가 신뢰성 유지 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면이다. 도12에서 프로세서(310)는, 타겟 영역으로부터 인접 영역으로 미치는 리드 디스터번스 효과에 의한 데이터 변형 또는 손실를 방지하기 위해, 리드 커맨드를 통해 불휘발성 메모리 장치(200)를 액세스할 때마다 신뢰성 유지 동작을 수행하는 것으로 가정한다.
이하, 도10 내지 도 12를 참조하여 프로세서(310)가 신뢰성 유지 동작을 수행하는 방법이 상세하게 설명될 것이다. 도12에서, 프로세서(310)는 타겟 영역, 예를 들어, 제3 페이지(P3)에 대한 리드 커맨드를 생성하고, 제3 페이지(P3)를 리드한 것으로 가정한다.
제1 해싱부(315) 및 제2 해싱부(317)는 제3 페이지(P3)에 대응하는 제1 해시 값(HV1) 및 제2 해시 값(HV2)을 각각 산출할 수 있다(①). 제1 해싱부(315)는 도11에 도시된 산출 방법에 따라, 제1 해시 함수에 근거하여 제3 페이지(P3)의 어드레스(ADD_P3)를 제1 해시 값 '1'로 해싱할 수 있다. 제2 해싱부(317)는 도11에 도시된 산출 방법에 따라, 제2 해시 함수에 근거하여 제3 페이지(P3)의 어드레스(ADD_P3)를 제2 해시 값 '3'으로 해싱할 수 있다.
프로세서(310)는 메모리(120) 상의 액세스 횟수 테이블(325)에서 산출된 제1 해시 값 '1'로 인덱싱된 액세스 횟수를 49에서 50으로 증가시키고, 제2 해시 값 '3'으로 인덱싱된 액세스 횟수를 30에서 31로 증가시킬 수 있다(②).
프로세서(310)는 업데이트된 액세스 횟수들 중 적어도 하나가 임계값에 도달했는지 여부를 판단할 수 있다. 임계값이 50으로 설정된 경우, 프로세서(110)는 해시 값 '1'로 인덱싱된 액세스 횟수가 임계값에 도달한 것으로 판단할 수 있다.
프로세서(310)는 인접 영역에 대해 데이터 점검 동작을 수행할 수 있다(③). 1개의 워드 라인에 1개의 페이지가 대응될 때, 프로세서(310)는 제2 및 제4 페이지들(P2, P4)에 대해 데이터 점검 동작을 수행할 수 있다.
프로세서(310)는 인접 영역에 대해 데이터 점검 동작을 수행한 뒤 액세스 횟수 테이블(325)에서 해시 값 '1'로 인덱싱된 액세스 횟수를 감소시킬 수 있다(④). 데이터 점검 동작을 통해 제2 및 제4 페이지들(P2, P4)에 저장된 데이터가 점검되었으므로, 프로세서(310)는 제2 및 제4 페이지들(P2, P4)에 대한 후속 데이터 점검 동작을 지연시키기 위해서 액세스 횟수를 감소시킬 수 있다. 다만, 해시 값 '1'로 인덱싱된 액세스 횟수는, 도11을 참조하면, 제1, 제3, 제5 및 제8 페이지들(P1, P3, P5, P8)에 대해 통합적으로 관리되는 액세스 횟수이기 때문에, 프로세서(310)는 해시 값 '1'로 인덱싱된 액세스 횟수를 설정 값, 예를 들어, 25로 감소시킬 수 있다. 즉, 프로세서(310)는 제3 페이지(P3)가 아닌 나머지 제1, 제5 및 제8 페이지들(P1, P5, P8)에 대한 과도한 액세스의 가능성을 어느 정도 유지시키기 위해, 해시 값 '1'로 인덱싱된 액세스 횟수를 완전히 리셋하지 않을 수 있다.
도12를 계속 참조하면, 도10의 데이터 저장 장치(20)는 아래와 같은 상황에서 도1의 데이터 저장 장치(10)에 비해 효과적일 수 있다. 예를 들어, 도12에서 제3 페이지(P3)가 액세스되기 전에 제8 페이지(P8)가 과도하게 액세스된 것으로 가정한다. 제8 페이지(P8)는 제1 해싱부(315)에 의해 제1 해시 값 '1'에 대응하고, 제2 해싱부(317)에 의해 제2 해시 값 '4'에 대응할 수 있다. 따라서, 제1 해시 값 '1' 및 제2 해시 값 '4'로 인덱싱된 액세스 횟수들이 모두 임계값에 가깝게, 예를 들어, 각각 49 및 48까지 증가될 수 있다. 이러한 상태에서, 제3 페이지(P3)에 대한 액세스 결과, 제1 해시 값 '1'로 인덱싱된 액세스 횟수가 비로소 임계값 50에 도달하고, 이어서 25로 감소될 수 있다. 그럼에도 불구하고, 해시 값 '4'로 인덱싱된 액세스 횟수는 48로 그대로 유지되기 때문에, 제8 페이지의 인접 영역에 대한 데이터 점검 동작 수행의 기회가 보다 빠른 시간 이내에 주어질 수 있고, 따라서, 데이터 신뢰성이 더욱 보장될 수 있을 것이다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치
100: 컨트롤러
110: 프로세서
115: 해싱부
120: 메모리
125: 액세스 횟수 테이블
130: ECC 유닛
200: 불휘발성 메모리 장치

Claims (20)

  1. 액세스 커맨드에 대응하는 타겟 영역을 액세스하도록 구성된 불휘발성 메모리 장치; 및
    제1 해시 함수에 근거하여 상기 타겟 영역에 대응하는 제1 해시 값을 산출하고, 상기 제1 해시 값으로 인덱싱된 액세스 횟수를 업데이트하도록 구성된 프로세서를 포함하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 프로세서는 상기 타겟 영역의 어드레스에 근거하여 상기 제1 해시 값을 산출하는 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 제1 해시 값은 상기 불휘발성 메모리 장치의 복수의 영역들에 공통으로 대응하고,
    상기 프로세서는 상기 복수의 영역들 중 어느 하나를 액세스한 경우 상기 제1 해시 값으로 인덱싱된 상기 액세스 횟수를 업데이트하는 데이터 저장 장치.
  4. 제3항에 있어서,
    상기 복수의 영역들은 서로 다른 워드라인들에 대응하는 데이터 저장 장치.
  5. 제1항에 있어서,
    상기 프로세서는 상기 액세스 횟수를 증가시킴으로써 상기 액세스 횟수를 업데이트하는 데이터 저장 장치.
  6. 제5항에 있어서,
    상기 프로세서는 상기 증가된 액세스 횟수와 임계 값의 비교 결과에 따라 상기 타겟 영역에 인접한 적어도 하나의 인접 영역에 대해 데이터 점검 동작을 수행하는 데이터 저장 장치.
  7. 제6항에 있어서,
    상기 프로세서는, 상기 인접 영역에 대해 상기 데이터 점검 동작을 수행한 뒤, 상기 액세스 횟수를 감소시킴으로써 상기 액세스 횟수를 업데이트하는 데이터 저장 장치.
  8. 제1항에 있어서,
    상기 프로세서는, 제2 해시 함수에 근거하여 상기 타겟 영역에 대응하는 제2 해시 값을 산출하고, 상기 제2 해시 값으로 인덱싱된 액세스 횟수를 업데이트하는 데이터 저장 장치.
  9. 단일의 해시 값에 대응하는 복수의 영역들을 포함하는 불휘발성 메모리 장치; 및
    상기 복수의 영역들의 액세스 횟수를 통합적으로 관리하도록 구성된 프로세서를 포함하되,
    상기 액세스 횟수는 상기 해시 값으로 인덱싱되는 데이터 저장 장치.
  10. 제9항에 있어서,
    상기 복수의 영역들은 서로 다른 워드라인들에 대응하는 데이터 저장 장치.
  11. 제9항에 있어서,
    상기 프로세서는, 상기 복수의 영역들 중 어느 하나의 어드레스가 입력되는 경우 상기 해시 값을 산출하도록 구성된 해싱부를 포함하는 데이터 저장 장치.
  12. 제9항에 있어서,
    상기 프로세서는 상기 복수의 영역들 중 어느 하나인 타겟 영역을 액세스한 경우 상기 액세스 횟수를 증가시킴으로써 업데이트하는 데이터 저장 장치.
  13. 제12항에 있어서,
    상기 프로세서는 상기 액세스 횟수와 임계값의 비교 결과에 따라 상기 타겟 영역에 인접한 적어도 하나의 인접 영역에 대해 데이터 점검 동작을 수행하는 데이터 저장 장치.
  14. 제13항에 있어서,
    상기 프로세서는 상기 인접 영역에 대해 데이터 점검 동작을 수행한 뒤, 상기 액세스 횟수를 감소시킴으로써 상기 액세스 횟수를 업데이트하는 데이터 저장 장치.
  15. 단일의 해시 값에 대응하는 복수의 영역들 중 제1 영역을 액세스하기 위한 액세스 커맨드를 생성하는 단계; 및
    상기 해시 값으로 인덱싱된 액세스 횟수를 증가시키는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  16. 제15항에 있어서,
    상기 복수의 영역들은 서로 다른 워드라인들에 대응하는 데이터 저장 장치의 동작 방법.
  17. 제15항에 있어서,
    상기 제1 영역의 어드레스에 근거하여 상기 해시 값을 산출하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  18. 제15항에 있어서,
    상기 액세스 횟수가 임계값에 도달했는지 여부를 판단하는 단계; 및
    상기 액세스 횟수가 상기 임계값에 도달한 경우, 상기 제1 영역에 인접한 인접 영역에 대해 데이터 점검 동작을 수행하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  19. 제18항에 있어서,
    상기 인접 영역에 대해 상기 데이터 점검 동작을 수행하는 단계는,
    상기 인접 영역에 저장된 데이터를 리드하는 단계;
    상기 인접 영역으로부터 리드된 데이터의 에러 발생률을 체크하는 단계; 및
    상기 에러 발생률에 따라, 상기 인접 영역에 저장된 데이터를 복구시키기 위한 리클레임 동작을 선택적으로 수행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  20. 제18항에 있어서,
    상기 데이터 점검 동작을 수행한 뒤 상기 해시 값으로 인덱싱된 상기 액세스 횟수를 감소시키는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
KR1020140134982A 2014-10-07 2014-10-07 데이터 저장 장치 및 그것의 동작 방법 KR20160042224A (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020140134982A KR20160042224A (ko) 2014-10-07 2014-10-07 데이터 저장 장치 및 그것의 동작 방법
US14/600,909 US20160098214A1 (en) 2014-10-07 2015-01-20 Data storage device and operating method thereof
TW104113256A TWI682275B (zh) 2014-10-07 2015-04-24 資料儲存裝置及其操作方法
CN201510347610.3A CN105489242B (zh) 2014-10-07 2015-06-19 数据储存器件及其操作方法
US14/820,261 US9678827B2 (en) 2014-10-07 2015-08-06 Access counts for performing data inspection operations in data storage device
TW104132898A TWI683252B (zh) 2014-10-07 2015-10-06 資料儲存設備及其操作方法
CN201510646958.2A CN105489239B (zh) 2014-10-07 2015-10-08 数据储存设备及其操作方法
US16/289,096 US11010289B2 (en) 2014-10-07 2019-02-28 Data storage device and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140134982A KR20160042224A (ko) 2014-10-07 2014-10-07 데이터 저장 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20160042224A true KR20160042224A (ko) 2016-04-19

Family

ID=55632849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140134982A KR20160042224A (ko) 2014-10-07 2014-10-07 데이터 저장 장치 및 그것의 동작 방법

Country Status (4)

Country Link
US (2) US20160098214A1 (ko)
KR (1) KR20160042224A (ko)
CN (1) CN105489242B (ko)
TW (1) TWI682275B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10275541B2 (en) * 2016-08-05 2019-04-30 Micron Technology, Inc. Proactive corrective actions in memory based on a probabilistic data structure
KR20180076765A (ko) * 2016-12-28 2018-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN106875977A (zh) * 2017-02-27 2017-06-20 郑州云海信息技术有限公司 一种固态硬盘调试方法及装置
US10324634B2 (en) * 2017-04-07 2019-06-18 Micron Technology, Inc. Methods of bit-flagged sketch-based memory management and memory devices utilizing the same
US10379757B2 (en) * 2017-04-07 2019-08-13 Micron Technology, Inc. Methods of sketch-based memory management and memory devices utilizing the same

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446223B1 (en) * 1998-09-09 2002-09-03 Hitachi, Ltd. Storage system and method for controlling the same
US6347362B1 (en) * 1998-12-29 2002-02-12 Intel Corporation Flexible event monitoring counters in multi-node processor systems and process of operating the same
US6104638A (en) * 1999-02-26 2000-08-15 Hewlett-Packard Company Use of erasable non-volatile memory for storage of changing information
US6799241B2 (en) * 2002-01-03 2004-09-28 Intel Corporation Method for dynamically adjusting a memory page closing policy
US20070208904A1 (en) 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
CN101290635A (zh) * 2008-06-24 2008-10-22 中兴通讯股份有限公司 一种基于特征字的内存管理方法及其装置
TWI405208B (zh) * 2009-08-06 2013-08-11 Novatek Microelectronics Corp 快閃記憶體及其存取方法
US7818525B1 (en) * 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8935487B2 (en) 2010-05-05 2015-01-13 Microsoft Corporation Fast and low-RAM-footprint indexing for data deduplication
TWI490869B (zh) * 2010-08-13 2015-07-01 Mstar Semiconductor Inc 應用於快閃記憶體的方法與相關的控制器
EP2437433B1 (en) * 2011-04-19 2017-09-06 Huawei Technologies Co., Ltd. Memory access monitoring method and device
US9176800B2 (en) 2011-08-31 2015-11-03 Micron Technology, Inc. Memory refresh methods and apparatuses
US20130097403A1 (en) 2011-10-18 2013-04-18 Rambus Inc. Address Mapping in Memory Systems
US8910000B2 (en) * 2012-05-17 2014-12-09 Micron Technology, Inc. Program-disturb management for phase change memory
US9092359B2 (en) * 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9418700B2 (en) * 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
CN103176752A (zh) 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
US8804418B1 (en) * 2012-08-31 2014-08-12 Cadence Design Systems, Inc. Low overhead read disturbance protection method for NAND flash device
US9870814B2 (en) * 2012-10-22 2018-01-16 Hewlett Packard Enterprise Development Lp Refreshing a group of memory cells in response to potential disturbance
US9213852B2 (en) * 2012-12-12 2015-12-15 Vmware, Inc. Limiting access to a digital item
US9171605B1 (en) * 2012-12-21 2015-10-27 Samsung Electronics Co., Ltd. Concentrated address detecting method of semiconductor device and concentrated address detecting circuit using the same
WO2014120228A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company Ram refresh rate
US9058870B2 (en) * 2013-02-08 2015-06-16 Seagate Technology Llc Hash functions used to track variance parameters of resistance-based memory elements
US9189409B2 (en) * 2013-02-19 2015-11-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing writes to solid state drive cache memories of storage controllers
US9092336B2 (en) * 2013-03-15 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Write admittance policy for a memory cache
CN103150136B (zh) 2013-03-25 2014-07-23 中国人民解放军国防科学技术大学 基于ssd的大容量缓存中的lru策略实现方法
US9298620B2 (en) * 2013-11-25 2016-03-29 Apple Inc. Selective victimization in a multi-level cache hierarchy
US9240235B2 (en) * 2013-12-19 2016-01-19 Sandisk Technologies Inc. Mitigating disturb effects for non-volatile memory
US9230689B2 (en) * 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US9405703B2 (en) * 2014-06-04 2016-08-02 Advanced Micro Devices, Inc. Translation lookaside buffer

Also Published As

Publication number Publication date
CN105489242B (zh) 2021-02-05
US20160098214A1 (en) 2016-04-07
CN105489242A (zh) 2016-04-13
TWI682275B (zh) 2020-01-11
US11010289B2 (en) 2021-05-18
US20190196954A1 (en) 2019-06-27
TW201614494A (en) 2016-04-16

Similar Documents

Publication Publication Date Title
US9678827B2 (en) Access counts for performing data inspection operations in data storage device
KR102174293B1 (ko) 확률론적 데이터 구조에 기초한 메모리 내의 사전적인 교정 조치
CN108269604B (zh) 用于读取干扰检测以及处理的方法和装置
US11010289B2 (en) Data storage device and operating method thereof
US8713381B2 (en) Systems and methods of using dynamic data for wear leveling in solid-state devices
US20170148511A1 (en) Memory access module for performing memory access management
US10818371B2 (en) Data storage devices and data processing methods
TWI566252B (zh) 非揮發性記憶體裝置進行耗損管理之方法
US10020822B2 (en) Error tolerant memory system
US20160350179A1 (en) Decoding method, memory storage device and memory control circuit unit
US9417959B2 (en) Flash device and operating method thereof
US8631306B2 (en) Method and memory system using a priori probability information to read stored data
US10747660B2 (en) Method and system for forming and using memory superblocks based on performance grades
US9619323B2 (en) Data storage device and operating method thereof
US20120159280A1 (en) Method for controlling nonvolatile memory apparatus
US10922025B2 (en) Nonvolatile memory bad row management
US20170018315A1 (en) Test system and test method
KR102527288B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US10073685B2 (en) Methods of system optimization by over-sampling read
KR20160129418A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102246843B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US9436547B2 (en) Data storing method, memory control circuit unit and memory storage device

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid