CS 공부

CPU / 메모리

신동편 2023. 6. 24. 10:51
728x90

CPU(Central Processing Unit)란?

 

메모리에 존재하는 명령어를 해석해서 실행하는 부품이다.

 

운영체제의 커널(운영체제의 핵심 부품으로, 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 드 운영체제의 중추적인 역할을 함.)이 프로그램을 메모리에 올려 프로세스로 만들면 CPU가 이를 처리한다.


 

CPU의 구성요소

 

제어장치(CU, Control Unit)

 

프로세스 조작을 지시하는 CPU의 한 부품, 입출력 장치 간 통신을 제어하고 명령어들을 읽고 해석하며, 데이터 처리를 위한 순서를 결정한다.

 

레지스터(Register)

 

CPU 안에 있는 매우 빠른 임시기억장치이다. CPU와 직접 연결되어 있어 연산 속도가 메모리보다 월등히 빠르다. CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 프로그램을 실행하는 데 필요한 값들을 임시로 레지스터에 저장하고, 이를 거쳐서 데이터를 전달한다.

 

산술논리연산장치(ALU, Arithmetic Logic Unit)

 

덧셈, 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로이다. 컴퓨터 내부에서 수행되는 대부분의 계산은 ALU가 도맡아 수행한다.


 

CPU의 연산 처리 과정

 

제어장치가 메모리에 계산할 값을 로드하고, 레지스터에도 로드하면, 제어장치가 레지스터에 있는 값을 ALU에게 계산하라고 명령하고, 제어장치가 다시 계산된 값을 레지스터에서 메모리로 계산된 값을 저장한다.

 

 

1. 명령어가 메모리에서 CPU로 로드된다.

2. 제어장치는 명령어를 해석하고 해당 동작을 결정한다.

3. 필요한 데이터는 메모리에서 레지스터로 이동한다.

4. ALU는 레지스터에서 가져온 데이터를 바탕으로 값을 계산한다.

5. 연산 결과는 다시 레지스터에 저장된다.

6. 이후 프로그램의 실행과정에 따라서 메모리에 저장되게 된다.

 

+ 인터럽트)

어떤 신호가 들어왔을 때 CPU를 잠시 정지시키는 것을 말한다. IO 디바이스로 인한 인터럽트, 0으로 된 숫자를 나누는 산술 연산에서의 인터럽트, 프로세스 오류 등의 이유로 발생한다.

 

인터럽트가 발생하면 인터럽트 핸들러 함수(인터럽트가 발생했을 때 이를 핸들링하기 위한 함수, 커널 내부의 IRQ를 통해 호출되며 request_irq()를 통해 인터럽트 핸들러 함수를 등록할 수 있음)들이 있는 인터럽트 벡터로 가서 인터럽트 우선순위에 따라서 핸들러 함수가  실행된다.

 

+ DMA(Direct Memory Access)컨트롤러)

I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치를 말한다. CPU에만 너무 많은 인터럽트 요청이 들어오기 때문에 CPU 부하를 막아주며 CPU의 일을 부담하는 보조 장치라고 할 수 있다. 또한, 하나의 작업을 CPU와 DMA컨트롤러가 동시에 하는 것을 방지한다.

 


 

메모리(Memory)

 

전자회로에서 데이터나 상태, 명령어들을 기록하는 장치를 말한다.

 

메모리 계층

 

메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다.

 - 레지스터 : CPU 안에 있는 작은 메모리, 휘발성, 속도가 가장 빠름, 기억 용량이 가장 적음.

 - 캐시 : L1, L2 캐시를 지칭함, 휘발성, 속도 빠름, 기억 용량이 적음, 참고로 L3 캐시도 있음.

 - 주기억장치 : RAM을 가리킴, 휘발성, 속도 보통, 기억 용량이 보통임.

 - 보조기억장치 : HDD, SDD를 일컬어 말함, 비휘발성, 속도 낮음, 기억 용량이 많음.


 

캐시

 

데이터를 미리 복사해 놓은 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를  말한다. 이를 통해서 데이터에 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있다.

 

메모리와 CPU사이에 속도 차이가 너무 크기 때문에  그 중간에 레지스터 계층을 둬서 속도 차이를 해결한다. 이와 같이 속도 차이를 해결하기 위해서 계층과 계층 사이에 있는 계층을 캐싱 계층이라고 한다.

 

CPU가 필요한 데이터를 메인메모리에서 찾기 전에 캐시에서 먼저 찾는다.

캐시의 성능은 CPU가 찾으려는 내용이 많을수록 좋다.(캐시 히트율이 높다.)

 

+ 지역성의 원리)

캐시 계층을 두는 것이 아닌 캐시를 직접 설정할 때에는 자주 사용하는 데이터를 기반으로 설정해야 한다. 

이때 자주 사용하는 데이터에 대한 근거가 되는 것이 지역성이다.

 

공간적 지역성 : 특정 데이터와 가까운 주소가 순서대로 접근될 때 다음번에 그 근처에서 접근할 가능성이 높은 것.

ex) 배열의 요소들을 연속적으로 접근

 

시간적 지역성 : 특정 데이터가 한 번 접근될 때, 다음번에 가까운 미래에 또 접근할 가능성이 높은 것.

ex) for문 코드 안에서 변수 i에 대한 접근


 

주기억장치(RAM, Random Access Memory)

 

메인 메모리로서 당장 실행되어야 할 것들을 저장한다.

보조기억장치로부터 일정량의 데이터들을 복사해서 저장한다.


 

보조기억장치(HDD, SDD)

 

불필요한 프로그램이지만, 저장되어야 할 것들을 저장한다.

전원이 꺼져도 데이터가 지워지지 않는다. 따라서 반영구적으로 데이터를 보존할 수 있다.

그러나 데이터 처리 속도가 느리다.

 

728x90

'CS 공부' 카테고리의 다른 글

TCP / UDP  (0) 2023.07.26
트랜잭션 (Transaction)  (0) 2023.07.26
프로세스  (0) 2023.07.06