overview

정태규·2022년 9월 27일
1

컴퓨터구조

목록 보기
1/9

컴퓨터의 구성

  1. 어플리케이션 소프트웨어
    • high-level language
  2. 시스템 소프트웨어
    • compiler
      -HLL(high-level language) code를 기계어로 변환
    • Operating System(OS)
      -사용자 프로그램과 하드웨어 간의 인터페이스 역할
      -각종 서비스와 감독 기능
      -기본적 입출력 작업의 처리
      -보조기억장치 및 메모리 할당
      -컴퓨터를 동시에 사용하는 여러 응용들 간의 컴퓨터 공유 방법 제공
  3. 하드웨어
    -processor, memory, I/O controllers(Input/output)

프로그램 언어 레벨

  • high-level language

    • c, c++,자바와 같이 단어와 수식으로 구성되는 이식성 있는 언어.
      컴파일러가 어셈블리어로 번역할 수 있다.
  • Assembly language

    • 기계 명령어를 기호로 표현한것
    • 어셈블러가 기계어로 번역해준다.
  • Hardware representation

    • 기계 명령어의 이진표현

컴퓨터의 구성요소

  • 모든 컴퓨터의 구성요소
    • 데스크탑,서버,임베디드
  • I/O 요소
    • User-interface 장치
      • Display, keyboard, mouse
    • 저장장치
      • Hard disk, CD/DVD, flash
    • 네트워크 어뎁터

CPU (프로세서)

  • 프로그램의 지시대로 일을 하는 부분, 가장 역동적
  • 숫자를 더하고, 검사하고, 입출력장치에 신호를 보내 작동을 지시
  • 데이터패스(근육) + 제어 유닛(두뇌)
    • 데이터패스 : 연산수행
    • 제어 유닛 : 명령어가 뜻하는 바에 따라 데이터패스, 메모리,입출력 장치가 할일을 지시

추상화

  • 제일 중요한 추상화중 하나는 하드웨어와 최하위 소프트웨어 간의 인터페이스이다. --->명령어 집합 구조(ISA)
  • ISA(Instruction set architecture)
    • 이진 기계어 작성을 위해 프로그래머가 알아야할 것들이 모두 포함
      • 입출력 작업, 메모리할당 및 기타 저수준 시스템 기능의 세부사항, 보통 운영체제(OS)가 감추어서 프로그래머가 이러한 세세한 걱정 안해도 되게 해준다.
  • ABI(application binary interface)
    • ISA + System software interface(운영체제 인터페이스)
  • Implementation(구현)
    • 구조 추상화를 준수하는 하드웨어

메모리

  • Volatile main memory
    • 전원이 꺼지면 instruction과 data가 손실됨
    • DRAM
  • Non-volatile secondary memory
    • Magnetic disk
    • Flash memory
    • Optical disk(CDROM,DVD)

네트워크

  • 통신

    • 컴퓨터끼리 고속으로 정보 주고받음
  • 자원 공유

    • 컴퓨터마다 입출력장치를 따로따로 갖출 필요 없이 네트워크상의 모든 컴퓨터가 입출력 장치를 공유할 수 있다.
  • LAN(Local area network)

    • Ethernet : 근거리 네트워크, 같은 건물에서 쓰기에 유리,
      거리: 1km, 초당 40기가비트
  • WAN(Wide area network)

    • Internet: 원거리 네트워크, 여러 대륙 연결 world wide web 지원, 광섬유로 구성, 통신회사에서 임대해줌
  • Wireless network

    • WiFi, Bluetooth

프로그램 컴파일

  • 프로그램
    • high-level 프로그래밍 언어로 쓰여짐
  • 컴파일러
    • 프로그램을 어셈블리어로 변환
    • parsing : compile 과정에서 특정 프로그램 언어의 문법을 검사하는 것
    • 최적화

Assembly & Machine Language

  • 어셈블리어
    • 사람이 읽을 수 있는 표현
  • 기계어
    • 기계가 읽을 수 있는 표현
    • 1,0(보통 16진수로 보여줌)
  • 어셈블러
    • 어셈블리어를 기계어로 번역

Instruction Codes

  • 프로그램
    • (machine)instruction 나열
  • (machine) instructions
    • 특정한 operation을 하라고 컴퓨터에게 알려주는 bit로 된 그룹
  • instruction들은 메모리에 저장된다.

Example of Instruction Codes

  • Load
    • 메모리에 저장된 data를 register로 load 한다.
  • Store
    • register에 있는 data를 memory에 저장한다.
  • Add
    • 두개의 숫자들을 register에 저장한다.
  • Increment
    • register에 저장된 한 숫자를 증가시킨다.
  • Clear
    • 레지스터에 값을 0으로 초기화한다.

컴퓨터가 instruction들을 실행하는 방법

  1. 메모리에 저장된 instruction
  2. 메모리로부터 instruction을 읽어서 CPU로 간다.
  • 프로세서(program counter)<------> main memory(program A,data A)<-------> hard disk(program A)
  • main memory에 processor 가 접근해서 data를 load/store를 한다.
    -hard disk도 main memory에 접근해서 I/O 를 한다.

성능

application 성능 지표

  • Response Time
    • task 처리에 걸리는 시간
  • Throughput(처리량)
    • Total work per unit time
  • Performance = 1/Execution Time
  • X 가 Y보다 n 배 빠르다.
    • PerformanceX / PerformanceY = Execution timeY / ExecutionX = n
  • Example : 프로그램 실행하기 위해 걸리는 시간
    • A : 10초, B: 15초
    • Execution TimeB / Execution TimeA = 15s / 10s = 1.5
    • A가 B보다 1.5배 빠르다.
  • Elapsed time
    • 시작 ~ 끝까지 걸리는 시간
      • processing, I/O, OS overhead(OS를 사용한다는것), idle time(공회전 시간)
    • System performance를 결정
  • CPU time
    • CPU만 사용하는데 걸린시간
    • I/O time, 다른 프로그램 실행하는데 걸리는 시간 제외
    • 프로그램에 컴퓨터 시스템의 성능 중 민감하게 영향을 받는 부분이 서로 다르다

CPU CLOCK

  • digital system이 operate하고 있다.(사람 심장처럼)
  • clock cycle : clock의 시간 간격
  • clock period : 한 clock cycle에 걸리는 시간
    • ex)250ps=0.25ns=250×1012s250ps = 0.25ns = 250 \times 10^{-12}s
  • clock frequency(rate): 초당 cycles수
    • ex)4GHz = 4000MHZ = 4.0×1094.0\times 10^9Hz

CPU Time

  • CPU execution time(CPU time)

    • CPU가 일처리하는데 걸리는 시간
    • I/O, 다른 프로그램 실행하는데 걸리는 시간 제외
  • CPUtime=CPUClcokCycles×ClockCycleTime=CPUClockCyclesClockRateCPU time = CPU Clcok Cycles \times Clock Cycle Time \\ = \frac {CPUClock Cycles} {Clock Rate}

  • 사용자 CPU시간

    • 프로그램 자체에 소비된 CPU시간
  • 시스템 CPU시간

    • 프로그램의 수행을 위해서 운영체제가 소비한 CPU시간
  • 문제

    • 2GHz 클럭의 컴퓨터 A에 10초에 수행되는 프로그램이 있다.
      이 프로그램을 6초 동안에 실행할 컴퓨터B를 만들고자 한다. 클럭속도는 얼마든지 빠르게 만들 수 있는데, 이렇게 하면 CPU다른 부분의 설계에 영향을 미쳐 같은 프로그램에 대해 A보다 1.2배 많은 클럭 사이클이 필요하게 된다고 한다. 컴퓨터 B의 클럭 속도는 얼마로 해야 할까?
    • CPU시간×clock속도=CPUclockcycleCPU시간\times clock 속도 = CPU clock cycle수
    • A CPU clock cycle수 = 20
    • B: CPU시간(6)×Clock속도(클럭사이클이1.2배많아지므로,1.2배느려짐)CPU시간(6)\times Clock속도(클럭사이클이 1.2배 많아지므로, 1.2배 느려짐)
    • $20=6×BClock속도1.220 = 6\times \frac {B Clock속도}{1.2}
    • B Clock속도 = 4
    • 1.2배 많은 클럭 사이클이 필요하다는건 instruction을 처리하는데 1.2배의 클럭사이클이 더 필요하다-> 더 오래걸린다.

Instruction Count and CPI

  • CPI : clock cylcle per instruction(명령어당 클럭 사이클 수)

  • 컴파일러가 코드를 효율적으로 컴파일 해줘야 필요한 instruction이 줄어든다.

  • instruction마다 CPI가 다르다.

  • ClockCycles=InstructionCount(instruction)×CyclesperInstruction(instruction평균cycle)Clock Cycles = Instruction Count(instruction 수) \times Cycles per Instruction(instruction 평균 cycle수)

  • CPUtime=InstructionCount×CPI×ClockCycleTimeCPU time = InstructionCount\times CPI \times ClockCycleTime

  • CPUtime=InstructionCount×CPIClockRateCPU time = \frac {InstructionCount\times CPI}{ClockRate}

  • ex) 컴퓨터 A의 클럭 사이클 시간은 250ps이고 어떤 프로그램에 대한 CPI는 2.0이며, 컴퓨터 B의 클럭 사이클 시간은 500ps,CPI는 1.2이다 이프로그램에 관해서는 어떤 컴퓨터가 얼마나 더 빠른가?

A: 클럭사이클시간: 250 CPI 2.0 곱하면 5000
B: 클럭사이클시간: 500 CPI 1.2 곱하면 6000
B가 65\frac 6 5만큼 더 시간이 오래걸리므로 A가 65\frac 6 5배 더빠름

CPI Example

classABC
CPI for class123
IC int sequence 1212
IC in sequence 2411
  • IC = Instruction Count

  • Sequence 1 : IC = 5 //sequence 1의 총합

    • ClockCycles=2×1+1×2+2×3=10ClockCycles = 2\times 1 + 1\times2+2\times3 = 10
    • Avg.CPI = 10/5 = 2.0
  • sequence 2 : IC = 6

    • ClockCycles=4×1+1×2+1×3=9ClockCycles = 4\times1+1\times2+1\times3 = 9
    • Avg.CPI = 9/6 = 1.5
  • CPU Time =InstructionProgram×ClockcyclesInstruction×SecondsClockcycle= \frac {Instruction}{Program}\times\frac{Clock cycles}{Instruction}\times\frac{Seconds}{Clock cycle}

  • performance에 영향을 주는것들

    • Alogritm: IC,CPI
    • 프로그래밍 언어: IC, CPI
    • Complier : IC, CPI
    • Instruction의 구조 :CPI,IC,Clock rate.

    전력장벽

    • CMOS(반도체에서 사용)가 에너지를 사용하는 주된 원인은 동적 에너지
    • 동적에너지: 트랜지스터가 0 에서 1로 혹은 그반대로 스위칭 하는 동안에 소비되는 에너지
    • 에너지 ∝ Capacitive(용량성 부하) ×Voltage2\times Voltage^2
    • 전력 ∝ Capacitive(용량성 부하) ×Voltage2×Frequency(스위칭빈도)\times Voltage^2 \times Frequency(스위칭 빈도)
    • 스위칭 빈도:0과 1로 바뀌는 빈도 ,Clock 속도 함수
    • 전압에 영향을 많이 받는다.
    • 복잡한 구형 프로세서와 비교해 용량성 부하가 85%인 신형 프로세서를 개발하였다고 하자. 신형 프로세서는 가변전압 기능이 있어서, 구형에 비해 전압을 15% 줄일 수 있었고 따라서 주파수도 15% 낮추었다면,동전력에는 어떤 영향을 미쳤겠는가?
      • Capacitive(0.85)×voltage2(0.852)×스위칭빈도(0.85)Capacitive(0.85)\times voltage^2(0.85^2)\times 스위칭 빈도(0.85)
      • 0.854=0.520.85^4 = 0.52
    • 오늘날의 문제는 전압을 더 이상 낮추면 트렌지스터 누설 전류가 너무 커진다는 것. 이는 꽉 잠기지 않은 수도꼭지와 같다.
    • 전력장벽에 부딪힌 컴퓨터 설계자들은 multi processor를 만들기 시작한다.

멀티프로세서

  • 마이크로 프로세서: 여러개의 프로세서를 집적

  • 프로세서와 마이크로 프로세서 용어 혼란 줄이기 위해 프로세서를 '코어' 라고 부름

  • 마이크로프로세서를 '멀티코어 마이크로프로세서'라고 부르기 시작

  • 쿼드 코어 마이크로프로세서는 4개의 프로세서,즉 4개의 코어를 포함한 칩

  • 병렬성

    • 명령어 수준 병렬성
      • 파이프라이닝:명령어 실행을 중첩시켜서 프로그램을 빠르게 실행시킨다.
    • 프로그래머가 병렬 프로그램 작성이 어려운 이유
      • 병렬 프로그램은 성능을 중요시 하는 프로그램, 프로그래밍의 어려움을 가중시킨다.
      • 각 프로세서에 비슷한 양의 일을 처리하도록 해야 빨리 처리할 수 있다. 이게 어려움.
      • 통신 및 동기화 오류 줄이기위한 주의 필요

Amdahl's Law

  • 설계자들이 자주하는 실수

    • 컴퓨터의 한부분만 개선하고 개선된 양에 비례해서 전체 성능이 좋아지리라 기대하는 것.
  • 개선후 실행시간 =개선에의해영향을받는실행시간개선의크기= \frac {개선에 의해 영향을 받는 실행시간}{개선의 크기} + 영향을 받지 않는 실행시간

  • 예를 들어, 어떤 컴퓨터에서 100초 걸리는 프로그램이 있는데, 그중 80초는 곱하기 계산에 소요된다 가정하자. 이프로그램이 다섯배 빠르게 실행되려면 곱셈 속도를 얼마나 개선해야 할까?

    • 개선후 실행시간 = 80n+(10080)\frac{80초}n + (100 - 80)초
    • 20초 = 80n+20\frac {80초}n + 20초
    • 0초 = 80n\frac {80초}n
    • 곱셈이 전체부하의 80%인경우, 아무리 빨리하더라도 전체 성능을 다섯배로 증가시킬 수 없다.
      - 이때문에 제일 많이 사용하는 프로그램은 최적화 해야한다.

MIPS

  • MIPS(million instructions per second)
  • MIPS = 명령어개수실행시간×106\frac{명령어개수}{실행시간\times10^6}
  • MIPS = 명령어개수명령어개수×CPI클럭속도×106\frac{명령어개수}{\frac{명령어개수\times CPI}{클럭속도}\times 10^6}
  • 프로그램의 실행 속도를 백만 개의 명령어 단위로 나타내는 척도
  • 예제)
    • 측정값컴퓨터 A컴퓨터 B
      명령어개수100억80억
      클럭속도4GHz4GHz
      CPI1.01.1
    • 어느 컴퓨터가 MIPS가 더 높은가
      실행시간은 클럭속도에 반비례하고 CPI에 비례한다. 따라서,
      명령어개수 ×\times클럭속도/CPI 가 높은것이 MIPS가 높다.

0개의 댓글