Ch02. 컴퓨터 구조 및 성능 개선 _04) 병렬 처리

교과서 보기 .

병렬성의 개념

  • 병렬 처리
    • 여러 명령을 동시에 처리하여 업무 효율성을 높이는 방식
  • 볶음밥 조리 예시
더보기

  • CPU 성능을 향상시키는 가장 좋은 방법 CPU 클럭을 높이거나 캐시를 늘리십시오.. 하지만 CPU 클럭을 높일 때 발열이 발생하기 때문에 현재 기술로는 약 5GHz를 넘는 CPU를 설계하기 어렵다.

    캐시 크기를 늘리는 것도 비용이 많이 듭니다.

  • CPU의 성능을 향상시키기 위해서는 CPU의 핵심 기능으로 여러 개의 코어를 만들거나 동시에 실행할 수 있는 명령의 수를 늘리는 방법을 사용한다.

  • 병렬 처리동시에 여러 명령을 처리하여 업무 효율성을 높이는 방식을 말합니다.

  • 컴퓨터의 현재 CPU 사양을 보면 듀얼 코어 또는 쿼드 코어로 표시되어 있습니다.

    CPU의 주요 기능을 담당하는 코어가 하나가 아니라 둘 또는 넷이라는 의미입니다.

  • 여러 명령을 동시에 처리하는 병렬 처리는 멀티 코어 CPU뿐만 아니라 싱글 코어 CPU에서도 가능합니다.

(그림 2-26에 대한 설명)

  • 볶음밥 조리시간이 총 40분이면 2인분은 80분, 3인분은 120분이 소요된다.

  • 그런데 볶음밥을 만드는 과정을 세분화하면 사진과 같이 재료 씻기 10분, 손질 10분, 취사 10분, 마무리 10분의 4단계로 생각하면 밥맛을 줄일 수 있다.

    생성 시간

(병렬 처리)

  • 병렬 처리: 여러 프로세서 간의 분업, 동시 처리 기술
    • 다수의 프로세서로 시스템을 구성하기에 작고 저렴함
    • 프로그램은 빠른 프로세서를 사용하여 많은 작은 부분으로 나눌 수 있어야 합니다.

    • 분할된 부분을 병렬로 처리한 결과는 전체 프로그램을 순차적으로 처리한 경우와 동일해야 합니다.

(멀티코어)

  • 멀티 코어: 하나의 다이에 두 개 이상의 코어 통합
  • 다중 스레드: 멀티프로세스에 비해 메모리를 적게 차지하고 컨텍스트 전환이 빠르다는 장점이 있지만 스레드 장애로 인해 동기화 문제 및 전체 스레드 종료의 위험이 있습니다.

  • 다중 프로세스: 하나의 프로세스가 죽어도 다른 프로세스에 영향을 주지 않아 안정성은 높지만 멀티스레딩보다 메모리와 CPU 시간을 더 많이 차지한다.


  • 컨텍스트 전환: 한 프로세스가 CPU를 사용하는 동안 다른 프로세스가 CPU를 사용하도록 하기 위해 이전 프로세스의 상태(컨텍스트)를 저장하고 새 프로세스의 상태를 로드하는 작업

  • 볶음밥 조리 병렬처리


볶음밥 3인분을 동시에 준비하는 과정을 보여줍니다.

더보기

(그림 2-27에 대한 설명)

  • 볶음밥 A 재료의 세척이 완료되어 세척이 시작되면 볶음밥 B 재료를 세척하고, 볶음밥 B 재료의 세척이 시작되면 볶음밥 C 재료를 세척한다.

  • 이렇게 볶음밥을 준비하면 60분에 3인분을 만들 수 있다.

  • 주방에서 여러 개의 볶음밥을 동시에 요리하는 것을 CPU의 사양으로 비교하면 하나의 코어에 여러 개의 스레드를 사용하는 것과 같습니다.

    (참조: 스레드는 CPU 작업 단위입니다.

    처럼, 멀티스레딩은 동시에 여러 스레드를 처리하는 것을 말합니다.

    라고 불리는)

(병렬 처리 고려 사항을 공부한 후 다시 설명하십시오.)

  • A가 야채를 자르고 B가 A에서 자른 야채를 요리하는 경우 다른 재료가 모두 준비되어 있어도 A가 끝나면 B는 작업을 시작할 수 없습니다.

  • 배관 기술
    • 코어다중 스레드를 사용하는 방법
  • 수퍼스칼라 기법
    • 듀얼 코어 CPU를 사용하여 두 개의 작업을 동시에 처리하는 방식



병렬 처리 고려 사항

  • 병렬 처리는 상호 종속성이 없는 경우에만 가능합니다.

    • 각 명령은 서로 독립적이며 첫 번째 명령의 결과가 다음 명령에 영향을 미치지 않아야 합니다.

  • 병렬성은 각 단계의 시간이 일정할 때 달성됩니다.

    • 장기 실행 작업은 일반적으로 진행 속도를 늦추고 전체 작업 시간을 늘리기 때문에 단계 간의 시간 차이가 크면 동시성은 덜 효과적입니다.


  • 총 작업 시간을 몇 단계로 나눌지 신중하게 생각하는 것이 중요합니다.

    • Depth of Parallelism N은 동시에 처리할 수 있는 작업의 수를 의미합니다.

    • 이론적으로 N이 증가하면 동시에 수행할 수 있는 작업 수가 증가하여 성능이 향상됩니다.


병렬 처리에서 작업을 N개로 나누면 N을 병렬 처리의 깊이라고 합니다.

(그림 2-30)과 같이 병렬 처리 깊이가 2인 경우 작업을 두 단계로 나누어 동시에 처리할 수 있는 최대 작업 수는 2개이다.


병렬 처리 기술

  • CPU가 명령을 실행하는 과정
    1. Instruction Fetch(IF): 다음에 실행할 명령을 명령 레지스터에 저장합니다.

    2. 명령 해독(ID): 명령 해석
    3. 실행(EX): 분석 결과를 기반으로 명령어 실행
    4. Write Back(WB): 실행 결과를 메모리에 저장


더보기

  • 컴퓨터에서 동시성이 실제로 어떻게 작동하는지 살펴보겠습니다.

    CPU이 내에서 명령은 제어 장치에 의해 처리됩니다.

    컨트롤러는 명령을 수신하고 해석하고 실행한 후 결과를 저장합니다.

    계속해 반복하다
  • 그만큼전체 실행 프로세스를 스레드라고 합니다.

    스레드의 각 단계 CPU시계의 시계와 일치하며 시계당 한 번 수행됩니다.

  • CPU에서 명령 실행 방법 4단계는 일반적입니다
  • 병렬 처리 기술은 코어에서 작업을 분할하여 병렬로 처리하는 것으로 구성됩니다.

    배관 기술여러 코어를 사용하여 동시에 작동 수퍼스칼라 기법, VLIW 기술 다시 가지고

  • 배관 기술
    • CPU 사용률을 최대화하기 위해 명령을 중첩하는 방법


더보기

  • 하나의 코어에서 여러 스레드 사용
  • 명령을 여러 단계로 나눈 후 각 단계를 동시에 처리하도록 H/W를 독립적으로 구성합니다.

    기존 방식은 명령 처리 4단계가 모두 완료된 후 다음 명령을 실행하여 명령을 처리했지만, 파이프라인 방식에서는 명령 처리의 각 단계가 독립적으로 구성되어 각 단계에서 중단 없이 명령을 처리할 수 있습니다.

    (그림 2-32)와 같이 명령 처리 4단계에서 동시에 처리할 수 있는 최대 명령 수는 4개이다.

  • 파이프라인의 위험
    • 데이터 위험
      • 데이터 종속성으로 인한 문제
      • 데이터 A가 필요한 두 번째 명령은 이전 명령이 완료될 때까지 동시에 실행되지 않아야 합니다.

      • 데이터 위험은 파이프라인의 지시 단계를 지연시켜 해결됩니다.

    • 통제 위험
      • 프로그램 카운터 값의 급격한 변화로 인한 위험 (cf.: 프로그램 카운터는 다음에 실행할 명령의 주소를 저장합니다)
      • 첫 번째 명령이 실행되면 goto 문입니다.

        따라서 다음 문이 아닌 다른 문으로 전환하면 현재 동시에 처리되고 있는 명령이 무용지물이 됩니다.

      • 제어 위험은 분기 예측 또는 분기 지연 기술로 해결됩니다.

    • 구조적 위험
      • 다른 명령이 동일한 리소스에 액세스하려고 할 때 발생하는 문제
      • 명령어 A가 RX 레지스터를 사용하고 병렬화된 명령어 B도 RX 레지스터를 사용하면 충돌이 발생합니다.

      • 구조적 위험은 관리하기 어렵다는 것은 잘 알려져 있습니다.

  • 수퍼스칼라 기법
    • 여러 명령어가 동시에 실행되도록 파이프라인을 처리할 수 있는 여러 코어를 구성하는 방법입니다.

    • 이것의 대부분은 두 개의 코어로 구성되어 각 단계가 동시에 두 개의 명령을 실행한다는 점을 제외하면 파이프라인과 동일합니다.


더보기

  • 이 경우 동시에 실행되는 명령문의 총 수는 8개입니다.

  • 이 기술 역시 명령 의존성이 없어야 합니다.

    대부분의 최신 CPU는 수퍼 스칼라 기술을 사용합니다.

  • 슈퍼 파이프라인 기술
    • 파이프라인의 각 단계를 세분화하여 한 주기에서 여러 명령을 처리합니다.

    • 한 주기 내에서 여러 명령을 실행하면 다음 명령을 짧은 시간 내에 시작할 수 있으므로 병렬 처리가 증가합니다.


더보기

  • 파이프라인 기술을 개선한 방법
  • 파이프라인 기법은 주기당 하나의 명령어가 실행되지만, 슈퍼파이프라인 기법은 파이프라인의 각 단계를 나누어 여러 명령어를 한 주기에 처리할 수 있다.

  • 한 주기 내에서 여러 명령을 실행하면 다음 명령이 짧은 시간 내에 시작될 수 있으므로 병렬 처리가 증가합니다(슈퍼컴퓨터의 CPU에서 사용).

  • 슈퍼 파이프라인 슈퍼 스칼라 기법
    • 여러 코어에서 동시에 슈퍼파이프라인 기술을 실행하는 방법


더보기

  • 모든 병렬 처리 기술의 통합 방법
  • 슈퍼스칼라 방식이 파이프라인 방식을 여러 코어에서 동시에 수행하는 방식이라면, 슈퍼스칼라 슈퍼파이프라인 방식은 슈퍼파이프라인 방식을 여러 코어에서 동시에 수행하는 방식이다.

  • VLIW 기술(Very Long Instruction Word)
    • CPU가 병렬 처리를 지원하지 않을 때 소프트웨어에서 병렬 처리를 수행하는 방법
    • 컴파일러는 동시에 실행할 수 있는 명령문을 추출하여 하나의 명령문으로 압축하여 실행합니다.

    • 이 방법은 CPU가 병렬 처리를 지원하지 않을 때 사용하기 때문에 이전의 병렬 처리 기술에 비해 동시에 처리되는 명령의 수가 적습니다.

    • 병렬 처리는 컴파일 타임에 발생합니다.



@Advanced // 무어의 법칙과 암달의 법칙

  • 무어의 법칙
    • CPU 속도 24매 달 22배 빨라지는 이유
    • 초기 CPU에만 적용되며 지금은 적용되지 않음
  • 암달의 법칙
    • 컴퓨터 시스템의 한 부분을 개선하는 것과 시스템 전체에 미치는 영향 사이의 관계를 나타내는 법칙
    • 이 법칙에 따르면 주변기기를 개선하지 않고 CPU 속도를 2GHz에서 4GHz로 높인다고 해서 컴퓨터 성능이 2배가 되는 것은 아니다.