Skip to content

기글하드웨어기글하드웨어

컴퓨터 / 하드웨어 : 컴퓨터와 하드웨어, 주변기기에 관련된 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form
참고/링크 https://pc.watch.impress.co.jp/docs/colu...92296.html

1.png

 

2017년의 젠에서 IPC를 15% 높인 젠2

 

AMD 는 새로운 CPU, 젠 2 마이크로 아키텍처에서 강력한 분기 예측 기술인 TAGE를 도입했습니다. TAGE는 TAgged GEometric history length branch prediction의 줄임말로, 2006년에 발표된 후 계속해서 개선된 기술이 발표됐습니다.

 

 

젠에서 IPC를 더 높인 젠 2 마이크로 아키텍처

 

AMD의 젠은 신경망 퍼셉트론(Perceptron) 분기 예측을 탑재하지만, 젠 2는 퍼셉트론과 TAGE의 2개 계층으로 구성된 분기 예측을 씁니다. 퍼셉트론이 L1 분기 예측, TAGE가 L2 분기 예측입니다. 퍼셉트론은 비교적 새로운 기술이며, 젠 2는 분기 예측 신기술을 두개나 넣는 호화스러운 구성을 채택했습니다. 무엇보다 TAGE의 구현은 쉽지 않기에 젠 2에서 어디까지 구현됐는지 아직 알 수 없습니다.

 

AMD는 젠 세대의 CPU 마이크로 아키텍쳐부터 IPC (Instruction-per-Clock)의 향상에 초점을 맞췄습니다. 그 이전의 불도저 CPU는 싱글 스레드 성능을 억제하는 대신 멀티 스레드 성능 밀도를 높이는 데 집중했습니다. 반면 젠은 IPC를 높여 싱글 스레드 성능을 높였습니다. 이는 클라이언트 PC 시장에서 매우 치열하게 펼쳐지는 경쟁이기도 합니다. 젠 2는 여기에 맞춰서 IPC와 싱글스레드 성능을 향상시켰습니다.

 

AMD의 리사 수 CEO는 E3에 맞춰 열린 이벤트, AMD Next Horizon Gaming에서 젠 2게 젠보다 IPC를 15% 더 높였다고 선언했습니다. 이게 사실이라면 상당히 이례적인 숫자입니다. CPU의 IPC를 올리는 건 매우 어려우며, 젠을 개선해 15%를 높이는 건 뭔가 큰 기술의 도입이 없으면 어렵습니다. 그 기술 중 하나가 TAGE 분기 예측입니다.

 

2.png

 

젠 2 마이크로 아키텍처와 젠의 확장 포인트

 

3.png

 

15%의 IPC 향상

 

 

분기 정밀도 향상이 성능을 좌우

 

AMD의 기술 개발을 총괄하는 Mark Papermaster(Chief Technology Officer and Executive Vice President, Technology and Engineering, AMD)는 "우리는 많은 시간을 들여 분기 예측을 개선했습니다. 히스토리 테이블을 추가하고 코드 스트림이 어디로 가는지를 보다 정확히 추측했습니다. 그 결과 IPC가 크게 올랐지요."

 

6.png

 

젠 2 마이크로 아키텍처

 

7.png

 

분기 예측 실수를 30% 줄임

 

AMD는 TAGE 분기 예측을 도입해 분기 예측을 확장함으로서 분기 예측 실수(Mispredict Rate)를 최대 30% 줄이겠다고 설명했습니다. 작업에 따라 변동폭이 크다보니 정확히 30%를 맞추긴 힘들겠지요. TAGE를 도입하면 30%보다 더 효과를 볼 수 있을것 같지만 30%만 해도 효과가 상당합니다.

 

또 30% 감소라는 건 어디까지나 분기 예측 실수입니다. 예측 정확도가 97%에서 98%로 오른다는 이야기지요. 하지만 분기 예측 실수 때문에 생겨나는 패널티는 매우 크기에, 이 정도의 정확도 향상이 성능에 미치는 영향은 매우 큽니다. 아직 구체적인 성과는 밝히지 않았으나, AMD는 젠 2의 IPC가 젠보다 15%, 젠+보다 10% 정도 높아졌다고 말합니다. 

 

9.png

 

젠+에서 젠 2로 가면서 싱글 스레드 성능은 21% 향상되는데, 그 중 IPC 향상이 60%를 기여합니다.

 


분기 예측의 정확도에 따라 크게 바뀌는 CPU의 성능


현재 고성능 CPU는 조건 분기 명령이 썩 반갑지 않은 존재입니다. 분기 명령을 실행할 때까지 분기를 할 것인지(Taken), 안 할 것인지(Not Taken)를 모르기 때문입니다. 고성능 슈퍼 스칼라 CPU는 성능을 높이기 위해 깊은 파이프 라인으로 명령을 병렬 실행합니다. 파이프 라인에 항상 명령을 공급해야 높은 성능이 유지됩니다.

 

그런데 조건 분기 명령이 나오면, 분기가 결정되기 전까지 어떤 명령을 미리 인출하면 되는지를 알지 못합니다. 그래서 지금의 고성능 CPU는 예측한 분기의 명령을 실행하는 투기 실행을 합니다. 분기의 결과가 확인되기 전에 예측한 명령어 스트림을 CPU에 가져와 파이프 라인에 보냅니다. 투기 실행의

 

투기 실행은 분기 예측이 틀렸을 때, 파이프라인에서 가져온 명령어를 모두 버리고 올바른 명령을 페치해 다시 처리해야한다는 문제점이 있습니다. 그리고 이 때의 성능 손실은 매우 큽니다. 파이프라인이 10스테이지 이상으로 깊고, 여려 명령을 병령 처리하기 때문입니다. 예측을 잘못하면 10사이클 이상의 손실이 생기며, 명령어 병렬성을 고려하면 최대 수십개의 명령을 버려야 합니다.

 

그래서 분기 예측 정확도의 향상이 중요합니다. 95%의 예측 정확도라면 CPU IPC가 30% 정도 떨어진다고 알려져 있습니다. 1%의 정확도 차이가 성능을 크게 좌우합니다.

 

 

젠 2는 분기 예측을 2단계로 개편 


AMD는 젠 2에서 프런트 엔드의 분기 예측(Branch Prediction)을 크게 수정했습니다. 우선 분기 예측에 단일 계층 신경망인 퍼셉트론 분기 예측 유닛을 도입했습니다. AMD는 이전에 저전력 재규어 계열 CPU 코어에서 신경망 기반(퍼셉트론)의 분기 예측을 도입했으며, 젠의 분기 예측도 그 연장선상에 있습니다. 즉 젠의 분기 예측은 PS 4에 탑재된 재규어의 분기 예측을 확장한 버전입니다. 하지만 퍼셉트론 웨에 TAGE 분기 예측을 도입하면서, 분기 예측을 새로운 단계로 끌어 올렸습니다.

 

10.png

 

젠 2 프론트 엔드

 

11.jpg

 

젠과 젠 2 프론트 엔드의 비교 


TAGE 분기 예측은 기존의 퍼셉트론 분기 예측을 바꾼 게 아니라, 거기에 추가된 분기 예측 유닛입니다. AMD는 퍼셉트론을 L1 분기 예측, TAGE가 L2 분기 예측이라고 부릅니다. 여기서 L1, L2는 캐시 레벨이 아니라 분기 예측의 지연 시간을 나타냅니다. L1 캐시에서 명령어를 꺼내 퍼셉트론 분기 예측에 보내고, L2 캐시는 TAGE 분기 예측을 수행한다는 말이 아닙니다. 또 분기 예측을 2단계로 나눠 진행한다는 말도 아닙니다. 두 분기 예측은 알고리즘 자체가 다릅니다. 

 

젠 2의 프론트 엔드는 명령어 인출 단계에서 먼저 L1 퍼셉트론에서 예측한 값을 얻고, 그 후에 L2 TAGE 값을 얻습니다. 두 예측값이 다르면 L2 TAGE 값을 씁니다. TAGE는 매우 많은 테이블에서 큰 기록을 참조하기에 단일 사이클을 예측하지 못합니다. 그래서 AMD는 퍼셉트론을 빠른 예측에 계속 사용합니다. 거기에 TAGE 예측을 더해 퍼셉트론 예측이 정확한지 검증합니다. 만약 틀렸다면 올바른 예측값을 적용합니다. 

 

젠 2는 퍼셉트론 분기 예측과 TAGE 분기 예측의 2단계 구성이나, TAGE 분기 예측은 기본이 되는 분기 예측(TAGE 태그를 쓰지 않는 예측)과 결합되니, 2단계가 일반적인 구성입니다. 예를 들어 TAGE를 쓰는 RISC-V BOOM2 CPU는 GShare 분기 예측이 1차, TAGE 분기 예측이 2차입니다. TAGE 분기 예측은 L2 수준의 지연이 있는 예측에 사용한다고 예상됩니다.  다만 TAGE 논문에서 베이스 분기 예측은 더 간단한 방식을 가정하고 있기에, L1에 복잡한 퍼셉트론 예측이 들어가는 경우는 흔한 일이 아닙니다. 

 

 

퍼셉트론 분기 예측과 TAGE 분기 예측. 두 가지 새로운 기술의 흐름 

 

CPU 분기 예측은 두 가지 새로운 기술이 나왔습니다. 하나는 신경망 분기 예측이고 다른 하나는 TAGE 분기 예측입니다. 신경망 기반 분기 예측은 1999년에 Towards a High Performance Neural Branch Predictor(Vintan, L. and Iridon, M., IJCNN 1999)에서, TAGE 분기 예측은 2006년에 A case for (partially) TAgged GEometric history length branch prediction(A. Seznec, and P. Michaud. J. Instruction-Level Parallelism 2006)를 통해 소개됐습니다.

 

간단한 신경망인 퍼셉트론을 이용한 분기 예측은 AMD의 젠, 밥캣, 재규어, 삼성의 엑시노스 M1, 오라클의 SPARC T4에 탑재된 S3 코어 등에 채용됐습니다. 나름대로 채용 사례가 있는 기술입니다. TAGE는 분기 예측이라는 분야에선 매우 유명한 기술입니다. 분기 예측 정확도가 매우 높아서 그렇습니다. 분기 예측의 정확도를 비교하는 CBP (Championship Branch Prediction)라는 이벤트에서 TAGE는 1등을 차지한 기록이 있습니다. 분기 예측 정확도를 학회에서 인정받은 것이죠.

 

그러나 TAGE나 TAGE에서 파생된 분기 예측을 실제 CPU에 쓰진 않았습니다. 그건 TAGE의 구현에서 장단점이 각각 있기 때문입니다. TAGE는 다른 히스토리에 병렬로 액세스하기에 하드웨어의 규모가 커지고, 하드웨어 병렬화 구조 때문에 전력 소비량이 늘어납니다. 많은 테이블을 참조하다보니 높은 정밀도의 결과가 나오기까지 대기 시간도 길어집니다. 

 

하지만 최근 들어 TAGE를 쓴 경우가 늘었는데, 젠 2 외에 RISC-V 스타트업인 Esperanto, 높은 싱글 스레드 성능의 CPU 코어 ET-Maxion와 그걸 바탕으로 제조한 RISC-V Boom2 등이 TAGE 분기 예측을 채택합니다. 또한 중국 Phytium Technology의 Arm 서버인 Mars의 Xiaomi 코어도 TAGE을 사용합니다. 젠 2와 Maxion이 TAGE를 채용한 건 7nm 공정과도 관련이 있어 보입니다. 7nm 공정 덕분에 TAGE를 넣어도 될 만큼 트랜지스터에 여유가 생기고, 전력 사용량도 커버할 수 있는 수준이 됐다고 추측됩니다. 

 

12.png

 

TAGE를 사용한 Xiaomi 코어

 

13.png

 

RISC-V 오픈소스 코어인 BOOM2도 TAGE 분기 예측을 채용

 


인텔과의 치열한 분기 예측 기술 경쟁


분기 예측은 CPU에서 매우 중요하며, AMD는 이 부분에서 인텔을 추월하려 노력 중입니다. 인텔은 샌디 브릿지에서 하스웰로 오면서 분기 예측을 크게 바꿨습니다. 그 결과 하스웰 이후 인텔 CPU는 분기 예측 정확도가 매우 높아졌습니다. 다만 그 구조를 공개하지 않았지요. 이것이 분기 예측이 CPU 아키텍처에서 얼마나 중요한지를 보여줍니다. AMD는 성능/전력 경쟁에서 인텔을 이기기 위해 인텔 CPU의 분기 예측 정확도를 따라잡을 필요가 있습니다.

 

TAGE 분기 예측은 인텔 하스웰에서 도입했다고 알려져 있습니다. TAGE 관련 논문인 Branch Prediction and the Performance of Interpreters - Do not Trust Folklore "(Erven Rohou, Bharath Narasimha Swamy, Andre Seznec, International Symposium on Code Generation and Optimization, Feb 2015)에서 하스웰이 TAGE를 썼을 가능성이 높다고 지적하고 있습니다. 그럼 AMD가 인텔이 성공을 거둔 방법을 그대로 도입한다고 볼 수 있겠죠. 애플의 Arm CPU도 TAGE를 쓴다는 소문이 있습니다. 

 

 

각각의 분기 패턴에 최적하된 길이로 예측하는 TAGE 분기 예측 

 

TAGE 분기 예측은 TAgged GEometric history length branch prediction라는 이름대로, 서로 다른 길이(기하급수적 길이)의 분기 예측을 병렬로 수행해, 지금까지 예측하지 못했던 분기 패턴의 검출이 가능합니다.

 

지금의 동적 분기 예측의 본질은 패턴 분석입니다. 간단히 말해서 지난 분기에서 분기했던 것(Taken)과 분기하지 않았던(Not Taken이력을 기록하고, 거기에서 지금의 분기 패턴과 일치하는 패턴을 찾아 다음 조건이 어떤지를 예측합니다. 예측하려는 분기의 바로 전 분기 패턴이 1100001이라 치면, 그것과 일치하는 패턴을 기록에서 찾는 식입니다. 

 

그러나 지금의 고성능 CPU 분기 예측은 한 가지 딜레마가 있습니다. 대다수의 분기는 상대적으로 짧은 History Length를 갖고 예측해야 합니다. 이것의 길이가 충분히 길지 않으면 분기 예측이 어려운 경우가 있습니다. 때로는 100비트 이상, 경우에 따라서는 1000비트 이상의 기록이 필요한 지점이 있습니다. 이걸 필요로 하는 패턴을 예측하지 못하면 분기 예측의 정확도를 높이기 어렵습니다. 그리고 긴 길이에 맞추면 짧은 길이를 예측하기 어렵습니다. 

 

14.png


TAGE 분기 예측을 처음으로 설명한 Andre Seznec(IRISA / INRIA / HIPEAC)의 A 256 Kbits L-TAGE branch predictor(CBP-2, December 2006) 발표.

 

15.png

 

TAGE 분기 예측은 이 딜레마를 해결해, 짧은 히스토리와 긴 히스토리 패턴 모두를 예측하는 기술을 구현했습니다. 우선 히스토리 테이블에 태그를 달아 병렬화된 예측이 태그된 히스토리를 사용, 서로 다른 히스토리 길이(History Length)에서 매칭합니다. 이 때 기록의 길이를 기하 급수적으로 늘리는 게 포인트입니다. 2, 4, 8배 같은 식으로 갑니다.

 

16.png

 

그리고 일치하는 예측 중 가장 긴 기록 길이를 가져갑니다. 최단 기록 패턴이 일치했으나 두번째는 빗나가고, 세번째가 맞았다면 세번째 길이를 쓰는 식.

 

17.jpg

 

TAGE 분기 예측을 채용한 RISC-V BOOM 아키텍처의 문서에선 분기 패턴마다 가장 정확한 예측을 할 수있는 히스토리 길이가 다르다고 나와 있습니다.  TAGE는 여러 종류의 히스토리를 사용하기에 이런 수요를 맞출 수 있습니다. 또 지금까지 취급하지 못했던 긴 히스토리를 사용해 기존의 분기 예측이 갖고 있던 제약을 넘어섰습니다. 

 


BTB 등의 분기 예측 리소스 확장


AMD가 젠에서 채용한 퍼셉트론 분기 예측도 리소스를 늘려 예측 정확도를 향상한다는 특징을 갖고 있습니다. 그럼에도 불구하고 젠 2가 퍼셉트론을 확장하지 않고 TAGE를 추가한 건, 그만큼 TAGE의 효과가 좋아서 그런 듯 합니다. 

 

젠 2는 분기 예측 외에도 분기 버퍼인 BTB(Branch Target Buffer) 리소스도 확장했습니다. 젠은 BTB가 3레벨 구성으로 L0 BTB는 16이니 젠과 다르지 않습니다. 그러나 L1 BTB는 젠 2가 512개로 젠의 256개에서 두 배가 됐습니다. L2 BTB는 젠 2가 7K로 젠의 4K에서 1.75배 늘었습니다. 이 밖에 간접 분기를 위한 Indirect Target Array(ITA)도 512에서 1K로 확장됐습니다.

 

 

BTB 뿐만 아니라 BHT(Branch History Table : 분기 이력 테이블)도 강화됐지만, 이건 TAGE의 분기 예측에 관련된 부분이 공개되지 않았습니다. AMD는 1세대 젠의 BHT가 불도저/파일드라이버의 2배라고 밝혔습니다. 파일드라이버도 퍼셉트론 분기 예측을 썼을 가능성이 있는데, 그럼 알고리즘을 유지하며 BHT 크기를 늘려 정확도를 높였다고 봅니다. 

 

젠 2에서 TAGE 분기 예측을 채용하면서 분기 예측 기술의 경쟁은 새로운 단계에 들어섰습니다. 앞으로는 TAGE 같은 복잡한 예측 기술이 일반 CPU에도 늘어날 것으로 보입니다. 이는 제조 공정 미세화와 Design-Technology Co-Optimization (DTCO) 덕분입니다. 탑재할 수 있는 회로의 수는 늘어나지만, 소비 전력 때문에 클럭을 올리긴 어렵습니다. 따라서 분기 예측에 트랜지스터를 할당하고, 성능 효율을 올리는 게 고성능 CPU에서 합리적인 선택입니다.   



  • profile
    늘푸른해리      히후미 귀여워요 히후미 2019.07.02 04:28
    분기 예측을 두개를 쓴다는건 상상도 못했는데, 이쪽 세계는 정말 별들의 전쟁이네요.
  • profile
    디렉터즈컷 2019.07.02 09:00
    리싸-쑤-!
  • ?
    금산조 2019.07.02 13:48
    CPU 단일처리 성능은 이제 예측기법에 의존해 올려야하는 시대로군요 자동차 엔진처럼 좋게말하면 기술이 성숙된것이고, 안좋게 얘기하면 기술발전의 한계에 다다른듯
  • ?
    quapronuet 2019.07.02 20:26
    뭐 '이제'라기엔 2-30년 전부터 해오던거죠. 애초에 예측이 지난 수십년간의 마이크로아키텍쳐 개발의 핵심 중에 하나에요.

    분기 예측기(branch predictor), 캐시(특히 replacement policy), 프리페처(prefetcher)의 근본이 다 예측이고, 비순차실행(OoO)은 이런 예측이 없이는 그냥 쓸 수가 없는 수준인게 실제 프로그램들의 경우 명령어간 의존성과 분기 명령어의 빈도때문에 예측이 없으면 비순차로 실행할 수 있는 명령어 자체가 거의 없는 수준이거든요.

    그리고 오히려 이미 이런쪽의 극적인 개선이 없다보니 아키텍쳐적인 향상이 둔화된 상황이에요.
    학계에서야 복잡하고 '더 나을지도 모르는' 아이디어들이 이것저것 나오지만 실제 구현에서는 전혀 다른 얘기가 되는 경우가 흔하고, 검증도 힘들고 비용의 문제도 간단하지 않은게 현실이긴 하죠.
  • profile
    白夜2ndT      원래 암드빠의 길은 외롭고 힘든거에요! 0ㅅ0)-3 / Twitter @2ndTurning 2019.07.03 15:59
    신경망예측이나 TAGE예측 둘 다 10여년 전부터 제시된 방법이었다는게 더 신기하네요. 역시 기술은 개발된다고 바로 시장에 적용되는게 아닌가봐요.

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. 등록된 글이 없습니다.
목록
Board Pagination Prev 1 ... 58 59 60 61 62 63 64 65 66 67 Next
/ 67

더함
MSI 코리아
AMD
한미마이크로닉스

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소