CPU와 메모리

채원·2022년 11월 8일
1

컴퓨터 이해하기

목록 보기
1/2

이번 글에서는 CPU와 메모리에 대해서 더욱 자세하게 알아보겠습니다.
본 글은 <혼자 공부하는 컴퓨터구조+운영체제>를 참고해 작성하였습니다.

⚙️ CPU

CPU란?

CPU란 Central Processing Unit의 약자로, 중앙 처리 장치라고도 부릅니다. 컴퓨터의 가장 중심적이며 기초적인 기능을 하는 장치라고 할 수 있습니다.

  • (메모리에서) 정보 읽어들이기
  • 명령어 해석하기
  • 명령어 실행하기
  • (메모리로) 정보 보내기

의 네 가지 기능을 한다고 할 수 있습니다.

그리고 CPU는 자체 데이터 저장 기능이 없으므로, 데이터를 저장하는 기능을 수행하는 다른 기기가 필요합니다. (물론 레지스터와 캐시가 있지만, 충분하지 않습니다.) 그래서 개발된 것이 메모리입니다.

CPU의 구성

CPU는

  • 산술논리연산장치(ALU)
  • 레지스터(Register)
  • 제어장치(Control Unit, 이하 CU)

로 구성됩니다. (물론 한 코어가 이렇게 구성되는 것이고, 현대에는 멀티코어 컴퓨터도 있기 때문에 전적으로 저 기기들이 하나씩 있는 것은 아닙니다.)

💬 ALU(산술논리연산장치)

ALU는 CPU 내부에서 연산을 담당하는 장치입니다.

그림과 같이, 제어 장치로부터 제어 신호를 받은 후 레지스터에 데이터를 받고, 연산 후 계산 결과를 데이터 메모리 레지스터(MDR)에 저장합니다.

💬 레지스터(Register)

레지스터는 CPU 내부의 작은 임시 저장소로, 여러 개가 존재하며 여러 가지의 용도가 존재합니다.

① 프로그램 카운터
② 명령어 레지스터
③ 메모리 주소 레지스터
④ 메모리 버퍼 레지스터
⑤ 플래그 레지스터
⑥ 범용 레지스터
⑦ 스택 포인터
⑧ 베이스 레지스터

CPU 내부에 있어 접근 속도가 매우 빠른 것이 특징이고, 매우 많은 종류가 존재합니다.(위의 8가지보다 더...)

💬 제어 장치

제어 장치는 제어 신호를 내보내고 명령어를 해석하는 부품입니다.
제어 장치는

  • 클럭 신호를 받아들입니다.
  • 해석해야 할 명령어를 받아들입니다.
  • 플래그 레지스터 속 플래그 값을 받아들입니다.
  • 외부로부터 전달된 제어 신호를 받아들입니다.

⚙️ 메모리

메모리란?

현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품

메모리의 종류

💬 레지스터(Register)

CPU가 연산에 필요한 데이터를 임시적으로 저장해두는 장치입니다.
CPU에 속해 있기 때문에 앞쪽에서 설명했습니다.

💬 캐시(Cache)

캐시 메모리는 메인 메모리까지 가는 시간도 아깝다! 라는 의견에서 나왔습니다. 양도 작고, 메모리만큼 많은 크기는 필요 없는 SRAM 기반의 저장 장치입니다.
CPU가 캐시의 데이터에 접근하려고 하는 경우를 캐시 히트, 그렇지 않은 경우를 캐시 미스라고 합니다. 캐시 히트를 많이 발생시키는 것이 당연히 효율이 높기 때문에, 이를 제대로 활용하려면 사용할 법한 데이터를 예측해 캐시 적중률을 높여야 합니다. 이때 참조하는 것이 참조 지역성의 원리입니다.
이는

  • 시간 지역성 : 접근한 메모리 공간에 다시 접근하려는 경향
  • 공간 지역성 : 접근한 메모리 공간 근처에 접근하려는 경향

로 나뉩니다. 이 두 원리에 입각해 캐시 데이터를 결정하는 것입니다.

캐시 미스도 세 가지로 나눌 수 있습니다.(3C's model)

  • compulsory miss : 해당 메모리 주소를 처음 불렀기 때문에 나는 미스입니다. 사실상 예방할 방법이 없지만, 전체 컴퓨터 사용 시간에 비하면 드물게 나는 유형입니다.

  • conflict miss : 데이터 A와 B를 캐시 메모리에 저장해야 하는데, 두 데이터를 같은 캐시 메모리 주소에 할당해 버려 '충돌'하는 캐시 미스입니다.

    ex) 폰과 에어팟을 손에 들었습니다. 둘을 오른쪽 주머니에 넣고 나니 너무 무겁습니다. 에어팟을 빼 원래 있던 자리에 두었습니다. 이때 에어팟을 오른쪽 주머니에서 찾아 보니 없다면 누군가가 들어왔을 때 "conflict miss가 났네..."라고 상황을 요약해줄 수 있습니다.

  • capacity miss : conflict miss와 다르게 주소 할당은 잘 했으나 물리적으로 캐시 크기가 부족해서 나는 미스입니다.

💬 메인 메모리(Main Memory)

일반적으로 '메모리'라고 하면 가장 많이 지칭하는 기기입니다.
RAM(휘발성 저장 장치), ROM(비휘발성 저장 장치)가 속합니다.

RAM은 보조 기억 장치에서 미리 덜어놓은 플레이팅 그릇과 같은 존재입니다. CPU가 실행하고 싶은 프로그램을 복사해 저장한 후, 실행할 때마다 가져다 쓸 수 있어 실행 시간을 줄일 수 있는 원리입니다.

(참고로 앞 글에서 설명한 기기의 MAC 주소가 바로 ROM에 기록되어 있습니다!)

💬 하드 디스크 드라이브(HDD)

메인 메모리인 RAM이 전원이 꺼지면 저장된 내용이 날아가는 문제점을 보완하기 위해, 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않는 보조 저장 장치가 필요하게 되었습니다.

⚙️ 총정리(컴퓨터의 작동 예시)


1. 제어 장치가 메모리에 메모리 읽기 제어 신호와 메모리 주소 레지스터 값을 보냅니다.
2. 메모리가 데이터를 데이터 버퍼 레지스터로 보냅니다.(카운터 +1)
3. 데이터가 명령어 레지스터로 보내집니다.
4. 제어장치가 명령어를 해석하고 제어 신호를 발생시킵니다.
5. 제어 신호 수행이 끝난 후 다음 메모리를 읽습니다.

⚙️ 느낀 점

이제 지금까지 약 11개월 동안 탐구했던 것들의 실체를 안 느낌입니다... 정말 신기하네요.

profile
💡

0개의 댓글