일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 백준 전쟁-전투
- 백준 전쟁 파이썬
- 금고털이 파이썬
- 백준 등수매기기
- 도커 컨테이너
- 피아노체조 파이썬
- 백준 피아노체조
- 소프티어 장애물인식프로그램
- 파이썬 평범한배낭
- express mongodb
- 소프티어 지도자동구축
- 백준알파벳파이썬
- 백준 점프
- 백준 바이러스
- 파이썬데이터분석라이브러리
- 백준 점프 파이썬
- MongoDB
- CRUD
- 백준 예산
- jenkins
- 백준 평범한배낭
- 1987파이썬
- express
- 프로그래머스
- 장애물인식프로그램 파이썬
- 백준
- 등수매기기 파이썬
- 백준 A->B
- 지도자동구축 파이썬
- MySQL완전삭제
- Today
- Total
바위 뚫는중
컴퓨터 구조 및 설계 6판 내용정리 Chapter1. 컴퓨터 추상화 및 관련기술( 4p~72p) 본문
수업에서 다룬 내용 위주로 정리
컴퓨터 구조 및 설계 6판 Chapter1. 컴퓨터 추상화 및 관련기술 (4p~72p)
목차
폰노이만 구조
하버드 구조
성능의 이해
프로그램 밑의 세계
응답시간과 처리량
CPU Cloking, CPU Time
암달의 법칙
폰 노이만 구조
- CPU, 메모리, 프로그램 세가지 구성요소로 이루어진 “stored program (저장된 프로그램)” 구조.
- 프로그램 내장 방식으로 불림
폰 노이만 구조의 한계는 명령어와 데이터 이동에 오직 single channel (= 하나의 버스)을 사용한다는 것이다 ⇒ 병목현상(bottle neck) 발생
이를 극복하기 위해 나온것이 바로 하버드 구조이다.
하버드 구조
명령용 버스와 데이터용 버스로 물리적으로 분리한 컴퓨터 아키텍처
이 구조에서는 명령을 메모리로 부터 읽고, 데이터를 메모리로 부터 읽는 것이 동시에 가능함
성능의 이해 Understaning Performance
- 알고리즘 : 실행되는 작업의 수를 결정함
- 프로그래밍 언어, 컴파일러, 아키텍처 : 작업 당 실행되는 기계 명령의 수를 결정
- ex) c/c++ → compiler → assembly → machine language
- ex) java → compiler → byteode → JVM → machine language
- ex) a = 5, b = 3, a + b = n 일 경우, compiler는 이 3문장을 1문장으로 convert하여 n= 8 이라는 결과를 냄
- 프로세서 및 메모리 시스템 : 명령 실행 속도 결정
- ex) Edge Triggering 에지 트리거, 클럭의 값이 변하는 그 순간에만 동작하는 방식
- 입출력 시스템 (OS 포함) : 입출력 작업이 실행되는 속도를 결정
프로그램 밑의 세계
하드웨어와 소프트웨어를 계층으로 단순화하면 다음과 같다.
Application software : 상위 수준 언어로 쓰여있음
System software : Compiler - 상위 수준 언어를 기계 언어로 변환, Operating system - service code (입출력 작업의 처리, 보조기억장치 및 메모리 할당, 컴퓨터를 동시에 사용하는 여러 응용들 간의 컴퓨터 공유 방법 제공)
Hardware: 프로세서, 메모리, 입출력 기기등
프로그램 코드의 단계
High-level language → Assembly language → Hardware representation
상위 수준 언어 : 생산성, 이식성 제공, 프로그램 도메인과 가까운 묘사
컴파일러 : 상위 수준 언어를 어셈블리 언어로 번역하는 프로그램
어셈블리 언어 : 기계 명령어를 기호 형태로 표현한 것
어셈블러 : 기호가 된 어셈블리 언어를 이진수 프로그램으로 번역하는 프로그램
기계어 : 기계 명령어의 이진 표현, 명령어와 데이터로 인코딩됨
응답시간과 처리량 Response Time and Throughput
Response Time 응답시간 : 일을 하는데 얼마나 걸리는지
Throughput (or bandwidth) 처리량 : 단위 시간에 처리할 수 있는 정보의 양
ex) 프로세서를 더 빠른 버전으로 교체하면? 응답시간은 낮아짐
프로세서를 더 많이 추가한다면? 처리량은 늘어남
상대 성능
Performance = 1 / Execution time 성능을 이렇게 정의해보자.
X 는 Y 보다 n 배 빠르다.
Performance x / Performance y = Execution time y / Execution time x = n
ex) 프로그램을 동작할 때 A에 10초, B에 15초가 걸릴때?
Execution time B / Execution time x = 1.5
A가 B보다 1.5배 빠름
성능의 측정
Elapsed time (경과시간)
모든 측면에서의 전체 응답 시간을 뜻함 (Processing, I/O, OS overhead, idle time)
시스템 성능을 정의함
CPU time
주어진 특정 작업의 실행을 위해 CPU가 소비한 실제 시간
user CPU time + system CPU time
- 사용자 CPU 시간 : 프로그램 자체에 소비된 CPU 시간
- 시스템 CPU 시간 : 프로그램의 수행을 위해서 운영체제가 소비한 CPU 시간
- 운영체제 간의 기능 차이 때문에 둘을 정확히 나누는 것은 어려움
CPU Cloking, CPU Time
거의 모든 컴퓨터는 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용하여 만들어짐
클럭의 시간 간격 : 클럭 사이클 Clock cycle
한 클럭 사이클에 걸리는 시간 : 클럭 주기 Clock period (250 picosecond(250ps))
초당 클럭 사이클 : 클럭 주파수 (속도) Clock frequency(rate)(4GHz 등으로 표시)
CPU Time = 프로그램의 CPU 실행시간
CPU Time = CPU Clock Cycles X Clock Cycle Time = CPU Clock Cycles / Clock Rate
성능이 향상되는 조건
- 클럭 사이클의 수 감소
- 클럭 속도 증가
Example
컴퓨터 A - 2 GHz clock, 10s CPU time
컴퓨터 B - 6s CPU time을 설계할 예정, A보다 1.2배 많은 Clock Cycle 필요함
이때, B의 Clock rate는 어떻게 되어야하는지?
Clock Rate_A = 2 GHz, CPU time _A = 10s
위 값을 토대로 CPU Clock Cycles_A = 20 X 10^9 을 구할 수 있고,
Clock Rate_B = CPU Clock Cycle_B / CPU time_B = 1.2 X 20 X 10^9 / 6s = 4GHz
⇒ B의 클럭 속도는 4GHz
명령어 성능 Instruction Count and CPI
Clock Cycles = Instruction Count(IC) X Cycle per Instruction(CPI)
CPU Time = IC X CPI X Clock Cycle Time = IC X CPI / Clock Rate
이때, program 이 같으면 Instruction count도 같음
위의 공식을 이해하고 이용하여 성능을 구할 줄 아는 것이 중요함
CPI = 명령어 당 클럭 사이클 수 (프로그램 전체 혹은 일부에서 명령어 하나 실행에 필요한 평균 클럭 사이클 수)
Example
컴퓨터 A - Cycle Time = 250ps, CPI = 2.0
컴퓨터 B - Cycle Time = 500ps, CPI = 1.2
same ISA 일 때, 둘중 누가 몇배 더 빠른지 구해보자.
CPU Time = IC * CPI * Clock Cycle Time 공식을 쓰면
A = 500ps, B = 600ps이고, A가 1.2 배 더 빠른 것을 구할 수 있음!
조금 더 응용해보자
Example
Class A B C
CPI for class | 1 | 2 | 3 |
IC in sequence 1 | 2 | 1 | 2 |
IC in sequence 2 | 4 | 1 | 1 |
A,B,C의 명령어를 사용하는 각 시퀀스(다른 기계)의 평균 CPI를 구해보자
sequence 1는 IC = 2 + 1 + 2 = 5
- clock cycles = 2 * 1 + 1 * 2 + 3 * 2 = 10
- 평균 CPI = 10 / 5 = 2. 0
sequence 2는 IC 6
- clock cycles = 9
- 평균 CPI = 9 / 6 = 1.5
성능 요약
암달의 법칙 Amdahl의 법칙
어떤 개선책으로 부터 얻을 수 있는 성능의 증가는 개선된 부분이 얼마나 많이 사용되느냐에 따라 제한된다는 법칙
Example
어떤 컴퓨터에서 100초 걸리는 프로그램이 있는데, 그 중 80초가 곱하기에 소요되는 시간이라고 가정하자. 이 프로그램이 5배 빠르게 실행되게 하려면 곰셈 속도를 얼마나 개선해야 할까?? 개선 후의 프로그램 실행시간은 Amdahl의 법칙을 대입하여 구할 수 있음.
개선에 의해 영향을 받는 실행시간 : 80초, 영향 안받는 시간 : 20초
개선 후 실행시간 = 80 / n + 20 이 되고, 5배의 성능 개선을 위해서는 20초가 되어야 하는데,
20 = 80/n + 20 → 0 = 80 / n 이 되므로, 안됨.
즉 곱셈이 전체 부하의 80%인 경우 아무리 빠르게 해도 성능을 5배 증가시킬 수 없음.
→ 자주 생기는 일을 빠르게