KR20200141094A - 메모리를 위한 프리패치 관리 - Google Patents

메모리를 위한 프리패치 관리 Download PDF

Info

Publication number
KR20200141094A
KR20200141094A KR1020207035148A KR20207035148A KR20200141094A KR 20200141094 A KR20200141094 A KR 20200141094A KR 1020207035148 A KR1020207035148 A KR 1020207035148A KR 20207035148 A KR20207035148 A KR 20207035148A KR 20200141094 A KR20200141094 A KR 20200141094A
Authority
KR
South Korea
Prior art keywords
memory
memory page
page
value
data
Prior art date
Application number
KR1020207035148A
Other languages
English (en)
Other versions
KR102536192B1 (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 KR20200141094A publication Critical patent/KR20200141094A/ko
Application granted granted Critical
Publication of KR102536192B1 publication Critical patent/KR102536192B1/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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/6022Using a prefetch buffer or dedicated prefetch cache
    • 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/6024History based prefetching
    • 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/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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 (AREA)

Abstract

무선 통신을 위한 방법, 시스템, 및 디바이스가 설명된다. 메모리 어레이의 메모리 페이지에 위치된 데이터에 대한 요청이 디바이스에서 수신될 수 있고, 메모리 페이지와 연관된 프리패치 카운터의 값이 식별될 수 있다. 요청된 데이터를 포함하는 메모리 페이지의 일부는 그 다음, 프리패치 카운터의 값에 기초하여 디바이스의 메모리 어레이와 메모리 뱅크 사이에 전달될 수 있다. 예를 들면, 메모리 페이지의 일부는 프리패치 카운터의 값에 기초하여 선택될 수 있다. 메모리 페이지의 제2 부분은 디바이스의 버퍼에 전달될 수 있고, 프리패치 카운터의 값은 메모리 페이지의 제1 부분과 메모리 페이지의 제2 부분 사이의 관계에 기초하여 수정될 수 있다.

Description

메모리를 위한 프리패치 관리
상호 참조
본 특허 출원은 미국 특허 출원 제15/975,614호(발명자: Hasbun 등, 출원일: 2018년 5월 9일, 발명의 명칭: "Prefetch Management For Memory"), 및 미국 특허 출원 제16/105,545호(발명자: Hasbun 등, 출원일: 2018년 8월 20일, 발명의 명칭: "Prefetch Management For Memory")에 대한 우선권을 주장하며, 이들 각각은 양수인에게 할당되고 전체적으로 참조에 의해 명확하게 원용된다.
하기 내용은 일반적으로, 메모리 시스템에 관한 것이고, 더 구체적으로 메모리를 위한 프리패치 관리(prefetch management)에 관한 것이다.
메모리 시스템은 컴퓨터, 무선 통신 디바이스, 사물 인터넷 디바이스, 카메라, 디지털 디스플레이, 등과 같은 많은 전자 디바이스에서 정보를 관리하기 위해 하나 이상의 버스를 통해 결합될 수 있는 다양한 종류의 메모리 디바이스 및 제어기를 포함할 수 있다. 메모리 디바이스는 이러한 전자 디바이스에 정보를 저장하기 위해 널리 사용된다. 정보는 메모리 디바이스 내의 하나 이상의 메모리 셀의 상이한 상태를 프로그래밍함으로써 메모리 디바이스에 저장될 수 있다. 예를 들면, 이진 메모리 셀은 종종 논리("1") 또는 논리("0")로서 표시된 2개의 상태 중 하나를 저장할 수 있다. 일부 메모리 셀은 2개보다 많은 상태를 저장할 수 있다.
자기 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 RAM(DRAM), 동기식 동적 RAM(SDRAM), 강유전성 RAM(FeRAM), 자기 RAM(MRAM), 저항성 RAM(RRAM), 플래시 메모리, 상 변화 메모리(phase change memory: PCM), 등을 포함하는 다양한 유형의 메모리 디바이스가 존재한다. 메모리 디바이스는 휘발성이거나 비휘발성일 수 있다. 비휘발성 메모리 셀은 심지어 외부 전력원이 없는 경우에도 장기간 동안 그들의 저장된 논리 상태를 유지할 수 있다. 휘발성 메모리 셀 예로서, DRAM 셀은 그들이 외부 전력원에 의해 주기적으로 리프레시되지 않는 한 시간이 지남에 따라 그들의 저장된 논리 상태를 잃을 수 있다.
일반적으로, 메모리 시스템을 개선하는 것은 다른 미터법 중에서, 시스템 전력 소비 감소, 메모리 시스템 용량 증가, 판독/기록 속도 개선, 영구적인 주 메모리 사용에 의한 비휘발성 제공, 또는 특정 성능 지점에서 제조 비용 절감을 포함할 수 있다. 메모리 페이지 크기는 메모리 디바이스에 액세스하기 위해 사용된 시스템 전력 및 전력에 영향을 줄 수 있다. 게다가, 메모리 액세스가 특정한 시스템에 맞춰지지 않은 경우 시스템 전력이 영향을 받거나 증가될 수 있다.
도 1은 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 지원하는 비휘발성 메모리 시스템 또는 서브 시스템을 포함하는 시스템의 다이어그램을 도시한 도면.
도 2는 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 지원하는 일 예시적인 메모리 시스템 또는 서브 시스템을 도시한 도면.
도 3은 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 지원하는 일 예시적인 데이터 구조 및 상태 다이어그램을 도시한 도면.
도 4a 및 도 4b는 본 발명의 예에 따른 프리패치 동작에 대한 일 예시적인 프로세스 흐름을 도시한 도면.
도 5는 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 지원하는 디바이스의 블록도.
도 6 내지 도 8은 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 위한 방법을 도시하는 흐름도.
메모리 시스템은 데이터를 저장하기 위해 상이한 메모리 기술을 활용할 수 있다. 예를 들면, 메모리 시스템은 제1 메모리 어레이(DRAM과 같은 휘발성 메모리 어레이일 수 있음) 및 제2 메모리 어레이(FeRAM 또는 3D XPoint™와 같은 비휘발성 메모리 어레이일 수 있음)를 포함할 수 있다. 휘발성 메모리 어레이는 비휘발성 메모리 어레이보다 적은 레이턴시(latency)를 사용하여 외부 프로세서와의 통신을 수행할 수 있다. 또한, 일부 경우에, 휘발성 메모리 어레이에서 수행된 액세스 동작(예컨대, 판독/기록 동작)은 비휘발성 메모리 어레이에서 수행된 액세스 동작보다 적은 전력을 소비할 수 있다. 비휘발성 메모리 어레이는 그러나 - 예컨대, 다양한 리프레시 동작을 감소시키거나 제거함으로써 휘발성 메모리 어레이에 비해 장기적인 전력 소비를 감소시킬 수 있다. 그리고, 휘발성 메모리 어레이와 달리, 비휘발성 메모리 어레이는 비휘발성 메모리 어레이가 전력이 끊긴 경우에도 저장된 데이터를 유지할 수 있다. 일부 경우에, 메모리 시스템은 이들 기술 둘 모두의 유익한 특성을 최대한 활용하도록 구성되고 동작 가능할 수 있다.
예를 들면, 메모리 시스템은 대부분의 데이터를 비휘발성 메모리 어레이에 저장할 수 있고 데이터를 휘발성 메모리 어레이로 전략적으로 이동할 수 있다. 일부 경우에, 메모리 시스템은 데이터에 대한 액세스 요청을 수신하기 전에 비휘발성 메모리 어레이에 저장되고 휘발성 메모리 어레이에 액세스될 가능성이 있는 데이터를 선제적으로 이동할 수 있다. 이 동작은 "프리패치" 동작으로서 언급될 수 있다. 프리패치 동작 동안, 메모리 시스템은 액세스될 가능성이 있는 데이터의 하나 이상의 페이지(또는 "페이지" 또는 "메모리 페이지")를 비휘발성 메모리 어레이로부터 휘발성 메모리 어레이로 이동시킬 수 있다. 이러한 방식으로, 메모리 시스템은 비휘발성 메모리 어레이에서 수행된 액세스 동작을 감소시킬 수 있고, 따라서 휘발성 메모리 어레이에 액세스하는 것과 연관된 상대적으로 빠른 타이밍을 최대한 활용함으로써 메모리 시스템의 데이터 처리량을 증가시킬 수 있다.
부가적으로 또는 대안적으로, 메모리 시스템은 부분적인 프리패치 동작을 수행할 수 있다. 예를 들면, 메모리 시스템은 전체 메모리 페이지와 대조적으로 메모리 페이지의 일부를 프리패치할 수 있다. 일부 경우에, 메모리 시스템은 비휘발성 메모리 어레이에 저장된 데이터에 대해 수행된 이전 액세스 동작에 기초하여(즉, 액세스 이력에 기초하여) 메모리 페이지의 일부를 프리패치할 수 있다. 이러한 방식으로, 비휘발성 메모리 어레이는 메모리 페이지의 어느 부분이 이전 액세스 동작에 기초하여 액세스될 가능성이 있는지를 결정할 수 있고, 휘발성 메모리 어레이에 액세스될 가능성이 있는 메모리 페이지의 부분을 제공할 수 있다. 예를 들면, 메모리 시스템은 비휘발성 메모리 페이지의 2개의 부분이 종종 함께 액세스된다고 결정할 수 있고 비휘발성 메모리 어레이로 하여금 메모리 페이지의 어느 한 부분이 액세스될 때 비휘발성 메모리 어레이의 두 부분에 대응하는 데이터를 휘발성 메모리 어레이에 전달하게 할 수 있다. 일부 경우에, 메모리 페이지는 메모리 서브페이지(또는 "서브페이지")로 분할될 수 있고 메모리 페이지의 일부는 하나 이상의 서브페이지에 대응할 수 있다.
상기 논의된 바와 같이, 메모리 시스템은 휘발성 메모리 어레이 및 비휘발성 메모리 어레이를 포함할 수 있다. 휘발성 메모리 어레이는 제1 크기를 가지는 하나 이상의 메모리 페이지로 구성될 수 있고, 디바이스는 페이지 크기에 따라 데이터를 메모리 어레이에 저장할 수 있다. 일부 예에서, 휘발성 메모리 어레이는 동적 랜덤 액세스 메모리(DRAM) 어레이일 수 있고 예를 들면, 2048 바이트의 페이지 크기를 가지는 메모리 페이지를 사용할 수 있다. 일부 경우에, 디바이스는 디바이스와 관련된 사용자 애플리케이션의 동작을 지원하기 위해 휘발성 메모리 어레이에 저장된 데이터를 요청할 수 있다. 예를 들면, 디바이스의 프로세서는 휘발성 메모리 어레이에서 판독 동작을 개시할 수 있고, 휘발성 메모리 어레이는 요청된 데이터를 프로세서에 제공할 수 있다. 휘발성 메모리 어레이는 요청된 데이터를 포함하는 메모리 페이지를 식별할 수 있고 요청된 데이터를 프로세서에 제공하기 전에 전체 메모리 페이지에 액세스할 수 있다. 프로세서는 명시된 전압 및 타이밍 요구조건과 연관되는 특정 프로토콜(예컨대, DRAM 메모리 액세스 프로토콜)에 따라 휘발성 메모리 어레이와 통신할 수 있다.
비휘발성 메모리 어레이는 제2 미리 결정된 크기 또는 가변 크기를 사용하여 메모리 페이지에 데이터를 저장할 수 있다. 비휘발성 메모리 어레이는 일부 경우에, 휘발성 어레이보다 작은 페이지 크기(예컨대, 64 바이트, 128 바이트, 192 바이트, 또는 256 바이트)를 사용할 수 있다. 게다가, DRAM 어레이와 달리, 비휘발성 메모리 어레이는 메모리 페이지의 하나 이상의 부분에서 다른 메모리 셀의 논리 상태를 방해하지 않고 그 부분(예컨대, 다수의 64 바이트 부분)에 액세스할 수 있다. 판독 동작 동안 더 적은 수의 메모리 셀에 액세스하는 것은 비휘발성 메모리 어레이의 전력 소비를 감소시킬 수 있다. 비휘발성 메모리 어레이는 그러나, 특정 메모리 액세스 프로토콜(예컨대, DRAM 메모리 액세스 프로토콜)과 호환가능하지 않을 수 있다. 예를 들면, 비휘발성 메모리 어레이는 DRAM 어레이와 상이한 전압 및/또는 타이밍을 사용하여 액세스될 수 있다. 따라서, 비휘발성 메모리 어레이는 DRAM 메모리 액세스 프로토콜을 사용하여 전달하도록 구성되는 프로세서에 의해 직접적으로 액세스 가능할 수 없다.
비휘발성 메모리 어레이는 휘발성 메모리 어레이보다 페이지 크기가 작음에도 불구하고, 휘발성 메모리 어레이보다 큰 저장 용량을 가질 수 있다. 특정 메모리 액세스 프로토콜에 따라 동작하는 프로세서는 휘발성 메모리 어레이에 직접 액세스하고 비휘발성 메모리 어레이에 (예컨대, 메모리 제어기를 통해) 간접 액세스할 수 있다. 일부 예에서, 프로세서는 단일 메모리 어레이로서 메모리 시스템과 통신하도록 구성될 수 있고 제1 메모리 액세스 프로토콜(예컨대, DRAM 메모리 액세스 프로토콜)을 사용하여 액세스 요청을 전송한다. 메모리 제어기는 프로세서로부터의 액세스 요청을 해석하고 요청된 데이터를 프로세서에 제공할 수 있다. 일부 경우에, 휘발성 메모리 어레이에 저장된 데이터는 프로세서의 메모리 액세스 프로토콜의 사양을 사용하여 그리고 사양 내에서 액세스될 수 있고, 비휘발성 메모리 어레이에 저장된 데이터는 프로세서에 의해 사용된 메모리 액세스 프로토콜의 사양 내에서 액세스 가능하지 않을 수 있다 - 예컨대, 일 대안적인 메모리 기술을 사용하는 비휘발성 메모리 어레이로 인해.
메모리 시스템이 지정된 시간 기간 내에 요청된 데이터를 검색할 수 없을 때 요청된 데이터를 얻는데 지연이 존재할 것이라는 표시는 프로세서로 전송될 수 있다. 예를 들면, 메모리 제어기는 프로세서가 휘발성 메모리 어레이가 아닌 비휘발성 메모리 어레이에 저장되는 데이터를 요청할 때 판독 지연을 나타낼 수 있다 - 예컨대, 비휘발성 메모리 어레이의 데이터에 액세스하기 위한 더 느린 타이밍으로 인해. 프로세서는 표시를 수신한 후에, 데이터를 위해 부가적인 시간의 양을 대기할 수 있으며, 요청된 데이터는 수정된 타이밍에 따라 프로세서에 제공될 수 있다. 일부 예에서, 요청된 데이터는 또한, 프로세서로부터 데이터에 대한 후속 액세스 요청을 수신할 것을 예상하여 휘발성 메모리 어레이로 이동될 수 있다.
상기 및 일부 예에서 논의된 바와 같이, 비휘발성 메모리 어레이에 저장된 특정 메모리 페이지는 달리 메모리 페이지에 위치된 데이터가 요청되기 전에 미래의 액세스 지연을 회피하기 위해 휘발성 메모리 어레이로 선제적으로 이동될 수 있다(즉, 데이터가 프리패치될 수 있다). 일부 예에서, 비휘발성 메모리 어레이에 저장된 데이터에 대한 액세스 패턴은 휘발성 메모리 어레이로 이동할 메모리 페이지를 동적으로 결정하기 위해 모니터링된다 - 예컨대, 어떤 메모리 페이지가 특정 시간 기간 내에서 액세스될 가능성이 있는 데이터를 포함하는지 결정하기 위해. 예를 들면, 카운터("포화 카운터(saturation counter)"로서 언급될 수 있음)는 특정 시간 기간 또는 주기 내에서 특정 메모리 페이지의 데이터에 액세스되는 횟수를 모니터링하기 위해 사용될 수 있으며, 메모리 페이지는 카운터의 값에 기초하여 비휘발성 메모리 어레이로부터 휘발성 메모리 어레이로 이동될 수 있다.
전력 소비는 전체 메모리 페이지를 프리패치하는 대신에 메모리 페이지의 부분을 프리패치함으로써 더 감소될 수 있다. 메모리 페이지의 프리패치된 부분은 메모리 페이지에 있는 데이터의 액세스 이력에 기초하여 선택될 수 있다. 상기 논의된 바와 같이, 프리패치된 부분은 메모리 페이지의 하나 이상의 서브페이지를 포함할 수 있다. 예를 들면, 자주 액세스되거나 특정 횟수로 액세스된 메모리 페이지 부분이 프리패치될 수 있다. 일부 예에서, 카운터의 값("프리패치 카운터(prefetch counter)"로서 언급될 수 있음)은 비휘발성 메모리 어레이로부터 휘발성 메모리 어레이로 이동될 메모리 페이지의 서브페이지 수 및/또는 서브페이지를 나타내기 위해 사용될 수 있다. 각각의 메모리 페이지는 프리패치 카운터와 연관될 수 있고, 각각의 프리패치 카운터의 값은 각각의 메모리 페이지의 액세스 이력, 또는 액세스 패턴, 또는 둘 모두에 기초하여 적응될 수 있다. 일부 예에서, 메모리 제어기는 서브페이지의 각각에 대한 각각의 포화 카운터를 포함할 수 있고 프리패치 카운터의 값은 포화 카운터의 값에 기초할 수 있다.
일부 예에서, 메모리 페이지의 일부는 메모리 페이지에 위치된 데이터에 대한 요청 및 프리패치 카운터의 값을 수신하는 것에 기초하여 비휘발성 메모리 어레이로부터 휘발성 메모리 어레이로 전달될 수 있다. 예를 들면, 프로세서로부터 데이터에 대한 요청이 수신될 수 있고 데이터를 포함하는 비휘발성 메모리 어레이의 메모리 페이지가 식별될 수 있다. 일부 예에서, 메모리 페이지와 연관된 프리패치 카운터의 값 및 요청된 데이터를 포함하는 서브페이지가 또한 식별될 수 있다. 식별된 서브페이지 및 프리패치 카운터의 값은 비휘발성 메모리 어레이와 휘발성 메모리 어레이 사이에서 통신하기 위해 메모리 페이지의 어느 부분, 또는 메모리 페이지의 일부의 크기를 결정하기 위해 사용될 수 있다.
일부 예에서, 메모리 시스템은 휘발성 메모리 어레이 및 비휘발성 메모리 어레이에 더하여, 메모리 버퍼(또는 "버퍼")를 포함할 수 있다. 일부 경우에, 버퍼는 또한, 휘발성 메모리 어레이일 수 있다. 메모리 시스템은 어떤 서브페이지가 버퍼로 송신되는지에 기초하여 프리패치 카운터의 값을 업데이트할 수 있다. 예를 들면, 데이터의 3개의 서브페이지(데이터의 192 바이트에 대응할 수 있음)를 포함하는 메모리 페이지의 일부는 대응하는 프리패치 카운터의 값에 기초하여 휘발성 메모리 어레이로 송신될 수 있다. 후속적으로, 휘발성 메모리 어레이에서 서브페이지의 각각에 대해 수행된 액세스 동작의 횟수가 모니터링될 수 있다. 일부 예에서, 3개의 서브페이지 중 단지 2개에 대응하는 데이터는 휘발성 메모리 어레이로부터 버퍼로 송신될 수 있고 대응하는 프리패치 카운터의 값이 수정될 수 있다. 예를 들면, 프리패치 카운터는 메모리 페이지에 액세스한 다음에 3개의 서브페이지 대신에, 데이터의 2개의 서브페이지(데이터의 128 바이트에 대응할 수 있음)를 포함하는 메모리 페이지의 일부가 비휘발성 메모리 어레이로부터 휘발성 메모리 어레이로 송신되도록 수정될 수 있다. 일부 경우에, 버퍼에 저장된 서브페이지가 축출될 때까지 프리패치 카운터 값이 업데이트되지 않는다.
상기 소개된 본 발명의 특징은 도 1의 맥락으로 일 예시적인 시스템 레벨에서 하기에 더 설명된다. 이어서, 메모리 시스템 및 동작의 특정 예가 도 2 내지 도 4의 맥락으로 설명된다. 본 발명의 이들 및 다른 특징은 도 5의 장치 다이어그램에 의해 그리고 이를 참조하여 더 도시되고 설명되고, 그들은 제어기와 관련된 다양한 구성요소뿐만 아니라, 주 메모리를 위한 프리패치 관리의 동작과 관련되는 도 6 내지 도 8의 흐름도를 설명한다.
도 1은 본 발명의 예에 따라 주 메모리를 위한 프리패치 관리를 지원하는 메모리 시스템 또는 서브 시스템을 포함하는 시스템(100)의 다이어그램을 도시한다. 시스템(100)은 디바이스(105)를 포함할 수 있다. 디바이스(105)는 인터페이스 제어기(120), SoC 또는 프로세서(130), 및 다양한 메모리 디바이스(170, 175, 및 180)를 포함할 수 있다. 디바이스(105)는 또한, 입력/출력 제어기(135), 기본 입력/출력 시스템(BIOS) 구성요소(140), 보드 지원 패키지(BSP)(145), 주변 구성요소(들)(150), 및 직접 메모리 액세스 제어기(DMAC)(155)를 포함할 수 있다. 디바이스(105)의 구성요소는 버스(110)를 통해 서로 전자 통신할 수 있다.
디바이스(105)는 컴퓨팅 디바이스, 전자 디바이스, 모바일 컴퓨팅 디바이스, 또는 무선 디바이스일 수 있다. 디바이스(105)는 휴대용 전자 디바이스일 수 있다. 예를 들면, 디바이스(105)는 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 휴대폰, 착용가능한 디바이스, 인터넷 연결 디바이스, 등일 수 있다. 일부 예에서, 디바이스(105)는 기지국 또는 액세스 포인트를 통한 양방향 무선 통신을 위해 구성될 수 있다. 일부 예에서, 디바이스(105)는 기계 유형 통신(MTC), 기계 대 기계(M2M) 통신, 또는 디바이스 대 디바이스(D2D) 통신을 할 수 있다. 디바이스(105)는 사용자 장비(UE), 스테이션(STA), 모바일 단말, 등으로서 언급될 수 있다.
인터페이스 제어기(120)는 SoC/프로세서(130)와 인터페이스하도록 구성될 수 있다. 인터페이스 제어기(120)는 또한, 다양한 메모리 디바이스(170, 175, 180), 또는 그들의 임의의 조합과 인터페이스하도록 구성될 수 있다.
SoC/프로세서(130)는 다양한 메모리 디바이스(170, 175, 180), 또는 그들의 임의의 조합과 함께 동작하도록 구성될 수 있다 - 직접적으로 또는 인터페이스 제어기(120)을 통해. SoC/프로세서(130)는 또한, 호스트로서 언급될 수 있으며, 호스트 제어기를 포함할 수 있다. 일부 경우에, SoC/프로세서(130)는 본 명세서에서 설명된 인터페이스 제어기(120)의 기능 중 일부 또는 전부를 수행할 수 있다. SoC/프로세서(130)는 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 반도체(application-specific integrated circuit: ASIC), 필드 프로그래밍가능한 게이트 어레이(FPGA) 또는 다른 프로그래밍가능한 논리 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 구성요소일 수 있거나, 그것은 이들 유형의 구성요소의 조합일 수 있다.
메모리 디바이스(170)는 각각 디지털 정보를 저장하기 위한 메모리 셀의 어레이 또는 어레이들을 포함할 수 있다. 메모리 디바이스(170)는 각각 SoC/프로세서(130) 및/또는 인터페이스 제어기(120)와 함께 동작하도록 구성될 수 있다. 일부 예에서, 메모리 디바이스(170)는 SoC/프로세서(130) 또는 인터페이스 제어기(120)를 위해 메모리 뱅크(memory bank)에 버퍼 메모리를 제공하도록 구성될 수 있다. 디바이스(105)는 임의의 수의 메모리 디바이스(170)를 포함할 수 있다.
메모리 디바이스(175)는 메모리 셀의 어레이 및 메모리 셀의 어레이와 함께 동작하도록 구성된 로컬 메모리 제어기를 포함할 수 있다. 메모리 디바이스(175)에 포함된 메모리 셀의 어레이는 각각 상이한 성능 능력을 가질 수 있는 2개 이상의 계층으로 구조화될 수 있다. 메모리 디바이스(175)의 로컬 메모리 제어기는 또한, SoC/프로세서(130) 또는 인터페이스 제어기(120)와 함께 동작하도록 구성될 수 있다. 일부 예에서, 제1 계층 메모리 셀은 다양한 작업량을 취급하기 위한 짧은 응답 시간을 초 당 많은 수의 입력/출력 동작(IOPS)에 제공할 수 있는 3D XPointTM 메모리일 수 있다. 일부 예에서, 제2 계층 메모리 셀은 제1 계층 메모리 셀보다 상대적으로 낮은 비용으로 데이터 저장장치에 고 용량을 제공할 수 있는 3차원 NAND(Not-AND) 메모리일 수 있다. 메모리 디바이스(175)의 로컬 메모리 제어기는 메모리 디바이스(175) 내의 메모리 셀의 효율적인 동작을 용이하게 하도록 구성될 수 있으며, 메모리 디바이스는 SoC/프로세서(130)를 통해, 2개 이상의 계층의 메모리 셀 사이에 상이한 특성을 가질 수 있다. 메모리 디바이스(175)는 일부 경우에 다른 유형의 메모리 어레이 또는 메모리 어레이의 조합을 포함할 수 있다. 일부 예에서, 하나 이상의 메모리 디바이스(175)는 디바이스(105)에 존재할 수 있다.
메모리 디바이스(180)는 메모리 셀의 하나 이상의 어레이 및 메모리 셀의 하나 이상의 어레이와 함께 동작하도록 구성된 로컬 메모리 제어기를 포함할 수 있다. 메모리 디바이스(180)의 로컬 메모리 제어기는 또한, SoC/프로세서(130) 또는 인터페이스 제어기(120)와 함께 동작하도록 구성될 수 있다. 일부 예에서, 메모리 디바이스(180)는 비휘발성 또는 휘발성 메모리 셀, 또는 비휘발성 및 휘발성 메모리 셀 둘 모두의 조합을 포함할 수 있다. 비휘발성 메모리 셀(예컨대, FeRAM 메모리 셀)은 외부 전력원이 없는 상태에서 장기간 동안 그것의 저장된 논리 상태를 유지할 수 있고, 그에 의해 리프레시 동작(예컨대, DRAM 셀과 연관된 것들과 같은 리프레시 동작)을 수행하기 위한 요구조건을 감소시키거나 제거한다.
메모리 디바이스(180)에 비휘발성 메모리 셀(예컨대, FeRAM 메모리 셀)의 어레이를 포함하는 것은 디바이스(105)에 다양한 이득(예컨대, 효율성 이득)을 제공할 수 있다. 이러한 이득은 거의 제로에 가까운 대기 전력(이는 배터리 수명을 증가시킬 수 있음), 대기 또는 무전원(예컨대, "오프") 상태에 따른 즉각적인 동작, 및/또는 휘발성 메모리 셀의 어레이에 비해 시스템 전력 소비가 낮은 높은 영역의 메모리 밀도를 포함할 수 있다. 비휘발성 메모리 시스템 또는 서브 시스템의 이러한 특징은 예를 들면, 모바일 환경에서 계산 집약적인(예컨대, 데스크톱 애플리케이션) 동작 또는 소프트웨어의 사용을 지원할 수 있다. 일부 예에서, 하나 이상의 메모리 디바이스(180)가 디바이스(105)에 존재할 수 있다. 일부 경우에, 디바이스(105)는 다른 메모리 기술을 사용하는 하나 이상의 비휘발성 메모리 어레이와 함께 하나 이상의 FeRAM 어레이와 같은, 상이한 비휘발성 메모리 기술을 이용하는 다수의 종류의 비휘발성 메모리 어레이를 포함할 수 있다. 게다가, 본 명세서에서 설명된 이득은 단지 예시적일 뿐이며, 당업자는 또 다른 이득을 인식할 수 있다.
일부 경우에, 메모리 디바이스(180)는 SoC/프로세서(130)와 상이한 페이지 크기를 사용할 수 있다. 메모리 디바이스의 맥락에서, 페이지 크기는 다양한 인터페이스에서 취급된 데이터의 크기를 언급할 수 있고, 상이한 메모리 디바이스 유형은 상이한 페이지 크기를 가질 수 있다. 일부 예에서, SoC/프로세서(130)는 DRAM 페이지 크기(예컨대, 하나 이상의 JEDEC 저 전력 더블 데이터 레이트(LPDDR) 사양에 따른 페이지 크기)를 사용할 수 있고, 디바이스(105) 내의 디바이스(180)는 상이한 페이지 크기(예컨대, 전형적인 DRAM 페이지 크기보다 작은 페이지 크기)를 제공하도록 구성되는 비휘발성 메모리 셀의 어레이를 포함할 수 있다. 일부 예에서, 메모리 디바이스(180)는 가변 페이지 크기를 지원할 수 있다 - 예컨대, 메모리 디바이스(180)는 다수의 페이지 크기를 지원하는 비휘발성 메모리 셀의 어레이(예컨대, FeRAM 어레이)를 포함할 수 있으며, 사용된 페이지 크기는 액세스 동작마다 달라질 수 있고 - 메모리 디바이스(180)의 로컬 메모리 제어기는 메모리 디바이스(180) 내의 메모리 어레이에 대한 가변 페이지 크기를 취급하도록 구성될 수 있다. 예를 들면, 일부 경우에, 활성화된 워드 라인에 연결된 비휘발성 메모리 셀의 서브세트는 활성화된 워드 라인에 연결된 모든 비휘발성 메모리 셀을 감지하지 않고 동시에 감지될 수 있고, 그에 의해 메모리 디바이스(180) 내에서 가변 페이지 크기 연산을 지원한다. 일부 경우에, 비휘발성 메모리 셀의 어레이에 대한 페이지 크기는 액세스 명령어의 본질 및 연관된 데이터(예컨대, 액세스 명령어에 종속된 데이터)의 특성(예컨대, 크기 또는 연관된 레이턴시)에 의존하여 동적으로 달라질 수 있다. 더 적은 수의 메모리 셀이 주어진 액세스 동작과 관련하여 활성화될 수 있으므로 더 작은 페이지 크기가 이득(예컨대, 효율성 이득)을 제공할 수 있다. 가변 페이지 크기의 사용은 원할 때 페이지 크기를 증가시킴으로써 고 성능 동작을 지원하면서 페이지 크기를 감소시킴으로써 동작이 정보의 작은 변화와 연관될 때 구성가능하고 효율적인 에너지 사용과 같은 또 다른 이득을 디바이스(105)에 제공할 수 있다.
일부 예에서, 디바이스(105)는 SoC/프로세서(130)와의 통신을 용이하게 하기 위해 "프리패칭" 기술을 이용할 수 있다. 예를 들면, 디바이스(105)는 메모리 디바이스(180)로 하여금 SoC/프로세서(130)에 의해 아직 요청되지 않은 데이터를 메모리 디바이스(175)로 송신하게 할 수 있다. 이러한 방식으로, SoC/프로세서(130)는 제2 부가적인 시도를 사용하여 메모리 디바이스(180)로부터 데이터를 검색하기 위해 지연된 판독 동작을 수행하는 대신에 제1 시도를 사용하여 메모리 디바이스(175)에 위치된 요청된 데이터에 액세스할 수 있다. 게다가, SoC/프로세서(130)는 SoC/프로세서(103)에서 구성된 메모리 액세스 프로토콜에 따라 메모리 디바이스(175)에 위치된 데이터에 액세스할 수 있다.
부가적으로 또는 대안적으로, 디바이스(105)는 SoC/프로세서(130)에 의해 요청된 데이터를 포함하는 메모리 페이지의 부분(예컨대, 서브페이지)을 프리패치할 수 있다. 이러한 방식으로, 디바이스(105)는 전력 소비를 더 감소시키고 디바이스(105)에서 처리량을 증가시킬 수 있다. SoC/프로세서(130)는 메모리 디바이스(180)에 위치된 메모리 페이지의 서브페이지에 위치된 데이터를 요청할 수 있다. 메모리 디바이스(180)는 요청된 데이터를 포함하는 서브페이지를 SoC/프로세서(130) 및/또는 메모리 디바이스(175)로 송신할 수 있다. 일부 예에서, 메모리 디바이스(180)는 또한, 메모리 페이지의 부가적인 서브페이지를 요청된 데이터를 포함하는 서브페이지와 함께(또는 대안적으로, 더하여) 메모리 디바이스(175)로 송신할 수 있다. 일부 경우에, 부가적인 서브페이지를 송신하기 위한 결정은 다양한 인자 또는 다른 표시(예컨대, 메모리 페이지에 대한 액세스 동작과 관련된 이력 정보)에 기초할 수 있다. 일부 예에서, 프리패치 카운터는 메모리 페이지의 서브페이지에 대해 수행된 과거 액세스 동작을 모니터링하기 위해 사용될 수 있다. 즉, 프리패치 카운터의 값은 메모리 페이지의 하나 이상의 서브페이지에 대해 수행된 이전 및 후속 액세스 동작에 기초하여 (예컨대, 동적으로) 업데이트될 수 있다. 일부 예에서, 각각의 메모리 페이지는 각각의 프리패치 카운터와 연관될 수 있다.
DMAC(155)는 메모리 디바이스(170, 175, 또는 180)와 관련하여 SoC/프로세서(130)에 의한 직접 메모리 액세스(예컨대, 판독 또는 기록) 동작을 지원할 수 있다. 예를 들면, DMAC(155)는 인터페이스 제어기(120)의 개입 또는 동작 없이 메모리 디바이스(170, 175, 또는 180)의 SoC/프로세서(130)에 의한 액세스를 지원할 수 있다.
주변 구성요소(들)(150)는 임의의 입력 또는 출력 디바이스, 또는 디바이스(105)에 통합될 수 있는 임의의 이러한 디바이스를 위한 인터페이스일 수 있다. 주변 구성요소(들)(150)의 예는 디스켓 제어기, 사운드 제어기, 그래픽 제어기, 이더넷 제어기, 모뎀, 범용 직렬 버스(USB) 제어기, 직렬 또는 병렬 포트, 또는 주변 구성요소 상호연결(PCI) 또는 가속 그래픽 포트(AGP) 슬롯과 같은 주변 카드 슬롯을 포함할 수 있다. 주변 구성요소(들)(150)는 또한, 주변 장치로서 당업자에 의해 이해된 다른 구성요소를 포함할 수 있다.
BIOS 구성요소(140) 또는 보드 지원 패키지(BSP)(145)는 시스템(100)의 다양한 하드웨어 구성요소를 초기화하고 실행할 수 있는, 펌웨어로서 동작된 기본 입력/출력 시스템(BIOS)을 포함하는 소프트웨어 구성요소일 수 있다. BIOS 구성요소(140) 또는 BSP(145)는 또한, SoC/프로세서(130)와 다양한 구성요소 예로서, 주변 구성요소(들)(150), 입력/출력 제어기(135), 등 사이의 데이터 흐름을 관리할 수 있다. BIOS 구성요소(140) 또는 BSP(145)는 판독 전용 메모리(ROM), 플래시 메모리, 또는 임의의 다른 비휘발성 메모리에 저장된 프로그램 또는 소프트웨어를 포함할 수 있다. 일부 경우에, BIOS 구성요소(140) 및 BSP(145)는 단일 구성요소로서 조합될 수 있다.
입력/출력 제어기(135)는 SoC/프로세서(130)와 주변 구성요소(들)(150), 입력 디바이스(160), 또는 출력 디바이스(165)를 포함하는 다른 디바이스 사이의 데이터 통신을 관리할 수 있다. 입력/출력 제어기(135)는 또한, 디바이스(105)에 통합되지 않은 주변 장치를 관리할 수 있다. 일부 경우에, 입력/출력 제어기(135)는 외부 주변 장치에 대한 물리적 연결 또는 포트를 포함할 수 있다.
입력 디바이스(160)는 디바이스(105) 또는 그것의 구성요소에 입력을 제공하는 디바이스(105) 외부의 디바이스 또는 신호를 표현할 수 있다. 일부 경우에, 입력 디바이스(160)는 사용자 인터페이스 또는 다른 디바이스와의 또는 그들 사이의 인터페이스(도 1에 도시되지 않음)를 포함할 수 있다. 일부 경우에, 입력 디바이스(160)는 주변 구성요소(들)(150)를 통해 디바이스(105)와 인터페이스하거나 입력/출력 제어기(135)에 의해 관리되는 주변 장치일 수 있다.
출력 디바이스(165)는 디바이스(105) 또는 그것의 구성요소 중 임의의 것으로부터 출력을 수신하도록 구성되는 디바이스(105) 외부의 디바이스 또는 신호를 표현할 수 있다. 예를 들면, 출력 디바이스(165)는 디스플레이, 오디오 스피커, 인쇄 디바이스, 또는 인쇄 회로 기판의 또 다른 프로세서, 등을 포함할 수 있다. 일부 경우에, 출력 디바이스(165)는 주변 구성요소(들)(150)를 통해 디바이스(105)와 인터페이스하거나 입력/출력 제어기(135)에 의해 관리되는 주변 장치일 수 있다.
디바이스(105)의 구성요소는 그들의 각각의 기능을 수행하도록 설계된 범용 또는 특수화된 회로로 구성될 수 있다. 이것은 다양한 회로 요소 예를 들면, 전도성 라인, 트랜지스터, 커패시터, 인덕터, 저항기, 증폭기, 또는 본 명세서에서 설명된 기능을 수행하도록 구성된 다른 능동 또는 수동 요소를 포함할 수 있다.
도 2는 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 지원하는 일 예시적인 메모리 시스템 또는 서브 시스템을 도시한다. 시스템(200)은 도 1을 참조하여 설명된 바와 같이 시스템(100)의 양태를 포함할 수 있고 디바이스(210)를 포함할 수 있다. 디바이스(210)는 도 1을 참조하여 설명된 바와 같이 디바이스(105)의 양태를 포함할 수 있다. 디바이스(210)는 메모리 서브 시스템(220), SoC/프로세서(250), 및 저장장치(260)를 포함할 수 있다. SoC/프로세서(250)는 도 1을 참조하여 설명된 바와 같이 SoC/프로세서(130)의 일례일 수 있다. 메모리 서브 시스템(220)은 도 1을 참조하여 설명된 바와 같이 메모리 디바이스(180)의 일례일 수 있다. 저장장치(260)는 도 1을 참조하여 설명된 바와 같이 메모리 디바이스(175)의 일례일 수 있다.
SoC/프로세서(250)는 버스(280)를 통해 저장장치(260) 및 버스(270 및 275)를 통해 메모리 서브 시스템(220)과 함께 동작하도록 구성될 수 있다. 일부 예에서, 버스(280)는 주변 구성요소 상호연결 익스프레스(PCIe) 시그널링을 지원하도록 구성될 수 있다. 다른 경우에서, 버스(280)는 내장된 멀티미디어 제어(eMMC), 범용 플래시 저장장치(UFS), 등과 같은 또 다른 프로토콜을 이용할 수 있다. 일부 예에서, 버스(270)는 LPDDR 명령어 및 주소(CA) 시그널링을 지원하도록 구성될 수 있고, 버스(275)는 LPDDR 입력/출력(I/O) 시그널링을 지원하도록 구성될 수 있다. 일부 예에서, 로컬 메모리 어레이는 SoC/프로세서(250)와 동일한 기판에 배치될 수 있고 SoC/프로세서(250)에 대한 캐시 메모리(255)로서 기능하도록 구성될 수 있다.
메모리 서브 시스템(220)은 비휘발성 메모리(225) 및 인터페이스 제어기(230)를 포함할 수 있다. 비휘발성 메모리(225)는 도 1을 참조하여 설명된 바와 같이 메모리 디바이스(180)의 일례일 수 있다. 인터페이스 제어기(230)는 도 1을 참조하여 설명된 바와 같이 인터페이스 제어기(120)의 일례일 수 있다. 인터페이스 제어기(230)는 LPDDR 사양(예컨대, 페이지 크기, 타이밍 요구조건)에 따라 버스(270 및 275)를 통해 SoC/프로세서(250)와 함께 동작하도록 구성될 수 있다. 인터페이스 제어기(230)는 가상 메모리 뱅크(235)를 포함할 수 있으며, 이는 도 1을 참조하여 설명된 바와 같이 메모리 디바이스(170)의 일례일 수 있다. 일부 예에서, 가상 메모리 뱅크(235)는 DRAM 메모리 셀을 포함할 수 있고 LPDDR 사양에 따라 동작하도록 구성될 수 있다. 일부 예에서, 가상 메모리 뱅크(235)는 인터페이스 제어기(230)와 동일한 기판에 배치될 수 있다. 게다가, 인터페이스 제어기(230)는 버스(271 및 276)를 통해 비휘발성 메모리(225)와 함께 동작하도록 구성될 수 있다.
일부 예에서, 메모리 서브 시스템(220)은 버퍼(240)를 더 포함할 수 있다. 일부 예에서, 버퍼(240)는 DRAM 메모리 셀을 포함할 수 있다. 버퍼(240)는 도 1을 참조하여 설명된 바와 같이 메모리 디바이스(170) 또는 메모리 디바이스(180)의 일례일 수 있다. 게다가, 인터페이스 제어기(230)는 버스(272 및 277)를 통해 버퍼(240)와 함께 동작하도록 구성될 수 있다. 일부 예에서, 버스(272)는 버퍼 CA 버스일 수 있다. 일부 예에서, 버스(277)는 인터페이스(IF) 버퍼 I/O 버스일 수 있다. 인터페이스 제어기(230) 및 버스(272 및 277)는 DRAM 프로토콜과 호환가능할 수 있다. 예를 들면, 인터페이스 제어기(230) 및 버스(272 및 277)는 LPDDR 페이지 크기 및 타이밍을 활용할 수 있다. 일부 예에서, SoC/프로세서(250)는 버스(275)를 통해 버퍼(240)와 함께 직접적으로 동작하도록 구성될 수 있다. 일부 예에서, 버퍼(240)는 SoC/프로세서(250)에 의한 버퍼(240)의 직접 액세스를 지원할 수 있는 버스(275)와 호환가능한 페이지 크기를 갖도록 구성될 수 있다.
버퍼(240)는 일부 경우에, SoC/프로세서(250) 내에서 캐시 메모리(255)의 논리적 증강으로서 동작하도록 구성될 수 있다. 일부 예에서, 버퍼(240)의 용량은 대략 256M 바이트일 수 있다. 일부 예에서, 버퍼(240)의 용량은 SoC/프로세서(250)의 캐시 메모리(255)의 크기에 적어도 부분적으로 기초할 수 있다. 일부 경우에, 버퍼(240)는 잠재적으로 더 작은 기생 구성요소 예로서, 금속 라인과 연관된 인덕턴스로 인해 더 큰 용량의 DRAM 디바이스에 비해 메모리 서브 시스템(220)의 개선된(예컨대, 더 빠른) 성능을 용이하게 할 수 있는 상대적으로 작은 용량을 가질 수 있다. 버퍼(240)의 더 작은 용량은 또한, 주기적인 리프레싱 동작과 연관된 시스템 전력 소비를 감소시키는 측면에서 이득을 제공할 수 있다.
메모리 서브 시스템(220)은 하나의 칩 버전 및 다수의 칩 버전을 포함하는 다양한 구성으로 구현될 수 있다. 하나의 칩 버전은 단일 칩의 인터페이스 제어기(230), 가상 메모리 뱅크(235), 및 비휘발성 메모리(225)를 포함할 수 있다. 일부 예에서, 버퍼(240)는 또한, 단일 칩에 포함될 수 있다. 반대로, 다수의 칩 버전은 메모리 서브 시스템(220)의 하나 이상의 다른 구성요소를 포함하는 칩과 분리되는 칩에, 인터페이스 제어기(230), 가상 메모리 뱅크(235), 비휘발성 메모리(225), 및 버퍼(240)를 포함하는 메모리 서브 시스템(220)의 하나 이상의 구성요소를 포함할 수 있다. 예를 들면, 하나의 다수의 칩 버전에서, 각각의 별개의 칩은 인터페이스 제어기(230), 가상 메모리 뱅크(235), 및 비휘발성 메모리(225)의 각각을 포함할 수 있다. 또 다른 예로서, 다수의 칩 버전은 가상 메모리 뱅크(235)와 인터페이스 제어기(230) 둘 모두를 포함하는 하나의 칩 및 버퍼(240)를 포함하는 별개의 칩을 포함할 수 있다. 부가적으로, 별개의 칩은 비휘발성 메모리(225)를 포함할 수 있다.
다수의 칩 버전의 또 다른 예는 버퍼(240) 및 가상 메모리 뱅크(235) 둘 모두를 포함하는 하나의 칩을 포함할 수 있다. 부가적으로, 별개의 칩은 인터페이스 제어기(230) 및 비휘발성 메모리(225) 둘 모두를 포함할 수 있거나 각각의 별개의 칩은 인터페이스 제어기(230) 및 비휘발성 메모리(225)의 각각을 포함할 수 있다. 다수의 칩 버전의 여전히 또 다른 예에서, 단일 칩은 비휘발성 메모리(225) 및 버퍼(240)를 포함할 수 있다. 부가적으로, 별개의 칩은 인터페이스 제어기(230) 및 가상 메모리 뱅크(235) 둘 모두를 포함할 수 있거나 각각의 별개의 칩은 인터페이스 제어기(230) 및 가상 메모리 뱅크(235)의 각각을 포함할 수 있다. 일부 예에서, 비휘발성 메모리(225)는 비휘발성 메모리 셀의 어레이 및 DRAM 셀의 어레이 둘 모두를 포함할 수 있다. 다수의 칩 버전의 일부 경우에, 인터페이스 제어기(230), 가상 메모리 뱅크(235), 및 버퍼(240)는 단일 칩에 배치되고 비휘발성 메모리(225)는 별개의 칩에 배치될 수 있다.
일부 예에서, 비휘발성 메모리(225)는 비휘발성 메모리 셀(예컨대, FeRAM 메모리 셀)의 어레이를 포함할 수 있고, 일부 경우에, 로컬 메모리 제어기(도시되지 않음)를 포함할 수 있다. 비휘발성 메모리(225)에 포함된 비휘발성 어레이는 고정 또는 가변 페이지 크기(예컨대, 64, 128, 192, 또는 256 바이트)를 지원하도록 구성될 수 있으며, 일부 경우에 SoC/프로세서(250)와 연관된 페이지 크기와 상이하다. 게다가, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 비휘발성 메모리(225)에 대한 가변 페이지 크기를 결정하도록 구성될 수 있다. 게다가, 비휘발성 어레이는 예를 들면, DRAM 어레이(2048 바이트)보다 작은 페이지 크기(예컨대, 64 바이트)로 구성될 수 있다. 일부 예에서, 비휘발성 메모리(225)는 (예컨대, 저장장치(260)와 비교하여) SoC/프로세서(250)에 대한 비휘발성 니어 메모리(non-volatile near memory)로서 언급될 수 있다. 메모리 시스템의 맥락에서, 니어 메모리는 다른 메모리 구성요소보다 빠른 액세스 속도를 제공하기 위해, 논리적으로 그리고/또는 물리적으로 SoC/프로세서(250) 근처에 배치된 메모리 구성요소를 언급할 수 있다. 비휘발성 메모리(225)를 SoC/프로세서(250)에 대한 니어 메모리로서 구성하는 것은 예를 들면, 저장장치(260)로부터 데이터를 검색하는 SoC/프로세서(250)와 연관될 수 있는 오버헤드(overhead)를 제한하거나 회피할 수 있다.
SoC/프로세서(250)는 저장장치(260)에 액세스하는 것이 원하지 않는 지연과 연관될 수 있기 때문에, 저장장치(260)에 액세스하는 대신에 예기치 않은 전력 중단 시에 비휘발성 메모리(225)에 중요한 정보를 저장할 수 있다.
인터페이스 제어기(230)는 버스(271 및 276)를 통해 비휘발성 메모리(225)와 함께 동작하도록 구성될 수 있다. 일부 예에서, 버스(271)는 FeRAM CA 버스일 수 있다. 일부 예에서, 버스(276)는 FeRAM 인터페이스(IF) 버스일 수 있다. 인터페이스 제어기(230) 및 버스(271 및 276)는 비휘발성 메모리(225)의 페이지 크기와 호환가능할 수 있다. 일부 예에서, 버퍼(240)는 버스(295)를 통해 비휘발성 메모리(225)로의 데이터 전송을 용이하게 하도록 구성될 수 있다. 일부 예에서, 비휘발성 메모리(225)는 버스(290)를 통해 가상 메모리 뱅크(235)로의 그리고 가상 메모리 뱅크로부터의 데이터 전송을 용이하게 하도록 구성될 수 있다.
인터페이스 제어기(230)는 가상 메모리 뱅크(235) 또는 버퍼(240)를 최대한 활용함으로써 (예컨대, SoC/프로세서(250)의 관점에서) 낮은 레이턴시 또는 감소된 전력 동작을 지원할 수 있다. 예를 들면, SoC/프로세서(250)로부터 판독 명령어의 수신 시에, 인터페이스 제어기(230)는 SoC/프로세서(250)로의 송신을 위해 가상 메모리 뱅크(235) 또는 버퍼(240)로부터 데이터를 검색하려고 시도할 수 있다. 판독 명령어에 종속된 데이터가 가상 메모리 뱅크(235) 또는 버퍼(240)에 존재하지 않는 경우, 인터페이스 제어기(230)는 데이터를 가상 메모리 뱅크(235)에 저장하고 또한 (예컨대, 동시에), 데이터를 SoC/프로세서(250)로 전송하기 위해 비휘발성 메모리(225)로부터 데이터를 검색할 수 있다.
비휘발성 메모리(225)로부터 데이터를 검색하는 것은 가상 메모리 뱅크(235) 또는 버퍼(240)로부터 데이터를 검색하는 것과 비교하여 증가된 레이턴시와 연관될 수 있다. 일부 예에서, 인터페이스 제어기(230)는 데이터를 비휘발성 메모리(225)로부터 가상 메모리 뱅크(235)로 사전에 이동시키기 위해 프리패칭을 이용할 수 있다. 이러한 방식으로, DRAM 메모리 액세스 프로토콜에 따라, 프로세서가 가상 메모리 뱅크에 저장된 데이터에 직접적으로 액세스할 수 있으므로 디바이스(210)의 메모리 액세스 처리량이 증가될 수 있다.
인터페이스 제어기(230)는 메모리 페이지의 일부를 프리패치함으로써 전력 소비 및 레이턴시를 더 감소시킬 수 있다. 예를 들면, 인터페이스 제어기(230)는 비휘발성 메모리(225)의 메모리 페이지에 위치되는 SoC/프로세서(250)로부터 데이터에 대한 요청을 수신할 수 있다. 일부 경우에, 요청된 데이터는 가상 메모리 뱅크(235) 또는 버퍼(240)에 위치되지 않을 수 있다. 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 비휘발성 메모리(225)의 메모리 페이지, 및 요청된 데이터를 포함하는 메모리 페이지의 부분, 또는 서브페이지(들)를 식별할 수 있다. 비휘발성 메모리(225)는 요청된 데이터를 포함하는 서브페이지를 가상 메모리 뱅크(235)로 송신할 수 있다. 일부 경우에, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 또한, 요청된 데이터를 포함하는 메모리 페이지와 연관된 프리패치 카운터의 값을 식별할 수 있고, 비휘발성 메모리(225)는 프리패치 카운터의 값에 기초하여 요청된 데이터를 포함하는 서브페이지(들)와 함께 메모리 페이지의 부가적인 서브페이지를 송신할 수 있다. 예를 들면, 프리패치 카운터의 하나의 값(예컨대, 논리 01)에 대해, 비휘발성 메모리(225)는 요청된 데이터를 포함하는 서브페이지(들)와 함께 적어도 하나의 부가적인 서브페이지를 송신할 수 있다.
인터페이스 제어기(230)는 가상 메모리 뱅크(235)의 동작을 관리할 수 있다. 예를 들면, 인터페이스 제어기(230)는 비휘발성 메모리(225)로부터 유효한 데이터를 저장하는 가상 메모리 뱅크(235)의 부분을 식별하기 위해 가상 메모리 뱅크(235)에 위치된 플래그의 세트를 사용할 수 있다. 또 다른 예로서, SoC/프로세서(250)로부터 기록 명령어의 수신 시에, 인터페이스 제어기(230)는 가상 메모리 뱅크(235)에 데이터를 저장할 수 있다. 가상 메모리 뱅크(235)에 위치된 플래그의 또 다른 세트는 가상 메모리 뱅크(235)의 어느 부분이 비휘발성 메모리(225)의 대응하는 콘텐트로부터 수정되는 유효한 데이터를 저장하는지를 나타낼 수 있다. 가상 메모리 뱅크(235)에 저장된 유효한 데이터는 SoC/프로세서(250)로부터의 판독 명령어에 따라 비휘발성 메모리(225)로부터 검색된 데이터 또는 기록 명령어의 일부로서 SoC/프로세서(250)로부터 수신된 데이터를 포함할 수 있다. 가상 메모리 뱅크(235)의 어느 부분이 유효한 데이터 또는 수정된 데이터를 저장하는지를 나타내는 플래그는 대응하는 콘텐트로부터 수정된 데이터만을 비휘발성 메모리(225)에 저장하는데 인터페이스 제어기(230)를 지원할 수 있다. 또한, 인터페이스 제어기(230)는 가상 메모리 뱅크(235)로부터 제거 시에(예컨대, SoC/프로세서(250)가 더 이상 데이터를 필요로 하지 않을 때) 데이터를 저장할 위치를 결정할 수 있다. 인터페이스 제어기(230)는 가상 메모리 뱅크(235)의 콘텐트를 모니터링하고 식별할 수 있다.
일부 경우에, 인터페이스 제어기(230)는 특정 시간 간격 동안 가상 메모리 뱅크(235)의 콘텐트에 대한 SoC/프로세서(250)에 의한 액세스 시도의 횟수(예컨대, 양 또는 빈도)를 기록하는 카운터를 포함할 수 있다. 예로서, 카운터가 시간 간격 동안 SoC/프로세서(250)에 의한 액세스 시도의 횟수가 미리 결정된 임계값 미만임을 보여주면, 가상 메모리 뱅크(235)로부터 데이터의 제거 시에, 인터페이스 제어기(230)는 인터페이스 제어기(230)가 상대적으로 적은 횟수의 이전 액세스 시도에 기초하여 SoC/프로세서(250)가 시간의 일부 지속기간 동안 데이터에 다시 액세스할 가능성이 없음을 예상할 수 있으므로, 수정된 데이터(즉, SoC/프로세서(250)에 의한 액세스 시도에 의해 수정된 데이터)를 비휘발성 메모리(225)에 저장할 수 있다. 또는, 카운터가 시간 간격 동안 SoC/프로세서(250)에 의한 액세스 시도의 횟수가 미리 결정된 임계값과 같거나 그보다 크다고 나타내면, 인터페이스 제어기(230)는 가상 메모리 뱅크(235)로부터 데이터의 제거 시에, 인터페이스 제어기(230)가 SoC/프로세서(250)가 곧 데이터에 액세스할 것으로 예상할 수 있으므로, 버퍼(240)에 데이터를 저장할 수 있다. 당업자는 전체 시스템 요구조건의 관점에서, 인터페이스 제어기(230)가 이러한 결정을 행하는데 사용할 다양한 기준(예컨대, 카운터의 임계값, 클록, 시간 간격의 값, 등을 포함하는 기준)을 고안할 수 있다.
일부 예에서, 인터페이스 제어기(230)는 가상 메모리 뱅크에 저장된 메모리 페이지의 특정 부분 또는 서브페이지의 SoC/프로세서(250)에 의한 액세스 시도의 횟수를 기록할 수 있다. 일부 예에서, 메모리 페이지의 일부는 메모리 페이지의 하나 이상의 서브페이지를 포함할 수 있다. 인터페이스 제어기(230)는 개별적인 부분에 대한 액세스 시도의 기록된 횟수에 기초하여 부분을 버퍼로 송신할 수 있다. 예를 들면, 인터페이스 제어기(230)는 적어도 임계 횟수만큼 액세스된 부분을 버퍼(240)로 송신할 수 있고, 임계 횟수만큼 액세스되지 않은 부분을 폐기하거나 비휘발성 메모리(225)에 다시 기록할 수 있다. 메모리 페이지에 대한 프리패치 카운터의 값은 버퍼(240)로 송신되는 메모리 페이지의 일부에 기초할 수 있다 - 예컨대, 가상 메모리 뱅크(235)로 전송된 부분과 버퍼(240)로 전송된 메모리 페이지의 부분(들) 사이의 관계에 기초할 수 있다.
게다가, 인터페이스 제어기(230)는 SoC/프로세서(250)에 의한 액세스 시도의 횟수가 버퍼(240)로의 가상 콘텐트 뱅크(235)의 콘텐트의 저장을 우회하기 위해 미리 결정된 임계값 미만일 때 카운터에 기초하여 우회 표시자를 설정할 수 있다. 그 다음, 인터페이스 제어기(230)는 우회 표시자에 기초하여 가상 메모리 뱅크(235)의 수정된 콘텐트를 비휘발성 메모리(225)에 직접적으로 저장할 수 있다. 일부 경우에, 가상 메모리 뱅크(235)로부터 데이터의 제거 시에, 인터페이스 제어기(230)는 데이터가 비휘발성 메모리(225)로부터 마지막으로 검색된 이후 그것이 수정되지 않았다고 결정할 수 있고 그 결정에 기초하여 데이터를 폐기할 수 있다(예컨대, 데이터를 버퍼(240) 또는 비휘발성 메모리(225)에 기록하지 않는다).
일부 예에서, 비휘발성 메모리(225)의 메모리 어레이는 제1 메모리 페이지 크기(예컨대, 64, 128, 192, 또는 256 바이트)로 구성된 제1 메모리 페이지에 데이터를 저장하도록 구성될 수 있다. 임의의 경우에서, 제1 메모리 페이지는 다수의 서브페이지로 분할될 수 있다. 일부 예에서, 메모리 어레이는 각각 공통 페이지 크기를 공유하는 다수의 메모리 페이지로 구성될 수 있다. 예를 들면, 32 기가바이트 메모리 어레이는 5억 페이지를 포함할 수 있으며, 각각의 페이지는 64 바이트의 페이지 크기를 갖는다.
가상 메모리 뱅크(235)는 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기(예컨대, 2056 바이트)로 구성된 제2 메모리 페이지에 데이터를 저장하도록 구성될 수 있다. 일부 예에서, 메모리 서브 시스템(220)은 또한, 제1 메모리 페이지와 연관된 프리패치 카운터를 포함할 수 있다. 프리패치 카운터는 제1 메모리 페이지에 위치된 데이터에 대한 요청에 응답하여 메모리 뱅크에 제공된 제1 메모리 페이지의 제1 부분에 대응하는 제1 값을 저장하도록 구성될 수 있다. 일부 경우에, 프리패치 카운터는 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기, 또는 둘 모두에 포함될 수 있다. 일부 경우에, 제어기는 다수의 프리패치 카운터를 포함할 수 있다. 예를 들면, 제어기는 각각의 메모리 페이지에 대한, 메모리 어레이의 각각의 메모리 서브페이지에 대한, 또는 일부 조합에 대한 프리패치 카운터를 포함할 수 있다.
버퍼(240)는 제1 메모리 페이지의 제2 부분에 대응하는 데이터를 수신하도록 구성될 수 있다. 일부 경우에, 프리패치 카운터의 값은 제1 메모리 페이지의 제2 부분에 기초할 수 있고 - 예컨대, 제1 메모리 페이지의 제1 부분과 제2 부분 사이의 관계에 기초할 수 있다. 일부 경우에, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 제1 메모리 페이지의 제1 부분과 제2 부분 사이의 관계에 기초하여 프리패치 카운터의 값을 수정하도록 구성될 수 있다. 메모리 서브 시스템(220)은 또한, 제1 메모리 페이지의 제1 부분의 모든 또는 서브페이지에 대해 수행된 액세스 동작의 횟수를 모니터링하도록 구성된 제2 카운터를 포함할 수 있다. 일부 경우에, 버퍼(240)로 송신된 제1 메모리 페이지의 제2 부분에 표현된 데이터는 액세스 동작의 모니터링된 횟수에 기초할 수 있다. 일부 경우에, 제2 카운터는 인터페이스 제어기(230)에 포함될 수 있거나, 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기에 포함될 수 있다.
일부 경우에, 메모리 서브 시스템(220)은 비휘발성 메모리(225)의 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신하기 위한, 인터페이스 제어기(230)와 같은 수단을 포함할 수 있다. 메모리 서브 시스템(220)은, 메모리 어레이의 메모리 페이지와 연관된 프리패치 카운터의 제1 값을 식별하기 위한, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기와 같은 수단을 포함할 수 있다. 메모리 서브 시스템(220)은 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분을 메모리 어레이로부터 가상 메모리 뱅크(235)로 전달하기 위한, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기와 같은 수단을 포함할 수 있고, 메모리 페이지의 제1 부분은 제1 데이터를 포함한다. 메모리 서브 시스템(220)은 또한, 메모리 페이지의 제1 부분을 가상 메모리 뱅크(235)에 기록하기 위한, 인터페이스 제어기(230)와 같은 수단을 포함할 수 있다.
부가적으로, 메모리 서브 시스템(220)은 메모리 페이지의 제2 부분을 버퍼(240)에 전달하기 위한 인터페이스 제어기(230)와 같은 수단을 포함할 수 있고, 제2 부분은 제1 데이터의 적어도 서브세트를 포함한다. 메모리 서브 시스템(220)은 또한, 메모리 페이지의 제1 부분과 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하기 위한, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기와 같은 수단을 포함할 수 있다. 메모리 서브 시스템(220)은 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정하기 위한 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기와 같은 수단을 포함할 수 있다. 그리고, 프리패치 카운터의 제1 값을 수정하기 위한 수단은 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정하는 것에 기초하여 프리패치 카운터의 제1 값을 수정하거나 조정할 수 있다.
메모리 서브 시스템(220)은 또한, 메모리 페이지의 제2 부분을 축출하기 위한, 버퍼(240)와 같은 수단을 포함할 수 있고, 프리패치 카운터의 제1 값을 수정하는 것은 메모리 페이지의 제2 부분을 축출하는 것에 적어도 부분적으로 기초한다. 메모리 서브 시스템(220)은 또한, 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링하기 위한, 인터페이스 제어기(230)와 같은 수단을 포함할 수 있고, 여기서 프리패치 카운터의 제2 값은 액세스 동작의 횟수에 적어도 부분적으로 기초하여 결정된다. 일부 예에서, 액세스 동작의 횟수를 모니터링하기 위한 수단은 메모리 페이지의 제1 부분의 하나 이상의 서브세트, 또는 서브페이지에 대해 수행된 액세스 동작의 횟수를 모니터링한다.
메모리 서브 시스템(220)은 또한, 하나 이상의 서브세트 중 하나의 서브세트에 대해 수행된 액세스 동작의 제1 횟수가 임계치를 만족시킨다고 결정하기 위한, 인터페이스 제어기(230)와 같은 수단을 포함할 수 있다. 그리고, 데이터를 버퍼(240)에 전달하기 위한 수단은 결정에 적어도 부분적으로 기초하여 버퍼(240)에 적어도 서브세트를 전달할 수 있다. 일부 예에서, 제1 데이터에 대한 제1 요청을 수신하기 위한 수단은 비휘발성 메모리(225)의 메모리 페이지에 위치된 제2 데이터에 대한 제2 요청을 더 수신한다. 부가적으로, 비휘발성 메모리(225)로부터 가상 메모리 뱅크(235)로 전달하기 위한 수단은 또한, 메모리 페이지의 제2 부분을 전달할 수 있으며, 메모리 페이지의 제1 부분은 메모리 페이지의 제2 부분과 상이하고, 메모리 페이지의 제2 부분은 제2 데이터를 포함한다. 게다가, 가상 메모리 뱅크(235)로부터 버퍼(240)로 전달하기 위한 수단은 또한, 메모리 페이지의 제3 부분을 가상 메모리 뱅크(235)로부터 버퍼(240)로 전달할 수 있다. 프리패치 카운터의 값을 수정하기 위한 수단은 메모리 페이지의 제1 부분, 메모리 페이지의 제2 부분, 또는 메모리 페이지의 제3 부분, 또는 그들의 임의의 조합 사이의 관계에 기초하여 프리패치 카운터의 제1 값을 더 수정할 수 있다.
프리패치 카운터의 값을 식별하기 위한 수단은 메모리 페이지와 연관된 프리패치 카운터의 제2 값을 더 식별할 수 있으며, 제2 값은 제1 값과 상이하다. 그리고, 비휘발성 메모리(225)로부터 가상 메모리 뱅크(235)로 전달하기 위한 수단은 프리패치 카운터의 제2 값에 적어도 부분적으로 기초하여 메모리 페이지의 제2 부분을 전달할 수 있으며, 여기서 메모리 페이지의 제1 부분은 메모리 페이지의 제2 부분과 상이하고, 메모리 페이지의 제2 부분은 제2 데이터를 포함한다.
도 3은 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 지원하는 일 예시적인 데이터 구조(300-a) 및 상태 다이어그램(300-b)을 도시한다. 데이터 구조(300-a)는 비휘발성 메모리 페이지(310), 제1 필드(315), 및 제2 필드(320)를 도시한다.
비휘발성 메모리 페이지(310)는 상당한 양의 데이터를 저장하기 위해 사용될 수 있다. 예를 들면, 비휘발성 메모리 페이지(310)는 128 또는 256 바이트일 수 있다. 비휘발성 메모리 페이지(310)는 서브페이지(325), 서브페이지(330), 서브페이지(335), 및 서브페이지(340)와 같은 다수의 서브페이지를 포함할 수 있다. 각각의 서브페이지는 64 바이트일 수 있다. 일부 예에서, 서브페이지는 부분(345)과 같은 부분으로서 그룹화될 수 있다.
비휘발성 메모리 페이지(310)는 제1 필드(315) 및 제2 필드(320)와 연관될 수 있다. 일부 예에서, 제1 필드(315)는 대응하는 비휘발성 메모리 페이지(310)가 SoC/프로세서(예컨대, 도 2를 참조하여 설명된 SoC/프로세서(250))에 의해 액세스(예컨대, 판독 또는 기록)된 횟수를 나타내도록 구성될 수 있다(그리고 상기 횟수를 추적하도록 업데이트될 수 있다). 일부 예에서, 제1 필드(315)는 포화 카운터(SC)로서 언급될 수 있다. 제1 필드(315)는 일부 경우에 2 비트의 정보를 포함할 수 있지만, 본 명세서의 교시에 따라 임의의 수의 비트가 사용될 수 있음을 이해해야 한다. 일부 예에서, 비휘발성 메모리 페이지(310)는 FeRAM 어레이에 포함될 수 있다.
일부 예에서, 제2 필드(320)는 판독 명령어의 수신 시에 검색될 대응하는 비휘발성 메모리 페이지(310)에 데이터의 크기를 나타내도록 구성될 수 있다. 데이터의 크기는 하나 이상의 이전 액세스 동작에서 SoC/프로세서에 의해 만들어진 데이터에 대한 액세스 패턴에 의해 결정되고 일부 경우에, 프리패치 크기로서 언급될 수 있다. 프리패치 크기는 비휘발성 메모리 페이지(310)에 포함된 데이터에 대한 판독 명령어에 응답하여 판독되어야 하는 데이터의 양일 수 있다. 예를 들면, 비휘발성 메모리 페이지(310)로부터의 데이터가 인터페이스 제어기(230), 또는 일부 경우에 도 2에 설명된 바와 같이 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기에 의해 수신된 판독 명령어에 종속되면(예컨대, SoC/프로세서로부터의 액세스를 예상하여), 인터페이스 제어기(230), 또는 일부 경우에 로컬 메모리 제어기는 프리패치 크기를 결정하기 위해 요청된 데이터 및 연관된 제2 필드(320)의 값을 포함하는 서브페이지를 식별할 수 있다. 프리패치 크기는 판독 요청에 응답하여 비휘발성 메모리(225)로부터 판독될 데이터(즉, 요청된 데이터를 포함하고 따라서 적어도 요청된 데이터만큼 큰)의 크기를 나타낼 수 있다.
일부 예에서, 제2 필드(320)에 저장된 논리 상태는 대응하는 비휘발성 메모리 페이지(310)의 프리패치 크기를 나타낼 수 있다. 예를 들면, "00"은 64 바이트에 대응할 수 있고, "01"은 128 바이트에 대응할 수 있고, "10"은 192 바이트에 대응할 수 있으며, "11"은 256 바이트에 대응할 수 있다. 이러한 예에서, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기가 비휘발성 메모리 페이지(310)로부터 64 바이트의 데이터에 대한 판독 명령어를 수신하고, 연관된 제2 필드(320)가 01이면, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 요청된 데이터에 대한 프리패치 크기를 192 바이트로서 식별하고 비휘발성 메모리(225)로부터 192 바이트의 데이터를 판독할 수 있으며, 여기서 192 바이트는 요청된 64 바이트를 포함한다. 예를 들면, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 요청된 데이터가 서브페이지(330)에 위치됨을 식별할 수 있고 부분(345)을 판독할 수 있다. 제2 필드(320)가 임의의 수의 논리 상태를 지원하는 임의의 수의 비트를 포함할 수 있고 임의의 크기의 프리패치 크기를 나타낼 수 있음을 이해해야 한다. 일부 예에서, 제2 필드(320)는 프리패치(PF) 카운터로서 언급될 수 있다.
일부 예에서, 서브페이지(340)와 같은 서브페이지는 서브페이지(340)가 액세스된 횟수를 나타내기 위해 사용될 수 있는(그리고 상기 횟수를 추적하도록 업데이트될 수 있는) 제3 필드(350)를 포함할 수 있다. 일부 예에서, 제3 필드(350)는 포화 카운터(SC)로서 언급될 수 있다. 제3 필드(350)는 2 비트의 정보를 포함할 수 있지만, 본 발명에 따라 임의의 수의 비트가 사용될 수 있음을 이해해야 한다.
일부 예에서, 인터페이스 제어기(예컨대, 도 2를 참조하여 설명된 인터페이스 제어기(230), 도 3에 도시되지 않음)는 비휘발성 메모리(예컨대, 도 2를 참조하여 설명된 비휘발성 메모리(225))의 SC 및 PF 카운터 기능을 용이하게 하기 위해 모드 레지스터 비트의 세트를 사용할 수 있다. 일부 예에서, 모드 레지스터는 메모리 디바이스의 다양한 동작 모드(예컨대, 상이한 테스트 모드, 상이한 판독 또는 기록 모드, 상이한 성능 모드)를 확립할 수 있고 모드 레지스터 비트로서 언급될 수 있는 모드 레지스터와 연관된 비트의 세트는 동작의 특정한 모드를 결정하기 위해 사용될 수 있다.
일부 예에서, 인터페이스 제어기는 판독 동작 동안 데이터와 함께 데이터 마스크 반전(DMI) 핀을 사용하여 SC 및 PF 카운터의 콘텐트에 액세스할 수 있다. 일부 예에서, 인터페이스 제어기는 특수 명령어 시퀀스로 SC 및 PF 카운터의 콘텐트를 기록할 수 있다. 예를 들면, 인터페이스 제어기는 비휘발성 메모리(예컨대, 도 2를 참조하여 설명된 비휘발성 메모리(225))에 발행된 기록 명령어 동안 열 주소 핀을 통해 SC 및 PF 카운터와 연관된 레지스터에 SC 및 PF 카운터의 콘텐트를 제공할 수 있다.
상태 다이어그램(300-b)은 본 명세서에서 설명된 바와 같이 특징 및 기법을 지원하는 메모리 시스템 또는 서브 시스템의 예시적인 동작 특성을 도시한다. 상태 다이어그램(300-b)은 비휘발성 메모리(355), 가상 페이지(385), 및 버퍼(390)를 도시한다. 비휘발성 메모리(355)는 도 2를 참조하여 설명된 비휘발성 메모리(225)의 일례일 수 있다. 일부 예에서, 비휘발성 메모리(355)는 비휘발성 메모리 페이지(310)를 포함한다.
가상 페이지(385)는 도 2를 참조하여 설명된 가상 메모리 뱅크(235) 내의 페이지일 수 있다. 일부 예에서, 가상 메모리 뱅크(235)는 다수의 가상 페이지(385)의 수퍼세트일 수 있다. 버퍼(390)는 도 2를 참조하여 설명된 버퍼(240)의 일례일 수 있다. 인터페이스 제어기(예컨대, 도 2를 참조하여 설명된 인터페이스 제어기(230), 도 3에 도시되지 않음)는 비휘발성 메모리(355), 가상 페이지(385), 및 버퍼(390)과 연관된 다양한 동작(예컨대, 동작(360 내지 380))을 수행하거나 관리할 수 있다. 일부 경우에, 인터페이스 제어기는 또 다른 개체(예컨대, 도 2를 참조하여 설명된 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기)에 동작을 수행하도록 요청함으로써 동작을 관리할 수 있다.
동작(360)은 비휘발성 메모리 페이지(310)의 콘텐트를 비휘발성 메모리(355)로부터 가상 페이지(385)로 송신하고 콘텐트를 가상 페이지(385)에 저장하는 것을 포함할 수 있다. 동작(360)은 SoC/프로세서가 가상 페이지(385) 또는 버퍼(390)에 존재하지 않는 비휘발성 메모리 페이지(310)의 콘텐트에 대응하는 데이터를 요청할 때 로컬 메모리 제어기(예컨대, 도 2를 참조하여 설명된 바와 같이 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기)와 결부하여 인터페이스 제어기에 의해 수행될 수 있다. 부가적으로, 인터페이스 제어기는 동작(360)의 일부로서, 비휘발성 메모리 페이지(310)에 대한 SoC/프로세서에 의한 다수의 액세스 이벤트를 추적하기 위해 비휘발성 메모리 페이지(310)와 연관된 제1 필드(315)의 값(예컨대, SC의 값)을 업데이트할 수 있다.
일부 예에서, 동작(360)은 특정 데이터에 대한 요청을 수신하는 것에 기초하여 또는 그에 응답하여 비휘발성 메모리 페이지(310)의 콘텐트를 비휘발성 메모리(355)로부터 가상 페이지(385)로 송신하는 것을 포함할 수 있다. 다른 예에서, 동작(360)은 특정 데이터에 대한 요청을 수신하기 전에(예컨대, 프리패치 동작 동안) 비휘발성 메모리 페이지(310)의 콘텐트를 비휘발성 메모리(355)로부터 가상 페이지(385)로 송신하는 것을 포함할 수 있다. 일부 경우에, 동작(360)은 비휘발성 메모리(355)에 저장된 비휘발성 메모리 페이지(310)의 일부를 특정 데이터에 대한 요청을 수신하기 전에 또는 비휘발성 메모리 페이지(310)의 서브페이지에 위치된 특정 데이터에 대한 요청을 수신한 후에(예컨대, 부분 프리패치 동작 동안) 가상 페이지(385)로 송신하는 것을 포함할 수 있다.
예를 들면, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 서브페이지(335)에 위치된 데이터에 대한 요청을 수신할 수 있다. 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 요청의 수신에 기초하여 제2 필드(320)의 값을 식별할 수 있고 제2 필드(320)의 값에 기초하여 비휘발성 메모리 페이지(310)의 일부를 송신할 수 있다. 예를 들면, 인터페이스 제어기(230), 또는 일부 경우에 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기는 제2 필드의 값이 논리 10라고 결정할 수 있고, 192 바이트 크기를 가지는 부분(345)을 가상 페이지(385)로 송신할 수 있다. 부가적으로, 인터페이스 제어기는 동작(360)의 일부로서, 서브페이지(325, 330 및 335)에 대한 SoC/프로세서에 의한 다수의 액세스 이벤트를 추적하기 위해, 서브페이지(325, 330 및 335)와 연관된 제3 필드(350)(예컨대, 각각의 SC의 값)와 같은 제3 필드의 값을 업데이트할 수 있다.
인터페이스 제어기는 SoC/프로세서에 의해 요청된 데이터(예컨대, SoC/프로세서에 의해 인터페이스 제어기로 전송된 판독 명령어에 귀속됨)가 가상 페이지(385)에서 발견될 때 동작(365)를 수행할 수 있다. 동작(365)의 일부로서, 인터페이스 제어기는 가상 페이지(385)로부터 요청된 데이터를 검색하고 요청된 데이터를 비휘발성 메모리(355) 또는 버퍼(390)에 액세스하지 않고 SoC/프로세서에 제공할 수 있다. 일부 예에서, 요청된 데이터를 제공하는 것은 완전한 비휘발성 메모리 페이지에 대응하는 데이터를 송신하거나 대응하는 데이터에 액세스하는 것을 포함한다. 부가적으로, 인터페이스 제어기는 비휘발성 메모리 페이지(310)에 대한 SoC/프로세서에 의한 다수의 액세스 이벤트를 추적하기 위해, 데이터와 연관된 제1 필드(315)의 값(예컨대, SC의 값)을 업데이트할 수 있다.
일부 예에서, 요청된 데이터를 제공하는 것은 비휘발성 메모리 페이지의 일부에 대응하는 데이터를 송신하거나 대응하는 데이터에 액세스하는 것을 포함한다. 부가적으로, 인터페이스 제어기는 비휘발성 메모리 페이지(310)의 서브페이지에 대한 SoC/프로세서에 의한 다수의 액세스 이벤트를 추적하기 위해, 데이터와 연관된 제3 필드(350)와 같은 제3 필드의 값(예컨대, 각각의 SC의 값)을 업데이트할 수 있다.
인터페이스 제어기는 가상 페이지(385)의 페이지가 폐쇄되고 폐쇄된 페이지와 연관된 제1 필드(315)의 값(예컨대, SC 값)이 임계값을 만족시키지 않을 때 동작(370)을 수행할 수 있다. 가상 페이지(385)는 도 2를 참조하여 설명된 가상 메모리 뱅크(235) 내의 하나 이상의 페이지를 포함할 수 있다. 인터페이스 제어기는 SoC/프로세서가 더 이상 페이지와 연관된 데이터를 필요로 하지 않을 때 가상 페이지(385)에서 페이지를 폐쇄하기로 결정할 수 있다. 가상 페이지(385)에서 페이지를 폐쇄하기로 결정할 때, 인터페이스 제어기는 SoC/프로세서를 위해 이용가능한 페이지에 대응하는 메모리 공간을 만들기 위해 데이터를 제거할 수 있다. 유사하게, 인터페이스 제어기는 가상 페이지(385)의 서브페이지가 폐쇄되고 폐쇄된 페이지와 연관된 제3 필드(350)와 같은 각각의 제3 필드의 값(예컨대, SC의 값)이 임계값을 만족시키지 않을 때 동작(370)을 수행할 수 있다.
일부 경우에, 인터페이스 제어기는 가상 페이지(385)의 폐쇄된 페이지로부터 데이터를 배치하는 방법을 결정하기 위해 임계값을 사용할 수 있다. 일부 예에서, 제1 필드(315)에 대응하는 값(예컨대, SC의 값)이 임계값 미만일 때, 인터페이스 제어기는 폐쇄된 페이지로부터 버퍼(390)로 데이터를 저장하는 것을 우회할 수 있다. 대신에, 인터페이스 제어기는 폐쇄된 페이지로부터의 임의의 수정된 데이터를 비휘발성 메모리(355)에 저장하고 폐쇄된 페이지로부터 임의의 수정되지 않은 데이터를 폐기할 수 있다. 이러한 경우에, 인터페이스 제어기는 폐쇄된 페이지로부터의 데이터가 비휘발성 메모리(355)에 저장된 대응하는 데이터에 비해 SoC/프로세서가 수정한 부분을 포함하는지의 여부를 결정할 수 있다. 동작(370) 동안, 인터페이스 제어기는 가상 페이지(385)로부터 비휘발성 메모리(355)에 폐쇄된 페이지의 데이터의 임의의 수정된 부분을 저장할 수 있다. 게다가, 인터페이스 제어기는 데이터가 수정되지 않았다고 결정한 후에, 폐쇄된 페이지로부터 임의의 수정되지 않은 데이터를 폐기할 수 있다(즉, 인터페이스 제어기는 비휘발성 메모리(355)에 데이터의 수정되지 않은 부분을 저장하는 것을 우회할 수 있다). 인터페이스 제어기는 전체 시스템 요구조건의 관점에서, 다양한 기준(예컨대, 페이지에 대한 액세스의 횟수와 연관된 미리 결정된 값, 페이지에 대한 액세스의 부족과 연관된 시간 간격의 값)에 기초하여 임계값을 결정할 수 있다.
인터페이스 제어기는 인터페이스 제어기가 가상 페이지(385)에서 페이지를 폐쇄하기로 결정하고 폐쇄된 페이지와 연관된 제1 필드(315)의 값(예컨대, SC의 값)이 상기 설명된 임계값을 만족시킨다고 결정할 때 동작(375)을 수행할 수 있다. 일부 예에서, 제1 필드(315)의 값(예컨대, SC의 값)이 임계값과 같거나 그보다 클 때, 인터페이스 제어기는, 인터페이스 제어기가 SoC/프로세서가 곧 데이터에 액세스할 것 같다고 결정할 수 있기 때문에, 폐쇄된 페이지로부터의 데이터를 버퍼(390)에 저장할 수 있다. 이와 같이, 동작(375)의 일부로서, 인터페이스 제어기는 폐쇄된 페이지로부터의 데이터를 버퍼(390)에 저장할 수 있다. 유사하게, 인터페이스 제어기는 폐쇄된 페이지의 서브페이지와 연관된 제3 필드의 값(예컨대, SC의 값)이 상기 설명된 임계값을 만족시킨다고 결정할 수 있다. 일부 예에서, 제3 필드(350)의 각각의 값(예컨대, SC의 값)이 임계값과 같거나 그보다 클 때, 인터페이스 제어기는 인터페이스 제어기가 SoC/프로세서가 곧 그들 서브페이지에 액세스할 것 같다고 결정할 수 있으므로, 비휘발성 메모리 페이지(310) - 예컨대, 임계값과 같거나 그보다 큰 제3 필드의 값을 갖는 폐쇄된 페이지의 서브페이지 - 의 제2 부분으로부터의 데이터를 버퍼(390)에 저장할 수 있다. 예를 들면, 인터페이스 제어기는 서브페이지(325) 및 서브페이지(335)를 버퍼(390)에 저장할 수 있다.
인터페이스 제어기는 그것이 버퍼(390)로부터 페이지를 축출할 때 동작(380)을 수행할 수 있다. 인터페이스 제어기는 페이지가 미리 결정된 지속기간 동안 SoC/프로세서에 의해 액세스되지 않을 때 버퍼(390)로부터 페이지를 축출하기로 결정할 수 있다. 일부 경우에, 축출된 페이지로부터의 데이터는 비휘발성 메모리(355)에 저장된 대응하는 데이터에 비해 SoC/프로세서에 의해 수정된 일부를 포함할 수 있다. 이러한 경우에, 동작(380)의 일부로서, 인터페이스 제어기는 비휘발성 메모리(355)에서 축출된 데이터의 수정된 부분만 저장할 수 있다. 부가적으로, 동작(380)의 일부로서, 인터페이스 제어기는 축출된 페이지와 연관된 제1 필드(315)의 값(예컨대, SC의 값)을 업데이트(예컨대, 제로로 재설정)할 수 있다. 게다가, 인터페이스 제어기는 데이터가 수정되지 않았다고 결정한 후에, 데이터를 폐기할 수 있다(즉, 인터페이스 제어기는 축출된 데이터의 수정되지 않은 부분을 비휘발성 메모리(355)에 저장하는 것을 우회할 수 있다). 유사하게, 인터페이스 제어기는 축출된 서브페이지와 연관된, 제3 필드(350)와 같은 각각의 제3 필드의 값을 업데이트(예컨대, 제로로 재설정)할 수 있다.
부가적으로, 동작(380)의 일부로서, 인터페이스 제어기는 제2 필드(320)의 값을 업데이트할 수 있다. 예를 들면, 인터페이스 제어기는 버퍼(390)에 저장된 비휘발성 메모리 페이지(310)의 제2 부분이 가상 페이지(385)로 송신된 비휘발성 메모리 페이지(310)의 제1 부분보다 크기가 작은 경우 제2 필드의 값을 감소시킬 수 있다.
도 4a는 본 발명의 예에 따른 프리패치 동작에 대한 일 예시적인 프로세스 흐름(400-a)을 도시한다. 프로세스 흐름(400-a)은 도 2를 참조하여 논의된 바와 같이 SoC/프로세서의 일례일 수 있는 호스트(401), 및 도 2를 참조하여 논의된 바와 같이 메모리 서브 시스템의 일례일 수 있는 메모리 서브 시스템(402)을 수반하는 프리패치 동작의 양태를 묘사한다. 메모리 서브 시스템(402)은 도 2를 참조하여 논의된 바와 같이, 비휘발성 메모리 어레이(225)에 포함된 로컬 메모리 제어기 또는 인터페이스 제어기(230), 또는 그들의 조합의 일례일 수 있는 메모리 제어기(403); 도 2 및 도 3을 참조하여 논의된 바와 같이 버퍼의 일례일 수 있는 버퍼(404); 도 2 및 도 3을 참조하여 논의된 바와 같이 가상 메모리 뱅크 또는 가상 페이지의 일례일 수 있는 가상 메모리 뱅크(405); 및 도 2 및 도 3을 참조하여 논의된 바와 같이 비휘발성 메모리의 일례일 수 있는 비휘발성 메모리(406)를 포함할 수 있다. 메모리 제어기(403), 버퍼(404), 가상 메모리 뱅크(405) 및 비휘발성 메모리(406)는 하나 이상의 데이터 버스를 통해 서로 통신할 수 있다.
(410)에서, 호스트(401)는 (예컨대, 데이터를 판독하거나 기록하기 위해) 메모리 서브 시스템(402)에 저장된 데이터에 대한 액세스 요청을 송신할 수 있다. 일부 경우에, 액세스 요청은 특정 메모리 액세스 프로토콜(예컨대, DRAM 메모리 액세스 프로토콜)에 따라 송신될 수 있다. 일부 예에서, 액세스 요청은 메모리 서브 시스템(402)의 하나 이상의 구성요소로 직접적으로 전송될 수 있다. 예를 들면, 액세스 요청은 둘 모두가 호스트(401)에 의해 사용된 특정 메모리 액세스 프로토콜에 따라 동작할 수 있는 버퍼(404) 및/또는 가상 메모리 뱅크(405)로 직접적으로 송신될 수 있다. 일부 예에서, 액세스 요청은 메모리 서브 시스템(402)에 저장된 64 바이트의 데이터를 판독하기 위한 요청일 수 있다. 다른 예에서, 액세스 요청은 메모리 서브 시스템(402)에 저장된 128 바이트의 데이터를 판독하기 위한 요청일 수 있고, 등이다. 부가적으로 또는 대안적으로, 액세스 요청은 메모리 제어기(403)를 통해 메모리 서브 시스템(402)의 구성요소로 간접적으로 전송될 수 있다. 예를 들면, 액세스 요청은 버퍼에 대한 액세스 요청을 중계할 수 있는 메모리 제어기(403)로 전송될 수 있다.
(415)에서, 메모리 제어기(403)는 호스트(401)로부터 액세스 요청을 수신하는 것에 기초하여 요청된 데이터에 액세스할 수 있다. 메모리 제어기는 호스트(401)로부터 수신된 액세스 요청을 버퍼(404), 가상 메모리 뱅크(405) 및 비휘발성 메모리(406) 중 하나 이상에 전달할 수 있다. 일부 경우에, 메모리 제어기는 액세스 요청을 버퍼(404)에, 그 다음 가상 메모리 뱅크(405)에, 그리고 마지막으로 - 예컨대, 요청된 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 존재하지 않는다고 결정한 후에 비휘발성 메모리(406)에 전달할 수 있다. 일부 경우에, 메모리 제어기(403)는 - 예컨대, 요청된 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 존재하지 않는다고 결정한 후에 비휘발성 메모리(406)에만 액세스 요청을 전달할 수 있다. 일부 예에서, 비휘발성 메모리(406)는 FeRAM 메모리 어레이를 포함할 수 있다.
(420)에서 버퍼(404), 메모리 제어기(403)는 요청된 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 위치되지 않는다고 결정할 수 있다.
(425)에서, 메모리 제어기(403)는 요청된 데이터를 포함하는 비휘발성 메모리(406)에 위치된 비휘발성 메모리 페이지(예컨대, 도 3의 비휘발성 메모리 페이지(310))를 식별할 수 있다. 비휘발성 메모리 페이지는 다수의 서브페이지로 분할될 수 있다. 일부 예에서, 메모리 제어기(403)는 또한, 요청된 데이터를 포함하는 비휘발성 메모리 페이지의 서브페이지(예컨대, 도 3의 서브페이지(330))를 식별할 수 있다. 임의의 경우에서, 요청된 데이터를 포함하는 서브페이지는 64 바이트일 수 있다. 다른 예에서, 요청된 데이터의 크기는 128 바이트일 수 있고, 2개의 서브페이지는 요청된 데이터를 포함할 수 있다.
부가적으로, 메모리 제어기(403)는 비휘발성 메모리 페이지와 연관된 프리패치 카운터(예컨대, 도 3의 제2 필드(320))의 값을 식별할 수 있다. 일부 경우에, 프리패치 카운터는 논리 00의 값으로 초기화될 수 있다. 다른 경우에서, 프리패치 카운터는 논리(11)의 값으로 초기화될 수 있다. 논리(11)로 프리패치 카운터의 값을 초기화하는 것은 비휘발성 메모리(406)로 하여금 초기에 더 많은 데이터(예컨대, 전력 공급 시에)를 송신하게 할 수 있어서, 전력 소비 및 처리량을 증가시킨다. 반대로, 논리 00를 갖는 프리패치 카운터의 값은 비휘발성 메모리(406)로 하여금 초기에 더 적은 데이터를 송신하게 할 수 있어서, 전력을 감소시키고 잠재적으로 처리량을 낮춘다. 일부 예에서, 선택된 초기화 값은 디바이스의 전력 모드(예컨대, 높은 저 전력 모드) 또는 동작 모드(예컨대, 높은 처리량 모드)에 대응한다.
(430)에서, 메모리 제어기(403)는 프리패치 카운터의 값에 기초하여 요청된 데이터를 포함하는 비휘발성 메모리 페이지의 제1 부분(예컨대, 도 3의 부분(345))을 식별할 수 있다. 제1 부분은 요청된 데이터를 포함하는 적어도 서브페이지를 포함할 수 있다. 일부 예에서, 제1 부분의 크기는 프리패치 카운터의 값에 기초할 수 있다. 예를 들면, 프리패치 카운터의 값이 논리 00과 같으면, 제1 부분의 크기는 64 바이트와 같을 수 있다(예컨대, 제1 부분은 데이터를 포함하는 서브페이지를 단지 포함할 수 있다). 또 다른 예에서, 프리패치 카운터의 값이 논리 01과 같으면, 제1 부분의 크기는 128 바이트와 같을 수 있다(예컨대, 제1 부분은 요청된 데이터를 포함하는 서브페이지뿐만 아니라, 제2 서브페이지를 포함할 수 있다). 또 다른 예에서, 프리패치 카운터의 값이 논리 10과 같으면, 제1 부분의 크기는 192 바이트와 같을 수 있는(예컨대, 제1 부분은 요청된 데이터를 포함하는 서브페이지, 제2 서브페이지, 및 제3 서브페이지를 포함할 수 있는) 등이다.
일부 예에서, 요청된 데이터의 크기는 프리패치 카운터 값을 무시할 수 있다. 예를 들면, 요청된 데이터의 크기가 128 바이트이고, 프리패치 카운터 값이 64 바이트 크기에 대응하는 경우, 제1 부분의 크기는 128 바이트와 같을 수 있다(예컨대, 제1 부분은 요청된 데이터 포함하는 2개의 서브페이지를 포함할 수 있다). 프리패치 카운터의 값과 제1 부분의 크기 사이의 다른 매핑이 대안적으로 사용될 수 있고 본 발명에 기초하여 고려된다. 예를 들면, 논리 00의 프리패치 값은 128 바이트에 대응할 수 있고, 논리 01의 프리패치 값은 256 바이트에 대응할 수 있고, 논리 10의 프리패치 값은 384 바이트에 대응할 수 있고, 등이다.
일부 예에서, 메모리 제어기(403)는 하나 이상의 인자 또는 표시자(예컨대, 비휘발성 메모리 페이지의 서브페이지에 대해 수행된 이력 액세스 동작)에 기초하여 요청된 데이터를 포함하는 서브페이지에 포함할 서브페이지를 선택할 수 있다. 예를 들면, 메모리 제어기(403)는 요청된 데이터를 포함하는 메모리 페이지의 서브페이지가 아닌, 메모리 페이지의 서브페이지가 가상 메모리 뱅크(405)에서 이전에 액세스되었음을 식별할 수 있고, 후속 판독 동작에서 요청된 데이터를 포함하는 서브페이지와 함께 식별된 서브페이지를 송신할 수 있다. 이러한 방식으로, 메모리 제어기(403)는 호스트(401)로부터의 후속 데이터 요청을 예상하고 비휘발성 메모리(406)에 액세스하는 것과 연관된 지연을 회피할 수 있다.
예를 들면, 메모리 제어기(403)는 가상 메모리 뱅크(405)에 저장된 데이터를 모니터링하고 가상 메모리 뱅크(405)에서 액세스된 데이터에 대응하는 서브페이지를 식별할 수 있다. 일부 경우에, 메모리 제어기(403)는 데이터가 버퍼(404)로 이동될 수 있는 경우 서브페이지에 대응하는 데이터가 임계 횟수보다 많이(예컨대, 한 번보다 많이) 액세스되었음을 식별할 수 있고, 비휘발성 메모리 페이지의 데이터에 대한 후속 액세스 요청으로, 후속 액세스 요청으로 요청된 데이터를 포함하는 서브페이지를 갖는 식별된 서브페이지를 송신할 수 있다. 일부 예에서, 메모리 제어기(403)는 비휘발성 메모리 페이지의 각각의 서브페이지에 대응하는 데이터에 대해 수행된 액세스 동작의 횟수를 추적할 수 있고 요청된 서브페이지를 포함하는 서브페이지로 특정 시간 기간 내에 가장 많은 액세스 시도를 통해 서브페이지를 송신할 수 있다. 각각의 포화 카운터는 비휘발성 메모리 페이지의 각각의 서브페이지에 대해 수행된 액세스 동작의 횟수를 추적하기 위해 사용될 수 있다.
부가적으로, 메모리 제어기(403)는 액세스 동작이 비휘발성 메모리 페이지의 서브페이지에 대해 수행된 때를 추적할 수 있다. 예를 들면, 메모리 제어기(403)는 비휘발성 메모리 페이지로부터의 데이터의 후속 송신으로 가장 최근에 액세스된 서브페이지를 포함할 것을 선택할 수 있다. 부가적으로, 메모리 제어기(403)는 2개의 서브페이지가 종종 함께 액세스된다는 것을 식별하고, 프리패치 값을 논리 01로 설정하며, 서브페이지 중 하나의 데이터가 액세스될 때 2개의 서브페이지를 함께 송신할 수 있다.
(435)에서, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터를 호스트(401)로 송신할 수 있거나, 메모리 제어기(403)는 비휘발성 메모리(406)로 하여금 상기 데이터를 호스트로 송신하게 할 수 있다. 그에 따라, 가상 메모리 뱅크(405)는 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터를 저장할 수 있다. 일부 예에서, 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터를 저장하는 것은 서브페이지의 각각에 대한 각각의 포화 카운터에 대응하는 데이터를 저장하는 것을 포함한다.
(440)에서, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터를 가상 메모리 뱅크(405)로 송신할 수 있거나, 메모리 제어기(403)는 비휘발성 메모리(406)로 하여금 상기 데이터를 가상 메모리 뱅크로 송신하게 할 수 있다.
일부 예에서, (410), (415) 및 (420)은 프로세스 흐름(400-a)으로부터 생략될 수 있다. 예를 들면, 메모리 제어기(403)는 비휘발성 메모리 페이지 및/또는 비휘발성 메모리 서브페이지를 가상 메모리 뱅크(405)로 선제적으로 이동할 수 있다. 일부 경우에, 메모리 제어기(403)는 프리패치 카운터의 값에 기초하여 비휘발성 메모리 페이지의 일부를 가상 메모리 뱅크(405)로 이동할 수 있다. 즉, 메모리 제어기(403)는 가상 메모리 뱅크로 이동될 비휘발성 메모리 페이지의 서브페이지를 식별할 수 있으며 비휘발성 메모리 페이지와 연관된 프리패치 카운터의 값에 기초하여 비휘발성 메모리 페이지의 부가적인 서브페이지를 가상 메모리 뱅크로 이동할 수 있다.
도 4b는 본 발명의 예에 따른 프리패치 동작에 대한 일 예시적인 프로세스 흐름(400-b)을 도시한다. 프로세스 흐름(400-b)은 메모리 제어기(403), 버퍼(404), 가상 메모리 뱅크(405), 및 비휘발성 메모리(406)를 포함할 수 있는 호스트(401) 및 메모리 서브 시스템(402)을 수반하는 프리패치 동작의 양태를 묘사한다. 프로세스 흐름(400-b)에서 수행된 동작은 도 4a를 참조하여 논의된 바와 같이 프로세스 흐름(400-a)에서 수행된 동작에 대한 후속일 수 있다.
(445)에서, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작을 모니터링할 수 있다. 예를 들면, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제1 부분의 각각의 서브페이지에 대해 수행된 액세스 동작의 각각의 횟수를 (예컨대, 각각의 포화 카운터를 사용하여) 추적할 수 있다. 가상 메모리 뱅크(405)는 또한, 서브페이지에 저장된 어떤 데이터가 유효한지 - 예컨대, 가상 메모리 뱅크(405)에 저장된 어떤 데이터가 비휘발성 메모리(406)에 저장된 데이터와 매칭(예컨대, 중복기록되지 않음)되는지를 추적할 수 있다.
(450)에서, 호스트(401)는 메모리 서브 시스템(402)에 저장된 데이터에 대한 다수의 액세스 요청을 송신할 수 있다. 상기 내용과 같이, 액세스 요청은 특정 메모리 액세스 프로토콜에 따라 송신될 수 있으며, 메모리 서브 시스템(402)의 구성요소로 직접적으로 또는 간접적으로 송신될 수 있다.
(455)에서, 메모리 제어기(403)는 버퍼(404), 가상 메모리 뱅크(405) 또는 비휘발성 메모리(406) 중 하나 이상에 액세스 요청을 전달할 수 있다. 일부 예에서, 액세스 요청은 버퍼(404)에 또는 가상 메모리 뱅크(405)에 위치되지 않은("누락"으로서 언급될 수 있음) 데이터를 요청할 수 있다. 누락 후에, 메모리 제어기(403)는 호스트(401)에 누락을 알리고 요청된 데이터의 전달 시에 지연이 존재할 것임을 나타낼 수 있다. 메모리 제어기(403)는 그 다음, 비휘발성 메모리 페이지에 액세스할 수 있고 요청된 데이터를 포함하는 비휘발성 메모리의 일부 또는 서브페이지를 가상 메모리 뱅크(405) 및/또는 호스트(401)로 송신하거나, 비휘발성 메모리(406)로 하여금 상기 비휘발성 메모리의 일부 또는 서브페이지를 가상 메모리 뱅크 및/또는 호스트로 송신하게 할 수 있다.
(460)에서, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제2 부분을 식별할 수 있다. 일부 예에서, 비휘발성 메모리 페이지의 제2 부분에 대응하는 데이터는 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터와 등가이거나 중첩할 수 있다. 다른 예에서, 비휘발성 메모리 페이지의 제2 부분에 대응하는 데이터는 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터와 상이하거나, 중첩하지 않을 수 있다.
예를 들면, 비휘발성 메모리 페이지의 제1 부분은 제1, 제2, 및 제3 서브페이지에 대응하는 데이터를 포함할 수 있고, 비휘발성 메모리 페이지의 제2 부분은 제1 및 제3 서브페이지에 대응하는 데이터를 포함할 수 있다. 일부 예에서, 메모리 서브 시스템(402)은 모니터링된 액세스 동작에 기초하여 제2 부분에 포함할 서브페이지에 대응하는 데이터를 결정한다. 예를 들면, 메모리 서브 시스템(402)은 2개의 서브페이지의 각각에 대해 각각의 횟수의 액세스 동작이 수행되었다고 결정하는 것에 기초하여(예컨대, 임계값보다 많이), 제2 부분에 포함하기 위한 제1 및 제3 서브페이지를 선택할 수 있고, 각각의 횟수의 액세스 동작이 제2 서브페이지에 대해 수행되었다고 결정하는 것에 기초하여(예컨대, 임계값 미만) 제2 부분에 포함하는 것으로부터 제2 서브페이지를 배제할 수 있다. 일부 사례에서, 제2 서브페이지는 단계(410)에서 호스트(401)에 의해 원래 요청된 데이터를 포함할 수 있다.
(465)에서, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제2 부분에 대응하는 데이터를 버퍼(404)로 송신할 수 있다. 일부 예에서, 메모리 서브 시스템(402)은 가상 메모리 뱅크(405)에서 비휘발성 메모리 페이지의 제1 부분을 포함하는 가상 페이지를 폐쇄한 후에 버퍼(404)로 데이터를 송신할 수 있다 - 예컨대, SoC/프로세서가 가상 페이지에 더 이상 액세스할 필요가 없을 때 또는 가상 페이지가 특정 시간 기간 동안 액세스되지 않았을 때. 그에 따라, 버퍼(404)는 비휘발성 메모리 페이지의 제2 부분에 대응하는 데이터를 저장할 수 있다.
(470)에서, 버퍼(404)는 비휘발성 메모리 페이지의 제2 부분을 축출할 수 있다. 예를 들면, 버퍼(404)는 시간의 특정 시간 기간이 지난 후에 또는 데이터가 특정 기간 동안 액세스되지 않은 후에 비휘발성 메모리 페이지의 제2 부분에 대응하는 데이터를 축출할 수 있다. 버퍼(404)는 또한, 수정된 데이터를 비휘발성 메모리(406)에 다시 기록할 수 있다. 부가적으로, 축출된 페이지 또는 서브페이지와 연관된 포화 카운터가 재설정될 수 있다.
(475)에서, 메모리 서브 시스템(402)은 프로세스 흐름(400-a)의 425에서 식별된 비휘발성 메모리 페이지와 연관된 프리패치 카운터를 업데이트할 수 있다. 프리패치 카운터에 대한 업데이트는 메모리 페이지의 제2 부분에 대응하는 축출된 데이터와 메모리 페이지의 제1 부분에 대응하는 데이터 사이의 관계에 기초할 수 있다. 예를 들면, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제2 부분에 대응하는 데이터의 크기가 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터의 크기보다 작다고 결정할 수 있고, 프리패치 카운터의 값을 감소시킬 수 있다. 일부 예에서, 메모리 서브 시스템(402)은 비휘발성 메모리 페이지의 제2 부분에 대응하는 데이터의 크기가 비휘발성 메모리 페이지의 제1 부분에 대응하는 데이터의 크기보다 더 크다고 결정할 수 있고 - 예컨대, 메모리 페이지에 있지만, 메모리 페이지의 제1 부분의 외부에 있는 부가적인 데이터가 호스트(401)에 의해 요청될 때 - 프리패치 카운터의 값을 증가시킬 수 있다.
일부 경우에, 메모리 서브 시스템(402)은 버퍼로부터 축출된 제2 부분의 크기에 대응하도록 프리패치 카운터의 값을 선택할 수 있다. 예를 들면, 축출된 제2 부분의 크기가 256 바이트이면, 프리패치 카운터의 값은 논리(11)로 업데이트될 수 있다. 다른 예에서, 메모리 서브 시스템(402)은 버퍼(404)에 기록된 데이터에 대응하는 서브페이지가 가상 메모리 뱅크(405)에 기록된 데이터에 대응하는 서브페이지 중 하나 이상과 상이하다고 결정할 수 있고, 프리패치 카운터의 값을 수정할 수 있다. 일부 예에서, 메모리 서브 시스템(402)은 475 이전에 프리패치 카운터를 업데이트할 수 있다. 예를 들면, 메모리 서브 시스템(402)은 유사하게, 465 후에 프리패치 카운터의 값을 업데이트할 수 있다.
(475) 후에, 프로세스 흐름(400-b)은 프로세스 흐름(400-a)의 (410) 또는 (425)로 리턴할 수 있다. 일부 예에서, 호스트(401)는 상기와 동일한 비휘발성 메모리 페이지에 위치된 데이터에 대한 요청을 송신한다. 이전에 논의된 바와 같이, 요청된 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 위치되지 않는다고 결정될 수 있고, 메모리 서브 시스템(402)은 요청된 데이터를 포함하는 것과 동일한 비휘발성 메모리 페이지를 식별할 수 있다. 또한 상기 논의된 바와 같이, 메모리 서브 시스템(402)은 프리패치 카운터의 값에 기초하여 메모리 페이지의 제3 부분을 식별할 수 있다. 일부 예에서, 식별된 제3 부분은 프리패치 카운터의 업데이트된 값에 기초하여 제1 식별된 부분과 상이할 수 있다. 예를 들면, 제1 식별된 부분은 요청된 데이터를 포함하는 제1 서브페이지 및 논리 10의 값을 가지는 프리패치 카운터에 기초하여 제1, 제2, 제3 서브페이지에 대응할 수 있다. 반면에, 제3 부분은 요청된 데이터를 포함하는 제1 서브페이지 및 논리 01의 업데이트 값을 가지는 프리패치 카운터에 기초하여 - 예컨대, 제2 서브페이지가 버퍼(404)로 이동되었지만, 제3 서브페이지는 그렇지 않음을 식별하는 메모리 서브 시스템에 기초하여 제1 및 제3 서브페이지에 대응할 수 있다.
도 5는 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 지원하는 메모리 제어기(505)의 블록도(500)를 도시한다. 메모리 제어기(505)는 메모리 인터페이스 구성요소(510), 프리패치 구성요소(515), 데이터 관리 구성요소(520), 및 액세스 관리 구성요소(525)를 포함한다. 이들 구성요소의 각각은 (예컨대, 하나 이상의 버스를 통해) 서로 직접적으로 또는 간접적으로 통신할 수 있다. 일부 예에서, 메모리 제어기(505)는 메모리 서브 시스템에 걸쳐 동작을 관리한다. 즉, 메모리 제어기(505)는 메모리 어레이, 가상 메모리 뱅크와, 버퍼 사이의 통신을 관리하거나 용이하게 할 수 있다. 예를 들면, 메모리 제어기(505)는 메모리 서브 시스템의 특정 구성요소로 하여금 데이터를 기록하거나 판독하게 할 수 있다.
메모리 인터페이스 구성요소(510)는 외부 프로세서 또는 SoC로부터 수신된 명령어를 관리할 수 있다. 예를 들면, 메모리 인터페이스 구성요소(510)는 프로세서로부터, 메모리 인터페이스 구성요소(510)와 결합되는 메모리 어레이의 메모리 페이지에 위치된 데이터에 대한 요청을 수신할 수 있다.
프리패치 구성요소(515)는 메모리 어레이의 메모리 페이지에 위치된 데이터에 대한 수신된 요청에 기초하여 프리패치 동작을 관리할 수 있다. 예를 들면, 프리패치 구성요소(515)는 프리패치 카운터(530)를 포함할 수 있고 요청된 데이터를 포함하는 메모리 페이지와 연관된 프리패치 카운터(530)의 값을 식별할 수 있다.
데이터 관리 구성요소(520)는 프리패치 카운터(530)의 식별된 값에 기초하여 메모리 페이지의 일부를 메모리 어레이로부터 메모리 뱅크로 전달할 수 있으며, 여기서 일부는 요청된 데이터를 포함한다. 일부 예에서, 데이터 관리 구성요소(520)는 메모리 페이지의 일부를 메모리 뱅크에 기록한다.
액세스 관리 구성요소(525)는 메모리 뱅크에 저장되는 동안 메모리 페이지의 일부에 대해 수행된 액세스 동작의 횟수를 모니터링할 수 있다. 일부 예에서, 액세스 관리 구성요소(525)는 메모리 페이지 및/또는 메모리 페이지의 일부가 액세스되는 다수의 횟수를 추적한다. 일부 사례에서, 액세스 관리 구성요소(525)는 메모리 페이지에 대해 수행된 액세스 동작의 횟수를 추적하기 위해 하나 이상의 카운터(535)(예컨대, 포화 카운터)를 포함한다. 프리패치 카운터(530)의 제2 값은 액세스 동작의 모니터링된 횟수에 기초하여 결정될 수 있다. 예를 들면, 액세스 관리 구성요소(525)는 메모리 페이지의 부분의 서브세트, 또는 서브페이지에 대해 수행된 액세스 동작의 횟수를 모니터링할 수 있다. 액세스 관리 구성요소(525)는 서브페이지에 대해 수행된 액세스 동작의 횟수가 임계치를 만족시킨다고 결정할 수 있고 - 예컨대, 각각의 카운터(535)의 값이 임계값보다 크다 - 결정에 기초하여 서브페이지에 대응하는 데이터를 버퍼에 전달할 수 있다.
일부 예에서, 데이터 관리 구성요소(520)는 또한, 메모리 페이지의 또 다른 부분을 버퍼에 전달할 수 있다. 일부 예에서, 다른 부분은 요청된 데이터를 포함한다. 일부 경우에, 프리패치 구성요소(515)는 메모리 페이지의 제1 부분과 메모리 페이지의 제2 부분 사이의 관계에 기초하여 프리패치 카운터(530)의 값을 수정한다. 예를 들면, 프리패치 구성요소(515)는 메모리 페이지의 제2 부분에 의해 표현된 데이터가 메모리 페이지의 제1 부분에 의해 표현된 데이터와 상이하다고 결정할 수 있고, 부분이 상이하다는 결정에 기초하여 프리패치 카운터(530)의 값을 수정하거나, 조정(예컨대, 증가/감소)할 수 있다.
데이터 관리 구성요소(520)는 또한, 버퍼로 하여금 메모리 페이지의 다른 부분을 축출하게 할 수 있다. 일부 경우에, 프리패치 구성요소(515)는 다른 부분이 버퍼로부터 축출되는 것에 기초하여 - 예컨대, 축출에 응답하여 프리패치 카운터(530)의 값을 수정한다.
일부 예에서, 메모리 인터페이스 구성요소(510)는 메모리 어레이의 메모리 페이지에 위치된 데이터에 대한 제2 요청을 수신할 수 있고 요청된 데이터가 가상 메모리 뱅크 또는 버퍼에 위치되지 않는다고 결정할 수 있다. 그에 따라, 데이터 관리 구성요소(520)는 메모리 어레이에 액세스하고 메모리 페이지의 제2 데이터를 포함하는 제2 부분을 메모리 뱅크에 전달할 수 있으며, 여기서 메모리 페이지의 제1 부분(예컨대, 서브페이지 1 및 서브페이지 3을 포함할 수 있음)은 메모리 페이지의 제2 부분(예컨대, 서브페이지 2를 포함할 수 있음)과 상이하고, 메모리 페이지의 제2 부분은 제2 데이터를 포함한다.
데이터 관리 구성요소(520)는 나중에 메모리 페이지의 제3 부분(예컨대, 서브페이지 1, 서브페이지 2, 및 서브페이지 3을 포함할 수 있음)에 대응하는 데이터를 버퍼에 전달할 수 있고, 프리패치 구성요소(515)는 메모리 뱅크에 전달된 메모리 페이지의 원래의 제1 부분, 메모리 뱅크에 전달된 메모리 페이지의 제2 부분과, 버퍼에 전달된 메모리 페이지의 제3 부분 사이의 관계에 기초하여 프리패치 카운터(530)의 값을 수정할 수 있다. 예를 들면, 프리패치 구성요소(515)는 3개의 서브페이지에 대응하는 데이터가 버퍼로부터 축출되었고, 2개의 서브페이지가 가상 메모리 뱅크로 송신되었다고 결정하는 것에 기초하여 프리패치 카운터(530)의 값을 증가시킬 수 있다.
프리패치 카운터(530)가 업데이트된 후에, 메모리 인터페이스 구성요소는 메모리 어레이의 메모리 페이지에 위치된 데이터에 대한 또 다른 요청을 수신할 수 있다. 일부 경우에, 제1 및 제2 데이터가 동일하고, 다른 경우에서 제1 및 2 데이터가 상이하다. 프리패치 구성요소(515)는 메모리 페이지와 연관된 프리패치 카운터(530)의 제2 값(예컨대, 업데이트된 값)을 식별할 수 있고, 데이터 관리 구성요소(520)는 프리패치 카운터(530)의 업데이트된 값에 기초하여 메모리 페이지의 또 다른 부분을 메모리 어레이로부터 메모리 뱅크로 전달할 수 있다. 일부 경우에, 다른 부분은 최신 요청으로 요청된 데이터를 포함하고, 다른 부분은 메모리 뱅크로 송신된 원래의 제1 부분과 상이하다.
도 6은 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 위한 방법(600)을 도시하는 흐름도를 도시한다. 방법(600)의 동작은 본 명세서에서 설명된 바와 같이 메모리 시스템, 서브 시스템, 또는 그것의 구성요소에 의해 구현될 수 있다. 예를 들면, 방법(600)의 동작은 도 2를 참조하여 설명된 바와 같이, 인터페이스 제어기(230)와 같은 메모리 제어기에 의해 수행될 수 있고, 하기의 기능을 수행하기 위해 디바이스의 기능적 요소를 제어하기 위해 코드의 세트를 실행할 수 있다. 부가적으로 또는 대안적으로, 메모리 제어기는 특수 목적 하드웨어를 사용하여 하기에 설명된 기능의 양태를 수행할 수 있다.
블록(605)에서, 메모리 제어기는 디바이스의 메모리 어레이의 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신할 수 있다. 블록(605)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(605)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 메모리 인터페이스 구성요소에 의해 수행될 수 있다.
블록(610)에서, 메모리 제어기는 메모리 어레이의 메모리 페이지와 연관된 프리패치 카운터의 제1 값을 식별할 수 있다. 블록(610)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(610)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 프리패치 구성요소에 의해 수행될 수 있다.
블록(615)에서, 메모리 제어기는 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분을 메모리 어레이로부터 디바이스의 메모리 뱅크로 전달할 수 있고, 메모리 페이지의 제1 부분은 제1 데이터를 포함한다. 블록(615)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(615)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 데이터 관리 구성요소에 의해 수행될 수 있다.
장치가 설명된다. 일부 예에서, 장치는 디바이스의 메모리 어레이의 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신하기 위한 수단, 메모리 어레이의 메모리 페이지와 연관된 프리패치 카운터의 제1 값을 식별하기 위한 수단, 및 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분을 메모리 어레이로부터 디바이스의 메모리 뱅크로 전달하기 위한 수단을 포함할 수 있고, 메모리 페이지의 제1 부분은 제1 데이터를 포함한다.
일부 예에서, 장치는 메모리 페이지의 제2 부분을 디바이스의 버퍼로 전달하기 위한 수단으로서, 제2 부분은 제1 데이터의 적어도 서브세트를 포함하는, 상기 전달 수단 및 메모리 페이지의 제1 부분과 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하기 위한 수단을 포함할 수 있다. 일부 예에서, 장치는 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정하기 위한 수단을 포함할 수 있으며, 프리패치 카운터의 제1 값은 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정하는 것에 적어도 부분적으로 기초하여 수정된다.
일부 예에서, 장치는 버퍼에 의해 메모리 페이지의 제2 부분을 축출하기 위한 수단을 포함할 수 있으며, 프리패치 카운터의 제1 값은 메모리 페이지의 제2 부분을 축출하는 것에 적어도 부분적으로 기초하여 수정된다. 일부 예에서, 프리패치 카운터의 제1 값을 수정하는 것은 메모리 페이지의 제1 부분이 메모리 페이지의 제2 부분과 상이하다고 결정하는 것에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 조정하는 것을 포함할 수 있다.
일부 예에서, 장치는 메모리 페이지의 제1 부분을 메모리 뱅크에 기록하기 위한 수단 및 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링하기 위한 수단을 포함할 수 있으며, 프리패치 카운터의 제2 값은 액세스 동작의 횟수에 적어도 부분적으로 기초하여 결정된다. 일부 예에서, 수행된 액세스 동작의 횟수를 모니터링하는 것은 메모리 페이지의 제1 부분의 하나 이상의 서브세트에 대해 수행된 액세스 동작의 횟수를 모니터링하는 것을 포함할 수 있다.
일부 예에서, 장치는 하나 이상의 서브세트의 서브세트에 대해 수행된 액세스 동작의 제1 횟수가 임계치를 만족시킨다고 결정하기 위한 수단 및 결정에 적어도 부분적으로 기초하여 디바이스의 버퍼에 적어도 서브세트를 전달하기 위한 수단을 포함할 수 있다. 일부 예에서, 장치는 메모리 어레이의 메모리 페이지에 위치된 제2 데이터에 대한 제2 요청을 수신하기 위한 수단 및 메모리 페이지의 제2 부분을 메모리 어레이로부터 메모리 뱅크로 전달하기 위한 수단을 포함할 수 있으며, 메모리 페이지의 제1 부분은 메모리 페이지의 제2 부분과 상이하고, 메모리 페이지의 제2 부분은 제2 데이터를 포함한다.
일부 예에서, 장치는 메모리 페이지의 제3 부분을 메모리 뱅크로부터 디바이스의 버퍼로 전달하기 위한 수단 및 메모리 페이지의 제1 부분, 메모리 페이지의 제2 부분, 또는 메모리 페이지의 제3 부분, 또는 그들의 임의의 조합 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하기 위한 수단을 포함할 수 있다. 일부 예에서, 장치는 메모리 어레이의 메모리 페이지에 위치된 제2 데이터에 대한 제2 요청을 수신하기 위한 수단, 메모리 페이지와 연관된 프리패치 카운터의 제2 값을 식별하기 위한 수단으로서, 제2 값은 제1 값과 상이한, 상기 식별 수단, 및 프리패치 카운터의 제2 값에 적어도 부분적으로 기초하여 메모리 페이지의 제2 부분을 메모리 어레이로부터 메모리 뱅크로 전달하기 위한 수단을 포함할 수 있고, 메모리 페이지의 제1 부분은 메모리 페이지의 제2 부분과 상이하고, 메모리 페이지의 제2 부분은 제2 데이터를 포함한다.
도 7은 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 위한 방법(700)을 도시하는 흐름도를 도시한다. 방법(700)의 동작은 본 명세서에서 설명된 바와 같이 메모리 시스템, 서브 시스템, 또는 그것의 구성요소에 의해 구현될 수 있다. 예를 들면, 방법(700)의 동작은 도 2를 참조하여 설명된 바와 같이, 인터페이스 제어기(230)와 같은 메모리 제어기에 의해 수행될 수 있고, 하기의 기능을 수행하기 위해 디바이스의 기능적 요소를 제어하기 위해 코드의 세트를 실행할 수 있다. 부가적으로 또는 대안적으로, 메모리 제어기는 특수 목적 하드웨어를 사용하여 하기에 설명된 기능의 양태를 수행할 수 있다.
블록(705)에서, 메모리 제어기는 디바이스의 메모리 어레이의 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신할 수 있다. 블록(705)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(705)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 메모리 인터페이스 구성요소에 의해 수행될 수 있다.
블록(710)에서, 메모리 제어기는 메모리 어레이의 메모리 페이지와 연관된 프리패치 카운터의 제1 값을 식별할 수 있다. 블록(710)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(710)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 프리패치 구성요소에 의해 수행될 수 있다.
블록(715)에서, 메모리 제어기는 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분을 메모리 어레이로부터 디바이스의 메모리 뱅크로 전달할 수 있고, 메모리 페이지의 제1 부분은 제1 데이터를 포함한다. 블록(715)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(715)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 데이터 관리 구성요소에 의해 수행될 수 있다.
블록(720)에서, 메모리 제어기는 메모리 페이지의 제2 부분을 디바이스의 버퍼에 전달할 수 있으며, 제2 부분은 제1 데이터의 적어도 서브세트를 포함한다. 블록(720)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(720)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 데이터 관리 구성요소에 의해 수행될 수 있다.
블록(725)에서, 메모리 제어기는 메모리 페이지의 제1 부분과 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정할 수 있다. 블록(725)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(725)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 프리패치 구성요소에 의해 수행될 수 있다.
도 8은 본 발명의 예에 따른 주 메모리를 위한 프리패치 관리를 위한 방법(800)을 도시하는 흐름도를 도시한다. 방법(800)의 동작은 본 명세서에서 설명된 바와 같이 메모리 시스템, 서브 시스템, 또는 그것의 구성요소에 의해 구현될 수 있다. 예를 들면, 방법(800)의 동작은 도 2를 참조하여 설명된 바와 같이, 인터페이스 제어기(230)와 같은 인터페이스 제어기에 의해 수행될 수 있고, 인터페이스 제어기는 하기의 기능을 수행하기 위해 디바이스의 기능 요소를 제어하도록 코드의 세트를 실행할 수 있다. 부가적으로 또는 대안적으로, 인터페이스 제어기(230)는 특수 목적 하드웨어를 사용하여 하기에 설명된 기능의 양태를 수행할 수 있다.
블록(805)에서, 메모리 제어기는 디바이스의 메모리 어레이의 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신할 수 있다. 블록(805)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(805)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 메모리 인터페이스 구성요소에 의해 수행될 수 있다.
블록(810)에서, 메모리 제어기는 메모리 어레이의 메모리 페이지와 연관된 프리패치 카운터의 제1 값을 식별할 수 있다. 블록(810)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(810)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 프리패치 구성요소에 의해 수행될 수 있다.
블록(815)에서, 메모리 제어기는 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분에 대응하는 데이터를 메모리 어레이로부터 디바이스의 메모리 뱅크로 전달할 수 있고, 메모리 페이지의 제1 부분은 제1 데이터를 포함한다. 블록(815)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(815)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 데이터 관리 구성요소에 의해 수행될 수 있다. 일부 경우에, 메모리 제어기는 메모리 페이지의 제1 부분, 또는 메모리 페이지의 제1 부분에 대응하는 데이터를 메모리 뱅크에 기록한다.
일부 경우에, 메모리 제어기는 메모리 어레이의 제2 부분에 대응하는 데이터를 메모리 뱅크로부터 디바이스의 버퍼로 전달할 수 있다. 일부 경우에, 메모리 어레이의 제2 부분은 제1 요청된 데이터를 포함할 수 있다. 메모리 어레이의 제1 부분은 메모리 어레이의 제2 부분과 상이할 수 있다 - 예컨대, 제1 부분은 메모리 페이지의 3개의 서브페이지를 포함할 수 있고, 메모리 어레이의 제2 부분은 메모리 페이지의 2개의 서브페이지를 포함할 수 있다. 일부 경우에, (예컨대, 후속 "누락된" 판독의 경우) 제1 부분은 메모리 페이지의 3개의 서브페이지를 포함할 수 있고, 메모리 어레이의 제2 부분은 메모리 페이지의 4개의 서브페이지를 포함할 수 있다.
메모리 제어기는 메모리 페이지의 제1 부분과 메모리 페이지의 제2 부분 사이의 관계에 기초하여 프리패치 카운터의 제1 값을 수정할 수 있다. 예를 들면, 메모리 제어기는 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정할 수 있고, 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정하는 것에 기초하여 프리패치 카운터의 제1 값을 수정할 수 있다. 일부 경우에, 메모리 제어기는 (예컨대, 특정 시간 기간이 경과한 후에) 버퍼로 하여금 메모리 페이지의 제2 부분을 축출하게 한다. 메모리 제어기는 메모리 페이지의 제2 부분의 축출에 기초하여 프리패치 카운터의 값을 수정할 수 있다. 예를 들면, 메모리 제어기는 축출이 발생한 후까지 프리패치 카운터를 업데이트하는 것을 대기할 수 있다.
축출 후에, 메모리 제어기는 메모리 페이지의 제1 부분에 대응하는 데이터 및 메모리 페이지의 제2 부분에 대응하는 데이터가 상이하다고 결정하는 것에 기초하여 프리패치 카운터의 제1 값을 조정할 수 있다. 예를 들면, 메모리 제어기는 메모리 페이지의 제1 부분이 메모리 페이지의 제2 부분보다 적은 서브페이지에 대응한다고 결정하는 것에 기초하여 프리패치 카운터의 제1 값을 증가시킬 수 있다(예컨대, 제1 부분은 3개의 서브페이지에 대응하고 제2 부분은 4개의 서브페이지에 대응한다). 또 다른 예에서, 메모리 제어기는 메모리 페이지의 제1 부분이 메모리 페이지의 제2 부분보다 많은 서브페이지에 대응한다고 결정하는 것에 기초하여 프리패치 카운터의 값을 감소시킬 수 있다. 여전히 또 다른 예에서, 메모리 페이지의 제1 부분이 메모리 페이지의 제2 부분과 적어도 하나의 상이한 서브페이지에 대응한다고 결정하는 것에 기초하여 프리패치 카운터의 제1 값을 증가시킬 수 있다.
메모리 제어기는 또한, 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링할 수 있고, 프리패치 카운터의 제2 값은 액세스 동작의 모니터링 횟수에 기초할 수 있다. 예를 들면, 메모리 제어기는 메모리 페이지의 제1 부분의 각각의 서브세트, 또는 서브페이지에 대해 수행된 액세스 동작의 횟수를 모니터링할 수 있고 메모리 페이지의 제2 부분의 서브세트, 또는 서브페이지의 수는 액세스 동작의 모니터링된 횟수에 기초할 수 있다. 예를 들면, 메모리 제어기는 제2 부분에 포함된 2개의 서브페이지가 임계 횟수보다 많이 액세스되고, 다른 서브페이지가 임계 횟수 미만으로 액세스되었다고 결정하는 것에 기초하여 메모리 페이지의 제2 부분에 3개의 서브페이지 중 2개를 포함할 것을 선택할 수 있다.
일부 경우에, 메모리 제어기는 가상 메모리 뱅크 또는 버퍼의 특정 데이터에 액세스하기 위한 제2 요청이 "누락"되었다고 결정할 수 있다. 그에 따라, 메모리 제어기는 메모리 어레이에서 요청된 데이터의 위치를 찾고 데이터를 가상 메모리 뱅크로 이동할 수 있다. 일부 예에서, 제2 요청된 데이터는 제1 요청된 데이터와 동일한 메모리 페이지에 위치되고, 메모리 제어기는 메모리 페이지의 제2 부분을 가상 메모리 뱅크에 전달하며, 여기서 메모리 페이지의 제2 부분은 메모리 페이지의 제1 부분과 상이하고 제2 요청된 데이터를 포함한다.
이러한 경우에, 메모리 제어기는 메모리 페이지의 제1 부분으로부터의 서브페이지 및 제2 부분으로부터의 서브페이지에 대응하는 데이터를 포함하는, 제3 부분에 대응하는 데이터를 버퍼에 전달할 수 있다. 버퍼가 메모리 페이지의 제3 부분을 축출한 후에, 메모리 제어기는 메모리 어레이의 제1 부분, 제2 부분과 제3 부분 사이의 관계에 기초하여 메모리 제어기의 제1 값을 수정할 수 있다. 예를 들면, 제1 부분이 2개의 서브페이지의 제1 세트에 대응하고, 제2 부분이 2개의 서브페이지의 제2 세트에 대응하며, 제3 부분이 모든 4개의 서브페이지에 대응하는 경우, 메모리 제어기는 프리패치 카운터의 값을 증가시킬 수 있다.
블록(820)에서 그리고 프리패치 카운터가 제2 값으로 업데이트된 후에, 메모리 제어기는 메모리 어레이의 메모리 페이지에 위치된 제2 데이터에 대한 제2 요청을 수신할 수 있다. 블록(820)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(820)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 메모리 인터페이스 구성요소에 의해 수행될 수 있다. 일부 경우에, 제2 데이터는 제1 데이터와 동일할 수 있다.
블록(825)에서, 메모리 제어기는 메모리 페이지와 연관된 프리패치 카운터의 제2 값을 식별할 수 있으며, 제2 값은 제1 값과 상이하다. 블록(825)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(825)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 프리패치 구성요소에 의해 수행될 수 있다.
블록(830)에서, 메모리 제어기는 프리패치 카운터의 제2 값에 적어도 부분적으로 기초하여 메모리 페이지의 제2 부분을 메모리 어레이로부터 메모리 뱅크로 전달할 수 있으며, 메모리 페이지의 제1 부분은 메모리 페이지의 제2 부분과 상이하고, 메모리 페이지의 제2 부분은 제2 데이터를 포함한다. 블록(830)의 동작은 도 3 및 도 4를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 예에서, 블록(830)의 동작 중 일부 또는 전부는 도 5를 참조하여 설명된 바와 같이 데이터 관리 구성요소에 의해 수행될 수 있다.
장치가 설명된다. 일부 예에서, 장치는 제1 메모리 페이지 크기로 구성된 제1 메모리 페이지에 데이터를 저장하도록 구성된 메모리 어레이, 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기로 구성된 제2 메모리 페이지에 데이터를 저장하도록 구성된 메모리 뱅크, 및 제1 메모리 페이지와 연관된 프리패치 카운터를 포함할 수 있고, 프리패치 카운터는 제1 메모리 페이지에 위치된 데이터에 대한 요청에 응답하여 메모리 뱅크에 제공된 제1 메모리 페이지의 제1 부분에 대응하는 제1 값을 저장하도록 구성된다.
일부 예에서, 장치는 제1 메모리 페이지의 제2 부분을 수신하도록 구성된 버퍼를 포함할 수 있고, 프리패치 카운터의 제1 값은 제1 메모리 페이지의 제2 부분에 적어도 부분적으로 기초한다. 일부 예에서, 장치는 제1 메모리 페이지의 제1 부분과 제1 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 구성된 제어기를 포함할 수 있다.
일부 예에서, 장치는 제1 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링하도록 구성된 제2 카운터를 포함할 수 있으며, 제1 메모리 페이지의 제2 부분은 제2 카운터의 제2 값에 적어도 부분적으로 기초한다. 일부 예에서, 장치는 제1 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작을 모니터링하도록 구성된 제어기를 포함할 수 있다. 일부 예에서, 제1 메모리 페이지는 제1 메모리 페이지의 복수의 서브세트로 분할된다.
일부 예에서, 메모리 어레이는 각각이 제1 메모리 페이지 크기로 구성된 복수의 메모리 페이지를 저장하도록 구성된다. 일부 예에서, 장치는 각각이 복수의 메모리 페이지의 대응하는 메모리 페이지와 연관된 복수의 프리패치 카운터를 포함할 수 있으며, 복수의 프리패치 카운터의 각각은 각각의 메모리 페이지의 각각의 부분에 대응하는 각각의 값을 저장하도록 구성되고, 각각의 부분은 각각의 메모리 페이지에 위치된 데이터에 대한 각각의 요청에 응답한다.
장치가 설명된다. 일부 예에서, 장치는 제1 메모리 페이지 크기로 구성된 제1 메모리 페이지에 데이터를 저장하도록 구성된 메모리 어레이, 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기로 구성된 제2 메모리 페이지에 데이터를 저장하도록 구성된 메모리 뱅크, 프리패치 카운터로서, 프리패치 카운터의 제1 값은 제1 메모리 페이지와 연관되는, 상기 프리패치 카운터, 및 메모리 어레이, 메모리 뱅크와 결합되고, 호스트와 인터페이스하도록 구성된 제어기를 포함할 수 있다. 일부 예에서, 제어기는 제1 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신하고, 프리패치 카운터의 제1 값을 식별하며, 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 제1 메모리 페이지의 제1 부분을 메모리 어레이로부터 메모리 뱅크로 전달하도록 동작 가능할 수 있고, 제1 메모리 페이지의 제1 부분은 제1 데이터를 포함한다.
일부 예에서, 장치는 버퍼를 포함할 수 있고 제어기는 제1 메모리 페이지의 제2 부분을 메모리 뱅크로부터 버퍼로 전달하도록 동작 가능할 수 있다. 일부 예에서, 제어기는 제1 메모리 페이지의 제1 부분과 제1 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 동작 가능할 수 있다. 일부 예에서, 제어기는 제1 메모리 페이지의 제2 부분이 제1 메모리 페이지의 제1 부분과 상이하다고 결정하도록 동작 가능할 수 있으며, 프리패치 카운터의 제1 값을 수정하는 것은 제1 메모리 페이지의 제2 부분이 제1 메모리 페이지의 제1 부분과 상이하다고 결정하는 것에 적어도 부분적으로 기초한다.
일부 예에서, 제어기는 제1 메모리 페이지의 제1 부분이 제1 메모리 페이지의 제2 부분과 상이하다고 결정하는 것에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 조정하도록 동작 가능할 수 있다. 일부 예에서, 제어기는 제1 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링하도록 동작 가능할 수 있고, 프리패치 카운터의 제2 값은 액세스 동작의 횟수에 적어도 부분적으로 기초하여 결정된다. 일부 예에서, 제어기는 제1 메모리 페이지의 제1 부분의 하나 이상의 서브세트에 대해 수행된 액세스 동작의 횟수를 모니터링하도록 동작 가능할 수 있다.
장치가 설명된다. 일부 예에서, 장치는 제1 메모리 페이지 크기에 따라 구성된 메모리 어레이, 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기에 따라 구성된 메모리 뱅크, 및 메모리 어레이, 메모리 뱅크와 결합되고, 호스트와 인터페이스하도록 구성된 제어기를 포함할 수 있다. 일부 예에서, 제어기는 메모리 어레이의 메모리 페이지에 위치된 제1 데이터에 대한 요청을 수신하도록 구성된 메모리 인터페이스 구성요소, 메모리 어레이의 메모리 페이지의 제1 부분과 연관된 제1 값을 식별하도록 구성된 프리패치 구성요소, 및 프리패치 구성요소의 제1 값에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분에 대응하는 제2 데이터를 메모리 뱅크에 전달하도록 구성된 데이터 관리 구성요소를 포함할 수 있고, 제2 데이터는 제1 데이터를 포함한다.
일부 예에서, 장치는 메모리 페이지의 하나 이상의 부분에 대해 수행된 액세스 동작의 양을 모니터링하도록 구성되는 포화 카운터를 포함하는 액세스 관리 구성요소를 포함할 수 있으며, 제1 값은 액세스 동작의 양에 적어도 부분적으로 기초한다. 일부 예에서, 장치는 제2 메모리 페이지 크기에 따라 구성된 버퍼를 포함할 수 있다. 일부 예에서, 데이터 관리 구성요소는 메모리 페이지의 제2 부분에 대응하는 제3 데이터를 버퍼에 전달하도록 더 구성된다.
일부 예에서, 장치는 제1 값을 저장하도록 구성된 프리패치 카운터를 포함할 수 있다. 일부 예에서, 프리패치 구성요소는 프리패치 카운터를 포함하고 메모리 페이지의 제1 부분의 제1 크기 및 메모리 페이지의 제2 부분의 제2 크기에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 더 구성된다. 일부 예에서, 데이터 관리 구성요소는 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정하도록 더 구성되고, 프리패치 구성요소는 결정에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 더 구성된다. 일부 예에서, 프리패치 구성요소는 결정에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 조정하도록 더 구성된다.
장치가 설명된다. 일부 예에서, 장치는 제1 메모리 페이지 크기에 따라 구성된 메모리 어레이, 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기에 따라 구성된 메모리 뱅크, 메모리 어레이의 메모리 페이지와 연관된 제1 값을 저장하도록 구성된 프리패치 카운터, 및 메모리 어레이의 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신하고 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분에 대응하는 제2 데이터를 메모리 뱅크에 전달하도록 구성된 인터페이스 제어기를 포함할 수 있고, 제2 데이터는 제1 데이터를 포함한다.
일부 예에서, 장치는 제2 메모리 페이지 크기에 따라 구성된 버퍼를 포함할 수 있다. 일부 예에서, 인터페이스 제어기는 메모리 페이지의 제2 부분에 대응하는 제3 데이터를 버퍼에 전달하도록 구성될 수 있다. 일부 예에서, 장치는 프리패치 카운터를 포함하고 메모리 페이지의 제1 부분과 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 구성된 프리패치 구성요소를 포함할 수 있다. 일부 예에서, 프리패치 구성요소는 메모리 페이지의 제2 부분이 메모리 페이지의 제1 부분과 상이하다고 결정하고 결정에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 구성될 수 있다.
일부 예에서, 버퍼는 제2 데이터를 축출하도록 구성될 수 있다. 일부 예에서, 프리패치 카운터는 축출에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 구성될 수 있다. 일부 예에서, 장치는 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 제1 양을 모니터링하도록 구성된 액세스 관리 구성요소를 포함할 수 있으며, 프리패치 카운터의 제1 값은 축출에 적어도 부분적으로 기초한다. 일부 예에서, 장치는 메모리 페이지의 제1 부분의 서브세트에 대해 수행된 액세스 동작의 제2 양을 모니터링하도록 구성된 포화 카운터를 포함할 수 있으며, 액세스 관리 구성요소는 포화 카운터를 포함한다. 일부 예에서, 인터페이스 제어기는 모니터링에 적어도 부분적으로 기초하여 메모리 페이지의 제1 부분의 서브세트에 대응하는 데이터를 버퍼에 전달하도록 구성될 수 있다.
장치가 설명된다. 일부 예에서, 장치는 메모리 서브 시스템을 포함할 수 있다. 일부 예에서, 메모리 서브 시스템은 제1 메모리 프로토콜에 따라 제1 메모리 페이지에 제1 데이터를 저장하도록 구성된 메모리 어레이, 제1 메모리 페이지의 제1 부분에 대응하는 제1 값을 저장하도록 구성된 프리패치 카운터, 및 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 제1 메모리 페이지의 제1 부분에 액세스하도록 구성된 인터페이스 제어기를 포함할 수 있고, 메모리 서브 시스템은 제1 메모리 프로토콜과 상이한 제2 메모리 프로토콜에 따라 호스트에 의해 액세스되도록 구성된다.
일부 예에서, 제1 메모리 프로토콜은 제1 메모리 페이지 크기 및 제1 타이밍 파라미터와 연관되고 제2 메모리 프로토콜은 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기 및 제1 타이밍 파라미터와 상이한 제2 타이밍 파라미터와 연관되고, 호스트는 메모리 서브 시스템의 외부에 있고 제2 메모리 프로토콜에 따라 메모리 서브 시스템에 액세스하도록 구성되며, 인터페이스 제어기는 제1 데이터를 호스트에 전달하도록 구성된다. 일부 예에서, 장치는 호스트 및 메모리 서브 시스템과 결합된 버스를 포함할 수 있고, 버스는 제2 메모리 프로토콜에 대한 시그널링을 전달하도록 구성된다.
일부 예에서, 메모리 서브 시스템은 제2 메모리 프로토콜에 따라 제2 메모리 페이지에, 제1 메모리 페이지의 제1 부분에 대응하는 제2 데이터를 저장하도록 구성된 메모리 뱅크를 포함할 수 있으며, 인터페이스 제어기는 제2를 메모리 뱅크에 전달하도록 구성된다. 일부 예에서, 메모리 서브 시스템은 메모리 뱅크의 제2 메모리 페이지의 서브세트에 대해 수행된 액세스 동작의 양을 모니터링하도록 구성된 포화 카운터로서, 인터페이스 제어기는 메모리 뱅크에서, 포화 카운터의 값에 적어도 부분적으로 기초하여 제1 메모리 페이지의 제2 부분에 대응하는 제3 데이터에 액세스하도록 구성되는, 상기 포화 카운터 및 제2 메모리 프로토콜에 따라 제3 메모리 페이지에 제3 데이터를 저장하도록 구성된 버퍼를 포함할 수 있고, 인터페이스 제어기는 제3 데이터를 버퍼에 전달하도록 구성된다. 일부 예에서, 메모리 서브 시스템은 제1 메모리 페이지의 제1 부분과 제1 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 프리패치 카운터의 제1 값을 수정하도록 구성된 프리패치 구성요소를 포함할 수 있다.
상기 설명된 방법이 가능한 구현을 설명하고, 동작 및 단계가 재배열되거나 그렇지 않으면 수정될 수 있으며 다른 구현이 가능하다는 것에 유의해야 한다. 또한, 방법 중 2개 이상으로부터의 특징이 조합될 수 있다.
본 명세서에서 설명된 정보 및 신호는 다양한 상이한 기술 및 기법 중 임의의 것을 사용하여 표현될 수 있다. 예를 들면, 상기 설명에 걸쳐 참조될 수 있는 데이터, 지시, 명령어, 정보, 신호, 비트, 기호, 및 칩은 전압, 전류, 전자기파, 자기장 또는 입자, 광학장 또는 입자, 또는 그들의 임의의 조합에 의해 표현될 수 있다. 일부 도면은 신호를 단일 신호로서 도시할 수 있다; 그러나, 당업자에 의해 신호가 신호의 버스를 표현할 수 있고, 여기서 버스는 다양한 비트 폭을 가질 수 있다는 것이 이해될 것이다.
본 명세서에서 사용된 바와 같이, 용어 "가상 접지"는 대략 제로 볼트(0V)의 전압으로 유지되지만 접지와 직접적으로 연결되지 않은 전기 회로의 노드를 언급한다. 그에 따라, 가상 접지의 전압은 일시적으로 변동하고 정상 상태에서 대략 0V로 리턴할 수 있다. 가상 접지는 연산 증폭기 및 저항으로 구성된 전압 분배기와 같은 다양한 전자 회로 요소를 사용하여 구현될 수 있다. 다른 구현이 또한 가능하다. "가상 접지하는" 또는 "가상 접지된"은 대략 0V에 연결됨을 의미한다.
용어 "전자 통신" 및 "결합된"은 구성요소 사이의 전자 흐름을 지원하는 구성요소 사이의 관계를 언급한다. 이것은 구성요소 사이의 직접 연결을 포함할 수 있거나 중간 구성요소를 포함할 수 있다. 전자 통신하거나 서로 결합된 구성요소는 전자 또는 신호를 능동적으로 교환할 수 있거나(예컨대, 전압이 공급된 회로에서) 전자 또는 신호를 능동적으로 교환하지 않을 수 있지만(예컨대, 무전압 회로에서) 회로에 전압이 공급될 때 전자 또는 신호를 교환하도록 구성되고 동작 가능할 수 있다. 예로서, 스위치(예컨대, 트랜지스터)를 통해 물리적으로 연결된 2개의 구성요소는 전자 통신 중이거나 스위치의 상태(즉, 개방되거나 폐쇄됨)에 관계 없이 결합될 수 있다.
본 명세서에서 논의된 트랜지스터 또는 트랜지스터들은 전계 효과 트랜지스터(FET)를 표현하고 소스, 드레인, 및 게이트를 포함하는 3 단자 디바이스를 포함할 수 있다. 단자는 전도성 재료 예로서, 금속을 통해 다른 전자 소자에 연결될 수 있다. 소스 및 드레인은 전도성일 수 있으며 고농도로 도핑된 예로서, 축퇴된 반도체 영역을 포함할 수 있다. 소스 및 드레인은 약하게 도핑된 반도체 영역 또는 채널에 의해 분리될 수 있다. 채널이 n형(즉, 대부분의 캐리어가 전자임)이면, FET는 n형 FET로서 언급될 수 있다. 채널이 p형(즉, 대부분의 캐리어가 홀임)이면, FET는 p형 FET로서 언급될 수 있다. 채널은 절연 게이트 산화물에 의해 캡핑(capping)될 수 있다. 채널 전도성은 게이트에 전압을 인가함으로써 제어될 수 있다. 예를 들면, n형 FET 또는 p형 FET에 각각 양의 전압 또는 음의 전압을 인가하는 것은 채널이 전도성이 되는 것을 야기할 수 있다. 트랜지스터의 임계 전압보다 크거나 같은 전압이 트랜지스터 게이트에 인가될 때 트랜지스터는 "온" 또는 "활성화"될 수 있다. 트랜지스터의 임계 전압 미만의 전압이 트랜지스터 게이트에 인가될 때 트랜지스터는 "오프" 또는 "비활성화"될 수 있다.
첨부된 도면과 관련하여 본 명세서에서 제시된 설명은 예시적인 구성을 설명하며 구현될 수 있거나 청구항의 범위 내에 있는 모든 예를 표현하지 않는다. 본 명세서에서 사용된 용어 "예시적인"은 "일례, 사례, 또는 예시의 역할을 하는 것"을 의미하고, "선호된" 또는 "다른 예에 비해 유리함"을 의미하지 않는다. 상세한 설명은 설명된 기법의 이해를 제공할 목적을 위해 특정 상세를 포함한다. 이들 기법은 그러나, 이들 특정 상세 없이 실행될 수 있다. 일부 사례에서, 잘 알려진 구조 및 디바이스는 설명된 예의 개념을 모호하게 하는 것을 회피하기 위해 블록 다이어그램 형태로 도시된다.
첨부된 도면에서, 유사한 구성요소 또는 특징은 동일한 참조 라벨을 가질 수 있다. 게다가, 동일한 유형의 다양한 구성요소는 유사한 구성요소 사이를 구별하는 제2 라벨 및 대시에 의한 참조 라벨을 따름으로써 구별될 수 있다. 명세서에서 제1 참조 라벨만 사용되면, 설명은 제2 참조 라벨에 관계 없이 동일한 제1 참조 라벨을 가지는 유사한 구성요소 중 임의의 하나에 적용가능하다.
본 명세서에서 설명된 정보 및 신호는 다양한 상이한 기술 및 기법 중 임의의 것을 사용하여 표현될 수 있다. 예를 들면, 상기 설명에 걸쳐 참조될 수 있는 데이터, 지시, 명령어, 정보, 신호, 비트, 기호, 및 칩은 전압, 전류, 전자기파, 자기장 또는 입자, 광학장 또는 입자, 또는 그들의 임의의 조합에 의해 표현될 수 있다.
본 명세서에서의 개시와 관련하여 설명된 다양한 예시적인 블록 및 모듈은 범용 프로세서, DSP, ASIC, FPGA 또는 다른 프로그래밍가능한 논리 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 구성요소, 또는 본 명세서에서 설명된 기능을 수행하도록 설계된 그들의 임의의 조합으로 구현되거나 수행될 수 있다. 메모리 제어기를 포함하는 예시적인 블록 및 모듈은 예를 들면, ASIC 설계에서 사용하기 위해 IP 블록에서 지시로서 표현될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스의 조합(예컨대, 디지털 신호 프로세서(DSP) 및 마이크로프로세서, 다수의 마이크로프로세서, DSP 코어와 결부된 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성의 조합)으로서 구현될 수 있다.
본 명세서에서 설명된 기능은 하드웨어, 프로세서에 의해 실행된 소프트웨어, 펌웨어, 또는 그들의 임의의 조합으로 구현될 수 있다. 프로세서에 의해 실행된 소프트웨어로 구현되면, 기능은 컴퓨터 판독가능한 매체의 하나 이상의 지시 또는 코드에 저장되거나 하나 이상의 지시 또는 코드로서 송신될 수 있다. 다른 예 및 구현은 본 발명 및 첨부된 청구항의 범위 내에 있다. 예를 들면, 소프트웨어의 본질로 인해, 상기 설명된 기능은 프로세서, 하드웨어, 펌웨어, 하드와이어링, 또는 이들 중 임의의 것의 조합에 의해 실행된 소프트웨어를 사용하여 구현될 수 있다. 기능을 구현하는 특징은 또한, 기능의 일부가 상이한 물리적 위치에서 구현되도록 분산되는 것을 포함하는 다양한 위치에 물리적으로 위치될 수 있다. 또한, 청구항에서를 포함하는 본 명세서에서 사용된 바와 같이, 항목의 목록(예를 들면, "~중 적어도 하나" 또는 "~중 하나 이상"과 같은 문구가 앞에 있는 항목의 목록)에서 사용된 바와 같이 "또는"은 예를 들면, A, B, 또는 C 중 적어도 하나의 목록이 A 또는 B 또는 C 또는 AB 또는 AC 또는 BC 또는 ABC(즉, A 및 B 및 C)를 의미하도록 포괄적 목록을 나타낸다. 또한, 본 명세서에 사용된 바와 같이, 문구 "~에 기초하여"는 폐쇄된 세트의 조건에 대한 참조로서 해석되지 않을 것이다. 예를 들면, "조건(A)에 기초하여"로서 설명되는 일 예시적인 단계는 본 발명의 범위를 벗어나지 않고 조건(A) 및 조건(B) 둘 모두에 기초할 수 있다. 즉, 본 명세서에서 사용된 바와 같이, 문구 "~에 기초하여"는 문구 "~에 적어도 부분적으로 기초하여"와 동일한 방식으로 해석될 것이다.
컴퓨터 판독가능한 매체는 하나의 장소로부터 또 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체 및 비 일시적 컴퓨터 저장 매체 둘 모두를 포함한다. 비 일시적 저장 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예로서, 그리고 제한이 아닌 것으로서, 비 일시적 컴퓨터 판독가능한 매체는 RAM, ROM, 전기 소거가능한 프로그래밍가능한 판독 전용 메모리(EEPROM), 콤팩트 디스크(CD) ROM 또는 다른 광학 디스크 저장장치, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스, 또는 원하는 프로그램 코드 수단을 지시 또는 데이터 구조의 형태로 운반하거나 저장하기 위해 사용할 수 있고 범용 또는 특수 목적 컴퓨터, 또는 범용 또는 특수 목적 프로세서에 의해 액세스될 수 있는 임의의 다른 비 일시적 매체를 포함할 수 있다. 또한, 임의의 연결은 컴퓨터 판독가능한 매체로 적절하게 칭해진다. 예를 들면, 소프트웨어가 동축 케이블, 광섬유 케이블, 꼬임 쌍선(twisted pair), 디지털 가입자 회선(DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 꼬임 쌍선, 디지털 가입자 회선(DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 본 명세서에서 사용된 바와 같이, 디스켓 및 디스크는 CD, 레이저 디스크, 광학 디스크, 디지털 다기능 디스크(DVD), 플로피 디스켓 및 블루레이 디스크를 포함하고 여기서, 디스켓은 일반적으로, 데이터를 자기적으로 재생하고, 디스크는 레이저를 사용하여 데이터를 광학적으로 재생한다. 상기의 조합은 또한, 컴퓨터 판독가능한 매체의 범위 내에 포함된다.
본 명세서에서의 설명은 당업자가 본 발명을 하거나 사용하는 것을 가능하게 하기 위해 제공된다. 본 발명에 대한 다양한 수정은 당업자에게 용이하게 명백할 것이며, 본 명세서에서 정의된 일반적인 원리는 본 발명의 범위를 벗어나지 않고 다른 변형에 적용될 수 있다. 따라서, 본 발명은 본 명세서에서 설명된 예 및 설계로 제한되지 않지만, 본 명세서에 개시된 원리 및 신규 특징과 일치하는 가장 넓은 범위에 부합되어야 한다.

Claims (25)

  1. 방법으로서,
    디바이스의 메모리 어레이의 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신하는 단계;
    상기 메모리 어레이의 메모리 페이지와 연관된 프리패치 카운터(prefetch counter)의 제1 값을 식별하는 단계; 및
    상기 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 상기 메모리 페이지의 제1 부분을 상기 메모리 어레이로부터 상기 디바이스의 메모리 뱅크(memory bank)로 전달하는 단계를 포함하되, 상기 메모리 페이지의 상기 제1 부분은 상기 제1 데이터를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 메모리 페이지의 제2 부분을 상기 디바이스의 버퍼에 전달하는 단계로서, 상기 제2 부분은 상기 제1 데이터의 적어도 서브세트를 포함하는, 상기 제2 부분을 전달하는 단계; 및
    상기 메모리 페이지의 제1 부분과 상기 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 상기 프리패치 카운터의 제1 값을 수정하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 메모리 페이지의 제2 부분이 상기 메모리 페이지의 제1 부분과 상이하다고 결정하는 단계를 더 포함하되, 상기 프리패치 카운터의 제1 값은 상기 메모리 페이지의 제2 부분이 상기 메모리 페이지의 제1 부분과 상이하다고 결정하는 단계에 적어도 부분적으로 기초하여 수정되는, 방법.
  4. 제3항에 있어서,
    상기 버퍼에 의해, 상기 메모리 페이지의 제2 부분을 축출하는 단계를 더 포함하되, 상기 프리패치 카운터의 제1 값은 상기 메모리 페이지의 제2 부분을 축출하는 단계에 적어도 부분적으로 기초하여 수정되는, 방법.
  5. 제3항에 있어서, 상기 프리패치 카운터의 제1 값을 수정하는 단계는,
    상기 메모리 페이지의 제1 부분이 상기 메모리 페이지의 제2 부분과 상이하다고 결정하는 단계에 적어도 부분적으로 기초하여 상기 프리패치 카운터의 제1 값을 조정하는 단계를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 메모리 페이지의 제1 부분을 상기 메모리 뱅크에 기록하는 단계; 및
    상기 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링하는 단계를 더 포함하되, 상기 프리패치 카운터의 제2 값은 상기 액세스 동작의 횟수에 적어도 부분적으로 기초하여 결정되는, 방법.
  7. 제6항에 있어서, 수행된 상기 액세스 동작의 횟수를 모니터링하는 단계는,
    상기 메모리 페이지의 제1 부분의 하나 이상의 서브세트에 대해 수행된 상기 액세스 동작의 횟수를 모니터링하는 단계를 포함하는, 방법.
  8. 제7항에 있어서,
    상기 하나 이상의 서브세트 중 하나의 서브세트에 대해 수행된 액세스 동작의 제1 횟수가 임계치를 만족시킨다고 결정하는 단계; 및
    상기 결정하는 단계에 적어도 부분적으로 기초하여 상기 디바이스의 버퍼에 적어도 상기 서브세트를 전달하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서,
    상기 메모리 어레이의 메모리 페이지에 위치된 제2 데이터에 대한 제2 요청을 수신하는 단계; 및
    상기 메모리 페이지의 제2 부분을 상기 메모리 어레이로부터 상기 메모리 뱅크로 전달하는 단계를 더 포함하되, 상기 메모리 페이지의 제1 부분은 상기 메모리 페이지의 제2 부분과 상이하며, 상기 메모리 페이지의 제2 부분은 상기 제2 데이터를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 메모리 페이지의 제3 부분을 상기 메모리 뱅크로부터 상기 디바이스의 버퍼로 전달하는 단계; 및
    상기 메모리 페이지의 제1 부분, 상기 메모리 페이지의 제2 부분, 또는 상기 메모리 페이지의 제3 부분, 또는 이들의 임의의 조합 사이의 관계에 적어도 부분적으로 기초하여 상기 프리패치 카운터의 제1 값을 수정하는 단계를 더 포함하는, 방법.
  11. 제1항에 있어서,
    상기 메모리 어레이의 메모리 페이지에 위치된 제2 데이터에 대한 제2 요청을 수신하는 단계;
    상기 메모리 페이지와 연관된 상기 프리패치 카운터의 제2 값을 식별하는 단계로서, 상기 제2 값은 상기 제1 값과는 상이한, 상기 제2 값을 식별하는 단계; 및
    상기 프리패치 카운터의 제2 값에 적어도 부분적으로 기초하여 상기 메모리 페이지의 제2 부분을 상기 메모리 어레이로부터 상기 메모리 뱅크로 전달하는 단계를 더 포함하되, 상기 메모리 페이지의 제1 부분은 상기 메모리 페이지의 제2 부분과 상이하며, 상기 메모리 페이지의 제2 부분은 상기 제2 데이터를 포함하는, 방법.
  12. 장치로서,
    제1 메모리 페이지 크기로 구성된 제1 메모리 페이지에 데이터를 저장하도록 구성된 메모리 어레이;
    상기 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기로 구성된 제2 메모리 페이지에 데이터를 저장하도록 구성된 메모리 뱅크; 및
    상기 제1 메모리 페이지와 연관된 프리패치 카운터를 포함하되, 상기 프리패치 카운터는 상기 제1 메모리 페이지에 위치된 데이터에 대한 요청에 응답하여 상기 메모리 뱅크에 제공된 상기 제1 메모리 페이지의 제1 부분에 대응하는 제1 값을 저장하도록 구성되는, 장치.
  13. 제12항에 있어서,
    상기 제1 메모리 페이지의 제2 부분을 수신하도록 구성된 버퍼를 더 포함하되, 상기 프리패치 카운터의 제1 값은 상기 제1 메모리 페이지의 제2 부분에 적어도 부분적으로 기초하는, 장치.
  14. 제13항에 있어서,
    상기 제1 메모리 페이지의 제1 부분과 상기 제1 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 상기 프리패치 카운터의 제1 값을 수정하도록 구성된 제어기를 더 포함하는, 장치.
  15. 제13항에 있어서,
    상기 제1 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링하도록 구성된 제2 카운터를 더 포함하되, 상기 제1 메모리 페이지의 제2 부분은 상기 제2 카운터의 제2 값에 적어도 부분적으로 기초하는, 장치.
  16. 제15항에 있어서,
    상기 제1 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작을 모니터링하도록 구성된 제어기를 더 포함하는, 장치.
  17. 제12항에 있어서, 상기 제1 메모리 페이지는 상기 제1 메모리 페이지의 복수의 서브세트로 분할되는, 장치.
  18. 제12항에 있어서, 상기 메모리 어레이는 각각이 상기 제1 메모리 페이지 크기로 구성된 복수의 메모리 페이지를 저장하도록 구성되고, 상기 장치는,
    각각이 상기 복수의 메모리 페이지의 대응하는 메모리 페이지와 연관된 복수의 프리패치 카운터를 더 포함하되, 상기 복수의 프리패치 카운터의 각각은 각각의 메모리 페이지의 각각의 부분에 대응하는 각각의 값을 저장하도록 구성되고, 상기 각각의 부분은 상기 각각의 메모리 페이지에 위치된 데이터에 대한 각각의 요청에 응답하는, 장치.
  19. 장치로서,
    제1 메모리 페이지 크기로 구성된 제1 메모리 페이지에 데이터를 저장하도록 구성된 메모리 어레이;
    상기 제1 메모리 페이지 크기와는 상이한 제2 메모리 페이지 크기로 구성된 제2 메모리 페이지에 데이터를 저장하도록 구성된 메모리 뱅크;
    프리패치 카운터로서, 상기 프리패치 카운터의 제1 값은 상기 제1 메모리 페이지와 연관되는, 상기 프리패치 카운터; 및
    상기 메모리 어레이, 상기 메모리 뱅크와 결합되고, 호스트와 인터페이스하도록 구성된 제어기를 포함하되, 상기 제어기는,
    상기 제1 메모리 페이지에 위치된 제1 데이터에 대한 제1 요청을 수신하고;
    상기 프리패치 카운터의 제1 값을 식별하며; 그리고
    상기 프리패치 카운터의 제1 값에 적어도 부분적으로 기초하여 상기 제1 메모리 페이지의 제1 부분을 상기 메모리 어레이로부터 상기 메모리 뱅크로 전달하도록 동작 가능하고, 상기 제1 메모리 페이지의 제1 부분은 상기 제1 데이터를 포함하는, 장치.
  20. 제19항에 있어서,
    버퍼를 더 포함하되, 상기 제어기는,
    상기 제1 메모리 페이지의 제2 부분을 상기 메모리 뱅크로부터 상기 버퍼로 전달하도록 더 동작 가능한, 장치.
  21. 제20항에 있어서, 상기 제어기는,
    상기 제1 메모리 페이지의 제1 부분과 상기 제1 메모리 페이지의 제2 부분 사이의 관계에 적어도 부분적으로 기초하여 상기 프리패치 카운터의 제1 값을 수정하도록 동작 가능한, 장치.
  22. 제20항에 있어서, 상기 제어기는,
    상기 제1 메모리 페이지의 제2 부분이 상기 제1 메모리 페이지의 제1 부분과 상이하다고 결정하도록 동작 가능하고, 상기 프리패치 카운터의 제1 값을 수정하는 것은 상기 제1 메모리 페이지의 제2 부분이 상기 제1 메모리 페이지의 제1 부분과 상이하다고 결정하는 것에 적어도 부분적으로 기초하는, 장치.
  23. 제22항에 있어서, 상기 제어기는,
    상기 제1 메모리 페이지의 제1 부분이 상기 제1 메모리 페이지의 제2 부분과 상이하다고 결정하는 것에 적어도 부분적으로 기초하여 상기 프리패치 카운터의 제1 값을 조정하도록 동작 가능한, 장치.
  24. 제19항에 있어서, 상기 제어기는,
    상기 제1 메모리 페이지의 제1 부분에 대해 수행된 액세스 동작의 횟수를 모니터링하도록 동작 가능하고, 상기 프리패치 카운터의 제2 값은 상기 액세스 동작의 횟수에 적어도 부분적으로 기초하여 결정되는, 장치.
  25. 제24항에 있어서, 상기 제어기는,
    상기 제1 메모리 페이지의 제1 부분의 하나 이상의 서브세트에 대해 수행된 상기 액세스 동작의 횟수를 모니터링하도록 동작 가능한, 장치.
KR1020207035148A 2018-05-09 2019-04-23 메모리를 위한 프리패치 관리 KR102536192B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/975,614 US10942854B2 (en) 2018-05-09 2018-05-09 Prefetch management for memory
US15/975,614 2018-05-09
US16/105,545 US10956333B2 (en) 2018-05-09 2018-08-20 Prefetching data based on data transfer within a memory system
US16/105,545 2018-08-20
PCT/US2019/028688 WO2019217066A1 (en) 2018-05-09 2019-04-23 Prefetch management for memory

Publications (2)

Publication Number Publication Date
KR20200141094A true KR20200141094A (ko) 2020-12-17
KR102536192B1 KR102536192B1 (ko) 2023-05-24

Family

ID=68464724

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207035148A KR102536192B1 (ko) 2018-05-09 2019-04-23 메모리를 위한 프리패치 관리

Country Status (5)

Country Link
US (4) US10942854B2 (ko)
EP (1) EP3791281A4 (ko)
KR (1) KR102536192B1 (ko)
CN (2) CN112262376B (ko)
WO (1) WO2019217066A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394456B2 (en) * 2017-08-23 2019-08-27 Micron Technology, Inc. On demand memory page size
US11210019B2 (en) 2017-08-23 2021-12-28 Micron Technology, Inc. Memory with virtual page size
US20200193268A1 (en) * 2018-12-14 2020-06-18 Advanced Micro Devices, Inc. Multi-instance recurrent neural network prediction
CN114610655B (zh) * 2022-05-10 2022-08-05 沐曦集成电路(上海)有限公司 连续数据访问处理装置和芯片

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060265552A1 (en) * 2005-05-18 2006-11-23 Davis Gordon T Prefetch mechanism based on page table attributes

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848025A (en) 1997-06-30 1998-12-08 Motorola, Inc. Method and apparatus for controlling a memory device in a page mode
US7089331B1 (en) 1998-05-29 2006-08-08 Oracle International Corporation Method and mechanism for reducing client-side memory footprint of transmitted data
US6115760A (en) 1998-08-24 2000-09-05 3Com Corporation Intelligent scaleable FIFO buffer circuit for interfacing between digital domains
KR100351934B1 (ko) 1999-06-22 2002-09-12 삼성전자 주식회사 상태 읽기 동작을 갖는 플래시 메모리 장치
US6453389B1 (en) 1999-06-25 2002-09-17 Hewlett-Packard Company Optimizing computer performance by using data compression principles to minimize a loss function
US6353874B1 (en) 2000-03-17 2002-03-05 Ati International Srl Method and apparatus for controlling and caching memory read operations in a processing system
US6692976B1 (en) 2000-08-31 2004-02-17 Agilent Technologies, Inc. Post-etch cleaning treatment
US6487638B2 (en) 2001-01-26 2002-11-26 Dell Products, L.P. System and method for time weighted access frequency based caching for memory controllers
US6963954B1 (en) 2001-09-19 2005-11-08 Cisco Technology, Inc. Method and apparatus for optimizing prefetching based on memory addresses
US20030105926A1 (en) 2001-12-03 2003-06-05 International Business Machies Corporation Variable size prefetch cache
US6978351B2 (en) 2002-12-30 2005-12-20 Intel Corporation Method and system to improve prefetching operations
US6775184B1 (en) 2003-01-21 2004-08-10 Nexflash Technologies, Inc. Nonvolatile memory integrated circuit having volatile utility and buffer memories, and method of operation thereof
US7200719B2 (en) 2003-07-31 2007-04-03 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US20050071570A1 (en) 2003-09-26 2005-03-31 Takasugl Robin Alexis Prefetch controller for controlling retrieval of data from a data storage device
US7188219B2 (en) 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US8549226B2 (en) 2004-05-14 2013-10-01 Hewlett-Packard Development Company, L.P. Providing an alternative caching scheme at the storage area network level
US7526604B1 (en) 2004-08-09 2009-04-28 Nvidia Corporation Command queueing speculative write prefetch
US20060125835A1 (en) 2004-12-10 2006-06-15 Li Sha DMA latency compensation with scaling line buffer
WO2006098135A1 (ja) 2005-03-14 2006-09-21 Matsushita Electric Industrial Co., Ltd. バスコントローラ
US7395406B2 (en) 2005-05-12 2008-07-01 International Business Machines Corporation System and method of large page handling in a virtual memory system
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US8010764B2 (en) 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
US20070038829A1 (en) 2005-08-11 2007-02-15 Via Technologies, Inc. Wait aware memory arbiter
US7865570B2 (en) 2005-08-30 2011-01-04 Illinois Institute Of Technology Memory server
US7620748B1 (en) 2006-04-06 2009-11-17 Bitmicro Networks, Inc. Hardware assisted non-volatile memory-to-input/output direct memory access (DMA) transfer
US7711923B2 (en) 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
US7930513B2 (en) 2006-11-04 2011-04-19 Virident Systems Inc. Writing to asymmetric memory
US7606988B2 (en) 2007-01-29 2009-10-20 International Business Machines Corporation Systems and methods for providing a dynamic memory bank page policy
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
WO2009097681A1 (en) * 2008-02-04 2009-08-13 Mosaid Technologies Incorporated Flexible memory operations in nand flash devices
US8001331B2 (en) 2008-04-17 2011-08-16 Arm Limited Efficiency of cache memory operations
JP2009282721A (ja) 2008-05-21 2009-12-03 Nec Electronics Corp メモリコントローラ、メモリコントロールシステム及びメモリ遅延量制御方法
WO2010077414A1 (en) 2008-12-09 2010-07-08 Rambus Inc. Non-volatile memory device for concurrent and pipelined memory operations
US9274965B2 (en) 2008-12-15 2016-03-01 International Business Machines Corporation Prefetching data
US8140759B2 (en) 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US8327076B2 (en) * 2009-05-13 2012-12-04 Seagate Technology Llc Systems and methods of tiered caching
US8712984B2 (en) * 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
JP5607175B2 (ja) 2010-03-08 2014-10-15 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. データ記憶装置及び方法
US8291126B2 (en) 2010-03-23 2012-10-16 Spansion Llc Variable read latency on a serial memory bus
US9600410B1 (en) 2010-07-09 2017-03-21 Crossbar, Inc. ReRAM based NAND like architecture with configurable page size
US20120151232A1 (en) 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture
JP2012150529A (ja) 2011-01-17 2012-08-09 Sony Corp メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム
US9552175B2 (en) 2011-02-08 2017-01-24 Diablo Technologies Inc. System and method for providing a command buffer in a memory system
US8782370B2 (en) 2011-05-15 2014-07-15 Apple Inc. Selective data storage in LSB and MSB pages
US8549210B2 (en) 2011-09-20 2013-10-01 International Business Machines Corporation Mirroring virtual machines from a primary host to a secondary host
US20140040561A1 (en) 2012-07-31 2014-02-06 Futurewei Technologies, Inc. Handling cache write-back and cache eviction for cache coherence
US9251048B2 (en) * 2012-10-19 2016-02-02 International Business Machines Corporation Memory page management
US9620181B2 (en) 2013-01-31 2017-04-11 Hewlett Packard Enterprise Development Lp Adaptive granularity row-buffer cache
US9785558B2 (en) 2013-10-29 2017-10-10 Hua Zhong University Of Science Technology Mixed cache management
CN103744624B (zh) 2014-01-10 2017-09-22 浪潮电子信息产业股份有限公司 一种实现存储系统ssd缓存数据选择性升级的系统架构
US10372613B2 (en) * 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9780782B2 (en) 2014-07-23 2017-10-03 Intel Corporation On-die termination control without a dedicated pin in a multi-rank system
WO2016097809A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type
US9630151B2 (en) 2015-03-31 2017-04-25 Pall Corporation Hydrophilically modified fluorinated membrane (V)
US9720846B2 (en) 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
JP6459820B2 (ja) 2015-07-23 2019-01-30 富士通株式会社 記憶制御装置、情報処理装置、および制御方法
US20170068467A1 (en) 2015-09-04 2017-03-09 HGST Netherlands B.V. Wear management for flash memory devices
CN106547476B (zh) 2015-09-22 2021-11-09 伊姆西Ip控股有限责任公司 用于数据存储系统的方法和装置
US9734073B2 (en) 2015-10-30 2017-08-15 Qualcomm Incorporated System and method for flash read cache with adaptive pre-fetch
US9916105B1 (en) 2015-11-05 2018-03-13 Crossbar, Inc. Page management for data operations utilizing a memory device
US9766997B2 (en) 2016-01-29 2017-09-19 Intel Corporation Monitoring performance of a processor using reloadable performance counters
US10007614B2 (en) * 2016-02-02 2018-06-26 Cavium, Inc. Method and apparatus for determining metric for selective caching
KR20180049338A (ko) 2016-10-31 2018-05-11 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US10649904B2 (en) 2016-12-12 2020-05-12 Samsung Electronics Co., Ltd. System and method for store streaming detection and handling
US10845866B2 (en) 2017-06-22 2020-11-24 Micron Technology, Inc. Non-volatile memory system or sub-system
US10310985B2 (en) 2017-06-26 2019-06-04 Ati Technologies Ulc Systems and methods for accessing and managing a computing system memory
US10372446B2 (en) * 2017-07-01 2019-08-06 Intel Corporation Technology to dynamically modulate memory device read granularity
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060265552A1 (en) * 2005-05-18 2006-11-23 Davis Gordon T Prefetch mechanism based on page table attributes

Also Published As

Publication number Publication date
WO2019217066A1 (en) 2019-11-14
US20190347202A1 (en) 2019-11-14
US20190347201A1 (en) 2019-11-14
EP3791281A4 (en) 2021-10-06
US20240134798A1 (en) 2024-04-25
US20210255958A1 (en) 2021-08-19
CN112262376A (zh) 2021-01-22
US10942854B2 (en) 2021-03-09
KR102536192B1 (ko) 2023-05-24
CN112262376B (zh) 2024-04-23
US11822477B2 (en) 2023-11-21
US10956333B2 (en) 2021-03-23
CN118132465A (zh) 2024-06-04
EP3791281A1 (en) 2021-03-17

Similar Documents

Publication Publication Date Title
CN110799954B (zh) 非易失性存储器系统或子系统
US11604606B2 (en) Prefetch signaling in memory system or subsystem
KR102536192B1 (ko) 메모리를 위한 프리패치 관리
US11915788B2 (en) Indication in memory system or sub-system of latency associated with performing an access command
KR20200141092A (ko) 메모리 버퍼 관리 및 바이패스
CN117501229A (zh) 高速缓存分配技术

Legal Events

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