본문 바로가기
Computer Science/Computer Architecture & Organization

CA & CO Chapter 2 성능문제

by HaningYa 2020. 5. 2.
728x90

마이크로 프로세서 기반 시스템들의 성능을 필요로 하는 응용들

  • 영상처리
  • 3차원 렌더링
  • 음성인식
  • 화상 회의
  • 멀티미디어 저작
  • 파일들에 대한 음성 및 비디오 주석
  • 시뮬레이션 모델링

마이크로 프로세서의 속도

프로세서 속도 향상을 위한 기술

  • 파이프라이닝 : 프로세서는 여러개의 명령어들을 동시에 서로 다른 단계를 수행함 으로 써 다수의 명령어들을 동시에 실행 할 수 있다.프로세서는 동시에 처리하는 파이프의 모든 단계들을 가진 개념적 파이프 속으로 데이터나 명령어들을 이동시킴으로써 연산을 중첩시킨다.
  • 분기 예측 : 프로세서는 소프트웨어를 미리 살펴보아 어떤 분기들 혹은 명령어 그룹들이 다음에 처리될 것인 지를 예측한다. 필요한 명령어들을 미리 인출하여 버퍼에 저장해둠으로써 프로세서가 계속 일을 할 수 있게 한다. 잠재적으로 프로세서가 수행할 일의 양을 증가시켜준다.
  • 슈퍼스칼라 실행 : 매 프로세서 클록 사이클 마다 한 개 이상의 명령어를 발송하는 능력으로 여러개의 병렬 파이프라인이 사용된다.
  • 데이터 흐름 분석 : 프로세서는 명령어들 사이의 결과값 혹은 데이터 의존성을 분석함 으로써 명령어들의 최적 실행 스케줄을 찾아낸다. 프로그램들은 순서에 상관없이 준비되는 즉시 실행되도록 스케줄 된다. 즉 불필요한 지연이 방지된다.
  • 추정 실행 : 분기 예측과 데이터 흐름 분석을 이용하는 프로세서들은 명령어들이 프로그램 실행 과정에서 실제 나타나기 전에 미리 명령어를 실행한다. 결과값들은 임시장소에 저장되고 프로세서는 필요할 것으로 예측되는 명령어들을 실행 함으로써 하드웨어를 가능한 바쁘게 할 수 있다.

성능 불균형의 이유

  • 프로세서 속도 증가
  • 메모리 용량 증가
  • 주기억장치와 프로세서 간의 데이터가 전송될 수 있는 속도는 뒤떨어짐
  • 프로세서와 주기억장치 간의 인터페이스가 느려 프로세서는 대기 상태에 들어가고 processing time을 낭비하게 된다.

성능 요소

  • 명령어 세트의 설계(Instruction set architecture),
  • 컴파일러 기술(Compiler technology)
  • 프로세서 구현(Processor implementation)
  • 캐시 및 기억장치 계층(Cache and memory hierarchy))

성능 불균형 해결방법

프로세서와 기억장치 간의 성능의 균형을 맞추는 방법

  • DRAM들을 더 넓게 함으로써, 넓은 버스 데이터 통로들을 사용함으로써 한 번에 인출할 수 있는 비트 수를 증가시킨다.
  • DRAM 칩 상에 캐시나 다른 버퍼링 방식을 포함 시킴으로써 DRAM 인터페이스를 더 효율적으로 바꾼다.
  • 프로세서와 주 기적장치 사이에 복잡하고 효율적인 캐시 조직을 배치함으로써 기억장치 엑세스의 빈도를 줄인다.
  • 프로세서와 기억장치 사이에 더 빠른 속도의 버스들을 사용하거나 계층적 버스들을 사용하여 데이터 흐름을 조직화함으로써 상호연결 대역폭을 증가시킨다.

칩 조직과 구조의 개선

프로세서의 속도를 높일 수 있는 방법 세가지

  • 프로세서의 하드웨어 속도를 증가시킨다.
    • 칩 상의 논리 게이트들의 크기를 줄여서 더 많은 게이트를 더욱 조밀하게 넣는다.
    • 클록의 속도를 높인다.
    • 게이트들 간의 거리가 가까워 지면 신호들의 전파시간이 줄어서 프로세서 속도가 높아진다.
  • 프로세서와 주기억장치 사이에 위치하는 캐시의 크기와 속도를 증가시킨다.
    • 프로세서의 한 영역을 캐시로 할애한다.
  • 명령어 실행 속도를 높일 수 있도록 프로세서 조직과 주고를 바꾼다.(병렬성을 이용한다.

클록 속도의 증가와 회로 밀도의 증가로 인한 문제점

  • 전력 : 전력 밀도가 높아셔 고밀도 고속 칩에서 발생되는 열을 처리하는 어려움도 심각한 설계 이슈가 된다.
  • RC 지연 : 칩상에서 트렌지스터 간에 흐르는 전자들은 연결해 주는 금속선들의 저항과 커패시턴스에 의해 제한된다.
    • RC곱의 값이 증가함에 따라 지연도 길어진다.
    • 칩상의 부품들의 크기기 작아질 수록 연결선들은 더 가늘어져 저항이 증가한다.
    • 선들이 가까워 지면 커패시턴스도 증가한다.
  • 기억장치 지연 : 기억장치 엑세스 속도 지연과 전송속도(처리율)은 프로세서 속도보다 떨어진다.

해결책 : 조직 및 구조적 방법을 사용한다.

해결책 1. 캐시 용량을 늘린다.

  • 프로세서와 주 기억장치 사이에 두 레벨 혹은 세 레벨의 캐시들이 설치된다.
  • 칩 밀도가 높아질 수록 더 많은 캐시들이 장착되 캐시 엑세스가 빨라진다.

해결책 2. 프로세서 내의 명령어 실행 회로를 복잡하게 구성한다.

  • 프로세서 내부에서 명령어들을 병령 실행 할 수 있다.
  • 파이프라이닝, 슈퍼스칼라 : 서로 의존관계가 없는 명령어들이 병렬로 실행되게 한다.

그치만 Processor가 내부적으로 복잡할 수록 노력에 비해서 성능이 좋아지지 않았다.

--> 멀티코어 칩 개발


멀티코어, MIC, GPGPU

  • 멀티코어 :  큰 용량의 캐시를 공유하는 여러 프로세서들을 같은 칩에 삽입
  • 클록 속도를 높이지 않고도 성능을 향상시킨다.
  • 프로세서 내부에서 성능 향상은 복잡도 증가의 제곱근에 비례
    프로세서 수를 두배로 늘리면 성능도 같은 배수에 비례
  • 캐시가 커짐에 따라 성능을 위해 칩 내부에 레벨2,3의 캐시 만들어졌다.
    (레벨1캐시는 각 프로세서 전용, 레벨2 캐시는 프로세서간에 공유-->각 코어 전용으로 만드는 추세)
  • MIC : Many Integrated core ) 다수 집적 코어 개발 : 칩당 코어수 50개 이상
  • 다중 범용 프로세서와 GPU(Graphic processing unit) : 여러 세트의 데이터에 대한 병렬 연산을 수행, 반복 계산을 필요로 하는 다양한 응용들을 위한 벡터 프로세서로의 사용이 증가한다.
  • GPGPU : general-purpose computing on GPU : 광범위한 분야의 응용들이 GPU의 지원을 받는 컴퓨터

프로세서 성능 평가

중요한 파라미터

  • Performance
  • Cost
  • Size
  • Security
  • Reliability
  • Power consumption

1) 클럭 속도

  • 프로세서 속도는 클록에 의해 발생되는 펄스 주파수에 의해 결정된다.
  • pulse rate : 클록속도
  • 클록 사이클, 클록 틱 : 클록의 펄스
  • 펄스간의 시간 : 사이클 타임
  • clock rate : 프로세서의 물리적 레이아웃에 따라 적절히 정해짐
  • 대부분의 명령어들은 실행을 종료하기 위해 여러 클록 사이클이 요구됨
  • 명령어들은 fetch, decode, load, store, arithmetic, logical 한 이상적인 단계들을 포함
  • 서로 다른 프로세서에서의 클록 속도를 직접 비교하는 것이 성능에 대한 모든 것은 아니다.

2) 명령어 실행율

  • MIPS : Millions of instructions per second : 명령어 초당 실행 (부정확한 기준)
  • MFLOPS : Millions of floating point instructions per second : 실수 연산자 초당 실행
  • instruction set, compiler design, processor implemetation, cache & memory hierarchy 에 따라 달라짐
  • 프로세서의 성능을 평가하는데 적절하지 못하다.

SPEC Rate Metric

  • SPEC : System Performance Evaluation Corporation
  • Rate metric : 비율척도, 컴퓨터가 어떤 시간 내에 몇개의 작업들을 완료하는지 측정하는 것
  • 벤치마크 : 컴파일러가 설치된 어떤 컴퓨터에서든 컴파일 되고 실행될수 있는 고급 언어로 작성된 프로그램

비율 척도 공식

  • N : 복사본의 수 : 프로세서들의 수 혹은 테스트 시스템 상에서 동시에 실행되는 스레드들의 수
  • 각 테스트 프로그램의 비율은 3회 실행의 중간값을 구하여 결정
  • 각 실행은 테스트 시스템에서 동시에 수행하는 프로그램의 N개의 복사본으로 구성
  • 실행시간은 모든 복사본이 종료되는데 걸리는 시간
  • Trefi : 벤치마크 프로그램 i가 참조 시스템 상에서 실행되는 데 걸리는 시간
  • Tsuti : 벤치마크 프로그램 ir가 테스트될 시스템 상에서 실행되는 데 걸리는 시간 (비율은 빠른기계에 대해 높아짐)
  • 듀얼 코어의 경우 10*10/25 = 4배 빠르다

벤치마크의 특징

  • 고급 언어로 작성, 다른 기계들에서 호환성을 가질 수 있도록 한다.
  • 시스템 프로그래밍, 수치적 프로그래밍 혹은 상업용 프로그래밍과 같이 특정 종류의 프로그래밍 유형의 대표적인 것이어야 한다.
  • 쉽게 측정될 수 있어야 한다.
  • 널리 보급될 수 있어야 한다.

 


암달의 법칙

  • 단일 프로세서에 비교하여 다수의 프로세서들을 사용한 프로그램의 잠재적 속도 향상에 대해 다룬다.

암달의 법칙

  • Fraction : 프로세서가 많을 수록 빨리 끝나는 F%의 코드
  • 1 - Fraction : 멀티코어를 지원안해서 속도가 같은 코드
  • N : 프로세서의 갯수
  • N이 무한대일 경우 1/(1-fracion) 이 속도 증가량의 한계치
  • 예시) 병렬처리 될 수 있는 코드가 90퍼센트일 경우 0.1/1 = 10배의 증가량이 최대치이다.

 

2.1 클록 속도와 논리 밀도가 증가할 때 발생하는 장애 요인들을 열거하고 간략하게 설명하라.

  • 전력(Power) : 칩 내부 회의 밀도와 클록 속도가 높아짐에 따라, 전력 밀도(Wats/cm2)도 높아진다.
  • RC delay : 트랜지스터들 간에 흐르는 전자들의 속도는 그들을 연결해주는 금속선들의 저항과 커패시턴스에 의해 제한되고 칩 상의 부품들이 작아질수록 저항이 증가하고 커패시턴스도 증가한다.
  • 기억장치 지연(memory latency)과 처리율(throughput) : 기억장치 액세스 속도(지연)와 전송속도(처리율)는 프로세서 속도보다 떨어진다.

2.2 캐시 사용의 이점들은 무엇인가?

  • 캐시 메모리는 메모리 계층 구조에서 가장 빠른 소자이며, 처리속도가 거의 CPU 속도와 비슷할 정도 속도를 가지고 있다. 캐시메모리를 사용하면 주 기억장치를 접근하는 횟수가 줄어들어 컴퓨터 처리속도가 향상된다.

 

2.3 프로세서 속도를 높이는 데 사용되는 몇 가지 방법들을 간략하게 설명하라.

  • 프로세서의 하드웨어 속도를 증가
  • 캐시의 크기와 속도를 증가
  • 실행 속도를 높일 수 있도록 프로세서 조직과 구조를 바꿈 (병렬성을 이용)

2.4 암달의 법칙의 특징을 간략하게 설명하라.

  • 전체 프로그램 코드 가 f%의 병렬 실행이 가능한 코드를  가지고 있을 경우 단일 프로세서에서 처리하는 경우의 실행시간을 T라고 하고 프로세서의 갯수를 N개라 하면 병렬 프로세서를 사용하여 모든 프로그램의 병렬 부분을 병렬처리하는 경우 얻을 수 있는 속도 향상 은 1 / ((1-f) + f/N) 이다.
  • f가 작을 때는 병렬 프로세서를 사용하는 효과가 매우 적다.
  • N이 무한대에 접근함에 따라 속도 향상은 1 / (1 - f)으로 상한선이 정해진다.
  • 결국 코어의 수만 늘리는 것도 한계가 있음을 의미한다.
  • 어떤 시스템을 개선하여 전체 작업 중 P%의 부분에서 S배의 성능이 향상되었을 때 1/((1-P)+P/S) 만큼의 성능 향상이 있다.

2.5 클록 율(clock rate)을 정의하라. 이것은 클록 속도와 유사한가?

  • 클록율 (=클록 속도) : 1초당 프로세서가 받아들이는 펄스의 수 

2.6 MIPS와 FLOPS를 정의하라.

  • MIPS(millions of instructions per second : 초당 백만 명령어들) : Ic / (T * 10^6)
  • MFLOPS(millions of floating-point operations per second : 초당 백만 부동소수점 연산) : (한 프로그램에서 수행되는 부동소수점 연산들의 수 ) / (수행시간 x 10^6) 

2.9 SPEC 벤치마크란 무엇인가?

  • 일반적으로 받아들일만한 컴퓨터 성능 측정의 필요성으로 인해 만들어진 표준하된 벤치마크 모음집. 

2.10 SPEC 벤치마크들을 이용하여 시스템의 성능을 평가하는 동안에, 각 프로그램을 세 번씩 컴파일과 실행을 하는 이유는 무엇인가?

  • 세번 실행한 평균값을 사용하는 이유는 디스크 액세스 시간 편차, 실행 때마다 생기는 OS 커널 실행 편차와 같은 실행 시간에서의 편차를 고려하기 위해서이다.

 

 

CA & CO Chapter 3 최상위에서 본 컴퓨터의 기능 및 상호 연결

컴퓨터 구성요소 컴퓨터 구성요소를 이해하려면 각 요소들의 외부적 동작들(다른요소들과 교환하는 데이터와 제어 신호들에 대한 설명) 상호연결 조직의 사용을 관리하기 위해 필요한 상호 연결 조직과 제어에 대..

haningya.tistory.com

 

728x90

댓글