멀티코어 프로세서

sameul__choi·2021년 8월 2일
0

Operation System

목록 보기
1/3

멀티 코어 프로세서

1. ABOUT Multicore processor

  • 멀티 코어 프로세서 CPU는 두 개 이상의 독립 코어를 단일 집적회로로 이루어진 하나의 패키지로 통합한 것이다.

  • dual-core, triple-core, hexa-core, octa-core, deca-core, dodeca-core (코어의 수 별)

  • 각 코어는 슈퍼스칼라 실행, 파이프라인 처리, 멀티스레딩과 같은 최적화를 독립적으로 수행한다. 코어의 개수에 따라, 그 개수만큼의 스레드를 동시에 처리할 때 효율적으로 동작한다.

    • 슈퍼스칼라 : CPU 내에 파이프라인을 여러 개 두어 명령어를 동시에 실행하는 기술.
    • 파이프라인 처리 : 현대의 프로세서에서 찾을 수 있는 CPU 최적화 단계-> 데이터 처리과정
    • 멀티스레딩 : 여러 개의 스레드를 효과적으로 실행할 수 있는 하드웨어 지원, 명령어 수준의 병렬 처리에까지 신경을 쓰며 하나의 코어에 대한 이용성을 증가하는 것에 초점을 둠.
  • 과거에는 주파수를 늘리는 방식으로 프로세서를 증가시켰었다.

    • 그러나 높은 기가헤르츠 칩에서는 수냉각이 필요할 정도로 열이 발생.
    • 파워가 증가되고, 열 손실이 감소한 2개의 프로세싱 엔진이 프로세싱 코어가 하나인 자원이 부족한칩보다 더 빠르게 작업을 수행하게 해준다.
  • 멀티 프로세싱과 멀티 프로세서

    • 멀티 코어 프로세서 : 여러개의 작업을 보다 효율적으로 처리하기 위해 2개 이상의 프로세서가 붙어있는 ''집적회로''
    • 멀티 프로세싱 : 복수개의 프로세서들이 협력하여 작업을 처리하는 "처리방식"
  • 코어가 많을 수록 좋은가 ?

    • 일반적으로 코어수가 적은 것보다 많은것이 좋다. 코어가 1개인 프로세서는 한 번에 스레드 1개만 처리할 수 있기 때문, 코어가 2개면 프로세서 2개 코어가 4개면 프로세서 4개 처리 가능
    • 스레드 ? -> 스레드는 특정 프로그램에서 나와 프로세서를 통과하는 연속된 데이터 흐름.
    • PC의 모든 것은 프로세서를 통과하는 스레드로 귀결이 된다.
    • 그렇다면 코어가 많을 수록 한 번에 처리할 수 있는 스레드가 많다는 이야기 ?
      • 하지만 코어 수에만 초점을 맞추면 클럭 속도를 간과할 위험이 있다.
  • 클럭수에 대하여

    • 프로세서의 코어가 많아지면 앞서 말한 발열과 관련된 제약때문에 클럭 속도가 낮아지는 경향이 있다.

잠깐 다시 돌아가서

  • 멀티 CPU는 무엇인가 ? -> CPU가 1개가 아닌 2~4개 꼽힌 것. 그리고 이걸 활용하여 성능을 높이고 싶을때 멀티스레드를 사용.

  • 왜 칩 제조사에서 멀티코어 프로세서를 만드는가 ?

    • CPU의 성능을 올리기 위해서
    • 클럭 속도를 무한정 높일 수 없다 ( 발열문제 )
      • 4Ghz 이상으로 클럭속도를 높이면 컴퓨터가 타버린다(물리법칙)
      • 클럭 속도를 높이려면 열을 잡아야하는데, 액체질소를 실시간으로 들이부어야 한다.
      • 그래야 5ghz를 넘을수 있고 4ghz를 사용한다 하더라도 냉각장치를 사용해야하는데 요게 배보다 배꼽이 더 커진다.
    • 클럭 속도가 아닌 CPU의 속도를 올리는 것은 한계(아키텍처 개선: 캐시, 파이프라인, 예측분기, 동적 수행 등등)
    • 그렇다면 남은 방법이 바로 멀티코어........

2. Multicore processor structure

  • Dual Core - 2CPU

img

그래 어쩔 수 없이 멀티코어 코어 개수를 높여 성능을 올려야 한다. 생김새를 보면 이렇게 생겼다. CPU0은 듀얼코어 CPU, 코어는 ALU, REGISTER, CU 그리고 캐시로 이루어져 있다. 인텔에서 CPU 하나 만들어서 복붙하면 듀얼코어가 되고 그걸 또 복붙하면 쿼드코어, 옥타코어가 되는 것이다. (
AMD도 마찬가지..)

  • Quad Core - 1CPU

img

쿼드코어 CPU.... 듀얼코어 CPU 2개 쿼드코어 CPU1개 차이는 없다...... CPU가 몇개 꽂혀 있는지 확인 하는 것, 그거 말고는 프로그램 상으로는 구분이 안된다고 한다.

그럼 이제부터는 각 유닛들이 어떤 역할을 하는지에 대해서 알아보자 !

img

기본 구성으로는 CPU에서 처리할 명령어를 저장하는 역할을 하는 프로세서 레지스터, 비교, 판단, 연산을 담당하는 산술논리연산장치(ALU), 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부(control unit)와 내부 버스 등이 있다.

CPU의 내장회로는 CPU가 수행할 수 있는 기본적인 연산들의 집합인 '명령어 집합'으로 이루어져있다. 예를 들면 두 개의 숫자에 대한 가감연산 혹은 비교연산 같은 것이 있다. 각각의 기본 연산은 옵코드(opcode)라고 불리는 특정한 비트의 조합으로 나타내진다.

모든 명령어의 실제 수학적인 연산은 CPU 내부의 산술논리장치(ALU, arithmetic logic unit)이라는 조합논리회로에서 담당한다. CPU는 대부분 산술논리장치가 연산을 수행하기 위한 명령어를 메모리로부터 불러오고, 연산의 결과값을 저장하는 일을 한다. 메모리로부터 데이터를 불러오는 연산의 명령어 집합의 종류와 동작은 확연한 차이를 보인다.

  • 산술논리장치 : 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱, 논리합 같은 논리연산을 계산하는 디지털 회로이다

  • 제어 장치 (CU) : 명령어를 순서대로 실행 할 수 있도록 제어해주는 장치.

    • 주기억 장치에서 명령어를 꺼내 해독, 그 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보낸다. 그 후, 장치가 보낸 신호를 받아 다음 수행 동작을 결정한다.
  • 레지스터 : 고속 기억장치로 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과등을 임시로 저장한다. CPU 종류에 따라 사용할 수 있는 레지스터 개수와 크기가 다르다.

    • 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장
    • 특수목적 레지스터 : 특별한 용도로 사용하는 레지스터
      • MAR : RW연산 수행할 주기억장치 주소 저장
      • PC : 다음에 수행할 명령어 주소 저장
      • IR : 현재 실행중인 명령어 저장
      • MBR : 주기억장치에서 읽어온 데이터, 저장할 데이터 임시 저장
      • AC : 연산 결과 임시 저장

    [참고] CPU 동작 과정

    1. 주기억 장치가 입력받은 데이터나 보조기억장치에 저장된 프로그램 읽어온다.
    2. CPU는 프로그램 실행을 위해 주기억 장치에 저장된 프로그램 명령어, 데이터를 읽어와 처리 한 후 다시 주기억 장치에 저장
    3. 주기억 장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
    4. 제어장치는 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.

    img

  • 명령어 처리 과정 간략히 : PC -> MAR -> 기억장치 -> MBR -> IR -> PC+1

0개의 댓글