복잡 명령어 집합 컴퓨터
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
복잡 명령어 집합 컴퓨터(CISC)는 초창기 CPU 설계 방식의 하나로, 반도체 집적도 향상에 따라 마이크로프로그램 방식을 활용하여 다양한 기능을 구현했다. 초기에는 메모리 접근과 연산을 하나의 명령어로 처리하는 특징을 보였으며, 하위 호환성을 유지하며 성능을 향상시켰다. CISC는 RISC의 등장과 함께 기술적 경쟁을 겪었으며, 현재는 x86 아키텍처 등에서 그 흔적을 찾아볼 수 있다. CISC는 명령어의 복잡성으로 인해 여러 명령어를 동시에 디코딩하기 어렵다는 비판을 받았지만, 현대에는 마이크로 연산 변환 등의 기술을 통해 이러한 문제를 해결하고 있다.
더 읽어볼만한 페이지
- 명령어 집합 구조 - ARM 아키텍처
ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다. - 명령어 집합 구조 - PA-RISC
PA-RISC는 휴렛 팩커드에서 개발한 RISC 기반 명령어 집합 아키텍처로, HP 서버 및 워크스테이션에 사용되었으며 대용량 L1 캐시와 SIMD 명령어 확장 등의 특징을 가졌으나 아이테니엄 아키텍처로의 전환으로 단종되었다. - 마이크로프로세서 - 중앙 처리 장치
중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다. - 마이크로프로세서 - ARM 아키텍처
ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다.
복잡 명령어 집합 컴퓨터 | |
---|---|
정의 | |
한국어 명칭 | 복잡 명령어 집합 컴퓨터 |
영어 명칭 | Complex Instruction Set Computer (CISC) |
개요 | |
특징 | 하나의 명령어로 여러 단계의 연산을 수행할 수 있도록 설계된 CPU 아키텍처 마이크로프로그래밍 방식 사용 (일부 또는 전체) 상대적으로 많은 수의 명령어와 다양한 주소 지정 방식 지원 |
역사 | |
등장 배경 | 램 가격이 비싸고, 컴파일러 기술이 발전하지 못했던 시기에 코드 크기 축소 및 성능 향상을 위해 개발됨. 어셈블리 프로그래밍 환경에서 사용 편의성 제공 |
발전 | 1970년대 후반, VAX와 같은 CISC 아키텍처가 미니컴퓨터 시장을 지배. 1980년대, RISC(Reduced Instruction Set Computer) 아키텍처의 등장으로 경쟁 심화. |
기술적 특징 | |
명령어 구조 | 복잡하고 다양한 명령어 세트 가변 길이 명령어 형식 사용 (명령어 길이가 다를 수 있음) 많은 수의 주소 지정 방식 지원 |
마이크로프로그래밍 | 복잡한 명령어를 실행하기 위해 마이크로코드 사용 명령어 해독 후, 마이크로코드를 통해 세부 동작 제어 |
메모리 접근 | 메모리-메모리 연산 지원 (메모리에 직접 접근하여 연산 수행) 다양한 메모리 주소 지정 방식 제공 |
명령어 수 | 많은 수의 명령어 (수백 개 이상) |
명령어 길이 | 가변 길이 |
주소 지정 방식 | 다양한 주소 지정 방식 지원 |
장단점 | |
장점 | 코드 밀도 향상 (명령어 수가 적어 코드 크기 감소) 컴파일러 개발 용이 (초기 컴파일러 기술이 부족할 때 유리) 어셈블리 프로그래밍에 친숙함 |
단점 | 복잡한 명령어 구조로 인해 CPU 설계 및 제조 비용 증가 명령어 실행 시간 예측이 어려움 전력 소모가 큼 RISC에 비해 파이프라인 구현이 어려움 |
CISC vs RISC | |
비교 | CISC: 복잡한 명령어 세트, 가변 길이 명령어, 다양한 주소 지정 방식 RISC: 단순한 명령어 세트, 고정 길이 명령어, 제한적인 주소 지정 방식 |
대표적인 CISC 아키텍처 | |
종류 | x86 시리즈 (인텔 및 AMD) 모토로라 68000 VAX IBM System/360 |
활용 | |
주요 사용 분야 | 데스크톱 컴퓨터 서버 임베디드 시스템 (특정 분야) |
참고 자료 | |
관련 서적 | Patterson, D. A., & Ditzel, D. R. (1980). The case for the reduced instruction set computer. ACM SIGARCH Computer Architecture News, 8(6), 25-33. |
2. 역사
RISC 철학이 대두되기 전, 많은 컴퓨터 설계자들은 프로시저 호출, 루프 제어, 복잡한 주소 지정 방식 등을 지원하는 명령어 집합을 설계하여 의미론적 격차를 해소하고자 했다. 이러한 명령어 집합은 데이터 구조 및 배열 접근을 단일 명령으로 결합하고, 코드 밀도를 높이기 위해 고도로 인코딩되었다. 이는 1960년대 초, 컴퓨터 프로그램 크기를 줄이고 메인 메모리 접근 횟수를 줄여, 컴퓨터 메모리 및 디스크 저장 장치 비용을 절감하고 실행 속도를 높이는 데 기여했다. 또한, 어셈블리어에서의 뛰어난 프로그래밍 생산성을 제공했는데, 이는 포트란이나 알골과 같은 고급 프로그래밍 언어가 항상 사용 가능하거나 적합하지 않았기 때문이다.
1970년대의 분석에 따르면, 컴파일러가 생성하는 기계어가 복잡하다는 사실이 밝혀졌다. 새로운 명령어를 통해 성능을 향상시킬 수 있다는 결론이 내려졌고, 컴파일된 고수준 언어에 적합한 일부 명령어들이 추가되었다. 컴파일러는 이러한 명령어들을 활용할 수 있도록 업데이트되었다.
CISC와 RISC라는 용어는 CISC와 RISC 설계 모두 지속적으로 발전하면서 의미가 퇴색되었다. 최초의 고도로 파이프라인화된 x86 구현인 인텔, AMD, Cyrix, IBM의 486 설계는 이전 버전의 모든 명령어를 지원했지만, 전형적인 RISC 명령어 집합보다 약간 더 나은 비교적 단순한 x86 하위 집합에서만 ''최대 효율성''을 달성했다. 인텔의 P5 펜티엄 세대는 이러한 원리의 슈퍼스칼라 버전이었다. 그러나 최신 x86 프로세서는 명령어를 디코딩하고 내부적으로 버퍼링된 동적 시퀀스의 마이크로 연산으로 분할하여 파이프라인 방식으로 더 큰 하위 집합의 명령어를 실행하고 코드 스트림에서 더 발전된 병렬 처리를 추출하여 더 높은 성능을 얻을 수 있다.
모든 CISC가 마이크로코딩되거나 "복잡한" 명령어를 갖는 것은 아니다. CISC가 로드-스토어(RISC) 아키텍처가 아닌 모든 것을 의미하는 포괄적인 용어가 되면서, CISC를 정의하는 것은 명령어의 수, 구현의 복잡성, 명령어의 복잡성이 아니라 산술 명령어가 메모리 액세스도 수행한다는 것이다.[4] 작은 8비트 CISC 프로세서에 비해 RISC 부동 소수점 명령어는 복잡하다. CISC는 복잡한 어드레싱 모드를 가질 필요조차 없다. 32비트 또는 64비트 RISC 프로세서가 작은 8비트 CISC 프로세서보다 더 복잡한 어드레싱 모드를 가질 수 있다.
PDP-10, PDP-8, 인텔 80386, 인텔 4004, 모토로라 68000, System z 메인프레임, Burroughs B5000, VAX, Zilog Z80000, MOS Technology 6502는 명령어의 수, 크기 및 형식, 레지스터의 수, 유형 및 크기, 사용 가능한 데이터 유형이 모두 매우 다양하다. 그러나 이러한 프로세서들은 모두 CISC 범주에 속하는데, 그 이유는 실제 계산을 수행하는 동일한 명령어 내에서 메모리 내용을 로드 및/또는 저장하는 "로드-연산" 명령어를 가지고 있기 때문이다. 예를 들어, PDP-8은 8개의 고정 길이 명령어만 가지고 있고 마이크로코드는 전혀 없지만, 명령어의 작동 방식 때문에 CISC이다.
현재는 x86 호환 프로세서가 CISC로 분류되지만, RISC인 ARM 아키텍처도 CISC로 특징 지어지는 성격[5]을 가지고 있다. 모토로라사의 MC 680x0 (68K) 계열 프로세서도 CISC 계열에 포함된다.
어셈블리 언어가 프로그래밍에서 사용되던 시절에는 풍부한 어드레싱 모드를 갖추고 명령의 직교성을 갖는 것이 좋다고 여겨졌다. 즉, 임의의 연산에서 어떤 어드레싱 모드도 사용할 수 있는 것이 좋다고 생각되었다. 연산은 레지스터-레지스터 간 연산 외에, 레지스터-메모리 연산, 메모리-메모리 연산을 갖는 것이 보통이며, 피연산자는 2피연산자 또는 3피연산자까지 지정할 수 있는 타입이 많았다.
2. 1. 초기 CPU 설계
초기의 CPU는 반도체의 집적도가 낮았기 때문에, 내부의 연산기나 실행 유닛의 비트 길이가 워드 길이보다 훨씬 짧았다. 전형적으로 32비트가 1워드일 때, 연산기는 4비트로 8회의 연산을 반복하여 32비트끼리의 계산을 실행했다. 이 반복 연산이 명령어의 실행 단계를 여러 상태로 나누어 처리했다. 이러한 아키텍처를 비트 슬라이스 프로세서라고 불렀으며, 실행 유닛이 4비트인 경우 16진 아키텍처라고 불렀다.2. 2. 마이크로프로그램 방식의 채택
반도체 집적도가 향상됨에 따라, CPU 내부 구조를 쉽게 변경하기 위해 마이크로프로그램 방식이 채택되었다. CISC는 처음부터 단순한 마이크로아키텍처로 다양한 기능을 구현하기 위해 마이크로프로그램 방식을 사용했다.[4]2. 3. RISC 개념의 등장
반도체 집적도가 향상되면서 RISC 개념이 등장했다. 초기 CPU는 반도체 집적도가 낮아 내부 연산기나 실행 유닛의 비트 길이가 워드 길이보다 훨씬 짧았다. 예를 들어 32비트가 1워드일 때, 연산기는 4비트로 8회 연산을 반복하여 32비트 계산을 실행했다. 이러한 아키텍처를 비트 슬라이스 프로세서라고 불렀다.반도체 집적도가 향상되면서 연산기의 비트 폭이 증가하고 CPU 내부 구조가 변경되었다. 명령어 세트 호환성을 유지하면서 내부 아키텍처를 쉽게 갱신하기 위해 마이크로프로그램 방식이 채용되었다. CISC는 처음부터 단순한 마이크로아키텍처로 다양한 기능을 실현하기 위해 마이크로프로그램 방식을 사용했다.
RISC는 1칩에 집적된 CMOS 마이크로프로세서가 32비트 1워드 실행 유닛으로 고정된다는 전제하에, 단순화된 구조로 최적화하면 CISC를 능가할 수 있다고 생각했다. 그러나 CMOS 반도체의 집적도는 계속 향상되었고, 스케일링 법칙에 의해 내부 클럭은 고속화되었다. 상대적으로 온칩 캐시의 메모리 레이턴시는 계속 증가했고, 이러한 RISC의 전제는 곧 무너졌다.
2. 4. CISC의 발전과 한계
CISC는 반도체 집적도가 향상됨에 따라 수퍼스칼라, 아웃 오브 오더 실행, 추측 실행 등의 기술을 도입하여 성능을 향상시켰다. 수퍼스칼라는 여러 개의 실행 유닛을 사용하여 동시에 여러 명령어를 처리하는 기술이다. 아웃 오브 오더 실행은 명령어 실행 순서를 최적화하여 처리 속도를 높이며, 추측 실행은 명령어 결과를 예측하여 미리 실행하는 방식이다.그러나 2000년대 중반 이후, CISC 마이크로아키텍처의 과도한 복잡성으로 인해 성능 향상에 한계가 나타났다. 이에 따라 멀티 코어, 동시 멀티스레딩, SIMD와 같은 병렬 처리 기술이 주목받게 되었다. 멀티 코어는 하나의 CPU 칩에 여러 코어를 집적하는 기술이며, 동시 멀티스레딩은 하나의 코어가 여러 스레드를 동시에 처리하는 기술이다. SIMD는 하나의 명령어로 여러 데이터를 동시에 처리한다. 이러한 병렬 처리 기술을 활용하려면 소프트웨어 재작성이 필요하다.
3. 구조
CISC 프로세서는 마이크로 코드로 정의된 작업을 수행하는 회로를 사용하며, 이는 여러 면에서 초기 CPU 설계와 구조가 유사하다. 1970년대 초, 이는 더 간단한 프로세서 설계를 되돌아가려는 아이디어를 낳았다.[2]
초기 RISC 프로세서인 IBM 801은 원래 CISC 설계에서 내부 마이크로 코드 커널 또는 엔진으로 사용하기 위해 만들어졌지만, RISC 아이디어를 더 넓은 청중에게 소개하는 계기가 되었다. CISC 프로세서의 내부 마이크로 코드 실행은 특정 설계에 따라 다소 파이프라인화될 수 있으며, 따라서 RISC 프로세서의 기본 구조와 유사하다.[3]
CISC와 RISC라는 용어는 CISC와 RISC 설계를 모두 지속적으로 발전시키면서 그 의미가 퇴색되었다. 최초의 고도로 파이프라인화된 x86 구현인 인텔의 486 설계는 이전 버전의 모든 명령어를 지원했지만, 전형적인 RISC 명령어 집합보다 약간 더 나은 비교적 단순한 x86 하위 집합에서만 최대 효율성을 달성했다. 최신 x86 프로세서는 명령어를 디코딩하고 내부적으로 버퍼링된 동적 시퀀스의 마이크로 연산으로 분할하여 더 높은 성능을 얻는다.
모든 CISC가 마이크로코딩되거나 "복잡한" 명령어를 갖는 것은 아니다. CISC는 산술 명령어가 메모리 액세스도 수행한다는 특징을 갖는다. 작은 8비트 CISC 프로세서에 비해 RISC 부동 소수점 명령어는 복잡할 수 있으며, CISC는 복잡한 어드레싱 모드를 가질 필요조차 없다.
PDP-10, PDP-8, 인텔 80386, 인텔 4004, 모토로라 68000, System z, Burroughs B5000, VAX, Zilog Z80000, MOS Technology 6502 등 다양한 프로세서들이 CISC 범주에 속한다. 이들은 명령어의 수, 크기 및 형식, 레지스터의 수, 유형 및 크기, 사용 가능한 데이터 유형이 모두 매우 다양하지만, 모두 메모리 내용을 로드 및/또는 저장하는 "로드-연산" 명령어를 가지고 있기 때문이다.
실행 유닛의 연산기 폭을 다양하게 구성할 수 있어 유연성을 갖는다.
3. 1. 마이크로프로그램 방식
마이크로프로그램 방식을 사용하면 동일한 명령어 집합을 유지하면서 내부 마이크로아키텍처를 발전시킬 수 있다. 마이크로프로그래밍 방식은 마이크로아키텍처인 내부 CPU가 만능 튜링 머신으로서 외부 CPU를 시뮬레이션하는 것이다.[2] 이 방식은 그 당시 구현 기술로 가장 효율적인 내부 CPU가 외부 CPU를 시뮬레이션하여 하위 호환성을 유지하게 한다. 이처럼 CISC는 하위 호환성을 유지하면서 지속적으로 성능과 기능을 향상시킬 수 있는 아키텍처이다.[3]4. 특징
CISC는 다양한 기능을 가진 복잡한 명령어 집합을 특징으로 한다. 많은 컴퓨터 설계자들은 프로시저 호출, 루프 제어, 복잡한 주소 지정 방식과 같은 고급 프로그래밍 구문을 직접 지원하는 명령어 집합을 설계하여, 데이터 구조 및 배열 접근을 단일 명령으로 결합할 수 있도록 했다. 이러한 방식은 코드 밀도를 높이고, 컴퓨터 프로그램 크기를 줄이며, 메인 메모리 접근 횟수를 줄여, 1960년대 초 당시 비쌌던 컴퓨터 메모리 및 디스크 저장 장치 비용을 절감하고 실행 속도를 높이는 데 기여했다. 또한, 어셈블리어에서의 프로그래밍 생산성도 향상시켰다.
1970년대에 고수준 언어에 대한 분석을 통해 컴파일러가 생성하는 기계어가 복잡하다는 것이 밝혀졌다. 새로운 명령어를 사용하면 성능을 향상시킬 수 있다는 결론이 내려졌고, 컴파일된 고수준 언어에 적합한 일부 명령어들이 추가되었다. 컴파일러는 이러한 명령어들을 활용할 수 있도록 업데이트되었다.
CISC와 RISC라는 용어는 CISC와 RISC 설계를 모두 지속적으로 발전시키면서 그 의미가 퇴색되었다. 최초의 고도로 파이프라인화된 x86 구현인 인텔 486 설계는 이전 버전의 모든 명령어를 지원했지만, 전형적인 RISC 명령어 집합보다 약간 더 나은 비교적 단순한 x86 하위 집합에서만 최대 효율성을 달성했다. 펜티엄 세대는 이러한 원리의 슈퍼스칼라 버전이었다. 그러나 최신 x86 프로세서는 명령어를 디코딩하고 내부적으로 버퍼링된 동적 시퀀스의 마이크로 연산으로 분할하여 파이프라인 방식으로 더 큰 하위 집합의 명령어를 실행하고 코드 스트림에서 더 발전된 병렬 처리를 추출하여 더 높은 성능을 얻는다.
일반적인 단순화와 달리 모든 CISC가 마이크로코딩되거나 "복잡한" 명령어를 갖는 것은 아니다. CISC는 산술 명령어가 메모리 액세스도 수행한다는 것을 의미한다. 작은 8비트 CISC 프로세서에 비해 RISC 부동 소수점 명령어는 복잡하며, CISC는 복잡한 어드레싱 모드를 가질 필요조차 없다.
PDP-10, PDP-8, 인텔 80386, 인텔 4004, 모토로라 68000, System z 메인프레임, Burroughs B5000, VAX, Zilog Z80000, MOS Technology 6502 등 다양한 프로세서들이 CISC 범주에 속한다. 이들은 명령어의 수, 크기 및 형식, 레지스터의 수, 유형 및 크기, 사용 가능한 데이터 유형이 모두 매우 다양하지만, 실제 계산을 수행하는 동일한 명령어 내에서 메모리 내용을 로드 및/또는 저장하는 "로드-연산" 명령어를 가지고 있기 때문에 CISC로 분류된다.
현재는 x86 호환 프로세서가 CISC로 분류되지만, RISC인 ARM 아키텍처도 CISC로 특징지어지는 성격[5]을 가지고 있다. 오래전에 설계된 미니컴퓨터나 메인프레임도 CISC로 분류되며, 미국 모토로라사의 MC 680x0 (68K) 계열 프로세서도 CISC 계열에 포함된다.
4. 1. 어드레싱 모드와 직교성
프로그래밍에서 어셈블리 언어가 사용되던 시절에는 풍부한 어드레싱 모드를 갖추고 명령의 직교성을 갖는 것이 좋다고 여겨졌다.[6] 즉, 임의의 연산에서 어떤 어드레싱 모드도 사용할 수 있는 것이 좋다고 생각되었다. 연산은 레지스터-레지스터 간 연산 외에 레지스터-메모리 연산, 메모리-메모리 연산을 갖는 것이 보통이며, 피연산자는 2피연산자 또는 3피연산자까지 지정할 수 있는 타입이 많았다. 예를 들어, 메모리 1의 내용과 메모리 2의 내용을 논리곱하여 메모리 3에 저장하는 것과 같은 작업이 1개의 명령으로 가능했다. 인덱스 어드레싱 시의 오프셋은 명령으로 지정되는 데이터 워드 길이에 맞춰 스케일링되는 경우가 많았다. 또한, 데이터 워드 길이가 다른 데이터 간의 연산에서도 연산 전에 자동으로 부호 확장 등이 이루어지므로, 데이터 길이를 맞추는 명령을 생략할 수 있는 경우가 많았다. 데이터 경계를 메모리상의 어디에든 배치할 수 있었다. 1개의 명령으로 처리하는 작업이 복잡하기 때문에, 마이크로 프로그램 방식으로 구현되는 경우가 많았다.4. 2. 데이터 처리
인덱스 어드레싱 시 오프셋은 명령으로 지정되는 데이터 워드 길이에 맞춰 스케일링되는 경우가 많다.[4] 또한, 데이터 워드 길이가 다른 데이터 간 연산에서 연산 전에 자동으로 부호 확장 등이 이루어져 데이터 길이를 맞추는 명령을 생략할 수 있다.[4] 데이터 경계는 메모리 상 어디에든 배치할 수 있다.[4] 이처럼 하나의 명령으로 처리하는 작업이 복잡하기 때문에, 마이크로 프로그램 방식으로 구현되는 경우가 많다.[4]5. 현대적 응용 및 현황
1990년대에는 "CISC는 RISC로 대체될 것이다"라는 예측도 있었지만[6], 실제로는 CISC 프로세서의 대부분이 내부적으로 RISC 기술을 채용했고[6], RISC 프로세서도 명령어를 추가하면서 2000년대에는 기술적인 차이가 거의 사라졌다. 따라서 현재 "CISC"와 "RISC"는 기술 용어라기보다는 각 프로세서의 역사적 총칭으로 사용된다.[6]
"CISC"는 주로 x86, x64, 전통적인 메인프레임 및 미니컴퓨터의 전용 프로세서를, "RISC"는 SPARC, MIPS, ARM, PA-RISC, POWER 등을 의미한다.[6] IA-64는 PA-RISC의 후계이지만, EPIC 아키텍처라는 독자적인 아키텍처를 채택하여 RISC로 분류하지 않는 경우가 많다. 32비트 ARM(64비트 ARM은 전형적인 RISC에 가깝다)이나, POWER, PowerPC는 RISC의 전형에서 벗어난 아키텍처이지만, 일반적으로 둘 다 RISC로 분류된다.[6]
5. 1. 시장별 채용 현황
CISC (x86)가 개인용 컴퓨터 시장의 대부분을 차지하고 있다. Macintosh는 2020년 이후 ARM 기반의 Apple Silicon을 탑재하여 점유율이 확대되고 있지만, 여전히 x86이 주류이다.[7] 서버 시장에서는 로우엔드 서버는 CISC(x86)가, 하이엔드 서버는 RISC (SPARC, POWER 등)가 많이 사용된다.[7]메인프레임 시장은 CISC (z/Architecture, ACOS, IA-64, x86 등)가 대다수를 차지한다.[7] 슈퍼컴퓨터 시장에서는 CISC(x86)가 약 90%, RISC(POWER 등)가 약 10%를 차지하며, NEC SX와 같은 벡터 프로세서도 일부 사용된다.[7]
임베디드 시스템 시장에서는 RISC가 우세하다. 칩 크기 및 전력 소비가 중요한 요소이기 때문에, 32비트 이상의 고성능 프로세서에서는 RISC가 강점을 가진다.[7] 휴대 전화 시장은 RISC(주로 ARM)가 거의 독점하고 있지만, 스마트폰 중에는 x86 SoC를 채용한 제품도 있다.[7]
게임기 시장은 2013년 이후 PlayStation 4와 Xbox One이 x86으로 전환되면서 변화가 나타났다. 휴대용 게임기는 여전히 RISC를 사용하고 있다.[7]
6. 주요 프로세서
주어진 원본 소스가 없어 내용을 작성할 수 없지만, 이전 출력에 대한 자체 검토 결과, 원본 소스 부재로 인해 내용을 생성할 수 없다는 점을 명확히 하는 것이 적절하다고 판단됩니다. 따라서 이전 출력을 유지합니다.
6. 1. 현행
6. 2. 생산 종료
- VAX[4]
- Z8000[4]
- TRON 칩[4]
7. 비판 및 논란
CISC는 복잡한 명령어 구조로 인해 여러 명령을 동시에 디코딩하기 어렵다는 비판을 받았다. 과거에는 "CISC는 RISC로 대체될 것"이라는 예측도 있었지만, 실제로는 그렇지 않았다. CISC 프로세서가 내부적으로 RISC 기술을 채용하고, RISC 프로세서는 명령 수가 추가되면서 기술적 차이가 줄어들었기 때문이다.[4]
CISC가 마이크로코딩되거나 "복잡한" 명령어를 갖는다고 단순화하는 경우가 있지만, 모든 CISC가 그런 것은 아니다. CISC를 정의하는 것은 명령어의 수, 구현 또는 명령어의 복잡성이 아니라, 산술 명령어가 메모리 접근도 수행한다는 점이다. 심지어 8비트 CISC 프로세서보다 RISC 부동 소수점 명령어가 더 복잡할 수 있다. 또한, 32비트 또는 64비트 RISC 프로세서가 작은 8비트 CISC 프로세서보다 더 복잡한 어드레싱 모드를 가질 수도 있다.
PDP-10, PDP-8, 인텔 80386, 인텔 4004, 모토로라 68000, System z, Burroughs B5000, VAX, Zilog Z80000, MOS Technology 6502 등은 명령어 수, 크기, 형식, 레지스터 수, 유형, 크기, 사용 가능한 데이터 유형이 매우 다양하다. 일부는 부분 문자열 검색, 임의 정밀도 BCD 산술, 초월 함수 연산을 위한 하드웨어 지원을 갖추고 있지만, 다른 일부는 8비트 덧셈과 뺄셈만 지원한다. 그럼에도 이들은 모두 메모리 내용을 로드 및/또는 저장하는 "로드-연산" 명령어를 가지고 있기 때문에 CISC 범주에 속한다. 예를 들어, PDP-8은 8개의 고정 길이 명령어만 있고 마이크로코드는 없지만, 명령어 작동 방식 때문에 CISC이다. 반면, 230개 이상의 명령어(일부 VAX보다 많음)와 레지스터 이름 변경 및 재정렬 버퍼와 같은 복잡한 내부 구조를 가진 PowerPC는 RISC이다. 최소 CISC는 8개의 명령어를 가지지만, 같은 명령어에서 메모리 접근과 계산을 결합하므로 CISC이다.
참조
[1]
저널
The case for the reduced instruction set computer
Association for Computing Machinery
1980-10
[2]
웹사이트
Computer history: CDC 6000 series Hardware Architecture
https://www.museumwa[...]
2023-07-23
[3]
웹사이트
The history of supercomputers
https://www.extremet[...]
2012-04-10
[4]
서적
Computer Architecture: A Quantitative Approach
http://acs.pub.ro/~c[...]
[5]
문서
AArch64에서는可変長命令やバンク切り替えなど
[6]
문서
フェッチしたコードにつき、全てのワードやバイトごとにそれぞれ命令の先頭であるとみなしてデコードをすすめ、その中から有効なデコード結果の組み合わせを選択するという方式が1995年頃に確立したことから、回路規模を大きくするデメリットがあるものの可変命令長であっても1クロックサイクルで複数の命令をデコードできる。近年のプロセッサは5命令から20命令を一度にデコードできる。
[7]
뉴스
スパコンTOP500 - ORNLのJaguarがRoadrunnerを破りトップに躍り出る - マイコミジャーナル
https://news.mynavi.[...]
[8]
저널
The case for the reduced instruction set computer
Association for Computing Machinery
1980-10
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com