KR20210090442A - L1 데이터 캐시의 바이패스 방법 및 장치 - Google Patents

L1 데이터 캐시의 바이패스 방법 및 장치 Download PDF

Info

Publication number
KR20210090442A
KR20210090442A KR1020200003729A KR20200003729A KR20210090442A KR 20210090442 A KR20210090442 A KR 20210090442A KR 1020200003729 A KR1020200003729 A KR 1020200003729A KR 20200003729 A KR20200003729 A KR 20200003729A KR 20210090442 A KR20210090442 A KR 20210090442A
Authority
KR
South Korea
Prior art keywords
cache
data cache
warp
bypass
threshold
Prior art date
Application number
KR1020200003729A
Other languages
English (en)
Other versions
KR102451605B1 (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 KR1020200003729A priority Critical patent/KR102451605B1/ko
Publication of KR20210090442A publication Critical patent/KR20210090442A/ko
Application granted granted Critical
Publication of KR102451605B1 publication Critical patent/KR102451605B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter

Landscapes

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

Abstract

본 발명은 L1 데이터 캐시의 바이패스 방법 및 장치에 관한 것이다. 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 방법은, (a) 워프에 대한 메모리 요청에 따라 L1 데이터 캐시를 모니터링하는 단계; 및 (b) 상기 L1 데이터 캐시에 대한 캐시 미스 레이트(cache miss rate) 및 상기 워프에 대한 워프 점유율(warp occupancy)에 기반하여 상기 L1 데이터 캐시의 액세스 여부를 결정하는 단계;를 포함할 수 있다.

Description

L1 데이터 캐시의 바이패스 방법 및 장치{A method and apparatus for L1 data cache bypassing}
본 발명은 L1 데이터 캐시의 바이패스 방법 및 장치에 관한 것으로, 더욱 상세하게는 캐시 미스 레이트(cache miss rate) 및 워프 점유율(warp occupancy)에 기반하는 L1 데이터 캐시의 바이패스 방법 및 장치에 관한 것이다.
GPU는 수 천 개의 쓰레드를 이용해 높은 병렬 처리 성능을 가지며, 메모리 접근 지연 시간을 줄이기 위해 메모리 계층 구조를 채택하고 있다. 하지만 메모리 접근 시간을 줄이고자 채택한 L1 데이터 캐시는 일부 애플리케이션을 수행할 때 오히려 성능을 저하시키는 원인이 된다. L1 데이터 캐시에서 미스가 발생하면 캐시에 대한 접근 사이클만큼 데이터 전달은 지연되므로 오히려 GPU의 성능이 저하된다. 따라서 일부 GPU 구조는 L1 데이터 캐시를 채택하지 않기도 한다.
따라서 GPU의 최대 성능을 얻기 위해서는 프로그래머가 L1 데이터 캐시에 대한 이해를 바탕으로 프로그래밍을 해야 하는데 이는 많은 노력과 비용을 필요로 한다.
이러한 문제점을 해결하기 위해 다양한 캐시 바이패스, 워프 스케줄링 기법 등이 제안되었으나, 효율성을 높이기 위한 연구는 미흡한 실정이다.
[특허문헌 1] 한국등록특허 제10-1957855호
본 발명은 전술한 문제점을 해결하기 위하여 창출된 것으로, L1 데이터 캐시의 바이패스 방법 및 장치를 제공하는 것을 그 목적으로 한다.
또한, 본 발명은 제1 스테이지에서 캐시 미스 레이트(cache miss rate)에 기반하여 L1 데이터 캐시의 액세스 여부를 결정하고, 제2 스테이지에서 워프 점유율(warp occupancy)에 기반하여 L1 데이터 캐시의 액세스 여부를 결정하기 위한 바이패스 방법 및 장치를 제공하는 것을 그 목적으로 한다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 명확하게 이해될 수 있을 것이다.
상기한 목적들을 달성하기 위하여, 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 방법은 (a) 워프에 대한 메모리 요청에 따라 L1 데이터 캐시를 모니터링하는 단계; 및 (b) 상기 L1 데이터 캐시에 대한 캐시 미스 레이트(cache miss rate) 및 상기 워프에 대한 워프 점유율(warp occupancy)에 기반하여 상기 L1 데이터 캐시의 액세스 여부를 결정하는 단계;를 포함할 수 있다.
실시예에서, 상기 (b) 단계는, 상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제1 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않는 단계; 및 상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제2 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스하는 단계;를 포함할 수 있다.
실시예에서, 상기 (b) 단계는, 상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 상기 제1 임계값보다 작고 상기 제2 임계값보다 큰 경우, 상기 워프에 대한 워프 점유율이 제3 임계값보다 큰지 여부에 따라 상기 L1 데이터 캐시의 액세스 여부를 결정하는 단계;를 포함할 수 있다.
실시예에서, 상기 (b) 단계는, 상기 워프에 대한 워프 점유율이 제3 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않는 단계; 및 상기 워프에 대한 워프 점유율이 상기 제3 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스하는 단계;를 포함할 수 있다.
실시예에서, 상기 (a) 단계는, 미리 결정된 샘플링 기간(sampling period) 동안 상기 워프에 대한 메모리 요청에 따라 상기 L1 데이터 캐시를 모니터링하는 단계;를 포함할 수 있다.
실시예에서, L1 데이터 캐시의 바이패스 장치는 워프에 대한 메모리 요청에 따라 L1 데이터 캐시를 모니터링하고, 상기 L1 데이터 캐시에 대한 캐시 미스 레이트(cache miss rate) 및 상기 워프에 대한 워프 점유율(warp occupancy)에 기반하여 상기 L1 데이터 캐시의 액세스 여부를 결정하는 SM(streaming multiprocessor);를 포함할 수 있다.
실시예에서, 상기 SM은, 상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제1 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않고, 상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제2 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스할 수 있다.
실시예에서, 상기 SM은, 상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 상기 제1 임계값보다 작고 상기 제2 임계값보다 큰 경우, 상기 워프에 대한 워프 점유율이 제3 임계값보다 큰지 여부에 따라 상기 L1 데이터 캐시의 액세스 여부를 결정할 수 있다.
실시예에서, 상기 SM은, 상기 워프에 대한 워프 점유율이 제3 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않고, 상기 워프에 대한 워프 점유율이 상기 제3 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스할 수 있다.
실시예에서, 상기 SM은, 미리 결정된 샘플링 기간(sampling period) 동안 상기 워프에 대한 메모리 요청에 따라 상기 L1 데이터 캐시를 모니터링할 수 있다.
상기한 목적들을 달성하기 위한 구체적인 사항들은 첨부된 도면과 함께 상세하게 후술될 실시예들을 참조하면 명확해질 것이다.
그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라, 서로 다른 다양한 형태로 구성될 수 있으며, 본 발명의 개시가 완전하도록 하고 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, "통상의 기술자")에게 발명의 범주를 완전하게 알려주기 위해서 제공되는 것이다.
본 발명의 일 실시예에 의하면, 제1 스테이지에서 캐시 미스 레이트(cache miss rate)에 기반하여 L1 데이터 캐시의 액세스 여부를 결정하고, 제2 스테이지에서 워프 점유율(warp occupancy)에 기반하여 L1 데이터 캐시의 액세스 여부를 결정함으로써, 바이패스 결정 정확도를 향상시킬 수 있다.
본 발명의 효과들은 상술된 효과들로 제한되지 않으며, 본 발명의 기술적 특징들에 의하여 기대되는 잠정적인 효과들은 아래의 기재로부터 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 GPU의 기능적 구성을 도시한 도면이다.
도 2a는 본 발명의 일 실시예에 따른 IPC 성능 그래프를 도시한 도면이다.
도 2b는 본 발명의 일 실시예에 따른 L1 데이터 캐시의 캐시 미스 레이트 그래프를 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 L1 데이터 캐시에 대한 처리량 및 지연시간의 예를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 캐시 미스 레이트의 범위를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 방법을 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 다른 L1 데이터 캐시의 바이패스 방법을 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 장치의 기능적 구성을 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따른 서로 다른 임계값에 대한 캐시 미스 레이트 기반 바이패스의 성능 그래프를 도시한 도면이다.
도 9는 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 성능 그래프를 도시한 도면이다.
도 10은 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 요청의 퍼센트 그래프를 도시한 도면이다.
도 11은 본 발명의 일 실시예에 따른 L1 데이터 캐시의 캐시 미스 레이트의 비교 그래프를 도시한 도면이다.
도 12는 본 발명의 일 실시예에 따른 다양한 제3 임계값에 대한 IPC 성능 그래프를 도시한 도면이다.
본 발명은 다양한 변경을 가할 수 있고, 여러 가지 실시예들을 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세히 설명하고자 한다.
청구범위에 개시된 발명의 다양한 특징들은 도면 및 상세한 설명을 고려하여 더 잘 이해될 수 있을 것이다. 명세서에 개시된 장치, 방법, 제법 및 다양한 실시예들은 예시를 위해서 제공되는 것이다. 개시된 구조 및 기능상의 특징들은 통상의 기술자로 하여금 다양한 실시예들을 구체적으로 실시할 수 있도록 하기 위한 것이고, 발명의 범위를 제한하기 위한 것이 아니다. 개시된 용어 및 문장들은 개시된 발명의 다양한 특징들을 이해하기 쉽게 설명하기 위한 것이고, 발명의 범위를 제한하기 위한 것이 아니다.
본 발명을 설명함에 있어서, 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다.
이하, 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 방법 및 장치를 설명한다.
도 1은 본 발명의 일 실시예에 따른 GPU(100)의 기능적 구성을 도시한 도면이다.
도 1을 참고하면, GPU(100)는 다중 스트리밍 멀티프로세서(streaming multiprocessor, SM)(110), 상호 연결 네트워크(interconnection network)(120), L2 캐시 파티션(130) 및 글로벌 메모리(140)를 포함할 수 있다.
각 SM(110)은 여러 코어(core)로 정수 및 부동 소수점 명령어를 실행할 수 있다. 프로그래밍 모델과 관련하여 단일 프로그램 커널은 여러 스레드(thread)에 의해 실행될 수 있다. 여기서, 모든 스레드는 명령을 실행하는 워프 (warp)로 그룹화될 수 있다. SM 파이프라인의 스레드는 워프 레벨에서 관리될 수 있다. 페치 및 디코드 스테이지(fetch and decode stage)로부터의 출력 데이터는 워프에 대응하는 명령 버퍼 엔트리에 저장될 수 있다.
SM(110)의 워프 스케줄러는 워프 명령이 유효하고 데이터 위험이 없는 워프를 선택하여 발행(issue)할 수 있다. L2 캐시 파티션(130)은 L2 캐시의 일부가 있으며, DRAM 컨트롤러는 여러 SM이 공유할 수 있다.
또한 GPU 애플리케이션에는 시간적 또는 공간적 위치와 같은 데이터 위치가 있기 때문에 각 SM(110)에는 온칩 메모리가 있어 긴 액세스 지연 시간을 감소시킬 수 있다. 캐시에 저장된 데이터를 재사용하면 글로벌 메모리(140)의 액세스 지연 시간을 줄여 GPU 성능을 향상시킬 수 있다.
여기서, 글로벌 메모리(140)는 DRAM 메모리 또는 이와 동등한 기술적 의미를 갖는 용어로 지칭될 수 있다.
GPU 메모리 시스템은 주로 높은 처리량(throughput)을 고려하여 설계될 수 있다. 예를 들어, 요청 통합(request coalescing) 기술은 중복된 데이터 요청 수를 줄일 수 있다. 또한 동일한 미스 요청(miss request)이 MSHR에서 감지된 다음 동일한 항목에 병합될 수 있다. 따라서 메모리 대역폭은 이러한 유형의 기술에 의해 보존될 수 있다.
그러나 GPU(100)의 특성상 캐시에서 여러 개의 미스 요청이 동시에 생성되면 제한된 캐시 리소스가 쉽게 포화되기 때문에 파이프라인 중단이 발생할 수 있다. 그러면 메모리 명령을 실행하는 워프를 더 이상 발행할 수 없다.
GPU 생성은 높은 대역폭의 상호 연결 네트워크와 캐시 구조를 사용하여 이러한 종류의 스톨(stall)을 완화하기 위해 수행될 수 있다. 처리량을 높이기 위해 GPU(100)는 섹터 캐시를 사용할 수 있다. 섹터 캐시는 각 캐시 라인의 공간을 나누고 캐시 블록 크기보다 작은 크기의 데이터가 전송될 수 있다.
결과적으로 낮은 수준으로 전송되는 요청 수를 줄일 수 있다. 따라서 섹터 캐시는 메모리 집약적 및 메모리 분산 워크로드에 더 효과적일 수 있다. 또한 GPU(100)는 MSHR 항목과 같은 거대한 캐시 리소스가 있어 많은 수의 미스 요청을 동시에 처리할 수 있다.
도 1을 참고하면, GPU(100)는 SM(110), 상호 연결 네트워크(120), L2 캐시 파티션(130) 및 글로벌 메모리(140)를 포함할 수 있다. 본 발명의 다양한 실시 예들에서 GPU(100)는 도 1에 설명된 구성들이 필수적인 것은 아니어서, 도 1에 설명된 구성들보다 많은 구성들을 가지거나, 또는 그보다 적은 구성들을 가지는 것으로 구현될 수 있다.
도 2a는 본 발명의 일 실시예에 따른 IPC 성능 그래프를 도시한 도면이다.
도 2a를 참고하면, GPU에서 캐시 메모리는 다양한 액세스 패턴으로 표시되는 워크로드(workload)에서 로컬성(locality)을 캡처하는데 사용될 수 있다. 일반적으로 캐시 크기를 늘리면 캐시 효율성이 향상될 수 있다.
그러나, 작업 세트(working set)가 매우 큰 경우, 캐시 크기가 증가해도 캐시 효율성이 향상되지 않을 수 있다. 또한 캐시 크기가 증가함에 따라 액세스 지연 시간(access latency)과 전력 소비(power consumption)가 증가할 수 있다. 따라서 일부 GPU는 온칩 메모리의 효율성이 제한되어 L1 데이터 캐시를 비활성화(disable)할 수 있다.
이 경우, 도 2a를 참고하면, 데이터 캐시를 사용하지 않는 GPU(L1D off)의 IPC(Instructions per Cycles)를 기준(baseline) 아키텍처와 비교할 수 있다.
L1 데이터 캐시는 여전히 많은 벤치 마크(benchmark)(예 : SPMV, BT 및 STC)의 성능 향상에 도움이 될 수 있다. 예를 들어, SPMV 및 STC는 L1 데이터 캐시가 비활성화될 때 성능이 약 25% 정도 심각하게 저하됨을 확인할 수 있다. 따라서 GPU가 이러한 종류의 벤치 마크를 실행할 때 캐시를 적극적으로 사용하는 것이 유리할 수 있다.
반대로 GPU에서 다른 벤치 마크를 실행할 때 L1 데이터 캐시를 바이패스하면 성능이 향상될 수 있다. 특히, JCB1D 벤치 마크는 온칩 메모리를 사용하지 않을 때 26%의 성능 향상을 달성함을 확인할 수 있다. 따라서 벤치 마크의 특성에 따라 캐시의 유무가 전반적인 GPU 성능에 상당한 영향을 미침을 확인할 수 있다.
도 2b는 본 발명의 일 실시예에 따른 L1 데이터 캐시의 캐시 미스 레이트 그래프를 도시한 도면이다.
도 2b를 참고하면, 8개 벤치 마크에서 캐시 미스 레이트(cache miss rate)를 확인할 수 있다. 이 경우, 벤치 마크는 평균적으로 높은 미스 레이트를 보여줌을 확인할 수 있다.
예를 들어, 시뮬레이션된 벤치 마크에서 가장 낮은 미스 레이트는 55%일 수 있다. 캐시 미스가 발생하면, 하위 메모리(lower memory)에 액세스하기 위한 추가 주기(additional cycle)가 필요하므로 성능이 저하될 수 있다. L1 데이터 캐시를 사용할 때 성능 저하를 나타내는 SPMV, BT 및 STC 벤치 마크는 상대적으로 낮은 미스 레이트를 나타낼 수 있다.
캐시 미스 레이트는 캐시에 대한 워크로드의 선호도(affinity)를 반영하므로, 캐시 미스 레이트로 캐시 이점(cache benefit)을 예측할 수 있다. 그러나 STC 벤치 마크에서 LUD 벤치 마크와 유사한 미스 레이트를 표시하더라도, 이러한 벤치 마크에 대한 캐시 사용의 성능 영향은 서로 대조될 수 있다.
이 경우, 캐시 미스 레이트가 캐시 효율성을 평가하기 위해 합리적인 메트릭(metric)이지만, 캐시가 워크로드에 유리한지 여부를 판단하기에는 단일 메트릭으로서의 캐시 미스 레이트는 적절하지 않을 수 있다.
따라서, 본 발명의 다양한 실시예에 따르면, 워크로드의 특성을 파악하여 동적으로 L1 데이터 캐시를 바이패스할 수 있다.
도 3은 본 발명의 일 실시예에 따른 L1 데이터 캐시에 대한 처리량 및 지연시간의 예를 도시한 도면이다.
도 3을 참고하면, 캐시의 효율성(efficiency)은 미스 레이트에 의해 결정될 수 있다. L1 데이터 캐시에서 메모리 요청이 발생하면, 요청된 데이터를 준비하는 처리 시간(processing time)은 L1 데이터 캐시에 대한 액세스 지연 시간(access latency)을 포함할 수 있다.
L1 데이터 캐시에 저장된 캐시 라인(cache line)의 태그(tag)를 확인하기 위해 주기(cycle)를 수행할 수 있다. 미스가 발생하면, 하위 레벨 메모리에 액세스하기 위해 처리 시간이 지연될 수 있다. L1 데이터 캐시에서 미스될 것으로 예상되는 메모리 요청이 L2 캐시로 미리 전송되면, L1 데이터 캐시에서 캐시 라인의 태그를 확인하기 위한 액세스 지연 시간이 저장될 수 있다.
따라서 캐시 히트(cache hit)로 인한 게인(gain)이 L1 데이터 캐시에 액세스하여 발생하는 페널티보다 큰 경우 GPU 성능이 향상될 수 있다. 그러나 메모리 명령(memory instruction)에 대한 전체 실행 주기(execution cycle)는 캐시 미스 레이트로만 예측할 수 없다.
GPU에서 동시 스레드가 많은 병렬 처리(parallelism)는 캐시의 이점에 크게 영향을 미칠 수 있다. 따라서 각 요청에 대한 캐시 미스 레이트와 특정 시간 동안의 메모리 요청 수를 나타내는 처리량을 예측할 수 있으면, L1 데이터 캐시를 사용한 성능 향상을 정확하게 예측할 수 있다.
이 경우, 도 3을 참고하면, 워프 스테이지(warp stage)에서 요청된 데이터가 메모리 계층(memory hierarchy)을 통해 서비스되는 바이패스 플로우(300)를 확인할 수 있다.
워프 스케줄러(310)가 발행한 메모리 명령은 각 스레드에 대한 메모리 요청을 생성하고 L1 데이터 캐시로 전송될 수 있다.
이 경우, 통합 유닛(coalescing unit)(320) 이후의 메모리 명령에 대한 처리 시간(processing time)은 수평 인자(horizontal factor)로서 표시되며, 이는 L1 데이터 캐시(330)에서 캐시 미스 레이트에 의해 변화될 수 있다.
처리량은 일정 기간 동안 겹치는 메모리 요청의 양을 나타내는 수직 요소(vertical factor)로 표시될 수 있다. 여러 메모리 요청이 동시에 발생하면 이러한 요청의 액세스 지연 시간이 중첩될 수 있다. 따라서 많은 수의 메모리 요청이 동시에 발생하는 워크로드는 L1 데이터 캐시(330)에 대한 액세스 지연 시간에 작은 페널티가 있다.
본 발명의 다양한 실시예에 따르면, 캐시 성능 저하에 대한 L1 데이터 캐시(330)의 기여도를 추정하기 위해, 캐시 미스 레이트와 병렬 처리(parallelism)가 함께 고려될 수 있다. 예측된 캐시 이점(cache benefit)에 따라, L1 데이터 캐시(330)가 선택적으로 바이패스(bypassing)되는 경우 GPU 성능이 향상될 수 있다.
평균 지연 시간이 낮거나 처리량이 많으면 캐시를 효율적으로 활용할 수 있다. 반대로, 메모리 요청의 평균 액세스 지연 시간이 길거나 처리량이 낮은 경우 캐시 효율성이 좋지 않다. 캐시의 처리량을 예측하기 위해 본 발명에 따른 바이패스 기술은 워프 발행 스테이지(warp issue stage)에서 TLP(Thread-Level Parallelism)를 사용할 수 있다.
도 4는 본 발명의 일 실시예에 따른 캐시 미스 레이트의 범위를 도시한 도면이다.
도 4를 참고하면, 데이터 로컬성이 높더라도 병목 현상 문제가 심각할 때 리소스가 충분히 활용되지 않을 수 있다. 따라서 GPU 성능에 대한 캐시 이점은 캐시 미스 레이트로만 예측할 수 없다.
따라서, 본 발명의 다양한 실시예에 따르면, 2-단계 의사 결정 접근 방식을 채택한 새로운 바이패스 기술이 제안된다.
첫 번째 단계는 캐시 친화성(cache friendliness)에 대해 비교적 명확한 특성을 가진 워크로드를 포함할 수 있다. 이 경우, 캐시 미스 레이트를 모니터링하여 높은(high) 미스 레이트 워크로드와 낮은(low) 미스 레이트를 분류할 수 있다. L1 데이터 캐시의 효율성은 데이터 위치가 있는 개별 스레드 또는 워프 레벨 요청을 감지하지 않고 샘플링 방법으로 추정될 수 있다.
캐시 미스 레이트가 100%에 가까운 워크로드는 일반적으로 캐시 사용의 이점을 얻지 못할 수 있다. 본 발명의 다양한 실시예에 따르면, 이러한 종류의 작업에 대한 바이패스 결정을 쉽게 내릴 수 있다. 재참조된(re-referenced) 블록의 수가 재참조되지 않고 제거된 블록의 수보다 많은 경우, L1 데이터 캐시에 대한 액세스를 허용하면 성능을 향상시킬 수 있다. 그러나, L1 데이터 캐시의 미스 레이트가 워크로드 특성을 나타내는 합리적인 측정 기준이지만, 캐시 미스 레이트는 GPU 성능에만 비례하지 않을 수 있다.
따라서, 도 4를 참고하면, 본 발명의 다양한 실시예에 다른 바이패스 방식은 세 가지 유형의 캐시 미스 레이트를 고려할 수 있다. 예를 들어, 워크로드의 L1D 미스 레이트를 각 워프의 미스 레이트 범위를 분류하는 방식과 같이 세 가지 범위로 분류할 수 있다.
제1 임계값보다 높은 캐시 미스 레이트를 가진 워크로드는 후속 사이클에 대한 바이패스를 트리거할 수 있다. 이 범위는 높은 캐시 미스 레이트(high-miss-rate) 범위로 분류될 수 있다. 여기서, 제1 임계값은 높은 임계값(thresholdH) 또는 이와 동등한 기술적 의미를 갖는 용어로 지칭될 수 있다.
제2 임계값보다 낮은 캐시 미스 레이트를 가진 워크로드는 캐시 친화적 워크로드를 의미할 수 있다. 이 범위는 낮은 캐시 미스 레이트(low-miss-rate) 범위로 분류될 수 있다. 여기서, 제2 임계값은 낮은 임계값(thresholdL) 또는 이와 동등한 기술적 의미를 갖는 용어로 지칭될 수 있다.
캐시 미스 레이트가 제1 임계값보다 작고 제2 임계값보다 큰 경우, 모호한 미스 레이트(ambiguous- miss-rate) 범위에 해당하며, 다음 단계에서 다른 메트릭을 사용하여 다시 추정해야 한다.
예를 들어, 모호한 미스 레이트 범위를 결정하는 제1 임계값과 제2 임계값은 시뮬레이션된 많은 벤치 마크의 결과를 반영하여 각각 0.5와 0.9로 설정될 수 있다. 일 실시예에서, 바이패스 기간을 제외한 간격으로 샘플링하여 캐시 미스 레이트를 모니터링할 수 있다.
일 실시예에서, 벤치 마크에 따라 다양한 커널 크기가 표시될 수 있다. 그러나 주기 기반 샘플링 기간(cycle-based sampling period)이 캐시의 로컬성을 캡처하기에 너무 짧은 경우, 실제 캐시 효율성과 비교하여 미스 레이트 정보가 정확하지 않을 수 있다.
도 5는 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 방법을 도시한 도면이다.
도 5를 참고하면, S501 단계는, 워프에 대한 메모리 요청에 따라 L1 데이터 캐시를 모니터링하는 단계이다. 일 실시예에서, 미리 결정된 샘플링 기간(sampling period) 동안 워프에 대한 메모리 요청에 따라 L1 데이터 캐시를 모니터링할 수 있다.
S503 단계는, L1 데이터 캐시에 대한 캐시 미스 레이트(cache miss rate) 및 워프에 대한 워프 점유율(warp occupancy)에 기반하여 L1 데이터 캐시의 액세스 여부를 결정하는 단계이다.
일 실시예에서, L1 데이터 캐시에 대한 캐시 미스 레이트가 제1 임계값보다 큰 경우, L1 데이터 캐시에 액세스하지 않을 수 있다. 즉, L1 데이터 캐시를 바이패스(bypassing)하고, L2 데이터 캐시에 액세스할 수 있다. 예를 들어, L1 데이터 캐시에 메모리 요청을 송신하지 않고, L2 데이터 캐시에 메모리 요청을 송신할 수 있다.
반면, L1 데이터 캐시에 대한 캐시 미스 레이트가 제2 임계값보다 작은 경우, L1 데이터 캐시에 액세스할 수 있다. 예를 들어, L1 데이터 캐시에 메모리 요청을 송신할 수 있다.
일 실시예에서, L1 데이터 캐시에 대한 캐시 미스 레이트가 제1 임계값보다 작고 제2 임계값보다 큰 경우, 워프에 대한 워프 점유율이 제3 임계값보다 큰지 여부에 따라 L1 데이터 캐시의 액세스 여부를 결정할 수 있다.
일 실시예에서, 워프에 대한 워프 점유율이 제3 임계값보다 큰 경우, L1 데이터 캐시에 액세스하지 않고, 워프에 대한 워프 점유율이 제3 임계값보다 작은 경우, L1 데이터 캐시에 액세스할 수 있다.
도 6은 본 발명의 일 실시예에 따른 다른 L1 데이터 캐시의 바이패스 방법을 도시한 도면이다.
도 6을 참고하면, S610 단계는, 샘플링 기간 동안 L1 데이터 캐시를 모니터링할 수 있다. 일 실시예에서, L1 데이터 캐시에 대한 캐시 미스 레이트를 산출할 수 있다. 여기서, 캐시 미스 레이트는 일정 주기 동안 캐시 액세스 및 캐시 미스의 수를 계산하여 산출될 수 있다.
S612 단계는, 샘플링 기간인 경우, L1 데이터 캐시에 대한 캐시 액세스를 허용하는 단계이다. 여기서, L1 데이터 캐시에 대한 캐시 액세스를 허용하는 상태는 ‘C 모드‘ 또는 이와 동등한 기술적 의미를 갖는 용어로 지칭될 수 있다.
S614 단계는, 샘플링 기간이 끝난 후, L1 데이터 캐시에 대한 캐시 미스 레이트가 제1 임계값(ThresholdH)보다 큰지 여부를 판단하는 단계이다.
S616 단계는, 캐시 미스 레이트가 제1 임계값보다 큰 경우, L1 데이터 캐시에 대한 캐시 액세스를 허용하지 않는 단계이다. 여기서, L1 데이터 캐시에 대한 캐시 액세스를 허용하지 않는 상태는 ‘B 모드’ 또는 이와 동등한 기술적 의미를 갖는 용어로 지칭될 수 있다. 따라서, B 모드의 경우, 추가 액세스 주기(cycle)뿐만 아니라 캐시 리소스도 소비되지 않을 수 있다.
S618 단계는, 캐시 미스 레이트가 제1 임계값보다 작은 경우, 캐시 미스 레이트가 제2 임계값(ThresholdL)보다 작은지 여부를 판단하는 단계이다.
S620 단계는, 캐시 미스 레이트가 제2 임계값보다 작은 경우, L1 데이터 캐시에 대한 캐시 액세스를 허용하는 단계이다. 일 실시예에서, L1 데이터 캐시의 데이터 재사용 정도가 GPU의 성능을 향상시키기에 충분히 높으면 캐시가 유리할 수 있습니다. 따라서, 첫 번째 스테이지에서는 캐시 미스 레이트가 상당히 낮거나 높은 각 워크로드 특성에 적합한 캐싱 정책을 적용할 수 있다.
S622 단계는, 캐시 미스 레이트가 제1 임계값보다 작고 제2 임계값보다 큰 경우, 워프에 대한 워프 점유율이 제3 임계값(ThresholdW)보다 작은지 여부를 판단하는 단계이다.
S624 단계는, 워프 점유율이 제3 임계값보다 큰 경우, L1 데이터 캐시에 대한 캐시 액세스를 허용하는 단계이다.
S626 단계는, 워프 점유율이 제3 임계값보다 작은 경우, L1 데이터 캐시에 대한 캐시 액세스를 허용하지 않는 단계이다.
즉, 두 번째 스테이지에서는 모니터링된 캐시 미스 레이트가 모호(ambiguous)할 때, TLP(Thread-Level Parallelism) 레벨이 L1 데이터 캐시의 바이패스를 결정하는데 사용될 수 있다. 캐시 미스 레이트가 첫 번째 스테이지에서 앞의 조건을 충족하지 않으면 GPU 성능이 캐시에서 이점을 얻는지 정확하게 예측하지 못할 수 있다.
따라서 본 발명에 따르면, TLP 레벨을 함께 측정하여 캐시 이점을 추정할 수 있다. TLP 레벨이 높으면, 온칩 캐시의 성능이 향상되어 여러 스레드가 액세스 지연 시간을 숨길 수 있다. 즉, 두 번째 스테이지에서는 캐시에 액세스하는 스레드 수를 예측하기 위해 워프 점유율을 측정할 수 있다.
도 7은 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 장치(700)의 기능적 구성을 도시한 도면이다. 일 실시예에서, 바이패스 장치(700)는 GPU로 구현될 수 있다.
도 7을 참고하면, 바이패스 장치(700)는 SM(110), L2 캐시(130) 및 글로벌 메모리(140)를 포함할 수 있다.
일 실시예에서, SM(110)은 명령어 버퍼(710), 워프 스케줄러(712), 레지스터 파일(714), LD/ST 유닛(716), L1 데이터 캐시(718), 미스 레이트 모니터링 유닛(miss-rate monitoring unit, MMU)(720), 워프 점유율 모니터링 유닛(warp occupancy monitoring unit, WOMU)(722) 및 바이패스 결정 유닛(bypass decision unit, BDU)(724)를 포함할 수 있다.
워프 스케줄러(712)는 명령을 실행할 워프를 선택할 수 있다. 그러나 발행(issue)할 수 있는 활성 워프(active warp)가 없는 경우 워프 스케줄러(712)는 워프를 발행하지 않을 수 있다.
LD/ST 유닛(716)는 발행 단계에서 메모리 명령을 수신하므로, 활성 워프 수가 특정 개수보다 작은 경우 메모리-레벨의 병렬 처리도 감소할 수 있다. 따라서 충분한 양의 워프 풀은 메모리-레벨의 처리량과 SM(110)의 리소스 활용에 도움이 될 수 있다. 캐시가 펜딩(pending) 미스 요청 및 멀티 스레딩을 허용하지 않는 경우 L1 데이터 캐시(718)에서 파생된 이점은 주로 캐시 히트 레이트(hit rate)의 영향을 받을 수 있다.
그러나 GPU 캐시는 동시에 요청을 허용하고 대규모 멀티 스레드를 지원할 수 있다. 또한 많은 GPU 응용 프로그램에는 메모리를 많이 사용하는 워크로드가 있으므로 GPU 캐시를 사용 중일 수 있다.
본 발명에 따르면, GPU 아키텍처에서 캐시 병목 현상이 상당히 줄어들기 때문에, L1 데이터 캐시(718)에서 높은 병렬 처리를 사용할 수 있다. 높은 수준의 TLP는 캐시 리소스의 활용도를 높일 수 있기 때문에 본 발명에 따른 바이패스 장치(700)는 TLP를 바이패스 결정을 위한 두 번째 결정 요인으로 사용할 수 있다.
또한, 높은 TLP는 여러 메모리 요청을 중첩(overlapping)하여 전체 처리 시간을 감소시킬 수 있다. GPU 캐시 아키텍처는 LD/ST 유닛(716)의 스톨(stall)로 어려움을 겪고 있는 이전 아키텍처와 달리, 비교적 낮은 캐시 경쟁(cache contention)을 제공할 수 있다.
워크로드가 많은 수의 동시 스레드로 실행되는 경우, 처리량 지향(throughput-oriented) GPU 캐시가 패널티를 숨기는 것이 효과적이다. 따라서 본 발명에 따르면, 워프 점유율을 모니터링함으로써, 워프-레벨 병렬 처리의 정도를 나타낼 수 있다.
두번째 바이패스 결정 단계에서 필수 메트릭(necessary metric)인 워프 점유율은 WOMU(722)에 의해 명령 버퍼(710)에서 모니터링될 수 있다. 여기서, 워프 점유율은 실행할 수 있는 총 활성 워프의 수를 나타낼 수 있다.
WOMU(722)는 명령 버퍼(710)를 조회하여 활성화된 워프 수를 계산할 수 있다. 명령 버퍼(710)는 명령을 실행하기 위해 각 워프의 정보를 저장할 수 있다. 각 워프의 다음 명령어는 PC를 사용하여 명령어 캐시에서 가져올 수 있다. 명령 버퍼(710)는 또한 이러한 페치(fetched) 및 디코딩된 명령의 유효성을 나타내는 정보를 저장할 수 있다.
명령 버퍼(710)에 있는 각 항목의 유효한 비트를 통해 주기마다 활성 워프 수를 확인할 수 있다.
일 실시예에서, TLP 정도(degree)는 미리 정의된 제3 임계값(ThresholdW)과 사이클 당 계산된 워프 점유율을 비교하여 추정될 수 있다. 그리고, 비교 결과, 1 비트는 BDU(724)으로 전송될 수 있다.
MMU(720)는 L1 데이터 캐시에 대한 액세스 요청에 따라 캐시 액세스 및 캐시 미스의 수를 기록할 수 있다. MMU(720)는 샘플링 기간(sampling period) 후 미스 레이트를 계산할 수 있다.
GPU에서 새 커널이 시작된 후 스레드 블록이 각 SM(110)에 할당되면 샘플링이 시작될 수 있다. 본 발명에 따르면, 사전 정의된 샘플링 기간(예: 5K주기) 동안 L1 데이터 캐시를 모니터링할 수 있다.
BDU(724)는 캐시 미스 레이트를 미리 정의된 제1 임계값(ThresholdH) 및 제2 임계값(ThresholdL)과 비교하는 MMU(720)로부터 결과를 수신할 수 있다. MMU(720)로부터 계산된 캐시 미스 레이트가 미리 정의된 제2 임계값보다 작으면, "0"이 BDU(724)로 전달될 수 있다. BDU(724)는 "0"을 수신할 때 캐시 액세스를 허용하는 C 모드를 결정할 수 있다.
캐시 미스 레이트가 제1 임계값보다 높을 때, "1"이 BDU(724)로 전달되어 B 모드로 전환될 수 있다.
LD/ST 유닛(716)는 BDU(724)가 B 모드로 전환될 때 L1 데이터 캐시를 바이패스할 수 있다. 캐시 미스 레이트가 제1 임계값보다 작고 제2 임계값보다 작은 경우, 캐시 바이패스 정책을 즉시 결정할 수 없다. 따라서, MMU(720)는 "2"의 값을 BDU(724)에 전송하여 제2 바이패스 결정을 수행할 수 있다.
제2 바이패스 결정은 모호한 미스 레이트 범위의 워크로드에 바이패스를 결정할 수 있다. 먼저, 샘플링 기간 동안 캐시에 액세스할 수 있도록 신호가 BDU(724)로부터 LD/ST 유닛(716)으로 전송될 수 있다.
샘플링 주기가 종료되면, 바이패스 모드는 MMU(720) 및 WOMU(722)로부터 수신된 값을 사용하여 결정될 수 있다. BDU(724)는 최종 결정 결과에 따라 메모리 요청을 L1 데이터 캐시 또는 하위 레벨 메모리(예: L2 캐시(130), 글로벌 메모리(140))로 직접 전송할지 여부를 결정할 수 있다.
본 발명에 따른 바이패스 기술은 단지 몇 개의 비교기와 카운터로 구성되어 있기 때문에 상당히 작은 하드웨어 오버 헤드만이 필요할 수 있다. 각 SM에 대하여, 2x13 비트 카운터가 샘플링 기간 동안 액세스 및 미스 수를 저장하는데 요구될 수 있다. 또한, 워프 점유율을 저장하기 위하여 5 비트만이 요구될 수 있다.
일 실시예에서, MMU(720), WOMU(722) 및 BDU(724)는 간단한 하드웨어로 구성될 수 있다.
도 7을 참고하면, 바이패스 장치(700)는 SM(110), L2 캐시(130) 및 글로벌 메모리(140)를 포함할 수 있다. 본 발명의 다양한 실시 예들에서 바이패스 장치(700)는 도 7에 설명된 구성들이 필수적인 것은 아니어서, 도 7에 설명된 구성들보다 많은 구성들을 가지거나, 또는 그보다 적은 구성들을 가지는 것으로 구현될 수 있다.
도 8은 본 발명의 일 실시예에 따른 서로 다른 임계값에 대한 캐시 미스 레이트 기반 바이패스의 성능 그래프를 도시한 도면이다.
도 8을 참고하면, 캐시 미스 레이트 기반 바이패스를 통한 성능을 확인할 수 있다. 각 막대를 통해 캐시 미스 레이트에 대한 임계값 k가 다른 성능 결과를 확인할 수 있다. 예를 들어, 임계값 k가 0.5로 설정되면, 워크로드에 0.5보다 높은 캐시 미스 레이트가 표시될 때, L1 데이터 캐시가 바이패스될 수 있다.
0.5에서 0.9까지 다양한 k 값을 실험하며, L1 데이터 캐시가 비활성화된 경우도 포함될 수 있다. 이 그래프에서 볼 수 있듯이 일부 벤치 마크는 임계값 k의 다른 값에 따라 IPC 개선을 보여준다.
일반적으로 캐시에 유리한 벤치 마크인 SPMV, BT 및 STC는 상대적으로 높은 임계값 k를 기준으로 성능이 더 우수할 수 있다. 이는, 이 벤치 마크가 다른 벤치 마크보다 데이터 로컬성이 높기 때문일 수 있다.
반대로, 상대적으로 낮은 임계값 k는 B 모드를 선호하는 벤치 마크에서 더 나은 성능을 나타낼 수 있다. 각 기준은 고정 임계값으로 미스 레이트 기반 바이패스가 적용될 때 피크 IPC에 대해 서로 다른 최적의 임계값을 제공할 수 있다. 따라서 미리 정의된 단일 임계값 기반 바이패스 결정이 성능 최적화 측면에서 가장 좋은 방법은 아닐 수 있다.
L1 데이터 캐시를 사용하지 않을 때 일부 벤치 마크(ADI, NW, LUD 및 JCB1D)가 특히 높은 성능을 나타낼 수 있다. L1 데이터 캐시 액세스를 완전히 배제하는 방식과 달리, 본 발명에 따르면, 샘플링 기간 동안 캐시 액세스를 허용해야 한다. 따라서 L1 데이터 캐시를 완전히 바이패스하는 방식만큼 성능이 좋지 않습니다. 결과적으로 캐시에 대한 불필요한 액세스로 인해 성능이 저하됩니다.
LUD 벤치 마크는 평균 72% 미스 레이트를 보여 주지만 임계값 k가 0.9로 설정 되더라도 거의 모든 요청이 L1 데이터 캐시에서 바이패스될 수 있다. 그 이유는 각 커널의 미스 레이트가 다르거나 워크로드 특성으로 인해 캐시에 거의 액세스하지 않는 경우이기 때문이다.
이 실험에서, 본 발명에 따르면, 샘플링 기간 동안 거의 캐시 액세스가 발생하지 않을 때 대부분의 요청을 바이패스할 수 있다. 이러한 결과에서 미스 레이트 기반 바이패스에는 제한이 있음을 알 수 있습니다. 모든 벤치 마크에 대해 최적화된 임계값이 있을 뿐만 아니라 샘플링된 미스 레이트를 기반으로 바이패스를 결정하는 것도 신뢰할 수 없다. 모든 벤치 마크에 고정 임계값을 적용한 결과 임계값 k를 0.9로 사용하는 경우 기준선에 비해 평균 2% 성능이 향상될 수 있다.
도 9는 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 성능 그래프를 도시한 도면이다.
도 9를 참고하면, MRPB 바이패스와 비교한 본 발명의 바이패스 방식(Proposed)의 GPU 성능을 확인할 수 있다. 캐시 미스 레이트 기반 단순(simple) 바이패스 정책도 본 발명의 바이패스 방식과 비교된다. 여기서, 미스 레이트 기반 바이패스에 대한 임계값 k는 정적으로 0.9로 설정될 수 있다.
IPC 결과는 기본 GPU 아키텍처로 정규화되어, L1 데이터 캐시가 항상 활성화될 수 있다. 필요한 캐시 리소스를 사용할 수 없는 경우 MRPB 기술은 L1 데이터 캐시를 바이패스할 수 있다. 이 경우, 불필요한 캐시 리소스 지연 시간이 감소할 수 있다.
MRPB 바이패스에는 바이패스 조건에 대한 두 가지 선택이 존재할 수 있다. 바이패스 연결 바이패스 정책(bypass-on-associativity policy)이 적용되면, 캐시 자원으로 인한 스톨이 높은 연관 캐시(high-associativity cache)에 의해 줄어들기 때문에 캐시를 바이패스할 기회가 거의 없을 수 있다.
따라서, MRPB 바이패스를 위한 더 많은 기회를 만들기 위해 MSHR 바이패스의 바이패스 상 모든 스톨(bypass-on-all-stall)를 사용할 수 있다. 일반적으로 본 발명에 따른 바이패스 방식을 사용하는 아키텍처는 최상의 성능을 제공함을 확인할 수 있다.
본 발명에 따른 바이패스 방식은 BT 벤치 마크를 바이패스하는 기준 및 MRPB와 유사한 성능을 나타낼 수 있다. 메모리 요청이 캐시 자원에 대한 예약 실패로 인해 캐시를 바이패스하는 경향이 있기 때문에 MRPB 바이패스는 SPMV 및 STC의 기준보다 성능이 저하될 수 있다. 결과적으로 GPU 성능에 도움이 되는 캐시를 바이패스하면 성능이 저하될 수 있다.
캐시 리소스를 사용할 수 없는 경우 MRPB가 L1 데이터 캐시를 바이패스하지만 GPU에서는 파이프라인 스톨 주기(stall cycle)가 감소할 수 있다. SPMV, STC 및 ADI를 제외하고 필요한 캐시 리소스가 부족하지 않을 수 있다. 또한 STC 및 ADI 벤치 마크는 L1 데이터 캐시의 전체 액세스에 비해 파이프라인 스톨이 거의 없을 수 있다.
본 발명에 따른 바이패스 방식은 ADI, NW 및 JCB1D 벤치 마크를 시뮬레이션할 때 우수함을 확인할 수 있다. 본 발명에 따른 바이패스 방식은 캐시 미스 레이트와 TLP를 모두 고려하여 바이패스를 결정하기 때문에 거의 최상의 성능을 제공할 수 있다.
결과적으로 본 발명에 따른 바이패스 방식은 다양한 워크로드 특성에 대한 기준(baseline) 아키텍처보다 뛰어남을 확인할 수 있다. 예를 들어, 본 발명에 따른 바이패스 방식은 평균 7.2%의 성능 향상을 달성하고, 기준에 대한 전체 벤치 마크에서 IPC 저하가 없음을 확인할 수 있다.
따라서 본 발명에 따른 동적 바이패스 결정은 작업 부하의 특성에 따라 올바르게 작동할 수 있다. JCB1D 벤치 마크는 L1 데이터 캐시를 바이패스하여 성능이 크게 향상될 수 있다. JCB1D 벤치 마크를 바이패스하는 것은 TLP가 상당히 낮고 캐시 미스 레이트가 다른 벤치 마크에 비해 상대적으로 높기 때문에 GPU 성능에 상당히 유리할 수 있다.
도 10은 본 발명의 일 실시예에 따른 L1 데이터 캐시의 바이패스 요청의 퍼센트 그래프를 도시한 도면이다.
도 10을 참고하면, 본 발명에 따라 바이패스된 요청의 백분율(percentage)을 확인할 수 있다. 바이패스가 적용되는 주기를 제외하고 L1 데이터 캐시의 캐시 액세스가 계산될 수 있다.
이 그래프에서 볼 수 있듯이 평균적으로 요청의 66%가 벤치 마크에서 L1 데이터 캐시에 대해 바이패스될 수 있다. SPMV, BT 및 STC 벤치 마크의 경우 거의 모든 요청이 본 발명에 따른 바이패스 방식으로 캐시될 수 있다. STC 벤치 마크는 프로파일링된 캐시 미스 레이트가 73%임에도 불구하고 TLP를 고려하여 바이패스를 결정함으로써 대부분의 요청을 바이패스할 수 있다.
바이패스 정책이 적용되는 기간에 비해 샘플링 기간이 상대적으로 너무 길면, 항상 올바르게 바이패스를 결정하더라도 성능이 저하될 수 있다. 이는, 샘플링 기간 동안 캐시된 데이터는 B 모드에서 다시 참조되지 않기 때문일 수 있다.
결과적으로 샘플링 기간을 가능한 짧게 설정하면 L1 데이터 캐시가 비효율적 일 때 GPU 성능을 향상시키는데 도움이 될 수 있다. B 모드를 선호하는 5개의 벤치 마크(ADI, PF, NW, LUD 및 JCB1D)에 대한 결과는 바이패스된 요청의 백분율이 평균 95%임을 나타낼 수 있다. 결과적으로 이러한 벤치 마크의 경우 샘플링 기간을 제외한 모든 메모리 요청이 L1 데이터 캐시에서 바이패스될 수 있다.
도 11은 본 발명의 일 실시예에 따른 L1 데이터 캐시의 캐시 미스 레이트의 비교 그래프를 도시한 도면이다.
도 11을 참고하면, 기준(baseline) 방식과 본 발명에 따른 바이패스 방식(Proposed)을 사용한 아키텍처에 대한 L1 데이터 캐시의 캐시 미스 레이트를 확인할 수 있다.
본 발명에 따른 바이패스 방식은 캐시 미스 레이트를 평균 6.9% 증가시킬 수 있다. 성능이 향상 되더라도 거의 모든 벤치 마크에서 캐시 미스 레이트가 증가할 수 있다. 본 발명에 따른 바이패스 방식은 캐시 효율성 자체를 향상시키는 것을 목표로 하지 않기 때문에, 실행중인 워크로드가 캐싱에 적합하지 않은 특정 기간 동안 바이패스하기 때문에 캐시 활용도는 동일하거나 저하될 수 있다.
LUD는 특히 캐시 미스 레이트가 36% 증가한 것으로 나타났다. LUD 벤치 마크의 캐시 미스 레이트는 본 발명에 따른 바이패스 방식에서 정의된 모호한 미스 레이트 범위에 속하지만 대부분의 메모리 요청은 L1 데이터 캐시에서 바이패스될 수 있다. LUD 벤치 마크의 평균 왜곡 점유율은 18%(w=5.8)이므로 본 발명에 따른 바이패스 방식은 L1 데이터 캐시가 비효율적이라고 판단할 수 있다.
비록 캐시에 의해 데이터 위치가 이용될 수 있지만, 본 발명에 따른 바이패스 방식은 많은 요청을 바이패스할 수 있다. 또한, 샘플링을 위한 부분 캐싱 데이터는 후속 바이패스 주기로 인해 재참조되지 않을 수 있다.
일부 벤치 마크는 TLP를 고려한 기술로 성능이 향상됨을 확인할 수 있다. 여러 벤치 마크에서 캐시 미스 레이트는 약간 증가하지만 총 캐시 액세스 수가 상당히 줄어들기 때문에 성능에 영향을 미치지 않는다.
도 12는 본 발명의 일 실시예에 따른 다양한 제3 임계값에 대한 IPC 성능 그래프를 도시한 도면이다.
도 12를 참고하면, 워프 점유율 민감도(warp occupancy sensitivity) 측면에서, 본 발명에 따른 바이패스 방식에 의해, 제2 바이패스 결정은 제1 바이패스 결정 후 워프 점유율에 기초하여 수행될 수 있다.
다양한 제3 임계값(ThresholdW)를 가진 평균 IPC 결과를 확인할 수 있다. 제3 임계값은 제2 단계에서 바이패스를 결정하기 위한 워프 점유율의 기준값을 의미할 수 있다. 커널 내에서 동시에 실행될 수 있는 스레드 수는 시스템에 의해 결정되며 각 커널마다 다른 TLP가 포함될 수 있다.
제3 임계값이 8로 설정되면, 본 발명에 따른 바이패스 방식이 가장 효과적일 수 있다. 제3 임계값을 8로 설정하면, ADI 벤치 마크가 다른 임계값보다 약 2% 향상되므로 평균 IPC 개선이 가장 좋음을 확인할 수 있다.
제3 임계값이 16에서 24일 때 IPC는 거의 동일할 수 있다. 실험 결과 TLP가 낮은 워크로드로 L1 데이터 캐시를 바이패스하면 대부분의 벤치 마크에 긍정적인 영향을 미친다는 것을 알 수 있습니다.
본 발명에 따른 바이패스 방식에 따라, 다양한 종류의 워크로드에서 GPU 성능에 대한 캐시 이점을 확인할 수 있다. 본 발명에 따르면, 캐시 미스 레이트만을 기준으로 GPU 성능에서 L1 데이터 캐시의 유용성을 예측하는 것이 어렵다는 것을 확인할 수 있다. 캡처된 캐시 위치가 명백히 높거나 낮지 않은 경우, L1 데이터 캐시의 성능 향상은 다른 요인에 의해 결정되어야 한다.
본 발명에서는, 이러한 문제를 해결하기 위해 두 가지 메트릭을 기반으로 캐시 액세스를 결정하는 새로운 2 단계 바이패스 방법이 제안될 수 있다. 이전 GPU 아키텍처와 달리 GPU 캐시는 높은 TLP 워크로드에 유리할 수 있다. 따라서 캐시 처리량을 측정하여 미스 레이트 메트릭의 단점을 보완할 수 있다. 실험 결과 캐시가 GPU 성능에 해를 끼칠 때 L1 데이터 캐시를 효과적이고 선택적으로 바이패스할 수 있기 때문에 본 발명에 따른 바이패스 방식이 종래의 GPU 아키텍처보다 7.2% 성능 향상됨을 확인할 수 있다.
이상의 설명은 본 발명의 기술적 사상을 예시적으로 설명한 것에 불과한 것으로, 통상의 기술자라면 본 발명의 본질적인 특성이 벗어나지 않는 범위에서 다양한 변경 및 수정이 가능할 것이다.
따라서, 본 명세서에 개시된 실시예들은 본 발명의 기술적 사상을 한정하기 위한 것이 아니라, 설명하기 위한 것이고, 이러한 실시예들에 의하여 본 발명의 범위가 한정되는 것은 아니다.
본 발명의 보호범위는 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 이해되어야 한다.
100: GPU
110: SM
120: 상호 연결 네트워크
130: L2 캐시 파티션
140: 글로벌 메모리
300: 바이패스 플로우
310: 워프 스케줄러
320: 통합 유닛
330: L1 데이터 캐시
700: 바이패스 장치
710: 명령어 버퍼
712: 워프 스케줄러
714: 레지스터 파일
716: LD/ST 유닛
718: L1 데이터 캐시
720: MMU
722: WOMU
724: BDU

Claims (10)

  1. (a) 워프에 대한 메모리 요청에 따라 L1 데이터 캐시를 모니터링하는 단계; 및
    (b) 상기 L1 데이터 캐시에 대한 캐시 미스 레이트(cache miss rate) 및 상기 워프에 대한 워프 점유율(warp occupancy)에 기반하여 상기 L1 데이터 캐시의 액세스 여부를 결정하는 단계;
    를 포함하는,
    L1 데이터 캐시의 바이패스 방법.
  2. 제1항에 있어서,
    상기 (b) 단계는,
    상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제1 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않는 단계; 및
    상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제2 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스하는 단계;
    를 포함하는,
    L1 데이터 캐시의 바이패스 방법.
  3. 제2항에 있어서,
    상기 (b) 단계는,
    상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 상기 제1 임계값보다 작고 상기 제2 임계값보다 큰 경우, 상기 워프에 대한 워프 점유율이 제3 임계값보다 큰지 여부에 따라 상기 L1 데이터 캐시의 액세스 여부를 결정하는 단계;
    를 포함하는,
    L1 데이터 캐시의 바이패스 방법.
  4. 제3항에 있어서,
    상기 (b) 단계는,
    상기 워프에 대한 워프 점유율이 제3 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않는 단계; 및
    상기 워프에 대한 워프 점유율이 상기 제3 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스하는 단계;
    를 포함하는,
    L1 데이터 캐시의 바이패스 방법.
  5. 제1항에 있어서,
    상기 (a) 단계는,
    미리 결정된 샘플링 기간(sampling period) 동안 상기 워프에 대한 메모리 요청에 따라 상기 L1 데이터 캐시를 모니터링하는 단계;
    를 포함하는,
    L1 데이터 캐시의 바이패스 방법.
  6. 워프에 대한 메모리 요청에 따라 L1 데이터 캐시를 모니터링하고,
    상기 L1 데이터 캐시에 대한 캐시 미스 레이트(cache miss rate) 및 상기 워프에 대한 워프 점유율(warp occupancy)에 기반하여 상기 L1 데이터 캐시의 액세스 여부를 결정하는 SM(streaming multiprocessor);
    를 포함하는,
    L1 데이터 캐시의 바이패스 장치.
  7. 제6항에 있어서,
    상기 SM은,
    상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제1 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않고,
    상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 제2 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스하는,
    L1 데이터 캐시의 바이패스 장치.
  8. 제7항에 있어서,
    상기 SM은,
    상기 L1 데이터 캐시에 대한 캐시 미스 레이트가 상기 제1 임계값보다 작고 상기 제2 임계값보다 큰 경우, 상기 워프에 대한 워프 점유율이 제3 임계값보다 큰지 여부에 따라 상기 L1 데이터 캐시의 액세스 여부를 결정하는,
    L1 데이터 캐시의 바이패스 장치.
  9. 제8항에 있어서,
    상기 SM은,
    상기 워프에 대한 워프 점유율이 제3 임계값보다 큰 경우, 상기 L1 데이터 캐시에 액세스하지 않고,
    상기 워프에 대한 워프 점유율이 상기 제3 임계값보다 작은 경우, 상기 L1 데이터 캐시에 액세스하는,
    L1 데이터 캐시의 바이패스 장치.
  10. 제6항에 있어서,
    상기 SM은,
    미리 결정된 샘플링 기간(sampling period) 동안 상기 워프에 대한 메모리 요청에 따라 상기 L1 데이터 캐시를 모니터링하는,
    L1 데이터 캐시의 바이패스 장치.
KR1020200003729A 2020-01-10 2020-01-10 L1 데이터 캐시의 바이패스 방법 및 장치 KR102451605B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200003729A KR102451605B1 (ko) 2020-01-10 2020-01-10 L1 데이터 캐시의 바이패스 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200003729A KR102451605B1 (ko) 2020-01-10 2020-01-10 L1 데이터 캐시의 바이패스 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210090442A true KR20210090442A (ko) 2021-07-20
KR102451605B1 KR102451605B1 (ko) 2022-10-05

Family

ID=77127328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200003729A KR102451605B1 (ko) 2020-01-10 2020-01-10 L1 데이터 캐시의 바이패스 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102451605B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719760A (zh) * 2023-05-15 2023-09-08 合芯科技有限公司 一种低延迟处理缓存读取请求的方法、设备及存储介质
KR102602844B1 (ko) * 2023-04-12 2023-11-15 고려대학교 산학협력단 그래픽스 프로세서의 워프 구조를 고려한 메모리 컨트롤러 및 그것을 이용한 메모리 컨트롤 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070059837A (ko) * 2005-12-06 2007-06-12 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법
KR20140081206A (ko) * 2012-12-21 2014-07-01 전남대학교산학협력단 컴퓨터 시스템
KR101957855B1 (ko) 2016-11-24 2019-03-13 성균관대학교 산학협력단 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070059837A (ko) * 2005-12-06 2007-06-12 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법
KR20140081206A (ko) * 2012-12-21 2014-07-01 전남대학교산학협력단 컴퓨터 시스템
KR101957855B1 (ko) 2016-11-24 2019-03-13 성균관대학교 산학협력단 스크래치패드에 데이터 프리페치를 통해 gpu 메모리 접근 최적화를 위한 메모리 제어 장치 및 그 메모리 제어 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Min Goo Moon 외 1인, "Cache efficiency based dynamic bypassing technique for improving GPU performance"(2018)* *
김광복 외 2인, "GPU 성능 향상을 위한 MSHR 활용률 기반 동적 워프 스케줄러"(2019)* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102602844B1 (ko) * 2023-04-12 2023-11-15 고려대학교 산학협력단 그래픽스 프로세서의 워프 구조를 고려한 메모리 컨트롤러 및 그것을 이용한 메모리 컨트롤 방법
CN116719760A (zh) * 2023-05-15 2023-09-08 合芯科技有限公司 一种低延迟处理缓存读取请求的方法、设备及存储介质

Also Published As

Publication number Publication date
KR102451605B1 (ko) 2022-10-05

Similar Documents

Publication Publication Date Title
US11675703B2 (en) Memory request throttling to constrain memory bandwidth utilization
Nesbit et al. AC/DC: An adaptive data cache prefetcher
US7707359B2 (en) Method and apparatus for selectively prefetching based on resource availability
US8079031B2 (en) Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US9817764B2 (en) Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type
Mekkat et al. Managing shared last-level cache in a heterogeneous multicore processor
US9176878B2 (en) Filtering pre-fetch requests to reduce pre-fetching overhead
US8898435B2 (en) Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US9811341B2 (en) Managed instruction cache prefetching
US8230172B2 (en) Gather and scatter operations in multi-level memory hierarchy
US10387318B2 (en) Prefetching with level of aggressiveness based on effectiveness by memory access type
US20140136795A1 (en) Prefetch optimization in shared resource multi-core systems
KR102451605B1 (ko) L1 데이터 캐시의 바이패스 방법 및 장치
US20160342514A1 (en) Method for managing a last level cache and apparatus utilizing the same
JP2006518896A (ja) 特定コード部分のキャッシュトラッシングの低減
Jahre et al. A high performance adaptive miss handling architecture for chip multiprocessors
Do et al. Application characteristics-aware sporadic cache bypassing for high performance GPGPUs
Sun et al. Improving data access performance with server push architecture
Kim et al. New Two-Level L1 Data Cache Bypassing Technique for High Performance GPUs
Krause et al. Avoiding unnecessary caching with history-based preemptive bypassing
Kim et al. New dynamic warp throttling technique for high performance GPUs
Dai et al. Racb: Resource aware cache bypass on gpus
US11886881B2 (en) Decoupled access-execute processing and prefetching control
Huang et al. Performance Improvements by Deploying L2 Prefetchers with Helper Thread for Pointer-Chasing Applications
Gao et al. Decoupling contention with victim row-buffer on multicore memory systems

Legal Events

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