You are currently viewing 혼공컴운 2주차-CPU 작동원리/성능향상기법

혼공컴운 2주차-CPU 작동원리/성능향상기법


기본미션

  • p125 확인 문제 2번
  • 플래그 레지스터: 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터
  • 프로그램 카운터: 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
  • 범용 레지스터: 데이터와 주소를 모두 저장할 수 있는 레지스터
  • 명령어 레지스터: 해석할 명령어를 저장하는 레지스터

CPU의 레지스터들 중, 알아두어야할 레지스터는 다음의 8개와 같다

  • 프로그램 카운터: 메모리에서 읽어 올 명령어의 주소 (=명령어 포인터)
  • 명령어 레지스터: 메모리에서 읽어 온, 해석할 명령어를 저장
  • 메모리 주소 레지스터: 주소 버스로 내보낼 메모리 주소를 저장
  • 메모리 버퍼 레지스터: 메모리와 주고 받을 값 (데이터&명령어) 저장
  • 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적 정보 저장
  • 범용 레지스터: 데이터 및 주소를 모두 저장가능, 다양하고 일반적 상황에 사용
  • 스택 포인터: 스택 주소 지정방식에서, 스택의 윗부분을 지정
  • 베이스 레지스터: 변위 주소 지정방식에서, 기준 주소의 역할

각 설명에 적절한 레지스터를 연결하면 위와 같다.

  • p155 확인문제 4번

> 코어

코어(Core)는 CPU 내에서 명령어를 실행하는 부품을 말한다. 전통적인 관점에서 명령어를 실행하는 부품은 하나만 존재하였다. 그러나 기술의 발전에 따라 다수의 명령어 실행 부품을 구성할 수 있게 되었다.

위의 그림처럼, 현대의 (멀티코어) CPU는 명령을 실행하는 부품구조를 여러개 가질 수 있다. 이 하나하나를 코어라고 지칭한다.

선택 미션

  • Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드 개념 정리


CPU의 클럭을 높이는 것 외에, 성능 개선을 위하여 코어/스레드의 수를 증가시킬 수 있다.

  • 코어와 멀티코어
5.9.2. Multicore and Hardware Multithreading

CPU의 코어는 명령어를 실행하는 일련의 물리적 부품세트를 말한다. 이러한 코어를 다수 배치하여(멀티코어 아키텍쳐) 연산하게 함으로써 CPU의 성능을 개선할 수 있다.

그러나 코어에 명령어를 할당하는 과정에서 비효율이 발생할 수 있다

  • 코어에 적절히 할당되지 않을 경우
    • 복수의 코어가 있으나 작업이 특정 코어에만 집중될 경우, 단일 코어처럼 동작하여 의도한 성능 개선에 실패할 수 있다.
  • 작업에 비해 코어양이 과다하게 많을경우
    • 복수의 코어가 있으나 모든 코어에 배분할 만큼의 부하가 없는 경우, 할당받은 코어만 작동하여 멀티코어의 장점을 살릴 수 없다.

  • 스레드와 멀티 스레드
Multi-Thread and Multi-Process

CPU의 스레드는 명령어를 실행하는 논리적 단위이다. 이러한 스레드를 다수 배치하여(멀티스레드) 하나의 코어가 다수 명령어를 연산하게 하여 CPU의 성능을 개선할 수 있다.

스레드는 하드웨어적 스레드와 소프트웨어적 스레드로 구분할 수 있다.

  • 하드웨어적 스레드
    • ‘하나의 코어가 동시에 처리하는 명령어의 단위’
    • 레지스터가 핵심, 독립된 레지스터를 통해 다수의 명령어 처리가능
    • 프로그램 입장에서 다수의 프로세서로 간주되므로 논리프로세서 라고 지칭
  • 소프트웨어적 스레드
    • ‘하나의 프로그램에서 독립적으로 실행되는 단위’
    • 물리 장치보다는 소프트웨어, 운영체제에서 주로 사용
    • 프로그램의 기능을 다수 스레드로 분할하여, 동시에 실행할 수 있다.


Leave a Reply