특수한 목적으로 사용하기위한 레지스터 r4,r5,r6,r7
레지스터 크기를 16비트라고 해보자 명령어 기본구조도 16비트로 구성하는것이 좋겠다. 2의 16승가지의 명령어를 만들수있다.
하지만 2의 16승인 65536개의 명령어는 낭비이다. 실제로 cpu연산에 있어서 몇개 안되는 명령어가 대부분의 연산을 차지한다.
이에따라 명령어 기본구조를 디자인해보자.
레지스터 r1에있는값과 숫자 7을 더해서 레지스터 r2에 저장하라
피연산자는 숫자나 레지스터가 올수있는데 피연산자가 보시다싶이 4bit면
맨앞비트는 레지스터인지 아닌지
나머지 3비트로 식별하거나(총 8개레지스터 식별가능), 숫자를 표현하는데 이는 숫자 0~7까지밖에 표현을 못한다는 단점이있다.
위와같지 실제 명령어 디자인 하는과정에서 제약사항이 등장한다.
예로 arm이나 x86계열 은 "첫번째 피연산자 위치에는 레지스터 이름이 와야한다는 제약사항이있다."
이유는 그저 명령어 구조가 간단해지고 그에따른 cpu의 종합적 측면(비용,속도 등..)에서 좋기 때문이다.
RISC ? CISC ?
-RISC (reduce ...) : 명령어 길이가 동일하고 명령어를 처리하는 과정이 일정하기 때문에 빠르다 대신 명령어 개수가 적다(위의 그림처럼 설계). 파이프라이닝을 통해 효율적이다.
Fetch Decode Exe
F D E
F D E
F D E
F D E
-CISC (complex ...) : 명령어 개수가 많고 다양하다.
CISC구조에서 전체명령어중 10%정도의 명령어밖에 주로사용되지 않기때문에 이를 착안하여 명령어 개수를 줄여 효율적으로 만든것이 RISC 요즘 cpu는 모두 RISC구조
'Operating System & Computer Architecture > 윈도우즈 시스템 프로그래밍' 카테고리의 다른 글
컴퓨터 구조 -(5) 스택프레임 (0) | 2018.02.01 |
---|---|
컴퓨터 구조 - (4) 주소 지정방식 (0) | 2018.02.01 |
컴퓨터구조 - (3) LOAD & STORE 명령어 디자인 (0) | 2018.02.01 |
컴퓨터구조 - (1) (0) | 2018.02.01 |