누가 CISC를 원할까요?


42

컴퓨터 시스템 강의에서 MIPS 프로세서를 소개했습니다. 그것은 용어의 기간 동안 (재) 개발되었고 실제로 이해하기 매우 쉬웠습니다. RISC 설계를 사용합니다 . 즉, 기본 명령이 정기적으로 인코딩되며 와이어를 단순하게 유지하기 위해 그 중 몇 개만 있습니다.

그것은 언급했다 CISC는 다른 철학을 따른다. 나는 x86 명령어 세트를 간단히보고 충격을 받았습니다. 아무도 복잡한 명령 집합을 사용하는 프로세서를 어떻게 만들고 싶을 지 상상할 수 없습니다!

따라서 프로세서 시장의 많은 부분이 CISC 아키텍처를 사용하는 이유에 대해 좋은 주장이 있어야한다고 생각합니다. 그들은 무엇인가?


답변:


47

일반적인 역사적 추세가 있습니다.

옛날에는 기억이 작았 기 때문에 프로그램은 작았습니다. 또한 컴파일러는 그다지 똑똑하지 않았고 많은 프로그램이 어셈블러로 작성되었으므로 명령을 거의 사용하지 않고 프로그램을 작성할 수있는 것이 좋았습니다. 명령 파이프 라인은 간단했으며 프로세서는 한 번에 하나의 명령을 사용하여 명령을 실행했습니다. 프로세서 내부의 기계는 어쨌든 상당히 복잡했습니다. 디코딩 명령어는 큰 부담이되지 않았다.

1970 년대에 CPU와 컴파일러 설계자들은 복잡한 명령어를 갖는 것이 전혀 도움이되지 않는다는 것을 깨달았습니다. 이러한 명령어가 실제로 효율적인 프로세서를 설계하는 것은 어려웠으며, 이러한 명령어를 실제로 활용하는 컴파일러는 설계하기가 어려웠습니다. 칩 영역과 컴파일러의 복잡성은보다 범용적인 레지스터와 같은보다 일반적인 추구에 더 잘 사용되었습니다. RISC에 대한 Wikipedia 기사에서 이를 자세히 설명합니다.

MIPS 는 최고의 RISC 아키텍처이므로 자주 가르치는 이유입니다.

86 가족은 조금 다르다. 원래는 메모리가 매우 작은 시스템 (대규모 명령어를위한 공간이 없음)을위한 CISC 아키텍처였으며 많은 연속 버전을 거쳤습니다. 오늘날의 x86 명령어 세트는 CISC이기 때문에 복잡 할뿐만 아니라 x86_64 프로세서가있는 Pentium이있는 80386의 8088이기 때문에 복잡합니다.

오늘날의 세계에서 RISC와 CISC는 더 이상 과거에 없었던 흑백 구분이 아닙니다. 대부분의 CPU 아키텍처는 다른 회색 음영으로 진화했습니다.

RISC 측에서 일부 최신 MIPS 변형은 비 균일 인코딩으로 곱셈 및 나눗셈 명령을 추가했습니다. ARM 프로세서는 더욱 복잡해졌습니다. 대부분의 프로세서는 Jazelle 은 물론 CPU에서 JVM 명령어를 실행하는 것은 물론 "원래"32 비트 명령어 외에 Thumb 이라는 16 비트 명령어 세트를 가지고 있습니다 . 최신 ARM 프로세서에는 멀티미디어 응용 프로그램을위한 SIMD 명령어 도 있습니다 . 일부 복잡한 명령어는 결국 비용을 지불합니다.

CISC 측에서는 모든 최신 프로세서가 어느 정도 RISC 내부에 있습니다. 여기에는 이러한 복잡한 매크로 명령어를 모두 정의하는 마이크로 코드 가 있습니다. 프로세서의 복잡성으로 인해 RISC 설계, 많은 수의 구성 요소, 파이프 라이닝 및 예측 실행 등을 포함하여 각 모델의 설계에 몇 년이 걸릴 수 있습니다.

그렇다면 왜 가장 빠른 프로세서가 CISC 외부에 남아 있습니까? x86 (32 비트 및 64 비트) 제품군의 경우 그 일부가 이전 버전과의 호환성입니다. 그러나 그것은 전부가 아닙니다. 2000 년대 초, 인텔은 아이테니엄 아키텍처를 추진하려고 시도했습니다 . Itanium은 복잡한 명령어의 극단적 인 경우입니다 (실제로는 CISC가 아님 : 설계는 EPIC 으로 불림 ). 심지어 명령을 순서대로 실행한다는 구식 아이디어도 제거합니다. 모든 명령은 다음 장벽까지 병렬로 실행됩니다. 아이테니엄이 취하지 않은 이유 중 하나는 인텔이든 다른 곳에서도 괜찮은 컴파일러를 작성할 수 없다는 것입니다. 이제 x86_64와 같은 오래된 오래된 순차적 프로세서는 우리가 이해하는 것입니다.


4
이유 중 하나는 CISC가 제한된 메모리에서 나오고 (컴팩트 한 명령어를 작성해야 함) 오늘날의 CPU는 메모리보다 훨씬 빠르다는 것입니다 ( 한 번의 메모리 페치는 수백 개의 명령어를 실행하는 데 충분한 시간이 걸리고 간격이 넓어짐). 캐시를 효과적으로 사용하려면 간단한 명령이 중요합니다.
vonbrand

그리고 RISC의 원동력 중 하나는 당일의 CISC 기계에서 실행되는 명령의 분석이었습니다. 그들은 압도적으로 간단한 명령으로 판명되었으므로 복잡한 명령을 디코딩하는 추가 노력 (회로 및 시간 단위)이 대부분 낭비되었습니다.
vonbrand 12

2
@vonbrand :와 같은 명령어를 포함하는 프로세서에서는 dec [address]상당히 많이 사용되는 경향이 있으며 ldr r0,[address] / sub r0,#1 / str r0,[address] 효율적으로 구현할 수있는 아키텍처에 비해 상당한 이점을 제공합니다 . RISC의 출현은 비 파이프 라인 머신이 시퀀스 dec보다 2 배 이상 빠른 속도를 구현할 load/sub/store수 있지만 파이프 라이닝은 후자 시퀀스의 속도를 읽기-수정-쓰기 속도를 향상시킬 수있는 것보다 더 향상시킬 수 있다는 사실에서 비롯 됩니다. 교수.
supercat

RAM이 그다지 소중하지는 않지만 캐시는 그 점에서 @vonbrand가 옳습니다. 허프만 (Huffman) 명령 세트 (요즘 CISC의 일종)는 여전히 그런 의미에서 가치가 있습니다.
가명

그건 내가 Itanium에 대해 전혀 몰랐던 일입니다! 감사. (또한 누군가가 여전히 고급 MIPS CPU를 만들었 으면 좋겠다. 프로그램에 흥미를 느끼는 것처럼 들린다. 디자인이 존재한다는 것을 알고 있지만 아무도 FPGA를 사용하지 않았다는 것을 알고있다. -_-)
Wyatt8740

15

x86 명령어 세트는 약간 특별한 경우입니다. 모토로라의 68K와 DEC의 VAX는 CISC의 좋은 예라고 생각합니다. 어셈블리 언어 코드가 많은 시대에 사람들은 매우 규칙적이고 포괄적 인 ISA가 더 좋다고 생각했습니다. 어셈블리 코드와 사람들이 " 시맨틱 갭 "을 생각하는 방식의 차이를 믿었습니다 . 이론적으로 생각한 방식과 일치하는 명령 세트를 원했습니다.

CISC의 다른 큰 디자인 드라이버는 "직교성"인 것 같습니다. 모든 명령은 모든 주소 지정 모드 (레지스터, 절대 주소, 상대 오프셋 등)와 함께 작동합니다. DCE (Distributed Computing Environment) 및 CORBA의 API 디자인에 직교성 문제가 나타나는 것을 볼 수 있습니다. 이 아이디어는 명령어 세트 디자인에만 국한되지 않습니다.


5
실제로 직교성 이 모든 옵션의 결합 을 의미 하는 것은 재미있다 .
Dave Clarke

그 직교성은 확실히 너무 멀어 질 수 있지만, 기억에 도움이됩니다. 모토로라 6502를 좋아했지만 레지스터 사용에 대한 "이 명령은 X, 그와 비슷한 Y, 세 번째는 전혀 없습니다"라는 제한을가했습니다. VAX를 만나는 것은 해방되었습니다 ...
vonbrand

@vonbrand : 6502는 모토로라가 아니 었습니다. 모토로라 6800의 경쟁사 인 MOS 테크놀로지스였습니다. 나는 때때로 분기가 아닌 모든 명령이 6502가 더 단순하거나 더 복잡한 지 궁금해했습니다. 피연산자는 동일한 인코딩을 사용했습니다 (24 개의 명령 시간에 8 개의 주소 지정 모드를 쉽게 해독 할 수 있음). CMP가 8 개의 어드레싱 모드에서 작동하고 DEC는 4 개로 만 작동한다는 점이 특히 궁금하지만, 하나의 "OR"이 해당 명령어의 opcode를 함께 "모두"하면 "DCP"만 얻을 수 있습니다. 명령 ...
supercat

... DEC처럼 동작하지만 감소 결과를 누산기의 값과 비교하고 플래그를 적절하게 설정하지만 DCP는 DEC에서 사용할 수없는 주소 지정 모드를 올바르게 처리합니다. 하드웨어가 읽기-수정 쓰기 명령어를 사용하여 주소를 올바르게 처리 (ZP) 할 수 있지만, 명령어 디코더는 해당 모드가 문서화 된 읽기-수정-쓰기 명령어에서 작동하지 않도록해야합니다.
supercat

1
내가 읽은 바에 따르면 RISC의 "R"은 프로세서에 명령 세트가 줄어드는 것이 아니라 명령 세트가 줄어든다는 것을 의미합니다. 가장 큰 측면은 메모리로드 및 저장이 다른 작업과 결합되지 않아야한다는 요구 사항입니다.
supercat

7

CISC의 한 가지 이유는 명령에 대한 밀도가 높은 인코딩을 사용하는 것이 었습니다 (메모리가 비쌌습니다)). 전체 RISC 아이디어는 항상 같은 크기의 명령을 가져 와서 (복잡하고 느린 "그림 크기 명령 단계"단계) 처리하여 CPU 속도를 높이고 간단한 작업을 수행하도록하는 것입니다. . 메모리는 싸다. 이것은 다른 것들을 위해 CPU의 회로 영역을 비 웠습니다 (더 많은 레지스터, 더 많은 처리 장치, 따라서 여러 명령이 독립적 인 경우 병렬로 수행 될 수 있음). CPU가 RAM보다 속도가 훨씬 느리기 때문에 비용이 많이 들었습니다. 그러나 CPU는 더 빨라졌고 (병렬로 더 많은 작업을 수행했으며 ...) RAM은 더 빨라지지 않았습니다 (적어도 병렬 처리로 인해 CPU의 데이터 소비량과 같은 속도는 아닙니다). CPU만큼 빠르지 만 작은 캐시 메모리를 만나십시오. 따라서 메모리는 비용적인 문제가 아니라 속도면에서 다시 프리미엄이됩니다. CISC 부흥 시간. 한편 CPU는 더욱 복잡해졌습니다. 오늘날의 마이크로 프로세서는 RISC 컴파일러가 수행 한 작업의 많은 부분을 수행합니다. 작업을 기본 부분으로 분류하고 내부 RISCy 명령어를 재정렬하여 가능할 때마다 동시에 수행 할 수 있도록합니다. RISC는 "컴파일러에게 중요한 것들을 구호한다"는 이유로 잘못되었다 ...


1
일부 임베디드 시스템, 특히 모든 메모리 / 스토리지가 프로세서 칩에있는 마이크로 컨트롤러에서는 메모리 용량이 여전히 중요합니다. 이는 Renesas가 새로운 CISC ISA--RX를 도입 한 데있어 중요한 요소 였을 것입니다. 즉, 성능을위한 코드 밀도뿐만 아니라 스토리지를 줄이기위한 (주로?)
Paul A. Clayton

내가 이해 한 바에 따르면 RISC의 "R"은 일련의 지침이 축소되는 것이 아니라 지침 자체가 축소되는 것을 의미합니다. 특히 8086과 같은 CISC 프로세서에서는 메모리에 직접 값을 추가 할 수 있지만 RISC에서는로드, 추가 및 저장을 별도의 단계로 수행해야합니다. 대부분의 경우 CISC 시스템에는 RISC 시스템보다 가변 길이 명령어 세트와 밀도가 높은 명령어 코딩이 있지만 최신 ARM 프로세서에서는 가변 길이 명령어를 사용하지만 여전히로드와 저장소를 분리합니다.
supercat

@ PaulA.Clayton이 방법은 정확하지만, 앞으로도 계속해서 외부 RAM (컨트롤러를 통해 SRAM 또는 DDR)을 인터페이스하고 복잡성을 높이고 실용성을 줄이면서 메모리 용량을 확장 할 수 있다고 지적합니다.
Wyatt8740

3

CISC의 실제 장점은 메모리 및 캐시 압력이 감소한다는 것입니다. 이러한 시스템의 주요 병목 현상은 메모리 대역폭이기 때문에 고성능 응용 프로그램의 성능을 향상시키는 것입니다. 동일한 크기의 캐시 메모리가 제공되면 CISC 프로세서는 RISC보다 더 많은 정보를 설명 할 수 있습니다. 또한 CISC 명령어에는 몇 가지 마이크로 작업이 포함되므로 개별 명령어를 작성하는 것이 가능한 명령어에 대한 가장 빠른 실행 경로를 제공 할 수있는 아키텍처 개선이 가능할 수 있습니다. 요컨대, CISC 프로세서는 메모리 대역폭을보다 효율적으로 사용하여 메모리를 많이 사용하는 애플리케이션의 성능 향상으로 이어집니다.

예를 들어 R1 = R2 + R3 + R4 + R5 + R6결과를 스택 으로 수행 하고 푸시하려면 RISC 코드가 다음과 같이 작성됩니다.

ADD  R1, R2, R3 (4-byte)
ADD  R1, R4, R5 (4-byte)
ADD  R1, R6, R0 (4-byte, R0=0)
PUSH R1         (4-byte)

따라서 16 바이트의 공간이 필요합니다.

CISC에서는 다양한 스타일의 인코딩 가능성으로 인해 동일한 정보가 다음과 같이 표시 될 수 있습니다.

ADD R1, R2, R3 (4-byte)
ADD R1, R4, R5 (4-byte)
ADD R1, R6     (2-byte)
PUSH R1        (1-byte) 

12 바이트의 메모리 만 필요합니다. 따라서 메모리 사용률이 향상되어 프로세서가 더 많은 명령을보고 유휴주기를 줄일 수 있습니다.


1
이것은 유용한 관점을 제공하지만 형용사를 사용할 때 약간 과장된 것으로 보입니다. "거대한 성능 향상"-수량화를 원하십니까? "거대한"부분을 정당화 할 수 있습니까? "더 많은 정보"와 비슷합니다.
DW

리누스 토발즈도 비슷한 말을했다고 생각합니다. 어쨌든 형용사가 제거되었습니다.
Revanth Kamaraj

이것은 사실이 아닙니다. CISC는 메모리 대역폭을 줄이지 않습니다. 압력을 등록하십시오.
Jeff

Jeff, Steve Furber의 ARM Soc 아키텍처를 참조하십시오.
Revanth Kamaraj

Page 27 제 2 판 ARM 시스템 온 칩 아키텍처.
Revanth Kamaraj

2

아무도 제기하지 않은 중요한 측면은 거의 모든 CISC CPU가 마이크로 코딩 된 아키텍처라는 것입니다. 마이크로 시퀀서와 제어 저장소는 유선 컨트롤러보다 훨씬 적은 공간을 소비하며 하드웨어를 수정하지 않고도 명령어 세트를 수정할 수 있습니다.

내가 현장에 들어 왔을 때 마이크로 프로세서는 참신한 장치였습니다. 70 년대와 80 년대 초에 매우 일반적인 관행은 마이크로 시퀀서 기반 제어 장치 인 비트 슬라이스 ALU와 마이크로 코드 된 명령어 세트가로드되거나 끊어진 제어 저장소를 사용하여 CPU를 조립하는 것이 었습니다. 이 컴퓨터는 7400 시리즈 트랜지스터-트랜지스터 로직 (TTL)을 기반으로합니다. 78181 4 비트 ALU는 DEC PDP-11 및 초기 VAX 11 컴퓨터, Data General Nova, Xerox Alto 및 Wang 데스크탑 컴퓨터를 포함한 많은 프로세서를 구성하는 데 사용되었습니다.


"아무도 제기하지 않은 중요한 측면은 거의 모든 CISC CPU가 마이크로 코딩 된 아키텍처라는 것입니다." 예, 아니오 명령어 스케줄링의 경우, 최신 CISC CPU는 일반적으로 하드 레거시 CISC 명령어 (예 : x87 초월 명령어)에 대한 마이크로 코드 제어에만 의존합니다. 반면, RISC 칩조차도 때때로 일부 서브 시스템의 상태 머신에 대한 대안으로 마이크로 코드 제어를 사용합니다 (예 : 특정 장치 제어). 실제로 마이크로 코드와 상태 테이블 사이의 경계는 흐릿 할 수 있습니다.
가명

2

x86 호환 프로세서를 사용하지 않는 데스크탑 컴퓨터를 찾는 데 어려움을 겪을 것입니다. 그 명령 세트는 MIPS를 이겼습니다. 그것은 Sparc를 이겼습니다. 반면에 MIPS는 오늘날 거의 존재하지 않습니다. 따라서 오늘날 어떤 생각을 하든지 매우 영리한 사람들은 x86 명령어 세트가 정말 좋은 아이디어라고 생각하고 많은 돈을 벌었습니다.

복잡한 명령어 세트가 구현 자의 능력을 넘어 서기 때문에 컴퓨터는 RISC로 시작했습니다. RISC 명령어 세트를 보려면 CDC 6400-6600 및 CDC Cyber ​​170-175 명령어 세트를보십시오. 적절한 RISC입니다. 약 10 년 전, 일부 칩 설계자에게 필요한 공간이 얼마인지 물었습니다 (합리적인 고급 GPU 칩 코너에) 그들은 공간의 99 %를 차지하는 기계의 RAM을 포함하여 약 1mm2를 말했습니다.

사람들 CISC 기계를 만들 수 있었을 때 실제로 이점이있었습니다. x86은 MIPS, 1978 년 대 1985 년 이전에 출시되었다는 것을 기억하십시오. 그 당시에는 명령어를 읽고, 해독하고, 수행하기위한 프로세서주기가 필요했습니다. 1978 년의 MIPS는 명령 당 및 작업 당 4주기를 수행했을 것입니다. "메모리에 레지스터 추가"와 같은 x86 명령어를 사용하면 명령어에 대해 7주기가 걸리지 만 3 가지 작업을 수행하게됩니다. 그것은 큰 장점이었습니다. 더 많은 명령어를 가지고 있고 각 명령어가 강력할수록 이점이 더 큽니다.

그리고 나이트 마리 쉬 프리픽스 코드를 가진 x86 64 비트 명령어 세트가 개발되었을 때 명령어 세트의 복잡성은 더 이상 중요하지 않았습니다. 오늘날 CISC는 방금 RISC로 번역되었으며 전체 번역 사업은 아마도 칩의 1 % 일 것입니다.


1

이 질문은 모바일 및 태블릿 컴퓨팅으로의 대규모 전환을 선호하여 RISC CPU를 선호하는 최신 컴퓨팅 트렌드와 관련이 있으며 인텔 (아마도 세계 최대 CISC 공급 업체)이 소위 "인플레이션" 의 단점으로 인해 포인트 " 종류 똑같이 로브 에 관심을 끌었다 그리고 경고했다. 짧은 이야기는 CISC가 본질적으로 높은 에너지 소비로 인해 모바일 컴퓨팅 에 대한 거대한 패러다임 전환 / 게임 변경 맹공격에서 사라지기 시작한 것 같습니다 .

CISC는 항상 데스크탑에있을 것이지만 모바일은 컴퓨팅의 새로운 미래로 널리 알려져 있습니다. 잠재적 인 컴퓨터 사용 인구가 많은 많은 개발 도상국은 실제로 데스크톱 단계를 거의 건너 뜁니다. 예를 들어 데스크탑 컴퓨팅의 부상과 하락을 참조하십시오

이 질문에 대한 훌륭한 사례 연구는 매우 강력한 경영진과 함께 "skunkworks"와 같은 프로젝트 / 이니셔티브를 통해 Atom CPU를 통해 모바일 시장에서 인텔을 더 나은 위치에 배치하려는 새로운 입장에서 인텔을 위해 일하는 Mike Bell에 대해 읽는 것입니다. 지원하다. 모바일 시장은 RISC 아키텍처, 주로 ARM 프로세서와 밀접하게 연결되어 있으며, 주로 에너지 효율성 (전력 소비)으로 인해 컴퓨팅의 새로운 핵심 기준으로 질문과 대답은 언급되지 않습니다. 다음은이 주제에 관한 두 가지 최신 기사로, 주제에 대한 많은 내부 기업 사고 (및 뒤섞임!)를 보여줍니다.


추가. 수학적 개념과 관련이없는 비즈니스 기반 변곡점 에 대한 기사를 인용했습니다 . 예를 들어, 참조 앤디 그 로브 (Andy Grove)와 변곡점의 신비
vzn

0

다른 답변에서 언급되지 않은 요소는 경제적입니다. 인텔에 관한 것이기도합니다. CISC 아키텍처는 주로 x86 및 x64 제품군으로 표시됩니다. 이것들은 모두 원래 IBM PC에서 사용 된 겸손한 8088에서 비롯된 것입니다. 이 컴퓨터 시리즈의 초기 시장 지배력은 인텔이 R & D를위한 견고한 수입원을 가지고 있음을 의미했습니다. 인텔이 두 번째 소스 계약을 체결 / 취소함으로써 경쟁을 억제 할 수 있다는 사실과 함께 CPU 가격이 극단적 인 수준으로 상승하여 총 수익 마진이 매우 높아질 수 있음을 의미했습니다.

따라서 다른 CPU 제조업체는 속도를 유지하기 위해 고군분투했지만 인텔은 더 빠르고 새로운 제품을 개발하는 데 수십억 달러를 쏟을 수있었습니다. RISC 경쟁은 그다지 많은 돈을 쓸 수 없었습니다. 많은 RISC 프로세서가 출시되었습니다. 일부는 다음과 같습니다.

DEC Alpha, 페어차일드 클리퍼, AMD 29000, SPARC, MIPS, POWER (PC 용), Hitachi SuperH ...

나는 RISC와 CISC 전쟁이 끝났고 CISC가 이겼 음을 발표 한 그 시대의 전문가들을 회상합니다. 그렇지 않았다. 그것은 단지 다른 모든 사람들을 능가했습니다.

이 역학이 변할 수 있습니까? 이미 있습니다. 경제적 인 이점은 절대 없습니다.

x86의 Achilles 힐 중 하나는 강력한 힘에 대한 식욕입니다. 이를 통해 에너지 절약이 중요한 시장 (예 : 전화 / 태블릿 등)에서 더 작고 민첩한 경쟁 업체 (ARM)가 번창 할 수있었습니다.

ARM 팀 멤버의 멋진 비디오는 ARM 프로세서-성공의 씨앗 파종- 약 8:30의 Computerphile입니다 .

x86의 두 번째 문제는 인텔 전략의 성공입니다. 그들은 거의 모든 경쟁을 제거했습니다. 그들은 느려졌다. 몇 년 동안, 새로운 인텔 프로세서는 아주 약간만 개선되었습니다. 더 나쁜 점은, 매우 풍부한 마진은 모든 회사를 포기하기 힘든 음식입니다.

오늘날 ARM 기반 SOC (Systems on Chip)와 AMD의 경쟁 x64 칩은 다시 CPU 시장을 흥미로운 곳으로 만들고 있습니다. (IMHO)


0

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에 대한 현실적인 사례를 제시하지는 않습니다.


-1

명령 세트 구성이 줄어들 기 직전에 명령 세트 구성이있었습니다. 그들은 그들의 응용 프로그램이 있습니다. 특히 대용량 칩셋을 사용하는 매우 큰 메모리 블록 전송에서는 전체 비디오 페이지를 전송하는 데 오래 걸리지 않고 4-16 바이트 만 필요합니다. 고급 비디오 카드에서 볼 수있는 놀라운 GPU와 같이 칩셋이 더욱 정교 해짐에 따라 RISC는 현재 상태로 변화하고 있습니다.


-2

CISC CPU는 RISC보다 많은 장점이 있습니다. CISC는 RISC보다 많은 하드웨어 레지스터와 XNOR / XOR 게이트를 여러 번 사용하기 때문에 !!!! CISC의 명령어 바이트가 순차적으로 실행된다고 상상해보십시오. 로직 게이트가 하나만 있고 레지스터가 사용됩니다. 1 개의 bilion 트랜지스터가 약 3 억 개의 논리 게이트를 생성 할 수 있다면 300 개의 milion 연산자 또는 프로세스 (IF, 등호, 수학, 변수, 주소 지정 등)를 처리 할 수 ​​있으며 CISC에서 더 많은 프로그램을 실행할 수 있습니다. 그러나 RISC에서는 파이프 라인 설계에서 프로그램을 실행하는 데 수십 번의 논리 게이트가 필요합니다. 따라서 300 밀리언 x 50 배 (50 명령) + 15000000000 비트 카운터 !!! 소위 RISC로. CISC는 더 많은 하드웨어를 사용하여 CPU 속도를 저하시키는 소프트웨어 알고리즘을 줄입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.