A significant energy is consumed by the voltage guardband to ensure correct operations in modern processors even under the rarely occurring worst-case conditions. Furthermore, worsening PVT variation is making the voltage guardband grow. This bounded voltage scaling trend conflicts with the strong need for low-power, low-energy solutions arise from ever tightening power budget and dark silicon issue. Consequently, better-than-worst-case design is becoming a promising solution as it achieves a significant amount of energy savings by removing the voltage guardband and scaling the supply voltage additionally.
In order to guarantee correct operations of a processor in the better-than-worst-case-design, Razor flip-flops and Instruction Replay are widely used to detect and correct timing errors induced by voltage over-scaling. However, the potential gain from scaling the supply voltage is limited as error rate and the following occurrence of Instruction Replay increase. Moreover, throughput and energy loss caused by replaying the pipeline is a critical problem in SIMD architecture.
In this work, an error masking scheme targeted for integer additions in SIMD architecture is proposed. The masking is done by applying the concept of partial reuse to potential erroneous instructions. Two critical observations are conducted in order for the reuse and mask scheme to work properly: temporal operand value locality and operand value locality across SIMD lanes. Simulation results based on the real operands sampled from 15 CUDA benchmarks strongly prove that both temporal operand value locality and operand value locality across lanes exist in SIMD architecture.
In addition, detailed implementations for reuse and mask are proposed in this work. Masking logic is inserted to integer ALUs of each SIMD lanes. A single reuse table is implemented for an entire SIMD processor, and it is accessible before and after the execution stage.
Intensive simulations on 15 CUDA benchmarks were performed to evaluate our proposed implementation. 10 design variants of our scheme are analyzed to get an optimal solution. Our result show that a significant amount timing errors are masked by the proposed design. Also, throughput comparable to that of error-free execution is achieved, which is a crucial benefit for throughput-oriented SIMD architecture. Finally, our scheme obtains up to 5.1% improvement in energy consumption and 30% improvement in EDP when compared to energy optimal point of Razor only design.
최근 프로세서에서는 드물게 발생하는 최악의 상황에도 정확한 동작을 보장하기 위해서 공급 전압에 일정 여유 폭을 두게 된다. 하지만 이러한 전압 폭으로 인해 상당한 양의 에너지가 소비된다. 더욱이 공정이 미세화되면서 PVT 변화의 심각성이 커지고 있기 때문에 여유 전압 폭을 더 늘려야 하는 상황이다. 이로 인해 전압 감소 추세는 점차 침체되고 있으며 이는 현재 프로세서의 전력과 에너지 소모량을 낮추고자 하는 흐름과 충돌하고 있다. 따라서 이런 여유 전압 폭을 없애고 공급 전압을 더 낮추어 최악의 경우보다 나은 상황에서 프로세서를 동작시키고 상당한 양의 에너지 이득을 얻는 기법이 각광받고 있다.
이러한 상황에서 프로세서의 정확한 동작을 위해서는 타이밍 오류를 검출하고 수정할 수 있는 Razor 플립플롭과 명령어 재실행 기법이 가장 널리 쓰이고 있다. 그러나 오류 비율이 증가하고 그로 인해 명령어 재실행이 자주 방생하게 된다면 공급 전압을 낮춤으로써 생기는 에너지 이득이 제한되게 된다. 더욱이 명령어 재실행으로 인해 생기는 단위 시간당 처리량 감소와 에너지 감소는 SIMD 구조에서 중대한 문제가 된다.
본 연구에서는 SIMD의 정수 가산 연산을 대상으로 하는 타이밍 오류 제거 기법을 제안한다. 타이밍 오류 제거는 오류가 발생할 확률이 높은 명령어에 부분적 재사용 개념을 적용함으로써 이루어진다. 제안하는 재사용과 그에 따른 오류 제거 기법이 성공적으로 동작하기 위해서 두 가지 중요한 관측이 이루어 졌다. 첫째는 시간상으로 피연산자 값 지역성이 존재해야 하고 두 번째는 SIMD 레인들 간의 피연산자 값들에 지역성이 존재해야 한다는 것이다. 15개의 CUDA 벤치마크를 돌려 얻은 피연산자 값들을 분석한 결과 이러한 두 가지 지역성이 SIMD 구조상에서 강하게 존재한다는 것이 증명되었다.
또한 본 연구에서는 재사용과 그에 따른 오류 제거를 구현하는 회로가 구체적으로 제시되었다. 오류 제거 회로는 각 SIMD 레인의 정수 ALU들에 삽입된다. 한편 전체 SIMD 프로세서를 위한 하나의 재사용 테이블이 구현되었다.
제안된 기법을 검증하기 위해서 15개의 CUDA 벤치마크를 통한 시뮬레이션을 진행하였다. 또한 최적의 결과를 얻기 위해 10개의 다른 디자인들을 분석하였다. 제안된 기법을 통해 많은 양의 타이밍 오류가 제거된 것을 보였으며, 오류가 없는 상황에서의 처리량과 비견될만한 수준의 처리량을 얻어 SIMD 구조의 중요한 문제를 해결하였다. 마지막으로 Razor 플립플롭만 사용했을 때의 경우의 최적의 에너지 소모량 지점과 비교해봤을 때 본 연구는 5.1%의 에너지 소모량 개선과 30% EDP 개선을 얻을 수 있었다.