[모바일] 삼성 엑시노스 M3: 더 넓어진 아키텍처로 50% 이상의 IPC 증가를 달성
이 글은 아난드텍의 'The Samsung Exynos M3 - 6-wide Decode with 50%+ IPC Increase(링크)'를 전문 번역한 글입니다.
엑시노스 9810의 발표는 2018년의 첫 번째로 쏟아져나온 굵직한 소식들 중 하나이고 매우 흥분되는 소식이다. 싱글 스레드 성능이 두 배로 증가했다는 소식은 모두의 눈길을 사로잡았다. 엑시노스 9810은 최대 2.9GHz로 구동되는 네 개의 엑시노스 M3 커스텀 코어와 1.9GHz로 구동되는 Cortex A55 코어 네 개로 구성되었다.
일반적으로 삼성이 주장하는 최대 구동 클럭은 실제로 출시되는 모바일기기에서 구동되는 클럭과 일치하지 않았다. 엑시노스 8890은 최대 2.7GHz로 동작한다고 발표되었지만 실제 갤럭시 S7에 탑재된 칩은 2.6GHz의 최대 구동클럭을 가졌다. 또, 엑시노스 M2 역시 DVFS 테이블에서 봤을 때는 최대 2.8GHz까지 구동될 수 있지만 실제로 출시된 모델은 전력 효율적인 2.3GHz 클럭으로 구동되었다. 이런 선례와 비슷하게 갤럭시 S9에 탑재될 엑시노스 9810의 동작 클럭 역시 2.9GHz보다 낮을 것으로 보인다.
당연히 삼성이 주장하는 성능향상폭은 엑시노스 9810의 클럭이 2.9GHz일때의 수치라는 것을 기억해야 한다. 하지만 싱글 스레드 성능이 두 배가 향상되려면 이런 클럭 향상폭을 제외하고도 매우 큰 성능 향상이 필요하다. 따라서 이 성능 차이는 마이크로아키텍처의 변화에서 온 것으로 볼 수 있다. 삼성의 주장대로 싱글스레드 성능이 2배 향상되기 위해서는 실효 IPC 값이 55%에서 60% 정도는 올라야 한다.
엑시노스 9810이 공식 발표되면서, 삼성의 기술진들은 새로운 M3 마이크로아키텍처에 대한 정보에 대한 대외비를 유지할 필요가 없어졌다. 지난 수 년동안 CPU의 마이크로아키텍처를 분석하기 위한 주요 창구 중 하나는 회사가 GCC나 LLVM 컴파일러 등의 오픈소스 프로젝트에 제출하는 정보였다. 다행히도 삼성은 훌륭한 오픈 소스 기여자이며 어제 삼성은 M3 마이크로아키텍처의 머신 모델에 대한 내용을 담은 첫 번째 패치를 게시했다.
지난 삼성의 마이크로아키텍처와 M3 마이크로아키텍처의 차이를 더 잘 알아보기 위해 잠깐 엑시노스 M1과 M2의 고수준의 파이프라인 구성을 살펴보자.
엑시노스 M1과 M2 마이크로아키텍처는 4개의 명령어를 디코드하고 디스패치 할 수 있는 프론트엔드를 보유하고 있다. 이 4-wide 디코드 단계는 당시 ARM의 Cortex A72와 A73이 각각 3-wide와 2-wide 명령어 디코더를 가지고 있던 것을 생각해보면 보편적인 것은 아니었다. 다만 2-wide의 A73 마이크로아키텍처의 IPC가 삼성의 엑시노스 M1, M2와 크게 차이가 나지 않았던 것을 감안해 볼 때 삼성 LSI의 첫 자체 개발 아키텍처인 엑시노스 M1, M2의 프론트엔드가 ARM의 프론트엔드보다 기술적으로 뒤쳐졌다고 설명할 수 있겠다. 삼성의 M1과 M2의 백엔드는 아래와 같은 9개의 실행 포트를 가지고 있다 :
- 정수 덧셈을 위한 두 개의 간단한 ALU
- 정수 곱셈, 나눗셈을 위한 좀 더 복잡한 ALU 하나
- 로드 유닛 하나
- 스토어 유닛 하나
- 두 개의 분기예측 포트들
- 두 개의 부동소수점과 벡터 연산 포트
엑시노스 M1과 M2는 9-wide의 백엔드를 가진 머신이다. 이와 비교해서 A73은 최대 8개의 마이크로옵을 7개의 파이프라인들에 디스패치하고, A75는 최대 11개의 마이크로옵을 8개의 파이프라인들에 디스패치한다. 물론 이들은 매우 다른 마이크로아키텍처를 가지고 있고 각 파이프라인의 동작 역시 크게 다르기 때문에 단순한 숫자 비교는 금물이다. 명령어 페치 단계에서부터 최종 writeback 단계까지 엑시노스 M1, M2는 최대 13 스테이지 깊이의 파이프라인을 가지고 있다. 이 수치는 A73과 A75의 파이프라인 스테이지보다 두 단계 더 깊은 수치이고, 분기예측 실패시 손해가 더 크다.
지금까지 엑시노스 M1, M2를 대략적으로 짚어봤다. 삼성은 더 자세한 마이크로아키텍처에 대한 정보를 HotChips 2016에서 공개한 바 있다. 여기에 대한 아난드텍의 기사는 다음 링크에서 볼 수 있다.
엑시노스 M3는 엑시노스 M1, M2와 큰 차이가 있다. 엑시노스 M3는 완전히 재설계된 프론트 엔드를 가지고 있으며, 백엔드 역시 더 넓어졌다. M3의 프론트엔드 넓이는 M1, M2에 비해 50% 더 넓어진 6-wide가 되었다. 삼성의 새 마이크로아키텍처는 애플의 CPU와 함께 모바일에서 쓰이는 가장 넓은 마이크로아키텍처가 되었다.
다만 프론트엔드의 파이프라인 스테이지 2개가 추가되어 명령어 발행부터 최종 writeback 단계까지 전체 파이프라인 깊이가 13단계에서 15단계로 늘어났기 때문에 분기 예측 실패시 손해가 더 커졌다. 이를 상쇄하기 위해서는 더 향상된 성능의 분기예측기가 필요하지만 우리는 현재까지의 자료만 보고 실제 분기예측기의 성능이 향상되었는지를 확인할 방법은 없다. 또 Rename stage의 reorder buffer가 96엔트리에서 228 엔트리로 크게 늘었는데, 삼성은 이를 통해 넓어진 백엔드에 프로그램의 명령어 수준의 병렬성을 찾아 끊임없이 명령어를 공급하는 능력을 증가시키려고 한다.
M3의 스케줄러의 경우 필자가 보기에 가장 좋은 추측은 M1의 구성에서 자연스럽게 진화한 형태라는 것이다. 우리가 알고있는 내용은 코어는 12개의 마이크로옵들을 스케줄러에 디스패치하고, 12개의 실행 포트가 있다는 것이다:
- 정수 덧셈을 위한 두 개의 간단한 ALU, M1/M2와 같음
- 정수 덧셈, 곱셈, 나눗셈을 모두 처리하는 두 개의 더 복잡한 ALU. M1/M2보다 두 배 많음. 즉, 곱셈, 나눗셈 스루풋은 최대 2배, 간단한 덧셈 연산은 25% 더 높은 스루풋을 가짐.
- 두 개의 로드 유닛. M1, M2에 비해 2배 많은 수치
- 한 개의 스토어 유닛. M1, M2와 동일
- 두 개의 분기예측 포트들, M1, M2와 동일한 수치로 가능하다면 사이클당 두 개의 분기를 예측할 수 있음.
- 두 개의 부동소수점, 벡터 연산 파이프라인 대신 M3는 이제 3개의 파이프라인을 가지며, 각각의 파이프라인은 모두 복잡한 연산을 수행할 수 있다. 이론적으로 M3의 부동소수점 스루풋은 크게 증가했을 것이다.
간단한 ALU 파이프라인은 이미 한 사이클당 하나의 명령을 수행하고 있고, 이 유닛의 경우 추가적인 성능 개선의 여지가 거의 없다. 하지만 더 복잡한 파이프라인의 경우 64비트 정수 곱셈은 여전히 4 사이클이 필요하지만, 정수 나눗셈의 경우 21 사이클에서 12 사이클로 그 성능이 크게 개선되었다. 다만 이런 나눗셈 성능 개선이 두 복잡한 ALU 중 하나에만 해당하는 것인지, 양쪽 모두에 해당하는 것인지는 확실하지 않다. 어쨌든 위에서도 말한 것처럼 정수 곱셈 연산의 스루풋은 2배로 증가했고, 간단한 정수 연산 스루풋 역시 사이클당 3에서 4로 25% 증가했다.
로드 유닛의 개수는 두 배로 늘었다. 다만 로드 유닛의 레이턴시는 여전히 4 사이클로 바뀌지 않았다. 스토어 유닛은 개수와 레이턴시 모두 변하지 않았다.
부동소수점과 벡터 연산을 담당하는 파이프라인은 엑시노스 M3에서 가장 크게 바뀐 부분으로 보인다. 엑시노스 M3는 분산된 능력을 가진 세 개의 부동소수점과 벡터 파이프라인을 가지고 있다. 곱셈과 단순한 부동소수점 연산은 엑시노스 M1, M2에서 하나의 파이프라인에서만 가능하던 연산을 모든 파이프라인에서 수행할 수 있게 되면서 3배의 최대 스루풋 향상이 있었다. 세 배가 된 스루풋에 더해 부동소수점 덧셈과 뺄셈의 레이턴시 역시 3 사이클에서 2 사이클로 줄어들었다. 곱셈은 여전히 4 사이클의 레이턴시를 가진다.
부동소수점 나눗셈은 세 개중 두 개의 파이프라인에서 수행 가능한 것으로 보이며, 그 레이턴시는 15 사이클에서 12 사이클로 줄어들었다. AES 명령어의 암호 연산 스루풋 역시 3개의 파이프라인 중 두 개가 이를 지원하면서 두 배로 증가했다. SHA 명령어 스루풋은 여전히 같다. 그리고 간단한 벡터 연산의 경우 하나의 추가 파이프라인 덕분에 그 스루풋이 50% 증가했다.
우리는 여전히 삼성의 3세대 CPU 마이크로아키텍처의 표면만을 긁어모으고 있지만 한 가지는 명확하다: 그것은 SLSI의 싱글 스레드 성능이 두 배로 늘었다는 주장이 허풍이 아닐 거라는 점이다. 여기서 필자는 파이프라인 구성상의 고수준의 변화만을 다뤘다. 아직 우리는 메모리 서브시스템에 어떤 더 많은 개선이 있었는지를 알지 못한다. 나는 M3의 캐시 크기가 크게 증가할 것이라고 예상하고 있다. 최대 코어당 512KB의 L2 캐시와 4MB의 L3 캐시를 예상해본다. 부동소수점 파이프라인 변경 사항을 감안할 때 이런 형식의 작업 부하에서의 성능 향상 역시 기대하고 있다. M3 마이크로아키텍처의 프론트엔드에 대해서는 여전히 궁금한 점이 많고, 이 궁금증은 삼성이 다시 Hot Chips에서 새로운 마이크로아키텍처 디자인을 발표한다면 해소될 수 있을 것이다.
물론 이런 단일 코어의 성능 향상은 코어가 먹는 전력 소모량 역시 크게 증가시킬 것이다. 그리고 이는 싱글 코어 성능이 두 배나 향상되었음에도 불구하고 멀티코어 성능이 대략 40% 향상에 그치는 이유에 대한 설명이 될 수 있을 것이다. 만약 이런 코어를 모두 최대 클럭으로 구동시키려고 한다면 매우 높은 TDP를 보여줄 것이다.
지금까지의 모든 가정이 현실이라면 삼성이 도대체 어떻게 갤럭시 S9에서 엑시노스 9810과 스냅드래곤 845의 밸런스를 맞췄는지 가늠할 수가 없다. A75로 끌어낼 수 있는 최선의 성능과 엑시노스 M3의 최악의 성능에 대한 정보가 아직 부족하기 때문이다. 앞으로 두달 뒤면 삼성 모바일과 삼성 LSI가 이것들을 어떻게 요리했는지 볼 수 있을 것이다.
iMola's Signature
적용중인 트로피가 없습니다.
DR.MOLA
레벨 | Lv. 9 (24%) |
---|---|
포인트 | 7,703 p |
출석 | 22 일 (개근 1 일) |
iMola'님의
- 연관 글
- 게임 정보
- [모바일] 삼성, 갤럭시 노트 9 발표 {today_a_date(strtotime($item->regdate), 'y.m.d')}
- [평가] (짧은 핸즈온) 삼성 갤럭시 S9+ {today_a_date(strtotime($item->regdate), 'y.m.d')}
- [모바일] 삼성, 갤럭시 S9 / S9+ 발표 {today_a_date(strtotime($item->regdate), 'y.m.d')}
- [모바일] 삼성 갤럭시 노트8 성능 리뷰: 다음 달리기를 위한 숨고르기? {today_a_date(strtotime($item->regdate), 'y.m.d')}
- [모바일루머] 에반 블라스, 노트 8 공식 사진 추가 업로드 {today_a_date(strtotime($item->regdate), 'y.m.d')}
- [모바일루머] 갤럭시 노트 8, 공식 보도용 사진 유출 {today_a_date(strtotime($item->regdate), 'y.m.d')}
- [모바일] 특별할 것 없어요 : 갤럭시 노트 FE 성능리뷰 {today_a_date(strtotime($item->regdate), 'y.m.d')}
- Genre:
- 삼성
- Publisher:
- 삼성
- Release date:
- 1969년 1월
- capture_575px.png (File Size:78.3KB/Download:0)
- car_678x452.png (File Size:480.7KB/Download:0)
- m1_m2_575px.png (File Size:63.5KB/Download:0)
- m3_575px.png (File Size:72.4KB/Download:0)
번역 수고하셨습니다. 실체를 알려면 아직 2달이나 남았군요..
엑시노스에서도 신경망코어는 따로 없는건가요? 인공지능에 대한 접근방식은 애플 화웨이 vs 퀄컴 삼성 인건가..
개인적으로 iMola님은 앞으로 SoC 판도를 어떻게 예상하고 계시는지도 궁금하네요
놀랍습니다. 역대 엑시노스중 성능 변화가 가장 급격한게 아닌가 싶어요
싱글 두배 증가라면 애플의 A11을 거의 따라잡았다고 볼 수 있겠네요
ARM 코어텍스 아키텍쳐에서 탈피할만한 분명한 이유가 있었네요. 스냅과 비슷한 위치해 안주해 있을 줄 알았는데 다시보게 됩니다
전 삼성이나 애플과같은 고ipc방식이 당연히 맞다고생각합니다.
모바일에서 전성비부분이 문제가될수있으나.. 사실 고클럭에서의 전성비는..
ipc가 높은쪽이 거의 유리하죠. 2ghz로도 3천점을 낼수있는놈과 3ghz로 3천점을낼수있는놈
비교해보면 설계에따라 달라지긴하겠습니다만 보통 전자가 전성비가높아집니다.
물론 아키텍처규모가 거대해져서 클럭이낮을때는 후자가 전성비가 높은경우가 많지만
arm탑재 스마트폰에서 빅리틀을 시행한게 5년정도 되었다는걸 생각하면되죠
천하의 애플조차도 이제 빅리틀을쓰니까요.. 어차피 낮은성능이 필요할떄 전성비는
리틀코어로 해결하면되는거구요.. arm이야 커버범위가 다양해서 고성능아키텍처성능이
애플이랑 비교하면 꽤 낮은편입니다. 아마 삼성도 플래그십엔 자체아키텍처 고IPC인놈을 계속밀고나가고
메인스트림급정도에선 arm 레퍼런스아키텍처인 a75를 밀고나가겠죠.. 지금도그러고있고요