ARM (Advanced RISC Machines)
ARM은 세계에서 가장 광범위하게 사용되는 CPU 체계의 한 종류입니다.
이는 RISC라는 명령어 체계를 이용하는 프로세서이고 주로 사물 인터넷, 모바일 안드로이드, 랩탑, 인터넷 모뎀, 디지털카메라, 닌텐도 등 임베디드 기기에 많이 사용되고 있습니다.
ARM의 구조
ARM은 칩의 기본 설계 구조만 만들고, 실제 기능 추가와 최적화 부분은 개별 반도체 제조사의 영역으로 맡깁니다. 그래서 물리적 설계는 같아도 명령 집합이 모두 다르기 때문에 서로 다른 칩이 되기도 합니다.
ARM은 RISC 설계 기반으로 '단순한 명령집합을 가진 프로세서가 복잡한 것보다 효율적'임을 기반하기 때문에 명령 집합과 구조 자체가 단순합니다. 이에 따라 ARM 기반 프로세서가 더 작고 효율적이며 상대적으로 느린 것입니다.
단순한 명령 집합은 적은 수의 트랜지스터만 필요하므로 간결한 설계와 더 작은 크기를 가능케 합니다.
반도체 기본 부품인 트랜지스터는 전원을 소비해 다이의 크기를 증가시키기 때문에 스마트폰이나 태블릿PC를 위한 프로세서에는 가능한 적은 트랜지스터를 가진 것이 이상적입니다.
따라서, 명령 집합의 수가 적기 때문에 트랜지스터 수가 적고 이를 통해 크기가 작고 전원 소모가 낮은 ARM CPU가 스마트폰, 태블릿PC와 같은 모바일 기기에 많이 사용되고 있습니다.
RISC (Reduced Instruction Set Computing)
RISC는 CISC의 단점을 보완하기 위해 탄생했습니다.
이는 거의 사용하지 않는 비효율적인 복합 명령어보다 컴파일러로 하여금 기본 명령어의 최적 조합을 이용하며, 많이 쓰는 기본 명령어를 기본으로 제공합니다.
RISC vs CISC
구분 | RISC | CISC |
명령어 형식 | 고정 | 가변 |
명령어 길이 | 고정 | 가변 |
명령어 종류 | 적음 | 많음 |
적재저장 구조 | 사용 | 미사용 |
주소 지정 방식 | 단순하고 소수 | 복잡하고 다수 |
회로 구성 | 단순 | 복잡 |
장점 | 구현 용이, 파이프라이닝에 효울적 | 호환성 양호, 코드 밀도 양호 |
예 | ARM, MIPS 등 | Intel x86 등 |
MIPS (Microprocessor without Interlocked Pipeline Stages)
MIPS는 ARM과 같은 RISC 기반의 명령어 집합 체계를 사용합니다.
이는 RISC답게 단순하고 구조화된 명령어 구조를 가지며, 컴파일러의 성능에 의존하는 경향이 있습니다.
MIPS의 디자인 원리
1. 규칙적인 것이 간단성을 위해 좋음
- 일관성 있는 명령어 형태
- 같은 수의 피연산자 (두 개의 source와 한 개의 destination)
- 하드웨어로 구현하기 쉬움
고급 레벨 코드 | MIPS 어셈블리 코드 | 의미 |
a = b + c; | add a, b, c | a에 b + c를 저장 |
a = b - c; | sub a, b, c | a에 b - c를 저장 |
2. 많이 발생되는 사항은 빨리 처리함
- MIPS는 단순하고 많이 사용하는 명령어를 포함함
- 명령어를 해석하고 실행하는 하드웨어는 단순하고 빠름
- 복잡한 명령어는 여러 개의 단순한 명령어로 수행됨
고급 레벨 코드 | MIPS 어셈블리 코드 | 의미 |
a = b + c - d; | add t, b, c | t에 b + c를 저장 (임시 변수 t에 저장) |
sub a, t, d | a에 t - d를 저장 (a에 b + c - d를 저장) |
3. 적을수록 빠름
- MIPS는 적은 수의 레지스터를 가지고 있음 (32개의 레지스터)
- 32개의 레지스터로부터 데이터를 획득하는 것이 1000개의 레지스터보다 빠름
고급 레벨 코드 | MIPS 어셈블리 코드 | 의미 |
a = b + c; | add $s0, $s1, $s2 | $s0 = a $s1 = b $s2 = c $s0에 $s1 + $s2를 저장 |
a = b + c - d; | sub $t0, $s2, $s3 add $s0, $s1, $t0 |
$s0 = a $s1 = b $s2 = c $s3 = d $t0에 $s2 - $s3를 저장 (임시 변수 t) $s0에 $s1 + $t0을 저장 |
4. 좋은 설계는 좋은 절충안을 요구함
- 다중 명령어 형태는 융통성 제공
- add, sub: 3개의 레지스터 피연산자 사용
- lw, sw: 2개의 레지스터 피연산자와 상수 사용
- 적은 수의 명령어 형태를 유지함
ARM vs MIPS
- 가장 큰 차이는 ARM에는 상태 플래그 레지스터인 CPSR이 존재하고 MIPS에는 존재하지 않습니다.
- MIPS에는 I type (Immediaate type) 명령어가 존재합니다
- MIPS에는 ARM MOV 명령어와 동등한 명령어가 없습니다.
- ARM 계열은 shift 연산을 여러 명령에 포함된 형태로 쓸 수 있습니다.
- 모든 ARM 데이터 처리 명령어는 기본적으로 ALU 조건 코드를 설정하지만 MIPS는 비교를 위해 SLT를 제공합니다.
'CS 지식 > 컴퓨터구조' 카테고리의 다른 글
[CS] 패리티 비트와 해밍 코드 (0) | 2023.08.12 |
---|---|
[CS] 고정 소수점과 부동 소수점 (0) | 2023.08.11 |
[CS] 캐시 메모리 (0) | 2023.08.11 |
[CS] 컴퓨터의 구성 (0) | 2023.08.09 |