JAVA/개념

CPU 구조 및 작동원리

ucong 2020. 10. 22. 20:25

CPU(Central Processing Unit)란?

- 컴퓨터의 정중앙에서 모든 데이터를 처리하는 중앙처리장치이다.

-사람의 머리가 신체 각부분에 움직이도록 명령을 내리듯이 컴퓨터 중앙에서 모든 데이터를 처리하도록 각 부품들에게 명령을 내리는 장치로 사람의 두뇌부분에 해당된다.

 

CPU 성능
- CPU의 성능은 곧 CPU의 속도

 

CPU속도에 영향을 미치는 요소

 

1.Clock 
- 컴퓨터는 수행되는 모든 연산의 타이밍을 맞추기 위해 펄스를 출력하는데 이것을 시스템 클럭이라고 한다.
-클럭 주파수란 컴퓨터가 명령을 수행하는 속도를 말한다.
- 클럭의 간격은 정확해야 한다. 클럭이 느렸다 빨랐다하면 다른 부품들도 느려졌다 빨라졌다 정신 못차린다.
- 컴퓨터는 한번 신호를 보낼 때마다 한번씩 동작을 하므로 클럭수가 높을수록 같은시간에 더 많은 일을 할 수 있다.
-단위는 MHz

 

2. CPU 코어
백개의 정보를 처리하려 할때 혼자서 처리하는 것보단 둘이서 처리하는 것이 빠를것이고, 두명보다는 넷이서 수행하는것이 더빠른것처럼 코어의 갯수가 많아질수록 동시에 처리할 수 있는 데이터의 양이 많아져서 속도가 더 빨라진다.
듀얼코어(두개의 코어)/트리플코어(세개의 코어)/쿼드코어(네개의 코어)/옥타코어(여덟개의 코어)/마그니코어(12개의 코어)
- CPU에 포함된 코어 여러개의 성능을  제대로 끌려면 여러개의 코어에게 일거리를 효율적으로 배분하도록 프로그램 짜줘야 한다.

 

3. 캐시 메모리
- CPU처리속도와 RAM의 처리속도 차이를 개선하기 위해 그 사이에 고속의 메모리를 두어 자주읽거나 쓰는 데이터를 임시로 저장하여 두고 사용하면 작업속도를 높일수 있다. 이러한 고속메모리를 캐시라고한다.
- 게임,동영상,인터넷 등 모든 작업을 데이터 처리라고 봤을 때에 하드에 저장되어 있는 데이터를 불러오기 위해 CPU가 명령을 내리고, 그 명령을 토대로 램을 거쳐 그래픽 화면으로 결과가 출력되는것인데 하드디스크의 데이터 처리속도는 CPU보다 느리다.
따라서 이 처리 속도의 차이를 줄이기 위해 램과 하드사이 CPU에 임시 메모리를 만들고 다음 명령에 필요한 하드의 데이터를 램으로 보내기 전에 미리 CPU의 캐시 메모리에 저장해 두어 속도차이를 줄여서 결과적으로 처리 속도가 빨라지게된다.

CPU의 구성


-크게 ALU와 Register Set, Control Unit 으로 나뉜다
- 이 세개는 Internal CPU bus(ALU와 Register 간 데이터 이동을 담당하는 버스)를 통해서 데이터를 주고받는다.

산술논리연산장치(Arithmetic and Logical Unit, ALU)
-CPU내에서 실제 연산을 담당
-산술연산 및 논리연산을 담당

제어장치(Control Unit)
-연산들을 차례로 수행시키기 위해 제어 신호를 보내는 장치
-CPU가 처리해야 할 명령어들을 해석
-그 해석된 결과에 따른 적절한 신호를 CPU의 다른 블록에 보냄

레지스터 세트(Register set)
-CPU내에서 사용되는 임시적인 저장장치
- 액세스 속도가 빠르지만 내부회로가 복잡하여 큰 공간을 차지하기 때문에 CPU내부의 레지스터 개수는 제한적이다.

bus Interface
- 정보교환을 위한것으로 CPU에서 각 부분의 정보교환은 Address Buts와 Date Bus를 통해 이루어진다.
- 정보교환을 위해 버스를 사용하는 이유는 결선의 수를 줄일 수 있는 최선의 방법이기 때문이다.

 

작동(구현) 방식


1. 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
2. 중앙처리장치는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
3. 주기억장치는 처리결과를 보조기억장치에 저장하거나 출력장치로 내보낸다.
4. 제어장치는 1~3과정에서 명령어가 순서대로 실행될 수 있도록 각 장치를 제어한다.

 

'JAVA > 개념' 카테고리의 다른 글

IP / 도메인 / DNS  (0) 2020.10.23
리눅스  (0) 2020.10.23
[JAVA] contains  (0) 2020.10.21
[JAVA] 전역변수 / 지역변수  (0) 2020.10.20
[JAVA] public / private / protected / default  (0) 2020.10.19