KR102440128B1 - 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 - Google Patents

통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 Download PDF

Info

Publication number
KR102440128B1
KR102440128B1 KR1020150178367A KR20150178367A KR102440128B1 KR 102440128 B1 KR102440128 B1 KR 102440128B1 KR 1020150178367 A KR1020150178367 A KR 1020150178367A KR 20150178367 A KR20150178367 A KR 20150178367A KR 102440128 B1 KR102440128 B1 KR 102440128B1
Authority
KR
South Korea
Prior art keywords
identifier
storage device
tuple
data
hash
Prior art date
Application number
KR1020150178367A
Other languages
English (en)
Other versions
KR20160073316A (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 KR20160073316A publication Critical patent/KR20160073316A/ko
Application granted granted Critical
Publication of KR102440128B1 publication Critical patent/KR102440128B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0718Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an object-oriented system
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 메모리 관리 장치에 관한 것으로, 메모리 관리 장치는 메모리, 그리고 메모리에 저장된 데이터 구조를 포함하되, 데이터 구조는 객체의 식별자 그리고 장치 식별자와 장치 상의 위치를 포함하는 튜플(tuple)을 포함한다.

Description

통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법{MEMORY MANAGEMENT DIVICE, SYSTEM AND METHOD FOR UNIFIED OBJECT INTERFACE}
본 발명은 저장 장치에 관한 것으로, 보다 구체적으로 멀티플 저장 장치들의 통합 관리에 관한 것이다.
객체 지향 프로그래밍은 지난 10년 동안 이어진, 오늘날 산업에서 지배적인 소프트웨어 개발 패러다임이다. 엔티티와 그것의 지원 방법들을 나타내는 현실 세계 관념으로서의 객체의 개념은 오늘날 빠르게 진화하는 코드베이스의 결점이 없고 확장 가능한 모듈형 소프트웨어의 개발을 요구한다. 반면에, 어드레스 기반의 방식이 표준이며 간접적으로 하드웨어의 소프트웨어로의 추상화가 일반적인 형태인, 메모리 시스템 아키텍처의 진화는 대부분 정체되어 있다. 그러나 CPU 성능과 메모리 성능 사이의 넓어지는 간격, 간접적인 비용, 및 낮은 하드웨어 인텔리전스는 객체 지향 소프트웨어를 원시 명령형 프로그램들에 비해 덜 효율적으로 만들고, 생산 품질 코드를 빌드하는 것을 덜 어필하도록 만든다.
반면에, 반도체 산업은 트랜지스터의 피처 사이즈(feature size)가 몇몇 원자들의 크기 정도로 스케일링 다운되는 미지의 영역으로 들어가고 그리고 무어의 법칙의 한계치까지 도달하고 있다. 스케일링 한계의 영향은 DRAM(Dynamic Random Access Memory)이 메모리 어레이를 구성하기 위해 최소화된 크기의 트랜지스터들을 사용하고 그리고 더 밀집되고 더 높은 메모리 시스템 용량을 제공하기 위한 프로세스 스케일링에 가장 크게 의존하기 때문에 DRAM 기술에 가장 크게 영향을 준다. 따라서, DRAM 디자이너들은 새로운 메모리 시스템의 비트 당 비용이 현존하는 DRAM과 비교하여 합리적인 성능을 보장함과 동시에 동일하게 유지할 수 있는 대안적인 기술들 및 아키텍처들을 제안하기 위해 노력하고 있다. PCM(Phase Change Memory), STT_MRAM(Spin-transfer Torque Magnetic RAM), RRRAM(Resistive RAM), 등과 같은 NVM(Non-Volatile Memory) 기술들과의 이머징(emerging)은 메모리 및 스토리지 스택의 성능과 비트 당 비용에서의 차이를 해결하기 위한 대안적인 해법으로 보여진다.
더 빠른 랜덤 액세스 및 바이트-레벨 그래뉼래리티(granularity)를 위한 범위를 가지는 새로운 NVM 기술들의 출현으로 인해, 메모리 및 스토리지 사이의 구분은 상당히 약해지고 있다. 현대적인 데이터센터들의 빅 데이터 어플리케이션의 성장과 연결되어, 메모리 및 스토리지의 액세스를 위해 디자인되는 하드웨어 인터페이스의 방식도 새로운 접근이 필요하다.
소프트웨어 객체들이 하드웨어에 의해 다루어지는 방법에서의 미스매치, 그리고 가상 메모리 및 파일 시스템 인터페이스에 의해 제기되는 복수의 계층들의 간접적인 행동 때문에 주로 유발되는 비효율성은 빠르게 스케일링 가능한 통합된 메모리 및 스토리지를 구성하기 위해 해결될 필요성이 있다.
본 발명의 목적은 다양한 종류의 저장 장치들 사이의 관리를 통합하기 위한 통합된 객체 인터페이스를 제공하는 메모리 관리 장치, 시스템 및 그 방법을 제공하는 것이다.
본 발명 실시 예에 따른 메모리 관리 장치는 메모리, 그리고 상기 메모리에 저장된 데이터 구조를 포함하되, 상기 데이터 구조는, 객체의 식별자 및 장치 식별자 및 상기 장치의 위치를 포함하는 튜플(tuple)을 포함한다.
실시 예로서, 상기 튜플은 메타데이터를 더 포함한다.
실시 예로서, 상기 객체의 식별자는 해시(hash)를 포함하고, 그리고 상기 메모리 관리 장치는 제 2 데이터 구조를 더 포함하되, 상기 제 2 데이터 구조는, 상기 객체의 제 2 식별자 그리고 상기 해시를 포함한다.
본 발명의 실시 예에 따른 시스템은 컴퓨터, 상기 컴퓨터와 연결되는 제 1 저장 장치, 상기 컴퓨터와 연결되는 제 2 저장 장치, 그리고 상기 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함하되, 상기 데이터 구조는, 객체의 식별자 그리고 상기 제 1 저장 장치 및 상기 제 2 저장 장치 중 하나에 대한 장치 식별자 및 상기 장치 상의 위치를 포함하는 튜플을 포함한다.
실시 예로서, 상기 튜플은 메타데이터를 더 포함한다.
실시 예로서, 상기 객체의 상기 식별자는 해시를 포함하고, 그리고 상기 시스템은 상기 컴퓨터와 연결되는 상기 스토리지에 저장된 제 2 데이터 구조를 더 포함하되, 상기 제 2 데이터 구조는, 상기 객체의 제 2 식별자 그리고 상기 해시를 포함한다.
실시 예로서, 상기 컴퓨터는 커널을 실행하는 프로세서를 포함하고, 그리고 상기 커널은 상기 제 1 저장 장치 및 상기 제 2 저장 장치로부터 객체를 위한 메모리를 할당하도록 동작한다.
실시 예로서, 상기 튜플은 액세스 카운터를 더 포함하고, 그리고 상기 커널은 상기 액세스 카운터가 문턱치를 넘는 경우 상기 제 1 저장 장치에서 상기 제 2 저장 장치로 상기 객체를 이동하도록 동작한다.
실시 예로서, 상기 제 1 저장 장치는 보안 영역을 포함하고, 그리고 상기 커널은 상기 객체가 안전한 것으로 간주되는 경우 보안 영역의 상기 제 1 저장 장치로부터 스토리지를 할당하도록 동작한다.
본 발명의 실시 예에 따른 방법은 객체에 대한 데이터 액세스 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하고, 상기 객체의 식별자를 튜플로 변환하는 단계, 그리고 장치의 식별자와 상기 장치 상의 위치를 사용하여 상기 데이터에 액세스하는 단계를 포함하되, 상기 요청은 상기 객체의 상기 식별자를 포함하고, 상기 튜플은 상기 장치의 상기 식별자 및 상기 장치 상의 위치를 포함한다.
실시 예로서, 상기 객체에 대한 메모리를 할당하기 위해 제 2 요청을 수신하는 단계, 상기 객체에 대한 상기 메모리를 할당하기 위해 커널을 요청하는 단계, 상기 객체의 식별자를 상기 커널로부터 수신하는 단계, 그리고 상기 객체의 상기 식별자와 상기 튜플을 연관시키는 상기 객체 테이블에 엔트리를 추가하는 단계를 더 포함한다.
실시 예로서, 해시를 생성하기 위해 상기 데이터를 해싱하는 단계, 그리고 상기 객체의 상기 식별자와 상기 해시를 연관시키는 해시 테이블에 엔트리를 더하는 단계를 더 포함하고, 상기 엔트리를 상기 객체 테이블에 추가하는 단계는, 상기 객체의 상기 식별자와 상기 해시를 더 포함하는 상기 튜플을 연관시키는 상기 객체 테이블에 상기 엔트리를 추가하는 단계를 포함한다.
실시 예로서, 상기 객체 테이블이 상기 해시를 이미 포함하고 있는지를 확인하기 위해 상기 객체 테이블을 확인하는 단계, 그리고 상기 객체 테이블이 상기 해시를 이미 포함하고 있는 경우, 상기 객체에 대한 상기 메모리를 할당하기 위해 상기 커널을 요청하지 않는 단계를 더 포함한다.
실시 예로서, 상기 객체에 대한 메모리를 할당하기 위한 제 2 요청을 수신하는 단계는, 상기 객체에 적합한 메타데이터를 포함하는 상기 제 2 요청을 상기 객체에 대한 상기 메모리를 할당하기 위해 수신하는 것을 포함하고, 그리고 상기 객체에 대한 상기 메모리를 할당하기 위해 커널을 요청하는 단계는, 상기 메타데이터에 따라 상기 객체에 대한 상기 메모리를 할당하도록 상기 커널을 요청하는 것을 포함한다.
실시 예로서, 상기 객체의 상기 식별자와 상기 튜플을 연관시키는 상기 객체 테이블에 엔트리를 추가하는 단계는, 상기 메타데이터를 포함하는 상기 튜플과 상기 객체의 상기 식별자를 연관시키는 상기 객체 테이블에 상기 엔트리를 추가한다.
실시 예로서, 상기 객체에 대한 메모리를 할당하기 위한 제 2 요청을 수신하는 단계는, 상기 객체가 안전한지를 지정하는 제 2 요청을 상기 객체에 대한 상기 메모리를 할당하기 위해 수신하는 것을 포함하고, 상기 객체에 대한 상기 메모리를 할당하기 위해 커널을 요청하는 단계는, 상기 장치의 보안 위치에 상기 객체에 대한 상기 메모리를 할당하도록 상기 커널을 요청하는 것을 포함하며, 그리고 상기 객체 테이블에 엔트리를 추가하는 단계는, 상기 객체가 안전한 것을 나타내는 표시자를 포함하는 튜플과 상기 객체의 상기 식별자를 연관시키는 상기 객체 테이블에 상기 엔트리를 추가하는 것을 포함한다.
실시 예로서, 상기 객체에 대한 상기 메모리를 할당하기 위한 상기 제 2 요청을 수신하는 단계는, 상기 객체가 안전하다는 것과 그리고 보안 프로세스의 표시자를 지정하는 상기 제 2 요청을 상기 객체에 대한 상기 메모리를 할당하기 위해 수신하는 것을 포함하고, 그리고 상기 객체에 대한 상기 메모리를 할당하기 위한 커널을 요청하는 단계는, 상기 보안 프로세스를 사용하여 상기 장치의 보안 위치에 상기 객체에 대한 상기 메모리를 할당하기 위해 상기 커널을 요청하는 것을 포함한다.
실시 예로서, 상기 객체에 대한 메모리를 할당 해제(de-allocate)하기 위한 제 3 요청을 수신하는 단계, 상기 객체에 대한 상기 메모리를 할당 해제하기 위한 커널을 요청하는 단계, 그리고 상기 객체의 상기 식별자와 상기 튜플을 연관시키는 상기 객체 테이블로부터 엔트리를 제거하는 단계를 더 포함한다.
실시 예로서, 상기 객체의 상기 식별자를 튜플로 변환하는 단계는, 상기 장치의 상기 식별자, 상기 장치 상의 상기 위치, 및 액세스 카운터를 포함하는 상기 튜플로 상기 객체의 상기 식별자를 변환하는 것을 포함하고, 그리고 상기 방법은, 상기 액세스 카운터를 증가시키는 단계, 그리고 상기 액세스 카운터가 문턱치를 넘는 경우, 제 2 장치에 상기 객체에 대한 상기 메모리를 할당하기 위한 커널을 요청하는 단계, 상기 제 1 장치에서 상기 제 2 장치로 상기 데이터를 마이그레이션하는 단계, 상기 장치에 상기 객체에 대한 상기 메모리를 릴리즈하는 단계, 그리고 상기 상기 제 2 장치 및 상기 제 2 장치 상의 제 2 위치와 상기 객체 식별자를 연관시키기 위해 상기 객체 테이블에 있는 상기 튜플을 업그레이드하는 단계를 더 포함한다.
실시 예로서, 프로세서에서 객체에 대한 데이터에 액세스하기 위한 요청을 수신하는 단계는, 상기 프로세서에서 상기 객체에 대한 데이터에 액세스하기 위한 요청을 수신하는 것을 포함하고, 상기 객체에 대한 상기 식별자는 글로벌 식별자 공간으로부터 추출되는 고유 식별자를 포함한다.
본 발명에 따르면 다양한 종류의 저장 장치들 사이의 관리를 통합하기 위한 객체 인터페이스를 제공할 수 있어 저장 장치의 효율성이 개선될 수 있다.
도 1은 본 발명의 실시 예에 따른, 객체가 저장되는 곳을 지정하는 튜플들에 객체 ID들을 맵핑하기 위해 사용되는 객체 테이블을 보여주는 도면이다.
도 2는 도 3의 컴퓨터 시스템에서 사용될 수 있는 메타데이터를 보여주는 도면이다.
도 3은 도 1의 객체 테이블을 사용하는 다양한 스토리지 솔루션들을 가지는 컴퓨터 시스템을 보여주는 도면이다.
도 4는 본 발명의 다른 실시 예에 따른, 객체가 저장되는 곳을 지정하는 튜플들에 객체 ID들을 맵핑하기 위한 대안적인 객체 테이블을 보여주는 도면이다.
도 5a 내지 도 5c는 본 발명의 실시 예에 따른, 도 3의 컴퓨터 시스템에서 객체 지향 스토리지를 사용하기 위한 예시적인 절차의 흐름도를 보여주는 도면이다.
도 6은 도 1 및 도 4의 데이터 구조들과 함께 사용될 수 있는 예시적인 절차의 흐름도를 보여주는 도면이다.
도 7은 객체에 대해 스토리지를 할당하기 위한 예시적인 절차의 흐름도를 보여주는 도면이다.
도 8은 하나의 스토리지 장치에서 다른 스토리지 장치로 객체를 이동하기 위한 예시적인 절차의 흐름도를 보여주는 도면이다.
현재의 기술에서, 메모리 어드레싱 및 파일 스토리지 어드레싱은 서로 다르게 처리될 수 있다. 메모리 액세스는 일반적으로 CPU(Central Processing Unit)로 향하는 명령어들을 통해 달성될 수 있다. 반면에, 파일 스토리지 액세스는 일반적으로 파일 시스템으로 명령어들을 전송하는 것에 의해 달성될 수 있다. 메모리 액세스는 일반적으로 동기화 방식일 수 있지만, 반면에 파일 스토리지 액세스는 일반적으로 비동기화 방식일 수 있다. 게다가, 심지어 스토리지 장치들 사이에서도 서로 다를 수 있다. 다른 파일 스토리지 장치들은 데이터에 액세스하기 위해 서로 다른 모델들을 사용할 수 있다. 예를 들어, 솔리드 스테이트 장치들은 파일의 물리 주소를 사용하여 파일들에 액세스할 수 있는 반면, 하드 디스크 드라이브들은 파일이 저장된 섹터/앵글에 기초하여 파일들에 액세스할 수 있다.
저장될 데이터의 크기는 또한 적절할 수 있다. 메모리로부터 액세스되는 데이터는 상대적으로 작은 청크(chuck)들로 액세스될 수 있는 반면, 하드 디스크 드라이브들은 디스크의 크기에 때때로 의존하는 크기인 블록들 단위로 액세스될 수 있다. 이와 같은 요인들은 다른 장치들로부터 데이터를 액세스하기 위해 서로 다른 기술들이 사용되는 것을 야기한다.
UOI(Unified Object-based Interface)는 키-밸류 스토어와 유사한 유니폼 객체 지향 공간으로 메인 메모리 및 스토리지의 어드레싱 메커니즘들을 결합한다. UOI가 메모리 및 스토리지 모두의 어드레싱을 통합하기 때문에, 일반적으로 용어 "메모리" 및 "스토리지"는 스토리지의 특정 형태를 암시함이 없이, 데이터를 저장하기 위한 모든 방법들을 의미하는 것으로 의도되었다. 그러나 일부 컨텍스트에서, 이러한 용어들은 스토리지의 모든 형태들을 의미하지 않을 수도 있다. 모든 객체는 현재 데이터를 저장하고 있는 메모리/스토리지 장치로부터 밸류를 획득하기 위한 키로서 사용되는 유일하게 식별가능한 OID(Object ID)로 주어질 수 있다. OID들은 커널에 의해 관리될 수 있는, 글로벌 식별자 공간으로부터 추출될 수 있다. UOI 메커니즘은 유일한 OID를 프로그램에 의해 요청된 데이터에 액세스하기 위해 적절한 하드웨어 컨트롤러에 주어지는 장치 ID 및 어드레스를 포함하는 대응하는 튜플로 변환하는 객체 테이블들(OTB)로 불리는 매개 간접 테이블들을 사용한다.
OTB는 하드웨어에서의 페이지 테이블 메커니즘을 대체하고 그리고 객체 생성 및 접근에 대한 할당 및 이동 정책들을 결정하도록 운영 시스템에 노출될 수 있다. 운영 시스템은 또한 지속 장벽(persistence barrier)을 관리하고 그리고 데이터를 고속인 휘발성 메모리 또는 저속인 지속 메모리에 위치시키기 위해 소프트웨어 어플리케이션으로부터의 힌트들을 이용할 수 있고 그리고 데이터를 메모리 커밋 작업 상에서 이동시킬 수 있다. 유일한 OID 공간은 또한 새로운 객체를 새로운 OID들에 할당하고 그리고 그것들을 메모리 /스토리지 시스템의 자유 위치들(free locations)로 맵핑하는 커널 메모리 관리 유닛(MMU)에 의해 관리될 수 있다. 파일들, 데이터베이스 테이블들, 등과 같은 지속적인 객체들은 OTB의 룩업에 그것들을 해싱하는 것에 의해 키-공간으로 변환되는 유일하게 식별가능한 스트링 네임들(POID)을 제공할 수 있다. OTB에 대한 메타데이터는 장치들 사이에서 분산되고 그리고 더 빠른 룩업을 보장하기 위해 멀티플 레벨들을 가진다.
어플리케이션은 기본 장치로부터 객체들을 명시적으로 할당, 이동 및 삭제하기 위한 기능들을 제공하는 인터페이스를 직접적으로 통하거나, 또는 데이터 관리의 책임을 다루는 시스템 콜 인터페이스를 통하는 것 중 하나인 UOI를 통해 하드웨어와 상호작용할 수 있다. UOI 메커니즘은 또한 가비지 컬렉션, 보안, QoS(Quality of Service) 보장, 등과 같은 키 기능들을 지원하기 위한 런-타임 환경과 함께 사용될 수 있다.
UOI는 키-밸류 스토어와 유사한 유니폼 객체 지향 공간에 대한 메인 메모리 및 스토리지에 어드레싱 메커니즘을 결합한다. 객체는 소프트웨어에 의해 정의되는 논리 엔티티로서 정의될 있지만 예를 들어, java/C++ 표준에 의해 정의되는 전형적인 데이터 구조 기반 객체들에 제한되지는 않는다. 객체의 그래뉼래리티는 링크된 리스트(Linked-List)의 노드(Node) 또는 해시-테이블(Hash-Table)의 아이템(Item)과 같은 단순한 구조들에서 어레이(Arrays), 큐(Queues), 이진 트리(Binary Trees), 데이터베이스 테이블까지의 모든 방식들 또는 콜드 스토리지의 파일과 같은 집합 구조들로 변할 수 있다. 소프트웨어에 의해 정의되는 모든 객체는 메모리/스토리지의 객체를 찾기위한 키로써 사용되는 고유 식별자(OID)로 주어질 수 있다.
데이터 검색 프로세스의 중간 단계는 OID 및 (장치 ID, 어드레스)튜플 사이의 일대일 변환을 유지하는 OTB에 의해 처리될 수 있는 객체 ID 변환이다. 장치 ID는 객체를 현재 홀드하고 있는 DRAM, NVM, SSD, 또는 HDD 등일 수 있는 물리 장치(들)을 명시한다. 어드레스는 데이터에 액세스하기 위해 컨트롤러에 의해 사용되는 장치-특정 위치에 대응한다. OTB는 또한 크기, 지속 필요성, 보안성, 공유성, 데이터 중복 제거를 위한 데이터 해시 등의 형태로 각 객체에 대한 추가적인 메타데이터를 홀드할 수 있다.
도 1은 본 발명의 실시 예에 따라 객체들이 저장된 곳을 관리하기 위해 사용될 수 있는 OTB를 보여준다. 도 1에서, 객체 테이블(105)은 OID를 튜플들로 맵핑하는 데이터 구조를 보여준다. 도 1에서, 객체 테이블(105)은 OID들(110, 115, 및 120)을 튜플들(125, 130, 및 135)로 각각 맵핑하는 3개의 열로 도시되었다. 기술분야의 통상의 기술자는 객체 테이블(105)이 다른 개수의 열들로도 구성될 있음을 알 수 있을 것이다.
명령어(140)는 OID(428)에 할당되는, 새로운 객체의 생성을 보여준다. 할당 명령어가 실행되는 경우, 객체를 위한 공간이 장치(도 1에서 미도시) 상에 할당된다. 상술한 바와 같이, 이러한 할당은 커널에 의해 조작될 수 있다. OID(428)를 객체가 저장된 장치 ID 및 어드레스에 연관시키는, 열(row)이 객체 테이블(105)에 더해진다. 장치 ID 및 어드레스의 조합을 사용함으로 인해, 객체는 액세스될 수 있다. 상술한 바와 같이, 어플리케이션은 장치 하드웨어(예컨대, UOI를 통해), 또는 시스템 콜들을 통해 객체에 직접적으로 액세스할 수 있다.
명령어(145)는 OID(428)를 가지는 객체의 액세스를 보여준다. 명령어(145)에서, 데이터는 객체로부터 읽혀지지만, 기술분야에서 통상의 지식을 가진 자는 명령어들이 데이터를 기입하기 위해 객체에 용이하게 액세스 할 수 있음을 알 수 있을 것이다. 명령어(145)를 실행하면, 객체의 모든 액세스와 함께, 프로세스는 객체 위치를 찾고 그리고 스토리지로부터 데이터를 페치하기 위해 객체 테이블(105)에서 룩업을 수행하는 OID 상에 간접적인 로드를 수행할 수 있다. 명령어(145)가 단지 객체의 데이터 구조 내의 필드에 액세스하기 때문에, 오프셋(150)은 원하는 데이터가 시작되는 곳인 객체의 베이스 어드레스로부터 오프셋을 특정할 수 있다. 예시적으로, 오프셋(150)은 4 바이트인 것으로 도시되었다. 오프셋(150)은 객체로부터 단지 원하는 데이터를 액세스하기 위해, 튜플(135)로부터 추출된, 객체의 베이스 어드레스에 더해질 수 있다.
명령어(150)는 OID(428)를 가지는 객체의 삭제를 보여준다. 객체가 삭제될 것이기 때문에, 장치 상에서 객체를 위해 할당된 공간은 할당 해제(de-allocation)될 수 있고, 그리고 객체 테이블(105)의 열은 제거될 수 있다. 상술한 바와 같이, 이러한 할당 해제는 커널에 의해 처리될 수 있다.
상술한 설명에서, 객체 테이블에 저장된 튜플들은 객체에 액세스하기 위해 필요한 최소한의 정보로서, 장치 ID 및 어드레스를 저장하는 것으로 설명되었다. 그러나 튜플들이 추가 정보들을 저장하는 것 또한 가능하다. 예를 들어, 튜플들(125, 130, 및 135)은 3개의 엔트리들을 포함하는 것으로 도시되었다. 세번째 엔트리는 객체가 보안 방식으로 저장될 것인지 여부를 나타낼 수 있다. 전통적인 메모리 및 스토리지가 분리된 세계는 위협 프로그램들이 암호화된 스토리지를 언락(unlock)하기 위한 잠재적으로 유용한 정보를 검색하기 위해 암호화되지 않은 휘발성 메모리의 일부를 스누핑(snooping)할 수 있기 때문에 소프트웨어가 직접적으로 위협하기 매우 쉬웠다. 메모리 펜스(fence)들은 메모리 어드레스 공간의 부분들이 이용되는 것으로부터 보호하고, 그리고 보안 프로그램들이 이러한 펜스들을 이용하는 소프트웨어들을 다시쓰기 하도록 한다. 그러나 펜스 메커니즘은 여전히 소프트웨어 직접 위협(software-directed threat)들로부터 열려있다. 메모리 펜스들은 또한 스크래치패드 데이터 및 일시적인 할당들이 펜스화된 영역에 강요되기 때문에 매우 비효율적이다.
UOI 메커니즘과 함께, 소프트웨어는 객체 생성 동안 객체가 안전한지를 나타내는 인수(argument)를 공급하고, 그리고 따라서 커널은 객체를 펜스화된 영역에 할당할 수 있다. 안전한 객체들에 대한 소프트웨어 무의식 접근(software-oblivious approach)은 소프트웨어 직접 위협들이 펜스화된 어드레스 영역에 액세스하는 것을 방지하고, 그리고 하드웨어는 메모리의 펜스화된 공간을 조직하기 위한 매우 간단하고, 효율적인 방법을 제공할 수 있다.
튜플은 또한 UOI가 객체에 있는 데이터에 어떻게 액세스할지를 결정하는 것을 보조하는, 데이터가 안전한지 여부를 특정할 수 있다. 예를 들어, 상술한 바와 같이, 데이터는 펜스화된 어드레스 공간에 저장될 수 있다. 대안적으로, 데이터는 어떠한 암호화 알고리즘을 사용하여, 암호화된 방법으로 펜스화된 어드레스 공간의 외부에 저장될 수 있다. 예를 들어, 커널 또는 UOI는 데이터를 스토리지 장치에 쓰기 전에 암호화할 수 있고, 그리고 읽은 후에 데이터를 복호화할 수 있다. 스토리지 장치를 스누핑하는 어떠한 프로그램도 단지 암호화된 데이터 즉, 어떻게 데이터를 복호화하는지 암호화되지 않은 메모리에 표시가 없는 데이터만을 찾을 것이다. 그리고 보안 프로토콜의 관리가 어플리케이션으로부터 분리되기 때문에, (고가의)보안 스토리지가 안전하게 저장될 필요가 없는 데이터를 저장하는데 사용되는 것과 같은 우려가 없다.
데이터가 안전하지 여부를 특정하는 것에 더하여, 튜플들(125, 130, 및 135)은 어떻게 데이터를 보안화할지를 특정할 수 있다. 예를 들어, 민감하지만 매우 중요하지 않은 것으로 간주되는 데이터는 약한 암호화 알고리즘을 사용하여 보안화될 수 있고, 반면에 높은 민감도와 매우 중요한 데이터는 강한 암호화 알고리즘을 사용하여 암호화될 수 있다. 튜플들(125, 130, 및 135)은 특정 객체를 저장하는데 사용되는 특정한 암호화 알고리즘을 특정할 수 있다.
도 2는 튜플들(125, 130, 및 135)에 저장될 수 있는 메타데이터(205)의 일부 예시들을 보여준다. 다른 메타데이터는 객체의 크기(210), 객체의 지속성(215), 객체에 대한 안정성(220), 객체의 공유(225), 객체의 해시(해시들은 도 4를 참조하여 아래에서 더 논의된다), 및 액세스 카운터(230)를 포함할 수 있다. 여기에서, 객체의 지속성(215)은 어플리케이션이 동작하지 않는 경우에도 스토리지 장치에 객체가 계속 저장되어야 하는지를 나타낸다. 객체의 공유(225)는 객체가 객체를 생성하는 어플리케이션의 독점적인 사용을 위한 것인지 여부 또는 다른 어플리케이션/프로세스들과 공유될 수 있는지 여부를 나타낸다. 액세스 카운터(230)는 객체가 얼마나 액세스되었는지를 나타낸다. 게다가, 튜플이 메타데이터에 대한 튜플에 단지 하나의 추가적인 엔트리에만 한정되어야 할 이유가 없으며, 다른 메타데이터가 원하는 어떠한 조합으로도 튜플에 조합될 수 있다.
액세스 카운터(230)에 대한 더 자세한 설명을 위해, 액세스 카운터는 객체가 얼마나 자주 액세스되었는지를 반영할 수 있다. 액세스 카운터는 단순히 데이터 객체가 액세스된 횟수를 저장하거나, 또는 다른 데이터 객체들에 비해, 그 객체가 얼마나 자주 액세스되었는지를 저장할 수 있다. 액세스 카운터는 또한 다른 가능성들 중에서, 객체가 액세스된 마지막 시간의 표시를 저장할 수 있다. 데이터 객체의 액세스들을 추적하는 것에 의해, 시스템은 그 객체가 자주 액세스되는지를 결정할 수 있다. 만약 객체가 충분한 시간 또는 충분히 큰 주파수로 액세스된다면, 이러한 사실은 객체가 고속 데이터 스토리지(예컨대, SSD 보다는 DRAM에, 또는 HDD 보다는 SDD에)에 더 잘 저장될 수 있음을 암시한다. 반면에, 객체가 상대적으로 덜 자주 액세스된다면, 시스템은 객체를 더 느린 데이터 스토리지(예컨대, DRAM 보다는 SSD 또는 HDD에)에 저장하는 것이 더 나을 것이다. 따라서, 시스템은 언제(그리고 어떤 데이터를) 한 스토리지에서 다른 스토리지로 이동할지에 관한 결정들을 할 수 있다. 이동은 다른 스토리지 장치에 객체를 위한 새로운 공간을 할당하는 것과, 새로운 스토리지 장치의 그 공간에 데이터를 복사하는 것과, 원래의 스토리지 장치의 공간을 할당 해제하는 것과, 그리고 그 객체의 새로운 위치를 반영하기 위해 OTB의 튜플을 변경하는 것을 포함한다. 이동은 어플리케이션이 데이터가 이동되는 것을 인식하지 못하고 수행될 수 있다.
액세스 카운터(230)는 객체를 이동할지 여부를 결정하기 위해 문턱치들과 비교될 수 있다. 서로 다른 장치들은 서로 다른 문턱치들을 가진다. 액세스 카운터(230)가 증가함에 따라, 객체는 복수의 서로 다른 스토리지 장치들을 가로질러 이동될 수 있다. 게다가, 액세스 카운터(230)는 어느 한 방향으로 문턱치를 넘을 수 있다. 즉, 액세스 카운터(230)가 충분히 증가하는 경우, 객체는 더 빠르거나 또는 더 높은 우선권의 스토리지 장치로 이동될 수 있다. 대안적으로, 액세스 카운터(230)가 충분히 감소하는 경우, 객체는 더 느리거나 또는 더 낮은 우선권의 스토리지 장치로 이동될 수 있다. 여기에서, 용어 "우선권"은 스토리지 장치들을 랭크(rank)하기 위해 사용될 수 있는 모든 기준들을 의미할 수 있다.
UOI에 대한 설명으로 돌아가서, UOI 메커니즘은 소프트웨어를 특정한 하드웨어에 결부시키기 위해 너무 많은 계층들 또는 깊이에 노출시킬 필요 없이 소프트웨어 지능을 하드웨어에 제공할 수 있다. 하드웨어 컨트롤러는 UOI를 지속성 장벽(persistence barrier)과 같은, 하드웨어 조직에 관한 기초적인 세부사항들을 숨기기 위해 이용할 수 있다. 비록 데이터베이스들과 같은, 신뢰성이 중요한 많은 어플리케이션들이 데이터 무결성을 요구하지만, 대부분의 프로그램들은 DRAM 및 NVM 기술들을 사용하는 인-메모리 프로세싱(in-memory processing)을 사용하여 최적으로 가속될 수 있는 스크래치패드 및 읽기 전용 데이터를 이용한다. 예를 들어, 저비용 메모리와 유사한 성능을 제공하기 위해, NVM 기술은 핫 데이터를 캐시하기 위해 더 빠른 DRAM을 이용할 수 있다. UOI 메커니즘은 액세스 카운터(상술한 바와 같은)를 유지하고 그리고 콜드 객체들은 NVM에 유지하면서 더 핫한 객체들을 DRAM으로 이동하는 것에 의해 "핫" 및 "콜드" 객체들을 추적할 수 있다. 전체적으로 볼때, NVM 기법이 DRAM에 비해 정적인 에너지를 거의 소모하지 않기 때문에 더 에너지 효율적인 시스템을 야기할 수 있다.
상술한 도 1은 객체 액세스를 통합하기 위해 사용될 수 있는 데이터 구조를 보여준다. 도 3은 본 발명의 실시 예에 따른 데이터 구조를 사용하는 컴퓨터 시스템을 보여준다. 도 3에서, 컴퓨터 시스템(305)은 컴퓨터(310), 모니터(315), 키보드(320), 및 마우스(325)를 포함하는 것으로 도시되었다. 기술분야에서 통상의 지식을 가진 자는 다른 구성요소들이 컴퓨터 시스템(305)에 포함될 수 있음을 알 수 있을 것이다. 예를 들어, 프린터와 같은, 다른 입력/출력 장치들을 포함할 수 있다. 게다가, 컴퓨터 시스템(305)은 예를 들어 중앙 처리 유닛과 같은, 전통적인 내부 구성요소들(도 3에 미도시)을 포함할 수 있다. 비록 도 3에 도시되지 않았지만, 기술분야에서 통상의 지식을 가진 자는 컴퓨터 시스템(305)이 다른 컴퓨터 시스템들과 직접 또는 모든 타입의 네트워크(미도시)를 통해 상호작용할 수 있음을 알 수 있을 것이다. 결과적으로, 비록 도 3이 통상적인 데스크탑 컴퓨터로서의 컴퓨터 시스템(305)을 보여주지만, 기술분야에서 통상의 지식을 가진 자는 컴퓨터 시스템(305)이 예를 들어, 랩탑 컴퓨터, 타블렛 컴퓨터, PDA(personal digital assistant), 스마트 폰, 등을 포함하는 컴퓨터 시스템(305)에 본 명세서에서 도출되는 서비스들을 제공할 수 있는 어떠한 타입의 머신 또는 컴퓨팅 장치일 수 있음을 알 수 있을 것이다.
컴퓨터 시스템(305)은 메모리(330) 및 스토리지 장치들(335 및 340)을 포함할 수 있다. 예를 들어, 스토리지 장치(335)는 SSD로 도시되었고, 그리고 스토리지 장치(340)는 HDD로 도시되었다. 컴퓨터 시스템(305)은 어떠한 수의 스토리지 장치들을 포함할 수 있고, 그리고 원하는 어떠한 타입의 스토리지 장치들을 포함할 수 있다. 도 3은 단지 본 발명의 가능할 실시 예를 도시한다. 컴퓨터 시스템(305)은 또한 본 명세서에서 설명되는 것과 같은 데이터 객체들의 액세스를 관리하기 위해, 데이터 구조(105)를 포함할 수 있다.
상술한 바와 같이, 커널은 객체의 할당 및 할당 해제를 처리할 수 있다. 그러나 커널이 객체들을 할당 및 할당 해제하도록 하기 위한 새로운 명령어들을 사용하기 위해 모든 어플리케이션들이 다시 쓰여지는 것 대신에, 커널이 어떤 더 오래된 스타일(older-style)의 할당/할당 해제 명령들을 가로챌 수 있다. 예를 들어 malloc()은 메모리를 할당하는데 종종 사용된다. 커널은 어떠한 malloc() 명령들을 가로채고 그리고 객체 할당 명령들을 그 자리에 대체할 수 있다. 유사하게, 스토리지 장치에서 파일들을 열기 위해 사용되는 어떠한 fopen() 명령들은 가로채어질 수 있고 그리고 객체 오픈 명령들로 대체될 수 있다. 다른 무엇보다도, 할당 해제 및 파일 클로즈 명령들은 유사하게 가로채어질 수 있다.
도 1은 본 발명의 하나의 실시 예를 보여준다. 그러나 도 1에서 도시된 데이터구조는 스토리지의 객체들을 관리하기 위해 사용될 수 있는 유일한 데이터 구조는 아니다. 도 4는 다른 데이터 구조를 가지는 본 발명의 다른 실시 예를 보여준다.
도 4에서, 테이블(405)은 스토리지의 객체들과 연관되는 정보를 제공한다. 그러나 OID를 튜플에 맵핑하는 대신에, 테이블(405)은 OID를 해시 값에 맵핑한다. 이러한 해시 값은 예를 들어, 객체에 저장된 데이터의 해시일 수 있고, 그리고 범용 해시 알고리즘 또는 CRC(cyclic redundancy check)와 같은, 어떤 원하는 해시 알고리즘을 사용하여 생성될 수 있다. OID에 대응하는 해시 값이 결정되기만 하면, 해시 값을 장치 ID와 객체를 저장하는 어드레스를 포함하는 튜플에 맵핑하는 테이블(410)이 액세스될 수 있다.
테이블들(405 및 410)을 사용하는 것은 객체에 대한 데이터에 액세스하는 덜 효율적인 방법으로 보일 것이다. 2개의 테이블들은 데이터를 저장하기 위해 필요로하지만, 전체적인 스토리지 요청들 및 실행 시간을 증가시킨다. 그러나 도 4의 데이터 구조는 스토리지로부터 중복되는 데이터를 식별 및 제거할 수 있는 이점을 제공한다.
예를 들어, 도 4에 도시된 것과 같은, 명령어(140)를 다시 고려하자. 메모리 할당을 수행하기 위해, 시스템은 객체에 저장된 데이터의 해시를 계산하는 것이 필요하다. 이 해시는 테이블(405)의 타겟 데이터일 수 있고, 그리고 테이블(410)에 대한 검색 키일 수 있다. 그러나 테이블(405)을 확인하면, IOD 428(415)과 연관된 해시는 OID 462(420)와 연관된 해시와 동일하다. 달리 말하면, 해시 값들(425 및 430)이 동일하다. 이러한 2개의 객체는 동일한 데이터를 저장하기 때문에, 그것들은 동일한 객체를 나타낸다. 그러나 시스템이 이미 OID 462를 위해 스토리지를 할당하였기 때문에, OID 428을 가지는 객체를 위해 스토리지를 할당할 필요가 없다. 시스템은 OID 428을 가지는 객체로부터의 데이터를 위한 요청들을 OID 462를 가지는 객체와 마찬가지로 맵핑할 수 있다. 물론, 이와 같은 시스템은 데이터가 변경되지 않았거나, 또는 하나의 객체의 데이터의 변경이 다른 객체의 데이터를 필연적으로 변경할 수 있다고 추정한다.
불필요한 객체들의 확산을 방지하는 것에 더하여, 도 4에서 도시된 데이터 구조는 어플리케이션이 차지하는 공간을 작게 하기 위한 중복 제거를 수행하기 위한 하드웨어 컨트롤을 허용할 수 있다. 해시 값들은 그것들의 데이터에 의해 인덱스 객체들을 반전하고 그리고 더 쉽게 객체들을 공유하는데 사용될 수 있다. 중복 제거는 용량에 민감한 어플리케이션들 및 주로 큰 작업 세트 크기들로 메모리에 바인딩되는 빅 데이터 분석의 성능을 개선할 수 있다. 이러한 접근은 객체가 생성되는 시점에서 중복을 확인하는 것보다, 데이터 중복 제거가 시스템 상에서 가끔씩 수행되는 경우에 유용하다. 예를 들어, 스토리지는 데이터가 알려지기 전에 객체에 대해 할당될 것이다. 이 경우 객체에 대한 해시 값은 객체가 생성되는 시점에서 효율적으로 계산될 수 없다. 해시 값들의 이후의 검토는 중복들인 객체들을 식별하고 그리고 중복들을 제거할 수 있다.
도 4가 객체들에 있는 데이터의 해시들을 포함하도록 객체 테이블을 조직하는 하나의 가능한 방법을 나타내는 것임을 주목할 필요가 있다. 그러나 기술분야에서 통상의 지식을 가진 자는 객체 테이블이 조직될 수 있는 다른 방법들도 있음을 알 수 있을 것이다. 예를 들어, 도 1의 테이블(105)은 해시 데이터를 저장하는 추가적인 칼럼을 포함하도록 간단하게 수정될 수 있다. 그와 같은 방법에서, 하나의 룩업은 튜플 및 해시 데이터를 검색할 수 있다. 데이터를 조직할 수 있는 본 발명에 따른 다른 실시 예들 또한 가능할 것이다.
도 5a 내지 5c는 도 3의 컴퓨터 시스템의 객체 지향 스토리지를 사용하기 위한 예시적인 절차의 흐름도를 보여준다. 도 5a의 블록(505)에서, 시스템은 객체를 위해 스토리지를 할당하기 위한 요청을 수신할 수 있다. 블록(510)에서, 시스템은 OTB(테이블(105) 또는 테이블(405)과 같은)가 객체에 있는 데이터의 해시를 이미 저장하였는지를 결정할 수 있다. 이 블록은 시스템이 데이터의 해시를 특별히 찾는 것보다, 엔트리가 객체에 대한 객체 테이블에 존재하는지를 결정하는 것으로 일반화될 수 있다. 그러나 객체에 저장된 데이터의 해시를 검색하는 것에 의해, 시스템은 리던던트 데이터 객체를 생성하는 것을 방지할 수 있다. 시스템이 객체에 대한 객체 테이블에서 엔트리를 찾지 못한다면, 블록(515)에서 시스템은 같은 스토리지(메모리, NVM, SSD, HDD 등)에 객체를 위한 공간을 할당할 수 있다. 블록(520)에서, 시스템은 객체에 대한 OID, 데이터가 저장된 곳의 장치 ID, 및 데이터가 발견될 수 있는 장치 상의 어드레스를 수신할 수 있다. 상술한 바와 같이, OTB에 저장된 튜플은 장치 ID 및 어드레스보다 더 많은 정보를 포함할 수 있다. 추가적인 메타데이터는 일반적으로 어플리케이션이 스토리지를 요청하는 것으로부터 나올 수 있지만, 다른 소스들로부터도 나올 수 있다. 블록(525)에서, 시스템은 객체가 저장된 곳을 반영하기 위해 엔트리들을 OTB에 추가할 수 있다.
블록(510)에서, 시스템이 객체를 이미 저장한 것으로 결정하였다면, 블록들(515, 520, 및 525)은 건너뛸 수 있다.
블록(530, 도 5b)에서, 시스템은 객체로부터 데이터를 액세스하기 위한 요청을 수신할 수 있다. 상술한 바와 같이, 액세스는 일반성을 잃지 않고(without any loss of generality), 읽기 액세스 또는 쓰기 액세스일 수 있다. 블록(535)에서, 시스템은 객체 ID를 객체가 저장된 곳의 장치 ID 및 어드레스를 식별하는 튜플로 변환할 수 있다. 블록(540)에서, 객체에 대한 데이터는 적당한 장치로부터 액세스될 수 있다.
블록(545)에서, 시스템은 객체의 또 다른 액세스를 반영하기 위해 액세스 카운터를 증가시킬 수 있다. 도 2를 참조하여 상술한 바와 같이, 비록 액세스 카운터가 시스템에 의해 다른 곳에도 저장될 수 있지만, 액세스 카운터는 튜플 내의 메타데이터로서 저장될 수 있다. 블록(550)에서, 시스템은 객체의 액세스들의 수가 문턱치를 넘었는지를 결정할 수 있다. 만약 그렇다면, 블록(555)에서 시스템은 데이터를 적절한 대체적인 스토리지 장치로 이동시킬 수 있다.
데이터가 이동하였는지에 관계없이, 블록(560, 도 5c)에서, 시스템은 객체에 대한 스토리지의 할당을 해제하기 위한 요청을 수신할 수 있다. 블록(565)에서, 시스템은 객체에 대한 스토리지의 할당을 해제할 수 있다. 결국, 블록(570)에서, 시스템은 객체 스토리지와 연관되는 OTB로부터 엔트리들을 제거할 수 있다.
도 5a 내지 5c(및 아래의 다른 흐름도에서), 본 발명의 일 실시 예가 도시된다. 그러나 기술분야에서 통상의 지식을 가진 자는 블록들의 순서를 변경하거나, 블록들을 생략하거나, 또는 도면에 도시되지 않은 링크들을 포함하는 것에 의해 가능할 수 있는 본 발명에 따른 다른 실시 예들을 알 수 있을 것이다. 예를 들어, 블록들(550 및 555)가 수행된 후, 시스템은 객체에 액세스하기 위한 또 다른 요청들을 처리하기 위해 블록(530)으로 돌아갈 수 있다. 흐름도의 이와 같은 모든 변경들은 본 명세서에서 명시적으로 설명되었는지와 관계없이 본 발명의 실시 예로 간주되어야 한다.
도 6은 도 1 내지 4의 데이터 구조와 함께 사용될 수 있는 예시적인 절차의 흐름도를 보여준다. 이 흐름도는 도 5a의 블록(525)과 일반적으로 대응된다. 블록(605)에서, 시스템은 객체 식별자를 객체가 저장된 곳을 식별하는 튜플에 연관시키는 객체 테이블에 엔트리를 추가할 수 있다. 대안적으로, 블록(610)에서, 시스템은 객체에 저장된 데이터를 해시(hash)할 수 있다. 블록(615)에서, 시스템은 객체 ID를 생성된 해시에 연관시킬 수 있고, 그리고 블록(620)에서 시스템은 생성된 해시를 객체가 저장된 곳을 식별하는 튜플에 연관시킬 수 있다.
도 7은 본 발명의 실시 예에 따른, 객체를 위해 스토리지를 할당하기 위한 예시적인 절차의 흐름도를 보여준다. 도 7에서, 도 5a의 블록(505)은 어플리케이션에 의해 제공되는 메타데이터에 기초하여 객체를 위해 스토리지를 할당하기 위한 요청을 수신하도록 블록(705)에서와 같이 수정될 수 있다. 그 다음, 도 5a의 블록(515)은 메타데이터에 기초하여 스토리지를 할당하도록 블록(710)에서와 같이 수정될 수 있다.
메타데이터가 어떻게 객체를 위한 스토리지의 할당에 영향을 주는지의 예시로서, 어플리케이션이 객체가 보안 방식으로 저장되어야 한다는 것을 명시할 수 있다. 어플리케이션이 객체가 안전하게 저장되어야 함을 요청한다면, 시스템은 몇몇 방법으로 데이터를 암호화하거나 또는 스토리지 장치의 펜스화된 영역에 객체를 위한 스토리지를 할당할 수 있다.
메타데이터가 어떻게 객체를 위한 스토리지 할당에 영항을 주는지의 또 다른 예시는 어플리케이션이 객체가 특정한 장치 상에 저장되도록 요청할 수 있는 것이다. 어플리케이션이 특정한 장치의 스토리지를 요청한다면, 시스템은 그 요청을 이행하여야 하고 그리고 또 다른 장치에 스토리지를 할당하지 않거나, 시스템이 요청된 장치로부터 데이터를 이동시키지 않아야 한다.
어플리케이션이 스토리지의 할당 요청을 만족하는 것이 불가능한 메타데이터를 명시하는 것 또한 가능하다. 예를 들어, 어플리케이션은 DRAM에 의해서만 만족될 수 있는 최소한의 레이턴시를 가지고 장치 상에 저장될 객체를 요청할 수 있지만, 불휘발성 스토리지 장치에 저장될 객체를 요청할 수도 있다. DRAM은 최소한의 레이턴시를 만족할 수 있는 유일한 장치이지만 휘발성 스토리지이기 때문에, 그 요청은 만족될 수 없다. 이 경우, 시스템은 스토리지를 어떻게 할당할지에 대한 선택을 할 수 있다. 또는 시스템은 그 요청을 거절할 수 있고 그리고 할당 요청을 중지할 수 있다. 예를 들어, 시스템은 요청이 만족될 때까지 표시된 순서로, 랜덤으로 메타데이터 조건들을 제거하거나, 또는 만족될 수 있는 요청을 남겨두기 위해 제거될 필요가 있는 최소한의 수의 조건들을 결정하는 것에 의해 스토리지를 어떻게 할당할지에 대한 선택을 할 수 있다.
도 8은 한 스토리지 장치에서 다른 스토리지 장치로 객체를 이동시키는 예시적인 절차의 흐름도를 보여준다. 이 흐름도는 일반적으로 도 5b의 블록(555)에 대응한다. 도 8의 블록(805)에서, 시스템은 이동될 객체를 위해 새로운 스토리지를 할당할 수 있다. 블록(810)에서, 시스템은 이전 스토리지에서 객체를 위한 새로운 스토리지로 객체를 복사할 수 있다. 블록(815)에서, 시스템은 객체를 위해 사용된 이전 스토리지를 릴리즈(release)할 수 있다. 블록(820)에서, 시스템은 객체를 위한 새로운 스토리지 위치를 반영하기 위해 OTB의 튜플을 업데이트할 수 있다.
도 8의 흐름도는 객체가 이동되는 저장 장치의 성능 특성을 고려하지 않고 동작하는 것을 보여준다. 객체가 예를 들어, DRAM에서 SSD로, 또는 HDD에서 DRAM으로 이동하든지, 흐름도의 단계들은 동일하다.
본 발명에 따른 실시 예는 제한 없이 아래의 서술로 확장될 수 있다.
본 발명에 따른 실시 예는 메모리 관리 장치를 포함한다. 메모리 관리 장치는 메모리 및 메모리에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자와 장치 식별자 및 장치 상의 위치를 포함하는 튜플을 포함한다.
본 발명에 따른 실시 예는 메모리 관리 장치를 포함한다. 메모리 관리 장치는 메모리 및 메모리에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 장치 식별자, 장치 상의 위치, 및 메타데이터를 포함하는 튜플을 포함한다.
본 발명에 따른 실시 예는 메모리 관리 장치를 포함한다. 메모리 관리 장치는 메모리 및 메모리에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 장치 식별자, 장치 상의 위치, 및 메타 데이터를 포함하는 튜플을 포함한다. 메타데이터는 객체의 크기, 객체의 지속성, 객체에 대한 보안, 객체에 대한 공유, 객체에 대한 해시, 및 액세스 카운터를 포함하는 집합에서 추출된다.
본 발명에 따른 실시 예는 메모리 관리 장치를 포함한다. 메모리 관리 장치는 메모리 및 메모리에 저장된 데이터 구조, 및 제 2 데이터 구조를 포함한다. 데이터 구조는 해시를 포함하는 객체의 식별자 및 장치 식별자 및 장치 상의 위치를 포함하는 튜플을 포함한다. 제 2 데이터 구조는 객체의 제 2 식별자 및 해시를 포함한다.
본 발명에 따른 실시 예는 시스템을 포함한다. 시스템은 컴퓨터, 컴퓨터와 연결되는 제 1 저장 장치, 컴퓨터와 연결되는 제 2 저장 장치, 및 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 제 1 저장 장치 및 제 2 저장 장치 중 하나에 대한 장치 식별자 및 장치 상의 위치를 포함하는 튜플을 포함한다.
본 발명에 따른 실시 예는 시스템을 포함한다. 시스템은 컴퓨터, 컴퓨터와 연결되는 제 1 저장 장치, 컴퓨터와 연결되는 제 2 저장 장치, 및 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 제 1 저장 장치 및 제 2 저장 장치 중 하나에 대한 장치 식별자와 장치 상의 위치를 포함하는 튜플, 및 메타데이터를 포함한다.
본 발명에 따른 실시 예는 시스템을 포함한다. 시스템은 컴퓨터, 컴퓨터와 연결되는 제 1 저장 장치, 컴퓨터와 연결되는 제 2 저장 장치, 및 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 제 1 저장 장치 및 제 2 저장 장치 중 하나에 대한 장치 식별자와 장치 상의 위치를 포함하는 튜플, 및 메타데이터를 포함한다. 메타데이터는 객체의 크기, 객체의 지속성, 객체에 대한 보안, 객체에 대한 공유, 객체에 대한 해시, 및 액세스 카운터를 포함하는 집합에서 추출된다.
본 발명에 따른 실시 예는 시스템을 포함한다. 시스템은 컴퓨터, 컴퓨터와 연결되는 제 1 저장 장치, 컴퓨터와 연결되는 제 2 저장 장치, 및 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 제 1 저장 장치 및 제 2 저장 장치 중 하나에 대한 장치 식별자와 장치 상의 위치를 포함하는 튜플, 및 컴퓨터와 연결되는 스토리지에 저장된 제 2 데이터 구조를 포함한다. 제 2 데이터 구조는 객체의 제 2 식별자 및 해시를 포함한다.
본 발명에 따른 실시 예는 시스템을 포함한다. 시스템은 커널을 실행할 수 있는 프로세스를 포함하는 컴퓨터, 컴퓨터와 연결되는 제 1 저장 장치, 컴퓨터와 연결되는 제 2 저장 장치, 및 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 제 1 저장 장치 및 제 2 저장 장치 중 하나에 대한 장치 식별자와 장치 상의 위치를 포함하는 튜플을 포함하고, 커널은 제 2 저장 장치 및 제 2 저장 장치로부터의 객체를 위한 메모리를 할당하도록 동작한다.
본 발명에 따른 실시 예는 시스템을 포함한다. 시스템은 커널을 실행할 수 있는 프로세스를 포함하는 컴퓨터, 컴퓨터와 연결되는 제 1 저장 장치, 컴퓨터와 연결되는 제 2 저장 장치, 및 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 제 1 저장 장치 및 제 2 저장 장치 중 하나에 대한 장치 식별자와 장치 상의 위치를 포함하는 튜플, 및 액세스 카운터를 포함하고, 커널은 제 1 저장 장치 및 제 2 저장 장치로부터의 객체를 위한 메모리를 할당하도록 동작하고 그리고 커널은 액세스 카운터가 문턱치를 넘는 경우 제 1 저장 장치에서 제 2 저장 장치로 객체를 이동시키도록 동작한다.
본 발명에 따른 실시 예는 시스템을 포함한다. 시스템은 커널을 실행할 수 있는 프로세스를 포함하는 컴퓨터, 컴퓨터와 연결되고 보안 영역을 포함하는 제 1 저장 장치, 컴퓨터와 연결되는 제 2 저장 장치, 및 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조를 포함한다. 데이터 구조는 객체의 식별자 및 제 1 저장 장치 및 제 2 저장 장치 중 하나에 대한 장치 식별자와 장치 상의 위치를 포함하는 튜플, 및 액세스 카운터를 포함하고, 커널은 제 1 저장 장치 및 제 2 저장 장치로부터의 객체를 위한 메모리를 할당하도록 동작하고 그리고 커널은 객체가 안전한 것으로 고려되면 제 1 저장 장치의 보안 영역으로부터 스토리지를 할당하도록 동작한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 데이터를 액세스하기 위한 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 객체의 식별자 및 장치 상의 위치를 사용하여 데이터를 액세스하는 단계를 포함한다. 여기에서, 요청은 객체의 식별자를 포함하고, 튜플은 장치의 식별자 및 장치 상의 위치를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 장치의 식별자를 수신하는 단계, 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터를 액세스하기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 해시를 생성하기 위해 객체에 대한 데이터를 해싱하는 단계, 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 객체의 식별자를 해시에 연관시키는 해시 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터를 액세스하기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터를 액세스하는 단계를 포함한다. 여기에서, 튜플은 장치의 식별자, 장치 상의 위치, 및 해시를 포함한다. 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 해시를 생성하기 위해 객체에 대한 데이터를 해싱하는 단계, 객체 테이블이 이미 포함하고 있는지를 확인하기 위해 객체 테이블을 확인하는 단계, 만약 객체 테이블이 이미 해시를 포함하고 있다면, 객체에 대한 메모리를 할당하도록 커널을 요청하지 않는 단계, 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 객체의 식별자를 해시에 연관시키는 해시 테이블에 엔트리를 추가하는 단계, 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터에 액세스하기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 튜플은 장치의 식별자, 장치 상의 위치, 및 해시를 포함하고, 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 메타 데이터에 따라 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 객체의 식별자를 커널로부터 수신하는 단계, 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터를 액세스기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 요청은 객체에 적합한 메타데이터를 포함하고, 튜플은 장치의 식별자 및 장치 상의 위치를 포함하고, 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 메타 데이터에 따라 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 객체의 식별자를 커널로부터 수신하는 단계, 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터를 액세스기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 요청은 객체에 적합한 메타데이터를 포함하고, 튜플은 장치의 식별자, 장치 상의 위치, 및 메타데이터를 포함하고, 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 메타 데이터에 따라 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 객체의 식별자를 커널로부터 수신하는 단계, 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터를 액세스기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 요청은 객체에 적합한 메타데이터를 포함하고, 메타 데이터는 객체의 크기, 객체의 지속성, 객체에 대한 보안, 객체에 대한 공유, 객체에 대한 해시, 및 액세스 카운터를 포함하는 집합에서 추출되고, 튜플은 장치의 식별자 및 장치 상의 위치를 포함하고, 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 장치 상의 보안 위치에 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 객체의 식별자를 커널로부터 수신하는 단계, 객체의 식별자를 튜플과 연관시키는 객체 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터를 액세스하기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 요청은 객체가 안전한지를 명시하고, 튜플은 장치의 식별자, 장치 상의 위치, 및 객체가 안전하지를 나타내는 표시자(indicator)를 포함하고, 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 보안 프로세스를 사용하여 장치 상의 보안 위치에 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계, 객체에 대한 데이터를 액세스하기 위한 제 2 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 요청은 객체가 안전한지를 명시하고 그리고 보안 프로세스의 표시자를 명시한다. 튜플은 장치의 식별자, 장치 상의 위치, 및 객체가 안전한지의 표시자를 포함하고 요청은 객체의 식별자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 데이터에 액세스하기 위한 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계, 객체에 대한 메모리의 할당 해제를 요청하는 제 3 요청을 수신하는 단계, 객체에 대한 메모리의 할당 해제를 위해 커널을 요청하는 단계, 및 객체의 식별자를 튜플에 연관시키는 객체 테이블에서 엔트리를 제거하는 단계를 포함한다. 여기에서, 요청은 객체의 식별자를 포함하고, 튜플은 장치의 식별자 및 장치 상의 위치를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 데이터에 액세스하기 위한 요청을 프로세서가 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계, 액세스 카운터를 증가시키는 단계, 액세스 카운터가 문턱치를 넘는 경우 제 2 장치에 객체에 대한 메모리를 할당하도록 커널에 요청하는 단계, 제 1 장치에서 제 2 장치로 데이터를 이동시키는 단계, 장치에서 객체에 대한 메모리를 릴리즈하는 단계, 및 제 2 장치 및 제 2 장치 상의 제 2 위치와 객체 식별자를 연관시키기 위해 객체 테이블에 있는 튜플을 업데이트하는 단계를 포함한다. 여기에서, 요청은 객체의 식별자를 포함하고, 튜플은 장치의 식별자, 장치 상의 위치, 및 액세스 카운터를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 데이터를 액세스하기 위한 요청을 프로세서에서 수신하는 단계, 객체 테이블을 사용하는 단계, 객체의 식별자를 튜플로 변환하는 단계, 및 장치의 식별자 및 장치 상의 위치를 사용하여 데이터에 액세스하는 단계를 포함한다. 여기에서, 요청은 글로벌 식별자 공간으로부터 추출된 객체의 고유 식별자를 포함하고, 튜플은 장치의 식별자 및 장치 상의 위치를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 객체의 식별자를 커널로부터 수신하는 단계, 및 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 튜플은 장치의 식별자 및 장치 상의 위치를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 해시를 생성하기 위해 객체에 있는 데이터를 해싱하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 객체의 식별자를 해시와 연관시키는 해시 테이블에 엔트리를 추가하는 단계, 및 객체의 식별자를 튜플과 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 튜플은 해시, 장치의 식별자 및 장치 상의 위치를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 해시를 생성하기 위해 객체에 있는 데이터를 해싱하는 단계, 객체 테이블이 이미 해시를 포함하고 있는지를 확인하기 위해 객체 테이블을 확인하는 단계, 만약 객체 테이블이 이미 해시를 포함하고 있다면, 객체에 대한 메모리를 할당하기 위해 커널을 요청하지 않는 단계, 객체의 식별자를 커널로부터 수신하는 단계, 객체의 식별자를 해시와 연관시키는 해시 테이블에 엔트리를 추가하는 단계, 및 객체의 식별자를 튜플과 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 튜플은 해시, 장치의 식별자 및 장치 상의 위치를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 메타데이터에 따라 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 및 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 요청은 객체에 적합한 메타데이터를 포함하고, 튜플은 장치의 식별자 및 장치 상의 위치를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 메타데이터에 따라 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 및 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 요청은 객체에 적합한 메타데이터를 포함하고, 튜플은 장치의 식별자, 장치 상의 위치, 및 메타데이터를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 메타데이터에 따라 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 및 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 요청은 객체에 적합한 메타데이터를 포함하고, 튜플은 장치의 식별자, 장치 상의 위치, 및 메타데이터를 포함한다. 메타데이터는 객체의 크기 객체의 지속성, 객체에 대한 보안성, 객체에 대한 공유성, 객체에 대한 해시, 및 액세스 카운터를 포함하는 집합으로부터 추출된다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 장치 상의 보안 위치에 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 요청은 객체가 안전한지를 명시하고, 튜플은 장치의 식별자, 장치 상의 위치, 및 객체가 안전한지를 나타내는 표시자를 포함한다.
본 발명에 따른 실시 예는 방법을 포함한다. 방법은 객체에 대한 메모리를 할당하기 위한 요청을 수신하는 단계, 보안 프로세스를 사용하여 장치 상의 보안 위치에 객체에 대한 메모리를 할당하기 위해 커널을 요청하는 단계, 커널로부터 객체의 식별자를 수신하는 단계, 및 객체의 식별자를 튜플에 연관시키는 객체 테이블에 엔트리를 추가하는 단계를 포함한다. 여기에서, 요청은 객체가 안전한지를 명시하고 그리고 보안 프로세스의 표시자를 명시한다. 튜플은 장치의 식별자, 장치 상의 위치, 및 객체가 안전한지를 나타내는 표시자를 포함한다.
아래의 논의는 본 발명에 다른 특정 측면들이 구현될 수 있는 적절한 머신(machine)의 간단하고 일반적인 설명을 제공하기 위한 의도이다. 일반적으로, 머신은 프로세서, 예를 들어 RAM(Random Access Memory), ROM(Read-Only Memory), 또는 다른 상태 보존 매체와 같은 메모리, 저장 장치, 비디오 인터페이스, 및 입출력 인터페이스 단자들과 연결되는 시스템 버스를 포함한다. 머신은 예컨대 키보드, 마우스 등과 같은 통상적인 입력 장치들뿐만 아니라 다른 머신으로부터 수신된 명령, 가상 현실 환경과의 상호작용, 생체 피드백, 또는 다른 입력 신호에 의해서도 적어도 부분적으로 제어될 수 있다. 본 명세서에서 사용된 용어 "머신"은 단일 머신, 또는 통신가능하게 연결된 머신들 또는 서로 동작가능한 장치들의 시스템을 광범위하게 포함할 의도로 사용되었다. 머신들은 예시적으로 퍼스널 컴퓨터, 워크스테이션, 서버, 포터블 컴퓨터, 핸드헬드 장치, 전화기, 타블렛, 등과 같은 컴퓨팅 장치뿐만 아니라 개인용 또는 대중 교통 수단 예컨대, 자동차, 기차, 택시 등과 같은 운송 장치들을 포함할 수도 있다.
머신은 프로그램 가능한 또는 프로그램 불가능한 로직 장치 또는 어레이, ASIC(Application Specific Integrated Circuit), 임베디드 컴퓨터, 스마트 카드 등과 같은 임베디드 컨트롤러를 포함할 수 있다. 머신은 하나 이상의 원격 머신들과 연결되기 위해 네트워크 인터페이스, 모뎀, 또는 다른 통신 가능한 연결들과 같은 하나 이상의 연결들을 이용할 수 있다. 머신들은 인트라넷, 인터넷, LAN(Local Area Network), WAN(Wide Area Network), 등과 같은 물리 및/또는 논리 네트워크의 방식으로 서로 연결될 수 있다. 기술분야에서 통상의 지식을 가진 자는 네트워크 통신이 RF(Radio Frequency), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 810.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 및/또는 무선 단거리 또는 장거리 반송파 및 프로토콜을 이용할 수 있음을 알 수 있을 것이다.
발명의 개념은 머신에 의해 액세스되는 경우 작업들을 수행하거나 또는 추상 데이터 타입(abstract data type) 또는 로우-레벨 하드웨어 컨텍스트를 정의하는 머신에서의 결과인 기능, 절차, 데이터 구조, 어플리케이션 프로그램, 등을 포함하는 연관 데이터와 함께 또는 이를 참조하는 것에 의해 설명될 수 있다. 연관 데이터는 예를 들어, 휘발성 및/또는 불휘발성 메모리, 예컨대, RAM, ROM, 등에 저장되거나 또는 다른 저장 장치들 및 하드-드라이브, 플로피-디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 스토리지, 등을 포함하는 그것들의 관련 저장 매체에 저장될 수 있다. 관련 데이터는 물리 및/또는 논리 네트워크, 패킷의 형태, 직렬 데이터, 병렬 데이터, 전파 신호(propagated signals), 등을 포함하는 전송 환경을 통해 전달될 수 있거나, 또는 압축된 또는 암호화된 포맷으로 사용될 수 있다. 연관 데이터는 분산 환경, 및 머신 액세스를 위해 국지적으로 및/또는 원격으로 저장된 형태로 사용될 수 있다.
도시된 실시 예들을 참조하여 발명의 개념의 원리를 설명 및 도시하였지만, 도시된 실시 예들은 그와 같은 원리들을 벗어나지 않고 배열 및 세목이 수정될 수 있다. 그리고, 비록 상술한 논의는 특정한 실시 예에 초점이 맞추어져 있지만, 다른 구성들이 고려될 수 있다. 특히, "일 실시 예에서"와 같은 표현 또는 유사한 것이 본 명세서에서 사용되었지만, 이러한 구절은 가능한 실시 예를 일반적으로 참고하기 위한 의미이고, 그리고 발명의 컨셉을 특정한 실시 예의 구성들로 한정하기 위한 것은 아니다. 본 명세서에서 사용된 것과 같은, 이러한 용어들은 다른 실시 예들로 결합될 수 있는 동일하거나 또는 다른 실시 예들을 참고할 수 있다.
결과적으로, 본 명세서에서 설명된 실시 예들에 대한 폭넓은 치환의 관점에서, 본 상세한 설명 및 첨부된 도면들은 단지 설명적인 의도이고, 그리고 발명의 컨셉의 범위를 제한하기 위한 것으로 받아들여져서는 안된다. 따라서, 본 발명의 컨셉으로서 청구하는 것은 아래의 청구항들 및 그것들의 균등물의 범위 내에서 도출되는 모든 변형들이다.
105: 데이터 구조 125, 130, 135: 튜플
205: 메타데이터 305: 컴퓨터 시스템
310: 컴퓨터 315: 모니터
320: 키보드 325: 마우스
330: 메모리 335: SSD
340: HDD

Claims (10)

  1. 메모리 관리 장치에 있어서,
    메모리;
    상기 메모리에 저장된 데이터 구조; 및
    제2 데이터 구조를 포함하되,
    상기 데이터 구조는,
    객체의 식별자; 및
    물리 장치의 장치의 식별자 및 상기 물리 장치의 위치를 포함하는 튜플(tuple)을 포함하고,
    상기 객체의 상기 식별자는 해시(hash)이고,
    상기 제2 데이터 구조는,
    상기 객체의 제2 식별자; 및
    상기 해시를 포함하고,
    상기 객체는 적어도 하나의 휘발성 스토리지 장치 및 적어도 하나의 불휘발성 스토리지 장치를 포함하는 복수의 물리 장치들 중 하나에 저장되고,
    상기 제2 데이터 구조는 상기 객체의 상기 제2 식별자를 상기 해시에 매핑하고, 상기 데이터 구조는 상기 객체에 액세스하도록 상기 해시를 상기 튜플에 매핑하고,
    상기 객체에 대한 데이터는 상기 객체의 상기 제2 식별자를 사용하여 어플리케이션 또는 운영 시스템을 대신하여 액세스될 수 있고,
    상기 메모리 관리 장치는 상기 객체의 상기 제2 식별자, 상기 데이터 구조 및 상기 제2 데이터 구조를 사용하여 상기 튜플 내의 상기 물리 장치의 상기 식별자 및 상기 물리 장치의 상기 위치를 결정하는 메모리 관리 장치.
  2. 제 1 항에 있어서,
    상기 튜플은 메타데이터를 더 포함하되,
    상기 메타데이터는 상기 객체의 보안 및 상기 객체의 공유를 포함하는 집합에서 추출되는 메모리 관리 장치.
  3. 컴퓨터;
    상기 컴퓨터와 연결되는 제 1 물리 스토리지 장치;
    상기 컴퓨터와 연결되는 제 2 물리 스토리지 장치;
    상기 컴퓨터와 연결되는 스토리지에 저장된 데이터 구조; 및
    상기 컴퓨터와 연결되는 스토리지에 저장된 제2 데이터 구조를 포함하고,
    상기 데이터 구조는,
    객체의 식별자; 및
    상기 제 1 물리 스토리지 장치 및 상기 제 2 물리 스토리지 장치 중 하나의 식별자 및 상기 식별자에 의해 식별되는 상기 장치 상의 위치를 포함하는 튜플을 포함하고,
    상기 객체의 상기 식별자는 해시(hash)이고,
    상기 제2 데이터 구조는,
    상기 객체의 제2 식별자; 및
    상기 해시를 포함하고,
    상기 객체는 상기 제 1 물리 스토리지 장치 및 상기 제 2 물리 스토리지 장치 중 하나에 저장되고,
    상기 제 1 물리 스토리지 장치는 휘발성 스토리지 장치를 포함하고,
    상기 제 2 물리 스토리지 장치는 불휘발성 스토리지 장치를 포함하고,
    상기 제2 데이터 구조는 상기 객체의 상기 제2 식별자를 상기 해시에 매핑하고, 상기 데이터 구조는 상기 객체에 액세스하도록 상기 해시를 상기 튜플에 매핑하고,
    상기 객체에 대한 데이터는 상기 객체의 상기 제2 식별자를 사용하여 어플리케이션 또는 운영 시스템을 대신하여 액세스될 수 있고,
    메모리 관리 장치는 상기 객체의 상기 제2 식별자, 상기 데이터 구조 및 상기 제2 데이터 구조를 사용하여 상기 튜플 내의 상기 제 1 물리 스토리지 장치 및 상기 제 2 물리 스토리지 장치 중 하나 및 상기 장치의 상기 위치를 결정하는 시스템.
  4. 제 3 항에 있어서,
    상기 튜플은 메타데이터를 더 포함하고, 상기 메타데이터는 상기 객체의 보안 및 상기 객체의 공유를 포함하는 집합에서 추출되는 시스템.
  5. 제 3 항에 있어서,
    상기 컴퓨터는 커널을 실행하는 프로세서를 포함하고, 및
    상기 커널은 상기 제 1 물리 스토리지 장치 및 상기 제 2 물리 스토리지 장치로부터 상기 객체를 위한 메모리를 할당하도록 동작하는 시스템.
  6. 제 5 항에 있어서,
    상기 튜플은 액세스 카운터를 더 포함하고, 및
    상기 커널은 상기 액세스 카운터가 문턱치를 넘는 경우, 상기 제 1 물리 스토리지 장치에서 상기 제 2 물리 스토리지 장치로 상기 객체를 이동하도록 동작하는 시스템.
  7. 제 5 항에 있어서,
    상기 제 1 물리 스토리지 장치는 보안 영역을 포함하고, 상기 제 1 물리 스토리지 내 상기 보안 영역은 펜스화된 영역을 포함하고,
    상기 커널은 상기 객체가 안전한 것으로 간주되는 경우, 상기 제 1 물리 스토리지 장치의 상기 보안 영역에서 상기 제 1 물리 스토리지 장치로부터 스토리지를 할당하도록 동작하는 시스템.
  8. 방법에 있어서,
    프로세서에서, 객체에 대한 데이터 액세스하도록 어플리케이션 또는 운영 시스템으로부터 요청을 수신하는 단계;
    해시 테이블을 사용하고, 상기 객체의 식별자를 해시로 변환하는 단계;
    객체 테이블을 사용하고, 상기 해시를 튜플로 변환하는 단계; 및
    상기 튜플 내 물리 장치의 식별자와 상기 물리 장치 상의 위치를 사용하여 상기 어플리케이션 또는 상기 운영 시스템을 대신하여 상기 데이터에 액세스하는 단계를 포함하되,
    상기 요청은 상기 객체의 상기 식별자를 포함하고, 상기 튜플은 상기 물리 장치의 식별자 및 상기 물리 장치 상의 상기 위치를 포함하고, 상기 물리 장치는 휘발성 스토리지 장치 및 불휘발성 스토리지 장치를 포함하는 집합에서 추출되고, 상기 방법은 상기 휘발성 스토리지 장치 및 상기 불휘발성 스토리지 장치 모두에서 데이터의 스토리지를 지원하는 방법.
  9. 제 8 항에 있어서,
    상기 객체에 대한 메모리를 할당하기 위한 제 2 요청을 수신하는 단계;
    상기 객체에 대한 메모리를 할당하기 위해 커널을 요청을 하는 단계;
    상기 객체의 상기 식별자를 상기 커널로부터 수신하는 단계; 및
    상기 해시와 상기 튜플을 연관시키는 상기 객체 테이블에 엔트리를 추가하는 단계를 더 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 해시를 생성하기 위해 상기 데이터를 해싱하는 단계; 및
    상기 객체의 상기 식별자와 상기 해시를 연관시키는 상기 해시 테이블에 엔트리를 추가하는 단계를 더 포함하는 방법.
KR1020150178367A 2014-12-16 2015-12-14 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 KR102440128B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462092816P 2014-12-16 2014-12-16
US62/092,816 2014-12-16
US14/733,895 US10169124B2 (en) 2014-12-16 2015-06-08 Unified object interface for memory and storage system
US14/733,895 2015-06-08

Publications (2)

Publication Number Publication Date
KR20160073316A KR20160073316A (ko) 2016-06-24
KR102440128B1 true KR102440128B1 (ko) 2022-09-05

Family

ID=56111186

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150178367A KR102440128B1 (ko) 2014-12-16 2015-12-14 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법

Country Status (2)

Country Link
US (1) US10169124B2 (ko)
KR (1) KR102440128B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201701589D0 (en) * 2017-01-31 2017-03-15 Nchain Holdings Ltd Computer-implemented system and method
CN107436928B (zh) * 2017-07-12 2021-05-18 国网山东省电力公司经济技术研究院 变电站工程的量价通流方法
US11080251B1 (en) * 2017-10-23 2021-08-03 Comodo Security Solutions, Inc. Optimization of memory usage while creating hash table
CN109039911B (zh) * 2018-07-27 2021-02-26 烽火通信科技股份有限公司 一种基于hash查找方式共享ram的方法及***
US11023156B2 (en) * 2019-06-20 2021-06-01 International Business Machines Corporation Dynamic API allocation based on data-tagging
US11294721B2 (en) 2019-07-29 2022-04-05 Marvell Asia Pte, Ltd. Object-oriented memory for client-to-client communications
JP7342809B2 (ja) * 2020-07-02 2023-09-12 トヨタ自動車株式会社 情報処理システム及び情報処理方法
US11762578B2 (en) * 2020-09-29 2023-09-19 International Business Machines Corporation Buffer pool contention optimization
US11755373B2 (en) * 2020-10-07 2023-09-12 Oracle International Corporation Computation and storage of object identity hash values

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339567A1 (en) 2012-06-13 2013-12-19 Caringo, Inc. Two level addressing in storage clusters

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298401B1 (en) 1997-08-11 2001-10-02 Seagate Technology Llc Object oriented storage device having a disc drive controller providing an interface exposing methods which are invoked to access objects stored in a storage media
US6240498B1 (en) 1999-01-06 2001-05-29 International Business Machines Corporation Object oriented storage pool apparatus and method
US8200622B2 (en) 2002-05-31 2012-06-12 Informatica Corporation System and method for integrating, managing and coordinating customer activities
US7096342B2 (en) * 2003-10-28 2006-08-22 International Business Machines Corporation Flexible LUN/LBA interface for content addressable reference storage
US7664966B2 (en) * 2004-05-17 2010-02-16 Microsoft Corporation Secure storage on recordable medium in a content protection system
US7444464B2 (en) * 2004-11-08 2008-10-28 Emc Corporation Content addressed storage device configured to maintain content address mapping
US8131682B2 (en) * 2006-05-11 2012-03-06 Hitachi, Ltd. System and method for replacing contents addressable storage
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US8255430B2 (en) * 2008-08-26 2012-08-28 Caringo, Inc. Shared namespace for storage clusters
US9075999B2 (en) * 2009-04-28 2015-07-07 Sandisk Technologies Inc. Memory device and method for adaptive protection of content
US8751860B2 (en) 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices
US9122579B2 (en) * 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8245060B2 (en) * 2009-10-15 2012-08-14 Microsoft Corporation Memory object relocation for power savings
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US8762353B2 (en) * 2012-06-13 2014-06-24 Caringo, Inc. Elimination of duplicate objects in storage clusters
US9329991B2 (en) * 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9846642B2 (en) * 2014-10-21 2017-12-19 Samsung Electronics Co., Ltd. Efficient key collision handling

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339567A1 (en) 2012-06-13 2013-12-19 Caringo, Inc. Two level addressing in storage clusters

Also Published As

Publication number Publication date
KR20160073316A (ko) 2016-06-24
US10169124B2 (en) 2019-01-01
US20160170649A1 (en) 2016-06-16

Similar Documents

Publication Publication Date Title
KR102440128B1 (ko) 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법
US20230315342A1 (en) Memory system and control method
CN106354745B (zh) 用于提供计算机装置的接口的方法和计算机装置
US9990132B2 (en) Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store
JP6205650B2 (ja) 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置
US8868926B2 (en) Cryptographic hash database
US9471500B2 (en) Bucketized multi-index low-memory data structures
US8751763B1 (en) Low-overhead deduplication within a block-based data storage
CN107273522B (zh) 面向多应用的数据存储***和数据调用方法
JP6356675B2 (ja) 集約/グループ化動作:ハッシュテーブル法のハードウェア実装
KR101977575B1 (ko) 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US20170139594A1 (en) Key-value integrated translation layer
US20150067283A1 (en) Image Deduplication of Guest Virtual Machines
KR102437775B1 (ko) 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법
CN107665095B (zh) 存储器空间管理的设备、方法及可读存储介质
US10776378B2 (en) System and method for use of immutable accessors with dynamic byte arrays
US9430492B1 (en) Efficient scavenging of data and metadata file system blocks
US20170139636A1 (en) Memory mapping for object-based storage devices
US10963377B2 (en) Compressed pages having data and compression metadata
WO2024099448A1 (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
US20150356108A1 (en) Storage system and storage system control method
US20200019539A1 (en) Efficient and light-weight indexing for massive blob/objects
Kang et al. Muninn: A versioning flash key-value store using an object-based storage model
KR20170057821A (ko) 저장 장치, 그것을 포함하는 데이터베이스 시스템 및 그것의 인터페이스 제공 방법
KR101368441B1 (ko) 데이터베이스의 공간 재사용 장치, 방법 및 컴퓨터 판독 가능한 기록 매체

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant