KR20240023642A - 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합 - Google Patents

메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합 Download PDF

Info

Publication number
KR20240023642A
KR20240023642A KR1020247002404A KR20247002404A KR20240023642A KR 20240023642 A KR20240023642 A KR 20240023642A KR 1020247002404 A KR1020247002404 A KR 1020247002404A KR 20247002404 A KR20247002404 A KR 20247002404A KR 20240023642 A KR20240023642 A KR 20240023642A
Authority
KR
South Korea
Prior art keywords
memory access
atomic
atomic memory
memory
merging
Prior art date
Application number
KR1020247002404A
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 KR20240023642A publication Critical patent/KR20240023642A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/1024Latency reduction
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 것이 개시된다. 일 실시예에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부가 결정된다. 트리거링 이벤트에 응답하여, 병합을 위한 후보들인 아토믹 메모리 액세스들은 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 병합된다. 아토믹 메모리 액세스들은 동일한 캐시 라인에서 병합될 수 있거나, 상이한 캐시 라인들 내의 아토믹 메모리 액세스들은 멀티캐스트 메모리-로컬 프로세싱 커맨드를 사용하여 병합될 수 있다.

Description

메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합
컴퓨팅 시스템(computing system)은 종종 명령어들을 검색 및 실행하고 실행된 명령어들의 결과들을 적합한 위치에 저장할 수 있는 다수의 프로세싱 자원들(예컨대, 하나 이상의 프로세서들)을 포함한다. 프로세싱 자원(예컨대, 중앙 프로세싱 유닛(CPU) 또는 그래픽 프로세싱 유닛(GPU))은 예를 들어, 데이터에 대한 산술 동작들을 수행함으로써 명령어들을 실행하기 위해 사용될 수 있는 산술 논리 유닛(arithmetic logic unit, ALU) 회로부, 부동 소수점 유닛(floating point unit, FPU) 회로부, 및/또는 조합 논리 블록과 같은 다수의 기능 유닛들을 포함할 수 있다. 예를 들어, 기능 유닛 회로부는 피연산자에 대한 가산, 감산, 승산, 및/또는 제산과 같은 산술 동작을 수행하는 데 사용될 수 있다. 통상적으로, 프로세싱 자원들(예컨대, 프로세서 및/또는 연관된 기능 유닛 회로부)은 메모리 디바이스 외부에 있을 수 있고, 명령어들의 세트를 실행하기 위해 프로세싱 자원들과 메모리 디바이스 사이의 버스 또는 상호연결부를 통해 데이터가 액세스된다. 메모리 디바이스에서 데이터를 페치하거나 저장하기 위한 액세스 양을 줄이기 위해, 컴퓨팅 시스템은 프로세싱 자원 또는 프로세싱 자원들의 그룹에서 사용하기 위해 최근에 액세스되었거나 수정된 데이터를 일시적으로 저장하는 캐시 계층구조(cache hierarchy)를 사용할 수 있다. 한편, 데이터를 프로세싱 자원에 더 가까이 가져오기보다는 데이터를 저장하는 메모리 위치에 더 가까이 데이터 프로세싱이 수행되도록, 메모리 내부 및/또는 메모리 근처에 프로세싱 자원들이 구현되는 메모리-기반 실행 디바이스에 특정 동작들을 오프로딩함으로써 프로세싱 성능이 또한 개선될 수 있다. 니어-메모리(near-memory) 또는 인-메모리(in-memory) 컴퓨트 디바이스는 외부 통신들(즉, 호스트 대 메모리 디바이스 통신들)을 감소시킴으로써 시간을 절감할 수 있고, 또한 전력을 보전할 수 있다.
도 1은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅(memory-local computing)을 위한 아토믹 메모리 동작(atomic memory operation)들을 동적으로 병합하기 위한 예시적인 시스템의 블록도를 기재한다.
도 2는 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다.
도 3은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다.
도 4는 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다.
도 5는 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 다른 예시적인 방법을 예시하는 흐름도를 기재한다.
도 6은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 다른 예시적인 방법을 예시하는 흐름도를 기재한다.
도 7은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 다른 예시적인 방법을 예시하는 흐름도를 기재한다.
도 8은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 다른 예시적인 방법을 예시하는 흐름도를 기재한다.
도 9는 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 다른 예시적인 방법을 예시하는 흐름도를 기재한다.
도 10은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 다른 예시적인 방법을 예시하는 흐름도를 기재한다.
컴퓨트 처리량은 메모리 대역폭보다 더 빠르게 스케일링됨에 따라, 데이터가 공급되는 컴퓨트 용량 증가를 유지시키는 많은 기술들이 제안되어져 왔다. 특히, 프로세싱-인-메모리(processing-in-memory, PIM) 하드웨어와 같은 메모리-로컬 프로세싱 하드웨어는 컴퓨트를 메모리에 가깝게 이동시켜, 호스트가 이용가능한 것보다 더 높은 메모리 대역폭의 이점을 메모리에 가까운 로직에 제공한다.
많은 희소한/불규칙한 애플리케이션들에서 일반적으로 사용되는 판독-수정-기록(read-modify-write, RMW) 동작들과 같은 아토믹 메모리 액세스들은 PIM 가속화에 대한 잠재력을 나타낸다. 이러한 동작들은 피연산자를 취하고, 피연산자 및 메모리 내의 데이터의 타겟 부분으로 소정 동작을 수행하고, 그 결과를 메모리 내의 동일한 위치에 저장한다. 비-PIM 시스템에서, 이는 메모리 인터페이스를 가로질러 2개의 전달들을 필요로 하는데, 하나는 데이터를 메모리로부터 호스트로 로딩하는 것이고 - 호스트에서, 데이터는 입력 피연산자와 함께 연산됨 -, 다른 하나는 그 결과를 호스트로부터 메모리로 저장하는 것이다. PIM 시스템에서는, PIM에서 동작을 수행하는 것은 전달의 수를 2에서 1로 감소시킬 것이며, 즉, 호스트로부터 메모리로 호스트 피연산자를 전송하는 것으로 감소시킬 것이며, 여기서 타겟 위치 데이터에 대한 로드 및 저장은 메모리에서 로컬로 수행될 수 있다. 결과적인 2x 처리량 증가는, 종종 메모리 대역폭에 의해 제한되는, 아토믹-무거운(atomic-heavy) 작업부하들에 대한 성능을 크게 개선할 수 있는 잠재력을 갖는다.
그러나, 아토믹-무거운 작업부하들은 종종 희소하거나 불규칙적이며, 이는 적어도 2개의 방식으로 PIM 구현예들에 대해 문제를 제기한다. 첫째, 불규칙성은 일부 애플리케이션들(예컨대, 그래프 분석, 희소 기계 학습)에 대해 캐시에서 주어진 액세스가 히트(hit)할 것인지 여부를 예측하는 것을 어렵게 만든다. PIM은 캐시들에서 미스(miss)하고 메모리로 가야 하는 RMW 액세스들에 대해서만 이점을 제공하기 때문에(그렇지 않고 액세스가 캐시에서 히트할 경우, 그것은 성능을 저하시킬 수 있음), 모든 RMW 액세스들에 대해 PIM을 사용하는 것은 결국, 높은 지역성(locality)을 갖는 애플리케이션들에 대한 성능을 저하시킬 수 있다. 즉, PIM은 호스트-기반 구현예에서 가능했을 수 있는 임의의 캐시 지역성을 잃는다(즉, 호스트 액세스는 PIM 액세스보다 더 저렴할 수 있음). 많은 불규칙한 아토믹 액세스들에 대해, 캐시에서 히트하는 액세스들을 정적으로 식별하는 것은 실현불가능할 것이다. 따라서, 이러한 불규칙한 아토믹들에 대해 PIM을 사용할지 여부를 런타임에서 동적으로 결정하는 것이 유리할 것이다.
또한, 일부 PIM 구현예들에서, 미세한-입도의 PIM 커맨드가 표준 메모리 동작과 동일한 양의 커맨드 버스 대역폭을 점유한다. 그 결과, PIM으로 처리량을 개선하는 것은, PIM 동작이 (예컨대, 공유 커맨드 버스를 통해) 다수의 메모리 모듈들에 동시에 멀티캐스트될 것을 요구한다. 이는, 종종 높은 불규칙성을 나타내는 아토믹-무거운 애플리케이션들(예컨대, 푸시-기반 그래프 분석, 희소 기계 학습 등)의 경우 어려울 수 있다. 뱅크-로컬 PIM 구현예의 경우, 멀티캐스트 PIM 커맨드는 행(row) 버퍼로부터의 모든 타겟 뱅크들 내의 동일한 열(column) 인덱스에 대해 동일한 동작을 수행해야 하고, 그것이 즉각적인 데이터 피연산자를 포함하는 경우, 그 피연산자는 모든 뱅크들에 대해 동일해야 한다. 불규칙한 작업부하들에서 멀티캐스트 기회들을 정적으로 검출하는 것은 실현불가능하며; 실제로, 대부분의 멀티캐스트 커맨드 기회들은 동일한 열 인덱스를 갖는 어드레스들에 대한 업데이트들을 동시에 전송하는 상이한 스레드들로부터 올 수 있다.
본 개시내용에 따른 실시예들은 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 것에 관한 것이다. 본 개시내용에 따른 실시예는 캐시 라인 병합을 포함하며, 이는 메모리-로컬 컴퓨팅에서 임의의 동작을 구현하기 전에 아토믹 캐시 지역성 및 재사용을 활용하기 위해 동일한 캐시 라인에 대한 다수의 보류 중인(pending) 아토믹들을 동적으로 병합하기 위한 메커니즘이다. 본 개시내용에 따른 실시예들은 또한 멀티-모듈 병합을 포함하며, 이는 상이한 캐시 라인들에 대한 보류 중인 아토믹들을 단일 멀티캐스트 메모리-로컬 프로세싱 커맨드로 병합하기 위한 메커니즘이다.
일 실시예는 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 방법에 관한 것이다. 본 방법은 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계를 포함한다. 본 방법은 또한, 메모리-로컬 컴퓨트 유닛(memory-local compute unit)에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계를 포함한다. 일부 경우들에서, 메모리 로컬 컴퓨트 유닛은 프로세싱-인-메모리(PIM) 유닛이다. 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계는 (예컨대, 메모리-로컬 컴퓨트 유닛들에 의한 메모리-로컬 프로세싱을 요청하기 위해) 병합된 멀티캐스트 요청을 발행하기 전에 수행될 수 있다.
일부 구현예들에서, 본 방법은, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 단계, 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하는 단계, 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하는 단계를 추가로 포함한다. 이들 구현예에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계는, 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 단계를 포함할 수 있다. 이들 구현예에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계는, 제2 아토믹 메모리 액세스에 의해 타겟팅된 캐시 라인 내의 위치에서의 데이터에 대해, 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 제2 아토믹 메모리 액세스의 동작을 수행함으로써 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계를 포함할 수 있다.
일부 구현예들에서, 본 방법은 또한, 트리거링 이벤트에 응답하여, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스에 대한 하나 이상의 메모리-로컬 프로세싱 커맨드들을 메모리 제어기로 전송하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 또한, 하나 이상의 메트릭들에 기초하여, 제1 아토믹 메모리 액세스에 대해 특수 상태의 캐시 라인을 할당할지 여부를 결정하는 단계를 포함한다.
일부 구현예들에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계는, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계를 포함한다. 이들 구현예에서, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계는, 트리거링 이벤트에 응답하여, 제1 아토믹 메모리 액세스를 포함하는 제1 캐시 라인이 제2 아토믹 메모리 액세스를 포함하는 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 단계를 포함할 수 있으며, 여기서 제1 캐시 라인 및 제2 캐시 라인은 특수 캐시 상태에 있다. 일부 경우들에서, 병합을 위한 후보들인 캐시 라인들은 별개의 물리적 구조에서 추적될 수 있다.
일부 구현예들에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계는, 멀티-모듈 메모리-로컬 프로세싱 커맨드를 사용하여 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계를 포함한다.
다른 실시예는 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하기 위한 컴퓨팅 디바이스에 관한 것이다. 컴퓨팅 디바이스는, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하고, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하도록 구성된 로직 회로부를 포함한다. 일부 경우들에서, 메모리-로컬 컴퓨트 유닛은 PIM 유닛이다.
일부 구현예들에서, 로직 회로부는, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하고, 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하고, 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하도록 추가로 구성된다. 일부 구현예들에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은, 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 것을 포함한다. 이들 구현예에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것은, 제2 아토믹 메모리 액세스에 의해 타겟팅된 캐시 라인 내의 위치에서의 데이터에 대해, 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 제2 아토믹 메모리 액세스의 동작을 수행함으로써 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것을 포함할 수 있다. 이들 구현예는, 트리거링 이벤트에 응답하여, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스에 대한 하나 이상의 메모리-로컬 프로세싱 커맨드들을 메모리 제어기로 전송하는 것을 추가로 포함할 수 있다.
일부 구현예들에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 것을 포함한다. 이들 구현예에서, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 것은, 트리거링 이벤트에 응답하여, 제1 아토믹 메모리 액세스를 포함하는 제1 캐시 라인이 제2 아토믹 메모리 액세스를 포함하는 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 것을 포함할 수 있으며, 여기서 제1 캐시 라인 및 제2 캐시 라인은 특수 캐시 상태에 있다. 일부 구현예들에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것은, 멀티-모듈 메모리-로컬 프로세싱 커맨드를 사용하여 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것을 포함할 수 있다.
또 다른 실시예는 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하기 위한 시스템에 관한 것이다. 시스템은 적어도 하나의 메모리-로컬 컴퓨트 유닛을 포함하는 메모리 디바이스를 포함한다. 시스템은 또한, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하고, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하도록 구성된 컴퓨팅 디바이스를 포함한다.
일부 구현예들에서, 컴퓨팅 디바이스는, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하고, 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하고, 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하도록 추가로 구성된다. 이들 구현예에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은, 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 것을 포함한다. 이들 구현예에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것은, 제2 아토믹 메모리 액세스에 의해 타겟팅된 캐시 라인 내의 위치에서의 데이터에 대해, 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 제2 아토믹 메모리 액세스의 동작을 수행함으로써 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것을 포함한다.
일부 구현예들에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 것을 포함한다. 이들 구현예에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것은, 멀티-모듈 메모리-로컬 프로세싱 커맨드를 사용하여 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것을 포함한다.
본 개시내용에 따른 실시예들은 도 1을 시작으로 더 상세히 설명될 것이다. 명세서 및 도면 전체에 걸쳐 동일한 참조 번호들은 동일한 요소들을 지칭한다. 도 1은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하기 위한 예시적인 시스템(100)의 블록도를 기재한다. 도 1의 예시적인 시스템(100)은 적어도 하나의 호스트 실행 엔진(102)을 포함하는 호스트 디바이스(예컨대, 시스템-온-칩(SoC) 디바이스 또는 시스템-인-패키지(SiP) 디바이스)를 포함한다. 도시되지는 않았지만, 호스트 디바이스(130)는 다수의 상이한 유형의 호스트 실행 엔진들을 포함하는 다수의 호스트 실행 엔진들을 포함할 수 있다. 다양한 예들에서, 호스트 실행 엔진(102)은 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 가속 프로세싱 유닛(APU), 응용 주문형 프로세서, 구성가능한 프로세서, 또는 다수의 동시 계산 시퀀스들을 지원할 수 있는 다른 그러한 컴퓨트 엔진일 수 있다. 호스트 디바이스(130)는 호스트 실행 엔진(102) 상에서 하나 이상의 애플리케이션들을 호스팅한다. 호스팅된 애플리케이션들은 멀티스레드 애플리케이션들일 수 있어서, 호스트 실행 엔진(102)이 애플리케이션의 다수의 동시 스레드들을 실행할 수 있고/거나 다수의 실행 엔진들(102)이 동일한 애플리케이션의 스레드들을 동시에 실행할 수 있다.
도 1의 예에서, 호스트 실행 엔진은 다수의 프로세싱 요소들(106), 레지스터 파일(134)을 갖는 다수의 단일 명령어 다중 데이터(single instruction multiple data, SIMD) 코어들(104), 및 제1 레벨 캐시(136)을 포함하는 GPU 컴퓨트 유닛이다. 스케줄러(108)는 명령어 풀로부터 명령어들을 로딩하고, 실행을 위해 이들을 SIMD 코어(104) 상에 배치한다(deploy). 시스템 메모리(120)에 대한 메모리 액세스가 요구될 때, SIMD 코어(104)는 캐시 계층구조, 로컬 데이터 저장소, 글로벌 데이터 저장소, 또는 다른 일시적 저장 컴포넌트에 대한 메모리 액세스 요청을 발행한다. 본 논의의 목적을 위해, 각각의 메모리 요청은 다수의 SIMD 코어들에 의해 공유되고 다수의 호스트 실행 엔진들(102)에 의해 공유될 수 있는 캐시(140)(즉, 최저 레벨 캐시)를 통과한다고 가정된다. 일부 경우들에서, 메모리 액세스 요청은 캐시, 즉 캐시 제어 로직(142)에 의해 서비스될 수 있다. 다른 경우들에서, 캐시 제어 로직(142)이 캐시(140)에서 메모리 액세스 요청을 서비스할 수 없는 경우, 캐시 제어 로직(142)은 요청에 의해 타겟팅된 데이터를 위해 메모리 제어기(112)에 메모리 액세스 요청을 발행한다. 이어서, 메모리 제어기(112)는, 요청에 의해 타겟팅된 메모리 위치에 저장된 데이터가 시스템 메모리(120)로부터 캐시(140)의 캐시 라인(144)으로 로딩되게 하는 커맨드들을 시스템 메모리(120)에 발행한다.
도 1의 예에서, 시스템 메모리(120)는 DRAM 뱅크들(128)과 같은 다수의 모듈들을 포함한다. 상호연결부(180)를 통해 메모리 제어기(112)에 연결되는 메모리 모듈들의 세트는 메모리 채널을 나타낸다. 따라서, 도 1은 하나의 메모리 채널을 도시하고 있지만, 메모리 채널은 다수의 메모리 제어기들을 포함할 수 있다. 또한, 시스템 메모리(120)는 다수의 메모리 채널들을 포함할 수 있다. 시스템 메모리(120)는 하나 이상의 메모리-로컬 컴퓨트 유닛들을 포함하거나 이에 결합된다. 메모리-로컬 컴퓨트 유닛은 레지스터들, ALU 또는 간단한 컴퓨트 코어, 및 시스템 메모리(120)에 저장된 데이터에 대한 간단한 산술 동작들을 수행하기 위한 제어 로직을 포함한다. 일부 예들에서, 메모리-로컬 컴퓨트 유닛은 메모리 디바이스(예컨대, 메모리 다이 또는 칩)에 결합되는 니어-메모리 컴퓨트 유닛일 수 있다. 예를 들어, 니어-메모리 컴퓨트 유닛은 3D 적층 메모리의 로직 다이, 메모리 디바이스에 결합된 메모리 가속기, 또는 호스트 디바이스(130)와 시스템 메모리(120) 사이의 인터포저에서 구현될 수 있다. 다른 예들에서, 메모리-로컬 컴퓨트 유닛은 메모리 다이에서, 또는 특히 DRAM 뱅크 내에서 구현되는, 프로세싱-인-메모리(PIM) 유닛(즉, 뱅크-로컬 PIM 유닛)일 수 있다. 제한이 아닌 예시의 목적을 위해, 도 1의 시스템 메모리(120)는 메모리-로컬 컴퓨트 유닛인 다수의 뱅크-로컬 PIM 유닛들(126)을 포함한다.
캐시(140)는 캐시 내의 데이터에 대해 아토믹 동작들을 수행할 수 있는 캐시 컴퓨트 로직(146)을 추가로 포함한다. 예를 들어, 아토믹 메모리 액세스 요청(즉, 아토믹 동작을 포함하는 메모리 액세스 요청)이 캐시에서 수신될 때, 아토믹 메모리 액세스 요청에 의해 타겟팅된 데이터는 이미 캐시(140)에 저장되어 있을 수 있다. 이 예에서, 캐시 컴퓨트 로직(146)은 요청에서 공급된 피연산자 및 요청에 의해 타겟팅된 위치(예컨대, 메모리 어드레스)에 대응하는 캐시 내의 데이터를 사용하여 아토믹 메모리 액세스 요청의 아토믹 동작(예컨대, 판독-수정-기록(RMW) 동작)을 수행한다. 아토믹 메모리 액세스 요청에 의해 타겟팅된 데이터가 캐시에 이미 저장되어 있지 않은 경우, 캐시 제어 로직(142)은 캐시 라인(144)을 할당하고, 아토믹 RMW 액세스 요청에 의해 타겟팅된 데이터를 포함하는 데이터를 시스템 메모리로부터 로딩한다. 캐시 컴퓨트 로직(146)은 로딩된 데이터 및 요청에 의해 공급된 피연산자를 사용하여 아토믹 동작을 수행하고 그 결과를 할당된 캐시 라인에 저장한다. 어느 경우든, 더티(dirty) 데이터의 후기록(writeback)이 트리거될 때(예컨대, 캐시 라인이 축출(evict)될 때), 업데이트된 캐시 라인은 시스템 메모리(120)에 기록된다.
아토믹 메모리 액세스 요청이 캐시(140)를 미스(miss)할 때, 캐시 제어 로직(142)은, 호스트 디바이스(130)에서의 실행을 위해 데이터를 캐시(140)로 로딩하기보다는, 아토믹 동작이 메모리-로컬 컴퓨트 유닛(즉, PIM 유닛(126))에서 수행되도록 하기 위한 요청을 발행함으로써 데이터 전달을 감소시킬 수 있다. 그러나, 이 기법은 메모리-로컬 컴퓨팅 및 PIM의 이점들을 활용하지만, 그것은, 타겟팅된 데이터가 캐시(140)로 결코 로딩되지 않기 때문에 캐시 지역성(cache locality) 및 재사용을 무시한다. 따라서, 동일한 캐시 라인에 대한 다수의 히트들은 동일한 수의 PIM 요청들을 계속 트리거할 것이다.
이러한 기법들의 균형을 맞추기 위해, 실행을 위해 메모리-로컬 컴퓨트 유닛으로 아토믹 메모리 액세스를 전송하기 전에 아토믹 메모리 액세스들이 캐시 라인에서 병합하도록 하기 위해 특수 캐시 상태가 활용된다. 이러한 아토믹 병합(atomic coalescing, AC) 상태는, PIM 유닛(126)에 의해 수행될 수 있는 캐시 내의 아토믹 동작들을 지연시키고, 이들을 동일한 캐시 라인에 대한 동일한 유형의 후속 아토믹들과 병합하는 데 사용될 수 있다. AC 상태의 사용은, 수반되는 아토믹 동작들이 가환성(commutative) 및 연상성(associative)(예컨대, 가산, 승산, MAX, MIN)이고 데이터 값을 반환하지 않는 것을 요구한다. 그러나, 일부 비-가환성 동작들은 캐시에서 가환성으로 변환될 수 있다(예컨대, 아토믹 감산은 피연산자를 부정함(negate)으로써 아토믹 가산으로 변환될 수 있음). 캐시 제어 로직(142)이 AC 상태의 캐시 라인을 할당할 때, 캐시 라인은 시스템 메모리로부터 로딩된 데이터로 채워지지 않는다. 오히려, 아토믹 메모리 액세스 요청의 피연산자가 캐시 라인에 저장된다. 데이터 값을 반환하지 않는 동일한 유형의 후속 아토믹 메모리 액세스는 캐시 라인을 히트하도록 허용될 것이고, 대응하는 피연산자는 타겟팅된 위치에서의 캐시 라인에 저장될 것이다. 표준 판독 또는 기록 동작, 또는 데이터 값을 반환하는 아토믹 동작은 캐시를 히트하도록 허용되지 않을 것이다. 이 경우, 케이스 미스는 메모리로부터 캐시 라인으로의 데이터의 로딩을 트리거할 것이고, 보류 중인 아토믹 동작은 로딩된 데이터에 대해 수행될 것이며, 그 결과는 캐시 라인에 기록되고 더티 유효(dirty valid)로 마킹될 것이다. 어떠한 그러한 비-병합 메모리 액세스 요청도 수신되지 않는다고 가정하면, 아토믹 동작들은 데이터의 후기록이 트리거될 때까지 캐시 라인에서 계속 병합될 것이고, 이때 캐시 제어 로직(142)은 캐시 라인에 표현된 아토믹 동작들에 대한 PIM 커맨드들을 발행할 것이다.
일부 예들에서, 상이한 유형들의 아토믹 동작들에 대해 상이한 AC 상태들이 있을 수 있다. 예를 들어, 아토믹 가산에 대한 하나의 AC 상태가 있고 아토믹 승산에 대한 다른 AC 상태가 있을 수 있지만, 캐시 라인당 하나의 유형의 아토믹만이 저장될 수 있다. 다른 예들에서, AC 상태는 캐시 뱅크와 같이 더 거친 입도에서 추적될 수 있다. 예를 들어, 주어진 캐시 뱅크는 임의의 시간에 하나의 유형의 아토믹만이 AC 상태에 사용하도록 허용할 수 있다. 다른 추가의 예들에서, 캐시 제어기에 의해 추적된 AC 상태는 예상되는 사용 사례들에 기초하여 소프트웨어에 의해 미리 설정되거나 하드와이어링될(hardwired) 수 있다. 예를 들어, 시스템은 아토믹 가산 동작을 사용하는 아토믹 RMW 액세스들에 대한 병합만을 지원할 수 있다.
캐시 제어 로직(142)은 또한 PIM 동작들을 병합하는 멀티-모듈 PIM 커맨드들을 발행함으로써 다수의 DRAM 모듈들에 대한 액세스의 평행성을 활용할 수 있다. 뱅크-로컬 PIM 구현예의 경우, 멀티캐스트 PIM 커맨드는 행 버퍼로부터의 모든 타겟 DRAM 뱅크들 내의 동일한 열 인덱스에 대해 동일한 동작을 수행한다. 일례에서, 캐시 제어 로직(142)은 캐시 라인들의 AC 상태들을 사용하여, PIM 요청들을 다수의 DRAM 뱅크들에 대한 멀티캐스트 PIM 커맨드들로 조합함으로써 병합될 수 있는 캐시 라인들을 식별할 수 있다.
추가 설명을 위해, 도 2는 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 본 방법은, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210)를 포함한다. 일부 예들에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것(210)은, 동일한 트리거링 이벤트에 기초하여 아토믹 판독-수정 기록(RMW) 액세스들과 같은 2개 이상의 아토믹 메모리 액세스들에 대한 니어-메모리 프로세싱 커맨드들을 함께 전송함으로써 그러한 2개 이상의 아토믹 RMW 액세스들이 병합될 수 있는지 여부를 결정하는 캐시 제어 로직(예컨대, 도 1의 캐시 제어 로직(142))에 의해 수행된다. 예를 들어, 트리거링 이벤트는 2개 이상의 RMW 액세스들 중 적어도 하나에 영향을 미치는 후기록, 캐시 라인 축출, 또는 캐시 라인 삽입일 수 있다. 일례에서, 동일한 캐시 라인을 히트하는 2개의 아토믹 RMW 액세스들은, 이들이 동일한 유형의 수정 동작을 사용하는 경우, 병합을 위한 후보들일 수 있다. 다른 예에서, 2개의 아토믹 RMW 액세스들은, 이들이 상이한 메모리 모듈들의 메모리 위치를 타겟팅하는 경우, 병합을 위한 후보들일 수 있다.
일부 예들에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것(210)은, 2개의 아토믹 RMW 액세스가 캐시 라인 병합을 위한 후보들인지 여부를 결정하는 것을 포함할 수 있다. 이들 예에서, 2개의 아토믹 RMW 액세스가 캐시 라인 병합을 위한 후보들인지 여부를 결정하는 것은, 2개의 아토믹 RMW 액세스들이 동일한 캐시 라인을 타겟팅하는지 여부를 결정하는 것, 2개의 아토믹 RMW 액세스들이 동일한 아토믹 동작을 사용하는지 여부를 결정하는 것, 그러한 동작들이 가환성 및 연상성인지 여부를 결정하는 것, 및 동작들이 반환 값을 요구하는지 여부를 결정하는 것을 포함할 수 있다. 이러한 예들에서, 2개의 아토믹 RMW 액세스들이 동일한 캐시 라인을 히트하고, 가환성 및 연상성 동작들인 동일한 유형의 아토믹 동작(예컨대, 동작들 둘 모두가 가산 동작들이거나, 동작들 둘 모두가 승산 동작들인 것 등)을 사용할 때, 및 어느 액세스도 반환 값을 요구하지 않을 때, 2개의 아토믹 RMW 액세스들은 캐시 라인 병합에 대한 후보들이며, 이는 아래에서 더 상세히 설명될 것이다.
일부 예들에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것(210)은, 2개의 아토믹 RMW 액세스가 멀티-모듈 병합에 대한 후보들인지 여부를 결정하는 것을 포함할 수 있다. 이들 예에서, 2개의 아토믹 RMW 액세스가 멀티-모듈 병합을 위한 후보들인지 여부를 결정하는 것은, 상이한 캐시 라인들에 배치되는 2개의 아토믹 RMW 액세스들이 동일한 유형의 니어-메모리 컴퓨트 동작들을 사용하는지 여부, 및 액세스들이 DRAM 행 내의 동일한 열 오프셋을 갖는 동일한 채널의 상이한 뱅크들에 대한 것인지 여부를 결정하는 것을 포함할 수 있다. 이러한 예들에서, 2개의 아토믹 RMW 액세스들이 상이한 캐시 라인들에 배치되고 동일한 유형의 니어-메모리 컴퓨트 동작(들)을 사용할 때, 및 그러한 아토믹 RMW 액세스가 DRAM 행 내의 동일한 열 오프셋을 사용하여 동일한 채널의 상이한 뱅크들을 타겟팅할 때, 2개의 아토믹 RMW 액세스들은 멀티-모듈 병합을 위한 후보들이며, 이는 아래에서 더 상세히 설명될 것이다.
추가 설명을 위해, 도 3은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 2의 예시적인 방법과 마찬가지로, 도 3의 예시적인 방법은 또한, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함한다.
이전에 언급된 바와 같이, 일부 실시예들에 따른 병합은 캐시 라인 병합을 포함한다. 캐시 라인 병합을 용이하게 하기 위해, 도 3의 예시적인 방법은 또한 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 단계(310)를 포함한다. 일부 예들에서, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 것(310)은, 예를 들어, 호스트 컴퓨트 유닛(예컨대, 도 1의 호스트 컴퓨트 엔진(102))으로부터의, 제1 아토믹 RMW 액세스에 대한 메모리 요청을 수신하거나 식별하는 캐시 제어기(예컨대, 캐시 제어 로직(142))에 의해 수행된다. 이들 예에서, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 것(310)은 또한, 제1 아토믹 RMW 액세스가 니어-메모리 컴퓨트 유닛에서 수행될 수 있는 가환성 및 연상성 동작을 사용한다고 결정하는 것을 포함한다. 일부 예들에서, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 것(310)은, 제1 아토믹 RMW 요청에 대한 요청에 의해 타겟팅된 메모리 위치가 무효 캐시 라인을 히트하거나 캐시를 미스한다고 결정하는 것을 추가로 포함한다.
도 3의 예시적인 방법은 또한 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하는 단계(320)를 포함한다. 일부 예들에서, 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하는 단계(320)는 전술한 아토믹 병합(AC) 상태의 캐시 라인을 할당하는 캐시 제어기에 의해 수행된다. 또한, 캐시 라인은 시스템 메모리로부터 로딩된 데이터로 캐시 라인을 채우지 않고 AC 상태에서 할당된다. 일부 예들에서, 상이한 유형들의 아토믹 동작들에 대해 상이한 AC 상태들이 있을 수 있다. 예를 들어, 아토믹 가산에 대한 하나의 AC 상태가 있고 아토믹 승산에 대한 다른 AC 상태가 있을 수 있지만, 캐시 라인당 하나의 유형의 아토믹만이 저장될 수 있다. 다른 예들에서, AC 상태는 캐시 뱅크와 같이 더 거친 입도에서 추적될 수 있다. 예를 들어, 주어진 캐시 뱅크는 임의의 시간에 하나의 유형의 아토믹만이 AC 상태에 사용하도록 허용할 수 있다. 다른 추가의 예들에서, 캐시 제어기에 의해 추적되는 AC 상태는 지원 제한들에 기초하여 하드와이어링될 수 있다. 예를 들어, 시스템은 아토믹 가산 동작을 사용하는 아토믹 RMW 액세스들에 대한 병합만을 지원할 수 있다.
캐시 라인이 AC 상태에 있을 때, 제1 아토믹 RMW와 병합하기 위한 후보인 아토믹 RMW 액세스에 대한 다른 요청은 캐시 히트를 야기할 것이다. 반면에 제1 아토믹 RMW 액세스와 병합하기 위한 후보가 아닌 다른 요청은 캐시 미스를 야기할 것이다. 예를 들어, 판독 메모리 액세스, 기록 메모리 액세스, 비-가환적 또는 비-연상적 아토믹 동작을 포함하는 메모리 액세스, 또는 반환 값을 갖는 아토믹 동작을 포함하는 메모리 액세스에 대한 요청과 같은 다른 메모리 요청은 캐시 미스를 야기할 것이다. 또한, 병합을 위한 후보가 아닌 다른 메모리 요청의 수신은 시스템 메모리로부터 캐시 라인으로의 데이터의 로드를 트리거할 것이고, AC 상태는 더티 유효 상태로 전이될 것이다.
도 3의 예시적인 방법은 또한 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하는 단계(330)를 포함한다. 일부 예들에서, 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하는 것(330)은, 캐시 제어기가, 액세스에 의해 타겟팅된 위치(예컨대, 오프셋 또는 어드레스)에서의 캐시 라인에 제1 아토믹 RMW 액세스에 대한 요청에 포함된 피연산자를 저장하는 것에 의해 수행된다. 이들 예에서, 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하는 것(330)은 또한, 캐시 라인의 나머지에 NULL 값들(예컨대, 아토믹 가산/감산의 경우 '0', 아토믹 승산의 경우 '1', 아토믹 MIN의 경우 MAX_INT 등)을 저장하는 것을 포함할 수 있다. N의 피연산자 값을 갖는 캐시 라인 내의 오프셋 위치 M에 대응하는 어드레스를 타겟팅하는 아토믹 가산 동작인 아토믹 RMW 액세스의 예를 고려한다. 아토믹 RMW 액세스 요청이 무효 캐시 라인을 히트할 때, 캐시 라인은 아토믹 가산 동작들에 대해 AC 상태에서 할당된다. (아토믹 RMW 액세스 요청으로부터의) 아토믹 가산 동작의 피연산자 값 N은 캐시 라인 내의 오프셋 위치 M에 저장된다. 캐시 라인 내의 다른 모든 오프셋들은 '0'으로 설정된다. AC 상태의 캐시 라인을 히트하고 병합을 위한 후보인 임의의 후속 아토믹 RMW 액세스 요청에 대해, 그 아토믹 RMW 액세스의 아토믹 동작은 후속 요청으로부터의 피연산자 및 피연산자 값 N(후속 요청이 보류 중인 아토믹의 오프셋 위치 M을 타겟팅하는 경우) 또는 피연산자 값 '0'(후속 요청이 캐시 라인 내의 임의의 다른 위치를 타겟팅하는 경우)을 사용하여 제자리에서 수행된다.
도 3의 예시적인 방법에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것(210)은, 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 것(340)을 포함한다. 일부 예들에서, 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 것(340)은, 캐시 제어기가, 제2 아토믹 RMW 액세스에 대한 요청이 AC 상태의 캐시 라인을 히트한다고 결정하고 제2 아토믹 RMW 액세스의 속성들을 검사하는 것에 의해 수행된다. 제2 RMW 액세스가 제1 RMW 액세스와 동일한 유형의 아토믹 동작이고 그 동작이 가환적 및 연상적(예컨대, 아토믹 가산)이고, 제2 RMW 액세스가 반환 값을 요구하지 않는 경우, 제2 RMW 액세스는 제1 아토믹 RMW 액세스와 병합하기 위한 후보인 것으로 결정될 수 있다.
추가 설명을 위해, 도 4는 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 3의 예시적인 방법과 마찬가지로, 도 4의 예시적인 방법은 또한, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 단계(310); 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하는 단계(320); 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하는 단계(330); 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 단계(340)를 포함하는, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함한다.
도 4의 예시적인 방법에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것(220)은, 제2 아토믹 메모리 액세스에 의해 타겟팅된 캐시 라인 내의 위치에서의 데이터에 대해, 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 제2 아토믹 메모리 액세스의 동작을 수행함으로써 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것(410)을 포함하며, 여기서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스는 동일한 캐시 라인 내의 하나 이상의 위치들을 타겟팅한다. 일부 예들에서, 제2 메모리 액세스에 의해 타겟팅된 캐시 라인 내의 위치에서의 데이터에 대해, 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 제2 아토믹 메모리 액세스의 동작을 수행함으로써 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 것(410)은, 캐시 제어기가, 제1 RMW 액세스에 대응하는 하나 이상의 니어-메모리 프로세싱 커맨드들(예컨대, PIM 커맨드들)을 메모리 제어기로 전송하는 것을 지연시키는 것에 의해 수행된다. 즉, 병합을 위한 후보들인 후속 RMW 액세스들(예컨대, 제2 아토믹 RMW 액세스)은 트리거링 이벤트가 발생할 때까지 캐시 라인에서 그러한 아토믹 동작들을 수행함으로써 병합하도록 혀용된다. 제2 또는 후속 RMW 액세스의 수정 동작(예컨대, 아토믹가산, 아토믹승산)은, 제1 RMW 액세스 또는 이전 RMW 액세스들의 피연산자(들)를 포함하는 캐시 라인 내의 데이터에 대해, 제2 RMW 액세스의 피연산자를 사용하여 수행된다.
예를 들어, 제1 RMW 액세스가 특정 캐시 라인 오프셋을 타겟팅하는 아토믹가산 동작을 포함하고, 제1 RMW 액세스의 피연산자가 '5'인 경우, (초기 값이 NULL이라고 가정하면) 특정 캐시 라인 오프셋에 '5'가 저장된다. 피연산자 '3'을 갖는 제2 RMW 액세스가 제1 RMW 액세스와 동일한 캐시 라인 오프셋을 타겟팅하고 제2 RMW 액세스가 또한 아토믹가산 동작을 포함할 때, (피연산자 '3'을 사용하는) 제2 RMW 액세스의 아토믹가산 동작은 그 오프셋에 저장된 데이터(제1 RMW 액세스의 피연산자 '5')에 대해 수행된다. 동작의 결과 값(즉, '8')은 제1 RMW 액세스에 의해 타겟팅된 동일한 오프셋에 저장된다. 그러나, 제2 RMW 액세스가 제1 RMW 액세스와 동일하지만 상이한 제2 위치(즉, 상이한 오프셋)에 있는 캐시 라인을 타겟팅하고, 그 위치의 값이 원래 캐시 라인 할당으로부터 NULL인 경우, 제2 RMW 액세스의 피연산자는 제2 위치에 저장된다. 따라서, RMW 액세스는, 타겟팅된 위치에서의 값이 NULL인 경우 캐시 라인에 그들의 피연산자들을 저장함으로써, 또는 그들이 캐시 라인 내의 동일한 위치(즉, 오프셋)를 타겟팅할 때 캐시 라인에서 대응하는 동작을 수행함으로써, 캐시 라인에서 병합된다.
일부 예들에서, 병합은, 캐시 컴퓨트 유닛(예컨대, 도 1의 캐시 컴퓨트 로직)이, 후속 아토믹 RMW 액세스의 피연산자 및 캐시 라인 내의 타겟 위치에 저장된 데이터에 기초하여 제자리에서 아토믹 동작을 수행하는 것에 의해 수행된다. 예를 들어, 타겟 위치에서의 캐시 라인 내의 데이터는 AC 상태의 캐시 라인의 할당 동안 초기화된 NULL 값일 수 있다. 타겟 위치에서의 캐시 라인 내의 데이터는 이전의 보류 중인 아토믹 RMW 액세스로부터의 피연산자 값일 수 있다. 타겟 위치에서의 캐시 라인 내의 데이터는 2개 이상의 이전의 보류 중인 아토믹 RMW 액세스들의 계산된 결과일 수 있다. 일부 예들에서, 병합을 종료하는 트리거링 이벤트는 (예컨대, AC 상태의 캐시 라인의 축출로 인한) 후기록일 수 있으며, 이때 병합된 아토믹 RMW 액세스들이 메모리-로컬 컴퓨트 유닛에 의한 실행을 위해 발행된다. 다른 예들에서, 병합을 종료하는 트리거링 이벤트는, 병합을 위한 후보가 아니며 캐시 라인 내의 위치를 타겟팅하는 메모리 액세스일 수 있다. 이들 예에서, 메모리 액세스는 캐시를 미스하여, 시스템 메모리로부터 캐시 라인으로 데이터가 로딩되게 한다. 이러한 예에서, 보류 중인 아토믹 RMW 액세스는 로딩된 데이터에 대해 수행되고, 수정된 데이터를 포함하는 캐시 라인은 AC 상태로부터 더티 유효 상태로 전이된다.
추가 설명을 위해, 도 5는 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 4의 예시적인 방법과 마찬가지로, 도 5의 예시적인 방법은 또한, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 단계(310); 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하는 단계(320); 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하는 단계(330); 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 단계(340)를 포함하는, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 제2 아토믹 메모리 액세스에 의해 타겟팅된 캐시 라인 내의 위치에서의 데이터에 대해, 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 제2 아토믹 메모리 액세스의 동작을 수행함으로써 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(410)를 포함하는, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함하며, 여기서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스는 동일한 캐시 라인 내의 하나 이상의 위치들을 타겟팅한다.
도 5의 예시적인 방법은 또한, 트리거링 이벤트에 응답하여, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스에 대한 하나 이상의 메모리-로컬 프로세싱 커맨드들을 메모리 제어기로 전송하는 단계(510)를 포함한다. 일부 예들에서, 트리거링 이벤트에 응답하여, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스에 대한 하나 이상의 메모리-로컬 프로세싱 커맨드들을 메모리 제어기로 전송하는 것(510)은, 캐시 제어기가, AC 상태의 캐시 라인에서 병합된 각각의 아토믹 RMW 액세스에 대한 메모리-로컬 프로세싱 커맨드들(예컨대, PIM 커맨드들)을 생성하는 것에 의해 수행된다. 일부 경우들에서(예컨대, 호스트 컴퓨트 유닛이 GPU인 경우), 각각의 아토믹 RMW 액세스에 대응하는 메모리-로컬 프로세싱 커맨드들의 스트림은 다수의 SIMD 데이터 레인들을 통해 단일 명령어를 사용하여 송신될 수 있다. 메모리-로컬 컴퓨트 동작들은 개별 아토믹 액세스들보다 더 거친 입도에 있을 가능성이 있을 것이다(그러나 여전히 잠재적으로 전체 캐시 라인보다 더 미세한 입도에서). 단일 아토믹에 대해 메모리-로컬 프로세싱 커맨드가 사용되는 경우, 하나를 제외한 모든 SIMD 레인들이 디스에이블될 필요가 있기 때문에 이는 낭비일 수 있다. 그러나, 다수의 아토믹 액세스들이 동일한 메모리-로컬 프로세싱 청크에 속하는 경우, PIM SIMD 동작은 그들 모두를 단일 동작으로 수행할 수 있다. 예를 들어, 단일 '로드+가산(Load+Add)' 메모리-로컬 프로세싱 커맨드가 캐시 라인에서 병합된 아토믹 RMW 액세스들 모두에 대해 사용될 수 있는 반면, 상이한 메모리 위치들을 타겟팅하는 피연산자들은 다수의 SIMD 데이터 레인들을 통해 독립적으로 제공될 수 있다. 동일한 캐시 라인 어드레스에 대한 아토믹 RMW 액세스들이 상이한 메모리-로컬 프로세싱 청크들에 속하더라도, 이들은 여전히 개선된 행 지역성의 이점을 누릴 수 있다. 즉, 병합이 없으면, 각각의 메모리-로컬 컴퓨트 동작을 수행하기 전에 DRAM 행 활성화가 두 번 수행될 필요가 있을 수 있다. 병합을 사용하면, 다수의 PIM 커맨드들이 요구될 수 있지만, DRAM 행은 단지 한 번만, 한 번 활성화될 필요가 있다. 일부 예들에서, 트리거링 이벤트는 (예컨대, 캐시 라인의 축출로 인한) 캐시 라인 후기록일 수 있다.
추가 설명을 위해, 도 6은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 3의 예시적인 방법과 마찬가지로, 도 6의 예시적인 방법은 또한, 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 단계(310); 메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하는 단계(320); 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 캐시 라인에 제1 아토믹 메모리 액세스의 피연산자를 저장하는 단계(330); 제2 아토믹 메모리 액세스가 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 단계(340)를 포함하는, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함한다.
도 6의 예시적인 방법은 또한, 하나 이상의 메트릭들에 기초하여, 제1 아토믹 메모리 액세스에 대해 특수 상태의 캐시 라인을 할당할지 여부를 결정하는 단계(610)를 포함한다. 일부 예들에서, 하나 이상의 메트릭들에 기초하여, 제1 아토믹 메모리 액세스에 대해 특수 상태의 캐시 라인을 할당할지 여부를 결정하는 단계(610)는, 병합이 수행되어야 할 때를 결정하기 위해 메트릭들의 세트를 추적하는 캐시 제어기에 의해 수행된다. 메모리-로컬 컴퓨트 유닛들에 의해 수행될 수 있는 아토믹 RMW 액세스를 병합하는 것은 메모리-로컬 컴퓨트 구현예 또는 호스트-기반 컴퓨트 구현예와 관련하여 어떠한 메모리 전달들도 도입하지 않지만, 그것은 메모리 전달을 중요한 경로 상으로 이동시킬 수 있다. 즉, 병합될 수 없는 AC 라인에 대한 아토믹 RMW 액세스는 반환 전에 메모리 로드를 트리거할 필요가 있지만, 그것은 그렇지 않았다면 호스트-기반 구현예에서 캐시를 히트했을 것이다. 따라서, 그러한 시나리오의 가능성에 기초하여 AC 상태를 사용할지 여부를 동적으로 결정하는 것이 바람직할 수 있다. 특히, 제어되는 캐시는 하나 이상의 메트릭들을 사용하여, AC 라인이 메모리에 적용되기 전에 AC 상태의 라인에 대한 비-병합가능한 액세스가 있을 가능성을 평가한다.
일부 예들에서, 아토믹 RMW 액세스가 시스템 메모리로부터의 데이터의 로드를 트리거할 이러한 가능성은, 병합될 수 없었고 AC 상태의 라인들을 타겟팅하는 최근 액세스들의 비율을 추적함으로써 근사화될 수 있다. 예를 들어, AC 상태에 있는 캐시 라인들이 거의 없다면, 더티 유효 상태가 사용될 수 있는데, 이는 최근 아토믹 액세스를 나타낼 수 있기 때문이다. 이 비율이 낮은 경우, AC 상태로의 전이는 성능을 손상시킬 가능성이 낮은데, 이는 비-병합가능한 액세스들이 AC 캐시 라인에 히트할 가능성이 낮기 때문이다.
일부 예들에서, 아토믹 RMW 액세스가 시스템 메모리로부터의 데이터의 로드를 트리거할 이러한 가능성은, 최근 액세스들 중 병합될 수 있는 아토믹 액세스들의 비율을 추적함으로써 근사화될 수 있다. AC 캐시 라인 할당이 가능할 때, 대응하는 아토믹 유형들의 비율이 체크된다. 이것이 높은 경우, AC 상태의 사용은 성능을 손상시킬 가능성이 더 낮은데, 이는 향후 액세스들이 병합될 가능성이 더 높기 때문이다.
일부 예들에서, 아토믹 RMW 액세스가 시스템 메모리로부터의 데이터의 로드를 트리거할 가능성은, 아토믹 액세스 지역성에 관하여 (예컨대, 메모리-매핑된 레지스터에 기록함으로써) 소프트웨어에 의해 공급된 추가 정보 및 아토믹 액세스들이 병합될 수 있는 가능성에 기초하여 근사화할 수 있다.
추가 설명을 위해, 도 7은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 2의 예시적인 방법과 마찬가지로, 도 7의 예시적인 방법은 또한 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함한다.
도 7의 예시적인 방법에서, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210)는, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계(710)를 포함한다. 일부 예들에서, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계(710)는, 캐시 제어기가, 들어오는 아토믹 메모리 액세스들의 속성들을 검사하고, 그러한 아토믹 메모리 액세스들 중 임의의 것이 동일한 아토믹 동작, 및 따라서 동일한 메모리-로컬 프로세싱 커맨드들을 사용하는지 여부를 결정하는 것에 의해 수행된다. 예를 들어, 캐시 제어기는, 제1 아토믹 RMW 액세스 및 제2 아토믹 RMW 액세스가 동일한 아토믹 동작, 및 따라서 동일한 메모리-로컬 프로세싱 커맨드들을 사용하는지 여부를 결정한다.
일부 예들에서, 2개의 RMW 액세스가 대칭인지 여부는, 호환가능한 아토믹 동작자 유형들(예컨대, 2개의 가산)인 것 및/또는 일부 조건을 충족하는 어드레스들을 타겟팅하는 것(예컨대, 그들이 동일한 메모리 채널의 상이한 DRAM 뱅크들 내의 동일한 DRAM 열을 타겟팅함)과 같은 멀티캐스트 커맨드에서 요구되는 조건들에 기초할 수 있다. 따라서, 이들 예에서, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계(710)는 또한, 동일한 아토믹 동작을 사용하는 액세스들에 대해, 그러한 아토믹 RWM이 상이한 메모리 모듈들 내의 대칭 타겟 메모리 위치들에 액세스하는지 여부를 결정하는 것에 의해 수행된다. 예를 들어, 캐시 제어기는, 제1 아토믹 RMW 액세스에 의해 타겟팅된 메모리 위치 및 제2 아토믹 RMW 액세스에 의해 타겟팅된 메모리 위치가 동일한 메모리 채널의 상이한 뱅크들에 위치되고 DRAM 행 내의 동일한 열 오프셋을 공유하는지(즉, 메모리 액세스들은 두 모듈들 사이에서 대칭임) 여부를 결정한다. 그러한 예들에서, 이러한 아토믹 RMW 액세스들은 병합하기 위한 후보들인데, 이는, 메모리 영역들로부터의 로드 또는 저장을 수행하는 메모리-로컬 프로세싱 커맨드들이 단일 멀티모듈 커맨드에 의해 구현될 수 있기 때문이다. 즉, 다수의 모듈들에 멀티캐스트되는 단일 메모리-로컬 프로세싱 커맨드는, 예를 들어, 제1 아토믹 RMW 액세스 및 제2 아토믹 RMW 액세스 둘 모두의 '저장' 커맨드를 구현하는 데 사용될 수 있는데, 그 이유는, 이들이 동일한 메모리 채널 내의 상이한 뱅크들을 타겟팅하고 DRAM 행 내의 동일한 열 오프셋을 공유하기 때문이다.
추가 설명을 위해, 도 8은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 7의 예시적인 방법과 마찬가지로, 도 8의 예시적인 방법은 또한 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계(710)를 포함하는 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함한다.
도 8의 예시적인 방법에서, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계(710)는, 트리거링 이벤트에 응답하여, 제1 아토믹 메모리를 포함하는 제1 캐시 라인이 제2 아토믹 메모리 액세스를 포함하는 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 단계(810)를 포함하며, 여기서 제1 캐시 라인 및 제2 캐시 라인은 특수 캐시 상태에 있다. 일부 예들에서, AC 캐시 상태는, 아토믹 RMW 액세스들이 멀티-모듈 병합을 위한 후보들인지 여부를 결정하는 데 활용된다. 이들 예에서, 제1 캐시 라인이 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 단계(710)는, AC 상태의 제1 캐시 라인이 AC 상태의 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 캐시 제어기에 의해 수행된다. 캐시 라인들 둘 모두가 동일한 유형의 AC 상태를 공유하거나, 그렇지 않으면 캐시 라인들 둘 모두가 동일한 유형의 아토믹 동작들을 포함하는 경우, 아토믹 RMW 액세스들은 멀티-모듈 병합을 위한 후보들일 수 있다. PIM과 같은 뱅크-로컬 컴퓨트 유닛의 경우, 2개의 캐시 라인들은, 이들이 동일한 유형의 메모리-로컬 컴퓨트 동작을 사용하고 이들이 동일한 채널의 상이한 뱅크들에 대한 것이며 DRAM 행 내의 동일한 열 오프셋을 사용하는 경우, 병합될 수 있다. 즉, 캐시 라인들의 AC 상태들을 활용함으로써, 아토믹 RMW 액세스들은 캐시 라인들에서 병합될 수 있으며, 멀티-모듈, 멀티캐스트 메모리-로컬 프로세싱 커맨드에 의해 추가로 병합될 수 있다.
일부 예들에서, 시스템 메모리에서의 이러한 배치를 결정하는 어드레스 비트들은 어떤 캐시 인덱스들이 잠재적으로 병합될 수 있는 라인들을 캐싱할 수 있는지를 나타내고, 이들 중 일부 또는 전부는 메모리-로컬 프로세싱 커맨드가 발행되려고 할 때 검색될 수 있다. 예를 들어, DRAM 열 인덱스 및 메모리 채널 인덱스를 결정하는 데 사용되는 어드레스 비트들이 캐시 세트 인덱스를 결정하는 데 사용되는 어드레스 비트들과 완전히 중첩될 때, 병합될 수 있는 임의의 캐시 라인들은 동일한 캐시 세트에 속하도록 보장된다. 따라서, 트리거 이벤트가 발생할 때 그 캐시 세트만이 검사될 필요가 있다.
일부 예들에서, 트리거링 이벤트는 캐시 라인 축출일 수 있어서, AC 상태의 하나의 캐시 라인이 축출될 때, 캐시 제어기가 동일한 AC 상태의 다른 캐시 라인들에 대해 캐시를 검색하고 그러한 캐시 라인들이 병합될 수 있는지 여부를 결정하도록 할 수 있다. 추가적으로 또는 대안적으로, 일부 예들에서, 트리거링 이벤트는, 예를 들어, 병합될 수 있는 아토믹 RMW 액세스들의 소정 임계 수가 있다고 결정될 수 있는 경우(캐시 세트가 이미 액세스되고 있으므로), AC 상태의 새로운 캐시 라인의 할당일 수 있다.
추가 설명을 위해, 도 9은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 8의 예시적인 방법과 마찬가지로, 도 9의 예시적인 방법은 또한, 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 제1 캐시 라인이 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 단계(810)를 포함하는, 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계(710)를 포함하는, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함한다.
도 9의 예에서, 제1 캐시 라인이 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 단계(810)는 또한 병합을 위한 후보들인 캐시 라인들을 추적하는 단계(910)를 포함한다. 일부 예들에서, 병합하기 위한 후보들인 캐시 라인들을 추적하는 단계(910)는, 병합하기 위한 잠재력을 갖는 AC 상태의 캐시 라인들을 추적하기 위한 구조를 유지하는 캐시 제어기에 의해 수행된다. 일부 구현예들에서, 구조 내의 각각의 엔트리는 단일 열 인덱스 및 채널 조합에 대응한다. 이러한 구현예들에서, 구조는 캐시에서 대응하는 AC 캐시 라인들을 룩업하는 데 필요한 비트들만을 포함할 수 있다. 예를 들어, 엔트리는, 캐시 라인이 캐시에서 AC 상태에 할당될 때마다 삽입 또는 업데이트될 수 있고, AC 캐시 라인이 제거될 때마다 제거 또는 업데이트될 수 있다. 멀티-모듈 병합은 기능에 영향을 주지 않는 최적화이고, 따라서 캐시에서 모든 AC 캐시 라인을 추적할 필요가 없으므로, 일부 구현예들에서, 최근에 액세스된 엔트리들, 빈번하게 액세스된 엔트리들, 또는 더 많은 AC 캐시 라인들을 추적하는 엔트리들을 우선순위화하는 대체 정책이 사용된다.
추가 설명을 위해, 도 10은 본 개시내용의 일부 실시예들에 따른 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하는 예시적인 방법을 예시하는 흐름도를 기재한다. 도 7의 예시적인 방법과 마찬가지로, 도 10의 예시적인 방법은 또한 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계(210); 및 상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 제1 아토믹 메모리 액세스가 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계(710)를 포함하는, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)를 포함한다.
도 10의 예시적인 방법에서, 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(220)는, 멀티-모듈 메모리-로컬 프로세싱 커맨드(예컨대, 멀티캐스트 PIM 커맨드)를 사용하여 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(1010)를 포함한다. 일부 예들에서, 멀티-모듈 메모리-로컬 프로세싱 커맨드를 사용하여 제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스를 병합하는 단계(1010)는, 캐시 제어기가, 아토믹 메모리 액세스들 둘 모두에 공통인 적어도 하나의 메모리-로컬 프로세싱 동작(예컨대, PIM 동작)에 대한 멀티캐스트 메모리-로컬 프로세싱 커맨드를 생성하는 것에 의해 수행된다. 예를 들어, 2개 이상의 아토믹 메모리 액세스들이 동일한 메모리-로컬 프로세싱 동작들(예컨대, 로드, 저장, 아토믹가산, 아토믹 승산 등)을 포함할 때, 그러한 메모리-로컬 프로세싱 동작들은 다수의 메모리-로컬 프로세싱 유닛들에 멀티캐스트되는 단일 병합된 메모리-로컬 프로세싱 커맨드에서 병합될 수 있다. 뱅크-로컬 PIM 유닛들이 활용되는 2개의 아토믹 RMW 액세스들에 대한 예시적인 PIM 코드 세그먼트를 고려한다. 각각의 아토믹 RMW 액세스는 '로드+가산' 동작 및 '저장' 동작으로 분해될 수 있다. 이 예에서, 하나의 로드+가산 동작이 제1 피연산자와 메모리 위치 A에서의 데이터의 가산의 결과를 제1 DRAM 뱅크의 레지스터1에 저장하고(예컨대, 'PIM Ld+add R1 ← [a]+op1'), 다른 하나의 로드+가산 동작이 제2 피연산자와 메모리 위치 B에서의 데이터의 가산의 결과를 제2 DRAM 뱅크의 레지스터1에 저장한다(예컨대, 'PIM Ld+add R1 ← [b]+op2')고 가정한다. 이어서, 제1 DRAM 뱅크 내의 레지스터1로부터의 결과는 제1 DRAM 뱅크 내의 메모리 위치 A에 저장되고(예컨대, 'PIM St R1 → [a]'), 제2 DRAM 뱅크 내의 레지스터1로부터의 결과는 메모리 위치 B에 저장된다(예컨대, 'PIM St R1 → [b]'). 따라서, 코드 세그먼트는 4개의 커맨드 슬롯들 및 2개의 데이터 슬롯들(피연산자들에 대한)을 사용한다. 2개의 '로드+가산' 동작들은 병합될 수 없는데, 이는, 각각의 요소가, 상이한 피연산자가 데이터 버스를 통해 송신될 것을 요구하기 때문이다. 그러나, 메모리 위치 A 및 메모리 위치 B가 동일한 메모리 채널에 있고 DRAM 행 내의 동일한 열 오프셋을 사용한다고 가정하면, '저장' 동작들은 제1 DRAM 뱅크 내의 PIM 유닛 및 제2 DRAM 뱅크 내의 PIM 유닛에 의해 수신되는 멀티-모듈 커맨드로 병합될 수 있다(예컨대, 'PIM St → [a|b]'). 병합된 PIM 커맨드는 하나의 커맨드 슬롯을 점유하며, 따라서 동일한 수의 저장 동작들을 달성하는 데 필요한 커맨드 슬롯들의 수를 감소시킨다. PIM 아키텍처에 대한 추가 최적화들은 이러한 병합 동작들을 더 효율적으로 만들거나, 병합을 더 유연한 병합이 되게 할 수 있다(예컨대, A 및 B는 동일한 열에 있을 필요가 없음).
멀티캐스트 동작들로 병합하는 것은 또한, 각각의 요소에 대해 상이한 피연산자들을 사용하는 것을 요구하지 않는 멀티캐스트 동작들에 유용할 수 있다. 예를 들어, 일부 그래프 알고리즘들은, RMW(예컨대, 너비 우선 검색(breadth first search), 그래프 채색(graph coloring))를 수행하기보다는, 동일한 값을 이웃 노드들의 희소한 세트에 저장한다. 그러한 동작은 뱅크-로컬 컴퓨트 유닛들(즉, 뱅크-로컬 PIM 유닛들)에 의해 가능해지는 멀티-모듈 동작을 활용하여, 메모리 대역폭을 개선할 수 있다. 이러한 동작들을 동적으로 병합하기 위해, 영향을 받는 라인들을 식별하는 정보와 함께 커맨드의 유형을 추적하고, 이어서 메모리-로컬 프로세싱 커맨드 멀티캐스트를 통해 임의의 병합된 타겟들에 대해 병렬로 동일한 커맨드를 적용하는 것만이 필요하다. 각각의 메모리 모듈이 상이한 마스크를 요구할 수 있지만, 이들은 메모리-로컬 컴퓨트 유닛 근처에 미리-저장될 수 있다.
또한, 멀티-모듈 병합의 가능성은 또한, 위에서 캐시 라인 병합에 대해 설명된 결정 방법론을 확장함으로써 아토믹 동작들이 처리되는 방법을 알리는 데에 사용될 수 있다. 아토믹 동작이 캐시에서 미스할 때, 캐시는 메트릭 정보를 사용하여, 멀티-모듈 병합이 가능성이 있는지 여부, 및 따라서 AC 캐시 라인을 할당하는 것이 유익할 가능성이 있는지 여부를 근사화할 수 있다. 예를 들어, 캐시 제어기는 들어오는 아토믹 동작과 병합될 수 있는 다른 AC 캐시 라인들에 대해 캐시를 검사할 수 있다. 그러한 캐시 라인들이 존재하는 경우, 멀티-모듈 병합 잠재력에 대한 잠재력이 존재한다. 다른 예에서, 캐시 제어기는 최근 동적으로 병합된 메모리-로컬 프로세싱 동작들에 대해 병합된 라인들의 평균 수를 추적할 수 있다. 이것이 높은 경우, 멀티-모듈 병합에 대한 잠재력은 더 높다.
유사하게, 캐시 제어기가 위의 조건들 중 임의의 것에 기초하여 아토믹 미스에 대해 AC 캐시 라인이 사용되지 않아야 한다고 결정하는 경우, 그것은 아토믹 동작을 메모리-로컬 컴퓨트 유닛에서 또는 캐시에서 수행할지 여부를 결정해야 한다. 들어오는 요청과 병합될 수 있는 다수의 AC 캐시 라인들이 캐시에 있고 아토믹들에 대한 지역성 및 재사용이 드물 것으로 예상되는 경우, 동작을 메모리-로컬 컴퓨트 유닛으로 오프로딩하는 것이 더 유리할 가능성이 있다. 병합될 수 있는 AC 캐시 라인이 캐시에 없고 아토믹 지역성/재사용이 가능성이 있을 것으로 예상되는 경우, 캐시 라인을 할당하고 캐시에서 아토믹 동작을 수행하는 것은 바람직하다. 이러한 조건들은, 관련 캐시 이벤트 빈도 및/또는 점유를 추적하기 위한 간단한 카운터들을 포함하는, 다수의 방식들로 계산될 수 있다.
전술한 내용을 고려하여, 당업자는 본 개시내용에 따른 실시예들이 다수의 이점들을 제공한다는 것을 이해할 것이다. 실시예들은 (예컨대, PIM 유닛에 의한) 메모리-로컬 프로세싱을 위한 동작들을 전송하기 전에 이용가능할 때 캐시 지역성을 동적으로 활용할 수 있다. 이러한 실시예들은 더 넓은 병합 윈도우를 제공하고, 동작들은 캐시에서 무한히 지연될 수 있어서, 더 많은 병합 기회들을 제공할 수 있다. 또한, (메모리 제어기 내의 큐와 대조적으로) 타겟 어드레스에 기초한 캐시의 정적 및 결정론적 인덱싱으로 인해, 실시예들은 타겟 어드레스에 기초하여 병합가능한 동작들을 추적하는 것을 더 쉽게 만들며, 이는 멀티-모듈, 멀티캐스트 메모리-로컬 프로세싱 커맨드들을 사용하기 위한 더 간단하고 더 효율적인 추적 메커니즘에 적합하다. 또한, 실시예들에 의해 도입된 하드웨어 및 캐시 로직 오버헤드는 최소이다.
실시예들은 메모리-로컬 컴퓨팅이 아토믹 동작들에 대해 효율적으로 사용될 수 있게 하며, 이는 다양한 중요한 작업부하들(예컨대, 그래프 분석, 희소 행렬 대수, 기계 학습 등)에 대한 성능을 개선할 수 있다. 이러한 애플리케이션들은 이용가능할 때 캐시 지역성을 이용할 수 있고, 병합 기회들을 동적으로 식별하여 더 효율적인 멀티-모듈 메모리-로컬 프로세싱 동작들을 가능하게 할 수 있다.
실시예들은 시스템, 장치, 방법 및/또는 논리 회로부일 수 있다. 본 개시내용의 컴퓨터 판독가능 프로그램 명령어들은 어셈블러 명령어, 명령어-세트-아키텍처(ISA) 명령어, 기계 명령어, 기계 의존 명령어, 마이크로코드, 펌웨어 명령어, 상태-설정 데이터, 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 이와 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 작성된 소스 코드 또는 객체 코드일 수 있다. 일부 실시예들에서, 예를 들어 프로그래밍가능 논리 회로부, 필드 프로그래밍가능 게이트 어레이(FPGA), 또는 프로그래밍가능 로직 어레이(PLA)를 포함하는 전자 회로부는 컴퓨터 판독가능 프로그램 명령어들의 상태 정보를 활용하여 컴퓨터 판독가능 프로그램 명령어들을 실행할 수 있다.
본 개시내용의 양태들은 본 개시내용의 일부 실시예들에 따른 방법들, 장치(시스템들), 및 논리 회로부의 흐름도 예시들 및/또는 블록도들을 참조하여 본 명세서에 설명된다. 흐름도 예시들 및/또는 블록도들의 각각의 블록, 그리고 흐름도 예시들 및/또는 블록도들 내의 블록들의 조합들은 논리 회로부에 의해 구현될 수 있다는 것이 이해될 것이다.
논리 회로부는 프로세서, 다른 프로그래밍가능 데이터 프로세싱 장치, 또는 다른 디바이스에서 구현되어, 일련의 동작 단계들로 하여금 프로세서, 다른 프로그램가능 장치 또는 다른 디바이스에서 수행되어 컴퓨터 구현 프로세스를 생성하게 할 수 있어서, 컴퓨터, 다른 프로그래밍가능 장치, 또는 다른 디바이스에서 실행되는 명령어들이 흐름도 및/또는 블록도의 블록 또는 블록들에서 특정된 기능들/동작들을 구현하도록 한다.
도면들에서의 흐름도 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들, 및 논리 회로부의 가능한 구현예들의 아키텍처, 기능, 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도들 내의 각각의 블록은 특정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어들을 포함하는 명령어들의 모듈, 세그먼트 또는 부분을 나타낼 수 있다. 일부 대안적인 구현예들에서, 블록에 언급된 기능들은 도면들에 언급된 순서와는 다르게 발생할 수 있다. 예를 들어, 연속으로 도시된 두 개의 블록들이 실제로는 실질적으로 동시에 실행될 수 있거나, 때로는 관련된 기능에 따라 블록들이 역순으로 실행될 수 있다. 또한 블록도들 및/또는 흐름도 예시들의 각각의 블록, 및 블록도들 및/또는 흐름도 예시들 내의 블록들의 조합들은, 특정된 기능들 또는 동작들을 수행하거나 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들을 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있다는 점에 유의한다.
본 개시내용은 그 실시예들을 참조하여 구체적으로 도시되고 설명되었지만, 다음 청구범위의 사상 및 범위를 벗어나지 않으면서 형태 및 세부사항에서의 다양한 변경이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 본 명세서에 설명된 실시예들은 단지 설명적인 관점에서만 고려되어야 하며, 제한의 목적으로 고려되어서는 안 된다. 본 개시내용은 상세한 설명에 의해서가 아니라 첨부된 청구범위에 의해 정의되며, 그 범위 내의 모든 차이점은 본 개시내용에 포함되는 것으로 해석될 것이다.

Claims (20)

  1. 메모리-로컬 컴퓨팅(memory-local computing)을 위한 아토믹 메모리 동작(atomic memory operation)들을 동적으로 병합하는(coalesce) 방법으로서,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계; 및
    메모리-로컬 컴퓨트 유닛(memory-local compute unit)에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 방법은,
    상기 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하는 단계;
    메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하는 단계; 및
    상기 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 상기 캐시 라인에 상기 제1 아토믹 메모리 액세스의 피연산자를 저장하는 단계를 추가로 포함하며,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계는,
    상기 제2 아토믹 메모리 액세스가 상기 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 상기 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 단계는,
    상기 제2 아토믹 메모리 액세스에 의해 타겟팅된 상기 캐시 라인 내의 위치에서의 데이터에 대해, 상기 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 상기 제2 아토믹 메모리 액세스의 동작을 수행함으로써 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 단계를 포함하는, 방법.
  4. 제3항에 있어서,
    트리거링 이벤트에 응답하여, 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스에 대한 하나 이상의 메모리-로컬 프로세싱 커맨드들을 메모리 제어기로 전송하는 단계를 추가로 포함하는, 방법.
  5. 제2항에 있어서,
    하나 이상의 메트릭들에 기초하여, 상기 제1 아토믹 메모리 액세스에 대해 상기 특수 상태의 상기 캐시 라인을 할당할지 여부를 결정하는 단계를 추가로 포함하는, 방법.
  6. 제1항에 있어서,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 단계는,
    상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 상기 제1 아토믹 메모리 액세스가 상기 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계를 포함하는, 방법.
  7. 제6항에 있어서,
    상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 상기 제1 아토믹 메모리 액세스가 상기 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 단계는,
    트리거링 이벤트에 응답하여, 상기 제1 아토믹 메모리 액세스를 포함하는 제1 캐시 라인이 상기 제2 아토믹 메모리 액세스를 포함하는 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 단계를 포함하며, 상기 제1 캐시 라인 및 상기 제2 캐시 라인은 특수 캐시 상태에 있는, 방법.
  8. 제7항에 있어서,
    트리거링 이벤트에 응답하여, 상기 제1 아토믹 메모리 액세스를 포함하는 제1 캐시 라인이 상기 제2 아토믹 메모리 액세스를 포함하는 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 단계 - 상기 제1 캐시 라인 및 상기 제2 캐시 라인은 특수 캐시 상태에 있음 - 는,
    병합을 위한 후보들인 캐시 라인들을 추적하는 단계를 포함하는, 방법.
  9. 제6항에 있어서,
    상기 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 상기 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 단계는,
    멀티-모듈 메모리-로컬 프로세싱 커맨드를 사용하여 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 단계를 포함하는, 방법.
  10. 제1항에 있어서,
    상기 메모리-로컬 컴퓨트 유닛은 프로세싱-인-메모리(processing-in-memory, PIM) 유닛인, 방법.
  11. 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하기 위한 컴퓨팅 디바이스로서, 상기 컴퓨팅 디바이스는,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하고;
    메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하도록 구성된 로직 회로부를 포함하는, 컴퓨팅 디바이스.
  12. 제11항에 있어서, 상기 로직 회로부는,
    상기 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하고;
    메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하고;
    상기 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 상기 캐시 라인에 상기 제1 아토믹 메모리 액세스의 피연산자를 저장하도록 추가로 구성되며,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은,
    상기 제2 아토믹 메모리 액세스가 상기 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 것을 포함하는, 컴퓨팅 디바이스.
  13. 제12항에 있어서,
    상기 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 상기 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것은,
    상기 제2 아토믹 메모리 액세스에 의해 타겟팅된 상기 캐시 라인 내의 위치에서의 데이터에 대해, 상기 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 상기 제2 아토믹 메모리 액세스의 동작을 수행함으로써 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것을 포함하는, 컴퓨팅 디바이스.
  14. 제13항에 있어서,
    트리거링 이벤트에 응답하여, 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스에 대한 하나 이상의 메모리-로컬 프로세싱 커맨드들을 메모리 제어기로 전송하는 것을 추가로 포함하는, 컴퓨팅 디바이스.
  15. 제11항에 있어서,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은,
    상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 상기 제1 아토믹 메모리 액세스가 상기 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 것을 포함하는, 컴퓨팅 디바이스.
  16. 제15항에 있어서,
    상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 상기 제1 아토믹 메모리 액세스가 상기 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 것은,
    트리거링 이벤트에 응답하여, 상기 제1 아토믹 메모리 액세스를 포함하는 제1 캐시 라인이 상기 제2 아토믹 메모리 액세스를 포함하는 제2 캐시 라인과 병합될 수 있는지 여부를 결정하는 것을 포함하며, 상기 제1 캐시 라인 및 상기 제2 캐시 라인은 특수 캐시 상태에 있는, 컴퓨팅 디바이스.
  17. 제16항에 있어서,
    상기 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 상기 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것은,
    멀티-모듈 메모리-로컬 프로세싱 커맨드를 사용하여 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것을 포함하는, 컴퓨팅 디바이스.
  18. 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들을 동적으로 병합하기 위한 시스템으로서,
    적어도 하나의 메모리-로컬 컴퓨트 유닛을 포함하는 메모리 디바이스; 및
    컴퓨팅 디바이스를 포함하며, 상기 컴퓨팅 디바이스는,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하고;
    메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하도록 구성되는, 시스템.
  19. 제18항에 있어서, 상기 컴퓨팅 디바이스는,
    상기 제1 아토믹 메모리 액세스가 병합을 위한 후보라고 결정하고;
    메모리로부터 데이터를 로딩하지 않고 특수 상태에서 캐시 라인을 할당하고;
    상기 제1 아토믹 메모리 액세스에 의해 타겟팅된 위치에서의 상기 캐시 라인에 상기 제1 아토믹 메모리 액세스의 피연산자를 저장하도록 추가로 구성되며,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은,
    상기 제2 아토믹 메모리 액세스가 상기 제1 아토믹 메모리 액세스와 병합하기 위한 후보라고 결정하는 것을 포함하고;
    메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것은,
    상기 제2 아토믹 메모리 액세스에 의해 타겟팅된 상기 캐시 라인 내의 위치에서의 데이터에 대해, 상기 제2 아토믹 메모리 액세스의 피연산자를 사용하여, 상기 제2 아토믹 메모리 액세스의 동작을 수행함으로써 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것을 포함하는, 시스템.
  20. 제18항에 있어서,
    제1 아토믹 메모리 액세스 및 제2 아토믹 메모리 액세스가 병합을 위한 후보들인지 여부를 결정하는 것은,
    상이한 메모리 모듈들에 대한 대칭 액세스에 기초하여 상기 제1 아토믹 메모리 액세스가 상기 제2 아토믹 메모리 액세스와 병합될 수 있는지 여부를 결정하는 것을 포함하고;
    상기 메모리-로컬 컴퓨트 유닛에 의한 메모리-로컬 프로세싱을 요청하기 전에 상기 캐시에서 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것은,
    멀티-모듈 메모리-로컬 프로세싱 커맨드를 사용하여 상기 제1 아토믹 메모리 액세스 및 상기 제2 아토믹 메모리 액세스를 병합하는 것을 포함하는, 시스템.
KR1020247002404A 2021-06-28 2022-06-27 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합 KR20240023642A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/361,145 2021-06-28
US17/361,145 US11726918B2 (en) 2021-06-28 2021-06-28 Dynamically coalescing atomic memory operations for memory-local computing
PCT/US2022/035142 WO2023278338A1 (en) 2021-06-28 2022-06-27 Dynamically coalescing atomic memory operations for memory-local computing

Publications (1)

Publication Number Publication Date
KR20240023642A true KR20240023642A (ko) 2024-02-22

Family

ID=82703114

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247002404A KR20240023642A (ko) 2021-06-28 2022-06-27 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합

Country Status (5)

Country Link
US (1) US11726918B2 (ko)
EP (1) EP4363984A1 (ko)
KR (1) KR20240023642A (ko)
CN (1) CN117546148A (ko)
WO (1) WO2023278338A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886344B2 (en) * 2022-06-29 2024-01-30 Xilinx, Inc. Cached system for managing state vectors

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473681B2 (en) * 2009-02-17 2013-06-25 Rambus Inc. Atomic-operation coalescing technique in multi-chip systems
US20100318741A1 (en) * 2009-06-12 2010-12-16 Cray Inc. Multiprocessor computer cache coherence protocol
US10133662B2 (en) * 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations
US9218204B2 (en) * 2012-12-21 2015-12-22 Advanced Micro Devices, Inc. Processing engine for complex atomic operations
US9256466B2 (en) * 2013-06-07 2016-02-09 Arm Limited Data processing systems
US9092345B2 (en) 2013-08-08 2015-07-28 Arm Limited Data processing systems
GB2527529B (en) 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
US10325344B2 (en) 2017-04-17 2019-06-18 Intel Corporation Efficient merging of atomic operations at computing devices
US11119920B2 (en) 2018-04-19 2021-09-14 Eta Scale Ab Systems and methods for non-speculative store coalescing and generating atomic write sets using address subsets

Also Published As

Publication number Publication date
WO2023278338A1 (en) 2023-01-05
US11726918B2 (en) 2023-08-15
CN117546148A (zh) 2024-02-09
US20220414013A1 (en) 2022-12-29
EP4363984A1 (en) 2024-05-08

Similar Documents

Publication Publication Date Title
US8732711B2 (en) Two-level scheduler for multi-threaded processing
US10896128B2 (en) Partitioning shared caches
US6430656B1 (en) Cache and management method using combined software and hardware congruence class selectors
US7752417B2 (en) Dynamic selection of memory virtualization techniques
US7917710B2 (en) Memory protection in a computer system employing memory virtualization
US7827381B2 (en) Hybrid techniques for memory virtualization in a computer system
US7822941B2 (en) Function-based virtual-to-physical address translation
EP2542973B1 (en) Gpu support for garbage collection
US9047197B2 (en) Non-coherent store instruction for fast inter-strand data communication for processors with write-through L1 caches
US9547593B2 (en) Systems and methods for reconfiguring cache memory
CN103197953A (zh) 推测执行和回滚
US20070239940A1 (en) Adaptive prefetching
US8930636B2 (en) Relaxed coherency between different caches
US10482024B2 (en) Private caching for thread local storage data access
US6421761B1 (en) Partitioned cache and management method for selectively caching data by type
JP5226010B2 (ja) 共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路
KR20240023642A (ko) 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합
US9606924B2 (en) System and method for supporting fast and deterministic execution and simulation in multi-core environments
CN114035980B (zh) 基于便笺存储器来共享数据的方法和电子装置
US20150095614A1 (en) Apparatus and method for efficient migration of architectural state between processor cores
US20140223109A1 (en) Hardware prefetch management for partitioned environments
US11455253B2 (en) Set indexing for first-level and second-level set-associative cache
US11934311B2 (en) Hybrid allocation of data lines in a streaming cache memory
CN111373385B (zh) 用于改进的进程切换的处理器和其方法
CN116804975A (zh) 具有每扇区高速缓存驻留控件的高速缓存存储器