KR20230015334A - 메모리에서의 추론 - Google Patents

메모리에서의 추론 Download PDF

Info

Publication number
KR20230015334A
KR20230015334A KR1020227039808A KR20227039808A KR20230015334A KR 20230015334 A KR20230015334 A KR 20230015334A KR 1020227039808 A KR1020227039808 A KR 1020227039808A KR 20227039808 A KR20227039808 A KR 20227039808A KR 20230015334 A KR20230015334 A KR 20230015334A
Authority
KR
South Korea
Prior art keywords
memory
subset
data
enhanced
processing system
Prior art date
Application number
KR1020227039808A
Other languages
English (en)
Inventor
조브 헨더슨
다니엘 캠벨
라이언 페닝턴
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20230015334A publication Critical patent/KR20230015334A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 개시의 특정 양태들은, 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법을 제공하며, 상기 방법은: 호스트 프로세싱 시스템으로부터 향상된 메모리 모듈에서 데이터를 수신하는 단계; 호스트 프로세싱 시스템-어드레서블 메모리에 데이터를 저장하는 단계; 호스트 프로세싱 시스템-어드레서블 메모리로부터 컴퓨팅 코어-어드레서블 메모리로 데이터를 전송하는 단계; 프로세싱된 데이터를 생성하기 위해 향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하는 단계; 컴퓨팅 코어-어드레서블 메모리로부터 프로세싱된 데이터를 호스트 프로세싱 시스템-어드레서블 메모리로 전송하는 단계; 및 호스트 프로세싱 시스템-어드레서블 메모리를 통해 프로세싱된 데이터를 호스트 프로세싱 시스템에 제공하는 단계를 포함한다.

Description

메모리에서의 추론
관련 출원들에 대한 상호 참조
본 출원은 2020년 5월 26일에 출원된 미국 특허 출원 번호 16/883,869 의 이익 및 우선권을 주장하며, 그 전체 내용은 여기에 참조로 포함된다.
본 개시의 양태들은 비전통적인 컴퓨팅 하드웨어에서 머신 러닝 및 인공 지능 작업을 수행하는 것과 관련되며, 특히 메모리 하드웨어에서 이러한 작업을 수행하는 것에 관한 것이다.
빅 데이터 시대에 머신 러닝과 인공 지능 역량에 대한 수요가 급격히 증가했다. 종래에, 머신 러닝은 예측, 분류 등과 같은 인공 지능 작업에 대한 추론을 그 후에 생성할 수 있는 모델을 생성하는데 사용되었다. 추론 능력에 대한 수요가 증가함에 따라, 컴퓨팅 하드웨어 제조업체는 데스크톱 컴퓨터 및 서버와 같은 기존 컴퓨팅 플랫폼은 물론 모바일 디바이스들 및 에지 프로세싱 디바이스와 같은 새로운 종류의 다른 프로세싱 시스템에서 추론 능력의 밀도를 확장하려고 추구한다.
전통적으로, 머신 러닝 및 인공 지능 "가속기 (accelerators)" 는 기본 컴퓨팅 기반시설의 능력을 확장하기 위해 하드웨어 확장 인터페이스 (예를 들어, 마더보드의 PCIe 슬롯) 에 의해 시스템에 추가되었다. 불행히도, 가속기에 이러한 하드웨어 확장 인터페이스를 사용한다는 것은 동일한 인터페이스가 네트워킹, 그래픽 렌더링, 보안, 사운드 프로세싱 및 기타 일반적인 컴퓨팅 작업과 같은 다른 목적으로 사용될 수 없다는 것을 의미한다. 따라서, 기존 프로세싱 시스템에 추가적인 머신 러닝 및 인공 지능 최적화된 컴퓨팅 하드웨어를 추가하면 다른 필수 컴퓨팅 컴포넌트를 희생하는 경우가 종종 있다.
따라서, 필요한 것은 다른 필수 컴포넌트를 희생하지 않으면서 기존 프로세싱 시스템에 추가적인 머신 러닝 및 인공 지능 컴퓨팅 능력을 추가하는 시스템 및 방법이다.
본 개시의 특정 양태들은 향상된 메모리 모듈을 제공하고, 향상된 메모리 모듈은: 컴퓨팅 코어; 및 하나 이상의 듀얼 모드 메모리 요소들을 포함하며, 상기 향상된 메모리 모듈은: 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 그리고 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당하도록; 호스트 프로세싱 시스템으로부터 데이터를 수신하도록; 프로세싱된 데이터를 생성하기 위해 상기 컴퓨팅 코어로 상기 데이터를 프로세싱하도록; 프로세싱된 데이터를 상기 메모리의 제 1 서브세트를 통해 상기 호스트 프로세싱 시스템에 제공하도록 구성된다.
추가 양태들은 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법을 제공하며, 상기 방법은: 향상된 메모리 모듈의 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 및 향상된 메모리 모듈의 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당함으로써 향상된 메모리 모듈을 초기화하는 단계; 호스트 프로세싱 시스템으로부터 향상된 메모리 모듈에서 데이터를 수신하는 단계; 프로세싱된 데이터를 생성하기 위해 향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하는 단계; 및 프로세싱된 데이터를 메모리의 제 1 서브세트를 통해 호스트 프로세싱 시스템에 제공하는 단계를 포함한다.
추가 양태들은 호스트 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 프로세싱 시스템으로 하여금 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법을 수행하도록 하는 명령들을 포함하는 비일시적인 컴퓨터 판독가능 매체를 제공하고, 상기 방법은: 향상된 메모리 모듈의 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 및 향상된 메모리 모듈의 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당함으로써 향상된 메모리 모듈을 초기화하는 단계; 호스트 프로세싱 시스템으로부터 향상된 메모리 모듈에서 데이터를 수신하는 단계; 프로세싱된 데이터를 생성하기 위해 향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하는 단계; 및 프로세싱된 데이터를 메모리의 제 1 서브세트를 통해 호스트 프로세싱 시스템에 제공하는 단계를 포함한다.
이하의 설명 및 관련된 도면들은 하나 이상의 실시형태들의 특정 예시적인 특징들을 상세하게 제시한다.
첨부된 도면은 하나 이상의 실시형태의 특정 양태들을 도시하고 따라서 본 개시의 범위를 제한하는 것으로 간주되어서는 안된다.
도 1 은 메모리 집적 가속기를 포함하는 향상된 메모리 모듈의 예를 도시한다.
도 2 는 도 1 에 대해 설명된 바와 같이 향상된 메모리 모듈을 포함하는 예시적인 프로세싱 시스템을 도시한다.
도 3a ~ 도 3c 는 향상된 메모리 모듈의 예시적인 구성을 도시한다.
도 4 는 향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소로 데이터를 전송하기 위한 예시적인 방법을 도시한다.
도 5 는 향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소로부터 데이터를 전송하기 위한 예시적인 방법을 도시한다.
도 6 은 향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하기 위한 예시적인 방법을 도시한다.
도 7 은 향상된 메모리 모듈을 구성하기 위한 예시적인 방법을 도시한다.
도 8 은 향상된 메모리 모듈을 포함하는 프로세싱 시스템에 대한 예시적인 메모리 맵핑을 도시한다.
도 9 는 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 예시적인 방법을 도시한다.
도 10 은 향상된 메모리 모듈로 데이터 프로세싱을 수행하도록 구성될 수 있는 예시적인 전자 디바이스를 도시한다.
이해를 용이하게 하기 위하여, 동일한 도면 부호들이, 가능한 경우, 도면들에 공통되는 동일한 요소들을 표기하기 위하여, 사용되었다. 일 실시형태의 요소들 및 특징들은 추가 기재없이도 다른 실시형태들에 유익하게 통합될 수도 있음이 고려된다.
본 개시의 양태들은 컴퓨터, 서버 및 기타 컴퓨터 프로세싱 디바이스들과 같은 프로세싱 시스템의 메모리 하드웨어에 추가적인 머신 러닝 및 인공 지능 컴퓨팅 능력을 추가하기 위한 시스템 및 방법을 제공한다.
종래의 컴퓨터 프로세싱 시스템은 DIMM 인터페이스와 같은 인터페이스를 통해 DRAM 모듈과 같은 메모리 모듈에 그리고 PCIe 인터페이스와 같은 다른 인터페이스를 통해 다른 주변기기들에 연결된 프로세서를 포함할 수 있다. 머신 러닝 및 인공 지능 "가속기" 에 대한 수요가 증가함에 따라, 기존 컴퓨터 프로세싱 시스템에 대한 일 방안은 이러한 가속기를 이용가능한 PCIe 슬롯과 같은 이용가능한 시스템 인터페이스에 연결하는 것이었다. 그러나, 이러한 주변 인터페이스 슬롯의 개수는 임의의 주어진 시스템에서 제한될 수 있으며, 특히 종래의 컴퓨터 프로세싱 시스템은 일반적으로 PCIe 슬롯보다 더 많은 DIMM 슬롯을 포함할 수 있다.
트레이닝 및 추론과 같은 머신 러닝 및 인공 지능 작업을 수행하도록 구성된 집적 가속기를 포함하는 향상된 메모리 모듈이 여기에 설명된다. 메모리 집적 가속기는, 예를 들어 데이터 및 명령 통신을 위한 표준 메모리 인터페이스를 사용하여 LRDIMM (Load Reduced DIMM) 또는 RDIMM (Registered DIMM) 과 같은 산업 표준 DIMM (dual inline memory modules) 에서 구현될 수 있다. 일부 실시형태에서, 향상된 메모리 모듈은 예를 들어 "ML-DIMM", "AI-DIMM", 또는 "추론 DIMM" 으로 지칭될 수 있다.
다양한 실시형태에서, 메모리 집적 가속기는 하나 이상의 프로세싱 코어를 포함하고, 향상된 메모리 모듈에 집적되는 SoC (system on chip) 로서 추가로 구성될 수 있다. 프로세싱 코어는 종래의 저장 및 검색을 넘어 데이터의 온-메모리 프로세싱을 가능하게 한다. 특히, 프로세싱 코어는 온-메모리 머신 러닝 및 인공 지능 작업을 수행하도록 구성될 수 있다.
또한, 여기에 설명된 향상된 메모리 모듈은 표준 메모리 모듈 구성에서와 같이 호스트 프로세싱 시스템과 온-메모리 머신 러닝 및 인공 지능 작업을 위한 메모리 집적 가속기 사이에서 각각의 향상된 메모리 모듈의 메모리 요소 및/또는 메모리 공간을 분할 및 할당하도록 구성될 수 있다. 일부 실시형태에서, 펌웨어 요소는 부트 시간에서 호스트 프로세싱과 온-메모리 프로세싱 사이의 메모리 할당을 구성할 수 있다.
향상된 메모리 모듈에서 메모리의 분할은 또한 향상된 메모리 모듈을 포함하는 디바이스 상에 설치된 프로그램, 애플리케이션에 의해 동적으로 구성될 수 있으므로, 전체 프로세싱 시스템 성능이 다양한 작업 및 성능 요구대로 조정될 수 있다. 그러면 유리하게는, 향상된 메모리 모듈이 일반 메모리 모듈로 작용하도록 구성되어, 호스트 프로세싱 시스템에 이용가능한 메모리의 용량을 최대화하거나, 해당 메모리의 일부 또는 전체를 메모리 집적 가속기에 할당하도록 구성되어, 호스트 프로세싱 시스템의 머신 러닝 및 인공 지능 컴퓨팅 용량을 최대화할 수 있다.
따라서 여기에 설명된 실시형태는, 유리하게는 이용가능한 인터페이스 (예를 들어, PCIe) 의 부족으로 인해 다른 필수 컴포넌트의 사용을 제거하거나 방지하지 않고, 추가 물리적 인터페이스를 추가하거나 수정하지 않고, 완전히 새로운 인터페이스를 구현할 필요없이, 머신 러닝 및 인공 지능 작업과 같은 컴퓨팅 작업을 위한 프로세싱 시스템에 의해 추가 컴퓨팅 리소스가 활용될 수 있게 한다. 추가 컴퓨팅 리소스는 기존 프로세싱 시스템 뿐만 아니라 새로운 프로세싱 시스템을 위한 용량을 크게 증가시킨다. 또한, 여기에 설명된 실시형태는 사용자가 프로세싱 시스템의 활용성을 최대화하기 위해 다른 상황에서 다른 작동 모드를 구성하도록 선택하도록 유리하게 허용하는 듀얼 작동 모드 아키텍처를 활용한다.
본원에 설명된 실시형태들은 많은 상황에서 사용될 수 있다. 예를 들어, 서버를 사용하는 데이터 센터는 동일한 양의 컴퓨팅 용량을 가지면서 더 적은 수의 서버를 조달하기 위해 여기에 설명된 실시형태들을 구현할 수 있으며, 이는 장비 비용, 전기 및 냉각 비용, 공간 비용을 절약하고 보다 전력 효율적인 프로세싱 센터를 제공한다. 다른 예로서, 데스크탑 및/또는 소비자 등급 컴퓨팅 시스템은 (예를 들어, 클라우드 프로세싱 서비스에 의해 제공되는) 외부 데이터 프로세싱 능력에 의존하기보다는 개선된 데이터 프로세싱 능력을 홈 컴퓨터에 제공하기 위해 여기에 설명된 실시형태를 구현할 수 있다. 또 다른 예로서, 사물 인터넷 (IoT) 디바이스들은 데이터 프로세싱 능력을 완전히 새로운 유형의 디바이스로 확장하고 "에지" 에서 프로세싱 (예를 들어, 머신 러닝 및 인공 지능 추론) 을 추가로 가능하게 하기 위해 여기에 설명된 실시형태를 구현할 수 있다.
메모리 집적 프로세싱 코어를 가진 예시적인 향상된 메모리 모듈
도 1 은 메모리 집적 가속기 (104) 를 포함하는 향상된 메모리 모듈 (102) 의 예를 도시한다.
일부 실시형태에서, 향상된 메모리 모듈 (102) 은 LR-DIMM 폼 팩터와 같은 표준화된 폼 팩터, 또는 메모리 모듈을 위한 다른 표준화된 폼 팩터에 따라 형성된다. 향상된 메모리 모듈 (102) 에 대한 표준화된 폼 팩터를 활용하면 기본 시스템 인터페이스 또는 메모리 액세스 프로토콜에 대한 수정 없이 기존 프로세싱 시스템에 통합될 수 있다. 이 예에서, 메모리 모듈 (102) 은 프로세싱 시스템에서 DIMM 슬롯과 인터페이스하기 위한 핀 (116) 을 포함한다.
메모리 모듈 (102) 은, 예를 들어 동적 랜덤 액세스 메모리 (DRAM), 동기 DRAM (SDRAM), 저전력 이중 데이터 레이트 (LPDDR) DRAM, 고대역폭 메모리 (HBM), 그래픽 DDR (GDDR) 메모리 및 기타일 수 있는 복수의 메모리 요소들 (112A-F) 을 포함한다. 일부 예들에서, 메모리 요소들 (112A-F) 은 상이한 유형들의 메모리 요소들의 혼합을 포함할 수 있다.
메모리 요소들 (112A-F) 각각은 인접한 메모리 버퍼 (114A-F) 에 연결되며, 이는 호스트 프로세싱 시스템 (도시되지 않음) 에 의해 메모리 요소들 (112A-F) 로부터 데이터 판독 및 이에 대한 데이터 기록을 버퍼링하는데 사용된다.
메모리 요소들 (112A-F) 은 일반적으로 듀얼 모드 또는 듀얼 목적 메모리 요소들로 지칭될 수 있는데, 그 이유는 이들의 메모리가 온-메모리 프로세싱을 수행하기 위해 메모리 집적 가속기 (104) 에 전체적으로 또는 부분적으로 할당될 수 있고 그리고/또는 종래의 시스템 메모리 기능을 수행하기 위한 호스트 프로세싱 시스템에 할당될 수 있다. 도 3a ~ 도 3c 는 다양한 메모리 할당의 몇 가지 예를 설명한다.
메모리 집적 가속기 (104) 는 메모리 모듈 (102) 을 초기화하도록 구성될 수 있는 펌웨어를 저장하도록 구성된 플래시 메모리 (106) 를 포함한다. 예를 들어, 펌웨어는 컴퓨팅 코어(들) (108) 및 향상된 메모리 모듈 상의 임의의 다른 로직을 초기화하도록 구성될 수 있다. 추가적으로, 메모리 컨트롤러 (도시되지 않음) 는 컴퓨팅 코어(들) (108) 및/또는 호스트 프로세싱 시스템에 의한 사용을 위해 메모리 요소 (112A-F) 를 초기화하도록 구성될 수 있다.
일부 실시형태들에서, 메모리 요소들 (112A-F) 의 초기화는 가속기 (104) 에 의해 핸들링될 수 있으며, 이는 호스트 프로세싱 시스템의 부트 시간을 (예를 들어, 부트 시간을 감소시킴으로써) 개선할 수 있다. 이러한 경우에, 호스트 프로세싱 시스템의 메모리 드라이버는 메모리 인터페이스를 초기화하는데만 필요하다.
일부 실시형태에서, 플래시 메모리 모듈 (106) 의 펌웨어는 부트 시간에서 메모리 모듈 (102) 을 구성하고 메모리 용량 (예를 들어, 메모리 요소 및/또는 메모리 범위, 어드레스 등을 포함) 의 일부 또는 전부를 가속기 (104) 에 할당 (또는 맵핑) 할 수 있다. 플래시 메모리 모듈 (106) 의 펌웨어는 가속기 (104) 에 할당된 메모리 양이 런타임 사이에 변경될 수 있도록 업데이트될 수 있다. 메모리 요소 (112A-F) 로부터의 메모리 (예를 들어, 메모리 어드레스의 범위) 가 부트 시간에 할당되는 실시형태에서, 집적 프로세싱 시스템은 남은 이용가능한 메모리 (가속기 (104) 에 할당된 메모리 제외) 만을 "볼" 것이며 가속기 (104) 에 할당된 메모리에 기록하려고 하지 않아, 메모리 충돌을 피할 수 있다.
일부 실시형태에서, 플래시 메모리 모듈 (106) 의 펌웨어는 부트 시간에 초기 메모리 할당을 구성할 수 있으며, 이는 집적 프로세싱 시스템으로부터의 명령에 의해 동적으로 변경될 수 있다. 그러한 경우에, 집적 프로세싱 시스템의 운영 시스템은 충돌을 피하기 위해 프로세싱 시스템 사용을 위해 메모리를 동적으로 재할당하도록 구성될 수 있다.
가속기 (104) 는 트레이닝 및 추론과 같은 머신 러닝 및 인공 지능 작업을 포함하는 다양한 유형의 프로세싱 작업을 수행하도록 구성될 수 있는 하나 이상의 컴퓨팅 코어(들) (108) 를 더 포함한다. 일부 실시형태에서, 컴퓨팅 코어 (108) 중 하나 이상은 몇 가지 예를 들면 ARM™ 아키텍처, RISC (reduced instruction set computer) 아키텍처, 또는 CISC (complex instruction set architecture computer) 에 기반할 수 있다.
일부 실시형태들에서, 컴퓨팅 코어(들) (108) 는 레지스트리 클록 드라이버 칩 또는 종래의 메모리 모듈 상의 회로의 기능을 대체하고 통합한다.
가속기 (104) 는 컴퓨팅 코어(들) (108), 또는 즉 단일 모드 또는 단일 목적 메모리 요소 전용인 복수의 메모리 요소 (110A-B) 를 더 포함한다. 메모리 요소 (110A-B) 가 컴퓨팅 코어(들) (108) 전용이므로, 메모리 요소 (110A-B) 와 관련된 메모리는 호스트 프로세싱 시스템에 의해 어드레서블 될 수 없다. 전용 메모리 요소 (110A-B) 는 가속기 (104) 가 항상 컴퓨팅 작업을 수행할 수 있게 한다. 일부 예에서, 메모리 요소 (110A-B) 는 트레이닝 또는 추론과 같은 머신 러닝 또는 인공 지능 작업을 수행하도록 구성된 머신 러닝 모델에 대한 가중치, 편향 등과 같은 모델 파라미터를 로드하도록 구성될 수 있다.
일부 실시형태에서, 가속기 (104) 는 메모리 모듈 (102) 과 집적되는 SOC (system on chip) 으로서 구현될 수 있다.
특히, 도 1 에서 각 유형의 요소 (예를 들어, 메모리, 버퍼, 플래시, 컴퓨팅 코어 등) 의 수는 하나의 예일 뿐이고, 다른 많은 구성이 가능하다. 또한, 메모리 모듈 (102) 의 단일 측 상에 모든 요소가 있는 것으로 도시되어 있지만, 다른 실시형태에서 메모리 모듈 (102) 은 반대 측 상에 추가 메모리 요소, 버퍼, 컴퓨팅 코어, 플래시 메모리 모듈 등과 같은 추가 요소를 포함할 수 있다.
향상된 메모리 모듈을 포함하는 예시적인 프로세싱 시스템
도 2 는 도 1 에 대해 설명된 바와 같이 102 와 같은 향상된 메모리 모듈을 포함하는 예시적인 프로세싱 시스템 (200) 을 도시한다.
이 예에서, 프로세싱 시스템 (200) 은 운영 시스템 (OS) 사용자 공간 (202), OS 커널 공간 (212), 및 CPU (218) 를 포함하는 소프트웨어 스택을 구현한다. 소프트웨어 스택은 향상된 메모리 모듈 (224A, 224B) 과 인터페이스하도록 구성된다.
일반적으로, 운영 시스템은 악의적이거나 잘못된 소프트웨어 거동으로부터 메모리 보호 및 하드웨어 보호를 제공하기 위해 202 와 같은 OS 사용자 공간과 212 와 같은 OS 커널 공간 사이에서 가상 메모리를 분리하도록 구성될 수 있다. 이 예에서, OS 사용자 공간 (202) 은 ML/AI 애플리케이션 (208) 및 가속기 런타임 애플리케이션 (210) 과 같은 애플리케이션 소프트웨어가 실행되는 메모리 영역이다. 반면에, 커널 공간 (212) 은 예를 들어 권한 있는 운영 시스템 커널, 커널 확장 및 메모리 드라이버 (214) 및 가속기 드라이버 (216) 와 같은 디바이스 드라이버를 실행하기 위해 예약된 메모리 공간이다.
또한 이 예에서, OS 사용자 공간 (202) 은 데이터 (206) 를 프로세싱하도록 구성된 하나 이상의 모델(들) (204) (예를 들어, 인공 신경망 모델과 같은 머신 러닝 모델) 을 구현할 수 있는 머신 러닝 및/또는 인공 지능 애플리케이션 (208) 을 포함한다. 모델(들) (204) 은 예를 들어 가중치, 편향, 및 다른 파라미터를 포함할 수 있다. 데이터 (206) 는 예를 들어 비디오 데이터, 이미지 데이터, 오디오 데이터, 텍스트 데이터, 및 모델(들) (204) 이 이미지 인식 및 분할, 음성 인식 및 번역, 가치 예측 등과 같은 다양한 머신 러닝 작업을 수행하도록 작동할 수 있는 다른 유형의 데이터를 포함할 수 있다.
ML/AI 애플리케이션 (208) 은 향상된 메모리 모듈 (224A-B) 에서 발견되는 것과 같은 프로세싱 가속기에 데이터 프로세싱 요청을 지시하도록 구성된 사용자 공간 프로세스인 가속기 런타임 애플리케이션 (210) 과 인터페이스하도록 추가로 구성된다. 특히, 단일 ML/AI 애플리케이션 (208) 이 도 2 에 도시되어 있지만, 이는 단지 하나의 예이고, 다른 유형의 프로세싱 애플리케이션이 OS 사용자 공간 (202) 에 존재할 수 있고 향상된 메모리 모듈 (224A-B) 을 활용하도록 구성될 수 있다.
가속기 런타임 애플리케이션 (210) 은 OS 커널 공간 (212) 에서 가속기 드라이버 (216) 와 인터페이스하도록 구성된다. 일반적으로, OS 커널 공간 (212) 의 드라이버는 프로세싱 시스템 (200) 과 같은 프로세싱 시스템에 부착된 특정 유형의 디바이스를 제어하도록 구성된 소프트웨어이다. 예를 들어, 드라이버는 운영 시스템 및 기타 컴퓨터 프로그램이 하드웨어 디바이스에 대한 정확한 세부 사항을 알 필요 없이 하드웨어 디바이스의 기능에 액세스할 수 있도록 하는 메모리 관리 유닛 (220) 과 같은 하드웨어 디바이스에 소프트웨어 인터페이스를 제공할 수 있다.
이 예에서, 가속기 드라이버 (216) 는 메모리 드라이버 (214) 에 의해서 향상된 메모리 모듈 (224A-B) 에 대한 액세스를 제공하도록 구성된다. 일부 실시형태들에서, 가속기 드라이버 (216) 는 향상된 메모리 모듈 (224A-B) 에 의해 사용되는 프로토콜을 시행하도록 구성된다. 이를 위해, 가속기 드라이버 (216) 는 메모리 드라이버 (214) 와 상호작용하여 향상된 메모리 모듈 (224A-B) 에 명령을 보낼 수 있다. 예를 들어, 이러한 명령은 호스트 프로세싱 시스템에 할당된 메모리로부터 향상된 메모리 모듈 (224A-B) 의 가속기에 (예를 들어, 컴퓨팅 코어에) 할당된 메모리로 데이터를 이동시키는데; 데이터 프로세싱을 시작하는데; 또는 가속기에 할당된 메모리로부터 호스트 프로세싱 시스템에 할당된 메모리로 데이터를 이동시키는데 사용될 수 있다.
일부 실시형태에서, 가속기 드라이버 (216) 는 향상된 메모리 모듈 (224A-B) 의 메모리에 기록하거나 메모리로부터 판독하기 위해 특정 메모리 어드레스를 사용하여 프로토콜을 구현할 수 있다. 일부 경우에, 메모리 어드레스는 향상된 메모리 모듈에 물리적으로 맵핑될 수 있다. 가속기 드라이버 (216) 는 또한 OS 사용자 공간 (202) 에 액세스할 수 없는 향상된 메모리 모듈 (224A-B) 상의 메모리 어드레스에 액세스할 수 있으며, 이는 향상된 메모리 모듈 (224A-B) 의 가속기에 할당된 메모리에 데이터를 복사한 다음 이러한 향상된 메모리 모듈의 컴퓨팅 코어에 데이터를 복사하는데 사용될 수 있다.
또한, 가속기 드라이버 (216) 는 메모리 드라이버 (214) 와 인터페이스하도록 구성된다. 메모리 드라이버 (214) 는 향상된 메모리 모듈 (224A-B) 의 메모리 요소에 대한 저수준 액세스를 제공하도록 구성된다. 예를 들어, 메모리 드라이버 (214) 는 가속기 드라이버 (216) 에 의해 생성된 명령을 향상된 메모리 모듈 (224A-B) 에 직접 전달하도록 구성될 수 있다. 메모리 드라이버 (214) 는 운영 시스템의 메모리 관리의 일부일 수 있지만, 여기에 설명된 향상된 메모리 모듈 기능을 가능하게 하도록 수정될 수 있다. 예를 들어, 메모리 드라이버 (214) 는 가속기에 (예를 들어, 컴퓨팅 코어에) 할당된 메모리와 향상된 메모리 모듈 (224A-B) 내의 호스트 프로세싱 시스템에 할당된 메모리 간에 데이터가 복사되는 기간 동안 향상된 메모리 모듈 (224A-B) 에 대한 액세스를 차단하도록 구성될 수 있다.
메모리 드라이버 (214) 는 CPU (218) 와 같은 프로세서와 관련된 메모리 및 캐싱 (caching) 작동을 관리하도록 구성된 하드웨어 컨포넌트인 메모리 관리 유닛 (MMU) (220) 과 인터페이스하도록 구성된다.
메모리 관리 유닛 (220) 은 호스트 프로세싱 시스템의 메인 메모리로 가고 그리고 그로부터 오는 데이터의 흐름을 관리하도록 구성된 하드웨어 컴포넌트인 메모리 컨트롤러 (222) 와 인터페이스하도록 구성된다. 일부 실시형태들에서, 메모리 컨트롤러 (222) 는 CPU (218) (이 경우에, 집적 메모리 컨트롤러 (IMC) 로 지칭될 수 있음) 와 같은 마이크로프로세서의 집적 부분인 것과 같이 별도의 칩이거나 다른 칩에 집적된다. 메모리 컨트롤러 (222) 는 대안적으로 메모리 칩 컨트롤러 (MCC) 또는 메모리 컨트롤러 유닛 (MCU) 으로 지칭될 수 있다.
이 예에서, 메모리 컨트롤러 (222) 는 향상된 메모리 모듈 (224A-B) 로 그리고 그로부터 데이터 흐름을 제어하도록 구성된다. 일부 실시형태에서, 향상된 메모리 모듈 (224A-B) 은 전술한 바와 같이 향상된 DIMM 일 수 있다.
향상된 메모리 모듈 (224A-B) 은 프로세싱 시스템 (200) 의 요소들과의 통신을 가능하게 하는 드라이버 (226A-B) 를 각각 포함한다. 예를 들어, 드라이버 (226A-B) 는 메모리 컨트롤러 (222) 와의 DIMM 인터페이스를 통해 프로세싱 시스템 (200) 의 다른 요소들과의 통신을 가능하게 할 수 있다.
일반적으로 말해서, ML/AI 애플리케이션 (208) 은 가속기 드라이버 (216) 에 요청을 통신한 다음 다른 종래의 메모리 드라이버일 수 있는 메모리 드라이버 (214) 로 통신하는 가속기 런타임 애플리케이션 (210) 을 통해 향상된 메모리 모듈에 의해 수행될 모델 (204) 을 통해 데이터 (206) 의 프로세싱을 요청할 수 있다. 메모리 드라이버 (214) 는 메모리 관리 유닛 (220) 및 메모리 컨트롤러 (222) 를 통해 하나 이상의 향상된 메모리 모듈 (224A-B) 에 프로세싱 명령 및 데이터를 라우팅할 수 있다. 이는 프로세싱 흐름의 한 예일 뿐이며 다른 것도 가능하다.
일부 실시형태에서, 다수의 향상된 메모리 모듈 (예를 들어, 224A-B) 이 동일한 애플리케이션 (예를 들어, ML/AI 애플리케이션 (208)) 에 사용되면, 그 후 가속기 런타임 애플리케이션 (210) 및 가속기 드라이버 (216) 는 시스템에 걸쳐 데이터를 관리하기 위해 협력할 수 있다. 예를 들어, 가속기 런타임 애플리케이션 (210) 은 가속기 드라이버 (216) 로부터 전체 이용가능한 가속기 할당 메모리 (및 향상된 메모리 모듈의 개수) 를 요청할 수 있고 그 후 단일 향상된 메모리 모듈이 전체 작업부하를 처리할 수 없는 경우에 향상된 메모리 모듈들 사이의 작업부하를 가능한 한 효율적으로 분할할 수 있다. 다른 예로서, 다수의 작업부하 및 다수의 향상된 메모리 모듈로, 가속기 런타임 애플리케이션 (210) 은 성능을 최대화하기 위해 이용가능한 향상된 메모리 모듈로 작업부하를 분할하도록 구성될 수 있다.
CPU (218) 는 일반적으로 자체 프로세싱 코어 중 하나 이상을 포함하는 중앙 프로세싱 유닛일 수 있다. 이 예에서 CPU (218) 는 향상된 메모리 모듈 (224A-B) 로 라우팅된 ML/AI 애플리케이션 (208) 으로부터의 특정 프로세싱 요청을 수행하지 않지만, 다른 예에서 CPU (218) 는 향상된 메모리 모듈 (224A-B) 로 탠덤으로 ML/AI 애플리케이션 (208) (및 다른 애플리케이션) 으로부터 요청의 병렬 프로세싱을 수행할 수 있다.
또한, 프로세싱 시스템 (200) 의 특정 양태들이 이 예에 대해 도시되고 설명되었지만, 프로세싱 시스템 (200) 은 다른 컴포넌트를 포함할 수 있다. 예를 들어, 프로세싱 시스템 (200) 은 추가 애플리케이션, 추가 하드웨어 요소 (예를 들어 도 10 에 대하여 설명된 바와 같이 다른 종류의 프로세싱 유닛들) 등을 포함할 수 있다. 도 2 는 설명된 실시형태와 관련된 프로세싱 시스템 (200) 의 특정 요소에 의도적으로 초점을 맞춘다.
향상된 메모리 모듈의 예시적인 작동 모드
도 3a ~ 도 3c 는 향상된 메모리 모듈 (예를 들어, 도 1 에서 102 및 도 2 에서 224A-B) 을 위한 예시적인 메모리 할당 구성을 도시한다.
도 3a 에서, 향상된 메모리 모듈 (302) 은 예를 들어 부트 시간에서 플래시 메모리 (306) 내의 펌웨어에 의해 구성되어 컴퓨팅 코어(들) (308) 에 의한 임의의 프로세싱을 위해 전용 메모리 요소 (310A-B) 만을 사용한다. 이러한 구성에서, 향상된 메모리 모듈 (302) 은 시스템 메모리에 최대 용량을 제공하도록 설정된다.
도 3b 에서, 향상된 메모리 모듈 (302) 은 컴퓨팅 코어(들) (308) 에 의한 임의의 프로세싱을 위해 메모리 요소 (312A-C) 에 의해 제공되는 메모리 공간에 추가하여 전용 메모리 요소 (310A-B) 를 사용하도록 구성된다. 한편, 메모리 요소 (312D-F) 에 의해 제공되는 메모리 공간은 종래의 시스템 메모리에서와 같이 호스트 프로세싱 시스템을 위해 예약된다. 따라서, 이러한 구성에서, 향상된 메모리 모듈 (302) 은 온-모듈 컴퓨팅 능력과 호스트 프로세싱 시스템 메모리 요구의 균형을 맞추도록 설정된다.
도 3c 에서, 향상된 메모리 모듈 (302) 은 컴퓨팅 코어(들) (308) 에 의한 임의의 프로세싱을 위해 메모리 요소 (312A-F) 에 의해 제공되는 메모리 공간에 추가하여 전용 메모리 요소 (310A-B) 를 사용하도록 구성된다. 따라서, 이 구성에서, 향상된 메모리 모듈 (302) 은 온-모듈 컴퓨팅 능력을 최대화하도록 설정된다. 특히, 그러한 구성에서, 다른 향상된 메모리 모듈 또는 다른 종래의 메모리 모듈은 호스트 프로세싱 시스템 동작을 위한 호스트 프로세싱 시스템 어드레서블 메모리를 제공할 수 있다.
특히, 다양한 메모리 요소가 이 예에서 컴퓨팅 코어(들) (308) 또는 호스트 시스템 메모리에 할당된 것으로 도시되지만, 이러한 도시는 편의를 위한 것이다. 예를 들어, 가상 메모리 어드레스 공간은 (예를 들어, 페이지 테이블 (page table) 에 의해) 물리적 메모리 요소 내의 물리적 메모리 어드레스에 이러한 어드레스 공간이 할당되는 방식에 관계없이 온-메모리 컴퓨팅 또는 호스트 시스템 프로세싱에 할당될 수 있다.
또한, 도 3a ~ 도 3c 에 도시된 예시적인 구성은 몇 가지 실증적인 가능성에 불과하다. 향상된 메모리 모듈 (302) 에 의해 제공되고 컴퓨팅 코어(들) (308) 에 할당된 호스트 프로세싱 시스템 메모리 공간의 양은 이용가능한 호스트 프로세싱 시스템-어드레서블 메모리 요소의 0% 내지 100% 의 임의의 비일 수 있다. 그러나, 일부 실시형태에서, 컴퓨팅 코어(들) (308) 에 할당된 메모리 공간의 비는 각각의 향상된 메모리 모듈 상의 적어도 일부 메모리 공간이 호스트 시스템을 위해 예약되도록 제한될 수 있다.
향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소로 데이터를 전송하는 예시적인 방법
도 4 는 향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 도 2 에서 224A-B, 도 3a ~ 도 3c 에서 302) 에 데이터를 전송하는 예시적인 방법을 도시한다.
방법 (400) 은 향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소로 데이터를 이동시키기 위해 향상된 메모리 프로토콜을 통해 데이터 명령을 수신하는 단계 (402) 에서 시작한다. 일부 실시형태에서, 도 2 에 관하여 전술한 바와 같은 가속기 드라이버는 향상된 메모리 프로토콜을 통해 명령을 생성할 수 있다.
이 예에서, 컴퓨팅 코어 메모리 요소는 도 3 에서 메모리 요소 (310A-B) 와 같은 지정된 컴퓨팅 코어 메모리 요소 또는 도 3 에서 메모리 요소 (312A-C) 와 같은 컴퓨팅 코어에 할당된 듀얼 모드 메모리 요소일 수 있다. 또한, 방법 (400) 은 데이터를 메모리 요소 내외부로 이동하는 것과 관련하여 설명되지만 이는 설명의 편의를 위한 것이다. 컴퓨팅 코어에 할당된 메모리는 메모리 어드레스의 범위, 메모리 공간 또는 기타 논리적 및 물리적 메모리 세분화일 수 있다.
그 다음, 방법 (400) 은 향상된 메모리 모듈 상의 메모리 요소에 대한 액세스를 위한 호스트 프로세싱 시스템 명령을 차단하는 단계 (404) 로 진행한다. 이는 향상된 메모리 모듈 상의 컴퓨팅 코어와 데이터 명령을 프로세싱하는 동안 임의의 충돌을 방지하기 위한 것이다.
일부 실시형태에서, 도 2 와 관련하여 전술한 바와 같은 메모리 드라이버는 호스트 프로세싱 시스템 명령을 차단하도록 구성될 수 있다.
방법 (400) 은 데이터가 향상된 메모리 모듈 상에서 이동되는 동안 호스트 프로세싱 시스템으로부터의 판독 요청을 차단하기 위해 데이터 버스 상에 비지 상태 (busy state) 를 설정하는 단계 (406) 로 진행한다. 이는 향상된 메모리 모듈 상의 컴퓨팅 코어와 데이터 명령을 프로세싱하는 동안 임의의 중단을 방지하기 위한 것이다.
그 후, 방법 (400) 은 호스트 프로세싱 시스템에 할당된 메모리 요소로부터 향상된 메모리 모듈 상의 컴퓨팅 코어에 할당된 메모리 요소로 데이터를 전송하는 단계 (408) 로 진행한다. 전술한 바와 같이, 컴퓨팅 코어에 할당된 메모리 요소는 도 3 에서 메모리 요소 (310A-B) 와 같은 지정된 컴퓨팅 코어 메모리 요소 또는 도 3 에서 메모리 요소 (312A-C) 와 같은 컴퓨팅 코어에 할당된 듀얼 모드 메모리 요소일 수 있다. 여기에서 컴퓨팅 코어 메모리 요소로 전송된 데이터는 프로세싱하기 위한 데이터 뿐만 아니라 데이터를 프로세싱하는 방법에 대한 명령을 포함할 수 있다. 예를 들어, 데이터는 프로세싱을 위한 데이터 (예를 들어, 도 2 에서 206), 모델 데이터 (예를 들어 도 2 에서 204) 및 프로세싱 명령을 포함할 수 있다.
그 다음, 방법 (400) 은 데이터 전송이 완성되었는지 여부를 결정하는 단계 (410) 로 진행한다. 그렇지 않다면, 방법은 단계 (408) 로 복귀하고 데이터 전송을 계속한다.
전송이 단계 (410) 에서 완료되면, 방법 (400) 은 비지 상태가 데이터 버스로부터 제거되는 단계 (412) 로 진행한다.
방법 (400) 은 호스트 프로세싱 시스템과의 정상 메모리 작동이 계속될 수 있도록 호스트 프로세싱 시스템에 할당된 메모리 요소에 대한 호스트 프로세싱 시스템 명령을 차단해제하는 단계 (414) 로 진행한다.
그 다음, 방법 (400) 은 도 6 과 관련하여 이하 보다 자세히 설명되는 바와 같이 향상된 메모리 모듈의 하나 이상의 컴퓨팅 코어(들)로 데이터를 프로세싱하는 단계 (416) 로 진행한다. 예를 들어, 데이터를 프로세싱하는 것은 트레이닝 또는 추론과 같은 머신 러닝 작업을 수행하는 것을 포함할 수 있다.
향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소로부터 데이터를 전송하는 예시적인 방법
도 5 는 향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 도 2 에서 224A-B, 도 3a ~ 도 3c 에서 302) 상의 컴퓨팅 코어로부터 데이터를 전송하는 예시적인 방법 (500) 을 도시한다. 예를 들어, 방법 (500) 은 도 4 의 단계 (416) 에서 데이터 프로세싱이 완료된 후에 수행될 수 있다.
방법 (500) 은 향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소 외부로 데이터를 이동시키기 위해 향상된 메모리 프로토콜을 통해 결과 명령을 수신하는 단계 (502) 에서 시작한다. 이 예에서, 컴퓨팅 코어 메모리 요소는 도 3 에서 메모리 요소 (310A-B) 와 같은 지정된 컴퓨팅 코어 메모리 요소 또는 도 3 에서 메모리 요소 (312A-C) 와 같은 컴퓨팅 코어에 할당된 듀얼 모드 메모리 요소일 수 있다.
그 다음, 방법 (500) 은 향상된 메모리 모듈 상의 메모리 요소에 대한 액세스를 위한 호스트 프로세싱 시스템 명령을 차단하는 단계 (504) 로 진행한다. 이는 향상된 메모리 모듈 상의 데이터 명령을 프로세싱하는 동안 임의의 충돌을 방지하기 위한 것이다.
방법 (500) 은 데이터가 향상된 메모리 모듈 상에서 이동되는 동안 호스트 프로세싱 시스템으로부터의 판독 요청을 차단하기 위해 데이터 버스 상에 비지 상태를 설정하는 단계 (506) 로 진행한다.
그 다음, 방법 (500) 은 컴퓨팅 코어 메모리 요소로부터 향상된 메모리 모듈 상의 호스트 프로세싱 시스템에 할당된 메모리 요소로 데이터를 전송하는 단계 (508) 로 진행한다. 전술한 바와 같이, 컴퓨팅 코어에 할당된 메모리 요소는 도 3 에서 메모리 요소 (310A-B) 와 같은 지정된 컴퓨팅 코어 메모리 요소 또는 도 3 에서 메모리 요소 (312A-C) 와 같은 컴퓨팅 코어에 할당된 듀얼 모드 메모리 요소일 수 있다.
그 다음, 방법 (500) 은 전송이 완성되었는지 여부를 결정하는 단계 (510) 로 진행한다. 그렇지 않다면, 방법은 단계 (508) 로 복귀하고 데이터 전송을 계속한다.
전송이 단계 (510) 에서 완료되면, 방법 (500) 은 비지 상태가 데이터 버스로부터 제거되는 단계 (512) 로 진행한다.
마지막으로, 방법 (500) 은 호스트 프로세싱 시스템과의 정상 메모리 동작이 계속될 수 있도록 호스트 프로세싱 시스템에 할당된 메모리 요소에 대한 호스트 프로세싱 시스템 명령을 차단해제하는 단계 (514) 로 진행한다.
향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하는 예시적인 방법
도 6 은 향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하기 위한 예시적인 방법 (600) 을 도시한다. 예를 들어, 향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 도 2 에서 224A-B, 도 3a ~ 도 3c 에서 302) 의 컴퓨팅 코어로 데이터를 프로세싱하는 것은, 도 4 에 대하여 전술한 바와 같이 향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소로 데이터를 전송한 후에 실시할 수 있다. 프로세싱을 위한 데이터는 애플리케이션, 센서, 기타 프로세서 등에 의해 생성될 수 있다. 예를 들어, 프로세싱을 위한 데이터는 이미지, 비디오, 또는 사운드 데이터를 포함할 수 있다.
방법 (600) 은 향상된 메모리 모듈 상의 데이터를 프로세스하기 위한 명령을 요청자로부터 수신하는 단계 (602) 에서 시작한다. 예를 들어, 요청자는 도 2 에서 ML/AI 애플리케이션 (208) 과 같은 데이터 프로세싱 애플리케이션일 수 있다.
일부 실시형태에서, 요청자는 얼마나 많은 향상된 메모리 모듈이 시스템에 구성되는지 뿐만 아니라 이러한 향상된 메모리 모듈 상에 얼마나 많은 메모리가 가속 기반 작업부하 실행에 할당되는지를 결정하기 위해 가속기 런타임 애플리케이션 (예를 들어, 도 2 에서 210) 을 쿼리한다. 그 다음, 가속기 런타임 애플리케이션은 이러한 정보를 얻기 위해 가속기 드라이버 (예를 들어 도 2 에서 216) 를 쿼리한다. 이 정보로, 요청자는 작업부하가 구성된 메모리 양에 맞을지를 판단하고 그에 따라 작업부하를 실행할 수 있다. 이용가능한 메모리 양이 작업부하에 충분하지 않은 경우에, 요청자는 이용가능한 메모리를 활용할 수 있도록 크기를 줄이거나 작업부하를 청킹 (chunking) 하는 등 작업부하를 재구성할 수 있다.
그 다음, 방법 (600) 은 향상된 메모리 모듈의 컴퓨팅 코어 메모리 요소(들)로 데이터를 로딩하는 단계 (604) 로 진행한다. 전술한 바와 같이, 컴퓨팅 코어 메모리 요소(들)는 전용 메모리 요소 또는 동적으로 할당된 메모리 요소일 수 있다. 일부 실시형태에서, 단계 (604) 는 도 4 에 대하여 설명한 방법 (400) 에 따라 수행된다.
일부 실시형태에서, 요청자 (예를 들어, 도 2 에서 ML/AI 애플리케이션 (208)) 는 데이터를 가속기 런타임 애플리케이션 (예를 들어 도 2 에서 210) 으로 데이터를 보낼 것이고, 그 다음에 이 데이터를 가속기 드라이버 (예를 들어, 도 2 에서 216) 로 보낸다. 가속기 드라이버는 데이터를 메모리 드라이버 (예를 들어 도 2 에서 214) 로 로딩하도록 프로토콜 명령을 보낼 것이고, 그 다음에, 메모리 드라이버는 이 명령을 향상된 메모리 모듈 (예를 들어, 도 2 에서 224A-B) 로 보낸다.
그 다음, 방법 (600) 은 아래에 보다 상세히 설명되는 바와 같이 향상된 메모리 프로토콜을 통해 프로세스 명령을 수신하는 단계 (606) 로 진행한다. 프로세스 명령은 향상된 메모리 모듈의 프로세싱 코어(들)로 하여금 컴퓨팅 코어 메모리 요소들에 저장된 데이터의 데이터 프로세싱을 수행하게 하도록 구성될 수 있다.
일부 실시형태에서, 데이터를 로딩한 후, 가속기 드라이버 (예를 들어, 도 2 에서 216) 는 데이터를 프로세싱하기 위해 프로토콜 명령을 메모리 드라이버 (예를 들어 도 2 에서 214) 로 보내고, 그런 다음, 이 명령을 향상된 메모리 모듈 (예를 들어, 도 2 에서 224A-B) 로 보낸다.
그 다음, 방법 (600) 은 향상된 메모리 모듈 상의 컴퓨팅 코어(들)에 의해 컴퓨팅 코어 메모리 요소에 저장된 데이터를 프로세싱하는 단계 (608) 로 진행한다. 일부 실시형태에서, 프로세싱은 트레이닝 또는 추론과 같은 머신 러닝 및/또는 인공 지능 작업과 관련될 수 있다. 또한, 일부 실시형태에서, 머신 러닝 작업은 단일의 향상된 메모리 모듈 상의 복수의 컴퓨팅 코어 뿐만 아니라 복수의 향상된 메모리 모듈에 걸쳐 병렬 프로세싱될 수 있다.
그 다음, 방법 (600) 은 단계 (610) 로 진행하고, 여기서 작업부하의 프로세싱이 아직 완료되지 않은 경우 방법 (600) 은 단계 (608) 로 되돌아간다.
단계 (610) 에서 작업부하의 프로세싱이 완료되면, 방법 (600) 은 결과 신호가 향상된 메모리 프로토콜을 통해 전송되는 단계 (612) 로 진행한다.
일부 실시형태에서, 가속기 드라이버 (예를 들어, 도 2 에서 216) 는 프로세싱이 완료되는 시점을 결정하기 위해 향상된 메모리 모듈 (예를 들어 도 2 에서 224A-B) 을 주기적으로 쿼리한다. 프로세싱이 완료되면, 향상된 메모리 모듈은 프로세싱이 완료되었음을 나타내는 신호를 버스 상에 출력할 수 있다. 그 후, 다음번 가속기 드라이버는 향상된 메모리 모듈을 쿼리할 때 결과 신호를 관찰한다.
그 다음, 방법 (600) 은 컴퓨팅 코어 메모리 요소로부터 향상된 메모리 모듈 상의 호스트 프로세싱 시스템에 할당된 메모리 요소로 프로세싱된 데이터를 이동시키는 단계 (612) 로 진행한다. 예를 들어, 도 3b 에 대하여, 데이터는 컴퓨팅 코어에 할당된 메모리 요소 (310A-B 및 312A-C) 중 하나 이상으로부터 호스트 프로세싱 시스템에 할당된 메모리 요소 (312D-F) 중 하나 이상으로 이동될 수 있다.
일부 실시형태에서, 프로세싱이 완료된 후, 가속기 드라이버 (예를 들어 도 2 에서 216) 는 프로토콜 명령을 메모리 드라이버 (예를 들어 도 2 에서 214) 로 보내어 데이터를 검색한다. 그런 다음, 메모리 드라이버는 향상된 메모리 모듈에 명령을 전달하고 이는 또한 프로세싱된 데이터를 호스트 프로세싱 시스템 어드레서블 메모리에 복사한다.
그 다음, 방법 (600) 은 프로세싱된 데이터가 향상된 메모리 모듈 상의 호스트 프로세싱 시스템에 할당된 메모리 요소들로부터 요청자에게 제공되는 단계 (614) 에서 종료된다.
일부 실시형태에서, 가속기 드라이버 (예를 들어 도 2 에서 216) 는 명령을 메모리 드라이버 (예를 들어 도 2 에서 214) 로 보내어 프로세싱된 데이터를 판독한다. 그런 다음, 메모리 드라이버는 이러한 판독 요청을 향상된 메모리 모듈로 전달한다. 가속기 드라이버는 가속기 런타임 애플리케이션 (예를 들어 도 2 에서 210) 에 의해 요청자에게 다시 그 결과를 보낸다.
향상된 메모리 프로토콜의 예시적인 양태
향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 또는 도 2 에서 224A-B, 또는 도 3a ~ 도 3c 에서 302) 과 상호작용하기 위한 향상된 메모리 프로토콜이 구현될 수 있다. 일부 실시형태에서, 향상된 메모리 프로토콜은 JEDEC (Joint Electron Device Engineering Council) 프로토콜 또는 그 확장에 기반할 수 있다.
일부 실시형태에서, 향상된 메모리 프로토콜은 도 1 과 관하여 설명된 가속기 (104) 와 같이 메모리 집적 가속기와 인터페이스하기 위한 다양한 명령을 구현할 수 있다.
예를 들어, 향상된 메모리 프로토콜은 예를 들어 도 1 에 관하여 전술한 모듈 (106) 과 같은 플래시 메모리 모듈로부터 펌웨어를 로드하도록 구성된 "초기화" 신호 (또는 명령) 를 포함할 수 있고 메모리 집적 가속기를 초기화할 수 있다.
향상된 메모리 프로토콜은, 전술한 바와 같이 정적 또는 동적으로 할당될 수 있는 도 4 에 관하여 설명된 방법 등에 의해, 향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 도 2 에서 224A-B, 및 도 3a ~ 도 3c 에서 302) 상의 시스템 (예를 들어, 도 3b 에서 312D-F) 에 할당된 메모리 요소들로부터 컴퓨팅 코어 메모리 요소 (예를 들어 도 3b 에서 312A-C) 로 데이터를 이동시키기 위한 프로세스를 초기화하도록 구성된 "데이터" 신호 (또는 명령) 을 더 포함할 수 있다.
"데이터" 신호는 다음과 같은 변형예를 가질 수 있고: "모든 데이터 이동", 여기서 시작 어드레스와 종료 어드레스 사이의 모든 데이터는 시스템 할당된 메모리와 컴퓨팅 코어 할당된 메모리 사이에서 이동되고; "x 바이트 이동", 여기서 x 데이터 바이트는 시스템 할당된 메모리로부터 코어 할당된 메모리를 컴퓨팅하기 위해 이동되며; "x 사이클 동안 이동", 여기서 x 사이클은 시스템 할당된 메모리로부터 컴퓨팅 코어 할당된 메모리로 데이터를 이동시키는데 활용된다.
향상된 메모리 프로토콜은 향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 도 2 에서 224A-B, 도 3a ~ 도 3c 에서 302) 의 컴퓨팅 코어로 하여금 도 6 과 관련하여 설명된 방법 등에 의해 컴퓨팅 코어 할당된 메모리에 저장된 명령 실행을 시작하도록 구성된 "프로세스" 신호 (또는 명령) 을 더 포함할 수 있다.
향상된 메모리 프로토콜은, 도 5 에 관하여 설명된 방법 등에 의해, 호스트 프로세싱 시스템 (예를 들어, 도 2 에서 시스템 (200)) 의 다른 부분들에 의해 액세스될 수 있도록, 컴퓨팅 코어 할당된 메모리 (예를 들어, 도 3b 에서 312A-C) 로부터 시스템 할당된 메모리 (예를 들어, 도 3b 에서 312D-F) 로 데이터를 이동하기 위한 프로세스를 시작하도록 구성된 "결과" 신호 (또는 명령) 를 더 포함할 수 있다.
따라서, 일 예에서, 가속기 드라이버 (예를 들어 도 2 에서 216) 는 "데이터" 신호를 보내고, 메모리 드라이버 (예를 들어 도 2 에서 214) 는 신호를 향상된 메모리 모듈 (예를 들어 도 2 에서 224A-B) 로 보낸다. 가속기 드라이버는 메모리 드라이버에 트래픽을 차단하도록 지시하고, 이 트래픽은 "데이터" 명령을 가진 단일 명령 또는 별도의 명령일 수 있다. 그런 다음, 메모리 드라이버는 가속기 드라이버로부터 오지 않는 모든 트래픽을 차단한다. 일부 경우에, 트래픽은 보류되거나 재시도를 위해 다시 전송될 수 있다. 향상된 메모리 모듈은 또한 메모리 전송 상태를 나타내는 데이터 패턴을 출력하기 위해 버퍼에 값을 설정할 수 있다. 예를 들어, 가속기 드라이버는 향상된 메모리 모듈 (메모리 드라이버가 전달함) 로부터 데이터를 요청할 수 있고, 데이터 패턴이 "비지" 이면, 가속기 드라이버는 기다렸다가 다시 시도하고, 데이터 패턴이 "완료" 이면, 가속기 드라이버는 메모리 드라이버에 트래픽을 다시 허용하도록 지시한다.
향상된 메모리 모듈을 구성하는 예시적인 방법
도 7 은 향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 도 2 에서 224A-B, 도 3a ~ 도 3c 에서 302) 을 구성하기 위한 예시적인 방법 (700) 을 도시한다.
방법 (700) 은 도 1 에서 향상된 메모리 모듈 (102) 상의 메모리 요소 (112A-F) 와 같은 향상된 메모리 모듈 상의 듀얼 모드 메모리 요소를 배치하는 단계 (702) 에서 시작한다. 이 예에서, "듀얼 모드" 는 도 1 에서 108 과 같이 온-모듈 컴퓨팅 코어(들)에 대한 로컬 메모리 뿐만 아니라 종래의 방식의 시스템 메모리에 사용되는 각 메모리 요소의 능력을 지칭한다. 메모리 요소는 두 모드에서 작동하도록 물리적으로 수정될 필요가 없다.
그 다음, 방법 (700) 은 도 1 에서 컴퓨팅 코어(들)(108) 와 같은 향상된 메모리 모듈 상에 컴퓨팅 코어를 배치하는 단계 (704) 로 진행한다.
그 다음, 방법 (700) 은 컴퓨팅 코어(들)와 각각의 듀얼 모드 메모리 요소 사이에 명령/어드레스 라인을 연결하는 단계 (706) 로 진행한다. 명령/어드레스 라인은 메모리의 어느 부분이 액세스되는지 결정하고 명령이 무엇인지 결정하는데 사용되는 신호를 전송하도록 구성될 수 있다.
그 다음, 방법 (700) 은 각각의 듀얼 모드 메모리 요소와 컴퓨팅 코어(들) (로컬 프로세싱 모드에서 사용하기 위한) 및 메모리 버퍼 (시스템 메모리 모드에서 사용하기 위한) 사이에 데이터 라인을 연결하는 단계 (708) 로 진행한다.
방법 (700) 은 도 1 에서 향상된 메모리 모듈 (102) 의 메모리 요소 (110A-B) 와 같은 향상된 메모리 모듈 상의 컴퓨팅 코어 메모리 요소를 배치하는 단계 (710) 로 진행한다.
그 다음, 방법 (700) 은 컴퓨팅 코어(들)와 컴퓨팅 코어 메모리 요소 사이에 명령/어드레스 라인 및 데이터 라인을 연결하는 단계 (712) 로 진행한다.
그 다음, 방법 (700) 은 도 1 에서 향상된 메모리 모듈 (102) 의 플래시 메모리 요소 (106) 와 같은 향상된 메모리 모듈 상의 플래시 메모리 모듈을 배치하는 단계 (714) 로 진행한다.
그 다음, 방법 (700) 은 도 1 에서 향상된 메모리 모듈 (102) 의 컴퓨팅 코어(들) (108) 와 같은 컴퓨팅 코어(들)에 플래시 메모리 모듈을 연결하는 단계 (716) 로 진행한다.
그 다음, 방법 (700) 은 도 1 의 향상된 메모리 모듈 (102) 과 같은 향상된 메모리 모듈을 초기화하기 위해 플래시 메모리 모듈에 펌웨어를 기록하는 단계 (718) 로 진행한다.
특히, 방법 (700) 은 도 1 의 향상된 메모리 모듈 (102) 과 같은 향상된 메모리 모듈을 구성하는 방법의 단 하나의 고수준 예이고 다른 많은 예들이 존재한다. 특정 제조 기법에 대한 논의는 명확성을 위해 생략된다.
향상된 메모리 모듈을 포함하는 프로세싱 시스템을 위한 예시적인 메모리 맵핑
도 8 은 향상된 메모리 모듈 (예를 들어, 도 1 에서 102, 도 2 에서 224A-B, 도 3a ~ 도 3c 에서 302) 을 포함하는 시스템을 프로세싱하기 위한 예시적인 메모리 맵핑을 도시한다.
도시된 예에서, 프로세싱 시스템은 6 개의 메모리 모듈 슬롯들 (예를 들어, 6 개의 DIMM 슬롯들) 을 가지고, 각 DIMM 슬롯의 각 메모리 모듈은 총 48 GB 의 시스템 메모리에 대해 8 GB 의 시스템 어드레서블 메모리를 가진다. 각 DIMM 슬롯의 메모리 모듈은 종래의 메모리 모듈 또는 향상된 메모리 모듈일 수 있으므로, 시스템 전체가 종래의 향상된 메모리 모듈이 혼합된 "하이브리드 구성" 일 수 있거나 모든 향상된 메모리 모듈들을 가진 "향상된 구성" 일 수 있다. 향상된 메모리 모듈은 (예를 들어, 도 1 의 108 과 같은 컴퓨팅 코어에) 호스트 프로세싱 시스템과 온-메모리 프로세싱 요소 사이에 메모리를 할당하도록 구성될 수 있기 때문에, 시스템에 향상된 메모리 모듈이 많을수록, 온-메모리 프로세싱에 할당할 수 있는 총 메모리가 많아진다.
또한 이 예에서, 메모리 할당 임계값은 임의의 향상된 메모리 모듈의 메모리의 최대 절반이 온-메모리 프로세싱 (예를 들어 도 1 에서 108 과 같은 컴퓨팅 코어) 에 할당될 수 있도록 구현되고, 나머지 메모리는 호스트 프로세싱 시스템에 할당된다. 다른 실시형태에서, 메모리 할당 임계값은 구현되지 않을 수 있거나 다른 값으로 구현될 수 있다. 메모리 임계값은 일반적으로 호스트 프로세싱 시스템이 적절하게 수행하기에 충분한 할당된 메모리를 유지하도록 보장하기 위해 설정될 수 있다.
메모리 맵 (802 또는 804) 은 메모리 모듈의 하이브리드 구성을 갖는 프로세싱 시스템에서 예시적인 메모리 할당을 도시한다. 메모리 맵 (806 및 808) 은 모든 메모리 모듈이 향상된 메모리 모듈인 향상된 구성을 갖는 프로세싱 시스템에서의 예시적인 메모리 할당을 도시한다. 도시된 예에서, 806 및 808 의 향상된 구성에서의 메모리 할당은 온-메모리 프로세싱을 위한 컴퓨팅 코어에 할당된 더 많은 메모리를 포함한다.
또한, 메모리 맵 (806 및 808) 의 메모리 할당은 각각의 향상된 메모리 모듈 (예를 들어, 향상된 메모리 모듈 0-5) 의 컴퓨팅 코어에 특정된다. 그러나, 다른 예에서, 메모리는 일반적으로 예시적인 메모리 맵들 (806 및 808) 에서와 같이 구체적으로보다는 예시적인 메모리 맵들 (802 및 804) 에서와 같이 세트로서 코어를 컴퓨팅하도록 할당될 수 있다.
일반적으로, 더 향상된 메모리 모듈을 가지면 온-메모리 프로세싱에 할당될 수 있는 메모리의 양을 증가시키므로, 호스트 프로세싱 시스템의 예를 들어 트레이닝 및 추론과 같은 AI 및 ML 특정 작업을 수행하는 능력 뿐만 아니라 전체 시스템 메모리를 구성할 수 있는 유연성을 증가시키는 능력을 증가시킨다.
호스트 프로세싱 시스템과 온-메모리 프로세싱 사이의 동적 메모리 재할당의 경우 (예를 들어, 도 1 의 104 와 같은 가속기를 통해), 그에 따라 메모리 맵이 업데이트될 수 있다. 예를 들어, 메모리 맵 (802) 은 메모리 맵 (806) 또는 다른 조합으로 업데이트될 수 있다.
도 8 에 도시된 예들은, 향상된 메모리 모듈을 사용하는 다양한 메모리 구성의 몇 가지 예를 보여주기 위한 것이며 다른 것도 가능하다.
향상된 메모리 모듈로 데이터를 프로세싱하는 예시적인 방법
도 9 는 컴퓨팅 코어 (예를 들어, 도 1 에서 108) 를 포함하는 향상된 메모리 모듈 (예를 들어 도 1 에서 102, 도 2 에서 224A-B, 도 3a ~ 도 3c 에서 302) 로 데이터를 프로세싱하기 위한 예시적인 방법 (900) 을 도시한다. 일부 실시형태에서, 컴퓨팅 코어는 도 1 의 104 와 같은 메모리 집적 가속기의 일부일 수 있다. 일부 실시형태에서, 컴퓨팅 코어는 복수의 개별 프로세싱 코어와 같은 복수의 프로세싱 요소를 포함할 수 있다. 일부 실시형태에서, 향상된 메모리 모듈은 LRDIMM (Load-Reduced Dual Inline Memory Module) 을 포함한다.
방법 (900) 은 호스트 프로세싱 시스템-어드레서블 메모리로서 향상된 메모리 모듈의 메모리의 제 1 서브세트를 할당함으로써 그리고 예를 들어 도 3a ~ 도 3c 에 관하여 설명한 바와 같이, 컴퓨팅 코어-어드레서블 메모리로서 향상된 메모리 모듈의 메모리의 제 2 서브세트를 할당함으로써 향상된 메모리 모듈을 초기화하는 단계 (902) 에서 시작한다.
방법 (900) 의 일부 실시형태에서, 향상된 메모리 모듈의 초기화는 부트 시간에서 수행될 수 있다. 다른 실시형태에서, 향상된 메모리 모듈의 초기화는 호스트 프로세싱 시스템의 작동 동안 동적으로 수행될 수 있다.
일부 실시형태에서, 메모리의 할당은 컴퓨팅 코어와 호스트 프로세싱 시스템 사이에서, 도 1 에서 메모리 요소 (112A-F) 와 같은 하나 이상의 듀얼 모드 메모리 요소의 메모리를 할당하는 것을 포함할 수 있다. 예를 들어, 할당은 가상 어드레스 공간 또는 물리적 어드레스 공간과 같은 하나 이상의 메모리 범위 또는 메모리 어드레스 공간을 포함할 수 있다.
방법 (900) 은 호스트 프로세싱 시스템으로부터 향상된 메모리 모듈에서 데이터를 수신하는 단계 (904) 로 진행한다. 데이터는 호스트 프로세싱 시스템에 의해, 컴퓨팅 코어에 의한 것과 같은 향상된 메모리 모듈 상에서의 프로세싱을 위해 향상된 메모리 모듈에 제공될 수 있다.
일부 실시형태에서, 수신된 데이터는 머신 러닝 모델 및 머신 러닝 모델 파라미터에 의한 프로세싱을 위한 데이터를 포함할 수 있다. 일부 실시형태에서, 수신된 데이터는 프로세싱 명령 또는 명령을 더 포함할 수 있다.
그 다음, 방법 (900) 은 수신된 데이터를 메모리의 제 1 서브세트 (호스트 프로세싱 시스템-어드레서블 메모리) 에 저장하는 단계 (906) 로 진행한다. 일부 실시형태에서, 호스트 프로세싱 시스템 어드레서블 메모리는 도 1 에서 메모리 요소 (112A-F) 와 같은 향상된 메모리 모듈 상의 하나 이상의 듀얼 모드 메모리 요소에서 호스트 프로세싱 시스템에 할당된 메모리 공간을 포함한다.
그 다음, 방법 (900) 은 수신된 데이터를 메모리의 제 1 서브세트 (호스트 프로세싱 시스템-어드레서블 메모리) 로부터 메모리의 제 2 서브세트 (컴퓨팅 코어-어드레서블 메모리) 로 전송하는 단계 (908) 로 진행한다.
일부 실시형태에서, 컴퓨팅 코어-어드레서블 메모리는 도 1 에서 메모리 요소 (110A-B) 와 같은 비-호스트 프로세싱 시스템-어드레서블 메모리를 포함한다. 일부 실시형태에서, 컴퓨팅 코어-어드레서블 메모리는 (도 3a 의 예에서와 같이) 비-호스트 프로세싱 시스템-어드레서블 메모리만을 포함한다.
그 다음, 방법 (900) 은 프로세싱된 데이터를 생성하기 위해 향상된 메모리 모듈 상의 컴퓨팅 코어로 수신된 데이터를 프로세싱하는 단계 (910) 로 진행한다.
그 다음, 방법 (900) 은 프로세싱된 데이터를 메모리의 제 2 서브세트 (컴퓨팅 코어-어드레서블 메모리) 로부터 메모리의 제 1 서브세트 (호스트 프로세싱 시스템-어드레서블 메모리) 로 전송하는 단계 (912) 로 진행한다.
그 다음, 방법 (900) 은, 도 2 에 관하여 전술한 바와 같이, 제 1 서브세트의 메모리 (호스트 프로세싱 시스템-어드레서블 메모리) 를 통해 프로세싱된 데이터를 호스트 프로세싱 시스템에 제공하는 단계 (914) 로 진행한다.
일부 실시형태에서, 향상된 메모리 모듈을 초기화하는 것은, 도 1 과 관련하여 전술한 바와 같이, 향상된 메모리 모듈 상의 플래시 메모리 모듈에 저장된 펌웨어 명령을 프로세싱하는 단계를 포함한다.
일부 실시형태에서, 방법 (900) 은 메모리의 제 1 서브세트 (호스트 프로세싱 시스템-어드레서블 메모리) 로부터 메모리의 제 2 서브세트 (컴퓨팅 코어-어드레서블 메모리) 로 데이터를 전송하기 전에, 도 4 와 관련하여 전술한 바와 같이, 데이터 전송이 실시되고 있음을 표시하고 호스트 프로세싱 시스템-어드레서블 메모리에 대한 판독 요청을 차단하기 위해 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 설정하는 단계를 더 포함한다.
일부 실시형태에서, 방법 (900) 은 메모리의 제 1 서브세트 (호스트 프로세싱 시스템-어드레서블 메모리) 로부터 메모리의 제 2 서브세트 (컴퓨팅 코어-어드레서블 메모리) 로 데이터를 전송한 후에, 도 4 와 관련하여 전술한 바와 같이, 호스트 프로세싱 시스템으로부터 호스트 프로세싱 시스템-어드레서블 메모리로의 판독 또는 기록 요청을 허용하기 위해 호스트 프로세싱 시스템의 데이터 버스 상에 이용가능 상태를 설정하는 단계를 더 포함한다.
일부 실시형태에서, 방법 (900) 은 메모리의 제 1 서브세트 (호스트 프로세싱 시스템-어드레서블 메모리) 로부터 메모리의 제 2 서브세트 (컴퓨팅 코어-어드레서블 메모리) 로 데이터를 전송하기 전에, 도 4 에 관하여 전술한 바와 같이, 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화하는 단계를 더 포함한다.
일부 실시형태에서, 방법 (900) 은 메모리의 제 1 서브세트 (호스트 프로세싱 시스템-어드레서블 메모리) 로부터 메모리의 제 2 서브세트 (컴퓨팅 코어-어드레서블 메모리) 로 데이터를 전송한 후에, 도 4 에 관하여 전술한 바와 같이, 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 불활성화하는 단계를 더 포함한다.
일부 실시형태에서, 방법 (900) 은 메모리의 제 1 서브세트 및 메모리의 제 2 서브세트를 할당해제함으로써 향상된 메모리 모듈의 메모리를 재할당하는 단계, 및 호스트 프로세싱 시스템-어드레서블 메모리로서 하나 이상의 듀얼 모드 메모리 요소에서의 메모리의 제 3 서브세트 및 컴퓨팅 코어-어드레서블 메모리로서 하나 이상의 듀얼 모드 메모리 요소에서의 메모리의 제 4 서브세트를 할당하는 단계를 더 포함하고, 메모리의 제 3 서브세트는 제 1 서브세트와 상이하고, 메모리의 제 4 서브세트는 제 2 서브세트와 상이하다. 일부 실시형태에서, 재할당은 호스트 프로세싱 시스템이 실행 중일 때와 같이 부트 시간 후에 수행된다. 이와 같이, 재할당은 메모리의 동적 또는 "핫 (hot)" 재할당으로 지칭될 수 있다.
예를 들어, 일부 실시형태에서, 도 3a 의 제 1 할당과 같이 제 1 할당은 도 3b 또는 도 3c 의 제 2 할당 처럼 제 2 할당에 동적으로 재할당될 수 있거나 다른 것은 도시하지 않았다. 일부 실시형태에서, 호스트 프로세싱 시스템은 재할당 프로세스 동안 메모리 명령을 향상된 메모리 모듈로 전송하는 것이 차단될 수 있다. 일부 실시형태에서, 페이지 테이블 또는 메모리 맵은, 호스트 프로세싱 시스템에 더 이상 액세스할 수 없거나 새로 액세스할 수 있는 물리적 메모리가 적절하게 구성되도록 재할당후에 업데이트될 수 있다. 예를 들어, 도 8 에서 메모리 맵 예는 향상된 메모리 모듈 상에 메모리를 재할당한 후에 업데이트될 수 있다.
향상된 메모리 모듈로 데이터 프로세싱을 위한 예시적인 전자 디바이스
도 10 은, 예를 들어 도 4 ~ 도 6 및 도 9 에 관하여 본원에 설명된 바와 같이, 향상된 메모리 모듈로 데이터 프로세싱을 수행하도록 구성될 수 있는 예시적인 전자 디바이스 (1000) 를 도시한다. 일부 실시형태에서, 전자 디바이스 (1000) 는 서버 컴퓨터를 포함할 수 있다.
전자 디바이스 (1000) 는 일부 예에서 멀티코어 CPU 일 수 있는 중앙 프로세싱 유닛 (CPU) (1002) 을 포함한다. CPU (1002) 에서 실행되는 명령들은 예를 들어 CPU (1002) 와 연관된 프로그램 메모리로부터 로딩될 수도 있거나, 또는 메모리 파티션 (1024) 으로부터 로딩될 수도 있다.
전자 디바이스 (1000) 는 또한 그래픽 프로세싱 유닛 (GPU) (1004), 디지털 신호 프로세서 (DSP) (1006) 및 신경 프로세싱 유닛 (NPU)(1008) 과 같은 특정 기능에 맞춰진 추가 프로세싱 컴포넌트를 포함한다.
1008 과 같은 NPU 는 일반적으로 인공 신경망 (ANN), 심층 신경망 (DNN), 랜덤 포레스트 (RF) 등과 같은 머신 러닝 알고리즘을 실행하기 위한 모든 필요한 제어 및 산술 로직을 구현하도록 구성된 전문적인 회로이다. NPU 는 때때로 대안적으로 신경 신호 프로세서 (NSP), 텐서 프로세싱 유닛 (TPU), 신경망 프로세서 (NNP), 지능 프로세싱 유닛 (IPU), 비전 프로세싱 유닛 (VPU) 또는 그래프 프로세싱 유닛으로 지칭될 수 있다.
NPU 는 트레이닝 또는 추론에 최적화되거나 또는 일부 경우에 둘 사이의 성능을 균형잡도록 구성될 수 있다. 트레이닝과 추론 양자 모두를 수행할 수 있는 NPU 의 경우, 두 작업은 여전히 일반적으로 독립적으로 수행될 수 있다.
예를 들어, 1008 과 같은 NPU 는 이미지 분류, 기계 번역, 객체 검출 및 기타 다양한 예측 모델과 같은 공통의 머신 러닝 추론 작업의 성능을 가속화하도록 구성될 수 있다. 일부 예에서, 복수의 NPU 는 SoC (system on chip) 와 같은 단일 칩에서 인스턴스화될 수 있는 반면, 다른 예에서는 전용 신경망 가속기의 일부일 수 있다. 추론을 가속화하도록 설계된 NPU 는 일반적으로 완전한 모델 상에서 작동하도록 구성된다. 따라서 이러한 NPU 는 새로운 데이터 조각을 입력하고 이를 이미 트레이닝된 모델을 통해 빠르게 프로세싱하여 모델 출력 (예를 들어, 추론) 을 생성하도록 구성될 수 있다.
또 다른 예로서, NPU 는 테스트 데이터세트 (종종 레이블링되거나 태깅됨) 프로세싱, 데이터세트에 대한 반복, 그 후 모델 성능을 개선하도록 가중치 및 편향과 같은 모델 파라미터 조정과 같은 공통의 머신 러닝 트레이닝 작업을 가속화하도록 구성될 수 있다. 일반적으로, 잘못된 예측을 기반으로 하는 최적화에는 모델의 레이어를 통해 다시 전파하고 예측 에러를 줄이기 위해 기울기를 결정하는 것을 수반한다.
일 구현에서, NPU (1008) 는 CPU (1002), GPU (1004), 및/또는 DSP (1006) 중 하나 이상의 일부이다.
전자 디바이스 (1000) 는 또한 스크린, 네트워크 인터페이스, 물리적 버튼 등과 같은 하나 이상의 입력 및/또는 출력 디바이스 (1022) 를 포함할 수 있다.
전자 디바이스 (1000) 는 또한 동적 랜덤 액세스 메모리, 플래시 기반 정적 메모리 등과 같은 하나 이상의 정적 및/또는 동적 메모리를 나타내는 메모리 (1024) 를 포함한다. 이 예에서, 메모리 (1024) 는 전자 디바이스 (1000) 의 전술한 프로세서들 중 하나 이상에 의해 실행될 수 있는 컴퓨터 실행가능한 컴포넌트를 포함한다.
메모리 (1024) 는 (예를 들어 도 1, 도 2 및 도 3 에 관하여) 본원에 설명된 향상된 메모리 모듈과 같은 하나 이상의 메모리 모듈을 나타낼 수 있다. 예를 들어, 메모리 (1024) 는 하나 이상의 컴퓨팅 코어(들)(1024I) 및 플래시 메모리 컴포넌트 (1024J) 를 포함할 수 있다. 일부 경우에, 컴퓨팅 코어(들) (1024I) 는 NPU 또는 본원에 설명된 바와 같이 다른 종류의 프로세서를 포함할 수 있다. 또한, 도시되지는 않았지만, 메모리 (1024) 의 일부는 컴퓨팅 코어(들) (1024J) 에 의해서만 액세스될 수 있는 반면, 일부 메모리는 프로세싱 시스템 (1000) 또는 컴퓨팅 코어 (1024J) 에 의해 액세스 가능하도록 구성될 수 있다.
이 예에서, 메모리 (1024) 는 수신 컴포넌트 (1024A), 저장 컴포넌트 (1024B), 전송 컴포넌트 (1024C), 프로세스 컴포넌트 (1024D), 전송 (또는 제공) 컴포넌트 (1024E), 초기화 컴포넌트 (1024F), 할당 컴포넌트 (1024G), 및 분할 컴포넌트 (1024H) 를 포함한다. 도시된 컴포넌트 및 도시되지 않은 다른 것들은 본원에 설명된 방법의 다양한 양태를 수행하도록 구성될 수 있다.
도 10 에 도시되지는 않았지만, 전자 디바이스 (1000) 는 전자 디바이스 (1000) 의 다양한 양태들 사이에서 데이터를 전송하기 위한 하나 이상의 데이터 버스를 더 포함할 수 있다.
예시적인 조항
구현 예들이 다음의 넘버링된 조항들에 기재된다:
조항 1: 향상된 메모리 모듈로서: 컴퓨팅 코어; 및 하나 이상의 듀얼 모드 메모리 요소들을 포함하며, 상기 향상된 메모리 모듈은: 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 그리고 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당하도록; 호스트 프로세싱 시스템으로부터 데이터를 수신하도록; 프로세싱된 데이터를 생성하기 위해 상기 컴퓨팅 코어로 상기 데이터를 프로세싱하도록; 프로세싱된 데이터를 상기 메모리의 제 1 서브세트를 통해 상기 호스트 프로세싱 시스템에 제공하도록 구성된다.
조항 2: 조항 1 의 향상된 메모리 모듈에서, 향상된 메모리 모듈은, 수신된 데이터를 메모리의 제 1 서브세트에 저장하도록; 컴퓨팅 코어로 데이터를 프로세싱하기 전에 수신된 데이터를 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 전송하도록; 그리고 컴퓨팅 코어로 데이터를 프로세싱한 후에 메모리의 제 2 서브세트로부터 메모리의 제 1 서브세트로 프로세싱된 데이터를 전송하도록 추가로 구성된다.
조항 3: 조항 1-2 중 어느 하나의 향상된 메모리 모듈에서, 메모리의 제 2 서브세트는 컴퓨팅 코어에 의해 사용하도록 구성된 하나 이상의 단일 모드 메모리를 더 포함한다.
조항 4: 조항 1-3 중 어느 하나의 향상된 메모리 모듈에서, 메모리의 제 1 서브세트 및 메모리의 제 2 서브세트를 할당하기 위한 펌웨어 명령을 포함하는 플래시 메모리 모듈을 더 포함한다.
조항 5: 조항 1-4 중 어느 하나의 향상된 메모리 모듈에서, 향상된 메모리 모듈은, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송하기 전에 데이터의 전송이 실시되고 있음을 나타내도록 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 설정하도록 추가로 구성된다.
조항 6: 조항 5 의 향상된 메모리 모듈에서, 향상된 메모리 모듈은, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송한 후에 호스트 프로세싱 시스템의 데이터 버스 상에 이용가능한 상태를 설정하도록 추가로 구성된다.
조항 7: 조항 1-6 중 어느 하나의 향상된 메모리 모듈에서, 향상된 메모리 모듈은, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송하기 전에 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화시키도록 추가로 구성된다.
조항 8: 조항 7 의 향상된 메모리 모듈에서, 향상된 메모리 모듈은, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송한 후에 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 불활성화시키도록 추가로 구성된다.
조항 9: 조항 1-8 중 어느 하나의 향상된 메모리 모듈에서, 상기 데이터는: 머신 러닝 모델에 의해 프로세싱하기 위한 데이터; 및 머신 러닝 모델 파라미터를 포함한다.
조항 10: 조항 1-9 중 어느 하나의 향상된 메모리 모듈에서, 향상된 메모리 모듈은 DIMM (Dual Inline Memory Module) 을 포함한다.
조항 11: 조항 1-10 중 어느 하나의 향상된 메모리 모듈에서, 향상된 메모리 모듈은: 메모리의 제 1 서브세트 및 메모리의 제 2 서브세트를 할당해제하도록; 그리고 호스트 프로세싱 시스템-어드레서블 메모리로서 하나 이상의 듀얼 모드 메모리 요소에서의 메모리의 제 3 서브세트 및 컴퓨팅 코어-어드레서블 메모리로서 하나 이상의 듀얼 모드 메모리 요소에서의 메모리의 제 4 서브세트를 할당하도록 추가로 구성되고, 메모리의 제 3 서브세트는 제 1 서브세트와는 다르고, 메모리의 제 4 서브세트는 제 2 서브세트와는 다르다.
조항 12: 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법은: 향상된 메모리 모듈의 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 및 향상된 메모리 모듈의 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당함으로써 향상된 메모리 모듈을 초기화하는 단계; 호스트 프로세싱 시스템으로부터 향상된 메모리 모듈에서 데이터를 수신하는 단계; 프로세싱된 데이터를 생성하기 위해 향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하는 단계; 및 프로세싱된 데이터를 메모리의 제 1 서브세트를 통해 호스트 프로세싱 시스템에 제공하는 단계를 포함한다.
조항 13: 조항 12 의 방법에서, 수신된 데이터를 메모리의 제 1 서브세트에 저장하는 단계; 컴퓨팅 코어로 데이터를 프로세싱하기 전에 수신된 데이터를 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 전송하는 단계; 및 컴퓨팅 코어로 데이터를 프로세싱한 후에 메모리의 제 2 서브세트로부터 메모리의 제 1 서브세트로 프로세싱된 데이터를 전송하는 단계를 더 포함한다.
조항 14: 조항 12-13 중 어느 하나의 방법에서, 메모리의 제 1 서브세트 및 메모리의 제 2 서브세트는 하나 이상의 듀얼 모드 메모리 요소와 연관된다.
조항 15: 조항 12-14 중 어느 하나의 방법에서, 향상된 메모리 모듈을 초기화하는 단계는 향상된 메모리 모듈 상의 플래시 메모리 모듈에 저장된 펌웨어 명령을 프로세싱하는 단계를 포함한다.
조항 16: 조항 12-15 중 어느 하나의 방법에서, 메모리의 제 2 서브세트는 컴퓨팅 코어에 의해 사용하도록 구성된 하나 이상의 단일 모드 메모리 요소와 더 연관된다.
조항 17: 조항 13 의 방법에서, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송하기 전에, 데이터의 전송이 실시됨을 나타내도록 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 설정하는 단계를 더 포함한다.
조항 18: 조항 17 의 방법에서, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송한 후에, 호스트 프로세싱 시스템의 데이터 버스 상에 이용가능한 상태를 설정하는 단계를 더 포함한다.
조항 19: 조항 13 의 방법에서, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송하기 전에, 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화하는 단계를 더 포함한다.
조항 20: 조항 19 의 방법에서, 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송한 후에, 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화하는 단계를 더 포함한다.
조항 21: 조항 12-20 중 어느 하나의 방법에서, 상기 데이터는: 머신 러닝 모델에 의해 프로세싱하기 위한 데이터; 및 머신 러닝 모델 파라미터를 포함한다.
조항 22: 조항 12-21 중 어느 하나의 방법에서, 향상된 메모리 모듈은 DIMM (Dual Inline Memory Module) 을 포함한다.
조항 23: 조항 12-22 중 어느 하나의 방법에서, 상기 방법은 메모리의 제 1 서브세트 및 메모리의 제 2 서브세트를 할당해제하는 단계; 및 호스트 프로세싱 시스템-어드레서블 메모리로서 하나 이상의 듀얼 모드 메모리 요소에서의 메모리의 제 3 서브세트 및 컴퓨팅 코어-어드레서블 메모리로서 하나 이상의 듀얼 모드 메모리 요소에서의 메모리의 제 4 서브세트를 할당하는 단계를 더 포함하고, 메모리의 제 3 서브세트는 제 1 서브세트와는 다르고, 메모리의 제 4 서브세트는 제 2 서브세트와는 다르다.
조항 24: 호스트 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 호스트 프로세싱 시스템으로 하여금 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법을 수행하도록 하는 명령들을 포함하는 비일시적인 컴퓨터 판독가능 매체로서, 상기 방법은: 향상된 메모리 모듈의 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 및 향상된 메모리 모듈의 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당함으로써 향상된 메모리 모듈을 초기화하는 단계; 호스트 프로세싱 시스템으로부터 향상된 메모리 모듈에서 데이터를 수신하는 단계; 프로세싱된 데이터를 생성하기 위해 향상된 메모리 모듈 상의 컴퓨팅 코어로 데이터를 프로세싱하는 단계; 및 프로세싱된 데이터를 메모리의 제 1 서브세트를 통해 호스트 프로세싱 시스템에 제공하는 단계를 포함한다.
조항 25: 조항 24 의 비일시적인 컴퓨터 판독가능 매체에서, 상기 방법은: 수신된 데이터를 메모리의 제 1 서브세트에 저장하는 단계; 컴퓨팅 코어로 데이터를 프로세싱하기 전에 수신된 데이터를 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 전송하는 단계; 및 컴퓨팅 코어로 데이터를 프로세싱한 후에 메모리의 제 2 서브세트로부터 메모리의 제 1 서브세트로 프로세싱된 데이터를 전송하는 단계를 더 포함한다.
조항 26: 조항 24-25 중 어느 하나의 비일시적인 컴퓨터 판독가능 매체에서, 메모리의 제 1 서브세트 및 메모리의 제 2 서브세트는 하나 이상의 듀얼 모드 메모리 요소와 연관된다.
조항 27: 조항 24-26 중 어느 하나의 비일시적인 컴퓨터 판독가능 매체에서, 메모리의 제 2 서브세트는 컴퓨팅 코어에 의해 사용하도록 구성된 하나 이상의 단일 모드 메모리 요소와 더 연관된다.
조항 28: 조항 25 의 비일시적인 컴퓨터 판독가능 매체에서, 상기 방법은: 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송하기 전에, 데이터의 전송이 실시됨을 나타내도록 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 설정하는 단계를 더 포함한다.
조항 29: 조항 29 의 비일시적인 컴퓨터 판독가능 매체에서, 상기 방법은: 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송한 후에, 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 허용하도록 설정하는 단계를 더 포함한다.
조항 30: 조항 25 의 비일시적인 컴퓨터 판독가능 매체에서, 상기 방법은: 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송하기 전에, 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화하는 단계; 및 메모리의 제 1 서브세트로부터 메모리의 제 2 서브세트로 데이터를 전송한 후에, 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 불활성화하는 단계를 더 포함한다.
추가적인 고려사항들
이전의 설명은 당업자가 본 명세서에서 설명된 다양한 실시형태들을 실시하는 것을 가능하게 하기 위해 제공된다. 여기에 논의된 예들은 청구항들에 기재된 범위, 적용가능성, 또는 실시형태들을 한정하는 것은 아니다. 이들 실시형태들에 대한 다양한 수정들은 당업자에게 쉽게 자명할 것이며, 본 명세서에 정의된 일반적인 원리들은 다른 실시형태들에 적용될 수도 있다. 예를 들어, 본 개시의 범위로부터 벗어나지 않으면서 논의된 요소들의 기능 및 배열에서 변경들이 이루어질 수도 있다. 다양한 예들은 다양한 절차들 또는 컴포넌트들을 적절하게 생략, 치환, 또는 부가할 수도 있다. 예를 들어, 설명된 방법들은 설명된 것과 상이한 순서로 수행될 수도 있으며, 다양한 단계들이 부가, 생략, 또는 결합될 수도 있다. 또한, 일부 예들에 관하여 설명된 특징들은 기타 예들에서 결합될 수도 있다. 예를 들어, 본 명세서에 기술된 임의의 수의 양태들을 이용하여 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 또한, 본 개시의 범위는 여기에 제시된 본 개시의 다양한 양태들 외에 또는 이에 추가하여 다른 구조, 기능성, 또는 구조 및 기능성을 이용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 개시의 임의의 양태는 청구항의 하나 이상의 요소에 의해 구체화될 수도 있다는 것이 이해되어야 한다.
본 명세서에서 사용된 바와 같이, 단어 "예시적인" 은 예, 예증, 또는 예시로서 작용함을 의미하도록 사용된다. 본 명세서에서 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 유리하거나 또는 바람직한 것으로서 해석되어야 하는 것은 아니다.
본원에 사용된, 항목들의 리스트 "중 적어도 하나" 를 나타내는 어구는, 단일 멤버들을 포함한 그러한 아이템들의 임의의 조합을 나타낸다. 예로서, "a, b, 또는 c 중 적어도 하나" 는 a, b, c, a-b, a-c, b-c, 및 a-b-c 뿐만 아니라 동일한 요소의 배수들과의 임의의 조합 (예컨대, a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, 및 c-c-c 또는 a, b, 및 c 의 임의의 다른 순서화) 을 커버하도록 의도된다.
본 명세서에서 사용된 바와 같이, 용어 "결정하는 것" 은 광범위하게 다양한 액션들을 포괄한다. 예를 들어, "결정하는 것" 은 계산하는 것, 컴퓨팅하는 것, 프로세싱하는 것, 도출하는 것, 조사하는 것, 룩업하는 것 (예를 들어, 테이블, 데이터베이스 또는 다른 데이터 구조에서 룩업하는 것), 확인하는 것 등을 포함할 수도 있다. 또한, "결정하는 것" 은 수신하는 것 (예를 들어, 정보를 수신하는 것), 액세스하는 것 (예를 들어, 메모리 내의 데이터에 액세스하는 것) 등을 포함할 수도 있다. 또한, "결정하는 것" 은 해결하는 것, 선택하는 것, 선정하는 것, 확립하는 것 등을 포함할 수도 있다.
본 명세서에 개시된 방법들은 그 방법들을 달성하기 위한 하나 이상의 단계 또는 액션을 포함한다. 방법 단계들 및/또는 액션들은 청구항들의 범위로부터 일탈함 없이 서로 상호교환될 수도 있다. 다시 말해서, 단계들 또는 액션들의 특정 순서가 특정되지 않으면, 특정 단계들 및/또는 액션들의 순서 및/또는 사용은 청구항들의 범위로부터 일탈함 없이 수정될 수도 있다. 또한, 설명된 다양한 방법 동작들은 대응하는 기능들을 수행 가능한 임의의 적합한 수단에 의해 수행될 수도 있다. 그 수단은, 회로, 주문형 집적 회로 (ASIC), 또는 프로세서를 포함하지만 이들에 제한되지는 않는 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수도 있다. 일반적으로, 도면들에 예시된 동작들이 존재하는 경우, 그 동작들은 유사한 넘버링을 가진 대응하는 상대의 수단-플러스-기능 컴포넌트들을 가질 수도 있다.
다음의 청구항들은 본 명세서에 나타낸 실시형태들에 제한되도록 의도되지 않으며, 청구항들의 표현과 일치하는 전체 범위에 따라야 한다. 청구항 내에서, 단수의 요소에 대한 언급은 특별히 그렇게 언급되지 않는 한 "하나 및 하나만" 을 의미하는 것이 아니라 오히려 "하나 이상" 을 의미하는 것으로 의도된다. 명확하게 달리 언급되지 않으면, 용어 "일부"는 하나 이상을 나타낸다. 어떠한 청구항 요소도 구절 "하는 수단" 을 사용하여 명백하게 기재되지 않으면, 또는 방법 청구항의 경우, 그 요소가 구절 "하는 단계" 를 사용하여 기재되지 않으면, 35 U.S.C.§112(f) 의 규정 하에서 해석되지 않아야 한다. 당업자에게 공지되거나 나중에 공지되게 될 본 개시 전반에 걸쳐 설명된 다양한 양태들의 요소들에 대한 모든 구조적 및 기능적 균등물들은 본 명세서에 참조로 명백히 통합되며 청구항들에 의해 포괄되도록 의도된다. 또한, 본 명세서에서 개시된 어떤 것도, 그러한 개시가 청구항들에 명시적으로 기재되는지 여부에 관계 없이 공중에 제공되도록 의도되지 않는다.

Claims (30)

  1. 향상된 메모리 모듈로서,
    컴퓨팅 코어, 및
    하나 이상의 듀얼 모드 메모리 요소들을 포함하고,
    상기 향상된 메모리 모듈은,
    상기 하나 이상의 듀얼 모드 메모리 요소들에서의 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 그리고 상기 하나 이상의 듀얼 모드 메모리 요소들에서의 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당하도록,
    호스트 프로세싱 시스템으로부터 데이터를 수신하도록,
    프로세싱된 데이터를 생성하기 위해 상기 컴퓨팅 코어로 상기 데이터를 프로세싱하도록,
    상기 프로세싱된 데이터를 상기 메모리의 제 1 서브세트를 통해 상기 호스트 프로세싱 시스템에 제공하도록
    구성되는, 향상된 메모리 모듈.
  2. 제 1 항에 있어서,
    상기 향상된 메모리 모듈은,
    수신된 상기 데이터를 상기 메모리의 제 1 서브세트에 저장하도록,
    상기 컴퓨팅 코어로 상기 데이터를 프로세싱하기 전에 수신된 상기 데이터를 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 전송하도록, 그리고
    상기 컴퓨팅 코어로 상기 데이터를 프로세싱한 후에 프로세싱된 상기 데이터를 상기 메모리의 제 2 서브세트로부터 상기 메모리의 제 1 서브세트로 전송하도록
    추가로 구성되는, 향상된 메모리 모듈.
  3. 제 1 항에 있어서,
    상기 메모리의 제 2 서브세트는 상기 컴퓨팅 코어에 의해 사용하도록 구성된 하나 이상의 단일 모드 메모리를 더 포함하는, 향상된 메모리 모듈.
  4. 제 1 항에 있어서,
    상기 메모리의 제 1 서브세트 및 상기 메모리의 제 2 서브세트를 할당하기 위한 펌웨어 명령을 포함하는 플래시 메모리 모듈을 더 포함하는, 향상된 메모리 모듈.
  5. 제 1 항에 있어서,
    상기 향상된 메모리 모듈은, 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송하기 전에 데이터의 전송이 실시되고 있음을 나타내도록 상기 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 설정하도록 추가로 구성되는, 향상된 메모리 모듈.
  6. 제 5 항에 있어서,
    상기 향상된 메모리 모듈은, 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송한 후에 상기 호스트 프로세싱 시스템의 상기 데이터 버스 상에 이용가능한 상태를 설정하도록 추가로 구성되는, 향상된 메모리 모듈.
  7. 제 1 항에 있어서,
    상기 향상된 메모리 모듈은, 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송하기 전에 상기 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화시키도록 추가로 구성되는, 향상된 메모리 모듈.
  8. 제 7 항에 있어서,
    상기 향상된 메모리 모듈은, 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송한 후에 상기 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 불활성화시키도록 추가로 구성되는, 향상된 메모리 모듈.
  9. 제 1 항에 있어서,
    상기 데이터는,
    머신 러닝 모델에 의한 프로세싱을 위한 데이터, 및
    머신 러닝 모델 파라미터들
    을 포함하는, 향상된 메모리 모듈.
  10. 제 1 항에 있어서,
    상기 향상된 메모리 모듈은 DIMM (Dual Inline Memory Module) 을 포함하는, 향상된 메모리 모듈.
  11. 제 1 항에 있어서,
    상기 향상된 메모리 모듈은,
    상기 메모리의 제 1 서브세트 및 상기 메모리의 제 2 서브세트를 할당해제하도록, 그리고
    상기 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 3 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 그리고 상기 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 4 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당하도록
    추가로 구성되고,
    상기 메모리의 제 3 서브세트는 상기 제 1 서브세트와 상이하고,
    상기 메모리의 제 4 서브세트는 상기 제 2 서브세트와 상이한, 향상된 메모리 모듈.
  12. 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법으로서,
    상기 향상된 메모리 모듈의 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 그리고 상기 향상된 메모리 모듈의 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당함으로써 상기 향상된 메모리 모듈을 초기화하는 단계,
    호스트 프로세싱 시스템으로부터 상기 향상된 메모리 모듈에서 데이터를 수신하는 단계,
    프로세싱된 데이터를 생성하기 위해 상기 향상된 메모리 모듈 상의 상기 컴퓨팅 코어로 상기 데이터를 프로세싱하는 단계, 및
    상기 프로세싱된 데이터를 상기 메모리의 제 1 서브세트를 통해 상기 호스트 프로세싱 시스템에 제공하는 단계를 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  13. 제 12 항에 있어서,
    수신된 상기 데이터를 상기 메모리의 제 1 서브세트에 저장하는 단계,
    상기 컴퓨팅 코어로 상기 데이터를 프로세싱하기 전에 수신된 상기 데이터를 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 전송하는 단계, 및
    상기 컴퓨팅 코어로 상기 데이터를 프로세싱한 후에 수신된 상기 데이터를 상기 메모리의 제 2 서브세트로부터 상기 메모리의 제 1 서브세트로 전송하는 단계
    를 더 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  14. 제 12 항에 있어서,
    상기 메모리의 제 1 서브세트 및 상기 메모리의 제 2 서브세트는 하나 이상의 듀얼 모드 메모리 요소와 연관되는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  15. 제 12 항에 있어서,
    상기 향상된 메모리 모듈을 초기화하는 단계는 상기 향상된 메모리 모듈 상의 플래시 메모리 모듈에 저장된 펌웨어 명령을 프로세싱하는 단계를 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  16. 제 12 항에 있어서,
    상기 메모리의 제 2 서브세트는 상기 컴퓨팅 코어에 의해 사용하도록 구성된 하나 이상의 단일 모드 메모리 요소와 더 연관되는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  17. 제 13 항에 있어서,
    상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송하기 전에, 데이터의 전송이 실시됨을 나타내도록 상기 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 설정하는 단계를 더 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  18. 제 17 항에 있어서,
    상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송한 후에, 상기 호스트 프로세싱 시스템의 상기 데이터 버스 상에 이용가능한 상태를 설정하는 단계를 더 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  19. 제 13 항에 있어서,
    상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송하기 전에, 상기 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화하는 단계를 더 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  20. 제 19 항에 있어서,
    상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송한 후에, 상기 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 불활성화하는 단계를 더 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  21. 제 12 항에 있어서,
    상기 데이터는,
    머신 러닝 모델에 의한 프로세싱을 위한 데이터, 및
    머신 러닝 모델 파라미터들
    을 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  22. 제 12 항에 있어서,
    상기 향상된 메모리 모듈은 DIMM (Dual Inline Memory Module) 을 포함하는, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  23. 제 12 항에 있어서,
    상기 방법은
    상기 메모리의 제 1 서브세트 및 상기 메모리의 제 2 서브세트를 할당해제하는 단계, 및
    상기 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 3 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 그리고 상기 하나 이상의 듀얼 모드 메모리 요소들에서 메모리의 제 4 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당하는 단계
    를 더 포함하고,
    상기 메모리의 제 3 서브세트는 상기 제 1 서브세트와 상이하고,
    상기 메모리의 제 4 서브세트는 상기 제 2 서브세트와 상이한, 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법.
  24. 호스트 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 상기 호스트 프로세싱 시스템으로 하여금 컴퓨팅 코어를 포함하는 향상된 메모리 모듈로 데이터를 프로세싱하기 위한 방법을 수행하게 하는 명령를 포함하는 비일시적인 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    상기 향상된 메모리 모듈의 메모리의 제 1 서브세트를 호스트 프로세싱 시스템-어드레서블 메모리로서 그리고 상기 향상된 메모리 모듈의 메모리의 제 2 서브세트를 컴퓨팅 코어-어드레서블 메모리로서 할당함으로써 상기 향상된 메모리 모듈을 초기화하는 단계,
    상기 호스트 프로세싱 시스템으로부터 상기 향상된 메모리 모듈에서 데이터를 수신하는 단계,
    프로세싱된 데이터를 생성하기 위해 상기 향상된 메모리 모듈 상의 상기 컴퓨팅 코어로 상기 데이터를 프로세싱하는 단계, 및
    상기 프로세싱된 데이터를 상기 메모리의 제 1 서브세트를 통해 상기 호스트 프로세싱 시스템에 제공하는 단계
    를 포함하는, 비일시적인 컴퓨터 판독가능 저장 매체.
  25. 제 24 항에 있어서,
    상기 방법은,
    수신된 상기 데이터를 상기 메모리의 제 1 서브세트에 저장하는 단계,
    상기 컴퓨팅 코어로 상기 데이터를 프로세싱하기 전에 수신된 상기 데이터를 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 전송하는 단계, 및
    상기 컴퓨팅 코어로 상기 데이터를 프로세싱한 후에 수신된 상기 데이터를 상기 메모리의 제 2 서브세트로부터 상기 메모리의 제 1 서브세트로 전송하는 단계
    를 더 포함하는, 비일시적인 컴퓨터 판독가능 저장 매체.
  26. 제 24 항에 있어서,
    상기 메모리의 제 1 서브세트 및 상기 메모리의 제 2 서브세트는 하나 이상의 듀얼 모드 메모리 요소들과 연관되는, 비일시적인 컴퓨터 판독가능 저장 매체.
  27. 제 24 항에 있어서,
    상기 메모리의 제 2 서브세트는 상기 컴퓨팅 코어에 의해 사용하도록 구성된 하나 이상의 단일 모드 메모리 요소들과 더 연관되는, 비일시적인 컴퓨터 판독가능 저장 매체.
  28. 제 25 항에 있어서,
    상기 방법은 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송하기 전에, 데이터의 전송이 실시됨을 나타내도록 상기 호스트 프로세싱 시스템의 데이터 버스 상에 비지 상태를 설정하는 단계를 더 포함하는, 비일시적인 컴퓨터 판독가능 저장 매체.
  29. 제 29 항에 있어서,
    상기 방법은 상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송한 후에, 상기 호스트 프로세싱 시스템의 상기 데이터 버스 상에 이용가능한 상태를 허용하도록 설정하는 단계를 더 포함하는, 비일시적인 컴퓨터 판독가능 저장 매체.
  30. 제 25 항에 있어서,
    상기 방법은,
    상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송하기 전에, 상기 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 활성화하는 단계, 및
    상기 메모리의 제 1 서브세트로부터 상기 메모리의 제 2 서브세트로 상기 데이터를 전송한 후에, 상기 향상된 메모리 모듈을 위한 호스트 프로세싱 시스템 메모리 명령의 블록을 불활성화하는 단계
    를 더 포함하는, 비일시적인 컴퓨터 판독가능 저장 매체.
KR1020227039808A 2020-05-26 2021-05-20 메모리에서의 추론 KR20230015334A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/883,869 US20210373790A1 (en) 2020-05-26 2020-05-26 Inference in memory
US16/883,869 2020-05-26
PCT/US2021/033436 WO2021242608A1 (en) 2020-05-26 2021-05-20 Inference in memory

Publications (1)

Publication Number Publication Date
KR20230015334A true KR20230015334A (ko) 2023-01-31

Family

ID=76641760

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227039808A KR20230015334A (ko) 2020-05-26 2021-05-20 메모리에서의 추론

Country Status (8)

Country Link
US (1) US20210373790A1 (ko)
EP (1) EP4158485A1 (ko)
JP (1) JP2023527770A (ko)
KR (1) KR20230015334A (ko)
CN (1) CN115516436A (ko)
BR (1) BR112022023193A2 (ko)
TW (1) TW202201236A (ko)
WO (1) WO2021242608A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021232396A1 (en) * 2020-05-22 2021-11-25 Intel Corporation Accelerating system boot times via host-managed device memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185704B1 (en) * 1997-04-11 2001-02-06 Texas Instruments Incorporated System signaling schemes for processor and memory module
EP2286347A4 (en) * 2008-06-04 2012-03-07 Nec Lab America Inc SYSTEM AND METHOD FOR PARALLELIZING AND ACCELERATING A LEARNING MACHINE TRAINING AND CLASSIFICATION THEREOF BY MEANS OF A MASSIVELY PARALLEL ACCELERATOR
US8904068B2 (en) * 2012-05-09 2014-12-02 Nvidia Corporation Virtual memory structure for coprocessors having memory allocation limitations

Also Published As

Publication number Publication date
JP2023527770A (ja) 2023-06-30
CN115516436A (zh) 2022-12-23
TW202201236A (zh) 2022-01-01
US20210373790A1 (en) 2021-12-02
WO2021242608A1 (en) 2021-12-02
BR112022023193A2 (pt) 2022-12-20
EP4158485A1 (en) 2023-04-05

Similar Documents

Publication Publication Date Title
US20140095769A1 (en) Flash memory dual in-line memory module management
EP2581828B1 (en) Method for creating virtual machine, virtual machine monitor and virtual machine system
US11914903B2 (en) Systems, methods, and devices for accelerators with virtualization and tiered memory
US11836087B2 (en) Per-process re-configurable caches
JP7126136B2 (ja) 再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法
CN114860329A (zh) 动态一致性偏置配置引擎及方法
CN115729849A (zh) 内存管理方法及计算设备
JP2018136922A (ja) メモリープールを有するコンピューティングシステムのためのメモリー分割
KR20230015334A (ko) 메모리에서의 추론
US11157191B2 (en) Intra-device notational data movement system
CN115176236A (zh) 用于存储管理的系统和方法
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
CN114398300B (zh) 方法、集成电路及计算机可读存储介质
CN115794368A (zh) 业务系统、内存管理方法及装置
CN114281516A (zh) 一种基于numa属性的资源分配方法及装置
US11281612B2 (en) Switch-based inter-device notational data movement system
CN116450055B (zh) 一种多处理卡间的存储区域分配方法和系统
US11714753B2 (en) Methods and nodes for handling memory
US20130262790A1 (en) Method, computer program and device for managing memory access in a multiprocessor architecture of numa type
CN117991977A (zh) 用于动态地重配置存储器装置的存储器区域的设备和方法
CN114860439A (zh) 一种内存分配方法、宿主机、分布式系统及程序产品
JPH04287263A (ja) データ転送装置

Legal Events

Date Code Title Description
A201 Request for examination