[Chapter 1] Computer Abstractions and Technology_1

slchoi·2022년 1월 3일
0

컴퓨터구조

목록 보기
2/15
post-thumbnail

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일 경우 "XXYY보다 nn배 빠르다"라고 표현

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주차 강의 끝!!
게시글에 나와있는 사진의 출처는 강의 동영상에 나오는 사진을 캡쳐한 것 입니다.

profile
예비 백엔드 개발자

0개의 댓글