CISC를 구현하기로 선택한 여러 가지 이유가 있습니다. 가장 중요한 이유는 기존 CISC 명령어 세트와 이진 호환성이 있기 때문입니다. 소프트웨어 바이너리 변환 기술이 향상되었지만 하드웨어 기반 호환성은 일부 기술적 이점 (번역 캐싱이 적다는 단점)과보다 안정적인 것처럼 보이는 기술적 이점이 적습니다.
코드 밀도는 아마도 CISC를 선택하는 두 번째로 중요한 이유 일 것입니다. Renesas RX는 코드 메모리 크기가 중요한 비용 요소 인 마이크로 컨트롤러를 대상으로하므로 코드 밀도를 위해 특별히 CISC로 설계되었습니다. 가변 길이 명령어, 복잡한 명령어 (주로 더 많은 어드레싱 모드), 암시 적 피연산자 및 레지스터 수가 적을수록 코드 밀도가 향상됩니다.
CISC를 선택해야하는 역사적 (그리고 오해의 소지가있는) 이유는 고급 언어를 사용하는 프로그래머와 프로세서 사이의 시맨틱 간격을 메우는 것이 었습니다. 복잡한 명령어는 일반적으로 간단한 명령어 시퀀스로 대체 될 수 있으므로 RISC 용 고급 언어 컴파일러의 복잡성은 언어 일치 CISC보다 훨씬 복잡 할 필요는 없습니다. RISC는 "의미 적 충돌"(프로세서 명령이 해당 언어 명령문보다 많거나 적은 작업)을 피하고 강도 감소 및 스케줄링 최적화를 용이하게합니다. (자세한 내용은 "CISC와 RISC와 관련된 컴파일러 개발 노력의 장점은 무엇입니까?" 를 참조하십시오.)
명령 실행과 관련하여 상당한 고정 비용이있을 수 있습니다. 이것은 상대적으로 복잡한 지시 사항을 사용하여 실제 작업에이 오버 헤드를 분산시키는 것을 권장합니다. 동적 명령어 수를 줄이면 성능이 향상 될 수 있습니다. 논리 비용과 RAM 비용이 ROM 비용보다 훨씬 높을 때, 복잡한 명령에 대한 인센티브는 명령이 마이크로 코드를 찾아서 해독 되었기 때문에 중요했습니다.
역사적 증거와 모순되는 CISC를 사용하는 이유는 각 마이크로 아키텍처마다 마이크로 코드를 최적화 할 수있는 반면 표준 라이브러리는 새로운 구현의 기능을 이용하기에는 느릴 수 있기 때문입니다. REP MOVSB의 memcopy와 마이크로 코드의 소프트웨어 구현의 최적화 수준은 라이브러리가 마이크로 코드보다 더 많은주의를 끌 수 있음을 의미합니다. 이 중 일부는 광범위한 사용자 기반을 대상으로하는 프로세서 공급 업체에서 제공 될 수 있으므로 개발자 또는 사용자의 지역화 된 관심사가 구현 노력을 편향시킬 수있는 오픈 소스 또는 내부 소프트웨어에 비해 노력의 정당화가 더 어려울 수 있습니다.
프로세서와 함께 최적화 된 표준 라이브러리를 제공 할 수 있다는 것은 큰 매력이 있습니다. 플랫폼 표준 라이브러리의 저장 및 실행은 소프트웨어-하드웨어 공동 설계에 의해 크게 최적화 될 수 있습니다. 복잡한 명령과 플랫폼 추상화 계층 호출의 구분은 미묘하거나 존재하지 않을 수 있습니다. RISC 설계는 특수한 하드웨어로 일반 명령어 세트에 제공되지 않은 작업 사용, 영리한 캐싱 및 디코딩 사용, 레지스터 피연산자 지정 (CISC는 종종 기능별 ABI와 유사한 전용 레지스터를 사용합니다). CISC와 관련된 정신 모델은 이러한 최적화를 장려 할 수 있습니다. 또한 사용자에게 "
비교적 복잡한 명령어를 디코딩하는 것은 일련의 명령어가 의미 단위로 인식되는 유사한 관용어 인식 RISC 기법보다 오버 헤드가 적을 수 있고 (가능하면 더 확실하게 정확한 의도에서 정확할 수 있음). 이 오버 헤드 차이는 더 작은 구현에서 가장 두드러 지지만이 정보를 사용하는 오버 헤드는 디코드 절약의 중요성을 줄입니다.
추가적인 상황 정보는 하드웨어 최적화를 촉진 할 수 있습니다. 예를 들어, 메모리에서 값을 증가시킬 때 하드웨어는 메모리 주소가 두 번 (로드 및 저장소에) 사용됨을 인식하여 캐시 방식 메모 및 변환 캐싱의 기회를 제공합니다. 복잡한 지침은 그러한 정보를 명시 적으로 제공 할 수 있습니다. 복잡한 명령어에서 중간 값은 명시적인 수명 (명령의 수명)을 갖습니다. 기존 RISC 레지스터 값을 사용하면 라이브가 끝났음을 나타 내기 위해 명시 적으로 덮어 써야합니다. (참고 : RISC는 매번 사용 후 항상 0으로 지정된 레지스터를 지정하여 일회용 임시 값을 지정하는 수단을 제공 할 수 있습니다. 이러한 명령은 약간 더 복잡합니다.)
구현 세부 사항이 추상화 계층 뒤에 숨겨져 있지 않으면 다른 마이크로 아키텍처를 사용하여 다른 트레이드 오프를 최적화하는 것이 더 어려워집니다. 마이크로 아키텍처 세부 사항을 아키텍처 보장으로 노출하면 마이크로 아키텍처가 호환성 보증에 고정됩니다. PAL 소프트웨어는 복잡한 명령어와 동일하게 최적화 될 수 있지만 하드웨어 소프트웨어 공동 설계가 필요합니다. 조직 분리와 다양성으로 인해 공동 설계가 더 어려워집니다.
복잡한 명령어는 권한있는 상태에 대한 보호 된 액세스를 제공 할 수 있습니다. 예를 들어, 복잡한 명령어는 종종 인터럽트와 관련하여 원 자성입니다. RISC 명령어 세트는 인터럽트를 일시 중단하기위한 사용자 수준의 메커니즘을 제공 할 수 있지만, 링크 된로드와 같은 것조차도 소프트웨어가 인터럽트 된 경우 작업을 명시 적으로 재 시도 할 수 있으므로 RISC에서는 일반적이지 않습니다.
유사하게, 복잡한 명령은 특권 정보의 액세스 및 / 또는 제어를 제공 할 수 있습니다. 실행 된 조작이 의미를 제어하므로 실제 권한 위반을 피할 수 있습니다. RISC 지향 대안에는 특권 상태가있는 PAL 코드 (일반적으로 상당한 오버 헤드가 있음) 및 구성 레지스터 (또는 쉐도우 복사본의 섀도 복사본)에 대한 마스킹 된 액세스가 포함됩니다. 일반 솔루션 (RISC)을 제공하는 것은 하나 또는 몇 개의 특수 사례 (CISC)에 솔루션을 제공하는 것보다 어렵지만, 더 강력하고 특수 사례의 누적에 덜 취약합니다. 중요한 특수 사례가 거의 없다고 생각하면 CISC가 더 매력적일 수 있습니다.
복잡한 명령어는 소프트웨어에서 상태를 숨길 수도 있습니다. 이러한 장점 중 하나는 컨텍스트 저장 및 복원에 있습니다. 상태를 저장하고 복원하는 명령으로 아키텍처는 상태를 메모리로 전송하기위한 특정 메커니즘이 아니라 컨텍스트 크기 만 OS에 전달하면됩니다. 이를 통해 레거시 OS에서 실행되는 응용 프로그램은 상태를 추가하는 ISA 확장을 사용할 수 있습니다. (또한 PAL 소프트웨어는 동일한 기능을 제공 할 수 있습니다.)
x86의 복잡성은 많은 확장에서 호환성으로 인해 발생합니다. 복잡하고 덜 직교하는 명령어 (코드 밀도에 유용)를 사용하여 일반적으로 필요하지 않은 것으로 보이는 일부 작업을 제거하고 불필요한 종속성 체인 (예 : 하나의 캐리 비트 만, 하나의 동적 시프트 량 레지스터 만)을 피하고 일반적으로 사용되며 복잡한 명령어 내에서 최적화 될 수 있습니다.이 중 하나를 사용하려면 새 명령어를 추가하고 ISA의 심미적 인 즐거움이 줄어들 것입니다.
대부분의 경우 RISC는 지침이 매우 직교적이고 기본적이므로 이러한 문제가 발생하지 않습니다. 어떤 경우에는 RISC가 새로운 프리미티브를 추가해야 할 수도 있지만 일반적으로 둘 이상의 용도에 적용 할 수 있습니다.
또한 복잡한 지침을 지원하기 위해 인프라가 구축되면 추가적인 복잡한 지침에 대한 장벽이 줄어 듭니다. 즉, 반복되지 않은 복잡한 명령어의 비용이 많이 듭니다. RISC ISA는 CISCy 기능 도입에 대한 보완 적 장애를 겪고 있습니다.
x86의 확장 빈도는 또한 범용 컴퓨팅 및 가맹점 프로세서 모델 (이진 호환성의 중요성을 증가시키는)에 대한 인기로 인해 부분적으로 발생할 수 있습니다. RISC ISA는 종종 응용 프로그램에 대한 초점을 좁히고 특정 RISC ISA를 구현하기위한 경쟁이 결여되어있는 sysem 공급 업체와 연계되어 마케팅에 대한 명령어 세트 확장 사용을 다소 방해합니다. 인기는 또한 새로운 확장을 개발하는 비용을 덜 중요하게 만듭니다 (반복되지 않은 비용은 대량 구매시 덜 중요합니다).
x86 호환성 철학은 아마도 더 깔끔한 중단을 제공하기보다는 기존 메커니즘을 확장하는쪽으로 편향 될 수 있습니다. 즉, 새로운 기능이 기존 기능의 영향을 더 많이받습니다. 확장 빈도가 높을수록 더 많은 점진적 변화가 촉진되어 메커니즘 재사용을 촉진하여 직교성을 줄이는 경향이 있습니다.
최신 MIPS (최신 버전의 MIPS의 하위 집합이며 다양한 선택적 ISA 확장은 제외)와 최신 x86 (16 비트 8086으로의 이진 호환성 및 어셈블리 수준의 준 호환성을 훨씬 더 역 추적)에 대한 학술 프레젠테이션 비교 모든 역사적 수하물이 CISC에 대한 최상의 사례 나 RISC에 대한 현실적인 사례를 제시하지는 않습니다.