벤치리뷰·뉴스·정보/아키텍처·정보분석

[분석정보] Skylake 아키텍처의 수수께끼 2 - 5명령 디코더와 6명령 uOP캐시

tware 2015. 10. 7. 18:00


Core MA 이후의 대폭적인 프론트 엔드 아키텍처 개혁


 Intel의 최신 CPU 마이크로 아키텍처 "Skylake (스카이레이크)"는 아직 세부 사항이 명확하지 않다. 그러나 그 아키텍처는, 당초 예상보다 훨씬 더 큰 확장이 더해져 있다. 본래는 Intel의 CPU 아키텍처 사상의 큰 걸음으로 선전되어야 당연한 확장이다.


 그 중에서도 큰 확장은 Skylake 프런트 엔드 IA 명령 디코더가 5 디코더 유닛으로 있다는 점이다. 이것은 Intel CPU의 계보 가운데 매우 큰 확장이다. 명령 디코드는 말하자면 CPU의 입구. 명령 디코드의 대역이 늘어나면, 그 아래의 실행 파이프 라인에서 병렬 실행 가능한 명령 수가 증가하여, 사이클 당 명령 실행 수 "IPC (Instruction-per-Clock) "가 늘어난다. 명령 디코드 수는, CPU에 있어서 가장 중요한 요소 중 하나로, 4명령 디코드에서 5명령 디코드로 달라진 것은 큰 사건이다.


 Intel CPU는 Pentium III / Banias 세대에서 3명령 디코드 아키텍처를 채용하고 있었다. 그것이 2006년의 초대 "Core Microarchitecture (Core MA)"인  "Merom (메롬 = 콘로) "세대에서  4명령 디코드로 확장되었다. 이 확장은 Intel이 CPU 브랜드 이름을 바꿀 정도의 큰 변화였다. 이후 Intel의 고성능 CPU는 4 명령 디코드 아키텍처를 굳혔다. 그동안 프런트엔드의 큰 확장은 Sandy Bridge에서 더해진 uOP (마이크로 옵스) 캐시 정도였다.


 4명령 디코드로 부터 5명령 디코드로, Skylake의 명령 디코더는 Merom 이후 프런트엔드 아키텍처의 근본적인 확장이 된다. 2006 년부터 9 년만의 프론트엔드 확장이다. CPU 아키텍처 적으로 보면 이 확장은, Core MA의 때처럼 대대적으로 노래하면 좋은 것인데, 그렇게 하지 않았다. 애초, Intel의 Skylake 아키텍처의 슬라이드에는 5명령 디코드라고 명기되어 있지 않았다. 마치 Intel은 이만큼 중요한 아키텍처 확장을 감추려 하는 것 같다.


Intel CPU의 프론트 엔드 아키텍처의 변천


Skylake 다이


Skylake 마이크로 아키텍처




기존의 명령 디코더를 한층 확장


 Skylake의 명령 디코더는, 복잡한 명령을 디코드 가능한 "콤플렉스 디코더 (Complex Decoder)"가 1개에, 간단 명령만을 디코딩 가능한 심플 디코더 (Simple Decoder) 4개의 조합이다. 기존은 콤플렉스 디코더가 1에, 단순 디코더가 3의 조합이었다. Skylake는 단순 디코더가 1 개 늘었다.


 콤플렉스 디코더는 간단한 명령도 디코딩 가능하다. 따라서 Skylake는 각 사이클에 최대 5 개의 IA 아키텍처럴 명령을 디코드하고, 5개의 내부 명령 "uOP (Micro-Operations)"을 실행 파이프 라인에 발행 가능하다.


 참고로, 디코딩 스테이지 단계에서, 컴플렉스 디코더를 늘린다는 선택은 Skylake에서도 채택하지 않았다. 어느 CPU 메이커의 아키텍트는 "x86 업계에서는, 명령 병렬성을 최대로 발휘 가능한 것은 단순 명령 때 정도라는 것이, 암묵적으로 이해되고 있다. 복잡 명령에서는 병렬화가 어렵기 때문에 디코더 복잡하게 하는 만큼의 의미가 있는지 어떤지는 의문스럽다 "고 그 배경을 분석한다.


 실제로, 가변길이로 명령어 형식이 복잡 프리픽스가 많은 x86 명령의 경우, 기술적으로 가장 어려운 것은, 명령 디코드의 전 단계의 명령 적출이다. 각 아키텍처럴 명령의 프리픽스가 어떤 바이트로 있는지를 판별하는 것이 어렵다. 명령 수가 증가할수록 어려워지고, 또 링크 체인지 프리픽스 등이 붙으면, 척출 알고리즘 자체가 작동하지 않기도 한다. CPU 아키텍쳐에 따라서는, L1 명령 캐시에 취입 단계에서 명령의 적출을 행하는 경우도 있다. 이 부분을 Skylake에서 어떻게 해결하는지는 아직 알 수 없다.


 또 Skylake에서는 2개의 아키텍처럴 명령을 복합한 1개의 uOP로 융합시키는 "Macro-Fusion"도 계속 지원하고 있다. 따라서 Macro-Fusion이 가능한 명령 짝이 오는 경우는, 최대 6개의 아키텍처럴 명령을 디코드 가능할 것이다. uOPs의 출력은 Macro-Fusion 의해 1개 줄어들기 때문에, 각 사이클에 5개의 uOPs로 된다.


 또 Skylake에서는 연산과 로드 / 스토어의 복합된 CISC (Complex Instruction Set Computer) 형 명령을, 1개의 uOP로 변환하는 Micro-OPs Fusion도 계속 지원하고 있다. 따라서 실제로는 디코더로 부터 출력되는 uOPs의 어느정도는 융합된 Fused uOPs로 된다. 디코더에서의 uOPs의 출력은 5개 / 사이클 대역이지만, 디스패치 단계에서 실행 유닛으로 발행되는 uOPs의 수는 한층 늘어난다.





대폭 강화된 Skylake의 uOP 캐시


 Skylake에서는 디코딩 후의 uOPs를 유지하는 "uOP 캐시"도 계속 장비하고 있다. 복잡한 IA 명령으로 부터 디코딩을 생략하고, 디코딩 된 uOPs를 캐시하는 것으로 효율적인 명령 공급을 실현한다. 전력 소비가 많은 명령 디코딩을 생략하기 때문에, 전력면에서의 효과도 크다. uOP 캐시는 x86 / x64 계 아키텍처 CPU에서 성능과 전력면에서 중요한 역할을 하고 있다.


 명령 디코드의 확장과 마찬가지로, uOP 캐시에서도 Skylake는 큰 확장이 더 해지고 있다. Skylake에서는 uOP 캐시에 적중한 경우는 최대 6개의 uOP를 실행 파이프 라인에 발행 할 수있다. 명령 디코더가 5와이드로 확장되었을뿐 아니라, 실행 파이프 라인으로 명령 공급은 6 와이드로 확장 되었다.


프론트엔드로 부터의 uOPs 발행은 기존의 4 uOPs에서 6 uOPs로 1.5 배 증가했다.

그림은 일부 추측을 포함


 Intel에 따르면, Skylake에서는 uOP 캐시로부터 uOPs 페치는 최대 6 uOPs / 사이클이다. Sandy Bridge나 Haswell 등 기존 아키텍처는 uOP 캐시로 부터 페치는 4 uOPs / 사이클이었다. 이 부분의 대역폭은 1.5배 증가했다. 디코더 라인으로 부터 uOP 출력은, 최대 5 uOP / 사이클이므로, uOP 캐시에 적중한 경우의 6 uOPs / 사이클 쪽이 파이프 라인의 하단에 대한 uOP의 공급은 보다 많을 것이다.


 CPU의 명령 디코더는 애초 상류의 명령 캐시로 부터 페치 윈도우에 제약된다. 캐시로 부터 명령을 로드하는 명령어 페치 윈도우가 크면, 전력 소모가 커져 낭비도 늘어난다. Intel CPU는 16-byte 씩 캐시로 부터 로드하여 디코딩하는 16-byte 페치 윈도우를 지금까지 채용해 왔다. Skylake에서도 명령어 페치는 16-byte 윈도우인 채 머물고 있는 것으로 보인다. 페치 윈도우가  좁은것 위에 IA 명령 세트의 경우는, 명령 길이가 가변이기 때문에 명령어 페치 윈도우로 부터 페치 가능한 명령수의 예측이 어렵다.


 그런 반면 디코더 아래의 레벨 0 캐시로 있는 uOP 캐시는 이러한 제약이 없다. 디코더에서 uOPs 출력을 캐시하기 때문에 페치 대역의 제약이 없다. 다만 Intel의 uOP 캐시는 L1 명령 캐시를 맵핑하는 히트 논리를 채용하고 있다. 이 점은 내부 명령어 캐시에서도 Pentium 4의 추적 캐시와 크게 다른 점으로 컨트롤이 더 심플하게 된다.


 Intel의 아키텍트에 의하면, Sandy Bridge / Haswell 계에서는 32-byte 페치 윈도우의 단위로 uOP 캐시에 맵핑했다. 그 반면 이번​​ Skylake의 경우, uOP 캐시는 64 byte 페치 윈도우분을 매핑이 가능하다 한다. 실제 페치 윈도우 보다도 넓은 명령어 페치 윈도우 입도로 uOPs를  캐시하는 것으로 최대 6 uOPs / 사이클의 명령 공급이 가능하다는 것이다.



수수께끼가 남는 Skylake 아키텍처와 성능


 이와 같이, Skylake 프론트엔드는, uOP 캐시에 의해서 명령 디코드를 생략 가능할 뿐 아니라, 가상적으로 명령어 페치 대역폭 늘리는 것이 가능한 구조로 되어있다. 또 Intel의 uOP는 전통적으로 고정 길이이기 때문에, 캐시 라인에 겹납 가능한 명령수도 고정된다 (다만 실제로 저장되는 명령 수는, 대응하는 L1 명령 캐시로부터 페치 윈도우에 포함된 명령수로 제한된다).



 uOP 캐시 적중때의 명령 공급의 대역이 기존의 Haswell 계의 1.5 배로 늘어난 Skylake. 그렇게 생각하면 Intel이 Skylake에서 아웃 오브 오더 자원을 대폭 강화한 이유도 이해할 수 있다. 아웃 오브 오더 엔진에 대한 공급 가능한 명령수 / 사이클이 크게 늘어난 것으로, 아웃 오브 오더를 위한 하드웨어 리소스를 늘릴 필요가 생겼다. IPC (Instruction-per-Clock)을 높이기 위해 그 균형이 필요했다.


 그런데 Skylake 벤치 마크 결과는, 1.5 배의 명령 대역이라는 확장에 합당한 숫자는 보이지 않는다. Skylake의 비밀은 이 부분에 있는 것 같다. Skylake의 아키텍처 확장 목적은, 어쩌면 기존과 같은 CPU 성능의 향상이 아닌, 미세화 된 공정에서의 생산성 향상에 있을지도 모른다.


2015년 10월 7일 기사.



[분석정보] GPU 컴퓨팅 기능을 강화한 Skylake의 GPU



[분석정보] 실행 모델을 변경한 SkylakeGPU 코어, 보다 일반적인 GPU 컴퓨팅으로 향한 설계



[분석정보] 인텔의 차세대 마이크로 아키텍처 스카이레이크



[분석정보] Intel의 새 메모리 3D XPoint가 DIMM으로 투입되는 배경



[분석정보] Skylake의 SpeedShift로 P스테이트의 소비 전력 삭감을 실현



[분석정보] 인텔(intel) CPU의 큰 이정표가 될 하스웰(Haswell) 드디어 등장



[분석정보] IDF 2010 왜 Sandy Bridge는 성능이 높은가?



[벤치리뷰] 인텔 스카이레이크 코어 i3 6100 리뷰



[벤치리뷰] 스카이레이크 Core i3-6100



[벤치리뷰] 코어 i3 6100, i3 6300, i3 6320 테스트



[벤치리뷰] Intel 스카이레이크 코어 i5 6600K 리뷰



[벤치리뷰] Intel Skylake: Core i7 6700K review



[벤치리뷰] 스카이레이크 아키텍처를 채용한 Core i7-6700k



[분석정보] AMD가 차세대 Zen 개요를 더욱 밝혀