1.CISC (Complex Instruction Set Computer)
*Complex 복잡한, 복합체의
CISC는 필요한 모든 명령어 셋을 갖추도록 설계된 마이크로프로세서에 관련되는 용어로서, 요구되는 능력을 가장 효율적인 방법으로 제공했었다. 이름에서 알 수 있듯이 컴퓨터에 주어진 CISC 명령은 매우 작기 때문에, 그 당시 메모리 부족의 문제점을 보완할 수 있었다. 그러나 그 후, instruction set 자체를 가장 자주 사용되는 명령어만으로 개수를 줄임으로써 대부분의 활용업무 면에서 소요되는 시간을 줄일 수 있는 방법이 고안되었는데, 이것을 RISC라고 불렀다. 그러다 보니, 이러한 RISC 프로세서와 모든 명령어 셋을 갖추고 있는 컴퓨터를 구별할 수 있는 말이 필요하게 되었는데, 그래서 CISC라는 용어를 사용하게 되었다. IBM의 System/6000 기종과 매킨토시 컴퓨터에 사용되고 있는 PowerPC라는 마이크로프로세서가 바로 RISC 형태의 프로세서이며, 펜티엄을 포함한 인텔 계열의 모든 프로세서는 CISC 프로세서이다. RISC는 CISC의 길고 복잡한 명령어 설계를 가져다 짧고, 처리가 빠른 여러 개의 명령어로 바꾸었다.
[CSIC의 특징]
-복잡하고 기능이 많은 명령어로 구성된 프로세서
-복합 명령을 가짐으로써 하위 호환성을 충분히 확보
-트랜지스터 집적에 있어서 효율성이 떨어짐(성능 향상에 난점)
-전력소모가 큼. 속도가 느리고 가격이 비쌈
-호환성이 절대적으로 필요한 PC 환경에 사용
-386, 486, Pentium 등 PC용 CPU
2.RISC (Reduced Instruction Set Computer)
*reduce 줄이다. *instruction 명령어확장 명령형 컴퓨터
RISC는 적은 수의 컴퓨터 명령어를 수행하도록 설계된 마이크로프로세서로서, 좀더 빠른 속도로 동작될 수 있다. 컴퓨터는 수행해야할 각 명령어 형태마다 트랜지스터와 회로들이 추가되어야 하기 때문에, 많은 수의 컴퓨터 명령어 셋을 갖춘 마이크로프로세서는 만들기도 복잡하고, 실행속도도 늦은 경향이 있다. 미국 뉴욕의 요크타운에 있는 IBM 연구소의 John Cocke는 컴퓨터 내의 명령어들 중 불과 20% 정도의 명령어가 전체 80% 이상의 일을 처리한다는 것을 증명함으로써, 1974년에 RISC에 관한 개념을 처음 제기하였다. 이러한 발견으로부터 이익을 얻은 첫 번째 컴퓨터가 1980년에 발표된 IBM PC의 XT 기종이다. 후에 IBM의 RISC System/6000은 이 아이디어를 사용하여 만들어졌다. RISC라는 용어 그 자체는 UC 버클리의 교수로 있는 데이빗 피터슨에 의해 붙여진 이름이다. RISC 개념은 썬마이크로시스템즈의 SPARC 마이크로프로세서에 사용되었으며, 실리콘 그래픽스 소유의 MIPS Technologies의 설립을 유발하였다. DEC의 알파 마이크로칩에도 역시 RISC 기술이 사용되었다.
[RISC의 특징]
-CPU의 명령어를 최소화하여 단순하게 제작된 프로세서
-대단히 효율적이고 특화된 CPU 구조. 다양한 기술 이용 가능
-하드웨어가 간단한 대신 소프트웨어는 복잡하고 크기가 커짐(컴파일러의 최적화가 요구됨)
-하위 호환을 위해 에뮬레이션 방식을 채택. 호환성 부족
-전력 소모가 적음. 속도가 빠르고 가격이 저렴
-용도에 최적화가 요구되는 환경에 사용
-IBM System/6000, 임베디드(MIPS, ARM계열 등), 매킨토시, 서버, 워크스테이션 등을 위한 특수목적 CPU
3.RISC와 관련된 설계 개선점
※단순하다는 것은 프로세서 설계에 드는 비용이 줄어든다는 것을 의미한다. 칩 제작에 드는 R&D 비용이 감소하게 되고, 버그의 존재 가능성이 줄어들게 되어 설계가 쉬워지게 된다.
※설계가 쉽기 때문에 프로세서가 개발에서 제품 출시까지의 단축된다.
※마이크로프로세서의 명령어를 사용하는 운영체계 및 응용프로그램 작성자들이 적은 수의 명령어 셋을 이용하므로 보다 쉽게 프로그램을 개발할 수 있다
※RISC의 단순성이 마이크로프로세서의 공간을 사용하는 방법을 선택하는데 보다 자유롭게 해준다
※고급언어 컴파일러들이 RISC 컴퓨터 내에 있는 소수의 명령어만을 사용하게 되므로 이전에 비해, 보다 효율적인 코드를 생산할 수 있다
4.RISC의 장애 요소
RISC의 장점에도 불구하고, RISC 칩은 실제 시장에서 확고한 입지를 마련하기 까지 10년이 넘게 걸렸다. 이것은 소프트웨어의 부재에 기인한다. 비록 애플사의 파워 매킨토시가 RISC 기반한 컴퓨터이고, 윈도NT가 RISC에 호환되긴 하지만, 윈도3.x, 윈도9x는 기본적으로 CISC 프로세서용으로 설계되었다. 많은 회사들이 최근 개발된 RISC 기술을 채용하는 것에 꺼려하는 이유도 여기에 있다고 할 수 있다. 많은 상업적인 이익없이 프로세서 개발자들은 RISC가 가격 경쟁력을 갖을 정도의 많은 수량의 칩을 생산할 수 없다. 다른 중요한 장애 중에 하나는 인텔이다. 비록 인텔의 CISC 칩들이 점점 다루기 어려워지고 있지만 인텔은 개발에 필요한 많은 리소스를 가지고 있고, 보다 강력한 프로세서들을 만들고 있다. RISC 칩들이 특정 영역에서 인텔의 칩들을 능가한다 하더라고 그 차이는 바이어들이 새로운 기술로 마음을 돌리게 할 만큼 크지 않다.
5.RISC와 CISC의 비교
RISC와 CISC는 CPU의 Architecture, 즉 구조적 측면의 차이로 어떤 일정한 방법으로 명령어를 처리하느냐에 따라 구분된다.
분류 | CISC컴퓨터 | RISC컴퓨터 |
레지스터 | 8~16개의 범용 레지스터 사용 부동소수점 연산 제공 | 16~32개의 범용 레지스터 사용 부가적인 레지스터 사용 가능기본적인 연산 제공 |
설계목적 | 최소의 프로그램 길이 1개의 명령어로 최대의 동작 | 프로그램의 길이는 길어도 명령어 당 실행 시간의 최소화 |
명령어형식 | 다양한 길이와 형식 LOAD /STORE,레지스터와 메모리의 다양한 명령어 형식 제공 | 고정길이의 명령어 제공 두가지 형식 제공 |
명령어군 | OS와 RUN TIME 유틸리티를 지원하는 데이터 형과 명령어 제공 | LOAD/STORE 범용 레지스터 레지스터의 데이터 연산 |
인코딩 | 1개의 명령어 = 1개의 문장 | 1개의 명령어 = 1개의 오퍼랜드나 1개 연산 |
구현측면성 | 마이크로 프로그램 제어 방식의 프로 웨어로 구성 | 하드웨어 제어 방식의 프로세서와 소프트 세서로 구성 |
기타특징 | 하드웨어가 강조됨 | 소프트웨어가 강조됨 |
코드크기와 사이클 |
작은 코드 크기, 단위시간동안 높은 사이클 | 단위시간동안 낮은 사이클수, 큰 코드 크기 |
트렌지스터 | 축약명령어를 저장을 위해 트랜지스터가 사용됨. | 메모리 레지스터에 보다 많은 트랜지스터가 사용됨. |
1. 명령어당 수행작업
[CISC의 철학]
※하나의 명령어당 최대한 많은 작업을 하게 하는 것
※적은 수의 명령어로 많을 일을 할 수 있으므로 프로그램을 작성하기도 쉽고 컴파일러의 코드 생성도 쉬움
[RISC의 철학]
※명령어 하나당 하나의 연산만을 수행
>>결과적으로 CISC : RISC = 1 : 1.5 ~ 2.5
(현실적으로 최대한 많은 일을 수행하는 명령어를 설계하려면 많은 문제가 뒤따른다)
2. 명령어의 길이
[CISC 명령어의 길이]
※가변적 (1~15 bytes)
※메모리 사용에 있어서 CISC가 RISC에 비해 효율적임
※같은 메모리에 더 많은 명령어를 집어넣을 수 있음
(32 bit 상수를 32 bit register에 load 하기 위해서는 5~6 bytes 명령어가 필요)
[RISC 명령어의 길이]
※고정적 (4bytes)
(RISC CPU 에서 32bit 상수를 register로 load 하기 위해 2 개(혹은 그 이상)의 4bytes 명령어가 필요함 >>명령어의 op 코드를 나타내기 위해 몇 bit를 비워둬야 하기 때문임)
3. Clock speed와 명령어당 clock 수
[RISC 설계의 목표]
※CPI(Clock Per Instruction)을 1 이하로 줄이는 것
※동급의 CISC에 비해 더 높은 clock frequency를 실현하는 것
※명령어 셋을 단순화함으로써 CPU 내부의 회로 역시 단순화 가능
※CPU를 더 높은 클록 주파수로 동작할 수 있게 만드는 것
4. 메모리 접근과 주소 지정 방식
[RISC CPU]
※Load/store 아키텍쳐
※다른 명령어는 메모리에 접근하지 못하여, 따라서 데이터에 대한 연산은 register에서 이루어짐
※RISC CPU는 명령어의 길이가 32 bit으로 고정되어 있기 때문에 명령어에 완전한 메모리 주소를 포함시키는 것이 불가능
※Register 를 통해 메모리에 접근하기 전에 접근하고자 하는 메모리의 주소를 register 에 올리기만 하는데에도 두개 이상 명령어를 실행해야함
[CISC CPU]
※대부분의 명령어가 메모리에 있는 operand 에 접근가능
※CISC 에서는 메모리에 있는 객체를 레지스터로 읽어 들이지 않고 직접 연산을 수행하는 가능
*CISC 의 문제점
※메모리 접근은 느림
(메모리 데이터가 캐시에 올라가지 않은 경우에는 register 에 접근하는 것보다 수십~수백 배의 시간이 걸릴 수 있다. 만일 디스크로 page out 되었다면 훨씬 더 느려진다.)
※메모리 주소를 나타내는 operand를 명령어에 포함시키기 위해서는 상당한 공간이 요구되어짐
※메모리 접근은 register에 비해 많이 느리기 때문에 효율적인 프로그램을 작성하기 위해서는 메모리 연산을 최소화해야 함
5. register
>>CPU는 메모리 접근을 피하기 위해 인자나 지역변수를 저장하는데에도 레지스터를 사용한다.
register set
Power PC : 32 개
X86 : 8 개
RISC CPU는 x86 에 비해 자주 메모리에 접근할 필요가 없다.
6. stack
[CISC CPU]
※일반적으로 하드웨어 스택이 내장되어 있어서 서브루틴 리턴 주소나 인자, 지역변수, 기타 임시 값을 저장하는데 사용
※Call, ret, push, pop 같은 기계어 명령어를 사용할 경우 stack의 데이터는 자동적으로 관리
[RISC CPU]
※Stack 관련 명령어가 존재하지 않음
※Return address 나 기타 stack 자료 구조는 SW 적으로 처리해주어야 함
※Power PC 의 경우, 함수의 인자를 전달하기 위해 8개의 레지스터를 따로 준비.
※인자값을 메모리에 접근하는 stack operation에 비해 register에 load 함
※지역변수를 저장하기 위해 stack을 사용할 필요가 없음
※대부분의 짧은 프로시저나 함수를 호출할 때 리턴주소를 SW stack에 저장하기 위해 stack을 사용할 필요가 없음
cf>양쪽 아키텍처에서 훌륭한 코드를 작성하기
※효율적인 코드의 3가지 속성
※주어진 일을 최소한의 명령어로 수행
※메모리 접급을 최소화한다. (메모리 접근이 필요할 경우에는 캐시 데이터를 사용하기 위해 노력한다.)
※최소한의 메모리를 사용한다.
※양쪽 프로세서에서 모두 잘 돌아가는 코드를 작성해야 한다면 RISC에서 최적화하는데 우선순위를 둬야함
출처: https://chlalgud8505.tistory.com/8 [팬더의 프로그래밍:티스토리]
'CS > OS & 하드웨어' 카테고리의 다른 글
CPU의 역사 (0) | 2022.08.26 |
---|---|
CPU 캐시의 원리 (캐시 라인과 태그) (0) | 2022.08.11 |
CPU 그리고 캐시 메모리 (0) | 2022.08.10 |
CPU 32비트 64비트와 두 프로그램의 차이 (0) | 2022.07.31 |
프로세스 메모리 구조와 스택 프레임 구조 (0) | 2022.06.13 |