ETC/CS

[컴퓨터구조] Ch.1 컴퓨터 추상화와 기술 - Computer Abstractions and Technology

지과쌤 2020. 10. 21.
반응형

Classes of Computers

  1. Personal computers
    1. 다양한 소프트웨어 설치 가능, 범용 환경을 갖춤
    2. 가성비 고려대상
  2. Server computers (= cloud computing)
    1. 네트워크 기반
    2. 대용량, 성능, 안정성 고려
    3. 소규모 서버에서 빌딩 규모에 이르는 범위
  3. Supercomputers
    1. 과학 계산이나 엔지니어링 계산
    2. 성능은 가장 좋지만, 전체 컴퓨터 시장에서 작은 부분을 차지한다.
  4. Embedded computers
    1. 시스템 구성 요소로 숨겨져있음
    2. 적은 비용(전력)으로 최고의 성능을 내기 위함

Notations Used in Textbook

용량 단위

Processor Core

cpu 기능을 하는 코어 모듈을 하는 기능과 센서로서의 역할을 하는데 필요한 기능들을 하나의 칩에 넣을 수 있다는 점을 기본적으로 알고 가자.


 Understanding Program Performance

프로그램 성능은 무엇에 의해서 대략적으로 어떻게 결정이 될까?

 

  1. 알고리즘
    1. 실행 횟수 결정
  2. 프로그래밍 언어, 컴파일러, 아키텍쳐
    1. 작업당 실행되는 기계 명령어의 수 결정 - 동일한 기능일 때, 명령어의 수가 적다면 더 빠르게 실행된다.
  3. 프로세서, 메모리
    1. 프로그램을 구성하는 명령어들이 얼마나 빨리 실행되는지 결정 
  4. 입출력 시스템
    1. 얼마나 빨리 입출력 시스템이 실행될 것인가

 

Great Ideas in Computer Architecture

  1. 무어의 법칙
  2. 추상화를 통한 설계 단순화
  3. 공통적인 경우를 더 빠르게 실행
    1. 특정 병목 구간을 뚫어주는것(확장)이 성능면에서는 더 효과적
  4. 병렬성(parallelism), 파이프라인(pipelining), 예측(prediction) 을 통한 성능 고려
    1. 병렬성 : 프로그램이 독립적으로 실행될 수 있는 성질을 갖고있다면 전체적인 성능 향상
    2. 파이프라인 : 프로그램을 구성하는 명령어들을 중첩 처리하면 전체적인 속도 향상
    3. 예측 : 예측이 맞는다면 성능 효과 (대표적인 예측 : 분기예측)
  5. 메모리 계층 구조
    1. 작업을 수행하기 위해 프로세서는 캐시를 먼저 확인한다. 있다면? -> 바로 수행 / 없다면? -> 메인 메모리로 간다 / 메인 메모리에도 없다면? -> 하드디스크로 간다. (캐시메모리 - 메인 메모리 - 하드디스크) 
  6. 중복성을 통한 신뢰도 향상

Below Your Program

소프트웨어와 하드웨어

 


Levels of Program Code

High level language

  1. 우리가 어떤 일을 할건지에 대해 가장 근접한 추상화 레벨
  2. 생산성, 이식성 고려
  3. sort(), printf()

 

 

Assembly language

  1. 명령어의 표현
  2. add, sub

 

 

 

 

Machine code (object code or binary)

  1. 명령어와 데이터

 


What kinds of data do we need to manipulate?

  1. 명령
    1. 컴퓨터에서 수행되는 명령
  2. 숫자
    1. intgers, floating point, complex, rational, irrational, ...
  3. 논리
    1. 참, 거짓
  4. 문자
    1. characters, strings, ...
  5. 사진
    1. pixels, colors, shapes, ...
  6. 소리

메모리에 들어있는 내용은 단순히 0과 1의 패턴일것이다. 하지만 이 내용이 이미지를 구성하는 0과 1인지, 프로그램을 표현하는 명령어들의 binary값인지 판단을 해야한다.

 

이는 Program Counter 에 따라, 또는 프로그램상의 해석에 따라 또는 입출력 장치 해석에 따라 판단이 될 수 있을것이다.  


Components of a Computer

모든 종류의 컴퓨터는 규모와 성능이 어떤 일을 하느냐에 따라 다를 뿐, 모든 구성 요소들은 다 같다.

컴퓨터의 구성 요소

컴퓨터의 5가지 구성 요소

  • Processor - Control
  • Processor - Datapath
  • Memory
  • Input
  • Output

성능을 향상시키기 위한 방법들

  • Evaluating perfomance - 성능을 이해하고 어떻게 평가할 것인가?
  • Interface
  • Compiler

프로세서 (추후 다룰 예정)

오늘날의 프로세서
프로세서 내부


Hardware Organization of a Typical System

  • CPU
  • Main memory
  • I/O
  • Network adapters
  • Disk storage

각 부분이 어떤 역할을 어떻게 하느냐에 따라 전체 성능, 프로그램 실행 성능 등이 결정이 되고 성능을 결정하는 요소를 이해한다면 전체적으로 개선 또는 개량하기 위한 방법들을 찾을 수 있을 것이다.


Abstactions

추상화

  • 복잡성을 처리하는데 도움이 된다.
    • 하위 수준의 세부 정보를 숨긴다.
  • Instruction Set Architecture (ISA)
    • 하드웨어/소프트웨어 인터페이스 
  • Application binary interface
    • ISA 및 시스템 소프트웨어 인터페이스
  • 구현성
    • 기본 인터페이스에 대한 세부 정보 제공

Performance : Response Time and Throughput

  • Response time
    • 작업을 수행하는데 걸리는 시간 - 응답시간/반응시간
  • Throughput
    • 단위시간(unit time)당 종료된 일의 개수
      • e.g., tasks/transactions/...per hour

Relative Performance

우리가 절대적으로 걸리는 시간을 갖고 성능을 이야기를 할 수도 있고, 동일한 일을 서로다른 기계에서 실행을 시켰을 때 걸리는 시간이 서로 다를 것이다. 그런 경우 대체로 "이 기계가 저 기계보다 몇배 빠르다" 라고 이야기한다.

50% faster CPU than any other smartphone chip / source : apple keynote

그 관계는 걸리는 시간의 역수로 나타낸다.

성능 = 1/실행시간인 것이다.

"X is $n$ time faster than Y"

예시) 특정 프로그램을 실행시키는데 걸리는 시간
아이폰12 : 5s
아이폰7 : 10s

Execution Time(iphone7) / Execution Time(iphone12) = 10s / 5s = 2

따라서 아이폰12 가 아이폰7보다 2배 더 빠르다.

Measuring Execution Time

Elapsed time (경과시간)

  • 모든 요소들을 포함한 전체 응답 시간
    • 처리하는데 걸리는 시간, 입출력시간, 운영체제의 overhead, 대기시간
  • 시스템 성능을 결정

CPU time

  • 하나의 주어진 일을 처리하는데 걸린시간만 본다
    • 입출력시간과 다른 자원을 다른 job들과 공유하는것들은 포함하지 않는다. 
  • user CPU time 과 system CPU time 으로 구성된다.
  • CPU 및 시스템 성능에 따라 각각의 프로그램들은 다른 영향을 받는다
예시) 'prog.sh' 를 'time' command와 함께 실행한다

$time ./prog.sh          Real   0m8.803s
Initiating merge         User  0m0.010s
Merge completed      Sys    0m0.000s

CPU Clocking and CPU Time 

시스템을 동작시키는 타이밍을 제공하는 수단

= 시스템은 일정한 클럭에 의해 제어된다. 

첫번째 작업 시작                   두번째 작업 시작                        세번째 작업 시작     

작업 - 데이터를 주고받거나 개선하는것

 

10 + 20 이라는 동작을 한다고 했을 때, 더하고자 하는 두개의 값을 메모리에서 프로세서로 가져와야 한다.

두 값은 프로세서의 레지스터 내에 저장하게 된다. 이는 메모리로부터 데이터를 가져오는 작업(Data transfer)이다.

이런 작업은 Clock의 edge를 기준으로 이루어진다.

가져온 이후, 가산기를 이용해 더하기를 한다. 그리고 이 결과값을 레지스터 내에 저장한다. 그리고 그 저장된 결과값을 메모리로 리턴한다.

이와같은 단위작업을 하는데 있어 동작의 기준점을 Clock 이라고 한다.

 

특정 작업을 하는데 동작이 4개가 필요하다고 가정해보자.

각각의 동작의 기준점은 clock edge, 즉 clock period(주기)의 시작점이다.

만약 주기가 짧다면? 동작이 완결되는 속도가 빨라진다.

 

주기가 짧다 = 클럭 주파수가 높다.

 

위 동작에서 클럭이 1G, 2G일때 얼마만큼의 시간이 필요한지 계산해보자

1G -> 1nano x 4 = 4nanosec

2G -> 0.5nano x 4 = 2nanosec

 

따라서 특정 클럭을 필요로 하는 동작을 할 때 주파수가 높을수록 주기가 짧기 때문에 걸리는 시간이 줄어들게 된다. 

IC (Instruction Count for a program) = 프로그램을 구성하는 명령어 갯수  /  프로그램 또는 ISA, 컴파일러에 의해 결정됨

CPI (average Cycles Per Instruction) = 명령어당 필요한 클럭의 갯수 / CPU 하드웨어에 의해 결정이 된다.

 

예) 명령어 100개라 가정, 명령어당 2개의 cpu 클럭 필요, clock cycle time은 주기에 의해 결정

      CPU Time = 100 x 2 x clock cycle time


Comparing Code Segments

Sequence 1 : IC = 5

  • Clock Cycles = 2 x 1 + 1 x 2 + 2 x 3 = 10
  • Avg. CPI = 10/5 = 2.0

Sequence 2 : IC = 6

  • Clock Cycles = 4 x 1 + 1 x 2 + 1 x 3 = 9
  • Avg. CPI = 9/6 = 1.5

Performance Summary (중요)

Performance Equation

CPU Time = Instructions Program(IC, 프로그램을 구성하는 명령어의 수) x Clock cycles Instruction(CPI, 하나의 Instruction을 실행하는데 필요한 clock cycles의 수) x Seconds Clock cycle($T_c$clock cycle 당 걸리는 시간)

 

Seconds Clock cycle -> 1/clock

 

그렇다면 위 요소들은 어떤 것들에 의해 영향을 받을까?

  • 알고리즘(Algorithm) : affects IC, possibly CPI
  • FJR언어(Programming language) : affects IC, CPI
  • 컴파일러(Compiler) : affects IC, CPI
  • 명령어 집합 아키텍쳐(Instruction set architecture) : affects IC, CPI, $T_c$ 

Processor Performance

vs. VAX-11/780

 

1978년 vax-11/780의 성능은 5 MHz였다... 이후 성능 향상 폭을 확인해보자.

2005년도를 기점으로 uni processor 출시가 종료됨.


Multiprocessors

  • Multicore microprocessors(다중코어)
    • 하나의 칩(chip)에 여러개의 프로세서가 들어있다.
    • 각각의 Core들은 동시에 하나의 일을 처리하거나, 서로 다른 processor에서 여러개의 일을 동시에 처리한다.
  • 병렬 프로그래밍의 필요성
    • 명령어 수준의 병렬성과 비교해서....
      • 하드웨어가 한번에 여러개의 명령을 실행할 수 있다.
      • 프로그래머로부터 숨길 수 있다...(?)      //hidden from the programmer 
    • Hard to do
      • 성능 향상을 꾀하기 어려움.
      • 부하가 균등하게 분배되지 않는 경우, 완료 시간이 차이가 나 먼저 완료가 된 부분의 자원 낭비가 생길 수 있다. 
      • 통신 및 동기화를 최적화하기 어렵다.

SPEC and TPC

 

  • 벤치마킹 프로그램
  • Standard Performance Evaluation Corp(SPEC)
    • 링크
    • 임베디드 시스템 벤치마킹 사이트 링크
  • Transaction Processing Performance Council(TPC)
    • Define transaction processing and database benchmarks
    • 링크

 

SPEC


Summary

  • Amdahl's Law 암달의 법칙
  • Performance Equation 성능 방정식
    • cpu time 이란 하나의 프로그램이 실행되는데 걸리는 시간이다. 이는 하나의 프로그램이 명령어로 구성이 되어있는지, 각각의 명령어를 실행하는데 소요되는 평균 clock 수, 한 clock의 주기 (clock 주파수에 의해 결정됨)에 따라 달라진다. 
  • MIPS (Million Instructions Per Second)
    • 초당 처리하는 명령어의 개수 (100만개 명령어 단위) / 1MIPS = 초당 100만개의 명령어 처리
    • 컴퓨터가 처리하는것들이 단순할때는 좋았으나, 근래들어 처리하는것들이 굉장히 복잡해지면서 단순히 단위시간당 처리하는 명령어의 개수만으로는 복잡해진 어플리케이션. 즉 workload의 특성을 제대로 반영하지 못하는 한계가 있다.
  • SPEC and TPC
    • 벤치마크 프로그램

Source : Computer Organization and Design Fifth Edition

반응형

'ETC > CS' 카테고리의 다른 글

[컴퓨터구조] ch.2-3 MIPS  (0) 2020.10.25
[컴퓨터구조] ch.2-2 산술 동작  (0) 2020.10.24
[컴퓨터구조] Ch.2-1 컴퓨터 언어 - Language of the Compute  (0) 2020.10.24
Lambert's cosine Law  (0) 2020.06.08
퐁 모델 (phong model)  (0) 2020.06.07

댓글

💲 추천 글