Tuuna Computer Science

컴퓨터 구조( CPU에 대해서 ) 본문

computer architecture

컴퓨터 구조( CPU에 대해서 )

GuTTe 2018. 10. 27. 12:58

CPU의 주 목적은 무언가를 처리하는 것이다.

CPU는 컴퓨터 주기판에 있는 CPU소켓에 부착된 핀을 통하여 컴퓨터의 나머지 부분과 연결된다. 

컴퓨터가 무언가를 실행하려면 실행하려는 프로세스가 메모리에 올라와야하며 이 메모리에 있는 프로세스가 CPU로 복사되어야 실행된다. 

즉, CPU에게 데이터를 주기 위해 존재하는게 버스다. (Memory <-> CPU) 

버스 : 데이터를 컴퓨터의 한 부분에서 다른 부분으로 전송하는 병렬 와이어 그룹을 의미한다. 

즉, 메모리에서 CPU로 데이터를 보낼 때 버스를 사용한다.  이러한 버스들도 각 각의 명칭이 있는데

먼저 메모리와 CPU를 잇는 버스는 System_Bus가 있다. System_Bus를 좀 더 세부적으로 보면   

Control_Bus, Address_Bus, Data_Bus가 있다.

1. Control_Bus는 System_Bus에 부착된 모든 장치 동기화에 쓰인다. (주소 정보와 데이터들이 어떻게 관리되어야 하는지 흐름 관리) 

2. Address_Bus는 명령어의 Address나 Data의 Address를 전달할 때 사용 

3. Data_Bus는 Memory에 있는 Data를 CPU에게 보낼 때 사용된다. 

그리고 다른 버스로는 I/O_Bus가 있는데 I/O_Bus는 외부장치 키보드와 마우스등의 이벤트 데이터를 처리할 수 있도록 도와준다. 

여기까지가 CPU와 메모리사이와 버스에 대한 간단한 설명이다. 

위에서 설명했다싶이 무언가를 실행하기 위해선 메모리에 무언가가 올라와야 하며 올라온 데이터를 CPU에게 보내어 처리해야하는데 이 과정을 자세히 살펴보자 

일단 CPU의 동작 방식은 :: (인출 -> 해독 -> 실행) 3가지다. 경우에 따라(피연산자 필요시) 피연산자 호출과 출력 피연산자 지정과정이 추가로 실행된다. 

처음엔 인출이라는 것을 실행한다. 

인출은 명령어 큐에서 다음 명령어를 인출한다. 그리고 Program Counter을 증가 시킨다.(= 명령어 포인터(IP) 

명령어 포인터 : 다음 명령어의 주소를 포함한다. 

명령어를 인출했다면 이제 이 명령어가 무엇인지에 대해 해독과정을 거쳐야 한다. 그리고 ALU에게 이게 어떤 명령어인지 알려준 뒤 실행한다. 

만약 피연산자가 필요하다면 메모리에 있는 데이터를 Data_Bus를 통해서 내부 레지스터에 복사하여 읽어온다. 그리고 ALU가 연산을 한 후 

데이터를 Data_Bus를 통해 다시 메모리로 이동한다. 

예시를 들어 설명해 보겠다

아래와 같은 C 코드가 있다고 가정해보자 

00041000 a = a + b; 

일단 명령어 큐에 있는 00041000번지를 인출하고 Program Counter를 증가시킴 

이 명령어가 무엇인지 해독한다. 해독 결과 +와 = 명령어가 있다( 편의상 2개의 명령어를 동시에 처리하겠다)

먼저 해독한 +의 명령을 ALU에게 알려주고 피연산자가 필요하니 메모리에있는 a와 b를 Data_Bus를 통해 내부 레지스터로 복사해 온 뒤 + 연산을 실행한다.
그리고 = 명령어를 실행해서 메모리에 변수 a가 있는 곳에 연산결과를 Data_Bus를 통해 이동시킨다. 

지금까지 말한게 CPU가 데이터를 처리하는 과정이다. 



















Comments