KR102570581B1 - Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set - Google Patents

Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set 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
Korean (ko)
Other versions
KR20190139081A (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 KR1020180065657A priority Critical patent/KR102570581B1/en
Priority to CN201910088802.5A priority patent/CN110580129A/en
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/en
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/en

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)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Advance Control (AREA)

Abstract

본 개시는 스토리지 장치 세트를 개시한다. 스토리지 장치 세트는, 데이터를 암호화하여 암호화된 입력 데이터를 생성하는 컨트롤러를 포함하고 호스트와 통신 가능한 스토리지 장치와, 스토리지 장치로부터 암호화된 입력 데이터를 수신하고, 미리 결정된 구성(configuration)에 따라 암호화된 입력 데이터를 가공함으로써 가공(processed) 데이터를 생성하며, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성하는 재구성 가능 로직 칩(reconfigurable logic chip)을 포함한다.The present disclosure discloses a set of storage devices. The set of storage devices includes: a storage device including a controller that encrypts data to generate encrypted input data and is capable of communicating with a host; receives encrypted input data from the storage device; and receives encrypted input data according to a predetermined configuration. It includes a reconfigurable logic chip that generates processed data by processing the data and encrypts the processed data to generate encrypted output data.

Description

스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템{Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set}Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set}

본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트, 상기 스토리지 장치 세트를 포함하는 스토리지 시스템, 및 상기 스토리지 장치의 동작 방법에 관한 것이다.The technical idea of the present disclosure relates to a storage device, and more particularly, to a storage device set including a storage device and a reconfigurable logic chip, a storage system including the storage device set, and a method of operating the storage device. will be.

스토리지 시스템의 처리 속도를 향상시키기 위하여, 호스트가 수행하는 연산들 중 일부를 수행하여 호스트의 연산을 보조하는 가속기(accelerator)가 스토리지 시스템에 추가될 수 있다. 가속기는 설정된 기능을 수행하는 전용 하드웨어 가속기와, FPGA(Field Programmable Gate Array) 이미지와 같은 디자인 파일에 따라 재구성 가능한 가속기로 구별될 수 있다. 최근에는 호스트가 다양한 어플리케이션들을 수행하고 각 어플리케이션에 대한 고속 처리가 요구되므로, 다양한 어플리케이션들에 대응하도록 재구성될 수 있는 FPGA와 같은 재구성 가능한 가속기에 대한 요구가 증가하고 있다.In order to improve the processing speed of the storage system, an accelerator assisting the operation of the host by performing some of the operations performed by the host may be added to the storage system. Accelerators can be classified into dedicated hardware accelerators that perform set functions and reconfigurable accelerators according to design files such as FPGA (Field Programmable Gate Array) images. Recently, since a host performs various applications and high-speed processing for each application is required, a demand for a reconfigurable accelerator such as an FPGA that can be reconfigured to correspond to various applications is increasing.

본 개시의 기술적 사상은 호스트의 오버헤드를 감소시킬 수 있도록 스토리지 장치 및 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트, 상기 스토리지 장치 세트를 포함하는 스토리지 시스템, 및 상기 스토리지 장치의 동작 방법을 제공한다.Technical features of the present disclosure provide a storage device set including a storage device and a reconfigurable logic chip, a storage system including the storage device set, and a method of operating the storage device to reduce overhead of a host.

본 개시의 기술적 사상에 따른 스토리지 장치는, 데이터를 암호화하여 암호화된 입력 데이터를 생성하는 컨트롤러를 포함하고, 호스트와 통신 가능한 스토리지 장치, 및 상기 스토리지 장치로부터 상기 암호화된 입력 데이터를 수신하고, 미리 결정된 구성(configuration)에 따라 상기 암호화된 입력 데이터를 가공함으로써 가공(processed) 데이터를 생성하며, 상기 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성하는 재구성 가능 로직 칩(reconfigurable logic chip)을 포함한다.A storage device according to the technical idea of the present disclosure includes a controller that encrypts data to generate encrypted input data, a storage device capable of communicating with a host, and receiving the encrypted input data from the storage device, and a reconfigurable logic chip generating processed data by processing the encrypted input data according to a configuration and generating encrypted output data by encrypting the processed data.

본 개시의 기술적 사상에 따른 스토리지 시스템은, 호스트, 재구성 가능 로직 칩, 및 제1 포트를 통해 상기 호스트와 통신하고, 제2 포트를 통해 상기 재구성 가능 로직 칩과 통신하도록 구성된 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 제2 포트를 통해 상기 재구성 가능 로직 칩에 암호화된 입력 데이터를 송신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 암호화된 출력 데이터를 수신한다.A storage system according to technical features of the present disclosure includes a host, a reconfigurable logic chip, and a storage device configured to communicate with the host through a first port and communicate with the reconfigurable logic chip through a second port, The storage device transmits encrypted input data to the reconfigurable logic chip through the second port and receives encrypted output data from the reconfigurable logic chip through the second port.

본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 상기 스토리지 장치의 제1 포트를 통해, 호스트로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신하는 단계, 상기 스토리지 장치의 제2 포트를 통해, 암호화된 데이터 및 상기 암호화된 데이터에 대한 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩에 전송하는 단계, 및 상기 스토리지 장치의 상기 제2 포트를 통해, 상기 재구성 가능 로직 칩으로부터 암호화된 가공 데이터를 수신하는 단계를 포함한다.According to the technical idea of the present disclosure, a method of operating a storage device includes receiving a host command including a data processing request from a host through a first port of the storage device, encrypting data through a second port of the storage device. Transmitting a command instructing data processing of the encrypted data and the encrypted data to a reconfigurable logic chip, and receiving encrypted processing data from the reconfigurable logic chip through the second port of the storage device. Include steps.

본 개시의 기술적 사상에 따른 스토리지 장치 세트는 스토리지 장치와 재구성 가능 로직 칩 사이에 암호화 통신을 수행함으로써, 스토리지 장치 세트의 보안을 향상시킬 수 있다. 또한, 스토리지 장치는 버퍼 메모리를 포함하고, 버퍼 메모리는 재구성 가능 로직 칩에서 가공할 데이터 및 재구성 가능 로직 칩에서 가공된 데이터를 버퍼링할 수 있으며, 호스트와 재구성 가능 로직 칩은 버퍼 메모리에 액세스할 수 있다. 이에 따라, 호스트와 재구성 가능 로직 칩이 직접적으로 연결되지 않더라도 데이터를 교환할 수 있다. 또한, 스토리지 장치는 재구성 가능 로직 칩에서 가공된 데이터를 바로 호스트에 제공하지 않아도 된다.A storage device set according to technical features of the present disclosure may improve security of the storage device set by performing encrypted communication between the storage device and the reconfigurable logic chip. In addition, the storage device includes a buffer memory, the buffer memory can buffer data to be processed in the reconfigurable logic chip and data processed in the reconfigurable logic chip, and the host and the reconfigurable logic chip can access the buffer memory. there is. Accordingly, data can be exchanged even though the host and the reconfigurable logic chip are not directly connected. In addition, the storage device does not have to directly provide the data processed in the reconfigurable logic chip to the host.

도 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 schematically illustrates a storage system according to an embodiment of the present disclosure.
2 is a detailed block diagram of a storage device set according to an exemplary embodiment of the present disclosure.
3 is a flowchart illustrating a method of operating a storage device according to an exemplary embodiment of the present disclosure.
FIG. 4 is a flowchart illustrating an example of an operation between a host, a storage device, and a reconfigurable logic chip of FIG. 2 .
FIG. 5 is a flowchart illustrating another example of an operation between a host, a storage device, and a reconfigurable logic chip of FIG. 2 .
6 illustrates an example of an operation of the storage device set of FIG. 2 .
FIG. 7 is a flowchart illustrating operations between the controller, buffer memory and reconfigurable logic chip of FIG. 6 .
FIG. 8 shows another example of an operation of the storage device set of FIG. 2 .
9 is a flowchart illustrating operations among the nonvolatile memory, the controller, the buffer memory and the reconfigurable logic chip of FIG. 8 .
10 is a block diagram showing the controller of FIG. 2 in detail.
FIG. 11 is a block diagram illustrating a modified example of the controller of FIG. 10 .
12 is a detailed block diagram of a storage device set according to an exemplary embodiment of the present disclosure.
13 illustrates an example of an operation of the storage device set of FIG. 12 .
14 is a flowchart illustrating an example of an operation between the controller of FIG. 13 and a reconfigurable logic chip.
15 illustrates another example of an operation of the storage device set of FIG. 12 .
FIG. 16 is a flowchart illustrating an example of an operation between the nonvolatile memory of FIG. 15 , a controller, and a reconfigurable logic chip.
17 illustrates an example of an operation of a storage device set according to an embodiment of the present disclosure.
18 is a flowchart illustrating an example of an operation between the controller of FIG. 17 and a reconfigurable logic chip.
19 illustrates another example of an operation of a storage device set according to an embodiment of the present disclosure.
FIG. 20 is a flowchart illustrating an example of an operation between the nonvolatile memory of FIG. 19 , a controller, and a reconfigurable logic chip.
21 illustrates a storage system according to an embodiment of the present disclosure.
22 shows a network system according to an embodiment of the present disclosure.
23 shows a network system according to an embodiment of the present disclosure.

도 1은 본 개시의 일 실시예에 따른 스토리지 시스템(SS)을 개략적으로 나타낸다.1 schematically shows a storage system SS according to an embodiment of the present disclosure.

도 1을 참조하면, 스토리지 시스템(Storage System)(SS)은 스토리지 장치 세트(10) 및 호스트(300)를 포함하고, 스토리지 장치 세트(10)는 스토리지 장치(100) 및 재구성 가능 로직 칩(reconfigurable logic chip)(200)을 포함할 수 있다. 스토리지 장치(100)는 제1 포트(port)(PT1) 및 제2 포트(PT2)를 포함할 수 있고, 이에 따라, 스토리지 장치(100)를 듀얼(dual) 포트 스토리지 장치라고 지칭할 수 있다.Referring to FIG. 1 , a storage system (SS) includes a storage device set 10 and a host 300, and the storage device set 10 includes a storage device 100 and a reconfigurable logic chip (reconfigurable logic chip). logic chip) (200). The storage device 100 may include a first port PT1 and a second port PT2 , and thus the storage device 100 may be referred to as a dual port storage device.

일 실시예에서, 스토리지 장치(100)는 제1 칩으로 구현되고, 재구성 가능 로직 칩(200)은 제2 칩으로 구현될 수 있고, 제1 칩과 제2 칩은 단일 보드에 실장되어 서로 전기적으로 연결될 수 있다. 일 실시예에서, 스토리지 장치(100)은 제1 칩으로 구현되고, 재구성 가능 로직 칩(200)은 제2 칩으로 구현될 수 있고, 제1 칩과 제2 칩은 POP(Package-On-Package)를 구성할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 스토리지 장치(100)와 재구성 가능 로직 칩(200)은 임의의 구성을 통해 서로 전기적으로 연결됨으로써 스토리지 장치 세트(10)를 구성할 수 있다.In one embodiment, the storage device 100 may be implemented as a first chip, and the reconfigurable logic chip 200 may be implemented as a second chip, and the first chip and the second chip may be mounted on a single board and electrically electrical to each other. can be connected to In one embodiment, the storage device 100 may be implemented as a first chip, the reconfigurable logic chip 200 may be implemented as a second chip, and the first chip and the second chip may be implemented as a POP (Package-On-Package) ) can be configured. However, the present invention is not limited thereto, and the storage device 100 and the reconfigurable logic chip 200 may be electrically connected to each other through an arbitrary configuration to configure the storage device set 10 .

일 실시예에서, 재구성 가능 로직 칩(200)은 FPGA(Field Programmable Gate Array) 칩일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 재구성 가능 로직 칩(200)은 PLD(Programmable Logic Device) 또는 CPLD(Complex PLD) 등일 수도 있다. 재구성 가능 로직 칩(200)은 호스트(300)가 수행하는 연산들 중 일부를 수행하여 호스트(300)의 연산을 보조하는 가속기로 이용될 수 있다.In one embodiment, the reconfigurable logic chip 200 may be a Field Programmable Gate Array (FPGA) chip. However, the present invention is not limited thereto, and the reconfigurable logic chip 200 may be a programmable logic device (PLD) or a complex PLD (CPLD). The reconfigurable logic chip 200 may be used as an accelerator assisting the operation of the host 300 by performing some of the operations performed by the host 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) 등일 수도 있다.The storage device 100 may communicate with the host 300 through the first port PT1. Specifically, the storage device 100 may communicate with the host 300 through the first port PT1 according to the first interface protocol. For example, the first interface protocol may be Peripheral Component Interconnect Express (PCIe). However, the present invention is not limited thereto, and the first interface protocol is 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), etc.

일 실시예에서, 제1 포트(PT1)는 PCIe 버스에 연결될 수 있고, 호스트(300)는 PCIe 버스에 연결된 루트 컴플렉스(Root Complex)(RC)를 포함할 수 있다. 루트 컴플렉스(RC)는 호스트(300)와 스토리지 장치(100) 사이의 트랜잭션(transaction)을 관리할 수 있다. 예를 들어, 루트 컴플렉스(RC)는 트랜잭션과 관련된 메시지들을 라우팅할 수 있다. 루트 컴플렉스(RC)는 루트 포트들, 루트 컴플렉스 레지스터 블록들, 또는 루트 컴플렉스가 집적된 엔드포인트들의 로직 애그리게이션(logical aggregation)을 포함할 수 있다.In one embodiment, the first port PT1 may be connected to a PCIe bus, and the host 300 may include a root complex (RC) connected to the PCIe bus. The root complex RC may manage transactions between the host 300 and the storage device 100 . For example, a root complex (RC) may route messages related to a transaction. A root complex (RC) may include a logical aggregation of root ports, root complex register blocks, or endpoints into which the root complex is integrated.

일 실시예에서, 루트 컴플렉스(RC)는 스토리지 장치(100)에 직접 연결될 수 있다. 일 실시예에서, 루트 컴플렉스(RC)는 적어도 하나의 인터페이스 스위치를 통해 스토리지 장치(100)에 연결될 수 있다. 일 실시예에서, 루트 컴플렉스(RC)는 호스트(300)에 포함된 CPU(Central Processing Unit)와 분리된 장치로 구현될 수 있다. 일 실시예에서, 루트 컴플렉스(RC)는 호스트(300)에 포함된 CPU와 집적되도록 구현될 수 있다.In one embodiment, the root complex RC may be directly connected to the storage device 100 . In one embodiment, the root complex RC may be connected to the storage device 100 through at least one interface switch. In one embodiment, the root complex (RC) may be implemented as a device separate from a central processing unit (CPU) included in the host 300 . In one embodiment, the root complex (RC) may be implemented to be integrated with a CPU included in the host 300 .

스토리지 장치(100)는 제2 포트(PT2)를 통해 재구성 가능 로직 칩(200)과 통신할 수 있다. 구체적으로, 제2 인터페이스 프로토콜에 따라 제2 포트(PT2)를 통해 재구성 가능 로직 칩(200)과 통신할 수 있다. 이와 같이, 재구성 가능 로직 칩(200)은 호스트(300)와 직접적으로 연결되는 포트를 포함하지 않으며, 호스트(300)는 스토리지 장치(100)를 통해서 재구성 가능 로직 칩(200)과 통신할 수 있다.The storage device 100 may communicate with the reconfigurable logic chip 200 through the second port PT2 . Specifically, it may communicate with the reconfigurable logic chip 200 through the second port PT2 according to the second interface protocol. As such, the reconfigurable logic chip 200 does not include a port directly connected to the host 300, and the host 300 may communicate with the reconfigurable logic chip 200 through the storage device 100. .

본 실시예에서, 스토리지 장치(100)와 재구성 가능 로직 칩(200)은 암호화 통신을 수행할 수 있다. 스토리지 장치(100)는 제2 포트(PT2)를 통해 암호화된 데이터를 재구성 가능 로직 칩(200)에 송신할 수 있고, 제2 포트(PT2)를 통해 암호화된 데이터를 재구성 가능 로직 칩(200)으로부터 수신할 수 있다. 구체적으로, 스토리지 장치(100)는 암호화/복호화 모듈(111)을 포함할 수 있고, 암호화/복호화 모듈(111)은 데이터를 암호화함으로써 암호화된 데이터를 생성할 수 있다. 또한, 재구성 가능 로직 칩(200)은 암호화/복호화 모듈(210)을 포함할 수 있고, 암호화/복호화 모듈(210)은 스토리지 장치(100)로부터 수신한 암호화된 데이터를 복호화할 수 있고, 재구성 가능 로직 칩(200)에서 가공된 데이터를 암호화할 수 있다.In this embodiment, the storage device 100 and the reconfigurable logic chip 200 may perform encrypted communication. The storage device 100 may transmit encrypted data to the reconfigurable logic chip 200 through the second port PT2, and transmit the encrypted data to the reconfigurable logic chip 200 through the second port PT2. can be received from Specifically, the storage device 100 may include an encryption/decryption module 111, and the encryption/decryption module 111 may generate encrypted data by encrypting data. Also, the reconfigurable logic chip 200 may include an encryption/decryption module 210, and the encryption/decryption module 210 may decrypt encrypted data received from the storage device 100 and may be reconfigurable. Data processed in the logic chip 200 may be encrypted.

일 실시예에서, 스토리지 장치(100)는 데이터를 블록 단위로 관리하는 블록 스토리지 장치일 수도 있다. 일 실시예에서, 스토리지 장치(100)는 데이터를 오브젝트 단위로 관리하는 오브젝트 스토리지 장치일 수 있다. 예를 들어, 스토리지 장치(100)는 키-밸류 스토리지 장치일 수 있다. 키-밸류 스토리지 장치는 키-밸류 페어(pair)를 이용하여 데이터를 빠르고 간단하게 처리하는 장치이다. 여기서, "키-밸류 페어"는 유일성을 가지는 키와, 상기 키에 대응하는 데이터인 밸류의 쌍이며, "튜플(tuple)" 또는 "키-밸류 튜플"이라고 지칭할 수 있다. 키-밸류 페어에서, 키는 파일 네임(file name), URI(Uniform Resource Identifier) 또는 해시와 같은 임의의 스트링(string)으로 표시되고, 밸류는 이미지, 사용자 선호 파일 또는 문서와 같은 임의의 종류의 데이터일 수 있다.In one embodiment, the storage device 100 may be a block storage device that manages data in block units. In one embodiment, the storage device 100 may be an object storage device that manages data in object units. For example, the storage device 100 may be a key-value storage device. A key-value storage device is a device that quickly and simply processes data using a key-value pair. Here, a "key-value pair" is a pair of a key having uniqueness and a value that is data corresponding to the key, and may be referred to as a "tuple" or a "key-value tuple". In a key-value pair, the key is represented by an arbitrary string such as a file name, Uniform Resource Identifier (URI), or hash, and the value is represented by any kind of image, user-preferred file, or document. can be data.

스토리지 시스템(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), 웨어러블 기기 등일 수 있다.The storage system SS may be implemented as, for example, a personal computer (PC), a data server, a network-attached storage, an Internet of Things (IoT) device, or a portable electronic device. Portable electronic devices include laptop computers, mobile phones, smart phones, tablet PCs, personal digital assistants (PDAs), enterprise digital assistants (EDAs), digital still cameras, digital video cameras, audio devices, portable multimedia players (PMPs), and PNDs. (personal navigation device), MP3 player, handheld game console, e-book, wearable device, and the like.

일부 실시예들에서, 스토리지 장치(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)일 수 있다.In some embodiments, the storage device 100 may be an internal memory embedded in an electronic device. For example, the storage device 100 may be an SSD, an embedded universal flash storage (UFS) memory device, or an embedded multi-media card (eMMC). In some embodiments, the storage device 100 may be an external memory removable from an electronic device. For example, the storage device 100 may include a UFS memory card, Compact Flash (CF), Secure Digital (SD), Micro Secure Digital (Micro-SD), Mini Secure Digital (Mini-SD), extreme Digital (xD), or It may be a memory stick.

도 2는 본 개시의 일 실시예에 따른 스토리지 장치 세트(10)를 상세하게 나타내는 블록도이다.2 is a detailed block diagram of a storage device set 10 according to an exemplary embodiment of the present disclosure.

도 2를 참조하면, 스토리지 장치(100)는 컨트롤러(110), 버퍼 메모리(120) 및 비휘발성 메모리(Non-volatile memory, NVM)(130)를 포함할 수 있고, 컨트롤러(110)는 암호화/복호화 모듈(111)을 포함할 수 있다. 일 실시예에서, 컨트롤러(110), 버퍼 메모리(120) 및 비휘발성 메모리(130)는 개별적인 칩들로 각각 구현될 수 있다. 일 실시예에서, 컨트롤러(110)와 버퍼 메모리(120)는 암호화 통신을 수행할 수 있다. 일 실시예에서, 컨트롤러(110)와 비휘발성 메모리(130)는 암호화 통신을 수행할 수 있다. 일 실시예에서, 컨트롤러(110)와 재구성 가능 로직 칩(200)은 암호화 통신을 수행할 수 있다.Referring to FIG. 2 , the storage device 100 may include a controller 110, a buffer memory 120, and a non-volatile memory (NVM) 130, and the controller 110 may encrypt/ A decryption module 111 may be included. In one embodiment, the controller 110, buffer memory 120 and non-volatile memory 130 may each be implemented as separate chips. In one embodiment, the controller 110 and the buffer memory 120 may perform encrypted communication. In one embodiment, the controller 110 and the non-volatile memory 130 may perform encrypted communication. In one embodiment, the controller 110 and the reconfigurable logic chip 200 may perform cryptographic communication.

재구성 가능 로직 칩(200)은 암호화/복호화 모듈(210) 및 가속기(220)를 포함할 수 있다. 암호화/복호화 모듈(210)은 스토리지 장치(100)로부터 암호화된 입력 데이터를 수신하고, 암호화된 입력 데이터를 복호화하여 복호화된 데이터를 생성할 수 있다. 또한, 암호화/복호화 모듈(210)은 가속기(220)로부터 가공 데이터를 수신하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성할 수 있다. 일부 실시예에서, 재구성 가능 로직 칩(200)은 루트 컴플렉스를 더 포함할 수 있고, 스토리지 장치(100)로부터 수신된 데이터는 루트 컴플렉스를 통해 암호화/복호화 모듈(210)에 전달될 수 있다.The reconfigurable logic chip 200 may include an encryption/decryption module 210 and an accelerator 220 . The encryption/decryption module 210 may receive encrypted input data from the storage device 100 and decrypt the encrypted input data to generate decrypted data. Also, the encryption/decryption module 210 may receive processed data from the accelerator 220 and encrypt the processed data to generate encrypted output data. In some embodiments, the reconfigurable logic chip 200 may further include a root complex, and data received from the storage device 100 may be delivered to the encryption/decryption module 210 through the root complex.

가속기(220)는 미리 결정된 구성(configuration)에 따라 데이터 가공 동작을 수행할 수 있다. 재구성 가능 로직 칩(200)은 동작 중에 재구성될 수 있고, 이에 따라, 가속기(220)는 제1 가속기로 동작하다가 제2 가속기로 변경될 수 있다. 예를 들어, 가속기(220)는 멀티미디어 트랜스코딩(transcoding) 또는 이레이저(eraser) 코딩 등을 수행할 수 있다. 예를 들어, 가속기(220)는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network) 등과 같은 머신 러닝 알고리즘 등을 수행할 수 있다.The accelerator 220 may perform a data processing operation according to a predetermined configuration. The reconfigurable logic chip 200 may be reconfigured during operation, and accordingly, the accelerator 220 may operate as a first accelerator and change to a second accelerator. For example, the accelerator 220 may perform multimedia transcoding or eraser coding. For example, the accelerator 220 may perform machine learning algorithms such as convolutional neural networks (CNNs) and recurrent neural networks (RNNs).

나아가, 예를 들어, 가속기(220)는 인라인(inline) 프로세싱, 프리(pre)-프로세싱, 프리-필터링(pre-filtering), 암호화(cryptography), 압축, 프로토콜 브릿징(bridging) 등을 수행할 수 있다. 예를 들어, 가속기(220)는 소팅(sorting) 연산, 서칭(searching) 연산, 로직 연산 또는 사칙 연산 중 하나 이상의 연산을 수행할 수 있다. 로직 연산은 AND 게이트, OR 게이트, XOR 게이트, NOR 게이트, NAND 게이트 등 다양한 로직 게이트가 수행하는 연산 또는 이러한 연산을 둘 이상 결합한 연산 동작을 나타낼 수 있다. 가속기(220)가 수행하는 연산 동작은 위에 설명한 예에 한정되지 않으며, 호스트(300)가 수행하는 연산들 중 일부에 대응하는 임의의 연산일 수 있다.Further, for example, the accelerator 220 may perform inline processing, pre-processing, pre-filtering, cryptography, compression, protocol bridging, and the like. can For example, the accelerator 220 may perform one or more of a sorting operation, a searching operation, a logic operation, or four arithmetic operations. The logic operation may represent an operation performed by various logic gates such as an AND gate, an OR gate, an XOR gate, a NOR gate, and a NAND gate, or an operation operation combining two or more of these operations. The calculation operation performed by the accelerator 220 is not limited to the example described above, and may be any calculation corresponding to some of the calculations performed by the host 300 .

호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있다. 스토리지 장치(100)는 호스트 커맨드에 응답하여 재구성 가능 로직 칩(200)에 데이터 가공을 지시하는 커맨드를 전송할 수 있다. 또한, 스토리지 장치(100)는 가공할 데이터를 재구성 가능 로직 칩(200)에 전송할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 가공할 데이터를 암호화함으로써 암호화된 입력 데이터를 생성할 수 있고, 컨트롤러(110)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송할 수 있다. The host 300 may transmit a host command including a data processing request to the storage device 100 . The storage device 100 may transmit a command instructing data processing to the reconfigurable logic chip 200 in response to a host command. Also, the storage device 100 may transmit data to be processed to the reconfigurable logic chip 200 . In one embodiment, the encryption/decryption module 111 may generate encrypted input data by encrypting data to be processed, and the controller 110 may transmit the encrypted input data to the reconfigurable logic chip 200 .

재구성 가능 로직 칩(200)은 커맨드 및 데이터를 수신하고, 수신한 데이터에 대해 데이터 가공을 수행함으로써 가공 데이터를 생성하고, 가공 데이터를 스토리지 장치(100)에 전송할 수 있다. 일 실시예에서, 암호화/복호화 모듈(210)은 암호화된 입력 데이터를 복호화하여 복호화된 데이터를 생성할 수 있고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 복호화된 데이터에 대해 데이터 가공을 수행함으로써 가공 데이터를 생성하고, 가공 데이터를 암호화/복호화 모듈(210)에 제공할 수 있다. 암호화/복호화 모듈(210)은 가공 데이터를 암호화함으로써 암호화된 출력 데이터를 생성할 수 있다.The reconfigurable logic chip 200 may receive commands and data, generate processed data by performing data processing on the received data, and transmit the processed data to the storage device 100 . In one embodiment, the encryption/decryption module 210 may generate decrypted data by decrypting the encrypted input data, and may provide the decrypted data to the accelerator 220 . The accelerator 220 may generate processed data by performing data processing on the decrypted data and provide the processed data to the encryption/decryption module 210 . The encryption/decryption module 210 may generate encrypted output data by encrypting processed data.

또한, 호스트(300)는 기입 요청 또는 독출 요청 등을 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 독출 요청에 응답하여 비휘발성 메모리(130)로부터 데이터를 독출할 수 있고, 기입 요청에 응답하여 비휘발성 메모리(130)에 데이터를 기입할 수 있다. 컨트롤러(110)는 호스트(300)로부터 수신한 기입 요청에 응답하여 비휘발성 메모리(130)에 데이터를 기입하거나, 또는 호스트(300)로부터 수신한 독출 요청에 응답하여 비휘발성 메모리(130)로부터 데이터를 독출하도록 비휘발성 메모리(130)를 제어할 수 있다.Also, the host 300 may transmit a host command including a write request or a read request to the storage device 100 , and the storage device 100 reads data from the nonvolatile memory 130 in response to the read request. In response to a write request, data may be written to the non-volatile memory 130 . The controller 110 writes data into the non-volatile memory 130 in response to a write request received from the host 300, or data from the non-volatile memory 130 in response to a read request received from the host 300. It is possible to control the non-volatile memory 130 to read.

버퍼 메모리(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)과 같은 휘발성 메모리일 수 있다.The buffer memory 120 may buffer input data (ID) to be processed in the reconfigurable logic chip 200 . In one embodiment, the input data ID may be encrypted data. However, the present invention is not limited thereto, and in some embodiments, the input data ID may be unencrypted normal data. Also, the buffer memory 120 may buffer data processed by the reconfigurable logic chip 200, for example, first output data OD1 and second output data OD2. In one embodiment, the first and second output data OD1 and OD2 may be encrypted data. However, the present invention is not limited thereto, and in some embodiments, the first and second output data OD1 and OD2 may be normal data. For example, the buffer memory 120 may be a volatile memory such as Dynamic Random Access Memory (DRAM).

일 실시예에서, 버퍼 메모리(120)는 CMB(Control Memory Buffer) 일 수 있다. 호스트(300)와 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 액세스할 수 있다. 이에 따라, 호스트(300)와 재구성 가능 로직 칩(200)은 서로 직접 연결되지 않더라도, 버퍼 메모리(120)를 통해서 데이터를 주고 받을 수 있다.In one embodiment, the buffer memory 120 may be a Control Memory Buffer (CMB). The host 300 and the reconfigurable logic chip 200 may access the buffer memory 120 . Accordingly, the host 300 and the reconfigurable logic chip 200 may exchange data through the buffer memory 120 even though they are not directly connected to each other.

예를 들어, 호스트(300)는 재구성 가능 로직 칩(200)에서 가공할 데이터를 버퍼 메모리(120)에 로딩할 수 있고, 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 로딩된 데이터를 가공할 수 있다. 예를 들어, 재구성 가능 로직 칩(200)은 가공 데이터를 버퍼 메모리(120)에 로딩할 수 있고, 호스트(300)는 버퍼 메모리(120)에 로딩된 가공 데이터를 독출할 수 있다. 이와 같이, 호스트(300)가 버퍼 메모리(120)에 액세스할 수 있으므로, 스토리지 장치(100)는 재구성 가능 로직 칩(200)의 데이터 가공 후에 가공 데이터를 호스트(300)에 제공하지 않고, 데이터 가공이 완료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.For example, the host 300 may load data to be processed in the reconfigurable logic chip 200 into the buffer memory 120, and the reconfigurable logic chip 200 may load the data loaded into the buffer memory 120. can be processed For example, the reconfigurable logic chip 200 may load processing data into the buffer memory 120 , and the host 300 may read the processing data loaded into the buffer memory 120 . As such, since the host 300 can access the buffer memory 120, the storage device 100 does not provide processing data to the host 300 after data processing of the reconfigurable logic chip 200, and data processing A response message indicating completion of the process may be transmitted to the host 300 .

비휘발성 메모리(130)는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다. 일 실시예에서, 비휘발성 메모리(130)는 플래쉬 메모리 장치를 포함할 수 있고, 예를 들어, 낸드(NAND) 플래쉬 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 비휘발성 메모리(130)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 장치를 포함할 수 있다.The non-volatile memory 130 may include a memory cell array including a plurality of memory cells. In one embodiment, the non-volatile memory 130 may include a flash memory device, for example, a NAND flash memory device. However, the present invention is not limited thereto, and the nonvolatile memory 130 may include a resistive memory device such as a resistive RAM (ReRAM), a phase change RAM (PRAM), or a magnetic RAM (MRAM).

도 3은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 3을 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 도 2의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 이하에서는 도 2 및 도 3을 함께 참조하여 설명하기로 한다.3 is a flowchart illustrating a method of operating a storage device according to an exemplary embodiment of the present disclosure. Referring to FIG. 3 , the operating method of the storage device according to the present embodiment may include steps sequentially performed in the storage device 100 of FIG. 2 . Hereinafter, it will be described with reference to FIGS. 2 and 3 together.

단계 S110에서, 스토리지 장치(100)는 호스트(300)로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신한다. 일 실시예에서, 스토리지 장치(100)는 호스트 커맨드와 함께 데이터를 수신할 수 있다. 일 실시예에서, 스토리지 장치(100)는 호스트 커맨드를 수신한 후에, 호스트(300)로부터 데이터를 수신할 수도 있다. 일 실시예에서, 스토리지 장치(100)는 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 데이터를 독출할 수 있다. In operation S110 , the storage device 100 receives a host command including a data processing request from the host 300 . In one embodiment, the storage device 100 may receive data along with a host command. In one embodiment, the storage device 100 may receive data from the host 300 after receiving a host command. In one embodiment, the storage device 100 may read data from the buffer memory 120 or the non-volatile memory 130 .

단계 S130에서, 스토리지 장치(100)는 데이터 가공을 지시하는 커맨드 및 암호화된 데이터를 재구성 가능 로직 칩(200)에 전송한다. 일 실시예에서, 스토리지 장치(100)는 커맨드를 먼저 재구성 가능 로직 칩(200)에 전송하고, 이어서, 재구성 가능 로직 칩(200)의 독출 요청에 응답하여 암호화된 데이터를 재구성 가능 로직 칩(200)에 전송할 수 있다. 일 실시예에서, 스토리지 장치(100)는 커맨드 및 암호화된 데이터를 함께 재구성 가능 로직 칩(200)에 전송할 수도 있다.In step S130 , the storage device 100 transmits a command instructing data processing and encrypted data to the reconfigurable logic chip 200 . In one embodiment, the storage device 100 first transmits a command to the reconfigurable logic chip 200, and then, in response to a read request from the reconfigurable logic chip 200, the storage device 100 transmits encrypted data to the reconfigurable logic chip 200. ) can be transmitted. In one embodiment, the storage device 100 may transmit a command and encrypted data to the reconfigurable logic chip 200 together.

일 실시예에서, 단계 S110과 S130 사이에, 스토리지 장치(100)는 데이터 암호화 동작을 수행할 수 있다. 예를 들어, 암호화/복호화 모듈(111)은 재구성 가능 로직 칩(200)에서 가공할 데이터를 암호화할 수 있다. 일 실시예에서, 스토리지 장치(100)는 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 암호화된 데이터를 독출할 수 있다. 일 실시예에서, 스토리지 장치(100)는 호스트(300)로부터 암호화된 데이터를 수신할 수도 있다.In one embodiment, between steps S110 and S130, the storage device 100 may perform a data encryption operation. For example, the encryption/decryption module 111 may encrypt data to be processed in the reconfigurable logic chip 200 . In one embodiment, the storage device 100 may read encrypted data from the buffer memory 120 or the nonvolatile memory 130 . In one embodiment, the storage device 100 may receive encrypted data from the host 300 .

단계 S150에서, 스토리지 장치(100)는 재구성 가능 로직 칩(200)으로부터 암호화된 가공 데이터를 수신한다. 일 실시예에서, 스토리지 장치(100)는 암호화된 가공 데이터를 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 저장할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 가공 데이터를 호스트(300)에 전송할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 가공 데이터를 복호화할 수 있다. 일 실시예에서, 스토리지 장치(100)는 복호화된 가공 데이터를 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 저장할 수 있다. 일 실시예에서, 스토리지 장치(100)는 복호화된 가공 데이터를 호스트(300)에 전송할 수 있다.In step S150 , the storage device 100 receives encrypted processed data from the reconfigurable logic chip 200 . In one embodiment, the storage device 100 may store encrypted processed data in the buffer memory 120 or the non-volatile memory 130 . In one embodiment, the storage device 100 may transmit encrypted processing data to the host 300 . In one embodiment, the storage device 100 may decrypt encrypted processed data. In one embodiment, the storage device 100 may store the decrypted processed data in the buffer memory 120 or the non-volatile memory 130 . In one embodiment, the storage device 100 may transmit decrypted processed data to the host 300 .

도 4는 도 2의 호스트(300), 스토리지 장치(100) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.FIG. 4 is a flowchart illustrating an example of an operation between the host 300 of FIG. 2 , the storage device 100 and the reconfigurable logic chip 200 .

도 4를 참조하면, 호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 생성한다(S200). 예를 들어, 호스트(300)는 이미지 인식 어플리케이션의 실행을 지시하는 사용자 입력에 응답하여, 재구성 가능 로직 칩(200)에 이미지 인식에 필요한 CNN을 지시하는 호스트 커맨드를 생성할 수 있다. 호스트(300)는 호스트 커맨드를 스토리지 장치(100)에 전송한다(S210). Referring to FIG. 4 , the host 300 generates a host command including a data processing request (S200). For example, the host 300 may generate a host command instructing the reconfigurable logic chip 200 a CNN required for image recognition in response to a user input instructing execution of an image recognition application. The host 300 transmits a host command to the storage device 100 (S210).

스토리지 장치(100)는 재구성 가능 로직 칩(200)에서 가공할 데이터를 암호화하여 암호화된 입력 데이터를 생성한다(S220). 예를 들어, 스토리지 장치(100)는 이미지 인식의 대상이 되는 이미지 파일을 암호화하여 암호화된 입력 데이터를 생성할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(300)로부터 수신한 데이터, 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 독출한 데이터를 암호화할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 데이터를 수신할 수 있고, 이 경우 S220은 생략될 수 있다. The storage device 100 encrypts data to be processed in the reconfigurable logic chip 200 to generate encrypted input data (S220). For example, the storage device 100 may generate encrypted input data by encrypting an image file that is an image recognition target. For example, the storage device 100 may encrypt data received from the host 300 and data read from the buffer memory 120 or the non-volatile memory 130 . In one embodiment, the storage device 100 may receive encrypted data, and in this case, S220 may be omitted.

스토리지 장치(100)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S230). 스토리지 장치(100)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S235). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성한다(S240). 재구성 가능 로직 칩(200)은 미리 결정된 구성에 따라 복호화된 데이터를 가공함으로써 가공 데이터를 생성한다(S250). 재구성 가능 로직 칩(200)은 가공 데이터를 암호화함으로써 암호화된 출력 데이터를 생성한다(S260). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 스토리지 장치(100)에 전송한다(S270). The storage device 100 transmits a command instructing data processing to the reconfigurable logic chip 200 (S230). The storage device 100 transmits the encrypted input data to the reconfigurable logic chip 200 (S235). The reconfigurable logic chip 200 generates decrypted data by decrypting the encrypted input data (S240). The reconfigurable logic chip 200 generates processed data by processing the decoded data according to a predetermined configuration (S250). The reconfigurable logic chip 200 generates encrypted output data by encrypting the processed data (S260). The reconfigurable logic chip 200 transmits the encrypted output data to the storage device 100 (S270).

스토리지 장치(100)는 암호화된 출력 데이터에 대한 기입 동작을 수행한다. 예를 들어, 스토리지 장치(100)는 암호화된 출력 데이터를 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 기입할 수 있다. 일 실시예에서, 스토리지 장치(100)는 암호화된 출력 데이터를 복호화하고, 복호화된 출력 데이터에 대한 기입 동작을 수행할 수도 있다. 스토리지 장치(100)는 데이터 가공이 완료되었음을 나타내는 응답 메시지를 호스트(300)에 전송한다.The storage device 100 performs a write operation on encrypted output data. For example, the storage device 100 may write encrypted output data into the buffer memory 120 or the nonvolatile memory 130 . In one embodiment, the storage device 100 may decrypt encrypted output data and perform a write operation on the decrypted output data. The storage device 100 transmits a response message indicating that data processing has been completed to the host 300 .

도 5는 도 2의 호스트(300), 스토리지 장치(100) 및 재구성 가능 로직 칩(200) 사이의 동작의 다른 예를 나타내는 흐름도이다.FIG. 5 is a flowchart illustrating another example of an operation between the host 300 , the storage device 100 and the reconfigurable logic chip 200 of FIG. 2 .

도 5를 참조하면, 본 실시예는 도 4의 변형 예에 대응하며, 이하에서는, 도4에 예시된 동작과의 차이점을 중심으로 설명하기로 한다. 호스트(300)는 멀티 데이터 세트 가공 요청을 포함하는 호스트 커맨드, 다시 말해, 멀티 데이터 세트의 가공을 지시하는 호스트 커맨드를 생성한다(S300). 여기서, 멀티 데이터 세트는 상기 호스트 커맨드와 관련된 복수의 데이터를 지칭한다. 또한, 멀티 데이터 세트 가공 요청을 포함하는 호스트 커맨드는 재구성 가능 로직 칩(200)이 상기 호스트 커맨드에 응답하여 복수의 데이터 가공 동작들을 수행함으로써 복수의 데이터, 즉, 멀티 데이터 세트를 출력하도록 지시할 수 있다. 예를 들어, 멀티 데이터 세트 가공 요청을 포함하는 호스트 커맨드는 트랜스코딩 커맨드일 수 있다. 호스트(300)는 호스트 커맨드를 스토리지 장치(100)에 전송한다(S310).Referring to FIG. 5 , the present embodiment corresponds to the modified example of FIG. 4 , and hereinafter, differences from the operation illustrated in FIG. 4 will be mainly described. The host 300 generates a host command including a multi-data set processing request, that is, a host command instructing processing of the multi-data set (S300). Here, the multi-data set refers to a plurality of data related to the host command. In addition, a host command including a multi-data set processing request may instruct the reconfigurable logic chip 200 to output a plurality of data, ie, a multi-data set, by performing a plurality of data processing operations in response to the host command. there is. For example, a host command containing a multi-data set processing request may be a transcoding command. The host 300 transmits a host command to the storage device 100 (S310).

스토리지 장치(100)는 재구성 가능 로직 칩(200)에서 가공할 데이터를 암호화하여 암호화된 입력 데이터를 생성한다(S320). 예를 들어, 스토리지 장치(100)는 트랜스코딩의 대상이 되는 멀티미디어 파일을 암호화하여 암호화된 입력 데이터를 생성할 수 있다. 스토리지 장치(100)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S330). 스토리지 장치(100)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S335). 예를 들어, 암호화된 입력 데이터는 스케일러블 포맷을 갖는 멀티미디어 파일에 대한 암호화 데이터일 수 있다. 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성한다(S340). 예를 들어, 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써, 스케일러블 포맷을 갖는 멀티미디어 파일을 생성할 수 있다. The storage device 100 encrypts data to be processed in the reconfigurable logic chip 200 to generate encrypted input data (S320). For example, the storage device 100 may generate encrypted input data by encrypting a multimedia file to be transcoded. The storage device 100 transmits a command instructing data processing to the reconfigurable logic chip 200 (S330). The storage device 100 transmits the encrypted input data to the reconfigurable logic chip 200 (S335). For example, the encrypted input data may be encrypted data for a multimedia file having a scalable format. The reconfigurable logic chip 200 generates decrypted data by decrypting the encrypted input data (S340). For example, the reconfigurable logic chip 200 may generate a multimedia file having a scalable format by decrypting encrypted input data.

재구성 가능 로직 칩(200)은 미리 결정된 구성에 따라 복호화된 데이터를 가공함으로써 제1 가공 데이터를 생성하고, 제1 가공 데이터를 암호화함으로써 암호화된 제1 출력 데이터를 생성한다(S350). 예를 들어, 재구성 가능 로직 칩(200)은 스케일러블 포맷을 갖는 멀티미디어 파일에 대한 트랜스코딩을 수행함으로써 제1 포맷을 갖는 제1 멀티미디어 파일을 생성할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 제1 멀티미디어 파일을 암호화함으로써 암호화된 제1 멀티미디어 파일을 생성할 수 있다. The reconfigurable logic chip 200 generates first processed data by processing the decrypted data according to a predetermined configuration, and generates encrypted first output data by encrypting the first processed data (S350). For example, the reconfigurable logic chip 200 may generate a first multimedia file having a first format by transcoding a multimedia file having a scalable format. Subsequently, the reconfigurable logic chip 200 may generate an encrypted first multimedia file by encrypting the first multimedia file.

재구성 가능 로직 칩(200)은 암호화된 제1 출력 데이터를 스토리지 장치(100)에 전송한다(S355). 예를 들어, 재구성 가능 로직 칩(200)은 암호화된 제1 멀티미디어 파일을 스토리지 장치(100)에 전송할 수 있다. 스토리지 장치(100)는 암호화된 제1 출력 데이터에 대한 기입 동작을 수행한다(S360). 예를 들어, 스토리지 장치(100)는 암호화된 제1 멀티미디어 파일을 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 기입할 수 있다.The reconfigurable logic chip 200 transmits the encrypted first output data to the storage device 100 (S355). For example, the reconfigurable logic chip 200 may transmit the encrypted first multimedia file to the storage device 100 . The storage device 100 performs a write operation on the encrypted first output data (S360). For example, the storage device 100 may write the encrypted first multimedia file into the buffer memory 120 or the nonvolatile memory 130 .

재구성 가능 로직 칩(200)은 미리 결정된 구성에 따라 복호화된 데이터를 가공함으로써 제2 가공 데이터를 생성하고, 제2 가공 데이터를 암호화함으로써 암호화된 제2 출력 데이터를 생성한다(S370). 예를 들어, 재구성 가능 로직 칩(200)은 스케일러블 포맷을 갖는 멀티미디어 파일에 대한 트랜스코딩을 수행함으로써 제2 포맷을 갖는 제2 멀티미디어 파일을 생성할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 제2 멀티미디어 파일을 암호화함으로써 암호화된 제2 멀티미디어 파일을 생성할 수 있다. 일 실시예에서, 단계 S370은 단계 S355 및 S360이 수행되는 동안 수행될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 단계 S370은 단계 S355 이전에 수행될 수도 있다.The reconfigurable logic chip 200 generates second processed data by processing the decrypted data according to a predetermined configuration, and generates encrypted second output data by encrypting the second processed data (S370). For example, the reconfigurable logic chip 200 may generate a second multimedia file having a second format by transcoding a multimedia file having a scalable format. Subsequently, the reconfigurable logic chip 200 may generate an encrypted second multimedia file by encrypting the second multimedia file. In one embodiment, step S370 may be performed while steps S355 and S360 are performed. However, the present invention is not limited thereto, and step S370 may be performed before step S355.

재구성 가능 로직 칩(200)은 암호화된 제2 출력 데이터를 스토리지 장치(100)에 전송한다(S375). 예를 들어, 재구성 가능 로직 칩(200)은 암호화된 제2 멀티미디어 파일을 스토리지 장치(100)에 전송할 수 있다. 스토리지 장치(100)는 암호화된 제2 출력 데이터에 대한 기입 동작을 수행한다(S380). 예를 들어, 스토리지 장치(100)는 암호화된 제2 멀티미디어 파일을 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 기입할 수 있다. 스토리지 장치(100)는 데이터 가공이 완료되었음을 나타내는 응답 메시지를 호스트(300)에 전송한다(S390).The reconfigurable logic chip 200 transmits the encrypted second output data to the storage device 100 (S375). For example, the reconfigurable logic chip 200 may transmit the encrypted second multimedia file to the storage device 100 . The storage device 100 performs a write operation on the encrypted second output data (S380). For example, the storage device 100 may write the encrypted second multimedia file into the buffer memory 120 or the non-volatile memory 130 . The storage device 100 transmits a response message indicating that data processing has been completed to the host 300 (S390).

도 6은 도 2의 스토리지 장치 세트(10)의 동작의 일 예를 나타낸다. FIG. 6 shows an example of an operation of the storage device set 10 of FIG. 2 .

도 6을 참조하면, 호스트(300)는 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 로딩할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 로딩된 암호화된 데이터를 독출할 수 있다. 다른 실시예에서, 스토리지 장치(100)는 호스트(300)로부터 수신한 데이터를 버퍼 메모리(120)에 로딩할 수 있다. 이어서, 재구성 가능 로직 칩(200)으로부터 독출 요청이 수신되면, 암호화/복호화 모듈(111)은 버퍼 메모리(120)에 로딩된 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 전송할 수도 있다. Referring to FIG. 6 , the host 300 may transmit a data write request and a host command including data to the storage device 100 . In one embodiment, the encryption/decryption module 111 may encrypt data and load the encrypted data into the buffer memory 120 . Subsequently, the reconfigurable logic chip 200 may read the encrypted data loaded into the buffer memory 120 . In another embodiment, the storage device 100 may load data received from the host 300 into the buffer memory 120 . Subsequently, when a read request is received from the reconfigurable logic chip 200, the encryption/decryption module 111 encrypts the data loaded into the buffer memory 120 and transmits the encrypted data to the reconfigurable logic chip 200. may be

암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120)로부터 가공 데이터를 독출할 수 있다.The encryption/decryption module 210 may decrypt encrypted data and provide the decrypted data to the accelerator 220 . The accelerator 220 may generate processed data by processing data according to a predetermined configuration. Next, the encryption/decryption module 210 may encrypt processed data and write the encrypted data into the buffer memory 120 . Subsequently, the host 300 may read processing data from the buffer memory 120 .

도 7은 도 6의 컨트롤러(110), 버퍼 메모리(120) 및 재구성 가능 로직 칩(200) 사이의 동작을 나타내는 흐름도이다.FIG. 7 is a flowchart illustrating operations between the controller 110, the buffer memory 120 and the reconfigurable logic chip 200 of FIG. 6 .

도 7을 참조하면, 컨트롤러(110)는 호스트(300)로부터 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 수신한다(S400). 컨트롤러(110)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S410). 컨트롤러(110)는 암호화된 입력 데이터를 버퍼 메모리(120)에 전송한다(S420). 버퍼 메모리(120)는 암호화된 입력 데이터를 로딩한다(S430). 버퍼 메모리(120)는 암호화된 입력 데이터의 로딩이 완료되면 응답 메시지를 컨트롤러(110)에 전송한다(S435). Referring to FIG. 7 , the controller 110 receives a data write request and a host command including data from the host 300 (S400). The encryption/decryption module 111 included in the controller 110 generates encrypted input data by encrypting the received data (S410). The controller 110 transmits the encrypted input data to the buffer memory 120 (S420). The buffer memory 120 loads the encrypted input data (S430). When loading of the encrypted input data is completed, the buffer memory 120 transmits a response message to the controller 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).The controller 110 transmits a command instructing data processing to the reconfigurable logic chip 200 (S440). The reconfigurable logic chip 200 transmits a read command to the buffer memory 120 (S445). The buffer memory 120 performs a read operation (S450) and transmits the encrypted input data to the reconfigurable logic chip 200 (S460). The reconfigurable logic chip 200 decrypts the encrypted input data to generate decrypted data, processes the decrypted data to generate processed data, and encrypts the processed data to generate encrypted output data (S470). The reconfigurable logic chip 200 transmits the encrypted output data to the buffer memory 120 (S475). The buffer memory 120 loads the encrypted output data (S480). The buffer memory 120 transmits a response message indicating completion of writing to the reconfigurable logic chip 200 (S485). The reconfigurable logic chip 200 transmits a response message indicating that data processing is finished to the controller 110 (S490).

도 8은 도 2의 스토리지 장치 세트(10)의 동작의 다른 예를 나타낸다.FIG. 8 shows another example of an operation of the storage device set 10 of FIG. 2 .

도 8을 참조하면, 호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 스토리지 장치(100)에 전송할 수 있다. 컨트롤러(110)는 비휘발성 메모리(130)에 저장된 데이터를 독출하고, 독출된 데이터를 버퍼 메모리(120)에 로딩할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 독출된 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 제공할 수 있다. 일 실시예에서, 컨트롤러(110)는 비휘발성 메모리(130)로부터 암호화된 데이터를 독출하고, 독출된 암호화된 데이터를 버퍼 메모리(120)에 로딩할 수 있다.Referring to FIG. 8 , the host 300 may transmit a host command including a data processing request to the storage device 100 . The controller 110 may read data stored in the nonvolatile memory 130 and load the read data into the buffer memory 120 . In one embodiment, the encryption/decryption module 111 may encrypt the read data and provide the encrypted data to the buffer memory 120 . In one embodiment, the controller 110 may read encrypted data from the nonvolatile memory 130 and load the read encrypted data into the buffer memory 120 .

재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 로딩된 암호화된 데이터를 독출할 수 있다. 암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120)로부터 가공 데이터를 독출할 수 있다.The reconfigurable logic chip 200 may read encrypted data loaded into the buffer memory 120 . The encryption/decryption module 210 may decrypt encrypted data and provide the decrypted data to the accelerator 220 . The accelerator 220 may generate processed data by processing data according to a predetermined configuration. Next, the encryption/decryption module 210 may encrypt processed data and write the encrypted data into the buffer memory 120 . Subsequently, the host 300 may read processing data from the buffer memory 120 .

도 9는 도 8의 비휘발성 메모리(130), 컨트롤러(110), 버퍼 메모리(120) 및 재구성 가능 로직 칩(200) 사이의 동작을 나타내는 흐름도이다.FIG. 9 is a flowchart illustrating operations among the non-volatile memory 130 , the controller 110 , the buffer memory 120 and the reconfigurable logic chip 200 of FIG. 8 .

도 9를 참조하면, 컨트롤러(110)는 호스트(300)로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신한다(S500). 컨트롤러(110)는 비휘발성 메모리(130)에 독출 커맨드를 전송한다(S505). 일 실시예에서, 컨트롤러(110)는 맵핑 테이블을 참조하여 가공할 데이터가 저장된 물리 주소를 확인할 수 있고, 물리 주소를 포함하는 독출 커맨드를 비휘발성 메모리(130)에 전송할 수 있다. 비휘발성 메모리(130)는 독출 동작을 수행하고(S510), 데이터를 컨트롤러(110)에 전송한다(S515).Referring to FIG. 9 , the controller 110 receives a host command including a data processing request from the host 300 (S500). The controller 110 transmits a read command to the non-volatile memory 130 (S505). In an embodiment, the controller 110 may check a physical address at which data to be processed is stored by referring to the mapping table, and may transmit a read command including the physical address to the nonvolatile memory 130 . The non-volatile memory 130 performs a read operation (S510) and transmits data to the controller 110 (S515).

컨트롤러(110)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S520). 컨트롤러(110)는 암호화된 입력 데이터를 버퍼 메모리(120)에 전송한다(S525). 버퍼 메모리(120)는 암호화된 입력 데이터를 로딩한다(S530). 버퍼 메모리(120)는 암호화된 입력 데이터의 로딩이 완료되면 응답 메시지를 컨트롤러(110)에 전송한다(S535).The encryption/decryption module 111 included in the controller 110 generates encrypted input data by encrypting the received data (S520). The controller 110 transmits the encrypted input data to the buffer memory 120 (S525). The buffer memory 120 loads encrypted input data (S530). When loading of the encrypted input data is completed, the buffer memory 120 transmits a response message to the controller 110 (S535).

컨트롤러(110)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S540). 재구성 가능 로직 칩(200)은 버퍼 메모리(120)에 독출 커맨드를 전송한다(S545). 버퍼 메모리(120)는 독출 동작을 수행하고(S550), 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S560). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S570). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 버퍼 메모리(120)에 전송한다(S575). 버퍼 메모리(120)는 암호화된 출력 데이터를 로딩한다(S580). 버퍼 메모리(120)는 기입 완료를 나타내는 응답 메시지를 재구성 가능 로직 칩(200)에 전송한다(S585). 재구성 가능 로직 칩(200)은 데이터 가공이 종료되었음을 나타내는 응답 메시지를 컨트롤러(110)에 전송한다.The controller 110 transmits a command instructing data processing to the reconfigurable logic chip 200 (S540). The reconfigurable logic chip 200 transmits a read command to the buffer memory 120 (S545). The buffer memory 120 performs a read operation (S550) and transmits the encrypted input data to the reconfigurable logic chip 200 (S560). The reconfigurable logic chip 200 decrypts the encrypted input data to generate decrypted data, processes the decrypted data to generate processed data, and encrypts the processed data to generate encrypted output data (S570). The reconfigurable logic chip 200 transmits the encrypted output data to the buffer memory 120 (S575). The buffer memory 120 loads the encrypted output data (S580). The buffer memory 120 transmits a response message indicating completion of writing to the reconfigurable logic chip 200 (S585). The reconfigurable logic chip 200 transmits a response message indicating that data processing is finished to the controller 110 .

도 10은 도 2의 컨트롤러(110)를 상세하게 나타내는 블록도이다.FIG. 10 is a block diagram showing the controller 110 of FIG. 2 in detail.

도 10을 참조하면, 컨트롤러(110)는 암호화/복호화 모듈(111), 프로세서(112), 메모리(113), 호스트 인터페이스(114), FPGA 인터페이스(115), 휘발성 메모리 인터페이스(116) 및 비휘발성 메모리 인터페이스(117)를 포함하고, 이들은 버스(118)를 통해 서로 통신할 수 있다. 예를 들어, 재구성 가능 로직 칩(200)은 FPGA일 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 소프트웨어 또는 펌웨어로 구현될 수 있고, 메모리(113)에 로딩될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 암호화/복호화 모듈(111)은 하드웨어로 구현될 수도 있다.Referring to FIG. 10, the controller 110 includes an encryption/decryption module 111, a processor 112, a memory 113, a host interface 114, an FPGA interface 115, a volatile memory interface 116, and a non-volatile memory interface 116. memory interface 117, which can communicate with each other via a bus 118. For example, reconfigurable logic chip 200 may be an FPGA. In one embodiment, the encryption/decryption module 111 may be implemented in software or firmware and may be loaded into the memory 113 . However, the present invention is not limited thereto, and the encryption/decryption module 111 may be implemented in hardware.

프로세서(112)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(110)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(112)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드(quad) 코어 프로세서로 구현될 수 있다. 메모리(113)는 프로세서(112)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 메모리(113)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다. The processor 112 may include a central processing unit or a microprocessor, and may control overall operations of the controller 110 . In one embodiment, processor 112 may be implemented as a multi-core processor, such as a dual-core processor or quad-core processor. The memory 113 operates under the control of the processor 112 and may be used as an operating memory, a buffer memory, a cache memory, and the like. For example, the memory 113 may be implemented as a volatile memory such as DRAM or SRAM or a non-volatile memory such as PRAM or flash memory.

호스트 인터페이스(114)는 호스트(300)와 컨트롤러(110) 사이의 인터페이스를 제공할 수 있고, 예를 들어, 도 1의 제1 포트(PT1)를 포함할 수 있다. FPGA 인터페이스(115)는 컨트롤러(110)와 FPGA, 즉, 재구성 가능 로직 칩(200) 사이의 인터페이스를 제공할 수 있고, 예를 들어, 도 1의 제2 포트(PT2)를 포함할 수 있다. 일 실시예에서, FPGA 인터페이스(115)는 암호화/복호화 모듈(111)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다. 또한, FPGA 인터페이스(115)는 재구성 가능 로직 칩(200)으로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 암호화/복호화 모듈(111)에 제공할 수 있다.The host interface 114 may provide an interface between the host 300 and the controller 110 and may include, for example, the first port PT1 of FIG. 1 . The FPGA interface 115 may provide an interface between the controller 110 and the FPGA, that is, the reconfigurable logic chip 200, and may include, for example, the second port PT2 of FIG. 1 . In one embodiment, the FPGA interface 115 may receive encrypted data from the encryption/decryption module 111 and provide the encrypted data to the reconfigurable logic chip 200 . Also, the FPGA interface 115 may receive encrypted data from the reconfigurable logic chip 200 and provide the encrypted data to the encryption/decryption module 111 .

휘발성 메모리 인터페이스(116)는 컨트롤러(110)와 휘발성 메모리, 예를 들어, 도 2의 버퍼 메모리(120) 사이의 인터페이스를 제공할 수 있다. 일 실시예에서, 휘발성 메모리 인터페이스(116)는 암호화/복호화 모듈(111)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 버퍼 메모리(120)에 제공할 수 있다. 또한, 휘발성 메모리 인터페이스(116)는 버퍼 메모리(120)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 암호화/복호화 모듈(111)에 제공할 수 있다.Volatile memory interface 116 may provide an interface between controller 110 and volatile memory, such as buffer memory 120 of FIG. 2 . In one embodiment, the volatile memory interface 116 may receive encrypted data from the encryption/decryption module 111 and provide the encrypted data to the buffer memory 120 . Also, the volatile memory interface 116 may receive encrypted data from the buffer memory 120 and provide the encrypted data to the encryption/decryption module 111 .

비휘발성 메모리 인터페이스(117)는 컨트롤러(110)와 비휘발성 메모리(130) 사이의 인터페이스를 제공할 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(117)는 암호화/복호화 모듈(111)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 비휘발성 메모리(130)에 제공할 수 있다. 또한, 비휘발성 메모리 인터페이스(117)는 비휘발성 메모리(130)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 암호화/복호화 모듈(111)에 제공할 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(117)의 개수는 스토리지 장치(100)에 포함된 비휘발성 메모리 칩의 개수 또는, 컨트롤러(110)와 비휘발성 메모리(130) 사이의 채널들의 개수에 대응할 수 있다.The non-volatile memory interface 117 may provide an interface between the controller 110 and the non-volatile memory 130 . In one embodiment, the non-volatile memory interface 117 may receive encrypted data from the encryption/decryption module 111 and provide the encrypted data to the non-volatile memory 130 . Also, the nonvolatile memory interface 117 may receive encrypted data from the nonvolatile memory 130 and provide the encrypted data to the encryption/decryption module 111 . In one embodiment, the number of non-volatile memory interfaces 117 may correspond to the number of non-volatile memory chips included in the storage device 100 or the number of channels between the controller 110 and the non-volatile memory 130. there is.

도 11은 도 10의 컨트롤러의 변형 예(110')를 나타내는 블록도이다.FIG. 11 is a block diagram illustrating a modified example 110' of the controller of FIG. 10 .

도 11을 참조하면, 컨트롤러(110')는 프로세서(112), 메모리(113), 호스트 인터페이스(114), FPGA 인터페이스(115'), 휘발성 메모리 인터페이스(116') 및 비휘발성 메모리 인터페이스(117')를 포함하고, 이들은 버스(118)를 통해 서로 통신할 수 있다. 이하에서는 본 실시예에 따른 컨트롤러(110')와 도 10의 컨트롤러(110)의 차이점을 중심으로 설명하기로 한다.Referring to FIG. 11, the controller 110' includes a processor 112, a memory 113, a host interface 114, an FPGA interface 115', a volatile memory interface 116', and a non-volatile memory interface 117'. ), which may communicate with each other via the bus 118. Hereinafter, differences between the controller 110' according to the present embodiment and the controller 110 of FIG. 10 will be mainly described.

FPGA 인터페이스(115')는 암호화/복호화 모듈(115a)을 포함할 수 있다. 암호화/복호화 모듈(115a)은 메모리(113), 호스트(300), 버퍼 메모리(120) 또는 비휘발성 메모리(130)로부터 수신한 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다. 또한, 암호화/복호화 모듈(115a)는 재구성 가능 로직 칩(200)으로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 복호화하여 메모리(113), 호스트(300), 버퍼 메모리(120) 또는 비휘발성 메모리(130)에 제공할 수 있다.The FPGA interface 115' may include an encryption/decryption module 115a. The encryption/decryption module 115a encrypts data received from the memory 113, the host 300, the buffer memory 120 or the nonvolatile memory 130, and transfers the encrypted data to the reconfigurable logic chip 200. can provide In addition, the encryption/decryption module 115a receives encrypted data from the reconfigurable logic chip 200 and decrypts the encrypted data so that the memory 113, the host 300, the buffer memory 120 or the non-volatile memory (130).

휘발성 메모리 인터페이스(116')는 암호화/복호화 모듈(116a)을 포함할 수 있고, 암호화/복호화 모듈(116a)은 선택적으로 활성화될 수 있다. 일 실시예에서, 암호화/복호화 모듈(116a)은 메모리(113), 호스트(300) 또는 비휘발성 메모리(130)로부터 수신한 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120)에 제공할 수 있다. 또한, 암호화/복호화 모듈(116a)는 버퍼 메모리(120)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 복호화하여 메모리(113), 호스트(300) 또는 비휘발성 메모리(130)에 제공할 수 있다. 일 실시예에서, 휘발성 메모리 인터페이스(116')는 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(116a)을 거치지 않고 버퍼 메모리(120)에 저장할 수 있고, 버퍼 메모리(120)로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(116a)을 거치지 않고 재구성 가능 로직 칩(200)에 제공할 수 있다.The volatile memory interface 116' may include an encryption/decryption module 116a, and the encryption/decryption module 116a may be selectively activated. In one embodiment, the encryption/decryption module 116a may encrypt data received from the memory 113, the host 300, or the non-volatile memory 130 and provide the encrypted data to the buffer memory 120. there is. In addition, the encryption/decryption module 116a may receive encrypted data from the buffer memory 120, decrypt the encrypted data, and provide the data to the memory 113, the host 300, or the non-volatile memory 130. . In one embodiment, the volatile memory interface 116 ′ may store encrypted data received from the reconfigurable logic chip 200 in the buffer memory 120 without passing through the encryption/decryption module 116a, and the buffer memory ( The encrypted data received from 120) may be provided to the reconfigurable logic chip 200 without passing through the encryption/decryption module 116a.

비휘발성 메모리 인터페이스(117')는 암호화/복호화 모듈(117a)을 포함할 수 있고, 암호화/복호화 모듈(117a)은 선택적으로 활성화될 수 있다. 일 실시예에서, 암호화/복호화 모듈(117a)은 메모리(113), 호스트(300) 또는 버퍼 메모리(120)로부터 수신한 데이터를 암호화하고, 암호화된 데이터를 비휘발성 메모리(130)에 제공할 수 있다. 또한, 암호화/복호화 모듈(117a)는 비휘발성 메모리(130)로부터 암호화된 데이터를 수신하고, 암호화된 데이터를 복호화하여 메모리(113), 호스트(300) 또는 버퍼 메모리(120)에 제공할 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(117')는 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(116a)을 거치지 않고 비휘발성 메모리(130)에 저장할 수 있고, 비휘발성 메모리(130)로부터 수신한 암호화된 데이터를 암호화/복호화 모듈(117a)을 거치지 않고 재구성 가능 로직 칩(200)에 제공할 수 있다.The non-volatile memory interface 117' may include an encryption/decryption module 117a, and the encryption/decryption module 117a may be selectively activated. In one embodiment, the encryption/decryption module 117a may encrypt data received from the memory 113, the host 300, or the buffer memory 120 and provide the encrypted data to the non-volatile memory 130. there is. In addition, the encryption/decryption module 117a may receive encrypted data from the non-volatile memory 130, decrypt the encrypted data, and provide the data to the memory 113, the host 300, or the buffer memory 120. . In one embodiment, the non-volatile memory interface 117' may store the encrypted data received from the reconfigurable logic chip 200 in the non-volatile memory 130 without going through the encryption/decryption module 116a, and Encrypted data received from the volatile memory 130 may be provided to the reconfigurable logic chip 200 without passing through the encryption/decryption module 117a.

도 12는 본 개시의 일 실시예에 따른 스토리지 장치 세트(10a)를 나타내는 블록도이다.12 is a block diagram illustrating a storage device set 10a according to an exemplary embodiment.

도 12를 참조하면, 스토리지 장치(100a)는 컨트롤러(110a) 및 비휘발성 메모리(130)를 포함하고, 컨트롤러(110a)는 암호화/복호화 모듈(111) 및 버퍼 메모리(120a)를 포함할 수 있다. 본 실시예에 따르면, 버퍼 메모리(120a)는 컨트롤러(110a)에 내장될 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 버퍼 메모리(120a)의 전단에 배치될 수 있다. 이에 따라, 버퍼 메모리(120a)는 암호화된 데이터를 버퍼링할 수 있다.Referring to FIG. 12 , the storage device 100a may include a controller 110a and a non-volatile memory 130, and the controller 110a may include an encryption/decryption module 111 and a buffer memory 120a. . According to this embodiment, the buffer memory 120a may be embedded in the controller 110a. In one embodiment, the encryption/decryption module 111 may be disposed in front of the buffer memory 120a. Accordingly, the buffer memory 120a may buffer encrypted data.

암호화/복호화 모듈(111)은 호스트(300) 또는 비휘발성 메모리(130)로부터 수신한 입력 데이터를 암호화하고, 암호화된 입력 데이터를 버퍼 메모리(120a)에 제공할 수 있다. 이에 따라, 버퍼 메모리(120a)는 암호화된 입력 데이터를 버퍼링할 수 있다. 또한, 암호화/복호화 모듈(111)은 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 출력 데이터를 복호화하고, 복호화된 출력 데이터를 버퍼 메모리(120a)에 제공할 수 있다. 이에 따라, 버퍼 메모리(120a)는 복호화된 출력 데이터를 버퍼링할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 버퍼 메모리(120a)는 재구성 가능 로직 칩(200)으로부터 수신한 암호화된 출력 데이터를 버퍼링할 수도 있다.The encryption/decryption module 111 may encrypt input data received from the host 300 or the nonvolatile memory 130 and provide the encrypted input data to the buffer memory 120a. Accordingly, the buffer memory 120a may buffer encrypted input data. Also, the encryption/decryption module 111 may decrypt encrypted output data received from the reconfigurable logic chip 200 and provide the decrypted output data to the buffer memory 120a. Accordingly, the buffer memory 120a may buffer the decoded output data. However, the present invention is not limited thereto, and the buffer memory 120a may buffer encrypted output data received from the reconfigurable logic chip 200 .

도 13은 도 12의 스토리지 장치 세트(10a)의 동작의 일 예를 나타낸다.FIG. 13 shows an example of an operation of the storage device set 10a of FIG. 12 .

도 13을 참조하면, 호스트(300)는 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 암호화/복호화 모듈(111)은 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 로딩할 수 있다. 이어서, 재구성 가능 로직 칩(200)은 버퍼 메모리(120a)에 로딩된 암호화된 데이터를 독출할 수 있다. 암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120a)로부터 가공 데이터를 독출할 수 있다.Referring to FIG. 13 , the host 300 may transmit a data write request and a host command including data to the storage device 100a. The encryption/decryption module 111 may encrypt data and load the encrypted data into the buffer memory 120a. Subsequently, the reconfigurable logic chip 200 may read the encrypted data loaded in the buffer memory 120a. The encryption/decryption module 210 may decrypt encrypted data and provide the decrypted data to the accelerator 220 . The accelerator 220 may generate processed data by processing data according to a predetermined configuration. Subsequently, the encryption/decryption module 210 may encrypt processed data and write the encrypted data into the buffer memory 120a. Subsequently, the host 300 may read processing data from the buffer memory 120a.

도 14는 도 13의 컨트롤러(110a) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.FIG. 14 is a flowchart illustrating an example of an operation between the controller 110a and the reconfigurable logic chip 200 of FIG. 13 .

도 14를 참조하면, 컨트롤러(110a)는 호스트(300)로부터 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 수신한다(S600). 컨트롤러(110a)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S610). 컨트롤러(110a)는 암호화된 입력 데이터를 버퍼 메모리(120)에 로딩한다(S620). Referring to FIG. 14 , the controller 110a receives a data write request and a host command including data from the host 300 (S600). The encryption/decryption module 111 included in the controller 110a generates encrypted input data by encrypting the received data (S610). The controller 110a loads the encrypted input data into the buffer memory 120 (S620).

컨트롤러(110a)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S630). 재구성 가능 로직 칩(200)은 컨트롤러(110a)에 독출 커맨드를 전송한다(S640). 컨트롤러(110a)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S650). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S660). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110a)에 전송한다(S670). The controller 110a transmits a command instructing data processing to the reconfigurable logic chip 200 (S630). The reconfigurable logic chip 200 transmits a read command to the controller 110a (S640). The controller 110a transmits the encrypted input data to the reconfigurable logic chip 200 (S650). The reconfigurable logic chip 200 decrypts the encrypted input data to generate decrypted data, processes the decrypted data to generate processed data, and encrypts the processed data to generate encrypted output data (S660). The reconfigurable logic chip 200 transmits the encrypted output data to the controller 110a (S670).

컨트롤러(110a)는 암호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입한다(S680). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110a)는 복호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110a)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.The controller 110a writes the encrypted output data into the buffer memory 120a or the non-volatile memory 130 (S680). In one embodiment, the encryption/decryption module 111 may decrypt encrypted output data to generate decrypted output data, and the controller 110a may store the decrypted output data in a buffer memory 120a or a non-volatile memory ( 130) can also be entered. Subsequently, the controller 110a may transmit a response message indicating that data processing is finished to the host 300 .

도 15는 도 12의 스토리지 장치 세트(10a)의 동작의 다른 예를 나타낸다.FIG. 15 shows another example of an operation of the storage device set 10a of FIG. 12 .

도 15를 참조하면, 호스트(300)는 데이터 가공 요청을 포함하는 호스트 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 컨트롤러(110a)는 비휘발성 메모리(130)에 저장된 데이터를 독출하고, 독출된 데이터를 버퍼 메모리(120a)에 로딩할 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 독출된 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 제공할 수 있다. 일 실시예에서, 컨트롤러(110a)는 비휘발성 메모리(130)로부터 암호화된 데이터를 독출하고, 독출된 암호화된 데이터를 버퍼 메모리(120a)에 로딩할 수 있다.Referring to FIG. 15 , the host 300 may transmit a host command including a data processing request to the storage device 100a. The controller 110a may read data stored in the nonvolatile memory 130 and load the read data into the buffer memory 120a. In one embodiment, the encryption/decryption module 111 may encrypt the read data and provide the encrypted data to the buffer memory 120a. In one embodiment, the controller 110a may read encrypted data from the non-volatile memory 130 and load the read encrypted data into the buffer memory 120a.

재구성 가능 로직 칩(200)은 버퍼 메모리(120a)에 로딩된 암호화된 데이터를 독출할 수 있다. 암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 버퍼 메모리(120a)에 기입할 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120a)로부터 가공 데이터를 독출할 수 있다.The reconfigurable logic chip 200 may read encrypted data loaded in the buffer memory 120a. The encryption/decryption module 210 may decrypt encrypted data and provide the decrypted data to the accelerator 220 . The accelerator 220 may generate processed data by processing data according to a predetermined configuration. Subsequently, the encryption/decryption module 210 may encrypt processed data and write the encrypted data into the buffer memory 120a. Subsequently, the host 300 may read processing data from the buffer memory 120a.

도 16은 도 15의 비휘발성 메모리(130), 컨트롤러(110a) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.FIG. 16 is a flowchart illustrating an example of an operation between the non-volatile memory 130 of FIG. 15 , the controller 110a and the reconfigurable logic chip 200 .

도 16을 참조하면, 컨트롤러(110a)는 호스트(300)로부터 데이터 가공을 지시하는 호스트 커맨드를 수신한다(S700). 컨트롤러(110a)는 비휘발성 메모리(130)에 독출 커맨드를 전송한다(S710). 일 실시예에서, 컨트롤러(110a)는 맵핑 테이블을 참조하여 가공할 데이터가 저장된 물리 주소를 확인할 수 있고, 물리 주소를 포함하는 독출 커맨드를 비휘발성 메모리(130)에 전송할 수 있다. 비휘발성 메모리(130)는 독출 동작을 수행하고(S720), 데이터를 컨트롤러(110a)에 전송한다(S725). 컨트롤러(110a)에 포함된 암호화/복호화 모듈(111)은 수신한 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S730). 컨트롤러(110a)는 암호화된 입력 데이터를 버퍼 메모리(120)에 로딩한다(S740).Referring to FIG. 16 , the controller 110a receives a host command instructing data processing from the host 300 (S700). The controller 110a transmits a read command to the non-volatile memory 130 (S710). In an embodiment, the controller 110a may check a physical address at which data to be processed is stored by referring to the mapping table, and may transmit a read command including the physical address to the nonvolatile memory 130 . The non-volatile memory 130 performs a read operation (S720) and transmits data to the controller 110a (S725). The encryption/decryption module 111 included in the controller 110a generates encrypted input data by encrypting the received data (S730). The controller 110a loads the encrypted input data into the buffer memory 120 (S740).

컨트롤러(110a)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S750). 재구성 가능 로직 칩(200)은 컨트롤러(110a)에 독출 커맨드를 전송한다(S760). 컨트롤러(110a)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S765). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S770). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110a)에 전송한다(S780). The controller 110a transmits a command instructing data processing to the reconfigurable logic chip 200 (S750). The reconfigurable logic chip 200 transmits a read command to the controller 110a (S760). The controller 110a transmits the encrypted input data to the reconfigurable logic chip 200 (S765). The reconfigurable logic chip 200 decrypts the encrypted input data to generate decrypted data, processes the decrypted data to generate processed data, and encrypts the processed data to generate encrypted output data (S770). The reconfigurable logic chip 200 transmits the encrypted output data to the controller 110a (S780).

컨트롤러(110a)는 암호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입한다(S790). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110a)는 복호화된 출력 데이터를 버퍼 메모리(120a) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110a)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.The controller 110a writes the encrypted output data into the buffer memory 120a or the non-volatile memory 130 (S790). In one embodiment, the encryption/decryption module 111 may decrypt encrypted output data to generate decrypted output data, and the controller 110a may store the decrypted output data in a buffer memory 120a or a non-volatile memory ( 130) can also be entered. Subsequently, the controller 110a may transmit a response message indicating that data processing is finished to the host 300 .

도 17은 본 개시의 일 실시예에 따른 스토리지 장치 세트(10b)의 동작의 일 예를 나타낸다.17 illustrates an example of an operation of the storage device set 10b according to an embodiment of the present disclosure.

도 17을 참조하면, 스토리지 장치(100b)는 컨트롤러(110b) 및 비휘발성 메모리(130)를 포함하고, 컨트롤러(110b)는 암호화/복호화 모듈(111) 및 버퍼 메모리(120b)를 포함할 수 있다. 본 실시예에 따르면, 버퍼 메모리(120b)는 컨트롤러(110b)에 내장될 수 있다. 일 실시예에서, 암호화/복호화 모듈(111)은 버퍼 메모리(120a)의 후단에 배치될 수 있다. 이에 따라, 버퍼 메모리(120b)는 암호화되지 않은 노멀 데이터를 버퍼링할 수 있다.Referring to FIG. 17 , the storage device 100b may include a controller 110b and a non-volatile memory 130, and the controller 110b may include an encryption/decryption module 111 and a buffer memory 120b. . According to this embodiment, the buffer memory 120b may be embedded in the controller 110b. In one embodiment, the encryption/decryption module 111 may be disposed after the buffer memory 120a. Accordingly, the buffer memory 120b may buffer unencrypted normal data.

호스트(300)는 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 스토리지 장치(100b)에 전송할 수 있다. 호스트(300)로부터 수신된 데이터는 버퍼 메모리(120b)에 로딩될 수 있다. 이어서, 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다.The host 300 may transmit a data write request and a host command including data to the storage device 100b. Data received from the host 300 may be loaded into the buffer memory 120b. Subsequently, the encryption/decryption module 111 may encrypt data loaded into the buffer memory 120b and provide the encrypted data to the reconfigurable logic chip 200 .

암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 컨트롤러(110b)에 제공할 수 있다. 암호화/복호화 모듈(111)은 암호화된 데이터를 복호화하고, 복호화된 데이터는 버퍼 메모리(120b)에 로딩될 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120b)로부터 가공 데이터를 독출할 수 있다.The encryption/decryption module 210 may decrypt encrypted data and provide the decrypted data to the accelerator 220 . The accelerator 220 may generate processed data by processing data according to a predetermined configuration. Next, the encryption/decryption module 210 may encrypt processed data and provide the encrypted data to the controller 110b. The encryption/decryption module 111 may decrypt encrypted data, and the decrypted data may be loaded into the buffer memory 120b. Subsequently, the host 300 may read processing data from the buffer memory 120b.

도 18은 도 17의 컨트롤러(110b) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.FIG. 18 is a flowchart illustrating an example of an operation between the controller 110b and the reconfigurable logic chip 200 of FIG. 17 .

도 18을 참조하면, 컨트롤러(110b)는 호스트(300)로부터 데이터 기입 요청 및 데이터를 포함하는 호스트 커맨드를 수신한다(S800). 컨트롤러(110b)는 수신한 데이터를 버퍼 메모리(120b)에 로딩한다(S810). 컨트롤러(110b)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S820). 재구성 가능 로직 칩(200)은 컨트롤러(110b)에 독출 커맨드를 전송한다(S830).Referring to FIG. 18 , the controller 110b receives a data write request and a host command including data from the host 300 (S800). The controller 110b loads the received data into the buffer memory 120b (S810). The controller 110b transmits a command instructing data processing to the reconfigurable logic chip 200 (S820). The reconfigurable logic chip 200 transmits a read command to the controller 110b (S830).

컨트롤러(110b)에 포함된 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S840). 컨트롤러(110b)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S850). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하며, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S860). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110b)에 전송한다(S870). The encryption/decryption module 111 included in the controller 110b generates encrypted input data by encrypting data loaded into the buffer memory 120b (S840). The controller 110b transmits the encrypted input data to the reconfigurable logic chip 200 (S850). The reconfigurable logic chip 200 decrypts the encrypted input data to generate decrypted data, processes the decrypted data to generate processed data, and encrypts the processed data to generate encrypted output data (S860). The reconfigurable logic chip 200 transmits the encrypted output data to the controller 110b (S870).

컨트롤러(110b)는 암호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입한다(S880). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110b)는 복호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110b)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.The controller 110b writes the encrypted output data into the buffer memory 120b or the non-volatile memory 130 (S880). In one embodiment, the encryption/decryption module 111 may decrypt encrypted output data to generate decrypted output data, and the controller 110b may store the decrypted output data in a buffer memory 120b or a non-volatile memory ( 130) can also be entered. Subsequently, the controller 110b may transmit a response message indicating that data processing is finished to the host 300 .

도 19는 본 개시의 일 실시예에 따른 스토리지 장치 세트(10b)의 동작의 다른 예를 나타낸다.19 illustrates another example of an operation of the storage device set 10b according to an embodiment of the present disclosure.

도 19를 참조하면, 호스트(300)는 데이터 가공을 지시하는 호스트 커맨드를 스토리지 장치(100b)에 전송할 수 있다. 컨트롤러(110b)는 비휘발성 메모리(130)에 저장된 데이터를 독출하고, 독출된 데이터를 버퍼 메모리(120b)에 로딩할 수 있다. 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화하고, 암호화된 데이터를 재구성 가능 로직 칩(200)에 제공할 수 있다. Referring to FIG. 19 , the host 300 may transmit a host command instructing data processing to the storage device 100b. The controller 110b may read data stored in the non-volatile memory 130 and load the read data into the buffer memory 120b. The encryption/decryption module 111 may encrypt data loaded into the buffer memory 120b and provide the encrypted data to the reconfigurable logic chip 200 .

암호화/복호화 모듈(210)은 암호화된 데이터를 복호화하고, 복호화된 데이터를 가속기(220)에 제공할 수 있다. 가속기(220)는 미리 결정된 구성에 따라 데이터를 가공하여 가공 데이터를 생성할 수 있다. 이어서, 암호화/복호화 모듈(210)은 가공 데이터를 암호화하고, 암호화된 데이터를 컨트롤러(110b)에 전송할 수 있다. 암호화/복호화 모듈(111)은 암호화된 데이터를 복호화하고, 복호화된 데이터는 버퍼 메모리(120b)에 로딩될 수 있다. 이어서, 호스트(300)는 버퍼 메모리(120b)로부터 가공 데이터를 독출할 수 있다.The encryption/decryption module 210 may decrypt encrypted data and provide the decrypted data to the accelerator 220 . The accelerator 220 may generate processed data by processing data according to a predetermined configuration. Subsequently, the encryption/decryption module 210 may encrypt processed data and transmit the encrypted data to the controller 110b. The encryption/decryption module 111 may decrypt encrypted data, and the decrypted data may be loaded into the buffer memory 120b. Subsequently, the host 300 may read processing data from the buffer memory 120b.

도 20은 도 19의 비휘발성 메모리(130), 컨트롤러(110b) 및 재구성 가능 로직 칩(200) 사이의 동작의 일 예를 나타내는 흐름도이다.FIG. 20 is a flowchart illustrating an example of an operation between the nonvolatile memory 130 of FIG. 19 , the controller 110b and the reconfigurable logic chip 200 .

도 20을 참조하면, 컨트롤러(110b)는 호스트(300)로부터 데이터 가공을 지시하는 호스트 커맨드를 수신한다(S900). 컨트롤러(110b)는 비휘발성 메모리(130)에 독출 커맨드를 전송한다(S910). 일 실시예에서, 컨트롤러(110b)는 맵핑 테이블을 참조하여 가공할 데이터가 저장된 물리 주소를 확인할 수 있고, 물리 주소를 포함하는 독출 커맨드를 비휘발성 메모리(130)에 전송할 수 있다. 비휘발성 메모리(130)는 독출 동작을 수행하고(S920), 데이터를 컨트롤러(110b)에 전송한다(S925).Referring to FIG. 20 , the controller 110b receives a host command instructing data processing from the host 300 (S900). The controller 110b transmits a read command to the non-volatile memory 130 (S910). In an embodiment, the controller 110b may check a physical address at which data to be processed is stored by referring to the mapping table, and may transmit a read command including the physical address to the nonvolatile memory 130 . The nonvolatile memory 130 performs a read operation (S920) and transmits data to the controller 110b (S925).

컨트롤러(110b)는 데이터를 버퍼 메모리(120b)에 로딩한다(S930). 암호화/복호화 모듈(111)은 버퍼 메모리(120b)에 로딩된 데이터를 암호화함으로써 암호화된 입력 데이터를 생성한다(S940). 컨트롤러(110b)는 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩(200)에 전송한다(S950). 재구성 가능 로직 칩(200)은 컨트롤러(110b)에 독출 커맨드를 전송한다(S960). 컨트롤러(110b)는 암호화된 입력 데이터를 재구성 가능 로직 칩(200)에 전송한다(S965). 재구성 가능 로직 칩(200)은 암호화된 입력 데이터를 복호화함으로써 복호화된 데이터를 생성하고, 복호화된 데이터를 가공하여 가공 데이터를 생성하고, 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성한다(S970). 재구성 가능 로직 칩(200)은 암호화된 출력 데이터를 컨트롤러(110b)에 전송한다(S980). The controller 110b loads data into the buffer memory 120b (S930). The encryption/decryption module 111 generates encrypted input data by encrypting the data loaded into the buffer memory 120b (S940). The controller 110b transmits a command instructing data processing to the reconfigurable logic chip 200 (S950). The reconfigurable logic chip 200 transmits a read command to the controller 110b (S960). The controller 110b transmits the encrypted input data to the reconfigurable logic chip 200 (S965). The reconfigurable logic chip 200 decrypts the encrypted input data to generate decrypted data, processes the decrypted data to generate processed data, and encrypts the processed data to generate encrypted output data (S970). The reconfigurable logic chip 200 transmits the encrypted output data to the controller 110b (S980).

컨트롤러(110b)는 암호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입한다(S990). 일 실시예에서, 암호화/복호화 모듈(111)은 암호화된 출력 데이터를 복호화하여 복호화된 출력 데이터를 생성할 수 있고, 컨트롤러(110b)는 복호화된 출력 데이터를 버퍼 메모리(120b) 또는 비휘발성 메모리(130)에 기입할 수도 있다. 이어서, 컨트롤러(110b)는 데이터 가공이 종료되었음을 나타내는 응답 메시지를 호스트(300)에 전송할 수 있다.The controller 110b writes the encrypted output data into the buffer memory 120b or the non-volatile memory 130 (S990). In one embodiment, the encryption/decryption module 111 may decrypt encrypted output data to generate decrypted output data, and the controller 110b may store the decrypted output data in a buffer memory 120b or a non-volatile memory ( 130) can also be entered. Subsequently, the controller 110b may transmit a response message indicating that data processing is finished to the host 300 .

도 21은 본 개시의 일 실시예에 따른 스토리지 시스템(SS')을 나타낸다.21 illustrates a storage system SS' according to an embodiment of the present disclosure.

도 21을 참조하면, 스토리지 시스템(SS')은 스토리지 장치 세트(10c), 호스트(300), 및 하드웨어 가속기(400)를 포함할 수 있고, 이들은 버스(500)를 통해 서로 통신할 수 있다. 예를 들어, 스토리지 시스템(SS')은 서버 또는 데이터 센터일 수 있다. 스토리지 장치 세트(10c)는 스토리지 장치(100) 및 재구성 가능 가속기(RA)를 포함할 수 있다. 이와 같이, 스토리지 시스템(SS')은 하드웨어 가속기(400) 및 재구성 가능 가속기(RA)를 모두 포함할 수 있다. 이때, 재구성 가능 가속기(RA)는 스토리지 장치 세트(10c) 내에 구현될 수 있다.Referring to FIG. 21 , the storage system SS′ may include a storage device set 10c, a host 300, and a hardware accelerator 400, which may communicate with each other through a bus 500. For example, the storage system SS' may be a server or a data center. The storage device set 10c may include the storage device 100 and a reconfigurable accelerator (RA). As such, the storage system SS′ may include both the hardware accelerator 400 and the reconfigurable accelerator RA. In this case, the reconfigurable accelerator RA may be implemented in the storage device set 10c.

하드웨어 가속기(400)는 호스트(300)에서 수행되는 연산들 중 미리 결정된 특정 연산을 수행함으로써, 호스트(300)의 연산을 보조할 수 있다. 예를 들어, 하드웨어 가속기(400)는 GPU(Graphic Processing Unit)일 수 있다. 재구성 가능 가속기(RA)는 호스트(300)에서 수행되는 연산의 종류에 따라 실시간으로 재구성됨으로써, 호스트(300)에서 현재 실행되는 어플리케이션에 대응하는 연산을 수행할 수 있다. 이와 같이, 하드웨어 가속기(400)에서 수행되는 연산은 스토리지 시스템(SS')의 동작 중에 변경되지 않는 반면, 재구성 가능 가속기(RA)에서 수행되는 연산은 스토리지 시스템(SS')의 동작 중에 변경될 수 있다.The hardware accelerator 400 may assist the operation of the host 300 by performing a predetermined specific operation among operations performed by the host 300 . For example, the hardware accelerator 400 may be a graphic processing unit (GPU). The reconfigurable accelerator (RA) may perform an operation corresponding to an application currently executed in the host 300 by being reconfigured in real time according to the type of operation performed by the host 300 . As such, while the operation performed by the hardware accelerator 400 does not change during the operation of the storage system SS′, the operation performed by the reconfigurable accelerator RA may change during the operation of the storage system SS′. there is.

본 실시예에 따르면, 스토리지 장치(100)는 비휘발성 메모리 칩과 같은 스토리지를 포함함으로써 기존의 스토리지 장치의 역할을 수행할 수 있고, 나아가, 스토리지 장치(100)는 재구성 가능 가속기(RA)와 스토리지 장치 세트(10c)를 구성할 수 있다. 이에 따라, 호스트(300)와 재구성 가능 가속기(RA)는 서로 직접적으로 연결되지 않더라도 스토리지 장치(100)에 포함된 버퍼 메모리, 예를 들어, CMB를 통해 데이터를 교환할 수 있다. 이로써, 스토리지 장치(100)와 재구성 가능 가속기(RA) 사이의 데이터 처리 속도를 더욱 향상시킬 수 있다.According to this embodiment, the storage device 100 may perform the role of an existing storage device by including storage such as a non-volatile memory chip, and furthermore, the storage device 100 includes a reconfigurable accelerator (RA) and a storage device. A set of devices 10c may be configured. Accordingly, the host 300 and the reconfigurable accelerator RA may exchange data through a buffer memory included in the storage device 100, for example, CMB, even though they are not directly connected to each other. Accordingly, data processing speed between the storage device 100 and the reconfigurable accelerator RA may be further improved.

도 22은 본 개시의 일 실시예에 따른 네트워크 시스템(1000)을 나타낸다. 22 illustrates a network system 1000 according to an embodiment of the present disclosure.

도 22을 참조하면, 네트워크 시스템(1000)은 서버 시스템(1100) 및 네트워크(NET)를 통해 서버 시스템(1100)과 통신하는 복수의 터미널들(1210 내지 1230)을 포함할 수 있다. 서버 시스템(1100)은 서버(1110)와 SSD(1120)를 포함할 수 있다. 이때, SSD(1120)는 상술한 실시예들의 스토리지 장치(100, 100a, 100b)에 대응할 수 있다. 일부 실시예들에서, SSD(1120)는 도 1 내지 도 21을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.Referring to FIG. 22 , a network system 1000 may include a server system 1100 and a plurality of terminals 1210 to 1230 communicating with the server system 1100 through a network NET. The server system 1100 may include a server 1110 and an SSD 1120 . In this case, the SSD 1120 may correspond to the storage devices 100, 100a, and 100b of the above-described embodiments. In some embodiments, SSD 1120 may be implemented using the embodiments described above with reference to FIGS. 1-21 .

도 23는 본 개시의 일 실시예에 따른 네트워크 시스템(2000)을 나타낸다.23 illustrates a network system 2000 according to an embodiment of the present disclosure.

도 23을 참조하면, 네트워크 시스템(2000)은 클라이언트 그룹(2100)과 데이터 센터(2200)를 포함할 수 있다. 클라이언트 그룹(2100)은 제1 네트워크(NET1), 예를 들어, 인터넷을 통해 데이터 센터(2200)와 통신하는 클라이언트 장치들(C)을 포함할 수 있다. 데이터 센터(2200)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 제2 네트워크(NET2), 예를 들어, LAN(Local Area Network) 또는 인트라넷을 통해 서로 통신하는 어플리케이션 서버 그룹(2210), 데이터베이스 서버 그룹(2220) 및 오브젝트 캐시 서버 그룹(2230)을 포함할 수 있다.Referring to FIG. 23 , a network system 2000 may include a client group 2100 and a data center 2200 . The client group 2100 may include client devices C communicating with the data center 2200 through a first network NET1, for example, the Internet. The data center 2200 is a facility that collects various data and provides services, and includes an application server group 2210 and a database that communicate with each other through a second network (NET2), for example, a local area network (LAN) or an intranet. A server group 2220 and an object cache server group 2230 may be included.

어플리케이션 서버 그룹(2210)은 어플리케이션 서버 장치들(AS)을 포함할 수 있고, 어플리케이션 서버 장치들(AS)은 클라이언트 그룹(2100)으로부터 수신한 요청을 처리하고, 클라이언트 그룹(2100)의 요청에 따라 데이터베이스 서버 그룹(2220) 또는 오브젝트 캐시 서버 그룹(2230)을 액세스할 수 있다. 데이터베이스 서버 그룹(2220)은 어플리케이션 서버 장치들(AS)에 의해 처리된 데이터를 저장하는 데이터베이스 서버 장치들(DS)을 포함할 수 있다. 오브젝트 캐시 서버 그룹(2230)은 데이터베이스 서버 장치들(DS)에 저장되는 데이터 또는 데이터베이스 서버 장치들(DS)로부터 독출된 데이터를 임시로 저장하는 오브젝트 캐시 서버 장치들(OCS)을 포함할 수 있고, 이에 따라, 어플리케이션 서버 장치들(AS)과 데이터베이스 서버 장치들(DS) 사이에서 캐시의 기능을 수행할 수 있다. 일 실시예에서, 데이터베이스 서버 장치들(DS)은 도 1 내지 도 21을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.The application server group 2210 may include application server devices (AS), and the application server devices (AS) process requests received from the client group 2100, and according to requests from the client group 2100. The database server group 2220 or the object cache server group 2230 can be accessed. The database server group 2220 may include database server devices DS that store data processed by the application server devices AS. The object cache server group 2230 may include object cache server devices (OCS) that temporarily store data stored in the database server devices DS or data read from the database server devices DS, Accordingly, a cache function may be performed between the application server devices AS and the database server devices DS. In one embodiment, the database server devices DS may be implemented using the embodiments described above with reference to FIGS. 1 to 21 .

이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As above, exemplary embodiments have been disclosed in the drawings and specifications. Although the embodiments have been described using specific terms in this specification, they are only used for the purpose of explaining the technical idea of the present disclosure, and are not used to limit the scope of the present disclosure described in the claims. . Therefore, those of ordinary skill in the art will understand that various modifications and equivalent other embodiments are possible therefrom. Therefore, the true technical scope of protection of the present disclosure should be determined by the technical spirit of the appended claims.

Claims (20)

제1 인터페이스 프로토콜에 따라 통신하도록 구성된 제1 포트;
제2 인터페이스 프로토콜에 따라 통신하도록 구성된 제2 포트;
암호화된 입력 데이터를 수신하고, 미리 결정된 구성(configuration)에 따라 상기 암호화된 입력 데이터를 가공함으로써 가공(processed) 데이터를 생성하며, 상기 가공 데이터를 암호화하여 암호화된 출력 데이터를 생성하는 재구성 가능 로직 칩(reconfigurable logic chip); 및
상기 제1 포트를 통해 호스트와 통신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩과 통신하며, 버퍼 메모리 및 컨트롤러를 포함하는 스토리지 장치를 포함하고,
상기 버퍼 메모리는,
상기 제1 포트를 통해 상기 호스트로부터 수신한, 암호화되지 않은 입력 데이터를 저장하고,
상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 수신한, 상기 암호화된 출력 데이터를 저장하며,
상기 컨트롤러는,
상기 버퍼 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하고,
상기 암호화되지 않은 입력 데이터를 암호화함으로써 상기 암호화된 입력 데이터를 생성하며,
상기 제2 포트를 통해 상기 재구성 가능 로직 칩에 상기 암호화된 입력 데이터를 전송하고,
상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 상기 암호화된 출력 데이터를 수신하며,
상기 제1 포트를 통해 상기 호스트에, 상기 버퍼 메모리에 저장된 상기 암호화된 출력 데이터를 복호화함으로써 생성된 복호화된 출력 데이터를 전송하는 것을 특징으로 하는 스토리지 장치 세트.
a first port configured to communicate according to a first interface protocol;
a second port configured to communicate according to a second interface protocol;
A reconfigurable logic chip that receives encrypted input data, processes the encrypted input data according to a predetermined configuration to generate processed data, and encrypts the processed data to generate encrypted output data. (reconfigurable logic chip); and
a storage device communicating with a host through the first port, communicating with the reconfigurable logic chip through the second port, and including a buffer memory and a controller;
The buffer memory,
storing unencrypted input data received from the host through the first port;
storing the encrypted output data received from the reconfigurable logic chip through the second port;
The controller,
reading the unencrypted input data from the buffer memory;
generating the encrypted input data by encrypting the unencrypted input data;
Transmitting the encrypted input data to the reconfigurable logic chip through the second port;
receiving the encrypted output data from the reconfigurable logic chip through the second port;
and transmitting decrypted output data generated by decrypting the encrypted output data stored in the buffer memory to the host through the first port.
제1항에 있어서,
상기 스토리지 장치는, 상기 암호화된 입력 데이터 또는 상기 암호화된 출력 데이터를 상기 버퍼 메모리에 버퍼링하는 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The storage device set characterized in that the storage device buffers the encrypted input data or the encrypted output data in the buffer memory.
제1항에 있어서,
상기 컨트롤러는, 상기 호스트로부터 상기 암호화되지 않은 입력 데이터 및 기입 커맨드를 수신하고, 수신한 상기 암호화되지 않은 입력 데이터를 암호화하여 상기 암호화된 입력 데이터를 생성하며, 생성된 상기 암호화된 입력 데이터를 상기 버퍼 메모리에 로딩하는 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The controller receives the unencrypted input data and a write command from the host, encrypts the received unencrypted input data to generate the encrypted input data, and transfers the generated encrypted input data to the buffer A set of storage devices characterized by loading into memory.
제1항에 있어서, 상기 스토리지 장치는,
상기 암호화되지 않은 입력 데이터를 저장하는 비휘발성 메모리를 더 포함하고,
상기 컨트롤러는, 상기 호스트로부터 수신한 호스트 커맨드에 응답하여 상기 비휘발성 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하고, 독출된 상기 암호화되지 않은 입력 데이터를 암호화하여 상기 암호화된 입력 데이터를 생성하며, 생성된 상기 암호화된 입력 데이터를 상기 버퍼 메모리에 로딩하는 것을 특징으로 하는 스토리지 장치 세트.
The method of claim 1, wherein the storage device,
Further comprising a non-volatile memory for storing the unencrypted input data,
The controller reads the unencrypted input data from the non-volatile memory in response to a host command received from the host, encrypts the read unencrypted input data, and generates the encrypted input data; and loading the encrypted input data into the buffer memory.
제1항에 있어서,
상기 컨트롤러는, 상기 버퍼 메모리에 상기 암호화된 입력 데이터의 로딩이 완료되면, 상기 암호화된 입력 데이터의 가공을 지시하는 커맨드를 상기 재구성 가능 로직 칩에 전송하는 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The storage device set of claim 1 , wherein the controller transmits a command instructing processing of the encrypted input data to the reconfigurable logic chip when loading of the encrypted input data into the buffer memory is completed.
제1항에 있어서,
상기 컨트롤러는 제1 칩에 구현되고, 상기 버퍼 메모리는 제2 칩에 구현되는 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The storage device set of claim 1 , wherein the controller is implemented in a first chip and the buffer memory is implemented in a second chip.
제1항에 있어서,
상기 컨트롤러 및 상기 버퍼 메모리는 동일 칩에 구현되는 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The storage device set, characterized in that the controller and the buffer memory are implemented on the same chip.
제1항에 있어서,
상기 컨트롤러는, 상기 암호화된 출력 데이터를 복호화하여 상기 복호화된 출력 데이터를 생성하고,
상기 스토리지 장치는, 상기 암호화되지 않은 입력 데이터 또는 상기 복호화된 출력 데이터를 상기 버퍼 메모리에 버퍼링하는 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The controller decrypts the encrypted output data to generate the decrypted output data;
Wherein the storage device buffers the unencrypted input data or the decrypted output data in the buffer memory.
제1항에 있어서, 상기 재구성 가능 로직 칩은 상기 스토리지 장치를 통해 상기 호스트와 간접적으로 연결되는 것을 특징으로 하는 스토리지 장치 세트.The storage device set of claim 1 , wherein the reconfigurable logic chip is indirectly connected to the host through the storage device. 삭제delete 제1항에 있어서,
상기 스토리지 장치와 상기 재구성 가능 로직 칩은 단일 보드에 실장된 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The storage device set, characterized in that the storage device and the reconfigurable logic chip are mounted on a single board.
제1항에 있어서,
상기 스토리지 장치와 상기 재구성 가능 로직 칩은 POP(Package-On-Package)로 구현된 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The storage device and the reconfigurable logic chip are implemented as a package-on-package (POP).
제1항에 있어서,
상기 재구성 가능 로직 칩은 FPGA(Field Programmable Gate Array)인 것을 특징으로 하는 스토리지 장치 세트.
According to claim 1,
The storage device set, characterized in that the reconfigurable logic chip is a Field Programmable Gate Array (FPGA).
제1 인터페이스 프로토콜에 따라 통신하도록 구성된 제1 포트;
제2 인터페이스 프로토콜에 따라 통신하도록 구성된 제2 포트;
호스트;
재구성 가능 로직 칩; 및
상기 제1 포트를 통해 상기 호스트와 통신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩과 통신하도록 구성된 스토리지 장치를 포함하고,
상기 스토리지 장치는,
암호화되지 않은 입력 데이터를 저장하는 비휘발성 메모리;
상기 재구성 가능 로직 칩에서 제공된 암호화된 출력 데이터를 저장하는 버퍼 메모리; 및
상기 비휘발성 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하고, 상기 암호화되지 않은 입력 데이터를 암호화하여 암호화된 입력 데이터를 생성하며, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩에 상기 암호화된 입력 데이터를 송신하고, 상기 제2 포트를 통해 상기 재구성 가능 로직 칩으로부터 상기 암호화된 출력 데이터를 수신하는 컨트롤러를 포함하는 것을 특징으로 하는 스토리지 시스템.
a first port configured to communicate according to a first interface protocol;
a second port configured to communicate according to a second interface protocol;
host;
reconfigurable logic chips; and
a storage device configured to communicate with the host through the first port and communicate with the reconfigurable logic chip through the second port;
The storage device,
non-volatile memory to store unencrypted input data;
a buffer memory storing encrypted output data provided from the reconfigurable logic chip; and
Reading the unencrypted input data from the non-volatile memory, encrypting the unencrypted input data to generate encrypted input data, and sending the encrypted input data to the reconfigurable logic chip through the second port. and a controller for transmitting and receiving the encrypted output data from the reconfigurable logic chip through the second port.
제14항에 있어서, 상기 재구성 가능 로직 칩은,
상기 스토리지 장치로부터 상기 암호화된 입력 데이터를 수신하고, 미리 결정된 구성에 따라 상기 암호화된 입력 데이터로부터 가공 데이터를 생성하며, 상기 가공 데이터를 암호화하여 상기 암호화된 출력 데이터를 생성하고, 생성된 상기 암호화된 출력 데이터를 상기 스토리지 장치에 송신하는 것을 특징으로 하는 스토리지 시스템.
15. The method of claim 14, wherein the reconfigurable logic chip,
Receive the encrypted input data from the storage device, generate processed data from the encrypted input data according to a predetermined configuration, encrypt the processed data to generate the encrypted output data, and generate the encrypted output data. and transmitting output data to the storage device.
제14항에 있어서, 상기 컨트롤러는,
상기 버퍼 메모리에 저장된 상기 암호화된 출력 데이터를 복호화함으로써 복호화된 출력 데이터를 생성하고, 상기 복호화된 출력 데이터를 상기 제1 포트를 통해 상기 호스트에 송신하는 것을 특징으로 하는 스토리지 시스템.
The method of claim 14, wherein the controller,
and generating decrypted output data by decrypting the encrypted output data stored in the buffer memory, and transmitting the decrypted output data to the host through the first port.
제14항에 있어서,
상기 버퍼 메모리는 상기 암호화된 입력 데이터를 더 저장하고,
상기 재구성 가능 로직 칩은 상기 스토리지 장치를 통해 상기 호스트와 간접적으로 연결되는 것을 특징으로 하는 스토리지 시스템.
According to claim 14,
The buffer memory further stores the encrypted input data,
The storage system of claim 1 , wherein the reconfigurable logic chip is indirectly connected to the host through the storage device.
스토리지 장치의 동작 방법으로서,
상기 스토리지 장치의 제1 포트를 통해, 호스트로부터 데이터 가공 요청을 포함하는 호스트 커맨드를 수신하는 단계;
상기 스토리지 장치의 상기 제1 포트를 통해 상기 호스트로부터 수신한, 암호화되지 않은 입력 데이터를 버퍼 메모리에 저장하는 단계;
상기 버퍼 메모리로부터 상기 암호화되지 않은 입력 데이터를 독출하는 단계;
상기 암호화되지 않은 입력 데이터를 암호화하여 암호화된 입력 데이터를 생성하는 단계;
상기 스토리지 장치의 제2 포트를 통해, 상기 암호화된 입력 데이터 및 상기 암호화된 입력 데이터에 대한 데이터 가공을 지시하는 커맨드를 재구성 가능 로직 칩에 전송하는 단계;
상기 스토리지 장치의 상기 제2 포트를 통해, 상기 재구성 가능 로직 칩으로부터 암호화된 출력 데이터를 수신하는 단계; 및
상기 스토리지 장치의 상기 제1 포트를 통해, 상기 암호화된 출력 데이터를 복호화함으로써 생성된 복호화된 출력 데이터를 상기 호스트에 송신하는 단계를 포함하는 방법.
As a method of operating a storage device,
receiving a host command including a data processing request from a host through a first port of the storage device;
storing unencrypted input data received from the host through the first port of the storage device in a buffer memory;
reading the unencrypted input data from the buffer memory;
generating encrypted input data by encrypting the unencrypted input data;
transmitting the encrypted input data and a command instructing data processing of the encrypted input data to a reconfigurable logic chip through a second port of the storage device;
receiving encrypted output data from the reconfigurable logic chip through the second port of the storage device; and
and transmitting decrypted output data generated by decrypting the encrypted output data to the host through the first port of the storage device.
제18항에 있어서,
상기 재구성 가능 로직 칩은 상기 스토리지 장치를 통해 상기 호스트와 간접적으로 연결되는 것을 특징으로 하는 방법.
According to claim 18,
The method of claim 1 , wherein the reconfigurable logic chip is indirectly connected to the host through the storage device.
제18항에 있어서,
상기 스토리지 장치는, 비휘발성 메모리를 포함하고,
상기 방법은,
상기 비휘발성 메모리로부터 독출 데이터를 수신하는 단계; 및
상기 독출 데이터를 암호화하는 단계를 더 포함하고,
상기 재구성 가능 로직 칩에 전송하는 단계는, 암호화된 상기 독출 데이터를 상기 재구성 가능 로직 칩에 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
According to claim 18,
The storage device includes a non-volatile memory,
The method,
receiving read data from the non-volatile memory; and
Further comprising encrypting the read data,
The method of claim 1 , wherein the transmitting to the reconfigurable logic chip comprises transmitting the encrypted read data to the reconfigurable logic chip.
KR1020180065657A 2018-06-07 2018-06-07 Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set KR102570581B1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020180065657A KR102570581B1 (en) 2018-06-07 2018-06-07 Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set
CN201910088802.5A CN110580129A (en) 2018-06-07 2019-01-30 Storage device group and storage system including the same
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 (en) 2018-06-07 2018-06-07 Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set

Publications (2)

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

Family

ID=65635406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180065657A KR102570581B1 (en) 2018-06-07 2018-06-07 Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set

Country Status (5)

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

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7370158B2 (en) * 2019-04-03 2023-10-27 株式会社Preferred Networks Information processing device and information processing method
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
US8656191B2 (en) * 2005-12-23 2014-02-18 Nagravision S.A. Secure system-on-chip
EP1802030A1 (en) * 2005-12-23 2007-06-27 Nagracard 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 (en) 2009-09-22 2016-03-21 삼성전자주식회사 Storage system including cryptography key selection device and selection method for cryptography key
US8850128B2 (en) 2009-12-23 2014-09-30 HGST Netherlands B.V. Implementing data storage and dual port, dual-element storage device
US8677068B2 (en) 2010-06-18 2014-03-18 Lsi Corporation Scalable storage devices
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 (en) * 2013-11-27 2020-02-18 삼성전자 주식회사 Memory system, host system and method for performing write operation in memory system
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 (en) * 2015-01-09 2021-07-14 삼성전자주식회사 SEMICONDUCTOR PACKAGE WITH PoP STRUCTURE AND THEREFORE REFRESH CONTROL METHOD
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 (en) 2015-11-02 2020-09-01 上海兆芯集成电路有限公司 Chip set with hard disk encryption function and host controller
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
EP3607741A4 (en) * 2017-04-07 2020-12-09 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
KR20190139081A (en) 2019-12-17
US20190377513A1 (en) 2019-12-12
US20220374164A1 (en) 2022-11-24
US11461043B2 (en) 2022-10-04
SG10201902256SA (en) 2020-01-30
CN110580129A (en) 2019-12-17
EP3579136B1 (en) 2024-03-27
US20210042057A1 (en) 2021-02-11
EP3579136A1 (en) 2019-12-11
US10817214B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
KR102559581B1 (en) Storage device including reconfigurable logic and method of operating the storage device
KR102545167B1 (en) Key-value storage device and method of operating the key-value storage device
US20220374164A1 (en) Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
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
US20230135891A1 (en) Storage device including storage controller and operating method
EP4148572B1 (en) Computational storage device and storage system including the computational storage device
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
US20230144135A1 (en) Trusted computing device and operating method thereof
US20230100160A1 (en) Computing devices for encryption and decryption of data
KR20240069474A (en) Memory device and method for managing use history

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