KR101943999B1 - Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법 - Google Patents

Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법 Download PDF

Info

Publication number
KR101943999B1
KR101943999B1 KR1020170110621A KR20170110621A KR101943999B1 KR 101943999 B1 KR101943999 B1 KR 101943999B1 KR 1020170110621 A KR1020170110621 A KR 1020170110621A KR 20170110621 A KR20170110621 A KR 20170110621A KR 101943999 B1 KR101943999 B1 KR 101943999B1
Authority
KR
South Korea
Prior art keywords
cache
reuse distance
bypassing
cache line
accessed
Prior art date
Application number
KR1020170110621A
Other languages
English (en)
Inventor
한환수
홍성인
김현준
Original Assignee
성균관대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 성균관대학교 산학협력단 filed Critical 성균관대학교 산학협력단
Priority to KR1020170110621A priority Critical patent/KR101943999B1/ko
Application granted granted Critical
Publication of KR101943999B1 publication Critical patent/KR101943999B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Abstract

본 발명은 SM(Streaming Multiprocessor) 내의 접근하는 캐시 라인 단위로 재사용 거리를 측정한다. 측정한 재사용 거리와 L1 캐시의 크기를 고려하여 캐시 바이패싱을 적용할 warp의 수를 계산한다. 그리고 계산한 warp 수에 따라 PTX 코드 수준에서 캐시 바이패싱을 적용한다.

Description

GPU 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법{Method of cache Capacity aware Cache Bypassing on GPU Computing}
본 발명은 캐시 바이패싱 방법에 관한 것으로서, 구체적으로는 애플리케이션 분석을 통한 GPU 캐시 사용 최적화를 위한 캐시 바이패싱 방법에 관한 것이다.
GPU는 수 천 개의 쓰레드를 이용해 높은 병렬 처리 성능을 가지며, 메모리 접근 지연 시간을 줄이기 위해 메모리 계층 구조를 채택하고 있다. 하지만 많은 수의 쓰레드에 비해 불충분한 L1 캐시 메모리 용량과 제한적인 수의 메모리 자원을 가지고 있어, 대량의 메모리 접근 요청이 발생하면 특정 메모리 자원에 대한 요청이 집중되어 성능 저하가 발생한다. 따라서 GPU의 최대 성능을 얻기 위해서는 프로그래머가 하드웨어 구조에 대한 이해를 바탕으로 프로그래밍을 해야 하는데 이는 많은 노력과 비용을 필요로 한다.
이러한 문제점을 해결하기 위해 하드웨어 기반 캐시 바이패싱, warp 스케줄링 기법 등이 제안되었다. 하지만, 이 기술들은 하드웨어의 도움이 필요하여 하드웨어의 수정이 필요하다. 컴파일러 기반 캐시 바이패싱 또한 제안되었지만, 기존 기술은 명령어 단위로 바이패싱을 하기 때문에 많은 수의 쓰레드가 동시에 수행되는 GPU에서는 적합하지않다.
대한민국 공개특허공보 제10-2013-0135309호
본 발명의 목적은 높은 성능을 얻기 위해 지출해야 할 비용인 캐시에 대한 이해와 프로그래밍 복잡도를 낮출 수 있는 기술을 제안하여 GPU 프로그래밍의 생산성을 높이는 데 있다.
본 명세서에 기재된 해결과제는 이상에서 언급한 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명에 따른 캐시 바이패싱 방법은 (a) SM(Streaming Multiprocessor) 내의 접근하는 캐시 라인 단위로 재사용 거리를 측정하는 단계; (b) 측정한 재사용 거리와 L1 캐시의 크기를 고려하여 캐시 바이패싱을 적용할 warp의 수를 계산하는 단계; 및 (c) 계산한 warp 수에 따라 PTX 코드 수준에서 캐시 바이패싱하는 단계;를 포함한다.
본 발명의 일 실시예에 따르면, 상기 (a) 단계는, 처음 접근하는 캐시 라인의 재사용 거리는 무한대(-1)로 초기화하고, 해당 캐시 라인을 다시 접근할 때까지 접근한 유일한 캐시 라인 개수를 재사용 거리로 측정하는 단계이다.
이 경우, 상기 (a) 단계는, 중복된 캐시 라인을 접근하는 경우에는 재사용 거리가 증가하지 않는다.
본 발명의 일 실시예에 따르면, 상기 (c) 단계는 PTX 코드 단위 캐시 바이패싱하는 단계이다.
본 명세서의 일 실시예에 따르면, 상기 (b) 단계는, (b-1) 재사용이 되지 않는 모든 캐시 라인을 바이패싱하도록 결정하는 단계; (b-2) 재사용이 되지 않는 모든 캐시 라인을 제외하고 재사용 거리 측정 도구가 재사용 거리를 다시 측정하는 단계; 및 (b-3) 재사용 거리가 캐시 용량보다 큰 캐시 라인이 있는 경우, 해당 캐시 라인이 재사용될 때까지 접근한 캐시 라인들 중에서 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱하도록 결정하는 단계;를 포함한다.
구체적으로 상기 (c) 단계는, (c-1) 재사용이 되지 않는 모든 캐시 라인을 모두 바이패싱하도록 제안하는 방법은 중간 언어인 PTX 코드를 수정하는 단계; (c-2) Load 명령어가 접근하는 캐시 라인의 재사용 거리가 무한대(-1) 일 경우에 제안하는 방법이 해당 캐시 라인을 바이패싱하도록 해당 명령어에 cg 연산자를 추가하는 단계; (c-3) 재사용거리가 무한대인 모든 명령어에 대해 캐시 바이패싱을 적용한 후 재사용 거리 측정 도구가 재사용 거리를 다시 측정하는 단계; 및 (c-4) 재사용 거리가 캐시 용량보다 큰 캐시 라인이 있는 경우, 해당 캐시 라인이 재사용될 때까지 접근한 캐시 라인들 중에서 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱 하는 단계;를 포함한다.
또한, 상기 (c-4) 단계는 다음의 우선순위로 제안하는 방법이 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱하며, 선택된 캐시 라인을 요청하는 명령에 대해 {(재사용거리-캐시용량)/warp당_ 요청하는_캐시라인_수} 만큼의 warp에 캐시 바이패스 연산자를 적용한다.
1) 재사용 거리가 가장 높은 캐시라인
2) 1)에서 동률인 경우, warp당 요청하는 캐시 라인 수가 가장 많은 캐시 라인.
본 발명의 일 실시예에 따르면, 상기 (c) 단계는 수평 방식 캐시 바이패싱하는 단계이다.
본 발명에 따른 캐시 바이패싱 방법은 컴퓨터에서 각 단계들을 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터프로그램의 형태로 구현될 수 있다.
본 발명에 의해 높은 성능을 얻기위해 지출해야할 비용인 캐시에 대한 이해와 프로그래밍 복잡도를 낮출 수 있는 기술을 제안하여 GPU 프로그래밍의 생산성을 높일 수 있다.
본 명세서에 기재된 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 GTX 980에서 측정한 PolyBench/gpu 벤치마크 응용프로그램의 L1 캐시를 사용하지 않을 때와 사용할 때의 실행 시간을 비교한 그래프이다.
도 2는 PolyBench/gpu 벤치마크의 애플리케이션을 대상으로 재사용 거리를 측정하고 애플리케이션 별 가장 큰 재사용 거리이다.
도 3은 PolyBench/gpu 벤치마크의 애플리케이션 중 ATAX-1 커널에 대한 코드이다.
도 4는 재사용 거리를 이용한 캐시 바이패싱을 적용한 결과를 나타내고 있다.
이하, 첨부한 도면을 참조하여, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 설명한다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 이해할 수 있는 바와 같이, 후술하는 실시예는 본 발명의 개념과 범위를 벗어나지 않는 한도 내에서 다양한 형태로 변형될 수 있다. 가능한 한 동일하거나 유사한 부분은 도면에서 동일한 도면부호를 사용하여 나타낸다.
본 명세서에서 사용되는 전문용어는 단지 특정 실시예를 언급하기 위한 것이며, 본 발명을 한정하는 것을 의도하지는 않는다. 여기서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
본 명세서에서 사용되는 "포함하는"의 의미는 특정 특성, 영역, 정수, 단계, 동작, 요소 및/또는 성분을 구체화하며, 다른 특정 특성, 영역, 정수, 단계, 동작, 요소, 성분 및/또는 군의 존재나 부가를 제외시키는 것은 아니다.
본 명세서에서 사용되는 기술용어 및 과학용어를 포함하는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 일반적으로 이해하는 의미와 동일한 의미를 가진다. 사전에 정의된 용어들은 관련기술문헌과 현재 개시된 내용에 부합하는 의미를 가지는 것으로 추가 해석되고, 정의되지 않는 한 이상적이거나 매우 공식적인 의미로 해석되지 않는다.
최근 GPU는 수많은 코어의 높은 컴퓨팅 능력을 바탕으로 초기 설계 목적인 이미지 처리, 렌더링 뿐만 아니라 과학 기술, 기계 학습 등 범용 목적으로도 널리 사용되고 있다.
현대 GPU는 느린 전역 메모리 지연 시간을 완화하기 위해 레지스터 파일, L1 캐시 메모리, L2 캐시 메모리, 전역 메모리 등으로 구성된 다중 메모리 계층 구조를 채택하였다. 하지만, 범용 목적으로 GPU를 사용하면서 동시에 수행되는 수 많은 쓰레드들이 다수의 또는 불규칙적인 메모리 요청을 하게 되어 메모리 자원에 대한 집중으로 GPU의 최대 성능을 내지 못하고 있다. 특히, L1 캐시는 불충분한 크기와 제한된 메모리 자원(MSHR, miss queue 등)을 가지고 있어, 다수의 불규칙적인 메모리 접근 패턴을 보이는 GPGPU 애플리케이션에서는 L1 캐시를 사용하는 것이 성능 저하의 요인이 된다.
도 1은 GTX 980에서 측정한 PolyBench/gpu 벤치마크 응용프로그램의 L1 캐시를 사용하지 않을 때와 사용할 때의 실행 시간을 비교한 그래프이다.
ATAX-1, BICG-2 등 커널들은 L1 캐시를 사용할 때 실행 시간이 더 오래 걸린다. 위와 같은 문제를 해결하기 위해서 재사용 거리를 이용한 L1 캐시 바이패싱 기법을 제안한다. 재사용 거리는 실제 애플리케이션을 프로파일하여 측정한다.
본 발명에서는 캐시 용량을 고려하기 위해 재사용 거리를 이용한다. 따라서 메모리 접근 정보와 해당 정보를 이용하여 측정한 재사용 거리가 필요하다. 캐시 라인 단위 재사용 거리는 현재 접근하는 캐시 라인과 해당 캐시라인이 직전에 접근 되었던 사이의 접근한 서로 다른 캐시라인의 수를 의미한다. 재사용이 되지 않는 캐시 라인은 무한대(-1로 표현)를 재사용거리로 갖는다.
메모리 접근 정보를 추출하도록 수정한 사이클 정확도 기반 GPGPU 시뮬레이터가 애플리케이션에 대한 시뮬레이션을 실행하면서 메모리 접근 정보를 파일로 출력한다. 개발한 캐시 라인 단위 재사용 거리 측정 도구가 추출한 메모리 접근 정보를 입력으로 하여 캐시 라인마다 재사용 거리를 측정하여 결과를 파일로 출력한다.
처음 접근하는 캐시 라인의 재사용 거리는 무한대로 초기화하고, 해당 캐시 라인을 다시 접근할 때까지 접근한 유일한 캐시 라인 개수를 재사용 거리로 사용한다. 중복된 캐시 라인을 접근하는 경우에는 재사용 거리가 증가하지 않는다. 표 1은 캐시 라인 단위로 재사용 거리를 측정한 예시이다. 캐시 라인은 128B이고, A는 4B 자료형 배열이다.
Figure 112017084407803-pat00001
<표 1 재사용 거리 측정 예시>
도 2는 PolyBench/gpu 벤치마크의 애플리케이션을 대상으로 재사용 거리를 측정하고 애플리케이션 별 가장 큰 재사용 거리이다.
L1 캐시의 크기가 16KB일때 캐시 라인 크기가 128B임을 고려하면 최대 128라인까지 데이터를 캐싱할 수 있다. ATAX-1의 경우 재사용 거리가 256인 캐시 라인이 있고 이는 128보다 크기 때문에 capacity miss가 발생할 수 있다.
본 발명의 목표는 애플리케이션이 접근하는 모든 캐시 라인의 재사용 거리가 캐시 용량보다 작도록 캐시 바이패싱을 적용하는 것이다. 그 이유는 재사용 거리가 캐시 용량보다 큰 경우, 비둘기집 원리에 의해 적어도 그 차이 이상의 캐시 라인이 쫓겨나게 되어 캐시 미스를 유발하기 때문이다. 캐시 미스를 최소화하기 위하여 캐시 용량보다 큰 재사용 거리를 갖는 캐시 라인이 존재하지 않도록 선택적 캐시 바이패싱을 적용한다.
본 발명에서는 측정한 재사용 거리가 L1에 캐싱할 수 있는 최대 라인 수보다 클 경우 일부 쓰레드들은 L1 캐시를 바이패싱하도록 하여 재사용 거리를 줄여 capacity miss를 최소화하고, 수평 방식 캐시 바이패싱을 하여 L1 메모리 자원에 대한 집중 해소를 목적으로 한다.
본 명세서의 일 실시예에 따르면, 상기 정한 재사용 거리와 L1 캐시의 크기를 고려하여 캐시 바이패싱을 적용할 warp의 수를 계산하는 과정은, 재사용이 되지 않는 모든 캐시 라인을 바이패싱하도록 결정하고, 재사용이 되지 않는 모든 캐시 라인을 제외하고 재사용 거리 측정 도구가 재사용 거리를 다시 측정하고, 재사용 거리가 캐시 용량보다 큰 캐시 라인이 있는 경우, 해당 캐시 라인이 재사용될 때까지 접근한 캐시 라인들 중에서 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱할 수 있다. 그 다음으로 결정된 바이패싱 대상 명령어에 cg 연산자를 추가하여 중간 언어인 PTX 코드를 수정한다.
본 발명에서 제안하는 캐시 바이패싱은 GPU 프로그램의 중간 언어인 PTX 코드에서 캐시 연산자를 이용하여 선택적 캐시 바이패싱을 적용한다. load 명령어에 ca(L1/L2 모두 캐싱), cg(L2만 캐싱) 연산자를 추가하여 선택적 캐시 바이패싱을 적용한다. 선택적 캐시 바이패싱은 두 단계로 구성된다. 먼저, 재사용이 되지 않는 모든 캐시 라인을 모두 바이패싱하도록 제안하는 방법은 중간 언어인 PTX 코드를 수정한다. Load 명령어가 접근하는 캐시 라인의 재사용 거리가 무한대(-1) 일 경우에 제안하는 방법이 해당 캐시 라인을 바이패싱하도록 해당 명령어에 cg 연산자를 추가한다. 재사용거리가 무한대인 모든 명령어에 대해 캐시 바이패싱을 적용한 후 재사용 거리 측정 도구가 재사용 거리를 다시 측정한다. 이때는 재사용 거리를 측정하는 도구가 이전에 추출한 메모리 접근 정보를 바탕으로 재사용 거리를 다시 측정할 수 있기 때문에 메모리 접근 정보를 다시 추출할 필요가 없다.
다음으로 재사용 거리가 캐시 용량보다 큰 캐시 라인이 있는 경우, 해당 캐시 라인이 재사용될 때까지 접근한 캐시 라인들 중에서 다음과 같은 우선순위로 제안하는 방법이 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱을 적용하며, 선택된 캐시 라인을 요청하는 명령에 대해 {(재사용거리-캐시용량)/warp당_ 요청하는_캐시라인_수} 만큼의 warp에 캐시 바이패스 연산자를 적용한다.
1) 재사용 거리가 가장 높은 캐시라인. 2) 1)에서 동률인 경우, warp당 요청하는 캐시 라인 수가 가장 많은 캐시 라인.
제안하는 방법의 과정이 완료되면 캐시 바이패싱이 적용된 캐시 사용 최적화 중간 언어 PTX 코드가 생성된다. 생성된 PTX 코드를 nvcc 컴파일러가 컴파일 과정을 통해 실행 가능한 GPU 프로그램을 생성한다.
Nvidia PTX ISA는 명령어 단위로 전역 메모리 읽기에 대한 캐시 연산자를 제공한다. 본 발명에서는 제공하는 캐시 연산자와 쓰레드 ID를 이용하여 PTX 코드를 수정하여 캐시 바이패싱을 적용하였다. '.ca' 연산자는 전역 메모리 읽기에 대해 모든 단계의 캐싱을 하는 연산자이고, 'cg' 연산자는 L1 캐시를 바이패싱하는 연산자이다. 'cg' 연산자를 사용해 L1 캐시를 바이패싱하게 되면 메모리 요청이 L1 캐시를 거치지 않고 L2 캐시로 전달된다. 이때, 만약 L1 캐시에서 miss가 발생했다면 같은 캐시 라인에 대한 메모리 요청이 있는 지 MSHR을 확인하고 없다면 MSHR을 할당하는 과정을 생략하게 된다.
동시에 다수의 쓰레드들이 수행되는 GPU의 특성에 따라서, 특정 전역 메모리 읽기 명령어를 바이패싱하는 수직 방식 캐시 바이패싱과 특정 쓰레드들에 대해서 바이패싱하는 수평 방식 캐시 바이패싱이 있다. 수평 방식 캐시 바이패싱을 적용하면 동시에 L1 캐시를 사용하는 쓰레드 수를 줄일 수 있어 L1 캐시 메모리 자원에 대한 집중을 해소시킬 수 있기 때문에 본 발명에서는 수평 방식 캐시 바이패싱을 적용하였다.
도 3은 PolyBench/gpu 벤치마크의 애플리케이션 중 ATAX-1 커널에 대한 코드이다.
쓰레드블록의 크기가 256으로 SM에 총 8개의 warp가 실행되고 A의 재사용 거리는 256이다. 이때 warp 하나에 대해 바이패싱을 적용하게 되면 A의 재사용 거리는 32만큼 줄어든 224가 된다. 이와 같은 방식으로 재사용 거리를 이용하여 바이패싱할 warp의 수를 결정한다.
<실험 자료>
GPGPU-Sim[5] (버전 3.2.1)을 이용하여 PolyBench/gpu 벤치마크 애플리케이션에 대한 메모리 접근 정보를 추출하여 재사용 거리를 측정하였다. 측정한 재사용 거리를 이용하여 바이패싱할 warp의 수를 구하고, PTX 코드를 수정하여 GPGPU-Sim에서 성능을 측정하였다.
실험 환경 및 벤치마크로서, GPGPU-Sim 설정은 제공하는 GTX 480의 기본 설정에 L1 캐시/공유 메모리의 크기를 각각 16KB와 48KB로 설정하였다. PolyBench/gpu 벤치마크 애플리케이션 중 재사용 거리가 128보다 큰 애플리케이션들에 대해서 캐시 바이패싱을 적용하였다.
표 2는 시뮬레이터의 설정, 표 3은 PolyBench/gpu의 설명을 나타내고 있다.
Figure 112017084407803-pat00002
<표 2 시뮬레이터 설정>
Figure 112017084407803-pat00003
<표 3 애플리케이션 설정>
도 4는 재사용 거리를 이용한 캐시 바이패싱을 적용한 결과를 나타내고 있다.
세로축은 IPC를 나타내고 있고, 가로축은 애플리케이션 커널을 의미한다. 표면이 채워진 그래프는 L1 캐시를 사용한 결과이고, 내부가 빈 그래프는 캐시 바이패싱을 적용한 결과이다. 평균 26.65% 정도의 성능 향상이 있었고, 최대 34.25%의 성능 향상을 보였다.
본 명세서에서 설명되는 실시예와 첨부된 도면은 본 발명에 포함되는 기술적 사상의 일부를 예시적으로 설명하는 것에 불과하다. 따라서, 본 명세서에 개시된 실시예들은 본 발명의 기술적 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이므로, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아님은 자명하다. 본 발명의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시 예는 모두 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (9)

  1. (a) SM(Streaming Multiprocessor) 내의 접근하는 캐시 라인 단위로 재사용 거리를 측정하는 단계; (b) 측정한 재사용 거리와 L1 캐시의 크기를 고려하여 캐시 바이패싱을 적용할 warp의 수를 계산하는 단계; 및 (c) 계산한 warp 수에 따라 PTX 코드 수준에서 캐시 바이패싱 하는 단계를 포함하며,
    상기 (c) 단계는, PTX 코드 단위 캐시 바이패스하는 단계이며,
    상기 (c) 단계는, (c-1) 재사용이 되지 않는 모든 캐시 라인을 모두 바이패싱하도록 제안하는 방법은 중간 언어인 PTX 코드를 수정하는 단계; (c-2) Load 명령어가 접근하는 캐시 라인의 재사용 거리가 무한대(-1) 일 경우에 제안하는 방법이 해당 캐시 라인을 바이패스하도록 해당 명령어에 cg 연산자를 추가하는 단계; (c-3) 재사용거리가 무한대인 모든 명령어에 대해 캐시 바이패싱을 적용한 후 재사용 거리 측정 도구가 재사용 거리를 다시 측정하는 단계; 및 (c-4) 재사용 거리가 캐시 용량보다 큰 캐시 라인이 있는 경우, 해당 캐시 라인이 재사용될 때까지 접근한 캐시 라인들 중에서 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱하는 단계를 포함하며,
    상기 (c-4) 단계는 다음의 우선순위로 제안하는 방법이 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱 하며, 선택된 캐시 라인을 요청하는 명령에 대해 {(재사용거리-캐시용량)/warp당_ 요청하는_캐시라인_수} 만큼의 warp에 캐시 바이패스 연산자를 적용하는 것을 특징으로 하는 캐시 바이패싱 방법.
    1) 재사용 거리가 가장 높은 캐시라인
    2) 1)에서 동률인 경우, warp당 요청하는 캐시 라인 수가 가장 많은 캐시 라인.
  2. 청구항 1에 있어서,
    상기 (a) 단계는, 처음 접근하는 캐시 라인의 재사용 거리는 무한대로 초기화하고, 해당 캐시 라인을 다시 접근할 때까지 접근한 유일한 캐시 라인 개수를 재사용 거리로 측정하는 단계인 것을 특징으로 하는 캐시 바이패싱 방법.
  3. 청구항 2에 있어서,
    상기 (a) 단계는, 중복된 캐시 라인을 접근하는 경우에는 재사용 거리가 증가하지 않는 것을 특징으로 하는 캐시 바이패싱 방법.
  4. 청구항 1에 있어서,
    상기 (b) 단계는,
    (b-1) 재사용이 되지 않는 모든 캐시 라인을 바이패싱하도록 결정하는 단계;
    (b-2) 재사용이 되지 않는 모든 캐시 라인을 제외하고 재사용 거리 측정 도구가 재사용 거리를 다시 측정하는 단계; 및
    (b-3) 재사용 거리가 캐시 용량보다 큰 캐시 라인이 있는 경우, 해당 캐시 라인이 재사용될 때까지 접근한 캐시 라인들 중에서 캐시 라인을 선택하여 load 명령어에 캐시 바이패싱하도록 결정하는 단계;를 포함하는 것을 특징으로 하는 캐시 바이패싱 방법.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 청구항 1에 있어서,
    상기 (c) 단계는, 수평 방식 캐시 바이패스하는 단계인 것을 특징으로 하는 캐시 바이패싱 방법.
  9. 컴퓨터에서 청구항 1 내지 청구항 4 및 청구항 8 중 어느 한 청구항에 따른 방법의 각 단계들을 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터프로그램.
KR1020170110621A 2017-08-31 2017-08-31 Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법 KR101943999B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170110621A KR101943999B1 (ko) 2017-08-31 2017-08-31 Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170110621A KR101943999B1 (ko) 2017-08-31 2017-08-31 Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법

Publications (1)

Publication Number Publication Date
KR101943999B1 true KR101943999B1 (ko) 2019-01-30

Family

ID=65276538

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170110621A KR101943999B1 (ko) 2017-08-31 2017-08-31 Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법

Country Status (1)

Country Link
KR (1) KR101943999B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090182944A1 (en) * 2008-01-10 2009-07-16 Miguel Comparan Processing Unit Incorporating L1 Cache Bypass
KR20130135309A (ko) 2011-02-10 2013-12-10 퀄컴 인코포레이티드 그래픽 프로세싱을 위한 데이터 저장 어드레스 할당

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090182944A1 (en) * 2008-01-10 2009-07-16 Miguel Comparan Processing Unit Incorporating L1 Cache Bypass
KR20130135309A (ko) 2011-02-10 2013-12-10 퀄컴 인코포레이티드 그래픽 프로세싱을 위한 데이터 저장 어드레스 할당

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANG LI 외 3인. Adaptive and Transparent Cache Bypassing for GPUs. Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis. 2015.11.15. 1부.* *
CEDRIC NUGTEREN 외 3인. A Detailed GPU Cache Model Based on Reuse Distance Theory. Proceedings of the IEEE 20th International Symposium on High Performance Computer Architecture (HPCA). 2014.02.15. 1부.* *
SPARSH MITTAL. A Survey of Cache Bypassing Techniques. JOURNAL OF LOW POWER ELECTRONICS APPLICATIONS. 2016.04. 1부.* *

Similar Documents

Publication Publication Date Title
Meng et al. Training deeper models by GPU memory optimization on TensorFlow
Chen et al. Adaptive cache management for energy-efficient GPU computing
Spafford et al. The tradeoffs of fused memory hierarchies in heterogeneous computing architectures
Peng et al. Rthms: A tool for data placement on hybrid memory system
Hestness et al. GPU computing pipeline inefficiencies and optimization opportunities in heterogeneous CPU-GPU processors
US20140181477A1 (en) Compressing Execution Cycles For Divergent Execution In A Single Instruction Multiple Data (SIMD) Processor
Chen et al. Flow-guided file layout for out-of-core pathline computation
Serpa et al. Optimizing machine learning algorithms on multi-core and many-core architectures using thread and data mapping
CN112130901A (zh) 基于risc-v的协处理器、数据处理方法及存储介质
Kim et al. Automatically exploiting implicit pipeline parallelism from multiple dependent kernels for gpus
CN102810133B (zh) 网络游戏中的射线查询方法和场景服务器
KR20200049775A (ko) 재구성 가능한 캐시 아키텍처 및 캐시 일관성을 위한 방법
Van Lunteren et al. Coherently attached programmable near-memory acceleration platform and its application to stencil processing
KR101943999B1 (ko) Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법
Luo et al. Compositional model of coherence and NUMA effects for optimizing thread and data placement
Mariano et al. Analyzing and improving memory access patterns of large irregular applications on numa machines
KR101980999B1 (ko) 쓰레드 그룹 레벨의 캐시 바이패싱 방법 및 장치
Ribeiro et al. Evaluating CPU and memory affinity for numerical scientific multithreaded benchmarks on multi-cores
Machina et al. Predicting cache needs and cache sensitivity for applications in cloud computing on cmp servers with configurable caches
Laurenzano et al. A static binary instrumentation threading model for fast memory trace collection
Pavan et al. Improving performance and energy efficiency of geophysics applications on GPU architectures
Kiani et al. Skerd: Reuse distance analysis for simultaneous multiple gpu kernel executions
Nozal et al. Towards co-execution of massive data-parallel OpenCL kernels on CPU and Intel Xeon Phi
Paul et al. Improving efficiency of embedded multi-core platforms with scratchpad memories
Busse et al. Analyzing resource interdependencies in multi-core architectures to improve scheduling decisions

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant