본문 바로가기
Computer Science/Computer Structure

[Chapter 1] Computer Abstractions and Technology

by slchoi 2022. 4. 1.
728x90
SMALL

KOCW에 공개된 영남대 최규상 교수님 컴퓨터 구조 강의를 수강 후 정리한 내용입니다!

Chapter 1에서 배울 내용

  1. 프로그램이 어떻게 기계 언어로 변환되는지, 실제 하드웨어가 어떻게 명령을 실행시키는지
  2. 하드웨어/소프트웨어 인터페이스
  3. 성능을 어떻게 정의하고 향상시키는지
  4. 하드웨어 디자이너들어 어떻게 성능을 향상시키는지
  5. Parallel processing이 무엇인지

1.1 Introduction


1. Computer Revolution

  • 무어의 법칙에 의해 컴퓨터 기술이 급격히 발전
  • 새로운 어플리케이션이 파생 됨
    • ex) 핸드폰, 자동차, 유전자 프로젝트, WWW
  • 최근에는 모든 것이 컴퓨터화됨

2. 무어의 법칙

  • 1965년 인텔 CEO인 골든 무어가 2년마다 하나의 칩에 들어가는 트랜지스터 수는 두 배씩 증가할 것이라 예언
    • 실제론 두 배보다 더 빠르게 증가
  • 많은 트랜지스터가 들어가므로 다양한 어플리케이션 실행이 가능해짐

3. 컴퓨터의 종류

  1. Personal Computers (PC)
    • 일반적인 용도로 사용
    • 가격대 성능비에 민감
  2. Server Computers
    • 기업에서 중요한 데이터를 처리할 때 사용
    • High capacity, performance, reliability
    • PC보다 고가, 고용량, 고성능
  3. Super Computers
    • 특수한 목적을 가지고 사용하는 컴퓨터
    • 과학적인 목적, 엔지니러링 계산을 목적으로 사용
    • 아주 고가, 전력 소모가 많아 유지 비용이 많이 듦
  4. Embedded Computers
    • 큰 시스템에 컴퓨터가 하나의 컴포넌트로 구성되어 있음
    • 적은 전력소모, 저성능, 저가
    • ex) 스마트폰, 태블릿 PC

4. 기본 단위

컴퓨터의 기본 단위

5. PostPC Era

  1. Personal Mobile Device (PMD)
    • 배터리로 동작, 인터넷에 연결되어 있음
    • ex) 스마트폰, 태블릿, electronic glasses
  2. Cloud computing
    • Warehouse Scale Computers (WSC): 특정 데이터를 처리해주는 것들이 하나의 서버에서 제공
    • SaaS: 소프트웨어를 서비스로 제공받을 수 있음
    • 소프트웨어의 일부(단순한 기능)는 PMD에서 실행되고 나머지 복잡한 기능은 클라우드에서 실행
    • ex) Amazon, Google

6. Performance의 이해

  1. 알고리즘에서의 성능
    • 오퍼레이션(추상화된 개념)의 수로 정의
    • 오퍼레이션의 수가 적을수록 성능이 좋음
  2. 프로그래밍 언어, 컴파일러, 아키텍처에서의 성능
    • 오퍼레이션 당 수행되는 인스트럭션(실제 CPU가 실행하는 명령어)의 수로 정의
  3. 프로세서와 메모리 시스템에서의 성능
    • 얼마나 명령어들을 빠르게 수행할건가
    • 단위 시간당 얼마나 많은 명령어들이 수행되는가
  4. I/O 시스템에서의 성능
    • 단위 시간당 얼마나 많은 I/O operation이 수행되는가

1.2 Eight Great Ideas in Computer Architecture


1. 무어의 법칙
2. 추상화(abstraction): 복잡한 문제를 단순화하기 위해 추상화를 사용
3. 공통된 케이스를 빠르게 수행하도록 하는 것
4. parallelism을 통해 성능을 향상시키는 것
5. 파이프라인을 통해 성능을 향상시키는 것
6. prediction을 통해 성능을 향상시키는 것
7. 메모리 계층구조
8. redundancy을 통해 Dependability을 향상시키는 것: redundancy는 6장에서 배울 RAID와 관련있음

이 8가지 아이디어가 컴퓨터의 성능 향상에 크게 기여

1.3 Below Your Program


1. 컴퓨터 시스템 구성

컴퓨터 시스템 구성

1. Application software

  • 일반적인 사용자가 사용하는 소프트웨어
  • ex) MS Office

2. System software

  • 컴퓨터가 실행되는데 사용되는 아주 기본적인 소프트웨어
  • 컴파일러: HLL을 기계 언어로 변환해줌
  • OS(운영체제): 어플리케이션이 사용되는 서비스를 제공
    • input/output을 핸들링
    • 메모리와 저장공간 관리
    • 자원 공유와 Scheduling tasks

3. Hardware

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

2. 프로그램 코드의 레벨

코드 레벨

1. High-level language

  • 컴파일러는 HLL을 input으로 받아 어셈블리어로 변환

2. Assembly language

  • 기계 언어의 텍스트적인 표현
  • 사람이 이해할수 있도록 텍스트로 표현해준 것
  • 컴파일러에 의해 생성이 되고 어셈블리어를 어셈블러를 통해 바이너리 코드로 변환
    • VS 스튜디오는 컴파일러와 어셈블러가 함께 있는 것. 한 번에 실행시킬 수도 있고 컴파일러와 어셈블러를 따로 실행시킬 수도 있음

3. Hardware representation

  • 바이너리 코드 (bits): 0과 1의 조합
  • instructions과 data를 표현

1.4 Under the Covers


1. Components of a Computer

  • 많은 종류의 컴퓨터들은 같은 구성 요소를 가지고 있음
    • 데스크탑, 서버, 임베디드 시스템도 내부 구성 요소는 비슷
  • Input/Output를 포함하고 있음
    • User-interface devices: display, keyboard, mouse
    • Storage devices(저장 장치): hard disk, CD/DVD, flash
    • Network adapters

2. Inside the Processor (CPU)

  • datapath: 데이터가 연산이 되는 경로
  • control: 프로세서에 있는 다양한 컴포넌트들을 컨트롤
  • cache memory: cpu 내부의 작고 아주 빠른 SRAM으로 구성된 캐시 메모리에 자주 사용하는 데이터를 저장해 빠르게 접근할 수 있도록 함

3. Abstractions (추상화)

  • 아주 복잡한 문제를 풀 때 사용하면 효과적. 복잡한 문제를 단순화해 쉽게 풀 수 있도록 하는 기법
  • 컴퓨터 구조에서 추상화의 대표적인 예가 Instruction set architecture(ISA)
    • ISA는 하드웨어/소프트웨어 인터페이스
    • 소프트웨어는 instruction으로 구성. 하드웨어는 instruction을 실행. 소프트웨어와 하드웨어는 instruction을 통해 데이터를 주고 받음
  • Application binary interface(ABI)
    • ISA와 밀접하게 관련되어 있음
    • ISA와 시스템 소프트웨어의 인터페이스
    • 자세한 설명은 뒤에
  • Implementation: 실제로 어떻게 구현할 것인가

4. 저장공간, 네트워크

1. 저장공간

  • 휘발성 메인 메모리
    • ex) DRAM
    • 전원이 꺼지면 저장된 데이터가 사라짐
  • 비휘발성 메모리
    • magnetic disk, Flash memory(SRAM), Optical disk(CDROM, DVD)

2. 네트워크

  • Local area network(LAN): Ethernet
  • Wide area network(WAN): Internet
  • Wireless network: WIFI, Bluetooth

1.5 Technologies for Building Processors and Memory


  • 최근에는 아주 싼 가격으로 DRAM을 사용할 수 있게 됨
  • 시간이 지남에 따라 성능이 급격히 향상됨

1.6 Performance


1. Response Time and Throughput

1. Response Time

  • operation을 할 때 얼마나 걸리는가
  • 하나의 operation에 걸리는 시간

2. Throughput

  • 단위 시간당 얼마나 많은 일을 할 수 있는가
  • ex) 한 시간 동안 실행한 transactions의 수

3. 만약 기존 사용하던 CPU보다 더 빠른 CPU를 사용하려면

  • 오래된 CPU를 새 CPU로 교체했을 때 response time과 throughput에 영향을 주는가?
    • 영향을 줌. 더 빠른 CPU를 사용할 경우 response time이 줄어들고, response time이 줄어듦에 따라 단위 시간당 할 수 있는 연산의 수도 증가하므로 throughtput이 증가함
  • CPU를 추가할 경우 response time과 throughput에 영향을 주는가?
    • 하나의 코어에서 실행하는 시간은 줄어들지 않음. 즉, response time은 영향을 받지 않음. 하지만 throughput은 증가. 각각의 코어에서 서로 다른 일을 할 수 있기 때문에 단위 시간 당 한 일의 수가 많아짐.
  • 일반적으로 response time이 감소할 경우 throughput은 증가. 하지만 throughput은 response time에 영향을 주지 않을 수도 있음
  • 이제부터는 response time에 집중. 즉, 성능 측정 기준을 response time으로 함

2. Relative Performance

  • Performance = 1 / Execution Time
    • Performance와 Excution Time은 반비례 관계
    • 수식의 값이 n일 경우 "$X$는 $Y$보다 $n$배 빠르다"라고 표현

3. Excution Time 측정

1. Elapsed time (걸린 시간)

  • operation이 시작할 때부터 끝날 때까지 걸리는 시간
    • processing, I/O, OS overhead, idle time(대기 시간)을 모두 포함한 시간
  • 시스템 전체의 성능을 정의할 때 사용

2. CPU time

  • 어떤 일을 처리할 때 CPU에서 걸리는 시간
    • I/O 시간과 CPU가 다른 일을 할 때 걸리는 시간을 제외
  • user CPU time(user 레벨에서 CPU를 사용할 때 걸리는 시간)과 system CPU time(작업을 수행하기 위해 운영체제에서 걸리는 시간)으로 나눠짐
  • 프로그램에 따라 성능에 영향을 주는 요인이 다름
    • 어떤 프로그램은 CPU에 영향을 받을 수 있고, 어떤 프로그램은 I/O에 영향을 받을 수 있음

4. CPU Clocking

CPU Clocking

  • Clock period: 하나의 clock cycle 동안 걸리는 시간 (단위: ps)
  • Clock frequency(rate): 초당 몇 cycles이 존재하는가 (단위: Hz)
  • Clock rate는 Clock cycle time(Clock period)와 반비례 관계

1.6 Performance


1. CPU Time

  • 성능을 향상시키기 위해서는
    • clock cycles 수 감소
    • clock rate 증가
    • cycle 수와 clock rate는 트레이드 오프 관계

2. Instruction Count and CPI

  • Instruction Count: 프로그램, ISA, 컴파일러에 의해 결정
  • CPI: CPU 하드웨어가 어떻게 구성되어 있는지에 따라 결정
    • 각각의 다른 instructions는 서로 다른 CPI를 요구
    • 서로 다른 instructions이 섞여있을 경우 평균 CPI를 사용해야 함
    • Computer A의 Clock rate: 4GHz, Computer B의 Clock rate: 2GHz
    • Same ISA: Instruction Count의 값이 A, B가 서로 같음을 의미
    • 성능은 Excution Time에 반비례. 컴퓨터 A가 컴퓨터 B보다 1.2배 빠름을 의미

3. CPI in More Detail

  • 다른 instruction classes는 다른 cycles 수를 요구
    전체 Clock Cycles
  • 평균 가중치 CPI: 여러 개의 instruction classes을 사용할 때 사용
    • 예시
      • IC: Instrcution Count
      • Sequence 2가 Sequence 1보다 IC가 하나 더 많지만 Clock Cycles는 하나 작음. 즉, Sequence 2가 Sequence 1보다 실행 시간이 빠를 수 있음
      • 하나의 instruction을 수행하는데 걸리는 CPI가 Sequence 1의 CPI보다 짧기 때문에 Sequence 2가 Sequence 1보다 삐르게 수행 가능

4. Performance Summary

  • 알고리즘: Instruction Count, CPI에 영향을 줄 수 있음
  • 프로그램 언어: IC와 CPI에 영향을 줄 수 있음
  • 컴파일러: IC와 CPI에 영향을 줄 수 있음
  • ISA(Instructon Set Architecture): IC, CPI, Clock Cycle time에 영향을 줄 수 있음

1.7 The Power Wall


Power Wall

  • voltage(전력)을 더 이상 낮추지 못하므로 이로 인해 발생하는 열을 없앨 수 없음
  • 따라서 기존에 사용했던 성능 향상 방법을 더 이상 사용할 수 없게 됨
  • 새로운 방법인 multi-core를 사용해 성능을 향상시키고자 함

1.8 The Sea Change: The Switch to Multiprocessors


  • power(전력), instruction-level parallelism, memory latency로 인해 싱글 코어일 때보다 성능 향상 퍼센트가 낮아짐

1. Multiprocessors

  • Multicore microprocessors: 하나의 칩 안에 여러 프로세서를 넣음
  • 멀티코어의 성능 향상을 위해서는 parallel programming을 사용해야 함
    • 기존의 sequencial programming을 사용할 경우 멀티 코어에서의 성능 향상은 없음. 기존 프로그램을 parallel programming으로 바꿔야만 성능이 향상됨
    • instruction level parallelism: 하드웨어가 알아서 동시에 명령어를 수행해주는 것
    • parallel programming: 프로그래머가 하나하나 프로그램을 짜야 함
      • 하나의 일을 여러 개로 나눴을 경우 나눠진 일들이 비슷한 load를 가져야 함
      • parallel programming에서 발생하는 communication과 synchronization 문제를 줄여주어야 함
  • 멀티코어에서의 성능 향상을 위해서는 parallel programming을 사용해야하는데 parallel programming을 사용하는 것 자체가 어렵기 때문에 유니 코어(싱글 코어)에 비해 성능 향상 속도가 낮을 수 밖에 없음

2. SPEC CPU Benchmark

  • SPEC: Standard Performance Evaluation Corp
    • CPU, I/O, Web 등의 성능을 측정해주는 benchmarks를 만드는 회사
  • SPEC CPU Benchmark
    • CPU의 성능을 측정하는 benchmark
  • SPEC CPU 2006
    • 여러 개의 프로그램을 실행해 실행한 프로그램의 총 실행 시간을 더함
      • 아주 작은 I/O를 사용하므로 I/O 시간을 무시할 수 있고 CPU 성능을 측정하는데 집중
    • 기존의 표준 성능으로 잡은 reference machine과 비교해 얼마나 성능이 향상되었는지 비교 가능
    • integer 프로그램용인 CINT2006과 floating-point 프로그램용인 CFP2006으로 나눠짐

1.9 Concluding Remarks


1. Cost/performance is improving

  • 무어의 법칙에 의해 가격 대비 성능이 계속 향상되고 있음

2. Hierarchical layers of abstraction

3. Instuction set architecture

  • 컴퓨터 구조에서의 abstraction은 ISA라고 할 수 있음
  • ISA는 하드웨어와 소프트웨어의 인터페이스
  • 하드웨어와 소프트웨어가 통신하는 방식이 instruction임

4. Excution Time

  • 가장 좋은 성능 측정 방법

5. Power is a limiting factor

  • power 문제는 성능을 향상시키는데 제약이 됨
  • 이 문제는 멀티코어 방식을 사용해 해결하려고 하고 멀티 코어에서는 parallelism을 사용해야만 성능 향상이 가능

1.10 Fallacies and Pitfalls


1. Pitfall: Amdahl's Law

  • 컴퓨터의 한 부분의 성능을 향상 시키면 전체 performance의 성능 향상은 비례한다
    • T_affected: 한 부분의 향상시킨 후의 성능
    • T_unaffected: 성능을 향상시키지 않았을 때의 성능
    • improvement factor: 성능을 향상시킨 한 부분
  • 시스템의 한 컴포넌트 성능을 향상시키면 전체 시스템의 성능 향상은 그 컴포넌트가 시스템의 얼마만큼을 차지하는지의 비율에 비례한만큼만 향상됨

  • 곱하기 연산은 전체 100초 연산 중 80초를 차지. 이럴 경우 multiply performance를 향상시켜 전체 성능을 5배 향상시키고자 함. 이럴 경우 곱하기 연산의 성능은 얼만큼 향상되어야 하는가?
  • n이 무한대로 갈 경우에만 식이 성립하므로 불가능하다는 의미. 곱하기 성능 향상만으로는 전체 성능을 5배로 향상시킬 수 없다
  • 결론: 어떤 시스템의 성능을 향상시키기 위해서는 그 시스템에서 가장 많은 portion을 차지하는 컴포넌트를 가장 빠르게 만드는 것이 전체 시스템 성능을 향상시킬 수 있는 방법

2. Fallacy: Low Power at Idle

  • processor를 만들 때 load에 비례해서 전력 소모를 할 수 있도록 만들어야 함

3. Pitfall: MIPS as a Performace Metric

  • MIPS: Millions of Instructions Per Second (시간당 몇 백만개의 instructions을 실행하는가)
  • MIPS를 Performance Metric으로 사용했지만 MIPS를 Performance Metric으로 사용할 경우 오해를 불러올 수 있음
    • 컴퓨터마다 ISA가 다르기 때문
    • 명령어마다 복잡성이 다르기 때문

  • MIPS는 CPI에 의해 좌우됨. 하지만 CPI는 프로그램과 CPU에 의해 달라질 수 있음. 따라서 성능 측정 단위로 사용하기 어려움
  • 정확한 성능 측정을 위해서는 앞에 나온 SPEC CPU Benchmark를 사용하는 것이 좋음

공식 암기

  • performance = 1/Execution Time
  • CPU Time = Instruction Count X CPI X Clock Cycle Time

Chapter 1 끝!!
게시글에 나와있는 사진의 출처는 강의 동영상에 나오는 사진을 캡쳐한 것 입니다.

728x90
LIST

댓글