Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

공hannah부

[컴퓨터 구조] 컴퓨터 추상화 및 관련 기술 본문

공부/컴퓨터구조

[컴퓨터 구조] 컴퓨터 추상화 및 관련 기술

Hannah0226 2023. 9. 11. 18:26

1. Introdution

 

컴퓨터 응용 분야

  • 개인용 컴퓨터
  • 서버: 네트워크를 통해서만 접근됨, 대형 작업 수행에 이용됨
    • 수퍼 컴퓨터: 대형 과학  및 공학에서 주로 사용, 처리능력은 최상이지만 양적으론 작은 부분을 차지
    • 임베디드 컴퓨터: 단일 시스템으로 공급되기에 사용자에게 숨겨짐, 최소한의 성능만 유지하면서 가격과 소모 전력은 엄격히 제한

컴퓨터 하드웨어의 변화

  • 개인용 컴퓨터 개인 휴대용 기기(PMD)로 대치
  • 전통적인 서버 클라우드 컴퓨팅으로 전환

 

2. Seven great ideas in computer arcchitecture

 

일곱가지 아이디어

  • 추상화(abstraction): 하위 수준의 상세한 사항을 안보이게 함으로써 상위 수준 모델을 단순화 (high level -> low level)
  • 자주 생기는 일을 빠르게(commom case fast)
  • 병렬성(parallelism): 병렬적으로 수행하여 성능
  • 파이프라이닝(pipelining): 병렬성의 특별한 형태
  • 예측(prediction)
  • 메모리 계층구조(memory hierarchy): 최상위 계층에는 가장 빠르고, 작고, 비트당 가격이 제일 비싼 메모리 사용, 최하위 계층에는 느리지만 크고 비트당 가격이 제일 싼 메모리 사용
  • 신용도(dependability)

 

3. Below your programs

시스템 소프트웨어: 하드웨어와 응용 소프트웨어 사이에 존재

 

시스템 소프트웨어의 핵심 두 가지

  • 운영체제: 사용자 프로그램과 하드웨어 간의 인터페이스 역할
    • 기본적 입출력 작업의 처리
    • 보조기억장치 및 메모리 할당
    • 컴퓨터를 동시에 사용하는 여러 응용들 간의 컴퓨터 공유 방법 제공
    • ex) Windows, Linux, iOS, Android 등
  • 컴파일러: C, C++, JAVA와 같은 상위 수준의 언어로 작성된 프로그램을 하드웨어가 실행할 수 있는 명령어로 번역함

상위 수준 언어 기계어 (추상화)

High-lever language              (ex.A+B)

                   ↓    compiler

Assembly language              (ex. add A,B)

                   ↓     Assembler

Binary machine language     (ex.1001010100101110)

상위 수준 언어의 장점

  • 프로그래머가 영어 단어와 수학 기호를 사용해서 자연스러운 언어로 생각할 수 있게 하며, 작성된 프로그램도 읽기 좋은 모양이 됨
  • 프로그래머의 생산성 향상
  • 프로그램을 개발한 기종과 상관없이 어느 컴퓨터에서든 실행 가능

 

4. Under the Cove

컴퓨터 하드웨어의 기본 기능: 데이터 입력, 데이터 출력, 데이터 처리, 데이터 저장

 

컴퓨터의 고전적 구성 요소

  • 입출력 장치
    • ex) 터치스크린: 정전용량 감지 기법을 사용. 사람이 손을 댔을 때 전기가 통해 정전용량이 변함
  • 메모리
    • 실행중인 프로그램과 프로그램이 필요로 하는 데이터 기억
    • DRAM 칩으로 구성됨. DRAM 여러개를 묶어 프로그램의 명령어와 데이터를 기억하는데 사용
  • 캐시 메모리(cache memory)
    • DRAM의 버퍼 역할을 하는 작고 빠른 메모리
    • SRAM이라는 메모리 기술 사용
  • 프로세서(=CPU)
    • 프로그램의 지시대로 일을 하는 부분
    • 데이터 패스와 제어유닛으로 구성됨 
      1. 데이터 패스: 연산을 수행
      2. 제어유닛: 명령어가 뜻하는 바에 따라 데이터패스, 메모리, 입출력 장치가 할 일을 지시
하드웨어와 소프트웨어는 모두 추상화를 이용하여 계층적으로 구성되며, 각 하위 계층의 세세한 부분이 상위 계층에 보이지 않도록 한다. 여러 계층의 추상화 중에서 가장 중요한 것은 하드웨어와 하위 계층 소프트웨어 간의 인터페이스인 명령어 집합 구조이다. 이렇게 인터페이스를 추상화함을로써 같은 소프트웨어를 실행하지만 가격과 성능이 다른 여러가지 컴퓨터를 구현할 수 있다.

컴퓨터 내부 메모리

  • 휘발성 메모리(=메인 메모리)
    • DRAM
  • 비휘발성 메모리(=보조기억장치)
    • 자기 디스크
    • 플래시 메모리 (휴대용 기기에 사용): DRAM보다 느리지만 훨씬 싸고 비휘발성이라는 장점이 있음

컴퓨터 네트워크

  • 근거리 네트워크(LAN) : 이더넷
  • 원거리 네트워크(WAN): 인터넷

 

5. Technologies for building progressors and memory

 

집적회로

  • 직접회로: 수십, 수백개의 트랜지스터를 칩 하나에 집적시킨 것
  • 트랜지스터: 전기로 제어되는 온/오프 스위치
  • 초대규모집적회로: 수십만 내지는 수백만 개의 트랜지스터를 포함하고 있는 장치

반도체 기술

  • 실리콘은 전기가 잘 통하는 편이 아니어서 반도체라고 부름
  • 반도체에 화학처리를 하면 다음 세가지 중 하나로 바꿀 수 있음
    • 양도체(초소형 구리, 알류미늄 전선)
    • 절연체(플라스틱 피복, 유리)
    • 조건에 따라 도체가 되기도 절연체가 되기도 하는 물질(스위치) 트랜지스터

직접회로 제조 과정

  • 실리콘 결정 괴를 얇게 잘라 웨이퍼를 만듦
  • 20내지 40 단계의 공정 과정을 거쳐 빈 웨이퍼에 패턴이 새겨짐
  • 공정중 생긴 결함(defect)을 제외하기 위해 한 웨이퍼에 독립적인 컴퓨던트를 여러개 만듦
  • 웨이퍼를 컴포넌트 별로 자름 (다이 또는 칩이라고 함)
    • 이를 통해 웨이퍼에 결함이 생겼을 때 웨이퍼 전체를 버리는 대신 해당 다이만 버릴 수 있음
    • 해당 개념은 수율(yield)로 계량화 가능
    • 수율: 웨이퍼상의 전체 다이 중 정상 다이의 비율
  • 결함이 없는 다이는 패키지의 입출력 핀과 연결함 (본딩이라고 함)
  • 최종 검사 후 납품

직접회로 가격

  • 웨이퍼당 다이의 수가 근사식인 이유: 둥근 웨이퍼에서 사각형의 다이를 만들수 없는 경계 부분의 면적을 빼지 않았기 때문

 

예제
Q. 지름이 15cm인 웨이퍼의 원가가 12이고 84개의 다이를 가지며 단위 면적당 결함은 0.02개/cm^2이다. 웨이퍼의 수율과 다이 원가를 구하여라.

A.

 

6. Performance (성능)

 

성능

  • 성능을 최대화하기 위해서는 어떤 태스크의 응답시간 또는 실행시간을 최소화해야 한다.
  • 컴퓨터 X의 성능과 실행시간의 관계
  • 컴퓨터 X가 컴퓨터 Y보다 n배 빠르다면 Y에서의 실행시간이 n배 길 것임
예제
Q. 같은 프로그램이 컴퓨터 A에서 10초, B에서는 15초 걸린다면 A는 B보다 얼마나 빠른가?
A.

**컴퓨터의 성능을 비교할 때는 "~보다 빠르다", "성능/실행시간이 개선된다"라고 표현


성능의 측정

  • 경과시간 (elapsed time): 한 작업을 끝내는데 필요한 전체 시간
  • CPU 실행시간 (CPU time): 프로세서가 순수하게 프로그램을 실행하기 위해 소비한 시간 (입출력에 걸린 시간이나 다른 프로그램을 실행하는데 걸린 시간은 포함 X)
    • 사용자 CPU 시간: 프로그램 자체에 소비된 CPU 시간
    • 시스템 CPU 시간: 프로그램 수행을 위해서 운영체제가 소비한 CPU 시간
    • 이 둘을 정확히 구분하는 것은 쉽지 않음

 

  • 논리의 일관성을 위해 경과시간으로 계산한 것을 시스템 성능, 사용자 CPU 시간으로 계산한 것을 CPU 성능이라고 부르기로 정함

  • 클럭 사이클 (clock cycle): 일정한 속도를 가지고 동작하는 프로세서 클럭 한 주기 동안의 시간
  • 클럭 주기: 각 클럭 사이클의 길이 (한 클럭 사이클에 걸리는 시간)
  • 클럭 속도: 클럭 주기의 역수

CPU 성능과 성능 인자

예제
Q. 2GHz 클럭의 컴퓨터 A에서 10초에 수행되는 프로그램이 있다. 이 프로그램을 6초동안 실행할 컴퓨터 B를 설계하고자 한다. 클럭 속도는 얼마든지 빠르게 만들 수 있는데, 이렇게 하면 CPU 다른 부분의 설계에 영향을 미쳐 같은 프로그램에 대해 A보다 1.2배 많은 클럭 사이클이 필요하게 된다고 한다. 컴퓨터 B의 클럭 속도는 얼마로 해야 하겠는가?
A

명령어 성능

 

컴파일러가 실행할 명령어를 생성하고 컴퓨터는 이 명령어를 실행해야 하기 때문에, 실행시간은 프로그램의 명령어 수와 관련있다.

  • 명령어당 클럭 사이클 수 (clock cycle per instruction, CPI) : 프로그램 전체 혹은 일부에서 명령어 하나 실행에 필요한 평균 클럭 사이클 수
예제
Q. 같은 명령어 집합 구조를 구현한 컴퓨터 두 종류가 있다. 컴퓨터 A의 클럭 사이클 시간은 250ps이고 어떤 프로그램에 대한 CPI는 2.0이며, 컴퓨터 B의 클럭 사이클 시간은 500ps, CPI는 1.2이다. 이 프로그램에 관해서는 어떤 컴퓨터가 얼마나 더 빠른가?
A.

고전적인 CPU 성능식

 

이제 성능식을 명령어 개수, CPI, 클럭 사이클 시간으로 표현해보면 아래 식이 된다.

 

예제
Q. 어떤 컴퍼일러 설계자가 같은 상위수준 언어 문장에 대해 생성된 두 가지 코드 1과 2 중 하나를 선택하려 한다. 하드웨어 설계자가 제공한 사실은 다음과 같다.
컴파일러 작성자가 어떤 상위 수준 언어 문장을 다음과 같은 두 가지 코드로 변환하는 방법을 고려하고 있다.
어떤 코드가 더 많은 명령어를 실행하는가? 어떤것이 더 빠른가? 각 코드의 CPI는 얼마인가?
A.

요점 정리

 

CPU Time

 

6. The power wall (전력 장벽)

 

  • 동적에너지: 트랜지스터가 0에서 1로 혹은 그 반대로 스위칭하는 동안에 소비되는 에너지
  • 트랜지스터가 한번 바뀔 떄 소모되는 에너지

  • 트랜지스터 하나가 소비하는 전력: (한번 바뀔 때 소모되는 에너지) X (시간당 논리 값이 바뀌는 빈도수)

상대전력 예제
Q. 복잡한 구형 프로세서와 비교하여 용량성 부하가 85% 밖에 되지 않는 간단한 신형 프로세서를 개발하였다고 가정하자. 또한 신형 프로세서는 전압을 가변시킬 수 있어서, 구형에 비하여 전합을 15% 줄일 수 있고 따라서 주파수도 15% 낮추었다면, 동전력에는 어떤 영향을 미쳤겠는가?
A.

 

7. The switch from uniprocessors to multiprocessors (단일→멀티 프로세서)

 

  • 멀티코어 마이크로 프로세서: 칩당 하나 이상의 프로세서를 집적
  • 프로그래머가 명시적 병렬 프로그램을 작성하는 것이 어려운 이유
    1. 병렬 프로그래밍은 정의상 성능을 중시하는 프로그램인데 이것이 프로그래밍의 어려움을 가중시킴
    2. 병렬 하드웨어에서 빠르게 수행된다는 것은 각 프로세서가 비슷한 양의 일을 동시에 수행하도록 응용을 분할해야 하고, 병렬성으로부터 얻을 수 있는 잠재적인 성능의 이득을 침해하지 않도록 분할된 일을 스케줄링하고 조정하는 오버헤드가 작아야 하기 때문

 

 

 

 

 

 

 

 

 

 

 

'공부 > 컴퓨터구조' 카테고리의 다른 글

[컴퓨터 구조] 메모리 계층 구조  (0) 2023.12.15
[컴퓨터 구조] 프로세서  (0) 2023.12.15
[컴퓨터 구조] MIPS  (0) 2023.10.13