KR20150092676A - 메모리 제어 방법 - Google Patents
메모리 제어 방법 Download PDFInfo
- Publication number
- KR20150092676A KR20150092676A KR1020140013322A KR20140013322A KR20150092676A KR 20150092676 A KR20150092676 A KR 20150092676A KR 1020140013322 A KR1020140013322 A KR 1020140013322A KR 20140013322 A KR20140013322 A KR 20140013322A KR 20150092676 A KR20150092676 A KR 20150092676A
- Authority
- KR
- South Korea
- Prior art keywords
- read
- read command
- additional
- read1
- command
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 불휘발성 메모리 읽기 동작에 따른 읽기 레이턴시 오버헤드를 줄이기 위한 메모리 제어 방법들에 대하여 개시된다. 메모리 제어 방법은, 읽기 명령이 수행될 불휘발성 메모리의 읽기 회수가 소정의 임계치를 넘은 경우, 랜덤 네이버 선택 동작에 의해 읽기 명령에 대응하는 복수의 추가 읽기 동작들이 수행될 주소들을 선택한다. 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하는 복수의 추가 읽기 동작들은 분산되어 처리된다. 복수의 추가 읽기 동작들이 수행될 주소들은 호스트로 전송되고, 호스트에 의해 복수의 추가 읽기 동작들이 사용자 읽기 동작으로 처리된다.
Description
본 발명은 메모리 제어 방법에 관한 것으로, 특히 불휘발성 메모리 읽기 동작에 따른 읽기 레이턴시 오버헤드를 줄이기 위하여 랜덤 네이버 선택 동작과 연계하는 메모리 제어 방법들에 관한 것이다.
낸드형 플래시 메모리에는 리드 디스털브(read disturb)로 불리는 읽기 동작에 기인하는 데이터 오류가 존재한다. 이러한 데이터 오류를 방지하기 위하여, 리드 디스털브 검사(read disturb check)를 실행한다. 리드 디스털브 검사는 읽기 명령에 의해 선택된 페이지의 읽기 동작을 수행한 후, 선택된 페이지에 이웃하는 전페이지 또는 일부 페이지들에 대하여 순차 읽기 동작들을 수행하는 것을 말한다. 리드 디스털브 검사를 위한 순차 읽기 동작들 때문에, 플래시 메모리 표준에 규정된 읽기 시간이 초과될 수 있다. 이에 따라, 읽기 레이턴시 오버헤드(read latency overhead) 문제점이 발생된다.
본 발명이 이루고자 하는 기술적 과제는, 불휘발성 메모리 읽기 동작에 따른 읽기 레이턴시 오버헤드를 줄이기 위하여 랜덤 네이버 선택 동작과 연계하는 메모리 제어 방법들을 제공하는 데 있다.
상기 기술적 과제를 달성하기 위하여, 본 발명의 일면에 따른 메모리 제어 방법은 콘트롤러에 의해 불휘발성 메모리의 읽기 동작을 제어한다. 메모리 제어 방법은, 제1 읽기 명령을 수신하는 단계, 제1 읽기 명령이 수행될 불휘발성 메모리의 읽기 회수가 소정의 임계치를 넘은 경우, 랜덤 네이버 선택 동작에 의해 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작들이 수행될 주소들을 선택하는 단계, 제1 읽기 명령에 따른 제1 읽기 동작을 수행하는 단계, 그리고 복수의 추가 읽기 동작들을 분산시켜, 제1 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하는 단계를 포함한다.
본 발명의 실시예들에 따라, 복수의 추가 읽기 동작들을 분산시키는 단계는, 제1 읽기 동작 후 복수의 추가 읽기 동작들 중 소정의 추가 읽기 동작을 수행하는 단계, 그리고 수행된 소정의 추가 읽기 동작 이외의 나머지 추가 읽기 동작들을 수행할 주소들을 저장하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따라, 메모리 제어 방법은 제1 읽기 명령에 주어진 읽기 시간 동안, 제1 읽기 동작을 수행한 후 남은 시간을 모니터링하여 소정의 추가 읽기 동작의 개수를 결정하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따라, 메모리 제어 방법은 제1 읽기 명령이 수행될 불휘발성 메모리의 읽기 회수가 소정의 임계치를 넘은 경우, 제1 읽기 명령이 수행되는 해당 불휘발성 메모리의 읽기 회수 임계치를 변경하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따라, 메모리 제어 방법은 제2 읽기 명령을 수신하는 단계, 제1 읽기 명령에 따른 추가 읽기 동작을 수행해야 할 불휘발성 메모리와 제2 읽기 명령이 수행될 불휘발성 메모리가 서로 다른 칩인지 여부를 판별하는 단계, 그리고 판별 결과, 서로 다른 칩인 경우, 제1 읽기 명령에 따른 추가 읽기 동작과 상기 제2 읽기 명령에 따른 제2 읽기 동작을 동시에 수행하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따라, 메모리 제어 방법은 플래시 변환 계층에 의해 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작들의 주소들을 논리 주소들로 변환하는 단계, 플래시 변환 계층에 의해 변환된 논리 주소가 유효한지 여부를 판별하는 단계, 그리고 판별 결과, 변환된 논리 주소가 무효인 경우, 랜덤 네이버 선택 동작에 의해 제1 읽기 명령에 대응하는 다른 추가 읽기 동작들의 주소들을 선택하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따라, 분산된 복수의 추가 읽기 동작들은 콘트롤러의 아이들 시간에 수행될 수 있다.
본 발명의 실시예들에 따라, 랜덤 네이버 선택 동작에 의해 선택된 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작들의 주소들은 제1 읽기 명령이 수행되는 블록과 동일한 자기 블록에 속하거나 인접한 이웃 블록에 속하도록 설정될 수 있다.
본 발명의 실시예들에 따라, 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작들이 속하는 자기 블록 또는 인접한 이웃 블록에 따라, 읽기 회수 임계치가 다르게 설정될 수 있다.
본 발명의 실시예들에 따라, 메모리 제어 방법은 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작이 수행되는 블록의 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따라, 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크하는 주기는 제1 읽기 명령에 따른 복수의 추가 읽기 동작이 수행되는 페이지의 데이터를 체크하는 주기와는 다르게 설정될 수 있다.
상기 기술적 과제를 달성하기 위하여, 본 발명의 다른 면에 따른 메모리 제어 방법은, 읽기 명령을 수신하는 단계, 읽기 명령이 수행될 불휘발성 메모리의 읽기 회수가 소정의 임계치를 넘은 경우, 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하기 위하여, 랜덤 네이버 선택 동작에 의해 복수의 추가 읽기 동작들이 수행될 주소들을 선택하는 단계, 읽기 명령에 대응하는 복수의 추가 읽기 동작들이 수행될 주소들을 호스트로 전송하는 단계, 읽기 명령에 따른 읽기 동작을 수행하는 단계, 그리고 호스트에 의해 복수의 추가 읽기 동작들이 사용자 읽기 동작으로 처리되는 단계를 포함한다.
상술한 본 발명의 메모리 제어 방법에 의하면, 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하는 복수의 추가 읽기 동작들이 해당 읽기 명령에서 분산되어 처리된다. 이에 따라, 해당 읽기 명령에 따른 읽기 시간은 표준에 규정된 읽기 시간을 초과하지 않는다. 또한, 플래쉬 변환 계층에서 읽기 명령에 대응하는 복수의 추가 읽기 동작들의 논리 주소들에 대한 유효성을 미리 판별하기 때문에, 랜덤 네이버 선택 동작이 효율적으로 수행된다.
도 1은 본 발명의 다양한 실시예들에 따른 플래시 메모리 제어 방법들을 이용하는 메모리 시스템의 구성을 보여주는 도면이다.
도 2는 도 1에 도시된 콘트롤러의 상세 구성을 예시적으로 보여주는 도면이다.
도 3은 도 1에 도시된 플래시 메모리의 상세 구성을 예시적으로 보여주는 도면이다.
도 4a 내지 도 4c는 도 3의 메모리 셀 어레이를 설명하는 도면들이다.
도 5는 본 발명의 제1 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 6은 본 발명의 제2 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 7은 본 발명의 제3 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 8은 본 발명의 제4 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 9는 본 발명의 제5 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 10은 본 발명의 제6 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 11a 및 도 11b는 본 발명의 제7 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트들이다.
도 12는 본 발명의 다양한 실시예들에 따른 플래쉬 메모리 제어 방법을 채용하는 컴퓨팅 시스템을 설명하는 도면이다.
도 2는 도 1에 도시된 콘트롤러의 상세 구성을 예시적으로 보여주는 도면이다.
도 3은 도 1에 도시된 플래시 메모리의 상세 구성을 예시적으로 보여주는 도면이다.
도 4a 내지 도 4c는 도 3의 메모리 셀 어레이를 설명하는 도면들이다.
도 5는 본 발명의 제1 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 6은 본 발명의 제2 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 7은 본 발명의 제3 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 8은 본 발명의 제4 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 9는 본 발명의 제5 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 10은 본 발명의 제6 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
도 11a 및 도 11b는 본 발명의 제7 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트들이다.
도 12는 본 발명의 다양한 실시예들에 따른 플래쉬 메모리 제어 방법을 채용하는 컴퓨팅 시스템을 설명하는 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
반도체 메모리 장치는 DRAM, SRAM등과 같은 휘발성 메모리 장치와 EEPROM, FRAM, PRAM, MRAM, 플래시 메모리 등과 같은 불휘발성 메모리 장치로 구분할 수 있다. 휘발성 메모리 장치는 전원이 차단되면 저장된 데이터를 잃지만, 불휘발성 메모리 장치는 전원이 차단되더라도 저장된 데이터를 보존할 수 있다. 특히, 플래시 메모리는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 가지기 때문에, 컴퓨터 시스템 등에서 저장 매체로 광범위하게 사용되고 있다.
도 1은 본 발명의 다양한 실시예들에 따른 플래시 메모리 제어 방법들을 이용하는 메모리 시스템의 구성을 보여주는 도면이다.
도 1을 참조하면, 메모리 시스템(100)은 콘트롤러(200)와 데이터 저장부(300)로 구성될 수 있다. 데이터 저장부(300)는 플래시 메모리(310-330)와 같은 불휘발성 메모리로 구성될 수 있다. 콘트롤러(200)는 데이터 저장부(300)를 제어하도록 구성될 수 있다.
콘트롤러(200)와 데이터 저장부(300) 사이에는 하나 이상의 채널, 예컨대 N개의 채널들(CH1-CHN)이 구성될 수 있다. 각각의 채널(CH1-CHN)에는 복수의 플래시 메모리들(310-330)이 전기적으로 연결될 수 있다. 그리고, 각각의 채널(CH1-CHN)에 연결된 복수의 플래시 메모리들(310-330)은 복수의 웨이들(ways)을 구성할 수 있다. 예시적으로, 하나의 채널(CH1)에 연결되는 플래시 메모리(310)는 복수의 웨이들(310A-310D)로 구성될 수 있다.
채널(CH1-CHN)은 대응되는 플래시 메모리들(310-330)로 커맨드 및 데이터를 전송하기 위한 독립적인 버스를 의미한다. 서로 다른 채널에 접속된 플래시 메모리들(310-330)은 각각 독립적으로 동작할 수 있다. 웨이는 하나의 채널을 공유하는 플래시 메모리들의 집합을 의미한다. 대응되는 채널과 대응되는 웨이에 따라서 각각의 플래시 메모리 칩이 식별될 수 있다. 호스트(10)로부터 전달된 커맨드가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될지는, 호스트(10)로부터 전달된 논리 주소(Logical Address)에 의해 정해지게 된다.
본 발명에서는 데이터 저장부(300)가 플래시 메모리로 구성되는 경우에 대해 예시적으로 설명될 것이다. 데이터 저장부(300)에 적용되는 불휘발성 메모리는 특정 종류 및 특정 형태에만 국한되지 않고 다양한 형태로 구성될 수 있다.
플래시 메모리들(310-330)의 각 메모리 셀에 저장되는 데이터 비트 수는 다양한 형태로 구성될 수 있다. 예를 들면, 플래시 메모리들(310-330)은 하나의 메모리 셀에 1-비트 데이터를 저장하는 싱글 비트 셀들(single-bit cells) 또는 싱글 레벨 셀들(single-level cells: SLCs)로 구성될 수도 있고, 하나의 메모리 셀에 멀티 비트 데이터(예를 들어, 2 비트 이상)를 저장하는 멀티 비트 셀들(multi-bit cells), 멀티 레벨 셀들(multi-level cells: MLCs) 또는 멀티 스테이트 셀들(multi-state cells)로 구성될 수도 있다. 멀티 비트 셀들(MLCs)은 메모리의 고집적화에 유리한 장점을 갖는다. 플래시 메모리(310-330)은 메모리 셀의 전하 저장층의 구조가 다양한 형태로 구성될 수 있다. 예를 들면, 플래시 메모리 셀의 전하 저장층이 전도성이 있는 다결정 실리콘 등으로 구성될 수도 있고, Si3N4, Al2O3, HfAl0, HfSiO 등과 같은 절연막을 이용하여 구성될 수도 있다.
콘트롤러(200)는 USB(Universal Serial Bus), MMC(MultiMediaCard), PCI-E(PCIExpress), ATA(Advanced Technology Attachment), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SAS(Serial Attached Small Computer System), SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card), ESDI(Enhanced Small Disk Interface) 등과 같은 다양한 인터페이스들 중 하나를 통해 호스트(10)와 데이터를 주고 받을 수 있다. 콘트롤러(200)와 호스트(10) 사이의 인터페이스는 콘트롤러(200)에 구비되는 호스트 인터페이스(도 2의 240)에서 수행될 수 있다.
콘트롤러(200)는 호스트(10)로부터 입력된 커맨드에 응답하여 플래시 메모리들(310-330)의 기록, 소거, 및 읽기 동작을 제어한다.
콘트롤러(200)는 플래시 메모리들(310-330)의 읽기 동작에 따른 리드 디스털브 검사를 위하여 랜덤 네이버 선택(Random Neighbor Selection) 동작을 수행할 수 있다. 랜덤 네이버 선택 동작은, 읽기 명령이 수행될 플래시 메모리들(310-330)의 읽기 회수가 소정의 임계치를 넘은 경우, 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하기 위하여 이용된다. 랜덤 네이버 선택 동작은 읽기 명령에 대응하는 복수의 추가 읽기 동작들이 수행될 주소들을 선택할 수 있다. 복수의 추가 읽기 동작들은 분산되어 동작될 수 있다.
콘트롤러(200)는 읽기 명령에 따른 읽기 동작 후, 복수의 추가 읽기 동작들 중 하나의 추가 읽기 동작을 수행하고, 나머지 추가 읽기 동작들을 수행할 주소들은 저장되었다가 다른 읽기 명령에 따른 읽기 동작에서 나머지 추가 읽기 동작들이 수행되도록 분산할 수 있다. 콘트롤러(200)는 랜덤 네이버 선택 동작에 의해 선택된 복수의 추가 읽기 동작들이 수행될 주소들을 호스트(10)로 전송할 수 있다. 호스트(10)로 전송된 복수의 추가 읽기 동작들은 사용자 읽기 동작으로 처리될 수 있다.
도 2는 도 1에 도시된 콘트롤러(200)의 상세 구성을 예시적으로 보여주는 도면이다.
도 2를 참조하면, 콘트롤러(200)는 프로세서(210), RAM(Random Access Memory; 220), ROM(Read Only Memory; 230), 호스트 인터페이스(240), 플래시 메모리 인터페이스(250) 및 버스(260)를 포함할 수 있다. 프로세서(210), RAM(220), ROM(230), 호스트 인터페이스(240) 및 플래시 메모리 인터페이스(250)는 버스(260)를 통하여 서로 전기적으로 접속된다. 버스(260)는 콘트롤러(200)의 구성 수단들 간의 정보를 전송하는 전송로를 의미한다. 프로세서(210)는 메모리 시스템(100, 도 1)의 전반적인 동작을 제어한다. 세부적으로, 호스트(10)로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(100)을 제어한다.
프로세서(210)는 읽기(read) 동작 시에는 리드 커맨드 및 어드레스를 플래시 메모리(310-330)에 제공하고, 기록(write) 동작 시에는 라이트 커맨드, 어드레스, 그리고 기록 데이터를 플래시 메모리(310-330)에 제공한다. 그리고, 프로세서(210)는 RAM(220)에 저장된 메타 데이터를 이용하여 호스트(10)로부터 수신되는 논리적 주소를 물리적 페이지 주소로 변환시키는 처리를 수행한다.
프로세서(210)는 랜덤 네이버 선택 동작과 연계하여 플래시 메모리(310-330)의 읽기 동작에 따른 리드 디스털브를 검사하는 메모리 제어 방법을 수행할 수 있다. 랜덤 네이버 선택 동작은 제1 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하기 위하여, 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작들이 수행될 주소들을 선택할 수 있다. 프로세서(210)는 제1 읽기 명령이 수행될 메모리 칩의 읽기 회수가 소정의 임계치를 넘은 경우, 제1 읽기 명령이 수행되는 해당 메모리 칩의 읽기 회수 임계치를 변경할 수 있다.
프로세서(210)는 제1 읽기 명령이 수행된 메모리 칩과 제2 읽기 명령이 수행될 메모리 칩이 서로 다른 칩인 지 여부를 판별할 수 있다. 판별 결과, 서로 다른 칩인 경우, 제2 읽기 명령에 따른 제2 읽기 동작을 수행한 후, 제1 읽기 명령에 따른 추가 읽기 동작들을 수행할 수 있다. 판별 결과, 동일한 칩인 경우, 제2 읽기 명령에 따른 읽기 동작을 수행한 후, 제2 읽기 명령에 따른 추가 읽기 동작들을 수행할 수 있다.
프로세서(210)는 호스트(10)로부터 읽기/쓰기 명령과 함께 전달받은 논리 주소를 플래시 메모리(310-330)에서의 읽기/쓰기 동작을 위한 물리 주소로의 변환 과정을 수행할 수 있다. 논리 주소의 물리 주소로의 변환 과정은 플래시 변환 계층(Flash Translation Layer; FTL)에서 수행될 수 있다. 프로세서(210)에서, 플래시 변환 계층(FTL)은 읽기 명령에 대응하는 복수의 추가 읽기 동작들의 주소들을 논리 주소들로 변환하고, 변환된 논리 주소가 유효한지 여부를 판별할 수 있다. 프로세서(210)는 판별 결과, 변환된 논리 주소가 무효인 경우, 랜덤 네이버 선택 동작에 의해 읽기 명령에 대응하는 다른 추가 읽기 동작들의 주소들을 선택할 수 있다.
프로세서(210)는 읽기 명령에 대응하는 복수의 추가 읽기 동작들을 분산시켜 콘트롤러(200)의 아이들(idle) 시간에 수행할 수 있다. 프로세서(210)는 랜덤 네이버 선택 동작에 의해 선택된 읽기 명령에 대응하는 복수의 추가 읽기 동작들의 주소들이 읽기 명령이 수행되는 블록과 동일한 자기 블록에 속하거나 인접한 이웃 블록에 속하도록 설정할 수 있다. 프로세서(210)는 자기 블록 또는 인접한 이웃 블록에 따라 읽기 회수 임계치가 다르게 설정할 수 있다.
프로세서(210)는 읽기 명령에 대응하는 복수의 추가 읽기 동작이 수행되는 블록의 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크할 수 있다. 프로세서(210)는 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크하는 주기를 제1 읽기 명령에 따른 복수의 추가 읽기 동작이 수행되는 페이지의 데이터를 체크하는 주기와는 다르게 설정할 수 있다.
RAM(220)에는 호스트(10)로부터 전송된 데이터 및 프로세서(210)에서 생성된 데이터가 임시로 저장되거나 플래시 메모리(310-330)에서 읽어낸 데이터가 임시로 저장된다. 또한, RAM(220)에는 플래시 메모리(310-330)로부터 읽어낸 메타 데이터도 저장될 수 있다. 메타 데이터(meta data)는 플래시 메모리(310-330)를 관리하기 위하여 메모리 시스템(100)에서 생성된 관리 정보이다. 메타 데이터에는 논리적 주소(Logical Address)를 플래시 메모리(310-330)의 물리적 페이지 주소(PPA)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보가 포함되어 있다. 메타 데이터에는 플래시 메모리(310-330)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다. RAM(220)은 DRAM, SRAM 등으로 구현될 수 있다.
ROM(230)은 프로세서(210)에 의해 실행되는 프로그램을 저장하는 판독 전용 메모리이다. ROM(230)에는 플래시 메모리(310-330)의 읽기 동작에 따른 리드 디스털브를 검사하기 위한 랜덤 네이버 선택 동작과 연계되는 메모리 제어 방법을 수행하는 프로그램이 저장될 수 있다.
호스트 인터페이스(240)는 호스트(10)와 프로세서(210) 사이의 데이터 교환 프로토콜을 구비한다. 다양한 장치가 호스트(10)로서 호스트 인터페이스(240)에 접속될 수 있다. 호스트(10)는 예컨대, 디지털 화상 기록 장치 또는 디지털 음성 기록 장치가 될 수 있다.
플래시 메모리 인터페이스(250)는 플래시 메모리(310-330)를 구동하는 신호들을 제어하고, 프로세서(210)로부터의 요구에 따라 플래시 메모리들(310-330)을 억세스하도록 구성될 수 있다. 플래시 메모리 인터페이스(250)는 복수 개의 채널들(CH1-CHN)을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
프로세서(210)는 메모리 시스템(100)에 전원이 공급되면 플래시 메모리(310-330)에 저장되어 있는 메타 데이터를 읽어내어 RAM(220)에 저장하도록 메모리 시스템(100)을 제어한다. 프로세서(210)는 플래시 메모리(310-330)에서 메타 데이터 변경을 발생시키는 동작에 따라서 RAM(220)에 저장된 메타 데이터를 업데이트 하도록 메모리 시스템(100)을 제어한다. 그리고, 프로세서(210)는 메모리 시스템(100)에서 파워 오프(POWER OFF) 되기 전에 RAM(220)에 저장되어 있는 메타 데이터를 플래시 메모리 장치(310-330)에 라이트하도록 메모리 시스템(100)을 제어한다.
본 발명에 있어서, 콘트롤러(200)가 실행(execute)하는 처리는 프로세서(210)가 RAM(220) 또는 ROM(230)에 저장된 프로그램을 실행(run)하여, 플래시 메모리들(310-330)을 억세스한다.
도 3은 도 1에 도시된 플래시 메모리의 상세 구성을 예시적으로 보여주는 도면이다.
도 3을 참조하면, 플래시 메모리(310A)는 낸드형 플래시 메모리로 구성되고, 메모리 셀 어레이(312), 어드레스 디코더(314), 읽기 및 쓰기 회로(316), 그리고 제어 로직(318)을 포함할 수 있다.
메모리 셀 어레이(312)는 워드라인들(WLs)을 통해 어드레스 디코더(314)에 연결되고, 비트라인들(BLs)을 통해 읽기 및 쓰기 회로(316)에 연결된다. 메모리 셀 어레이(312)는 복수개의 메모리 셀들을 포함한다. 예시적으로, 행 방향으로 배열되는 메모리 셀들은 워드라인들(WLs)에 연결되고, 열 방향으로 배열되는 메모리 셀들은 비트라인들(BLs)에 연결된다. 열 방향으로 배열되는 메모리 셀들은 복수의 셀 그룹들 (예를 들면, 스트링)로 구성할 수 있고, 스트링은 비트라인(BL)에 각각에 연결될 수 있다. 예시적으로, 메모리 셀 어레이(312)는 셀 당 하나 또는 그 이상의 비트를 저장할 수 있는 복수의 메모리 셀들로 구성될 수 있다.
메모리 셀 어레이(312)에는 일반적인 사용자 데이터 또는 메인 데이터가 저장되고, 사용자 데이터 외에 플래시 메모리(310A)의 구동에 필요한 메타 데이터 (예를 들면, 플래시 변환 계층 (Flash Transition Layer: FTL)에 의한 맵핑 정보)가 저장될 수 있다. 플래시 변환 계층은 플래시 메모리(310A)를 효율적으로 사용하도록 한다. 플래시 변환 계층은 프로세서(210)에서 제공한 논리적 어드레스(logical address)를 플래시 메모리에서 사용 가능한 물리적 어드레스(physical address)로 변환하는 역할을 한다.
메모리 셀 어레이(312)에는 플래시 메모리(310A)의 읽기 동작에 따른 리드 디스털브를 검사하기 위하여. 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하는 복수의 추가 읽기 동작들이 수행될 주소들이 저장될 수 있다.
어드레스 디코더(314)는 수신된 어드레스(ADDR) 중 행 어드레스를 디코딩하도록 구성된다. 디코딩된 행 어드레스를 이용하여, 어드레스 디코더(314)는 워드라인들(WLs)을 선택한다. 어드레스 디코더(314)는 수신된 어드레스(ADDR) 중 열 어드레스를 디코딩하도록 구성된다. 디코딩된 열 어드레스(DCA)는 읽기 및 쓰기 회로(316)으로 전달된다. 예시적으로, 어드레스 디코더(314)는 행 디코더, 열 디코더, 어드레스 버퍼 등과 같은 구성 요소들을 포함할 수 있다.
읽기 및 쓰기 회로(316)는 데이터 입출력 회로로부터 데이터를 수신하고, 수신된 데이터를 메모리 셀 어레이(312)에 기입한다. 읽기 및 쓰기 회로(316)는 메모리 셀 어레이(312)로부터 데이터를 읽고, 읽혀진 데이터를 데이터 입출력 회로로 전달한다. 예시적으로, 읽기 및 쓰기 회로(316)는 페이지 버퍼 (또는 페이지 레지스터), 열 선택 회로, 데이터 버퍼 등과 같은 구성 요소들을 포함할 수 있다. 페이지 버퍼는 선택된 워드라인에 연결된 메모리 셀들에 기입할 데이터를 임시로 저장하는 기입 드라이버로 동작하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 독출된 데이터를 감지 증폭하는 감지 증폭기로 동작할 수 있다.
제어 로직(318)은 플래시 메모리(310A)의 프로그램(program) 동작, 읽기(read) 동작 그리고 소거 동작과 관련된 제반 동작을 제어할 수 있다.
제어 로직(318)은 읽기 동작에 따른 리드 디스털브를 검사하기 위하여. 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하는 복수의 추가 읽기 동작들을 제어할 수 있다. 제어 로직(318)은 복수의 추가 읽기 동작들을 읽기 명령이 수행되는 블록과 동일한 자기 블록에서 수행하거나 인접한 이웃 블록에서 수행할 수 있다. 제어 로직(318)은 복수의 추가 읽기 동작이 수행되는 블록의 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크하는 읽기 동작을 수행할 수 있다.
도 4a 내지 도 4c는 도 3의 메모리 셀 어레이(312)을 설명하는 도면들이다.
도 4a를 참조하면, 메모리 셀 어레이(312)는 복수개의 메모리 블록들(BLK1-BLKn)을 포함한다. 각 메모리 블록(BLK1-BLKn)은 3차원 구조 (또는 수직 구조)를 갖는다. 예를 들면, 각 메모리 블록(BLK1-BLKn)은 제1 내지 제3 방향들을 따라 신장된(expanding) 구조물들을 포함할 수 있다. 각 메모리 블록(BLK1-BLKn)은 제3 방향(Z)을 따라 신장된 복수의 셀 스트링들(CSs)을 포함할 수 있다. 복수의 셀 스트링들(CSs)은 제1 방향(X) 및 제2 방향(Y)을 따라 서로 이격될 수 있다.
도 4b는 도 4b의 제1 블록(BLK1) 일부분의 사시 단면도를 보여준다.
도 4b를 참조하면, 제1 내지 제3 방향들(X, Y, Z)을 따라 신장된 3차원 구조물이 제공된다. 기판(401)이 제공된다. 예시적으로, 기판(401)은 제1 도전형을 갖는 웰(well)일 수 있다. 기판(401)은 P 도전형의 웰일 수 있다. 기판(401) 상에 제2 방향(Y)을 따라 신장되고, 제1 방향(X)을 따라 서로 이격된 복수의 공통 소스 영역들(CSR)이 제공된다. 복수의 공통 소스 영역들(CSR)은 공통으로 연결되어 공통 소스 라인(CSL)을 구성할 수 있다. 복수의 공통 소스 영역들(CSR)은 기판(401)과 상이한 제2 도전형을 갖는다. 예를 들면, 복수의 공통 소스 영역들(CSR)은 N 도전형을 가질 수 있다.
복수의 공통 소스 영역들(CSR) 중 인접한 두개의 공통 소스 영역들 사이에, 복수의 절연 물질들(402a, 402)이 기판(401)과 수직한 방향인 제3 방향(Z)을 따라 기판(401) 상에 순차적으로 제공된다. 복수의 절연 물질들(402a, 402)은 제3 방향(Z)을 따라 서로 이격되고, 제2 방향(Y)을 따라 신장된다. 복수의 절연 물질들(402a, 402)은 반도체 산화막과 같은 절연 물질을 포함할 수 있다. 복수의 절연 물질들(402a, 402) 중 기판(401)과 접촉하는 절연 물질(402a)의 두께는 다른 절연 물질(402)의 두께보다 얇을 수 있다.
인접한 두개의 공통 소스 영역들(CSR) 사이에서, 제1 방향(X)을 따라 서로 이격되어 배치되며 제3 방향(Z)을 따라 복수의 절연 물질들(402a, 402)을 관통하는 복수의 필라들(pilla, PL)이 제공된다. 복수의 필라들(PL)은 절연 물질들(402a, 402)을 관통하여 기판(401)과 접촉할 수 있다. 복수의 필라들(PL)은 채널막들(404)과 채널막들(404) 내부의 내부 물질들(405)을 포함할 수 있다. 채널막들(404)은 기판(401)과 동일한 도전형인 제1 도전형을 갖는 반도체 물질 (예컨대, 실리콘)을 포함할 수 있다. 내부 물질들(405)은 실리콘 산화막과 같은 절연 물질을 포함할 수 있다.
인접한 두개의 공통 소스 영역들(CSR) 사이에서, 절연 물질들(402a, 402) 및 필라들(PL)의 노출된 표면들에 정보 저장막들(406)이 제공된다. 정보 저장막들(406)은 전하를 포획 또는 유출함으로써 정보를 저장할 수 있다.
인접한 두개의 공통 소스 영역들(CSR) 사이에서 그리고 절연 물질들(402a, 402) 사이에서, 정보 저장막들(406)의 노출된 표면들에 도전 물질들(CM1-CM8)이 제공된다. 도전 물질들(CM1-CM8)은 제2 방향(Y)을 따라 신장될 수 있다. 공통 소스 영역들(CSR) 상에서, 도전 물질들(CM1-CM8)은 워드라인 컷(WL cut)에 의해 분리될 수 있다. 워드라인 컷(WL_cut)은 제2 방향(Y)을 따라 신장될 수 있고, 공통 소스 영역들(CSR)을 노출시킬 수 있다. 도전 물질들(CM1-CM8)은 금속성 도전 물질을 포함할 수 있다. 도전 물질(CM1-CM8)은 폴리 실리콘 등과 같은 비금속성 도전 물질을 포함할 수 있다. 도전 물질(CM1-CM8)은 기판(401)으로부터의 순서에 따라 제1 내지 제8 높이를 가질 수 있다.
복수의 필라들(PL) 상에 복수의 드레인들(407)이 제공된다. 드레인들(407)은 제2 도전형을 갖는 반도체 물질 (예컨대, 실리콘)을 포함할 수 있다. 드레인들(407)은 필라들(PL)의 채널막(404)의 상부들로 확장될 수 있다. 드레인들(407) 상에, 제1 방향(X)으로 신장되고, 제2 방향(Y)을 따라 서로 이격된 비트라인들(BL)이 제공된다. 비트라인들(BL)은 드레인들(407)과 연결된다. 예컨대, 드레인들(407)과 비트라인들(BL)은 콘택 플러그들을 통해 연결될 수 있다. 비트라인들(BL)은 금속성 도전 물질을 포함할 수 있다. 비트라인들(BL)은 폴리 실리콘 등과 같은 비금속성 도전 물질을 포함할 수 있다.
복수의 필라들(PL)은 정보 저장막들(406) 및 복수의 도전 물질들(CM1-CM8)과 함께 복수의 셀 스트링들을 형성한다. 셀 스트링들 각각은 기판(401)과 수직한 방향으로 적층된 복수의 셀 트랜지스터들을 구성한다. 셀 트랜지스터들(CT)은 도전 물질들(CM1-CM8), 필라들(PL) 그리고 도전 물질들(CM1-CM8)과 필라들(PL) 사이에 제공되는 정보 저장막(406)으로 구성된다.
도전 물질들(CM1-CM8)은 셀 트랜지스터들(CT)의 게이트들 (또는 제어 게이트들)로 동작한다. 예시적으로, 제1 도전 물질들(CM1)은 정보 저장막들(406) 및 필라들(PL)과 함께 접지 선택 트랜지스터들(GST)을 구성할 수 있다. 제1 도전 물질(CM1)은 서로 연결되어 공통으로 연결된 하나의 접지 선택 라인(GSL)을 구성할 수 있다. 제2 내지 제7 도전 물질들(CM2-CM7)은 정보 저장막들(406) 및 필라들(PL)과 함께 제1 내지 제6 메모리 셀들(MC1-MC6)을 구성할 수 있다. 제2 내지 제7 도전 물질들(CM2-CM7)은 제1 내지 제6 워드라인들(WL1-WL6)을 구성할 수 있다. 제8 도전 물질들(CM8)은 정보 저장막들(406) 및 필라들(PL)과 함께 스트링 선택 트랜지스터들(CST)을 구성할 수 있다. 제8 도전 물질(CM1)은 스트링 선택 라인들(SSL1, SSL2)을 구성할 수 있다.
도 4c는 도 4b의 제1 블록((BLK1)의 일부분에 따른 등가 회로를 보여준다.
도 4c를 참조하면, 비트라인들(BL1, BL2) 및 공통 소스 라인(CSL) 사이에 셀 스트링들(CS11, CS12, CS21, CS22)이 제공된다. 셀 스트링들(CS11, CS12, CS21, CS22)은 스트링 선택 라인(SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WL1-WL6)에 각각 연결된 복수의 메모리 셀들(MC1-MC6) 그리고 접지 선택 라인(GSL)에 연결된 접지 선택 트랜지스터(GST)를 포함할 수 있다.
동일한 높이의 메모리 셀들은 하나의 워드라인에 공통으로 연결되어 있다. 따라서, 특정 높이의 워드라인에 전압이 공급될 때 모든 셀 스트링들(CS11, CS12, CS21, CS22)에 전압이 인가된다.
서로 다른 행의 셀 스트링들(CS11, CS12, CS21, CS22)은 서로 다른 스트링 선택 라인들(SSL1, SSL2)에 각각 연결된다. 제1 및 제2 스트링 선택 라인들(SSL1, SSL2)을 선택 및 비선택함으로써, 셀 스트링들(CS11, CS12, CS21, CS22)이 행 단위로 선택 및 비선택될 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22)은 열 단위로 비트라인들(BL1, BL2)에 연결된다. 제1 비트라인(BL1)과 공통 소스 라인(CSL) 사이에 셀 스트링들(CS11, CS21)이 연결되고, 제2 비트라인(BL2)과 공통 소스 라인(CSL) 사이에 셀 스트링들(CS12, CS22)이 연결된다. 비트라인들(BL1, BL2)을 선택 및 비선택함으로써, 셀 스트링들(CS11, CS12, CS21, CS22)이 열 단위로 선택 및 비선택될 수 있다.
복수의 메모리 셀들(MC1-MC6)에 데이터를 기록하기 위해서는, 먼저 메모리 셀들이 소정의 음(negative) 문턱전압을 갖도록 소거 동작이 수행된다. 소거 동작은 블록 단위(BLK1-BLKn)로 이루어진다. 이 후, 선택된 메모리 셀과 연결된 워드라인으로 소정 시간 동안 고전압(Vpgm)을 인가하여 선택된 메모리 셀에 대한 프로그램 동작이 수행된다.
데이터 판독시, 선택된 메모리 셀 트랜지스터의 게이트에 0V 전압이 인가되고, 선택되지 않은 메모리 셀 트랜지스터의 게이트에 전원 전압(VCC)이 인가된다. 이 때, 선택되지 않은 메모리 셀 트랜지스터 전극에 인가되는 전원 전압(VCC)에 의해서, 절연 물질들(402a, 402)에 전압 스트레스가 발생하고, 그 결과 메모리 셀 트랜지스터의 문턱 전압이 변화해가는 리드 디스털브 현상이 발생한다. 문턱 전압이 변화한 메모리 셀 트랜지스터의 데이터를 독출할 때 잘못된 데이터를 판독하는 경우가 있다.
3차원 구조의 메모리 셀 어레이에서는, 데이터 판독시, 선택된 메모리 셀 트랜지스터를 포함하는 페이지의 상하로 그리고 좌우로 인접하게 선택되지 않은 메모리 셀 트랜지스터들이 배열된다. 선택되지 않은 메모리 셀 트랜지스터들을 포함하는 페이지들에 리드 디스털브로 야기된 데이터 오류들이 있을 수 있다. 이러한 데이터 오류를 방지하기 위하여, 리드 디스털브 검사를 실행한다. 리드 디스털브 검사는 선택된 메모리 셀 트랜지스터에 이웃하는 전페이지 또는 일부 페이지들에 대하여 순차 읽기 동작을 수행하기 때문에, 읽기 레이턴시 오버헤드(read latency overhead) 문제점이 발생된다.
본 발명에서는 플래시 메모리 읽기 동작에 따른 읽기 레이턴시 오버헤드를 줄이기 위하여 랜덤 네이버 선택 동작과 연계하는 플래시 메모리 제어 방법들에 대하여 기술된다. 본 발명은 도 2의 콘트롤러(200)에 의하여 플래시 메모리 제어 방법을 실현하는 프로그램 또는 그 프로그램이 기록된 펌웨어(Firmware; F/W)를 통해 구현될 수 있다.
도 5는 본 발명의 제1 실시예에 따른 플래시 메모리 제어 방법을 설명하는 제1 예의 플로우챠트이다.
<S502> 단계
콘트롤러(200)는 호스트(10, 도 1)로부터 제1 읽기 명령(READ1)을 수신한다. 콘트롤러(200)는 제1 읽기 명령(READ1)과 함께 읽어내야하는 데이터의 논리 주소를 수신할 수 있다.
<S504> 단계
콘트롤러(200)는 제1 읽기 명령(READ1)의 논리 주소를 물리 주소로 변환하여, 읽어내야하는 데이터가 어느 플래시 메모리 칩(310-330)에 포함되어 있는지를 계산한다. 계산된 물리 주소에 해당하는 플래시 메모리 칩의 읽기 회수(Read Count)를 1 증가시킨다.
<S506> 단계
콘트롤러(200)는 이전의 추가 읽기 동작이 기록되어 있는지 여부를 판별한다. 이전의 추가 읽기 동작이란, 제1 읽기 명령(READ1) 이전의 읽기 명령에 따른 랜덤 네이버 선택 동작에 의해 발생된 추가 읽기 동작을 말한다. 이전 읽기 명령에 따른 랜덤 네이버 선택 동작은 이전 읽기 명령의 물리 주소와는 다른 주소를 랜덤하게 선택한다. 이전 읽기 명령의 물리 주소와는 다르게 랜덤하게 발생된 주소들은, 이전 읽기 명령이 수행되는 페이지의 이웃 페이지들을 어드레싱하는 것으로 설정될 수 있다. 추가 읽기 동작을 수행할 이웃 페이지들은 펌웨어(F/W)에 기록되어 있을 것이다.
<S507 단계>
판별 결과(S506)로부터, 이전의 추가 읽기 동작(READk-2,3, …)을 수행해야 하는 경우, 수신된 제1 읽기 명령(READ1)에 따른 읽기 동작이 수행된다. 제1 읽기 명령(READ1)에 따른 읽기 동작은 제1 읽기 명령(READ)에 주어진 읽기 시간 동안 수행될 것이다.
<S508 단계>
제1 읽기 명령(READ1)에 따른 읽기 동작이 수행된 후(S507), 제1 읽기 명령(READ)에 주어진 읽기 시간이 남아있는 지를 모니터링할 수 있다. 남은 읽기 시간 동안, 이전의 추가 읽기 동작(READk-2,3, …)이 수행될 수 있다. 남은 읽기 시간에 따라, 수행될 이전의 추가 읽기 동작(READk-2,3, …)의 개수가 결정될 수 있다. 소정의 이전 추가 읽기 동작(READk-2,3, …)이 제1 읽기 명령(READ1)의 남아있는 읽기 시간 동안 수행되고(S508), 제1 읽기 명령(READ1)에 따른 읽기 동작이 종료된다(S524).
<S510 단계>
판별 결과(S506)로부터, 펌웨어(F/W)에 기록된 이전 추가 읽기 동작이 없는 경우, 제1 읽기 명령(READ1)이 수행될 플래시 메모리 칩의 읽기 회수(Read Count)가 소정의 임계치(THRESHOLD)를 넘었는 지 여부를 판별한다.
<S512 단계>
판별 결과(S510)로부터, 해당 플래시 메모리 칩의 읽기 회수가 소정의 임계치(THRESHOLD)를 넘지 않은 경우, 제1 읽기 명령(READ1)에 따른 읽기 동작이 수행되고 제1 읽기 명령(READ1)에 따른 읽기 동작이 종료된다(S524).
<S514 단계>
판별 결과(S510)로부터, 해당 플래시 메모리 칩(310-330)의 읽기 회수가 소정의 임계치(THRESHOLD)를 넘은 경우, 해당 플래시 메모리 칩의 읽기 회수 임계치가 다른 값으로 변경된다. 변경된 읽기 회수 임계치는 이전 값보다 적게 설정되는 것이 바람직하다.
<S516 단계>
제1 읽기 명령(READ1)에 따른 추가적인 읽기 동작을 수행하기 위하여, 제1 읽기 명령(READ1)에 따른 랜덤 네이버 선택 동작에 의해 제1 읽기 명령(READ1)의 물리 주소와는 다른 주소이 랜덤하게 발생된다. 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n)을 수행할 주소들은 제1 읽기 명령(READ1)이 수행되는 페이지의 이웃 페이지들을 어드레싱할 수 있다. 이웃 페이지들은 랜덤 네이버 선택 동작에 의해 제1 읽기 명령(READ1)이 수행되는 페이지에 인접하게 또는 인접하지 않게 선택될 수 있다.
<S518 단계>
제1 읽기 명령(READ1)에 따른 읽기 동작이 수행된다.
<S520 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n) 중 하나의 추가 읽기 동작(READ1-1)이 수행된다.
<S522 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n) 중 수행된 추가 읽기 동작(READ1-1) 이외의 나머지 추가 읽기 동작들(READ1-n)을 수행할 이웃 페이지들이 펌웨어(F/W)에 기록되고, 제1 읽기 명령(READ1)에 따른 읽기 동작이 종료된다(S524).
본 실시예에 따른 메모리 제어 방법은, 제1 읽기 명령(READ1)에 따른 복수의 추가 읽기 동작(READ1-n)들이 해당되는 제1 읽기 명령(READ1)에서 분산되어 처리된다. 이에 따라, 해당 제1 읽기 명령(READ1)에 따른 읽기 시간은 표준에 규정된 읽기 시간을 초과하지 않는다.
도 6은 본 발명의 제2 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
<S602 단계>
콘트롤러(200)는 호스트(10, 도 1)로부터 제2 읽기 명령(READ2)을 수신한다. 콘트롤러(200)는 제2 읽기 명령(READ2)과 함께 읽어내야하는 데이터의 논리 주소를 수신할 수 있다.
<S604 단계>
콘트롤러(200)는 제2 읽기 명령(READ2)의 논리 주소를 물리 주소로 변환하여, 읽어내야하는 데이터가 어느 플래시 메모리 칩(310-330)에 포함되어 있는지를 계산한다. 계산된 물리 주소에 해당하는 플래시 메모리 칩의 읽기 회수(Read Count)를 1 증가시킨다.
<S606, S610> 단계
콘트롤러(200)는 이전에 수행된, 예컨대 도 5에서 설명된 제1 읽기 명령(READ1)에 따른 추가 읽기 동작이 기록되어 있는지 여부를 판별한다(S606). 기록된 추가 읽기 동작 여부를 판별한(S606) 후, 제1 읽기 명령(READ1)에 따른 추가 읽기 동작이 수행될 플래시 메모리 칩과 제2 읽기 명령(READ2)이 수행될 플래시 메모리 칩이 서로 다른 칩인지를 판별한다(S610).
<S612 단계>
판별 결과(S610)>로부터, 제1 읽기 명령(READ1)에 따른 추가 읽기 동작을 수행해야 할 플래시 메모리 칩과 제2 읽기 명령(READ2)이 수행될 플래시 메모리 칩이 동일한 경우, 제2 읽기 명령(READ2)에 따른 읽기 동작이 수행되고(S612), 제2 읽기 명령(READ2)에 따른 읽기 동작이 종료된다(S618).
<S614, S616 단계>
판별 결과(S610)>로부터, 제1 읽기 명령(READ1)에 따른 추가 읽기 동작을 수행해야 할 플래시 메모리 칩과 제2 읽기 명령(READ2)이 수행될 플래시 메모리 칩이 서로 다른 경우, 제2 읽기 명령(READ2)에 따른 읽기 동작(S614)과 제1 읽기 명령(READ1)에 따른 추가 읽기 동작(S616)이 동시에 수행되고, 제2 읽기 명령(READ2)에 따른 읽기 동작이 종료된다(S618).
본 실시예에 따른 메모리 제어 방법은, 제1 읽기 명령(READ1)과 제2 읽기 명령(READ2)이 서로 다른 메모리 칩에서 수행되는 경우, 제1 읽기 명령(READ1)에 대응하는 복수의 추가 읽기 동작(READ1-n)들은 제2 읽기 명령(READ2) 수행 후 처리되도록 분산된다. 이에 따라, 제1 및 제2 읽기 명령(READ1, READ2)에 따른 읽기 시간은 표준에 규정된 읽기 시간을 초과하지 않는다.
도 7은 본 발명의 제3 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
<S702 단계>
도 5에서 설명된 바와 같이, 수신된 제1 읽기 명령(READ1)이 수행될 해당 플래시 메모리 칩(310-330)의 읽기 회수가 소정의 임계치(THRESHOLD)를 넘은 경우, 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n)의 주소들이 발생된다. 추가 읽기 동작들(READ1-n)의 주소들은 제1 읽기 명령(READ1)에 따른 랜덤 네이버 선택 동작에 의해 제1 읽기 명령(READ1)의 물리 주소와는 다른 주소들이다. 추가 읽기 동작들(READ1-n)이 수행될 주소들은 제2 읽기 명령(READ2)이 수행되는 페이지의 이웃 페이지들을 어드레싱할 수 있다. 랜덤 네이버 선택 동작은 제1 읽기 명령(READ1)이 수행되는 페이지에 인접하게 또는 인접하지 않게 이웃 페이지들을 선택할 수 있다. 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)을 수행할 이웃 페이지들의 주소들은 펌웨어(F/W)에 기록될 수 있다.
<S704 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)을 수행할 이웃 페이지들의 어드레스들은, 제1 읽기 명령(READ1)이 수행되는 해당 플래시 메모리 칩(310-330)의 물리 주소들이다. 물리 주소들은 플래시 변환 계층(FTL)에 의해 논리 주소들로 변환된다. 플래시 변환 계층(FTL)은 콘트롤러(200, 도 2) 내 프로세서(210)에서 제공한 논리 주소를 플래시 메모리에서 사용 가능한 물리 주소로 변환하는 기능도 포함할 수 있다.
<S706 단계>
플래시 변환 계층(FTL)은 변환된 논리 주소가 유효한지 여부를 판별한다. 플래시 변환 계층(FTL)은 플래시 메모리 칩(310-330)의 에러 정정이 불가능한 데이터를 저장하는 페이지의 논리 주소를 기억(save)하고 있다. 플래시 메모리 칩(310-330)은 에러 정정 코드들에 기초한 인코딩 및 디코딩 기술을 이용하여 데이터 에러를 검출 및 정정한다. 플래시 변환 계층(FTL)은 변환된 논리 주소와 에러 정정 불가능한 페이지 주소를 비교하여, 변환된 논리 주소의 유효성을 결정할 수 있다.
판별 결과(S706)로부터, 변환된 논리 주소가 무효인 경우, 제1 읽기 명령(READ1)에 대응하는 다른 추가 읽기 동작들(READ1-n)의 주소들이 다시 발생된다(S702).
<S708 단계>
판별 결과(S706)로부터, 변환된 논리 주소가 유효한 경우, 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n)이 수행된다.
본 실시예의 메모리 제어 방법은, 플래쉬 변환 계층(FTL)에서 제1 읽기 명령(READ1)에 대응하는 복수의 추가 읽기 동작들(READ1-n)의 논리 주소들에 대한 유효성을 미리 판별하기 때문에, 랜덤 네이버 선택 동작이 효율적으로 수행된다.
도 8은 본 발명의 제4 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
<S802 단계>
도 5에서 설명된 바와 같이, 수신된 제1 읽기 명령(READ1)이 수행될 해당 플래시 메모리 칩(310-330)의 읽기 회수가 소정의 임계치(THRESHOLD)를 넘은 경우, 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n)의 주소들이 발생된다. 추가 읽기 동작들(READ1-n)의 주소들은 제1 읽기 명령(READ1)에 따른 랜덤 네이버 선택 동작에 의해 제1 읽기 명령(READ1)의 물리 주소와는 다른 주소들이다. 추가 읽기 동작들(READ1-n)이 수행될 주소들은 제2 읽기 명령(READ2)이 수행되는 페이지의 이웃 페이지들을 어드레싱할 수 있다. 랜덤 네이버 선택 동작은 제1 읽기 명령(READ1)이 수행되는 페이지에 인접하게 또는 인접하지 않게 이웃 페이지들을 선택할 수 있다. 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)을 수행할 이웃 페이지들의 주소들은 펌웨어(F/W)에 기록될 수 있다.
<S804 단계>
콘트롤러(200, 도 2)는 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)의 주소들을 호스트(10)에게 알린다.
<S806 단계>
호스트(10)는 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)을 사용자 읽기 동작으로서 콘트롤러(200)에게 요청할 수 있다.
<S808 단계>
콘트롤러(200)는 호스트(10)로부터 수신된 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)을 수행한다.
본 실시예의 메모리 제어 방법은, 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n)이 수행될 주소들이 호스트(10)로 전송된다. 호스트(10)는 전송된 복수의 추가 읽기 동작들을 사용자 읽기 동작으로 처리한다.
도 9는 본 발명의 제5 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
<S902 단계>
도 5에서 설명된 바와 같이, 수신된 제1 읽기 명령(READ1)이 수행될 해당 플래시 메모리 칩(310-330)의 읽기 회수가 소정의 임계치(THRESHOLD)를 넘은 경우, 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1-n)의 주소들이 발생된다. 추가 읽기 동작들(READ1-n)의 주소들은 제1 읽기 명령(READ1)에 따른 랜덤 네이버 선택 동작에 의해 제1 읽기 명령(READ1)의 물리 주소와는 다른 주소들이다. 추가 읽기 동작들(READ1-n)이 수행될 주소들은 제2 읽기 명령(READ2)이 수행되는 페이지의 이웃 페이지들을 어드레싱할 수 있다. 랜덤 네이버 선택 동작은 제1 읽기 명령(READ1)이 수행되는 페이지에 인접하게 또는 인접하지 않게 이웃 페이지들을 선택할 수 있다.
<S904 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)을 수행할 이웃 페이지들의 주소들이 펌웨어(F/W)에 기록된다.
<S906 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작(READ1-n)은 메모리 시스템(100, 도 2)의 아이들 시간(idle time)에 수행된다. 아이들 시간은 콘트롤러(200)의 프로세서(210)가 일정 시간 실행되고 있지 않거나, I/O 인터럽트 대기중이거나, 슬립(sleep) 상태, 또는 스크린 오프인 시간을 말한다.
본 실시예의 메모리 제어 방법은, 제1 읽기 명령(READ1)에 대응하는 복수의 추가 읽기 동작들(READ1-n)을 분산시켜 콘트롤러(200)의 아이들(idle) 시간에 수행한다.
도 10은 본 발명의 제6 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트이다.
<S1002 단계>
콘트롤러(200)는 호스트(10, 도 1)로부터 제1 읽기 명령(READ1)을 수신한다. 콘트롤러(200)는 제1 읽기 명령(READ1)과 함께 읽어내야하는 데이터의 논리 주소를 수신할 수 있다.
<S1004 단계>
콘트롤러(200)는 제1 읽기 명령(READ1)의 논리 주소를 물리 주소로 변환하여, 읽어내야하는 데이터가 어느 플래시 메모리 칩(310-330)에 포함되어 있는지를 계산한다. 계산된 물리 주소에 해당하는 플래시 메모리 칩의 읽기 회수(Read Count)를 1 증가시킨다.
<S1006 단계>
제1 읽기 명령(READ1)이 수행될 플래시 메모리 칩의 읽기 회수(Read Count)가 소정의 제1 임계치(THRESHOLD1)를 넘었는 지 여부를 판별한다.
<S1010 단계>
판별 결과(S1006)로부터, 해당 플래시 메모리 칩의 읽기 회수가 제1 임계치(THRESHOLD1)를 넘은 경우, 해당 플래시 메모리 칩의 읽기 회수 임계치가 다른 값으로 변경된다. 변경된 읽기 회수 임계치는 이전 값보다 적게 설정되는 것이 바람직하다.
<S1012 단계>
제1 읽기 명령(READ1)에 따른 추가적인 읽기 동작(READ1A-n)을 수행하기 위하여, 제1 읽기 명령(READ1)에 따른 랜덤 네이버 선택 동작에 의해 제1 읽기 명령(READ1)의 물리 주소와는 다른 주소이 랜덤하게 발생된다. 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1A-n)을 수행할 주소들은 제1 읽기 명령(READ1)이 수행되는 페이지의 이웃 페이지들을 어드레싱할 수 있다.
랜덤 네이버 선택 동작에 의해 선택된 이웃 페이지들은, 제1 읽기 명령(READ1)이 수행되는 페이지에 대하여 기판(401, 도 4b)에 수직한 제3 방향(Z)으로 랜덤하게 선택될 수 있다. 제3 방향(Z)으로 랜덤하게 선택된 이웃 페이지들은 제1 읽기 명령(READ1)이 수행되는 페이지가 속하는 블록과 동일한 블록일 수 있다. 또한, 이웃 페이지들은 제1 읽기 명령(READ1)이 수행되는 페이지에 대하여 제1 방향(X)으로 인접한 페이지들일 수 있다. 이 경우, 인접한 이웃 페이지들은 제1 읽기 명령(READ1)이 수행되는 페이지가 속하는 블록과는 다른 블록일 수 있다. 즉, 랜덤 네이버 선택 동작에 의해 선택된 이웃 페이지들은 제1 읽기 명령(READ1)이 수행되는 페이지가 속하는 블록 (또는 자기 블록(self block))이거나 인접한 이웃 블록일 수 있다.
<S1014 단계>
제1 읽기 명령(READ1)에 따른 읽기 동작이 수행된다.
<S1016 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1A-n) 중 하나의 추가 읽기 동작(READ1A-1)이 수행된다.
<S1018 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1A-n) 중 수행된 추가 읽기 동작(READ1A-1) 이외의 나머지 추가 읽기 동작들(READ1A-n)을 수행할 이웃 페이지들이 펌웨어(F/W)에 기록되고, 제1 읽기 명령(READ1)에 따른 읽기 동작이 종료된다(S1040).
<S1020 단계>
판별 결과(S1006)로부터, 제1 읽기 명령(READ1)이 수행될 플래시 메모리 칩의 읽기 회수(Read Count)가 제1 임계치(THRESHOLD1)를 넘지 않았지만, 소정의 제2 임계치(THRESHOLD2)를 넘었는지 여부를 판별한다. 제2 임계치(THRESHOLD2)는 제1 임계치(THRESHOLD1) 보다 작게 설정되는 것이 바람직하다.
<S1022 단계>
판별 결과(S1020)로부터, 해당 플래시 메모리 칩의 읽기 회수가 제2 임계치(THRESHOLD2)를 넘지 않은 경우, 제1 읽기 명령(READ1)에 따른 읽기 동작이 수행되고 제1 읽기 명령(READ1)에 따른 읽기 동작이 종료된다(S1040).
<S1030 단계>
판별 결과(S1020)로부터, 해당 플래시 메모리 칩의 읽기 회수가 제2 임계치(THRESHOLD2)를 넘은 경우, 해당 플래시 메모리 칩의 읽기 회수 임계치가 다른 값으로 변경된다. 변경된 읽기 회수 임계치는 이전 값보다 적게 설정되는 것이 바람직하다.
<S1032 단계>
제1 읽기 명령(READ1)에 따른 추가적인 읽기 동작(READ1B-n)을 수행하기 위하여, 제1 읽기 명령(READ1)에 따른 랜덤 네이버 선택 동작에 의해 제1 읽기 명령(READ1)의 물리 주소와는 다른 주소이 랜덤하게 발생된다. 제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1B-n)을 수행할 주소들은 제1 읽기 명령(READ1)이 수행되는 페이지의 이웃 페이지들을 어드레싱할 수 있다. 랜덤 네이버 선택 동작에 의해 선택된 이웃 페이지들은, 제1 읽기 명령(READ1)이 수행되는 페이지가 속하는 블록 (또는 자기 블록(self block))이거나 인접한 이웃 블록일 수 있다.
<S1034 단계>
제1 읽기 명령(READ1)에 따른 읽기 동작이 수행된다.
<S1036 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1B-n) 중 하나의 추가 읽기 동작(READ1B-1)이 수행된다.
<S1038 단계>
제1 읽기 명령(READ1)에 대응하는 추가 읽기 동작들(READ1B-n) 중 수행된 추가 읽기 동작(READ1B-1) 이외의 나머지 추가 읽기 동작들(READ1B-n)을 수행할 이웃 페이지들이 펌웨어(F/W)에 기록되고, 제1 읽기 명령(READ1)에 따른 읽기 동작이 종료된다(S1040).
본 실시예의 메모리 제어 방법은, 제1 읽기 명령(READ1)에 대응하는 복수의 추가 읽기 동작들(READ10n)이 제1 읽기 명령(READ1)이 수행되는 블록과 동일한 자기 블록 또는 인접한 이웃 블록에서 수행되는냐에 따라 읽기 회수 임계치(THRESHOLD1, THRESHOLD2)를 변경한다.
도 11a 및 도 11b는 본 발명의 제7 실시예에 따른 플래시 메모리 제어 방법을 설명하는 플로우챠트들이다.
도 11a를 참조하면, 제1 읽기 명령(READ1)에 따른 추가 읽기 동작(READ1-n)을 수행한다(S1102). 이 후, 추가 읽기 동작(READ1-n)이 수행되는 블록의 스트링 선택 트랜지스터(SST) 및 접지 선택 트랜지스터(GST)의 상태를 체크한다(S1104). 추가 읽기 동작(READ1-n)이 수행되는 블록은 제1 읽기 명령(READ1)이 수행되는 페이지가 속하는 자기 블록이거나 인접한 이웃 블록일 수 있다.
도 11b를 참조하면, 제1 읽기 명령(READ1)에 따른 추가 읽기 동작(READ1-n)을 수행한다(S1102). 이 후, 추가 읽기 동작(READ1-n)이 수행되는 블록의 스트링 선택 트랜지스터(SST) 및 접지 선택 트랜지스터(GST)의 상태를 체크하되, 랜덤한 주기로 체크할 수 있다(S1106). 추가 읽기 동작(READ1-n)이 수행되는 블록은 제1 읽기 명령(READ1)이 수행되는 페이지가 속하는 자기 블록이거나 인접한 이웃 블록일 수 있다. 랜덤한 주기란, 스트링 선택 트랜지스터(SST) 및 접지 선택 트랜지스터(GST)의 체크 주기와 제1 읽기 명령(READ1)에 따른 추가 읽기 동작(READ1-n)을 수행하는 페이지 데이터를 체크하는 주기를 서로 다르게 설정한다는 것을 말한다. 제1 읽기 명령(READ1)에 따른 추가 읽기 동작(READ1-n)을 수행하는 페이지 데이터를 체크하는 주기는, 도 10에서 설명된 바와 같이, 해당 플래시 메모리 칩의 읽기 회수를 제1 임계치(THRESHOLD1), 제2 임계치(THRESHOLD2) 또는 이들 임계치들의 변경 등으로 설정될 수 있다.
본 실시예의 메모리 제어 방법은, 제1 읽기 명령(READ1)에 대응하는 복수의 추가 읽기 동작(READ1-n)이 수행되는 블록의 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크한다. 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크하는 주기는 제1 읽기 명령(READ1)에 따른 복수의 추가 읽기 동작(READ1-n)이 수행되는 페이지의 데이터를 체크하는 주기와는 다르게 설정된다.
도 12는 본 발명의 다양한 실시예들에 따른 플래쉬 메모리 제어 방법을 채용하는 컴퓨팅 시스템을 설명하는 도면이다.
도 12를 참조하면, 컴퓨팅 시스템(1200)은 시스템 버스(1260)에 전기적으로연결되는 마이크로프로세서(1220), 램(1230), 사용자 인터페이스(1240), 베이스밴드 칩셋(Baseband Chipset)과 같은 모뎀(1250) 그리고 메모리 시스템(100)을 포함할 수 있다.
메모리 시스템(100)은 콘트롤러(200)와 플래쉬 메모리(300)를 포함할 수 있다. 콘트롤러(200)는 시스템 버스(1260)를 통해 마이크로프로세서(1220)와 플래쉬 메모리(300)를 연결시킬 수 있다. 콘트롤러(200)는 마이크로프로세서(1220)의 버스 포맷(Bus format)에 대응하여 플래쉬 메모리(300)와의 인터페이싱을 제공할 수 있다. 메모리 시스템(100)은 반도체 디스크 장치(Solid State Disk: SSD)를 구성할 수 있다. 이 경우, 콘트롤러(200)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신할 수 있도록 구성될 것이다.
콘트롤러(200)는 도 2에 도시된 콘트롤러와 동일하게 구성될 수 있다. 또한, 콘트롤러(200)는 본 발명의 다양한 실시예들에 따른 플래쉬 메모리 제어 방법들을 적용할 수 있다. 플래쉬 메모리(300)는 도 3 및 도 4a 내지 도 4c에 도시된 플래쉬 메모리와 동일하게 구성될 수 있다.
콘트롤러(200)는 플래쉬 메모리(300)의 읽기 명령에 따라 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하는 복수의 추가 읽기 동작들을 해당 읽기 명령으로부터 분산 처리한다. 콘트롤러(200)는 플래쉬 변환 계층에서 읽기 명령에 대응하는 복수의 추가 읽기 동작들의 논리 주소들에 대한 유효성을 미리 판별하여 랜덤 네이버 선택 동작을 효율적으로 수행한다.
컴퓨팅 시스템(1200)이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가적으로 제공될 것이다. 또한, 컴퓨팅 시스템(1200)에는 응용 칩셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있다.
본 발명에 따른 콘트롤러(200) 및/또는 플래쉬 메모리(300)는 다양한 형태의 패키지를 이용하여 실장될 수 있다. 예를 들면, 콘트롤러(200) 및/또는 플래쉬 메모리(300)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다. 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 당업자라면 쉽게 구현할 수 있을 것이다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
Claims (10)
- 콘트롤러에 의해 불휘발성 메모리의 읽기 동작을 제어하는 방법에 있어서
제1 읽기 명령을 수신하는 단계;
상기 제1 읽기 명령이 수행될 상기 불휘발성 메모리의 읽기 회수가 소정의 임계치를 넘은 경우, 랜덤 네이버 선택 동작에 의해 상기 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작들이 수행될 주소들을 선택하는 단계;
상기 제1 읽기 명령에 따른 제1 읽기 동작을 수행하는 단계; 및
상기 복수의 추가 읽기 동작들을 분산시켜, 상기 제1 읽기 동작이 수행된 페이지의 이웃 페이지 데이터를 체크하는 단계를 구비하는 것을 특징으로 하는 메모리 제어 방법. - 제1항에 있어서, 상기 복수의 추가 읽기 동작들을 분산시키는 단계는
상기 제1 읽기 동작 후 상기 복수의 추가 읽기 동작들 중 소정의 추가 읽기 동작을 수행하는 단계; 및
상기 수행된 소정의 추가 읽기 동작 이외의 나머지 추가 읽기 동작들을 수행할 주소들을 저장하는 단계를 구비하는 것을 특징으로 하는 메모리 제어 방법. - 제2항에 있어서, 상기 메모리 제어 방법은
상기 제1 읽기 명령에 주어진 읽기 시간 동안, 상기 제1 읽기 동작을 수행한 후 남은 시간을 모니터링하여 상기 소정의 추가 읽기 동작의 개수를 결정하는 단계를 더 구비하는 것을 특징으로 하는 메모리 제어 방법. - 제1항에 있어서, 상기 메모리 제어 방법은
상기 제1 읽기 명령이 수행될 상기 불휘발성 메모리의 읽기 회수가 소정의 임계치를 넘은 경우, 상기 제1 읽기 명령이 수행되는 해당 불휘발성 메모리의 읽기 회수 임계치를 변경하는 단계를 더 구비하는 것을 특징으로 하는 메모리 제어 방법. - 제1항에 있어서, 상기 메모리 제어 방법은
제2 읽기 명령을 수신하는 단계;
상기 제1 읽기 명령에 따른 추가 읽기 동작을 수행해야 할 상기 불휘발성 메모리와 상기 제2 읽기 명령이 수행될 상기 불휘발성 메모리가 서로 다른 칩인지 여부를 판별하는 단계; 및
상기 판별 결과, 서로 다른 칩인 경우, 제1 읽기 명령에 따른 추가 읽기 동작과 상기 제2 읽기 명령에 따른 제2 읽기 동작을 동시에 수행하는 단계를 더 구비하는 것을 특징으로 하는 메모리 제어 방법. - 제1항에 있어서, 상기 메모리 제어 방법은
플래쉬 변환 계층에 의해, 상기 제1 읽기 명령에 대응하는 상기 복수의 추가 읽기 동작들의 주소들을 논리 주소들로 변환하는 단계;
상기 플래쉬 변환 계층에 의해, 상기 변환된 논리 주소가 유효한지 여부를 판별하는 단계; 및
상기 판별 결과, 상기 변환된 논리 주소가 무효인 경우, 상기 랜덤 네이버 선택 동작에 의해 상기 제1 읽기 명령에 대응하는 다른 추가 읽기 동작들의 주소들을 선택하는 단계를 더 구비하는 것을 특징으로 하는 메모리 제어 방법. - 제1항에 있어서,
상기 분산된 복수의 추가 읽기 동작들은 상기 콘트롤러의 아이들 시간에 수행되는 것을 특징으로 하는 메모리 제어 방법. - 제1항에 있어서,
상기 랜덤 네이버 선택 동작에 의해 선택된 상기 제1 읽기 명령에 대응하는 복수의 추가 읽기 동작들의 주소들은 상기 제1 읽기 명령이 수행되는 블록과 동일한 자기 블록에 속하거나 인접한 이웃 블록에 속하는 것을 특징으로 하는 메모리 제어 방법. - 제1항에 있어서, 메모리 제어 방법은
상기 제1 읽기 명령에 대응하는 상기 복수의 추가 읽기 동작이 수행되는 블록의 스트링 선택 트랜지스터 및 접지 선택 트랜지스터의 상태를 체크하는 단계를 더 구비하는 것을 특징으로 하는 메모리 제어 방법. - 콘트롤러에 의해 불휘발성 메모리의 읽기 동작을 제어하는 방법에 있어서
읽기 명령을 수신하는 단계;
상기 읽기 명령이 수행될 상기 불휘발성 메모리의 읽기 회수가 소정의 임계치를 넘은 경우, 상기 읽기 명령에 따른 읽기 동작이 수행될 페이지의 이웃 페이지 데이터를 체크하기 위하여, 랜덤 네이버 선택 동작에 의해 복수의 추가 읽기 동작들이 수행될 주소들을 선택하는 단계;
상기 읽기 명령에 대응하는 상기 복수의 추가 읽기 동작들이 수행될 주소들을 호스트로 전송하는 단계; 및
상기 읽기 명령에 따른 상기 읽기 동작을 수행하는 단계를 구비하고,
상기 복수의 추가 읽기 동작들은 상기 호스트에 의해 사용자 읽기 동작으로 처리되는 단계를 구비하는 것을 메모리 제어 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140013322A KR102069274B1 (ko) | 2014-02-05 | 2014-02-05 | 메모리 제어 방법 |
US14/602,990 US9720624B2 (en) | 2014-02-05 | 2015-01-22 | Method of controlling a memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140013322A KR102069274B1 (ko) | 2014-02-05 | 2014-02-05 | 메모리 제어 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150092676A true KR20150092676A (ko) | 2015-08-13 |
KR102069274B1 KR102069274B1 (ko) | 2020-01-22 |
Family
ID=53754854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140013322A KR102069274B1 (ko) | 2014-02-05 | 2014-02-05 | 메모리 제어 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9720624B2 (ko) |
KR (1) | KR102069274B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170051843A (ko) * | 2015-11-02 | 2017-05-12 | 삼성전자주식회사 | 호스트 장치가 스토리지 장치를 제어하는 방법 및 호스트 장치와 스토리지 장치를 포함하는 메모리 시스템 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102435873B1 (ko) | 2015-12-18 | 2022-08-25 | 삼성전자주식회사 | 스토리지 장치 및 그것의 리드 리클레임 방법 |
KR102499061B1 (ko) | 2018-08-22 | 2023-02-13 | 삼성전자주식회사 | 상 변화 메모리 장치를 포함하는 반도체 메모리 장치 및 상 변화 메모리 장치를 액세스하는 방법 |
KR20200059780A (ko) * | 2018-11-21 | 2020-05-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20200059774A (ko) * | 2018-11-21 | 2020-05-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102641756B1 (ko) | 2021-11-11 | 2024-02-29 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US11922029B2 (en) * | 2022-06-02 | 2024-03-05 | Micron Technology, Inc. | Modified read counter incrementing scheme in a memory sub-system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7457169B2 (en) * | 2000-05-10 | 2008-11-25 | Micron Technology, Inc. | Flash with consistent latency for read operations |
WO2013145024A1 (en) * | 2012-03-30 | 2013-10-03 | Hitachi, Ltd. | Storage system with flash memory, and storage control method |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654847B1 (en) | 2000-06-30 | 2003-11-25 | Micron Technology, Inc. | Top/bottom symmetrical protection scheme for flash |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US7177977B2 (en) | 2004-03-19 | 2007-02-13 | Sandisk Corporation | Operating non-volatile memory without read disturb limitations |
US7716415B2 (en) | 2006-08-01 | 2010-05-11 | Sandisk Il Ltd. | Method of avoiding errors in flash memory |
JP2008287404A (ja) * | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
KR100882841B1 (ko) * | 2007-06-19 | 2009-02-10 | 삼성전자주식회사 | 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법 |
JP2009087509A (ja) * | 2007-10-03 | 2009-04-23 | Toshiba Corp | 半導体記憶装置 |
KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
EP2077559B1 (en) * | 2007-12-27 | 2012-11-07 | Hagiwara Solutions Co., Ltd. | Refresh method of a flash memory |
US7808831B2 (en) | 2008-06-30 | 2010-10-05 | Sandisk Corporation | Read disturb mitigation in non-volatile memory |
US8438453B2 (en) | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US7818525B1 (en) * | 2009-08-12 | 2010-10-19 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
KR101691092B1 (ko) | 2010-08-26 | 2016-12-30 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
US8553466B2 (en) | 2010-03-04 | 2013-10-08 | Samsung Electronics Co., Ltd. | Non-volatile memory device, erasing method thereof, and memory system including the same |
US9536970B2 (en) | 2010-03-26 | 2017-01-03 | Samsung Electronics Co., Ltd. | Three-dimensional semiconductor memory devices and methods of fabricating the same |
US8381018B2 (en) | 2010-05-21 | 2013-02-19 | Mediatek Inc. | Method for data recovery for flash devices |
US8819503B2 (en) | 2010-07-02 | 2014-08-26 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
US8503257B2 (en) * | 2010-07-30 | 2013-08-06 | Apple Inc. | Read disturb scorecard |
KR101682666B1 (ko) | 2010-08-11 | 2016-12-07 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
US8472266B2 (en) | 2011-03-31 | 2013-06-25 | Sandisk Technologies Inc. | Reducing neighbor read disturb |
US8670285B2 (en) | 2012-02-02 | 2014-03-11 | Sandisk Technologies Inc. | Reducing weak-erase type read disturb in 3D non-volatile memory |
US9257169B2 (en) * | 2012-05-14 | 2016-02-09 | Samsung Electronics Co., Ltd. | Memory device, memory system, and operating methods thereof |
KR20140008702A (ko) * | 2012-07-11 | 2014-01-22 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 쓰기 방법 |
US8972776B2 (en) * | 2013-03-06 | 2015-03-03 | Seagate Technology, Llc | Partial R-block recycling |
US9298534B2 (en) * | 2013-09-05 | 2016-03-29 | Kabushiki Kaisha Toshiba | Memory system and constructing method of logical block |
US8874835B1 (en) * | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9570198B2 (en) * | 2014-05-16 | 2017-02-14 | SK Hynix Inc. | Read disturb detection |
FR3038638A1 (fr) | 2015-07-08 | 2017-01-13 | Art Metal Charpente | Dispositif de chainage, ainsi qu'ensemble de chainage comprenant deux tels dispositifs |
-
2014
- 2014-02-05 KR KR1020140013322A patent/KR102069274B1/ko active IP Right Grant
-
2015
- 2015-01-22 US US14/602,990 patent/US9720624B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7457169B2 (en) * | 2000-05-10 | 2008-11-25 | Micron Technology, Inc. | Flash with consistent latency for read operations |
WO2013145024A1 (en) * | 2012-03-30 | 2013-10-03 | Hitachi, Ltd. | Storage system with flash memory, and storage control method |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170051843A (ko) * | 2015-11-02 | 2017-05-12 | 삼성전자주식회사 | 호스트 장치가 스토리지 장치를 제어하는 방법 및 호스트 장치와 스토리지 장치를 포함하는 메모리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
US9720624B2 (en) | 2017-08-01 |
KR102069274B1 (ko) | 2020-01-22 |
US20150220276A1 (en) | 2015-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102069274B1 (ko) | 메모리 제어 방법 | |
US9443599B2 (en) | Method of controlling erase operation of a memory and memory system implementing the same | |
US10712960B2 (en) | Configurable operating mode memory device and methods of operation | |
KR102024850B1 (ko) | 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법 | |
US9076516B2 (en) | Method for programming a nonvolatile memory device | |
EP2879041B1 (en) | Memory system, host system, and method of performing write operation in memory system | |
KR20150106778A (ko) | 메모리 시스템 및 메모리 시스템의 제어 방법 | |
KR101891164B1 (ko) | 프로그램 스케줄러를 포함하는 플래시 메모리 장치 | |
KR101997572B1 (ko) | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법 | |
KR20150080531A (ko) | 부분 페이지 메모리 동작 | |
CN106328200B (zh) | 半导体器件及其操作方法 | |
KR102254099B1 (ko) | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 | |
US20180211707A1 (en) | Semiconductor memory device and method of controlling semiconductor memory device | |
TWI683317B (zh) | 包含三維陣列結構的半導體記憶體裝置和包含其之記憶體系統 | |
US20150058697A1 (en) | Storage device, controller and memory controlling method | |
US20160104540A1 (en) | Non-volatile memory device and operating method thereof | |
KR102479483B1 (ko) | 메모리 시스템 및 이의 동작 방법 | |
KR20140075949A (ko) | 불휘발성 메모리 장치 및 메모리 시스템 | |
TW201714182A (zh) | 半導體記憶體裝置及其操作方法 | |
KR20140011667A (ko) | 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법 | |
KR20130087936A (ko) | 메모리 장치, 메모리 시스템 및 이의 프로그램 방법 | |
CN113495690B (zh) | 半导体存储器装置、控制器、存储器系统及其方法 | |
US20230147882A1 (en) | Memory controller for controlling allocation ratio of buffer memory, memory system including the same, and method of operating memory controller | |
CN105575428B (zh) | 半导体器件及其操作方法 | |
US10950313B1 (en) | Responding to changes in available power supply |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |