머신 러닝에 초점을 맞춘 성능 향상
ARM은 미국 산호세에서 기술 컨퍼런스 ARM Techcon을 10월 8일~10일까지 개최했습니다. 첫날의 키노트 스피치는 다음 다음 세대의 Cortex-A 급 CPU 코어 아키텍처인 마테호른(Matterhorn)의 새로운 연산 기술, Cortex-A 코어의 사이드 채널 공격 방지 보안 기능의 구현, Cortex-M의 커스텀 명령 캡처, 유니티 게임 엔진의 arm 코어 최적화를 발표했습니다.
Arm의 Cortex 계열 CPU 코어가 앞으로 발전할 방향에 대해 설명했습니다. 반도체 공정은 점점 복잡해지며 제조 비용이 비싸지고 있습니다. 이 문제를 해결할 방법이 도메인 컴퓨팅(특정 영역에 최적화한 컴퓨팅)이라 설명합니다.
또 사이버 범죄가 큰 문제가 되면서, 제품 위주가 아니라 솔루션 위주로 변해가고, IP의 구분을 넘어서 최적화할 필요가 생겨나고 있습니다. 이를 대응하기 위해서는 포괄적인 종합 컴퓨팅(Total Compute)이 필요하다고 봅니다.
Arm의 Ian Smythe(Vice President Marketing Operations, Arm)
컴퓨팅의 성능을 끌어 올리고 보안과 소프트웨어, 각종 도구까지 포함하는 포괄적인 솔루션이 토탈 컴퓨트입니다.
마테호른에서 새로운 명령어 세트, ARMv8.6-A를 지원
도메인마다 확장해 딥 러닝을 위한 새로운 명성을 마테호른에 도입합니다.
새로운 명령어는 머신 러닝의 매트릭스 연산 명령어 MatMul(행렬 곱셈 Matrix Multiply)를 추가해 성능을 Cortex-A73의 10배로 향상시킵니다.
Arm의 Cortex-A/Neoverse 급 CPU 명령 세트는 ARMv8-A입니다. 현재 ARMv8-A는 소수점 아래로 버전을 계속 향상하고 있으며, 이번에 나온 새로운 행렬 곱센 명령인 MatMul이 다음 버전인 ARMv8.6-A에 포함됩니다. CPU에 벡터 명령 뿐만 아니라 매트릭스 연산형 명령이 추가됩니다. 매트릭스 연산 명령이라고는 해도 NVIDIA가 벡터 프로세서인 GPU에 본격적인 매트릭스 연산 유닛 텐서 코어를 넣은 것과는 조금 다릅니다.
ARM ARMv8.6의 캡처 매트릭스 명령 MatMul은 비교적 작은 크기의 실행 유닛입니다. 레지스터도 128비트로 전통적인 벡터 연산 그대로입니다. 데이터 정확도는 16비트의 bfloat16입니다. 128비트 레지스터에선 2x4의 bfloat16를 수행해 그 결과를 32비트 단정밀도 FP32로 출력하고 곱셈/덧셈을 수행합니다. Cortex-A77의 5배 정도 성능 향상 효과가 있습니다.
여기서 중요한 점은 ARM이 bfloat16라는 데이터 포맷을 썼다는 것입니다. bfloat16(Brain Floating Point 16)는 신경망 처리를 전제로 제안한 새로운 부동소수점 포맷입니다. 구글이 먼저 사용하고, 인텔도 채택했으며, ARM도 2020년의 마테호른 코어에서 사용합니다.
기존의 IEEE 754 부동 소수점은 FP32(32-bit 단정밀도 부동 소수)가 부호 부분(Sign) 1비트, 지수(Exponent) 8비트, 가수(Mantissa) 23비트로 구성됐습니다. bfloat16는 부호(Sign) 1비트, 지수(Exponent) 8비트, 가수(Mantissa) 7비트로 지수 범위가 FP32와 같습니다. 데이터 크기를 절반으로 줄이며 범위는 FP32와 같아 신경망 연산에 적합합니다.
ARM은 딥 러닝을 위한 프로세서인 ARM ML 아키텍처에서 bfloat16을 쓰지 않았습니다. 이것은 추론 연산을 주로 하기에, 학습에서 유용한 bfloat16을 쓰지 않았다고 보입니다. 그러나 CPU에서는 앞으로 bfloat16을 채택합니다. 데이터 센터인 Neoverse까지 고려한 확장으로 보입니다.
사이드 채널 공격의 보안 대책
보안 쪽에선 최근 몇 년 들어 화제인 CPU 아키텍처의 사이드채널 공격(멜트다운과 스펙터)에 대한 대책이 나왔습니다. ARM은 마이크로 아키텍처 수준에서 이 문제를 해결하는데, 구체적으로는 메모리 태그나 포인터 원본 확인 등의 방법을 사용합니다.
메모리 태그는 메모리 영역에 4비트 태그를 붙입니다. CPU에서 메모리를 액세스할 때는 액세스 대상 주소를 저장한 레지스터 태그와 메모리 태그를 비교해, 태그가 일치할 경우에만 액세스를 허용합니다. 태그는 4비트로 저장 값이 작아 계속해서 재사용하나, 악성 프로그램의 접근을 상당히 높은 확률로 막아줍니다.
게임 엔진과의 제휴를 발표
이 밖에 소프트웨어 에코 시스템의 발전의 일환으로 게임 엔진 업체인 윤티와의 제휴를 발표했습니다.
지금도 유니티 엔진은 arm 계열 SoC에서 실행됩니다.
앞으로 두 회사는 파트너쉽을 잘전시켜 소프트웨어와 하드웨어의 통합과 최적화를 목표로 합니다.
구체적으로는 렌더링 파이프라인을 Arm 코어에 최적화.
멀티 코어에 최적화된 멀티 스레드 코드를 만들어내는 Data Oriented Tech Stack (DOTS)
유니티의 AR 솔루션인 AR 파운데이션도 최적화합니다.