KR20140114516A - 메모리 컨트롤러 및 이의 동작 방법 - Google Patents
메모리 컨트롤러 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20140114516A KR20140114516A KR1020130028056A KR20130028056A KR20140114516A KR 20140114516 A KR20140114516 A KR 20140114516A KR 1020130028056 A KR1020130028056 A KR 1020130028056A KR 20130028056 A KR20130028056 A KR 20130028056A KR 20140114516 A KR20140114516 A KR 20140114516A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- alphabet
- input stream
- alphabets
- state
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
- G06F40/129—Handling non-Latin characters, e.g. kana-to-kanji conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
-
- 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/1072—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 in multilevel memories
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Telephone Function (AREA)
Abstract
본 발명의 실시예에 따른 메모리 컨트롤러의 동작 방법은 복수의 알파벳들을 포함하는 입력 스트림에 따른 데이터 상태를 판단하는 단계, 상기 데이터 상태가 미리 정해진 복수의 데이터 상태들 중 제1 상태인 경우 상기 입력 스트림 중 변환 사이즈에 해당하는 크기를 가지는 일부를 더 낮은 진수로 변환하는 단계, 상기 변환된 일부 중 하나의 알파벳을 상기 입력 스트림에 삽입하는 단계 및 상기 데이터 상태가 상기 미리 정해진 복수의 데이터 상태들 중 제2 상태인 경우 상기 입력 스트림에 포함된 알파벳을 그대로 출력하는 단계를 포함한다. 본 발명의 실시예에 따른 메모리 컨트롤러 및 이의 동작 방법에 의하면, 데이터 손실을 유발할 수 있는 금지 패턴을 회피할 수 있어 데이터 신뢰성을 높일 수 있는 효과가 있다.
Description
본 발명의 개념에 따른 실시예는 메모리 컨트롤러 및 이의 동작 방법에 관한 것으로, 보다 상세하게는 데이터 손실을 줄일 수 있는 메모리 컨트롤러 및 이의 동작 방법에 관한 것이다.
메모리 장치는 각각이 데이터를 저장할 수 있는 복수의 메모리 셀들을 포함한다. 메모리 장치가 포함된 시스템이 정상적으로 동작하기 위해서는 데이터의 에러(error)를 최소화하여야 한다. 메모리 장치는 데이터의 에러를 정정하기 위한 별도의 장치를 구비할 수 있다.
상기 복수의 메모리 셀들은 매우 좁은 면적에 밀집하여 형성되므로 데이터가 저장되는 상기 복수의 메모리 셀들 간의 간섭으로 데이터의 손실이 발생할 수 있다. 따라서, 이러한 데이터의 손실을 최소화하기 위한 방안이 요구된다.
본 발명이 이루고자 하는 기술적 과제는 금지 패턴을 회피하여 메모리 장치에 포함된 복수의 메모리 셀들에 저장되는 데이터의 손실을 최소화하는 메모리 컨트롤러 및 이의 동작 방법을 제공하는데 있다.
본 발명의 실시예에 따른 메모리 컨트롤러의 동작 방법은 복수의 알파벳들을 포함하는 입력 스트림에 따른 데이터 상태를 판단하는 단계, 상기 데이터 상태가 미리 정해진 복수의 데이터 상태들 중 제1 상태인 경우 상기 입력 스트림 중 변환 사이즈에 해당하는 크기를 가지는 일부를 더 낮은 진수로 변환하는 단계, 상기 변환된 일부 중 하나의 알파벳을 상기 입력 스트림에 삽입하는 단계 및 상기 데이터 상태가 상기 미리 정해진 복수의 데이터 상태들 중 제2 상태인 경우 상기 입력 스트림에 포함된 알파벳을 그대로 출력하는 단계를 포함한다.
실시예에 따라 상기 입력 스트림에 따른 데이터 상태에 따라 상기 변환된 일부 중 하나의 알파벳이 출력될 수 있는지 여부를 판단하는 단계 및 상기 판단 결과에 따라 상기 변환된 일부 중 하나의 알파벳을 다른 알파벳으로 맵핑하는 단계를 더 포함한다.
실시예에 따라 상기 변환된 일부를 제1 서브 버퍼에 저장하는 단계를 더 포함하며, 상기 변환하는 단계는 상기 변환된 일부가 상기 제1 서브 버퍼에 존재하지 않는 경우 상기 입력 스트림 중 일부를 더 낮은 진수로 변환한다.
실시예에 따라 상기 입력 스트림의 수신이 완료된 경우 상기 제1 서브 버퍼에 남아 있는 상기 변환된 일부에 포함된 알파벳들을 순차적으로 상기 입력 스트림에 삽입하는 단계를 더 포함한다.
실시예에 따라 복수의 알파벳들을 포함하는 리드 데이터에 따른 데이터 상태를 판단하는 단계, 상기 리드 데이터 중 일부를 더 높은 진수로 복원하는 단계 및 상기 복원된 일부를 상기 리드 데이터에 삽입하는 단계를 더 포함한다.
실시예에 따라 상기 리드 데이터에 따른 데이터 상태에 따라 상기 리드 데이터에 포함된 알파벳을 다른 알파벳으로 맵핑하는 단계를 더 포함한다.
실시예에 따라 상기 복원된 일부는 상기 변환 사이즈에 해당하는 크기를 가진다.
실시예에 따라 상기 데이터 상태는 상기 복수의 알파벳들 중 적어도 하나의 알파벳을 출력할 수 없는 제1 상태 및 상기 복수의 알파벳들을 모두 출력할 수 있는 제2 상태를 포함하고, 상기 변환 사이즈는 상기 입력 스트림의 크기에 따라 결정된다.
본 발명의 실시예에 따른 메모리 컨트롤러는 복수의 알파벳들을 포함하는 입력 스트림에 따른 데이터 상태가 미리 정해진 복수의 데이터 상태들 중 제1 상태인 경우 상기 입력 스트림 중 일부를 더 낮은 진수로 변환하여 상기 입력 스트림에 삽입하여 패턴 변환기 및 복수의 알파벳들을 포함하는 리드 데이터에 따른 데이터 상태가 상기 제1 상태인 경우 상기 리드 데이터 중 일부를 더 높은 진수로 변환하여 상기 리드 데이터에 삽입하는 패턴 역변환기를 포함하며, 상기 리드 데이터는 상기 입력 스트림을 메모리 장치에 라이트한 후 리드되는 데이터이고, 상기 제1 상태는 상기 복수의 알파벳들 중 적어도 하나의 알파벳을 출력할 수 없는 데이터 상태이다.
실시예에 따라 상기 패턴 변환기는 상기 입력 스트림 중 일부를 더 낮은 진수로 변환하는 제1 베이스 변환기, 상기 변환된 일부를 저장하는 제1 서브 버퍼, 상기 변환된 일부에 포함된 알파벳이 상기 제1 상태에서 출력될 수 없는 경우 상기 알파벳을 다른 알파벳으로 맵핑하는 제1 맵퍼, 상기 입력 스트림과 상기 맵핑이 완료된 알파벳을 저장하는 제1 메인 버퍼 및 상기 입력 스트림과 상기 맵핑이 완료된 알파벳을 기초로 상기 입력 스트림에 따른 데이터 상태를 판단하여 상기 제1 메인 버퍼와 상기 제1 맵퍼를 제어하는 제1 FSM을 포함한다.
실시예에 따라 상기 입력 스트림 중 일부는 변환 사이즈에 해당하는 크기를 가진다.
실시예에 따라 상기 패턴 역변환기는 상기 리드 데이터에 따른 데이터 상태에 따라 상기 리드 데이터에 포함된 알파벳을 다른 알파벳으로 맵핑하는 제2 맵퍼, 상기 맵핑이 완료된 알파벳을 저장하는 제2 서브 버퍼, 상기 맵핑이 완료된 알파벳을 더 높은 진수로 복원하는 제2 베이스 변환기, 상기 리드 데이터와 상기 복원된 알파벳을 저장하는 제2 메인 버퍼 및 상기 리드 데이터를 기초로 상기 리드 데이터에 따른 데이터 상태를 판단하여 상기 제2 메인 버퍼와 상기 제2 맵퍼를 제어하는 제2 FSM을 포함한다.
실시예에 따라 상기 복원된 알파벳들은 상기 변환 사이즈에 해당하는 크기를 가진다.
실시예에 따라 상기 변환 사이즈는 상기 입력 스트림의 크기에 따라 결정된다.
실시예에 따른 메모리 시스템은 상기 메모리 컨트롤러 및 상기 메모리 컨트롤러로부터 상기 입력 스트림을 수신하여 라이트하고, 상기 메모리 컨트롤러의 제어에 따라 상기 라이트된 입력 스트림을 리드하여 리드 데이터로서 출력하는 상기 메모리 장치를 포함한다.
본 발명의 실시예에 따른 메모리 컨트롤러 및 이의 동작 방법에 의하면, 데이터 손실을 유발할 수 있는 금지 패턴을 회피할 수 있어 데이터 신뢰성을 높일 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 전자 시스템을 나타낸 블록도이다.
도 2는 도 1에 도시된 패턴 변환기를 상세히 나타낸 블록도이다.
도 3은 도 1에 도시된 패턴 역변환기를 상세히 나타낸 블록도이다.
도 4는 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 일 실시예를 나타내는 도면이다.
도 5는 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 다른 실시예를 나타내는 도면이다.
도 6은 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 또 다른 실시예를 나타내는 도면이다.
도 7은 도 4에 도시된 데이터 상태 그래프의 일 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다.
도 8은 도 5에 도시된 데이터 상태 그래프의 다른 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다.
도 9는 도 6에 도시된 데이터 상태 그래프의 또 다른 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다.
도 10a 내지 도 10c는 도 6에 도시된 데이터 상태 그래프의 또 다른 실시예에 따라 데이터 상태를 결정하는 경우 패턴 변환기의 동작을 설명하기 위한 도면이다.
도 11은 도 2에 도시된 패턴 변환기의 동작을 설명하기 위한 흐름도이다.
도 12는 도 3에 도시된 패턴 역변환기의 동작을 설명하기 위한 흐름도이다.
도 13은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 일 실시 예를 나타낸다.
도 14는 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 다른 실시 예를 나타낸다.
도 15는 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 16은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 17은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 18은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 2는 도 1에 도시된 패턴 변환기를 상세히 나타낸 블록도이다.
도 3은 도 1에 도시된 패턴 역변환기를 상세히 나타낸 블록도이다.
도 4는 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 일 실시예를 나타내는 도면이다.
도 5는 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 다른 실시예를 나타내는 도면이다.
도 6은 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 또 다른 실시예를 나타내는 도면이다.
도 7은 도 4에 도시된 데이터 상태 그래프의 일 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다.
도 8은 도 5에 도시된 데이터 상태 그래프의 다른 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다.
도 9는 도 6에 도시된 데이터 상태 그래프의 또 다른 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다.
도 10a 내지 도 10c는 도 6에 도시된 데이터 상태 그래프의 또 다른 실시예에 따라 데이터 상태를 결정하는 경우 패턴 변환기의 동작을 설명하기 위한 도면이다.
도 11은 도 2에 도시된 패턴 변환기의 동작을 설명하기 위한 흐름도이다.
도 12는 도 3에 도시된 패턴 역변환기의 동작을 설명하기 위한 흐름도이다.
도 13은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 일 실시 예를 나타낸다.
도 14는 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 다른 실시 예를 나타낸다.
도 15는 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 16은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 17은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 18은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명에 따른 실시예는 다양한 변경을 가할 수 있고 여러가지 형태를 가질 수 있으므로 특정실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시예에 따른 전자 시스템을 나타낸 블록도이다.
도 1을 참조하면, 전자 시스템(10)은 전자 장치 또는 휴대용 장치로 구현될 수 있다. 전자 시스템(10)은 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
전자 시스템(10)은 호스트(host, 50) 및 메모리 시스템(memory system, 100)을 포함할 수 있다. 호스트(50)는 전자 시스템(10)의 동작을 위한 프로세서(processor), 디스플레이(display) 및 입력 장치(input device) 등을 포함할 수 있다. 호스트(50)는 데이터를 메모리 시스템(100)과 송수신할 수 있으며, 필요에 따라 데이터를 메모리 시스템(100)에 저장하고 저장된 데이터를 불러 올 수 있다.
메모리 시스템(100)은 호스트(50)와 데이터를 스트림(stream) 형태로 주고 받을 수 있다. 즉, 메모리 시스템(100)은 입력 스트림(IS)을 호스트(50)로부터 수신하고, 출력 스트림(OS)을 호스트로 전송할 수 있다.
메모리 시스템(100)은 메모리 장치(memory device, 150) 및 메모리 컨트롤러(memory controller, 200)를 포함할 수 있다.
메모리 장치(150)는 메모리 셀 어레이(memory cell array, 미도시), 리드/라이트 회로(read/write circuit, 미도시) 및 컨트롤 로직(control logic, 미도시)을 포함할 수 있다.
메모리 셀 어레이(미도시)는 각각이 데이터를 저장할 수 있는 복수의 메모리 셀들을 포함할 수 있다. 상기 복수의 메모리 셀들은 각각이 전압 레벨 차이에 의해 데이터를 저장할 수 있으며, 예컨대 2 진수, 3 진수 또는 4 진수의 데이터를 저장할 수 있다. 즉, 상기 메모리 셀들은 멀티-레벨 셀(Multi-Level Cell, MLC)들에 해당할 수 있다.
상기 메모리 셀들은 전원 공급 여부에 관계없이 데이터를 저장할 수 있는 비휘발성 메모리(non-volatile memory) 또는 전원이 공급되는 동안 데이터를 저장할 수 있는 휘발성 메모리(volatile memory)로 구현될 수 있으며, 물리적으로 레이져(laser)를 사용하여 퓨즈-컷팅(fuse-cutting)하는 방법이나 전기적으로 프로그래밍(programming)하여 저장시키는 방법이 사용될 수 있다.
예컨대, 상기 메모리 셀들은 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 또는 저항 메모리(Resistive RAM: RRAM 또는 ReRAM)일 수 있다. 이때, 메모리 셀 어레이(미도시)는 2차원으로 구현될 수 있고, 3차원으로도 구현될 수 있다.
리드/라이트 회로(미도시)는 메모리 컨트롤러(200)로부터 수신된 어드레스 신호 및 커맨드에 따라 메모리 셀 어레이(미도시)의 해당 주소에 데이터를 리드 또는 라이트할 수 있다. 컨트롤 로직(미도시)은 메모리 장치(150)의 전반적인 동작을 제어한다.
메모리 컨트롤러(200)는 메모리 장치(100)의 동작을 제어하기 위한 커맨드와 어드레스 신호를 생성할 수 있다. 메모리 컨트롤러(200)는 입력 스트림(IS)을 변환하여 라이트 데이터(WD)로서 출력하거나, 리드 데이터(RD)를 변환하여 출력 스트림(OS)으로서 출력할 수 있다.
메모리 컨트롤러(200)는 패턴 변환기(pattern transformer, 210), 패턴 역변환기(pattern de-transformer, 230), ECC 인코더(Error Correction Code encoder, 260) 및 ECC 디코더(Error Correction Code decoder, 270)를 포함할 수 있다.
패턴 변환기(210)는 호스트(50)로부터 입력 스트림(IS)을 수신하여 입력 스트림(IS)에 존재하는 금지 패턴(forbidden pattern)을 회피(avoid)하기 위해 입력 스트림(IS)를 변환하여 출력할 수 있다.
예컨대, 메모리 셀 어레이(미도시)에 포함된 복수의 메모리 셀들 각각이 멀티-레벨 셀로 구현되는 경우 각 메모리 셀은 복수의 레벨들에 대응하는 복수의 문턱 전압 분포 상태들을 가질 수 있다. 각각의 문턱 전압 분포 상태의 전압 분포는 다양한 원인들로 인해 원하는 윈도우보다 더 넓게 형성된다. 예컨대, 각각의 문턱 전압 분포는 프로그래밍시 인접한 메모리 셀들 간의 커플링(예컨대, F-poly 커플링)으로 인해 넓어질 수 있다. 이러한 커플링 현상으로 인해 메모리 셀의 리드시에 실패할 수 있다. 특히, 리드 데이터(RD)에 포함된 특정 데이터 패턴 즉, 금지 패턴(예컨대, P3-E-P3)이 인접하는 메모리 셀들에 저장되는 경우 커플링 현상이 심해질 수 있다.
패턴 역변환기(230)는 ECC 디코더(270)로부터 수신하는 디코딩된 리드 데이터(RD)에 대해 금지 패턴을 복원하여 출력 스트림(OS)을 출력할 수 있다.
ECC 인코더(260)는 패턴 변환기(210)로부터 수신하는 변환된 입력 스트림(IS)을 인코딩하여 라이트 데이터(WD)를 출력할 수 있다.
ECC 디코더(270)는 메모리 장치(150)로부터 수신하는 리드 데이터(RD)를 디코딩하여 출력할 수 있다.
도 2는 도 1에 도시된 패턴 변환기를 상세히 나타낸 블록도이다.
도 1 및 도 2를 참조하면, 패턴 변환기는 제1 메인 버퍼(first main buffer, 212), 제1 FSM(first Finite State Machine;FSM, 214), 제1 서브 버퍼(first sub buffer, 216), 제1 베이스 변환기(first base converter, 218) 및 제1 맵퍼(first mapper, 220)를 포함할 수 있다.
제1 메인 버퍼(212)는 호스트(50)로부터 수신하는 입력 스트림(IS)을 임시 저장할 수 있다. 제1 메인 버퍼(212)는 제1 서브 버퍼(216)가 비어(empty) 있는 경우 제1 FSM(214)의 제어에 따라 입력 스트림(IS)에 포함된 복수의 알파벳(alphabet)들 중 일부를 제1 서브 버퍼(216)로 전송할 수 있다.
상기 일부는 변환 사이즈(converting size)에 해당하는 크기를 가질 수 있다. 예컨대, 변환 사이즈가 10인 경우 상기 일부는 10 개의 알파벳들로 구성될 수 있다. 상기 변환 사이즈를 결정하는 방법은 도 6을 참조하여 후술하기로 한다.
제1 메인 버퍼(212)는 제1 FSM(214)의 제어에 따라 제1 맵퍼(220)로부터 맵핑이 완료된 적어도 하나의 알파벳을 수신하여 상기 알파벳을 입력 스트림(IS)에 삽입할 수 있다. 또한, 제1 메인 버퍼(212)는 호스트(50)로부터 입력 스트림(IS)을 모두 수신한 경우 제1 FSM(214)의 제어에 따라 제1 서브 버퍼(216)에 남아 있는 베이스 변환된 적어도 하나의 알파벳을 제1 맵퍼(220)를 통해 수신하여 상기 적어도 하나의 알파벳을 입력 스트림(IS)의 말미에 삽입할 수 있다.
제1 메인 버퍼(212)는 제1 FSM(214)의 제어에 따라 임시 저장된 입력 스트림(IS)을 ECC 인코더(260)로 전송할 수 있다.
제1 FSM(214)는 제1 메인 버퍼(212)에 임시 저장되는 입력 스트림(IS) 또는 맵핑이 완료된 적어도 하나의 알파벳에 따라 데이터 상태(예컨대, S1 내지 S4)를 결정할 수 있다. 제1 FSM(214)은 상기 결정된 데이터 상태에 따라 제1 메인 버퍼(212)와 제1 맵퍼(220)를 제어할 수 있다. 제1 FSM(214)에 의한 데이터 상태의 결정 및 제어 동작은 도 4 내지 도 10c를 참고하여 상세히 설명하기로 한다.
제1 서브 버퍼(216)는 제1 메인 버퍼(212)로부터 수신한 입력 스트림(IS)에 포함된 복수의 알파벳들 중 일부를 임시 저장하였다가 제1 베이스 변환기(218)로 전송할 수 있다. 또한, 제1 서브 버퍼(216)는 제1 베이스 변환기(218)로부터 수신한 베이스 변환된 알파벳들을 임시 저장하였다가 제1 맵퍼(220)로 전송할 수 있다.
제1 베이스 변환기(218)는 입력 스트림(IS)에 포함된 복수의 알파벳들 중 일부를 수신하여 동일한 값의 더 낮은 진수의 알파벳들로 변환할 수 있다. 예컨대, 제1 베이스 변환기(218)는 4 진수의 알파벳들인 "3000" 을 수신하여 3 진수의 알파벳들인 "21010" 으로 변환할 수 있다. 제1 베이스 변환기(218)는 베이스 변환된 알파벳들을 제1 서브 버퍼(216)로 전송할 수 있다.
제1 맵퍼(220)는 제1 FSM(214)의 제어에 따라 제1 서브 버퍼(212)로부터 수신한 베이스 변환된 알파벳이 현재 데이터 상태에서 출력될 수 없는 경우 상기 알파벳을 다른 알파벳으로 맵핑(mapping)할 수 있다. 제1 맵퍼(220)는 제1 FSM(214)의 제어에 따라 제1 서브 버퍼(212)로부터 수신한 베이스 변환된 알파벳이 현재 데이터 상태에서 출력될 수 있는 경우 상기 알파벳을 동일한 알파벳으로 맵핑할 수 있다. 예컨대, 제1 맵퍼(220)는 베이스 변환된 알파벳인 2를 동일한 알파벳인 2로 맵핑하거나, 1을 0으로 맵핑할 수 있다. 제1 맵퍼(220)는 맵핑이 완료된 알파벳을 제1 메인 버퍼(212)로 전송할 수 있다.
도 3은 도 1에 도시된 패턴 역변환기를 상세히 나타낸 블록도이다.
도 1 내지 도 3을 참조하면, 패턴 역변환기(230)는 제2 메인 버퍼(232), 제2 FSM(234), 제2 맵퍼(236), 제2 서브 버퍼(238) 및 제2 베이스 변환기(240)를 포함할 수 있다.
제2 메인 버퍼(232)는 ECC 디코더(270)로부터 수신하는 디코딩된 리드 데이터(RD)를 임시 저장할 수 있다. 제2 메인 버퍼(232)는 제2 FSM(234)의 제어에 따라 상기 디코딩된 리드 데이터(RD)에 포함된 적어도 하나의 알파벳을 제2 맵퍼(232)로 전송할 수 있다.
제2 메인 버퍼(232)는 제2 서브 버퍼(238)가 비어 있는 경우 상기 적어도 하나의 알파벳을 제2 맵퍼(232)로 전송함과 동시에 제2 FSM(234)의 제어에 따라 변환 사이즈에 해당하는 크기만큼 비워 놓고, 순차적으로 전송되는 상기 ECC 디코딩된 리드 데이터(RD)를 임시 저장할 수 있다. 제2 메인 버퍼(232)는 제2 FSM(234)의 제어에 따라 제2 서브 버퍼(238)로부터 베이스 복원된 알파벳들을 수신하여 상기 베이스 복원된 알파벳들을 상기 비워진 주소에 삽입할 수 있다. 제2 메인 버퍼(232)는 복원된 리드 데이터(RD)를 출력 스트림(OS)으로서 호스트(50)로 전송할 수 있다.
제2 FSM(234)는 제2 메인 버퍼(232)에 임시 저장되는 ECC 디코딩된 리드 데이터(RD)에 따라 데이터 상태(예컨대, S1 내지 S4)를 결정할 수 있다. 제2 FSM(234)는 상기 결정된 데이터 상태에 따라 제2 메인 버퍼(232)와 제2 맵퍼(236)를 제어할 수 있다. 제2 FSM(234)에 의한 데이터 상태의 결정 및 제어 동작은 도 4 내지 도 10c를 참고하여 상세히 설명하기로 한다.
제2 맵퍼(236)는 제2 FSM(234)의 제어에 따라 제2 메인 버퍼(232)로부터 수신한 적어도 하나의 알파벳을 다른 알파벳으로 맵핑할 수 있다. 예컨대, 제2 맵퍼(236)는 상기 적어도 하나의 알파벳인 1을 다른 알파벳인 2로 맵핑하고, 0을 1으로 맵핑할 수 있다.
제2 맵퍼(236)는 동일한 데이터 상태에서 도 2에 도시된 제1 맵퍼(240)와 반대의 맵핑을 수행할 수 있다. 예컨대, 도 6의 S4에서 제1 맵퍼(220)가 2를 3으로 맵핑하는 경우 제2 맵퍼(236)는 3을 2로 맵핑할 수 있다. 이를 위해 제1 FSM(214)과 제2 FSM(234)은 데이터 상태에 따른 맵핑 정보(mapping information)을 공유할 수 있다. 제2 맵퍼(236)는 맵핑이 완료된 상기 적어도 하나의 알파벳을 제2 서브 버퍼(238)로 전송할 수 있다.
제2 서브 버퍼(238)는 제2 맵퍼(236)로부터 수신한 상기 맵핑된 적어도 하나의 알파벳을 임시 저장하였다가 제2 베이스 변환기(240)로 전송할 수 있다. 또한, 제2 서브 버퍼(238)는 제2 베이스 변환기(240)로부터 수신한 베이스 복원된 알파벳들을 임시 저장하였다가 제2 메인 버퍼(232)로 전송할 수 있다.
제2 베이스 변환기(240)는 상기 맵핑된 적어도 하나의 알파벳을 수신하여 변환 사이즈에 해당하는 알파벳들을 변환한 사이즈(예컨대, 변환 사이즈 19에 해당하는 4 진수의 알파벳 19 개를 변환한 3 진수의 알파벳 24 개)에 해당하는 알파벳들을 모두 수신한 경우 상기 알파벳들을 동일한 값의 더 높은 진수의 알파벳들로 복원할 수 있다. 예컨대, 제2 베이스 변환기(240)는 3 진수의 알파벳들인 "21010"을 수신하여 4 진수의 알파벳들인 "3000"으로 복원할 수 있다. 제2 베이스 변환기(240)는 베이스 복원된 알파벳들을 제2 서브 버퍼(238)로 전송할 수 있다.
도 4는 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 일 실시예를 나타내는 도면이다. 도 5는 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 다른 실시예를 나타내는 도면이다. 도 6은 도 2와 도 3에 각각 도시된 제1 FSM과 제2 FSM이 데이터 상태를 결정하는 데이터 상태 그래프의 또 다른 실시예를 나타내는 도면이다.
도 4 내지 도 6을 참조하면, 제1 FSM(214)과 제2 FSM(234)은 각각 데이터 상태를 결정할 수 있다. 도 4 내지 도 6에서는 패턴 변환기(210)와 패턴 역변환기(230)는 각각 4 진수의 데이터를 수신하여 처리한다고 가정한다. 또한, 도 4 내지 도 6에서는 설명의 편의상 제1 FSM(214)의 데이터 상태에 대한 동작만을 예로 들어 설명하기로 한다.
도 4에서는 3-0-3의 금지 패턴을 회피하기 위한 데이터 상태 그래프가 나타나 있다. S1 내지 S3은 각각 데이터 상태를 의미하며, 각 데이터 상태(S1 내지 S3)는 제1 메인 버퍼(212)에 임시 저장되는 입력 스트림(IS) 또는 맵핑이 완료된 알파벳들에 포함된 알파벳(0 내지 3)에 의해 다른 데이터 상태로 이동할 수 있다.
데이터 상태가 S1인 상태에서 제1 메인 버퍼(212)에 저장되는 알파벳이 0,1,2인 경우 다음 상태는 S1이 되고, 3인 경우 다음 상태는 S2가 된다. 데이터 상태가 S2인 상태에서 제1 메인 버퍼(212)에 저장되는 알파벳이 1,2인 경우 다음 상태는 S1이 되고, 3인 경우 다음 상태는 S2가 되고, 0인 경우 다음 상태는 S3이 된다. 데이터 상태가 S3인 상태에서 제1 메인 버퍼(212)에 저장되는 알파벳이 0,1,2인 경우 다음 상태는 S1이 된다.
즉, 데이터 상태가 S1 또는 S2일 때와 달리 S3일 때에는 제1 메인 버퍼(212)에 저장되는 알파벳이 3이 될 수 없으며, 이는 금지 패턴인 3-0-3을 피하기 위함이다.
달리 표현하면, S3는 복수의 알파벳들을 포함하는 입력 스트림(IS) 또는 맵핑이 완료된 알파벳들에 포함된 알파벳에 따라 상기 복수의 알파벳들(0,1,2,3) 중 적어도 하나의 알파벳(3)을 출력할 수 없는 제1 상태라고 정의할 수 있다. 또한, S1과 S2는 복수의 알파벳들을 포함하는 입력 스트림(IS) 또는 맵핑이 완료된 알파벳들에 포함된 알파벳에 따라 상기 복수의 알파벳들(0,1,2,3) 중 모든 알파벳(0,1,2,3)을 출력할 수 있는 제2 상태라고 정의할 수 있다.
제1 FSM(214)은 입력 스트림(IS)에 포함된 알파벳에 따라 현재 데이터 상태가 제1 상태로 변경되는 경우, 제1 베이스 변환기(218)가 입력 스트림(IS) 중 변환 사이즈에 해당하는 일부를 더 낮은 진수로 변환하여 입력 스트림(IS)에 삽입되도록 제어할 수 있다. 만일, 제1 서브 버퍼(216)에 이미 베이스 변환된 알파벳이 존재하는 경우 제1 메인 버퍼(212)는 제1 FSM(214)의 제어에 따라 제1 서브 버퍼(216)로부터 베이스 변환된 알파벳을 제1 맵퍼(220)를 통해 수신하여 입력 스트림(IS)에 삽입할 수 있다.
제1 FSM(214)은 베이스 변환된 알파벳이 현재 데이터 상태에서 출력될 수 없는 경우, 제1 맵퍼(220)가 베이스 변환된 알파벳을 다른 알파벳으로 맵핑하도록 제어할 수 있다.
제1 FSM(214)은 입력 스트림(IS) 또는 맵핑이 완료된 알파벳들에 포함된 알파벳에 따라 현재 데이터 상태가 제2 상태로 변경되는 경우, 제1 메인 버퍼(212)가 상기 알파벳을 그대로 출력하도록 제어할 수 있다.
도 5에서는 2-2의 금지 패턴을 회피하기 위한 데이터 상태 그래프가 나타나 있다. S1과 S2는 각각 데이터 상태를 의미하며, 각 데이터 상태(S1과 S2)는 제1 메인 버퍼(212)에 임시 저장되는 입력 스트림(IS) 또는 베이스 변환된 알파벳들에 포함된 알파벳(0 내지 3)에 의해 다른 데이터 상태로 이동할 수 있다.
데이터 상태가 S1인 상태에서 제1 메인 버퍼(212)에 저장되는 알파벳이 0,1,3인 경우 다음 상태는 S1이 되고, 2인 경우 다음 상태는 S2가 된다. 데이터 상태가 S2인 상태에서 제1 메인 버퍼(212)에 저장되는 알파벳이 0,1,3인 경우 다음 상태는 S1이 된다.
즉, 데이터 상태가 S1일 때와 달리 S2일 때에는 제1 메인 버퍼(212)에 저장되는 알파벳이 2가 될 수 없으며, 이는 금지 패턴인 2-2을 피하기 위함이다.
따라서, S1의 데이터 상태는 제2 상태에 해당하며, S2의 데이터 상태는 제1 상태에 해당한다. 이때, 제1 FSM(214)에 의한 제어 동작은 도 4에서 설명한 각 데이터 상태에서의 제어 동작과 실질적으로 동일한바 생략하기로 한다.
도 6에서는 3-0-3 및 2-2의 금지 패턴을 모두 회피하기 위한 데이터 상태 그래프가 나타나 있다. 도 6의 데이터 상태 그래프는 도 4와 도 5에 각각 도시된 데이터 상태 그래프를 내용적으로 결합한 그래프이다.
도 6에서 제1 상태는 S3와 S4에 해당하며, 제2 상태는 S1과 S2에 해당한다. 이때, 제1 FSM(214)에 의한 제어 동작은 도 4에서 설명한 각 데이터 상태에서의 제어 동작과 실질적으로 동일한바 생략하기로 한다.
도 6과 같은 데이터 상태 그래프에 따라 제1 FSM(214)이 동작할 경우, 제1 FSM(214)이 제1 베이스 변환기(218)가 더 낮은 진수로 변환할 입력 스트림(IS) 중 일부의 변환 사이즈를 결정하는 방법을 설명하기로 한다. 이는 실질적으로 도 4 또는 도 5의 경우에도 동일하게 적용될 수 있다.
도 6의 데이터 상태 그래프의 인접 행렬(adjacency matrix)은 다음의 수학식 1과 같이 표현될 수 있다.
인접 행렬의 행(row)과 열(column)은 각 데이터 상태에 대응되며, 특정한 행과 열에 의해 정해진 성분의 값은 상기 행에 대응한 데이터 상태에서 상기 열에 대응한 데이터 상태로 이동할 수 있는 알파벳의 가짓수에 해당한다. 예컨대, 1행 및 1열에 대응하는 a11 성분은 S1의 데이터 상태에서 S1의 데이터 상태로 이동할 수 있는 알파벳(0,1)의 가짓수인 2의 값을 가진다. 또한, 3행 및 4열에 대응하는 a34 성분은 S3의 데이터 상태에서 S4의 데이터 상태로 이동할 수 있는 알파벳(2)의 가짓수인 1의 값을 가진다.
도 6의 데이터 상태 그래프의 인접 행렬에 대응하여 확률을 고려한 확률-전이 행렬(probability-transition matrix)은 다음의 수학식 2와 같이 표현될 수 있다.
확률-전이 행렬의 행과 열은 각 데이터 상태에 대응되며, 특정한 행과 열에 의해 정해진 성분의 값은 상기 행에 대응한 데이터 상태에서 모든 데이터 상태로 이동할 수 있는 알파벳의 총 가짓수에 대한 상기 행에 대응한 데이터 상태에서 상기 열에 대응한 데이터 상태로 이동할 수 있는 알파벳의 가짓수의 비율에 해당한다. 예컨대, 1행 및 1열에 대응하는 a11 성분은 S1의 데이터 상태에서 모든 데이터 상태로 이동할 수 있는 알파벳(0,1,2,3)의 가짓수인 4에 대한 S1의 데이터 상태에서 S1의 데이터 상태로 이동할 수 있는 알파벳(0,1)의 가짓수인 2의 비율인 1/2의 값을 가진다. 또한, 3행 및 4열에 대응하는 a34 성분은 S3의 데이터 상태에서 모든 데이터 상태로 이동할 수 있는 알파벳(0,1,2)의 가짓수인 3에 대한 S3의 데이터 상태에서 S4의 데이터 상태로 이동할 수 있는 알파벳(2)의 가짓수인 1의 비율인 1/3의 값을 가진다.
확률-전이 행렬 Q에 대해, πQ=π 가 되는 정상 확률 벡터(stationary probability vector)를 구하면 π는 다음의 수학식 3과 같다.
정상 확률 벡터의 각 성분은 이전의 데이터 상태는 고려하지 않고 각 데이터 상태가 나타날 확률을 의미한다. 즉, 이전의 데이터 상태를 고려하지 않고 S1, S2, S3 및 S4의 데이터 상태가 나타날 확률(P1 내지 P4)은 각각 92/191, 48/191, 12/191 및 39/191이 된다.
변환 사이즈(kj)를 구할 수 있는 수식은 다음의 수학식 4와 같이 표현될 수 있다.
여기서, N은 입력 스트림(IS)의 총 크기(예컨대, 10,000 비트(bit)일 경우 10,000)이고, m은 입력 스트림(IS)의 진수(예컨대, 입력 스트림(IS)이 4진수 데이터일 경우 4)이다. 또한, j는 입력 스트림(IS)이 변환될 진수(예컨대, 입력 스트림(IS)이 4진수 데이터일때, 3진수 데이터로 변환)이고, j는 2 이상에서 (m-1) 이하의 값을 가진다. qj는 다음의 수학식 5에 의해 정의될 수 있다.
여기서, V는 전체 데이터 상태의 일련 번호의 집합이고, v는 상기 전체 데이터 상태의 일련 번호의 원소(예컨대, 도 6에서 1,2,3,4)이다. |Sv|는 해당 데이터 상태에서 최대로 출력할 수 있는 알파벳의 갯수를 의미한다. 예컨대, 도 6과 같이 j=3일 경우 q3은 |Sv|=3 이 되는 정상 확률 벡터의 성분들의 합이 된다. 따라서, q3은 12/191+39/191 = 51/191 이 된다.
수학식 4에서 N=10,000이고 도 6과 같이 j=3이고, m=4인 경우, k3은 다음의 수학식 6과 같이 계산될 수 있다.
결국, k3은 2240.18 즉, 약 2241에 해당한다. 이는 곧 제1 베이스 변환기(218)는 2241 개의 알파벳을 베이스 변환하여야 하는 것을 의미한다.
실시예에 따라 제1 베이스 변환기(218)는 2241 개의 알파벳을 한번에 베이스 변환할 수도 있고, 복수 회로 나누어 변환할 수도 있다.
제1 베이스 변환기(218)의 베이스 변환으로 최종적으로 패턴 변환기로부터 출력되는 총 알파벳의 수는 다음의 수학식 7에 의해 계산될 수 있다.
예컨대, 상기의 예에서 최종적으로 패턴 변환기(210)로부터 출력되는 총 알파벳의 수는 10586.6 즉, 약 10587 개의 알파벳이 출력될 수 있다. 이는 제1 베이스 변환기(218)가 2241 개의 4진수의 알파벳을 3진수의 알파벳으로 변환할 경우 2827 개의 알파벳으로 변환되며, 이 때 증가되는 알파벳 수는 587 개(2827-2241)에 해당함과 일치한다.
즉, 금지 패턴을 회피하기 위한 동작으로 늘어난 알파벳의 수가 약 587 개에 해당함을 의미한다.
도 7은 도 4에 도시된 데이터 상태 그래프의 일 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다. 도 8은 도 5에 도시된 데이터 상태 그래프의 다른 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다. 도 9는 도 6에 도시된 데이터 상태 그래프의 또 다른 실시예에 따라 데이터 상태를 결정하는 경우 제1 맵퍼와 제2 맵퍼의 동작을 설명하기 위한 도면이다.
도 7 내지 도 9를 참조하면, 제1 FSM(214)가 데이터 상태가 제1 상태라고 판단한 경우 제1 FSM(214)은 제1 서브 버퍼(216)로부터 베이스 변환된 알파벳을 수신하여 입력 스트림(IS)에 삽입할 수 있다.
이때, 베이스 변환된 알파벳이 현재 데이터 상태에서 출력될 수 없는 알파벳일 경우 제1 FSM(214)은 제1 맵퍼(220)가 베이스 변환된 알파벳을 다른 알파벳으로 맵핑하도록 제어할 수 있다. 이와 달리 베이스 변환된 알파벳이 현재 데이터 상태에서 출력될 수 있는 알파벳일 경우 제1 FSM(214)은 제1 맵퍼(220)가 베이스 변환된 알파벳을 동일한 알파벳으로 맵핑하도록 제어할 수 있다.
도 7의 경우에는 제1 상태인 S3의 데이터 상태에서 제1 맵퍼(220)는 베이스 변환된 알파벳을 다른 알파벳으로 맵핑하지 않는다. 즉, 3-0-3의 금지 패턴을 회피하기 위한 도 7에서는 베이스 변환된 알파벳에 3이 포함되지 않으므로 따로 제1 맵퍼(220)가 다른 알파벳으로의 맵핑을 수행할 필요가 없다.
이와 달리 2-2의 금지 패턴을 회피하기 위한 도 8에서는 베이스 변환된 알파벳에 2가 포함되므로 제1 상태인 S2의 데이터 상태에서 베이스 변환된 알파벳이 2일 때, 제1 맵퍼(220)는 2를 3으로 맵핑할 수 있다. 즉, S2의 데이터 상태에서 패턴 변환기(210)는 알파벳 2는 출력될 수 없는 알파벳이므로 2-2의 금지 패턴을 회피하기 위해 제1 맵퍼(220)는 2를 3으로 맵핑한다.
또한, 도 9의 경우 제1 상태 중 S4의 데이터 상태에서 베이스 변환된 알파벳이 2일 때, 제1 맵퍼(220)는 2를 3으로 맵핑할 수 있다. 즉, S4의 데이터 상태에서 패턴 변환기(210)는 알파벳 2는 출력될 수 없는 알파벳이므로 2-2의 금지 패턴을 회피하기 위해 제1 맵퍼(220)는 2를 3으로 맵핑한다.
패턴 역변환기(230)에 포함된 제2 맵퍼(236)는 도 7 내지 도 9에 도시된 제1 맵퍼(220)의 맵핑과 반대의 맵핑을 수행할 수 있다. 즉, 제1 맵퍼(220)가 동일한 알파벳으로 맵핑하는 경우(예컨대, 2를 2로 맵핑)에는 마찬가지로 동일한 알파벳으로 맵핑하나, 다른 알파벳으로 맵핑하는 경우(예컨대, 2를 3으로 맵핑)에는 반대의 맵핑(예컨대, 3을 2로 맵핑)을 수행할 수 있다.
도 10a 내지 도 10c는 도 6에 도시된 데이터 상태 그래프의 또 다른 실시예에 따라 데이터 상태를 결정하는 경우 패턴 변환기의 동작을 설명하기 위한 도면이다.
도 1 내지 3, 도 6, 도 9 및 도 10a 내지 도 10c를 참조하면, 입력 시간은 호스트(50)로부터 패턴 변환기(210)로 입력 스트림(IS)에 포함된 알파벳(입력 알파벳)이 하나씩 입력되는 시간을 의미하며, 호스트(50)의 동작 속도에 따라 임의로 정해질 수 있다. 출력 시간은 패턴 변환기(210)가 패턴 변환된 입력 스트림(IS)에 포함된 알파벳(출력 알파벳)이 하나씩 출력되는 시간을 의미하며, 메모리 컨트롤러(200) 내부의 컨트롤 로직(미도시)에 의해 임의로 정해질 수 있다.
출력 시간은 상기 출력 시간과 동일한 순번의 입력 시간 이후 및 상기 출력 시간의 다음 순번의 입력 시간 이전에 이루어질 수 있다. 예컨대, 제2 입력 시간에 입력 알파벳인 2가 패턴 변환기(210)로 입력되고, 일정한 시간 경과 후 제2 출력 시간에 출력 알파벳인 2가 패턴 변환기(210)로부터 출력될 수 있다. 그 이후, 제3 입력 시간에 입력 알파벳인 3이 패턴 변환기(210)로 입력될 수 있다.
출력 전 버퍼의 상태는 입력 시간 이후 및 상기 입력 시간과 동일한 순번의 출력 시간 사이의 제1 서브 버퍼(216)의 상태를 의미할 수 있다. 또한, 출력 후 버퍼의 상태는 출력 시간 이후 및 상기 출력 시간의 다음 순번의 입력 시간 사이의 제1 서브 버퍼(216)의 상태를 의미할 수 있다.
도 10a 내지 도 10c에 나타난 패턴 변환기(210)의 동작을 설명하면, 제1 입력 시간에서 데이터 상태는 초기 상태(initial state)로 되어 있다. 상기 초기 상태는 임의의 데이터 상태로 지정될 수 있다. 예컨대, 초기 상태가 S1이라고 가정한다.
제1 입력 시간에서 패턴 변환기(210)로 알파벳 1이 입력되고 제1 메인 버퍼(212)에는 알파벳 1이 임시 저장된다. 데이터 상태가 제2 상태이므로 제1 FSM(214)은 알파벳 1을 그대로 출력할 수 있다. 제1 FSM(214)는 알파벳 1에 의해 데이터 상태를 S1으로 판단할 수 있다.
제2 입력 시간에서 패턴 변환기(210)로 알파벳 2가 입력되고 제1 메인 버퍼(212)에는 알파벳 2가 임시 저장된다. 데이터 상태가 제2 상태이므로 제1 FSM(214)은 알파벳 2를 그대로 출력할 수 있다. 제1 FSM(214)은 알파벳 2에 의해 데이터 상태를 S4로 판단할 수 있다.
제3 입력 시간에서 패턴 변환기(210)로 알파벳 3이 입력되고 제1 메인 버퍼(212)에는 알파벳 3이 임시 저장된다. 데이터 상태가 제1 상태이고 제1 서브 버퍼(216)에 저장된 알파벳이 존재하지 않으므로 입력 스트림(IS)에 포함된 복수의 알파벳들 중 변환 사이즈에 해당하는 알파벳들이 제1 베이스 변환기(218)로 전송되어야 한다. 상기 변환 사이즈가 19라고 가정하면, 제1 FSM(214)은 제3 입력 시간에서 제21 입력 시간까지 입력되는 19 개의 알파벳들을 제1 서브 버퍼(216)를 거쳐 제1 베이스 변환기(218)로 전송할 수 있다.
제1 베이스 변환기(218)는 4 진수의 19 개의 알파벳들(3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)을 3 진수의 24 개의 알파벳들(2,0,2,2,2,1,1,0,1,1,1,1,2,0,0,0,1,2,0,0,2,1,2,0)로 변환할 수 있다. 제1 서브 버퍼(216)에는 상기 3 진수의 24 개의 알파벳들이 저장되고, 첫번째의 알파벳 2가 제1 맵퍼(220)로 전송된다.
제1 FSM(214)은 베이스 변환된 알파벳인 2가 현재 데이터 상태인 S4에서 출력될 수 없는 알파벳이므로 제1 맵퍼(220)가 2를 3으로 맵핑하도록 제어할 수 있다. 제1 맵퍼(220)는 알파벳 3을 출력하고, 제1 FSM(214)은 제1 메인 버퍼(212)에 저장되는 알파벳 3에 따라 데이터 상태를 S2로 판단할 수 있다.
제22 입력 시간에서 패턴 변환기(210)로 알파벳 0이 입력되고 제1 메인 버퍼(212)에는 알파벳 0이 임시 저장된다. 데이터 상태가 제2 상태이므로 제1 FSM(214)은 알파벳 0을 그대로 출력할 수 있다. 제1 FSM(214)은 알파벳 0에 의해 데이터 상태를 S3로 판단할 수 있다.
제1 FSM(214)은 제1 서브 버퍼(216)에 3 진수의 23 개의 알파벳들(0,2,2,2,1,1,0,1,1,1,1,2,0,0,0,1,2,0,0,2,1,2,0)이 저장되어 있으므로, 첫번째의 알파벳 0이 제1 맵퍼(220)로 전송된다.
제1 FSM(214)은 베이스 변환된 알파벳인 0이 현재 데이터 상태인 S3에서 출력될 수 있는 알파벳이므로 제1 맵퍼(220)가 0을 0으로 맵핑하도록 제어할 수 있다. 제1 맵퍼(220)는 알파벳 0을 출력하고, 제1 FSM(214)은 제1 메인 버퍼(212)에 저장되는 알파벳 0에 따라 데이터 상태를 S1으로 판단할 수 있다.
제23 입력 시간 내지 제25 입력 시간에서 패턴 변환기(210)로 입력되는 알파벳은 각각 0,3,1에 해당하여 데이터 상태를 제1 상태로 변경하지 않으므로 입력되는 알파벳들이 그대로 출력된다.
제26 입력 시간에서 패턴 변환기(210)로 알파벳 2가 입력되고 제1 메인 버퍼(212)에는 알파벳 2가 임시 저장된다. 데이터 상태가 제2 상태(S1)이므로 제1 FSM(214)은 알파벳 2를 그대로 출력할 수 있다. 제1 FSM(214)은 알파벳 2에 의해 데이터 상태를 S4로 판단할 수 있다.
제1 FSM(214)은 제1 서브 버퍼(216)에 3 진수의 22 개의 알파벳들(2,2,2,1,1,0,1,1,1,1,2,0,0,0,1,2,0,0,2,1,2,0)이 저장되어 있으므로, 첫번째의 알파벳 2가 제1 맵퍼(220)로 전송된다.
제1 FSM(214)은 베이스 변환된 알파벳인 2가 현재 데이터 상태인 S4에서 출력될 수 없는 알파벳이므로 제1 맵퍼(220)가 2를 3으로 맵핑하도록 제어할 수 있다. 제1 맵퍼(220)는 알파벳 3을 출력하고, 제1 FSM(214)은 제1 메인 버퍼(212)에 저장되는 알파벳 3에 따라 데이터 상태를 S2로 판단할 수 있다.
제27 입력 시간에서 패턴 변환기(210)로 입력되는 알파벳은 3에 해당하여 데이터 상태를 제1 상태로 변경하지 않으므로 입력되는 알파벳 3이 그대로 출력되고 데이터 상태는 S2를 유지한다.
제28 입력 시간에서 패턴 변환기(210)로 알파벳 0이 입력되고 제1 메인 버퍼(212)에는 알파벳 0이 임시 저장된다. 데이터 상태가 제2 상태(S2)이므로 제1 FSM(214)은 알파벳 0을 그대로 출력할 수 있다. 제1 FSM(214)은 알파벳 0에 의해 데이터 상태를 S3으로 판단할 수 있다.
제1 FSM(214)은 제1 서브 버퍼(216)에 3 진수의 21 개의 알파벳들(2,2,1,1,0,1,1,1,1,2,0,0,0,1,2,0,0,2,1,2,0)이 저장되어 있으므로, 첫번째의 알파벳 2가 제1 맵퍼(220)로 전송된다.
제1 FSM(214)은 베이스 변환된 알파벳인 2가 현재 데이터 상태인 S3에서 출력될 수 있는 알파벳이므로 제1 맵퍼(220)가 2를 2로 맵핑하도록 제어할 수 있다. 제1 맵퍼(220)는 알파벳 2를 출력하고, 제1 FSM(214)은 제1 메인 버퍼(212)에 저장되는 알파벳 2에 따라 데이터 상태를 S4로 판단할 수 있다.
제1 FSM(214)은 제1 서브 버퍼(216)에 3 진수의 20 개의 알파벳들(2,1,1,0,1,1,1,1,2,0,0,0,1,2,0,0,2,1,2,0)이 저장되어 있으므로, 첫번째의 알파벳 2가 제1 맵퍼(220)로 전송된다.
제1 FSM(214)은 베이스 변환된 알파벳인 2가 현재 데이터 상태인 S4에서 출력될 수 없는 알파벳이므로 제1 맵퍼(220)가 2를 3으로 맵핑하도록 제어할 수 있다. 제1 맵퍼(220)는 알파벳 3을 출력하고, 제1 FSM(214)은 제1 메인 버퍼(212)에 저장되는 알파벳 3에 따라 데이터 상태를 S2로 판단할 수 있다.
이후의 제30 입력 시간 내지 제39 입력 시간까지 패턴 변환기(210)가 현재의 데이터 상태를 판단하고 판단된 데이터 상태에 따라 패턴 변환된 알파벳을 출력하는 과정이 반복된다.
제40 입력 시간에서 패턴 변환기(210)로 알파벳 2가 입력되고 제1 메인 버퍼(212)에는 알파벳 2가 임시 저장된다. 데이터 상태가 제2 상태(S1)이므로 제1 FSM(214)은 알파벳 2를 그대로 출력할 수 있다. 제1 FSM(214)은 알파벳 2에 의해 데이터 상태를 S4로 판단할 수 있다.
제40 입력 시간 이후에는 새로운 입력 스트림(IS)의 입력이 없으므로, 제1 서브 버퍼(216)에 저장된 3 진수의 14 개의 알파벳들(1,1,2,0,0,0,1,2,0,0,2,1,2,0)이 순차적으로 제1 맵퍼(220) 및 제1 메인 버퍼(212)를 통해 출력된다.
도 10a 내지 도 10c에서는 패턴 변환기(210) 만을 예를 들어 설명하였으나, 패턴 역변환기(230)의 동작은 패턴 변환기(210)의 동작의 실질적으로 역순에 해당하므로 설명을 생략하기로 한다.
도 11은 도 2에 도시된 패턴 변환기의 동작을 설명하기 위한 흐름도이다.
도 1, 도 2, 도 6, 도 9, 도 10a 내지 도 10c 및 도 11을 참조하면, 제1 메인 버퍼(212)는 복수의 알파벳들을 포함하는 입력 스트림(IS)을 호스트(50)로부터 수신할 수 있다. 제1 FSM(214)은 입력 스트림(IS)에 포함된 알파벳에 따른 현재의 데이터 상태(예컨대, 도 6의 S1 내지 S4)를 판단할 수 있다(S100).
입력 스트림(IS)에 따른 현재의 데이터 상태가 미리 정해진 복수의 데이터 상태들 중 제1 상태(예컨대, 도 6의 S3와 S4)인 경우(S105의 Yes 경로), 제1 FSM(214)은 제1 서브 버퍼(216)에 저장된 베이스 변환된 알파벳이 존재하는지 여부를 판단할 수 있다(S107). 제1 서브 버퍼(216)에 저장된 베이스 변환된 알파벳이 존재하지 않는 경우(S107의 No 경로), 제1 베이스 변환기(218)는 입력 스트림(IS) 중 변환 사이즈에 해당하는 크기의 일부를 더 낮은 진수로 변환할 수 있다(S110). 제1 서브 버퍼(216)에 저장된 베이스 변환된 알파벳이 존재하지 않는 경우(S107의 Yes 경로), 후술할 S130 단계가 수행될 수 있다.
제1 서브 버퍼(216)는 제1 베이스 변환기(218)로부터 베이스 변환된 일부를 저장할 수 있다(S120).
제1 FSM(214)은 제1 서브 버퍼(216)에 저장된 상기 베이스 변환된 일부 중 하나의 알파벳이 입력 스트림(IS)에 따른 현재의 데이터 상태에서 출력될 수 있는지 여부를 판단할 수 있다(S130).
상기 판단 결과에 따라 입력 스트림(IS)에 따른 현재의 데이터 상태에서 출력될 수 없는 경우 제1 맵퍼(220)는 상기 베이스 변환된 일부 중 하나의 알파벳을 다른 알파벳으로 맵핑할 수 있다(S140). 또는 상기 판단 결과에 따라 입력 스트림(IS)에 따른 현재의 데이터 상태에서 출력될 수 있는 경우 제1 맵퍼(220)는 상기 베이스 변환된 일부 중 하나의 알파벳을 동일한 알파벳으로 맵핑할 수 있다
예컨대, 도 6의 S4의 데이터 상태에서 상기 베이스 변환된 일부 중 하나의 알파벳이 2일 경우 제1 FSM(214)은 제1 맵퍼(220)가 알파벳 2를 알파벳 3으로 맵핑하도록 제어할 수 있다.
상기 베이스 변환된 알파벳에 대한 맵핑이 완료된 후 제1 메인 버퍼(212)는 상기 베이스 변환된 알파벳을 입력 스트림(IS)에 삽입할 수 있다(S150).
제1 FSM(214)은 호스트(50)로부터 입력 스트림(IS)의 수신이 완료되었는지 판단할 수 있다(S155). 입력 스트림(IS)의 수신이 완료되지 않은 경우(S155의 No 경로) S100 내지 S155 및 후술할 S170 단계가 반복하여 수행될 수 있다.
호스트(50)로부터 입력 스트림(IS)의 수신이 완료된 경우(S155의 Yes 경로),제1 FSM(214)은 제1 서브 버퍼(216)에 남아 있는 상기 변환된 일부에 포함된 알파벳들을 순차적으로 수신하여 입력 스트림(IS)의 말미에 삽입할 수 있다(S160).
만일, 입력 스트림(IS)에 따른 현재의 데이터 상태가 미리 정해진 복수의 데이터 상태들 중 제2 상태(예컨대, 도 6의 S1과 S2)인 경우(S105의 No 경로) 상기 입력 스트림(IS)에 포함된 알파벳을 제1 메인 버퍼(212)가 그대로 출력할 수 있다(S170).
도 12는 도 3에 도시된 패턴 역변환기의 동작을 설명하기 위한 흐름도이다.
도 1, 도 2, 도 6, 도 9 및 도 10a 내지 도 12를 참조하면, 제2 메인 버퍼(232)는 ECC 디코더(270)로부터 ECC 디코딩이 완료된 복수의 알파벳들을 포함하는 리드 데이터(RD)를 수신하여 임시 저장할 수 있다. 제2 FSM(234)은 리드 데이터(RD)에 포함된 알파벳에 따른 현재의 데이터 상태를 판단할 수 있다(S200).
제2 서브 버퍼(238)가 비어 있는 경우 제2 메인 버퍼(232)는 상기 알파벳을 제2 맵퍼(232)로 전송함과 동시에 제2 FSM(234)의 제어에 따라 변환 사이즈에 해당하는 크기만큼 비워 놓고 리드 데이터(RD)에 포함된 다음 알파벳을 임시 저장할 수 있다. 제2 FSM(234)은 상기 현재의 데이터 상태 및 제1 FSM(214)과 공유하는 맵핑 정보를 이용하여 제2 맵퍼(236)가 수신된 상기 알파벳을 동일하거나 다른 알파벳으로 맵핑하도록 제어할 수 있다(S210).
제2 베이스 변환기(240)는 상기 맵핑된 적어도 하나의 알파벳을 수신하여 변환 사이즈에 해당하는 알파벳들을 변환한 사이즈(예컨대, 변환 사이즈 19에 해당하는 4 진수의 알파벳 19 개를 변환한 3 진수의 알파벳 24 개)에 해당하는 알파벳들을 모두 수신한 경우 상기 알파벳들을 동일한 값의 더 높은 진수의 알파벳들로 복원할 수 있다(S220).
제2 메인 버퍼(232)는 제2 FSM(234)의 제어에 따라 제2 서브 버퍼(238)로부터 복원된 알파벳들을 수신하여 상기 복원된 알파벳들을 상기 비워진 주소에 삽입할 수 있다(S230).
도 12의 패턴 역변환기(230)의 동작은 도 11의 패턴 변환기(210)의 동작에 비해 간략히 설명되었으나, 패턴 역변환기(230)의 동작은 실질적으로 패턴 변환기(210)의 동작과 역의 관계에 있다.
도 13은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 일 실시 예를 나타낸다.
도 1 및 도 13을 참조하면, 시스템(400)은 전자 장치 또는 휴대용 장치(portable device)로 구현될 수 있다. 상기 휴대용 장치는 이동 전화기 (cellular phone), 스마트폰(smart phone), 또는 태블릿(tablet) PC로 구현될 수 있다.
시스템(400)은 프로세서(411)와 메모리 장치(413)를 포함한다. 메모리 장치(413)는 도 1의 메모리 장치(150)일 수 있다.
실시 예에 따라, 프로세서(411)와 메모리 장치(413)는 패키지(410)로 패키징될 수 있다. 이 경우, 패키지(410)는 시스템 보드(미도시) 위에 마운트될 수 있다.
프로세서(411)는 메모리 장치(413)의 테스트 동작 및 데이터 처리 동작, 예컨대 라이트 동작 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(415)를 포함한다. 메모리 컨트롤러(415)는 도 1의 메모리 컨트롤러(200)일 수 있다.
메모리 컨트롤러(415)는 시스템(400)의 전반적인 동작을 제어하는 프로세서(411)에 의하여 제어된다. 실시 예에 따라, 메모리 컨트롤러(415)는 프로세서(411)와 메모리 장치(413) 사이에 접속될 수 있다.
메모리 장치(413)에 저장된 데이터는, 프로세서(411)의 제어에 따라, 디스플레이(420)를 통하여 디스플레이될 수 있다.
무선 송수신기(430)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(430)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(411)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 프로세서(411)는 무선 송수신기(430)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 장치(413)에 저장하거나 또는 디스플레이(420)를 통하여 디스플레이할 수 있다.
무선 송수신기(430)는 프로세서(411)로부터 출력된 신호를 무선 신호로 변환하고 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다.
입력 장치(440)는 프로세서(411)의 동작을 제어하기 위한 제어 신호 또는 프로세서(411)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(411)는 메모리 장치(413)로부터 출력된 데이터, 무선 송수신기(430)로부터 출력된 무선 신호, 또는 입력 장치(440)로부터 출력된 데이터가 디스플레이(420)를 통하여 디스플레이될 수 있도록 디스플레이(420)를 제어할 수 있다.
도 14는 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 다른 실시 예를 나타낸다.
도 1 및 도 14를 참조하면, 시스템(500)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
시스템(500)은 시스템(500)의 전반적인 동작을 제어하기 위한 프로세서(511)와 메모리 장치(513)를 포함한다. 메모리 장치(513)는 도 1에 도시된 메모리 장치(150)를 의미할 수 있다.
실시 예에 따라, 프로세서(511)와 메모리 장치(513)는 패키지(510)로 패키징될 수 있다. 패키지(510)는 시스템 보드(미도시) 위에 마운트될 수 있다.
프로세서(511)는 메모리 장치(513)의 동작을 제어하는 메모리 컨트롤러(515)를 포함할 수 있다. 메모리 컨트롤러(515)는 도 1의 메모리 컨트롤러(200)일 수 있다.
프로세서(511)는 입력 장치(520)에 의하여 발생한 입력 신호에 따라 메모리 장치(513)에 저장된 데이터를 디스플레이(530)를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(520)는 터치 패드(touch pad) 또는 컴퓨터 마우스 (computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
도 15는 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 1 및 도 15를 참조하면, 시스템(600)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다.
시스템(600)은 메모리 장치(613), 메모리 컨트롤러(611) 및 카드 인터페이스(610)를 포함한다. 메모리 장치(613)는 도 1에 도시된 메모리 장치(150)를 의미할 수 있다.
실시 예에 따라, 메모리 장치(613)와 메모리 컨트롤러(611)는 패키지(610)로 패키징될 수 있다. 패키지(610)는 시스템 보드(미도시) 위에 마운트될 수 있다.
메모리 컨트롤러(611)는 메모리 장치(613)와 카드 인터페이스(620) 사이에서 데이터의 교환을 제어할 수 있다. 메모리 컨트롤러(611)는 도 1의 메모리 컨트롤러(200)일 수 있다.
실시 예에 따라, 카드 인터페이스(620)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(620)는 호스트의 프로토콜에 따라 상기 호스트와 메모리 컨트롤러(611) 사이에서 데이터 교환을 인터페이싱할 수 있다.
시스템(600)이 컴퓨터, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트와 접속될 때, 상기 호스트는 카드 인터페이스(620)와 메모리 컨트롤러(611)를 통하여 메모리 장치(613)에 저장된 데이터를 주거나 받을 수 있다.
도 16은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 1 및 도 16을 참조하면, 시스템(700)은 디지털 카메라 또는 디지털 카메라가 부착된 포터블 디바이스(portable device)로 구현될 수 있다.
시스템(700)은 시스템(700)의 전반적인 동작을 제어하는 프로세서(711)와 메모리 장치(713)를 포함한다. 이때, 메모리 장치(713)는 도 1에 도시된 메모리 장치(150)를 의미할 수 있다.
실시 예에 따라, 프로세서(711)와 메모리 장치(713)는 패키지(710)로 패키징될 수 있다. 패키지(710)는 시스템 보드(미도시) 위에 마운트될 수 있다. 프로세서(711)는 도 1의 메모리 컨트롤러(200)를 포함할 수 있다.
시스템(700)의 이미지 센서(720)는 광학 이미지를 디지털 신호로 변환하고, 변환된 디지털 신호는 프로세서(711)의 제어 하에 메모리 장치(713)에 저장되거나 또는 디스플레이(730)를 통하여 디스플레이된다. 또한, 메모리 장치(713)에 저장된 디지털 신호는 프로세서(711)의 제어 하에 디스플레이(730)를 통하여 디스플레이된다.
도 17은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
도 1 및 도 17을 참조하면, 시스템(800)은 메모리 장치(813)와 시스템(800)의 전반적인 동작을 제어할 수 있는 프로세서(811)를 포함한다. 메모리 장치(813)는 도 1에 도시된 메모리 장치(150)를 의미할 수 있다.
실시 예에 따라, 메모리 장치(813)와 프로세서(811)는 패키지(810)로 패키징될 수 있다. 패키지(810)는 시스템 보드(미도시) 위에 마운트될 수 있다.
프로세서(811)는 메모리 장치 (813)의 동작을 제어하기 위한 메모리 컨트롤러(815)를 포함한다. 메모리 컨트롤러(815)는 도 1의 메모리 컨트롤러(200)일 수 있다.
시스템(800)은 프로세서(811)의 동작 메모리(operation memory)로서 사용될 수 있는 메모리(840)를 포함한다. 메모리(840)는 ROM(read only memory) 또는 플래시 메모리와 같은 비휘발성 메모리로 구현될 수 있다.
시스템(800)에 접속된 호스트는 프로세서(811)와 호스트 인터페이스(830)를 통하여 메모리 장치(813)와 데이터를 주거나 받을 수 있다. 이때 메모리 컨트롤러(815)는 메모리 인터페이스의 기능을 수행할 수 있다.
실시 예에 따라, 시스템(800)은 ECC(error correction code) 블록(820)을 더 포함할 수 있다.
프로세서(811)의 제어에 따라 동작하는 ECC 블록(820)은 메모리 컨트롤러(815)를 통하여 메모리 장치(813)로부터 읽혀진 데이터에 포함된 에러를 검출하고 정정할 수 있다. ECC 블록(820)은 메모리 컨트롤러(815)에 포함될 수 있다.
프로세서(811)는 버스(801)를 통하여 ECC 블록(820), 호스트 인터페이스(830) 및 메모리(840) 사이에서 데이터의 교환을 제어할 수 있다.
시스템(800)은 USB(Universal Serial Bus) 메모리 드라이브 또는 메모리 스틱(memory stick)으로 구현될 수 있다.
도 18은 도 1에 도시된 메모리 컨트롤러를 포함하는 시스템의 또 다른 실시 예를 나타낸다.
채널(901)은 광학적 접속 수단을 의미할 수 있다. 상기 광학적 접속 수단은 광섬유(optical fiber), 광도파로(optical waveguide), 또는 광신호를 전송하는 매체를 의미할 수 있다.
도 1 및 도 18을 참조하면, 시스템(900)은 제1시스템(1000)과 제2시스템(1100)을 포함할 수 있다.
제1시스템(1000)은 제1메모리 장치(100a)와 전광 변환 회로(1010)를 포함할 수 있다. 전광 변환 회로(1010)는 제1메모리 장치(100a)로부터 출력된 전기 신호를 광신호로 변환하고, 변환된 광신호를 광학적 접속 수단(901)을 통하여 제2시스템(1100)으로 출력할 수 있다.
제2시스템(1100)은 광전 변환 회로(1120)와 제2메모리 장치(100b)를 포함한다. 광전 변환 회로(1120)는 광학적 접속 수단(901)을 통하여 입력된 광신호를 전기 신호로 변환하고, 변환된 전기 신호를 제2메모리 장치(100b)로 전송할 수 있다.
제1시스템(1000)은 광전 변환 회로(1020)를 더 포함하고, 제2시스템(1100)은 전광 변환 회로(1110)를 더 포함할 수 있다.
제2시스템(1100)이 제1시스템(1000)으로 데이터를 전송할 때, 전광 변환 회로(1110)는 제2메모리 장치(100b)로부터 출력된 전기 신호를 광신호로 변환하고, 변환된 광신호를 광학적 접속 수단(901)을 통하여 제1시스템(1000)으로 출력할 수 있다. 광전 변환 회로(1020)는 광학적 접속 수단(901)을 통하여 입력된 광신호를 전기 신호로 변환하고, 변환된 전기 신호를 제1메모리 장치(100a)로 전송할 수 있다. 각 메모리 장치(100a와 100b)의 구조와 동작은 도 1의 메모리 시스템(100)의 구조와 동작과 실질적으로 동일하다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, Flash Memory, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 본 발명에 따른 객체 정보 추정 방법을 수행하기 위한 프로그램 코드는 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 전송될 수도 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
호스트(50)
메모리 시스템(100)
메모리 장치(150)
메모리 컨트롤러(200)
패턴 변환기(210)
패턴 역변환기(230)
ECC 인코더(260)
ECC 디코더(270)
메모리 시스템(100)
메모리 장치(150)
메모리 컨트롤러(200)
패턴 변환기(210)
패턴 역변환기(230)
ECC 인코더(260)
ECC 디코더(270)
Claims (10)
- 복수의 알파벳들을 포함하는 입력 스트림에 따른 데이터 상태를 판단하는 단계;
상기 데이터 상태가 미리 정해진 복수의 데이터 상태들 중 제1 상태인 경우 상기 입력 스트림 중 변환 사이즈에 해당하는 크기를 가지는 일부를 더 낮은 진수로 변환하는 단계;
상기 변환된 일부 중 하나의 알파벳을 상기 입력 스트림에 삽입하는 단계; 및
상기 데이터 상태가 상기 미리 정해진 복수의 데이터 상태들 중 제2 상태인 경우 상기 입력 스트림에 포함된 알파벳을 그대로 출력하는 단계를 포함하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 입력 스트림에 따른 데이터 상태에 따라 상기 변환된 일부 중 하나의 알파벳이 출력될 수 있는지 여부를 판단하는 단계; 및
상기 판단 결과에 따라 상기 변환된 일부 중 하나의 알파벳을 다른 알파벳으로 맵핑하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 변환된 일부를 제1 서브 버퍼에 저장하는 단계를 더 포함하며,
상기 변환하는 단계는 상기 변환된 일부가 상기 제1 서브 버퍼에 존재하지 않는 경우 상기 입력 스트림 중 일부를 더 낮은 진수로 변환하는 메모리 컨트롤러의 동작 방법. - 제3항에 있어서,
상기 입력 스트림의 수신이 완료된 경우 상기 제1 서브 버퍼에 남아 있는 상기 변환된 일부에 포함된 알파벳들을 순차적으로 상기 입력 스트림에 삽입하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
복수의 알파벳들을 포함하는 리드 데이터에 따른 데이터 상태를 판단하는 단계;
상기 리드 데이터 중 일부를 더 높은 진수로 복원하는 단계; 및
상기 복원된 일부를 상기 리드 데이터에 삽입하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법. - 제5항에 있어서,
상기 리드 데이터에 따른 데이터 상태에 따라 상기 리드 데이터에 포함된 알파벳을 다른 알파벳으로 맵핑하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법. - 제6항에 있어서,
상기 복원된 일부는 상기 변환 사이즈에 해당하는 크기를 가지는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 데이터 상태는 상기 복수의 알파벳들 중 적어도 하나의 알파벳을 출력할 수 없는 제1 상태 및 상기 복수의 알파벳들을 모두 출력할 수 있는 제2 상태를 포함하고,
상기 변환 사이즈는 상기 입력 스트림의 크기에 따라 결정되는 메모리 컨트롤러의 동작 방법. - 복수의 알파벳들을 포함하는 입력 스트림에 따른 데이터 상태가 미리 정해진 복수의 데이터 상태들 중 제1 상태인 경우 상기 입력 스트림 중 일부를 더 낮은 진수로 변환하여 상기 입력 스트림에 삽입하는 패턴 변환기; 및
복수의 알파벳들을 포함하는 리드 데이터에 따른 데이터 상태가 상기 제1 상태인 경우 상기 리드 데이터 중 일부를 더 높은 진수로 변환하여 상기 리드 데이터에 삽입하는 패턴 역변환기를 포함하며,
상기 리드 데이터는 상기 입력 스트림을 메모리 장치에 라이트한 후 리드되는 데이터이고,
상기 제1 상태는 상기 복수의 알파벳들 중 적어도 하나의 알파벳을 출력할 수 없는 데이터 상태인 메모리 컨트롤러. - 제9항의 메모리 컨트롤러; 및
상기 메모리 컨트롤러로부터 상기 입력 스트림을 수신하여 라이트하고, 상기 메모리 컨트롤러의 제어에 따라 상기 라이트된 입력 스트림을 리드하여 리드 데이터로서 출력하는 상기 메모리 장치를 포함하는 메모리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130028056A KR20140114516A (ko) | 2013-03-15 | 2013-03-15 | 메모리 컨트롤러 및 이의 동작 방법 |
US14/205,478 US9378192B2 (en) | 2013-03-15 | 2014-03-12 | Memory controller and method of operating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130028056A KR20140114516A (ko) | 2013-03-15 | 2013-03-15 | 메모리 컨트롤러 및 이의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140114516A true KR20140114516A (ko) | 2014-09-29 |
Family
ID=51534253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130028056A Withdrawn KR20140114516A (ko) | 2013-03-15 | 2013-03-15 | 메모리 컨트롤러 및 이의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9378192B2 (ko) |
KR (1) | KR20140114516A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102181177B1 (ko) | 2016-07-29 | 2020-11-20 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 비휘발성 메모리를 위한 비-바이너리 인코딩 |
KR20180051881A (ko) * | 2016-11-09 | 2018-05-17 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
CN116757158B (zh) * | 2023-08-11 | 2024-01-23 | 深圳致赢科技有限公司 | 基于半导体存储的数据管理方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119120A (en) * | 1996-06-28 | 2000-09-12 | Microsoft Corporation | Computer implemented methods for constructing a compressed data structure from a data string and for using the data structure to find data patterns in the data string |
US6661839B1 (en) * | 1998-03-24 | 2003-12-09 | Advantest Corporation | Method and device for compressing and expanding data pattern |
US6553535B1 (en) * | 1998-08-21 | 2003-04-22 | Massachusetts Institute Of Technology | Power-efficient communication protocol |
EP1700382A1 (en) * | 2003-12-23 | 2006-09-13 | Koninklijke Philips Electronics N.V. | Decoding method and device |
US7840399B2 (en) * | 2005-04-07 | 2010-11-23 | Nokia Corporation | Method, device, and computer program product for multi-lingual speech recognition |
US7714748B1 (en) * | 2005-07-22 | 2010-05-11 | Marvell International Ltd. | Systems and methods for constructing high-rate constrained codes |
US8788848B2 (en) * | 2007-03-22 | 2014-07-22 | Microsoft Corporation | Optical DNA |
KR101517185B1 (ko) | 2008-04-15 | 2015-05-04 | 삼성전자주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR101403314B1 (ko) | 2008-05-23 | 2014-06-05 | 삼성전자주식회사 | 메모리 장치 및 데이터 비트 저장 방법 |
KR101497548B1 (ko) | 2009-02-02 | 2015-03-03 | 삼성전자주식회사 | 플래시 메모리 장치, 및 이의 프로그램 및 독출 방법 |
TWI435328B (zh) | 2009-07-20 | 2014-04-21 | Silicon Motion Inc | 針對一快閃記憶體的控制器所存取之資料來進行資料型樣管理之方法以及相關之記憶裝置及其控制器 |
KR101824227B1 (ko) | 2009-08-07 | 2018-02-05 | 삼성전자주식회사 | 메모리 시스템 및 그것의 프로그램 방법 |
TWI438778B (zh) | 2010-03-25 | 2014-05-21 | Silicon Motion Inc | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 |
JP5723967B2 (ja) * | 2010-03-30 | 2015-05-27 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス |
KR101678407B1 (ko) | 2010-05-10 | 2016-11-23 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 프로그램 방법 |
WO2012031628A1 (en) * | 2010-09-09 | 2012-03-15 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Entropy encoding and decoding scheme |
US20130044876A1 (en) * | 2010-11-09 | 2013-02-21 | National Aeronautics And Space Administration | Genomics-based keyed hash message authentication code protocol |
EP2782282A3 (en) * | 2013-03-20 | 2018-04-04 | ZTE (USA) Inc. | Soft maximum likelihood sequence estimation in digital communication |
US9136015B2 (en) * | 2013-04-24 | 2015-09-15 | Apple Inc. | Threshold adjustment using data value balancing in analog memory device |
GB201320983D0 (en) * | 2013-11-28 | 2014-01-15 | Ibm | Data encoding in solid-state storage apparatus |
-
2013
- 2013-03-15 KR KR1020130028056A patent/KR20140114516A/ko not_active Withdrawn
-
2014
- 2014-03-12 US US14/205,478 patent/US9378192B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20140281816A1 (en) | 2014-09-18 |
US9378192B2 (en) | 2016-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10854285B2 (en) | Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell | |
KR102393427B1 (ko) | 반도체장치 및 반도체시스템 | |
KR101739878B1 (ko) | 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템 | |
KR102588969B1 (ko) | 오류 정정 디코더 및 이를 포함하는 메모리 시스템 | |
KR20100124087A (ko) | 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법 | |
US10324785B2 (en) | Decoder using low-density parity-check code and memory controller including the same | |
US11757567B2 (en) | Devices and methods for encoding and decoding to implement a maximum transition avoidance coding with minimum overhead | |
US10484014B2 (en) | Controller, semiconductor memory system and operating method thereof | |
KR20190035269A (ko) | 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 | |
US9105359B2 (en) | Nonvolatile memory device and error correction methods thereof | |
KR20180000594A (ko) | 반도체장치 및 반도체시스템 | |
KR20180000593A (ko) | 데이터의 오류를 정정하는 방법 및 이를 이용하는 반도체장치 | |
US10141952B2 (en) | Memory system and operating method thereof | |
CN109753377B (zh) | 极化码解码装置和方法 | |
KR20140114516A (ko) | 메모리 컨트롤러 및 이의 동작 방법 | |
US10319455B2 (en) | Semiconductor device | |
KR20180053113A (ko) | 반도체장치 | |
KR102104833B1 (ko) | 메모리 컨트롤러, 및 이의 동작 방법 | |
CN106158046B (zh) | 用于turbo乘积码的误校正避免 | |
US20180191373A1 (en) | Error correction method of data storage device | |
KR102686445B1 (ko) | 데이터 저장 장치 및 그 동작 방법 | |
CN117130544A (zh) | 用于控制操作速度的存储器系统和数据处理系统 | |
CN116940986A (zh) | 用于减少ecc功率消耗的方法及系统 | |
US20240274188A1 (en) | Semiconductor device for improving performance in continuous read and operation method of semiconductor device | |
CN111406282B (zh) | 一种用于存储设备的存储器控制电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20130315 |
|
PG1501 | Laying open of application | ||
PC1203 | Withdrawal of no request for examination | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |