KR20200141092A - 메모리 버퍼 관리 및 바이패스 - Google Patents

메모리 버퍼 관리 및 바이패스 Download PDF

Info

Publication number
KR20200141092A
KR20200141092A KR1020207034583A KR20207034583A KR20200141092A KR 20200141092 A KR20200141092 A KR 20200141092A KR 1020207034583 A KR1020207034583 A KR 1020207034583A KR 20207034583 A KR20207034583 A KR 20207034583A KR 20200141092 A KR20200141092 A KR 20200141092A
Authority
KR
South Korea
Prior art keywords
data
memory
counter
memory bank
value
Prior art date
Application number
KR1020207034583A
Other languages
English (en)
Inventor
로버트 나스리 하스분
딘 디. 간스
샤루크 다루왈라
Original Assignee
마이크론 테크놀로지, 인크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크 filed Critical 마이크론 테크놀로지, 인크
Publication of KR20200141092A publication Critical patent/KR20200141092A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

메모리 버퍼 관리 및 바이패스를 위한 방법, 시스템, 및 디바이스가 설명된다. 메모리 어레이의 페이지 크기에 대응하는 데이터가 메모리 디바이스의 가상 메모리 뱅크에서 수신될 수 있고, 가상 메모리 뱅크와 연관된 카운터의 값이 증분될 수 있다. 카운터의 값이 임계값에 도달한 것으로 결정하면, 데이터는 가상 메모리 뱅크로부터 동일 메모리 디바이스의 버퍼로 전달될 수 있다. 예를 들어, 카운터는 가상 메모리 뱅크가 호스트 디바이스로부터 액세스 커맨드를 수신하는 것에 기초하여 증분될 수 있다.

Description

메모리 버퍼 관리 및 바이패스
[상호 참조]
본 특허 출원은 "메모리 버퍼 관리 및 바이패스(Memory Buffer Management and Bypass)"라는 명칭으로 2018년 5월 9일에 출원된 Hasbun 등의 미국 특허출원 제15/975,607호, 및 "메모리 버퍼 관리 및 바이패스(Memory Buffer Management and Bypass)"라는 명칭으로 2018년 8월 27일에 출원된 Hasbun 등의 미국 특허출원 제16/113,854호에 대한 우선권을 주장하며, 각각이 본 양수인에게 양도되어 있고, 그 전체 내용이 참조로 본 명세서에 명시적으로 포함된다.
다음은 일반적으로 메모리 시스템을 동작시키는 것에 관한 것으로, 보다 구체적으로 메모리 버퍼 관리 및 바이패스에 관한 것이다.
메모리 시스템은 컴퓨터, 무선 통신 디바이스, 사물 인터넷 디바이스, 카메라, 디지털 디스플레이 등과 같은 다수의 전자 디바이스에서 정보를 관리하기 위해 하나 이상의 버스를 통해 결합될 수 있는 다양한 종류의 메모리 디바이스 및 컨트롤러를 포함할 수 있다. 메모리 디바이스는 이러한 전자 디바이스에 정보를 저장하는 데 널리 사용된다. 정보는 메모리 디바이스 내의 하나 이상의 메모리 셀의 상이한 상태를 프로그래밍함으로써 메모리 디바이스에 저장될 수 있다. 예를 들어, 이진 메모리 셀은 종종 논리 "1" 또는 논리 "0"으로 표기되는 2개의 상태 중 하나를 저장할 수 있다. 일부 메모리 셀은 2개 초과의 상태를 저장하는 것이 가능할 수 있다.
자기 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 RAM(DRAM), 동기식 동적 RAM(SDRAM), 강유전성 RAM(FeRAM), 자기 RAM(MRAM), 저항성 RAM(RRAM), 플래시 메모리, 위상 변화 메모리(PCM), 및 기타를 포함하는 다양한 유형의 메모리 디바이스가 존재한다. 메모리 디바이스는 휘발성 또는 비휘발성일 수 있다. 비휘발성 메모리 셀, 예를 들어 FeRAM 셀은 외부 전원이 없는 경우에도 연장된 시간 기간 동안 그의 저장된 논리 상태를 유지할 수 있다. 휘발성 메모리 셀, 예를 들어 DRAM 셀은 외부 전원에 의해 주기적으로 리프레시되지 않는 한 시간 경과에 따라 그의 저장된 논리 상태를 상실할 수 있다.
일반적으로, 메모리 시스템을 개선하는 것은 특히 시스템 전력 소비를 감소시키는 것, 메모리 시스템 용량을 증가시키는 것, 판독/기록 속도를 개선하는 것, 영구적인 메인 메모리의 사용에 의해 비휘발성을 제공하는 것, 또는 특정 성능 지점에서 제조 비용을 절감하는 것을 포함할 수 있다. 메모리 아키텍처 또는 동작의 개선은 데이터를 무차별적으로 버퍼링하는 것과 관련된 문제로 이어질 수 있어, 판독 레이턴시 또는 시스템 전력 소비의 증가를 초래할 수 있다.
도 1은 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 비휘발성 메모리 시스템 또는 서브시스템을 포함하는 시스템의 도면을 나타낸다.
도 2는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 예시적인 메모리 시스템 또는 서브시스템을 도시한다.
도 3a 및 도 3b는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 예시적인 데이터 구조 및 상태도를 도시한다.
도 4a 및 도 4b는 본 개시의 실시예에 따른 메인 메모리 버퍼 관리 동작에 대한 예시적인 프로세스 흐름을 도시한다.
도 5는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 시스템의 블록도를 도시한다.
도 6은 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 디바이스의 블록도를 도시한다.
도 7 내지 도 10은 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 위한 방법 또는 방법들을 도시한다.
메모리 시스템은 데이터를 저장하기 위해 상이한 메모리 기술을 이용할 수 있다. 예를 들어, 메모리 시스템은 SoC(system on chip) 또는 프로세서(또는 "SoC/프로세서")를 위한 메인 메모리와 같은 메모리 디바이스를 포함할 수 있다. 메모리 디바이스는 비휘발성 메모리 셀(예를 들어, FeRAM 셀)의 어레이를 포함할 수 있다. 비휘발성 메모리 어레이가 더 높은 저장 용량 및 더 낮은 전력 소비와 같은 이점을 제공할 수 있지만, 비휘발성 메모리 어레이의 하나 이상의 양태는 SoC/프로세서의 대응하는 양태와의 직접적인 호환성이 부족할 수 있다. 따라서, 시스템은 액세스 동작(예를 들어, 판독 또는 기록 동작) 또는 상이한 페이지 크기와 연관된 상이한 레이턴시를 처리하기 위한 인터페이스 컨트롤러로부터의 이익을 얻을 수 있다. 인터페이스 컨트롤러를 이용하여 SoC/프로세서와 메모리 디바이스 간의 다양한 상호 작용을 선택적으로 관리함으로써, 전체 시스템 성능이 개선될 수 있다. 예를 들어, 인터페이스 컨트롤러는 비휘발성 메모리 어레이 및 버퍼(예를 들어, EMSS(emerging memory sub-system) 버퍼)와 통신할 수 있다. 버퍼에서 데이터를 선택적으로 전달함으로써, 인터페이스 컨트롤러는 SoC/프로세서에 의한 액세스 동작에 응답하여 버퍼로부터 데이터를 검색할 수 있어, 판독 레이턴시를 개선하고 시스템의 전력 소비를 감소시킬 수 있다.
일부 실시예에서, 가상 메모리 뱅크는 비휘발성 메모리(예를 들어, 강유전성 랜덤 액세스 메모리(FeRAM)) 어레이일 수 있는 메모리 어레이로부터 데이터를 수신할 수 있다. 비휘발성 메모리 어레이는 일반적으로 DRAM 어레이보다 더 작은 페이지 크기(예를 들어, 64 바이트, 128 바이트, 192 바이트, 또는 256 바이트)를 사용하며, DRAM 어레이와 달리, 비휘발성 어레이는 메모리 페이지의 하나 이상의 부분(예를 들어, 64 바이트 부분)에 액세스할 수 있다.
가상 메모리 뱅크는 메모리 어레이(예를 들어, 2048 바이트)보다 큰 제2 대형 페이지 크기에 따라 데이터를 저장하도록 구성될 수 있다. 일부 실시예에서, 메모리 어레이는 작은 페이지 크기를 가짐에도 불구하고 가상 메모리 뱅크보다 큰 저장 용량을 가질 수 있다. 특정 메모리 액세스 프로토콜에 따라 동작하는 SoC/프로세서는 가상 메모리 뱅크에 대한 직접 액세스 및 메모리 어레이에 대한 간접 액세스(예를 들어, 인터페이스 컨트롤러를 통한)를 가질 수 있다. 일부 실시예에서, SoC/프로세서는 메모리 시스템을 단일 메모리 어레이로서 인식하고, 특정 메모리 액세스 프로토콜(예를 들어, DRAM 메모리 액세스 프로토콜)을 사용하여 액세스 요청을 전송한다. 인터페이스 컨트롤러는 SoC/프로세서로부터의 액세스 요청을 해석하고 요청된 데이터를 제공할 수 있다. 일부 경우에, 가상 메모리 뱅크에 저장된 데이터는 SoC/프로세서에 의해 사용되는 메모리 액세스 프로토콜의 사양을 사용하여, 그리고 그 사양 내에서 액세스될 수 있다. 대조적으로, 메모리 어레이에 저장된 데이터는 - 예를 들어, 대체 메모리 기술을 사용하는 메모리 어레이로 인해 - 프로세서에 의해 사용되는 메모리 액세스 프로토콜의 사양 내에서 액세스 가능하지 않을 수 있다. 데이터에 액세스 가능한지 여부에 관계없이, 메모리 어레이에 저장된 데이터를 검색하는 것은 더 높은 레이턴시와 연관될 수 있다.
일부 실시예에서, 메모리 시스템은 메모리 뱅크 및 메모리 어레이 이외에도 메모리 버퍼("버퍼"라고 지칭될 수 있음)를 포함할 수 있다. 데이터를 버퍼에 선택적으로 저장함으로써, 높은 레이턴시 및 메모리 어레이에 저장된 액세스 불가능한 데이터의 문제가 회피될 수 있다. 예를 들어, 메모리 어레이로부터 SoC/프로세서로 데이터를 전달하는 것과 연관된 높은 레이턴시는 데이터를 선택적으로 버퍼에 저장하고 데이터를 버퍼로부터 SoC/프로세서로 전송함으로써 회피될 수 있다. 데이터를 버퍼에 선택적으로 저장하기 위해서, 시스템은 하나 이상의 카운터를 이용하여 프로세스를 지원하고 상태 및 동작을 추적할 수 있다. 예를 들어, 제1 카운터가 가상 메모리 뱅크에서 구현될 수 있다. (예를 들어, 가상 메모리 뱅크 또는 비휘발성 메모리와 관련된) 액세스 동작 동안, 제1 카운터는 증분될 수 있다. 카운터가 임계값을 초과하면, 데이터는 (예를 들어, 일부 경우에 메모리 컨트롤러에 의해 개시될 수 있는) 하나 이상의 동작에 기초하여 가상 메모리 뱅크로부터 버퍼로 전달될 수 있다. 따라서, 카운터는 시스템이 일반적으로 액세스된 데이터를 인식하는 데 도움을 주면서, SoC/프로세서로부터의 요청과 연관된 전체 전력 소비 및 레이턴시를 개선할 수 있다.
상기에서 소개된 개시의 특징은 도 1의 맥락에서 예시적인 시스템 레벨로 추가로 후술된다. 그 후, 메모리 시스템 및 동작의 구체적인 실시예가 도 2 내지 도 4의 맥락에서 설명된다. 본 개시의 이들 및 다른 특징은 다양한 구성요소를 설명하는 도 5 및 도 6의 장치도뿐만 아니라, 메모리 버퍼 관리 및 바이패스의 동작에 관한 도 7 내지 도 13의 흐름도를 참조하여 추가로 예시되고 설명된다.
도 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(machine-type communication), M2M(machine-to-machine) 통신, 또는 D2D(device-to-device) 통신이 가능할 수 있다. 디바이스(105)는 사용자 장비(UE), 스테이션(STA), 모바일 단말 등이라고 지칭될 수 있다.
인터페이스 컨트롤러(120)는 SoC/프로세서(130)와 인터페이스하도록 구성될 수 있으며, 제1 컨트롤러라고 지칭될 수 있고 메모리 어레이의 페이지 크기에 대응하는 데이터의 판독을 개시할 수 있다. 인터페이스 컨트롤러(120)는 또한 다양한 메모리 디바이스(170, 175, 180) 또는 이들의 임의의 조합과 인터페이스하도록 구성될 수 있다.
SoC/프로세서(130)는 - 직접 또는 인터페이스 컨트롤러(120)를 통해 - 다양한 메모리 디바이스(170, 175, 180) 또는 이들의 임의의 조합과 함께 동작하도록 구성될 수 있다. 일부 경우에, SoC/프로세서(130)는 본 명세서에 설명된 인터페이스 컨트롤러(120)의 기능 중 일부 또는 전부를 수행할 수 있다. SoC/프로세서(130)는 범용 프로세서, DSP(digital signal processor), ASIC(application-specific integrated circuit), FPGA(field-programmable gate array) 또는 다른 프로그램 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성요소이거나, 이들 유형의 구성요소의 조합일 수 있다.
메모리 디바이스(170)는 각각 디지털 정보를 저장하기 위한 메모리 셀의 어레이 또는 어레이들을 포함할 수 있다. 메모리 디바이스(170)는 각각 SoC/프로세서(130) 및/또는 인터페이스 컨트롤러(120)와 함께 동작하도록 구성될 수 있다. 일부 실시예에서, 메모리 디바이스(170)는 SoC/프로세서(130) 또는 인터페이스 컨트롤러(120)의 메모리 뱅크를 위한 버퍼 메모리를 제공하도록 구성될 수 있다. 디바이스(105)는 임의의 수의 메모리 디바이스(170)를 포함할 수 있다.
메모리 디바이스(175)는 메모리 셀의 어레이 및 메모리 셀의 어레이와 함께 동작하도록 구성된 로컬 메모리 컨트롤러를 포함할 수 있다. 메모리 디바이스(175)에 포함된 메모리 셀의 어레이는 상이한 성능 특성을 갖는 메모리의 2개 이상의 티어(tier)로 구성될 수 있다. 메모리 디바이스(175)의 로컬 메모리 컨트롤러는 또한 SoC/프로세서(130) 또는 인터페이스 컨트롤러(120)와 함께 동작하도록 구성될 수 있다. 일부 실시예에서, 제1 티어 메모리 셀은 3D XPointTM 메모리일 수 있으며, 이는 다양한 워크로드를 처리하기 위해 짧은 응답 시간으로 많은 수의 IOPS(input/output operations per second)를 제공할 수 있다. 일부 실시예에서, 제2 티어 메모리 셀은 제1 티어 메모리 셀보다 비교적 낮은 비용으로 데이터 저장을 위한 고용량을 제공할 수 있는 3차원 Not-AND(NAND) 메모리일 수 있다. 메모리 디바이스(175)의 로컬 메모리 컨트롤러는, SoC/프로세서(130)를 사용하여, 2개 이상의 티어 내의 메모리 셀 간에 상이한 특성을 가질 수 있는 메모리 디바이스(175) 내의 메모리 셀의 효율적인 동작을 용이하게 하도록 구성될 수 있다. 메모리 디바이스(175)는 일부 경우에 다른 유형의 메모리 어레이 또는 이들의 조합을 포함할 수 있다. 일부 실시예에서는, 하나 이상의 메모리 디바이스(175)가 디바이스(105)에 존재할 수 있다.
메모리 디바이스(180)는 메모리 셀의 하나 이상의 어레이 및 메모리 셀의 하나 이상의 어레이와 함께 동작하도록 구성된 로컬 메모리 컨트롤러를 포함할 수 있다. 메모리 디바이스(180)의 로컬 메모리 컨트롤러는 또한 SoC/프로세서(130) 또는 인터페이스 컨트롤러(120)와 함께 동작하도록 구성될 수 있다. 메모리 디바이스(180)는 비휘발성 메모리 셀, 휘발성 메모리 셀, 또는 비휘발성 및 휘발성 메모리 셀 양쪽의 조합을 포함할 수 있다. 비휘발성 메모리 셀(예를 들어, FeRAM 메모리 셀)은 외부 전원이 없는 경우에 연장된 시간 기간 동안 저장된 논리 상태를 유지할 수 있으므로, 리프레시 동작(예를 들어, DRAM 셀과 연관된 것과 같은 리프레시 동작)을 수행하기 위한 요구사항을 감소 또는 제거할 수 있다.
메모리 디바이스(180)에 비휘발성 메모리 셀(예를 들어, FeRAM 메모리 셀)의 어레이를 포함하는 것은 디바이스(105)에 다양한 이점(예를 들어, 효율성 이점)을 제공할 수 있다. 이러한 이점은 거의 영의(near-zero) 대기 전력(배터리 수명을 증가시킬 수 있음), 대기 또는 무전원(예를 들어, "오프") 상태 다음의 인스턴트-온(instant-on) 동작, 및/또는 휘발성 메모리 셀의 어레이에 비해 낮은 시스템 전력 소비에 의한 높은 면적의 메모리 밀도를 포함할 수 있다. 비휘발성 메모리 시스템 또는 서브시스템의 이러한 특징은, 예를 들어 모바일 환경에서 연산 집약적인(예를 들어, 데스크톱 애플리케이션) 동작 또는 소프트웨어의 사용을 지원할 수 있다. 일부 실시예에서는, 하나 이상의 메모리 디바이스(180)가 디바이스(105)에 존재할 수 있다. 일부 경우에, 디바이스(105)는 다른 메모리 기술을 사용하는 하나 이상의 비휘발성 메모리 어레이와 함께 하나 이상의 FeRAM 어레이와 같은 상이한 비휘발성 메모리 기술을 사용하는 여러 종류의 비휘발성 메모리 어레이를 포함할 수 있다. 또한, 본 명세서에 설명된 이점은 단지 예시일 뿐이며, 당업자는 추가 이점을 인정할 수 있다.
일부 경우에, 메모리 디바이스(180)는 SoC/프로세서(130)와는 다른 페이지 크기를 사용할 수 있다. 메모리 디바이스의 맥락에서, 페이지 크기는 다양한 인터페이스에서 처리되는 데이터의 크기를 지칭할 수 있으며, 상이한 메모리 디바이스 유형은 상이한 페이지 크기를 가질 수 있다. 일부 실시예에서, SoC/프로세서(130)는 DRAM 페이지 크기(예를 들어, 하나 이상의 JEDEC LPDDR(low power double data rate) 사양에 따른 페이지 크기)를 사용할 수 있고, 디바이스(105) 내의 디바이스(180)는 상이한 페이지 크기(예를 들어, 전형적인 DRAM 페이지 크기보다 작은 페이지 크기)를 제공하도록 구성된 비휘발성 메모리 셀의 어레이를 포함할 수 있다. 일부 실시예에서, 메모리 디바이스(180)는 가변 페이지 크기를 지원할 수 있고 - 예를 들어, 메모리 디바이스(180)는 다수의 페이지 크기를 지원하는 비휘발성 메모리 셀의 어레이(예를 들어, FeRAM 어레이)를 포함할 수 있고, 사용된 페이지 크기는 하나의 액세스 동작으로부터 다른 액세스 동작으로 변할 수 있음 -, 메모리 디바이스(180)의 로컬 메모리 컨트롤러는 메모리 디바이스(180) 내의 메모리 어레이에 대한 가변 페이지 크기를 처리하도록 구성될 수 있다. 예를 들어, 일부 경우에, 활성화된 워드 라인에 연결된 비휘발성 메모리 셀의 서브세트는 활성화된 워드 라인에 연결된 모든 비휘발성 메모리 셀을 감지하지 않고도 동시에 감지될 수 있어, 메모리 디바이스(180) 내의 가변 페이지 크기 동작을 지원할 수 있다. 일부 경우에, 비휘발성 메모리 셀의 어레이에 대한 페이지 크기는 액세스 커맨드의 속성 및 관련 데이터(예를 들어, 액세스 커맨드에 종속되는 데이터)의 특성(예를 들어, 크기 또는 관련 레이턴시)에 따라 동적으로 변할 수 있다. 더 작은 페이지 크기는 주어진 액세스 동작과 관련하여 더 적은 수의 메모리 셀이 활성화될 수 있으므로 이점(예를 들어, 효율성 이점)을 제공할 수 있다. 가변 페이지 크기의 사용은, 페이지 크기를 감소시킴으로써 동작이 정보의 작은 변화와 연관될 때 구성 가능하고 효율적인 에너지 사용과 같은 추가 이점을 디바이스(105)에 제공하면서, 원할 때 페이지 크기를 증가시킴으로써 고성능 동작을 지원할 수 있다.
일부 실시예에서, 디바이스(105)는 데이터가 가상 메모리 뱅크로부터 버퍼(예를 들어, EMSS 버퍼)로 전송될 것인지를 결정하기 위해 하나 이상의 카운터를 사용할 수 있다. 예를 들어, 인터페이스 컨트롤러(120)는 호스트(예를 들어, SoC/프로세서)로부터 판독 커맨드를 수신할 수 있다. 커맨드를 충족시키기 위해서, 인터페이스 컨트롤러(120)는 요청된 데이터를 가상 메모리 뱅크로부터 호스트로 전송하려고 시도할 수 있다. 호스트로부터 커맨드를 수신한 후, 인터페이스 컨트롤러(120)와 연관된 카운터가 증분될 수 있으며, 요청된 데이터가 가상 메모리 뱅크에 저장되는 경우, 데이터는 호스트로 전송될 수 있다. 인터페이스 컨트롤러(120)와 연관된 카운터가 임계값에 도달하면(예를 들어, 미리 결정된 횟수만큼 증분되는 것에 기초하여 포화 상태가 되면), 호스트에 의해 요청된 데이터는 가상 메모리 뱅크로부터 버퍼로 전달될 수 있다. 따라서, 액세스 커맨드에 응답하여 카운터를 증분시키는 것은 특정 데이터에 더 자주 액세스될 수 있음을 나타낼 수 있다. 따라서, 이러한 데이터는 버퍼로부터 호스트로 직접 전송될 수 있어, 동작의 전체 레이턴시를 개선할 수 있다.
일부 실시예에서, 디바이스(105)는 메모리 디바이스(175)와 연관된 판독 동작을 추적하기 위해 제2 카운터를 사용할 수 있고, 이와 관련하여 데이터가 가상 메모리 뱅크로부터 버퍼(예를 들어, EMSS 버퍼)로 전송될 것인지를 결정하는 것에 도움을 줄 수 있다. 전술한 바와 같이, 인터페이스 컨트롤러(120)는 호스트로부터 판독 커맨드를 수신할 수 있고, 요청 데이터를 가상 메모리 뱅크로부터 호스트로 전송하려고 시도할 수 있다. 요청 데이터가 가상 메모리 뱅크에 저장되지 않는 경우, 인터페이스 컨트롤러(120)는 메모리 디바이스(175)로부터의 데이터를 요청할 수 있다. 인터페이스 컨트롤러(120)로부터 요청을 수신한 후, 메모리 디바이스(175) 자체와 연관된 카운터가 조정(예를 들어, 증분)될 수 있고 데이터는 가상 메모리 뱅크로 전송될 수 있다. 메모리 디바이스(175)와 연관된 카운터가 임계값에 도달하면(예를 들어, 미리 결정된 횟수만큼 증분되는 것에 기초하여 포화 상태가 되면), 호스트에 의해 요청된 데이터는 가상 메모리 뱅크로부터 버퍼로 전달될 수 있다. 따라서, 인터페이스 컨트롤러(120)가 호스트로부터 후속 판독 커맨드를 수신하면, 인터페이스 컨트롤러는 데이터를 버퍼로부터 호스트로 전송함으로써 커맨드를 충족시킬 수 있다. 전술한 바와 같이, 동작의 레이턴시는 데이터를 버퍼로부터 호스트로 직접 전송함으로써 개선될 수 있다.
DMAC(155)는 메모리 디바이스(170, 175 또는 180)에 대해 SoC/프로세서(130)에 의한 직접 메모리 액세스(예를 들어, 판독 또는 기록) 동작을 지원할 수 있다. 예를 들어, DMAC(155)는 인터페이스 컨트롤러(120)의 개입 또는 동작 없이 메모리 디바이스(170, 175 또는 180)의 SoC/프로세서(130)에 의한 액세스를 지원할 수 있다.
주변 구성요소(들)(150)는 디바이스(105)에 통합될 수 있는 임의의 입력 또는 출력 디바이스, 또는 임의의 이러한 디바이스에 대한 인터페이스일 수 있다. 주변 구성요소(들)(150)의 예는 디스크 컨트롤러, 사운드 컨트롤러, 그래픽 컨트롤러, 이더넷 컨트롤러, 모뎀, 범용 직렬 버스(USB) 컨트롤러, 직렬 또는 병렬 포트, 또는 PCI(Peripheral Component Interconnect) 또는 AGP(accelerated graphics port) 슬롯과 같은 주변 카드 슬롯을 포함할 수 있다. 주변 구성요소(들)(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(periphery component interconnect express) 시그널링을 지원하도록 구성될 수 있다. 일부 실시예에서, 버스(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)는, 도 1을 참조하여 설명된 메모리 디바이스(170)의 일례일 수 있는 가상 메모리 뱅크(235)를 포함할 수 있다. 일부 실시예에서, 가상 메모리 뱅크(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)의 논리적 증강(logical augmentation)으로서 동작하도록 구성될 수 있다. 일부 실시예에서, 버퍼(240)의 용량은 대략 256M 바이트일 수 있다. 일부 실시예에서, 버퍼(240)의 용량은 SoC/프로세서(250)의 캐시 메모리(255)의 크기에 기초할 수 있다. 일부 경우에, 버퍼(240)는 비교적 작은 용량을 가질 수 있으며, 이는 잠재적으로 더 작은 기생 성분, 예를 들어 금속 라인과 연관된 인덕턴스로 인해 더 큰 용량의 DRAM 디바이스에 비해 메모리 서브시스템(220)의 개선된(예를 들어, 더 빠른) 성능을 촉진할 수 있다. 버퍼(240)의 더 작은 용량은 또한 주기적인 리프레싱 동작과 연관된 시스템 전력 소비를 감소시키는 측면에서 이점을 제공할 수 있다.
메모리 서브시스템(220)은 원칩(one-chip) 버전 및 멀티칩(multi-chip) 버전을 포함한 다양한 구성으로 구현될 수 있다. 원칩 버전은 단일 칩 상에 인터페이스 컨트롤러(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)에 포함된 비휘발성 어레이는, 일부 경우에 SoC/프로세서(250)와 연관된 페이지 크기와 다를 수 있는 가변 페이지 크기를 지원하도록 구성될 수 있다. 또한, 비휘발성 메모리(225)는 비휘발성 메모리(225)에 대한 가변 페이지 크기를 결정하도록 구성될 수 있다. 비휘발성 메모리(225)는 (예를 들어, 스토리지(260)와 비교하여) SoC/프로세서(250)에 대한 비휘발성 니어 메모리(non-volatile near memory)라고 지칭될 수 있다. 메모리 시스템의 맥락에서, 니어 메모리는 다른 메모리 구성요소보다 더 빠른 액세스 속도를 제공하기 위해 논리적으로 및/또는 물리적으로 SoC/프로세서(250) 근처에 배치된 메모리 구성요소를 지칭할 수 있다. 비휘발성 메모리(225)를 SoC/프로세서(250)에 대한 니어 메모리로서 구성하는 것은, 예를 들어 스토리지(260)로부터 데이터를 검색하는 SoC/프로세서(250)와 연관될 수 있는 오버헤드를 제한하거나 회피할 수 있다. SoC/프로세서(250)는 - 예를 들어, 스토리지(260)에 액세스하는 것이 바람직하지 않은 지연과 연관될 수 있으므로, 스토리지(260)에 액세스하는 대신에 - 예기치 않은 전력 중단의 발생시 비휘발성 메모리(225)에 중요한 정보를 저장할 수 있다. 일부 경우에, 비휘발성 메모리(225)는, 인터페이스 컨트롤러(230)와 관련하여 다양한 동작을 용이하게 하거나 본 명세서에서 인터페이스 컨트롤러(230)에 속하는 일부 기능을 수행할 수 있는 로컬 메모리 컨트롤러(미도시)를 포함할 수 있다.
인터페이스 컨트롤러(230)는 버스(271 및 276)를 통해 비휘발성 메모리(225)와 함께 동작하도록 구성될 수 있다. 일부 실시예에서, 버스(271)는 FeRAM CA 버스일 수 있고, 버스(276)는 FeRAM 인터페이스(IF) 버스일 수 있다. 인터페이스 컨트롤러(230) 및 버스(271 및 276)는 비휘발성 메모리(225)의 페이지 크기와 호환 가능할 수 있다. 일부 실시예에서, 버스(280)는 버퍼(240)와 비휘발성 메모리(225) 사이의 데이터 전송을 용이하게 하도록 구성될 수 있다. 일부 실시예에서, 버스(290)는 비휘발성 메모리(225)와 가상 메모리 뱅크(235) 사이의 데이터 전송을 용이하게 하도록 구성될 수 있다.
인터페이스 컨트롤러(230)는 가상 메모리 뱅크(235) 또는 버퍼(240)를 활용함으로써 (예를 들어, SoC/프로세서(250)의 관점에서) 낮은 레이턴시 또는 감소된 전력 동작을 지원할 수 있다. 예를 들어, SoC/프로세서(250)로부터 판독 커맨드를 수신하면, 인터페이스 컨트롤러(230)는 SoC/프로세서(250)로의 전송을 위해 가상 메모리 뱅크(235) 또는 버퍼(240)로부터 데이터를 검색하려고 시도할 수 있다. 판독 커맨드에 종속되는 데이터가 가상 메모리 뱅크(235) 또는 버퍼(240)에 존재하지 않는 경우, 인터페이스 컨트롤러(230)는 비휘발성 메모리(225)로부터 데이터를 검색하여 데이터를 가상 메모리 뱅크(235)에 저장하고 또한 (예를 들어, 동시에) 데이터를 SoC/프로세서(250)에 전송할 수 있다.
비휘발성 메모리(225)로부터 데이터를 검색하는 것은 가상 메모리 뱅크(235) 또는 버퍼(240)로부터 데이터를 검색하는 것에 비해 증가된 레이턴시와 연관될 수 있다. 일부 실시예에서, 가상 메모리 뱅크(235) 또는 비휘발성 메모리(225)와 연관된 카운터는 액세스 동작(예를 들어, 판독 동작)에 기초하여 증분될 수 있어, 데이터가 가상 메모리 뱅크(235)로부터 버퍼(240)로 전달되게 할 수 있다. 이것은 프로세서(250)가 (예를 들어, 가상 메모리 뱅크(235)를 통해 비휘발성 메모리(225)로부터 데이터를 수신하는 것과 반대로) 버퍼(240)에 저장된 데이터에 직접 액세스할 수 있으므로 디바이스(210)의 메모리 액세스 처리량이 증가되게 할 수 있다.
인터페이스 컨트롤러(230)는 가상 메모리 뱅크(235)에 저장된 데이터를 버퍼(240)에 전달함으로써 전력 소비 및 레이턴시를 감소시킬 수 있다. 예를 들어, 인터페이스 컨트롤러(230)는 호스트 디바이스(예를 들어, SoC/프로세서(250))로부터 데이터에 대한 요청을 수신할 수 있다. 데이터가 가상 메모리 뱅크(235)에 저장되는 경우, 데이터는 SoC/프로세서(250)에 전달될 수 있고 요청이 충족될 수 있다. 가상 메모리 뱅크(235)와 연관된 카운터가 또한 증분될 수 있고 동일하거나 유사한 데이터에 대한 SoC/프로세서로부터의 후속 데이터 요청은 카운터가 추가로 증분되게 할 수 있다. 가상 메모리 뱅크(235)와 연관된 카운터가 임계값에 도달하면(예를 들어, 포화 상태가 되면), 데이터는 가상 메모리 뱅크(235)로부터 버퍼(240)로 전달될 수 있다. 따라서, 인터페이스 컨트롤러(230)는 버퍼(240)로부터 데이터를 전달함으로써 SoC/프로세서(250)로부터의 데이터에 대한 추가 요청을 충족시킬 수 있다. 이러한 방식으로, 가상 메모리 뱅크(235)와 연관된 카운터의 사용은 데이터가 가상 메모리 뱅크(235)로부터 버퍼(240)로 선택적으로 전달되는 것을 가능하게 할 수 있다. 전술한 바와 같이, 이 프로세스는 SoC/프로세서(250)로부터의 데이터에 대한 요청과 연관된 레이턴시를 개선할 수 있다.
다른 실시예에서, 인터페이스 컨트롤러(230)는 호스트(예를 들어, SoC/프로세서(250))로부터 데이터에 대한 요청을 수신할 수 있고, 데이터는 가상 메모리 뱅크(235)에 저장되지 않을 수 있다. 이러한 실시예에서, (다른 구성요소 중에서) 인터페이스 컨트롤러(230)는 비휘발성 메모리(225)로부터 데이터를 요청할 수 있다. 데이터는 비휘발성 메모리(225)로부터 인터페이스 컨트롤러(230)로 전달될 수 있고, 또한 SoC/프로세서(250)로 전달될 수 있다. 이 프로세스는 SoC/프로세서(250)에 의한 데이터 요청을 충족시킬 수 있다. 비휘발성 메모리(225)와 연관된 카운터는 인터페이스 컨트롤러(230)가 비휘발성 메모리(225)로부터 데이터를 요청하는 것에 기초하여 증분될 수 있다. (예를 들어, 비휘발성 메모리(225)로부터의) 동일하거나 유사한 데이터에 대한 SoC/프로세서로부터의 후속 데이터 요청은 카운터가 더 증분되게 할 수 있다. 비휘발성 메모리(225)와 연관된 카운터가 임계값에 도달하면(예를 들어, 포화 상태가 되면), 데이터는 비휘발성 메모리(225)로부터 가상 메모리 뱅크(235)로, 그리고 가상 메모리 뱅크(235)로부터 버퍼(240)로 전달될 수 있다. 전술한 바와 같이, 인터페이스 컨트롤러(230)는 버퍼(240)로부터 데이터를 전달함으로써 SoC/프로세서(250)로부터의 데이터에 대한 추가 요청을 충족시킬 수 있어, SoC/프로세서(250)로부터의 데이터에 대한 요청과 연관된 레이턴시를 개선할 수 있다.
인터페이스 컨트롤러(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)는 비교적 적은 수의 이전 액세스 시도에 기초하여 SoC/프로세서(250)가 어느 정도의 시간 기간 동안 데이터에 다시 액세스할 가능성이 없다고 예측할 수 있으므로, 인터페이스 컨트롤러(230)는 수정된 데이터(즉, SoC/프로세서(250)에 의한 액세스 시도에 의해 수정된 데이터)를 비휘발성 메모리(225)에 저장할 수 있다. 또는, 카운터가 시간 간격 동안 SoC/프로세서(250)에 의한 액세스 시도 횟수가 미리 결정된 임계값 이상임을 표시하는 경우에는, 가상 메모리 뱅크(235)로부터 데이터의 제거 시, 인터페이스 컨트롤러(230)가 SoC/프로세서(250)가 곧 데이터에 액세스할 가능성이 있다고 예측할 수 있으므로, 인터페이스 컨트롤러(230)는 데이터를 버퍼(240)에 저장할 수 있다. 당업자는 전체 시스템 요구사항의 관점에서 인터페이스 컨트롤러(230)가 이러한 결정을 행하는 데 사용할 다양한 기준(예를 들어, 카운터의 임계값, 클록, 시간 간격 값 등을 포함하는 기준)을 고안할 수 있다.
일부 실시예에서, 인터페이스 컨트롤러(230)는 가상 메모리 뱅크(235)와 연관된 카운터를 증분시킴으로써 SoC/프로세서(250)에 의한 액세스 시도 횟수를 기록할 수 있다. 인터페이스 컨트롤러(230)는 카운터가 임계값에 도달하거나 초과하는 것에 기초하여 부분 또는 서브페이지를 버퍼(240)에 전송할 수 있다. 예를 들어, 인터페이스 컨트롤러(230)는 적어도 임계 횟수만큼 액세스된 부분 또는 서브 페이지를 버퍼(240)에 전송할 수 있고, 임계 횟수만큼 액세스되지 않은 부분 또는 서브페이지를 비휘발성 메모리(225)에 폐기 또는 라이트백(writeback)할 수 있다.
또한, 인터페이스 컨트롤러(230)는 가상 메모리 뱅크(235)의 콘텐츠를 버퍼(240)에 저장하는 것을 바이패스하기 위해 SoC/프로세서(250)의 액세스 시도 횟수가 미리 결정된 임계값 미만일 때의 카운터에 기초하여 바이패스 표시자를 설정할 수 있다. 그 후, 인터페이스 컨트롤러(230)는 바이패스 표시자에 기초하여 가상 메모리 뱅크(235)의 수정된 콘텐츠를 비휘발성 메모리(225)에 직접 저장할 수 있다. 일부 경우에, 가상 메모리 뱅크(235)로부터 데이터의 제거 시, 인터페이스 컨트롤러(230)는 데이터가 비휘발성 메모리(225)로부터 마지막으로 검색되었으므로 수정되지 않은 것으로 결정할 수 있고, 해당 결정에 기초하여, 데이터를 폐기할 수 있다(예를 들어, 데이터를 버퍼(240) 또는 비휘발성 메모리(225)에 기록하지 않는다).
일부 실시예에서, 가상 메모리 뱅크(235)는 디바이스(예를 들어, 비휘발성 메모리(225))의 메모리 어레이의 페이지 크기(예를 들어, 64, 128, 192, 또는 256 바이트)에 대응하는 데이터를 수신하도록 구성될 수 있다. 일부 경우에, 가상 메모리 뱅크(235)와 연관된 제1 카운터의 값은 데이터와 연관된 메모리 액세스 동작에 기초하여(예를 들어, SoC/프로세서와 같은 호스트 디바이스로부터 수신된 요청에 기초하여) 증분될 수 있다. 인터페이스 컨트롤러(230)는 가상 메모리 뱅크(235)와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정할 수 있고, 제1 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크(235)와 디바이스의 버퍼(240) 사이에서 데이터를 통신할 수 있다.
다른 실시예에서, 메모리 어레이(예를 들어, 비휘발성 메모리(225))와 연관된 제2 카운터의 값은 인터페이스 컨트롤러(230)로부터 데이터에 대한 요청을 수신하는 것에 기초하여 증분될 수 있다. 일부 실시예에서, 제2 카운터는 인터페이스 컨트롤러(230)에 의해 증분될 수 있다. 다른 실시예에서, 제2 카운터는 비휘발성 메모리(225)와 연관된 로컬 메모리 컨트롤러에 의해 증분될 수 있다. 가상 메모리 뱅크(235)는 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정할 수 있고, 제2 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크(235)와 디바이스의 버퍼(240) 사이에서 데이터를 통신할 수 있다.
가상 메모리 뱅크(235)는 각각의 데이터 요청에 기초하여 각각의 카운터를 증분시키도록 구성될 수 있다. 예를 들어, 가상 메모리 뱅크(235)는 특정 페이지 크기(예를 들어, 64, 128, 192, 또는 256 바이트) 또는 메모리 페이지의 특정 부분에 대응하는 데이터 요청에 부분적으로 기초하여 카운터를 증분시키도록 구성될 수 있다. 가상 메모리 뱅크(235)는 각각의 메모리 페이지에 대한, 또는 메모리 어레이 내의 각각의 메모리 서브페이지에 대한 각각의 카운터, 또는 양쪽 모두를 포함할 수 있다(그리고 일부 경우에는 상응하게 증분시킬 수 있다). 다른 실시예에서, 인터페이스 컨트롤러(230)는 각각의 데이터 요청에 기초하여 각각의 카운터를 증분시키도록 구성될 수 있다. 다른 실시예에서, 비휘발성 메모리(225)와 연관된 로컬 메모리 컨트롤러는 각각의 데이터 요청에 기초하여 각각의 카운터를 증분시키도록 구성될 수 있다.
일부 경우에, 메모리 서브시스템(220)은 디바이스의 메모리 어레이의 페이지 크기에 대응하는 데이터를 수신하기 위한 가상 메모리 뱅크(235)와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 데이터와 연관된 메모리 액세스 동작에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 제1 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크(235)와 디바이스의 버퍼(240) 사이에서 데이터를 통신하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다.
또한, 메모리 서브시스템(220)은 가상 메모리 뱅크(235)와 버퍼(240) 사이에서 데이터를 통신하는 것에 기초하여 제1 카운터의 값을 초기값으로 설정하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 또한 호스트 디바이스(예를 들어, SoC/프로세서(250))로부터 기록 커맨드를 수신하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있으며, 가상 메모리 뱅크(235)와 연관된 제1 카운터의 값은 기록 커맨드를 수신하는 것에 기초하여 증분될 수 있다. 메모리 서브시스템(220)은 또한 가상 메모리 뱅크(235)와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 전에 가상 메모리 뱅크(235)와 연관된 제1 카운터의 값이 임계값을 충족하지 않는지를 결정하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 또한 제1 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크(235)와 메모리 어레이 사이에서 데이터를 통신하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 또한 호스트 디바이스로부터 판독 커맨드를 수신하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있으며, 여기서 가상 메모리 뱅크(235)와 연관된 제1 카운터의 값은 판독 커맨드를 수신하는 것에 기초하여 증분된다.
다른 실시예에서, 메모리 서브시스템(220)은 가상 메모리 뱅크(235)가 데이터를 수신하는 것에 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시키기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 일부 실시예에서, 메모리 서브시스템(220)은 가상 메모리 뱅크(235)가 데이터를 수신하는 것에 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시키기 위한, 비휘발성 메모리(225)와 연관된 로컬 메모리 컨트롤러와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 또한 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 일부 실시예에서, 메모리 서브시스템(220)은 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 위한, 비휘발성 메모리(225)와 연관된 로컬 메모리 컨트롤러와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 또한 제2 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크(235)와 디바이스의 버퍼(240) 사이에서 데이터를 통신하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다.
추가적으로 또는 대안적으로, 예를 들어, 메모리 서브시스템(220)은 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 전에 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하지 않는지를 결정하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다. 메모리 서브시스템(220)은 또한 제2 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크(235)와 메모리 어레이 사이에서 데이터를 통신하기 위한 인터페이스 컨트롤러(230)와 같은 수단을 포함할 수 있다.
도 3a는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 데이터 구조(300-a)의 일례를 도시한다. 데이터 구조(300-a)는 비휘발성 메모리 페이지(310), 제1 필드(315), 및 제2 필드(320)를 도시한다.
비휘발성 메모리 페이지(310)는 지정된 양의 데이터를 저장하는 데 사용될 수 있다. 예를 들어, 비휘발성 메모리 페이지(310)는 128 또는 256 바이트일 수 있다. 비휘발성 메모리 페이지(310)는 서브페이지(312-a), 서브페이지(312-b), 및 서브페이지(312-n)와 같은 다수의 서브페이지를 포함할 수 있다. 각 서브페이지는 64 바이트일 수 있다. 일부 실시예에서, 서브페이지는 부분으로서 그룹화될 수 있다.
일부 실시예에서, 제2 필드(320)는 판독 커맨드를 수신할 때 검색될 대응하는 비휘발성 메모리 페이지(310) 내의 데이터의 크기를 표시하도록 구성될 수 있다. 데이터의 크기는 하나 이상의 이전 액세스 동작에서 SoC/프로세서에 의해 이루어진 데이터에 대한 액세스 패턴에 의해 결정될 수 있으며 일부 경우에는 프리페치 크기(prefetch size)라고 지칭된다. 프리페치 크기는 비휘발성 메모리 페이지(310)에 포함된 데이터에 대한 판독 커맨드에 응답하여 판독되어야 하는 데이터의 양일 수 있다. 예를 들어, 비휘발성 메모리 페이지(310)로부터의 데이터가 판독 커맨드(예를 들어, SoC/프로세서로부터의 액세스를 예측하는, 비휘발성 메모리 페이지(310)에 액세스하는 인터페이스 컨트롤러(230)로부터의 판독 커맨드)에 종속되는 경우, 인터페이스 컨트롤러(또는 로컬 메모리 컨트롤러와 관련된 인터페이스 컨트롤러)는 연관된 제2 필드(320)를 식별할 수 있고 연관된 제2 필드(320)에 기초하여 요청 데이터에 대한 프리페치 크기를 결정할 수 있으며, 여기서 프리페치 크기는 판독 요청에 응답하여 비휘발성 메모리(225)로부터 판독될 (요청 데이터를 포함하고 이에 따라 적어도 요청 데이터만큼 큰) 데이터의 크기를 표시한다.
일부 실시예에서, 제2 필드(320)에 저장된 논리 상태는 대응하는 비휘발성 메모리 페이지(310)의 프리페치 크기를 표시할 수 있다. 예를 들어, "00"은 64 바이트에 대응할 수 있고, "01"은 128 바이트에 대응할 수 있으며, "01"은 192 바이트에 대응할 수 있고, "11"은 256 바이트에 대응할 수 있다. 이러한 실시예에서, 판독 커맨드가 비휘발성 메모리 페이지(310)로부터 64 바이트의 데이터를 요청하고, 연관된 제2 필드(320)가 01인 경우에는, 인터페이스 컨트롤러(또는 로컬 메모리 컨트롤러와 관련된 인터페이스 컨트롤러)는 요청 데이터에 대한 프리페치 크기를 192 바이트로서 식별하고 비휘발성 메모리(225)로부터 192 바이트의 데이터를 판독할 수 있으며, 여기서 192 바이트는 요청된 64 바이트를 포함한다. 제2 필드(320)는 임의의 수의 논리 상태를 지원하는 임의의 수의 비트를 포함할 수 있고 임의의 크기의 프리페치 크기를 표시할 수 있음을 이해해야 한다. 일부 실시예에서, 제2 필드(320)는 프리페치(PF) 카운터라고 지칭될 수 있다.
일부 실시예에서, 인터페이스 컨트롤러(예를 들어, 도 3a 및 3b에 나타내지 않은, 도 2를 참조하여 설명된 인터페이스 컨트롤러(230))는 비휘발성 메모리(예를 들어, 도 2를 참조하여 설명된 비휘발성 메모리(225))의 SC 및 PF 카운터 기능을 용이하게 하기 위해 모드 레지스터 비트 세트를 사용할 수 있다. 일부 실시예에서, 모드 레지스터는 메모리 디바이스의 다양한 동작 모드(예를 들어, 상이한 테스트 모드, 상이한 판독 또는 기록 모드, 상이한 성능 모드)를 확립할 수 있고, 모드 레지스터 비트라고 지칭될 수 있는 모드 레지스터와 연관된 비트 세트는 특정 동작 모드를 결정하는 데 사용될 수 있다.
일부 실시예에서, 인터페이스 컨트롤러는 판독 동작 동안 데이터와 함께 데이터 마스크 반전(data mask inversion: DMI) 핀을 사용하여 SC 및 PF 카운터의 콘텐츠에 액세스할 수 있다. 일부 실시예에서, 인터페이스 컨트롤러는 특별한 커맨드 시퀀스로 SC 및 PF 카운터의 콘텐츠를 기록할 수 있다. 예를 들어, 인터페이스 컨트롤러는 비휘발성 메모리(예를 들어, 도 2를 참조하여 설명된 비휘발성 메모리(225))에 발행된 기록 커맨드 동안 열 어드레스 핀을 통해 SC 및 PF 카운터와 연관된 레지스터에 SC 및 PF 카운터의 콘텐츠를 제공할 수 있다.
도 3b는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 상태도(300-b)의 일례를 도시한다. 도면(300-b)은 본 명세서에 설명된 특징 및 기술을 지원하는 메모리 시스템 또는 서브시스템의 예시적인 동작 특성을 도시한다. 도면(300-b)은 비휘발성 메모리(325), 가상 페이지(335), 및 버퍼(340)를 도시한다. 비휘발성 메모리(325)는 도 2를 참조하여 설명된 비휘발성 메모리(225)의 일례일 수 있다.
가상 페이지(335)는 도 2를 참조하여 설명된 가상 메모리 뱅크(235) 내의 페이지일 수 있다. 일부 실시예에서, 가상 메모리 뱅크(235)는 다수의 가상 페이지(335)의 수퍼세트일 수 있다. 버퍼(340)는 도 2를 참조하여 설명된 버퍼(240)의 일례일 수 있다. 인터페이스 컨트롤러(예를 들어, 도 3a 및 도 3b에 나타내지 않은, 도 2를 참조하여 설명된 인터페이스 컨트롤러(230))는 비휘발성 메모리(325), 가상 페이지(335), 및 버퍼(340)와 연관된 다양한 동작(예를 들어, 동작(360 내지 380))을 수행하거나 관리할 수 있다. 일부 경우에, 인터페이스 컨트롤러는 동작을 수행하기 위해 다른 엔티티(예를 들어, 메모리 디바이스의 로컬 메모리)를 요청함으로써 동작을 관리할 수 있다.
동작(360)은 비휘발성 메모리 페이지(310)의 콘텐츠를 비휘발성 메모리(325)로부터 가상 페이지(335)로 전송하는 것 및 콘텐츠를 가상 페이지(335)에 저장하는 것을 포함할 수 있다. 동작(360)은 SoC/프로세서가 가상 페이지(335) 또는 버퍼(340)에 존재하지 않는 비휘발성 메모리 페이지(310)의 콘텐츠에 대응하는 데이터를 요청할 때 로컬 메모리 컨트롤러(예를 들어, 메모리 디바이스의 로컬 메모리 컨트롤러)와 관련하여 인터페이스 컨트롤러에 의해 수행될 수 있다. 또한, 인터페이스 컨트롤러는 동작(365)의 일부로서, 비휘발성 메모리 페이지(310)에 대한 SoC/프로세서에 의한 다수의 액세스 이벤트를 추적하기 위해 가상 페이지(335)와 연관된 제1 필드(315)의 값(예를 들어, 제1 카운터의 값)을 업데이트할 수 있다.
일부 실시예에서, 동작(360)은 인터페이스 컨트롤러가 호스트(예를 들어, SoC/프로세서)로부터 요청을 수신하는 것을 포함할 수 있다. 요청에 기초하여, 인터페이스 컨트롤러는 우선 요청 데이터에 대해 가상 페이지(335)와 통신할 수 있다. 데이터가 가상 페이지(335)에 저장되어 있지 않은 경우에, 인터페이스 컨트롤러는 비휘발성 메모리(325)(예를 들어, 비휘발성 메모리(325)의 로컬 컨트롤러)에 시그널링하여 요청 데이터를 가상 페이지(335)에 전송할 수 있다. 이 전송은 동작(360)에서 발생할 수 있다. 비휘발성 메모리(325)로부터 가상 페이지(335)로 데이터를 전송할 때, 비휘발성 메모리와 연관된 카운터가 증분될 수 있다. 비휘발성 메모리와 연관된 카운터를 증분시킨 후, 카운터가 임계값에 도달했는지 여부(예를 들어, 카운터가 포화되었는지 여부)에 대한 결정이 (예를 들어, 인터페이스 컨트롤러에 의해) 이루어질 수 있다. 카운터가 임계값에 도달하지 않은 경우, 데이터는 인터페이스 컨트롤러로부터 호스트로 제공될 수 있다. 일부 실시예에서, 데이터가 호스트에 제공된 후, 데이터는 (예를 들어, 동작(370)에서) 비휘발성 메모리(325)로 다시 전달(예를 들어, 라이트백)될 수 있다. 일부 실시예에서, 요청 데이터를 전달하는 것은 비휘발성 메모리 페이지의 적어도 일부에 대응하는 데이터를 전송하거나 액세스하는 것을 포함한다.
인터페이스 컨트롤러는 SoC/프로세서에 의해 요청된 데이터(예를 들어, SoC/프로세서에 의해 인터페이스 컨트롤러에 전송된 판독 커맨드에 종속됨)가 가상 페이지(335)에서 발견되면 동작(365)을 수행할 수 있다. 동작(365)의 일부로서, 인터페이스 컨트롤러는 가상 페이지(335)로부터 요청 데이터를 검색하고 비휘발성 메모리(325) 또는 버퍼(340)에 액세스하지 않고 요청 데이터를 SoC/프로세서에 제공할 수 있다. 또한, 인터페이스 컨트롤러는 도 3a를 참조하여 전술한 비휘발성 메모리 페이지(310)에 대한 SoC/프로세서에 의한 다수의 액세스 이벤트를 추적하기 위해 데이터와 연관된 제1 필드(315)의 값(예를 들어, 제1 카운터의 값)을 업데이트할 수 있다.
인터페이스 컨트롤러는 가상 페이지(335)의 페이지가 폐쇄되고 폐쇄된 페이지와 연관된 도 3a를 참조하여 전술한 제2 필드(320)의 값(예를 들어, 제2 카운터의 값)이 임계값을 충족하지 않으면 동작(370)을 수행할 수 있다. 가상 페이지(335)는 도 2를 참조하여 설명된 가상 메모리 뱅크(235) 내의 하나 이상의 페이지를 포함할 수 있다. 인터페이스 컨트롤러는 SoC/프로세서가 더 이상 페이지와 연관된 데이터를 필요로 하지 않을 때 가상 페이지(335)에서 페이지를 폐쇄하는 것으로 결정할 수 있다. 가상 페이지(335)에서 페이지를 폐쇄하는 것으로 결정하면, 인터페이스 컨트롤러는 페이지에 대응하는 메모리 공간을 SoC/프로세서에 대해 사용 가능하게 하기 위해 데이터를 제거할 수 있다. 일부 실시예에서, 가상 페이지(335) 내의 페이지는 SoC/프로세서에 기록되지 않고 폐쇄될 수 있다(예를 들어, 데이터가 수정되지 않는다). 수정되지 않은 데이터는 가상 페이지(335)로부터 축출될 수 있으며, 도 3a을 참조하여 전술한 제1 필드(315)의 값(예를 들어, 제1 카운터의 값)이 가상 메모리 뱅크(235)에 기록되지 않을 수 있다.
일부 실시예에서, 동작(365)은 인터페이스 컨트롤러가 호스트(예를 들어, SoC/프로세서)로부터 요청을 수신하는 것을 포함할 수 있다. 요청이 수신되면, 인터페이스 컨트롤러는 전술한 바와 같이 요청 데이터에 대한 가상 페이지(335)와 통신할 수 있다. 데이터가 가상 페이지(335)에 저장되는 경우에, 인터페이스 컨트롤러는 가상 페이지(335)로부터 호스트로 데이터를 전달할 수 있다. 가상 페이지(335)로부터 호스트로 데이터를 전달할 때, 가상 페이지(335)와 연관된 카운터는 동작(365)에서 증분될 수 있다. 이것은 제1 카운터라고 지칭될 수 있다. 카운터를 증분시킨 후, 제1 카운터가 임계값에 도달했는지 여부(예를 들어, 카운터가 포화되었는지 여부)에 대한 결정이 (예를 들어, 인터페이스 컨트롤러에 의해) 이루어질 수 있다. 카운터가 임계값에 도달하지 않은 경우, 데이터는 가상 페이지에 남아있을 수 있거나, 일부 실시예에서는 동작(370)에서 비휘발성 메모리(325)로 다시 전달될 수 있다. 그러나, 카운터가 임계값에 도달한 경우, 데이터는 동작(375)에서 버퍼(340)로 전송되어 저장될 수 있다.
추가적으로 또는 대안적으로, 데이터는 데이터와 연관된 적어도 하나의 특성에 기초하여 동작(375)에서 버퍼(340)에 전달되거나 전달되지 않을 수 있다. 일부 실시예에서, 인터페이스 컨트롤러는 데이터와 연관된 적어도 하나의 특성을 결정할 수 있다. 예를 들어, 인터페이스 컨트롤러는 데이터와 연관된 메모리 액세스 동작의 수량을 결정할 수 있다. 데이터의 특성은 메모리 액세스 동작의 수량에 기초할 수 있고, 그 후 데이터는 이전 메모리 액세스 동작의 수량이 임계값을 초과하는 것에 기초하여 버퍼에 전달될 수 있다(또는 전달되지 않을 수 있다). 예를 들어, 액세스 동작의 레이턴시를 개선하기 위해서는, 버퍼(340)에서 특정 유형의 데이터(예를 들어, GPU 데이터)를 저장하는 것이 바람직할 수 있다. 따라서, GPU 데이터가 미리 결정된 임계값을 초과하는 횟수만큼 액세스되는 경우에는, 버퍼(340)에 저장될 수 있다. 대조적으로, 예를 들어, GPU 데이터가 미리 결정된 임계값을 초과하지 않는 횟수만큼 액세스되는 경우, 데이터는 버퍼(340)에 저장되지 않을 것이다.
다른 실시예에서, 인터페이스 컨트롤러는 데이터가 SoC/프로세서에서 버퍼링된 데이터의 유형인지를 결정할 수 있다. 따라서, 데이터의 특성은 데이터가 SoC/프로세서에서 버퍼링되는 것에 기초할 수 있고, 데이터가 SoC/프로세서에서 버퍼링되는 것으로 결정하는 것에 기초하여 데이터는 디바이스의 메모리 어레이에 전달될 수 있다. 다른 방식으로 말하면, 버퍼(340)가 아닌 SoC/프로세서에서 특정 유형의 데이터를 버퍼링하는 것이 바람직할 수 있다. 일부 실시예에서, SoC/프로세서는 데이터가 SoC/프로세서에서 버퍼링된 유형인지 여부를 인터페이스 컨트롤러에 표시할 수 있다. 따라서, 이러한 데이터가 (예를 들어, 인터페이스 컨트롤러에 의해) 식별되는 경우, 데이터는 버퍼(340)에 저장되는 것이 아니라, 비휘발성 메모리(325)로 리턴될 것이다. 그러나, 일부 실시예에서, SoC/프로세서에서 버퍼링될 SoC/프로세서에 의해 표시된 데이터는 여전히 버퍼(340)로 전달될 수 있다.
인터페이스 컨트롤러는 또한 데이터와 연관된 적어도 하나의 애플리케이션을 결정할 수 있다. 데이터의 특성은 데이터와 연관된 애플리케이션에 기초할 수 있고, 데이터는 특성에 기초하여 버퍼에 전달될 수 있다. 예를 들어, 액세스 동작에서 레이턴시를 개선하기 위해서는, 버퍼(340)에 특정 애플리케이션(예를 들어, 그래픽 관련 애플리케이션)의 데이터를 저장하는 것이 바람직할 수 있다. 일부 실시예에서, 애플리케이션의 유형은 SoC/프로세서에 의해 인터페이스 컨트롤러에 표시될 수 있다. 따라서, 이러한 특정 유형의 애플리케이션과 연관된 데이터가 수신되는 경우에는, 버퍼(340)에 저장될 수 있다.
일부 경우에, 인터페이스 컨트롤러는 임계값을 사용하여 가상 페이지(335)의 폐쇄된 페이지로부터 데이터를 배치하는 방법을 결정할 수 있다. 일부 실시예에서, 도 3a를 참조하여 전술한 제1 필드(315)에 대응하는 값(예를 들어, 제1 카운터의 값)이 임계값 미만일 때, 인터페이스 컨트롤러는 폐쇄된 페이지로부터 버퍼(340)에 데이터를 저장하는 것을 바이패스할 수 있다. 대신에, 인터페이스 컨트롤러는 폐쇄된 페이지로부터의 임의의 수정된 데이터를 비휘발성 메모리(325)에 저장하고 폐쇄된 페이지로부터의 임의의 수정되지 않은 데이터를 폐기할 수 있다. 이러한 경우에, 인터페이스 컨트롤러는 폐쇄된 페이지로부터의 데이터가 비휘발성 메모리(325)에 저장된 대응하는 데이터에 대해 SoC/프로세서가 수정한 부분을 포함하는지 여부를 결정할 수 있다. 동작(370) 동안, 인터페이스 컨트롤러는 가상 페이지(335)로부터 비휘발성 메모리(325)에 폐쇄된 페이지의 데이터의 임의의 수정된 부분을 저장할 수 있다. 또한, 인터페이스 컨트롤러는 데이터가 수정되지 않은 것으로 결정한 후에 폐쇄된 페이지로부터 임의의 수정되지 않은 데이터를 폐기할 수 있다(즉, 인터페이스 컨트롤러는 데이터의 수정되지 않은 부분을 비휘발성 메모리(325)에 저장하는 것을 바이패스할 수 있다). 인터페이스 컨트롤러는, 전체 시스템 요구사항의 관점에서, 다양한 기준(예를 들어, 페이지에 대한 액세스 횟수와 연관된 미리 결정된 값, 페이지에 대한 액세스 부족과 연관된 시간 간격의 값)에 기초하여 임계값을 결정할 수 있다.
인터페이스 컨트롤러는, 인터페이스 컨트롤러가 가상 페이지(335)에서 페이지를 폐쇄하는 것으로 결정하고 제1 카운터 또는 제2 카운터의 값이 전술한 임계값을 충족하는 것으로 결정하면 동작(375)을 수행할 수 있다. 일부 실시예에서, 도 3a를 참조하여 전술한 제1 필드(315)의 값(예를 들어, 제1 카운터의 값)이 임계값 이상일 때, 인터페이스 컨트롤러는 SoC/프로세서가 곧 데이터에 액세스할 가능성이 있는 것으로 결정할 수 있으므로, 인터페이스 컨트롤러는 폐쇄된 페이지로부터의 데이터를 버퍼(340)에 저장할 수 있다. 이와 같이, 동작(375)의 일부로서, 인터페이스 컨트롤러는 폐쇄된 페이지로부터의 데이터를 버퍼(340)에 저장할 수 있다. 마찬가지로, 인터페이스 컨트롤러는 도 3a를 참조하여 전술한 제2 필드(320)의 값(예를 들어, 제2 카운터의 값)이 임계값 이상인지를 결정할 수 있다. 일부 실시예에서, 도 3a를 참조하여 전술한 제2 필드(320)의 각각의 값이 임계값 이상일 때, 인터페이스 컨트롤러는 가상 페이지(335)를 통해 비휘발성 메모리(325)로부터의 데이터를 버퍼에 저장할 수 있다.
인터페이스 컨트롤러는 버퍼(340)로부터 페이지를 축출할 때에 동작(380)을 수행할 수 있다. 인터페이스 컨트롤러는 페이지가 미리 결정된 기간 동안 SoC/프로세서에 의해 액세스되지 않을 때에 버퍼(340)로부터 페이지를 축출하는 것으로 결정할 수 있다. 일부 경우에, 축출된 페이지로부터의 데이터는 비휘발성 메모리(325)에 저장된 대응하는 데이터에 대해 SoC/프로세서에 의해 수정된 부분을 포함할 수 있다. 이러한 경우에, 동작(380)의 일부로서, 인터페이스 컨트롤러는 축출된 데이터의 수정된 부분만을 비휘발성 메모리(325)에 저장할 수 있다. 또한, 동작(380)의 일부로서, 인터페이스 컨트롤러는 축출된 페이지와 연관된 도 3a를 참조하여 전술한 제1 필드(315)의 값(예를 들어, 제1 카운터의 값)을 업데이트(예를 들어, 0으로 리셋)할 수 있다. 또한, 인터페이스 컨트롤러는 데이터가 수정되지 않은 것으로 결정한 후에 데이터를 폐기할 수 있다(즉, 인터페이스 컨트롤러는 축출된 데이터의 수정되지 않은 부분을 비휘발성 메모리(325)에 저장하는 것을 바이패스할 수 있다). 마찬가지로, 인터페이스 컨트롤러는 축출된 페이지와 연관된 도 3a를 참조하여 전술한 각각의 제2 필드(320)의 값(예를 들어, 제2 카운터의 값)을 업데이트(예를 들어, 0으로 리셋)할 수 있다.
도 4a는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스 동작에 대한 예시적인 프로세스 흐름(400-a)을 도시한다. 프로세스 흐름(400-a)은 도 2를 참조하여 설명된 SoC/프로세서의 일례일 수 있는 호스트(401), 및 도 2를 참조하여 설명된 메모리 서브시스템의 일례일 수 있는 메모리 서브시스템(402)이 관여하는 메모리 액세스 동작의 양태를 도시한다. 메모리 서브시스템(402)은 도 2를 참조하여 설명된 인터페이스 컨트롤러(230)의 일례일 수 있는 메모리 컨트롤러(403); 도 2 및 도 3을 참조하여 설명된 버퍼의 일례일 수 있는 버퍼(404); 도 2 및 도 3을 참조하여 설명된 가상 메모리 뱅크 또는 가상 페이지의 일례일 수 있는 가상 메모리 뱅크(405); 및 도 2 및 도 3을 참조하여 설명된 비휘발성 메모리의 일례일 수 있는 비휘발성 메모리(406)를 포함할 수 있다.
410에서, 호스트(401)는 메모리 서브시스템(402)에 저장된 (예를 들어, 데이터를 판독 또는 기록하기 위한) 데이터에 대한 액세스 요청을 전송할 수 있다. 호스트(401)는 SoC/프로세서라고 지칭되거나 지칭되지 않을 수 있다. 일부 경우에, 액세스 요청은 특정 메모리 액세스 프로토콜(예를 들어, DRAM 메모리 액세스 프로토콜)에 따라 전송될 수 있다. 일부 실시예에서, 액세스 요청은 메모리 서브시스템(402)의 구성요소에 직접 전송될 수 있다. 예를 들어, 액세스 요청은 버퍼(404) 및 가상 메모리 뱅크(405)에 직접 전송될 수 있고, 이들은 모두 호스트(401)에 의해 사용되는 특정 메모리 액세스 프로토콜에 따라 동작할 수 있다. 추가적으로 또는 대안적으로, 액세스 요청은 (예를 들어, 메모리 컨트롤러(403)를 통해) 메모리 서브시스템(402)의 구성요소에 간접적으로 전송될 수 있다. 예를 들어, 메모리 컨트롤러(403)는 호스트(401)로부터 액세스 요청을 수신하는 것에 기초하여 비휘발성 메모리(406)에 저장된 데이터에 액세스할 수 있다.
415에서, 메모리 컨트롤러(403)는 호스트(401)로부터 액세스 요청을 수신하는 것에 기초하여 요청 데이터에 액세스할 수 있다. 메모리 컨트롤러는 호스트(401)로부터 수신된 액세스 요청을 버퍼(404), 가상 메모리 뱅크(405), 및 비휘발성 메모리(406) 중 하나 이상에 전달할 수 있다. 일부 경우에, 메모리 컨트롤러는 - 예를 들어, 요청 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 없는 것으로 결정한 후 - 액세스 요청을 버퍼(404)에, 그 후에는 가상 메모리 뱅크(405)에, 마지막으로는 비휘발성 메모리(406)에 전달할 수 있다. 일부 경우에, 메모리 컨트롤러(403)는 - 예를 들어, 요청 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 없는 것으로 결정한 후 - 액세스 요청을 비휘발성 메모리(406)에만 전달할 수 있다.
420에서, 데이터는 비휘발성 메모리(406)와 같은 하나 이상의 구성요소와의 통신에 기초하여 가상 메모리 뱅크(405)에서 수신될 수 있다. 예를 들어, 데이터에 대한 액세스 요청에 응답하여(예를 들어, 410), 데이터는 비휘발성 메모리(406)로부터 수신될 수 있다. 다른 실시예에서, 데이터는 미리 가상 메모리 뱅크(405)에 위치할 수 있다. 어느 경우라도, 버퍼(404)에서, 가상 메모리 뱅크(405), 메모리 컨트롤러(403), 또는 이들의 임의의 조합은 요청 데이터가 버퍼(404)에 위치하지 않는지를 결정할 수 있다.
425에서 제1 카운터가 증분될 수 있다. 예를 들어, 제1 카운터는 420으로부터의 데이터가 가상 메모리 뱅크(405)에 사전에 저장된 경우에 증분될 수 있다. 일부 실시예에서, 카운터는 "00"을 판독할 수 있고, 425에서 증분한 후에, "01"을 판독할 수 있다. 다른 방식으로 말하면, 제1 카운터는 가상 메모리 뱅크(405)가 호스트(401)로부터 데이터에 대한 액세스 요청을 수신하는 것에 응답하여 증분될 수 있다. 다른 실시예에서는, 430에서 제2 카운터가 증분될 수 있다. 예를 들어, 제2 카운터는 420으로부터의 데이터가 비휘발성 메모리(406)로부터 가상 메모리 뱅크(405)에 전달된 경우에 증분될 수 있다. 전술한 바와 같이, 카운터는 "00"을 판독할 수 있고, 450에서 증분 후, "01"을 판독할 수 있다. 다른 방식으로 말하면, 제2 카운터는 비휘발성 메모리(406)가 데이터에 대한 액세스 요청에 응답하여 데이터를 가상 메모리 뱅크(405)에 전달하는 것에 응답하여 증분될 수 있다. 일부 실시예에서, 제1 카운터 및 제2 카운터는 인터페이스 컨트롤러(403)에 의해 증분될 수 있다. 다른 실시예에서, 제1 카운터는 메모리 컨트롤러(403)에 의해 증분될 수 있고 제2 카운터는 비휘발성 메모리(406)와 연관된 로컬 메모리 컨트롤러에 의해 증분될 수 있다.
일부 실시예에서, 호스트(401)로부터 수신된 액세스 요청은 커맨드(예를 들어, 기록 커맨드)일 수 있다. 예를 들어, 기록 커맨드는 호스트 디바이스로부터 수신될 수 있고, 가상 메모리 뱅크(405)와 연관된 제1 카운터의 값은 기록 커맨드를 수신하는 것에 기초하여 (예를 들어, 425에서) 증분될 수 있다. 다른 실시예에서, 액세스 요청은 판독 커맨드일 수 있다. 예를 들어, 판독 커맨드는 호스트 디바이스로부터 수신될 수 있고, 가상 메모리 뱅크(405)와 연관된 제1 카운터의 값은 판독 커맨드를 수신하는 것에 기초하여 증분될 수 있다. 후술하는 바와 같이, 일부 실시예에서, 데이터는 판독 커맨드에 기초하여 가상 메모리 뱅크(405)에서 수신되고, 후속하여 판독 커맨드에 기초하여 가상 메모리 뱅크(405)로부터 버퍼(404)로 전달된다.
일부 실시예에서, 410은 데이터에 대한 제1 액세스 요청을 예시할 수 있다. 각 카운터에 대한 임계값은 "01"보다 클 수 있으며, 여기서 요청 데이터는 435에서 호스트(401)에 전달될 수 있다. 다른 방식으로 말하면, 요청 데이터는 제1 카운터 또는 제2 카운터의 값이 "01"을 초과하는 경우에 호스트(401)에 전달될 수 있다. 예를 들어, 제1 카운터가 증분된 경우(예를 들어, 425에서), 데이터는 (예를 들어, 인터페이스 컨트롤러를 통해) 가상 메모리 뱅크(405)로부터 호스트(401)로 직접 전달될 수 있다. 대안적으로, 제2 카운터가 증분된 경우(예를 들어, 430에서), 데이터는 비휘발성 메모리(406)로부터 가상 메모리 뱅크(405)로, 그리고 (예를 들어, 인터페이스 컨트롤러를 통해) 가상 메모리 뱅크(405)로부터 호스트(401)로 전달될 수 있다.
도 4b는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스 동작에 대한 예시적인 프로세스 흐름(400-b)을 도시한다. 프로세스 흐름(400-b)은 메모리 컨트롤러(403), 버퍼(404), 가상 메모리 뱅크(405), 및 비휘발성 메모리(406)를 포함할 수 있는 호스트(401) 및 메모리 서브시스템(402)이 관여하는 메모리 액세스 동작의 양태를 도시한다. 프로세스 흐름(400-b)에서 수행되는 동작은 도 4a를 참조하여 설명된 프로세스 흐름(400-a)에서 수행된 동작에 대한 후속일 수 있다.
440에서, 호스트(401)는 메모리 서브시스템(402)에 저장된 (예를 들어, 데이터를 판독 또는 기록하기 위한) 데이터에 대한 제2 액세스 요청을 전송할 수 있다. 일부 실시예에서, 440에서의 액세스 요청은 도 4a를 참조하여 설명된 410에서의 것과 동일한 요청일 수 있다. 다른 실시예에서, 440에서의 액세스 요청은 410에서의 것과는 다른 요청일 수 있다. 전술한 바와 같이, 액세스 요청은 버퍼(404) 및 가상 메모리 뱅크(405)에 직접 전송될 수 있고, 이들은 모두 호스트(401)에 의해 사용되는 특정 메모리 액세스 프로토콜에 따라 동작할 수 있다.
445에서, 메모리 컨트롤러(403)는 호스트(401)로부터 제2 액세스 요청을 수신하는 것에 기초하여 요청 데이터에 액세스할 수 있다. 메모리 컨트롤러는 호스트(401)로부터 수신된 제2 액세스 요청을 버퍼(404), 가상 메모리 뱅크(405), 및 비휘발성 메모리(406) 중 하나 이상에 전달할 수 있다. 일부 경우에, 메모리 컨트롤러는 - 예를 들어, 요청 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 없는 것으로 결정한 후 - 제2 액세스 요청을 버퍼(404)에, 그 후에는 가상 메모리 뱅크(405)에, 그리고 마지막으로 비휘발성 메모리(406)에, 전달할 수 있다. 일부 경우에, 메모리 컨트롤러(403)는 - 예를 들어, 요청 데이터가 버퍼(404) 또는 가상 메모리 뱅크(405)에 없는 것으로 결정한 후 - 제2 액세스 요청을 비휘발성 메모리(406)에만 전달할 수 있다.
450에서, 데이터는 가상 메모리 뱅크(405)에서 수신될 수 있다. 전술한 바와 같이, 데이터는 비휘발성 메모리(406)로부터 수신될 수 있다(또는, 일부 경우에, 미리 가상 메모리 뱅크(405)에 위치할 수 있다). 455에서 제1 카운터가 증분될 수 있다. 예를 들어, 440에서의 액세스 요청은 410에서의 것과 동일한 요청일 수 있고 데이터는 가상 메모리 뱅크(405)에 사전에 저장될 수 있다. 따라서, 제1 카운터는 2회째 증분될 수 있다. 예를 들어, 제1 카운터는 사전에 "01"을 판독할 수 있고, 455에서 증분된 후, "10"을 판독할 수 있다. 460에서 제2 카운터가 증분될 수 있다. 예를 들어, 440에서의 액세스 요청은 410에서의 것과 동일한 요청일 수 있고 데이터는 비휘발성 메모리(406)로부터 가상 메모리 뱅크(405)로 전달될 수 있다. 따라서, 제2 카운터는 2회째 증분될 수 있다. 예를 들어, 제2 카운터는 사전에 "01"을 판독할 수 있고, 460에서 증분한 후, "10"을 판독할 수 있다. 다른 실시예에서, 제1 카운터 또는 제2 카운터 중 하나는 비이진수를 사용하여 증분될 수 있다. 예를 들어, 제1 카운터 또는 제2 카운터는 "01"을 판독할 수 있고, 증분한 후, "02"를 판독할 수 있다.
465에서, 제1 카운터 또는 제2 카운터의 값이 결정될 수 있다. 그 결정은 데이터가 가상 메모리 뱅크(405)에 사전에 저장되었는지 여부, 또는 데이터가 비휘발성 메모리(406)로부터 가상 메모리 뱅크(405)로 전송되었는지 여부에 부분적으로 기초할 수 있다. 예를 들어, 데이터는 전술한 바와 같이 가상 메모리 뱅크에 사전에 저장될 수 있었고 호스트(401)에 의해 2회 액세스될 수 있었다. 따라서, 465에서, 제1 카운터의 값이 "10"인 것으로 결정될 수 있다. 추가적으로 또는 대안적으로, 데이터는 전술한 바와 같이 호스트(401)에 의한 액세스 커맨드에 기초하여 비휘발성 메모리(406)로부터 가상 메모리 뱅크(405)로 2회 전송될 수 있다. 따라서, 465에서, 제2 카운터의 값이 "10"인 것으로 결정될 수 있다.
다른 실시예에서는, 465에서 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 전에 가상 메모리 뱅크(405)와 연관된 제1 카운터의 값이 임계값을 충족하지 않는지가 (예를 들어, 인터페이스 컨트롤러에 의해) 결정될 수 있다. 이러한 실시예에서, 데이터는 제1 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크(405)와 비휘발성 메모리(406) 사이에서 통신될 수 있다. 다른 실시예에서는, 465에서 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 전에 메모리 어레이와 연관된 제2 카운터의 값이 (예를 들어 인터페이스 컨트롤러에 의해) 임계값을 충족하지 않는지가 결정될 수 있다. 이러한 실시예에서, 데이터는 제1 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크(405)와 비휘발성 메모리(406) 사이에서 통신될 수 있다.
470에서, 데이터는 제1 카운터가 임계값을 충족하는 것에 기초하여 디바이스의 버퍼(404)와 가상 메모리 뱅크(405) 사이에서 통신될 수 있다. 예를 들어, 임계값은 "10"일 수 있고, 전술한 바와 같이, 제1 카운터 또는 제2 카운터의 값은 "10"을 판독할 수 있다. 따라서, 제1 카운터 또는 제2 카운터의 값은 임계값을 충족할 수 있고, 데이터는 버퍼(404)에 전달될 수 있다. 그러나, 일부 실시예에서, 각각의 카운터의 값은 임계값을 충족하지 않을 수 있다. 이러한 실시예에서, 데이터는 호스트(401)에 전달될 수 있고, 프로세스는 이전 단계로(예를 들어, 410으로) 복귀할 수 있다.
추가적으로 또는 대안적으로, 470 후(예를 들어, 데이터가 버퍼(404)에 전달된 후), 컨트롤러(예를 들어, 인터페이스 컨트롤러)는 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것에 기초하여 제1 카운터의 값을 초기값으로 설정할 수 있다. 예를 들어, 인터페이스 컨트롤러는 제1 카운터의 값을 "00"으로 설정할 수 있다.
일부 실시예에서, 410, 420, 425, 430, 및 435는 프로세스 흐름(400-a)으로부터 생략될 수 있다. 예를 들어, 인터페이스 메모리 컨트롤러 및/또는 비휘발성 메모리(406)는 비휘발성 메모리 페이지 및/또는 비휘발성 메모리 서브페이지를 가상 메모리 뱅크(405)로 선제적으로 이동시킬 수 있다. 다른 실시예에서, (예를 들어, 호스트(401)로부터의) 제1 액세스 동작은 제1 카운터 또는 제2 카운터와 연관된 임계값을 충족할 수 있다.
도 5는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 메모리 컨트롤러(505)의 블록도(500)를 나타낸다. 메모리 컨트롤러(505)는 메모리 인터페이스 구성요소(510), 카운터 관리 구성요소(515), 데이터 관리 구성요소(520), 및 액세스 관리 구성요소(525)를 포함한다. 카운터 관리 구성요소(515)는 포화 카운터(들)(530)를 포함할 수 있다. 이들 구성요소 각각은 서로 직접 또는 간접적으로(예를 들어, 하나 이상의 버스를 통해) 통신할 수 있다. 일부 실시예에서, 메모리 컨트롤러(505)는 메모리 서브시스템(예를 들어, 도 2를 참조하여 설명된 메모리 서브시스템(220))에 걸친 동작을 관리한다. 즉, 메모리 컨트롤러(505)는 메모리 어레이, 가상 메모리 뱅크, 및 버퍼 사이의 통신을 관리하거나 용이하게 할 수 있다. 예를 들어, 메모리 컨트롤러(505)는 메모리 서브시스템의 특정 구성요소가 데이터를 기록 또는 판독하게 할 수 있다.
메모리 인터페이스 구성요소(510)는 호스트 디바이스(예를 들어, 도 2를 참조하여 설명된 SoC/프로세서(250))로부터 수신된 커맨드를 관리할 수 있다. 예를 들어, 메모리 인터페이스 구성요소(510)는 호스트 디바이스로부터, 메모리 인터페이스 구성요소(510)와 결합되는 가상 메모리 뱅크 및/또는 메모리 어레이와 연관된 판독 커맨드 또는 기록 커맨드를 수신할 수 있다.
카운터 관리 구성요소(515)는 수신된 데이터 요청에 기초하여 가상 메모리 뱅크 및/또는 메모리 어레이와 연관된 카운터를 증분시킬 수 있다. 예를 들어, 카운터 관리 구성요소(515)는 데이터와 연관된 메모리 액세스 동작에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증가시킬 수 있고, 또한 가상 메모리 뱅크가 데이터를 수신하는 것에 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시킬 수 있다.
전술한 바와 같이, 카운터 관리 구성요소(515)는 수신된 데이터 요청에 기초하여 가상 메모리 뱅크 및/또는 메모리 어레이와 연관된 카운터를 증분시킬 수 있다. 따라서, 카운터 관리 구성요소는 하나 이상의 포화 카운터(들)(530)를 증분시킬 수 있다. 포화 카운터(들)(530)는 호스트 컨트롤러로부터 데이터에 대한 액세스 요청을 수신하는 가상 메모리 뱅크(예를 들어, 도 4a 및 도 4b를 참조하여 설명된 가상 메모리 뱅크(405))에 응답하여 증분될 수 있는 제1 카운터를 포함할 수 있다. 추가적으로 또는 대안적으로, 포화 카운터(들)(530)는 비휘발성 메모리가 (예를 들어, 호스트 컨트롤러로부터의) 데이터에 대한 액세스 요청에 응답하여 가상 메모리 뱅크에 데이터를 전달하는 것에 응답하여 증분될 수 있는 제2 카운터를 포함할 수 있다.
데이터 관리 구성요소(520)는 제1 카운터가 임계값을 충족하는 것에 기초하여 디바이스의 버퍼와 가상 메모리 뱅크 사이에서 데이터를 통신할 수 있다. 다른 실시예에서, 데이터 관리 구성요소(520)는 제2 카운터가 임계값을 충족하는 것에 기초하여 디바이스의 버퍼와 가상 메모리 뱅크 사이에서 데이터를 통신할 수 있다.
액세스 관리 구성요소(525)는 카운터 관리 구성요소(515)에 의해 증분된 하나 이상의 카운터의 값을 결정할 수 있다. 예를 들어, 액세스 관리 구성요소(525)는 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정할 수 있다.
일부 실시예에서, 메모리 인터페이스 구성요소(510)는 또한 디바이스의 메모리 어레이의 페이지 크기에 대응하는 데이터를 수신할 수 있다. 메모리 인터페이스 구성요소(510)는 호스트 디바이스로부터 기록 커맨드를 수신할 수 있으며, 여기서 가상 메모리 뱅크와 연관된 제1 카운터의 값은 기록 커맨드를 수신하는 것에 기초하여 증분된다. 추가적으로 또는 대안적으로, 메모리 인터페이스 구성요소(510)는 호스트 디바이스로부터 판독 커맨드를 수신할 수 있으며, 여기서 가상 메모리 뱅크와 연관된 제1 카운터의 값은 판독 커맨드를 수신하는 것에 기초하여 증분된다. 메모리 인터페이스 구성요소(510)는 또한 데이터의 특성이 SoC(system on a chip) 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형을 포함한다는 표시를 SoC 또는 프로세서로부터 수신할 수 있고, 여기서 데이터는 특성에 기초하여 버퍼에 전달된다.
카운터 관리 구성요소(515)는 또한 데이터와 연관된 메모리 액세스 동작에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시킬 수 있다. 일부 실시예에서, 카운터 관리 구성요소(515)는 기록 커맨드를 수신하는 것에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터를 증분시킬 수 있다. 다른 실시예에서, 카운터 관리 구성요소(515)는 판독 커맨드를 수신하는 것에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터를 증분시킬 수 있다. 추가적으로 또는 대안적으로, 카운터 관리 구성요소(515)는 가상 메모리 뱅크가 데이터를 수신하는 것에 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시킬 수 있다. 카운터 관리 구성요소(515)는 또한 가상 메모리 뱅크가 데이터를 수신하는 것에 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시킬 수 있다.
일부 실시예에서, 데이터 관리 구성요소(520)는 또한 제1 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신할 수 있다. 다른 실시예에서, 데이터 관리 구성요소(520)는 제2 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신할 수 있다. 추가적으로 또는 대안적으로, 데이터 관리 구성요소(520)는 데이터의 특성에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 또는 디바이스의 메모리 어레이 사이에서 데이터를 통신할 수 있고 및/또는 가상 메모리 뱅크로부터 디바이스의 메인 메모리로 데이터를 전달할 수 있다. 데이터 관리 구성요소(520)는 또한 페이지를 폐쇄하는 것에 기초하여 데이터를 버퍼에 전달할 수 있다.
액세스 관리 구성요소(525)는 또한 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 전에 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하지 않는지를 결정할 수 있다. 다른 실시예에서, 액세스 관리 구성요소(525)는 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정할 수 있다. 액세스 관리 구성요소(525)는 또한 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 전에 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하지 않는지를 결정할 수 있다. 추가적으로 또는 대안적으로, 액세스 관리 구성요소(525)는 데이터의 특성에 기초하여 디바이스의 버퍼 또는 디바이스의 메모리 어레이에 데이터를 전달할 것인지 여부를 결정할 수 있다.
액세스 관리 구성요소(525)는 또한 데이터와 연관된 메모리 액세스 동작의 수량을 결정할 수 있고, 여기서 데이터의 특성은 메모리 액세스 동작의 수량에 기초하며, 데이터는 이전 메모리 액세스 동작의 수량이 임계값을 초과하는 것에 기초하여 버퍼에 전달된다. 일부 경우에, 액세스 관리 구성요소(525)는 데이터가 SoC(system on a chip) 또는 프로세서에서 버퍼링되는지를 결정할 수 있으며, 여기서 데이터의 특성은 데이터가 SoC 또는 프로세서에서 버퍼링되는 것에 기초하며, 데이터는 데이터가 SoC 또는 프로세서에서 버퍼링되는 것으로 결정하는 것에 기초하여 디바이스의 메모리 어레이에 전달된다. 추가적으로 또는 대안적으로, 액세스 관리 구성요소(525)는 데이터와 연관된 적어도 하나의 애플리케이션을 결정할 수 있으며, 여기서 데이터의 특성은 데이터와 연관된 애플리케이션에 기초하며, 데이터는 특성에 기초하여 버퍼에 전달된다.
도 6은 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 지원하는 디바이스(605)를 포함하는 시스템(600)의 도면을 나타낸다. 디바이스(605)는, 예를 들어 도 2를 참조하여 전술한 메모리 서브시스템의 구성요소의 일례이거나 이를 포함할 수 있다. 디바이스(605)는 로컬 메모리 컨트롤러(615), 메모리 셀(620), 기본 입력/출력 시스템(BIOS) 구성요소(625), 프로세서(630), I/O 컨트롤러(635), 및 주변 구성요소(640)를 포함하여, 통신을 송수신하기 위한 구성요소를 포함하는 양방향 음성 및 데이터 통신을 위한 구성요소를 포함할 수 있다. 이들 구성요소는 하나 이상의 버스(예를 들어, 버스(610))를 통해 전자 통신할 수 있다.
메모리 셀(620)은 본 명세서에 설명된 정보를(즉, 논리 상태의 형태로) 저장할 수 있다.
BIOS 구성요소(625)는 다양한 하드웨어 구성요소를 초기화하고 실행할 수 있는 펌웨어로서 동작되는 BIOS를 포함하는 소프트웨어 구성요소일 수 있다. BIOS 구성요소(625)는 또한 프로세서와 다양한 다른 구성요소, 예를 들어 주변 구성요소, 입력/출력 제어 구성요소 등 사이의 데이터 흐름을 관리할 수 있다. BIOS 구성요소(625)는 판독 전용 메모리(ROM), 플래시 메모리, 또는 임의의 다른 비휘발성 메모리에 저장된 프로그램 또는 소프트웨어를 포함할 수 있다.
프로세서(630)는 지능형 하드웨어 디바이스(예를 들어, 범용 프로세서, DSP, 중앙 처리 유닛(CPU), 마이크로컨트롤러, ASIC, FPGA, 프로그램 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직 구성요소, 이산 하드웨어 구성요소, 또는 이들의 임의의 조합)를 포함할 수 있다. 일부 경우에, 프로세서(630)는 메모리 컨트롤러를 사용하여 메모리 어레이를 동작시키도록 구성될 수 있다. 다른 경우에, 메모리 컨트롤러는 프로세서(630)에 통합될 수 있다. 프로세서(630)는 다양한 기능(예를 들어, 메모리 버퍼 관리 및 바이패스를 지원하는 기능 또는 작업)을 수행하기 위해 메모리에 저장된 컴퓨터 판독 가능 명령어를 실행하도록 구성될 수 있다.
I/O 컨트롤러(635)는 디바이스(605)에 대한 입력 및 출력 신호를 관리할 수 있다. I/O 컨트롤러(635)는 또한 디바이스(605)에 통합되지 않은 주변기기를 관리할 수 있다. 일부 실시예에서, I/O 컨트롤러(635)는 외부 주변기기에 대한 물리적 연결 또는 포트를 나타낼 수 있다. 일부 경우에, I/O 컨트롤러(635)는 iOS®, ANDROID®, MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, LINUX®, 또는 다른 알려진 운영 체제와 같은 운영 체제를 이용할 수 있다. 다른 경우에, I/O 컨트롤러(635)는 모뎀, 키보드, 마우스, 터치스크린, 또는 유사한 디바이스를 나타내거나 이와 상호 작용할 수 있다. 일부 경우에, I/O 컨트롤러(635)는 프로세서의 일부로서 구현될 수 있다. 일부 경우에, 사용자는 I/O 컨트롤러(635)를 통해 또는 I/O 컨트롤러(635)에 의해 제어되는 하드웨어 구성요소를 통해 디바이스(605)와 상호 작용할 수 있다.
주변 구성요소(640)는 임의의 입력 또는 출력 디바이스, 또는 이러한 디바이스를 위한 인터페이스를 포함할 수 있다. 그 예는 디스크 컨트롤러, 사운드 컨트롤러, 그래픽 컨트롤러, 이더넷 컨트롤러, 모뎀, 범용 직렬 버스(USB) 컨트롤러, 직렬 또는 병렬 포트, 또는 PCI(Peripheral Component Interconnect) 또는 AGP(accelerated graphics port) 슬롯과 같은 주변 카드 슬롯을 포함할 수 있다.
입력(645)은 디바이스(605) 또는 그의 구성요소로의 입력을 제공하는 디바이스(605) 외부의 디바이스 또는 신호를 나타낼 수 있다. 이것은 사용자 인터페이스 또는 다른 디바이스들과의 인터페이스 또는 다른 디바이스들 사이의 인터페이스를 포함할 수 있다. 일부 경우에, 입력(645)은 I/O 컨트롤러(635)에 의해 관리될 수 있고, 주변 구성요소(640)를 통해 디바이스(605)와 상호 작용할 수 있다.
출력(650)은 디바이스(605) 또는 그의 임의의 구성요소로부터의 출력을 수신하도록 구성되는 디바이스(605) 외부의 디바이스 또는 신호를 나타낼 수 있다. 출력(650)의 예는 디스플레이, 오디오 스피커, 인쇄 디바이스, 또는 다른 프로세서 또는 인쇄 회로 기판 등을 포함할 수 있다. 일부 경우에, 출력(650)은 주변 구성요소(들)(640)를 통해 디바이스(605)와 인터페이스하는 주변 소자일 수 있다. 일부 경우에, 출력(650)은 I/O 컨트롤러(635)에 의해 관리될 수 있다.
디바이스(605)의 구성요소는 그들의 기능을 수행하도록 설계된 회로를 포함할 수 있다. 이것은 다양한 회로 소자, 예를 들어 전도성 라인, 트랜지스터, 커패시터, 인덕터, 저항기, 증폭기, 또는 본 명세서에 설명된 기능을 수행하도록 구성된 다른 능동 또는 수동 소자를 포함할 수 있다. 디바이스(605)는 컴퓨터, 서버, 랩톱 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 모바일 폰, 웨어러블 전자 디바이스, 개인용 전자 디바이스 등일 수 있다. 또는 디바이스(605)는 이러한 디바이스의 일부 또는 양태일 수 있다.
도 7은 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 위한 방법(700)을 도시하는 흐름도를 나타낸다. 방법(700)의 동작은 본 명세서에 설명된 메모리 서브시스템 또는 그의 구성요소에 의해 구현될 수 있다.
705에서, 메모리 서브시스템은 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지 크기에 대응하는 데이터를 수신할 수 있다. 705의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 705의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
710에서, 메모리 서브시스템은 디바이스에서, 데이터와 연관된 메모리 액세스 동작에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시킬 수 있다. 710의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 710의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
715에서, 메모리 서브시스템은 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정할 수 있다. 715의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 715의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
720에서, 메모리 서브시스템은 제1 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신할 수 있다. 720의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 720의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
장치가 설명된다. 일부 실시예에서, 장치는, 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지 크기에 대응하는 데이터를 수신하기 위한 수단, 디바이스에서, 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키기 위한 수단, 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 위한 수단, 및 제1 카운터가 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것에 적어도 부분적으로 기초하여 제1 카운터의 값을 초기값으로 설정하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 호스트 디바이스로부터 기록 커맨드를 수신하기 위한 수단을 포함할 수 있고, 여기서 가상 메모리 뱅크와 연관된 제1 카운터의 값은 기록 커맨드를 수신하는 것에 적어도 부분적으로 기초하여 증분된다.
일부 실시예에서, 장치는 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 전에 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하지 않는지를 결정하기 위한 수단, 및 제1 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 호스트 디바이스로부터 판독 커맨드를 수신하기 위한 수단을 포함할 수 있고, 여기서 가상 메모리 뱅크와 연관된 제1 카운터의 값은 판독 커맨드를 수신하는 것에 적어도 부분적으로 기초하여 증분된다. 일부 실시예에서, 데이터는 판독 커맨드에 적어도 부분적으로 기초하여 가상 메모리 뱅크에서 수신되고, 데이터는 판독 커맨드에 적어도 부분적으로 기초하여 가상 메모리 뱅크로부터 버퍼로 전달된다.
일부 실시예에서, 장치는 가상 메모리 뱅크가 데이터를 수신하는 것에 적어도 부분적으로 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시키기 위한 수단, 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 위한 수단; 및 제2 카운터가 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 전에 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하지 않는지를 결정하기 위한 수단, 및 제2 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하기 위한 수단을 포함할 수 있다.
도 8은 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 위한 방법(800)을 도시하는 흐름도를 나타낸다. 방법(800)의 동작은 도 2를 참조하여 설명된 메모리 서브시스템에 의해 구현될 수 있다.
805에서, 메모리 서브시스템은 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지 크기에 대응하는 데이터를 수신할 수 있다. 805의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 805의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
810에서, 메모리 서브시스템은 디바이스에서, 데이터와 연관된 메모리 액세스 동작에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시킬 수 있다. 810의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 810의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
815에서, 메모리 서브시스템은 가상 메모리 뱅크가 데이터를 수신하는 것에 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시킬 수 있다. 815의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 815의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
820에서, 메모리 서브시스템은 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정할 수 있다. 820의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 820의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
825에서, 메모리 서브시스템은 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정할 수 있다. 825의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 825의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
830에서, 메모리 서브시스템은 제1 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신할 수 있다. 830의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 830의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
835에서, 메모리 서브시스템은 제2 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신할 수 있다. 835의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 835의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
일부 경우에, 방법은 또한 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지 크기에 대응하는 데이터를 수신하는 것을 포함할 수 있다. 일부 경우에, 방법은 제2 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하는 것을 포함할 수 있다. 다른 경우에, 방법은 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하는 것을 포함할 수 있다.
일부 실시예에서, 방법은 제1 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신하는 것을 포함할 수 있다. 다른 경우에, 방법은 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것에 기초하여 제1 카운터의 값을 초기값으로 설정하는 것을 포함할 수 있다. 추가적으로 또는 대안적으로, 방법은 호스트 디바이스로부터 기록 커맨드를 수신하는 것을 포함할 수 있고, 여기서 가상 메모리 뱅크와 연관된 제1 카운터의 값은 기록 커맨드를 수신하는 것에 기초하여 증분된다. 일부 경우에, 방법은 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 전에 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하지 않는지를 결정하는 것을 포함할 수 있다.
일부 실시예에서, 방법은 제1 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하는 것을 포함할 수 있다. 다른 실시예에서, 방법은 디바이스에서, 데이터와 연관된 메모리 액세스 동작에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키는 것을 포함할 수 있다. 추가적으로 또는 대안적으로, 데이터는 판독 커맨드에 기초하여 가상 메모리 뱅크에서 수신될 수 있고, 데이터는 판독 커맨드에 기초하여 가상 메모리 뱅크로부터 버퍼로 전달될 수 있다. 일부 경우에, 가상 메모리 뱅크와 버퍼는 동일 칩 상에 배치될 수 있다.
다른 경우에, 방법은 가상 메모리 뱅크가 데이터를 수신하는 것에 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시키는 것을 포함할 수 있다. 일부 경우에, 방법은 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하는 것을 포함할 수 있다. 추가적으로 또는 대안적으로, 방법은 제2 카운터가 임계값을 충족하는 것에 기초하여 디바이스의 버퍼와 가상 메모리 뱅크 사이에서 데이터를 통신하는 것을 포함할 수 있다. 일부 경우에, 방법은 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 전에 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하지 않는지를 결정하는 것을 포함할 수 있다. 방법은 또한 호스트 디바이스로부터 판독 커맨드를 수신하는 것을 포함할 수 있고, 여기서 가상 메모리 뱅크와 연관된 제1 카운터의 값은 판독 커맨드를 수신하는 것에 기초하여 증분될 수 있다.
도 9는 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 위한 방법(900)을 도시하는 흐름도를 나타낸다. 방법(900)의 동작은 도 2를 참조하여 설명된 메모리 서브시스템 또는 그의 구성요소에 의해 구현될 수 있다.
905에서, 메모리 서브시스템은 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지에 대응하는 데이터를 수신할 수 있다. 905의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 905의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
910에서, 메모리 서브시스템은 데이터의 특성에 기초하여 디바이스의 버퍼 또는 디바이스의 메모리 어레이에 데이터를 전달할 것인지 여부를 결정할 수 있다. 910의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 910의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
915에서, 메모리 서브시스템은 데이터의 특성에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 또는 디바이스의 메모리 어레이 사이에서 데이터를 통신할 수 있다. 915의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 915의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
장치가 설명된다. 일부 실시예에서, 장치는, 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지에 대응하는 데이터를 수신하기 위한 수단, 데이터의 특성에 적어도 부분적으로 기초하여 디바이스의 버퍼 또는 디바이스의 메모리 어레이에 데이터를 전달할 것인지 여부를 결정하기 위한 수단, 및 데이터의 특성에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 또는 디바이스의 메모리 어레이 사이에서 데이터를 통신하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 데이터와 연관된 메모리 액세스 동작의 수량을 결정하기 위한 수단을 포함할 수 있고, 여기서 데이터의 특성은 메모리 액세스 동작의 수량에 적어도 부분적으로 기초하며, 데이터는 이전 메모리 액세스 동작의 수량이 임계값을 초과하는 것에 적어도 부분적으로 기초하여 버퍼에 전달된다.
일부 실시예에서, 장치는 데이터가 SoC(system on a chip) 또는 프로세서에서 버퍼링되는지를 결정하기 위한 수단을 포함할 수 있고, 여기서 데이터의 특성은 데이터가 SoC 또는 프로세서에서 버퍼링되는 것에 적어도 부분적으로 기초하며, 데이터는 데이터가 SoC 또는 프로세서에서 버퍼링되는 것으로 결정하는 것에 적어도 부분적으로 기초하여 디바이스의 메모리 어레이에 전달된다.
일부 실시예에서, 장치는 데이터와 연관된 적어도 하나의 애플리케이션을 결정하기 위한 수단을 포함할 수 있고, 여기서 데이터의 특성은 데이터와 연관된 애플리케이션에 적어도 부분적으로 기초하며, 데이터는 특성에 적어도 부분적으로 기초하여 버퍼에 전달된다. 일부 실시예에서, 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하는 것은 가상 메모리 뱅크로부터 디바이스의 메인 메모리로 데이터를 전달하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 데이터의 특성이 SoC(system on a chip) 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형을 포함한다는 표시를 SoC 또는 프로세서로부터 수신하기 위한 수단을 포함할 수 있고, 여기서 데이터는 특성에 적어도 부분적으로 기초하여 버퍼에 전달된다.
일부 실시예에서, 장치는 데이터의 특성을 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 조정하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 위한 수단, 제1 카운터가 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크에서 개방된 메모리 어레이의 페이지를 폐쇄하기 위한 수단, 및 페이지를 폐쇄하는 것에 부분적으로 기초하여 데이터를 버퍼에 전달하기 위한 수단을 포함할 수 있다.
도 10은 본 개시의 실시예에 따른 메모리 버퍼 관리 및 바이패스를 위한 방법(1000)을 도시하는 흐름도를 나타낸다. 방법(1000)의 동작은 도 2를 참조하여 설명된 메모리 서브시스템에 의해 구현될 수 있다.
1005에서, 메모리 서브시스템은 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지에 대응하는 데이터를 수신할 수 있다. 1005의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 1005의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
1010에서, 메모리 서브시스템은 데이터의 특성에 기초하여 디바이스의 버퍼 또는 디바이스의 메모리 어레이에 데이터를 전달할 것인지 여부를 결정할 수 있다. 1010의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 1010의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
1015에서, 메모리 서브시스템은 데이터와 연관된 메모리 액세스 동작의 수량을 결정할 수 있고, 여기서 데이터의 특성은 메모리 액세스 동작의 수량에 기초하며, 데이터는 이전 메모리 액세스 동작의 수량이 임계값을 초과하는 것에 기초하여 버퍼에 전달된다. 1015의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 1015의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
1020에서, 메모리 서브시스템은 데이터가 SoC(system on a chip) 또는 프로세서에서 버퍼링되는지를 결정할 수 있고, 여기서 데이터의 특성은 데이터가 SoC 또는 프로세서에서 버퍼링되는 것에 기초하며, 데이터는 데이터가 SoC 또는 프로세서에서 버퍼링되는 것으로 결정하는 것에 기초하여 디바이스의 메모리 어레이에 전달된다. 1020의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 1020의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
1025에서, 메모리 서브시스템은 데이터와 연관된 적어도 하나의 애플리케이션을 결정할 수 있고, 여기서 데이터의 특성은 데이터와 연관된 애플리케이션에 기초하며, 데이터는 특성에 기초하여 버퍼에 전달된다. 1025의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 1025의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
1030에서, 메모리 서브시스템은 데이터의 특성이 SoC(system on a chip) 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형을 포함한다는 표시를 SoC 또는 프로세서로부터 수신할 수 있으며, 여기서 데이터는 특성에 기초하여 버퍼에 전달된다. 1030의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 1030의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
1040에서, 메모리 서브시스템은 데이터의 특성에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 또는 디바이스의 메모리 어레이 사이에서 데이터를 통신할 수 있다. 1040의 동작은 도 3, 도 4a 및 도 4b를 참조하여 설명된 방법에 따라 수행될 수 있다. 특정 실시예에서, 1040의 동작의 양태는 도 5를 참조하여 설명된 메모리 컨트롤러(505)의 하나 이상의 구성요소에 의해 수행될 수 있다.
일부 경우에, 방법은 디바이스의 가상 메모리 뱅크에서, 디바이스의 메모리 어레이의 페이지에 대응하는 데이터를 수신하는 것을 포함할 수 있다. 다른 경우에, 방법은 페이지를 폐쇄하는 것에 기초하여 데이터를 버퍼에 전달하는 것을 포함할 수 있다. 일부 실시예에서, 방법은 데이터의 특성에 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 또는 디바이스의 메모리 어레이 사이에서 데이터를 통신하는 것을 포함할 수 있다. 추가적으로 또는 대안적으로, 방법은 데이터와 연관된 메모리 액세스 동작의 수량을 결정하는 것을 포함할 수 있고, 여기서 데이터의 특성은 메모리 액세스 동작의 수량에 기초하며, 데이터는 이전 메모리 액세스 동작의 수량이 임계값을 초과하는 것에 기초하여 버퍼에 전달된다.
일부 경우에, 방법은 데이터가 SoC(system on a chip) 또는 프로세서에서 버퍼링되는지를 결정하는 것을 포함할 수 있고, 여기서 데이터의 특성은 데이터가 SoC 또는 프로세서에서 버퍼링되는 것에 기초하며, 데이터는 데이터가 SoC 또는 프로세서에서 버퍼링되는 것으로 결정하는 것에 기초하여 디바이스의 메모리 어레이에 전달된다. 다른 경우에, 방법은 데이터와 연관된 적어도 하나의 애플리케이션을 결정하는 것을 포함할 수 있고, 여기서 데이터의 특성은 데이터와 연관된 애플리케이션에 기초하며, 데이터는 특성에 기초하여 버퍼에 전달된다. 추가적으로 또는 대안적으로, 방법은 데이터의 특성에 기초하여 디바이스의 버퍼 또는 디바이스의 메모리 어레이에 데이터를 전달할 것인지 여부를 결정하는 것을 포함할 수 있다.
일부 경우에, 방법은 데이터의 특성이 SoC(system on a chip) 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형을 포함한다는 표시를 SoC 또는 프로세서로부터 수신하는 것을 포함할 수 있고, 여기서 데이터는 특성에 기초하여 버퍼에 전달된다. 일부 실시예에서, 방법은 데이터의 특성을 결정하는 것에 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 조정하는 것을 포함할 수 있다. 다른 경우에, 방법은 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하는 것을 포함할 수 있다. 추가적으로 또는 대안적으로, 방법은 제1 카운터가 임계값을 충족하는 것에 기초하여 가상 메모리 뱅크에서 개방된 메모리 어레이의 페이지를 폐쇄하는 것을 포함할 수 있다. 일부 경우에, 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하는 것은 가상 메모리 뱅크로부터 디바이스의 메인 메모리로 데이터를 전달하는 것을 포함할 수 있다.
전술한 방법은 가능한 구현을 설명하고, 동작 및 단계는 재배치되거나 달리 수정될 수 있으며, 다른 구현이 가능하다는 것에 유의해야 한다. 또한, 2개 이상의 방법으로부터의 실시예가 조합될 수 있다.
장치가 설명된다. 일부 실시예에서, 장치는, 메모리 셀을 포함하고 페이지 크기로 구성되는 메모리 어레이, 메모리 어레이와 결합된 디바이스의 가상 메모리 뱅크, 가상 메모리 뱅크와 결합된 버퍼, 가상 메모리 뱅크와 결합되고 SoC(system on a chip) 또는 프로세서와 인터페이스하도록 구성된 컨트롤러, 메모리 어레이의 페이지 크기에 대응하는 데이터의 판독을 개시하기 위한 수단, 디바이스에서, 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키기 위한 수단, 제1 카운터의 값을 증분시킨 후에 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하기 위한 수단, 및 제1 카운터가 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신하기 위한 수단을 포함할 수 있고, 여기서 가상 메모리 뱅크 및 버퍼는 동일 칩 상에 배치된다.
일부 실시예에서, 장치는 데이터를 수신하는 것에 적어도 부분적으로 기초하여 메모리 어레이와 연관된 제2 카운터의 값의 증분을 개시하기 위한 수단 및 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것에 적어도 부분적으로 기초하여 제1 카운터의 값을 리셋하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 전에 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하지 않는지를 결정하는 것을 개시하기 위한 수단 및 제2 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하기 위한 수단을 포함할 수 있다.
일부 실시예에서, 장치는 데이터의 적어도 하나의 특성을 결정하기 위한 수단을 포함할 수 있고, 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것은 데이터의 적어도 하나의 특성 또는 제1 카운터가 임계값을 충족하는 것, 또는 양쪽 모두에 적어도 부분적으로 기초한다. 일부 실시예에서, 적어도 하나의 특성은 데이터와 연관된 이전 메모리 액세스 동작의 수량, SoC 또는 프로세서에서 버퍼링되는 데이터의 유형, 데이터와 연관된 적어도 하나의 애플리케이션, 또는 SoC 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형, 또는 이들의 조합을 포함한다.
장치가 설명된다. 일부 실시예에서, 장치는, 메모리 셀을 포함하고 페이지 크기로 구성되는 메모리 어레이, 메모리 어레이와 결합되고 SoC(system on a chip) 또는 프로세서와 인터페이스하도록 구성된 제1 컨트롤러, 제1 컨트롤러와 결합된 가상 메모리 뱅크 - 가상 메모리 뱅크는 메모리 어레이로부터 페이지 크기를 갖는 데이터를 수신하고 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키도록 구성됨 -; 및 가상 메모리 뱅크와 결합되고 제1 카운터의 값에 적어도 부분적으로 기초하여 가상 메모리 뱅크로부터 데이터를 수신하도록 구성된 버퍼를 포함할 수 있다.
일부 실시예에서, SoC 또는 프로세서는 커맨드를 제1 컨트롤러에 전달하도록 구성되며, 여기서 가상 메모리 뱅크는 커맨드에 적어도 부분적으로 기초하여 데이터를 수신하도록 구성된다.
일부 실시예에서, 메모리 어레이는 가상 메모리 뱅크가 데이터를 수신하는 것에 적어도 부분적으로 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시키도록 구성되며, 여기서 버퍼는 추가로 제2 카운터의 값에 적어도 부분적으로 기초하여 가상 메모리 뱅크로부터 데이터를 수신하도록 구성된다.
장치가 설명된다. 일부 실시예에서, 장치는, 메모리 셀을 포함하고 페이지 크기로 구성되는 메모리 어레이, 메모리 어레이와 결합된 디바이스의 가상 메모리 뱅크, 가상 메모리 뱅크와 결합된 버퍼; 및 가상 메모리 뱅크와 결합되고 SoC(system on a chip) 또는 프로세서와 인터페이스하도록 구성된 컨트롤러를 포함할 수 있다. 일부 실시예에서, 컨트롤러는, 메모리 어레이의 페이지 크기에 대응하는 데이터의 판독을 개시하는 것, 디바이스에서, 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증가시키는 것, 제1 카운터의 값을 증분시킨 후에 가상 메모리 뱅크와 연관된 제1 카운터의 값이 임계값을 충족하는지를 결정하는 것, 및 제1 카운터가 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 디바이스의 버퍼 사이에서 데이터를 통신하는 것을 수행하도록 동작 가능할 수 있고, 여기서 가상 메모리 뱅크와 버퍼는 동일 칩 상에 배치된다.
일부 실시예에서, 컨트롤러는 데이터를 수신하는 것에 적어도 부분적으로 기초하여 메모리 어레이와 연관된 제2 카운터의 값의 증분을 개시하는 것, 및 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것에 적어도 부분적으로 기초하여 제1 카운터의 값을 리셋하는 것을 수행하도록 동작 가능할 수 있다.
일부 실시예에서, 컨트롤러는 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하는지를 결정하기 전에 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하지 않는지를 결정하는 것을 개시하는 것, 및 제2 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하는 것을 수행하도록 동작 가능할 수 있다.
일부 실시예에서, 컨트롤러는 데이터의 적어도 하나의 특성을 결정하도록 동작 가능할 수 있고, 여기서 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것은 데이터의 적어도 하나의 특성 또는 제1 카운터가 임계값을 충족하는 것, 또는 양쪽 모두에 적어도 부분적으로 기초한다. 일부 실시예에서, 적어도 하나의 특성은 데이터와 연관된 이전 메모리 액세스 동작의 수량, SoC 또는 프로세서에서 버퍼링되는 데이터의 유형, 데이터와 연관된 적어도 하나의 애플리케이션, 또는 SoC 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형, 또는 이들의 조합을 포함한다.
장치가 설명된다. 일부 실시예에서, 장치는 제1 메모리 페이지 크기에 따라 구성된 메모리 어레이, 메모리 어레이와 결합된 가상 메모리 뱅크, 가상 메모리 뱅크와 결합된 버퍼, 및 메모리 어레이 및 가상 메모리와 결합되고 호스트와 인터페이스하기 위한 컨트롤러를 포함할 수 있다. 일부 실시예에서, 컨트롤러는 메모리 어레이의 제1 메모리 페이지 크기에 대응하는 데이터를 수신하기 위한 메모리 인터페이스 구성요소, 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 연관된 카운터의 값을 증분시키기 위한 카운터 관리 구성요소, 및 카운터의 값이 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하기 위한 데이터 관리 구성요소를 포함할 수 있다.
일부 실시예에서, 컨트롤러는 데이터 관리 구성요소가 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하기 전에 가상 메모리 뱅크와 연관된 카운터의 값이 임계값을 충족하는지를 결정하기 위한 액세스 관리 구성요소를 포함할 수 있다. 일부 실시예에서, 액세스 관리 구성요소는 가상 메모리 뱅크와 연관된 카운터의 값이 임계값을 충족하지 않는지를 결정하도록 구성될 수 있다. 일부 실시예에서, 데이터 관리 구성요소는 액세스 관리 구성요소가 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하도록 구성될 수 있다.
일부 실시예에서, 카운터 관리 구성요소는 메모리 인터페이스 구성요소가 데이터를 수신하는 것에 적어도 부분적으로 기초하여 메모리 어레이와 연관된 제2 카운터의 값을 증분시키도록 구성될 수 있고, 여기서 데이터 관리 구성요소는 제2카운터가 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하도록 구성된다. 일부 실시예에서, 액세스 관리 구성요소는 메모리 어레이와 연관된 제2 카운터의 값이 임계값을 충족하지 않는지를 결정하도록 구성될 수 있고, 여기서 데이터 관리 구성요소는 카운터 관리 구성요소가 제2 카운터의 값이 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 메모리 어레이 사이에서 데이터를 통신하도록 구성된다.
일부 실시예에서, 카운터 관리 구성요소는 데이터 관리 구성요소 가상 메모리 뱅크와 버퍼 사이에서 데이터를 통신하는 것에 적어도 부분적으로 기초하여 카운터의 값을 초기값으로 설정하도록 구성될 수 있다. 일부 실시예에서, 메모리 인터페이스 구성요소는 호스트 디바이스로부터 판독 커맨드를 수신하도록 구성될 수 있고, 카운터 관리 구성요소는 메모리 인터페이스 구성요소가 판독 커맨드를 수신하는 것에 기초하여 카운터의 값을 증분시키도록 구성된다.
장치가 설명된다. 일부 실시예에서, 장치는 메모리 서브시스템을 포함할 수 있다. 일부 실시예에서, 메모리 서브시스템은 제1 페이지 크기를 갖는 제1 데이터를 저장하기 위한 메모리 어레이, 메모리 어레이와 결합되고 메모리 액세스 동작 동안 제1 데이터를 수신하기 위한 가상 메모리 뱅크 - 가상 메모리 뱅크는 가상 메모리 뱅크가 제1 데이터를 수신하는 것에 적어도 부분적으로 기초하여 카운트를 증분시키기 위한 포화 카운터를 포함함 -, 및 가상 메모리 뱅크와 결합되고 임계값을 충족하는 포화 카운터의 카운트에 적어도 부분적으로 기초하여 제1 데이터를 가상 메모리 뱅크로부터 버퍼로 전송하기 위한 컨트롤러를 포함할 수 있다.
일부 실시예에서, 장치는 메모리 서브시스템과 결합된 SoC(system on a chip) 또는 프로세서를 포함할 수 있고, SoC 또는 프로세서는 컨트롤러에 액세스 커맨드를 전달하고, 여기서 컨트롤러는 액세스 커맨드를 수신하는 것에 적어도 부분적으로 기초하여 포화 카운터의 카운트를 증분시키도록 구성된다. 일부 실시예에서, 컨트롤러는 메모리 서브시스템과 결합된 SoC(system on a chip) 또는 프로세서로부터 판독 커맨드를 수신하도록 구성될 수 있고, 여기서 가상 메모리 뱅크는 컨트롤러가 판독 커맨드를 수신하는 것에 적어도 부분적으로 기초하여 제1 데이터를 수신하도록 구성된다.
일부 실시예에서, 컨트롤러는 임계값을 충족하는 포화 카운터의 카운트에 적어도 부분적으로 기초하여 제1 데이터와 연관된 메모리 어레이의 페이지를 폐쇄하도록 구성될 수 있다. 일부 실시예에서, 가상 메모리 뱅크는 가상 메모리 뱅크가 제1 데이터를 수신할 때 제2 카운트를 증분시키도록 구성된 제2 포화 카운터를 포함할 수 있다. 일부 실시예에서, 컨트롤러는 포화 카운터의 카운트가 임계값을 충족하기 전에 임계값을 충족하지 않는 제2 포화 카운터의 제2 카운트에 적어도 부분적으로 기초하여 가상 메모리 뱅크로부터 메모리 어레이로 제1 데이터를 전송하도록 구성될 수 있다.
장치가 설명된다. 일부 실시예에서, 장치는 페이지 크기를 가지며 메모리 셀을 포함하는 메모리 어레이, 메모리 어레이와 결합된 가상 메모리 뱅크, 버퍼, 및 가상 메모리 뱅크 및 버퍼와 결합된 컨트롤러를 포함할 수 있고, 컨트롤러는 SoC(system on a chip) 또는 프로세서와 인터페이스한다. 일부 실시예에서, 컨트롤러는, 메모리 어레이의 페이지에 대응하는 데이터를 수신하고, 데이터의 특성에 적어도 부분적으로 기초하여 데이터를 버퍼 또는 메모리 어레이에 전달할 것인지 여부를 결정하고, 데이터의 특성에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 버퍼 또는 메모리 어레이 사이에서 데이터를 통신하도록 동작 가능할 수 있다.
일부 실시예에서, 컨트롤러는 데이터와 연관된 이전 메모리 액세스 동작의 수량을 결정하도록 동작 가능할 수 있고, 여기서 데이터의 특성은 이전 메모리 액세스 동작의 수량에 적어도 부분적으로 기초하며, 데이터는 이전 메모리 액세스 동작의 수량이 임계값을 충족하는 것에 적어도 부분적으로 기초하여 버퍼에 전달된다. 일부 실시예에서, 컨트롤러는 데이터가 SoC 또는 프로세서에서 버퍼링되는지를 결정하도록 동작 가능할 수 있고, 여기서 데이터의 특성은 데이터가 SoC 또는 프로세서에서 버퍼링되는 것에 적어도 부분적으로 기초하며, 데이터는 데이터가 SoC 또는 프로세서에서 버퍼링되는 것으로 결정하는 것에 적어도 부분적으로 기초하여 메모리 어레이에 전달된다.
일부 실시예에서, 컨트롤러는 데이터와 연관된 적어도 하나의 애플리케이션을 결정하도록 동작 가능할 수 있고, 여기서 데이터의 특성은 데이터와 연관된 적어도 하나의 애플리케이션에 적어도 부분적으로 기초하며, 데이터는 특성에 적어도 부분적으로 기초하여 버퍼에 전달된다. 일부 실시예에서, 컨트롤러는 데이터의 특성이 SoC 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형을 포함한다는 표시를 SoC 또는 프로세서로부터 수신하도록 동작 가능할 수 있고, 여기서 데이터는 특성에 적어도 부분적으로 기초하여 버퍼에 전달된다. 일부 실시예에서, 컨트롤러는, 데이터의 특성을 결정하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크와 연관된 카운터의 값을 조정하고, 가상 메모리 뱅크와 연관된 카운터의 값이 임계값을 충족하는지를 결정하고, 카운터가 임계값을 충족하는 것에 적어도 부분적으로 기초하여 가상 메모리 뱅크에서 개방된 메모리 어레이의 페이지를 폐쇄하고, 페이지를 폐쇄하는 것에 적어도 부분적으로 기초하여 데이터를 버퍼에 전달하도록 동작 가능할 수 있다.
본 명세서에 설명된 정보 및 신호는 다양한 기술 및 기법 중 임의의 것을 사용하여 표현될 수 있다. 예를 들어, 상기 설명 전반에 걸쳐 언급될 수 있는 데이터, 명령어, 커맨드, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자파, 자기장 또는 자기 입자, 광학장 또는 광학 입자, 또는 이들의 임의의 조합으로 표현될 수 있다. 일부 도면은 단일의 신호로서 신호를 도시할 수 있으며; 그러나, 당업자는 신호가 신호의 버스를 나타낼 수 있으며, 버스가 다양한 비트 폭을 가질 수 있음을 이해할 것이다.
용어 "전자 통신" 및 "결합되는"은 구성요소들 간의 전자 흐름을 지원하는 구성요소들 간의 관계를 지칭할 수 있다. 이것은 구성요소들 간의 직접 연결을 포함할 수 있거나 중간 구성요소들을 포함할 수 있다. 전자 통신 또는 서로 결합된 구성요소는 (예를 들어, 통전된 회로에서) 전자 또는 신호를 능동적으로 교환할 수 있거나 (예를 들어, 통전 해제된 회로에서) 전자 또는 신호를 능동적으로 교환하지 않을 수 있지만, 회로가 통전될 때에 전자 또는 신호를 교환하도록 구성되고 동작 가능할 수 있다. 예로서, 스위치(예를 들어, 트랜지스터)를 통해 물리적으로 연결된 2개의 구성요소는 전자 통신하거나 또는 스위치의 상태(즉, 개방 또는 폐쇄)에 관계없이 결합될 수 있다.
본 명세서에 사용된 바와 같이, 용어 "실질적으로"는 변형된 특성(예를 들어, 실질적으로 용어에 의해 변형된 동사 또는 형용사)이 절대적일 필요는 없지만 특성의 이점을 달성하기에 충분히 가깝다는 것을 의미한다.
시스템(100)을 포함한, 본 명세서에 설명된 디바이스는 실리콘, 게르마늄, 실리콘-게르마늄 합금, 갈륨 비소, 질화 갈륨 등과 같은 반도체 기판 상에 형성될 수 있다. 일부 경우에, 기판은 반도체 웨이퍼이다. 다른 경우에, 기판은 SOG(silicon-on-glass) 또는 SOP(silicon-on-sapphire)와 같은 SOI(silicon-on-insulator) 기판, 또는 다른 기판 상의 반도체 재료의 에피택셜 층일 수 있다. 기판, 또는 기판의 서브-영역의 전도성은 인, 붕소, 또는 비소를 포함하지만 이에 한정되지 않는 다양한 화학종을 사용하는 도핑을 통해 제어될 수 있다. 도핑은 기판의 초기 형성 또는 성장 동안, 이온 주입에 의해, 또는 임의의 다른 도핑 수단에 의해 수행될 수 있다.
본 명세서에 설명된 트랜지스터 또는 트랜지스터들은 전계 효과 트랜지스터(FET)를 나타낼 수 있고, 소스, 드레인, 및 게이트를 포함하는 3개의 단자 디바이스를 포함한다. 단자는 전도성 재료, 예를 들어 금속을 통해 다른 전자 소자에 연결될 수 있다. 소스 및 드레인은 전도성일 수 있고, 고농도로 도핑된(heavily-doped), 예를 들어, 축퇴(degenerate) 반도체 영역을 포함할 수 있다. 소스 및 드레인은 저농도로 도핑된(lightly-doped) 반도체 영역 또는 채널에 의해 분리될 수 있다. 채널이 n형인(즉, 다수의 캐리어가 전자인) 경우, FET는 n형 FET라고 지칭될 수 있다. 채널이 p형인(즉, 다수의 캐리어가 정공인) 경우, FET는 p형 FET라고 지칭될 수 있다. 채널은 절연 게이트 산화물에 의해 캡핑될 수 있다. 채널 전도율은 게이트에 전압을 인가함으로써 제어될 수 있다. 예를 들어, 양전압 또는 음전압을 각각 n형 FET 또는 p형 FET에 인가하면 채널이 전도성으로 될 수 있다. 트랜지스터는 트랜지스터의 임계 전압 이상의 전압이 트랜지스터 게이트에 인가될 때에 "온(on)" 또는 "활성화"될 수 있다. 트랜지스터는 트랜지스터의 임계 전압 미만의 전압이 트랜지스터 게이트에 인가될 때에 "오프(off)" 또는 "비활성화"될 수 있다.
첨부된 도면과 관련하여 본 명세서에 제시된 설명은 예시적인 구성을 기술하며, 구현될 수 있거나 청구항의 범위 내에 있는 모든 예를 나타내지는 않는다. 본 명세서에 사용된 용어 "예시적인"은 "일례, 사례, 또는 예시로서 제공되는"을 의미하며, "바람직한" 또는 "다른 예보다 유리한" 것은 아니다. 상세한 설명은 설명된 기술의 이해를 제공할 목적으로 구체적인 상세를 포함한다. 그러나, 이들 기술은 이러한 구체적인 상세 없이도 실시될 수 있다. 일부 예에서, 주지된 구조 및 디바이스는 설명된 실시예의 개념을 모호하게 하는 것을 피하기 위해 블록도 형태로 나타나 있다.
첨부된 도면에서, 유사한 구성요소 또는 특징은 동일한 참조 라벨을 가질 수 있다. 또한, 동일한 유형의 다양한 구성요소는 유사한 구성요소 간을 구별하는 대시 및 제2 라벨로 참조 라벨을 따름으로써 구별될 수 있다. 본 명세서에서 제1 참조 라벨만이 사용되는 경우, 설명은 제2 참조 라벨에 상관없이 동일한 제1 참조 라벨을 갖는 유사한 구성요소 중 어느 하나에 적용 가능하다.
본 명세서에 설명된 정보 및 신호는 다양한 기술 및 기법 중 임의의 것을 사용하여 표현될 수 있다. 예를 들어, 상기 설명 전반에 걸쳐 언급될 수 있는 데이터, 명령어, 커맨드, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자파, 자기장 또는 자기 입자, 광학장 또는 광학 입자, 또는 이들의 임의의 조합으로 표현될 수 있다.
본 명세서의 개시와 관련하여 설명된 다양한 예시적인 블록 및 모듈은 범용 프로세서, DSP, ASIC, FPGA 또는 다른 프로그램 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성요소, 또는 본 명세서에 설명된 기능을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로 프로세서는 임의의 종래 프로세서, 컨트롤러, 마이크로컨트롤러, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스의 조합(예를 들어, DSP(digital signal processor)와 마이크로프로세서의 조합, 다수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성)으로서 구현될 수 있다.
본 명세서에 설명된 기능은 하드웨어, 프로세서에 의해 실행되는 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 프로세서에 의해 실행되는 소프트웨어로 구현되는 경우, 기능은 컴퓨터 판독 가능 매체 상에 하나 이상의 명령어 또는 코드로서 저장되거나 이를 통해 전송될 수 있다. 다른 실시예 및 구현은 본 개시 및 첨부된 청구항의 범위 내에 있다. 예를 들어, 소프트웨어의 속성으로 인해, 전술한 기능은 프로세서에 의해 실행되는 소프트웨어, 하드웨어, 펌웨어, 하드와이어링, 또는 이들 중 임의의 조합을 사용하여 구현될 수 있다. 기능을 구현하는 특징은 또한 기능의 일부가 상이한 물리적 위치에서 구현되도록 분산되는 것을 포함한, 다양한 위치에 물리적으로 배치될 수 있다. 또한, 청구범위를 포함하여 본 명세서에 사용된 바와 같이, 항목의 리스트(예를 들어, "적어도 하나" 또는 "하나 이상"과 같은 문구로 시작되는 항목의 리스트)에서 사용되는 "또는"은, 예를 들어 A, B, 또는 C 중 적어도 하나의 리스트가 A 또는 B 또는 C 또는 AB 또는 AC 또는 BC 또는 ABC(즉, A 및 B 및 C)를 의미하도록 포괄적인 리스트를 나타낸다. 또한, 본 명세서에 사용된 바와 같이, 문구 "에 기초하여"는 폐쇄된 조건 세트에 대한 언급으로서 해석되지 않아야 한다. 예를 들어, "조건 A에 기초하여"로서 설명되는 예시적인 단계는 본 개시의 범위를 벗어나지 않고 조건 A 및 조건 B 양쪽 모두에 기초할 수 있다. 다시 말해, 본 명세서에 사용된 바와 같이, 문구 "에 기초하여"는 문구 "에 기초하여"와 동일한 방식으로 해석되어야 한다.
컴퓨터 판독 가능 매체는 비일시적 컴퓨터 저장 매체 및 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체 모두를 포함한다. 비일시적 저장 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 한정이 아닌 예로서, 비일시적 컴퓨터 판독 가능 매체는 RAM, ROM, EEPROM(electrically erasable programmable read only memory), 콤팩트 디스크(CD) ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 반송 또는 저장하는 데 사용될 수 있고 범용 또는 특수 목적 컴퓨터, 또는 범용 또는 특수 목적 프로세서에 의해 액세스될 수 있는 임의의 다른 비일시적 매체를 포함할 수 있다. 또한, 임의의 연결이 컴퓨터 판독 가능 매체라고 적절히 지칭된다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스트 페어(twisted pair), 디지털 가입자 회선(DSL), 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술을 사용하여 웹 사이트, 서버, 또는 다른 원격 소스로부터 전송되는 경우에는, 동축 케이블, 광섬유 케이블, 트위스트 페어, 디지털 가입자 회선(DSL), 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 본 명세서에 사용된 바와 같이, 디스크(disk 및 disc)는 CD, 레이저 디스크, 광 디스크, 디지털 다목적 디스크(DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크(disk)는 일반적으로 자기적으로 데이터를 재생하는 반면, 디스크(disc)는 레이저로 광학적으로 데이터를 재생한다. 상기의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함된다.
본 명세서의 설명은 당업자가 본 개시를 구성 또는 사용할 수 있도록 제공된다. 본 개시에 대한 다양한 수정이 당업자에게는 쉽게 명백할 것이며, 본 명세서에 정의된 일반적인 원리는 본 개시의 범위를 벗어나지 않고 다른 변형에 적용될 수 있다. 따라서, 본 개시는 본 명세서에 설명된 예 및 설계에 한정되지 않고, 본 명세서에 개시된 원리 및 신규한 특징과 일치하는 가장 넓은 범위를 부여받아야 한다.

Claims (25)

  1. 방법으로서,
    디바이스의 가상 메모리 뱅크에서, 상기 디바이스의 메모리 어레이의 페이지 크기에 대응하는 데이터를 수신하는 단계;
    상기 디바이스에서, 상기 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키는 단계;
    상기 가상 메모리 뱅크와 연관된 상기 제1 카운터의 값이 임계값을 충족하는지를 결정하는 단계; 및
    상기 제1 카운터가 상기 임계값을 충족하는 것에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 상기 디바이스의 버퍼 사이에서 상기 데이터를 통신하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 가상 메모리 뱅크와 상기 버퍼 사이에서 상기 데이터를 통신하는 것에 적어도 부분적으로 기초하여 상기 제1 카운터의 값을 초기값으로 설정하는 단계를 추가로 포함하는, 방법.
  3. 제1항에 있어서,
    호스트 디바이스로부터 기록 커맨드를 수신하는 단계를 추가로 포함하며, 상기 가상 메모리 뱅크와 연관된 상기 제1 카운터의 값은 상기 기록 커맨드를 수신하는 것에 적어도 부분적으로 기초하여 증분되는, 방법.
  4. 제1항에 있어서,
    상기 가상 메모리 뱅크와 연관된 상기 제1 카운터의 값이 상기 임계값을 충족하는지를 결정하기 전에 상기 가상 메모리 뱅크와 연관된 상기 제1 카운터의 값이 상기 임계값을 충족하지 않는지를 결정하는 단계; 및
    상기 제1 카운터의 값이 상기 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 상기 메모리 어레이 사이에서 데이터를 통신하는 단계를 추가로 포함하는, 방법.
  5. 제1항에 있어서,
    호스트 디바이스로부터 판독 커맨드를 수신하는 단계를 추가로 포함하며, 상기 가상 메모리 뱅크와 연관된 상기 제1 카운터의 값은 상기 판독 커맨드를 수신하는 것에 적어도 부분적으로 기초하여 증분되는, 방법.
  6. 제5항에 있어서, 상기 데이터는 상기 판독 커맨드에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크에서 수신되고, 상기 데이터는 상기 판독 커맨드에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크로부터 상기 버퍼로 전달되는, 방법.
  7. 제1항에 있어서,
    상기 가상 메모리 뱅크가 상기 데이터를 수신하는 것에 적어도 부분적으로 기초하여 상기 메모리 어레이와 연관된 제2 카운터의 값을 증분시키는 단계;
    상기 메모리 어레이와 연관된 상기 제2 카운터의 값이 상기 임계값을 충족하는지를 결정하는 단계; 및
    상기 제2 카운터가 상기 임계값을 충족하는 것에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 상기 디바이스의 상기 버퍼 사이에서 상기 데이터를 통신하는 단계를 추가로 포함하는, 방법.
  8. 제7항에 있어서,
    상기 메모리 어레이와 연관된 상기 제2 카운터의 값이 상기 임계값을 충족하는지를 결정하기 전에 상기 메모리 어레이와 연관된 상기 제2 카운터의 값이 상기 임계값을 충족하지 않는지를 결정하는 단계; 및
    상기 제2 카운터의 값이 상기 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 상기 메모리 어레이 사이에서 상기 데이터를 통신하는 단계를 추가로 포함하는, 방법.
  9. 장치로서,
    메모리 셀을 포함하고 페이지 크기로 구성되는 메모리 어레이;
    상기 메모리 어레이와 결합되고 SoC(system on a chip) 또는 프로세서와 인터페이스하도록 구성된 제1 컨트롤러;
    상기 제1 컨트롤러와 결합된 가상 메모리 뱅크로서, 상기 메모리 어레이로부터 상기 페이지 크기를 갖는 데이터를 수신하고 상기 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키도록 구성된 상기 가상 메모리 뱅크; 및
    상기 가상 메모리 뱅크와 결합된 버퍼를 포함하며, 상기 버퍼는 상기 제1 카운터의 값에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크로부터 상기 데이터를 수신하도록 구성되는, 장치.
  10. 제9항에 있어서, 상기 SoC 또는 상기 프로세서는 커맨드를 상기 제1 컨트롤러에 전달하도록 구성되며, 상기 가상 메모리 뱅크는 상기 커맨드에 적어도 부분적으로 기초하여 상기 데이터를 수신하도록 구성되는, 장치.
  11. 제10항에 있어서, 상기 메모리 어레이는 상기 데이터를 수신하는 상기 가상 메모리 뱅크에 적어도 부분적으로 기초하여 상기 메모리 어레이와 연관된 제2 카운터의 값을 증분시키도록 구성되며, 상기 버퍼는 추가로 상기 제2 카운터의 값에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크로부터 상기 데이터를 수신하도록 구성되는, 장치.
  12. 제9항에 있어서, 상기 SoC 또는 프로세서는 호스트 컨트롤러를 포함하는, 장치.
  13. 방법으로서,
    디바이스의 가상 메모리 뱅크에서, 상기 디바이스의 메모리 어레이의 페이지에 대응하는 데이터를 수신하는 단계;
    상기 데이터의 특성에 적어도 부분적으로 기초하여 상기 데이터를 상기 디바이스의 버퍼 또는 상기 디바이스의 상기 메모리 어레이로 전달할 것인지 여부를 결정하는 단계; 및
    상기 데이터의 상기 특성에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 상기 디바이스의 상기 버퍼 또는 상기 디바이스의 상기 메모리 어레이 사이에서 상기 데이터를 통신하는 단계를 포함하는, 방법.
  14. 제13항에 있어서,
    상기 데이터와 연관된 메모리 액세스 동작의 수량을 결정하는 단계를 추가로 포함하며, 상기 데이터의 상기 특성은 상기 메모리 액세스 동작의 수량에 적어도 부분적으로 기초하고, 상기 데이터는 이전 메모리 액세스 동작의 수량이 임계값을 초과하는 것에 적어도 부분적으로 기초하여 상기 버퍼에 전달되는, 방법.
  15. 제13항에 있어서,
    상기 데이터가 SoC(system on a chip) 또는 프로세서에서 버퍼링되는지를 결정하는 단계를 추가로 포함하며, 상기 데이터의 상기 특성은 상기 데이터가 상기 SoC 또는 프로세서에서 버퍼링되는 것에 적어도 부분적으로 기초하며, 상기 데이터는 상기 데이터가 SoC 또는 프로세서에서 버퍼링되는 것으로 결정하는 것에 적어도 부분적으로 기초하여 상기 디바이스의 상기 메모리 어레이에 전달되는, 방법.
  16. 제13항에 있어서,
    상기 데이터와 연관된 적어도 하나의 애플리케이션을 결정하는 단계를 추가로 포함하며, 상기 데이터의 상기 특성은 상기 데이터와 연관된 적어도 하나의 애플리케이션에 적어도 부분적으로 기초하고, 상기 데이터는 상기 특성에 적어도 부분적으로 기초하여 상기 버퍼에 전달되는, 방법.
  17. 제13항에 있어서, 상기 가상 메모리 뱅크와 상기 메모리 어레이 사이에서 상기 데이터를 통신하는 단계는,
    상기 데이터를 상기 가상 메모리 뱅크로부터 상기 디바이스의 메인 메모리로 전달하는 단계를 포함하는, 방법.
  18. 제13항에 있어서,
    상기 데이터의 특성이 SoC(system on a chip) 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형을 포함한다는 표시를 상기 SoC 또는 프로세서로부터 수신하는 단계를 추가로 포함하며, 상기 데이터는 상기 특성에 적어도 부분적으로 기초하여 버퍼에 전달되는, 방법.
  19. 제13항에 있어서,
    상기 데이터의 상기 특성을 결정하는 것에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 연관된 제1 카운터의 값을 조정하는 단계를 추가로 포함하는, 방법.
  20. 제19항에 있어서,
    상기 가상 메모리 뱅크와 연관된 상기 제1 카운터의 값이 임계값을 충족하는지를 결정하는 단계;
    상기 제1 카운터가 상기 임계값을 충족하는 것에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크에서 개방된 메모리 어레이의 상기 페이지를 폐쇄하는 단계; 및
    상기 페이지를 폐쇄하는 것에 적어도 부분적으로 기초하여 상기 데이터를 상기 버퍼에 전달하는 단계를 추가로 포함하는, 방법.
  21. 장치로서,
    메모리 셀을 포함하고 페이지 크기로 구성되는 메모리 어레이;
    상기 메모리 어레이와 결합된 디바이스의 가상 메모리 뱅크;
    상기 가상 메모리 뱅크와 결합된 버퍼; 및
    상기 가상 메모리 뱅크와 결합되고 SoC(system on a chip) 또는 프로세서와 인터페이스하도록 구성된 컨트롤러를 포함하며, 상기 컨트롤러는,
    상기 메모리 어레이의 상기 페이지 크기에 대응하는 데이터의 판독을 개시하는 것;
    상기 디바이스에서, 상기 데이터와 연관된 메모리 액세스 동작에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 연관된 제1 카운터의 값을 증분시키는 것;
    상기 제1 카운터의 값을 증분시킨 후에 상기 가상 메모리 뱅크와 연관된 상기 제1 카운터의 값이 임계값을 충족하는지를 결정하는 것; 및
    상기 제1 카운터가 상기 임계값을 충족하는 것에 적어도 부분적으로 기초하여 상기 디바이스의 상기 가상 메모리 뱅크와 상기 버퍼 사이에서 데이터를 통신하는 것을 수행하도록 동작 가능하며, 상기 가상 메모리 뱅크 및 상기 버퍼는 동일 칩 상에 배치되는, 장치.
  22. 제21항에 있어서, 상기 컨트롤러는 추가로,
    상기 데이터를 수신하는 것에 적어도 부분적으로 기초하여 상기 메모리 어레이와 연관된 제2 카운터의 값의 증분을 개시하는 것; 및
    상기 가상 메모리 뱅크와 상기 버퍼 사이에서 데이터를 통신하는 것에 적어도 부분적으로 기초하여 상기 제1 카운터의 값을 리셋하는 것을 수행하도록 동작 가능한, 장치.
  23. 제22항에 있어서, 상기 컨트롤러는 추가로,
    상기 메모리 어레이와 연관된 상기 제2 카운터의 값이 상기 임계값을 충족하는지를 결정하기 전에 상기 메모리 어레이와 연관된 상기 제2 카운터의 값이 상기 임계값을 충족하지 않는지를 결정하는 것을 개시하는 것; 및
    상기 제2 카운터의 값이 상기 임계값을 충족하지 않는 것으로 결정하는 것에 적어도 부분적으로 기초하여 상기 가상 메모리 뱅크와 상기 메모리 어레이 사이에서 상기 데이터를 통신하는 것을 수행하도록 동작 가능한, 장치.
  24. 제21항에 있어서, 상기 컨트롤러는 추가로,
    상기 데이터의 적어도 하나의 특성을 결정하도록 동작 가능하며, 상기 가상 메모리 뱅크와 상기 버퍼 사이에서 상기 데이터를 통신하는 것은 상기 데이터의 상기 적어도 하나의 특성 또는 상기 제1 카운터가 상기 임계값을 충족하는 것에 적어도 부분적으로 기초하는, 장치.
  25. 제24항에 있어서, 상기 적어도 하나의 특성은 상기 데이터와 연관된 이전 메모리 액세스 동작의 수량, 상기 SoC 또는 프로세서에서 버퍼링되는 데이터의 유형, 상기 데이터와 연관된 적어도 하나의 애플리케이션, 또는 상기 SoC 또는 프로세서에 의해 버퍼링되는 것으로 표시된 데이터 유형, 또는 이들의 조합을 포함하는, 장치.
KR1020207034583A 2018-05-09 2019-04-24 메모리 버퍼 관리 및 바이패스 KR20200141092A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/975,607 2018-05-09
US15/975,607 US10754578B2 (en) 2018-05-09 2018-05-09 Memory buffer management and bypass
US16/113,854 2018-08-27
US16/113,854 US10649687B2 (en) 2018-05-09 2018-08-27 Memory buffer management and bypass
PCT/US2019/028843 WO2019217074A1 (en) 2018-05-09 2019-04-24 Memory buffer management and bypass

Publications (1)

Publication Number Publication Date
KR20200141092A true KR20200141092A (ko) 2020-12-17

Family

ID=68463592

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207034583A KR20200141092A (ko) 2018-05-09 2019-04-24 메모리 버퍼 관리 및 바이패스

Country Status (5)

Country Link
US (3) US10754578B2 (ko)
EP (1) EP3791257A4 (ko)
KR (1) KR20200141092A (ko)
CN (1) CN112106018A (ko)
WO (1) WO2019217074A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10483978B1 (en) * 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
JP2021033848A (ja) * 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US10910048B1 (en) 2020-01-16 2021-02-02 Micron Technology, Inc. Extended memory communication
US20210397363A1 (en) * 2020-06-17 2021-12-23 Micron Technology, Inc. Operational monitoring for memory devices
US11315623B2 (en) * 2020-06-30 2022-04-26 Micron Technology, Inc. Techniques for saturating a host interface

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7383391B2 (en) 2005-05-18 2008-06-03 International Business Machines Corporation Prefetch mechanism based on page table attributes
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
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
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
JP5607175B2 (ja) * 2010-03-08 2014-10-15 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. データ記憶装置及び方法
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
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
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
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

Also Published As

Publication number Publication date
US10649687B2 (en) 2020-05-12
US11340830B2 (en) 2022-05-24
EP3791257A1 (en) 2021-03-17
US20190347035A1 (en) 2019-11-14
CN112106018A (zh) 2020-12-18
US20190347034A1 (en) 2019-11-14
WO2019217074A1 (en) 2019-11-14
US20200348883A1 (en) 2020-11-05
EP3791257A4 (en) 2022-01-19
US10754578B2 (en) 2020-08-25

Similar Documents

Publication Publication Date Title
US11340830B2 (en) Memory buffer management and bypass
CN112272816B (zh) 存储器系统或子系统中的预取信令
US11355169B2 (en) Indicating latency associated with a memory request in a system
US11822477B2 (en) Prefetch management for memory
CN115309675A (zh) 用于多存储器系统的服务质量信息
CN114639419A (zh) 用于部分写入的技术改进
CN113838502A (zh) 高速缓存元数据管理
CN115114197B (zh) 多存储器装置中的战略性电力模式转变
US11995011B2 (en) Efficient turnaround policy for a bus
CN114783478A (zh) 机会数据移动
CN115249496A (zh) 多存储器装置中的电力模式控制
CN114063904A (zh) 使用元数据的事务管理

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application