KR20240071062A - 오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법 - Google Patents

오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법 Download PDF

Info

Publication number
KR20240071062A
KR20240071062A KR1020220152738A KR20220152738A KR20240071062A KR 20240071062 A KR20240071062 A KR 20240071062A KR 1020220152738 A KR1020220152738 A KR 1020220152738A KR 20220152738 A KR20220152738 A KR 20220152738A KR 20240071062 A KR20240071062 A KR 20240071062A
Authority
KR
South Korea
Prior art keywords
offloading
encryption
host
computational
system controller
Prior art date
Application number
KR1020220152738A
Other languages
English (en)
Inventor
은희석
문동욱
이승한
지수영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020220152738A priority Critical patent/KR20240071062A/ko
Priority to CN202311444297.6A priority patent/CN118051272A/zh
Priority to EP23207936.8A priority patent/EP4372569A1/en
Priority to US18/387,739 priority patent/US20240160484A1/en
Publication of KR20240071062A publication Critical patent/KR20240071062A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • 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/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/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/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
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • H04L63/205Network architectures or network communication protocols for network security for managing network security; network security policies in general involving negotiation or determination of the one or more network security mechanisms to be used, e.g. by negotiation between the client and the server or between peers or by selection according to the capabilities of the entities involved
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시의 기술적 사상의 일측면에 따른 저장 시스템은, 제1 오프로딩 기능들 및 이들에 대응하는 제1 알고리즘들을 지원하도록 구성된 제1 연산 회로가 포함되고, 호스트와 통신 인터페이스를 수행하도록 구성된 네트워크 인터페이스 장치, 제2 오프로딩 기능들 및 이들에 대응하는 제2 알고리즘들을 지원하도록 구성된 제2 연산 회로가 포함되고, 상기 호스트로부터 수신된 데이터를 저장하도록 구성된 연산 저장 장치 및 상기 호스트의 오프로딩 요청에 응답하여 상기 제1 오프로딩 기능들, 상기 제2 오프로딩 기능들, 상기 제1 알고리즘들 및 상기 제2 알고리즘들에 관한 오프로딩 정보를 기반으로 상기 제1 및 제2 연산 회로들 중 어느 하나에 의해 오프로딩 연산 동작이 수행되도록 관리 동작을 수행하도록 구성된 시스템 컨트롤러를 포함한다.

Description

오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법{STORAGE SYSTEM SUPPORTING AN OFFLOADING FUNCTION AND AN OPERATING METHOD THEREOF}
본 개시의 기술적 사상은 저장 시스템에 관한 것으로, 오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 전자 회로들의 동작들에 따라 고유의 기능을 수행한다. 전자 장치는 단독으로 동작하면서 고유의 기능을 수행할 수 있다. 전자 장치는 다른 전자 장치와 통신하면서 고유의 기능을 수행할 수 있다.
저장 장치(storage device)는 전자 장치의 일 구현예일 수 있다. 저장 장치는 그것에 포함되는 구성 요소들의 동작들에 따라 데이터를 저장하고 출력함으로써 사용자에게 저장 서비스를 제공할 수 있다. 저장 장치는 단독으로 데이터를 관리할 수 있고, 또는 다른 전자 장치와 통신하면서 데이터를 관리할 수 있다.
호스트는 저장 장치와 통신을 수행함으로써, 사용자에게 서비스를 제공할 수 있다. 저장 장치를 포함하는 복수의 저장 장치들은 저장 시스템으로 구현될 수 있으며, 호스트는 저장이 필요한 데이터를 저장 시스템으로 송신할 수 있다.
최근에 호스트의 제한된 자원 및 연산 속도의 한계를 극복하기 위해 오프로딩 기술이 제안되었다. 호스트는 어플리케이션 수행에 필요한 연산 동작들 중 일부를 저장 시스템에 전달하고, 저장 시스템은 전달받은 연산 동작들을 수행한 후에 호스트에 수행 결과를 반환할 수 있다.
한편, 호스트는 오프로딩 기능 및 이에 부합하는 알고리즘을 선택하여 저장 시스템에 요청할 수 있으며, 저장 시스템은 호스트의 오프로딩 요청에 응답하여 오프로딩 연산 동작을 수행할 수 있는 복수의 장치들을 포함할 수 있다.
본 개시의 기술적 사상이 해결하려는 과제는 복수의 오프로딩 기능들 및 복수의 알고리즘들을 지원하는 장치들을 포함하는 저장 시스템에서 오프로딩 동작이 효율적으로 수행되도록 관리 동작을 수행하는 저장 시스템 및 이의 동작 방법을 제공하는 데에 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 예시적 실시예에 따른 저장 시스템은, 제1 오프로딩 기능들 및 이들에 대응하는 제1 알고리즘들을 지원하도록 구성된 제1 연산 회로가 포함되고, 호스트와 통신 인터페이스를 수행하도록 구성된 네트워크 인터페이스 장치, 제2 오프로딩 기능들 및 이들에 대응하는 제2 알고리즘들을 지원하도록 구성된 제2 연산 회로가 포함되고, 상기 호스트로부터 수신된 데이터를 저장하도록 구성된 연산 저장 장치 및 상기 호스트의 오프로딩 요청에 응답하여 상기 제1 오프로딩 기능들, 상기 제2 오프로딩 기능들, 상기 제1 알고리즘들 및 상기 제2 알고리즘들에 관한 오프로딩 정보를 기반으로 상기 제1 및 제2 연산 회로들 중 어느 하나에 의해 오프로딩 연산 동작이 수행되도록 관리 동작을 수행하도록 구성된 시스템 컨트롤러를 포함한다.
본 개시의 예시적 실시예에 따른 저장 시스템은, 암호화 오프로딩 기능 및 이에 대응하는 제1 암호화 알고리즘들을 지원하도록 구성된 제1 연산 회로가 포함되고, 호스트와 통신 인터페이스를 수행하도록 구성된 네트워크 인터페이스 장치, 상기 암호화 오프로딩 기능 및 이에 대응하는 제2 암호화 알고리즘들을 지원하도록 구성된 제2 연산 회로가 포함되고, 상기 호스트에 제1 메모리 공간을 제공하도록 구성된 제1 연산 저장 장치, 상기 암호화 오프로딩 기능 및 이에 대응하는 제3 암호화 알고리즘들을 지원하도록 구성된 제3 연산 회로가 포함되고, 상기 호스트에 제2 메모리 공간을 제공하도록 구성된 제2 연산 저장 장치 및 상기 호스트의 암호화 오프로딩 요청에 응답하여 상기 제1 내지 제3 암호화 알고리즘들에 관한 오프로딩 정보를 기반으로 상기 제1 내지 제3 연산 회로들 중 적어도 하나에 의해 암호화 동작이 수행되도록 관리 동작을 수행하도록 구성된 시스템 컨트롤러를 포함한다.
본 개시의 예시적 실시예에 따른 저장 시스템은, 암호화 오프로딩 기능 및 이에 대응하는 제1 암호화 알고리즘들을 지원하도록 구성된 제1 연산 회로가 포함되고, 호스트와 통신 인터페이스를 수행하도록 구성된 네트워크 인터페이스 장치, 기계 학습 오프로딩 기능, 상기 암호화 오프로딩 기능 및 상기 암호화 오프로딩 기능에 대응하는 제2 암호화 알고리즘들을 지원하도록 구성된 제2 연산 회로가 포함되고, 상기 호스트에 메모리 공간을 제공하도록 구성된 연산 저장 장치, 상기 호스트에 의해 상기 기계 학습 오프로딩 기능이 활성화되고 상기 호스트의 암호화 오프로딩 요청에 응답하여, 상기 제1 내지 제2 암호화 알고리즘들에 관한 오프로딩 정보로부터 상기 기계 학습 오프로딩 기능에 적합한 암호화 알고리즘을 탐색하고 탐색 결과를 기반으로 상기 제1 및 제2 연산 회로들 중 적어도 하나에 의해 암호화 동작이 수행되도록 관리 동작을 수행하도록 구성된 시스템 컨트롤러를 포함한다.
또한, 본 개시의 예시적 실시예에 따른 연산 저장 장치는, 메모리 장치, 암호화 오프로딩 기능 및 이에 대응하는 암호화 알고리즘들을 지원하도록 구성된 연산 회로 및 상기 메모리 장치 및 상기 연산 회로를 제어하도록 구성된 컨트롤러를 포함하고, 상기 연산 회로는, 외부로부터 수신된 암호화 여부를 가리키는 플래그를 기반으로 상기 암호화 알고리즘들 중 어느 하나를 이용하여 상기 외부로부터 수신된 데이터에 대한 암호화 동작을 선택적으로 수행하도록 구성된 것을 특징으로 한다.
본 개시의 예시적 실시예에 따른 저장 시스템의 시스템 컨트롤러는 네트워크 인터페이스 장치 및 복수의 연산 저장 장치들에서 지원하는 오프로딩 기능들 및 이들에 대응하는 알고리즘들에 관한 오프로딩 정보를 기반으로 관리 동작을 수행함으로써 네트워크 인터페이스 장치 및 복수의 연산 저장 장치들에서 오프로딩 연산 동작이 중복 수행되는 것을 방지할 수 있다. 그 결과, 저장 시스템은 효율적인 자원 사용 및 효율적인 오프로딩 동작을 수행하여 저장 시스템을 포함하는 전자 시스템의 전체적인 성능을 개선할 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 전자 시스템을 개략적으로 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 저장 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 3a 및 도 3b는 도 2의 단계 S150의 구체적인 실시예들을 설명하기 위한 순서도이다.
도 4는 본 개시의 예시적 실시예에 따른 오프로딩 기능들을 설명하기 위한 테이블도이다.
도 5는 본 개시의 예시적 실시예에 따른 저장 시스템을 나타내는 블록도이다.
도 6a는 본 개시의 예시적 실시예에 따라 저장 시스템에 포함된 장치들이 지원하는 암호화 알고리즘들을 설명하기 위한 테이블도이고, 도 6b는 본 개시의 예시적 실시예에 따라 사용자 인터페이스를 통해 제공되는 리스트를 설명하기 위한 도면이다.
도 7 내지 도 10은 본 개시의 예시적 실시예에 따른 저장 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 11은 본 개시의 예시적 실시예에 따른 오프로딩 기능을 지원하는 도메인을 설명하기 위한 도면이다.
도 12는 본 개시의 예시적 실시예에 따른 저장 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 13a는 본 개시의 예시적 실시예에 따라 저장 시스템에 포함된 장치들이 지원하는 암호화 알고리즘들을 설명하기 위한 테이블도이고, 도 13b는 본 개시의 예시적 실시예에 따라 사용자 인터페이스를 통해 제공되는 리스트를 설명하기 위한 도면이다.
도 14 내지 도 16은 본 개시의 예시적 실시예에 따른 저장 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 17은 본 개시의 예시적 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 18은 본 개시의 예시적 실시예에 따른 데이터베이스 시스템을 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 전자 시스템(1)을 개략적으로 나타내는 블록도이다. 전자 시스템(1)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블(wearable) 장치, 비디오 게임기, 워크스테이션, 하나 이상의 서버, 전기 자동차, 가전기기, 의료기기 등과 같은 전자 장치들 중 하나일 수 있다. 본 개시에서는 서버 시스템 향으로 구현되어 세분화된 구조(disaggregated architecture)를 갖는 전자 시스템(1)이 중심으로 서술된다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 전자 시스템(1)은 다양하게 구현될 수 있다.
도 1을 참조하면, 전자 시스템(1)은 연산 시스템(10) 및 저장 시스템(100)을 포함할 수 있다. 연산 시스템(10)은 네트워크 인터페이스 장치(11) 및 CPU(central processing unit)(12)을 포함하고, 저장 시스템(100)은 네트워크 인터페이스 장치(110), 시스템 컨트롤러(120) 및 제1 내지 제k 연산 저장 장치들(130_1~130_n)을 포함할 수 있다. 본 명세서의 연산 시스템(10)은 연산 노드(computing node)로 지칭되고, 저장 시스템(100)은 저장 노드(storage node)로 지칭될 수 있다. 또한, 전자 시스템(1)은 더 많은 연산 시스템들 및 더 많은 저장 시스템들을 포함할 수 있다.
전자 시스템(1)을 이용하는 복수의 사용자들에 대응하는 복수의 컨테이너들(또는, 복수의 가상 머신들)이 포함된 호스트로부터의 요청에 응답하여 연산 시스템(10)은 요청에 따른 연산(또는, 처리) 동작을 수행할 수 있다. 일 예로, 연산 시스템(10)은 호스트에서 선택한 프로그램을 실행하여 호스트로부터 수신된 데이터에 대한 연산 동작을 수행할 수 있다. 연산 시스템(10)은 연산되어 처리된 데이터를 저장 시스템(100)에 저장할 수 있다. 또한, 일 예로, 연산 시스템(10)은 호스트에서 선택한 프로그램을 실행하여 저장 시스템(100)으로부터 리드된 데이터에 대한 연산 동작을 수행할 수 있다.
전자 시스템(1)의 구성에 따라 호스트는 저장 시스템(100)과 직접 통신하거나, 연산 시스템(10)을 통해 저장 시스템(100)과 통신을 수행할 수 있다. 한편, 본 명세서에서 전자 시스템(1)과 호스트는 분리된 구성으로 서술되나, 호스트는 연산 시스템(10) 상에서 구현될 수도 있으며, 이하 서술될 오프로딩 기능 및 알고리즘의 선택, 이에 부합하는 오프로딩 요청의 송신 등의 동작은 연산 시스템(10) 측에서 수행될 수도 있다. 따라서, 본 명세서에서 호스트의 동작은 연산 시스템(10)의 동작으로 해석될 수도 있다.
연산 시스템(10)과 저장 시스템(100)은 네트워크 인터페이스 장치(11, 111)를 통해 통신을 수행할 수 있다. 본 명세서의 네트워크 인터페이스 장치는 네트워크 인터페이스 카드(network interface card)로 지칭될 수 있다. 네트워크 인터페이스 장치(11, 111)는 약속된 통신 프로토콜에 기반될 수 있으며, 연산 시스템(10)과 저장 시스템(100) 간의 통신이 원활하게 수행되도록 인터페이스를 제공할 수 있다. 구체적으로, 네트워크 인터페이스 장치(11, 111)는 송신할 데이터를 약속된 통신 프로토콜을 기반으로 변환하고, 수신된 데이터를 약속된 통신 프로토콜을 기반으로 복원할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않고, 네트워크 인터페이스 장치(11, 111)는 연산 시스템(10)과 저장 시스템(100) 간의 통신을 위한 더 많은 동작을 수행할 수 있다.
예시적 실시예로, 저장 시스템(100)에서 네트워크 인터페이스 장치(110), 제1 내지 제k 연산 저장 장치(130_1~130_n)는 각각 연산 회로(111, 131_1~131_n)를 포함할 수 있다. 연산 회로들(111, 131_1~131_n)은 연산 시스템(10)의 CPU(12)의 부하를 줄여주기 위하여 호스트의 요청에 따른 오프로딩 연산 동작을 수행할 수 있다. 연산 회로들(111, 131_1~131_n)은 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)로 구현될 수 있다. 일부 실시예에서, 연산 회로들(111, 131_1~131_n)은 소프트웨어로 구현되어 저장 시스템(100)에 포함된 프로세서(미도시) 또는 CPU(미도시)에 의해 실행될 수 있다.
예시적 실시예로, 연산 회로들(111, 131_1~131_n) 각각은 오프로딩 기능들 및 이들에 대응하는 알고리즘들을 지원할 수 있다. 다시 말해, 네트워크 인터페이스 장치(110), 제1 내지 제k 연산 저장 장치들(130_1~130_n) 각각은 오프로딩 기능들 및 이들에 대응하는 알고리즘들을 지원할 수 있다. 본 명세서에서, 연산 회로들(111, 131_1~131_n)의 동작은 네트워크 인터페이스 장치(110), 제1 내지 제k 연산 저장 장치들(130_1~130_n)의 동작으로 지칭될 수 있다.
일 예로, 연산 회로(111)는 제1 오프로딩 기능 및 이에 대응하는 제1 알고리즘을 지원할 수 있고, 연산 회로(131_1)는 제2 오프로딩 기능 및 이에 대응하는 제2 알고리즘을 지원할 수 있다. 연산 회로들(111, 131_1~131_n) 중 일부가 지원하는 오프로딩 기능들 및 이에 대응하는 알고리즘들이 중복될 수 있다. 중복된 오프로딩 기능들 및 이에 대응하는 알고리즘들에 의해 연산 회로들(111, 131_1~131_n)의 중복된 오프로딩 연산 동작들을 방지하기 위해 시스템 컨트롤러(120)는 관리 동작을 수행할 수 있다.
예시적 실시예로, 시스템 컨트롤러(120)는 호스트의 오프로딩 요청에 응답하여 연산 회로들(111, 131_1~131_n)에서 지원되는 오프로딩 기능들 및 이들에 대응하는 알고리즘들에 관한 오프로딩 정보를 기반으로 연산 회로들(111, 131_1~131_n) 중 어느 하나에 의해 오프로딩 연산 동작이 수행되도록 관리 동작을 수행할 수 있다. 예시적 실시예로, 시스템 컨트롤러(120)는 네트워크 인터페이스 장치(110)를 통해 호스트의 오프로딩 요청을 수신할 수 있다.
예시적 실시예로, 시스템 컨트롤러(120)는 저장 시스템(100)의 초기화 단계에서 네트워크 인터페이스 장치(110), 제1 내지 제k 연산 저장 장치들(130_1~130_n) 각각으로부터 지원되는 오프로딩 기능들 및 지원되는 알고리즘들에 관한 정보들을 수집하여 오프로딩 정보를 생성할 수 있다.
예시적 실시예로, 시스템 컨트롤러(120)는 오프로딩 정보를 기반으로 저장 시스템(100)에서 지원되는 오프로딩 기능들 및 지원되는 알고리즘들을 가리키는 리스트를 생성하여 네트워크 인터페이스 장치(110)를 통해 호스트로 송신할 수 있다. 호스트는 시스템 컨트롤러(120)로부터 제공된 리스트를 기반으로 오프로딩 기능 및 알고리즘을 선택한 후 오프로딩 요청을 저장 시스템(100)으로 송신할 수 있다.
예시적 실시예로, 호스트의 오프로딩 요청은 호스트로부터 선택된 오프로딩 기능 및 선택된 알고리즘에 부합할 수 있다. 예시적 실시예로, 시스템 컨트롤러(120)는 오프로딩 정보를 기반으로 네트워크 인터페이스 장치(110), 제1 내지 제n 연산 저장 장치들(130_1~130_n) 중 호스트로부터 선택된 오프로딩 기능 및 선택된 알고리즘을 지원하는 장치를 탐색하고, 탐색 결과를 기반으로 관리 동작을 수행할 수 있다. 본 명세서에서, 관리 동작은 오프로딩 연산 동작이 다른 장치에서 수행되었는지 여부를 가리키는 플래그 및 오프로딩 연산 동작에 따라 특정 동작 수행이 불필요한지 여부를 가리키는 플래그 중 적어도 하나를 생성하여 시스템 컨트롤러(120)와 연결된 장치들 중 적어도 하나에 송신하는 동작으로 정의될 수 있다.
이하에서는, 네트워크 인터페이스 장치(110)의 배치 구조를 볼 때, 호스트로부터 각각 선택된 오프로딩 기능 및 선택된 알고리즘을 네트워크 인터페이스 장치(110)에서 지원하는 경우, 네트워크 인터페이스 장치(110)가 호스트로부터의 요청에 응답한 오프로딩 연산 동작을 우선적으로 수행하는 실시예를 중심으로 서술된다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 위와 같은 경우에서 시스템 컨트롤러(120)의 제어 하에 네트워크 인터페이스 장치(110)에서 오프로딩 연산 동작이 수행되지 않을 수 있다. 이에 대한 구체적인 실시예는 후술된다.
일 예로, 호스트로부터 각각 선택된 제1 오프로딩 기능 및 선택된 제1 알고리즘을 네트워크 인터페이스 장치(110) 및 제1 연산 저장 장치(130_1)에서 지원하는 경우에, 네트워크 인터페이스 장치(110)가 제1 오프로딩 기능 및 제1 알고리즘에 부합하는 오프로딩 연산 동작을 우선적으로 수행하고, 시스템 컨트롤러(120)는 네트워크 인터페이스 장치(110)에서 오프로딩 연산 동작이 수행되었음을 가리키는 플래그를 제1 연산 저장 장치(130_1)에 송신할 수 있다.
다른 예로, 호스트로부터 각각 선택된 제2 오프로딩 기능 및 선택된 제2 알고리즘을 제1 및 제2 연산 저장 장치(130_1, 130_2)에서 지원하는 경우에, 시스템 컨트롤러(120)는 제1 및 제2 연산 저장 장치(130_1, 130_2) 중 어느 하나를 선택하여 선택된 장치에서 오프로딩 연산 동작이 수행되도록 선택된 장치에 오프로딩 연산 동작이 수행되지 않았음을 가리키는 플래그를 송신할 수 있다.
예시적 실시예로, 제1 내지 제n 연산 저장 장치들(130_1~130_n)은 대용량의 비휘발성 메모리 장치들(미도시) 및 오프로딩 연산 동작을 위해 이용되는 휘발성 메모리 장치(미도시)를 더 포함할 수 있다. 일 예로, 비휘발성 메모리 장치들(미도시)은 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM), 플래시(flash) 메모리 등을 포함할 수 있다. 일 예로, 휘발성 메모리 장치(미도시)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 메모리를 포함할 수 있다. 일부 실시예에서, 제1 내지 제n 연산 저장 장치들(130_1~130_n)은 솔리드 스테이트 드라이브(solid state drive)로 구현될 수 있다.
본 개시의 예시적 실시예에 따른 저장 시스템(100)의 시스템 컨트롤러(120)는 네트워크 인터페이스 장치(110), 제1 내지 제n 연산 저장 장치들(130_1~130_n)에서 지원하는 오프로딩 기능들 및 이들에 대응하는 알고리즘들에 관한 오프로딩 정보를 기반으로 관리 동작을 수행함으로써 네트워크 인터페이스 장치(110), 제1 내지 제n 연산 저장 장치들(130_1~130_n)에서 오프로딩 연산 동작이 중복 수행되는 것을 방지할 수 있다. 그 결과, 저장 시스템(100)은 효율적인 자원 사용 및 효율적인 오프로딩 동작을 수행하여 전자 시스템(1)의 전체적인 성능은 개선될 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 저장 시스템(100)의 동작 방법을 설명하기 위한 순서도이다. 저장 시스템(100)은 네트워크 인터페이스 장치(110), 시스템 컨트롤러(120) 및 연산 저장 장치들(130)을 포함할 수 있다. 서술의 편의상 시스템 컨트롤러(120)가 연산 시스템(10)과 직접 신호를 송수신하는 것으로 도시되었으나, 시스템 컨트롤러(120)는 네트워크 인터페이스 장치(110)를 통해 연산 시스템(10)과 신호를 송수신할 수 있다. 일부 실시예에서, 도 2의 연산 시스템(10)은 호스트로 대체될 수도 있다.
도 2를 참조하면, 단계 S100에서 네트워크 인터페이스 장치(110) 및 연산 저장 장치들(130)이 포함된 장치들은 시스템 컨트롤러(120)로 지원하는 오프로딩 기능들 및 지원하는 알고리즘들을 가리키는 정보들을 송신할 수 있다. 예시적 실시예로, 시스템 컨트롤러(120)는 초기화 단계에서 장치들(110, 130)에 상기 정보들을 요청하고, 장치들(110, 130)은 요청에 응답하여 상기 정보들을 송신할 수 있다. 일부 실시예에서, 저장 시스템(100)은 새롭게 연결된 장치를 더 포함할 수 있으며, 시스템 컨트롤러(120)는 새롭게 연결된 장치로부터 새롭게 연결된 장치가 지원하는 오프로딩 기능들 및 지원하는 알고리즘들을 가리키는 정보를 추가적으로 수신할 수 있다.
단계 S110에서 시스템 컨트롤러(120)는 단계 S100를 통해 수신된 정보들을 오프로딩 정보로서 관리할 수 있다.
단계 S120에서 시스템 컨트롤러(120)는 오프로딩 정보에 기반된 리스트를 연산 시스템(10)으로 송신할 수 있다. 리스트는 저장 시스템(100)에서 지원하는 오프로딩 기능들 및 지원하는 알고리즘들을 가리킬 수 있다. 예시적 실시예로, 연산 시스템(10)은 리스트를 유저 인터페이스를 통해 호스트(또는, 사용자)에 제공할 수 있다. 호스트는 리스트의 오프로딩 기능들 중에서 원하는 오프로딩 기능을 선택하고, 선택된 오프로딩 기능들에 대응하는 알고리즘들 중에서 원하는 알고리즘을 선택할 수 있다.
단계 S130에서 연산 시스템(10)은 호스트로부터 선택된 오프로딩 기능 및 선택된 알고리즘을 가리키는 신호를 시스템 컨트롤러(120)로 송신할 수 있다.
단계 S140에서 시스템 컨트롤러는 단계 S130를 통해 수신된 신호 및 오프로딩 정보를 기반으로 호스트로부터 선택된 오프로딩 기능 및 선택된 알고리즘을 지원하는 장치를 탐색할 수 있다.
단계 S150에서 시스템 컨트롤러(120)는 단계 S140에서의 탐색 결과를 기반으로 생성된 적어도 하나의 플래그를 장치들(110, 130) 중 적어도 하나로 송신할 수 있다. 일 예로, 플래그는 장치들(110, 130)에서의 중복된 오프로딩 연산 동작들을 방지하기 위하여 다른 장치에서 오프로딩 연산 동작이 수행되었는지 여부를 가리킬 수 있다. 일 예로, 플래그는 호스트로부터 선택된 오프로딩 기능 및 선택된 알고리즘을 더 가리킬 수 있다. 일 예로, 플래그는 장치들(110, 130)에 특정 오프로딩 연산 동작을 수행할 때에 특정 동작 수행이 불필요한지 여부를 더 가리킬 수 있다.
도 3a 및 도 3b는 도 2의 단계 S150의 구체적인 실시예들을 설명하기 위한 순서도이다. 도 3a 및 도 3b에서는 이해를 돕기 위해 도 2가 더 참조된다.
도 3a를 참조하면, 도 2의 단계 S140에 후속하여 단계 S151a에서 시스템 컨트롤러(120)는 탐색된 장치가 복수 개인지 여부를 판별할 수 있다.
단계 S151a가 'YES'인 때에, 단계 S152a를 후속하여 시스템 컨트롤러(120)는 복수의 탐색된 장치들 중 어느 하나에서 오프로딩 연산 동작이 수행되도록 관리 동작을 수행할 수 있다. 구체적으로, 탐색된 장치들 중 어느 하나의 장치가 오프로딩 연산 동작을 수행한 때에, 시스템 컨트롤러(120)는 오프로딩 연산 동작이 수행되었음을 가리키는 플래그를 생성하여 다른 장치들 중 적어도 하나에 송신할 수 있다.
단계 S151a가 'NO'인 때에, 단계 S153a를 후속하여 시스템 컨트롤러(120)는 탐색된 장치에서 오프로딩 연산 동작이 수행되도록 관리 동작을 수행할 수 있다. 구체적으로, 탐색된 장치에 오프로딩 연산 동작이 수행되지 않았음을 가리키는 플래그를 생성하여 탐색된 장치로 송신할 수 있다.
이후, 도 2의 단계 S160이 후속될 수 있다.
도 3b를 더 참조하면, 도 2의 단계 S140에 후속하여 단계 S151b에서 시스템 컨트롤러(120)는 탐색된 장치가 복수 개인지 여부를 판별할 수 있다.
단계 S151b가 'YES'인 때에, 단계 S152b를 후속하여 시스템 컨트롤러(120)는 복수의 탐색된 장치들 중 어느 하나를 선택할 수 있다. 구체적으로, 복수의 탐색된 장치들에 네트워크 인터페이스 장치(110) 및 연산 저장 장치를 포함하는 때에, 시스템 컨트롤러(120)는 네트워크 인터페이스 장치(110)를 선택하거나, 연산 저장 장치를 선택할 수 있다.
단계 S153b에서 시스템 컨트롤러(120)는 선택된 장치에서 오프로딩 연산 동작이 수행되도록 제어할 수 있다. 또한, 시스템 컨트롤러(120)는 선택된 장치에서만 오프로딩 연산 동작이 수행되도록 플래그를 생성하여 선택되지 않은 적어도 하나의 장치로 송신할 수 있다.
단계 S151b가 'NO'인 때에, 단계 S154b를 후속하여 시스템 컨트롤러(120)는 탐색된 장치에서 오프로딩 연산 동작이 수행되도록 관리 동작을 수행할 수 있다.
이후, 도 2의 단계 S160이 후속될 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 오프로딩 기능들을 설명하기 위한 테이블도이다.
도 4의 제1 테이블(TB_1)을 참조하면, 오프로딩 기능들은 스캔 & 필터 오프로딩 기능, 압축/해제 오프로딩 기능, 암호화/복호화 오프로딩 기능, 기계 학습 오프로딩 기능 및 인코딩/디코딩 오프로딩 기능 중 적어도 하나를 포함할 수 있다.
도 2의 장치들(110, 130)은 제1 테이블(TB_1)의 오프로딩 기능들 중 적어도 하나를 지원할 수 있다. 또한, 오프로딩 기능들 각각에 대응하는 알고리즘들이 존재할 수 있으며, 도 2의 장치들(110, 130) 각각은 지원하는 오프로딩 기능에 대응하는 알고리즘들 중에서 적어도 하나를 지원할 수 있다.
도 5 내지 도 10은 호스트에서 암호화 오프로딩 기능을 선택하여 도 2의 저장 시스템(100)에서 암호화 오프로딩 기능이 활성화되고, 오프로딩 연산 동작으로서 암호화 동작이 수행되는 것을 전제한 실시예들이다. 도 11 내지 도 16은 호스트에서 암호화 오프로딩 기능 및 기계 학습 오프로딩 기능을 선택하여 도 2의 저장 시스템(100)에서 암호화 오프로딩 기능 및 기계 학습 오프로딩 기능이 활성화되고, 오프로딩 연산 동작으로서 암호화 동작 및 기계 학습 동작이 수행되는 것을 전제한 실시예들이다.
도 5는 본 개시의 예시적 실시예에 따른 저장 시스템(200)을 나타내는 블록도이다.
도 5를 참조하면, 저장 시스템(200)은 네트워크 인터페이스 장치(210), 시스템 컨트롤러(220), PCIe(peripheral component interconnect express) 스위치 회로(240) 및 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)을 포함할 수 있다.
네트워크 인터페이스 장치(210)는 암호화 오프로딩 기능 및 이에 대응하는 제1 알고리즘들을 지원하는 제1 연산 회로(211)를 포함할 수 있다. 제1 연산 저장 장치(230_1)는 암호화 오프로딩 기능 및 이에 대응하는 제2 암호화 알고리즘들을 지원하는 제2 연산 회로(231_1)를 포함할 수 있다. 제2 연산 저장 장치(230_2)는 암호화 오프로딩 기능 및 이에 대응하는 제3 암호화 알고리즘들을 지원하는 제3 연산 회로(232_2)를 포함할 수 있다. 제3 연산 저장 장치(230_3)는 암호화 오프로딩 기능 및 이에 대응하는 제4 암호화 알고리즘들을 지원하는 제4 연산 회로(231_3)를 포함할 수 있다. 또한, 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3) 각각은 비휘발성 메모리 장치들(232_1, 232_2, 232_3)을 포함할 수 있다.
예시적 실시예로, 시스템 컨트롤러(220)는 PCIe 스위치 회로(240)를 통해 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)과 연결될 수 있다. 시스템 컨트롤러(220)는 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)의 전반적인 동작을 제어할 수 있다.
예시적 실시예로, 시스템 컨트롤러(220)는 네트워크 인터페이스 장치(210) 및 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)로부터 제1 내지 제4 암호화 알고리즘들에 관한 정보들을 수집하여 오프로딩 정보를 생성할 수 있다.
예시적 실시예로, 시스템 컨트롤러(220)는 연산 시스템(20)으로부터 네트워크 인터페이스 장치(210)를 통해 호스트의 암호화 오프로딩 요청을 수신하고, 암호화 오프로딩 요청에 부합하는 암호화 알고리즘을 지원하는 장치를 오프로딩 정보를 기반으로 탐색할 수 있다.
예시적 실시예로, 시스템 컨트롤러(220)는 탐색 결과를 기반으로 호스트의 암호화 오프로딩 요청에 따른 암호화 동작이 네트워크 인터페이스 장치(210), 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)에서 중복되어 수행되지 않도록 관리 동작을 수행할 수 있다.
예시적 실시예로, 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)은 시스템 컨트롤러(220)로부터 수신된 플래그를 기반으로 PCIe 스위치 회로(240)로부터 수신된 데이터에 대한 암호화 동작을 수행하여 암호화된 데이터를 비휘발성 메모리 장치들(232_1, 232_2, 232_3)에 저장하거나, PCIe 스위치 회로(240)로부터 수신된 데이터를 그대로 비휘발성 메모리 장치들(232_1, 232_2, 232_3)에 저장할 수 있다.
도 6a는 본 개시의 예시적 실시예에 따라 저장 시스템에 포함된 장치들이 지원하는 암호화 알고리즘들을 설명하기 위한 테이블도이고, 도 6b는 본 개시의 예시적 실시예에 따라 사용자 인터페이스를 통해 제공되는 리스트를 설명하기 위한 도면이다. 도 6a 및 도 6b에서 서술된 암호화 알고리즘은 암호화 오프로딩 기능에 대응하는 알고리즘에 해당된다.
도 6a의 제2 테이블(TB_2)을 참조하면, 네트워크 인터페이스 장치(NID)는 제1 암호화 알고리즘(E_AL_1)을 지원하고, 제1 연산 저장 장치(CSD_1)는 제1 내지 제3 암호화 알고리즘(E_AL_1, E_AL_2, E_AL_3)을 지원하고, 제2 연산 저장 장치(CSD_2)는 제2 및 제3 암호화 알고리즘(E_AL_2, E_AL_3)을 지원하며, 제3 연산 저장 장치(CSD_3)는 제4 암호화 알고리즘(E_AL_4)을 지원할 수 있다. 즉, 네트워크 인터페이스 장치(NID)가 지원하는 암호화 알고리즘과 제1 연산 저장 장치(CSD_1)가 지원하는 암호화 알고리즘들에서 제1 암호화 알고리즘(E_AL_1)이 중복되고, 제1 및 제2 연산 저장 장치(CSD_1, CSD_2)가 지원하는 암호화 알고리즘들 중 제2 및 제3 암호화 알고리즘(E_AL_2, E_AL_3)이 중복될 수 있다.
예시적 실시예로, 시스템 컨트롤러는 제1 내지 제4 암호화 알고리즘들(E_AL_1~E_AL_4) 중 어느 하나에 기반된 암호화 오프로딩 동작이 중복되어 수행되지 않도록 관리 동작을 수행할 수 있다. 또한, 시스템 컨트롤러는 호스트의 암호화 오프로딩 요청에 부합하는 알고리즘을 지원하는 장치들(NID, CSD_1, CSD_2, CSD_3) 중 적어도 하나를 탐색하여 탐색된 장치에서 암호화 오프로딩 동작을 원활하게 수행되도록 관리 동작을 수행할 수 있다.
도 6b를 더 참조하면, 시스템 컨트롤러는 장치들(NID, CSD_1, CSD_2, CSD_3)에서 지원하는 제1 내지 제4 암호화 알고리즘들(E_AL_1~E_AL_4)에 관한 정보들을 수집하여 오프로딩 정보를 생성하고, 오프로딩 정보에 기반된 리스트를 유저 인터페이스를 통해 호스트에게 제공할 수 있다.
호스트는 제1 내지 제4 암호화 알고리즘들(E_AL_1~E_AL_4) 중 어느 하나를 선택하여 선택된 알고리즘에 따른 암호화 오프로딩 요청을 시스템 컨트롤러가 포함된 저장 시스템으로 송신할 수 있다.
도 7 내지 도 10은 본 개시의 예시적 실시예에 따른 저장 시스템(200)의 동작 방법을 설명하기 위한 순서도이다. 도 7 내지 도 10은 도 6a에서의 실시예를 중심으로 서술된다. 저장 시스템(200)은 네트워크 인터페이스 장치(210), 시스템 컨트롤러(220), 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)을 포함할 수 있다.
도 7을 참조하면, 단계 S200에서 연산 시스템(20)은 호스트로부터 선택된 제1 암호화 알고리즘을 가리키는 제1 신호 및 데이터를 네트워크 인터페이스 장치(210)로 송신할 수 있다.
단계 S201에서 네트워크 인터페이스 장치(210)는 제1 암호화 알고리즘(E_AL_1)을 기반으로 수신된 데이터에 대한 암호화 동작을 수행할 수 있다. 예시적 실시예로, 네트워크 인터페이스 장치(210)는 제1 신호가 가리키는 암호화 알고리즘과 네트워크 인터페이스 장치(210)에서 지원하는 제1 암호화 알고리즘(E_AL_1)과 일치하는지 여부를 확인하고, 일치함을 확인한 경우에 제1 암호화 알고리즘(E_AL_1)을 기반으로 수신된 데이터에 대한 암호화 동작을 수행할 수 있다.
단계 S202에서 네트워크 인터페이스 장치(210)는 제1 신호 및 암호화된 데이터를 시스템 컨트롤러(220)로 송신할 수 있다. 일부 실시예에서, 네트워크 인터페이스 장치(210)는 송신하는 데이터가 암호화되었음을 가리키는 별도의 신호를 시스템 컨트롤러(220)로 추가적으로 송신할 수 있다.
단계 S203에서 시스템 컨트롤러(220)는 제1 신호를 기반으로 제1 암호화 알고리즘(E_AL_1)을 지원하는 장치를 탐색할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 오프로딩 정보를 기반으로 제1 암호화 알고리즘(E_AL_1)을 지원하는 네트워크 인터페이스 장치(210) 및 제1 연산 저장 장치(230_1)를 탐색할 수 있다. 시스템 컨트롤러(220)는 탐색 결과를 기반으로 네트워크 인터페이스 장치(210)에서 제1 암호화 알고리즘(E_AL_1)을 기반으로 한 암호화 동작이 수행되었음을 인지할 수 있으며, 네트워크 인터페이스 장치(210)로부터 수신된 데이터는 암호화된 데이터인 것을 인지할 수 있다. 일부 실시예에서, 시스템 컨트롤러(220)는 네트워크 인터페이스 장치(210)로부터 수신된 별도의 신호를 기반으로 네트워크 인터페이스 장치(210)에서 암호화 동작이 수행되었음을 인지할 수 있다.
단계 S204에서 시스템 컨트롤러(220)는 제1 연산 저장 장치(230_1)로 암호화된 데이터 및 플래그를 송신할 수 있다. 플래그는 시스템 컨트롤러(220)로부터 수신된 데이터는 제1 암호화 알고리즘(E_AL_1)으로 암호화되었음을 가리킬 수 있다. 일부 실시예에서, 시스템 컨트롤러(220)는 다른 연산 저장 장치들(230_2, 230_3) 중 어느 하나로 암호화된 데이터 및 플래그를 송신할 수 있다.
단계 S205에서 제1 연산 저장 장치(230_1)는 플래그를 기반으로 암호화된 데이터에 대한 별도의 암호화 동작을 수행하지 않고, 그대로 저장할 수 있다. 예시적 실시예로, 제1 연산 저장 장치(230_1)는 암호화된 데이터를 제1 연산 저장 장치(230_1)에 포함된 비휘발성 메모리 장치들에 저장할 수 있다. 또한, 제1 연산 저장 장치(230_1)에 암호화된 데이터에 대한 리드 커맨드가 수신된 때에 제1 연산 저장 장치(230_1)는 암호화된 데이터를 그대로 시스템 컨트롤러(220)로 송신할 수 있다. 암호화된 데이터는 네트워크 인터페이스 장치(210)에서 복호화될 수 있다.
도 8을 더 참조하면, 단계 S210에서 연산 시스템(20)은 호스트로부터 선택된 제2 암호화 알고리즘(E_AL_2)을 가리키는 제2 신호 및 데이터를 네트워크 인터페이스 장치(210)로 송신할 수 있다.
단계 S211에서 네트워크 인터페이스 장치(210)는 제2 신호 및 데이터를 시스템 컨트롤러(220)로 송신할 수 있다. 예시적 실시예로, 네트워크 인터페이스 장치(210)는 제2 신호가 가리키는 암호화 알고리즘과 네트워크 인터페이스 장치(210)에서 지원하는 제1 암호화 알고리즘(E_AL_1)과 일치하는지 여부를 확인하고, 비일치함을 확인한 경우에 수신된 데이터를 시스템 컨트롤러(220)에 전달할 수 있다.
단계 S212에서 시스템 컨트롤러(220)는 제2 신호를 기반으로 제2 암호화 알고리즘(E_AL_2)을 지원하는 장치를 탐색할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 오프로딩 정보를 기반으로 제2 암호화 알고리즘(E_AL_2)을 지원하는 제1 및 제2 연산 저장 장치들(230_1, 230_2)을 탐색할 수 있다.
단계 S213에서 시스템 컨트롤러(220)는 제2 암호화 알고리즘(E_AL_2)을 지원하는 장치들 중 어느 하나를 선택할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 탐색된 제1 및 제2 연산 저장 장치들(230_1, 230_2) 중 제1 연산 저장 장치(230_1)를 선택할 수 있다.
단계 S214에서 시스템 컨트롤러(220)는 데이터 및 플래그를 제1 연산 저장 장치(230_1)로 송신할 수 있다. 플래그는 시스템 컨트롤러(220)로부터 수신된 데이터는 암호화되지 않았음을 가리킬 수 있다. 일부 실시예에서, 제1 연산 저장 장치(230_1)가 복수의 암호화 알고리즘들을 지원할 때에, 플래그는 제2 암호화 알고리즘(E_AL_2)을 추가적으로 가리킬 수 있다.
단계 S215에서 제1 연산 저장 장치(230_1)는 제2 암호화 알고리즘(E_AL_2) 및 플래그를 기반으로 암호화 동작을 수행할 수 있다. 예시적 실시예로, 제1 연산 저장 장치(230_1)는 플래그를 참조하여 수신된 데이터에 대한 제2 암호화 알고리즘(E_AL_2)을 이용한 암호화 동작이 필요함을 인지할 수 있으며, 제1 연산 저장 장치(230_1)는 수신된 데이터를 제2 암호화 알고리즘(E_AL_2)으로 암호화할 수 있다.
단계 S216에서 제1 연산 저장 장치(230_1)는 암호화된 데이터를 저장할 수 있다. 예시적 실시예로, 제1 연산 저장 장치(230_1)는 암호화된 데이터를 제1 연산 저장 장치(230_1)에 포함된 비휘발성 메모리 장치들에 저장할 수 있다. 또한, 제1 연산 저장 장치(230_1)에 암호화된 데이터에 대한 리드 커맨드가 수신된 때에 제1 연산 저장 장치(230_1)는 암호화된 데이터를 복호화하여 시스템 컨트롤러(220)로 송신할 수 있다.
도 9를 더 참조하면, 단계 S220에서 연산 시스템(20)은 호스트로부터 선택된 제3 암호화 알고리즘(E_AL_3)을 가리키는 제3 신호 및 데이터를 네트워크 인터페이스 장치(210)로 송신할 수 있다.
단계 S221에서 네트워크 인터페이스 장치(210)는 제3 신호 및 데이터를 시스템 컨트롤러(220)로 송신할 수 있다. 예시적 실시예로, 네트워크 인터페이스 장치(210)는 제3 신호가 가리키는 암호화 알고리즘과 네트워크 인터페이스 장치(210)에서 지원하는 제1 암호화 알고리즘(E_AL_1)과 일치하는지 여부를 확인하고, 비일치함을 확인한 경우에 수신된 데이터를 시스템 컨트롤러(220)에 전달할 수 있다.
단계 S232에서 시스템 컨트롤러(220)는 제3 신호를 기반으로 제3 암호화 알고리즘(E_AL_3)을 지원하는 장치를 탐색할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 오프로딩 정보를 기반으로 제3 암호화 알고리즘(E_AL_3)을 지원하는 제1 및 제2 연산 저장 장치들(230_1, 230_2)을 탐색할 수 있다. 한편, 제1 및 제2 연산 저장 장치들(230_1, 230_2)은 상호 연관된 RAID(redundant array of independent disks)로 구현되고, 제3 암호화 알고리즘(E_AL_3)은 RAID의 데이터 저장 방식에 적합한 것임을 전제하여 실시예가 서술된다.
단계 S223에서 시스템 컨트롤러(220)는 제1 연산 저장 장치(230_1)로 데이터 및 플래그를 송신할 수 있다. 단계 S224에서 시스템 컨트롤러(220)는 제2 연산 저장 장치(230_2)로 데이터 및 플래그를 송신할 수 있다. 플래그는 시스템 컨트롤러(220)로부터 수신된 데이터는 암호화되지 않았음을 가리킬 수 있다. 일부 실시예에서, 제1 및 제2 연산 저장 장치들(230_1, 230_2)에서 복수의 암호화 알고리즘들을 지원할 때에, 플래그는 제3 암호화 알고리즘(E_AL_3)을 추가적으로 가리킬 수 있다.
단계 S225에서 제1 및 제2 연산 저장 장치들(230_1, 230_2)은 제3 암호화 알고리즘 및 플래그를 기반으로 수신된 데이터인 RAID 데이터를 암호화할 수 있다.
단계 S226에서 제1 및 제2 연산 저장 장치들(230_1, 230_2)은 암호화된 RAID 데이터를 저장할 수 있다.
도 10을 더 참조하면, 단계 S230에서 연산 시스템(20)은 호스트로부터 선택된 제4 암호화 알고리즘(E_AL_4)을 가리키는 제4 신호 및 데이터를 네트워크 인터페이스 장치(210)로 송신할 수 있다.
단계 S231에서 네트워크 인터페이스 장치(210)는 제4 신호 및 데이터를 시스템 컨트롤러(220)로 송신할 수 있다. 예시적 실시예로, 네트워크 인터페이스 장치(210)는 제4 신호가 가리키는 암호화 알고리즘과 네트워크 인터페이스 장치(210)에서 지원하는 제1 암호화 알고리즘(E_AL_1)과 일치하는지 여부를 확인하고, 비일치함을 확인한 경우에 수신된 데이터를 시스템 컨트롤러(220)에 전달할 수 있다.
단계 S232에서 시스템 컨트롤러(220)는 제4 신호를 기반으로 제4 암호화 알고리즘(E_AL_4)을 지원하는 장치를 탐색할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 오프로딩 정보를 기반으로 제4 암호화 알고리즘(E_AL_4)을 지원하는 제3 연산 저장 장치(230_3)를 탐색할 수 있다.
단계 S233에서 시스템 컨트롤러(220)는 데이터 및 플래그를 제3 연산 저장 장치(230_3)로 송신할 수 있다. 플래그는 시스템 컨트롤러(220)로부터 수신된 데이터는 암호화되지 않았음을 가리킬 수 있다.
단계 S234에서 제3 연산 저장 장치(230_3)는 제4 암호화 알고리즘(E_AL_4) 및 플래그를 기반으로 암호화 동작을 수행할 수 있다. 예시적 실시예로, 제3 연산 저장 장치(230_3)는 플래그를 참조하여 데이터에 대한 제4 암호화 알고리즘(E_AL_4)을 이용한 암호화 동작이 필요함을 인지할 수 있으며, 제3 연산 저장 장치(230_3)는 수신된 데이터를 제4 암호화 알고리즘(E_AL_4)으로 암호화할 수 있다.
단계 S235에서 제3 연산 저장 장치(230_3)는 암호화된 데이터를 저장할 수 있다. 예시적 실시예로, 제3 연산 저장 장치(230_3)는 암호화된 데이터를 제3 연산 저장 장치(230_3)에 포함된 비휘발성 메모리 장치들에 저장할 수 있다. 또한, 제3 연산 저장 장치(230_3)에 암호화된 데이터에 대한 리드 커맨드가 수신된 때에 연산 저장 장치(230_3)는 암호화된 데이터를 복호화하여 시스템 컨트롤러(220)로 송신할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 오프로딩 기능을 지원하는 도메인을 설명하기 위한 도면이다. 저장 시스템은 네트워크 인터페이스 장치(210), 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)을 포함할 수 있다.
도 11을 참조하면, 암호화 오프로딩 기능을 지원하는 도메인 A는 네트워크 인터페이스 장치(210), 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)을 포함할 수 있다. 또한, 기계 학습 오프로딩 기능을 지원하는 도메인 B는 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)을 포함할 수 있다.
저장 시스템에 포함된 장치들 중 일부는 지원하는 오프로딩 기능이 상이할 수 있다. 즉, 도 11에서와 같이 네트워크 인터페이스 장치(210)는 기계 학습 오프로딩 기능을 지원하지 못할 수 있다.
이하 실시예들에서, 저장 시스템에서의 기계 학습 오프로딩 기능이 호스트로부터 선택되어 활성화된 때에, 저장 시스템의 기계 학습 동작이 효율적으로 수행되도록 저장 시스템의 암호화 동작에서 기계 학습 오프로딩 기능에 적합한 암호화 알고리즘이 이용되는 것을 전제한다.
도 12는 본 개시의 예시적 실시예에 따른 저장 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 12를 참조하면, 단계 S300에서 저장 시스템은 호스트로부터 기계 학습 오프로딩 기능 및 암호화 오프로딩 기능이 선택됨을 확인할 수 있다.
단계 S310에서 저장 시스템은 복수의 암호화 알고리즘들 중 기계 학습에 적합한 암호화 알고리즘들을 선별하여 리스트를 생성할 수 있다. 예시적 실시예로, 저장 시스템은 오프로딩 정보를 기반으로 저장 시스템에 포함된 장치들이 지원하는 암호화 알고리즘들 중 기계 학습에 적합한 암호화 알고리즘들을 추출(sorting)하여 리스트를 생성할 수 있다.
단계 S320에서 저장 시스템은 단계 S310에서 생성된 리스트를 호스트에 제공할 수 있다.
일부 실시예에서, 저장 시스템은 기계 학습 오프로딩 기능이 호스트로부터 선택된 경우에 암호화 오프로딩 기능을 적용할지 여부를 호스트가 사용자 인터페이스를 통해 선택할 수 있도록 지원할 수 있다. 저장 시스템은 호스트로부터 기계 학습 오프로딩 기능이 선택되고, 암호화 오프로딩 기능은 선택되지 않은 때에 복수의 기계 학습 알고리즘들에 관한 리스트를 생성하여 호스트에 제공하고, 이를 통해, 호스트는 복수의 기계 학습 알고리즘들 중 어느 하나를 선택할 수 있다.도 13a는 본 개시의 예시적 실시예에 따라 저장 시스템에 포함된 장치들이 지원하는 암호화 알고리즘들을 설명하기 위한 테이블도이고, 도 13b는 본 개시의 예시적 실시예에 따라 사용자 인터페이스를 통해 제공되는 리스트를 설명하기 위한 도면이다. 도 13a 및 도 13b에서 서술된 암호화 알고리즘은 암호화 오프로딩 기능에 대응하고, 기계 학습에 적합한 알고리즘에 해당된다. 도 13a 및 도 13b는 저장 시스템에 포함된 장치들이 지원하는 암호화 알고리즘들 중에서 기계 학습에 적합한 알고리즘들이 추출된 예일 수 있다. 일 예로, 기계 학습에 적합한 암호화 알고리즘은 동형 암호(homomorphic encryption) 알고리즘일 수 있다. 동형 암호 알고리즘을 기반으로 암호화된 데이터에 대해서는 복호화없이 기계 학습 동작이 수행될 수 있다.
도 13a의 제3 테이블(TB_3)을 참조하면, 네트워크 인터페이스 장치(NID)는 제5 암호화 알고리즘(HE_AL_1)을 지원하고, 제1 연산 저장 장치(CSD_1)는 제5 및 제6 암호화 알고리즘들(HE_AL_1, HE_AL_2)을 지원하고, 제2 연산 저장 장치(CSD_2)는 제6 암호화 알고리즘(HE_AL_2)을 지원하며, 제3 연산 저장 장치(CSD_3)는 제7 암호화 알고리즘(HE_AL_3)을 지원할 수 있다. 즉, 네트워크 인터페이스 장치(NID)가 지원하는 암호화 알고리즘과 제1 연산 저장 장치(CSD_1)가 지원하는 암호화 알고리즘들에서 제5 암호화 알고리즘(HE_AL_1)이 중복되고, 제1 및 제2 연산 저장 장치(CSD_1, CSD_2)가 지원하는 암호화 알고리즘들 중 제6 암호화 알고리즘(HE_AL_2)이 중복될 수 있다.
예시적 실시예로, 시스템 컨트롤러는 제5 내지 제7 암호화 알고리즘들(HE_AL_1~HE_AL_3) 중 어느 하나에 기반된 암호화 오프로딩 동작이 중복되어 수행되지 않도록 관리 동작을 수행할 수 있다. 또한, 시스템 컨트롤러는 호스트의 암호화 오프로딩 요청에 부합하는 알고리즘을 지원하는 장치들(NID, CSD_1, CSD_2, CSD_3) 중 적어도 하나를 탐색하여 탐색된 장치에서 암호화 오프로딩 동작을 원활하게 수행되도록 관리 동작을 수행할 수 있다.
도 13b를 더 참조하면, 시스템 컨트롤러는 장치들(NID, CSD_1, CSD_2, CSD_3)에서 지원하는 암호화 알고리즘들에 관한 오프로딩 정보로부터 제5 내지 제7 암호화 알고리즘들(HE_AL_1~HE_AL_3)을 추출하여 리스트를 생성하고, 유저 인터페이스를 통해 호스트에게 제공할 수 있다.
호스트는 제5 내지 제7 암호화 알고리즘들(HE_AL_1~HE_AL_3) 중 어느 하나를 선택하여 선택된 알고리즘에 따른 암호화 오프로딩 요청을 시스템 컨트롤러가 포함된 저장 시스템으로 송신할 수 있다.
도 14 내지 도 16은 본 개시의 예시적 실시예에 따른 저장 시스템(200)의 동작 방법을 설명하기 위한 순서도이다. 도 14 내지 도 16은 도 13a에서의 실시예를 중심으로 서술된다. 저장 시스템(200)은 네트워크 인터페이스 장치(210), 시스템 컨트롤러(220), 제1 내지 제3 연산 저장 장치들(230_1, 230_2, 230_3)을 포함할 수 있다.
도 14를 참조하면, 단계 S400에서 연산 시스템(20)은 호스트로부터 선택된 제5 암호화 알고리즘(HE_AL_1)을 가리키는 제5 신호 및 데이터를 네트워크 인터페이스 장치(210)로 송신할 수 있다.
단계 S401에서 네트워크 인터페이스 장치(210)는 제5 암호화 알고리즘(HE_AL_1)을 기반으로 수신된 데이터에 대한 암호화 동작을 수행할 수 있다. 예시적 실시예로, 네트워크 인터페이스 장치(210)는 제5 신호가 가리키는 암호화 알고리즘과 네트워크 인터페이스 장치(210)에서 지원하는 제5 암호화 알고리즘(HE_AL_1)과 일치하는지 여부를 확인하고, 일치함을 확인한 경우에 제5 암호화 알고리즘(HE_AL_1)을 기반으로 수신된 데이터에 대한 암호화 동작을 수행할 수 있다.
단계 S402에서 네트워크 인터페이스 장치(210)는 제5 신호 및 암호화된 데이터를 시스템 컨트롤러(220)로 송신할 수 있다. 일부 실시예에서, 네트워크 인터페이스 장치(210)는 송신하는 데이터가 암호화되었음을 가리키는 별도의 신호를 시스템 컨트롤러(220)로 추가적으로 송신할 수 있다.
단계 S403에서 시스템 컨트롤러(220)는 제5 신호를 기반으로 제5 암호화 알고리즘(HE_AL_1)을 지원하는 장치를 탐색할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 오프로딩 정보를 기반으로 제5 암호화 알고리즘(HE_AL_1)을 지원하는 네트워크 인터페이스 장치(210) 및 제1 연산 저장 장치(230_1)를 탐색할 수 있다. 시스템 컨트롤러(220)는 탐색 결과를 기반으로 네트워크 인터페이스 장치(210)에서 제5 암호화 알고리즘(HE_AL_1)을 기반으로 한 암호화 동작이 수행되었음을 인지할 수 있으며, 네트워크 인터페이스 장치(210)로부터 수신된 데이터는 암호화된 데이터인 것을 인지할 수 있다. 일부 실시예에서, 시스템 컨트롤러(220)는 네트워크 인터페이스 장치(210)로부터 수신된 별도의 신호를 기반으로 네트워크 인터페이스 장치(210)에서 암호화 동작이 수행되었음을 인지할 수 있다.
단계 S404에서 시스템 컨트롤러(220)는 제1 연산 저장 장치(230_1)로 암호화된 데이터, 제1 및 제2 플래그를 송신할 수 있다. 제1 플래그는 시스템 컨트롤러(220)로부터 수신된 데이터는 제5 암호화 알고리즘(HE_AL_1)으로 암호화되었음을 가리킬 수 있다. 제2 플래그는 기계 학습 동작 시에 암호화된 데이터에 대한 복호화가 불필요함을 가리킬 수 있다.
단계 S405에서 제1 연산 저장 장치(230_1)는 제1 플래그를 기반으로 암호화된 데이터에 대한 별도의 암호화 동작을 수행하지 않고, 그대로 저장할 수 있다.
단계 S406에서 제1 연산 저장 장치(230_1)는 제2 플래그를 기반으로 기계 학습을 수행할 수 있다. 예시적 실시예로, 제1 연산 저장 장치(230_1)는 제2 플래그를 기반으로 암호화된 데이터에 대해서 복호화없이 기계 학습 동작을 수행하여 결과 데이터를 생성할 수 있다. 제1 연산 저장 장치(230_1)는 결과 데이터를 저장할 수 있다. 제1 연산 저장 장치(230_1)에 결과 데이터에 대한 리드 커맨드가 수신된 때에 제1 연산 저장 장치(230_1)는 결과 데이터를 그대로 시스템 컨트롤러(220)로 송신할 수 있다. 결과 데이터는 네트워크 인터페이스 장치(210)에서 복호화될 수 있다. 한편, 단계 S406는 호스트로부터의 기계 학습 요청에 응답하여 수행될 수 있다.
도 15를 더 참조하면, 단계 S410에서 연산 시스템(20)은 호스트로부터 선택된 제6 암호화 알고리즘(HE_AL_2)을 가리키는 제6 신호 및 데이터를 네트워크 인터페이스 장치(210)로 송신할 수 있다.
단계 S411에서 네트워크 인터페이스 장치(210)는 제6 신호 및 데이터를 시스템 컨트롤러(220)로 송신할 수 있다. 예시적 실시예로, 네트워크 인터페이스 장치(210)는 제6 신호가 가리키는 암호화 알고리즘과 네트워크 인터페이스 장치(210)에서 지원하는 제5 암호화 알고리즘(HE_AL_1)과 일치하는지 여부를 확인하고, 비일치함을 확인한 경우에 수신된 데이터를 시스템 컨트롤러(220)에 전달할 수 있다.
단계 S412에서 시스템 컨트롤러(220)는 제6 신호를 기반으로 제6 암호화 알고리즘(HE_AL_2)을 지원하는 장치를 탐색할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 오프로딩 정보를 기반으로 제6 암호화 알고리즘(HE_AL_2)을 지원하는 제1 및 제2 연산 저장 장치들(230_1, 230_2)을 탐색할 수 있다.
단계 S413에서 시스템 컨트롤러(220)는 제6 암호화 알고리즘(HE_AL_2)을 지원하는 장치들 중 어느 하나를 선택할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 탐색된 제1 및 제2 연산 저장 장치들(230_1, 230_2) 중 제1 연산 저장 장치(230_1)를 선택할 수 있다.
단계 S414에서 시스템 컨트롤러(220)는 데이터, 제1 및 제2 플래그를 제1 연산 저장 장치(230_1)로 송신할 수 있다. 제1 플래그는 시스템 컨트롤러(220)로부터 수신된 데이터는 암호화되지 않았음을 가리킬 수 있다. 일부 실시예에서, 제1 연산 저정 장치(230_1)가 복수의 암호화 알고리즘들을 지원하는 때에, 제1 플래그는 제6 암호화 알고리즘(HE_AL_2)을 추가적으로 가리킬 수 있다. 제2 플래그는 기계 학습 동작 시에 암호화된 데이터에 대한 복호화가 불필요함을 가리킬 수 있다.
단계 S415에서 제1 연산 저장 장치(230_1)는 제6 암호화 알고리즘(HE_AL_2) 및 제1 플래그를 기반으로 암호화 동작을 수행할 수 있다. 예시적 실시예로, 제1 연산 저장 장치(230_1)는 제1 플래그를 참조하여 수신된 데이터에 대한 제6 암호화 알고리즘(HE_AL_2)을 이용한 암호화 동작이 필요함을 인지할 수 있으며, 제1 연산 저장 장치(230_1)는 수신된 데이터를 제6 암호화 알고리즘(HE_AL_2)으로 암호화할 수 있다.
단계 S416에서 제1 연산 저장 장치(230_1)는 암호화된 데이터를 저장할 수 있다. 예시적 실시예로, 제1 연산 저장 장치(230_1)는 암호화된 데이터를 제1 연산 저장 장치(230_1)에 포함된 비휘발성 메모리 장치들에 저장할 수 있다.
단계 S417에서 제1 연산 저장 장치(230_1)는 제2 플래그를 기반으로 저장된 암호화된 데이터에 대하여 기계 학습 동작을 수행할 수 있다. 예시적 실시예로, 제1 연산 저장 장치(230_1)는 제2 플래그를 참조하여 암호화된 데이터에 대해서 복호화없이 기계 학습 동작을 수행하여 결과 데이터를 생성할 수 있다. 제1 연산 저장 장치(230_1)는 결과 데이터를 저장할 수 있다. 제1 연산 저장 장치(230_1)에 결과 데이터에 대한 리드 커맨드가 수신된 때에 제1 연산 저장 장치(230_1)는 결과 데이터를 복호화하여 시스템 컨트롤러(220)로 송신할 수 있다.
도 16을 더 참조하면, 단계 S420에서 연산 시스템(20)은 호스트로부터 선택된 제7 암호화 알고리즘(HE_AL_3)을 가리키는 제7 신호 및 데이터를 네트워크 인터페이스 장치(210)로 송신할 수 있다.
단계 S421에서 네트워크 인터페이스 장치(210)는 제7 신호 및 데이터를 시스템 컨트롤러(220)로 송신할 수 있다. 예시적 실시예로, 네트워크 인터페이스 장치(210)는 제7 신호가 가리키는 암호화 알고리즘과 네트워크 인터페이스 장치(210)에서 지원하는 제7 암호화 알고리즘(HE_AL_3)과 일치하는지 여부를 확인하고, 비일치함을 확인한 경우에 수신된 데이터를 시스템 컨트롤러(220)에 전달할 수 있다.
단계 S422에서 시스템 컨트롤러(220)는 제7 신호를 기반으로 제7 암호화 알고리즘(HE_AL_3)을 지원하는 장치를 탐색할 수 있다. 예시적 실시예로, 시스템 컨트롤러(220)는 오프로딩 정보를 기반으로 제7 암호화 알고리즘(HE_AL_3)을 지원하는 제3 연산 저장 장치(230_3)를 탐색할 수 있다.
단계 S423에서 시스템 컨트롤러(220)는 데이터, 제1 및 제2 플래그를 제3 연산 저장 장치(230_3)로 송신할 수 있다. 제1 플래그는 시스템 컨트롤러(220)로부터 수신된 데이터는 암호화되지 않았음을 가리킬 수 있다. 제2 플래그는 기계 학습 동작 시에 암호화된 데이터에 대한 복호화가 불필요함을 가리킬 수 있다.
단계 S424에서 제3 연산 저장 장치(230_3)는 제7 암호화 알고리즘(HE_AL_3) 및 제1 플래그를 기반으로 암호화 동작을 수행할 수 있다. 예시적 실시예로, 제3 연산 저장 장치(230_3)는 제1 플래그를 참조하여 수신된 데이터에 대한 제7 암호화 알고리즘(HE_AL_3)을 이용한 암호화 동작이 필요함을 인지할 수 있으며, 제3 연산 저장 장치(230_3)는 제7 암호화 알고리즘(HE_AL_3)으로 수신된 데이터를 암호화할 수 있다.
단계 S425에서 제3 연산 저장 장치(230_3)는 암호화된 데이터를 저장할 수 있다. 예시적 실시예로, 제3 연산 저장 장치(230_3)는 암호화된 데이터를 제3 연산 저장 장치(230_3)에 포함된 비휘발성 메모리 장치들에 저장할 수 있다.
단계 S426에서 제3 연산 저장 장치(230_3)는 제2 플래그를 기반으로 저장된 암호화된 데이터에 대하여 기계 학습 동작을 수행할 수 있다. 예시적 실시예로, 제3 연산 저장 장치(230_3)는 제2 플래그를 참조하여 암호화된 데이터에 대해서 복호화없이 기계 학습 동작을 수행하여 결과 데이터를 생성할 수 있다. 제3 연산 저장 장치(230_3)는 결과 데이터를 저장할 수 있다.
도 17은 본 개시의 예시적 실시예에 따른 전자 시스템(1000)을 나타내는 블록도이다.
도 17을 참조하면, 전자 시스템(1000)은 메인 프로세서(1100), 워킹 메모리(1200), 저장 시스템(1300), 통신 블록(1400), 유저 인터페이스(1500) 및 버스(1600)를 포함할 수 있다. 예로서, 전자 시스템(1000)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console), 워크스테이션, 하나 이상의 서버, 전기 자동차, 가전기기, 의료기기 등과 같은 전자 장치들 중 하나일 수 있다.
메인 프로세서(1100)는 전자 시스템(1000)의 전반적인 동작들을 제어할 수 있다. 예로서, 메인 프로세서(1100)는 하나 이상의 프로세서 코어를 포함하는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서로 구현될 수 있다.
워킹 메모리(1200)는 전자 시스템(1000)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 워킹 메모리(1200)는 메인 프로세서(1100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 예로서, 워킹 메모리(1200)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
저장 시스템(1300)은 복수의 장치들을 포함할 수 있다. 일 예로서, 저장 시스템(1300)은 저장 장치들(1310, 1320, 1330), 네트워크 인터페이스 장치(1340) 및 시스템 컨트롤러(1350)를 포함할 수 있다. 도 17은 3개의 저장 장치들(1310, 1320, 1330)을 보여주지만, 저장 시스템(1300)에 포함되는 저장 장치들의 개수는 전자 시스템(1000)의 요구사항(Requirement)에 적합하도록 다양하게 변경 또는 수정될 수 있다.
각 저장 장치(1310, 1320, 1330)는 전력 공급에 관계없이 데이터를 저장할 수 있다. 일 예로서, 각 저장 장치(1310, 1320, 1330)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 비휘발성 메모리를 포함할 수 있다. 일 예로서, 각 저장 장치(1310, 1320, 1330)는 SSD(Solid State Drive), 카드 저장, 임베디드 (Embedded) 저장 등과 같은 저장 매체를 포함할 수 있다.
저장 장치들(1310, 1320, 1330) 및 네트워크 인터페이스 장치(1340)는 오프로딩 연산 동작을 수행하는 연산 회로를 포함하여 메인 프로세서(1100)의 로드를 분담할 수 있다.
도 1 내지 도 16에서 전술된 실시예들에 따라 시스템 컨트롤러(1350)는 저장 장치들(1310, 1320, 1330) 및 네트워크 인터페이스 장치(1340)에서 지원하는 오프로딩 기능들 및 이에 대응하는 알고리즘들에 관한 오프로딩 정보를 기반으로 메인 프로세서(1100)로부터 요청되는 오프로딩 동작이 중복되지 않도록 관리 동작을 수행할 수 있다.
통신 블록(1400)은 전자 시스템(1000)의 외부 장치/시스템과 통신하기 위해 다양한 무선/유선 통신 규약 중 적어도 하나를 지원할 수 있다. 유저 인터페이스(1500)는 사용자와 전자 시스템(1000) 사이의 통신을 중재하기 위해 다양한 입력/출력 인터페이스를 포함할 수 있다.
버스(1600)는 전자 시스템(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 전자 시스템(1000)의 구성 요소들은 버스(1600)의 버스 포맷에 따라 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), SATA(Serial Advanced Technology Attachment), SAS(Serial Attached SCSI), NVMe(Nonvolatile Memory Express), UFS(Universal Flash Storage), DDR(Double Data Rate), LPDDR(Low Power DDR) 등의 다양한 인터페이스 규약 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 호스트로서 동작할 수 있다. 메인 프로세서(1100)는 저장 장치들(1310, 1320, 1330) 각각과 통신을 수행함으로써, 사용자에게 서비스를 제공할 수 있다. 예로서, 메인 프로세서(1100)는 저장 장치들(1310, 1320, 1330)에 데이터를 저장할 수 있고, 저장 장치들(1310, 1320, 1330)에 저장된 데이터를 리드할 수 있다.
도 18은 본 개시의 예시적 실시예에 따른 데이터베이스 시스템(2000)을 나타내는 블록도이다.
도 18을 참조하면, 데이터베이스 시스템(2000)은 장치(2010) 및 오프로딩 엔진(2020)을 포함할 수 있다. 일부 실시예에서, 오프로딩 엔진(2020)은 장치(2010)의 일부이거나 장치(2010)와 연결될 수 있다. 장치(2010)는 중앙 처리 장치(CPU; Central Processing Unit), 메인 메모리 및 영구 저장 장치(예컨대, 하드 드라이브 또는 SSD(Solid State Drive))를 포함하는 컴퓨터 또는 서버일 수 있다. 오프로딩 엔진(2020)은 영구 메모리를 포함하거나 또는 영구 메모리에 연결될 수 있다. 영구 메모리는 속도, 용량, 및 지속성의 균형을 유지하는 메모리의 한 종류일 수 있다. 오프로딩 엔진(2020)은 프로세싱 회로 및 메모리를 포함 할 수 있다. 오프로딩 엔진(2020)은(메모리 채널을 통해) NVDIMM-p 및 PCIe를 포함하는 여러 인터페이스들 중 하나를 통해 장치(2010)에 연결될 수 있다.
장치(2010)는 실행되는 쿼리를 포함하는 다양한 데이터베이스 처리 동작들을 수행할 수 있다.
오프로딩 엔진(2020)은 장치(2010)를 대신하여 오프로딩 동작들(예를 들면, 데이터베이스 처리 동작들)을 수행함으로써 장치(2010)의 부하를 경감시킬 수 있다. 오프로딩 엔진(2020)은 시스템 컨트롤러(2021)를 포함할 수 있다.
도 1 내지 도 16에서 전술된 실시예들에 따라 시스템 컨트롤러(2021)는 오프로딩 엔진(2020) 내의 구성들에서 지원하는 오프로딩 기능들 및 이에 대응하는 알고리즘들에 관한 오프로딩 정보를 기반으로 장치(2010)로부터 요청되는 오프로딩 동작이 중복되지 않도록 관리 동작을 수행할 수 있다.
일부 실시예에서, 오프로딩 엔진(2020)은 장치(2010)를 대신하여 처리 동작들을 수행하는데에 장치(2010)의 CPU의 범용 하드웨어보다 적은 에너지를 요구할 수 있도록 특수 하드웨어로 설계될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 제1 오프로딩 기능들 및 이들에 대응하는 제1 알고리즘들을 지원하도록 구성된 제1 연산 회로가 포함되고, 호스트와 통신 인터페이스를 수행하도록 구성된 네트워크 인터페이스 장치;
    제2 오프로딩 기능들 및 이들에 대응하는 제2 알고리즘들을 지원하도록 구성된 제2 연산 회로가 포함되고, 상기 호스트로부터 수신된 데이터를 저장하도록 구성된 연산 저장 장치; 및
    상기 호스트의 오프로딩 요청에 응답하여 상기 제1 오프로딩 기능들, 상기 제2 오프로딩 기능들, 상기 제1 알고리즘들 및 상기 제2 알고리즘들에 관한 오프로딩 정보를 기반으로 상기 제1 및 제2 연산 회로들 중 어느 하나에 의해 오프로딩 연산 동작이 수행되도록 관리 동작을 수행하도록 구성된 시스템 컨트롤러를 포함하는 저장 시스템.
  2. 제1항에 있어서,
    상기 시스템 컨트롤러는,
    상기 저장 시스템에서 지원되는 오프로딩 기능들 및 지원되는 알고리즘들을 가리키는 리스트를 상기 네트워크 인터페이스 장치를 통해 상기 호스트로 송신하도록 구성된 것을 특징으로 하는 저장 시스템.
  3. 제1항에 있어서,
    상기 시스템 컨트롤러는,
    상기 오프로딩 정보를 기반으로 상기 네트워크 인터페이스 장치 및 상기 연산 저장 장치 중 상기 오프로딩 요청에 따른 상기 오프로딩 연산 동작이 수행 가능한 장치를 탐색하고, 탐색 결과를 기반으로 상기 관리 동작을 수행하도록 구성된 것을 특징으로 하는 저장 시스템.
  4. 제1항에 있어서,
    상기 제1 및 제2 오프로딩 기능들은,
    스캔 & 필터 오프로딩 기능, 압축/해제 기능, 암호화/복호화 오프로딩 기능, 기계 학습 오프로딩 기능 및 인코딩/디코딩 오프로딩 기능 중 적어도 하나를 포함하는 것을 특징으로 하는 저장 시스템.
  5. 제1항에 있어서,
    상기 오프로딩 요청은,
    상기 호스트로부터 선택된 오프로딩 기능 및 선택된 알고리즘에 부합하는 것을 특징으로 하는 저장 시스템.
  6. 제1항에 있어서,
    상기 시스템 컨트롤러는,
    초기화 단계에서 상기 네트워크 인터페이스 장치 및 상기 연산 저장 장치 각각으로부터 지원되는 오프로딩 기능들 및 지원되는 알고리즘들에 관한 정보들을 수집하여 상기 오프로딩 정보를 생성하도록 구성된 것을 특징으로 하는 저장 시스템.
  7. 암호화 오프로딩 기능 및 이에 대응하는 제1 암호화 알고리즘들을 지원하도록 구성된 제1 연산 회로가 포함되고, 호스트와 통신 인터페이스를 수행하도록 구성된 네트워크 인터페이스 장치;
    상기 암호화 오프로딩 기능 및 이에 대응하는 제2 암호화 알고리즘들을 지원하도록 구성된 제2 연산 회로가 포함되고, 상기 호스트에 제1 메모리 공간을 제공하도록 구성된 제1 연산 저장 장치;
    상기 암호화 오프로딩 기능 및 이에 대응하는 제3 암호화 알고리즘들을 지원하도록 구성된 제3 연산 회로가 포함되고, 상기 호스트에 제2 메모리 공간을 제공하도록 구성된 제2 연산 저장 장치; 및
    상기 호스트의 암호화 오프로딩 요청에 응답하여 상기 제1 내지 제3 암호화 알고리즘들에 관한 오프로딩 정보를 기반으로 상기 제1 내지 제3 연산 회로들 중 적어도 하나에 의해 암호화 동작이 수행되도록 관리 동작을 수행하도록 구성된 시스템 컨트롤러를 포함하는 저장 시스템.
  8. 제7항에 있어서,
    상기 암호화 오프로딩 요청은, 상기 호스트로부터 선택된 제4 암호화 알고리즘을 가리키는 신호를 포함하고,
    상기 제4 암호화 알고리즘은, 상기 제1 및 제2 암호화 알고리즘들에 각각 포함되며,
    상기 시스템 컨트롤러는, 상기 제1 연산 회로에서 상기 암호화 동작이 수행되도록 상기 관리 동작을 수행하도록 구성된 것을 특징으로 하는 저장 시스템.
  9. 제8항에 있어서,
    상기 시스템 컨트롤러는,
    상기 제1 연산 회로에 의해 암호화된 데이터 및 상기 암호화 동작이 수행되었음을 가리키는 플래그(flag)를 상기 제1 연산 저장 장치로 송신하도록 구성된 것을 특징으로 하는 저장 시스템.
  10. 제9항에 있어서,
    상기 제1 연산 저장 장치는,
    상기 플래그를 기반으로 상기 암호화된 데이터를 상기 제1 메모리 공간에 저장하도록 구성된 것을 특징으로 하는 저장 시스템.
  11. 제7항에 있어서,
    상기 암호화 오프로딩 요청은, 상기 호스트로부터 선택된 제4 암호화 알고리즘을 가리키는 신호를 포함하고,
    상기 제4 암호화 알고리즘은, 상기 제2 및 제3 암호화 알고리즘들에 각각 포함되며,
    상기 시스템 컨트롤러는, 상기 제1 및 제2 연산 저장 장치들 중 어느 하나에 의해 상기 암호화 동작이 수행되도록 상기 관리 동작을 수행하도록 구성된 것을 특징으로 하는 저장 시스템.
  12. 제11항에 있어서,
    상기 시스템 컨트롤러는,
    상기 네트워크 인터페이스 장치를 통해 수신된 데이터 및 상기 암호화 동작이 수행되지 않았음을 가리키는 플래그를 상기 제1 및 제2 연산 저장 장치들 중 선택된 장치로 송신하도록 구성된 것을 특징으로 하는 저장 시스템.
  13. 제12항에 있어서,
    상기 선택된 장치는, 상기 제1 연산 저장 장치이고,
    상기 제1 연산 저장 장치는, 상기 제4 암호화 알고리즘 및 상기 플래그를 기반으로 상기 수신된 데이터에 대한 상기 암호화 동작을 상기 제2 연산 회로를 통해 수행하고, 암호화된 데이터를 상기 제1 메모리 공간에 저장하도록 구성된 것을 특징으로 하는 저장 시스템.
  14. 제7항에 있어서,
    상기 제1 및 제2 연산 저장 장치들은, 상호 연관된 RAID(redundant array of independent disks)로 구현되고,
    상기 암호화 오프로딩 요청은, 상기 호스트로부터 선택된 제4 암호화 알고리즘을 가리키는 신호를 포함하고,
    상기 제4 암호화 알고리즘은, 상기 제2 및 제3 암호화 알고리즘들에 각각 포함되며,
    상기 시스템 컨트롤러는, 상기 제1 및 제2 연산 저장 장치들에 의해 상기 암호화 동작이 수행되도록 상기 관리 동작을 수행하도록 구성된 것을 특징으로 하는 저장 시스템.
  15. 암호화 오프로딩 기능 및 이에 대응하는 제1 암호화 알고리즘들을 지원하도록 구성된 제1 연산 회로가 포함되고, 호스트와 통신 인터페이스를 수행하도록 구성된 네트워크 인터페이스 장치;
    기계 학습 오프로딩 기능, 상기 암호화 오프로딩 기능 및 상기 암호화 오프로딩 기능에 대응하는 제2 암호화 알고리즘들을 지원하도록 구성된 제2 연산 회로가 포함되고, 상기 호스트에 메모리 공간을 제공하도록 구성된 연산 저장 장치;
    상기 호스트에 의해 상기 기계 학습 오프로딩 기능이 활성화되고 상기 호스트의 암호화 오프로딩 요청에 응답하여, 상기 제1 내지 제2 암호화 알고리즘들에 관한 오프로딩 정보로부터 상기 기계 학습 오프로딩 기능에 적합한 암호화 알고리즘을 탐색하고 탐색 결과를 기반으로 상기 제1 및 제2 연산 회로들 중 적어도 하나에 의해 암호화 동작이 수행되도록 관리 동작을 수행하도록 구성된 시스템 컨트롤러를 포함하는 저장 시스템.
  16. 제15항에 있어서,
    상기 시스템 컨트롤러는,
    상기 탐색 결과에 기반된 상기 기계 학습 오프로딩 기능에 적합하고, 지원되는 적어도 하나의 암호화 알고리즘을 가리키는 리스트를 상기 네트워크 인터페이스 장치를 통해 상기 호스트로 송신하도록 구성된 것을 특징으로 하는 저장 시스템.
  17. 제15항에 있어서,
    상기 암호화 오프로딩 요청은, 상기 호스트로부터 선택되고, 상기 기계 학습 오프로딩 기능에 적합한 제3 암호화 알고리즘을 가리키는 신호를 포함하고,
    상기 제3 암호화 알고리즘은, 상기 제1 및 제2 암호화 알고리즘들에 각각 포함되며,
    상기 시스템 컨트롤러는, 상기 제1 연산 회로에서 상기 암호화 동작이 수행되도록 상기 관리 동작을 수행하도록 구성된 것을 특징으로 하는 저장 시스템.
  18. 제17항에 있어서,
    상기 시스템 컨트롤러는,
    상기 제1 연산 회로에 의해 암호화된 데이터, 상기 암호화 동작이 수행되었음을 가리키는 제1 플래그 및 기계 학습 동작 시에 상기 암호화된 데이터에 대한 복호화가 불필요함을 가리키는 제2 플래그를 상기 연산 저장 장치로 송신하도록 구성된 것을 특징으로 하는 저장 시스템.
  19. 제17항에 있어서,
    상기 암호화 오프로딩 요청은, 상기 호스트로부터 선택되고, 상기 기계 학습 오프로딩 기능에 적합한 제3 암호화 알고리즘을 가리키는 신호를 포함하고,
    상기 제3 암호화 알고리즘은, 상기 제2 암호화 알고리즘들에 포함되며,
    상기 시스템 컨트롤러는, 상기 제2 연산 회로에서 상기 암호화 동작이 수행되도록 상기 관리 동작을 수행하도록 구성된 것을 특징으로 하는 저장 시스템.
  20. 제19항에 있어서,
    상기 시스템 컨트롤러는,
    상기 네트워크 인터페이스 장치를 통해 수신된 데이터, 상기 암호화 동작이 수행되지 않았음을 가리키는 제1 플래그 및 기계 학습 동작시에 암호화된 데이터에 대한 복호화가 불필요함을 가리키는 제2 플래그를 상기 연산 저장 장치로 송신하도록 구성된 것을 특징으로 하는 저장 시스템.
KR1020220152738A 2022-11-15 2022-11-15 오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법 KR20240071062A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220152738A KR20240071062A (ko) 2022-11-15 2022-11-15 오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법
CN202311444297.6A CN118051272A (zh) 2022-11-15 2023-11-01 存储系统和计算存储装置
EP23207936.8A EP4372569A1 (en) 2022-11-15 2023-11-06 Storage system supporting offloading function and operating method thereof
US18/387,739 US20240160484A1 (en) 2022-11-15 2023-11-07 Storage system supporting offloading function and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220152738A KR20240071062A (ko) 2022-11-15 2022-11-15 오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20240071062A true KR20240071062A (ko) 2024-05-22

Family

ID=88697644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220152738A KR20240071062A (ko) 2022-11-15 2022-11-15 오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법

Country Status (4)

Country Link
US (1) US20240160484A1 (ko)
EP (1) EP4372569A1 (ko)
KR (1) KR20240071062A (ko)
CN (1) CN118051272A (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220197551A1 (en) * 2020-12-17 2022-06-23 Alibaba Group Holding Limited Storage nodes, integrated circuits and methods for storage node management
US20220357980A1 (en) * 2021-05-06 2022-11-10 Dell Products L.P. Selectively offloading the compression and decompression of files to a hardware controller

Also Published As

Publication number Publication date
CN118051272A (zh) 2024-05-17
US20240160484A1 (en) 2024-05-16
EP4372569A1 (en) 2024-05-22

Similar Documents

Publication Publication Date Title
US11360696B2 (en) System startup method and apparatus, electronic device, and storage medium
US9916176B2 (en) Method and apparatus of accessing data of virtual machine
CN109783013B (zh) 配置和访问可扩展对象存储的方法和系统
US10747673B2 (en) System and method for facilitating cluster-level cache and memory space
US9767070B2 (en) Storage system with a memory blade that generates a computational result for a storage device
CN109753231B (zh) 键值存储设备及操作其的方法
CN108733311B (zh) 用于管理存储系统的方法和设备
US20200042500A1 (en) Collaborative compression in a distributed storage system
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
CN105808163A (zh) 一种访问叠瓦式磁记录smr硬盘的方法及服务器
US20190199794A1 (en) Efficient replication of changes to a byte-addressable persistent memory over a network
WO2019080150A1 (zh) 一种双活存储系统和地址分配方法
CN115687193A (zh) 存储模块、包括其的系统以及存储模块的操作方法
KR101601877B1 (ko) 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
US11379128B2 (en) Application-based storage device configuration settings
US20210019276A1 (en) Link selection protocol in a replication setup
KR20240071062A (ko) 오프로딩 기능을 지원하는 저장 시스템 및 이의 동작 방법
CN117111831A (zh) 存储器装置、存储装置以及计算系统
US11734197B2 (en) Methods and systems for resilient encryption of data in memory
US11397834B2 (en) Methods and systems for data backup and recovery on power failure
CN116932451A (zh) 一种数据处理方法、主机及相关设备
CN113721838A (zh) 用于存储设备的写、读数据方法、存储控制器以及dma引擎
US10860334B2 (en) System and method for centralized boot storage in an access switch shared by multiple servers
US11914879B2 (en) Storage controller and storage system comprising the same
US20240004803A1 (en) Secure element and electronic device including the same