Computer_Architecture_Week_3

신태원·2020년 9월 19일
0

Computer_Architecture

목록 보기
3/5

현대 컴퓨터 발전

  • Turing machine: 기계적 방법으로 모든 수학문제를 해결할 수 없다는 것을 가상기계로 증명.
  • Church - Turing thesis(Church 와 Turing이 같이 씀): 컴퓨터 알고리즘으로 할 수 있는 모든 일은 튜링 기계로 실행 가능.
  • 테이프안에 각 방마다 입력문자가 있는데, 이것을 읽는 헤더가 있음. 이 헤더는 얘네를 읽고, 명령에 따라 움직인다.
  • 이 machine의 현재 상태값을 저장하는 공간이 있으면, 이 안에 상태는 계속해서 바뀐다.(안 바뀔 수도 있음. 명령에 따라 바뀜)
  • Next Position은 헤더가 다음 어디를 가야하는지 알려줌.

=> 컴파일러 시간에 배움. 즉, 튜링 머신이 진짜 머신이 아니라, 이러한 모델을 만든 것이다! 라는 것만 기억하면 됨. 수학원리로 구성된, 가상의 기계에 대한 모델링이다.
=> 디지털 컴퓨터의 푸상적인 모델을 제시한 앨런 튜링 등 수많은 과학자에 의하여 현대 컴퓨터 탄생

폰 노이먼 아키텍처

  • 아이디어 차원의 모델을 어떻게 실제 컴퓨터로 구현할 것인가를, 실제 현대 컴퓨터 모델을 제시한 것은 폰 노이만.
  • 이전 컴퓨터와 뭐가 다르냐?
    => 폰노이만 아키텍쳐는 명령어가 입력장치로 들어가고, 메모리, CPU, ALU, 제어장치를 거쳐 출력된다.
    => 이전의 컴퓨터는 하드웨어적으로 입력이 들어갔음. 무슨 말이냐면, 여러번 수정이 불가능했음. 소프트웨어는, 메모리를 이용해 필요에 의해 끌어다 쓰는 방식이었음. 하지만, 하드웨어적인 것은 '비석에 새기는 글' 이라고 생각하면 됨. 글자를 고치려면, 비석을 버리고 새로 새기는 방식을 택해야 함.
    => 하드웨어적으로 프로그래밍 되어 있으면, 어떤 프로그램 하나를 돌렸을 때, 다른 프로그램을 선택하는 것이 매우 힘듦. 하지만, 폰 노이먼 아키텍쳐는 프로그램을 저장하고 변경할 수 있는 Stored program computer로 제시 함. (앨런 튜링의 유니버셜 기계 모델을 구체화한 형태로 아직까지도 기본 모델로 쓰임)

개인용 컴퓨터

  • 이게 나오기 전까지는 엄청 비싸고, 대형이었다. 원래는 가정이 아니라, 회사에서 줄서서 사용했음.
  • 소형, 저가이며, 10여 전의 대형 메인프레임 컴퓨터의 성능을 능가함.
  • General purposed machine: 특정 목적이 아니라, 일반적인 목적.

임베디드 컴퓨터

  • 기계 장치나 전자 장치들의 내부에 포함되어, 그 장치들의 동작을 제어하는 컴퓨터.
  • Ex) 밥솥, 냉장고, 자동차
  • 내장 컴퓨터라고도 하고, 그 안의 SW를 펌웨어(firm ware)라고도 함.
  • 최소의 비용으로, 필요한 만큼의 성능 제공(최소한의 기능만)
  • IOT 에 사용되기 때문에, 요즘 많이 뜸.
  • 하드웨어에 가깝게 프로그래밍을 하는 방법을 알아야함.

중형급 컴퓨터시스템

  • 워크스테이션
  • 슈퍼미니컴퓨터

메인프레임 컴퓨터

  • 대형 컴퓨터

슈퍼컴퓨터(super computer)

  • 처리 속도와 기억장치 용량이 상대적으로 월등한 컴퓨터 시스템들

현대 컴퓨터의 주요 부품들

  • 트랜지스터
  • 집적 회로

IC 사용에 따른 장점

  • IC란?

    집적회로란, 하나의 반도체 기판에 다수의 능동소자 (트랜지스터, 진공관등)와 수동수자 (저항, 콘덴서, 저항기등)를 초소형으로 집적, 서로 분리 될 수 없는 구조로 만든 완전한 회로기능을 갖춘 기능소자를 말함.
    [출처] https://m.blog.naver.com/PostView.nhn?blogId=roboholic84&logNo=220331162212&proxyReferer=https:%2F%2Fwww.google.com%2F

  • 전기적 통로가 짧아져서 동작 속도가 크게 상승함.
  • 컴퓨터 크기가 감소하여, 다양한 크기의 컴퓨터 기기 개발 가능.
  • 신뢰도 향상
  • 전력소모 감소 및 냉각장치의 소형화
  • 컴퓨터 가격 하락

현대 컴퓨터 발전의 지표: 무어의 법칙 (Moore's law)

  • 인텔사의 공동창업자 고든 무어의 경험적 관찰에 의한 예측
  • 단일 칩에 포함된 트랜지스터의 수는 18개월마다 약 2배씩 증가
  • 손가락 마디의 반도 안되는 칩네 들어가는 트랜지스터의 수가, 1970년도에는 뮤직홀 수용 인원(2300명), 2011년에는 중국의 인구인 13억개가 들어감.
  • 영향: 기기의 소형화 -> 성능 개선 + 가격 하락
  • 반도체 집적기술의 한계는 Moore's Wall 이라 부름

컴퓨터의 성능

  • 성능: 기계 따위가 지닌 성질이나 기능

  • '성능'은 주로 구매시 선택의 기준이 된다.

  • 컴퓨터의 성능: 컴퓨터 기기 선택의 요소
    => 속도, 가격, 외양, 전력소모나 발열 등등
    => 속도는 디지털 기기에서 가장 많이 보는 객관적 요소이기 때문에, 속도는 즉 성능과 같다.

  • But, 속도로 봐도 컴퓨터 성능의 정의는 사용자에 따라 달라진다.
    => Why? 예를 들어, 5분에 커피 한잔을 내리는 커피머신과, 7분에 커피 두잔을 한꺼번에 내리는 커피머신이 있을 때, 관점에 따라 성능이 다르다고 할 수 있다.
    => 개인 관점: 짧은 하나의 프로그램 실행시간 -> 응답시간(==반응시간, 실행시간, 수행시간, 지연시간, 소요시간)
    => 웹서버 관리자 관점: 주어진 시간 내 높은 작업 수행량 -> 처리율
    => 그래서 지금부터는 컴퓨터의 성능을 '응답시간'으로 정의
    =>그러나, 응답시간과 처리율은 상호연계관계에 있다. 응답시간이 단축되면 처리량은 항상 개선되지만, 처리량이 개선된다고해서 응답시간이 항상 단축되는 것은 아니다.

  • 응답시간?

    • 하나의 프로그램을 처리하는데 소요되는 시간
    • 시스템이나 실행단위에 입력이 주어지고 시스템이 반응하기까지의 걸린 시간
      - 프로세서(CPU)의 처리시간 뿐만 아니라, 입출력시간, OS 수행시간 등도 포함
      => 이제부터 컴퓨터 성능 = CPU 실행시간으로 정의
    • CPU가 하나의 프로그램을 수행하는 데 순순하게 사용된 시간
    • 입출력이나 다른 프로그램의 실행 시간은 포함하지 않음.
      => 컴퓨터의 성능이 좋다 = CPU 실행시간이 짧다.(반비례 관계)

컴퓨터 성능의 정의

  • 두 컴퓨터 X와 Y에 대해, X의 성능이 Y의 성능보다 좋다면, CPU 실행 시간은 X가 Y보다 짧다.
  • 컴퓨터 M1에 대한 컴퓨터 M2의 성능 비율은 n 이다.
    => M2의 성능/ M1의 성능 = M1의 실행 시간 / M2의 실행 시간 = n
    => Why? 성능과 시간은 역수관계이기 때문에!!

암달의 법칙 (1)

  • 시스템의 일부분을 개선하는 경우, 전체 시스템에서 얻을 수 있는 최대 성능 향상을 구할 때 사용
  • [예제] 하나의 프로그램이 싱글 코어 프로세서를 사용하면 20시간이 소요된다.
    • 1시간 소요되는 부분은 병렬화할 수 없고, 19시간 소요되는 부분은 병렬화할 수 있다면, 성능 향상은?(단, 병렬화된 부분을 처리하는 데 사용되는 프로세서의 수는 제한이 없다고 가정 == 거의 0에 수렴한다.)
    • [답] 20배
    • [해설] 무한 개의 프로세서를 이용하면 병렬화 가능한 19시간은 최소시간으로(0) 줄일 수 있으나, 병렬화가 불가능한 1시간은 성능향상과 관계없이 1시간이 걸린다.(사실 최소시간(0)으로 줄인 다는 것은 불가능한거긴 함.)

암달의 법칙 (2)

  • 시스템의 일부분 f는 병렬화, 또는 하드웨어의 개선으로 성능을 n배 향상하고, 나머지 부분 (1-f)는 그대로 두었다고 가정하자. 성능 향상 전의 기계를 M1으로, 성능이 일부 향상된 기계를 M2라고 할 때, 시스템의 전체 성능 향상 s 구하는 식

CPU 성능 (=CPU 실행시간) 분석

  • [비유] 나(학생)의 숙제 성능을 계산해보자

    • 주어진 숙제, 즉 국어, 수학, 영어, 과학 숙제를 하는데 어느 정도의 시간이 걸리나?
    • 국어 문제집 10p, 수학 문제집 8p, 영어 문제집 6p, 과학문제집 4p 라고 가정
  • 숙제의 구성요소를 아래처럼 가정하고 숙제 양과 시간을 계산해보자.
    - 숙제양: 문제집 페이지 수로 산정, 한 페이지 당 평균 풀이시간 = k분

    • 숙제 시간: 문제집 페이지 수 * 한 페이지당 평균 풀이시간
  • 하지만, 과목마다 문제집 한 페이지를 푸는 시간은 다를 수 있음.

    • 이 때는 따로 따로 곱해줌.
  • CPU 성능에 영향을 주는 요소

    • 하나의 프로그램에 포함된 명령어 개수(C)
      • 해야할 일의 크기로, 컴퓨터에게는 프로그램의 크기를 의미
        • 일반적으로 수행할 명령어 개수가 많으면 오래 걸린다.
        • 이제 "C *명령어당 평균시간" 혹은 하나하나 곱해줬을 때 걸리는 시간을 구하면 되는데, 명령어 수행시간 단위는 clock
  • Clcok (Tick - tok)

    • 대부분 현대 컴퓨터는 클락(clock)을 갖고 있다.
      - 컴퓨터의 Clock은 regular periodic waveform의 전기신호
      • Clock을 통해, CPU는 정해진 시간에 맞춰 프로그램을 수행
      • 시스템 내 모든 이벤트들은 이 clock 신호에 따라 제어되고 synchronize된다.
      • Clock 속도가 빠르면, 정해진 기간(1초) 동안 CPU 내부 일을 많이 할 수 있다.
      • CPU는 이 Clock에 맞춰서 일을 수행함.
      • Clock 속도가 빠르면, 정해진 기간(1초) 동안 CPU 내부 일을 많이 할 수 있다.
      • 단위로 Hz를 사용하며, 0과 1 이 한번씩 실행되는 주기 수를 말한다.
      • 주기적으로 반복되는 모든 현상에 일반적으로 사용 가능함.
      • 1Hz = 1번/sec, 1KHZ = 10^3번/sec, 1MHZ = 10^6번/sec, 1GHZ = 10^9번/sec 진동함.
    • 시간으로 바꾸려면, 역수를 취하면 된다. 1 nano second는 1GHz임
  • 하나의 명령어를 실행할 때 필요한 클락 사이클의수(CPI, Cycles Per Instruction)

    • 명령어마다 다르기 때문에, 각 명령어당 CPI를 사용하거나 평균 CPI로 사용
  • 하나의 클락 사이클에 고요되는 시간 (clock cycle)

    • 사이클 시간의 역수 = 클락률(clock rate) 또는 클락 속도(clock speed)
  • CPU 실행시간 = C cpi(avg) clock_cycle || 각 CPI 별로 곱해준 거 clock_cycle
    (명령어 개수
    평균 CPI 사이클 시간) == (명령어 개수 평균 CPI) / 클록속도

  • 어느 하나의 요소도 독립적으로 성능을 결정할 수 없다.

  • 결국 단위를 지워보면, 초/프로그램 만 남는다.

성능 관련요소에 영향을 미치는 요인들

  • 컴퓨터 성능에 대한 완벽하고 믿을만한 척도는 CPU 실행시간
    • 명령어 개수, 평균 CPI, 사이클 시간 => 서로 독립적이지 않음
  • 실행되는 명령어 개수는 알고리즘과 명령어 집합 구조에 영향받음
    - 알고리즘이 간결하고 효율적이면, 수행할 명령어 수 감소
    • 하나의 명령어가 수행하는 일이 많으면, 명령어 수 감소
  • 평균 CPI 성능은 알고리즘, 명령어 집합 구조와 컴퓨터 구성에 영향받음
    • 단순한 명령어는 복잡하고 강력한 명령어보다 CPI 감소
    • CPU 내 연산 병렬화 등 효율적 컴퓨터 구성은 평균 CPI 감소
  • 클럭 사이클 시간은 명령어 집합구조, 컴퓨터 구성 및 개발 수준에 영향받음
    • 복잡한 명령어들은 클럭 사이클 시간을 증가 유도
    • CPU내 데이터경로를 짧게 하거나 연산 병렬화시키는 것은 클럭 사이클 시간을 감소
    • 더 빠른 회로기술이나 패키징 밀도를 높이면, 클럭 사이클 시간을 감소
  • 벤치마크
    • 성능을 평가하기 위하여 작업 부하로 선택된 프로그램의 모음
    • 목적이 다른 프로그램들이 있음.(계산 집약적인 작업 부하, 메일 서버)
    • 대표적인 곳은 SPEC 벤치마크
  • 평가 척도: CPU를 위한 CPI, 클론 속도, MIPS, MFLOPS 등
    • MIPS: 단위 시간, 즉 1초에 수행한 명령어 개수를 100만으로 나눈 값
    • MFLOPS: 1초에 실행한 부동소수점 연산의 수를 100만으로 나눈 값

profile
일단 배우는거만 정리해보자 차근차근,,

0개의 댓글