KR102656175B1 - 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법 - Google Patents

스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법 Download PDF

Info

Publication number
KR102656175B1
KR102656175B1 KR1020160064247A KR20160064247A KR102656175B1 KR 102656175 B1 KR102656175 B1 KR 102656175B1 KR 1020160064247 A KR1020160064247 A KR 1020160064247A KR 20160064247 A KR20160064247 A KR 20160064247A KR 102656175 B1 KR102656175 B1 KR 102656175B1
Authority
KR
South Korea
Prior art keywords
data
size
random access
area
access memory
Prior art date
Application number
KR1020160064247A
Other languages
English (en)
Other versions
KR20170133569A (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 삼성전자주식회사
Priority to KR1020160064247A priority Critical patent/KR102656175B1/ko
Priority to US15/499,243 priority patent/US10083116B2/en
Publication of KR20170133569A publication Critical patent/KR20170133569A/ko
Application granted granted Critical
Publication of KR102656175B1 publication Critical patent/KR102656175B1/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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/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/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/0871Allocation or management of cache space
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or 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/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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • 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
    • 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/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법에 관한 것이다. 본 발명의 방법은, 쓰기 요청된 데이터의 사이즈가 문턱 사이즈보다 크면, 데이터를 스토리지 장치에 기입하고, 데이터가 기입된 스토리지 장치의 어드레스를 랜덤 액세스 메모리에 기입하는 단계, 그리고 데이터의 사이즈가 문턱 사이즈 이하이면, 데이터를 랜덤 액세스 메모리에 기입하는 단계를 포함한다. 문턱 사이즈는 랜덤 액세스 메모리에서 어드레스를 저장하도록 할당된 영역의 사이즈보다 크다.

Description

스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법{METHOD OF CONTROLLING STORAGE DEVICE AND RANDOM ACCESS MEMORY AND METHOD OF CONTROLLING NONVOLATILE MEMORY DEVICE AND BUFFER MEMORY}
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법에 관한 것이다.
대용량의 데이터를 관리하기 위하여, 데이터를 객체 방식으로 관리하는 장치 및 방법이 연구되고 있다. 객체는 객체 데이터 및 객체 식별자를 포함할 수 있다. 호스트 장치(또는 클라이언트 장치)는 객체 식별자를 이용하여 객체 데이터를 식별하고, 객체 데이터의 쓰기 및 읽기를 요청할 수 있다. 반면, 저장 장치는 어드레스를 기반으로 쓰기 및 읽기를 수행한다. 따라서, 객체 식별자 및 객체 데이터가 기입된 어드레스 사이의 인덱스가 관리되어야 한다.
통상적으로, 인덱스는 랜덤 액세스 메모리에서 관리된다. 랜덤 액세스 메모리의 동작 속도는 저장 장치의 동작 속도보다 빠르다. 따라서, 저장 장치에 기입될 객체 데이터 중 일부를 랜덤 액세스 메모리에 기입하면, 전체적인 시스템 속도가 향상될 수 있다. 그러나, 현재까지 이를 구현하기 위한 구체적이고 효과적인 방안은 제안되지 않았으며, 따라서 저장 장치에 기입될 데이터 중 일부를 인덱스가 저장되는 랜덤 액세스 메모리에 기입하는 구체적이고 효과적인 방법 및 장치에 대한 연구가 절실히 요구되고 있다.
본 발명의 목적은, 전체적인 시스템 속도를 향상시키는 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법을 제공하는 데에 있다.
본 발명의 실시 예들에 따른 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법은, 쓰기 요청된 데이터의 사이즈가 문턱 사이즈보다 크면, 상기 데이터를 상기 스토리지 장치에 기입하고, 상기 데이터가 기입된 상기 스토리지 장치의 어드레스를 상기 랜덤 액세스 메모리에 기입하는 단계, 그리고 상기 데이터의 사이즈가 상기 문턱 사이즈 이하이면, 상기 데이터를 상기 랜덤 액세스 메모리에 기입하는 단계를 포함한다. 상기 문턱 사이즈는 상기 랜덤 액세스 메모리에서 상기 어드레스를 저장하도록 할당된 영역의 사이즈보다 크다.
본 발명의 실시 예들에 따른 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법은, 쓰기 요청된 데이터의 사이즈가 문턱 사이즈보다 크면, 컨트롤러가 상기 데이터를 상기 불휘발성 메모리 장치에 기입하고, 상기 데이터가 기입된 상기 불휘발성 메모리 장치의 어드레스를 상기 버퍼 메모리에 기입하는 단계, 그리고 상기 데이터의 사이즈가 상기 문턱 사이즈 이하이면, 상기 컨트롤러가 상기 데이터를 상기 버퍼 메모리에 기입하는 단계를 포함한다. 상기 문턱 사이즈는 상기 버퍼 메모리에서 상기 어드레스를 저장하도록 할당된 영역의 사이즈보다 크다.
본 발명의 실시 예들에 따르면, 저장 장치에 기입될 데이터 중 일부가 랜덤 액세스 메모리에 기입된다. 따라서, 저장 장치 및 랜덤 액세스 메모리를 포함하는 시스템의 전체적인 동작 속도가 향상된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따라 랜덤 액세스 메모리 및 스토리지 장치 또는 불휘발성 메모리 장치를 제어하는 방법의 예를 보여주는 순서도이다.
도 3은 프로세서에 의해 랜덤 액세스 메모리가 관리되는 예를 보여준다.
도 4는 불휘발성 메모리 장치가 관리되는 예를 보여준다.
도 5는 본 발명의 실시 예에 따라 랜덤 액세스 메모리 및 스토리지 장치 또는 불휘발성 메모리 장치를 제어하는 방법의 응용 예를 보여주는 순서도이다.
도 6은 도 5의 방법에 따라 객체 데이터가 인덱스 영역에 기입된 예를 보여준다.
도 7은 프로세서가 랜덤 액세스 메모리의 저장 공간을 관리하는 방법의 예를 보여준다.
도 8은 프로세서가 객체 영역에 기입된 객체 데이터 및 스토리지 장치에 기입된 객체 데이터를 스왑하는 방법의 예를 보여주는 순서도이다.
도 9는 컴퓨팅 시스템이 객체 데이터의 기입을 수행하는 전체적인 흐름의 예를 보여주는 순서도이다.
도 10은 컴퓨팅 시스템)이 객체 데이터의 읽기를 수행하는 전체적인 흐름의 예를 보여주는 순서도이다.
도 11은 도 1의 컴퓨팅 시스템에서 도 9 및 도 10을 참조하여 설명된 쓰기 또는 읽기 요청이 계층적으로 처리되는 예를 보여준다.
도 12는 본 발명의 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트 장치(20) 및 스토리지 장치(100)를 포함한다. 호스트 장치(20)는 프로세서(30), 메모리 컨트롤러(40) 및 랜덤 액세스 메모리(50, RAM)를 포함한다.
프로세서(30)는 캐시(31)를 포함할 수 있다. 프로세서(40)는 메모리 컨트롤러(40)를 통해 랜덤 액세스 메모리(50)를 액세스할 수 있다. 예를 들어, 프로세서(40) 및 메모리 컨트롤러(40)가 통신하는 채널은 노스브릿지(North Bridge)의 메모리 인터페이스일 수 있다. 예를 들어, 메모리 컨트롤러(40)는 프로세서(30)의 내부에 집적될 수 있다. 랜덤 액세스 메모리(50)는 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PRAM), 자기 메모리(MRAM), 저항 메모리(RRAM), 강유전체 메모리(FRAM) 등을 포함할 수 있다.
스토리지 장치(100)는 호스트 장치(20)의 요청에 따라 쓰기, 읽기 및 소거를 수행할 수 있다. 예를 들어, 스토리지 장치(100)가 호스트 장치(20)와 통신하는 채널은 사우스브릿지(South Bridge)의 채널일 수 있다. 스토리지 장치(100)는 불휘발성 메모리 장치(110), 컨트롤러(120), 그리고 버퍼 메모리(130)를 포함한다.
불휘발성 메모리 장치(110)는 플래시 메모리, 상 변화 메모리(PRAM), 자기 메모리(MRAM), 저항 메모리(RRAM), 강유전체 메모리(FRAM) 등을 포함할 수 있다. 컨트롤러(120)는 버퍼 메모리(130)를 이용하여 불휘발성 메모리 장치(110)의 쓰기, 읽기 및 소거를 제어할 수 있다. 버퍼 메모리(130)는 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PRAM), 자기 메모리(MRAM), 저항 메모리(RRAM), 강유전체 메모리(FRAM) 등과 같은 랜덤 액세스 메모리를 포함할 수 있다.
예를 들어, 컴퓨팅 시스템(10)은 스토리지 서버 또는 캐시 서버일 수 있다. 호스트 장치(20)는 외부의 장치, 예를 들어 외부의 클라이언트 장치 또는 응용 서버로부터 쓰기 요청 또는 읽기 요청과 같은 액세스 요청을 수신할 수 있다. 예를 들어, 액세스 요청은 객체 기반일 수 있다. 객체 기반 쓰기 요청은 객체 식별자 및 객체 데이터를 포함할 수 있다. 객체 기반 읽기 요청은 객체 식별자를 포함할 수 있다. 프로세서(30)는 객체 데이터를 스토리지 장치(100) 또는 랜덤 액세스 메모리(50)에 저장할 수 있다. 프로세서(30)는 객체 데이터가 저장된 위치 정보 및 객체 식별자 사이의 관계를 가리키는 인덱스를 랜덤 액세스 메모리(50)에 저장할 수 있다. 예를 들어, 객체 식별자는 키-값 저장(Key-Value Store)의 키 또는 키로부터 생성되는 식별자일 수 있다.
프로세서(30)는 객체 데이터를 랜덤 액세스 메모리(50) 또는 스토리지 장치(100)에 기입하고, 기입 결과를 랜덤 액세스 메모리(50)에 저장된 인덱스에 반영할 수 있다. 프로세서(30)는 랜덤 액세스 메모리(50)에 저장된 인덱스를 참조하여 랜덤 액세스 메모리(50) 또는 스토리지 장치(100)로부터 객체 데이터를 읽을 수 있다.
예시적으로, 프로세서(30)는 스토리지 장치(100)에 어드레스 기반의 액세스 요청을 전달할 수 있다. 예를 들어, 프로세서(30)는 쓰기 요청을 스토리지 장치(100)에 전달할 때에, 객체 데이터 및 객체 데이터가 기입될 스토리지 장치(100)의 어드레스를 스토리지 장치(100)로 전달할 수 있다. 프로세서(30)는 스토리지 장치(100)의 어드레스를 위치 정보로서 랜덤 액세스 메모리(50)의 인덱스에 등록할 수 있다. 예를 들어, 프로세서(30)는 읽기 요청을 스토리지 장치(100)에 전달할 때에, 랜덤 액세스 메모리(50)에 저장된 인덱스를 참조하여 스토리지 장치(100)의 어드레스를 획득할 수 있다. 프로세서(30)는 획득된 어드레스를 스토리지 장치(100)로 전달할 수 있다. 스토리지 장치(100)는 프로세서(30)로부터 전달되는 어드레스에 따라, 버퍼 메모리(130)를 이용하여 쓰기, 읽기 또는 소거를 수행할 수 있다.
예시적으로, 프로세서(30)는 랜덤 액세스 메모리(50)를 호스트 장치(20)의 메인 메모리로 사용할 수 있다. 예를 들어, 랜덤 액세스 메모리(50)는 인덱스, 객체 데이터뿐 아니라, 호스트 장치(20)를 운영하는 데에 필요한 다양한 정보들, 코드들, 그리고 응용들의 인스턴스들을 저장할 수 있다.
예시적으로, 스토리지 장치(100)의 버퍼 메모리(130)는 스토리지 장치(100)의 동작 메모리로 사용될 수 있다. 예를 들어, 버퍼 메모리(130)는 스토리지 장치(100)가 호스트 장치(20)와 교환하는 데이터를 임시로 저장하고(예를 들어 버퍼링하고), 그리고 컨트롤러(120)가 스토리지 장치(100)를 관리하는 데에 필요한 다양한 정보들, 코드들 등을 저장할 수 있다.
예시적으로, 스토리지 장치(100)의 버퍼 메모리(130)는 컨트롤러(120)의 내부에 제공될 수 있다. 예를 들어, 버퍼 메모리(130)는 컨트롤러(120)의 내부의 정적 랜덤 액세스 메모리(SRAM)일 수 있다.
예시적으로, 본 발명을 간결하게 설명하기 위하여 생략되었으나, 컨트롤러(120)는 캐시(미도시)를 더 포함할 수 있다. 예를 들어, 컨트롤러(120)는 캐시 히트가 발생한 때에 불휘발성 메모리 장치(110)를 액세스하지 않고 캐시를 액세스하고, 캐시 미스가 발생한 때에 버퍼 메모리(130)를 이용하여 불휘발성 메모리 장치(110)를 액세스할 수 있다. 컨트롤러(120)는 캐시 플러시가 수행될 때, 캐시에 저장된 더티 데이터를 불휘발성 메모리 장치(110)에 기입할 수 있다.
도 2는 본 발명의 실시 예에 따라 랜덤 액세스 메모리(50) 및 스토리지 장치(100) 또는 불휘발성 메모리 장치(110)를 제어하는 방법의 예를 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S110 단계에서, 호스트 장치(20), 예를 들어 프로세서(30)는 외부의 장치로부터 쓰기 요청을 수신할 수 있다. 예를 들어, 쓰기 요청은 셋 요청(set request)일 수 있다. 쓰기 요청은 객체 데이터(예를 들어, 키 및 값)의 쓰기를 요청할 수 있다.
S120 단계에서, 프로세서(30)는 쓰기 요청된 객체 데이터의 사이즈가 문턱 사이즈(Sth) 이하인지 판별한다. 객체 데이터의 사이즈가 문턱 사이즈(Sth) 이하이면, S130 단계에서, 프로세서(30)는 랜덤 액세스 메모리(50)에 충분한 자유 공간이 존재하는지 판별한다. 예를 들어, 프로세서(30)는 랜덤 액세스 메모리(50)에서 객체 데이터를 저장하도록 할당된 영역의 자유 공간이 객체 데이터의 사이즈 이상인지 판별할 수 있다. 충분한 자유 공간이 존재하면, S140 단계가 수행된다. S140 단계에서, 프로세서(30)는 메모리 컨트롤러(40)를 통해 랜덤 액세스 메모리(50)에 객체 데이터를 기입할 수 있다.
객체 데이터의 사이즈가 문턱 사이즈(Sth)보다 크거나(S120 단계) 또는 랜덤 액세스 메모리(50)의 자유 공간이 충분하지 않으면(S130 단계), S150 단계가 수행된다. S150 단계에서, 프로세서(30)는 객체 데이터를 스토리지 장치(100)에 기입할 수 있다.
객체 데이터가 랜덤 액세스 메모리(50) 또는 스토리지 장치(100)에 기입된 후에, S160 단계에서, 프로세서(30)는 객체 데이터가 기입된 위치 정보를 랜덤 액세스 메모리(50)에 기입할 수 있다. 예를 들어, 프로세서(30)는 키 또는 키로부터 생성되는 데이터를 객체 식별자로 선택하고, 객체 식별자 및 위치 정보를 서로 연관하여 랜덤 액세스 메모리(50)에 기입할 수 있다. 예를 들어, 객체 식별자가 랜덤 액세스 메모리(50)에 미리 저장되어 있는 경우, 프로세서(30)는 랜덤 액세스 메모리(50)에서 객체 식별자와 연관된 위치 정보를 갱신할 수 있다. 객체 식별자가 랜덤 액세스 메모리(50)에 미리 저장되어 있지 않은 경우, 프로세서(30)는 객체 식별자 및 위치 정보를 랜덤 액세스 메모리(50)에 새로 기입할 수 있다.
예시적으로, 객체 데이터가 랜덤 액세스 메모리(50)에 기입되는 경우, 위치 정보는 랜덤 액세스 메모리(50)의 저장 공간 내의 위치를 가리킬 수 있다. 객체 데이터가 스토리지 장치(100)에 기입되는 경우, 위치 정보는 스토리지 장치(100)의 저장 공간 내의 위치를 가리킬 수 있다.
상술된 바와 같이, 객체 데이터의 사이즈가 문턱 사이즈(Sth) 이하이고, 그리고 랜덤 액세스 메모리(50)에 충분한 자유 공간이 존재하면, 객체 데이터는 랜덤 액세스 메모리(50)에 기입된다. 객체 데이터의 사이즈가 문턱 사이즈(Sth)보다 크거나 또는 객체 데이터의 사이즈가 문턱 사이즈 이하이더라도 랜덤 액세스 메모리(50)에 충분한 자유 공간이 없는 경우, 객체 데이터는 스토리지 장치(100)에 기입된다. 객체 데이터의 사이즈에 따라 객체 데이터가 스토리지 장치(100) 또는 랜덤 액세스 메모리(50)에 기입되므로, 모든 객체 데이터를 스토리지 장치(100)에 기입하는 때와 비교하여 컴퓨팅 시스템(10)의 전체적인 동작 속도가 향상된다.
예시적으로, 객체 데이터는 객체 기반 데이터 시스템에서 관리되는 하나의 독립된 개체(entity)이며, 객체 데이터의 사이즈는 달라질 수 있다. 또한 객체 데이터의 사이즈는 호스트 장치(20) 또는 스토리지 장치(100)의 입출력 대역폭과 연관되지 않을 수 있다. 예를 들어, 객체 데이터의 사이즈는 호스트 장치(20) 또는 스토리지 장치(100)의 한 번의 입출력 또는 둘 또는 그보다 많은 입출력들에 대응할 수 있다.
예시적으로, 문턱 사이즈(Sth)는 랜덤 액세스 메모리(50)에서 하나의 위치 정보를 저장하도록 할당되는 저장 공간의 사이즈보다 클 수 있다. 예를 들어, 문턱 사이즈(Sth)는 위치 정보를 저장하도록 할당되는 저장 공간의 사이즈의 배수일 수 있다. 문턱 사이즈(Sth)가 위치 정보를 저장하는 저장 공간의 사이즈보다 크게 설정되면, 위치 정보를 저장하는 저장 공간의 사이즈보다 큰 객체 데이터도 랜덤 액세스 메모리(50)에 기입된다. 따라서, 위치 정보를 저장하는 저장 공간의 사이즈 이하인 객체 데이터만을 랜덤 액세스 메모리(50)에 기입하는 것과 비교하여, 컴퓨팅 시스템(10)의 동작 속도가 더 향상된다.
도 3은 프로세서(30)에 의해 랜덤 액세스 메모리(50)가 관리되는 예를 보여준다. 도 1 및 3을 참조하면, 프로세서(30)는 랜덤 액세스 메모리(50)의 저장 공간을 인덱스 영역(51) 및 객체 영역(52)으로 분할하여 관리할 수 있다.
프로세서(30)는 인덱스 영역에 인덱스 엔티티들(IE)을 기입할 수 있다. 인덱스 엔티티들(IE) 각각은 식별자 영역(IDA) 및 어드레스 영역(ADA)을 포함한다. 프로세서(30)는 랜덤 액세스 메모리(50)의 객체 영역(52) 또는 스토리지 장치(100)에 새로운 객체 데이터가 기입될 때, 해당 객체 데이터의 인덱스 엔티티(IE)를 생성하고, 식별자 영역(IDA)에 객체 식별자를 기입할 수 있다. 또한, 프로세서(30)는 객체 데이터가 기입된 위치 정보를 인덱스 엔티티(IE)의 어드레스 영역(ADA)에 기입할 수 있다. 예시적으로, 식별자 영역(IDA)의 사이즈 및 어드레스 영역(ADA)의 사이즈는 컴퓨팅 시스템(10)이 속하는 전체 시스템에 따라 결정되는 고정된 값일 수 있다.
프로세서(30)는 랜덤 액세스 메모리(50)의 객체 영역(52) 또는 스토리지 장치(100)에 기입된 객체 데이터의 위치 정보가 갱신될 때, 해당 인덱스 엔티티(IE)의 어드레스 영역(ADA)을 갱신할 수 있다. 예를 들어, 위치 정보의 갱신은 객체 데이터가 갱신될 때에 발생할 수 있다.
프로세서(30)는 도 2를 참조하여 설명된 조건들을 만족하는 객체 데이터를 객체 영역(52)에 기입할 수 있다.
예시적으로, 컴퓨팅 시스템(10)에 네 개의 객체 데이터가 기입된 것으로 가정된다. 네 개의 객체 데이터가 기입됨에 따라, 인덱스 영역(51)에 네 개의 인덱스 엔티티들(IE1~IE4)이 기입될 수 있다.
제1 인덱스 엔티티(IE1)는 제1 객체 데이터(OD1, 도 4 참조)에 대응하는 제1 객체 식별자(OID1) 및 위치 정보를 저장할 수 있다. 예를 들어, 제1 객체 데이터(OD1)는 스토리지 장치(100)에 기입될 수 있다. 따라서, 제1 객체 식별자(OID1)의 위치 정보는 스토리지 장치(100)의 저장 공간을 가리키는 제1 어드레스(ADDR1)일 수 있다. 예를 들어, 제1 어드레스(ADDR1)는 시작 어드레스 또는 사이즈 정보를 포함할 수 있다.
제2 인덱스 엔티티(IE2)는 제2 객체 데이터(OD2)에 대응하는 제2 객체 식별자(OID2) 및 위치 정보를 저장할 수 있다. 예를 들어, 제2 객체 데이터(OD2)는 랜덤 액세스 메모리(50)의 객체 영역(52)에 기입될 수 있다. 따라서, 제2 객체 식별자(OID2)의 위치 정보는 객체 영역(52)에서 제2 객체 데이터(OD2)가 기입된 위치를 가리키는 제1 오프셋(OFS1)일 수 있다. 예를 들어, 제2 객체 데이터(OD2)는 연속적인 어드레스들로 식별되는 영역에 저장되고, 제1 오프셋(OFS1)은 제2 객체 데이터(OD2)가 기입된 영역의 가장 낮은(또는 높은) 어드레스를 가리킬 수 있다.
제3 인덱스 엔티티(IE3)는 제3 객체 데이터(OD3, 도 4 참조)에 대응하는 제3 객체 식별자(OID3) 및 위치 정보를 저장할 수 있다. 예를 들어, 제3 객체 데이터(OD3)는 스토리지 장치(100)에 기입될 수 있다. 따라서, 제3 객체 식별자(OID3)의 위치 정보는 스토리지 장치(100)의 저장 공간을 가리키는 제3 어드레스(ADDR3)일 수 있다. 예를 들어, 제3 어드레스(ADDR3)는 시작 어드레스 또는 사이즈 정보를 포함할 수 있다.
제4 인덱스 엔티티(IE4)는 제4 객체 데이터(OD4)에 대응하는 제4 객체 식별자(OID4) 및 위치 정보를 저장할 수 있다. 예를 들어, 제4 객체 데이터(OD4)는 랜덤 액세스 메모리(50)의 객체 영역(52)에 기입될 수 있다. 따라서, 제4 객체 식별자(OID4)의 위치 정보는 객체 영역(52)에서 제4 객체 데이터(OD4)가 기입된 위치를 가리키는 제2 오프셋(OFS2)일 수 있다. 예를 들어, 제4 객체 데이터(OD4)는 연속적인 어드레스들로 식별되는 영역에 저장되고, 제2 오프셋(OFS2)은 제4 객체 데이터(OD4)가 기입된 영역의 가장 낮은(또는 높은) 어드레스를 가리킬 수 있다.
객체 영역(52)의 자유 공간은 객체 데이터가 기입되지 않은 빈 공간을 가리킨다.
도 4는 불휘발성 메모리 장치(110)가 관리되는 예를 보여준다. 도 1 및 도 4를 참조하면, 스토리지 장치(100)의 컨트롤러(120)는 불휘발성 메모리 장치(110)의 저장 공간을 사용자 영역(111) 및 메타 및 예비 영역(112)으로 분할하여 관리할 수 있다. 사용자 영역(111)은 스토리지 장치(100)가 호스트 장치(20) 또는 프로세서(30)에 제공하는 저장 공간일 수 있다. 즉, 사용자 영역(111)은 호스트 장치(20) 또는 프로세서(30)에 의해 스토리지 장치(100)의 저장 공간으로 식별되는 영역일 수 있다.
메타 및 예비 영역(112)은 스토리지 장치(100)가 호스트 장치(20) 또는 프로세서(30)에 제공하지 않고, 사용자 영역(111) 또는 스토리지 장치(100)를 관리하는 데에 사용하는 영역일 수 있다. 예를 들어, 메타 및 예비 영역(112)은 불휘발성 메모리 장치(110)의 저장 공간을 식별하는 물리 어드레스 및 스토리지 장치(100)가 호스트 장치(20) 또는 프로세서(30)에 제공하는 논리 어드레스 사이의 사상 정보를 어드레스 사상 테이블(AT)로 저장할 수 있다. 또한, 메타 및 예비 영역(112)은 사용자 영역(111)의 일부 영역이 사용 불가능하게 된 때에 해당 영역을 대체하여 사용자 영역(111)으로 편입되는 영역을 포함할 수 있다. 예시적으로, 메타 및 예비 영역(112)에 저장된 사상 테이블은 버퍼 메모리(130)에 로드되어 사용될 수 있다.
도 3을 참조하여 설명된 바와 같이, 제1 객체 데이터(OD1) 및 제3 객체 데이터(OD3)는 스토리지 장치(100)의 불휘발성 메모리 장치(110)에 기입될 수 있다. 호스트 장치(20) 또는 프로세서(30)는 제1 어드레스(ADDR1) 및 제2 어드레스(ADDR2)와 함께 제1 객체 데이터(OD1) 및 제3 객체 데이터(OD3)의 기입을 스토리지 장치(100)에 요청할 수 있다. 컨트롤러(120)는 불휘발성 메모리 장치(110)의 사용자 영역(111)의 논리 어드레스 영역에서, 제1 어드레스(ADDR1)에 따라 제1 객체 데이터(OD1)를 기입할 수 있다. 예를 들어, 컨트롤러(120)는 제1 어드레스(ADDR1)를 어드레스 사상 테이블(AT)을 이용하여 물리 어드레스 영역의 물리 어드레스로 변환하고, 변환된 물리 어드레스에 대응하는 저장 공간에 제1 객체 데이터(OD1)를 기입할 수 있다. 컨트롤러(120)는 불휘발성 메모리 장치(110)의 사용자 영역(111)의 논리 어드레스 영역에서, 제2 어드레스(ADDR2)에 따라 제3 객체 데이터(OD3)를 기입할 수 있다. 예를 들어, 컨트롤러(120)는 제2 어드레스(ADDR2)를 어드레스 사상 테이블(AT)을 이용하여 물리 어드레스 영역의 물리 어드레스로 변환하고, 변환된 물리 어드레스에 대응하는 저장 공간에 제3 객체 데이터(OD3)를 기입할 수 있다.
사용자 영역(111)의 자유 공간은 객체 데이터가 기입되지 않은 빈 공간을 가리킨다.
도 5는 본 발명의 실시 예에 따라 랜덤 액세스 메모리(50) 및 스토리지 장치(100) 또는 불휘발성 메모리 장치(110)를 제어하는 방법의 응용 예를 보여주는 순서도이다. 예시적으로, 도 5의 방법은 도 2의 S120 단계에서 객체 데이터의 사이즈가 문턱 사이즈(Sth) 이하인 것으로 판별된 때에 수행될 수 있다.
도 1, 도 3 및 도 5를 참조하면, S210 단계에서, 프로세서(30)는 객체 데이터의 사이즈가 어드레스 영역(ADA)의 사이즈(Sada) 이하인지 판별할 수 있다. 객체 데이터의 사이즈가 어드레스 영역(ADA)의 사이즈(Sada) 이하이면, S230 단계에서, 프로세서(30)는 객체 데이터를 객체 영역(52)이 아닌 인덱스 영역(51)에 기입할 수 있다. 객체 데이터의 사이즈가 어드레스 영역(ADA)의 사이즈(Sada)보다 크면, 프로세서(30)는 도 2의 S130 단계를 수행할 수 있다.
도 6은 도 5의 방법에 따라 객체 데이터가 인덱스 영역(51)에 기입된 예를 보여준다. 도 3과 비교하면, 제5 객체 엔티티(IE5)가 인덱스 영역(51)에 더 기입된다. 제5 객체 엔티티(IE5)는 제5 객체 데이터(OD5)의 제5 객체 식별자(OID5)를 포함한다. 제5 객체 데이터(OD5)의 사이즈는 어드레스 영역(ADA)의 사이즈(Sada) 이하이므로, 제5 객체 데이터(OD5)는 제5 객체 엔티티(IE5)의 어드레스 영역(ADA)에 기입될 수 있다.
도 1 내지 도 6을 참조하여 설명된 바와 같이, 객체 데이터는 객체 데이터의 사이즈에 따라 세 가지 방법으로 기입될 수 있다. 객체 데이터의 사이즈가 문턱 사이즈(Sth)보다 큰 경우, 객체 데이터(예를 들어, OD2 또는 OD4)는 스토리지 장치(100)에 기입된다. 객체 식별자(OID1 또는 OID3)는 스토리지 장치(100)의 어드레스(예를 들어, ADDR1 또는 ADDR2)와 연관되어 객체 엔티티(예를 들어, IE1 또는 IE3)에 기입될 수 있다.
객체 데이터의 사이즈가 어드레스 영역(ADA)의 사이즈(Sada) 이하인 경우, 객체 데이터(예를 들어, OD5)는 인덱스 영역(51)의 인덱스 엔티티(예를 들어, IE5)에 객체 식별자(예를 들어 OID5)와 연관되어 함께 기입된다.
객체 데이터의 사이즈가 문턱 사이즈(Sth) 이하이고 어드레스 영역(ADA)의 사이즈(Sada)보다 크면, 객체 데이터는 랜덤 액세스 메모리(50)에 우선적으로 저장된다. 객체 데이터(예를 들어, OD2 또는 OD4)는 객체 영역(52)에 기입된다. 객체 식별자(예를 들어, OID2 또는 OID4)는 오프셋(예를 들어, OFS1 또는 OFS2)과 연관되어 인덱스 영역(51)의 객체 엔티티(예를 들어, IE2 또는 IE4)에 기입될 수 있다. 객체 영역(52)에 충분한 자유 공간이 존재하지 않는 경우, 객체 데이터는 객체 데이터의 사이즈가 문턱 사이즈(Sth)보다 큰 때와 마찬가지로 스토리지 장치(100)에 기입될 수 있다.
상술된 바와 같이 객체 데이터의 사이즈에 따라 객체 데이터를 기입하는 방법이 세분화되면, 컴퓨팅 시스템(10)의 동작 속도가 향상됨과 함께 랜덤 액세스 메모리(50)의 자원 소비가 절감될 수 있다.
도 7은 프로세서(30)가 랜덤 액세스 메모리(50)의 저장 공간을 관리하는 방법의 예를 보여준다. 도 1 및 도 7을 참조하면, S310 단계에서, 프로세서(30)는 인덱스 영역(51)에 충분한 자유 공간이 존재하는지 판별한다. 예를 들어, 프로세서(30)는 인덱스 영역(51)의 자유 공간의 사이즈가 제1 문턱 사이즈보다 큰지 판별할 수 있다. 자유 공간의 사이즈가 제1 문턱 사이즈보다 크면, 프로세서(30)는 도 7의 방법을 종료할 수 있다. 자유 공간의 사이즈가 제1 문턱 사이즈 이하이면, 프로세서(30)는 S320 단계를 수행할 수 있다.
S320 단계에서, 프로세서(30)는 객체 영역(52)에 충분한 자유 공간이 존재하는지 판별한다. 예를 들어, 프로세서(30)는 객체 영역(52)의 자유 공간의 사이즈가 제2 문턱 사이즈보다 큰지 판별할 수 있다. 제2 문턱 사이즈는 제1 문턱 사이즈보다 클 수 있다. 객체 영역(52)의 자유 공간의 사이즈가 제2 문턱 사이즈보다 크면, 프로세서(30)는 S340 단계를 수행할 수 있다. 객체 영역(52)의 자유 공간의 사이즈가 제2 문턱 사이즈 이하이면, 프로세서(30)는 S330 단계를 수행한 후에 S340 단계를 수행할 수 있다.
S320 단계에서, 프로세서(30)는 객체 영역(52)에 기입된 적어도 하나의 객체 데이터를 스토리지 장치(100)로 플러시할 수 있다. 예를 들어, 프로세서(30)는 객체 영역(52)에 기입된 객체 데이터들의 액세스 횟수를 관리할 수 있다. 프로세서(30)는 액세스 횟수가 문턱 횟수보다 낮은 적어도 하나의 객체 데이터를 스토리지 장치(100)로 플러시할 수 있다. 예를 들어, 프로세서(30)는 객체 영역(52)에 객체 데이터들이 기입된 시간의 정보를 관리할 수 있다. 프로세서(30)는 가장 오래전에 객체 영역(52)에 기입된 객체 데이터를 스토리지 장치(100)로 플러시할 수 있다. 객체 데이터가 스토리지 장치(100)로 플러시됨에 따라, 프로세서(30)는 대응하는 인덱스 엔티티의 오프셋을 스토리지 장치(100)의 어드레스로 갱신할 수 있다. 프로세서(30)는 적어도 하나의 객체 데이터를 플러시 함으로써, 프로세서(30)는 제2 문턱 사이즈보다 큰 자유 공간을 객체 영역(52)에 확보할 수 있다.
S340 단계에서, 프로세서(30)는 객체 영역(52)의 사이즈를 감소시켜 인덱스 영역(51)의 자유 공간을 획득할 수 있다. 예를 들어, 프로세서(30)는 객체 영역(52)의 자유 공간의 일부를 인덱스 영역(51)의 자유 공간으로 전환(또는 설정)할 수 있다.
예시적으로, 도 7의 방법은 외부 장치로부터 쓰기 요청이 수신된 때에, 또는 쓰기 요청을 처리한 후에 수행될 수 있다. 예시적으로, 도 7의 방법은 미리 정해진 시간 주기 또는 액세스(예를 들어, 쓰기) 주기에 따라 주기적으로 수행될 수 있다.
도 8은 프로세서(30)가 객체 영역(52)에 기입된 객체 데이터 및 스토리지 장치(100)에 기입된 객체 데이터를 스왑하는 방법의 예를 보여주는 순서도이다. 도 1 및 도 8을 참조하면, S410 단계에서, 프로세서(30)는 스토리지 장치(100)에 핫 객체 데이터가 존재하는지 판별한다. 예를 들어, 핫 객체 데이터는 액세스 빈도가 문턱값 이상인 객체 데이터일 수 있다. 핫 객체 데이터는 미리 정해진 시간 구간 동안에 문턱값 이상의 액세스 빈도를 갖는 객체 데이터일 수 있다.
S420 단계에서, 프로세서(30)는 객체 영역(52)에 콜드 객체 데이터가 존재하는지 판별한다. 예를 들어, 콜드 객체 데이터는 액세스 빈도가 문턱값보다 작은 객체 데이터일 수 있다. 콜드 객체 데이터는 미리 정해진 시간 구간 동안에 문턱값 미만의 액세스 빈도를 갖는 객체 데이터일 수 있다.
스토리지 장치(100)에 핫 데이터가 존재하고, 그리고 객체 영역(52)에 콜드 데이터가 존재하면, S430 단계에서, 프로세서(30)는 스토리지 장치(100)의 핫 데이터와 객체 영역(52)의 콜드 데이터를 스왑할 수 있다. 예를 들어, 프로세서(30)는 객체 영역(52)의 콜드 데이터를 스토리지 장치(100)에 플러시할 수 있다. 프로세서(30)는 스토리지 장치(100)의 핫 데이터를 객체 영역(30)에 기입(예를 들어, 이동)할 수 있다.
예시적으로, 스토리지 장치(100)에 핫 데이터가 존재하고 객체 영역(52)에 충분한 자유 공간이 존재하면, 프로세서(30)는 객체 영역(52)에 콜드 데이터가 존재하는지를 판단하지 않고, 스토리지 장치(100)의 핫 데이터를 객체 영역(52)의 자유 공간에 기입(예를 들어, 이동)할 수 있다.
도 9는 컴퓨팅 시스템(10)이 객체 데이터의 기입을 수행하는 전체적인 흐름의 예를 보여주는 순서도이다. 도 1 및 도 9를 참조하면, S510 단계에서, 프로세서(30)는 쓰기 요청을 수신할 수 있다. 쓰기 요청은 셋 요청(SET request)일 수 있다.
S515 단계에서, 프로세서(30)는 캐시 히트가 발생하는지 판별할 수 있다. 예를 들어, 쓰기 요청이 갱신 요청이고, 갱신 요청된 객체 데이터가 캐시(31)에 저장되어 있을 때 캐시 히트가 발생할 수 있다. 예를 들어, 갱신 요청된 객체 데이터의 적어도 일부가 캐시(31)에 저장되어 있으면, 캐시 히트가 발생할 수 있다.
캐시 히트가 발생하면, S520 단계에서, 프로세서(30)는 객체 데이터를 캐시(31)에 기입할 수 있다. S525 단계에서, 프로세서(30)는 캐시(31)의 플러시가 발생하는지 판별한다. 캐시(31)의 플러시가 발생하지 않으면, 기입은 종료된다. 캐시(31)의 플러시가 발생하면, S530 단계가 수행된다.
S530 단계에서, 프로세서(30)는 랜덤 액세스 메모리(50)의 히트가 발생하는지 판별한다. 예를 들어, 쓰기 요청이 갱신 요청이고, 갱신 요청된 객체 데이터가 랜덤 액세스 메모리(50)의 객체 영역(52)에 저장되어 있을 때 랜덤 액세스 메모리(50)의 히트가 발생할 수 있다. 예를 들어, 프로세서(30)는 쓰기 요청된 객체 데이터 또는 캐시(31)의 플러시에 의해 기입되는 객체 데이터에 대해 히트를 판별할 수 있다.
히트가 발생하면, S535 단계에서, 프로세서(30)는 객체 데이터를 랜덤 액세스 메모리(50)의 객체 영역(52)에 기입할 수 있다. S540 단계에서, 프로세서(30)는 랜덤 액세스 메모리(50)의 객체 데이터의 플러시가 발생하는지 판별한다. 객체 데이터의 플러시가 발생하지 않으면, 기입은 종료된다. 객체 데이터의 플러시가 발생하면, S555 단계가 수행된다.
S545 단계에서, 프로세서(30)는 객체 데이터의 사이즈가 문턱 사이즈(Sth) 이하인지 판별한다. 예를 들어, 프로세서(30)는 쓰기 요청된 객체 데이터 또는 캐시(31)의 플러시에 의해 기입되는 객체 데이터에 대해 판별을 수행할 수 있다.
객체 데이터의 사이즈가 문턱 사이즈(Sth) 이하이면, S550 단계에서, 프로세서(30)는 객체 영역(52)에 충분한 저장 공간이 존재하는지 판별한다. 객체 영역(52)에 충분한 저장 공간이 존재하면, 프로세서(30)는 S535 단계를 수행할 수 있다.
객체 데이터의 사이즈가 문턱 사이즈(Sth)보다 크면(S545 단계), 객체 영역(52)에 충분한 자유 공간이 존재하지 않으면(S550 단계), 또는 랜덤 액세스 메모리(50)의 객체 영역(52)의 객체 데이터의 플러시가 발생하면, 프로세서(30)는 S555 단계를 수행한다. S555 단계에서, 프로세서(30)는 객체 데이터를 스토리지 장치(100)에 기입할 수 있다. 예를 들어, 쓰기 요청된 객체 데이터, 캐시(31)의 플러시로 인해 기입되는 객체 데이터, 또는 객체 영역(52)의 플러시로 인해 기입되는 객체 데이터가 스토리지 장치(100)에 기입될 수 있다.
도 10은 컴퓨팅 시스템(10)이 객체 데이터의 읽기를 수행하는 전체적인 흐름의 예를 보여주는 순서도이다. 도 1 및 도 10을 참조하면, S610 단계에서, 프로세서(30)는 읽기 요청을 수신할 수 있다. 읽기 요청은 겟 요청(GET request)일 수 있다.
S620 단계에서, 프로세서(30)는 캐시 히트가 발생하는지 판별할 수 있다. 예를 들어, 읽기 요청된 객체 데이터가 캐시(31)에 저장되어 있을 때 캐시 히트가 발생할 수 있다. 예를 들어, 읽기 요청된 객체 데이터의 적어도 일부가 캐시(31)에 저장되어 있으면, 캐시 히트가 발생할 수 있다.
캐시 히트가 발생하면, S630 단계에서, 프로세서(30)는 캐시(31)로부터 객체 데이터를 읽을 수 있다. 이후에, 읽기가 종료된다.
캐시 히트가 발생하지 않으면, 즉 캐시 미스가 발생하면, S640 단계에서, 프로세서(30)는 랜덤 액세스 메모리(50)의 히트가 발생하는지 판별한다. 예를 들어, 읽기 요청된 객체 데이터가 랜덤 액세스 메모리(50)의 객체 영역(52)에 저장되어 있을 때 랜덤 액세스 메모리(50)의 히트가 발생할 수 있다.
히트가 발생하면, S650 단계에서, 프로세서(30)는 랜덤 액세스 메모리(50)의 객체 영역(52)으로부터 객체 데이터를 읽을 수 있다. 예를 들어, 프로세서(30)는 인덱스 영역(51)에서 읽기 요청된 객체 데이터의 인덱스 엔티티를 참조할 수 있다. 프로세서(30)는 인덱스 엔티티로부터 오프셋을 획득하고, 오프셋을 이용하여 객체 영역(52)으로부터 객체 데이터를 읽을 수 있다. 이후에, 읽기가 종료된다.
랜덤 액세스 메모리(50)의 히트가 발생하지 않으면, S650 단계에서, 프로세서(30)는 스토리지 장치(100)로부터 객체 데이터를 읽을 수 있다. 예를 들어, 프로세서(30)는 인덱스 영역(51)에서 읽기 요청된 객체 데이터의 인덱스 엔티티를 참조할 수 있다. 프로세서(30)는 인덱스 엔티티로부터 스토리지 장치(100)의 어드레스를 획득하고, 어드레스를 이용하여 스토리지 장치(100)로부터 객체 데이터를 읽을 수 있다. 이후에, 읽기가 종료된다.
예시적으로, 스토리지 장치(100)로부터 객체 데이터를 읽을 때에, 랜덤 액세스 메모리(50)의 객체 영역(52)에 자유 공간이 존재하면, 프로세서(30)는 객체 데이터를 객체 영역(52)에 기입할 수 있다. 객체 데이터는 스토리지 장치(100)에서 무효화(또는 삭제)되거나 스토리지 장치(100)에서 유지될 수 있다.
도 11은 도 1의 컴퓨팅 시스템(10)에서 도 9 및 도 10을 참조하여 설명된 쓰기 또는 읽기 요청이 계층적으로 처리되는 예를 보여준다. 도 11을 참조하면, 캐시 히트가 발생한 경우에, 제1 화살표(A1)로 표시된 바와 같이 쓰기 요청 또는 읽기 요청은 캐시(31)에서 완료된다. 즉, 읽기 요청 또는 쓰기 요청은 랜덤 액세스 메모리(50) 또는 스토리지 장치(100)를 액세스하지 않고 프로세서(30) 내에서 완료된다. 따라서, 제1 화살표(A1)로 표시된 액세스는 가장 빠른 동작 속도를 가질 수 있다.
랜덤 액세스 메모리(50)의 히트가 발생한 경우, 제2 화살표(A2)로 표시된 바와 같이 쓰기 요청 또는 읽기 요청은 랜덤 액세스 메모리(50)를 액세스하여 완료된다. 따라서, 제2 화살표(A2)로 표시된 액세스는 제1 화살표로 표시된 액세스보다 느리지만 제3 화살표(A3)로 표시된 액세스보다 빠를 수 있다.
히트가 발생하지 않은 경우, 제3 화살표(A3)로 표시된 바와 같이, 쓰기 또는 읽기 요청은 랜덤 액세스 메모리(50)를 액세스하여 인덱스 엔티티를 참조하고 그리고 스토리지 장치(100)를 액세스함으로써 완료된다. 따라서, 제3 화살표(A3)로 표시된 액세스는 가장 느릴 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은 객체 데이터의 사이즈에 따라 그리고 객체 데이터의 히트 여부에 따라, 객체 데이터의 액세스 요청을 계층적으로 처리할 수 있다. 따라서, 컴퓨팅 시스템(10)의 속도가 향상되고, 자원 소비가 절감된다.
도 12는 본 발명의 실시 예에 따른 스토리지 장치(200)를 보여주는 블록도이다. 도 12를 참조하면, 스토리지 장치(200)는 불휘발성 메모리 장치(210), 컨트롤러(220), 그리고 버퍼 메모리(230)를 포함한다.
불휘발성 메모리 장치(210)는 플래시 메모리, 상 변화 메모리(PRAM), 상 변화 메모리(PRAM), 자기 메모리(MRAM), 저항 메모리(RRAM), 강유전체 메모리(FRAM) 등을 포함할 수 있다.
컨트롤러(220)는 외부의 호스트 장치의 요청에 따라, 쓰기, 읽기 또는 소거를 수행할 수 있다. 예를 들어, 컨트롤러(220)는 객체 기반의 액세스 요청을 수신하고 처리할 수 있다. 예를 들어, 컨트롤러(220)는 도 1 내지 도 11에서 프로세서(30)가 수행하는 것으로 설명된 객체 데이터와 연관된 동작들을 수행할 수 있다.
컨트롤러(220)는 버퍼 메모리(230)를 인덱스 영역(231), 객체 영역(232) 및 버퍼 영역(233)으로 분할하여 관리할 수 있다. 컨트롤러(220)는 인덱스 영역(231) 및 객체 영역(232)을 도 1 내지 도 11을 참조하여 설명된 인덱스 영역(51) 및 객체 영역(52)과 동일하게 제어 및 이용할 수 있다. 컨트롤러(220)는 버퍼 영역(233)을 도 1 내지 도 11을 참조하여 설명된 버퍼 메모리(130)와 동일하게 제어 및 이용할 수 있다.
즉, 도 1 내지 도 11에서 설명된 프로세서(30)가 랜덤 액세스 메모리(50) 및 스토리지 장치(100)를 제어 또는 액세스하는 방법은 컨트롤러(220)가 불휘발성 메모리 장치(210) 및 버퍼 메모리(230)를 제어 또는 액세스하는 방법으로 응용될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10; 컴퓨팅 시스템
20; 호스트 장치
30; 프로세서
40; 메모리 컨트롤러
50; 랜덤 액세스 메모리
51; 인덱스 영역
52; 객체 영역
100, 200; 스토리지 장치
110, 210; 불휘발성 메모리 장치
111; 사용자 영역
112; 메타 및 예비 영역
120, 220; 컨트롤러
130, 230; 버퍼 메모리
231; 인덱스 영역
232; 객체 영역
233; 버퍼 영역

Claims (10)

  1. 프로세서가 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법에 있어서:
    쓰기 요청된 데이터의 사이즈가 문턱 사이즈보다 크면, 상기 프로세서가 상기 쓰기 요청된 데이터를 상기 스토리지 장치에 기입하고, 그리고 상기 쓰기 요청된 데이터가 기입된 상기 스토리지 장치의 어드레스를 상기 랜덤 액세스 메모리에 기입하는 단계; 그리고
    상기 쓰기 요청된 데이터의 사이즈가 상기 문턱 사이즈 이하이면, 상기 프로세서가 상기 쓰기 요청된 데이터를 상기 랜덤 액세스 메모리의 제2 영역에 기입하고, 그리고 상기 쓰기 요청된 데이터가 기입된 상기 랜덤 액세스 메모리의 위치 정보를 상기 쓰기 요청된 데이터의 식별자와 함께 상기 랜덤 액세스 메모리의 제1 영역에 기입하는 단계를 포함하고,
    상기 문턱 사이즈는 상기 랜덤 액세스 메모리에서 상기 어드레스를 저장하도록 할당된 영역의 사이즈보다 큰 사이즈와 연관되는 방법.
  2. 제1 항에 있어서,
    상기 쓰기 요청된 데이터의 사이즈가 상기 문턱 사이즈보다 크면, 상기 어드레스는 상기 식별자와 함께 상기 제1 영역에 기입되는 방법.
  3. 제1 항에 있어서,
    상기 쓰기 요청된 데이터의 사이즈가 상기 문턱 사이즈 이하이고 그리고 상기 제2 영역의 자유 공간이 상기 쓰기 요청된 데이터의 사이즈보다 작으면, 상기 쓰기 요청된 데이터를 상기 스토리지 장치에 기입하고, 상기 쓰기 요청된 데이터가 기입된 상기 스토리지 장치의 어드레스를 상기 랜덤 액세스 메모리에 기입하는 단계를 더 포함하는 방법.
  4. 제1 항에 있어서,
    상기 쓰기 요청된 데이터의 사이즈가 상기 어드레스를 저장하도록 할당된 영역의 사이즈 이하이면, 상기 쓰기 요청된 데이터는 상기 식별자와 함께 상기 제1 영역에 저장되는 방법.
  5. 제1 항에 있어서,
    상기 쓰기 요청된 데이터의 식별자 및 상기 쓰기 요청된 데이터가 기입된 위치에 대한 정보를 상기 랜덤 액세스 메모리에 기입하는 단계를 더 포함하는 방법.
  6. 제5 항에 있어서,
    읽기 요청된 제2 데이터가 상기 랜덤 액세스 메모리에 저장되어 있으면, 상기 랜덤 액세스 메모리에 저장된 상기 읽기 요청된 제2 데이터의 식별자 및 위치 정보를 참조하여 상기 랜덤 액세스 메모리로부터 상기 읽기 요청된 제2 데이터를 읽고, 상기 읽기 요청된 제2 데이터를 출력하는 단계를 더 포함하는 방법.
  7. 제5 항에 있어서,
    읽기 요청된 제2 데이터가 상기 스토리지 장치에 저장되어 있으면, 상기 랜덤 액세스 메모리에 저장된 상기 읽기 요청된 제2 데이터의 식별자 및 위치 정보를 참조하여 상기 스토리지 장치로부터 상기 읽기 요청된 제2 데이터를 읽고, 상기 읽기 요청된 제2 데이터를 출력하는 단계를 더 포함하는 방법.
  8. 제1 항에 있어서,
    상기 제1 영역의 자유 공간이 상기 쓰기 요청된 데이터의 식별자 및 어드레스의 사이즈보다 작으면, 상기 제2 영역의 자유 공간을 줄이고, 상기 제2 영역으로부터 해제되는 공간을 상기 제1 영역의 자유 공간으로 설정하는 단계를 더 포함하는 방법.
  9. 제1 항에 있어서,
    상기 제1 영역의 자유 공간이 상기 쓰기 요청된 데이터의 식별자 및 어드레스의 사이즈보다 작으면, 상기 제2 영역에 이전에 기입된 이전 데이터를 상기 스토리지 장치에 기입하고, 상기 이전 데이터가 저장된 상기 제2 영역의 공간을 상기 제1 영역의 자유 공간으로 설정하는 단계를 더 포함하는 방법.
  10. 컨트롤러가 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법에 있어서:
    쓰기 요청된 데이터의 사이즈가 문턱 사이즈보다 크면, 상기 컨트롤러가 상기 쓰기 요청된 데이터를 상기 불휘발성 메모리 장치에 기입하고, 그리고 상기 쓰기 요청된 데이터가 기입된 상기 불휘발성 메모리 장치의 어드레스를 상기 버퍼 메모리에 기입하는 단계; 그리고
    상기 쓰기 요청된 데이터의 사이즈가 상기 문턱 사이즈 이하이면, 상기 컨트롤러가 상기 쓰기 요청된 데이터를 상기 버퍼 메모리에 기입하는 단계를 포함하고,
    상기 문턱 사이즈는 상기 버퍼 메모리에서 상기 어드레스를 저장하도록 할당된 영역의 사이즈보다 큰 사이즈와 연관되는 방법.
KR1020160064247A 2016-05-25 2016-05-25 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법 KR102656175B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160064247A KR102656175B1 (ko) 2016-05-25 2016-05-25 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법
US15/499,243 US10083116B2 (en) 2016-05-25 2017-04-27 Method of controlling storage device and random access memory and method of controlling nonvolatile memory device and buffer memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160064247A KR102656175B1 (ko) 2016-05-25 2016-05-25 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법

Publications (2)

Publication Number Publication Date
KR20170133569A KR20170133569A (ko) 2017-12-06
KR102656175B1 true KR102656175B1 (ko) 2024-04-12

Family

ID=60420593

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160064247A KR102656175B1 (ko) 2016-05-25 2016-05-25 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법

Country Status (2)

Country Link
US (1) US10083116B2 (ko)
KR (1) KR102656175B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102552689B1 (ko) * 2018-04-26 2023-07-05 삼성전자주식회사 데이터 저장 장치
CN110647288A (zh) * 2018-06-26 2020-01-03 上海宝存信息科技有限公司 数据储存装置及其快取分流方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070005889A1 (en) 2005-06-29 2007-01-04 Matthews Jeanna N Method, device, and system to avoid flushing the contents of a cache by not inserting data from large requests
US20090327613A1 (en) 2008-06-25 2009-12-31 International Business Machines Corporation System and Method for a Software Managed Cache in a Multiprocessing Environment
US9026717B2 (en) 2011-09-30 2015-05-05 SanDisk Technologies, Inc. Apparatus, system, and method for a persistent object store

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7634585B2 (en) * 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US8407428B2 (en) 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
KR101300657B1 (ko) * 2007-07-06 2013-08-27 삼성전자주식회사 비휘발성 메모리 및 버퍼 메모리를 포함하는 메모리 시스템및 그것의 데이터 읽기 방법
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
KR101734199B1 (ko) * 2010-12-29 2017-05-24 삼성전자주식회사 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 동작 방법
US20130275699A1 (en) 2012-03-23 2013-10-17 Hicamp Systems, Inc. Special memory access path with segment-offset addressing
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US8612402B1 (en) 2012-10-26 2013-12-17 Stec, Inc. Systems and methods for managing key-value stores
US9047328B2 (en) 2012-11-19 2015-06-02 Facebook, Inc. Searching entity-key associations using in-memory objects
US9037556B2 (en) 2012-12-03 2015-05-19 Vmware, Inc. Distributed, transactional key-value store
US9612955B2 (en) 2013-01-09 2017-04-04 Wisconsin Alumni Research Foundation High-performance indexing for data-intensive systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070005889A1 (en) 2005-06-29 2007-01-04 Matthews Jeanna N Method, device, and system to avoid flushing the contents of a cache by not inserting data from large requests
US20090327613A1 (en) 2008-06-25 2009-12-31 International Business Machines Corporation System and Method for a Software Managed Cache in a Multiprocessing Environment
US9026717B2 (en) 2011-09-30 2015-05-05 SanDisk Technologies, Inc. Apparatus, system, and method for a persistent object store

Also Published As

Publication number Publication date
KR20170133569A (ko) 2017-12-06
US20170344486A1 (en) 2017-11-30
US10083116B2 (en) 2018-09-25

Similar Documents

Publication Publication Date Title
US11579773B2 (en) Memory system and method of controlling memory system
KR101379596B1 (ko) Tlb 프리페칭
TWI684099B (zh) 剖析快取替代
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US9384123B2 (en) Memory system
KR101612922B1 (ko) 메모리 시스템 및 메모리 시스템 관리 방법
US20170192886A1 (en) Cache management for nonvolatile main memory
US20170168939A1 (en) Snoop filter for cache coherency in a data processing system
US8825946B2 (en) Memory system and data writing method
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
JP2017045457A (ja) トランザクション基盤のハイブリッドメモリモジュール、及びそれを動作させる方法
US9317448B2 (en) Methods and apparatus related to data processors and caches incorporated in data processors
JPWO2010035426A1 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
KR20230012440A (ko) 이기종 메모리 시스템에서의 로드 밸런싱을 위한 시스템 및 방법
KR20150062039A (ko) 반도체 장치 및 그 동작 방법
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
KR20090063401A (ko) 라이트 백 동작을 수행하는 캐시 메모리와 이를 포함하는시스템
KR102656175B1 (ko) 스토리지 장치 및 랜덤 액세스 메모리를 제어하는 방법 및 불휘발성 메모리 장치 및 버퍼 메모리를 제어하는 방법
JPWO2010032433A1 (ja) バッファメモリ装置、メモリシステム及びデータ読出方法
US20140195571A1 (en) Fast new file creation cache
TWI805878B (zh) 儲存系統的快取系統及其資料快取方法
US8812782B2 (en) Memory management system and memory management method
US11561906B2 (en) Rinsing cache lines from a common memory page to memory
CN107423232B (zh) Ftl快速访问方法与装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right