KR101842321B1 - 세그먼트화된 캐시 - Google Patents

세그먼트화된 캐시 Download PDF

Info

Publication number
KR101842321B1
KR101842321B1 KR1020147011104A KR20147011104A KR101842321B1 KR 101842321 B1 KR101842321 B1 KR 101842321B1 KR 1020147011104 A KR1020147011104 A KR 1020147011104A KR 20147011104 A KR20147011104 A KR 20147011104A KR 101842321 B1 KR101842321 B1 KR 101842321B1
Authority
KR
South Korea
Prior art keywords
software
type
segment
segments
pinning
Prior art date
Application number
KR1020147011104A
Other languages
English (en)
Other versions
KR20140091532A (ko
Inventor
프레드 찰스 토마스 Iii
월터 에이 가스파드
치 더블유 소
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 KR20140091532A publication Critical patent/KR20140091532A/ko
Application granted granted Critical
Publication of KR101842321B1 publication Critical patent/KR101842321B1/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/222Non-volatile 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/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 명세서의 실시예들은 캐시 정보를 저장하는 제 1 비휘발성 메모리를 세그먼팅 및 피닝하는 것에 관한 것이다. 일 실시예에서, 상기 제 1 비휘발성 메모리는 복수의 세그먼트들로 분할된다. 그 후에, 복수 타입의 소프트웨어 중의 제 1 타입의 소프트웨어가 상기 복수의 세그먼트들 중의 제 1 세그먼트에 피닝된다. 피닝된 제 1 세그먼트는 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장한다.

Description

세그먼트화된 캐시{SEGMENTED CACHES}
컴퓨팅 디바이스는 상대적으로 빠른 액세스 시간을 갖는 플래시 메모리와 같은 고속 저장 디바이스를 포함할 수 있다. 고속 저장 디바이스는 빈번하게 액세스되는 정보를 저장하는 캐시로서 사용될 수 있다. 그러나, 고속 저장 디바이스는 상대적으로 느린 액세스 시간을 갖는 HDD(hard disk drive)와 같은 다른 타입의 저장 디바이스들에 비해 저장 단위당 상대적으로 더 고가일 수 있다.
그 결과, 고속 저장 디바이스는 상대적으로 작은 저장 용량을 가질 수 있다. 고속 저장 디바이스의 용량이 가득 차는 경우, 컴퓨팅 디바이스의 성능이 영향을 받을 수 있다. 제조 업체들은 컴퓨팅 디바이스의 성능을 향상시키기 위해 고속 저장 디바이스를 보다 효율적으로 사용하는 것이 도전과제가 된다.
다음의 상세한 설명은 도면들을 참조한다.
도 1은 복수의 세그먼트들을 포함하는 제 1 비휘발성 메모리를 갖는 디바이스의 예시적 블록도이다.
도 2는 도 1의 제 1 비휘발성 메모리의 예시적 블록도이다.
도 3은 제 1 비휘발성 메모리를 세그먼팅(segmenting) 및 피닝(pinning)하기 위한 명령들을 포함하는 컴퓨팅 디바이스의 예시적 블록도이다.
도 4는 제 1 비휘발성 메모리를 세그먼팅 및 피닝하기 위한 방법의 예시적 흐름도이다.
도 5는 제 1 비휘발성 메모리를 세그먼팅 및 피닝하기 위한 방법의 다른 예시적 흐름도이다.
실시예들의 완전한 이해를 제공하기 위하여 다음의 설명에서는 특정 상세들이 제공된다. 그러나, 이러한 특정 상세들 없이도 실시예들이 실시될 수 있다는 것을 당업자는 이해할 것이다. 예를 들어, 불필요한 상세로 실시예들을 모호화하지 않기 위하여 시스템들은 블록도들로 도시될 수 있다. 다른 예들에서는, 실시예들을 모호화하는 것을 방지하기 위하여 공지의 프로세스, 구조 및 기술이 불필요한 상세없이 도시될 수 있다.
컴퓨팅 디바이스는 하드 디스크 드라이브(HDD)와 같은 저속 저장 디바이스에 부가하여, 플래시 메모리와 같은 고속 저장 디바이스를 포함할 수 있다. 고속 저장 디바이스는 저속 저장 디바이스보다 낮은 레이턴시를 가질 수 있다. 컴퓨팅 디바이스는 저속 저장 디바이스 대신에, 고속 저장 디바이스에서, 캐시 정보와 같은 빈번하게 액세스되는 정보를 더 저장함으로써 성능을 증대시킬 수 있다. 예를 들어, 컴퓨팅 디바이스는 빈번하게 액세스되는 소프트웨어 코드 및/또는 그 데이터를 포함하는 캐시 정보를 저장하기 위한 캐시로서 고속 저장 디바이스를 사용할 수 있다. 컴퓨팅 디바이스는 즉시(라이트-스루) 또는 일정 시간 이후에(라이트-백) 고속 저장 디바이스에서 업데이트된 캐시 정보를 저속 저장 디바이스에 기록한다. 예를 들어, 고속 저장 디바이스 내의 비일시적 파일들은 캐시가 플러시된(flushed) 이후에 저속 저장 디바이스에 미러링(mirroring)될 수 있다.
그러나, 고속 저장 디바이스는 컴퓨팅 디바이스에 의해 사용되고 있는 모든 캐시 정보를 저장하기에 충분히 큰 저장 용량을 갖지 않을 수도 있다. 또한, 캐시 정보가 캐시 미스(cache miss)시와 같이, 고속 저장 디바이스로부터 탐색 불가능한 경우에는, 미스된 캐시 정보는 저속 저장 디바이스로부터 탐색될 수 있다. 그러므로, 고속 저장 디바이스의 용량은 간접적으로 컴퓨팅 디바이스의 성능에 대한 보틀넥(bottleneck)의 역할을 할 수도 있다. 또한, 일반적으로 고속 저장 디바이스는 메모리 단위당 저속 저장 디바이스에 비해 상당히 더 고가이기 때문에, 고속 저장 디바이스의 저장 용량은 일반적으로 증가되지 않을 수도 있다.
또한, 제 1 애플리케이션이 사용자에 의해 계속 사용될 시에, 그 캐시 정보의 추가는 고속 저장 디바이스를 채울 수도 있으며, 이에 따라 제 1 애플리케이션이 점점 더 반응적이게 하고/하거나 성능을 향상시킬 수 있다. 예를 들어, 제 1 애플리케이션은 점점 더 고속으로 개시 또는 실행될 수 있다. 그러나, 사용자가 제 2 애플리케이션의 사용을 시작하는 경우, 이 반응성은 사용자가 제 2 애플리케이션의 캐시 정보를 대기하고 고속 저장 디바이스를 점증적으로 채울 시에 손실될 수 있다.
또한, 고속 저장 디바이스의 한정된 저장 용량으로 인하여, 제 1 애플리케이션의 캐시 정보가 제 2 애플리케이션의 캐시 정보로 오버 라이팅될 수도 있다. 그러므로, 사용자가 제 1 애플리케이션으로 스위치 백해야 하는 경우, 제 1 애플리케이션은 이전보다 초기에 덜 반응적일 수도 있다. 따라서, 새롭게 개시된 애플리케이션이 즉시 반응하지 않을 수도 있으며/있거나 고속 저장 디바이스가 현재 사용하고 있는 애플리케이션의 캐시 정보로 채워지기를 기다려야 하기 때문에, 이전에 사용된 애플리케이션으로 다시 복귀하는 경우에 반응성이 상실될 수도 있다.
실시예들은 제 1 애플리케이션의 제 1 액세스 동안이라도, 또는 심지어 제 2 애플리케이션과 같은 다른 애플리케이션이 제 1 애플리케이션의 액세스들 사이에 과대하게 사용되는 경우라도, 제 1 애플리케이션과 같은 소프트웨어가 즉시 반응할 수 있게 하거나, 초기에 더욱 반응적이게 할 수 있다. 예를 들어, 실시예들에서, 고속 저장 디바이스는 세그먼트들로 분할될 수 있다. 이러한 세그먼트들 중의 적어도 하나, 예를 들어 제 1 세그먼트는 제 1 애플리케이션과 같은 일 타입의 소프트웨어로 피닝될 수 있으며, 이에 따라 그 타입의 소프트웨어의 캐시 정보만을 저장할 수 있다. 또한, 그 타입의 소프트웨어의 캐시 정보는 그 타입의 소프트웨어가 액세스되기 이전이라도 거기에 피닝된 세스먼트를 채울 수도 있다.
예를 들어, 제 1 애플리케이션은 제 1 세그먼트에 피닝될 수 있다. 이에 따라, 제 1 애플리케이션을 개시하기 위한 소프트웨어 코드와 같은, 제 1 애플리케이션의 캐시 정보 중의 적어도 일부는 제 1 애플리케이션이 액세스되기 이전에도 제 1 세그먼트에 저장될 수 있다. 따라서, 제 1 애플리케이션은 예를 들어 사용자에 의한 제 1 액세스 시에도, 고속으로 개시되는 바와 같이, 더욱 반응적일 수 있다. 사용자는 제 2 애플리케이션을 과대하게 사용할 수 있으며, 그 후에 제 1 애플리케이션으로 스위치 백할 수 있다. 그럼에도 불구하고, 제 1 애플리케이션은 그 캐시 정보가 제 1 세그먼트에 저장될 것이기 때문에 반응성을 유지하게 된다.
이제 도면들을 참조하면, 도 1은 복수의 세그먼트들(142-1 내지 142-n)을 포함하는 제 1 비휘발성 메모리(140)를 가진 디바이스(100)의 예시적 블록도이다. 디바이스(100)의 예들은 노트북 컴퓨터, 데스크탑 컴퓨터, 복합기 시스템, 슬레이트 컴퓨팅 디바이스, 휴대용 판독 디바이스, 무선 이메일 디바이스, 휴대전화 등을 포함할 수 있다. 도 1의 실시예에서, 디바이스(100)는 프로세서(110), 세그먼팅 모듈(120), 피닝 모듈(130) 및 제 1 비휘발성 메모리(140)를 포함한다. 제 1 비휘발성 메모리(140)는 복수의 세그먼트들(142-1 내지 142-n)을 더 포함하며, 여기서 n은 1보다 큰 자연수이다.
프로세서(110)는 제 1 비휘발성 메모리(140) 및/또는 아래에 기술되는 임의의 모듈들(120 및 130)의 기능을 수행하도록 구성된 전자 회로들로부터의 명령들을 탐색 및 실행하기에 적합한 CPU, GPU, 또는 마이크로프로세서일 수 있다. 제 1 비휘발성 메모리(140)는 하나 이상의 비휘발성 머신 판독가능 저장 매체들, 예를 들어 전원이 공급되지 않는 경우에도 저장된 정보를 유지하는 임의의 전자, 자기, 광학 또는 그 밖의 물리적 저장 디바이스일 수 있다. 제 1 비휘발성 메모리(140)의 예들은 SSD(solid-state drive) 또는 플래시 메모리를 포함할 수 있다.
모듈들(120 및 130)의 각각은, 예를 들어, 아래에 기술되는 기능을 구현하기 위한 전자 회로를 포함하는 하드웨어 디바이스들을 포함할 수 있다. 부가적으로 또는 대안적으로, 각 모듈은 머신 판독가능 저장 매체, 예를 들어 제 1 비휘발성 메모리(140)에 인코딩된 일련의 명령들로서 구현될 수 있으며, 프로세서(110)에 의해 실행될 수 있다. 실시예들에서, 모듈들(120 및 130)의 몇몇은 하드웨어 디바이스들로 구현될 수 있으며, 다른 모듈들은 실행 가능한 명령들로 구현될 수 있다. 예를 들어, 모듈들(120 및 130)은 디바이스(100)에서 실행되는 운영 체제(OS)(미도시)에 의해 실행되는 애플리케이션의 일부로서 구현될 수도 있다.
제 1 비휘발성 메모리(140)는 캐시 정보를 저장하기 위한 캐시로서 사용될 수 있다. 제 1 비휘발성 메모리(140)는 디바이스(100)의 제 2 비휘발성 메모리(미도시)보다 낮은 레이턴시를 가질 수 있다. 제 2 비휘발성 메모리는 복수 타입들의 소프트웨어, 예를 들어 제 1 및/또는 제 2 타입들의 소프트웨어를 저장할 수 있다. 제 2 비휘발성 메모리는 전원이 공급되지 않는 경우에도 저장된 정보를 유지하는 하나 이상의 비휘발성 머신 판독가능 저장 매체들, 예를 들어 전자, 자기, 광학, 또는 그 밖의 물리적 저장 디바이스일 수 있다. 제 2 비휘발성 메모리의 예들은 하드디스크 드라이브(HDD) 또는 저장 드라이브를 포함할 수 있다.
캐시 정보는 다시 사용될 가능성이 높거나 또는 빈번하게 사용될 가능성이 높은 정보, 예를 들어 소프트웨어 명령들 및/또는 이와 관련된 데이터, 예를 들어 메타데이터 및/또는 사용자 또는 소프트웨어에 의해 생성 또는 수정된 데이터를 포함할 수 있다. 예를 들어, OS, 애플리케이션, 또는 웹 브라우저와 같은 복수 타입의 소프트웨어의 캐시 정보 또는 프로세서(110)나 다른 메모리와 같은 하드웨어의 캐시 정보는 캐시 데이터에 대한 더 빠른 액세스를 위해 제 1 비휘발성 메모리(140)에 저장될 수 있다.
세그먼팅 모듈(120)은 제 1 비휘발성 메모리(140)를 복수의 세그먼트들(142-1 내지 142-n)로 분할하기 위한 것이다. 세그먼트들(142-1 내지 142-n)의 개수 및 각 세그먼트들(142-1 내지 142-n)의 크기는 가변적일 수 있다. 피닝 모듈(130)은 복수 타입의 소프트웨어 중의 하나 이상을, 복수의 세그먼트들(142-1 내지 142-n) 중의 하나 이상에 피닝할 수 있다. 예를 들어, 피닝 모듈(130)은 복수 타입의 소프트웨어 중의 제 1 타입의 소프트웨어를 복수 세그먼트들(142-1 내지 142-n) 중의 제 1 세그먼트(142-1)에 피닝할 수 있다.
또한, 피닝 모듈(130)은, 예를 들어, 복수 타입의 소프트웨어 중의 제 2 타입의 소프트웨어를 복수 세그먼트들(142-1 내지 142-n) 중의 제 2 세그먼트(142-2)에 피닝할 수 있으며, 피닝된 제 2 세그먼트(142-2)는 제 2 타입의 소프트웨어와 관련된 캐시 정보를 저장하기 위한 것이다. 제 2 세그먼트(142-2)는 아직 피닝되지 않은 복수 세그먼트들(142-1 내지 142-n) 중의 임의의 것일 수 있다. 실시예들은 복수의 세그먼트들(142-1 내지 142-n) 모두가 피닝되는 것을 포함할 수 있다. 그러나, 일반적으로 복수 세그먼트들(142-1 내지 142-n) 중의 하나, 예를 들어 제 3 세그먼트(142-3)는 피닝되지 않은 채로 유지되어 일반 캐시의 역할을 할 수 있다. 예시적 제 1 비휘발성 메모리(140)는 아래에서 도 2에 관하여 보다 상세히 설명되어 있다.
세그먼트들(142-1 내지 142-n) 중의 하나를 피닝하는 것은 특정 사용을 위하여 피닝된 세그먼트의 영구 메모리 공간을 예약하는 것 또는 만드는 것을 지칭할 수 있다. 따라서, 제 1 타입의 소프트웨어가 제 1 세그먼트(142-1)에 피닝되는 경우, 피닝된 제 1 세그먼트(142-1)는 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장할 수 있다. 또한, 제 1 피닝된 세그먼트(142-1)는 제 1 타입의 소프트웨어와 관련이 없는 캐시 정보, 예를 들어 제 2 타입의 소프트웨어의 캐시 정보를 저장하지 않을 수 있다. 소프트웨어 타입의 예들은 OS, 부팅, 하이버네이트, 셧다운 또는 슬립 프로세스와 같은 프로세스, 웹 브라우저, 생성 툴들, 예를 들어, 그래픽 편집 프로그램이나 CAD 프로그램 편집기, 소프트웨어 프레임워크, 사용자 애플리케이션, 벤더 애플리케이션 등을 적어도 부분적으로 포함할 수 있다.
소프트웨어 타입들 중 하나, 예를 들어 제 1 타입의 소프트웨어가 세그먼트들(142-1 내지 142-n) 중의 하나, 예를 들어 제 1 세그먼트(142-1)에 피닝되는 경우, 피닝 모듈(130)은 예를 들어 파일들 또는 LBA(logical block address)들의 코드, 및/또는 제 1 세그먼트(142-1)에 가장 빈번하게 사용되는 제 1 타입의 소프트웨어와 관련된 데이터를 저장할 수 있다. 예를 들어, 코드는 소스 및/또는 런타임 코드를 포함할 수 있으며, 데이터는 메타데이터 및/또는 사용자 데이터를 포함할 수 있다. 또한, 코드의 적어도 일부, 예를 들어 제 1 타입의 소프트웨어를 개시하기 위한 코드는 제 1 타입의 소프트웨어가 처음 개시되기도 전에, 제 1 세그먼트(142-1)에 저장될 수 있으며, 이에 따라 제 1 타입의 소프트웨어를 더욱 신속하게 개시할 수 있다. 이러한 케이스들에서, 제 1 타입의 소프트웨어에 대한 호출들이 제 2 비휘발성 메모리에서 제 1 비휘발성 메모리(140)로 지시될 수 있다.
또한, 제 1 타입의 소프트웨어가 개시 및/또는 수정되는 경우뿐만 아니라 제 1 세그먼트(142-1)가 액세스되는 경우, 제 1 세그먼트(142-1)는 제 1 타입의 소프트웨어의 코드로 업데이트될 수 있다. 대안적으로 또는 부가적으로, 제 1 세그먼트(142-1)는 제 1 타입의 소프트웨어의 사용 레이트에 기초하여 업데이트될 수 있다. 사용 레이트는 소정 기간 동안에 제 1 타입의 소프트웨어가 액세스 및/또는 수정되는 횟수를 지칭할 수 있다. 예를 들어, 제 1 타입의 소프트웨어의 사용 레이트가 임계 사용 레이트보다 큰 경우, 피닝 모듈(130)은 제 1 세그먼트(142-1)를 업데이트할 수 있다. 피닝 모듈(130)은 그것의 이전 버전을 대체하기 위하여, 제 2 비휘발성 메모리에 저장된 업데이트 버전의 제 1 타입의 소프트웨어의 파일 또는 LBA를 강제로 제 1 세그먼트(142-1)에 푸싱(pushing)함으로써 제 1 세그먼트(142-1)를 업데이트할 수 있다.
도 1은 세그먼트들(142-1 내지 142-n) 중의 하나에 피닝되는 단일 타입의 소프트웨어만을 기술하고 있지만, 실시예들은 세그먼트들(142-1 내지 142-n) 중의 하나에 피닝되는 하나보다 많은 타입의 소프트웨어를 포함할 수 있다. 세그먼트들(142-1 내지 142-n)의 크기와 개수 그리고 세그먼트들(142-1 내지 142-n) 중의 어느 것에 피닝되는 소프트웨어의 타입은, 예를 들어, 벤더, 사용자 및/또는 모듈들(120 및 130)에 의해 결정될 수 있다. 또한, 실시예들에서, 세그먼트들(142 내지 142-n)의 크기, 개수, 및 피닝 중의 어느 것은 정적이거나 동적으로 달라질 수 있다. 정적이라는 용어는 고정되어 있거나 변경 불가능한 상태를 지칭하는 것일 수 있다. 예를 들어, 정적 세그먼트에 피닝된 소프트웨어의 크기 또는 타입은 사용자에 의해 변경될 수 없다. 피닝 모듈(130)은, 소프트웨어의 타입들의 사용 레이트들에 기초하여 소프트웨어의 타입들 중 어느 것이 세그먼트들(142-1 내지 142-n) 중의 어느 것에 피닝될 것인지를 결정할 수 있다.
일 예에서, 벤더는 디바이스(100)가 신속하게 부팅되는 것을 보장하도록 시도할 수 있다. 그러므로, 벤더는 제 1 세그먼트(142-1)를 생성하고, 부팅 프로세스와 같은 OS프로세서를 제 1 세그먼트(142-1)에 정적으로 피닝함으로써 디바이스(100)의 부팅 시간을 단축할 수 있다. 제 1 비휘발성 메모리(140)는 전원이 공급 없이도 정보를 유지할 수 있으므로, 디바이스(100)의 전원이 꺼지는 경우, 부팅 프로세스와 관련된 캐시 정보가 손실되지 않게 된다.
다른 예에서, 사용자는 GUI(graphical user interface)를 통해 세그먼트들(142-1 내지 142-n)의 크기를 다르게 할 수 있고, 세그먼트들(142-1 내지 142-n)을 삭제 또는 부가할 수 있으며/있거나 어떤 타입의 소프트웨어를 세그먼트들(142-1 내지 142-n)에 피닝할지를 변경할 수도 있다. GUI는 디바이스(100)의 OS에서 실행되며 API(application programming interface)를 통해 제 1 비휘발성 메모리(140)와 상호작용할 수 있다.
또 다른 예에서, 세그먼팅 및/또는 피닝 모듈들(120 및 130)은 적응적 알고리즘을 통해 동적으로 세그먼트들(142 ~ 142-n)의 크기, 개수, 및/또는 피닝을 달라지게 할 수 있다. 예를 들어, 세그먼팅 모듈(120)은 보통 완전하게 채워지지 않는 세그먼트들(142-1 내지 142-n) 중의 하나의 크기를 자동적으로 감소시키거나 또는 보통 완전하게 채워지는 세그먼트들(142-1 내지 142-n) 중의 다른 것의 크기를 증가시킬 수 있다. 소프트웨어 타입의 반응성(responsiveness)은 피닝된 세그먼트의 크기의 함수일 수 있다. 또한, 세그먼팅 모듈(120)은 빈번하게 액세스되지 않는 타입의 소프트웨어에 피닝되는 세그먼트들(142-1 내지 142-n) 중의 하나를 삭제할 수 있으며, 이에 따라 빈번하게 액세스되는 세그먼트들(142-1 내지 142-n) 중의 다른 것의 크기를 증가시킬 수 있다.
또한, 디바이스(100)는 단일 타입의 소프트웨어에 대한 복수의 인스턴스들을 포함할 수 있다. 예를 들어, 디바이스(100)는 Internet Explorer 및 Firefox와 같은 2개의 웹 브라우저들을 포함할 수 있다. 이 경우, 웹 브라우저 타입의 소프트웨어의 모든 인스턴스들의 캐시 정보는 제 3 세그먼트(142-3)와 같은 웹 브라우저 타입의 소프트웨어에 피닝되는 세그먼트에 관한 것일 수 있다. 다르게는, 사용자, 벤더 및/또는 피닝 모듈(130)은 어떤 소프트웨어의 타입의 예들이 피닝될지를 결정할 수 있다. 예를 들어, 사용자가 Internet Explorer보다 Firefox를 더 많이 사용하기 때문에, 사용자는 Firefox를 제 3 세그먼트(142-3)에 피닝할 수 있으며, Internet Explorer를 제 3 세그먼트(142-3)에 피닝하지 않는다. 피닝 모듈(130)은 사용 레이트에 기초하여 단일 타입의 소프트웨어 중의 어떤 인스턴스들을 피닝할지를 결정할 수 있다. 예를 들어, 피닝 모듈(130)은 가장 높은 사용 레이트를 갖는 인스턴스를 피닝할 수 있다.
일 실시예에서, 예를 들어 제 1 비휘발성 메모리(140) 및 제 2 비휘발성 메모리가 하이브리드 드라이브(hybrid drive)의 일부인 경우, 디바이스(100)는 제 1 비휘발성 메모리(140) 및 제 2 비휘발성 메모리를 제어하는 메모리 컨트롤러(미도시)를 포함할 수 있다. 이 경우에 있어서, 세그먼팅 및 피닝 모듈들(120 및 130)은 OS를 통해 메모리 컨트롤러와 통신함으로써 복수의 세그먼트들(142-1 내지 142-n)을 생성하고 피닝하는 것 중의 적어도 하나를 행할 수 있다. 예를 들어, 세그먼팅 및 피닝 모듈들(120 및 130)은 SATA 인터페이스, PATA 인터페이스, 태깅된 짧은 명령 파일들, 또는 다른 하이브리드 드라이브 통신 메커니즘들을 통해 메모리 컨트롤러와 통신할 수 있다.
전술한 바와 같이, 디바이스(100)는 RAM과 달리 전원 오프 상태에 있는 경우에도, 캐시 정보가 제 1 비휘발성 메모리(140)에 유지될 것이다. 그러나, 사용자 및/또는 벤더는 모든 캐시 정보가 유지되기를 원치는 않을 수 있다. 예를 들어, 사용자 및/또는 벤더는 개인 정보나 비밀 정보와 같은 비밀 캐시 정보 및/또는 디바이스(100)의 컴포넌트들의 일시적 컨텍스트 정보와 같은 불필요한 캐시 정보가 삭제되기를 원할 수 있다. 그럼에도 불구하고, 사용자 및/또는 벤더는 디바이스(100)의 고속 부팅을 위한 부팅 프로세스의 것 또는 사용자 애플리케이션의 고속 개시 및/또는 실행을 위한 사용자 애플리케이션의 것과 같은 캐시 정보의 잔존물을 계속해서 유지하고자 할 수도 있다.
디바이스(100)는, OS가 감소된 전력 상태에 진입하는 것과 사용자가 복수의 세그먼트들 중의 하나 이상을 삭제하도록 선택하는 것 중의 적어도 하나인 경우, 복수의 세그먼트들(142-1 내지 142-n) 중의 하나 이상을 개별적으로 삭제하는 삭제 모듈(미도시)을 포함할 수 있다. 감소된 전력 상태의 예들은 디바이스(100)가 전원 오프 상태, 하이버네이트 상태, 또는 슬립 상태에 들어가는 것을 포함할 수 있다. 예를 들어, 사용자 및/또는 벤더는 감소된 전력 상태에 들어가기 이전에 세그먼트들(142-1 내지 142-n) 중의 하나 이상을 자동적으로 삭제하도록 디바이스(100)를 설정할 수 있다. 또한, 사용자는, 예를 들어 GUI를 통해 디바이스(100)의 동작시에 세그먼트들(142-1 내지 142-n) 중의 하나 이상을 삭제할 수도 있다. 세그먼트들(142-1 내지 142-n) 중의 하나 이상을 성공적으로 삭제한 이후에 사용자에게 통지될 수 있다. 삭제 모듈은 아래의 도 5에 대하여 보다 상세히 설명될 것이다.
제 1 및/또는 제 2 세그먼트들(142-1 및 142-2)에 대하여 기술된 임의의 동작들 또는 특성들은 다른 복수의 세그먼트들(142-1 내지 142-n) 중의 어느 것에도 적용될 수 있다. 이에 따라, 실시예들은 예를 들어 그 캐시 정보에 대한 액세스 시간들을 감소시킴으로써 개시되는 시간 또는 실행 시간을 감소시키는 것에 의해 소프트웨어의 타입들의 반응성을 개선할 수 있다. 또한, 복수의 세그먼트들(142-1 내지 142-n)은 그 타입의 소프트웨어의 첫 번째 개시에서 이 반응성이 발생할 수 있게 하며/하거나 심지어 상이한 타입 소프트웨어 사이에서 전환될 때에도 이것이 유지될 수 있게 한다. 또한, 벤더는 독창적으로(OBE) 디바이스(100)의 성능을 개선시킬 수도 있다.
도 2는 도 1의 제 1 비휘발성 메모리(140)의 예시적 블록도이다. 이 실시예에서, 제 1 비휘발성 메모리(140)는 6개의 세그먼트들(142-1 내지 142-6)을 포함하며, 예를 들어 n은 6이다. 제 1 세그먼트(142-1)는 OS 프로세스와 같은 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장하는 것으로 나타나 있다. OS 프로세스의 예들은 부팅, 하이버네이트, 셧다운 또는 슬립 프로세스를 포함할 수 있다. 제 2 세그먼트(142-2)는 벤더 애플리케이션과 같은 제 2 타입의 소프트웨어와 관련된 캐시 정보를 저장하는 것으로 나타나 있다. 벤더 애플리케이션의 예들은 디바이스(100)에 사전 설치되어 있는 소프트웨어, 예를 들어 사유 소프트웨어 또는 디바이스(100)의 하드웨어 컴포넌트에 특정된 소프트웨어를 포함할 수 있다.
제 3 세그먼트(142-3)는 제 3 타입의 소프트웨어, 예를 들어 웹 브라우저와 관련된 캐시 정보를 저장하는 것으로 나타나 있다. 웹 브라우저들의 예들은 Internet Explorer, Firefox, Google Chrome, Safari, Opera 등과 같은 소프트웨어를 포함할 수 있다. 제 4 세그먼트(142-4)는 제 4 타입의 소프트웨어, 예를 들어 제 1 사용자 애플리케이션과 관련된 캐시 정보를 저장하는 것으로 나타나 있으며, 제 5 세그먼트(142-5)는 제 5 타입의 소프트웨어, 예를 들어 제 2 사용자 애플리케이션과 관련된 캐시 정보를 저장하는 것으로 나타나 있다. 제 1 및 제 2 사용자 애플리케이션들의 예들은 임의 타입의 사용자 설치된 및/또는 비-벤더 애플리케이션, 예를 들어 그래픽 프로그램, 비디오 게임, 멀티미디어 소프트웨어 등을 포함할 수 있다.
제 6 세그먼트(142-6)는 임의의 캐시 정보가 저장될 수 있는 일반 캐시인 것으로 나타나 있다. 일반 캐시는 캐시 알고리즘, 예를 들어 LRU(Least Recently Used), MRU(Most Recently Used) 등에 따라 동작할 수 있다. 이에 따라, 이 예에서, 제 1 내지 제 5 세그먼트들(142-1 내지 142-5)은 피닝되고, 제 6 세그먼트(142-6)는 비피닝된 상태를 유지한다. 예를 들어, 제 1 내지 제 5 세그먼트들(142-1 내지 142-5)에 피닝되지 않는 임의의 캐시 정보는 제 6 세그먼트(142-6)에 저장될 수 있다. 또한, 제 1 내지 제 5 세그먼트들(142-1 내지 142-5) 중의 어느 것이 채워져야 하는 경우, 제 6 세그먼트(142-6)에 피닝되어 있지 않음에도 불구하고, 추가 또는 오버플로우 캐시 정보가 제 6 세그먼트(142-6)에 또한 저장될 수도 있다. 예를 들어, 제 1 또는 제 2 세그먼트들(142-1 또는 142-2)이 완전히 채워지게 될 경우, 제 1 타입의 소프트웨어(예를 들어, OS 프로세스) 또는 제 2 타입의 소프트웨어(예를 들어, 벤더 애플리케이션 정보)와 관련된 캐시 정보가 제 6 세그먼트(142-6)에 저장될 수 있다. 세그먼트들(142-1 ~ 142-5) 중의 하나에 피닝된 캐시 정보는, 피닝된 세그먼트가 완전히 채워질 때까지 일반 캐시 또는 제 6 세그먼트(142-6)에 저장되지 않게 되며, 이에 따라 제 1 비휘발성 메모리(140)의 저장 용량의 일부가 낭비되거나 사용되지 않을 가능성을 감소시킨다.
도 2의 제 1 비휘발성 메모리(140)는 6개의 세그먼트들(142-1 내지 142-6)을 가지는 것으로 나타나 있으며, 제 1 비휘발성 메모리(140)의 실시예들은 6개보다 많거나 적은 세그먼트들을 가질 수도 있다. 또한, 제 1 비휘발성 메모리(140)의 세그먼트들의 크기 및/또는 개수는 제 1 비휘발성 메모리(140)의 저장 용량에 따라 달라질 수 있다. 예를 들어, 제 1 비휘발성 메모리(140)의 소형 저장 용량의 것보다 큰 저장 용량에 대한 더 큰 크기 및/또는 개수의 세그먼트들이 존재할 수 있다.
도 3은 제 1 비휘발성 메모리(140)를 세그먼팅 및 피닝하기 위한 명령들을 포함하는 컴퓨팅 디바이스(300)의 예시적 블록도이다. 도 3의 실시예에서, 컴퓨팅 디바이스(300)는 프로세서(310), 제 1 비휘발성 메모리(140) 및 머신 판독가능 저장 매체(320)를 포함한다. 머신 판독가능 저장 매체(320)는 제 1 비휘발성 메모리(140)를 세그먼팅 및 피닝하는 명령들(322 및 324)을 더 포함한다.
컴퓨팅 디바이스(300)는, 예를 들어, 칩 세트, 노트북 컴퓨터, 슬레이트 컴퓨팅 디바이스, 휴대용 판독 디바이스, 무선 이메일 디바이스, 이동 전화, 또는 명령들(322 및 324)을 실행할 수 있는 임의의 다른 디바이스일 수 있다. 특정 실시예들에서, 컴퓨팅 디바이스(300)는 메모리들, 센서들, 디스플레이들 등과 같은 추가 컴포넌트들에 연결되거나 이것들을 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(300)는 도 1에서 기술된 제 2 비휘발성 메모리와 유사한 제 2 비휘발성 메모리(미도시)를 포함할 수 있다. 다르게는, 제 2 비휘발성 메모리는 머신 판독가능 저장 매체(320)의 일부분일 수도 있다.
프로세서(310)는 적어도 하나의 CPU(central processing unit), 적어도 하나의 반도체-기반 마이크로 프로세서, 적어도 하나의 GPU(graphics processing unit), 머신 판독가능 저장 매체(320)에 저장된 명령들을 탐색 및 실행하기에 적합한 다른 하드웨어 디바이스들, 또는 그들의 조합들일 수 있다. 프로세서(310)는 제 1 비휘발성 메모리(140)의 세그먼팅 및 피닝을 구현하기 위하여 명령들(322 및 324)을 패치(fetch)하고, 디코딩하고, 또한 실행할 수 있다. 명령들의 탐색 및 실행에 대한 대안으로 또는 추가로, 프로세서(310)는 명령들(322 및 324)의 기능을 수행하기 위한 다수의 전자 컴포넌트들을 포함하는 적어도 하나의 IC(integrated circuit), 다른 제어 로직, 다른 전자 회로들, 또는 그들의 조합들을 포함할 수 있다.
머신 판독가능 저장 매체(320)는 실행가능한 명령들을 포함하거나 저장하는 임의의 전자, 자기, 광학, 또는 다른 물리적 저장 디바이스일 수 있다. 이에 따라, 머신 판독가능 저장 매체(320)는, 예를 들면, RAM(Random Access Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 저장 드라이브, CD-ROM(Compact Disc Read Only Memory ) 등일 수 있다. 이와 같이, 머신 판독가능 저장 매체(320)는 비-일시적일 수 있다. 아래에 상세히 기술되는 바와 같이, 머신 판독가능 저장 매체(320)는 제 1 비휘발성 메모리(140)를 세그먼팅 및 피닝하기 위한 일련의 실행가능한 명령들로 인코딩될 수 있다.
또한, (예를 들어, 하나의 프로세싱 소자 또는 프로세서의 다중 프로세싱 소자들을 통해) 프로세서에 의해 실행되는 경우, 명령들(322 및 324)은, 프로세서로 하여금 프로세스들, 예를 들어 도 4 또는 도 5의 프로세스를 수행하게 할 수 있다. 예를 들어, 세그먼트들 명령들(322)은 프로세서(310)에 의해 실행되어 제 1 비휘발성 메모리(140)를 복수의 세그먼트들로 세그먼팅할 수 있다. 핀 명령들(324)이 프로세서(310)에 의해 실행됨으로써, 복수 타입의 소프트웨어 중의 제 1 타입의 소프트웨어를 복수의 세그먼트들(142-1 내지 142-n) 중의 제 1 세그먼트(142-1)에 피닝할 수 있다. 피닝된 제 1 세그먼트는 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장한다. 또한, 핀 명령들(324)이 프로세서(310)에 의해 실행됨으로써, 복수 타입의 소프트웨어 중의 제 2 타입의 소프트웨어를 복수의 세그먼트들(142-1 내지 142-n) 중의 제 2 세그먼트(142-2)에 피닝할 수 있다. 피닝된 제 2 세그먼트(142-2)는 제 2 타입의 소프트웨어와 관련된 캐시 정보를 저장한다.
또한, 머신 판독가능 저장 매체(320)는 제 1 세그먼트가 완전히 채워지는 경우, 복수의 세그먼트들(142-1 내지 142-n) 중의 제 3 세그먼트(142-3)에 제 1 타입의 소프트웨어와 관련된 정보를 저장하고, 제 2 세그먼트가 완전히 채워지는 경우, 제 3 세그먼트(142-3)에 제 2 타입의 소프트웨어와 관련된 정보를 저장하도록 하는 명령들(미도시)을 포함할 수 있다. 디바이스(300)의 동작은 도 4 및 도 5에 대하여 더 상세히 기술될 수 있다.
도 4는 제 1 비휘발성 메모리(140)를 세그먼팅 및 피닝하기 위한 방법(400)의 예시적 흐름도이다. 이하 디바이스(100)를 참조하여 방법(400)의 실행이 기술되지만, 디바이스(300)와 같은, 방법(400)의 실행을 위한 다른 적합한 컴포넌트들이 이용될 수 있다. 추가적으로, 방법(400)을 실행하기 위한 컴포넌트들은 복수의 디바이스들(예를 들어, 입력 및 출력 디바이스들과 통신하는 프로세싱 디바이스) 사이로 확산될 수도 있다. 특정 시나리오에서, 조정의 역할을 하는 복수의 디바이스들은 방법(400)을 수행하는 단일의 디바이스로 간주될 수 있다. 방법(400)은 머신 판독가능 저장 매체, 예를 들어 저장 매체(320)에 저장된 실행가능한 명령들의 형태 및/또는 전자 회로의 형태로 구현될 수 있다.
블록(410)에서, 디바이스(100)는 캐시 정보를 저장하는 제 1 비휘발성 메모리(140)를 복수의 세그먼트들(142-1 내지 142-n)로 분할한다. 디바이스(100)는 적어도 하나의 벤더 사양, 사용자 명령, 및 제 1 비휘발성 메모리(140)의 크기에 기초하여, 블록(410)에서 복수의 세그먼트들(142-1 내지 142-n)의 개수와 크기를 초기에 설정할 수 있다. 복수의 세그먼트들(142-1 내지 142-n)의 개수와 크기 중의 적어도 하나는 사용자 명령 및 복수 타입의 소프트웨어의 사용 패턴 중의 적어도 하나에 기초하여, 블록(410)에서 동적으로 변경될 수 있다.
그 후에, 블록(420)에서, 디바이스(100)는 복수 타입의 소프트웨어 중의 제 1 타입의 소프트웨어를 복수의 세그먼트들(142-1 내지 142-n) 중의 제 1 세그먼트(142-1)에 피닝한다. 피닝된 제 1 세그먼트(142-1)는 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장한다. 전술한 바와 같이, 디바이스(100)는 블록(420)에서, 복수 타입의 소프트웨어의 사용 패턴 및 사용자 명령 중의 적어도 하나에 기초하여 복수의 세그먼트들(142-1 내지 142-n) 중의 하나에 복수 타입의 소프트웨어 중의 하나 이상을 동적으로 피닝할 수 있다.
예를 들어, 디바이스(100)는 제 2 타입의 소프트웨어를 복수의 세그먼트들(142-1 내지 142-n) 중의 제 2 세그먼트(142-2)에 피닝할 수 있다. 디바이스(100)는 블록(420)에서, 복수의 세그먼트들(142-1 내지 142-n) 모두를 피닝하지 않을 수도 있으며, 예를 들어 복수의 세그먼트들(142-1 내지 142-n) 중의 제 3 세그먼트(142-3)에 피닝하지 않을 수 있다. 또한, 블록(420)에서, 디바이스(100)는 제 1 세그먼트(142-1)가 완전히 채워지는 경우, 제 3 세그먼트(142-3)에 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장할 수 있으며, 제 2 세그먼트(142-2)가 완전히 채워지는 경우, 제 3 세그먼트(142-3)에 제 2 타입의 소프트웨어와 관련된 캐시 정보를 저장할 수 있다.
또한, 디바이스(100)는 블록(420)에서, 제 1 타입의 소프트웨어로 분류된 제 1 및 제 2 애플리케이션들의 사용 레이트를 결정할 수 있으며, 결정된 사용 레이트에 기초하여 피닝된 제 1 세그먼트(142-1)에 제 1 및 제 2 애플리케이션들을 동적으로 피닝한다. 디바이스(100)는 블록(420)에서, 제 1 타입의 소프트웨어가 수정되거나 개시되는 것 중의 적어도 하나인 경우, 피닝된 제 1 세그먼트(142-1)를 업데이트한다. 디바이스(100)는 피닝된 제 1 세그먼트(142-1)로부터 제 1 타입의 소프트웨어를 개시하는 것과, 제 1 타입의 소프트웨어로부터 피닝된 제 1 세그먼트(142-1)로의 호출들을 지시하는 것 중의 적어도 하나를 행한다.
도 5는 제 1 비휘발성 메모리(140)를 세그먼팅 및 피닝하기 위한 방법(500)의 다른 예시적 흐름도이다. 이하에서는 디바이스(100)를 참조하여 방법(500)의 실행을 기술하지만, 디바이스(300)와 같이, 방법(500)의 실행을 위한 다른 적합한 컴포넌트들이 이용될 수 있다. 추가적으로, 방법(500)을 실행하기 위한 컴포넌트들은 복수의 디바이스들(예를 들어, 입력 및 출력 디바이스들과 통신하는 프로세싱 디바이스) 사이에서 확산될 수 있다. 특정 시나리오에서, 조정의 역할을 하는 복수의 디바이스들은 방법(500)을 수행하는 단일의 디바이스로 간주될 수 있다. 방법(500)은 머신 판독가능 저장 매체, 예를 들어 저장 매체(320)에 저장된 실행가능한 명령들의 형태 및/또는 전자 회로의 형태로 구현될 수 있다.
도 5의 블록(510)은 도 4의 블록(410)과 유사할 수 있으며, 도 5의 블록(520)은 도 4의 블록(420)과 유사할 수 있다. 예를 들어, 블록(510)에서, 디바이스(100)는 캐시 정보를 저장하는 제 1 비휘발성 메모리(140)를 복수의 세그먼트들(142-1 내지 142-n)로 분할한다. 그 후에, 블록(520)에서, 디바이스(100)는 복수 타입의 소프트웨어 중의 제 1 타입의 소프트웨어를 복수의 세그먼트들(142-1 내지 142-n) 중의 제 1 세그먼트(142-1)에 피닝한다. 피닝된 제 1 세그먼트(142-1)는 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장한다. 블록(530)에서, 디바이스(100)가 감소된 전력 상태에 들어간 것과 사용자가 복수의 세그먼트들(142-1 내지 142-n) 중의 하나 이상을 삭제하도록 선택하는 것 중의 적어도 하나인 경우, 디바이스(100)는 복수의 세그먼트들(142-1 내지 142-n) 중의 하나 이상을 개별적으로 삭제한다. 예를 들어, 디바이스(100)의 삭제 모듈은 디바이스(100)가 감소된 전력 상태에 들어가기 이전에, 복수의 세그먼트들(142-1 내지 142-n) 중의 제 1 세그먼트(142-1)를 즉시 삭제하도록 하는 명령을 사용자로부터 수신하고/하거나 제 1 세그먼트(142-1)를 삭제하도록 하는 디바이스(100)의 OS로부터의 명령을 수신할 수 있다.
그러나, 제 1 비휘발성 메모리(140)가 플래시 또는 SSD 메모리를 포함하는 경우, 제 1 비휘발성 메모리(140)는 복수의 세그먼트들(142-1 내지 142-n)의 처리 구조에 대응하지 않는 블록들의 유닛들을 지울 수만 있다. 예를 들면, 블록들 중의 하나를 지우는 것은 복수의 세그먼트들(142-1 내지 142-n) 중의 제 1 세그먼트(142-1)의 일부만 및/또는 제 2 세그먼트(142-2)의 일부만을 지울 수 있다. 제 1 세그먼트(142-1)만이 삭제되는 것을 보장하기 위해, 삭제 모듈은 제 1 비휘발성 메모리(140)의 플래시 컨트롤러(미도시)와 통신할 수 있다.
플래시 컨트롤러는 데이터의 저장, 탐색 및 업데이트하기 위한 절차들, 그리고 제 1 비휘발성 메모리(140)의 사용 가능 공간을 관리하는 절차를 제공하는 데 사용되는 플래시 파일 시스템을 유지할 수 있다. 예를 들어, 블록들은 기록되기 이전에 명시적으로 삭제되어야 할 수도 있으므로, 플래시 컨트롤러는 디바이스(100)가 유휴상태에 있는 동안에 사용되지 않는 블록들을 삭제함으로써 시간을 절약할 수 있다. 또한, 플래시 컨트롤러는 웨어 레벨링(wear leveling)을 감소시키거나 방지하기 위해 제 1 비휘발성 메모리(140)의 전부에 균일하게 쓰기를 배포할 수 있으며, 이것은 블록들 중 하나가 반복적으로 덮어 쓰기에 의해 소모되는 경우에 발생한다.
삭제 모듈은 플래시 컨트롤러와 통신하여 복수의 세그먼트들(142-1 내지 142-n)과 제 1 비휘발성 메모리(140) 블록들의 매핑 사이의 상관관계를 결정하도록 할 수 있다. 또한, 삭제 모듈은 플래시 컨트롤러와 통신하여 삭제되지 않을 복수의 세그먼트들(142-1 내지 142-n)의 캐시 정보를 유지하도록 할 수 있다. 예를 들어, 제 1 세그먼트(142-1)를 삭제하는 것이 또한 제 2 세그먼트(142-2)의 적어도 일부를 삭제하게 되는 경우, 예를 들어 제 1 및 제 2 세그먼트들(142-1 및 142-2)이 동일 블록의 일부를 공유하는 경우, 삭제 모듈은 플래시 컨트롤러와 통신하여 삭제될 블록 내의 제 2 세그먼트(142-2)의 캐시 정보를 다른 위치, 예를 들어 다른 메모리 블록에 먼저 저장하도록 할 수 있다. 다르게는, 삭제될 블록 내의 제 3 세그먼트(142-3)의 캐시 정보가 다른 메모리, 예를 들어 저장 매체(320) 또는 제 2 비휘발성 메모리에 저장될 수도 있다. 그 후에, 삭제 모듈은 플래시 컨트롤러와 통신하여 제 1 세그먼트(142-1)의 캐시 정보를 저장하는 하나 이상의 블록들을 삭제함으로써 제 1 세그먼트(142-1)를 삭제하도록 할 수 있다. 그 후에, 삭제 모듈은 플래시 컨트롤러에게 지시하여 제 3 세그먼트(142-3)의 캐시 정보가 저장된 위치에 따라, 제 3 세그먼트(142-3)의 캐시 정보를 라이트 백(write back)하도록 할 수 있다.
또한, 블록(530)에서, 삭제 모듈은 OS와 통신하여 하나 이상의 세그먼트들(142-1 내지 142-n)의 삭제가 완료될 때까지, 디바이스(100)가 감소된 전력 상태에 들어가는 것을 지연시키도록 할 수 있다. 그러나, 디바이스(100)가 감소된 전력 상태에 들어가기 이전에 하나 이상의 복수의 세그먼트들(142-1 내지 142-n)의 삭제가 완료되지 않는 경우, 삭제 모듈은 디바이스(100)가 높은 전력 상태, 예를 들어 파워 온(power on) 상태로 복귀할 시에 계속해서 하나 이상의 복수의 세그먼트들(142-1 내지 142-n)을 삭제하게 된다. 또한, 복수의 세그먼트들(142-1 내지 142-n) 중의 하나 이상의 삭제가 완료될 때까지는, 삭제되고 있는 복수의 세그먼트들(142-1 내지 142-n) 중의 하나 이상은 캐시 정보를 저장하도록 사용가능하지 않을 수 있다. 실시예들은 삭제에 대해 상기 절차를 기술하였지만, 실시예들이 이에 한정되지 않는다. 예를 들어, 디바이스(100)는 세그먼트들(142-1 내지 142-n) 중의 적어도 하나의 캐시 정보를 덮어쓰기 및/또는 암호화/복호화 하는 유사 절차들을 수행할 수도 있다.
상기에 따르면, 실시예들은 캐시 정보를 저장하는 제 1 비휘발성 메모리를 세그먼팅 및 피닝하기 위한 방법 및/또는 디바이스를 제공한다. 예를 들어, 제 1 타입의 소프트웨어의 캐시 정보는 복수의 세그먼트들 중 제 1 세그먼트에 피닝될 수 있다. 이에 따라, 실시예들에서, 제 1 타입의 소프트웨어는 제 1 타입의 소프트웨어의 첫 번째 액세스 동안이라도, 또는 제 1 타입의 소프트웨어의 액세스들 사이에 제 2 타입의 소프트웨어가 과도하게 사용되는 경우에도, 즉시 반응할 수 있으며 또는 초기에 더욱 반응할 수 있다.

Claims (15)

  1. 캐시를 세그먼팅(segmenting)하는 방법으로서,
    캐시 정보를 저장하는 제 1 비휘발성 메모리를 복수의 세그먼트들로 분할하는 단계와,
    복수 타입의 소프트웨어 중 제 1 타입의 소프트웨어를 상기 복수의 세그먼트들 중 제 1 세그먼트에 피닝(pinning)하는 단계 - 피닝된 상기 제 1 세그먼트는 상기 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장함 - 를 포함하되,
    상기 피닝은 상기 제 1 타입의 소프트웨어로 분류된 제 1 애플리케이션 및 제 2 애플리케이션의 사용 레이트(usage rate)를 결정 - 상기 사용 레이트는 주어진 시간 동안 상기 제 1 타입의 소프트웨어가 액세스 및/또는 수정(modified)된 횟수를 의미함 - 하고,
    상기 피닝은 결정된 상기 사용 레이트에 기초하여 상기 제 1 애플리케이션 및 상기 제 2 애플리케이션 중 하나를 피닝된 상기 제 1 세그먼트에 동적으로 피닝하는
    방법.
  2. 제 1 항에 있어서,
    상기 피닝은 상기 복수 타입의 소프트웨어 중 제 2 타입의 소프트웨어를 상기 복수의 세그먼트들 중 제 2 세그먼트에 피닝하고,
    피닝된 상기 제 2 세그먼트는 상기 제 2 타입의 소프트웨어와 관련된 캐시 정보를 저장하는
    방법.
  3. 제 2 항에 있어서,
    상기 제 1 타입의 소프트웨어 및 상기 제 2 타입의 소프트웨어는 일 타입의 애플리케이션 및 운영 체제(OS)와 관련된 일 타입의 프로세스 중 적어도 하나이며,
    상기 애플리케이션은 웹 브라우저, 사용자 애플리케이션 및 벤더 애플리케이션(vendor application) 중 적어도 하나이며,
    상기 프로세스는 부팅(boot), 하이버네이트(hibernate), 셧다운(shutdown) 및 슬립(sleep) 프로세스 중 적어도 하나인
    방법.
  4. 제 3 항에 있어서,
    상기 피닝은 상기 복수의 세그먼트들 중의 제 3 세그먼트를 피닝하지 않으며, 상기 제 1 세그먼트가 완전히 채워지는 경우, 상기 피닝은 상기 제 1 타입의 소프트웨어와 관련된 캐시 정보를 상기 제 3 세그먼트에 저장하고,
    상기 피닝은 상기 제 2 세그먼트가 완전히 채워지는 경우, 상기 제 2 타입의 소프트웨어와 관련된 캐시 정보를 상기 제 3 세그먼트에 저장하는
    방법.
  5. 제 1 항에 있어서,
    상기 분할은 벤더 사양(vendor specification), 사용자 명령, 및 상기 제 1 비휘발성 메모리의 크기 중 적어도 하나에 기초하여 상기 복수의 세그먼트들의 개수 및 크기를 초기에 설정하며,
    상기 분할은 상기 사용자 명령 및 상기 복수 타입의 소프트웨어의 사용 패턴에 기초하여 상기 복수의 세그먼트들의 개수 및 크기 중 적어도 하나를 동적으로 변경하는
    방법.
  6. 제 1 항에 있어서,
    상기 피닝은 상기 복수 타입의 소프트웨어의 사용 패턴 및 사용자 명령 중 적어도 하나에 기초하여 상기 복수 타입의 소프트웨어 중 하나를 상기 복수의 세그먼트들 중의 하나에 동적으로 피닝하는
    방법.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 피닝은 상기 제 1 타입의 소프트웨어가 수정되거나(modified) 개시되는(launched) 것 중 적어도 하나인 경우 피닝된 상기 제 1 세그먼트를 업데이트하고,
    상기 피닝은 피닝된 상기 제 1 세그먼트로부터 상기 제 1 타입의 소프트웨어를 개시하는 것과 피닝된 상기 제 1 세그먼트로의 상기 제 1 타입의 소프트웨어에 대한 호출들을 지시하는 것 중 적어도 하나를 행하는
    방법.
  9. 제 1 항에 있어서,
    상기 제 1 비휘발성 메모리를 포함하는 디바이스가 감소된 전력 상태(reduced power state)에 진입하는 것과 사용자가 하나 이상의 복수의 세그먼트들이 삭제되도록 선택하는 것 중의 적어도 하나인 경우, 상기 복수의 세그먼트들 중 하나 이상을 개별적으로 삭제하는 단계를 더 포함하는
    방법.
  10. 제 9 항에 있어서,
    상기 삭제는, 상기 디바이스가 상기 감소된 전력 상태에 진입하기 이전에 상기 하나 이상의 복수의 세그먼트들의 삭제가 완료되지 않은 경우, 상기 디바이스가 높은 전력 상태(high power state)로 복귀할 때에 상기 하나 이상의 복수의 세그먼트들을 계속하여 삭제하는 것이며,
    삭제되는 상기 하나 이상의 복수의 세그먼트들은 상기 삭제가 완료될 때까지 상기 캐시 정보를 저장하는 것으로 사용 불가능한
    방법.
  11. 비일시적 컴퓨터 판독가능 저장매체로서,
    디바이스의 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    캐시 정보를 저장하는 제 1 비휘발성 메모리를 복수의 세그먼트들로 세그먼팅하게 하고,
    복수 타입의 소프트웨어 중의 제 1 타입의 소프트웨어를 상기 복수의 세그먼트들 중의 제 1 세그먼트에 피닝 - 피닝된 상기 제 1 세그먼트는 상기 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장함 - 하게 하는 명령들을 저장하되,
    상기 피닝은 상기 제 1 타입의 소프트웨어로 분류된 제 1 애플리케이션 및 제 2 애플리케이션의 사용 레이트(usage rate)를 결정 - 상기 사용 레이트는 주어진 시간 동안 상기 제 1 타입의 소프트웨어가 액세스 및/또는 수정(modified)된 횟수를 의미함 - 하고,
    상기 피닝은 결정된 상기 사용 레이트에 기초하여 상기 제 1 애플리케이션 및 상기 제 2 애플리케이션 중 하나를 피닝된 상기 제 1 세그먼트에 동적으로 피닝하는
    비일시적 컴퓨터 판독가능 저장매체.
  12. 제 11 항에 있어서,
    상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    상기 복수 타입의 소프트웨어의 제 2 타입의 소프트웨어를 상기 복수의 세그먼트들의 제 2 세그먼트에 피닝하게 하는 명령들을 더 포함하고,
    피닝된 상기 제 2 세그먼트는 상기 제 2 타입의 소프트웨어와 관련된 캐시 정보를 저장하고,
    상기 제 1 타입의 소프트웨어 및 상기 제 2 타입의 소프트웨어 중 적어도 하나는 사용자 명령, 벤더 사양, 및 사용 레이트 중 적어도 하나에 기초하여 피닝되도록 선택되는
    비일시적 컴퓨터 판독가능 저장매체.
  13. 제 12 항에 있어서,
    상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    상기 제 1 세그먼트가 완전히 채워지는 경우, 상기 제 1 타입의 소프트웨어와 관련된 정보를 상기 복수의 세그먼트들 중 제 3 세그먼트에 저장하게 하고,
    상기 제 2 세그먼트가 완전히 채워지는 경우, 상기 제 2 타입의 소프트웨어와 관련된 정보를 상기 제 3 세그먼트에 저장하게 하는 명령들을 더 포함하는
    비일시적 컴퓨터 판독가능 저장매체.
  14. 캐시 정보를 저장하는 제 1 비휘발성 메모리와,
    상기 제 1 비휘발성 메모리를 복수의 세그먼트들로 분할하는 세그먼팅 모듈과,
    피닝 모듈을 포함하되, 상기 피닝 모듈은,
    복수 타입의 소프트웨어 중 제 1 타입의 소프트웨어를 상기 복수의 세그먼트들 중 제 1 세그먼트에 피닝 - 피닝된 상기 제 1 세그먼트는 상기 제 1 타입의 소프트웨어와 관련된 캐시 정보를 저장함 - 하고,
    상기 제 1 타입의 소프트웨어로 분류된 제 1 애플리케이션 및 제 2 애플리케이션의 사용 레이트(usage rate)를 결정 - 상기 사용 레이트는 주어진 시간 동안 상기 제 1 타입의 소프트웨어가 액세스 및/또는 수정(modified)된 횟수를 의미함 - 하고,
    결정된 상기 사용 레이트에 기초하여 상기 제 1 애플리케이션 및 상기 제 2 애플리케이션 중 하나를 피닝된 상기 제 1 세그먼트에 동적으로 피닝하는
    디바이스.
  15. 제 14 항에 있어서,
    상기 제 1 타입의 소프트웨어를 저장하는 제 2 비휘발성 메모리와, 상기 제 1 비휘발성 메모리 및 상기 제 2 비휘발성 메모리를 제어하는 메모리 컨트롤러를 더 포함하고,
    상기 세그먼팅 모듈 및 상기 피닝 모듈은 운영 체제(OS)를 통해 상기 메모리 컨트롤러와 통신하여 상기 복수의 세그먼트들을 생성하는 것과 피닝하는 것 중 적어도 하나를 행하는
    디바이스.
KR1020147011104A 2011-10-26 2011-10-26 세그먼트화된 캐시 KR101842321B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/057913 WO2013062542A1 (en) 2011-10-26 2011-10-26 Segmented caches

Publications (2)

Publication Number Publication Date
KR20140091532A KR20140091532A (ko) 2014-07-21
KR101842321B1 true KR101842321B1 (ko) 2018-03-26

Family

ID=48168213

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147011104A KR101842321B1 (ko) 2011-10-26 2011-10-26 세그먼트화된 캐시

Country Status (9)

Country Link
US (1) US9697115B2 (ko)
EP (1) EP2771795B1 (ko)
JP (1) JP2014534520A (ko)
KR (1) KR101842321B1 (ko)
CN (1) CN103999062A (ko)
BR (1) BR112014009920B1 (ko)
IN (1) IN2014CN02958A (ko)
TW (2) TWI574203B (ko)
WO (1) WO2013062542A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189172B1 (en) 2012-01-06 2015-11-17 Seagate Technology Llc High priority read and write
US9268692B1 (en) * 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) * 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US11122013B2 (en) * 2017-02-16 2021-09-14 Emerald Cactus Ventures, Inc. System and method for encrypting data interactions delineated by zones
US11165825B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for creating encrypted virtual private network hotspot
WO2018151851A1 (en) * 2017-02-16 2018-08-23 Tenta, Llc System and method for establishing simultaneous encrypted virtual private networks from a single computing device
US20180336131A1 (en) * 2017-05-22 2018-11-22 Dell Products L.P. Optimizing Memory/Caching Relative to Application Profile
TWI649652B (zh) * 2017-12-29 2019-02-01 國科美國研究實驗室 Fast and safe data storage device and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020112116A1 (en) * 2000-11-17 2002-08-15 Nelson Mark Edward Methods, systems, and computer program products for storing data in collections of tagged data pieces
US20080244183A1 (en) * 2005-02-15 2008-10-02 Atushi Ishikawa Storage system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0216654A (ja) * 1988-07-05 1990-01-19 Hitachi Ltd キャッシュメモリ制御方法
EP0389151A3 (en) * 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
EP0475639A3 (en) * 1990-08-31 1992-06-03 Kawasaki Steel Corporation Hard disk emulator
JPH0511933A (ja) * 1991-07-08 1993-01-22 Kawasaki Steel Corp ハードデイスクエミユレータ及びその固定キヤツシユエリア割付方法
JPH06282488A (ja) * 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JP3750163B2 (ja) * 1995-10-16 2006-03-01 株式会社日立製作所 キャッシュディスク制御
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH10333984A (ja) * 1997-05-30 1998-12-18 Matsushita Electric Ind Co Ltd 記録再生装置
US7089371B2 (en) 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
JP4095840B2 (ja) * 2002-06-25 2008-06-04 株式会社日立製作所 キャッシュメモリ管理方法
JP2004118305A (ja) * 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
KR100970933B1 (ko) 2003-07-26 2010-07-20 엘지전자 주식회사 오퍼레이팅 시스템의 고속 부팅장치 및 방법
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20070005898A1 (en) 2005-06-30 2007-01-04 William Halleck Method, apparatus and system for task context cache replacement
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US20080005462A1 (en) 2006-06-30 2008-01-03 Mosaid Technologies Incorporated Method of configuring non-volatile memory for a hybrid disk drive
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7554855B2 (en) 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
JP2008250718A (ja) 2007-03-30 2008-10-16 Toshiba Corp 不揮発性キャッシュメモリを用いた記憶装置とその制御方法
US7890691B2 (en) 2007-09-28 2011-02-15 Intel Corporation Memory cache sharing in hybrid hard disk
US20110066792A1 (en) * 2008-02-10 2011-03-17 Rambus Inc. Segmentation Of Flash Memory For Partial Volatile Storage
US7895374B2 (en) 2008-07-01 2011-02-22 International Business Machines Corporation Dynamic segment sparing and repair in a memory system
US8214596B2 (en) 2008-09-30 2012-07-03 Intel Corporation Apparatus and method for segmented cache utilization
US8407398B2 (en) 2008-10-01 2013-03-26 Lenovo (Singapore) Pte. Ltd. Cache mapping for solid state drives
US20100088459A1 (en) 2008-10-06 2010-04-08 Siamak Arya Improved Hybrid Drive
EP2452266A4 (en) 2009-07-07 2013-12-04 Lsi Corp SYSTEMS AND METHODS FOR PROGRESSIVE NON-VOLATILE STORAGE

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020112116A1 (en) * 2000-11-17 2002-08-15 Nelson Mark Edward Methods, systems, and computer program products for storing data in collections of tagged data pieces
US20080244183A1 (en) * 2005-02-15 2008-10-02 Atushi Ishikawa Storage system

Also Published As

Publication number Publication date
US20140297937A1 (en) 2014-10-02
IN2014CN02958A (ko) 2015-07-03
WO2013062542A8 (en) 2014-07-03
EP2771795B1 (en) 2016-06-01
EP2771795A1 (en) 2014-09-03
TWI574203B (zh) 2017-03-11
EP2771795A4 (en) 2015-08-05
TWI498811B (zh) 2015-09-01
JP2014534520A (ja) 2014-12-18
TW201546712A (zh) 2015-12-16
BR112014009920B1 (pt) 2021-06-15
TW201329858A (zh) 2013-07-16
CN103999062A (zh) 2014-08-20
US9697115B2 (en) 2017-07-04
KR20140091532A (ko) 2014-07-21
WO2013062542A1 (en) 2013-05-02
BR112014009920A2 (pt) 2017-04-25

Similar Documents

Publication Publication Date Title
KR101842321B1 (ko) 세그먼트화된 캐시
KR101572403B1 (ko) 메모리 채널 셧다운에 의한 전력 절약
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
US9183136B2 (en) Storage control apparatus and storage control method
JP2011128998A (ja) 半導体記憶装置
JP2010152909A (ja) 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
JP5860543B2 (ja) ブートデータのロード
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20100114381A (ko) 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법
US8112589B2 (en) System for caching data from a main memory with a plurality of cache states
US10162760B2 (en) Hibernation based on page source
CN111694510B (zh) 数据储存装置与数据处理方法
KR20200016075A (ko) 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
KR20130024271A (ko) 하드 디스크 드라이브와 불휘발성 메모리를 포함하는 스토리지 시스템
US20080109612A1 (en) Dynamic Code Relocation for Low Endurance Memories
CN110727470B (zh) 一种混合式非失性存储装置
US20100191899A1 (en) Information Processing Apparatus and Data Storage Apparatus
KR101974731B1 (ko) 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법
KR101039397B1 (ko) Mla의 독출 동작 속도를 증가시키기 위한 멀티 포트 메모리 장치의 공유 영역 관리 방법 및 그를 위한 프로그램을 기록한 컴퓨터로 독출 가능한 기록매체
Ryu et al. Fast Application Launch on Personal {Computing/Communication} Devices
JP2010152517A (ja) 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法

Legal Events

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