[컴퓨터 구조] Chapter 1. Computer Abstractions and Technology

조희연·2022년 1월 10일
2

Study

목록 보기
9/15
post-thumbnail

강의 주소 : 연남대 최규상 교수님 컴퓨터 구조 강의 (2015년)

Chapter 1. Computer Abstractions and Technology

1.1 Introduction


1) 컴퓨터의 발전

  • 컴퓨터 기술의 진전
    • 무어의 법칙
  • 새로운 응용 프로그램들이 실현 가능해짐
    • 자동차 내부의 컴퓨터, 스마트폰, WWW(World Wide Web), 검색 엔진 등
  • 모든 것이 컴퓨터화 되고 있음
    • IoT, 냉장고 등

2) 무어의 법칙(Moore's Law)

1965년, Intel의 공동 설립자인 Gordon Moore가 제시한 것으로, 반도체 집적회로의 성능이 2년마다 2배로 증가한다는 법칙

3) 컴퓨터의 종류

1. Personal computers(개인용 컴퓨터)

  • 일반적인 용도로 사용
  • 다양한 종류의 소프트웨어
  • 비용과 성능이 다양

2. Server Computers(서버 컴퓨터)

  • 네트워크 기반
  • 높은 수용성, 성능, 신뢰도 -> 고가, 대용량, 고성능

3. Super Computers(슈퍼 컴퓨터)

  • 복잡한 과학적, 공학적 계산에 사용
  • 초고성능이지만 초고가, 전력소모, 유지비용 등의 문제 존재
  • 제한된 곳에서 사용

4. Embedded Computers(임베디드 컴퓨터)

  • 시스템의 요소(컴포넌트)로서 구성되어 있음
  • 제한된 전력, 성능, 비용에서 돌아갈 수 있도록 요구됨
  • 스마트폰이나 테블릿도 임베디드 시스템이라고 할 수 있음

4) 컴퓨터에서 사용되는 기본 단위

5) PostPC 세대

-> 기존의 PC보다 스마트폰, 태블릿의 사용량이 증가되는 추세

PMD(Personal Mobile Device)의 사용 증가

  • 배터리 사용
  • 인터넷과 연결 가능
  • 예) 스마트폰, 전자 안경, 태블릿 등

Cloud computing

  • WSC(Warehouse Scale Computers) : 컴퓨터를 사는 것이 아닌, 제공해주는 업체에서 원하는 만큼 할당받아 사용
  • SaaS(Software as a Service) : SW는 서비스로 제공받을 수 있음
  • 기기에서의 실행과 클라우드의 실행이 나뉘어지기도 함 : 복잡한 연산 등은 클라우드(서버)에서, UI 등 필요한 부분은 클라이언트(PMD)에서 실행
  • 예) Amazon, Google의 서비스

6) Performance(성능)

1. Algorithm에서의 성능

  • 수행되는 연산(operation)의 수로 결정
  • operation의 수가 적을수록 성능이 좋음

2. 프로그래밍 언어, 컴파일러, 아키텍처에서의 성능

  • operation당 수행되는 instruction의 수
  • operation : 추상화된 개념 & instruction : 실제 CPU가 실행하는 명령어

3. 프로세서, 메모리 시스템에서의 성능

  • 명령이 얼마나 빠르게 수행되는가

4. I/O 시스템(OS 포함)에서의 성능

  • Input & Output이 얼마나 빠르게 수행되는가

1.2 Eight Great Ideas in Computer Architecture


1) Eight Great Ideas

컴퓨터 성능 향상에 지대한 공헌을 한 8가지

  1. 무어의 법칙을 위한 디자인
  2. 디자인을 간결화, 단순화하기 위해 추상적 개념을 사용
  3. 공통되는(일반적인) 부분을 빠르게 할 것
  4. parallelism을 통한 성능 향상
  5. pipelining을 통한 성능 향상
  6. prediction을 통한 성능 향상
  7. 메모리의 체계
  8. 여분(redundancy)을 통한 신뢰성(dependability) 향상 - RAID와 관련(6장)

1.3 Below Your Program


1) 컴퓨터 시스템 구성


Application SW

  • 일반적으로 사용자가 사용하는 SW
  • High-Level Language(C, C++, Java 등)로 작성되어 있음

System SW

  • 컴파일러 : HLL(High-Level Language)를 기계어로 번역
  • 운영체제 : 어플리케이션이 사용되는 서비스 제공(input/output 조절, memory/storage 관리, scheduling tasks, sharing resources)

HW

  • 프로세서, 메모리, I/O controllers

2) Levels of Program Code


High-Level Language

  • 자연어와 가장 가까운 프로그래밍 언어
  • 사람의 입장에서 쓰여지는 언어
  • 높은 생산성, 이식성

Assembly Language

  • 컴파일러가 HLL을 Assembly Language로 번역
  • 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어
  • instruction의 집합

HW representation(기계어)

  • 어셈블러가 Assembly Language를 기계어 형태의 오브젝트 코드로 번역
  • Binary digits(bits) : 0과 1의 조합
  • 명령(instruction)과 data
  • 컴퓨터는 메모리에 올라간 바이너리 코드를 CPU로 가져와 instruction 수행

1.4 Under the Covers


1) 컴퓨터 구성요소

  • 모든 종류의 컴퓨터는 같은 구성요소로 이루어져 있다.
  • Input/Ouput
    • UI devices : display, keyboard, mouse
    • Storage devices : 하드디스크, CD/DVD, flash
    • Network adapters : 다른 컴퓨터와 통신
  • PostPC 세대
    • Touchscreen : 키보드, 마우스 대체
    • LCD : 연속되는 픽셀들의 표현 집합으로 그림(움직이는) 표현

2) 프로세스 내부(CPU)

  • Datapath : CPU 안에서 데이터, 주소, 레지스터 처리 및 연산을 하는 모든 요소
  • Control : datapath 순서, memory 제어
  • Cache memory : 데이터에 빠르게 접근하기 위한 작지만 고속의 SRAM 메모리

3) Abstractions(추상화)

복잡한 문제를 단순화하여 쉽게 풀 수 있도록 하는 기법

  • low-level의 복잡성을 줄여줌
  • ISA(Instruction Set Architecture) : HW와 SW 사이의 인터페이스로 SW은 instruction으로 구성 & HW는 이것을 실행
  • Application binary interface
  • Implementation(구현)

3) 저장장치

휘발성(Volatile) 메인 메모리

  • DRAM
  • 전원이 꺼지면 명령과 데이터 손실

비휘발성(Non-volatile) 보조 메모리

  • Magnetic disk
  • Flash memory
  • Optical disk(CDROM, DVD)

4) 네트워크

  • Communicaion, resource sharing, nonlocal access
  • LAN(Local area network) : 이더넷
  • WAN(Wide area network) : 인터넷
  • Wireless network : WiFi, Bluetooth

1.5 Technologies for Building Processors and Memory


1) 기술 트렌드

시간이 지남에 따라 capacity, performance는 증가 & cost는 감소

-> DRAM의 capacity가 계속 증가하고 있다.

2) Semiconductor Technology(반도체 기술)

집적 회로를 만드는 과정

1.6 Performance


어떤 것을 기준으로 성능이 좋다고 말할 수 있는가?
어떻게 정의하냐에 따라 달라진다.

1) Response Time(응답시간) & Throughput(처리량)

Response Time
하나의 operation을 수행하는데 걸리는 시간

Throughput
단위 시간 당 얼마나 많은 일을 할 수 있는지

응답시간과 처리량은 무엇에 영향을 받는가?

  • 더욱 빠른 CPU로 교체하면? -> Response Time이 줄어들고 Throughput이 증가하게 된다.
  • CPU를 추가하면? -> Response Time은 변하지 않고 Throughput이 증가하게 된다.

-> Response Time은 Throughput에 영향을 주지만 Throughput은 Response Time에 영향을 주지 않을 수도 있다.

2) Relative Performance(상대적 성능)

  • 성능비 = 1 / 실행 시간


-> X가 Y보다 n배 더 빠르다.

예) A는 프로그램이 돌아가는데 10s, B는 15s가 걸린다고 가정.
Execution Time B / Execution Time A = 15s / 10s = 1.5
-> A는 B보다 1.5배 더 빠르다.

3) Measuring Execution Time(실행시간 측정)

1. Elapsed Time(경과 시간)

  • 모든 측면에서의 총 응답시간 : Processing, I/O, OS overhead, idle time
  • 어떤 작업의 시작부터 끝까지 총 작업시간
  • 시스템 전체의 performance를 정의하는데 사용

2. CPU Time

  • 주어진 일을 처리하는데 걸리는 시간(순수하게 CPU에서 걸리는 시간) : I/O time, other job's shares
  • user CPU time과 system CPU time으로 나눠짐
  • 프로그램마다 CPU와 시스템 성능에 대해 다르게 영향을 받음

4) CPU Clocking

일정한 속도의 클럭으로 제어되는 디지털 하드웨어의 작동

  • Clock period : duration of a clock cycle(한 클럭 사이클 기간), rising edge 후 다음 rising edge까지의 길이

  • Clock frequency(rate) : cycles per second(초당 싸이클 수)

-> CC(Clock cycles per second in MHz or GHz) = 1 / CR(Clock cycle time)

5) CPU Time

  • 성능을 향상시키려면? -> clock cycle 감소, clock rate 증가로 CPU Time을 줄이는 방법
  • HW 디자이너는 반드시 cycle 수 대비 clock rate를 조절해야 한다.

예) 컴퓨터 A : 2GHz clock, 10s CPU Time라고 가정.
컴퓨터 B를 컴퓨터 A보다 빠르게 설계하려고 할 때(6s CPU Time으로), 컴퓨터 B의 clock을 얼마나 빠르게 해야할까?(단, 컴퓨터 B의 clock cycles는 A의 1.2배)

6) Instruction Count & CPI

  • Instruction Count : 프로그램, ISA와 컴파일러 등에 의해 결정됨
  • CPI(instruction당 평균 cycle 수) : CPU HW에 의해 결정됨

-> 만약 insruction이 다르다면, CPI도 다르다.

예) 컴퓨터 A : Cycle Time = 250ps, CPI = 2.0라고 가정 & 컴퓨터 B : Cycle Time = 500ps, CPI = 1.2라고 가정할 때 동일한 ISA일 경우, 어떤 컴퓨터가 얼마나 더빠른가?

-> 컴퓨터 A가 컴퓨터 B보다 1.2배 더 빠르다.

CPI를 더 자세히

  • instruction의 종류가 다르다면, 다른 cycle의 수를 요구함

  • 가중 평균 CPI

예) 두 가지 다른 컴파일된 코드 결과를 처리하는데, 아래와 같은 다른 세 종류의 CPU의 혼합을 이용하였다.

  • 결과 1 : instruction의 총 수 = 5
    • Clock Cycles = 2 x 1 + 1 x 2 + 2 x 3 = 10
    • Avg CPI = 10 / 5 = 2.0
  • 결과 2 : instruction의 총 수 = 6
    • Clock Cycles = 4 x 1 + 1 x 2 + 1 x 3 = 9
    • Avg CPI = 9 / 6 = 1.5

-> 총 instruction의 수는 결과 2가 더 많았지만, 평균 CPI는 결과 2가 더 작았고 결과 1보다 빨리 실행될 수 있다.

7) Performance 요약

  • 알고리즘, 프로그래밍 언어, 컴파일러, ISA는 IC와 CPI에 영향을 미칠 수 있다.

8) 종합 예제

  1. 더 좋은 데이터 캐시(평균 load time이 2 cycles로 감소된)를 사용하면 장치는 얼마나 더 빨라질 수 있는가?
    -> Load의 CPI_i가 2로 줄어들면 Freq CPI_i가 0.4가 되고, 모든 instruction의 Freq CPI_i의 합은 1.6으로 줄어든다. 2.2 / 1.6 = 1.375로, 기존의 1.375배의 속도가 된다.
    -> 37.5% 향상
  2. branch prediction을 이용해 branch time에서 한 cycle을 단축하면 성능이 어떻게 되는가?
    -> Branch의 CPI_i가 1로 줄어들면 모든 instruction의 Freq * CPI_i의 합은 2로 줄어든다. 2.2 / 1.1 = 1.1로, 기존의 1.1배의 속도가 된다.
    -> 10% 향상
  3. 두 개의 ALU 명령이 동시에 실행될 수 있다면 어떻게 될 것인가?
    -> ALU의 CPI_i가 1에서 0.5로 줄어들면 ALU의 Freq CPI_i는 0.25가 되고 모든 instruction의 Freq CPI_i의 합은 1.95로 줄어든다. 2.2 / 1.95 = 1.1282로, 기존의 1.1282배의 속도가 된다.
    -> 12.82% 향상
profile
Software Engineer

0개의 댓글