KR20170141538A - 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들 - Google Patents

오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들 Download PDF

Info

Publication number
KR20170141538A
KR20170141538A KR1020160074735A KR20160074735A KR20170141538A KR 20170141538 A KR20170141538 A KR 20170141538A KR 1020160074735 A KR1020160074735 A KR 1020160074735A KR 20160074735 A KR20160074735 A KR 20160074735A KR 20170141538 A KR20170141538 A KR 20170141538A
Authority
KR
South Korea
Prior art keywords
memory
storage
value
read
controller
Prior art date
Application number
KR1020160074735A
Other languages
English (en)
Inventor
김한준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020160074735A priority Critical patent/KR20170141538A/ko
Priority to US15/593,719 priority patent/US20170364280A1/en
Priority to CN201710450282.9A priority patent/CN107526542A/zh
Publication of KR20170141538A publication Critical patent/KR20170141538A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • G06F17/30132
    • 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/0638Organizing or formatting or addressing of data
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/465Structured object, e.g. database record

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시에 따른 오브젝트 스토리지 장치는 데이터를 오브젝트 단위로 관리하는 장치로서, 오브젝트의 아이디 또는 키를 기초로 오브젝트의 저장 주소를 인덱싱하고, 저장 주소에 따라 오브젝트에 대한 기입 동작 및 독출 동작을 제어하는 컨트롤러, 제1 레이턴시를 갖고 오브젝트의 제1 부분을 저장하도록 구성된 제1 메모리, 그리고, 제1 레이턴시보다 큰 제2 레이턴시를 갖고 오브젝트의 제2 부분을 중복 저장하도록 구성된 제1 및 제2 저장 공간들을 포함하는 제2 메모리를 포함한다.

Description

오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들{Object storage device and methods of operating the object storage device}
본 개시의 기술적 사상은 스토리지 장치에 관한 것으로, 더욱 상세하게는, 오브젝트 스토리지 장치 또는 키-밸류 스토어 장치 및 상기 오브젝트 스토리지 장치 또는 키-밸류 스토어 장치의 동작 방법에 관한 것이다.
스토리지는 데이터를 관리하는 단위에 따라 오브젝트 기반 스토리지 및 블록 기반 스토리지로 구분될 수 있다. 오브젝트 기반 스토리지(이하 '오브젝트 스토리지'라고 지칭함)는 데이터를 오브젝트 형식으로 저장하고 관리하는 스토리지 구조이다. 오브젝트는 임의의 크기를 가질 수 있는 데이터로, 예를 들어 동영상, 이미지 등의 멀티미디어 데이터, 파일 등을 의미하며, 오브젝트 스토리지는 오브젝트를 관리하기 위해 사용될 수 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는 빠른 응답 속도 및 증가된 저장 용량을 제공할 수 있는 오브젝트 스토리지 장치 또는 키-밸류 스토어 장치 및 상기 오브젝트 스토리지 장치 또는 키-밸류 스토어 장치의 동작 방법들을 제공하는 데에 있다.
본 개시의 기술적 사상에 따른 오브젝트 스토리지 장치는 데이터를 오브젝트 단위로 관리하는 장치로서, 오브젝트의 아이디 또는 키를 기초로 상기 오브젝트의 저장 주소를 인덱싱하고, 상기 저장 주소에 따라 상기 오브젝트에 대한 기입 동작 및 독출 동작을 제어하는 컨트롤러, 제1 레이턴시를 갖고, 상기 오브젝트의 제1 부분을 저장하도록 구성된 제1 메모리, 및 상기 제1 레이턴시보다 큰 제2 레이턴시를 갖고, 상기 오브젝트의 제2 부분을 중복 저장하도록 구성된 제1 및 제2 저장 공간들을 포함하는 제2 메모리를 포함한다.
또한, 본 개시의 다른 기술적 사상에 따른 방법은 데이터를 오브젝트 단위로 관리하는 오브젝트 스토리지 장치의 동작 방법으로서, 오브젝트 및 기입 요청을 수신하는 단계, 상기 오브젝트의 사이즈가 임계치보다 크면 상기 오브젝트를 적어도 제1 및 제2 부분들로 분할하는 단계, 제1 레이턴시를 갖는 제1 메모리에 상기 제1 부분을 저장하는 단계, 및 상기 제1 레이턴시보다 큰 제2 레이턴시를 갖는 제2 메모리의 제1 및 제2 저장 공간들에 상기 제2 부분을 중복 저장하는 단계를 포함한다.
또한, 본 개시의 다른 기술적 사상에 따른 방법은 데이터를 오브젝트 단위로 관리하는 오브젝트 스토리지 장치의 동작 방법으로서, 독출 요청을 수신하는 단계, 상기 독출 요청에 대응하는 오브젝트가 저장된 저장 주소를 검색하는 단계, 제1 구간에서, 검색된 상기 저장 주소를 기초로, 제1 레이턴시를 갖는 제1 메모리로부터 상기 오브젝트의 제1 부분을 독출하고, 독출된 상기 제1 부분을 외부로 전송하는 단계, 상기 제1 구간에서, 검색된 상기 저장 주소를 기초로, 상기 제1 레이턴시보다 큰 제2 레이턴시를 갖는 제2 메모리의 제1 및 제2 저장 공간들 중 하나로부터 상기 오브젝트의 제2 부분을 독출하는 단계, 및 상기 제1 구간 이후의 제2 구간에서, 독출된 상기 제2 부분을 상기 외부로 전송하는 단계를 포함한다.
본 개시의 기술적 사상에 따르면, 오브젝트 스토리지 장치 또는 키-밸류 스토어 장치는 이종의 제1 및 제2 메모리들을 포함하고, 오브젝트의 사이즈가 임계치보다 크면 오브젝트의 제1 부분을 응답 속도가 상대적으로 빠른 제1 메모리에 저장하고, 오브젝트의 제2 부분을 응답 속도가 상대적으로 느린 제2 메모리의 제1 및 제2 저장 공간들에 중복 저장함으로써, 빠른 응답 속도를 유지하면서 제2 메모리의 저장 용량만큼 저장 용량을 증가시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 2는 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치를 나타내는 블록도이다.
도 3은 도 2의 제1 메모리의 일 예를 나타낸다.
도 4는 도 2의 제2 메모리의 일 예를 나타낸다.
도 5는 도 2의 제2 메모리의 일 예를 나타내는 블록도다.
도 6은 도 2의 컨트롤러의 일 예를 나타내는 블록도이다.
도 7은 도 6의 인덱싱부의 동작의 일 예를 나타낸다.
도 8은 도 6의 인덱싱 유닛의 일 예를 나타내는 블록도이다.
도 9는 도 2의 컨트롤러의 일 예를 나타내는 블록도이다.
도 10은 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 11 내지 도 13은 본 개시의 일 실시예에 따른, 도 2의 오브젝트 스토리지 장치에 대한 기입 동작의 예들을 나타낸다.
도 14는 본 개시의 일 실시예에 따른 어플리이케이션 서버와 캐시 서버 사이의 동작을 나타내는 흐름도이다.
도 15는 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 16 및 도 17은 본 개시의 일 실시예에 따른, 도 2의 오브젝트 스토리지 장치에 대한 독출 동작의 예들을 나타낸다.
도 18a는 본 개시의 일 실시예에 따른, 도 17에 예시된 오브젝트 스토리지 장치의 시간에 따른 독출 동작을 나타내고, 도 18b는 본 개시의 비교예에 따른 오브젝트 스토리지 장치의 시간에 따른 독출 동작을 나타낸다.
도 19는 본 개시의 일 실시예에 따른 어플리이케이션 서버와 캐시 서버 사이의 동작을 나타내는 흐름도이다.
도 20은 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치를 나타내는 블록도이다.
도 21은 본 개시의 일 실시예에 따른, 도 20의 오브젝트 스토리지 장치에 대한 기입 동작의 일 예를 나타낸다.
도 22는 본 개시의 일 실시예에 따른, 도 20의 오브젝트 스토리지 장치에 대한 독출 동작의 일 예를 나타낸다.
도 23은 본 개시의 일 실시예에 따른, 도 22에 예시된 오브젝트 스토리지 장치의 시간에 따른 독출 동작을 나타낸다.
도 24는 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치를 나타내는 블록도이다.
도 25는 본 개시의 일 실시예에 따른, 도 24의 오브젝트 스토리지 장치에 대한 기입 동작의 일 예를 나타낸다.
도 26은 본 개시의 일 실시예에 따른, 도 24의 오브젝트 스토리지 장치에 대한 독출 동작의 일 예를 나타낸다.
도 27은 본 개시의 일 실시예에 따른, 도 26에 예시된 오브젝트 스토리지 장치의 시간에 따른 독출 동작을 나타낸다.
도 28은 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치를 나타내는 블록도이다.
도 29는 본 개시의 일 실시예에 따른, 도 28의 오브젝트 스토리지 장치에 대한 기입 동작의 일 예를 나타낸다.
도 30은 본 개시의 일 실시예에 따른, 도 28의 오브젝트 스토리지 장치에 대한 독출 동작의 일 예를 나타낸다.
도 31은 본 개시의 일 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 1은 본 개시의 일 실시예에 따른 네트워크 시스템(10)을 나타낸다.
도 1을 참조하면, 네트워크 시스템(10)은 클라이언트 그룹(11)과 데이터 센터(12)를 포함할 수 있다. 클라이언트 그룹(11)은 복수의 클라이언트 장치들(C)을 포함할 수 있고, 클라이언트 장치들(C)은 제1 네트워크(NET1), 예를 들어, 인터넷을 통해 데이터 센터(12)와 통신할 수 있다. 클라이언트 장치들(C)은 스마트폰, 스마트패드, 노트북컴퓨터, 개인용컴퓨터, 스마트카메라, 스마트텔레비전 등과 같은 다양한 전자 장치들을 포함할 수 있다.
데이터 센터(12)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 어플리케이션 서버 그룹(12a), 데이터베이스 서버 그룹(12b) 및 오브젝트 캐시 서버 그룹(12c)을 포함할 수 있다. 어플리케이션 서버 그룹(12a), 데이터베이스 서버 그룹(12b) 및 오브젝트 캐시 서버 그룹(12c)은 제2 네트워크(NET2), 예를 들어, LAN(Local Area Network) 또는 인트라넷을 통해 서로 통신할 수 있다.
어플리케이션 서버 그룹(12a)은 복수의 어플리케이션 서버 장치들(AS)을 포함할 수 있고, 어플리케이션 서버 장치들(AS)은 제1 네트워크(NET1)를 통해 클라이언트 그룹(11)으로부터 수신한 요청을 처리하고, 클라이언트 그룹(11)의 요청에 따라 데이터베이스 서버 그룹(12b) 또는 오브젝트 캐시 서버 그룹(12c)을 액세스할 수 있다. 구체적으로, 어플리케이션 서버 장치들(AS)은 클라이언트 그룹(11)이 저장 요청한 데이터를 제2 네트워크(NET2)를 통해 데이터베이스 서버 그룹(12b)에 저장할 수 있고, 데이터베이스 서버 그룹(12b)에 저장되는 데이터 중 일부를 오브젝트 캐시 서버 그룹(12c)에 저장할 수 있다. 또한, 어플리케이션 서버 장치들(AS)은 클라이언트 그룹(11)이 독출 요청한 데이터를 오브젝트 캐시 서버 그룹(12c)으로부터 제2 네트워크(NET2)를 통해 획득할 수 있고, 요청된 데이터가 오브젝트 캐시 서버 그룹(12c)에 존재하지 않는 경우, 클라이언트 그룹(11)이 독출 요청한 데이터를 데이터베이스 서버 그룹(12b)으로부터 제2 네트워크(NET2)를 통해 획득할 수 있다.
데이터베이스 서버 그룹(12b)은 복수의 데이터베이스 서버 장치들(DS)을 포함할 수 있다. 데이터베이스 서버 장치들(DS)은 어플리케이션 서버 장치들(AS)에 의해 처리된 데이터를 저장하고, 어플리케이션 서버 장치들(AS)의 요청에 따라 데이터를 어플리케이션 서버 장치들(AS)에 제공할 수 있다. 데이터베이스 서버 장치들(DS) 각각은 불휘발성의 대용량 저장소를 제공할 수 있다.
오브젝트 캐시 서버 그룹(12c)은 복수의 오브젝트 캐시 서버 장치들(OCS)을 포함할 수 있다. 오브젝트 캐시 서버 장치들(OCS)은 데이터베이스 서버 장치들(DS)에 저장되는 데이터 또는 데이터베이스 서버 장치들(DS)로부터 독출된 데이터를 임시로 저장하며, 이에 따라, 오브젝트 캐시 서버 장치들(OCS)은 어플리케이션 서버 장치들(AS)과 데이터베이스 서버 장치들(DS) 사이에서 캐시의 기능을 수행할 수 있다. 오브젝트 캐시 서버 장치들(OCS)은 데이터베이스 서버들(DS)보다 높은 응답 속도로 어플리케이션 서버 그룹(12a)의 요청에 응답할 수 있다. 이와 같이, 오브젝트 캐시 서버 장치들(OCS) 각각은 고속의 저장소를 제공할 수 있다.
본 실시예에 따르면, 오브젝트 캐시 서버 장치(OCS)는 이종의 메모리들을 포함하도록 구현될 수 있다. 일 실시예에서, 오브젝트 캐시 서버 장치(OCS)는 제1 레이턴시를 갖는 제1 메모리와 제1 레이턴시보다 큰 제2 레이턴시를 갖는 제2 메모리를 포함할 수 있다. 오브젝트 캐시 서버 장치(OCS)는 제1 및 제2 메모리들에 대한 독출 동작들을 동시에 수행하고, 응답 속도가 빠른 제1 메모리에서 독출된 데이터를 전송하는 동안, 제2 메모리에 대한 독출 동작을 계속해서 수행할 수 있다.
구체적으로, 오브젝트 캐시 서버 장치(OCS)는 어플리케이션 서버 장치(AS)로부터의 기입 요청에 응답하여 오브젝트의 앞 부분을 제1 메모리에 저장하고, 오브젝트의 뒷 부분을 제2 메모리에 중복 저장할 수 있다. 오브젝트 캐시 서버 장치(OCS)는 어플리케이션 서버 장치(AS)로부터의 독출 요청에 응답하여 제1 및 제2 메모리들에 대한 독출 동작들을 동시에 수행하고, 독출 속도가 빠른 제1 메모리로부터 독출된, 오브젝트의 앞 부분을 먼저 전송하고, 독출 속도가 느린 제2 메모리로부터 독출된, 오브젝트의 뒷 부분을 이어서 전송할 수 있다. 이에 따라, 오브젝트 캐시 서버 장치(OCS)는 빠른 응답 속도를 유지하면서 제2 메모리의 저장 용량만큼 저장 용량을 증가시킬 수 있다. 이하에서는, 도 2 내지 도 30을 참조하여 오브젝트 캐시 서버 장치(OCS)의 다양한 구현예들을 상술하기로 한다.
도 2는 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치(100)를 나타내는 블록도이다.
도 2를 참조하면, 오브젝트 스토리지 장치(100)는 데이터를 오브젝트 단위로 관리하는 장치로서, 제1 메모리(110), 제2 메모리(120) 및 컨트롤러(130)를 포함할 수 있다. 일 실시예에서, 오브젝트 스토리지 장치(100)는 오브젝트 캐시 장치 또는 오브젝트 캐시 시스템으로 이용될 수 있다. 예를 들어, 오브젝트 스토리지 장치(100)는 도 1의 오브젝트 캐시 서버 장치(OCS)일 수 있다. 그러나, 본 발명은 캐시 장치에 한정되지 않으며, 일부 실시예들에서, 오브젝트 스토리지 장치(100)는 데이터를 오브젝트 단위로 관리하는 임의의 장치 또는 시스템으로 이용될 수 있다. 또한, 일부 실시예들에서, 오브젝트 스토리지 장치(100)는 서버 장치에 한정되지 않으며, 메모리 모듈 또는 스토리지 모듈로 구현될 수도 있다.
제1 및 제2 메모리들(110, 120)은 서로 다른 하드웨어 속성을 가지는 이종의 메모리들일 수 있다. 제1 및 제2 메모리들(110, 120)은 각각 메모리 칩으로 구현될 수 있다. 예를 들어, 하드웨어 속성은 레이턴시(latency), 메모리 대역폭(bandwidth), 메모리 소비 전력 등을 포함할 수 있다. 여기서, 레이턴시는 독출 레이턴시, 기입 레이턴시, CAS(Column Adress Strobe) 레이턴시, RAS(Row Address Strobe) 레이턴시 등일 수 있다.
일 실시예에서, 제1 메모리(110)는 제1 레이턴시를 갖고, 제2 메모리(120)는 제2 레이턴시를 가질 수 있으며, 제2 레이턴시는 제1 레이턴시보다 클 수 있다. 이에 따라, 제1 메모리(110)는 제2 메모리(120)보다 빠른 응답 시간으로 동작할 수 있다. 예를 들어, 제1 메모리(110)는 DRAM(Dynamic Random Access Memory) 또는 PRAM(Phase-Change Random Access Memory) 등을 포함할 수 있다. 예를 들어, 제2 메모리(120)는 낸드(NAND) 플래시 메모리 또는 하드 디스크 드라이브 등을 포함할 수 있다.
일 실시예에서, 제1 메모리(110)는 휘발성 메모리이고, 제2 메모리(120)는 비휘발성 메모리일 수 있다. 일 실시예에서, 제1 및 제2 메모리들(110, 120)은 휘발성 메모리들일 수 있다. 일 실시예에서, 제1 및 제2 메모리들(110, 120)은 비휘발성 메모리들일 수 있다. 예를 들어, 휘발성 메모리는 DRAM, 모바일 DRAM, SDRAM(Synchronous DRAM), DDR(Double Data Rate) DRAM, LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus DRAM) 등을 포함할 수 있다. 예를 들어, 비휘발성 메모리는 낸드 플래시 메모리, 노어(NOR) 플래시 메모리, PRAM, MRAM(Magnetic Random Access memory), ReRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 포함할 수 있다.
본 실시예에 따르면, 제1 메모리(110)는 오브젝트의 제1 부분(portion)을 저장하도록 구성될 수 있고, 제2 메모리(120)는 오브젝트의 제2 부분을 중복 저장하도록 구성된 제1 및 제2 저장 공간들(121, 122)을 포함할 수 있다. 구체적으로, 오브젝트의 제2 부분은 복사되어 제1 및 제2 저장 공간들(121, 122)에 각각 저장될 수 있다. 컨트롤러(130)는 오브젝트의 아이디(ID) 또는 키(key)를 기초로 오브젝트의 저장 주소를 인덱싱하고, 저장 주소에 따라 오브젝트에 대한 기입 동작 및 독출 동작을 제어할 수 있다. 구체적으로, 컨트롤러(130)는 제1 부분이 저장되는 제1 저장 주소 및 제2 부분이 중복 저장되는 제2 저장 주소들을 인덱싱 구조로 저장할 수 있다.
도 3은 도 2의 제1 메모리의 일 예(110A)를 나타낸다. 도 3을 참조하면, 제1 메모리(110A)는 복수의 메모리들을 포함할 수 있고, 복수의 메모리들은 동종의(homogeneous) 메모리들일 수 있다. 본 실시예에서, 제1 메모리(110A)는 복수의 DRAM들을 포함할 수 있고, 복수의 DRAM들은 예를 들어, 제1 내지 제4 랭크들(RANK1 내지 RANK4)을 구성할 수 있다. 각 랭크는 컨트롤러(예를 들어, 도 2의 130)에 의해 독립적으로 액세스될 수 있고, 서로 다른 랭크에 속한 DRAM들은 컨트롤러에 의해 병렬적으로 동시에 액세스될 수 있다.
도 4는 도 2의 제2 메모리의 일 예(120A)를 나타낸다. 도 4를 참조하면, 제2 메모리(120A)는 낸드 플래시 메모리일 수 있고, 단일 칩으로 구현될 수 있다. 제2 메모리(120A)는 제1 및 제2 저장 공간들(121A, 122A)을 포함할 수 있고, 제1 및 제2 저장 공간들(121A, 122A)은 제1 및 제2 다이들에 각각 대응할 수 있다. 본 실시예에 따르면, 오브젝트의 제2 부분은 복사되어 제1 저장 공간(121A)에 포함된 적어도 하나의 페이지 및 제2 저장 공간(122A)에 포함된 적어도 하나의 페이지에 각각 저장될 수 있다.
일부 실시예들에서, 도 2의 제1 및 제2 저장 공간들(121, 122)은 동일 다이 내에서 서로 다른 플레인들에 각각 위치할 수 있다. 예를 들어, 도 2의 제1 저장 공간(121)은 제1 플레인(PL0)의 일부 영역에 대응하고, 도 2의 제2 저장 공간(122)은 제2 플레인(PL1)의 일부 영역에 대응할 수 있다. 이때, 오브젝트의 제2 부분은 복사되어 제1 플레인(PL0)에 포함된 적어도 하나의 페이지 및 제2 플레인(PL1)에 포함된 적어도 하나의 페이지에 각각 저장될 수 있다.
일부 실시예들에서, 도 2의 제1 및 제2 저장 공간들(121, 122)은 동일 플레인 내에서 서로 다른 블록들에 각각 위치할 수 있다. 예를 들어, 도 2의 제1 저장 공간(121)은 제1 블록(BLK0)의 일부 영역에 대응하고, 도 2의 제2 저장 공간(122)은 제2 블록(BLK1)의 일부 영역에 대응할 수 있다. 이때, 오브젝트의 제2 부분은 복사되어 제1 블록(BLK0)에 포함된 적어도 하나의 페이지 및 제2 블록(BLK1)에 포함된 적어도 하나의 페이지에 각각 저장될 수 있다.
도 5는 도 2의 제2 메모리의 일 예(120B)를 나타내는 블록도다. 도 5를 참조하면, 제2 메모리(120B)은 제1 및 제2 저장 공간들(121B, 122B) 및 제어 로직 회로(Control Logic Circuit)(CLC)을 포함할 수 있다. 제1 저장 공간(121B)은 제1 메모리 셀 어레이(1211), 제1 로우 디코더(1212) 및 제1 페이지 버퍼(1213)를 포함하고, 제2 저장 공간(122B)는 제2 메모리 셀 어레이(1221), 제2 로우 디코더(1222) 및 제2 페이지 버퍼(1223)를 포함할 수 있다.
제1 저장 공간(121B)에 포함되는 제1 메모리 셀 어레이(1211)와 제2 저장 공간(122B)에 포함되는 제2 메모리 셀 어레이(1221)는 서로 독립적으로 제어될 수 있으며, 또한, 서로 동시에 제어될 수 있다. 이에 따라, 컨트롤러(예를 들어, 도 2의 130)는 제1 및 제2 저장 공간들(121B, 122B)에 대한 동작을 병렬적으로 제어할 수 있다. 이때, 오브젝트의 제2 부분은 복사되어 제1 메모리 셀 어레이(1211)에 포함된 적어도 하나의 페이지 및 제2 메모리 셀 어레이(1221)에 포함된 적어도 하나의 페이지에 각각 저장될 수 있다. 여기서, 제1 및 제2 메모리 셀 어레이들(1211, 1221)은 메모리 플레인들이라고 지칭될 수 있다.
다시 도 2를 참조하면, 일 실시예에서, 오브젝트 스토리지 장치(100)는 키-밸류 스토어(key-value store)일 수 있다. 키-밸류 스토어는 키-밸류 페어(pair)를 이용하여 데이터를 빠르고 간단하게 처리하는 장치이다. 여기서, 키-밸류 페어는 유일성을 가지는 키와, 키에 대응하는 데이터인 밸류의 쌍이다. 키-밸류 페어에서, 키는 파일 네임(file name), URI(Uniform Resource Identifier) 또는 해시와 같은 임의의 스트링으로 표시되고, 밸류는 이미지, 사용자 선호 파일 또는 문서와 같은 임의의 종류의 데이터일 수 있다. 이때, 밸류에 포함되는 데이터에 따라, 밸류의 사이즈는 가변적이다.
이하에서는, 오브젝트 스토리지 장치(100)가 키-밸류 스토어인 실시예를 중심으로 설명하기로 하며, 본 명세서에서, 오브젝트 스토리지 장치(100)는 키-밸류 스토어와 실질적으로 동일한 의미로 사용될 수 있다. 그러나, 오브젝트 스토리지 장치(100)는 키-밸류 스토어에 한정되지 않으며, 데이터를 오브젝트 단위로 관리하는 임의의 오브젝트 캐시 시스템 또는 오브젝트 스토리지 시스템에 적용될 수 있다. 따라서, 오브젝트 스토리지 장치(100)는 키-밸류 페어가 아닌 임의의 방식으로 데이터를 오브젝트 단위로 관리할 수 있다.
도 6은 도 2의 컨트롤러의 일 예(130A)를 나타내는 블록도이다. 도 6을 참조하면, 컨트롤러(130A)는 인터페이스 유닛(131), 인덱싱 유닛(132) 및 로드/스토어 유닛(133)을 포함할 수 있다. 인터페이스 유닛(131), 인덱싱 유닛(132) 및 로드/스토어 유닛(133)은 각각 IP(Intellectual Property)로 구현될 수 있다.
인터페이스 유닛(131)은 제1 데이터 포맷에 따라 외부와 통신하고, 제2 데이터 포맷에 따라 내부와, 즉, 인덱싱 유닛(132)과 통신할 수 있다. 예를 들어, 제1 데이터 포맷은 도 1의 제2 네트워크(NET2)를 통해 어플리케이션 서버 장치(AS)와 통신하기 위한 이더넷(Ethernet) 방식일 수 있다. 예를 들어, 제2 데이터 포맷은 PCIe 포맷, 또는 예를 들어, 오브젝트 캐시 서버 장치의 제조사에 의해 정의되는 벤더(vendor) 포맷일 수 있다.
인터페이스 유닛(131)은 외부로부터 액세스 요청(기입 요청 또는 독출 요청)을 수신할 수 있다. 일 실시예에서, 액세스 요청이 기입 요청인 경우, 인터페이스 유닛(131)은 기입 요청에 해당하는 설정 커맨드(예를 들어, SET), 키 및 밸류를 포함하는 패킷을 수신할 수 있다. 한편, 액세스 요청이 독출 요청인 경우, 인터페이스 유닛(131)은 독출 요청에 해당하는 획득 커맨드(예를 들어, GET) 및 키를 포함하는 패킷을 수신할 수 있다.
인덱싱 유닛(132)은 오브젝트의 아이디 또는 키를 기초로 오브젝트의 저장 주소를 인덱싱할 수 있다. 인덱싱 유닛(132)은 응답 속도가 상대적으로 느린 제2 메모리(120)의 독출 시간 및 전송 대역폭을 기초로, 오브젝트의 사이즈 비교를 위한 임계치를 미리 결정할 수 있다. 예를 들어, 인덱싱 유닛(132)은 임계치를 제2 메모리(120)의 독출 시간과 전송 대역폭의 곱으로 결정할 수 있다.
본 실시예에서, 인덱싱 유닛(132)은 오브젝트의 사이즈를 임계치와 비교하고, 오브젝트의 사이즈가 임계치보다 크면 오브젝트를 복수의 부분들로 분할하고, 분할된 각 부분이 저장되는 저장 주소들을 인덱싱 구조로 저장할 수 있다. 또한, 인덱싱 유닛(132)은 오브젝트의 사이즈가 임계치보다 크면 오브젝트의 부분들이 각각 저장된 저장 주소들을 인덱싱 구조에서 검색할 수 있다.
도 7은 도 6의 인덱싱 유닛(132)의 동작의 일 예를 나타낸다. 도 6 및 도 7을 참조하면, 인덱싱 유닛(132)은 인터페이스 유닛(131)으로부터 키 및 밸류를 수신하고, 키를 기초로 해시 계산을 통해 인덱스를 생성하며, 생성된 인덱스를 기초로 해시 테이블(HT)에 오브젝트의 저장 주소를 저장할 수 있다. 또한, 인덱싱 유닛(132)은 인터페이스 유닛(131)으로부터 키를 수신하고, 키를 기초로 해시 계산을 통해 인덱스를 생성하며, 생성된 인덱스를 기초로 해시 테이블(HT)로부터 오브젝트의 저장 주소를 검색할 수 있다. 해시 테이블(HT)은 예를 들어, 제1 메모리(110)의 일부 영역에 저장될 수 있다.
다시 도 2 및 도 6을 참조하면, 일 실시예예서, 기입 요청이 수신되는 경우, 인덱싱 유닛(132)은 수신된 밸류의 사이즈를 임계치와 비교하고, 비교 결과 밸류의 사이즈가 임계치보다 크면 밸류를 복수의 부분 밸류들(partial values)로 분할하며, 분할된 각 부분 밸류가 저장되는 저장 주소들을 인덱싱 구조로 저장할 수 있다. 예를 들어, 저장 주소들은 응답 속도가 상대적으로 빠른 제1 메모리(110)의 일부 영역 및 응답 속도가 상대적으로 느린 제2 메모리(120)의 일부 영역에 각각 대응할 수 있다. 한편, 인덱싱 유닛(132)은 밸류의 사이즈가 임계치 이하이면 밸류를 분할하지 않고, 밸류가 저장되는 단일 저장 주소를 인덱싱 구조로 저장할 수 있다. 예를 들어, 단일 저장 주소는 응답 속도가 상대적으로 빠른 제1 메모리(110)의 일부 영역에 대응할 수 있다.
일 실시예에서, 독출 요청이 수신되는 경우, 인덱싱 유닛(132)은 수신된 키를 이용하여 인덱싱 구조에서 밸류가 저장된 저장 주소를 검색할 수 있다. 인덱싱 유닛(132)은 수신된 키에 따른 밸류의 사이즈가 임계치보다 크면, 밸류에 대응하는 부분 밸류들이 각각 저장된 저장 주소들을 검색할 수 있다. 예를 들어, 검색된 저장 주소들은 응답 속도가 상대적으로 빠른 제1 메모리(110)의 일부 영역 및 응답 속도가 상대적으로 느린 제2 메모리(120)의 일부 영역에 각각 대응할 수 있다. 한편, 인덱싱 유닛(132)은 수신된 키에 따른 밸류의 사이즈가 임계치 이하이면, 밸류가 저장된 단일 저장 주소를 검색할 수 있다. 예를 들어, 검색된 단일 저장 주소는 응답 속도가 상대적으로 빠른 제1 메모리(110)의 일부 영역에 대응할 수 있다.
로드/스토어 유닛(133)은 인덱싱 유닛(132)에서 인덱싱된 결과에 대응하는 저장 주소들을 기초로, 제1 또는 제2 메모리(110, 120)로부터 데이터를 가져오는 로딩 동작과 제1 또는 제2 메모리(110, 120)의 저장 주소에 데이터를 저장하는 스토어 동작을 제어할 수 있다. 일 실시예에서, 인덱싱된 결과가 복수의 저장 주소들에 대응하는 경우, 로드/스토어 유닛(133)은 제1 및 제2 메모리들(110, 120)로부터 데이터를 가져오는 로딩 동작과 제1 및 제2 메모리들(110, 120)의 저장 주소에 데이터를 저장하는 스토어 동작을 제어할 수 있다. 일 실시예에서, 인덱싱된 결과가 단일 저장 주소에 대응하는 경우, 로드/스토어 유닛(133)은 제1 메모리(110)로부터 데이터를 가져오는 로딩 동작과 제1 메모리(110)의 저장 주소에 데이터를 저장하는 스토어 동작을 제어할 수 있다.
도 8은 도 6의 인덱싱 유닛의 일 예(132a)를 나타내는 블록도이다. 도 8을 참조하면, 인덱싱 유닛(132a)은 디코더(1321), 해시 계산기(1322), 해시 테이블 관리자(1323) 및 메모리 할당기(1324)를 포함할 수 있다..
기입 요청 시, 디코더(1321)는 인터페이스 유닛(131)으로부터 수신되는 데이터를 디코딩하여 키(K) 및 밸류(V)를 추출하고, 추출된 키(K) 및 밸류(V)를 해시 계산기(1322)로 출력할 수 있다. 또한, 디코더(1321)는 밸류(V)로부터 요청 사이즈(RS) 및 요청 카운트(RC)를 생성하고, 요청 사이즈(RS) 및 요청 카운트(RC)를 메모리 할당기(1324)에 출력할 수 있다. 독출 요청 시, 디코더(1321)는 인터페이스 유닛(131)으로부터 수신되는 데이터를 디코딩하여 키(K)를 추출하고, 추출된 키(K)를 해시 계산기(1322)로 출력할 수 있다.
해시 계산기(1322)는 디코더(1321)로부터 키(K), 또는 키(K) 및 밸류(V)를 수신할 수 있다. 해시 계산기(1322)는 수신된 키(K)에 대해 해시 동작을 수행하여 해시 데이터(HD)를 생성할 수 있다. 예를 들어, 해시 계산기(1322)는 수신된 키(K)에 대해 전해시(full hash) 또는 부분 해시(partial hash)를 수행할 수 있다. 해시 계산기(1322)는 해시 데이터(HD) 및 키(K), 또는 해시 데이터(HD), 키(K) 및 밸류(V)를 해시 테이블 관리자(1323)로 출력할 수 있다.
메모리 할당기(1324)는 디코더(1321)로부터 요청 사이즈(RS) 및 요청 카운트(RC)를 수신할 수 있다. 메모리 할당기(1324)는 요청 사이즈(RS) 및 요청 카운트(RC)에 의해 요청된 저장 공간을 할당하고, 할당된 저장 공간의 어드레스(ADDR)를 해시 테이블 관리자(1323)에 출력할 수 있다. 예를 들어, 요청 사이즈(RS) 및 요청 카운트(RC)는 기입 시에 요구되는 저장 공간을 가리킬 수 있다.
기입 요청 시에, 해시 테이블 관리자(1323)는 해시 계산기(1322)로부터 키(K), 밸류(V) 및 해시 데이터(HD)를 수신하고, 메모리 할당기(1323)로부터 어드레스(ADDR)를 수신할 수 있다. 해시 테이블 관리자(1323)는 제1 및 제2 메모리들(110, 120) 중 해시 데이터(HD)가 가리키는 메모리에 저장된 해시 테이블(HT)을 갱신하도록 로드/스토어 유닛(133)을 제어할 수 있다.
독출 요청 시에, 해시 테이블 관리자(1323)는 해시 계산기(1322)로부터 키(K) 및 해시 데이터(HD)를 수신할 수 있다. 해시 테이블 관리자(1323)는 제1 및 제2 메모리들(110, 120) 중에서 해시 데이터(HD)가 가리키는 메모리의 해시 테이블(HT)을 읽도록 로드/스토어 유닛(133)을 제어할 수 있다. 해시 테이블(HT)에 기반하여, 해시 테이블 관리자(1323)는 키(K)에 대응하는 어드레스(ADDR)를 검출할 수 있다.
도 9는 도 2의 컨트롤러의 일 예(130B)를 나타내는 블록도이다. 도 9를 참조하면, 컨트롤러(130B)는 프로세싱 유닛(134), 램(RAM)(135), 호스트 인터페이스(136) 및 메모리 인터페이스들(137)을 포함할 수 있다. 프로세싱 유닛(134), 램(RAM)(135), 호스트 인터페이스(136) 및 메모리 인터페이스들(137)은 버스(138)를 통해 서로 통신할 수 있다.
프로세싱 유닛(134)은 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(130B)의 전반적인 동작을 제어할 수 있다. 본 실시예에 따르면, 램(135)에는 인덱싱 모듈(135a) 또는 인덱싱 동작을 수행하기 위해 필요한 데이터가 로딩될 수 있다.
호스트 인터페이스(136)는 호스트(예를 들어, 도 1의 어플리케이션 서버 장치(AS))와 컨트롤러(130B) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 호스트 인터페이스(136)는 도 6의 인터페이스 유닛(131)에 대응할 수 있다. 제1 메모리 인터페이스(137a)는 컨트롤러(130B)와 제1 메모리(110) 사이의 인터페이스를 제공할 수 있다. 제2 메모리 인터페이스(137b)는 컨트롤러(130B)와 제2 메모리(120) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 제1 및 제2 메모리 인터페이스들(137a, 137b)은 도 6의 로드/스토어 유닛(133)에 대응할 수 있다.
도 10은 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 10을 참조하면, 본 실시예에 따른 오브젝트 스토리지 장치의 동작 방법은 오브젝트 스토리지 장치에 오브젝트 단위로 데이터를 기입하는 동작으로서, 예를 들어, 도 2의 오브젝트 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 1 내지 도 9를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있으며, 중복된 설명은 생략하기로 한다.
단계 S110에서, 오브젝트 및 기입 요청을 수신한다. 구체적으로, 컨트롤러(130)에 포함된 인터페이스 유닛(131)은 호스트로부터 오브젝트 및 기입 요청을 수신할 수 있다. 예를 들어, 오브젝트는 키-밸류 페어를 포함할 수 있고, 기입 요청은 설정 커맨드를 포함할 수 있다.
단계 S120에서, 오브젝트의 사이즈가 임계치보다 큰지 판단한다. 구체적으로, 인덱싱 유닛(132)은 오브젝트의 사이즈를 임계치와 비교할 수 있다. 예를 들어, 오브젝트가 키-밸류 페어를 포함하는 경우, 인덱싱 유닛(132)은 밸류의 사이즈가 임계치보다 큰지 판단할 수 있다. 판단 결과, 오브젝트의 사이즈가 임계치보다 크면 단계 S140을 수행하고, 오브젝트의 사이즈가 임계치 이하이면 단계 S130을 수행한다.
일부 실시예들에서, 오브젝트 스토리지 장치의 동작 방법은, 단계 S110 또는 단계 S120 전에, 임계치를 결정하는 단계를 더 포함할 수 있다. 일 실시예에서, 제1 및 제2 메모리들(110, 120) 중 상대적으로 응답 속도가 느린 제2 메모리(120)의 제2 레이턴시를 기초로 임계치를 결정할 수 있다. 구체적으로, 제2 메모리(120)의 독출 시간과 오브젝트 스토리지 장치(100)의 전송 대역폭의 곱을 기초로 임계치를 결정할 수 있다. 이때, 임계치를 작게 결정할수록 제2 메모리(120)에 더 많은 데이터를 저장할 수 있고, 이에 따라, 오브젝트 스토리지 장치(100)의 저장 용량을 더욱 증가시킬 수 있다.
단계 S130에서, 제1 메모리(110)에 오브젝트를 저장한다. 구체적으로, 인덱싱 유닛(132)은 오브젝트의 저장 주소를 제1 메모리(110)의 일부 저장 공간으로 인덱싱할 수 있고, 로드/스토어 유닛(133)은 오브젝트가 제1 메모리(110)에 기입되도록 제1 메모리(110)를 제어할 수 있다. 단계 S130에 대해 도 11을 참조하여 더욱 상세하게 설명하기로 한다.
도 11은 본 개시의 일 실시예에 따른, 도 2의 오브젝트 스토리지 장치(100)에 대한 기입 동작의 일 예를 나타낸다.
도 11을 참조하면, 컨트롤러(130)는 키-밸류 페어(K, V)를 수신하고, 수신된 키-밸류 페어(K, V)로부터 밸류(V)의 사이즈를 판단할 수 있다. 컨트롤러(130)는 밸류(V)의 사이즈가 임계치 이하이면, 밸류(V)가 제1 메모리(110)에 기입되도록 제1 메모리(110)를 제어할 수 있다. 이와 같이, 오브젝트의 사이즈가 임계치 이하이면 기입 속도가 상대적으로 빠른 제1 메모리(110)에 오브젝트를 저장하고, 기입 속도가 상대적으로 느린 제2 메모리(120)에 액세스하지 않을 수 있다. 따라서, 오브젝트 스토리지 장치(100)의 기입 동작 속도를 빠르게 유지할 수 있다.
또한, 본 실시예에 따르면, 밸류(V)에 대한 독출 요청이 수신되는 경우, 응답 속도가 상대적으로 느린 제2 메모리(120)에 액세스하지 않고, 응답 속도가 상대적으로 빠른 제1 메모리(110)에 액세스하여 밸류(V)를 독출할 수 있다. 따라서, 오브젝트 스토리지 장치(100)의 독출 동작 속도도 빠르게 유지할 수 있다.
다시 도 10을 참조하면, 단계 S140에서, 오브젝트를 적어도 제1 및 제2 부분들로 분할한다. 구체적으로, 인덱싱 유닛(132)은 오브젝트를 적어도 제1 및 제2 부분들로 분할하고, 분할된 제1 부분을 저장하기 위한 제1 저장 주소를 제1 메모리(110)의 일부 저장 공간으로 인덱싱하고, 분할된 제2 부분을 중복 저장하기 위한 제2 저장 주소들을 제2 메모리(120)의 일부 저장 공간들로 인덱싱할 수 있다. 이와 같이, 인덱싱 유닛(132)은 제1 저장 주소 및 제2 저장 주소들을 인덱싱 구조로 저장할 수 있다. 이때, 인덱싱 유닛(132)은 오브젝트를 세 개 이상의 부분들로 분할할 수도 있다.
단계 S150에서, 제1 메모리(110)에 제1 부분을 저장한다. 구체적으로, 로드/스토어 유닛(133)은 제1 저장 주소에 해당하는 제1 메모리(110)의 저장 공간에 제1 부분이 저장되도록 제1 메모리(110)를 제어할 수 있다. 단계 S160에서, 제2 메모리의 제1 및 제2 저장 공간들에 제2 부분을 중복 저장한다. 구체적으로, 로드/스토어 유닛(133)은 제2 저장 주소들에 해당하는 제2 메모리(120)의 제1 및 제2 저장 공간들(121, 122)에 제2 부분이 중복 저장되도록 제2 메모리(120)를 제어할 수 있다.
일 실시예예서, 단계 S160은, 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태인지 판단하는 단계, 및 제1 및 제2 저장 공간들(121, 122)이 모두 아이들(idle) 상태이면 제1 및 제2 저장 공간들(121, 122)에 제2 부분을 순차적으로 중복 저장하는 단계를 포함할 수 있다. 여기서, 아이들 상태는, 제1 및 제2 저장 공간들(121, 122)에 대해 기입, 독출 또는 소거 동작이 수행되고 있지 않은 상태를 나타낸다. 단계 S140 내지 단계 S160에 대해 도 12 및 도 13을 참조하여 더욱 상세하게 설명하기로 한다.
도 12는 본 개시의 일 실시예에 따른, 도 2의 오브젝트 스토리지 장치(100)에 대한 기입 동작의 일 예를 나타낸다.
도 12를 참조하면, 컨트롤러(130)는 키-밸류 페어(K, V)를 수신하고, 수신된 키-밸류 페어(K, V)로부터 밸류(V)의 사이즈를 판단할 수 있다. 컨트롤러(130)는 밸류(V)의 사이즈가 임계치보다 크면, 밸류(V)를 제1 및 제2 부분 밸류들(V0, V1)로 분할할 수 있다. 일 실시예에서, 제1 부분 밸류(V0)는 밸류(V)의 앞 부분에 대응하고, 제2 부분 밸류(V1)는 밸류(V)의 뒷 부분에 대응할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 컨트롤러(130)는 밸류(V)로부터 분할되는 부분 밸류들의 개수를 다양하게 변경할 수 있다.
이어서, 컨트롤러(130)는 제1 부분 밸류(V0)가 제1 메모리(110)에 기입되도록 제1 메모리(110)를 제어하고, 제2 부분 밸류(V1)가 제2 메모리(120)의 제1 및 제2 저장 공간들(121, 122)에 각각 기입되도록 제2 메모리(120)를 제어할 수 있다. 본 실시예에 따르면, 오브젝트의 사이즈가 임계치보다 크면, 응답 속도가 상대적으로 빠른 제1 메모리(110)에 제1 부분 밸류(V0)를 저장하고, 응답 속도가 상대적으로 느른 제2 메모리(120)에 제2 부분 밸류(V1)를 저장할 수 있다. 이에 따라, 오브젝트 스토리지 장치(100)의 저장 용량을 제2 메모리(120)의 저장 용량만큼 증가시킬 수 있다.
또한, 컨트롤러(130)는 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태인지 판단하고, 판단 결과 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태이면 제2 부분 밸류(V1)가 제1 및 제2 저장 공간들(121, 122)에 순차적으로 중복 저장되도록 제2 메모리(120)를 제어할 수 있다. 예를 들어, 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태이면 제1 저장 공간(121)에 제2 부분을 먼저 저장하고, 제2 저장 공간(122)에 제2 부분을 이어서 저장할 수 있다. 이와 같이, 제1 및 제2 저장 공간들(121, 122)에 순차적으로 기입 동작을 수행함에 따라, 나중에 제2 부분에 대한 독출 동작을 수행하는 경우, 제1 및 제2 저장 공간들(121, 122) 중 하나는 독출 동작이 바로 수행되는 것을 보장할 수 있다. 이로써, 제2 부분에 대한 독출 동작을 수행하는 경우, 추가적인 지연 시간이 발생하지 않을 수 있다.
만약 제2 부분 밸류(V1)를 제2 메모리(120)에 중복 저장하지 않으면, 제2 부분 밸류(V1)가 저장된 블록에 대한 기입, 독출 또는 소거 동작이 수행되고 있는 동안에는, 제2 부분 밸류(V1)에 대한 독출 동작을 수행할 수 없다. 이에 따라, 제2 부분 밸류(V1)에 대한 독출 동작을 위해 추가적인 지연 시간이 발생할 수 있고, 오브젝트 메모리 장치의 독출 성능이 저하될 수 있다. 그러나, 본 실시예에 따르면, 제2 부분 밸류(V1)를 제2 메모리(120)의 제1 및 제2 저장 공간들(121, 122)에 중복 저장하므로 제2 부분 밸류(V1)에 대한 독출 동작을 위해 추가적인 지연 시간이 발생하지 않을 수 있다.
도 13은 본 개시의 일 실시예에 따른, 도 2의 오브젝트 스토리지 장치(100)에 대한 기입 동작의 다른 예를 나타낸다.
도 13을 참조하면, 본 실시예에 따른 기입 동작은 도 12의 기입 동작의 변형 예에 대응할 수 있다. 이하에서는, 도 12와 도 13의 차이점을 중심으로 설명하고 중복된 설명은 생략하기로 한다. 컨트롤러(130)는 키-밸류 페어(K, V)를 수신하고, 밸류(V)가 제1 메모리(110)에 기입되도록 제1 메모리(110)를 제어할 수 있다. 이어서, 컨트롤러(130)는 오브젝트의 기입 동작이 완료되었음을 나타내는 응답 메시지를 호스트에 전송할 수 있다. 이와 같이, 본 실시예에 따르면, 오브젝트의 사이즈에 관계없이 오브젝트를 동작 속도가 빠른 제1 메모리(110)에 먼저 저장하고, 응답 메시지를 호스트에 전송할 수 있다.
이어서, 컨트롤러(130)는 밸류(V)의 사이즈를 판단하고, 밸류(V)의 사이즈가 임계치보다 크면, 밸류(V)를 제1 부분 밸류(V0) 및 제2 부분 밸류(V1)로 분할할 수 있다. 이어서, 컨트롤러(130)는 제1 메모리(110)에 저장된 밸류(V) 중 제2 부분 밸류(V1)를 제2 메모리(120)의 제1 및 제2 저장 공간들(121, 122)에 플러쉬(flush)하도록 제1 및 제2 메모리들(110, 120)을 제어할 수 있다. 본 실시예에서, 컨트롤러(130)는 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태인지 판단하고, 판단 결과 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태이면 제2 부분 밸류(V1)가 제1 및 제2 저장 공간들(121, 122)에 순차적으로 중복 저장되도록 제2 메모리(120)를 제어할 수 있다.
도 14는 본 개시의 일 실시예에 따른 어플리케이션 서버(200)와 캐시 서버(100A) 사이의 동작을 나타내는 흐름도이다.
도 14를 참조하면, 캐시 서버(100A)는 도 2의 오브젝트 스토리지 장치(100)의 일 예이며, 도 1의 오브젝트 캐시 서버 장치(OCS)에 대응할 수 있다. 어플리케이션 서버(200)는 도 1의 어플리케이션 서버 장치(AS)에 대응할 수 있다.
단계 S210에서, 어플리케이션 서버(200)는 기입 요청, 키 및 밸류를 캐시 서버(100A)에 전송한다. 어플리케이션 서버(200)는 제2 네트워크(예를 들어, 도 1의 NET2)를 통해 기입 요청, 키 및 밸류를 캐시 서버(100A)에 전송할 수 있다. 이때, 기입 요청은 설정 커맨드를 포함할 수 있다. 키에 따라 밸류의 사이즈는 가변적이다.
단계 S220에서, 캐시 서버(100A)는 밸류의 사이즈가 임계치(TH)보다 큰지 판단한다. 판단 결과, 밸류의 사이즈가 임계치(TH)보다 크면 단계 S250을 수행하고, 밸류의 사이즈가 임계치(TH) 이하이면 단계 S230을 수행할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 밸류의 사이즈가 임계치(TH)보다 큰 경우에도 단계 S230 및 단계 S240을 수행하고, 이어서 단계 S250을 수행할 수도 있으며, 이때, 단계 S280은 수행되지 않을 수 있다.
단계 S230에서, 캐시 서버(100A)는 제1 메모리에 밸류(V)를 저장한다. 단계 S240에서, 캐시 서버(100A)는 기입 동작의 완료를 나타내는 응답 메시지를 어플리케이션 서버(200)에 전송한다. 캐시 서버(100A)는 제2 네트워크(예를 들어, 도 1의 NET2)를 통해 응답 메시지를 어플리케이션 서버(200)에 전송할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 단계 S230 및 단계 S240은 단계 S220 전에 수행될 수도 있다.
단계 S250에서, 캐시 서버(100A)는 밸류(V)를 제1 및 제2 부분 밸류들(V0, V1)로 분할한다. 단계 S260에서, 캐시 서버(100A)는 제1 메모리에 제1 부분 밸류(V0)를 저장한다. 단계 S270에서, 캐시 서버(100A)는 제2 메모리의 제1 및 제2 저장 공간들에 제2 부분 밸류(V1)를 중복 저장한다. 단계 S280에서, 캐시 서버(100A)는 기입 동작의 완료를 나타내는 응답 메시지를 어플리케이션 서버(200)에 전송한다. 캐시 서버(100A)는 제2 네트워크(예를 들어, 도 1의 NET2)를 통해 응답 메시지를 어플리케이션 서버(200)에 전송할 수 있다.
도 15는 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 15를 참조하면, 본 실시예에 따른 오브젝트 스토리지 장치의 동작 방법은 오브젝트 스토리지 장치에 오브젝트 단위로 데이터를 독출하는 동작으로서, 예를 들어, 도 2의 오브젝트 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 1 내지 도 14를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있으며, 중복된 설명은 생략하기로 한다.
단계 S310에서, 독출 요청을 수신한다. 구체적으로, 컨트롤러(130)에 포함된 인터페이스 유닛(131)은 호스트로부터 독출 요청을 수신할 수 있다. 예를 들어, 컨트롤러(130)는 독출 요청과 함께 키를 수신할 수 있고, 독출 요청은 획득 커맨드를 포함할 수 있다.
단계 S320에서, 오브젝트가 저장된 저장 주소를 검색한다. 구체적으로, 인덱싱 유닛(132)은 수신된 키를 이용하여 인덱스 구조에서 오브젝트가 저장된 저장 주소를 검색할 수 있다. 단계 S330에서, 오브젝트 전체가 제1 메모리에 저장되었는지 판단한다. 다시 말해, 검색된 저장 주소가 단일 저장 주소인지 판단한다. 판단 결과, 오브젝트 전체가 제1 메모리에 저장된 경우 단계 S340을 수행하고, 그렇지 않은 경우 단계 S350을 수행할 수 있다.
일부 실시예들에서, 오브젝트 스토리지 장치의 동작 방법은, 단계 S310 또는 단계 S320 전에, 임계치를 결정하는 단계를 더 포함할 수 있다. 또한, 일부 실시예들에서, 임계치를 결정하는 단계는 오브젝트 스토리지 장치의 오브젝트 스토리지 장치의 구성 단계에서 수행될 수 있다. 일 실시예에서, 제1 및 제2 메모리들(110, 120) 중 상대적으로 응답 속도가 느린 제2 메모리(120)의 제2 레이턴시를 기초로 임계치를 결정할 수 있다. 구체적으로, 제2 메모리(120)의 독출 시간과 오브젝트 스토리지 장치(100)의 전송 대역폭의 곱을 기초로 임계치를 결정할 수 있다. 이때, 임계치를 작게 결정할수록 제2 메모리(120)에 더 많은 데이터를 저장할 수 있고, 이에 따라, 오브젝트 스토리지 장치(100)의 저장 용량을 더욱 증가시킬 수 있다. 따라서, 제2 메모리(120)의 독출 시간을 작게 할수록 오브젝트 스토리지 장치(100)의 저장 용량을 증가시킬 수 있으며, 제2 메모리(120)에 데이터를 중복 저장하여 독출 시간을 줄이는 방법을 통해 오브젝트 스토리지 장치(100)의 저장 효율을 높일 수 있다.
단계 S340에서, 제1 메모리(110)로부터 오브젝트를 독출하고, 독출된 오브젝트를 외부로 전송한다. 구체적으로, 로드/스토어 유닛(133)은 검색된 저장 주소를 이용하여 제1 메모리(110)로부터 수신된 키에 따른 밸류를 독출하고, 독출된 밸류를 호스트로 전송할 수 있다. 단계 S340에 대해 도 16을 참조하여 더욱 상세하게 설명하기로 한다.
도 16은 본 개시의 일 실시예에 따른, 도 2의 오브젝트 스토리지 장치(100)에 대한 독출 동작의 일 예를 나타낸다.
도 16을 참조하면, 컨트롤러(130)는 키를 수신하고, 수신된 키를 이용하여 밸류(V)의 저장 주소를 검색할 수 있다. 검색 결과, 전체 밸류(V)의 저장 주소가 제1 메모리(110)에 대응하면, 컨트롤러(130)는 제1 메모리(110)로부터 밸류(V)를 독출하도록 제1 메모리(110)를 제어할 수 있다. 이어서, 컨트롤러(130)는 독출된 밸류(V)를 외부로 전송할 수 있다. 도 11을 참조하여 상술된 바와 같이, 밸류(V)의 사이즈가 임계치 이하인 경우 밸류(V)는 분할되지 않고 제1 메모리(110)에 저장될 수 있다.
이와 같이, 오브젝트의 사이즈가 임계치 이하이면 컨트롤러(130)는 독출 속도가 상대적으로 빠른 제1 메모리(110)에 액세스하여 밸류(V)를 독출할 수 있고, 이 경우, 독출 속도가 상대적으로 느린 제2 메모리(120)에 액세스하지 않을 수 있다. 따라서, 오브젝트 스토리지 장치(100)의 독출 동작 속도를 빠르게 유지할 수 있다.
다시 도 15를 참조하면, 단계 S350에서, 제1 구간에서, 제1 메모리(110)로부터 제1 부분을 독출하고, 독출된 제1 부분을 외부로 전송한다. 단계 S360에서, 제1 구간에서, 제2 메모리(120)의 제1 및 제2 저장 공간들(121, 122) 중 하나로부터 제2 부분을 독출한다. 단계 S350과 단계 S360은 실질적으로 동시에 수행될 수 있다. 단계 S370에서, 제2 구간에서, 독출된 제2 부분을 외부로 전송한다. 단계 S370은 단계 S350 및 S360 직후에 수행될 수 있다.
일 실시예에서, 단계 S360은, 제1 및 제2 저장 공간들(121, 122) 중 아이들 상태에 있는 저장 공간들 선택하는 단계, 및 선택된 저장 공간으로부터 제2 부분을 독출하는 단계를 포함할 수 있다. 여기서, 아이들 상태는, 제1 및 제2 저장 공간들(121, 122)에 대해 기입, 독출 또는 소거 동작이 수행되고 있지 않은 상태를 나타낸다. 단계 S350 내지 단계 S370에 대해 도 17을 참조하여 더욱 상세하게 설명하기로 한다.
도 17은 본 개시의 일 실시예에 따른, 도 2의 오브젝트 스토리지 장치(100)에 대한 독출 동작의 일 예를 나타낸다.
도 17을 참조하면, 컨트롤러(130)는 키를 수신하고, 수신된 키를 이용하여 밸류(V)의 저장 주소를 검색할 수 있다. 검색 결과, 밸류(V)의 제1 및 제2 부분 밸류들(V0, V1)의 저장 주소들이 각각 제1 및 제2 메모리들(110, 120)에 대응하면, 컨트롤러(130)는 제1 및 제2 메모리들(110, 120)에 대한 독출 동작들이 동시에 수행되도록 제1 및 제2 메모리들(110, 120)을 제어할 수 있다.
구체적으로, 컨트롤러(130)는 제1 메모리(110)로부터 제1 부분 밸류(V0)를 독출하도록 제1 메모리(110)를 제어하고, 제2 메모리(120)의 제1 및 제2 저장 공간들(121, 122) 중 하나로부터 제2 부분 밸류(V1)를 독출하도록 제2 메모리(120)를 제어할 수 있다. 제1 부분 밸류(V0)는 밸류(V)의 앞 부분에 대응하고, 제2 부분 밸류(V1)는 밸류(V)의 뒷 부분에 대응할 수 있다.
이때, 컨트롤러(130)는 제1 및 제2 저장 공간들(121, 122) 중 아이들 상태에 있는 저장 공간을 선택할 수 있다. 예를 들어, 제1 저장 공간(121)은 아이들 상태이고, 제2 저장 공간(122)은 비지(busy) 상태일 수 있고, 이때, 제2 저장 공간(122)에 포함된 블록들에 대해 기입, 독출 또는 소거 동작이 수행 중일 수 있다. 컨트롤러(130)는 선택된 제1 저장 공간(121)을 액세스하여, 제1 저장 공간(121)으로부터 제2 부분 밸류(V1)을 독출할 수 있다.
도 18a는 본 개시의 일 실시예에 따른, 도 17에 예시된 오브젝트 스토리지 장치(100)의 시간에 따른 독출 동작을 나타낸다.
도 17 및 도 18a를 참조하면, 제1 구간(181) 동안, 컨트롤러(130)는 외부로부터 독출 요청(RR) 및 키(K)를 수신할 수 있다. 제1 구간(181)은 인터페이스 구간이라고 지칭할 수 있다. 제2 구간(182) 동안, 컨트롤러(130)는 키(K)를 기초로 키(K)에 따른 밸류의 저장 주소를 인덱싱할 수 있다. 제2 구간(182)은 인덱싱 구간이라고 지칭할 수 있다.
제3 구간(183) 동안, 제1 및 제2 메모리들(110, 120)에 대한 독출 동작들을 동시에 수행할 수 있다. 이때, 제1 및 제2 메모리들(110, 120)의 독출 속도의 차이 및 제1 및 제2 부분 밸류들(V0, V1)의 사이즈들에 따라, 제1 및 제2 부분 밸류들(V0, V1)을 독출하는데 소요되는 시간은 서로 다를 수 있다. 본 실시예에서, 제1 부분 밸류(V0)를 독출하는데 소요되는 시간은 독출 구간(183a)에 대응하고, 제2 부분 밸류(V1)를 독출하는데 소요되는 시간은 제3 구간(233)에 대응할 수 있다.
제3 구간(183)은 독출 구간(183a) 및 전송 구간(183b)을 포함할 수 있으며, 독출 구간(183a)에서, 제1 메모리(110)로부터 제1 부분 밸류(V1)를 독출하고, 전송 구간(183b)에서, 독출된 제1 부분 밸류(V0)를 외부로 전송할 수 있다. 또한, 제3 구간(183)에서, 제2 메모리(120)로부터 제2 부분 밸류(V1)를 독출할 수 있다. 제4 구간(184) 동안, 독출된 제2 부분 밸류(V1)를 외부로 전송할 수 있다.
본 실시예에 따르면, 제2 밸류(V1)의 독출 시간(즉, 제3 구간(183))은 제1 밸류(V0)의 독출 구간(183a) 및 제1 부분 밸류(V0)의 전송 구간(183b)의 합에 대응될 수 있다. 다시 말해, 인터페이스의 관점에서 보면, 전송 구간(183b)에 의해, 제1 메모리(110)에 대한 독출 구간(183a)보다 긴 제2 메모리(120)에 대한 독출 구간인 제3 구간(183)이 감춰질 수 있다.
또한, 본 실시예에 따르면, 제3 구간(183)에 포함된 전송 구간(183b)에 제1 부분 밸류(V0)를 외부로 전송하고, 이어서, 제4 구간(184)에 제2 부분 밸류(V1)를 외부로 전송할 수 있다. 따라서, 오브젝트 스토리지 장치(100)와 호스트 사이의 인터페이스의 관점에서 보면, 오브젝트 스토리지 장치(100)는 독출 속도가 상대적으로 빠른 제1 메모리(110)로부터 전체 밸류를 독출하는 것과 같은 독출 성능을 보일 수 있다.
또한, 본 실시예에 따르면, 제3 구간(183) 동안, 제2 메모리(120)의 제1 및 제2 저장 공간들(121, 122) 중 아이들 상태에 있는 저장 공간을 선택하고, 선택된 저장 공간에서만 제2 부분 밸류(V1)를 독출할 수 있다. 도 12 및 도 13을 참조하여 상술한 바와 같이, 본 실시예에 따르면, 제1 및 제2 저장 공간들(121, 122)에 제2 부분 밸류(V1)를 순차적으로 중복 저장할 수 있다. 이에 따라, 제1 및 제2 저장 공간들(121, 122)에 대해 동시에 기입, 독출 또는 소거 동작이 수행되는 구간이 발생하지 않을 수 있다. 따라서, 제1 및 제2 저장 공간들(121, 122) 중 하나는 아이들 상태를 보장할 수 있으므로, 제2 메모리(120)로부터 제2 부분 밸류(V1)를 독출하는 동안 추가적인 지연 시간이 발생하지 않을 수 있다.
도 18b는 본 개시의 비교예에 따른 오브젝트 스토리지 장치의 시간에 따른 독출 동작을 나타낸다.
도 18b를 참조하면, 비교에에 따르면, 제1 메모리에 제1 부분 밸류(V0)를 저장하고, 제2 메모리에 제1 부분 밸류(V1)를 저장할 수 있다. 다시 말해, 비교예에 따르면, 제2 메모리의 제1 및 제2 저장 공간들에 제2 부분 밸류(V1)를 중복 저장하지 않을 수 있다. 제3 구간(183')에서 제2 메모리에 대해 독출 동작을 수행하고자 할 때, 제2 메모리에서 제2 부분 밸류(V1)를 저장하고 있는 저장 주소에 대해 기입, 독출 또는 소거 동작이 수행 중일 수 있다.
이 경우, 수행 중인 기입, 독출 또는 소거 동작이 완료된 후에 제2 메모리로부터 제2 부분 밸류(V1)를 독출할 수 있으므로, 제3 구간(183')은 도 18a의 제3 구간(183)에 비해 추가적인 지연 시간(183c)만큼 증가할 수 있다. 따라서, 오브젝트 스토리지 장치와 호스트 사이의 인터페이스의 관점에서 보면, 오브젝트 스토리지 장치는 도 18a의 오브젝트 스토리지 장치에 비해 독출 속도가 느린 것으로 볼 수 있다.
도 19는 본 개시의 일 실시예에 따른 어플리케이션 서버(200)와 캐시 서버 사이(100A)의 동작을 나타내는 흐름도이다.
도 19를 참조하면, 캐시 서버(100A)는 도 2의 오브젝트 스토리지 장치(100)의 일 예이며, 도 1의 오브젝트 캐시 서버 장치(OCS)에 대응할 수 있다. 어플리케이션 서버(200)는 도 1의 어플리케이션 서버 장치(AS)에 대응할 수 있다.
단계 S410에서, 어플리케이션 서버(200)는 독출 요청 및 키를 캐시 서버(100A)에 전송한다. 어플리케이션 서버(200)는 제2 네트워크(예를 들어, 도 1의 NET2)를 통해 독출 요청 및 키를 캐시 서버(100A)에 전송할 수 있다. 이때, 독출 요청은 획득 커맨드를 포함할 수 있다. 키는 밸류를 특정하는 고유의 값이다.
단계 S420에서, 캐시 서버(100A)는 키에 따라 밸류의 저장 주소를 검색한다. 단계 S430에서, 캐시 서버(100A)는 밸류 전체가 제1 메모리에 저장되었는지 판단한다. 판단 결과, 밸류 전체가 제1 메모리에 저장된 경우 단계 S440을 수행하고, 그렇지 않으면 단계 S460을 수행할 수 있다.
단계 S440에서, 캐시 서버(100A)는 제1 메모리로부터 밸류(V)를 독출한다. 단계 S450에서, 캐시 서버(100A)는 독출된 밸류(V)를 어플리케이션 서버(200)에 전송한다. 캐시 서버(100A)는 제2 네트워크(예를 들어, 도 1의 NET2)를 통해 밸류(V)를 어플리케이션 서버(200)에 전송할 수 있다. 단계 S440 및 S450이 수행되면, 캐시 서버(100A)와 어플리케이션 서버(200) 사이의 동작은 종료되며, 단계 S460 내지 S480은 수행되지 않는다.
단계 S460에서, 캐시 서버(100A)는 제1 메모리로부터 제1 부분 밸류(V0)를 독출하고, 동시에 제2 메모리의 제1 및 제2 저장 공간들 중 하나로부터 제2 부분 밸류(V1)를 독출한다. 단계 S470에서, 캐시 서버(100A)는 제1 부분 밸류(V0)를 어플리케이션 서버(200)에 전송한다. 단계 S480에서, 캐시 서버(100A)는 제2 부분 밸류(V1)를 어플리케이션 서버(200)에 전송한다. 캐시 서버(100A)는 제2 네트워크(예를 들어, 도 1의 NET2)를 통해 제1 및 제2 부분 밸류들(V0, V1)를 어플리케이션 서버(200)에 전송할 수 있다.
도 20은 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치(100a)를 나타내는 블록도이다.
도 20을 참조하면, 오브젝트 스토리지 장치(100a)는 도 2의 오브젝트 스토리지 장치(100)의 변형예이고, 제1 메모리(110), 제2 메모리(120a) 및 컨트롤러(130a)를 포함할 수 있다. 제2 메모리(120a)는 제1 내지 제3 저장 공간들(121 내지 123)을 포함할 수 있다. 이와 같이, 제2 메모리(120a)는 도 2의 제2 메모리(120)에 비해 제3 저장 공간(123)을 더 포함할 수 있다. 제1 및 제2 저장 공간들(121, 122)은 오브젝트의 제2 부분을 중복 저장하도록 구성될 수 있고, 제3 저장 공간(123)은 오브젝트의 제3 부분을 저장하도록 구성될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제2 메모리(120a)는 제4 저장 공간들을 더 포함할 수 있고, 제3 저장 공간(123) 및 제4 저장 공간은 오브젝트의 제3 부분을 중복 저장하도록 구성될 수 있다.
일 실시예에서, 제1 내지 제3 저장 공간들(121 내지 123)은 제2 메모리(120a)의 서로 다른 제1 내지 제3 다이들에 각각 위치할 수 있다. 일 실시예에서, 제1 내지 제3 저장 공간들(121 내지 123)은 제2 메모리(120a)의 서로 다른 제1 내지 제3 플레인들에 각각 위치할 수 있다. 일 실시예에서, 제1 내지 제3 저장 공간들(121 내지 123)은 제2 메모리(120a)의 서로 다른 제1 내지 제3 블록들에 각각 위치할 수 있다.
일 실시예에서, 제1 및 제2 저장 공간들(121, 122)은 제2 메모리(120a)의 제1 다이에 위치하고, 제3 저장 공간(123)은 제2 메모리(120a)의 제2 다이에 위치할 수도 있다. 일 실시예에서, 제1 및 제2 저장 공간들(121, 122)은 제2 메모리(120a)의 제1 플레인에 위치하고, 제3 저장 공간(123)은 제2 메모리(120a)의 제2 플레인에 위치할 수도 있다. 일 실시예에서, 제1 및 제2 저장 공간들(121, 122)은 제2 메모리(120a)의 제1 블록에 위치하고, 제3 저장 공간(123)은 제2 메모리(120a)의 제2 블록에 위치할 수도 있다.
도 21은 본 개시의 일 실시예에 따른, 도 20의 오브젝트 스토리지 장치(100a)에 대한 기입 동작의 일 예를 나타낸다.
도 21을 참조하면, 컨트롤러(130a)는 밸류(V)의 사이즈가 임계치보다 크면, 밸류(V)를 제1 내지 제3 부분 밸류들(V0 내지 V2)로 분할할 수 있다. 일 실시예에서, 제1 부분 밸류(V0)는 밸류(V)의 앞 부분에 대응하고, 제2 부분 밸류(V1)는 밸류(V)의 중간 부분에 대응하며, 제3 부분 밸류(V2)는 밸류(V)의 뒷 부분에 대응할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 컨트롤러(130a)는 밸류(V)로부터 분할되는 부분 밸류들의 개수를 다양하게 변경할 수 있다.
이어서, 컨트롤러(130a)는 응답 속도가 상대적으로 빠른 제1 메모리(110)에 제1 부분 밸류(V0)를 저장하고, 응답 속도가 상대적으로 느른 제2 메모리(120)에 제2 부분 밸류(V1) 및 제3 부분 밸류(V2)를 저장할 수 있다. 이에 따라, 오브젝트 스토리지 장치(100a)의 저장 용량을 제2 메모리(120a)의 저장 용량만큼 증가시킬 수 있다.
또한, 컨트롤러(130a)는 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태인지 판단하고, 판단 결과 제1 및 제2 저장 공간들(121, 122)이 모두 아이들 상태이면 제2 부분 밸류(V1)가 제1 및 제2 저장 공간들(121, 122)에 순차적으로 중복 저장되도록 제2 메모리(120a)를 제어할 수 있다. 한편, 컨트롤러(130a)는 밸류(V)의 사이즈가 임계치 이하이면, 밸류(V)를 분할하지 않고, 전체 밸류(V)를 제1 메모리(110)에 저장할 수 있다.
도 22는 본 개시의 일 실시예에 따른, 도 20의 오브젝트 스토리지 장치(100a)에 대한 독출 동작의 일 예를 나타낸다.
도 22를 참조하면, 컨트롤러(130a)는 키를 수신하고, 수신된 키를 이용하여 밸류(V)의 저장 주소를 검색할 수 있다. 검색 결과, 밸류(V)의 제1 내지 제3 부분 밸류들(V0, V1, V2)의 저장 주소들이 각각 제1 및 제2 메모리들(110, 120a)에 대응하면, 컨트롤러(130a)는 제1 및 제2 메모리들(110, 120a)에 대한 독출 동작들이 동시에 수행되도록 제1 및 제2 메모리들(110, 120a)을 제어할 수 있다.
도 23은 본 개시의 일 실시예에 따른, 도 22에 예시된 오브젝트 스토리지 장치(100a)의 시간에 따른 독출 동작을 나타낸다.
도 22 및 도 23을 참조하면, 제1 구간(231) 동안, 컨트롤러(130a)는 외부로부터 독출 요청(RR) 및 키(K)를 수신할 수 있다. 제2 구간(232) 동안, 컨트롤러(130a)는 키(K)를 기초로 키(K)에 따른 밸류의 저장 주소를 인덱싱할 수 있다. 제3 구간(233) 동안, 제1 메모리(110), 제2 메모리(120a)의 제1 또는 제2 저장 공간(121, 122), 및 제2 메모리(120a)의 제3 저장 공간(123)에 대한 독출 동작들을 동시에 수행할 수 있다.
제3 구간(233)은 독출 구간(233a) 및 전송 구간(233b)을 포함할 수 있으며, 독출 구간(233a)에서, 제1 메모리(110)로부터 제1 부분 밸류(V1)를 독출하고, 전송 구간(233b)에서, 독출된 제1 부분 밸류(V0)를 외부로 전송할 수 있다. 또한, 제3 구간(233)에서, 제2 메모리(120a)의 제1 또는 제2 저장 공간(121, 122)으로부터 제2 부분 밸류(V1)를 독출할 수 있다. 제4 구간(234) 동안, 독출된 제2 부분 밸류(V1)를 외부로 전송할 수 있다. 또한, 제4 구간(234) 동안, 제2 메모리(120a)의 제3 저장 공간(123)으로부터 제3 부분 밸류(V2)를 계속해서 독출할 수 있다. 제5 구간(235) 동안, 독출된 제3 부분 밸류(V2)를 외부로 전송할 수 있다.
본 실시예에 따르면, 전송 구간(233b)에 의해, 제1 메모리(110)에 대한 독출 구간(233a)보다 긴 제2 메모리(120a)에 대한 독출 구간인 제3 구간(233)이 감춰질 수 있다. 또한, 제4 구간(234)에 의해, 제1 또는 제2 저장 공간(121, 122)에 대한 독출 구간인 제3 구간(233)보다 긴 제3 저장 공간(123)에 대한 독출 구간인 제4 구간(234)이 감춰질 수 있다.
또한, 본 실시예에 따르면, 제3 구간(233)에 포함된 전송 구간(233b)에 제1 부분 밸류(V0)를 외부로 전송하고, 이어서, 제4 구간(234)에 제2 부분 밸류(V1)를 외부로 전송하며, 이어서, 제5 구간(235)에 제3 부분 밸류(V2)를 외부로 전송할 수 있다. 따라서, 오브젝트 스토리지 장치(100a)와 호스트 사이의 인터페이스의 관점에서 보면, 오브젝트 스토리지 장치(100a)는 독출 속도가 상대적으로 빠른 제1 메모리(110)로부터 전체 밸류를 독출하는 것과 같은 성능을 보일 수 있다.
도 24는 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치(100b)를 나타내는 블록도이다.
도 24를 참조하면, 오브젝트 스토리지 장치(100b)는 도 2의 오브젝트 스토리지 장치(100)의 변형예이며, 제1 메모리(110), 제2 메모리(120), 제3 메모리(140) 및 컨트롤러(130b)를 포함할 수 있다. 제1 내지 제3 메모리들(110, 120, 140)은 각각 제1 내지 제3 레이턴시를 가질 수 있다. 제2 및 제3 레이턴시는 제1 레이턴시보다 클 수 있다. 일 실시예에서, 제2 레이턴시와 제3 레이턴시는 서로 동일할 수 있고, 제2 및 제3 메모리들(120, 130)은 동종의 메모리들일 수 있다. 예를 들어, 제2 및 제3 메모리들(120, 130)은 서로 다른 칩들로 구현된 메모리들일 수 있다. 일 실시예에서, 제2 레이턴시와 제3 레이턴시는 서로 다를 수 있고, 제2 및 제3 메모리들(120, 130)은 이종의 메모리들일 수 있다.
도 25는 본 개시의 일 실시예에 따른, 도 24의 오브젝트 스토리지 장치(100b)에 대한 기입 동작의 일 예를 나타낸다.
도 25를 참조하면, 컨트롤러(130b)는 밸류(V)의 사이즈가 임계치보다 크면, 밸류(V)를 제1 내지 제3 부분 밸류들(V0 내지 V2)로 분할할 수 있다. 이어서, 컨트롤러(130b)는 제1 부분 밸류(V0)가 제1 메모리(110)에 기입되도록 제1 메모리(110)를 제어하고, 응답 속도가 상대적으로 느른 제2 및 제3 메모리들(120, 140)에 제2 및 제3 부분 밸류들(V1, V2)을 각각 저장할 수 있다.
도 26은 본 개시의 일 실시예에 따른, 도 24의 오브젝트 스토리지 장치(100b)에 대한 독출 동작의 일 예를 나타낸다.
도 26을 참조하면, 밸류(V)의 제1 내지 제3 부분 밸류들(V0, V1, V2)의 저장 주소들이 각각 제1 내지 제3 메모리들(110, 120, 140)에 대응하면, 컨트롤러(130b)는 제1 내지 제3 메모리들(110, 120, 140)에 대한 독출 동작들이 동시에 수행되도록 제1 내지 제3 메모리들(110, 120, 140)을 제어할 수 있다.
도 27은 본 개시의 일 실시예에 따른, 도 26에 예시된 오브젝트 스토리지 장치(100b)의 시간에 따른 독출 동작을 나타낸다.
도 26 및 도 27을 참조하면, 제1 구간(271) 동안, 컨트롤러(130b)는 외부로부터 독출 요청(RR) 및 키(K)를 수신할 수 있다. 제2 구간(272) 동안, 컨트롤러(130b)는 키(K)를 기초로 키(K)에 따른 밸류의 저장 주소를 인덱싱할 수 있다. 제3 구간(273) 동안, 제1 내지 제3 메모리들(110, 120, 140)에 대한 독출 동작들을 동시에 수행할 수 있다.
제3 구간(273)은 독출 구간(273a) 및 전송 구간(273b)을 포함할 수 있으며, 독출 구간(273a)에서, 제1 메모리(110)로부터 제1 부분 밸류(V1)를 독출하고, 전송 구간(273b)에서, 독출된 제1 부분 밸류(V0)를 외부로 전송할 수 있다. 또한, 제3 구간(273)에서, 제2 메모리(120)의 제1 또는 제2 저장 공간(121, 122)으로부터 제2 부분 밸류(V1)를 독출할 수 있다. 제4 구간(274) 동안, 독출된 제2 부분 밸류(V1)를 외부로 전송할 수 있다. 또한, 제4 구간(274) 동안, 제3 메모리(140)로부터 제3 부분 밸류(V2)를 계속해서 독출할 수 있다. 제5 구간(275) 동안, 독출된 제3 부분 밸류(V2)를 외부로 전송할 수 있다.
본 실시예에 따르면, 전송 구간(273b)에 의해, 제1 메모리(110)에 대한 독출 구간(273a)보다 긴 제2 메모리(120)에 대한 독출 구간인 제3 구간(273)이 감춰질 수 있다. 또한, 제4 구간(274)에 의해, 제1 또는 제2 저장 공간(121, 122)에 대한 독출 구간인 제3 구간(273)보다 긴 제3 메모리(140)에 대한 독출 구간인 제4 구간(274)이 감춰질 수 있다.
도 28은 본 개시의 일 실시예에 따른 오브젝트 스토리지 장치(100c)를 나타내는 블록도이다.
도 28을 참조하면, 오브젝트 스토리지 장치(100c)는 도 24의 오브젝트 스토리지 장치(100b)의 변형예이고, 제1 메모리(110), 제2 메모리(120), 제3 메모리(140a) 및 컨트롤러(130c)를 포함할 수 있다. 제3 메모리(140a)는 제1 및 제2 저장 공간들(141, 142)을 포함할 수 있다. 제1 및 제2 저장 공간들(141, 142)은 오브젝트의 제3 부분을 중복 저장하도록 구성될 수 있다. 일부 실시예들에서, 제3 메모리(140a)는 제3 저장 공간을 더 포함할 수 있고, 제3 저장 공간은 오브젝트의 제4 부분을 저장하도록 구성될 수 있다. 또한, 일부 실시예들에서, 제3 메모리(140a)는 제3 및 제4 저장 공간들을 더 포함할 수 있고, 제3 및 제4 저장 공간들은 오브젝트의 제4 부분을 중복 저장하도록 구성될 수 있다.
도 29는 본 개시의 일 실시예에 따른, 도 28의 오브젝트 스토리지 장치(100c)에 대한 기입 동작을 나타낸다.
도 29를 참조하면, 컨트롤러(130c)는 밸류(V)의 사이즈가 임계치보다 크면, 밸류(V)를 제1 부분 밸류(V0), 제2 부분 밸류(V1) 및 제3 부분 밸류(V2)로 분할할 수 있다. 이어서, 컨트롤러(130c)는 응답 속도가 상대적으로 빠른 제1 메모리(110)에 제1 부분 밸류(V0)를 저장하고, 응답 속도가 상대적으로 느른 제2 및 제3 메모리들(120, 140a)에 제2 및 제3 부분 밸류들(V1, V2)을 각각 중복 저장할 수 있다.
도 30은 본 개시의 일 실시예에 따른, 도 28의 오브젝트 스토리지 장치(100c)에 대한 독출 동작을 나타낸다.
도 30을 참조하면, 밸류(V)의 제1 내지 제3 부분 밸류들(V0, V1, V2)의 저장 주소들이 각각 제1 내지 제3 메모리들(110, 120, 140a)에 대응하면, 컨트롤러(130c)는 제1 내지 제3 메모리들(110, 120, 140a)에 대한 독출 동작들이 동시에 수행되도록 제1 내지 제3 메모리들(110, 120, 140a)을 제어할 수 있다. 이때, 컨트롤러(130c)는 제1 및 제2 저장 공간들(121, 122) 중 아이들 상태에 있는 저장 공간을 선택할 수 있다. 또한, 컨트롤러(130c)는 제1 및 제2 저장 공간들(141, 142) 중 아이들 상태에 있는 저장 공간을 선택할 수 있다.
도 31은 본 개시의 일 실시예에 따른 컴퓨팅 시스템(1000)을 나타내는 블록도이다.
도 31을 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1100), 메모리 장치(1200), 스토리지 장치(1300), 오브젝트 캐시 시스템(1400), 입출력 장치(1500) 및 파워 서플라이(1600)를 포함할 수 있다. 본 실시예에서, 오브젝트 캐싱 시스템(1400)은 상술된 실시예들에 따른 오브젝트 스토리지 장치(100, 100a, 100b, 100c)를 포함할 수 있다. 구체적으로, 오브젝트 캐싱 시스템(1400)은 제1 레이턴시를 갖는 제1 메모리와 제1 레이턴시보다 큰 제2 레이턴시를 갖는 제2 메모리를 포함할 수 있다. 오브젝트 캐싱 시스템(1400)은 제1 및 제2 메모리들에 대한 독출 동작들을 동시에 수행하고, 응답 속도가 빠른 제1 메모리에서 독출된 데이터를 전송하는 동안, 제2 메모리에 대한 독출 동작을 계속해서 수행할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
100, 100a, 100b, 100c: 오브젝트 스토리지 장치
110: 제1 메모리, 120, 120a, 120A, 120B: 제2 메모리
130, 130a, 130b, 130c, 130A, 130B: 컨트롤러, 140, 140a: 제3 메모리

Claims (20)

  1. 데이터를 오브젝트 단위로 관리하는 오브젝트 스토리지 장치로서,
    오브젝트의 아이디 또는 키를 기초로 상기 오브젝트의 저장 주소를 인덱싱하고, 상기 저장 주소에 따라 상기 오브젝트에 대한 기입 동작 및 독출 동작을 제어하는 컨트롤러;
    제1 레이턴시를 갖고, 상기 오브젝트의 제1 부분을 저장하도록 구성된 제1 메모리; 및
    상기 제1 레이턴시보다 큰 제2 레이턴시를 갖고, 상기 오브젝트의 제2 부분을 중복 저장하도록 구성된 제1 및 제2 저장 공간들을 포함하는 제2 메모리를 포함하는 오브젝트 스토리지 장치.
  2. 제1항에 있어서,
    상기 컨트롤러는, 상기 제1 부분이 저장되는 제1 저장 주소 및 상기 제2 부분이 중복 저장되는 제2 저장 주소들을 인덱싱 구조로 저장하는, 오브젝트 스토리지 장치.
  3. 제1항에 있어서,
    상기 제1 및 제2 저장 공간들은, 상기 제2 메모리의 제1 및 제2 다이들(dies)에 각각 위치하거나, 상기 제2 메모리의 제1 및 제2 플레인들(planes)에 각각 위치하는, 오브젝트 스토리지 장치.
  4. 제1항에 있어서,
    상기 오브젝트 스토리지 장치는 키-밸류 스토어(key-value store)이고,
    상기 오브젝트는 키 및 밸류를 포함하며,
    상기 제1 부분은 상기 밸류의 앞부분에 대응하고, 상기 제2 부분은 상기 밸류의 뒷부분에 대응하는, 오브젝트 스토리지 장치.
  5. 제1항에 있어서,
    상기 컨트롤러는, 기입 요청에 응답하여, 상기 오브젝트의 사이즈가 임계치보다 크면 상기 오브젝트를 상기 제1 및 제2 부분들로 분할하고, 분할된 상기 제1 및 제2 부분들이 각각 제1 및 제2 메모리들에 저장되도록 상기 제1 및 제2 메모리들을 제어하는, 오브젝트 스토리지 장치.
  6. 제5항에 있어서,
    상기 컨트롤러는, 상기 제1 및 제2 저장 공간들이 아이들(idle) 상태이면 상기 제1 및 제2 저장 공간들에 상기 제2 부분을 순차적으로 중복 저장하도록 상기 제2 메모리를 제어하는, 오브젝트 스토리지 장치.
  7. 제5항에 있어서,
    상기 컨트롤러는, 상기 제2 메모리에 대한 독출 시간과 상기 오브젝트 스토리지 장치의 전송 대역폭을 기초로 상기 임계치를 결정하는, 오브젝트 스토리지 장치.
  8. 제5항에 있어서,
    상기 컨트롤러는, 상기 오브젝트의 분할 전에, 상기 오브젝트가 상기 제1 메모리에 저장되도록 상기 제1 메모리를 제어하는, 오브젝트 스토리지 장치.
  9. 제1항에 있어서,
    상기 컨트롤러는, 독출 요청에 응답하여, 상기 제1 및 제2 부분들이 각각 저장된 저장 주소들을 검색하고, 검색된 상기 저장 주소들을 기초로 상기 제1 및 제2 메모리들에 대한 독출 동작들이 동시에 수행되도록 상기 제1 및 제2 메모리들을 제어하는, 오브젝트 스토리지 장치.
  10. 제9항에 있어서,
    상기 컨트롤러는, 상기 독출 요청과 함께 키를 수신하고, 수신된 상기 키를 이용하여 인덱싱 구조에서 상기 저장 주소들을 검색하는, 오브젝트 스토리지 장치.
  11. 제9항에 있어서,
    상기 컨트롤러는, 상기 제1 메모리로부터 상기 제1 부분을 독출하고 독출된 상기 제1 부분을 외부로 전송하는 동안, 상기 제1 및 제2 저장 공간들 중 하나로부터 상기 제2 부분을 독출하도록, 상기 제1 및 제2 메모리들을 제어하는, 오브젝트 스토리지 장치.
  12. 제11항에 있어서,
    상기 컨트롤러는, 상기 제1 및 제2 저장 공간들 중 아이들 상태에 있는 저장 공간으로부터 상기 제2 부분을 독출하도록 상기 제2 메모리를 제어하는, 오브젝트 스토리지 장치.
  13. 제1항에 있어서,
    상기 제2 메모리는 상기 오브젝트의 제3 부분을 저장하도록 구성된 제3 저장 공간을 더 포함하고,
    상기 컨트롤러는, 기입 요청에 응답하여 상기 오브젝트의 사이즈가 임계치보다 크면 상기 오브젝트를 상기 제1 내지 제3 부분들로 분할하고, 상기 제1 부분이 상기 제1 메모리에 저장되도록 상기 제1 메모리를 제어하며, 상기 제2 부분이 상기 제1 및 제2 저장 공간들에 중복 저장되고 상기 제3 부분이 상기 제3 저장 공간에 저장되도록 상기 제2 메모리를 제어하고,
    상기 컨트롤러는, 독출 요청에 응답하여 상기 제1 메모리, 상기 제1 및 제2 저장 공간들 중 하나, 및 상기 제3 저장 공간에 대한 독출 동작들이 동시에 수행되도록 상기 제1 및 제2 메모리들을 제어하는, 오브젝트 스토리지 장치.
  14. 제1항에 있어서,
    상기 제1 레이턴시보다 큰 제3 레이턴시를 갖고, 상기 오브젝트의 제3 부분을 저장하도록 구성된 제3 메모리를 더 포함하고,
    상기 컨트롤러는, 기입 요청에 응답하여 상기 오브젝트의 사이즈가 임계치보다 크면 상기 오브젝트를 상기 제1 내지 제3 부분들로 분할하고, 상기 제1 내지 제3 부분들이 각각 상기 제1 내지 제3 메모리들에 저장되도록 상기 제1 내지 제3 메모리들을 제어하고,
    상기 컨트롤러는, 독출 요청에 응답하여 상기 제1 내지 제3 메모리들에 대한 독출 동작들이 동시에 수행되도록 상기 제1 내지 제3 메모리들을 제어하는, 오브젝트 스토리지 장치.
  15. 제1항에 있어서,
    상기 오브젝트 스토리지 장치는 오브젝트 캐시 서버이고,
    상기 컨트롤러는, 어플리케이션 서버로부터 기입 요청 또는 독출 요청을 수신하는, 오브젝트 스토리지 장치의 동작 방법.
  16. 데이터를 오브젝트 단위로 관리하는 오브젝트 스토리지 장치의 동작 방법으로서,
    오브젝트 및 기입 요청을 수신하는 단계;
    상기 오브젝트의 사이즈가 임계치보다 크면 상기 오브젝트를 적어도 제1 및 제2 부분들로 분할하는 단계;
    제1 레이턴시를 갖는 제1 메모리에 상기 제1 부분을 저장하는 단계; 및
    상기 제1 레이턴시보다 큰 제2 레이턴시를 갖는 제2 메모리의 제1 및 제2 저장 공간들에 상기 제2 부분을 중복 저장하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    상기 제1 부분이 저장되는 제1 저장 주소 및 상기 제2 부분이 중복 저장되는 제2 저장 주소들을 인덱싱 구조로 저장하는 단계를 더 포함하는, 방법.
  18. 제16항에 있어서,
    상기 제2 부분을 중복 저장하는 단계는,
    상기 제1 및 제2 저장 공간들이 아이들 상태인지 판단하는 단계; 및
    상기 제1 및 제2 저장 공간들이 상기 아이들 상태이면, 상기 제1 및 제2 저장 공간들에 상기 제2 부분을 순차적으로 중복 저장하는 단계를 포함하는, 방법.
  19. 데이터를 오브젝트 단위로 관리하는 오브젝트 스토리지 장치의 동작 방법으로서,
    독출 요청을 수신하는 단계;
    상기 독출 요청에 대응하는 오브젝트가 저장된 저장 주소를 검색하는 단계;
    제1 구간에서, 검색된 상기 저장 주소를 기초로, 제1 레이턴시를 갖는 제1 메모리로부터 상기 오브젝트의 제1 부분을 독출하고, 독출된 상기 제1 부분을 외부로 전송하는 단계;
    상기 제1 구간에서, 검색된 상기 저장 주소를 기초로, 상기 제1 레이턴시보다 큰 제2 레이턴시를 갖는 제2 메모리의 제1 및 제2 저장 공간들 중 하나로부터 상기 오브젝트의 제2 부분을 독출하는 단계; 및
    상기 제1 구간 이후의 제2 구간에서, 독출된 상기 제2 부분을 상기 외부로 전송하는 단계를 포함하는 방법.
  20. 제19항에 있어서,
    상기 제2 부분은 상기 제1 및 제2 저장 공간들에 중복 저장되어 있고,
    상기 제2 부분을 독출하는 단계는,
    상기 제1 및 제2 저장 공간들 중 아이들 상태에 있는 저장 공간을 선택하는 단계; 및
    선택된 상기 저장 공간으로부터 상기 제2 부분을 독출하는 단계를 포함하는, 방법.
KR1020160074735A 2016-06-15 2016-06-15 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들 KR20170141538A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160074735A KR20170141538A (ko) 2016-06-15 2016-06-15 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들
US15/593,719 US20170364280A1 (en) 2016-06-15 2017-05-12 Object storage device and an operating method thereof
CN201710450282.9A CN107526542A (zh) 2016-06-15 2017-06-15 对象存储装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160074735A KR20170141538A (ko) 2016-06-15 2016-06-15 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들

Publications (1)

Publication Number Publication Date
KR20170141538A true KR20170141538A (ko) 2017-12-26

Family

ID=60660141

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160074735A KR20170141538A (ko) 2016-06-15 2016-06-15 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들

Country Status (3)

Country Link
US (1) US20170364280A1 (ko)
KR (1) KR20170141538A (ko)
CN (1) CN107526542A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190094975A (ko) * 2018-02-06 2019-08-14 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
KR20190101095A (ko) * 2018-02-22 2019-08-30 삼성전자주식회사 키-밸류 스토리지 장치 및 이의 동작 방법
CN112181287A (zh) * 2019-07-05 2021-01-05 三星电子株式会社 基于键值存储数据的存储设备及其操作方法
US12001413B2 (en) 2018-02-22 2024-06-04 Samsung Electronics Co., Ltd. Key-value storage device and operating method thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10789387B2 (en) * 2018-03-13 2020-09-29 Commvault Systems, Inc. Graphical representation of an information management system
CN109164974B (zh) * 2018-06-27 2021-07-09 创新先进技术有限公司 一种数据存储方法及装置、一种计算设备及存储介质
US11157205B2 (en) * 2018-11-15 2021-10-26 Western Digital Technologies, Inc. Object storage system with control entity quota enforcement
US11204717B2 (en) 2018-11-15 2021-12-21 Western Digital Technologies, Inc. Object storage system with access control quota status check
US11580082B2 (en) 2018-11-15 2023-02-14 Western Digital Technologies, Inc. Object storage system with control entity quota usage mapping
JP7323769B2 (ja) * 2019-04-15 2023-08-09 富士通株式会社 ストレージ装置、ストレージシステムおよびプログラム
TWI708145B (zh) 2019-04-30 2020-10-21 威聯通科技股份有限公司 多控制器儲存系統及儲存裝置
US11894046B2 (en) * 2022-05-17 2024-02-06 Western Digital Technologies, Inc. Alignment optimization of key value pair data storage

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190094975A (ko) * 2018-02-06 2019-08-14 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
KR20190101095A (ko) * 2018-02-22 2019-08-30 삼성전자주식회사 키-밸류 스토리지 장치 및 이의 동작 방법
US12001413B2 (en) 2018-02-22 2024-06-04 Samsung Electronics Co., Ltd. Key-value storage device and operating method thereof
CN112181287A (zh) * 2019-07-05 2021-01-05 三星电子株式会社 基于键值存储数据的存储设备及其操作方法

Also Published As

Publication number Publication date
CN107526542A (zh) 2017-12-29
US20170364280A1 (en) 2017-12-21

Similar Documents

Publication Publication Date Title
KR20170141538A (ko) 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들
US11482278B2 (en) Method of performing internal processing operation of memory device
US10497438B2 (en) Cross-point memory array addressing
TWI750176B (zh) 對記憶體通道執行軟體調訓的電子裝置、其記憶體通道調訓方法及其系統
TWI781439B (zh) 映射未經分類之記憶體存取至經分類之記憶體存取
US11494311B2 (en) Page table hooks to memory types
US20230236747A1 (en) Accessing stored metadata to identify memory devices in which data is stored
US11036412B2 (en) Dynamically changing between latency-focused read operation and bandwidth-focused read operation
US11934319B2 (en) Memory system for binding data to a memory namespace
US9983996B2 (en) Technologies for managing cache memory in a distributed shared memory compute system
US20190095107A1 (en) Data classification for placement within storage devices
US20160124639A1 (en) Dynamic storage channel
CN114153373A (zh) 用于执行存储器设备内的数据操作的存储器系统及其操作方法
US20160283157A1 (en) Memory device
US20180004668A1 (en) Searchable hot content cache
US20190042133A1 (en) Technologies for providing adaptive data access request routing in a distributed storage system
US20240045914A1 (en) Intelligent data storage for efficient retrieval based on contextual awareness for mobile applications