[시스템] CPU정리① - CPU 내부 들여다보기 + CPU꿀정보

 

CPU(Central Processing Unit, 중앙처리장치)

중앙에서 사람의 두뇌와 같이 컴퓨터의 모든 시스템을 제어·처리하는 가장 핵심적인 장치

 

CPU 구성

  1) 제어장치CU

  2) 연산장치ALU

  3) 레지스터

  4) 캐시메모리

 

o 레지스터

- CPU 내부에 있는 CPU 전용 임시기억장치

- CPU와 한 몸이기 때문에  CPU의 클록속도와 같음

 

o 캐시메모리 

- CPU와 주기억장치 사이의 속도를 비슷하게나마 맞추기 위해 만들어짐

   → 당장 필요한 내용을 주기억장치에서 인출하여 캐시 메모리로 옮겨  메모리 접근시간과  CPU의 처리속도를 맞춤

   → CPU 처리속도 상승은 곧 성능의 향상!

 

-  1차 캐시 메모리 – (대부분) CPU 안쪽에 위치

    2차 캐시 메모리 –  CPU 바깥쪽에 위치

 

 

※ 속도 : 레지스터 > 캐시메모리

 CPU 안쪽의 1차 캐시메모리라도  CPU에게 요청하는 시간이 있기 때문에 CPU와 한 몸인 레지스터의 속도가 더 빠름!

 

 

CPU 기능

 1) Fetch(인출) : 메모리에서부터 데이터와 명령어를 인출

 2) Decode(해독) : 명령어를 해독

 3) Processing(처리) : 명령어를 처리

 4) Store(저장) : 메모리로 데이터 저장

 

 

 

 

 

o 동작과정

(1) Fetch instruction from memory

(2) decoding instruction

(3) Fetch data from memory (if necessary)

(4) Execution instruction CU가 ALU에게 명령내림

(5) Store data into main memory

 

 

 

 

 

CPU 내부 구조 꿀정보

 

o CPU 내부 핵심 장치

 

- 제어장치(CU) : 명령어 해독명령어 실행에 필요한 동작을 수행하기 위해 제어 신호발생

 - 산술논리연산장치(ALU) : 산술연산논리연산 수행

 - 레지스터 : 데이터를 임시 저장하는 기능을 가진 CPU 내부에 있는 고속의 기억장치

 

 

  * CU와 ALU는 기억장치가 아닌 회로임

  * ALU는 수동적으로 연산처리를 하므로 명령을 내리는 주체가 필요한데 이를 통제하는 역할이 CU. 즉, CU가 특정연산을 수행하라는 명령을 ALU에게 내림

 

 

o CU의 명령

-  CU가  “A와 B를 더하라” 와 같이 명령을 내리면,

    (이 때,  ALU에는 이미 A와 B가 준비되어있음)  → compile  object code로 변환과정을 거침

 * Object Code목적코드 : 해당 CPU가 이해하여 처리할 수 있는 명령어 집합

 * CPU가 컴파일러에게 코드를 줘야 목적코드를 만들 수 있으므로 CPU제작자와 Compiler제작자는 밀접한 관계

 

- 명령어가 실행되려면, 하드디스크의 명령어와 데이터가 순차적으로 주기억장치에 적재되어있어야 한다.

  ← 데이터, 명령어는 각자의 고유한 주소를 가지기 때문에 접근 가능!

  ← 해당  CPU가 명령어 포맷 지정해줘야 함 (이를 위하여 CPU제작 시에는 명령어를 잘 지정해두어야 함)

 

 

o 속도

- CPU > 주기억장치 > 하드디스크

 * 하드는 기계장치이고 주기억장치는 전기장치이기 때문에 cpu와 주기억장치 사이의 전달 속도가 더 빠르다

-*Main memory주기억장치가 클수록 좋다 

  ← 주기억장치의 용량이 크면 하드디스크에서 데이터를 가져오는 횟수가 줄기 때문에 처리시간이 줄어듦

 

 

o 명령어

- OPR(operator) : 연산의 종류, 해독시 연산종류 이용

- OPE(operand) : OPR의 종류에 따라 달라짐(by CPU제작사)

 * OPR이 하나인 경우 : stack, pop, push

 

 

※ OPE 유형별 연산방법

 

- a = 1 + 2  상수가  2개인 경우

* 상수 : 이미 존재하는 데이터이기에 메모리로부터 읽어들일 필요가 없음. 직접 계산 가능

 

- a = b + 1  변수 1개, 상수 1개인 경우

* 변수 : 변수가 가진 주소의 메모리로부터 불러와서 계산

 

- a = b + c 변수 2개인 경우

 * 변수 : 변수가 가진 주소의 메모리로부터 불러와서 계산

 

- a++ 

* 누산기 사용

 

* 연산을 2개 변수만 사용할 수 있고,  a = b + c + d + e + f   연산한다면

 

temp1 = b + c

result = temp1 + d

……

result = temp1 + f

compiler가 다시 코딩해

 

 

 

o 주소 접근방법

- 메모리의 내용이 데이터/주소냐에 따라 Direct/Indirect Addressing으로 구분

 * Direct Addressing : 주소로 찾아가면 바로 데이터를 얻을 수 있다.

 * Indirect Addressing : 주소로 찾아가서 내용을 보니 주소가 있어, 그 주소로 가야 실데이터가 적재되어 있는 경우

** 간접 접근방법이 성능상으로는 떨어지지만 데이터 활용면에서는 유리함

 

반응형
그리드형

댓글

❤️김세인트가 사랑으로 키웁니다❤️