KR20170034425A - 고체 상태 드라이브들을 사용하여 계산 집약적 동작들을 가속하는 기술들 - Google Patents

고체 상태 드라이브들을 사용하여 계산 집약적 동작들을 가속하는 기술들 Download PDF

Info

Publication number
KR20170034425A
KR20170034425A KR1020177005007A KR20177005007A KR20170034425A KR 20170034425 A KR20170034425 A KR 20170034425A KR 1020177005007 A KR1020177005007 A KR 1020177005007A KR 20177005007 A KR20177005007 A KR 20177005007A KR 20170034425 A KR20170034425 A KR 20170034425A
Authority
KR
South Korea
Prior art keywords
server
data
solid state
output
operations
Prior art date
Application number
KR1020177005007A
Other languages
English (en)
Other versions
KR102320150B1 (ko
Inventor
자와드 비. 칸
크누트 에스. 그림스러드
리차드 엘. 콜슨
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20170034425A publication Critical patent/KR20170034425A/ko
Application granted granted Critical
Publication of KR102320150B1 publication Critical patent/KR102320150B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0658Controller construction 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
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/42
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Abstract

계산 집약적 동작들 예컨대 암호화, 복호화, 인코딩, 디코딩 등을 가속하는 기술들이 설명된다. 일부 실시예들에서, 기술들은 예를 들어 서버 또는 다른 컴퓨팅 베이스 대신에, 계산 집약적 동작들을 수행하기 위해 하나 이상의 고체 상태 드라이브들 내의 또는 그와 연관된 하드웨어 가속 엔진을 활용한다. 그러한 기술을 이용하는 시스템들, 방법들 및 컴퓨터 판독가능 매체가 또한 설명된다.

Description

고체 상태 드라이브들을 사용하여 계산 집약적 동작들을 가속하는 기술들{TECHNOLOGIES FOR ACCELERATING COMPUTE INTENSIVE OPERATIONS USING SOLID STATE DRIVES}
본 개시내용은 계산 집약적 동작들을 가속하는 기술들에 관한 것이다. 특히, 본 개시내용은 하나 이상의 고체 상태 드라이브들을 사용하여 계산 집약적 동작들을 가속하는 기술들에 관한 것이다.
계산 집약적 동작들 예컨대 암호화, 복호화, 압축/압축 해제, 해시 계산, 저레벨 이미지 처리 알고리즘들(필터들, 스레스홀딩 등과 같지만 이들에 제한되지 않음), DNA 시퀀스 매칭 및 검색 알고리즘들, 인코딩, 디코딩 알고리즘들 등은 중요한 중앙 처리 유닛(central processing unit)(CPU) 사이클들 및/또는 다른 자원들이 완료되는 것을 필요로 할 수 있다. 계산 집약적 동작들에 대한 요구 및 이 동작들의 복잡성이 증가되었으므로, 기술들은 그러한 동작들의 수행을 CPU로부터 전용 하드웨어로 오프로딩하기 위해 개발되었다. 예를 들어, 독립 암호화 및 복호화 가속기들은 계산 집약적 암호화 및 복호화 동작들을 수행하기 위해 개발되었다. 그러한 가속기들은 특정 암호화 및 복호화 동작들의 특정 수행을 위해 설계될 수 있고, 따라서 많은 경우들에서, 가속기들은 일반 목적 프로세서보다 더 빠른 그러한 동작들을 수행할 수 있다. 가속기들은 또한 그러한 동작들을 수행하도록 요구되는 CPU 사이클들의 수를 감소시킬 수 있고, 따라서 암호화, 복호화, 또는 다른 계산 집약적 동작들이 가속기에 의해 수행되고 있을 때에도 다른 동작들을 위해 CPU를 확보할 수 있다. 그들의 의도된 목적에 대해 효과적이지만, 독립 하드웨어 가속기들은 비용이 상당히 들 수 있다. 실제로, 독립 하드웨어 가속기들의 비용은 일부 사례들에서, 예를 들어 복수의 독립 하드웨어 가속기들이 가속된 계산 서비스들을 하나 이상의 클라이언트들에 제공하도록 구성되는 서버(또한 본원에서 "호스트 시스템"으로 언급됨)에 사용될 때 아주 비싸다.
청구된 발명 대상의 실시예들의 특징들 및 장점들은 이하의 상세한 설명이 진행됨에 따라, 및 동일한 번호들이 동일한 부분들을 도시하는 도면들에 대한 참조 시에 분명해질 것이다.
도 1은 본 개시내용에 따른 계산 집약적 동작들을 가속하는 시스템의 블록도를 예시한다.
도 2는 본 개시내용의 다양한 실시예들에 따른 도 1의 시스템의 더 상세한 블록도이다.
도 3은 본 개시내용의 다양한 실시예들에 따른 서버 및 고체 상태 드라이브 어레이의 추가 상세들을 도시하는 블록도이다.
도 4는 본 개시내용에 따른 계산 집약적 동작들을 가속하는 예시적 방법에 따른 예시적 동작들의 흐름도이다.
도 5a 및 도 5b는 본 개시내용의 다양한 실시예들에 따른 부가적 시스템 구성들을 도시한다.
본 개시내용이 특정 적용들에 대한 예시적 실시예들을 참조하여 본원에서 설명되지만, 그러한 실시예들은 단지 예시적이고 첨부된 청구항들에 의해 정의되는 바와 같은 본 발명은 그것에 제한되지 않는다는 점이 이해되어야 한다. 본원에 제공되는 교시들에 접근하는 관련 기술분야(들)의 통상의 기술자들은 본 개시내용의 범위 내의 부가 수정들, 적용들, 및 실시예들, 및 본 개시내용의 실시예들이 이용할 수 있는 부가 분야들을 인식할 것이다.
본원에 설명되는 기술들은 예를 들어 클라이언트-서버 아키텍처에서 하나 이상의 디바이스들을 사용하여 구현될 수 있다. 용어들 "디바이스", "디바이스들", "전자 디바이스" 및 "전자 디바이스들"은 본 개시내용에 따른 클라이언트 및/또는 서버로 사용될 수 있는 다수의 전자 디바이스들 중 어느 것을 개별적으로 또는 집합적으로 언급하기 위해 본원에서 교환가능하게 사용된다. 본 개시내용에 따라 사용될 수 있는 디바이스들의 비제한 예들은 카메라들, 휴대 전화들, 컴퓨터 단말기들, 데스크톱 컴퓨터들, 전자 판독기들, 팩스기들, 키오스크들, 넷북 컴퓨터들, 노트북 컴퓨터들, 인터넷 디바이스들, 지불 단말기들, 개인 휴대 정보 단말기들, 미디어 플레이어들 및/또는 레코더들, 서버들(예를 들어, 블레이드 서버, 랙 마운트 서버, 그들의 조합들 등), 셋톱 박스들, 스마트폰들, 태블릿 개인용 컴퓨터들, 울트라 모바일 개인용 컴퓨터들, 유선 전화들, 그들의 조합들 등과 같지만 이들에 제한되지 않는, 임의의 종류의 이동 디바이스 및/또는 정지 디바이스를 포함한다. 그러한 디바이스들은 휴대용이거나 고정될 수 있다.
용어들 "클라이언트" 및 "클라이언트 디바이스"는 본 개시내용에 따른 클라이언트 기능들을 수행할 수 있는 하나 이상의 전자 디바이스들을 언급하기 위해 본원에서 교환가능하게 사용된다. 대조적으로, 용어들 "서버" 및 "서버 디바이스"는 본 개시내용에 따른 서버 기능들을 수행할 수 있는 하나 이상의 전자 디바이스들을 언급하기 위해 본원에서 교환가능하게 사용된다. 일부 실시예들에서, 서버 디바이스들은 하나 이상의 서비스들(예를 들어, 계산 가속 서비스들)을 다른 디바이스 예컨대 클라이언트에 제공하도록 구성되는 호스트 시스템의 형태일 수 있다. 그러한 실시예들에서, 서버 디바이스들은 데이터 센터 또는 다른 컴퓨팅 베이스의 일부를 형성하거나, 이들을 포함하거나, 이들의 형태일 수 있다. 용어 "호스트 시스템"은 용어들 "서버" 및 "서버 디바이스"와 본원에서 교환가능하게 사용된다.
도 1 내지 도 3은 단일 클라이언트 및 단일 서버를 포함하는 것으로 본 개시내용에 따른 예시적 시스템들을 예시한다. 그러한 예시들은 예를 위한 것이고, 임의의 수의 클라이언트들 및 서버들이 사용될 수 있다는 점이 이해되어야 한다. 실제로, 본원에 설명되는 기술들은 복수의(예를 들어, 2, 5, 10, 20, 50, 100, 1000, 10,000 또는 그 이상의) 클라이언트 및/또는 서버 디바이스들로 구현될 수 있다. 더욱이, 서버들의 수는 클라이언트들의 수와 상관될 필요가 없다. 실제로, 일부 실시예들에서, 본원에 설명되는 기술들은 계산 가속 서비스들을 지원하고 및/또는 그들을 비교적 큰 수(예를 들어, 100, 1000, 10,000) 등의 클라이언트들에 제공하기 위해 비교적 적은(예를 들어, 1 또는 2) 서버들을 이용한다. 따라서, 본 개시내용이 클라이언트 및/또는 서버를 단수형으로 언급할 수 있지만, 그러한 표현들은 또한 복수형을 포함하는 것으로 해석되어야 한다. 유사하게, 클라이언트 또는 서버로 디바이스의 지정은 명확성을 위한 것이고, 일부 실시예들에서, 클라이언트 디바이스는 서버 기능들을 수행하도록 구성될 수 있고, 서버 디바이스는 본 개시내용에 따른 클라이언트 기능들을 수행하도록 구성될 수 있다는 점이 이해되어야 한다.
본원에서의 임의의 실시예에 사용되는 바와 같이, 용어 "모듈"은 본 개시내용에 따른 하나 이상의 동작들을 수행하도록 구성되는 소프트웨어, 펌웨어, 회로, 및/또는 그들의 조합들을 언급할 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체들 상에 기록되는 소프트웨어 패키지, 코드, 명령어들, 명령어 세트들 및/또는 데이터로 구체화될 수 있다. 펌웨어는 메모리 디바이스들에서 하드 코딩(예를 들어, 비휘발성)되는 코드, 명령어들 또는 명령어 세트들 및/또는 데이터로 구체화될 수 있다. 본원에서의 임의의 실시예에 사용되는 바와 같은 "회로"는 예를 들어, 개별적으로 또는 임의의 조합으로, 하드와이어드 회로, 하나 이상의 개별 명령어 처리 코어들을 포함하는 컴퓨터 프로세서들과 같은 프로그램가능 회로, 데이터 머신 회로, 프로그램가능 회로에 의해 실행되는 명령어들을 저장하는 소프트웨어 및/또는 펌웨어를 포함할 수 있다. 모듈들은 이전에 정의된 바와 같이, 하나 이상의 전자 디바이스들의 일부를 형성하는 회로로 집합적으로 또는 개별적으로 구체화될 수 있다. 일부 실시예들에서, 본원에 설명되는 하나 이상의 모듈들은 본 개시내용에 따른 하나 이상의 클라이언트 및/또는 서버 기능들을 수행하기 위해 하드웨어로 적어도 부분적으로 구현되는 로직의 형태일 수 있다.
구 "근거리 통신 네트워크"는 서로 비교적 가까운 디바이스들 사이에서, 즉 근거리 통신을 통해 데이터 신호들을 송신/수신하는 기술들을 언급하기 위해 본원에서 사용된다. 근거리 통신은 예를 들어 BLUETOOTH™ 네트워크, 개인 영역 네트워크(personal area network)(PAN), 근거리 무선 통신, 지그비 네트워크, 유선 이더넷 연결, 그들의 조합들 등을 사용하는 디바이스들 사이의 통신을 포함한다. 대조적으로, 구 "장거리 통신 네트워크"는 서로 상당히 떨어져 있는 디바이스들 사이에서, 즉 장거리 통신을 사용하여 데이터 신호들을 송신/수신하는 기술들을 언급하기 위해 본원에서 사용된다. 장거리 통신은 예를 들어 WiFi 네트워크, 광역 네트워크(wide area network)(WAN)(휴대 전화 네트워크(3G, 4G 등) 및 유사한 것을 포함하지만 이들에 제한되지 않음), 인터넷, 전화 네트워크들, 그들의 조합들 등을 사용하는 디바이스들 사이의 통신을 포함한다.
용어들 "SSD", "SSD들" 및 "고체 상태 드라이브"는 집적 회로 어셈블리들(예를 들어, 비휘발성 랜덤 액세스 메모리(random access memory)(RAM) 어셈블리들)이 데이터를 지속적으로 저장하기 위해 사용되는 매우 다양한 데이터 저장 디바이스들 중 어느 것을 언급하기 위해 본원에서 교환가능하게 사용된다. 그러한 용어들은 또한 소위 "하이브리드" 드라이브들을 포함하며, 고체 상태 드라이브는 예를 들어 자기 기록 매체를 포함하는 하드 디스크 드라이브와 조합하여 (예를 들어, 캐시로) 사용될 수 있다. 임의의 경우에, SSD는 플래시 메모리 예컨대 부정 및 not 및 (NAND) 및/또는 not 또는 (NOR) 메모리, 상 변화 메모리(phase change memory)(PCM), 3차원 크로스 포인트 메모리, 저항 메모리, 나노와이어 메모리, 강유전 트랜지스터 랜덤 액세스 메모리(ferro-electric transistor random access memory)(FeTRAM), 멤리스터 기술을 통합하는 자기저항 랜덤 액세스 메모리(magnetoresistive random access memory)(MRAM) 메모리, 스핀 전달 토크(spin transfer torque)(STT)-MRAM, 그들의 조합들 등과 같지만 이들에 제한되지 않는 비휘발성 메모리를 포함하는 것으로 이해될 수 있다.
구 "계산 집약적 동작들"은 상당한 프로세서 사이클들이 완료되는 것을 필요로 할 수 있는 매우 다양한 컴퓨팅 동작들 중 어느 것을 언급하기 위해 본원에서 사용된다. 계산 집약적 동작들의 비제한 예들은 암호화, 복호화, 압축/압축 해제, 해시 계산, 저레벨 이미지 처리 알고리즘들(필터들, 스레스홀딩 등과 같지만 이들에 제한되지 않음), DNA 시퀀스 매칭 및 검색 알고리즘들, 인코딩 알고리즘들, 디코딩 알고리즘들, 그들의 조합들 등을 포함한다. 물론, 전술한 동작들은 단지 예들이고, 다른 계산 집약적 동작들이 구상되고 본 개시내용에 의해 포함된다.
배경에 언급된 바와 같이, 독립 하드웨어 가속기들은 계산 집약적 동작들 예컨대 데이터 암호화/복호화, 비디오 인코딩/디코딩, 네트워크 패킷 라우팅 등을 가속하기 위해 개발되고 구현되었다. 그러한 독립 하드웨어 가속기들이 그들의 의도된 목적에 대해 효과적일 수 있지만, 그들은 상당히 비쌀 수 있다. 따라서, 독립 하드웨어 가속기들은 특히 서버가 복수의 그러한 가속기들을 포함하면, 하나 이상의 클라이언트들을 위해 계산 가속 서비스들(예를 들어, 가속된 암호화, 복호화 등)을 제공하도록 구성되는 서버 또는 다른 컴퓨팅 베이스의 비용의 중요한 부분을 나타낼 수 있다. 더욱이, 계산 집약적 동작들의 수행은 특정 독립 하드웨어 가속기들에 따라 제대로 스케일링되지 않을 수 있다. 즉, 일부 사례들에서, 독립 하드웨어 가속기들의 수를 증가시키는 것은 계산 집약적 동작들의 수행에서 대응하는(예를 들어, 1:1) 증가를 야기하지 않을 수 있다.
전자 디바이스들에는 일반적으로 데이터 저장을 위해 사용되는 고체 상태 드라이브들이 더욱더 구비되어 있다. 이것을 고려하여, SSD들은 고대역폭(예를 들어, 멀티 기가바이스트/초) 하드웨어 암호화/복호화 엔진을 포함하는 하드웨어 기반 컨트롤러(이하, "SSD 컨트롤러")를 포함한다. SSD의 하드웨어 암호화/복호화 엔진이 다양한 동작들을 고속으로 수행할 수 있지만, 많은 사례들에서, 그것은 데이터를 나머지 암호화 및/또는 복호화로 수행하고, 및/또는 데이터를 드라이브의 정상 판독/기록 흐름의 일부로 암호화/복호화하도록 구성된다. 예를 들어, 일부 SSD들은 FIPS 발행 197 및/또는 ISO/IEC 18033-3에 지정되는 고급 암호화 표준(Advanced Encryption Standard)(AES) 알고리즘과 같지만 이에 제한되지 않는 하나 이상의 암호화 알고리즘들에 의해 SSD 상에 저장되는 데이터를 암호화/복호화하도록 구성되는 하드웨어 암호화/복호화 엔진을 포함할 수 있다. 기존 기술의 경우, SSD의 하드웨어 암호화/복호화 엔진들은 암호화/복호화가 소프트웨어(예를 들어, 클라이언트 또는 서버의 일반 목적 프로세서에 의해 실행됨)로 수행될 수 있는 것보다 몇 배 더 빠르게 데이터의 암호화/복호화를 수행할 수 있다.
많은 SSD들의 하드웨어 암호화/복호화 엔진의 성능이 흥미롭지만, 전형적인 시스템에서 SSD 컨트롤러 및 특히 SSD 컨트롤러의 하드웨어 암호화/복호화 엔진은 예를 들어 데이터 암호화/복호화 또는 다른 계산 집약적 동작들의 수행을 위한 클라이언트 및/또는 서버 디바이스에 이용가능하지 않다. 즉, 독립 하드웨어 가속기들과 달리, SSD의 하드웨어 암호화/복호화 엔진은 일반적으로 계산 집약적 동작들의 수행을 위한 호스트 시스템(클라이언트 또는 서버)에 의해 직접 액세스가능하지 않다.
상술한 것을 고려하여, 본 개시내용은 일반적으로 많은 SSD들에 존재하는 하나 이상의 하드웨어 가속 엔진들을 활용하는 계산 집약적 동작들을 가속하는 기술들에 관한 것이다. 특히 및 아래에 설명되는 바와 같이, 본원에 설명되는 기술들은 SSD의 하드웨어 가속 엔진들을 호스트 시스템에 노출할 수 있다. 그 결과, 호스트 시스템은 상기 식별된 것들과 같은 계산 집약적 동작들을 가속하기 위해 SSD의 하드웨어 가속 엔진(들)을 사용할 수 있다. 이하로부터 분명해지는 바와 같이, 이러한 방식으로 하드웨어 가속 엔진의 사용은 고체 상태 드라이브의 종래의 데이터 저장 기능을 절충할 필요가 없다. 더욱이, 일부 실시예들에서, 본원에 설명되는 기술들에 의한 계산 집약적 동작들의 가속은 SSD들의 수에 따라 스케일링될 수 있다.
따라서, 본 개시내용의 일 양태는 계산 집약적 동작들을 가속하는 시스템들에 관한 것이다. 명확성 및 이해의 용이성을 위해, 본 개시내용은 가속되는 계산 집약적 동작이 암호화/복호화 알고리즘의 수행, 또는 그것의 일부 부분인 다양한 실시예들을 설명하기 위해 진행될 것이다. 본원에 설명되는 기술들은 암호화/복호화 동작들을 가속하는 것에 제한되지 않고, 상기 언급된 것들 및/또는 그것의 임의의 부분을 포함하지만 이들에 제한되지 않는 임의의 적절한 타입의 계산 집약적 동작을 가속하기 위해 사용될 수 있다는 점이 이해되어야 한다.
이와 관련하여, 도 1이 참조되며, 도 1은 본 개시내용에 따른 계산 집약적 동작들을 가속하는 예시적 시스템의 블록도이다. 도시된 바와 같이, 시스템(100)은 클라이언트(101), 서버(102), 및 고체 상태 드라이브(solid state drive)(SSD) 어레이(103)를 포함한다.
클라이언트(101)는 상기 정의된 바와 같이, 임의의 적절한 전자 디바이스일 수 있다. 제한 없이, 일부 실시예들에서, 클라이언트(101)는 하나 이상의 셀룰러 전화들, 데스크톱 컴퓨터들, 전자 판독기들, 랩톱 컴퓨터들, 셋톱 박스들, 스마트폰들, 태블릿 개인용 컴퓨터들, 텔레비전들, 또는 울트라 모바일 개인용 컴퓨터들의 형태이다. 그것의 형태에 관계없이, 일부 실시예들에서, 클라이언트(101)(또는 그것의 운영자)는 가속이 요구되는 계산 집약적 동작(또한 본원에서 "작업"으로 언급됨)을 가질 수 있다. 예를 들어, 클라이언트(101)(또는 그것의 운영자)는 데이터 세트가 암호화되기를 원할 수 있다. 그러한 사례들에서 및 아래에 상세히 설명되는 바와 같이, 클라이언트(101)는 가속을 위해 작업의 전부 또는 일부(예시적 경우에, 암호화를 위한 데이터의 전부 또는 일부)를 서버(102)에 전달하도록 구성될 수 있다.
클라이언트(101)와 같이, 서버(102)는 임의의 적절한 전자 디바이스일 수 있다. 제한 없이, 서버(102)는 일부 실시예들에서 하나 이상의 서버 컴퓨터들, 예컨대 하나 이상의 블레이드 서버들, 랙 마운트 서버들, 그들의 조합들 등의 형태이다. 일부 예시적 실시예들에서, 서버(102)는 독립 서버이다. 다른 예시적 실시예들에서, 서버(102)는 서버들의 어레이 내의 하나 이상의 서버들일 수 있으며, 예컨대 데이터 센터 또는 다른 집합 컴퓨팅 베이스에서 발견될 수 있다. 임의의 경우에, 서버(102)는 가속을 위해 작업을 클라이언트(101)로부터 수신하고, 가속을 위해 작업을 SSD 어레이(103)의 하나 이상의 SSD들에 송신하도록 구성될 수 있다. 특히 및 아래에 설명되는 바와 같이, 서버(102)는 SSD의 하드웨어 가속 엔진이 작업의 적어도 일부를 수행하게 하기 위해, 클라이언트(101)로부터 수신되는 작업의 전부 또는 일부를 SSD 어레이(103)의 적어도 하나의 SSD에 송신하도록 구성될 수 있다. 그 다음, 서버(102)는 하드웨어 가속 엔진에 의해 수행되는 동작들의 출력을 검색하거나 다른 방법으로 수신하고, 그러한 출력을 클라이언트(101)에 전달할 수 있다.
SDD 어레이(103)는 하나 이상의 고체 상태 드라이브들을 포함할 수 있다. 예를 위해, 본 개시내용은 SSD 어레이가 1개의 SSD 또는 2개의 SSD들(예를 들어 도 3에 도시된 바와 같음)을 포함하는 다양한 실시예들을 설명한다. 그러한 설명은 단지 예를 위한 것이고, 임의의 수의 SSD들이 사용될 수 있다는 점이 이해되어야 한다. 실제로, 본 개시내용은 복수의 SSD들이 SSD 어레이(103)에 포함되는 실시예들, 예를 들어 SSD(103)가 약 2, 약 5, 약 10, 약 100, 약 1000 또는 그 보다 많은 SSD들 이상을 포함하는 실시예들을 구상한다. 또한, 그러한 범위들은 단지 예를 위한 것이다.
SSD 어레이(103)의 SSD들은 임의의 적절한 폼 팩터 또는 구성일 수 있다. 적절한 SSD 폼 팩터들의 비제한 예들은 다양한 표준 하드 디스크 드라이브 폼 팩터들(예를 들어, 2.5 인치, 3.5 인치, 1.8 인치), 이동 폼 팩터들 예컨대 이동 직렬 고급 기술 결합 폼 팩터, 주변 연결 인터페이스(peripheral connect interface)(PCI) 미니 카드 폼 팩터, 디스크 모듈 폼 팩터, 하이브리드 디스크 폼 팩터, 그들의 조합들 등 중 어느 것인 SSD들을 포함한다. 일부 실시예들에서, SSD 어레이(103) 내의 SSD들 중 하나 이상은 예를 들어 시리즈 300 이상의 명칭 하에, INTEL® 코포레이션에 의해 판매되는 SSD이다.
예시 및 이해의 용이성을 위해, 도 1, 도 2 및 도 3은 SSD 어레이(103)가 서버(102)로부터 분리되는 것으로 예시되는 시스템들을 도시한다. 그러한 사례들에서, SSD 어레이(103)는 서버(102)로부터 분리되지만 서버에 의해 액세스가능한 컴퓨팅 베이스의 일부일 수 있다는 점이 이해될 수 있다. 따라서, 예를 들어, SSD 어레이(103)는 서버(102)로부터 분리되는 컴퓨팅 베이스의 일부를 형성하거나, 컴퓨팅 베이스의 형태이거나, 컴퓨팅 베이스를 포함할 수 있다. 즉, SSD 어레이(103)는 서버(102)와 동일한 또는 상이한 데이터 센터, 서버 팜, 하우징 등에 수용될 수 있다. 물론, 그러한 예시는 단지 예를 위한 것이고, SSD 어레이는 서버(102)의 일부와 일체화되거나 다른 방법으로 일부를 형성할 수 있다는 점이 이해되어야 한다. 예를 들어, 서버(102)는 SSD 어레이(103)를 포함하거나 이 어레이와 다른 방법으로 일체화되는 하나 이상의 랙 마운트 및/또는 블레이드 서버들을 포함할 수 있다. 그러한 실시예들에서, SSD 어레이(103) 내의 SSD들 중 하나 이상은 서버(102), 예를 들어 머더보드 및/또는 그것의 확장 보드에 통신 결합될 수 있다.
클라이언트(101), 서버(102), 및 고체 상태 드라이브 어레이(103)는 서로, 예를 들어 직접 또는 임의적 네트워크(104)(해시들로 도시됨)를 통해 유선 또는 무선 통신할 수 있다. 제한 없이, 클라이언트(101) 및 서버(102)는 일부 실시예들에서 서로 네트워크(104)를 통해 통신하고, 서버(102) 및 SSD 어레이(103)는 서로 직접 또는 네트워크(104)를 통해 통신한다. 임의의 경우에, 네트워크(104)는 데이터를 반송하는 임의의 네트워크일 수 있다. 네트워크(104)로 사용될 수 있는 적절한 네트워크들의 비제한 예들은 상기 정의된 바와 같은 단거리 통신 및 장거리 통신 네트워크들, 그들의 조합들 등을 포함한다. 일부 실시예들에서, 네트워크(104)는 근거리 통신 네트워크 예컨대 BLUETOOTH® 네트워크, 지그비 네트워크, 근거리 무선 통신(near field communications)(NFC) 링크, 유선(예를 들어, 이더넷) 연결, 그들의 조합들 등이다. 다른 실시예들에서, 네트워크(104)는 장거리 통신 네트워크 예컨대 Wi-Fi 네트워크, 셀룰러(예를 들어, 3G, 4G 등) 네트워크, 광역 네트워크 예컨대 인터넷, 그들의 조합들 등이다.
이제 도 2가 참조되며, 도 2는 계산 집약적 동작들을 가속하는 시스템(100)의 더 많은 상세들을 포함하는 블록도를 도시한다. 도시된 바와 같이, 클라이언트(101)는 임의의 적절한 디바이스 플랫폼일 수 있는 클라이언트 디바이스 플랫폼(201)을 포함한다. 제한 없이, 클라이언트 디바이스 플랫폼(201)은 클라이언트(101)로 사용되는 전자 디바이스의 타입에 상관되는 것이 바람직하다. 따라서, 예를 들어 클라이언트(101)가 셀룰러 전화, 스마트폰, 데스크톱 컴퓨터, 랩톱 컴퓨터 등인 경우, 클라이언트 디바이스 플랫폼(201)은 일부 실시예들에서 각각 셀룰러 전화 플랫폼, 스마트폰 플랫폼, 데스크톱 컴퓨터 플랫폼, 랩톱 컴퓨터 플랫폼 등이다.
그것의 성질에 상관없이, 디바이스 플랫폼(201)은 프로세서(202), 메모리(203), 및 통신 자원들(COMMS)(204)을 포함할 수 있다. 프로세서(202)는 임의의 적절한 일반 목적 프로세서 또는 주문형 집적 회로일 수 있고, 하나의 또는 다수의 프로세서 코어들 상에서 하나의 또는 다수의 스레드들을 실행가능할 수 있다. 제한 없이, 프로세서(202)는 일부 실시예들에서 INTEL® 코포레이션, ADVANCED MICRO DEVICES®, ARM®, NVIDIA®, APPLE®, 및 SAMSUNG®로부터 시판가능한 일반 목적 프로세서들과 같지만 이들에 제한되지 않는 일반 목적 프로세서이다. 도 2는 단일 프로세서를 포함하는 것을 클라이언트(101)를 예시하지만, 다수의 프로세서들이 사용될 수 있다.
메모리(203)는 임의의 적절한 타입의 컴퓨터 판독가능 메모리일 수 있다. 메모리(203)로 사용될 수 있는 예시적 메모리 타입들은 프로그램가능 메모리, 비휘발성 메모리, 판독 전용 메모리, 전기적 프로그램가능 메모리, 랜덤 액세스 메모리, 플래시 메모리(예를 들어 NAND 또는 NOR 타입 메모리 구조체들을 포함할 수 있음), 자기 디스크 메모리, 광 디스크 메모리, 상 변화 메모리, 멤리스터 메모리 기술, 스핀 토크 전달 메모리, 그들의 조합들 등을 포함하지만 이들에 제한되지 않는다. 부가적으로 또는 대안적으로, 메모리(203)는 다른 및/또는 나중에 개발된 타입들의 컴퓨터 판독가능 메모리를 포함할 수 있다.
COMMS(204)는 아래에 논의되는 바와 같이, 클라이언트(101)가 서버(102), 또는 특히 서버 디바이스 플랫폼(211)의 COMMS(214)로/로부터 메시지들을 적어도 송신하고 수신하는 것을 허용하도록 구성되는 하드웨어(즉, 회로), 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합을 포함할 수 있다. COMMS(204)와 COMMS(214) 사이의 통신은 일반적으로 상기 설명된 바와 같이 근거리 및/또는 장거리 통신 네트워크를 사용하여 유선 또는 무선 연결을 통해 발생할 수 있다. 따라서, COMMS(204)는 그러한 통신을 지원하는 하드웨어, 예를 들어 하나 이상의 트랜스폰더들, 안테나들, BLUETOOTH™ 칩들, 개인 영역 네트워크 칩들, 근거리 무선 통신 칩들, 유선 및/또는 무선 네트워크 인터페이스 회로, 그들의 조합들 등을 포함할 수 있다.
클라이언트 디바이스 플랫폼(201)은 작업 인터페이스 모듈(job interface module)(JIM)(205)을 더 포함한다. 나중에 상세히 설명되는 바와 같이, JIM(205)은 (계산 집약적) 작업들을 실행을 위해 서버(102)에 배치(batch)하고 및/또는 송신하도록 구성될 수 있다. 임의의 경우에, JIM(205)은 클라이언트(101)가 본 개시내용에 따른 작업 요청 동작들을 수행하게 하도록 구성되는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합의 형태일 수 있다. 일부 실시예들에서, JIM(205)은 프로세서(202)에 의해 실행될 때 본 개시내용에 따른 작업 요청 동작들의 수행을 야기하는 컴퓨터 판독가능 명령어들(예를 들어 메모리(203) 상에 저장됨)의 형태일 수 있다. 대안적으로 또는 부가적으로, 일부 실시예에서, JIM(205)은 본 개시내용에 따른 하나 이상의 클라이언트 기능들을 수행하기 위해 하드웨어로 적어도 부분적으로 구현되는 로직을 포함하거나 로직의 형태일 수 있다.
도 2에 더 도시된 바와 같이, 서버(102)는 서버 디바이스 플랫폼(211)을 포함한다. 클라이언트 디바이스 플랫폼(201)과 같이, 서버 디바이스 플랫폼(211)은 임의의 적절한 디바이스 플랫폼일 수 있다. 제한 없이, 서버 디바이스 플랫폼(211)은 서버(102)로 사용되는 전자 디바이스의 타입에 상관되는 것이 바람직하다. 따라서, 예를 들어 서버(102)가 랙 마운트 서버 플랫폼, 블레이드 서버 플랫폼, 데스크톱 컴퓨터 플랫폼 등인 경우, 서버 디바이스 플랫폼(211)는 일부 실시예들에서 각각 랙 마운트 서버 플랫폼, 블레이드 서버 플랫폼, 데스크톱 컴퓨터 플랫폼 등이다. 서버 디바이스 플랫폼(211)은 프로세서(212), 메모리(213), 및 COMMS(214)를 더 포함한다. 그러한 구성요소들의 성질 및 기능은 클라이언트 디바이스 플랫폼(201)의 대응하는 부분들과 동일하고, 따라서 간결성을 위해 다시 설명되지 않는다.
상술한 구성요소들에 더하여, 디바이스 플랫폼(211)은 작업 가속 인터페이스 모듈(job acceleration interface module)(JAIM)(215)을 포함한다. 아래에 상세히 설명되는 바와 같이, JAIM은 일반적으로 클라이언트(101)로부터 (계산 집약적) 작업들을 수신하고, 그러한 작업들을 실행을 위해 SSD 어레이(103)의 하나 이상의 SSD들에 전달하도록 구성될 수 있다. JAIM은 또한 SSD 어레이(103)에 의해 생성되는 출력을 수신하고 및/또는 검색하고, 출력을 클라이언트(101)에 전달하도록 구성될 수 있다. 이러한 방식으로, JAIM(215)은 SSD의 하드웨어 가속 엔진을 서버(102)에 노출하고, 따라서 서버(102)가 그러한 하드웨어를 활용하여 계산 집약적 동작들을 수행하는 것을 허용할 수 있다.
JIM(205)과 같이, JAIM(215)은 서버(102)가 본 개시내용에 따른 작업 가속 인터페이스 동작들을 수행하게 하도록 구성되는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합의 형태일 수 있다. 그러한 동작들은 예를 들어, 아래에 논의되는 바와 같이, 클라이언트(101)로부터 작업 요청 및/또는 데이터를 수신하는 단계, 하나 이상의 작업 실행 커맨드들을 생성하는 단계, 작업 실행 커맨드(들)를 SSD 어레이(103)에 송신하는 단계, 일부 실시예들에서 SSD 어레이(또는 그것의 SSD)에 의해 생성되는 출력을 요청하는 단계, 및 출력을 클라이언트(101)에 송신하는 단계를 포함할 수 있다. 일부 실시예들에서, JAIM(215)은 프로세서(212)에 의해 실행될 때 본 개시내용에 따른 작업 가속 인터페이스 동작들의 수행을 야기하는 컴퓨터 판독가능 명령어들(예를 들어 메모리(213) 상에 저장됨)의 형태일 수 있다. 대안적으로 또는 부가적으로, JAIM(215)은 일부 실시예들에서 본 개시내용에 따른 하나 이상의 서버 기능들을 수행하기 위해 하드웨어로 적어도 부분적으로 구현되는 로직을 포함하거나 로직의 형태일 수 있다.
일부 실시예들에서, JAIM(215)은 직렬 고급 기술 결합(serial advanced technology attachment)(SATA) 프로토콜, 비휘발성 메모리 익스프레스(non-volatile memory express)(NVMe) 프로토콜, 직렬 결합된 소몰 컴퓨터 시스템 인터페이스(small computer systems interface)(SAS) 프로토콜, 그들의 조합들 등의 과거, 현재 또는 장래 개발된 버전들과 같은 설정된 통신 프로토콜에 따라 SSD 어레이(103)와 통신하도록 구성될 수 있다. 그러한 프로토콜들은 JAIM(215)에 의해 발생되는 바와 같은 본원에 설명되는 커맨드들, 예를 들어 상기의 것이 아닌 작업 실행 커맨드들을 설명하고 및/또는 구현하기 위해 사용될 수 있는 벤더 특정 커맨드들을 정의하는 옵션들을 갖는다. 따라서, JAIM(215)에 의해 발행되는 커맨드들은 전술한 프로토콜들 중 하나 이상을 따르는 벤더 특정 커맨드들일 수 있다는 점이 이해되어야 한다.
상기 언급된 바와 같이, SDD 어레이(103)는 하나 이상의 고체 상태 드라이브들을 포함할 수 있다. 이러한 개념은 도 3에 예시되며, 도 3은 본 개시내용의 다양한 실시예들에 따른 서버 및 고체 상태 드라이브 어레이의 추가 상세들을 도시하는 블록도이다. 도 3에 도시된 바와 같이, SSD 어레이(103)는 SSD(3011...n)를 포함하도록 구성될 수 있으며, n은 0(단일 SSD만이 사용되는 것을 표시함)이거나 2 이상의 정수이다. 상술한 것에 따라, n은 2 내지 약 5, 2 내지 약 10, 2 내지 약 50, 2 내지 약 100, 2 내지 약 1000 등의 범위일 수 있다. 제한 없이, SSD 어레이(103)는 일부 실시예들에서 2 이상의 SSD들을 포함한다.
SSD들(3011, 301n)은 컨트롤러(302, 302')를 각각 포함할 수 있다. 도 3에 더 도시된 바와 같이, 각각의 컨트롤러(3011, 301n)는 하드웨어 가속 엔진(hardware acceleration engine)(HAE)(303, 303')을 포함할 수 있다. 일반적으로, HAE(303, 303')는 또한 본원에서 데이터로 언급되는 데이터에 대해 가속된 동작들을 수행하도록 구성될 수 있다. 더 구체적으로, HAE(303, 303')는 SSD(301, 301') 상에(예를 들어, 비휘발성 메모리(non-volatile memory)(NVM)(304, 304') 내에) 저장되고, 및/또는 서버(102)로부터 수신될 수 있는 데이터/데이터에 대해 가속된 계산 집약적 동작들을 수행하도록 구성될 수 있다. 일부 실시예들에서, HAE(303, 303')는 필드 프로그램가능 게이트 어레이(field programmable gate array)(FPGA), 주문형 집적 회로, 암호화/복호화 가속 엔진, 압축/압축 해제 엔진, 인코드/디코드 엔진(encode/decode engine)(CODEC) 그들의 조합들 등의 형태로 구성되며, 그 중 어느 것 또는 전부는 하드웨어, 소프트웨어, 또는 그들의 조합의 형태로 인터페이스를 포함할 수 있다. 제한 없이, HAE(303, 303')는 일부 실시예들에서 하드웨어 암호화/복호화 엔진의 형태이다. 적절한 하드웨어 암호화/복호화 엔진들의 비제한 예들은 INTEL® P3700 시리즈 SSD와 같지만 이에 제한되지 않는 INTEL® 코포레이션에 의해 판매되는 특정 SSD들에 이용가능한 하드웨어 암호화 엔진들을 포함한다. 일부 실시예들에서, HAW(303, 303')는 데이터에 대해 하나 이상의 암호화 알고리즘들(예를 들어, FIPS 197에 의해 지정되는 AES 알고리즘)의 실행을 가속하도록 구성되는 하드웨어 암호화/복호화 엔진이다.
나중에 상세히 설명되는 바와 같이, 컨트롤러(302)는 JAIM(215)으로부터, 예를 들어 유선 또는 무선 통신을 통해 데이터/데이터와 연관되는 작업 실행 커맨드를 수신할 수 있다. 작업 실행 커맨드에 응답하여, 컨트롤러(302)는 데이터를 작업 요청에 따를 처리를 위해 HAE(303)에 전송할 수 있다. HAE(303)는 예를 들어 데이터에 대해 가속된 계산 집약적 동작들을 수행함으로써 작업 실행 커맨드에 의해 지정되는 방식으로 데이터를 처리할 수 있다. SSD(3011, 301n)의 구성 및/또는 수신된 작업 실행 커맨드의 구성에 따라, HAE에 의해 생성되는 출력은 예를 들어 플로 스루 방식(flow through manner)으로 서버(102)에 전달될 수 있다. 즉, 일부 실시예들에서, 출력은 서버(102)가 출력을 요청하는 요구 없이 서버(102)에 전송될 수 있다.
대안적으로 또는 부가적으로, 일부 실시예들에서, HAE(303, 303')의 출력은 SSD(3011, 301n)의 메모리, 예컨대 NVM(304, 304') 또는 임의적 전송 버퍼(305, 305')에 저장될 수 있다. 임의적 전송 버퍼(305, 305')는 임의의 적절한 전송 버퍼일 수 있고, 일부 실시예들에서 동적 랜덤 액세스 메모리(dynamic random access memory)(DRAM) 또는 정적 랜덤 액세스 메모리 또는 SRAM과 같은 휘발성 메모리를 포함하거나 휘발성 메모리의 형태이다.
제한 없이, 일부 실시예들에서, SSD(3011, 301n)는 임의적 전송 버퍼(305, 305')를 포함하고, JAIM(215)으로부터 수신되는 작업 실행 커맨드는 컨트롤러(302, 302')(또는, 특히 HAE(303, 303'))가 전송 버퍼(305)에 그것의 출력을 저장하게 하도록 구성된다. 그러한 사례들에서, JAIM(215)은 서버(102)가 출력 요청 메시지(예를 들어, 판독 버퍼 커맨드)를 SSD(3011, 301n)에 발행하게 하여, SSD 어레이(103)가 HAE(303, 303')의 출력을 서버(102)에 제공하게 하도록 더 구성될 수 있다.
예시를 위해, 본 개시내용은 이제 도 1 내지 도 3에 예시되는 시스템이 가속된 암호화 동작들을 수행하기 위해 사용되는 예시적 실시예를 설명하도록 진행될 것이다. 이와 관련하여, 클라이언트(101) 및/또는 그것의 운영자는 데이터 세트(데이터)를 암호화 알고리즘 예컨대 고급 암호화 표준에 의해 암호화하기를 원할 수 있다는 점이 주목된다. 이와 관련하여, JIM(205)은 클라이언트(101)의 COMMS(204)가 제1 신호를 서버(102)의 COMMS(214)에 송신하게 하도록 구성될 수 있다. 일부 실시예들에서, 제1 신호는 작업 가속 요청을 포함할 수 있다. 다른 것들 중에서, 작업 가속 요청은 가속되는 작업의 파라미터들을 지정할 수 있다.
그러한 파라미터들의 비제한 예는 데이터의 크기, 데이터에 대해 수행되는 동작들(이러한 경우에, 암호화이지만, 다른 계산 집약적 동작들이 구상됨), 이용되는 암호화의 타입(예를 들어, AES 암호화, SMS4 암호화 등), 암호화에 사용되는 하나 이상의 키들, 그들의 조합들 등을 포함한다. 물론, 상술한 리스트는 예를 위한 것이고, 가속되는 동작들은 고려 중인 암호화 알고리즘에 의존할 수 있다는 점이 이해되어야 한다. 일부 실시예들에서, 제1 신호는 또한 하나 이상의 키들을 포함하고 및/또는 데이터의 처리에 사용되는 하나 이상의 알고리즘들을 지정할 수 있다. 예를 들어, 데이터가 단일 키 암호화 프로토콜을 사용하여 암호화되는 경우에, 제1 신호는 데이터를 암호화하도록 HAE에 의해 사용되는 키를 포함할 수 있다. 대안적으로 또는 부가적으로, SSD들(3011, 301n) 각각에는 데이터를 암호화하기 위해 사용되는 키가 프리-프로비저닝(pre-provisioning)되었을 수 있다.
제1 신호는 또한 클라이언트(101)에 관한 정보를 포함할 수 있다. 예를 들어, 제1 신호는클라이언트(101)의 인증성을 검증하도록 서버(102)에 의해 사용될 수 있는 클라이언트 인증 정보를 포함할 수 있다. 적절한 클라이언트 식별 정보의 비제한 예들은 클라이언트(101)의 식별자, 하나 이상의 패스워드들, 하나 이상의 키들(예를 들어, 클라이언트(101)의 향상된 프라이버시 식별자(enhanced privacy identifier)(EPID)), 하나 이상의 해시들, 그들의 조합들 등을 포함한다. 이들은 물론 단지 예를 위한 것이고, 임의의 적절한 정보는 서버(102)가 클라이언트(101)의 인증성을 검출가능할 수 있기만 하면, 클라이언트 인증 정보로서 제1 신호에 포함될 수 있다. 이와 관련하여, 서버(102)는 임의의 적절한 인증 프로토콜을 통해 클라이언트(101)의 인증성을 검증할 수 있다.
클라이언트의 인증성이 검증되었다면 또는 그러한 검증이 요구되지 않으면, JAIM(215)은 서버(102)가 제2 신호를 예를 들어 COMMS(214)를 사용하여 클라이언트(101)에 송신할 수 있게 한다. 일부 실시예들에서, 제2 신호는 제1 신호를 확인 응답하고 클라이언트(101)가 데이터를 직접 또는 네트워크(104)를 통해 서버(102)에 송신할 수 있게 할 수 있다.
이러한 시점에, JAIM(215)은 작업을 시작하기 전에 클라이언트(101)로부터 전체 데이터의 수신을 대기할 수 있거나, 그것은 데이터가 수신되고 있는 동안, 예를 들어 데이터가 전송 중(inflight)이거나 서버(102)로 스트리밍되고 있음에 따라 작업을 시작할 수 있다. 임의의 경우에, JAIM(215)은 제3 신호를 SSD 어레이(1003)에 송신함으로써, 작업(이러한 경우에, 데이터의 암호화)의 수행을 개시할 수 있다. 제3 신호는 SSD 어레이(103) 내의 SSD들 중 하나 이상에 의해 처리되는 데이터뿐만 아니라, 데이터에 대해 수행되는 동작들을 상술하는 작업 실행 커맨드를 포함할 수 있다. 이러한 예시적 경우에, 예를 들어, 제3 신호는 암호화가 수행되는 데이터의 설명뿐만 아니라, 수행되는 암호화 동작들의 타입을 지정하는 작업 실행 커맨드를 포함할 수 있다. 상기 언급된 바와 같이, 작업 실행 커맨드는 SATA, NVMe, 및/또는 SAS 프로토콜들의 하나 이상의 이전, 현재, 또는 장래 개발된 버전들에 따른 벤더 특정 커맨드의 형태일 수 있다.
작업 실행 커맨드에 응답하여, SSD 어레이(103) 내의 SSD들의 컨트롤러들은 그들이 수신하는 데이터의 전부 또는 일부를 처리를 위해 하드웨어 가속 엔진(예를 들어, HAE(303, 303'))에 송신하도록 구성될 수 있다. 예를 들어 HAE(303)는 서버(102)로부터 수신되는 작업 실행 커맨드에 지정되는 동작들과 일치하는 방식으로, 또는 더 구체적으로, 서버(102)로부터 수신되는 작업 실행 커맨드에 응답하여 컨트롤러(302)에 의해 생성되는 커맨드들로부터 수신된 데이터를 처리할 수 있다. 이러한 예에서, HAE(303)는 하드웨어 암호화 엔진일 수 있으며, 예컨대 여러가지 상용가능한 SSD들에 이용될 수 있다. 따라서, SSD에 의해 수신되는 데이터가 (예를 들어, 고급 암호화 표준 또는 다른 적절한 암호화 알고리즘을 사용하여) 암호화되는 경우에, 컨트롤러(302, 302')는 데이터의 전부 또는 일부를 HAE(303, 303')에 공급할 수 있다. 이에 응답하여, HAE(303, 303')는 출력을 생성하기 위해 데이터에 대해 하드웨어 가속 암호화를 수행할 수 있다. 작업 실행 커맨드와 같이, SSD 어레이(103)의 SSD들 내의 컨트롤러들에 의해 발생되는 커맨드들은 예를 들어 SATA, NVM, 및/또는 SAS 프로토콜들의 하나 이상의 이전, 현재, 또는 장래 개발된 버전에 따라 벤더 특정 커맨드들의 형태일 수 있다.
일부 실시예들에서, JAIM(215)은 SSD 어레이(103)의 SSD(예를 들어, SSD(3011, 303n))의 컨트롤러(예를 들어, 컨트롤러(302, 302'))에 발행되는 (임의로 벤더 특정) 판독/기록 커맨드를 포함하거나, 이 커맨드와 연관되거나, 이 커맨드의 형태인 작업 실행 커맨드를 서버(102)가 생성하게 할 수 있다. 그러한 사례에서, 작업 실행 커맨드는 데이터 및/또는 출력을 판독하고 및/또는 이들을 비휘발성 메모리에 기록하는 것에 더하여, 컨트롤러가 요청된 동작들의 수행을 하드웨어 가속 엔진(예를 들어, HAE(303, 303'))에 의해 실시하게 할 수 있다. 즉, 작업 실행 커맨드에 응답하여, HAE(303, 303')의 출력은 SDD의 비휘발성 메모리(예를 들어, NVM(304, 304'))에 기록될 수 있다. 대안적으로 또는 부가적으로, 출력은 SSD의 버퍼(예를 들어, 임의적 버퍼(305, 305'))에 기록될 수 있다. 어느 하나의 경우에, 출력이 기록되면, 컨트롤러(302)는 작업의 실행이 완료되는 것을 지정하는 신호를 서버(102)에 송신할 수 있다. 그러한 신호에 응답하여, JAIM(215)은 서버(102)가 컨트롤러(302)로부터 출력의 송신을 요청하게 할 수 있다. 따라서, 예를 들어, JAIM(215)은 서버(102)가 요청 출력 커맨드를 SSD 어레이(103)의 적절한 SSD에 발행하게 할 수 있다. 요청 출력 커맨드는 SSD의 컨트롤러가 하드웨어 가속 엔진에 의해 수행되는 동작들의 출력을 판독하게 하고, 그러한 출력을 서버(102)에 송신하게 하도록 구성될 수 있다. 작업 실행 커맨드와 같이, 요청 출력 커맨드는 하나 이상의 SAT, NVMe, 및/또는 SAS 프로토콜들에 따른 벤더 특정 커맨드일 수 있다. 그 다음, 서버(102)는 출력을 예를 들어 유선 또는 무선 통신을 통해 클라이언트(101)에 전달할 수 있다.
더 일반적으로, 일부 실시예들에서, JAIM(215)은 SSD의 컨트롤러가 작업과 연관하여 수신되는 데이터를 처리를 위해 하드웨어 가속 엔진에 송신하게 하는 판독/기록 커맨드의 일부로 작업 실행 커맨드를 구성할 수 있다. 작업 실행 커맨드에 응답하여, 하드웨어 가속 엔진은 데이터에 대해 계산 집약적 동작들, 예를 들어 암호화, 복호화 등을 수행하고, SSD의 메모리, 예컨대 비휘발성 메모리, 버퍼/캐시, 그들의 조합들 등에 저장되는 출력을 생성할 수 있다. 제한 없이, 작업 실행 커맨드는 일부 실시예들에서 SSD 컨트롤러가 SSD의 버퍼에 하드웨어 가속 엔진에 의해 생성되는 출력을 저장하게 하도록 구성된다. 어느 하나의 경우에, JAI(215)은 서버(102)가 요청 출력 커맨드를 SSD 어레이(103)의 적절한 SSD에 발행하게 할 수 있다. 요청 출력 커맨드는 SSD의 컨트롤러가 SSD의 비휘발성 메모리 및/또는 버퍼/캐시에 저장되는 출력을 판독하게 하고, 판독 출력을 서버(102)에 제공하게 하는 판독 커맨드(예를 들어, 판독 비휘발성 메모리 커맨드, 판독 버퍼 커맨드, 그들의 조합들 등)를 포함하거나 판독 커맨드의 형태일 수 있다. 그 다음, JAI(215)는 서버(102)가 작업 출력을 클라이언트(101)에 전달하게 할 수 있다.
다른 비제한 실시예들에서, JAIM(215)은 서버(102)가 판독/기록 커맨드와 연관되지 않은 작업 실행 커맨드를 생성하게 할 수 있다. 이전 실시예들과 같이, 작업 실행 커맨드는 SSD의 컨트롤러가 작업과 연관하여 수신되는 데이터를 처리를 위해 하드웨어 가속 엔진에 송신하게 하도록 구성될 수 있다. 그러나, 이전 실시예들과 달리, 작업 실행 커맨드는 컨트롤러가 버퍼 또는 비휘발성 메모리에 하드웨어 가속 엔진의 출력을 저장하게 하지 않을 수 있다. 오히려, 작업 실행 커맨드는 비휘발성 메모리에 출력을 저장하는 것 없이, 컨트롤러가 하드웨어 가속 엔진의 출력을 서버 또는 특히 JAIM(215)에 자동으로 전달하게 할 수 있다. 즉, 이전 실시예들과 달리, 서버(102)(또는, 특히 JAIM(215))는 하드웨어 가속 엔진으로부터 출력을 요청할 필요가 없다. 오히려, 각각의 SSD는 출력을 하드웨어 가속 엔진으로부터 서버(102)(또는, 특히 JAIM(215))로 자동으로 제공할 수 있다. 그러한 실시예들에서, SSD 어레이(103) 내의 SSD들은 작업 실행 커맨드와 연관되는 계산 집약적 동작들에 대한 가속기들로서 전적으로 역할을 할 수 있으며, 데이터/데이터는 플로 스루 방식으로 어레이 내의 하나 이상의 SSD들에 입력되고 하나 이상의 SSD들로부터 출력된다는 점이 이해될 수 있다. 출력을 수신하는 것에 응답하여, 서버(102)는 이때 출력을 예를 들어 유선 또는 무선 통신을 통해 클라이언트(101)에 전달할 수 있다.
예 및 예시를 위해, 도 3은 하드웨어 가속 엔진(303, 303')이 컨트롤러(예를 들어, 컨트롤러(302, 302'))와 일체화되는 일 실시예를 도시한다는 점이 주목된다. 그러한 예시는 단지 예를 위한 것이고, HAE(303, 303')는 각각 컨트롤러(302, 302')와 일체화될 필요가 없다는 점이 이해되어야 한다. 실제로, 본 개시내용은 하드웨어 가속 엔진이 SSD 외부에 있지만 SSD 컨트롤러에 의해 최종적으로 제어되는 실시예들뿐만 아니라, 하드웨어 가속 엔진이 SSD 내부에 있는 개별 구성요소로 형성되는 실시예들을 구상한다.
예를 들어, 일부 실시예들에서, 컨트롤러(302, 302')는 멀티 포트 컨트롤러 예컨대 듀얼 포트 컨트롤러의 형태일 수 있다. 그러한 실시예들에서, 컨트롤러의 제1 포트는 예를 들어 적절한 인터페이스 예컨대 케이블 인터페이스를 통해 서버(102)에 통신 결합될 수 있다. 컨트롤러의 다른(예를 들어, 제2) 포트는 하드웨어 가속 엔진에 통신 결합될 수 있으며, 하드웨어 가속 엔진은 상기 언급된 바와 같이 컨트롤러로부터 분리되고, SSD로부터 분리되거나 SSD 내부에 있을 수 있다. 이러한 개념들은 도 5a 및 도 5b에 예시된다. 구체적으로, 도 5a는 SSD(301)가 듀얼 포트 컨트롤러(302')를 포함하는 예시적 실시예를 도시하며, 컨트롤러(302')의 제1 포트는 서버(102)에 결합되고, 컨트롤러(302')의 제2 포트는 컨트롤러(302')로부터 분리되지만, 그것이 SSD(301)와 일체화되는 하드웨어 가속 엔진(303')에 결합된다. 도 5b의 SSD(301')는 컨트롤러(302')의 제2 포트가 SSD(301') 외부에 있는 하드웨어 가속 엔진(303")에 결합되는 것을 제외하고, 유사한 요소들을 포함한다. 도 5a 및 도 5b에서, SSD들(301 및 301')은 도 3의 SSD들(3011...n)과 동일한 방식으로 사용될 수 있다는 점이 이해되어야 한다. 또한 서버(102)로부터 분리되는 것으로 도 5a 및 도 5b의 SSD들(301 및 301')의 도시는 예를 위한 것이고, 그러한 SSD들은 서버(102)와 일체화되거나 서버 내에 다른 방법으로 포함될 수 있다는 점이 이해되어야 한다. 최종적으로, HAE들(303' 및 303")은 도 3의 HAE(303)와 동일한 방식으로 사용될 수 있고, HAE(303")는 일부 실시예들에서 서버(102)와 일체화되거나 서버 내에 다른 방법으로 포함될 수 있다는 점이 이해되어야 한다.
도 5a 및 도 5b의 실시예들의 동작은 하드웨어 가속 엔진의 상대 위치를 제외하고, 도 1 내지 도 3과 관련하여 상기 이전에 설명된 것과 동일하다. 이해될 수 있는 바와 같이, 그러한 실시예들은 도 3에 도시되는, 즉 하드웨어 가속 엔진이 SSD 컨트롤러와 일체화되는 실시예들에 비해 특정 장점들을 제공할 수 있다. 구체적으로, 도 3의 실시예들은 가속기가 컨트롤러와 함께 정확하게 동작하고 있는 것을 보장하기 위해 중요한 업프런트 디자인(upfront design) 및 검증 노력들을 수반할 수 있다. 이것을 고려하여, 상기 언급된 대안 접근법들은 그러한 문제들을 회피하고, 가속기를 컨트롤러와 통합하는 것이 어렵거나 옵션이 아닌 사례들에서 다른 경로를 제공할 수 있다.
이해의 용이성을 위해, 상술한 실시예는 하나의 또는 상대적으로 적은 SSD들을 포함하는 고체 상태 드라이브 어레이의 맥락에서 설명되었다. 그러한 설명은 단지 예를 위한 것이고, 본원에 설명되는 기술들은 다수의 SSD들 사이에서 배치되고 및/또는 스케일링될 수 있다는 점이 주목되어야 한다. 실제로,수행되는 동작들, 데이터의 크기, 및/또는 다른 인자들에 따라, 제3 신호는 SSD 어레이(103)가 데이터를 하나의 또는 복수의 SSD들에 의해 처리하게 하도록 구성될 수 있다. 예를 들어, 데이터의 크기가 비교적 작거나 데이터에 대해 수행되는 동작들이 비교적 간단한 경우에, JAIM(215)은 SSD 어레이(103)가 전체 데이터를 단일 SSD에 의해 처리하게 하도록 제3 신호를 구성할 수 있다. 대안적으로, 데이터가 비교적 크고 및/또는 데이터에 대해 동작들의 훨씬 더 빠른 수행이 요구되는 경우에, JAIM(215)은 SSD 어레이(103)가 복수의 SSD들 사이에서 데이터를 세분하게 하도록 제3 신호를 구성할 수 있어, 각각의 SSD는 데이터의 일부 상에 동작한다.
예를 들어, 일부 실시예들에서 및 도 3에 도시된 바와 같이, SSD 어레이(103)는 적어도 제1 고체 상태 드라이브(예를 들어, SSD(3011)) 및 제2 고체 상태 드라이브(3011)를 포함하는 복수의 SSD들을 포함할 수 있다. 그러한 실시예들에서 및 도 3에 도시된 바와 같이, 제1 고체 상태 드라이브는 제1 컨트롤러, 제1 하드웨어 가속 엔진, 및 제1 비휘발성 메모리를 포함할 수 있고, 제2 고체 상태 드라이브는 제2 컨트롤러, 제2 하드웨어 가속 엔진, 및 제2 비휘발성 메모리를 포함할 수 있다.
이것을 고려하여, 서버(102)의 JAIM(215)은 제1 작업 가속 커맨드 및 상기 데이터의 제1 부분을 제1 고체 상태 드라이브에 송신하고, 제2 작업 가속 커맨드 및 데이터의 제2 부분을 제2 고체 상태 드라이브에 송신하도록 구성될 수 있다. 제1 작업 가속 커맨드는 예를 들어 일반적으로 상기 논의된 바와 같이, 상기 데이터의 제1 부분 상에 제1 가속된 동작들의 실행을 위해 제1 컨트롤러가 상기 데이터의 제1 부분을 제1 하드웨어 가속 엔진에 송신하게 하도록 구성될 수 있다. 예를 들어, 제1 하드웨어 가속 엔진은 제1 비휘발성 메모리에 제1 가속된 동작들의 출력을 저장하는 것 없이 데이터의 제1 부분 상에 제1 가속된 동작들을 실행할 수 있다. 마찬가지로, 제2 작업 가속 커맨드는 예를 들어 일반적으로 상기 설명된 바와 같이, 데이터의 제2 부분 상에 제2 가속된 동작들의 실행을 위해 제2 컨트롤러가 상기 데이터의 제2 부분을 제2 하드웨어 가속 엔진에 송신하게 하도록 구성될 수 있다. 일부 실시예들에서, 제2 하드웨어 가속 엔진은 제2 비휘발성 메모리에 제2 가속된 동작들의 출력을 저장하는 것 없이 제2 가속된 동작들을 수행할 수 있다. 그러한 실시예들에서, 제1 작업 가속 커맨드는 제1 고체 상태 드라이브가 데이터의 제1 부분 상에 수행되는 가속된 동작들의 출력을 상기 JAIM에 송신하게 하도록 더 구성될 수 있고, 제2 작업 가속 커맨드는 제2 고체 상태 드라이브가 데이터의 제2 부분 상에 수행되는 가속된 동작들의 출력을 상기 JAIM에 송신하게 하도록 더 구성될 수 있다.
상기 언급된 바와 같이, 제1 및 제2 고체 상태 드라이브들의 제1 및 제2 하드웨어 가속 엔진들은 그들의 각각의 출력을 SSD의 비휘발성 메모리에 저장하는 것 없이 제1 및 제2 가속된 동작들을 수행할 수 있다. 그러한 실시예들이 유용하지만, 하나보다 많은 고체 상태 드라이브를 이용하는 시스템들은 그러한 특정 구성에 제한되지 않는다. 실제로, 상기 설명된 다른 실시예들과 같이, 제1 및 제2 고체 상태 드라이브들은 각각 제1 전송 버퍼 및 제2 전송 버퍼를 각각 포함할 수 있다. 그러한 실시예들에서, 제1 및 제2 하드웨어 가속 엔진들은 각각 제1 및 제2 전송 버퍼들에 제1 및 제2 동작들의 출력을 저장할 수 있다. 그 다음, JAIM(215)은 제1 및 제2 고체 상태 드라이브들이 제1 및 제2 전송 버퍼들 각각 내의 출력을 서버(102)에 제공하거나, 고체 상태 드라이브들이 서버(102)와 일체화되는 사례들에서, 서버(102)의 다른 구성요소들에 제공하게 하는 하나 이상의 요청 출력 커맨드들을 서버(102)가 발행하게 할 수 있다. 임의의 경우에, 요청 출력 커맨드에 응답하여, SSD들은 출력을 그들의 각각의 전송 버퍼들로부터 임의의 적절한 인터페이스를 통해 서버(102)로 제공할 수 있다. 예를 들어, SSD가 서버(102)와 일체화되지 않는 경우에, 그것은 출력을 적절한 통신 인터페이스를 통해, 예컨대 장거리 통신 네트워크, 단거리 통신 네트워크, 그들의 조합들 등을 통해 전달할 수 있다. SSD가 서버(102)와 일체화되는 사례들에서, 그것은 출력을 통신 프로토콜 예컨대 직렬 고급 기술 결합(SATA) 프로토콜, 주변 구성요소 상호연결(peripheral component interconnect)(PCI) 프로토콜, PCI 익스프레스 프로토콜을 통해 전달할 수 있다.
물론, 본원에 설명되는 기술들은 1개 또는 2개의 SSD들을 포함하는 SSD 어레이의 사용에 제한되지 않는다. 실제로, 상술한 것으로부터 본 기술분야의 통상의 기술자는 본원에 설명되는 기술들이 데이터에 대해 계산 집약적 동작들을 처리하기 위해 상당수의 SSD들을 이용할 수 있는 것을 이해할 것이다. 즉, 계산 집약적 동작들의 수행은 요구되는 바와 같이, 작업들을 더 많거나 더 적은 SSD들에 배치함으로써 확대되거나 축소될 수 있다는 점이 이해될 수 있다.
본 개시내용의 다른 양태는 계산 집약적 동작들을 가속하는 방법들에 관한 것이다. 이와 관련하여, 도 4가 참조되며, 도 4는 본 개시내용에 따른 계산 집약적 동작들을 가속하는 방법의 일 실시예의 예시적 동작들의 흐름도이다. 도시된 바와 같이, 방법은 블록(401)에서 시작된다. 그 다음, 방법은 임의적 블록(402)으로 진행될 수 있으며, 서버는 클라이언트로부터 작업 요청을 수신할 수 있다. 블록(402)은 일부 실시예들에서와 같이, 그것의 임의적 성질을 나타내기 위해 해싱으로 예시되며, 서버 자체는 작업 요청의 소스일 수 있다는 점이 구상된다. 즉, 일부 실시예들에서, 서버는 작업 인터페이스 모듈(예를 들어, 예컨대 JIM(205))을 포함할 수 있으며, 이 모듈은 작업 가속 요청을 포함하는 제1 신호를 생성하도록 구성된다.
그 다음, 방법은 임의적 블록(403)으로 진행될 수 있으며, 클라이언트(또는 작업 가속 요청을 생성하는 다른 엔티티)가 예를 들어 일반적으로 상기 논의된 바와 같이, 인증되는지에 관한 판단이 이루어질 수 있다. 그렇지 않으면, 방법은 임의적 블록(404)으로 진행될 수 있으며, 방법이 계속되는지에 관한 판단이 이루어질 수 있다. 그렇지 않으면, 방법은 블록(409)으로 진행될 수 있고 종료된다. 그렇다면, 방법은 블록(402)으로 루프 백될 수 있고 계속된다.
클라이언트가 블록(403)에 따라 인증되면 또는 블록들(402 및/또는 403)의 동작들이 요구되지 않으면, 방법은 블록(405)으로 진행될 수 있으며, 작업 실행 커맨드는 예를 들어 일반적으로 상기 논의된 방식으로 생성되고 SSD 어레이에 송신될 수 있다. 이전에 논의된 바와 같이, 작업 실행 커맨드는 SSD 어레이 내의 SSD의 컨트롤러가 커맨드와 연관되는 데이터를 처리를 위해 하드웨어 가속 엔진에 송신하게 할 수 있다.
그 다음, 방법은 블록(405)으로 진행될 수 있으며, 그 결과 SSD 어레이 내의 SSD의 하드웨어 가속 엔진이 그러한 SSD의 버퍼 또는 메모리에 저장되는 출력을 생성하는지에 관한 판단이 이루어질 수 있다. 이전에 논의된 바와 같이, SSD의 하드웨어 가속 엔진의 출력은 예를 들어 SSD 컨트롤러에 발행되는 작업 실행 커맨드(예를 들어, 작업 실행 커맨드는 판독/기록 커맨드에 포함되거나, 이 커맨드의 형태이거나, 이 커맨드와 연관됨)에 응답하여, SSD의 버퍼 및/또는 비휘발성 메모리에 저장될 수 있다. 출력이 버퍼 또는 메모리에 저장되면, 방법은 블록(406)으로 진행될 수 있으며, 출력은 적절하게 SSD 버퍼 및/또는 메모리로부터 획득될 수 있다. 상기 논의된 바와 같이, 이것은 예를 들어 서버에 의해 SSD의 컨트롤러에 발행되는 판독 커맨드(예를 들어, 판독 메모리 또는 판독 버퍼 커맨드)의 발행에 의해 달성될 수 있다. 그러나, 출력이 SSD의 버퍼 또는 메모리에 저장되지 않으면, 방법은 블록(407)으로 진행될 수 있으며, 출력은 자동으로 SSD로부터 수신될 수 있다. 즉, 블록(407)에 따라, 작업 실행 커맨드를 발행하는 당사자는 예를 들어 출력을 요청하는 부가 커맨드를 발행하는 요구 없이, SSD 어레이 내의 SSD(들)의 하드웨어 가속 엔진의 출력을 자동으로 수신할 수 있다.
임의의 경우에, 방법은 이때 블록(408)으로 진행될 수 있으며, 가속되는 부가 계산 집약적 동작들이 있는지에 관한 판단이 이루어질 수 있다. 그렇다면, 방법은 블록(402)으로 루프 백될 수 있다. 그렇지 않으면, 방법은 블록(409)으로 진행될 수 있고 종료된다.
예들
이하의 예들은 추가 실시예들과 관련된다. 본 개시내용의 이하의 예들은 대상 재료 예컨대 아래에 제공되는 바와 같이, 시스템, 디바이스, 방법, 실행될 때 머신이 방법에 기초하여 액트들을 수행하게 하는 명령어들을 저장하는 컴퓨터 판독가능 저장 매체, 및/또는 방법에 기초하여 액트들을 수행하는 수단을 포함할 수 있다.
예 1: 본 개시내용의 일 예에 따르면, 계산 집약적 동작들을 가속하는 시스템이 제공되며, 시스템은 컨트롤러, 하드웨어 가속 엔진, 및 비휘발성 메모리를 포함하는 적어도 하나의 고체 상태 드라이브를 포함하며, 컨트롤러는 서버로부터의 작업 실행 커맨드의 수신에 응답하여, 작업 실행 커맨드와 연관되는 데이터를 데이터에 대한 가속된 동작들의 실행을 위해 하드웨어 가속 엔진에 송신하되, 비휘발성 메모리에 가속된 동작들의 출력을 저장하는 일이 없게 하고; 출력을 서버에 제공하도록 구성된다.
예 2: 이러한 예는 예 1의 특징들의 어느 것 또는 전부를 포함하며, 적어도 하나의 고체 상태 드라이브는 전송 버퍼를 더 포함하고; 컨트롤러는 하드웨어 가속 엔진으로 하여금 전송 버퍼에 출력을 저장하게 하도록 더 구성되고; 컨트롤러는 서버로부터의 출력 요청 메시지의 수신에 응답하여 출력을 서버에 제공하도록 더 구성된다.
예 3: 이러한 예는 예 1 및 예 2 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 컨트롤러는 하드웨어 가속 엔진으로 하여금 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하도록 더 구성된다.
예 4: 이러한 예는 예 1 내지 예 3 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함한다.
예 5: 이러한 예는 예 1 내지 예 3 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 적어도 하나의 고체 상태 드라이브는 서버로부터 원격인 고체 상태 드라이브 어레이에 포함된다.
예 6: 이러한 예는 예 1 내지 예 5 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 적어도 하나의 고체 상태 드라이브는 서버와 일체화된다.
예 7: 이러한 예는 예 1 내지 예 6중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 컨트롤러는 출력을 서버에 자동으로 제공하도록 구성된다.
예 8: 이러한 예는 예 1 내지 예 7 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 선택된다.
예 9: 이러한 예는 예 1 내지 예 8 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 가속된 동작들은 데이터를 암호화하는 동작, 데이터를 복호화하는 동작, 데이터를 인코딩하는 동작, 데이터를 디코딩하는 동작, 데이터를 압축하는 동작, 및 데이터를 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함한다.
예 10: 이러한 예는 예 1 내지 예 9 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 적어도 하나의 고체 상태 드라이브는 고체 상태 드라이브 어레이 내의 복수의 고체 상태 드라이브들을 포함하고, 복수의 고체 상태 드라이브들은 적어도 제1 고체 상태 드라이브 및 제2 고체 상태 드라이브를 포함하고; 제1 고체 상태 드라이브는 제1 컨트롤러, 제1 하드웨어 가속 엔진, 및 제1 비휘발성 메모리를 포함하고; 제2 고체 상태 드라이브는 제2 컨트롤러, 제2 하드웨어 가속 엔진, 및 제2 비휘발성 메모리를 포함하고; 제1 컨트롤러는 서버로부터의 작업 실행 커맨드의 수신에 응답하여, 작업 실행 커맨드와 연관되는 제1 데이터를 제1 데이터에 대한 제1 가속된 동작들의 실행을 위해 제1 하드웨어 가속 엔진에 송신하되, 제1 비휘발성 메모리에 제1 가속된 동작들의 제1 출력을 저장하는 일이 없게 하도록 구성되고; 제2 컨트롤러는 서버로부터의 작업 실행 커맨드의 수신에 응답하여, 작업 실행 커맨드와 연관되는 제2 데이터를 제2 데이터에 대한 제2 가속된 동작들의 실행을 위해 제2 하드웨어 가속 엔진에 송신하되, 제2 비휘발성 메모리에 제2 가속된 동작들의 제2 출력을 저장하는 일이 없게 하도록 구성되고; 제1 및 제2 컨트롤러들은 제1 및 제2 출력들 각각을 서버에 제공하도록 구성된다.
예 11: 이러한 예는 예 10의 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브는 제1 전송 버퍼 및 제2 전송 버퍼를 각각 포함하고; 제1 컨트롤러는 제1 하드웨어 가속 엔진으로 하여금 제1 전송 버퍼에 제1 출력을 저장하게 하도록 더 구성되고; 제2 컨트롤러는 제2 하드웨어 가속 엔진으로 하여금 제2 전송 버퍼에 제2 출력을 저장하게 하도록 더 구성되고; 제1 컨트롤러는 서버로부터의 제1 출력 요청 메시지의 수신에 응답하여 제1 출력을 서버에 제공하도록 더 구성되고; 제2 컨트롤러는 서버로부터의 제2 출력 요청 메시지의 수신에 응답하여 제2 출력을 서버에 제공하도록 더 구성된다.
예 12: 이러한 예는 예 10 또는 예 11 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 컨트롤러들은 제1 및 제2 하드웨어 가속 엔진들 각각이 제1 및 제2 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하도록 더 구성된다.
예 13: 이러한 예는 예 10 내지 12 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함한다.
예 14: 이러한 예는 예 10 내지 예 13 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들 중 적어도 하나는 서버로부터 원격인 고체 상태 드라이브 어레이에 포함된다.
예 15: 이러한 예는 예 10 내지 예 14 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들 중 적어도 하나는 서버와 일체화된다.
예 16: 이러한 예는 예 10 내지 예 15 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 컨트롤러들은 제1 및 제2 출력들 각각을 서버에 자동으로 제공하도록 구성된다.
예 17: 이러한 예는 예 10 내지 예 16 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 하드웨어 가속 엔진 및 제2 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 각각 선택된다.
예 18: 이러한 예는 예 10 내지 예 17 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 가속된 동작들은 데이터의 제1 부분을 암호화하는 동작, 데이터의 제1 부분을 복호화하는 동작, 데이터의 제1 부분을 인코딩하는 동작, 데이터의 제1 부분을 디코딩하는 동작, 데이터의 제1 부분을 압축하는 동작, 데이터의 제1 부분을 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함하고; 제2 가속된 동작들은 데이터의 제2 부분을 암호화하는 동작, 데이터의 제2 부분을 복호화하는 동작, 데이터의 제2 부분을 인코딩하는 동작, 데이터의 제2 부분을 디코딩하는 동작, 데이터의 제2 부분을 압축하는 동작, 데이터의 제2 부분을 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함한다.
예 19: 이러한 예에 따르면, 계산 집약적 동작들을 가속하는 방법이 제공되며, 방법은 고체 상태 드라이브의 컨트롤러에 의해, 서버로부터 작업 실행 커맨드를 수신하는 것에 응답하여, 작업 실행 커맨드와 연관되는 데이터를 가속된 동작들의 실행을 위해 고체 상태 드라이브의 하드웨어 가속 엔진에 송신하는 단계; 출력을 생성하도록 하드웨어 가속 엔진에 의해 데이터에 대해 가속된 동작들을 수행하되, 고체 상태 드라이브의 비휘발성 메모리에 출력을 저장하는 일이 없게 하는 단계; 및 출력을 서버에 제공하는 단계를 포함한다.
예 20: 이러한 예는 예 19의 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 전송 버퍼를 더 포함하고, 방법은 컨트롤러에 의해, 하드웨어 가속 엔진으로 하여금 전송 버퍼에 출력을 저장하게 하는 단계; 및 서버로부터의 출력 요청 메시지의 수신에 응답하여 출력을 서버에 제공하는 단계를 더 포함한다.
예 21: 이러한 예는 예 19 및 예 20 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하고, 컨트롤러에 의해, 하드웨어 가속 엔진으로 하여금 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하는 단계를 더 포함한다.
예 22: 이러한 예는 예 19 내지 예 21 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함한다.
예 23: 이러한 예는 예 19 내지 예 22 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 서버로부터 원격인 고체 상태 드라이브 어레이에 포함된다.
예 24: 이러한 예는 예 19 내지 예 23 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 서버와 일체화된다.
예 25: 이러한 예는 예 19 내지 예 24 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하고, 출력을 서버에 자동으로 제공하는 단계를 더 포함한다.
예 26: 이러한 예는 예 19 내지 예 25 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 선택된다.
예 27: 이러한 예는 예 19 내지 예 26 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 가속된 동작들은 데이터를 암호화하는 동작, 데이터를 복호화하는 동작, 데이터를 인코딩하는 동작, 데이터를 디코딩하는 동작, 데이터를 압축하는 동작, 및 데이터를 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함한다.
예 28: 이러한 예는 예 19 내지 예 27 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 고체 상태 드라이브 어레이 내의 복수의 고체 상태 드라이브들을 포함하고, 복수의 고체 상태 드라이브들은 적어도 제1 고체 상태 드라이브 및 제2 고체 상태 드라이브를 포함하고, 제1 고체 상태 드라이브는 제1 컨트롤러, 제1 하드웨어 가속 엔진, 및 제1 비휘발성 메모리를 포함하고, 제2 고체 상태 드라이브는 제2 컨트롤러, 제2 하드웨어 가속 엔진, 및 제2 비휘발성 메모리를 포함하고; 방법은 작업 실행 커맨드의 수신에 응답하여, 제1 컨트롤러에 의해, 작업 실행 커맨드와 연관되는 제1 데이터를 제1 데이터에 대한 제1 가속된 동작들의 실행을 위해 제1 하드웨어 가속 엔진에 송신하되, 제1 비휘발성 메모리에 제1 가속된 동작들의 제1 출력을 저장하는 일이 없게 하는 단계; 제2 컨트롤러에 의해, 작업 실행 커맨드와 연관되는 제2 데이터를 제2 데이터에 대한 제2 가속된 동작들의 실행을 위해 제2 하드웨어 가속 엔진에 송신하되, 제2 비휘발성 메모리에 제2 가속된 동작들의 제2 출력을 저장하는 일이 없게 하는 단계; 및 제1 및 제2 출력들을 제1 및 제2 컨트롤러들 각각에 의해 서버에 제공하는 단계를 더 포함한다.
예 29: 이러한 예는 예 28의 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들은 제1 전송 버퍼 및 제2 전송 버퍼를 각각 포함하고, 방법은 제1 하드웨어 가속 엔진으로 하여금 제1 전송 버퍼에 제1 출력을 저장하게 하는 단계; 제2 하드웨어 가속 엔진으로 하여금 제2 전송 버퍼에 제2 출력을 저장하게 하는 단계; 및 서버로부터의 적어도 하나의 출력 요청 메시지에 응답하여, 제1 및 제2 출력 중 적어도 하나를 서버에 제공하는 단계를 더 포함한다.
예 30: 이러한 예는 예 28 및 예 29 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하고, 제1 컨트롤러에 의해, 제1 하드웨어 가속 엔진으로 하여금 제1 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하는 단계; 및 제2 컨트롤러에서, 제2 하드웨어 가속 엔진으로 하여금 제2 가속된 동작들을 파라미터들에 따라 수행하게 하는 단계를 더 포함한다.
예 31: 이러한 예는 예 28 내지 예 30 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함한다.
예 32: 이러한 예는 예 28 내지 예 31 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들 중 적어도 하나는 서버로부터 원격인 고체 상태 드라이브 어레이에 포함된다.
예 33: 이러한 예는 예 28 내지 예 32 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들 중 적어도 하나는 서버와 일체화된다.
예 34: 이러한 예는 예 28 내지 예 33 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하고, 제1 및 제2 출력들을 제1 및 제2 컨트롤러들 각각에 의해 서버에 자동으로 제공하는 단계를 더 포함한다.
예 35: 이러한 예는 예 28 내지 예 34 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 하드웨어 가속 엔진 및 제2 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 각각 선택된다.
예 36: 이러한 예는 예 28 내지 예 35 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 가속된 동작들은 데이터의 제1 부분을 암호화하는 동작, 데이터의 제1 부분을 복호화하는 동작, 데이터의 제1 부분을 인코딩하는 동작, 데이터의 제1 부분을 디코딩하는 동작, 데이터의 제1 부분을 압축하는 동작, 데이터의 제1 부분을 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함하고; 제2 가속된 동작들은 데이터의 제2 부분을 암호화하는 동작, 데이터의 제2 부분을 복호화하는 동작, 데이터의 제2 부분을 인코딩하는 동작, 데이터의 제2 부분을 디코딩하는 동작, 데이터의 제2 부분을 압축하는 동작, 데이터의 제2 부분을 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함한다.
예 37: 이러한 예에 따르면, 컴퓨터 판독가능 명령어들을 저장하는 적어도 하나의 컴퓨터 판독가능 매체가 제공되며, 명령어들은 고체 상태 드라이브의 컨트롤러에 의해 실행될 때, 서버로부터 작업 실행 커맨드를 수신하는 것에 응답하여, 작업 실행 커맨드와 연관되는 데이터를 가속된 동작들의 실행을 위해 고체 상태 드라이브의 하드웨어 가속 엔진에 송신하는 동작; 출력을 생성하도록 하드웨어 가속 엔진에 의해 데이터에 대해 가속된 동작들을 수행하되, 고체 상태 드라이브의 비휘발성 메모리에 출력을 저장하는 일이 없게 하는 동작; 및 출력을 서버에 제공하는 동작을 포함하는 동작들의 수행을 야기한다.
예 38: 이러한 예는 예 37의 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 전송 버퍼를 더 포함하고 명령어들은 컨트롤러에 의해 실행될 때 하드웨어 가속 엔진으로 하여금 전송 버퍼에 출력을 저장하게 하는 동작; 및 서버로부터의 출력 요청 메시지의 수신에 응답하여 출력을 서버에 제공하는 동작을 포함하는 동작들의 수행을 더 야기한다.
예 39: 이러한 예는 예 37 및 예 38 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 명령어들은 컨트롤러에 의해 실행될 때, 하드웨어 가속 엔진으로 하여금 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하는 동작을 포함하는 동작들의 수행을 더 야기한다.
예 40: 이러한 예는 예 37 내지 예 39 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함한다.
예 41: 이러한 예는 예 37 내지 예 40 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 서버로부터 원격인 고체 상태 드라이브 어레이에 포함된다.
예 42: 이러한 예는 예 37 내지 예 41 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 서버와 일체화된다.
예 43: 이러한 예는 예 37 내지 예 42 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 명령어들은 컨트롤러에 의해 실행될 때, 출력을 서버에 자동으로 제공하는 동작을 포함하는 동작들의 수행을 더 야기한다.
예 44: 이러한 예는 예 37 내지 예 43 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 선택된다.
예 45: 이러한 예는 예 37 내지 예 44 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 가속된 동작들은 데이터를 암호화하는 동작, 데이터를 복호화하는 동작, 데이터를 인코딩하는 동작, 데이터를 디코딩하는 동작, 데이터를 압축하는 동작, 및 데이터를 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함한다.
예 46: 이러한 예는 예 37 내지 예 45 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 고체 상태 드라이브는 고체 상태 드라이브 어레이 내의 복수의 고체 상태 드라이브들을 포함하고, 복수의 고체 상태 드라이브들은 적어도 제1 고체 상태 드라이브 및 제2 고체 상태 드라이브를 포함하고, 제1 고체 상태 드라이브는 제1 컨트롤러, 제1 하드웨어 가속 엔진, 및 제1 비휘발성 메모리를 포함하고, 제2 고체 상태 드라이브는 제2 컨트롤러, 제2 하드웨어 가속 엔진, 및 제2 비휘발성 메모리를 포함하고; 명령어들은 제1 및 제2 컨트롤러들에 의해 실행될 때, 작업 실행 커맨드의 수신에 응답하여, 제1 컨트롤러에 의해, 작업 실행 커맨드와 연관되는 제1 데이터를 제1 데이터에 대한 제1 가속된 동작들의 실행을 위해 제1 하드웨어 가속 엔진에 송신하되, 제1 비휘발성 메모리에 제1 가속된 동작들의 제1 출력을 저장하는 일이 없게 하는 동작; 제2 컨트롤러에 의해, 작업 실행 커맨드와 연관되는 제2 데이터를 제2 데이터에 대한 제2 가속된 동작들의 실행을 위해 제2 하드웨어 가속 엔진에 송신하되, 제2 비휘발성 메모리에 제2 가속된 동작들의 제2 출력을 저장하는 일이 없게 하는 동작; 및 제1 및 제2 출력들을 제1 및 제2 컨트롤러들 각각에 의해 서버에 제공하는 동작을 포함하는 동작들의 수행을 더 야기한다.
예 47: 이러한 예는 예 46의 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들은 제1 전송 버퍼 및 제2 전송 버퍼를 각각 포함하고, 명령어들은 제1 및 제2 컨트롤러들에 의해 실행될 때, 제1 하드웨어 가속 엔진으로 하여금 제1 전송 버퍼에 제1 출력을 저장하게 하는 동작; 제2 하드웨어 가속 엔진으로 하여금 제2 전송 버퍼에 제2 출력을 저장하게 하는 동작; 및 서버로부터의 적어도 하나의 출력 요청 메시지에 응답하여, 제1 및 제2 출력 중 적어도 하나를 서버에 제공하는 동작을 포함하는 동작들의 수행을 더 야기한다.
예 48: 이러한 예는 예 46 및 예 47 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 명령어들은 제1 및 제2 컨트롤러들에 의해 실행될 때, 제1 컨트롤러에 의해, 제1 하드웨어 가속 엔진으로 하여금 제1 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하는 동작; 및 제2 컨트롤러에 의해, 제2 하드웨어 가속 엔진으로 하여금 제2 가속된 동작들을 파라미터들에 따라 수행하게 하는 동작을 포함하는 동작들의 수행을 더 야기한다.
예 49: 이러한 예는 예 46 내지 예 48 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함한다.
예 50: 이러한 예는 예 46 내지 예 49 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들 중 적어도 하나는 서버로부터 원격인 고체 상태 드라이브 어레이에 포함된다.
예 51: 이러한 예는 예 46 내지 예 50 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 및 제2 고체 상태 드라이브들 중 적어도 하나는 서버와 일체화된다.
예 52: 이러한 예는 예 46 내지 예 51 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 명령어들은 제1 및 제2 컨트롤러들에 의해 실행될 때, 제1 및 제2 출력들을 제1 및 제2 컨트롤러들 각각에 의해 서버에 자동으로 제공하는 동작을 포함하는 동작들의 수행을 더 야기한다.
예 53: 이러한 예는 예 46 내지 예 52 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 하드웨어 가속 엔진 및 제2 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 각각 선택된다.
예 54: 이러한 예는 예 46 내지 예 53 중 어느 하나에 대한 특징들의 어느 것 또는 전부를 포함하며, 제1 가속된 동작들은 데이터의 제1 부분을 암호화하는 동작, 데이터의 제1 부분을 복호화하는 동작, 데이터의 제1 부분을 인코딩하는 동작, 데이터의 제1 부분을 디코딩하는 동작, 데이터의 제1 부분을 압축하는 동작, 데이터의 제1 부분을 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함하고; 제2 가속된 동작들은 데이터의 제2 부분을 암호화하는 동작, 데이터의 제2 부분을 복호화하는 동작, 데이터의 제2 부분을 인코딩하는 동작, 데이터의 제2 부분을 디코딩하는 동작, 데이터의 제2 부분을 압축하는 동작, 데이터의 제2 부분을 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함한다.
예 55: 이러한 예에 따르면, 적어도 하나의 고체 상태 디스크의 컨트롤러에 의해 실행될 때 예 19 내지 예 36 중 어느 하나에 대한 방법의 수행을 야기하는 컴퓨터 판독가능 명령어들을 포함하는 적어도 하나의 컴퓨터 판독가능 매체가 제공된다.
본원에서 이용되었던 용어들 및 표현들은 제한이 아닌 설명의 조건으로 사용되고, 그러한 용어들 및 표현들의 사용에서, 도시되고 설명되는 특징들의 임의의 균등물들(또는 그것의 부분들)을 배제하는 의도는 없고, 다양한 수정들은 청구항들의 범위 내에 가능하다는 점이 인식된다. 따라서, 청구항들은 모든 그러한 균등물들을 커버하도록 의도된다.

Claims (25)

  1. 계산 집약적 동작들을 가속하는 시스템으로서,
    컨트롤러, 하드웨어 가속 엔진, 및 비휘발성 메모리를 포함하는 적어도 하나의 고체 상태 드라이브를 포함하며, 상기 컨트롤러는,
    서버로부터의 작업 실행 커맨드의 수신에 응답하여, 상기 작업 실행 커맨드와 연관되는 데이터를 상기 데이터에 대한 가속된 동작들의 실행을 위해 상기 하드웨어 가속 엔진에 송신하되, 상기 비휘발성 메모리에 상기 가속된 동작들의 출력을 저장하는 일이 없게 하고;
    상기 출력을 상기 서버에 제공하도록 구성되는, 시스템.
  2. 제1항에 있어서,
    상기 적어도 하나의 고체 상태 드라이브는 전송 버퍼를 더 포함하고;
    상기 컨트롤러는 상기 하드웨어 가속 엔진으로 하여금 상기 전송 버퍼에 상기 출력을 저장하게 하도록 더 구성되고;
    상기 컨트롤러는 상기 서버로부터의 출력 요청 메시지의 수신에 응답하여 상기 출력을 상기 서버에 제공하도록 더 구성되는, 시스템.
  3. 제1항에 있어서, 상기 컨트롤러는 상기 하드웨어 가속 엔진으로 하여금 상기 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하도록 더 구성되는, 시스템.
  4. 제3항에 있어서, 상기 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함하는, 시스템.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 적어도 하나의 고체 상태 드라이브는 상기 서버로부터 원격인 고체 상태 드라이브 어레이에 포함되는, 시스템.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 적어도 하나의 고체 상태 드라이브는 상기 서버와 일체화되는, 시스템.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 컨트롤러는 상기 출력을 상기 서버에 자동으로 제공하도록 구성되는, 시스템.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 선택되는, 시스템.
  9. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 가속된 동작들은 상기 데이터를 암호화하는 동작, 상기 데이터를 복호화하는 동작, 상기 데이터를 인코딩하는 동작, 상기 데이터를 디코딩하는 동작, 상기 데이터를 압축하는 동작, 및 상기 데이터를 압축 해제하는 동작 중 적어도 일부, 또는 그들의 조합을 포함하는, 시스템.
  10. 계산 집약적 동작들을 가속하는 방법으로서, 고체 상태 드라이브의 컨트롤러에 의해,
    서버로부터 작업 실행 커맨드를 수신하는 것에 응답하여, 상기 작업 실행 커맨드와 연관되는 데이터를 가속된 동작들의 실행을 위해 상기 고체 상태 드라이브의 하드웨어 가속 엔진에 송신하는 단계;
    출력을 생성하도록 상기 하드웨어 가속 엔진에 의해 상기 데이터에 대해 상기 가속된 동작들을 수행하되, 상기 고체 상태 드라이브의 비휘발성 메모리에 상기 출력을 저장하는 일 없게 하는 단계; 및
    상기 출력을 상기 서버에 제공하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서, 상기 고체 상태 드라이브는 전송 버퍼를 더 포함하고, 상기 방법은 상기 컨트롤러에 의해,
    상기 하드웨어 가속 엔진으로 하여금 상기 전송 버퍼에 상기 출력을 저장하게 하는 단계; 및
    상기 서버로부터의 출력 요청 메시지의 수신에 응답하여 상기 출력을 상기 서버에 제공하는 단계
    를 더 포함하는 방법.
  12. 제10항에 있어서, 상기 컨트롤러에 의해,
    상기 하드웨어 가속 엔진으로 하여금 상기 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하는 단계를 더 포함하는 방법.
  13. 제11항에 있어서, 상기 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함하는 방법.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 고체 상태 드라이브는 상기 서버로부터 원격인 고체 상태 드라이브 어레이에 포함되는 방법.
  15. 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 고체 상태 드라이브는 상기 서버와 일체화되는 방법.
  16. 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 출력을 상기 서버에 자동으로 제공하는 단계를 더 포함하는 방법.
  17. 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 선택되는 방법.
  18. 컴퓨터 판독가능 명령어들을 저장하고 있는 적어도 하나의 컴퓨터 판독가능 매체로서, 상기 명령어들은 고체 상태 드라이브의 컨트롤러에 의해 실행될 때,
    서버로부터 작업 실행 커맨드를 수신하는 것에 응답하여, 상기 작업 실행 커맨드와 연관되는 데이터를 가속된 동작들의 실행을 위해 상기 고체 상태 드라이브의 하드웨어 가속 엔진에 송신하는 동작;
    출력을 생성하도록 상기 하드웨어 가속 엔진에 의해 상기 데이터에 대해 상기 가속된 동작들을 수행하되, 상기 고체 상태 드라이브의 비휘발성 메모리에 상기 출력을 저장하는 일이 없게 하는 동작; 및
    상기 출력을 상기 서버에 제공하는 동작
    을 포함하는 동작들의 수행을 야기하는, 적어도 하나의 컴퓨터 판독가능 매체.
  19. 제18항에 있어서, 상기 고체 상태 드라이브는 전송 버퍼를 더 포함하고, 상기 명령어들은 상기 컨트롤러에 의해 실행될 때,
    상기 하드웨어 가속 엔진으로 하여금 상기 전송 버퍼에 상기 출력을 저장하게 하는 동작; 및
    상기 서버로부터의 출력 요청 메시지의 수신에 응답하여 상기 출력을 상기 서버에 제공하는 동작
    을 포함하는 동작들의 수행을 더 야기하는, 적어도 하나의 컴퓨터 판독가능 매체.
  20. 제18항에 있어서, 상기 명령어들은 상기 컨트롤러에 의해 실행될 때,
    상기 하드웨어 가속 엔진으로 하여금 상기 가속된 동작들을 가속될 작업의 파라미터들에 따라 수행하게 하는 동작을 포함하는 동작들의 수행을 더 야기하는, 적어도 하나의 컴퓨터 판독가능 매체.
  21. 제20항에 있어서, 상기 파라미터들은 데이터의 크기, 데이터에 대해 수행될 하나 이상의 동작들, 그들의 조합들 등 중 적어도 하나를 포함하는, 적어도 하나의 컴퓨터 판독가능 매체.
  22. 제18항 내지 제21항 중 어느 한 항에 있어서, 상기 고체 상태 드라이브는 상기 서버로부터 원격인 고체 상태 드라이브 어레이에 포함되는, 적어도 하나의 컴퓨터 판독가능 매체.
  23. 제18항 내지 제21항 중 어느 한 항에 있어서, 상기 고체 상태 드라이브는 상기 서버와 일체화되는, 적어도 하나의 컴퓨터 판독가능 매체.
  24. 제18항 내지 제21항 중 어느 한 항에 있어서, 상기 명령어들은 상기 컨트롤러에 의해 실행될 때,
    상기 출력을 상기 서버에 자동으로 제공하는 동작을 포함하는 동작들의 수행을 더 야기하는, 적어도 하나의 컴퓨터 판독가능 매체.
  25. 제18항 내지 제21항 중 어느 한 항에 있어서, 상기 하드웨어 가속 엔진은 암호화/복호화 엔진, 인코드/디코드 엔진, 압축/압축 해제 엔진, 또는 그들의 조합으로 구성되는 그룹으로부터 선택되는, 적어도 하나의 컴퓨터 판독가능 매체.
KR1020177005007A 2014-09-26 2015-08-31 고체 상태 드라이브들을 사용하여 계산 집약적 동작들을 가속하는 기술들 KR102320150B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/498,030 2014-09-26
US14/498,030 US20160094619A1 (en) 2014-09-26 2014-09-26 Technologies for accelerating compute intensive operations using solid state drives
PCT/US2015/047755 WO2016048598A1 (en) 2014-09-26 2015-08-31 Technologies for accelerating compute intensive operations using solid state drives

Publications (2)

Publication Number Publication Date
KR20170034425A true KR20170034425A (ko) 2017-03-28
KR102320150B1 KR102320150B1 (ko) 2021-11-01

Family

ID=55581787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177005007A KR102320150B1 (ko) 2014-09-26 2015-08-31 고체 상태 드라이브들을 사용하여 계산 집약적 동작들을 가속하는 기술들

Country Status (7)

Country Link
US (1) US20160094619A1 (ko)
EP (1) EP3198458B1 (ko)
JP (1) JP6569962B2 (ko)
KR (1) KR102320150B1 (ko)
CN (1) CN106663178A (ko)
TW (1) TWI662414B (ko)
WO (1) WO2016048598A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11032259B1 (en) * 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
US9910705B1 (en) * 2015-02-18 2018-03-06 Altera Corporation Modular offloading for computationally intensive tasks
JP6493318B2 (ja) * 2016-06-24 2019-04-03 株式会社デンソー データ処理システム
US10346041B2 (en) 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US10372659B2 (en) 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US10210123B2 (en) 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US11144496B2 (en) 2016-07-26 2021-10-12 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US20190109720A1 (en) 2016-07-26 2019-04-11 Samsung Electronics Co., Ltd. Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd
US11461258B2 (en) 2016-09-14 2022-10-04 Samsung Electronics Co., Ltd. Self-configuring baseboard management controller (BMC)
US10353604B2 (en) 2016-12-27 2019-07-16 Intel Corporation Object transformation in a solid state drive
US10324644B2 (en) * 2017-03-31 2019-06-18 Hewlett Packard Enterprise Development Lp Memory side accelerator thread assignments
CA3062336C (en) 2017-05-03 2022-07-12 Eidetic Communications Inc. Apparatus and method for controlling data acceleration
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10496335B2 (en) 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
US10509698B2 (en) * 2018-02-27 2019-12-17 Goke Us Research Laboratory Method and apparatus for data encoding and decoding using a standardized data storage and retrieval protocol
US10509600B2 (en) * 2018-02-27 2019-12-17 Goke Us Research Laboratory Method and apparatus for data compression and decompression using a standardized data storage and retrieval protocol
US10452871B2 (en) * 2018-02-27 2019-10-22 Goke Us Research Laboratory Method and apparatus for data encryption using a standardized data storage and retrieval protocol
US10592463B2 (en) 2018-03-05 2020-03-17 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
US10585819B2 (en) * 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
CN108537048B (zh) * 2018-03-13 2021-08-17 超越科技股份有限公司 一种加密固态硬盘与授权计算机的安全关联方法及系统
US10884672B2 (en) * 2018-04-02 2021-01-05 Samsung Electronics Co., Ltd. NDP-server: a data-centric computing architecture based on storage server in data center
KR102570581B1 (ko) * 2018-06-07 2023-08-24 삼성전자 주식회사 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
CN108920964B (zh) * 2018-06-21 2020-09-29 深圳忆联信息系统有限公司 可重构硬件加解密方法、系统、计算机设备及存储介质
US11868284B2 (en) * 2018-12-05 2024-01-09 Rongming Microelectronics (Jinan) Co., Ltd. Peripheral device with embedded video codec functionality
US10860504B2 (en) * 2018-12-05 2020-12-08 New Century Technologies Ltd. Peripheral device with embedded video codec functionality
US11112972B2 (en) 2018-12-05 2021-09-07 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDs
KR102348154B1 (ko) * 2018-12-14 2022-01-07 론밍 마이크로일렉트로닉스 (지난) 엘티디. 내장된 비디오 코덱 기능성을 구비한 주변 디바이스
US11054993B2 (en) 2019-05-28 2021-07-06 Intel Corporation Mass storage system having peer-to-peer data movements between a cache and a backend store
US11288013B2 (en) * 2019-07-15 2022-03-29 Micron Technology, Inc. Hardware based status collector acceleration engine for memory sub-system operations
CN112765055B (zh) * 2019-11-01 2021-12-21 北京忆芯科技有限公司 存储设备的控制部件
JP7028902B2 (ja) * 2020-02-07 2022-03-02 株式会社日立製作所 ストレージシステム及び入出力制御方法
CN112084138A (zh) * 2020-08-21 2020-12-15 杭州电子科技大学 一种用于可信存储的SoC安全盘控芯片架构设计方法
KR20230035947A (ko) 2021-09-06 2023-03-14 삼성전자주식회사 저장 장치 및 그의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054236A1 (en) * 2010-06-29 2012-03-01 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries based on multiple hardware accelerators
US8626995B1 (en) * 2009-01-08 2014-01-07 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307416A1 (en) * 2008-06-04 2009-12-10 Intitio Corporation Ssd with a controller accelerator
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
CN101986305B (zh) * 2010-11-01 2013-04-17 华为技术有限公司 一种文件系统的操作方法及一种通信装置
CN102902581B (zh) * 2011-07-29 2016-05-11 国际商业机器公司 硬件加速器及方法、中央处理单元、计算设备
US11048410B2 (en) * 2011-08-24 2021-06-29 Rambus Inc. Distributed procedure execution and file systems on a memory interface
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US9423983B2 (en) * 2012-01-19 2016-08-23 Syncsort Incorporated Intelligent storage controller
US8819335B1 (en) * 2013-08-30 2014-08-26 NXGN Data, Inc. System and method for executing map-reduce tasks in a storage device
CN103955440A (zh) * 2013-12-18 2014-07-30 记忆科技(深圳)有限公司 一种非易失存储设备及其进行数据操作的方法
US9933976B2 (en) * 2014-04-28 2018-04-03 Hitachi, Ltd. Storage apparatus and data processing method thereof, and storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8626995B1 (en) * 2009-01-08 2014-01-07 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
US20120054236A1 (en) * 2010-06-29 2012-03-01 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries based on multiple hardware accelerators

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Arup De 외, 'Minerva: Accelerating Data Analysis in Next-Generation SSDs', 2013 IEEE 21st Annual International Symposium on Field-Programmable Custom Computing Machines, 2013.04.* *

Also Published As

Publication number Publication date
EP3198458A4 (en) 2018-06-13
WO2016048598A1 (en) 2016-03-31
TW201629787A (zh) 2016-08-16
US20160094619A1 (en) 2016-03-31
TWI662414B (zh) 2019-06-11
CN106663178A (zh) 2017-05-10
EP3198458A1 (en) 2017-08-02
JP2017534942A (ja) 2017-11-24
JP6569962B2 (ja) 2019-09-04
EP3198458B1 (en) 2021-08-18
KR102320150B1 (ko) 2021-11-01

Similar Documents

Publication Publication Date Title
KR102320150B1 (ko) 고체 상태 드라이브들을 사용하여 계산 집약적 동작들을 가속하는 기술들
US11042168B2 (en) Drone sourced content authoring using swarm attestation
US9489540B2 (en) Memory controller with encryption and decryption engine
US10044703B2 (en) User device performing password based authentication and password registration and authentication methods thereof
CN106462509B (zh) 用于保全存取保护方案的设备及方法
JP5852265B2 (ja) 計算装置、コンピュータプログラム及びアクセス許否判定方法
US20140068280A1 (en) Security chip, program, information processing apparatus, and information processing system
WO2013095387A1 (en) Secure replay protected storage
US20110178987A1 (en) Apparatus and method for processing data according to remote control in data storage device
KR20120036311A (ko) 데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스
US20200204991A1 (en) Memory device and managed memory system with wireless debug communication port and methods for operating the same
KR20210095727A (ko) 메모리 디바이스에서 물리적 복제 불가능한 기능
CN112434326B (zh) 一种基于数据流的可信计算方法及装置
US11803644B2 (en) Security hardened processing device
US8938072B2 (en) Cryptographic key derivation device and method therefor
US20140281513A1 (en) Block encryption
US9282083B2 (en) Encryption system and method
US11281786B2 (en) Mechanism to secure side band communication between service processor and an end point
US11023595B1 (en) System and method for processing encrypted search
CN113748698A (zh) 存取网络时的安全通信
WO2024050184A1 (en) Support for additional cryptographic algorithms using an inline cryptographic hardware component
US20230144135A1 (en) Trusted computing device and operating method thereof
CN117195324A (zh) 存储装置内加解密模块的调用方法、存储装置及电子设备
CN117591456A (zh) 网络共享数据存储系统

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