KR102078853B1 - 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법 - Google Patents

메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법 Download PDF

Info

Publication number
KR102078853B1
KR102078853B1 KR1020130145449A KR20130145449A KR102078853B1 KR 102078853 B1 KR102078853 B1 KR 102078853B1 KR 1020130145449 A KR1020130145449 A KR 1020130145449A KR 20130145449 A KR20130145449 A KR 20130145449A KR 102078853 B1 KR102078853 B1 KR 102078853B1
Authority
KR
South Korea
Prior art keywords
data
host
information
ram
host command
Prior art date
Application number
KR1020130145449A
Other languages
English (en)
Other versions
KR20150061386A (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 KR1020130145449A priority Critical patent/KR102078853B1/ko
Priority to US14/533,655 priority patent/US9904628B2/en
Priority to EP14195236.6A priority patent/EP2879041B1/en
Publication of KR20150061386A publication Critical patent/KR20150061386A/ko
Application granted granted Critical
Publication of KR102078853B1 publication Critical patent/KR102078853B1/ko

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법에 관하여 개시한다. 메모리 시스템에서의 라이트 동작 수행 방법은 제1타입의 호스트 커맨드에 따라서 호스트 시스템으로부터 전송되는 오리지널 데이터를 메모리 시스템에서 인코딩 처리하는 단계, 상기 인코딩 처리 후에 인코딩 결과에 대한 정보를 상기 호스트 시스템으로 전송하는 단계 및, 제2호스트 커맨드에 따라서 상기 메모리 시스템에서 인코딩 처리된 데이터 또는 상기 오리지널 데이터를 비휘발성 메모리 장치에 라이트하는 동작을 수행하는 단계를 포함하고, 상기 제2호스트 커맨드는 상기 인코딩 결과에 대한 정보에 기초하여 상기 호스트 시스템에서 생성되는 것을 특징으로 한다.

Description

메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법{Memory system, host system and method for performing write operation in memory system}
본 발명은 호스트 시스템 및 메모리 시스템에서의 데이터 처리 방법에 관한 것으로서, 자세하게는 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법에 관한 것이다.
데이터 처리 시스템에서 메모리 장치에 저장되는 데이터를 보호하기 위하여 암호화 처리 또는 메모리 장치의 저장 공간에 대한 활용성을 높이기 위하여 압축 처리를 수행한다. 이와 같은 압축 처리 또는 암호화 처리를 호스트 시스템에서 수행하는 경우에는 호스트 시스템의 중앙 처리 장치에서의 압축 처리 또는 암호화 처리에 대한 연산에 따른 시스템 전체 성능이 저하되고 소비전력이 크게 증가될 수 있게 된다.
본 발명의 목적은 데이터 압축 처리 또는 암호화 처리에 따른 전체 시스템의 성능 저하 방지 또는 전력 소모를 줄이기 위한 메모리 시스템에서의 라이트 동작 수행 방법을 제공하는데 있다.
본 발명의 다른 목적은 데이터 압축 처리 또는 암호화 처리에 따른 전체 시스템의 성능 저하 방지 및 전력 소모를 줄이기 위한 메모리 시스템을 제공하는데 있다.
본 발명의 또 다른 목적은 데이터 압축 처리 또는 암호화 처리에 따른 전체 시스템의 성능 저하 방지 및 전력 소모를 줄이기 위한 호스트 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 메모리 시스템에서의 라이트 동작 수행 방법은 제1타입의 호스트 커맨드에 따라서 호스트 시스템으로부터 전송되는 오리지널 데이터를 메모리 시스템에서 인코딩 처리하는 단계, 상기 인코딩 처리 후에 인코딩 결과에 대한 정보를 상기 호스트 시스템으로 전송하는 단계 및, 제2호스트 커맨드에 따라서 상기 메모리 시스템에서 인코딩 처리된 데이터 또는 상기 오리지널 데이터를 비휘발성 메모리 장치에 라이트하는 동작을 수행하는 단계를 포함하고, 상기 제2호스트 커맨드는 상기 인코딩 결과에 대한 정보에 기초하여 상기 호스트 시스템으로부터 전송되는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 제1타입의 호스트 커맨드는 상기 오리지널 데이터를 압축 기능 또는 암호화 기능을 지원하도록 할당된 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 저장 영역에 라이트하는 동작을 수행하는 커맨드를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 제1타입의 호스트 커맨드는 상기 오리지널 데이터에 대한 논리적 어드레스 정보를 포함하지 않고, 상기 제2호스트 커맨드는 상기 비휘발성 메모리 장치에 라이트할 데이터에 대한 논리적 어드레스 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 인코딩 처리하는 단계는 상기 제1타입의 호스트 커맨드에 기초하여 복수의 압축 엔진들 중에서 하나의 압축 엔진을 선택하거나 복수의 암호화 엔진들 중에서 하나의 암호화 엔진을 선택하여 상기 오리지널 데이터를 압축 처리하거나 또는 암호화 처리할 수 있다.
본 발명의 실시 예에 따르면, 상기 인코딩 처리하는 단계는 제1A 호스트 커맨드에 기초하여 상기 호스트 시스템으로부터 전송되는 오리지널 데이터를 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 제1A 어드레스 영역에 저장하는 단계, 상기 제1A 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 압축 처리를 수행하는 단계 및, 상기 압축 처리된 데이터를 상기 랜덤 액세스 메모리의 제2어드레스 영역에 저장하는 단계를 포함하고, 상기 제1A 호스트 커맨드는 상기 제1타입의 호스트 커맨드에 포함될 수 있다.
본 발명의 실시 예에 따르면, 상기 인코딩 처리하는 단계는 제1B 호스트 커맨드에 기초하여 상기 호스트 시스템으로부터 전송된 오리지널 데이터를 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 제1B 어드레스 영역에 저장하는 단계, 상기 제1B 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 암호화 처리를 수행하는 단계 및, 상기 암호화 처리된 데이터를 상기 랜덤 액세스 메모리의 제2어드레스 영역에 저장하는 단계를 포함하고, 상기 제1B 호스트 커맨드는 상기 제1타입의 호스트 커맨드에 포함될 수 있다.
본 발명의 실시 예에 따르면, 상기 인코딩 처리하는 단계는 제1C 호스트 커맨드에 기초하여 상기 호스트 시스템으로부터 전송된 오리지널 데이터를 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 제1C 어드레스 영역에 저장하는 단계, 상기 제1C 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 압축 처리를 수행하는 단계, 상기 압축 처리된 데이터를 상기 랜덤 액세스 메모리의 제1B 어드레스 영역에 저장하는 단계, 상기 제1B 어드레스 영역에 저장된 데이터를 읽어내어 암호화 처리를 수행하는 단계 및, 상기 암호화 처리된 데이터를 상기 랜덤 액세스 메모리의 제2어드레스 영역에 저장하는 단계를 포함하고, 상기 제1C 호스트 커맨드는 상기 제1타입의 호스트 커맨드에 포함될 수 있다.
본 발명의 실시 예에 따르면, 상기 인코딩 결과에 대한 정보는 상기 메모리 시스템에서의 상기 인코딩 처리된 데이터 또는 상기 오리지널 데이터 중의 적어도 하나의 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 인코딩 결과에 대한 정보는 상기 인코딩 처리에 따른 데이터 압축 결과에 기초하여 상기 인코딩 처리된 데이터 또는 상기 오리지널 데이터 중에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 데이터 압축 결과에 따른 압축률이 제1임계값 이상인 경우에 상기 인코딩 처리된 데이터를 타깃 데이터로 결정하고, 상기 데이터 압축 결과에 따른 압축률이 제1임계값 미만인 경우에 상기 오리지널 데이터를 타깃 데이터로 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 제2호스트 커맨드에는 상기 인코딩 결과에 대한 정보에서 지정하는 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 상기 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함될 수 있다.
본 발명의 실시 예에 따르면, 상기 제2호스트 커맨드에는 상기 인코딩 처리된 데이터 또는 상기 오리지널 데이터 중에서 데이터 압축률에 따라서 상기 호스트 시스템에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 상기 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함될 수 있다.
본 발명의 실시 예에 따르면, 상기 라이트하는 동작을 수행하는 단계는 상기 메모리 시스템의 랜덤 액세스 메모리에 저장된 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 상기 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함된 상기 제2호스트 커맨드를 수신하는 단계, 상기 제2호스트 커맨드에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환하는 단계, 상기 타깃 데이터에 대한 저장 위치 정보에 기초하여 상기 메모리 시스템의 랜덤 액세스 메모리로부터 상기 타깃 데이터를 읽어내는 단계 및, 상기 읽어낸 타깃 데이터를 상기 변환된 물리적 어드레스 정보에 상응하는 상기 비휘발성 메모리 장치의 저장 위치에 라이트하는 단계를 포함할 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 메모리 시스템은 비휘발성 메모리 장치 및, 상기 비휘발성 메모리 장치에 데이터를 쓰거나 읽기 위한 동작을 수행하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 인코딩 기능을 지원하는 제1어드레스 영역과 인코딩 처리된 데이터를 저장하는 제2어드레스 영역이 할당된 랜덤 액세스 메모리, 상기 제1어드레스 영역에 저장된 데이터를 인코딩 처리하여 상기 제2어드레스 영역에 저장하는 인코더 및, 제1타입의 호스트 커맨드에 따라서 호스트 시스템으로부터 전송된 오리지널 데이터를 상기 랜덤 액세스 메모리의 제1어드레스 영역에 저장하고, 상기 인코더에서의 인코딩 처리에 따른 인코딩 결과에 대한 정보를 상기 호스트 시스템으로 전송하고, 상기 인코딩 결과에 대한 정보에 기초한 제2호스트 커맨드에 따라서 상기 랜덤 액세스 메모리로부터 데이터를 읽어내어 상기 비휘발성 메모리 장치에 라이트하기 위한 동작을 수행하는 프로세서를 포함한다.
본 발명의 실시 예에 따르면, 상기 제2호스트 커맨드는 상기 인코딩 결과에 대한 정보에 기초하여 호스트 시스템으로부터 상기 메모리 컨트롤러로 전송되고, 상기 인코딩 결과에 대한 정보는 상기 오리지널 데이터 또는 상기 인코딩 처리된 데이터 중의 적어도 하나의 데이터에 대한 상기 랜덤 액세스 메모리의 저장 위치 정보 및 사이즈 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로세서는 상기 인코더에서의 압축 처리에 따른 상기 오리지널 데이터에 대한 압축률에 기초하여 상기 랜덤 액세스 메모리에 저장된 인코딩 처리된 데이터 또는 오리지널 데이터 중에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 상기 인코딩 결과에 대한 정보를 생성시키고, 상기 압축률이 제1임계값 이상인 경우에 상기 인코딩 처리된 데이터를 상기 타깃 데이터로 결정하고, 상기 압축률이 제1임계값 미만인 경우에 상기 오리지널 데이터를 상기 타깃 데이터로 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 인코더는 데이터를 압축 처리하는 하나 이상의 압축 엔진 또는 데이터를 암호화 처리하는 하나 이상의 암호화 엔진을 포함하고, 상기 제1타입의 호스트 커맨드에 기초하여 복수의 압축 엔진들 중에서 하나의 압축 엔진을 선택하거나 복수의 암호화 엔진들 중에서 하나의 암호화 엔진을 선택하여 상기 제1어드레스 영역에 저장된 데이터를 압축 처리하거나 또는 암호화 처리할 수 있다.
본 발명의 실시 예에 따르면, 상기 랜덤 액세스 메모리의 제1어드레스 영역은 압축 기능을 지원하는 제1A 어드레스 영역 또는 암호화 기능을 지원하는 제1B 어드레스 영역을 포함하고, 상기 프로세서는 상기 제1타입의 호스트 커맨드에 따라서 상기 오리지널 데이터를 상기 제1A 어드레스 영역 또는 제1B 어드레스 영역에 선택적으로 저장할 수 있다.
본 발명의 실시 예에 따르면, 상기 랜덤 액세스 메모리의 제1어드레스 영역은 압축 및 암호화 기능을 함께 지원하는 제1C 어드레스 영역을 더 포함하고, 상기 프로세서는 상기 제1타입의 호스트 커맨드에 따라서 상기 오리지널 데이터를 상기 제1A 어드레스 영역, 제1B 어드레스 영역 또는 제1C 어드레스 영역에 선택적으로 저장할 수 있다.
본 발명의 실시 예에 따르면, 상기 인코더는 상기 랜덤 액세스 메모리의 제1어드레스 영역에 저장된 데이터에 대한 압축 처리 또는 암호화 처리 중의 적어도 하나의 인코딩 처리를 수행하여 상기 제2어드레스 영역에 저장하는 동작을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로세서는 상기 제2호스트 커맨드에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환 처리하고, 상기 제2호스트 커맨드에서 지정하는 랜덤 액세스 메모리의 저장 영역에서 읽어낸 데이터를 상기 변환된 물리적 어드레스 정보에 상응하는 상기 비휘발성 메모리 장치의 저장 영역에 라이트하는 동작을 수행할 수 있다.
본 발명의 기술적 사상의 또 다른 면에 따른 호스트 시스템은 호스트 데이터를 저장하는 랜덤 액세스 메모리 및, 메모리 시스템에 저장할 호스트 데이터의 종류에 기초하여 메모리 시스템에서의 인코딩 처리를 위한 제1타입의 호스트 커맨드를 생성시켜 메모리 시스템으로 전송하고, 상기 메모리 시스템으로부터 수신되는 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드를 생성시켜 상기 메모리 시스템으로 전송하는 중앙 처리 장치를 포함한다.
본 발명의 실시 예에 따르면, 상기 제1타입의 호스트 커맨드는 압축 기능 또는 암호화 기능 지원하도록 할당된 메모리 시스템에 포함된 랜덤 액세스 메모리의 저장 영역에 상기 호스트 데이터를 라이트하는 동작을 수행하는 커맨드이고, 상기 제2호스트 커맨드는 상기 제2호스트 커맨드에서 지정하는 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 저장 영역으로부터 데이터를 읽어내어 상기 메모리 시스템의 비휘발성 메모리 장치에 라이트하는 동작을 수행하는 커맨드를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 중앙 처리 장치는 상기 메모리 시스템에 저장할 호스트 데이터의 종류에 기초하여 예상 압축률이 제2임계값 이상으로 분류되는 제1그룹의 데이터에 속하는 호스트 데이터에 대하여 제1A 호스트 커맨드를 생성시키고, 상기 제1A 호스트 커맨드는 상기 제1타입의 호스트 커맨드로서 상기 메모리 시스템에 포함된 랜덤 액세스 메모리에서의 압축 기능을 지원하는 저장 영역에 상기 호스트 데이터를 라이트하는 동작을 수행하는 커맨드를 포함할 수 있다.
본 발명에 의하면 압축 효과가 높을 것으로 예상되는 데이터에 대하여 SSD와 같은 메모리 시스템에서 압축 처리를 수행함으로써, 압축 효용성을 높일 수 있는 효과가 발생된다.
본 발명에 의하면 호스트 시스템 대신에 메모리 시스템에서 데이터 압축 처리를 수행함으로써, 호스트 시스템의 성능을 저하시키지 않고 빠르게 압축 처리를 수행할 수 있는 효과가 발생된다.
본 발명에 의하면 SSD와 같은 메모리 시스템 내부의 플래시 변환 계층(Flash Translation Layer; FTL)에서의 어드레스 변환 소프트웨어를 변경시키지 않고도 데이터 압축 처리를 수반하는 라이트 동작을 수행할 수 있는 효과가 발생된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록 구성도이다.
도 2는 본 발명의 실시 예에 따른 데이터 처리 시스템에 대한 주요 구성 수단들을 보여주는 도면이다.
도 3a ~ 3c는 도 2에 도시된 메모리 시스템에 내장된 랜덤 액세스 메모리의 저장 영역 할당에 대한 다양한 실시 예들을 보여주는 도면이다.
도 4a ~ 4h는 도 2에 도시된 메모리 시스템에 내장된 인코더의 세부 구성에 대한 다양한 실시 예들을 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 호스트 시스템의 변경없이 메모리 시스템에 내장된 압축 엔진을 이용하여 데이터를 압축 처리하여 라이트 동작을 수행하는 과정을 설명하기 위한 주요 신호 처리 흐름을 보여주는 도면이다.
도 6(a)는 도 5에서의 메모리 컨트롤러에서 압축된 데이터의 형태를 보여주는 도면이고, 도 6(b)는 비휘발성 메모리에 저장된 데이터의 형태를 보여주는 도면이다.
도 7은 본 발명의 다른 실시 예에 따른 신규 호스트 커맨드에 따라서 메모리 시스템에 내장된 압축 엔진을 이용하여 데이터를 압축 처리하여 라이트 동작을 수행하는 과정을 설명하기 위한 주요 신호 처리 흐름을 보여주는 도면이다.
도 8(a)는 도 7에서의 메모리 컨트롤러에서 압축된 데이터의 형태를 보여주는 도면이고, 도 8(b)는 비휘발성 메모리에 저장된 데이터의 형태를 보여주는 도면이다.
도 9는 도 2에 도시된 데이터 처리 시스템에서의 본 발명의 실시 예에 따른 인코딩 및 라이트 동작을 수행하는 과정을 설명하기 위한 주요 신호 처리 과정을 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 데이터 압축 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 압축 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 12는 본 발명의 또 다른 실시 예에 따른 데이터 암호화 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 압축/암호화 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 14는 본 발명의 또 다른 실시 예에 따른 압축 처리를 수반하지 않는 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 15는 본 발명의 다른 실시 예에 따른 메모리 시스템의 구성도이다.
도 16은 본 발명의 또 다른 실시예에 따른 복수의 채널을 구비하는 메모리 시스템의 구성도이다.
도 17은 도 16에 도시된 메모리 시스템의 채널 및 웨이 구성을 예시적으로 보여주는 도면이다.
도 18은 도 15 및 도 16에 도시된 메모리 장치에 포함된 플래시 메모리 칩의 세부 구성을 예시적으로 보여주는 도면이다.
도 19는 도 18에 도시된 메모리 셀 어레이의 일 예를 나타내는 단면도이다.
도 20은 플래시 메모리 칩의 내부 저장 구조를 보여주는 개념도이다.
도 21은 도 15에 도시된 프로세서의 소프트웨어 구조를 보여주는 도면이다.
도 22는 본 발명의 실시 예에 따른 메모리 시스템에서의 라이트 동작 수행 방법의 흐름도이다.
도 23은 도 22에 도시된 인코딩 처리 실행 단계에 대한 세부 흐름도의 일 예를 보여주는 도면이다.
도 24는 도 22에 도시된 인코딩 처리 실행 단계에 대한 세부 흐름도의 다른 예를 보여주는 도면이다.
도 25는 도 22에 도시된 인코딩 처리 실행 단계에 대한 세부 흐름도의 또 다른 예를 보여주는 도면이다.
도 26은 도 22에 도시된 라이트 동작 실행 단계에 대한 세부 흐름도를 예시적으로 보여주는 도면이다.
도 27은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 28은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 메모리 카드 시스템의 일 구현 예를 나타내는 블록도이다.
도 29는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록 구성도이다.
도 1에 도시된 바와 같이, 데이터 처리 시스템(10000)은 메모리 시스템(1000) 및 호스트 시스템(2000)을 포함한다. 그리고, 메모리 시스템(1000)은 메모리 컨트롤러(100)와 비휘발성 메모리 장치(NVM; 200)를 구비한다.
예로서, 메모리 시스템(1000)으로 SSD(Solid State Drive)를 구현할 수 있다. SSD는 솔리드 스테이트 디스크(Solid State Disc)라고 칭해지기도 한다.
호스트 시스템(2000)은 메모리 시스템(1000)에 데이터를 저장하거나 또는 메모리 시스템(1000)으로부터 데이터를 읽어내기 위한 호스트 커맨드를 생성시켜 메모리 시스템(1000)으로 전송한다.
메모리 컨트롤러(100)는 호스트 커맨드에 따라서 호스트 시스템(2000)으로부터 전송된 데이터를 처리하여 비휘발성 메모리 장치(200)에 저장하기 위한 라이트 동작을 수행할 수 있다. 또한, 메모리 컨트롤러(100)는 호스트 커맨드에 따라서 비휘발성 메모리 장치(200)로부터 데이터를 읽어내고, 읽어낸 데이터를 처리하여 호스트 시스템(2000)으로 전송하는 동작을 수행할 수 있다.
비휘발성 메모리 장치(200)는 플래시 메모리 디바이스, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등으로 구성될 수 있다. 예로서, 비휘발성 메모리 장치(200)는 두 종류 이상의 비휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수도 있다.
본 발명의 실시 예에서는 호스트 시스템(2000)에서 생성되는 신규 커맨드로서 제1타입의 호스트 커맨드와 제2호스트 커맨드를 도입하였다.
제1타입의 호스트 커맨드는 호스트 시스템(2000)으로부터 전송받은 오리지널 데이터를 메모리 컨트롤러(100)에서 인코딩 처리하는 동작을 수행시키기 위한 커맨드이고, 제2호스트 커맨드는 메모리 컨트롤러(100)에서 인코딩 처리된 데이터 또는 호스트 시스템(2000)으로부터 전송받은 오리지널 데이터를 비휘발성 메모리 장치(200)에 라이트하는 동작을 수행시키기 위한 커맨드이다. 예로서, 인코딩 처리는 데이터 압축 처리 또는 데이터 암호화 처리 등이 포함될 수 있다.
그리고, 제1타입의 호스트 커맨드에 따라서 메모리 컨트롤러(100)는 인코딩 처리 후에 인코딩 결과에 대한 정보를 생성시켜 호스트 시스템(2000)으로 전송하는 동작을 수행한다.
그러면, 제1타입의 호스트 커맨드 및 제2호스트 커맨드에 기초하여 데이터 처리 시스템(10000)에서 실행되는 동작에 대하여 도 2를 참조하여 상세하게 설명하기로 한다.
도 2는 본 발명의 실시 예에 따른 데이터 처리 시스템(10000)에 대한 주요 구성 수단들을 보여주는 도면이다.
도 2에 도시된 바와 같이, 메모리 시스템(1000)의 메모리 컨트롤러(100)는 프로세서(110), 인코더(120) 및 랜덤 액세스 메모리(RAM; 130)를 포함한다. 그리고, 호스트 시스템(2000)은 중앙 처리 장치(CPU; 210) 및 랜덤 액세스 메모리(RAM; 220)를 포함한다.
우선, 호스트 시스템(2000)에 대하여 설명하기로 한다.
RAM(220)에는 호스트 데이터를 저장된다. 예로서, RAM(200)은 휘발성 메모리로서, DRAM, SRAM 등으로 구현될 수 있다.
CPU(210)는 호스트 시스템(2000)을 총괄적으로 제어하며, 산술 논리 연산 또는 데이터 처리를 실행한다. 그리고, CPU(210)는 메모리 시스템(1000)에서 라이트(write) 동작을 수행하거나 또는 리드(read) 동작을 수행하기 위한 호스트 커맨드를 발생시켜 메모리 시스템(1000)으로 전송하는 동작을 수행한다.
또한, CPU(210)는 메모리 시스템(1000)에 저장할 호스트 데이터의 종류에 기초하여 제1타입의 호스트 커맨드를 생성시켜 메모리 시스템(1000)으로 전송하고, 메모리 시스템(1000)으로부터 수신되는 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드를 생성시켜 메모리 시스템(1000)으로 전송하는 동작을 수행한다.
예로서, 제1타입의 호스트 커맨드는 메모리 시스템(1000)에서의 압축 기능 또는 암호화 기능을 지원하도록 할당된 RAM(130)의 저장 영역에 호스트 데이터를 라이트하는 동작을 수행하는 커맨드이다. 그리고, 제2호스트 커맨드는 메모리 시스템(1000)의 RAM(130)에 저장된 데이터를 읽어내어 메모리 시스템(1000)의 NVM(200)에 라이트하는 동작을 수행하는 커맨드이다. 제1타입의 호스트 커맨드에서는 논리적 어드레스 정보를 지정하지 않고, 제2호스트 커맨드에서는 논리적 어드레스 정보를 지정한다.
예로서, 제1타입의 호스트 커맨드에는 메모리 시스템(1000)에서의 압축 기능을 지원하도록 할당된 RAM(130)의 저장 영역에 호스트 데이터를 라이트하는 동작을 수행하는 제1A 호스트 커맨드(COMP CMD)가 포함될 수 있다. 제1타입의 호스트 커맨드에는 메모리 시스템(1000)에서의 암호화 기능을 지원하도록 할당된 RAM(130)의 저장 영역에 호스트 데이터를 라이트하는 동작을 수행하는 제1B 호스트 커맨드(ENCR CMD)가 포함될 수 있다. 그리고, 제1타입의 호스트 커맨드에는 메모리 시스템(1000)에서의 압축 및 암호화 기능을 지원하도록 할당된 RAM(130)의 저장 영역에 호스트 데이터를 라이트하는 동작을 수행하는 제1C 호스트 커맨드(COMP/ENCR CMD)가 포함될 수 있다.
만일 메모리 시스템(1000)의 인코더(120)에서 복수 종류의 압축 엔진들을 지원하는 경우에, 제1A 호스트 커맨드(COMP CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에는 인코더(120)에서 지원하는 복수 종류의 압축 엔진들 중에서 하나의 압축 엔진을 지정하는 정보가 포함될 수 있다.
CPU(210)는 메모리 시스템(1000)에 저장할 호스트 데이터의 종류에 기초하여 예상 압축률이 제2임계값 이상으로 분류되는 제1그룹의 데이터에 속하는 호스트 데이터에 대해서는 제1A 호스트 커맨드(COMP CMD)를 생성시키고, 예상 압축률이 제2임계값 미만으로 분류되는 제2그룹의 데이터에 속하는 호스트 데이터에 대해서는 라이트 커맨드(WRITE CMD)를 생성시킬 수 있다. 예로서, CPU(210)는 호스트 데이터의 종류에 기초하여 예상 압축률을 결정할 수 있다. 라이트 커맨드에는 논리적 어드레스를 지정하는 정보가 포함되고, 호스트 데이터(오리지널 데이터)는 압축 기능을 지원하지 않도록 할당된 메모리 시스템(1000)에 포함된 RAM(130)의 저장 영역에 저장된다.
CPU(210)는 메모리 시스템(1000)으로부터 수신되는 인코딩 결과에 대한 정보를 수신한 후에, 수신된 인코딩 결과에 대한 정보를 이용하여 제2호스트 커맨드를 생성시킨다. 본 발명의 실시 예에서 제2호스트 커맨드를 RAM FLUSH CMD로 정의하였다.
예로서, 인코딩 결과에 대한 정보에는 제1타입의 호스트 커맨드에 따라서 메모리 시스템(1000)에서 인코딩 처리된 데이터에 대한 저장 위치 정보 및 사이즈 정보가 포함될 수 있다.
다른 예로서, 인코딩 결과에 대한 정보에는 제1타입의 호스트 커맨드에 따라서 메모리 시스템(1000)에서 인코딩 처리된 데이터 또는 호스트 데이터(오리지널 데이터) 중의 적어도 하나의 데이터에 대한 저장 위치 정보 및 사이즈 정보가 포함될 수 있다.
또 다른 예로서, 인코딩 결과에 대한 정보에는 제1타입의 호스트 커맨드에 따라서 메모리 시스템(1000)에서의 인코딩 처리에 따른 데이터 압축 결과에 기초하여 인코딩 처리된 데이터 또는 호스트 데이터(오리지널 데이터) 중에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보가 포함될 수 있다.
예로서, 메모리 시스템(1000)으로부터 수신되는 인코딩 결과에 대한 정보에 인코딩 처리된 데이터 또는 호스트 데이터(오리지널 데이터) 중에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보가 포함되어 있는 경우에, CPU(210)는 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보와 타깃 데이터에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)으로 전송한다.
다른 예로서, 메모리 시스템(1000)으로부터 수신되는 인코딩 결과에 대한 정보에 인코딩 처리된 데이터에 대한 저장 위치 정보 및 사이즈 정보와 호스트 데이터(오리지널 데이터)에 대한 저장 위치 정보 및 사이즈 정보가 함께 포함되어 있는 경우에, CPU(210)는 호스트 데이터(오리지널 데이터)의 사이즈 정보와 인코딩 처리된 데이터의 사이즈 정보를 이용하여 데이터 압축률을 산출한다. 그리고 나서, CPU(210)는 산출된 압축률이 제1임계값 이상인 경우에 인코딩 처리된 데이터를 타깃 데이터로 결정하고, 산출된 압축률이 제1임계값 미만인 경우에 호스트 데이터(오리지널 데이터)를 타깃 데이터로 결정한다. 다음으로, CPU(210)는 타깃 데이터에 대한 메모리 시스템(1000)에서의 저장 위치 정보, 사이즈 정보와 타깃 데이터에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)으로 전송한다.
다음으로, 메모리 시스템(1000)에 포함된 메모리 컨트롤러(100)에 대하여 설명하기로 한다.
프로세서(110)는 메모리 시스템(1000)을 총괄적으로 제어하며, 호스트 시스템(2000)으로부터 수신되는 호스트 커맨드에 따라서 산술 논리 연산 또는 데이터 처리를 실행한다.
RAM(130)에는 호스트 시스템(2000)으로부터 전송된 오리지널 데이터 또는 인코더(120)에서 처리된 데이터가 저장된다. 또한, RAM(130)에는 비휘발성 메모리 장치(NVM; 200)로부터 읽어낸 데이터도 저장될 수 있다. 본 발명의 실시 예에서는 RAM(130)의 저장 영역 중의 일부를 압축 기능 또는 암호화 기능을 지원하도록 할당할 수 있다.
도 3a ~ 3c는 도 2에 도시된 메모리 시스템(1000)에 포함된 RAM(130)의 저장 영역 할당에 대한 다양한 실시 예들을 보여주는 도면이다.
도 3a ~ 3c를 참조하면, RAM(130)을 저장 공간의 할당 방식에 따라서 RAM(130A)~ RAM(130C)로 표시할 수 있다.
예로서, 도 3a에 도시된 바와 같이 RAM(130A)의 저장 공간을 인코딩 기능을 지원하는 제1어드레스 영역과 인코딩 처리된 데이터를 저장하는 제2어드레스 영역으로 분할할 수 있다. 예로서, 제1어드레스 영역을 압축 기능을 지원하는 영역 또는 암호화 기능을 지원하는 영역으로 지정할 수 있다.
다른 예로서, 도 3b에 도시된 바와 같이 RAM(130B)의 저장 공간을 인코딩 기능을 지원하는 제1어드레스 영역과 인코딩 처리된 데이터를 저장하는 제2어드레스 영역으로 분할하고, 제1어드레스 영역을 압축 기능을 지원하는 제1A 어드레스 영역 과 암호화 기능을 지원하는 제1B 어드레스 영역으로 세분화시킬 수 있다.
또 다른 예로서, 도 3c에 도시된 바와 같이 RAM(130C)의 저장 공간을 인코딩 기능을 지원하는 제1어드레스 영역과 인코딩 처리된 데이터를 저장하는 제2어드레스 영역으로 분할하고, 제1어드레스 영역을 압축 기능을 지원하는 제1A 어드레스 영역, 암호화 기능을 지원하는 제1B 어드레스 영역과, 압축 및 암호화 기능을 지원하는 제1C 어드레스 영역으로 세분화시킬 수 있다.
RAM(130A)~ RAM(130C)의 제2어드레스 영역에는 제1타입의 호스트 커맨드 이외의 호스트 커맨드를 수행하기 위하여 호스트 시스템(2000)으로부터 전송되는 데이터 또는 비휘발성 메모리 장치(200)로부터 읽어낸 데이터가 저장될 수 있다.
다시 도 2를 참조하면, 인코더(120)는 RAM(130)의 제1어드레스 영역에 저장된 데이터를 인코딩 처리하여 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행한다. 예로서, 프로세서(110)의 제어에 따라서 인코더(120)는 RAM(130)의 제1어드레스 영역으로부터 읽어낸 데이터를 인코딩 처리한 후에 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행할 수 있다. 인코더(120)에서의 인코딩 처리는 압축 처리 또는 암호화 처리가 포함될 수 있다.
예로서, 인코더(120)는 RAM(130)에 할당된 압축 기능을 지원하는 저장 영역에 저장된 데이터에 대해서는 압축 처리를 수행하고, RAM(130)에 할당된 암호화 기능을 지원하는 저장 영역에 저장된 데이터에 대해서는 암호화 처리를 수행하고, RAM(130)에 할당된 압축 및 암호화 기능을 지원하는 저장 영역에 저장된 데이터에 대해서는 압축 처리 및 암호화 처리를 순차적으로 수행한다.
도 4a ~ 4h는 도 2에 도시된 메모리 시스템(1000)에 내장된 인코더(120)의 세부 구성에 대한 다양한 실시 예들을 보여주는 도면이다.
도 4a ~ 4h를 참조하면, 인코더(120)를 구성의 다양한 실시 예에 따라서 인코더(120A)~ 인코더(120H)로 표시할 수 있다.
도 4a에 도시된 바와 같이, 일 예로서 인코더(120A)는 단일의 압축 엔진(121)이 포함되도록 구성될 수 있다. 예로서, 압축 엔진(121A)은 디플레이트(Deflate) 알고리즘, 허프만(Huffman) 알고리즘, 산술 부호화(Arithmetic Coding) 알고리즘 등과 같은 압축 알고리즘들 중의 하나가 적용될 수 있다.
압축 엔진(121A)은 RAM(130)에 할당된 압축 기능이 지원되는 저장 영역에 저장된 데이터에 대한 압축 처리를 수행한다. 예로서, 압축 엔진(121A)은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1A어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1A어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
도 4b에 도시된 바와 같이, 다른 예로서 인코더(120B)는 단일의 암호화 엔진(122A)이 포함되도록 구성될 수 있다. 예로서, 암호화 엔진(122A)은 DES(Data Encryption Standard) 알고리즘, AES(Advanced Encryption Standard) 알고리즘, RSA 알고리즘 등의 다양한 암호화 알고리즘들 중의 하나가 적용될 수 있다.
암호화 엔진(122A)은 RAM(130)에 할당된 암호화 기능이 지원되는 저장 영역에 저장된 데이터에 대한 압축 처리를 수행한다. 예로서, 암호화 엔진(122A)은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1B어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1B어드레스 영역에 저장된 데이터를 암호화 처리하고, 암호화 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
도 4c에 도시된 바와 같이, 또 다른 예로서 인코더(120C)는 하나의 압축 엔진(121B)과 하나의 암호화 엔진(122B)이 포함되도록 구성될 수 있다.
예로서, 압축 엔진(121B)은 디플레이트(Deflate) 알고리즘, 허프만(Huffman) 알고리즘, 산술 부호화(Arithmetic Coding) 알고리즘 등과 같은 압축 알고리즘들 중의 하나가 적용될 수 있다. 예로서, 암호화 엔진(122B)은 DES(Data Encryption Standard) 알고리즘, AES(Advanced Encryption Standard) 알고리즘, RSA 알고리즘 등의 다양한 암호화 알고리즘들 중의 하나가 적용될 수 있다.
압축 엔진(121B)은 RAM(130)에 할당된 압축 기능이 지원되는 저장 영역에 저장된 데이터에 대한 압축 처리를 수행한다. 예로서, 압축 엔진(121B)은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1A어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1A어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다. 그리고, 압축 엔진(121B)은 도 3c에 도시된 RAM(130C)의 제1C어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 제1B어드레스 영역에 저장한다.
암호화 엔진(122B)은 RAM(130)에 할당된 암호화 기능이 지원되는 저장 영역에 저장된 데이터에 대한 암호화 처리를 수행한다. 예로서, 암호화 엔진(122B)은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1B어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1B어드레스 영역에 저장된 데이터를 암호화 처리하고, 암호화 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
도 4d에 도시된 바와 같이, 또 다른 예로서 인코더(120D)는 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들이 포함되도록 구성될 수 있다. 여기에서, N은 2 이상의 자연수이다. 예로서, 압축 엔진 1~N(121A-1 ~121A-N)들은 디플레이트(Deflate) 알고리즘, 허프만(Huffman) 알고리즘, 산술 부호화(Arithmetic Coding) 알고리즘 등과 같은 압축 알고리즘들 중의 2개 이상의 알고리즘이 적용될 수 있다.
예로서, 프로세서(110)는 제1타입의 호스트 커맨드에 포함된 압축 엔진 지정 정보에 기초하여 인코더(120D)에 포함된 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들 중에서 하나의 압축 엔진을 선택할 수 있다. 세부적으로, 제1A 호스트 커맨드(COMP CMD)에 포함된 압축 엔진 지정 정보에 기초하여 인코더(120D)에 포함된 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들 중에서 하나의 압축 엔진이 선택될 수 있다.
제1A 호스트 커맨드(COMP CMD)에 포함된 압축 엔진 지정 정보에 기초하여 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들 중에서 선택된 하나의 압축 엔진은 RAM(130)에 할당된 압축 기능이 지원되는 저장 영역에 저장된 데이터에 대한 압축 처리를 수행한다. 예로서, 선택된 하나의 압축 엔진은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1A어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1A어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
도 4e에 도시된 바와 같이, 또 다른 예로서 인코더(120E)는 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들과 하나의 암호화 엔진(122C)이 포함되도록 구성될 수 있다.
예로서, 압축 엔진 1~N(121B-1 ~121B-N)들은 디플레이트(Deflate) 알고리즘, 허프만(Huffman) 알고리즘, 산술 부호화(Arithmetic Coding) 알고리즘 등과 같은 압축 알고리즘들 중의 2개 이상의 알고리즘이 적용될 수 있다. 예로서, 암호화 엔진(122C)은 DES(Data Encryption Standard) 알고리즘, AES(Advanced Encryption Standard) 알고리즘, RSA 알고리즘 등의 다양한 암호화 알고리즘들 중의 하나가 적용될 수 있다.
예로서, 프로세서(110)는 제1타입의 호스트 커맨드에 포함된 압축 엔진 지정 정보에 기초하여 인코더(120E)에 포함된 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중에서 하나의 압축 엔진을 선택할 수 있다. 세부적으로, 제1A 호스트 커맨드(COMP CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 압축 엔진 지정 정보에 기초하여 인코더(120D)에 포함된 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중에서 하나의 압축 엔진이 선택될 수 있다.
예로서, 제1A 호스트 커맨드(COMP CMD)에 포함된 압축 엔진 지정 정보에 기초하여 선택된 하나의 압축 엔진은 RAM(130)에 할당된 압축 기능이 지원되는 저장 영역에 저장된 데이터에 대한 압축 처리를 수행한다. 예로서, 압축 엔진 1~N(121B-1 ~ 121B-N)들 중에서 하나의 압축 엔진은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1A어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1A어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다. 다른 예로서, 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 압축 엔진 지정 정보에 기초하여 선택된 하나의 압축 엔진은 도 3c에 도시된 RAM(130C)의 제1C어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 제1B어드레스 영역에 저장한다.
암호화 엔진(122C)은 RAM(130)에 할당된 암호화 기능이 지원되는 저장 영역에 저장된 데이터에 대한 암호화 처리를 수행한다. 예로서, 암호화 엔진(122C)은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1B어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1B어드레스 영역에 저장된 데이터를 암호화 처리하고, 암호화 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
도 4f에 도시된 바와 같이, 또 다른 예로서 인코더(120F)는 복수의 암호화 엔진 1~M(122A-1 ~ 122A-M)들이 포함되도록 구성될 수 있다. 여기에서, M은 2 이상의 자연수이다. 예로서, 암호화 엔진 1~M(122A-1 ~122A-M)들은 DES(Data Encryption Standard) 알고리즘, AES(Advanced Encryption Standard) 알고리즘, RSA 알고리즘 등과 같은 다양한 암호화 알고리즘들 중의 2개 이상이 적용될 수 있다.
예로서, 프로세서(110)는 제1타입의 호스트 커맨드에 포함된 암호화 엔진 지정 정보에 기초하여 인코더(120F)에 포함된 복수의 암호화 엔진 1~M(122A-1 ~ 122A-M)들 중에서 하나의 암호화 엔진을 선택할 수 있다. 세부적으로, 제1B 호스트 커맨드(ENCR CMD)에 포함된 암호화 엔진 지정 정보에 기초하여 인코더(120F)에 포함된 복수의 암호화 엔진 1~M(122A-1 ~ 122A-M)들 중에서 하나의 암호화 엔진이 선택될 수 있다.
제1B 호스트 커맨드(ENCR CMD)에 포함된 암호화 엔진 지정 정보에 기초하여 복수의 암호화 엔진 1~M(122A-1 ~ 122A-M)들 중에서 선택된 하나의 암호화 엔진은 RAM(130)에 할당된 암호화 기능이 지원되는 저장 영역에 저장된 데이터에 대한 암호화 처리를 수행한다. 예로서, 선택된 하나의 암호화 엔진은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1B어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1B어드레스 영역에 저장된 데이터를 암호화 처리하고, 암호화 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
도 4g에 도시된 바와 같이, 또 다른 예로서 인코더(120G)는 하나의 압축 엔진(121C)과 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들이 포함되도록 구성될 수 있다. 여기에서, M은 2 이상의 자연수이다.
예로서, 압축 엔진(121C)은 디플레이트(Deflate) 알고리즘, 허프만(Huffman) 알고리즘, 산술 부호화(Arithmetic Coding) 알고리즘 등과 같은 압축 알고리즘들 중의 하나가 적용될 수 있다. 예로서, 암호화 엔진 1~M(122B-1 ~122B-M)들은 DES(Data Encryption Standard) 알고리즘, AES(Advanced Encryption Standard) 알고리즘, RSA 알고리즘 등과 같은 다양한 암호화 알고리즘들 중의 2개 이상이 적용될 수 있다.
압축 엔진(121C)은 RAM(130)에 할당된 압축 기능이 지원되는 저장 영역에 저장된 데이터에 대한 압축 처리를 수행한다. 예로서, 압축 엔진(121C)은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1A어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1A어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
그리고, 압축 엔진(121C)은 도 3c에 도시된 RAM(130C)의 제1C어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 제1B어드레스 영역에 저장한다.
예로서, 프로세서(110)는 제1타입의 호스트 커맨드에 포함된 암호화 엔진 지정 정보에 기초하여 인코더(120G)에 포함된 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중에서 하나의 암호화 엔진을 선택할 수 있다. 세부적으로, 제1B 호스트 커맨드(ENCR CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 암호화 엔진 지정 정보에 기초하여 인코더(120G)에 포함된 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중에서 하나의 암호화 엔진이 선택될 수 있다.
제1B 호스트 커맨드(ENCR CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 암호화 엔진 지정 정보에 기초하여 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중에서 선택된 하나의 암호화 엔진은 RAM(130)에 할당된 암호화 기능이 지원되는 저장 영역에 저장된 데이터에 대한 암호화 처리를 수행한다. 예로서, 선택된 하나의 암호화 엔진은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1B어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1B어드레스 영역에 저장된 데이터를 암호화 처리하고, 암호화 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
도 4h에 도시된 바와 같이, 또 다른 예로서 인코더(120H)는 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들과 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들이 포함되도록 구성될 수 있다. 여기에서, N 및 M은 각각 2 이상의 자연수이다.
예로서, 압축 엔진 1~N(121B-1 ~121B-N)들은 디플레이트(Deflate) 알고리즘, 허프만(Huffman) 알고리즘, 산술 부호화(Arithmetic Coding) 알고리즘 등과 같은 압축 알고리즘들 중의 2개 이상의 알고리즘이 적용될 수 있다. 예로서, 암호화 엔진 1~M(122B-1 ~122B-M)들은 DES(Data Encryption Standard) 알고리즘, AES(Advanced Encryption Standard) 알고리즘, RSA 알고리즘 등과 같은 다양한 암호화 알고리즘들 중의 2개 이상이 적용될 수 있다.
예로서, 프로세서(110)는 제1타입의 호스트 커맨드에 포함된 압축 엔진 지정 정보에 기초하여 인코더(120H)에 포함된 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중에서 하나의 압축 엔진을 선택할 수 있다. 세부적으로, 제1A 호스트 커맨드(COMP CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 압축 엔진 지정 정보에 기초하여 인코더(120D)에 포함된 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중에서 하나의 압축 엔진이 선택될 수 있다.
예로서, 제1A 호스트 커맨드(COMP CMD)에 포함된 압축 엔진 지정 정보에 기초하여 선택된 하나의 압축 엔진은 RAM(130)에 할당된 압축 기능이 지원되는 저장 영역에 저장된 데이터에 대한 압축 처리를 수행한다. 예로서, 압축 엔진 1~N(121B-1 ~ 121B-N)들 중에서 하나의 압축 엔진은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1A어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1A어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다. 다른 예로서, 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 압축 엔진 지정 정보에 기초하여 선택된 하나의 압축 엔진은 도 3c에 도시된 RAM(130C)의 제1C어드레스 영역에 저장된 데이터를 압축 처리하고, 압축 처리된 데이터를 제1B어드레스 영역에 저장한다.
예로서, 프로세서(110)는 제1타입의 호스트 커맨드에 포함된 암호화 엔진 지정 정보에 기초하여 인코더(120G)에 포함된 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중에서 하나의 암호화 엔진을 선택할 수 있다. 세부적으로, 제1B 호스트 커맨드(ENCR CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 암호화 엔진 지정 정보에 기초하여 인코더(120G)에 포함된 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중에서 하나의 암호화 엔진이 선택될 수 있다.
제1B 호스트 커맨드(ENCR CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 암호화 엔진 지정 정보에 기초하여 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중에서 선택된 하나의 암호화 엔진은 RAM(130)에 할당된 암호화 기능이 지원되는 저장 영역에 저장된 데이터에 대한 암호화 처리를 수행한다. 예로서, 선택된 하나의 암호화 엔진은 도 3a에 도시된 RAM(130A)의 제1어드레스 영역에 저장된 데이터, 도 3b에 도시된 RAM(130B)의 제1B어드레스 영역에 저장된 데이터, 또는 도 3c에 도시된 RAM(130C)의 제1B어드레스 영역에 저장된 데이터를 암호화 처리하고, 암호화 처리된 데이터를 RAM(130A), RAM(130B), 또는 RAM(130C)의 제2어드레스 영역에 저장한다.
다시 도 2를 참조하면, 제1타입의 호스트 커맨드에 따라서 RAM(130)의 제1어드레스 영역에 저장된 데이터를 인코더(120)에서 인코딩 처리를 수행하여 RAM(130)의 제2어드레스에 저장한 후에, 프로세서(110)는 인코딩 결과에 대한 정보를 생성시켜 호스트 시스템(2000)으로 전송한다.
예로서, 프로세서(110)에서 생성되는 인코딩 결과에 대한 정보는 제1타입의 호스트 커맨드에 따라서 RAM(130)의 제1어드레스 영역에 저장된 호스트 데이터(오리지널 데이터)를 인코딩 처리하여 RAM(130)의 제2어드레스에 저장되는 인코딩 처리된 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함할 수 있다.
다른 예로서, 프로세서(110)에서 생성되는 인코딩 결과에 대한 정보는 제1타입의 호스트 커맨드에 따라서 RAM(130)의 제1어드레스 영역에 저장된 호스트 데이터 또는 제1어드레스 영역에 저장된 호스트 데이터(오리지널 데이터)를 인코딩 처리하여 RAM(130)의 제2어드레스 영역에 저장되는 인코딩 처리된 데이터 중의 적어도 하나의 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함할 수 있다.
또 다른 예로서, 프로세서(110)에서 생성되는 인코딩 결과에 대한 정보는 제1타입의 호스트 커맨드에 따라서 RAM(130)의 제1어드레스 영역에 저장된 호스트 데이터(오리지널 데이터) 또는 RAM(130)의 제2어드레스 영역에 저장되는 인코딩 처리된 데이터 중에서 인코딩 처리에 따른 압축률에 기초하여 선택된 하나의 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보가 포함될 수 있다. 예로서, 압축률이 제1임계값 이상인 경우에 인코딩 처리된 데이터를 타깃 데이터로 결정하고, 압축률이 제1임계값 미만인 경우에 호스트 데이터(오리지널 데이터)를 타깃 데이터로 결정할 수 있다.
호스트 시스템(2000)으로부터 제2호스트 커맨드(RAM FLUSH CMD)가 수신되면, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에서 지정하는 메모리 시스템(1000)에 포함된 RAM(130)의 저장 영역으로부터 데이터를 읽어내어 NVM(200)에 라이트하는 동작을 수행하도록 메모리 시스템(1000)을 제어한다.
예로서, 제2호스트 커맨드에는 인코딩 결과에 대한 정보에서 지정하는 메모리 시스템(1000)의 RAM(130)에 저장된 타깃 데이터에 대한 저장 위치 정보, 타깃 데이터에 매핑시킬 논리적 어드레스 정보 및 타깃 데이터에 대한 사이즈 정보가 포함될 수 있다.
프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환시킨다. 그리고, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에서 지정하는 RAM(130)의 저장 위치로부터 타깃 데이터를 읽어내고, 읽어낸 데이터를 위의 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다.
다음으로, 호스트 시스템(2000)으로부터 라이트 커맨드(WRITE CMD)가 메모리 시스템(1000)으로 전송되는 경우, 메모리 시스템(1000)에서의 동작을 설명하기로 한다.
호스트 시스템(2000)으로부터 라이트 커맨드(WRITE CMD)가 수신되면, 프로세서(110)는 라이트 커맨드(WRITE CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환시킨다. 프로세서(110)는 라이트 커맨드(WRITE CMD)에 따라서 호스트 시스템(2000)으로부터 전송되는 호스트 데이터를 RAM(130)의 제2어드레스 영역에 저장하도록 메모리 시스템(1000)을 제어한다. 그리고 나서, 프로세서(110)는 RAM(130)의 제2어드레스 영역으로부터 호스트 데이터를 읽어내어 위의 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다. 이에 따라서, 라이트 커맨드(WRITE CMD)에 따라 수신되는 호스트 데이터는 압축 또는 암호화 처리를 수행하지 않고 NVM(200)에 라이트된다.
다음으로, 호스트 시스템의 변경없이 메모리 시스템 내부에서 데이터를 압축 처리하는 방식에 대하여 도 5를 참조하여 설명하기로 한다.
도 5는 본 발명의 실시 예에 따른 호스트 시스템의 변경없이 메모리 시스템(1000A)의 인코더(120)에 내장된 압축 엔진(121A')을 이용하여 데이터를 압축 처리하여 라이트 동작을 수행하는 과정을 설명하기 위한 주요 신호 처리 흐름을 보여주는 도면이다.
도 5를 참조하면, 메모리 시스템(1000A)은 메모리 컨트롤러(100A) 및 NVM(200)를 포함한다. 그리고, 메모리 컨트롤러(100A)는 프로세서(110A), 압축 엔진(121A') 및 RAM(130A')를 포함한다.
RAM(130A')의 저장 영역에 압축 기능 또는 암호화 기능을 지원하기 위한 저장 영역을 별도로 할당할 필요가 없다. 프로세서(100A)의 제어에 따라서 압축 엔진(121A')은 RAM(130A')에 저장된 호스트 데이터를 압축 처리한다. 그리고, 프로세서(100A)는 압축률이 50%를 넘는 2개의 논리적 페이지를 하나의 물리적 페이지에 매핑하도록 플래시 변환 계층(Flash Translation Layer)을 관리한다.
예로서, 호스트 시스템(2000A)은 논리적 페이지 번호(LPN) 5, 6, 7, 8, 9로 지정될 호스트 데이터(Raw data)를 NVM(200)에 라이트하기 위한 호스트 커맨드인 WRITE CMD와 호스트 데이터(Raw data)를 메모리 시스템(1000A)으로 전송한다. WRITE CMD에는 논리적 어드레스 정보가 포함되어 있다.
이에 따라서, 논리적 페이지 번호(LPN) 5, 6, 7, 8, 9로 지정된 호스트 데이터(Raw data)는 메모리 시스템(1000A)의 RAM(130A')에 저장된다.
그러면, 프로세서(110A)의 제어에 따라 압축 엔진(121A')은 호스트 데이터(Raw data)를 압축 처리하고, 압축 처리된 데이터(Com.data)를 RAM(130A')에 저장한다.
예로서, 메모리 컨트롤러(100A)의 압축 엔진(121A')에서 압축된 데이터의 형태는 도 6(a)에 도시된 바와 같다. 도 6(a)에서 논리적 페이지 번호(LPN) 5 및 6으로 지정된 호스트 데이터(Raw data)에 대한 압축 결과를 Comp 1 및 Comp 2로 표시하였고, 논리적 페이지 번호(LPN) 7 ~9로 지정된 호스트 데이터(Raw data)에 대한 압축 결과를 Comp 3 ~ Comp 5로 표시하였다.
도 6(a)를 참조하면, 도 6(a)에서 논리적 페이지 번호(LPN) 5 및 6으로 지정된 호스트 데이터(Raw data)에 대한 압축률은 50% 이상이고, 논리적 페이지 번호(LPN) 7 ~9로 지정된 호스트 데이터(Raw data)에 대한 압축률은 50% 미만이라는 사실을 알 수 있다.
도 6(a)와 같은 압축 결과를 이용하여 프로세서(110A)는 압축률이 50% 이상인 2개의 논리적 페이지를 하나의 물리적 페이지에 매핑시키는 어드레스 변환 처리를 수행한다. 그리고, 압축률이 50% 미만인 논리적 페이지에 대해서는 압축 처리되지 않은 호스트 데이터(Raw data)에 대한 논리적 페이지 각각에 대하여 물리적 페이지를 매핑시키는 어드레스 변환 처리를 수행한다.
프로세서(110A)는 이와 같이 어드레스 변환 처리된 물리적 페이지에 대응되는 NVM(200)의 저장 위치에 압축 처리된 논리적 페이지의 데이터 또는 압축 처리되지 않은 호스트 데이터(Raw data)를 선택적으로 라이트하도록 메모리 시스템(1000A)을 제어한다. 이에 따라서, NVM(200)에 저장되는 데이터(com1.data)는 도 6(b)와 같은 형태가 된다. 즉, 도 6(b)를 참조하면, NVM(200)에 저장되는 LPN 5 및 LPN 6에 대한 데이터는 압축된 데이터 Comp 1 및 Comp 2이고, NVM(200)에 저장되는 LPN 7 ~ LPN 9에 대한 데이터는 압축되지 않은 Raw data가 된다.
도 5에 도시된 실시 예에 따르면, 압축 효과가 없는 데이터에 대하여 불필요하게 압축 처리를 수행하는 단점이 있다. 예로서, 도 6(a) 및 6(b)를 참조하면, LPN 7 ~ LPN 9에 대한 데이터에 대하여 불필요한 압축 처리를 수행한 결과가 발생되며, 이러한 불필요한 압축 처리의 수행은 메모리 시스템(1000A)의 성능 저하 및 파워 소모를 증가시키는 결과를 초래한다.
도 5의 실시 예에 따른 단점을 개선하기 위하여, 본 발명의 다른 실시 예에서는 위에서 언급한 바와 같은 새로운 호스트 커맨드를 도입하였다. 그리고, RAM(130)의 저장 영역 중의 일부를 압축 기능 또는 암호화 기능을 지원하도록 할당하였다.
본 발명에서 제안하는 새로운 호스트 커맨드에 따른 메모리 시스템에서의 데이터 압축 처리 방식에 대하여 도 7을 참조하여 설명하기로 한다.
도 7은 본 발명의 다른 실시 예에 따른 신규 호스트 커맨드에 따라서 메모리 시스템에 내장된 압축 엔진을 이용하여 데이터를 압축 처리하여 라이트 동작을 수행하는 과정을 설명하기 위한 주요 신호 처리 흐름을 보여주는 도면이다.
도 7을 참조하면, 메모리 시스템(1000B)은 메모리 컨트롤러(100B) 및 NVM(200)를 포함한다. 그리고, 메모리 컨트롤러(100B)는 프로세서(110B), 압축 엔진(121A) 및 RAM(130A)를 포함한다.
호스트 시스템(2000B)은 제1타입의 호스트 커맨드와 제2호스트 커맨드를 생성시킬 수 있다. 예로서, 제1타입의 호스트 커맨드로서 COMP CMD와 제2호스트 커맨드로서 RAM FLUSH CMD에 의하여 메모리 시스템(1000B)에서 압축 처리를 수행하여 라이트하는 동작에 대하여 설명하기로 한다. 참고적으로, 도 7에서 COMP CMD와 RAM FLUSH CMD가 다른 신호선을 통하여 호스트 시스템(2000B)으로부터 메모리 시스템(1000B)으로 전송되는 것으로 표시되어 있으나, 동일한 신호선을 통하여 전송될 수 있다.
호스트 시스템(2000B)으로부터 COMP CMD와 함께 데이터 사이즈가 5개의 논리적 페이지 사이즈에 해당되는 호스트 데이터(Raw data)를 수신하면, 프로세서(110B)는 RAM(130A)의 압축 기능을 지원하는 제1어드레스 영역에 호스트 데이터(Raw data)를 저장한다. 그러면, 프로세서(110B)의 제어에 따라 압축 엔진(121A)은 제1어드레스 영역에 저장된 호스트 데이터를 압축 처리하고, 압축된 데이터(Com.data)를 RAM(130A)의 제2어드레스 영역에 저장한다.
프로세서(110B)는 인코딩 결과에 대한 정보를 생성시켜 호스트 시스템(2000B)으로 전송한다. 예로서, 인코딩 결과에 대한 정보는 RAM(130A)의 제2어드레스 영역에 저장된 압축 처리된 데이터에 대한 저장 위치 정보 및 사이즈 정보가 포함될 수 있다. 예로서, 압축 처리된 데이터에 대한 사이즈 정보는 3개의 논리적 페이지 사이즈에 해당될 수 있다.
그러면, 호스트 시스템(2000B)은 압축 처리된 데이터(Com.data)에 대한 저장 위치 정보 , 사이즈 정보 및 압축 처리된 데이터에 매핑시킬 논리적 어드레스 정보를 포함하는 RAM FLUSH CMD를 생성시켜 메모리 시스템(1000B)으로 전송한다. 예로서, 압축 처리된 데이터(Com.data)에 매핑시킬 논리적 어드레스 정보는 LPN 5, 6, 7의 3개 논리적 페이지 번호로 변환될 수 있다.
호스트 시스템(2000B)으로부터 RAM FLUSH CMD를 전송받으면, 메모리 시스템(1000B)의 프로세서(110B)는 RAM FLUSH CMD에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환시킨다. 그리고 나서, 프로세서(110B)는 RAM FLUSH CMD에 포함된 저장 위치 정보에 기초하여 RAM(130A)의 제2어드레스 영역에 저장된 압축 처리된 데이터(Com.data)를 위의 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하도록 메모리 시스템(1000B)을 제어한다.
예로서, 메모리 컨트롤러(100B)의 압축 엔진(121A)에서 압축된 데이터의 형태는 도 8(a)에 도시된 바와 같다. 도 8(a)에는 COMP CMD와 함께 전송된 5개 논리적 페이지 사이즈 크기의 호스트 데이터에 대한 압축 처리 결과를 Comp 1 ~ Comp 5로 표시하였다.
그리고, NVM(200)에 저장되는 데이터(com.data)는 도 8(b)와 같은 형태가 된다. 즉, 도 8(b)를 참조하면, NVM(200)에는 3개의 논리적 페이지 LPN 5~7의 데이터가 저장된다.
이에 따라서, 도 7에 따른 압축 처리 방식의 실시 예가 도 5에 따른 압축 처리 방식의 실시 예에 비하여 압축 효율이 향상된다는 사실을 알 수 있으며, 또한 논리적 어드레스를 물리적 어드레스로 변환 처리하는 과정이 단순해진다는 사실을 알 수 있다.
그러면, 본 발명의 실시 예에 따른 신규 호스트 커맨드에 따라서 메모리 시스템에서의 인코딩 처리 및 라이트 동작을 수행하는 동작에 대하여 도 9를 참조하여 설명하기로 한다.
도 9는 도 2에 도시된 데이터 처리 시스템(10000)에서의 본 발명의 실시 예에 따른 인코딩 및 라이트 동작을 수행하는 과정을 설명하기 위한 주요 신호 처리 과정을 보여주는 도면이다. 참고적으로, 도 9에서 제1타입의 호스트 커맨드와 제2호스트 커맨드가 다른 신호 선을 통하여 호스트 시스템(2000)으로부터 메모리 시스템(1000)으로 전송되는 것으로 표시되어 있으나, 동일한 신호 선을 통하여 전송될 수 있다.
호스트 시스템(2000)의 CPU(210)는 메모리 시스템(1000)에 저장할 호스트 데이터의 종류에 기초하여 제1타입의 호스트 커맨드를 생성시켜 메모리 시스템(1000)의 프로세서(110)로 전달한다(S10). 예로서, 제1타입의 호스트 커맨드는 메모리 시스템(1000)에서의 압축 기능 또는 암호화 기능 지원하도록 할당된 RAM(130)의 저장 영역에 호스트 데이터를 라이트하는 동작을 수행하는 커맨드이다. 예로서, 제1타입의 호스트 커맨드는 제1A 호스트 커맨드(COMP CMD), 제1B 호스트 커맨드(ENCR CMD) 또는, 제1C 호스트 커맨드(COMP/ENCR CMD)가 될 수 있다.
제1타입의 호스트 커맨드를 메모리 시스템(1000)으로 전송한 후에, 호스트 시스템(2000)은 제1타입의 호스트 커맨드에 의하여 처리될 호스트 데이터(Raw data)를 RAM(220)으로부터 읽어내어 메모리 시스템(1000)으로 전송한다(S20). 그러면, 메모리 시스템(1000)의 프로세서(110)는 호스트 데이터(Raw data)를 제1타입의 호스트 커맨드에 따라서 압축 기능 또는/ 및 암호화 기능을 지원하도록 할당된 RAM(130)의 제1어드레스 영역에 저장한다.
도 3a ~ 3c에서 설명한 바와 같이, RAM(130)은 RAM(130A)~ RAM(130C)와 같이 저장 공간이 할당될 수 있다.
예로서, 제1A 호스트 커맨드(COMP CMD)가 수신된 경우에, 프로세서(110)는 호스트 데이터를 RAM(130A)의 제1어드레스 영역 또는 RAM(130B)의 제1A 어드레스 영역 또는 RAM(130C)의 제1A 어드레스 영역에 저장한다.
다른 예로서, 제1B 호스트 커맨드(ENCR CMD)가 수신된 경우에, 프로세서(110)는 호스트 데이터를 RAM(130A)의 제1어드레스 영역 또는 RAM(130B)의 제1B 어드레스 영역 또는 RAM(130C)의 제1B 어드레스 영역에 저장한다.
또 다른 예로서, 제1C 호스트 커맨드(COMP/ENCR CMD)가 수신된 경우에, 프로세서(110)는 호스트 데이터를 RAM(130C)의 제1C 어드레스 영역에 저장한다.
다음으로, 인코더(120)는 RAM(130)의 제1어드레스 영역에 저장된 데이터를 인코딩 처리하여 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행한다(S30). 즉, 프로세서(110)의 제어에 따라서 인코더(120)는 RAM(130)의 제1어드레스 영역으로부터 읽어낸 데이터를 인코딩 처리한 후에 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행할 수 있다.
도 4a ~ 4e에서 설명한 바와 같이, 인코더(120)는 다양한 형태의 인코더들(120A ~ 120H) 중의 하나의 인코더가 적용될 수 있다.
예로서, RAM(130A)의 제1어드레스 영역이 압축 기능을 지원하도록 할당된 경우에, 프로세서(110)의 제어에 따라서 RAM(130A)의 제1어드레스 영역에 저장된 호스트 데이터는 인코더(120A, 120C 또는 120G)의 압축 엔진(121A, 121B 또는 121C) 또는 인코더(120D)의 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들 중의 하나의 압축 엔진 또는 인코더(120E 또는 120H)의 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중의 하나의 압축 엔진에 의하여 압축 처리되어 RAM(130A)의 제2어드레스 영역에 저장된다. 인코더(120)에 복수의 압축 엔진들이 포함되어 있는 경우에는, 프로세서(110)의 제어에 따라서 제1A 호스트 커맨드(COMP CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 압축 엔진 지정 정보에 기초하여 하나의 압축 엔진이 선택된다.
다른 예로서, RAM(130A)의 제1어드레스 영역이 암호화 기능을 지원하도록 할당된 경우에, 프로세서(110)의 제어에 따라서 RAM(130A)의 제1어드레스 영역에 저장된 호스트 데이터는 인코더(120B, 120C 또는 120E)의 암호화 엔진(122A, 122B 또는 122C) 또는 인코더(120F)의 복수의 암호화 엔진 1~M(122A-1 ~ 122A-M)들 중의 하나의 암호화 엔진 또는 인코더(120G 또는 120H)의 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중의 하나의 암호화 엔진에 의하여 암호화 처리되어 RAM(130A)의 제2어드레스 영역에 저장된다. 인코더(120)에 복수의 암호화 엔진들이 포함되어 있는 경우에는, 프로세서(110)의 제어에 따라서 제1B 호스트 커맨드(ENCR CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 포함된 암호화 엔진 지정 정보에 기초하여 하나의 암호화 엔진이 선택된다.
또 다른 예로서, RAM(130B)의 제1A 어드레스 영역에 저장된 호스트 데이터는 프로세서(110)의 제어에 따라서 인코더(120A, 120C 또는 120G)의 압축 엔진(121A, 121B 또는 121C) 또는 인코더(120D)의 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들 중의 하나의 압축 엔진 또는 인코더(120E 또는 120H)의 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중의 하나의 압축 엔진에 의하여 압축 처리되어 RAM(130B)의 제2어드레스 영역에 저장된다.
또 다른 예로서, 프로세서(110)의 제어에 따라서 RAM(130B)의 제1B 어드레스 영역에 저장된 호스트 데이터는 인코더(120B, 120C 또는 120E)의 암호화 엔진(122A, 122B 또는 122C) 또는 인코더(120F)의 복수의 암호화 엔진 1~M(122A-1 ~ 122A-M)들 중의 하나의 암호화 엔진 또는 인코더(120G 또는 120H)의 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중의 하나의 암호화 엔진에 의하여 암호화 처리되어 RAM(130B)의 제2어드레스 영역에 저장된다.
또 다른 예로서, 프로세서(110)의 제어에 따라서 RAM(130C)의 제1C 어드레스 영역에 저장된 호스트 데이터는 인코더(120A, 120C 또는 120G)의 압축 엔진(121A, 121B 또는 121C) 또는 인코더(120D)의 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들 중의 하나의 압축 엔진 또는 인코더(120E 또는 120H)의 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중의 하나의 압축 엔진에 의하여 압축 처리되어 RAM(130C)의 제1B 어드레스 영역에 저장된다.
또 다른 예로서, 프로세서(110)의 제어에 따라서 RAM(130C)의 제1A 어드레스 영역에 저장된 호스트 데이터는 인코더(120A, 120C 또는 120G)의 압축 엔진(121A, 121B 또는 121C) 또는 인코더(120D)의 복수의 압축 엔진 1~N(121A-1 ~ 121A-N)들 중의 하나의 압축 엔진 또는 인코더(120E 또는 120H)의 복수의 압축 엔진 1~N(121B-1 ~ 121B-N)들 중의 하나의 압축 엔진에 의하여 압축 처리되어 RAM(130C)의 제2어드레스 영역에 저장된다.
또 다른 예로서, 프로세서(110)의 제어에 따라서 RAM(130C)의 제1B 어드레스 영역에 저장된 호스트 데이터는 인코더(120B, 120C 또는 120E)의 암호화 엔진(122A, 122B 또는 122C) 또는 인코더(120F)의 복수의 암호화 엔진 1~M(122A-1 ~ 122A-M)들 중의 하나의 암호화 엔진 또는 인코더(120G 또는 120H)의 복수의 암호화 엔진 1~M(122B-1 ~ 122B-M)들 중의 하나의 암호화 엔진에 의하여 암호화 처리되어 RAM(130C)의 제2어드레스 영역에 저장된다.
이와 같이, 인코더(120)에서 인코딩 처리된 데이터(Enc.data)는 RAM(130)의 제2어드레스 영역에 저장된다.
제1타입의 호스트 커맨드에 따라서 메모리 시스템(1000)에서 호스트 데이터에 대한 인코딩 처리 후에, 프로세서(110)는 인코딩 결과에 대한 정보를 생성시켜 호스트 시스템(2000)의 CPU(210)로 전송한다(S40).
예로서, 메모리 시스템(1000)에서 제1A 호스트 커맨드(COMP CMD), 제1B 호스트 커맨드(ENCR CMD) 또는 제1C 호스트 커맨드(COMP/ENCR CMD)에 따른 인코딩 처리를 수행한 경우에, 프로세서(110)는 RAM(130)의 제2어드레스에 저장되는 인코딩 처리된 데이터(Enc.data)에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킬 수 있다.
다른 예로서, 메모리 시스템(1000)에서 제1A 호스트 커맨드(COMP CMD)에 따른 인코딩 처리를 수행한 경우에, 프로세서(110)는 RAM(130)의 제1어드레스 영역에 저장된 호스트 데이터(Raw data) 또는 RAM(130)의 제2어드레스 영역에 저장된 인코딩 처리된 데이터(Enc.data) 중의 적어도 하나의 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킬 수 있다.
또 다른 예로서, 메모리 시스템(1000)에서 제1A 호스트 커맨드(COMP CMD)에 따른 인코딩 처리를 수행한 경우에, 프로세서(110)는 RAM(130)의 제1어드레스 영역에 저장된 호스트 데이터(Raw data) 또는 RAM(130)의 제2어드레스 영역에 저장된 인코딩 처리된 데이터(Enc.data) 중에서 인코딩 처리에 따른 압축률에 기초하여 타깃 데이터를 결정한다. 예로서, 압축률이 제1임계값 이상이면 인코딩 처리된 데이터(Enc.data)를 타깃 데이터로 결정하고, 그렇지 않으면 호스트 데이터(Raw data)를 타깃 데이터로 결정한다. 그리고 나서, 프로세서(110)는 결정된 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킬 수 있다.
호스트 시스템(2000)의 CPU(210)는 수신된 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)의 프로세서(110)로 전송한다(S50).
예로서, CPU(210)는 인코딩 결과에 대한 정보에 기초하여 인코딩 처리된 데이터(Enc.data)에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보 및 인코딩 처리된 데이터(Enc.data)에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시킨다.
다른 예로서, CPU(210)는 인코딩 결과에 대한 정보에 기초하여 타깃 데이터에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보 및 타깃 데이터에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시킨다. 여기에서, 타깃 데이터는 인코딩 처리된 데이터(Enc.data) 또는 호스트 데이터(Raw data) 중에서 선택된 하나의 데이터를 의미한다.
또 다른 예로서, CPU(210)는 인코딩 결과에 대한 정보에 기초하여 압축률을 연산하고, 연산된 압축률이 제1임계값 이상인 경우에 인코딩 처리된 데이터(Enc.data)에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보 및 인코딩 처리된 데이터(Enc.data)에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시킨다. 연산된 압축률이 제1임계값 미만인 경우에, CPU(210)는 호스트 데이터(Raw data)에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보 및 호스트 데이터(Raw data)에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시킨다.
메모리 시스템(1000)의 프로세서(110)는 수신되는 제2호스트 커맨드(RAM FLUSH CMD)에 기초하여 RAM(130)에 저장된 인코딩 처리된 데이터(Enc.data) 또는 호스트 데이터(Raw data)를 NVM(200)에 라이트하는 동작을 수행한다(S60). 세부적으로, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보를 변환시킨다. 그리고, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 RAM(130)의 저장 위치 정보를 이용하여 RAM(130)으로부터 인코딩 처리된 데이터(Enc.data) 또는 호스트 데이터(Raw data)를 읽어내어 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다. 도 9에서는 설명의 편의를 위하여 인코딩 처리된 데이터(Enc.data) 또는 호스트 데이터(Raw data)가 다른 신호 선을 통하여 NVM(200)으로 전송되는 것으로 표시되어 있으나, 동일한 신호 선을 통하여 전송될 수 있다.
그러면, 본 발명에서 제안하는 새로운 호스트 커맨드들 각각에 따른 인코딩 처리 및 라이트 동작에 설명하기로 한다.
도 10은 본 발명의 일 실시 예에 따른 데이터 압축 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 10은 제1A 호스트 커맨드(COMP CMD) 및 제2호스트 커맨드(RAM FLUSH CMD)를 이용한 압축 처리 및 라이트 동작을 수행하는 과정을 보여준다. 도 10에서 RAM(130)은 도 3a ~ 3c에 도시된 RAM(130A), RAM(130B) 또는 RAM(130C) 중의 하나가 적용될 수 있다. 그리고, 압축 엔진(121)은 도 4a, 4c ~ 4e에 도시된 압축 엔진(121A), 압축 엔진(121B), 압축 엔진 1~N(121A-1 ~121A-N) 또는 압축 엔진 1~N(121B-1 ~121B-N) 중의 하나가 적용될 수 있다.
호스트 시스템(2000)에서 압축 처리 기능이 지원 가능한 라이트 동작 요구가 발생되는 경우에, 호스트 시스템(2000)은 제1A 호스트 커맨드(COMP CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 제1A 호스트 커맨드(COMP CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(1))를 호스트 시스템(2000)으로 전송한다.
그리고 나서, 메모리 시스템(1000)은 호스트 데이터를 수신할 준비를 마친 후에, 이를 알리는 정보(DSU)를 호스트 시스템(2000)으로 전송한다. 호스트 시스템(2000)은 데이터 수신 준비 완료를 알리는 정보(DSU)를 수신하면, 호스트 시스템(2000)은 호스트 데이터를 메모리 시스템(1000)으로 전송한다.
이와 같은 과정을 통하여 호스트 시스템(2000)으로부터 메모리 시스템(1000)으로 오리지널 데이터가 전송되고, 프로세서(110)는 전송된 오리지널 데이터(Raw data)를 메모리 시스템(1000)에서의 RAM(130)의 압축 기능을 지원하는 제1어드레스 영역에 저장하는 동작을 수행한다(S1A).
프로세서(110)의 제어에 따라 압축 엔진(121)은 RAM(130)의 압축 기능을 지원하는 제1어드레스 영역에 저장된 오리지널 데이터(Raw data)를 읽어내어 압축 처리하고, 압축 처리된 데이터(Com.data)를 RAM(130)의 제2어드레스 영역에 저장한다(S2A). 그리고 나서, 프로세서(110)는 압축 처리된 데이터(Com.data)가 저장된 RAM(130)의 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킨다.
다음으로, 메모리 시스템(1000)은 인코딩 결과에 대한 정보를 호스트 시스템(2000)으로 전송한다. 예로서, 인코딩 결과에 대한 정보는 SDB(Set Device Bit) 메시지로 전송될 수 있다.
호스트 시스템(2000)은 수신된 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드(RAM FLUSH CMD)를 메모리 시스템(1000)으로 전송한다. 예로서, 호스트 시스템(2000)은 수신된 인코딩 결과에 대한 정보에 기초하여 압축 처리된 데이터(Com.data)에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보 및 압축 처리된 데이터(Com.data)에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)으로 전송할 수 있다.
메모리 시스템(1000)에서 제2호스트 커맨드(RAM FLUSH CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(2))를 호스트 시스템(2000)으로 전송한다.
메모리 시스템(1000)의 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 기초하여 RAM(130)의 제2어드레스 영역에 저장된 압축 처리된 데이터(Com.data)를 NVM(200)에 라이트하는 동작을 수행한다(S3A). 세부적으로, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보를 변환시킨다. 그리고, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 RAM(130)의 저장 위치 정보를 이용하여 RAM(130)으로부터 압축 처리된 데이터(Com.data)를 읽어내고, 읽어낸 데이터(Com.data)를 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 압축 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 11은 제1A 호스트 커맨드(COMP CMD) 및 제2호스트 커맨드(RAM FLUSH CMD)를 이용한 압축 처리 및 라이트 동작을 수행하는 과정을 보여준다. 도 10에서 RAM(130)은 도 3a ~ 3c에 도시된 RAM(130A), RAM(130B) 또는 RAM(130C) 중의 하나가 적용될 수 있다. 그리고, 압축 엔진(121)은 도 4a, 4c ~ 4e, 4g 또는 4h에 도시된 압축 엔진(121A, 121B 또는 121C), 압축 엔진 1~N(121A-1 ~121A-N) 또는 압축 엔진 1~N(121B-1 ~121B-N) 중의 하나가 적용될 수 있다.
호스트 시스템(2000)에서 압축 처리 기능이 지원 가능한 라이트 동작 요구가 발생되는 경우에, 호스트 시스템(2000)은 제1A 호스트 커맨드(COMP CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 제1A 호스트 커맨드(COMP CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(1))를 호스트 시스템(2000)으로 전송한다.
그리고 나서, 메모리 시스템(1000)은 호스트 데이터를 수신할 준비를 마친 후에, 이를 알리는 정보(DSU)를 호스트 시스템(2000)으로 전송한다. 호스트 시스템(2000)은 데이터 수신 준비 완료를 알리는 정보(DSU)를 수신하면, 호스트 시스템(2000)은 호스트 데이터를 메모리 시스템(1000)으로 전송한다.
이와 같은 과정을 통하여 호스트 시스템(2000)으로부터 메모리 시스템(1000)으로 호스트 데이터가 전송되고, 프로세서(110)는 전송된 오리지널 데이터(Raw data)를 메모리 시스템(1000)에서의 RAM(130)의 압축 기능을 지원하는 제1어드레스 영역에 저장하는 동작을 수행한다(S1A').
프로세서(110)의 제어에 따라 압축 엔진(121)은 RAM(130)의 압축 기능을 지원하는 제1어드레스 영역에 저장된 오리지널 데이터(Raw data)를 읽어내어 압축 처리하고, 압축 처리된 데이터(Com.data)를 RAM(130)의 제2어드레스 영역에 저장한다(S2A').
그리고 나서, 예로서 프로세서(110)는 RAM(130)의 제1어드레스 영역에 저장된 오리지널 데이터(Raw data) 또는 RAM(130)의 제2어드레스 영역에 저장된 압축 처리된 데이터(Enc.data) 중의 적어도 하나의 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킬 수 있다.
다른 예로서, 프로세서(110)는 RAM(130)의 제1어드레스 영역에 저장된 오리지널 데이터(Raw data) 또는 RAM(130)의 제2어드레스 영역에 저장된 압축 처리된 데이터(Com.data) 중에서 압축 처리에 따른 압축률에 기초하여 타깃 데이터를 결정한다. 예로서, 압축률이 제1임계값 이상이면 압축 처리된 데이터(Com.data)를 타깃 데이터로 결정하고, 그렇지 않으면 오리지널 데이터(Raw data)를 타깃 데이터로 결정한다. 그리고 나서, 프로세서(110)는 결정된 타깃 데이터에 대한 RAM(130)의 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킬 수 있다.
다음으로, 메모리 시스템(1000)은 인코딩 결과에 대한 정보를 호스트 시스템(2000)으로 전송한다. 예로서, 인코딩 결과에 대한 정보는 SDB(Set Device Bit) 메시지로 전송될 수 있다.
호스트 시스템(2000)은 수신된 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드(RAM FLUSH CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 제2호스트 커맨드(RAM FLUSH CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(2))를 호스트 시스템(2000)으로 전송한다.
예로서, 메모리 시스템(1000)으로부터 오리지널 데이터(Raw data)와 압축 처리된 데이터(Com.data) 각각에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보가 수신되는 경우에, 호스트 시스템(2000)은 호스트 데이터(Raw data)에 대한 압축 처리된 데이터(Enc.data)의 압축률을 연산한다. 호스트 시스템(2000)은 연산된 압축률이 제1임계값 이상인 경우에 압축 처리된 데이터(Com.data)를 타깃 데이터로 결정하고, 그렇지 않은 경우에는 오리지널 데이터(Raw data)를 타깃 데이터로 결정한다. 그리고 나서, 호스트 시스템(2000)은 결정된 타깃 데이터에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보와 타깃 데이터에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)으로 전송한다.
다른 예로서, 메모리 시스템(1000)에서 압축률에 따라서 결정된 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보가 수신되는 경우에, 호스트 시스템(2000)은 타깃 데이터에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보와 타깃 데이터에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)으로 전송한다.
메모리 시스템(1000)으로 제2호스트 커맨드(RAM FLUSH CMD)가 전송되면, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 기초하여 RAM(130)의 제1어드레스 영역에 저장된 오리지널 데이터(Raw data) 또는 RAM(130)의 제2어드레스 영역에 저장된 압축 처리된 데이터(Com.data) 중의 하나를 NVM(200)에 라이트하는 동작을 수행한다(S3A'). 세부적으로, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보를 변환시킨다. 그리고, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 타깃 데이터에 대한 RAM(130)의 저장 위치 정보를 이용하여 RAM(130)으로부터 오리지널 데이터(Raw data) 또는 압축 처리된 데이터(Com.data)를 읽어내고, 읽어낸 데이터를 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다.
도 12는 본 발명의 또 다른 실시 예에 따른 데이터 암호화 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 12는 제1B 호스트 커맨드(ENCR CMD) 및 제2호스트 커맨드(RAM FLUSH CMD)를 이용한 암호화 처리 및 라이트 동작을 수행하는 과정을 보여준다. 도 10에서 RAM(130)은 도 3a ~ 3c에 도시된 RAM(130A), RAM(130B) 또는 RAM(130C) 중의 하나가 적용될 수 있다. 그리고, 암호화 엔진(122)은 도 4b, 4c, 4e, 4f, 4g 또는 4h에 도시된 암호화 엔진(122A, 122B 또는 122C), 암호화 엔진 1~M(122A-1 ~122A-M) 또는 암호화 엔진 1~M(122B-1 ~122B-M) 중의 하나가 적용될 수 있다.
호스트 시스템(2000)에서 암호화 처리 기능을 지원하는 라이트 동작 요구가 발생되는 경우에, 호스트 시스템(2000)은 제1B 호스트 커맨드(ENCR CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 제1B 호스트 커맨드(ENCR CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(1))를 호스트 시스템(2000)으로 전송한다.
그리고 나서, 메모리 시스템(1000)은 호스트 데이터를 수신할 준비를 마친 후에, 이를 알리는 정보(DSU)를 호스트 시스템(2000)으로 전송한다. 호스트 시스템(2000)은 데이터 수신 준비 완료를 알리는 정보(DSU)를 전송받으면, 호스트 시스템(2000)은 호스트 데이터를 메모리 시스템(1000)으로 전송한다.
이와 같은 과정을 통하여 호스트 시스템(2000)으로부터 메모리 시스템(1000)으로 오리지널 데이터가 전송되고, 프로세서(110)는 전송된 오리지널 데이터(Raw data)를 메모리 시스템(1000)에서의 RAM(130)의 암호화 기능을 지원하는 제1어드레스 영역에 저장하는 동작을 수행한다(S1B).
프로세서(110)의 제어에 따라 암호화 엔진(122)은 RAM(130)의 암호화 기능을 지원하는 제1어드레스 영역에 저장된 오리지널 데이터(Raw data)를 읽어내어 암호화 처리하고, 암호화 처리된 데이터(Encr.data)를 RAM(130)의 제2어드레스 영역에 저장한다(S2B). 그리고 나서, 프로세서(110)는 암호화 처리된 데이터(Encr.data)가 저장된 RAM(130)의 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킨다.
다음으로, 메모리 시스템(1000)은 인코딩 결과에 대한 정보를 호스트 시스템(2000)으로 전송한다. 예로서, 인코딩 결과에 대한 정보는 SDB(Set Device Bit) 메시지로 전송될 수 있다.
호스트 시스템(2000)은 수신된 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드(RAM FLUSH CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 제2호스트 커맨드(RAM FLUSH CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(2))를 호스트 시스템(2000)으로 전송한다.
예로서, 호스트 시스템(2000)은 수신된 인코딩 결과에 대한 정보에 기초하여 암호화 처리된 데이터(Encr.data)에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보 및 암호화 처리된 데이터(Encr.data)에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)으로 전송할 수 있다.
메모리 시스템(1000)으로 제2호스트 커맨드(RAM FLUSH CMD)가 전송되면, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 기초하여 RAM(130)의 제2어드레스 영역에 저장된 암호화 처리된 데이터(Encr.data)를 NVM(200)에 라이트하는 동작을 수행한다(S3B). 세부적으로, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보를 변환시킨다. 그리고, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 RAM(130)의 저장 위치 정보를 이용하여 RAM(130)으로부터 암호화 처리된 데이터(Encr.data)를 읽어내고, 읽어낸 데이터(Encr.data)를 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 압축/암호화 처리 및 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
도 13은 제1C 호스트 커맨드(COMP/ENCR CMD) 및 제2호스트 커맨드(RAM FLUSH CMD)를 이용한 압축/암호화 처리 및 라이트 동작을 수행하는 과정을 보여준다. 도 10에서 RAM(130)은 도 3c에 도시된 RAM(130C)가 적용될 수 있다. 압축 엔진(121)은 도 4a, 4c ~ 4e, 4g 또는 4h에 도시된 압축 엔진(121A, 121B 또는 121C), 압축 엔진 1~N(121A-1 ~121A-N) 또는 압축 엔진 1~N(121B-1 ~121B-N) 중의 하나가 적용될 수 있다. 그리고, 암호화 엔진(122)은 도 4b, 4c, 4e, 4f, 4g 또는 4h에 도시된 암호화 엔진(122A, 122B 또는 122C), 암호화 엔진 1~M(122A-1 ~122A-M) 또는 암호화 엔진 1~M(122B-1 ~122B-M) 중의 하나가 적용될 수 있다.
호스트 시스템(2000)에서 압축 처리 및 암호화 기능을 지원하는 라이트 동작 요구가 발생되는 경우에, 호스트 시스템(2000)은 제1C 호스트 커맨드(COMP/ENCR CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 제1C 호스트 커맨드(COMP/ENCR CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(1))를 호스트 시스템(2000)으로 전송한다.
그리고 나서, 메모리 시스템(1000)은 호스트 데이터를 수신할 준비를 마친 후에, 이를 알리는 정보(DSU)를 호스트 시스템(2000)으로 전송한다. 호스트 시스템(2000)은 데이터 수신 준비 완료를 알리는 정보(DSU)를 전송받으면, 호스트 시스템(2000)은 호스트 데이터를 메모리 시스템(1000)으로 전송한다.
이와 같은 과정을 통하여 호스트 시스템(2000)으로부터 메모리 시스템(1000)으로 호스트 데이터인 오리지널 데이터가 전송되고, 프로세서(110)는 전송된 오리지널 데이터(Raw data)를 메모리 시스템(1000)에서의 RAM(130)의 압축 및 암호화 기능을 지원하는 제1어드레스 영역에 저장하는 동작을 수행한다(S1C). 예로서, 오리지널 데이터(Raw data)는 RAM(130C)의 제1C 어드레스 영역에 저장된다.
프로세서(110)의 제어에 따라 압축 엔진(121) 및 암호화 엔진(122)을 이용하여 제1어드레스 영역에 저장된 오리지널 데이터(Raw data)에 대하여 압축 처리 및 암호화 처리를 순차적으로 수행한 후에, 압축 및 암호화 처리된 데이터를 RAM(130)의 제2어드레스 영역에 저장한다(S2C).
세부적으로, 프로세서(110)의 제어에 따라 압축 엔진(121)은 RAM(130)의 압축 및 암호화 기능을 지원하는 제1어드레스 영역에 저장된 호스트 데이터(Raw data)를 읽어내어 압축 처리하고, 압축 처리된 데이터(Com.data)를 RAM(130)의 암호화 기능을 지원하는 제1어드레스 영역에 저장한다. 예로서, 압축 처리된 데이터(Com.data)는 RAM(130C)의 암호화 기능을 지원하는 제1B 어드레스 영역에 저장된다. 그리고 나서, 프로세서(110)의 제어에 따라 암호화 엔진(122)은 RAM(130)의 암호화 기능을 지원하는 제1B 어드레스 영역에 저장된 압축 처리된 데이터(Com.data)를 읽어내어 암호화 처리하고, 압축 및 암호화 처리된 데이터(Com/Encr.data)를 RAM(130)의 제2어드레스 영역에 저장한다(S3C). 그리고 나서, 프로세서(110)는 압축 및 암호화 처리된 데이터(Com/Encr.data)가 저장된 RAM(130)의 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킨다.
그리고 나서, 프로세서(110)는 압축 및 암호화 처리된 데이터(Com/Encr.data)가 저장된 RAM(130)의 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시킨다.
다음으로, 메모리 시스템(1000)은 인코딩 결과에 대한 정보를 호스트 시스템(2000)으로 전송한다. 예로서, 인코딩 결과에 대한 정보는 SDB(Set Device Bit) 메시지로 전송될 수 있다.
호스트 시스템(2000)은 수신된 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드(RAM FLUSH CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 제2호스트 커맨드(RAM FLUSH CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H(2))를 호스트 시스템(2000)으로 전송한다. 예로서, 호스트 시스템(2000)은 수신된 인코딩 결과에 대한 정보에 기초하여 압축 및 암호화 처리된 데이터(Com/Encr.data)에 대한 RAM(130)의 저장 위치 정보, 사이즈 정보 및, 압축 및 암호화 처리된 데이터(Com/Encr.data)에 매핑시킬 논리적 어드레스 정보를 포함하는 제2호스트 커맨드(RAM FLUSH CMD)를 생성시켜 메모리 시스템(1000)으로 전송할 수 있다.
메모리 시스템(1000)으로 제2호스트 커맨드(RAM FLUSH CMD)가 전송되면, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 기초하여 RAM(130)의 제2어드레스 영역에 저장된 압축 및 암호화 처리된 데이터(Com/Encr.data)를 NVM(200)에 라이트하는 동작을 수행한다(S3C). 세부적으로, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보를 변환시킨다. 그리고, 프로세서(110)는 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 RAM(130)의 저장 위치 정보를 이용하여 RAM(130)으로부터 압축 및 암호화 처리된 데이터(Com/Encr.data)를 읽어내고, 읽어낸 데이터(Com/Encr.data)를 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다.
다음으로, 본 발명의 또 다른 실시 예에 따른 압축 처리를 수반하지 않는 라이트 동작에 대하여 설명하기로 한다.
도 14는 본 발명의 또 다른 실시 예에 따른 압축 처리를 수반하지 않는 라이트 동작을 설명하기 위한 흐름도 및 주요 신호 처리 과정을 보여주는 개념도이다.
예로서, 호스트 시스템(2000)은 압축 처리 기능이 지원 가능한 라이트 동작을 수행할 호스트 데이터에 대한 예상 압축률이 제2임계값 미만으로 분류되는 경우에, 제1A 호스트 커맨드(COMP CMD) 대신에 라이트 커맨드(WRITE CMD)를 생성시킨다. 라이트 커맨드(WRITE CMD)에는 라이트할 호스트 데이터에 매핑시킬 논리적 어드레스 정보와 사이즈 정보가 포함된다.
도 14는 라이트 커맨드(WRITE CMD)를 이용한 라이트 동작을 수행하는 과정을 보여준다. 도 14에서 RAM(130)은 도 3a ~ 3c에 도시된 RAM(130A), RAM(130B) 또는 RAM(130C) 중의 하나가 적용될 수 있다. 그리고, 인코더(120)는 도 4a ~ 4h에 도시된 인코더들(120A~120H) 중에서 하나가 적용될 수 있다.
호스트 시스템(2000)에서 압축 처리 기능이 지원 가능한 라이트 동작 요구에 따라서 라이트 커맨드(WRITE CMD)가 생성되는 경우에, 호스트 시스템(2000)은 라이트 커맨드(WRITE CMD)를 메모리 시스템(1000)으로 전송한다. 메모리 시스템(1000)에서 라이트 커맨드(WRITE CMD)를 정상적으로 수신한 경우에 메모리 시스템(1000)은 응답 정보(M2H)를 호스트 시스템(2000)으로 전송한다.
그리고 나서, 메모리 시스템(1000)은 호스트 데이터를 수신할 준비를 마친 후에, 이를 알리는 정보(DSU)를 호스트 시스템(2000)으로 전송한다. 호스트 시스템(2000)은 데이터 수신 준비 완료를 알리는 정보(DSU)를 전송받으면, 호스트 시스템(2000)은 호스트 데이터를 메모리 시스템(1000)으로 전송한다.
이와 같은 과정을 통하여 호스트 시스템(2000)으로부터 메모리 시스템(1000)으로 호스트 데이터인 오리지널 데이터가 전송되고, 프로세서(110)는 전송된 오리지널 데이터(Raw data)를 메모리 시스템(1000)에서의 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행한다(S1D).
메모리 시스템(1000)의 프로세서(110)는 라이트 커맨드(WRITE CMD)에 기초하여 RAM(130)의 제2어드레스 영역에 저장된 호스트 데이터(Raw data)를 NVM(200)에 라이트하는 동작을 수행한다(S2D). 세부적으로, 프로세서(110)는 라이트 커맨드(WRITE CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보를 변환시킨다. 그리고, 프로세서(110)는 RAM(130)의 제2어드레스 영역에 저장된 호스트 데이터(Raw data)를 읽어내어 변환된 물리적 어드레스 정보에 상응하는 NVM(200)의 저장 위치에 라이트하는 동작을 수행한다.
메모리 시스템(1000)은 라이트 커맨드(WRITE CMD)에 따른 라이트 동작을 정상적으로 마치면, 이를 알리는 응답 정보를 SDB(Set Device Bit) 메시지로서 호스트 시스템(2000)으로 전송한다.
도 15는 본 발명의 또 다른 실시 예에 따른 메모리 시스템(1000C)의 구성도이다.
도 15에 도시된 바와 같이, 메모리 시스템(1000C)은 메모리 컨트롤러(100C) 및 비휘발성 메모리 장치(200)를 포함한다. 예로서, 메모리 시스템(1000C)으로 SSD(Solid State Drive)를 구현할 수 있다. SSD는 솔리드 스테이트 디스크(Solid State Disc)라고 칭해지기도 한다.
비휘발성 메모리 장치(200)는 플래시 메모리 디바이스, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등으로 구성될 수 있다. 예로서, 비휘발성 메모리 장치(200)는 단일의 플래시 칩으로 구성할 수 있다. 또한, 비휘발성 메모리 장치(200)는 복수의 플래시 메모리 칩들로 구성할 수도 있다.
메모리 컨트롤러(100C)는 프로세서(110), 인코더(120), RAM(130), 디코더(140), 호스트 인터페이스(150), 메모리 인터페이스(160) 및 버스(170)를 구비한다.
프로세서(110)는 버스(170)를 통하여 인코더(120), RAM(130), 디코더(140), 호스트 인터페이스(150) 및 메모리 인터페이스(160)와 전기적으로 접속된다.
버스(170)는 메모리 컨트롤러(100C)의 구성 수단들 간의 정보를 전송하는 기능을 수행한다.
프로세서(110)는 메모리 시스템(1000C)의 전반적인 동작을 제어한다. 세부적으로, 호스트 시스템으로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(1000C)을 제어한다.
프로세서(110)는 리드(read) 동작 시에는 리드 커맨드 및 어드레스를 비휘발성 메모리 장치(200)에 제공하고, 라이트(write) 동작 시에는 라이트 커맨드, 어드레스 및 데이터를 비휘발성 메모리 장치(200)에 제공한다. 그리고, 프로세서(110)는 메타 데이터를 이용하여 호스트로부터 수신되는 논리적 어드레스 정보를 물리적 어드레스 정보로 변환시키는 처리를 수행한다.
메타 데이터(meta data)는 비휘발성 메모리 장치(200)를 관리하기 위하여 메모리 시스템(1000C)에서 생성된 정보이다. 관리 정보인 메타 데이터에는 논리적 어드레스(Logical Address)를 비휘발성 메모리 장치(200)의 물리적 어드레스(Physical Address)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보가 포함되어 있다. 일 예로서, 메타 데이터에는 페이지 단위로 어드레스 매핑 처리를 수행하는데 필요한 페이지 매핑 테이블 정보가 포함될 수 있다. 또한, 메타 데이터에는 비휘발성 메모리 장치(200)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다.
RAM(130)에는 호스트 시스템으로부터 전송된 데이터 및 메모리 컨트롤러(100C)에서 처리된 데이터가 임시로 저장되거나 비휘발성 메모리 장치(200)로부터 읽어낸 데이터가 임시로 저장된다. 또한, RAM(130)에는 비휘발성 메모리 장치(200)로부터 읽어낸 메타 데이터도 저장될 수 있다. RAM(130)은 DRAM, SRAM 등으로 구현될 수 있다.
RAM(130)은 예로서, 도 3a ~ 3c에 도시된 바와 같이 저장 공간을 할당한 RAM(130A)~ RAM(130C)가 적용될 수 있다. 참고적으로, 비휘발성 메모리 장치(200)로부터 읽어낸 데이터는 RAM(130)의 제2어드레스 영역에 저장될 수 있다.
인코더(120)는 도 4a ~ 4h에 도시된 바와 같은 다양한 형태의 인코더(120A)~ 인코더(120H)가 적용될 수 있다.
디코더(140)는 비휘발성 메모리 장치(200)로부터 읽어낸 데이터에 대한 디코딩 처리를 수행한다. 예로서, 비휘발성 메모리 장치(200)로부터 읽어낸 데이터가 압축된 데이터인 경우에, 디코더(140)는 압축된 데이터를 압축 처리 이전의 오리지널 데이터로 복원시키는 처리를 수행한다. 그리고, 비휘발성 메모리 장치(200)로부터 읽어낸 데이터가 암호화된 데이터인 경우에, 디코더(140)는 암호화 처리 이전의 오리지널 데이터로 복원시키는 처리를 수행한다.
호스트 인터페이스(150)는 메모리 시스템(1000C)과 접속되는 호스트 시스템(2000)과의 데이터 교환 프로토콜을 구비하고 메모리 시스템(1000C)과 호스트 시스템(2000)을 상호 연결한다. 호스트 인터페이스(150)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(150)는 프로세서(110)의 제어에 따라서 호스트 시스템(2000)과 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(160)는 비휘발성 메모리 장치(200)와 전기적으로 연결되어 있다. 메모리 인터페이스(160)는 NAND 플래시 메모리 칩 또는 NOR 플래시 메모리 칩과의 인터페이스를 지원하도록 구성될 수 있다. 메모리 인터페이스(160)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
프로세서(110)는 메모리 시스템(1000C)에 전원이 공급되면 비휘발성 메모리 장치(200)에 저장되어 있는 메타 데이터를 읽어내어 RAM(130)에 저장하도록 메모리 시스템(1000C)을 제어한다. 프로세서(110)는 비휘발성 메모리 장치(200)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 RAM(130)에 저장된 메타 데이터를 업데이트 하도록 메모리 시스템(1000C)을 제어한다. 그리고, 프로세서(110)는 메모리 시스템(1000C)에서 파워 오프(POWER OFF) 되기 전에 RAM(130)에 저장되어 있는 메타 데이터를 비휘발성 메모리 장치(200)에 라이트하도록 메모리 시스템(1000C)을 제어한다.
호스트 인터페이스(150)를 통하여 제1타입의 호스트 커맨드가 프로세서(110)로 수신되는 경우에, 프로세서(110)는 제1타입의 호스트 커맨드에 따라서 호스트 인터페이스(150)를 통하여 수신되는 호스트 데이터를 RAM(130)의 제1어드레스 영역에 저장한다.
인코더(120)는 호스트 데이터가 저장된 RAM(130)의 제1어드레스 영역에 지정된 압축 처리 기능 또는 암호화 처리 기능에 기초하여 호스트 데이터를 압축 처리 또는/ 및 암호화 처리하여 RAM(130)의 제2어드레스 영역에 한다.
그리고 나서, 프로세서(110)는 인코딩 결과에 대한 정보를 생성시키고, 생성된 인코딩 결과에 대한 정보를 호스트 인터페이스(150)를 통하여 호스트 시스템(2000)으로 전송한다.
또한, 호스트 인터페이스(150)를 통하여 제2호스트 커맨드(RAM FLUSH CMD)가 프로세서(110)로 수신되는 경우에, 프로세서(110)는 RAM(130)에 저장된 인코딩 처리된 데이터(Enc.data) 또는 호스트 데이터(Raw data)를 메모리 인터페이스(160)를 통하여 비휘발성 메모리 장치(200)에 라이트하는 동작을 수행한다.
신규 호스트 커맨드인 제1타입의 호스트 커맨드 및 제2호스트 커맨드(RAM FLUSH CMD)에 따른 도 15에 도시된 메모리 컨트롤러(100C)의 프로세서(110), 인코더(120) 및 RAM(130)에서의 동작은 도 2 및 도 9 ~ 도 14에서 이미 상세히 설명하였으므로, 중복적인 설명은 피하기로 한다. 참고적으로, 도 2 및 도 9 ~ 도 14에서는 설명의 편의를 위하여 호스트 인터페이스(150) 및 메모리 인터페이스(160)의 구성을 생략하였다.
도 16은 도 15에 도시된 비휘발성 메모리 장치(200)를 복수개의 메모리 칩들로 구성하여 복수의 채널(channel) 및 웨이(way)를 형성하는 메모리 시스템의 구성도이다.
도 16과 같이 구성된 메모리 시스템(1000D)으로 SSD(Solid State Drive)를 구현할 수 있다.
도 16을 참조하면, 메모리 시스템(1000D)은 비휘발성 메모리 장치(200')를 복수개의 플래시 메모리 칩들(201, 203)로 구현한 예를 보여준다.
메모리 시스템(1000D)은 N(N은 자연수)개의 채널을 갖고, 채널별로 4개의 플래시 메모리 칩들로 구성되는 예를 보여준다. 물론, 채널별로 구성되는 플래시 메모리 칩들의 개수는 다양하게 설정될 수 있다.
도 16에 도시된 메모리 컨트롤러(100C)의 구성은 도 15에 도시된 메모리 컨트롤러(100C)의 구성과 실질적으로 동일하므로 중복된 설명은 피하기로 한다.
도 17은 도 16에 도시된 메모리 시스템(1000D)의 채널 및 웨이의 구조를 예시적으로 보여주는 도면이다.
각각의 채널(CH1 ~ CHN))에는 복수 개의 플래시 메모리 칩들(201, 202, 203)이 전기적으로 연결될 수 있다. 각각의 채널(CH1 ~ CHN)은 대응되는 플래시 메모리 칩들(201, 202, 203)로 커맨드, 어드레스 및 데이터를 송수신할 수 있는 독립적인 버스를 의미할 수 있다. 서로 다른 채널에 접속된 플래시 메모리 칩들은 각각 독립적으로 동작할 수 있다. 각각의 채널에 접속된 복수의 플래시 메모리 칩들(201, 202, 203)은 복수 개의 웨이(way1 ~ wayM)들을 형성할 수 있다. 각 채널에 형성된 M개의 웨이에는 M개의 플래시 메모리 칩들이 접속될 수 있다.
예를 들어, 참조번호 201의 플래시 메모리 칩들은 1번 채널(CH1)에서 M개의 웨이들(way1 ~ wayM)을 형성할 수 있다. 1번 채널(CH1)의 M개의 웨이들(way1 ~ wayM) 각각에는 플래시 메모리 칩(201-1 ~ 201-M)이 접속될 수 있다. 이와 같은 플래시 메모리 칩들과 각각의 채널과 웨이의 형성 관계는 참조 번호 202의 플래시 메모리 칩들 및 참조번호 203의 플래시 메모리 칩들에도 적용될 수 있다.
웨이는 동일한 채널을 공유하는 플래시 메모리 칩들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 플래시 메모리 칩들이 식별될 수 있다. 호스트로부터 제공된 리퀘스트(request)가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될 지는 호스트로부터 전달된 논리적 어드레스에 의해 정해질 수 있다.
도 18은 도 17의 비휘발성 메모리 장치(200')를 구성하는 하나의 플래시 메모리 칩(201-1)의 회로 구성을 예시적으로 보여주는 도면이다.
도 18에 도시된 바와 같이, 플래시 메모리 칩(201-1)은 셀 어레이(10), 페이지 버퍼(20), 제어 회로(30) 및 로우 디코더(40)를 포함할 수 있다.
셀 어레이(10)는 트랜지스터에 일정 전압을 인가하는 방식으로 데이터가 기입되는 영역이다. 셀 어레이(10)는 워드라인들(WL0~WLm-1) 및 비트라인들(BL0~BLn-1)이 교차한 곳에 형성된 메모리 셀들을 포함한다. 여기에서, m 및 n은 자연수이다. 도 4에서는 하나의 메모리 블록이 도시되어 있으나 셀 어레이(10)는 복수의 메모리 블록들을 포함할 수 있다. 각각의 메모리 블록들은 각 워드 라인들(WL0~WLm-1)에 대응되는 페이지들을 포함하고 있다. 그리고 페이지들 각각은 해당 워드라인에 연결된 복수의 메모리 셀들을 포함한다. 플래시 메모리 칩(201-1)은 블록 단위로 소거 동작을 수행하고, 페이지 단위로 프로그램 동작 혹은 읽기 동작을 수행한다.
메모리 셀 어레이(10)는 셀 스트링(cell string) 구조를 갖는다. 각각의 셀 스트링은 스트링 선택 라인(String Selection Line; SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WLO ~ WLm-1)에 각각 연결된 복수의 메모리 셀들(MC0 ~ MCm-1), 그리고 접지 라인(Ground Section Line; GSL)에 연결된 접지 선택 트랜지스터(GST)를 포함한다. 여기에서, 스트링 선택 트랜지스터(SST)는 비트라인과 스트링 채널 사이에 연결되고, 접지 선택 트랜지스터(GST)는 스트링 채널과 공통 소스 라인(Common Source Line; CSL) 사이에 연결된다.
페이지 버퍼(20)는 복수의 비트라인들(BL0~BLn-1)을 통해 셀 어레이(10)에 연결된다. 페이지 버퍼(20)는 선택된 워드라인에 연결된 메모리 셀들에 기입할 데이터를 임시로 저장하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 독출된 데이터를 임시로 저장한다.
제어 회로(30)는 프로그램(program) 또는 리드(read) 동작 그리고 소거 동작에 필요한 각종 전압들을 생성하고, 플래시 메모리 칩(201-1)의 제반 동작을 제어한다.
로우 디코더(40)는 선택 라인들(SSL, GSL) 및 복수의 워드라인들(WL0~WLm-1)을 통해 셀 어레이(10)에 연결된다. 로우 디코더(20)는 프로그램 동작 또는 리드 동작 시 어드레스를 입력받고, 입력된 어드레스에 따라 어느 하나의 워드라인을 선택한다. 여기에서 선택된 워드라인에는 프로그램 동작이 수행되거나 또는 리드 동작이 수행될 메모리 셀들이 연결되어 있다.
또한, 로우 디코더(40)는 선택된 워드라인, 비선택된 워드라인들, 그리고 선택 라인들(SSL, GSL)로 프로그램 동작 또는 리드 동작에 필요한 전압들(예를 들어, 프로그램 전압, 패스 전압, 읽기 전압, 스트링 선택 전압, 접지 선택 전압)을 인가한다.
각각의 메모리 셀은 한 비트의 데이터 혹은 2비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장하는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라고 불린다. 그리고, 하나의 메모리 셀에 2비트 이상의 데이터를 저장하는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라고 불린다. 싱글 레벨 셀은 문턱 전압에 따라 소거 상태(Erase State) 또는 프로그램 상태(Program State)를 갖는다.
도 19는 도 18에 도시된 메모리 셀 어레이(10)에 포함된 메모리 셀의 일 예를 보여주는 단면도이다.
도 19를 참조하면, 기판(SUB) 상에 소스(S) 및 드레인(D)이 형성되고, 소스(S)와 드레인(D)의 사이에는 채널 영역이 형성될 수 있다. 채널 영역의 상부에는 플로팅 게이트(FG)가 형성되는데, 채널 영역과 플로팅 게이트(FG)의 사이에는 터널링(tunneling) 절연층과 같은 절연층이 배치될 수 있다. 플로팅 게이트(FG)의 상부에는 컨트롤 게이트(CG)가 형성되는데, 플로팅 게이트(FG)와 컨트롤 게이트(CG)의 사이에는 블로킹(blocking) 절연층과 같은 절연층이 배치될 수 있다. 기판(SUB), 소스(S), 드레인(D) 및 컨트롤 게이트(CG)에는 메모리 셀(MCEL)에 대한 프로그램, 소거 및 독출 동작에 필요한 전압들이 인가될 수 있다.
플래시 메모리 장치에서는 메모리 셀(MCEL)의 문턱 전압(threshold voltage, Vth)의 구별에 의해 메모리 셀(MCEL)에 저장된 데이터가 독출될 수 있다. 이때, 메모리 셀(MCEL)의 문턱 전압(Vth)은 플로팅 게이트(FG)에 저장된 전자(electron)의 양에 따라 결정될 수 있다. 구체적으로, 플로팅 게이트(FG)에 저장된 전자가 많을수록 메모리 셀(MCEL)의 문턱 전압은 높아진다.
도 20은 플래시 메모리 칩의 내부 저장 구조를 보여주는 개념도이다.
도 20에 도시된 바와 같이, 플래시 메모리 칩(201-1)의 내부 구조는 복수의 블록들로 구성되고, 각 블록들은 복수의 페이지들로 이루어져 있다.
플래시 메모리 칩(201-1)에서 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다. 또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다.
덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 호스트로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 기입 또는 독출이 요청된 영역을 나타내는 논리적 어드레스를 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 영역을 나타내는 물리적 어드레스로 변환시키는 어드레스 변환 동작이 필요하다.
메모리 시스템(1000A ~ 1000D)에서 논리적 어드레스를 물리적 어드레스로 변환시키는 과정을 도 21을 참조하여 설명하기로 한다.
도 21은 메모리 시스템(1000A ~1000D)의 소프트웨어 구조를 보여주는 블록도이다. 일 예로서, 도 21에서는 비휘발성 메모리 장치(200)를 플래시 메모리로 구현한 경우의 소프트웨어 구조를 보여준다.
도 21을 참조하면, 메모리 시스템(1000A ~ 1000D)은 애플리케이션 계층(101), 파일 시스템 계층(102), 플래시 변환 계층(103), 그리고 플래시 메모리 계층(104)순으로 소프트웨어 계층 구조를 갖는다.
애플리케이션 계층(101)은 호스트에서의 사용자 입력에 응답하여 데이터를 가공하는 펌웨어를 의미한다. 애플리케이션 계층(101)에서는 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리 칩에 저장하기 위한 커맨드를 파일 시스템 계층(102)으로 전달한다.
파일 시스템 계층(102)에서는 애플리케이션 계층(101)으로부터의 전달된 커맨드에 응답하여, 사용자 데이터가 저장될 논리적 어드레스를 할당한다. 파일 시스템(102)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 103)에서는 파일 시스템 계층(102)으로부터 전달받은 논리적 어드레스를 플래시 메모리 칩에서의 읽기/쓰기 동작을 위한 물리적 어드레스로의 변환 과정을 수행한다. 플래시 변환 계층(103)에서는 메타 데이터에 포함된 매핑 정보를 이용하여 논리적 어드레스를 물리적 어드레스로 변환할 수 있다. 플래시 변환 계층(Flash Translation Layer; FTL, 103)에서의 어드레스 변환 동작은 메모리 컨트롤러(100A ~100C)의 프로세서(110)에서 수행될 수 있다.
플래시 메모리 계층(104)에서는 논리적 어드레스로부터 변환된 물리적 어드레스를 액세스하여 데이터를 저장하거나 독출하기 위한 제어 신호들을 발생한다.
그러면, 본 발명의 실시예에 따른 메모리 시스템에서의 라이트 동작 수행 방법에 대하여 도 22의 흐름도를 참조하여 설명하기로 한다.
예로서, 도 2의 메모리 시스템(1000)에서 도 22의 흐름도가 실행되는 예에 대하여 설명하기로 한다. 물론, 도 22의 흐름도는 도 2의 메모리 시스템(1000)뿐만 아니라 SSD 및 서버 시스템 등의 다양한 전자 기기에서 실행될 수 있다.
우선, 호스트 시스템(2000)으로부터 제1타입의 호스트 커맨드가 메모리 시스템(1000)으로 전송되는 경우에, 메모리 시스템(1000)은 제1타입의 호스트 커맨드에 따라서 호스트 시스템으로부터 전송된 오리지널 데이터를 인코딩 처리한다(S110). 예로서, 인코딩 처리는 메모리 시스템(1000)의 인코더(120)에 포함된 압축 엔진 또는 암호화 엔진을 이용한 데이터 압축 처리 또는 데이터 암호화 처리를 포함할 수 있다. 예로서, 제1타입의 호스트 커맨드는 호스트 시스템(2000)으로부터 전송된 오리지널 데이터를 압축 기능 또는 암호화 기능을 지원하도록 할당된 메모리 시스템(1000)에 포함된 RAM(130)의 저장 영역에 라이트하는 동작을 수행하는 커맨드이다.
다음으로, 메모리 시스템(1000)은 제1타입의 호스트 커맨드에 따른 인코딩 처리 후에 인코딩 결과에 대한 정보를 호스트 시스템(2000)으로 전송한다(S120).
예로서, 메모리 시스템(1000)에서의 인코딩 처리 결과에 기초하여 메모리 시스템(1000)은 인코딩 처리된 데이터 또는 오리지널 데이터 중의 적어도 하나의 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시켜 호스트 시스템(2000)으로 전송할 수 있다.
다른 예로서, 메모리 시스템(1000)에서의 제1타입의 호스트 커맨드에 따른 데이터 압축 처리 결과에 기초하여 메모리 시스템(1000)은 인코딩 처리된 데이터 또는 오리지널 데이터 중에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 인코딩 결과에 대한 정보를 생성시켜 호스트 시스템(2000)으로 전송할 수 있다. 세부적으로, 데이터 압축 처리 결과에 따른 압축률이 제1임계값 이상인 경우에 인코딩 처리된 데이터를 타깃 데이터로 결정하고, 압축률이 제1임계값 미만인 경우에 오리지널 데이터를 타깃 데이터로 결정할 수 있다.
다음으로, 메모리 시스템(1000)은 제2호스트 커맨드에 따라서 메모리 시스템에서 인코딩 처리된 데이터 또는 오리지널 데이터를 메모리 시스템(1000)의 비휘발성 메모리 장치(200)에 라이트하는 동작을 수행한다(S130). 세부적으로, 메모리 시스템(1000)은 제2호스트 커맨드에 포함된 논리적 어드레스 정보에 매핑되는 물리적 어드레스 정보에 상응하는 비휘발성 메모리 장치(200)의 저장 위치에 제2호스트 커맨드에서 지정하는 메모리 시스템(1000)의 RAM(130)에 저장되어 있는 타깃 데이터를 라이트하는 동작을 수행한다.
예로서, 호스트 시스템(2000)으로부터 전송되는 제2호스트 커맨드에는 인코딩 결과에 대한 정보에서 지정하는 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함될 수 있다.
다른 예로서, 제2호스트 커맨드에는 상기 인코딩 처리된 데이터 또는 상기 오리지널 데이터 중에서 데이터 압축률에 따라서 호스트 시스템(2000)에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함될 수 있다.
그러면, 인코딩 처리 실행 단계(S110)에서 제1A 호스트 커맨드(COMP CMD)에 따른 압축 처리를 수행하는 동작에 대하여 도 23을 참조하여 설명하기로 한다.
도 23은 제1A 호스트 커맨드(COMP CMD)에 따른 메모리 시스템(1000)에서의 인코딩 동작을 수행하는 인코딩 처리 실행 단계(S110A)에 대한 세부 흐름도를 예시적으로 보여준다.
호스트 시스템(2000)으로부터 제1A 호스트 커맨드(COMP CMD)가 메모리 시스템(1000)으로 전송되는 경우에, 메모리 시스템(1000)은 제1A 호스트 커맨드(COMP CMD)에 기초하여 호스트 시스템(2000)으로부터 전송되는 오리지널 데이터를 RAM(130)의 제1A 어드레스 영역에 저장하는 동작을 수행한다(S110-1A). 예로서, RAM(130)의 제1A 어드레스 영역은 압축 기능을 지원하도록 할당된 저장 영역이다.
메모리 시스템(1000)은 RAM(130)의 제1A 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 압축 처리를 수행한다(S110-2A). 예로서, 압축 처리는 메모리 시스템(1000) 의 인코더(120)에 내장된 압축 엔진을 이용하여 수행할 수 있다.
메모리 시스템(1000)은 압축 처리된 데이터를 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행한다(S110-3A).
다음으로, 인코딩 처리 실행 단계(S110)에서 제1B 호스트 커맨드(ENCR CMD)에 따른 암호화 처리를 수행하는 동작에 대하여 도 24를 참조하여 설명하기로 한다.
도 24는 제1B 호스트 커맨드(ENCR CMD)에 따른 메모리 시스템(1000)에서의 인코딩 동작을 수행하는 인코딩 처리 실행 단계(S110B)에 대한 세부 흐름도를 예시적으로 보여준다.
호스트 시스템(2000)으로부터 제1B 호스트 커맨드(ENCR CMD)가 메모리 시스템(1000)으로 전송되는 경우에, 메모리 시스템(1000)은 제1B 호스트 커맨드(ENCR CMD)에 기초하여 호스트 시스템(2000)으로부터 전송되는 오리지널 데이터를 RAM(130)의 제1B 어드레스 영역에 저장하는 동작을 수행한다(S110-1B). 예로서, RAM(130)의 제1B 어드레스 영역은 암호화 기능을 지원하도록 할당된 저장 영역이다.
메모리 시스템(1000)은 RAM(130)의 제1B 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 암호화 처리를 수행한다(S110-2B). 예로서, 암호화 처리는 메모리 시스템(1000) 의 인코더(120)에 내장된 암호화 엔진을 이용하여 수행할 수 있다.
메모리 시스템(1000)은 암호화 처리된 데이터를 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행한다(S110-3B).
다음으로, 인코딩 처리 실행 단계(S110)에서 제1C 호스트 커맨드(COMP/ENCR CMD)에 따른 압축 및 암호화 처리를 수행하는 동작에 대하여 도 25를 참조하여 설명하기로 한다.
도 25는 제1C 호스트 커맨드(COMP/ENCR CMD)에 따른 메모리 시스템(1000)에서의 인코딩 동작을 수행하는 인코딩 처리 실행 단계(S110C)에 대한 세부 흐름도를 예시적으로 보여준다.
호스트 시스템(2000)으로부터 제1C 호스트 커맨드(COMP/ENCR CMD)가 메모리 시스템(1000)으로 전송되는 경우에, 메모리 시스템(1000)은 제1C 호스트 커맨드(COMP/ENCR CMD)에 기초하여 호스트 시스템(2000)으로부터 전송되는 오리지널 데이터를 RAM(130)의 제1C 어드레스 영역에 저장하는 동작을 수행한다(S110-1C). 예로서, RAM(130)의 제1C 어드레스 영역은 압축 및 암호화 기능을 지원하도록 할당된 저장 영역이다.
메모리 시스템(1000)은 RAM(130)의 제1C 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 압축 처리를 수행한다(S110-2C). 예로서, 압축 처리는 메모리 시스템(1000)의 인코더(120)에 내장된 압축 엔진을 이용하여 수행할 수 있다.
그리고 나서, 메모리 시스템(1000)은 압축 처리된 데이터를 RAM(130)의 제1B어드레스 영역에 저장하는 동작을 수행한다(S110-3C).
메모리 시스템(1000)은 RAM(130)의 제1B 어드레스 영역에 저장된 압축 처리된 데이터를 읽어내어 암호화 처리를 수행한다(S110-4C). 예로서, 암호화 처리는 메모리 시스템(1000) 의 인코더(120)에 내장된 암호화 엔진을 이용하여 수행할 수 있다. 이에 따라서, 암호화 처리를 수행하게 되면, 압축 및 암호화 처리된 데이터가 생성된다.
메모리 시스템(1000)은 암축 및 암호화 처리된 데이터를 RAM(130)의 제2어드레스 영역에 저장하는 동작을 수행한다(S110-5C).
도 26은 도 22에 도시된 라이트 동작 실행 단계에 대한 세부 흐름도를 예시적으로 보여주는 도면이다.
메모리 시스템(1000)은 호스트 시스템(2000)으로부터 인코딩 결과에 대한 정보에 기초한 제2호스트 커맨드(RAM FLUSH CMD)를 수신한다(S130-1). 예로서, 제2호스트 커맨드(RAM FLUSH CMD)에는 인코딩 결과에 대한 정보에서 지정하는 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함될 수 있다. 다른 예로서, 제2호스트 커맨드(RAM FLUSH CMD)에는 인코딩 처리된 데이터 또는 오리지널 데이터 중에서 데이터 압축률에 따라서 호스트 시스템(2000)에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 상기 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함될 수 있다.
메모리 시스템(1000)은 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환시킨다(S130-2). 예로서, 도 21에서 위에서 설명한 바와 같이, 플래시 변환 계층(FTL; 103)에서 논리적 어드레스를 물리적 어드레스로 변환시킬 수 있다.
메모리 시스템(1000)은 제2호스트 커맨드(RAM FLUSH CMD)에 포함된 타깃 데이터에 대한 저장 위치 정보에 기초하여 메모리 시스템(1000)의 RAM(130)으로부터 타깃 데이터를 읽어낸다(S130-3).
메모리 시스템(1000)은 읽어낸 타깃 데이터를 변환된 물리적 어드레스 정보에 상응하는 비휘발성 메모리 장치(200)의 저장 위치에 라이트하는 동작을 수행한다(S130-4).
도 27은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 27을 참조하면, 전자 장치(20000)는 프로세서(2100), RAM(2200), 입출력 장치(2300), 전원 장치(2400) 및 메모리 시스템(1000)을 포함할 수 있다. 한편, 도 20에는 도시되지 않았지만, 전자 장치(20000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(20000)는 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 27에 도시된 메모리 시스템(1000)은 도 도 2에 도시된 본 발명의 실시 예에 따른 메모리 시스템(1000)이 적용될 수 있다. 따라서, 메모리 시스템(1000)은 본 발명에서 제안하는 신규 호스트 커맨드에 따라서 압축 또는 암호화 처리 후에 라이트 동작을 수행할 수 있다.
프로세서(2100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2500)를 통하여 RAM(2200), 입출력 장치(2300) 및 메모리 시스템(1000)과 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(2100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2200)는 전자 장치(20000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2400)는 전자 장치(20000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 28은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도 28을 참조하면, 메모리 카드 시스템(30000)은 호스트(3100) 및 메모리 카드(3200)를 포함할 수 있다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속부(3120)를 포함할 수 있다. 메모리 카드(3200)는 카드 접속부(3210), 카드 컨트롤러(3220) 및 메모리 장치(3230)를 포함할 수 있다.
도 28에 도시된 카드 컨트롤러(3220) 및 메모리 장치(3230)는 각각 도 2에 도시된 메모리 컨트롤러(100) 및 메모리 장치(200)가 적용될 수 있다.
호스트 시스템(3100)은 메모리 카드(3200)에 데이터를 기입하거나, 메모리 카드(3200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(3110)는 커맨드(CMD), 호스트(3100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK), 및 데이터(DATA)를 호스트 접속부(3120)를 통해 메모리 카드(3200)로 전송할 수 있다.
카드 컨트롤러(3220)는 카드 접속부(3210)를 통해 수신된 호스트 커맨드에 응답하여, 카드 컨트롤러(3220)는 본 발명에서 제안하는 인코딩 처리 후에 라이트 동작을 수행할 수 있다.
메모리 카드(3200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 29는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
도 29를 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(40000)은 네트워크(4200)를 통해 연결되는 서버 시스템(4100) 및 다수의 단말들(4300, 4400, 4500)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(4100)은 네트워크(4200)에 연결되는 다수의 단말들(4300, 4400, 4500)로부터 수신되는 요청을 처리하는 서버(4110) 및 단말들(4300, 4400, 4500)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD(4120)를 포함할 수 있다. 이때, SSD(4120)는 도 2에 도시된 메모리 시스템(1000)이 적용될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10000 : 데이터 처리 장치
1000A, 1000B, 1000C, 1000D : 메모리 시스템
2000, 2000A, 2000B : 호스트 시스템
100, 100A, 100B, 100C : 메모리 컨트롤러
200, 200' : 비휘발성 메모리 장치 10 : 셀 어레이
20 : 페이지 버퍼 30 : 제어 회로
40 : 로우 디코더 210 : 중앙 처리 장치
220, 130, 130A ~ 130C : RAM 110 : 프로세서
120, 120A ~ 120H : 인코더
121A, 121B,121C, 121A-1 ~ 121A-N, 121B-1 ~ 121B-N : 압축 엔진
122A, 122B, 122C, 122A-1 ~ 122A-M, 122B-1 ~ 122B-M : 암호화 엔진
20000 : 전자 장치 30000 : 메모리 카드 시스템
40000 : 네트워크 시스템

Claims (20)

  1. 제1타입의 호스트 커맨드에 따라서 호스트 시스템으로부터 전송되는 오리지널 데이터를 메모리 시스템에서 인코딩 처리하는 단계;
    상기 인코딩 처리 후에 인코딩 결과에 대한 정보를 상기 호스트 시스템으로 전송하는 단계; 및
    제2호스트 커맨드에 따라서 상기 메모리 시스템에서 인코딩 처리된 데이터 또는 상기 오리지널 데이터를 비휘발성 메모리 장치에 라이트하는 동작을 수행하는 단계를 포함하고, 상기 제2호스트 커맨드는 상기 인코딩 결과에 대한 정보에 기초하여 상기 호스트 시스템으로부터 전송되고,
    상기 제2호스트 커맨드에는 상기 인코딩 결과에 대한 정보에서 지정하는 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 상기 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함되는 것을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  2. 제1항에 있어서, 상기 제1타입의 호스트 커맨드는 상기 오리지널 데이터를 압축 기능 또는 암호화 기능을 지원하도록 할당된 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 저장 영역에 라이트하는 동작을 수행하는 커맨드를 포함함을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  3. 제1항에 있어서, 상기 인코딩 처리하는 단계는 상기 제1타입의 호스트 커맨드에 기초하여 복수의 압축 엔진들 중에서 하나의 압축 엔진을 선택하거나 복수의 암호화 엔진들 중에서 하나의 암호화 엔진을 선택하여 상기 오리지널 데이터를 압축 처리하거나 또는 암호화 처리하는 것을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  4. 제1항에 있어서, 상기 인코딩 처리하는 단계는
    제1A 호스트 커맨드에 기초하여 상기 호스트 시스템으로부터 전송되는 오리지널 데이터를 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 제1A 어드레스 영역에 저장하는 단계;
    상기 제1A 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 압축 처리를 수행하는 단계; 및
    상기 압축 처리된 데이터를 상기 랜덤 액세스 메모리의 제2어드레스 영역에 저장하는 단계를 포함하고, 상기 제1A 호스트 커맨드는 상기 제1타입의 호스트 커맨드에 포함됨을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  5. 제1항에 있어서, 상기 인코딩 처리하는 단계는
    제1B 호스트 커맨드에 기초하여 상기 호스트 시스템으로부터 전송된 오리지널 데이터를 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 제1B 어드레스 영역에 저장하는 단계;
    상기 제1B 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 암호화 처리를 수행하는 단계; 및
    상기 암호화 처리된 데이터를 상기 랜덤 액세스 메모리의 제2어드레스 영역에 저장하는 단계를 포함하고, 상기 제1B 호스트 커맨드는 상기 제1타입의 호스트 커맨드에 포함됨을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  6. 제1항에 있어서, 상기 인코딩 처리하는 단계는
    제1C 호스트 커맨드에 기초하여 상기 호스트 시스템으로부터 전송된 오리지널 데이터를 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 제1C 어드레스 영역에 저장하는 단계;
    상기 제1C 어드레스 영역에 저장된 오리지널 데이터를 읽어내어 압축 처리를 수행하는 단계;
    상기 압축 처리된 데이터를 상기 랜덤 액세스 메모리의 제1B 어드레스 영역에 저장하는 단계;
    상기 제1B 어드레스 영역에 저장된 데이터를 읽어내어 암호화 처리를 수행하는 단계; 및
    상기 암호화 처리된 데이터를 상기 랜덤 액세스 메모리의 제2어드레스 영역에 저장하는 단계를 포함하고, 상기 제1C 호스트 커맨드는 상기 제1타입의 호스트 커맨드에 포함됨을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  7. 제1항에 있어서, 상기 인코딩 결과에 대한 정보는 상기 메모리 시스템에서의 상기 인코딩 처리된 데이터 또는 상기 오리지널 데이터 중의 적어도 하나의 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함함을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  8. 삭제
  9. 제1항에 있어서, 상기 라이트하는 동작을 수행하는 단계는
    상기 메모리 시스템의 랜덤 액세스 메모리에 저장된 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 상기 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함된 상기 제2호스트 커맨드를 수신하는 단계;
    상기 제2호스트 커맨드에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환하는 단계;
    상기 타깃 데이터에 대한 저장 위치 정보에 기초하여 상기 메모리 시스템의 랜덤 액세스 메모리로부터 상기 타깃 데이터를 읽어내는 단계; 및
    상기 읽어낸 타깃 데이터를 상기 변환된 물리적 어드레스 정보에 상응하는 상기 비휘발성 메모리 장치의 저장 위치에 라이트하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  10. 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치에 데이터를 쓰거나 읽기 위한 동작을 수행하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는
    인코딩 기능을 지원하는 제1어드레스 영역과 인코딩 처리된 데이터를 저장하는 제2어드레스 영역이 할당된 랜덤 액세스 메모리;
    상기 제1어드레스 영역에 저장된 데이터를 인코딩 처리하여 상기 제2어드레스 영역에 저장하는 인코더; 및
    제1타입의 호스트 커맨드에 따라서 호스트 시스템으로부터 전송된 오리지널 데이터를 상기 랜덤 액세스 메모리의 제1어드레스 영역에 저장하고, 상기 인코더에서의 인코딩 처리에 따른 인코딩 결과에 대한 정보를 상기 호스트 시스템으로 전송하고, 상기 인코딩 결과에 대한 정보에 기초한 제2호스트 커맨드에 따라서 상기 랜덤 액세스 메모리로부터 데이터를 읽어내어 상기 비휘발성 메모리 장치에 라이트하기 위한 동작을 수행하는 프로세서를 포함하고,
    상기 제2호스트 커맨드는 상기 인코딩 결과에 대한 정보에 기초하여 호스트 시스템으로부터 상기 메모리 컨트롤러로 전송되고, 상기 인코딩 결과에 대한 정보는 상기 오리지널 데이터 또는 상기 인코딩 처리된 데이터 중의 적어도 하나의 데이터에 대한 상기 랜덤 액세스 메모리의 저장 위치 정보 및 사이즈 정보를 포함함을 특징으로 하는 메모리 시스템.
  11. 삭제
  12. 제10항에 있어서, 상기 프로세서는 상기 인코더에서의 압축 처리에 따른 상기 오리지널 데이터에 대한 압축률에 기초하여 상기 랜덤 액세스 메모리에 저장된 인코딩 처리된 데이터 또는 오리지널 데이터 중에서 선택된 하나의 타깃 데이터에 대한 저장 위치 정보 및 사이즈 정보를 포함하는 상기 인코딩 결과에 대한 정보를 생성시키고, 상기 압축률이 제1임계값 이상인 경우에 상기 인코딩 처리된 데이터를 상기 타깃 데이터로 결정하고, 상기 압축률이 제1임계값 미만인 경우에 상기 오리지널 데이터를 상기 타깃 데이터로 결정하는 것을 특징으로 하는 메모리 시스템.
  13. 제10항에 있어서, 상기 인코더는 데이터를 압축 처리하는 하나 이상의 압축 엔진 또는 데이터를 암호화 처리하는 하나 이상의 암호화 엔진을 포함하고, 상기 제1타입의 호스트 커맨드에 기초하여 복수의 압축 엔진들 중에서 하나의 압축 엔진을 선택하거나 복수의 암호화 엔진들 중에서 하나의 암호화 엔진을 선택하여 상기 제1어드레스 영역에 저장된 데이터를 압축 처리하거나 또는 암호화 처리하는 것을 특징으로 하는 메모리 시스템.
  14. 제10항에 있어서, 상기 랜덤 액세스 메모리의 제1어드레스 영역은 압축 기능을 지원하는 제1A 어드레스 영역 또는 암호화 기능을 지원하는 제1B 어드레스 영역을 포함하고, 상기 프로세서는 상기 제1타입의 호스트 커맨드에 따라서 상기 오리지널 데이터를 상기 제1A 어드레스 영역 또는 제1B 어드레스 영역에 선택적으로 저장하는 것을 특징으로 하는 메모리 시스템.
  15. 제14항에 있어서, 상기 랜덤 액세스 메모리의 제1어드레스 영역은 압축 및 암호화 기능을 함께 지원하는 제1C 어드레스 영역을 더 포함하고, 상기 프로세서는 상기 제1타입의 호스트 커맨드에 따라서 상기 오리지널 데이터를 상기 제1A 어드레스 영역, 제1B 어드레스 영역 또는 제1C 어드레스 영역에 선택적으로 저장하는 것을 특징으로 하는 메모리 시스템.
  16. 제10항에 있어서, 상기 인코더는 상기 랜덤 액세스 메모리의 제1어드레스 영역에 저장된 데이터에 대한 압축 처리 또는 암호화 처리 중의 적어도 하나의 인코딩 처리를 수행하여 상기 제2어드레스 영역에 저장하는 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  17. 제10항에 있어서, 상기 프로세서는 상기 제2호스트 커맨드에 포함된 논리적 어드레스 정보를 물리적 어드레스 정보로 변환 처리하고, 상기 제2호스트 커맨드에서 지정하는 랜덤 액세스 메모리의 저장 영역에서 읽어낸 데이터를 상기 변환된 물리적 어드레스 정보에 상응하는 상기 비휘발성 메모리 장치의 저장 영역에 라이트하는 동작을 수행하는 것을 특징으로 하는 메모리 시스템.
  18. 호스트 데이터를 저장하는 랜덤 액세스 메모리; 및
    메모리 시스템에 저장할 호스트 데이터의 종류에 기초하여 메모리 시스템에서의 인코딩 처리를 위한 제1타입의 호스트 커맨드를 생성시켜 메모리 시스템으로 전송하고, 상기 메모리 시스템으로부터 수신되는 인코딩 결과에 대한 정보에 기초하여 제2호스트 커맨드를 생성시켜 상기 메모리 시스템으로 전송하는 중앙 처리 장치를 포함하고,
    상기 제2호스트 커맨드에는 상기 인코딩 결과에 대한 정보에서 지정하는 타깃 데이터에 대한 저장 위치 정보, 사이즈 정보 및 상기 타깃 데이터에 매핑시킬 논리적 어드레스 정보가 포함되는 것을 특징으로 하는 호스트 시스템.
  19. 제18항에 있어서, 상기 제1타입의 호스트 커맨드는 압축 기능 또는 암호화 기능 지원하도록 할당된 메모리 시스템에 포함된 랜덤 액세스 메모리의 저장 영역에 상기 호스트 데이터를 라이트하는 동작을 수행하는 커맨드이고, 상기 제2호스트 커맨드는 상기 제2호스트 커맨드에서 지정하는 상기 메모리 시스템에 포함된 랜덤 액세스 메모리의 저장 영역으로부터 데이터를 읽어내어 상기 메모리 시스템의 비휘발성 메모리 장치에 라이트하는 동작을 수행하는 커맨드를 포함함을 특징으로 하는 호스트 시스템.
  20. 제18항에 있어서, 상기 중앙 처리 장치는 상기 메모리 시스템에 저장할 호스트 데이터의 종류에 기초하여 예상 압축률이 제2임계값 이상으로 분류되는 제1그룹의 데이터에 속하는 호스트 데이터에 대하여 제1A 호스트 커맨드를 생성시키고, 상기 제1A 호스트 커맨드는 상기 제1타입의 호스트 커맨드로서 상기 메모리 시스템에 포함된 랜덤 액세스 메모리에서의 압축 기능을 지원하는 저장 영역에 상기 호스트 데이터를 라이트하는 동작을 수행하는 커맨드를 포함함을 특징으로 하는 호스트 시스템.
KR1020130145449A 2013-11-27 2013-11-27 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법 KR102078853B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020130145449A KR102078853B1 (ko) 2013-11-27 2013-11-27 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법
US14/533,655 US9904628B2 (en) 2013-11-27 2014-11-05 Memory system, host system, and method of performing write operation in memory system
EP14195236.6A EP2879041B1 (en) 2013-11-27 2014-11-27 Memory system, host system, and method of performing write operation in memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130145449A KR102078853B1 (ko) 2013-11-27 2013-11-27 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법

Publications (2)

Publication Number Publication Date
KR20150061386A KR20150061386A (ko) 2015-06-04
KR102078853B1 true KR102078853B1 (ko) 2020-02-18

Family

ID=51999289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130145449A KR102078853B1 (ko) 2013-11-27 2013-11-27 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법

Country Status (3)

Country Link
US (1) US9904628B2 (ko)
EP (1) EP2879041B1 (ko)
KR (1) KR102078853B1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US10552058B1 (en) * 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10248345B1 (en) * 2016-02-26 2019-04-02 Veritas Technologies Llc Persisting data as information
US10101934B1 (en) * 2016-03-24 2018-10-16 Emc Corporation Memory allocation balancing for storage systems
US10324782B1 (en) 2016-03-24 2019-06-18 Emc Corporation Hiccup management in a storage array
US10705907B1 (en) 2016-03-24 2020-07-07 EMC IP Holding Company LLC Data protection in a heterogeneous random access storage array
KR102611638B1 (ko) * 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
US10152371B1 (en) 2016-09-30 2018-12-11 EMC IP Holding Company LLC End-to-end data protection for distributed storage
US10223008B1 (en) 2016-09-30 2019-03-05 EMC IP Holding Company LLC Storage array sizing for compressed applications
US11023579B1 (en) * 2016-12-01 2021-06-01 National Technology & Engineering Solutions Of Sandia, Llc Malicious activity detection in a memory
US10353604B2 (en) * 2016-12-27 2019-07-16 Intel Corporation Object transformation in a solid state drive
KR102570581B1 (ko) * 2018-06-07 2023-08-24 삼성전자 주식회사 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
CN111384965B (zh) * 2018-12-28 2022-06-17 上海寒武纪信息科技有限公司 数据压缩解压装置和数据解压方法
US11301403B2 (en) * 2019-03-01 2022-04-12 Micron Technology, Inc. Command bus in memory
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
US20220269807A1 (en) * 2021-02-22 2022-08-25 EMC IP Holding Company LLC Detecting unauthorized encryptions in data storage systems
US11972150B2 (en) * 2021-09-29 2024-04-30 Silicon Motion, Inc. Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100281340A1 (en) 2009-04-30 2010-11-04 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20110320915A1 (en) 2010-06-29 2011-12-29 Khan Jawad B Method and system to improve the performance and/or reliability of a solid-state drive

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3906895B2 (ja) * 2000-11-28 2007-04-18 富士ゼロックス株式会社 画像情報処理装置及びコンピュータが読取可能な記録媒体
US6577254B2 (en) 2001-11-14 2003-06-10 Hewlett-Packard Development Company, L.P. Data compression/decompression system
JP4041491B2 (ja) * 2002-06-14 2008-01-30 松下電器産業株式会社 半導体集積回路装置,データ記憶検証装置およびデータ記憶検証方法
TWI220959B (en) * 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
JP2005195835A (ja) 2004-01-07 2005-07-21 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム
TWI427077B (zh) 2004-12-30 2014-02-21 Astex Therapeutics Ltd 吡唑化合物及其用途和含有彼之藥學組成物
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
JP4461187B1 (ja) 2008-12-24 2010-05-12 株式会社東芝 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
KR20110030071A (ko) 2009-09-17 2011-03-23 주식회사 하이닉스반도체 데이터를 압축하는 반도체 스토리지 시스템
KR101601790B1 (ko) 2009-09-22 2016-03-21 삼성전자주식회사 암호키 선택장치를 구비하는 스토리지 시스템 및 암호 키 선택방법
US8135903B1 (en) 2009-10-30 2012-03-13 Western Digital Technologies, Inc. Non-volatile semiconductor memory compressing data to improve performance
KR101643273B1 (ko) 2010-04-09 2016-08-01 삼성전자주식회사 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
JP2012113343A (ja) 2010-11-19 2012-06-14 Toshiba Corp 記憶装置
KR20120054699A (ko) 2010-11-22 2012-05-31 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 데이터 저장 시스템 및 그 방법
KR20120084180A (ko) 2011-01-19 2012-07-27 삼성전자주식회사 데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치
KR20120090194A (ko) 2011-02-07 2012-08-17 삼성전자주식회사 데이터 처리 장치 및 이를 포함하는 데이터 처리 시스템
JP2014052899A (ja) * 2012-09-07 2014-03-20 Toshiba Corp メモリシステムとその制御方法
JP2014157391A (ja) * 2013-02-14 2014-08-28 Sony Corp 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US9093110B2 (en) * 2013-07-30 2015-07-28 Dell Products, Lp System and method for calculating data compression ratio without writing data to media

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100281340A1 (en) 2009-04-30 2010-11-04 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20110320915A1 (en) 2010-06-29 2011-12-29 Khan Jawad B Method and system to improve the performance and/or reliability of a solid-state drive

Also Published As

Publication number Publication date
EP2879041B1 (en) 2019-02-27
EP2879041A1 (en) 2015-06-03
KR20150061386A (ko) 2015-06-04
US20150149789A1 (en) 2015-05-28
US9904628B2 (en) 2018-02-27

Similar Documents

Publication Publication Date Title
KR102078853B1 (ko) 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법
KR101790165B1 (ko) 메모리 시스템 및 그것의 메타 데이터 관리 방법
KR102466412B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US9158617B2 (en) Method of performing write operation or read operation in memory system and system thereof
US10496312B2 (en) Method of operating a storage device to compress or decompress data and a data storage system including the storage device
KR101457451B1 (ko) 암호화된 전송 고체 상태 디스크 제어기
KR101888074B1 (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US8788894B2 (en) Method of enhancing error correction performance and storage device using the method
KR20140027596A (ko) 메모리 시스템 및 메모리 시스템에서의 암호화 방법
KR20130060791A (ko) 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
US9575661B2 (en) Nonvolatile memory systems configured to use deduplication and methods of controlling the same
KR20130076429A (ko) 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
KR102485397B1 (ko) 메모리 시스템 및 그 동작 방법
KR20180019419A (ko) 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10043573B2 (en) Apparatus and method for endurance friendly programming using lower voltage thresholds
KR20140113176A (ko) 매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템
KR20140032524A (ko) 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
KR20150043127A (ko) 메모리 시스템에서의 코딩 방법 및 디코딩 방법
US20100138595A1 (en) Semiconductor device comprising flash memory and address mapping method
KR20150092676A (ko) 메모리 제어 방법
US20200150895A1 (en) Data storage device, method of operating the same, and storage system having the same
KR101784816B1 (ko) 비휘발성 메모리 시스템
KR20130130484A (ko) 읽기 카운터 로직을 포함하는 플래시 메모리 시스템
US20170017417A1 (en) Data storage device and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant