LISTORY

[윈도우즈 시스템 프로그래밍] 컴퓨터 구조의 접근 방법(1) 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] 컴퓨터 구조의 접근 방법(1)

LiStoryTeller 2018. 5. 19. 16:23


뇌를 자극하는 윈도우즈 시스템 프로그래밍 유투브 강의에 대한 정리이다.


오늘 정리한 내용은 컾뮤터 구조의 접근 방법이다.


 ⊙ YouTube 주소 ⊙ ☞ 컴퓨터 구조의 접근 방법(1)



컴퓨터 구소의 접근방법


CPU는 어떻게 공부하는 것이 좋을까? CPU를 디자인하는 방식으로 공부해보자


가상의 컴퓨터 디자인을 하다보면 CPU가 왜 이렇게 디자인 되었는지 알 수 있다.


CPU을 디자인하는데에 표준은 없다. CPU를 어떻게 디자인하느냐에 따라 CPU의 종류 또한 다양하다.


예를 들자면 그래픽카드도 일종의 CPU이다(GPU라고 부르기도 한다).


그래픽카드도 내부적으로 보면 CPU와 별반 차이가 없는데, 다만 연산이 그래픽 처리에 극히 제한되어 있을 뿐이다.


CPU를 디자인한다 하면 보통 하드웨어 전문가들만 디자인 한다 생각하는 경향이 많은데 사실 그렇지 않다.


소프트웨어 프로그래머들도 CPU 디자인 과정에 꼭 필요하다.


프로그래머들이 CPU 디자인에서 맡는 역할은 명령어 구성인데,


명령어를 어떻게 구성하냐에 따라 레지스터 셋이 결정되고, 레지스터 셋이 결정됨에 따라 하드웨어 구성을 결정하기 때문이다.


그러므로 프로그램 측면에서 레지스터와 명령어 디자인을 해보자



 ⊙ 레지스터 디자인 


그렇다면 레지스터 디자인을 해보자.


레지스터 디자인의 핵심이자 가장 기본이 되는 내용을 세가지로 나눠보자면 다음과 같다.


1. 레지스터는 몇 비트로 구성할 것인가?

2. 레지스터 종류는 어떻게 구성할 것인가?

3. 각각의 레지스터의 용도는 무엇인가?



1. 레지스터는 몇 비트로 구성을 할 것인가? - 8비트, 16비트, 32비트, 64비트....


보편적으로 레지스터는 비트수와 일치한다. 16비트 컴퓨터라면 레지스터도 16비트이다.


이는 N비트 시스템에서 명령어의 길이는 N비트이기 때문이다. 하나의 명령어를 저장하기 위해 레지스터의 크기도 동일하게 한다.


우리는 16비트로 가정하고 디자인해보자



2. 레지스터의 종류는 몇개로 구성할 것인가?


다다익선.. 많으면 많을 수록 좋다. 하지만 무조건 수를 늘릴 수는 없다.


총 8개의 레지스터로 구성하겠다.



3. 각각의 레지스터를 무슨 용도로 사용할 것인가?


RAM이나 H/W는 그냥 저장장소이다. 즉, 일반적인 범용 저장장치이다.


그에비해 레지스터는 목적이 있는 저장장치이다.


이 이유는 용도를 정하면 명령어가 단순해지고, 속도도 빨리지기 때문이다.


각각의 레지스터 이름은 r0~r7으로 명명해주겠다.


r4~r7은 특별한 용도를 지정해주자


r0

r1

r2

r3

r4 : ir (instruction register)

r5 : sp (stack pointer)

r6 : lr( (link register)

r7 : pc (program counter)


r0~r3는 범용 레지스터이다. 즉, 연산을 위해 필요한 레지스터이다.


각각이 무엇을 의미하는지는 나중 강의에서 정리하겠다.





Comments