KR101957855B1 - 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법 - Google Patents

스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법 Download PDF

Info

Publication number
KR101957855B1
KR101957855B1 KR1020160157130A KR20160157130A KR101957855B1 KR 101957855 B1 KR101957855 B1 KR 101957855B1 KR 1020160157130 A KR1020160157130 A KR 1020160157130A KR 20160157130 A KR20160157130 A KR 20160157130A KR 101957855 B1 KR101957855 B1 KR 101957855B1
Authority
KR
South Korea
Prior art keywords
data
prefetch
memory
scratch pad
prefetch target
Prior art date
Application number
KR1020160157130A
Other languages
English (en)
Other versions
KR20180058332A (ko
Inventor
한환수
김현준
홍성인
Original Assignee
성균관대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 성균관대학교 산학협력단 filed Critical 성균관대학교 산학협력단
Priority to KR1020160157130A priority Critical patent/KR101957855B1/ko
Publication of KR20180058332A publication Critical patent/KR20180058332A/ko
Application granted granted Critical
Publication of KR101957855B1 publication Critical patent/KR101957855B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

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

Abstract

본 명세서는 GPU 내 L1 캐시에서 강제 손실을 빈번하게 일으키는 데이터를 스크래치패드 메모리에 프리페치하여 캐시 메모리의 강제 손실로 인해 증가하는 오버 헤드를 줄일 수 있는 메모리 제어 장치 및 방법을 개시한다. 본 명세서에 따른 메모리 제어 장치 및 방법에 따르면, 데이터를 캐싱하여 빠르게 데이터에 접근하여 사용할 수 있으며, 대량의 데이터를 한번에 미리 읽어오면 GPU의 메모리의 밴드위스(bandwidth)를 충분히 활용하여 빈번하게 발생하는 메모리 지연시간으로 인한 오버헤드를 최소화할 수 있다.

Description

스크래치패드에 데이터 프리페치를 통해 GPU 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법{MEMORY CONTROL APPARATUS FOR OPTIMIZING GPU MEMORY ACCESS THROUGH PRE-PATCHED SCRATCHPAD MEMORY DATA AND CONTROL METHOD THEREOF}
본 발명은 메모리 제어 장치 및 그 메모리 제어 방법에 관한 것으로서, 구체적으로는 스크래치패드에 데이터 프리페치를 통해 GPU 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법에 관한 것이다.
그래픽 처리 장치(Graphics Processing Unit, GPU)는 중앙 처리 장치(Central Processing Unit, CPU)와 같이 다중 단계의 캐시 메모리(Cache Memory) 구조를 가지고 있다.
도 1은 일반적인 GPU의 아키텍처이다.
도 1을 참조하면, GPU가 n개의 SIMD를 포함하는 것을 확인할 수 있다. SIMD(Single Instruction Multiple Data)란, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식의 병렬 프로세서 종류이다. 상기 SIMD를 GPU 제조사마다 서로 다른 이름으로 부르기도 한다. NVIDIA®에서는 Stream Multiprocessor, AMD®에서는 Compute Unit이라고 부른다. NVIDIA®의 최근 제품인 GTX980®에는 상기와 같은 SIMD가 총 16개 존재하고 있고, 각 SIMD 내부에는 4개의 warp 스케쥴러, 각 스케줄러마다 32개의 CUDA core가 있으며 8개의 로드/스토어 유닛, Special Functional Unit이 있다. 다만, 이에 대한 내용은 본 명세서에서 설명하고자 하는 내용과 직접적인 연관성이 높지 않아서 보다 자세한 설명은 생략하겠다. 따라서 도 1에는 본 명세서에서 설명하고자 하는 내용과 연관성이 높은 구성만을 간략하게 도시한 것이다.
상기 SIMD는 레지스터(Register), 스크래치패드 메모리(Scratchpad memory 또는 Shared Memory), L1 캐시(L1 cache) 및 ROM(Read Only Memory)를 포함할 수 있다. 상기 n개의 SIMD는 L2 캐시(L2 cache) 및 전역 메모리(Global Memory, DRAM)를 공유할 수 있다. 일 예로, 상기 L1 캐시는 SIMD마다 48KB, L2 캐시는 2MB의 크기를 가질 수 있다. 오른쪽 점선 밖은 주기억장치(Main memory)는 CPU에 연결된 메모리로서, 상기 SIMD와 연결된다.
상기 메모리들이 존재하는 위치에 따라 온-칩(on-chip) 메모리와 오프-칩(off-chip) 메모리로 구분될 수 있다. 레지스터, L1 캐시, L2 캐시, ROM(Read-only memory) 및 스크래치패드 메모리는 온-칩 메모리이다. 전역메모리(Global memory)는 오프-칩 메모리이다.
한편, 상기 L1 캐시는 CPU와 동일하게 강제 손실(Compulsory miss), 용량 손실(Capacity miss) 및 충돌 손실(Conflict miss) 총 3가지 형태의 손실(miss)이 존재할 수 있으며, 캐시 손실(cache miss) 발생 시에 L2 캐시와 전역 메모리에 필요한 데이터를 요청하도록 설계 되어 있다. GPU는 계산에 필요한 데이터를 오프-칩의 전역메모리에 저장한다. 하지만, 오프-칩 메모리인 전역메모리로부터 데이터를 가져오기 위한 지연시간은 온-칩 메모리보다 10-100배 긴 것은 자명하다.
이를 해소하기 위해 GPU에서는 다중 레벨의 캐시(L1 캐시 및 L2 캐시)를 이용하여 지역성과 일시성을 고려한 데이터 재사용 패턴에서 이득을 보고자 한다. 하지만 강제 손실(Compulsory miss)이 빈번하게 발생하는 애플리케이션의 패턴에서는 매번 L2 캐시와 전역메모리에 데이터를 요청하고 기다려야 하는 오버헤드가 여전히 존재한다.
대한민국 공개특허공보 제10-2015-0092440호
본 명세서에 따른 메모리 제어 장치 및 방법은 캐시 메모리의 강제 손실로 인해 증가하는 오버 헤드를 줄이고자 한다.
본 명세서에 기재된 해결과제는 이상에서 언급한 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상술한 목적을 해결하기 위한 본 명세서에 따른 메모리 제어 장치는, GPU 커널에서 요청되는 메모리주소를 수집하는 GPU 커널 분석 모듈; L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 프리페치 대상 결정 모듈; 및 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사하는 프리페치 실행 모듈;을 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 프리페치 대상 결정 모듈은 L1 캐시에 저장된 데이터의 재사용이 없이 전역메모리에 데이터를 로드하는 메모리 접근 패턴을 통해 강제 손실이 발생하는지 판단할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 프리페치 대상 결정 모듈은 L1 캐시에서 강제 손실(Compulsory miss)이 2회 이상 발생하는 데이터를 프리페치 대상 데이터로 결정할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 메모리 제어 장치는, 상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하는지 여부를 계산하는 프리페치 데이터량 산출 모듈;을 더 포함할 수 있다. 이 경우, 상기 프리페치 실행 모듈은 상기 프리페치 후보 데이터의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사할 수 있다.
본 명세서의 다른 실시예에 따르면, 상기 메모리 제어 장치는, 상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양이 아래 수식을 초과하는지 여부를 계산하는 프리페치 데이터량 산출 모듈;을 더 포함할 수 있다.
(SM당 사용 가능한 스크래치패드 메모리의 크기) / (SM당 스케쥴링 된 쓰레드 블락의 개수)
이 경우, 상기 프리페치 실행 모듈은 상기 수식의 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사할 수 있다.
상술한 목적을 해결하기 위한 본 명세서에 따른 메모리 제어 방법은, (a) GPU 커널 분석 모듈이 GPU 커널에서 요청되는 메모리주소를 수집하는 단계; (b) 프리페치 대상 결정 모듈이 L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 단계; 및 (c) 프리페치 실행 모듈이 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사하는 단계;를 포함할 수 있다.
상술한 목적을 해결하기 위한 본 명세서에 따른 메모리 제어 방법은, 컴퓨터에서 각 단계들을 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터프로그램이 될 수 있다.
본 명세서에 따른 메모리 제어 장치 및 방법에 따르면, 데이터를 캐싱하여 빠르게 데이터에 접근하여 사용할 수 있으며, 대량의 데이터를 한번에 미리 읽어오면 GPU의 메모리의 밴드위스(bandwidth)를 충분히 활용하여 빈번하게 발생하는 메모리 지연시간으로 인한 오버헤드를 최소화할 수 있다
본 명세서에 기재된 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 일반적인 GPU의 아키텍처이다.
도 2은 본 명세서의 일 실시예에 따른 메모리 제어 장치의 구성을 간략하게 도시한 블록도이다.
도 3은 본 명세서의 다른 실시예에 따른 메모리 제어 장치의 구성을 간략하게 도시한 블록도이다.
도 4는 본 명세서의 일 실시예에 따른 메모리 제어 방법의 흐름도이다.
이하, 첨부한 도면을 참조하여, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 설명한다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 이해할 수 있는 바와 같이, 후술하는 실시예는 본 발명의 개념과 범위를 벗어나지 않는 한도 내에서 다양한 형태로 변형될 수 있다. 가능한 한 동일하거나 유사한 부분은 도면에서 동일한 도면부호를 사용하여 나타낸다.
본 명세서에서 사용되는 전문용어는 단지 특정 실시예를 언급하기 위한 것이며, 본 발명을 한정하는 것을 의도하지는 않는다. 여기서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
본 명세서에서 사용되는 "포함하는"의 의미는 특정 특성, 영역, 정수, 단계, 동작, 요소 및/또는 성분을 구체화하며, 다른 특정 특성, 영역, 정수, 단계, 동작, 요소, 성분 및/또는 군의 존재나 부가를 제외시키는 것은 아니다.
본 명세서에서 사용되는 기술용어 및 과학용어를 포함하는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 일반적으로 이해하는 의미와 동일한 의미를 가진다. 사전에 정의된 용어들은 관련기술문헌과 현재 개시된 내용에 부합하는 의미를 가지는 것으로 추가 해석되고, 정의되지 않는 한 이상적이거나 매우 공식적인 의미로 해석되지 않는다.
한편, 본 명세서에 따른 메모리 제어 장치 및 그 메모리 제어 방법은 GPU 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법이다. 따라서, 본 명세서에 따른 메모리 제어 장치 및 그 메모리 제어 방법을 설명함에 있어서, GPU의 각 구성 요소들이 언급될 수 있다. 상기 GPU의 각 구성은 앞서 도 1을 참조하여 '발명의 배경이 되는 기술'에서 상세히 설명된 내용을 원용하며, 반복적인 설명은 생략하도록 하겠다.
이하에서는 도면을 중심으로 본 명세서에 따른 메모리 제어 장치 및 그 메모리 제어 방법을 설명하고자 한다.
도 2은 본 명세서의 일 실시예에 따른 메모리 제어 장치의 구성을 간략하게 도시한 블록도이다.
도 2를 참조하면, 본 명세서의 일 실시예에 따른 메모리 제어 장치(100)는 GPU 커널 분석 모듈(110), 프리페치 대상 결정 모듈(130) 및 프리페치 실행 모듈(150)을 포함한다.
상기 GPU 커널 분석 모듈(110)은 GPU 커널(kernel)에서 요청되는 메모리주소를 수집할 수 있다. 상기 GPU 커널 분석 모듈(110)은 'Georgia tech. ®'에서 개발하고 공개한 'GPUOcelot'을 이용하여 GPU 커널(kernel)에서 요청되는 메모리주소를 수집할 수 있다.
상기 프리페치 대상 결정 모듈(130)은 L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치(pre-patch) 대상 데이터로 결정할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 프리페치 대상 결정 모듈(130)은 L1 캐시에 저장된 데이터의 재사용이 없이 전역메모리에 데이터를 로드하는 메모리 접근 패턴을 통해 강제 손실이 발생하는지 판단할 수 있다. 즉, 상기 프리페치 대상 결정 모듈(130)은 데이터의 재사용이 없어 캐시히트가 발생하지 않는 패턴이 발생하는지 판단한다.
본 명세서의 일 실시예에 따르면, 상기 프리페치 대상 결정 모듈(130)은 L1 캐시에서 강제 손실(Compulsory miss)이 2회 이상 발생하는 데이터를 프리페치 대상 데이터로 결정할 수 있다. 그러나 상기 횟수는 일 예시에 불과하면, 상기 횟수는 다양하게 설정될 수 있음은 자명하다.
상기 프리페치 실행 모듈(150)은 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사할 수 있다.
한편, 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사하는 제어 로직을 코드 레벨에서 해당 데이터를 스크래치패드 메모리에 복사하고, 복사된 데이터를 이용하여 계산하는데 사용되도록 수정하는 작업이 필요할 수 있다. 상기 '소스코드 레벨에서의 수정'은 이렇게 소스코드 레벨에서 소스코드를 특정 규칙에 맞게 변환하는 기술을 소스-투-소스 변환 (Source-to-source transformation)를 의미한다. 보다 상세하게, 기존에 전역 메모리에서 로드를 하도록 작성되어 있는 소스코드(강제 손실이 있는)를 미리 해당 데이터를 스크래치패드 메모리에 로드하도록 하는 코드를 앞에 추가하고, 전역 메모리 로드하는 코드는 미리 로드한 스크래치패드 메모리로부터 데이터를 로드하도록 변경 하는 작업이 될 수 있다.
도 3은 본 명세서의 다른 실시예에 따른 메모리 제어 장치의 구성을 간략하게 도시한 블록도이다.
본 명세서의 다른 실시예에 따르면, 상기 메모리 제어 장치(100)는 프리페치 데이터량 산출 모듈(140)을 더 포함할 수 있다.
상기 프리페치 데이터량 산출 모듈(140)은 상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양, 즉 프리페치 후보 데이터들을 합산하여 그 총 데이터의 크기를 계산할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 프리페치 데이터량 산출 모듈(140)은 상기 프리페치 후보 데이터들의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하는지 여부를 계산할 수 있다. 이 경우, 상기 프리페치 실행 모듈(150)은 상기 프리페치 후보 데이터의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사할 수 있다.
본 명세서의 다른 실시예에 따르면, 상기 프리페치 데이터량 산출 모듈(140)은 상기 프리페치 후보 데이터의 양이 아래 수식을 초과하는지 여부를 계산할 수 있다.
<수학식 1>
(SIMD당 사용 가능한 스크래치패드 메모리의 크기) / (SIMD당 스케쥴링 된 쓰레드 블락(thread block)의 개수)
이 경우, 상기 프리페치 실행 모듈(150)은 상기 수식의 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사할 수 있다.
상기 프리페치 데이터량 산출 모듈(140)은 스크래치패드 메모리에 프리페치할 데이터의 적정한 양을 산출하기 위함이다. 프리페치되는 데이터의 크기는 스크래치패드 메모리의 전체 크기 내에서 정하는 것이 바람직하다. 예를 들어, 강제 손실(Compulsory miss)을 발생하는 명령어들에 대해 하나의 명령어에서 요청하는 데이터의 개수와 그 다음 명령어에서 요청하는 데이터의 개수를 더하며, 그 합이 스크래치패드 메모리의 크기를 초과하지 않는 범위 내로 정한다.
또한, 스크래치패드 메모리에 프리페치할 데이터양은 해당 SIMD에 할당된 warp들의 개수를 고려하여 병렬화를 해치지 않는 정도로 정하는 것이 바람직하다. 프리페치 후보 데이터들은 그 다음 명령어들을 순회하면서 실행가능(active)하게 할당된 쓰레드 블락(thread block)개수가 제한되기 전까지 계속 더해갈 수 있다. GPU에서는 쓰레드에서 공유하는 자원에 대해 충돌(contention)이 발생하게 되면 실제 코드상에서 명시한 쓰레드의 개수보다 적은 수의 쓰레드만이 스케쥴링되도록 제한되어 병렬성을 해치는 경우가 발생할 수 있다. 이때 대표적인 공유하는 자원으로는 스크래치패드 메모리와 레지스터가 될 수 있다. 이를 수식화 하면, 상기 수학식 1과 같이 된다. 따라서, 명령어들을 순회하면서 프리페치 할 데이터가 상기 수학식 1에서 나온 값을 초과할 경우, 그 전까지의 데이터를 프리페치 하는 것이 바람직하다. 그 이후부터는 새롭게 프리페치할 데이터를 재계산할 수 있다.
이하에서는 본 명세서에 따른 메모리 제어 방법에 대해서 설명하도록 하겠다. 다만, 본 명세서에 따른 메모리 제어 방법을 설명함에 있어서, 상술한 메모리 제어 장치를 참조하여 설명하도록 하겠다. 따라서, 상기 메모리 제어 장치의 각 구성에 대한 설명이 반복은 생략하도록 하겠다.
도 4는 본 명세서의 일 실시예에 따른 메모리 제어 방법의 흐름도이다.
단계 S100에서, 상기 GPU 커널 분석 모듈(110)은 GPU 커널에서 요청되는 메모리주소를 수집할 수 있다.
단계 S110에서, 상기 프리페치 대상 결정 모듈(130)은 L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치 대상 데이터로 결정할 수 있다. 이때, 프리페치 대상 결정 모듈(130)은 L1 캐시에 저장된 데이터의 재사용이 없이 전역메모리에 데이터를 로드하는 메모리 접근 패턴을 통해 강제 손실이 발생하는지 판단할 수 있다. 또한, 상기 미리 설정된 기준은 2회 이상일 수 있다.
본 명세서에 따른 메모리 제어 방법은 단계 S120을 더 포함할 수 있다.
단계 S120에서, 프리페치 데이터량 산출 모듈(140)은 상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양을 계산할 수 있다.
본 명세서의 일 실시예에 따르면, 프리페치 데이터량 산출 모듈(140)은 상기 프리페치 후보 데이터의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하는지 여부를 계산할 수 있다.
본 명세서의 다른 실시예에 따르면, 프리페치 데이터량 산출 모듈(140)은 상기 프리페치 후보 데이터의 양이 상기 프리페치 후보 데이터의 양이 상기 수학식 1을 초과하는지 여부를 계산할 수 있다.
단계 S130에서, 프리페치 실행 모듈(150)은 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 프리페치 실행 모듈(150)은 이 상기 수식의 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사할 수 있다.
본 명세서의 다른 실시예에 따르면, 상기 프리페치 실행 모듈(150)은 상기 수학식 1의 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사할 수 있다.
상기 GPU 커널 분석 모듈, 프리페치 대상 결정 모듈 및 프리페치 실행 모듈은 상술한 제어 로직을 실행하기 위해 본 발명이 속한 기술분야에 알려진 프로세서, ASIC(application-specific integrated circuit), 다른 칩셋, 논리 회로, 레지스터, 통신 모뎀, 데이터 처리 장치 등을 포함할 수 있다. 또한, 상술한 제어 로직이 소프트웨어로 구현될 때, 상기 GPU 커널 분석 모듈, 프리페치 대상 결정 모듈 및 프리페치 실행 모듈은 프로그램 모듈의 집합으로 구현될 수 있다. 이 때, 프로그램 모듈은 메모리 기기에 저장되고, 프로세서에 의해 실행될 수 있다. 이때 상기 GPU 커널 분석 모듈, 프리페치 대상 결정 모듈 및 프리페치 실행 모듈은 프로그램의 소스코드 레벨에서 함수 단위를 모듈이 될 수 있다.
한편, 강제 손실이 반복적으로 반복문 안에서 발생하는 패턴의 경우, 루프-언롤링을 통해 일반적으로 알려진 성능 이득을 기대할 수 있기 때문에 루프-언롤링을 적용하여 스크래치패드 메모리에 데이터를 복사하고, 그 데이터를 읽어와 사용하도록 코드를 수정할 수 있다. 상기 루프-언롤링이란, 반복문 내에서 동작하는 코드를 풀어 내는 작업을 통해 컴파일러 레벨에서 최적화 이득을 얻고자 사용하는 기술이다. 본 명세서에서 루프-언롤링이란 스크래치패드 메모리에 쓰고자 하는 데이터를 호출하는 소스코드가 반복문 내에 위치하면 해당 반복문을 루프-언롤링하고 풀어진 반복문에 대해 소스코드 레벨에서의 코드 변환을 적용할 수 있다는 것을 의미한다.
본 명세서에서 설명되는 실시예와 첨부된 도면은 본 발명에 포함되는 기술적 사상의 일부를 예시적으로 설명하는 것에 불과하다. 따라서, 본 명세서에 개시된 실시예들은 본 발명의 기술적 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이므로, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아님은 자명하다. 본 발명의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시 예는 모두 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 메모리 제어 장치
110 : GPU 커널 분석 모듈
130 : 프리페치 대상 결정 모듈
150 : 프리페치 실행 모듈

Claims (11)

  1. GPU 커널에서 요청되는 메모리주소를 수집하는 GPU 커널 분석 모듈; L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 프리페치 대상 결정 모듈; 및 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사하는 프리페치 실행 모듈;을 포함하며,
    상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하는지 여부를 계산하는 프리페치 데이터량 산출 모듈;을 더 포함하고,
    상기 프리페치 실행 모듈은, 상기 프리페치 후보 데이터의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사하는 것을 특징으로 하는 메모리 제어 장치.
  2. GPU 커널에서 요청되는 메모리주소를 수집하는 GPU 커널 분석 모듈; L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 프리페치 대상 결정 모듈; 및 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사하는 프리페치 실행 모듈;을 포함하며,
    상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양이 아래 수식을 초과하는지 여부를 계산하는 프리페치 데이터량 산출 모듈;을 더 포함하고,
    (SM당 사용 가능한 스크래치패드 메모리의 크기) / (SM당 스케쥴링 된 쓰레드 블락의 개수)
    상기 프리페치 실행 모듈은, 상기 수식의 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사하는 것을 특징으로 하는 메모리 제어 장치.
  3. 청구항 1 또는 청구항 2에 있어서,
    상기 프리페치 대상 결정 모듈은,
    L1 캐시에 저장된 데이터의 재사용이 없이 전역메모리에 데이터를 로드하는 메모리 접근 패턴을 통해 강제 손실이 발생하는지 판단하는 것을 특징으로 하는 메모리 제어 장치.
  4. 청구항 1 또는 청구항 2에 있어서,
    상기 프리페치 대상 결정 모듈은, L1 캐시에서 강제 손실(Compulsory miss)이 2회 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 것을 특징으로 하는 메모리 제어 장치.
  5. 삭제
  6. (a) GPU 커널 분석 모듈이 GPU 커널에서 요청되는 메모리주소를 수집하는 단계; (b) 프리페치 대상 결정 모듈이 L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 단계; 및 (c) 프리페치 실행 모듈이 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사하는 단계;를 포함하며,
    (c-1) 프리페치 데이터량 산출 모듈이 상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하는지 여부를 계산하는 단계;를 더 포함하고,
    상기 (c-1) 단계는, 상기 프리페치 실행 모듈이 상기 프리페치 후보 데이터의 양이 상기 스크래치패드 메모리의 전체 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사하는 단계인 것을 특징으로 하는 메모리 제어 방법.
  7. (a) GPU 커널 분석 모듈이 GPU 커널에서 요청되는 메모리주소를 수집하는 단계; (b) 프리페치 대상 결정 모듈이 L1 캐시에서 강제 손실(Compulsory miss)이 미리 설정된 기준 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 단계; 및 (c) 프리페치 실행 모듈이 상기 프리페치 대상 데이터로 결정된 데이터들을 스크래치패드 메모리에 복사하는 단계;를 포함하며,
    (c-2) 프리페치 데이터량 산출 모듈이 상기 프리페치 대상 데이터로 결정된 데이터들(이하 '프리페치 후보 데이터')의 양이 아래 수식을 초과하는지 여부를 계산하는 단계;를 더 포함하고,
    (SM당 사용 가능한 스크래치패드 메모리의 크기) / (SM당 스케쥴링 된 쓰레드 블락의 개수)
    상기 (c-2) 단계는, 상기 프리페치 실행 모듈이 상기 수식의 크기를 초과하기 이전까지의 프리페치 후보 데이터들을 상기 스크래치패드 메모리에 복사하는 것을 특징으로 하는 메모리 제어 방법.
  8. 청구항 6 또는 청구항 7에 있어서,
    상기 (b) 단계는, 프리페치 대상 결정 모듈이 L1 캐시에 저장된 데이터의 재사용이 없이 전역메모리에 데이터를 로드하는 메모리 접근 패턴을 통해 강제 손실이 발생하는지 판단하는 단계인 것을 특징으로 하는 메모리 제어 방법.
  9. 청구항 6 또는 청구항 7에 있어서,
    상기 (b) 단계는, 프리페치 대상 결정 모듈이 L1 캐시에서 강제 손실(Compulsory miss)이 2회 이상 발생하는 데이터를 프리페치 대상 데이터로 결정하는 것을 특징으로 하는 메모리 제어 방법.
  10. 삭제
  11. 컴퓨터에서 청구항 6 또는 청구항 7에 따른 메모리 제어 방법의 각 단계들을 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터프로그램.
KR1020160157130A 2016-11-24 2016-11-24 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법 KR101957855B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160157130A KR101957855B1 (ko) 2016-11-24 2016-11-24 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160157130A KR101957855B1 (ko) 2016-11-24 2016-11-24 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법

Publications (2)

Publication Number Publication Date
KR20180058332A KR20180058332A (ko) 2018-06-01
KR101957855B1 true KR101957855B1 (ko) 2019-03-13

Family

ID=62635229

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160157130A KR101957855B1 (ko) 2016-11-24 2016-11-24 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법

Country Status (1)

Country Link
KR (1) KR101957855B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210090442A (ko) 2020-01-10 2021-07-20 전남대학교산학협력단 L1 데이터 캐시의 바이패스 방법 및 장치
KR20230083836A (ko) 2021-12-03 2023-06-12 국민대학교산학협력단 Sha-3 처리를 위한 그래픽 처리 장치 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102142498B1 (ko) * 2018-10-05 2020-08-10 성균관대학교산학협력단 Gpu 커널 정적 분석을 통해 gpu 프리패치를 수행하기 위한 gpu 메모리 제어장치 및 제어방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102100161B1 (ko) 2014-02-04 2020-04-14 삼성전자주식회사 Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
C. Nugteren et al, "A Detailed GPU Cache Model Based on Reuse Distance Theory", 2014 IEEE 20th International Symposium on High Performance Computer Architecture(2014.02.)*
C. Nugteren, "Improving the Programmability of GPU Architectures"(2014.)*
X. Xie et al, "Coordinated Static and Dynamic Cache Bypassing for GPUs", 2015 IEEE 21st International Symposium on High Performance Computer Architecture, pp. 76-88(2015.02.)*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210090442A (ko) 2020-01-10 2021-07-20 전남대학교산학협력단 L1 데이터 캐시의 바이패스 방법 및 장치
KR20230083836A (ko) 2021-12-03 2023-06-12 국민대학교산학협력단 Sha-3 처리를 위한 그래픽 처리 장치 및 방법

Also Published As

Publication number Publication date
KR20180058332A (ko) 2018-06-01

Similar Documents

Publication Publication Date Title
US9652230B2 (en) Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
Jia et al. MRPB: Memory request prioritization for massively parallel processors
US7805582B2 (en) Method of managing memory in multiprocessor system on chip
Papaefstathiou et al. Prefetching and cache management using task lifetimes
WO1998027492A1 (en) Cache hierarchy management with locality hints for different cache levels
GB2508962A (en) Retention priority based cache replacement policy
KR101957855B1 (ko) 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법
US11232035B2 (en) Memory controller with pre-loader
US11893266B2 (en) Method and apparatus for adaptive page migration and pinning for oversubscribed irregular applications
CN110959154A (zh) 用于线程本地存储数据访问的私有高速缓存
JP2009528612A (ja) データ処理システム並びにデータ及び/又は命令のプリフェッチ方法
TW201621671A (zh) 在多記憶體存取代理器動態更新硬體預取特性為互斥或共享的裝置與方法
US20230169007A1 (en) Compression aware prefetch
Kim et al. Automatically exploiting implicit pipeline parallelism from multiple dependent kernels for gpus
US20130151783A1 (en) Interface and method for inter-thread communication
US20220114097A1 (en) System performance management using prioritized compute units
KR20240023642A (ko) 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합
Wang et al. Incorporating selective victim cache into GPGPU for high‐performance computing
Garside et al. Wcet preserving hardware prefetch for many-core real-time systems
KR101334189B1 (ko) 멀티 프로세서 시스템 온 칩에서의 메모리 관리 방법
Dai et al. Racb: Resource aware cache bypass on gpus
Candel et al. Improving GPU Cache Hierarchy Performance with a Fetch and Replacement Cache
Abbaspour et al. Efficient context switching for the stack cache: Implementation and analysis
Sumikawa et al. Global load instruction aggregation based on code motion
KR101943999B1 (ko) Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법

Legal Events

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