The advent of manycore processor architecure, on-chip network is an important aspect for high performance. Thus, there are huge requirements to achieve high network performance. One of the most important manycore processor architecture, General-Purpose computing on Graphics Processing Units (GPGPUs), it has distinguished features which are different front general architectures. In GPGPUs, the communication occurs between the cores and the memory controllers (MCs) not between the cores. Thus, there is a strong possibility to occur network congestion in the end-point (MCs).
In this work, we propose an end-point congestion control mechanism for on-chip network. We base on a clumsy flow control (CFC) which is credit-based flow control between source to destination, not per-hop, and we present how to extend CFC to adjust the credits dynamically, refer as dynamic CFC. We propose three mechanisms to achieve it, i) gathering MCs queue occupancy, ii) dynamic credit self-tuning mechanism, and iii) fast credit return mechanism for optimizing.
As a result, on average, dynamic CFC achieves 7% performance improvements compared to baseline buffered NoC, and 4% improvements compared to the best average performance of static CFC. Also, dynamic CFC performance achieves the best performance with the optimal number of credits in static CFC at each workload.
코어의 수가 점점 증가함에 따라 고성능을 위해서는 온칩 네트워크가 매우 중요한 요소가 되고 있다. 다수의 코어가 존재하는 대표적인 아키텍쳐인 GPGPU에서는 일반적인 아키텍쳐와는 다른 특성을 보인다. GPGPU에서는 코어와 메모리 컨트롤러 사이에서만 통신이 발생하며, 코어 사이에서는 통신이 발생하지 않는다. 따라서 메모리 컨트롤러에서 혼잡이 일어날 가능성이 매우 높다. 이 논문에서는 메모리 컨트롤러에서 발생하는 혼잡을 막기 위한 혼잡 제어 기법을 제안 한다. 이 논문에서는 홉 단위가 아닌 시작 노드와 종점 노드사이에서 동작하는 크레딧 기반의 플로우 컨트롤을 이용하며, 크레딧을 효율적으로 분배하는 방안에 대해서 제안한다. 이를 위해 메모리 컨트롤러의 큐 정보를 모으는 방법, 크레딧을 동적으로 분배하는 방안 및 최적화를 위해서 크레딧을 빠르게 반환하는 방법을 제안한다. 결과적으로 논문에서 제시하는 방식은 7%의 성능 향상을 보였으며, 크레딧을 정적으로 사용하는 방식에 비해서는 4%의 성능 향상을 보인다. 또한 크레딧을 정적으로 사용하는 방식에서 각 애플리케이션마다 가장 좋은 성능을 보이는 경우와 거의 유사한 성능을 보인다.