안 쓰던 블로그

컴퓨터구조-중앙처리장치(CPU) 구조, 동작 과정 본문

컴퓨터 구조

컴퓨터구조-중앙처리장치(CPU) 구조, 동작 과정

proqk 2020. 4. 7. 15:52
반응형

컴퓨터는 크게 하드웨어와 소프트웨어로 나눠진다

그 중 하드웨어는 중앙처리장치(연산장치/제어장치/레지스터), 기억장치(주기억장치-RAM/보조기억장치-하드디스크), 입출력장치(모니터.. 등)로 나눠진다

 

CPU(중앙처리장치): 컴퓨터에서 가장 핵심적인 역할을 수행, 3가지로 나눌 수 있음

 

-연산 장치(ALU): +,-,*,/ 등 산술연산과 논리곱, 합 등 논리연산을 수행한다. 산술논리연산장치라고도 함. 연산에 필요한 데이터는 레지스터에서 끌어오고 연산이 끝나면 다시 레지스터로 돌려준다

 

-제어 장치: 명령어가 순서대로 실행될 수 있도록 제어하는 장치. 명령어를 꺼내서 해독하고, 명령어 실행에 필요한 신호들을 각종 장치로 보내고 다음에 처리할 신호나 동작을 결정한다

 

제어장치가 처리하는 명령어는 연산 코드+기억장치 주소로 이루어져 있다

연산코드-수행될 연산이 지정되어 있다/기억장치주소-해당 연산을 수행할 데이터가 저장되어 있는 주소

 

-레지스터: 고속의 기억장치. 명령어 코드나 연산에 필요한 데이터, 연산 결과 등을 CPU 내에서 임시로 저장한다

 

다음과 같은 레지스터들이 있다

1. 기억장치 버퍼 레지스터: 주기억장치에서 읽어온 명령어 임시 저장(주기억장치와 중앙처리장치 사이의 속도를 맞추기 위한 완충제 역할)

2. 프로그램 카운터: 다음에 수행할 명령어 주소 저장

3. 명령어 레지스터: 현재 실행 중인 명령어 저장

4. 기억장치 주소 레지스터: 명령어 레지스터에 있는 명령어의 주소 번지를 저장(완충제 역할)

5. 명령어 해독기: 명령어 레지스터에 있는 명령어의 연산코드를 전달받아 해독한 뒤, 수행할 연산을 결정하여 연산장치에 전달

 

명령어 사이클

cpu는 프로그램을 실행하기 위해 주기억장치에서 명령어를 가져오고 해독하고 실행하는 과정을 반복하는데, 이 활동을 명령어 사이클이라고 한다

 

1. 명령어 인출: 주기억장치에서 필요한 명령어를 순차적으로 가져옴

2. 명령어 해독: 호출된 명령어 해석

3. 명령어 실행: 해석된 명령어를 산술/논리 연산장치를 통해 실행

4. 저장: 수행결과를 주기억장치에 저장

이후 1번부터 반복

 

CPU의 동작과정

1. 처리해야 할 데이터를 주기억장치RAM에서 불러와 제어장치 안의 레지스터1에 전달

2. 제어장치는 연산 코드를 해석하고 무슨 연산을 해야 하는지 결정해서 연산장치=ALU한테 전달

3. 연산장치가 연산한다

4. 결과를 다시 RAM으로 전송한다

 

이 과정 중에서 2번 제어장치의 동작과정을 더 자세하게 보면 아래와 같음

제어장치의 동작과정

1. RAM에서 현재 프로그램 카운터에 있는 주소(이번에 실행될 명령어 주소)에 해당되는 명령어를 가져와 명령어 레지스터에 넣은다

그림에서는 카운터의 현재 주소가 M1이기 때문에 RAM에서 M1에 해당하는 명령어가 명령어 레지스터에 들어갔다

가져온 명령어는 연산코드(ADD 같은 연산 부분)와 데이터로 분리된다-명령어 구조가 이렇게 생겼기 때문임

연산코드는 명령어 레지스터로 가고, 나머지 데이터는 기억장치 주소 레지스터를 넘어 주기억장치로 넘어간다

 

2. 프로그램 카운터는 다음 실행할 명령어 주소를 바꾼다

사진 상에서는 M1이 끝났으니까 다음 명령어인 M2로 바뀔 것이다

 

3. 카운터가 2번을 하는 동안 명령어 해석기에 들어간 연산코드는 해석되어 무슨 연산을 할지 결정한 후 연산장치에 넘어간다

 

4. 연산장치(ALU)가 3번에서 받은 연산을 할 건데, 연산에 필요한 데이터는 1번에서 기억장치 주소 레지스터를 넘어 주기억장치로 넘어간 데이터가 이 때 여기로 넘어와 연산되는 것

 

 

CPU의 동작과정에서 이러한 제어장치의 동작 과정을 포함하여 나타내면 아래처럼 된다

 

CPU의 동작과정

 

확인 문제

1. 이 사진에서 프로그램 카운터의 값은 어느 시점에서 무슨 값으로 바뀌어야 할까?

답: 명령어 레지스터로 현재 실행할 명령어를 보낸 뒤에 M2로 바뀜

프로그램 카운터는 다음에 실행될 명령어 주소를 담고 있으니까 프로그램 카운터에서 현재 값이 나가면 다음 값이 들어옴

 

2. 3번 과정의 명령어 해석과정을 수행하는 레지스터는?

답: 명령어 해석은 명령어 해독기가 함

명령어 레지스터에 들어온 명령어는 연산 코드와 나머지로 뽀개져서 연산코드는 명령어 해독기로, 나머지는 기억장치 레지스터로 간다

 

3. 명령어 레지스터에 명령어가 패치 된 이후에 하는 또 다른 한 가지의 작업은?

답: 연산코드를 뺀 나머지를 기억장치 레지스터로 보내는 작업

 

4. 1번 과정에서 언급되지 않은 레지스터의 용도와 역할은?

답: 기억장치 버퍼 레지스터

'RAM에서 명령어를 인출해서'-프로그램 카운터

'명령어 레지스터에'-명령어 레지스터

'저장'-연산코드는 명령어 해독기로 나머지는 주소 레지스터로

 

그래서 버퍼 레지스터는 언급되지 않았다

버퍼 레지스터는 cpu는 빠르고 나머지는 느리기 때문에 속도를 맞추기 위해 임시로 명령어를 저장하는 역할을 한다

 

 

5. 4번 과정을 수행할 때 연산에 필요한 데이터가 저장되어 있는 위치는?

답: 주기억장치 내부

 

 

6. 4번 과정 수행 후 연산 결과는 어디로 가게 될까?

: RAM

 

 

7. 3번 과정은 cpu의 명령어 처리 사이클에서 어떤 과정에 해당될까?

: 명령어 해독 과정

인출->해독->실행->저장 중 해독 과정에 해당된다

 

 

8. 주기억장치와 중앙처리장치 사이의 속도를 맞추기 위한 완충제 역할을 하는 레지스터 2가지는 사진 속 1234 과정 중 어느 과정에서 동작할까? (답 두 개)

: 1번, 4번

1번은 기억장치 버퍼 레지스터

4번은 기억장치 주소 레지스터(3번은 ‘해석’이라고 적혀 있어서 해당되지 않고, 4번에서 데이터를 기억장치 주소 레지스터에서 가져오니까 해당한다고 생각합니다)

 

 

 

참고)

디지털논리와 컴퓨터 설계, Harris et al. (조영완 외 번역), 사이텍미디어, 2007,

컴퓨터 구조와 원리 (비주얼 컴퓨터 아키텍처), 신종홍 저, 한빛미디어, 2011

반응형
Comments