Classes of Computers
- Personal computers
- 다양한 소프트웨어 설치 가능, 범용 환경을 갖춤
- 가성비 고려대상
- Server computers (= cloud computing)
- 네트워크 기반
- 대용량, 성능, 안정성 고려
- 소규모 서버에서 빌딩 규모에 이르는 범위
- Supercomputers
- 과학 계산이나 엔지니어링 계산
- 성능은 가장 좋지만, 전체 컴퓨터 시장에서 작은 부분을 차지한다.
- Embedded computers
- 시스템 구성 요소로 숨겨져있음
- 적은 비용(전력)으로 최고의 성능을 내기 위함
Notations Used in Textbook
Processor Core
cpu 기능을 하는 코어 모듈을 하는 기능과 센서로서의 역할을 하는데 필요한 기능들을 하나의 칩에 넣을 수 있다는 점을 기본적으로 알고 가자.
Understanding Program Performance
프로그램 성능은 무엇에 의해서 대략적으로 어떻게 결정이 될까?
- 알고리즘
- 실행 횟수 결정
- 프로그래밍 언어, 컴파일러, 아키텍쳐
- 작업당 실행되는 기계 명령어의 수 결정 - 동일한 기능일 때, 명령어의 수가 적다면 더 빠르게 실행된다.
- 프로세서, 메모리
- 프로그램을 구성하는 명령어들이 얼마나 빨리 실행되는지 결정
- 입출력 시스템
- 얼마나 빨리 입출력 시스템이 실행될 것인가
Great Ideas in Computer Architecture
- 무어의 법칙
- 추상화를 통한 설계 단순화
- 공통적인 경우를 더 빠르게 실행
- 특정 병목 구간을 뚫어주는것(확장)이 성능면에서는 더 효과적
- 병렬성(parallelism), 파이프라인(pipelining), 예측(prediction) 을 통한 성능 고려
- 병렬성 : 프로그램이 독립적으로 실행될 수 있는 성질을 갖고있다면 전체적인 성능 향상
- 파이프라인 : 프로그램을 구성하는 명령어들을 중첩 처리하면 전체적인 속도 향상
- 예측 : 예측이 맞는다면 성능 효과 (대표적인 예측 : 분기예측)
- 메모리 계층 구조
- 작업을 수행하기 위해 프로세서는 캐시를 먼저 확인한다. 있다면? -> 바로 수행 / 없다면? -> 메인 메모리로 간다 / 메인 메모리에도 없다면? -> 하드디스크로 간다. (캐시메모리 - 메인 메모리 - 하드디스크)
- 중복성을 통한 신뢰도 향상
Below Your Program
Levels of Program Code
High level language
- 우리가 어떤 일을 할건지에 대해 가장 근접한 추상화 레벨
- 생산성, 이식성 고려
- sort(), printf()
Assembly language
- 명령어의 표현
- add, sub
Machine code (object code or binary)
- 명령어와 데이터
What kinds of data do we need to manipulate?
- 명령
- 컴퓨터에서 수행되는 명령
- 숫자
- intgers, floating point, complex, rational, irrational, ...
- 논리
- 참, 거짓
- 문자
- characters, strings, ...
- 사진
- pixels, colors, shapes, ...
- 소리
메모리에 들어있는 내용은 단순히 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
- 단위시간(unit time)당 종료된 일의 개수
Relative Performance
우리가 절대적으로 걸리는 시간을 갖고 성능을 이야기를 할 수도 있고, 동일한 일을 서로다른 기계에서 실행을 시켰을 때 걸리는 시간이 서로 다를 것이다. 그런 경우 대체로 "이 기계가 저 기계보다 몇배 빠르다" 라고 이야기한다.
그 관계는 걸리는 시간의 역수로 나타낸다.
즉 성능 = 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
- 링크
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 |
댓글