복잡한 명령 집합 컴퓨터
Complex instruction set computer복합명령어 세트 컴퓨터(CISC / ɪs/sk/)는 단일명령어가 몇 가지 낮은 수준의 연산(메모리로부터의 부하, 연산 연산, 메모리 스토어 등)을 실행하거나 단일명령어 내에서 다단계 연산 또는 어드레싱 모드를 실행할 수 있는 컴퓨터 아키텍처입니다.용어는 소급해서 축소 명령 집합 컴퓨터(리스크)[1]고 모든 것에 대한 포괄적 용어의 리스크가 전형적인 차별화 특징은 대부분의 간단한 디자인 거의 모든 지침, 제도화하고 엄격하게 별도의 하중 a을 균일한 명령어 길이 사용하는 것은 그러므로 자리와는 대조적으로 만들어 졌다알몬드스토어 설명
CISC 아키텍처의 예로는 복잡한 메인프레임 컴퓨터와 메모리 로드 및 저장 작업이 산술 명령과 분리되지 않는 단순한 마이크로 컨트롤러가 있습니다.CISC라는 라벨이 붙은 특정 명령어 세트 아키텍처는 System/360 ~z/Architecture, PDP-11 및 VAX 아키텍처 등입니다.많은 학술 간행물에도 CISC라는 라벨이 붙어 있는 잘 알려진 마이크로프로세서 및 마이크로컨트롤러에는 Motorola 6800, 6809 및 68000 패밀리, Intel 8080, iAPX432 및 x86 패밀리, Zilog Z80, Z8 및 Z8000 패밀리, National Semiconductor 32016xxline 등이 있습니다.dothers(기타).
일부 디자인은 일부 작가들에 의해 경계선 사례로 여겨져 왔다.예를 들어 마이크로칩 테크놀로지 PIC에는 일부 서클에서는 RISC, 다른 서클에서는 CISC라는 라벨이 붙어 있습니다.6502와 6809는 모두 RISC와 같은 것으로 기술되어 있습니다만, RISC의 원리에 반하는 복잡한 어드레싱 모드와 메모리로 동작하는 산술 명령이 있습니다.
선동 및 이점
RISC의 철학이 두드러지기 전에는 많은 컴퓨터 설계자가 프로시저 호출, 루프 제어 및 복잡한 어드레싱 모드와 같은 고급 프로그래밍 구조를 직접 지원하는 명령 세트를 설계하여 데이터 구조와 어레이 액세스를 하나의 명령으로 결합할 수 있도록 하는 이른바 시멘틱 갭을 해소하려고 했습니다.명령어는 코드 밀도를 더욱 높이기 위해 일반적으로 고도로 인코딩됩니다.이러한 명령어 집합의 컴팩트한 특성으로 인해 프로그램 크기가 작아지고 메인 메모리 액세스(대부분 느림)가 줄어들어 컴퓨터 메모리와 디스크 스토리지 비용을 대폭 절감할 수 있을 뿐만 아니라 실행 속도도 빨라졌습니다.또한 Fortran이나 Algol과 같은 고급 언어가 항상 사용 가능하거나 적절한 것은 아니기 때문에 어셈블리 언어에서도 프로그래밍 생산성이 우수하다는 것을 의미했습니다.실제로 이 범주의 마이크로프로세서는 특정 유형의 중요한 애플리케이션에 [citation needed]대해 어셈블리 언어로 프로그래밍되어 있는 경우가 있습니다.
새로운 순서
1970년대에 고급 언어의 분석에 따르면 컴파일러는 복잡한 대응 기계어를 생성했습니다.새로운 명령이 성능을 향상시킬 수 있다고 판단되었습니다.어셈블리 언어에서는 사용하지 않지만 컴파일된 고급 언어에 적합한 명령어가 추가되었습니다.컴파일러는 이러한 명령을 이용하도록 업데이트되었습니다.콤팩트한 인코딩을 갖춘 의미론적으로 풍부한 명령어의 이점은 최신 프로세서에서도 볼 수 있습니다.특히 캐시가 중심 컴포넌트인 고성능 세그먼트(대부분의 임베디드 시스템과 달리)에서도 볼 수 있습니다.이는 이러한 빠르지만 복잡하고 비용이 많이 드는 메모리는 본질적으로 크기가 제한되어 있기 때문에 콤팩트한 코드가 유리하기 때문입니다.물론 기본적으로 필요한 것은 메인 메모리(즉, 현재의 다이내믹 RAM)가 (고성능) CPU 코어에 비해 느린 상태이기 때문입니다.
설계상의 문제
많은 설계들이 더 낮은 비용으로 더 높은 처리량을 달성하고 더 적은 명령으로 높은 수준의 언어 구조를 표현할 수 있게 했지만, 항상 그렇지는 않았던 것으로 관찰되었다.예를 들어, 복잡한 아키텍처의 로우엔드 버전(즉, 하드웨어를 적게 사용)은 복잡한 명령(프로시저 호출 또는 입력 명령 등)을 사용하지 않고 일련의 간단한 명령을 사용함으로써 성능을 개선할 수 있는 상황을 초래할 수 있습니다.
그 이유 중 하나는 건축가(마이크로코드 라이터)가 사용 가능한 기본 하드웨어에서 효율적으로 구현할 수 없는 기능을 포함하여 어셈블리 언어 명령을 "과잉 설계"하는 경우가 있다는 것입니다.예를 들어, 거의 사용되지 않는 레지스터나 메모리 위치 설정 등 "부작용"이 발생할 수 있습니다. 만약 이것이 일반(복제되지 않은) 내부 버스, 또는 외부 버스를 통해 수행된다면, 매번 추가 사이클이 요구되기 때문에 매우 비효율적입니다.
균형 잡힌 고성능 설계에서도 한정된 트랜지스터 예산 내에서 효율적으로 디코딩하고 실행하기 위해서는 고도로 인코딩된 (상대적인) 고급 명령이 복잡할 수 있습니다.따라서 디코드 테이블이나 마이크로코드 시퀀싱에 기초한 보다 단순하지만 (일반적으로) 느린 솔루션이 적절하지 않은 경우에는 프로세서 설계자의 많은 작업이 필요했습니다.트랜지스터 및 기타 컴포넌트가 제한된 리소스였던 당시에는 컴포넌트가 줄어들어 다른 유형의 퍼포먼스 최적화를 위한 기회도 줄어들었습니다.
RISC 아이디어
많은 (전부는 아니지만) CISC 프로세서에서 마이크로코드에 의해 정의된 액션을 실행하는 회로는 그 자체로 많은 점에서 초기 CPU 설계를 연상시키는 프로세서입니다.1970년대 초, 이것은 시퀀싱 및/또는 디코딩을 위한 (당시 비교적 크고 비싼) ROM 테이블 및/또는 PLA 구조 없이 보다 쉽게 대처할 수 있도록 하기 위해 단순한 프로세서 설계로 되돌아가는 아이디어를 낳았다.
초기(소급적으로) RISC 라벨이 부착된 프로세서(IBM 801 – IBM의 Watson Research Center, 1970년대 중반)는 CISC [citation needed]설계에서 내부 마이크로코드 커널 또는 엔진으로 사용되도록 설계되어 있었지만 RISC 아이디어를 보다 많은 사용자에게 소개한 프로세서가 되었습니다.가시적인 명령어 세트에서도 심플함과 규칙성은 머신 코드레벨(컴파일러가 나타내는 레벨)에서 오버랩하는 프로세서스테이지(파이프라이닝)를 실장하기 쉽게 합니다.단, 명령 사이클 시간을 단축하기 위해 일부 고성능 CISC "슈퍼컴퓨터"에서는 이미 이 수준의 파이프라이닝이 사용되었습니다(제한된 컴포넌트 수 내에서 구현해야 하는 복잡함과 당시 실현 가능한 배선의 복잡함에도 불구하고).한편, CISC 프로세서의 내부 마이크로 코드 실행은, 특정의 설계에 의해서 거의 파이프라인화되어, RISC 프로세서의 기본 구조와 거의 비슷합니다.
CDC 6600 슈퍼컴퓨터는 1965년에 처음 출시되었으며, 소급하여 RISC라고도 불립니다.프로그래머 제어 하에 최대 5개의 로드와 2개의 스토어를 동시에 진행할 수 있는 로드 스토어 아키텍처를 갖추고 있었습니다.또한 동시에 작동할 수 있는 여러 개의 기능 유닛을 가지고 있었다.
슈퍼스케일러
좀 더 현대적인 맥락에서 일반적인 CISC 아키텍처 중 일부에서 사용되는 복잡한 가변 길이 부호화에 의해 CISC 프로그래밍 모델의 슈퍼스칼라 구현을 직접 구축하는 것은 복잡하지만 여전히 실현 가능합니다.순차적인 슈퍼스칼라 원본 Pentium과 순서가 다른 슈퍼스칼라 Cyrix 6x86이 그 예입니다.일반적인 CISC 머신의 오퍼랜드에 대한 빈번한 메모리액세스에 의해 코드로부터 추출할 수 있는 명령 레벨의 병렬화가 제한될 수 있습니다.단, 이것은 현대 설계에서 사용되는 고속 캐시 구조 및 기타 방법에 의해 강하게 조정됩니다.본질적으로 콤팩트하고 의미론적으로 풍부한 명령으로 인해 CISC는 RISC 프로세서보다 머신 코드 유닛당(바이트당 또는 비트당)당 실행되는 평균 작업량이 많아 최신 캐시 기반 구현에서 상당한 이점을 얻을 수 있습니다.
로직, PLA 및 마이크로코드용 트랜지스터는 더 이상 희소 리소스가 아닙니다. 오늘날에는 대용량 고속 캐시 메모리만 트랜지스터의 최대 수에 의해 제한됩니다.CISC 디코더의 트랜지스터 카운트는 복잡하지만 프로세서당 트랜지스터의 총수(일반적으로 캐시에 사용됨)와 같이 기하급수적으로 증가하지는 않습니다.더 나은 도구와 향상된 기술을 통해 로드 스토어 제한(즉, 비 RISC) 없이 고도로 인코딩된 가변 길이 설계를 새롭게 구현하게 되었습니다.이는 임베디드 시스템용 마이크로컨트롤러를 위한 새로운 설계 및 이와 유사한 용도뿐만 아니라 유비쿼터스 x86(아래 참조)과 같은 오래된 아키텍처의 재실장을 관장합니다.현대의 x86의 경우 슈퍼스칼라 복잡성은 명령어를 하나 이상의 마이크로 오퍼레이션으로 변환하고 이러한 마이크로 오퍼레이션(즉, 간접적이고 역동적인 슈퍼스칼라 실행)을 동적으로 발행함으로써 해결되었습니다. Pentium Pro와 AMD K5는 초기 사례입니다.이것에 의해, (매우 복잡한) 디코더(및 버퍼) 뒤에, 꽤 심플한 슈퍼 스칼라 설계를 배치할 수 있기 때문에, 말하자면, 여러가지 면에서 양쪽 모두의 메리트를 얻을 수 있습니다.이 기술은 IBM z196 및 이후 z/Architecture 마이크로프로세서에도 사용됩니다.
CISC 및 RISC 용어
CISC와 RISC의 설계와 구현이 계속 발전함에 따라 CISC와 RISC라는 용어는 의미가 없어졌습니다.Intel, AMD, Cyrix 및 IBM의 486 설계로 구현된 최초의 파이프라인 x86은 이전 버전의 모든 명령을 지원했지만 일반적인 RISC 명령 세트(즉, 일반적인 RISC 스토어 제한 없음)보다 약간 많은 매우 단순한 x86 서브셋에서만 최대의 효율성을 달성했습니다.인텔 P5 Pentium 세대는 이러한 원리의 슈퍼스칼라 버전입니다.그러나 최신 x86 프로세서는 명령어를 디코딩하고 (일반적으로) 내부적으로 버퍼링된 마이크로 오퍼레이션의 동적 시퀀스로 분할합니다.이를 통해 파이프라인 방식으로 명령어 서브셋을 더 많이 실행할 수 있으며 코드 스트림에서 병렬 처리를 더 고급으로 추출하여 성능을 더욱 높일 수 있습니다.
일반적인 단순화와는 달리(일부 학술 [which?]교재에서도 마찬가지), 모든 CISC가 마이크로코딩되거나 "복잡한" 명령이 있는 것은 아닙니다.CISC는 로드스토어(RISC) 아키텍처가 아닌 모든 것을 의미하는 캐치올(catch-all) 용어가 되었기 때문에 CISC를 정의하는 것은 명령의 수, 구현의 복잡성 또는 명령의 복잡성이 아니라 산술 명령에서도 메모리액세스가 [citation needed]실행됩니다.소형 8비트 CISC 프로세서에 비해 RISC 부동소수점 명령은 복잡합니다.CISC에는 복잡한 어드레싱 모드가 필요 없습니다.32비트 또는 64비트 RISC 프로세서는 소형8비트 CISC 프로세서보다 복잡한 어드레싱 모드를 갖추고 있을 가능성이 있습니다.
PDP-10, PDP-8, Intel 80386, Intel 4004, Motorola 68000, System z 메인프레임, Burroughs B5000, VAX, Zilog Z80000 및 MOS 테크놀로지 6502는 레지스터의 종류, 크기 및 포맷의 수, 크기, 크기에 따라 매우 다양합니다.서브스트링 스캔, 임의의 정밀도의 BCD 산술, 초월함수 등의 연산을 하드웨어로 지원하는 것도 있고 8비트의 덧셈과 뺄셈만을 지원하는 것도 있습니다.그러나 실제 계산을 실행하는 것과 동일한 명령 내에서 메모리 내용을 로드하거나 저장하는 "로드 조작" 명령이 있기 때문에 모두 CISC 범주에 속합니다.예를 들어 PDP-8은 고정길이 명령어가8개밖에 없고 마이크로코드가 전혀 없기 때문에 CISC입니다.명령어가 230개가 넘는 (일부 VAX보다 많은) PowerPC와 레지스터 이름 변경이나 리오더 버퍼와 같은 복잡한 내부 명령어는 RISC이지만 최소 CISC에는 8개의 명령어가 있습니다.메모리 액세스와 계산을 동일한 명령으로 결합합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Patterson, D. A.; Ditzel, D. R. (October 1980). "The case for the reduced instruction set computer". SIGARCH Computer Architecture News. ACM. 8 (6): 25–33. doi:10.1145/641914.641917. S2CID 12034303.
일반 참고 자료
- Tanenbaum, Andrew S. (2006) Structured Computer Organization, 제5판, Pearson Education, Inc.어퍼 새들 리버, 뉴저지 주
추가 정보
- Mano, M. Morris. Computer System Architecture (3rd ed.). ISBN 978-0131755635.