ETC/컴퓨터 구조+운영체제

혼공학습단 12기 - 메모리와 캐시 메모리, 보조기억장치

주눅 2024. 7. 25. 04:00

.......

3주차... 왜 이렇게 잔뜩 늦었는지 궁금하시면

아래 내용을 긁어보세요

[그동안 왔던 연락을 전부 자격증 시험 뒤로 미뤄놨더니... 매일매일 약속이 있었음]

 

이건 정말 변명이지만

공부할 시간이 없더군요...

그래도 이번 주는 반드시 지각하지 않겠노라 다짐


숙제

1. 다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요. (185쪽 3번 문제)

보기 SRAM, DRAM

 

주로 캐시 메모리로 활용됩니다. (SRAM)

주로 주기억장치로 활용됩니다. (DRAM)

대용량화하기 유리합니다. (DRAM)

집적도가 상대적으로 낮습니다. (SRAM)

 

 

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

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

 

01


Chapter 06. 메모리와 캐시 메모리

학습 목표 1. RAM의 특징과 종류에 대해 학습합니다.

학습 목표 2. 논리 주소와 물리 주소의 차이를 이해합니다.

학습 목표 3. 논리 주소를 물리 주소로 변환하는 방법을 이해합니다.

학습 목표 4. 캐시 메모리와 저장 장치 계층 구조의 개념을 이해합니다.

 

RAM

RAM은 휘발성 저장 장치다. 전원을 끄면 저장된 명령어와 데이터가 모두 삭제된다.

이와 반대되는 개념을 비휘발성 저장 장치라고 한다. ex: SSD, CD-ROM, USB…

다음과 같은 종류로 나뉜다.

 

DRAM

Dynamic RAM의 줄임말. 저장된 데이터가 동적으로 변하는 RAM을 의미한다.

시간이 지나면 점차 데이터가 사라지는 RAM을 뜻함.

데이터의 소멸을 막기 위해 주기적으로 데이터를 다시 저장한다. (=재활성화한다)

 

소비 전력이 낮고, 저렴하고, 집적도가 높음. 대용량으로 설계하기에 유리하다.

 

SRAM

Static RAM의 줄임말. 저장된 데이터가 변하지 않는 RAM을 의미한다.

DRAM과 달리 시간이 지나도 저장된 데이터가 손실되지 않는다. (=재활성화 필요 없음)

DRAM보다 속도가 빠르다는 특징이 있다.

 

집적도가 낮고, 소비전력이 크며, 값이 비싸다.

캐시 메모리에 주로 사용된다. (대용량일 필요가 없지만 빨라야 하는 저장장치)

 

  DRAM SRAM
재충전 필요함 필요 없음
속도 느림 빠름
가격 저렴함 비쌈
집적도 높음 낮음
소비 전력 적음 많음
사용 용도 주기억장치 캐시 메모리

 

SDRAM

Synchronous Dynamic RAM의 줄임말. 클럭 신호와 동기화된, 발전된 형태의 DRAM이다.

클럭 타이밍에 맞춰 CPU와 정보를 주고받는 것이 가능해진다.

 

DDR SDRAM

 Double Data Rate SDRAM의 약자. 가장 흔히 사용된다.

대역폭을 넓혀 속도를 빠르게 만든 SDRAM.


 

물리 주소와 논리 주소

물리 주소physical address

정보가 실제로 저장된 하드웨어상의 주소를 의미한다. 메모리가 사용한다.

 

논리 주소logical address

실행 중인 프로그램 각각에게 부여된 주소. 0번지부터 시작하며,

CPU와 프로그램이 사용한다.

 

메모리 관리 장치MMU; Memory Management Unit

논리 주소와 물리 주소 간의 변환을 담당한다. CPU와 주소 버스 사이에 위치해 있음.

논리 주소에 베이스 레지스터 값을 더해 물리 주소로 변환시킨다.

 

한계 레지스터limit register

논리 주소 범위를 벗어나는 명령어의 실행을 방지하고,

실행 중인 프로그램이 다른 프로그램에 영향을 받지 않게끔 보호하는 역할을 한다.

 

CPU는 메모리에 접근하기 전,

접근하고자 하는 논리 주소가 한계 레지스터의 값보다 작은 지를 항상 검사한다.

만약 CPU가 한계 레지스터보다 높은 값의 논리 주소에 접근하려고 하면

인터럽트를 발생시켜 실행을 중단시킨다.

 

이 과정을 통해 실행 중인 프로그램의 독립적인 실행 공간을 확보하고,

하나의 프로그램이 다른 프로그램을 침범하지 못하게끔 보호하는 역할을 한다.


 

저장 장치 계층 구조 memory hierarchy

컴퓨터가 사용하는 저장 장치들은 'CPU에 얼마나 가까운가'를 기준으로

계층적으로 나타낼 수 있다.

 

캐시 메모리cache memory

레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장장치.

CPU와 메모리 사이에 위치해 있다.

CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 만들어졌다.

 

 

캐시 메모리는 CPU와 가까운 순서대로 또다시 계층을 구성한다.

CPU와 가장 가까운 캐시 메모리를 L1 캐시, 그다음을 L2 캐시, 그 다음을 L3 캐시라고 부른다.

일반적으로 L1, L2 캐시는 CPU의 내부에, L3 캐시는 외부에 위치해 있다.

 

캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다.

이때, 예측한 데이터가 들어맞아 실제로 캐시 메모리 안의 데이터가 CPU에 활용되는 경우를 캐시 히트cashe hit라고 한다.

반대로, 예측이 틀려 CPU가 메모리에서 필요한 데이터를 직접 가져와야 하는 경우를 캐시 미스cache miss라고 한다.

 

캐시 적중률cache hit ratio는 다음과 같이 계산한다.

캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

 

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

CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리.

캐시 메모리는 참조 지역성의 원리에 따라 메모리로부터 가져올 데이터를 정한다.

 

1. CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.

=시간 지역성temporal locality

 

2. CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.

=공간 지역성spatial locality


Chapter 07. 보조기억장치

학습 목표 1. 하드 디스크 구조와 작동 원리를 이해합니다.

학습 목표 2. 플래시 메모리 구조와 작동 원리를 이해합니다.

학습 목표 3. RAID의 의미와 다양한 RAID 레벨을 학습합니다. 

 

하드디스크HDD; Hard Disk Drive

자기적인 방식으로 데이터를 저장하는 보조기억장치.

하드디스크를 자기 디스크의 일종이라 지칭하기도 한다.

 

하드디스크 속 동그란 원판에 데이터가 저장된다. 이를 플래터platter라고 한다.

플래터를 회전시키는 요소를 스핀들spindle이라고 부르며,

스핀들이 플래터를 회전시키는 속도는 RPM이라는 단위로 표현한다.

이는 분 당 회전수를 나타내는 단위다.

 

헤드head는 플래터 위에 있는 바늘같이 생긴 부품으로, 헤드를 통해 데이터를 읽고 쓴다.

헤드는 디스크 암disk arm에 부착되어 있다. 디스크 암은 헤드를 원하는 위치로 이동시키는 역할을 한다.

 

퍼온 이미지

 

트랙Track

플래터를 여러 등심원으로 나누었을 때, 그중 하나의 원.

 

섹터Sector

여러 조각으로 나눈 트랙 중 하나. 하드 디스크의 가장 작은 전송 단위.

일반적으로 512바이트의 크기를 가진다. 4KB(4,096바이트)의 크기를 가지는 섹터도 있다.

 

실린더Cyilnder

여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위.

연속된 정보는 한 실린더에 기록된다. (=디스크 암을 움직이지 않고 바로 접근할 수 있기 때문)

 

+) 클러스터Cluster

책에는 없는 내용이지만 퍼온 이미지에 표시되어 있어서 따로 알아봄!

파일 시스템에서 사용하는 논리적인 저장 단위. 여러 섹터를 묶어 형성된다.

클러스터의 크기는 일반적으로 4KB, 8KB, 16KB 등 여러 섹터를 포함한 만큼의 값을 가진다.

 

++) 섹터와 클러스터의 차이점

  섹터 클러스터
단위 물리적 단위 논리적 단위
크기 512바이트, 4KB 4KB, 8KB, 16KB 등
역할 실제 데이터를 저장하는 최소 단위 파일 시스템에서 파일들을 관리하기 위해 사용하는 최소 단위

 

하드디스크가 저장된 데이터에 접근하는 시간은 크게

탐색 시간, 회전 지연, 전송 시간으로 나뉜다.

 

탐색 시간seek time

접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간.

 

회전 지연rotational latency

헤드가 있는 곳으로 플래터를 회전시키는 시간.

 

전송 시간transfer time

하드디스크와 컴퓨터 간에 데이터를 전송하는 시간.

 

탐색 시간과 회전 지연을 단축시키기 위해서는 참조 지역성,

접근하려는 데이터가 플래터 혹은 헤드를 조금만 옮겨도 접근할 수 있는 위치에 있는 것이 중요하다.


 

플래시 메모리flash memory

전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장장치.

USB, SD 카드, SSD 등이 해당된다.

 

셀cell

플래시 메모리에서 데이터를 저장하는 가장 작은 단위.

한 셀에 1비트를 저장할 수 있는 플래시 메모리를 SLC;single level cell 타입,

한 셀에 2비트를 저장할 수 있는 메모리를 MLC;multiple level cell 타입,

한 셀에 3비트를 저장할 수 있는 메모리를 TLC; triple-level cell 타입이라고 한다.

 

이는 플래시 메모리의 수명, 속도, 가격에 큰 영향을 끼친다.

 

SLC 타입

한 셀로 두 가지 정보를 표현할 수 있다.

MLC나 TLC에 비해 비트의 빠른 입출력이 가능하고, 수명도 길지만 용량 대비 가격이 높다.

데이터를 읽고 쓰기가 매우 많이 반복되는 고성능의 빠른 저장장치에 사용된다.

 

MLC 타입

한 셀로 네 가지 정보를 표현할 수 있다.

한 셀에 두 비트씩 저장할 수 있다는 점에서 SLC 타입보다 대용량화에 유리하다.

용량 대비 가격이 저렴함.

 

TLC 타입

한 셀로 여덟 개의 정보를 표현할 수 있다. 대용화에 유리하다.

수명과 속도가 SLC, MLC보다 떨어지지만, 용량 대비 가격이 저렴하다.

 

  SLC MLC TLC
셀당 bit 1bit 2bit 3bit
수명 길다 보통 짧다
읽기/쓰기 속도 빠르다 보통 느리다
용량 대비 가격 높다 보통 낮다

 

 

이건 책에 있는 삽화

 

셀들이 모여 만들어진 단위를 페이지page, 페이지가 모여 만들어진 단위를 블록block,

블록이 모여 플레인plane, 플레인이 모여 다이die가 된다.

 

읽기와 쓰기는 페이지 단위로 이루어지지만, 삭제는 블록 단위로 이루어진다.

읽기/쓰기 단위와 삭제 단위가 다르다는 것이 플래시 메모리의 가장 큰 특징이다.

 

페이지는 총 세 개의 상태를 가진다.

 

Free 상태

어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태.

 

Valid 상태

이미 유효한 데이터를 저장하고 있는 상태.

덮어쓰기가 불가능한 플래시메모리의 특징 때문에,

Valid 상태인 페이지에는 새 데이터를 저장할 수 없다.

 

Invalid 상태 

쓰레기 값이라고 부르는 유효하지 않은 데이터를 저장하고 있는 상태.

이러한 쓰레기 값을 정리하기 위한 가비지 컬렉션garbage collection 기능을 제공하기도 하는데,

이는 유효한 페이지들만 새로운 블록으로 복사한 후,

기존 블록을 삭제해 쓰레기 값의 공간을 정리하는 기능이다.


 

RAID;Redundant Array of Independent Disks

하드디스크와 SSD를 이용하는 기술.

데이터의 안정성, 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치

하나의 논리적 보조기억장치처럼 사용하는 기술을 뜻한다.

 

RAID의 구성 방법을 RAID 레벨이라고 표현하는데, 

대표적으로 RAID 0, RAID 1, …, RAID 6이 있다.

(RAID 2, RAID 3은 현재 잘 활용되지 않는다)

 

RAID 0

여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식.

출처 Wikipedia

 

이때 마치 줄무늬처럼 분산되어 저장된 데이터를 스트라입stripe이라고 하고,

이렇게 분산하여 저장하는 것을 스트라이핑striping이라고 한다.

스트라이핑 되면 저장된 데이터를 읽고 쓰는 속도가 빨라진다.

 

하지만, 저장된 데이터가 안전하지 않다는 단점이 있다. 

RAID 0으로 구성된 디스크 중 하나에 문제가 생긴다면

다른 모든 디스크의 정보를 읽는 데에 문제가 생길 수 있다.

 

RAID 1

RAID 0의 단점을 보완하기 위해 등장.

출처 Wikipedia

 

복사본을 만드는 방식이기에 미러링mirroring이라고도 한다.

RAID 1에 데이터를 쓸 때에는 원본과 복사본, 두 군데에 같은 내용을 적는다.

쓰기 속도는 RAID 0보다 느리지만, 복구가 매우 간단하다는 장점이 있다.

하지만 하드디스크의 개수가 한정되었을 대 사용 가능한 용량이 적어지는 단점이 있다.

 

RAID 0은 데이터를 균등하게 분산하여 저장하고,

RAID 1은 완전한 복사본을 만드는 방식이다.


 

RAID 4

출처 wikipedia

 

RAID 1처럼 완전한 복사본을 만드는 대신,

오류를 검출하고 복구하기 위한 정보를 저장하는 장치를 따로 두는 방식.

이때 ' 오류를 검출하고 복구하기 위한 정보'를 패리티 비트parity bit라고 한다.

이를 활용해 RAID 1보다 적은 하드디스크로도 데이터를 안전하게 보관할 수 있다.

 

RAID 5

RAID 4에서는 패리티를 저장하는 장치에 병목현상이 발생한다는 문제가 발생하곤 한다.

RAID 5는 아래 그림처럼 패리티 정보를 분산, 저장하는 방식으로 병목 현상을 해소한다.

출처 wikipedia

 

RAID 6

기본적으로 RAID 5와 같으나, 서로 다른 두 개의 패리티를 두는 방식.

RAID 4, RAID 5보다 안전한 구성이다.

출처 wikipedia

 

패리티가 두 개이므로 쓰기 속도가 RAID 5보다 느리지만,

데이터를 더욱 안전하게 보관할 수 있다.


Chapter 08. 입출력장치

학습 목표 1. 장치 컨트롤러에 대해 이해합니다.

학습 목표 2. 장치 드라이버에 대해 이해합니다.

학습 목표 3. 프로그램 입출력 방식이 무엇인지 이해합니다.

학습 목표 4. 인터럽트 기반의 입출력 방식을 이해합니다.

학습 목표 5. DMA 입출력 방식을 이해합니다. 

 

장치 컨트롤러

입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결된다.

장치 컨트롤러는 입출력 제어기, 입출력 모듈 등으로 다양하게 불리기도 한다.

 

장치 컨트롤러는 대표적으로 다음과 같은 역할을 한다.

CPU와 입출력장치 간의 통신 중개, 오류 검출, 데이터 버퍼링

 

버퍼링buffering이란, 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를

버퍼buffer라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법이다. 

장치 컨트롤러는 일반적으로 전송률이 높은 CPU와 전송률이 낮은 입출력장치 사이의

전송률 차이를 데이터 버퍼링으로 완화시킨다.

 

장치 컨트롤러는 다음과 같은 세 가지 장치로 구성된다.

 

데이터 레지스터data register

CPU와 입출력장치가 주고받을 데이터가 담기는 레지스터.

버퍼 역할을 한다. 레지스터 대신 RAM을 사용하기도 한다.

 

상태 레지스터status register

입출력장치가 작업을 할 준비가 되었는지, 작업이 완료되었는지,

오류는 없는지 등의 상태 정보를 저장한다.

 

제어 레지스터control register

입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장한다.

 

레지스터에 담긴 값은 버스를 타고 CPU나 다른 입출력장치로 전달되기도 하고,

장치 컨트롤러에 연결된 입출력장치로 전달되기도 한다.

 

장치 드라이버device driver

장치 컨트롤러의 동작을 감지하고 제어함으로써

컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램.

입출력장치를 연결하기 위한 소프트웨어적인 통로.

 

운영체제가 기본으로 제공하기도 하지만, 장치 드라이버가 따로 제공되는 경우

해당 드라이버를 직접 설치해야만 사용이 가능하다.

(설치되어있지 않다면 해당 장치를 사용할 수 없다.)

 


 

장치 컨트롤러는 다음과 같은 방법으로 CPU와 정보를 주고받는다.

 

프로그램 입출력programmed I/O

프로그램 속 명령어로 입출력장치를 제어하는 방법.

CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만나면,

CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행한다.

 

명령어를 표현하고 메모리에 저장하는 방식은 크게 두 가지가 있다.

 

1. 메모리 맵 입출력memory-mapped I/O

메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을

하나의 주소 공간으로 간주하는 입출력 방식.

 

2. 고립형 입출력isolated I/O

메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법.

 

인터럽트 기반 입출력Interrput-Driven I/O

인터럽트를 기반으로 하는 입출력 방식.

 

DMA;Direct Memory Access 입출력 

입출력장치와 메모리가 CPU를 거치지 않고도 상호작용 할 수 있는 입출력 방식.

DMA 입출력을 위해서는 DMA 컨트롤러라는 하드웨어가 필요하다.