iPhone 앱을 컴파일 할 때 armv6보다 armv7의 장점은 무엇입니까?
이점이 전혀 없다면 ... 문서에서 결정적인 것을 찾을 수 없습니다.
분명히 armv7은 최신 버전의 iOS 용입니다 ... 더 빠릅니까? 더 작게? X에서 더 나은가요?
가장 큰 차이점 중 하나는 armv6 아키텍처가 배정 밀도 부동 소수점 산술에 대한 하드웨어 지원을 제공하는 반면 armv7은 배정 밀도 부동 소수점 산술에 대한 레거시 소프트웨어 지원 만 제공한다는 것입니다.
이를 보완하기 위해 armv7 아키텍처에는 단 정밀도 부동 소수점 산술에 대해 맹목적으로 빠른 하드웨어 지원을 제공하는 "NEON"장치가 있습니다.
이것은 단 정밀도 또는 배정 밀도로 수행하든 부동 소수점 산술을 포함하는 작업을 수행하는 경우 고려해야 할 사항입니다. 배정 밀도로 수행하지만 반드시 그 정도의 정밀도가 필요하지는 않다면 대신 단 정밀도를 사용하여 armv7 장치에서 상당한 성능 향상을 얻을 수 있습니다.
Apple은 올해 WWDC 세션 중 하나에서 armv6과 armv7의 많은 차이점과 Accelerate 프레임 워크에 대한 소개를 다루었습니다. 동영상은 iTunes에서 계속 사용할 수 있습니다 ('10 년 7 월 현재).
구형 iOS 장치 (iPhone, iPhone 3G, 1 세대 및 2 세대 iPod touch)에는 armv6 명령 집합 만 지원하는 CPU가있었습니다. iPhone 3G S (및 iPad 및 3 세대 iPod touch)에는 armv7 명령 세트도 지원하는 최신 프로세서가 있습니다. 일반적으로 armv7은 이러한 최신 프로세서에서 더 빠르며 앞으로 애플리케이션에 armv7 빌드를 포함하는 것이 좋습니다 (iPad 전용 애플리케이션에서는 아마도 armv7 용으로 빌드 할 수 있음).
Jasarien이 지적했듯이 명령어 세트 간의 가장 큰 차이점은 부동 소수점 연산입니다. armv6에서 응용 프로그램은 축소 된 Thumb 명령어 세트를 사용하여 빌드되어 더 작은 바이너리를 생성하는 경향이 있었지만 Thumb 부동 소수점 성능은 끔찍했습니다. 따라서 더 빠른 부동 소수점 계산을 원하기 때문에 Thumb을 비활성화해야했습니다. armv7에서는 Thumb-2 명령어 세트에 더 이상 이러한 제한이 없으므로 Apple은 거의 항상이를 사용하여 컴파일 할 것을 권장합니다.
Thumb 빌드 설정을 조건부로 지정하여 이전 장치에서는 꺼지고 최신 장치에서는 켜도록 할 수 있습니다. 이렇게하려면 Xcode 빌드 설정으로 이동하여 Thumb 용 컴파일 옵션을 선택합니다. 화면 왼쪽 하단의 메뉴로 이동하여 Add Build Setting Condition 옵션을 선택합니다. 새 빌드 설정 조건에서 아키텍처로 ARMv6을 선택하고 Thumb을 끄고 다른 조건을 추가하고 아키텍처로 ARMv7을 선택한 다음 Thumb을 활성화합니다.
여기 에 Stephen Canon의 답변에 따르면 armv6의 하드웨어에서 단 정밀도 부동 소수점 연산과 배정 밀도 부동 소수점 연산이 모두 지원됩니다. 단 정밀도 연산이이 플랫폼에서 약간 더 잘 수행된다는 것을 발견했습니다. 아마도 캐시에 맞는 연산이 더 많기 때문일 것입니다. armv7에서 NEON SIMD 부동 소수점 단위는 단 정밀도 연산에서만 작동하므로 단 정밀도 연산과 배정 밀도 연산간에 성능에 큰 차이가있을 수 있습니다.
이 주제에 대해 관심이있을 수있는 다른 질문은 다음과 같습니다.
- "armv7 전용 아키텍처를 컴파일 할 때의 이점 / 결과는 무엇입니까?"
- "armv6 / armv7 아키텍처를 armv6으로 변경하면 내 iPad 앱에 어떤 영향을 줍니까? 성능 / 안정성이 저하됩니까?"
- "iPhone 감지 프로세서 모델 / NEON 지원"
- "ARMv7 + NEON 용 고속 사인 / 코사인 : 테스터를 찾고 있습니다…"
나에게 ARMv7의 주요 장점은 다음과 같습니다.
- thumb-2
- 네온
NEON은 명시 적으로 코딩되어야합니다. 단순히 재 컴파일하는 것만으로는 활용하지 못하지만 시간을 투자 할 수 있다면 멀티미디어 / 게임 작업을 8 배로 가속화 할 수 있습니다. 그러나 thumb-2는 거의 단점이없는 코드 크기입니다 (ARMv6의 Thumb과 달리 ARM 모드에 비해 부동 소수점 코드가 훨씬 느려짐). 물론 ARMv7에서 실행 파일의 다른 버전을 추가해도 실행 파일 크기가 줄어들지는 않지만 메모리, 캐시 등의 코드가 줄어 듭니다.
앱을 iPad 및 모든 iPhone / iPod toch 모델에서 실행하려면 두 가지 모두에 대해 컴파일해야합니다. 이전 iOS 기기는 arm6을 사용하고 새로운 기기는 arm7을 사용합니다.
둘 중 하나를 컴파일하지 않는 유일한 이유는 컴파일 된 코드 버전이 하나만 필요하기 때문에 앱 크기가 줄어들 기 때문입니다. 그러나 코드베이스가 매우 크지 않으면이 파일 크기 차이는 매우 미미합니다.
arm7은 iPod Touch (3 세대) 및 iPhone 3GS 이상에 더 최적화되어 있습니다. 구형 장치 용으로 빌드 할 때는 'Standard / arm6 + arm7'을 사용해야합니다. 실제로 응용 프로그램에서 성능 차이를 많이 보지 못했습니다.
이 링크를 보면 장점, 차이점 등에 대한 좋은 설명이 있습니다.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0001a/CHDEFAGB.html
'Development Tip' 카테고리의 다른 글
x보다 큰 첫 번째 Python 목록 색인? (0) | 2020.11.10 |
---|---|
사전을 반복하고 값을 변경하는 방법은 무엇입니까? (0) | 2020.11.10 |
Maven 종속성 해결 (충돌) (0) | 2020.11.10 |
web.xml에서 applicationContext.xml 파일 대신 Spring @Configuration 주석이 달린 클래스를 등록하는 방법은 무엇입니까? (0) | 2020.11.10 |
Git-심볼릭 링크 처리 방법 (0) | 2020.11.10 |