KR102419149B1 - 폴리모픽 저장 장치들 - Google Patents

폴리모픽 저장 장치들 Download PDF

Info

Publication number
KR102419149B1
KR102419149B1 KR1020160120899A KR20160120899A KR102419149B1 KR 102419149 B1 KR102419149 B1 KR 102419149B1 KR 1020160120899 A KR1020160120899 A KR 1020160120899A KR 20160120899 A KR20160120899 A KR 20160120899A KR 102419149 B1 KR102419149 B1 KR 102419149B1
Authority
KR
South Korea
Prior art keywords
psd
interface
host computer
application
storage device
Prior art date
Application number
KR1020160120899A
Other languages
English (en)
Other versions
KR20170092091A (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 KR20170092091A publication Critical patent/KR20170092091A/ko
Application granted granted Critical
Publication of KR102419149B1 publication Critical patent/KR102419149B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명에 따른 저장 장치는, 하나 이상의 어플리케이션들을 포함하는 어플리케이션 컨테이너, 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 갖는 복수의 패킷들을 수신하고, 상기 복수의 패킷들에 포함된 커맨드에 근거로 하여 상기 어플리케이션 컨테이너에 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 폴리모픽 저장 장치 커널, 및 상기 하나 이상의 어플리케이션들 및 상기 PSD 커널 사이에 인터페이스를 제공하는 PSD 인터페이스 계층을 포함할 수 있다. 실시 예에 있어서, 상기 저장 장치는, 상기 PSD 제어 인터페이스를 통하여 수신된 제어 커맨드에 따라 저장 장치의 제 1 종류로부터 저장 장치의 제 2 종류로 변환될 수 있다.

Description

폴리모픽 저장 장치들{POLYMORPHIC STORAGE DEVICES}
본 발명은 저장 장치들에 관한 것으로, 더 상세하게는 장치 제어 인터페이스를 통해 다른 장치들로 변환 가능한 폴리모픽 저장 장치 및 그것의 방법에 관한 것이다.
하드 디스크 드라이버와 같은 일반적인 데이터 저장 장치와 비교하여, SSDs(solid state drivers)는 좀 더 복잡성(complexity)과 의사-범용 프로그램 동작 가능성(pseudo-general programmability)을 제공한다. 예를 들어, 플래시 메모리 기반 SSDs 는 좀 더 강력한 CPUs 과 고용량 메모리 및 스토리지를 패키지하고, 이러한 리소스들을 유저 어플리케이션(user application)에 이용 가능하게 할 수 있다. 게다가, 데이터 집중화 어플리케이션들의 경우, 코드들을 데이터로 이동하는 것은 데이터를 코드들로 이동하는 것보다 훨씬 더 효율적이라고 생각된다. 따라서, 효율적인 데이터 처리 시스템들은, 초기 선택 푸쉬다운(early selection pushdown) 및 초기 어그레게이션(early aggregation, 혹은 pre-aggregation)와 같은 기술들을 이용함으로써 가능한 쿼리 프로세싱 파이프라인(query processing pipeline)의 더 아래 쪽으로 코드들을 푸쉬하려고 시도한다. 유사하게, 병렬 혹은 분산 데이터 처리 시스템들은 데이터를 유지하는 노드에 가까운 가능한 만큼 많은 쿼리들을 실행할 수 있다.
일반적으로, 코드-오프로딩(code-offloading) 기술들은 애드-훅(ad-hoc) 방식에서 SSD의 펌웨어 및 호스트 컴퓨터의 OS(operating system)를 조정함으로써(tweaking) 구현되었다. 영구적인 스토리지, 휘발성 스토리지, 및 프로세싱 사이의 경계들이 점점 더 흐려지고 있지만, 호스트 OS, 라이브러리들, 고정된 프로토콜들, 및 저장 장치 추상화 계층 사이에 존재하는 기능적인 분리는, 중복적인 구현들을 흔히 야기하고, 병목 혹은 불필요한 리소스-소비자가 될 수 있다.
NoSQL(non SQL) 데이터베이스들(DBs)(예, 키-밸류 스토어들, 다큐먼트 스토어들, 그래프, 오브젝트 데이터베이스들, 등)은 최근의 컴퓨터 시스템들에서 폭넓게 사용된다. 관계형(relational) DBs와 비교하여, NoSQL DBs는 간단하고, 유연하고, 가벼우며, 특정 워크로드들(workloads)에서 뛰어나 확장성 및 큰 성능 향상 이득들을 기대할 수 있다. 빅 데이터(big data)을 갖는 클라우딩 컴퓨터 및 대형 시스템들로의 빠른 이동은 NoSQL DBs의 성장하는 대중화에 기여하고 있다.
본 발명의 목적은, 하드웨어 리소스의 낭비를 줄이거나 최적화시키는 폴리모픽 저장 장치 및 그것의 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 저장 장치는, 하나 이상의 어플리케이션들을 포함하는 어플리케이션 컨테이너, 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 갖는 복수의 패킷들을 수신하고, 상기 복수의 패킷들에 포함된 커맨드에 근거로 하여 상기 어플리케이션 컨테이너에서 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 폴리모픽 저장 장치(polymorphic storage device, 이하, "PSD") 커널, 및 상기 하나 이상의 어플리케이션들 및 상기 PSD 커널 사이에 인터페이스를 제공하는 PSD 인터페이스 계층을 포함할 수 있다.
본 발명의 실시 예에 따른 저장 시스템은, 호스트 컴퓨터, PSD, 및 상기 호스트 컴퓨터와 상기 PSD 사이에 인터페이스를 제공하는 PSD 인터페이스를 포함하고, 상기 PSD는, 하나 이상의 어플리케이션들을 포함하는 어플리케이션 컨테이너, 상기 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 갖는 복수의 패킷들을 수신하고, 상기 복수의 패킷들에 포함된 커맨드에 근거로 하여 상기 어플리케이션 컨테이너에서 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 PSD 커널, 및 상기 하나 이상의 어플리케이션들 및 상기 PSD 커널 사이에 인터페이스를 제공하는 PSD 인터페이스 계층을 포함할 수 있다.
본 발명의 실시 예에 따른 저장 장치의 방법은, 상기 저장 장치의 어플리케이션 컨테이너에서 하나 이상의 어플리케이션들을 저장하는 단계, 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 갖는 복수의 패킷들을 수신하는 단계, 상기 복수의 패킷들에 포함된 커맨드에 근거로 하여 상기 어플리케이션 컨테이너에서 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 단계, PSD 인터페이스를 통해 상기 호스트 컴퓨터로부터 수신된 제어 커맨드에 따라 상기 저장 장치의 하나 이상의 하드웨어들을 구성하도록 상기 저장 장치에서 PSD 커널을 구동하는 단계, 및 상기 PSD 커널에 이해 구성된 하드웨어들로 상기 저장 장치를 동작하는 단계를 포함할 수 있다.
본 발명의 실시 예 폴리모픽 저장 장치 및 그것의 방법은, 디바이스 제어 인터페이스를 통하여 하드웨어 리소스들을 재구성 함으로써, 리소스의 낭비를 줄이거나 최적화시킬 수 있다.
도 1은 일반적인 NoSQL 데이터베이스(DB) 시스템을 보여주는 도면이다.
도 2는 다른 일반적인 NoSQL DB 시스템을 위한 시스템 구조에 대한 실시 예를 보여준다.
도 3은 예시적인 저장 장치의 메모리 제어기의 계층들을 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 폴리모픽 저장 장치(PSD)를 갖는 예시적인 저장 시스템에 대한 블록 다이어그램이다.
도 5는 본 발명의 실시 예에 따른 폴리모픽 저장 장치의 펌웨어 스택(firmware stack)을 보여주는 도면이다.
도 6a는 본 발명의 실시 예에 따른 집중화 방식에 따른 어플리케이션들의 이동 및 복제를 예시적으로 보여주는 도면이다.
도 6b는 본 발명의 실시 예에 따른 비집중화 방식에 따른 어플리케이션들의 이동 및 복제를 예시적으로 보여주는 도면이다.
여기에 개시된 특징들 및 교시들의 각각은 장치 제어 인터페이스를 통해 다른 장치로 변환할 수 있는 폴리모픽 저장 장치(polymorphic storage device)를 제공하기 위해 개별적으로 또는 함께 이용 될 수 있다. 이러한 추가 기능들 및 교시들을 이용하는 대표적인 실시 예들, 그것들의 개별적으로, 혹은 조합에 따른 실시 예들은, 첨부된 도면들을 참조하여 상세하게 설명된다. 이러한 상세한 설명은 단지 본 교시의 양태를 실행하고, 청구항의 범위를 제한하는 것은 아니며, 당업자에게 교시할 의도로 이용될 것이다. 따라서, 상세한 설명에 상술 된 특징들의 조합은 넓은 의미에서의 교시를 실시할 필요가 없을 수도 있고, 대신에, 본 교시들 특히 대표적인 예를 설명하기 위해 단지 교시된다.
이하의 설명에서, 설명의 목적으로, 특정 명칭이 본 발명의 완전한 이해를 제공하기 위해 설정된다. 그러나, 이러한 특정 세부 사항들은 본 발명의 사상을 실시하지 않아도 되는 것이 당업자에게 명백 할 것이다.
본 명세서의 일부분에서는 컴퓨터 메모리 내에 데이터 비트들에 대한 연산들의 심볼 표현들과 알고리즘들의 용어들로 표현된다. 이러한 알고리즘 설명들 및 표현들은 효과적으로 다른 당업자에게 작업의 실체를 전달하기 위해 데이터 처리 분야의 당업자에 의해 사용된다. 여기서 알고리즘은, 일반적으로, 최종 결과에 이르는 단계들의 일관성 있는 시퀀스(self-consistent sequence)이 고려된다. 단계들은, 물리적 양들의 물리적 조작들을 요구하는 것들이다. 대개, 필수적이지 않지만, 이러한 양들은, 편리를 위하여 때때로 전기 혹은 자기 신호들의 형태로 취해질 수 있다. 이러한 신호들은 비트들, 값들, 요소들, 심볼들, 캐릭터들, 용어들, 숫자들, 혹은 그와 같은 것으로 언급된다.
하지만, 이것들 모두 및 유사한 용어들은, 적절한 물리량과 연관되며 단지 이러한 양들에 적용되는 편리한 라벨들이라는 것을 명심해야 한다. 구체적으로는 아래의 설명으로부터 명백한 바와 같이, 설명을 통해, 이러한 "프로세싱", "컴퓨팅", "계산", "결정", "표시" 혹은 그와 같은 용어를 이용하는 논의들은, 컴퓨터 시스템 혹은 유사한 전자 컴퓨팅 장치의 액션들(actions) 및 처리들로 언급된다. 컴퓨터 시스템 혹은 유사한 전자 컴퓨팅 장치는, 컴퓨터 시스템의 레지스터들 내부의 물리적(전자적) 양들로써 표현된 데이터를, 컴퓨터 시스템 메모리들 혹을 레지스터들 혹은 나머지 정보 저장, 전송 혹은 디스플레이 장치 내의 물리적 양들로써 유사하게 표현된 다른 데이터 조작 및 변환한다.
여기에 제공된 알고리즘들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련된 것이 아니다. 다양한 범용 시스템, 컴퓨터 서버 또는 개인용 컴퓨터는 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있으며, 혹은 요구된 방법 단계들을 수행하도록 보다 특수화된 장치를 구성하는 것이 편리할 수 있다. 다양한 이들 시스템을 위한 요구되는 구조는, 아래의 설명으로부터 개시된다. 다양한 프로그래밍 언어들이 본원에 기재된 바와 같이 발명의 교시를 구현하는데 사용될 수도 있다고 이해되어야 할 것이다.
또한, 대표적인 실시 예들의 다양한 특징들과 종속항들은 특히 명시적으로는 본 발명의 추가의 유용한 실시 예들을 제공하기 위해 열거되지 않은 방식으로 결합 될 수 있다. 또한, 청구된 발명을 제한하는 목적뿐만 아니라, 오리지널 발명의 목적을 위하여 엔티티 그룹의 모든 값의 범위들 혹은 지시들은, 가능한 모든 중간 값 또는 중간 엔티티를 개시한다는 것이 명백할 것이다. 또한, 명시적 기준 및 도면에 도시된 구성 요소들의 형상들은, 본 개시에서 실시되는 방식을 이해할 수 있도록 설계하지만, 치수들 및 실시 예들에 나타낸 형상들에 한정되지 않는다는 것을 유의해야 한다.
도 1은 일반적인 NoSQL 데이터베이스(DB) 시스템을 보여주는 도면이다. NoSQL DB 시스템(100)은 오버랩된 구성들 및 중복된 매핑들을 포함한다. NoSQL DB 시스템(100)은 호스트 컴퓨터(110) 및 저장 장치(150)를 포함한다. 여기서 저장 장치(150)는 호스트-투(to)-SSD 인터페이스(190)를 통해 호스트 컴퓨터(110)와 통신한다. 호스트 컴퓨터(110)는, 키를 LBA(logical block address) 변환하기 위한 맵핑 테이블(121)을 갖는 NoSQL DB(120), 동작 시스템(OS, 130), 및 SSD 인터페이스(140)을 포함한다. 호스트-투-SSD 인터페이스(190)의 실시 예들은, 제한되지 않지만, PCIe(peripheral component interconnect express), SAS(serial attached SCSI), 이더넷(ethernet), 및 SATA(serial AT attachment)을 포함한다. 저장 장치(150)는 메모리 제어기(160), 및 비휘발성 메모리(170)를 포함한다. 메모리 제어기(160)는 호스트 인터페이스(161), LBA-PBA 맵핑 테이블(162), 에러 정정 코드(ECC) 메모리(163), 및 비휘발성 메모리(170)와 인터페이싱을 위한 플래시 인터페이스(164)를 포함한다. 호스트 컴퓨터(110) 및 저장 장치(150)는 호스트-투-SSD 인터페이스(190)를 통하여 커맨드들, 어드레스들(LBAs), 및 데이터로 통신한다.
여기서 두 개의 중복 매핑 계층들이 존재한다. 키(key)-LBA 맵핑을 위한 제 1 맵핑 계층과 LBA-PBA 맵핑을 위한 제 2 맵핑 계층이다. 일반적으로, 호스트 컴퓨터(110) 및 저장 장치(150)는, 저장 장치(150)에서 저장 위치들의 어드레스를 특정하기 위하여 LBAs를 근거로 하여 서로 통신한다. 호환성을 위하여, 저장 장치(150)는 LBAs 로 동작하고, 그리고 메모리 제어기(160)의 플래시 변환 계층(FTL)은 LBA-PBA 변환을 유지한다. FTL은 맵핑 테이블(162)을 이용하여 논리 블록 어드레스들(LBAs)을 물리 블록 어드레스들(PBAs)로 변환하고, 비휘발성 메모리(170)의 물리 블록들에 대한 요청된 동작들(예, 읽기, 쓰기, 읽기/변조/쓰기(RMW), 및 삭제)을 수행하기 위하여 맵핑 테이블(162)에 의해 제시된 바와 같이 비휘발성 메모리(170)의 물리 블록들을 접근한다.
호스트 컴퓨터(110)의 키-LBA 매핑은, 호스트 컴퓨터와 저장 장치 사이에 구성된 적절한 배열들이 있다면 제거될 수 있다. 도 2는 다른 일반적인 NoSQL DB 시스템을 위한 시스템 구조에 대한 실시 예를 보여준다. NoSQL DB 시스템(200)은 호스트 컴퓨터(210) 및 호스트-투-SSD 인터페이스(290)을 통하여 통신하는 저장 장치(250)를 포함한다. 호스트 컴퓨터(210)는 NoSQL 유저 어플리케이션 프로그램 인터페이스(API)(220), 동작 시스템(OS, 230), 및 SSD 인터페이스(240)를 포함한다. 도 1에 도시된 호스트-투-SSD 인터페이스(190)와 유사하게, 호스트-투-SSD 인터페이스(290)는 PCIe, SAS, 이더넷, 및 SATA 혹은 그와 같은 것 중 임의의 것일 수 있다. 저장 장치(250)는 비휘발성 메모리(270)와 인터페이싱을 위한 메모리 제어기(260)를 포함할 수 있다. 메모리 제어기(260)는 호스트 인터페이스(261), NoSQL DB 집적(integrated) FTL(262), 에러 정정 코드(ECC) 메모리 (263), 및 플래시 인터페이스(264)를 포함할 수 있다. NoSQL DB 집적 FTL(262)은 호스트 컴퓨터(210)에서 키-LBA 맵핑을 제거할 수 있다. 따라서, NoSQL DB 시스템(200)는, 2개의 중복 맵핑 계층들을 요구하는 도 1의 NoSQL DB 시스템(100)과 비교하여 좀 더 집적화된 성능을 가질 수 있다.
호스트 컴퓨터(210) 및 저장 장치(250)는 호스트-투-SSD 인터페이스(290)를 통하여 쿼리 커맨드들, 키들, 및 데이터로 통신할 수 있다. 비휘발성 메모리(270)는, 제한되지 않지만, 플래시 메모리, PRAM(phase change random access memory), STT-MRAM(spin-transfer torque magnetic random access memory), 및 ReRAM(resistive RAM) 등을 갖는 다양한 종류의 비휘발성 메모리일 수 있다.
저장 장치의 행동들을 정의하는 본 발명의 폴리모픽 저장 장치(present polymorphic storage device)의 펌웨어는 펌웨어 업데이트를 통하여 재구성 될 수 있다. 펌웨어 업데이트를 통하여, 본 발명의 폴리모픽 저장 장치는 오리지널 구성으로부터 장치들의 서로 다른 종류로 변환될 수 있다. 예를 들어, 본 발명의 폴리모픽 저장 장치는 처음에 범용 저장 장치로써 구성된다. 펌웨어 업데이트에 의해, 본 발명의 폴리모픽 저장 장치는 특수 목적 장치로 변환될 수 있다. 이러한 특수 목적 장치는, 인-스토리지 컴퓨팅 장치(in-storage computing device), 키-밸류 스토어 장치(key-value store device), 하도프 디스트리뷰티드 파일 시스템(Hadoop distributed file system; HDFS) 장치, 오브젝트-스토어 장치(object-store device), 기타 등등 일 수 있다.
도 3은 예시적인 저장 장치의 메모리 제어기의 계층들을 보여주는 도면이다. 메모리 제어기(360)는, HIL(host interface layer, 310), FTL(flash translation layer, 320), VFL(virtual flash layer, 330), 및 FIL(flash interface layer, 340)의 4 개의 계층들을 포함한다. 이러한 4 개의 계층들은 저장 장치의 펌웨어에서 구현될 수 있다. 여기서 펌웨어는 저장 장치의 하나 이상의 내장된 프로세서들 상에서 작동할 수 있다. HIL(310)은 SATA, SAS, 혹은 PCIe와 같은 버스 인터페이스 프로토콜을 구현할 수 있다. FTL(320)은 호스트 OS의 논리 블록 어드레스들(LBAs)을 저장 장치의 비휘발성 메모리에서 물리 블록 어드레스들(PBAs)로 매핑하기 위한 역할을 수행한다. VFL(330) 및 FIL(340)은 저장 장치의 비휘발성 메모리와 DRAM 사이의 데이터 전송 역할을 수행한다. 저장 장치의 펌웨어는 ECC 로직 및 DMA(direct memory access)을 갖는 다른 특징들을 제공할 수 있다. 비휘발성 메모리의 입출력 성능을 향상시키기 위하여, 메모리 제어기(360)는 칩 레벨 및/혹은 채널 레벨에서 인터리빙 기술들을 이용할 수 있다.
본 발명은 장치 제어 인터페이스(device control interface)을 통하여 하나의 형태의 장치에서 다른 형태의 장치로 변환되는 폴리모픽 저장 장치(polymophic storage device, 이하 "PSD")를 제공한다. 도 4는 본 발명의 실시 예에 따른 폴리모픽 저장 장치를 갖는 예시적인 저장 시스템에 대한 블록 다이어그램이다. 저장 시스템(400)는 호스트 컴퓨터(410) 및 PSD 인터페이스(490)를 통하여 통신하는 PSD(450)를 포함할 수 있다. 호스트 컴퓨터(410)는, PSD(450)을 재구성하는데 사용되는 복수의 장치 드라이버들(411a ~ 411c)을 저장하기 위한 장치 드라이버 풀(413)을 포함할 수 있다. PSD(450)은 PSD 커널(455), 어플리케이션(451)과 인터페이싱 하기 위한 PSD 인터페이스 계층(PIL, 452), 및 재구성 및 확장 가능한 하드웨어를 포함할 수 있다. 여기서 재구성 및 확장 가능한 하드웨어는 복수의 CPUs(461a ~ 461d), 비휘발성 메모리(470), 및 DRAM(480)을 포함한다. PSD(450)는 재구성 및 확장 가능한 하드웨어와 통신하기 위한 어플리케이션(451)을 허용하는 장치 드라이버 인터페이스를 제공하기 위하여 하드웨어 앱스트랙션 계층(hardware abstraction layer, 456)을 더 포함할 수 있다. 본 발명에서 PSD(450)이 재구성 및 확장 가능한 하드웨어를 포함하도록 개시되지만, 본 발명의 PSD(450)는 재구성 및 확장 가능하지 않은 하드웨어를 포함할 수 있다고 이해되어야 할 것이다. 재구성 및 확장 가능한 하드웨어는 PSD(450)의 유연성(flexibility) 및 프로그래머빌리티(programmability)를 제공할 수 있다.
본 발명의 실시 예에 있어서, 호스트-사이드 인터페이스(415)는 제 1 유저 인터페이스(420), 제 2 유저 인터페이스(421), PSD(450)을 위한 PSD 제어 인터페이스(422)를 포함할 수 있다. 제 1 유저 인터페이스(420)는, 예를 들어, 파일 시스템(FS) 및/혹은 데이터베이스(DB), 혹은 그와 같은 것들과의 인터페이스를 제공할 수 있다. 제 1 유저 인터페이스(420)를 통하여, 파일 시스템 및 데이터베이스에 요구되는 입출력(I/O) 제어 커맨드들(예, 장치 제어 커맨드들 및 메타데이터)은 호스트 컴퓨터(410)에서 혹은 로부터 전송될 수 있다. 제 2 유저 인터페이스(421)는, 예를 들어, 키-밸류 스토어 및/혹은 오브젝트 스토어에 인터페이스를 제공할 수 있고, 키-밸류 및/혹은 오브젝트 스토어를 위한 쿼리들(431, 예, put, get)을 제공할 수 있다. PSD 제어 인터페이스(422)는, PSD 인터페이스(490)을 통하여 호스트 컴퓨터(410) 및 PSD(450)로 커맨드들 및 메시지들(432)을 제공할 수 있다. 호스트 컴퓨터(410)의 장치 드라이버 풀(413)에서 복수의 장치 드라이버들(411a ~ 411c) 중 어느 하나를 이용하여, PSD(450)는 PSD 제어 인터페이스(422)로부터 수신된 커맨드들에 따라 구성(혹은 재구성) 될 수 있다. PSD 제어 인터페이스(422)를 통한 이러한 커맨드들은 PSD(450)에서 동작하는 어플리케이션들(451a ~ 451d)을 제어할 수 있다. 여기서, PSD(450)에서 동작하는 어플리케이션들(451a ~ 451d)은 PSD 어웨어(aware) 어플리케이션들로 언급될 수 있다. 왜냐하면 이러한 것들은 PSD 제어 인터페이스(422)을 통하여 수신된 커맨드를 이용하여 PSD(450)를 구성할 수 있고, PSD(450)를 저장 장치의 제 1 종류로부터 저장 장치의 제 2 종류로 변환시킬 수 있기 때문이다. 또한, PSD 제어 인터페이스(422)는 호스트-사이드 장치 드라이버 풀(413)에 저장된 장치 드라이버들 및 그것들의 장치 드라이버 매니저들을 제어하는 것을 제공할 수 있다.
본 발명의 실시 예에 있어서, PSD 인터페이스(490)는 백워드 호환성을 위한 호스트-사이드 유저 인터페이스들(420, 421), 혹은 PSD(450)에 동작하는 PSD-어웨어 어플리케이션들(451a ~ 451d)을 관리 및 제어하기 위한 PSD 제어 인터페이스(422)를 에뮬레이트(emulate) 할 수 있다. 벤더-스페시픽(vendor-specific) 커맨드들은 PSD 인터페이스(490)를 통하여 PSD-어웨어 어플리케이션들(451a ~ 451d)에 제공될 수 있다. 이러한 벤더-스페시픽 커맨드들의 실시 예들은, 제한되지 않지만, "create". "start/stop", "pause/resume", 등을 포함할 수 있다. PSD(450)은 호스트 컴퓨터(410)과 통신할 수 있고, 펌웨어 업데이트 없이 기능들과 어플리케이션들을 추가, 삭제, 및 변경할 수 있다.
본 발명의 실시 예에 있어서, 호스트 컴퓨터(410)와 PSD(450) 사이의 PSD 인터페이스(490)는 PSD(450) 내의 오프로디드(offloaded) 혹은 집적화된(integrated) 기능들을 제공할 수 있다. 예를 들어, PSD-어웨어 어플리케이션(451) 혹은 호스트-사이드 어플리케이션들은 저장 시스템 인터페이스보다는 차라리 PSD(450)의 유저 인터페이스와 상호 교환할 수 있다. 여기서 저장 시스템 인터페이스는 호스트 OS 및 호스트 컴퓨터(410)의 장치 드라이버들(411a ~ 411c)에 의해 흔히 제공될 수 있다. 일반적으로, 호스트 컴퓨터(410)에서 동작하는 호스트-사이드 어플리케이션은 어플리케이션 로직을 갖는 호스트 컴퓨터에서 그것의 기능성을 구현할 수 있다. 본 발명의 실시 예에 있어서, 호스트 컴퓨터(410)에서 동작하는 호스트-사이드 어플리케이션을 위한 어플리케이션 로직은 PSD(450)에 분산될 수 있다. 예를 들어, PSD(450)의 집적화된 키-밸류 FTL은 호스트-사이드 어플리케이션에서 거의 모든 로직들을 제거할 수 있고, 단지 키-밸류 NoSQL 동작들을 위한 유저 APIs는 PSD(450)의 PSD 커널(455)에 제공될 수 있다. 이러한 동작들의 나머지는 PSD(450)의 내부에서 처리될 수 있고, PSD-어웨어 어플리케이션(451)은 PSD 인터페이스(490)를 통하여 수신된 커맨드들 및 메시지들을 이용하여 키-밸류 NoSQL 동작들을 실행할 수 있다.
PSD(450)가 한번에 하나 이상의 어플리케이션들(예, 415a ~ 451d)을 처리할 수 있기 때문에, 대응하는 호스트-사이드 장치 드라이버(411)는 장치 드라이버 풀(413)에 존재할 수 있다. 만일 PSD(450)가 단지 장치 드라이버의 하나의 활성 인스턴스를 갖는다면, 장치 드라이버 풀(413)은 일반적인 저장 시스템과 유사한 방법으로 하나의 장치 드라이버(411)로 동작할 수 있다. 도 4에 도시된 바와 같이, PSD(450)은 PSD(450) 내부의 어플리케이션들의 인스턴스들(451)을 제어하는 PSD 제어 인터페이스(422)를 이용할 수 있다. 이러한 의미에서, PSD 제어 인터페이스(422)의 제공(provisioning)은 가상 머신(VM) 매니저 혹은 하이퍼바이저(hypervisor)와 유사할 수 있다. 여기서 가상 머신(VM) 매니저 및 하이퍼바이저에서는, PSD 제어 인터페이스(422)는 어플리케이션(451)과 직접 상호 작용하기 보다는 어플리케이션(451)의 제어 메커니즘을 제공한다.
복수의 어플리케이션들(451)은 PSD(450)에서 동시에 실행될 수 있다. 하지만, 호스트 컴퓨터(410)와 PSD(450) 사이의 물리적인 통신 채널들의 개수는 물리적 장치들의 개수로 제한된다. 이런 이유로, 각 어플리케이션(451)과 PSD(450) 내부의 어플리케이션 컨테이너 사이의 통신은 PSD(450) 내부에서 멀티플렉싱 되거나 디-멀티플렉싱될 수 있다. PSD 인터페이스(490)는 임의의 물리 인터페이스를 포함할 수 있다. 물리 인터페이스는, 제한되지 않지만, SATA, SAS, NVMe, 이더넷, FC(fiber channel), IB(InfiniBand), RDMA(remote direct memory access), 기타 등을 일 수 있다. 또한, 호스트-사이드 장치 드라이버 풀(413)은 물리 인터페이스를 제공하기 위해 존재하는 통신 프로토콜로 모든 메시지들/커맨드들/데이터를 내장시키거나/인캐슐레이트(embed/encapsulate)시키도록 멀티플렉싱을 잘 처리할 수 있다. 몇몇 실시 예들에 있어서, PSD(450)의 자신의 프로토콜은 존재하는 프로토콜로 데이터를 오버로딩하는 오버헤드를 줄이기 위해 사용될 수 있다.
도 5는 본 발명의 실시 예에 따른 폴리모픽 저장 장치(PSD)의 펌웨어 스택(firmware stack)을 보여주는 도면이다. PSD 펌웨어 스택(500)은 플래시 제어기 계층(535), PSD 커널(555), 및 PSD 인터페이스 계층(552), 및 어플리케이션 컨테이너(510)를 포함할 수 있다. 어플리케이션 컨테이너(510)는 하나 이상의 어플리케이션들(511a, 511b, 511c-도면에 수정요 512->511c)을 포함할 수 있다. 본 발명의 실시 예에 있어서, 어플리케이션(511c)은 나머지 어플리케이션들(511a, 511b)으로부터 자신을 차별화하기 위해 PSD(500)에서 동작하는 현재의 임차인(tenant)으로 언급된다. 이후, 어플리케이션들(511a, 511b, 511c)은 어플리케이션(511)로써 집합적으로 언급될 수 있다. 어플리케이션(511)은, 호스트 프로토콜 및 메시지 프로세서(513), ATL(application-specific address translation logic, 514), 어플리케이션-스페시픽 웨어레벨링 로직(WL, 515), 및 어플리케이션-스페시픽 가비지 컬렉션 로직(GC, 516)을 포함할 수 있다.
예를 들어, 어플리케이션(511)은 키-밸류 캐싱 어플리케이션(key-value caching application), HDFS 어플리케이션, 및 MongoDB 어플리케이션 중 하나일 수 있다. 키-밸류 어플리케이션의 경우, ATL(514)은 인덱스-인터그레이트(index-integrated) FTL일 수 있고, GC(516)는 LRU(least-recently used) 리스트(list)을 이용함으로써 좀더 효율적일 수 있다. HDFS 어플리케이션의 경우, ATL(514)은 메모리-풋프린트 관점(memory-footprint perspective)으로 부터(예, 세분성(granularity)을 위한 64 MB) 더 작도록 구현될 수 있다. 따라서, 이것의 어플리케이션-스페시픽 ATL(514)이 필요하다. 게다가, 몇몇 HDFS 어플리케이션의 경우, GS(516) 및 WL(515)은, 만약 그것들이 콜드 데이터(일단 생성된 이후에 전혀 업데이트 되지 않은 데이터)를 전부는 아니지만 대다수를 포함할 경우, 최소화(혹은 최적화) 될 수 있다. MongoDB 어플리케이션의 경우, 호스트 동작들의 일부는 ATL(514) 및 GC(516)에 오프로디드 될 수 있다. 각 어플리케이션(511)은 어플리케이션(511)의 특성들 및 요구들을 만족하도록 서로 다른 ATL(514), GC(516), WL(515)을 포함할 수 있다.
플래시 제어기 계층(535)은 가상 플래시 계층(virtual flash layer, VFL, 530) 및 플래시 인터페이스 계층(FIL, 540)을 포함할 수 있다. 플래시 제어기 계층(535)은 PSD을 위하여 증가된 효율성을 제공하도록 하드웨어 지원을 제공할 수 있다. PSD에 동작하는 어플리케이션(511)에 의존하여, 플래시 제어기 계층(535)는 플래시 메모리에 효율적인 인터페이스를 제공하도록 재구성 및 확장 가능한 하드웨어의 사용을 최적화 시킬 수 있다. 플래시 제어기 계층(535)은 어플리케이션(511)의 특징들을 지원하도록 펌웨어 업데이트함으로써 업데이트될 수 있다.
호스트 컴퓨터로부터 수신된 패킷(예, 데이터, 메시지들, 및 커맨드들)은 PSD 커널(555)로 먼저 전송될 수 있다. 컨텍스트(CTX) 매니저(556) 및 PSD 커널(555)의 메시지 라우터(557)는 호스트 컴퓨터로부터 수신된 패킷들을 라우팅하기 위한 역할을 수행할 수 있다. CTX 매니저(556)는 현재 임차된 어플리케이션 특성들과 함께 PSD에 현재 임차된 어플리케이션(들)을 인식하고 있다. CTX 매니저(556)는 현재 동작하고 그리고 다른 존재하는 어플리케이션들 모두를 트래킹하기 위한 어플리케이션 IDs 및 ATL(514), WL(515), 및 GC(516)에 관련된 구성들의 테이블을 포함할 수 있다. 또한, CTX 매니저(556)는 스타트/스탑(start/stop), 리쥼(resume), 및 서스펜드(suspend), 기타 등등과 같은 현재 임차인 어플리케이션(들)의 시행 및 리브니스(liveness)(예, 컨텍스트 제어)를 제어하는 역할을 수행할 수 있다. PSD 커널(555)은 라우팅된 패킷들을 디-인캐슐레이트할 수 있고, 따라서 라우팅된 패킷들을 처리할 수 있다. 예를 들어, 어플리케이션을 "크리에이트"(create)하기 위한 커맨드를 수신할 경우, CTX 매니저(556)는 호스트에서 제공된 데이터와 함께 어플리케이션(511)의 어플리케이션 컨텍스트를 발생할 수 있다. 호스트에서 제공된 데이터는, ATL(514), WL(515), 및 GC(516)을 위한 구성 프로파일들 혹은 로직들, PSD에서 실행 가능한 어플리케이션(511)의 바이너리 코드, 그리고 어플리케이션(511)이 PDS 커널(555)와 통신하도록 가능케 하는 PSD 라이브러리를 포함하는 메타-데이터를 포함할 수 있다.
만일 호스트 컴퓨터로부터 수신된 메시지가 PSD에 등록된 어플리케이션(511)에 연관되고, 등록된 어플리케이션(511)의 컨텍스트가 활성이라면, PSD 커널(555)은 메시지 및 대응하는 데이터 및/혹은 커맨드들을 등록된 어플리케이션(5110에 라우팅 할 수 있다. 만일 등록된 어플리케이션의 컨텍스트가 비활성이면, PSD 커널(555)는 호스트 컴퓨터로 에러 메시지를 리턴 한다. 만일, 등록되지 않거나 인식되지 않는 메시지들이 호스트 컴퓨터로부터 수신되면, PSD 커널(555)은 호스트 컴퓨터에 다른 에러 메시지들을 전송할 수 있다.
CTX 매니저(556)는 어플리케이션 컨테이너(510)를 제어하는 역할을 수행할 수 있다. CTX 매니저(556)은 어플리케이션(511)을 위한 어플리케이션 컨텍스트를 생성할 수 있고, PSD의 하드웨어 리소스들을 ATL(514), WL(515), 및 GC(516)에 분배 및 관리할 수 있다. CTX 매니저(556)는 가상 머신(VM)과 유사한 풀리 가상화 방식(fully virtualized manner) 혹은 파라-가상화 방식(para-virtualized manner)으로 구현될 수 있다. 실시 예에 있어서, 어플리케이션(511)은 PSD 커널(555)을 구현하지 않고 일반적인 저장 장치에서 일반적인 펌웨어로서 동작할 수 있다. 다른 실시 예에 있어서, 어플리케이션(511)은 PSD에 의해 제공되는 특징들을 인식하는 PSD을 위해 특수하게 설계된 새로운 어플리케이션으로 동작할 수 있다.
어플리케이션(511)의 일부는 어플리케이션-스페시픽 웨어 레벨링(WL) 및/혹은 가비지 컬렉션(GC) 로직들을 필요로 할할 수 있다. 이러한 로직들은 PSD의 성능을 위해 대단히 중요 할 수 있다. PSD 커널(555)은 PSD 라이브러리들(558)을 제공할 수 있다. 여기서 PSD 라이브러리들(558)은 어플리케이션-스페시픽 WL/GC 인터페이스들 및 PSD 커널(555)과 인터페이스하기 위한 일반적인 APIs를 포함할 수 있다. 후자의 경우, 어플리케이션(511)은 그것들의 자신의 WL/GC 로직들(515, 516)을 구현하는 대신에 제공되는 그것들의 라이브러리들을 등록할 수 있다. 전자의 경우, PSD 커널(555)은 PSD 펌웨어 스택(500)의 계층(들)에서 어플리케이션(511)에 모든 권한들을 제공함으로써 WL/GC 관련 작업을 수행하지 않을 수 있다.
어플리케이션(511)은 PSD 인터페이스 계층(552)을 통하여 기저의 PSD 커널(555)과 통신할 수 있다. PSD 인터페이스 계층(552)은 통신 APIs 및 패킷들(예, 메시지들, 커맨드들, 및 데이터)을 제공할 수 있다. 여기서 패킷들은 PSD 인터페이스 계층(522)를 통하여 PSD로 패스된다.
어플리케이션(511)은 어플리케이션 컨텍스트(들)의 형태로 싱글 PSD에 함께 존재할 수 있다. 어플리케이션 컨테이너(510)는 활성 혹은 유휴(idle) 상태에 있는 어플리케이션(511)의 어플리케이션 컨텍스트들을 유지할 수 있다. 어플리케이션(511)은 어플리케이션 로직들, 호스트 프로토콜, 및 메시지 프로세서 계층(513), 어플리케이션-스페시픽 어드레스 변환 로직(ATL, 514), 웨어 레벨링(WL) 로직(515), 가비지 컬렉션(GC) 로직(516), 등을 포함할 수 있다. 몇몇 실시 예들에 있어서, WL 및 GC 로직들(514, 515)은 옵션적이다. 예를 들어, 키-밸류 스토어 어플리케이션은 코어 로직들을 위한 그것들의 키-밸류 구조 및 알고리즘을 가질 수 있다. 호스트 프로토콜 및 메시지 프로세서 계층(513)은 코어 로직들의 기능들의 래퍼(wrapper)처럼 간단하다. 키-밸류 스토어 어플리케이션의 경우에, 어플리케이션-스페시픽 ATL(514)는 통합(integrated) FTL(예, 도 2의 NoSQL DB integrated FTL(262))로 합쳐질 수 있다.
추가적인 로직들이 최근의 SSD의 하드웨어 관점에서 의무적으로 필요하지는 않지만, 다음에 따르는 인자들은 PSD의 실행을 가속화시킬 수 있다. PSD의 실행을 가속시킬 수 있는 인자들의 예들로써, 제한되지 않지만, TLBs(multiple translation lookaside buffers) 혹은 더 큰 TLB, 어플리케이션 컨테이너 ID를 가진 캐시들, 충돌을 줄이기 위한 더 많은 뱅크들을 갖는 메모리, 및/혹은 DIMMs(dual inline memory modules) 마다 더 많은 레지스터들, DMA(direct memory access)를 위한 더 많은 유연한 제공, 그리고 더 많은 개수의 뛰어난 DMAs, 임베디드 프로세서들로부터 가상화를 위한 지원, 어플리케이션 컨텍스트-인식 플래시 제어기, 폴리모피즘(polymorphism)의 인식을 위한 파인-그레인 전원 제어(fine-grain power control), 하드웨어-어시스티드 메시지 라우팅(hardware-assisted message routing) 등을 포함할 수 있다. 다른 실시 예에 있어서, PSD는 가속화된 어플리케이션-스페시픽 기능성을 제공하도록 FPGA(field programmable gate array)을 포함할 수 있다. 머신-러닝 커널과 같은 어플리케이션들, 빅 데이터 처리에서의 과학적 계산은 일반적인 장치의 CPUs에서 코드들을 동작하기보다 FPGA에서 가속화될 수 있다. 여기서 빅 데이터 처리에서의 과학적 계산은 신경망, 매트릭스 조작, FFT(fast fourier transform), 패턴 매칭등과 같다.
실시 예에 있어서, 저장 시스템(400)은 싱글 PSD(450) 및 복수의 PSDs 마다 복수의 인스턴스들(어플리케이션들)을 제공할 수 있다. 추가로, 저장 시스템(400)은 복수의 PSD(450) 중에서 이동 및 복제를 지원할 수 있다.
도 6a 및 도 6b은 복수의 PSDs 중에서 어플리케이션들의 이동 및 복제를 예시적으로 보여주는 도면들이다. 복수의 PSDs(650a ~ 650c)는 집중화 방식(centralized manner) 혹은 비집중화 방식(decentralized manner) 중 어느 하나로 어플리케이션 이동 및 복제를 제공할 수 있다.
도 6a는 본 발명의 실시 예에 따른 집중화 방식에 따른 어플리케이션들의 이동 및 복제를 예시적으로 보여주는 도면이다. PSD 제어 인터페이스(622)는 복수의 PSDs(650a ~ 650c) 중에서 이동 및 복제를 수행하기 위한 커맨드들 및 메시지들(432)을 제공할 수 있다. 집중화 방식 구현에서, 이동 및 복제 동작들은 PSDs(650a ~ 650c)의 CTX 매니저(예, 도 5의 CTX 매니저(556)) 및 PSD 제어 인터페이스(653)에 의해 구현될 수 있다. PSD 제어 인터페이스(622)는 집중화된 이동 및 복제 동작들을 실행하기 위한 인터페이스(653)을 생성(spawn)할 수 있다.
도 6b는 본 발명의 실시 예에 따른 비집중화 방식에 따른 어플리케이션들의 이동 및 복제를 예시적으로 보여주는 도면이다. 비집중화 방식 구현에서, 각 PSD는 이웃한 장치들 사이에서 피어-투-피어(peer-to-peer) 통신을 근거로 하여 어플리케이션 이동/복제 동작을 수행할 수 있다.
본 발명의 실시 예에 따른 저장 장치는, 하나 이상의 어플리케이션들을 포함하는 어플리케이션 컨테이너; 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 갖는 복수의 패킷들을 수신하고, 상기 복수의 패킷들에 포함된 커맨드에 근거로 하여 상기 어플리케이션 컨테이너에서 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 폴리모픽 저장 장치(polymorphic storage device, 이하, "PSD") 커널; 및 상기 하나 이상의 어플리케이션들 및 상기 PSD 커널 사이에 인터페이스를 제공하는 PSD 인터페이스 계층을 포함할 수 있다.
실시 예에 있어서, 상기 호스트 컴퓨터로부터 제어 커맨드에 따라 재구성되는 하나 이상의 하드웨어들을 더 포함하고, 상기 재구성 가능한 하드웨어들은 하나 이상의 프로세서들, 비휘발성 메모리, 및 DRAM(dynamic random access memory)를 포함할 수 있다.
실시 예에 있어서, PSD 제어 인터페이스 및 어플리케이션 인터페이스를 갖는 호스트-사이드 인터페이스는 상기 호스트 컴퓨터에 제공될 수 있다.
실시 예에 있어서, 상기 저장 장치는, 상기 PSD 제어 인터페이스를 통하여 수신된 제어 커맨드에 따라 저장 장치의 제 1 종류로부터 저장 장치의 제 2 종류로 변환될 수 있다.
실시 예에 있어서, 저장 장치의 상기 제 1 종류는 인-스토리지 컴퓨팅 장치(in-storage computing device), 키-밸류 스토어(key-value store) 장치, 및 하도프 디스트리뷰티드 파일 시스템(Hadoop distributed file system; HDFS) 장치, 오브젝트-스토어 장치 중 어느 하나이고, 저장 장치의 상기 제 2 종류는 상기 인-스토리지 컴퓨팅 장치, 상기 키-밸류 스토어 장치, 및 상기 HDFS 장치 중 다른 하나이다.
실시 예에 있어서, 상기 PSD 제어 인터페이스는 상기 저장 장치로 제어 커맨드들 및 메시지들을 제공하도록 구현될 수 있다.
실시 예에 있어서, 상기 어플리케이션 인터페이스들은 백워드 교환성을 위한 에뮬레이티드 호스트-사이드 인터페이스(emulated host-side interface) 및 PSD-어웨어 어플리케이션 인터페이스(PSD-aware application interface)을 포함할 수 있다.
실시 예에 있어서, 하나 이상의 벤더 커맨드들(vendor commands)은 상기 PSD 제어 인터페이스를 통하여 제공될 수 있다.
실시 예에 있어서, 상기 하나 이상의 벤더 커맨드들은, 크리에이트 커맨드(create command), 스타트 커맨드(start command), 스탑 커맨드(stop command), 포오즈 커맨드(pause command), 및 리쥼 커맨드(resume)을 포함할 수 있다.
실시 예에 있어서, 상기 하나 이상의 벤더 커맨드들은, 상기 PSD 제어 인터페이스를 통하여 상기 저장 장치에서 동작하는 어플리케이션을 다른 저장 장치로 이동하거나 복제하기 위한 마이그레이션 커맨드(migration command) 혹은 듀플리케이션 커맨드(duplication command)를 포함할 수 있다.
실시 예에 있어서, 상기 어플리케이션은 집중화 방식(centralized manner) 혹은 비집중화 방식(decentralized manner) 으로 이동되거나 복제될 수 있다.
본 발명의 실시 예에 따른 저장 시스템은, 호스트 컴퓨터; 폴리모픽 저장 장치(polymophic storage device, 이하 "PSD"); 및 상기 호스트 컴퓨터와 상기 PSD 사이에 인터페이스를 제공하는 PSD 인터페이스를 포함하고, 상기 PSD는, 하나 이상의 어플리케이션들을 포함하는 어플리케이션 컨테이너; 상기 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 갖는 복수의 패킷들을 수신하고, 상기 복수의 패킷들에 포함된 커맨드에 근거로 하여 상기 어플리케이션 컨테이너에서 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 PSD 커널; 및 상기 하나 이상의 어플리케이션들 및 상기 PSD 커널 사이에 인터페이스를 제공하는 PSD 인터페이스 계층을 포함할 수 있다.
실시 예에 있어서, 상기 호스트 컴퓨터로부터 제어 커맨드에 따라 재구성되는 하나 이상의 하드웨어들을 더 포함하고, 상기 PSD의 상기 재구성 가능한 하드웨어들은 하나 이상의 프로세서들, 비휘발성 메모리, 및 DRAM(dynamic random access memory)를 포함할 수 있다.
실시 예에 있어서, PSD 제어 인터페이스 및 어플리케이션 인터페이스를 갖는 호스트-사이드 인터페이스는 상기 호스트 컴퓨터에 제공될 수 있다.
실시 예에 있어서, 상기 PSD는 상기 PSD 제어 인터페이스를 통하여 수신된 제어 커맨드에 따라 저장 장치의 제 1 종류로부터 저장 장치의 제 2 종류로 변환될 수 있다.
실시 예에 있어서, 상기 PSD 제어 인터페이스는 상기 PSD로 제어 커맨드들 및 메시지들을 제공하도록 구현될 수 있다.
본 발명의 실시 예에 따른 저장 장치의 방법은: 상기 저장 장치의 어플리케이션 컨테이너에서 하나 이상의 어플리케이션들을 저장하는 단계; 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 갖는 복수의 패킷들을 수신하는 단계; 상기 복수의 패킷들에 포함된 커맨드에 근거로 하여 상기 어플리케이션 컨테이너에서 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 단계; PSD(polymorphic storage device) 인터페이스를 통해 상기 호스트 컴퓨터로부터 수신된 제어 커맨드에 따라 상기 저장 장치의 하나 이상의 하드웨어들을 구성하도록 상기 저장 장치에서 PSD 커널을 구동하는 단계; 및 상기 PSD 커널에 이해 구성된 하드웨어들로 상기 저장 장치를 동작하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 호스트 컴퓨터로부터 제어 커맨드에 따라 하나 이상의 하드웨어들을 재구성하는 단계를 더 포함하고, 상기 재구성 가능한 하드웨어들은 하나 이상의 프로세서들, 비휘발성 메모리, 및 DRAM(dynamic random access memory)를 포함할 수 있다.
실시 예에 있어서, 상기 호스트 컴퓨터에 PSD 제어 인터페이스 및 어플리케이션 인터페이스를 갖는 호스트-사이드 인터페이스를 제공하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 PSD 제어 인터페이스를 통하여 수신된 제어 커맨드에 따라 저장 장치의 제 1 종류로부터 저장 장치의 제 2 종류로 상기 PSD를 변환시키는 단계를 더 포함할 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
110, 410: 호스트 컴퓨터
150: 저장 장치
450, PSD: 폴라모픽 저장 장치
490: PSD 인터페이스
411a ~ 411c: 장치 드라이버
451: 어플리케이션
422: PSD 제어 인터페이스
413: 장치 드라이버 풀

Claims (20)

  1. 하나 이상의 어플리케이션들을 포함하는 어플리케이션 컨테이너;
    저장 장치 내에 구현되고, 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 포함하는 복수의 패킷들을 수신하고, 그리고 상기 복수의 패킷들에 포함된 커맨드에 기초하여 상기 어플리케이션 컨테이너 내의 어플리케이션으로 상기 복수의 패킷들을 라우팅하도록 구성된 PSD(polymorphic storage device) 커널; 및
    상기 하나 이상의 어플리케이션들 및 상기 PSD 커널 사이의 인터페이스를 제공하도록 구성된 PSD 인터페이스 계층을 포함하되,
    상기 PSD 커널은 상기 호스트 컴퓨터에서 실행되는 복수의 장치 드라이버들과 인터페이스하고, 그리고 상기 호스트 컴퓨터로부터 수신된 제어 커맨드에 따라 상기 복수의 장치 드라이버들 중 제1 장치 드라이버를 사용하여 상기 저장 장치를 블록 데이터 스토어 장치로 변환하거나 또는 상기 복수의 장치 드라이버들 중 제2 장치 드라이버를 사용하여 상기 저장 장치를 키-밸류(key-value) 스토어 장치로 변환하도록 더 구성되고, 그리고
    상기 블록 데이터 스토어 장치는 블록 어드레스들에 의해 식별 가능한 복수의 블록 데이터를 저장하고, 상기 키-밸류 스토어 장치는 복수의 키-밸류 데이터를 저장하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 호스트 컴퓨터로부터 수신된 상기 제어 커맨드에 따라 재구성 가능한 하나 이상의 하드웨어를 더 포함하고,
    상기 재구성 가능한 하드웨어는 하나 이상의 프로세서들, 비휘발성 메모리, 및 DRAM(dynamic random access memory)을 포함하는 저장 장치.
  3. 제 1 항에 있어서,
    PSD 제어 인터페이스 및 어플리케이션 인터페이스들을 포함하는 호스트-사이드 인터페이스는 상기 호스트 컴퓨터에 제공되는 저장 장치.
  4. 제 3 항에 있어서,
    상기 제어 커맨드는 상기 PSD 제어 인터페이스를 통해 상기 호스트 컴퓨터로부터 수신되는 저장 장치.
  5. 제 1 항에 있어서,
    상기 블록 데이터 스토어 장치는 인-스토리지(in-storage) 컴퓨팅 장치, 및 HDFS(Hadoop distributed file system) 장치 중 하나의 장치인 저장 장치.
  6. 제 3 항에 있어서,
    상기 PSD 제어 인터페이스는 상기 저장 장치로 제어 커맨드들 및 메시지들을 제공하도록 구성된 저장 장치.
  7. 제 3 항에 있어서,
    상기 어플리케이션 인터페이스들은 백워드(backward) 호환성을 제공하도록 구성된 에뮬레이티드(emulated) 호스트-사이드 인터페이스 및 PSD-어웨어(PSD-aware) 어플리케이션 인터페이스를 포함하는 저장 장치.
  8. 제 3 항에 있어서,
    하나 이상의 벤더(vendor) 커맨드들은 상기 PSD 제어 인터페이스를 통해 제공되는 저장 장치.
  9. 제 8 항에 있어서,
    상기 하나 이상의 벤더 커맨드들은 생성 커맨드(create command), 시작 커맨드(start command), 중지 커맨드(stop command), 일시 중지 커맨드(pause command), 및 재개 커맨드(resume command)를 포함하는 저장 장치.
  10. 제 8 항에 있어서,
    상기 하나 이상의 벤더 커맨드들은 상기 PSD 제어 인터페이스를 통해 상기 저장 장치에서 실행되는 어플리케이션을 다른 저장 장치로 이동시키거나 복제하기 위한 이동 커맨드(migration command) 또는 복제 커맨드(duplication command)를 포함하는 저장 장치.
  11. 제 10 항에 있어서,
    상기 어플리케이션은 집중화(centralized) 방식 또는 비집중화(decentralized) 방식으로 이동되거나 복제되는 저장 장치.
  12. 호스트 컴퓨터;
    PSD(polymorphic storage device); 및
    상기 호스트 컴퓨터 및 상기 PSD 사이의 인터페이스를 제공하는 PSD 인터페이스를 포함하되,
    상기 PSD는:
    하나 이상의 어플리케이션들을 포함하는 어플리케이션 컨테이너;
    상기 호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 포함하는 복수의 패킷들을 수신하고, 그리고 상기 복수의 패킷들에 포함된 커맨드에 기초하여 상기 어플리케이션 컨테이너 내의 어플리케이션으로 상기 복수의 패킷들을 라우팅하도록 구성된 PSD 커널; 및
    상기 하나 이상의 어플리케이션들 및 상기 PSD 커널 사이의 인터페이스를 제공하도록 구성된 PSD 인터페이스 계층을 포함하고,
    상기 PSD 커널은 상기 호스트 컴퓨터에서 실행되는 복수의 장치 드라이버들과 인터페이스하고, 그리고 상기 호스트 컴퓨터로부터 수신된 제어 커맨드에 따라 상기 복수의 장치 드라이버들 중 제1 장치 드라이버를 사용하여 상기 PSD를 블록 데이터 스토어 장치로 변환하거나 또는 상기 복수의 장치 드라이버들 중 제2 장치 드라이버를 사용하여 상기 PSD를 키-밸류(key-value) 스토어 장치 사이로 변환하도록 더 구성되고, 그리고
    상기 블록 데이터 스토어 장치는 블록 어드레스들에 의해 식별 가능한 복수의 블록 데이터를 저장하고, 상기 키-밸류 스토어 장치는 복수의 키-밸류 데이터를 저장하는 저장 시스템.
  13. 제 12 항에 있어서,
    상기 호스트 컴퓨터로부터 수신된 상기 제어 커맨드에 따라 재구성 가능한 하나 이상의 하드웨어를 더 포함하고,
    상기 PSD의 상기 재구성 가능한 하드웨어는 하나 이상의 프로세서들, 비휘발성 메모리, 및 DRAM(dynamic random access memory)을 포함하는 저장 시스템.
  14. 제 12 항에 있어서,
    PSD 제어 인터페이스 및 어플리케이션 인터페이스들을 포함하는 호스트-사이드 인터페이스는 상기 호스트 컴퓨터에 제공되는 저장 시스템.
  15. 제 14 항에 있어서,
    상기 제어 커맨드는 상기 PSD 제어 인터페이스를 통해 수신되는 저장 시스템.
  16. 제 14 항에 있어서,
    상기 PSD 제어 인터페이스는 상기 PSD로 제어 커맨드들 및 메시지들을 제공하도록 구성된 저장 시스템.
  17. 저장 장치의 어플리케이션 컨테이너에 하나 이상의 어플리케이션들을 저장하는 단계;
    호스트 컴퓨터로부터 데이터, 메시지들, 및 커맨드들을 포함하는 복수의 패킷들을 수신하는 단계;
    상기 복수의 패킷들에 포함된 커맨드에 기초하여 상기 어플리케이션 컨테이너 내의 어플리케이션으로 상기 복수의 패킷들을 라우팅하는 단계;
    상기 호스트 컴퓨터에서 실행되는 복수의 장치 드라이버들과 인터페이스하고, 그리고 PSD 인터페이스를 통해 상기 호스트 컴퓨터로부터 수신된 제어 커맨드에 따라 상기 복수의 장치 드라이버들 중 제1 장치 드라이버를 사용하여 상기 저장 장치를 블록 데이터 스토어 장치로 변환하거나 또는 상기 복수의 장치 드라이버들 중 제2 장치 드라이버를 사용하여 상기 저장 장치를 키-밸류(key-value) 스토어 장치로 변환하기 위해, 상기 저장 장치에서 구현된 PSD 커널을 실행하는 단계; 및
    상기 PSD 커널에 의해 구성된 상기 블록 데이터 스토어 장치 또는 상기 키-밸류 스토어 장치로서 상기 저장 장치를 동작시키는 단계를 포함하되,
    상기 블록 데이터 스토어 장치는 블록 어드레스들에 의해 식별 가능한 복수의 블록 데이터를 저장하고, 상기 키-밸류 스토어 장치는 복수의 키-밸류 데이터를 저장하는 방법.
  18. 제 17 항에 있어서,
    상기 PSD 인터페이스를 통해 상기 호스트 컴퓨터로부터 수신된 다른 커맨드에 따라 하나 이상의 하드웨어를 재구성하는 단계를 더 포함하고,
    상기 하나 이상의 재구성 가능한 하드웨어는 하나 이상의 프로세서들, 비휘발성 메모리, 및 DRAM(dynamic random access memory)을 포함하는 방법.
  19. 제 17 항에 있어서,
    상기 호스트 컴퓨터에 호스트-사이드 인터페이스를 제공하는 단계를 더 포함하고,
    상기 호스트-사이드 인터페이스는 PSD 제어 인터페이스 및 어플리케이션 인터페이스들을 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 제어 커맨드는 상기 PSD 제어 인터페이스를 통해 수신되는 방법.
KR1020160120899A 2016-02-02 2016-09-21 폴리모픽 저장 장치들 KR102419149B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662290295P 2016-02-02 2016-02-02
US62/290,295 2016-02-02
US15/133,085 2016-04-19
US15/133,085 US10423331B2 (en) 2016-02-02 2016-04-19 Polymorphic storage devices

Publications (2)

Publication Number Publication Date
KR20170092091A KR20170092091A (ko) 2017-08-10
KR102419149B1 true KR102419149B1 (ko) 2022-07-08

Family

ID=59387543

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160120899A KR102419149B1 (ko) 2016-02-02 2016-09-21 폴리모픽 저장 장치들

Country Status (5)

Country Link
US (1) US10423331B2 (ko)
JP (1) JP6734792B2 (ko)
KR (1) KR102419149B1 (ko)
CN (1) CN107066404B (ko)
TW (1) TWI699697B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273106B (zh) * 2016-04-08 2021-07-06 北京三星通信技术研究有限公司 物体信息翻译、以及衍生信息获取方法和装置
US10204075B2 (en) * 2016-10-25 2019-02-12 Zentific LLC Systems and methods for facilitating interactions with remote memory spaces
US10437799B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
US10437800B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
US10496335B2 (en) * 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
KR102523327B1 (ko) * 2018-03-19 2023-04-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN110311948B (zh) * 2019-05-17 2022-07-15 深圳致星科技有限公司 容器/容器组间的通信方法及基于此的容器云网络系统
US11797217B2 (en) * 2020-01-06 2023-10-24 Kioxia Corporation Systems and methods for collecting storage device statistics
CN113114482B (zh) * 2021-03-08 2022-06-14 中国—东盟信息港股份有限公司 一种基于容器的混合云管理系统及方法
US12019548B2 (en) 2022-04-18 2024-06-25 Samsung Electronics Co., Ltd. Systems and methods for a cross-layer key-value store architecture with a computational storage device

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007159B2 (en) 2002-05-10 2006-02-28 Intel Corporation System and method for loading and integrating a firmware extension onto executable base system firmware during initialization
US8176186B2 (en) * 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
WO2008035141A2 (en) 2006-09-20 2008-03-27 Chan Kam-Fu From polymorphic executable to polymorphic operating system
WO2009043164A1 (en) 2007-10-04 2009-04-09 Memory Experts International Inc. A method of providing firmware to a processor-based electronic device
US8812976B2 (en) 2009-03-16 2014-08-19 Rhk Technology, Inc. Programmable equipment configuration method and apparatus
US8984503B2 (en) * 2009-12-31 2015-03-17 International Business Machines Corporation Porting virtual images between platforms
JP2013536514A (ja) * 2010-08-25 2013-09-19 ネベックス バーチャル テクノロジーズ インコーポレイティッド データストレージシステム機能を拡張する方法およびシステム
WO2013080243A2 (en) * 2011-11-28 2013-06-06 Hitachi, Ltd. Storage system controller, storage system, and access control method
KR20130073669A (ko) * 2011-12-23 2013-07-03 삼성전기주식회사 전원 스위칭 구동 장치, 이를 갖는 역률 보정 장치 및 전원 공급 장치
US9720668B2 (en) 2012-02-29 2017-08-01 Red Hat, Inc. Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US8741040B2 (en) * 2012-04-26 2014-06-03 Xerox Corporation Phase change ink compositions comprising aromatic ethers
US20140047342A1 (en) 2012-08-07 2014-02-13 Advanced Micro Devices, Inc. System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics
DE102013114069A1 (de) * 2013-01-03 2014-07-03 Samsung Electronics Co., Ltd. Rekonfigurierbare Speichervorrichtung
US9276829B2 (en) * 2013-02-07 2016-03-01 International Business Machines Corporation Transparently tracking provenance information in distributed data systems
CN103744614B (zh) * 2013-12-17 2017-07-07 记忆科技(深圳)有限公司 固态硬盘访问的方法及其固态硬盘
US10353633B2 (en) * 2013-12-19 2019-07-16 Sony Interactive Entertainment LLC Mass storage virtualization for cloud computing
US9678678B2 (en) * 2013-12-20 2017-06-13 Lyve Minds, Inc. Storage network data retrieval
US9569141B2 (en) * 2014-03-28 2017-02-14 Intel Corporation Hash map support in a storage device
US9781206B2 (en) * 2014-05-09 2017-10-03 Lyve Minds, Inc. Blended storage allocation on a storage agent
US20170053190A1 (en) * 2015-08-20 2017-02-23 Elwha Llc Detecting and classifying people observing a person
US9927984B2 (en) * 2015-10-14 2018-03-27 Samsung Electronics Co., Ltd. Electronic system with interface control mechanism and method of operation thereof

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2013-0073669호(2013.03.21.) 1부.*
미국공개특허 제2013-0227563호(2013.08.29.) 1부.*
미국등록특허 제9075710호(2015.07.07.) 1부.*
한국공개특허 제10-2013-0046441호(2013.05.07.) 1부.*

Also Published As

Publication number Publication date
US20170220259A1 (en) 2017-08-03
CN107066404A (zh) 2017-08-18
TWI699697B (zh) 2020-07-21
JP2017138982A (ja) 2017-08-10
CN107066404B (zh) 2021-12-14
US10423331B2 (en) 2019-09-24
JP6734792B2 (ja) 2020-08-05
KR20170092091A (ko) 2017-08-10
TW201732534A (zh) 2017-09-16

Similar Documents

Publication Publication Date Title
KR102419149B1 (ko) 폴리모픽 저장 장치들
US11562091B2 (en) Low latency access to physical storage locations by implementing multiple levels of metadata
US11307935B2 (en) Management of volume snapshots in a data storage system
US11994984B2 (en) Namespace mapping optimization in non-volatile memory devices
US11163699B2 (en) Managing least recently used cache using reduced memory footprint sequence container
US11687446B2 (en) Namespace change propagation in non-volatile memory devices
US9648081B2 (en) Network-attached memory
US11656775B2 (en) Virtualizing isolation areas of solid-state storage media
US20210055953A1 (en) Efficient metadata management
KR20170008153A (ko) 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스
US11016817B2 (en) Multi root I/O virtualization system
US11386023B1 (en) Retrieval of portions of storage device access data indicating access state changes
US11550479B1 (en) Metadata management in storage systems
US12001338B2 (en) Method and system for implementing metadata compression in a virtualization environment
US10152234B1 (en) Virtual volume virtual desktop infrastructure implementation using a primary storage array lacking data deduplication capability
US11287973B2 (en) Polymorphic storage devices
US20230333766A1 (en) Modified copy-on-write snapshotting
US11609854B1 (en) Utilizing checkpoints for resiliency of metadata in storage systems
KR20210025505A (ko) 다형성 스토리지 장치
US20230176884A1 (en) Techniques for switching device implementations for virtual devices
US20230176921A1 (en) Application-defined storage architecture for offloading computation
US20230342212A1 (en) Load distribution in a data storage system
US11500815B2 (en) Dual relationship-based hash structure for non-volatile memory technology

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