01
16

 

RAM(메모리)의 특징과 종류

RAM의 특징

휘발성 저장 장치. 주로 실행할 대상을 저장한다.

cf) ROM, 보조기억장치 등은 비휘발성 저장장치로 전원을 꺼도 내용이 유지되지만 CPU가 직접 접근할 수 없어 보관할 대상을 저장한다.

 

RAM의 용량과 성능

RAM의 용량이 크면 프로그램을 빠르게 실행할 수 있으나 어느 시점을 지나면 유의미하게 성능 향상이 이루어지지는 않는다. 

ex) 용량이 작으면 프로그램을 하나씩 RAM으로 가져오지만 크다면 필요한 프로그램을 전부 가져와 RAM에 올려놓을 수 있다. 그러나 책을 100권 가져오든 1000권 가져오든 읽는 시간이 크게 줄어들지는 않는다. 

 

RAM의 종류 

  • DRAM : Dynamic RAM. 시간이 지나면 저장된 데이터가 점차 사라지는 RAM으로 데이터의 소멸을 막기 위해 일정 주기로 데이터 재활성화(저장)를 해야한다. 소비전력이 비교적 낮고, 저렴하고, 집적도가 높다
  • SRAM : staticRAM.시간이 지나도 저장된 데이터가 사라지지 않는다. 데이터를 재활성화 할 필요가 없으며 속도가 빠르다. 소비전력이 크고, 비싸고, 집적도가 낮기 떄문에 주로 메모리보다는 캐시메모리에서 사용된다.
  • SDRAM: 클럭신호와 동기화된 DRAM. 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있다. 
  • DDR SDRAM: SDRAM의 대역폭을 넓혀 속도를 빠르게 만든 것. 한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAM을 SDR SDRAM으로 부르기도 한다. 흔히 사용하는 것은 DDR4 SDRAM으로  SDR SDRAM보다 16배 넓은 대역폭을 가진다.

 

*대역폭: 데이터를 주고받을 수 있는 길의 너비

 

메모리의 주소 공간

물리주소와 논리주소

물리주소 : 메모리가 사용하는 주소. 정보가 실제로 저장된 하드웨어상의 주소.

논리주소 : CPU와 실행프로그램이 사용하는 주소. 실행중인 프로그램 각각에 부여된 0번지부터 시작하는 주소.

 

메모리 관리 장치(MMU): CPU와 메모리가 상호작용 하기 위한 주소 변환을 수행해줌. CPU가 발생시킨 논리주소에 베이스 레지스터 값을 더해 물리주소로 변환한다

ex) 베이스 레지스터에 15000이 저장되어있고 CPU가 발생시킨 논리주소가 100번지라면 물리주소 15100번지로 변환된다

베이스 레지스터는 프로그램의 가장 작은 물리주소(첫 물리주소)를 저장하고 논리주소는 프로그램의 시작점으로부터 떨어진 거리라고 할 수 있다.

 

 

메모리 보호 기법 

한계 레지스터: 논리 주소의 최대 크기를 저장한다.  다른 프로그램의 영역을 침범하지 않도록 논리주소 범위를 벗어나는 명령어 실행을 방지한다.

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

 

CPU는 메모리에 접근하기 전에 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지 검사한다.  한계 레지스터보다 큰 경우 인터럽트(트랩)를 발생시켜 실행을 중단한다. 

 

캐시메모리

저장 장치 계층 구조

CPU에 얼마나 가까운가를 기준으로 나타낸 계층 구조.

CPU에 가까운 저장장치일 수록 빠르고, 용량이 작고 비싸다.

 

캐시메모리

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

메모리에 빈번하게 접근해야하는 CPU의 연산속도와 메모리 접근 속도를 위해 CPU가 사용할 일부 데이터를 메모리에서 미리 가져와 활용한다.

CPU(코어)와 가까운 순서대로 L1, L2, L3캐시라고 부른다. 일반적으로 L1과 L2는 코어 내부에 있고 L3은 외부에 있다.

 

  • 메모리 용량 L1 < L2 < L3
  • 메모리 속도 L3 < L2 < L1
  • 검색 순서 L1 - L2 - L3

*L1l = 명령어만 저장 / L1D= 데이터만 저장하는 분리형 캐시

 

참조 지역성의 원리

q보조기억장치는 전원이 꺼져서 기억할 대상을 저장하고 메모리는 실행중인 대상을 저장하며 캐시메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다.

캐시 히트 : 예측이 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용되는 것

캐시 미스 : 반대로 잘못 예측한 경우

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

*일반적으로 캐시 적중률은 85~95%이다.

 

캐시 메모리는 참조 지역성의 원리를 바탕으로 가져올 데이터를 결정한다.

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

   변수에 데이터를 넣고 빈번하게 가져다가 사용하는 것 처럼 CPU는 최근에 접근했던 메모리 공간을 여러번 다시 접근할 수 있다. 

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

  일반적으로 관련이 있는 데이터는 모여서 저장된다.

 

보조기억장치

하드디스크

자기적인 방식으로 데이터를 저장하는 보조기억장치. 자기디스크(magnetic disk)라고도 한다. 양면을 사용하는 여러겹의 플래터로 이루어져 있고 플래터 당 2개의 헤드가 사용된다. 모든 헤드는 하나의 디스크암에 부착되어있다.

 

플래터: 동그란 원판. 자기 물질로 덮여있어 N극과 S극을 저장한다.(0과 1의 역할 수행)

스핀들: 플래터를 회전시킨다. 분당 회전수를 RPM으로 표현한다. 15000RPM = 1분에 15000바퀴를 회전하는 하드디스크

헤드: 데이터를 읽고 쓴다. 플래터 위에서 미세하게 떠 있다.

디스크 암: 헤드를 원하는 위치로 이동시킨다

 

하드디스크 내부

트랙: 플래터를 여러 동심원으로 나누었을 때 그 중 하나의 원.

실린더 : 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위. 원통모양의 공간. 연속된 정보는 한 실린더에 등록된다(디스크 암을 움직이지 않고 데이터에 접근하기 위함) 

섹터: 트랙으로 나눈 조각 중에 한 조각. 하드디스크의 가장 작은 전송단위로 일반적으로 512바이트지만 하드디스크에 따라 다르다.

블록: 하나 이상의 섹터를 묶은 것.

 

데이터에 접근하는 시간

 

  • 탐색시간

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

  • 회전지연

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

  • 전송시간

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

 

위의 시간들은 성능에 큰 영향을 끼치는 시간으로 이것을 단축시키기 위해 RPM을 높이는 것도 중요하지만 데이터가 헤드를 조금만 옮겨도 접근할 수 있는 곳에 위치해 있는 것도 중요하다.

 

https://youtu.be/p-JJp-oLx58

(5분가량부터 실제 하드디스크가 동작하는 것을 볼 수 있다... 고장난 LP판 같은 느낌.....) 

 

플래시 메모리

전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치. USB, SD카드, SSD 등

 

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

페이지: 셀들이 모여 만들어진 단위

블록: 페이지가 모여 만들어진 단위

플레인: 블록이 모여 만들어진 단위

다이: 플레인이 모여 만들어진 단위.

플래시 메모리에서 읽기와 쓰기는 페이지 단위로 이루어지나 삭제는 블록 단위로 이루어진다.

 

메모리 종류

한 셀에 몇 비트를 저장할 수 있느냐에 따라 나뉜다.

SLC

한 셀에 1비트를 저장한다. 두 개의 정보를 표현할 수 있다. 다른 타입에 비해 비트의 빠른 입출력이 가능하다. 혼자 거주하는 집. 수명이 길지만 용량 대비 가격이 높다. 

 

MLC

한 셀에 2비트를 저장한다. 한 셀로 네 개의 정보를 표현할 수 있다. SLC타입에 비해 대용랑화 하기 유리하다. 속도와 수명은 SLC에 느리지만 저렴하다. 일반적인 플래시 메모리에 가장 많이 사용된다

 

TLC

한 셀에 3비트를 저장한다. 한 셀로 8개의 정보를 표현할 수 있다. 대용량화 하기 유리하다. 수명과 속도가 앞선 메모리에 비해 떨어지나 훨씬 저렴하다.

 

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

 

읽기와 쓰기의 상태

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

  • Free

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

  • Valid

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

  • Invalid

유효하지 않은 데이터(쓰레기값)를 저장하고 있는 상태

 

플래시 메모리는 덮어쓰기가 불가능해 Valid상태인 페이지에는 새 데이터를 저장할 수 없다.

이미 존재하는 데이터를 변경하고 싶을때 있는 것을 수정하는게 아니라 새로운 수정 데이터가 저장되며 원래 있던 데이터는 쓰레기값이 된다. 이러한 쓰레기 값을 정리하기 위해서 최근 SSD 등의 플래시 메모리는 가비지 컬렉션 기능을 제공한다.

 

RAID의 정의와 종류

RAID

데이터의 안전성과 높은 성능을 위해 여러 개의 물리적 보조 장치를 하나의 논리적 보조 기억장치처럼 사용하는 기술로 주로 하드디스크와 SSD를 사용한다.

RAID레벨: RAID의 구성방법. RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, RAID 6이 있고 이로부터 파생된 RAID 10, RAID 50 등이 있다. 

 

RAID 0

번갈아가면서 데이터를 저장한다. 저장되는 데이터가 하드디스크 개수 만큼 나뉘어 저장된다.

줄무늬처럼 분산되어 저장된 데이터를 스트라입(stripe)이라고 하며, 분산해 저장하는 것을 스트라이핑이라고 한다. 

장점 : 스트라이핑되면 저장된 데이터를 읽고 쓰는 속도가 빨라진다. 데이터를 동시에 읽고 쓸 수 있기 때문이다. 

          4TB저장 장치 한 개를 읽고 쓰는 속도보다 RAID 0으로 구성된 1TB 저장 장치 네 개의 속도가 이론상 4배 더 빠르다.

단점 : 하드 디스크 하나에 문제가 생기면 다른 모든 하드 디스크의 정보를 읽는데도 문제가 생길 수 있다.

 

RAID 1

RAID 0의 단점을 보완하기 위해 등장했다. 복사본을 만드는 방법으로 거울처럼 완전한 복사본을 만드는 구성이라 미러링이라고도 한다.

장점 : 복사본이 있어 복구가 간단하다.  

단점 : 스트라이핑이 사용되었으나 원본과 복사본 두 군데에 데이터를 쓰기 떄문에 RAID 0 보다 속도가 느리다. 

          하드디스크 개수가 한정되었을 때 용량이 적어진다. 복사본이 필요한 용량 만큼 사용자가 사용할 수 없게 된다.

 

RAID 4

오류를 검출하고 복구하기 위한 정보(패리티 비트)를 저장한 장치를 두는 구성 방식이다.

패리티를 저장한 장치를 이용해 다른 장치의 오류를 검출하고 오류가 있다면 복구한다.

장점 : RAID 4는 RAID 1보다 적은 하드 디스크로도 데이터를 안전하게 보관할 수 있다.

단점 : 패리티를 저장하는 디스크에도 데이터를 쓰게 되므로 패리티를 저장하는 장치에 병목 현상이 발생한다.

RAID 5

패리티 정보를 분산해 저장하는 방식. RAID 4의 문제를 해소한다.

 

 

RAID 6

구성은 RAID 5와 같으나 서로 다른 두 개의 패리티를 두는 방식이다.

장점 : RAID 4와 RAID 5보다 안전하다.

단점 : 새로운 정보를 저장할 떄마다 함께 저장할 패리티가 늘어났기 때문에 쓰기 속도가 느리다.

 

입출력 장치

장치 컨트롤러

수많은 입출력 장치의 종류를 중개하고 CPU나 메모리와의 전송률을 맞추기 위해 사용한다. 입출력 제어기, 입출력 모듈.

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

전송률이 높은 장치와 낮은 장치에 주고받는 데이터를 버퍼(임시 저장 공간)에 저장해 전송률을 맞춘다. 모았다가 한 번에 내보내거나 한 번에 받아 조금씩 내보내는 식.

데이터 레지스터 : 버퍼 역할. CPU와 입출력 사이 장치에 주고받을 데이터가 담긴다. 레지스터 대신 RAM을 사용하기도

상태 레지스터 : 입출력 작업을 할 준비가 되었는지 등의 상태 정보를 저장한다

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

 

장치 드라이버

장치 컨트롤러의 동작을 감지하고 제어한다. 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 한다. 프로그램이므로 실행 과정에 메모리에 저장된다.

장치 컨트롤러가 CPU와 정보를 주고 받는 방법

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

프로그램 입출력

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

1. CPU가 제어 레지스터에 쓰기 명령을 보낸다 

2. 하드 디스크 컨트롤러가 하드 디스크 상태를 확인하고 상태 레지스터에 준비가 되었다는 신호를 보낸다

3. CPU가 상태 레지스터를 주기적으로 확인하며, 준비가 되었다는 신호가 오면 정보를 데이터 레지스터에 쓴다.

 

CPU에 전달되는 명령어의 표현 방법, 메모리 저장 방법

  • 메모리 앱 입출력
  • 고립형 입출력

메모리 앱 입출력 : 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법. ex) 1024개의 주소 공간이 있을 때 0~511까지는 메모리 주소를, 512~1024까지는 입출력장치를 위한 공간으로 둔다. 

메모리에 접근하는 명령어와 입출력 장치에 접근하는 명령어를 다르게 할 필요가 없다.

 

고립형 입출력: 메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리한다. 제어 버스에 메모리 읽기/쓰기 선과 입출력장치 읽기/쓰기 선을 따로 두어 각각 1024개의 주소 공간을 사용하므로, 입출력 전용 명령어를 사용한다.

 

인터럽트 기반 입출력 

장치 컨트롤러에 의해 발생한다.

1. CPU가 장치 컨트롤러에 작업을 명령한다.

2. 장치 컨트롤러가 해당 작업을 수행하는 동안 CPU는 다른 일을 수행한다

3. 수행이 완료되면 장치 컨트롤러가 인터럽트 요청 신호를 보낸다

4.CPU가 하던 일을 백업하고 인터럽트 서비스 루틴을 실행한다.

 

장치 컨트롤러가 다수인 경우

CPU는 인터럽트 간의 우선순위에 따라 순차적으로 수행한다. 

플래그 레지스터 속 인터럽트 비트가 활성화 되어있는 경우, 인터럽트 비트를 비활성화해도 무시할 수 없는 인터럽트(NMI)가 발생한 경우 우선순위가 높은 인터럽트부터 처리한다.

 

우선순위를 반영해 다중 인터럽트를 처리하는 방법

프로그래머블 인터럽트 컨트롤러(PIC) : 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 인터럽트 요청의 우선순위를 판별한 뒤 CPU에 알려주는 장치.

  1. PIC가 장치 컨트롤러에서 인터럽트 요청 신호를 받아들인다
  2. 우선순위를 판단한 뒤 CPU에 처리해야할 인터럽트 요청 신호를 보낸다
  3. CPU가 PIC에 인터럽트 확인 신호를 보낸다
  4. PIC는 데이터 버스를 통해 CPU에 인터럽트 백터를 보낸다
  5. 인터럽트 백터를 통해 인터럽트 요청의 주체를 알게 되고, 해당 장치의 인터럽트 서비스 루틴을 실행한다.

 

DMA입출력

다른 방법과는 다르게 입출력 장치와 메모리가 CPU를 거치지 않는 방법.

시스템 버스에 DMA 컨트롤러라는 하드웨어를 연결해야한다.

  1. CPU는 DMA 컨트롤러에 입출력 장치의 주소, 수행할 연산(읽기/쓰기), 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령한다.
  2. DMA컨트롤러는 CPU대신 장치 컨트롤러와 상호작용 하며 입출력 작업을 수행한다. 필요한 경우 메모리에 직접 접근해 정보를 읽거나 쓴다.
  3. 입출력 작업이 끝나면 CPU에 인터럽트를 걸어 알려준다.

 

입출력 버스

시스템 버스를 너무 많이 사용하지 않기 위해 DMA컨트롤러와 장치컨트롤러를 입출력 버스에 연결한다.

PCI버스, PCIe버스 등이 있다.

 

 

185p
3번

SRAM: 주로 캐시메모리로 활용한다
DRAM: 주로 주 기억장치로 활용된다
DRAM: 대용량화 하기 유리하다
SRAM: 집적도가 상대적으로 낮다

205p
1번

1.레지스터
2.캐시메모리
3.메모리
4.보조기억장치
COMMENT