[CS] CPU 와 메모리

Nick·2023년 8월 17일
0

CS

목록 보기
2/7
post-thumbnail
post-custom-banner

지난 시간 CPU의 구성에 이어

  • CPU의 동작
  • CPU의 성능
  • 메모리 에대해 이어 학습해 보도록 한다.

CPU

CPU의 동작

컴퓨터는 모든 데이터를 "기계어 (0, 1)로 저장한다.

  • 어셈블리어 : '기계어'를 모스부호처럼 하드웨어적으로 CPU가 알아볼 수 있게 변환한 언어
  • 프로그래밍 언어: '어셈블리어'를 사람이 알아볼 수 있게 소프트웨어 적으로 변환한 언어
  • 즉, 기계어(저장공간) > 어셈플리어(CPU) > 프로그래밍 언어(사람)
    우리가 다루는 데이터(재료), 명령어(레시피)는 모두 저장공간에 저장되어 있다는 공통점이 있다.

CPU가 명령어를 읽고 수행하는 동작

1.명령어 인출

  • CU가 이번에 수행할 명령어 정보를 가지고 온다.

2. 명령어 해독

  • 명령어 정보를 성공적으로 인출했으면 명령어를 해독해야 된다.
  • 보통 opcode라고 하는 명령어 코드를 인출하고 opcode의 성격에 맞게 레지스터들을 준비 시킨다.

3. 실행

  • 해독된 명령어를 수행한다. ex) 이것이 만약 산술/논리 관련된 연산이다 -> ALU가 주체가 되어 실행

4. 반영

  • 이 명령어의 수행 결과를 반영 -> 명령어 수행의 한 사이클이 끝난다.

CPU의 성능

CPU 스펙

ex)컴퓨터를 살때 CPU 스펙을 보면 4.5Hz 클럭, 8core 코어 같은 용어를 사용한다

클럭

  • CPU 내부에서 일정한 주파수를 가지는 신호로(=클럭), 이 신호로 모든 명령어가 동작되게 된다
  • 1Hz 면 1초에 한 번의 주기. 1기가 헤르츠라고 하면 1초에 1기가만큼(1024메가), 즉 10억 번 정도인 셈
    • 예를 들어 4.5GHz라는 것은 초당 45억 번의 명령어를 처리할 수 있다는 뜻 이다.
  • 따라서 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치라고 할 수 있다.

코어

  • 코어는 중앙처리 장치 역할을 하는 블록을 뜻함.
  • 즉, 멀티 코어들은 싱글 코어에 비해서 마치 여러 개의 CPU(요리사)가 작동하듯이 많은 연산을 빠르게 병렬 처리할 수 있습니다.
  • 물론 컴퓨터의 전체적인 성능은 CPU 만으로 결정되지는 않습니다. (메모리도 중요)
    하지만, 가장 중요한 부분이라고 할 수 있는건 푸드트럭의 요리사 또는 사람의 뇌에 해당하는 CPU 입니다.

메모리

명령에 대한 모든 연산은 결국 저장공간을 통해서 처리하게 되는데
이는 요리주문에 대해서 재료들을 둘 공간을 활용해서 요리를 만드는것에 비유할 수 있다.

  • 레지스터 = CPU
  • 캐시메모리(SRAM), 메인 메모리(DRAM) = 주 기억장치
  • 하드디스크(HDD) = 보조 기억장치

캐시 메모리 (L2, L3)

캐시 메모리는 컴퓨터가 전원이 꺼지면 지워지지만 제일 빠르게 조회할 수 있는 저장공간이다.

캐시메모리 = 컴퓨터 시스템 향상을 위해서 CPU와 주기억장치 사이에 있는 아주 작은 비싼 메모리다.

"Q❓ CPU 구성에서 배웠던 캐시메모리랑은 다른건가요?"

  • 넵! CPU 구성중에서 보신 캐시메모리는 L1(레이어1)캐시메모리 이고,
  • 메모리그룹에 속한 CPU와 별개로 구성되어있는 캐시메모리는 L2 캐시메모리, L3 캐시메모리 라고 부릅니다.
  • L2, L3 캐시메모리는 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 놓고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하여 시스템 성능을 향상시켜준다. (레지스터와 비슷하지만 다름)
  • L2,L3 캐시메모리 vs CPU 레지스터
    • L2, L3 **캐시메모리**는 CPU와 별도의 공간이며, 메인 메모리와 CPU 간의 속도차이를 극복하기 위한 것!
    • CPU **레지스터**는 CPU안에서 연산을 처리하기 위하여 데이터를 저장하는 공간!

주 기억장치

주 기억장치는 컴퓨터가 전원이 꺼지면 지워지지만 조금더 빠르게 조회할 수 있는 저장공간 입니다.

  • 메인메모리 = 주기억장치 = RAM
  • RAM은 Random Access Memory의 약자이다.
  • RAM은 DRAM과 SRAM이 있는데 주기억장치는 주로 DRAM을 의미.
    (SRAM은 캐시나 레지스트리)
  • 컴퓨터의 CPU가 현재 처리중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리이다.
    • 전원이 꺼지면 메인 메모리에 저장된 내용들은 모두 사라지기 때문에 컴퓨터가 꺼진 이후에도 데이터를 유지하고 싶을 경우에는 데이터를 하드디스크에 저장해야 한다.
  • 보조기억장치(하드디스크)보다 접근속도가 빠르다.
  • 모든 프로그램은 컴퓨터에서 실행되기 위해 메모리의 일부를 사용.
  • HDD - RAM - CPU 와 유사한 방식으로 연산과정의 중간에 위치.
  • HDD에 비해 월등히 빠른 속도로 CPU가 정보를 원활히 이용할 수 있도록 한다.
  • CPU가 사용하기 좋도록 각종 정보를 임시 저장하는 휘발성 장치이다.
  • SRAM🏎️ vs DRAM 🚌

보조 기억장치

보조 기억장치는 컴퓨터 전원이 꺼져도 지워지지 않는 저장공간.

  • 사용자가 사용하고자 하는 데이터와 프로그램을 반영구적으로 저장한다.
  • 전원을 끄더라도 저장된 데이터나 정보가 날아가지 않는 비휘발성 메모리이다.
  • 그렇기 때문에 우리가 설치하는 모든 프로그램이나 파일들은 이곳에 반영구적으로 저장된다.

CPU 와 메모리

CPU 와 메모리의 동작

  • 🚚 = 요리사🧑‍🍳 + 주문대⌨️ + 선반🍽️ + 조리대 + 창고📦 + 재료🍅 + 레시피🧾 + 수령대🖥️
  • 🧑‍🍳 = 좌뇌🧠 + 우뇌🧠 + 오른손✋ + 왼손✋
  1. 주기억장치가 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다

    주문대에서 주문이 들어오면 요리사🧑‍🍳(CPU)가 주문표⌨️입력 데이터)를 선반🍽️(주 기억장치)에 걸어두고 창고📦(보조 기억장치)에서 필요한 레시피🧾(프로그램)와 재료🍅(저장 데이터)를 선반으로 가져옵니다.

  2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억 장치에 저장한다

    요리사🧑‍🍳는 선반🍽️에서 주문표⌨️에 따라서 레시피🧾와 재료🍅를 가지고 우뇌🧠를 통해 연산을하고 오른손✋으로 요리를 만들어서 선반🍽️에 올려놓습니다.

  3. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보내서 출력시킨다

    선반🍽️에 올려놓은 요리는 수령대🖥️로 가져다주거나, 미리 손질한 요리재료라면 창고📦에 다시 넣어놓습니다.

  4. CPU 내의 제어장치(CU)가 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치들을 제어한다

    요리사🧑‍🍳의 좌뇌🧠가 1~3번 과정에서 주문순서, 레시피🧾순서에 따라 요리를 하도록 양손✋을 제어합니다.

CPU 와 메모리의 구조

하버드 구조

  • 명령어 메모리 = 프로그램에서 사용할 명령어를 모아둔 메모리
    • 명령어 메모리 -> 제어장치 : 명령어 대한 정보를 보내줌
  • 데이터 메모리 = 명령어들로 사용될 메모리
  • ALU = 데이터를 가지고 명령어를 읽어서 연산 수행
  • 장/단점
    • 장점 : 메모리가 두개이기 때문에 역할이 나누어져 있으며 속도가 빠르다.
    • 단점 : 구성이 많기 때문에 비싸며, 복잡한 구성으로 고장이 날 확률이 높다

폰노이만 구조

  • 보조기억장치에서 데이터들이 CPU에서 연산되기 위해서 하나의 메모리에 올라간다.
  • 제어장치는 산술논리장치에 데이터가 메모리 어디에 위치한지 알려주는 역할을 한다.
  • 프로그램 메모리와 데이터 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있다. 이로인해서 병목현상이 일어난다.

개선된 구조

  • 하버드 구조 + 폰노이만 구조
  • CPU의 캐시 메모리 형상에 관여
  • CPU 내부 - 하버드 : CPU 내부에 캐시를 둬서 RAM과 CPU 간의 속도 차이를 줄이려고 노력
  • CPU 외부 - 폰노이만 : 메모리 하나에 하나의 버스를 가지는 구조이기 때문에 병목현상이 아직까지는 존재한다.

최근 이슈

최근 애플에서 출시한 M1, M2 칩

  • M1 칩은 위에서 설명한 CPU 와 여러 요소들을 합쳐 만든 칩(CPU)이라고 할 수 있다.
    장치간의 거리도 짧고 통합 메모리 구조를 가졌기에 CPU의 효율을 극대화 시킬 수 있었다

  • 그렇다고, 장점만 있는 것은 아님

    • 하나의 칩 형태로 나왔기에 RAM(주 기억장치)을 추가 한다던지의 자유도는 매우 떨어지고
    • 사전에 정해진 형태로만 메모리간에 통신하기 때문에 메모리별 최적화가 적용되어있는 일부 프로그램은 동작하지 않을 수 있다.

    그래서, M1, M2 맥북을 사시려면 ARM CPU에 호환되지 않는 프로그램이 있으니 사기 전에 본인이 자주사용하는 프로그램이 지금 호환성 작업이 끝났는지 알아보는 것이 중요!

    추가 CPU 성능/ 동작

    CPU 성능

  • 32비트 또는 64비트
    32비트와 64비트 프로세서는 데이터를 처리할 수 있는 수준으로 구분하시면 됩니다.
    CPU는 앞서 말씀드렸듯이 2진수로 이루어진 많은 데이터를 처리해야 합니다.
    프로세서는 한 단어의 비트 양에 의해 제한됩니다. 32비트 프로세서가 처음 설계되었을 때, 그 당시에 32비트의 데이터는 엄청나게 큰 데이터였죠.
    그러나 무어의 법칙을 통해 CPU는 계속 발전되었고, 컴퓨터는 새로운 64비트 프로세서의 개발을 통해 4GB 이상의 RAM을 처리할 수 있었습니다.
    하지만 64비트 프로세서를 사용한다고 모든 데이터를 64비트로 처리할 수는 없습니다. 바로 프로그램에서도 64비트를 지원해야 하기 때문이죠.

  • L2/L3 캐시
    L2와 L3 캐시는 처리 중에 CPU가 사용할 수 있는 속도가 빠른 캐시 메모리 입니다. L2, L3와 같은 캐시 메모리를 가지고 있을수록 CPU의 성능이 빨라집니다.
    만약 CPU 프로세서를 구매하실 계획이고 고성능을 원하신다면 L2/L3 캐시를 확인해보실 것을 권장드립니다.

  • 주파수
    주파수는 프로세서의 작동 속도를 가리킵니다.
    멀티 코어 프로세서 이전에 주파수는 서로 다른 CPU 사이에서 가장 중요한 성능 메트릭스이었습니다. CPU 프로세서 구매 시 주파수 성능도 꼭 고려해야할 중요한 요소 중 하나입니다.
    예를 들어 매우 빠른 듀얼 코어 CPU가 느린 쿼드 코어 CPU를 능가할 수도 있기 때문이죠.

    CPU 동작

    데이터를 가져오기, 디코딩, 실행 바로 이 세 단계가 CPU의 핵심이자 전부라고 말할 수 있습니다.

  1. 데이터를 가져오기(Fetch)
    데이터는 이진수(011010..)로 표시되며 RAM에서 CPU로 전달됩니다. 각 실행 작업은 모든 작업의 작은 부분일 뿐이므로 CPU는 다음에 어떤 실행이 나올지 알아야 합니다.
    명령어는 프로그램 카운터(PC)에 의해 보관됩니다. 그런 다음 PC와 명령문은 IR(지침 레지스터)에 배치됩니다.
    그리고 PC 길이는 다음 명령문의 주소를 참조하기 위해 증가됩니다.
  1. 디코딩(Decoding)
    일단 명령을 가져와 IR에 저장하면 CPU는 명령 해독기라는 회로로 명령을 전달합니다.
    명령어는 CPU의 다른 부분으로 전달하여 작동을 위해 전달되는 신호로 변환됩니다.
    이것을 디코딩이라고 합니다.
  1. 실행(Execute)
    마지막 단계에서 디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송됩니다.
    결과는 대개 CPU 레지스터에 기록되며, 이 레지스터는 이후 명령문에 의해 참조될 수 있습니다.
    계산기의 메모리 기능처럼 생각하시면 쉽게 이해하실 수 있습니다.
profile
배우고 도전하는것을 멈추지 않는 개발자 입니다.
post-custom-banner

0개의 댓글