KR101623730B1 - 인터리버 장치 - Google Patents
인터리버 장치 Download PDFInfo
- Publication number
- KR101623730B1 KR101623730B1 KR1020090113102A KR20090113102A KR101623730B1 KR 101623730 B1 KR101623730 B1 KR 101623730B1 KR 1020090113102 A KR1020090113102 A KR 1020090113102A KR 20090113102 A KR20090113102 A KR 20090113102A KR 101623730 B1 KR101623730 B1 KR 101623730B1
- Authority
- KR
- South Korea
- Prior art keywords
- sector
- data
- unit
- output
- buffer
- Prior art date
Links
Images
Classifications
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
인터리버 장치는 제 1 버퍼부, 인코딩부, 제 2 버퍼부 및 출력부를 포함한다. 제 1 버퍼부는 입력 데이터를 섹터 단위로 버퍼링하여 복수의 섹터 단위 데이터들을 순차적으로 생성한다. 인코딩부는 섹터 단위 데이터들에 대하여 이씨씨 인코딩을 수행하고, 복수의 패리티 코드들을 순차적으로 생성한다. 제 2 버퍼부는 섹터 단위 데이터들 및 패리티 코드들을 인터리빙하여 복수의 출력 버퍼들에 저장한다. 출력부는 출력 버퍼들에 저장된 복수의 인터리빙 데이터들을 적어도 하나 이상의 메모리 장치들에 출력한다. 이와 같이, 인터리버 장치는 간단한 구조를 가지면서도 인터리빙을 다양한 방식으로 수행할 수 있다.
Description
본 발명은 반도체 메모리 장치에 관한 것으로서, 더욱 상세하게는 낸드 플래시 메모리 장치에서 사용되는 인터리버 장치에 관한 것이다.
반도체 메모리 장치는 크게 전원 공급이 되지 않는 경우에 데이터를 잃어버리는 휘발성 메모리 장치와 전원 공급이 되지 않는 경우에도 데이터를 유지하는 비휘발성 메모리 장치로 나누어진다. 이러한 비휘발성 메모리 장치의 한 가지 유형으로 플래시 메모리 장치가 있는데, 최근, 고집적 및 저비용으로 생산이 가능한 낸드 플래시 메모리 장치가 널리 사용되고 있다.
일반적으로, 낸드 플래시 메모리 장치에서는 데이터가 페이지 단위로 기입 및 독출되므로 실질적으로 랜덤 억세스가 불가하다. 따라서, 낸드 플래시 메모리 장치는 하나의 섹터에 대한 에러 정정 코드의 정정 능력 한계에 기인한 입출력 에러 발생을 감소시키기 위하여 인터리버 장치를 이용한다. 그러나, 종래의 인터리빙 장치는 구조가 복잡하여 소형화에 적합하지 않고, 다양한 방식으로 인터리빙을 수행하지 못한다는 문제점이 있다.
본 발명의 일 목적은 간단한 구조를 가지면서도 인터리빙을 다양한 방식으로 수행할 수 있는 인터리버 장치를 제공하는 것이다.
본 발명의 다른 목적은 상기 인터리버 장치를 포함하는 메모리 컨트롤러를 제공하는 것이다.
본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 인터리버 장치는 입력 데이터를 섹터(sector) 단위로 버퍼링하여 복수의 섹터 단위 데이터들을 순차적으로 생성하는 제 1 버퍼부, 상기 섹터 단위 데이터들에 대하여 이씨씨 인코딩(ECC encoding)을 수행하고, 복수의 패리티 코드들을 순차적으로 생성하는 인코딩부, 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 인터리빙(interleaving)하여 복수의 출력 버퍼들에 저장하는 제 2 버퍼부 및 상기 출력 버퍼들에 저장된 복수의 인터리빙 데이터들을 적어도 하나 이상의 메모리 장치들에 출력하는 출력부를 포함할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 적어도 하나 이상의 메모리 장치들은 싱글 레벨 셀(Single Level Cell; SLC) 타입 또는 멀티 레벨 셀(Multi Level Cell; MLC) 타입의 낸드 플래시 메모리 장치(NAND flash memory device)일 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 적어도 하나 이상의 메모리 장치들은 단일 채널(single channel) 또는 멀티 채널(multi channel)을 구성할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 제 1 버퍼부는 섹터 사이즈를 갖는 하나의 입력 버퍼를 포함할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 출력 버퍼들의 사이즈는 섹터 사이즈보다는 크거나 같고, 페이지(page) 사이즈보다는 작거나 같을 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 입력 버퍼 및 상기 출력 버퍼들은 에스램(Static Random Access Memory; SRAM) 또는 디램(Dynamic Random Access Memory; DRAM)으로 구현될 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹(group)들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 상기 출력 버퍼들에 그룹 별로 인터리빙하여 저장할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 1 그룹을 상기 출력 버퍼들의 제 1 그룹에 인터리빙하여 저장하고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 2 그룹을 상기 출력 버퍼들의 제 2 그룹에 인터리빙하여 저장할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 일부 그룹만을 상기 출력 버퍼들에 인터리빙하여 저장하며, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 나머지 그룹은 상기 출력 버퍼들에 순차적으로 저장할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 1 그룹을 상기 출력 버퍼들의 제 1 그룹에 인터리빙하여 저장하고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 2 그룹을 상기 출력 버퍼들의 제 2 그룹에 순차적으로 저장할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 일부 그룹만을 상기 출력 버퍼들에 인터리빙하여 저장하며, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 나머지 그룹은 상기 적어도 하나 이상의 메모리 장치들에 직접 출력할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 1 그룹을 상기 출력 버퍼들에 인터리빙하여 저장하고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 2 그룹을 상기 적어도 하나 이상의 메모리 장치들에 직접 출력할 수 있다.
상기 인터리버 장치의 실시예들에 따르면, 상기 출력부는 상기 인터리빙 데이터들에 대하여 이씨씨 인코딩을 수행하여 상기 적어도 하나 이상의 메모리 장치들에 출력할 수 있다. 여기서, 상기 이씨씨 인코딩은 상기 인터리빙 데이터들의 전부에 대해서 수행되거나, 또는 상기 인터리빙 데이터들의 일부에 대해서 수행될 수 있다.
본 발명의 다른 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 메모 리 컨트롤러는 호스트 장치로부터 입력되는 입력 데이터를 섹터 단위로 버퍼링한 복수의 섹터 단위 데이터들에 기초하여 복수의 인터리빙 데이터들을 생성하고, 기입 커맨드 및 기입 어드레스에 응답하여 상기 인터리빙 데이터들을 적어도 하나 이상의 메모리 장치들에 기입하는 기입부 및 독출 커맨드 및 독출 어드레스에 응답하여 상기 적어도 하나 이상의 메모리 장치들로부터 복수의 독출 데이터들을 독출하고, 상기 독출 데이터들에 기초하여 복수의 출력 데이터들을 생성하며, 상기 출력 데이터들을 상기 호스트 장치로 출력하는 독출부를 포함할 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 호스트 장치 또는 상기 적어도 하나 이상의 메모리 장치들 각각에 빌트 인(built-in) 형태로 구현될 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 메모리 컨트롤러는 상기 기입부 및 상기 독출부를 제어하는 중앙 처리부, 상기 입력 데이터 및 상기 출력 데이터에 대하여 상기 호스트 장치와의 인터페이싱(interfacing)을 수행하는 호스트 인터페이스 장치 및 상기 인터리빙 데이터 및 상기 독출 데이터에 대하여 상기 적어도 하나 이상의 메모리 장치들과의 인터페이싱을 수행하는 메모리 인터페이스 장치를 더 포함할 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 기입부는 상기 입력 데이터를 섹터 단위로 버퍼링하여 상기 섹터 단위 데이터들을 순차적으로 생성하는 제 1 버퍼부, 상기 섹터 단위 데이터들에 대하여 이씨씨 인코딩을 수행하고, 복수의 패리티 코드들을 순차적으로 생성하는 인코딩부, 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 인터리빙하여 복수의 출력 버퍼들에 저장하는 제 2 버퍼부 및 상기 출력 버퍼들에 저장된 상기 인터리빙 데이터들을 상기 적어도 하나 이상의 메모리 장치들에 출력하는 메모리 출력부를 포함할 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 메모리 출력부는 상기 인터리빙 데이터들에 대하여 이씨씨 인코딩을 수행하여 상기 적어도 하나 이상의 메모리 장치들에 출력할 수 있다. 여기서, 상기 이씨씨 인코딩은 상기 인터리빙 데이터들의 전부에 대해서 수행되거나, 또는 상기 인터리빙 데이터들의 일부에 대해서만 수행될 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 독출부는 상기 독출 데이터들을 저장하는 제 3 버퍼부, 상기 독출 데이터들에 대하여 이씨씨 디코딩(ECC decoding)을 수행하고, 상기 독출 데이터들의 에러를 검출하여 정정하는 디코딩부 및 상기 독출 데이터들에 기초하여 생성된 상기 출력 데이터들을 상기 호스트 장치로 출력하는 호스트 출력부를 포함할 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 상기 출력 버퍼들에 그룹 별로 인터리빙하여 저장할 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 그룹들의 일부 그룹만을 상기 출력 버퍼들에 인 터리빙하여 저장하며, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 나머지 그룹은 상기 출력 버퍼들에 순차적으로 저장할 수 있다.
상기 메모리 컨트롤러의 실시예들에 따르면, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 그룹들의 일부 그룹만을 상기 출력 버퍼들에 인터리빙하여 저장하며, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 나머지 그룹은 상기 적어도 하나 이상의 메모리 장치들에 직접 출력할 수 있다.
본 발명의 실시예들에 따른 인터리버 장치는 버퍼의 개수 및 사이즈를 감소시킨 간단한 구조를 가지면서도, 페이지들의 그룹 별로 서로 다른 인터리빙을 수행할 수 있고, 페이지들의 그룹 별로 선택적인 인터리빙을 수행할 수 있다.
본 발명의 실시예들에 따른 메모리 컨트롤러는 입력 데이터를 메모리 장치에 기입함에 있어서 페이지들의 그룹 별로 서로 다른 인터리빙을 수행할 수 있고, 선택적으로 인터리빙을 수행할 수 있다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지 다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 인터리버 장치를 나타내는 블록도이다.
도 1을 참조하면, 인터리버 장치(100)는 제 1 버퍼부(120), 인코딩부(140), 제 2 버퍼부(160) 및 출력부(180)를 포함할 수 있다.
제 1 버퍼부(120)는 외부에서 입력되는 입력 데이터(IDS)를 섹터 단위로 버퍼링하여 섹터 단위 데이터들(SUD)을 순차적으로 생성하고, 생성된 섹터 단위 데이터들(SUD)을 인코딩부(140) 및 제 2 버퍼부(160)에 순차적으로 전송한다. 입력 데이터(IDS)는 시퀀스(sequence) 형태의 데이터로서 호스트 장치로부터 출력되어 호 스트 인터페이스를 거쳐 인터리버 장치(100)에 입력될 수 있다. 예를 들어, 호스트 장치는 개인용 컴퓨터일 수 있고, 호스트 인터페이스는 범용직렬버스(USB), 멀티미디어 카드(MultiMedia Card; MMC), 피씨아이(Peripheral Component Interconnection; PCI), 피씨아이-익스프레스(PCI-Express), 에이티에이(Advanced Technology Attachment; ATA), 직렬-에이티에이(Serial ATA), 병렬-에이티에이(Parallel ATA), 스카시(Small Computer System Interface; SCSI), 이에스디아이(Enhanced Small Disk Interface; ESDI), 에스에이에스(Serial Attached SCSI; SAS) 및 아이디이(Integrated Drive Electronics; IDE) 등과 같은 표준 프로토콜로 구성될 수 있다. 호스트 인터페이스가 에스에이에스(SAS)로 구성되는 경우에는 비교적 고속의 데이터 전송이 가능하며, 복수의 버스를 이용하여 장치 간에 접속을 수행하는 에스에이에스 와이드 링크(SAS wide link)가 사용될 수 있다. 일 실시예에서, 제 1 버퍼부(100)는 섹터 사이즈를 갖는 하나의 입력 버퍼를 포함할 수 있고, 입력 버퍼는 에스램(SRAM) 또는 디램(DRAM)으로 구현될 수 있다.
인코딩부(140)는 제 1 버퍼부(120)로부터 순차적으로 전송된 섹터 단위 데이터들(SUD)에 대하여 이씨씨(Error Check and Correction; ECC) 인코딩을 수행하여 패리티 코드들(PRT)을 순차적으로 생성한다. 인코딩부(140)에서 순차적으로 생성되는 패리티 코드들(PRT)은 제 1 버퍼부(120)에서 순차적으로 전송되는 섹터 단위 데이터들(SUD)에 각각 대응된다. 이씨씨 인코딩 알고리즘으로는 섹터 단위의 데이터 당 1비트의 에러 정정이 가능한 해밍 코드(hamming code) 방식 또는 섹터 단위의 데이터 당 여러 비트의 에러 정정이 가능한 BCH(Bose Chaudhuri Hocquenghem) 코드 방식이 이용될 수 있다. 다만, 이것은 하나의 예시로서 이씨씨 인코딩 알고리즘으로 다양한 코드 방식이 이용될 수 있다.
제 2 버퍼부(160)는 제 1 버퍼부(120)로부터 섹터 단위 데이터들(SUD)을 전송받고 인코딩부(140)로부터 패리티 코드들(PRT)을 전송받는다. 제 2 버퍼부(160)는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 출력 버퍼들(166a, ..., 166n)에 인터리빙하여 저장한다. 일 실시예에서, 제 2 버퍼부(160)는 데이터 선택 신호(SEL)에 응답하여 제 1 버퍼부(120)로부터 전송되는 섹터 단위 데이터들(SUD) 및 인코딩부(140)로부터 전송되는 패리티 코드들(PRT)을 선택적으로 전송하는 제 1 멀티플렉서(162), 제 1 멀티플렉서(162)에서 전송되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 저장하는 출력 버퍼들(166a, ..., 166n) 및 버퍼 선택 신호(BSS)에 응답하여 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 인터리빙하기 위하여 출력 버퍼들(166a, ..., 166n)을 번갈아 선택하는 제 2 멀티플렉서(164)를 포함할 수 있다. 데이터 선택 신호(SEL) 및 버퍼 선택 신호(BSS)는 메모리 컨트롤러 등에 구비되는 중앙 처리 유닛(Central Processing Unit; CPU)이 제공하는 신호일 수 있다.
실시예에 따라, 제 2 버퍼부(160)의 출력 버퍼들(166a, ..., 166n)은 에스램(Static Random Access Memory; SRAM) 또는 디램(Dynamic Random Access Memory; DRAM)으로 구현될 수 있고, 출력 버퍼들(166a, ..., 166n)의 사이즈는 사용자의 설계에 따라 다양하게 변경될 수 있다. 바람직하게, 출력 버퍼들(166a, ..., 166n)의 사이즈는 섹터 사이즈보다는 크거나 같고, 페이지 사이즈보다는 작거나 같게 설계 될 수 있다. 예를 들어, 출력 버퍼들(166a, ..., 166n)의 사이즈가 페이지 사이즈인 경우, 출력 버퍼들(166a, ..., 166n)에 각각 한 페이지의 분량의 인터리빙 데이터(INTD1, ..., INTDn)가 저장되면, 이러한 인터리빙 데이터들(INTD1, ..., INTDn)은 기입 커맨드에 의하여 적어도 하나 이상의 메모리 장치들에 구비되는 페이지 버퍼를 거쳐 메모리 셀 어레이에 저장될 수 있다.
제 2 버퍼부(160)는 다양한 방식으로 인터리빙을 수행할 수 있다. 일 실시예에서, 제 2 버퍼부(160)는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)의 그룹 예를 들어, 페이지들의 그룹 별로 서로 다른 방식의 인터리빙을 수행하거나, 또는 페이지들의 그룹 중에서 일부 그룹에 대해서는 인터리빙을 수행하지 않는 선택적인 인터리빙을 수행할 수 있다. 실시예에 따라, 제 2 버퍼부(160)는 제 1 멀티플렉서(162)에 입력되는 데이터 선택 신호(SEL) 및 제 2 멀티플렉서(164)에 입력되는 버퍼 선택 신호(BSS)를 제어함으로써 페이지 별로 서로 다른 방식의 인터리빙을 수행하거나, 또는 선택적인 인터리빙을 수행할 수 있다. 또한, 인터리빙의 깊이(depth)는 출력 버퍼들(166a, ..., 166n)의 개수에 상응할 수 있다.
구체적으로, 제 2 버퍼부(160)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 복수의 그룹들로 나누고, 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 그룹 별로 인터리빙하여 출력 버퍼들(166a, ..., 166n)에 저장할 수 있다. 예를 들어, 제 2 버퍼부(160)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 2개의 그룹으로 나누고, 제 1 그룹은 출력 버퍼들(166a, ..., 166n)의 제 1 그룹에 인터리빙하여 저장하며, 제 2 그룹은 출력 버퍼들(166a, ..., 166n)의 제 2 그룹에 인터리빙하여 저장할 수 있다. 또한, 제 2 버퍼부(160)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 복수의 그룹들로 나누고, 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)의 그룹들 중에서 일부 그룹에 대해서만 인터리빙하여 출력 버퍼들(166a, ..., 166n)에 저장할 수 있다. 예를 들어, 제 2 버퍼부(160)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 2개의 그룹으로 나누고, 제 1 그룹은 출력 버퍼들(166a, ..., 166n)의 제 1 그룹에 인터리빙하여 저장하며, 제 2 그룹은 출력 버퍼들(166a, ..., 166n)의 제 2 그룹에 순차적으로 저장할 수 있다.
출력부(180)는 제 2 버퍼부(160)의 출력 버퍼들(166a, ..., 166n)에 저장된 인터리빙 데이터들(INTD1, ..., INTDn)을 적어도 하나 이상의 메모리 장치들에 출력할 수 있다. 일 실시예에서, 출력부(180)는 기입 선택 신호(PSG)에 응답하여 출력 버퍼들(166a, ..., 166n)을 선택하는 제 3 멀티플렉서(182)로 구현될 수 있다. 제 3 멀티플렉서(182)는 기입 선택 신호(PSG)에 응답하여 출력 버퍼들(166a, ..., 166n)을 선택함으로써 출력 버퍼들(166a, ..., 166n)에 저장되어 있는 인터리빙 데이터들(INTD1, ..., INTDn)을 적어도 하나 이상의 메모리 장치들에 구비된 페이지 버퍼들에 출력할 수 있다. 이러한 적어도 하나 이상의 메모리 장치들은 싱글 레벨 셀(SLC) 타입 또는 멀티 레벨 셀(MLC) 타입의 낸드 플래시 메모리 장치일 수 있고, 단일 채널 또는 멀티 채널을 구성할 수 있다.
상기에서 설명한 바와 같이, 인터리버 장치(100)는 제 1 버퍼부(120), 인코 딩부(140), 제 2 버퍼부(160) 및 출력부(180)를 포함함으로써 페이지들의 그룹 별로 서로 다른 인터리빙을 수행할 수 있고, 선택적인 인터리빙을 수행할 수 있다. 또한, 인터리버 장치(100)는 제 1 버퍼부(120)에 섹터 사이즈의 입력 버퍼만을 구비하고, 제 2 버퍼부(160)에 섹터 사이즈에서 페이지 사이즈의 출력 버퍼들(166a, ..., 166n)만을 구비하기 때문에, 인터리빙을 수행하기 위한 전체 버퍼의 개수 및 사이즈를 감소시킬 수 있다. 이와 같이, 인터리버 장치(100)는 간단한 구조를 가지면서도 다양한 방식으로 인터리빙을 수행할 수 있다.
도 2는 도 1의 인터리버 장치에 의하여 싱글 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 일 예를 나타내는 도면이다.
도 2를 참조하면, 인터리버 장치(100)는 제 2 버퍼부(160)에 2개의 출력 버퍼들(BUFFER1, BUFFER2)을 포함할 수 있고, 2개의 출력 버퍼들(BUFFER1, BUFFER2)은 각각 4개의 섹터 사이즈를 가질 수 있다. 도 2에서는 인터리빙이 2개의 출력 버퍼들(BUFFER1, BUFFER2) 전체에 수행되므로 인터리빙의 깊이(depth)는 2가 된다.
싱글 레벨 셀 타입의 낸드 플래시 메모리 장치에서는 하나의 셀에는 1비트의 데이터가 저장되기 때문에, 일반적으로 1개의 워드라인은 1개의 페이지(PAGE)에 대응될 수 있다. 도 2는 1개의 워드라인에 대응되는 1개의 페이지(PAGE)가 8개의 섹터들(SECTOR1, ..., SECTOR8)을 포함하고 있는 경우를 나타내고 있다. 인터리버 장치(100)는 호스트 장치로부터 호스트 인터페이스를 거쳐 순차적으로 입력되는 입력 데이터(IDS)를 제 1 버퍼부(120)에서 섹터 단위로 버퍼링하여 섹터 단위 데이터들(SUD)을 순차적으로 생성하고, 인코딩부(140)에서 섹터 단위 데이터들(SUD)에 대 응되는 패리티 코드들(PRT)을 순차적으로 생성한다. 인터리버 장치(100)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)에 대하여 제 2 버퍼부(160)에서 인터리빙을 수행한다.
구체적으로, 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)가 저장된다. 이후, 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 1 서브 섹터(S21)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 2 섹터(SECTOR2)의 제 2 서브 섹터(S22)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 3 서브 섹터(S23)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 2 섹터(SECTOR2)의 제 4 서브 섹터(S24)가 저장된다. 이러한 인터리빙이 제 3 내지 제 8 섹터(SECTOR3, ..., SECTOR8)까지 순차적으로 수행된다. 이와 같이, 제 1 출력 버퍼(BUFFER1)에는 제 1 인터리빙 데이터(S11, S13, S21, S23, S31, S33, S41, S43, S51, S53, S61, S63, S71, S73, S81, S83)가 저장될 수 있고, 제 2 출력 버퍼(BUFFER2)에는 제 2 인터리빙 데이터(S12, S14, S22, S24, S32, S34, S42, S44, S52, S54, S62, S64, S72, S74, S82, S84)가 저장될 수 있다.
도 3은 도 1의 인터리버 장치에 의하여 싱글 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 다른 예를 나타내는 도면이다.
도 3을 참조하면, 인터리버 장치(100)는 제 2 버퍼부(160)에 4개의 출력 버 퍼들(BUFFER1, ..., BUFFER4)을 포함할 수 있고, 4개의 출력 버퍼들(BUFFER1, ..., BUFFER4)은 각각 2개의 섹터 사이즈를 가질 수 있다. 도 3에서는 인터리빙이 4개의 출력 버퍼들(BUFFER1, ..., BUFFER4) 전체에 수행되므로 인터리빙의 깊이는 4가 된다.
도 3은 1개의 워드라인에 대응되는 1개의 페이지(PAGE)가 8개의 섹터들(SECTOR1, ..., SECTOR8)을 포함하고 있는 경우를 나타내고 있다. 구체적으로, 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)가 저장되며, 제 3 출력 버퍼(BUFFER3)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)가 저장된다. 이후, 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 1 서브 섹터(S21)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 2 섹터(SECTOR2)의 제 2 서브 섹터(S22)가 저장되며, 제 3 출력 버퍼(BUFFER3)에 제 2 섹터(SECTOR2)의 제 3 서브 섹터(S23)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 2 섹터(SECTOR2)의 제 4 서브 섹터(S24)가 저장된다. 이러한 인터리빙은 제 3 내지 제 8 섹터(SECTOR3, ..., SECTOR8)까지 순차적으로 수행된다. 이와 같이, 제 1 출력 버퍼(BUFFER1)에는 제 1 인터리빙 데이터(S11, S21, S31, S41, S51, S61, S71, S81)가 저장될 수 있고, 제 2 출력 버퍼(BUFFER2)에는 제 2 인터리빙 데이터(S12, S22, S32, S42, S52, S62, S72, S82)가 저장될 수 있으며, 제 3 출력 버퍼(BUFFER3)에는 제 3 인터리빙 데이터(S13, S23, S33, S43, S53, S63, S73, S83)가 저장될 수 있고, 제 4 출력 버 퍼(BUFFER4)에는 제 4 인터리빙 데이터(S14, S24, S34, S44, S54, S64, S74, S84)가 저장될 수 있다.
도 4는 도 1의 인터리버 장치에 의하여 싱글 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 또 다른 예를 나타내는 도면이다.
도 4를 참조하면, 인터리버 장치(100)는 제 2 버퍼부(160)에 8개의 출력 버퍼들(BUFFER1, ..., BUFFER8)을 포함할 수 있고, 8개의 출력 버퍼들(BUFFER1, ..., BUFFER8)은 각각 1개의 섹터 사이즈를 가질 수 있다. 도 4에서는 인터리빙이 8개의 출력 버퍼들(BUFFER1, ..., BUFFER8) 전체에 수행되므로 인터리빙의 깊이는 8이 된다.
도 4는 1개의 워드라인에 대응되는 1개의 페이지(PAGE)가 8개의 섹터들(SECTOR1, ..., SECTOR8)을 포함하고 있는 경우를 나타내고 있다. 구체적으로, 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)의 일부가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)의 다른 일부가 저장되며, 제 3 출력 버퍼(BUFFER3)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)의 일부가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)의 다른 일부가 저장된다. 또한, 제 5 출력 버퍼(BUFFER5)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)의 일부가 저장되고, 제 6 출력 버퍼(BUFFER6)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)의 다른 일부가 저장되며, 제 7 출력 버퍼(BUFFER7)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)의 일부가 저장되고, 제 8 출력 버퍼(BUFFER8)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)의 다른 일부가 저장된다. 이러한 인터리빙은 제 2 내지 제 8 섹터(SECTOR2, ..., SECTOR8)까지 순차적으로 수행된다.
이와 같이, 제 1 출력 버퍼(BUFFER1)에는 제 1 인터리빙 데이터(S11_1, S21_1, S31_1, S41_1, S51_1, S61_1, S71_1, S81_1)가 저장될 수 있고, 제 2 출력 버퍼(BUFFER2)에는 제 2 인터리빙 데이터(S11_2, S21_2, S31_2, S41_2, S51_2, S61_2, S71_2, S81_2)가 저장될 수 있으며, 제 3 출력 버퍼(BUFFER3)에는 제 3 인터리빙 데이터(S12_1, S22_1, S32_1, S42_1, S52_1, S62_1, S72_1, S82_1)가 저장될 수 있고, 제 4 출력 버퍼(BUFFER4)에는 제 4 인터리빙 데이터(S12_2, S22_2, S32_2, S42_2, S52_2, S62_2, S72_2, S82_2)가 저장될 수 있다. 마찬가지로, 제 5 출력 버퍼(BUFFER5)에는 제 5 인터리빙 데이터(S13_1, S23_1, S33_1, S43_1, S53_1, S63_1, S73_1, S83_1)가 저장될 수 있고, 제 6 출력 버퍼(BUFFER6)에는 제 6 인터리빙 데이터(S13_2, S23_2, S33_2, S43_2, S53_2, S63_2, S73_2, S83_2)가 저장될 수 있으며, 제 7 출력 버퍼(BUFFER7)에는 제 7 인터리빙 데이터(S14_1, S24_1, S34_1, S44_1, S54_1, S64_1, S74_1, S84_1)가 저장될 수 있고, 제 8 출력 버퍼(BUFFER8)에는 제 8 인터리빙 데이터(S14_2, S24_2, S34_2, S44_2, S54_2, S64_2, S74_2, S84_2)가 저장될 수 있다.
도 5는 도 1의 인터리버 장치에 의하여 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 일 예를 나타내는 도면이다.
도 5를 참조하면, 인터리버 장치(100)는 제 2 버퍼부(160)에 2개의 출력 버퍼들(BUFFER1, BUFFER2)을 포함할 수 있고, 2개의 출력 버퍼들(BUFFER1, BUFFER2) 은 각각 4개의 섹터 사이즈를 가질 수 있다. 도 5에서는 인터리빙이 2개의 출력 버퍼들(BUFFER1, BUFFER2) 전체에 수행되므로 인터리빙의 깊이는 2가 된다.
멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서는 하나의 셀에 복수의 비트(예를 들어, 2비트)의 데이터가 저장되기 때문에, 일반적으로 1개의 워드라인은 2개의 페이지(PAGE1, PAGE2)에 대응될 수 있다. 도 5는 1개의 워드라인에 대응되는 제 1 페이지(PAGE1)가 4개의 섹터들(SECTOR1, ..., SECTOR4)을 포함하고, 제 2 페이지(PAGE2)가 4개의 섹터들(SECTOR5, ..., SECTOR8)을 포함하고 있는 경우를 나타내고 있다. 인터리버 장치(100)는 호스트 장치로부터 호스트 인터페이스를 거쳐 순차적으로 입력되는 입력 데이터(IDS)를 제 1 버퍼부(120)에서 섹터 단위로 버퍼링하여 섹터 단위 데이터들(SUD)을 순차적으로 생성하고, 인코딩부(140)에서 섹터 단위 데이터들(SUD)에 대응되는 패리티 코드들(PRT)을 순차적으로 생성한다. 인터리버 장치(100)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)에 대하여 제 2 버퍼부(160)에서 인터리빙을 수행한다.
구체적으로, 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)가 저장된다. 이후, 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 1 서브 섹터(S21)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 2 섹터(SECTOR2)의 제 2 서브 섹터(S22)가 저장된다. 또한, 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 3 서브 섹터(S23)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 2 섹터(SECTOR2)의 제 4 서브 섹터(S24)가 저장된다. 이러한 인터리빙이 제 3 내지 제 8 섹터(SECTOR3, ..., SECTOR8)까지 순차적으로 수행된다. 이와 같이, 제 1 출력 버퍼(BUFFER1)에는 제 1 인터리빙 데이터(S11, S13, S21, S23, S31, S33, S41, S43, S51, S53, S61, S63, S71, S73, S81, S83)가 저장될 수 있고, 제 2 출력 버퍼(BUFFER2)에는 제 2 인터리빙 데이터(S12, S14, S22, S24, S32, S34, S42, S44, S52, S54, S62, S64, S72, S74, S82, S84)가 저장될 수 있다.
도 6은 도 1의 인터리버 장치에 의하여 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 다른 예를 나타내는 도면이다.
도 6을 참조하면, 인터리버 장치(100)는 제 2 버퍼부(160)에 4개의 출력 버퍼들(BUFFER1, ..., BUFFER4)을 포함할 수 있고, 4개의 출력 버퍼들(BUFFER1, ..., BUFFER4)은 각각 2개의 섹터 사이즈를 가질 수 있다. 도 6에서는 페이지들(PAGE1, ..., PAGE4)을 2개의 그룹으로 나누고, 그룹 별로 인터리빙을 수행하기 때문에 인터리빙 깊이는 4가 아니라 2가 된다. 도 2에서는 인터리빙이 2개의 출력 버퍼들(BUFFER1, BUFFER2) 전체에 수행되므로 인터리빙의 깊이(depth)가 2가 된다.
멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서는 하나의 셀에 복수의 비트(예를 들어, 4비트)의 데이터가 저장되기 때문에, 일반적으로 1개의 워드라인은 4개의 페이지(PAGE1, ..., PAGE4)에 대응될 수 있다. 도 6은 1개의 워드라인에 대응되는 제 1 페이지(PAGE1)가 2개의 섹터들(SECTOR1, SECTOR2)을 포함하고, 제 2 페이지(PAGE2)가 2개의 섹터들(SECTOR3, SECTOR4)을 포함하며, 제 3 페이지(PAGE3) 가 2개의 섹터들(SECTOR5, SECTOR6)을 포함하고, 제 4 페이지(PAGE4)가 2개의 섹터들(SECTOR7, SECTOR8)을 포함하는 경우를 나타내고 있다. 다만, 도 6에서는 제 1 내지 제 4 페이지(PAGE1, ..., PAGE4)를 제 1 내지 제 4 출력 버퍼들(BUFFER1, ..., BUFFER4) 전체에 인터리빙을 하는 것이 아니라, 제 1 페이지(PAGE1)와 제 4 페이지(PAGE4) 별로 인터리빙을 수행하고, 제 2 페이지(PAGE2)와 제 3 페이지(PAGE3) 별로 인터리빙을 수행한다.
구체적으로, 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)가 저장된다. 이후, 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 1 서브 섹터(S21)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 2 섹터(SECTOR2)의 제 2 서브 섹터(S22)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 3 서브 섹터(S23)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 2 섹터(SECTOR2)의 제 4 서브 섹터(S24)가 저장된다.
이후, 제 2 출력 버퍼(BUFFER2)에 제 3 섹터(SECTOR3)의 제 1 서브 섹터(S31)가 저장되고, 제 3 출력 버퍼(BUFFER3)에 제 3 섹터(SECTOR3)의 제 2 서브 섹터(S32)가 저장된다. 제 2 출력 버퍼(BUFFER2)에 제 3 섹터(SECTOR3)의 제 3 서브 섹터(S13)가 저장되고, 제 3 출력 버퍼(BUFFER3)에 제 3 섹터(SECTOR3)의 제 4 서브 섹터(S34)가 저장된다. 또한, 제 2 출력 버퍼(BUFFER2)에 제 4 섹터(SECTOR4) 의 제 1 서브 섹터(S41)가 저장되고, 제 3 출력 버퍼(BUFFER3)에 제 4 섹터(SECTOR4)의 제 2 서브 섹터(S42)가 저장된다. 제 3 출력 버퍼(BUFFER3)에 제 4 섹터(SECTOR4)의 제 3 서브 섹터(S43)가 저장되고, 제 3 출력 버퍼(BUFFER3)에 제 4 섹터(SECTOR4)의 제 4 서브 섹터(S44)가 저장된다. 마찬가지로, 제 5 내지 제 6 섹터(SECTOR5, SECTOR6)도 제 2 및 제 3 출력 버퍼(BUFFER2, BUFFER3)에 인터리빙되어 저장된다.
이후, 제 7 내지 제 8 섹터(SECTOR7, SECTOR8)는 다시 제 1 및 제 4 출력 버퍼(BUFFER2, BUFFER3)에 인터리빙되어 저장된다. 이와 같이, 제 1 출력 버퍼(BUFFER1)에는 제 1 인터리빙 데이터(S11, S13, S21, S23, S71, S733, S81, S83)가 저장될 수 있고, 제 2 출력 버퍼(BUFFER2)에는 제 2 인터리빙 데이터(S31, S33, S41, S43, S51, S53, S61, S63)가 저장될 수 있으며, 제 3 출력 버퍼(BUFFER3)에는 제 3 인터리빙 데이터(S32, S34, S42, S44, S52, S54, S62, S64)가 저장될 수 있으며, 제 4 출력 버퍼(BUFFER4)에는 제 4 인터리빙 데이터(S12, S14, S22, S24, S72, S74, S82, S84)가 저장될 수 있다.
도 7은 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 도 1의 인터리버 장치에 의하여 인터리빙이 수행된 또 다른 예를 나타내는 도면이다.
도 7을 참조하면, 인터리버 장치(100)는 제 2 버퍼부(160)에 4개의 출력 버퍼들(BUFFER1, ..., BUFFER4)을 포함할 수 있고, 4개의 출력 버퍼들(BUFFER1, ..., BUFFER4)은 각각 2개의 섹터 사이즈를 가질 수 있다. 도 7에서는 페이지들(PAGE1, ..., PAGE4)을 2개의 그룹으로 나누고, 일부 그룹(PAGE2, PAGE3)에 대해서 는 인터리빙을 수행하지 않기 때문에, 인터리빙 깊이는 4가 아니라 2가 된다.
멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서는 하나의 셀에 복수의 비트(예를 들어, 4비트)의 데이터가 저장되기 때문에, 일반적으로 1개의 워드라인은 4개의 페이지(PAGE1, ..., PAGE4)에 대응될 수 있다. 도 7은 1개의 워드라인에 대응되는 제 1 페이지(PAGE1)가 2개의 섹터들(SECTOR1, SECTOR2)을 포함하고, 제 2 페이지(PAGE2)가 2개의 섹터들(SECTOR3, SECTOR4)을 포함하며, 제 3 페이지(PAGE3)가 2개의 섹터들(SECTOR5, SECTOR6)을 포함하고, 제 4 페이지(PAGE4)가 2개의 섹터들(SECTOR7, SECTOR8)을 포함하는 경우를 나타내고 있다. 다만, 도 7에서는 제 1 내지 제 4 페이지(PAGE1, ..., PAGE4)를 제 1 내지 제 4 출력 버퍼들(BUFFER1, ..., BUFFER4) 전체에 인터리빙을 수행하는 것이 아니라, 제 1 페이지(PAGE1)와 제 4 페이지(PAGE4)로 구성된 제 1 그룹은 인터리빙을 수행하고, 제 2 페이지(PAGE2)와 제 3 페이지(PAGE3)로 구성된 제 2 그룹은 인터리빙을 수행하지 않는다.
구체적으로, 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)가 저장된다. 또한, 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 1 서브 섹터(S21)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 2 섹터(SECTOR2)의 제 2 서브 섹터(S22)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 3 서브 섹터(S23)가 저장되고, 제 4 출력 버퍼(BUFFER4)에 제 2 섹터(SECTOR2)의 제 4 서브 섹터(S24)가 저장된다.
이후, 제 2 출력 버퍼(BUFFER2)에 제 3 내지 제 4 섹터(SECTOR3, SECTOR4)가 순차적으로 저장되고, 제 3 출력 버퍼(BUFFER3)에 제 5 내지 제 6 섹터(SECTOR5, SECTOR6)가 순차적으로 저장된다. 즉, 제 3 내지 제 4 섹터(SECTOR3, SECTOR4)로 구성된 제 2 페이지(PAGE2) 및 제 5 내지 제 6 섹터(SECTOR5, SECTOR6)로 구성된 제 3 페이지(PAGE3)에는 인터리빙이 수행되지 않고, 제 2 내지 제 3 출력 버퍼(BUFFER2)에 순차적으로 저장된다. 이후, 제 7 내지 제 8 섹터(SECTOR7, SECTOR8)는 다시 제 1 및 제 4 출력 버퍼(BUFFER1, BUFFER4)에 인터리빙되어 저장된다.
이와 같이, 제 1 출력 버퍼(BUFFER1)에는 제 1 인터리빙 데이터(S11, S13, S21, S23, S71, S733, S81, S83)가 저장될 수 있고, 제 2 출력 버퍼(BUFFER2)에는 제 2 페이지 데이터(S31, S32, S33, S34, S41, S42, S43, S44)가 저장될 수 있으며, 제 3 출력 버퍼(BUFFER3)에는 제 3 페이지 데이터(S51, S52, S53, S54, S61, S62, S63, S64)가 저장될 수 있으며, 제 4 출력 버퍼(BUFFER4)에는 제 4 인터리빙 데이터(S12, S14, S22, S24, S72, S74, S82, S84)가 저장될 수 있다.
도 8은 본 발명의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 8을 참조하면, 메모리 컨트롤러(300)는 기입부(310) 및 독출부(315)를 포함할 수 있다. 기입부(310)는 도 1의 인터리버 장치(100)에 상응할 수 있다. 실시예에 따라, 메모리 컨트롤러(300)는 호스트 인터페이스(320), 메모리 인터페이 스(330) 및 중앙 처리부(340)를 더 포함할 수 있다.
기입부(310)는 호스트 장치(390)로부터 입력되는 입력 데이터(IDS)를 섹터 단위로 버퍼링한 섹터 단위 데이터들에 기초하여 인터리빙 데이터들(INTD)을 생성하고, 기입 커맨드 및 기입 어드레스에 응답하여 인터리빙 데이터들(INTD)을 적어도 하나 이상의 메모리 장치들(380)에 기입한다. 독출부(315)는 독출 커맨드 및 독출 어드레스에 응답하여 적어도 하나 이상의 메모리 장치들(380)로부터 독출 데이터들(RD)을 독출하고, 독출 데이터들(RD)에 기초하여 출력 데이터들(ODS)을 생성하며, 출력 데이터들(ODS)을 호스트 장치(390)로 출력한다. 호스트 인터페이스(320)는 입력 데이터(IDS) 및 출력 데이터(ODS)에 대하여 호스트 장치(390)와의 인터페이싱을 수행한다. 메모리 인터페이스(330)는 인터리빙 데이터(INTD) 및 독출 데이터(RD)에 대하여 적어도 하나 이상의 메모리 장치들(380)과의 인터페이싱을 수행한다. 중앙 처리부(340)는 기입부(310) 및 독출부(315)를 제어하는 복수의 제어 신호들을 생성하여 전송함으로써 기입부(310) 및 독출부(315)를 제어할 수 있다. 실시예에 따라, 메모리 컨트롤러(300)가 호스트 장치(390) 또는 적어도 하나 이상의 메모리 장치들(380) 각각에 빌트 인 형태로 구현될 수 있다.
일반적으로, 낸드 플래시 메모리 장치(380)에서는 메모리 셀 어레이의 각각의 셀에 랜덤 억세스(random access)가 불가하기 때문에, 기입 및 독출 동작은 페이지 단위로 수행하고, 소거 동작은 블록 단위로 수행한다. 따라서, 낸드 플래시 메모리 장치(380)에서는 페이지 단위의 기입 및 독출 동작 시에 에러가 발생할 수 있다. 이에, 낸드 플래시 메모리 장치(380)는 기입 및 독출 동작 시 발생할 수 있 는 에러를 정정하기 위하여 에러 정정 코드를 이용하고 있는데, 낸드 플래시 메모리 장치(380)의 페이지 버퍼의 크기가 증가함에 따라 에러 정정 코드 즉, 패리티 코드가 처리해야 하는 단위도 증가하고 있다. 그러나, 하나의 섹터에 대한 에러 정정 코드의 정정 능력에는 한계가 있기 때문에, 낸드 플래시 메모리 장치(380)의 페이지 버퍼의 크기가 증가함에 따라 에러 정정이 정확하게 이루어지지 않는다는 문제점이 있다. 이러한 문제점을 해결하기 위하여, 메모리 컨트롤러(300)는 기입부(310) 및 독출부(315)를 이용하여 인터리빙 기능과 ECC 검출 및 정정 기능을 동시에 수행함으로써 페이지들에 포함된 섹터들의 에러를 분산시킬 수 있다.
도 9는 도 8의 메모리 컨트롤러의 기입부를 나타내는 블록도이다.
도 9를 참조하면, 기입부(310)는 제 1 버퍼부(311), 인코딩부(312), 제 2 버퍼부(313) 및 메모리 출력부(314)를 포함할 수 있다.
제 1 버퍼부(311)는 입력 데이터(IDS)를 섹터 단위로 버퍼링하여 섹터 단위 데이터들을 순차적으로 생성하고, 인코딩부(312)는 섹터 단위 데이터들에 대하여 이씨씨 인코딩을 수행하고, 섹터 단위 데이터들에 대응되는 패리티 코드들을 순차적으로 생성하며, 제 2 버퍼부(313)는 섹터 단위 데이터들 및 패리티 코드들을 인터리빙하여 출력 버퍼들에 저장한다. 메모리 출력부(314)는 출력 버퍼들에 저장된 인터리빙 데이터들(INTD)을 메모리 인터페이스부(330)를 거쳐 적어도 하나 이상의 메모리 장치들(380)에 출력한다. 상술한 바와 같이, 도 1의 인터리버 장치(100)에 상응하는 기입부(310)는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)의 그룹 예를 들어, 페이지들의 그룹 별로 서로 다른 방식의 인터리빙을 수행하거나, 또는 페이지들의 그룹 중에서 일부 그룹에 대해서는 인터리빙을 수행하지 않는 선택적인 인터리빙을 수행할 수 있다. 다만, 이에 대해서는 상술한 바 있으므로, 중복되는 설명은 생략하기로 한다.
도 10은 도 8의 메모리 컨트롤러의 독출부를 나타내는 블록도이다.
도 10을 참조하면, 독출부(315)는 제 3 버퍼부(316), 디코딩부(317) 및 호스트 출력부(318)를 포함할 수 있다.
제 3 버퍼부(316)는 독출 커맨드에 응답하여 낸드 플래시 메모리 장치(380)의 메모리 셀 어레이에 저장되어 있는 독출 데이터들(RD)이 페이지 버퍼를 거쳐 메모리 컨트롤러(300)에 입력되면, 독출 데이터들(RD)을 임시적으로 저장하였다가 순차적으로 디코딩부(317)에 출력한다. 디코딩부(317)는 제 3 버퍼부(316)에서 출력되는 독출 데이터들(RD)에 대하여 이씨씨 디코딩(ECC decoding)을 수행하고, 독출 데이터들(RD)의 에러를 검출하여 정정한다. 일 실시예에서, 블록 코드(block code) 방식으로 구현되는 디코딩부(317)는 신드롬 연산(Syndrome Computation; SC) 블록, 키 연산(Key Equation Solver; KES) 블록, 탐색(Chien Searching; CS) 블록, 에러 평가(Error Evaluator; EE) 블록을 구비할 수 있다. 구체적으로, 신드롬 연산 블록은 독출 데이터들(RD)에 대한 에러 유무를 검사하기 위하여 신드롬을 계산한다. 키 연산 블록은 에러 위치 방정식의 계수를 계산한다. 탐색 블록은 에러 위치 방정식의 계수에 기초하여 에러 위치 방정식의 해를 계산한다. 에러 평가 블록은 에러 위치 방정식의 해에 기초하여 에러 위치를 표시한다. 이후, 디코딩부(317)는 에러 위치에 기초하여 에러를 정정하고, 호스트 출력부(318)에 독출 데이터들(RD)을 출력 한다.
다른 실시예에서, 비터비 (viterbi) 방식으로 구현되는 디코딩부(317)는 브랜치 매트릭스 연산(Branch matrics calculation; BMC) 블록, 가산 비교(Add Compare Select; ACS) 블록, 스테이트 매트릭스 메모리(State Metrics Memory; SMM) 블록, 및 서바이버 경로 메모리(Survivor Path Memory; SPM) 블록을 포함할 수 있다. 구체적으로, 브랜치 매트릭스 연산 블록은 독출 데이터들(RD)에 대한 에러 유무를 검사하기 위하여 브랜치 매트릭스를 계산한다. 가산 비교 블록은 브랜치 매트릭스에 이전 상태 매트릭스를 더하여 새로운 상태 매트릭스를 계산한다. 스테이트 매트릭스 메모리 블록은 가산 비교 블록에서 계산된 새로운 상태 매트릭스를 저장한다. 서바이버 경로 메모리 블록은 새로운 상태 매트릭스에 기초하여 에러를 정정하고, 호스트 출력부(318)에 독출 데이터들(RD)을 출력한다. 나아가, 디코딩부(317)는 연접 코드(concatenated code) 방식으로 구현될 수도 있다. 호스트 출력부(318)는 독출 데이터들(RD)에 기초하여 출력 데이터들(ODS)을 생성하고, 출력 데이터들(ODS)을 호스트 인터페이스(320)를 거쳐 호스트 장치(390)로 출력한다.
도 11은 본 발명의 다른 실시예에 따른 인터리버 장치를 나타내는 블록도이다.
도 11을 참조하면, 인터리버 장치(200)는 제 1 버퍼부(220), 인코딩부(240), 제 2 버퍼부(260) 및 출력부(280)를 포함할 수 있다.
제 1 버퍼부(220)는 외부에서 입력되는 입력 데이터(IDS)를 섹터 단위로 버퍼링하여 섹터 단위 데이터들(SUD)을 순차적으로 생성하고, 생성된 섹터 단위 데이 터들(SUD)을 인코딩부(240) 및 제 2 버퍼부(260)에 순차적으로 전송한다. 입력 데이터(IDS)는 시퀀스 형태의 데이터로서 호스트 장치로부터 출력되어 호스트 인터페이스를 거쳐 인터리버 장치(200)에 입력될 수 있다. 예를 들어, 호스트 장치는 개인용 컴퓨터일 수 있고, 호스트 인터페이스는 범용직렬버스(USB), 멀티미디어 카드(MMC), 피씨아이(PCI), 피씨아이-익스프레스(PCI-Express), 에이티에이(ATA), 직렬-에이티에이(S-ATA), 병렬-에이티에이(P-ATA), 스카시(SCSI), 이에스디아이(ESDI), 에스에이에스(SAS) 및 아이디이(IDE) 등과 같은 표준 프로토콜로 구성될 수 있다. 호스트 인터페이스가 에스에이에스(SAS)로 구성되는 경우에는 비교적 고속의 데이터 전송이 가능하며, 복수의 버스를 이용하여 장치 간에 접속을 수행하는 에스에이에스 와이드 링크가 사용될 수 있다. 일 실시예에서, 제 1 버퍼부(200)는 섹터 사이즈를 갖는 하나의 입력 버퍼를 포함할 수 있고, 입력 버퍼는 에스램(SRAM) 또는 디램(DRAM)으로 구현될 수 있다.
인코딩부(240)는 제 1 버퍼부(220)로부터 순차적으로 전송된 섹터 단위 데이터들(SUD)에 대하여 이씨씨 인코딩을 수행하여 패리티 코드들(PRT)을 순차적으로 생성한다. 인코딩부(240)에서 순차적으로 생성되는 패리티 코드들(PRT)은 제 1 버퍼부(220)에서 순차적으로 전송되는 섹터 단위 데이터들(SUD)에 각각 대응된다. 이씨씨 인코딩 알고리즘은 섹터 단위의 데이터 당 1비트의 에러 정정이 가능한 해밍 코드 방식 또는 섹터 단위의 데이터 당 여러 비트의 에러 정정이 가능한 BCH 코드 방식이 이용될 수 있다. 다만, 이것은 하나의 예시로서 이씨씨 인코딩 알고리즘으로 다양한 코드 방식이 이용될 수 있다.
제 2 버퍼부(260)는 제 1 버퍼부(220)로부터 섹터 단위 데이터들(SUD)을 전송받고, 인코딩부(240)로부터 패리티 코드들(PRT)을 전송받는다. 제 2 버퍼부(260)는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 출력 버퍼들(266a, ..., 266n)에 인터리빙하여 저장한다. 일 실시예에서, 제 2 버퍼부(260)는 데이터 선택 신호(SEL)에 응답하여 제 1 버퍼부(220)로부터 전송되는 섹터 단위 데이터들(SUD) 및 인코딩부(240)로부터 전송되는 패리티 코드들(PRT)을 선택적으로 전송하는 제 1 멀티플렉서(262), 제 1 멀티플렉서(262)에서 전송되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 저장하는 출력 버퍼들(266a, ..., 266n) 및 버퍼 선택 신호(BSS)에 응답하여 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 인터리빙하기 위하여 출력 버퍼들(266a, ..., 266n)을 번갈아 선택하는 제 2 멀티플렉서(264)를 포함할 수 있다. 이 때, 제 1 멀티플렉서(262)의 출력 라인들 중 일부는 출력 버퍼들(266a, ..., 266n)을 바이패싱하여 제 2 멀티 플렉서(264)의 출력에 직접 연결될 수 있다. 이것은 제 1 멀티플렉서(262)에서 출력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)의 그룹들 중에서 일부 그룹에 대해서는 인터리빙을 수행하지 않고, 인터리빙이 수행되지 않은 바이패싱 데이터들(BYPD)을 적어도 하나 이상의 메모리 장치들의 페이지 버퍼에 직접 출력하기 위함이다. 데이터 선택 신호(SEL) 및 버퍼 선택 신호(BSS)는 메모리 컨트롤러 등에 구비되는 중앙 처리 유닛(CPU)이 제공하는 신호일 수 있다.
실시예에 따라, 제 2 버퍼부(260)에서 출력 버퍼들(266a, ..., 266n)은 에스램(SRAM) 또는 디램(DRAM)으로 구현될 수 있고, 출력 버퍼들(266a, ..., 266n)의 사이즈는 사용자의 설계에 따라 다양하게 변경될 수 있다. 바람직하게, 출력 버퍼들(266a, ..., 266n)의 사이즈는 섹터 사이즈보다는 크거나 같고, 페이지 사이즈보다는 작거나 같게 설계될 수 있다. 예를 들어, 출력 버퍼들(266a, ..., 266n)의 사이즈가 페이지 사이즈인 경우, 출력 버퍼들(266a, ..., 266n)에 각각 한 페이지의 분량의 인터리빙 데이터(INTD1, ..., INTDn)가 저장되면, 이러한 인터리빙 데이터들(INTD1, ..., INTDn)은 기입 커맨드에 의하여 적어도 하나 이상의 메모리 장치들에 구비되는 페이지 버퍼를 거쳐 메모리 셀 어레이에 저장될 수 있다.
제 2 버퍼부(260)는 다양한 방식으로 인터리빙을 수행할 수 있다. 일 실시예에서, 제 2 버퍼부(260)는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)의 그룹 예를 들어, 페이지들의 그룹 별로 서로 다른 방식의 인터리빙을 수행하거나, 또는 페이지들의 그룹 중에서 일부 그룹에 대해서는 인터리빙을 수행하지 않는 선택적인 인터리빙을 수행할 수 있다. 실시예에 따라, 제 2 버퍼부(260)는 제 1 멀티플렉서(262)에 입력되는 데이터 선택 신호(SEL) 및 제 2 멀티플렉서(264)에 입력되는 버퍼 선택 신호(BSS)를 제어함으로써 페이지 별로 서로 다른 방식의 인터리빙을 수행하거나, 또는 선택적인 인터리빙을 수행할 수 있다. 또한, 인터리빙의 깊이는 출력 버퍼들(266a, ..., 266n)의 개수에 상응할 수 있다.
구체적으로, 제 2 버퍼부(260)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 복수의 그룹들로 나누고, 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 그룹 별로 인터리빙하여 출력 버퍼들(266a, ..., 266n)에 저장할 수 있다. 예를 들어, 제 2 버퍼부(260)는 순차적으로 입력되는 섹 터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 2개의 그룹으로 나누고, 제 1 그룹은 출력 버퍼들(266a, ..., 266n)의 제 1 그룹에 인터리빙하여 저장하며, 제 2 그룹은 출력 버퍼들(266a, ..., 266n)의 제 2 그룹에 인터리빙하여 저장할 수 있다. 또한, 제 2 버퍼부(260)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 복수의 그룹들로 나누고, 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)의 그룹들 중에서 일부 그룹에 대해서는 출력 버퍼들(266a, ..., 266n)을 바이패싱하여 적어도 하나 이상의 메모리 장치들에 직접 출력할 수 있다. 예를 들어, 제 2 버퍼부(260)는 순차적으로 입력되는 섹터 단위 데이터들(SUD) 및 패리티 코드들(PRT)을 2개의 그룹으로 나누고, 제 1 그룹은 출력 버퍼들(266a, ..., 266n)에 인터리빙하여 저장하며, 제 2 그룹은 출력 버퍼들(266a, ..., 266n)을 거치지 않고 적어도 하나 이상의 메모리 장치들에 직접 출력할 수 있다.
출력부(280)는 제 2 버퍼부(260)의 출력 버퍼들(266a, ..., 266n)에 저장된 인터리빙 데이터들(INTD1, ..., INTDn)을 적어도 하나 이상의 메모리 장치들에 출력할 수 있다. 일 실시예에서, 출력부(280)는 기입 선택 신호(PSG)에 응답하여 출력 버퍼들(266a, ..., 266n)을 선택하는 제 3 멀티플렉서(282)로 구현될 수 있다. 제 3 멀티플렉서(282)는 기입 선택 신호(PSG)에 응답하여 출력 버퍼들(266a, ..., 266n)을 선택함으로써 출력 버퍼들(266a, ..., 266n)에 저장되어 있는 인터리빙 데이터들(INTD1, ..., INTDn)을 적어도 하나 이상의 메모리 장치들에 구비된 페이지 버퍼들에 출력할 수 있다. 이러한 적어도 하나 이상의 메모리 장치들은 싱글 레벨 셀(SLC) 타입 또는 멀티 레벨 셀(MLC) 타입의 낸드 플래시 메모리 장치일 수 있고, 단일 채널 또는 멀티 채널을 구성할 수 있다.
상기에서 설명한 바와 같이, 인터리버 장치(200)는 제 1 버퍼부(220), 인코딩부(240), 제 2 버퍼부(260) 및 출력부(280)를 포함함으로써 페이지들의 그룹 별로 서로 다른 인터리빙을 수행할 수 있고, 선택적으로 바이패싱을 수행할 수 있다. 또한, 인터리버 장치(200)는 제 1 버퍼부(220)에 섹터 사이즈의 입력 버퍼만을 구비하고, 제 2 버퍼부(260)에 섹터 사이즈에서 페이지 사이즈의 출력 버퍼들(266a, ..., 266n)만을 구비하기 때문에, 인터리빙을 수행하기 위한 전체 버퍼의 개수 및 사이즈를 감소시킬 수 있다. 이와 같이, 인터리버 장치(200)는 간단한 구조를 가지면서도 다양한 방식으로 인터리빙을 수행할 수 있다.
도 12는 도 11의 인터리버 장치에 의하여 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 일 예를 나타내는 도면이다.
도 12를 참조하면, 인터리버 장치(200)는 2개의 출력 버퍼들(BUFFER1, BUFFER2)을 포함할 수 있고, 2개의 출력 버퍼들(BUFFER1, BUFFER2)은 각각 2개의 섹터 사이즈를 가질 수 있다. 도 12에서는 페이지들(PAGE1, ..., PAGE4)을 2개의 그룹으로 나누고, 일부 그룹(PAGE2, PAGE3)에 대해서는 인터리빙을 수행하지 않기 때문에, 인터리빙 깊이는 4가 아니라 2가 된다.
멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서는 하나의 셀에 복수의 비트(예를 들어, 4비트)의 데이터가 저장되기 때문에, 일반적으로 1개의 워드라인은 4개의 페이지(PAGE1, ..., PAGE4)에 대응될 수 있다. 도 14는 1개의 워드라인에 대응되는 제 1 페이지(PAGE1)가 2개의 섹터들(SECTOR1, SECTOR2)을 포함하고, 제 2 페이지(PAGE2)가 2개의 섹터들(SECTOR3, SECTOR4)을 포함하며, 제 3 페이지(PAGE3)가 2개의 섹터들(SECTOR5, SECTOR6)을 포함하고, 제 4 페이지(PAGE4)가 2개의 섹터들(SECTOR7, SECTOR8)을 포함하는 경우를 나타내고 있다. 다만, 도 14에서는 제 1 내지 제 4 페이지(PAGE1, ..., PAGE4)를 제 1 내지 제 2 출력 버퍼들(BUFFER1, BUFFER2) 전체에 인터리빙을 수행하는 것이 아니라, 제 1 페이지(PAGE1)와 제 4 페이지(PAGE4)로 구성된 제 1 그룹은 인터리빙을 수행하고, 제 2 페이지(PAGE2)와 제 3 페이지(PAGE3)로 구성된 제 2 그룹은 인터리빙을 수행하지 않는다.
구체적으로, 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 1 서브 섹터(S11)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 2 서브 섹터(S12)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 1 섹터(SECTOR1)의 제 3 서브 섹터(S13)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 1 섹터(SECTOR1)의 제 4 서브 섹터(S14)가 저장된다. 또한, 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 1 서브 섹터(S21)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 2 섹터(SECTOR2)의 제 2 서브 섹터(S22)가 저장된다. 제 1 출력 버퍼(BUFFER1)에 제 2 섹터(SECTOR2)의 제 3 서브 섹터(S23)가 저장되고, 제 2 출력 버퍼(BUFFER2)에 제 2 섹터(SECTOR2)의 제 4 서브 섹터(S24)가 저장된다.
이후, 제 2 페이지(PAGE2)에 해당하는 제 3 내지 제 4 섹터(SECTOR3, SECTOR4)는 제 1 내지 제 2 출력 버퍼(BUFFER1, BUFFER2)를 바이패싱하여 외부의 메모리 장치들 구체적으로, 낸드 플래시 메모리 장치에 구비된 페이지 버퍼에 직접 저장된다. 마찬가지로, 제 3 페이지(PAGE3)에 해당하는 제 5 내지 제 6 섹 터(SECTOR5, SECTOR6)도 제 1 내지 제 2 출력 버퍼(BUFFER1, BUFFER2)를 바이패싱하여 외부의 메모리 장치들의 페이지 버퍼에 직접 저장된다. 즉, 제 2 페이지(PAGE2) 및 제 3 페이지(PAGE3)에 대해서는 인터리빙이 수행되지 않고, 낸드 플래시 메모리 장치에 구비된 페이지 버퍼에 직접 저장된다. 이후, 제 7 내지 제 8 섹터(SECTOR7, SECTOR8)는 다시 제 1 내지 제 2 출력 버퍼(BUFFER1, BUFFER2)에 인터리빙되어 저장된다.
따라서, 제 1 출력 버퍼(BUFFER1)에는 제 1 인터리빙 데이터(S11, S13, S21, S23, S71, S73, S81, S83)가 저장될 수 있고, 제 2 출력 버퍼(BUFFER2)에는 제 2 인터리빙 데이터(S12, S14, S22, S24, S72, S74, S82, S84)가 저장될 수 있다. 이와 같이, 제 2 내지 제 3 페이지(PAGE2, PAGE3)의 데이터는 낸드 플래시 메모리 장치에 구비된 페이지 버퍼에 저장되어 있으므로, 기입 커맨드에 응답하여 메모리 셀 어레이에 바로 기입될 수 있고, 제 1 인터리빙 데이터(S11, S13, S21, S23, S71, S73, S81, S83) 및 제 2 인터리빙 데이터(S12, S14, S22, S24, S72, S74, S82, S84)는 기입 커맨드에 응답하여 낸드 플래시 메모리 장치에 구비된 페이지 버퍼를 거쳐 메모리 셀 어레이에 기입될 수 있다.
도 13은 본 발명의 다른 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 13을 참조하면, 메모리 컨트롤러(700)는 기입부(710) 및 독출부(715)를 포함할 수 있다. 실시예에 따라, 메모리 컨트롤러(700)는 호스트 인터페이스(720), 메모리 인터페이스(730) 및 중앙 처리부(740)를 더 포함할 수 있다.
기입부(710)는 호스트 장치(790)로부터 입력되는 입력 데이터(IDS)를 섹터 단위로 버퍼링한 섹터 단위 데이터들에 기초하여 인터리빙 데이터들(INTD) 및 바이패싱 데이터들(BYPD)을 생성하고, 기입 커맨드 및 기입 어드레스에 응답하여 인터리빙 데이터들(INTD) 및 바이패싱 데이터들(BYPD)을 적어도 하나 이상의 메모리 장치들(780)에 기입한다. 독출부(715)는 독출 커맨드 및 독출 어드레스에 응답하여 적어도 하나 이상의 메모리 장치들(780)로부터 독출 데이터들(RD)을 독출하고, 독출 데이터들(RD)에 기초하여 출력 데이터들(ODS)을 생성하며, 출력 데이터들(ODS)을 호스트 장치(790)로 출력한다. 호스트 인터페이스(720)는 입력 데이터(IDS) 및 출력 데이터(ODS)에 대하여 호스트 장치(790)와의 인터페이싱을 수행한다. 메모리 인터페이스(730)는 인터리빙 데이터(INTD), 바이패싱 데이터(BYPD) 및 독출 데이터(RD)에 대하여 적어도 하나 이상의 메모리 장치들(780)과의 인터페이싱을 수행한다. 중앙 처리부(740)는 기입부(710) 및 독출부(715)를 제어하는 복수의 제어 신호들을 생성하여 전송함으로써 기입부(710) 및 독출부(715)를 제어할 수 있다. 다만, 기입부(710), 독출부(715), 호스트 인터페이스(720), 메모리 인터페이스(730) 및 중앙 처리부(740)에 대해서는 상술한 바 있으므로, 중복되는 설명은 생략하기로 한다.
도 14는 본 발명의 또 다른 실시예에 따른 인터리버 장치를 나타내는 블록도이다.
도 14를 참조하면, 인터리버 장치(800)는 제 1 버퍼부(820), 제 1 인코딩부(840), 제 2 버퍼부(860) 및 출력부(880)를 포함할 수 있다. 다만, 제 1 버퍼 부(820), 제 1 인코딩부(840) 및 제 2 버퍼부(860)는 상술한 바 있으므로, 구체적인 설명은 생략하기로 한다.
출력부(880)는 제 2 버퍼부(860)의 출력 버퍼들(866a, ..., 866n)에 저장된 인터리빙 데이터들(INTD1, ..., INTDn)에 대하여 다시 한번 이씨씨 인코딩을 수행하여 적어도 하나 이상의 메모리 장치들에 출력할 수 있다. 일 실시예에서, 출력부(880)는 제 3 멀티플렉서(882), 제 2 인코딩부(884) 및 제 4 멀티플렉서(886)를 포함할 수 있다. 제 3 멀티플렉서(882)는 기입 선택 신호(PSG)에 응답하여 제 2 버퍼부(860)의 출력 버퍼들(866a, ..., 866n)을 선택함으로써 인터리빙 데이터들(INTD1, ..., INTDn)을 출력할 수 있다. 제 2 인코딩부(884)는 제 2 버퍼부(860)의 출력 버퍼들(866a, ..., 866n)로부터 출력되는 인터리빙 데이터들(INTD1, ..., INTDn)에 대해 이씨씨 인코딩을 수행함으로써 복수의 제 2 패리티 코드들(PRT2)을 생성할 수 있다. 제 4 멀티플렉서(886)는 제 2 데이터 선택 신호(SEL2)에 응답하여 각각의 인터리빙 데이터(INTD1, ..., INTDn) 및 이에 상응하는 제 2 패리티 코드(PRT2)에 상응하는 인코딩된 인터리빙 데이터(EINTD)를 적어도 하나 이상의 메모리 장치들에 구비된 페이지 버퍼들에 출력할 수 있다. 적어도 하나 이상의 메모리 장치들은 싱글 레벨 셀(SLC) 타입 또는 멀티 레벨 셀(MLC) 타입의 낸드 플래시 메모리 장치일 수 있고, 단일 채널 또는 멀티 채널을 구성할 수 있다.
이와 같이, 인터리버 장치(800)는 낸드 플래시 메모리 장치에서 페이지 단위의 기입 및 독출 동작 시에 발생할 수 있는 에러를 감소시키기 위하여, 제 1 버퍼부(820)에서 입력 데이터(IDS)를 섹터 단위로 버퍼링하여 섹터 단위 데이터들(SUD) 을 생성하고, 제 1 인코딩부(840)에서 이러한 섹터 단위 데이터들(SUD)에 대하여 이씨씨 인코딩을 수행하여 제 1 패리티 코드(PRT1)들을 생성하며, 제 2 버퍼부(860)에서 섹터 단위 데이터들(SUD) 및 제 1 패리티 코드들(PRT1)에 대하여 인터리빙을 수행하여 인터리빙 데이터들(INTD1, ..., INTDn)을 생성할 수 있다. 나아가, 인터리버 장치(800)는 인터리빙 데이터들(INTD1, ..., INTDn)에 대하여 다시 한번 이씨씨 인코딩까지 수행함으로써 페이지들에 포함된 섹터들의 에러 분산을 극대화할 수 있다. 즉, 호스트 장치로부터 입력되는 입력 데이터(IDS)는 인터리버 장치(800)에 의하여 제 1 이씨씨 인코딩, 인터리빙 및 제 2 이씨씨 인코딩이 순차적으로 수행됨으로써 인코딩된 인터리빙 데이터(EINTD)로 변환될 수 있고, 이러한 인코딩된 인터리빙 데이터(EINTD)는 낸드 플래시 메모리 장치의 페이지 버퍼를 거쳐 메모리 셀 어레이에 저장될 수 있다. 도 14에서는 설명의 편의를 위하여, 출력부(880)가 인터리빙 데이터들(INTD1, ..., INTDn)의 전부에 대하여 이씨씨 인코딩을 수행하는 것으로 도시되었지만, 이에 한정되는 것은 아니며, 출력부(880)는 인터리빙 데이터들(INTD1, ..., INTDn)의 일부에 대해서만 이씨씨 인코딩을 수행할 수도 있다.
도 15는 본 발명의 또 다른 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 15를 참조하면, 메모리 컨트롤러(900)는 기입부(910) 및 독출부(915)를 포함할 수 있다. 실시예에 따라, 메모리 컨트롤러(900)는 호스트 인터페이스(920), 메모리 인터페이스(930) 및 중앙 처리부(940)를 더 포함할 수 있다.
기입부(910)는 호스트 장치(990)로부터 입력되는 입력 데이터(IDS)를 섹터 단위로 버퍼링한 섹터 단위 데이터들에 기초하여 인터리빙 데이터들(INTD) 또는 인코딩된 인터리빙 데이터들(EINTD)을 생성하고, 기입 커맨드 및 기입 어드레스에 응답하여 인터리빙 데이터들(INTD) 또는 인코딩된 인터리빙 데이터들(EINTD)을 적어도 하나 이상의 메모리 장치들(980)에 기입한다. 독출부(915)는 독출 커맨드 및 독출 어드레스에 응답하여 적어도 하나 이상의 메모리 장치들(980)로부터 독출 데이터들(RD)을 독출하고, 독출 데이터들(RD)에 기초하여 출력 데이터들(ODS)을 생성하며, 출력 데이터들(ODS)을 호스트 장치(990)로 출력한다. 호스트 인터페이스(920)는 입력 데이터(IDS) 및 출력 데이터(ODS)에 대하여 호스트 장치(990)와의 인터페이싱을 수행한다. 메모리 인터페이스(930)는 인터리빙 데이터(INTD), 인코딩된 인터러빙 데이터(EINTD) 및 독출 데이터(RD)에 대하여 적어도 하나 이상의 메모리 장치들(980)과의 인터페이싱을 수행한다. 중앙 처리부(940)는 기입부(910) 및 독출부(915)를 제어하는 복수의 제어 신호들을 생성하여 전송함으로써 기입부(910) 및 독출부(915)를 제어할 수 있다. 다만, 기입부(910), 독출부(915), 호스트 인터페이스(920), 메모리 인터페이스(930) 및 중앙 처리부(940)에 대해서는 상술한 바 있으므로, 중복되는 설명은 생략하기로 한다.
도 16은 본 발명의 실시예들에 따른 메모리 컨트롤러를 구비한 메모리 시스템의 일 예를 나타내는 블록도이다.
도 16을 참조하면, 메모리 시스템(400)은 호스트 장치(420), 메모리 컨트롤러(430) 및 적어도 하나 이상의 낸드 플래시 메모리 장치들(440)을 포함할 수 있 다. 실시예에 따라, 메모리 컨트롤러(430)는 도 8 또는 도 15의 메모리 컨트롤러(300, 700, 900)일 수 있다.
메모리 시스템(400)에서 호스트 장치(420)와 적어도 하나 이상의 낸드 플래시 메모리 장치들(440) 사이에 메모리 컨트롤러(430)가 위치한다. 일 실시예에서, 적어도 하나 이상의 낸드 플래시 메모리 장치들(440)은 단일 채널 또는 멀티 채널을 구성할 수 있다. 메모리 컨트롤러(430)는 호스트 장치(420) 및 적어도 하나 이상의 낸드 플래시 메모리 장치들(440)과 물리적으로 분리되어 구현되기 때문에, 메모리 컨트롤러(430)는 기입부, 독출부, 호스트 인터페이스, 메모리 인터페이스 및 중앙 처리부를 포함할 수 있다. 일 실시예에서, 메모리 컨트롤러(430)는 호스트 인터페이스가 호스트 장치(420)와 범용직렬버스(USB), 멀티미디어 카드(MMC), 피씨아이(PCI), 피씨아이-익스프레스(PCI-Express), 에이티에이(ATA), 직렬-에이티에이(S-ATA), 병렬-에이티에이(P-ATA), 스카시(SCSI), 이에스디아이(ESDI), 에스에이에스(SAS) 및 아이디이(IDE) 등과 같은 표준 프로토콜을 이용하여 인터액션(interaction)을 수행할 수 있고, 메모리 인터페이스가 적어도 하나 이상의 낸드 플래시 메모리 장치들(440)과 낸드 인터페이스 프로토콜을 이용하여 인터액션을 수행할 수 있다. 이것은 메모리 컨트롤러(430)가 호스트 인터페이스를 이용하여 호스트 장치(420)에 의하여 이미 지원되는 표준 프로토콜을 사용하고, 메모리 인터페이스를 이용하여 적어도 하나 이상의 낸드 플래시 메모리 장치들(440)에 의하여 이미 지원되는 표준 프로토콜을 사용하기 때문에 범용적이라는 장점이 있다.
도 17은 본 발명의 실시예들에 따른 메모리 컨트롤러를 구비한 메모리 시스 템의 다른 예를 나타내는 블록도이다.
도 17을 참조하면, 메모리 시스템(500)은 메모리 컨트롤러(530)가 빌트 인되어 구현된 호스트 장치(520) 및 적어도 하나 이상의 낸드 플래시 메모리 장치들(540)을 포함할 수 있다. 실시예에 따라, 메모리 컨트롤러(530)는 도 8 또는 도 15의 메모리 컨트롤러(300, 700, 900)일 수 있다.
메모리 시스템(500)에서 메모리 컨트롤러(530)는 호스트 장치(520)에 위치한다. 일 실시예에서, 적어도 하나 이상의 낸드 플래시 메모리 장치들(540)은 단일 채널 또는 멀티 채널을 구성할 수 있다. 메모리 컨트롤러(530)는 호스트 장치(520)에 빌트 인되어 구현되기 때문에, 호스트 인터페이스가 구비되지 않거나, 또는 독자적인 프로토콜을 이용하여 인터액션을 수행할 수 있다. 나아가, 메모리 컨트롤러(530)가 중앙 처리부를 구비하지 않는 경우, 호스트 장치(520)의 호스트 프로세서에 의하여 해당 기능이 수행될 수 있다. 일 실시예에서, 메모리 컨트롤러(530)는 호스트 인터페이스가 호스트 장치(520)의 내부에서 독자적인 프로토콜을 이용하여 인터액션을 수행할 수 있고, 메모리 인터페이스가 적어도 하나 이상의 낸드 플래시 메모리 장치들(540)과 낸드 인터페이스 프로토콜을 이용하여 인터액션을 수행할 수 있다. 이것은 메모리 컨트롤러(530)가 호스트 장치(520)와의 관계에서 이미 지원되는 표준 프로토콜보다 메모리 시스템(500)에 적합한 독자적인 프로토콜을 사용할 수 있고, 호스트 장치(520) 내부에서 인터액션이 수행되기 때문에 고속 동작이 가능하다는 장점이 있다.
도 18은 본 발명의 실시예들에 따른 메모리 컨트롤러를 구비한 메모리 시스 템의 또 다른 예를 나타내는 블록도이다.
도 18을 참조하면, 메모리 시스템(600)은 호스트 장치(620) 및 메모리 컨트롤러(630)가 빌트 인되어 각각 구현된 적어도 하나 이상의 낸드 플래시 메모리 장치들(640)을 포함할 수 있다. 실시예에 따라, 메모리 컨트롤러(630)는 도 8 또는 도 15의 메모리 컨트롤러(300, 700, 900)일 수 있다.
메모리 시스템(600)에서 메모리 컨트롤러(630)는 적어도 하나 이상의 플래시 메모리 장치들(640)에 각각 위치한다. 일 실시예에서, 적어도 하나 이상의 낸드 플래시 메모리 장치들(640)은 단일 채널 또는 멀티 채널을 구성할 수 있다. 메모리 컨트롤러(630)는 적어도 하나 이상의 플래시 메모리 장치들(640)에 각각 빌트 인되어 구현되기 때문에, 메모리 인터페이스가 구비되지 않거나, 또는 독자적인 프로토콜을 이용하여 인터액션을 수행할 수 있다. 나아가, 메모리 컨트롤러(630)의 중앙 처리부는 적어도 하나 이상의 플래시 메모리 장치들(640)을 제어하는 기능까지 수행할 수 있다. 한편, 기입부의 제 2 버퍼부에 포함되는 출력 버퍼들은 적어도 하나 이상의 낸드 플래시 메모리 장치들(640)의 페이지 버퍼로서 동작할 수 있다. 일 실시예에서, 호스트 인터페이스가 호스트 장치(620)와 범용직렬버스(USB), 멀티미디어 카드(MMC), 피씨아이(PCI), 피씨아이-익스프레스(PCI-Express), 에이티에이(ATA), 직렬-에이티에이(S-ATA), 병렬-에이티에이(P-ATA), 스카시(SCSI), 이에스디아이(ESDI), 에스에이에스(SAS) 및 아이디이(IDE) 등과 같은 표준 프로토콜을 이용하여 인터액션을 수행할 수 있고, 메모리 인터페이스가 적어도 하나 이상의 낸드 플래시 메모리 장치들(640)의 내부에서 각각 독자적인 프로토콜을 이용하여 인터액 션을 수행할 수 있다. 이것은 메모리 컨트롤러(630)가 적어도 하나 이상의 낸드 플래시 메모리 장치들(640)과의 관계에서 이미 지원되는 표준 프로토콜보다 메모리 시스템(600)에 적합한 독자적인 프로토콜을 사용할 수 있고, 적어도 하나 이상의 낸드 플래시 메모리 장치들(640) 각각의 내부에서 인터액션이 수행되기 때문에 고속 동작이 가능하다는 장점이 있다. 예를 들어, 메모리 컨트롤러(630)가 빌트 인되어 구현되는 적어도 하나 이상의 플래시 메모리 장치들(640)은 소위 원낸드 메모리 장치(One-NAND memory device)로 명명될 수 있다.
상기에서는 본 발명의 실시예들을 참조하여 인터리버 장치, 메모리 컨트롤러 및 메모리 시스템에 대하여 설명하였지만, 본 발명의 실시예들의 구체적인 구성은 예시적인 것으로서 본 발명의 기술적 사상을 벗어나지 않는 범위에서 설계 변경될 수 있다. 또한, 본 발명의 기술적 과제 및 효과는 상기에서 언급된 것으로만 한정되어서는 아니 되며, 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다양하게 유추될 수 있다.
본 발명은 인터리빙 기능을 채용하는 반도체 메모리 장치에 다양하게 적용될 수 있다. 따라서, 본 발명은 이러한 반도체 메모리 장치를 구비하는 컴퓨터, 노트북, PDA(personal digital assistants), PMP(portable multimedia player), MP3 플레이어, DIGITAL TV, SSD(solid state drive, solid state disk), SD CARD 등과 같은 전자 기기에 확대 적용될 수 있을 것이다.
상기에서는 본 발명의 바람직한 실시예들을 참조하여 설명하였지만 해당 기 술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 인터리버 장치를 나타내는 블록도이다.
도 2는 도 1의 인터리버 장치에 의하여 싱글 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 일 예를 나타내는 도면이다.
도 3은 도 1의 인터리버 장치에 의하여 싱글 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 다른 예를 나타내는 도면이다.
도 4는 도 1의 인터리버 장치에 의하여 싱글 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 또 다른 예를 나타내는 도면이다.
도 5는 도 1의 인터리버 장치에 의하여 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 일 예를 나타내는 도면이다.
도 6은 도 1의 인터리버 장치에 의하여 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 다른 예를 나타내는 도면이다.
도 7은 도 1의 인터리버 장치에 의하여 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 또 다른 예를 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 9는 도 8의 메모리 컨트롤러의 기입부를 나타내는 블록도이다.
도 10은 도 8의 메모리 컨트롤러의 독출부를 나타내는 블록도이다.
도 11은 본 발명의 다른 실시예에 따른 인터리버 장치를 나타내는 블록도이다.
도 12는 도 11의 인터리버 장치에 의하여 멀티 레벨 셀 타입의 낸드 플래시 메모리 장치에서 인터리빙이 수행된 일 예를 나타내는 도면이다.
도 13은 본 발명의 다른 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 14는 본 발명의 또 다른 실시예에 따른 인터리버 장치를 나타내는 블록도이다.
도 15는 본 발명의 또 다른 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 16은 본 발명의 실시예들에 따른 메모리 컨트롤러를 구비한 메모리 시스템의 일 예를 나타내는 블록도이다.
도 17은 본 발명의 실시예들에 따른 메모리 컨트롤러를 구비한 메모리 시스템의 다른 예를 나타내는 블록도이다.
도 18은 본 발명의 실시예들에 따른 메모리 컨트롤러를 구비한 메모리 시스템의 또 다른 예를 나타내는 블록도이다.
<도면의 주요부분에 대한 부호의 설명>
100: 인터리버 장치 120: 제 1 버퍼부
140: 인코딩부 160: 제 2 버퍼부
180: 출력부
Claims (10)
- 입력 데이터를 섹터(sector) 단위로 버퍼링하여 복수의 섹터 단위 데이터들을 순차적으로 생성하는 제 1 버퍼부;상기 섹터 단위 데이터들에 대하여 이씨씨 인코딩(ECC encoding)을 수행하고, 복수의 패리티 코드들을 순차적으로 생성하는 인코딩부;상기 섹터 단위 데이터들 및 상기 패리티 코드들을 인터리빙(interleaving)하여 복수의 출력 버퍼들에 저장하는 제 2 버퍼부; 및상기 출력 버퍼들에 저장된 복수의 인터리빙 데이터들을 적어도 하나 이상의 메모리 장치들에 출력하는 출력부를 포함하고,상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 상기 출력 버퍼들에 그룹 별로 인터리빙하여 저장하는 것을 특징으로 하는 인터리버 장치.
- 제 1 항에 있어서, 상기 제 1 버퍼부는 섹터 사이즈를 갖는 하나의 입력 버퍼를 포함하는 것을 특징으로 하는 인터리버 장치.
- 제 2 항에 있어서, 상기 출력 버퍼들의 사이즈는 섹터 사이즈보다는 크거나 같고, 페이지(page) 사이즈보다는 작거나 같은 것을 특징으로 하는 인터리버 장치.
- 삭제
- 제 1 항에 있어서, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 1 그룹을 상기 출력 버퍼들의 제 1 그룹에 인터리빙하여 저장하고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 2 그룹을 상기 출력 버퍼들의 제 2 그룹에 인터리빙하여 저장하는 것을 특징으로 하는 인터리버 장치.
- 입력 데이터를 섹터(sector) 단위로 버퍼링하여 복수의 섹터 단위 데이터들을 순차적으로 생성하는 제 1 버퍼부;상기 섹터 단위 데이터들에 대하여 이씨씨 인코딩(ECC encoding)을 수행하고, 복수의 패리티 코드들을 순차적으로 생성하는 인코딩부;상기 섹터 단위 데이터들 및 상기 패리티 코드들을 인터리빙(interleaving)하여 복수의 출력 버퍼들에 저장하는 제 2 버퍼부; 및상기 출력 버퍼들에 저장된 복수의 인터리빙 데이터들을 적어도 하나 이상의 메모리 장치들에 출력하는 출력부를 포함하고,상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 일부 그룹만을 상기 출력 버퍼들에 인터리빙하여 저장하며, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 나머지 그룹은 상기 출력 버퍼들에 순차적으로 저장하는 것을 특징으로 하는 인터리버 장치.
- 제 6 항에 있어서, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 1 그룹을 상기 출력 버퍼들의 제 1 그룹에 인터리빙하여 저장하고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 2 그룹을 상기 출력 버퍼들의 제 2 그룹에 순차적으로 저장하는 것을 특징으로 하는 인터리버 장치.
- 입력 데이터를 섹터(sector) 단위로 버퍼링하여 복수의 섹터 단위 데이터들을 순차적으로 생성하는 제 1 버퍼부;상기 섹터 단위 데이터들에 대하여 이씨씨 인코딩(ECC encoding)을 수행하고, 복수의 패리티 코드들을 순차적으로 생성하는 인코딩부;상기 섹터 단위 데이터들 및 상기 패리티 코드들을 인터리빙(interleaving)하여 복수의 출력 버퍼들에 저장하는 제 2 버퍼부; 및상기 출력 버퍼들에 저장된 복수의 인터리빙 데이터들을 적어도 하나 이상의 메모리 장치들에 출력하는 출력부를 포함하고,상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들을 복수의 그룹들로 나누고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 일부 그룹만을 상기 출력 버퍼들에 인터리빙하여 저장하며, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 나머지 그룹은 상기 적어도 하나 이상의 메모리 장치들에 직접 출력하는 것을 특징으로 하는 인터리버 장치.
- 제 8 항에 있어서, 상기 제 2 버퍼부는 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 1 그룹을 상기 출력 버퍼들에 인터리빙하여 저장하고, 상기 섹터 단위 데이터들 및 상기 패리티 코드들의 제 2 그룹을 상기 적어도 하나 이상의 메모리 장치들에 직접 출력하는 것을 특징으로 하는 인터리버 장치.
- 제 1 항, 제 6 항, 또는 제 8 항 중 어느 한 항에 있어서, 상기 출력부는 상기 인터리빙 데이터들에 대하여 이씨씨 인코딩을 수행하여 상기 적어도 하나 이상의 메모리 장치들에 출력하는 것을 특징으로 하는 인터리버 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090113102A KR101623730B1 (ko) | 2009-11-23 | 2009-11-23 | 인터리버 장치 |
US12/944,807 US8812942B2 (en) | 2009-11-23 | 2010-11-12 | Interleaving apparatuses and memory controllers having the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090113102A KR101623730B1 (ko) | 2009-11-23 | 2009-11-23 | 인터리버 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110056676A KR20110056676A (ko) | 2011-05-31 |
KR101623730B1 true KR101623730B1 (ko) | 2016-05-25 |
Family
ID=44062941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090113102A KR101623730B1 (ko) | 2009-11-23 | 2009-11-23 | 인터리버 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8812942B2 (ko) |
KR (1) | KR101623730B1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5605238B2 (ja) * | 2011-01-25 | 2014-10-15 | ソニー株式会社 | メモリシステムおよびその動作方法 |
US8335875B1 (en) * | 2011-06-24 | 2012-12-18 | Intel Corporation | System and method for performing isochronous data buffering |
KR101307792B1 (ko) * | 2011-12-27 | 2013-09-12 | 한국과학기술원 | 다중-쓰레드 비씨에이치 인코더, 비씨에이치 디코더, 이를 포함하는 스토리지 디바이스 및 스토리지 시스템 |
US9489300B2 (en) * | 2013-06-19 | 2016-11-08 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US9489294B2 (en) | 2013-06-19 | 2016-11-08 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US9489299B2 (en) | 2013-06-19 | 2016-11-08 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US9208083B2 (en) * | 2013-12-04 | 2015-12-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method to interleave memory |
US9390008B2 (en) * | 2013-12-11 | 2016-07-12 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US10007573B2 (en) * | 2015-04-27 | 2018-06-26 | Invensas Corporation | Preferred state encoding in non-volatile memories |
US20180261281A1 (en) * | 2017-03-10 | 2018-09-13 | Micron Technology, Inc. | Methods for mitigating power loss events during operation of memory devices and memory devices employing the same |
KR20210078201A (ko) | 2019-12-18 | 2021-06-28 | 삼성전자주식회사 | 반도체 메모리 장치 및 메모리 시스템 |
TWI742961B (zh) * | 2020-12-10 | 2021-10-11 | 旺宏電子股份有限公司 | 快閃記憶體系統及其快閃記憶體裝置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080069248A1 (en) | 2006-09-15 | 2008-03-20 | Bernd Heise | Methods and systems for adaptive communication |
US20080147968A1 (en) | 2000-01-06 | 2008-06-19 | Super Talent Electronics, Inc. | High Performance Flash Memory Devices (FMD) |
WO2009067320A1 (en) | 2007-11-21 | 2009-05-28 | Micron Technology, Inc. | Fault-tolerant non-volatile integrated circuit memory |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2940196B2 (ja) * | 1991-02-08 | 1999-08-25 | ソニー株式会社 | 記録再生装置 |
US5392299A (en) * | 1992-01-15 | 1995-02-21 | E-Systems, Inc. | Triple orthogonally interleaed error correction system |
JPH07230674A (ja) | 1994-02-17 | 1995-08-29 | Matsushita Electric Ind Co Ltd | インターリーブ方法と誤り訂正符号語の記録方法 |
US5537420A (en) | 1994-05-04 | 1996-07-16 | General Instrument Corporation Of Delaware | Convolutional interleaver with reduced memory requirements and address generator therefor |
US5898710A (en) * | 1995-06-06 | 1999-04-27 | Globespan Technologies, Inc. | Implied interleaving, a family of systematic interleavers and deinterleavers |
US5754566A (en) * | 1996-09-06 | 1998-05-19 | Intel Corporation | Method and apparatus for correcting a multilevel cell memory by using interleaving |
KR100354744B1 (ko) | 1998-08-04 | 2002-12-11 | 삼성전자 주식회사 | 고밀도기록매체를위한인터리브방법및그회로 |
JPWO2004051650A1 (ja) | 2002-11-29 | 2006-04-06 | 富士通株式会社 | データ記録再生装置及び、データ記録再生方法 |
TW576969B (en) * | 2002-11-29 | 2004-02-21 | Lite On It Corp | Multi-segment management structure and management method of buffer |
US7423992B2 (en) * | 2003-04-16 | 2008-09-09 | Sony Corporation | Time slot and carrier frequency allocation in a network |
US7600163B2 (en) * | 2003-09-23 | 2009-10-06 | Realtek Semiconductor Corp. | Convolutional interleaver and deinterleaver |
US7793059B2 (en) * | 2006-01-18 | 2010-09-07 | Apple Inc. | Interleaving policies for flash memory |
US20070239931A1 (en) * | 2006-03-28 | 2007-10-11 | Hsin-Cheng Chen | System, apparatus, integrated circuit thereof, and method for recording data on optical storage medium |
JP4231072B2 (ja) * | 2006-09-26 | 2009-02-25 | ソニーNecオプティアーク株式会社 | 光記録媒体駆動装置、球面収差調整方法 |
WO2009053962A2 (en) * | 2007-10-22 | 2009-04-30 | Densbits Technologies Ltd. | Systems and methods for averaging error rates in non-volatile devices and storage systems |
KR101083673B1 (ko) * | 2008-10-01 | 2011-11-16 | 주식회사 하이닉스반도체 | 반도체 스토리지 시스템 및 그 제어 방법 |
-
2009
- 2009-11-23 KR KR1020090113102A patent/KR101623730B1/ko active IP Right Grant
-
2010
- 2010-11-12 US US12/944,807 patent/US8812942B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080147968A1 (en) | 2000-01-06 | 2008-06-19 | Super Talent Electronics, Inc. | High Performance Flash Memory Devices (FMD) |
US20080069248A1 (en) | 2006-09-15 | 2008-03-20 | Bernd Heise | Methods and systems for adaptive communication |
WO2009067320A1 (en) | 2007-11-21 | 2009-05-28 | Micron Technology, Inc. | Fault-tolerant non-volatile integrated circuit memory |
Also Published As
Publication number | Publication date |
---|---|
US20110125975A1 (en) | 2011-05-26 |
US8812942B2 (en) | 2014-08-19 |
KR20110056676A (ko) | 2011-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101623730B1 (ko) | 인터리버 장치 | |
US11422885B2 (en) | Tiered error correction code (ECC) operations in memory | |
CN109196479B (zh) | 存储器中的错误校正码(ecc)操作 | |
KR102081588B1 (ko) | Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 | |
US9136872B2 (en) | Memory, memory system, and error checking and correcting method for memory | |
US8996950B2 (en) | Erasure correction using single error detection parity | |
US10824523B2 (en) | Data storage device and operating method thereof | |
US10985780B2 (en) | Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller | |
WO2013096158A1 (en) | Using ecc encoding to verify an ecc decode operation | |
US10691538B2 (en) | Methods and apparatuses for error correction | |
US11431355B2 (en) | Error correction code (ECC) operations in memory for providing redundant error correction | |
KR102588969B1 (ko) | 오류 정정 디코더 및 이를 포함하는 메모리 시스템 | |
US11082068B2 (en) | Error correction circuit, memory controller having error correction circuit, and memory system having memory controller | |
CN106158046B (zh) | 用于turbo乘积码的误校正避免 | |
CN112084052A (zh) | 基于主机的错误校正 | |
US10855316B2 (en) | Error correction code (ECC) operations in memory | |
TWI844591B (zh) | 減少基於校驗子的準循環解碼器的延遲 | |
CN112530506A (zh) | 减少基于校验子的准循环解码器的延迟 | |
KR20160143010A (ko) | 메모리 컨트롤러, 이를 포함하는 시스템, 및 이의 동작 방법 | |
KR20230166453A (ko) | 컨트롤러 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190429 Year of fee payment: 4 |