Computer Science/Computer System

Ch1. Computer Abstractions and Technology

dododoo 2020. 2. 7. 23:07

What You Will Learn

  • 어떻게 프로그램이 기계어로 번역되는지 (또한 하드웨어가 어떻게 기계어를 실행하는지)
  • 하드웨어와 소프트웨어의 인터페이스
  • 프로그램의 성능은 어떻게 측정하는지 (또한 어떻게 성능을 향상시킬 수 있는지)
  • 하드웨어 디자이너는 어떻게 성능을 향상시키는지
  • 병렬 처리는 무엇인지

Understanding Performance

  • 알고리즘: 연산의 수를 결정
  • 프로그래밍 언어, 컴파일러, 아키텍처: 연산 당 machine instruction의 개수를 결정
  • 프로세서와 메모리 시스템: instruction의 수행 속도를 결정
  • I/O 시스템: I/O 연산의 수행 속도를 결정
    (일반적으로 I/O 호출은 Appliaction -> (OS) -> HW)

Inside the Processor (CPU)

  • Datapath: 데이터에 연산을 수행
  • Control: 연산이나 메모리 접근 등을 제어 (sequences datapath, memory, ...)
  • Cache Memory: 데이터에 직접 접근하기 위한 SRAM 메모리

AMD Barcelona


https://www.realworldtech.com/barcelona/8/

Measuring Execution Time

CPU Time

CPU Time = IC * CPI * CCT

  • Instruction Count
    • 프로그램, ISA, 컴파일러에 의해 결정
    • Static IC: 코드 크기
    • Dynamic IC: 실행해봐야 알 수 있음
  • Cycles Per Instruction: 공식에서는 Average 값
    • CPU 하드웨어에 의해 결정
    • Average CPI는 instruction가 어떻게 섞이느냐(mix)에 따라 달라진다.

Power Trends

  • 하드웨어 디자이너는 Clock을 빠르게 하면서 연산 속도를 높이려고 노력함
  • 성능은 집적도에 비례함

    Power = V * I + 0.5 * C * V^2 * f
    (static: V * I, dynamic: 0.5 * C * V^2 * f)

  • 온도는 파워(전력)에 비례함
  • Power wall: 더 이상 전압 낮출수 없음, 더 이상 열을 제거할 수 없음
  • 더 이상 Clock을 빠르게 하기 힘들어짐
  • 이제 어떻게 성능을 올릴 수 있을까?

Multiprocessor

  • CPU 1개의 성능을 올리기 힘들다면, 여러 코어를 사용하자
  • 이는 명시적인 병렬 프로그래밍을 필요로 함
  • ILP(Instruction Level Parallelism)과 비교하면, ILP는 하드웨어가 한 번에 여러 Instruction을 수행하는 것 (프로그래머에게 숨겨진 부분)
  • 그런데 명시적 병렬 프로그래밍은 어렵다

Amdahl's Law

  • 일반적인 케이스를 빠르게 해야 함

MIPS

  • 초당 몇 백만개의 Instruction을 수행하는가
  • NOTE: ISA가 어떤지, Instruction의 복잡도는 어떤지는 말해주지 않으므로 주의해야 하는 metric임

Summary

  • 실행 시간이 가장 좋은 성능 측정법임
  • 파워는 제한 요인(limiting factor): 따라서 성능 향상을 위해 parallelism을 고려

'Computer Science > Computer System' 카테고리의 다른 글

Instruction Set Architecture(ISA)  (0) 2020.02.06