본문 바로가기
Program

[Programming] (윈도우 시스템 프로그래밍) 컴퓨터 시스템 디자인/레지스터 디자인

by snwo 2020. 8. 17.

컴퓨터 시스템 디자인

CPU 는 종류가 많고(x64,arm,risc-v,mips), 표준이 없다.(CISC,RISC,VLIW 등 다양한 architecture 종류)
그래픽카드CPU 라고 할 수 있다. 다만 CPU 와 달리 GPU(Graphic Processing Unit) 라고 부르는데, GPUCPU 와 비슷하게 연산을 하지만 그래픽 처리에 극히 제한되어있다.

example : GPU 디자인

GPU 를 디자인할려면

  • H/W 전문가

  • 그래픽알고리즘 전문가

  • INTERFACE 전문가

  • 프로그래머

     

  •  

이런 사람들이 모여서 GPU 를 만든다.

  •  

     

 

H/W 전문가 > LOGIC전문가 > ASIC 전문가, 우리나라에서는 ASIC 전문가가 주로 참여한다. ASICC 와 비슷하고, ASIC논리게이트로 변환된다.

 

프로그래머는 일반적인 프로그래머 말고, 컴퓨터구조를 잘 아는 프로그래머로, 컴퓨터구조에 맞게 프로그램을 제작하는 사람이 참여한다.

CPU 디자인

CPU디자인레지스터명령어 디자인 범위에 속한다.
레지스터디자인명령어디자인초기부터 병행해야한다.

명령어가 디자인되어야 레지스터셋이 결정되고 하드웨어 전체를 구성할 수 있기 때문이다.

레지스터 디자인의 핵심

레지스터를 몇 비트로, 몇개로, 각각의 용도 는 무엇인지가 디자인의 핵심이다.

N비트 시스템에서는 명령어N 비트이기때문에 레지스터N 비트여야 명령어를 전달할 수 있다.
레지스터는 많을수록 좋지만, RAM, HARDWARE 처럼 범용적인 저장소와 다르게 특별한 목적을 가져야 명령어가 단순해지고 속도도 빨라지므로, 목적에 맞는 개수로 설정해야한다.


example


x86 계열 cpu32bit 시스템에서 레지스터 구조를 살펴보도록 하자.
( 이 강의에서 설명하는것은 범용레지스터와 관련이 있으므로, 범용 레지스터만 설명하겠다.)

32bit = 4byte 이므로, 두자리수1byte 의 수가 4개 있는걸 볼 수 있다.
범용 레지스터별 용도 :
EAX : 산술 논리연산, 함수리턴값 저장
EBX : 배열의 INDEX 로 사용되며, ESI, EDI
ECX : 반복문 사용시, 반복문의 COUNTER 역할을 한다.
EDX : 큰 수의 연산에서 EAX 와 함께 사용된다.
ESI : 데이터 조작시 소스데이터의 주소.
EDI : 데이터 조작시 목적지의 주소.
ESP : 현재 스택의 가장 윗부분을 가리킨다.
EBP : 현재 스택의 가장 밑바닥을 가리킨다. 밑바닥 + 8 에는 RET 주소가 저장되어있다. (64BIT시스템에서는 +16)

 

EIP : 범용레지스터가 아니고, Instruction Pointer 으로, 현재 cpu 가 처리해야할 명령어의 주소를 담고있다.

 

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