[혼공컴운] 3주차 Chapter 06~08

yeon·2024년 1월 19일
0

기본 미션

p.1854의 확인문제 3번 풀고 인증하기

  1. 다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요.

보기: SRAM, DRAM

  • 주로 캐시 메모리로 활용됩니다. ( 1 )
  • 주로 주기억장치로 활용됩니다. ( 2 )
  • 대용량화하기 유리합니다. ( 3 )
  • 집적도가 상대적으로 낮습니다. ( 4 )

정답
(1) SRAM, (2) DRAM, (3) DRAM, (4) SRAM

p.205의 확인문제 1번 풀고 인증하기

  1. 다음 보기에 있는 저장 장치들로 저장 장치 계층 구조 도식도를 채우세요.

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


정답
(1): 레지스터
(2): 캐시 메모리
(3): 메모리
(4): 보조기억장치

선택 미션

ch.07(7-1) RAID의 정의와 종류를 간단히 정리해보기

RAID (Redundant Array of Independent Disks):
주로 하드 디스크와 SSD를 사용하는 기술로, 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술

RAID 0
데이터를 단순히 나누어 저장하는 방식

  • 장점: 입출력 속도의 향상
  • 단점: 저장된 정보가 안전하지 않음

RAID 1
미러링 (mirroring): 데이터를 쓸 때 원본과 복사본 두 군데에 씀 (느린 쓰기 속도)

  • 복사본이 만들어지는 용량만큼 사용 불가
    -> 많은 양의 하드 디스크가 필요
    -> 비용 증가

RAID 4
RAID 1처럼 완전한 복사본을 만드는 대신 패리티 비트 (오류를 검출하고 복구하기 위한 정보를 저장한 장치)를 저장

  • 패리티를 저장한 장치를 이용해 다른 장치들의 오류를 검출하고, 오류가 있다면 복구
  • 패리티 비트는 본래 오류 검출용 정보지만, RAID에서는 오류 복구도 가능
  • 단점: 패리티 디스크의 병목

RAID 5
패리티 정보를 분산하여 저장하는 방식

  • RAID 4는 패리티를 저장한 장치를 따로 두는 방식이고, RAID 5는 패리티를 분산하여 저장하는 방식

RAID 6
두 종류의 패리티

  • RAID 5보다 안전. 쓰기는 RAID 5보다 느림
  • RAID 6는 서로 다른 두 개의 패리티를 두는 방식

내용 정리

6-1. RAM의 특징과 종류

  • RAM: 휘발성 저장 장치
  • 보조기억장치: 비휘발성 저장 장치
  • DRAM (Dynamic RAM)은 시간이 지나면 저장된 데이터가 점차 사라지는 RAM이고, SRAM (Staic RAM)은 시간이 지나도 저장된 데이터가 사라지지 않는 RAM
  • SDRAM (Synchronous Dynamic RAM): 클럭과 동기화된 DRAM
  • DDR SDRAM (Double Data Rate SDRAM): SDR SDRAM에 비해 대역폭이 두 배 넓음
  • 보조기억장치에는 보관할 대상 저장. RAM에는 실행할 대상 저장
  • RAM 용량이 크면 많은 프로그램들을 동시에 빠르기 실행하는 데 유리
    - 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지는 않음


    DRAM과 SRAM의 차이점
    DRAM과 SRAM의 차이점

6-2. 메모리의 주소 공간

  • 물리 주소: 메모리 하드웨어상의 주소
  • 논리 주소: CPU와 실행 중인 프로그램이 사용하는 주소
  • MMU: 논리 주소를 물리 주소로 변환
  • 베이스 레지스터: 프로그램의 첫 물리 주소를 저장
  • 한계 레지스터: 실행 중인 프로그램의 논리 주소의 최대 크기를 저장

물리 주소

  • 메모리 입장에서 바라본 주소
  • 말 그대로 정보가 실제로 저장된 하드웨어 상의 주소

논리 주소

  • CPU와 실행 중인 프로그램 입장에서 바라본 주소
  • 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소

메모리 관리 장치 (MMU: Memory Management Unit)

  • 논리 주소를 물리 주소로 변환

    MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환

베이스 레지스터: 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소 저장
논리 주소: 프로그램의 시작점으로부터 떨어진 거리
한계 레지스터: 논리 주소의 최대 크기 저장

베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 값 + 한계 레지스터 값

-> 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 검사함으로써 메모리 내의 프로그램을 보호할 수 있음


6-3. 캐시 메모리

  • 저장 장치 계층 구조: 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조
  • 캐시 메모리: CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장 장치
  • 캐시 적중률이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있음
  • 캐시 메모리는 참조 지역성의 원리에 따라 데이터를 예측하여 캐시 적중률을 높임

저장 장치 계층 구조 (memory hierarchy)
: 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조

1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.

-> 낮은 가격대의 대용량 저장 장치를 원한다면, 느린 속도는 감수해야 하고, 빠른 메모리를 원한다면 작은 용량과 비싼 가격은 감수해야 함.

캐시 메모리
: CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치

  • CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생

멀티 코어 프로세서에서의 L1-L2-L3 캐시

  • L1 캐시와 L2 캐시는 코어마다 고유한 캐시 메모리로 할당
  • L3 캐시는 여러 코어가 공유하는 형태로 사용
  • 싱크를 맞추는 게 중요한 문제
  • 분리형 캐시: 조금이라도 접근 속도를 빠르게 만들기 위해 명령어만을 저장하는 L1 캐시인 L1I 캐시와 데이터만을 저장하는 L1 캐시인 L1D 캐시로 분리하는 경우도 있음

참조 지역성 원리 (locality of reference, principle of locality)

  1. CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
    -> 시간 지역성 (temporal locality)
  2. CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
    -> 공간 지역성 (spatial locality)

+) 캐시 적중률이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있음

캐시 적중률 (cache hit ratio): 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

  • 캐시 히트 (cache hit): 자주 사용할 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
  • 캐시 미스 (cache miss): 자주 사용될 것으로 예측하여 캐시 메모리에 저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우

7-1. 다양한 보조기억장치

  • 하드 디스크의 구성 요소에는 플래터, 스핀들, 헤드, 디스크 암이 있음
  • 플래터는 트랙과 섹터로 나뉘고, 여러 플래터의 동일한 트랙이 모여 실린더를 이룸
  • 하드 디스크의 데이터 접근 시간은 크게 탐색 시간, 회전 지연, 전송 시간으로 나뉨
  • 플래시 메모리는 한 셀에 몇 비트를 저장할 수 있느냐에 따라 SLC, MLC, TLC로 나뉨
  • 플래시 메모리의 읽기와 쓰기는 페이지 단위로, 삭제는 블록 단위로 이루어짐

하드 디스크
: 자기적인 방식으로 데이터를 저장하는 보조기억장치



하나 이상의 섹터를 묶어 블록(block)이라고 표현하기도 함
플래터는 트랙과 섹터로 나뉘고, 같은 트랙이 모여 실린더를 이룸

하드 디스크가 데이터에 접근하는 시간

  • 탐색 시간 (seek time): 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
  • 회전 지연 (rotational latency): 헤드가 있는 곳으로 플래터를 회전시키는 시간
  • 전송 시간 (transfer time): 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간

플래시 메모리

  • 셀: 플래시 메모리에서 데이터를 저장하는 가장 작은 단위
  • 하나의 셀에 몇 비트를 저장할 수 있는냐에 따라 플래시 메모리 종류가 나뉨
    -> 같은 플래시 메모리라도 내부구조에 따라 수명, 가격, 성능이 다름
  • 셀들이 모여 만들어진 단위를 페이지 (page), 페이지가 모여 만들어진 단위를 블록 (block), 블록이 모여 플레인 (plane), 플레인이 모여 다이 (die)가 됨
  • 플래시 메모리에서 읽기와 쓰기는 페이지 단위, 삭제는 페이지보다 큰 블록 단위로 이루어짐
  • 페이지는 Free, Valid, Invalid 상태를 가질 수 있음
    • Free 상태: 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
    • Valid 상태: 이미 유효한 데이터를 저장하고 있는 상태
    • Invalid 상태: 쓰레기값이라 부르는 유효하지 않은 데이터를 저장하고 있는 상태
    • 플래시 메모리는 하드 디스크와는 달리 덮어쓰기가 불가능하여 Valid 상태인 페이지에는 새 데이터를 저장할 수 없음
    • 가비지 컬렉션 (garbage collecion): 유효한 페이지들만을 새로운 블럭으로 복사한 후 기존의 블럭을 삭제하여 공간을 정리하는 기능
      -> 블록 X의 모든 유효한 페이지를 새로운 블록 Y로 옮기고 블록 X 삭제

7-2. RAID의 정의와 종류

  • RAID: 데이터의 안전성 혹은 높은 성능을 위해 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술
  • RAID 0: 데이터를 단순히 병렬로 분산하여 저장
  • RAID 1: 완전한 복사본을 만듦
  • RAID 4: 패리티를 저장한 장치를 따로 두는 방식
  • RAID 5: 패리티를 분산하여 저장하는 방식
  • RAID 6: 서로 다른 두 개의 패리티를 두는 방식
  • 보조기억장치들의 성능을 높일 수 있음
  • 데이터를 안전하게 보관할 수 있음

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

  • 입출력장치: 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받음
  • 장치 드라이버: 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램

컴퓨터 내부와 정보를 주고받기 위해 입출력장치가 장치 컨트롤러를 이용하는 이유

  • 입출력장치는 종류가 많아 주고받는 정보의 규격화가 어려움
  • 일반적으로 입출력장치와 CPU 간에 전송률의 차이가 크기 때문에
    - 전송률 (transfer rate): 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표

장치 컨트롤러의 기능

  • CPU와 입출력장치 간의 통신 중개
  • 오류 검출
  • 데이터 버퍼링
    • 버퍼링 (bufferring): 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼 (buffer)라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
      -> 장치 컨트롤러는 일반적으로 전송률이 높은 CPU와 일반적으로 전송률이 낮은 입출력장치와의 전송률 차이를 데이터 버퍼링으로 완화

장치 컨트롤러의 간략화된 내부 구조

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

장치 드라이버 (device driver)
: 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램

  • 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 함
    • 장치 컨트롤러: 입출력장치를 연결하기 위한 하드웨어적인 통로
    • 장치 드라이버: 입출력장치를 연결하기 위한 소프트웨어 적인 통로
  • 컴퓨터가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면 컴퓨터 내부와 정보를 주고받을 수 있음 (장치의 제조사나 생김새 상관없이)
  • 장치 드라이버를 인식하거나 실행할 수 없는 상태라면 그 장치는 컴퓨터 내부와 정보를 주고받을 수 없음

8-2. 다양한 입출력 방법

  • 프로그램 입출력: 프로그램 속 명령어로 입출력 작업을 하는 방식
  • 메모리 맵 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 입출력 방식
  • 고립형 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 별도로 분리하는 입출력 방식
  • 인터럽트 기반 입출력: 인터럽트로서 입출력을 수행하는 방법
  • DMA 입출력: CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고받는 입출력 방식
  • 입출력 버스: 입출력장치와 컴퓨터 내부를 연결짓는 통로로, 입출력 작업 과정에서 시스템 버스 사용 횟수를 줄여줌

프로그램 입출력 (programmed I/O)
: 프로그램 속 명령어로 입출력장치를 제어하는 방법

  • 입출력 명령어로서 장치 컨트롤러와 상호작용
  • CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐
  • 메모리 맵 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 입출력 방식
    • 메모리와 입출력장치에 동일한 명령어로서 접근


  • 고립형 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 분리하는 입출력 방식
    • 메모리 읽기/쓰기 선이 활성화되는 명령어를 실행할 때는 메모리에 접근하고, 입출력장치 읽기/쓰기 선이 활성화되는 명령어를 실행할 떄는 장치 컨트롤러에 접근
    • 메모리에 접근하는 명령어와는 다른 (입출력 읽기/쓰기 선을 활성화시키는) 입출력 명령어 사용

인터럽트 기반 입출력 (Interrupt-Driven I/O)
: 인터럽트를 기반으로 하는 입출력

  • 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴 실행

플래그 레지스터 속 인터럽트 비트를 비활성화한 채 인터럽트를 처리하는 경우

  • 입출력 장치에 발생하는 하드웨어 인터럽트에 한함


NMI가 발생한 경우, 플래그 레지스터 속 인터럽트 비트를 활성화한 채 인터럽트를 처리하는 경우

  • NMI (Non-Maskable Interrupt): 인터럽트 비트를 활성화해도 무시할 수 없는 인터럽트
  • 프로그래머블 인터럽트 컨트롤러 (PIC: Programmable Interrupt Controller)를 사용해 우선순위를 반영하여 다중 인터럽트를 처리
    • 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야 할 하드웨어 인터럽트는 무엇인지 알려줌
      • 1) PIC가 장치 컨트롤러에서 인터럽트 요청 신호를 받아들임
      • 2) PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야 할 인터럽트 요청 신호를 보냄
      • 3) CPU는 PIC에 인터럽트 확인 신호를 보냄
      • 4) PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터를 보냄
      • 5) CPU는 인터럽트 벡터를 통해 인터럽트 요청의 주체를 알게 되고, 해당 장치의 인터럽트 서비스 루틴을 실행함
    • PIC가 NMI의 우선순위까지 판별하진 않음
      • NMI는 우선순위가 가장 높아 우선순위 판별이 불필요함
      • PIC가 우선순위를 조정해 주는 인터럽트는 인터럽트 비트를 통해 막을 수 있는 하드웨어 인터럽트

DMA (Direct Memory Access) 입출력
: CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고받는 입출력 방식

  • DMA 입출력을 하기 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요
    • DMA 입출력 과정
      1. CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산(읽기/쓰기), 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령
      2. DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행. 이떄 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씀
      3. 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알림
  • DMA는 프로그램 입출력보다 CPU의 입출력 부담이 적음
  • DMA 컨트롤러는 CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고 받음
  • DMA 컨트롤러와 CPU는 시스템 버스를 동시에 사용할 수 없음
    -> DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스 (input/output bus)라는 별도의 버스에 연결하여 해결

0개의 댓글