Professional Documents
Culture Documents
Benchmarking A New Paradigm An Experimental Analysis of A Real Pim
Benchmarking A New Paradigm An Experimental Analysis of A Real Pim
텍처를 설계하고 제조했습니다. UP‑ MEM PIM 아키텍처는 기존 DRAM 메모리 어려움을 겪음 ) [132‑166] 으로 인해 3D 스택 메모리 [63, 167‑172] 와 같은
어레이를 동일한 칩에 통합된 DPU(DRAM 처리 장치)라고 하는 범용 순차 코어와 혁신이 이루어졌습니다 . 처리 기능을 통합하면서 메모리 하위 시스템을 재설계할
결합합니다. 수 있는 새로운 기회를 제공하는 비 휘발성 메모리 [146, 173–183] . 3D 스택 메
모리는 처리 요소를 내장할 수 있는 로직 레이어와 DRAM 레이어를 통합합니다.
이 백서는 공개적으로 사용 가능한 최초의 실제 PIM 아키텍처에 대한 최초의 포 여러 연구에서는 범용 코어 [8, 56, 63–67, 128, 184] 와 같은 논리 계층 에서 다
괄적인 분석을 제공합니다. 우리는 두 가지 중요한 기여를 합니다. 먼저 마이크로벤 양한 유형의 처리 구성 요소를 구현하기 위해 PNM(Processing‑Near‑
치마크를 사용하여 UPMEM 기반 PIM 시스템의 실험적 특성화를 수행하여 컴퓨 Memory) 이라고 하는 이 접근 방식을 탐구합니다. 응용별 가속기 [57–61, 69,
팅 처리량 및 메모리 대역폭과 같은 다양한 아키텍처 제한을 평가하고 새로운 통찰 79, 81, 82 , 88, 89, 101, 104, 105, 107, 108, 124–127, 129–131, 185,
력을 얻습니다. 둘째, 다양한 애플리케이션 도메인(예: 조밀/희소 선형 대수, 데이터 186], 단순 기능 단위 [62, 84, 120, 122, 123, 187], GPU 코어 [78, 80, 85,
베이스, 데이터 분석, 그래프 처리, 신경망 , 생물정보학, 이미지 처리)의 16개 워크 87] 또는 재구성 가능한 논리 [68, 73, 75, 121]. 그러나 3D 스택 메모리는 높은
로드로 구성된 벤치마크 제품군인 PrIM (Processing‑In‑Memory 벤치마크 )을 비용과 제한된 용량으로 인해 어려움을 겪고 있으며 로직 레이어에는 하드웨어 영
제시합니다. 우리는 이를 메모리 바인딩으로 식별합니다. 우리는 UPMEM PIM 아 역 및 열 방출 제약이 있어 내장된 처리 구성 요소의 기능이 제한됩니다. 반면, 메
키텍처에서 PrIM 벤치마크의 성능 및 확장 특성을 평가 하고 성능 및 에너지 소비 모리를 이용한 처리(PUM)는 SRAM [21‑24 ], DRAM [25‑40, 99, 100, 119,
를 최신 CPU 및 GPU와 비교합니다. 640 및 2,556 DPU를 갖춘 두 개의 실제 188‑191] 또는 비휘발성 메모리 셀의 아날로그 작동 속성을 활용합니다. 메모리
UPMEM 기반 PIM 시스템에 대해 수행된 광범위한 평가 는 PIM 시스템에 대한 다 [41–55, 70, 103, 114, 118, 192–196] 특정 유형의 작업을 효율적으로 수행합
양한 워크로드 의 적합성에 대한 새로운 통찰력 , 소프트웨어 설계자를 위한 프로그 니다. 그러나 메모리를 사용한 처리는 간단한 비트 연산(예: 다수, AND, OR)으로
래밍 권장 사항, 미래 PIM의 하드웨어 및 아키텍처 설계자를 위한 제안 및 힌트를 제한되며 [21, 25, 26, 188, 191] 더 복잡한 연산을 수행 하려면 높은 영역 오버
제공합니다. 시스템. 헤드가 필요합니다 [35, 36 , 99] 또는 비트 직렬 계산을 가능하게 하기 위해 데이
터 구성, 조작 및 처리 메커니즘에 대한 상당한 변경이 필요하지만 여전히 제한 사
항이 있습니다.
키워드
메모리 내 처리, 근접 데이터 처리, 메모리 시스템, 데이터 이동 병목 현상, DRAM,
벤치마킹, 실제 시스템 특성화, 워크로드 특성화
Machine Translated by Google
특정 작업에 대해 [29, 37, 40].1 더욱이 메모리를 사용한 처리 접근 방식은 일반적으로 주 다양한 유형과 크기의 전송을 위한 메모리와 MRAM 뱅크는 DPU와 호스트
로 정규 계산에 효율적입니다 . 왜냐하면 자연스럽게 많은 수의 메모리 셀(예: 여러 개의 전 CPU 및 기타 DPU 의 통신에 중요합니다 .
체 행에 걸쳐 있는 전체 행) 에서 작동하기 때문입니다. 하위 배열 [25–28, 37, 188–191 ,
197]) 을 동시에 생성합니다. 이러한 이유로 3D 스택 메모리 또는 메모리를 사용한 처리를 실제 PIM 아키텍처를 위한 최초의 벤치마크 제품군인 PrIM (Processing‑In‑
기반으로 하는 완전한 PIM 시스템은 아직 실제 하드웨어에서 상용화되지 않았습니다. Memory 벤치마크)을 소개합니다 . PrIM에는 16개의 작업이 포함되어 있습니다.
다양한 애플리케이션 도메인(예: 조밀/희소 선형 대수학, 데이터베이스, 데이
터 분석, 그래프 처리, 신경망, 생물정보학, 이미지 처리)의 로드(예: 기존 CPU
UPMEM PIM 아키텍처 [198, 199]는 실제 하드웨어에서 상용화된 최초의 PIM 시스 의 루프라인 모델을 사용하여 메모리 바인딩된 것으로 식별) ]. 우리는 2,556
템입니다 . 앞서 언급한 문제를 방지하려면 개의 DPU가 있는 시스템에서 16개의 벤치마크를 사용하여 강력한 스케일링
제한 사항이 있기 때문에 기존 2D DRAM 어레이를 사용하고 이를 DPU(DRAM 처리 장 3 및 약한 스케일링4 실험을 수행 하고 성능 및 에너지 소비를 최신 CPU 및
치)라고 하는 범용 처리 코어와 동일한 칩에 결합합니다. 동일한 칩에 메모리와 처리 구성 GPU와 비교합니다. 우리의 광범위한 평가는 PIM 시스템에 대한 다양한 워크
요소를 결합하면 심각한 설계 문제가 발생합니다. 예를 들어, DRAM 디자인은 단지 3개의 로드의 적합성에 대한 새로운 통찰력, 소프트웨어 설계자를 위한 프로그래밍
금속 레이어[200, 201]만을 사용하는 반면 , 기존 프로세서 디자인은 일반적 으로 10개 이 권장 사항, 미래 PIM 시스템의 하드웨어 및 아키텍처 설계자를 위한 제안 및
상의 금속 레이어를 사용합니다 [199, 202‑204]. 이러한 문제로 인해 빠른 논리 트랜지스 힌트를 제공합니다 . 우리의 모든 마이크로벤치마크와 PrIM 벤치마크는 공개
터를 제작할 수 없는 반면, UPMEM은 수백 메가헤르츠에서 실행되도록 상대적으로 깊게 적 으로 무료로 제공되어 [214] 실제 PIM 아키텍처 에 대한 프로그래밍 샘플
파이프라인되고 세분화 된 멀티스레드 [205‑209] 인 DPU 코어를 통해 이러한 문제를 극 역할을 하고 , 현재와 미래의 PIM 시스템을 평가 및 비교하며, PIM 아키텍처,
복합니다 . UPMEM PIM 아키텍처는 다른 PIM 제안과 관련하여 몇 가지 주요 이점을 제 프로그래밍 및 소프트웨어 연구를 더욱 발전시키는 데 도움이 됩니다.5
공합니다. 첫째, 최신 3D 스택 메모리 기술의 단점을 피하면서 성숙한 2D DRAM 설계 및
제조 공정을 사용합니다 . 둘째, 범용 DPU는 단순한 최신 범용 프로세서와 유사하게 다양
한 계산 및 데이터 유형을 지원합니다 . 셋째, 이 아키텍처는 DPU의 스레드가 서로 독립적
으로 실행될 수 있기 때문에 불규칙한 계산에 적합합니다 (즉, SIMD2에서와 같이 잠금 단
계 실행에 의해 바인딩되지 않음 ). 넷째, UPMEM은 일반적으로 사용되는 C 언어로 DPU 이 작업의 주요 기여는 다음과 같습니다.
프로그램을 작성할 수 있는 완전한 소프트웨어 스택을 제공합니다 [213]. • 우리는 공개적으로 사용 가능한 최초의 실제 PIM 아키텍처에 대한 최초의 포괄적인 특성
화 및 분석을 수행합니다. 우리는 새로운 아키텍처의 잠재력, 한계 및 병목 현상을 분석
합니다.
우리는 (1) 다양한 메모리 액세스 패턴에 대한 DPU 메모리 계층의 다양한
수준에서 메모리 대역폭 , (2) 다양한 데이터 유형에 대한 다양한 산술 연산
의 DPU 컴퓨팅 처리량 , (3) 다양한 계산에 대한 강하고 약한 스케일링 특
성을 분석합니다. 패턴. 우리는 (1) UPMEM PIM 아키텍처가 기본적으로 컴
퓨팅 바운드라는 점을 발견했습니다. 왜냐하면 정수 추가보다 더 복잡한 작
최초의 공개 PIM 아키텍처인 UPMEM PIM 아키텍처와 다양한 워크로드 업을 수행하는 워크로드는 잠재적으로 메모리 대역폭을 포화시키기 전에 명
에 대한 적합성을 엄격하게 이해 하면 이 아키텍처는 물론 미래의 PIM 시스템 령 파이프라인을 완전히 활용하고 (2) DPU 간 통신이 필요한 워크로드를
에 대한 프로그래머, 사용자, 설계자에게 귀중한 통찰력을 제공할 수 있습니 완전히 활용하기 때문입니다. DPU 간에 직접적인 통신 채널이 없기 때문
다 . 이를 위해 우리의 작업은 공개적으로 사용 가능한 최초의 실제 PIM 아키 에 확장성이 좋지 않습니다. 따라서 모든 DPU 간 통신은 호스트 CPU, 즉
텍처에 대한 최초의 포괄적인 실험적 특성화 및 분석을 제공합니다. 실험적 연 좁은 메모리 버스를 통해 이루어집니다 . • 우리는 기존 프로세서 중심 시스
구와 분석을 가능하게 하기 위해 우리는 공개적이고 자유롭게 사용할 수 있는 템에 메모리 바인딩된 16개의 실제 작업 부하로 구성된 실제 PIM 아키텍처
새로운 마이크로벤치마크와 새로운 벤치마크 제품군을 개발합니다 [214]. 에 대한 최초의 벤치마크 제품군인 PrIM을 공개하고 오픈 소스로 제공합니
다.
1비트 직렬 계산을 수행하는 PUM 접근 방식 [29, 37, 40] 은 데이터 요소를 수직으로 레이아웃해야 합니다 (즉, 동
삼
일한 비트라인에 있는 요소의 모든 비트). 이는 (1) 특정 데이터 조작 작업(예: 셔플링)을 허용 하지 않습니다. 배열의 강력한 스케일링은 특정 문제를 해결하는 프로그램의 실행 시간이 고정된 문제 크기에 대한 프로세서 수에 따라 어
데이터 요소) 및 (2)는 데이터 형식을 변경해야 할 때(즉, 비트 직렬 계산을 수행하기 전에) 비트 전치의 오버헤드를 지 떻게 달라지는지를 나타냅니다[216, 217].
불해야 합니다. 4약한 스케일링은 특정 문제를 해결하는 프로그램의 실행 시간이 프로세서당 고정된 문제 크기에 대한 프로세서 수에
따라 어떻게 달라지는지를 나타냅니다 [216, 218].
2
SIMD(Single Instruction Multiple Data) [210–212] 는 여러 처리 요소가 여러 데이터 요소에 대
해 동일한 작업을 동시에 실행하는 실행 패러다임을 나타냅니다. 5우리는 독자들에게 최첨단 과제에 관한 최근 개요 논문 [2] 을 소개합니다.
PIM 연구에서.
2
Machine Translated by Google
즉, CPU와 GPU입니다. 우리의 분석은 몇 가지 새롭고 흥미로운 결과를 보여 MRAM) 결과 검색(MRAM에서 메인 메모리로) .
줍니다. 우리는 세 가지 주요 결과를 강조합니다. 첫째, 두 UPMEM 기반 PIM 이러한 CPU‑DPU 및 DPU‑CPU 데이터 전송은 모든 MRAM 뱅크에서/으로 전송
시스템 모두 PrIM 벤치마크 중 13개에서 최신 CPU( 평균 각각 93.0배 및 27.9 되는 버퍼의 크기가 동일한 경우 병렬로(즉, 여러 MRAM 뱅크에서 동시에) 수행될
배 )보다 성능이 뛰어나며 집중적인 DPU 간 동기화 또는 부동 소수점 연산이 수 있습니다 .
필요하지 않습니다.6 섹션 5.2에서는 PIM 시스템을 최신 CPU 및 GPU와 비교 그렇지 않으면 데이터 전송이 순차적으로 발생합니다. 즉, 다른 MRAM 뱅크와의
한 자세한 분석을 제공합니다. 전송은 MRAM과의 전송 이후에 시작됩니다.
은행 완료). DPU 간의 직접 통신은 지원되지 않습니다 . 모든 DPU 간 통신은
둘째, 2,556‑DPU PIM 시스템은 (1) 스트리밍 메모리 액세스, (2) DPU 간 DPU에서 CPU로 결과를 검색하고 CPU에서 DPU로 데이터를 복사하는 방식으
동기화가 거의 또는 전혀 없음, (3) 거의 없는 10 PrIM 벤치마크에서 최신 로 호스트 CPU를 통해 이루어집니다. 현재 UPMEM 기반 PIM 시스템에서는 동일
GPU보다 빠릅니다 (평균 2.54배 ). 또는 복잡한 산술 연산(예: 정수 곱셈/ 한 MRAM 뱅크에 대한 호스트 CPU와 DPU의 동시 액세스가 불가능합니다.
나누기, 부동 소수점 연산) 을 사용하지 않습니다 .7 셋째, PIM, CPU 및
GPU 시스템의 에너지 소비 비교는 성능 비교와 동일한 추세를 따릅니다.
CPU 및 GPU보다 성능이 크게 뛰어난 워크로드의 경우 CPU 및 CPU에 비 직렬 전송을 위한 프로그래밍 인터페이스 [213] 는 특정 MRAM 뱅크로
해 에너지가 크게 절약됩니다. (dpu_copy_to) 및 특정 MRAM 뱅크 에서 (dpu_copy_from) 버퍼를 복사하
는 기능을 제공합니다 . 병렬 전송을 위한 프로그래밍 인터페이스 [213] 는 버퍼를
특정 MRAM 뱅크 (dpu_prepare_xfer) 에 할당한 다음 실제 CPU‑DPU 또는
우리는 최초의 상용 PIM 시스템을 아키텍처, 소프트웨어 및 제조 측면에서 DPU‑CPU 전송을 시작하여 병렬 로 실행하는 기능 (dpu_push_xfer)을 제공
수십 년 동안 고도로 최적화된 CPU 및 GPU 시스템 과 비교하고 있습니다. 합니다. 병렬 전송을 위해서는 모든 MRAM 뱅크와의 전송 크기가 동일해야 합니
그럼에도 불구하고 우리는 대부분의 PrIM 벤치마크(섹션 5.2)에서 CPU 및 다. 모든 MRAM 뱅크에 복사 할 버퍼가 동일하면 브로드캐스트 CPU‑DPU 메모
GPU에 비해 PIM의 상당한 이점을 확인했습니다. 우리는 PIM 시스템의 아 리 전송(dpu_broadcast_to)을 실행할 수 있습니다.
키텍처, 소프트웨어 및 제조가 계속해서 개선될 것이라고 믿습니다(예: 섹션
6에서 향후 개선을 위한 최적화 및 영역 제안 ). 따라서 CPU 및 GPU 시스템
에 대한 보다 공정한 비교가 가능하며 향후 PIM 시스템에 대한 더 높은 이점 주 메모리와 PIM 지원 메모리에는 서로 다른 데이터 레이아웃이 필요합니다. 메
을 밝힐 수 있습니다. 인 메모리는 연속적인 8비트 워드를 연속적인 DRAM 칩에 매핑하는 기존 수평
DRAM 매핑 [199, 228] 을 사용하는 반면, PIM 지원 메모리는 동일한 MRAM 뱅
크(하나의 PIM 칩 에서)에 매핑된 전체 64비트 워드가 필요합니다. ) [199]. PIM
지원 메모리에 이러한 특수 데이터 레이아웃이 있는 이유는 각 DPU가 단일 MRAM
2 UPMEM PIM 아키텍처 뱅크에만 액세스할 수 있지만 최대 64비트의 데이터 유형에서 작동할 수 있기 때문
UPMEM PIM 지원 시스템의 구성(섹션 2.1), DPU 코어 아키텍처(섹션 2.2) 및 입니다. UPMEM SDK에는 메인 메모리와 MRAM 뱅크 간에 데이터를 전송할 때
DPU 프로그래밍의 중요한 측면(섹션 2.3)에 대해 설명합니다. 필요한 데이터 셔플링을 수행하는 전치 라이브러리 [199] 가 포함되어 있습니다 .
이러한 데이터 레이아웃 변환은 프로그래머에게 투명합니다 . 직렬/ 병렬/브로드캐
스트 CPU‑DPU 및 직렬/병렬 DPU‑CPU 전송을 위해 UPMEM SDK에서 제공
2.1 시스템 구성 그림 1(왼쪽)은 (1) 호스 하는 기능은 내부적으로 전치 라이브러리를 호출하며, 라이브러리는 최종적으로 필
요에 따라 데이터 레이아웃 변환을 수행합니다.
트 CPU(예: x86 [219], ARM64 [220] 또는 64비트 RISC‑V [221] 멀티 코어
시스템을 갖춘 UPMEM 기반 PIM 시스템을 보여줍니다. ), (2) 표준 메인 메모
리(DRAM 메모리 모듈 [222‑225]), (3) PIM 지원 메모리(UPMEM 모듈 )
[198, 199]. PIM 지원 메모리는 하나 이상의 메모리 채널에 상주할 수 있습니
호스트 CPU는 DPU 기능이나 커널을 실행하기 위해 원하는 수의 DPU, 즉
다. UPMEM 모듈은 여러 PIM 칩이 포함된 표준 DDR4‑2400 DIMM(모듈)
DPU 세트를 할당할 수 있습니다. 그런 다음 호스트 CPU는 DPU 커널을 동기식
[226] 입니다. 그림 2는 두 개의 UPMEM 모듈을 보여줍니다. UPMEM 모듈의
또는 비동기식으로 시작합니다 [213].
모든 DPU는 호스트 CPU에 대한 병렬 보조 프로세서로 함께 작동합니다.
동기 실행은 DPU 세트가 커널 실행을 완료할 때까지 호스트 CPU
스레드를 일시 중지합니다 . 비동기 실행은 즉시 호스트 CPU 스레
드에 제어권을 반환하며, 나중에 완료 상태를 확인할 수 있습니다
각 UPMEM PIM 칩(그림 1(오른쪽)) 내부에는 8개의 DPU가 있습니다.
[213].8
각 DPU는 (1) 메인 RAM(MRAM) 이라고 하는 64MB DRAM 뱅크, (2)
현재 UPMEM 기반 PIM 시스템 구성 [227] 에서 UPMEM DIMM의 최
IRAM(명령어 RAM) 이라고 하는 24KB 명령어 메모리 및 (3) 64KB DRAM 뱅크 대 수는 20개입니다. UPMEM 기반 PIM
에 독점적으로 액세스할 수 있습니다. WRAM(Working RAM)이라고 불리는 스
20개의 UPMEM 모듈이 있는 시스템은 최대 2,560개의 DPU를 포함할 수 있으
크래치패드 메모리 . MRAM은 입력 데이터를 복사하기 위해 호스트 CPU(그림
며 이는 160GB의 PIM 지원 메모리에 해당합니다.
1(왼쪽))에서 액세스할 수 있습니다(메인 메모리에서
표 1은 두 가지 실제 UPMEM 기반 PIM 시스템을 보여줍니다.
우리는 이 작업에 사용합니다.
6다른 세 가지 PrIM 벤치마크 중 두 가지인 BFS(Breadth‑First Search)와
NW(Needleman‑Wunsch)는 호스트 CPU를 통한 DPU 간 동기화의 막대한 오버헤드를 지불합니다. 우리는 2,556개의 DPU와 총 159.75GB MRAM을 포함하는 실제
세 번째 방법인 SpMV(Sparse Matrix‑Vector Multiply)는 부동 소수점 곱셈과 덧셈을 집중적으로 UPMEM 기반 PIM 시스템을 사용합니다 . DPU는 다음과 같이 구성됩니다.
사용합니다.
7또한 640‑DPU PIM 시스템을 평가한 결과 대부분의 PrIM 벤치마크에서 GPU보다
느리지만 두 시스템(640‑DPU PIM 및 GPU) 간의 성능 격차는 그렇지 않은 10 PrIM
벤치마크에서 상당히 작았습니다. (1) DPU 간 통신이 많거나 (2) 곱셈 연산을 집중적
8
으로 사용해야 합니다 . 이 작업에서는 벤치마크(섹션 4))가 DPU 커널이 실행되는 동안 컴퓨팅을 위해 호스트 CPU를 요구
640‑DPU PIM 시스템은 GPU에 적합하지 않은 두 가지 벤치마크에서 GPU보다 빠릅니 하지 않기 때문에 동기 실행만 사용합니다 . 우리는 비동기 실행의 사용을 탐구하는 것이 향후 작업에
다. 섹션 5.2에서는 비교에 대한 자세한 분석을 제공합니다. 서 유망한 주제라고 믿습니다 .
삼
Machine Translated by Google
PIM 칩
메인 메모리
제어/상태 인터페이스 DDR4 인터페이스
음주 음주 음주 음주 음주 음주 음주 음주
칩 칩 칩 칩 칩 칩 칩 칩
4
CPU‑DPU 음주 음주 음주 음주 음주 음주 음주 음주
보내다
칩 칩 칩 칩 칩 칩 칩 칩
가져오기1
xM 6 가져오기2
24KB
주인 가져오기3 IRAM
CPU 읽기OP1 2
5 64MB
DPU‑CPU READOP2 64비트
록
등
일
파
READOP3 음주
체재
PIM PIM PIM PIM PIM PIM PIM PIM 은행
AM엔
진
D
칩 칩 칩 칩 칩 칩 칩 칩 ALU1
ALU2 64KB (MRAM)
PIM PIM PIM PIM PIM PIM PIM PIM ALU3
칩 칩 칩 칩 칩 칩 칩 칩 ALU4
램
로
관
xN 병합1
병합2 삼
PIM 지원 메모리
7 1
x8
PIM 지원
메모리
음주
CPU 1
PIM 지원 메모리
PIM 지원
메모리
음주
CPU 0
그림 2: UPMEM 기반 PIM 모듈(다운로드됨)
[227]에서).
PIM 지원
메모리
20개의 더블 랭크 DIMM(DIMM당 128개의 DPU 포함).9 각 DPU는 실행됩니다.
350MHz에서. 20개의 UPMEM DIMM은 듀얼 x86 소켓에 있습니다.
소켓당 2개의 메모리 컨트롤러. 각 메모리 컨트롤러에는 3개의
메모리 채널 [229]. 각 소켓에는 기존 DIMM 2개가 있습니다.
4
Machine Translated by Google
우리는 또한 640개의 DPU를 갖춘 오래된 실제 시스템을 사용합니다. DPU는 2.3.1 프로그래밍 언어 및 런타임 라이브러리. DPU 프로그램은 일부 라이브러리
DIMM당 64개의 DPU를 포함하는 10개의 단일 등급 DIMM으로 구성됩니다. 호출과 함께 C 언어로 작성됩니다[198, 213].10 UPMEM SDK [234] 는 C 언
따라서 MRAM의 총 용량은 40GB입니다. 이 시스템의 각 DPU는 267MHz에 어 및 LLVM 컴파일 프레임워크 [235] 에서 지원되는 공통 데이터 유형을 지원합니
서 실행됩니다. 10개의 UPMEM DIMM은 x86 소켓에 있습니다. 다 . 지원되는 명령어의 전체 목록을 보려면 독자에게 UPMEM 사용자 매뉴얼
2개의 메모리 컨트롤러가 있습니다. 각 메모리 컨트롤러에는 3개의 메모리 채 [213]을 참조하세요.
널이 있습니다 [230]. 기존 DRAM의 DIMM 2개는 메모리 컨트롤러 중 하나
의 채널 에 있습니다 . UPMEM 런타임 라이브러리 [213] 는 (1) 명령을 MRAM 뱅크에서 IRAM으
로 이동하고 (2) MRAM 뱅크와 WRAM 간 데이터를 이동하는 라이브러리 호출
(즉, MRAM‑WRAM 전송을 위한 mram_read() , 및 WRAM‑MRAM 전송을 위
2.2 DPU(DRAM 처리 장치) 아키텍처 DPU(그림 1(오른쪽))는 특정 명령 한 mram_write()) .
어 세트 아키텍처(ISA) [213] 를 갖춘 다중 스레드 순차 32비트 RISC 코어입
니다 . DPU 에는 24개의 하드웨어 스레드가 있으며 각 스레드에는 24개의 UPMEM 런타임 라이브러리는 또한 (1) 중요 섹션을 생성하는 뮤텍스
32비트 범용 레지스터가 있습니다 ( 그림 1(오른쪽)의 ). 이러한 하드웨어 (mutex_lock(), mutex_unlock()) 를 잠그고 잠금 해제하고, (2) 모든 태스크
스레드는 명령어 메모리(IRAM) 와 스크래치패드 메모리(WRAM) 를 공 릿이 실행될 때까지 태스크릿 실행을 일시 중지하는 액세스 장벽 (barrier_wait())
유하여 피연산자를 저장합니다. DPU의 파이프라인 깊이는 14단계입니다 . 을 수행하는 기능을 제공합니다. DPU에서 프로그램의 동일한 지점에 도달하고,
그러나 파이프라인의 마지막 세 단계(예: 그림 1(오른쪽)의 ALU4, (3) 일대일 태스크릿 동기화를 가능하게 하는 핸드셰이크 (handshake_wait_for(),
MERGE1 및 MERGE2) 만 다음 단계의 DISPATCH 및 FETCH 단계와 병렬 handshake_notify())를 기다리고 알리고, (4) 세마포어를 증가 및 감소시킵니
로 실행될 수 있습니다. 동일한 스레드 에서 명령을 수행합니다 . 따라서 동일 다. 카운터(sem_give(), sem_take()).
한 스레드의 명령은 11주기 간격으로 전달되어야 하며 파이프라인을 완전히
활용하려면 최소 11개의 스레드가 필요합니다 [231]. C 언어를 사용하여 DPU를 프로그래밍하면 학습 곡선이 낮아지지만 프로
그래머는 몇 가지 과제를 처리해야 합니다 . 첫째, 최대 24개의 태스크릿을 실
행하는 수천 개의 DPU를 프로그래밍하려면 신중한 워크로드 분할 및 조정이
24KB IRAM은 최대 4,096개의 48비트 인코딩 명령어를 저장할 수 있습니다. 필요합니다. 각 태스크릿에는 프로그래머가 해당 목적으로 사용할 수 있는 태
WRAM의 용량은 64KB입니다. DPU는 8, 16, 32 및 64비트 로드/저장 명령 스크릿 ID가 있습니다. 둘째, 프로그래머는 표준 메인 메모리와 MRAM 뱅크
을 통해 WRAM에 액세스할 수 있습니다 . ISA는 명령을 MRAM 뱅크에서 간에 데이터를 명시적으로 이동해야 하며, CPU와 DPU 간의 데이터 일관성을
IRAM으로 이동하고 데이터를 MRAM 뱅크와 WRAM 사이에서 이동하기 위한 보장(즉, CPU와 DPU가 최신의 올바른 데이터 복사본을 사용하도록 보장)하
DMA 명령 [213] 을 제공합니다. 는 것이 프로그래머의 책임입니다. . 셋째, DPU는 캐시 메모리를 사용하지 않
습니다.
DPU의 주파수는 잠재적으로 400MHz 이상에 도달할 수 있습니다 [227].
400MHz에서 DPU당 가능한 최대 MRAM‑WRAM 대역폭은 약 800MB/s를 MRAM 뱅크와 WRAM 간의 데이터 이동은 다음과 같습니다.
달성할 수 있습니다. 따라서 2,560개의 DPU가 포함된 구성의 최대 집계 프로그래머가 명시적으로 관리합니다.
MRAM 대역폭은 잠재적으로 2TB/s가 될 수 있습니다. 그러나 DPU는 2,556‑
2.3.2 일반 프로그래밍 권장 사항. UPMEM 프로그래밍 가이드 [213], 프레젠테
DPU 설정에서는 350MHz로 실행되고 640‑DPU 시스템에서는 267MHz로
이션 [199], 백서[198] 에서 찾을 수 있는 UPMEM 기반 PIM 시스템의 일반적인
실행됩니다.
프로그래밍 권장 사항은 다음과 같습니다.
이러한 이유로 우리 설정에서 DPU당 가능한 최대 MRAM‑WRAM 대역폭 은
700MB/s(640‑DPU 설정에서 534MB/s) 이고 2,556 DPU에 대한 최대 집
첫 번째 권장 사항은 호스트 CPU와의 빈번한 상호 작용을 피하면서 가능
계 대역폭은 1.7TB /s(333.75 640‑DPU 시스템에서는 GB/s).
한 한 긴 병렬 코드의 DPU 부분에서 실행하는 것입니다. 이 권장 사항은
5
Machine Translated by Google
6
Machine Translated by Google
70 70
1 # 크기 256 정의
(a) INT32 (1 DPU) (b) INT64 (1DPU)
2 int * 버퍼 rA = mem_alloc ( SIZE * sizeof ( int ) ) ; 60 60
량(
리
처
술
산
량(
리
처
술
산
)SPOM
)SPOM
(a) C 기반 코드.
0 0
1
삼
5
삼
7
5
7
9
9
11
31
51
71
91
11
31
51
71
91
12
32
12
32
1 이동 r2 , 0
#태스크렛 #태스크렛
2 . LBB0_1 : // 루프 헤더
삼 lsl _ r3 추가 , r0 , r2 , 2 6 6
(c) 플로트 (1DPU) (d) 더블 (1DPU) 추가하다
4 lw r4 , r3 , 0 보결
5 5
5 r4 추가 r4 , r1 멀
,
4 추가하다 4 DIV
6sw r3 _ , 0 , r4
보결
7 r2를 추가하세요 , r2 , 1 삼 멀 삼
, 256 , DIV
8 jneq r2 . LBB0_1
2 2
9
량(
리
처
술
산
량(
리
처
술
산
)SPOM
)SPOM
0 0
1
삼
5
삼
7
5
7
9
9
목록 1: 32‑의 처리량 평가를 위한 Microbenchmark
11
31
51
71
91
11
31
51
71
91
12
32
12
32
비트 정수 추가 [214]. #태스크렛 #태스크렛
그림 4: 산술 연산(ADD, SUB,
MUL, DIV)를 하나의 DPU에서 4가지 데이터 유형으로 사용: (a)
64비트 정수의 경우 COPY, ADD, SCALE 및 TRIAD입니다. INT32, (b) INT64, (c) FLOAT, (d) DOUBLE.
이러한 마이크로벤치마크는 2개(COPY, SCALE) 또는 3개(ADD,
TRIAD)는 스트리밍 방식(즉, 단위 스트라이드 또는 순차적 )으로 배열됩니다. ADD,
SCALE 및 TRIAD에 의해 수행되는 작업 첫째, 모든 산술 연산 및 데이터 유형의 처리량
각각 덧셈, 곱셈, 덧셈+곱셈이 있습니다 . 11개의 tasklet 후에 포화됩니다. 이 관찰은 섹션 2.2의 파이프라인 설명과 일치합니다.
DPU는 파이프라인을 완전히 활용하기 위해 태스크릿 전체에서 세분화된 멀티스레딩을 사
우리 실험에서는 지속 대역폭을 측정합니다. 용한다는 점을 기억하세요.
WRAM은 우리가 측정한 평균 대역폭입니다. 동일한 태스크릿의 명령어는 11주기 간격으로 전달되므로
비교적 오랜 시간 동안(즉, 스트리밍을 통해 스트리밍하는 동안) 11개의 태스크릿은 완전히 활용하는 데 필요한 최소 태스크릿 수입니다.
WRAM의 전체 배열). 파이프라인.
이론적으로 최대 WRAM 대역폭을 얻을 수 있습니다.
주요 관찰 1
숫자에 따라 달라지는 STREAM 마이크로벤치마크
각 버전에서 작업을 실행하는 데 필요한 지침 DRAM 처리의 산술 처리량
스트림의. DPU 파이프라인이 가득 찼다고 가정하면 다음과 같이 계산됩니다. 단위는 11개 이상의 tasklet으로 포화됩니다. 이 관찰은 ‑
초당 바이트 단위의 이론적 최대 WRAM 대역폭 이 방식은 다양한 데이터 유형(INT32, INT64,
(B/s)(수식 2), 여기서 는 읽은 총 바이트 수이고 UINT32, UINT64, FLOAT, DOUBLE) 및 연산(ADD,
쓰여진 것은 STREAM 버전의 명령 수입니다. SUB, MUL, DIV).
바이트를 읽고, 수정하고, 쓰는 것은 DPU 주파수입니다.
7
Machine Translated by Google
3000
그림 4c, d). 주된 이유는 하드웨어 비용 문제와 사용 가능한 금속 레이어의 제한된 수로 인해 스트림 (WRAM, INT64, 1DPU)
2500 2,818.98
DPU 파이프라인에 완전한 32 × 32비트 곱셈기가 포함되어 있지 않기 때문입니다 [199]. 32비 추가하다
2000 복사 1,682.46
트 피연산자의 곱셈과 나눗셈은 비트 이동과 덧셈을 기반으로 하는 두 개의 명령어 (mul_step, 규모
1500 삼인조
div_step) [213] 를 사용하여 구현됩니다 . 이러한 명령어를 사용하면 곱셈과 나눗셈을 수행하
MAR지
인
적
속
W
폭(
역
대
초
/B)M
1000
는 데 피연산자 값에 따라 최대 32사이클(32 mul_step 또는 div_step 명령어)이 걸릴 수 있
61.66
습니다. 500
42.03
0
123456 7 8 9 10 11 12 13 14 15 16
#태스크렛
곱셈과 나눗셈에 32사이클이 걸리는 경우 예상 처리량(식 1)은 10.94MOPS입니다. 이는 우리가
측정한 것과 유사합니다 (그림 4a에 표시된 대로 32비트 곱셈의 경우 10.27MOPS, 32비트 나 그림 5: 스트리밍 액세스 패턴을 위한 지속적인 WRAM 대역폭.
첫째, 산술 처리량과 유사하게 WRAM 대역폭은 태스크릿 수인 11개 태스 3.2.1 읽기 및 쓰기 지연 시간과 대역폭. 이 실험에서는 단일 DMA 전송의 지
크릿 이후에 포화되는 것을 관찰합니다. 연 시간을 측정합니다.
DPU 파이프라인을 완전히 활용하는 데 필요합니다.
둘째, 측정된 최대 지속 WRAM 대역폭은 작업을 실행하는 데 필요한 명령 11우리는 마이크로벤치마크( 오픈 소스 릴리스[214]의 일부로 도 제공 ) 를 사용하여 이 관찰을 검증했지만 간결성을 위해 여기
에 자세한 결과를 표시하지 않습니다 . 이 마이크로벤치마크는 WRAM, 및 의 세 가지 어레이를 사용합니다. 배열은 복사할 주
수에 따라 달라집니다 . COPY의 경우 2,818.98MB/s를 측정했는데, 이는 방
소 목록입니다(즉, [ [ ] ] = [ [ ] ]). 이 주소 목록은 (1) 단위 스트라이드(즉, [ ] = [ 1] + 1), ,(2) 스트라이드(즉, [ ] = [ 1]
정식 2를 통해 얻은 이론적 최대 WRAM 대역폭인 2,800MB/s 와 유사합니다 + ) 또는 (3) 무작위(예: , [ ] = ()). 주어진 수의 태스크릿과 배열 크기에 대해 모든 액세스 패턴(예: 단위 스트라이드, 스트라이
(섹션 3.1.1 참조). ADD는 64비트 요소당 5개의 명령을 실행합니다 . 즉, 2개 드 또는 무작위)에 대해 동일한 실행 시간을 측정하여 WRAM 대역폭이 액세스 패턴과 무관하다는 것을 확인합니다.
8
Machine Translated by Google
분석 모델링. 방정식 3의 선형 표현식을 사용하여 MRAM 액세스 대기 시간(주기 단위)을 분 우리는 그림 6에서 네 가지 관찰을 합니다.
석적으로 모델링할 수 있습니다 . 여기서 는 DMA 전송의 고정 비용, 가변 비용(즉, 바이트당 비용) 첫째, MRAM에 대한 읽기 및 쓰기 액세스가 대칭임을 관찰합니다 . 읽기 및
을 나타내고 는 전송 크기(바이트)를 나타냅니다. 쓰기 전송의 대기 시간과 대역폭은 지정된 데이터 전송 크기와 매우 유사합니
다.
둘째, 지속적인 MRAM 대역폭( 읽기 및 쓰기 모두)이 데이터 전송 크기에
( )=+× (삼) 따라 증가한다는 것을 관찰했습니다. 우리가 측정한 최대 지속 MRAM 대역폭
방정식 3을 사용하여 MRAM 액세스 대기 시간을 모델링한 후 방정식 3.2.1을 사용하여
은 읽기의 경우 628.23MB/s 이고 쓰기 전송의 경우 633.22MB/s입니다(둘
MRAM 대역폭(B/s)을 분석적으로 모델링할 수 있습니다. 여기서 는 DPU 주파수입니다. 다 2,048바이트 전송의 경우).
이러한 관찰을 바탕으로 MRAM 대역폭 활용을 최대화하기 위한 일반적인 권
장 사항 은 액세스된 모든 데이터가 사용될 때 큰 DMA 전송 크기를 사용하는
× 것입니다. 방정식 3.2.1 에 따르면 이론적 최대 MRAM 대역폭은 350MHz의
/)= =
( DPU 주파수에서 700MB/s입니다(고정 전송 비용이 없다고 가정, 즉 = 0). 우
리의 측정값은 이 이론적 최대값의 12% 이내입니다 .
×
= (4)
+×
100
512 셋째, MRAM 대기 시간이 8바이트와 128바이트 전송 사이에서 천천히 변하는 것을 관찰했
습니다 . 방정식 3에 따르면 128바이트에 대한 읽기 지연 시간은 141사이클이고 8바이트에 대
10 128
한 읽기 지연 시간은 81사이클입니다. 즉, 전송 크기는 16배 증가하는 반면 대기 시간은 74%만
간(
시
연
지
기
)주
폭(
역
대
초
/B)M
46
23
4201
840년
2
1 32
8
61
46
23
652
4201
840년
2
데이터 전송 크기(바이트)
9
Machine Translated by Google
MRAM 대역폭이 포화되기 시작합니다. MRAM 대역폭이 큰 데이터 전송 크기 섹션 2.2에서 파생된 MB/s입니다. 2,556개 DPU에 대해 측정된 총 지속 대역폭
에서 포화되는 이유는 대역폭과 대기 시간의 역관계와 관련이 있습니다 (식 은 1.6TB/s입니다. 640‑DPU 시스템에서 지속 MRAM 대역폭은 DPU당
3.2.1). 데이터 전송 크기가 증가함에 따라 전송 지연의 고정 비용( )은 가변 비 470.50MB/s(이론적 최대값 = 534MB/s)로 측정되어 640 DPU에 대해 총 지
용( × ) 에 비해 무시할 수 있게 됩니다 . 예를 들어 읽기 전송(77사이클)의 경 속 MRAM 대역폭은 301GB/s가 됩니다.
우 각각 512바이트, 1,024바이트, 2,048바이트 읽기 전송에 대한 MRAM 대
기 시간의 23%, 13%, 7%에 불과합니다 . 결과적으로 MRAM 읽기 대역폭은 둘째, COPY‑DMA의 MRAM 대역폭은 두 개의 태스크릿으로 포화됩니다. DMA 엔진은 한
512바이트 전송 에 비해 1,024바이트 및 2,048바이트 전송의 경우 13%와 번에 하나의 데이터 전송만 수행할 수 있지만 [231] COPY‑DMA에서 두 개 이상의 태스크릿을
17%만 증가합니다 . 이러한 관찰에 따르면, 액세스된 모든 데이터가 사용될 사용하면 이전 DMA 요청이 완료될 때 DMA 엔진을 사용 중으로 유지하기 위해 항상 DMA 요청
때 권장되는 데이터 전송 크기는 프로그램의 WRAM 사용량에 따라 달라집니 이 대기열 에 추가되는 것을 보장합니다. 가장 높은 MRAM 대역폭을 달성합니다.
다. WRAM의 크기는 64KB로 제한되어 있기 때문입니다. 예를 들어, DPU 프
로그램의 각 태스크릿이 MRAM에 저장된 3개의 서로 다른 어레이의 데이터에
대해 3개의 임시 WRAM 버퍼를 할당해야 하는 경우 2,048바이트 데이터 전송 셋째, COPY 및 ADD에 대한 MRAM 대역폭은 각각 4개 및 6개 태스크릿으
을 사용하려면 각 WRAM 버퍼의 크기가 2,048바이트가 되어야 합니다. 이는 로 포화됩니다. 즉, 파이프라인을 완전히 활용하는 데 필요한 11개 태스크릿보
태스크릿 수를 10개로 제한합니다. 이는 < 11.3 ×2,048 이므로 11개 태스크 다 빠릅니다. 이러한 관찰은 이러한 마이크로벤치마크가 MRAM(명령 파이프라
릿 중 권장되는 최소 64개 (섹션 2.3.2 및 3.1.2)보다 적습니다 . 이 경우 인이 아닌 )에 대한 액세스로 제한된다는 것을 나타냅니다. COPY 벤치마크가 4
1,024바이트 데이터를 사용합니다. 측정에 따르면(그림 6 참조 ) 2,048바이 개 미만의 태스크릿을 사용하는 경우 파이프라인 명령(예: WRAM 로드/저장)의
트 전송의 대역폭은 1,024바이트 전송의 대역폭보다 4%만 높기 때문에 전송 대기 시간은 MRAM 액세스(예: MRAM‑ WRAM 및 WRAM‑MRAM DMA 전
이 선호됩니다 . 송) 의 대기 시간보다 깁니다 . 4개의 태스크릿 이후에는 이러한 추세가 바뀌고
MRAM 액세스 대기 시간이 길어집니다.
700 스트림 (MRAM, INT64, 1DPU) • 스트리밍 벤치마크(COPY‑DMA, COPY, ADD)를 위한 DRAM 처리 장치의 주 메
600 모리(MRAM) 뱅크에 대한 액세스 지연 시간이 파이프라인 지연 시간 (즉, 산술 연산
624.02
500 추가하다
및 WRAM 액세스 의 실행 지연 시간 )보다 큰 경우 성능은 DPU(DRAM 처리 장치)
400 복사
MAR지
형
속
M
COPY‑DMA
300
규모
200 삼인조 61.59
100 42.01
0
1 2 4 5 6 7 8 9 10 11 12 13 14 15 16
삼
이는 메모리 바인딩된 워크로드입니다. • 스트리밍 벤치마
#태스크렛
크(SCALE, TRIAD)에 대한 파이프라인 대기 시간이 MRAM 액세스 대기 시간보다
그림 7: 스트리밍 액세스 패턴을 위한 지속적인 MRAM 대역폭.
큰 경우 DPU 성능은 11개의 태스크릿에서 포화됩니다. 이는 컴퓨팅 바인딩된 워크
로드입니다.
우리는 네 가지 주요 관찰을 합니다.
첫째, COPY‑DMA의 지속 MRAM 대역폭은 624.02MB /s로 이론상 최대 대
역폭(700MB/s)에 가깝습니다.
10
Machine Translated by Google
3.2.3 지속적인 스트라이드 및 랜덤 액세스 대역폭. 우리는 평가한다 ‑ 더 높은 지속 MRAM 대역폭을 달성합니다. 이는 스트라이드가 클수록 마이크
스트라이드 및 랜덤 액세스의 지속적인 MRAM 대역폭을 사용했습니다. 로벤치마크에서 실제로 사용되는 전송된 데이터의 비율이 작아지기 때문입니다
패턴. (즉, 효과적으로 사용되는 MRAM 대역폭이 작아짐). 16의 스트라이드와 대략
MRAM의 스트라이드 액세스 대역폭을 평가하기 위해 우리는 스트라이드 적인 DMA를 사용하는 마이크로벤치마크는 가져온 데이터의 16분의 1만 사용
방식으로 MRAM에 액세스하는 새로운 마이크로벤치마크를 작성하는 실험을 합니다. 결과적으로, 우리는 대략적인 DMA에 대해 지속 MRAM 대역폭을
고안했습니다. 마이크로벤치마크는 일정한 스트라이드(즉, 연속 메모리 액세 38.95MB/s로 측정했습니다. 이는 최대 지속 MRAM 대역폭인 622.36MB/s
스 사이의 일정한 거리)로 배열에 액세스하여 동일한 스트라이드를 사용하여 의 16분의 1에 불과하고 미세 DMA의 지속 MRAM 대역폭보다 낮습니다. 세
배열의 요소를 다른 배열로 복사합니다. 우리는 거친 DMA와 미세한 DMA라 분화된 DMA (72.58MB/s).
는 두 가지 버전의 마이크로벤치마크를 구현하여 거친 MRAM 액세스와 미세
한 MRAM 액세스를 모두 테스트합니다. 성긴 DMA 에서 마이크로벤치마크는
DMA를 통해 MRAM에 있는 어레이의 큰 연속 세그먼트(1024B)에 액세스하 넷째, 랜덤 액세스를 위한 최대 지속 MRAM 대역폭은 72.58MB/s입니다
고, 스트라이드 액세스는 WRAM에서 발생합니다. 대략적인 DMA 접근 방식 (그림 8b에 표시된 대로 16개의 태스크릿 포함). 이 대역폭 값은 스트라이드
은 최신 CPU 하드웨어가 수행하는 작업(즉, 주 메모리에서 큰 캐시 라인을 읽 액세스에 대한 세분화된 DMA 접근 방식의 최대 MRAM 대역폭(예: 그림 8b
고 캐시에서 이를 통과하는 작업)과 유사합니다. 에 표시된 대로 16개의 태스크릿 및 스트라이드 4,096의 72.58MB/s)과 매
우 유사합니다 . 왜냐하면 마이크로벤치마크는 세분화된 DMA를 사용하기 때
문입니다. 무작위 접근을 위해.
세분화된 DMA에서 마이크로벤치마크는 MRAM의 마이크로벤치마크에서 사 이러한 관찰을 바탕으로 프로그래머 는 스트라이드가 작은 워크로드에는 대략적인 DMA 접
용할 데이터만 DMA를 통해 전송합니다. 근 방식을 사용하고 스트라이드가 크거나 임의 액세스 패턴이 있는 작업에는 세분화된 DMA 접
세분화된 DMA 접근 방식을 사용하면 DMA 요청이 늘어나지만 MRAM과 WRAM 간에 전 근 방식을 사용하는 것이 좋습니다 .
송되는 총 데이터 양은 줄어듭니다.
MRAM의 무작위 액세스 대역폭을 평가하기 위해 우리는 배열의 무작위 위
치에서 읽기‑수정‑쓰기 작업을 수행하는 GUPS 벤치마크 [239] 를 구현합니 프로그래밍 권장 사항 4
11
Machine Translated by Google
700 90
(a) 거친 스트라이드 (MRAM, 1 DPU) (b) 세분화된 스트라이드 및 랜덤 (MRAM, 1 DPU)
622.36 80
600 72.58
70
500
60
400 대략적인 DMA ‑ 1개의 태스크릿 50
대략적인 DMA ‑ 2개의 태스크릿
초(
대략적인 DMA ‑ 4개의 태스크릿 40
초(
/B)M
300
/B)M
MAR대
인
적
속
지
폭
역
M
MAR대
인
적
속
지
폭
역
M
1
2
2
8
8
4
4
61
61
46
46
23
23
821
821
652
652
215
215
4201
4201
840년
2
840년
2
6904
6904
SPUG
)SPUG(
의
위
작
무
보폭 보폭
그림 8: (a) 성긴 스트라이드 및 (b) 세분화된 스트라이드 및 랜덤 액세스 패턴에 대한 지속적인 MRAM 대역폭.
그것도 꾸준하게. 그러나 실행되는 명령의 대기 시간은 다음과 같습니다. 즉, 가져온 32개의 32비트 요소마다 1번 곱셈) 연산 강도입니다. 이 결과는 DPU가 기본적으로
파이프라인은 다양한 산술 연산 수에 따라 달라집니다. 워크 로드용으로 설계된 컴퓨팅 기반 프로세서임을 보여줍니다.
우리의 실험은 산술 처리량이 어떻게 달라지는지 보여주는 것을 목표로 합니다.
운영 강도가 높습니다. 우리는 운영 강도를 다음과 같이 정의합니다. 데이터 재사용이 적습니다.
액세스된 바이트당 수행된 산술 연산 수
주요 관찰 6
MRAM(OP/B). 섹션 3.1.2에서 설명했듯이 UPMEM PIM 아키텍처의 산술
연산은 여러 명령어를 사용하여
DRAM 처리의 산술 처리량
실행하다. 실험은 지붕선 모델 [215] 에서 영감을 얻었습니다 . 장치(DPU)가 낮거나 매우 낮은 작동 상태에서 포화됩니다.
성능을 보여주는 성능 분석 방법론
강도 (예: 32비트 요소당 1개의 정수 추가). 따라서,
산술 강도(실행된 산술 명령)의 함수인 프로그램 (초당 실행되는 산술 명령)
DPU는 기본적으로 컴퓨팅 바인딩된 프로세스입니다.
미안.
메모리에서 액세스되는 바이트당)과 비교하여 프로그램의
대부분의 실제 워크로드는 UPMEM PIM 아키텍처에서 컴퓨팅에 바인딩될 것으로
머신의 최고 성능(컴퓨팅에 의해 결정됨) 예상됩니다 .
처리량 및 L3 및 DRAM 메모리 대역폭).
그림 9는 대표적인 데이터 유형 및 작업에 대한 산술 처리량 대 작업 강도
의 결과를 보여줍니다. (a) 셋째, 데이터 유형에 대한 처리량 포화점이 더 낮습니다.
32비트 정수 덧셈, (b) 32비트 정수 곱셈, (c) 32비트 작업당 더 많은 지침이 필요한 작업. 을 위한
부동 소수점 덧셈, (d) 32비트 부동 소수점 곱셈. 예를 들어 32비트 곱셈의 처리량(그림 9b)은 다음과 같습니다.
기타 데이터 유형에 대한 결과(64비트 정수 및 64비트 부동 소수점) 최대 32개의 mul_step 명령어(섹션 3.1.2)가 필요하며 포화 상태입니다.
~에 1 OP/B, 32비트 추가에 대한 처리량(그림 9a),
산술 연산(뺄셈과 나눗셈)도 비슷합니다. 32
트렌드. 작업 강도를 매우 낮은 값 (작업/바이트, 즉 512 32비트당 하나의 작 기본적으로 지원됩니다(단일 추가 명령 이 필요함 ).
1 4 로 포화 1
업) 에서 변경합니다.
2048년
OP/B. 부동 소수점 연산은 다음보다 먼저 포화됩니다.
가져온 요소)를 높은 값(바이트당 8개 작업, 즉 가져온 32비트 요소마다 32 정수 연산(수십에서 수백 개의 명령어가 필요하기 때문): 32비트 부동 소수점
개 작업)으로 변환하고 결과를 측정합니다. 추가(그림 9c) 및
1 그리고 1
다양한 태스크릿 수(1~16)에 대한 처리량입니다. 곱셈(그림 9d)은 각각 OP/B에서 포화됩니다. 64 128
우리는 그림 9에서 네 가지 주요 관찰을 수행합니다. 넷째, 계산 경계 영역(즉, 포화 지점 이후)에서 산술 처리량이 11로 포화됨
첫째, 그림 9의 네 가지 플롯은 (1) 메모리 바인딩을 보여줍니다. 을 관찰합니다.
지역(연산 처리량이 운영에 따라 증가하는 곳) 태스크릿은 태스크릿을 완전히 활용하는 데 필요한 태스크릿의 수입니다.
강도) 및 (2) 계산 경계 영역(여기서 산술 관로. 반면에, 메모리 바인딩된 영역에서는 메모리 대역폭이 부족하기 때문에
처리량은 각 태스크릿 수에 대해 최대값에서 일정합니다. 처리량이 더 적은 태스크릿으로 포화됩니다.
주어진 수의 태스크릿에 대해 파이프라인의 명령어 실행 지연 시간이 MRAM 파이프라인이 완전히 활용되기 전에 한도에 도달합니다. 예를 들어,
1
을 초과할 때 메모리 바인딩 영역과 계산 바인딩 영역 사이의 전환이 발생합니 매우 낮은 작동 강도 값 (≤ 64 OP/B), 처리량
다. 32비트 정수 덧셈은 단 두 개의 태스크릿으로 포화됩니다.
지연 시간. 우리는 메모리 바인딩 영역과 컴퓨팅 바인딩 영역 사이의 COPY‑DMA가 있는 섹션 3.2.2의 관찰과 일치합니다.
12
Machine Translated by Google
1 4.00 5 5 5 7
1 4 4 4 4 5 89 89 89 89
3 3 3 3 4 6 6 6 6
1012345623456789
2.00 2.00 2 2 2 32 75432 75432 75432 75432
11
2
101234566789 5 4 3 2
10123456456789 3 2
량(
리
처
술
산
일
케
스
그
로
량(
리
처
술
산
일
케
스
그
로
,SPO)M
,SPO)M
1.00 1.00 1 1 1 1 1 1 1
1012345623456789 1
101234563456789 2
1 1 1
1
0.50 1012345623456789 1 0.50 1
1012345623456789 1
0.13 1 1012345623456789
0.13
1012345623456789 1
0.06 0.06
0.03 0.03
1 2 4 8 1 2 4 8
1/4096 1/2048 1/1024 1/512 1/256 1/128 1/64 1/32 1/16 1/8 1/4 1/2 1 2 4 8 1/4096 1/2048 1/1024 1/512 1/256 1/128 1/64 1/32 1/16 1/8 1/4 1/2 1 2 4 8
운영 강도(OP/B) 운영 강도(OP/B)
64.00 64.00
32.00 (c) FLOAT, ADD (1 DPU) 32.00 (d) FLOAT, MUL (1 DPU)
16.00 16.00
8.00 8.00
1123456 1123456 1123456
1123456 10 1123456 10 1123456 10 1123456 10 1123456 10
4.00 10
11123456 11123456
1089 1089
4.00
1089 1089
789 789 789 789 789
789
6 67 6 6 6 6 6 6 67 67
2.00 101234566789
5 5 7 5 5 5 5 5 5 5 2.00
5 4 4 5 4 4 4 4 4 4 4 1123456 10 1123456 10 1123456 10
1123456 1123456 1123456 1123456
4 3 3 3 3 3 3 3
3 3 4 10 89 10 89 10 89 10 89
량(
리
처
술
산
일
케
스
그
로
,SPO)M
,SPO)M
2 2 2 2 2 2 2 6 6 6 1123456 1089 61123456
7 1089 61123456
7 1089 6 76 7 67 67 67
2 2 32 5 5 5 5 5 5 5 5 5 5 5
2 4 4 4 4 4 4 4 4 4 4
10123456456789 3 2 4
0.50 0.50 3 3 3 3 3 3 3 3 3 3 3
1 1 1 1 1 1
10123456456789
101234563456789 2
1 1 1 1 3
1 2 2 2 2 2 2 2 2 2 2 2
1 10123456789 6 5 4 3 2
0.25 1 0.25 2
101234563456789 2
1 1 1 1 1 1 1 1 1 1 1
1012345623456789 1
1 1
0.13 0.13
101234563456789 2 1
1012345623456789 1
0.06 0.06
1
0.03 0.03
1 2 4 8 1 2 4 8
1/4096 1/2048 1/1024 1/512 1/256 1/128 1/64 1/32 1/16 1/8 1/4 1/2 1 2 4 8 1/4096 1/2048 1/1024 1/512 1/256 1/128 1/64 1/32 1/16 1/8 1/4 1/2 1 2 4 8
운영 강도(OP/B) 운영 강도(OP/B)
그림 9: (a) 32비트 정수 덧셈, (b) 32비트 정수 곱셈, (c) 32비트 부동 소수점 덧셈 및 (d) 32비트 부동 소수점 곱셈에 대한 산술 처리량 대 연산 집약도. 각 점 안의 숫자
는 태스크릿 수를 나타냅니다. x축과 y축은 모두 로그 스케일입니다.
부록(섹션 9.1)에서는 이러한 결과에 대한 다른 관점을 제시하며, 다양한 작업 뱅크(예: CPU‑DPU) 또는 MRAM 뱅크에서 호스트 메인 메모리(예: DPU‑CPU)
강도에서 태스크릿 수에 따라 산술 처리량이 어떻게 달라지는지 보여줍니다. 로 전송됩니다. 병렬 전송에는 동일한 병렬 전송에 관련된 모든 MRAM 뱅크에 대
한 전송 크기가 동일해야 한다는 제한( UPMEM SDK 2021.1.1 [213]) 이 있습
니다.
3.4 CPU‑DPU 통신 병렬 CPU‑DPU 전송 (dpu_broadcast_to) 의 특별한 경우는 동일한 버퍼를
메인 메모리에서 모든 MRAM 뱅크로 브로드캐스트합니다.
PIM 지원 메모리의 호스트 CPU와 DPU는 메모리 버스를 통해 통신합니다. 호스
트 CPU는 그림 1과 같이 (1) 메인 메모리에서 MRAM(즉, CPU‑ DPU)으로 입
이 섹션에서는 호스트 메인 메모리와 MRAM 뱅크 간의 모든 유형
의 CPU‑DPU 및 DPU‑CPU 전송의 지속 대역폭을 측정합니다 . 우리
력 데이터를 전송하고, (2) MRAM에서 메인 메모리 (즉, DPU‑CPU)로 결과를
다시 전송하기 위해 MRAM 뱅크에 액세스할 수 있습니다. 보여줍니다. 이러한 데
는 두 가지 다른 실험을 수행합니다. 첫 번째 실험은 단일 MRAM 뱅
이터 전송을 각각 CPU‑DPU 및 DPU‑CPU 전송이라고 합니다 . 섹션 2.1 에서
크에서 다양한 크기의 버퍼를 전송합니다. 따라서 우리는 하나의
MRAM 뱅크에 대해 서로 다른 크기의 CPU‑DPU 및 DPU‑CPU 전
설명한 대로 이러한 데이터 전송은 직렬(즉, 여러 MRAM 뱅크에 걸쳐 순차적으로
송의 지속적인 대역폭을 얻습니다.
수행됨) 또는 병렬(즉, 여러 MRAM 뱅크에서 동시에 수행됨)일 수 있습니다.
이 실험에서는 dpu_copy_to 및 dpu_copy_from을 사용 하고 전송 크기를
UPMEM SDK [213] 는 직렬 및 병렬 전송 기능을 제공합니다. 직렬 전송의 경
8바이트에서 32MB까지 변경합니다. 두 번째 실험에서는 MRAM 뱅크당 32MB
우 dpu_copy_to 는 호스트 메인 메모리의 버퍼를 특정 MRAM 뱅크(즉, CPU‑
크기의 버퍼를 동일한 랭크 내의 1~64개 MRAM 뱅크 세트 간에 전송합니다. 브
DPU)로 복사하고, dpu_copy_from은 한 MRAM 뱅크의 버퍼를 호스트 메
로드캐스트 CPU‑DPU 전송 ( dpu_broadcast_to) 을 포함하여 직렬 및 병렬
인 메모리 (즉, DPU‑CPU)로 복사합니다. 병렬 전송의 경우 프로그램은 두 가지
전송(dpu_push_xfer)을 모두 실험합니다 . 따라서 우리는 1에서 64 사이의 동
기능을 사용해야 합니다 . 먼저, dpu_prepare_xfer는 특정 MRAM 뱅크에 서
일한 순위에 있는 여러 MRAM 뱅크에 대해 직렬/병렬/브로드캐스트 CPU‑DPU
로 다른 버퍼를 할당하여 병렬 전송을 준비합니다 . 둘째, dpu_push_xfer는 실
전송 및 직렬/병렬 DPU‑CPU 전송의 지속적인 대역폭을 얻습니다 .
제 전송을 시작하여 병렬로 실행합니다 . dpu_push_xfer 의 한 인수는 병렬 데
이터 전송이 호스트 주 메모리에서 MRAM으로 발생하는지 여부를 정의합니다.
13
Machine Translated by Google
폭
역
대
0.0010 0.50 0.27
모
규
그
로
,s(
/B)G
모
규
그
로
,s(
/B)G
‑UP지
형
속
D
C
0.25
‑UP지
형
속
D
C
0.0001 0.13 0.12
8
K2
23
K8
0.06
821
2
215
K23
8
4
M23
K821
61
46
K215
23
(a) DPU 1개 (b) 1등급
데이터 전송 크기(바이트) #DPU
그림 10: (a) CPU‑DPU(호스트 메인 메모리에서 하나의 MRAM 뱅크로) 및 DPU‑CPU(하나의 MRAM 뱅크에서 호스트 메인 메모리로)의 지속 대역폭(로그 스케일 x 및 y축)은 하나의 서로 다른 크기
로 전송됩니다. DPU 및 (b) 직렬/병렬/브로드캐스트 CPU‑DPU(여러 MRAM 뱅크에 대한 호스트 주 메모리) 및 직렬/병렬 DPU‑CPU(호스트 주 메모리에 대한 여러 MRAM 뱅크)는 1‑64 세트에 대해
32MB를 전송합니다. 한 등급 내의 DPU.
우리는 7가지 주요 관찰 사항을 제시 하나의 DPU보다 높습니다. DPU‑CPU 전송의 경우 DPU 64개에서
합니다.12 첫째, 단일 DPU(그림 10a)에 대한 CPU‑DPU 및 DPU 1개로의 지속적인 대역폭 증가는 38.76배입니다.
DPU‑CPU 전송의 지속 대역폭은 8바이트에서 512바이트 사이의
전송 크기에서 유사합니다. 전송 크기가 512바이트보다 큰 경우 주요 관찰 8
CPU‑DPU 전송의 지속 대역폭은 DPU‑CPU 전송의 대역폭보다 높
습니다 . 우리가 평가한 최대 전송 크기(32MB )의 경우 CPU‑DPU 호스트 메인 메모리와 DRAM 처리 장치의 메인 메모리(MRAM) 뱅크 간 병렬 CPU‑
및 DPU‑CPU 대역폭은 각각 0.33GB/s 및 0.12GB /s입니다. DPU 및 DPU‑CPU 전송의 지속 대역폭은 랭크 내의 DRAM 처리 장치 수에 따라
증가합니다.
둘째, 단일 DPU(그림 10a)에 대한 CPU‑DPU 및 DPU‑CPU 전송의 지
속 대역폭은 8 바이트에서 2KB 사이에서 선형적으로 증가하며 더 큰 전송 크
기에서는 포화되는 경향이 있습니다.
주요 관찰 7
다섯째, 직렬 및 직렬 전송 모두에서 CPU‑DPU와 DPU‑CPU 전송의 지속 대역폭
사이에 큰 차이가 있음을 관찰했습니다.
호스트 메인 메모리와 DRAM 처리 장치의 메인 메모리(MRAM) 뱅크 간의 CPU‑
DPU 및 DPU‑CPU 전송이 클수록 지속 대역폭이 높아집니다. 병렬 전송. 이러한 차이점은 UPMEM SDK 2021.1.1 [231]에서 CPU‑DPU 및 DPU‑
CPU 전송의 서로 다른 구현으로 인해 발생합니다 . CPU‑DPU 전송은 비동기식 x86
AVX 쓰기 명령어 [ 240] 를 사용하는 반면 , DPU‑CPU 전송은 동기식 AVX 읽기 명령
어 [240] 를 사용합니다. 결과적으로 DPU‑CPU 전송은 CPU‑DPU 전송만큼 많은 메
모리 액세스를 유지할 수 없으며, 이로 인해 CPU‑DPU 전송보다 직렬 및 병렬 DPU‑
셋째, 한 등급(그림 10b)의 경우 직렬 CPU‑DPU 및 DPU‑CPU 전송 의 지속 대역폭 CPU 전송의 유지 대역폭이 낮아집니다.
은 서로 다른 등급에 대해 균일하게 유지됩니다.
DPU 수. 이러한 전송은 순차적으로 실행되므로 지연 시간은 DPU 수(즉, 전송된 총 데이터 양)
에 비례하여 증가합니다. 결과적으로 지속 대역폭은 증가하지 않습니다.
여섯째, 브로드캐스트 CPU‑DPU 전송의 지속 대역폭은 최대 16.88GB/s에 이릅니
다. 이 최대 유지 대역폭이 병렬 CPU‑DPU 전송보다 훨씬 높은 이유 중 하나는 호스트
넷째, 병렬 전송의 지속 대역폭은 DPU 수에 따라 증가하여 64 DPU에서 가장 높은 CPU 의 캐시 계층 구조에서 더 나은 집약성입니다 [231]. 브로드캐스트 전송은 동일한
지속 대역폭 값에 도달합니다. 최대 지속 CPU‑DPU 버퍼를 모든 MRAM 뱅크에 복사하여 CPU 캐시 계층 구조의 시간적 지역성을 증가시키
는 반면, 병렬 CPU‑DPU 전송은 서로 다른 버퍼를 서로 다른 MRAM 뱅크에 복사합니
우리가 측정한 대역폭은 6.68GB/s이고, 최대 지속 DPU‑CPU 대역폭은 4.74GB/s입니 다. 이러한 버퍼는 CPU 캐시 계층 구조에서 누락될 가능성이 높으며 MRAM 뱅크에 복
다. 그러나 DPU 개수에 따른 지속 대역폭의 증가는 준선 형적이라는 것을 알 수 있습니 사되기 전에 메인 메모리에서 CPU 캐시로 가져와야 합니다 .
다. 64개 DPU에 대한 지속 CPU‑DPU 대역폭은 20.13배입니다.
14
Machine Translated by Google
4 L3
학사 HST
2 TS 북서쪽
유니
능(
성
)SPOG
1 SpMV TRNS
4 PRIM 벤치마크 실제 PIM 아키텍처를 위 0.5 SEL
빨간색
BFS
주사
한 최초의 벤치마크 제품군인 오픈 소스 PrIM (Processing‑In‑Memory) 벤치 0.25 음주
마크 제품군에 포함된 벤치마크를 제시합니다 . PrIM 벤치마크는 공개적으로 무료 0.125
0.01 0.1 1 10
로 이용 가능합니다[214].
산술 강도(OP/B)
각 벤치마크에 대해 이 섹션에는 여러 DPU가 있는 UPMEM 기반 PIM 시스 그림 11: Intel Xeon E3‑1225 v6 CPU의 14개 PrIM 워크로드 CPU 버전에 대한 루프라
템에서의 구현 에 대한 설명이 포함되어 있습니다 . 표 2는 벤치마크를 요약한 인 모델.
것입니다. 벤치마크가 속한 애플리케이션 도메인별로 벤치마크를 그룹화합니
다. 각 애플리케이션 도메인 내에서 (1) PIM 구현의 점진적 복잡성(예: GEMV 그림 11에서 PrIM 워크로드의 모든 CPU 버전이 루프라인 모델의 메모리 경계 영역(즉,
보다 먼저 VA를 설명함) 및 (2) 알파벳 순서를 기준으로 벤치마크를 정렬합니 DRAM 대역폭 선과 최대 컴퓨팅 성능 사이 교차점의 왼쪽에 있는 음영 영역)에 있음을 알 수
다 . 우리는 표 2의 벤치마크 순서를 이 논문의 나머지 부분 전체에서 일관되게 있습니다. 맨스 라인). 따라서 이러한 워크로드는 모두 메모리에 의해 제한됩니다. 우리는
사용합니다. PrIM 워크로드의 14개 CPU 버전이 모두 잠재적으로 PIM에 적합하다는 결론을 내렸습니다
[184]. 다음에 는 각 PrIM 벤치마크 와 해당 PIM 구현에 대해 간략하게 설명합니다.
각 벤치마크에 대해 표에는 (1) 이 문서의 나머지 부분에서 사용하는 벤치마크
의 짧은 이름, (2) 벤치마크의 메모리 액세스 패턴(순차, 스트라이드, 무작위),
(3) 계산 패턴(작업 및 (4) PIM 구현의 통신/동기화 유형(DPU 내, DPU 간).
DPU 내 통신의 경우 표에서는 벤치마크에서 사용하는 장벽, 핸드셰이크, 뮤텍
스 등의 동기화 기본 요소를 지정합니다(섹션 2.3.1). 4.1 벡터 추가
벡터 덧셈(VA) [243] 은 두 개의 벡터 를 입력으로 사용하여 요소별 덧셈을 수행합니다.
13동일한 벤치마크의 일부로 RED의 세 가지 버전을 제공합니다. 사용자는 컴파일러 플래 입력하고 이들 사이의 곱셈을 수행하여 결과적으로 새로운 × 1 벡터를 생성합니다.
그를 통해 테스트하려는 버전을 선택할 수 있습니다.
15
Machine Translated by Google
표 2: PrIM 벤치마크.
이진 검색 학사 예 예 비교하다
데이터 분석
시계열 분석 TS 예 추가, 하위, 다중, div int32_t
그래프 처리 너비 우선 검색 BFS 예 예 비트 논리 uint64_t 추가, mul, 장벽, 뮤텍스 예
신경망 다층 퍼셉트론 MLP 예 비교 int32_t
생물정보학 니들만‑분쉬 북서쪽 예 예 추가, 하위, 비교 int32_t 추가 장벽 예
GEMV의 PIM 구현은 매트릭스를 전체로 분할합니다. SEL의 PIM 구현은 전체 스토리지에 걸쳐 어레이를 분할합니다.
시스템에서 사용 가능한 DPU 수를 지정하여 고정된 수의 DPU를 할당합니다. 시스템에서 사용할 수 있는 DPU. DPU 좌표 내부의 태스크릿
입력 벡터가 복제되는 동안 각 DPU에 연속 행 악수 사용(섹션 2.3.1) 먼저, 각 태스크릿은 블록을 이동합니다.
모든 DPU에 걸쳐. 호스트 CPU는 각 연속 행 세트를 할당합니다. WRAM에 요소를 추가합니다. 둘째, 각 태스크릿은 요소를 필터링하고
선형 할당을 사용하여 DPU에 할당(즉, DPU에 할당된 행 집합) 필터링된 요소의 수를 계산합니다. 셋째, 각 tasklet이 통과합니다.
). 각 DPU 내에서 태스크릿은 세트의 컴퓨팅을 담당합니다. 본질적으로 접두사 합계를 수행하는 핸드셰이크 기반 통신을 사용하여 필터링된 요소 수
해당 DPU에 할당된 행 수입니다. 우리는 연속된 부분 집합을 할당합니다. 를 다음 태스크릿으로 보냅니다.
각 tasklet에 DPU에 할당된 행 집합의 행(예: MRAM에서 데이터를 저장할 위치를 결정하는 작업 [249‑251]
tasklet에 할당된 행의 하위 집합). 먼저, 각 tasklet은 다음을 읽습니다. 필터링된 요소 그런 다음 태스크릿은 필터링된 요소를 다음 위치로 이동합니다.
입력 행렬의 한 행과 두 행의 요소 블록 MRAM. 넷째, 호스트 CPU는 최종 병합을 수행합니다.
벡터를 생성하고 이러한 요소를 WRAM에 배치합니다. 둘째, 각각 직렬 DPU‑CPU 전송을 통해 각 DPU에서 반환된 필터링된 배열,
tasklet은 해당 요소의 곱셈과 누적을 수행합니다. 병렬 DPU‑CPU 전송은 가능하지 않습니다.
행의 끝에 도달할 때까지 첫 번째 단계로 점프합니다. 제삼, DPU는 필터링된 요소의 수를 다르게 반환할 수 있습니다.
각 태스크릿은 MRAM에 곱셈의 합계를 저장합니다. 네번째,
각 태스크릿은 이 세 단계를 가능한 횟수만큼 반복합니다.
하위 집합의 행. 다섯째, 각 DPU는 연속된 덩어리를 생성합니다. 4.5 독특함
출력 벡터의 요소. CPU는 출력 벡터를 검색합니다. Unique(UNI) [248] 는 각 그룹에 대해
전체 출력 벡터를 청크하고 빌드합니다. 동일한 값을 가진 연속 배열 요소는 다음을 제외한 모든 요소를 제거합니다.
이 요소 중 첫 번째.
4.3 희소 행렬‑벡터 곱셈 UNI의 PIM 구현은 유사한 접근 방식을 따릅니다.
희소 행렬‑벡터 곱셈(SpMV) [244] 은 희소 행렬에 조밀한 벡터를 곱하는 희소 선형 대수 SEL에. 주요 차이점은 UNI에 필요한 보다 복잡한 핸드셰이크 기반 통신에 있습니다. 고
루틴입니다 . 유번호 외에도
SpMV의 PIM 구현은 Compressed Sparse를 사용합니다. 요소의 경우 각 태스크릿은 마지막 고유 요소의 값을 전달해야 합니다.
행렬을 표현하기 위한 행(CSR) 저장 형식 [245–247] . 첫 번째, 다음 태스크릿으로 이동하세요. 이런 식으로 다음 tasklet은 다음 여부를 확인할 수 있습니다.
호스트 CPU는 매트릭스 행을 DPU에 균등하게 분배합니다. 첫 번째 요소는 전체 배열의 맥락에서 고유하거나 그렇지 않습니다.
다음과 같이 선형 할당(즉, DPU 에 할당된 행 집합)을 사용합니다.
GEMV(섹션 4.2). 각 DPU 내에서 행렬의 행은 다음과 같습니다.
tasklet 전체에 균등하게 분배됩니다(즉, 다음에 할당된 행의 하위 집합). 4.6 이진 검색
GEMV와 동일한
, 태스크릿). 입력 벡터는 다음과 같이 복제됩니다. 이진 검색(BS) [252] 은 정렬된 배열을 입력으로 사용하여 다음을 찾습니다.
DPU. 각 tasklet은 행의 하위 집합을 입력과 곱합니다. 정렬된 배열 내 일부 쿼리 값의 위치.
벡터를 생성하고 출력 벡터의 연속적인 청크를 생성합니다. ~에 이진 검색의 PIM 구현은 정렬된 결과를 배포합니다.
DPU의 실행이 끝나면 CPU는 DPU 전체에 배열합니다. 각 DPU 내에서 태스크릿은 다음을 담당합니다.
MRAM 뱅크에서 호스트 메인으로 출력 벡터 청크 할당된 쿼리 값의 하위 파티션입니다. 먼저, 각 tasklet은 다음을 확인합니다.
전체 출력 벡터를 구성하기 위해 메모리를 사용합니다. 찾을 할당된 쿼리 값 세트를
MRAM 뱅크에서 WRAM으로 이동하고 for 루프를 사용하여 반복합니다.
4.4 선택
둘째, 각 태스크릿은 이진 검색 알고리즘을 수행하여 이동합니다.
Select (SEL) [248] 은 입력 배열이 주어지면 다음을 수행하는 데이터베이스 연산자입니다. 현재 값에 따라 왼쪽에서 오른쪽으로 또는 그 반대로
주어진 입력 조건자에 따라 배열 요소를 필터링합니다. 우리의 찾다. 셋째, 태스크릿은 하나의 쿼리를 찾으면 알고리즘을 중지합니다.
SEL 버전은 조건자를 만족하는 요소를 제거합니다. 값. 넷째, DPU 실행이 끝나면 호스트는
그렇지 않은 요소를 유지합니다. CPU는 발견된 쿼리 값의 위치를 검색합니다.
16
Machine Translated by Google
4.10 니들만‑분쉬
Needleman‑Wunsch(NW) [259] 는 전체 서열 정렬을 수행하는 생물정보
학 알고리즘입니다 . 즉, 두 생물학적 서열을 전체 길이에 걸쳐 비교하여 이들
서열의 최적 정렬을 찾습니다 . NW는 세 단계로 구성된 동적 프로그래밍 알고
리즘입니다 . (i) 2D 점수 행렬을 초기화 합니다 .
,
, 는 시퀀스의 길이입니다(즉, 각 시퀀스의 염기쌍 수( bps)). (ii) 행렬의 각
4.8 너비 우선 탐색 셀에 대한 점수를 계산하여 점수 행렬을 채웁니다 . 이는 이웃 셀(왼쪽, 위쪽 또는
BFS(Breadth‑First Search) [255] 는 그래프의 각 노드에 주어진 소스 노드 왼쪽 위쪽 셀) 점수의 최대값에 불일치 시 페널티를 더한 것입니다 . (iii) 점수 행
로부터의 거리를 표시하는 그래프 알고리즘입니다 . 우리 버전 에서는 모든 모서 렬의 오른쪽 하단에 있는 셀에서 다시 왼쪽 상단에 있는 셀까지의 경로를 표시하
리의 가중치가 동일하므로 거리는 모서리 수를 나타냅니다. 여 최적의 정렬을 추적합니다. 두 서열 사이에는 하나 이상의 가능한 최적 정렬이
있을 수 있습니다 .
BFS의 PIM 구현은 그래프를 나타내는 인접 행렬의 CSR(Compressed
Sparse Row) [245‑247] 표현을 사용합니다. 인접 행렬의 각 요소 ( , ) 는 꼭
지점과 가 모서리로 연결되어 있는지 여부를 나타냅니다. 정점은 DPU 전체에 고 PIM 구현은 먼저 2D 점수 행렬의 위쪽 삼각형(왼쪽 위 부분)을 채운 다음
르게 분산되며, 각 DPU는 자신이 소유한 정점에 대한 인접 목록을 수신합니다. 아래쪽 삼각형(오른쪽 아래 부분)을 채웁니다. 행렬은 큰 2D 블록으로 분할되
정점의 이웃 목록에는 연결된 정점의 정점 ID가 포함됩니다. 며 알고리즘은 큰 블록 세분성 (왼쪽 상단 대각선에서 오른쪽 하단 대각선까
지)으로 대각선을 반복합니다. 각 반복에서 2D 점수 행렬의 동일한 대각선에
속하는 모든 대형 블록은 DPU에 균등하게 분산되어 병렬로 계산됩니다. DPU
모서리로 꼭지점으로. 각 DPU는 비트 벡터로 표시되는 그래프에서 방문한 정 내부에서는 각각의 대형 2D 블록이 작은 2D 하위 블록으로 분할됩니다. 각
점 목록의 자체 로컬 복사본을 유지합니다. BFS 알고리즘의 각 반복이 끝나 DPU의 태스크릿은 작은 하위 블록 세분성으로 대각선에서 작동합니다. 즉,
면 호스트 CPU는 방문한 정점 목록의 모든 로컬 DPU별 복사본을 병합합니 각 반복에서 DPU의 태스크릿은 한 대각선의 동일한 큰 블록에 속하는 서로
다 . 방문한 정점의 전체 목록을 프론티어라고 합니다. 다른 작은 하위 블록을 동시에 계산합니다.
17
Machine Translated by Google
18
Machine Translated by Google
× ′ 수행합니다.
두 번째 단계에서는 × 타일의′전치를 섹션 5.1.2에서는 1~64 DPU에 대한 전체 순위에 대한 약한 스케일링을 분석합니다. 분석에는
각 DPU에서 하나의 태스크릿은 WRAM의 × 타일을 바꿉니다. 결과 배열에는 차원이 있습니다. 호스트 CPU를 통한 DPU 간 동기화 비용 과 CPU‑DPU 및 DPU‑ CPU 지연 시간이 포함됩니
× ×× ′ . ′ 다.
세 번째 단계는 타일 크기에 대해 작동합니다. 이 단계에서는 각 요소가 크기 타일인 차원 배
′ × ,가능한 태스크릿은
열의 전치를 수행합니다. 결과 배열에는 차원이 있습니다 . 각 DPU에서 사용 ′
[271] 에 제시된 알고리즘을 사용하여 '× 배열(크기 요소 포함)의 전치에 협력합니다 . 동기화 5.1.1 강력한 스케일링 결과. 우리는 세 가지 다른 구성으로 강력한 확장을 평
′× × ′× . 를 위해 원자 명령을 사용하는 [ 271 ] 의 알고리즘과 달리 PIM 구현은 이 가합니다 : (1) 하나의 DPU 내에 1‑16개의 태스크릿, (2)
동된 타일을 추적하는 플래그 배열을 통해 태스크릿 동기화를 위해 뮤텍스를 사용합니다 한 랭크 내에 1~64개 DPU, (3) 4~32개 랭크. 단일 순위 및 다중 순위 내부 실
( UPMEM ISA가 [ 271] 때문에 이 구현을 선택합니다. 213] 에는 원자 명령이 포함되지 않습니 험의 경우 하나의 DPU에 대한 실험에서 가장 성능이 좋은 태스크릿 수를 사용합
다. 니다 .
둘째, 2,556 DPU(최신 시스템) 및 640 DPU(이전 시스템)를 갖춘 두 가지 완전한 UPMEM 에 적합한 선택입니다.
기반 PIM 시스템(표 1)의 성능 및 에너지 소비를 최신 Intel Xeon E3‑1240 CPU 와 비교합니
다 . 241] 및 최신 NVIDIA Titan V GPU [277](섹션 5.2).
둘째, 이러한 벤치마크 중 일부(VA, GEMV, SpMV, BS, TS, MLP, HST‑S,
TRNS(2단계))는 동기화 프리미티브를 사용하지 않는 반면, 다른 벤치마크(SEL,
섹션 6에서는 PIM 시스템에 대한 다양한 워크로드의 적합성에 대한 새로운 통찰력, 소프트웨
UNI, NW, RED, SCAN‑SSA)는 (스캔 커널), SCAN‑RSS(두 커널 모두), 태스
어 설계자를 위한 프로그래밍 권장 사항, 미래 PIM 시스템의 하드웨어 및 아키텍처 설계자를 위
크릿 간 동기화( 핸드셰이크 및/또는 장벽을 통해)가 가볍습니다.
한 제안 및 힌트를 제공합니다 .
19
Machine Translated by Google
MRAM‑WRAM
강력한 확장성 데이터 세트 벤치마크 약한 확장 데이터세트 전송 크기
버지니아
1 DPU‑1 랭크: 250만 요소. (10MB) | 32등급: 1억 6천만 요소. (640MB) 2.5M 요소/DPU(10MB) 1024 × 1024바이트
GEMV 1 DPU‑1 랭크: 8192 × 1024 요소. (32MB) | 32등급: 163840 × 4096 요소. (2.56GB) bcsstk30 [273] (12MB) 2048 요소/DPU(8MB) bcsstk30 [273] 1024바이트
SpMV 64바이트
SEL 1 DPU‑1 랭크: 380만 요소. (30MB) | 32등급: 2억 4천만 요소. (1.9GB) 3.8M 요소/DPU(30MB) 1024바이트
유니 1 DPU‑1 랭크: 380만 요소. (30MB) | 32등급: 2억 4천만 요소. (1.9GB) 3.8M 요소/DPU(30MB) 1024바이트
학사 2M 엘레멘트. (16MB). 1 DPU‑1 순위: 쿼리 256,000개. (2MB) | 32개 순위: 1,600만 개의 쿼리. (128MB) 256요소 질문. 1 2M 엘레멘트. (16MB). 256K 쿼리./DPU(2MB). 8바이트
TS DPU‑1 등급: 512K 요소. (2MB) | 32등급: 32M 요소. (128MB) 512K 요소/DPU(2MB) rMat 256바이트
BFS loc‑gowalla [274] (22MB) 3개의 [275](DPU당 100K 정점 및 1.2 에지) 8바이트
MLP 완전 연결 레이어. 1 DPU‑1 랭크: 2K 뉴런(32MB) | 32개 등급: 160K 뉴어. (2.56GB) 3개의 완전히 연결된 레이어. 1K neur./DPU(4MB) 1024바이트
2560
북서쪽 1 DPU‑1 랭크: 2560bps(50MB), 대형/소형 하위 블록= 1 DPU‑1 랭크: 1536 # /2 | 32개 랭크: 64Kbps(32GB), l./s.=32/2 512bps/DPU(2MB), l./s.=512/2 8, 16, 32, 40바이트
HST‑S × 1024 입력 이미지 [276](6MB) | 32 랭크: 64 × 입력 이미지 1 DPU‑1 랭크: 1536 × 1024 입력 이미지 [276] 1536 × 1024 입력 이미지 [276]/DPU (6MB) 1536 × 1024바이트
HST‑L (6MB) | 32 랭크: 64 × 입력 이미지 1 DPU‑1 랭크: 6.3M elem. (50MB) | 32랭크: 4억엘렘. (3.1GB) 1024 입력 이미지 [276]/DPU (6MB) 1024바이트
빨간색 630만 요소/DPU(50MB) 1024바이트
SCAN‑SSA 1 DPU‑1 랭크: 380만 요소. (30MB) | 32등급: 2억 4천만 요소. (1.9GB) 3.8M 요소/DPU(30MB) 1024바이트
스캔‑RSS 1 DPU‑1 랭크: 380만 요소. (30MB) | 32등급: 2억 4천만 요소. (1.9GB) 3.8M 요소/DPU(30MB) 12288 1024바이트
TRNS 1 DPU‑1 랭크: 12288 × 16 × 64 × 8(768MB) | 32랭크: 12288 × 16 × 2048 × 8(24GB) × 16 × 1 × 8/DPU(12MB) 128, 1024바이트
tasklet은 8을 초과하는 높은 동기화 오버헤드로 인해 8입니다. 다음에 설명된 대로 ′ 요소의 × 데이터 전송을 발행하여
태스크릿. 섹션 4.14. 실험에서는 작은 값( = 8)을 사용하므로,
주요 관찰 11
표 3에 표시된 대로), 지속적인 CPU‑DPU 대역폭은
최대 CPU‑DPU 대역폭에서(지속적인 CPU‑DPU 참조)
전체에 걸쳐 내부 DPU 동기화를 집중적으로 사용 그림 10a의 다양한 전송 크기에 대한 대역폭)
태스크릿(예: 뮤텍스, 장벽, 핸드셰이크)은 주요 관찰 13
확장성을 제한하여 때로는 최고의 성능을 발휘 하는 태스크릿
수가 11개 미만이 되는 경우도 있습니다. 호스트와 대용량 데이터 청크 전송
입력 데이터 및 출력 결과에는 CPU가 선호됩니다.
더 높은 지속 CPU‑DPU/DPU‑CPU 대역폭.
넷째, SCAN‑SSA(커널 추가)는
태스크릿 수를 8개까지 두 배로 늘리면 1.5× 및 2.0× 입니다. 방법‑
이 단계에도 불구하고 8개에서 16개 태스크릿으로 속도가 향상되지는 않습니다.
SCAN‑SSA 벤치마크에서는 동기화를 사용하지 않습니다. 1등급(1‑64 DPU). 우리는 1에서 1까지의 강력한 스케일링을 평가합니다.
기초 요소. STREAM ADD에서도 동일한 동작이 관찰됩니다. DPU 64개. 입력 크기는 우리가 넣을 수 있는 데이터 세트 크기입니다.
그림 7의 마이크로벤치마크, 즉 성능 포화가 발생함 단일 DPU(표 3 참조) 특히 CPU‑DPU 전송을 검토합니다.
파이프라인을 완전히 활용하는 데 필요한 11개의 태스크릿 이전. 섹션 3.2.2 DPU‑CPU 전송 시간이 어떻게 변화하는지 평가하기 위해
에서 설명했듯이 그 이유는 STREAM ADD와 DPU 수를 늘립니다. 그림 13은 실행 시간을 보여줍니다.
SCAN‑SSA(커널 추가)는 계산 집약적인 커널이 아닙니다. 1, 4, 16, 64에 대한 속도 향상 확장(DPU 수 대비) 결과
액세스된 입력 요소당 하나의 정수 추가만 수행합니다. DPU. 속도 향상 결과(각 플롯의 오른쪽 y축)는 다음과 같습니다.
MRAM에서. 결과적으로 전체 대기 시간은 DPU(예: "DPU")에 소비된 실행 시간 부분만
파이프라인 대기 시간을 숨기는 MRAM 액세스 대기 시간(따라서 그림 13의 각 막대 부분). 실행 시간 분석
완전히 수행하는 데 필요한 11개 미만의 태스크릿에서 성능이 포화됩니다. 단일 DPU 결과에 대한 그림 12의 결과와 동일합니다.
파이프라인을 활용하세요). 동일한 이유는 BS가 8개에서 16개 태스크릿으로 속도 향상을 우리는 그림 13에서 다음과 같은 7가지 관찰을 수행합니다.
거의 얻지 못함(단 3%)을 설명합니다. 첫째, DPU 성능 확장이 선형적이라는 것을 관찰했습니다.
입력 요소당 하나의 비교만 가능합니다. DPU 수(즉, DPU의 실행 시간은 다음과 같이 선형적으로 감소합니다.
VA, GEMV, SpMV, SEL, UNI의 경우 DPU 수를 늘립니다.
주요 관찰 12
BS, TS, MLP, HST‑S, HST‑L, RED, SCAN‑SSA(두 커널), SCAN‑ RSS(두
커널) 및 TRNS(두 커널)(두 커널 사이의 속도 향상)
대부분의 실제 워크로드는 DRAM 처리 장치(모든 커널)의 컴퓨팅 바인딩 영역에 있
DPU 수를 4개 늘리면 3.1배 및 4.0배 ). 로서
습니다.
결과적으로 이러한 벤치마크에 대해 DPU 수가 1에서 64로 증가합니다.
SCAN‑SSA(커널 추가) 제외), 즉 파이프라인 대기 시간
37×(SpMV)에서 64×(TS, TRNS) 사이의 속도 향상을 생성합니다.
MRAM 액세스 대기 시간을 지배합니다.
둘째, DPU 성능 확장은 두 벤치마크(BFS, NW)에 대해 선형적이지 않습
니다. 이에 대한 DPU 수를 1에서 64로 늘립니다.
다섯째, CPU‑DPU 전송에 소요되는 시간과 두 벤치마크는 8.3배 (BFS)에서 17.2배 사이의 속도 향상을 제공합니다.
DPU‑CPU 전송은 소요 시간에 비해 상대적으로 낮습니다. (NW). BFS의 경우 DPU 간 로드 불균형으로 인해 속도 향상은 선형적이지 않습니다 ( DPU 수
대부분의 벤치마크에서 DPU 실행에서는 CPU‑DPU가 를 4씩 늘릴 때 1.7‑2.7× ).
TRNS에서는 전송 시간이 매우 높습니다. TRNS의 CPU‑DPU 전송 loc‑gowalla 그래프의 불규칙한 토폴로지에 의해 생성됩니다 [274].
행렬 전치 알고리즘의 1단계를 수행합니다. [269, 270] NW에서는 곱할 때 속도 향상이 2.2배 에서 3.3배 사이입니다.
20
Machine Translated by Google
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
600 4000 삼
400 4 4
4 3000 400
400 2
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
)sm
2000
200 2 2 2 200
200 1000 1
0 0 0 0 0 0 0 0
1
1
2
2
8
8
4
4
61
61
61
61
버지니아 GEMV SpMV SEL
DPU당 #tasklet DPU당 #tasklet DPU당 #tasklet DPU당 #tasklet
DPU‑CPU DPU‑CPU DPU‑CPU DPU‑CPU
1200 8 14000 CPU‑DPU
6 140000 CPU‑DPU
12 4000 CPU‑DPU
3.0
CPU‑DPU
DPU 간 DPU 간 DPU 간
DPU 간 7 12000 120000 3500
1000 DPU
DPU 5 DPU 10 DPU 2.5
속도를 올리다 6 속도를 올리다 속도를 올리다 3000 속도를 올리다
10000 100000
800 4 8 2.0
5 2500
8000 80000
600 4 삼 6 2000 1.5
6000 60000
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
삼 1500
400 2 4 1.0
4000 40000
2 1000
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
)sm
200 2000 1 20000 2 0.5
1 500
0 0 0 0 0 0 0 0.0
1
1
2
2
8
8
4
4
61
61
61
61
유니 학사 TS BFS
DPU당 #tasklet DPU당 #tasklet DPU당 #tasklet DPU당 #tasklet
DPU‑CPU DPU‑CPU DPU‑CPU DPU‑CPU
1600 12 250 7 1600 12 1800 6
CPU‑DPU CPU‑DPU CPU‑DPU CPU‑DPU
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
삼
600 100 600
4 4 600 2
2
400 400
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
400
)sm
)sm
)sm
)sm
50
2 1 2 1
200 200 200
0 0 0 0 0 0 0 0
1
2
8
4
1
1
2
2
8
8
4
4
61
61
61
61
MLP 북서쪽 HST‑S HST‑L
DPU당 #tasklet DPU당 #tasklet DPU당 #tasklet DPU당 #tasklet
DPU‑CPU DPU‑CPU CPU‑DPU DPU‑CPU CPU‑DPU DPU‑CPU CPU‑DPU(1단계)
2500 CPU‑DPU
14 DPU 간 DPU(스캔) Inter‑DPU DPU(스캔) DPU 간 DPU(3단계)
속도 향상(스캔) DPU(감소) 2500 속도 향상(스캔) DPU(2단계) 속도 향상(3단계)
DPU 간 DPU(추가)
DPU
12 2500
속도 향상(추가) 7 속도
상(빨간색)
향 12 16000
속도 향상(2단계) 12
2000
속도를 올리다
10 6 14000
2000 2000 10 10
5 12000
1500 8 8 8
1500 1500 10000
4
6
다
리
올
를
도
속
1000 6 8000 6
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
삼
1000 1000 6000
4 4 4
2
간(
시
행
실
4000
)sm
간(
시
행
실
간(
시
행
실
2 2 2
)sm
)sm
)sm
1 2000
0 0 0 0 0 0 0 0
1
1
2
2
8
8
4
4
61
61
61
61
그림 12: 하나의 DPU(왼쪽 y축)에 있는 1, 2, 4, 8 및 16개 태스크릿에 대한 16개 벤치마크의 실행 시간(ms) 및 속도 향상(DPU에 소비된 실행 시간 부분만 고려) 1
개의 태스크릿(오른쪽 y축)의 성능으로 정규화된 더 많은 태스크릿.
DPU는 4로 계산됩니다. 이 벤치마크에서 각 반복의 병렬화 요소 (즉, 활성 DPU 사용 가능한 모든 DPU를 사용할 만큼 블록이 충분합니다. 결과적으로 NW의
수)는 처리되는 2D 점수 행렬의 대각선 크기와 대각선의 대형 2D 블록 수 에 따 확장성은 준선형적입니다.
라 달라집니다. . DPU 수를 4만큼 늘리면 더 작은 대각선의 병렬화 인자 는 낮고 셋째, DPU 간 동기화의 오버헤드( 그림 13 각 막대의 "DPU 간" 부분으로
(즉, 이러한 대각선의 블록 수와 동일) 더 큰 대각선에서는 최대 4배 까지만 증가 표시됨)는 14개 벤치마크(VA, GEMV, SpMV, SEL, UNI, BS)에서 낮습니다. ,
합니다 (즉, TS, HST‑ S, HST‑L, RED, SCAN‑SSA, SCAN‑RSS, TRNS). 결과적으로 이
러한 벤치마크는 DPU 수를 늘릴 때(DPU 간 동기화 포함) 더 높은 성능을 달성
합니다.
21
Machine Translated by Google
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
300 30 400 30
15
100 20 150
200 20 300 20
10
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
100
)sm
)sm
)sm
)sm
200
50 10 100 10 10
100 5 50
0 0 0 0 0 0 0 0
1
1
4
4
61
61
61
61
46
46
46
46
버지니아 GEMV SpMV SEL
#DPU #DPU #DPU #DPU
DPU‑CPU DPU‑CPU DPU‑CPU DPU‑CPU
400 CPU‑DPU
70 2500 70 12000 70 1400 CPU‑DPU
9
CPU‑DPU CPU‑DPU
DPU 간 DPU 간 DPU 간 DPU 간 8
350 60 60 60 1200
DPU
2000 DPU 10000 DPU DPU
7
300 속도를 올리다
속도를 올리다 속도를 올리다 속도를 올리다
50 50 50 1000
8000 6
250 1500
40 40 40 800 5
200 6000
4
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
30 1000 30 30 600
150
4000 삼
20 20 20 400
100
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
2
)sm
)sm
)sm
)sm
500 2000
50 10 10 10 200
1
0 0 0 0 0 0 0 0
1
1
4
4
61
61
61
61
46
46
46
46
유니 학사 TS BFS
#DPU #DPU #DPU #DPU
DPU‑CPU DPU‑CPU DPU‑CPU DPU‑CPU
1400 CPU‑DPU
70 2500 CPU‑DPU
20 160 60 500 70
CPU‑DPU CPU‑DPU
DPU 간 DPU 간 18 140 DPU 간 450 DPU 간
1200 DPU 60 DPU DPU 50 DPU 60
속도를 올리다
2000 속도를 올리다
16 400
120 속도를 올리다 속도를 올리다
1000 50 14 350 50
40
1500 12 100 300
800 40 40
10 80 30 250
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
600 30 1000 8 200 30
60
6 20 150
400 20 20
40
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
)sm
500 4 100
200 10 10 10
2 20 50
0 0 0 0 0 0 0 0
1
4
1
1
4
4
61
61
61
61
46
46
46
46
MLP 북서쪽 HST‑S HST‑L
#DPU #DPU #DPU #DPU
DPU‑CPU DPU‑CPU CPU‑DPU DPU‑CPU CPU‑DPU DPU‑CPU CPU‑DPU(1단계)
350 70 DPU 간 DPU(스캔) DPU 간 DPU(스캔) DPU 간 DPU(3단계)
CPU‑DPU
DPU(추가) 속도 향상(스캔) DPU(감소) 속도 향상(스캔) DPU(2단계) 속도 향상(3단계)
DPU 간 800 70
300 60 속도 향상(추가) 7.E+02 속
도 향상(빨간색) 70 8.E+05 속
도 향상(2단계) 70
DPU
700 60 7.E+05
250
속도를 올리다
50 6.E+02 60 60
600 6.E+05
50 5.E+02 50 50
200 40 500 5.E+05
40 4.E+02 40 40
400 4.E+05
다
리
올
를
도
속
150 30
30
다
리
올
를
도
속
3.E+02 30 30
다
리
올
를
도
속
다
리
올
를
도
속
300 3.E+05
100 20
20 2.E+02 20 20
간(
시
행
실
200 2.E+05
)sm
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
50 10 100 10 1.E+02 10 10
1.E+05
0 0 0 0 0.E+00 0 0.E+00 0
1
1
4
4
61
61
61
61
46
46
46
46
그림 13: 한 등급(1, 4, 16, 64개 DPU, 강력한 스케일링3 사용)에서 16개 벤치마크의 실행 시간(ms) (왼쪽 y축) 및 속도 향상(DPU에 소비된 실
행 시간 부분만 고려) )는 DPU 1개(오른쪽 y축)의 성능으로 정규화된 더 많은 DPU에 의해 제공됩니다. DPU 내부에서는 그림 12에서 가장 성능
이 좋은 태스크릿 수를 사용합니다.
시간). VA, GEMV, SpMV, BS, TS 및 TRNS 에는 DPU 간 동기화가 없습니다 . SCAN‑RSS는 DPU 실행 시간의 각각 53%, 91%, 48%, 42%, 17%를 차
HST‑S 및 HST‑L(최종 히스토그램 축소용)에는 DPU 간 동기화가 있지만 오버 지합니다 (그림 13에는 표시되지 않음). 그럼에도 불구하고 우리는 SEL, UNI,
헤드는 미미합니다. DPU 간 동기화 시간은 SEL, UNI, RED(최종 결과 병합용) RED에 대해 64개의 DPU를 사용하여 여전히 최고의 성능( DPU에 소요되는
와 SCAN‑SSA 및 SCAN‑RSS(호스트의 중간 스캔 단계용)에서 두드러집니다. 실행 시간 부분, 즉 "DPU" 및 DPU 간 동기화, 즉 "Inter‑DPU" 포함)을 얻
64개 DPU의 경우 SEL, UNI, RED, SCAN‑SSA 및 습니다. , SCAN‑SSA 및 SCAN‑RSS.
22
Machine Translated by Google
넷째, BFS, MLP 및 NW에 대한 DPU 간 동기화의 오버헤드가 상당히 높다 32개 랭크(256~2,048 DPU). 우리는 4, 8, 16, 32 등급 으로 강력한 스케
는 것을 관찰했습니다 . MLP에서는 DPU 수가 증가함에 따라 DPU 간 동기화 일링을 평가합니다 . 입력 크기는 표 3에 표시된 대로 4개 순위(예: 256 DPU)
오버헤드(가중치 행렬 및 각 레이어에 대한 입력 벡터 의 분포로 인해 )가 감소합 에 맞출 수 있는 최대 데이터 세트 크기입니다.
니다 . 그 이유는 가중치 행렬의 분포 (즉, 할당된 행렬 행을 해당 DPU에 복사) 우리는 CPU‑DPU 및 DPU‑CPU 전송 시간을 포함하지 않습니다.
가 병렬 CPU‑DPU 전송을 활용하는 반면 입력 벡터 전송에 따른 오버헤드는 무 성능 분석은 섹션 3.4에서 언급한 것처럼 이러한 전송이 순위 전체에 걸쳐 동시에
시할 수 있기 때문입니다. 그러나 BFS와 NW에서는 추세가 다릅니다. 64개 DPU 이루어지지 않기 때문입니다 . 그림 14는 4, 8, 16, 32개 랭크에 해당하는 256,
의 전체 성능( DPU 실행 시간 부분, 즉 "DPU" 및 DPU 간 동기화, 즉 "Inter‑ 512, 1,024, 2,048 DPU 에 대한 실행 시간 및 속도 향상 확장(DPU 수 대비)
DPU" 포함)은 16개 DPU보다 각각 5% 및 17% 더 높습니다. 각각 BFS와 NW 결과를 보여줍니다 . 속도 향상 결과(각 플롯의 오른쪽 y축)는 DPU에 소요된 실
에 대해. 행 시간 부분(즉, 그림 14에서 각 막대의 "DPU" 부분)에만 해당합니다.
23
Machine Translated by Google
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
40 삼
4
삼 60 삼
400 60
30 삼
300 2
2 40 2 40
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
)s m
)s m
)s m
)s m
20 200 2
1 20 1 1 20
10 100 1
0 0 0 0 0 0 0 0
652
652
652
652
215
215
215
215
GEMV SEL
4201
4201
4201
4201
840년
2
840년
2
840년
2
840년
2
버지니아
SpMV
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
300 4 4 4000
삼
1
40 삼 1000 삼 3000
200
2
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
)sm
2 2 2000 1
20 100 500
1 1000
0 0 0 10 0 10 0 0
652
652
652
652
215
215
215
215
TS BFS
4201
4201
4201
4201
840년
2
840년
2
840년
2
840년
2
유니 학사
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
속도를 올리다
4
삼
40000 DPU 간 1.0 15 삼
400 DPU 40 삼
30000
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
)sm
2 속도를 올리다 10 2 2
20000 0.5
200 20
1 10000 5 1 1
0 0 0 0.0 0 0 0 0
652
652
652
652
215
215
215
215
MLP 북서쪽 HST‑L
4201
4201
4201
4201
840년
2
840년
2
840년
2
840년
2
HST‑S
다
리
올
를
도
속
다
리
올
를
도
속
다
리
올
를
도
속
80 150 1500 4
삼 150
60 4 4 삼
100 1000
간(
시
행
실
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
)sm
2 100
40 2
2 2
20 1 50 50 500
1
0 0 0 0 0 0 0 0
652
215
652
652
652
215
215
215
빨간색
4201
840년
2
TRNS
4201
4201
4201
840년
2
840년
2
840년
2
스캔‑SSA 스캔‑RSS
그림 14: 4, 8, 16, 32 순위(256, 512, 1,024, 2,048 DPU, 강력한 스케일링3 사용)에서 16개 벤치마크의 실행 시간(ms)( 왼쪽 y축) 및 속도 향상(부분만 고
려) DPU에 소요된 실행 시간)은 4개 등급(256개 DPU)의 성능으로 정규화된 더 많은 DPU에 의해 제공됩니다(오른쪽 y축). DPU 내부에서는 그림 12에서 가
장 성능이 좋은 태스크릿 수를 사용합니다.
24
Machine Translated by Google
DPU 시간보다 높습니다. 이러한 결과를 그림 13의 결과와 비교하면 이러한 둘째, NW는 선형적으로 확장되지 않습니다(즉, DPU에 소요되는 실행 시
벤치마크의 전체 성능은 둘 이상의 순위를 사용할 때 DPU 간 동기화로 인해 간이 일정하지 않음). 문제의 크기가 DPU 수에 따라 선형적으로 증가하지 않
큰 부담을 받는다는 결론을 내립니다. SCAN‑SSA 및 SCAN‑RSS 는 CPU에 기 때문입니다. DPU 수에 따라 입력 시퀀스의 길이를 NW까지 선형적으로 늘
서 보다 복잡한 중간 단계를 수행합니다 . (1) CPU는 DPU(DPU‑CPU를 통 립니다(표 3, 약한 스케일링 데이터 세트 참조). 따라서 2D 점수 행렬의 크기
해)의 첫 번째 커널(SCAN‑SSA에서 스캔, SCAN‑RSS에서 감소)의 부분 결 는 DPU 수에 따라 2차적으로 증가합니다.
과를 수집합니다. (2) CPU는 스캔 작업을 수행하고, (3) CPU는 두 번째 커널
(Add in SCAN‑SSA, Scan in SCAN‑RSS)에서 사용할 값을 각 DPU에 반 결과적으로 DPU 수를 늘리면 DPU의 실행 시간이 늘어납니다. 그러나 2D 점
환합니다( CPU 를 통해). ‑DPU 전송). "Inter‑DPU"가 1,024에서 2,048 수 행렬의 가장 긴 대각선은 DPU 수에 따라 선형적으로 증가합니다. 이 대각
DPU로 크게 증가한 것은 듀얼 소켓 시스템 구성 (섹션 2.1) 때문입니다. 한 선의 처리 시간은 DPU 수를 늘릴 때 선형적으로 약한 스케일링을 보여 줍니
소켓의 CPU가 원격 MRAM 뱅크(즉, 다른 소켓)에서 더 낮은 메모리 대역폭 다 . 이러한 실험 결과는 부록(9.2.1절)에 나와 있습니다 .
을 확보하기 때문입니다. . BFS 의 경우 추세는 더욱 악화됩니다. DPU 간 동
기화 시간이 크게 증가함에 따라 256개의 DPU가 BFS 실행을 위한 최선의 선
택이 되는 것을 확인했습니다. BFS, SCAN‑SSA 및 SCAN‑RSS에 대한 우리 셋째, DPU 간 동기화가 필요한 벤치마크 (SEL, UNI, BFS, MLP, NW,
의 관찰은 작동하는 DPU를 최대한 많이 사용하라는 일반적인 프로그래밍 권 HST‑S, HST‑L, RED, SCAN‑SSA, SCAN‑RSS) 중에서 동기화 오버헤드
장 사항에 위배됩니다 (섹션 2.3.2). 이 세 가지 벤치마크는 최고 성능의 DPU (즉, 그림 15)의 각 막대에서 "Inter‑DPU" 부분은 SEL, UNI, HST‑S, HST‑
수가 DPU 간 동기화 오버헤드에 의해 제한된다는 것을 보여줍니다. L, RED, SCAN‑SSA 및 SCAN‑RSS의 경우 무시할 수 있습니다 . MLP 및
NW의 경우 DPU 간 동기화 시간 BFS에서는 전체 실행 시간 의 상당 부분을
차지하고 전체 문제 크기(따라서 MLP의 가중치 행렬 크기 및 NW의 반복 횟
수)가 증가하기 때문에 DPU 수에 따라 증가합니다 . 강력한 확장 실험을 위
해 섹션 5.1.1(그림 13 및 14)에서 설명했듯이 DPU 간 동기화 시간은 선형적
주요 관찰 16 으로 증가합니다 . 결과적으로 BFS는 전체 실행 시간(일부 포함) 사이에서 최
상의 균형을 얻습니다. DPU에서 소요된 실행 시간(즉, "DPU" 및 DPU 간
DRAM 처리 장치 전반에 걸친 복잡한 동기화(즉, 호스트 CPU와의 양
동기화 ("Inter‑DPU")) 및 16개 DPU의 DPU 수(즉, 전체 실행 시간의 비
방향 통신을 포함하는 DPU 간 동기화)는 상당한 오버헤드를 초래하
율, "DPU" 부분 + DPU 수에 대한 "Inter‑DPU" 부분은 16개 DPU의 경우
여 더 많은 DPU로 확장성을 제한합니다. 이는 DPU가 장착된 경우 더
더 낮습니다.
욱 두드러집니다.
5.1.2 약한 스케일링 결과. 그림 15 는 1, 4, 16, 64개 DPU에 대한 단일 순 넷째, CPU‑DPU 및 DPU‑CPU 전송 시간은 메인 메모리와 MRAM 뱅크(VA,
위 내의 약한 조정 결과를 보여줍니다 . 각 DPU에서 섹션 5.1.1에서 최고의 성 GEMV, SEL(CPU‑DPU만), UNI(CPU‑DPU만) 간 병렬 전송을 사용하는 13개
능을 생성하는 태스크릿 수를 실행합니다 . DPU당 데이터 세트의 크기는 표 3 벤치마크에서 DPU 수에 따라 천천히 증가합니다. DPU), BS, TS, MLP, HST‑
과 같습니다. S, HST‑L, RED, SCAN‑SSA, SCAN‑RSS 및 TRNS). 그림 10에서 볼 수 있듯
이 지속적인 CPU‑DPU 및 DPU‑CPU 대역폭은 DPU 수에 따라 선형적으로 증
강력한 스케일링 결과와 유사하게 DPU("DPU"), DPU 간 동기화 시간 가합니다. 평균적으로 이 13개 벤치마크에서 1 DPU에서 64 DPU로 지속되는
("Inter‑DPU"), CPU‑DPU 및 DPU‑CPU 전송 시간("CPU‑DPU", "DPU‑ CPU‑DPU/DPU‑CPU 대역폭의 증가는 20.95×/23.16×입니다. NW는 병렬
CPU") 섹션 5.1.1의 그림 12~14에 나와 있습니다 . CPU‑DPU 및 DPU‑CPU 전송을 사용하지만 전송되는 데이터 양이 증가하므로
CPU‑DPU 전송 및 DPU‑CPU 전송 시간은 DPU 수에 따라 증가합니다(즉, 위
우리는 그림 15에서 다음과 같은 다섯 가지 관찰을 수행합니다. 에서 설명한 것처럼 전체 문제 크기가 증가합니다). 그림 15의 두 번째 관찰).
먼저, 우리는 14개 벤치마크에 대해 DPU에서 완벽한(즉, 선형) 약한 스케일링
을 관찰합니다 . DPU의 실행 시간(즉, 그림 15에서 각 막대의 "DPU" 부분)은
VA, GEMV, SpMV, SEL 에 대해 일정하게 유지됩니다. , UNI, BS, TS, MLP,
HST‑S, HST‑L, RED, SCAN‑SSA, SCAN‑RSS 및 TRNS(DPU 수(및 데이터
세트 크기) 증가). 이러한 커널에서는 DPU 간에 직접적인 통신이 없기 때문에 다섯째, 병렬 전송을 사용할 수 없는 벤치마크에서는 CPU‑DPU 전송 및
DPU 간에 워크로드(즉, 로드 밸런싱)를 균등하게 분배 하면 성능 확장이 가능합 DPU‑CPU 전송 시간이 DPU 수에 따라 선형적으로 증가합니다 . SEL과 UNI는
니다. BFS 의 DPU 전체에 약간의 로드 불균형이 있음에도 불구하고 BFS에 대 위에서 논의한 것처럼 직렬 DPU‑CPU 전송을 사용합니다. 이로 인해 이 두 벤치
한 완벽한 약한 확장의 유사한 추세를 관찰합니다 . 마크에서 DPU‑CPU 전송 시간은 DPU 수에 따라 극적으로 증가하여 전체 실행
시간을 지배하게 됩니다. 데이터 세트의 불규칙성으로 인해 병렬 전송을 사용할
수 없는 SpMV 및 BFS에서는 CPU‑DPU 전송 및 DPU‑CPU 전송 시간 도 크게
주요 관찰 17 늘어납니다. SEL, UNI, SpMV 또는 BFS가 응용 프로그램에서 실행되는 여러 커
널 중 하나일 수 있는 본격적인 실제 응용 프로그램에서는 CPU‑DPU 전송 및
서로 다른 DPU(DRAM 처리 장치)에 동일한 크기의 문제가 할당되
DPU‑CPU 전송 시간을 상각하고 오버헤드를 줄일 수 있습니다.
고 DPU 간 동기화가 거의/전혀 없으면 DPU에 소요되는 실행 시간
이 선형 적으로 약해집니다(즉, RAM 수를 늘릴 때 실행 시간이 일정
하게 유지됨). DPU 및 이에 따른 데이터 세트 크기 ).
완화.
25
Machine Translated by Google
간(
시
행
실
간(
시
행
실
간(
시
행
실
)sm
)sm
)sm
)sm
2000
100 50 500
1000
0 0 0 0
1
1
4
4
61
61
61
61
46
46
46
46
버지니아 GEMV SpMV SEL
#DPU #DPU #DPU #DPU
간(
시
행
실
간(
시
행
실
간(
시
행
실
DPU 간
)sm
)sm
)sm
)sm
2000
500 2000 DPU 2000
1000
DPU
0 0 0 0
1
1
4
4
61
61
61
61
46
46
46
46
유니 학사 TS BFS
#DPU #DPU #DPU #DPU
간(
시
행
실
간(
시
행
실
간(
시
행
실
100
)sm
)sm
)sm
)sm
4000 50 DPU 간 100 DPU
50 2000 DPU
0 0 0 0
1
4
1
1
4
4
61
61
61
61
46
46
46
46
MLP 북서쪽 HST‑S HST‑L
#DPU #DPU #DPU #DPU
간(
시
행
실
간(
시
행
실
간(
시
행
실
4000
)sm
)sm
)sm
)sm
100 200
200 2000
0 0 0 0
1
1
4
4
61
61
61
61
46
46
46
46
빨간색 스캔‑SSA 스캔‑RSS TRNS
#DPU #DPU #DPU #DPU
그림 15: 한 순위(1, 4, 16, 64개 DPU, 약한 확장 사용4)에서 16개 벤치마크의 실행 시간(ms)입니다 . DPU 내부에서는 그림 12에서 가장
성능이 좋은 태스크릿 수를 사용합니다.
26
Machine Translated by Google
우리는 모든 벤치마크에 대해 640 및 2,556 DPU(표 1)를 갖춘 UPMEM 포인트 곱셈은 기본 지원이 부족하기 때문에 비용이 매우 많이 듭니다 . 세 번째
기반 PIM 시스템을 Intel Xeon E3‑1225 v6 CPU [241] 및 Volta 아키텍처 특성과 관련하여 우리는 섹션 5.1.1의 강력한 스케일링 평가를 통해 DPU 간의
[278] 기반 NVIDIA Titan V GPU [ 277 ]와 비교합니다. . 표 4 에는 CPU, 로드 불균형이 SpMV에 대한 하위선형 스케일링을 유발한다는 것을 알고 있습
GPU 및 두 가지 UPMEM 기반 PIM 시스템 의 주요 특성이 요약되어 있습니다 . 니다. BFS는 섹션 5.1에서 논의한 것처럼 호스트 CPU를 통한 DPU 간 동기화
의 오버헤드가 크기 때문에 UPMEM 기반 PIM 시스템에서 CPU 보다 성능이
UPMEM 기반 PIM 시스템 성능 측정에는 DPU에서 소요된 시간과 UPMEM 훨씬 나쁩니다 . BFS의 DPU 간 동기화 오버헤드는 DPU 수에 따라 선형적으로
기반 PIM 시스템에서 DPU 간 동기화에 소요된 시간이 포함됩니다. CPU 및 증가하므로 2,556‑DPU 시스템은 640‑DPU 시스템보다 상당히 느립니다.15
GPU 성능 측정 에는 커널 시간 만 포함됩니다 (즉, GPU 버전에는 호스트 CPU 이 실험의 목표는 최고의 성능을 보여주는 것이 아닙니다. 주어진 워크로드에 대
와 GPU 간의 데이터 전송이 포함되지 않습니다). 에너지 측정을 위해 CPU에서 해 많은 수의 DPU를 수행하지만 각 워크로드에 대해 2,556개의 DPU와 640개
는 Intel RAPL [279] 을, GPU에서는 NVIDIA SMI [280]를 사용합니다 . 의 DPU가 모두 활성화된 본격적인 시스템의 성능을 발휘합니다 . NW는 DPU
UPMEM PIM 시스템에서는 x86 소켓에서 수행할 수 있는 메모리 컨트롤러에 연 간 동기화 오버헤드로 인해 CPU보다 UPMEM 기반 PIM 시스템에서 한 자릿수
결된 DIMM이 소비하는 에너지를 얻습니다 [281]. 측정에는 PIM 칩의 에너지만 더 느립니다. NW의 DPU 간 동기화 오버헤드는 DPU 수에 따라 달라지지 않습
포함됩니다. 니다. 결과적으로 2,556‑DPU 시스템은 이 벤치마크에서 640‑DPU 시스템과
동일한 성능을 갖습니다.
0.001
구, 라이브러리 및 VA와 같은 참조 구현의 대상인 일부 벤치마크에서 2,556‑
사
학
ST
아
니
지
버
LES
SFB
PLM
SNRT
‑TSH
L
‑TSH
S
VMpS
VMEG
S‑S스
캔
R
((
1G
((
2G
)1G
)2G
)M
)M
NNAAEEM
NNAAEEM
더더
많은 UPMEM에 적합한워크로드
워크로드(1)
(1) UPMEM에 적합한 워크로드가 적음(2)
(2)
SEL 및 UNI [250, 283], HST‑S 및 HST‑L [260, 272, 284], RED [262,
많은 PIM에 적합한 PIM에 적합하지 않은 워크로드
263], SCAN‑SSA [264, 265, 283], SCAN‑RSS [251, 264, 266, 285] 및
그림 16: 640 및 2,556 DPU, Titan V GPU 및 Intel Xeon E3‑1240 CPU TRNS [269, 270, 286]. 요약하면, UPMEM PIM 아키텍처는 UPMEM 기반
를 갖춘 UPMEM 기반 PIM 시스템 간의 성능 비교. 결과는 CPU 성능으로 정규 PIM 시스템에서 실행하기 에 잠재적으로 적합하게 만드는 세 가지 주요 특성을
화됩니다(y축은 로그 스케일). 벤치마크에는 (1) UPMEM PIM 아키텍처에 더
나타내는 워크로드에 대해 최신 GPU보다 성능이 뛰어납니다 .
적합한 벤치마크와 (2) UPMEM PIM 아키텍처에 덜 적합한 벤치마크의 두 그룹
이 있습니다.
27
Machine Translated by Google
인텔 제온 E3‑1225 v6 CPU [241] 14nm 4(8개 스레드) 3.3GHz 26.4GFLOPS★ 32GB 37.5GB/초 73W
엔비디아 타이탄 V GPU [277] 14nm 80(5,120 SIMD 레인) 2,5569 2x 1.2GHz 12,288.0GFLOPS 12GB 652.8GB/초 250W
ST
아
니
지
버
LES
SFB
니
유
PLM
SNRT
‑TSH
S
‑TSH
L
VMpS
VMEG
감
절
지
너
한
대
에
모
규
그
)로
UP C(
MGG
NNAAEEM
S‑S스
캔
R
A‑S스
캔
S
((
1G
((
2G
)1G
)2G
)M
NNAAEEM
NNAAEEM
더 많은 UPMEM에
더 많은 적합한워크로드
PIM에 적합한 워크로드(1)
(1) UPMEM에 적합한 워크로드가
PIM에 적합하지 적음(2)
않은 워크로드 (2)
UPMEM 기반 PIM 시스템은 워크로드에서 최신 CPU/GPU에 비해 에너지 절약
효과를 제공합니다.
그림 17: UPMEM 기반 에너지 비교
CPU/GPU보다 성능이 뛰어납니다. 소스 때문이에요
640개의 DPU, Titan V GPU 및 Intel을 갖춘 PIM 시스템
성능 향상과 에너지 절감을 동시에 실현
제온 E3‑1240 CPU. 결과는 CPU 성능으로 정규화됩니다(y축은 로그 스케일임). 벤치마크
동일합니다. 메모리와 프로세서 코어 간의 데이터 이동이 크게 감소합니다.
에는 두 가지 그룹이 있습니다. (1) UPMEM에 더 적합한 벤치마크
우리는 그림 17에서 세 가지 주요 관찰을 수행합니다. 5.2.3 토론. 이러한 관찰은 프로그래머에게 유용합니다.
첫째, 640‑DPU 시스템은 평균적으로 1.64배 더 적은 전력을 소비합니다. 얼마나 많은 성능과 에너지를 절약할 수 있는지 예측하기 위해
16개 벤치마크 모두에서 CPU보다 에너지가 더 높습니다. 12개 벤치마크 기존 CPU와 비교하여 UPMEM 하드웨어에서 얻을 수 있는
(VA, GEMV, SEL, UNI, BS, TS, HST‑S, HST‑L, RED, SCAN‑SSA, 다양한 유형의 워크로드를 위한 GPU 시스템.
SCAN‑RSS 및 TRNS), 640‑DPU 시스템은 에너지를 제공합니다. 이 비교의 한 가지 한계는 설정이 어렵다는 것입니다.
CPU에 비해 5.23배 절약됩니다 . 최대 에너지 절감은 세 가지 유형의 시스템(CPU,
UNI의 경우 39.14× . 우리의 실험에 따르면 640‑DPU 시스템은 GPU 및 UPMEM 기반 PIM 시스템)을 사용하여 공정한 비교를 보장합니다.
40GB 용량의 PIM 지원 메모리를 갖춘 이를 위해 640‑DPU PIM 시스템은 비슷한 메모리를 가지고 있습니다.
최신 Intel Xeon CPU에 비해 뛰어난 에너지 절감 효과(포함) CPU 용량(40GB 대 32GB). 그러나 2,556‑DPU
28
Machine Translated by Google
시스템의 메모리 용량은 훨씬 더 높습니다 (~160GB). 반면 , 640‑DPU (16개 벤치마크 중 10개) 최신 NVIDIA Titan V GPU보다 2,556‑DPU 시스
UPMEM 기반 PIM 시스템과 GPU는 가격이 비슷합니다(640‑DPU 시스템이 템에서 더 빠르게 실행됩니다(평균 2.54배) . 이러한 관찰은 작업 부하가 다
조금 더 저렴함). 제조 기술, 프로세스 노드, 코어 수 또는 주파수(표 5)와 같 음 작업에 가장 적합하다는 것을 보여줍니다.
은 기타 하드웨어 특성은 섹션 5.2에서 평가하는 네 가지 시스템에서 매우 다 UPMEM PIM 아키텍처는 산술 연산이나 간단한 연산(예: 비트 연산 및 정수 덧셈/뺄셈)이 없
릅니다. 는 아키텍처입니다. 이러한 핵심 내용을 바탕으로 PIM 시스템의 범용 성능을 향상시키기 위해 훨
씬 더 효율적인 소프트웨어 라이브러리 루틴을 고안하거나 , 더 중요하게는 향후 PIM 아키텍처
UPMEM 하드웨어는 여전히 성숙하고 있으며 가까운 미래에 더 높은 주파 세대의 복잡한 작업을 위한 전문적이고 빠른 인메모리 하드웨어를 고안하는 것이 좋습니다.
수(350 또는 267MHz 대신 400‑450MHz)에서 실행될 것으로 예상되며 잠
재적으로 더 작은 기술 노드 로 제조될 수 있습니다 [231]. 따라서 이 비교에
서 보고하는 결과는 UPMEM 기반 PIM 아키텍처의 전체 잠재력을 과소평가
할 수 있습니다 . CPU 및 GPU 시스템은 아키텍처, 소프트웨어 및 제조 측면 핵심 내용 2
에서 수십 년 동안 고도로 최적화되었습니다 . 우리는 PIM 시스템의 아키텍처,
소프트웨어 및 제조가 계속해서 개선될 것이라고 믿습니다( 섹션 6의 향후 개 UPMEM에 가장 적합한 워크로드
선에 대한 제안 참조). PIM 아키텍처는 산술 연산을 사용하지 않거나 간단한 연산(예: 비트 연산 및 정수
덧셈/뺄셈)만 사용합니다.
6가지 핵심 사항
이 섹션에서는 이 문서 전반에 걸쳐 제공하는 네 가지 주요 내용의 형태로 몇 핵심 내용 #3. UPMEM PIM 아키텍처에 가장 적합한 워크로드는 DPU 간에 직접적인 통신
가지 주요 경험적 관찰을 반복합니다. 또한 UPMEM PIM 아키텍처에 대한 워 채널이 없기 때문에 글로벌 통신이 거의 없는 워크로드입니다 . 결과적으로 섹션 5.1에서 볼 수
크로드 적합성과 우수한 프로그래밍 사례에 대한 시사점을 제공하고 향후 PIM 있듯이 DPU 간 통신이 필요하지 않은 벤치마크와 통신이 필요한 벤치마크(특히 MRAM 뱅크
시스템의 하드웨어 및 아키텍처 설계자를 위한 제안도 제공합니다 . 간 병렬 전송을 사용할 수 없는 경우)의 성능 확장성에 큰 차이가 있습니다. 이 핵심 내용은
UPMEM PIM 아키텍처에 가장 적합한 워크로드는 상호 작용이 거의 또는 전혀 없는 워크로드
라는 것을 보여줍니다.
핵심 내용 1
요약. 현재 형태의 UPMEM PIM 아키텍처 에 가장 적합한 워크로드는 (1) (2) 산술 연산이
UPMEM PIM 아키텍처는 기본적으로 컴퓨팅에 바인딩되어 단순하거나 전혀 없고 (3) DPU 간 통신이 거의 또는 전혀 없는 메모리 바인딩 워크로드입니다.
있습니다. 결과적으로 가장 적합한 작업 부하는 메모리 바인
딩되어 있습니다.
29
Machine Translated by Google
스트리밍 메모리 액세스, (2) DPU 간 통신이 거의 또는 전혀 없음 , (3) 곱셈, 나 PNM(Processing Near Memory)은 메모리 근처 또는 내부(예: [8, 56–
눗셈 또는 부동 소수점 연산을 거의 또는 전혀 사용하지 않습니다.16 우리는 69, 71–96 , 98, 101, 104 ) 에 처리 요소 (예: 기능 단위, 가속기, 단순 처리 코
2,556‑DPU 시스템이 어, 재구성 가능한 논리)를 통합합니다. –110, 113, 120–130, 290, 291]). 이러
훨씬 더 높은 성능과 성능을 제공할 것으로 기대합니다. 에너지 이점을 제공하 한 PNM 작업 중 다수는 3D 스택 메모리의 논리 계층 내부에 PIM 논리를 배치합
며 향후 PIM 시스템은 더욱 향상될 것입니다(특히 향후 PIM 하드웨어에 대한 권 니다 [8, 56, 58–67, 75, 78–80, 82, 84–87, 89–95, 101, 106, 108– 111,
장 사항을 구현한 후). 핵심 사항 1‑3에 따른 권장 사항을 기반으로 아키텍처가 113, 128–130, 290, 291], 메모리 컨트롤러 [76, 77], DDRX DIMM [68,
개선되면 미래의 PIM 시스템이 훨씬 더 매력적이 되어 잠재적으로 모든 워크로드 121, 292, 293] 또는 실리콘 인터포저를 통해 연결된 CPU 와 동일한 패키지
에 대해 최신 CPU 및 GPU에 비해 훨씬 더 높은 성능과 에너지 이점을 얻을 수 있 [ 57, 126, 127, 186].
을 것이라고 믿습니다 .
또 다른 최근 연구에서는 메모리 일관성 [64‑66], 가상 메모리 [185, 294],
동기화 [56] 또는 워크로드의 PIM 적합성과 같은 PIM 지원 시스템의 시스템 통
핵심 내용 4 합 문제에 대한 솔루션을 연구하고 제안합니다. 128, 184].
• UPMEM 기반 PIM 시스템은 대부분의 PrIM 벤치마크에서 성능 및 여러 연구에서는 생물정보학 [295, 296], 스카이라인 계산 [297], 압축
에너지 효율성 측면에서 최신 CPU를 능가합니다. [298] 또는 희소 선형 대수 [299] 를 위해 UPMEM PIM 아키텍처 가 제공하
는 가속화 기회를 탐구합니다 . 독자는 UPMEM PIM 아키텍처의 특정 애플리
• UPMEM 기반 PIM 시스템은 대부분의 PrIM 벤치마크에서 최신 케이션 에 대한 심층 분석을 위해 이러한 작업을 참조할 수 있습니다 . 우리의
GPU보다 성능이 뛰어나며 향후 PIM 시스템에 대한 전망은 더욱 긍정 작업은 UPMEM PIM 아키텍처의 포괄적인 아키텍처 특성화를 수행하고 PIM
적입니다. • UPMEM 기반 PIM 시스템은 워크로드에서 최신 을 연구하는 최초의 작업입니다.
CPU 및 GPU보다 에너지 효율적 입니다.
많은 수의 작업 부하에 적합합니다. 또한 우리는 실제 PIM 시스템을 위
CPU 및 GPU 에 비해 성능 향상을 제공합니다 . 한 최초의 벤치마크 제품군을 공개적으로 무료로 제공한 최초의 기업입니
다.
최근 연구 [122, 123]에서는 HBM 기술 [168, 169] 을 기반으로 하는 FIM‑
DRAM이라는 프로그래밍 가능한 뱅크 근처 계산 장치를 갖춘 실제 PIM 시스템
7 관련 업무 을 제시합니다 . 기계 학습 애플리케이션을 위해 특별히 설계된 FIMDRAM 아키텍
처는 간단한 곱셈 및 누적 단위를 사용하여 SIMD 파이프라인을 구현합니다
우리가 아는 한, 이 백서는 실제 PIM 아키텍처에 대한 최초의 오픈 소스 벤치마
[300, 301]. 보다 최근에 발표된 Accelerator‑ in‑Memory [120] 는 딥 러닝
크 제품군과 함께 공개적으로 사용 가능한 최초의 실제 PIM 아키텍처에 대한 최
애플리케이션을 위한 곱셈 및 누적 및 활성화 기능을 위한 특수 유닛을 갖춘
초의 포괄적인 특성화 및 분석을 제공합니다.
GDDR6 기반 PIM 아키텍처입니다 . AxDIMM [121]은 DIMM 의 버퍼 칩에
FPGA 패브릭을 배치하는 DIMM 기반 솔루션입니다 . 추천 추론에 대해 테스트되
PIM 아키텍처에 대한 관련 작업을 간략하게 검토합니다.
었습니다. 보다 일반적인 용도의 UPMEM PIM 아키텍처와 비교할 때 이러한 아
PIM에는 두 가지 주요 접근 방식이 있습니다 [1‑4]: (1) 메모리 사용 처리
키텍처는 특정 애플리케이션 도메인(예: 기계 학습)에 중점을 두므로 더 넓은 범
(PUM) 및 (2) 메모리 근처 처리(PNM). PUM 또는 PNM에 대한 이전 연구에서
위 의 애플리케이션을 지원하는 유연성이 부족할 수 있습니다. 우리 작업 과정에
는 PIM 아키텍처를 평가하기 위한 실제 상용 시스템이나 벤치마크 제품군 의 결
서 이러한 아키텍처에 대한 포괄적인 특성화 및 분석은 연구원, 프로그래머 및 설
과를 제공하지 않습니다 .
계자가 해당 아키텍처의 잠재력을 이해하는 데 큰 도움이 될 수 있습니다 .
메모리를 사용한 처리(PUM)는 기존 메모리 아키텍처와 메모리 셀 및 회로의
작동 원리를 활용하여 저렴한 비용으로 각 메모리 칩 내에서 작업을 수행합니다 .
이전 연구에서는 SRAM [21‑24], DRAM [25‑40, 99, 100, 119, 188‑191,
288], PCM [41], MRAM [ 42‑44] 또는 RRAM/memristive [45] 를 사용하
여 PUM 메커니즘을 제안했습니다. –55, 70, 103, 114, 118, 192, 193, 289]
추억. PUM 메커니즘은 데이터 복사 및 초기화 [21, 27, 28, 33, 38, 39, 119,
190], 대량 비트 연산(예: 기능적으로 완전한 부울 논리 연산 세트 ) 과 같은 다양
한 유형의 작업을 가능하게 합니다 . 25, 26, 32, 34, 35, 41–44, 145, 188,
191] 및 간단한 산술 연산(예: 덧셈, 곱셈, 함축 ) [21–24, 29, 35, 36, 45–55 , 8 요약 및 결론
99]. SIMDRAM [37] 이라고 불리는 최근 연구에서는 Ambit 기판[25, 26]을 기
반으로 DRAM 어레이 내부의 비트 직렬 SIMD 방식으로 임의 작업을 구현하고 우리는 실제 상용 PIM 아키텍처에 대한 최초의 포괄적인 특성화 및 분
실행하기 위한 프레임워크를 설계했습니다 . 석을 제시합니다 . 이 분석을 통해 우리는 최초의 공개 PIM 아키텍처
인 UPMEM PIM 아키텍처와 다양한 유형의 워크로드에 대한 적합성
에 대한 엄격하고 철저한 이해를 발전시킵니다 .
30
Machine Translated by Google
두 가지 대상에서 수행된 PrIM 벤치마크에 대한 광범위한 평가 [13] DE Shaw 외, "NON‑VON 데이터베이스 머신: 간략한 개요", IEEE
데이터베이스공학 황소., 1981.
UPMEM 메모리 모듈을 갖춘 실제 시스템은 PIM 시스템에 대한 다양한 워크로드의 적합
[14] PM Kogge, "EXECUBE ‑ 확장 가능한 MPP를 위한 새로운 아키텍처", ICPP,
성에 대한 새로운 통찰력, 소프트웨어 설계자를 위한 프로그래밍 권장 사항, 미래 PIM 시 1994.
스템의 하드웨어 및 아키텍처 설계자를 위한 제안 및 힌트를 제공합니다. PrIM 벤치마크를 [15] M. Gokhale 등, "메모리 내 처리: Terasys 대규모 병렬 PIM 어레이", IEEE 컴퓨터, 1995.
위한 UPMEM 기반 PIM 시스템의 성능 및 에너지 소비 를 최신 CPU 및 최신 GPU의 성능 [16] D. Patterson 외, "지능형 RAM 사례", IEEE Micro, 1997.
및 에너지 소비와 비교 하고 기존 프로세서 중심에 비해 실제 PIM 시스템 의 주요 강점을 [17] M. Oskin 외, "활성 페이지: 지능형 메모리를 위한 계산 모델"
1998년 ISCA에서.
성공적으로 활용할 수 있는 주요 워크로드 특성을 식별합니다. 아키텍처.
[18] Y. Kang 외, "FlexRAM: 고급 지능형 메모리 시스템을 향하여", in
ICCD, 1999.
[19] K. Mai 외, "스마트 메모리: 모듈식 재구성 가능 아키텍처"
ISCA, 2000.
[20] J. Draper 외, "DIVA 메모리 내 처리 칩의 아키텍처",
우리는 최초의 상용 PIM 시스템을 아키텍처, 소프트웨어 및 제조 측면에서 수 SC, 2002.
십 년 동안 고도로 최적화된 CPU 및 GPU 시스템과 비교했습니다 . PIM 시스 [21] S. Aga 외, "컴퓨팅 캐시", HPCA, 2017.
[22] C. Eckert 외, “신경 캐시: 심층 신경의 비트 직렬 캐시 내 가속
템의 아키텍처, 소프트웨어 및 제조가 지속적 으로 개선됨 에 따라 CPU 및 네트워크”, ISCA, 2018.
GPU 시스템 에 대한 보다 공정한 비교가 가능해지며 , 이는 향후 PIM 시스템 [23] D. Fujiki 외, "데이터 병렬 가속을 위한 이중성 캐시", ISCA, 2019.
에 대한 훨씬 더 높은 이점을 보여줍니다. [24] M. Kang 외, " SRAM에서 계산의 심층 임베딩을 통한 패턴 인식을 위한 에너지 효율적인 VLSI 아키텍
처", ICASSP, 2014.
[25] V. Seshadri 외, "Ambit: 범용 DRAM 기술을 사용한 대량 비트 연산을 위한 인메모리 가속기",
MICRO, 2017.
[26] V. Seshadri 외, "Buddy‑RAM: DRAM을 사용한 대량 비트 연산의 성능 및 효율성 개선",
우리는 우리의 작업이 이 PIM 아키텍처는 물론 미래 PIM 시스템의 프로그래머, 사용
arXiv:1611.09988 [cs:AR], 2016.
자 및 설계자에게 귀중한 통찰력을 제공하고 메모리 중심 컴퓨팅 시스템 개발에 획기적인 [27] V. Seshadri 외, “RowClone: 빠르고 에너지 효율적인 In‑DRAM 대량 데이터
이정표를 제공할 것이라고 믿고 희망합니다 . 복사 및 초기화”, MICRO, 2013.
[28] V. Seshadri 외, "RowClone: DRAM을 사용하여 데이터 이동 및 초기화 가속화", arXiv:1805.03502
[cs.AR], 2018.
[29] S. Angizi 및 D. Fan, “Graphide: 활용하는 그래프 처리 가속기
인드램 컴퓨팅”, GLSVLSI, 2019.
감사의 말 [30] J. Kim 외, "DRAM 대기 시간 PUF: 최신 DRAM 장치의 대기 시간‑신뢰성 균형을 활용하여 물리적 복
제 불가 기능을 신속하게 평가 ", HPCA, 2018.
귀중한 지원을 해주신 UPMEM의 Fabrice Devaux, Rémy Cimadomo, Romaric
Jodin 및 Vincent Palatin에게 감사드립니다 . 우리는 SAFARI Research Group [31] J. Kim 외, "D‑RaNGe: 상용 DRAM 장치를 사용하여 낮은 대기 시간과 높은 처리량으로 실제 난수 생
의 산업 파트너, 특히 ASML, Facebook, Google, Huawei, Intel, Microsoft, 성", HPCA, 2019.
[32] F. Gao 외, “ComputeDRAM: 기성품을 사용한 인메모리 컴퓨팅
VMware 및 Semiconductor Research Corporation 의 지원을 인정합니다 . DRAM”, MICRO, 2019.
Izzat El Hajj 는 베이루트 미국 대학교(URB‑AUB‑103951‑25960)의 대학 연구 위 [33] KK Chang 외, "LISA(Low‑Cost Inter‑Linked Subarrays): DRAM에서 빠른 하위 배열 간 데이터
이동 활성화", HPCA, 2016.
원회의 지원을 인정합니다 .
[34] X. Xin 외, “ELP2IM: 효율적이고 저전력 비트 연산 처리
DRAM에서”, HPCA, 2020.
이 기사는 2021년 제12차 국제 녹색 및 지속 가능한 컴퓨팅 컨퍼런스(IGSC)에서 [35] S. Li 외, "DRISA: A DRAM 기반 재구성 가능 현장 가속기", in
마이크로, 2017.
발표된 우리 작업 의 요약인 [302] 를 크게 확장한 버전입니다 . 3분 토크 영상
[36] Q. Deng 외, "DrAcc: 정확한 CNN 추론을 위한 DRAM 기반 가속기"
(https://youtu.be/SrFD_u46EDA ) , 20분 토크 영상 (https://youtu.be/ DAC에서, 2018.
Pp9jSU2b9oM ), 1‑ 1시간 토크 영상 (https://youtu.be/6Ws3h_ CQO_Q), 롱 [37] N. Hajinazar 외, "SIMDRAM: DRAM을 사용한 비트 직렬 SIMD 처리를 위한 프레임워크", ASPLOS,
2021.
토크 영상 (https://youtu.be/D8Hjy2iU9l4)을 만나보세요. [38] SHS Rezaei 외, “NoM: 은행 간 데이터 전송을 위한 네트워크 온 메모리
고도로 저장된 기억 속에”, CAL, 2020.
[39] Y. Wang 외, "FIGARO: 세분화된 In‑DRAM 데이터 재배치 및 캐싱을 통한 시스템 성능 향상", MICRO,
2020.
[40] MF Ali 외, "범용 DRAM 기술을 사용한 메모리 내 저비용 비트 직렬 추가 ", TCAS‑I, 2019.
[3] S. Ghose 외, "메모리 내 처리: 작업 부하 중심 관점", IBM [44] S. Angizi 등, "AlignS: SOT‑MRAM을 활용한 DNA 짧은 읽기 정렬을 위한 메모리 내 처리 가속기",
JRD, 2019. DAC, 2019.
[4] S. Ghose 외, " 메모리 내 처리에 대한 작업 부하 및 프로그래밍 용이성 중심 관점", arXiv:1907.12947 [45] Y. Levy 외, "Memristive Akers 배열을 사용한 메모리의 논리 연산"
[cs:AR], 2019. 마이크로일렉트로닉스 저널, 2014.
[5] S. Ghose 외, "메모리 내 처리 채택 활성화: 과제, 메커니즘, 향후 연구 방향", arXiv:1802.00320 [46] S. Kvatinsky 외, "MAGIC ‑ Memristor 지원 논리", IEEE TCAS II: Express
[cs:AR], 2018. 브리핑, 2014.
[6] O. Mutlu, "합당한 곳에서 데이터 처리: 메모리 내 컴퓨팅 활성화 ", https://bit.ly/3IVpj0j, 2017, [47] A. Shafiee 외, “ISAAC: 컨볼루셔널 신경망 가속기
MST 기조 연설. 크로스바의 현장 아날로그 산술”, ISCA, 2016.
[7] O. Mutlu 외, "데이터 집약적 컴퓨팅을 위한 메모리 내 및 근처의 실제 처리 활성화", DAC, 2019. [48] S. Kvatinsky et al., "Memristor 기반 IMPLY 논리 설계 절차", ICCD,
2011.
[8] A. Boroumand 외, “소비자 기기를 위한 Google 워크로드: 데이터 완화 [49] S. Kvatinsky 외, “IMPLY(Memristor‑Based Material Implication) 논리: 설계
이동 병목 현상,” ASPLOS, 2018. 원칙과 방법론,” TVLSI, 2014.
[9] D. Pandiyan 및 C.‑J. Wu, IISWC, 2014년 "모바일 플랫폼에서 새로운 스마트폰 워크로드 에 대한 데 [50] P.‑E. Gaillardon 외, "PLiM(Programmable Logic‑in‑Memory) 컴퓨터", DATE, 2016.
이터 이동의 에너지 비용 정량화 ".
[10] G. Kestor 등, "과학 응용 분야에서 데이터 이동의 에너지 비용 정량화", IISWC, 2013. [51] D. Bhattacharjee 외, "ReVAMP: 인 메모리 컴퓨팅을 위한 ReRAM 기반 VLIW 아키텍처", DATE,
2017.
[11] WH Kautz, "셀룰러 메모리 내 논리 어레이", IEEE TC, 1969. [52] S. Hamdioui 외, “Memristor 기반 메모리 내 컴퓨팅 아키텍처
[12] HS Stone, "메모리 내 논리 컴퓨터", IEEE TC, 1970. 데이터 집약적 애플리케이션', DATE, 2015.
31
Machine Translated by Google
[53] L. Xie 외, ICCD, 2015년 "멤리스터 크로스바에 적용되는 빠른 부울 논리". [93] M. Zhang 외, “GraphP: PIM 기반 그래프 프로에 대한 통신 감소‑
[54] S. Hamdioui 외, "컴퓨팅을 위한 멤리스터: 신화인가 현실인가?" DATE, 2017년. 효율적인 데이터 파티션을 통한 중단,” HPCA, 2018.
[55] J. Yu 외, "메모리 내 계산을 위한 멤리스티브 장치", DATE, 2018. [94] Y. Huang 외, " 에너지 효율적인 그래프 처리를 위한 이기종 PIM 하드웨어‑소프트웨어 공동 설계",
[56] C. Giannoula 외, “SyncCron: 근거리 데이터를 위한 효율적인 동기화 지원 IPDPS, 2020.
처리 아키텍처”, HPCA, 2021. [95] Y. Zhuo 외, "GraphQ: 확장 가능한 PIM 기반 그래프 처리", MICRO, 2019.
[57] I. Fernandez 외, “NATSA: 시계열을 위한 근접 데이터 처리 가속기 [96] PC Santos 외, “빅 데이터 처리를 위한 피연산자 크기 재구성
분석”, ICCD, 2020. 기억', DATE, 2017.
[58] M. Alser 외, "게놈 분석 가속화: 지속적인 여정의 입문서" [97] W.‑M. Hwu 외, "컴퓨팅 시스템의 데이터 액세스 계층 구조 재부팅"
IEEE 마이크로, 2020. ICRC, 2017.
[59] DS Cali 외, "GenASM: 게놈 서열 분석을 위한 고성능, 저전력 근사 문자열 매칭 가속 프레임워크", [98] M. Besta 외, “SISA: 그래프 마이닝을 위한 세트 중심 명령어 세트 아키텍처
MICRO, 메모리 내 처리 시스템에 관한 내용,” MICRO, 2021.
2020. [99] JD Ferreira 외, "pLUTo: 대규모 병렬 범용 계산을 가능하게 하는 In‑DRAM 조회 테이블",
[60] JS Kim 외, "GRIM‑Filter: 신흥 메모리 기술을 사용한 읽기 매핑의 빠른 시드 필터링", arXiv:1708.04329 arXiv:2104.07699 [cs.AR], 2021.
[q‑bio.GN], 2017. [100] A. Olgun 외, ISCA, "QUAC‑TRNG: 범용 DRAM에서 4행 활성화를 사용한 고처리량 실제 난수 생성 ",
[61] JS Kim 외, "GRIM‑Filter: 메모리 내 처리 기술을 사용한 DNA 읽기 매핑의 빠른 시드 위치 필터링", ISCA, 2021.
BMC Genomics, 2018.
[62] J. Ahn 외, “PIM 지원 명령어: 낮은 오버헤드, 지역 인식 [101] S. Lloyd 및 M. Gokhale, “불규칙한 데이터에 대한 메모리 내 데이터 재배열‑
메모리 내 처리 아키텍처”, ISCA, 2015. 집중 컴퓨팅,” 컴퓨터, 2015.
[63] J. Ahn 외, “병렬 그래프를 위한 확장 가능한 메모리 내 처리 가속기 [102] DG Elliott 외, "계산 RAM: 메모리에 프로세서 구현"
처리”, ISCA, 2015. IEEE 컴퓨터 설계 및 테스트, 1999.
[64] A. Boroumand et al., “CoNDA: 근거리 데이터에 대한 효율적인 캐시 일관성 지원 [103] L. Zheng 외, "패턴 검색을 위한 RRAM 기반 TCAM", ISCAS, 2016.
가속기”, ISCA, 2019. [104] J. Landgraf 외, "에뮬레이션과 시뮬레이션을 결합하여 근거리 메모리 키/값 조회 가속기 평가", 2021년.
[65] A. Boroumand 외, "LazyPIM: 메모리 내 처리를 위한 효율적인 캐시 일관성 메커니즘", CAL, 2016.
[105] A. Rodrigues 외, "분산‑수집 아키텍처를 향하여: 하드웨어 및 소프트웨어 문제", MEMSYS, 2019년.
[66] A. Boroumand 외, "LazyPIM: 메모리 내 처리 아키텍처에서 캐시 일관성을 위한 효율적인 지원",
arXiv:1706.03162 [cs:AR], 2017. [106] S. Lloyd 및 M. Gokhale, “근접 메모리 가속기의 설계 공간 탐구‑
[67] G. Singh 외, "NAPEL: 앙상블 학습을 통한 근거리 메모리 컴퓨팅 애플리케이션 성능 예측", DAC, 2019. tors”, MEMSYS, 2018.
[107] S. Lloyd 및 M. Gokhale, "근접 메모리 키/값 조회 가속", MEMSYS, 2017.
[68] H. Asghari‑Moghaddam 외, "카멜레온: 대용량 메모리 시스템을 위한 다양하고 실용적인 Near‑
DRAM 가속 아키텍처", MICRO, 2016. [108] M. Gokhale et al., "Near Memory Data Structure Rearrangement", in MEMSYS,
[69] OO Babarinsa 및 S. Idreos, "JAFAR: 데이터베이스를 위한 근거리 데이터 처리", SIGMOD, 2015. 2015.
[109] R. Nair 외, “액티브 메모리 큐브: 메모리 내 처리 아키텍처
[70] P. Chi 외, "PRIME: ReRAM 기반 메인 메모리의 신경망 계산을 위한 새로운 메모리 내 처리 아키텍처", 엑사스케일 시스템,” IBM JRD, 2015.
ISCA, 2016년. [110] AC Jacob 외, "액티브 메모리 큐브용 컴파일", Tech. 대표. RC25644 (WAT1612‑008). IBM 연구 부
[71] A. Farmahini‑Farahani 외, "NDA: 상용 DRAM 장치 및 표준 메모리 모듈을 활용하는 Near‑DRAM 서, 기술. 의원, 2016.
가속 아키텍처", HPCA, [111] Z. Sura 등, "메모리 내 처리 시스템의 데이터 액세스 최적화",
2015. 2015년 CF에서
[72] M. Gao 외, "인메모리 분석 프레임 워크를 위한 실용적인 근거리 데이터 처리", PACT, 2015. [112] R. Nair, "메모리 아키텍처의 진화", IEEE 회보, 2015.
[113] R. Balasubramonian 외, "근접 데이터 처리: MICRO‑46 워크숍의 통찰력", IEEE Micro, 2014.
[73] M. Gao 및 C. Kozyrakis, “HRL: 효율적이고 유연한 재구성 가능 논리
근거리 데이터 처리”, HPCA, 2016. [114] Y. Xi 외, "아날로그 저항 스위칭 메모리를 사용한 메모리 내 학습: 검토 및 관점", IEEE 회보, 2020.
[74] B. Gu 외, "비스킷: 빅 데이터 워크로드의 근거리 데이터 처리를 위한 프레임워크 ", ISCA, 2016.
[115] Onur Mutlu 및 Juan Gómez‑Luna, “미래 컴퓨팅 시스템을 위한 메모리 내 처리 패러다임 탐색(2021
[75] Q. Guo 외, “3D 스택 메모리 측 가속: 가속기 및 시스템 년 가을),” https://safari.ethz.ch/projects_ and_seminars/fall2021/doku.php?
디자인”, WoNDP, 2014. id=processing_in_memory.
[76] M. Hashemi 등, "향상된 메모리 컨트롤러로 종속 캐시 누락 가속화", ISCA, 2016. [116] Onur Mutlu, “컴퓨터 아키텍처(2021년 가을)”, https://safari.ethz.ch/
아키텍처/fall2021/doku.php?id=start.
[77] M. Hashemi 외, “지속적인 런어헤드: 투명한 하드웨어 가속 [117] Onur Mutlu, Mohammed Alser 및 Juan Gómez‑Luna, "컴퓨터 아키텍처 세미나(2021년 가을)",
메모리 집약적인 워크로드용,” MICRO, 2016. https://safari.ethz.ch/architecture_seminar/spring2022/ doku.php?id=start.
[78] K. Hsieh 외, "TOM(투명한 오프로딩 및 매핑): GPU 시스템에서 프로그래머가 투명한 근거리 데이터 처
리 활성화", ISCA, 2016. [118] L. Yavits 등, "GIRAF: 범용 저장 장치 내 저항성 연관 프레임‑
[79] D. Kim 외, "Neurocube: 고밀도 3D 메모리를 갖춘 프로그래밍 가능한 디지털 신경모형 아키텍처", 일”, IEEE TPDS, 2021.
ISCA, 2016. [119] A. Olgun 외, "PiDRAM: DRAM 처리를 위한 전체적인 엔드투엔드 FPGA 기반 프레임워크", arXiv 사전
[80] G. Kim 외, “무제한의 표준화된 근거리 데이터 처리를 향하여” 인쇄 arXiv:2111.00082, 2021.
GPU를 위한 데이터 배치”, SC, 2017. [120] S. Lee 외, " 1TFLOPS MAC 작동 및 딥 러닝 애플리케이션을 위한 다양한 활성화 기능을 지원하는
[81] JH Lee 외, "BSSync: 제한된 부실 일관성 모델을 사용하여 기계 학습 작업을 위한 근거리 메모리 처 1ynm 1.25V 8Gb, 16Gb/s/핀 GDDR6 기반 메모리 내 가속기", ISSCC, 2022.
리", PACT, 2015.
[82] Z. Liu 외, "근접 메모리 컴퓨팅을 위한 동시 데이터 구조", [121] L. Ke 외, “근접 메모리 처리 실행: 개인화 가속화
SPAA, 2017. AxDIMM 권장 사항,” IEEE 마이크로, 2021.
[83] A. Morad 등, "GP‑SIMD 메모리 내 처리", ACM TACO, 2015. Y.‑C. _ Kwon 외, "25.4 머신 러닝 애플리케이션을 위한 뱅크 레벨 병렬성을 사용하는 1.2 TFLOPS 프로그래
[84] L. Nai 외, “GraphPIM: 그래프에서 명령 수준 PIM 오프로딩 활성화 밍 가능 컴퓨팅 장치를 갖춘 HBM2 기반의 20nm 6GB Function‑In‑Memory DRAM ", ISSCC,
컴퓨팅 프레임워크”, HPCA, 2017. 2021.
[85] A. Pattnaik 외, “GPU 아키텍처를 위한 스케줄링 기법 [123] S. Lee 외, " 상용 DRAM 기술 기반 PIM용 하드웨어 아키텍처 및 소프트웨어 스택: 산업용 제품", ISCA,
메모리 내 처리 기능”, PACT, 2016. 2021.
[86] SH Pugsley 외, “NDC: 3D 스택 메모리+로직의 영향 분석 [124] B. Asgari 외, "FAFNIR: 효율적인 근거리 메모리 지능형 감소를 사용하여 희소 수집 가속화", HPCA,
MapReduce 워크로드의 장치”, ISPASS, 2014. 2021.
[87] DP Zhang 외, "TOP‑PIM: 메모리의 처리량 중심 프로그래밍 가능 처리", HPDC, 2014. [125] JM Herruzo 외, " 프로세싱‑니어‑메모리를 사용하여 빠르고 에너지 효율적인 FM‑인덱스 정확한 매칭
활성화", The Journal of Supercomputing, 2021.
[88] Q. Zhu 외, “3D 적층으로 희소 행렬‑행렬 곱셈 가속화 [126] G. Singh et al., “Fpga 기반 현대 데이터의 근접 메모리 가속‑
로직 인 메모리 하드웨어,” HPEC, 2013. 집중 애플리케이션,” IEEE 마이크로, 2021.
[89] B. Akin et al., "3D‑Stacked DRAM을 사용한 메모리의 데이터 재구성", in [127] G. Singh et al., “Near‑Memory Reconfig를 이용한 기상 예측 가속화‑
ISCA, 2015. 내구성 있는 패브릭,” ACM TRETS, 2021.
[90] M. Gao 외, "테트리스: 3D 메모리를 이용한 확장 가능하고 효율적인 신경망 가속", ASPLOS, 2017. [128] GF Oliveira 외, "DAMOV: 데이터 이동 병목 현상 평가를 위한 새로운 방법론 및 벤치마크 제품군",
IEEE Access, 2021.
[91] M. Drumond 외, ISCA의 "몬드리안 데이터 엔진", 2017. [129] A. Boroumand 외, "에지 장치용 Google 신경망 모델: 기계 학습 추론 병목 현상 분석 및 완화",
[92] G. Dai 외, "GraphH: 대규모 그래프 처리를 위한 메모리 내 처리 아키텍처", IEEE TCAD, 2018. PACT, 2021.
[130] A. Boroumand 외, "에지 장치용 Google 신경망 모델: 기계 학습 추론 병목 현상 분석 및 완화", arXiv
사전 인쇄
32
Machine Translated by Google
arXiv:2109.14320, 2021. [169] D. Lee 외, "동시 다층 액세스: 저렴한 비용으로 3D 스택 메모리 대역폭 개선", TACO, 2016.
[131] A. Denzler 등, "Casper: 캐시 근처 처리를 사용하여 스텐실 계산 가속화", arXiv 사전 인쇄
arXiv:2112.14216, 2021. [170] S. Ghose et al., "복잡한 작업 부하‑DRAM 상호 작용의 신비를 풀기:
[132] U. Kang 외, "DRAM 프로세스 스케일링 향상을 위한 컨트롤러 및 DRAM 공동 설계 ", The Memory 실험 연구”, SIGMETRICS, 2019.
Forum, 2014. [171] Y. Kim 외, "Ramulator: 빠르고 확장 가능한 DRAM 시뮬레이터", CAL, 2015.
[133] J. Liu 등, ISCA의 "현대 DRAM 장치의 데이터 보존 동작에 대한 실험적 연구: 보존 시간 프로파일링 메커 [172] M. Gokhale et al., “ 2015년 하이브리드 메모리 큐브 성능 특성화.
니즘에 대한 함의", 데이터 중심 워크로드”(IA3) ,
2013. [173] E. Kültürsay 외, ISPASS, 2013년 "에너지 효율적인 주 메모리 대안으로 STT‑RAM 평가".
[134] O. Mutlu, “메모리 확장: 시스템 아키텍처 관점”, IMW, 2013.
[135] Y. Kim 외, "액세스하지 않고 메모리의 비트 뒤집기: DRAM 외란 오류에 대한 실험적 연구", ISCA, 2014. [174] DB Strukov 등, "The Missing Memristor Found", Nature, 2008.
[175] H.‑SP Wong 등, "금속 산화물 RRAM", Proc. IEEE, 2012.
[136] O. Mutlu, "메모리 밀도가 높아짐에 따라 직면할 수 있는 RowHammer 문제 및 기타 문제 ", DATE, [176] BC Lee 외, “Phase Change Memory Architecture and the Quest for Scalabil‑
2017. ity,” CACM, 2010.
[137] S. Ghose 외, "DRAM 전력 모델이 알려주지 않는 것: 상세한 실험 연구에서 얻은 교훈", SIGMETRICS, [177] MK Qureshi et al., “확장 가능한 고성능 메인 메모리 시스템
2018. 상변화 메모리 기술,” ISCA, 2009.
[138] O. Mutlu와 L. Subramanian, “기억의 연구 문제와 기회 [178] P. Zhou 외, “위상을 사용하는 내구성 있고 에너지 효율적인 메인 메모리
시스템”, SUPERFRI, 2014. 메모리 기술 변경,” ISCA, 2009.
[139] JS Kim 외, "RowHammer 재검토: 최신 DRAM 장치 및 완화 기법에 대한 실험적 분석", ISCA, 2020. [179] BC Lee 외, “상변화 기술과 메인 메모리의 미래,”
IEEE 마이크로, 2010.
[140] O. Mutlu와 JS Kim, “RowHammer: 회고전”, IEEE TCAD, 2019. [180] H.‑SP Wong 등, "Phase Change Memory," Proc. IEEE, 2010.
[141] P. Frigo 외, "TRRespass: 대상 행 새로 고침의 다양한 측면 활용" [181] H. 윤 외, “다단계 세포 상변화 메모리를 위한 효율적인 데이터 매핑 및 버퍼링 기술”, ACM TACO, 2014.
S&P에서는 2020년.
[142] J. Kim 외, “Solar‑DRAM: 다음을 활용하여 DRAM 액세스 지연 시간 단축 [182] H. 윤 외, "하이브리드 메모리에 대한 행 버퍼 위치 인식 캐싱 정책 ", ICCD, 2012.
로컬 비트라인의 변형”, ICCD, 2018.
[143] J. Liu 외, "RAIDR: 보존 인식 지능형 DRAM 새로 고침", ISCA, 2012. [183] P. Girard 등, "자기 랜덤 액세스 메모리에 대한 테스트 및 신뢰성 솔루션 조사 ", IEEE 회보, 2020.
[144] O. Mutlu, "주 메모리 확장: 과제 및 솔루션 방향", 차세대 컴퓨터 설계를 위한 무어 기술 이상. 스프링거,
2015. [184] GF Oliveira 등, "DAMOV: 데이터 이동 병목 현상을 평가하기 위한 새로운 방법론 및 벤치마크 제품군",
[145] JA Mandelman 외, " DRAM(동적 랜덤 액세스 메모리)의 확장에 대한 과제 및 향후 방향", IBM JRD, arXiv:2105.03725 [cs.AR], 2021.
2002. [185] K. Hsieh 등, "3D 스택 메모리에서 포인터 추적 가속화: 과제 , 메커니즘, 평가", ICCD, 2016.
[146] BC Lee 외, "확장 가능한 DRAM 대안으로서 위상 변화 메모리 설계", ISCA, 2009.
[186] G. Singh 외, "NERO: 날씨 예측 모델링을 위한 근 고대역폭 메모리 스텐실 가속기", FPL, 2020.
[147] L. Cojocar 등, “우리는 Rowhammer에 취약합니까? 엔드투엔드(End‑to‑End) 방법‑
클라우드 제공업체를 위한 이론”, S&P, 2020. [187] R. Hadidi 등, "CAIRO: 메모리 내 처리의 명령어 수준 오프로딩을 활성화하기 위한 컴파일러 지원 기술",
[148] AG Ya likçi 외, "BlockHammer: 빠르게 액세스되는 DRAM 행을 블랙리스트에 추가하여 저렴한 비 ACM TACO, vol. 2017년 14월 14일
용으로 RowHammer 방지", HPCA, 2021.
[149] M. Patel 외, ISCA, "REAPER(The Reach Profiler): 공격적인 조건에서 프로파일링을 통해 DRAM 보 [188] V. Seshadri 및 O. Mutlu, "In‑DRAM 대량 비트 단위 실행 엔진", arXiv:1905.09822 [cs.AR], 2020.
유 오류 완화 활성화", 2017년.
[150] S. Khan 외, "DRAM 유지 실패에 대한 오류 완화 기술의 효율성: 비교 실험 연구", SIGMETRICS, 2014. [189] V. Seshadri 및 O. Mutlu, "메모리 패러다임을 사용한 처리: DRAM 내 대량 복사, 초기화, 비트 AND
및 OR", arXiv:1610.09603 [cs:AR], 2016.
[151] S. Khan 외, “PARBOR: 데이터 탐지를 위한 효율적인 시스템 수준 기술 [190] V. Seshadri 및 O. Mutlu, “데이터 이동을 줄이기 위한 메모리에서의 간단한 작업‑
DRAM의 종속 오류”, DSN, 2016. ment,” 컴퓨터 발전, 106권, 2017년.
[152] S. Khan 외, " 현재 메모리 콘텐츠를 활용하여 데이터 종속 DRAM 오류 감지 및 완화", MICRO, 2017. [191] V. Seshadri 외, “DRAM의 고속 대량 비트 AND 및 OR”, CAL, 2015.
[192] A. Ankit 외, "PUMA: 기계 학습 추론을 위한 프로그래밍 가능 초효율 멤리스터 기반 가속기", ASPLOS,
[153] D. Lee 외, "적응형 지연 DRAM: 일반적인 경우에 대한 DRAM 타이밍 최적화", HPCA, 2015. 2019.
[193] A. Ankit 외, "PANTHER: 에너지 효율적인 ReRAM을 활용하는 신경망 훈련을 위한 프로그래밍 가능 아
[154] D. Lee 외, "현대 DRAM 칩의 설계로 인한 지연 시간 변화: 특성화 , 분석 및 지연 시간 감소 메커니즘", 키텍처 ", IEEE TC, 2020.
SIGMETRICS, 2017. [194] J. Ambrosi 외, “아날로그‑디지털 가속을 위한 하드웨어‑소프트웨어 공동 설계‑
기계 학습을 위한 토르”, ICRC, 2018.
[155] KK Chang 외, "현대 DRAM 장치의 감소된 전압 작동 이해: 실험적 특성화, 분석 및 메커니즘", SIG‑ [195] P. Bruel 등, ICRC, "일반화 또는 다이: 멤리스터 기반 가속기에 대한 운영 체제 지원", 2017.
METRICS, 2017.
[196] S. Huang 외, “ReRAM 기반 DNN 추론을 위한 혼합 정밀 양자화
[156] KK Chang 외, "현대 DRAM 칩의 지연 시간 변화 이해: 실험적 특성화, 분석 및 최적화", SIGMETRICS, 가속기”, ASP‑DAC, 2021.
2016. [197] Y. Kim 외, "DRAM에서 하위 배열 수준 병렬 처리(SALP)를 활용하는 사례", ISCA, 2012.
[157] KK Chang 외, " 액세스와 새로 고침을 병렬화하여 DRAM 성능 향상", HPCA, 2014. [198] UPMEM, “UPMEM PIM 소개. DRAM 가속기의 PIM(Processing‑in‑Memory) (백서),” 2018.
[158] J. Meza 외, “대규모 생산 데이터 센터의 메모리 오류 재검토: [199] F. Devaux, "메모리 가속기의 진정한 처리", Hot Chips, 2019.
현장의 새로운 동향 분석 및 모델링,” DSN, 2015. [200] D. Weber et al., "DRAM 금속화의 현재 및 미래 과제", in
[159] H. David 등, “동적 전압/주파수를 통한 메모리 전력 관리 IITC, 2005.
스케일링”, ICAC, 2011. [201] Y. Peng 외, " 3D DRAM의 DC 전력 무결성을 위한 설계, 패키징 및 아키텍처 정책 공동 최적화", DAC,
[160] Q. Deng 외, "Memscale: 메인 메모리를 위한 활성 저전력 모드", ASPLOS, 2011. 2015.
[202] M. Yuffe 외, "완전 통합형 다중 CPU, GPU 및 메모리 컨트롤러 32nm 프로세서", ISSCC, 2011.
[161] 홍상현, “메모리 기술 동향과 미래 과제”, IEDM, 2010.
[162] S. Kanev 외, ISCA, 2015년 "창고 규모 컴퓨터 프로파일링". [203] R. Christy 외, “8.3 인프라용 7nm FinFET의 3GHz ARM Neoverse N1 CPU‑
[163] MK Qureshi 외, "AVATAR: DRAM 시스템을 위한 가변 유지 시간(VRT) 인식 새로 고침 ", DSN, 2015. 구조 응용 프로그램”, ISSCC, 2020.
[204] T. Singh 외, "3.2 Zen: 차세대 고성능 x86 코어", in
[164] L. Orosa 등, "RowHammer의 감도에 대한 심층 조사: 실제 DRAM 칩의 실험적 분석 및 향후 공격 및 ISSCC, 2017.
방어에 대한 영향" , MICRO, 2021. [205] O. Mutlu, “강의 18c: 세분화된 멀티스레딩,” https://safari. ethz.ch/digitaltechnik/spring2020/
lib/exe/fetch.php?media=onur‑ digitaldesign‑2020‑lecture18c‑fgmt‑
[165] H. Hassan 외, "In‑DRAM RowHammer 보호 메커니즘 발견: 새로운 방법론, 맞춤형 RowHammer beforelecture.pptx, 비디오는 http://www.youtube.com/watch?v=bu5dxKTvQVs 에서 볼
패턴 및 의미", MICRO, 수 있습니다. , 2020, 디지털 디자인 및 컴퓨터 아키텍처. 2020년 봄.
2021.
[166] M. Patel 외, "Harp: 온다이 오류 수정 코드를 사용하는 메모리 칩에서 수정 불가능한 오류를 실질적이 [206] JL Hennessy 및 DA Patterson, 컴퓨터 아키텍처 ‑ 정량적 접근 방식, 5판, 3장: 명령어 수준 병렬 처리
고 효과적으로 식별", MICRO‑54: 54회 연례 IEEE/ACM 마이크로아키텍처에 관한 국제 심포지엄, 및 활용.
2021, 623쪽~ 모건 카우프만, 2012.
640. [207] BJ Smith, "파이프라인된 공유 리소스 MIMD 컴퓨터", ICPP, 1978.
[167] 하이브리드 메모리 큐브 컨소시엄, “HMC 사양 2.0,” 2014.
[168] JEDEC, "고대역폭 메모리(HBM) DRAM", 표준 번호 JESD235, 2013.
33
Machine Translated by Google
[208] BJ Smith, "HEP 다중 프로세서 컴퓨터 시스템의 아키텍처 및 응용", SPIE, 실시간 신호 처리 IV, 1981. [246] W. Liu 및 B. Vinter, "CSR5: 크로스 플랫폼 희소 행렬 벡터 곱셈을 위한 효율적인 저장 형식", ICS, 2015.
[209] JE Thornton, CDC 6600: 컴퓨터 설계, 1970. [247] K. Kanellopoulos 등, "SMASH: 효율적인 희소 행렬 연산을 위한 소프트웨어 압축 및 하드웨어 가속 인덱
[210] O. Mutlu, “강의 19: SIMD 프로세서,” https://safari.ethz.ch/digitaltechnik/ spring2020/lib/exe/ 싱 공동 설계", MICRO , 2019.
fetch.php?media=onur‑digitaldesign‑2020‑lecture19‑simd‑ beforelecture.pptx, 비디오는
http://www.youtube.com/watch?v= 에서 볼 수 있습니다. 2XZ3ik6xSzM, 2020, 디지털 디자인과 [248] S. Ceri 및 G. Gottlob, "SQL을 관계형 대수학으로 변환: SQL 쿼리의 최적화, 의미 및 동등성", IEEE TSE,
컴퓨터 아키텍처. 2020년 봄. 1985.
[211] JL Hennessy 및 DA Patterson, 컴퓨터 아키텍처 ‑ 정량적 접근 방식, 5판, 4장: 벡터, SIMD 및 GPU 아키 [249] GE Blelloch, "기본 병렬 작업으로 스캔", IEEE TC, 1989.
텍처 의 데이터 수준 병렬 처리 . 모건 카우프만, 2012. [250] J. Gómez‑Luna 외, “다코어 아키텍처를 위한 내부 데이터 슬라이딩 알고리즘”
강의”, ICPP, 2015.
[212] MJ 플린, "초고속 컴퓨팅 시스템", Proc. IEEE, 1966. [251] S. Yan 외, “StreamScan: 전역 장벽이 없는 GPU용 고속 스캔 알고리즘
[213] 업멤(UPMEM), “업멤 사용자 매뉴얼. 버전 2021.1.0,” 2021. 동기화”, PPoPP, 2013.
[214] SAFARI 연구 그룹, "PrIM Benchmark Suite", https://github.com/CMU‑SAFARI/prim‑ [252] DE Knuth, "최적 이진 검색 트리", Acta informatica, 1971.
benchmarks . [253] C.‑CM Yeh 외, "행렬 프로필 I: 시계열에 대한 모든 쌍 유사성 조인: 모티프, 불일치 및 셰이프릿을 포함하는
[215] S. Williams 외, “Roofline: 다중 환경을 위한 통찰력 있는 시각적 성능 모델 통합 보기", ICDM, 2016.
핵심 아키텍처,” CACM, 2009. [254] Y. Zhu 외, "행렬 프로파일 XI: SCRIMP++: 대화형 속도의 시계열 모티브 발견", ICDM, 2018.
[216] G. Hager 및 G. Wellein, 과학자 및 엔지니어를 위한 고성능 컴퓨팅 소개 , 5장: 병렬화의 기초. CRC 출판
사, 2010. [255] A. Bundy 및 L. Wallen, 인공 지능 도구 카탈로그의 "폭 우선 검색" . 스프링거, 1984.
[217] GM Amdahl, "대규모 달성을 위한 단일 프로세서 접근 방식의 타당성 ", AFIPS, 1967.
[256] DB Kirk 외, 대규모 병렬 프로세서 프로그래밍, 제3판, 12장 ‑ 병렬 패턴: 그래프 검색. 모건 카우프만, 2017.
[218] JL Gustafson, "암달의 법칙 재평가", CACM, 1988.
[219] A. Saini, "인텔 펜티엄 프로세서 설계", ICCD, 1993. [257] L. Luo 외, "폭 우선 검색의 효과적인 GPU 구현", DAC,
[220] D. Jaggar, "ARM 아키텍처 및 시스템", IEEE 통신 역사 연보 2010.
퍼팅, 1997. [258] GE Hinton, “대규모 병렬 방식으로 번역 불변 인식 학습
[221] AS Waterman, "RISC‑V 명령어 세트 아키텍처 설계", Ph.D. 논문, UC 버클리, 2016. 네트워크”, PARLE, 1987.
[259] S. Needleman 및 C. Wunsch, " 두 단백질의 아미노산 서열 유사성 검색에 적용할 수 있는 일반적인 방법
[222] Y. Kim 및 O. Mutlu, 컴퓨팅 핸드북: 컴퓨터 과학 및 소프트웨어 엔지니어링, 3판, 1장: 메모리 시스템. CRC ", Journal of Molecular Biology, 1970.
출판사, 2014.
[223] O. Mutlu, "강의 2b: 데이터 보존 및 메모리 새로 고침", https: //bit.ly/3KhVgAq, 비디오는 http:// [260] J. Gómez‑Luna 외, " GPU의 히스토그램 계산에 대한 최적화된 접근 방식", MVAP, 2013.
www.youtube.com/watch?v= 에서 볼 수 있습니다. v702wUnaWGE, 2020, 컴퓨터 아키텍처. 2020
년 가을. [261] R. Rabenseifner, ICCS의 "집단적 감축 운영 최적화",
[224] O. Mutlu, "강의 3b: 기억 시스템: 도전과 기회," https://bit.ly/3sQIfYu, 비디오는 http:// 2004.
www.youtube.com/watch?v= 에서 볼 수 있습니다. Q2FbUxD7GHs, 2020, 컴퓨터 아키텍처. 2020 [262] M. Harris, "CUDA의 병렬 축소 최적화", Nvidia 개발자 기술 ‑
년 가을. 오기, 2007.
[225] O. Mutlu, “강의 4a: 메모리 시스템: 솔루션 방향,” https://safari.ethz.ch/architecture/fall2020/lib/ [263] SG De Gonzalo 외, " GPU에서 빠르고 휴대 가능한 병렬 축소를 위한 워프 수준 프리미티브 및 원자 명령의
exe/fetch.php?media=onur‑ comparch‑fall2020‑lecture4a‑ memory‑solutions‑ 자동 생성", CGO, 2019.
afterlecture.pptx, 비디오는 http://www.youtube.com/watch?v=PANTCVTYe8M에서 볼 수 있
습니다., 2020, 컴퓨터 아키텍처. 2020년 가을. [264] DB Kirk 외, 대규모 병렬 프로세서 프로그래밍, 제3판, 8장 ‑ 병렬 패턴: 접두사 합계: 병렬 알고리즘의 작업 효
율성 소개 . 모건 카우프만, 2017.
[226] JEDEC, “JESD79‑4 DDR4 SDRAM 표준,” 2012.
[227] UPMEM, “UPMEM 웹사이트,” https://www.upmem.com, 2020. [265] S. Sengupta 외, "GPU를 위한 효율적인 병렬 스캔 알고리즘", NVIDIA 기술 보고서 NVR‑2008‑003,
[228] V. Seshadri 외, "집합 분산형 DRAM: 비단위 스트라이드 액세스의 공간적 지역성을 개선하기 위한 DRAM 2008.
내 주소 변환", MICRO, 2015년. [266] Y. Dotsenko 외, "그래픽 프로세서의 고속 스캔 알고리즘", ICS, 2008.
[229] Intel, "Intel Xeon Silver 4215 프로세서", https://ark.intel.com/content/www/us/ [267] A. 케일리, “II. 행렬 이론에 관한 회고록,” 런던 왕립학회의 철학적 거래, 1858년.
en/ark/products/193389/intel‑xeon‑silver‑4215‑processor‑11m‑cache‑2‑50‑
ghz.html, 2019. [268] TW Hungerford, 추상 대수학: 소개, 제3판. 센게이지 학습, 2012.
[230] Intel, "Intel Xeon Silver 4110 프로세서", https://ark.intel.com/content/www/us/
en/ark/products/123547/intel‑xeon‑silver‑4110‑processor‑11m‑cache‑2‑10‑ I.‑J. _ Sung 외, "가속기에서 직사각형 행렬의 내부 전치", PPoPP, 2014.
ghz.html, 2017.
[231] R. Jodin 및 R. Cimadomo, “UPMEM. 개인 커뮤니케이션,” 2020년 10월. [270] J. Gomez‑Luna 외, "GPU의 내부 행렬 전치", IEEE TPDS, 2016.
[232] O. Mutlu, “강의 20: 그래픽 처리 장치,” https://safari. ethz.ch/digitaltechnik/spring2020/lib/exe/ I.‑J. _ Sung et al., “DL: 이기종 데이터 레이아웃 변환 시스템
fetch.php?media=onur‑ digitaldesign‑2020‑lecture20‑gpu‑beforelecture.pptx, 컴퓨팅”, 혁신적인 병렬 컴퓨팅, 2012.
비디오는 http://www.youtube.com/watch?v=dg0VN 에서 볼 수 있습니다. ‑XCGKQ, 2020, 디지털 [272] J. Gómez‑Luna 등, “GPU에서 원자 추가의 성능 모델링
디자인과 컴퓨터 아키텍처. 2020년 봄. 스크래치패드 메모리,” IEEE TPDS, 2013.
[273] RF Boisvert 외, "매트릭스 시장: 테스트 매트릭스 컬렉션을 위한 웹 리소스"
[233] T. Rauber 및 G. Rünger, 병렬 프로그래밍, 2판, 3장: 병렬 수치 소프트웨어 품질 분야, 1996년.
프로그래밍 모델. 스프링거, 2013. [274] E. Cho 외, “우정과 이동성: 위치 기반 소셜에서의 사용자 이동
[234] UPMEM, “UPMEM 소프트웨어 개발 키트(SDK).” https://sdk.upmem.com, 네트워크”, KDD, 2011.
2021. [275] D. Chakrabarti 등, "R‑MAT: 그래프 마이닝을 위한 재귀 모델", SDM,
[235] C. Lattner 및 V. Adve, “LLVM: 평생 프로그램을 위한 컴파일 프레임워크 2004.
분석 및 변환”, CGO, 2004. [276] JH van Hateren 및 A. van der Schaaf, "1차 시각 피질의 단순 세포와 비교한 자연 이미지의 독립 구성 요
[236] UPMEM, “컴파일러 탐색기,” https://dpu.dev, 2020. 소 필터", 런던 왕립 학회 회보. 시리즈 B: 생물학, 1998.
[237] JD McCalpin, "현재 고성능 컴퓨터의 메모리 대역폭 및 머신 밸런스 ", IEEE TCCA 뉴스레터, 1995.
[277] NVIDIA, “NVIDIA Titan V,” https://www.nvidia.com/en‑us/titan/titan‑v/, 2017.
[238] LLVM, “Compiler‑RT, LLVM 프로젝트,” https://github.com/llvm/llvm‑project/ [278] NVIDIA, “NVIDIA Tesla V100 GPU 아키텍처. 백서,” https://images.nvidia.com/content/volta‑
트리/메인/컴파일러‑rt/lib/buildins, 2021. architecture/pdf/volta‑architecture‑whitepaper.pdf , 2017.
[239] PR Luszczek 외, "HPCC(HPC Challenge) 벤치마크 제품군", SC, 2006.
[240] 인텔, "인텔 고급 벡터 확장 프로그래밍 참조", 2011. [279] 인텔 오픈 소스, “RAPL 파워 미터,” https://01.org/rapl‑power‑meter, 2014.
[241] Intel, “Intel Xeon 프로세서 E3‑1225 v6, ” https://ark.intel.com/content/www/us/ [280] NVIDIA, "NVIDIA 시스템 관리 인터페이스 프로그램", http://developer. download.nvidia.com/
en/ark/products/97476/intel‑xeon‑processor‑e3‑1225‑v6 ‑8m‑캐시‑3‑30‑ compute/DCGM/docs/nvidia‑smi‑367.38.pdf, 2016.
ghz.html, 2017. [281] Intel, "Intel 64 및 IA‑32 아키텍처 소프트웨어 개발자 매뉴얼," 볼륨 3B: 시스템 프로그래밍 가이드, 2011.
[242] 인텔, “인텔 어드바이저”, 2020.
[243] LS Blackford 등, "기본 선형 대수 하위 프로그램 (BLAS)의 업데이트된 세트", ACM TOMS, 2002. [282] NVIDIA, “CUDA 샘플 v. 11.2,” 2021.
[283] N. Bell 및 J. Hoberock, “Thrust: CUDA를 위한 생산성 중심 라이브러리,”
[244] Y. Saad, 희소 선형 시스템을 위한 반복 방법, 2판, 1장: GPU 컴퓨팅 보석, Jade Edition, 2012.
병렬 구현. 시암, 2003. G.‑J. _ van den Braak 외, " GPU 스크래치패드 메모리의 원자적 연산 시뮬레이션 및 아키텍처 개선", ICCD, 2013
[245] Y. Saad, 희소 선형 시스템을 위한 반복 방법, 제2판, 3장: 희소 년.
행렬. 시암, 2003.
34
Machine Translated by Google
[285] D. Merrill 및 NVIDIA‑Labs, “CUDA 언바운드(CUB) 라이브러리,” NVIDIA‑Labs, 둘째, 낮은 작업 강도의 경우 포화 처리량에 도달하는 데 필요한 태스크릿
2015.
수는 11개 미만입니다. 이는 MRAM 액세스 지연 시간이 전체 지연 시간을 지배
[286] B. Catanzaro 외, "내부 행렬 전치에 대한 분해", in
PPoPP, 2014. 하는 메모리 바인딩 영역에서 발생합니다. 이 관찰은 섹션 3.2.2의 COPY 및
[287] J. Gómez‑Luna et al., “Chai: 협업을 위한 이기종 애플리케이션 ADD 벤치마크에 대한 관찰 과 일치합니다 .
통합 아키텍처”, ISPASS, 2017.
[288] V. Seshadri, "고효율 메모리 시스템을 활성화하기 위한 간단한 DRAM 및 가상 메모리 추상화 ", Ph.D.
카네기멜론대학교 논문,
2016.
9.2 Needleman‑Wunsch, 이미지 히스토그램, 축소 및 스캔에 대한 확장된
[289] L. Song 외, "GraphR: ReRAM을 사용하여 그래프 처리 가속화", HPCA,
2018. 결과 이 섹션에서는 PrIM 벤치마크 중 4개에 대한 몇 가지 추가
[290] A. Boroumand et al., "폴리네시아: 특수 하드웨어/소프트웨어 공동 설계를 통한 효과적인 하이브리
드 트랜잭션‑알/분석 데이터베이스 활성화", arXiv:2103.00798 [cs.AR], 2021.
결과를 제시합니다. 먼저, 우리는 NW에 대한 확장된 평가를 제시합니다( 9.2.1절).
둘째, 다양한 히스토그램 크기에 대해 HST‑S와 HST‑L을 비교합니다 (9.2.2절).
[291] A. Boroumand 외, "에지 기계 학습 추론 병목 현상 완화: Google Edge 모델 가속화에 대한 실증적 셋째, 로컬 내부 DPU 감소를 수행하기 위한 세 가지 다른 메커니즘을 사용하여
연구", arXiv:2103.00768 [cs.AR], 2021.
RED를 평가하는 방법을 보여줍니다 (9.2.3절). 넷째, 서로 다른 배열 크기에 대해
[292] MA Alves et al., “벡터 연산 수행의 기회와 과제 SCAN‑SSA와 SCAN‑RSS를 비교합니다 (9.2.4절).
DRAM 내부의 기능”, MEMSYS, 2015.
[293] W. Huangfu 외, "MEDAL: DNA 시딩 알고리즘을 위한 확장 가능한 DIMM 기반 근거리 데이터 처리
가속기", MICRO, 2019.
[294] N. Hajinazar 외, "가상 블록 인터페이스: 기존 가상 메모리 프레임워크에 대한 유연한 대안", ISCA,
2020. 9.2.1 니들만‑분쉬. NW의 약한 스케일링 실험에 대한 추가 결과를 제시합니
[295] D. Lavenier 등, "Processor‑in‑Memory 아키텍처를 사용한 DNA 매핑", 다. 본 실험에서는 DPU 수에 비례하여 정렬되도록 시퀀스 길이를 늘립니다 . 따
BIBM, 2016.
[296] D. Lavenier 외, "메모리 내 프로세서 아키텍처의 변형 호출 병렬화", BIBM, 2020. 라서 2D 점수 행렬의 크기는 DPU 수에 따라 2차적으로 증가합니다. 그림 19
는 (a) NW의 전체 실행(모든 반복 포함) 및 (b) 가장 긴 대각선만 실행한 약
[297] V. Zois et al., "프로세싱을 위한 대규모 병렬 스카이라인 계산"
한 스케일링 결과를 보여줍니다.
메모리 아키텍처”, PACT, 2018.
[298] J. Nider 외, "스토리지 클래스 메모리 처리", HotStorage, 2020.
[299] C. Giannoula 등, "SparseP: 실제 메모리 내 처리 시스템에서 효율적인 희소 행렬 벡터 곱셈을 향하
여", arXiv 사전 인쇄 arXiv:2201.05072,
2022. 그림 19에서 두 가지 관찰을 수행합니다. 첫째, 문제의 크기(2D 점수 행렬)
[300] H. Shin 등, "McDRAM: DRAM의 낮은 대기 시간 및 에너지 효율적인 매트릭스 계산", IEEE TCADICS, 가 2차적 으로 증가하므로 전체 실행(그림 19a)에 대한 DPU의 실행 시간은
2018.
DPU 수에 따라 증가합니다 . 우리는 섹션 5.1.2에서도 동일한 관찰을 합니
[301] S. Cho 외, "McDRAM v2: 엣지 의 심층 신경망에서 대형 모델 문제를 해결하기 위한 동적 랜덤 액세스
메모리 시스톨릭 어레이 가속기 ", IEEE Access, 2020. 다 . 둘째, 가장 긴 대각선에 대한 DPU의 실행 시간(그림 19b)은 DPU 수가
증가함에 따라 일정하게 유지됩니다. 그 이유는 가장 긴 대각선의 길이가 시퀀
[302] J. Gómez‑Luna 등, "메모리 중심 컴퓨팅 시스템 벤치마킹: 실제 메모리 내 처리 하드웨어 분석", IGSC,
스 길이와 DPU 개수에 따라 선형적으로 증가하기 때문입니다. 결과적으로 가
2021.
[303] S. Che 외, "Rodinia: 이기종 컴퓨팅을 위한 벤치마크 제품군", 장 긴 대각선에 대해 선형 약한 스케일링이 관찰됩니다.
IISWC, 2009.
35
Machine Translated by Google
64.00 64.00
(a) INT32, ADD (1 DPU) 8 8
(b) INT32, MUL (1 DPU)
32.00 4 32.00 4
16.00 2 16.00 2
1 1
8.00 8.00
1/2 1/2
4.00 4.00
1/4 1/4
2.00 1/8 2.00 1/8
1.00 1/16 1.00 1/16
1/32 1/32
0.50 0.50
1/64 1/64
0.25 0.25
1/128 1/128
량(
리
처
술
산
일
케
스
그
로
량(
리
처
술
산
일
케
스
그
로
0.13 0.13
,SPO)M
,SPO)M
1/256 1/256
0.06 1/512 0.06 1/512
1/1024 1/1024
0.03 0.03
1 2 345678 9 10 11 12 13 14 15 16 1/2048 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1/2048
#태스크렛 #태스크렛
64.00 64.00
(c) FLOAT, ADD (1 DPU) 8 (d) FLOAT, MUL (1 DPU) 8
32.00 4 32.00 4
16.00 2 16.00 2
8.00 1 8.00 1
1/2 1/2
4.00 4.00
1/4 1/4
2.00 2.00
1/8 1/8
1.00 1/16 1.00 1/16
량(
리
처
술
산
일
케
스
그
로
0.13 0.13
,SPO)M
,SPO)M
1/256 1/256
0.06 1/512 0.06 1/512
0.03 1/1024 0.03 1/1024
1 2 345678 9 10 11 12 13 14 15 16 1/2048 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1/2048
#태스크렛 #태스크렛
그림 18: (a) 32비트 정수 추가, (b) 32비트 정수 곱셈, (c) 32비트 부동 소수점 추가 및 (d) 32비트 부동의 다양한 작업 강도에 대한 산술 처리량 대 태스크릿 수 포인
트 곱셈. 범례는 작동 강도 값(OP/B)을 보여줍니다. y축은 로그 스케일입니다.
시
행
실
간(
200
)sm
)sm
6000
4000 50 100
2000 0
1
1
4
4
61
61
46
46
히스토그램 크기(빈)
(ㅏ) #DPU (비) #DPU
36
Machine Translated by Google
16000
13760 SCAN‑SSA의 "Add", SCAN‑ RSS의 "DPU Reduction" + "DPU Scan")
12000
8000
및 호스트 CPU의 중간 스캔("Inter‑DPU")을 추가합니다.
4996
4000 1776년 2499 2654
528 576 768 1072 1392
기
주
행
실
288 304
0
유
소 1.4 6
유
소
유
소
유
소
의
나
하
의
나
하
의
나
하
의
나
하
DPU 간
벽
장
벽
장
벽
장
벽
장
1.2 DPU 스캔 5
나무 나무 나무 나무 1 DPU 추가/감소
4
2 4 8 16 0.8
삼
축소 버전(단일 태스크릿, 장벽 포함, 악수 포함) 0.6
#태스크렛
2
0.4
간(
시
행
실
간(
시
행
실
)sm
)sm
0.2 1
그림 21: 두 번째 단계에서 순차적 축소(SINGLE) 대 병렬 트리 기반 축소(BARRIER,
HANDS)의 효과 0 0
SSA RSS SSA RSS SSA RSS SSA RSS SSA RSS
RED 벤치마크 단계입니다.
2048년 4096 8192 16384 65536
스캔 버전 스캔 버전
배열이 큽니다. 그림 22는 세 가지의 실행 주기를 보여줍니다. 배열 크기 배열 크기
0.0E+00
유
소
유
소
유
소
의
나
하
의
나
하
의
나
하
의
나
하
벽
장
벽
장
벽
장
벽
장
유
소
유
소
유
소
의
나
하
의
나
하
의
나
하
의
나
하
벽
장
벽
장
벽
장
37
Machine Translated by Google
Juan Gómez‑Luna는 SAFARI Re‑의 수석 연구 그래프 처리, 포인터 추적 데이터 구조, 기계 등 새로운 애플리케이션의 하드웨
원이자 강사입니다. 어/소프트웨어 공동 설계에 대해 설명합니다.
그룹 @ ETH Zürich를 검색하세요. 그는 2001년 스 대규모 멀티코어 시스템 및 근거리 데이터와 같은 최신 컴퓨팅 패러다임을 사용하
페인 세비야 대학교 에서 통신 공학 학사 및 석사 학위 여 워크로드 및 희소 선형 대수학을 학습합니다.
를 받았으며 , 처리 아키텍처. 그녀는 ACM, ACM‑W 및
그리스 기술 회의소.
컴퓨터 과학 박사 학위
Geraldo F. Oliveira는 학사 학위를 받았습니다.
2012년 스페인 코르도바 대학교.
브라질 비코사 연방 비코사 대학교 에서 컴퓨터
2005년부터 2017년까지 그는 코르도바 대학교의 교수로 재직했습니다. 그의 연구 관심
공학 학위를 받았습니다 .
분야는 메모리 내 처리, 메모리 시스템, 이기종 컴퓨팅, 의료 영상 및 생물정보학의 하드웨
2015년에 컴퓨터 석사 학위를 취득했습니다.
어 및 소프트웨어 가속에 중점을 두고 있습니다. 그는 최초의 공개 벤치마크인
연방 대학교의 과학
PrIM(https://github.com/CMU‑SAFARI/prim‑benchmarks)의 주요 저자입니다.
리오그란지두술, 포르투알레그레, 브라질,
2017년. 2018년부터 활동 중이다.
박사 학위를 향해 Onur Mutlu 학위
실제 메모리 내 처리 아키텍처를 위한 제품군 및 Chai
스위스 취리히 소재 ETH 취리히에서. 그의
(https://github.com/chai‑benchmarks/chai), 벤치마크 제품군
현재 연구 관심 분야에는 시스템이 포함됩니다.
CPU/GPU/FPGA를 갖춘 이기종 시스템.
메모리 내 처리 지원 및
Izzat El Hajj 는 조교수입니다 메모리를 사용한 처리 아키텍처, 데이터 중심 가속기
컴퓨터공학과에서 신흥 애플리케이션, 근사 컴퓨팅 및 신흥을 위한
베이루트 아메리칸 대학교에서. 그 소비자 장치용 메모리 시스템. 그는 여러 출판물을 가지고 있습니다.
석사 및 박사 학위를 받았습니다. 전기에서 이 주제에 대해.
2018년 Cal 및 컴퓨터 공학
Onur Mutlu 는 ETH Zurich의 컴퓨터 과학 교수
일리노이 대학교 어바나‑샴페인 캠퍼스에서 Dan
입니다 . 그는 또한
학위를 받았습니다.
카네기 멜론 대학교 교수
Vivoli 기증 펠로십. 그 이전에,
그는 전기 및 공학 학사 학위를 받았습니다. 그가 이전에 재직했던 대학교
Strecker 조기 경력 교수직. 그의
2011년부터 컴퓨터공학과 현재 더 폭넓은 연구 관심 분야는
베이루트 아메리칸 대학교(American University of Beirut)
컴퓨터 아키텍처, 시스템, 하드웨어 보안 및 생
우수졸업생상을 받았습니다. 그의 연구 관심 분야 는 애플리케이션 가속화 및 프로그래밍
물정보학 분야. 그는 자신의 다양한 기술과 함
지원입니다.
께
특별한 관심을 갖고 있는 신흥 가속기와 추억
그룹 및 공동 작업자가 발명했습니다.
GPU 및 메모리 내 처리.
수년에 걸쳐 산업에 영향을 미쳤으며 상업용 마이크로
Ivan Fernandez는 학사 학위를 받았습니다. 프로세서 및
컴퓨터 공학과 그의 동의 메모리/스토리지 시스템. 그는 ECE에서 박사 학위와 석사 학위를 취득했습니다.
메카트로닉스 공학 석사 학위 텍사스 대학교 오스틴에서 학사 학위를 취득하고 앤아버 미시간 대학교에서 컴퓨터 공학
2017년 말라가대학교에서 및 심리학 학사 학위를 취득했습니다. 그는 컴퓨터 아키텍처 그룹을 시작했습니다.
각각 2018. 그는 현재 박사과정을 밟고 있습니다. 말
라가 대학교에서 학위를 취득했습니다. 그의 현재 연구 Microsoft Research(2006‑2009), Intel Corporation, Advanced Micro Devices,
38
Machine Translated by Google
39