Abstract
As the prediction accuracy of conditional branch instruction is increased highly, the importance of prediction accuracy for unconditional branch instruction is also increased accordingly. Except the case of RAS(Return Address Stack) overflow, the prediction accuracy of function return address should be 100% theoretically. However, there exist some possibilities of miss-predictions for RAS return addresses, when miss-speculative execution paths are invalidated, in case of modern speculative microprocessor environments. In this paper, we propose the RAS rename technique to prevent RAS pollution, results in the reduction of RAS miss-prediction. We divide a RAS stack into a soft-stack and a hard-stack and we handle the instructions for speculative execution in the soft-stack. When some overwrites happen in the soft-stack, we move the soft-stack data into the hard-stack. In addition, we propose an enhanced version of RAS rename scheme. In simulation results, our solution provide 1/90 reduction of miss-prediction of function return address, results in up to 6.85% IPC improvement, compared to normal RAS method. Furthermore, it reduce miss-prediction ratio as 1/9, compared to previous technique.
조건 분기 명령어의 예측 정확도가 매우 높아짐에 따라 상대적으로 무조건 분기 명령어의 예측이 중요해지고 있다. 그 중 RAS(Return Address Stack)를 사용하는 함수 복귀 예측은 이론적으로 오버플로가 발생하지 않는 한도 내에서 100%의 정확도를 보여야 한다. 하지만 투기적 실행을 지원하는 현대 마이크로프로세서 환경 하에서는 잘못된 실행 경로로의 수행 결과를 무효화 할 때 RAS의 오염이 발생하며, 이는 함수 복귀 주소의 예측 실패로 이어진다. 본 논문에서는 이러한 RAS의 오염을 방지하기 위하여 RAS 재명명 기법을 제안한다. RAS 재명명 기법은 RAS의 스택을 소프트 스택과 하드 스택으로 나누어 투기적 실행에 의한 데이터의 변경을 복구할 수 있는 소프트 스택에서 투기적 실행에 의한 데이터를 관리하고, 소프트 스택의 크기 제한으로 겹쳐쓰기가 일어나는 데이터 중 이후에 사용될 데이터를 하드 스택으로 옮기는 구조로 구성된다. 또한 이러한 구조의 문제점을 파악하여, 본 논문에서는 RAS 재명명 기법의 추가적 개선법을 소개한다. 제안된 기법을 모의실험 한 결과, RAS 오염 방지 기법이 적용되지 않은 시스템과 비교하여 함수 복귀 예측 실패를 약 1/90로 감소시켰으며, 최대 6.95%의 IPC 향상을 가져왔다. 또한 기존의 RAS 오염 방지 기법이 적용된 시스템과 비교하여 함수 복귀 예측 실패를 약 1/9로 감소 시켰다.