ARM Core - 2. ARM 아키텍처 및 내부 구조 (3. ARM 명령어 집합(ISA) 및 SIMD 기술)

2025. 3. 7. 13:17정보기술/하드웨어

3. ARM 명령어 집합(ISA) 및 SIMD 기술

ARM 아키텍처는 RISC(Reduced Instruction Set Computing) 기반으로 설계되었으며, 실행 속도를 최적화하기 위해 단순하고 효율적인 명령어 집합(Instruction Set Architecture, ISA)을 제공한다. ARM 명령어 집합은 ARM(32비트), Thumb(16비트), Thumb-2(16/32비트 혼합), AArch64(64비트)로 구성되며, 최신 SIMD(Neon) 및 확장 벡터 연산(SVE) 기술을 활용하여 AI, 머신러닝, 멀티미디어 및 신호 처리에 최적화되어 있다.


1. ARM 명령어 집합(ISA)의 종류

1) ARM(32비트) 명령어

  • 고정된 32비트 명령어 형식 사용
  • 로드/스토어 방식으로 메모리 접근을 최소화하여 성능 최적화
  • 조건 실행(Conditional Execution) 지원 → 불필요한 분기(branch) 최소화

예제 코드 (데이터 이동 및 연산)

MOV R0, #10      ; R0에 10 저장
ADD R1, R0, #5   ; R1 = R0 + 5
SUB R2, R1, #3   ; R2 = R1 - 3

예제 코드 (조건 실행)

CMP R0, R1       ; R0 - R1 비교
BEQ equal        ; Z 플래그(Zero) 설정되면 equal로 분기
  • CMP(비교) 명령어는 결과에 따라 Zero(Z) 플래그 설정
  • BEQ(Branch if Equal)는 Z 플래그가 1일 때 실행됨

2) Thumb(16비트) 및 Thumb-2(16/32비트 혼합) 명령어

  • Thumb: 코드 크기를 30~40% 줄일 수 있는 16비트 명령어 집합
  • Thumb-2: 16비트 및 32비트 명령어를 혼합하여 성능과 코드 크기를 최적화
  • 임베디드 및 메모리 제한 환경에서 효과적

Thumb-2 모드 예제

IT EQ           ; IT 블록(If-Then) 조건 실행
MOVEQ R0, #1    ; R0 = 1 (R0 == R1일 경우)
  • IT EQ는 Thumb-2에서 조건 실행을 지원하는 방식

3) AArch64(64비트) 명령어

  • ARMv8 이후부터 지원되는 64비트 명령어 세트
  • X0~X30 레지스터 사용 (64비트 연산 가능)
  • SP(스택 포인터), PC(프로그램 카운터)도 64비트 확장
  • 단일 명령어로 더 많은 데이터 처리 가능 → 고성능 컴퓨팅 최적화

AArch64 예제 (64비트 연산)

MOV X0, #100       ; X0에 100 저장
ADD X1, X0, #50    ; X1 = X0 + 50
SUB X2, X1, #25    ; X2 = X1 - 25
  • AArch64에서는 X 접두어를 사용하여 64비트 연산 수행
  • 32비트 연산 시에는 W0, W1 등의 레지스터 사용 가능

2. SIMD 명령어(Neon) 및 벡터 연산

1) SIMD(Single Instruction, Multiple Data)란?

  • 한 개의 명령어로 여러 개의 데이터를 동시에 처리하는 기술
  • 멀티미디어 처리, 신호 처리, 머신러닝, AI 연산 가속에 사용
  • ARM에서는 Neon(Advanced SIMD) 기술로 구현됨

2) Neon(Advanced SIMD) 개요

  • ARM Cortex-A 계열에서 지원되는 벡터 연산 기술
  • 32비트 및 64비트 벡터 연산 지원
  • 부동소수점(FP16, FP32) 연산 가속

Neon 레지스터 구조

레지스터  설명
Q0 ~ Q15 128비트 벡터 레지스터 (4개 32비트 값 저장 가능)
D0 ~ D31 64비트 벡터 레지스터 (2개 32비트 값 저장 가능)

3) Neon 벡터 연산 예제

VLD1.32 {D0}, [R0]  ; R0 주소에서 32비트 데이터 2개 로드 (D0 레지스터)
VADD.F32 D1, D0, D0 ; D1 = D0 + D0 (벡터 덧셈)
VST1.32 {D1}, [R1]  ; 연산 결과를 R1 메모리에 저장
  • VLD1.32 → 32비트 데이터 로드
  • VADD.F32 → 벡터 부동소수점 덧셈
  • VST1.32 → 결과 저장

4) Neon과 SVE 성능 비교

  • Neon은 128비트 고정된 벡터 연산을 지원
  • SVE(Scalable Vector Extension)는 128~2048비트 가변 벡터 연산 가능
  • HPC 및 AI 연산에서는 SVE가 더 뛰어난 성능을 제공

3. 최신 벡터 확장 기술 (SVE 및 SVE2)

ARMv8 및 ARMv9에서는 SVE(Scalable Vector Extension), SVE2라는 확장된 벡터 연산 기술이 도입되었다.

1) SVE(Scalable Vector Extension)

  • 벡터 길이(128~2048비트) 조정 가능
  • 고성능 컴퓨팅(HPC), AI, 데이터 분석 가속
  • Neon 대비 더 높은 연산 효율 제공

SVE 벡터 연산 예제

LD1B {Z0.V}, P0/Z, [X0]   ; X0 메모리에서 벡터 데이터 로드
ADDV  B0, P0, Z0.B        ; 벡터 값 전체를 더하기
ST1B {Z0.V}, P0, [X1]     ; 결과를 X1 메모리에 저장
  • Z0.V → SVE 벡터 레지스터 사용
  • ADDV → 벡터 내 모든 요소를 더하는 연산

SVE 실전 활용 예

  • AI/머신러닝 모델 가속 (행렬 연산 최적화)
  • 유체역학 시뮬레이션, 금융 데이터 분석
  • 5G 및 암호화 연산

2) SVE2(ARMv9 확장)

  • 5G, 암호화, 머신러닝 연산 최적화
  • 더 높은 데이터 병렬 처리 성능 제공

4. ARM 명령어 및 SIMD 요약

명령어 집합 설명
ARM (32비트) 표준 32비트 명령어, 고성능
Thumb (16비트) 코드 크기 최적화, 저전력 환경
Thumb-2 (16/32비트 혼합) 코드 크기 절감 + 성능 유지
AArch64 (64비트) ARMv8 이상에서 지원, 고성능 컴퓨팅
Neon (SIMD) 멀티미디어 및 AI 연산 가속
SVE / SVE2 확장 가능한 벡터 연산, AI 및 HPC 최적화

결론

ARM ISA는 성능, 코드 크기, 연산 효율성을 최적화하며, Neon 및 SVE를 활용해 AI, 머신러닝, HPC, 5G 등 다양한 응용 분야에서 성능을 극대화하고 있다.