KR20200108362A - 다중 계층 메모리 시스템에서의 예측 데이터 오케스트레이션 - Google Patents

다중 계층 메모리 시스템에서의 예측 데이터 오케스트레이션 Download PDF

Info

Publication number
KR20200108362A
KR20200108362A KR1020207025383A KR20207025383A KR20200108362A KR 20200108362 A KR20200108362 A KR 20200108362A KR 1020207025383 A KR1020207025383 A KR 1020207025383A KR 20207025383 A KR20207025383 A KR 20207025383A KR 20200108362 A KR20200108362 A KR 20200108362A
Authority
KR
South Korea
Prior art keywords
memory
data
access requests
controller
movement
Prior art date
Application number
KR1020207025383A
Other languages
English (en)
Other versions
KR102457071B1 (ko
Inventor
사미르 미탈
아니르반 레이
구르프리트 아난드
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20200108362A publication Critical patent/KR20200108362A/ko
Application granted granted Critical
Publication of KR102457071B1 publication Critical patent/KR102457071B1/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/068Hybrid storage device
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching

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)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

상이한 계층들의 메모리 컴포넌트들을 갖는 컴퓨팅 시스템. 상기 컴퓨팅 시스템은 프로세싱 장치와 메모리 컴포넌트들 사이에 동작 가능하게 결합된 컨트롤러로서, 프로세싱 장치로부터, 메모리 컴포넌트들에서의 계층들에 걸쳐 제1 데이터 이동을 야기하는 제1 데이터 액세스 요청들을 수신하고; 제1 데이터 이동 후 제1 데이터 액세스 요청들을 서비스하고; 기계 학습을 통해 트레이닝된 예측 모델에 프로세싱 장치로부터 수신된 데이터 사용 정보를 적용함으로써, 메모리 컴포넌트들에서의 계층들에 걸쳐 제2 데이터 이동을 예측하고; 제2 데이터 액세스 요청들을 수신하기 전에 제2 데이터 이동을 수행하되, 제2 데이터 이동은 제2 데이터 액세스 요청들에 의해 야기되는 계층들에 걸쳐 제3 데이터 이동을 감소시키는, 상기 컨트롤러를 더 포함한다.

Description

다중 계층 메모리 시스템에서의 예측 데이터 오케스트레이션
관련 출원들
본 출원은 2018년 8월 3일자로 출원된, "Predictive Data Orchestration in Multi-Tier Memory Systems"이라는 명칭의 미국 특허 출원 일련 번호 제16/054,819호, 및 2018년 2월 5일자로 출원된, "Predictive Data Orchestration in Two Tier Memory Systems"이라는 명칭의 미국 임시 특허 출원 일련 번호 제62/626,347호의 출원일들의 이점을 주장하며, 이들 출원들의 전체 내용들은 본원에 참조로서 통합된다.
본 출원은 2018년 7월 11일자로 출원된, "Predictive Paging to Accelerate Memory Access"이라는 명칭의 미국 특허 출원 일련 번호 제16/032,331호, 2018년 7월 13일자로 출원된, "Isolated Performance Domains in a Memory System"이라는 명칭의 미국 특허 출원 일련 번호 제16/035,469호, 및 2018년 8월 3일자로 출원된, "Memory Virtualization for Accessing Heterogeneous Memory Components"이라는 명칭의 미국 특허 출원 일련 번호 제16/054,719호에 관한 것으로, 이들 출원들의 전체 개시 내용들은 본원에 참조로서 통합된다.
기술 분야
본원에 개시된 적어도 일부 실시예들은 일반적으로 메모리 시스템에 관한 것으로, 보다 구체적으로는, 이에 제한되는 것은 아니나 다중 계층 메모리 시스템들에서의 예측 데이터 오케스트레이션(predictive data orchestration)에 관한 것이다.
메모리 서브 시스템은 DIMM(dual in-line memory Module), SO-DIMM(small outline DIMM), 또는 NVDIMM(non-volatile dual in-line memory module)과 같은 메모리 모듈일 수 있다. 메모리 서브 시스템은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD)와 같은 저장 시스템일 수 있다. 메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 컴포넌트들을 포함할 수 있다. 메모리 컴포넌트들은, 예를 들어, 비휘발성 메모리 컴포넌트들 및 휘발성 메모리 컴포넌트들일 수 있다. 메모리 컴포넌트들의 예들은 메모리 집적 회로들을 포함한다. 일부 메모리 집적 회로들은 휘발성이며 저장된 데이터를 유지하기 위해 전력을 필요로 한다. 일부 메모리 집적 회로들은 비휘발성이며 전력이 공급되지 않을 때에도 저장된 데이터를 유지할 수 있다. 비휘발성 메모리의 예들은 플래시 메모리, 읽기 전용 메모리(ROM), 프로그램 가능 읽기 전용 메모리(PROM), 소거 가능한 프로그램 가능 읽기 전용 메모리(EPROM) 및 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM) 메모리 등을 포함한다. 휘발성 메모리의 예들은 동적 랜덤 액세스 메모리(DRAM) 및 정적 랜덤 액세스 메모리(SRAM)를 포함한다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 사용하여 메모리 컴포넌트들에 데이터를 저장하고 메모리 컴포넌트들로부터 데이터를 검색할 수 있다.
예를 들어, 컴퓨터는 호스트 시스템 및 호스트 시스템에 부착된 하나 이상의 메모리 서브 시스템들을 포함할 수 있다. 호스트 시스템은 데이터 및 인스트럭션들을 저장 및/또는 검색하기 위해 하나 이상의 메모리 서브 시스템들과 통신하는 중앙 처리 유닛(CPU)을 가질 수 있다. 컴퓨터에 대한 인스트럭션들은 운영 체제들, 장치 드라이버들 및 어플리케이션 프로그램들을 포함할 수 있다. 운영 체제는 컴퓨터의 리소스들을 관리하고, 그 리소스들의 메모리 할당 및 시간 공유와 같은 어플리케이션 프로그램들에 공통적인 서비스들을 제공한다. 장치 드라이버는 컴퓨터 내의 특정 유형의 장치들을 동작시키거나 제어하며; 운영 체제는 장치 드라이버를 사용하여 장치들의 유형에 의해 제공되는 리소스들 및/또는 서비스들을 제공한다. 컴퓨터 시스템의 중앙 처리 유닛(CPU)은 운영 체제와 장치 드라이버들을 실행하여 어플리케이션 프로그램들에 서비스들 및/또는 리소스들을 제공할 수 있다. 중앙 처리 유닛(CPU)은 서비스들 및/또는 리소스들을 사용하는 어플리케이션 프로그램을 실행할 수 있다. 예를 들어, 컴퓨터 시스템들의 어플리케이션들의 유형을 구현하는 어플리케이션 프로그램은 데이터를 메모리 서브 시스템의 메모리 컴포넌트들에 저장하고 메모리 컴포넌트들로부터 데이터를 검색하도록 중앙 처리 유닛(CPU)에 지시할 수 있다.
컴퓨터 시스템의 운영 체제는 어플리케이션 프로그램이 가상 메모리 어드레스를 사용하여 컴퓨터 시스템의 하나 이상의 메모리 서브 시스템들의 메모리 컴포넌트들에 데이터를 저장하거나 이로부터 데이터를 검색하게 할 수 있다. 운영 체제는 가상 어드레스들을 컴퓨터 시스템의 중앙 처리 유닛(CPU)에 연결된 하나 이상의 메모리 서브 시스템들의 물리적 어드레스들에 맵핑한다. 운영 체제는 메모리 서브 시스템의 물리적 어드레스를 사용하여 가상 어드레스들에 지정된 메모리 액세스들을 구현한다.
가상 어드레스 공간은 페이지들로 분할될 수 있다. 가상 메모리 페이지는 메모리 서브 시스템의 물리적 메모리 페이지에 맵핑될 수 있다. 운영 체제는 페이징 기술을 사용하여 메모리 모듈의 메모리의 페이지를 통해 저장 장치의 메모리의 페이지에 액세스할 수 있다. 서로 다른 시기에, 메모리 모듈의 동일한 메모리 페이지는 저장 장치 또는 컴퓨터 시스템의 다른 저장 장치의 다른 메모리 페이지에 액세스하기 위해 프록시로 사용될 수 있다.
컴퓨터 시스템은 가상 머신들을 생성하거나 프로비저닝하는 하이퍼바이저(또는 가상 머신 모니터)를 포함할 수 있다. 가상 머신은 컴퓨터 시스템에서 사용할 수 있는 리소스들과 서비스들을 사용하여 가상으로 구현되는 컴퓨팅 장치이다. 하이퍼바이저는 마치 가상 머신의 컴포넌트들이 전용 물리적 컴포넌트들인 것처럼 운영 체제에 대한 가상 머신을 나타낸다. 게스트 운영 체제는 컴퓨터 시스템에서 실행되는 호스트 운영 체제와 유사한 방식으로, 가상 머신에서 사용할 수 있는 리소스들과 서비스들을 관리하기 위해 가상 머신에서 실행된다. 하이퍼바이저는 다수의 가상 머신들이 컴퓨터 시스템의 리소스들을 공유할 수 있도록 하며, 가상 머신들이 실질적으로 서로 독립적으로 컴퓨터에서 동작할 수 있도록 한다.
실시예들은 예로서 도시되며, 유사한 참조 번호들이 유사한 요소들을 나타내는 첨부 도면들의 도면들에 제한되지 않는다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 갖는 예시적인 컴퓨팅 시스템을 예시한다.
도 2는 본원에 개시된 적어도 일부 실시예들에 따른 데이터 위치들을 최적화하기 위해 상이한 계층의 메모리 및 데이터 오케스트레이터를 갖는 컴퓨팅 시스템을 도시한다.
도 3은 데이터 오케스트레이터를 갖는 시스템을 도시한다.
도 4는 데이터 오케스트레이터의 구현예를 예시한다.
도 5는 예측 데이터 오케스트레이션의 방법을 도시한다.
도 6은 본 개시의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 적어도 일부 측면들은 상이한 성능 레벨들의 다중 계층들의 메모리들을 갖는 컴퓨터 시스템에서 메모리 액세스를 가속화할 수 있는 예측 데이터 이동 기술에 관한 것이다. 메모리 서브 시스템은 이하에서 "메모리 디바이스"로도 지칭된다. 메모리 서브 시스템의 예로는 메모리 버스를 통해 중앙 처리 유닛(CPU)에 연결되는 메모리 모듈이 있다. 메모리 모듈들의 예들은 DIMM(Dual In-line Memory Module), SO-DIMM(Small Outline DIMM), NVDIMM(Non-Volatile Dual In-line Memory Module) 등을 포함한다. 메모리 서브 시스템의 다른 예로는 주변 장치 인터커넥트(예를 들어, 입력/출력 버스, 저장 영역 네트워크)를 통해 중앙 처리 유닛(CPU)에 연결되는 저장 장치가 있다. 저장 장치들의 예들은 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브 및 하드 디스크 드라이브(HDD)를 포함한다. 일부 실시예들에서, 메모리 서브 시스템은 메모리 기능들 및 저장 기능들 둘 다를 제공하는 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 컴포넌트들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있으며 메모리 서브 시스템에 검색될 데이터를 요청할 수 있다.
종래 시스템은 더 빠른 메모리들을 통해 더 느린 메모리들이 액세스되는 캐시 구조를 가질 수 있다. 프로세서가 현재 더 느린 메모리에 있는 데이터에 액세스하는 경우, 데이터는 더 느린 메모리에 있는 데이터의 프록시로서 더 빠른 메모리에 로딩된다. 이후, 프로세서는 성능 향상을 위해 더 빠른 메모리에 있는 데이터의 프록시/캐시에서 동작한다. 더 빠른 메모리는 일반적으로 더 느린 메모리보다 더 작은 용량을 갖는다. 따라서, 더 느린 메모리에 있는 데이터의 일부만이 더 빠른 메모리에 동시에 캐싱될 수 있다. 프로세서에 의해 액세스된 아이템이 현재 더 빠른 메모리에 없을 때 캐시 미스(cache miss)가 발생된다. 프로세서에 의해 액세스된 아이템이 현재 더 빠른 메모리에 있을 때 캐시 히트(cache hit)가 발생된다. 캐시 히트를 초래하는 액세스 백분율이 캐시 히트율이다. 캐시 히트율을 개선하면 컴퓨팅 시스템의 운영 성능을 향상시킬 수 있다. 그러나, 캐시 히트율을 향상시키기 위해 캐시 정책을 설계하는 것은 어려운 일이다.
본 개시의 적어도 일부 측면은 기계 학습 기술을 사용하여 상이한 계층들의 메모리들에 걸쳐 예측 데이터 이동을 수행함으로써 상기 및 다른 결함들을 해결한다. 다른 계층들의 메모리들은 상이한 데이터 액세스 비용을 가질 수 있다. 예를 들어, 컴퓨팅 시스템의 운영 성능을 향상시키기 위해, 자주 사용되는 데이터는 더 빠른 메모리에 배치될 수 있으며; 덜 자주 사용되는 데이터는 더 느린 메모리에 배치될 수 있다. 더 빠른 메모리는 더 느린 메모리를 위한 캐시 메모리로서 선택적으로 구성될 수 있다. 일부 경우, 더 느린 메모리의 적어도 일부는 캐시로서 더 빠른 메모리를 거치지 않고 직접 액세스될 수 있다. 데이터 사용 정보는 워크로드 계획 및 이에 따른 상이한 계층들의 메모리들에 걸친 데이터 이동을 예측하기 위해, 기계 학습 기술을 사용하여 트레이닝된 예측 모델에 적용될 수 있다. 예를 들어, 데이터 사용 정보는 데이터를 사용하는 어플리케이션들 또는 프로그램들, 데이터 평가들이 이루어지는 사용자 계정들, 데이터에 액세스하는 가상 머신들, 데이터가 속하는 오브젝트들, 어플리케이션들에 구성된 데이터 블록들 대 오브젝트들 간 맵핑, 오브젝트들 간의 관계들 등과 같은, 데이터 액세스들 및 데이터 액세스들과 관련된 속성들의 이력을 포함할 수 있다. 데이터 사용 정보에 따라 예측된 데이터 이동은 컴퓨팅 시스템의 운영 성능을 향상시키기 위해 선제적으로 수행될 수 있다. 예측 모델은 데이터 사용 정보와 연관된 데이터 액세스들에 의해 발생된 이력 데이터 사용 정보 및 이력 데이터 이동을 사용하여 초기에 오프라인으로 학습될 수 있다. 트레이닝은 이력 데이터 사용 정보를 예측 모델에 적용함으로써 생성된 이력 데이터 이동과 예측 사이의 차이를 최소화한다. 이후, 예측 모델은 실시간 데이터 사용 정보를 사용하여 실시간 예측에 사용될 수 있다. 예측된 데이터 이동을 수행하는 것은 데이터 액세스 요청들에 응답하여 데이터를 이동할 필요성을 감소시킬 수 있다. 실시간 데이터 액세스 요청들에 의해 발생된 데이터 이동 및/또는 예측된 데이터 이동이 계층들에 걸쳐 데이터를 이동할 필요성을 감소시키는지 여부의 표시들은 원하는 실시간 예측 결과들을 식별하는 데 사용될 수 있다. 원하는 결과들은 예측 모델의 지속적인 개선 및 적응을 위해 강화 기계 학습 기술을 사용하여 예측 모델을 더 트레이닝시킬 수 있다. 예측 모델은 컴퓨팅 시스템의 실시간 사용 시 현재 워크로드에 동적으로 적응될 수 있다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 갖는 예시적인 컴퓨팅 시스템(100)을 예시한다. 메모리 서브 시스템(110)은 메모리 컴포넌트들(109A 내지 109N)과 같은 매체를 포함할 수 있다. 메모리 컴포넌트들(109A 내지 109N)은 휘발성 메모리 컴포넌트들, 비휘발성 메모리 컴포넌트들 또는 이들의 조합일 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 메모리 모듈이다. 메모리 모듈의 예들로는 DIMM, NVDIMM 및 NVDIMM-P을 포함한다. 일부 실시예들에서, 메모리 서브 시스템은 저장 시스템이다. 저장 시스템의 예로는 SSD가 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 컴퓨팅 환경은 메모리 서브 시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 데이터를 메모리 서브 시스템(110)에 기록하고 메모리 서브 시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 장치(120)는 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치, 또는 메모리와 프로세싱 장치를 포함하는 이러한 컴퓨팅 장치와 같은 컴퓨팅 장치일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브 시스템(110)로부터 데이터를 판독하거나 이에 데이터를 기록할 수 있도록 메모리 서브 시스템(110)을 포함하거나 이에 결합될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 본원에 사용된 바와 같이, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다. 물리적 호스트 인터페이스의 예들은, 이에 제한되는 것은 아니나, SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 광섬유 채널, SAS(Serial Attached SCSI), DDR(double data rate) 메모리 버스 등을 포함한다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합되는 경우 NVMe(NVM Express) 인터페이스를 추가로 이용하여 메모리 컴포넌트들(109A 내지 109N)에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 예로서 메모리 서브 시스템(110)을 예시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다수의 개별 통신 연결들 및/또는 통신 연결들의 조합을 통해 다수의 메모리 서브 시스템들에 액세스할 수 있다.
호스트 시스템(120)은 프로세싱 장치(118) 및 컨트롤러(116)를 포함한다. 호스트 시스템(120)의 프로세싱 장치(118)는 예를 들어, 마이크로프로세서, 중앙 처리 유닛(CPU), 프로세서의 프로세싱 코어, 실행 유닛 등일 수 있다. 일부 경우, 컨트롤러(116)는 메모리 컨트롤러, 메모리 관리 유닛 및/또는 이니시에이터(nitiator)로 지칭될 수 있다. 일 예에서, 컨트롤러(116)는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에 결합된 버스를 통한 통신들을 제어한다.
일반적으로, 컨트롤러(116)는 메모리 컴포넌트들(109A 내지 109N)에 대한 원하는 액세스를 위해 명령들 또는 요청들을 메모리 서브 시스템(110)에 전송할 수 있다. 컨트롤러(116)는 메모리 서브 시스템(110)과 통신하기 위한 인터페이스 회로부를 더 포함할 수 있다. 인터페이스 회로부는 메모리 서브 시스템(110)으로부터 수신된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
호스트 시스템(120)의 컨트롤러(116)는 메모리 서브 시스템(110)의 컨트롤러(115)와 통신하여 메모리 컴포넌트들(109A 내지 109N)에서의 데이터 판독, 데이터 기록 또는 소거와 같은 동작들 및 다른 이러한 동작들을 수행할 수 있다. 일부 경우, 컨트롤러(116)는 프로세싱 장치(118)의 동일한 패키지 내에 통합된다. 다른 경우, 컨트롤러(116)는 프로세싱 장치(118)의 패키지로부터 분리된다. 컨트롤러(116) 및/또는 프로세싱 장치(118)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리, 캐시 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(116) 및/또는 프로세싱 장치(118)는 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(field programmable gate array; FPGA), 어플리케이션별 집적 회로(application specific integrated circuit; ASIC) 등), 또는 다른 적절한 프로세서일 수 있다.
메모리 컴포넌트들(109A 내지 109N)은 상이한 유형의 비휘발성 메모리 컴포넌트들 및/또는 휘발성 메모리 컴포넌트들의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 컴포넌트들의 예는 NAND(negative-and)형 플래시 메모리를 포함한다. 메모리 컴포넌트들(109A 내지 109N) 각각은 단일 레벨 셀(single level cells; SLC)들 또는 다중 레벨 셀(multi-level cells; MLC)들(예를 들어, 트리플 레벨 셀(triple level cells; TLC)들 또는 쿼드 레벨 셀(quad-level cells; QLC)들)과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 실시예들에서, 특정 메모리 컴포넌트는 메모리 셀들의 SLC 부분 및 MLC 부분 둘 다를 포함할 수 있다. 메모리 셀 각각은 호스트 시스템(120)에 의해 사용된 하나 이상의 데이터 비트들(예를 들어, 데이터 블록들)을 저장할 수 있다. NAND형 플래시 메모리와 같은 비휘발성 메모리 컴포넌트들이 설명되어 있지만, 메모리 컴포넌트들(109A 내지 109N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 실시예들에서, 메모리 컴포넌트들(109A 내지 109N)은, 이에 제한되는 것은 아니나, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 위상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 스핀 전송 토크(STT)-MRAM, 강유전성 랜덤 액세스 메모리(FeTRAM), 강유전성 RAM (FeRAM), 전도성 브리징 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), OxRAM(Oxide-based RRAM), NOR(Negative-or) 플래시 메모리, 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM), 나노 와이어 기반 비휘발성 메모리, 멤리스터 기술을 통합한 메모리 및 비휘발성 메모리 셀들의 교차점 어레이일 수 있다. 비휘발성 메모리의 교차점 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께 벌크 저항의 변화에 기초하여 비트 저장(bit storage)을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 교차점 비휘발성 메모리는 제자리에 기록(write in-place) 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 게다가, 메모리 컴포넌트들(109A 내지 109N)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 컴포넌트의 단위를 지칭할 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다.
메모리 서브 시스템(110)의 컨트롤러(115)는 메모리 컴포넌트들(109A 내지 109N)과 통신하여 데이터 판독, 데이터 기록, 또는 메모리 컴포넌트들(109A 내지 109N)에서의 데이터 소거와 같은 동작들 및 다른 이러한 동작들(예를 들어, 컨트롤러(116)에 의해 명령 버스 상에서 스케줄링된 명령들에 응답하는)을 수행할 수 있다. 컨트롤러(115)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(115)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 어플리케이션별 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다. 컨트롤러(115)는 로컬 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세싱 장치(117)(프로세서)를 포함할 수 있다. 예시된 예에서, 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들 및 루틴들을 수행하기 위한 인스트럭션들을 저장하도록 구성된 임베디드된 메모리를 포함한다. 일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터, 페치 데이터(fetched data) 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하지 않을 수 있으며, 대신 (예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템으로부터 분리된 프로세서나 컨트롤러에 의해 제공된) 외부 제어에 의존할 수 있다.
일반적으로, 컨트롤러(115)는 호스트 시스템(120)으로부터 명령들 또는 동작들을 수신할 수 있으며, 메모리 컴포넌트들(109A 내지 109N)에 대한 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 인스트럭션들 또는 적절한 명령들로 변환할 수 있다. 컨트롤러(115)는 웨어 레벨링(wear leveling) 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(error-correcting code; ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리 컴포넌트들(109A 내지 109N)과 관련되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 다른 동작들을 담당할 수 있다. 컨트롤러(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 컴포넌트들(109A 내지 109N)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 뿐만 아니라, 호스트 시스템으로부터 수신된 명령들을 메모리 컴포넌트들(109A 내지 109N)에 액세스하기 위한 명령 인스트럭션들로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 컨트롤러(115)로부터 어드레스를 수신하고 메모리 컴포넌트들(109A 내지 109N)에 액세스하기 위해 어드레스를 디코딩할 수 있는 캐시나 버퍼(예를 들어, DRAM) 및 어드레스 회로부(예를 들어, 행 디코더 또는 열 디코더)를 포함할 수 있다.
컴퓨팅 시스템(100)은 더 빠른 메모리(예를 들어, 109A)와 더 느린 메모리(예를 들어, 109N) 사이의 예측 데이터 이동을 수행할 수 있는 메모리 서브 시스템(110)의 데이터 오케스트레이터(113)를 포함한다. 일부 실시예들에서, 메모리 서브 시스템(110)의 컨트롤러(115)는 데이터 오케스트레이터(113)의 적어도 일부를 포함한다. 다른 실시예들에서, 또는 조합에서, 호스트 시스템(120)의 컨트롤러(116) 및/또는 프로세싱 장치(118)는 데이터 오케스트레이터(113)의 적어도 일부를 포함한다. 예를 들어, 컨트롤러(115), 컨트롤러(116) 및/또는 프로세싱 장치(118)는 데이터 오케스트레이터(113)를 구현하는 논리 회로부를 포함할 수 있다. 예를 들어, 호스트 시스템(120)의 컨트롤러(115) 또는 프로세싱 장치(118)(프로세서)는 본원에 설명된 데이터 오케스트레이터(113)의 동작들을 수행하기 위해 메모리에 저장된 인스트럭션들을 실행하도록 구성될 수 있다. 일부 실시예들에서, 데이터 오케스트레이터(113)는 메모리 서브 시스템(110)에 배치된 집적 회로에 구현된다. 다른 실시예들에서, 데이터 오케스트레이터(113)는 호스트 시스템(120)의 운영 체제, 장치 드라이버 또는 어플리케이션의 일부이다.
데이터 오케스트레이터(113)는 상이한 계층들의 메모리들, 더 빠른 메모리(예: 109A) 및 더 느린 메모리(예: 109N)에 걸쳐 데이터 사용 및 이동을 예측할 수 있다. 어플리케이션들은 시퀀스들의 특정 데이터에 액세스할 수 있으며; 특정 오브젝트들이 함께 사용될 수 있다. 따라서, 사용자 계정, 어플리케이션, 가상 시스템에서의 데이터 아이템의 사용은, 오브젝트의 일부로서, 다른 관련 데이터 아이템의 후속 사용의 표시일 수 있다. 관련 데이터 아이템이 액세스되기 전에, 메모리 서브 시스템(110)의 데이터 아이템들의 물리적 저장 위치들을 재정렬하도록 컨트롤러(115)에 지시할 수 있어, 데이터 오케스트레이터(113)는 호스트 시스템(120)의 프로세싱 장치(118)가 관련 데이터 아이템에 액세스하는 시점에, 데이터 아이템이 이미 더 빠른 메모리(예: 109A)에 있도록 한다. 따라서, 컴퓨팅 시스템의 운영 성능이 향상된다. 데이터 오케스트레이터(113)의 예측 모델은 초기에는 이력 데이터 액세스 기록들을 사용하여 오프라인으로 트레이닝된 다음 실시간 데이터 액세스 기록들을 사용하여 실시간 사용으로 지속적으로 트레이닝될 수 있는 인공 신경망을 통해 구현될 수 있다. 데이터 오케스트레이터(113)의 동작들에 관한 추가 세부 사항이 아래에 설명된다.
일 예에서, 중앙 처리 유닛(CPU)은 CPU에 연결된 하나 이상의 메모리 시스템들에 제공된 두 메모리 세트들에 액세스될 수 있다. 예를 들어, 한 메모리 세트는 다른 메모리 세트보다 더 느릴 수 있으며; 중앙 처리 유닛(CPU)은 페이징 기술을 사용하여 더 빠른 메모리 세트를 통해 더 느린 메모리 세트에 액세스하도록 구성될 수 있다. 더 빠른 메모리 세트는 더 느린 메모리 세트의 캐시 메모리로 사용될 수 있다. 예를 들어, 한 메모리 세트는 CPU에 의해 직접 어드레스할 수 없고, CPU에 의해 직접 어드레스할 수 있는 다른 메모리 세트에 결합되며; 중앙 처리 유닛(CPU)은 페이징 기술의 사용과 유사한 방식으로 직접 어드레스할 수 있는 메모리 세트를 통해 직접 어드레스할 수 없는 메모리 세트에 액세스하도록 구성될 수 있다. 직접 액세스될 수 없는 메모리 세트는 직접 평가될 수 없는 메모리 세트의 캐시 메모리로 사용될 수 있다.
더 빠른 메모리가 더 느린 메모리의 캐시로 사용될 때, 더 빠른 메모리에 저장된 데이터는 더 느린 메모리에 대응되는 사본을 갖는다. 더 빠른 메모리가 변경되면, 더 느린 메모리에 대응되는 사본은 쓸모 없게 된다. 더 빠른 메모리의 변경된 콘텐트는 업데이트를 위해 더 느린 메모리로 플러시(flushed)되어야 한다.
대안으로, 더 느린 메모리의 콘텐트는 일부 경우 더 빠른 메모리를 거치지 않고 액세스될 수 있으며; 더 빠른 메모리의 콘텐트는 더 느린 메모리에 대응되는 사본을 가질 수 없다. 더 느린 메모리와 더 빠른 메모리의 콘텐츠 분배는 현재 워크로드의 운영 성능을 최적화하기 위해 동적으로 변경될 수 있다. 이러한 상황에서, 더 빠른 메모리는 여전히 캐시 히트율을 추적하기 위한 캐시로 간주될 수 있다. 예를 들어, 액세스 중인 데이터 아이템이 더 빠른 메모리에서 서비스되는 경우, 캐시 히트가 카운팅되며; 액세스 중인 데이터 아이템이 더 느린 메모리에서 서비스되는 경우, 캐스 미스가 카운팅된다.
일부 경우, 메모리 버추얼라이저(memory virtualizer)는 서로 다른 계층들의 메모리들에 대한 메모리 액세스를 가상화하여 어플리케이션들 및/또는 가상 머신들과 메모리 컴포넌트들(109A 내지 109N)과의 차이를 쉴드(shield)하기 위해 메모리 컴포넌트의 장치 드라이버에서 구현될 수 있다. 메모리 버추얼라이저는 컴퓨팅 시스템의 성능을 최적화하기 위해 서로 다른 계층들의 메모리들에 걸쳐 데이터 저장 위치들을 자동으로 조정한다. 메모리 버추얼라이저들의 일부 세부사항들 및 예들은 2018년 8월 3일자로 출원된, "Memory Virtualization for Accessing Heterogeneous Memory Components"이라는 명칭의 미국 특허 출원 일련 번호 제16/054,719호에서 찾아볼 수 있다.
액세스 중인 데이터 아이템이 더 느린 메모리 세트에 있지만 더 빠른 메모리 세트에 있지 않은 경우, 데이터 아이템은 더 느린 메모리 세트에서 직접 액세스되거나, 더 빠른 메모리 세트에 액세스하기 위해 더 빠른 메모리 세트로 스와핑되거나, 더 빠른 메모리 세트에 캐시될 수 있다. 데이터 아이템에 액세스하는 워크로드가 데이터 오케스트레이터(113)에 의해 예측되는 경우, 데이터 오케스트레이터(113)는 데이터 액세스 전에 데이터 아이템을 더 빠른 메모리 세트로 스와핑하거나 데이터 아이템을 더 빠른 메모리 세트에 캐시하도록 컨트롤러(115)에 지시한다. 데이터 이동이 워크로드 예측에 따라 수행된 후, 데이터 아이템이 액세스될 때 데이터 액세스는 더 빠른 메모리 세트로부터 서비스될 수 있다. 데이터 액세스가 더 빠른 메모리 세트로부터 서비스되기 때문에, 데이터 액세스를 완료하는 시간은 더 느린 메모리 세트로부터 서비스되거나, 서비스를 위해 더 빠른 메모리 세트로 스와핑되거나, 캐싱한 다음 서비스하기 위해 더 느린 메모리 세트로부터 더 빠른 메모리 세트로 데이터를 로딩하는 것보다 더 짧다.
예를 들어, 액세스 중인 가상 메모리의 페이지가 현재 더 느린 메모리 세트에는 있지만 더 빠른 메모리 세트에는 없는 경우, 페이지는 더 느린 메모리 세트에서 페이지를 서비스하기 위해 더 빠른 메모리 세트로부터 할당될 수 있으며; 페이지의 데이터는 더 느린 메모리 세트로부터 페치되고 더 빠른 메모리 세트의 할당된 페이지에 저장되어, 가상 메모리의 페이지의 데이터 액세스가 후속 동작들에서 더 빠른 메모리 세트의 할당된 페이지에 액세스하는 것을 통해 이루어질 수 있도록 한다.
일부 경우, 페이지 스와핑은 더 느린 메모리에서 단순히 요청된 데이터 요소에 액세스하는 것보다 더 오랜 시간이 걸린다. 따라서, 요청된 데이터 요소는 요청자에게 먼저 서비스되며, 페이지 스와핑은 핫 페이지의 데이터 요소들에 대한 후속 액세스 속도를 높이기 위해 수행된다. 따라서, 전반적인 성능은 페이지 스왑이 완료될 때까지 데이터 요소에 대한 요청을 홀딩하는 것보다 더 낫다.
또한, 더 느린 메모리 세트의 페이지들의 사용과 관련된 정보는 페이지들의 사용을 예측하는 자가 학습(self-learning) 예측 엔진을 트레이닝시키는 데 사용될 수 있다. 예를 들어, 감독된 기계 학습 기법은 상기 정보를 사용하여, 예측들과 페이지들의 실제 사용 사이의 에러들을 줄임으로써 더 느린 메모리 세트에서 페이지들의 사용을 예측하기 위한 인공 신경망을 트레이닝시키는데 사용될 수 있다. 인공 신경망의 트레이닝 이후, 예측 엔진은 현재 정보를 사용하여 사용될 다음 페이지들을 예측할 수 있다. 또한, 추가 트레이닝을 위한 예측에 따른 실제 사용으로부터의 트레이닝, 예측 및 피드백은 인공 신경망의 예측 모델을 가장 최근의 메모리 페이지 사용 패턴들에 적응시키기 위해 지속적인 방식으로 수행될 수 있다.
더 느린 메모리 세트의 페이지를 곧 사용할 것이라는 메모리 사용 예측에 응답하여, 데이터 오케스트레이터(113)는 더 느린 메모리 세트에서 더 빠른 메모리 세트로 데이터 페이지를 선제적으로 스왑하거나 캐시하도록 컨트롤러(115)에 지시하여, 처리에 필요한 경우, 데이터의 페이지가 이미 더 빠른 메모리 세트에 있도록 하며, 이 배치는 데이터 페이지의 데이터 액세스 속도를 향상시킨다.
예측의 정확도는 이후의 실제 페이지 사용에 대해 측정될 수 있으며; 예측 및 이후의 실제 페이지 사용은 메모리 페이지들의 가장 최근의 사용 패턴들을 추적하기 위해 인공 신경망을 더 트레이닝시키거나 조정하는 데 사용될 수 있다.
대안으로 또는 조합하여, 기계 학습 기반 예측은 정책 기반 예측 규칙들로 대체되거나 강화될 수 있다. 예를 들어, 주민 코드들을 저장하는 페이지들(예: 하위 어드레스들)은 자주 사용되는 페이지들의 스와핑을 줄이기 위해 가능한 한 더 빠른 메모리 세트에 유지될 수 있다. 예를 들어, 거대한 페이지는 거대한 페이지의 일부인 페이지가 액세스되고 있을 때 더 빠른 메모리 세트에 로딩될 수 있다. 예를 들어, 예측들은 페이지들이 순차적으로 또는 랜덤으로 액세스되는지 여부, 데이터 액세스가 안정적인 상태 모드인지 또는 버스트 모드인지 여부, 및/또는 페이지들(및 크기가 다른 페이지들) 간의 논리적 관계와 같은 표시들에 기초하는, 휴리스틱 규칙들을 적어도 부분적으로 사용하여 이루어질 수 있다.
예측 기술들에 대한 일부 세부사항들 및 예들은 2018년 7월 11일자로 출원된, "Predictive Paging to Accelerate Memory Access"이라는 명칭의 미국 특허 출원 일련 번호 제16/032,331호에서 찾아볼 수 있다.
도 2는 본원에 개시된 적어도 일부 실시예들에 따른 데이터 위치들을 최적화하기 위해 상이한 계층의 메모리 및 데이터 오케스트레이터를 갖는 컴퓨팅 시스템을 도시한다.
도 2의 컴퓨팅 시스템은 호스트 시스템(120), 메모리 버스(203)를 통해 호스트 시스템(120)에 연결된 메모리 모듈(205) 및 인터커넥트(207)를 통해 메모리 모듈(205)에 연결된 저장 장치(209)를 포함한다. 저장 장치(209) 및/또는 메모리 모듈(205)은 도 1에 예시된 메모리 서브 시스템(110)의 예들이다.
호스트 시스템(120)은 하나 이상의 프로세싱 코어들을 갖는 중앙 처리 유닛 또는 마이크로프로세서일 수 있는 프로세싱 장치(118)를 갖는다. 호스트 시스템(120)은 메모리 관리 유닛(213) 및 캐시 메모리(211)를 가질 수 있다. 메모리 관리 유닛(213) 및/또는 캐시 메모리(211)의 적어도 일부는 프로세싱 장치(118)의 동일한 집적 회로 패키지 내에 선택적으로 통합될 수 있다.
도 2에 예시된 메모리 모듈(205)은 여러 유형의 메모리(예를 들어, 221 및 223)를 갖는다. 예를 들어, 타입 A 메모리(221)는 타입 B 메모리(223)보다 더 빠르다.
예를 들어, 메모리 버스(203)는 이중 데이터 레이트 버스일 수 있으며; 인터커넥트(207)는 PCIe(peripheral component interconnect express) 버스, SATA(serial advanced technology attachment) 버스, USB(universal serial bus) 버스 및/또는 저장 영역 네트워크일 수 있다. 메모리 모듈(205)의 타입 B 메모리(223)는 저장 장치(209)의 타입 B 메모리(223)에 액세스하는 것보다 빠른 속도로 액세스될 수 있다.
도 2에 예시된 저장 장치(209)는 여러 유형의 메모리(예를 들어, 223 및 225)를 갖는다. 예를 들어, 메모리 타입 B(223)는 메모리 타입 C(225)보다 빠르다.
일반적으로, 다수의 메모리 모듈들(예: 205)은 메모리 버스(203)에 결합될 수 있으며; 다수의 저장 장치들(예: 209)은 주변 장치 인터커넥트(207)에 결합될 수 있다. 일부 경우, 주변 장치 인터커넥트(207) 및 저장 장치들(예: 209)은 선택적이며 컴퓨팅 시스템에는 없을 수 있다. 다른 경우, 메모리 버스(203) 및 메모리 모듈들(예: 205)은 선택적이며 컴퓨팅 시스템에는 없을 수 있다.
다수의 메모리 모듈들(예: 205)이 메모리 버스(203)에 결합 시 가능한 구성에서, 메모리 모듈들(예: 205) 중 하나는 타입 A 메모리(221)를 가지며; 다른 메모리 모듈들은 별도의 메모리 모듈(예: 205)의 타입 A 메모리(221)보다 낮은 속도로 액세스 가능한 타입 B 메모리(223)를 갖는다.
마찬가지로, 인터커넥트(207)에 다수의 저장 장치들(예: 205)이 결합되었을 시 가능한 구성에서, 저장 장치(예: 209) 중 하나는 타입 B 메모리(223)를 가지며, 저장 장치들 중 다른 하나는 개별 저장 장치(예: 209)의 타입 B 메모리(221)보다 낮은 속도로 액세스할 수 있는 타입 C 메모리(225)를 갖는다.
프로세싱 장치(118) 및/또는 MMU(213)는 페이징 기술 및/또는 메모리 맵 인터페이스를 사용하여 컴퓨터 시스템의 메모리의 다른 일부를 통해 컴퓨터 시스템의 메모리의 일부에 액세스하기 위한 인스트럭션들(예를 들어, 운영 체제 및/또는 하나 이상의 장치 드라이버들)을 통해 구성된다.
예를 들어, 메모리 모듈(205)의 타입 B 메모리(223)는 메모리 모듈(205)(또는 다른 메모리 모듈)의 타입 A 메모리(221)에 액세스될 수 있다.
예를 들어, 저장 장치(예: 209)의 타입 B 메모리(223)는 메모리 모듈(205)의 타입 A 메모리(221) 및/또는 메모리 모듈(205)의 타입 B 메모리(223)를 통해 액세스될 수 있다.
예를 들어, 저장 장치(209)의 타입 C 메모리(225)는 메모리 모듈(205)의 타입 A 메모리(221)를 통해, 메모리 모듈(205)의 타입 B 메모리(223)를 통해 및/또는 저장 장치(209)(또는 다른 저장 장치)의 타입 B 메모리(223)를 통해 액세스될 수 있다.
예를 들어, 일부 경우, 동일한 메모리 모듈(205)(또는 다른 메모리 모듈들)의 타입 A 메모리(221) 및 타입 B 메모리(223)는 프로세싱 장치(118)의 메모리 관리 유닛(213)에 의해 메모리 버스(203)를 통해 직접적으로 그리고 개별적으로 어드레스 가능할 수 있다. 그러나, 타입 B 메모리(223)는 타입 A 메모리(221)보다 느리기 때문에, 타입 A 메모리(221)를 통해 타입 B 메모리(223)에 액세스하는 것이 바람직하다.
다른 경우, 메모리 모듈(205)의 타입 B 메모리(223)는 (예를 들어, 메모리 버스(203)의 어드레스 부분에서의 크기 제한으로 인해) 메모리 모듈(205)의 타입 A 메모리(221)를 어드레싱하는 것을 통해서만 액세스 가능하다.
데이터 오케스트레이터(113)는 특히, 메모리 모듈(205)의 타입 B 메모리(223)가 메모리 버스(203)를 사용하여 직접 어드레스할 수 없을 경우, 메모리 모듈(205) 내의 타입 A 메모리(221)와 타입 B 메모리(223) 사이에서 데이터 전송/이동을 수행하도록 메모리 모듈(205)의 컨트롤러 X(227)에 지시할 수 있다.
또한, 데이터 오케스트레이터(113)는 저장 장치(209)의 컨트롤러 Y(229)와 통신하여 저장 장치(209)의 메모리들(223 내지 225) 사이 및/또는 저장 장치(209)와 메모리 모듈(205) 사이의 데이터 전송/이동을 수행하도록 메모리 모듈(205)의 컨트롤러 X(227)에 지시할 수 있다.
일 변형예에서, 메모리 모듈(205)의 메모리(예: 221 및 223)는 메모리 모듈(205) 내에 개별적으로 동일한 성능을 가질 수 있다. 그러나, 메모리 관리 유닛(213) 및/또는 프로세싱 장치(118)는 메모리(221)를 통해 메모리(223)를 통한 액세스하는 것이 (예를 들어, 메모리 버스(203)의 어드레스 부분의 크기 제한으로 인해) 제한된다. 따라서, 메모리(223)는 프로세싱 장치(118)에 대한 메모리(221)보다 느린 것으로 보인다.
일반적으로, 메모리 서브 시스템들(예: 205 및 209)은 메모리(예를 들어, 221, ..., 223, ..., 225)와 같은 매체를 포함할 수 있다. 메모리(예를 들어, 221, ..., 223, ..., 225)는 휘발성 메모리, 비휘발성 메모리(NVM) 및/또는 이들의 조합을 포함할 수 있다. 일부 실시예들에서, 컴퓨터 시스템은 저장 장치(209)인 적어도 하나의 메모리 서브 시스템을 포함한다. 저장 장치(209)의 예는 솔리드 스테이트 드라이브(SSD)이다. 일부 실시예들에서, 컴퓨터 시스템은 메모리 모듈(205)로서 구성된 하이브리드 메모리/저장 시스템인 적어도 하나의 메모리 서브 시스템을 포함한다. 프로세싱 장치(118)는 메모리 서브 시스템들(예: 205 및 209) 각각에 데이터를 기록하고, 메모리 서브 시스템들(예: 205 및 209)로부터 직접 또는 간접적으로 데이터를 판독할 수 있다.
도 2의 컴퓨팅 시스템은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치 또는 메모리와 프로세싱 장치를 포함하는 이러한 컴퓨팅 장치를 구현하는 데 사용될 수 있다. 프로세싱 장치(118)는 메모리 서브 시스템들(예: 205 및 209)로부터 데이터를 판독하고 이에 데이터를 기록할 수 있다.
프로세싱 장치(118)는 하나 이상의 물리적 인터페이스(예: 203, 207)를 통해 메모리 서브 시스템(예: 205, 209)에 결합될 수 있다.
본원에 사용된 바와 같이, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다.
물리적 호스트 인터페이스의 예들은, 이에 제한되는 것은 아니나, SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 광섬유 채널, SCSI(Fibre Channel, Small Computer System Interface), SAS(Serial Attached SCSI) 등을 포함한다.
물리적 호스트 인터페이스는 프로세싱 장치(118)와 메모리 서브 시스템(예: 209) 사이에서 데이터를 전송하는 데 사용될 수 있다. 컴퓨터 시스템은 메모리 서브 시스템(209)이 PCIe 인터페이스를 통해 주변 장치 인터커넥트(207)와 결합될 때 메모리(예를 들어, 223, ..., 225)에 액세스하기 위해 NVMe(NVM Express) 인터페이스를 추가로 이용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(예: 209)과 프로세싱 장치(118) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
일반적으로, 메모리 서브 시스템(예를 들어, 205 및 209)은 메모리(예를 들어, 221, ..., 223, ..., 225)를 제공하는 메모리 집적 회로들과 같은, 메모리 장치 세트를 연결하는 인쇄 회로 기판을 포함한다. 메모리 서브 시스템(예를 들어, 205 및 209) 상의 메모리(예를 들어, 221, ..., 223, ..., 225)는 상이한 유형의 비휘발성 메모리 장치들 및/또는 휘발성 메모리 장치들의 임의의 조합을 포함할 수 있다.
비휘발성 메모리 장치들의 예는 NAND(negative-and)형 플래시 메모리 또는 NOR(negative-or)형 플래시 메모리를 포함한다. 메모리 집적 회로는 단일 레벨 셀(SLC)들, 다중 레벨 셀(MLC)들, 트리플 레벨 셀(TLC)들, 쿼드 레벨 셀(QLC)들과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 구현예들에서, 특정 메모리 장치는 메모리 셀들의 SLC 부분 및 MLC(또는 TLC 또는 QLC) 부분을 포함할 수 있다. 메모리 셀 각각은 호스트 시스템(120)에 의해 사용된 하나 이상의 데이터 비트들을 저장할 수 있다. NAND형 플래시 메모리와 같은 비휘발성 메모리 장치들이 설명되어 있지만, 메모리 집적 회로들은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 구현예들에서, 메모리(예를 들어, 221, ..., 223, ..., 225)는 이에 제한되는 것은 아니나, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 위상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), NOR(negative-or) 플래시 메모리, 전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM) 및/또는 비휘발성 메모리 셀들의 교차점 어레이를 포함한다. 비휘발성 메모리의 교차점 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 교차점 비휘발성 메모리는 제자리에 기록 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 게다가, 메모리 장치들의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 장치의 단위를 지칭할 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다.
메모리 서브 시스템(예를 들어, 205 또는 209)은 프로세싱 장치(118) 및/또는 메모리 관리 유닛(MMU)(213)으로부터의 요청들, 명령들 또는 인스트럭션들에 응답하여, 메모리(예를 들어, 221, ..., 223, ..., 225)와 통신하여 메모리(예를 들어, 221, ..., 223, ..., 225)에서의 데이터 판독, 데이터 기록 또는 데이터 소거와 같은 동작들 및 다른 이러한 동작들을 수행하는 컨트롤러(예를 들어, 227 또는 229)를 가질 수 있다. 컨트롤러(예를 들어, 227 또는 229)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(예를 들어, 227 또는 229)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 어플리케이션별 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다. 컨트롤러(예를 들어, 227 또는 229)는 로컬 메모리에 저장된 인스트럭션들을 실행하도록 구성된 하나 이상의 프로세서들(프로세싱 장치들)을 포함할 수 있다.
컨트롤러(예를 들어, 227 또는 229)의 로컬 메모리는 메모리 서브 시스템(예를 들어, 205 또는 209)과 프로세싱 장치(118)/MMU(213) 사이의 통신 및 아래에서 더 상세히 설명되는 다른 기능들의 처리를 포함하여, 메모리 서브 시스템(예를 들어, 205 또는 209)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들 및 루틴들을 수행하기 위한 인스트럭션들을 저장하도록 구성된 임베디드된 메모리를 포함할 수 있다. 컨트롤러(예를 들어, 227 또는 229)의 로컬 메모리(219)는 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM) 및/또는 메모리 포인터들, 페치된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다.
도 2의 예시적인 메모리 서브 시스템들(예를 들어, 205 및 209)은 컨트롤러들(예를 들어, 227 및 229)을 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(예를 들어, 205 또는 209)은 컨트롤러(예를 들어, 227 또는 229)를 포함하지 않을 수 있으며, 대신 외부 제어(예를 들어, MMU(213)에 의해 제공되거나, 또는 메모리 서브 시스템(예를 들어, 205 또는 209)으로부터 분리된 프로세서나 컨트롤러에 의해 제공됨)에 의존할 수 있다.
일반적으로, 컨트롤러(예를 들어, 227 또는 229)는 통신 채널(예를 들어, 203 또는 207)에 대한 표준 통신 프로토콜에 따라 프로세싱 장치(118) 또는 MMU(213)로부터 명령들, 요청들 또는 인스트럭션들을 수신할 수 있고, 표준 프로토콜에 따른 명령들, 요청들 또는 인스트럭션들을 메모리 서브 시스템(예를 들어, 205 또는 209) 내의 상세한 인스트럭션들 또는 적절한 명령들로 변환하여 메모리(예를 들어, 221, ..., 223, ..., 225)에 대한 원하는 액세스를 달성할 수 있다. 예를 들어, 컨트롤러(예를 들어, 227 또는 229)는 웨어 레벨링 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리(예를 들어, 221, ..., 223, ..., 225)와 관련되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 동작들을 담당할 수 있다. 컨트롤러(예를 들어, 227 또는 229)는 물리적 호스트 인터페이스를 통해 프로세싱 장치(118)와 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 장치들(예를 들어, 221, ..., 223, ..., 225)과 연관된 응답들을 프로세싱 장치(118)에 대한 정보로 변환할 뿐만 아니라 프로세싱 장치(118)로부터 수신된 명령들을 메모리 장치들(예를 들어, 221, ..., 223, ..., 225)에 액세스하기 위한 명령 인스트럭션들로 변환할 수 있다.
메모리 서브 시스템(예를 들어, 205 또는 209)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 구현예들에서, 메모리 서브 시스템(예를 들어, 205 또는 209)은 컨트롤러(예를 들어, 227 또는 229) 또는 MMU(213)로부터 어드레스를 수신하고 어드레스를 디코딩하여 메모리(예를 들어, 221, ..., 223, ..., 225)에 액세스할 수 있는 캐시 또는 버퍼(예를 들어, DRAM) 및 어드레스 회로부(예를 들어, 행 디코더 및 열 디코더)를 포함할 수 있다.
일 예에서, 인터커넥트(207) 또는 메모리 버스(203)는 메모리 서브 시스템(예를 들어, 209 또는 205)에 전력을 제공하고/하거나 미리 결정된 프로토콜을 통해 메모리 서브 시스템(예를 들어, 209 또는 205)과 통신하기 위한 하나 이상의 커넥터들을 가지며; 메모리 서브 시스템(예를 들어, 209 또는 205)은 프로세싱 장치(118)로부터 전력, 데이터 및 명령들을 수신하기 위한 하나 이상의 커넥터들을 갖는다. 예를 들어, 인터커넥트(207) 상의 커넥터와 메모리 서브 시스템(예를 들어, 209) 상의 커넥터 사이의 연결은 PCIe 버스 또는 SATA 버스를 이용할 수 있다.
일부 경우, 인터커넥트(207)는 메모리 모듈(205) 및/또는 메모리 버스(203)를 거치지 않고 호스트 시스템(120)에 연결된다. 저장 장치(209)가 메모리 모듈(205)을 거치지 않고 호스트 시스템(120)에 결합될 경우, 데이터 오케스트레이터(113)는 메모리 모듈(205)의 데이터 오케스트레이터(113)와 유사한 방식으로 저장 장치(209)에 구현될 수 있다.
일부 경우, 데이터 오케스트레이터(113)는 호스트 시스템(120)에 적어도 부분적으로 구현될 수 있다.
일반적으로, 프로세싱 장치(118), 컨트롤러(227) 및/또는 데이터 오케스트레이터(113)는 아래에서 더 논의되는 바와 같이, 페이징 기술 및/또는 메모리 맵 인터페이스를 사용하여 컴퓨터 시스템의 메모리의 일부가 컴퓨터 시스템의 메모리의 다른 일부를 통해 액세스되는 메모리 액세스의 가속을 포함하는, 서비스들을 제공하기 위해 하나 이상의 운영 체제들을 실행할 수 있다.
도 3은 데이터 오케스트레이터(113)를 갖는 시스템을 도시한다. 예를 들어, 도 3의 시스템은 도 1 또는 2의 컴퓨터 시스템에 구현될 수 있다.
도 3의 시스템은 도 1 또는 2의 컴퓨터 시스템의 프로세싱 장치(118)에서 실행될 수 있는 호스트 운영 체제(241)를 포함한다. 호스트 운영 체제(241)는 메모리 모듈(205) 및/또는 저장 장치(209)와 같은 메모리 서브 시스템들의 메모리(예를 들어, 221, ..., 223, ..., 225)를 사용하여 메모리 서비스들을 제공하는 하나 이상의 장치 드라이브들을 포함한다.
호스트 운영 체제(241)는 가상 머신(249)를 프로비저닝하는 하이퍼바이저(245)를 포함한다. 가상 머신(249)는 도 1 또는 2의 컴퓨팅 시스템의 하드웨어를 사용하여 호스트 운영 체제(241)에 의해 제공되는 리소스들 및 서비스들을 통해 구현되는 가상 하드웨어를 갖는다. 예를 들어, 하이퍼바이저(245)는 메모리 모듈(205) 및/또는 저장 장치(209)와 같은, 메모리 서브 시스템들의 메모리(예를 들어, 221, ..., 223, ..., 225)의 일부를 사용하여 가상 머신(249)의 일부로서 가상 메모리를 프로비저닝할 수 있다.
가상 머신(249)은 게스트 운영 체제(243)가 가상 머신에서의 프로비저닝과 동일하거나 유사한 하드웨어 세트를 갖는 물리적 컴퓨팅 시스템에서 실행되는 운영 체제(243)와 같은 방식으로, 게스트 운영 체제(243)에서 실행되는 어플리케이션들(예를 들어, 251, ..., 253)에 리소스들 및/또는 서비스들을 제공하도록 한다. 하이퍼바이저(245)는 가상 머신에서 프로비저닝된 가상 하드웨어와 호스트 운영 체제(241)에 의해 관리되는 컴퓨팅 시스템의 하드웨어의 서비스들 사이의 맵핑을 관리한다.
도 3은 가상 머신(249)이 하이퍼바이저(245)에 의해 프로비저닝되는 경우를 예시한다. 일반적으로, 하이퍼바이저(245)는 동일한 게스트 운영 체제(243) 또는 다른 게스트 운영 체제(예: 243)를 실행할 수 있는 복수의 가상 머신들(예: 249)을 프로비저닝할 수 있다. 다른 사용자 세트들 및/또는 어플리케이션 프로그램들은 다른 가상 머신들을 사용하도록 할당될 수 있다.
일부 경우, 호스트 운영 체제(241)는 가상 머신들을 프로비저닝하기 위한 서비스들을 제공하도록 특화되며, 다른 어플리케이션 프로그램들을 실행하지 않는다. 대안으로, 호스트 운영 체제(241)는 어플리케이션들(예를 들어, 251, ..., 253)과 같은 다른 어플리케이션 프로그램들을 지원하기 위한 추가 서비스들을 제공할 수 있다.
도 3에서, 하이퍼바이저(245)는 단일 루트 I/O 가상화를 사용하여 서로 다른 특성들/속성들의 데이터 스트림을 구성하도록 구성된다. 예를 들어, 메모리 모듈(205)은 다수의 가상 기능들(예: 247)을 구현할 수 있는 물리적 기능(246)을 갖는다. 가상 기능(247)은 물리적 기능(246)을 통해 메모리 모듈(205)의 서비스를 제공한다. 하이퍼바이저(245)는 특정 가상 머신(249), 특정 어플리케이션(예를 들어, 251 또는 253), 특정 사용자 계정 등에 의한 메모리 액세스를 위해 가상 기능(246)을 할당하고 예약한다. 따라서, 메모리 모듈(205)에 액세스하는 데 사용되는 가상 기능(247)의 식별정보는 가상 머신(249), 어플리케이션(251) 및/또는 가상 기능(247)을 사용하여 이루어진 데이터 액세스와 관련되거나 담당하는 사용자 계정의 식별정보들과 같은, 데이터 액세스에 대한 데이터 사용 정보를 추론하는 데 사용될 수 있다. 이러한 정보는 기계 학습의 데이터 오케스트레이터(113)에서 사용되어 데이터 워크로드 및/또는 이동을 예측하고 실시간 예측을 할 수 있다.
예를 들어, 데이터 오케스트레이터(113)는 데이터 아이템이 가상 머신(249), 가상 시스템에서 실행되는 어플리케이션(251) 및/또는 어플리케이션(251)을 운영하는 사용자 계정에 의한 사용을 위해 실제로 요청되기 전에 더 느린 메모리에서 데이터 아이템의 사용을 예측하고 데이터 아이템을 더 빠른 메모리로 로드하도록 트레이닝될 수 있다. 예측은 아이템을 사용하려는 요청이 메모리 모듈(205)에 도달하기 전에 데이터 아이템을 사용하기 위한 요청과 아이템을 더 빠른 메모리로 로딩, 전송 및/또는 캐싱함으로써 더 빠른 메모리에 있는 아이템의 이용 가능성 사이의 시간을 줄이며, 이는 페이지의 데이터 액세스를 가속화한다.
예를 들어, 더 느린 메모리는 메모리 모듈(205)의 메모리(223)일 수 있고, 더 빠른 메모리는 동일한 메모리 모듈(205)(또는 메모리 모듈(205)과 동일한 메모리 버스(203)에 연결된 다른 메모리 모듈)의 메모리(221)일 수 있다.
예를 들어, 더 느린 메모리는 저장 장치(209)의 메모리(223)일 수 있으며; 더 빠른 메모리는 메모리 모듈(205)의 동일한 타입의 메모리(223)이거나, 메모리 모듈(205)의 메모리(221)일 수 있다.
예를 들어, 더 느린 메모리는 저장 장치(209)의 메모리(225)일 수 있으며; 더 빠른 메모리는 동일한 저장 장치(209)의 메모리(223)이거나, 인터커넥트(207)에 연결된 다른 저장 장치이거나, 메모리 모듈(205)의 메모리(예를 들어, 223 또는 221)일 수 있다.
바람직하게는, 예측 데이터 이동은 메모리 버스(203) 및/또는 인터커넥트(207)와 같은 프로세싱 장치(118)에 연결된 통신 채널의 정체를 피하거나 감소시키기 위해, 동일한 메모리 모듈(205), 동일한 저장 장치(209) 또는 메모리 모듈(205)과 저장 장치(209)의 동일한 조합과 같은, 동일한 메모리 서브 시스템 내에서 수행된다. 예를 들어, 예측 데이터 이동은 데이터 오케스트레이터(113)로부터의 하나 이상의 명령, 요청 또는 인스트럭션에 응답하여 메모리 모듈(205)의 컨트롤러(227)의 제어 하에서, 데이터를 메모리 모듈(205)의 더 느린 메모리(223)로부터 메모리 모듈(205)의 더 빠른 메모리(221)로 복사하도록 수행될 수 있다. 예를 들어, 예측 데이터 이동은 데이터 오케스트레이터(113)로부터의 하나 이상의 명령, 요청 또는 인스트럭션에 응답하여 저장 장치(209)의 컨트롤러(229)의 제어 하에서, 데이터를 저장 장치(209)의 더 느린 메모리(225)로부터 저장 장치(209)의 더 빠른 메모리(223)로 복사하도록 수행될 수 있다. 예를 들어, 예측 데이터 이동은 데이터 오케스트레이터(113)로부터의 하나 이상의 명령, 요청 또는 인스트럭션에 응답하여, 컨트롤러(227) 및 저장 장치(209)의 컨트롤러(229)의 제어 하에서, 데이터를 저장 장치(209)로부터 메모리 모듈(205)로 복사하도록 수행될 수 있다.
일 실시예에서, 하이퍼바이저(245)는 장치 드라이버에게 메모리 서브 시스템(예: 메모리 모듈(205) 또는 저장 장치(209))의 메모리(예: 221, ..., 223, ... 또는 225)에 액세스할 것을 요청할 뿐만 아니라, 장치 드라이버에게 메모리(예: 221, ..., 223 또는 225) 내의 어느 데이터 아이템들이 후속 기간에 사용될 가능성이 높은 지 그리고 메모리(예: 메모리(예를 들어, 221, ..., 223, ... 또는 225)) 내의 어느 데이터 아이템들이 후속 시간 기간에 사용되지 않을 가능성이 높은 지의 예측들을 수행하는 데 사용될 수 있는 정보를 제공한다. 정보는 가상 머신(249), 어플리케이션(251), 사용자 계정 등과 같은 특정 데이터 사용 속성들과 사전 연관된 가상 기능들(예: 247)의 사용을 통해 적어도 부분적으로 제공될 수 있다.
예를 들어, 사용될 가능성이 높은 페이지는 핫(hot) 페이지로 지칭될 수 있으며; 사용되지 않을 가능성이 높은 페이지는 콜드(cold) 페이지로 지칭될 수 있다. 후속 시간 기간에 페이지가 사용될 가능성은 페이지의 온도로 지칭될 수 있다. 데이터 오케스트레이터(113)는 하이퍼바이저(245)에 의해 제공/식별된 정보를 사용하여 페이지들의 온도들을 예측하고, 콜드 페이지들을 더 빠른 메모리에서 더 느린 메모리로 이동시키고, 핫(hot) 페이지들을 더 느린 메모리에서 더 빠른 메모리로 이동시켜 메모리(예를 들어, 221, ..., 223, ..., 또는 225)의 페이지들의 분배를 최적화하고 데이터 액세스를 가속화시킨다.
예측들을 하기 위해 하이퍼바이저(245)에 의해 제공되고 데이터 오케스트레이터(113)에 의해 사용된 정보의 예들은, 이전 기간에 사용되는 페이지들의 시퀀스들, 더 느린 메모리에서 더 빠른 메모리로 페이지들을 로드하기 위한 요청들의 인스턴스들, 페이지들의 콘텐트 속성들, 페이지들의 소유권 속성들, 페이지들의 사용자들 또는 어플리케이션들의 식별정보들, 페이지들이 가상 머신 및/또는 사용자 계정에서 순차적 모드로 액세스되는지 여부의 표시, 페이지 액세스들이 안정 상태에 있는지 여부의 표시, 사용된 페이지가 거대한 페이지와 연관되는지 여부의 표시, 데이터 블록들과 오브젝트들 사이의 맵핑 등을 포함한다.
도 4는 데이터 오케스트레이터(113)의 구현예를 예시한다.
도 4에서, 데이터 오케스트레이터(113)는 캐시 컨트롤러(273) 및 워크로드 인식기(263)를 포함한다. 워크로드 인식기(263)는 인공 신경망을 사용하여 구현될 수 있는 예측 모델(265)을 포함한다.
캐시 컨트롤러(273)는 호스트 시스템(120)으로부터의 데이터 액세스 요청들(271)을 처리한다. 캐시 컨트롤러(273)는 낮은 성능의 메모리에 대해 캐시로 사용되는 고성능 메모리를 모니터링하고, 캐시의 사용량을 분석하고, 캐시 사용량을 최적화하고, 캐시의 사용을 관리한다. 종래 캐시 기술들은 캐시 컨트롤러(273)에서 구현될 수 있다.
데이터 액세스 요청들(271)에 응답하여, 캐시 컨트롤러(273)는 요청들(271)에 의해 대상이 되는 데이터가 요청들(271)의 시점에 고성능 메모리에 있는지를 결정한다. 그렇다면, 캐시 컨트롤러(273)는 대응되는 데이터 액세스 요청들(271)을 캐시 히트로 카운팅하며; 그렇지 않은 경우, 캐시 컨트롤러(273)는 대응되는 데이터 액세스 요청들(271)을 캐시 미스로 카운팅한다. 따라서, 캐시 컨트롤러(273)는 데이터 액세스 요청들(271)의 시점에 데이터 분배에 대한 캐시 히트율(275)의 측정을 생성할 수 있다.
선택적으로, 캐시 컨트롤러(273)은 대응되는 데이터를 더 높은 성능의 메모리에 캐싱/로딩하지 않고 더 낮은 성능의 메모리로부터 직접 데이터 액세스 요청들(271)의 일부를 서비스할 수 있다.
캐시 컨트롤러(273)에 사용된 캐시 정책은 캐시 컨트롤러(273)에 의해 구현되는 데이터 이동(data movements)(277)을 식별하는 데 사용될 수 있다.
데이터 액세스 요청들(271)에 대응되는 데이터 사용 정보(261)는 예측 모델(265)의 트레이닝을 위한 컴퓨팅 시스템 운용의 초기 기간 동안 수집된다. 예를 들어, 감독된 기계 학습 기술은 데이터 액세스 요청들(271)에 응답하여 캐시 컨트롤러(273)에 의해 구현되는 데이터 이동(272)과 데이터 액세스 요청들(271)에 대응되는 데이터 사용 정보(261)를 사용한 예측 모델(265)을 사용하여 예측된 데이터 이동(269) 사이의 차이를 최소화하기 위해 예측 모델(265)의 인공 신경망을 트레이닝시키는 데 사용될 수 있다. 기계 학습은 초기 예측 모델(265)을 확립하기 위해 다른 컴퓨팅 장치 상에서 오프라인으로 수행될 수 있다.
이후, 예측 모듈(265)은 실시간 데이터 사용 정보(261) 및 실시간 데이터 액세스 요청들(271)에 기초하여 데이터 이동(269)의 실시간 예측을 하기 위한 워크로드 인식기(263)에 사용될 수 있다. 워크로드 인식기(263)는 캐쉬 히트율(275)에 변화를 일으킬 수 있는 예측 데이터 측정을 수행하도록 캐시 컨트롤러(273)에 지시한다. 예측 모델(265)는 캐시 히트율(275)을 지속적으로 상승시키기 위해 하이브리드 강화 기계 학습 기술을 사용하여 실시간으로 조정 및/또는 트레이닝된다. 따라서, 예측 모델(265)은 캐시 컨트롤러(273)만을 통해 달성될 수 있는 것보다 더 높은 캐시 히트율(275)을 달성하기 위해 컴퓨팅 시스템의 현재 워크로드에 자동으로 적응하고 예측 데이터 이동(269)을 구현할 수 있다.
바람직하게는, 워크로드 인식기(263)에 의해 이루어진 예측들은 블록 대 오브젝트 맵(267)에 적어도 부분적으로 기초한다. 데이터 사용 정보(261)의 통계적 분석을 위해, 데이터 오케스트레이터(113)는 데이터 블록들 간의 기본 관계들을 식별할 수 있다. 예를 들어, 일부 데이터 블록들은 어플리케이션에서 동일한 데이터 오브젝트의 부분들을 나타낸다; 데이터 객체들의 부분들이 함께 액세스된다; 일부 데이터 오브젝트들은 특정 순서로 액세스되는 패턴을 갖는다; 가상 머신에서 어플리케이션을 실행하는 사용자 계정에서의 하나의 데이터 오브젝트에 대한 액세스는 다른 데이터 오브젝트에 대한 액세스로 이어질 가능성이 높을 수 있다. 블록 대 오브젝트 맵(267)은 워크로드 인식기(263)의 예측 정확도를 향상시키는 관계들을 식별한다.
도 5는 예측 데이터 오케스트레이션의 방법을 도시한다. 도 5의 방법은 하드웨어(예: 프로세싱 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예: 프로세싱 장치에서 실행되거나 수행된 인스트럭션들) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예들에서, 도 5의 방법은 도 1, 2, 3 또는 4의 데이터 오케스트레이터(113)에 의해 적어도 부분적으로 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하고, 예시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병행하여 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
예를 들어, 도 5의 방법은 도 3의 호스트 운영 체제(241) 및 도 4의 예측 모델(265)과 함께 도 1 또는 2의 컴퓨팅 시스템에서 구현될 수 있다. 예를 들어, 데이터 오케스트레이터(113)는 도 4의 캐시 컨트롤러(273)와 워크로드 인식기(263) 및/또는 도 3의 가상 기능(247)을 통해 적어도 부분적으로 구현될 수 있다.
블록(301)에서, 데이터 오케스트레이터(113)는 프로세싱 장치(118)로부터, 계층들에 걸쳐 제1 데이터 이동을 야기하는 제1 데이터 액세스 요청들을 수신한다.
예를 들어, 상이한 계층들의 메모리 컴포넌트들(예를 들어, 도 1의 109A 내지 109N, 도 3의 221 내지 223 및/또는 내지 225)은 제1 메모리 및 제2 메모리를 가질 수 있으며, 여기서 제1 메모리는 제2 메모리의 캐시로 기능한다. 예들 들어, 제1 메모리는 휘발성 동적 랜덤 액세스 메모리일 수 있으며; 제2 메모리는 비휘발성 교차점 메모리일 수 있다. 일부 경우, 제1 메모리 및 제2 메모리는 메모리 모듈(205) 또는 저장 장치(209)와 동일한 메모리 서브 시스템에 하우징된다. 다른 경우, 제1 메모리 및 제2 메모리는 호스트 시스템(120) 및/또는 메모리 버스(203)를 포함하지 않고 서로 통신할 수 있는 별도의 동일한 메모리 서브 시스템에 하우징될 수 있다.
프로세싱 장치(118)가 제2 메모리에 액세스될 때, 액세스 요청들은, 제1 메모리에서, 액세스 중인 제2 메모리의 일부의 캐싱을 발생시킨다. 다른 경우, 제1 메모리는 제2 메모리의 캐시로 기능하지 않으며; 제2 메모리에 있는 데이터 아이템에 액세스하기 위한 요청에 응답하여, 데이터 오케스트레이터(113)는 정책 또는 규칙 세트에 기초하여, 데이터 아이템의 저장 위치를 제2 메모리에서 제1 메모리로 변경할 것인지를 결정하며; 만약 그렇다면, 데이터 오케스트레이터(113)는 데이터 아이템을 제2 메모리에서 제1 메모리로 스와핑할 수 있다.
블록(303)에서, 데이터 오케스트레이터(113)는 제1 데이터 액세스 요청들에 응답하여 제1 데이터 이동을 수행한다.
예를 들어, 제1 데이터 액세스 요청들에 응답하여 수행/구현된 제1 데이터 이동은 제1 데이터 액세스 요청들과 관련된 데이터 사용 정보와 관련하여 기록될 수 있다. 예를 들어, 데이터 사용 정보는 일정 기간에 사용중인 데이터 블록들의 시퀀스, 제2 메모리에서 제1 메모리로 데이터 블록들을 로딩하기 위한 요청들의 인스턴스들, 제2 메모리에서 제1 메모리로 로딩된 데이터 블록들의 콘텐트 속성들, 제2 메모리에서 제1 메모리로 로딩된 데이터 블록들의 소유권 속성들, 제2 메모리에서 제1 메모리로 로딩된 데이터 블록들의 사용자들의 식별정보들, 제2 메모리에서 제1 메모리로 로딩중인 데이터 블록들을 야기하는 어플리케이션들의 식별정보들, 가상 머신에서 순차적 모드로 액세스되는 데이터 블록들의 식별정보, 사용자 계정에서 순차적 모드로 액세스되는 데이터 블록들의 식별정보, 및/또는 안정 상태에 있는 데이터 액세스들의 식별정보를 식별할 수 있다.
제1 데이터 이동은 제1 데이터 액세스 요청들과 관련된 데이터 사용 정보를 사용하여 예측들을 수행하는 예측 모델(265)의 원하는 예측 결과들로 사용될 수 있다. 예를 들어, 예측 모델(265)은 제1 데이터 이동과 제1 데이터 액세스 요청들과 관련된 데이터 사용 정보를 사용하여 이루어진 예측들 사이의 차이를 줄이기 위해 감독된 기계 학습 기술을 사용하여 트레이닝될 수 있는 인공 신경망을 갖는다. 인공 신경망의 초기 트레이닝은 별도의 컴퓨터 및 제1 데이터 액세스 요청들에 대한 기록된 정보, 제1 데이터 액세스 요청들에 의해 야기된 제1 데이터 이동, 및 제1 데이터 액세스 요청들 전 데이터 사용 정보를 사용하여 오프라인에서 선택적으로 수행될 수 있다. 예를 들어, 데이터 오케스트레이터(113)는 데이터 오케스트레이터(113)에 의해 제어되는 메모리의 일부에 기록된 정보를 저장할 수 있으며; 다른 프로세싱 장치(118)는 데이터 오케스트레이터(113)에 대한 초기 트레이닝을 수행하기 위해 메모리의 일부에 액세스할 수 있다. 대안으로, 인공 신경망의 초기 트레이닝은 예측 모델(265)의 예측 정확도가 임계 레벨에 도달할 때까지 데이터 오케스트레이터(113)에서 수행될 수 있다.
블록(305)에서, 메모리 서브 시스템(110)(예를 들어, 메모리 모듈(205) 및/또는 저장 장치(209))은 제1 데이터 이동 후 제1 데이터 액세스 요청들을 서비스한다. 컴퓨팅 시스템의 성능은 데이터 이동을 예측하고 대응되는 데이터 액세스 요청들 전에 예측된 데이터 이동을 수행함으로써 개선될 수 있다.
블록(307)에서, 데이터 오케스트레이터(113)는 프로세싱 장치(118)로부터 데이터 사용 정보(261)를 수신한다.
블록(309)에서, 데이터 오케스트레이터(113)는 데이터 사용 정보(261) 및 기계 학습을 통해 트레이닝된 예측 모델(265)에 기초하여, 메모리 컴포넌트들에서의 계층들에 걸쳐 제2 데이터 이동(269)을 예측한다.
블록(311)에서, 데이터 오케스트레이터(113)는 제2 데이터 액세스 요청들(271)을 수신하기 전에 제2 데이터 이동(269)을 수행한다. 제2 데이터 이동(269)은 제2 데이터 액세스 요청들에 의해 야기되는 계층들에 걸친 데이터 이동을 감소시킨다.
데이터 오케스트레이터(113)는 프로세싱 장치(118)로부터 제2 데이터 액세스 요청들 및/또는 제2 데이터 액세스 요청들에 의해 야기된 데이터 이동을 서비스하는 데 있어 다수의 메모리 컴포넌트들의 성능 측정에 기초하여 예측 모델을 선택적으로 더 트레이닝시킬 수 있다.
예를 들어, 성능 측정은 데이터 오케스트레이터(113)에 의해 측정된 제2 데이터 액세스 요청들의 캐시 히트율일 수 있다. 예를 들어, 제2 메모리의 데이터에 대한 프로세싱 장치(118)의 요청들은 제2 메모리에서 제1 메모리로의 요청된 데이터의 이동을 야기할 수 있다. 이러한 이동은 캐시 미스로 카운팅될 수 있으며; 이러한 이동을 야기하지 않는 데이터 액세스 요청들은 캐시 히트로 카운팅될 수 있다. 데이터 오케스트레이터(113)는 하이브리드 강화 학습 기술을 사용하여 예측 모델(265)을 트레이닝시켜 캐시 히트율을 높이고, 캐시 미스의 수를 줄이고/줄이거나 데이터 액세스 요청들로부터 식별된 원하는 데이터 이동과 예측을 일치시킬 수 있다.
예를 들어, 데이터 오케스트레이터(113)는 필드 프로그램 가능 게이트 어레이(FPGA) 또는 어플리케이션별 집적 회로(ASIC)의 형태로, 메모리 모듈 또는 저장 장치에 배치된 집적 회로 칩의 컨트롤러로 구현될 수 있다. 데이터 오케스트레이터(113)는 데이터 액세스 요청들이 사용되는 가상 기능들(예: 247)의 아이덴티티들에 적어도 부분적으로 기초하여 데이터 사용 정보(261)를 획득한다. 예를 들어, 상이한 가상 기능들(예: 247)은 가상 머신들, 어플리케이션들, 사용자 계정들, 데이터 액세스 모드들 등과 같은 일정 기간 동안 데이터 사용 정보의 상이한 조합들을 나타내는 데 사용될 수 있다.
선택적으로, 데이터 오케스트레이터(113)는 데이터 액세스 요청들(271)과 데이터 사용 정보(261)의 통계 분석을 더 수행하여 프로세싱 장치에서 실행되는 어플리케이션들에서 구성된 바와 같은 다수의 메모리 컴포넌트들 및 데이터 오브젝트들의 데이터 블록들 사이의 맵핑을 식별한다. 예측 모델(265)과의 맵핑을 사용하면 데이터 오케스트레이터(113)의 예측 정확도를 향상시킬 수 있다.
바람직하게는, 예측 데이터 이동(269)은 호스트 시스템(120)과 통신하기 위해 데이터 오케스트레이터(113)에 의해 사용되는 버스(예: 203)를 거치지 않고 수행된다.
일부 구현예들에서, 프로세싱 장치(118) 및 메모리 서브 시스템 사이의 통신 채널은 근거리 통신망, 무선 근거리 무선 통신망, 무선 사설 통신망, 이동 통신망, 광대역 고속 상시 연결 무선 통신 연결(예를 들어, 현재 또는 차세대 모바일 통신 링크)과 같은, 컴퓨터 네트워크를 포함하며; 프로세싱 장치(118) 및 메모리 서브 시스템은 NVMe 프로토콜과 유사한 데이터 저장 관리 및 사용 명령들을 사용하여 서로 통신하도록 구성될 수 있다.
일반적으로 메모리 서브 시스템은 비휘발성 저장 매체를 가질 수 있다. 비휘발성 저장 매체의 예들은 집적 회로에서 형성된 메모리 셀들 및 강체 디스크들에 코팅된 자성 물질을 포함한다. 비휘발성 저장 매체는 전력을 소모하지 않고 이에 저장된 데이터/정보를 유지할 수 있다. 메모리 셀은 NAND 로직 게이트, NOR 로직 게이트, 위상 변화 메모리(PCM), 자기 메모리(MRAM), 저항성 랜덤 액세스 메모리, 교차점 저장 장치 및 메모리 장치들(예를 들어, 3D X점 메모리) 과 같은, 다양한 메모리/저장 기술들을 사용하여 구현될 수 있다. 교차점 메모리 장치는 트랜지스터가 없는 메모리 소자들을 사용하며, 그 각각은 열(column)로 함께 적층되는 메모리 셀 및 선택기를 갖는다. 메모리 소자 열(column)은 두 개의 수직으로 배치된 와이어들을 통해 연결되며, 여기서 하나는 메모리 소자 열 위에 있고 다른 하나는 메모리 소자 열 아래에 있다. 각 메모리 소자는 두 레이어들 각각에 하나의 와이어의 교차점에서 개별적으로 선택될 수 있다. 교차점 메모리 장치들은 빠르고 비휘발성이며, 처리 및 저장을 위한 통합 메모리 풀(pool)로 사용될 수 있다.
메모리 서브 시스템(예: 205 또는 209)의 컨트롤러(예: 227 또는 229)는 펌웨어를 실행하여 프로세싱 장치(118)로부터의 통신에 응답하여 동작들을 수행할 수 있다. 일반적으로 펌웨어는 공학적 컴퓨팅 장치들의 제어, 모니터링 및 데이터 조작을 제공하는 컴퓨터 프로그램의 일종이다.
컨트롤러(227)의 동작을 포함하는 일부 실시예들은 컨트롤러(227)의 펌웨어와 같은, 컨트롤러(227)에 의해 실행된 컴퓨터 인스트럭션들을 사용하여 구현될 수 있다. 일부 경우, 하드웨어 회로들은 기능들 중 적어도 일부를 구현하는 데 사용될 수 있다. 펌웨어는 초기에 비휘발성 저장 매체 또는 다른 비휘발성 장치에 저장될 수 있으며, 컨트롤러(227)에 의한 실행을 위해 휘발성 DRAM 및/또는 프로세서 내 캐시 메모리에 로딩될 수 있다.
비일시적(non-transitory) 컴퓨터 저장 매체는 일반적으로 메모리 서브 시스템(예: 209 또는 205)의 펌웨어의 인스트럭션들 및/또는 운영 체제(예: 241, 243)의 인스트럭션들, 특히 장치 드라이버 및 하이퍼바이저(245)를 저장하는 데 사용될 수 있다. 인스트럭션들이 컨트롤러(227) 및/또는 프로세싱 장치(118)에 의해 실행될 때, 인스트럭션들은 컨트롤러(227) 및/또는 프로세싱 장치(118)가 위에서 논의된 방법을 수행하게 한다.
도 6은 기계가 본원에 논의된 방법론들 중 임의의 하나 이상을 수행하게 하는 인스트럭션 세트가 실행될 수 있는 컴퓨터 시스템(600)의 예시적인 상기 기계를 예시한다. 일부 실시예들에서, 컴퓨터 시스템(600)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나, 이에 결합되거나 이를 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응되거나, 데이터 오케스트레이터(113)의 동작들을 수행(예를 들어, 도 1 내지 5를 참조하여 설명된 데이터 오케스트레이터(113)에 대응되는 동작들을 수행하기 위한 인스트럭션들을 실행)하는 데 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량으로, 피어 투 피어(또는 분산) 네트워크 환경에서의 피어 기계로, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 셀룰러 텔레폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 수행될 조치들을 명시하는 인스트럭션 세트(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 인스트럭션 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
예시적인 컴퓨터 시스템(600)은 버스(630)(다수의 버스들을 포함할 수 있음)를 통해 서로 통신하는, 프로세싱 장치(602), 메인 메모리(604)(예: 읽기 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(618)를 포함한다.
프로세싱 장치(602)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 프로세싱 장치들을 나타낸다. 보다 구체적으로, 프로세싱 장치는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 인스트럭션 세트들을 구현하는 프로세서, 또는 인스트럭션 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세싱 장치(602)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 장치들일 수 있다. 프로세싱 장치(602)는 본원에 논의된 동작들 및 단계들을 수행하기 위한 인스트럭션들(626)을 수행하도록 구성된다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위한 네트워크 인터페이스 장치(608)를 더 포함할 수 있다.
데이터 저장 시스템(618)는 본원에 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 인스트력션 세트 또는 소프트웨어(626)가 저장되는 기계 판독 가능 저장 매체(624)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 인스트럭션들(626)은 또한 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(600), 메인 메모리(604) 및 프로세싱 장치(602)에 의한 실행 동안 메인 메모리(604) 내에 및/또는 프로세싱 장치(602) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(624), 데이터 저장 시스템(618) 및/또는 메인 메모리(604)는 도 1의 메모리 서브 시스템(110)에 대응될 수 있다.
일 실시예에서, 인스트럭션들(626)은 데이터 오케스트레이터(113)(예를 들어, 도 1 내지 5를 참조하여 설명된 데이터 오케스트레이터(113))에 대응되는 기능을 구현하기 위한 인스트럭션들을 포함한다. 기계 판독 가능 저장 매체(624)가 예시적인 실시에서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 인스트럭션 세트들을 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 저장 매체"라는 용어는 또한 기계에 의해 실행되는 인스트럭션 세트를 저장 또는 인코딩할 수 있고 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, "기계 판독 가능 저장 매체"라는 용어는, 이에 제한되는 것은 아니나, 솔리드 스테이트 메모리들, 광학 매체 및 자기 매체를 포함하는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산의 알고리즘 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 당업자가 그들 작업의 실체를 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 여기서, 알고리즘은 일반적으로 원하는 결과를 도출하는 자기 모순 없는(self-consistent) 동작 시퀀스인 것으로 생각된다. 동작들은 이러한 물리적 수량의 물리적 조작을 필요로 한다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장되고, 결합되고, 비교되고 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 이러한 신호들을 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이, 주로 일반적인 사용의 이유로, 때때로 편리한 것으로 입증되었다.
그러나, 이러한 및 유사한 용어들 모두는 적절한 물리적 양과 관련이 있으며 이러한 양에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들과 메모리들 내에서 물리적(전자적) 양으로 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내의 물리적 양으로 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 인용할 수 있다.
본 개시는 또한 본원에서 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되는 것은 아니나, 플로피 디스크, 광 디스크, CD-ROM, 및 자기-광학 디스크, 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 각각 컴퓨터 시스템 버스에 연결된 전자 인스트럭션들을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의 유형의 디스크와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본원에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 본원의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 다 특화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 다양한 이들 시스템들의 구조는 아래의 설명에서 제시되는 것으로 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본원에 기술된 바와 같이 본 개시의 교시를 구현하는 데 사용될 수 있음이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 장치)를 프로그래밍하는 데 사용될 수는, 인스트럭션들을 저장한 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예: 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예들에서, 기계 판독 가능(예: 컴퓨터 판독 가능) 매체는 읽기 전용 메모리( "ROM"), 랜덤 액세스 메모리( "RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트들 등과 같은 기계(예: 컴퓨터) 판독 가능 저장 매체를 포함한다.
이 설명에서, 다양한 기능들 및 동작들은 설명을 단순화하기 위해 컴퓨터 명령에 의해 수행되거나 컴퓨터 명령에 의해 야기되는 것으로 설명된다. 그러나, 당업자는 이러한 표현이 의미하는 것이 마이크로프로세서와 같은 하나 이상의 컨트롤러들 또는 프로세서들에 의한 컴퓨터 인스트럭션들의 실행으로 인한 기능들이라는 것을 인식할 것이다. 대안으로, 또는 조합하여, 기능들 및 동작들은 어플리케이션별 집적 회로(ASIC) 또는 필드 프로그램 가능 게이트 어레이(FPGA)를 사용하는 것과 같은, 소프트웨어 인스트력션들이 있든 없든 특수 목적 회로부를 사용하여 구현될 수 있다. 실시예들은 소프트웨어 인스트럭션들 없이 하드와이어링된 회로부를 사용하거나, 소프트웨어 인스트럭션들과 조합하여 구현될 수 있다. 따라서, 기술들은 하드웨어 회로부와 소프트웨어의 임의의 특정 조합이나, 데이터 프로세싱 시스템에 의해 실행된 인스트럭션들에 대한 임의의 특정 출처에 제한되지 않는다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구 범위에 명시된 본 개시의 실시예들의 넓은 사상 및 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (15)

  1. 컴퓨팅 시스템에 있어서,
    프로세싱 장치;
    상이한 계층들의 복수의 메모리 컴포넌트들; 및
    상기 프로세싱 장치와 상기 복수의 메모리 컴포넌트들 사이에 동작 가능하게 결합된 컨트롤러로서, 적어도,
    상기 프로세싱 장치로부터 제1 데이터 액세스 요청들을 수신하되, 상기 제1 데이터 액세스 요청들은 상기 메모리 컴포넌트들에서의 상기 계층들에 걸쳐 제1 데이터 이동을 야기하고;
    상기 제1 데이터 액세스 요청들에 응답하여 상기 제1 데이터 이동을 수행하고;
    상기 제1 데이터 이동 후 상기 제1 데이터 액세스 요청들을 서비스하고;
    상기 프로세싱 장치로부터 데이터 사용 정보를 수신하고;
    상기 데이터 사용 정보 및 기계 학습을 통해 트레이닝된 예측 모델에 기초하여, 상기 메모리 컴포넌트들에서의 상기 계층들에 걸쳐 제2 데이터 이동을 예측하고;
    제2 데이터 액세스 요청들을 수신하기 전에 상기 제2 데이터 이동을 수행하되, 상기 제2 데이터 이동은 상기 제2 데이터 액세스 요청들에 의해 야기되는 제3 데이터 이동을 감소시키는, 상기 컨트롤러를 포함하는, 컴퓨팅 시스템.
  2. 제1항에 있어서, 상기 데이터 사용 정보는,
    일정 기간에 사용중인 데이터 블록들의 시퀀스;
    상기 제2 메모리에서 상기 제1 메모리로 데이터 블록들을 로딩하기 위한 요청들의 인스턴스들;
    상기 제2 메모리에서 상기 제1 메모리로 로딩된 데이터 블록들의 콘텐트 속성들;
    상기 제2 메모리에서 상기 제1 메모리로 로딩된 데이터 블록들의 소유권 속성들;
    상기 제2 메모리에서 상기 제1 메모리로 로딩된 데이터 블록들의 사용자들의 식별정보들;
    상기 제2 메모리에서 상기 제1 메모리로 로딩될 데이터 블록들을 야기하는 어플리케이션들의 식별정보들;
    가상 머신에서 순차적 모드로 액세스되는 데이터 블록들의 식별정보;
    사용자 계정에서 순차적 모드로 액세스되는 데이터 블록들의 식별정보; 또는
    안정 상태에 있는 데이터 액세스들의 식별정보를 식별하는, 컴퓨팅 시스템.
  3. 제1항에 있어서, 상기 컨트롤러는,
    상기 프로세싱 장치로부터 데이터 액세스 요청들을 서비스 시 상기 복수의 메모리 컴포넌트들의 성능 측정에 기초하여 상기 예측 모델을 조정하도록 더 동작 가능한, 컴퓨팅 시스템.
  4. 제3항에 있어서, 상기 복수의 메모리 컴포넌트들은 제1 메모리 및 제2 메모리를 포함하며; 상기 제1 메모리는 상기 제2 메모리의 캐시로 기능하는, 컴퓨팅 시스템.
  5. 제4항에 있어서, 상기 성능 측정은 데이터 액세스 요청들의 캐시 히트율이고; 상기 제2 메모리의 데이터에 대한 상기 프로세싱 장치의 요청들은 상기 제2 메모리에서 상기 제1 메모리로 상기 요청된 데이터의 이동을 야기하는, 컴퓨팅 시스템.
  6. 제5항에 있어서, 상기 컨트롤러는 상기 프로세싱 장치의 상기 요청들에 대해 상기 컨트롤러에서 측정된 상기 캐시 히트율을 향상시키는 예측들을 생성하기 위해 인공 신경망을 조정함으로써 하이브리드 강화 학습 기술을 사용하여 상기 예측 모델을 조정하는, 컴퓨팅 시스템.
  7. 제6항에 있어서, 상기 컨트롤러는 메모리 버스를 통해 상기 프로세싱 장치와 통신하고; 상기 컨트롤러는 메모리 모듈 상에 배치되고; 상기 복수의 메모리 컴포넌트들은 상기 메모리 모듈 상에 배치되고; 상기 제1 데이터 이동 및 상기 제2 데이터 이동은 상기 메모리 버스를 거치지 않는, 컴퓨팅 시스템.
  8. 제7항에 있어서, 상기 복수의 메모리 컴포넌트들의 일부는 상기 메모리 모듈 상에 없는, 컴퓨팅 시스템.
  9. 제4항에 있어서, 상기 제1 메모리는 휘발성 동적 랜덤 액세스 메모리이고, 상기 제2 메모리는 비휘발성 교차점 메모리이며; 상기 컨트롤러는 필드 프로그램 가능 게이트 어레이(FPGA) 또는 어플리케이션별 집적 회로(ASIC)를 포함하는, 컴퓨팅 시스템.
  10. 제1항에 있어서, 상기 컨트롤러는,
    상기 복수의 메모리 컴포넌트들의 데이터 블록들과 상기 프로세싱 장치에서 실행되는 어플리케이션들에 구성된 데이터 오브젝트들 간 맵핑을 식별하도록 더 동작 가능한, 컴퓨팅 시스템.
  11. 방법에 있어서,
    컴퓨팅 장치에서, 상이한 계층들의 복수의 메모리 컴포넌트들에 결합된 프로세싱 장치로부터 제1 데이터 액세스 요청들을 수신하는 단계로서, 상기 제1 데이터 액세스 요청들은 상기 메모리 컴포넌트들에서의 상기 계층들에 걸쳐 제1 데이터 이동을 야기하는, 상기 제1 데이터 액세스 요청들을 수신하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 제1 데이터 액세스 요청들에 응답하여 상기 제1 데이터 이동을 수행하는 단계;
    상기 제1 데이터 이동 후 상기 제1 데이터 액세스 요청들을 서비스하는 단계;
    상기 컴퓨팅 장치에서, 상기 프로세싱 장치로부터 데이터 사용 정보를 수신하는 단계;
    상기 컴퓨팅 장치에 의해 상기 데이터 사용 정보 및 기계 학습을 통해 트레이닝된 예측 모델에 기초하여, 상기 메모리 컴포넌트들에서의 상기 계층들에 걸쳐 제2 데이터 이동을 예측하는 단계; 및
    상기 컴퓨팅 장치에 의해, 제2 데이터 액세스 요청들을 수신하기 전에 상기 제2 데이터 이동을 수행하는 단계로서, 상기 제2 데이터 이동은 상기 제2 데이터 액세스 요청들에 의해 야기되는 제3 데이터 이동을 감소시키는, 상기 제2 데이터 이동을 수행하는 단계를 포함하는, 방법.
  12. 제11항에 있어서, 상기 예측 모델은 인공 신경망을 포함하며; 상기 방법은,
    상기 제1 데이터 이동 및 상기 제1 데이터 액세스 요청들과 연관된 데이터 사용 정보에 기초하여 상기 예측 모델을 트레이닝시키는 단계를 더 포함하는, 방법.
  13. 제12항에 있어서,
    오프라인에서 수행되는 상기 트레이닝 후 상기 예측 모델을 제공하는 단계를 더 포함하며, 상기 예측하는 단계는 상기 제2 데이터 액세스 요청들에 대해 실시간으로 수행되는, 방법.
  14. 제12항에 있어서,
    상기 제2 데이터 액세스 요청들 및 상기 제2 데이터 이동을 예측하는 데 사용된 상기 데이터 사용 정보에 의해 야기되는 상기 제3 데이터 이동에 기초하여 상기 예측 모델을 더 트레이닝시키는 단계를 더 포함하는, 방법.
  15. 제11항에 있어서,
    데이터 사용 정보를 분석하여 데이터 블록들과 데이터 오브젝트들 간 맵핑을 식별하는 데 함께 사용되는 데이터 블록들을 그룹화하는 단계를 더 포함하는, 방법.
KR1020207025383A 2018-02-05 2019-01-16 다중 계층 메모리 시스템에서의 예측 데이터 오케스트레이션 KR102457071B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862626347P 2018-02-05 2018-02-05
US62/626,347 2018-02-05
US16/054,819 US10782908B2 (en) 2018-02-05 2018-08-03 Predictive data orchestration in multi-tier memory systems
US16/054,819 2018-08-03
PCT/US2019/013836 WO2019152191A1 (en) 2018-02-05 2019-01-16 Predictive data orchestration in multi-tier memory systems

Publications (2)

Publication Number Publication Date
KR20200108362A true KR20200108362A (ko) 2020-09-17
KR102457071B1 KR102457071B1 (ko) 2022-10-21

Family

ID=67475108

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207025383A KR102457071B1 (ko) 2018-02-05 2019-01-16 다중 계층 메모리 시스템에서의 예측 데이터 오케스트레이션

Country Status (6)

Country Link
US (3) US10782908B2 (ko)
EP (1) EP3750070A4 (ko)
KR (1) KR102457071B1 (ko)
CN (1) CN111684434B (ko)
TW (1) TWI711925B (ko)
WO (1) WO2019152191A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022211285A1 (ko) * 2021-03-30 2022-10-06 삼성전자 주식회사 메모리를 관리하기 위한 전자 장치 및 그의 동작 방법

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
JP6800904B2 (ja) * 2018-03-20 2020-12-16 株式会社東芝 モデル生成装置、情報処理装置、モデル生成方法およびプログラム
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10810069B2 (en) * 2018-07-17 2020-10-20 Accenture Global Solutions Limited Data processing for component failure determination
US11169920B2 (en) * 2018-09-17 2021-11-09 Micron Technology, Inc. Cache operations in a hybrid dual in-line memory module
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US10838870B2 (en) * 2019-04-17 2020-11-17 EMC IP Holding Company LLC Aggregated write and caching operations based on predicted patterns of data transfer operations
US10936480B2 (en) * 2019-05-31 2021-03-02 Microsoft Technology Licensing, Llc Memory management for multiple process instances
US11275987B1 (en) * 2019-07-09 2022-03-15 Dell Products, L.P. Method and apparatus for optimizing performance of a storage system
US11474828B2 (en) 2019-10-03 2022-10-18 Micron Technology, Inc. Initial data distribution for different application processes
US20210019069A1 (en) * 2019-10-21 2021-01-21 Intel Corporation Memory and storage pool interfaces
US11475126B2 (en) * 2019-10-31 2022-10-18 Dell Products, L.P. Systems and methods for modernizing workspace and hardware lifecycle management in an enterprise productivity ecosystem
US11625327B2 (en) * 2019-12-10 2023-04-11 EMC IP Holding Company LLC Cache memory management
CN113835616A (zh) * 2020-06-23 2021-12-24 华为技术有限公司 应用的数据管理方法、系统和计算机设备
US11500555B2 (en) * 2020-09-04 2022-11-15 Micron Technology, Inc. Volatile memory to non-volatile memory interface for power management
WO2022061727A1 (en) * 2020-09-25 2022-03-31 Alibaba Group Holding Limited Method and apparatus for cache management
US11657112B2 (en) * 2021-04-21 2023-05-23 Dell Products L.P. Artificial intelligence-based cache distribution
US11829364B2 (en) * 2021-06-30 2023-11-28 Amazon Technologies, Inc. Making decisions for placing data in a multi-tenant cache
US20230051781A1 (en) * 2021-08-16 2023-02-16 International Business Machines Corporation Data movement intimation using input/output (i/o) queue management
US20230229352A1 (en) * 2022-01-20 2023-07-20 Micron Technology, Inc. Host training indication for memory artificial intelligence
CN114356247A (zh) * 2022-03-18 2022-04-15 闪捷信息科技有限公司 一种分层存储调度方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279138B1 (en) * 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array

Family Cites Families (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04230508A (ja) 1990-10-29 1992-08-19 Internatl Business Mach Corp <Ibm> 低電力消費メモリ装置
JP3889044B2 (ja) 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US5909540A (en) 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6026475A (en) 1997-11-26 2000-02-15 Digital Equipment Corporation Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6473845B1 (en) 2000-09-28 2002-10-29 Hewlett-Packard Company System and method for dynamically updating memory address mappings
US6515917B2 (en) 2001-04-10 2003-02-04 International Business Machines Corporation Digital-to-analog converter (dac) for dynamic adjustment of off-chip driver pull-up and pull down impedance by providing a variable reference voltage to high frequency receiver and driver circuits for commercial memory
US6646912B2 (en) 2001-06-05 2003-11-11 Hewlett-Packard Development Company, Lp. Non-volatile memory
US7437438B2 (en) 2001-12-27 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for energy efficient data prefetching
EP1552409B1 (en) 2002-08-19 2013-07-24 Broadcom Corporation One-shot rdma
US20040186960A1 (en) 2003-03-20 2004-09-23 Sun Microsystems, Inc. Computer processor data prefetch unit
CN100465955C (zh) * 2004-10-12 2009-03-04 国际商业机器公司 用于高速缓存万维网内容的方法和系统
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US20060095679A1 (en) 2004-10-28 2006-05-04 Edirisooriya Samantha J Method and apparatus for pushing data into a processor cache
US7376681B1 (en) 2004-12-23 2008-05-20 Emc Corporation Methods and apparatus for accessing information in a hierarchical file system
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7571295B2 (en) 2005-08-04 2009-08-04 Intel Corporation Memory manager for heterogeneous memory control
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7933923B2 (en) 2005-11-04 2011-04-26 International Business Machines Corporation Tracking and reconciling database commands
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7496711B2 (en) 2006-07-13 2009-02-24 International Business Machines Corporation Multi-level memory architecture with data prioritization
US8352709B1 (en) 2006-09-19 2013-01-08 Nvidia Corporation Direct memory access techniques that include caching segmentation data
US8135933B2 (en) 2007-01-10 2012-03-13 Mobile Semiconductor Corporation Adaptive memory system for enhancing the performance of an external computing device
US8996834B2 (en) 2007-05-21 2015-03-31 International Business Machines Corporation Memory class based heap partitioning
US8281303B2 (en) 2007-10-31 2012-10-02 Hewlett-Packard Development Company, L.P. Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine
JP5238235B2 (ja) 2007-12-07 2013-07-17 株式会社日立製作所 管理装置及び管理方法
US8375190B2 (en) * 2007-12-11 2013-02-12 Microsoft Corporation Dynamtic storage hierarachy management
US8255631B2 (en) 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
US8082400B1 (en) 2008-02-26 2011-12-20 Hewlett-Packard Development Company, L.P. Partitioning a memory pool among plural computing nodes
US8560761B2 (en) 2008-03-31 2013-10-15 Spansion Llc Memory resource management for a flash aware kernel
US8289760B2 (en) 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
US8316187B2 (en) 2008-07-08 2012-11-20 International Business Machines Corporation Cache memory including a predict buffer
US8131814B1 (en) 2008-07-11 2012-03-06 Hewlett-Packard Development Company, L.P. Dynamic pinning remote direct memory access
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
JP2010086049A (ja) 2008-09-29 2010-04-15 Hitachi Ltd 管理計算機及びその運用方法
US8429665B2 (en) 2010-03-19 2013-04-23 Vmware, Inc. Cache performance prediction, partitioning and scheduling based on cache pressure of threads
JP5221332B2 (ja) 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8321645B2 (en) 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
US8117373B2 (en) 2009-04-30 2012-02-14 Kimon Berlin VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM
JP4990322B2 (ja) 2009-05-13 2012-08-01 株式会社日立製作所 データ移動管理装置及び情報処理システム
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8850151B2 (en) 2010-03-24 2014-09-30 Apple Inc. Hybrid-device storage based on environmental state
US8965819B2 (en) * 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
US9009384B2 (en) 2010-08-17 2015-04-14 Microsoft Technology Licensing, Llc Virtual machine memory management in systems with asymmetric memory
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US8533422B2 (en) 2010-09-30 2013-09-10 Intel Corporation Instruction prefetching using cache line history
US8799554B1 (en) 2010-10-27 2014-08-05 Amazon Technologies, Inc. Methods and system for swapping memory in a virtual machine environment
US8990538B2 (en) 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems
US8561065B2 (en) 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions
KR20140041408A (ko) 2011-01-04 2014-04-04 콘두시브 테크놀로지스 코포레이션 저장 위치 속성 및 데이터 사용량 통계에 기초하여 데이터 저장을 위한 저장 위치 선택
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
JP5664347B2 (ja) 2011-03-04 2015-02-04 ソニー株式会社 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
US8775731B2 (en) 2011-03-25 2014-07-08 Dell Products, L.P. Write spike performance enhancement in hybrid storage systems
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US20120297121A1 (en) 2011-05-17 2012-11-22 Sergey Anatolievich Gorobets Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US9047017B1 (en) * 2011-12-20 2015-06-02 Emc Corporation Techniques for automated evaluation and movement of data between storage tiers
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
WO2013048493A1 (en) 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
US20130145095A1 (en) 2011-12-06 2013-06-06 Lsi Corporation Melthod and system for integrating the functions of a cache system with a storage tiering system
KR20130064521A (ko) 2011-12-08 2013-06-18 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
KR101850318B1 (ko) 2011-12-09 2018-04-20 삼성전자주식회사 가상 메모리 관리 장치 및 방법
US9817761B2 (en) 2012-01-06 2017-11-14 Sandisk Technologies Llc Methods, systems, and computer readable media for optimization of host sequential reads or writes based on volume of data transfer
CN104115109A (zh) 2012-02-08 2014-10-22 株式会社日立制作所 具有多个非易失性半导体存储单元的存储装置及其用于在具有较高残留寿命长度的存储单元中放置热数据而在具有较低残留寿命长度的存储单元中放置冷数据的控制方法
US8849731B2 (en) 2012-02-23 2014-09-30 Microsoft Corporation Content pre-fetching for computing devices
CN102662690B (zh) 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置
US8838887B1 (en) 2012-03-30 2014-09-16 Emc Corporation Drive partitioning for automated storage tiering
US9043530B1 (en) 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate
US9996370B1 (en) 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
WO2014002213A1 (ja) 2012-06-27 2014-01-03 株式会社日立製作所 管理システム及び管理方法
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9128845B2 (en) 2012-07-30 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamically partition a volatile memory for a cache and a memory partition
US10303618B2 (en) 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9817739B1 (en) 2012-10-31 2017-11-14 Veritas Technologies Llc Method to restore a virtual environment based on a state of applications/tiers
US9069658B2 (en) 2012-12-10 2015-06-30 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device
US9164888B2 (en) 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US10514855B2 (en) 2012-12-19 2019-12-24 Hewlett Packard Enterprise Development Lp NVRAM path selection
US9552288B2 (en) 2013-02-08 2017-01-24 Seagate Technology Llc Multi-tiered memory with different metadata levels
US9672230B1 (en) 2013-04-03 2017-06-06 Ca, Inc. Optimized placement of data
JP5577430B1 (ja) 2013-06-11 2014-08-20 株式会社ブリヂストン 空気入りタイヤ
US9984089B2 (en) 2013-06-28 2018-05-29 Vmware, Inc. Techniques for implementing hybrid flash/HDD-based virtual disk files
US20150016046A1 (en) 2013-07-10 2015-01-15 Samsung Electronics Co., Ltd. Ina cabled memory appliance
US20150026509A1 (en) 2013-07-22 2015-01-22 Kabushiki Kaisha Toshiba Storage device having a data stream converter
EP3028154A4 (en) 2013-07-29 2017-03-29 Silicon Graphics International Corp. I/o acceleration in hybrid storage
GB2517493A (en) 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
WO2015029102A1 (ja) 2013-08-26 2015-03-05 株式会社日立製作所 ストレージ装置及び階層制御方法
US9037753B2 (en) 2013-08-29 2015-05-19 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access
US9122503B1 (en) 2013-09-05 2015-09-01 Symantec Corporation Systems and methods for adaptive throttling of input/output requests in a virtual environment
US9513692B2 (en) 2013-09-18 2016-12-06 Intel Corporation Heterogenous memory access
CN105579959B (zh) 2013-09-24 2019-06-07 渥太华大学 硬件加速器虚拟化
US10032246B2 (en) 2013-10-09 2018-07-24 Nvidia Corporation Approach to caching decoded texture data with variable dimensions
US9280456B2 (en) 2013-11-12 2016-03-08 Micron Technology, Inc. Mapping between program states and data patterns
US20150199276A1 (en) 2014-01-13 2015-07-16 Samsung Electronics Co., Ltd. Pre-fetch confirmation queue
KR20150089538A (ko) 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
JP6203937B2 (ja) 2014-03-04 2017-09-27 株式会社日立製作所 計算機およびメモリ制御方法
US10445025B2 (en) 2014-03-18 2019-10-15 Micron Technology, Inc. Apparatuses and methods having memory tier structure and recursively searching between tiers for address in a translation table where information is only directly transferred between controllers
US9472248B2 (en) 2014-03-28 2016-10-18 Intel Corporation Method and apparatus for implementing a heterogeneous memory subsystem
US10628245B2 (en) 2014-04-02 2020-04-21 Pure Storage, Inc. Monitoring of storage units in a dispersed storage network
US20170060769A1 (en) 2014-05-01 2017-03-02 Coho Data, Inc. Systems, devices and methods for generating locality-indicative data representations of data streams, and compressions thereof
KR102068101B1 (ko) 2014-05-08 2020-01-20 마이크론 테크놀로지, 인크. 하이브리드 메모리 큐브 시스템 상호 접속 디렉토리-기반 캐시 일관성 방법론
US20150356125A1 (en) 2014-06-06 2015-12-10 Plexistor Ltd. Method for data placement based on a file level operation
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
CN105574067B (zh) 2014-10-31 2020-01-21 株式会社东芝 项目推荐装置以及项目推荐方法
US10223371B2 (en) 2014-11-21 2019-03-05 Vmware, Inc. Host-based deduplication using array generated data tags
US9727427B2 (en) 2014-12-31 2017-08-08 International Business Machines Corporation Synchronizing storage of data copies in a dispersed storage network
US20160212214A1 (en) 2015-01-16 2016-07-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Tunneled remote direct memory access (rdma) communication
WO2016134035A1 (en) 2015-02-17 2016-08-25 Coho Data, Inc. Virtualized application-layer space for data processing in data storage systems
KR20160116533A (ko) 2015-03-30 2016-10-10 삼성전자주식회사 리프레쉬 동작을 관리하는 메모리 콘트롤러, 메모리 시스템 및 그 동작방법
US10645013B2 (en) 2015-04-02 2020-05-05 Nicira, Inc Data flow identifiers
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
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
US10042782B2 (en) 2015-06-02 2018-08-07 ALTR Solutions, Inc. Immutable datastore for low-latency reading and writing of large data sets
US9639280B2 (en) 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
US10019409B2 (en) 2015-08-03 2018-07-10 International Business Machines Corporation Extending remote direct memory access operations for storage class memory access
US11169925B2 (en) 2015-08-25 2021-11-09 Samsung Electronics Co., Ltd. Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
US9535740B1 (en) 2015-08-26 2017-01-03 International Business Machines Corporation Implementing dynamic adjustment of resources allocated to SRIOV remote direct memory access adapter (RDMA) virtual functions based on usage patterns
US10430723B1 (en) * 2015-09-29 2019-10-01 EMC IP Holding Company LLC Storage system with machine learning based skew prediction
US20170123796A1 (en) * 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
US20170147427A1 (en) 2015-11-23 2017-05-25 Honeywell International, Inc. System and method for software simulation for testing a safety manager platform
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10019372B2 (en) 2015-12-16 2018-07-10 Western Digital Technologies, Inc. Caching sensing device data in data storage device
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US10148570B2 (en) 2015-12-29 2018-12-04 Amazon Technologies, Inc. Connectionless reliable transport
US10719237B2 (en) 2016-01-11 2020-07-21 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
US10592114B2 (en) 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10216536B2 (en) 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
US20170285967A1 (en) 2016-03-29 2017-10-05 Samsung Electronics Co., Ltd. Multi-ware smart ssd
US20170285992A1 (en) 2016-04-01 2017-10-05 Intel Corporation Memory subsystem with narrow bandwidth repeater channel
US10778762B2 (en) 2016-04-18 2020-09-15 Rancher Labs, Inc. Cloud computing service architecture
CN109073350B (zh) 2016-04-29 2021-07-02 思科技术公司 应用性能数据的预测性汇总和缓存
US10282261B2 (en) 2016-06-20 2019-05-07 Vmware, Inc. Pooled memory heartbeat in shared memory architecture
JP2018005446A (ja) * 2016-06-30 2018-01-11 富士通株式会社 情報処理装置、ストレージ制御プログラム、及びストレージ制御方法
US10176099B2 (en) 2016-07-11 2019-01-08 Intel Corporation Using data pattern to mark cache lines as invalid
US11138160B2 (en) 2016-07-13 2021-10-05 International Business Machines Corporation Application performance using multidimensional predictive algorithm for automated tiering mechanisms
US10083123B2 (en) 2016-08-10 2018-09-25 Vmware, Inc. Page-fault latency directed virtual machine performance monitoring
US10866897B2 (en) 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
US10120797B1 (en) 2016-09-30 2018-11-06 EMC IP Holding Company LLC Managing mapping metadata in storage systems
CN108008911A (zh) 2016-11-01 2018-05-08 阿里巴巴集团控股有限公司 读写请求处理方法及装置
TWI596541B (zh) 2016-11-30 2017-08-21 財團法人工業技術研究院 資料存取系統、資料存取裝置及資料存取方法
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US11392488B2 (en) 2017-04-07 2022-07-19 Keysight Technologies Singapore (Sales) Pte. Ltd. Optimizing storage of application data in memory
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US10594759B2 (en) 2017-05-09 2020-03-17 EMC IP Holding Company LLC Efficiently executing concurrent operations that depend on each other in a streaming data environment
US20190004841A1 (en) 2017-06-30 2019-01-03 Microsoft Technology Licensing, Llc Memory Sharing For Virtual Machines
US20190034284A1 (en) * 2017-07-25 2019-01-31 Hewlett Packard Enterprise Development Lp Sequencing host i/o requests and i/o snapshots
US10289566B1 (en) 2017-07-28 2019-05-14 EMC IP Holding Company LLC Handling data that has become inactive within stream aware data storage equipment
US10671303B2 (en) 2017-09-13 2020-06-02 International Business Machines Corporation Controlling a storage system
US10298496B1 (en) 2017-09-26 2019-05-21 Amazon Technologies, Inc. Packet processing cache
KR102414047B1 (ko) 2017-10-30 2022-06-29 에스케이하이닉스 주식회사 통합 메모리 디바이스 및 그의 동작 방법
US10394706B2 (en) 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US10572389B2 (en) 2017-12-12 2020-02-25 Advanced Micro Devices, Inc. Cache control aware memory controller
US20190196996A1 (en) 2017-12-21 2019-06-27 Advanced Micro Devices, Inc. Dynamically determining memory access burst length
US20190243787A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Memory Systems having Controllers Embedded in Packages of Integrated Circuit Memory
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US20190243771A1 (en) 2018-02-05 2019-08-08 Micron Technology, Inc. Accelerate Data Access in Memory Systems via Data Stream Segregation
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10922221B2 (en) 2018-03-28 2021-02-16 Micron Technology, Inc. Memory management
US10540100B2 (en) 2018-04-10 2020-01-21 Western Digital Technologies, Inc. Mapping-based wear leveling for non-volatile memory
US20190370043A1 (en) 2018-04-30 2019-12-05 Nutanix, Inc. Cooperative memory management
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279138B1 (en) * 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022211285A1 (ko) * 2021-03-30 2022-10-06 삼성전자 주식회사 메모리를 관리하기 위한 전자 장치 및 그의 동작 방법

Also Published As

Publication number Publication date
US11669260B2 (en) 2023-06-06
US20200319813A1 (en) 2020-10-08
US11354056B2 (en) 2022-06-07
US20220326868A1 (en) 2022-10-13
TW201935248A (zh) 2019-09-01
EP3750070A1 (en) 2020-12-16
CN111684434A (zh) 2020-09-18
CN111684434B (zh) 2023-09-29
EP3750070A4 (en) 2021-06-16
TWI711925B (zh) 2020-12-01
KR102457071B1 (ko) 2022-10-21
US20190243570A1 (en) 2019-08-08
US10782908B2 (en) 2020-09-22
WO2019152191A1 (en) 2019-08-08

Similar Documents

Publication Publication Date Title
KR102457071B1 (ko) 다중 계층 메모리 시스템에서의 예측 데이터 오케스트레이션
US11573901B2 (en) Predictive paging to accelerate memory access
US10880401B2 (en) Optimization of data access and communication in memory systems
US11977787B2 (en) Remote direct memory access in multi-tier memory systems
KR20200108358A (ko) 데이터 스트림 분리를 통한 메모리 시스템에서의 데이터 액세스 가속화
US11561845B2 (en) Memory access communications through message passing interface implemented in memory systems
KR20200108363A (ko) 집적 회로 메모리의 패키지에 내장된 컨트롤러를 갖는 메모리 시스템
US20190243756A1 (en) Memory Virtualization for Accessing Heterogeneous Memory Components

Legal Events

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