이미지 출처 : http://blogs.barrons.com/techtraderdaily/2016/10/21/apples-a10-iphone-chip-smokes-the-competition-says-linley-group/

ARM AP 전성기

 ARM Cortex 이전의 ARM7a 부터 였던가, 아마 그때 까진 SEC 에서 나오는 AP(Application Processor, Embedded 쪽에선 이를 CPU 와 다르게 부름)들이 전성기 였던 시절이 있었고, 지금도 Android 계열에선 SEC 가 만들어 자사의 제품에 올리고 있는 Exynos 라 이름 붙여 파는 AP 가 최고로 쳐 준다고는 합니다만, 가장 큰 차이는 항상 SEC 는 Apple 의 설계보다 뒤쳐지고, 우연히도 Apple 이 새로운 설계를 하고 나면 또 다른 Exynos 가 나온다는 것 입니다. (물론 이것은 저의 기분 탓 이겠지만요)

 안타깝게도 아직도 AP/CPU core 갯수 = 성능 이라 믿고 있는 사람들이 참 많고, SIMD 를 컴파일러가 막 자동으로 맞춰 최적화 해 준다고 믿는 분들도 많은 세상이다 보니 (특히 ARM Cortex 의 NEON 이 만능이라 믿는 바보같은 소리 하는 사람을 본 이후론 더욱더 부정적 입니다) 세상이 아무리 발전 한다 한들, 인간의 지식의 발전엔 역시 한계가 있다는 생각도 듭니다. 사실 우리가 기술이 발전 하던 말던 알 바는 아니고, 스마트폰이나, 내가 쓰는 기기가 더 빨라지고 좋아지면 끝이니 그 안에 뭔 기술이 들어 가던 내가 알아야 할 필요는 전혀 없습니다만 ..


세상이 바뀌어도 여전한 동작속도 와 Core 수에 대한 오해

 어떤 CPU 나 AP 를 쓰던간에, 단순히 생각 하면 동작속도 와 CPU/AP 의 Core(코어, 이하 코어라 표기) 수가 많으면 성능이 좋아 질 것이란 생각을 누구나 할 듯 합니다. 그런데 이상하게 애플에서 나온 기기들은 안드로이드와 달리 몇세대 쯤 지나야 OS 가 더럽게 무거워 지면서 버벅이기 시작 하는데, 안드는 이건 뭐 한세대만 지나도 쓰는 사람이 답답함을 느끼는 건 대체 왜 인지 궁금 해 집니다. (물론 애플의 메모리 고자도 성능 하락에 큰 역활을 했습니다)

 그냥 여기선 안드로이드만 생각 해 보겠습니다. 현재 제가 쓰는 기기들은 Qualcomm Snapdragon 801 과 6xx 씨리즈, 4xx 씨리즈가 있고, 32bit 와 64bit 가 혼용 되고 있습니다. 거기에 중국에서 건너온 기기들은 대부분 MT6753 아니면 MT6735 이며, 여기에 MT6580 까지도 있습니다. Qualcomm 은 32bit AP 에서는 최대 core 갯수를 4개를 넘기지 않고, 동작 속도를 2GHz 를 넘기도록 만들어 엄청난 발열을 제물로 성능을 얻었습니다만, 이런 임베디드 쪽에서 발열은 곧 성능제한(thresholding 이라고들 합니다) 으로 연결 되어 어차피 떨어 지는 성능을 계속 쓰게 되는 어처구니 없는 상태에 빠집니다. (이런 이유로 G3 에 제가 써멀패드를 붙이는 글을 쓴 이유도 이런 성능 하락을 그나마 줄여 보자는 얄팍한 튜닝이지만, 은근 먹히는 결과를 가져 왔습니다)

 그러다 발열을 줄이고자 AP 제조사들은 이제 코어 갯수를 늘리고 동작 속도를 낮추기 시작 했습니다. 과거 Pentium 이 높은 동작 속도에 Hyper Thread 같은거 까지 붙여 가며 코어 수를 늘렸지만, 정작 Core2Duo/DualCore 씨리즈 나오면서 사장된 것 처럼, 실제 중요한 성능은 코어 자체의 높은 동작 속도와 여러 갯수에 의존 하지 않는 다는 점 입니다. 게다가 Intel 과 AMD 가 여러개의 CPU 코어 를 쓰지만 정작 Intel 이 더 성능이 높은데도 코어 갯수가 AMD 만큼 늘려 쓰지 않는 점들도 성능은 단지 동작속도와 코어의 수에 의존되지 않는 이유 때문 이겠습니다.

 그래서 안드로이드 쪽에서 쓰는 AP들은 대부분 싱글 코어 자체는 성능이 낮게, 이를 Multi core 를 통하면 성능이 높도록 만들어 냈는데, 문제는 당장 안드로이드에서 이 여러 코어를 다 활용하지 않는 다는 점 입니다. 하나의 앱이 많이 써야 2개 정도의 코어 를 쓰는데, 많은 코어 를 쓴다고 해서 앱의 성능이 향상 되는건 절대 아니라는 점이 큽니다. 단순히 빠른동작과 반응 속도는 먼저 싱글 코어(단일 코어) 성능이 빨라야 합니다만, 대부분의 Geekbench 와 같은걸 돌려 봐도 안드로이드 쪽 은 거의 Single core 성능은 대부분 1000점대 이나, 아이폰은 6s 부터 이미 2000 점을 넘는다는 것 입니다.

 아래 Geekbench 의 상위 랭킹만 봐도 그런 이유가 보입니다.

Device    

 Single-Core

 Multi-Core

 iPhone 7/7 Plus

 3,450

 5,630

 Samsung Galaxy S7

 1,806

 5,213

 Samsung Galaxy Note 7

 1,786

 5,228

 Samsung Galaxy S7 Edge

 1,744

 5,203

 Huawei P9

 1,729

 4,735

 OnePlus 3

 1,698

 4,015

 놀라운 점은 멀티 코어를 따져도 2개만 쓰고 있는 아이폰쪽과, 이미 최소 4개부터 8개 또는 10개의 코어를 쓰는 안드로이드 쪽이 아이폰보다 못한 성능을 낸다는 것 입니다.

 아래의 Geekbench 에 올라온 자료들을 캡쳐 한 것을 자세히 보면,

안드로이드 멀티 코어

안드로이드 싱글 코어

iOS 멀티 코어

iOS 싱글 코어

 아이폰6s 는 이미 2000 점을 싱글 코어에서 넘기고 있고, 이 성능은 지금 최고의 성능이라 불리는 SEC 의 AP 보다 빠르다는 것을 알 수 있습니다. 그래서 단순히 기기를 만져서 사용 해 보면 아이폰이 더 빠릿한 이유는 이런 싱글 코어 성능이 높기 때문 입니다.

 그래서 반대로 말하면 코어 2개, 많아야 3개인 애플의 AP 보다 8개나 10개로 덤비는 애가 성능이 같게 나오거나, 못한건 많은 문제가 있으며, 예전에 SEC 와 Exynos 를 맹신하면서 떠들어 대던 어떤 사람을 얼마나 바보같은 사운드를 본인이 하고 있었는건지를 다시금 생각 해 보게 된다는 점 입니다. (물론 이 사람이 NEON 만능설의 주역 이라 더욱더 실소를 짓게 합니다 ...)


그렇다고 iOS 가 최고는 아니다

 사람마다 좋아하는 것이 다 다르듯, 내가 좋아하고, 쓰는 것이 최고임은 당연한 것 입니다. 애플의 AP 가 빠르다 한들 그게 안드로이드를 올려 돌아갈 수 있는 것이 아니고, iOS 와 같이 바이너리 런타임 이미지가 바로 도는 환경과, 뭔가 더럽게 레이어가 많은 안드로이드에서 도는 것은 이미 비교를 하기엔 너무 다른 구조 입니다. 그나마 안드로이드가 JIT 를 버리고 ART 와 같은 형태로 J2R 을 쓰는 것은 그나마 느린 속도를 올리기 위한 선택 이었겠지만, 이미 구동 레이어가 너무 많은 구조에서 빨라 봤자 그 속도 개선엔 한계가 따를 수 밖에 없습니다. 아마 안드로이드 app 자체가 NDK 로만 빌드 되는 세상이 오면 그나마 iOS 앱들 처럼 좀 더 빨라 질지 모르겠습니다만, 속도면에선 안드로이드가 가지는 단점을 뒤로 해도, 안드로이드 앱들이 가지는 빠른 업데이트나, 특정 국가에 맞춰지는 생태계 같은걸 고려 하면 어느것이 좋다라고 판단 하는 것은 오만 입니다.

 하지만 적어도 AP 설계능력이나, 이에 따른 platform 최적화는 어떤 안드로이드 계열도 iOS 를 따라가기 힘든 것은 사실일 겁니다. 그나마 SEC 가 선두의 자리를 꿰차고 있었으나, 그게 제대로 였다면 노트7 폭탄 이벤트가 이번에 전 세계로 빅 이벤트를 만들어 주진 않았겠지요. 게다가 안드로이드를 직접 총괄하는 구글에서 내놓는 reference 모델들인 nexus 가 항상 최고의 성능을 내고 있지 않은 것 또한, 그것이 안드로이드가 가지는 모습의 반영이라 하겠습니다. 성능이나 최적화 보다는 무엇을 할 것이며, 어떻게 최신의 여러 기술을 병합 해 볼것인가? 가 더욱 더 안드로이드의 모습에 가깝지 않을까 합니다. 아이폰이 안드로이드 기기들 처럼 여러 기능을 가지고 있진 않은 것 처럼, 그 차이는 분명 있을 수 밖에 없습니다. 물론 이런 이유로 2가지를 다 쓰는 사람도 있습니다.


최소한 AP 성능은 Apple 이 갑

 SEC 가 최고라 믿는 사람들에겐 안타까운 일 이겠지만, 매번 새로운 모델이 나왔을때 SEC 가 만드는 AP 가 최고였던 적은 없는 듯 합니다. 심지어 애플이 SEC 에서 사다 쓸 때도 비슷한 제품에서 안드로이드가 단순 AP 성능이 더 좋았던 적도 없습니다. 이런건 인정을 해야 할 부분이겠죠.


서로 다름을 인정 하는 것이 좋은 것

 iOS 는 iOS 이고, 안드로이드는 안드로이드 임을 인정 하고, 이 두 계열이 같은 ARM 기반을 쓴다 하지만 이는 서로 다른 환경임을 이해 하는 것이 좋다 봅니다. 쉽게 말해 윈도우와 리눅스의 차이처럼 그 두 OS 는 서로 다릅니다. 같은 Intel CPU 에서 돌던, AMD 에서 돌던 두 OS 는 서로 다릅니다. 이것처럼 iOS 와 안드로이드 역시 서로 다릅니다.  둘 중 뭐가 좋네 나쁘네 하는건 쉽게 말해 게임이 어디가 더 잘 도는가 정도로 볼수 있겠지만, 요즘엔 iOS 로 나오는 게임이 안드로이드에서도 나오는 세상 입니다. 물론 리눅스와 윈도우에도 Steam 이 있어서 어느정도 같은 게임을 즐기는 세상이기도 합니다만.

 두 진영이 가지는 편리함 또한 서로 다릅니다. iOS 를 쓰면 기본적으로 iTunes 를 써야 하는 제약이 있고, 안드로이드를 쓰면 MTP 의 마수(특히 윈도우1 을 쓴다면 ... )에 시달려야 하는 단점이 기본으로 따를 것 입니다. 이와 같이 서로 다른 영역을 어느게 좋다, 나쁘다 하는건 개인의 취향에 맞지 않는다는 것일 겁니다.


 취향을 떠나선 Apple 의 AP 설계는 갑 of 갑임은 틀리지 않은 사실일 겁니다. 그리고 10만원 선에서 저렴한 스마트폰을 살 수 있는 쪽은 안드로이드 뿐 일 겁니다. 새 아이폰을 10만원 선에 살 수는 없으니까요.

Posted by 견족자K rageworx