SMT의 기본 이해 - 동시 다중 스레드

복습 과정 스레드


  • 프로세스는 실행 중인 프로그램입니다
  • 하나의 프로세스에 스토리지 공간 포함
  • 스토리지 내에서 프로세스를 유지하는 데 필요한 데이터

  • 루틴은 프로그램의 순서대로 명령을 집행하는 부분이다
  • CPU 코어를 사용하는 최소 단위
  • 프로세스에 하나 이상의 스레드

  • CPU 실행 프로세스
  • 처리된 메모리 데이터에 대해 연산
  • OS에서는 CPU가 스토리지만 볼 수 있습니다!
  • 프로세스 전용 메모리 영역 사용
  • 스레드는 공유된 메모리 영역을 사용
  • 참고 자료
    [Java] 다중 스레드 처리
    다중 스레드의 의미는 독립적으로 이동할 수 있고 같은 과정 중의 메모리 공간을 공유할 수 있다

    SMT는

  • 동시 실행 명령 수
  • Intel에서 하이퍼연결

  • 하나의 코어에 여러 개의 CPU가 있음(CPU는 일반적으로 하나의 코어)
  • CPU 구조

  • 에 아델레스 버스, 데이터 버스, CPU 버스가 탑재
  • CPU에 회로 가득 차서 회로 중 회로 수에 따라 성능이 변경됨
  • 모든 계산에는 회로(정수 연산, 부동점 연산 등)가 있다
  • CPU 내 코드에 따라 한 번에 사용할 수 있는 회로 수 결정
  • CPU의 회로가 모두 사용되지 않음

  • 자연스럽고 재미없다.
  • 각각 제어 장치 + 계산 장치이고 CPU의 제어 장치는 하나이기 때문이다.
  • 여기, 위조적으로 한 핵에 두 개의 통제부를 가지게 한다
  • 주의: 설명도!
  • 한 제어부에서 여러 개의 연산기를 사용하고 다른 제어부에서 빈 연산기를 사용한다
  • 이렇게 되면 물리적으로 하나의 핵심이라도 논리적으로 두 개로 보인다.SMT라고 합니다.
  • 단순한 2배 이상의 성능

  • 4개의 코어 8 스레드에서도 4개의 코어에 비해 성능이 빠르지만 8개의 코어에 비해 느린 등 간단한 비율이 없음
  • 초지우기 하향 스위치
  • 1코어 2스레드의 경우 2스레드에서 CPU를 사용할 수 있으므로 최적
  • 스레드 추가 구축 등 수신자=코어 측 용량이 초과되면 처리 속도가 느려지지 않음
  • 단일 스레드/다중 스레드

  • 한 과정에서 여러 개의 라인을 사용하는지 여부는 응용 방법

  • 단식홍은 가지를 나누지 않는 처리로 CPU 핵을 많이 탑재해도 의미가 없다

  • 다중 루틴은 한 프로세스에서 여러 개의 처리를 병행할 수 있다
    주의
  • 다중 스레드 중 특정한 과정에 속하는 스레드 공유 메모리 구역

  • 배타 제어 필요
  • 루틴 데이터는 부모 프로세스의 메모리 영역에 유지됩니다
  • 스레드 전환에 사용되는 가상 주소 공간의 전환이 일어나지 않습니다(TLB 플래시가 필요하지 않음)
  • 참고 자료
    [Java] 멀티스레드 처리 - 배타 제어
    처리 중에 다른 스레드가 중단되면 결과가 올바르게 반영되지 않습니다
    synchronized 블록을 통해 배타 제어

    컨텍스트 스위치


  • SMT: 한 순간에 동시에 실행되는 명령 수

  • 다중 작업: 단시간 병행 실행 프로그램 수
  • 멀티태스킹을 통한 어플리케이션의 동시 이동을 상세히 전환할 수 있음

  • CPU의 컨텍스트는 프로세스와 연관되어 있으며 프로세스에서 마지막으로 수행된 상태로 저장됩니다
  • .
  • 다음 차례가 되면 해당 상하문 정보를 바탕으로 계속 처리

  • 컨텍스트 스위치: 멀티태스킹을 수행할 때의 프로세스 전환
  • 예: 중단 처리 중 일정 간격으로 타이머가 중단되었을 때(Thread0~2 사용)
  • Thread0에서 0번째 처리가 끝난 단계에서 타이머를 사용하여 처리를 중단
  • CPU가 인터럽트로 인해 처리를 중지하고 인터럽트 프로그램의 쓰기를 건너뛰는 경우
  • 종료 후 CPU는 컨텍스트 스위치를 켜서 처리를 다음 Thread1로 옮기고 처리
  • Thread1이 끝난 후 상하문 스위치를 통해Thread2로 순서대로 반복하지 않음
  • CPU는 한 번에 하나만 처리할 수 있지만 여러 처리를 수행할 수 있는 것처럼 보입니다.

  • MMU(Memory Management Unit)는

  • 각 프로세스를 위한 전용 물리적 스토리지 영역을 확보하고 해당 물리적 영역에 액세스할 가상 주소를 준비합니다.
  • 스토리지에서 데이터를 읽고 쓸 때 하나의 스토리지 주소를 지정합니다
  • .
  • 충돌을 피하기 위해 다른 과정에 사용되지 않은 주소를 찾아야 한다
  • 프로세서 내 MMU에서 스토리지 관리 작업
  • 처리 지정 가상 주소에서 메모리 접근, MMU 가상 주소에서 물리 주소로 해결
  • TLB 플래시

  • 프로세스를 전환하려면 가상 주소/물리적 주소 매핑
  • 을 전환해야 합니다.
  • MMU 주소 확인 결과 캐시
  • 전환 프로세스를 통해 MMU 캐시를 제거해야 합니다(TLB 플래시).
  • 성능에 큰 영향을 미침
  • 좋은 웹페이지 즐겨찾기