KR20100089020A - 메모리 시스템 및 메모리 시스템의 인터리브 제어 방법 - Google Patents

메모리 시스템 및 메모리 시스템의 인터리브 제어 방법 Download PDF

Info

Publication number
KR20100089020A
KR20100089020A KR1020100000815A KR20100000815A KR20100089020A KR 20100089020 A KR20100089020 A KR 20100089020A KR 1020100000815 A KR1020100000815 A KR 1020100000815A KR 20100000815 A KR20100000815 A KR 20100000815A KR 20100089020 A KR20100089020 A KR 20100089020A
Authority
KR
South Korea
Prior art keywords
memory
memory area
priority
data
bank
Prior art date
Application number
KR1020100000815A
Other languages
English (en)
Other versions
KR101148722B1 (ko
Inventor
히로유키 난조우
데츠야 무라카미
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20100089020A publication Critical patent/KR20100089020A/ko
Application granted granted Critical
Publication of KR101148722B1 publication Critical patent/KR101148722B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

메모리 시스템은, 개별적으로 동작 가능한 복수의 비휘발성 메모리 영역과, 레디(ready)/비지(busy) 신호를 통해 그 메모리 영역 각각에 개별적으로 접속되며, 동작 커맨드가 송신될 때마다 그 동작 커맨드의 대상인 메모리 영역을 변경함으로써 상기 메모리 영역에서의 동작을 인터리브시키는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 각각의 메모리 영역에 대한 선택 우선도의 순위를 관리하는 우선 순위 관리 유닛을 포함하며, 동작 커맨드의 송신 후에, 상기 메모리 컨트롤러는 레디 상태의 메모리 영역들 중에서 선택 우선도의 순위가 가장 높은 메모리 영역을 선택하여 그 선택된 메모리 영역을 다음 동작 커맨드의 대상으로 변경하며, 상기 우선 순위 관리 유닛에 의해, 상기 선택된 메모리 영역의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시킨다.

Description

메모리 시스템 및 메모리 시스템의 인터리브 제어 방법{MEMORY SYSTEM AND INTERLEAVING CONTROL METHOD OF MEMORY SYSTEM}
<관련 출원과의 상호 참조>
본 출원은 2009년 2월 2일자로 출원된 선행 일본 특허 출원 제2009-022044호에 기초하여 우선권을 주장하며, 이 특허문헌의 전체 내용은 인용에 의해 본 명세서에 원용된다.
본 발명은 메모리 시스템 및 메모리 시스템의 인터리브 제어 방법에 관한 것이다.
컴퓨터 시스템에 이용되는 메모리 시스템으로서, NAND형 플래시 메모리(이하, "NAND 메모리"라고 함) 등의 비휘발성 반도체 메모리가 탑재된 SSD(Solid State Drive)가 주목을 받고 있다. SSD 등의 메모리 시스템은 자기 디스크 드라이브와 비교해서, 고속의 동작 속도 및 경량이라는 이점을 갖고 있다.
최근, 전송 효율을 향상시키기 위해서, 뱅크 인터리브를 수행하는 기능이 채용되고 있다. 구체적으로, SSD에 탑재된 NAND 메모리는 데이터 기록을 비롯한 메모리 조작을 동시에 수행할 수 있는 복수의 메모리 영역(뱅크)으로 분할되고, 데이터가 기록될 뱅크는 NAND 메모리에 연속으로 데이터 기록을 수행할 때에 순차적으로 전환된다(예컨대, 미국 특허 출원 공개 제2006/0152981호 참조).
본 발명의 실시형태에 따른 메모리 시스템은,
개별적으로 동작 가능한 복수의 비휘발성 메모리 영역과,
레디(ready)/비지(busy) 신호를 통해 그 메모리 영역 각각에 개별로 접속되며, 동작 커맨드가 송신될 때마다, 그 동작 커맨드의 대상인 메모리 영역을 변경함으로써 상기 메모리 영역에서의 동작을 인터리브시키는 메모리 컨트롤러를 포함하며,
상기 메모리 컨트롤러는 각각의 메모리 영역에 대한 선택 우선도의 순위를 관리하는 우선 순위 관리 유닛을 포함하며, 동작 커맨드의 송신 후에, 레디 상태의 메모리 영역들 중에서 선택 우선도의 순위가 가장 높은 메모리 영역을 선택하여, 그 선택된 메모리 영역을 다음 동작 커맨드의 대상으로 변경하고, 상기 우선 순위 관리 유닛에 의해, 상기 선택된 메모리 영역의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시킨다.
또한, 본 발명의 실시형태에 따른 메모리 시스템은,
개별적으로 동작 가능한 복수의 비휘발성 메모리 영역과,
레디(ready)/비지(busy) 신호를 통해 그 메모리 영역 각각에 개별적으로 접속되며, 복수의 동작을 수행하기 위한 동작 커맨드가 송신될 때마다, 그 동작 커맨드의 대상인 메모리 영역을 변경함으로써 상기 메모리 영역에서의 동작을 인터리브시키는 메모리 컨트롤러를 포함하며,
상기 메모리 컨트롤러는 각각의 메모리 영역에 대한 선택 우선도의 순위를 관리하는 우선 순위 관리 유닛과, 상기 레디/비지 신호에 기초하여 상기 동작 커맨드가 수행중인지의 여부를 인식하는 동작 상태 인식 유닛을 포함하며, 동작 커맨드의 송신 후, 동작 커맨드가 수행중인지 않는 메모리 영역들 중에서 선택 우선도의 순위가 가장 높은 메모리 영역을 선택하여, 그 선택된 메모리 영역을 다음 동작 커맨드의 대상인 다음 메모리 영역으로 변경하고, 상기 우선 순위 관리 유닛에 의해, 상기 선택된 메모리 영역의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시킨다.
또한, 본 발명의 실시형태에 따른 메모리 시스템의 인터리브 제어 방법은,
미리 설정된 각각의 메모리 영역의 선택 우선도의 순위에 기초하여 레디 상태의 메모리 영역들 중에서 선택 우선도의 순위가 가장 높은 메모리 영역을 선택하여, 그 선택된 메모리 영역을 동작 커맨드의 대상인 메모리 영역으로서 지정하는 단계와,
상기 동작 커맨드의 대상인 메모리 영역에 상기 동작 커맨드를 송신하는 단계와,
상기 선택된 메모리 영역의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시키는 단계를 포함한다.
본 발명의 제1 실시형태에 따르면, ch0 컨트롤러(210)는 기록 커맨드를 송신한 후, 병렬 동작 요소(2a)에 포함된 레디 상태의 뱅크들 중에서 선택 우선도가 가장 높은 뱅크 하나를 선택하고, 그 선택된 뱅크를 다음 기록 커맨드의 대상으로서 변경하며, 그 선택된 뱅크의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시키다. 이에, 각 뱅크마다 개별 동작 이력에 생기는 공백 시간이 복수의 뱅크로 분산되기 때문에, 효율적인 뱅크 인터리브 동작을 수행하는 것이 가능하다. 또한, 뱅크의 선택 우선도를 뱅크 번호의 배열로 관리하기 때문에, 동작 커맨드의 송신 시각을 기록하여 송신 시각을 서로 비교하는 복잡한 메커니즘을 실장하는 일 없이, 마지막 동작 커맨드의 송신 이후의 경과 시간이 가장 긴 뱅크를 우선적으로 선택한다.
본 발명의 제2 실시형태에 따르면, 복수 피스의 전송 데이터의 기록 동작을 수행하기 위한 다중 기록 동작에 대해 뱅크 인터리브가 뱅크마다 수행되는 경우, 다중 기록 동작을 수행하기 위한 다중 기록 커맨드가 수행중인지의 여부가 Ry/By 신호선의 변화에 기초하여 각 뱅크마다 인식되고, 다중 기록 커맨드가 수행중이지 않는 뱅크들 중에서 선택 우선도가 가장 높은 뱅크가 선택된다. 선택된 뱅크는 다음 다중 기록 커맨드 대상으로 변경되고, 선택된 뱅크의 다음번 뱅크 선택 시의 선택 우선도의 순위는 최하위로 이동한다. 따라서, 다중 기록 동작에 대해 뱅크 인터리브를 수행할 수 있는 SSD에서도 뱅크 인터리브가 효율적으로 수행될 수 있다.
도 1은 본 발명의 제1 실시형태에 따른 SSD의 구성을 도시하는 도면이다.
도 2a는 NAND 메모리의 물리 블록의 구성예를 나타내는 도면이다.
도 2b는 4치 데이터 기억 시스템에서의 임계치 분포예를 나타내는 도면이다.
도 3은 뱅크 0~3의 동작 이력을 설명하기 위한 개략도이다.
도 4는 제1 실시형태에 따른 SSD에서의 NAND 컨트롤러의 기능적 구성, 및 NAND 컨트롤러와 NAND 메모리 간의 접속 관계를 설명하기 위한 개략도이다.
도 5는 Cont. I/O 신호선의 상태와 Ry/By 신호선의 상태를 설명하기 위한 타이밍도이다.
도 6은 뱅크의 Ry/By 신호선이 공통 접속되는 경우의 채널들 간의 병렬 동작을 고려한 NAND 컨트롤러의 특정 구성예를 도시하는 도면이다.
도 7은 제1 실시형태에 따른 SSD의 뱅크의 동작을 설명하기 위한 흐름도이다.
도 8은 제1 실시형태에 따른 SSD의 ch0 컨트롤러의 동작을 설명하기 위한 흐름도이다.
도 9는 우선 순위의 배열의 변화를 설명하기 위한 도면이다.
도 10은 복수의 플레인을 포함하는 뱅크의 구성을 설명하기 위한 개략도이다.
도 11은 Cont. I/O 신호선의 상태와 Ry/By 신호선의 상태를 설명하기 위한 다른 타이밍도이다.
도 12는 본 발명의 제2 실시형태에 따른 SSD에서의 NAND 컨트롤러의 기능적 구성, 및 NAND 컨트롤러와 NAND 메모리 간의 접속 관계를 설명하기 위한 개략도이다.
도 13은 제2 실시형태에 따른 SSD의 뱅크의 동작을 설명하기 위한 흐름도이다.
도 14는 뱅크 i의 동작 상태의 인식 변화를 설명하기 위한 도면이다.
도 15는 제2 실시형태에 따른 SSD의 ch0 컨트롤러의 동작을 설명하기 위한 흐름도이다.
NAND 메모리에의 데이터 기록을 비롯한 메모리 조작에 필요한 시간은 제조 변동 등으로 칩들마다 다르다. 따라서, 데이터 기록 동작에 필요한 시간은 뱅크들마다 다를 수 있다. 뱅크 인터리브가 수행될지라도, 각각의 뱅크에 착안하면, 기록 동작에 필요한 시간의 차이로 인해 데이터의 기록 동작 또는 수신 동작 중 어느 것이 수행되는 동안 공백 시간이 발생한다. 이 공백 시간이 특정 뱅크에 편중되어 발생하면, NAND 메모리 전체에 대한 데이터의 전송 속도가 저하하고 전송 효율이 열화되는 것을 본원 발명자가 발견하였다. 미국 특허 출원 공개 제2006/0152981호에는 이 문제를 해결하기 위한 기술에 대한 어떤 개시나 제안도 없다.
본 발명에 따른 메모리 시스템 및 메모리 시스템의 인터리브 제어 방법의 예시적인 실시형태에 대해, 이하 첨부 도면을 참조하여, 상세히 설명한다. 그러나, 본 발명이 이하의 실시형태들에 제한되는 것은 아니다.
도 1은 본 발명의 제1 실시형태에 따른 메모리 시스템의 구성의 블록도이다. 메모리 시스템의 일례로서 SSD를 설명하지만, 본 실시형태의 적용 대상이 SSD에 한정되지는 않는다.
SSD는 ATA(Advanced Technology Attachment) 규격의 통신 인터페이스를 통해 퍼스널 컴퓨터 등의 호스트 장치와 접속되어, 호스트 장치의 외부 기억 유닛으로서 기능한다. SSD는 호스트 장치에 의해 판독 또는 기록될 데이터를 저장하는 비휘발성 메모리인 NAND 메모리(2)와, SSD의 데이터 전송 제어를 수행하는 데이터 전송 장치(1)와, 그 데이터 전송 장치(1)에 의해 데이터 전송되는 전송 데이터를 일시적으로 저장하는 휘발성 메모리인 RAM(Random Access Memory)(3)를 포함한다. 호스트 장치로부터 송신된 데이터는 데이터 전송 장치(1)의 제어 하에, 일단 RAM(3)에 저장된 다음, RAM(3)으로부터 판독되어 NAND 메모리(2)에 기록된다.
데이터 전송 장치(1)는, ATA 인터페이스(1/F)를 제어하고 호스트 장치와 RAM(3) 간의 데이터 전송을 제어하는 ATA 인터페이스 컨트롤러(ATA 컨트롤러)(10)와, RAM(3)에 대한 데이터의 판독 및 기록을 제어하는 RAM 컨트롤러(30)와, NAND 메모리(2)와 RAM(3) 간의 데이터 전송을 제어하는 NAND 컨트롤러(20)와, 펌웨어에 기초하여 데이터 전송 장치(1) 전체를 제어하는 MPU(Micro Processing Unit)(40)를 포함한다.
NAND 메모리(2)는 병렬로 동작하는 4개의 병렬 동작 요소(2a~2d)를 구비하고, 그 병렬 동작 요소(2a~2d)는 독립적으로 신호선 그룹(채널 ch0~ch3)을 통해 각각 NAND 컨트롤러(20)에 접속된다. 병렬 동작 요소(2a~2d)는 개별적으로 동작 가능한 4개의 메모리 영역인 뱅크 0~뱅크 3으로 분할된다. 각 뱅크는 하나 이상의 메모리 칩(NAND형 플래시 메모리)을 포함한다. 예컨대, 각 뱅크마다 1 칩, 2 칩, 또는 4 칩을 포함한 구성을 고려할 수 있다. 각 메모리 칩은 독립적으로 데이터 소거가 가능한 최소 단위인 블록(물리 블록)을 복수개 포함한다. 각각의 블록은 일괄하여 기록 및 판독이 가능한 단위인 페이지를 복수개 포함한다.
도 2a는 NAND 메모리(2)의 물리 블록의 구성예를 도시한다. 각 블록은 X 방향을 따라 순차적으로 배열된 (m+1)개의 NAND 스트링을 포함한다(m은 0 이상의 정수이다). (m+1)개의 NAND 스트링에 각각 포함되는 선택 트랜지스터(ST1)는 드레인이 비트선(BL0~BLm)에 접속되고, 게이트가 선택 게이트선(SGD)에 공통 접속된다. 또한, 선택 트랜지스터(ST2)는 소스가 소스선(SL)에 공통 접속되고, 게이트가 선택 게이트선(SGS)에 공통 접속된다.
각 메모리 셀 트랜지스터(MT)는 반도체 기판 상에 형성된 적층 게이트 구조를 갖는 MOSFET(Metal Oxide Semiconductor Field Effect Transistor)를 포함한다. 적층 게이트 구조는 게이트 절연막을 통해 반도체 기판 상에 형성된 전하 축적층(부유 게이트 전극)과, 게이트 간 절연막을 통해 그 전하 축적층 상에 형성된 제어 게이트 전극을 포함한다. 메모리 셀 트랜지스터(MT)에서는 부유 게이트 전극에 축적된 전자의 수에 따라 임계 전압이 변하고, 메모리 셀 트랜지스터(MT)는 이 임계 전압의 차이에 따라 데이터를 기억한다.
메모리 셀 트랜지스터(MT)는 1 비트 또는 다치(2 비트 이상의 데이터)를 저장하도록 구성될 수 있다.
각 NAND 스트링에 있어서, (n+1)개의 메모리 셀 트랜지스터(MT)는 선택 트랜지스터(ST1)의 소스와 선택 트랜지스터(ST2)의 드레인과의 사이에, 각각의 전류 경로가 직렬 접속되도록 배치된다. 즉, 복수의 메모리 셀 트랜지스터(MT)는 인접한 메모리 셀 트랜지스터가 확산 영역(소스 영역 또는 드레인 영역)을 공유하는 형태로 Y 방향으로 직렬 접속된다. 제어 게이트 전극은 드레인측에 가장 근접 위치한 메모리 셀 트랜지스터(MT)부터 순차적으로 워드선(WL0~WLn)에 각각 접속된다. 따라서, 워드선(WL0)에 접속된 메모리 셀 트랜지스터(MT)의 드레인은 선택 트랜지스터(ST1)의 소스에 접속되고, 워드선(WLn)에 접속된 메모리 셀 트랜지스터(MT)의 소스는 선택 트랜지스터(ST2)의 드레인에 접속된다.
워드선(WL0~WLn)은 블록 내의 NAND 스트링들 사이에서 메모리 셀 트랜지스터(MT)의 제어 게이트 전극을 공통 연결한다. 즉, 블록 내에서 동일한 행에 있는 메모리 셀 트랜지스터(MT)의 제어 게이트 전극은 동일한 워드선(WL)에 접속된다. 이 동일한 워드선(WL)에 접속된 (m+1)개의 메모리 셀 트랜지스터(MT)는 페이지로서 취급되고, 판독/기록은 각 페이지마다 수행된다.
비트선(BL0~BLm)은 블록들 사이에서 선택 트랜지스터(ST1)의 드레인을 공통 연결한다. 즉, 복수의 블록 내에서 동일한 라인에 있는 NAND 스트링은 동일한 비트선(BL)에 접속된다.
또한, 메모리 셀 트랜지스터(MT)는 부유 게이트 전극을 갖는 구성뿐만 아니라, MONOS(Metal-Oxide-Nitride-Oxide-Silicon) 트랜지스터와 같이, 전하 축적층으로서의 질화막 계면에 전자를 트랩시킴으로써 임계치를 조정할 수 있는 구성을 구비할 수도 있다. MONOS 구조를 갖는 메모리 셀 트랜지스터(MT)도 마찬가지로 1 비트 또는 다치(2 비트 이상의 데이터)를 저장하도록 구성될 수 있다.
도 2b는 메모리 셀 트랜지스터(MT)에 2 비트를 저장하는 4치 데이터 기억 시스템에서의 임계치 분포예를 도시한다.
4치 데이터 기억 시스템에서는, 상위 페이지 데이터 "x"와 하위 페이지 데이터 "y"로 정의되는 4치 데이터 "xy" 중 어느 하나가 메모리 셀 트랜지스터(MT)에 유지될 수 있다.
4치 데이터 "xy"에 있어서, 메모리 셀 트랜지스터(MT)의 임계 전압의 순서대로 예컨대 데이터 "11", "01", "10", "10"이 할당된다. 데이터 "11"의 경우, 메모리 셀 트랜지스터(MT)의 임계 전압이 네거티브 소거 상태이다.
하위 페이지의 기록 동작에서는, 하위 비트 데이터 "y"의 기록에 의해, 데이터 "11"(소거 상태)의 메모리 셀 트랜지스터(MT)에 대하여 선택적으로 데이터 "10"가 기록된다.
상위 페이지의 기록 이전의 데이터 "10"의 임계 분포는 상위 페이지의 기록 이후의 데이터 "01"과 데이터 "00"의 임계 분포의 중간에 위치하며, 상위 페이지의 기록 이후의 임계 분포보다 더 넓을 수 있다.
상위 페이지의 기록 동작에 있어서, 데이터 "11"의 메모리 셀과 데이터 "10"의 메모리 셀에 대하여, 각각 선택적으로 상위 비트 데이터 "x"의 기록이 수행되고, 데이터 "01"과 "00"이 거기에 기록된다.
다시 도 1을 참조하면, MPU(40)는 논리 블록을 형성하도록 NAND 메모리(2) 내의 각각 병렬 동작 요소(2a~2d)로부터 복수의 물리 블록을 수집하여 4 채널마다 동시에 데이터 소거를 수행할 수 있고, 논리 블록 단위로 기억 영역을 할당할 수 있다. 논리 블록은 예컨대 같은 뱅크에 속하는 물리 블록을 각 채널(ch0~ch3)마다 하나씩 선택하여 구성된다. 4 채널 구성의 경우 1 논리 블록은 4 물리 블록을 포함한다. 또한, 논리 블록을 구성하는 각 물리 블록의 4 물리 페이지는 논리 페이지를 구성하기 위한 세트로서 지정되어 4 채널마다 동시에 기록 및 판독을 수행할 수 있다.
한번에 뱅크에 기록될 수 있는 데이터의 사이즈가 미리 결정되며, 이하 이 사이즈를 단위 기록 사이즈라고 칭한다. 제1 실시형태에서는 단위 기록 사이즈가 페이지(물리 페이지) 사이즈와 같은 값을 갖는다. 각각의 병렬 동작 요소(2a~2d)와 NAND 컨트롤러(2) 간의 접속은 이하에서 상세하게 설명하기로 한다. 또한, NAND 메모리에 대해 복수의 독립 버스를 갖고 각각의 플래시 메모리 칩에 대해 독립된 이벤트 처리를 가능하게 하는 비휘발성 반도체 메모리 장치의 일례에 대해서는 동 출원인이 출원한 일본 특허 출원 공개 평10-187359호에 개시되어 있다.
RAM(3)에 저장된 데이터가 판독되어 NAND 메모리(2)에 기록되는 경우, MPU(40)는 데이터를 RAM(3)로부터 NAND 메모리(2)에 전송하기 위한 기록 요구를 NAND 컨트롤러(20)에 발행한다. NAND 컨트롤러(20)는 그 기록 요구에 기초하여, RAM(3)로부터 각 단위 기록 사이즈의 전송 데이터를 판독하고, 판독된 단위 기록 사이즈의 전송 데이터를 NAND 메모리(2)에 순차 전송한다. NAND 메모리(2) 내의 기록 목적지(전송 목적지)인 병렬 동작 요소의 각 뱅크에 전송 데이터가 기록된다.
각 뱅크는 데이터 기록이 실행중인 동안 다음 전송 데이터를 수신할 수 없다. 또한, NAND 컨트롤러(20)는 1 채널을 통해 동시에 복수의 전송 데이터를 전송할 수 없다. 그러므로, 제1 실시형태에 따른 SSD는 데이터 기록 동작에 대해 뱅크 인터리브를 수행하는 기능을 갖는다. 이하에, 데이터 기록 동작에 대한 뱅크 인터리브에 관해 구체적으로 설명한다.
먼저, 소정의 병렬 동작 요소에 복수 피스의 전송 데이터를 기록할 경우, MPU(40)는 병렬 동작 요소에 포함된 복수의 뱅크에 그 전송 데이터의 기록 목적지가 균일하게 분배되도록 각 전송 데이터마다 기록 목적지를 할당한다. 예컨대, 병렬 동작 요소(2a)에 12 피스의 전송 데이터를 기록할 경우, 그 병렬 동작 요소(2a)의 뱅크 0~3은 각각 3 피스의 전송 데이터의 기록 목적지가 된다. 호스트 장치가 지정하는 논리 어드레스(LBA: Logical Block Addressing)가 뱅크와 연관될 경우, MPU(40)는 뱅크 인터리브될 수 있는 전송 데이터의 피스를 선택하여, 전송 효율을 향상시킬 수 있다.
NAND 컨트롤러(20)는 RAM(3)으로부터 12 피스의 전송 데이터를 판독하여 뱅크 0~3에 각각 3 피스의 전송 데이터를 하나씩 순차 전송한다. 이 때, NAND 컨트롤러(20)는 전송 데이터의 피스가 전송된 후에, 데이터 기록 동작을 수행하고 있지 않는 뱅크를 선택하고, 그 선택된 뱅크가 기록 목적지로서 지정되어 있는 전송 데이터의 다른 피스의 전송 동작을 수행한다. 다시 말해, 데이터의 피스가 전송될 때마다 NAND 컨트롤러(20)는 기록 목적지(전송 목적지)로서의 뱅크를 전환(변경)한다. 데이터 기록 동작을 수행하고 있지 않는 뱅크가 없는 경우, NAND 컨트롤러(20)는 어느 한 뱅크가 데이터 기록 동작을 종료할 때까지 대기한다.
기록 동작에 대해 뱅크 인터리브를 수행함으로써, 전송 데이터의 전송 동작이 NAND 컨트롤러(20)에 의해 수행되고 나서 다음 전송 동작이 수행되기까지의 시간이 단축될 수 있고, 그 결과, 뱅크 인터리브가 수행되지 않는 경우와 비교하여 전송 효율이 향상된다. NAND 컨트롤러(20)는 병렬 동작 요소(2a)와 동시에 동작하는 각각의 병렬 동작 요소(2b~2d)에 포함된 뱅크 0~3에 대해, 데이터 기록 동작에 대한 뱅크 인터리브가 독립적으로 수행되도록 구성된다. 동일한 뱅크에 속하는 물리 블록이 각 채널(ch0~ch3)로부터 하나씩 선택되어 논리 블록을 형성할 경우, 각 병렬 동작 요소(2a~2b)에 포함된 동일 번호의 뱅크에 대하여 병렬 액세스가 수행된다.
뱅크 인터리브 동작을 수행할 때에 전송 목적지 뱅크를 선택하는 방법에 대해서 다음에 설명한다. 이어지는 설명에서는, 데이터 기록 동작이 수행중인 상태를 비지 상태(busy state)라고 표현하고, 데이터 동작이 수행중이 아닌 상태를 레디 상태(ready state)라고 표현한다.
제1 실시형태와 비교되는 방법으로서, 뱅크 0~3에 우선 순위를 설정하여, 이 우선 순위를 우선도가 높은 순위부터 예컨대 뱅크 0→뱅크 1→뱅크 2→뱅크 3과 같이 고정하는 방법이 있다. 이 방법을 비교예의 방법이라 칭한다. 즉, 비교예의 방법에 따르면, NAND 컨트롤러(20)는 1 피스의 전송 데이터가 소정의 뱅크에 전송된 후에 레디 상태의 뱅크들 중에서, 고정된 우선 순위에 기초해서 뱅크 하나를 선택하여, 선택된 뱅크로 전송 목적지 뱅크를 전환한다.
데이터 기록에 필요한 시간은 각 뱅크마다 다르다. 이 차이에 의해, 데이터 기록 동작의 완료 후 다음 전송 데이터가 전송될 때까지 공백 시간이 생길 수 있다. 이 공백 시간이 특정 뱅크에 편중되어 발생하면, 전체의 전송 효율이 열화될 수 있다. 비교예의 방법에 따르면, 공백 시간의 편차는 피할 수 없다. 한편, 제1 실시형태는 마지막 데이터 전송의 실행 이후의 경과 시간이 긴 오래된 뱅크의 우선도가 더 높아지도록 우선 순위를 순차적으로 갱신함으로써 공백 시간이 특정 뱅크에 편중 발생하는 것을 막는 것에 주된 특징이 있다. 비교예의 방법과 제1 실시형태의 방법 간의 동작 차이는 이하에 예시적으로 개략 설명하기로 한다.
도 3은, 3 피스의 전송 데이터를 각각의 뱅크 0~3에 기록할 때 비교예의 방법과 제1 실시형태의 방법에 따라 뱅크 전환이 수행될 경우 각각의 뱅크 0~3의 동작 이력을 설명하기 위한 개략도이다. 도 3에서는 경과 시간을 X축 상에 나타낸다. 숫자가 첨부된 공백의 직사각형 패턴은 NAND 컨트롤러(20)로부터 각각의 뱅크로 각각의 단위 기록 사이즈의 데이터 전송의 실행 이력을 나타내고, 직사각형 패턴에 첨부된 숫자는 우선 순위에 기초하여 결정된 데이터 전송 순서를 나타낸다. 빗금 표시된 직사각형 패턴은 각 뱅크에 전송된 각각의 단위 기록 사이즈의 데이터 기록 동작의 실행 이력을 나타낸다.
도 3의 상단에 도시하는 바와 같이, 비교예의 방법에 따르면, 전송 목적지인 뱅크 0에 제1 데이터가 전송된다(데이터 전송 1). 그 후, 높은 우선 순위부터 뱅크 0, 1, 2, 3의 순서로 고정된 우선 순위에 따라, 전송 목적지로서 뱅크 1, 2, 3, 0, 1, 2를 지정함으로써 데이터 전송 2, 3, 4, 5, 6, 7이 수행된다. 데이터 전송 7이 종료되었을 때, 뱅크 3의 경우 데이터 전송 4에 의해 전송된 데이터의 기록이 길어지므로, 뱅크 3은 여전히 비지 상태에 있는 것으로 상정한다. 데이터 전송 7이 종료된 시점에서는, 레디 상태에 있는 뱅크 0이 다음 데이터 전송 8에 대한 전송 목적지로서 선택된다. 데이터 전송 8이 종료된 시점에서는 뱅크 1과 뱅크 3이 레디 상태에 있다. 그러나, 고정된 우선 순위에 따르면, 뱅크 1이 다음 전송 목적지로서 선택된다. 이후, 뱅크 2와 3에 대해 데이터 전송 10, 11이 수행되고, 마지막으로 뱅크 3에 대해 데이터 전송 12가 수행된다.
뱅크 3의 동작 이력에 착안할 경우, 데이터 전송 4에 의한 전송 데이터의 기록을 완료하고 나서 데이터 전송 11이 시작될 때까지 긴 공백 시간이 생긴다. 그 공백 시간 때문에, 뱅크 3에서 3 피스의 데이터의 전송 및 기록에 필요한 시간이 다른 뱅크에 비교해서 현저하게 길어진다. 그 결과, 합계 12 피스의 데이터 전송이 시작되고 나서 모든 데이터의 기록이 종료될 때까지 필요한 시간이 길어지는 것이 이해된다.
도 3의 하단부에 도시한 제1 실시형태의 방법에 따르면, 초기 상태의 우선 순위는 뱅크 0, 1, 2, 3이고, 그 우선 순위는 마지막 데이터 전송의 실행 이후 경과 시간이 가장 긴 오래된 뱅크가 우선도(선택 우선도)가 더 높아지도록 순차적으로 갱신된다. 그 결과, 데이터 전송 8까지의 동작 이력은 비교예의 방법과 같아진다. 데이터 전송 8이 종료된 시점에서, 마지막 데이터 전송 시간은 가장 오래된 것부터 뱅크 3, 1, 2, 0의 순서이다. 즉 뱅크 1이 아니라 뱅크 3이 데이터 전송 9의 전송 목적지로 선택된다. 데이터 전송 9가 종료된 시점에서, 마지막 데이터 전송 시간은 가장 오래된 것부터 뱅크 1, 2, 0, 3의 순서이기 때문에, 뱅크 1이 데이터 전송 10의 전송 목적지로서 선택된다. 이후, 데이터 전송 11, 12가 같은 동작에 따라 수행된다.
제1 실시형태의 방법에 의한 동작 이력에 따르면, 비교예 방법의 동작 이력예에서 뱅크 3에 생긴 공백 시간은 뱅크 1~3에 분산된다. 그 결과, 전체 12 피스의 데이터의 기록이 종료될 때까지 필요한 전체 전송 시간이 비교예의 방법에 비교해서 단축되어, 전송 속도가 향상되는 것이 이해된다. 즉, 제1 실시형태의 방법을 채용하는 경우, 비교예의 방법을 채용한 경우와 비교해서 전송 효율이 향상된다.
일반적으로, 하위 페이지에의 기록은 상위 페이지에의 기록보다 고속으로 수행된다. 도 3의 상단에 도시하는 비교예의 방법에서 데이터 전송 5, 6, 7, 11에 의해 전송된 전송 데이터(도 3의 하단에 도시하는 제1 실시형태의 방법에서는 데이터 전송 5, 6, 7, 9에 의해 전송된 전송 데이터에 상당)의 기록은 예컨대 하위 페이지에의 기록에 대응한다. 데이터 전송 1, 2, 3, 4, 8, 9, 10, 12에 의해 전송된 전송 데이터(도 3의 하단에 도시하는 제1 실시형태의 방법에서는 데이터 전송 1, 2, 3, 4, 8, 10, 11, 12에 의해 전송된 전송 데이터에 상당)의 기록은 예컨대 상위 페이지에의 기록에 대응한다.
도 4는 개괄적으로 전술한 제1 실시형태의 특징을 실현하기 위해 NAND 컨트롤러(20)에 포함된 기능적 구성, 및 NAND 메모리(2)와 NAND 컨트롤러(20) 간의 접속 관계를 설명하기 위한 개략도이다. 도 4에 도시하는 바와 같이, NAND 컨트롤러(20)는 병렬 동작 요소(2a~2d)에 대한 데이터 전송을 각각 제어하는 컨트롤러로서 4개의 컨트롤러[ch0 컨트롤러(210), ch1 컨트롤러(220), ch2 컨트롤러(230) 및 ch3 컨트롤러(240)]를 포함한다. ch0 컨트롤러(210), ch1 컨트롤러(220), ch2 컨트롤러(230) 및 ch3 컨트롤러(240)가 각각 동일한 기능을 갖고 있기 때문에, 이후에는 대표로서 ch0 컨트롤러(210)에 관해서만 설명한다. 도 4에는 ch0 컨트롤러(210)에 의해 데이터 전송이 제어되는 병렬 동작 요소(2a)만 도시한다.
병렬 동작 요소(2a)의 뱅크 0~3은 레디/비지(Ry/By) 신호선(Ry/By0~Ry/By3)을 통해 ch0 컨트롤러(210)에 각각 개별적으로 접속된다. 뱅크 0~3은 뱅크 자신이 비지 상태인지 레디 상태인지를 각각 Ry/By 신호선을 통해 ch0 컨트롤러(210)에 개별적으로 통지한다. 일례로, Ry/By=L이 비지 상태를 나타내고, Ry/By=H가 레디 상태를 나타내는 것으로 상정한다. 뱅크 0~3은 칩을 선택하기 위한 칩 인에이블(CE) 신호선(CE0~CE3)을 통해, 각각 ch0 컨트롤러(210)에 개별적으로 접속된다. 각각의 뱅크가 복수의 메모리 칩을 구비하는 경우, 각 메모리 칩의 Ry/By 신호선 및 CE 신호선은 공통 접속된다.
또한, ch0 컨트롤러(210)에는 커맨드, 어드레스 및 데이터를 전송하기 위한 Cont. I/O 신호선의 일단이 접속된다. Cont. I/O 신호선의 타단은 4개로 분기되며, 분기된 4개의 Cont. I/O 신호선은 각각 뱅크 0~3에 접속된다. ch0 컨트롤러(210)는 데이터 기록 커맨드, 기록 목적지의 어드레스, 및 RAM(3)으로부터 판독된 단위 기록 사이즈의 전송 데이터를 포함하는 기록 커맨드를 Cont. I/O 신호선을 통해 4개의 뱅크 0~3에 1개씩 송신한다. Cont. 1/O 신호선의 NAND 메모리(2)측이 4개로 분기되어 뱅크 0~3에 접속되기 때문에, 뱅크 0~3은 동시에 동일한 기록 커맨드를 수신한다. 그러나, 각각의 뱅크 0~3은 CE 신호선의 레벨에 기초하여 기록 커맨드를 실행하는지의 여부를 판정한다.
도 5는 소정의 뱅크(뱅크 i(i=0~3))가 전송 목적지로서 지정되어 있는 기록 커맨드가 발행되고 기록 동작이 수행될 경우의 Cont. I/O 신호선의 상태와, 전송 목적지 뱅크 i와 ch0 컨트롤러(210)를 연결하는 Ry/By 신호선의 상태를 나타내는 타이밍도이다. 도 5에 도시하는 바와 같이, 데이터 입력 커맨드, 기록 어드레스, 전송 데이터 및 데이터 기록 커맨드를 포함하는 기록 커맨드가 ch0 컨트롤러(210)로부터 Cont. I/O 신호선을 통해 전송되고, 이 기록 커맨드를 수신한 뱅크 i는 전송 데이터의 기록을 시작하여 Ry/By=L을 설정하며, 기록이 완료될 경우, 뱅크 i는 Ry/By=H를 설정한다.
더욱 구체적으로, 뱅크 i를 구성하는 각각의 메모리 칩은 송신된 전송 데이터를 일시적으로 저장하는 1차 버퍼(데이터 캐시)와, 그 데이터 캐시와 메모리 셀 어레이의 사이에 개재된 2차 버퍼(페이지 버퍼)를 포함한다.
ch0 컨트롤러(210)는 기록 커맨드에 포함된 단위 기록 사이즈(페이지 사이즈)의 전송 데이터를 데이터 캐시에 전송한다. 전송 데이터에 이어 데이터 기록 커맨드를 수신하면, 뱅크 i를 구성하는 각각의 메모리 칩은 Ry/By=L을 설정하고 데이터 캐시에 저장된 전송 데이터를 페이지 버퍼에 전송한다.
뱅크 i를 구성하는 각각의 메모리 칩은 페이지 버퍼에 전송된 전송 데이터를 기억 영역인 메모리 셀 어레이의 기록 어드레스에 프로그래밍한다. 또한, 뱅크 i를 구성하는 각각의 메모리 칩은 메모리 셀 어레이로부터의 프로그래밍된 데이터를 판독하고, 그 판독된 데이터를 페이지 버퍼에 유지된 전송 데이터와 비교함으로써, 전송 데이터가 메모리 셀 어레이에 제대로 프로그래밍되어 있는지의 여부를 검증한다(프로그래밍 및 검증).
비교 및 검증 결과, 양쪽 데이터가 서로 일치하는 경우, 뱅크 i를 구성하는 각각의 메모리 칩은 전송 데이터가 메모리 셀 어레이에 제대로 프로그래밍되어 있는 것으로 인식하고, Ry/By=H를 설정하며, 수신된 기록 커맨드와 관련된 기록 동작을 종료한다. 비교 및 검증 결과, 양쪽 데이터가 서로 일치하지 않는 경우, 뱅크 i를 구성하는 각각의 메모리 칩은 양쪽 데이터가 그 비교 및 검증 결과와 서로 일치할 때까지, 페이지 버퍼에 유지된 전송 데이터를 메모리 셀 어레이에 프로그래밍하는 것을 시도한다. 시도 횟수는 원하는 값으로 미리 설정된다.
이에, 뱅크 i를 구성하는 각각의 메모리 칩에서의 전송 데이터의 기록 동작은 데이터 캐시로부터 페이지 버퍼에의 전송 데이터의 전송과, 전송 데이터의 메모리 셀 어레이에의 프로그래밍과, 프로그래밍된 데이터의 판독 및 검증을 포함하기 때문에, ch0 컨트롤러(210)로부터 뱅크 i에의 데이터 전송 동작과 비교해서 장시간이 필요하다.
이 예에서는, 기록 커맨드가 데이터 입력 커맨드, 기록 어드레스, 전송 데이터, 및 데이터 기록 커맨드를 포함한다. 그러나, 기록 커맨드는 이들 피스의 정보 외에 다른 정보를 송신할 수도 있다.
다시 도 4를 참조하면, ch0 컨트롤러(210)는 우선 순위 관리 유닛(211)과, 기록 커맨드를 병렬 동작 요소(2a)의 뱅크 0~3에 송신하는 커맨드 프로세서(212)를 더 포함한다. 우선 순위 관리 유닛(211)은 기록 커맨드가 송신될 때마다 전송 목적지 뱅크의 우선 순위를 갱신하고 관리한다. 구체적으로, 우선 순위 관리 유닛(211)은 뱅크의 식별 번호(뱅크 번호, 이 경우는 0~3)를 선두부터 우선도의 내림차순으로 정렬된 배열로 관리한다. 예컨대, 우선 순위 관리 유닛(211)은 내부에 레지스터나 소규모 메모리 등의 기억 영역을 포함하여, 이 기억 영역에 우선 순위의 배열을 유지할 수도 있고, 또는 다른 기억 영역에 유지할 수도 있다. 우선 순위 관리 유닛(211)은 마지막으로 기록 커맨드의 송신이 실행될 때, 이 기록 커맨드에 포함된 전송 목적지 뱅크의 우선도를 최하위로 이동시킴으로써, 마지막 데이터 전송의 실행 이후의 경과 시간이 가장 긴 뱅크 번호가 배열의 선두에 가장 가깝게 되는 식으로 순차 갱신한다. 뱅크 번호가 선두부터 우선도의 내림차순으로 배열된 것으로 상정하였지만, 뱅크 번호는 우선도의 올림차순으로 선두로부터 배열될 수도 있다.
커맨드 프로세서(212)는 MPU(40)로부터 수신된 기록 요구에 기초하여, RAM(3)로부터 전송 데이터를 판독하여, 기록 커맨드를 생성한다. 예컨대, 커맨드 프로세서(212)는 내부에 레지스터나 소규모 메모리 등의 기억 영역을 포함하여 이 기억 영역에 생성된 기록 커맨드를 유지할 수도 있고 또는 다른 기억 영역에 유지할 수도 있다. 커맨드 프로세서(212)는 Ry/By 신호선을 통해 통지된 뱅크 0~3의 상태 및 우선 순위 관리 유닛(211)에 의해 관리되는 우선 순위에 기초하여 데이터 전송 목적지(기록 커맨드의 대상 뱅크)를 선택하여, 그 선택된 뱅크가 Cont. I/O 신호선을 통해 기록 목적지로서 뱅크 0~3에 설정되는 기록 커맨드를 송신한다
병렬 동작 요소(2a)의 각 뱅크에 대한 Ry/By 신호선이 ch0 컨트롤러(210)에 접속되는 것으로 설명하고 있지만, 각 뱅크에 대한 Ry/By 신호선은 병렬 동작 요소들(2a~2d) 사이에 공통 접속되어 NAND 컨트롤러(20)에 입력될 수도 있다. 각각의 뱅크에 대한 Ry/By 신호선이 공통 접속되는 경우의 채널들 간의 병렬 동작을 고려한 NAND 컨트롤러(20)의 특정 구성예에 대해서 도 6을 참조하여 설명한다.
도 6은 각 뱅크에 대한 Ry/By 신호선이 공통 접속되는 경우의 채널들 간의 병렬 동작을 고려한 NAND 컨트롤러(20)의 특정 구성예를 나타내는 도면이다.
NAND 컨트롤러(20)는, 각각의 병렬 동작 요소가 독립적으로 동작하도록 DMA 컨트롤러(DMAC)(60), 에러 정정 회로(ECC)(61) 및 NAND I/F(62)를 포함한다. 각각의 NAND I/F(62)는 액세스되는 뱅크에 따라 CE 신호선(CE0~CE3)을 제어하기 위해, 4 뱅크마다 CE 신호선(CE0~CE3)과 접속된다.
NAND 컨트롤러(20)는 채널의 이용 권리를 중재하는 아비터(63)와, 각 뱅크마다 병렬 동작 요소(2a~2d)의 사이에 공통 접속된 Ry/By 신호선을 모니터링하고 뱅크의 상태를 관리하는 4개의 뱅크 컨트롤러(BANK-C)(64)를 더 포함한다. 제1 실시형태에서는 4 뱅크가 1 채널을 공유하기 때문에, 복수의 액세스 요구가 중복되는 경우, 아비터(63)는 시간 공유 방식으로 채널을 이용하도록 채널 이용 권리를 중재한다.
ch0 컨트롤러(210)와 도 6에 도시한 구성예 간의 대응 관계에 대해 설명한다. 우선 순위 관리 유닛(211)과 커맨드 프로세서(212)가 아비터(63) 내에 배치된다. 아비터(63)에 배치된 우선 순위 관리 유닛(211) 및 커맨드 프로세서(212)와, 각 채널에 포함된 DMAC들(60), ECC들(61) 및 NAND I/F들(62) 중 ch0에 대응하는 것과, BANC-C(64)가 협동하여 ch0 컨트롤러(210)로서 기능한다.
아비터(63)에 배치된 커맨드 프로세서(212)에 의해 생성된 기록 커맨드는 기록 목적지 뱅크에 대응하는 4개의 BANK-C(64) 중 하나에 큐잉된다. 커맨드 프로세서(212)는 우선 순위 관리 유닛(211)에 의해 관리된 배열에 기초하여 4개의 BANK-C(64)로부터 Ry/Ry=H를 수신하고, 최상위 우선도를 가진 뱅크를 관리하는 BACK-C로부터 기록 커맨드를 판독하며, 판독된 기록 커맨드를 NAND I/F(62)를 통해 병렬 동작 요소(2a)에 송신한다.
ch1 컨트롤러(220)~ch3 컨트롤러(240)에 각각 포함된 우선 순위 관리 유닛 및 커맨드 프로세서는 같은 식으로 아비터(63) 내에 배치되고, 우선 순위 관리 유닛(211) 및 커맨드 프로세서(212)와 통합된다. 우선 순위 관리 유닛(211) 및 커맨드 프로세서(212)와, DMAC들(60), ECC들(61), NAND I/F들(62) 중 ch에 대응하는 것과, BACK-C(64)가 협동하여 각각 ch1 컨트롤러(220)~ch3 컨트롤러(240)로서 기능한다.
전술한 바와 같이 구성된 제1 실시형태를 따라 SSD에서 데이터를 NAND 컨트롤러(20)로부터 NAND 메모리(2)에 전송하는 동작에 대해서 도 7 및 도 8을 참조하면서 이하에 설명한다.
도 7은 병렬 동작 요소(2a)의 뱅크의 동작을 설명하기 위한 흐름도이다. 도 7에 도시하는 바와 같이, 전송 목적지로서 메모리 칩 자체를 지정하는 기록 커맨드의 수신 완료 시에, 뱅크를 구성하는 메모리 칩은 메모리 칩 자체를 ch0 컨트롤러(210)에 접속하기 위한 Ry/By 신호선의 상태를 H에서 L로 변경하여, 기록 커맨드에 포함된 전송 데이터의 기록을 개시한다(단계 S11). 전송 데이터의 기록의 완료 시에, 뱅크는 Ry/By 신호선의 상태를 L에서 H로 변경하고(단계 S12), 단계 S11로 복귀한다.
도 8은 ch0 컨트롤러(210)의 동작을 설명하기 위한 흐름도이다. 도 8에 나타내는 바와 같이, 데이터를 MPU(40)로부터 병렬 동작 요소(2a)에 전송하기 위한 기록 요구의 수신 시에, 커맨드 프로세서(212)는 그 기록 요구에 기초하여 기록 목적지로서 뱅크 0~3을 각각 지정하는 복수의 기록 커맨드를 각각의 단위 기록 사이즈로 생성한다(단계 S21). 커맨드 프로세서(212)는 Ry/By=H인 뱅크를 검색하고(단계 S22), Ry/By=H인 뱅크가 없다면(단계 S22, NO), Ry/By=H인 뱅크를 발견할 때까지 검색을 계속한다.
Ry/By=H인 뱅크가 있는 경우(단계 S22, YES), 커맨드 프로세서(212)는 우선 순위 관리 유닛(211)에 의해 관리된 배열을 선두부터 참조하여, Ry/By=H인 뱅크 중에서 우선도가 가장 높은 뱅크 하나를 선택한다(단계 S23). 커맨드 프로세서(212)는 Ry/By=H인 뱅크가 하나만 있는 경우, 이 뱅크를 선택한다. 단계 S23에 계속해서, 커맨드 프로세서(212)는 생성된 기록 커맨드들 중에서, 선택된 뱅크를 기록 목적지로 지정하는 기록 커맨드를 선택하여 그 기록 커맨드를 병렬 동작 요소(2a)의 뱅크 0~3에 송신한다(단계 S24).
우선 순위 관리 유닛(211)은 기록 커맨드의 송신이 단계 S24에서 개시될 경우, 그 송신된 기록 커맨드를 실행하는 뱅크의 번호, 즉 단계 S24에서 선택된 뱅크의 번호를 우선 순위의 배열의 최후미에 이동시켜, 그 이동 전의 뱅크 번호보다 배열의 후미에 있는 뱅크 번호의 위치를 각각 하나씩 배열의 선두를 향해 앞당긴다(단계 S25). 기록 커맨드의 송신이 개시될 경우에 우선 순위의 배열이 갱신되는 것으로 상정한다. 그러나, 기록 커맨드가 송신된 직후에 또는 기록 커맨드가 송신되는 동안에 갱신이 이루어질 수도 있다. 이에 따라, 커맨드 프로세서(212)가 다음 단계 S23으로 이행할 경우, 이번 단계 S23에서 선택된 뱅크의 우선도는 최하위이다.
커맨드 프로세서(212)는 생성된 기록 커맨드가 전부 송신되었는지의 여부를 결정하고(단계 S26), 미송신 기록 커맨드가 있다면(단계 S26, NO), 커맨드 프로세서(212)는 단계 S22로 이행한다. 기록 커맨드가 전부 송신되었다면(단계 S26, YES), 동작이 종료된다.
이런 식으로, 마지막 데이터 전송의 실행 이후의 경과 시간이 가장 긴 뱅크가 전송 목적지 뱅크로서 우선적으로 선택된다. 도 9는 도 3의 하단부에 도시한 제1 실시형태에 따른 동작 이력예로서, 각 뱅크 0~3의 Ry/By 신호선의 상태와, 매초 갱신된 우선 순위의 배열을 추가한 도면이다. 도 9(및 도 3)에 도시한 공백의 직사각형 패턴(데이터 전송 동작의 이력)은 기록 커맨드를 송신하기 위한 동작의 이력의 의미로 이용된다. 뱅크 0, 1, 2, 3과 같이 우선 순위가 내림차순으로 정렬되어 있기 때문에, 최초에 수행된 데이터 전송 1의 전송 목적지로서 뱅크 0이 선택된다. 기록 커맨드의 전송이 개시된 후에, 뱅크 0의 순위가 최하위로 이동하고, 즉 뱅크 번호 0이 배열의 최후미로 이동하여, 우선 순위가 뱅크 1, 2, 3, 0으로 변한다. 우선 순위 배열에서 밑줄이 그어진 번호는 다음 데이터 전송의 전송 목적지로서 선택된 뱅크 번호를 나타낸다. 데이터 전송 7이 종료된 시점에서, 우선 순위는 뱅크 3, 0, 1, 2이고, Ry/By 신호선이 H인 뱅크 0이 전송 목적지로서 선택되며, 우선 순위는 뱅크 3, 1, 2, 0으로 변한다. 그리고, 데이터 전송 8이 종료된 시점에서 Ry/By 신호선이 H인 뱅크 1, 3 중에서, 우선도가 더 높은 뱅크 3이 데이터 전송 9의 전송 목적지로서 선택된다.
전술한 바와 같이, 제1 실시형태에 따르면, ch0 컨트롤러(210)는 기록 커맨드를 송신한 후, 병렬 동작 요소(2a)에 포함된 레디 상태의 뱅크들 중에서 선택 우선도가 가장 높은 뱅크 하나를 선택하고, 그 선택된 뱅크를 다음 기록 커맨드의 대상으로서 변경하며, 그 선택된 뱅크의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시키다. 이에, 각 뱅크마다 개별 동작 이력에 생기는 공백 시간이 복수의 뱅크로 분산되기 때문에, 효율적인 뱅크 인터리브 동작을 수행하는 것이 가능하다. 또한, 뱅크의 선택 우선도를 뱅크 번호의 배열로 관리하기 때문에, 동작 커맨드의 송신 시각을 기록하여 송신 시각을 서로 비교하는 복잡한 메커니즘을 실장하는 일 없이, 마지막 동작 커맨드의 송신 이후의 경과 시간이 가장 긴 뱅크를 우선적으로 선택한다.
데이터 기록 동작에 대해 뱅크 인터리브가 수행되는 경우에 대해서 전술하였다. 그러나, 제1 실시형태의 방법은, 뱅크 인터리브를 가능하게 하는 동작이라면, 데이터 기록을 수행하는 경우 이외의 경우에도 적용될 수 있다. 예컨대, 뱅크 인터리브가 데이터 판독 동작에 대해 수행되는 경우, 판독 커맨드와 판독 소스 어드레스를 포함하는 판독 커맨드를 송신한 후, Ry/By 신호선 및 선택 우선도의 레벨에 기초하여 데이터 판독 소스로서의 뱅크를 변경하고, 변경될 뱅크의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시킬 수 있다. 데이터 소거 동작에 대해 뱅크 인터리브가 수행될 경우, 데이터 소거 커맨드 및 소거될 데이터의 어드레스를 포함하는 데이터 소거 커맨드가 송신된 후에, Ry/By 신호선 및 선택 우선도의 순위에 기초하여 데이터 소거 커맨드의 대상 뱅크가 변경되고, 변경될 뱅크의 다음번 선택 시의 선택 우선도의 순위를 최하위 순위로 이동시킬 수 있다. 이 때, 각각의 뱅크는, 데이터 기록 동작과, 데이터 판독 동작 및 데이터 소거 동작이 수행중인 경우, Ry/By=L(비지 상태)을 출력하도록 설정되고, 데이터 기록 동작, 데이터 판독 동작, 및 데이터 소거 동작이 수행중이 아닌 경우에는 Ry/By=H(레디 상태)를 출력하도록 설정된다. 또한, 각각의 뱅크는 뱅크가 레디 상태일 경우 Ry/By=L을, 뱅크가 비지 상태일 경우 Ry/By=H를 출력할 수 있다.
뱅크들 간에 동일한 종류의 동작(여기서는 데이터 기록)에 대해 뱅크 인터리브가 수행될 경우를 전술하였다. 그러나, 제1 실시형태의 방법은 뱅크들 간에 다른 종류의 동작(데이터 기록, 데이터 판독 및 데이터 소거)에 대해서 뱅크 인터리브가 수행될 경우에도 적용될 수 있다. 즉, 동작 커맨드(기록 커맨드, 판독 커맨드 및 데이터 소거 커맨드) 대상으로서의 뱅크(전송 목적지 뱅크, 판독 소스 뱅크, 데이터 소거 커맨드의 대상으로서의 뱅크)가 Ry/By 신호선 및 선택 우선도의 순위에 기초하여 변경되고, 그 커맨드 대상 뱅크의 다음번 선택 시의 선택 우선도의 순위는 최하위로 이동할 수 있다.
또한, 4개의 병렬 동작 요소가 포함되고 각각의 병렬 동작 요소가 4개의 뱅크로 분할되는 것으로 설명하였지만, 병렬 동작 요소의 수와, 각각의 병렬 동작 요소의 뱅크의 수는 이들 수에 한정되지 않는다.
최근, 각각의 뱅크를 구성하는 각 메모리 칩의 내부가 주변 회로(로우 디코더, 컬럼 디코더 등)를 개별적으로 구비한 복수의 플레인으로 분할되고, 그 플레인이 각각 메모리 동작 커맨드에 의해 상이한 메모리 동작을 수행하게 됨으로써 고속의 메모리 액세스를 실현하는 기술이 개발되었다. 복수의 플레인을 갖는 비휘발성 반도체 메모리 장치의 일례는 미국 특허 출원 공개 제2007/0206419호에 개시되어 있다. 이 기술에 따르면, 각각의 플레인은 개별적으로 데이터 캐시 및 페이지 버퍼를 포함한다.
도 10은 각각의 뱅크(뱅크 i)를 구성하는 각각의 메모리 칩의 구성예를 설명하기 위한 개략도이다. 뱅크 i를 구성하는 각각의 메모리 칩은 도 10에 도시하는 바와 같이, 복수(여기서는 2개)의 플레인(플레인 0, 플레인 1)으로 분할되며, 플레인 0은 데이터 캐시 0, 페이지 버퍼 0, 메모리 셀 어레이 0을 포함하고, 플레인 1은 데이터 캐시 1, 페이지 버퍼 1, 메모리 셀 어레이 1을 포함한다. NAND 컨트롤러로부터 플레인 0, 플레인 1에 각각 송신된 페이지 사이즈의 전송 데이터는 각각 데이터 캐시 0, 데이터 캐시 1에 일시적으로 축적된다. 데이터 캐시 0에 축적된 전송 데이터는 페이지 버퍼 0을 통해 메모리 셀 어레이 0에 프로그래밍된다. 데이터 캐시 1에 축적된 전송 데이터는 페이지 버퍼 1을 통해 메모리 셀 어레이 1에 프로그래밍된다. 각 플레인 0, 1은 전송 데이터의 데이터 캐시 0, 1로부터 페이지 버퍼 0, 1에의 전송과, 페이지 버퍼 0, 1에 전송된 전송 데이터의 메모리 셀 어레이 0, 1에의 프로그래밍과, 프로그래밍된 데이터의 판독, 및 판독된 데이터와 페이지 버퍼 0, 1에 저장된 전송 데이터와의 비교 및 검증을 개별적으로 수행할 수 있다.
도 11은 상이한 피스의 전송 데이터를 복수의 플레인에 기록하기 위한 기록 커맨드가 송신되어 수행될 경우 Cont. I/O 신호선 및 Ry/By 신호선의 상태예를 설명하기 위한 타이밍도이다. 이후, 이 기록 커맨드를 다중 기록 커맨드라고 칭한다. 도 11 이후의 설명에서는, 도 10에 도시하는 바와 같이 구성된 각 뱅크에 대하여, 페이지 사이즈의 2 피스의 전송 데이터가 전송되어 각각 플레인 0, 1에 기록되는 것으로 상정한다.
도 11에 도시하는 바와 같이, 다중 기록 커맨드는 데이터 입력 커맨드와, 뱅크 i 내의 플레인 0의 어드레스인 제1 기록 어드레스와, 제1 기록 어드레스로 기록될 제1 전송 데이터와, 더미 기록 커맨드와, 데이터 입력 커맨드와, 뱅크 i 내의 플레인 1의 어드레스인 제2 기록 어드레스와, 제2 기록 어드레스로 기록될 제2 전송 데이터와, 데이터 기록 커맨드를 포함한다. 뱅크 i는 더미 기록 커맨드를 수신하면 일단 Ry/By=L을 설정한 다음, Ry/By=H를 설정한다. 또한, 뱅크 i는 데이터 기록 커맨드를 수신하면, 데이터 캐시 0, 1에 일시적으로 저장된 전송 데이터의 기록 동작을 동시에 개시하며, 한쪽 플레인에서 기록 동작이 수행중인 경우 Ry/By=L을 설정하고, 어느 쪽 플레인에서도 기록 동작이 수행중이 아닐 경우에는 Ry/By=H를 설정한다. 더미 기록 커맨드의 수신 후 뱅크 i의 상태가 Ry/By=L로 변경되고 나서 Ry/By=H로 복귀하는데 필요한 시간은 기록 동작 실행 동안 뱅크 i가 Ry/By=L 상태인 시간보다 짧다.
데이터 입력 커맨드, 제1 기록 어드레스, 제1 전송 데이터, 및 더미 기록 커맨드가 Cont. I/O 신호선에 송신될 경우, 뱅크 i는, Ry/By 신호선의 상태를 H에서 L로 변경한 후에, Ry/By 신호선의 상태를 L에서 H로 변경한다. 뱅크 i는 송신된 제1 전송 데이터를 데이터 캐시 0에 축적한다. Ry/By 신호선의 상태가 H에서 L로 변경된 것을 검출할 때, ch0 컨트롤러는 데이터 입력 커맨드, 뱅크 i의 플레인 1의 어드레스인 제2 기록 어드레스, 제2 전송 데이터, 및 데이터 기록 커맨드를 Cont. I/O 신호선에 송신하는 동작을 개시한다. 뱅크 i는 송신된 제2 전송 데이터를 데이터 캐시 1에 축적한다. 데이터 기록 커맨드가 송신될 경우, 뱅크 i는 데이터 캐시 0에 축적된 제1 전송 데이터의 기록 동작과, 데이터 캐시 1에 축적된 제2 전송 데이터의 기록 동작을 동시에 시작하고, Ry/By 신호선의 상태를 H에서 L로 변경한다. 플레인 0과 플레인 1에서 기록 동작을 완료하면, 뱅크 i는 Ry/By 신호선의 상태를 L에서 H로 변경한다. 따라서, 복수의 플레인 내의 데이터 캐시가 각각 전송 데이터를 축적하고, 데이터 기록 커맨드에 의해 전송 데이터의 복수의 플레인에의 기록 동작을 일제히 시작하기 때문에, 제1 실시형태에서 설명한 기록 커맨드(이하, "단일 기록 커맨드")가 복수회 계속 송신되는 경우와 비교해서 고속 기록이 실현될 수 있다. 1 다중 기록 커맨드에 의해 2 페이지분의 전송 데이터가 각각의 뱅크에 기록되기 때문에, 2 페이지의 사이즈가 단위 기록 사이즈가 된다.
Ry/By 신호선에 착안하면, 다중 기록 동작의 완료 시각 이외의 시간에 Ry/By 신호선의 상태가 L에서 H로 변경되는 것이 이해된다. 따라서, 제1 실시형태와 같이 단순히 Ry/By 신호선의 상태가 H인 뱅크들 중에서 전송 목적지가 선택되면, 뱅크 전환 타이밍은 제1 전송 데이터의 기록 동작 완료와 제2 전송 데이터의 수신 개시 사이에 존재한다. 이 타이밍에서 전송 목적지 뱅크가 선택되면, 그 뱅크에 전송되어야 하는 제2 전송 데이터가 전송될 수 없다. 이 문제점을 해결하기 위해서, 본 발명의 제2 실시형태에서는 다중 기록 커맨드에 기초하여 모든 피스의 전송 데이터의 기록이 완료된 뱅크들 중에서 전송 목적지 뱅크를 선택하도록 구성되어 있다.
도 12는 제2 실시형태에 따른 NAND 컨트롤러의 기능적 구성을 설명하기 위한 개략도이다. NAND 컨트롤러(50) 이외의 구성은 제1 실시형태와 동일하다. 그러나, MPU(40)은 펌웨어에 기초하여 NAND 컨트롤러(50)로 하여금 다중 기록 동작을 수행하게 하는 다중 기록 요구를 송신할 수 있다.
NAND 컨트롤러(50)는 병렬 동작 요소(2a~2d)에의 데이터 전송을 각각 제어하는 메모리 컨트롤러로서의 4개의 컨트롤러[ch0 컨트롤러(510), ch1 컨트롤러(520), ch2 컨트롤러(530) 및 ch3 컨트롤러(540)]를 포함한다. ch0 컨트롤러(510), ch1 컨트롤러(520), ch2 컨트롤러(530) 및 ch3 컨트롤러(540)가 동일한 기능을 갖기 때문에, 이후에는 대표로서 ch0 컨트롤러(510)에 대해서만 설명한다. 도 12에는 ch0 컨트롤러(510)에 의해 데이터 전송이 제어되는 병렬 동작 요소(2a)만 도시한다.
병렬 동작 요소(2a)와 ch0 컨트롤러(510) 간의 접속 관계는 제1 실시형태에 따른 병렬 동작 요소(2a)와 ch0 컨트롤러(210) 간의 접속 관계와 동일하다. 따라서, 이에 대한 상세한 설명은 생략한다.
ch0 컨트롤러(메모리 컨트롤러)(510)는 우선 순위 관리 유닛(211), 다중 기록 커맨드를 병렬 동작 요소(2a)의 뱅크 0~3에 송신하는 커맨드 프로세서(512), 및 병렬 동작 요소(2a)의 뱅크 0~3의 동작 상태를 인식하는 동작 상태 인식 유닛(513)을 더 포함한다.
우선 순위 관리 유닛(211)은 제1 실시형태와 같이, 뱅크 0~3의 우선 순위를 순차적으로 갱신하고 관리한다. 동작 상태 인식 유닛(513)은 Ry/By 신호선의 상태에 기초하여, 각 뱅크의 동작 상태, 즉 커맨드 프로세서(512)로부터 송신된 다중 기록 커맨드가 완료 상태인지의 여부를 각 뱅크마다 인식한다. 커맨드 프로세서(512)는 동작 상태 인식 유닛(513)에 의해 인식된 각 뱅크의 동작 상태 및 우선 순위 관리 유닛(211)에 의해 관리된 우선 순위에 기초하여, 전송 데이터의 전송 목적지 뱅크를 선택하고, 선택된 뱅크에 다중 기록 커맨드를 송신한다.
도 13, 도 14, 및 도 15를 참조하여, 제2 실시형태에 따라 SSD에서의 NAND 컨트롤러(50)로부터 NAND 메모리(2)에 데이터를 전송하는 동작에 대해서 설명한다. 도 13은 병렬 동작 요소(2a)에 포함된 뱅크 0~3의 동작을 설명하기 위한 흐름도이다.
도 13에 나타내는 바와 같이, 뱅크를 구성하는 메모리 칩은 그 메모리 칩 자체를 전송 목적지로 지정하는 다중 기록 커맨드의 수신이 개시되어, 다중 기록 커맨드에 포함된 더미 기록 커맨드까지의 수신이 완료될 경우, 메모리 칩 자체를 ch0 컨트롤러(510)에 접속하는 Ry/By 신호선의 상태를 H에서 L로 변경한다(단계 S31). 단계 S31에 후속하여, 뱅크는 Ry/By 신호선의 상태를 L에서 H로 변경한다(단계 S32). 계속해서, 데이터 기록 커맨드까지 수신하면, 뱅크는 Ry/By 신호선의 상태를 다시 H에서 L로 변경하여, 플레인 0의 데이터 캐시 0에 축적된 제1 전송 데이터 및 플레인 1의 데이터 캐시 1에 축적된 제2 전송 데이터의 기록을 개시한다(단계 S33). 뱅크는 플레인 0 및 플레인 1에서의 기록 완료 시에, Ry/By 신호선의 상태를 L에서 H로 변경하고(단계 S34), 단계 S31로 복귀한다.
동작 상태 인식 유닛(513)은 각 뱅크 0~3에 대한 Ry/By 신호선의 상태를 모니터링하여, 더미 기록 커맨드에 따른 Ry/By 신호선의 변화 및 각 플레인에서의 기록 완료 시에 Ry/By 신호선의 변화에 기초해, 각 뱅크마다 동작 상태가 "다중 기록 커맨드 실행중"의 상태인지의 여부를 인식한다. 즉, 동작 상태 인식 유닛(513)은, 단계 S34에서 H에서 L로의 하강을 검출했을 때, 이 H에서 L로의 하강이 검출된 뱅크의 상태를 "다중 기록 커맨드 실행중"의 상태로서 인식한다. 또한, 동작 상태 인식 유닛(513)은 단계 S34에서 L에서 H로의 상승을 검출했을 때, 이 L에서 H로의 상승이 검출된 뱅크의 상태를 "다중 기록 커맨드 실행 완료"의 상태로서 인식한다. 또, 메모리 칩 자체를 전송 목적지로서 지정하는 다중 기록 커맨드를 수신하지 않고 그 다중 기록 커맨드가 실행되지 않은 뱅크의 상태는 "다중 기록 커맨드 실행중"의 상태가 아니라, 실질적으로 "다중 기록 커맨드 실행 완료" 상태와 동일한 상태이다. 따라서, 여기서는 편의상 그 뱅크가 "다중 기록 커맨드 실행 완료"의 상태인 것으로 설명한다.
도 14는 동작 상태 인식 유닛(513)에 의한 인식 동작을 설명하기 위한 타이밍도이다. 도 14에 도시하는 바와 같이, Ry/By 신호선이 뱅크 i의 더미 기록 커맨드에 기초하여 비지를 나타내는 경우, 동작 상태 인식 유닛(513)은 뱅크 i가 "다중 기록 커맨드 실행중"의 상태인 것으로 인식한다. 기록 동작이 뱅크 i 내의 플레인 0과 1에서 완료될 경우, 동작 상태 인식 유닛(513)은 뱅크 i가 "다중 기록 커맨드 실행 완료"의 상태인 것으로 인식한다. 따라서, 뱅크 i가 제1 전송 데이터의 수신과 제2 전송 데이터의 수신 사이의 레디 상태인 경우에도, 동작 상태 인식 유닛(513)은 뱅크 i가 "다중 기록 커맨드 실행중"의 상태인 것으로 인식한다.
도 15는 ch0 컨트롤러(510)의 동작을 설명하기 위한 흐름도이다. 도 15에 나타내는 바와 같이, ch0 컨트롤러(510)는 병렬 동작 요소(2a)에 대해 데이터를 기록하는 다중 기록 요구를 수신하면, 다중 기록 커맨드를 생성한다(단계 S41). 그리고, 동작 상태 인식 유닛(513)은 도 14에 나타낸 동작 상태를 인식하는 동작을 개시한다(단계 S42).
계속해서, 커맨드 프로세서(512)는 동작 상태 인식 유닛(513)을 참조하여, "다중 기록 커맨드 실행 완료" 상태의 뱅크를 검색한다(단계 S43). "다중 기록 커맨드 실행 완료" 상태의 뱅크가 없다면(단계 S43, NO), 커맨드 프로세서(512)는 "다중 기록 커맨드 실행 완료" 상태의 뱅크를 발견할 때까지 검색을 계속한다.
"다중 기록 커맨드 실행 완료" 상태의 뱅크가 있다면(단계 S43, YES), 커맨드 프로세서(512)는 우선 순위 관리 유닛(211)에 의해 관리되는 배열을 선두부터 참조하여, "다중 기록 커맨드 실행 완료" 상태의 뱅크들 중 우선도가 가장 높은 뱅크 하나를 선택한다(단계 S44). 커맨드 프로세서(512)는 "다중 기록 커맨드 실행 완료" 상태의 뱅크가 하나만 있는 경우 이 뱅크를 선택한다. 단계 S44에 후속하여, 커맨드 프로세서(512)는 생성된 다중 기록 커맨드로부터, 선택된 뱅크를 기록 목적지로서 지정하는 다중 기록 커맨드를 선택하고 그 다중 기록 커맨드를 병렬 동작 요소(2a)의 뱅크 0~3에 송신한다(단계 S45).
우선 순위 관리 유닛(211)은 단계 S45에서 전송 목적지로서 지정된 뱅크의 번호를 우선 순위의 배열의 최후미에 이동시켜, 이동전 뱅크 번호보다 배열의 후미에 있는 뱅크 번호의 위치를 각각 하나씩 배열의 선두를 향해 앞당긴다(단계 S46).
커맨드 프로세서(512)는 생성된 다중 기록 커맨드가 전부 송신되었는지의 여부를 판정한다(단계 S47). 미송신 기록 커맨드가 있는 경우(단계 S47, NO), 커맨드 프로세서(512)는 단계 S43으로 이행한다. 생성된 기록 커맨드가 전부 송신된 경우(단계 S47, YES), 커맨드 프로세서(512)는 동작을 종료한다.
전술한 바와 같이, 제2 실시형태에 따르면, 복수 피스의 전송 데이터의 기록 동작을 수행하기 위한 다중 기록 동작에 대해 뱅크 인터리브가 뱅크마다 수행되는 경우, 다중 기록 동작을 수행하기 위한 다중 기록 커맨드가 수행중인지의 여부가 Ry/By 신호선의 변화에 기초하여 각 뱅크마다 인식되고, 다중 기록 커맨드가 수행중이지 않는 뱅크들 중에서 선택 우선도가 가장 높은 뱅크가 선택된다. 선택된 뱅크는 다음 다중 기록 커맨드 대상으로 변경되고, 선택된 뱅크의 다음번 뱅크 선택 시의 선택 우선도의 순위는 최하위로 이동한다. 따라서, 다중 기록 동작에 대해 뱅크 인터리브를 수행할 수 있는 SSD에서도 뱅크 인터리브가 효율적으로 수행될 수 있다.
그런데, 전술한 설명에서는, 하나의 뱅크가 2개의 플레인으로 분할되고, 데이터가 다중 기록 커맨드에 의해 그 플레인 각각에 전송되는 것으로 상정하였지만, 1 뱅크의 분할 수는 2로 한정되지 않는다. 즉, 각각의 뱅크는 3개의 플레인으로 분할되고, 플레인 분할 수와 동일한 수의 데이터 피스가 다중 기록 커맨드에 의해 전송되는 것도 가능하다.
제1 실시형태에서 설명한 기록 요구(이하, "단일 기록 요구")가 수신될 경우, 제2 실시형태의 커맨드 프로세서는 제1 실시형태와 같은 동작을 수행하도록 구성될 수 있다. 구체적으로, 제2 실시형태의 커맨드 프로세서에는, MPU로부터 수신된 기록 요구가 단일 기록 요구인지 다중 기록 요구인지 판정하는 기능 유닛을 설치하여, 단일 기록 요구를 수신할 경우, 제1 실시형태에서 설명한 동작이 수행되고, 다중 기록 요구를 수신할 경우, 제2 실시형태에서 설명한 동작이 수행된다.
데이터 기록 동작에 대해 뱅크 인터리브가 수행되는 경우에 관해서 제2 실시형태에서 설명하였다. 그러나, 제2 실시형태는 제1 실시형태의 데이터 판독 동작 및 데이터 소거 동작에 대해 뱅크 인터리브가 수행되는 경우에도 적용될 수 있다.
추가 이점 및 변형예는 당업자에 의해서 용이하게 도출될 수 있다. 따라서, 본 발명의 보다 광범위한 양태는 본 명세서에 도시하고 설명한 특정 상세 내용 및 대표적인 실시형태에 한정되지 않는다. 따라서, 이하의 특허청구범위 및 그 균등물에 의해 정의되는 총괄적인 발명의 사상 또는 범위에서 일탈하지 않고 다양한 변경이 이루어질 수 있다.
1 : 데이터 전송 장치 2 : NAND 메모리
2a~2d : 병렬 동작 요소 3 : RAM
10 : ATA 컨트롤러 20 : NAND 컨트롤러
30 : RAM 컨트롤러 40 : MPU

Claims (17)

  1. 개별적으로 동작 가능한 복수의 비휘발성 메모리 영역과,
    레디(ready)/비지(busy) 신호를 통해 그 메모리 영역 각각에 개별적으로 접속되며, 동작 커맨드가 송신될 때마다, 그 동작 커맨드의 대상인 메모리 영역을 변경함으로써 상기 메모리 영역에서의 동작을 인터리브시키는 메모리 컨트롤러
    를 포함하며,
    상기 메모리 컨트롤러는 각각의 메모리 영역에 대한 선택 우선도의 순위를 관리하는 우선 순위 관리 유닛을 포함하고, 동작 커맨드의 송신 후에, 레디 상태의 메모리 영역들 중에서 선택 우선도의 순위가 가장 높은 메모리 영역을 선택하여, 그 선택된 메모리 영역을 다음 동작 커맨드의 대상으로 변경하며, 상기 우선 순위 관리 유닛에 의해, 상기 선택된 메모리 영역의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시키는 것인 메모리 시스템.
  2. 제1항에 있어서, 상기 우선 순위 관리 유닛은 각 메모리 영역의 식별 번호의 배열을 이용하여 상기 선택 우선도의 순위를 관리하는 것인 메모리 시스템.
  3. 제1항에 있어서, 상기 메모리 영역에서의 동작은 데이터 기록, 데이터 판독 및 데이터 소거를 포함하고, 상기 메모리 영역은 그 메모리 영역 자체에 접속된 레디/비지 신호를, 상기 동작이 수행중인 동안에는 비지 상태로 변경하고, 상기 동작이 수행중이 아닌 동안에는 레디 상태로 변경하는 것인 메모리 시스템.
  4. 제1항에 있어서, 상기 메모리 영역 각각은 레디/비지 신호가 공통 접속되어 있는 복수의 NAND형 플래시 메모리로 구성된 뱅크인 것인 메모리 시스템.
  5. 제4항에 있어서, 상기 동작 커맨드는 그 동작 커맨드의 대상인 메모리 영역에 순차적으로 송신된 전송 데이터와 기록 커맨드를 포함하고,
    상기 메모리 영역 각각은, 상기 동작 커맨드에 포함되는 전송 데이터를 일시적으로 저장하는 1차 버퍼와, 상기 전송 데이터의 기록 목적지인 기억 영역과, 상기 1차 버퍼와 상기 기억 영역 사이에 개재되는 2차 버퍼를 더 포함하며,
    상기 동작 커맨드의 대상인 메모리 영역은, 수신된 동작 커맨드에 포함된 전송 데이터에 이어 동일한 동작 커맨드에 포함된 기록 커맨드의 수신 시에, 그 메모리 영역 자체에 접속된 레디/비지 신호를 비지 상태로 변경하고, 상기 1차 버퍼에 저장된 전송 데이터를 상기 2차 버퍼에 전송하며, 상기 2차 버퍼에 저장된 전송 데이터를 상기 기억 영역에 기록하고, 그 기록의 완료 시에 상기 레디/비지 신호를 레디 상태로 변경하는 것인 메모리 시스템.
  6. 제5항에 있어서, 상기 동작 커맨드의 대상인 메모리 영역은 상기 2차 버퍼에 저장된 전송 데이터와 상기 기억 영역에 기록된 전송 데이터를 비교하고, 양쪽의 전송 데이터가 서로 일치할 경우, 상기 레디/비지 신호를 레디 상태로 변경하며, 양쪽의 전송 데이터가 서로 일치하지 않을 경우, 상기 2차 버퍼에 저장된 전송 데이터를 다시 상기 기억 영역에 기록하는 것인 메모리 시스템.
  7. 개별적으로 동작 가능한 복수의 비휘발성 메모리 영역과,
    레디(ready)/비지(busy) 신호를 통해 그 메모리 영역 각각에 개별적으로 접속되며, 복수의 동작을 수행하기 위한 동작 커맨드가 송신될 때마다, 동작 커맨드의 대상인 메모리 영역을 변경함으로써 상기 메모리 영역에서의 동작을 인터리브시키는 메모리 컨트롤러
    를 포함하며,
    상기 메모리 컨트롤러는 각각의 메모리 영역에 대한 선택 우선도의 순위를 관리하는 우선 순위 관리 유닛과, 상기 레디/비지 신호에 기초하여 동작 커맨드가 수행중인지의 여부를 인식하는 동작 상태 인식 유닛을 포함하고, 동작 커맨드의 송신 후에, 그 동작 커맨드가 수행중이지 않는 메모리 영역들 중에서 선택 우선도의 순위가 가장 높은 메모리 영역을 선택하여, 그 선택된 메모리 영역을 다음 동작 커맨드의 대상인 다음 메모리 영역으로 변경하고, 상기 우선 순위 관리 유닛에 의해, 상기 선택된 메모리 영역의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시키는 것인 메모리 시스템.
  8. 제7항에 있어서, 상기 우선 순위 관리 유닛은 각각의 메모리 영역의 식별 번호의 배열을 이용하여 상기 선택 우선도의 순위를 관리하는 것인 메모리 시스템.
  9. 제7항에 있어서, 상기 메모리 영역에서의 동작은 데이터 기록, 데이터 판독 및 데이터 소거를 포함하고, 상기 메모리 영역은 그 메모리 영역 자체에 접속된 레디/비지 신호를, 상기 동작이 수행중인 동안에는 비지 상태로 변경하고, 상기 동작이 수행중이 아닌 동안에는 레디 상태로 변경하는 것인 메모리 시스템.
  10. 제7항에 있어서, 상기 메모리 영역 각각은 레디/비디 신호가 공통 접속되어 있는 복수의 NAND형 플래시 메모리로 구성된 뱅크인 것인 메모리 시스템.
  11. 제10항에 있어서, 상기 메모리 영역은 각각 상이한 동작을 수행할 수 있는 n개의 플레인을 포함하고, 상기 동작 커맨드는 상기 메모리 영역에 포함된 n개의 플레인에 각각 상이한 동작을 실행시키는 것인 메모리 시스템.
  12. 제11항에 있어서, 상기 동작 커맨드는, 각각 상이한 플레인을 기록 목적지로서 지정하며 상기 동작 커맨드의 대상인 메모리 영역에 순차 송신되는 n쌍의 전송 데이터 및 기록 커맨드를 포함하고,
    상기 메모리 영역에 포함된 플레인 각각은, 그 플레인 자체를 기록 목적지로서 지정하며 상기 동작 커맨드에 포함된 전송 데이터를 일시적으로 저장하는 1차 버퍼와, 그 전송 데이터의 기록 목적지인 기억 영역과, 상기 1차 버퍼와 상기 기억 영역 사이에 개재되는 2차 버퍼를 더 포함하며,
    상기 동작 커맨드의 대상인 메모리 영역은 상기 동작 커맨드에 포함된 기록 커맨드의 수신 시에, 그 메모리 영역 자체에 접속된 레디/비지 신호를 미리 정해진 시간 동안만 비지 상태로 변경하고, 상기 동작 커맨드에 포함된 기록 커맨드들 중 최후 기록 커맨드의 수신 시에 상기 레디/비지 신호를 비지 상태로 변경하며, 상기 플레인 각각의 1차 버퍼에 저장된 전송 데이터를 상기 플레인 각각의 2차 버퍼에 전송하고, 상기 2차 버퍼에 저장된 전송 데이터를 상기 플레인 각각의 기억 영역에 기록하며, 상기 플레인 각각에서의 기록 완료 시에 상기 레디/비지 신호를 레디 상태로 변경하는 것인 메모리 시스템.
  13. 제12항에 있어서, 상기 동작 커맨드의 대상인 메모리 영역은 상기 2차 버퍼에 저장된 전송 데이터와 상기 기억 영역에 기록된 전송 데이터를 각 플레인마다 비교하고, 그 메모리 영역 자체에 포함된 모든 플레인에서 양쪽의 전송 데이터가 서로 일치할 경우, 상기 레디/비지 신호를 레디 상태로 변경하며, 양쪽의 전송 데이터가 서로 일치하지 않는 플레인이 있을 경우, 그 플레인의 2차 버퍼에 저장된 전송 데이터를 다시 상기 기억 영역에 기록하는 것인 메모리 시스템.
  14. 제12항에 있어서, 상기 동작 상태 인식 유닛은, 상기 동작 커맨드를 그 동작 커맨드의 대상인 메모리 영역에 송신한 후, n회의 비지 상태로의 변경 중 최초의 변경과 n회의 레디 상태로의 복귀 중 최후의 복귀와의 사이의 시간에 상기 동작 커맨드의 대상인 메모리 영역이 그 동작 커맨드를 수행중임을 인식하는 것인 메모리 시스템.
  15. 개별적으로 동작 가능하고 개별적으로 레디/비지 신호를 출력할 수 있는 복수의 비휘발성 메모리 영역에 동작 커맨드가 송신될 때마다 그 동작 커맨드의 대상인 메모리 영역을 변경함으로써 상기 메모리 영역에서의 동작을 인터리브시키는 메모리 시스템의 인터리브 제어 방법에 있어서,
    미리 설정된 각각의 메모리 영역의 선택 우선도의 순위에 기초하여 레디 상태의 메모리 영역들 중에서 선택 우선도의 순위가 가장 높은 메모리 영역을 선택하여, 그 선택된 메모리 영역을 동작 커맨드의 대상인 메모리 영역으로서 지정하는 단계와,
    상기 동작 커맨드의 대상인 메모리 영역에 상기 동작 커맨드를 송신하는 단계와,
    상기 선택된 메모리 영역의 다음번 선택 시의 선택 우선도의 순위를 최하위로 이동시키는 단계
    를 포함하는 메모리 시스템의 인터리브 제어 방법.
  16. 제15항에 있어서, 상기 메모리 영역의 동작은 데이터 기록, 데이터 판독 및 데이터 소거를 포함하고, 상기 메모리 영역은 그 메모리 영역 자체에 접속된 레디/비지 신호를, 상기 동작이 수행중인 동안에는 비지 상태로 변경하고, 상기 동작이 수행중이 아닌 동안에는 레디 상태로 변경하는 것인 메모리 시스템의 인터리브 제어 방법.
  17. 제15항에 있어서, 상기 메모리 영역 각각은 레디/비지 신호가 공통 접속되어 있는 복수의 NAND형 플래시 메모리로 구성된 뱅크인 것인 메모리 시스템의 인터리브 제어 방법.
KR1020100000815A 2009-02-02 2010-01-06 메모리 시스템 및 메모리 시스템의 인터리브 제어 방법 KR101148722B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009022044A JP2010176646A (ja) 2009-02-02 2009-02-02 メモリシステムおよびメモリシステムのインターリーブ制御方法
JPJP-P-2009-022044 2009-02-02

Publications (2)

Publication Number Publication Date
KR20100089020A true KR20100089020A (ko) 2010-08-11
KR101148722B1 KR101148722B1 (ko) 2012-05-29

Family

ID=42398639

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100000815A KR101148722B1 (ko) 2009-02-02 2010-01-06 메모리 시스템 및 메모리 시스템의 인터리브 제어 방법

Country Status (3)

Country Link
US (1) US20100199025A1 (ko)
JP (1) JP2010176646A (ko)
KR (1) KR101148722B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507707B2 (en) 2013-12-19 2016-11-29 SK Hynix Inc. Nonvolatile memory device and data storage device including the same

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI385672B (zh) * 2008-11-05 2013-02-11 Lite On It Corp 儲存裝置之適應性多通道控制器及其方法
JP5317690B2 (ja) * 2008-12-27 2013-10-16 株式会社東芝 メモリシステム
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US9092340B2 (en) * 2009-12-18 2015-07-28 Sandisk Technologies Inc. Method and system for achieving die parallelism through block interleaving
KR101008923B1 (ko) * 2010-01-15 2011-01-17 주식회사 노바칩스 다양한 종류의 반도체 메모리 장치들을 구비하는 반도체 메모리 시스템 및 이의 제어 방법
JP2013068105A (ja) * 2011-09-21 2013-04-18 Hitachi Automotive Systems Ltd 自動車用電子制御装置
US9344278B2 (en) * 2011-10-18 2016-05-17 Broadcom Corporation Secure data transfer using random ordering and random block sizing
JP2013137713A (ja) * 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、メモリシステムおよびメモリ書込み方法
WO2013106210A1 (en) * 2012-01-10 2013-07-18 Intel Corporation Electronic apparatus having parallel memory banks
JP5925549B2 (ja) * 2012-03-23 2016-05-25 株式会社東芝 メモリシステムおよびバンクインターリーブ方法
JP5624578B2 (ja) * 2012-03-23 2014-11-12 株式会社東芝 メモリシステム
US8996782B2 (en) * 2012-03-23 2015-03-31 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
US9405859B1 (en) * 2012-04-17 2016-08-02 Micron Technology, Inc. Using do not care data with feature vectors
KR20140031515A (ko) * 2012-09-03 2014-03-13 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러를 포함하는 전자장치
US9274908B2 (en) * 2013-02-26 2016-03-01 International Business Machines Corporation Resolving write conflicts in a dispersed storage network
US11036392B2 (en) 2013-02-26 2021-06-15 Pure Storage, Inc. Determining when to use convergent encryption
US10642489B2 (en) 2013-02-26 2020-05-05 Pure Storage, Inc. Determining when to initiate an intra-distributed storage unit rebuild vs. an inter-distributed storage unit rebuild
JP2014174849A (ja) * 2013-03-11 2014-09-22 Toshiba Corp 半導体記憶装置
US9218282B2 (en) * 2013-10-31 2015-12-22 Micron Technology, Inc. Memory system data management
JP6137659B2 (ja) * 2014-07-24 2017-05-31 日本電気株式会社 計量装置および計量データ記録方法
US9891837B2 (en) * 2014-09-08 2018-02-13 Toshiba Memory Corporation Memory system
US9772777B2 (en) * 2015-04-27 2017-09-26 Southwest Research Institute Systems and methods for improved access to flash memory devices
US10127165B2 (en) 2015-07-16 2018-11-13 Samsung Electronics Co., Ltd. Memory system architecture including semi-network topology with shared output channels
JP6677627B2 (ja) 2016-12-20 2020-04-08 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびメモリアクセス方法
US10540116B2 (en) * 2017-02-16 2020-01-21 Toshiba Memory Corporation Method of scheduling requests to banks in a flash controller
JP2019191909A (ja) * 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
KR102553264B1 (ko) 2018-09-03 2023-07-07 삼성전자 주식회사 메모리 컨트롤러 및 이의 동작 방법
CN110134333B (zh) * 2019-05-07 2022-06-07 深圳忆联信息系统有限公司 一种重排写入数据流提升ssd读拼接率的方法及其系统
KR20210081636A (ko) * 2019-12-24 2021-07-02 에스케이하이닉스 주식회사 우선 순위 결정 회로 및 그 동작 방법
TWI736155B (zh) * 2020-02-27 2021-08-11 瑞昱半導體股份有限公司 用於多個記憶裝置的控制方法及相關的記憶體系統
US11742004B2 (en) * 2021-11-24 2023-08-29 Macronix International Co., Ltd. Memory supporting multiple types of operations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255270A (en) * 1990-11-07 1993-10-19 Emc Corporation Method of assuring data write integrity on a data storage device
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JP2001167586A (ja) * 1999-12-08 2001-06-22 Toshiba Corp 不揮発性半導体メモリ装置
US6496915B1 (en) * 1999-12-31 2002-12-17 Ilife Solutions, Inc. Apparatus and method for reducing power consumption in an electronic data storage system
US6754765B1 (en) * 2001-05-14 2004-06-22 Integrated Memory Logic, Inc. Flash memory controller with updateable microcode
KR100626362B1 (ko) * 2003-05-23 2006-09-20 삼성전자주식회사 고속 대역폭의 시스템 버스를 중재하기 위한 중재기, 중재기를 포함하는 버스 시스템 및 버스 중재 방법
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
JP4843336B2 (ja) * 2006-03-06 2011-12-21 株式会社東芝 不揮発性半導体記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507707B2 (en) 2013-12-19 2016-11-29 SK Hynix Inc. Nonvolatile memory device and data storage device including the same

Also Published As

Publication number Publication date
JP2010176646A (ja) 2010-08-12
US20100199025A1 (en) 2010-08-05
KR101148722B1 (ko) 2012-05-29

Similar Documents

Publication Publication Date Title
KR101148722B1 (ko) 메모리 시스템 및 메모리 시스템의 인터리브 제어 방법
US11287992B2 (en) Controller and storage device including controller and nonvolatile memory devices
CN110010172B (zh) 半导体存储装置
US9865351B2 (en) Memory system with non-volatile memory device that is capable of single or simulataneous multiple word line selection
US10037167B2 (en) Multiple scheduling schemes for handling read requests
US10324788B2 (en) Memory system
US9286990B1 (en) Storage device, nonvolatile memory and method operating same
US20160162186A1 (en) Re-Ordering NAND Flash Commands for Optimal Throughput and Providing a Specified Quality-of-Service
US20160224255A1 (en) Method of processing input/output in storage device and storage device and non-volatile memory device using the method
US9218283B2 (en) Multi-die write management
US20100042777A1 (en) Semiconductor device including memory cell having charge accumulation layer and control gate and data write method for the same
US9257192B2 (en) Memory system performing multi-step erase operation based on stored metadata
KR20150116352A (ko) 메모리 제어 방법 및 시스템
CN112099730B (zh) 存储器件及其访问方法
US20200110545A1 (en) Memory system and operating method thereof
US8279670B2 (en) Non-volatile semiconductor storage device
KR20150133084A (ko) 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
US11693603B2 (en) Memory system managing number of read operations using two counters
US20180113803A1 (en) Operation method of memory controller and operation method of storage device including the same
US9847136B2 (en) Operating method for host device and memory system including host device and storage device
US9570181B2 (en) Memory system
KR20160144547A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US11966327B2 (en) Memory system
US20230147882A1 (en) Memory controller for controlling allocation ratio of buffer memory, memory system including the same, and method of operating memory controller
KR20160144546A (ko) 스토리지 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee