https://www.elis.ugent.be/~leeckhou/papers/asplos06.pdf
Microprocessor의 성능 측정과 예측, 설계를 위해 모델링과정 중, 시뮬레이터 혹은 실제 프로세서에서 각 Workload들마다 어느정도의 목표한 CPI/IPC를 획득 할 수 있을지에 대해서, 좀더 정확한 측정 방법을 제시함. 해당 측정 방법에 기초하여, Performacne Coutner를 하드웨어로 구현하기 위한 아키텍처를 제시함. 기존 연구사례로 Naive한 방법인 miss event별 특정 시간값을 곱하여 추정하는 방법과 Power5 프로세서에 구현된 좀더 세분화된 Counter를 예로 들고 있음. 논문에서 제시하는 부분은 내부 구조를 반영하여 좀더 정확한 예측값을 얻을 수 있음을 보임.
기본적으로 Interval Analysis 방법을 기반으로 연구내용을 설명하며, 이전까지 기준이 되는 Base CPI위의 각 Component별 Penalty 들을 쌓는 CPI Stack의 한계를 설명하여, OOO Superscalar프로세서에서 Underestimation되는 부분의 정확한 예측을 위해서 시간축 기준으로 구간별 IPC 들을 관측한 것으로 설명함. 대개의 penalty event 발생시 해당 시점을 기준으로 ROB emptyness가 발생하는 것으로 시간상 성능 Penalty가 발생함을 설명함.
Penalty이벤트로 Frontend miss,와 Backend Miss를 구분하여 설명하고 있음. Frontend miss에는 I-Cache/I-TLB Miss로 Pipeline, issue queue가 소진되는 만큼 눈에 띄지 않는 구간, 즉 단순 Counter로 잡을 수 없는 부분(ROB empty등)과 실제 구조상 요소 Pipeline length가 성능에 영향을 끼침을 보임. Branch Missprediciton의 경우, miss path->correct path로의 전환시에 이 부분이 hidden으로 보이지 않고 있다가, 갑작스런 ROB flush에 의하여, pipeline length의 영향성(Fetch/Decode/Issue)이 분명하게 들어난다는 점과, 단순 event cycle count로는 예측 값이 많이 틀어질 수 있음을 보임
Backend miss에는 Short miss와 Long miss를 구분하여 설명함. 모두 D cache miss, D TLB, Memory Access관련된 내용으로, Short miss의 경우 L1 D Cache miss로 그 영향성이 L2에서 hit되어 매우 작은것으로 충분히 Pipeline, OoO등 구조적으로 커버가 되기 때문에 무시함. Long miss의 경우 Interval analysis시에 하나의 interval로 서로의 영향성이 없음으로 분석이나, Perofrmance Counter구현시 좀더 단순한 수 있음. 이는 Data의 경우 Dependence를 갖는 Instruction들이 Stall되기 때문에, 병렬로 처리되는(Overlap)여지가 없거나 Cache의 설계에 따라서, 아예 한번의 Miss event에 거의 포함되어 이후 miss event들은 penalty를 받지 않게 되기 때문임.
이후 각 miss event들간의 Interaction에 대해서 설명하고, Model로의 고려 여부를 따지는데Frontend miss인 I cache, I-TLB, branch misprediction들의 상호간에는 의존성이 없고 Overlap되지 않으므로 따질게 없으나, misprediction의 경우, misprediction path의 경우 count값을 penalty에 포함시키지 않아야함.
Frontend와 long backend miss간의 영향은 long backend miss에 frontend miss가 묻혀버릴 수 있으므로, 정확성을 위해서 세부적으로 count하거나, 계산을 할 필요가 있음. 근데 실측결과, overlapp되는 경우가 5%미만으로 이부분만 고려하여 hardware설계를 제안함.
4장부터 위의 관측/실험 결과로 얻은 Insight로부터 Counter Architecture를 제안함. FMT(Frontend miss Event Table)와 sFMT(Shared FMT)임. FMT는 일종의 환형 큐구조로 주요 event counter들 : 1개의 total cycle counter, 8개의 Global CPI component cycle counter(위의 miss event들 마다의 count)의 값들을 내부에 3개의 포인터와 각 event counter column으로 유지하고, Branch Prediction발생의 경우, Row를 추가하는 형태로 Branch resolution까지 해당 Count값을 따로 보관하고 있다가. misprediction, correct path여하에 따라서 적절히 값들을 수정하여 정확한 측정값을 얻도록 함.
FMT에 포함되는 Column은 ROB ID, mispredict, bit, branch penatly, loca L1 I-cache, local L2 I-cache, local I-TLB가 있으며, sFMT에서는 local count값을 branch에 따른 path별로 따지 않고, 관리하는 형태로 디자인함.