KR20230068271A - 비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20230068271A
KR20230068271A KR1020220063591A KR20220063591A KR20230068271A KR 20230068271 A KR20230068271 A KR 20230068271A KR 1020220063591 A KR1020220063591 A KR 1020220063591A KR 20220063591 A KR20220063591 A KR 20220063591A KR 20230068271 A KR20230068271 A KR 20230068271A
Authority
KR
South Korea
Prior art keywords
encryption
memory
data
request
decryption
Prior art date
Application number
KR1020220063591A
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 US18/052,344 priority Critical patent/US20230141861A1/en
Priority to CN202211395346.7A priority patent/CN116108508A/zh
Publication of KR20230068271A publication Critical patent/KR20230068271A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4078Safety or protection circuits, e.g. for preventing inadvertent or unauthorised reading or writing; Status cells; Test cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)

Abstract

본 개시의 기술적 사상에 따른 데이터 장치의 동작 방법은, 버퍼 메모리, 비휘발성 메모리 및 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법으로서, 호스트로부터, 버퍼 메모리에 저장된 데이터에 대한 암호화 요청을 수신하는 단계 및 암호화 요청에 따른 암호화 동작을 수행하는 단계를 포함하고, 암호화 동작을 수행하는 단계는 프로그램 동작을 수행하는 단계를 포함하고, 프로그램 동작을 수행하는 단계는, 암호화 요청에 응답하여, 비휘발성 메모리의 버퍼 영역의 물리 주소를 확인하는 단계, 컨트롤러에 포함된 비휘발성 메모리에 대응하는 암호 모듈을 온(ON) 상태로 하여 버퍼 메모리에 저장된 데이터를 암호화함으로써 암호화된 데이터를 생성하는 단계 및 물리 주소에 기초하여, 암호화된 데이터를 비휘발성 메모리의 버퍼 영역에 프로그램하는 단계를 포함한다.

Description

비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법 {Data storage device using non-volatile memory device and operating method thereof}
본 개시의 기술적 사상은 데이터 저장 장치에 관한 것으로서, 구체적으로는 비휘발성 메모리 장치에 대응하는 모듈, 즉, 암호 IP(Intellectual Properties)를 활용한 데이터의 암호화 및 복호화 방법, 및 상기 암호 IP를 포함하는 데이터 저장 장치에 관한 것이다.
SED(Self Encryption Device)를 지원하는 SSD(Solid State Drive)와 같은 데이터 저장 장치는 NAND 플래시 메모리와 같은 비휘발성 메모리에 사용자 데이터를 암호화 된 데이터로 프로그램할 수 있다. 호스트로부터 암호화 또는 복호화 요청을 수신할 경우, DRAM(Dynamic Random Access Memory)에 존재하는 데이터도 암호화 또는 복호화를 할 수 있다. 데이터 저장 장치의 런타임(Runtime) 중에도 호스트 등의 암호화 및/또는 복호화 요청이 있을 수 있다. 또한, DRAM의 데이터를 암호화하기 위하여 별도의 모듈을 배치할 수 있는데, 이때, 별도의 모듈을 CPU(central processing unit)와 DRAM 사이에 배치하면, 시스템의 전체의 속도가 느려질 수 있다.
본 개시의 기술적 사상은, 별도의 하드웨어 모듈 추가 없이 장치의 런타임(Runtime) 중에도 향상된 속도로 암호화 및 복호화를 수행할 수 있게 하고, 호스트의 요청에 따라 자유롭게 암호화 및 복호화를 할 수 있게 하는 장치의 동작 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 데이터 저장 장치의 동작 방법은, 버퍼 메모리, 비휘발성 메모리 및 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법으로서, 호스트로부터 버퍼 메모리에 저장된 데이터에 대한 암호화 요청을 수신하는 단계 및 암호화 요청에 따른 암호화 동작을 수행하는 단계를 포함하고, 암호화 동작을 수행하는 단계는 프로그램 동작을 수행하는 단계를 포함하고, 프로그램 동작을 수행하는 단계는, 암호화 요청에 응답하여, 비휘발성 메모리의 버퍼 영역의 물리 주소를 확인하는 단계, 컨트롤러에 포함된 비휘발성 메모리에 대응하는 암호 모듈을 온(ON) 상태로 하여 버퍼 메모리에 저장된 데이터를 암호화함으로써 암호화된 데이터를 생성하는 단계 및 물리 주소에 기초하여, 암호화된 데이터를 비휘발성 메모리의 버퍼 영역에 프로그램하는 단계를 포함한다.
본 개시의 기술적 사상의 일측면에 따른 데이터 저장 장치의 동작 방법은, 버퍼 메모리, 비휘발성 메모리 및 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법으로서, 호스트로부터 버퍼 메모리에 저장된 암호화 데이터에 대한 복호화 요청을 수신하는 단계 및 복호화 요청에 따른 복호화 동작을 수행하는 단계를 포함하고, 복호화 동작을 수행하는 단계는, 복호화 요청에 응답하여, 비휘발성 메모리의 버퍼 영역의 물리 주소를 확인하는 단계, 컨트롤러에 포함된 비휘발성 메모리에 대응하는 암호 모듈을 오프(OFF) 상태로 하는 단계, 물리 주소에 기초하여, 암호화 데이터를 비휘발성 메모리의 버퍼 영역에 프로그램하는 단계, 암호 모듈을 온(ON) 상태로 하는 단계, 비휘발성 메모리의 버퍼 영역으로부터 암호화 데이터를 독출하여 복호화함으로써 복호화된 데이터를 생성하는 단계 및 복호화된 데이터를 버퍼 메모리에 저장하는 단계를 포함한다.
본 개시의 기술적 사상의 일측면에 따른 데이터 저장 장치는, 버퍼 메모리, 비휘발성 메모리 및 호스트로부터 버퍼 메모리에 저장된 데이터에 대한 암호화 요청을 수신하고, 수신한 암호화 요청에 따른 암호화 동작을 제어하는 컨트롤러를 포함하고, 암호화 동작은, 암호화 요청에 응답하여, 비휘발성 메모리의 버퍼 영역의 물리 주소를 확인하고, 컨트롤러에 포함된 비휘발성 메모리에 대응하는 암호 모듈을 온(ON) 상태로 하여 버퍼 메모리에 저장된 데이터를 암호화함으로써 암호화된 데이터를 생성하고, 물리 주소에 기초하여 암호화된 데이터를 비휘발성 메모리의 버퍼 영역에 프로그램하고, 비휘발성 메모리에 대응하는 암호 모듈을 오프(OFF) 상태로 하여 비휘발성 메모리의 버퍼 영역으로부터 암호화된 데이터를 독출하고, 독출된 암호화된 데이터를 버퍼 메모리에 저장하는 것을 특징으로 한다.
본 개시의 예시적 실시 예에 따른 데이터 저장 장치의 동작 방법은 새로운 하드웨어 모듈을 추가할 필요 없이 비휘발성 메모리 장치에 대응하는 모듈을 활용함으로써 향상된 속도로 데이터의 암호화 및 복호화를 수행할 수 있다.
또한, DRAM에 저장된 데이터를 암호화하여 암호화된 데이터를 DRAM에 저장하거나, DRMA에 저장된 암호화 데이터를 복호화하여 복호화된 데이터를 DRAM에 저장할 수 있으므로, 암호화 또는 복호화가 필요하지 않은 데이터에도 변화가 생기는 것을 방지할 수 있다. 또한, 장치의 다른 동작 중에도 호스트의 요구 등에 따라 암호화 상태와 복호화 상태를 자유롭게 오갈 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 데이터 저장 장치의 전체적인 구조를 나타내는 도면이다.
도 2는 본 개시의 예시적 실시 예에 따른 데이터 저장 장치의 동작 방법 중 암호화 동작을 개념적으로 나타내는 도면이다.
도 3은 본 개시의 예시적 실시 예에 따른 데이터 저장 장치의 동작 방법 중 복호화 동작을 개념적으로 나타내는 도면이다.
도 4는 도 1의 데이터 저장 장치의 구조를 본 개시의 예시적 실시 예에 따라 구체적으로 나타내는 도면이다.
도 5는 도 4의 장치의 데이터 암호화 동작 중 프로그램 동작을 수행하는 과정을 예시적으로 나타내는 도면이다.
도 6은 도 5의 데이터 암호화 동작 중 프로그램 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 7은 도 4의 장치의 데이터 암호화 동작 중 독출 동작을 수행하는 과정을 예시적으로 나타내는 도면이다.
도 8은 도 7의 데이터 암호화 동작 중 독출 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 9는 본 개시의 다른 예시적 실시 예에 따른 복수의 채널을 포함하는 데이터 저장 장치의 구조를 구체적으로 나타내는 도면이다.
도 10은 도 9의 장치의 데이터 암호화 동작 중 프로그램 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 11은 도 9의 장치의 데이터 암호화 동작 중 독출 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 12는 도 4의 장치의 암호화 데이터의 복호화 동작을 수행하는 과정을 예시적으로 나타내는 도면이다.
도 13은 도 12의 암호화 데이터의 복호화 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 14는 도 9의 장치의 암호화 데이터의 복호화 동작을 수행하는 과정을예시적으로 나타내는 흐름도이다.
도 15는 본 개시의 예시적 실시 예에 따른 복수의 채널을 포함하는 데이터 저장 장치에서 암호화 동작 및 복호화 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
본 발명의 실시 예들을 상세히 참조할 것이며, 이들의 예는 첨부 도면들에 도시된다.
도 1은 본 개시의 예시적 실시 예에 따른 데이터 저장 장치(100)의 전체적인 구조를 나타내는 도면이다.
도 1을 참조하면, 데이터 저장 장치(100)는 호스트(101)와 연결되어 호스트(101)의 요청을 수행하는 저장 장치일 수 있다. 도 1에 도시된 바와 같이, 데이터 저장 장치(100)는 호스트 인터페이스 로직(102), 메모리 장치(107, 108, 109, 110), 버퍼 메모리(105), 및 컨트롤러(103)을 포함할 수 있다.
데이터 저장 장치(100)는 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 테블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트(101)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
데이터 저장 장치(100)는 호스트(101)와의 통신 방식인 호스트 인터페이스에 따라서 다양한 종류의 스토리지 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 데이터 저장 장치(100)는 SSD, MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
데이터 저장 장치(100)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 데이터 저장 장치(100)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi-chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
호스트(101)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 데이터 저장 장치(100)와 통신할 수 있다.
호스트 인터페이스 로직(102)(또는, 호스트 인터페이스(Host Interface) 또는 호스트 인터페이스 레이어(Host Interface Layer) 등으로 지칭될 수 있음)은 데이터 저장 장치(100)와 다른 구성 요소들 간의 통신들을 관리할 수 있다. 이러한 통신들은 데이터 저장 장치(100)로부터 데이터를 판독하기 위한 읽기 요청들 및 데이터 저장 장치(100)에 데이터를 기록하기 위한 쓰기 요청들을 포함할 수 있다. 호스트 인터페이스 로직(102)은 단일 포트만을 통해 인터페이스를 관리할 수 있거나, 또는 다수의 포트들을 통해 인터페이스들을 관리할 수 있다. 대안적으로, 데이터 저장 장치(100)는 다수의 포트들을 포함할 수 있으며, 이들 각각은 그 포트를 통한 인터페이스들을 관리하기 위해 별도의 호스트 인터페이스 로직(102)을 가질 수 있다. 본 발명의 실시 예들은 또한 가능성들을 혼합할 수 있다 (예를 들어, 3개의 포트들을 갖는 데이터 저장 장치는 하나의 포트를 관리하기 위한 하나의 호스트 인터페이스 로직 및 다른 두개의 포트들을 관리 하기 위한 제2 호스트 인터페이스 로직을 가질 수 있다.).
메모리 장치(107, 108, 109, 110)는 데이터를 저장할 수 있다. 메모리 장치(107, 108, 109, 110)는 컨트롤러(103)의 제어에 기초하여 동작한다. 메모리 장치(107, 108, 109, 110)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(미도시)를 포함할 수 있다.
실시 예에서, 메모리 장치(107, 108, 109, 110)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR4(Low Power Double Data Rate4) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR), RDRAM(Rambus Dynamic Random Access Memory), 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND), 노아 플래시 메모리(NOR flash memory), 저항성 램(resistive random access memory: RRAM), 상변화 메모리(phase-change memory: PRAM), 자기저항 메모리(magnetoresistive random access memory: MRAM), 강유전체 메모리(ferroelectric random access memory: FRAM), 스핀주입 자화반전 메모리(spin transfer torque random access memory: STT-RAM) 등이 될 수 있다. 본 명세서에서는 설명의 편의를 위해, 메모리 장치(107, 108, 109, 110)가 낸드 플래시 메모리인 경우를 가정하여 설명한다.
메모리 장치(107, 108, 109, 110)는 컨트롤러(103)로부터 커맨드 및 어드레스(주소)를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 메모리 장치(107, 108, 109, 110)는 어드레스에 의해 선택된 영역에 대해 커맨드가 지시하는 동작을 수행할 수 있다. 예를 들면, 메모리 장치(107, 108, 109, 110)는 프로그램 동작(쓰기 동작), 독출 동작(리드 동작) 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 메모리 장치(107, 108, 109, 110)는 어드레스에 의해 선택된 영역에 데이터를 프로그램 할 것이다. 리드(독출) 동작 시에, 메모리 장치(107, 108, 109, 110)는 어드레스에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 메모리 장치(107, 108, 109, 110)는 어드레스에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
컨트롤러(103)는 호스트(101)의 요청에 응답하여, 또는 자체적으로 데이터 저장 장치(100)의 전반적인 동작을 제어할 수 있다.
데이터 저장 장치(100)에 전원이 인가되면, 컨트롤러(103)는 펌웨어(firmware, FW)를 실행할 수 있다. 메모리 장치(107, 108, 109, 110)가 플래시 메모리 장치인 경우, 펌웨어(FW)는 호스트(101)와의 통신을 제어하는 호스트 인터페이스 로직(Host Interface Logic, HIL)(102), 컨트롤러(103)는 호스트(101)와 메모리 장치(107, 108, 109, 110) 간의 통신을 제어하는 플래시 변환 레이어(Flash Translation Layer, FTL) 및 메모리 장치(107, 108, 109, 110)와의 통신을 제어하는 플래시 인터페이스 레이어(Flash Interface Layer, FIL)를 포함할 수 있다.
컨트롤러(103)는 호스트(101)의 요청(request)에 따라 프로그램 동작, 리드(독출) 동작 또는 소거 동작 등을 수행하도록 메모리 장치(107, 108, 109, 110)를 제어할 수 있다. 프로그램 동작 시, 컨트롤러(103)는 쓰기 커맨드, 물리 블록 어드레스 및 데이터를 메모리 장치(107, 108, 109, 110)에 제공할 수 있다. 리드 동작 시, 컨트롤러(103)는 리드(독출) 커맨드 및 물리 블록 어드레스를 메모리 장치(107, 108, 109, 110)에 제공할 수 있다. 소거 동작 시, 컨트롤러(103)는 소거 커맨드 및 물리 블록 어드레스를 메모리 장치(107, 108, 109, 110)에 제공할 수 있다.
실시 예에서, 컨트롤러(103)는 호스트(101)로부터의 요청과 무관하게 자체적으로 커맨드, 어드레스 및 데이터를 생성하고, 메모리 장치(107, 108, 109, 110)에 전송할 수 있다. 예를 들면, 컨트롤러(103)는 웨어 레벨링(wear leveling), 리드 리클레임(read reclaim), 가비지 컬렉션(garbage collection)등을 수행하는데 수반되는 리드(독출) 동작 및 프로그램 동작들을 수행하기 위한 커맨드, 어드레스 및 데이터를 메모리 장치(107, 108, 109, 110)로 제공할 수 있다.
일부 실시예들에서, 컨트롤러(103)가 적어도 둘 이상의 메모리 장치(107, 108, 109, 110)들을 제어할 수 있다. 이 경우, 컨트롤러(103)는 동작 성능의 향상을 위해 메모리 장치(107, 108, 109, 110)들을 인터리빙 방식에 따라 제어할 수 있다. 인터리빙 방식은 적어도 둘 이상의 메모리 장치(107, 108, 109, 110)들에 대한 동작을 병렬적으로, 또는 동작이 중첩되도록 제어하는 방식일 수 있다. 인터리방 방식은 채널(Channel 0, Channel 1, Channel 2, Channel 3) 단위로 이루어질 수도 있다.
호스트(101)로부터 제공되는 리드(독출) 요청은 호스트(101)가 데이터 저장 장치(100)에 저장할 것을 요청했던 원본 데이터를 다시 호스트(101)에게 제공할 것을 요청하는 것이다. 컨트롤러(103)는 원본 데이터에 대해서 에러 정정 인코딩을 수행하여, 에러 정정을 위한 패리티 데이터가 포함된 쓰기 데이터를 생성한다. 컨트롤러(103)는 쓰기 데이터가 메모리 장치(107, 108, 109, 110)에 저장되도록 메모리 장치(107, 108, 109, 110)를 제어할 수 있다.
이후, 호스트(101)의 리드(독출) 요청에 응답하여, 컨트롤러(103)는 호스트(101)의 리드 요청에 대응되는 데이터를 메모리 장치(107, 108, 109, 110)로부터 획득하기 위해서 리드 커맨드 및 리드할 데이터가 저장된 메모리 셀들의 위치를 나타내는 물리 어드레스(주소)를 메모리 장치(107, 108, 109, 110)에 제공할 수 있다.
메모리 장치(107, 108, 109, 110)는 수신된 물리 어드레스(주소)에 저장된 데이터를 리드(독출) 전압을 이용하여 독출한 데이터를 컨트롤러(103)에 제공할 수 있다. 리드 전압은 메모리 셀에 저장된 데이터를 식별하기 위해 인가되는 전압일 수 있다. 컨트롤러(103)는 독출 데이터에 대해서 에러 정정 디코딩을 수행할 수 있다.
버퍼 메모리(105)는 휘발성 메모리 장치일 수 있다. 따라서, 전원이 차단되면, 버퍼 메모리(105)에 저장된 데이터는 유지되지 않을 수 있다. 예를 들어, 버퍼 메모리(105)는 DRAM(Dynamic Random Access Memory)으로 구성된 버퍼일 수 있다.
컨트롤러(103)는 호스트(101)의 요청에 따라 메모리 장치(107, 108, 109, 110)에 저장될 데이터를 임시로 저장하도록 버퍼 메모리(105)를 제어할 수 있다. 버퍼 메모리(105)에 저장되는 데이터는, 논리 어드레스(주소)에 따라 버퍼 메모리(105)내 미리 할당된 영역(미도시)에 저장될 수 있다.
한 번의 프로그램 동작으로 메모리 장치(107, 108, 109, 110)에 입력되는 데이터의 크기는 프로그램 단위로 언급될 수 있다. 호스트(101)로부터 수신한 프로그램 요청에 따라 입력되는 데이터의 크기와 메모리 장치(107, 108, 109, 110)의 프로그램 단위는 상이할 수 있다. 따라서, 컨트롤러(103)는 호스트(101)의 프로그램 요청에 따라 수신되는 데이터를 버퍼 메모리(105)에 저장할 수 있다. 이후, 컨트롤러(103)는 버퍼 메모리(105)에 저장된 데이터의 크기가 프로그램 단위가 되면 메모리 장치(107, 108, 109, 110)에 프로그램 하도록 버퍼 메모리(105) 및 메모리 장치(107, 108, 109, 110)를 제어할 수 있다. 도 1을 참조하면, 버퍼 메모리(105)는 데이터 저장 장치(100)에 포함되면서, 컨트롤러(103)의 외부에 위치한 것으로 도시되어 있으나, 이에 국한되지 않는다. 다양한 실시 예에서, 컨트롤러(103) 내부에 위치할 수 있다.
도 2는 본 개시의 예시적 실시 예에 따른 데이터 저장 장치의 동작 방법 중 암호화 동작을 개념적으로 나타내는 도면이다.
도 2를 참조하면, 데이터 저장 장치(20)는 제1 메모리(200)와 제2 메모리(210)를 포함할 수 있다. 예를 들어, 데이터 저장 장치(20)는 도 1의 데이터 저장 장치(100)의 일 예에 대응할 수 있다. 데이터 저장 장치(20)는, 외부의 요청(예를 들어, 호스트(101))이나 필요에 따라(예를 들어, 펌웨어(Firmware)의 필요에 따라) 제1 메모리(200)에 저장된 데이터에 대해 후술할 암호 모듈(Module)들을 활용하여 암호화를 수행할 수 있다. 일부 실시예들에서, 제1 메모리(200) 및 제2 메모리(210)는 버퍼 메모리일 수 있지만, 이에 국한되지 않는다. 본 명세서에서는 설명의 편의를 위해, 제1 메모리(200) 및 제2 메모리(210)에 대응하는 메모리는 버퍼 메모리인 경우를 가정하여 설명한다.
일부 실시예들에서, 제1 메모리(200)는 후술할 바와 같이 제2 메모리(210)의 영역에 대응되는 주소에 기초하여 외부 장치로부터 받거나 제1 메모리(200)에 저장되어 있는 일반 데이터(Plain Data)(201)를 제2 메모리(210)로 전송할 수 있다. 전송하는 과정에서, 데이터 저장 장치(20)에 포함된 후술할 암호 모듈을 활용할 수 있다. 암호 모듈을 온(ON) 상태로 할 경우, 제1 메모리(200)에서 전송한 일반 데이터(201)는 암호 모듈의 암호 알고리즘(예를 들어, AES(Advanced Encryption Standard))을 통해 암호화 될 수 있다. 즉, 전송 과정에서 제2 메모리(210)에 프로그램되기 전에 일반 데이터(201)를 암호화 할 수 있다. 온 상태의 암호 모듈에 의해 암호화된 암호화 데이터(Encrypt Data)(211)는 커맨드에 기초하여 제2 메모리(210)에 프로그램 될 수 있다.
일부 실시예들에서, 암호화 데이터(211)를 제2 메모리(210)에서 리드(독출)하기 전에, 일반 데이터(201)를 암호화한 암호 모듈을 오프(OFF) 상태로 할 수 있다. 제2 메모리(210)에 프로그램 된 암호화 데이터(211)는 커맨드에 기초하여 독출될 수 있다. 제2 메모리(210)에서 독출한 암호화 데이터(211)는 제1 메모리(200)로 전송될 수 있다. 결과적으로, 제1 메모리(200)의 일반 데이터(201)를 데이터 저장 장치(20)에 포함된 암호 모듈을 활용하여, 암호화를 위한 별도의 모듈을 새롭게 추가할 필요 없이 암호화 데이터(211)로 암호화 할 수 있다.
도 3은 본 개시의 예시적 실시 예에 따른 데이터 저장 장치의 동작 방법 중 복호화 동작을 개념적으로 나타내는 도면이다.
도 3을 참조하면, 데이터 저장 장치(30)는 제1 메모리(300)와 제2 메모리(310)를 포함할 수 있다. 예를 들어, 데이터 저장 장치(30)는 도 1의 데이터 저장 장치(100)의 일 예에 대응할 수 있다. 데이터 저장 장치(30)는, 외부의 요청(예를 들어, 호스트(101))이나 필요에 따라(예를 들어, 펌웨어의 필요에 따라) 제1 메모리(300)에 저장된 암호화 데이터에 대해 후술할 암호 모듈들을 활용하여 복호화를 수행할 수 있다. 전술한 바와 같이 일부 실시예들에서, 제1 메모리(300) 및 제2 메모리(310)는 버퍼 메모리일 수 있다.
일부 실시예들에서, 제1 메모리(300)는 후술할 바와 같이 제2 메모리(310)에 대응되는 주소에 기초하여 외부 장치로부터 받거나 제1 메모리(300)에 저장되어 있는 암호화 데이터(301)를 제2 메모리(310)로 전송할 수 있다. 전송하는 과정에서, 암호 모듈을 오프 상태로 할 경우, 제1 메모리(300)에서 전송한 암호화 데이터(301)는 복호화 과정 없이 제2 메모리(310)에서 수신될 수 있다. 즉, 제1 메모리(300)에서 전송한 암호화 데이터(301)는 커맨드에 기초하여 그대로 제2 메모리(310)에 프로그램 될 수 있다.
일부 실시예들에서, 암호화 데이터(301)를 제2 메모리(310)에서 제1 메모리(300)로 전송하는 과정에서, 데이터 저장 장치(30)에 포함된 후술할 암호 모듈을 활용할 수 있다. 암호화 데이터(301)를 제2 메모리(310)에서 독출하기 전에, 암호 모듈을 온 상태로 할 수 있다. 프로그램 된 암호화 데이터(301)는 커맨드에 기초하여 독출될 수 있다. 독출하여 전송하는 과정에서, 암호 모듈의 암호 알고리즘(예를 들어, AES)을 통해 암호화 데이터를 복호화 할 수 있다. 즉, 전송 과정에서 제1 메모리(300)에 저장되기 전에 암호화 데이터(301)를 복호화 할 수 있다. 결과적으로, 제1 메모리(300)의 암호화 데이터(301)를 데이터 저장 장치(30)에 포함된 암호 모듈을 활용하여, 복호화를 위한 별도의 모듈을 새롭게 추가할 필요 없이 일반 데이터(302)로 복호화 할 수 있다.
도 4는 도 1의 데이터 저장 장치의 구조를 본 개시의 예시적 실시 예에 따라 구체적으로 나타내는 도면이다.
도 4를 참조하면, 데이터 저장 장치(400)는 메모리 장치(410)(이하, 전술한 바와 같이 설명의 편의를 위해 낸드 플래시 메모리 장치로 설명한다.), 버퍼 메모리(431), 및 컨트롤러(440)를 포함할 수 있다. 메모리 장치(410)는 버퍼 영역(411) 및 낸드 플래시 메모리(412)를 포함할 수 있다. 컨트롤러(440)는 N 코어(420), F 코어(430), 및 낸드 플래시 메모리 장치(410)에 대응하는 암호 모듈(441)을 포함할 수 있다. 버퍼 메모리(431)와 버퍼 영역(411)은 채널(450)을 통해 연결될 수 있다.
버퍼 메모리(431)는 DRAM 버퍼 메모리일 수 있으나, 이에 국한되지 않으며, 다양한 종류의 버퍼 메모리일 수 있다. 또한, 본 도면 및 명세서에서는, 전술한 바와 같이 설명의 편의를 위해 낸드 플래시 메모리의 버퍼 영역(411)으로 지칭되었으나, 이에 국한되지 않는다. 즉, 낸드 플래시 메모리의 버퍼 영역(411)은 다양한 종류의 버퍼 메모리일 수 있다. 예를 들어, 낸드 플래시 메모리의 버퍼 영역(411)은 낸드 플래시 메모리 장치(410) 외부에 위치한 별도의 메모리일 수 있다.
N 코어(420)는 도 4에 도시된 바와 같이 컨트롤러(440)에 포함될 수 있다. N 코어(420)는 F 코어(430), 컨트롤러(440), 낸드 플래시 메모리 장치(410)의 동작을 전반적으로 제어할 수 있다. N 코어(420)는 CPU(Central Processing Unit)일 수 있다. N 코어(420)는 호스트(101)의 요청 또는 필요에 따라 암호화 및/또는 복호화 동작을 명령할 수 있다. 본 도면에서 N 코어(420)는 컨트롤러(440) 내부에 위치하지만, 이에 국한되지 않는다. 즉, N 코어(420)는 컨트롤러(440) 외부에 위치하여 버스(BUS)를 통해 컨트롤러(103) 및/또는 F 코어(430)와 연결될 수 있다.
일부 실시예들에서, N 코어(420)는 버퍼 메모리(431)가 가지고 있는 유효 데이터 버퍼에 접근할 수 있다. F 코어(430)는 N 코어(420)에게 버퍼 메모리(431)의 메모리 영역에 대한 주소를 제공할 수 있다. N 코어(420)는 해당 주소에 기초하여 컨트롤러(440)와 채널(450)을 통해 버퍼 메모리(431) 영역에 접근할 수 있다. 또한, N 코어(420)는 낸드 플래시 메모리 장치(410)에 물리적으로 저장되어 있는 물리 주소를 낸드 플래시 메모리 장치(410)로부터 제공받을 수 있다. N 코어(420)는 물리 주소를 컨트롤러(440)에게 제공할 수 있다. 컨트롤러(440)는 해당 물리 주소에 기초하여 채널(450)을 통해 낸드 플래시 메모리의 버퍼 영역(411)에 접근할 수 있다.
N 코어(420)는 버퍼 메모리(431)의 유효 데이터 버퍼를 DMA(Direct Memory Access) 단위로 나누어 데이터의 암호화 및/또는 복호화를 요청할 수 있다. 마찬가지로, 낸드 플래시 메모리의 버퍼 영역(411)에 대한 접근도 DMA 단위로 나누어 이루어질 수 있다. 전술한 바와 같이 기존의 프로그램/독출/소거 요청을 채널(450)을 통해 요청할 수 있으므로, N 코어(420) 및/또는 컨트롤러(440)는 데이터의 암호화 및/또는 복호화 기능을 후술할 방법에 의해 추가적으로 요청할 수 있다.
예를 들어, N 코어(420)는 F 코어(430)의 버퍼 메모리(431)(예를 들어, FTL(Flash Translation Layer)의 데이터 버퍼, 또는 DRAM 버퍼 등)로부터 데이터 버퍼의 주소를 받아 데이터 버퍼를 DMA 단위로 나누어 컨트롤러(440)를 통해 암호 모듈(441)을 활용하여 암호화 및/또는 복호화를 수행할 수 있다.
일부 실시예들에서, 낸드 플래시 메모리 장치(410)는 낸드 플래시 메모리의 버퍼 영역(411)과 낸드 플래시 메모리(412)를 포함할 수 있다. 전술한 바와 같이 낸드 플래시 메모리의 버퍼 영역(411)은 이에 국한되지 않으며, 낸드 플래시 메모리 장치(410) 외부에 위치한 별도의 버퍼 메모리일 수 있다. 낸드 플래시 메모리의 버퍼 영역(411)은 대응하는 채널(450)을 통해 버퍼 메모리(431)와 데이터를 송수신할 수 있다. 또한, 낸드 플래시 메모리의 버퍼 영역(411)은 낸드 플래시 메모리(412)에 데이터를 프로그램하거나, 낸드 플래시 메모리(412)로부터 데이터를 독출할 수 있다.
본 도면에서 F 코어(430)는 컨트롤러(440) 내부에 위치하지만, 이에 국한되지 않는다. 즉, F 코어(430)는 컨트롤러(440) 외부에 위치하여 버스(BUS)를 통해 컨트롤러(103) 및/또는 N 코어(420)와 연결될 수 있다.
일부 실시예들에서, 호스트의 요청(401)에 따라 F 코어(430)로부터 암호화 및/또는 복호화 요청이 발생하면, N 코어(420)는 해당 요청이 암호화 요청인지 복호화 요청인지 판단할 수 있다. 버퍼 메모리(431)는 전술한 바와 같이 DRAM 버퍼일 수 있으며, F 코어(430)는 버퍼 메모리(431)의 데이터 버퍼 주소를 N 코어(420)로 제공할 수 있다. N 코어(420)는 호스트의 암호화 및/또는 복호화 요청(401)에 따라 후술할 바와 같이 컨트롤러(440), 암호 모듈(441), 낸드 플래시 메모리의 버퍼 영역(411), 및 채널(450)을 통해 암호화 및/또는 복호화를 수행할 수 있다.
채널(450)의 전반적인 동작은 컨트롤러(440)의 제어에 기초할 수 있다. 채널(450)은 데이터가 이동하는 단위일 수 있다. 또한 채널(450)은 데이터 전송 과정에서 암호 모듈(441)과 같은 여러 모듈과 상호 작용할 수 있다.
일부 실시예들에서, 버퍼 메모리(431)와 낸드 플래시 메모리의 버퍼 영역(411) 간의 데이터 송수신은 채널(450)을 통해 이루어질 수 있다. 예를 들어, 채널(450)은 컨트롤러(440)의 제어에 기초하여 버퍼 메모리(431)에 저장된 데이터를 낸드 플래시 메모리의 버퍼 영역(411)에 프로그램할 수 있다. 또한, 예를 들어, 채널(450)은 컨트롤러(440)의 제어에 기초하여 낸드 플래시 메모리의 버퍼 영역(411)에 프로그램된 데이터를 독출하여 버퍼 메모리(431)로 저장할 수 있다. 그러나 이에 국한되지 않으며, 버퍼 메모리(431)와 낸드 플래시 메모리 장치(410)의 데이터 송수신도 채널(450)을 통해 이루어질 수 있다.
또한, 채널(450)을 통해, 전술한 바와 같이 기존에 수행하던 프로그램/독출/소거 등의 요청들을 수행할 수 있음은 자명할 것이다. 즉, 메모리들(예를 들어, 버퍼 메모리(431) 또는 낸드 플래시 메모리의 버퍼 영역(411) 등) 간의 동작을 수행하게 하는 위 요청들을 채널(450)을 통해 수행할 수 있었으므로, 데이터의 암호화 및/또는 복호화 요청은 후술할 방법에 의해 채널(450)을 통해 수행될 수 있다.
컨트롤러(440)는 N 코어(420)와 F코어(430)를 포함할 수 있다. 그러나 전술한 바와 같이 N 코어(420) 및/또는 F 코어(430)는 컨트롤러(440) 외부에 위치할 수 있으며, 버스를 통해 컨트롤러(440)와 연결될 수 있다. 또한, 컨트롤러(440)는 채널(450)의 전반적인 동작을 제어할 수 있다.
일부 실시예들에서, 컨트롤러(440)는 전술한 바와 같이 N 코어(420)로부터 낸드 플래시 메모리의 버퍼 영역(411)의 물리 주소를 수신할 수 있다. 컨트롤러(440)는 해당 물리 주소에 기초하여, 채널(450)을 통해 낸드 플래시 메모리의 버퍼 영역(411)에 접근할 수 있다. 컨트롤러(440)는 버퍼 메모리(431)에 저장된 데이터를 채널(450)을 통해 낸드 플래시 물리 주소에 기초하여 메모리의 버퍼 영역(411)에 프로그램할 수 있다.
일부 실시예들에서, 컨트롤러(440)는 낸드 플래시 메모리의 버퍼 영역(411)의 데이터를 채널(450)을 통해 독출할 수 있다. 또한, 컨트롤러(440)는 낸드 플래시 메모리의 버퍼 영역(411)에서 독출한 데이터를 채널(450)을 통해 버퍼 메모리(431)에 저장할 수 있다.
일부 실시예들에서, 컨트롤러(440)는 암호 모듈(441)과 채널(450)을 이용하여 일반 데이터의 암호화 및/또는 암호화 데이터의 복호화를 수행할 수 있다. 컨트롤러(440)는 낸드 플래시 메모리 장치(410)에 대응하는 암호 모듈(441)을 포함할 수 있으며, 암호 모듈(441)을 온(ON) 상태 또는 오프(OFF) 상태로 제어할 수 있다. 컨트롤러(440)는 암호 모듈(441) 이외의 다양한 모듈들 또는 IP들(예를 들어, Write Encapsulation, Write Decapsulation, ECC(Error Correction Code) Encoding, Read Encapsulation, Read Decapsulation, 또는 ECC Decoding 모듈들 또는 IP들)을 포함할 수 있다.
일부 실시예들에서, 암호 모듈(441)은 낸드 플래시 메모리 장치(410)에 대응하는 암호 모듈일 수 있다. 암호 모듈(441)은 버퍼 메모리(431)와 낸드 플래시 메모리의 버퍼 영역(411) 사이에 위치하여 기능을 수행할 수 있다. 그러나 암호 모듈(441)의 위치는 본 도면의 위치에 국한되지 않는다. 암호 모듈(441)은 컨트롤러(440)의 제어에 기초하여 온 상태로 되어 버퍼 메모리(431) 및 낸드 플래시 메모리의 버퍼 영역(411) 사이에서 채널(450)을 통해 송수신되는 일반 데이터 또는 암호화 데이터를 각각 암호화 또는 복호화할 수 있다. 또는, 암호 모듈(441)은 컨트롤러(440)의 제어에 기초하여 오프 상태로 되어 암호화 된 데이터를 복호화 하지 않고 제공할 수 있다.
구체적으로, 예를 들어, 암호 모듈(441)은 모듈의 상태를 온 상태로 하여 버퍼 메모리(431)에서 제공된 일반 데이터를 암호화하여 제공할 수 있다. 암호 모듈(441)은 모듈의 상태를 오프 상태로 하여 낸드 플래시 메모리의 버퍼 영역(411)에서 독출(리드)된 암호화 된 데이터를 복호화하지 않고 제공할 수 있다. 또는, 예를 들어, 암호 모듈(441)은 모듈의 상태를 오프 상태로 하여 버퍼 메모리(431)에서 제공된 암호화 데이터를 복호화하지 않고 제공할 수 있다. 암호 모듈(441)은 모듈의 상태를 온 상태로 하여 낸드 플래시 메모리의 버퍼 영역(411)에서 독출된 암호화 데이터를 복호화하여 제공할 수 있다.
일부 실시예들에서, 낸드 플래시 메모리의 버퍼 영역(411)에는 N 코어(420) 및/또는 컨트롤러(440)의 제어에 기초하여 버퍼 메모리(431)로부터 제공되어 암호 모듈(441)을 통해 암호화된 데이터가 프로그램될 수 있다. 또한, 낸드 플래시 메모리의 버퍼 영역(411)에는 버퍼 메모리(431)로부터 제공된 암호화 데이터가 프로그램 될 수 있다.
일부 실시예들에서, 전술한 바와 같이 낸드 플래시 메모리의 버퍼 영역(411)과 낸드 플래시 메모리(412)는 서로 연결되어 데이터를 송수신할 수 있다. 그러나, 후술할 바와 같이 DMA(Direct Memory Access) Only 모드를 통해 낸드 플래시 메모리의 버퍼 영역(411)에 데이터가 프로그램되거나 낸드 플래시 메모리의 버퍼 영역(411)의 데이터가 독출되는 경우, 낸드 플래시 메모리의 버퍼 영역(411)의 데이터는 낸드 플래시 메모리(412)에 대한 접근(413) 없이 프로그램 또는 독출될 수 있다.
일부 실시예들에서, 채널(450)을 통해 메모리(예를 들어, 버퍼 메모리(431) 또는 낸드 플래시 메모리의 버퍼 영역(411) 등)에 접근할 때, 인터리빙 방식으로 접근할 수 있다. 즉, 메모리를 일정 단위(예를 들어, Bank)로 나누어 채널(450)내에서 인터리빙 방식을 통해 병렬적으로 접근할 수 있다. 메모리에 기존의 데이터 프로그램/독출/소거 요청을 일정 단위(예를 들어, Bank)마다 병렬적으로 요청할 수 있었기 때문에, 암호화 요청 및/또는 복호화 요청을 추가적으로 요청할 수 있다.
도 5는 도 4의 장치의 데이터 암호화 동작 중 프로그램 동작을 수행하는 과정을 예시적으로 나타내는 도면이다.
도 5를 참조하면, 호스트(도 1의 101)의 요청(도 4의 401) 또는 필요에 따라(예를 들어, 펌웨어의 필요에 따라) 컨트롤러(530)는 낸드 플래시 메모리 장치(도 4의 410)에 대응하는 암호 모듈(531)을 활용하여 일반 데이터 암호화 동작의 프로그램 동작을 수행할 수 있다.
일부 실시예들에서, 버퍼 메모리(510)는 컨트롤러(530)의 제어에 기초하여 저장되어 있는 데이터를 채널(540)을 통해 낸드 플래시 메모리의 버퍼 영역(520)에 제공할 수 있다. 일부 실시예들에서, 컨트롤러(530)가 버퍼 메모리(510)의 데이터에 접근할 때, 버퍼 메모리(510)를 DMA 단위로 나누어 접근할 수 있다. 마찬가지로, 낸드 플래시 메모리의 버퍼 영역(520)에 대한 접근도 DMA 단위로 이루어질 수 있다.
일부 실시예들에서, 버퍼 메모리(510)에서 제공되는 데이터는 암호화되어 있지 않은 일반 데이터(511)일 수 있다. 이 경우, 컨트롤러(530)는 암호 모듈(531)을 온 상태가 되도록 제어할 수 있다. 이에 따라, 버퍼 메모리(510)에서 제공된 일반 데이터(511)는 암호 모듈(531)의 암호 알고리즘(예를 들어, AES(Advanced Encryption Standard))을 통해 암호화 될 수 있다. 암호 모듈(531)에 의해 암호화된 데이터는 채널(540)을 통해 낸드 플래시 메모리의 버퍼 영역(520)로 제공될 수 있다. 구체적으로, 컨트롤러(530)는 낸드 플래시 메모리의 버퍼 영역(520)의 물리 주소를 수신할 수 있으며, 수신한 주소에 기초하여 낸드 플래시 메모리의 버퍼 영역(520)의 메모리(521)에 암호화 된 데이터를 프로그램 할 수 있다. 결과적으로, 버퍼 메모리(510)에서 제공된 일반 데이터(511)를 별도의 모듈을 새롭게 추가할 필요 없이 암호화할 수 있다.
도 6은 도 5의 데이터 암호화 동작 중 프로그램 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 4 내지 도 6을 함께 참조하면, 일부 실시예들에 있어서, 암호화 요청이 수신될 경우(S601), 컨트롤러(530)는 낸드 플래시 메모리의 버퍼 영역(520)의 메모리(521)에 접근하기 위해서 주소를 수신(S602)할 수 있다. 또한, 컨트롤러(530)는 버퍼 메모리(510)에서 암호화할 일반 데이터(511)를 수신(S603)할 수 있다. 컨트롤러(530)는 암호화 요청에 기초하여 암호 모듈(531)을 온 상태로 하여 암호화된 데이터를 생성(S604) 할 수 있다. 즉, 암호 모듈(531)은 일반 데이터(511)를 암호화하여 제공할 수 있다. 컨트롤러(530)는 채널(540)을 통해 수신한 주소에 기초하여 낸드 플래시 메모리의 버퍼 영역(520)의 메모리(521)에 암호화된 데이터를 프로그램(S606)할 수 있다.
결과적으로, 버퍼 메모리(510)에서 제공된 일반 데이터(511)는 암호화 되어 낸드 플래시 메모리의 버퍼 영역(520)에 프로그램될 수 있다.
일부 실시예들에서, 낸드 플래시 메모리의 버퍼 영역(520)에 암호화된 데이터를 프로그램하는 과정에서, 컨트롤러(530)는 DMA Only Program 모드로 암호화된 데이터를 프로그램(S605)할 수 있다. 이 경우 전술한 바와 같이, 낸드 플래시 메모리의 버퍼 영역(520)에 프로그램된 데이터는 메모리 장치(예를 들어, 낸드 플래시 메모리(412))에 대한 접근(413) 없이 낸드 플래시 메모리의 버퍼 영역(520)에 프로그램될 수 있다. 즉, DMA Only 모드로 프로그램할 경우, 낸드 플래시 메모리 장치(410)의 낸드 플래시 메모리(412)에 대한 접근(413) 없이, 낸드 플래시 메모리 장치(410)에 대응하는 암호 모듈(441)만을 사용하는 것이므로, 낸드 플래시 메모리 장치(410)의 신뢰성에 영향을 미치지 않고 암호화 동작을 수행하는 효과를 얻을 수 있다. DMA Only Program 모드로 프로로그램하지 않을 경우에는, S605 단계는 생략될 수 있음은 자명할 것이다.
도 7은 도 4의 장치의 데이터 암호화 동작 중 독출 동작을 수행하는 과정을 예시적으로 나타내는 도면이다.
도 5 및 도 7을 참조하면, 일부 실시예들에서, 컨트롤러(530)는 암호화된 데이터를 복호화하지 않은 상태로 버퍼 메모리(510)로 저장하기 위해 암호 모듈(531)을 오프 상태로 할 수 있다. 컨트롤러(530)는 낸드 플래시 메모리의 버퍼 영역(520)의 메모리(521)에 저장되어 있는 암호화된 데이터를 채널(540)을 통해 독출할 수 있다. 이 때, 암호 모듈(531)은 오프 상태이므로, 독출된 암호화된 데이터는 복호화되지 않고 버퍼 메모리(510)에 저장될 수 있다.
도 8은 도 7의 데이터 암호화 동작 중 독출 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 4, 도 5, 도 7 및 도 8을 참조하면, 컨트롤러(530)는 암호화된 데이터를 복호화 하지 않고 다시 버퍼 메모리(510)로 가져오기 위해 암호 모듈(531)을 오프 상태(S801)로 할 수 있다. 컨트롤러(530)는 낸드 플래시 메모리의 버퍼 영역(520)의 메모리(521)에 저장되어 있는 암호화된 데이터를 독출(S803)하여 버퍼 메모리(510)로 전송(S804)할 수 있다. 결과적으로, 버퍼 메모리(510)에서 제공된 일반 데이터(511)를 별도의 모듈을 새롭게 추가할 필요 없이 암호화한 후, 다시 버퍼 메모리(510)에 저장하여 암호화된 데이터(701)를 얻을 수 있다.
일부 실시예들에서, 낸드 플래시 메모리의 버퍼 영역(520)의 메모리(521)에 암호화된 데이터를 독출하는 과정에서, 컨트롤러는 DMA Only Read 모드로 암호화된 데이터를 독출(S802)할 수 있다. 이 경우 전술한 바와 같이, 낸드 플래시 메모리의 버퍼 영역(520)에서 암호화된 데이터를 독출할 때, 데이터는 메모리 장치(예를 들어, 낸드 플래시 메모리(412))에 대한 접근(413) 없이 독출될 수 있다. 즉, DMA Only 모드로 독출할 경우, 낸드 플래시 메모리 장치(410)의 낸드 플래시 메모리(412)에 대한 접근(413) 없이, 낸드 플래시 메모리 장치(410)에 대응하는 암호 모듈(441)만을 사용하는 것이므로, 낸드 플래시 메모리 장치(410)의 신뢰성에 영향을 미치지 않고 암호화한 데이터의 독출을 수행하는 효과를 얻을 수 있다. DMA Only Read 모드로 독출하지 않을 경우에는, S802 단계는 생략될 수 있음은 자명할 것이다.
도 9는 본 개시의 다른 예시적 실시 예에 따른 복수의 채널을 포함하는 데이터 저장 장치의 구조를 구체적으로 나타내는 도면이다.
도 4 내지 도 9를 함께 참조하면, 데이터 저장 장치(900)는 메모리 장치(920)(이하, 전술한 바와 같이 설명의 편의를 위해 낸드 플래시 메모리 장치로 설명한다.), 버퍼 메모리(910), 컨트롤러(930), 및 제1 채널 내지 제4 채널(941, 942, 943, 944)을 를 포함할 수 있다. 컨트롤러(930)는 낸드 플래시 메모리 장치(920)에 대응하는 제1 암호 모듈 내지 제4 암호 모듈(931, 932, 933, 934)을 포함할 수 있다. 낸드 플래시 메모리 장치(920)는 버퍼 영역(921) 및 낸드 플래시 메모리(922)를 포함할 수 있다. 다양한 기능을 수행하는 N 코어 및 F 코어에 대한 설명은 도 4에서 전술한 바와 같으므로, 이에 대한 설명은 생략한다. 또한, 도시된 각 구성들의 구조 및 기능에 대하여는, 도 4에서 설명된 것과 중복되므로, 이에 대한 설명은 생략한다.
일부 실시예들에서, 채널의 개수와 암호 모듈의 개수는 복수일 수 있다. 이 때, 제1 채널 내지 제4 채널(941, 942, 943, 944)은 각각 제1 암호 모듈 내지 제4 암호 모듈(931, 932, 933, 934)과 각각 대응될 수 있다. 또한, 컨트롤러(930)는 제1 채널 내지 제4 채널(941, 942, 943, 944) 및 제1 암호 모듈 내지 제4 암호 모듈(931, 932, 933, 934) 각각을 제어하여 요청에 따라 동작하게 할 수 있다.
일부 실시예들에서, 각 채널(941, 942, 943, 944)은 인터리빙(Interleaving) 방식으로 버퍼 메모리(910) 및/또는 낸드 플래시 메모리의 버퍼 영역(921)에 접근할 수 있다. 예를 들어, 각 채널(941, 942, 943, 944)은 버퍼 메모리(910)를 DMA 단위로 나누어 각 채널(941, 942, 943, 944)마다 인터리빙하여 데이터의 암호화 및/또는 복호화를 요청할 수 있다. 마찬가지로, 낸드 플래시 메모리의 버퍼 영역(921)에 대한 접근 또한 DMA 단위로 나누어 각 채널(941, 942, 943, 944)마다 이루어질 수 있다. 기존에 프로그램/독출/소거 요청을 각 채널(941, 942, 943, 944)마다 병렬적으로 요청할 수 있었기 때문에 추가적으로 데이터의 암호화 및/또는 복호화를 요청할 수 있다.
일부 실시예들에서, 각 채널(941, 942, 943, 944) 마다 DMA 단위로 인터리빙 방식을 통해 접근하여, 비동기(Asynchronous) 방식으로 각 채널(941, 942, 943, 944)의 동작을 수행할 수 있다. 즉, 호스트(101) 또는 펌웨어 등은 하나 이상의 채널에 대하여 암호화 또는 복호화 동작을 요청한 이후, 스케줄링(Scheduling)을 통해 다른 채널에 위 요청과 다른 요청을 하여 동작을 수행하게 할 수 있다.
예를 들어, 호스트로부터의 복수의 요청(901)에 따라, 하나 이상의 채널에서 어느 데이터의 암호화 또는 복호화 동작을 수행 중이더라도, 다른 채널에서 비동기 방식으로 다른 데이터의 암호화 또는 복호화 동작을 수행할 수 있다. 또는, 하나 이상의 채널에서 암호화 또는 복호화 동작을 수행 중이더라도, 다른 채널에서 비동기 방식으로 암호화 또는 복호화 이외의 메모리 동작(예를 들어, 낸드 플래시 메모리(922)에 대한 데이터 기입 동작, 데이터 독출 동작, 데이터 소거 동작 등)을 수행할 수 있다.
구체적으로, 일부 실시예들에서, 컨트롤러(930)는 호스트로부터 복수의 요청(901)을 수신할 수 있다. 호스트로부터의 복수의 요청(901)은 암호화 및/또는 복호화 요청일 수 있다. 이하 호스트로부터의 복수의 요청(901)이 복수의 암호화 요청인 경우에 대하여 예시적으로 설명하지만, 이하의 설명은 호스트로부터의 복수의 요청(901)이 암호화 및/또는 복호화 요청인 경우에도 후술할 복호화 동작을 수행하는 방법을 적용하여 동일한 방식으로 적용될 수 있음은 자명할 것이다.
예를 들어, 컨트롤러(930)가 호스트 등으로부터 2개의 암호화 요청을 수신한 경우, 컨트롤러(930)는 버퍼 메모리(910)의 유효 데이터 버퍼를 DMA 단위로 나누어 제1 채널(941) 및 제2 채널(942) 마다 각각 접근하여 암호화 되지 않은 제1 일반 데이터(Plain Data)와 제2 일반 데이터를 수신할 수 있다. 이 때, 제1 채널(941)및 제2 채널(942)의 버퍼 메모리(910)에 대한 접근은 인터리빙 방식으로 이루어질 수 있다. 즉, 예를 들어, 제1 채널(941)의 버퍼 메모리(910)에 대한 접근이 종료될 때까지 다른 채널(예를 들어, 제2 채널(942))의 접근이 제한되는 것이 아니라, 버퍼 메모리(910)의 메모리 영역들을 DMA 가능한 단위로 나누어 채널마다 접근하기 때문에, 각 채널은 버퍼 메모리(910)의 서로 다른 메모리 영역으로의 접근을 통해 병렬적으로 동작을 수행할 수 있다. 따라서 제1 채널(941)과 제2 채널(942)는 각각 제1 일반 데이터와 제2 일반 데이터를 병렬적으로 수신할 수 있다. 마찬가지로, 낸드 플래시 메모리의 버퍼 영역(921)에 대한 접근 또한 DMA 단위로 나누어 각 채널(941, 942)마다 병렬적으로 이루어질 수 있다.
또한, 컨트롤러(930)는 채널들(941, 942)을 통한 낸드 플래시 메모리의 버퍼 영역(921)로의 접근을 위한 주소를 각각 수신할 수 있다. 컨트롤러(930)는 수신한 암호화 요청들을 수행하기 위해, 제1 채널(941)과 제2 채널(942)에 대응하는 제1 암호 모듈(931)과 제2 암호 모듈(932)을 온 상태로 할 수 있다. 이에 따라, 제1 암호 모듈(931)과 제2 암호 모듈(932)은 각각 제1 일반 데이터와 제2 일반 데이터를 암호화할 수 있다. 전술한 바와 마찬가지 방식으로, 제1 암호 모듈(931)과 제2 암호 모듈(932)은 병렬적으로 암호화할 수 있다. 컨트롤러(930)는 제1 채널(941)과 제2 채널(942)을 통해 낸드 플래시 메모리의 버퍼 영역(921)의 수신한 주소에 기초하여 메모리 영역에 암호화된 제1 데이터와 암호화된 제2 데이터를 병렬적으로 프로그램할 수 있다.
일부 실시예들에서, 낸드 플래시 메모리의 버퍼 영역(921)에 암호화된 데이터를 프로그램하는 과정에서, 컨트롤러(930)는 제1 채널(941) 및 제2 채널(942) 중 적어도 하나의 채널을 통해 DMA Only Program 모드로 암호화된 데이터를 프로그램할 수 있다. 즉, 낸드 플래시 메모리(922)에 대한 접근(923) 없이 프로그램 동작을 수행할 수 있다. 이에 대한 구체적인 과정 및 효과는 전술한 바와 같으므로 생략한다.
일부 실시예들에서, 예를 들어 컨트롤러(930)는 호스트 등으로부터 2개의 암호화 요청을 수신할 수 있다. 이 경우, 컨트롤러(930)는 전술한 바와 같이, 제1 채널(941)과 제2 채널(942)을 통해 암호화 요청들을 수행할 수 있다. 이 때, 제1 채널(941)와 제2 채널(942)을 제외한 제3 채널(943)과 제4 채널(944)은 암호화 동작 이외의 작업을 수행할 수 있다. 암호화 동작 이외의 작업 수행에 있어서, 제3 채널(943) 및/또는 제4 채널(943)에서 버퍼 메모리(910)에 대한 접근이 필요할 경우, 접근은 채널마다 DMA 단위로 나누어 인터리빙 방식으로 이루어질 수 있다. 즉, 전술한 바와 같이, 각 채널들(941, 942, 943, 944)은 버퍼 메모리(910) 및/또는 낸드 플래시 메모리의 버퍼 영역(921) 내의 서로 다른 메모리 영역으로의 접근을 통해 병렬적으로 동작을 수행할 수 있다. 결과적으로, 제1 채널(941)과 제2 채널(942)이 각각 암호화 동작을 수행 중이더라도, 제3 채널(943) 및 제4 채널(944)은 각각 암호화 동작 이외의 작업을 병렬적으로 수행할 수 있다.
본 도면에서는 복수의 채널 및 복수의 암호 모듈이 예시적으로 4개로 도시되어 있지만, 이에 국한되지 않는다. 채널 및 암호 모듈은 4개보다 많을 수 있으며, 암호화 요청의 수도 2개보다 많을 수 있다.
도 10은 도 9의 장치의 데이터 암호화 동작 중 프로그램 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 6, 도 9 및 도 10을 참조하면, 도 10에 도시한 복수의 채널 중 한 개 이상의 채널에서 암호화 동작의 프로그램 동작을 수행하는 과정(S1001 내지 S1005)은, 도 6에 도시한 단일 채널에서 암호화 동작의 프로그램 동작을 수행하는 과정(S601 내지 S606)으로 설명될 수 있으므로, 이에 대한 설명은 생략한다.
일부 실시예들에서, 전술한 바와 같이 암호화 요청을 수신한 한 개 이상의 채널(S1001)에서 암호화 동작의 프로그램 동작을 수행 중(S1002 내지 S1005)이더라도, 다른 채널에서 다른 암호화 동작 또는 암호화 동작 이외의 작업을 수행할 수 있다. 구체적으로, 전술한 바와 같이 채널마다 DMA 단위의 인터리빙 방식으로 동작을 수행하기 때문에, 각 채널의 작업 완료 여부는 서로 다를 수 있다. 따라서, 한 개 이상의 채널에서 낸드 플래시 메모리의 버퍼 영역에 암호화된 데이터를 프로그램하는 단계(S1005)가 종료되더라도 다른 채널에서의 작업이 종료 되었는지를 판단(S1006)할 수 있다. 예를 들어, 어느 한 개 이상의 채널에서 S1005 단계가 종료되더라도 다른 채널에서의 작업이 종료되지 않은 경우, 다른 채널의 작업을 그대로 수행(S1007)할 수 있다. 예를 들어, 다른 채널에서의 작업이 모두 수행된 경우, 모든 채널들에 대한 DMA 단위의 접근이 모두 종료 되었는지를 판단(S1008)할 수 있다. 모든 채널들에 대한 DMA 단위의 접근이 종료되지 않은 경우, S1006 내지 S1008 단계를 반복적으로 수행하여 작업을 모두 수행할 수 있다. 모든 채널들에 대한 DMA 단위의 접근이 종료된 경우, 암호화 동작의 프로그램 동작을 수행한 채널을 포함한 모든 채널들의 동작이 종료된 것으로 판단할 수 있다. 결과적으로, 복수의 채널 각각에서 암호화 동작의 프로그램 동작 또는 그 이외의 작업을 병렬적으로 수행할 수 있다.
도 11은 도 9의 장치의 데이터 암호화 동작 중 독출 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 8, 도 9, 및 도 11을 참조하면, 도 11에 도시한 복수의 채널 중 한 개 이상의 채널에서 암호화 동작의 독출 동작을 수행하는 과정(S1101 내지 S1104)은, 도 8에 도시한 단일 채널에서 암호화 동작의 독출 동작을 수행하는 과정(S801 내지 S804)으로 설명될 수 있으므로, 이에 대한 설명은 생략한다.
일부 실시예들에서, 전술한 바와 같이 암호화 요청을 수신한 한 개 이상의 채널(S1101)에서, 암호화 동작의 독출 동작을 수행 중(S1101 내지 S1104)이더라도, 다른 채널에서 다른 암호화 동작 또는 암호화 동작 이외의 작업을 수행할 수 있다. 구체적으로, 전술한 바와 같이 채널마다 DMA 단위의 인터리빙 방식으로 동작을 수행하기 때문에, 각 채널의 작업 완료 여부는 서로 다를 수 있다. 따라서, 한 개 이상의 채널에서 독출한 암호화된 데이터를 버퍼 메모리에 저장하는 단계(S1104)가 종료되더라도 다른 채널에서의 작업이 종료 되었는지를 판단(S1105)할 수 있다. 예를 들어, 어느 한 개 이상의 채널에서 S1104 단계가 종료되더라도 다른 채널에서의 작업이 종료되지 않은 경우, 다른 채널의 작업을 그대로 수행(S1106)할 수 있다. 예를 들어, 다른 채널에서의 작업이 모두 수행된 경우, 모든 채널들에 대한 DMA 단위의 접근이 모두 종료 되었는지를 판단(S1107)할 수 있다. 모든 채널들에 대한 DMA 단위의 접근이 종료되지 않은 경우, S1105 내지 S1107 단계를 반복적으로 수행하여 작업을 모두 수행할 수 있다. 모든 채널들에 대한 DMA 단위의 접근이 종료된 경우, 암호화 동작의 독출 동작을 수행한 채널을 포함한 모든 채널들의 동작이 종료된 것으로 판단할 수 있다. 결과적으로, 복수의 채널 각각에서 암호화 동작의 독출 동작 또는 그 이외의 작업을 병렬적으로 수행할 수 있다.
도 12는 도 4의 장치의 암호화 데이터의 복호화 동작을 수행하는 과정을 예시적으로 나타내는 도면이다.
도 12를 참조하면, 호스트(101)의 요청(도 9의 901)의 또는 필요에 따라(예를 들어, 펌웨어의 필요에 따라) 컨트롤러(1230)는 낸드 플래시 메모리 장치(도 9의 920)에 대응하는 암호 모듈(1231)을 활용하여 암호화 데이터의 복호화 동작을 수행할 수 있다.
일부 실시예들에서, 버퍼 메모리(1210)는 컨트롤러(1230)의 제어에 기초하여 저장되어 있는 데이터를 채널(1240)을 통해 낸드 플래시 메모리의 버퍼 영역(1220)에 제공할 수 있다. 일부 실시예들에서, 컨트롤러(1230)가 버퍼 메모리(1210)의 데이터에 접근할 때, 버퍼 메모리(1210)를 DMA 단위로 나누어 접근할 수 있다. 마찬가지로, 낸드 플래시 메모리의 버퍼 영역(1220)에 대한 접근도 DMA 단위로 이루어질 수 있다.
일부 실시예들에서, 버퍼 메모리(1210)에서 제공되는 데이터는 암호화되어 있는 데이터(1211)일 수 있다. 이 경우, 컨트롤러(1230)는 암호 모듈(1231)을 오프 상태가 되도록 제어할 수 있다. 이에 따라, 버퍼 메모리(1210)에서 제공된 암호화 데이터(1211)는 복호화되지 않은 상태로 제공될 수 있다. 암호화 데이터(1211)는 채널(1240)을 통해 낸드 플래시 메모리의 버퍼 영역(1220)로 제공될 수 있다. 구체적으로, 컨트롤러(1230)는 낸드 플래시 메모리의 버퍼 영역(1220)의 주소를 수신할 수 있으며, 수신한 주소에 기초하여 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에 암호화 데이터(1211)를 프로그램 할 수 있다.
컨트롤러(1230)는 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에 프로그램 된 암호화 데이터를 복호화하기 위해 암호 모듈(1231)을 온 상태가 되도록 제어할 수 있다. 컨트롤러(1230)는 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에 저장되어 있는 암호화 데이터를 채널(1240)을 통해 독출할 수 있다. 이에 따라, 암호 모듈(1231)은 온 상태이므로, 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에서 독출한 암호화 데이터는 암호 모듈(1231)의 암호 알고리즘(예를 들어, AES(Advanced Encryption Standard))을 통해 복호화 될 수 있다. 컨트롤러(1230)는 암호 모듈(1231)에 의해 복호화 된 데이터를 채널(1240)을 통해 버퍼 메모리(1210)로 제공할 수 있다.
도 13은 도 12의 암호화 데이터의 복호화 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 4, 도 12, 및 도 13을 참조하면, 일부 실시예들에 있어서, 복호화 요청이 수신될 경우(S1301), 컨트롤러(1230)는 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에 접근하기 위해서 주소를 수신(S1302)할 수 있다. 또한, 컨트롤러(1230)는 버퍼 메모리(1210)에서 복호화할 암호화 데이터(1211)를 수신(S1303)할 수 있다. 컨트롤러(1230)는 복호화 요청에 기초하여 암호 모듈(1231)을 오프 상태(S1304)로 할 수 있다. 따라서, 암호 모듈(1231)은 암호화 데이터(1211)를 복호화하지 않은 상태로 제공할 수 있다. 컨트롤러(1230)는 채널(1240)을 통해 수신한 주소에 기초하여 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에 암호화 데이터를 프로그램(S1306)할 수 있다.
일부 실시예들에서, 낸드 플래시 메모리의 버퍼 영역(1220)에 암호화 데이터(1211)를 프로그램하거나 후술할 바와 같이 낸드 플래시 메모리의 버퍼 영역(1220)의 암호화 데이터를 독출하는 과정에서, 컨트롤러(1230)는 DMA Only Program/Read 모드로 암호화 데이터를 프로그램(S1305) 또는 독출(S1308)할 수 있다. 이 경우 전술한 바와 같이, 낸드 플래시 메모리의 버퍼 영역(1220)에 프로그램되는 암호화 데이터 또는 낸드 플래시 메모리의 버퍼 영역(1220)에서 독출되는 암호화 데이터는 메모리 장치(예를 들어, 낸드 플래시 메모리(412))에 대한 접근(413) 없이 프로그램 또는 독출될 수 있다. 즉, DMA Only 모드로 프로그램 또는 독출할 경우, 낸드 플래시 메모리 장치(410)의 낸드 플래시 메모리(412)에 대한 접근(413) 없이, 낸드 플래시 메모리 장치(410)에 대응하는 암호 모듈(441)만을 사용하는 것이므로, 낸드 플래시 메모리 장치(410)의 신뢰성에 영향을 미치지 않고 복호화 동작을 수행하는 효과를 얻을 수 있다. DMA Only Program 및/또는 Read모드로 프로그램 및/또는 독출하지 않을 경우에는, S1305 단계 및/또는 S1308 단계는 생략될 수 있음은 자명할 것이다.
컨트롤러(1230)는 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에 프로그램된 암호화 데이터를 복호화하기 위해 암호 모듈(1231)을 온 상태(S1307)로 할 수 있다. 컨트롤러(1230)는 낸드 플래시 메모리의 버퍼 영역(1220)의 메모리(1221)에 프로그램되어 있는 암호화 데이터를 독출하여 복호화된 데이터를 생성(S1309)할 수 있다. 즉, 암호 모듈(1231)은 암호화 데이터를 복호화하여 제공할 수 있다. 컨트롤러(1230)는 버퍼 메모리(1210)에 복호화된 데이터를 저장(S1310)할 수 있다. 결과적으로, 버퍼 메모리(1210)에서 제공된 암호화 데이터(1211)를 별도의 모듈을 새롭게 추가할 필요 없이 복호화한 후, 다시 버퍼 메모리(1210)에 저장하여 복호화된 데이터(1212)를 얻을 수 있다.
도 14는 도 9의 장치의 암호화 데이터의 복호화 동작을 수행하는 과정을예시적으로 나타내는 흐름도이다.
도 9, 도 13 및 도 14을 참조하면, 도 9에 도시한 복수의 채널 중 한 개 이상의 채널에서 복호화 동작을 수행하는 과정(S1401 내지 S1406 및 S1410 내지 S1413)은, 도 13에 도시한 단일 채널에서 복호화 동작을 수행하는 과정(S1301 내지 S1310)으로 설명될 수 있으므로, 이에 대한 설명은 생략한다.
일부 실시예들에서, 전술한 바와 같이 복호화 요청을 수신한 한 개 이상의 채널(S1401)에서 복호화 동작의 프로그램 동작을 수행 중(S1401 내지 S1406)이더라도, 다른 채널에서 다른 복호화 동작 또는 복호화 동작 이외의 작업을 수행할 수 있다. 구체적으로, 전술한 바와 같이 채널마다 DMA 단위의 인터리빙 방식으로 동작을 수행하기 때문에, 각 채널의 작업 완료 여부는 서로 다를 수 있다. 따라서, 한 개 이상의 채널에서 낸드 플래시 메모리의 버퍼 영역에 암호화 데이터를 프로그램하는 단계(S1406)가 종료되더라도 다른 채널에서의 작업이 종료 되었는지를 판단(S1407)할 수 있다. 예를 들어, 어느 한 개 이상의 채널에서 S1005 단계가 종료되더라도 다른 채널에서의 작업이 종료되지 않은 경우, 다른 채널의 작업을 그대로 수행(S1408)할 수 있다. 예를 들어, 다른 채널에서의 작업이 모두 수행된 경우, 모든 채널들에 대한 DMA 단위의 접근이 모두 종료 되었는지를 판단(S1409)할 수 있다. 모든 채널들에 대한 DMA 단위의 접근이 종료되지 않은 경우, S1407 내지 S1409 단계를 반복적으로 수행하여 작업을 모두 수행할 수 있다. 모든 채널들에 대한 DMA 단위의 접근이 종료된 경우, 복호화 동작의 프로그램 동작을 수행한 채널을 포함한 모든 채널들의 동작이 종료된 것으로 판단할 수 있다. 결과적으로, 복수의 채널 각각에서 복호화 동작의 프로그램 동작 또는 그 이외의 작업을 병렬적으로 수행할 수 있다.
일부 실시예들에서, 전술한 바와 같이 복호화 요청을 수신한 한 개 이상의 채널(S1401)에서, 복호화 동작의 독출 동작을 수행 중(S1410 내지 S1413)이더라도, 다른 채널에서 다른 복호화 동작 또는 복호화 이외의 작업을 수행할 수 있다. 구체적으로, 전술한 바와 같이 채널마다 DMA 단위의 인터리빙 방식으로 동작을 수행하기 때문에, 각 채널의 작업 완료 여부는 서로 다를 수 있다. 따라서, 한 개 이상의 채널에서 복호화된 데이터를 버퍼 메모리에 저장하는 단계(S1413)가 종료되더라도 다른 채널에서의 작업이 종료 되었는지를 판단(S1414)할 수 있다. 예를 들어, 어느 한 개 이상의 채널에서 S1413 단계가 종료되더라도 다른 채널에서의 작업이 종료되지 않은 경우, 다른 채널의 작업을 그대로 수행(S1415)할 수 있다. 예를 들어, 다른 채널에서의 작업이 모두 수행된 경우, 채널들에 대한 DMA 단위의 접근이 모두 종료 되었는지를 판단(S1416)할 수 있다. 채널들에 대한 DMA 단위의 접근이 종료되지 않은 경우, S1414 내지 S1416 단계를 반복적으로 수행할 수 있다. 채널들에 대한 DMA 단위의 접근이 종료된 경우, 복호화 동작의 독출 동작을 수행한 채널을 포함한 모든 채널들의 동작이 종료된 것으로 판단할 수 있다. 결과적으로, 복수의 채널 각각에서 복호화 동작의 독출 동작 또는 그 이외의 작업을 병렬적으로 수행할 수 있다.
도 15는 본 개시의 예시적 실시 예에 따른 복수의 채널을 포함하는 데이터 저장 장치에서 암호화 동작 및 복호화 동작을 수행하는 과정을 예시적으로 나타내는 흐름도이다.
도 1 및 도 9 내지 도 15를 함께 참조하면, 데이터 저장 장치(900)의 복수의 채널 중 한 개 이상의 채널에서 암호화 동작의 프로그램 동작을 수행하는 과정(S1501, S1503 내지 S1506), 암호화 동작의 독출 동작을 수행하는 과정(S1511 내지 S1514), 복호화 동작을 수행하는 과정(S1501, S1518, S1519, S1505, S1506, S1520 내지 S1522, S1514)은 상세히 전술한 바와 같으므로, 이에 대한 구체적인 설명은 생략한다. 또한, 복수의 채널에서 암호화 동작 및/또는 복호화 동작을 병렬적으로 수행하거나, 복수의 채널에서 암호화 동작 및/또는 복호화 동작과 암호화 동작, 및 복호화 동작 이외의 작업을 병렬적으로 수행하는 과정(S1507 내지 S1509 및 S1515 내지 S1517)도 상세히 전술한 바와 같으므로, 이에 대한 구체적인 설명은 생략한다.
일부 실시예들에서, 호스트 등으로부터 복수의 암호화 요청 및/또는 복호화 요청을 수신한 경우(S1501), 컨트롤러는 전술한 바와 같이 해당 요청이 암호화 요청인지 복호화 요청인지 판단(S1502)할 수 있다.
이하 호스트 등으로부터 수신한 복수의 요청 중 하나가 암호화 요청인 경우에 대하여 예시적으로 설명하지만, 이하의 설명은 호스트 등으로부터 수신한 복수의 요청이 복수의 암호화 및/또는 복호화 요청인 경우에도 전술한 암호화 동작 및 복호화 동작을 수행하는 방법을 적용하여 동일한 방식으로 적용될 수 있음은 자명할 것이다.
예를 들어, 데이터 저장 장치(900)는 컨트롤러(930)를 통해 모든 채널들에 대해 DMA 단위로 제1 작업을 수행할 수 있다. 컨트롤러(930)는 수신한 요청이 암호화 요청일 경우, 제1 채널(941)을 통해 암호화 동작의 프로그램 동작을 수행(S1503 내지 S1506)할 수 있다. 제1 채널(941)을 통해 암호화 동작의 프로그램 동작을 수행 중이더라도, 다른 채널들에서 다른 동작들(예를 들어, 다른 암호화 동작, 복호화 동작 또는 암호화 동작 및 복호화 동작 이외의 메모리 동작)을 병렬적으로 수행할 수 있다. 컨트롤러(930)는 모든 채널들에 대한 DMA 단위의 제1 작업이 종료되었는지 판단(S1509)할 수 있다. 모든 채널들에 대한 DMA 단위의 제1 작업이 종료된 경우, 제1 채널(941)을 포함한 모든 채널들의 동작이 종료된 것으로 판단할 수 있다. 이 경우, 컨트롤러(930)는 모든 채널들에 대해 DMA 단위로 제2 작업을 수행할 수 있다. 컨트롤러는 제1 채널(941)을 통해 암호화 동작의 독출 동작을 수행(S1511 내지 S1514)할 수 있다. 마찬가지로, 제1 채널(941)을 통해 암호화 동작의 독출 동작이 수행 중이더라도, 다른 채널들에서 다른 동작들(예를 들어, 다른 암호화 동작, 복호화 동작 또는 암호화 동작 및 복호화 동작 이외의 메모리 동작)을 병렬적으로 수행할 수 있다. 컨트롤러(930)는 모든 채널들에 대한 DMA 단위의 제2 작업이 종료되었는지 판단(S1517)할 수 있다. 모든 채널들에 대한 DMA 단위의 제2 작업이 종료된 경우, 제1 채널(941)을 포함한 모든 채널들의 동작이 종료된 것으로 판단할 수 있다.
결과적으로, 데이터 저장 장치(900)는 호스트 등으로부터 복수의 암호화 요청 및/또는 복호화 요청을 포함한 복수의 요청(901)들을 수신하더라도, 데이터 저장 장치(900)는 컨트롤러(930)를 통해 복수의 채널들을 이용하여 복수의 요청들(901)을 병렬적으로 수행할 수 있다.
본 개시는 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (10)

  1. 버퍼 메모리, 비휘발성 메모리 및 컨트롤러를 포함하는 SSD(Solid State Drive)의 동작 방법으로서,
    호스트로부터, 상기 버퍼 메모리에 저장된 데이터에 대한 암호화 요청을 수신하는 단계; 및
    상기 암호화 요청에 따른 암호화 동작을 수행하는 단계를 포함하고,
    상기 암호화 동작을 수행하는 단계는 프로그램 동작을 수행하는 단계를 포함하고,
    상기 프로그램 동작을 수행하는 단계는,
    상기 암호화 요청에 응답하여, 상기 비휘발성 메모리의 버퍼 영역의 물리 주소를 확인하는 단계;
    상기 컨트롤러에 포함된 상기 비휘발성 메모리에 대응하는 암호 모듈을 온(ON) 상태로 하여 상기 버퍼 메모리에 저장된 상기 데이터를 암호화함으로써 암호화된 데이터를 생성하는 단계; 및
    상기 물리 주소에 기초하여, 상기 암호화된 데이터를 상기 비휘발성 메모리의 상기 버퍼 영역에 프로그램하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 물리 주소에 기초하여, 상기 비휘발성 메모리의 상기 버퍼 영역에 상기 암호화된 데이터를 프로그램할 때, DMA Only Program 모드로 프로그램하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 암호화 요청에 따른 상기 암호화 동작을 수행하는 단계는 독출 동작을 수행하는 단계를 더 포함하고,
    상기 독출 동작을 수행하는 단계는,
    상기 비휘발성 메모리에 대응하는 상기 암호 모듈을 오프(OFF) 상태로 하는 단계;
    상기 비휘발성 메모리의 상기 버퍼 영역으로부터 상기 암호화된 데이터를 독출하는 단계;
    독출된 상기 암호화된 데이터를 상기 버퍼 메모리에 저장하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 컨트롤러는 상기 암호 모듈을 포함하는 복수의 암호 모듈들을 포함하고,
    상기 복수의 암호 모듈들은 복수의 채널들에 각각 대응하며,
    상기 복수의 채널들은 상기 비휘발성 메모리의 상기 버퍼 영역에 대응하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 복수의 채널들은 제1 채널 및 제2 채널을 포함하고,
    상기 복수의 암호 모듈들은 제1 암호 모듈 및 제2 암호 모듈을 포함하고,
    상기 암호화 요청을 수신하는 단계는,
    상기 호스트로부터, 상기 버퍼 메모리에 저장된 제1 데이터 및 제2 데이터 각각에 대한 제1 암호화 요청 및 제2 암호화 요청을 수신하는 단계를 포함하고,
    상기 암호화 동작을 수행하는 단계는,
    상기 제1 암호화 요청에 따라 제1 물리 주소에 기초하여, 상기 제1 채널의 상기 제1 암호 모듈을 이용하여 상기 프로그램 동작을 수행하는 단계 및 상기 독출 동작을 수행하는 단계가 수행되는 제1 암호화 단계; 및
    상기 제2 암호화 요청에 따라 제2 물리 주소에 기초하여, 상기 제2 채널의 상기 제2 암호 모듈을 이용하여 상기 프로그램 동작을 수행하는 단계 및 상기 독출 동작을 수행하는 단계가 수행되는 제2 암호화 단계를 포함하며,
    상기 제1 암호화 단계 및 상기 제2 암호화 단계는 병렬적으로 수행되는 것을 특징으로 하는 방법.
  6. 제4항에 있어서,
    상기 복수의 채널들은 제1 채널 및 제2 채널을 포함하고,
    상기 암호 모듈은 상기 제1 채널에 대응하고,
    상기 방법은, 상기 제2 채널을 이용하여 상기 비휘발성 메모리에 대한 데이터 기입 동작, 데이터 독출 동작 및 소거 동작 중 적어도 하나를 포함하는 메모리 동작을 수행하는 단계를 더 포함하며,
    상기 암호화 동작을 수행하는 단계는, 상기 제1 채널을 이용하여 상기 프로그램 동작을 수행하는 단계 및 상기 독출 동작을 수행하는 단계가 수행되는 것을 특징으로 하고,
    상기 암호화 동작을 수행하는 단계 및 상기 메모리 동작을 수행하는 단계는 병렬적으로 수행되는 것을 특징으로 하는 방법.
  7. 버퍼 메모리, 비휘발성 메모리 및 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법으로서,
    호스트로부터, 상기 버퍼 메모리에 저장된 암호화 데이터에 대한 복호화 요청을 수신하는 단계;
    상기 복호화 요청에 따른 복호화 동작을 수행하는 단계를 포함하고,
    상기 복호화 동작을 수행하는 단계는,
    상기 복호화 요청에 응답하여, 상기 비휘발성 메모리의 버퍼 영역의 물리 주소를 확인하는 단계;
    상기 컨트롤러에 포함된 상기 비휘발성 메모리에 대응하는 암호 모듈을 오프(OFF) 상태로 하는 단계;
    상기 물리 주소에 기초하여, 상기 암호화 데이터를 상기 비휘발성 메모리의 상기 버퍼 영역에 프로그램하는 단계;
    상기 암호 모듈을 온(ON) 상태로 하는 단계;
    상기 비휘발성 메모리의 상기 버퍼 영역으로부터 상기 암호화 데이터를 독출하여 복호화함으로써 복호화된 데이터를 생성하는 단계; 및
    상기 복호화된 데이터를 상기 버퍼 메모리에 저장하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    상기 컨트롤러는 상기 암호 모듈을 포함하는 복수의 암호 모듈들을 포함하고,
    제1 암호 모듈 및 제2 암호 모듈을 포함하는 상기 복수의 암호 모듈들은, 제1 채널 및 제2 채널을 포함하는 복수의 채널들에 각각 대응하며,
    상기 복수의 채널들은 상기 비휘발성 메모리의 상기 버퍼 영역에 대응하고,
    상기 복호화 요청을 수신하는 단계는,
    상기 호스트로부터, 상기 버퍼 메모리에 저장된 제1 암호화 데이터 및 제2 암호화 데이터 각각에 대한 제1 복호화 요청 및 제2 복호화 요청을 수신하는 단계를 포함하고,
    상기 복호화 동작을 수행하는 단계는,
    상기 제1 복호화 요청에 따라 제1 물리 주소에 기초하여, 상기 제1 채널의 상기 제1 암호 모듈을 이용하여 복호화가 수행되는 제1 복호화 단계; 및
    상기 제2 복호화 요청에 따라 제2 물리 주소에 기초하여, 상기 제2 채널의 상기 제2 암호 모듈을 이용하여 복호화가 수행되는 제2 복호화 단계를 포함하며,
    상기 제1 복호화 단계 및 상기 제2 복호화 단계는 병렬적으로 수행되는 것을 특징으로 하는 방법.
  9. 버퍼 메모리;
    비휘발성 메모리; 및
    컨트롤러를 포함하고,
    상기 컨트롤러는, 호스트로부터 상기 버퍼 메모리에 저장된 데이터에 대한 암호화 요청을 수신하는 경우, 수신한 상기 암호화 요청에 따른 암호화 동작을 제어하고,
    상기 호스트로부터 상기 버퍼 메모리에 저장된 암호화 데이터에 대한 복호화 요청을 수신하는 경우, 수신한 상기 복호화 요청에 따른 복호화 동작을 제어하며,
    상기 암호화 동작은,
    상기 암호화 요청에 응답하여, 상기 비휘발성 메모리의 버퍼 영역의 제1 물리 주소를 확인하고, 상기 컨트롤러에 포함된 상기 비휘발성 메모리에 대응하는 제1 암호 모듈을 온(ON) 상태로 하여 상기 버퍼 메모리에 저장된 상기 데이터를 암호화함으로써 암호화된 데이터를 생성하고, 상기 제1 물리 주소에 기초하여 상기 암호화된 데이터를 상기 비휘발성 메모리의 상기 버퍼 영역에 프로그램하고, 상기 비휘발성 메모리에 대응하는 상기 제1 암호 모듈을 오프(OFF) 상태로 하여 상기 비휘발성 메모리의 상기 버퍼 영역으로부터 상기 암호화된 데이터를 독출하고, 독출된 상기 암호화된 데이터를 상기 버퍼 메모리에 저장하는 것을 특징으로 하고,
    상기 복호화 동작은,
    상기 복호화 요청에 응답하여, 상기 비휘발성 메모리의 버퍼 영역의 제2 물리 주소를 확인하고, 상기 컨트롤러에 포함된 상기 비휘발성 메모리에 대응하는 제2 암호 모듈을 오프 상태로 하여 상기 제2 물리 주소에 기초하여 상기 암호화 데이터를 상기 비휘발성 메모리의 상기 버퍼 영역에 프로그램하고, 상기 제2 암호 모듈을 온 상태로 하여 상기 비휘발성 메모리의 상기 버퍼 영역으로부터 상기 암호화 데이터를 독출하여 복호화함으로써 복호화된 데이터를 생성하고, 상기 복호화된 데이터를 상기 버퍼 메모리에 저장하는 것을 특징으로 하는 데이터 저장 장치.
  10. 제9항에 있어서,
    상기 컨트롤러는 상기 제1 암호 모듈 및 상기 제2 암호 모듈을 포함하는 복수의 암호 모듈들을 포함하고,
    상기 복수의 암호 모듈들은, 제1 채널 및 제2 채널을 포함하는 복수의 채널들에 각각 대응하며,
    상기 복수의 채널들은 상기 비휘발성 메모리의 상기 버퍼 영역에 대응하고,
    상기 호스트로부터, 상기 암호화 요청 및 상기 복호화 요청을 수신하는 경우,
    상기 컨트롤러는, 상기 암호화 요청에 따라 상기 제1 물리 주소에 기초하여, 상기 제1 채널의 상기 제1 암호 모듈을 이용하여 상기 암호화 동작을 제어하고,
    상기 복호화 요청에 따라 상기 제2 물리 주소에 기초하여, 상기 제2 채널의 상기 제2 암호 모듈을 이용하여 상기 복호화 동작을 제어하며,
    상기 암호화 동작 및 상기 복호화 동작은 병렬적으로 수행되는 것을 특징으로 하는 데이터 저장 장치.
KR1020220063591A 2021-11-10 2022-05-24 비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법 KR20230068271A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US18/052,344 US20230141861A1 (en) 2021-11-10 2022-11-03 Data storage devices using non-volatile memory devices and operating methods thereof
CN202211395346.7A CN116108508A (zh) 2021-11-10 2022-11-09 固态驱动器的操作方法、数据存储装置及其操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210154271 2021-11-10
KR20210154271 2021-11-10

Publications (1)

Publication Number Publication Date
KR20230068271A true KR20230068271A (ko) 2023-05-17

Family

ID=86547498

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220063591A KR20230068271A (ko) 2021-11-10 2022-05-24 비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR20230068271A (ko)

Similar Documents

Publication Publication Date Title
KR102596400B1 (ko) 데이터 저장 장치 및 데이터 저장 장치의 동작 방법
KR102567108B1 (ko) 데이터 스토리지 디바이스 및 데이터 스토리지 시스템
US8904095B2 (en) Data storage device and operating method thereof
KR102565918B1 (ko) 데이터 저장 장치 및 그것의 동작방법
KR20170053278A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20170105760A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10067873B2 (en) Data storage device and operating method thereof
US8886963B2 (en) Secure relocation of encrypted files
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US11775188B2 (en) Communications to reclaim storage space occupied by proof of space plots in solid state drives
KR20210113906A (ko) 컴퓨팅 시스템 및 그 동작 방법
KR20160097657A (ko) 데이터 저장 장치 그리고 그것의 동작 방법
KR102140297B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
KR20170094674A (ko) 데이터 저장 장치
KR102434840B1 (ko) 데이터 저장 장치
KR20200071602A (ko) 저장 장치 및 그 동작 방법
KR20220039562A (ko) 스토리지 장치, 호스트 장치, 이들을 포함하는 전자 장치 및 그 동작 방법
KR20210068734A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20230068271A (ko) 비휘발성 메모리 장치를 활용한 데이터 저장 장치 및 그것의 동작 방법
US11556252B2 (en) Storage device and method of operating the same
CN116108508A (zh) 固态驱动器的操作方法、数据存储装置及其操作方法
US20240078322A1 (en) Memory system, memory controller and operation method thereof
KR102547251B1 (ko) 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
KR102484065B1 (ko) 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
US20230153237A1 (en) Method and device for storing data