본문 바로가기
프로그래밍/컴퓨터 과학(CS)

CPU와 메모리 사이의 동작

by Hwan2 2019. 12. 10.
728x90
반응형

일반적으로 윈도우에서 프로그램을 실행시키면(.exe) 프로그램은 잘 실행됩니다.


이 프로그램 단위를 컴퓨터 용어로 프로세스(process)라고 합니다.


이 프로그램이 실행되면 주기억장치인 RAM에 올라가는 것이 아니라 가상메모리로 올라가게 됩니다.


이 부분은 여기!에 잘 설명해 놨으니 참고하시길 바랍니다.


그럼 CPU와 RAM 사이에서 데이터를 주고 받으면서 프로그램이 잘 동작하게 됩니다.


여기서 좀 더 자세히 들여다보면


CPU와 RAM 사이를 연결해주는 통로를 버스(BUS)라고 하며, 


CPU도 ALU, Control Unit, Register Set, Bus interface로 나눌 수 있습니다.



그렇다면!! CPU는 RAM에서 데이터를 가져와 어떻게 처리하는지 살펴보겠습니다.


1. ALU(Arithmatic Logic Unit)


직역하면 산술논리 연산장치라고 부릅니다.


말 그대로 데이터를 논리회로를 통해 계산하는 녀석입니다.


기능은 크게 3가지인데,


산술 연산, 비트 연산, 시프트 연산 3가지가 있습니다.



산술연산은 덧셈, 뺄셈, 곱세, 나눗셈을 말하며


비트연산은 AND, OR, XOR, NOT을 말합니다.


시프트연산은 비트를 오른쪽이나 왼쪽으로 이동시키는걸 말하느데,

C언어에서 '<<' or '>>' 연산자를 생각하시면 됩니다.



이렇게 ALU는 무언가 데이터를 처리하는(계산하는) 역할을 하게 됩니다.


하지만 ALU는 바보입니다. 데이터를 처리하는 능력만 있고 데이터를 더해야 하는지, 빼야하는지는

스스로 판단을 못합니다. 이걸 알려주는 녀석이 CU(Control Unit) 입니다.




2. Control Unit(제어 장치)


Control Unit은 ALU에게 데이터를 더해야하는지, 곱해야하는지, AND를 해야하는지 등을 알려주는 역할을 합니다.


때문에 CU(Control Unit)는 명령어를 해석해야 하고, 레지스터에서 데이터 값을 가져와야하는 중요한 역할을 하게 됩니다.




3. Register Set


CPU하면 빠질수 없는 녀석이 Register입니다.


Register는 전공자가 아니더라도 들어봤을 것입니다.


그리고 어셈블리언어를 사용한다면 레지스터에 값을 저장하고 빼오는 코드를 짜야 하죠.


Register는 주로 데이터를 저장하는 목적으로 사용됩니다.


데이터는 주소 값이 될 수 있고, 숫자가 될 수 있고, 상태를 나타낼 수도 있습니다.


Register는 내용이 너무 방대하므로 우선 여기까지만 설명하겠습니다.


Control Unit은 데이터를 가져올 때 Register에서 가져오게 됩니다.


여기서 어떤 데이터를 어떻게 처리할 것인지 해석하게 됩니다.


때문에 Register는 CPU를 구성하는데 없어선 안될 녀석입니다.




4. Bus interface


프로그램에서 BUS라고 예기하면 통로라는 뜻인데 처음 들어보면 상당히 이질감이 느껴집니다.


BUS는 저희가 흔히 대중교통에 이용하고 있는 그 버스라고 생각하기 때문이죠.


하드웨어와 소프트웨어적인 관점에서 바라보는 BUS는 통로 입니다.


어떤 것들이 서로 주고받을 수 있도록 해주는 녀석입니다.


여기서 말하는 Bus interface는 CPU내에 있는 Interface로 외부로 빠져나가 통신할 수 있는


I/O BUS와 연결시켜 줄 수 있는 Interface입니다.


여기서 말하는 I/O BUS는 입.출력 버스인데, 흔히 생각하는 키보드, 모니터 등도 입출력 장치이므로


이녀석들과 연결되는 통로라고 생각하기 쉽지만, 메모리, 하드디스크 등 컴퓨터 부품들에 대한 통로라고 생각하시면 됩니다.


입력과 출력이 키보드, 모니터, 마우스만 있는게 아니라,

메모리에서의 데이터 입력과 출력(배출?) 하드디스크에서의 데이터 입력과 출력이 있기 때문입니다.


이녀석은 그럼 어디에 있다? 바로 메인보드에 있죠.....


이 입출력 버스와 연결시켜주는 Interface가 CPU의 Bus Interface라는 녀석입니다.






전체적인 구조를 그림으로 표현하자면....

이런식이 됩니다.



너무 글만 있어서 굉장히 지루한 글이 되었다고 개인적으로 생각되는데......


가볍게 이해하고 넘어가기엔 적당하다고 생각됩니다.!!





다음은 Register에 대해 상세히 알아보겠습니다.

반응형

댓글


스킨편집 -> html 편집에서