혼자 공부하는 컴퓨터 구조+운영체제 (3)-2

Erdos·2024년 7월 21일
0

감상

목록 보기
32/42
post-thumbnail

저자 github

3주차

  • Chapter 06 ~ 08
  • p. 185의 확인 문제 3번, p. 205의 확인 문제 1번 풀고 인증하기
  • Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기

08 입출력장치


8-1 장치 컨트롤러와 장치 드라이버

장치 컨트롤러

입출력 장치를 연결하기 위한 하드웨어적 통로

전송률(transfer rate): 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표

  • 일반적으로 CPU, 메모리의 데이터 전송률은 높지만, 입출력장치의 데이터 전송률은 낮다.

장치 컨트롤러(device controller)의 역할

  1. CPU와 입출력장치 간의 통신 중개
  2. 오류 검출
  3. 데이터 버퍼링:
    • 버퍼(임시 저장 공간)에 데이터를 조금씩 모았다가 한꺼번에 내보내거나, 데이터를 한 번에 많이 받아 조금씩 내보내는 방법
    • 장치 컨트롤러는 일반적으로 전송률이 높은 CPU와 전송률이 낮은 입출력장치와의 전송률 차이를 데이터 버퍼링으로 완화한다.

장치 컨트롤러의 내부


출처: 영어위키

  • data register: CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
  • status register: 입출력 작업할 준비가 되었는가, 작업이 완료되었는가, 오류는 없는가 상태 정보 저장
  • control register: 입출력 장치가 수행할 내용에 대한 제어 정보 저장

장치 드라이버(device driver)

  • 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
  • 입출력장치를 연결하기 위한 소프트웨어적인 통로
  • 인식하고 질행하는 주체는 운영체제.

8-2 다양한 입출력 방법

프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력

프로그램 입출력(programmed I/O)

  • 프로그램 속 명령어로 입출력 장치를 제어하는 방법
  • CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐.

CPU는 입출력 장치들의 주소를 어떻게 아는 걸까? 또는 CPU는 장치 컨트롤러의 레지스터들을 어떻게 아는 걸까?

  1. 메모리 맵 입출력(memory-mapped I/O): 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법. 메모리와 입출력장치에 같은 명령어 사용이 가능하다.
  2. 고립형 입출력(isolated I/O): 메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리하기 위한 방법. 입출력 전용 명령어를 사용해야 한다.

인터럽트 기반 입출력(Interrupt-Driven I/O)

  • 입출력장치에 의한 하드웨어 인터럽트는 장치컨트롤러에 의해 발생한다.
    1) CPU는 장치 컨트롤러에 입출력 작업 명령
    2) 장치 컨트롤러가 입출력장치 제어, 입출력 수행
    3) CPU는 다른 일
    4) 장치 컨트롤러가 입출력 작업을 모두 끝냈다. CPU에 인터럽트 요청 신호를 보냄
    5) CPU는 하던 일을 잠시 백업, 인터럽트 서비스 루틴 실행

여러 입출력장치에서 인터럽트가 동시에 발생한 경우, 인터럽트들을 어떻게 처리할까?

  1. 순차적으로
  2. 우선순위 고려
    • NMI(Non-Maskable Interrupt): 우선순위 가장 높음. 판별 불필요.
    • PIC(프로그래머블 인터럽트 컨트롤러 Programmable Interrupt Controller): 여러 장치 컨트롤러에 연결되어 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야 할 것이 무엇인지를 알려주는 장치

DMA 입출력

  • Direct Memory Access: 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식. 직접 메모리에 접근.
  • 시스템 버스에 연결된 DMA 컨트롤러(하드웨어)가 필요하다.
    - 시스템 버스는 CPU와 DMA 컨트롤러와 동시 사용이 불가하다. 어떤 것은 기다려야 함. CPU 입장에서는 cycle stealing.

DMA 입출력 가정

  1. CPU는 DMA 컨트롤러에 입출력 장치의 주소, 수행할 연산, 메모리 주소 등 정보로 입출력 작업을 명령
  2. DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용, 입출력 작업 수행. 필요한 경우 메모리에 직접 접근하여 메모리를 읽고 쓴다.
  3. 입출력 장치가 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.

입출력 버스

  • DMA를 위해 DMA 컨트롤러가 시스템 버스를 너무 자주 사용하면 CPU는 시스템 버스를 이용할 수 없다.

  • 그래서, 입출력 버스(input/output bus): DMA 컨트롤러와 장치 컨트롤러들을 별도에 버스에 연결함.

  • 현재의 컴퓨터는 입출력 버스가 있다.

  • 종류
    1) PCI 버스(Peripheral Component Interconnect bus): 컴퓨터 메인 보드에 주변 장치를 장착하는 데 쓰이는 컴퓨터 버스의 일종

    PCI 확장 슬롯

    2) PCI Express(PCle) 버스(Peripheral Component Interconnect express bus)

    Two types of PCIe slot on an Asus H81M-K motherboard

숙제


1. 기본숙제: p. 185의 확인 문제 3번

DRAM

  • 주로 주기억장치로 활용됩니다(2)
  • 대용량화하기 유리합니다(3)

SRAM

  • 주로 캐시 메모리에 활용됩니다(1)
  • 집적도가 상대적으로 낮습니다(4)

2. 기본숙제: p. 205의 확인 문제 1번

도식도 채우기

  • 레지스터
  • 캐시 메모리
  • 메모리
  • 보조 기억 장치

3. 추가숙제: Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기

  • 정의: 데이터의 안정성 혹은 높은 성능을 위해 여러 개의 물리적 보조 기억 장치를 마치 하나의 논리적 보조 기억 장치처럼 사용하는 기술

  • 종류: 대중적으로는 RAID 0, RAID 1, RAID 4, RAID 5, RAID 6

RAID 0RAID 1RAID 4RAID 5RAID 6
장점데이터가 분산되어 데이터를 읽고 쓰는 속도가 빠름복구가 매우 간단RIAD 1처럼 완전한 복사본을 만드는 대신 parity bit을 두는 방식RAID 4 병목현상 해결
단점하드 디스크 중 하나에 문제가 생긴다면 모든 하드 디스크의 정보를 읽는데 문제 발생사용가능한 용량이 줄어든다parity bit에서도 데이터를 읽고 쓰면서 병목현상 발생

[추가적으로 할 일 - 천천히...]

  • 사진 출처를 어떻게 정리할 것인지 각주/이미지 타이틀 등 방법 찾아보기
  • 직접 컴퓨터 부품들 찾아보기
  • 특정 제품 분석하기(intel 세대별 정리라든지, 노트북/데스크탑 별로 어떻게 다르게 들어가는지, windows/Mac 어떤 차이가 있는지)

🤔 어렵기도 하지만 '컴퓨터의 발자취'를 따라가는 것이라 흥미롭다.
RAM만 해도 과거에 고가였던 RDRAM은 이제 쓰지 않고 DDR SDRAM이 대세가 되었다. (유튜브로 봄) 경쟁하는 여러 기술 중에 어떤 건 남고 어떤 건 과거보다 더 발전한 모습이 제일 신기하다. ㅎㅎㅎ
뭐! CS 서적이지만, 컴퓨터의 역사책이구나 싶다.

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글