바위 뚫는중

컴퓨터 구조 및 설계 6판 내용정리 Chapter1. 컴퓨터 추상화 및 관련기술( 4p~72p) 본문

카테고리 없음

컴퓨터 구조 및 설계 6판 내용정리 Chapter1. 컴퓨터 추상화 및 관련기술( 4p~72p)

devran 2023. 4. 15. 18:13
반응형

수업에서 다룬 내용 위주로 정리

컴퓨터 구조 및 설계 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배 증가시킬 수 없음.

자주 생기는 일을 빠르게

 

반응형