Android 개발자, 새로운 Android 컴파일러 출시 예정

게시 됨: 2022-03-11

조각화는 Android 개발자와 소비자에게 수년간 좌절의 원인이었습니다. 이제 상황이 나아지기 전에 상황이 더 나빠질 것 같습니다. 새로운 Android 컴파일러가 다시 출시되며 하드웨어 측면에서 개발자에게 영향을 줄 수 있는 몇 가지 주목할만한 개발이 있습니다.

Dalvik이 사라지면서 많은 사람들은 Google의 새로운 64비트 지원 ART 런타임이 몇 년 동안 유지될 것으로 예상했으며 아마도 그럴 것입니다. 그러나 가까운 장래에 대대적인 점검이 이루어질 것입니다. 64비트 하드웨어에 대한 지원을 제공하는 것 외에도 ART는 AOT(Ahead-of-Time) 컴파일을 도입한 반면 Dalvik은 JIT(Just-In-Time) 컴파일러였습니다. 새로운 Optimized 컴파일러는 더 많은 가능성을 열어줍니다.

안드로이드 컴파일러 그림

하드웨어 개발과 관련하여 스마트폰 시스템 온칩 업계에는 몇 가지 새로운 트렌드와 새롭고 오래된 플레이어가 있지만 이에 대해서는 나중에 설명하겠습니다.

먼저 구글의 런타임 계획을 살펴보자.

새로운 Android 컴파일러로 Dalvik, ART, ART

ART는 작년에 Android 5.0과 함께 도입되어 Nexus 9 및 Nexus 6에서 출시되었지만 후자는 32비트 ARMv7-A CPU를 사용했습니다. 그러나 ART는 처음부터 설계되는 것이 아니라 실제로 JIT에서 멀어진 Dalvik의 진화였습니다.

Dalvik은 필요에 따라 즉석에서 앱을 컴파일합니다. 이것은 분명히 더 많은 CPU 부하를 추가하고 응용 프로그램을 시작하는 데 필요한 시간을 늘리며 배터리 수명에 영향을 미칩니다. ART는 모든 것을 미리 컴파일하기 때문에 설치 시 장치가 앱을 시작할 때마다 컴파일 시 클록 주기를 낭비할 필요가 없습니다. 결과적으로 더 부드러운 사용자 경험을 제공하는 동시에 전력 소비를 줄이고 배터리 수명을 연장합니다.

그렇다면 구글은 앞으로 무엇을 할 것인가?

ART는 작년 말 온라인에 제공되기 시작한 새로운 64비트 ARMv8 CPU 코어를 활용하기 위해 개발되었기 때문에 원래 컴파일러는 임시방편이었던 것으로 보입니다. 이는 시장 출시 시간이 효율성과 최적화가 아니라 우선 순위임을 의미했습니다. ART가 그저 서두르는 작업이 아니었다는 의미는 아닙니다. 그렇지 않았기 때문입니다. 런타임은 잘 작동하며 개발자와 사용자로부터 칭찬을 받았습니다.

그러나 개선의 여지가 있으며 현재 Google은 한동안 크게 개선된 컴파일러에 대해 작업하고 있는 것으로 보이며 이러한 노력은 아마도 ART의 공식 출시 이전일 것입니다. 영국의 칩 디자이너인 ARM은 최근 ART를 위한 새로운 "최적화" 컴파일러를 가리키며 Google의 런타임 계획에 대한 몇 가지 흥미로운 사실을 밝혔습니다. 새 컴파일러는 코드 생성 전에 프로그램 구조를 조작할 수 있는 중간 표현(IR)을 제공합니다. 컴파일러의 아키텍처 인식 부분에 더 나은 정보를 제공하는 정보가 풍부한 그래프로 구성된 단일 수준의 중간 표현을 사용합니다.

안드로이드 개발자를 위한 새로운 안드로이드 컴파일러

"빠른" 컴파일러는 명령어 및 변수의 간단한 연결 목록과 함께 두 가지 수준의 중간 표현을 사용하지만 IR 생성 중에 중요한 정보를 잃습니다.

ARM은 새로운 "최적화" 컴파일러가 컴파일러 기술 측면에서 "큰 도약"이라고 설명하면서 여러 가지 중요한 이점을 제공할 것이라고 주장합니다. 컴파일러는 향후 최적화를 위해 더 나은 인프라를 제공하고 코드 품질을 개선하는 데 도움이 됩니다.

최적화 및 빠른 컴파일러 주요 기능

ARM은 "최적화" 컴파일러가 레지스터 사용을 보다 효율적으로 하고 스택으로 흘러가는 것을 줄이며 실행할 코드를 덜 필요로 한다고 주장하면서 단일 슬라이드에서 두 컴파일러의 차이점을 설명했습니다.

ARM은 다음과 같이 표현합니다.

Quick 에는 매우 간단한 레지스터 할당 알고리즘이 있습니다.

  • IR 정보 부족
  • 복잡성보다 컴파일 속도 – JIT에서 유래
  • 성능 저하 – 많은 레지스터가 스택으로 유출됨

최적화 는 라이너 스캔 레지스터 할당을 사용합니다.

  • 성능과 시간 간의 탁월한 절충안
  • 활성 분석이 사용됩니다.
  • 스택으로의 레지스터 유출 최소화”

새 컴파일러는 아직 개발 중이지만 ARM은 몇 가지 성능 수치를 공유했습니다. 합성 CPU 테스트에서 컴파일러는 15~40% 범위에서 성능을 향상시킵니다. 컴파일 속도가 약 8% 증가합니다. 그러나 회사는 새로운 컴파일러가 성숙함에 따라 수치가 "매일 변경"된다고 경고합니다.

초점은 현재 컴파일 속도와 파일 크기 면에서 분명한 이점이 있는 "빠른" 컴파일러와 거의 같은 수준을 달성하는 데 있습니다.

지금 당장은 트레이드 오프처럼 보입니다. 새로운 "최적화" 컴파일러는 CPU 기반 응용 프로그램 및 합성 벤치마크에서 인상적인 성능 향상을 제공하지만 결과적으로 10% 더 큰 파일을 생성하고 ~8% 더 느리게 컴파일합니다. 마지막 두 수치는 CPU 성능 향상보다 더 큰 것처럼 보이지만 CPU 부하에 관계없이 RAM 및 스토리지와 같은 훨씬 더 제한된 리소스를 사용하여 모든 앱에 적용된다는 점을 명심하십시오. 64비트로 컴파일하는 것은 32비트로 컴파일하는 것보다 이미 더 많은 RAM을 차지한다는 것을 기억하십시오.

컴파일 속도와 실행 시간의 감소도 장치 응답성과 사용자 경험에 미치는 영향으로 인해 우려의 대상이 됩니다.

멀티코어 ARM 레이스

런타임 및 컴파일러에 관계없이 우려되는 또 다른 원인은 ARMv7-A 및 ARMv8 아키텍처를 기반으로 하는 멀티코어 프로세서의 인기입니다. 옥타코어 열풍은 2013년에 시작되었으며 값싼 마케팅 스턴트로 빠르게 일축되었습니다. 퀄컴의 한 임원은 옥타코어 프로세서를 "바보", "바보"라고 부르기까지 했으며, 엔지니어들이 "바보가 아니기 때문에" 아무 것도 만들지 않을 것이라고 말했습니다. 같은 간부는 또한 Apple A7에서 64비트 지원을 "특이한 장치"라고 설명했습니다.

2년이 지난 지금 내 책상에는 64비트 Qualcomm 옥타코어 Cortex-A53 스마트폰이 놓여 있고 문제의 임원은 그의 명판에 다른 직함이 있습니다.

멀티코어 암

8코어 칩으로 충분하지 않은 것처럼 내년에는 10코어 애플리케이션 프로세서를 기반으로 한 최초의 장치를 보게 될 것입니다. 최초의 10코어 스마트폰 칩은 Helio X20의 형태로 MediaTek에서 제공되며, 거대.중간.TINY라는 3개의 CPU 코어 클러스터를 특징으로 합니다. 재미있고 좋아집니다. 우리는 곧 차세대 Intel 프로세서를 기반으로 하는 최초의 저렴한 Android 기기를 보기 시작할 것입니다.

ARM 핵심 전쟁과 이것이 개발자와 소비자에게 무엇을 의미하는지 살펴보겠습니다. ARM SoC 옥타코어 디자인에는 두 가지 버전이 있습니다. 고급 솔루션은 ARM의 big.LITTLE 레이아웃을 사용하는 경향이 있으며, 고부하에는 4개의 저전력 코어와 4개의 빅 코어를 사용합니다. 8개의 ARM CPU 코어를 칩에 고정하는 두 번째 방법은 동일한 코어를 사용하거나 클럭 속도가 다른 두 클러스터에 동일한 코어를 사용하는 것입니다.

주요 모바일 칩 제조업체는 주류 제품의 일반 옥타 코어와 함께 고급 장치의 big.LITTLE 칩과 같은 두 가지 접근 방식을 모두 사용하는 경향이 있습니다. 두 접근 방식 모두 장단점이 있으므로 자세히 살펴보겠습니다.

ARM big.LITTLE과 일반 Octa-Core:

서로 다른 CPU 코어의 두 클러스터를 사용하면 big.LITTLE 설계에서 우수한 단일 스레드 성능과 효율성을 얻을 수 있습니다. 단점은 단일 Cortex-A57 코어가 대략 4개의 작은 Cortex-A53 코어 크기이며 덜 효율적이라는 것입니다.

8개의 동일한 코어를 사용하거나 클럭이 다른 2개의 클러스터에서 8개의 동일한 코어를 사용하는 것은 비용 효율적이고 전력 효율적입니다. 그러나 단일 스레드 성능은 낮습니다.

ARMv8 코어를 기반으로 하는 현재 세대의 big.LITTLE 디자인은 가장 저렴한 28nm 제조 노드를 사용할 수 없습니다. 20nm에서도 일부 디자인은 많은 스로틀링을 나타내어 지속적인 성능을 제한합니다. Cortex-A53 CPU 코어를 기반으로 하는 표준 옥타 코어는 28nm에서 효과적으로 구현될 수 있으므로 칩 제조업체는 비용을 낮추는 20nm 또는 16/14nm FinFET과 같은 최첨단 제조 노드를 사용할 필요가 없습니다.

ARM big.LITTLE 대 일반 Octa-Core

칩 디자인 트렌드로 지루해하고 싶지는 않지만 2015년 및 2016년 모바일 프로세서에 대해 염두에 두어야 할 몇 가지 기본 사항이 중요합니다.

  • 대부분의 칩은 28nm 제조 노드와 Cortex-A53 코어를 사용하므로 단일 스레드 성능이 제한됩니다.
  • 큰 Cortex-A57 코어는 삼성과 Qualcomm의 두 가지 주요 설계로 구현되지만 다른 칩 제조업체는 이를 건너뛰고 Cortex-A72 코어를 기다리는 것으로 보입니다.
  • 멀티스레드 성능은 향후 18개월 동안 점점 더 중요해질 것입니다.
  • 20nm 및 FinFET 노드가 상당히 저렴해질 때까지(2016년 이후) 큰 성능 향상을 기대할 수 없습니다.
  • 10코어 디자인도 나옵니다.

이러한 모든 사항은 Android 개발자에게 특정 의미를 갖습니다. 칩 제조업체가 대부분의 스마트폰 및 태블릿 칩에 대해 28nm 공정에 고정되어 있는 한 개발자는 멀티 스레드 성능을 활용하고 효율성에 집중하기 위해 최선을 다해야 합니다.

ART와 새로운 컴파일러는 성능과 효율성을 향상시키는 데 큰 도움이 되어야 하지만 물리 법칙을 깨뜨릴 수는 없습니다. 오래된 32비트 디자인은 앞으로 많은 기기에서 사용되지 않을 것이며 가장 저렴한 기기라도 64비트 실리콘 및 Android 5.0과 함께 제공되기 시작합니다.

Android 5.x는 여전히 비교적 작은 사용자 기반을 가지고 있지만 빠르게 성장하고 있으며 64비트 칩과 Android 5.0이 포함된 100~150달러 휴대폰이 출시됨에 따라 더욱 빠르게 확장될 것입니다. 64비트 Android로의 전환은 순조롭게 진행되고 있습니다.

가장 큰 문제는 Dalvik이 언제 새로운 Optimized 컴파일러를 사용할 것인지입니다. 올해 말이나 내년에 Android 6.0으로 출시될 수 있습니다. 아직 확실히 말하기는 이르다.

모바일에 등장하는 이기종 컴퓨팅

명심해야 할 또 다른 사항이 있습니다. 모바일 그래픽은 특히 고급 프로세서에서 더욱 강력해지고 있으므로 칩 제조업체는 게임 및 비디오 디코딩 이외의 용도로 사용하기 위해 배후에서 많은 작업을 수행하고 있습니다. 이기종 컴퓨팅은 PC가 고도로 병렬화된 작업을 GPU로 오프로드할 수 있게 해주는 몇 년 동안 주변에 있었습니다.

동일한 기술이 이제 모바일 프로세서에 적용되어 CPU와 GPU 코어를 효과적으로 융합합니다. 이 접근 방식을 통해 개발자는 특정 유형의 프로그램, 즉 OpenCL 로드를 GPU에 실행하여 더 많은 성능을 얻을 수 있습니다. 개발자는 처리량에 집중할 수 있고 프로세서는 CPU 및 GPU에서 병렬 실행을 자동으로 처리합니다.

이기종 컴퓨팅

물론 이것이 모든 앱에서 작동하고 모든 상황에서 부하를 줄이는 것은 아니지만 일부 틈새 시장에서는 더 많은 성능을 발휘하고 전력 소비를 줄이는 데 도움이 됩니다. 부하에 따라 SoC는 일부 작업에는 CPU를 사용하고 다른 작업은 GPU로 오프로드하여 코드를 처리하는 방법을 자동으로 결정합니다.

병렬화된 응용 프로그램을 다루기 때문에 이 접근 방식은 이미지 처리에서 가장 큰 개선을 가져올 것으로 예상됩니다. 예를 들어, 초해상도를 사용하고 이미지를 다시 샘플링해야 하는 경우 OpenCL에서 프로세스를 여러 단계로 나눌 수 있습니다. 프로세스가 find_neighbor , col_upsample , row_upsample , subblur2 와 같은 다른 단계를 포함하는 경우 하드웨어는 어떤 종류의 코어가 주어진 작업을 가장 잘 처리할지에 따라 가장 효율적인 방법으로 CPU 및 GPU 코어에 부하를 분산합니다. 방법. 이것은 성능을 크게 향상시킬 뿐만 아니라 전력 소비를 줄이는 데도 도움이 됩니다.

Intel은 죽음에서 돌아왔고 시체에 적합해 보입니다.

인텔은 모바일 혁명에서 배를 놓쳤고 ARM과 하드웨어 파트너에게 시장을 사실상 양도했습니다. 그러나 미국 칩 제조업체는 벤치에서 몇 년을 보내고 복귀할 수 있는 돈과 자원이 있습니다.

작년에 Intel은 태블릿용 Atom 프로세서 판매에 보조금을 지급하여 1년도 채 되지 않아 출하량이 4배 증가했습니다. 이제 새로운 SoFIA Atom x3 프로세서가 탑재된 스마트폰 부문에 관심을 돌리고 있습니다. 솔직히 말해서, 나는 이 칩들이 실제로 칩 거인에 의해 생산된 것이 아니기 때문에 인텔 프로세서라고 불려야 하는지 완전히 확신하지 못합니다. SoFIA 프로세서는 중국 칩 제조업체와 협력하여 빠듯한 예산으로 설계되었습니다. 그들은 28nm 노드에서 제조되며 느리고 작고 저렴합니다.

인터와 안드로이드

이것은 평범한 관찰자에게는 놀라울 수 있지만 인텔은 고급 모바일 솔루션에 신경을 쓰지 않습니다. 저가형 SoFIA 부품은 50달러에서 150달러 사이의 가격이 책정된 상용 안드로이드 폰에 전력을 공급할 것입니다. 첫 번째 디자인은 2015년 2분기 말까지 배송을 시작해야 하며 대부분은 아시아 시장과 세계 다른 지역의 신흥 시장을 위해 디자인될 것입니다. 북미와 유럽에서 그 중 일부를 볼 수는 있지만 인텔의 초점은 중국과 인도인 것으로 보입니다.

Intel은 완전히 새로운 아키텍처와 회사의 최첨단 14nm 제조 노드를 사용하는 Atom x5 및 x7 프로세서로 베팅을 헤지하고 있습니다. 그러나 이러한 제품은 적어도 당분간은 스마트폰이 아닌 태블릿을 대상으로 합니다.

내가 대답할 수 없는 가장 큰 질문은 인텔이 벨트 아래에서 얼마나 많은 디자인 승리를 거둘 수 있느냐는 것입니다. 애널리스트들은 이 문제에 대해 의견이 나뉘고 출하 예측은 현시점에서 추정치처럼 보입니다.

작년에 인텔은 태블릿 시장에서 발판을 마련하기 위해 손실을 감수하고 수십억 달러를 소진할 용의가 있음을 입증했습니다. 새로운 Atom 칩, 특히 스마트폰 SoFIA 제품에 동일한 접근 방식을 사용할 것인지 여부를 말하기는 아직 이르다.

나는 지금까지 Intel SoFIA 프로세서를 기반으로 한 실제 제품을 단 하나 보았습니다. 바로 3G 연결을 지원하는 69달러짜리 중국 태블릿입니다. 기본적으로 대형 전화기이므로 상상할 수 있듯이 보급형 SoFIA 전화기는 훨씬 더 저렴할 수 있습니다. 후면에 "Intel Inside" 스티커가 있는 $50-$100 장치를 쉽게 디자인할 수 있기 때문에 화이트박스 스마트폰 및 태블릿 제조업체에게는 매력적인 제안일 것입니다. 마케팅 관점에서 보면 좋게 들릴 것입니다.

불행히도 우리는 내년쯤에 인텔 휴대폰과 태블릿이 몇 대나 출시될지 추측할 수 있을 뿐입니다. 우리는 분명히 수백만 단위, 수십억 단위를 다루고 있지만 문제는 다음과 같습니다. 몇 십 개가 있습니까? 대부분의 분석가들은 인텔이 올해 2천만에서 5천만 대 사이의 Atom x3 프로세서를 출하할 것으로 보고 있는데, 이는 올해 총 스마트폰 출하량이 12억 대에 이를 것으로 예상된다는 점을 감안하면 매우 낮은 수치입니다. 그러나 Intel은 무자비하고 불태울 돈이 있으며 이러한 칩으로 이익을 낼 필요가 없습니다. 2015년 말까지 시장의 3~4%를 차지할 수 있지만 시장 점유율은 2016년 이후에도 계속 증가할 것입니다.

이것은 Android 개발자에게 무엇을 의미합니까?

Intel은 특정 호환성 문제로 인해 일부 Android 개발자 사이에서 나쁜 평판을 받았습니다. 이것은 하드웨어가 대부분의 장치에서 사용되는 표준 ARM 코어와 많이 다르기 때문에 몇 년 전에 실제 문제였습니다.

운 좋게도 회사는 2년 동안 많은 발전을 이루었습니다. 광범위한 교육 프로그램, 포괄적인 문서 등을 제공합니다. 실제로 LinkedIn 채용 공고를 간략히 살펴보면 Intel이 수십 명의 Android 개발자를 고용하고 있으며 매달 몇 개의 새로운 공석이 생겨나고 있음을 알 수 있습니다.

그래서 모든 것이 잘되고 있습니다, 그렇죠? 글쎄, 그것은 의존…

지난 주에 Intel의 Atom Z3560 기반의 새로운 Asus 전화를 테스트할 기회가 있었고 결과에 만족했습니다. 예산 장치에서 4GB RAM을 처리할 수 있는 우수한 하드웨어 플랫폼입니다. Asus는 올해 3000만 대를 판매할 수 있을 것으로 생각하고 있으며, 이는 Intel의 스마트폰 시장 점유율을 감안할 때 정말 인상적입니다.

유일한 문제는 일부 Android 앱 이 인텔 하드웨어에서 여전히 오작동 한다는 것입니다. 일반적으로 너무 크지는 않지만 이상한 충돌, 비현실적인 벤치마크 점수 및 기타 호환성 문제가 발생합니다. 나쁜 소식은 개발자가 하드웨어 관련 문제를 해결하기 위해 많은 일을 할 수 없다는 것입니다. 테스트를 위해 일부 Intel 기반 장치를 구입하는 것이 좋은 시작이 될 수 있지만 말입니다. 좋은 소식: Intel은 모든 것을 끝까지 정리하기 위해 최선을 다하고 있으므로 귀하가 그럴 필요가 없습니다.

ARM 하드웨어의 경우 더 많은 클러스터에서 더 많은 CPU 코어를 볼 수 있습니다. 단일 스레드 성능은 쿼드 및 옥타 코어 Cortex-A53 SoC를 기반으로 하는 저렴한 전화기와 같은 많은 주류 장치에서 여전히 제한적입니다. 새로운 Google/ARM 컴파일러가 이러한 장치에서 성능을 향상시킬 수 있는지 여부를 말하기에는 너무 이릅니다. 그들은 아마도 그렇게 할 것입니다. 그러나 얼마나 됩니까? 이기종 컴퓨팅은 내년에 주목해야 할 또 다른 트렌드입니다.

결론적으로, 2015년 말과 2016년 말에 소프트웨어 및 하드웨어 측면에서 Android 개발자가 기대해야 하는 사항은 다음과 같습니다.

  • 보급형 및 주류 시장 부문에서 더 많은 Intel x86 프로세서.
  • 인텔의 시장 점유율은 2015년에는 미미하지만 2016년 이후에는 성장할 수 있습니다.
  • 더 많은 ARMv8 멀티코어 디자인이 온라인에 제공됩니다.
  • 새로운 "최적화된" ART 컴파일러.
  • 이기종 컴퓨팅이 오고 있지만 시간이 걸릴 것입니다.
  • FinFET 제조 노드 및 Cortex-A72로 전환하면 더 많은 성능과 기능을 사용할 수 있습니다.