CISC (Complex Instruction Set Computer)
CISC란 연산에 처리되는 복잡한 명령어 집합을 수백 개 이상 탑재하고 있는 프로세서이다. 인텔 계열의 모든 프로세서는 CISC 프로세서이다. CISC는 다음과 같은 특징을 갖는다.
1. 복잡하고 기능이 많은 명령어로 구성된 프로세서
2. 복합 명령을 가짐으로써 하위 호환성을 확보
3. 트랜지스터 집적에 있어 효율성이 떨어짐
4. 전력 소모가 큼
5. 속도가 느리고 가격이 비쌈
6. 호환성이 절대적으로 필요한 PC 환경에 사용
7. 명령어 해석에 필요한 회로가 복잡해 병렬 처리가 쉽지 않음
RISC (Reduced Instruction Set Computer)
RISC란 적은 수의 명령어를 수행하도록 설계된 마이크로프로세서이다. 복잡한 명령어를 제거하여 사용빈도가 높은 명령어 위주로 처리속도를 향상한 프로세서이다. 컴퓨터의 실행 속도를 높이기 위해 복잡한 처리는 소프트웨어에게 맡기는 방법을 채택하였다. ARM 계열의 프로세서가 RISC 프로세서이다. RISC는 다음과 같은 특징을 갖는다.
1. CPU의 명령어를 최소화하여 단순하게 제작된 프로세서
2. 효율적이고 특화된 CPU 구조
3. 하드웨어가 간단한 대신 소프트웨어가 복잡하고 크기가 커짐(컴파일러의 최적화가 요구됨)
4. 하위 호환을 위해 에뮬레이션 방식을 채택, 호환성 부족
5. 전력 소모가 적음
6. 속도가 빠르고 가격이 저렴
7. 용도에 최적화가 요구되는 환경에 사용
8. 명령어의 길이가 같기 때문에 병렬 처리가 용이함
CISC와 RISC의 차이
1) CISC와 RISC 특징 비교
분류 | CISC | RISC |
레지스터 | 8~24개의 범용 레지스터 사용, 부동소수점 연산 제공 | 32~192개의 범용 레지스터 사용, 부가적인 레지스터 사용 가능, 기본적인 연산 제공 |
설계목적 | 하나의 명령어 당 최대한 많은 작업을 하게 하는 것 | 프로그램의 길이는 길어도 명령어 당 실행 시간의 최소화 |
명령어 형식 | 다양한 길이와 형식 LOAD/STORE, 레지스터와 메모리의 다양한 명령어 형식 제공 | 고정길이의 명령어 제공 |
명령어 길이 | 가변적(1~15 bytes), 병렬처리가 힘듦 | 고정적(1 WORD), 병렬처리가 용이 |
CPU 내부 회로 | 복잡함 | 단순함 |
강조 | 하드웨어 강조 | 소프트웨어 강조 |
2) 성능 차이
CISC와 RISC 중 어느 쪽의 성능이 더 우수한지 딱 잘라 말할 수는 없다. 오늘날의 몇몇 CISC MCU는 RISC의 장점을 일부 공유하고 있으며, 몇몇 RISC MCU는 CISC의 장점을 일부 공유하고 있기 때문이다.
3) 메모리 접근과 주소 지정 방식의 차이
RISC는 Load/Store 아키텍처를 가져 Load/Store 명령어만 메모리에 액세스 할 수 있고, 다른 명령어가 메모리에 접근하지 못하게 한다. 따라서 데이터에 대한 연산이 레지스터에서 이루어진다.
반면 CISC는 대부분의 명령어가 메모리에 있는 피연산자에 접근 가능하다. 따라서 메모리에 있는 데이터를 레지스터로 읽어 들이지 않고 직접 연산을 수행할 수 있다. 하지만 레지스터에 대한 접근보다 메모리 접근은 그 속도가 더 느릴 수 있다. 만약 메모리 데이터가 캐시에 올라와 있지 않다면 레지스터 보다 접근 속도가 수십~수백 배 느릴 수 있다.
4) Stack
CISC는 일반적으로 하드웨어 스택이 내장되어 있어 서브루틴 return 주소, 파라미터, 지역 변수 등을 저장하는 데 사용한다. 따라서 call, ret, push, pop 같은 기계어 명령어를 사용할 경우 스택의 데이터가 관리된다.
반면 RISC는 스택 관련 명령어가 존재하지 않는다. 따라서 Return 주소, 파라미터, 지역 변수 등을 SW적으로 처리해야 한다.
5) 파이프라인 처리
RISC는 명령어의 길이가 고정되어 파이프라인 처리의 고속화를 가능하게 하지만, 컴파일러의 최적화 과정이 복잡해지기 쉽다. 컴파일러의 최적화를 통해 파이프라인 해저드는 사라지게 된다.
CISC는 명령어의 길이가 가변적이기 때문에 파이프라인 처리가 불가능하거나 쉽지 않다.
참고
1. https://ko.jf-parede.pt/what-is-difference-between-risc
2. https://chlalgud8505.tistory.com/8
3. https://ko.gadget-info.com/difference-between-risc
4. https://www.seminet.co.kr/ms_pdf/667_20151229134857_201502_st.pdf
'Computer Science > [컴퓨터 아키텍처]' 카테고리의 다른 글
[컴퓨터 아키텍처] 부동소수점(Floating Point)이란? (0) | 2022.03.24 |
---|---|
[컴퓨터 아키텍처] 리틀 엔디안(Little-endian) 과 빅 엔디안(Big -endian)이란? (0) | 2022.03.23 |
[컴퓨터 아키텍처] CPU란? CPU 성능 측정, CPU Time, Clock Rate, IC, CPI (0) | 2022.03.21 |