What is CPU

What is CPU

CPU


  • CPU란 (Central Processing Unit / main processor)으로 컴퓨터 시스템을 통제하고 프로그램(프로세스)의 연산을 실행하는 핵심적인 컴퓨터의 중앙 제어장치로 사람으로 따지면 뇌의 역할은 하는 내장형 칩을 의미한다.

  • CPU는 기계어로 쓰인 명령어를 해석하며 실행하며, 외부의 정보를 입력받아 이를 기억하고, 연산하며 외부로 출력하는 역할을 수행한다.

  • CPU는 크게 하기 3가지 구분할 수있다.

    • 처리할 명령어를 저장하는 프로세서와 레지스터
    • 연산을 담당하는 산술논리연산장치(ALU / 연산장치),
    • 명령어의 해석과 올바른 실행을 위해 CPU를 제어하는 제어장치(Control Unit)

 

CPU의 구조


  • Core : CPU의 Core 즉 CPU의 핵심적인 역할을 수행해내는 중심부 역할을 말하며 이 코어에서 시스템의 모든 연산처리를 수행한다.

  • Thread : Core는 H/W 적인 관점에서 본 관점이며, Thread는 논리적인 작업 관점에서 처리 단위를 나뉘어 연산처리(HyperThreading)를 수행한다고 할 수 있다.

  • Clock : Clock은 동작 주파수로 CPU의 속도를 나타내는 단위이며, CPU가 데이터 양에 따라 속도가 달라질 수 있다. 단, 클럭이 높을 수록 발열 및 전력사용이 증가하기에, 최근에는 Multi Core 및 Multi Thread로 일정량의 Clock을 유지시켜 성능 향상을 꾀하고 있다.

  • Cache Memory : CPU 내부에서 임시로 사용하는 버퍼(Buffer) 메모리 중 하나로, 자주 사용하는 파일 등을 따로 모아두고, 나중에 해당 파일을 다시 실행하면 컴퓨터에서 바로 불러오는 파일을 의미하며, CPU가 하나의 데이터를 처리하는 동안 메인 메모리로부터 다음에 처리할 데이터를 불러와 대기하는 시킬 수 있어, 처리 속도를 높일 수 있다.

  • 정말 간단하게 요악하자면 Core는 몸통, Thread는 몸통에 달린 팔이라고 할 수 있지만, Thread가 무조건 많다고 좋은 것이 아니며, 대부분 Thread가 높을 수록 Clock이 낮기 때문에 개개인에 맞게 사용하는 것이 옳다고 할 수 있다.

 

CPU 아키텍처


  • 커널 및 프로세스 : 유저와 CPU 사이에서 서로의 언어를 해석하고 전달(OS, 프로그램)

  • Protection ring : 유저가 사용하는 커널과 시스템이 사용하는 커널을 나눔으로써 시스템 자체를 보호(System call)

  • Virtaul memroy / Page table : 유저가 사용하는 프로세스가 메모리에 접근하기 전에 사용되는 공간으로 실제 메모리 사용량의 변동성을 억제시켜 이를 통해 시스템의 안전성을 향상시키는 역할을 수행

  • Context Switching : 실제 CPU는 특정 프로세스만을 지속적으로 점유시키고 있지 않으며, 다른 프로세스를 스왑하면서 사용되는 데, 이를 Context Switching이라 한다.

  • Page Table Entry의 Protechtion bit : 유저가 사용하는 프로세스의 가상 메모리의 특정 주소는 커널 데이터를 담고 있어, sysc all을 호출하여 커널의 도움을 받으러 갈 때 Page Table을 커널 것으로 교체할 필요가 없어져, 파일의 Read/Write


  • 명령어(instrcution) : CPU 명령어 수행 동작

  • Pipeline : 파이프라인은 CPU가 하나의 명령어를 처리하는 과정도 너무 복잡하고 많기 때문에, 이를 잘게 쪼개서 여러 가지 작은 단계로 나누어 처리하는 방식

  • Cache : 주메모리에서 값을 읽는 동작은 CPU의 명령어 처리 속도에 비하면 한참 느리다. 따라서 이 갭을 줄이기 위해 매우 빠르지만 작은 저장 공간이 CPU에 있는데, 이를 캐시라고 한다.

  • 분기(Branch) 명령어는 어떤 조건이 맞으면 다음에 실행할 명령어의 위치를 임의로 지정할 수 있게 해준다. 이는 같은 명령어들을 반복해서 실행하거나 조건에 따라 다른 일을 하고 싶을 때 사용하는 매우 기본적인 명령어다.

  • 비순차적 명령어 처리(OoOE)는 파이프라인의 송출(Issue) → 실행(Execute) → 회신(Writeback) 단계에 한해서 늦게 온 명령어가 일찍 온 명령어를 새치기할 수 있는 기술

  • Speculative execution : 어떤 명령어가 특정 파이프라인 단계에 필요한 정보가 없어서 진행이 막혔을 때, 필요한 정보를 예측해서 높은 확률로 맞힌다면 틀렸을 때의 다소 큰 손해를 넘어서는 이익을 취할 수 있다. 고성능의 CPU는 이러한 예측에 기반한 갖가지 기술들을 적극 활용하고 있다.

 

CPU 처리과정


  • CPU의 처리과정을 간단하게 나열하면 아래와 같다.

    1. Fetch: 실행할 명령어들을 가져온다.

    2. Decode: 이후 처리를 돕기 위해 명령어의 종류를 선택 및 결정한다. / CISC, RISC

    3. Rename: 명령어가 가리키는 레지스터를, 내부에 숨어있는 물리적 레지스터로 매핑한다.

    4. Dispatch: 명령어가 실행하기 위해 기다리는 대기열에 넣는다.

    5. Issue: 대기열에 있는 명령어가 실행될 수 있으면[12] 실행하기 위한 장치로 보낸다.

    6. Execute: 실행한다.

    7. Writeback: 결과값을 레지스터에 써야 한다면 쓴다. 결과값을 기다리고 있던 명령어가 있다면 결과가 생겼다고 알려준다.

    8. Commit: 명령어 수행을 완료하고, 명령어 실행을 위해 할당받은 자원을 모두 토해낸다. 명령어의 실행 결과를 사용자에게 노출시킨다.

 

RSS Feed
마지막 수정일자