Home Computer System Overview2
Post
Cancel

Computer System Overview2

Computer’s Memory

데이터와 프로그램을 저장함

디자인 제한

  • capacity
  • cost(per bit)
  • access time
    • 좋은 성능을 위해 프로세서와 속도가 비슷해야한다.

두가지 메모리

  1. SRAM
    • 쟉고, 비쌈, 하지만 빠름
  2. DRAM
    • 크고, 쌈, 하지만 느림

특징에 맞게 계층 구조로 사용한다.

메모리 계층

  • 빠른 것과 느린 것이 같이 일하면, 느린 속도에 크게 영향을 받는다.
  • cpu를 최상위 계층으로 두고, 속도가 비슷한 순서대로 하위 계층을 구성한다.
    • 가격과 크기 문제로 계층 구조를 가지게 된다.
    • 크기가 커지면 빠르게 하드웨어를 만들기 쉽지 않다.
  • 설계 의도는 최대한 하위 계층에서 메모리를 접근하지 않게 만드는 것이다.
    • 다른 말로 최대한 상위 계층에서 작업을 하는 것이다.

전략

상위 계층에서 일을 하려면 자주 접근되는 데이터가 상위 메모리에 존재해야한다. 이를 완벽히 예측하기 힘들지만 지역성을 이용하면 어느정도 가능하다.

Localtiy

프로그램은 최근 접근한 데이터를 다시 접근하거나, 근처 데이터를 접근하는 경향이 있다. 이를 두가지 타입의 지역성으로 정의할 수 있다.

  1. Temporal locality ( time )
    • 했던거 또 ( 반복문에서 i 같은거 )
  2. Spatial locality ( space )
    • 했던거 근처 ( 배열 )

Cache Memory

  • 빠른 sram에 지역성을 이용해 미리 데이터를 가져다 두자!

전략

  • Spatial locality
    • 큰 캐시 블록과 prefetching을 이용하자.
    • 근처 데이터 접근시 hit 증가
  • Temporal locality
    • 이전에 사용한 명령어를 캐시에 최대한 가지고 있는다.
    • replace 문제 고려

Design

  • Impact of associativity
    • 유연하다.
      • 블럭을 여러 군데 저장할 수 있다.
      • 이로 인해 hit rate 증가 가능
    • 복잡한 회로 구조가 필요하다.
      • 여러 블럭 중 무엇을 교체할지나 서칭할때
      • 이는 시간과 가격 증가로 이어짐
  • Impact of cache size
    • 커지면 hit rate 증가
    • 커지면 빠르게 만들기 쉽지 않다.
      • 트레이드 오프
  • Impact of block size
    • 처음에는 증가하나 항상 좋은 퍼포먼스를 보여주지 않는다.

Cache write operation

  • cache hit 했을 때
    • write-through
      • 메모리에 써버림
    • write-back
      • dirty bit를 이용해서 캐시에만 쓰고, 이후 replace될 때 메모리에 반영
      • 반영 전까지 메모리는 obsolete 상태로 남음
      • 멀티 프로세서간 동기화 문제로 문제 발생
  • cache miss 했을 때
    • write-allocate
      • 캐시에 가져오고 업데이트
    • no-write-allocate
      • 메모리에 써버리고 캐시 업데이트 안함

I/O device Overview

I/O 컨트롤러는 I/O 디바이스의 인터페이스 역할을 한다.

컨트롤러는 3가지 버스의 주소를 가지고 있다. 각 버스는 상응하는 컨트롤러의 레지스터에 연결되어 있다.

  • address bus
  • data bus
  • control bus

  • status reg : 디바이스의 상태를 읽을 수 있다.
  • command reg : 디바이스에 일을 부여한다.
  • data reg : 디바이스에 데이터를 전달하거나 가져온다.

I/O address space

  • port-mapped I/O
    • I/O 디바이스가 분리된 주소 공간을 가지고 있음
    • 전용 명령어를 사용
      • x86 / in out
  • memory-mapped I/O
    • 메모리와 같은 주소 공간을 사용
      • 실제 메모리 공간을 사용함
    • 기존 명령어를 이용 가능

I/O Communication Techniques

  1. Programmed I/O
    • 프로세서가 I/O 요청 이후 I/O 모듈의 상태를 계속 확인한다.
    • I/O 모듈이 완료되면 프로세서는 작업을 한다.
  2. Interrupt-driven I/O
    • I/O 모듈이 완료되면 인터럽트를 발생 시킨다.
  3. Direct Memory Access
    • 위 작업들은 워드 단위로 큰 데이터를 이동하기에 오버헤드가 크다.
    • I/O 디바이스와 메모리가 DMA를 이용해 직접 데이터를 주고 받는다. 이때 명령과 완료 처리 이외에 cpu 간섭은 필요하지 않다.

Sysmmetric Multiprocessors

  • 대칭적 멀티 프로세서
    • 비슷한 프로세서들이 대등하게 존재
    • 메인 메모리와 I/O 자원을 공유한다.
      • 버스를 통해

Advanced PIC

  • APIC은 cpu를 고른다.
  • 인터럽트 시그널을 해당 cpu의 local APIC에 전달한다.

큰 APIC과 프로세서마다 local APIC을 가지는 구조로 설계

This post is licensed under CC BY 4.0 by the author.