본문 바로가기
Program

[Programming] (윈도우 시스템 프로그래밍) CPU 명령어 구조 및 명령어 디자인

by snwo 2020. 8. 22.

CPU 명령어 구조 및 명령어 디자인

명령어에는 일을 시키기 위한 기본정보가 다 담겨있다
연산자, 저장소, 피연산자 1, 피연산자 2

 

N 비트 시스템 = 레지스터길이 N 비트 = 명령어 길이 N 비트

example : 사칙연산 명령어


-예약 : 따로 예약된 2비트
-연산자 : 어떤 연산을 할것인지 나타내는 3bit
example :
덧셈 : ADD -> 001
뺄셈 : SUB -> 010
곱셈 : MUL -> 011
나눗셈 : DIV -> 100


-저장소 : 연산 결과를 저장하는 3bit ( 레지스터로 제한 )
example : r1 - > 001, r2 -> 002 ...


-피연산자 1,2 : 연산할 값 4bit ( 레지스터와 숫자 둘 다 가능 )
4번째 비트 (X 표시), 0 이면 레지스터로, 1 이면 숫자로 연산


이렇게 명령어가 허용하는 범위가 넓어지면 명령어에 제한을 두게되어

손해보는 비트가 늘어나고 명령어가 복잡해진다.

 

CPU 계열

RISK 와, 상반되는 CISK 가 있다.

 

CISK (Complex Instruction Set Computer) example : 인텔의 x86 series,
:명령어가 복잡하고, 다양하게 명령어를 조합할 수 있다.하지만 안쓰는 명령어들도 많다.

프로그래머 관점에서 명령어 조합을 다양하게할 수 있기 때문에 편하다.


RISK (Reduced Instruction Set Computer) example : NEC 의 MIPS series, ARM 의 ARM series,
:명령어를 단순화시켰다. 단순화 시킨만큼 위에서 설명한 제한사항이 따른다.(손해보는 비트)

CISK 한줄짜리코드로 RISK로 수십줄을 써야하지만, 그럼에도 불구하고

요즘 CPU 성능을 위해 RISK많이 쓴다.

 

 CISK 는 소프트웨어에 우세 ! 

 RISK 는 하드웨어에 우세 ! 

 

모든 명령어는 Fetch, Decode, Execution 단계로 실행이 된다.
CISK 에서는 3클럭 이상으로 처리되는 명령어도 있지만,
RISK 의 모든 명령어는 F,D,E 3클럭으로 처리된다.


Fetch, Decode, Execution 을 담당하는 구역이 다르기 때문에 F,D,E동시에 실행되어도 문제가 없다.
즉, Fetch 하고 Decode 할때, 다음 Fetch동시에 이루어질 수 있다는것이다.

이런식으로 !


식을 만들어보면, 명령어가 n 개 있다고 할때, 명령어 n 개를 n+2 클럭으로 처리할 수 있다.

클럭이 높다고 좋은게 아니라, 클럭당 얼마나 효율적으로 처리할수있냐가 중요하다.

RISK 구조는 CISK 보다 적은 클럭으로 적은열을 발생하고, 최대한 많은 명령어를 처리할 수 있다.

 

#윤성우 윈도우 시스템 프로그래밍을 BASE로 제작되었습니다.