본문 바로가기
Moblie/H/W

모바일시장에 대한 인텔의 반격 실버몬트 아키텍쳐

by 에비뉴엘 2013. 12. 17.
반응형

22nm에 이르러 5년만에 아톰 아키텍처를 바꾸다.

 

인텔은 22nm 공정으로 제조하는 2세대 아톰계 CPU 마이크로 아키텍쳐 「Silvermont (실버몬트) "을 탑재한 아톰 제품군을 올해 (2013년) 후반부터 투입하기 시작한다. 스마트폰용의 "Merrifield (메리필드)" 모바일기기,타블렛용의 "Baytrail (베이트레일)」서버 전용의 「Avoton(아보톤) "통신 기기 용의 "Rangeley(랭글리」등이 Silvermont(실버몬트) 코어 기반으로합니다.




 인텔은 초창기 아톰인 「Silverthorne (실버손) "에서 5년 동안, 아톰의 마이크로 아키텍쳐를 줄 곧 유지해 왔다. 

첫번째 45nm 공정 아톰계열 코어 아키텍처 "Bonnell (본넬)」은, 32nm 프로세스의 「Saltwell (솔트웰)」에도 계승되었다. 메인스트림 & 하이엔드PC용 CPU에서 2년에 1번 아키텍처를 쇄신하는 것과는 대조적이다.


 드디어, 인텔은 모바일시장의 중요성을 깨닫고 Silvermont(실버몬트)에서 5년만에 아키텍처를 쇄신한다. 

아웃 오브 오더 (Out-of-Order) 실행을 채용하여 단일 스레드 성능을 향상시키고 모바일에서는 4코어에서 멀티코어 제품 (내부 인터커넥트으로 8코어까지 가능)도 준비한다. 즉, 코어 당 성능을 향상하면서 코어를 작게 유지하고 멀티코어를 쉽게하는 구조이다. 상반되는 요구를 목표를 충족하기 위해 인텔은 Silvermont(실버몬트)를 

정성깊이 설계했다.





 중요한 포인트는 x86 계열 명령어를 2명령어 디코딩 채 아웃 오브 오더 실행 한 것. Silvermont(실버몬트)에도 명령 디코드 폭은 3명령을 펼치고 있지 않다. 

실행 유닛도 정수 연산 유닛이 2개, 부동 소수점 / SIMD (Single Instruction, Multiple Data) 연산 유닛이 2개, 로드/스토어 유닛이 1에서 오더 실행에서 2 명령어 디코딩이었다 종래와 거의 다르지 않다. 아웃 오브 오더 윈도우도 공격적으로 확대하지 않고 최소화하고있다. 다소 얌전한 디자인이다.


 거기에는 CPU를 복잡하게 CPU 코어의 다이 (반도체 본체) 영역을 확대시켜 않도록하는 설계 사상이 보인다. 원래 아톰계열은 Cortex-A8과 Cortex-A9 대해 단일​​코어 성능은 유리하기 때문에 코어를 대형화하기보다는 CPU 코어를 작게두고, 멀티코어 향태로 변화할려는것으로 보인다.



▲실버몬트 아키텍쳐 특징



CISC 2 명령, RISC 3 명령이 저전력 코어 동향

 


Silvermont를 AMD의 저전력 CPU 코어와 비교하면 비슷한 전략을 펼친다는것을 알 수 있습니다.. 

AMD의 x86 계열의 저전력 CPU 코어 인 「Bobcat (밥캣)」와 「Jaguar (재규어) '도 2명령 디코딩 아웃 오브 오더 실행. Intel과 AMD에서 저전력 코어의 기본 구성은 같다.




 대조적으로, 시장이 겹치는 ARM 계열 CPU 코어 아키텍처는 Cortex-A15와 Krait가 3명령 디코딩 아웃 오브 오더 실행이되고있다. 

명령 디코드 대역에서는 ARM 쪽이보기 넓은 것처럼 보이지만 실제로는 그렇지도 않다. 명령어 세트 아키텍처 (ISA : Instruction Set Architecture)가 다르기 때문이다.





 ARM의 각 ISA는 RISC (Reduced Instruction Set Computer) 계에서 상대적으로 간단한 작업의 명령 체계가있다. 인텔의 IA (x86) 계 ISA는 CISC (Complex Instruction Set Computer) 계에서 여러 작업을 포함 명령을 많이 갖추고있다. 따라서 RISC 3 명령 디코드와 CISC의 2 명령어 디코딩은 디코더가 생성 할 수있는 작업의 밀도는 원리 적으로는 크게 다르지 않을 것이다.


 올해부터 내년 (2014 년)는 페이즈에서 보면, 저전력 CPU는 CISC 2 명령 디코드 & 아웃 오브 오더 실행하거나 RISC 3 명령 디코드 & 아웃 오브 오더 실행으로 수렴하고있는 것으로 보인다. 이것이 저전력 CPU의 파워와 성능의 균형 적절한 떨어 무렵일지도 모른다.



아웃 오브 오더 화로 짧아 진 파이프 라인

 


파이프 라인 단수도 Bonnell 계와 Silvermont 계에서 큰 차이가 없다. Silvermont 정수 연산 파이프 라인 단수는 14 스테이지에서 Bonnell의 16 스테이지보다 약간 짧아졌다. 그러나 파이프 라인이 짧아 주원인은 Bonnell 아키텍처가 CISC (Complex Instruction Set Computer) 명령의 오더 실행에 최적화 된 반면 Silvermont는 아웃 오브 오더 실행이 때문이다.




 위 그림의 왼쪽은 Bonnell 파이프 라인, 오른쪽이 Silvermont 파이프 라인이다. Bonnell는 CISC 서비스 파이프 라인 구성을 가지고 있었기 때문에 파이프 라인이 길었다 것을 알고있다. 구체적으로는 ALU에 의한 실행 단계 전에 L1 데이터 캐쉬 액세스의 무대가 새겨 져있다. 


 Bonnell과 Silvermont는 아웃 오브 오더 실행과 관련된 부분을 제외하면 큰 차이가 없다. 따라서 Silvermont에도 아키텍쳐 적으로는 동작 주파수에 큰 차이가 나지 않게된다. 물론, 트랜지스터 성능 향상과 구동 전압에 따라 실제 제품의 동작 주파수는 높다. 덧붙여서, ARM의 Cortex-A15는 정수 연산 15스테이지. RISC 쪽이 명령 디코드의 부담이 상대적으로 적은 것을 생각하면, A15 쪽이 약간 깊은이라고 말할 수 있을지도 모른다.






명령어를 미리 디코딩 Atom 계열 아키텍처



인텔은 Silvermont에서 성능을 높이면서 전력 효율을 향상 시킨다고하고있다. 거기에는 FinFET 3D 트랜지스터의 22nm 프로세스에 의한 기술면에서의 이득도 있지만, 인텔은 아키텍처면에서도 주의깊게 성능을 향상하면서 전력소모를 억제했다.






Silvermont 구조를 상단의 프런트 엔드에서 살펴보면 언뜻 보면 Bonnell과 크게 다르지 않지만, 몇 가지 차이가​​ 있다는 것을 알 수있다. 분기 예측 유닛의 구성이나 테이블의 규모가 바뀐 외에도 다중 스레드 기능이 없어진 것으로 thread마다 있던 버퍼가 싱글이되었다.


 Silvermont에서는, 명령 프리 페처 공유 L2 / 버스에서 명령을 인출하여 L1 명령 캐시에 채웁니다. 아톰 초기작 Bonnell는 L1 명령 캐시에 통합 단계에서 x86 명령의 프리 디코딩을 행하고 있었다. 프리 디코딩 비트 군을 붙이고, 가변 길이의 x86 명령의 명령 구분 등을 표시한다. 명령 유형 판별도 행한다고 볼 수있다.


 이 구조의 목적은 프리 디코딩 파이프 라인의 이전 캐시 라인 필 단계에서 행하는 것으로, 파이프 라인의 디코드의 부담을 경감하고 디코딩 단계를 단축하는 것이다. 이 아이디어는 인텔것이 아니라 원래는 AMD가 채용했다. Silvermont과 Bonnell는 프런트 엔드의 명령 디코드 파이프 라인이 변하지 않기 때문에 미리 디코딩의 구조도 변경되지 않아보인다.


 L1 명령 캐쉬로부터 명령어 인출은 파이프 라인에서 3 단계. L1 명령 액세스이다 인출 지연 사이클 수는 Bonnell과 변함 없다. 페치 대역은 Intel은 좁아 야 경향이 Bonnell는 16-byte 폭 이었으므로, Silvermont도 마찬가지다 것으로 보인다. 무엇보다, 아톰계열은 명령 디코드 대역도 2 명령어와 좁기 때문에 균형 잡혀있다.




프런트 엔드에서는 분기 예측이 강화

 


명령어 인출 파이프 라인은 분기 예측의 구성이 Bonnell에서 변경되었다. Bonnell 아키텍처는 분기 예측 알고리즘은 일반적인 GShare 알고리즘이었다. Silvermont 없음 GShare 그대로 기본 분기 예측 알고리즘 자체의 공격적인 개혁을 이루지 않은 것으로 보인다.


 하지만 간접 분기를위한 Indirect Branch 예언자가 참가했다. 분기 어드레스를 레지스터 또는 메모리에 의해 특정되는 간접 분기는 Android의 Dalvik 같은 실행 환경에서 자주 나타나기 때문에 모바일에 대상 자리를 잡은 CPU에서도 예측이 중요 해지고있다. Silvermont에서는이를위한 전용 장치가 마련됐다.


 또한 Intel의 원래 Silvermont 그림에서는 분기 예측 유닛이 2 개로 분할되어있다. 이는 분기 예측이 2 단계로 나뉘어 된 때문으로 풀이된다. 첫 번째 유닛 분기 주소의 버퍼이다 BTB (Branch Target Buffer)와 통화에서 반환 스택의 RSB (Return Stack Buffer)가 배치되어있다. 두 번째 유닛에 GShare 및 간접 분기, RSB가되고있다.


 Intel은 Silvermont는 예언자 항목을 대형화하여 분기 예측 기능을 강화했다고 설명하고있다. 일반적으로 분기 기록을 거두는 BHT (Branch History Table)를 탑재한다고 분기 예측은 향상되지만, 분기 예측 시간이 더 걸리게된다. Intel의 Core 브랜드의 CPU 아키텍처에서는이 문제를 해결하기 위해 Nehalem (네할렘)에서 분기 예측은 2 계층 구조를 도입했다. Silvermont의 경우 BHT를 참조하여 예측 결과를 얻을 스테이지가 후단되어있는 것 같다.


x86 명령을 거의 그대로 MacroOP하는 Silvermont

 


인출 된 명령어는 프리 페치 버퍼로 가져와 명령 디코더에 최대 2 명령어 씩 보낸다. 멀티 스레딩의 Bonnell는 여기에서 버퍼가 2 스레드 소요되어 있었지만, 단일 스레드 Silvermont에서는 버퍼는 1 계통으로되어있다. 아래 그림은 왼쪽이 Bonnell, 오른쪽이 Silvermont 프런트 엔드 부분이다.






 명령 디코더는 2-way에서 x86 명령어를 최대 2 명령어 동시에 디코딩 할 수있다. 2 명령 디코드 있다는 점은 Bonnell과 같다. 그러나 Silvermont는 명령 디코더 자신이 향상된한다. Bonnell는 디코더 부분에 제약이있어 1 명령어 만 디코딩 할 수없는 경우도 많았다. Silvermont에서는이 문제가 해결되고 더 많은 경우 2 명령을 병렬 디코딩 할 수있게 된 것으로 보인다.


 기존의 Atom Bonnell는 일반적인 x86 명령에서는 거의 그대로 1 대 1 대응으로 내부 명령어로 디코딩하고 있었다. CISC 형식의 x86 명령에서는 Load-Op-Store 형식의 명령어의 경우로드 작업과 ALU (Arithmetic Logic Unit) 운영, 상점 운영이 1 명령에 포함된다. 데이터를 메모리에서로드하여 작업을 수행하고 데이터를 다시 메모리에 저장한다.


 이것을 Intel 형 마이크​​로 아키텍처 RISC (Reduced Instruction Set Computer) 바람의 마이크로 오퍼레이션 (uOP)으로 분해하면로드 uOP, ALU uOP 저장소 uOP 군에서 최대 4 개의 uOP가 생성된다. 하지만 아웃 오브 오더 실행 트랙하여야한다 uOP의 수가 많으면 그만큼 CPU의 프론트 엔드가 복잡 전력 소비도 증가된다.


 초대 Atom이다 Bonnell는 CISC 명령어 자체는 분해하지 않고 오더 형 파이프 라인 쪽을 CISC 명령어의 실행에 최적화했다. 대조적 Silvermont는 아웃 오브 오더 실행이기 때문에 파이프 라인이 크게 다르다. 그러나 명령 디코드 단에서는 Silvermont도 x86을 거의 그대로 내부 명령이다 MacroOP로 변환하고 있다고한다. Bonnell 마찬가지로로드-ALU-스토어의 경우에도 1 개의 MacroOP 그대로 유지된다.


 로드와 ALU를 융합시킬뿐만 아니라 상점을 포함한 x86 거의 그대로의 MacroOP로 취급하여 MacroOP의 입도가 커진다. MacroOP하는 것으로, 명령의 처리를 용이하게하여 CPU를 심플하게 고정 소비 전력을 억제 할 목적이다. Intel의 Core 계의 마이크로 아키텍처의 Fused uOP에 비해 더 많은 작업을 1 MacroOP에 통합한다. Silvermont의 아웃 오브 오더 윈도우 32 항목과 상대적으로 작은 것은 x86에 가까운 MacroOP의 형태로 다루고 있기 때문으로 보인다.


 사실 Silvermont에서는 실행 유닛은로드 / 저장 및 실행에 분할되어있다. 따라서로드 및 실행, 저장소 Load-Op-Store 형의 경우 MacroOP가 먼저 로딩에 게시 된 데이터가로드 된 후 MacroOP가 ALU에 게시되어 ALU를 종료하고 저장소가 발행 될 것으로 보인다. uOP으로 분해되어 발행되는 것으로 간주 할 수도 있지만, 어쨌든 1 개의 MacroOP 속의 운영 끼리는 의존성이있는 것이 명료하기 때문에 관리가 용이​​하게된다.



코어 아키텍쳐와의 큰 차이가 있다.

 

Silvermont는 명령 디코드 단계로 후 MacroOPs 큐가있다. 이 큐가 실질적으로 루프를위한 버퍼 "Loop Stream Buffer」이있다. 짧은 루프는 여기에 버퍼 한 MacroOPs에서 스케줄러에 발행하는 것으로, 프런트 엔드 전력을 삭감 할 수있게된다. 같은 구조는 Core 계의 마이크로 아키텍처에서도 Nehalem (네 할렘) 이후 uOPs 캐시 형태로 갖추고있다. Silvermont 분들은 루프를 감지하여 MacroOP를 재사용 할만한보다 단순한 구조다. Cortex-A15 역시 디코딩 스테이지 뒤에 루프 버퍼를 갖추고있다.


 Intel은 Silvermont에서 루프 스트림 버퍼가 강화됐다고 설명하고있다. Bonnell이 큐 부분이 스레드마다 2 개의 16 항목으로 나누어 져 있었다. Silvermont는 2 스레드 분의 항목이 스레드에서 사용할 수있게 된 것으로 보인다.


 이렇게 파이프 라인의 전단 만 봐도 아톰과 코어 전략의 차이는 명료하다. Intel은 Atom 계열의 CPU 코어는 작게두어 일정한 속도로 확장하고 Core 계의 성능우위 CPU 코어와 차별화 가려고하고있다. 아래는 Haswell (하즈웰)의 블록 다이어그램에서 Silvermont과 비교하면 복잡도가 훨씬 높은 것을 알 수있다. 최대 4 명령 디코드 (Macro-Fusion이 가능하므로 실제로는 5 명령)에서 명령 실행 파이프는 8. 이렇게 보면 상대적으로 Core 시스템은 CPU 코어를보다 파워풀하게하는 방향으로 대조적 아톰 계열은 다소 얌전한 확장되어있는 것을 알 수있다.





반응형

댓글