컴퓨터구조 1장 정리

민서·2023년 10월 8일

1.1 컴퓨터 응용 분야의 종류와 특성

개괄적으로 컴퓨터는 세가지 응용분야에서 사용

  • 개인용 컴퓨터(personal computer, PC)

    • 개인적인 이용을위해 설계된 컴퓨터
    • 그래픽 디스플레이, 키보드, 마우스 등을 가지고 있는게 보통
  • 서버(server)

    • 대형 컴퓨터의 현대적 형태
    • 여러 사용자를 위해 대형 작업 수행에 이용
    • 주로 네트워크를 통해서 접근된다
    • 서버는 개인용 컴퓨터와 같은 기술로 제작
    • 큰 용량, 큰 성능, 특히 안정성을 강조한다.
  • 임베디드 컴퓨터(Embedded computer)

    • 응용분야와 성능이 매우 다양
    • 최소한의 성능만 유지하면서 가격과 소모전력을 엄격히 제한
    • eg.자동차, 밥솥 등등..

수퍼컴퓨터?

성능과 가격이 높은 컴퓨터 종류

포스트 PC 시대(The PostPC Era)

  • 개인 휴대용 기기(personal mobile device, PMD)
    • 배터리로 동작
    • 인터넷으로 연결
    • 앱을 다운로드해서 소프트웨어를 설치
    • 터치스트린을 상요하는 것이 보통
  • 클라우드 컴퓨팅
    • 창고 규모의 컴퓨팅(warehouse-scale computing, WSC)
    • 서비스로서의 소프트웨어(software as a service, SaaS)

SaaS?

클라우드 환경에서 운영되는 애플리케이션 서비스

  • eg.구글 Docs, 구름 IDE, 네이버워드

Performance 이해하기

  • Algorithm
    • 실행하는 operations수를 결정
  • Programming language, compiler, architecture
    • 실행하는 명령어 수를 결정
  • Processor and memory system
    • 얼마나 빠르게 명령어들이 실행되는지 결정
  • I/O System(including OS)
    • 얼마나 빠르게 I/O operations가 실행되는지 결정

1.2 Computer architecture를 발전시킨 7가지 아이디어

  • Use abstraction to simplify design - 설계를 단순화 하는 추상화
    • 하위단의 구체적 사항을 윗단에서는 몰라도 되도록 간단하게 만든다.
    • eg. 우리는 CPU살 때 CPU내부 구조를 모두 알 필요없다. 그냥 성능이랑 호환가능한지만 알면 됨.
  • Make the common case fast - 자주 생기는 일을 빠르게
    • 내가 맨날 쓰는 것(자주 쓰는것)을 쓰기 편한 곳에 두는 것 ->cache의 이용
  • Performance via parallelism - 병렬성을 통한 성능 개선
  • Performance via pipelining - 파이프 라이닝을 통한 성능 개선
    • 과정을 분할해서 분할된 과정을 역할분담하면 똑같은 일이 여러개 주어졌을 때 더 빨리 끝낼 수 있음.(병렬성의 특별한 형태)
      • eg.건조까지 통으로 하는 세탁기(한번에 2시간으로 가정) vs 세탁기(1시간)와 건조기(1시간)
      • 빨래를 5번에 나눠서 할 때, '세탁기와 건조기'의 경우 세탁기를 돌리면서 건조를 할 수 있음.-->10시간 vs 6시간
  • Performance via prediction - 예측을 통한 성능 개선
    • 앞으로 해야할 일을 미리 알면 미리 준비하고 있다가 처리가능
  • Hierarchy of memories - 메모리 계층 구조
    • 메모리는 종류에 따라 속도와 용량이 다르다
  • Dependability via redundancy - 여유분을 위한 신용도 개선
    • data를 중복성있게 저장해서 data의 신뢰성을 향상

1.3 프로그램 밑의 세계

소프트웨어의 계층적 구성

  • Application software ⇒ 사용자가 실행하는 SW
    • high-level language로 작성되어있음
  • System software
    • Compiler : HLL code(우리가 작성한 코드) 를 machine code로 번역
      • 이렇게 번역한 것이 Application software
    • Operating System (OS) : service code
      • Handling input/output
      • Managing memory and storage
      • scheduling tasks & sharing resources
  • Hardware
    • processor, memory, I/O controllers

Levels of Program Code

  • High-level language(고급어)
    • python, java 등
    • level of abstraction closer to problem domain - 사람이 좀 더 이해하기 쉬운 정도의 언어
    • provides for productivity and portability - 생산성과 휴대성 향상
  • Assembly language(어셈블리어)
    • Textual representation of machinary instructions - 기계적 명령(binary 표현)의 텍스트적 표현
    • 아직 사람이 프로그래밍할 수 있을 정도의 레벨이 되긴 하지만 High-level language보다 훨씬 복잡하다
    • cpu 아키텍쳐마다 다르다
  • hardware representation
    • binary digits(bits)
    • Encoded instructions and data
    • 사람이 이해할 수 없음. 프로세서만 이해 가능

1.4 케이스를 열고

컴퓨터의 구성요소

  • 모든 컴퓨터(데스크탑, 서버, 임베디드)들은 고전적인 5대 구성요소를 따른다.

터치 디스플레이

  • 키보드와 마우스를 대체한다
  • 저항식(감압식)과 정전용량식으로 나뉜다.
  • 정전용량식은 다중 터치를 지원한다.

디스플레이(LCD)

  • 화소의 행렬로 구성
  • 각 화소당 4비트가 들어감(비트가 많을수록 많은 색표현 가능)

CPU 내부

  • 프로세서의 내부요소
    • Datapath(데이터 패스)
      • data의 연산을 수행 ​
    • Control Unit(제어 유닛)
      • datapath, memory등의 순서처리 ​
    • Cache
      • Memory data에 직접 접근하는 작고 빠른 SRAM 메모리

추상화(Abstractions)

  • abstractions helps us deal with complexity
    • hide lower-level detail (문제를 단순화)
  • Instruction set architecture(ISA)(컴구에서의 abstractions 활용)
    • = The hardware/software interface
    • SW와 HW가 independent하도록 만들어주는 역할
    • SW는 ISA에서 지원해주는 Instructions를 가지고 프로그램이 만들어진 것
    • HW는 ISA에서 지원해주는 Instructions를 실행하는 것
  • Application binary interface(ABI)
    • = ISA + system software interface
    • 어떤 시스템에 존재하는 프로그램이 다른 컴퓨터에서 실행될 수 있는지 없는지의 조건이 된다
    • A라는 컴퓨터와 B라는 컴퓨터가 같은 ABI를 사용한다면 A라는 컴퓨터에서 실행되는 프로그램은 B라는 컴퓨터에서도 실행이 된다.
  • Implementation
    • The details underlying and interface
    • ISA를 어떻게 실질적으로 구현할 것인가
    • ISA를 policy라고 볼 수 있고, 실제로 프로세서가 ISA를 지원하기 위해 어떻게 구현되는지가 Implementation
    • 프로세서 내부적으로 구현

A Safe Place for Data

  • Volatile main memory

    • (예) DRAM
    • 전원이 꺼지면 instructions와 data를 잃는다(휘발성)
  • Non-volarile secondary memory(Storage)

    • 전원이 꺼져도 instructions와 data 잃지않음(비휘발성)
    • (예)Magnetic disk, Flash, Optical disk

Networks

  • communication, resource sharing, nonlocal access

  • Local area network(LAN) : Ethernet

  • Wide area network(WAN) : the Internet

  • Metropolitan area network(MAN) : 도시 네트워크 (교수님의 추가설명)

  • Wireless network : Wifi, Bluetooth

1.5 프로세서와 메모리 생산 기술


  • Electoronic technology는 계속해서 증가
  • 용량과 성능은 증가하고 비용은 감소

Semiconductor Technology

  • semiconductor는 silicon으로 만들어진다
  • 성질을 변환시키기 위해 몇몇 물질을 추가한다
    • conductors
    • insulators
    • switch

  • 제작과정

    • silicon ingot(실리콘 괴)를 슬라이싱 해서 웨이퍼를 만든다
    • 웨이패에 패턴을 만든다.(사각형 하나=다이)
    • 웨이퍼를 자르기전에 먼저 테스트
    • 웨이퍼를 자름(Dicer)
    • 다이 하나를 테스트
    • 다이와 입출력핀을 연결, 이 과정을 본딩과정이라고 함
    • 이후 패키징된 다이를 테스트
  • Yield(수율) = wafer당 working dies의 비율

    • 이때 테두리부분은 수율계산에서 제외한다. 불량이든 아니든 당연히 못쓰는 부위니깐

  • 실제 이미지 모습

1.6 ⭐Performance⭐- 그냥 싹 다 외울꺼 밖에 없다

Integrated Circuit Cost

  • 한글로 번역하면 더 어렵다
  • Cost per die
    • Dies per wafer X Yield = working Dies(불량 아닌 다이)
    • 간단하게 풀어쓰면 웨이퍼 가격을 불량아닌 다이 갯수로 나눈 것
  • Dies per wafer
    • 웨이퍼 넓이/다이넓이
    • 그러나 원의 형태이기 때문에 실제로는 짤려나가는 다이가 존재한다
  • Yield
    • 어떻게 정의된 형태가 아니라, 공장에서의 관찰치로 결정된 것임.
  • 교재에서 숫자 2는 오타임. 2를 n으로 고칠 것
  • 다이크기랑 결함률이 선형적으로 비례하지는 않는다.
    • 구조 및 회로설계 등등 복합적인 요인이 반영된다.

Performance의 정의

  • performance를 어떻게 정의하냐에 따라서 어떤 것이 성능이 좋은지가 달라짐

⇒ 잘 정의해줘야함

  • Response time(latency) : 실행시간. 응답시간.
    • 하나의 일을 처리하는데 얼마나 걸리는지
  • Throughput
    • 단위시간당 몇개의 일을 하는가
    • (예) 시간당 처리 task수, 시간당 처리 transactions
  • Response time 과 Throughput은 어떤 것에 어떻게 영향을 받는가
    • 프로세서를 더 빠른 버전으로 대체? → response time 감소↔ throughput 증가
    • 더 많은 프로세서 추가? → response time 그대로, throughput 증가

⇒ 일단 지금은 Performance 는 Response time 관점으로 Focus
이 이후는 대부분 식으로 CPU의 performance를 계산해나간다

profile
실패보다 사람을 더 미치게 하는게 후회더라구요

0개의 댓글