KR20110097438A - 메모리 시스템, 그리고 그것의 동작 방법 - Google Patents

메모리 시스템, 그리고 그것의 동작 방법 Download PDF

Info

Publication number
KR20110097438A
KR20110097438A KR1020100017284A KR20100017284A KR20110097438A KR 20110097438 A KR20110097438 A KR 20110097438A KR 1020100017284 A KR1020100017284 A KR 1020100017284A KR 20100017284 A KR20100017284 A KR 20100017284A KR 20110097438 A KR20110097438 A KR 20110097438A
Authority
KR
South Korea
Prior art keywords
data
pattern data
pattern
logical address
address
Prior art date
Application number
KR1020100017284A
Other languages
English (en)
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 KR1020100017284A priority Critical patent/KR20110097438A/ko
Priority to US13/035,500 priority patent/US8892842B2/en
Priority to JP2011039537A priority patent/JP2011175646A/ja
Publication of KR20110097438A publication Critical patent/KR20110097438A/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • G06F13/1689Synchronisation and timing concerns
    • 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
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • 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/7201Logical to physical mapping or translation of blocks or pages

Landscapes

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

Abstract

본 발명은 메모리 시스템 및 그것의 읽기 방법 및 쓰기 방법에 관한 것이다. 본 발명의 기술적 사상의 실시 예에 따르면, 메모리 시스템은 불휘발성 메모리 장치, 상기 불휘발성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 상기 메모리 컨트롤러에서 구동되며, 반복적으로 쓰기 요청된 패턴 데이터를 관리하는 가상 데이터 인터페이스 레이어를 포함하며, 상기 가상 데이터 인터페이스 레이어는 상기 패턴 데이터에 대한 읽기 요청이 있는 경우에 상기 읽기 요청된 패턴 데이터를 생성한다. 본 발명의 기술적 사상의 실시 예에 따르면, 메모리 시스템의 읽기 속도가 향상된다.

Description

메모리 시스템, 그리고 그것의 동작 방법{MEMORY SYSTEM AND OPERATION METHOD THEREOF}
본 발명은 메모리 시스템에 관한 것으로, 더욱 상세하게는 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
최근 디지털 카메라, MP3 플레이어, 핸드폰, PDA 등과 같은 휴대용 전자 장치가 많이 사용되고 있다. 이러한 휴대용 전자 장치에는 반도체 메모리 장치가 사용된다. 반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 비휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 비휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.
한편, 휴대용 전자 장치에는 플래시 메모리가 많이 사용되고 있다. 이는 플래시 메모리가 저전력 및 고집적 등의 특성을 갖는 비휘발성 소자이기 때문이다. 그러나, 플래시 메모리에 저장된 데이터를 읽기 위해서는 실제 플래시 메모리 셀에 물리적 전압 등을 인가하여야 한다. 따라서, 플래시 메모리에 저장된 데이터를 읽기 위해서는 플래시 메모리의 셀에 전압 등을 인가하여야하는 시간과 플래시 메모리 셀에 저장된 데이터를 페이지 버퍼 등에 전달하는 시간 등을 필요로 한다.
본 발명의 목적은 읽기 성능이 향상된 메모리 시스템 및 그것의 읽기 또는 쓰기 방법을 제공하는 데 있다.
본 발명의 기술적 사상의 실시 예에 따른 메모리 시스템은 불휘발성 메모리 장치, 상기 불휘발성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 상기 메모리 컨트롤러에서 구동되며, 호스트로부터 제공되는 데이터 중 패턴 데이터를 관리하는 가상 데이터 인터페이스 레이어를 포함하되, 상기 가상 데이터 인터페이스 레이어는 상기 패턴 데이터에 대한 읽기 요청이 있는 경우에 상기 읽기 요청된 패턴 데이터를 생성한다.
실시 예로서, 상기 가상 데이터 인터페이스 레이어는 상기 패턴 데이터 및 상기 패턴 데이터에 대응하는 어드레스를 관리하기 위한 패턴 데이터 테이블을 갖는다.
실시 예로서, 상기 가상 데이터 인터페이스 레이어는 읽기 요청된 어드레스가 상기 패턴 데이터 테이블의 어드레스인지의 여부를 판단하는 데이터 분석 모듈 및 상기 패턴 데이터 테이블을 참조하여, 상기 읽기 요청된 어드레스에 대응하는 패턴 데이터를 생성하는 데이터 생성 모듈을 포함한다.
실시 예로서, 상기 데이터 생성 모듈은 상기 읽기 요청된 어드레스에 대응하는 패턴 데이터를 상기 메모리 컨트롤러의 랜덤 액세스 메모리에 저장한다.
실시 예로서, 상기 가상 데이터 인터페이스 레이어는 쓰기 요청된 데이터가 패턴 데이터인지의 여부를 판단하는 데이터 분석 모듈 및 상기 쓰기 요청된 패턴 데이터 및 상기 쓰기 요청된 패턴 데이터에 대응하는 어드레스를 포함하도록 상기 패턴 데이터 테이블을 업 데이트하는 데이터 풀 모듈을 포함한다.
실시 예로서, 상기 데이터 분석 모듈은 상기 쓰기 요청된 데이터 중 제 1 데이터를 저장하는 제 1 버퍼 및 상기 쓰기 요청된 데이터 중 제 2 데이터를 저장하는 제 2 버퍼를 포함한다.
실시 예로서, 상기 데이터 분석 모듈은 상기 제 1 버퍼에 저장된 제 1 데이터와 상기 제 2 버퍼에 저장된 제 2 데이터를 비교하여 상기 제 1 데이터와 상기 제 2 데이터가 패턴 데이터인지의 여부를 판단하는 비교 모듈을 더 포함한다.
실시 예로서, 상기 데이터 풀 모듈을 상기 업 데이트된 패턴 데이터 테이블을 상기 메모리 컨트롤러의 랜덤 액세스 메모리에 저장한다.
실시 예로서, 상기 가상 데이터 인터페이스 레이어는 상기 읽기 요청된 어드레스가 상기 패턴 데이터 테이블에 저장된 어드레스가 아닌 경우에, 상기 읽기 요청된 어드레스를 상기 불휘발성 메모리 장치에 전달한다.
실시 예로서, 상기 불휘발성 메모리 장치는 플래시 메모리이며, 상기 플래시 메모리 및 상기 호스트 사이의 어드레스 맵핑 동작을 관리하기 위한 플래시 변환 레이어를 더 포함한다.
본 발명의 기술적 사상에 따른 메모리 시스템의 동작 방법에 있어서, 상기 메모리 시스템은 호스트로부터 제공되는 데이터 중 패턴 데이터 및 상기 패턴 데이터에 대응하는 어드레스를 관리하기 위한 패턴 데이터 테이블을 포함하고, 상기 메모리 시스템의 읽기 방법은 상기 호스트로부터 읽기 요청된 어드레스를 입력받는 단계, 상기 읽기 요청된 어드레스가 상기 패턴 데이터 테이블에 저장된 어드레스와 일치하는지 판단하는 단계 그리고 상기 패턴 데이터 테이블을 기초로, 상기 읽기 요청된 어드레스에 대응하는 패턴 데이터를 생성하는 단계를 포함한다.
실시 예로서, 상기 메모리 시스템은 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하기 위한 메모리 컨트롤러를 포함하되, 상기 패턴 데이터 테이블은 상기 메모리 컨트롤러의 랜덤 액세스 메모리 상에서 구동된다.
실시 예로서, 상기 패턴 데이터 테이블은 휴지 기간에 또는 정기적으로 상기 메모리 컨트롤러 내의 불휘발성 메모리에 저장된다.
실시 예로서, 상기 읽기 요청된 어드레스와 상기 패턴 데이터 테이블에 저장된 어드레스가 일치하지 않는 경우, 상기 읽기 요청된 어드레스는 상기 불휘발성 메모리 장치에 전달된다.
실시 예로서, 상기 메모리 시스템은 플래시 메모리 장치 및 상기 호스트 및 상기 플래시 메모리 장치 사이의 어드레스 맵핑 동작을 관리하기 위한 플래시 변환 레이어를 포함한다.
실시 예로서, 상기 읽기 요청된 어드레스가 상기 패턴 데이터 테이블 및 상기 플래시 변환 레이어에 저장된 어드레스와 일치하지 않는 경우, 클린 데이터를 생성하는 단계를 더 포함한다.
본 발명의 기술적 사상의 실시 예에 따른 메모리 시스템의 동작 방법에 있어서, 상기 메모리 시스템은 호스트로부터 제공되는 데이터 중 패턴 데이터 및 상기 패턴 데이터에 대응하는 어드레스를 관리하기 위한 패턴 데이터 테이블을 포함하고, 상기 메모리 시스템의 쓰기 방법은 상기 호스트로부터 쓰기 요청된 데이터를 입력받는 단계, 상기 쓰기 요청된 데이터가 패턴 데이터인지의 여부를 판단하는 단계 및 상기 쓰기 요청된 패턴 데이터 및 상기 쓰기 요청된 패턴 데이터에 대응하는 어드레스를 상기 패턴 데이터 테이블에 등록하는 단계를 포함한다.
실시 예로서, 상기 판단하는 단계는 상기 쓰기 요청된 데이터 중 제 1 및 제 2 데이터를 각각 제 1 및 제 2 버퍼에 저장하고, 상기 제 1 버퍼에 저장된 제 1 데이터와 상기 제 2 버퍼에 저장된 제 2 데이터를 비교한다.
실시 예로서, 상기 메모리 시스템은 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하기 위한 메모리 컨트롤러를 포함하되, 상기 쓰기 요청된 데이터가 패턴 데이터가 아닌 경우, 상기 쓰기 요청된 데이터는 상기 불휘발성 메모리 장치에 저장된다.
실시 예로서, 상기 패턴 데이터 테이블은 상기 메모리 컨트롤러의 랜덤 액세스 메모리 상에서 구동된다.
본 발명의 기술적 사상의 실시 예에 따른 메모리 시스템은 가상 데이터 인터페이스 레이어를 포함한다. 패턴 데이터에 대한 읽기 동작이 수행되는 경우, 가상 데이터 인터페이스 레이어는 패턴 데이터 테이블을 참조하여 패턴 데이터를 생성하고, 이를 출력한다. 따라서, 패턴 데이터에 대한 읽기 동작이 수행되는 경우, 플래시 메모리 장치에 대한 읽기 동작이 수행되지 않기 때문에, 본 발명의 기술적 사상에 따른 메모리 시스템은 읽기 속도를 향상시킬 수 있다.
도 1은 본 발명의 기술적 사상의 실시 예에 따른 불휘발성 메모리 장치를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 시스템의 소프트웨어 구조를 보여주는 블록도이다.
도 3은 도 2에 도시된 메모리 시스템의 동작을 설명하기 위한 블록도이다.
도 4A는 도 3의 데이터 분석 모듈을 좀더 상세하게 설명하기 위한 블록도이다.
도 4B는 도 3의 데이터 풀 모듈을 좀더 상세하게 설명하기 위한 블록도이다.
도 4C는 도 3의 데이터 생성 모듈을 좀더 상세하게 설명하기 위한 블록도이다.
도 5는 본 발명의 기술적 사상의 실시 예에 따른 쓰기 요청된 데이터 및 이에 대응하는 논리 어드레스를 보여주는 도면이다.
도 6은 도 5의 쓰기 요청된 데이터에 대한 데이터 분석 모듈 및 데이터 풀 모듈의 동작을 보여주는 블록도이다.
도 7은 도 5의 쓰기 요청된 데이터에 데이터 분석 모듈 및 데이터 풀 모듈의 동작을 보여주는 블록도이다.
도 8은 도 5의 쓰기 요청된 데이터에 대한 패턴 데이터 테이블을 보여주는 블록도이다.
도 9는 도 5 내지 도 8에서 설명된 쓰기 동작이 수행되는 경우에 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 순서도이다.
도 10은 본 발명의 기술적 사상의 실시 예에 따른 읽기 동작이 수행되는 경우의 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 블록도이다.
도 11은 도 10에서 설명된 읽기 동작이 수행되는 경우에 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 순서도이다.
도 12는 본 발명의 기술적 사상의 다른 실시 예에 따른 읽기 동작이 수행되는 경우의 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 블록도이다.
도 13은 도 12에서 설명된 읽기 동작이 수행되는 경우에 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 순서도이다.
도 14는 본 발명의 기술적 사상의 다른 실시 예에 따른 도 1에 도시된 메모리 시스템의 소프트웨어 구조를 보여주는 블록도이다.
도 15는 도 14에 도시된 메모리 시스템의 동작을 설명하기 위한 블록도이다.
도 16은 본 발명의 기술적 사상의 다른 실시 예에 따른 불휘발성 메모리 장치를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다.
도 17은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브를 보여주는 블록도이다.
도 18은 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 바람직한 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 기술적 사상의 실시 예에 따른 불휘발성 메모리 장치를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다. 도 1에서는 불휘발성 메모리 장치의 예로서, 플래시 메모리(120)가 도시되어 있다. 도 1을 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(110) 및 플래시 메모리(120)를 포함한다.
메모리 컨트롤러(110)는 중앙 처리 장치(CPU, 111), 랜덤 액세스 메모리(RAM, 112), 호스트 인터페이스(113), 불휘발성 메모리 장치(NVM, 114) 및 플래시 인터페이스(115)를 포함한다.
중앙 처리 장치(111)는 호스트(Host)로부터 입력된 신호를 분석하고 처리한다. 중앙 처리 장치(111)는 호스트 인터페이스(113)를 통해 호스트를 제어한다. 중앙 처리 장치(111)는 플래시 인터페이스(115)를 통해 플래시 메모리(120)를 제어한다. 중앙 처리 장치는 메모리 컨트롤러(110) 및 플래시 메모리(120)를 구동하기 위한 펌웨어에 따라 메모리 컨트롤러(110) 및 플래시 메모리(120)의 동작을 제어한다.
랜덤 액세스 메모리(112)는 호스트로부터 제공되는 쓰기 데이터를 임시로 저장한다. 랜덤 액세스 메모리(112)는 플래시 메모리(120)로부터 제공되는 읽기 데이터를 임시로 저장한다. 랜덤 액세스 메모리(112)는 플래시 메모리(120)에 저장될 메타 데이터나 캐시 데이터를 저장할 수 있다. 랜던 액세스 메모리(112)는 DRAM, SRAM 등이 포함될 수 있다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 랜덤 액세스 메모리(112)는 가상 데이터 인터페이스 레이어(VDIL, Virtual Data Interface Layer)를 저장할 수 있다. 즉, 가상 데이터 인터페이스 레이어(VDIL)는 랜덤 액세스 메모리(112) 상에서 구동될 수 있다. 여기서, 가상 데이터 인터페이스 레이어(VDIL)는 호스트로부터 제공된 데이터 중 특정 데이터를 관리하기 위한 모듈을 의미한다. 예를 들어, 가상 데이터 인터페이스 레이어(VDIL)는 반복되는 데이터 패턴을 갖는 패턴 데이터를 관리하기 위한 모듈일 수 있다.
예를 들어, 호스트로부터 쓰기 요청이 있는 경우, 가상 데이터 인터페이스 레이어(VDIL)는 호스트로부터 제공되는 데이터가 패턴 데이터인지의 여부를 판단하고, 패턴 데이터 및 이에 대응하는 어드레스를 랜덤 액세스 메모리(112)에 저장할 수 있다. 여기서, 패턴 데이터 및 이에 대응하는 어드레스의 집합은 패턴 데이터 테이블이라 칭해질 수 있다. 즉, 가상 데이터 인터페이스 레이어(VDIL)는 패턴 데이터 테이블을 랜덤 액세스 메모리(112)에 저장할 수 있다.
예를 들어, 호스트로부터 읽기 요청이 있는 경우, 가상 데이터 인터페이스 레이어(VDIL)는 호스트로부터 제공된 어드레스가 패턴 데이터 테이블에 저장된 어드레스와 일치하는지의 여부를 판단할 수 있다. 호스트로부터 제공된 어드레스가 패턴 데이터 테이블에 저장된 어드레스와 일치하는 경우, 가상 데이터 인터페이스 레이어(VDIL)는 해당 어드레스에 대응하는 패턴 데이터를 생성할 수 있다. 생성된 패턴 데이터는 랜덤 액세스 메모리(112)에 저장될 수 있다.
호스트 인터페이스(113)는 호스트의 프로토콜에 대응하여 메모리 컨트롤러(110)와의 인터페이싱을 제공한다. 호스트 인터페이스(113)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트와 통신할 수 있다.
불휘발성 메모리(114)는 PRAM, RRAM, FRAM, 플래시 메모리 등과 같은 불휘발성 메모리를 포함할 수 있다. 본 발명의 기술적 사상에 따른 실시 예에 있어서, 불휘발성 메모리(114)는 호스트로부터 제공되는 데이터 중 패턴 데이터 및 이에 대응하는 어드레스를 저장한다. 즉, 불휘발성 메모리(114)는 패턴 데이터 테이블을 저장할 수 있다.
예를 들어, 호스트로부터 쓰기 요청이 있는 경우, 가상 데이터 인터페이스 레이어(VDIL)는 패턴 데이터 테이블을 랜덤 액세스 메모리(112)에 저장할 수 있다. 이 경우, 예를 들어, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터는 휴지 기간(idle time)에 불휘발성 메모리(114)에 저장될 수 있다. 다른 예로, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터는 정기적으로 불휘발성 메모리(114)에 저장될 수 있다.
한편, 예를 들어, 호스트로부터 읽기 요청이 있는 경우, 불휘발성 메모리(114)에 저장된 패턴 데이터 테이블은 랜덤 액세스 메모리(112)에 전달될 수 있다. 다른 예로, 메모리 시스템(100)에 전원이 공급된 경우, 불휘발성 메모리(114)에 저장된 패턴 데이터 테이블은 랜덤 액세스 메모리(112)에 전달될 수 있다.
플래시 인터페이스(115)는 랜덤 액세스 메모리(112)로부터 전달된 데이터를 플래시 메모리(120)에 전달한다. 플래시 인터페이스(115)는 플래시 메모리(120)로부터 읽은 데이터를 랜덤 액세스 메모리(112)에 전달한다. 여기에서, 플래시 인터페이스(115)는 낸드 플래시 메모리의 인터페이스 방식을 사용할 수 있다. 즉, 메모리 컨트롤러(110)는 낸드 플래시 메모리 인터페이스 방식에 따라 프로그램, 읽기, 또는 소거 동작 등을 수행할 수 있다.
플래시 메모리(120)는 복수의 메모리 셀들을 포함한다. 예를 들어, 플래시 메모리(120)는 스트링 구조(string structure)를 갖는 복수의 메모리 셀들로 구성될 수 있다. 메모리 셀들의 집합은 보통 메모리 셀 어레이(memory cell array)라 칭해질 수 있다. 플래시 메모리(120)의 메모리 셀 어레이는 복수의 메모리 블록(memory block)으로 구성될 수 있다. 각각의 메모리 블록은 복수의 페이지(page)로 구성될 수 있다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀들로 구성될 수 있다. 각각의 메모리 셀은 한 비트의 데이터 또는 두 비트 이상의 데이터를 저장할 수 있다.
도 2는 도 1에 도시된 메모리 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다. 도 2를 참조하면, 메모리 시스템(100)은 애플리케이션(205), 파일 시스템(210), 가상 데이터 인터페이스 레이어(220), 플래시 변환 레이어(FTL, 230), 그리고 플래시 메모리(240) 순으로 소프트웨어 계층 구조를 갖는다.
가상 데이터 인터페이스 레이어(220)는 파일 시스템(210)으로부터 논리 어드레스(LA; Logical Address)를 전달받는다. 가상 데이터 인터페이스 레이어(220)는 애플리케이션(205) 또는 파일 시스템(210)으로부터 데이터를 전달받는다.
예를 들어, 쓰기 동작이 요청된 경우, 가상 데이터 인터페이스 레이어(220)는 전달된 데이터가 패턴 데이터인지의 여부를 판단한다. 전달된 데이터가 패턴 데이터인 경우, 가상 데이터 인터페이스 레이어(220)는 전달된 패턴 데이터 및 이에 대응하는 논리 어드레스(LA)를 포함하는 패턴 데이터 테이블을 구성한다. 한편, 전달된 데이터가 패턴 데이터가 아닌 경우, 가상 데이터 인터페이스 레이어(220)는 전달된 데이터에 대응하는 논리 어드레스(LA)를 플래시 변환 레이어(230)에 전달한다.
예를 들어, 읽기 동작이 요청된 경우, 가상 데이터 인터페이스 레이어(220)는 전달된 논리 어드레스(LA)가 패턴 데이터 테이블의 논리 어드레스와 일치하는지의 여부를 판단한다. 전달된 논리 어드레스(LA)가 패턴 데이터 테이블의 논리 어드레스와 일치하는 경우, 가상 데이터 인터페이스 레이어(220)는 패턴 데이터 테이블을 참조하여 패턴 데이터를 생성한다. 생성된 패턴 데이터는 랜덤 액세스 메모리(112, 도 1 참조)에 저장된다. 한편, 전달된 논리 어드레스(LA)가 패턴 데이터의 논리 어드레스와 일치하지 않는 경우, 가상 데이터 인터페이스 레이어(220)는 전달된 논리 어드레스(LA)를 플래시 변환 레이어(230)에 전달한다.
플래시 변환 레이어(230)는 가상 데이터 인터페이스 레이어(220)로부터 논리 어드레스(LA)를 전달받는다. 즉, 플래시 변환 레이어(230)는 패턴 데이터가 아닌 데이터의 논리 어드레스(LA)를 가상 인터페이스 레이어(220)로부터 전달받는다. 플래시 변환 레이어(220)는 전달받은 논리 어드레스(LA)를 물리 어드레스(PA; Physical Address)로 변환한다. 물리 어드레스(PA)는 플래시 메모리(240)에 제공한다. 플래시 변환 레이어(230)는 어드레스 변환을 위한 어드레스 맵핑 테이블(Address Mapping Table)을 갖는다.
도 3은 도 2에 도시된 메모리 시스템의 동작을 설명하기 위한 블록도이다. 도 3을 참조하면, 메모리 시스템(300)은 파일 시스템(210), 가상 데이터 인터페이스 레이어(220), 플래시 변환 레이어(230), 그리고 플래시 메모리(240)를 포함한다.
가상 데이터 인터페이스 레이어(220)는 랜덤 액세스 메모리(112, 도 1 참조) 상에서 구동된다. 가상 데이터 인터페이스 레이어(220)는 데이터 분석 모듈(221), 데이터 풀 모듈(222), 그리고 데이터 생성 모듈(223)을 포함한다.
데이터 분석 모듈(221)은 파일 시스템(210)으로부터 논리 어드레스(LA)를 전달받는다. 또한, 데이터 분석 모듈(221)은 파일 시스템(210) 또는 애플리케이션(205, 도 2 참조)으로부터 데이터를 전달받는다. 데이터 분석 모듈(221)은 전달받은 데이터 또는 논리 어드레스(LA)가 패턴 데이터 또는 패턴 데이터에 대응하는 논리 어드레스인지의 여부를 판단한다.
자세히 설명하면, 예를 들어, 쓰기 동작의 요청이 있는 경우, 데이터 분석 모듈(221)은 파일 시스템(210)으로부터 쓰기 요청된 논리 어드레스(LA)를 전달받는다. 또한, 데이터 분석 모듈(221)은 파일 시스템(210) 또는 애플리케이션(205)으로부터 쓰기 요청된 데이터를 전달받는다. 데이터 분석 모듈(221)은 전달받은 데이터가 패턴 데이터인지의 여부를 판단한다.
전달받은 데이터가 패턴 데이터인 경우, 데이터 분석 모듈(221)은 패턴 데이터 및 이에 대응하는 논리 어드레스 정보를 데이터 풀 모듈(222)에 전달할 것이다. 이 경우, 데이터 풀 모듈(222)은 전달받은 패턴 데이터 및 이에 대응하는 논리 어드레스를 랜덤 액세스 메모리(112)에 저장할 것이다. 즉, 데이터 풀 모듈(222)은 전달받은 패턴 데이터 및 이에 대응하는 논리 어드레스를 포함하는 패턴 데이터 테이블을 랜덤 액세스 메모리(112)에 저장할 것이다.
전달받은 데이터가 패턴 데이터가 아닌 경우에, 데이터 분석 모듈(221)은 전달받은 데이터 및 대응하는 논리 어드레스를 플래시 메모리(240) 또는 플래시 변환 레이어(230)에 전달할 것이다. 이 경우, 패턴 데이터가 아닌 데이터(이하, 논-패턴 데이터, non-pattern data)는 플래시 메모리(240)에 저장될 것이다. 또한, 논-패턴 데이터에 대응하는 논리 어드레스(LA) 및 물리 어드레스(PA)는 플래시 변환 레이어(230)에 의하여 관리될 것이다.
한편, 예를 들어, 읽기 동작의 요청이 있는 경우, 데이터 분석 모듈(221)은 파일 시스템(210)으로부터 읽기 요청된 논리 어드레스(LA)를 전달받는다. 데이터 분석 모듈(221)은 전달받은 논리 어드레스(LA)가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는지의 여부를 판단한다.
전달받은 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는 경우, 데이터 분석 모듈(221)은 전달받은 논리 어드레스를 데이터 생성 모듈(223)에 전달할 것이다. 데이터 생성 모듈(223)은 패턴 데이터 테이블을 참조하여 전달받은 논리 어드레스에 대응하는 패턴 데이터를 생성할 것이다. 생성된 패턴 데이터는 랜덤 액세스 메모리(112)에 저장될 것이다.
전달받은 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하지않는 경우, 데이터 분석 모듈(221)은 전달받은 논리 어드레스를 플래시 변환 레이어(230)에 전달할 것이다. 플래시 변환 레이어(230)는 전달받은 논리 어드레스(LA)를 물리 어드레스(PA)로 변환하고, 물리 어드레스(PA)를 플래시 메모리(240)에 전달할 것이다. 즉, 플래시 메모리(240)에 저장된 데이터에 대한 독출 동작이 수행될 것이다. 한편, 데이터 분석 모듈(221)은 이하의 도 4A에서 좀더 상세하게 설명될 것이다.
계속해서 도 3을 참조하면, 데이터 풀 모듈(222)은 쓰기 동작이 수행되는 경우에 데이터 분석 모듈(221)로부터 패턴 데이터 및 이에 대응하는 논리 어드레스를 전달받는다. 데이터 풀 모듈(222)은 전달받은 패턴 데이터 및 이에 대응하는 논리 어드레스를 포함하는 패턴 데이터 테이블을 랜덤 액세스 메모리(112)에 저장한다.
자세히 설명하면, 예를 들어, 패턴 데이터에 대한 쓰기 동작이 요청된 경우, 데이터 풀 모듈(222)은 데이터 분석 모듈(221)에서 판단된 패턴 데이터 및 이에 대한 논리 어드레스를 전달받는다. 데이터 풀 모듈(222)은 전달받은 패턴 데이터 및 이에 대응하는 논리 어드레스를 포함하는 패턴 데이터 테이블을 랜덤 액세스 메모리(112)에 저장할 것이다. 또한, 데이터 풀 모듈(222)은 전달받은 패턴 데이터 및 이에 대응하는 논리 어드레스를 포함하도록, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블을 업 데이트(update)할 수 있다.
한편, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블은 불휘발성 메모리(114)에 저장될 것이다.예를 들어, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블은 휴지 기간(idle time)에 불휘발성 메모리(114)에 저장될 것이다. 다른 예로, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블은 정기적으로 불휘발성 메모리(114)에 저장될 것이다. 한편, 데이터 풀 모듈(222)은 이하의 도 4B에서 좀더 자세히 설명될 것이다.
데이터 생성 모듈(223)은 읽기 동작이 수행되는 경우에 데이터 분석 모듈(221)로부터 패턴 데이터에 대응하는 논리 어드레스를 전달받는다. 데이터 생성 모듈(223)은 패턴 데이터 테이블을 참조하여, 전달받은 논리 어드레스에 대응하는 패턴 데이터를 생성한다.
자세히 설명하면, 예를 들어, 패턴 데이터에 대한 읽기 동작이 요청된 경우, 데이터 생성 모듈(223)은 데이터 분석 모듈(221)로부터 패턴 데이터의 논리 어드레스를 전달받는다. 데이터 생성 모듈(223)은 패턴 데이터 테이블을 참조하여, 전달받은 논리 어드레스(LA)에 대응하는 패턴 데이터를 생성한다. 또한, 데이터 생성 모듈(223)은 생성된 패턴 데이터를 랜덤 액세스 메모리(112)에 저장한다.
한편, 예를 들어, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블 또는 플래시 변환 레이어(230)에 저장되지 않은 논리 어드레스인 경우, 데이터 생성 모듈(223)은 클린 데이터(clean data)를 생성하고, 이를 랜덤 액세스 메모리(112)에 저장할 것이다. 다시 말하면, 읽기 요청된 논리 어드레스가 쓰기 동작이 수행되지 않은 영역의 논리 어드레스인 경우, 데이터 생성 모듈(223)은 클린 데이터(clean data)를 생성하고, 이를 랜덤 액세스 메모리(112)에 저장할 것이다.한편, 데이터 생성 모듈(223)은 이하의 도 4C에서 좀더 자세히 설명될 것이다.
도 4A는 도 3의 데이터 분석 모듈(221)을 좀더 상세하게 설명하기 위한 블록도이다. 도 4A를 참조하면, 데이터 분석 모듈(221)은 제 1 버퍼(221a), 제 2 버퍼(221b), 비교 모듈(221c), 그리고 패턴 판단 모듈(221d)을 포함한다.
제 1 버퍼(221a), 제 2 버퍼(221b), 그리고 비교 모듈(221c)은 쓰기 요청된 데이터가 패턴 데이터인지의 여부를 판단한다. 예를 들어, 제 1 버퍼(221a)는 쓰기 요청된 데이터의 제 1 서브 데이터를 임시로 저장할 것이다. 제 2 버퍼(221b)는 쓰기 요청된 데이터의 제 2 서브 데이터를 임시로 저장할 것이다. 비교 모듈(221c)은 제 1 버퍼(221a)에 저장된 제 1 서브 데이터와 제 2 버퍼(221b)에 저장된 제 2 서브 데이터의 일치 여부를 판단할 것이다.
제 1 서브 데이터와 제 2 서브 데이터가 일치하는 경우, 제 1 서브 데이터 및 제 2 서브 데이터는 동일한 데이터 패턴을 갖는 패턴 데이터로 판단될 것이다. 이 경우, 비교 모듈(221c)은 패턴 데이터 및 이에 대응하는 논리 주소 정보를 데이터 풀 모듈(222)에 전달할 것이다. 예를 들어, 비교 모듈(221c)은 패턴 데이터, 그리고 제 1 및 제 2 서브 데이터의 논리 어드레스 정보를 데이터 풀 모듈(222)에 전달할 것이다. 제 1 버퍼(221a), 제 2 버퍼(221b), 그리고 비교 모듈(221c)의 동작은 이하의 도 5 내지 도 7에서 좀더 자세히 설명될 것이다.
패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는지의 여부를 판단한다.
예를 들어, 데이터 분석 모듈(221)에 제공된 논리 어드레스와 패턴 데이터 테이블에 저장된 논리 어드레스가 일치하는 경우, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스를 데이터 생성 모듈(223)에 전달할 것이다. 이 경우, 데이터 생성 모듈(223)은 패턴 데이터를 생성하고, 이를 랜덤 액세스 메모리(112, 도 1 참조)에 저장할 것이다. 이는 이하의 도 10 및 도 11에서 좀더 상세하게 설명될 것이다.
예를 들어, 데이터 분석 모듈(221)에 제공된 논리 어드레스와 패턴 데이터 테이블에 저장된 논리 어드레스가 일치하지 않는 경우, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스를 플래시 변환 레이어(230)에 전달할 것이다. 이 경우, 플래시 변환 레이어(230)는 읽기 요청된 논리 어드레스를 물리 어드레스로 변환하고, 이를 플래시 메모리(240)에 전달할 것이다. 따라서, 이 경우, 플래시 메모리(240)에 저장된 데이터에 대한 읽기 동작이 수행될 것이다.
한편, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스가 쓰기 동작이 수행되지 않은 영역에 대응하는 논리 어드레스인지의 여부를 판단할 수 있다. 즉, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스가 패턴 데이터 테이블 및 플래시 변환 레이어(230)에 저장된 논리 어드레스인지의 여부를 판단할 수 있다.
예를 들어, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블 및 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하지 않는 경우, 패턴 판단 모듈(221d)은 어드레스 불일치 신호(ANS)를 데이터 생성 모듈(223)에 전달할 것이다. 이 경우, 데이터 생성 모듈(223)은 클린 데이터(clean data)를 생성하고, 이를 랜덤 액세스 메모리(112)에 저장할 것이다. 이는 이하의 도 12 및 도 13에서 좀더 상세하게 설명될 것이다.
도 4B는 도 3의 데이터 풀 모듈(222)을 좀더 상세하게 설명하기 위한 블록도이다. 도 4B를 참조하면, 데이터 풀 모듈(222) 및 데이터 풀 모듈(222)에 의하여 구성된 패턴 데이터 테이블이 도시되어 있다. 예를 들어, 패턴 데이터 테이블은 시작 논리 어드레스(SLA; Start Logical Address), 끝 논리 어드레스(ELA; End Logical Address), 그리고 패턴 데이터(pattern data)를 포함할 것이다.
데이터 풀 모듈(222)은 패턴 데이터 및 이에 대응하는 논리 어드레스를 데이터 분석 모듈(221)로부터 전달받고, 이를 포함하는 패턴 데이터 테이블을 랜덤 액세스 메모리(112)에 저장한다. 또한, 데이터 풀 모듈(222)은 데이터 분석 모듈(221)로부터 전달받은 패턴 데이터 및 이에 대응하는 논리 어드레스를 포함하도록, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블을 업 데이트(update)할 수 있다. 한편, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블은 불휘발성 메모리(114)에 전달될 수 있다.
예를 들어, 쓰기 요청된 데이터의 제 1 서브 데이터와 제 2 서브 데이터가 패턴 데이터로 판단된 경우, 데이터 풀 모듈(222)은 패턴 데이터, 그리고 제 1 및 제 2 서브 데이터의 논리 어드레스를 포함하도록 패턴 데이터 테이블을 업 데이트 할 수 있다. 이는 이하의 도 5 내지 도 8에서 좀더 상세하게 설명될 것이다.
도 4C는 도 3의 데이터 생성 모듈(223)을 좀더 상세하게 설명하기 위한 블록도이다. 도 4C를 참조하면, 데이터 생성 모듈(223)은 패턴 데이터 생성 모듈(223a), 그리고 클린 데이터 생성 모듈(223b)을 포함한다.
패턴 데이터 생성 모듈(223a)은 데이터 분석 모듈(221)로부터 읽기 요청된 논리 어드레스를 전달받는다. 즉, 패턴 데이터 생성 모듈(223a)은 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는 읽기 요청된 논리 어드레스를 데이터 분석 모듈(221)의 패턴 판단 모듈(221d)로부터 전달받는다.
이 경우, 패턴 데이터 생성 모듈(223a)은 패턴 데이터 테이블을 참조하여, 전달받은 논리 어드레스에 대응하는 패턴 데이터를 생성한다. 또한, 생성된 패턴 데이터를 랜덤 액세스 메모리(112, 도 1 참조)에 저장된다. 패턴 데이터 생성 모듈(223a)의 동작은 이하의 도 10 및 도 11을 참조하여 좀더 상세하게 설명될 것이다.
클린 데이터 생성 모듈(223b)은 데이터 분석 모듈(221)로부터 어드레스 불일치 신호(ANS)를 전달받는다. 예를 들어, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블 및 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하지 않는 경우, 클린 데이터 생성 모듈(223b)은 데이터 분석 모듈(221)의 패턴 판단 모듈(221d)로부터 어드레스 불일치 신호(ANS)를 전달받는다.
이 경우, 클린 데이터 생성 모듈(223b)은 클린 데이터를 생성하고, 이를 랜덤 액세스 메모리(112)에 저장한다. 클린 데이터 생성 모듈(223b)의 동작은 이하의 도 12 및 도 13을 참조하여 좀더 상세하게 설명될 것이다.
도 5 내지 도 8은 본 발명의 기술적 사상의 실시 예에 따른 쓰기 동작이 수행되는 경우의 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 블록도이다. 구체적으로, 도 5는 본 발명의 기술적 사상의 실시 예에 따른 쓰기 요청된 데이터 및 이에 대응하는 논리 어드레스를 보여주는 도면이다. 도 6은 도 5의 쓰기 요청된 데이터에 대한 데이터 분석 모듈 및 데이터 풀 모듈의 동작을 보여주는 블록도이다. 도 7은 도 5의 쓰기 요청된 데이터에 데이터 분석 모듈 및 데이터 풀 모듈의 동작을 보여주는 블록도이다. 도 8은 도 5의 쓰기 요청된 데이터에 대한 패턴 데이터 테이블을 보여주는 블록도이다.
도 5를 참조하면, 쓰기 요청된 데이터가 예시적으로 도시되어 있다. 즉, 쓰기 동작이 요청되는 경우, 가상 데이터 인터페이스 레이어(220, 도 2 참조)는 애플리케이션(205, 도 2 참조) 또는 파일 시스템(210, 도 2 참조)으로부터 입력 데이터(Input data)를 제공받을 것이다.
간략한 설명을 위하여, 입력 데이터(Input data)는 복수의 서브 데이터(Sub_data)로 구분될 수 있다고 가정된다. 예를 들어, 도 5에서는 입력 데이터(Input data)는 제 1 내지 제 7 서브 데이터(Sub_data 1~Sub_data 7)로 구분된다고 가정된다. 또한, 제 1 내지 제 7 서브 데이터는 각각 논리 어드레스(LA)가 할당된다고 가정된다. 예를 들어, 도 5를 참조하면, 제 1 내지 제 7 서브 데이터(Sub_data 1~Sub_data 7)에는 논리 어드레스 '101' 내지 '107'이 각각 순차적으로 할당된다고 가정된다.
쓰기 동작이 수행되는 경우, 입력 데이터의 서브 데이터들은 데이터 분석 모듈(221)의 제 1 버퍼(221a) 및 제 2 버퍼(221b)를 순차적으로 통과한다. 데이터 분석 모듈(221)의 비교 모듈(221c)은 제 1 버퍼(221a)에 임시로 저장된 서브 데이터 및 제 2 버퍼(221b)에 임시로 저장된 서브 데이터를 비교하고, 제 1 및 제 2 버퍼(221a, 221b)에 저장된 서브 데이터가 패턴 데이터인지의 여부를 판단한다.
예를 들어, 도 6을 참조하면, 제 1 버퍼(221a)에 제 1 서브 데이터(Sub_data 1)가 임시로 저장되고, 제 2 버퍼(221b)에 제 2 서브 데이터(Sub_data 2)가 임시로 저장된다고 가정된다. 이 경우, 제 1 버퍼(221a)에 저장된 제 1 서브 데이터(Sub_data 1)와 제 2 버퍼(221b)에 저장된 제 2 서브 데이터(Sub_data 2)는 '10110010'의 동일한 데이터를 갖는다. 따라서, 비교 모듈(221c)은 제 1 서브 데이터(Sub_data 1) 및 제 2 서브 데이터(Sub_data 2)를 패턴 데이터로 판단한다. 다시 말하면, 제 1 서브 데이터(Sub_data 1)와 제 2 서브 데이터(Sub_data 2)는 동일한 패턴 데이터 '10110010'을 갖는다.
제 1 버퍼(221a)에 저장된 서브 데이터와 제 2 버퍼(221b)에 저장된 서브 데이터가 패턴 데이터인 경우, 비교 모듈(221c)은 패턴 데이터, 그리고 제 1 및 제 2 버퍼(221a, 221b)에 저장된 서브 데이터의 논리 어드레스를 데이터 풀 모듈(222)에 전달한다. 데이터 풀 모듈(222)은 전달받은 패턴 데이터 및 논리 어드레스를 랜덤 액세스 메모리(112)에 저장한다. 즉, 데이터 풀 모듈(222)은 전달받은 패턴 데이터 및 논리 어드레스를 포함하는 패턴 데이터 테이블을 랜덤 액세스 메모리(112)에 저장하다.
예를 들어, 도 6을 참조하면, 데이터 풀 모듈(222)은 패턴 데이터 '10110010'을 랜덤 액세스 메모리(112)에 저장할 것이다. 또한, 데이터 풀 모듈(222)은 패턴 데이터 '10110010'에 대응하는 제 1 서브 데이터(Sub_data 1)의 논리 어드레스 및 제 2 서브 데이터(Sub_data 2)의 논리 어드레스를 랜덤 액세스 메모리(112)에 저장할 것이다.
한편, 도 5를 참조하면, 입력 데이터(Input data)의 제 1 내지 제 6 서브 데이터에는 각각 논리 어드레스 '101' 내지 '107'이 순차적으로 할당된다. 따라서, 패턴 데이터에 대응하는 논리 어드레스의 집합은 시작 논리 어드레스(SLA) 및 끝 논리 어드레스(ELA)로 표현될 수 있다. 예를 들어, 제 1 서브 데이터(Sub_data 1)의 논리 어드레스 '101'은 시작 논리 어드레스(SLA)로 저장될 것이다. 제 2 서브 데이터(Sub_data 2)의 논리 어드레스 '102'는 끝 논리 어드레스(ELA)로 저장될 것이다.
한편, 제 1 서브 데이터(Sub_data 1) 및 제 2 서브 데이터(Sub_data 2)가 패턴 데이터인지의 여부가 판단된 후에는, 제 2 서브 데이터(Sub_data 2) 및 제 3 서브 데이터(Sub-data 3)가 패턴 데이터인지의 여부가 순차적으로 판단될 것이다.
예를 들어, 도 7을 참조하면, 제 1 서브 데이터(Sub_data 1) 및 제 2 서브 데이터(Sub_data 2)가 패턴 데이터인지의 여부가 판단된 후, 제 1 버퍼(221a)에는 제 2 서브 데이터(Sub_data 2)가 임시로 저장될 것이다. 또한, 제 2 버퍼(221b)에는 제 3 서브 데이터(Sub_data 3)가 임시로 저장될 것이다. 비교 모듈(221c)은 제 1 버퍼(221a)에 저장된 제 2 서브 데이터(Sub_data 2) 및 제 2 버퍼(221b)에 저장된 제 3 서브 데이터(Sub_data)의 일치 여부를 판단할 것이다.
이 경우, 제 2 서브 데이터(Sub_data 2)와 제 3 서브 데이터(Sub_data 3)는 각각 '10110010'의 데이터와 '00001101'의 데이터를 갖는다. 즉, 제 2 서브 데이터(Sub_data 2)와 제 3 서브 데이터(Sub_data 3)는 각각 다른 데이터를 갖는다. 이 경우, 비교 모듈(221c)은 제 2 서브 데이터(Sub_data 2), 제 3 서브 데이터(Sub_data 3), 그리고 이에 대응하는 논리 어드레스를 플래시 메모리(240, 도 2 참조) 또는 플래시 변환 레이어(230, 도 2 참조)에 전달할 것이다.
결과적으로, 계속해서 도 7을 참조하면, 패턴 데이터 테이블에는 패턴 데이터 '10110010', 그리고 이에 대응하는 시작 논리 어드레스 '101' 및 끝 논리 어드레스 '102'가 저장될 것이다.
한편, 제 2 서브 데이터(Sub_data 2) 및 제 3 서브 데이터(Sub-data 3)가 패턴 데이터인지의 여부가 판단된 후, 제 3 서브 데이터(Sub_data 3) 내지 제 7 서브 데이터(Sub_data 7)가 패턴 데이터인지의 여부가 순차적으로 판단될 것이다. 이는 도 6 및 도 7의 동작과 유사하므로, 자세한 설명은 생략될 것이다.
도 8을 참조하면, 입력 데이터(Input data)에 대한 패턴 데이터 테이블이 도시되어 있다. 예를 들어, 도 5 및 도 8을 참조하면, 제 1 서브 데이터(Sub_data 1) 및 제 2 서브 데이터(Sub_data 2)는 패턴 데이터 '10110010'를 갖는다. 따라서, 패턴 데이터 테이블에는 패턴 데이터 '10110010'이 저장된다. 또한, 패턴 데이터 테이블에는 패턴 데이터 '10110010'에 대응하는 시작 논리 어드레스 '101' 및 끝 논리 어드레스 '102'가 저장된다. 여기서, 시작 논리 어드레스 '101'은 제 1 서브 데이터(Sub_data 1)의 논리 어드레스 '101'에 대응한다. 끝 논리 어드레스 '102'는 제 2 서브 데이터(Sub_data 2)의 논리 어드레스 '102'에 대응한다.
계속해서 도 5 및 도 8을 참조하면, 제 4 내지 제 6 서브 데이터(Sub_data 4~Sub_data 6)는 패턴 데이터 '11110011'을 갖는다. 따라서, 패턴 데이터 테이블에는 패턴 데이터 '11110011'이 저장된다. 또한, 패턴 데이터 테이블에는 패턴 데이터 '11110011'에 대응하는 시작 논리 어드레스 '104' 및 끝 논리 어드레스 '106'이 저장된다. 여기서, 시작 논리 어드레스 '104'는 제 4 서브 데이터(Sub_data 4)의 논리 어드레스 '104'에 대응한다. 끝 논리 어드레스 '106'은 제 6 서브 데이터(Sub_data 6)의 논리 어드레스 '106'에 대응한다.
자세히 설명하면, 도 5 및 도 8을 참조하면, 제 4 및 제 5 서브 데이터(Sub_data 4, Sub_data 5)는 패턴 데이터 '11110011'을 갖는다. 따라서, 패턴 데이터 테이블에는 패턴 데이터 '11110011'이 저장될 것이다. 이 경우, 패턴 데이터 테이블에는 패턴 데이터 '11110011'에 대응하는 시작 논리 어드레스 '104' 및 끝 논리 어드레스 '105'이 저장될 것이다.
한편, 제 5 및 제 6 서브 데이터(Sub_data 5, Sub_data 6)는 패턴 데이터 '11110011'을 갖는다. 즉, 제 4 내지 제 6 서브 데이터(Sub_data 4~Sub_data 6)는 패턴 데이터 '11110011'을 갖는다. 따라서, 이 경우, 패턴 데이터 테이블의 끝 논리어드레스는 제 6 서브 데이터(Sub_data 6)의 논리 어드레스 '106'으로 업 데이트(update)될 것이다.
도 9는 도 5 내지 도 8에서 설명된 쓰기 동작이 수행되는 경우에 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 순서도이다.
S110 단계에서, 입력 데이터(Input data)가 가상 데이터 인터페이스 레이어(220)에 제공될 것이다. 예를 들어, 입력 데이터(Input data)는 데이터 분석 모듈(221)에 제공될 것이다.
S120 단계에서, 입력 데이터(Input data)가 데이터 분석 모듈(221)의 제 1 버퍼(221a) 및 제 2 버퍼(221b)를 통과할 것이다. 예를 들어, 도 5를 참조하면, 입력 데이터(Input data)는 제 1 내지 제 7 서브 데이터(Sub_data 1~Sub_data 7)로 구분될 것이다. 제 1 내지 제 7 서브 데이터(Sub_data~Sub_data 7)는 제 1 및 제 2 버퍼(221a, 221b)를 순차적으로 통과할 것이다.
S130 단계에서, 제 1 버퍼(221a)에 저장된 서브 데이터와 제 2 버퍼(221b)에 저장된 서브 데이터가 일치하는지의 여부가 판단될 것이다. 즉, 제 1 버퍼(221a)에 저장된 서브 데이터와 제 2 버퍼(221b)에 저장된 서브 데이터가 패턴 데이터인지의 여부가 판단될 것이다.
제 1 버퍼(221a)에 저장된 서브 데이터와 제 2 버퍼(221b)에 저장된 서브 데이터가 일치하는 경우, 패턴 데이터 정보(pattern data information)는 패턴 데이터 테이블에 업 데이트(update)될 것이다(S140 단계). 예를 들어, 도 6을 참조하면, 제 1 버퍼(221a)에 저장된 제 1 서브 데이터(Sub_data 1)와 제 2 버퍼(221b)에 저장된 제 2 서브 데이터(Sub_data 2)가 일치한다. 이 경우, 패턴 데이터 '10110010' 및 이에 대응하는 논리 어드레스가 패턴 데이터 테이블에 저장될 것이다.
한편, 제 1 버퍼(221a)에 저장된 서브 데이터와 제 2 버퍼(221b)에 저장된 서브 데이터가 일치하지 않는 경우, 쓰기 요청된 데이터 및 이에 대응하는 논리 어드레스는 플래시 변환 레이어(230) 또는 플래시 메모리(240)에 전달될 것이다.
한편, 상술한 설명은 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
예를 들어, 도 1에서는, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블은 휴지 기간(idle time)에 또는 정기적으로 불휘발성 메모리(114)에 전달된다고 설명된다. 그러나, 이는 예시적인 것으로 이해되어야 할 것이다. 예를 들어, 랜덤 액세스 메모리(112)에 저장된 패턴 데이터 테이블은 휴지 기간(idle time)에 또는 정기적으로 플래시 메모리(120)에 전달될 수 있을 것이다.
또한, 예를 들어, 도 4에서는, 패턴 데이터 테이블은 시작 논리 어드레스(SLA), 끝 논리 어드레스(ELA), 그리고 패턴 데이터를 포함한다. 그러나, 이는 예시적인 것으로 이해되어야 할 것이다. 예를 들어, 패턴 데이터 테이블은 패턴 데이터에 대응하는 논리 어드레스를 모두 저장할 수 있을 것이다.
또한, 예를 들어, 도 5에서는, 입력 데이터(Input data)는 8비트를 기준으로 복수의 서브 데이터(Sub_data)로 구분된다. 그러나, 이는 예시적인 것으로 이해되어야 할 것이다. 예를 들어, 입력 데이터를 복수의 서브 데이터로 구분하는 기준은 프로그램 단위, 읽기 단위, 또는 제 1 및 제 2 버퍼(221a, 221b)의 사이즈 등에 따라 다양하게 설정될 수 있을 것이다.
도 10은 본 발명의 기술적 사상의 실시 예에 따른 읽기 동작이 수행되는 경우의 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 블록도이다. 간략한 설명을 위하여, 도 10의 패턴 데이터 테이블은 도 8의 패턴 데이터 테이블과 동일하다고 가정된다.
도 10을 참조하면, 읽기 동작이 요청되는 경우, 데이터 분석 모듈(221)의 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스(LA)를 제공받는다. 예를 들어, 도 10에서는 논리 어드레스 '103' 내지 '105'에 대응하는 데이터에 대한 읽기 요청이 수행된다고 가정된다.
이 경우, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스가 데이터 풀 모듈(222)에 의하여 구성된 패턴 데이터 테이블의 논리 어드레스와 일치하는지의 여부를 판단한다. 예를 들어, 도 10을 참조하면, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스 '103' 내지 '105'가 데이터 풀 모듈(222)에 의하여 구성된 패턴 데이터 테이블의 논리 어드레스와 일치하는지의 여부를 판단한다.
예를 들어, 읽기 요청된 논리 어드레스 '104' 및 '105'는 패턴 데이터 테이블에 저장된 논리 어드레스와 일치한다. 즉, 읽기 요청된 논리 어드레스 '104' 및 '105'는 패턴 데이터 '11110011'에 대응하는 논리 어드레스에 포함된다.
이 경우, 패턴 판단 모듈(221d)은 해당 논리 어드레스를 데이터 생성 모듈(223)의 패턴 데이터 생성 모듈(223a)에 전달한다. 패턴 데이터 생성 모듈(223a)은 전달받은 논리 어드레스에 대응하는 패턴 데이터를 패턴 데이터 테이블을 참조하여 생성한다.
예를 들어, 패턴 데이터 생성 모듈(223a)은 패턴 판단 모듈(221d)로부터 논리 어드레스 '104' 및 '105'를 전달받는다. 패턴 데이터 생성 모듈(223a)은 패턴 데이터 테이블을 참조하여, 전달받은 논리 어드레스 '104' 및 '105'에 대응하는 패턴 데이터 '11110011'을 생성한다. 즉, 패턴 데이터 생성 모듈(223a)은 논리 어드레스 '104'에 대응하는 패턴 데이터 '11110011'을 생성하고, 이를 랜덤 액세스 메모리(112)에 저장할 것이다. 또한, 패턴 데이터 생성 모듈(223a)은 논리 어드레스 '105'에 대응하는 패턴 데이터 '11110011'을 생성하고, 이를 랜덤 액세스 메모리(112)에 저장할 것이다.
한편, 읽기 요청된 논리 어드레스 '103'은 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하지 않는다. 이 경우, 패턴 판단 모듈(221d)은 논리 어드레스 '103'을 플래시 변환 레이어(230)에 전달할 것이다. 플래시 변환 레이어(230)는 전달받은 논리 어드레스 '103'을 물리 어드레스로 변환한 후, 플래시 메모리(240)에 전달할 것이다. 플래시 메모리(240)는 전달받은 물리 어드레스에 대응하는 데이터에 대한 읽기 동작을 수행할 것이다.
상술한 바와 같이, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는 경우, 읽기 요청된 논리 어드레스에 대응하는 데이터는 가상 데이터 인터페이스 레이어(VDIL)에 의하여 생성될 수 있다. 다시 말하면, 읽기 요청된 논리 어드레스가 패턴 데이터의 어드레스인 경우, 메모리 컨트롤러(110, 도 1 참조)에서 읽기 요청된 논리 어드레스에 대응하는 데이터를 생성할 수 있다. 이 경우, 플래시 메모리(120, 도 1 참조)에 저장된 데이터를 읽기 위한 지연 시간이 필요하지 않기 때문에, 본 발명의 기술적 사상의 실시 예에 따른 메모리 시스템(100, 도 1 참조)은 읽기 성능이 향상될 수 있다.
도 11은 도 10에서 설명된 읽기 동작이 수행되는 경우에 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 순서도이다.
S210 단계에서, 읽기 요청된 논리 어드레스가 가상 데이터 인터페이스 레이어(220)에 전달될 것이다. 예를 들어, 읽기 요청된 논리 어드레스는 데이터 분석 모듈(221)의 패턴 판단 모듈(221d)에 전달될 것이다.
S220 단계에서, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는지의 여부가 판단된다. 예를 들어, 도 10을 참조하면, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는지의 여부를 판단한다.
읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는 경우, 읽기 요청된 논리 어드레스는 패턴 데이터 생성 모듈(223a)에 전달된다(S230 단계). 예를 들어, 도 10을 참조하면, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스 '104' 및 '105'를 패턴 데이터 생성 모듈(223a)에 전달할 것이다.
이 경우, 패턴 데이터 생성 모듈(223a)은 패턴 데이터를 패턴 데이터 테이블을 참조하여 전달받은 논리 어드레스에 대응하는 생성할 것이다(S240 단계). 예를 들어, 도 10을 참조하면, 패턴 데이터 생성 모듈(223a)은 패턴 데이터 테이블을 참조하여, 논리 어드레스 '104' 및 '105'에 대응하는 패턴 데이터 '11110011'을 각각 생성할 것이다.
한편, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하지 않는 경우, 읽기 요청된 논리 어드레스는 플래시 변환 레이어(230)에 전달될 것이다. 플래시 변환 레이어(230)는 논리 어드레스를 물리 어드레스로 변환하고, 이를 플래시 메모리(240)에 전달할 것이다. 이 후, 물리 어드레스에 대응하는 플래시 메모리(240)에 저장된 데이터에 대한 읽기 동작이 수행될 것이다.
한편, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블 및 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하지 않는 경우, 패턴 데이터 생성 모듈(223a)은 클린 데이터를 생성할 것이다. 이는 이하의 도 12에서 좀더 상세하게 설명될 것이다.
도 12는 본 발명의 기술적 사상의 다른 실시 예에 따른 읽기 동작이 수행되는 경우의 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 블록도이다. 간략한 설명을 위하여, 도 12의 패턴 데이터 테이블은 도 8의 패턴 데이터 테이블과 동일하다고 가정된다. 또한, 논리 어드레스 '144' 내지 '146'은 패턴 데이터 테이블 및 플래시 변환 레이어(230)에 저장되지 않은 논리 어드레스라고 가정된다.
도 12를 참조하면, 데이터 분석 모듈(221)의 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스를 전달받는다. 예를 들어, 도 12에서는 패턴 판단 모듈(221d)은 논리 어드레스 '144' 내지 '146'을 전달받는다.
이 경우, 패턴 판단 모듈(221d)은 패턴 데이터 테이블의 논리 어드레스와 일치하는지의 여부를 판단한다. 예를 들어, 도 12를 참조하면, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스 '144' 내지 '146'이 패턴 데이터 테이블의 논리 어드레스와 일치하는지의 여부를 판단한다.
읽기 요청된 논리 어드레스와 패턴 데이터 테이블에 저장된 논리 어드레스가 일치하지 않는 경우, 패턴 판단 모듈(221d)은 플래시 변환 레이어(230)에 저장된 논리 어드레스와 읽기 요청된 논리 어드레스가 일치하는지의 여부를 판단한다. 예를 들어, 도 12를 참조하면, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스 '144' 내지 '146'이 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하는지의 여부를 판단한다.
읽기 요청된 논리 어드레스가 패턴 데이터 테이블 및 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하지 않는 경우, 패턴 판단 모듈(221d)은 어드레스 불일치 신호(ANS)를 클린 데이터 생성 모듈(223b)에 전달한다. 클린 데이터 생성 모듈(223b)은 어드레스 불일치 신호(ANS)에 응답하여, 클린 데이터를 생성한다. 예를 들어, 도 12를 참조하면, 클린 데이터 생성 모듈(223b)은 어드레스 불일치 신호(ANS)에 응답하여 논리 어드레스 '144' 내지 '146'에 대응하는 클린 데이터를 생성한다. 생성된 클린 데이터는 랜덤 액세스 메모리(112)에 저장된다.
한편, 랜덤 액세스 메모리(112)에 저장되는 클린 데이터는 다양하게 표현될 수 있을 것이다. 예를 들어, 클린 데이터는 'OxFF'로 표현되어 랜덤 액세스 메모리(112)에 저장될 수 있을 것이다.
도 13은 도 12에서 설명된 읽기 동작이 수행되는 경우에 가상 데이터 인터페이스 레이어의 동작을 설명하기 위한 순서도이다.
S310 단계에서, 읽기 요청된 논리 어드레스가 가상 데이터 인터페이스 레이어(220)에 전달될 것이다. 예를 들어, 읽기 요청된 논리 어드레스는 데이터 분석 모듈(221)의 패턴 판단 모듈(221d)에 전달될 것이다.
S320 단계에서, 읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는지의 여부가 판단된다. 예를 들어, 도 12를 참조하면, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는지의 여부를 판단한다.
읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하는 경우, 읽기 요청된 논리 어드레스에 대응하는 패턴 데이터가 생성될 것이다(S330 단계). 예를 들어, 읽기 요청된 논리 어드레스는 패턴 데이터 생성 모듈(223a)에 전달되고, 패턴 데이터 생성 모듈(223a)은 대응하는 패턴 데이터를 생성할 것이다.
읽기 요청된 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 일치하지 않는 경우, 읽기 요청된 논리 어드레스가 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하는지의 여부가 판단된다(S340 단계). 예를 들어, 패턴 판단 모듈(221d)은 읽기 요청된 논리 어드레스가 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하는지의 여부를 판단한다.
읽기 요청된 논리 어드레스가 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하지 않는 경우, 클린 데이터가 생성된다(S350 단계). 예를 들어, 도 12를 참조하면, 패턴 판단 모듈(321d)은 클린 데이터 생성 모듈(323b)에 어드레스 불일치 신호(ANS)를 전달한다. 클린 데이터 생성 모듈(323b)은 어드레스 불일치 신호(ANS)에 응답하여 클린 데이터를 생성한다. 생성된 클린 데이터는 랜덤 액세스 메모리(112)에 저장된다.
한편, 읽기 요청된 논리 어드레스가 플래시 변환 레이어(230)에 저장된 논리 어드레스와 일치하는 경우, 플래시 메모리(240)에 저장된 데이터에 대한 읽기 동작이 수행된다(S360 단계). 예를 들어, 플래시 변환 레이어(230)는 읽기 요청된 논리 어드레스를 물리 어드레스로 변환하고, 이를 플래시 메모리(240)에 전달한다. 이 후, 플래시 메모리(240)에 저장된 데이터에 대한 읽기 동작이 수행된다.
도 14는 본 발명의 기술적 사상의 다른 실시 예에 따른 도 1에 도시된 메모리 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다. 도 14의 소프트웨어 구조는 도 2의 소프트웨어 구조와 유사하다. 따라서, 이하에서는 도 2의 소프트웨어 구조와의 차이점이 중점적으로 설명될 것이다.
도 14를 참조하면, 메모리 시스템(100)은 애플리케이션(305), 파일 시스템(310), 플래시 변환 레이어(320), 가상 데이터 인터페이스 레이어(330), 그리고 플래시 메모리(340) 순으로 소프트웨어 계층 구조를 갖는다.
도 14의 플래시 변환 레이어(320)는 파일 시스템(310)으로부터 논리 어드레스를 전달받는다. 플래시 변환 레이어(320)는 전달된 논리 어드레스를 물리 어드레스로 변환하고, 이를 가상 데이터 인터페이스 레이어(330)에 전달한다.
이에 반하여, 도 2의 플래시 변환 레이어(230)는 가상 데이터 인터레이스 레이어(220)로부터 논리 어드레스를 전달받는다. 또한, 도 2의 플래시 변환 레이어(230)는 전달된 논리 어드레스를 물리 어드레스로 변환하고, 이를 플래시 메모리(240)에 전달한다.
도 14의 가상 데이터 인터페이스 레이어(330)는 플래시 변환 레이어(320)로부터 물리 어드레스를 전달받는다. 예를 들어, 읽기 동작이 수행되는 경우, 가상 데이터 인터페이스 레이어(330)는 전달받은 물리 어드레스가 패턴 데이터 테이블에 저장된 물리 어드레스와 동일한 지의 여부를 판단할 것이다.
이에 반하여, 도 2의 가상 데이터 인터페이스 레이어(220)는 파일 스시템(210)으로부터 논리 어드레스를 전달받는다. 예를 들어, 읽기 동작이 수행되는 경우, 가상 데이터 인터페이스 레이어(220)는 전달받은 논리 어드레스가 패턴 데이터 테이블에 저장된 논리 어드레스와 동일한 지의 여부를 판단할 것이다.
도 15는 도 14에 도시된 메모리 시스템의 동작을 설명하기 위한 블록도이다. 도 15의 메모리 시스템의 동작은 도 3에서 설명된 메모리 시스템의 동작과 유사하다. 따라서, 이하에서는 도 3의 메모리 시스템의 동작과의 차이점이 중점적으로 설명될 것이다.
도 15를 참조하면, 메모리 시스템(300)은 파일 시스템(210), 플래시 변환 레이어(320), 가상 데이터 인터페이스 레이어(330), 그리고 플래시 메모리(340)를 포함한다.
가상 데이터 인터페이스 레이어(330)는 랜덤 액세스 메모리(112, 도 1 참조) 상에서 구동된다. 가상 데이터 인터페이스 레이어(330)는 데이터 분석 모듈(331), 데이터 풀 모듈(332), 그리고 데이터 생성 모듈(333)을 포함한다.
도 15의 데이터 분석 모듈(331)은 도 3의 데이터 분석 모듈(231)과 유사하다. 다만, 도 3의 데이터 분석 모듈(231)은 파일 시스템(210)으로부터 논리 어드레스(LA)를 전달받고, 전달받은 논리 어드레스 및 패턴 데이터 테이블에 저장된 논리 어드레스와의 일치 여부를 판단한다. 이에 반하여, 도 15의 데이터 분석 모듈(331)은 플래시 변환 레이어(320)로부터 물리 어드레스(PA)를 전달받고, 전달받은 물리 어드레스 및 패턴 데이터 테이블에 저장된 물리 어드레스와의 일치 여부를 판단한다.
도 15의 데이터 풀 모듈(332)은 도 3의 데이터 풀 모듈(232)과 유사하다. 다만, 도 3의 데이터 풀 모듈(232)은 패턴 데이터 및 이에 대응하는 논리 어드레스를 포함하는 패턴 데이터 테이블을 랜덤 액세스 메모리(112) 또는 불휘발성 메모리(114, 도 1 참조)에 저장한다. 이에 반하여, 도 15의 데이터 풀 모듈(332)은 패턴 데이터 및 이에 대응하는 물리 어드레스를 포함하는 패턴 데이터 테이블을 랜덤 액세스 메모리(112) 또는 불휘발성 메모리(114)에 저장한다.
도 15의 데이터 생성 모듈(333)은 도 3의 데이터 생성 모듈(233)과 유사하다. 다만, 도 3의 데이터 생성 모듈(233)은 읽기 요청된 논리 어드레스를 기초로, 패턴 데이터를 생성한다. 이에 반하여, 도 15의 데이터 생성 모듈(333)은 읽기 요청된 물리 어드레스를 기초로, 패턴 데이터를 생성한다.
도 16은 본 발명의 기술적 사상의 다른 실시 예에 따른 불휘발성 메모리 장치를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다. 도 16에서는 불휘발성 메모리 장치의 예로서, 플래시 메모리(420)가 도시되어 있다.도 16의 메모리 시스템의 하드웨어 구조는 도 1의 메모리 시스템의 하드웨어 구조와 유사하다. 따라서, 이하에서는 도 1의 메모리 시스템의 하드웨어 구조와의 차이점이 중점적으로 설명될 것이다.
도 16을 참조하면, 메모리 시스템(400)은 메모리 컨트롤러(410) 및 플래시 메모리(420)를 포함한다. 또한, 메모리 컨트롤러(410)는 중앙 처리 장치(411), 버퍼 메모리(412), 랜덤 액세스 메모리(412), 호스트 인터페이스(414), 불휘발성 메모리(4150, 그리고 플래시 인터페이스(416)를 포함한다.
도 16의 메모리 컨트롤러(410)의 구조는 도 1의 메모리 컨트롤러(110)의 구조와 유사하다. 다만, 도 16의 메모리 컨트롤러(410)는 도 1의 메모리 컨트롤러(110)와 달리 버퍼 메모리(412)를 더 포함한다. 즉, 도 16의 메모리 컨트롤러(410)는 도 1의 메모리 컨트롤러(110)와 달리 데이터 분석 모듈(221, 도 4 참조)의 제 1 및 제 2 버퍼(221a, 221b)가 하드웨어로 구현된다.
자세히 설명하면, 도 1 내지 도 15에서, 데이터 분석 모듈(221, 도 4 참조)의 제 1 및 제 2 버퍼(221a, 221b)는 랜덤 액세스 메모리(112, 도 1 참조) 상에서 구동되는 소프트웨어로 설명된다. 다만, 이는 예시적인 것으로 이해되어야할 것이다. 즉, 데이터 분석 모듈(221, 도 4 참조)의 제 1 및 제 2 버퍼(221a, 221b)는 도 16과 같이 하드웨어로 구현될 수 있을 것이다. 이 경우, 예를 들어, 제 1 및 제 2 버퍼(221a, 221b) 휘발성 메모리를 이용하여 구현될 수 있을 것이다.
도 17은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 보여주는 블록도이다. 도 17을 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 신호 커넥터(signal connector, 1211)를 통해 호스트(1100)와 신호를 주고 받으며, 전원 커넥터(power connector, 1221)를 통해 전원을 입력받는다. SSD(1200)는 복수의 불휘발성 메모리 장치(1201~120n), SSD 컨트롤러(1210), 그리고 보조 전원 장치(1220)를 포함한다.
복수의 불휘발성 메모리 장치(1201~120n)는 SSD(1200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리 장치(1201~120n)는 대용량의 저장 능력을 가지는 플래시 메모리 장치로 구현될 수 있다. SSD(1200)는 주로 플래시 메모리(Flash memory)를 사용하고 있으나, 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등의 불휘발성 메모리 장치가 사용될 수도 있다. 도 17에서, 적어도 하나의 불휘발성 메모리 장치는 도 1 또는 도 16에 도시된 플래시 메모리(120, 420)를 포함할 수 있다.
복수의 불휘발성 메모리 장치(1201~120n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 메모리 장치들은 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(1210)는 신호 커넥터(1211)를 통해 호스트(1100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(1210)는 호스트(1100)의 커맨드에 따라 해당 메모리 장치에 데이터를 쓰거나 해당 메모리 장치로부터 데이터를 읽어낸다. 도 17에서, SSD 컨트롤러(1210)는 도 1 또는 도 16에 도시된 메모리 컨트롤러(110, 410)일 수 있다.
보조 전원 장치(1220)는 전원 커넥터(1221)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1220)는 호스트(1100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(1220)는 SSD(1200) 내에 위치할 수도 있고, SSD(1200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(1220)는 메인 보드에 위치하며, SSD(1200)에 보조 전원을 제공할 수도 있다.
도 18은 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다. 전자 장치(2000)는 퍼스널 컴퓨터(PC)로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 18을 참조하면, 전자 장치(2000)는 반도체 메모리 장치(2100), 전원 장치(2200), 보조 전원 장치(2250), 중앙처리장치(2300), 램(2400), 그리고 사용자 인터페이스(2500)를 포함한다. 반도체 메모리 장치(2100)는 플래시 메모리(2110) 및 메모리 컨트롤러(2120)를 포함한다. 도 18에서, 반도체 메모리 장치(2100)는 도 1 또는 도 16에 도시된 메모리 시스템(100, 400)일 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100: 메모리 시스템의 하드웨어 구조
200: 메모리 시스템의 소프트웨어 구조
210: 파일 시스템
220: 가상 데이터 인터페이스 레이어
230: 플래시 변환 레이어
240: 플래시 메모리

Claims (10)

  1. 불휘발성 메모리 장치; 및
    상기 불휘발성 메모리 장치를 제어하며, 가상 데이터 인터페이스 레이어를 구동하는 메모리 컨트롤러를 포함하되,
    상기 가상 데이터 인터페이스 레이어는 반복적으로 쓰기 요청된 패턴 데이터를 관리하고, 상기 패턴 데이터에 대한 읽기 요청이 있는 경우에 상기 읽기 요청된 패턴 데이터를 생성하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 가상 데이터 인터페이스 레이어는 상기 패턴 데이터 및 상기 패턴 데이터에 대응하는 어드레스를 관리하기 위한 패턴 데이터 테이블을 갖는 메모리 시스템.
  3. 제 2 항에 있어서,
    상기 가상 데이터 인터페이스 레이어는
    읽기 요청된 어드레스가 상기 패턴 데이터 테이블의 어드레스인지의 여부를 판단하는 데이터 분석 모듈; 및
    상기 패턴 데이터 테이블을 참조하여, 상기 읽기 요청된 어드레스에 대응하는 패턴 데이터를 생성하는 데이터 생성 모듈을 포함하는 메모리 시스템.
  4. 제 3 항에 있어서,
    상기 데이터 생성 모듈은 상기 생성된 패턴 데이터를 상기 메모리 컨트롤러의 랜덤 액세스 메모리에 저장하는 메모리 시스템.
  5. 제 2 항에 있어서,
    상기 가상 데이터 인터페이스 레이어는
    쓰기 요청된 데이터가 패턴 데이터인지의 여부를 판단하는 데이터 분석 모듈; 및
    상기 쓰기 요청된 패턴 데이터 및 상기 쓰기 요청된 패턴 데이터에 대응하는 어드레스를 상기 패턴 데이터 테이블에 업 데이트하는 데이터 풀 모듈을 포함하는 메모리 시스템.
  6. 메모리 시스템의 동작 방법에 있어서;
    상기 메모리 시스템은 반복적으로 쓰기 요청된 패턴 데이터 및 상기 패턴 데이터에 대응하는 어드레스를 관리하기 위한 패턴 데이터 테이블을 포함하고,
    상기 메모리 시스템의 동작 방법은
    읽기 요청된 어드레스를 입력받는 단계;
    상기 읽기 요청된 어드레스가 상기 패턴 데이터 테이블에 저장된 어드레스와 일치하는지 판단하는 단계; 그리고
    상기 패턴 데이터 테이블을 기초로, 상기 읽기 요청된 어드레스에 대응하는 패턴 데이터를 출력하는 단계를 포함하는 메모리 시스템의 동작 방법.
  7. 제 6 항에 있어서,
    상기 메모리 시스템은 불휘발성 메모리 장치; 및
    상기 불휘발성 메모리 장치를 제어하기 위한 메모리 컨트롤러를 포함하되,
    상기 패턴 데이터 테이블은 상기 메모리 컨트롤러의 랜덤 액세스 메모리 상에서 구동되는 메모리 시스템의 동작 방법.
  8. 제 7 항에 있어서,
    상기 패턴 데이터 테이블은 휴지 기간에 또는 정기적으로 상기 메모리 컨트롤러 내의 불휘발성 메모리에 저장되는 메모리 시스템의 동작 방법.
  9. 제 7 항에 있어서,
    상기 읽기 요청된 어드레스와 상기 패턴 데이터 테이블에 저장된 어드레스가 일치하지 않는 경우, 상기 불휘발성 메모리 장치에 대한 읽기 동작을 수행하는 메모리 시스템의 동작 방법.
  10. 제 6 항에 있어서,
    상기 메모리 시스템은 플래시 메모리 장치; 및
    상기 호스트 및 상기 플래시 메모리 장치 사이의 어드레스 맵핑 동작을 관리하기 위한 플래시 변환 레이어를 포함하는 메모리 시스템의 동작 방법.
KR1020100017284A 2010-02-25 2010-02-25 메모리 시스템, 그리고 그것의 동작 방법 KR20110097438A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020100017284A KR20110097438A (ko) 2010-02-25 2010-02-25 메모리 시스템, 그리고 그것의 동작 방법
US13/035,500 US8892842B2 (en) 2010-02-25 2011-02-25 Memory systems and methods of operating the same
JP2011039537A JP2011175646A (ja) 2010-02-25 2011-02-25 メモリシステム及びその動作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100017284A KR20110097438A (ko) 2010-02-25 2010-02-25 메모리 시스템, 그리고 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20110097438A true KR20110097438A (ko) 2011-08-31

Family

ID=44477441

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100017284A KR20110097438A (ko) 2010-02-25 2010-02-25 메모리 시스템, 그리고 그것의 동작 방법

Country Status (3)

Country Link
US (1) US8892842B2 (ko)
JP (1) JP2011175646A (ko)
KR (1) KR20110097438A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140062676A (ko) * 2012-11-14 2014-05-26 삼성전자주식회사 메모리 시스템 및 이의 동작 방법

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9152490B2 (en) * 2013-04-02 2015-10-06 Western Digital Technologies, Inc. Detection of user behavior using time series modeling
CN103324582A (zh) * 2013-06-17 2013-09-25 华为技术有限公司 一种内存迁移方法、装置及设备
IN2013CH04588A (ko) * 2013-10-09 2015-04-10 Samsung R&D Inst India – Bangalore Private Ltd
US9377966B2 (en) 2013-10-09 2016-06-28 Samsung Electronics Co., Ltd. Method and apparatus for efficiently processing storage commands
JP2015170017A (ja) * 2014-03-05 2015-09-28 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10282096B1 (en) * 2014-12-17 2019-05-07 Western Digital Technologies, Inc. Identification of data with predetermined data pattern
US9880952B2 (en) * 2015-01-15 2018-01-30 Toshiba Memory Corporation Bus access controller, hardware engine, controller, and memory system
CN104598391A (zh) * 2015-01-21 2015-05-06 佛山市智海星空科技有限公司 一种待转置二维矩阵的分块线性存储读取方法及系统
KR102461450B1 (ko) * 2016-11-15 2022-11-02 삼성전자주식회사 스토리지 장치를 포함하는 컴퓨팅 장치, 스토리지 장치, 그리고 컴퓨팅 장치의 동작 방법
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US11360704B2 (en) 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11203191A (ja) 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
JP4121634B2 (ja) * 1998-09-21 2008-07-23 株式会社アドバンテスト メモリ試験装置
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
JP2003015928A (ja) 2001-07-04 2003-01-17 Nec System Technologies Ltd フラッシュメモリのデータ格納装置及びそれに用いるデータ格納方法
JP2004259012A (ja) 2003-02-26 2004-09-16 Hitachi Communication Technologies Ltd データ転送装置およびそのデータ先行読取り方法
JP2004318933A (ja) 2003-04-11 2004-11-11 Renesas Technology Corp 半導体記憶装置
JP4139801B2 (ja) * 2003-09-11 2008-08-27 シャープ株式会社 情報記録媒体再生装置、及び情報記録媒体再生方法
KR20060081440A (ko) 2005-01-07 2006-07-13 엘지전자 주식회사 데이터 처리장치 및 방법
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20070226394A1 (en) * 2006-03-27 2007-09-27 Finisar Corporation Alternate storage of repeated data within a data storage device
KR101517185B1 (ko) * 2008-04-15 2015-05-04 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
JP5124551B2 (ja) * 2009-09-30 2013-01-23 株式会社日立製作所 ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法
US20110161560A1 (en) * 2009-12-31 2011-06-30 Hutchison Neil D Erase command caching to improve erase performance on flash memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140062676A (ko) * 2012-11-14 2014-05-26 삼성전자주식회사 메모리 시스템 및 이의 동작 방법

Also Published As

Publication number Publication date
US8892842B2 (en) 2014-11-18
US20110208901A1 (en) 2011-08-25
JP2011175646A (ja) 2011-09-08

Similar Documents

Publication Publication Date Title
KR20110097438A (ko) 메모리 시스템, 그리고 그것의 동작 방법
US10891236B2 (en) Data storage device and operating method thereof
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
TWI457932B (zh) 改善多層式儲存格(mlc)nand快閃記憶體之性能的方法和系統
KR101371516B1 (ko) 플래시 메모리 장치의 동작 방법 및 그것을 포함하는 메모리 시스템
US8898375B2 (en) Memory controlling method, memory controller and memory storage apparatus
US8386699B2 (en) Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same
KR102691851B1 (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
US9176865B2 (en) Data writing method, memory controller, and memory storage device
US20110113184A1 (en) Data backup method for a flash memory and controller and storage system using the same
TW201716980A (zh) 資料儲存設備及其操作方法
US20130097366A1 (en) Storage device and user device using the same
US9122583B2 (en) Memory controller and memory storage device and data writing method
CN109471819B (zh) 为来自主机的读取请求提供短的读取响应时间的存储设备
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US20140013030A1 (en) Memory storage device, memory controller thereof, and method for writing data thereof
TWI540428B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
JP2023500823A (ja) メモリ・サブシステムのための容量拡張
US11341043B2 (en) Storage device configured to perform an alignment operation and storage system including the same
US20130205073A1 (en) Memory device, memory system, and programming method thereof
KR101081948B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 저장 방법
TWI533309B (zh) 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元
KR20190095825A (ko) 데이터 저장 장치 및 그것의 동작 방법
TW201935232A (zh) 記憶體管理方法及使用所述方法的儲存控制器
KR20210156010A (ko) 저장 장치 및 그 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application