10
23

- CPU를 빠르게 만드는 가장 근본적인 도전과제

 

→ M1의 빠른 범용 CPU 코어인 Firestorm 은 진짜로 빠름. 이게 기존 AMD/Intel 등과 비교했을때 느렸던 기존 ARM과의 차이

 

→ Firestorm은 대부분의 인텔/AMD Ryzen 코어를 속도면에서 다 이기는데, 상식으로는 일어나지 않을 일.

 

→ 빠른 CPU를 만드는 전략은 뭔가 ?

1. 순차적으로 더 빠르게 명령을 실행

2. 여러개의 명령을 병렬로 실행

 

80년대엔 쉬웠음. 그냥 클럭주파수를 높이면 명령이 빨리 실행됨.

컴퓨터는 클럭 사이클당 뭔가를 하는데, 이 "뭔가"는 아주 작아서, 명령 하나가 몇개의 클럭 사이클이 필요하기도 함

 

하지만, 현대에 와서는 클럭 주파수를 높이는 데에는 한계가 있음.

"무어 법칙의 끝"

 

따라서, 이젠 최대한 많은 명령을 병렬로 실행하는 것이 중요

 

- Multi-core or Out-of-Order processors?

 

→ 병렬실행엔 두가지 접근 방법이 있다

 

1. 더 많은 CPU코어를 넣는 것 (개발자 관점에서는 쓰레드를 더 추가하는 것)

 

이론적으로는, 프로세서의 코어는 여러개의 쓰레드를 실행할 수 있음(소프트웨어 쓰레드)

이건 쓰레드간에 전환하며 실행하는 거라, I/O 나 네트웍에서 뭔가를 대기하는 상황에서나 사용

하드웨어 쓰레드는 속도가 빨라지지만, 개발자가 이를 활용하기 위한 코드를 작성해야함.

서버/클라우드에서는 이 모델이 적합.

 

그래서 Ampere 같은 회사가 128코어를 가지는 Altra Max 같은 클라우드용 ARM CPU를 만드는 것.

애플은 이것의 정확히 반대임. 애플은 싱글 사용자를 위한 기기를 만드는 회사

 

데스크탑 소프트웨어들은 대부분 많은 코어를 활용하도록 만들어지지 않음.

게임은 8코어에서는 성능 향상이 되겠지만, 128 코어는 낭비일뿐.

그래서, 더 적은수의 강력한 코어를 필요로 하게 됨

 

2. 비순차 실행 (Out-of-Order Execution, OoO)은 더 많은 명령을 병렬로 실행하지만 다중쓰레드 처럼 명시해서 사용할 필요가 없음

 

개발자 관점에선 그냥 각 코어들이 빠르게 동작하는 것처럼 보임

특정 위치의 메모리 장소에서 데이터를 가져오는 것은 느림

하지만, 1바이트를 가져오나 128바이트를 가져오나 Delay 차이는 없음

 

데이터는 데이터버스를 통해서 이동하는데, 이 버스가 넓으면 동시에 여러 바이트를 읽어올수 있음

CPU는 실행할때 여러 덩어리의 명령어들을 한번에 실행하게 되는데, 이 명령어들은 순차적으로 실행하게 작성되어 있음

최신 마이크로프로세서들은 Out-Of-Order 실행을 함.

즉 여러개의 명령어들을 분석해서, 서로간 의존성이 있는지 알아냄.

 

위 명령에서 1과2는 의존성이 있지만, 3번은 앞과 전혀 상관이 없음.

이러면 Out-of-Order 프로세서들은 의존성이 없는 3번 명령을 병렬로 실행할수 있음.

 

실제로는 CPU가 한두개가 아닌 수백개의 명령어들간의 의존성을 파악할 수 있음.

CPU는 명령어를 노드 그래프로 연결하고 그걸 분석해서 병렬로 수행할수 있는 명령과, 실행전에 결과를 기다려야 하는 위치를 알아낼 수 있음.

 

M1의 Firestrom 코어가 엄청난 속도를 내는 이유는 아주 뛰어난 Out-of-Order 실행을 하기 때문.

Intel/AMD 를 포함한 주류시장의 다른 누구보다도 뛰어날 것 같음.

 

- 왜 AMD 와 Intel 의 Out-of-Order 실행은 M1보다 느릴까 ?

 

→ 앞에서 얘기한건 실제로는 ROB(Reorder Buffer) 라고 하며 일반적인 기계어 코드 명령이 아님(CPU가 실행하기 위해 메모리에서 가져오는)

이 명령어들은 CPU Instruction Set Architecture(ISA)라고 하며, 우리가 x86, ARM, PowerPC 라고 부르는 것들임.

 

→ CPU는 내부에서 프로그래머가 모르는 완전히 다른 명령어 세트인 micro-operations (마이크로 명령어, micro-ops or μops)로 실행되며, ROB는 이 micro-ops 로 가득 차 있음

 

→ ARM/x86 명령어는 공개 API, micro-ops 는 비공개 API라고 생각하면 됨.

 

→ CISC 는 명령어가 크고 복잡하기 때문에 micro-ops를 꼭 써야하지만, RISC는 쓸지말지 선택할 수 있음.(예를 들어, 작은 ARM CPU들은 micro-ops를 안 써도 됨. 그렇다고 OoO를 못하는건 아님)

 

→ 이게 왜 중요할까 ? "빠른 속도는 ROB를 얼마나 빨리,많이 채울수 있는지"가 중요

 

→ 더 빠르게 채울수록, 더 많은 명령어를 병렬로 실행할수 있는 기회가 많아져서 성능이 향상

 

→ 기계어 코드들은 디코더에 의해서 micro-ops 로 분할이 됨.

 

→ 인텔/AMD 코어는 4개의 디코더가 있는데, 애플은 '미친' 8개의 디코더가 있고, ROB가 3배 더 커서 기본적으로 3배더 많은 명령어들을 담을 수 있음

 

 

- 그럼 왜 인텔과 AMD는 더 많은 명령어 디코더를 안 넣어 ?

 

→ 여기서 RISC의 반격이 시작됨. M1 Firestorm 코어에 ARM RISC가 있다는게 중요.

 

→ x86 명령어의 길이는 1~15바이트이고, RISC는 고정 사이즈

 

→ 모든 명령어의 길이가 같으면 그냥 8개의 다른 디코더에다 잘라서 던지면 그만임

 

→ 하지만, x86은 한 명령어의 다음 명령어가 언제 시작하는지를 모르기때문에 실제로 각 명령어를 분석하는 수 밖에 없음

 

→ 인텔과 AMD는 이 문제를 brute-force 하게 처리하는 방법은 모든 명령어의 시작마다 디코딩 하는것 즉, 잘못된 추측이나 실수를 계속 버려야 한다는 것. 그래서 더 많은 디코더를 추가하기가 어렵지만, 애플은 아주 쉬움

 

→ 이 때문에 동일한 클럭 주파수에서 AMD/Intel CPU보다 두 배 많은 명령을 처리할수 있게 된 것

 

→ 현실에선 x86은 복잡한 CISC는 잘 안쓰고 RISC 처럼 짧은 명령을 주로 쓰기는 하지만, 저 15바이트짜리 명령어를 처리는 해야하기 때문에 복잡성은 있음.

 

 

요약

 

현대의 CPU는 클럭당 여러개의 명령어를 처리하는 "비순차 실행(Out-of-Order)" 구조로 되어있다.

M1은 구조 덕에 암드나 인텔 칩셋에 비해 한 클럭당 더 많은 명령어를 비순차 실행 가능하다.

따라서 훨씬 낮은 전력과 클럭으로 돌아감에도 성능이 뛰어난것.

 

 

Why Is Apple’s M1 Chip So Fast?

Real world experience with the new M1 Macs have started ticking in. They are fast. Real fast. But why? What is the magic?

debugger.medium.com

 

risc방식이 개념상으론 정말 좋긴해

CISC는 너무 구식이라 미래에는 더이상 클럭을 올리지 못하고 비순차 실행으로 IPC를 올리게 될 것임을 미처 생각 하지 못한 구조라고 보면 됨 0년대에 만든걸 지금까지 확장해서 써먹고 있으니 대단하긴 한데, 버릴 때가 됐지

risc랑 cics랑 놓고보면 생각보다 별로 시기 차이 많이 안나는데..

 

그러고도 아직 m1 최대성능이 생각보다 낮은걸 보면 아키텍처상의 이점은 있지만 다른면에서는 아직 암드한테 밀리는거같음

클럭코어수 안정적으로 늘리는게 기술이지 같은폼팩터에서 무작정 클럭높이고 코어늘리면 8세대이후 인텔처럼 발열, 전성비 병신되는거임

 

그니까 명령어 특징에서 오는 장점으로 훨신더 높은 처리율을 구현했고 x86 처리 방식이 우리가 평소에 쓰는 일반적 상황에서 비효율적 이라는거잖아

일반적인 경우가 아니더라도 비효율적이다. 특수목적 프로그램이 긴 명령어를 많이 쓴다고 해도 위에서 말하는 예측 디코딩이 일어날 수 밖에 없어 일반적인 프로그램은 대부분 짧은 명령어를 쓰는 것에 맞춰 마이크로아키텍처를 변형해도 긴 명령어를 어쨌든 처리하게 만들어야 하기 때문에 근본적인 해결책이 될 수 없다는 것

 

x86보다 Power 가 훨 빠른데 좆망한 이유를 생각해보자 저 명령어 바뀌면 이전 프로그램들 안돌아감

파워는 발열이랑 전성비때문에 망한게 더 클걸

 

이것도 있는데 x86은 램이 버스에서 왔다갔다 해야하는걸 SoC에 램 박혀있어 CPU랑 존나 가까워서 빠른것

어차피 램은 jedec에서 정해진 표준규격이 있는데 램이 soc화 됐다고 굳이 더 빠를까?

레이턴시사 나노초단위로 노는데 물리적거리가 가까워지면 충분히 달라지지

아키텍쳐보다 온칩램에서 성능개선 더 큰데 ㅋㅋㅋㅋ

 

서니코브부터 5way 디코더긴한데 성능향상 그닥인거보면 애초에 CISC는 4way가 한계인듯

서니코브 실제로 클럭당 처리성능이 많이 높아지긴 했지 더 뜨거워져서 낮은 클럭으로 돌아가는게 문제지만

 

맥만 아니었으면 진짜 좋았을텐데....

맥이라서 가능한거 아님?

 

명령어 크기가 규격화 되어있어서 인/암처럼 명령어 길이를 확인할 필요가 없어지니까 명령어 동시처리에 이점을 가져온다는 거임?

그게 risc의 장점

 

 

애플은 리틀코어가 정말 사기급이죠

 

애플의 리틀코어는 2년전 9820의 미들코어(a75 2.3ghz)와 동급성능을 보여주면서 전력소모는 1/3수준입니다..

a55와 비교해도 a55가 당장 표에는 안나와있습니다만 전력소모가 약 1.5배정도 높으면서 성능은 3배정도 높아서 전력효율차이가 2배이상나죠,..

 

일반적으로 같은성능이아닌 같은클럭일때는 ipc높은쪽이 더 불리한걸 감안하면 애플의 리틀코어는 정말 말도안되는 전력효율이죠.(같은 성능일때는 ipc낮은쪽은 고클럭 높은쪽은 저클럭이면 전자가 전력효율이 떨어지기도합니다 전압을 퍼먹으니까요)

 

a13같은경우만봐도 성능이 워낙높긴하지만 스윗스팟을 지나버린 클럭때문에 피크성능에서의 전력효율은 865대비 상당히 떨어지지만 ios의 최적화와 구조+리틀코어가 워낙성능이좋아 거의 모든 일을 처리 가능할 정도이니 별다른 문제는 없었죠.

 

안드로이드도 어서 리틀코어좀 어떻게 해야합니다. 빅코어성능이 2배넘게 오르는동안 리틀코어도 어느정도는 따라가줘야죠. 그대로인건 말이 안됩니다 어플들도 점점 무거워지는 데요

 

 

ARM이 답이 없습니다

a55는 워낙 구형아키텍처고 처음나왓을때도 그리 대단한 놈은 아니었기도하고.. 지금은 정말 처참하죠 고작 1ghz후반대 클럭만되도 동클럭의 미들코어보다 전력효율이 떨어져버리니.. 

 

ARM 레퍼런스는 빅 미들 리틀 셋다 한꺼번에 대격변이 나야할텐데.. 이거 가능하긴할까요 ㅋㅋ

이게 참 너무하다싶은게 리틀코어같은경우 a55는 a53대비 엄청잘나온 물건도 아닙니다

성능은 a53대비높지만 전력효율이 크게뛰어난 놈도 아니구요

a76처럼 잘만든놈을 몇년우려먹었다 하면 그러려니 하는데 그냥저냥인 놈을 이렇게 우려먹으니 원...

 

a55 나온 시기나 근본 생각하면 애플 리틀이 사기인 것보다도 ARM이 일 안한 영향이 더 크죠. 삼성은 몽구스 만들 시간에 a55 대체 리틀 코어 연구를 했어야 했습니다.

근데 같은년도에 나온 a12는물론 a11리틀코어도 효율은 더 좋았습니다

 

애플은 빅코어도 빅코어인데.. 리틀코어도 사기급입니다

애플은 리틀코어가 거의 4~5년전 빅코어급이에요

스냅드래곤 835 빅코어대비 70~80%성능이고 현세대 안드로이드 리틀코어의 2배정도 성능이죠..

그런데 놀라운건 그 성능에 전력효율은 a53이나 a55보다 훨씬 높다는 것입니다

빅코어도 사기적인데 리틀코어도 뭐 이런지 모르겠어요;;

 

리틀은 두배, 빅은 1.5배.. 솔직히 미친거 같습니다 ㅋㅋ

리틀코어가 예전부터 꾸준히 더 발전해온건 알고 있었지만 A55의 두배가 될정도까지 좋아졌군요.

빅코어는 몇번씩 성능을 끌어 올리면서 리틀은 A55를 만 2년 우려먹고 있는데 왜 개선을 안하나 모르겠단 말이죠.

맛폰시장 관점만의 이야기일 뿐이고요. ARM본사로서는 55 말고도 그 아래의 저전력 시장 타겟으로 35나 32도 내놓는 상황입니다.  동시기 리틀 라인업만 세개인 셈.

퀄콤이든 삼성이든 내년까지는 A55쓸듯하네요.... ARM에서 리틀코어를 신작을 발표하기를 기대할수밖에....

 

사실 현재 제대로 일하고 있는건 애플과 AMD 뿐이니까요. 인텔은 일을 안하고 삼성은 왜 그런지 모르겠고 퀄컴은 그냥 손을 놨으니. 그나마 ARM이 경우는 개소말닭이 다 저가로 라이센스해서 만들어도 평작이 보장이 되는 물건을 만들어야 하다보니 한계가 명백하죠.

 

 

애플 AP GPU만 좋은줄아는데 CPU가 진짜 넘사벽이죠

 

리틀코어는

스냅드래곤이나 엑시노스에 들어가는 A55보다 2.5배~3배 빠른데도 불구하고 동시에(아마 동일 시간에) 소모하는 에너지가 절반이라고 하니까 즉 같은 연산량의 전력소모(=전성비=쉽게 말하면 연비)는 16.6%~20% 수준임을 알 수 있습니다

성능은 둘째치고도 전력소모가 넘사벽이죠

성능이 좋으니 엑시노스였으면 빅코어로 넘어가는 작업들도 리틀코어로 처리할 수 있는거고 전성비가 더욱 향상될 것고

 

빅코어는

정수연산은 엑시노스보다 약 2배 빠른데 같은 처리량에서의 전력소모는 78% 수준 부동소숫점 연산은 엑시노스보다 약 1.9배 빠른데 전력소모는 89% 수준

 

성능이 좋은데 전력을 많이 먹는 게 아니라 성능이 좋으면서 전성비까지도 좋으니 같은 레벨이라고 볼 수 없는거죠

 

스냅드래곤이 엑시노스보다 좋다좋다 해도 애플은 못따라가는듯

S11에 들어갈 엑시노스가 A13는 커녕 A12랑 비교될 예정이라는게 가슴아프네요

그것도 A12보다 얼마나 좋을지가 아니라 과연 A12를 이길 수는 있을지가 관전포인트라는게 너무 슬픈일이 아닐수가 없습니다

 

 

The Apple iPhone 11, 11 Pro & 11 Pro Max Review: Performance, Battery, & Camera Elevated

It’s been a little over a year since our review of the iPhone XS and XS Max, and it’s that time of the year to investigate Apple’s latest and greatest: the iPhone 11 family. This time around Apple was able to launch all three phones, the iPhone 11, i

www.anandtech.com

 

GPU 코어 갯수만 봐도 답 나오죠 S10은 코어 12개인데 아이폰 X는 고작 4개 그런데도 아이폰 못따라감.

이는 아마 열 발생부터 차이가 크니까 S10이 성능 제한을 더 빨리 하겠죠 그래서 그런걸로 믿습니다!

 

CPU는 그런비교가 가능한데 GPU는 어차피 병렬처리기 때문에 코어개념이 애매해서 그렇게 단순비교가 안됩니다

애플 GPU가 성능도 높고 동시에 전력소모 또한 낮은건 사실이지만 그게 GPU 쉐이더코어 갯수때문은 아니에요

이런 쉐이더코어라는 개념도 그냥 ARM에서 자기네들이 쓰는거고 코어 1개라고 설정하는 기준이 GPU 종류마다 다르기 때문에 12개 4개 이런 비교는.. 같은 종류의 GPU를 사용한 다른 AP를 비교하는 게 아니면 그냥 싹 잊으셔야 합니다

여기서 GPU 굳이 비교하려면 면적으로 비교해야합니다

 

아이폰의 그 부드러움이란 ...아이폰에서 노트10으로 바꿧지만 아직도 아이폰의 일정한 부드러움은 아직도 아른아른 거리네요. 거기다가 터치샘플링레이트도 120Hz라서 이 터치 반응속도까지 빨라서 진짜 스크롤이 만족스러워요

터치된 이후의 반응이 즉각적이고 처리속도가 빠르고 부드럽기만 하면 몰라도 그 터치가 되는데까지 걸리는 시간이 짧으니까 이 만족도는 엄청크네요

그냥 단순한 작업이랑 카메라 이런거만 쓰는 사람에게는 아이폰이 최고의 폰인거 같습니다 배터리도 오래 가고

COMMENT
 

인기 글


최근 글