KR101678407B1 - 데이터 저장 장치 및 그것의 프로그램 방법 - Google Patents
데이터 저장 장치 및 그것의 프로그램 방법 Download PDFInfo
- Publication number
- KR101678407B1 KR101678407B1 KR1020100043613A KR20100043613A KR101678407B1 KR 101678407 B1 KR101678407 B1 KR 101678407B1 KR 1020100043613 A KR1020100043613 A KR 1020100043613A KR 20100043613 A KR20100043613 A KR 20100043613A KR 101678407 B1 KR101678407 B1 KR 101678407B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- program
- arrangement
- memory
- encoding
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/10—Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Semiconductor Memories (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
본 발명에 따른 저장 장치는, 복수의 메모리 셀들을 포함하는 불휘발성 메모리 장치, 그리고 프로그램 데이터의 배열을 조정하여 상기 복수의 메모리 셀들에 프로그램하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 복수의 메모리 셀들 중 인접한 메모리 셀들 상호 간의 물리적 간섭을 야기하는 특정 데이터 패턴을 상기 프로그램 데이터로부터 제거한다.
Description
본 발명은 반도체 메모리 장치에 관한 것으로, 구체적으로는 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 프로그램 방법에 관한 것이다.
반도체 메모리 장치(Semiconductor Memory Device)는 크게 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Non-volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다. 특히, 불휘발성 메모리 중에서 플래시 메모리(Flash memory)는 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로의 응용에 매우 유리하다.
최근 들어 메모리 장치에 대한 고집적 요구가 증가함에 따라, 하나의 메모리 셀에 멀티 비트를 저장하는 멀티-비트 메모리 장치들이 보편화되고 있다. 또한, 집적도를 높이기 위한 공정 미세화 기술이 지속적으로 발전하고 있다. 하지만, 공정 미세화에 따라 발생하는 높은 기술적 장벽들이 존재한다. 미세화가 진행될수록, 불휘발성 메모리 장치의 메모리 셀들간에 발생하는 간섭이 문제되고 있다. 셀들 간에 발생하는 간섭으로는 커플링(Coupling), 프로그램 및 읽기 교란(Program and read disturbance), 채널 연결 교란(Channel coupled disturbance) 등이 있다. 이러한 간섭에 의해서 메모리 셀의 문턱 전압 산포가 확산된다. 이러한 문제를 해결하기 위한 시도로 전하 포획 플래시(Charge Trap Flash: CTF) 메모리가 개발되었지만, 측면 전하 누설(Lateral Charge Spreading)과 같은 물리적 장벽 문제가 여전히 존재한다.
이러한 물리적인 간섭의 문제를 해결하기 위해 메모리 장치의 설계 기술을 변경하거나, 더욱 강력한 에러 정정 부호(ECC)를 사용하는 시도가 있어왔다. 그러나 강력한 에러 정정 부호(ECC)와 설계의 변경을 위해서는 상대적으로 높은 비용이 요구된다. 따라서, 집적도의 향상에 따라 저비용으로 상술한 물리적인 간섭의 문제를 제거하기 위한 기술이 절실한 실정이다.
본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, 인접 셀들 간의 간섭 문제를 해결할 수 있는 데이터 저장 장치 및 그것의 프로그램 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 데이터 저장 장치는, 복수의 메모리 셀들을 포함하는 불휘발성 메모리 장치, 그리고 프로그램 데이터의 배열을 조정하여 상기 복수의 메모리 셀들에 프로그램하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 복수의 메모리 셀들 중 인접한 메모리 셀들 상호 간의 물리적 간섭을 야기하는 특정 데이터 패턴을 상기 프로그램 데이터로부터 제거한다.
상기 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 데이터 저장 장치의 프로그램 방법은, 프로그램 데이터를 에러 정정 부호 연산에 따라 부호화는 단계, 런 길이 제한 부호 연산에 따라, 상기 에러 정정 부호 연산에 따라 부호화된 데이터의 배열을 조정하는 단계, 그리고 상기 배열이 조정된 데이터의 비트 값을 반전시키는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 다른 실시 예에 따른 데이터 저장 장치의 프로그램 방법은, 프로그램 데이터를 에러 정정 부호 연산에 따라 부호화는 단계, 런 길이 제한 부호 연산에 따라, 상기 에러 정정 부호 연산에 따라 부호화된 데이터의 배열을 조정하는 단계, 그리고 상기 배열이 조정된 데이터를 라인 부호(Line code)로 인코딩하는 단계를 포함한다.
이상과 같은 본 발명에 따른 데이터 저장 장치 및 그것의 프로그램 방법에 따르면, 간단한 연산을 통해서 간섭의 문제를 해결할 수 있는 데이터 배열을 구현할 수 있다. 따라서, 공정의 미세화에 따라 부닥치게 되는 인접 셀간의 간섭 문제를 해결할 수 있다.
도 1은 불휘발성 메모리 셀의 문턱 전압 산포를 보여주는 도면;
도 2는 불휘발성 메모리 셀들의 구성 및 프로그램 상태를 보여주는 도면;
도 3은 본 발명의 제 1 실시 예에 따른 저장 장치를 보여주는 블록도;
도 4는 도 3의 배열 조정기의 예를 보여주는 블록도;
도 5는 런 길이 제한(RLL) 부호의 예를 보여주는 표;
도 6은 도 3의 배열 조정기에 의한 데이터 처리 결과를 보여주는 표;
도 7은 도 3의 배열 조정기의 다른 예를 보여주는 블록도;
도 8은 도 7의 배열 조정기에 의한 데이터 처리 결과를 보여주는 표;
도 9a 내지 도 9m은 도 3의 배열 조정기의 다양한 예들을 보여주는 블록도;
도 10은 상 변화 메모리 셀의 구성을 보여주는 도면;
도 11은 본 발명의 제 2 실시 예를 보여주는 블록도;
도 12는 제 2 실시 예의 효과를 보여주는 표;
도 13은 본 발명의 방법이 적용되는 SSD를 보여주는 블록도;
도 14는 본 발명의 방법이 적용되는 메모리 카드를 보여주는 블록도; 및
도 15는 본 발명의 방법이 적용되는 플래시 메모리 장치를 포함하는 컴퓨터 시스템을 보여주는 블록도이다.
도 2는 불휘발성 메모리 셀들의 구성 및 프로그램 상태를 보여주는 도면;
도 3은 본 발명의 제 1 실시 예에 따른 저장 장치를 보여주는 블록도;
도 4는 도 3의 배열 조정기의 예를 보여주는 블록도;
도 5는 런 길이 제한(RLL) 부호의 예를 보여주는 표;
도 6은 도 3의 배열 조정기에 의한 데이터 처리 결과를 보여주는 표;
도 7은 도 3의 배열 조정기의 다른 예를 보여주는 블록도;
도 8은 도 7의 배열 조정기에 의한 데이터 처리 결과를 보여주는 표;
도 9a 내지 도 9m은 도 3의 배열 조정기의 다양한 예들을 보여주는 블록도;
도 10은 상 변화 메모리 셀의 구성을 보여주는 도면;
도 11은 본 발명의 제 2 실시 예를 보여주는 블록도;
도 12는 제 2 실시 예의 효과를 보여주는 표;
도 13은 본 발명의 방법이 적용되는 SSD를 보여주는 블록도;
도 14는 본 발명의 방법이 적용되는 메모리 카드를 보여주는 블록도; 및
도 15는 본 발명의 방법이 적용되는 플래시 메모리 장치를 포함하는 컴퓨터 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 불휘발성 메모리 장치의 예로 플래시 메모리 장치(Flash memory device) 또는 상 변화 메모리(PRAM)가 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 플래시 메모리 장치의 셀 문턱 전압 산포(Cell threshold voltage distribution)를 보여주는 도면이다. 도 1을 참조하면, 메모리 셀은 소거 상태(Erase state: E)와 프로그램 상태(Program state: P) 중 어느 하나의 문턱 전압 상태로 프로그램된다.
데이터 '1'에 대응하는 소거 상태(E)는 데이터 '0'에 대응하는 프로그램 상태(P)보다 낮은 문턱 전압 산포를 갖는다. 낸드(NAND)형 플래시 메모리 장치에서, 소거 상태(E)는 음의 전압 범위에 분포한다. 반면, 노어(NOR)형 플래시 메모리 장치에서 소거 상태(E)는 양의 전압 범위에 분포할 수 있다.
프로그램 상태(P)로 프로그램된 메모리 셀의 플로팅 게이트에는 상대적으로 높은 밀도의 전하가 주입되어 있다. 반면, 소거 상태(E)로 프로그램된 메모리 셀의 플로팅 게이트의 전하 밀도는 상대적으로 낮다. 따라서, 서로 다른 프로그램 상태로 프로그램된 인접한 메모리 셀들은 상호 간섭을 미치게 된다. 간섭의 예로, 교란(Disturbance)이나 측면 전하 확산(Lateral Charge Spreading), 셀간 커플링(Coupling) 등이 있다.
메모리 셀의 문턱 전압은 인접한 메모리 셀의 문턱 전압에 따라 높아지거나 낮아질 수 있다. 전하 포획 플래시 메모리(Charge Trap Flash Memory)에서는 소거 상태(E)로 프로그램된 메모리 셀과 프로그램 상태(P)로 프로그램된 메모리 셀 사이에서 이러한 측면 전하 확산(Lateral Charge Spreading) 현상이 현저하다. 플로팅 게이트 형 플래시 메모리 장치에서는 프로그램 교란(Program Disturbance)이나 읽기 교란(Read Disturbance), 커플링 현상이 현저하다.
특히, 집적도의 증가에 따라 인접 셀과의 간격이 좁아짐에 따라 상술한 간섭의 효과는 커지게 된다. 따라서, 소거 상태(E)와 프로그램 상태(P)로 프로그램된 메모리 셀들이 인접하게 되는 조건을 차단하기 위한 데이터 처리가 필요하다.
도 2는 동일 워드 라인에 연결되며 인접한 메모리 셀들에 프로그램되는 데이터의 패턴들을 예시적으로 보여주는 도면이다. 도 2를 참조하면, 3개 그룹의 메모리 셀들(10, 20, 30)에 프로그램되는 데이터의 패턴의 예가 도시되어 있다.
제 1 그룹(10)은 '010'의 데이터가 프로그램된 메모리 셀들을 보여준다. 즉, 3개의 메모리 셀들 중 양쪽에 위치하는 메모리 셀들은 프로그램 상태(P)로 프로그램된다. 그리고 중간에 위치하는 메모리 셀은 소거 상태(E)로 존재한다. 이 경우, 소거 상태(E)에 대응하는 메모리 셀은 양쪽에 위치하는 프로그램 상태(P)의 메모리 셀들로부터 동시에 간섭을 받게 된다. 따라서, 제 1 그룹(10)의 메모리 셀들에 프로그램된 데이터 패턴(P-E-P)은 최악의 데이터 패턴(Worst pattern)임을 알 수 있다.
반면, 제 2 그룹(20)은 '100'의 데이터가 프로그램된 메모리 셀들이다. 그리고 제 3 그룹(30)은 '000'의 데이터가 프로그램된 메모리 셀들이다. 제 2 그룹(20)과 제 3 그룹(30)에서, 가운데 위치하는 메모리 셀이 프로그램 동작 중 또는 프로그램 이후에 받는 간섭의 크기는 제 1 그룹(10)에 비하여 상대적으로 훨씬 작다. 따라서, 제 1 그룹(10)의 메모리 셀들에 기입되는 데이터 패턴(P-E-P)이 발생하지 않도록 프로그램 데이터의 배열을 조정할 필요가 있다.
도 3은 본 발명의 제 1 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 3을 참조하면, 저장 장치는 메모리 컨트롤러(100) 및 플래시 메모리 장치(200)를 포함한다.
메모리 컨트롤러(100)는 호스트(Host)로부터의 요청에 응답하여 플래시 메모리 장치(200)를 액세스한다. 호스트(Host)로부터 프로그램 데이터(Program data)가 제공되면, 메모리 컨트롤러(100)는 보안성 및 신뢰성을 높이기 위한 데이터 처리를 수행한다. 예를 들면, 메모리 컨트롤러(100)는 프로그램 데이터에 대한 랜덤화 연산을 수행한다. 그리고 메모리 컨트롤러(100)는 프로그램 데이터에 대한 에러 정정 부호(ECC) 연산을 수행할 수 있다. 더불어, 메모리 컨트롤러(100)는 최악의 패턴(P-E-P)이 발생하지 않도록 프로그램 데이터에 대한 배열 조정 연산을 수행한다. 이러한 동작을 위해, 메모리 컨트롤러(100)는 랜더마이저(110), ECC 유닛(120) 및 배열 조정기(130)를 포함한다.
랜더마이저(110)는 프로그램 데이터에 대한 랜덤화 연산(Randomizer operation)을 수행한다. 랜더마이저(110)는 플래시 메모리 장치(200)로부터 독출된 데이터에 대해서 원래의 데이터 배열로 복귀시키는 디-랜덤화 연산(De-randomizer operation)을 수행한다. 랜더마이저(110)에 의해서 프로그램 데이터의 배열은 원래 데이터와는 달리 랜덤하게 변경된다. 랜덤화된 프로그램 데이터가 메모리 셀들에 저장되면, 메모리 셀들 간에 발생하는 간섭이 평균화된다. 또한, 랜덤화 연산을 통해서 데이터의 보안성이 강화될 수 있다.
ECC 유닛(120)은 프로그램 동작시 랜더마이저(110)로부터 전달받은 프로그램 데이터를 에러 정정 부호(Error correction code: ECC) 연산에 따라 인코딩한다. ECC 유닛(120)은 프로그램 데이터를 에러 검출 및 정정을 위한 최소 단위인 부호어로 구분한다. ECC 유닛(120)은 각각의 부호어에 대해서 에러의 검출 및 정정을 위한 처리를 수행한다. 에러 정정 부호(ECC) 연산에 따라 ECC 유닛(120)은 프로그램 데이터에 대응하는 패리티를 생성한다.
반면, ECC 유닛(120)은 독출 데이터가 제공되면, 에러를 검출하고 검출된 에러를 정정한다. ECC 유닛(120)은 독출 데이터에 포함되는 패리티를 참조하여, 유저 데이터에 에러가 존재하는지 검출할 것이다. 만일, 유저 데이터에 에러가 존재하는 경우, ECC 유닛(120)은 에러의 위치와 에러 값을 계산하여 정정한다. 에러가 정정된 유저 데이터는 랜더마이저(110)에 전달될 것이다.
배열 조정기(130)는 프로그램 데이터의 배열을 조정한다. 배열 조정기(130)는 특정 패턴(예를 들면, P-E-P)의 데이터 열이 플래시 메모리 장치에 프로그램되지 않도록 프로그램 데이터의 배열을 조정한다. 배열 조정기(130)는 읽기 동작시에는 프로그램 동작과는 반대의 처리 절차에 따라 독출 데이터를 복호한다. 배열 조정기(130)는 독출 데이터의 조정된 배열을 원래의 배열로 복구하여 ECC 유닛(120)에 전달할 수 있다.
플래시 메모리 장치(200)는 플로팅 게이트 형 플래시(Floating gate flash) 또는 전하 포획형 플래시(Charge trap flash) 메모리 장치로 구성될 수 있다. 플래시 메모리 장치(200)의 메모리 셀들은 싱글 레벨 셀(Single Leveled Cell: SLC) 또는 멀티 레벨 셀(Multi Leveled Cell: MLC) 형태로 구현될 수 있다. 플래시 메모리 장치(200)는 다양한 메모리 장치들로 대체될 수 있다. 플래시 메모리 장치(200)는 PRAM(Phase Change Random Access Memory)이나 RRAM(Resistance Random Access Memory)과 같은 저항 메모리(Resistive Memory)로 대체될 수 있다. 뿐만 아니라, 플래시 메모리 장치(200)는 NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 기억 소자들 중 어느 하나를 사용하는 메모리 장치로 대체될 수 있다.
이상의 본 발명의 제 1 실시 예에 따르면, 프로그램 데이터에 포함되는 특정 패턴은 배열 조정기(130)에 의해서 제거될 수 있다. 그리고 ECC 유닛(120)과 배열 조정기(130)의 위치가 도시된 순서에 국한되지 않음은 잘 이해될 것이다. 즉, ECC 유닛(120)과 배열 조정기(130)는 다양한 조합들에 의하여 그 위치가 변경될 수 있다. 예를 들면, ECC 유닛(120)에 의한 ECC 연산이 메시지 데이터의 배열을 변경하지 않는 체계적인 ECC(Systemic ECC)인 경우, 배열 조정기(130)는 ECC 유닛(120)의 앞 부분에 위치할 수 있다.
배열 조정기(130)는 프로그램을 위해서 입력되는 모든 데이터 열에 대해서 상술한 처리 절차를 적용할 수 있다. 하지만, 모든 프로그램 데이터에 대해서 데이터 배열을 조정하는 경우, 메모리 컨트롤러(100)에는 지나친 부담이 될 수 있다. 따라서, 데이터의 신뢰성이 보장되어야 하는 일부 데이터에 대해서만 배열 조정기(130)에 의한 처리가 적용될 수 있다.
도 4는 도 3의 배열 조정기(130)의 예를 보여주는 블록도이다. 도 4를 참조하면, 배열 조정기(130)는 RLL 부호기/복호기(131)와 인버터(132)를 포함한다.
RLL 부호기/복호기(131)는 ECC 유닛(120)으로부터 제공되는 프로그램 데이터에 대해 런 길이 제한 부호(Run Length-Limited code)로 처리한다. RLL 부호기/복호기(131)는 입력되는 데이터 열에 대해서 논리 '1'이 인접하지 않도록 인코딩한다. 예를 들면, 2진 런 길이 제한 코드(Binary RLL coding)의 예로서 (d, k) 코드의 경우, 2개의 논리 '1' 사이에는 논리 '0'이 최소 'd'개에서 최대 'k'개가 포함될 수 있다. 여기서, 'd'는 두 개의 논리 '1' 사이에 허용되는 논리 '0'의 최소 개수를 의미한다. 'k'는 두 개의 논리 '1' 사이에 허용되는 논리 '0'의 최대 개수를 의미한다. RLL 부호기/복호기(131)는 독출 데이터에 대해서는 프로그램 동작과는 반대의 복호를 수행한다.
인버터(132)는 RLL 부호기/복호기(131)에 의해서 부호화된 데이터를 반전시킨다. (d=2, k=∞)의 RLL 부호화 조건에 따르면, 2개의 논리 ‘1’ 사이에는 항상 논리 ‘0’이 두 개 이상 존재한다. 따라서, 프로그램 데이터에 ‘101’ 패턴이 존재하는 경우를 원천적으로 막을 수 있다. (d=2, k=∞) 조건의 RLL 부호화 이후에 인버터(132)를 적용하면, 결국,‘010’ 패턴이 존재하는 것을 원천적으로 막을 수 있다. 따라서, 회피되어야 할 특정 패턴(P-E-P)의 발생은 차단될 수 있다.
인버터(132)에 의해서 반전된 프로그램 데이터에는 특정 패턴(P-E-P)의 데이터 열이 포함되지 않는다. 따라서, 플래시 메모리 장치(200)에 저장된 이후에 인접 셀들 간의 간섭은 차단될 수 있다. 독출 동작시, RLL 부호기/복호기(131)와 인버터(132)는 프로그램 동작과 반대의 절차에 따라 독출 데이터를 처리한다.
도 5는 런 길이 제한 부호(RLL code)의 예를 간략히 보여주는 표이다. 도 5를 참조하면, 논리 '1'이 인접하지 않도록 구성되는 2진 런 길이 제한 부호(Binary RLL code)의 예로서 (d=1, k=∞)의 부호화 조건을 정의하는 표가 도시되어 있다.
(d=1, k=∞)의 부호화 조건에 따르면, 2개의 논리 '1' 사이에는 논리 '0'이 최소 1개에서 무한대까지 포함될 수 있다. 이러한 부호화 조건에 따라, 3-비트 입력 5-비트 출력의 런 길이 제한 부호가 도시한 표와 같은 룩업 테이블 방식으로 구성될 수 있다. 만일, 입력 데이터가 '010'이라면, RLL 부호기/복호기(131, 도 4 참조)는 데이터 '00010'을 출력할 것이다. 입력 데이터가 '111'이라면, RLL 부호기/복호기(131, 도 4 참조)는 데이터 '01010'을 출력할 것이다.
(d=1, k=∞)의 복호화 절차는 부호화 절차와 반대로 수행된다. 만일, 독출된 데이터 열이 '01010'이라면, RLL 부호기/복호기(131)는 데이터 '111'로 복호할 것이다. 만일, 독출된 데이터 열이 '00001'이라면, RLL 부호기/복호기(131)는 데이터 '001'로 복호할 것이다.
런 길이 제한 부호의 인코딩/디코딩 방식은 도시된 룩업 테이블 방식에만 국한되지는 않는다. 예를 들면, 다양한 방식으로 설계된 알고리즘에 따라 런 길이 제한 코드(Binary RLL code)가 구현될 수 있다.
도 6은 도 4의 배열 조정기(130)의 데이터 처리 절차를 예시적으로 보여주는 표이다. 도 6을 참조하면, 런 길이 제한 부호에 의해서 구성되는 데이터 열에서 특정 패턴(P-E-P)이 발생할 수 있으나, 반전에 의해서 특정 패턴이 사라질 수 있다. 좀더 자세히 설명하면 다음과 같다.
(d=2, k=∞)의 조건에 따라 부호화된 데이터 열이 [10010001…]이라 가정하자. 그러면, 런 길이 제한 부호에 의하여 ‘101’ 패턴이 제거되는 것을 알 수 있다. 런 길이 제한 부호화 이후에 인버터(132)를 적용하면, ‘010’ 패턴 [PEP] 패턴이 제거됨을 알 수 있다. 만일, 논리 ‘1’이 P, 논리 ‘0’이 E라면, 인버터(132)를 적용하지 않고, (d=2, k=∞)의 조건에 따른 RLL 부호기/복호기(131)만 적용하면 [PEP] 패턴을 제거할 수가 있다.
도 7은 도 3의 배열 조정기의 다른 예를 보여주는 블록도이다. 도 7을 참조하면, 배열 조정기(130′)는 RLL 부호기/복호기(131)와 라인 부호기/복호기(133)를 포함한다. RLL 부호기/복호기(131)는 앞서 설명된 도 4의 RLL 부호기/복호기(131)와 실질적으로 동일하다. 따라서, RLL 부호기/복호기(131)에 대한 설명은 생략하기로 한다.
라인 부호기/복호기(133)는 RLL 부호기/복호기(131)로부터 부호화된 데이터 열을 라인 부호 방식으로 처리한다. 일반적으로 라인 부호는 전송 선로에 적합하도록 설계된 부호 형식이다. 따라서, 라인 부호는 직류 성분을 최소화하기 위한 데이터 배열을 특징으로 한다. 라인 부호에 의한 인코딩시, 입력되는 데이터의 비트 값에 따라서 이전 출력 비트 값을 유지할지 또는 반전시킬지가 결정된다. 차동 부호(Differential encoding, NRZ-M)를 예로 들면, 입력되는 비트가 '0'이면 이전 출력의 비트 값을 유지한다. 반면, 입력 비트가 '1'이면, 이전 출력의 비트 값을 반전시켜 출력한다. 이러한 라인 부호를 사용하면, RLL 부호기/복호기(131)에 의해서 제거되지 못한 특정 패턴(P-E-P)이 라인 부호기/복호기(133)에 의해서 제거될 수 있다.
본 발명의 라인 부호기/복호기(133)에 적용될 수 있는 라인 부호로는 NRZ-M(NRZ-I), NRZ-S, NRZ-L, RZ, RZ-AMI, Bi-Φ-L(Bi-phase-L), Bi-Φ-M(Bi-phase-M), Bi-Φ-S(Bi-phase-S), 지연 변조(Delay modulation), dicode NRZ, Dicode RZ 등이 사용될 수 있다.
도 8은 도 7의 배열 조정기(130′)의 데이터 처리 절차를 예시적으로 보여주는 표이다. 도 8을 참조하면, 프로그램을 위해서 입력되는 데이터 열에서 특정 패턴(P-E-P)이 존재할 수 있으나, 런 길이 제한 부호(RLL code)와 라인 부호(Line code)에 의해서 제거될 수 있다. 좀더 자세히 설명하면 다음과 같다.
ECC 유닛(120)으로부터 제공되는 원데이터(Original data)가 9-비트의 데이터 열 [010│110│101]이라 가정하자. 그러면, 원데이터(Original data)에 대응하는 패턴은 [ PEP │EE P │ EP E]로 나타난다. 따라서, 배열 조정기(130′)에 의한 처리없이 원데이터가 프로그램되면, 셀들 간의 간섭 현상을 피할 수 없다.
원데이터 [010│110│101]에 대한 (d=1, k=∞) 부호화 조건으로 런 길이 제한 부호 연산을 실행하면, [00010│01001│01000]의 데이터 열이 출력된다. 이러한 데이터 열의 출력은 도 5의 표에 의해서도 쉽게 구할 수 있다. 하지만, 여전히 데이터 열에는 특정 패턴(P-E-P)이 존재한다.
런 길이 제한 부호화의 결과 값을 라인 부호(NRZ-M)로 부호화하면, 데이터 열 [00011│10001│10000]로 조정된다. 조정된 데이터 열에 대응하는 패턴은 [PPPEE│EPPPE│EPPPP]가 된다. 따라서, 라인 부호화에 따라 데이터 열에서 특정 패턴(P-E-P)은 제거될 수 있다.
도 9a 내지 도 9m은 본 발명의 배열 조정기의 또 다른 예들을 보여주는 블록도들이다. 앞서, 도 4 및 도 7에서 예시적으로 2가지의 배열 조정기(130, 130′)가 도시되었으나, 본 발명의 배열 조정기는 다양한 배치를 통해서 다양하게 구현될 수 있다. 즉, 배열 조정기(130)는 RLL 부호기/복호기(131), 인버터(132) 및 라인 부호기/복호기(133)들의 다양한 조합을 통해서 구현될 수 있을 것이다.
도 9a는 RLL 부호기/복호기(131) 하나만으로 구성되는 배열 조정기(130a)를 예시적으로 보여주는 블록도이다. 도 9b 및 도 9c는 RLL 부호기/복호기(131)가 가장 전단에 위치하는 조건에서 인버터(132) 또는 라인 부호기/복호기(133)의 조합에 의해서 구성되는 배열 조정기들(130b, 130c)을 보여준다.
도 9d는 인버터(132) 하나만으로 구성되는 배열 조정기(130d)를 예시적으로 보여주는 블록도이다. 도 9e 내지 도 9h는 인버터(132)가 가장 전단에 위치하는 조건에서 RLL 부호기/복호기(131) 또는 라인 부호기/복호기(133)의 조합에 의해서 구성되는 배열 조정기들(130e, 130f, 130g, 130h)을 보여준다.
도 9i는 라인 부호기/복호기(133) 하나만으로 구성되는 배열 조정기(130i)를 예시적으로 보여주는 블록도이다. 도 9j 내지 도 9m은 라인 부호기/복호기(133)가 가장 전단에 위치하는 조건에서 RLL 부호기/복호기(131) 또는 인버터(132)의 조합에 의해서 구성되는 배열 조정기들(130j, 130k, 130l, 130m)을 보여준다.
이상의 실시 예들에서, 제거하기 위한 데이터 패턴의 예로 (P-E-P)를 가정하였으나 본 발명의 이점은 여기에만 국한되지 않음은 잘 이해될 것이다. 다양한 적용과 다양한 목적을 위해서 제거될 데이터 패턴은 변경될 수 있다.
도 10은 본 발명의 기술적 특징이 적용되는 상 변화 메모리 셀(Phase change memory cell)를 보여주는 도면이다. 도 10을 참조하면, 상 변화 메모리 셀들(310, 320, 330, 340) 각각에 대응하는 가변 저항체들이 단면도로 도시되어 있다.
상 변화 메모리 셀들(310, 320, 330, 340) 각각은 상부 전극(Top Electrode), 상 변화 물질(GST), 콘택 플러그(CP), 그리고 하부 전극(Bottom Electrode)을 포함한다. 도시되지는 않았지만, 상부 전극(Top Electrode)은 비트 라인(BL)에 연결된다. 하부 전극(Bottom Electrode)은 콘택 플러그(CP)와 액세스 트랜지스터(NT, 미도시됨) 사이에 연결된다. 콘택 플러그(CP)는 도전성 물질(예컨대, TiN 등)로 형성되며, 히터 플러그(Heater Plug)라고도 부른다. 상 변화 물질(GST)은 상부 전극(Top Electrode)과 콘택 플러그(CP) 사이에 형성된다.
상 변화 물질(GST)은 전류 펄스의 공급을 통해 용융 온도(Melting temperature)보다 높은 온도로 가열한 뒤 급속히 냉각(Quenching)하면 비정질 상태(Amorphous state)로 된다. 비정질 상태는 보통 리셋 상태(Reset state)라고 부르며, 데이터 '1'에 대응한다. 이와는 달리, 상 변화 물질(GST)은 결정화 온도(Crystallization temperature)보다 높고 용융 온도(Tm)보다는 낮은 온도로 가열한 뒤 서서히 냉각하면 결정 상태(Crystalline state)로 된다. 결정 상태는 보통 셋 상태(Set state)라고도 부르며, 데이터 '0'에 대응한다. 메모리 셀의 저항은 상 변화 물질(GST)에 포함되는 비정질의 양(Amorphous volume)에 따라 달라진다. 메모리 셀의 저항은 비정질 상태(Amorphous state)일 때 가장 높고, 결정 상태(Crystalline state)일 때 가장 낮다.
상 변화 메모리 셀을 리셋 상태로 프로그램하기 위해서는, 상 변화 물질(GST)이 용융 온도보다 높게 가열되고 급속히 냉각되어야 한다. 하지만, 인접한 상 변화 메모리 셀들(320, 330, 340)이 모두 리셋 상태로 프로그램되는 상태에서는 급속한 냉각은 용이하지 못하다. 예를 들면, 주변 상 변화 메모리 셀들(320, 330, 340)이 모두 리셋 상태로 프로그램되는 경우, 상 변화 메모리 셀(330)의 냉각 속도는 느려질 수 있다. 이 경우, 상 변화 메모리 셀(330)의 저항은 타깃 저항보다 작아질 수 있다.
결국, 상 변화 메모리에서는 연속적인 3개 또는 그 이상의 인접 메모리 셀들을 모두 리셋 상태로 프로그램하는 데이터 패턴 (R-R-R)이 제거되어야 할 데이터 패턴(Worst pattern)이 될 수 있다.
도 11은 본 발명의 제 2 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 11을 참조하면, 저장 장치(400)는 RLL 부호기/복호기(410) 및 상 변화 메모리 장치(420)를 포함한다.
RLL 부호기/복호기(410)는 호스트(Host)로부터의 요청에 응답하여 상 변화 메모리 장치(420)를 액세스한다. 호스트(Host)로부터 프로그램 데이터(Program data)가 제공되면, RLL 부호기/복호기(410)는 최악의 패턴(R-R-R)이 발생하지 않도록 프로그램 데이터에 대한 배열 조정 연산을 수행한다. RLL 부호기/복호기(410)는 바람직하게는 상 변화 메모리 장치(420)에 기입되는 데이터에 연속적인 3개 이상의 리셋 데이터가 포함되지 못하도록 런 길이 제한 부호 연산을 수행한다. 이러한 동작을 위해, RLL 부호기/복호기(410)는 다양한 조건의 런 길이 제한 부호 연산을 수행할 수 있다.
상 변화 메모리 장치(420)는 도 10에서 설명된 프로그램 특성을 가진다. 따라서, 프로그램 데이터에 특정 데이터 패턴(R-R-R)이 포함되는 경우, 상 변화 메모리 장치(420)의 데이터의 신뢰도가 낮아지게 될 것이다. 즉, 특정 데이터 패턴(R-R-R)은 인접한 3개의 메모리 셀들이 모두 리셋 상태로 프로그램되는 경우에 해당한다. 이때, 가운데 위치한 메모리 셀의 냉각 속도는 인접한 셀들의 온도에 의하여 상대적으로 낮아질 수 있다. 그러면, 가운데 위치한 메모리 셀의 상 변화 물질 비정질(Amorphous Stage) 상태로 충분히 변화되지 못할 수 있을 것이다.
하지만, RLL 부호기/복호기(410)에 의하여 최악의 패턴(R-R-R)이 제거되면, 이러한 프로그램 조건은 차단될 수 있다. 또한, 상술한 도 11에서는 RLL 부호기/복호기(410)만이 도시되었으나, 데이터의 배열을 조정하기 위한 랜더마이저나 체계적 또는 비체계적(Systemic or Non-systemic) ECC 유닛이 추가될 수 있음은 잘 이해될 것이다.
도 12는 도 11의 RLL 부호기/복호기(410)의 데이터 처리 절차를 예시적으로 보여주는 표이다. 도 12를 참조하면, 프로그램을 위해서 입력되는 데이터 열에서 특정 패턴(R-R-R)이 존재할 수 있다. 그러나 런 길이 제한 부호에 의해서 인코딩되면, 프로그램을 위해서 입력되는 데이터 열에서 특정 데이터 패턴(R-R-R)이 제거될 수 있다.
호스트(Host)로부터 RLL 부호기/복호기(410)에 프로그램을 위해서 전달되는 원데이터(Original data)가 9-비트의 데이터 열 [011│110│101]이라 가정하자. 원데이터(Original data)에 대응하는 패턴은 [SRR│RRS│RSR]로 나타난다. 따라서, RLL 부호기/복호기(410)에 의한 처리없이 원데이터가 프로그램되면, 셀들 간의 간섭 현상을 피할 수 없다. 원데이터(Original data)에는 리셋 상태가 4번 연속되는 데이터 패턴(R-R-R-R)이 포함되기 때문이다.
하지만, 원데이터 [011│110│101]에 대한 (d=1, k=∞) 부호화 조건으로 런 길이 제한 부호 연산을 실행하면, [00100│01001│01000]의 데이터 열이 출력된다. 이러한 데이터 열의 출력은 도 5의 표에 의해서도 쉽게 구할 수 있다. RLL 부호기/복호기(410)에 의하여 인코딩된 데이터 열에는 데이터 패턴(R-R-R-R)이 관찰되지 않는다. RLL 부호기/복호기(410)에 의하여 비트 수는 증가하였지만, 데이터 패턴(R-R-R-R)은 완전히 제거될 수 있다.
이상에서는 상 변화 메모리 장치에서 제거될 데이터 패턴의 예로 (R-R-R)를 가정하였으나, 본 발명의 이점은 여기에만 국한되지 않음은 잘 이해될 것이다. 다양한 적용과 다양한 목적을 위해서 제거될 데이터 패턴은 다양하게 설정될 수 있다.
도 13은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 SSD를 보여주는 블록도이다. 도 13을 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 SSD 컨트롤러(1210), 버퍼 메모리(1220), 그리고 불휘발성 메모리 장치(1230)를 포함한다.
SSD 컨트롤러(1210)는 호스트(1100)와 SSD(1200)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(1210)는 호스트(1100)의 버스 포맷(Bus format)에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(1210)는 호스트(1100)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(1210)는 불휘발성 메모리 장치(1230)를 액세스한다. 호스트(1100)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.
SSD 컨트롤러(1210)는 도 3에서 도시된 랜더마이저(110), ECC 유닛(120) 및 배열 조정기(130)들 중 적어도 하나를 포함할 수 있다. 그리고 배열 조정기(130)는 RLL 부호기/복호기(131), 인버터(132) 및 라인 부호기/복호기(133)와 같은 기능 및 구성들의 조합에 의해서 구성될 수 있다.
버퍼 메모리(1220)에는 호스트(1100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(1230)로부터 읽혀진 데이터가 일시 저장된다. 호스트(1100)의 읽기 요청시에 불휘발성 메모리 장치(1230)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(1220)는 캐시된 데이터를 직접 호스트(1100)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(1100)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(1200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(1100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(1220)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다.
버퍼 메모리(1220)는 대용량의 보조 기억 장치로 사용되는 SSD(1200)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(1220)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
불휘발성 메모리 장치(1230)는 SSD(1200)의 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리 장치(1230)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 불휘발성 메모리 장치(1230)는 복수의 메모리 장치로 구성될 수 있다. 이 경우, 각각의 메모리 장치들은 채널 단위로 SSD 컨트롤러(1210)와 연결된다. 저장 매체로서 불휘발성 메모리 장치(1230)가 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 그리고 저장 매체로서 휘발성 메모리 장치(예를 들면, DRAM)이 포함될 수도 있다.
도 14는 본 발명에 따른 메모리 시스템(2000)을 간략히 보여주는 블록도이다. 도 14를 참조하면, 본 발명에 따른 메모리 시스템(2000)은 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)를 포함한다.
메모리 컨트롤러(2100)는 불휘발성 메모리 장치(2200)를 제어하도록 구성될 것이다. 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)의 결합에 의해 메모리 카드 또는 반도체 디스크 장치(Solid State Disk: SSD)로 제공될 수 있을 것이다. SRAM(2110)은 프로세싱 유닛(2120)의 동작 메모리로 사용된다. 호스트 인터페이스(2130)는 메모리 시스템(2000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(2140)은 불휘발성 메모리 장치(2200)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(2150)는 본 발명의 불휘발성 메모리 장치(2200)와 인터페이싱 한다. 프로세싱 유닛(2120)은 메모리 컨트롤러(2100)의 데이터 교환을 위한 제반 제어 동작을 수행한다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(2000)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
또한, 메모리 컨트롤러(2100)는 도 3에서 도시된 랜더마이저(110) 및 배열 조정기(130)들 중 적어도 하나를 포함할 수 있다. 그리고 배열 조정기(130)는 RLL 부호기/복호기(131), 인버터(132) 및 라인 부호기/복호기(133)와 같은 기능 및 구성들의 조합에 의해서 구성될 수 있다.
불휘발성 메모리 장치(2200)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다. 이상의 본 발명의 메모리 시스템(2000)은 에러의 발생 확률이 낮은 고신뢰성의 저장 매체로 제공될 수 있다. 특히, 최근 활발히 연구되고 있는 반도체 디스크 장치(Solid State Disk: 이하 SSD)와 같은 메모리 시스템에서 본 발명의 플래시 메모리 장치가 구비될 수 있다. 이 경우, 메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다. 또한, 메모리 컨트롤러(2100)에는 랜덤 연산을 수행하기 위한 구성이 더 포함될 수 있다.
도 15에는 본 발명에 따른 불휘발성 메모리 장치(3120)를 포함한 컴퓨팅 시스템(3000)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(3000)은 시스템 버스(3600)에 전기적으로 연결된 마이크로프로세서(3200), 램(3300), 사용자 인터페이스(3400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(3500) 및 메모리 시스템(3100)을 포함한다. 메모리 시스템(3100)은 도 13 또는 도 14에 도시된 것과 실질적으로 동일하게 구성될 것이다. 본 발명에 따른 컴퓨팅 시스템(3000)이 모바일 장치인 경우, 컴퓨팅 시스템(3000)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(3000)에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(3100)은, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(3100)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
메모리 컨트롤러(3110)는 도 3에서 도시된 랜더마이저(110), ECC 유닛(120) 및 배열 조정기(130)들 중 적어도 하나를 포함할 수 있다. 그리고 배열 조정기(130)는 RLL 부호기/복호기(131), 인버터(132) 및 라인 부호기/복호기(133)와 같은 기능 및 구성들의 조합에 의해서 구성될 수 있다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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 Metric Quad 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), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : 랜더마이저
120 : ECC 유닛
130 : 배열 조정기
131 : RLL 부호기/복호기
132 : 인버터
133 : 라인 부호기/복호기
200: 불휘발성 메모리 장치
310, 320, 330, 340 : 상 변화 메모리 셀
410 : RLL 부호기/복호기
420 : 상 변화 메모리
1100 : 호스트
1200 : SSD
1210 : SSD 컨트롤러
1220 : 버퍼 메모리
1230 : 불휘발성 메모리
2100 : 메모리 컨트롤러
2110 : 에스램
2120 : CPU
2130 : RAM
2140 : ECC 유닛
2150 : 메모리 인터페이스
2200 : 불휘발성 메모리 장치
3100 : 메모리 시스템
3110 : 메모리 컨트롤러
3120 : 플래시 메모리
3200 : CPU
3300 : 램
3400 : 유저 인터페이스
3500 : 모뎀
3600 : 시스템 버스
120 : ECC 유닛
130 : 배열 조정기
131 : RLL 부호기/복호기
132 : 인버터
133 : 라인 부호기/복호기
200: 불휘발성 메모리 장치
310, 320, 330, 340 : 상 변화 메모리 셀
410 : RLL 부호기/복호기
420 : 상 변화 메모리
1100 : 호스트
1200 : SSD
1210 : SSD 컨트롤러
1220 : 버퍼 메모리
1230 : 불휘발성 메모리
2100 : 메모리 컨트롤러
2110 : 에스램
2120 : CPU
2130 : RAM
2140 : ECC 유닛
2150 : 메모리 인터페이스
2200 : 불휘발성 메모리 장치
3100 : 메모리 시스템
3110 : 메모리 컨트롤러
3120 : 플래시 메모리
3200 : CPU
3300 : 램
3400 : 유저 인터페이스
3500 : 모뎀
3600 : 시스템 버스
Claims (10)
- 복수의 메모리 셀들을 포함하는 불휘발성 메모리 장치; 그리고
프로그램 데이터의 배열을 조정하여 상기 복수의 메모리 셀들에 프로그램하는 메모리 컨트롤러를 포함하되,
상기 메모리 컨트롤러는 상기 복수의 메모리 셀들 중 인접한 메모리 셀들 상호 간의 물리적 간섭을 야기하는 특정 데이터 패턴을 상기 프로그램 데이터로부터 제거하는 배열 조정 연산을 수행하는 배열 조정기를 포함하고,
상기 배열 조정 연산에는 런 길이 제한 부호(Run-Length Limited code), 라인 부호(Line code) 그리고 반전 연산(Inverting operation)들 중 적어도 하나의 연산이 포함되며,
상기 배열 조정기는,
상기 프로그램 데이터를 인코딩하는 런 길이 제한 부호기; 그리고
상기 런 길이 제한 부호기의 출력을 라인 부호(Line code)로 인코딩하여 상기 불휘발성 메모리 장치로 제공하는 라인 부호기를 포함하는 데이터 저장 장치. - 삭제
- 삭제
- 제 1 항에 있어서,
상기 배열 조정기는 상기 프로그램 데이터를 인코딩하는 런 길이 제한 부호기를 포함하는 데이터 저장 장치. - 제 4 항에 있어서,
상기 배열 조정기는 상기 런 길이 제한 부호기의 출력을 반전시켜 상기 불휘발성 메모리 장치로 제공하는 인버터를 포함하는 데이터 저장 장치. - 제 5 항에 있어서,
상기 런 길이 제한 부호기는 상기 프로그램 데이터를 2개의 '1' 사이에 2개 이상의 '0'이 삽입되는 (d=2, k=∞) 코딩 조건에 따라 부호화하는 데이터 저장 장치. - 삭제
- 제 1 항에 있어서,
상기 메모리 컨트롤러는 호스트로부터 입력되는 데이터를 에러 정정 부호 연산에 따라 처리하여 상기 프로그램 데이터로 제공하는 에러 정정 부호 유닛을 포함하는 데이터 저장 장치. - 데이터 저장 장치의 프로그램 방법에 있어서:
프로그램 데이터를 에러 정정 부호 연산에 따라 부호화는 단계;
런 길이 제한 부호 연산에 따라, 상기 에러 정정 부호 연산에 따라 부호화된 데이터의 배열을 조정하는 단계; 그리고
상기 배열이 조정된 데이터의 비트 값을 반전시키는 단계를 포함하는 프로그램 방법. - 데이터 저장 장치의 프로그램 방법에 있어서:
프로그램 데이터를 에러 정정 부호 연산에 따라 부호화는 단계;
런 길이 제한 부호 연산에 따라, 상기 에러 정정 부호 연산에 따라 부호화된 데이터의 배열을 조정하는 단계; 그리고
상기 배열이 조정된 데이터를 라인 부호(Line code)로 인코딩하는 단계를 포함하는 프로그램 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100043613A KR101678407B1 (ko) | 2010-05-10 | 2010-05-10 | 데이터 저장 장치 및 그것의 프로그램 방법 |
US13/103,460 US8782490B2 (en) | 2010-05-10 | 2011-05-09 | Data storage device and program method that modifies arrangement of program data to eliminate interfering data patterns |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100043613A KR101678407B1 (ko) | 2010-05-10 | 2010-05-10 | 데이터 저장 장치 및 그것의 프로그램 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110124045A KR20110124045A (ko) | 2011-11-16 |
KR101678407B1 true KR101678407B1 (ko) | 2016-11-23 |
Family
ID=44902778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100043613A KR101678407B1 (ko) | 2010-05-10 | 2010-05-10 | 데이터 저장 장치 및 그것의 프로그램 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8782490B2 (ko) |
KR (1) | KR101678407B1 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9239754B2 (en) * | 2012-08-04 | 2016-01-19 | Seagate Technology Llc | Single read based soft-decision decoding of non-volatile memory |
KR102049281B1 (ko) | 2012-10-23 | 2019-11-27 | 삼성전자주식회사 | 불휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템, 그리고 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법 |
US20140115234A1 (en) * | 2012-10-24 | 2014-04-24 | Samsung Electronics Co., Ltd. | Memory system comprising nonvolatile memory device and related method of operation |
KR20140114516A (ko) | 2013-03-15 | 2014-09-29 | 삼성전자주식회사 | 메모리 컨트롤러 및 이의 동작 방법 |
KR102204394B1 (ko) * | 2013-10-14 | 2021-01-19 | 삼성전자주식회사 | 메모리 시스템에서의 코딩 방법 및 디코딩 방법 |
CN103761988B (zh) * | 2013-12-27 | 2018-01-16 | 华为技术有限公司 | 固态硬盘及数据移动方法 |
KR20150122825A (ko) * | 2014-04-23 | 2015-11-03 | 에스케이하이닉스 주식회사 | 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치 |
JP2016062463A (ja) * | 2014-09-19 | 2016-04-25 | 株式会社東芝 | メモリシステム、誤り訂正装置、および誤り訂正方法 |
US9865338B2 (en) * | 2015-09-02 | 2018-01-09 | Toshiba Memory Corporation | Memory system and method of controlling nonvolatile memory by converting write data written to a page |
TWI692771B (zh) * | 2017-11-14 | 2020-05-01 | 慧榮科技股份有限公司 | 用來控制一記憶裝置的運作之方法、記憶裝置及其控制器以及電子裝置 |
KR20200142219A (ko) | 2019-06-12 | 2020-12-22 | 삼성전자주식회사 | 전자 장치 및 그의 저장 공간 이용 방법 |
CN113160870A (zh) * | 2021-03-25 | 2021-07-23 | 普冉半导体(上海)股份有限公司 | 非易失存储器编程方法 |
US20230176767A1 (en) * | 2021-12-03 | 2023-06-08 | Hewlett-Packard Development Company, L.P. | Interfacing with memory devices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090210772A1 (en) | 2008-02-15 | 2009-08-20 | Mitsuhiro Noguchi | Data memory system |
US20130117620A1 (en) | 2011-11-04 | 2013-05-09 | Sang-Hyun Joo | Memory system and operating method thereof |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4993029A (en) * | 1989-03-13 | 1991-02-12 | International Business Machines Corporation | Method and apparatus for randomizing data in a direct access storage device |
JP3165101B2 (ja) | 1998-03-05 | 2001-05-14 | 日本電気アイシーマイコンシステム株式会社 | 多値式半導体メモリ装置およびその不良救済方法 |
JP2004531016A (ja) * | 2001-06-19 | 2004-10-07 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | デジタル情報信号を再生する装置 |
JP2003223765A (ja) | 2002-01-25 | 2003-08-08 | Sharp Corp | 復調装置 |
US20070083491A1 (en) * | 2004-05-27 | 2007-04-12 | Silverbrook Research Pty Ltd | Storage of key in non-volatile memory |
US8219886B1 (en) * | 2006-01-20 | 2012-07-10 | Marvell International Ltd. | High density multi-level memory |
WO2007104096A1 (en) * | 2006-03-13 | 2007-09-20 | Dtr Limited | Method and system for digital content protection |
US7971130B2 (en) * | 2006-03-31 | 2011-06-28 | Marvell International Ltd. | Multi-level signal memory with LDPC and interleaving |
US8028216B1 (en) * | 2006-06-02 | 2011-09-27 | Marvell International Ltd. | Embedded parity coding for data storage |
JP2008004195A (ja) | 2006-06-23 | 2008-01-10 | Toshiba Corp | ラン長制限装置及びラン長制限方法 |
KR100874920B1 (ko) | 2007-03-15 | 2008-12-19 | 삼성전자주식회사 | 셀 사이의 커플링에 의한 영향을 감소시킨 플래시 메모리장치 및 그 구동방법 |
US8176386B1 (en) * | 2007-04-10 | 2012-05-08 | Marvell International Ltd. | Systems and methods for processing streaming data |
US8161347B1 (en) * | 2007-04-12 | 2012-04-17 | Link—A—Media Devices Corporation | Interleaving parity bits into user bits to guarantee run-length constraint |
US8248848B1 (en) * | 2007-10-01 | 2012-08-21 | Marvell International Ltd. | System and methods for multi-level nonvolatile memory read, program and erase |
KR101436506B1 (ko) | 2008-07-23 | 2014-09-02 | 삼성전자주식회사 | 메모리 장치 및 메모리 데이터 프로그래밍 방법 |
WO2010039869A1 (en) * | 2008-09-30 | 2010-04-08 | Lsi Corporation | Methods and apparatus for soft data generation for memory devices using reference cells |
US8595582B2 (en) * | 2009-10-01 | 2013-11-26 | Stmicroelectronics, Inc. | High-rate reverse-order run-length-limited code |
-
2010
- 2010-05-10 KR KR1020100043613A patent/KR101678407B1/ko active IP Right Grant
-
2011
- 2011-05-09 US US13/103,460 patent/US8782490B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090210772A1 (en) | 2008-02-15 | 2009-08-20 | Mitsuhiro Noguchi | Data memory system |
US20130117620A1 (en) | 2011-11-04 | 2013-05-09 | Sang-Hyun Joo | Memory system and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
US8782490B2 (en) | 2014-07-15 |
US20110276857A1 (en) | 2011-11-10 |
KR20110124045A (ko) | 2011-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101678407B1 (ko) | 데이터 저장 장치 및 그것의 프로그램 방법 | |
KR101519626B1 (ko) | 반도체 메모리 장치 및 그것의 데이터 처리 방법 | |
US8004891B2 (en) | Memory device and method of programming thereof | |
US10048879B2 (en) | Nonvolatile memory recovery after power failure during write operations or erase operations | |
US10404279B2 (en) | Low BER hard-decision LDPC decoder | |
US9013920B2 (en) | Systems and methods of write precompensation to extend life of a solid-state memory | |
US8200607B2 (en) | Memory devices and data decision methods | |
TWI483255B (zh) | 具改善讀取可靠度之包含多位元記憶胞的快閃記憶體裝置 | |
US9454420B1 (en) | Method and system of reading threshold voltage equalization | |
KR101602316B1 (ko) | 반도체 메모리 장치 및 그것의 데이터 처리 방법 | |
KR101678404B1 (ko) | 사전 확률 정보를 사용하는 메모리 시스템 및 그것의 데이터 처리 방법 | |
KR101386489B1 (ko) | 메모리 장치 및 멀티 비트 프로그래밍 방법 | |
WO2014085166A2 (en) | Storage and retrieval of shaped data | |
US20170263331A1 (en) | Memory system | |
KR20080064299A (ko) | 상이한 에러 제어 스킴을 갖는 하이브리드 플래시 메모리장치 및 그것을 포함한 메모리 시스템 | |
CN115248744B (zh) | 非二进制存储器单元的读取阈值调整技术 | |
CN115248743B (zh) | 存储器的读取阈值调整技术 | |
WO2015106263A1 (en) | Interleaving codewords over multiple flash planes | |
TW201732833A (zh) | 錯誤率降低 | |
CN111597071A (zh) | 数据存储设备中的纠错 | |
KR101661048B1 (ko) | 메모리 디바이스들에 대한 에러 보호 |
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: 20191031 Year of fee payment: 4 |