KR102570581B1 - 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템 - Google Patents

스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR102570581B1
KR102570581B1 KR1020180065657A KR20180065657A KR102570581B1 KR 102570581 B1 KR102570581 B1 KR 102570581B1 KR 1020180065657 A KR1020180065657 A KR 1020180065657A KR 20180065657 A KR20180065657 A KR 20180065657A KR 102570581 B1 KR102570581 B1 KR 102570581B1
Authority
KR
South Korea
Prior art keywords
data
storage device
encrypted
logic chip
reconfigurable logic
Prior art date
Application number
KR1020180065657A
Other languages
English (en)
Other versions
KR20190139081A (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 KR1020180065657A priority Critical patent/KR102570581B1/ko
Priority to CN201910088802.5A priority patent/CN110580129A/zh
Priority to US16/263,467 priority patent/US10817214B2/en
Priority to EP19157281.7A priority patent/EP3579136B1/en
Priority to SG10201902256SA priority patent/SG10201902256SA/en
Publication of KR20190139081A publication Critical patent/KR20190139081A/ko
Priority to US17/078,549 priority patent/US11461043B2/en
Priority to US17/879,119 priority patent/US20220374164A1/en
Application granted granted Critical
Publication of KR102570581B1 publication Critical patent/KR102570581B1/ko

Links

Images

Classifications

    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/061Improving I/O performance
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

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 Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Advance Control (AREA)

Abstract

본 개시는 스토리지 장치 세트를 개시한다. 스토리지 장치 세트는, 데이터를 암호화하여 암호화된 입력 데이터를 생성하는 컨트롤러를 포함하고 호스트와 통신 가능한 스토리지 장치와, 스토리지 장치로부터 암호화된 입력 데이터를 수신하고, 미리 결정된 구성(configuration)에 따라 암호화된 입력 데이터를 가공함으로써 가공(processed) 데이터를 생성하며, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성하는 재구성 가능 로직 칩(reconfigurable logic chip)을 포함한다.

Description

스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템{Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트, 상기 스토리지 장치 세트를 포함하는 스토리지 시스템, 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
스토리지 시스템의 처리 속도를 향상시키기 위하여, 호스트가 수행하는 연산들 중 일부를 수행하여 호스트의 연산을 보조하는 가속기(accelerator)가 스토리지 시스템에 추가될 수 있다. 가속기는 설정된 기능을 수행하는 전용 하드웨어 가속기와, FPGA(Field Programmable Gate Array) 이미지와 같은 디자인 파일에 따라 재구성 가능한 가속기로 구별될 수 있다. 최근에는 호스트가 다양한 어플리케이션들을 수행하고 각 어플리케이션에 대한 고속 처리가 요구되므로, 다양한 어플리케이션들에 대응하도록 재구성될 수 있는 FPGA와 같은 재구성 가능한 가속기에 대한 요구가 증가하고 있다.
본 개시의 기술적 사상은 호스트의 오버헤드를 감소시킬 수 있도록 스토리지 장치 및 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트, 상기 스토리지 장치 세트를 포함하는 스토리지 시스템, 및 상기 스토리지 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 스토리지 장치는, 데이터를 암호화하여 암호화된 입력 데이터를 생성하는 컨트롤러를 포함하고, 호스트와 통신 가능한 스토리지 장치, 및 상기 스토리지 장치로부터 상기 암호화된 입력 데이터를 수신하고, 미리 결정된 구성(configuration)에 따라 상기 암호화된 입력 데이터를 가공함으로써 가공(processed) 데이터를 생성하며, 상기 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성하는 재구성 가능 로직 칩(reconfigurable logic chip)을 포함한다.
본 개시의 기술적 사상에 따른 스토리지 시스템은, 호스트, 재구성 가능 로직 칩, 및 제1 포트를 통해 상기 호스트와 통신하고, 제2 포트를 통해 상기 재구성 가능 로직 칩과 통신하도록 구성된 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 포트를 통해 상기 재구성 가능 로직 칩에 암호화된 입력 데이터를 송신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 암호화된 출력 데이터를 수신한다.
본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 상기 스토리지 장치의 제1 포트를 통해, 호스트로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신하는 단계, 상기 스토리지 장치의 제2 포트를 통해, 암호화된 데이터 및 상기 암호화된 데이터에 대한 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩에 전송하는 단계, 및 상기 스토리지 장치의 상기 제2 포트를 통해, 상기 재구성 가능 로직 칩으로부터 암호화된 가공 데이터를 수신하는 단계를 포함한다.
본 개시의 기술적 사상에 따른 스토리지 장치 세트는 스토리지 장치와 재구성 가능 로직 칩 사이에 암호화 통신을 수행함으로써, 스토리지 장치 세트의 보안을 향상시킬 수 있다. 또한, 스토리지 장치는 버퍼 메모리를 포함하고, 버퍼 메모리는 재구성 가능 로직 칩에서 가공할 데이터 및 재구성 가능 로직 칩에서 가공된 데이터를 버퍼링할 수 있으며, 호스트와 재구성 가능 로직 칩은 버퍼 메모리에 액세스할 수 있다. 이에 따라, 호스트와 재구성 가능 로직 칩이 직접적으로 연결되지 않더라도 데이터를 교환할 수 있다. 또한, 스토리지 장치는 재구성 가능 로직 칩에서 가공된 데이터를 바로 호스트에 제공하지 않아도 된다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 개략적으로 나타낸다.
도 2는 본 개시의 일 실시예에 따른 스토리지 장치 세트를 상세하게 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 4는 도 2의 호스트, 스토리지 장치 및 재구성 가능 로직 칩 사이의 동작의 일 예를 나타내는 흐름도이다.
도 5는 도 2의 호스트, 스토리지 장치 및 재구성 가능 로직 칩 사이의 동작의 다른 예를 나타내는 흐름도이다.
도 6은 도 2의 스토리지 장치 세트의 동작의 일 예를 나타낸다.
도 7은 도 6의 컨트롤러, 버퍼 메모리 및 재구성 가능 로직 칩 사이의 동작을 나타내는 흐름도이다.
도 8은 도 2의 스토리지 장치 세트의 동작의 다른 예를 나타낸다.
도 9는 도 8의 비휘발성 메모리, 컨트롤러, 버퍼 메모리 및 재구성 가능 로직 칩 사이의 동작을 나타내는 흐름도이다.
도 10은 도 2의 컨트롤러를 상세하게 나타내는 블록도이다.
도 11은 도 10의 컨트롤러의 변형 예를 나타내는 블록도이다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치 세트를 상세하게 나타내는 블록도이다.
도 13은 도 12의 스토리지 장치 세트의 동작의 일 예를 나타낸다.
도 14는 도 13의 컨트롤러 및 재구성 가능 로직 칩 사이의 동작의 일 예를 나타내는 흐름도이다.
도 15는 도 12의 스토리지 장치 세트의 동작의 다른 예를 나타낸다.
도 16은 도 15의 비휘발성 메모리, 컨트롤러 및 재구성 가능 로직 칩 사이의 동작의 일 예를 나타내는 흐름도이다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치 세트의 동작의 일 예를 나타낸다.
도 18은 도 17의 컨트롤러 및 재구성 가능 로직 칩 사이의 동작의 일 예를 나타내는 흐름도이다.
도 19는 본 개시의 일 실시예에 따른 스토리지 장치 세트의 동작의 다른 예를 나타낸다.
도 20은 도 19의 비휘발성 메모리, 컨트롤러 및 재구성 가능 로직 칩 사이의 동작의 일 예를 나타내는 흐름도이다.
도 21은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타낸다.
도 22는 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 23은 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템(SS)을 개략적으로 나타낸다.
도 1을 참조하면, 스토리지 시스템(Storage System)(SS)은 스토리지 장치 세트(10) 및 호스트(300)를 포함하고, 스토리지 장치 세트(10)는 스토리지 장치(100) 및 재구성 가능 로직 칩(reconfigurable logic chip)(200)을 포함할 수 있다. 스토리지 장치(100)는 제1 포트(port)(PT1) 및 제2 포트(PT2)를 포함할 수 있고, 이에 따라, 스토리지 장치(100)를 듀얼(dual) 포트 스토리지 장치라고 지칭할 수 있다.
일 실시예에서, 스토리지 장치(100)는 제1 칩으로 구현되고, 재구성 가능 로직 칩(200)은 제2 칩으로 구현될 수 있고, 제1 칩과 제2 칩은 단일 보드에 실장되어 서로 전기적으로 연결될 수 있다. 일 실시예에서, 스토리지 장치(100)은 제1 칩으로 구현되고, 재구성 가능 로직 칩(200)은 제2 칩으로 구현될 수 있고, 제1 칩과 제2 칩은 POP(Package-On-Package)를 구성할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 스토리지 장치(100)와 재구성 가능 로직 칩(200)은 임의의 구성을 통해 서로 전기적으로 연결됨으로써 스토리지 장치 세트(10)를 구성할 수 있다.
일 실시예에서, 재구성 가능 로직 칩(200)은 FPGA(Field Programmable Gate Array) 칩일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 재구성 가능 로직 칩(200)은 PLD(Programmable Logic Device) 또는 CPLD(Complex PLD) 등일 수도 있다. 재구성 가능 로직 칩(200)은 호스트(300)가 수행하는 연산들 중 일부를 수행하여 호스트(300)의 연산을 보조하는 가속기로 이용될 수 있다.
스토리지 장치(100)는 제1 포트(PT1)를 통해 호스트(300)와 통신할 수 있다. 구체적으로, 스토리지 장치(100)는 제1 인터페이스 프로토콜에 따라 제1 포트(PT1)를 통해 호스트(300)와 통신할 수 있다. 예를 들어, 제1 인터페이스 프로토콜은 PCIe(Peripheral Component Interconnect Express) 일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제1 인터페이스 프로토콜은 USB(Universal Serial Bus), PCI, ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등일 수도 있다.
일 실시예에서, 제1 포트(PT1)는 PCIe 버스에 연결될 수 있고, 호스트(300)는 PCIe 버스에 연결된 루트 컴플렉스(Root Complex)(RC)를 포함할 수 있다. 루트 컴플렉스(RC)는 호스트(300)와 스토리지 장치(100) 사이의 트랜잭션(transaction)을 관리할 수 있다. 예를 들어, 루트 컴플렉스(RC)는 트랜잭션과 관련된 메시지들을 라우팅할 수 있다. 루트 컴플렉스(RC)는 루트 포트들, 루트 컴플렉스 레지스터 블록들, 또는 루트 컴플렉스가 집적된 엔드포인트들의 로직 애그리게이션(logical aggregation)을 포함할 수 있다.
일 실시예에서, 루트 컴플렉스(RC)는 스토리지 장치(100)에 직접 연결될 수 있다. 일 실시예에서, 루트 컴플렉스(RC)는 적어도 하나의 인터페이스 스위치를 통해 스토리지 장치(100)에 연결될 수 있다. 일 실시예에서, 루트 컴플렉스(RC)는 호스트(300)에 포함된 CPU(Central Processing Unit)와 분리된 장치로 구현될 수 있다. 일 실시예에서, 루트 컴플렉스(RC)는 호스트(300)에 포함된 CPU와 집적되도록 구현될 수 있다.
스토리지 장치(100)는 제2 포트(PT2)를 통해 재구성 가능 로직 칩(200)과 통신할 수 있다. 구체적으로, 제2 인터페이스 프로토콜에 따라 제2 포트(PT2)를 통해 재구성 가능 로직 칩(200)과 통신할 수 있다. 이와 같이, 재구성 가능 로직 칩(200)은 호스트(300)와 직접적으로 연결되는 포트를 포함하지 않으며, 호스트(300)는 스토리지 장치(100)를 통해서 재구성 가능 로직 칩(200)과 통신할 수 있다.
본 실시예에서, 스토리지 장치(100)와 재구성 가능 로직 칩(200)은 암호화 통신을 수행할 수 있다. 스토리지 장치(100)는 제2 포트(PT2)를 통해 암호화된 데이터를 재구성 가능 로직 칩(200)에 송신할 수 있고, 제2 포트(PT2)를 통해 암호화된 데이터를 재구성 가능 로직 칩(200)으로부터 수신할 수 있다. 구체적으로, 스토리지 장치(100)는 암호화/복호화 모듈(111)을 포함할 수 있고, 암호화/복호화 모듈(111)은 데이터를 암호화함으로써 암호화된 데이터를 생성할 수 있다. 또한, 재구성 가능 로직 칩(200)은 암호화/복호화 모듈(210)을 포함할 수 있고, 암호화/복호화 모듈(210)은 스토리지 장치(100)로부터 수신한 암호화된 데이터를 복호화할 수 있고, 재구성 가능 로직 칩(200)에서 가공된 데이터를 암호화할 수 있다.
일 실시예에서, 스토리지 장치(100)는 데이터를 블록 단위로 관리하는 블록 스토리지 장치일 수도 있다. 일 실시예에서, 스토리지 장치(100)는 데이터를 오브젝트 단위로 관리하는 오브젝트 스토리지 장치일 수 있다. 예를 들어, 스토리지 장치(100)는 키-밸류 스토리지 장치일 수 있다. 키-밸류 스토리지 장치는 키-밸류 페어(pair)를 이용하여 데이터를 빠르고 간단하게 처리하는 장치이다. 여기서, "키-밸류 페어"는 유일성을 가지는 키와, 상기 키에 대응하는 데이터인 밸류의 쌍이며, "튜플(tuple)" 또는 "키-밸류 튜플"이라고 지칭할 수 있다. 키-밸류 페어에서, 키는 파일 네임(file name), URI(Uniform Resource Identifier) 또는 해시와 같은 임의의 스트링(string)으로 표시되고, 밸류는 이미지, 사용자 선호 파일 또는 문서와 같은 임의의 종류의 데이터일 수 있다.
스토리지 시스템(SS)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지, IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는 내부 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
도 2는 본 개시의 일 실시예에 따른 스토리지 장치 세트(10)를 상세하게 나타내는 블록도이다.
도 2를 참조하면, 스토리지 장치(100)는 컨트롤러(110), 버퍼 메모리(120) 및 비휘발성 메모리(Non-volatile memory, NVM)(130)를 포함할 수 있고, 컨트롤러(110)는 암호화/복호화 모듈(111)을 포함할 수 있다. 일 실시예에서, 컨트롤러(110), 버퍼 메모리(120) 및 비휘발성 메모리(130)는 개별적인 칩들로 각각 구현될 수 있다. 일 실시예에서, 컨트롤러(110)와 버퍼 메모리(120)는 암호화 통신을 수행할 수 있다. 일 실시예에서, 컨트롤러(110)와 비휘발성 메모리(130)는 암호화 통신을 수행할 수 있다. 일 실시예에서, 컨트롤러(110)와 재구성 가능 로직 칩(200)은 암호화 통신을 수행할 수 있다.
재구성 가능 로직 칩(200)은 암호화/복호화 모듈(210) 및 가속기(220)를 포함할 수 있다. 암호화/복호화 모듈(210)은 스토리지 장치(100)로부터 암호화된 입력 데이터를 수신하고, 암호화된 입력 데이터를 복호화하여 복호화된 데이터를 생성할 수 있다. 또한, 암호화/복호화 모듈(210)은 가속기(220)로부터 가공 데이터를 수신하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성할 수 있다. 일부 실시예에서, 재구성 가능 로직 칩(200)은 루트 컴플렉스를 더 포함할 수 있고, 스토리지 장치(100)로부터 수신된 데이터는 루트 컴플렉스를 통해 암호화/복호화 모듈(210)에 전달될 수 있다.
가속기(220)는 미리 결정된 구성(configuration)에 따라 데이터 가공 동작을 수행할 수 있다. 재구성 가능 로직 칩(200)은 동작 중에 재구성될 수 있고, 이에 따라, 가속기(220)는 제1 가속기로 동작하다가 제2 가속기로 변경될 수 있다. 예를 들어, 가속기(220)는 멀티미디어 트랜스코딩(transcoding) 또는 이레이저(eraser) 코딩 등을 수행할 수 있다. 예를 들어, 가속기(220)는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network) 등과 같은 머신 러닝 알고리즘 등을 수행할 수 있다.
나아가, 예를 들어, 가속기(220)는 인라인(inline) 프로세싱, 프리(pre)-프로세싱, 프리-필터링(pre-filtering), 암호화(cryptography), 압축, 프로토콜 브릿징(bridging) 등을 수행할 수 있다. 예를 들어, 가속기(220)는 소팅(sorting) 연산, 서칭(searching) 연산, 로직 연산 또는 사칙 연산 중 하나 이상의 연산을 수행할 수 있다. 로직 연산은 AND 게이트, OR 게이트, XOR 게이트, NOR 게이트, NAND 게이트 등 다양한 로직 게이트가 수행하는 연산 또는 이러한 연산을 둘 이상 결합한 연산 동작을 나타낼 수 있다. 가속기(220)가 수행하는 연산 동작은 위에 설명한 예에 한정되지 않으며, 호스트(300)가 수행하는 연산들 중 일부에 대응하는 임의의 연산일 수 있다.
호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있다. 스토리지 장치(100)는 호스트 커맨드에 응답하여 재구성 가능 로직 칩(200)에 데이터 가공을 지시하는 커맨드를 전송할 수 있다. 또한, 스토리지 장치(100)는 가공할 데이터를 재구성 가능 로직 칩(200)에 전송할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 가공할 데이터를 암호화함으로써 암호화된 입력 데이터를 생성할 수 있고, 컨트롤러(110)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송할 수 있다.
재구성 가능 로직 칩(200)은 커맨드 및 데이터를 수신하고, 수신한 데이터에 대해 데이터 가공을 수행함으로써 가공 데이터를 생성하고, 가공 데이터를 스토리지 장치(100)에 전송할 수 있다. 일 실시예에서, 암호화/복호화 모듈(210)은 암호화된 입력 데이터를 복호화하여 복호화된 데이터를 생성할 수 있고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 복호화된 데이터에 대해 데이터 가공을 수행함으로써 가공 데이터를 생성하고, 가공 데이터를 암호화/복호화 모듈(210)에 제공할 수 있다. 암호화/복호화 모듈(210)은 가공 데이터를 암호화함으로써 암호화된 출력 데이터를 생성할 수 있다.
또한, 호스트(300)는 기입 요청 또는 독출 요청 등을 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 독출 요청에 응답하여 비휘발성 메모리(130)로부터 데이터를 독출할 수 있고, 기입 요청에 응답하여 비휘발성 메모리(130)에 데이터를 기입할 수 있다. 컨트롤러(110)는 호스트(300)로부터 수신한 기입 요청에 응답하여 비휘발성 메모리(130)에 데이터를 기입하거나, 또는 호스트(300)로부터 수신한 독출 요청에 응답하여 비휘발성 메모리(130)로부터 데이터를 독출하도록 비휘발성 메모리(130)를 제어할 수 있다.
버퍼 메모리(120)는 재구성 가능 로직 칩(200)에서 가공할 입력 데이터(Input Data)(ID)를 버퍼링할 수 있다. 일 실시예에서, 입력 데이터(ID)는 암호화된 데이터일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 입력 데이터(ID)는 암호화되지 않은 노멀(normal) 데이터일 수도 있다. 또한, 버퍼 메모리(120)는 재구성 가능 로직 칩(200)에서 가공된 데이터, 예를 들어, 제1 출력 데이터(Output Data)(OD1) 및 제2 출력 데이터(OD2)를 버퍼링할 수 있다. 일 실시예에서, 제1 및 제2 출력 데이터(OD1, OD2)는 암호화된 데이터일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 제1 및 제2 출력 데이터(OD1, OD2)는 노멀 데이터일 수도 있다. 예를 들어, 버퍼 메모리(120)는 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리일 수 있다.
일 실시예에서, 버퍼 메모리(120)는 CMB(Control Memory Buffer) 일 수 있다. 호스트(300)와 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 액세스할 수 있다. 이에 따라, 호스트(300)와 재구성 가능 로직 칩(200)은 서로 직접 연결되지 않더라도, 버퍼 메모리(120)를 통해서 데이터를 주고 받을 수 있다.
예를 들어, 호스트(300)는 재구성 가능 로직 칩(200)에서 가공할 데이터를 버퍼 메모리(120)에 로딩할 수 있고, 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 로딩된 데이터를 가공할 수 있다. 예를 들어, 재구성 가능 로직 칩(200)은 가공 데이터를 버퍼 메모리(120)에 로딩할 수 있고, 호스트(300)는 버퍼 메모리(120)에 로딩된 가공 데이터를 독출할 수 있다. 이와 같이, 호스트(300)가 버퍼 메모리(120)에 액세스할 수 있으므로, 스토리지 장치(100)는 재구성 가능 로직 칩(200)의 데이터 가공 후에 가공 데이터를 호스트(300)에 제공하지 않고, 데이터 가공이 완료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.
비휘발성 메모리(130)는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다. 일 실시예에서, 비휘발성 메모리(130)는 플래쉬 메모리 장치를 포함할 수 있고, 예를 들어, 낸드(NAND) 플래쉬 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 비휘발성 메모리(130)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 장치를 포함할 수 있다.
도 3은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 3을 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 도 2의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 이하에서는 도 2 및 도 3을 함께 참조하여 설명하기로 한다.
단계 S110에서, 스토리지 장치(100)는 호스트(300)로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신한다. 일 실시예에서, 스토리지 장치(100)는 호스트 커맨드와 함께 데이터를 수신할 수 있다. 일 실시예에서, 스토리지 장치(100)는 호스트 커맨드를 수신한 후에, 호스트(300)로부터 데이터를 수신할 수도 있다. 일 실시예에서, 스토리지 장치(100)는 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 데이터를 독출할 수 있다.
단계 S130에서, 스토리지 장치(100)는 데이터 가공을 지시하는 커맨드 및 암호화된 데이터를 재구성 가능 로직 칩(200)에 전송한다. 일 실시예에서, 스토리지 장치(100)는 커맨드를 먼저 재구성 가능 로직 칩(200)에 전송하고, 이어서, 재구성 가능 로직 칩(200)의 독출 요청에 응답하여 암호화된 데이터를 재구성 가능 로직 칩(200)에 전송할 수 있다. 일 실시예에서, 스토리지 장치(100)는 커맨드 및 암호화된 데이터를 함께 재구성 가능 로직 칩(200)에 전송할 수도 있다.
일 실시예에서, 단계 S110과 S130 사이에, 스토리지 장치(100)는 데이터 암호화 동작을 수행할 수 있다. 예를 들어, 암호화/복호화 모듈(111)은 재구성 가능 로직 칩(200)에서 가공할 데이터를 암호화할 수 있다. 일 실시예에서, 스토리지 장치(100)는 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 암호화된 데이터를 독출할 수 있다. 일 실시예에서, 스토리지 장치(100)는 호스트(300)로부터 암호화된 데이터를 수신할 수도 있다.
단계 S150에서, 스토리지 장치(100)는 재구성 가능 로직 칩(200)으로부터 암호화된 가공 데이터를 수신한다. 일 실시예에서, 스토리지 장치(100)는 암호화된 가공 데이터를 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 저장할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 가공 데이터를 호스트(300)에 전송할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 가공 데이터를 복호화할 수 있다. 일 실시예에서, 스토리지 장치(100)는 복호화된 가공 데이터를 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 저장할 수 있다. 일 실시예에서, 스토리지 장치(100)는 복호화된 가공 데이터를 호스트(300)에 전송할 수 있다.
도 4는 도 2의 호스트(300), 스토리지 장치(100) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.
도 4를 참조하면, 호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 생성한다(S200). 예를 들어, 호스트(300)는 이미지 인식 어플리케이션의 실행을 지시하는 사용자 입력에 응답하여, 재구성 가능 로직 칩(200)에 이미지 인식에 필요한 CNN을 지시하는 호스트 커맨드를 생성할 수 있다. 호스트(300)는 호스트 커맨드를 스토리지 장치(100)에 전송한다(S210).
스토리지 장치(100)는 재구성 가능 로직 칩(200)에서 가공할 데이터를 암호화하여 암호화된 입력 데이터를 생성한다(S220). 예를 들어, 스토리지 장치(100)는 이미지 인식의 대상이 되는 이미지 파일을 암호화하여 암호화된 입력 데이터를 생성할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(300)로부터 수신한 데이터, 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 독출한 데이터를 암호화할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 데이터를 수신할 수 있고, 이 경우 S220은 생략될 수 있다.
스토리지 장치(100)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S230). 스토리지 장치(100)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S235). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성한다(S240). 재구성 가능 로직 칩(200)은 미리 결정된 구성에 따라 복호화된 데이터를 가공함으로써 가공 데이터를 생성한다(S250). 재구성 가능 로직 칩(200)은 가공 데이터를 암호화함으로써 암호화된 출력 데이터를 생성한다(S260). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 스토리지 장치(100)에 전송한다(S270).
스토리지 장치(100)는 암호화된 출력 데이터에 대한 기입 동작을 수행한다. 예를 들어, 스토리지 장치(100)는 암호화된 출력 데이터를 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 기입할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 출력 데이터를 복호화하고, 복호화된 출력 데이터에 대한 기입 동작을 수행할 수도 있다. 스토리지 장치(100)는 데이터 가공이 완료되었음을 나타내는 응답 메시지를 호스트(300)에 전송한다.
도 5는 도 2의 호스트(300), 스토리지 장치(100) 및 재구성 가능 로직 칩(200) 사이의 동작의 다른 예를 나타내는 흐름도이다.
도 5를 참조하면, 본 실시예는 도 4의 변형 예에 대응하며, 이하에서는, 도4에 예시된 동작과의 차이점을 중심으로 설명하기로 한다. 호스트(300)는 멀티 데이터 세트 가공 요청을 포함하는 호스트 커맨드, 다시 말해, 멀티 데이터 세트의 가공을 지시하는 호스트 커맨드를 생성한다(S300). 여기서, 멀티 데이터 세트는 상기 호스트 커맨드와 관련된 복수의 데이터를 지칭한다. 또한, 멀티 데이터 세트 가공 요청을 포함하는 호스트 커맨드는 재구성 가능 로직 칩(200)이 상기 호스트 커맨드에 응답하여 복수의 데이터 가공 동작들을 수행함으로써 복수의 데이터, 즉, 멀티 데이터 세트를 출력하도록 지시할 수 있다. 예를 들어, 멀티 데이터 세트 가공 요청을 포함하는 호스트 커맨드는 트랜스코딩 커맨드일 수 있다. 호스트(300)는 호스트 커맨드를 스토리지 장치(100)에 전송한다(S310).
스토리지 장치(100)는 재구성 가능 로직 칩(200)에서 가공할 데이터를 암호화하여 암호화된 입력 데이터를 생성한다(S320). 예를 들어, 스토리지 장치(100)는 트랜스코딩의 대상이 되는 멀티미디어 파일을 암호화하여 암호화된 입력 데이터를 생성할 수 있다. 스토리지 장치(100)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S330). 스토리지 장치(100)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S335). 예를 들어, 암호화된 입력 데이터는 스케일러블 포맷을 갖는 멀티미디어 파일에 대한 암호화 데이터일 수 있다. 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성한다(S340). 예를 들어, 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써, 스케일러블 포맷을 갖는 멀티미디어 파일을 생성할 수 있다.
재구성 가능 로직 칩(200)은 미리 결정된 구성에 따라 복호화된 데이터를 가공함으로써 제1 가공 데이터를 생성하고, 제1 가공 데이터를 암호화함으로써 암호화된 제1 출력 데이터를 생성한다(S350). 예를 들어, 재구성 가능 로직 칩(200)은 스케일러블 포맷을 갖는 멀티미디어 파일에 대한 트랜스코딩을 수행함으로써 제1 포맷을 갖는 제1 멀티미디어 파일을 생성할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 제1 멀티미디어 파일을 암호화함으로써 암호화된 제1 멀티미디어 파일을 생성할 수 있다.
재구성 가능 로직 칩(200)은 암호화된 제1 출력 데이터를 스토리지 장치(100)에 전송한다(S355). 예를 들어, 재구성 가능 로직 칩(200)은 암호화된 제1 멀티미디어 파일을 스토리지 장치(100)에 전송할 수 있다. 스토리지 장치(100)는 암호화된 제1 출력 데이터에 대한 기입 동작을 수행한다(S360). 예를 들어, 스토리지 장치(100)는 암호화된 제1 멀티미디어 파일을 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 기입할 수 있다.
재구성 가능 로직 칩(200)은 미리 결정된 구성에 따라 복호화된 데이터를 가공함으로써 제2 가공 데이터를 생성하고, 제2 가공 데이터를 암호화함으로써 암호화된 제2 출력 데이터를 생성한다(S370). 예를 들어, 재구성 가능 로직 칩(200)은 스케일러블 포맷을 갖는 멀티미디어 파일에 대한 트랜스코딩을 수행함으로써 제2 포맷을 갖는 제2 멀티미디어 파일을 생성할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 제2 멀티미디어 파일을 암호화함으로써 암호화된 제2 멀티미디어 파일을 생성할 수 있다. 일 실시예에서, 단계 S370은 단계 S355 및 S360이 수행되는 동안 수행될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 단계 S370은 단계 S355 이전에 수행될 수도 있다.
재구성 가능 로직 칩(200)은 암호화된 제2 출력 데이터를 스토리지 장치(100)에 전송한다(S375). 예를 들어, 재구성 가능 로직 칩(200)은 암호화된 제2 멀티미디어 파일을 스토리지 장치(100)에 전송할 수 있다. 스토리지 장치(100)는 암호화된 제2 출력 데이터에 대한 기입 동작을 수행한다(S380). 예를 들어, 스토리지 장치(100)는 암호화된 제2 멀티미디어 파일을 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 기입할 수 있다. 스토리지 장치(100)는 데이터 가공이 완료되었음을 나타내는 응답 메시지를 호스트(300)에 전송한다(S390).
도 6은 도 2의 스토리지 장치 세트(10)의 동작의 일 예를 나타낸다.
도 6을 참조하면, 호스트(300)는 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 로딩할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 로딩된 암호화된 데이터를 독출할 수 있다. 다른 실시예에서, 스토리지 장치(100)는 호스트(300)로부터 수신한 데이터를 버퍼 메모리(120)에 로딩할 수 있다. 이어서, 재구성 가능 로직 칩(200)으로부터 독출 요청이 수신되면, 암호화/복호화 모듈(111)은 버퍼 메모리(120)에 로딩된 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 전송할 수도 있다.
암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120)로부터 가공 데이터를 독출할 수 있다.
도 7은 도 6의 컨트롤러(110), 버퍼 메모리(120) 및 재구성 가능 로직 칩(200) 사이의 동작을 나타내는 흐름도이다.
도 7을 참조하면, 컨트롤러(110)는 호스트(300)로부터 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 수신한다(S400). 컨트롤러(110)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S410). 컨트롤러(110)는 암호화된 입력 데이터를 버퍼 메모리(120)에 전송한다(S420). 버퍼 메모리(120)는 암호화된 입력 데이터를 로딩한다(S430). 버퍼 메모리(120)는 암호화된 입력 데이터의 로딩이 완료되면 응답 메시지를 컨트롤러(110)에 전송한다(S435).
컨트롤러(110)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S440). 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 독출 커맨드를 전송한다(S445). 버퍼 메모리(120)는 독출 동작을 수행하고(S450), 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S460). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S470). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 버퍼 메모리(120)에 전송한다(S475). 버퍼 메모리(120)는 암호화된 출력 데이터를 로딩한다(S480). 버퍼 메모리(120)는 기입 완료를 나타내는 응답 메시지를 재구성 가능 로직 칩(200)에 전송한다(S485). 재구성 가능 로직 칩(200)은 데이터 가공이 종료되었음을 나타내는 응답 메시지를 컨트롤러(110)에 전송한다(S490).
도 8은 도 2의 스토리지 장치 세트(10)의 동작의 다른 예를 나타낸다.
도 8을 참조하면, 호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있다. 컨트롤러(110)는 비휘발성 메모리(130)에 저장된 데이터를 독출하고, 독출된 데이터를 버퍼 메모리(120)에 로딩할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 독출된 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 제공할 수 있다. 일 실시예에서, 컨트롤러(110)는 비휘발성 메모리(130)로부터 암호화된 데이터를 독출하고, 독출된 암호화된 데이터를 버퍼 메모리(120)에 로딩할 수 있다.
재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 로딩된 암호화된 데이터를 독출할 수 있다. 암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120)로부터 가공 데이터를 독출할 수 있다.
도 9는 도 8의 비휘발성 메모리(130), 컨트롤러(110), 버퍼 메모리(120) 및 재구성 가능 로직 칩(200) 사이의 동작을 나타내는 흐름도이다.
도 9를 참조하면, 컨트롤러(110)는 호스트(300)로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신한다(S500). 컨트롤러(110)는 비휘발성 메모리(130)에 독출 커맨드를 전송한다(S505). 일 실시예에서, 컨트롤러(110)는 맵핑 테이블을 참조하여 가공할 데이터가 저장된 물리 주소를 확인할 수 있고, 물리 주소를 포함하는 독출 커맨드를 비휘발성 메모리(130)에 전송할 수 있다. 비휘발성 메모리(130)는 독출 동작을 수행하고(S510), 데이터를 컨트롤러(110)에 전송한다(S515).
컨트롤러(110)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S520). 컨트롤러(110)는 암호화된 입력 데이터를 버퍼 메모리(120)에 전송한다(S525). 버퍼 메모리(120)는 암호화된 입력 데이터를 로딩한다(S530). 버퍼 메모리(120)는 암호화된 입력 데이터의 로딩이 완료되면 응답 메시지를 컨트롤러(110)에 전송한다(S535).
컨트롤러(110)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S540). 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 독출 커맨드를 전송한다(S545). 버퍼 메모리(120)는 독출 동작을 수행하고(S550), 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S560). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S570). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 버퍼 메모리(120)에 전송한다(S575). 버퍼 메모리(120)는 암호화된 출력 데이터를 로딩한다(S580). 버퍼 메모리(120)는 기입 완료를 나타내는 응답 메시지를 재구성 가능 로직 칩(200)에 전송한다(S585). 재구성 가능 로직 칩(200)은 데이터 가공이 종료되었음을 나타내는 응답 메시지를 컨트롤러(110)에 전송한다.
도 10은 도 2의 컨트롤러(110)를 상세하게 나타내는 블록도이다.
도 10을 참조하면, 컨트롤러(110)는 암호화/복호화 모듈(111), 프로세서(112), 메모리(113), 호스트 인터페이스(114), FPGA 인터페이스(115), 휘발성 메모리 인터페이스(116) 및 비휘발성 메모리 인터페이스(117)를 포함하고, 이들은 버스(118)를 통해 서로 통신할 수 있다. 예를 들어, 재구성 가능 로직 칩(200)은 FPGA일 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 소프트웨어 또는 펌웨어로 구현될 수 있고, 메모리(113)에 로딩될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 암호화/복호화 모듈(111)은 하드웨어로 구현될 수도 있다.
프로세서(112)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(110)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(112)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드(quad) 코어 프로세서로 구현될 수 있다. 메모리(113)는 프로세서(112)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 메모리(113)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다.
호스트 인터페이스(114)는 호스트(300)와 컨트롤러(110) 사이의 인터페이스를 제공할 수 있고, 예를 들어, 도 1의 제1 포트(PT1)를 포함할 수 있다. FPGA 인터페이스(115)는 컨트롤러(110)와 FPGA, 즉, 재구성 가능 로직 칩(200) 사이의 인터페이스를 제공할 수 있고, 예를 들어, 도 1의 제2 포트(PT2)를 포함할 수 있다. 일 실시예에서, FPGA 인터페이스(115)는 암호화/복호화 모듈(111)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다. 또한, FPGA 인터페이스(115)는 재구성 가능 로직 칩(200)으로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 암호화/복호화 모듈(111)에 제공할 수 있다.
휘발성 메모리 인터페이스(116)는 컨트롤러(110)와 휘발성 메모리, 예를 들어, 도 2의 버퍼 메모리(120) 사이의 인터페이스를 제공할 수 있다. 일 실시예에서, 휘발성 메모리 인터페이스(116)는 암호화/복호화 모듈(111)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 버퍼 메모리(120)에 제공할 수 있다. 또한, 휘발성 메모리 인터페이스(116)는 버퍼 메모리(120)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 암호화/복호화 모듈(111)에 제공할 수 있다.
비휘발성 메모리 인터페이스(117)는 컨트롤러(110)와 비휘발성 메모리(130) 사이의 인터페이스를 제공할 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(117)는 암호화/복호화 모듈(111)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 비휘발성 메모리(130)에 제공할 수 있다. 또한, 비휘발성 메모리 인터페이스(117)는 비휘발성 메모리(130)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 암호화/복호화 모듈(111)에 제공할 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(117)의 개수는 스토리지 장치(100)에 포함된 비휘발성 메모리 칩의 개수 또는, 컨트롤러(110)와 비휘발성 메모리(130) 사이의 채널들의 개수에 대응할 수 있다.
도 11은 도 10의 컨트롤러의 변형 예(110')를 나타내는 블록도이다.
도 11을 참조하면, 컨트롤러(110')는 프로세서(112), 메모리(113), 호스트 인터페이스(114), FPGA 인터페이스(115'), 휘발성 메모리 인터페이스(116') 및 비휘발성 메모리 인터페이스(117')를 포함하고, 이들은 버스(118)를 통해 서로 통신할 수 있다. 이하에서는 본 실시예에 따른 컨트롤러(110')와 도 10의 컨트롤러(110)의 차이점을 중심으로 설명하기로 한다.
FPGA 인터페이스(115')는 암호화/복호화 모듈(115a)을 포함할 수 있다. 암호화/복호화 모듈(115a)은 메모리(113), 호스트(300), 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 수신한 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다. 또한, 암호화/복호화 모듈(115a)는 재구성 가능 로직 칩(200)으로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 복호화하여 메모리(113), 호스트(300), 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 제공할 수 있다.
휘발성 메모리 인터페이스(116')는 암호화/복호화 모듈(116a)을 포함할 수 있고, 암호화/복호화 모듈(116a)은 선택적으로 활성화될 수 있다. 일 실시예에서, 암호화/복호화 모듈(116a)은 메모리(113), 호스트(300) 또는 비휘발성 메모리(130)로부터 수신한 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 제공할 수 있다. 또한, 암호화/복호화 모듈(116a)는 버퍼 메모리(120)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 복호화하여 메모리(113), 호스트(300) 또는 비휘발성 메모리(130)에 제공할 수 있다. 일 실시예에서, 휘발성 메모리 인터페이스(116')는 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(116a)을 거치지 않고 버퍼 메모리(120)에 저장할 수 있고, 버퍼 메모리(120)로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(116a)을 거치지 않고 재구성 가능 로직 칩(200)에 제공할 수 있다.
비휘발성 메모리 인터페이스(117')는 암호화/복호화 모듈(117a)을 포함할 수 있고, 암호화/복호화 모듈(117a)은 선택적으로 활성화될 수 있다. 일 실시예에서, 암호화/복호화 모듈(117a)은 메모리(113), 호스트(300) 또는 버퍼 메모리(120)로부터 수신한 데이터를 암호화하고, 암호화된 데이터를 비휘발성 메모리(130)에 제공할 수 있다. 또한, 암호화/복호화 모듈(117a)는 비휘발성 메모리(130)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 복호화하여 메모리(113), 호스트(300) 또는 버퍼 메모리(120)에 제공할 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(117')는 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(116a)을 거치지 않고 비휘발성 메모리(130)에 저장할 수 있고, 비휘발성 메모리(130)로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(117a)을 거치지 않고 재구성 가능 로직 칩(200)에 제공할 수 있다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치 세트(10a)를 나타내는 블록도이다.
도 12를 참조하면, 스토리지 장치(100a)는 컨트롤러(110a) 및 비휘발성 메모리(130)를 포함하고, 컨트롤러(110a)는 암호화/복호화 모듈(111) 및 버퍼 메모리(120a)를 포함할 수 있다. 본 실시예에 따르면, 버퍼 메모리(120a)는 컨트롤러(110a)에 내장될 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 버퍼 메모리(120a)의 전단에 배치될 수 있다. 이에 따라, 버퍼 메모리(120a)는 암호화된 데이터를 버퍼링할 수 있다.
암호화/복호화 모듈(111)은 호스트(300) 또는 비휘발성 메모리(130)로부터 수신한 입력 데이터를 암호화하고, 암호화된 입력 데이터를 버퍼 메모리(120a)에 제공할 수 있다. 이에 따라, 버퍼 메모리(120a)는 암호화된 입력 데이터를 버퍼링할 수 있다. 또한, 암호화/복호화 모듈(111)은 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 출력 데이터를 복호화하고, 복호화된 출력 데이터를 버퍼 메모리(120a)에 제공할 수 있다. 이에 따라, 버퍼 메모리(120a)는 복호화된 출력 데이터를 버퍼링할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 버퍼 메모리(120a)는 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 출력 데이터를 버퍼링할 수도 있다.
도 13은 도 12의 스토리지 장치 세트(10a)의 동작의 일 예를 나타낸다.
도 13을 참조하면, 호스트(300)는 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 암호화/복호화 모듈(111)은 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 로딩할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 버퍼 메모리(120a)에 로딩된 암호화된 데이터를 독출할 수 있다. 암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120a)로부터 가공 데이터를 독출할 수 있다.
도 14는 도 13의 컨트롤러(110a) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.
도 14를 참조하면, 컨트롤러(110a)는 호스트(300)로부터 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 수신한다(S600). 컨트롤러(110a)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S610). 컨트롤러(110a)는 암호화된 입력 데이터를 버퍼 메모리(120)에 로딩한다(S620).
컨트롤러(110a)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S630). 재구성 가능 로직 칩(200)은 컨트롤러(110a)에 독출 커맨드를 전송한다(S640). 컨트롤러(110a)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S650). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S660). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110a)에 전송한다(S670).
컨트롤러(110a)는 암호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입한다(S680). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110a)는 복호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110a)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.
도 15는 도 12의 스토리지 장치 세트(10a)의 동작의 다른 예를 나타낸다.
도 15를 참조하면, 호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 컨트롤러(110a)는 비휘발성 메모리(130)에 저장된 데이터를 독출하고, 독출된 데이터를 버퍼 메모리(120a)에 로딩할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 독출된 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 제공할 수 있다. 일 실시예에서, 컨트롤러(110a)는 비휘발성 메모리(130)로부터 암호화된 데이터를 독출하고, 독출된 암호화된 데이터를 버퍼 메모리(120a)에 로딩할 수 있다.
재구성 가능 로직 칩(200)은 버퍼 메모리(120a)에 로딩된 암호화된 데이터를 독출할 수 있다. 암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120a)로부터 가공 데이터를 독출할 수 있다.
도 16은 도 15의 비휘발성 메모리(130), 컨트롤러(110a) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.
도 16을 참조하면, 컨트롤러(110a)는 호스트(300)로부터 데이터 가공을 지시하는 호스트 커맨드를 수신한다(S700). 컨트롤러(110a)는 비휘발성 메모리(130)에 독출 커맨드를 전송한다(S710). 일 실시예에서, 컨트롤러(110a)는 맵핑 테이블을 참조하여 가공할 데이터가 저장된 물리 주소를 확인할 수 있고, 물리 주소를 포함하는 독출 커맨드를 비휘발성 메모리(130)에 전송할 수 있다. 비휘발성 메모리(130)는 독출 동작을 수행하고(S720), 데이터를 컨트롤러(110a)에 전송한다(S725). 컨트롤러(110a)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S730). 컨트롤러(110a)는 암호화된 입력 데이터를 버퍼 메모리(120)에 로딩한다(S740).
컨트롤러(110a)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S750). 재구성 가능 로직 칩(200)은 컨트롤러(110a)에 독출 커맨드를 전송한다(S760). 컨트롤러(110a)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S765). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S770). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110a)에 전송한다(S780).
컨트롤러(110a)는 암호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입한다(S790). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110a)는 복호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110a)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치 세트(10b)의 동작의 일 예를 나타낸다.
도 17을 참조하면, 스토리지 장치(100b)는 컨트롤러(110b) 및 비휘발성 메모리(130)를 포함하고, 컨트롤러(110b)는 암호화/복호화 모듈(111) 및 버퍼 메모리(120b)를 포함할 수 있다. 본 실시예에 따르면, 버퍼 메모리(120b)는 컨트롤러(110b)에 내장될 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 버퍼 메모리(120a)의 후단에 배치될 수 있다. 이에 따라, 버퍼 메모리(120b)는 암호화되지 않은 노멀 데이터를 버퍼링할 수 있다.
호스트(300)는 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 스토리지 장치(100b)에 전송할 수 있다. 호스트(300)로부터 수신된 데이터는 버퍼 메모리(120b)에 로딩될 수 있다. 이어서, 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다.
암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 컨트롤러(110b)에 제공할 수 있다. 암호화/복호화 모듈(111)은 암호화된 데이터를 복호화하고, 복호화된 데이터는 버퍼 메모리(120b)에 로딩될 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120b)로부터 가공 데이터를 독출할 수 있다.
도 18은 도 17의 컨트롤러(110b) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.
도 18을 참조하면, 컨트롤러(110b)는 호스트(300)로부터 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 수신한다(S800). 컨트롤러(110b)는 수신한 데이터를 버퍼 메모리(120b)에 로딩한다(S810). 컨트롤러(110b)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S820). 재구성 가능 로직 칩(200)은 컨트롤러(110b)에 독출 커맨드를 전송한다(S830).
컨트롤러(110b)에 포함된 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S840). 컨트롤러(110b)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S850). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하며, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S860). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110b)에 전송한다(S870).
컨트롤러(110b)는 암호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입한다(S880). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110b)는 복호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110b)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.
도 19는 본 개시의 일 실시예에 따른 스토리지 장치 세트(10b)의 동작의 다른 예를 나타낸다.
도 19를 참조하면, 호스트(300)는 데이터 가공을 지시하는 호스트 커맨드를 스토리지 장치(100b)에 전송할 수 있다. 컨트롤러(110b)는 비휘발성 메모리(130)에 저장된 데이터를 독출하고, 독출된 데이터를 버퍼 메모리(120b)에 로딩할 수 있다. 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다.
암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 컨트롤러(110b)에 전송할 수 있다. 암호화/복호화 모듈(111)은 암호화된 데이터를 복호화하고, 복호화된 데이터는 버퍼 메모리(120b)에 로딩될 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120b)로부터 가공 데이터를 독출할 수 있다.
도 20은 도 19의 비휘발성 메모리(130), 컨트롤러(110b) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.
도 20을 참조하면, 컨트롤러(110b)는 호스트(300)로부터 데이터 가공을 지시하는 호스트 커맨드를 수신한다(S900). 컨트롤러(110b)는 비휘발성 메모리(130)에 독출 커맨드를 전송한다(S910). 일 실시예에서, 컨트롤러(110b)는 맵핑 테이블을 참조하여 가공할 데이터가 저장된 물리 주소를 확인할 수 있고, 물리 주소를 포함하는 독출 커맨드를 비휘발성 메모리(130)에 전송할 수 있다. 비휘발성 메모리(130)는 독출 동작을 수행하고(S920), 데이터를 컨트롤러(110b)에 전송한다(S925).
컨트롤러(110b)는 데이터를 버퍼 메모리(120b)에 로딩한다(S930). 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S940). 컨트롤러(110b)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S950). 재구성 가능 로직 칩(200)은 컨트롤러(110b)에 독출 커맨드를 전송한다(S960). 컨트롤러(110b)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S965). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S970). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110b)에 전송한다(S980).
컨트롤러(110b)는 암호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입한다(S990). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110b)는 복호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110b)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.
도 21은 본 개시의 일 실시예에 따른 스토리지 시스템(SS')을 나타낸다.
도 21을 참조하면, 스토리지 시스템(SS')은 스토리지 장치 세트(10c), 호스트(300), 및 하드웨어 가속기(400)를 포함할 수 있고, 이들은 버스(500)를 통해 서로 통신할 수 있다. 예를 들어, 스토리지 시스템(SS')은 서버 또는 데이터 센터일 수 있다. 스토리지 장치 세트(10c)는 스토리지 장치(100) 및 재구성 가능 가속기(RA)를 포함할 수 있다. 이와 같이, 스토리지 시스템(SS')은 하드웨어 가속기(400) 및 재구성 가능 가속기(RA)를 모두 포함할 수 있다. 이때, 재구성 가능 가속기(RA)는 스토리지 장치 세트(10c) 내에 구현될 수 있다.
하드웨어 가속기(400)는 호스트(300)에서 수행되는 연산들 중 미리 결정된 특정 연산을 수행함으로써, 호스트(300)의 연산을 보조할 수 있다. 예를 들어, 하드웨어 가속기(400)는 GPU(Graphic Processing Unit)일 수 있다. 재구성 가능 가속기(RA)는 호스트(300)에서 수행되는 연산의 종류에 따라 실시간으로 재구성됨으로써, 호스트(300)에서 현재 실행되는 어플리케이션에 대응하는 연산을 수행할 수 있다. 이와 같이, 하드웨어 가속기(400)에서 수행되는 연산은 스토리지 시스템(SS')의 동작 중에 변경되지 않는 반면, 재구성 가능 가속기(RA)에서 수행되는 연산은 스토리지 시스템(SS')의 동작 중에 변경될 수 있다.
본 실시예에 따르면, 스토리지 장치(100)는 비휘발성 메모리 칩과 같은 스토리지를 포함함으로써 기존의 스토리지 장치의 역할을 수행할 수 있고, 나아가, 스토리지 장치(100)는 재구성 가능 가속기(RA)와 스토리지 장치 세트(10c)를 구성할 수 있다. 이에 따라, 호스트(300)와 재구성 가능 가속기(RA)는 서로 직접적으로 연결되지 않더라도 스토리지 장치(100)에 포함된 버퍼 메모리, 예를 들어, CMB를 통해 데이터를 교환할 수 있다. 이로써, 스토리지 장치(100)와 재구성 가능 가속기(RA) 사이의 데이터 처리 속도를 더욱 향상시킬 수 있다.
도 22은 본 개시의 일 실시예에 따른 네트워크 시스템(1000)을 나타낸다.
도 22을 참조하면, 네트워크 시스템(1000)은 서버 시스템(1100) 및 네트워크(NET)를 통해 서버 시스템(1100)과 통신하는 복수의 터미널들(1210 내지 1230)을 포함할 수 있다. 서버 시스템(1100)은 서버(1110)와 SSD(1120)를 포함할 수 있다. 이때, SSD(1120)는 상술한 실시예들의 스토리지 장치(100, 100a, 100b)에 대응할 수 있다. 일부 실시예들에서, SSD(1120)는 도 1 내지 도 21을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.
도 23는 본 개시의 일 실시예에 따른 네트워크 시스템(2000)을 나타낸다.
도 23을 참조하면, 네트워크 시스템(2000)은 클라이언트 그룹(2100)과 데이터 센터(2200)를 포함할 수 있다. 클라이언트 그룹(2100)은 제1 네트워크(NET1), 예를 들어, 인터넷을 통해 데이터 센터(2200)와 통신하는 클라이언트 장치들(C)을 포함할 수 있다. 데이터 센터(2200)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 제2 네트워크(NET2), 예를 들어, LAN(Local Area Network) 또는 인트라넷을 통해 서로 통신하는 어플리케이션 서버 그룹(2210), 데이터베이스 서버 그룹(2220) 및 오브젝트 캐시 서버 그룹(2230)을 포함할 수 있다.
어플리케이션 서버 그룹(2210)은 어플리케이션 서버 장치들(AS)을 포함할 수 있고, 어플리케이션 서버 장치들(AS)은 클라이언트 그룹(2100)으로부터 수신한 요청을 처리하고, 클라이언트 그룹(2100)의 요청에 따라 데이터베이스 서버 그룹(2220) 또는 오브젝트 캐시 서버 그룹(2230)을 액세스할 수 있다. 데이터베이스 서버 그룹(2220)은 어플리케이션 서버 장치들(AS)에 의해 처리된 데이터를 저장하는 데이터베이스 서버 장치들(DS)을 포함할 수 있다. 오브젝트 캐시 서버 그룹(2230)은 데이터베이스 서버 장치들(DS)에 저장되는 데이터 또는 데이터베이스 서버 장치들(DS)로부터 독출된 데이터를 임시로 저장하는 오브젝트 캐시 서버 장치들(OCS)을 포함할 수 있고, 이에 따라, 어플리케이션 서버 장치들(AS)과 데이터베이스 서버 장치들(DS) 사이에서 캐시의 기능을 수행할 수 있다. 일 실시예에서, 데이터베이스 서버 장치들(DS)은 도 1 내지 도 21을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 제1 인터페이스 프로토콜에 따라 통신하도록 구성된 제1 포트;
    제2 인터페이스 프로토콜에 따라 통신하도록 구성된 제2 포트;
    암호화된 입력 데이터를 수신하고, 미리 결정된 구성(configuration)에 따라 상기 암호화된 입력 데이터를 가공함으로써 가공(processed) 데이터를 생성하며, 상기 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성하는 재구성 가능 로직 칩(reconfigurable logic chip); 및
    상기 제1 포트를 통해 호스트와 통신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩과 통신하며, 버퍼 메모리 및 컨트롤러를 포함하는 스토리지 장치를 포함하고,
    상기 버퍼 메모리는,
    상기 제1 포트를 통해 상기 호스트로부터 수신한, 암호화되지 않은 입력 데이터를 저장하고,
    상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 수신한, 상기 암호화된 출력 데이터를 저장하며,
    상기 컨트롤러는,
    상기 버퍼 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하고,
    상기 암호화되지 않은 입력 데이터를 암호화함으로써 상기 암호화된 입력 데이터를 생성하며,
    상기 제2 포트를 통해 상기 재구성 가능 로직 칩에 상기 암호화된 입력 데이터를 전송하고,
    상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 상기 암호화된 출력 데이터를 수신하며,
    상기 제1 포트를 통해 상기 호스트에, 상기 버퍼 메모리에 저장된 상기 암호화된 출력 데이터를 복호화함으로써 생성된 복호화된 출력 데이터를 전송하는 것을 특징으로 하는 스토리지 장치 세트.
  2. 제1항에 있어서,
    상기 스토리지 장치는, 상기 암호화된 입력 데이터 또는 상기 암호화된 출력 데이터를 상기 버퍼 메모리에 버퍼링하는 것을 특징으로 하는 스토리지 장치 세트.
  3. 제1항에 있어서,
    상기 컨트롤러는, 상기 호스트로부터 상기 암호화되지 않은 입력 데이터 및 기입 커맨드를 수신하고, 수신한 상기 암호화되지 않은 입력 데이터를 암호화하여 상기 암호화된 입력 데이터를 생성하며, 생성된 상기 암호화된 입력 데이터를 상기 버퍼 메모리에 로딩하는 것을 특징으로 하는 스토리지 장치 세트.
  4. 제1항에 있어서, 상기 스토리지 장치는,
    상기 암호화되지 않은 입력 데이터를 저장하는 비휘발성 메모리를 더 포함하고,
    상기 컨트롤러는, 상기 호스트로부터 수신한 호스트 커맨드에 응답하여 상기 비휘발성 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하고, 독출된 상기 암호화되지 않은 입력 데이터를 암호화하여 상기 암호화된 입력 데이터를 생성하며, 생성된 상기 암호화된 입력 데이터를 상기 버퍼 메모리에 로딩하는 것을 특징으로 하는 스토리지 장치 세트.
  5. 제1항에 있어서,
    상기 컨트롤러는, 상기 버퍼 메모리에 상기 암호화된 입력 데이터의 로딩이 완료되면, 상기 암호화된 입력 데이터의 가공을 지시하는 커맨드를 상기 재구성 가능 로직 칩에 전송하는 것을 특징으로 하는 스토리지 장치 세트.
  6. 제1항에 있어서,
    상기 컨트롤러는 제1 칩에 구현되고, 상기 버퍼 메모리는 제2 칩에 구현되는 것을 특징으로 하는 스토리지 장치 세트.
  7. 제1항에 있어서,
    상기 컨트롤러 및 상기 버퍼 메모리는 동일 칩에 구현되는 것을 특징으로 하는 스토리지 장치 세트.
  8. 제1항에 있어서,
    상기 컨트롤러는, 상기 암호화된 출력 데이터를 복호화하여 상기 복호화된 출력 데이터를 생성하고,
    상기 스토리지 장치는, 상기 암호화되지 않은 입력 데이터 또는 상기 복호화된 출력 데이터를 상기 버퍼 메모리에 버퍼링하는 것을 특징으로 하는 스토리지 장치 세트.
  9. 제1항에 있어서, 상기 재구성 가능 로직 칩은 상기 스토리지 장치를 통해 상기 호스트와 간접적으로 연결되는 것을 특징으로 하는 스토리지 장치 세트.
  10. 삭제
  11. 제1항에 있어서,
    상기 스토리지 장치와 상기 재구성 가능 로직 칩은 단일 보드에 실장된 것을 특징으로 하는 스토리지 장치 세트.
  12. 제1항에 있어서,
    상기 스토리지 장치와 상기 재구성 가능 로직 칩은 POP(Package-On-Package)로 구현된 것을 특징으로 하는 스토리지 장치 세트.
  13. 제1항에 있어서,
    상기 재구성 가능 로직 칩은 FPGA(Field Programmable Gate Array)인 것을 특징으로 하는 스토리지 장치 세트.
  14. 제1 인터페이스 프로토콜에 따라 통신하도록 구성된 제1 포트;
    제2 인터페이스 프로토콜에 따라 통신하도록 구성된 제2 포트;
    호스트;
    재구성 가능 로직 칩; 및
    상기 제1 포트를 통해 상기 호스트와 통신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩과 통신하도록 구성된 스토리지 장치를 포함하고,
    상기 스토리지 장치는,
    암호화되지 않은 입력 데이터를 저장하는 비휘발성 메모리;
    상기 재구성 가능 로직 칩에서 제공된 암호화된 출력 데이터를 저장하는 버퍼 메모리; 및
    상기 비휘발성 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하고, 상기 암호화되지 않은 입력 데이터를 암호화하여 암호화된 입력 데이터를 생성하며, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩에 상기 암호화된 입력 데이터를 송신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 상기 암호화된 출력 데이터를 수신하는 컨트롤러를 포함하는 것을 특징으로 하는 스토리지 시스템.
  15. 제14항에 있어서, 상기 재구성 가능 로직 칩은,
    상기 스토리지 장치로부터 상기 암호화된 입력 데이터를 수신하고, 미리 결정된 구성에 따라 상기 암호화된 입력 데이터로부터 가공 데이터를 생성하며, 상기 가공 데이터를 암호화하여 상기 암호화된 출력 데이터를 생성하고, 생성된 상기 암호화된 출력 데이터를 상기 스토리지 장치에 송신하는 것을 특징으로 하는 스토리지 시스템.
  16. 제14항에 있어서, 상기 컨트롤러는,
    상기 버퍼 메모리에 저장된 상기 암호화된 출력 데이터를 복호화함으로써 복호화된 출력 데이터를 생성하고, 상기 복호화된 출력 데이터를 상기 제1 포트를 통해 상기 호스트에 송신하는 것을 특징으로 하는 스토리지 시스템.
  17. 제14항에 있어서,
    상기 버퍼 메모리는 상기 암호화된 입력 데이터를 더 저장하고,
    상기 재구성 가능 로직 칩은 상기 스토리지 장치를 통해 상기 호스트와 간접적으로 연결되는 것을 특징으로 하는 스토리지 시스템.
  18. 스토리지 장치의 동작 방법으로서,
    상기 스토리지 장치의 제1 포트를 통해, 호스트로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신하는 단계;
    상기 스토리지 장치의 상기 제1 포트를 통해 상기 호스트로부터 수신한, 암호화되지 않은 입력 데이터를 버퍼 메모리에 저장하는 단계;
    상기 버퍼 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하는 단계;
    상기 암호화되지 않은 입력 데이터를 암호화하여 암호화된 입력 데이터를 생성하는 단계;
    상기 스토리지 장치의 제2 포트를 통해, 상기 암호화된 입력 데이터 및 상기 암호화된 입력 데이터에 대한 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩에 전송하는 단계;
    상기 스토리지 장치의 상기 제2 포트를 통해, 상기 재구성 가능 로직 칩으로부터 암호화된 출력 데이터를 수신하는 단계; 및
    상기 스토리지 장치의 상기 제1 포트를 통해, 상기 암호화된 출력 데이터를 복호화함으로써 생성된 복호화된 출력 데이터를 상기 호스트에 송신하는 단계를 포함하는 방법.
  19. 제18항에 있어서,
    상기 재구성 가능 로직 칩은 상기 스토리지 장치를 통해 상기 호스트와 간접적으로 연결되는 것을 특징으로 하는 방법.
  20. 제18항에 있어서,
    상기 스토리지 장치는, 비휘발성 메모리를 포함하고,
    상기 방법은,
    상기 비휘발성 메모리로부터 독출 데이터를 수신하는 단계; 및
    상기 독출 데이터를 암호화하는 단계를 더 포함하고,
    상기 재구성 가능 로직 칩에 전송하는 단계는, 암호화된 상기 독출 데이터를 상기 재구성 가능 로직 칩에 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020180065657A 2018-06-07 2018-06-07 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템 KR102570581B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020180065657A KR102570581B1 (ko) 2018-06-07 2018-06-07 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
CN201910088802.5A CN110580129A (zh) 2018-06-07 2019-01-30 存储设备组及包括存储设备组的存储***
US16/263,467 US10817214B2 (en) 2018-06-07 2019-01-31 Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set
EP19157281.7A EP3579136B1 (en) 2018-06-07 2019-02-14 Storage device set and method of operating storage device set
SG10201902256SA SG10201902256SA (en) 2018-06-07 2019-03-14 Storage Device Set Including Storage Device And Reconfigurable Logic Chip, And Storage System Including Storage Device Set
US17/078,549 US11461043B2 (en) 2018-06-07 2020-10-23 Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set
US17/879,119 US20220374164A1 (en) 2018-06-07 2022-08-02 Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180065657A KR102570581B1 (ko) 2018-06-07 2018-06-07 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템

Publications (2)

Publication Number Publication Date
KR20190139081A KR20190139081A (ko) 2019-12-17
KR102570581B1 true KR102570581B1 (ko) 2023-08-24

Family

ID=65635406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180065657A KR102570581B1 (ko) 2018-06-07 2018-06-07 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템

Country Status (5)

Country Link
US (3) US10817214B2 (ko)
EP (1) EP3579136B1 (ko)
KR (1) KR102570581B1 (ko)
CN (1) CN110580129A (ko)
SG (1) SG10201902256SA (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7370158B2 (ja) * 2019-04-03 2023-10-27 株式会社Preferred Networks 情報処理装置および情報処理方法
US11954239B2 (en) * 2021-12-27 2024-04-09 Dell Products L.P. Data storage system using selective encryption and port identification in communications with drive subsystem

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1802030A1 (en) * 2005-12-23 2007-06-27 Nagracard S.A. Secure system-on-chip
US8656191B2 (en) * 2005-12-23 2014-02-18 Nagravision S.A. Secure system-on-chip
US7512743B2 (en) * 2006-11-07 2009-03-31 Spansion Llc Using shared memory with an execute-in-place processor and a co-processor
KR101601790B1 (ko) * 2009-09-22 2016-03-21 삼성전자주식회사 암호키 선택장치를 구비하는 스토리지 시스템 및 암호 키 선택방법
US8850128B2 (en) 2009-12-23 2014-09-30 HGST Netherlands B.V. Implementing data storage and dual port, dual-element storage device
CN103080917B (zh) 2010-06-18 2014-08-20 Lsi公司 可扩展存储装置
US9405550B2 (en) * 2011-03-31 2016-08-02 International Business Machines Corporation Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link
US8922243B2 (en) 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US9304730B2 (en) 2012-08-23 2016-04-05 Microsoft Technology Licensing, Llc Direct communication between GPU and FPGA components
US9658977B2 (en) 2013-03-15 2017-05-23 Micron Technology, Inc. High speed, parallel configuration of multiple field programmable gate arrays
KR102078853B1 (ko) * 2013-11-27 2020-02-18 삼성전자 주식회사 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법
US9619167B2 (en) 2013-11-27 2017-04-11 Intel Corporation System and method for computing message digests
US9852779B2 (en) 2014-03-12 2017-12-26 Futurewei Technologies, Inc. Dual-port DDR4-DIMMs of SDRAM and NVRAM for SSD-blades and multi-CPU servers
US20160094619A1 (en) * 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
KR102276374B1 (ko) * 2015-01-09 2021-07-14 삼성전자주식회사 PoP 구조의 반도체 패키지 및 그에 따른 리프레쉬 제어방법
US9847980B2 (en) * 2015-06-17 2017-12-19 Microsoft Technology Licensing, Llc Protecting communications with hardware accelerators for increased workflow security
US20170091127A1 (en) 2015-09-25 2017-03-30 Intel Corporation Techniques to Couple with a Storage Device via Multiple Communication Ports
US9735962B1 (en) * 2015-09-30 2017-08-15 EMC IP Holding Company LLC Three layer key wrapping for securing encryption keys in a data storage system
CN105243344B (zh) 2015-11-02 2020-09-01 上海兆芯集成电路有限公司 具有硬盘加密功能的芯片组以及主机控制器
US10169073B2 (en) * 2015-12-20 2019-01-01 Intel Corporation Hardware accelerators and methods for stateful compression and decompression operations
US10218497B2 (en) * 2016-08-31 2019-02-26 Intel Corporation Hybrid AES-SMS4 hardware accelerator
US10642972B2 (en) * 2016-10-20 2020-05-05 Intel Corporation Extending packet processing to trusted programmable and fixed-function accelerators
US20180176192A1 (en) * 2016-12-16 2018-06-21 Amazon Technologies, Inc. Secure data egress for sensitive data across networks
US11551335B2 (en) * 2017-04-07 2023-01-10 Intel Corporation Methods and systems using camera devices for deep channel and convolutional neural network images and formats
US10438930B2 (en) * 2017-06-30 2019-10-08 Intel Corporation Package on package thermal transfer systems and methods
US10540505B2 (en) * 2017-09-29 2020-01-21 Intel Corporation Technologies for protecting data in an asymmetric storage volume

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2018-0139110호(2018.05.17.) 1부.*
미국등록특허 제9735962호(2017.08.15.) 1부.*
한국공개특허 제10-2008-0078013호(2008.08.26.) 1부.*
한국공개특허 제10-2015-0061386호(2015.06.04.) 1부.*
한국공개특허 제10-2016-0086507호(2016.07.20.) 1부.*

Also Published As

Publication number Publication date
EP3579136B1 (en) 2024-03-27
KR20190139081A (ko) 2019-12-17
US11461043B2 (en) 2022-10-04
US10817214B2 (en) 2020-10-27
CN110580129A (zh) 2019-12-17
EP3579136A1 (en) 2019-12-11
US20220374164A1 (en) 2022-11-24
SG10201902256SA (en) 2020-01-30
US20190377513A1 (en) 2019-12-12
US20210042057A1 (en) 2021-02-11

Similar Documents

Publication Publication Date Title
KR102559581B1 (ko) 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR102545167B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
US20220374164A1 (en) Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set
US11868626B2 (en) Storage device set including storage device and reconfigurable logic chip, and storage system including the storage device set
US11934542B2 (en) Methods and apparatus for offloading encryption
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
US20240160362A1 (en) Memory devices and methods for managing use history
US11914879B2 (en) Storage controller and storage system comprising the same
US20240184899A1 (en) Methods and apparatus for offloading encryption
US20230135891A1 (en) Storage device including storage controller and operating method
US20240160581A1 (en) Cache optimization mechanism
US20230128638A1 (en) Method of operating storage device and method of operating storage system using the same
US20230153441A1 (en) Storage device and operating method of storage device
KR20240069474A (ko) 메모리 장치 및 사용 기록 관리 방법

Legal Events

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