KR101433861B1 - 메모리 시스템 및 그 구동방법 - Google Patents

메모리 시스템 및 그 구동방법 Download PDF

Info

Publication number
KR101433861B1
KR101433861B1 KR1020070106258A KR20070106258A KR101433861B1 KR 101433861 B1 KR101433861 B1 KR 101433861B1 KR 1020070106258 A KR1020070106258 A KR 1020070106258A KR 20070106258 A KR20070106258 A KR 20070106258A KR 101433861 B1 KR101433861 B1 KR 101433861B1
Authority
KR
South Korea
Prior art keywords
microcode
sequencer
control
channel
memory
Prior art date
Application number
KR1020070106258A
Other languages
English (en)
Other versions
KR20090040763A (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 삼성전자주식회사
Priority to KR1020070106258A priority Critical patent/KR101433861B1/ko
Priority to US12/238,592 priority patent/US8335871B2/en
Publication of KR20090040763A publication Critical patent/KR20090040763A/ko
Application granted granted Critical
Publication of KR101433861B1 publication Critical patent/KR101433861B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/7202Allocation control and policies
    • 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/7208Multiple 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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 메모리 시스템 및 그 구동방법에 관한 것이다.
본 발명에 따른 메모리 시스템 구동방법은 (a)마이크로코드를 생성하는 단계; (b)상기 생성된 마이크로코드를 탑 컨트롤 시퀀서와 복수의 채널 컨트롤 시퀀서에 전송하는 단계; (c)상기 탑 컨트롤 시퀀서의 탑수준 시퀀서 컨트롤 레지스터를 셋팅하는 단계; (d)상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 상기 마이크로코드의 시작 어드레스를 입력하는 단계; (e)탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 마이크로코드에 응답하여 복수의 채널 컨트롤 시퀀서의 마이크로코드를 실행하는 단계; (f)탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드가 상기 마이크로코드의 마지막 어드레스이면 상기 탑 컨트롤 시퀀서에 인터럽트를 발생하는 단계; (g)탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드가 상기 마이크로코드의 마지막 어드레스가 아니면 상기 (e)단계를 재실행하는 단계; 그리고 (h)상기 탑 컨트롤 시퀀서에 에러가 발생한 경우 상기 에러를 보고하고, 탑수준 컨트롤 시퀀서의 상태 레지스터를 확인하는 단계를 포함한다.

Description

메모리 시스템 및 그 구동방법{MEMORY SYSTEM AND DRIVING METHOD THEREOF}
본 발명은 원낸드 및 낸드 플래시 메모리(OneNAND and NAND Flash Memory)에 관한 것으로, 좀 더 구체적으로는 원낸드 및 낸드 플래시 메모리를 포함하는 메모리 시스템 및 그 구동방법에 관한 것이다.
메모리 컨트롤러는 성능을 높이기 위한 방법으로 하드와이어드 로직(Hard-wired Logic)으로 설계되어 플래시메모리의 모든 명령어 시퀀스(Instruction Sequence)를 제어한다. 하드와이어드 로직으로 설계된 메모리 컨트롤러는 설계가 복잡하고, 확장성이 떨어지며 다수의 플래시 메모리를 효율적으로 관리하는 데 어려움이 있다.
이와 반대로, 메모리 컨트롤러의 확장성을 높이기 위한 방법은 펌웨어(Firmware)를 통해 플래시메모리의 모든 명령어 시퀀스를 제어하는 것이다. 이러한 방법은 메모리 컨트롤러의 설계 방법은 용이하나 낮은 성능을 가진다.
따라서, 앞에서 기술한 두 방법의 단점을 해결할 수 있는 방안이 요구된다. 즉, 플래시 메모리 컨트롤러의 확장성을 용이하게 하면서 동시에 높은 성능이 요구된다.
본 발명의 목적은 원낸드 및 낸드 플래시 메모리를 포함하는 메모리 시스템의 호스트 프로세서의 로드(Load)를 저감하는 것이다.
본 발명의 실시예에 따른 메모리 시스템은 채널 컨트롤 시퀀서를 각각 포함하는 복수의 메모리 디바이스; 그리고 상기 복수의 메모리 디바이스와 연결되는 호스트를 포함하되, 상기 호스트는 상기 복수의 메모리 디바이스 각각의 채널 컨트롤 시퀀서를 제어하는 탑 컨트롤 시퀀서를 포함한다.
실시 예로서, 상기 탑 컨트롤 시퀀서와 상기 채널 컨트롤 시퀀서는 마이크로 코드를 저장하고, 상기 마이크로 코드를 디코딩하고, 상기 디코딩된 마이크로 코드를 실행한다.
실시 예로서, 상기 호스트는, 상기 마이크로 코드를 생성하고, 상기 마이크로 코드를 이용하여 상기 탑 컨트롤 시퀀서 및 상기 복수의 메모리 디바이스를 제어하는 프로세서; 그리고 상기 탑 컨트롤 시퀀서 및 상기 복수의 메모리 디바이스 각각에 포함된 채널 컨트롤 시퀀서에 상기 마이크로 코드를 전송하는 DMA를 포함한다.
실시 예로서, 상기 복수의 메모리 디바이스 각각은, 메모리; 상기 메모리와 인터페이스하는 인터페이스 블록; 그리고 상기 채널 컨트롤 시퀀서의 제어에 응답하여 상기 메모리로부터 데이터를 호스트로 전송하는 DMA를 더 포함한다.
실시 예로서, 상기 마이크로 코드는 상기 메모리를 제어하는 명령어인 것을 특징으로 한다.
실시 예로서, 상기 메모리는 원낸드 플래시 메모리인 것을 특징으로 한다.
실시 예로서, 상기 복수의 메모리 디바이스는 상기 데이터의 에러를 정정하는 에러 정정 코드 블록을 더 포함한다.
실시 예로서, 상기 메모리는 낸드 플래시 메모리인 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따른 메모리 시스템 구동방법은 (a) 탑 컨트롤 시퀀서와 복수의 채널 컨트롤 시퀀서들에 마이크로코드를 셋팅하는 단계; 그리고 (b) 상기 탑 컨트롤 시퀀서에 셋팅된 마이크로코드를 실행하는 단계를 포함한다.
실시 예로서, 상기 (b) 단계는, (c) 상기 마이크로코드가 실행된 결과를 확인하는 단계를 더 포함한다.
실시 예로서, 상기 (a) 단계는, (1)마이크로코드를 생성하는 단계; (2)상기 생성된 마이크로코드를 탑 컨트롤 시퀀서와 복수의 채널 컨트롤 시퀀서에 전송하는 단계; (3)상기 탑 컨트롤 시퀀서의 탑수준 시퀀서 컨트롤 레지스터를 셋팅하는 단계; (4)상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 상기 마이크로코드의 시작 어드레스를 입력하는 단계; 그리고 (5)탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드를 실행하는 단계를 포함한다.
실시 예로서, 상기 (b) 단계는, (6)탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드를 실행하는 단계; (7)탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드가 상기 마이크로코드의 마 지막 어드레스이면 상기 탑 컨트롤 시퀀서로부터 인터럽트를 발생시키는 단계; 그리고 (8)탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드가 상기 마이크로코드의 마지막 어드레스가 아니면 상기 (5)단계를 재실행하는 단계를 포함한다.
실시 예로서, 상기 (c) 단계는 상기 탑 컨트롤 시퀀서에 에러가 발생한 경우 상기 에러를 보고하고, 탑수준 컨트롤 시퀀서의 상태 레지스터를 확인하는 단계를 포함한다.
실시 예로서, 상기 (6) 단계는, 상기 복수의 채널 컨트롤 시퀀서의 시퀀서 컨트롤 레지스터 각각에 대하여 셋팅하는 단계; 상기 복수의 채널 시퀀서 컨트롤 레지스터 각각의 현재 어드레스에 상기 마이크로코드의 시작 어드레스를 각각 입력하는 단계; 상기 복수의 채널 시퀀서 컨트롤 레지스터 각각의 현재 어드레스에 기재된 상기 마이크로코드를 각각 실행하는 단계; 상기 복수의 채널 시퀀서 컨트롤 레지스터 각각의 현재 어드레스에 기재된 상기 마이크로코드 중 어느 하나가 상기 마이크로코드의 마지막 어드레스이면 상기 해당 채널 컨트롤 시퀀서로부터 인터럽트를 발생시키는 단계; 상기 복수의 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드가 상기 마이크로코드의 마지막 어드레스가 아니면 상기 (3)단계를 재실행하는 단계; 그리고 상기 복수의 채널 컨트롤 시퀀서 중 어느 하나에 에러가 발생한 경우 상기 에러를 보고하고, 상기 복수의 채널 컨트롤 시퀀서의 상태 레지스터를 확인하는 단계를 포함한다.
본 발명은 마이크로코드를 이용하여 메모리 시스템에 장착되는 복수의 메모리 디바이스를 제어한다. 따라서, 본 발명에 따른 메모리 시스템 내의 호스트 프로세서(10)의 로드(load)를 저감시키는 효과가 있다.
메모리 컨트롤러의 확장성을 용이하게 하면서 동시에 높은 성능을 유지하기 위하여 본 발명은 플래시메모리 시스템에서 자주 수행될 것으로 예상되는 제한된 개수의 구체적인 동작 시나리오를 설계 초기 단계에 확정한다. 본 발명은 이러한 동작 시나리오에 대해서만 컨트롤러를 하드와이어드 로직으로 구현한다. 그리고, 나머지 동작 시나리오는 펌웨어를 통해서 플래시 메모리를 제어한다. 즉, 본 발명은 플래시 메모리 시스템의 스펙(예를 들면, 인터리빙정도, 읽기/쓰기 단위 연산 크기)이나 플래시 메모리 디바이스의 스펙(예를 들면, 페이지크기, 블록개수)이 변경되는 경우에 빠르게 대응할 수 있다.
따라서, 본 발명은 설계 초기 단계에 충분히 고려된 부분에 대해서는 고성능을 보장한다. 또한, 본 발명은 설계 초기 단계에 충분히 고려되지 못한 부분에 대해서도 확장성을 보장한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예를 첨부된 도면을 참조하여 설명한다.
도 1은 본 발명의 실시예에 따른 블록도이다.
도 1을 참조하면, 본 발명에 따른 메모리 시스템(100)은 호스트 프로세 서(10), 탑 컨트롤 시퀀서(Top Control Sequencer;20), 제1 및 제2 메모리 디바이스(30,40), DMA(Direct Memory Access;50) 및 시스템 버스(60)을 포함한다.
제1 메모리 디바이스(30)는 제1 원낸드 플래시 메모리(OneNAND Flash Memory;31), A채널 컨트롤 시퀀서(Control Sequencer Ch. A;32), 제1 인터페이스(Interface;33) 및 제1 디바이스 DMA(34)를 포함한다.
제2 메모리 디바이스(40)는 제2 원낸드 플래시 메모리(41), B채널 컨트롤 시퀀서(42), 제2 인터페이스(Interface;43) 및 제2 디바이스 DMA(44)를 포함한다.
호스트 프로세서(10)는 마이크로코드(μCode:Microcode)를 생성한다.
마이크로코드는 메모리 시스템(100)에 장착되는 제1 및 제2 메모리 디바이스(30,40) 내에 포함된 메모리들을 제어하는 복수의 명령어(Instruction)들이다. 마이크로코드에 관해서는 도 2에서 상세히 설명된다.
DMA(50)는 호스트 프로세서(10)에 의하여 생성된 마이크로코드를 시스템 버스(60)를 통하여 탑 컨트롤 시퀀서(20) 및 제1 및 제2 메모리 디바이스(30,40) 내의 A채널 및 B채널 컨트롤 시퀀서(32, 42)에 전송한다.
DMA(50)에 의해서 전송된 마이크로코드는 A채널 및 B채널 컨트롤 시퀀서(32, 42) 내의 시퀀서 내부 메모리(Sequencer Internal Memory;미도시)에 저장된다. 시퀀서 내부 메모리에 저장된 마이크로코드는 A 및 B채널 컨트롤 시퀀서(32, 42)에 의하여 페치(fetch)되고, 실행된다.
또한, 마이크로코드는 사용자(User)에 의하여 생성될 수 있다. 사용자에 의하여 마이크로코드가 생성되는 경우 마이크로코드는 미리 탑 컨트롤 시퀀서 및 채 널 컨트롤 시퀀서에 저장된다.
탑 컨트롤 시퀀서(20) 그리고 A채널 및 B채널 컨트롤 시퀀서(32, 42) 내의 시퀀서 컨트롤 레지스터(Sequencer Control Register)는 도 3에서 상세히 설명된다.
제1 메모리 디바이스(30)의 A채널 컨트롤 시퀀서(32)는 DMA(50)에 의해서 전송된 마이크로코드를 실행한다. 제1 디바이스 DMA(34)는 A채널 컨트롤 시퀀서(32)의 실행된 마이크로코드에 응답하여 제1 원낸드 플래시 메모리(31)의 데이터를 제1 인터페이스(33)을 통하여 호스트 프로세서(10)로 전송한다.
제2 메모리 디바이스(40)의 B채널 컨트롤 시퀀서(42)의 동작은 제1 메모리 디바이스(30)의 A채널 컨트롤 시퀀서(32)의 동작과 동일하다. 따라서, 중복되는 설명은 생략한다.
본 발명에 따른 메모리 시스템은 마이크로코드를 이용하여 메모리 시스템에 장착되는 복수의 메모리 디바이스를 제어한다. 따라서, 메모리 시스템(100) 내의 호스트 프로세서(10)의 로드(load)를 저감시키는 효과가 있다.
또한, 본 발명에 따른 메모리 시스템은 메모리 디바이스의 스펙(SPEC:Specification)이 변경되는 경우 마이크로코드를 수정하여 스펙이 변경된 메모리 디바이스를 제어할 수 있다.
도 2는 A채널 컨트롤 시퀀서(32) 내의 내부 메모리에 저장된 마이크로코드를 도시한다.
도 1 및 도 2를 참조하면, 본 발명에 따른 마이크로코드는 128 비트(bit)로 구성된다. 즉, 본 발명에 따른 마이크로코드는 제1 마이크로코드(Code #0), 제2 마이크로코드(Code #1), 제3 마이크로코드(Code #2) 및 제4 마이크로코드(Code #3)를 결합하여 하나의 마이크로코드로 구성된다.
제1 마이크로코드(Code #0)의 0번 비트(bit) 내지 7번 비트는 제1 원낸드 플래시 메모리(31) 내의 복수의 메모리에 대한 인터럽트(Interrupt) 정보를 포함한다. 제1 마이크로코드(Code #0)의 8번 비트는 A채널 DMA의 동작 완료 정보를 나타낸다. 제1 마이크로코드(Code #0)의 24 비트 내지 25 비트는 시스템 버스의 억세스 사이즈(Access Size) 정보를 나타낸다. 제1 마이크로코드(Code #0)의 28번 비트는 대기 동작을 나타내고, 제1 마이크로코드(Code #0)의 29번 비트는 독출 및 검증 동작을 나타내고, 제1 마이크로코드(Code #0)의 30번 비트는 기입 동작을 나타내고, 제1 마이크로코드(Code #0)의 31번 비트는 독출 동작을 나타낸다.
제2 마이크로코드(Code #1)는 시스템 버스의 어드레스 정보를 포함하고, 제3 마이크로코드(Code #2)는 기입 데이터 또는 독출 및 검증 데이터를 포함하고, 제4 마이크로코드(Code #3)는 독출 및 검증 매스크 데이터를 포함한다.
A채널 및 B채널 컨트롤 시퀀서(32, 42)는 본 발명에 따른 마이크로 코드를 통하여 제1 및 제2 메모리 디바이스 내의 원낸드 플래시 메모리(31,41)에 대하여 독출(Read) 동작, 기입(Write) 동작, 독출 및 검증(Read & Verify) 동작 및 대기(Wait for Event) 동작을 지시한다.
도 3은 도 1에 도시된 A채널 컨트롤 시퀀서 내의 시퀀서 컨트롤 레지스터를 도시한다.
도 1 및 도 3을 참조하면, 본 발명에 따른 A채널 컨트롤 시퀀서(32) 내의 컨트롤 레지스터는 스타트 어드레스 레지스터(Start Address Register), 엔드 어드레스 레지스터(End Address Register), 명령어 레지스터(Command Register) 및 상태 레지스터(Status Register)를 포함한다.
스타트 어드레스 레지스터(Start Address Register)는 시퀀서 스타트 어드레스(Sequencer Start Address)를 저장한다. 엔드 어드레스 레지스터(End Address Register)는 시퀀서 엔드 어드레스(SEA:Sequencer End Address)를 저장한다. 명령어 레지스터(Command Register)는 시퀀서 종료 제거(SDC:Sequencer Done Clear), 시퀀서 에러 제거(SEC:Sequencer Error Clear) 및 시퀀서 실행(SR:Sequencer Run)을 저장한다. 상태 레지스터(Status Register)는 시퀀서 종료(SD:Sequencer Done), 시퀀서 진행중(SB:Sequencer Busy), 시퀀서 에러(SE:Sequencer Error) 및 시퀀서 현재 어드레스 오프셋(SCAO:Sequencer Current Address Offset)를 저장한다.
본 발명에 따른 시퀀서 내부 메모리는 듀얼 포트(Dual-port)를 가지는 SRAM(Static Random Access Memory)으로 구성된다.
도 3은 A채널 컨트롤 시퀀서의 컨트롤 레지스터를 도시하고 있으나, 탑 컨트롤 시퀀서 및 B채널 컨트롤 시퀀서의 컨트롤 레지스터 또한 동일하게 구성된다. 따라서, 중복되는 설명은 생략한다.
도 4는 도 1에 도시된 탑레벨 컨트롤 시퀀서의 동작을 나타내는 순서도이고, 도 5는 도 4에 도시된 탑레벨 컨트롤 시퀀서의 동작 중 A채널 컨트롤 시퀀서의 동작을 나타내는 순서도이다.
도 1 내지 도 5를 참조하면, 본 발명에 따른 메모리 시스템 구동방법은 아래와 같다.
호스트 프로세서(10)는 마이크로코드를 생성한다(41).
DMA(50)는 생성된 마이크로코드를 탑 컨트롤 시퀀서(20)와 A채널 및 B채널 컨트롤 시퀀서(32,42)에 전송한다(42).
탑 컨트롤 시퀀서(20)는 탑수준 시퀀서 컨트롤 레지스터를 셋팅한다(43). 즉, 탑 컨트롤 시퀀서(20)는 DMA(50)에 의하여 전송된 마이크로코드를 탑수준 시퀀서 컨트롤 레지스터의 스타트 어드레스 레지스터, 엔드 어드레스 레지스터, 명령어 레지스터 및 상태 레지스터를 설정한다.
탑 컨트롤 시퀀서(20)는 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스(Current Address)에 상기 마이크로코드의 시작 어드레스를 입력한다(44).
탑 컨트롤 시퀀서(20)는 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 마이크로코드를 실행한다(45). 즉, 탑 컨트롤 시퀀서(20)는 상기 마이크로코드를 통하여 A채널 및 B채널 컨트롤 시퀀서(32,42)를 제어한다.
A채널 및 B채널 컨트롤 시퀀서(32,42)는 각각의 메모리 디바이스에 있어서 독립적으로 동작한다. 또한, A채널 및 B채널 컨트롤 시퀀서(32,42)의 동작은 동일하다. 따라서, 중복되는 B채널 컨트롤 시퀀서(42)의 동작에 대한 설명은 생략한다.
제1 및 제2 메모리 디바이스(30,40) 각각은 탑 컨트롤 시퀀서(20)의 제어에 응답하여 시스템 버스(60)를 점유한다.
A채널 컨트롤 시퀀서(32)는 DMA(50)에 의하여 전송된 마이크로코드를 A채널 시퀀서 컨트롤 레지스터의 스타트 어드레스 레지스터, 엔드 어드레스 레지스터, 명령어 레지스터 및 상태 레지스터에 설정한다(451).
A채널 컨트롤 시퀀서(32)는 A채널 시퀀서 컨트롤 레지스터의 현재 어드레스에 마이크로코드의 시작 어드레스를 입력한다(452).
A채널 컨트롤 시퀀서(32)는 A채널 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 마이크로코드를 실행한다(453).
A채널 컨트롤 시퀀서(32)는 A채널 시퀀서 컨트롤 레지스터의 현재 어드레스(Current Address)가 마이크로코드의 마지막 어드레스인가를 판단한다(454). 만약 A채널 시퀀서 컨트롤 레지스터의 현재 어드레스가 마이크로코드의 마지막 어드레스이면 A채널 컨트롤 시퀀서에 인터럽트 신호를 발생시킨다(456). 그렇지 않으면, A채널 컨트롤 시퀀서(32)는 A채널 시퀀서 컨트롤 레지스터의 현재 어드레스를 증가시키고, (453)단계를 재실행한다(455).
A채널 컨트롤 시퀀서(32)는 A채널 컨트롤 시퀀서 중 어느 하나에 에러가 발생한 경우 상기 에러를 보고하고, 상기 복수의 채널 컨트롤 시퀀서의 상태 레지스터를 확인한다(457).
A채널 컨트롤 시퀀서(32)와 B채널 컨트롤 시퀀서(42)는 병렬적으로 동작한다. A채널 컨트롤 시퀀서(32)와 B채널 컨트롤 시퀀서(42)의 동작이 완료되면, 탑 컨트롤 시퀀서(20)는 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스의 마이크로코드의 마지막 어드레스이면 상기 탑 컨트롤 시퀀서에 인터럽트 신호를 발생시킨다(48). 그렇지 않으면, 탑 컨트롤 시퀀서(20)는 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스를 증가시키고, (45)단계를 재실행한다(47).
탑 컨트롤 시퀀서(20)는 에러가 발생한 경우 에러를 보고하고, 탑수준 컨트롤 시퀀서의 상태 레지스터를 확인한다(49).
도 6은 본 발명의 또 다른 실시예에 따른 블록도이다.
도 6을 참조하면, 본 발명의 또 다른 실시예에 따른 메모리 시스템(200)은 호스트 프로세서(110), 탑 컨트롤 시퀀서(120), 제1 내지 제4 메모리 디바이스(130-160), DMA(170) 및 시스템 버스(180)을 포함한다.
제1 메모리 디바이스(130)는 제1 낸드 플래시 메모리(NAND Flash Memory;131), A채널 컨트롤 시퀀서(Control Sequencer Ch. A;132), 제1 인터페이스(Interface;133), 제1 디바이스 DMA(134) 및 제1 에러정정블록(Error Correction Code Block;135)을 포함한다.
제2 메모리 디바이스(140)는 제2 낸드 플래시 메모리(141), B채널 컨트롤 시퀀서(142), 제2 인터페이스(143), 제2 디바이스 DMA(144) 및 제2 에러정정블록(145)을 포함한다.
제3 메모리 디바이스(150)는 제3 낸드 플래시 메모리(151), C채널 컨트롤 시퀀서(152), 제3 인터페이스(153), 제3 디바이스 DMA(154) 및 제3 에러정정블록(155)을 포함한다.
제4 메모리 디바이스(160)는 제4 낸드 플래시 메모리(161), D채널 컨트롤 시퀀서(162), 제4 인터페이스(163), 제4 디바이스 DMA(164) 및 제4 에러정정블록(165)을 포함한다.
호스트 프로세서(10)에 의해서 생성된 마이크로코드는 메모리 시스템(200)에 장착되는 제1 내지 제4 메모리 디바이스(130-160) 내에 포함된 메모리들을 제어한다.
DMA(170)는 호스트 프로세서(110)에 의하여 생성된 마이크로코드를 시스템 버스(180)를 통하여 탑 컨트롤 시퀀서(120) 및 제1 내지 제4 메모리 디바이스(130-160) 내의 A채널 내지 D채널 컨트롤 시퀀서(132, 142, 152, 162)에 전송한다.
DMA(170)에 의해서 전송된 마이크로코드는 채널 내지 D채널 컨트롤 시퀀서(132, 142, 152, 162) 내의 시퀀서 내부 메모리에 저장된다.
제1 메모리 디바이스(130)의 A채널 컨트롤 시퀀서(132)는 DMA(170)에 의해서 전송된 마이크로코드를 실행한다. 제1 디바이스 DMA(134)는 A채널 컨트롤 시퀀서(132)의 실행된 마이크로코드에 응답하여 제1 낸드 플래시 메모리(131)의 데이터를 제1 에러정정블록(135)에 의해서 데이터의 에러를 정정하고, 제1 인터페이스(133)을 통하여 호스트 프로세서(110)로 전송한다.
제2 내지 제4 메모리 디바이스(140-160)의 각 채널 컨트롤 시퀀서들의 동작은 제1 메모리 디바이스(130)의 A채널 컨트롤 시퀀서(132)의 동작과 동일하다. 따라서, 중복되는 설명은 생략한다.
본 발명에 따른 메모리 시스템은 마이크로코드를 이용하여 메모리 시스템에 장착되는 복수의 메모리 디바이스를 제어한다. 따라서, 메모리 시스템(100) 내의 호스트 프로세서(10)의 로드(load)를 저감시키는 효과가 있다.
또한, 본 발명에 따른 메모리 시스템은 메모리 디바이스의 스펙이 변경되는 경우 마이크로코드를 수정을 통하여 스펙이 변경된 메모리 디바이스를 제어할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명의 실시예에 따른 블록도.
도 2는 본 발명에 따른 마이크로 코드.
도 3은 도 1에 도시된 컨트롤 시퀀서 Ch. A 내의 시퀀서 컨트롤 레지스터.
도 4는 도 1에 도시된 탑레벨 컨트롤 시퀀서의 동작을 나타내는 순서도.
도 5는 도 4에 도시된 탑레벨 컨트롤 시퀀서의 동작 중 채널별 컨트롤 시퀀서의 동작을 나타내는 순서도.
도 6은 본 발명의 또 다른 실시예에 따른 블록도.
* 도면의 주요 부분에 대한 부호 설명 *
10 : 호스트 프로세서 20 : 탑 컨트롤 시퀀서
30 : 제1 원낸드 디바이스 31 : 제1 원낸드
32 : A 채널 컨트롤 인터페이스 33 : 제1 원낸드 인터페이스
34 : 제1 원낸드 DMA 40 : 제2 원낸드 디바이스
41 : 제1 원낸드 42 : B 채널 컨트롤 인터페이스
43 : 제1 원낸드 인터페이스 44 : 제2 원낸드 DMA
50 : 시스템 버스

Claims (18)

  1. 채널 마이크로코드를 실행하는 채널 컨트롤 시퀀서를 각각 포함하는 복수의 메모리 디바이스들;
    상기 복수의 메모리 디바이스들과 시스템 버스를 통하여 연결되고,상기 채널 컨트롤 시퀀서의 동작을 제어하기 위하여 시스템 마이크로코드를 입력, 저장, 및 실행하는 탑 컨트롤 시퀀서를 포함하는 호스트;및
    상기 시스템 버스를 통하여 상기 채널 컨트롤 시퀀서에 상기 채널 마이크로코드를 전송하고 상기 탑 컨트롤 시퀀서에 상기 시스템 마이크로코드를 전송하는 시스템 DMA(direct memory access)를 포함하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 탑 컨트롤 시퀀서와 상기 채널 컨트롤 시퀀서 각각은 마이크로코드를 저장하고, 상기 마이크로코드를 디코딩하고, 상기 디코딩된 마이크로코드를 실행하는 메모리 시스템.
  3. 제 2 항에 있어서,
    상기 호스트는 상기 마이크로코드를 생성하고, 상기 마이크로코드를 이용하여 상기 탑 컨트롤 시퀀서 및 상기 복수의 메모리 디바이스들을 제어하는 프로세서를 더 포함하는 메모리 시스템.
  4. 제 1 항에 있어서,
    상기 복수의 메모리 디바이스들 각각은,
    메모리;
    상기 메모리와 인터페이스하는 인터페이스 블록; 그리고
    상기 채널 컨트롤 시퀀서의 제어에 응답하여 상기 메모리로부터 데이터를 호스트로 전송하는 DMA를 포함하는 메모리 시스템.
  5. 제 4 항에 있어서,
    상기 채널 마이크로코드는 상기 메모리를 제어하는 명령어인 것을 특징으로 하는 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 메모리는 원낸드 플래시 메모리인 것을 특징으로 하는 메모리 시스템.
  7. 제 5 항에 있어서,
    상기 복수의 메모리 디바이스들 각각은 상기 데이터의 에러를 정정하는 에러 정정 코드 블록을 더 포함하는 메모리 시스템.
  8. 제 7 항에 있어서,
    상기 메모리는 낸드 플래시 메모리인 것을 특징으로 하는 메모리 시스템.
  9. 메모리 시스템의 구동 방법에 있어서:
    호스트 프로세서에서 시스템 마이크로코드 및 채널 마이크로코드들을 발생하는 단계;
    시스템 DMA(direct memory access)를 통하여 상기 시스템 마이크로코드를 탑 컨트롤 시퀀서로 전송하고, 상기 채널 마이크로코드들을 복수의 채널 컨트롤 시퀀서들 각각에 전송하는 단계; 및
    상기 탑 컨트롤 시퀀서에서 상기 시스템 마이크로코드를 실행하는 단계를 포함하고,
    상기 탑 컨트롤 시퀀서는 상기 채널 컨트롤 시퀀서들을 제어하는 구동 방법.
  10. 제 9 항에 있어서,
    상기 시스템 마이크로코드가 실행된 결과를 확인하는 단계를 더 포함하는 구동 방법.
  11. 제 9 항에 있어서,
    상기 시스템 마이크로코드를 실행하는 단계 이전에, 상기 탑 컨트롤 시퀀서의 탑수준 시퀀서 컨트롤 레지스터를 셋팅하는 단계;
    상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 상기 시스템 마이크로코드의 시작 어드레스를 입력하는 단계; 그리고
    상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 시스템 마이크로코드를 실행하는 단계를 더 포함하는 구동 방법.
  12. 제 11 항에 있어서,
    상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 시스템 마이크로코드를 실행하는 단계;
    상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 시스템 마이크로코드가 상기 시스템 마이크로코드의 마지막 어드레스이면 상기 탑 컨트롤 시퀀서에 인터럽트를 발생하는 단계; 그리고
    상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 시스템 마이크로코드가 상기 시스템 마이크로코드의 마지막 어드레스가 아니면 상기 현재 어드레스의 시스템 마이크로코드를 실행하는 단계를 포함하는 구동 방법.
  13. 제 10 항에 있어서,
    상기 시스템 마이크로코드가 실행된 결과를 확인하는 단계는,
    상기 탑 컨트롤 시퀀서에 에러가 발생한 경우 상기 에러를 보고하고, 상기 탑 컨트롤 시퀀서의 상태 레지스터를 확인하는 단계를 포함하는 구동 방법.
  14. 제 11 항에 있어서,
    상기 탑수준 시퀀서 컨트롤 레지스터의 현재 어드레스에 기재된 상기 시스템 마이크로코드를 실행하는 단계는,
    상기 복수의 채널 컨트롤 시퀀서들에 채널 마이크로코드를 설정하는 단계; 및
    상기 복수의 채널 컨트롤 시퀀서들에 설정된 상기 채널 마이크로코드를 실행하는 단계를 포함하는 구동 방법.
  15. 제 14 항에 있어서,
    상기 채널 마이크로코드를 실행하는 단계, 상기 채널 마이크로코드가 실행된 결과를 확인하는 단계를 더 포함하는 구동 방법.
  16. 제 14 항에 있어서,
    상기 채널 마이크로코드를 설정하는 단계는,
    상기 복수의 채널 컨트롤 시퀀서들의 시퀀서 컨트롤 레지스터들 각각에 대하여 설정하는 단계; 그리고
    상기 복수의 채널 시퀀서 컨트롤 레지스터들 각각의 현재 어드레스에 상기 채널 마이크로코드의 시작 어드레스를 각각 입력하는 단계를 포함하는 구동 방법.
  17. 제 14 항에 있어서,
    상기 채널 마이크로코드를 실행하는 단계는,
    상기 복수의 채널 시퀀서 컨트롤 레지스터들 각각의 현재 어드레스에 기재된 상기 채널 마이크로코드를 각각 실행하는 단계;
    상기 복수의 채널 시퀀서 컨트롤 레지스터들 각각의 현재 어드레스에 기재된 상기 채널 마이크로코드 중 어느 하나가 상기 채널 마이크로코드의 마지막 어드레스이면 해당 채널 컨트롤 시퀀서에 인터럽트를 발생하는 단계; 그리고
    상기 복수의 시퀀서 컨트롤 레지스터들 각각의 현재 어드레스에 기재된 상기 채널 마이크로코드가 상기 채널 마이크로코드의 마지막 어드레스가 아니면 상기 복수의 채널 시퀀서 컨트롤 레지스터들 각각의 현재 어드레스의 상기 채널 마이크로코드를 실행하는 단계를 포함하는 구동 방법.
  18. 제 15 항에 있어서,
    상기 시스템 마이크로코드가 실행된 결과를 확인하는 단계는, 상기 복수의 채널 컨트롤 시퀀서들 중 어느 하나에 에러가 발생한 경우 상기 에러를 보고하고, 상기 복수의 채널 컨트롤 시퀀서들 각각의 상태 레지스터를 확인하는 단계를 더 포함하는 구동 방법.
KR1020070106258A 2007-10-22 2007-10-22 메모리 시스템 및 그 구동방법 KR101433861B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070106258A KR101433861B1 (ko) 2007-10-22 2007-10-22 메모리 시스템 및 그 구동방법
US12/238,592 US8335871B2 (en) 2007-10-22 2008-09-26 Memory system and method of driving the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070106258A KR101433861B1 (ko) 2007-10-22 2007-10-22 메모리 시스템 및 그 구동방법

Publications (2)

Publication Number Publication Date
KR20090040763A KR20090040763A (ko) 2009-04-27
KR101433861B1 true KR101433861B1 (ko) 2014-08-27

Family

ID=40564653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070106258A KR101433861B1 (ko) 2007-10-22 2007-10-22 메모리 시스템 및 그 구동방법

Country Status (2)

Country Link
US (1) US8335871B2 (ko)
KR (1) KR101433861B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255615B1 (en) * 2009-01-08 2012-08-28 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
KR101543245B1 (ko) * 2009-03-18 2015-08-11 삼성전자주식회사 에러 교정 장치와 이를 포함하는 메모리 장치와 데이터 처리 시스템
TW201037711A (en) * 2009-04-13 2010-10-16 Jmicron Technology Corp Data access method used in multi-channel flash memory system and data access apparatus thereof
US11061751B2 (en) 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11080210B2 (en) 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US10983724B2 (en) * 2018-09-14 2021-04-20 Micron Technology, Inc. Controller with distributed sequencer components

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981068B1 (en) * 1993-09-01 2005-12-27 Sandisk Corporation Removable mother/daughter peripheral card
US20060224820A1 (en) * 2005-04-01 2006-10-05 Hyun-Duk Cho Flash memory device supporting cache read operation

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0618535B1 (en) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US5663901A (en) * 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
US7383362B2 (en) 2003-12-02 2008-06-03 Super Talent Electronics, Inc. Single-chip multi-media card/secure digital (MMC/SD) controller reading power-on boot code from integrated flash memory for user storage
JP3822081B2 (ja) * 2001-09-28 2006-09-13 東京エレクトロンデバイス株式会社 データ書込装置、データ書込制御方法及びプログラム
TWI227395B (en) 2003-06-02 2005-02-01 Genesys Logic Inc Method for parallel processing of memory data and error correction code and related device thereof
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
KR100737802B1 (ko) 2004-12-30 2007-07-10 전자부품연구원 모듈형 디지털 신호 프로세서 블록 및 이를 이용한시스템-온-칩
US7702935B2 (en) * 2006-01-25 2010-04-20 Apple Inc. Reporting flash memory operating voltages
US7861122B2 (en) * 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981068B1 (en) * 1993-09-01 2005-12-27 Sandisk Corporation Removable mother/daughter peripheral card
US20060224820A1 (en) * 2005-04-01 2006-10-05 Hyun-Duk Cho Flash memory device supporting cache read operation

Also Published As

Publication number Publication date
KR20090040763A (ko) 2009-04-27
US8335871B2 (en) 2012-12-18
US20090106509A1 (en) 2009-04-23

Similar Documents

Publication Publication Date Title
USRE48997E1 (en) Memory system in which extended function can easily be set
KR101433861B1 (ko) 메모리 시스템 및 그 구동방법
JP4554900B2 (ja) Nandフラッシュメモリをシステム駆動用及びデータ貯蔵用として使用する装置
US5548788A (en) Disk controller having host processor controls the time for transferring data to disk drive by modifying contents of the memory to indicate data is stored in the memory
KR100291602B1 (ko) 인터럽트제어장치,프로세서및계산기시스템
KR100988157B1 (ko) 메모리 디바이스 구성을 검출하기 위한 방법 및 장치와, 메모리 디바이스 구성을 검출하기 위한 방법을 수행하기 위한 명령들을 포함하는 컴퓨터 판독 가능 매체
JP2010500682A (ja) フラッシュメモリアクセス回路
JP2005071303A (ja) プログラム起動装置
JP4829370B1 (ja) メモリ制御装置、メモリ装置および停止制御方法
JP2005157528A (ja) メモリ装置
US7644247B2 (en) System controller for flash memory
JP2013257640A (ja) コンフィグレーション制御装置、コンフィグレーション制御方法及びコンフィグレーション制御プログラム
EP2194458A2 (en) Request processing device, request processing system, and access testing method
JP4471947B2 (ja) データ処理装置及びデータ処理方法
JP2005267445A (ja) デバッグシステム
US7519802B2 (en) System and method for configuring a computer system
EP2730993B1 (en) Reset method and network device
JP2008140124A (ja) データ処理装置
JP2006126938A (ja) データ転送システム及びそのデータ転送方法
JP5917325B2 (ja) ブリッジ回路
JP5088566B2 (ja) 割込機能を備えたplc
JP2003330871A (ja) データ転送装置
CN117171097A (zh) 一种现场可编程门阵列远程加载方法及系统
JP2021089524A (ja) 情報処理装置、その制御方法、及びプログラム
JP2012022432A (ja) 組込制御装置、組込制御装置の開発方法、組込制御プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180731

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190731

Year of fee payment: 6