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

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

Info

Publication number
KR20100001184A
KR20100001184A KR1020080061001A KR20080061001A KR20100001184A KR 20100001184 A KR20100001184 A KR 20100001184A KR 1020080061001 A KR1020080061001 A KR 1020080061001A KR 20080061001 A KR20080061001 A KR 20080061001A KR 20100001184 A KR20100001184 A KR 20100001184A
Authority
KR
South Korea
Prior art keywords
memory
accelerator
microcode
memory device
flash memory
Prior art date
Application number
KR1020080061001A
Other languages
English (en)
Other versions
KR101504337B1 (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 KR1020080061001A priority Critical patent/KR101504337B1/ko
Priority to US12/457,485 priority patent/US8027194B2/en
Priority to CN200910205766.2A priority patent/CN101673581B/zh
Publication of KR20100001184A publication Critical patent/KR20100001184A/ko
Priority to US13/137,401 priority patent/US8565021B2/en
Priority to US13/137,409 priority patent/US8638585B2/en
Priority to US13/137,422 priority patent/US8614919B2/en
Priority to US13/137,423 priority patent/US8760918B2/en
Priority to US13/137,425 priority patent/US8625344B2/en
Priority to US13/137,424 priority patent/US8705272B2/en
Application granted granted Critical
Publication of KR101504337B1 publication Critical patent/KR101504337B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명은 플래시 메모리 시스템 및 그 구동방법에 관한 것이다. 본 발명에 따른 메모리 시스템은 데이터를 저장하기 위한 메모리 디바이스; 및 상기 메모리 디바이스와 시스템 버스를 통해 연결되며, 마이크로 코드에 의하여 상기 메모리 디바이스를 제어하기 위한 가속기를 포함하되, 상기 가속기는 상기 마이크로 코드를 저장하고, 상기 마이크로 코드를 실행하기 위한 채널 컨트롤 시퀀서를 포함한다. 따라서, 본 발명에 따른 메모리 시스템은 호스트 프로세서의 부하를 저감시키는 효과가 있다.

Description

메모리 시스템 및 그 구동방법{MEMORY SYSTEM AND DRIVING METHOD THEREOF}
본 발명은 플래시 메모리에 관한 것으로, 좀 더 구체적으로는 원낸드 및 낸드 플래시 메모리(OneNAND and NAND Flash Memory)의 기본 동작을 제어하는 가속기를 포함하는 메모리 시스템 및 그 구동방법에 관한 것이다.
메모리 컨트롤러는 성능을 높이기 위한 방법으로 하드와이어드 로직(Hard-wired Logic)으로 설계되어 플래시메모리의 모든 명령어 시퀀스(Instruction Sequence)를 제어한다. 하드와이어드 로직으로 설계된 메모리 컨트롤러는 설계가 복잡하고, 확장성이 떨어지며 다수의 플래시 메모리를 효율적으로 관리하는 데 어려움이 있다.
이와 반대로, 메모리 컨트롤러의 확장성을 높이기 위한 방법은 펌웨어(Firmware)를 통해 플래시메모리의 모든 명령어 시퀀스를 제어하는 것이다. 이러한 방법은 메모리 컨트롤러의 설계 방법은 용이하나 낮은 성능을 가진다. 따라서, 앞에서 기술한 두 방법의 단점을 해결할 수 있는 방안이 요구된다. 즉, 플래시 메모리 컨트롤러의 확장성을 용이하게 하면서 동시에 높은 성능이 요구된다.
또한, 낸드 플래시 메모리와 같은 단품 메모리들은 호스트의 중앙처리장치에 의하 여 제어되고, SD 카드, MMC 카드와 같은 제품은 제품 내부에 메모리 컨트롤러를 내장한다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로, 본 발명의 목적은 호스트 중앙처리장치의 로드를 저감할 수 있는 플래시 메모리 장치 및 그 구동방법을 제공한다.
본 발명에 따른 메모리 시스템은 데이터를 저장하기 위한 메모리 디바이스; 및 상기 메모리 디바이스와 시스템 버스를 통해 연결되며, 마이크로 코드에 의하여 상기 메모리 디바이스를 제어하기 위한 가속기를 포함하되, 상기 가속기는 상기 마이크로 코드를 저장하고, 상기 마이크로 코드를 실행하기 위한 채널 컨트롤 시퀀서를 포함한다.
실시예에 있어서, 상기 채널 컨트롤 시퀀서는 상기 마이크로 코드를 디코딩하고, 그리고 상기 디코딩된 마이크로 코드를 실행한다.
실시예에 있어서, 상기 메모리 디바이스는, 메모리; 및 상기 메모리와 인터페이스하는 인터페이스 블록을 포함한다.
실시예에 있어서, 상기 마이크로 코드는 상기 메모리를 제어하는 명령어인 것을 특징으로 한다.
실시예에 있어서, 상기 명령어는 Read&Load, Read&Verify, Write, Wait For Event, END, Read&Load&Index Increment, Mov, Add, Sub, Or, And, Shift Left, Shift Right, Swap, Jump Backward, Jump Backward If Equal, Jump Backward If Not Equal, Jump Forward, Jump Forward If Equal, Jump Forward If Not Equal, Jump Backward & Link, Jump Forward & Link, Return 및 Block Memory Transfer 중 적어도 어느 하나를 포함한다.
실시예에 있어서, 상기 메모리는 원낸드 플래시 메모리인 것을 특징으로 한다.
실시예에 있어서, 상기 가속기는 상기 채널 컨트롤 시퀀서의 제어에 응답하여 상기 메모리 디바이스로부터 데이터를 상기 시스템 버스로 전송하는 DMA를 더 포함한다.
실시예에 있어서, 상기 가속기는 상기 메모리에 저장된 데이터의 에러를 정정하는 에러 정정 코드 블록을 더 포함한다.
실시예에 있어서, 상기 메모리는 낸드 플래시 메모리인 것을 특징으로 한다.
실시예에 있어서, 상기 시스템 버스에 연결되고, 상기 가속기를 제어하는 프로세서를 더 포함한다.
본 발명의 또 다른 실시예에 따른 메모리 시스템의 구동방법은 (a) 메모리를 제어하는 마이크로 코드를 가속기에 로딩하는 단계; (b) 상기 메모리를 제어하는 파라미터를 상기 가속기에 로딩하는 단계; 및 (c) 상기 마이크로 코드를 실행하는 단계를 포함한다.
실시예에 있어서, 상기 (c) 단계는, 중앙처리장치에 의하여 상기 가속기의 동작 명령을 이슈하는 단계; 상기 중앙처리장치를 대기시키는 단계; 및 상기 가속기에 의하여 마이크로 코드를 실행하는 단계를 포함한다.
실시예에 있어서, 상기 마이크로 코드를 모두 종료하고 인터럽트를 발생하는 단계를 더 포함한다.
실시예에 있어서, 상기 마이크로 코드는 상기 메모리를 제어하는 명령어를 포함한다.
실시예에 있어서, 상기 파라미터는 상기 메모리의 소스 어드레스 및 타겟 어드레스를 포함한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명한다.
일반적인 플래시 메모리 장치를 제어하기 위한 시스템 계층(System Layer)이 도 1 및 도 2에 도시된다.
도 1은 퓨어 낸드의 시스템 계층을 도시한 실시예이고, 도 2은 매니지드 낸드의 시스템 계층을 도시한 실시예이다.
퓨어 낸드(Pure-NAND)란 NAND, OneNAND와 같은 단품 메모리를 의미한다. 퓨어 낸드는 외부의 프로세서(즉, 호스트의 중앙처리장치)에 의하여 제어된다. 외부의 프로세서로는 ARM926 또는 ARM1136과 같은 고가의 비교적 복잡한 프로세서가 사용된다.
매니지드 낸드(Managed-NAND)란 SD, MMC, LBA NAND 플래시와 같은 플래시 메모리를 의미한다. 매니지드 낸드는 플래시 메모리 내부의 메모리 컨트롤러에 의하여 제어된다. 플래시 메모리 내부의 낸드 메모리 컨트롤러로는 ARM7TDMI와 같은 저가의 비교적 간단한 프로세서가 사용된다.
도 1를 참조하면, 퓨어 낸드의 시스템 계층(10)은 유저 어플리케이션(User Application ; 11), 파일 시스템(File System ; 12), 블록 디바이스 인터페이스(Block Device interface ; 13), FTL(Flash Translation Layer ; 14-16) 및 플래시 메모리(Flash memory ; 17)를 포함된다.
유저 어플리케이션(11)은 파일 시스템(12) 상에서 구동되는 유틸리티(Utility)이다. 유저 어플리케이션(11)은 3세대 이동통신 기술인 고속하향패킷접속(HSDPA:high speed downlink packet access)을 통하여 컨텐츠(Contents)를 다운로드 받고, ARM11 또는 ARM9 같은 호스트 프로세서에 의하여 구동된다.
파일 시스템(12)은 플래시 메모리(17) 내의 데이터를 독출 및 기입하기 위한 규칙을 정한 것이다. 예를 들면, 파일 시스템(12)은 도스 또는 원도우즈에서 운용되는 FAT16, FAT32 및 NTFS이 있고, 리눅스에서 운용되는 ext2, raiserFS, ext3 등이 있다.
블록 디바이스 인터페이스(13)는 파일 시스템(12)과 FTL(14-16)을 연결한다. FTL(Flash Translation Layer ; 14-16)은 STL(Sector Translation Layer), BML(Block Management Layer) 및 LLD(Low Level Device Driver)를 포함한다. FTL(14-16)은 물리적인 플래시 메모리(17)를 파일 시스템(12)에서 사용할 수 있도 록 추상화한다.
퓨어 낸드의 경우 호스트의 중앙처리장치는 플래시 메모리(17)를 직접 제어한다.
도 2를 참조하면, 매니지드 낸드의 시스템 계층(20)은 유저 어플리케이션(21), 파일 시스템(22), 블록 디바이스 인터페이스(23), FTL(24-26) 및 플래시 메모리(27)를 포함한다.
매니지드 낸드의 경우 호스트의 중앙처리장치는 시스템 계층(10)에서 유저 어플리케이션(21), 파일 시스템(22) 및 블럭 디바이스 인터페이스(23)을 제어하고, 매니지드 낸드가 FTL(24-26) 및 플래시 메모리(27)를 직접 제어한다.
퓨어 낸드는 호스트 중앙처리장치의 높은 연산 성능과 풍부한 메모리(RAM) 자원을 바탕으로 복잡하고 효율적인 FTL을 수행한다. 그러나, 호스트 중앙처리장치는 FTL을 수행하기 위해서 많은 자원(즉, 중앙처리장치의 로드 및 메모리)을 소모한다. 즉, 파일 시스템 상에서 기입 성능(Write Performance)은 FTL 수행을 위해서 할당될 수 있는 중앙처리장치의 자원에 대해서 높은 의존성을 가진다. 따라서, 멀티태스킹(Multitasking) 환경에서 FTL 수행이 필요한 작업이 다른 높은 우선 순위의 작업(Task)에 의해서 중앙처리장치 자원을 선점당할 경우 기입 성능은 급격히 떨어진다.
이에 반하여, 매니지드 낸드의 경우 FTL 전용의 내부 프로세서를 사용하기 때문에 일정 수치 이상의 기입 성능이 보장된다. 그러나, 플래시 메모리마다 컨트롤러를 내장하기 때문에 비용(Cost)이 높아진다. 또한, 상대적으로 간단한 내부 프 로세서와 적은 메모리(RAM) 자원으로 간단한 FTL을 수행하기 때문에 퓨어 낸드에 비하여 비효율적인 머지 동작이 수반된다. 따라서, 매니지드 낸드는 파일 시스템 상에서 기입 성능을 최적화하기가 어렵다.
도 3은 낸드 플래시 메모리의 각각의 기본 동작들에 대한 수행 시간상에서 비중을 도시한 챠트(Chart)이다. 도 3을 참조하면, 낸드 플래시 메모리의 기본 동작에서 가장 빈도가 높은 것은 기타 동작(ETC ; 34)이다. 기타 동작으로는 기입 동작, 독출 동작, 카피 동작을 제외한 동작들이다. 예를 들면, 기타 동작으로는 소거(Erase) 동작, 소거후 검증(EraseVerify) 동작 등이 있다.
낸드 플래시 메모리의 기본 동작에서 기타 동작을 제외하고 비중이 가장 높은 것은 쓰기 동작(Write operation ; 31)이고, 그 다음으로 높은 것은 카피 동작(Copy operation ; 32)이고, 그 다음으로 독출 동작(Read Operation ; 33) 동작이다.
매니지드 낸드의 경우 플래시 메모리의 기본 동작이 호스트의 중앙처리장치의 로드에 영향을 주지 않는다. 이에 반하여, 퓨어 낸드의 경우 플래시 메모리 동작의 기본 동작이 호스트의 중앙처리장치의 로드에 상당한 영향을 미친다.
따라서, 본 발명의 실시예에 따른 메모리 시스템은 낸드 플래시 메모리의 기본 동작 중 빈도 수가 높은 동작만을 제어하는 가속기를 추가하여 호스트의 중앙처리장치의 부하를 저감한다. 본 발명의 실시예에 따른 가속기는 도 6에서 상세히 설명된다.
본 발명의 실시예에 따른 메모리 시스템은 낸드 플래시 메모리의 기본 동작 중 기입 동작과 카피 동작을 제어하는 가속기를 추가한다. 따라서, 메모리 시스템은 기입 동작과 카피 동작을 수행하는 동안 호스트의 중앙처리장치에 부하를 주지 않는다.
플래시 메모리 장치는 덮어쓰기(Overwrite) 동작이 불가능하다. 따라서, 플래시 메모리 장치는 덮어쓰기(Overwrite) 동작 대신에 머지(Merge) 동작을 수행한다.
플래시 메모리 장치에 있어서 로그 사상 기법에 따른 머지 동작이 도 4 및 5를 참조하여 이하 상세히 설명된다. 도 4를 참조하면, 데이터 저장 장치에서, 플래시 메모리는 데이터 영역, 로그 영역, 그리고 메타 영역으로 구분된다.
로그 사상 기법에 따르면, 로그 영역의 메모리 블록들은 데이터 영역의 메모리 블록들 중 일부 메모리 블록들에 각각 지정된다. 예를 들어, 플래시 메모리는 9개의 메모리 블록들 (PBN0-PBN8)을 포함한다고 가정하자. 9개의 메모리 블록들 중에서, 메모리 블록들 (PBN0-PBN4)은 데이터 영역으로, 메모리 블록들 (PBN5-PBN7)은 로그 영역으로, 그리고 메모리 블록 (PBN8)은 메타 영역으로 각각 정의되어 있다. 이때, 로그 영역의 메모리 블록들 (PBN5, PBN6)은 데이터 영역의 메모리 블록들 (PBN0, PBN2)에 각각 지정되며, 로그 영역의 메모리 블록 (PBN7)은 빈 메모리 블록으로 지정되어 있다고 가정한다.
데이터 영역의 메모리 블록 (PBN0)에 데이터를 쓰고자 하는 경우, 데이터는 메모리 블록 (PBN0)에 직접 쓰여지는 것이 아니라 메모리 블록 (PBN0)에 대응하는 로그 영역의 메모리 블록 (PBN5)에 쓰여진다. 메모리 블록 (PBN1)에 데이터를 쓰고 자 하는 경우, 메모리 블록 (PBN1)에 대응하는 로그 영역의 메모리 블록이 지정되어 있지 않기 때문에, 아래와 같이 머지 동작이 수행된다.
로그 영역에 빈 메모리 블록 (PBN7)이 있는 경우, 로그 영역의 메모리 블록 (PBN5)에 저장된 유효 데이터가 빈 메모리 블록 (PBN7)으로 복사된다. 그리고, 메모리 블록 (PBN5)에 대응하는 데이터 영역의 메모리 블록 (PBN0)에 저장된 유효 데이터가 메모리 블록 (PBN7)으로 복사된다.
한편, 머지 동작에 따른 메모리 블록의 사상(mapping) 정보는 변경되며, 변경된 사상 정보는 FTL에 의해서 관리되며, 플래시 메모리의 메타 영역(PBN8)에 저장된다.
도 5는 로그 사상 기법에 따른 머지 동작을 보여준다. 도 5를 참조하면, 로그 블록(PBN5) 및 데이터 블록(PBN0)의 유효한 페이지들은 새로운 데이터 블록(PBN7)으로 복사된다. 이때 로그 블록(PBN5)은 최근에 쓰여진 데이터이므로 사용자가 쓰여지길 원하는 데이터일 가능성이 높지만, 데이터 블록(PBN0)에 쓰여진 데이터는 이미 지워진, 즉 더 이상 유효하지 않은 데이터를 가능성이 있다. 이 경우, FTL의 입장에서는 데이터 블록(PBN0)에 쓰여진 데이터가 유효한지 아니면 무효한지의 여부를 전혀 알 수 없다. 즉, 데이터 블록(PBN0)의 유효한 페이지들은 FTL 관점에서는 유효한 페이지이지만, 파일 시스템 관점에서는 무효한 페이지일 수 있다. 예를 들면, 데이터 블록(PBN0)의 두번째 유효한 페이지에 쓰여진 파일이 파일 시스템 관점에서 이미 지워진 데이터라고 하면, 해당 페이지의 머지 동작은 파일 시스템 관점에서 불필요한 동작이 된다. 머지 동작은 FTL의 필요에 의해 일어나는 동작 이기 때문에 호스트는 머지 동작이 유발되는지 여부를 알 수 없다. 따라서, 매니지드 낸드는 호스트 중앙처리장치의 제어를 통하지 않고, 내장된 프로세서를 통하여 제어되므로, 비효율적인 머지 동작을 수행한다.
도 6은 본 발명의 실시예에 따른 메모리 시스템의 블록도이다.
도 6을 참조하면, 본 발명에 따른 메모리 시스템(100)은 호스트 프로세서(110), 제1 및 제2 메모리 디바이스(120, 130), 제1 및 제2 가속기(Accelator1-2 ; 140, 150) 및 시스템 버스(160)을 포함한다.
제1 메모리 디바이스(120)는 제1 원낸드 플래시 메모리(OneNAND Flash Memory;121) 및 제1 인터페이스(Interface;122)를 포함한다. 제2 메모리 디바이스(130)는 제2 원낸드 플래시 메모리(131) 및 제2 인터페이스(132)를 포함한다.
제1 가속기(140)는 A채널 컨트롤 시퀀서(Control Sequencer Ch. A ; 141) 및 제1 DMA(142)를 포함한다. 제2 가속기(150)는 B채널 컨트롤 시퀀서(Control Sequencer Ch. B ; 151) 및 제2 DMA(152)를 포함한다.
마이크로 코드는 메모리 시스템(100)에 장착되는 제1 및 제2 메모리 디바이스(120, 130) 내에 포함된 메모리들을 제어하는 복수의 명령어(Instruction)들이다. 마이크로 코드는 제1 및 제2 메모리 디바이스(120, 130)의 기본 동작(예를 들면, 기입동작, 독출 동작, 카피 동작, 소거 동작 등)을 제어하기 위하여 복수의 명령어들로 구성된다.
본 발명에 따른 마이크로 코드는 기본 명령어로 Read&Load, Read&Verify, Write, Wait For Event 및 END을 포함하고, 확장 명령어로 Read&Load&Index Increment, Mov, Add, Sub, Or, And, Shift Left, Shift Right, Swap, Jump Backward, Jump Backward If Equal, Jump Backward If Not Equal, Jump Forward, Jump Forward If Equal, Jump Forward If Not Equal, Jump Backward & Link, Jump Forward & Link, Return 및 Block Memory Transfer를 더 포함한다. 또한, 본 발명에 따른 가속기는 FTL의 LLD(Low Level Device Driver)의 LLD_Copy(), LLD_Write() 함수를 마이크로 코드를 통하여 실행되도록 한다.
호스트 프로세서(110)는 마이크로 코드를 시스템 버스(160)를 통하여 제1 및 제2 가속기(140, 150) 내의 A채널 및 B채널 컨트롤 시퀀서(141, 151)에 전송한다.
호스트 프로세서(110)에 의해서 전송된 마이크로 코드는 A채널 및 B채널 컨트롤 시퀀서(141, 151) 내의 코드 스토리지(Code Storage ;미도시)에 저장된다. 시퀀서 코드 스토리지에 저장된 마이크로 코드는 A 및 B채널 컨트롤 시퀀서(141, 151)에 의하여 페치(fetch)되고, 실행된다.
제1 가속기(140)의 A채널 컨트롤 시퀀서(141)는 마이크로 코드를 실행한다. 제1 DMA(142)는 A채널 컨트롤 시퀀서(141)의 실행된 마이크로 코드에 응답하여 제1 인터페이스(122)를 통하여 제1 원낸드 플래시 메모리(121)의 데이터를 읽어내고, 읽어낸 데이터를 호스트 프로세서(110)로 전송한다.
제2 가속기(150)의 동작은 제1 가속기(140)의 동작과 동일하다. 즉, 제2 가속기(150)은 마이크로 코드를 통하여 제2 메모리 디바이스(130)의 기본 동작을 제어한다.
제2 가속기(150)의 B채널 컨트롤 시퀀서(151)의 동작은 제1 가속기(140)의 A 채널 컨트롤 시퀀서(141)의 동작과 동일하다. 따라서, 중복되는 설명은 생략한다.
본 발명에 따른 메모리 시스템은 마이크로 코드를 이용하여 메모리 시스템에 장착되는 복수의 메모리 디바이스를 제어한다. 따라서, 메모리 시스템(100) 내의 호스트 프로세서(110)의 로드(load)를 저감시키는 효과가 있다.
도 7은 도 6에 도시된 메모리 시스템의 구동방법을 도시한 순서도이다.
도 6 및 도 7을 참조하면, 호스트 중앙처리장치(110)는 시스템 버스(160)를 통해 마이크로 코드를 제1 및 제2 가속기(140,150)의 코드 스토리지(Code Storage)에 로딩한다(S01). 호스트 중앙처리장치(110)는 시스템 버스(160)을 통해 파라미터를 제1 및 제2 가속기(140,150)의 파라미터 스토리지(Parameter Storage; 미도시)에 로딩한다(S02). 파라미터는 제1 및 제2 메모리(121, 131)의 소스 어드레스(Source Address) 및 타겟 어드레스(Target Address)를 포함한다.
호스트 중앙처리장치(110)는 제1 및 제2 가속기(140,150)의 구동 명령을 이슈(issure)하고, 제1 및 제2 가속기(140,150)로부터 인터럽트가 발생될 때까지 대기 모드(Sleep Mode)를 유지한다(S03). 제1 및 제2 가속기(140,150)는 파라미터에 따른 마이크로 코드를 실행한다(S04). 제1 및 제2 가속기(140,150)는 파라미터에 따른 마이크로 코드를 모두 실행하고, 인터럽트를 발생시킨다(S05).
본 발명은 파일 시스템 상에서 기입 성능을 향상시키기 위하여 퓨어 낸드에 플래시 메모리 가속기를 탑재한다.
본 발명에 따른 메모리 시스템은 연산이 복잡하고, 메모리 사용량이 많은 작업은 호스트 중앙처리장치가 수행하고, 연산이 단순하고, 메모리 사용량이 적은 작 업은 가속기가 수행한다. 따라서, 본 발명은 FTL의 기입 동작시 머지 및 프로그램 동작에 소요되는 호스트 중앙처리장치의 사용률을 낮출 수 있다. 또한, 본 발명에 따른 메모리 시스템은 플래시 메모리의 기입 성능의 현재 가용한 호스트 중앙처리장치의 자원량에 대한 의존성을 저감한다.
도 8은 퓨어 낸드의 경우 호스트 중앙처리장치의 동작에 대한 타이밍도이다.
도 8를 참조하면, CI는 호스트 중앙처리장치에 의한 플래시 메모리 명령어의 이슈 작업이고, SC는 호스트 중앙처리장치에 의한 플래시 메모리의 상태 체크이고, tR 또는 tPROG은 호스트 중앙처리장치에 의한 플래시 메모리 명령어 Busy waiting 작업이다. 즉, tR은 메모리 셀로부터 데이터를 독출하여 래치(Latch) 레지스터까지 데이터를 전송하는 시간이고, tPROG는 래치 레지스터로부터 메모리셀로 데이터를 기입하는 프로그램 시간이다.
호스트 중앙처리장치는 A 작업(Task A) 및 B 작업(Task B)을 병렬적으로 수행한다. A 작업(Task A)은 플래시 메모리의 기본 동작과 상관없는 작업이고, B 작업(Task B)은 플래시 메모리의 기본 동작을 제어하는 작업이다. 호스트 중앙처리장치는 A작업(Task A)과 B작업(Task B)을 시분할적으로 수행한다. 즉, 호스트 중앙처리장치는 A작업(Task A)을 수행하는 중간에 B작업(Task B)을 수행한다.
도 9는 도 6에 도시된 중앙처리장치 및 가속기에 대한 타이밍도이다.
도 9를 참조하면, CI는 가속기에 의한 플래시 메모리 명령어의 이슈 작업이고, SC는 가속기에 의한 플래시 메모리의 상태 체크이고, APL은 호스트 중앙처리장치에 의해 가속기의 파라미터 로딩 작업이고, ASC는 호스트 중앙처리장치에 의해 가속기의 상태 체크 작업이고, tR 또는 tPROG은 가속기에 의한 플래시 메모리 명령어 Busy waiting 작업이다. 즉, tR은 메모리 셀로부터 데이터를 독출하여 래치(Latch) 레지스터까지 데이터를 전송하는 시간이고, tPROG는 래치 레지스터로부터 메모리셀로 데이터를 기입하는 프로그램 시간이다.
호스트 중앙처리장치는 A 작업(Task A) 및 B 작업(Task B)를 병렬적으로 수행한다. A 작업(Task A)은 플래시 메모리의 기본 동작과 상관없는 작업이고, B 작업(Task B)은 플래시 메모리의 기본 동작을 제어하는 작업이다. 호스트 중앙처리장치는 A작업(Task A)과 B작업(Task B)을 독립적으로 수행한다. 즉, 호스트 중앙처리장치는 A작업을 수행하고, 가속기는 B작업을 수행한다. 따라서, 본 발명은 호스트 중앙처리장치의 로드를 저감할 수 있다.
도 10은 도 8 및 도 9에 도시된 작업 성능을 비교한 그래프이다.
도 8 내지 도 10을 참조하면, 그래프의 X축은 FTL을 구동하기 위한 중앙처리장치에 할당된 자원량이고, 그래프의 Y축은 FTL의 기입 성능이다. 즉, X축은 호스트 중앙처리장치의 로드에 대응하고, Y축은 작업 성능에 대응된다.
실선은 도 8에 도시된 작업 성능을 도시한다. 점선은 도 9에 도시된 작업 성능을 도시한다. 즉, 중앙처리장치에 할당된 자원량이 증가하면 도 8의 작업 성능에 대응하는 실선은 산술적으로 증가하고, 도 9의 작업 성능에 대응하는 점선은 기하급수적으로 증가한다.
도 11은 본 발명의 제2 실시예에 따른 메모리 시스템을 도시한 블록도이다.
도 11을 참조하면, 본 발명에 따른 메모리 시스템(200)은 호스트 프로세 서(210), 제1 및 제2 메모리 디바이스(220, 230), 제1 및 제2 가속기(240, 250) 및 시스템 버스(260)을 포함한다.
제1 메모리 디바이스(220)는 제1 낸드 플래시 메모리(NAND Flash Memory ; 221) 및 제1 인터페이스(Interface ; 222)를 포함한다. 제2 메모리 디바이스(230)는 제2 낸드 플래시 메모리(231) 및 제2 인터페이스(232)를 포함한다.
제1 가속기(240)는 A채널 컨트롤 시퀀서(Control Sequencer Ch. A ; 241), 제1 DMA(242) 및 제1 에러정정블록(Error Correction Code Block ; 243)을 포함한다. 제2 가속기(250)는 B채널 컨트롤 시퀀서(Control Sequencer Ch. B ; 251), 제2 DMA(252) 및 제2 에러정정블록(253)을 포함한다.
마이크로 코드는 메모리 시스템(200)에 장착되는 제1 및 제2 메모리 디바이스(220, 230) 내에 포함된 메모리들을 제어하는 복수의 명령어(Instruction)들이다. 마이크로 코드는 제1 및 제2 메모리 디바이스(220, 230)의 기본 동작(예를 들면, 기입동작, 독출 동작, 카피 동작, 소거 동작 등)을 제어하기 위하여 복수의 명령어들로 구성된다.
호스트 프로세서(210)는 마이크로 코드를 시스템 버스(260)를 통하여 제1 및 제2 가속기(240, 250) 내의 A채널 및 B채널 컨트롤 시퀀서(241, 251)에 전송한다.
호스트 프로세서(210)에 의해서 전송된 마이크로 코드는 A채널 및 B채널 컨트롤 시퀀서(241, 251) 내의 코드 스토리지(Code Storage;미도시)에 저장된다. 시퀀서 코드 스토리지에 저장된 마이크로 코드는 A 및 B채널 컨트롤 시퀀서(241, 251)에 의하여 페치(fetch)되고, 실행된다.
제1 에러정정블록(243)은 제1 낸드 플래시 메모리(221)의 데이터의 에러를 정정한다. 제1 디바이스 DMA(242)는 A채널 컨트롤 시퀀서(241)의 실행된 마이크로 코드에 응답하여 제1 인터페이스(222)를 통하여 제1 낸드 플래시 메모리(221)의 데이터를 읽어내고, 제1 에러정정블록(243)에 의해서 정정된 데이터를 호스트 프로세서(210)로 전송한다.
제2 가속기(250)의 동작은 제1 가속기(240)의 동작과 동일하다. 즉, 제2 가속기(250)은 마이크로 코드를 통하여 제2 메모리 디바이스(230)의 기본 동작을 제어한다.
플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 불 휘발성 메모리 장치이다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용된다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다. 본 발명에 따른 메모리 시스템을 포함한 컴퓨팅 시스템이 도 12에 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템은 버스(300)에 전기적으로 연결된 중앙처리장치(330), 사용자 인터페이스(340), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(320), 메모리 제어기(310), 그리고 플래시 메모리 장치(360)를 포함한다. 메모리 제어기(310)는 플래시 메모리 장치(360)를 제어한다. 플래시 메모리 장치(360)에는 중앙처리장치(330)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 제어기(310)를 통해 저장될 것이다. 본 발명 에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(350)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 제어기(310)와 플래시 메모리 장치(360)는, 예를 들면, 데이터를 저장하는 데 불 휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 예시적인 SSD가 미국특허공개번호 제2006-0152981호에 게재되어 있으며, 이 분야의 레퍼런스로 포함된다. 또는, 메모리 제어기(310)와 플래시 메모리 장치(360)는 데이터를 저장하는 데 불 휘발성 메모리를 메모리 카드를 구성할 수 있다.
도 13은 본 발명의 다른 예시적인 실시예들에 따른 메모리 기반 저장 장치를 보여주는 블록도이다.
도 13에 도시된 메모리 기반 저장 장치(400)는 메모리(420)와 메모리 제어기(410)가 카드를 구성하도록 구현된다. 예를 들면, 카드(400)는 플래시 메모리 카드와 같은 메모리 카드일 수 있다. 즉, 카드(400)는 디지털, 카메라, 개인 컴퓨터 등과 같은 전자 장치를 사용하기 위한 어떤 산업 표준을 만족하는 카드일 수 있다. 메모리 제어기(410)가 카드(400)에 의해 또 다른 (예를 들면, 외부) 장치로부터 수신된 제어 신호들에 기초하여 메모리(420)를 제어할 수 있다는 것이 이해될 것이다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하 게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
도 1은 퓨어 낸드의 시스템 계층을 도시하고, 도 2은 매니지드 낸드의 시스템 계층을 도시한다.
도 3은 낸드 플래시 메모리의 각각의 기본 동작들에 대한 수행 시간상에서 비중을 도시한 챠트(Chart)이다.
도 4 및 도 5는 로그 사상 기법에 따른 머지 동작을 보여준다.
도 6은 본 발명의 실시예에 따른 메모리 시스템의 블록도이다.
도 7은 도 6에 도시된 메모리 시스템의 구동방법을 도시한 순서도이다.
도 8은 퓨어 낸드의 경우 호스트 중앙처리장치의 동작에 대한 타이밍도이다.
도 9는 도 6에 도시된 중앙처리장치 및 가속기에 대한 타이밍도이다.
도 10은 도 8 및 도 9에 도시된 작업 성능을 비교한 그래프이다.
도 11은 본 발명의 제2 실시예에 따른 메모리 시스템을 도시한 블록도이다.
도 12는 본 발명에 따른 메모리 시스템을 포함한 컴퓨팅 시스템을 도시한다.
도 13는 본 발명의 다른 예시적인 실시예들에 따른 메모리 기반 저장 장치를 보여주는 블록도이다.

Claims (15)

  1. 데이터를 저장하기 위한 메모리 디바이스; 및
    상기 메모리 디바이스와 시스템 버스를 통해 연결되며, 마이크로 코드에 의하여 상기 메모리 디바이스를 제어하기 위한 가속기를 포함하되,
    상기 가속기는 상기 마이크로 코드를 저장하고, 상기 마이크로 코드를 실행하기 위한 채널 컨트롤 시퀀서를 포함하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 채널 컨트롤 시퀀서는 상기 마이크로 코드를 디코딩하고, 그리고 상기 디코딩된 마이크로 코드를 실행하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 메모리 디바이스는,
    메모리; 및
    상기 메모리와 인터페이스하는 인터페이스 블록을 포함하는 메모리 시스템.
  4. 제3항에 있어서,
    상기 마이크로 코드는 상기 메모리를 제어하는 명령어인 것을 특징으로 하는 메모리 시스템.
  5. 제4항에 있어서,
    상기 명령어는 Read&Load, Read&Verify, Write, Wait For Event, END, Read&Load&Index Increment, Mov, Add, Sub, Or, And, Shift Left, Shift Right, Swap, Jump Backward, Jump Backward If Equal, Jump Backward If Not Equal, Jump Forward, Jump Forward If Equal, Jump Forward If Not Equal, Jump Backward & Link, Jump Forward & Link, Return 및 Block Memory Transfer 중 적어도 어느 하나를 포함하는 메모리 시스템.
  6. 제3항에 있어서,
    상기 메모리는 원낸드 플래시 메모리인 것을 특징으로 하는 메모리 시스템.
  7. 제1항에 있어서,
    상기 가속기는 상기 채널 컨트롤 시퀀서의 제어에 응답하여 상기 메모리 디바이스로부터 데이터를 상기 시스템 버스로 전송하는 DMA를 더 포함하는 메모리 시스템.
  8. 제1항에 있어서,
    상기 가속기는 상기 메모리에 저장된 데이터의 에러를 정정하는 에러 정정 코드 블록을 더 포함하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 메모리는 낸드 플래시 메모리인 것을 특징으로 하는 메모리 시스템.
  10. 제1항에 있어서,
    상기 시스템 버스에 연결되고, 상기 가속기를 제어하는 프로세서를 더 포함하는 메모리 시스템.
  11. 메모리 디바이스 및 가속기를 포함하는 메모리 시스템의 구동 방법에 있어서:
    (a) 상기 메모리 디바이스를 제어하기 위한 마이크로 코드를 상기 가속기로 로딩하는 단계; 및
    (b) 상기 로드된 마이크로 코드를 저장하고, 호스트에 제어에 따라 상기 마이크로 코드를 실행하는 단계를 포함하는 구동 방법.
  12. 제11항에 있어서,
    상기 (c) 단계는,
    중앙처리장치에 의하여 상기 가속기의 동작 명령을 이슈하고, 그 다음에, 상기 중앙처리장치는 대기상태로 되고, 상기 동작 명령에 따라 상기 가속기에 의하여 마이크로 코드가 실행되는 단계를 포함하는 구동방법.
  13. 제12항에 있어서,
    상기 (c) 단계는,
    상기 마이크로 코드를 모두 종료하고 인터럽트를 발생하는 단계를 더 포함하는 구동방법.
  14. 제11항에 있어서,
    상기 마이크로 코드는 상기 메모리 디바이스를 제어하는 명령어를 포함하는 구동방법.
  15. 제11항에 있어서,
    상기 마이크로 코드에 의해 실행된 명령은 상기 메모리 디바이스의 소스 어드레스 및 타겟 어드레스를 포함하는 파라미터를 참조하는 구동방법.
KR1020080061001A 1988-06-13 2008-06-26 메모리 시스템 및 그 구동방법 KR101504337B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020080061001A KR101504337B1 (ko) 2008-06-26 2008-06-26 메모리 시스템 및 그 구동방법
US12/457,485 US8027194B2 (en) 1988-06-13 2009-06-12 Memory system and method of accessing a semiconductor memory device
CN200910205766.2A CN101673581B (zh) 2008-06-13 2009-06-15 存取半导体存储设备的存储***和方法
US13/137,401 US8565021B2 (en) 2008-06-13 2011-08-11 Memory system and method of accessing a semiconductor memory device
US13/137,409 US8638585B2 (en) 2008-06-13 2011-08-12 Memory system and method of accessing a semiconductor memory device
US13/137,422 US8614919B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device
US13/137,423 US8760918B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device
US13/137,425 US8625344B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device
US13/137,424 US8705272B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080061001A KR101504337B1 (ko) 2008-06-26 2008-06-26 메모리 시스템 및 그 구동방법

Publications (2)

Publication Number Publication Date
KR20100001184A true KR20100001184A (ko) 2010-01-06
KR101504337B1 KR101504337B1 (ko) 2015-03-25

Family

ID=41811508

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080061001A KR101504337B1 (ko) 1988-06-13 2008-06-26 메모리 시스템 및 그 구동방법

Country Status (1)

Country Link
KR (1) KR101504337B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102883207A (zh) * 2012-09-13 2013-01-16 深圳创维数字技术股份有限公司 一种数据处理的方法及数字电视终端
KR20200068564A (ko) * 2018-12-05 2020-06-15 삼성전자주식회사 Ssd들 상에서의 가속된 데이터 처리를 위한 시스템 및 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215444A1 (en) * 2002-03-25 2004-10-28 Patel Mukesh K. Hardware-translator-based custom method invocation system and method
GB2428496A (en) * 2005-07-15 2007-01-31 Global Silicon Ltd Error correction for flash memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102883207A (zh) * 2012-09-13 2013-01-16 深圳创维数字技术股份有限公司 一种数据处理的方法及数字电视终端
KR20200068564A (ko) * 2018-12-05 2020-06-15 삼성전자주식회사 Ssd들 상에서의 가속된 데이터 처리를 위한 시스템 및 방법
US11768601B2 (en) 2018-12-05 2023-09-26 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDS

Also Published As

Publication number Publication date
KR101504337B1 (ko) 2015-03-25

Similar Documents

Publication Publication Date Title
KR101395778B1 (ko) 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법
US9189248B2 (en) Specialized boot path for speeding up resume from sleep state
JP2020074079A (ja) メモリ機器のための拡張利用範囲
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US8135902B2 (en) Nonvolatile semiconductor memory drive, information processing apparatus and management method of storage area in nonvolatile semiconductor memory drive
KR20090109959A (ko) 스토리지 장치
KR20100126069A (ko) 메모리 장치 및 메모리 장치의 동작 방법
KR101842321B1 (ko) 세그먼트화된 캐시
US9858086B2 (en) Load boot data
JP2014519662A (ja) ホストから見たデバイスファームウェア更新の影響の管理
US9164804B2 (en) Virtual memory module
KR20200016075A (ko) 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
GB2406668A (en) Memory management in a computing device
CN113590501A (zh) 一种数据存储方法及相关设备
CN111897743A (zh) 数据储存装置及逻辑至物理地址映射表的载入方法
CN111813703A (zh) 数据储存装置及逻辑至物理地址映射表的更新方法
KR20200087487A (ko) 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
CN116578234B (zh) 闪存访问***及方法
KR101504337B1 (ko) 메모리 시스템 및 그 구동방법
KR20150106144A (ko) 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템
CN116185892A (zh) 闪存控制器及其访问闪存颗粒的方法
CN114490503A (zh) 一种高性能低功耗的eSIM卡芯片***
KR101039397B1 (ko) Mla의 독출 동작 속도를 증가시키기 위한 멀티 포트 메모리 장치의 공유 영역 관리 방법 및 그를 위한 프로그램을 기록한 컴퓨터로 독출 가능한 기록매체
CN116185891B (zh) 描述符管理方法
US20130080717A1 (en) Information processing apparatus and control method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
LAPS Lapse due to unpaid annual fee