1P by neo 4달전 | favorite | 댓글 1개

Zen 5의 2-Ahead Branch Predictor Unit: 30년 된 아이디어가 새로운 트릭을 가능하게 하는 방법

  • 서론

    • AMD의 Zen 5 아키텍처는 기존 Zen 아키텍처를 완전히 재설계한 것임
    • 가장 중요한 변화 중 하나는 새로운 2-Ahead Branch Predictor Unit임
    • 이 아이디어는 30년 전 논문에서 유래되었음
  • Branch Predictor의 중요성

    • 컴퓨터는 프로그램을 메모리에 저장하고 이를 실행함
    • 프로세서는 명령어를 가져오고 실행하는 전단부와 후단부로 나뉨
    • 조건부 점프는 파이프라인을 채우는 데 큰 도전 과제임
    • 잘못된 예측은 파이프라인을 플러시하고 다시 시작해야 함
    • 따라서 프로세서는 가능한 한 정확하게 프로그램 명령어 시퀀스를 예측해야 함
  • 2-Ahead Branch Predictor의 등장

    • 1990년대 초반부터 제안된 아이디어임
    • TAGE predictor와 같은 더 효율적인 방법이 개발되었음
    • 그러나 단일 코어 성능을 향상시키기 위해 2-Ahead Branch Predictor가 다시 주목받고 있음
  • x86 아키텍처의 이점

    • x86은 고정 길이 명령어를 가진 다른 ISA보다 2-Ahead Branch Prediction에서 더 큰 이점을 얻음
    • x86은 명령어 경계를 결정하는 데 더 복잡한 처리가 필요함
    • Zen 5는 두 개의 32바이트 페치 파이프와 4-와이드 디코드 클러스터를 사용함
  • Seznec 논문의 구현

    • Seznec 논문은 2-Ahead Branch Predictor를 구현하는 방법을 설명함
    • Zen 5는 이 논문의 권장 사항을 따름
    • 두 개의 32바이트 페치 파이프와 6-와이드 듀얼 포트 오프 캐시를 사용함
    • L1 BTB와 L2 BTB를 사용하여 예측 정확도를 높임
  • 결론

    • Zen 5의 2-Ahead Branch Predictor는 Zen 아키텍처의 중요한 변화임
    • 이 새로운 예측기는 향후 Zen 코어 개발에 큰 도움이 될 것임

GN⁺의 정리

  • Zen 5의 2-Ahead Branch Predictor는 30년 전 아이디어를 현대적으로 재해석한 것임
  • 이 기술은 프로세서의 명령어 예측 정확도를 높여 성능을 향상시킴
  • x86 아키텍처의 복잡성을 해결하는 데 특히 유용함
  • 이 기사는 CPU 아키텍처와 성능 최적화에 관심 있는 사람들에게 유익함
  • 유사한 기능을 가진 다른 프로젝트로는 Intel의 Golden Cove 아키텍처가 있음
Hacker News 의견
  • branch prediction에 대한 훌륭한 설명이 있음
  • SMT 성능이 흥미로울 것 같음, Zen5c에서 192 Core 또는 384vCPU를 제공함. Zen 6c에서는 256 Core를 기대할 수 있음. Dual Socket 1U Server에서 512 Core와 1024 vCPU 가능성 있음
    • 2014년 웹 앱 스케일링 문제를 단일 서버로 해결할 수 있음, 냉각 문제만 해결하면 됨
    • 1 RPS per vCPU로 1000 RPS 가능, 캐시 히트 제외
    • HN 프론트 페이지도 1000 페이지 뷰 per second를 넘지 않음
  • 수십 년 된 논문이 하드웨어 발전으로 "최첨단"이 되는 경우가 흥미로움
    • 예: Z-buffer, 3D 비디오 게임에서 사용됨
    • 처음 논문에 발표될 때는 주요 주제가 아니었음, 메모리 요구량이 많았기 때문
    • 몇십 년 후 메가바이트가 저렴해지면서 모든 실시간 3D 렌더러가 사용하게 됨
  • 추측 예측기는 개인 데이터를 유출하는 여러 공격에 취약함. 많은 일반적인 ISA가 취약한데, 이러한 공격의 영향을 줄이기 위한 조치를 취하고 있는지 궁금함
  • 이 분야의 초보자로서 2-ahead branch predictor가 무엇인지 명확하지 않음
  • 더 많은 branch hints가 필요할 것 같음
    • Cold, warm, warmer, 기본값으로 hot 생략? 모든 분기를 cold로 설정하고 하나만 제외하는 것이 나쁜 아이디어일지 궁금함
    • 조건부 분기가 있을 때 두 가지 가능한 분기를 모두 가져와 준비하고 잘못된 것을 버리는 것이 왜 어려운지 궁금함
  • 더 많은 메모리 대역폭이 필요함, 소비자용 AM5 소켓의 두 메모리 채널은 성능에 비해 부족함
    • M2 Max로 이동했는데 메모리 대역폭 개선이 데이터 작업을 가속화함. 무거운 멀티태스킹에서도 Zen 설정의 좁은 메모리 파이프가 자주 막힘
  • Zen 5가 두 개의 스레드를 활성화할 때 디코드 클러스터와 동반된 fetch 파이프가 정적으로 분할됨
    • 이는 하이퍼 스레딩 성능에 큰 향상을 줄 것 같음. Zen1에서 HT로 인해 약 25% 빨라짐. 최신 모델에서 테스트한 사람이 있는지 궁금함
  • 여전히 2-ahead branch predictor가 무엇인지 모르겠음