[혼공컴운]3주차_Chap06~08 정리

임지·2025년 1월 27일
0

혼공컴운

목록 보기
3/6

1. 메모리

메모리의 크기에 따른 특성

메모리(=RAM)은 전원을 끄면 정보가 날아가는 휘발성 기억장치이고, 보조기억장치는 전원을 꺼도 정보가 남아있는 비휘발성 기억장치이다.

보조기억장치에서 프로그램을 가져올 때, 메모리 용량이 작다면 한 번에 많은 프로그램을 실행하는데에 어려움이 있다.

따라서 메모리의 용량이 크다면 그만큼 많은 프로그램을 동시에 실행할 수 있게 되고, 실행 속도도 어느정도 증가한다.

RAM의 종류

  • DRAM
    Dynamic RAM의 준말. 데이터가 동적으로 사라짐
    즉, 시간이 지나면 데이터가 점차 사라짐.
    따라서 주기적으로 데이터를 재활성화 해야함.
    일반적으로 사용하는 메모리는 DRAM.
    소비 전력이 낮고, 저렴하고, 집적도가 높아 대용량으로 설계하기 유리.
  • SRAM
    Static RAM의 준말. 데이터가 시간이 지나도 사라지지 않음.
    데이터를 재활성화 할 필요가 없어 속도도 DRAM보다 빠름.
    단, 소비 전력이 높고 비싸며, 집적도가 낮음.
    따라서 빠른 속도가 요구되는 캐시 메모리에 많이 쓰임.
  • SDRAM
    Synchronous Dynamic RAM의 준말. DRAM에서 좀 더 발전된 버전.
    클럭 신호와 동기화되어 CPU와 정보를 주고 받음.
    (SRAM과 DRAM의 혼합된 버전이 아님.)
  • DDR SDRAM
    Double Data Rate SDRAM의 준말. SDRAM에서 좀 더 발전된 버전.
    Data Rate는 대역폭을 의미. 정보가 오고가는 통로의 너비를 뜻함.
    DDR SDRAM은 기존 SDRAM에서 대역폭이 2배인 SDRAM임.
    즉, 한 클럭당 두 개의 데이터를 주고받음.
    (그래서 한 클럭당 하나의 데이터를 주고받는 SDRAM을 SDR(Single Data Rate) SDRAM이라고도 함.)

참고로, DDR2 SDRAM은 DDR SDRAM보다 대역폭이 2배, DDR3 SDRAM은 DDR2 SDRAM보다 대역폭이 2배 넓다.

최근 메모리로서 사용하는 RAM은 DDR4 SDRAM으로, SDR SDRAM보다 대역폭이 16배 넓다.

2. 메모리의 주소 공간

메모리 하드웨어 상에서 의미하는 주소 공간은 물리 주소라고 하고,
CPU가 실행중인 프로그램 상에서 의미하는 주소 공간은 논리 주소라고 한다.

논리 주소

  • CPU가 실행하는 프로그램은 메모리 하드웨어 내에 저장된 모든 내용을 알지 못 한다. 또한, 알 필요도 없다.
  • 메모리 내의 데이터는 시시각각 변화한다. 따라서 같은 프로그램이라고 할 지라도 메모리 내에 적재된 주소값은 변할 수 있다.
  • 논리 주소는 프로그램 내에서 설정된, 프로그램 자신만의 0번지~N번지의 주소를 의미한다.

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

앞서 논리 주소는 프로그램이 사용하는 주소라고 했었다. 메모리 내의 데이터를 가져오거나 저장하려면 이러한 논리 주소를 물리 주소로 변환해야한다.

  1. CPU가 논리 주소를 발생시킨다.
  2. 한계 레지스터에 저장된 값과 CPU가 발생시킨 논리 주소값을 비교한다. (다음 파트에서 설명)
  3. MMU(Memory Management Unit)이 해당 논리 주소 값에 베이스 레지스터에 저장된 값을 더해 물리 주소로 변환한다.

  • MMU : CPU와 주소 버스 사이에 위치한 메모리 관리 장치이다. 논리 주소를 물리 주소로 변환하는 역할을 한다.

즉, 베이스 레지스터는 프로그램의 가장 작은, 시작점이 되는 물리 주소를 저장하고, 논리 주소는 베이스 레지스터가 저장한 값으로부터 얼마나 떨어져 있는가를 의미한다.

메모리 보호 기법

예를 들어, 0~999번까지의 논리 주소를 가진 프로그램이 있다고 쳤을 때, CPU가 MMU로 논리 주소 1500번지를 전달하면 어떻게 될까? 논리 주소값이 프로그램의 크기를 넘어섰기 때문에 메모리 내에서 엉뚱한 프로그램 위치에 접근하게 될 것이다.

이러한 메모리 침범을 막기 위해 한계 레지스터를 사용한다.

  • 한계 레지스터
    • 해당 프로그램의 논리 주소의 최대 크기를 저장.
    • 즉, 프로그램의 크기를 저장.
    • CPU가 발생시킨 논리주소값이 한계 레지스터에 저장된 값보다 크면, 인터럽트(트랩)을 발생시킨다.
    • 베이스 레지스터 값과 논리 주소 값을 더하기 전에, 한계 레지스터에서 알맞은 범위의 논리 주소 값인지 확인한다.

2. 캐시 메모리

메모리 계층구조

빠르고 저렴하고, 대용량화도 유용한 저장 장치가 있다면 좋겠지만, 그런 장치는 없다. 보통은

  • CPU와 가까이 있으면 속도가 빠르고, 멀면 느리다.
  • 속도가 빠르면 용량이 작고, 가격이 비싸다.

이러한 명제를 따르기 때문이다.

이 명제를 바탕으로, CPU와 얼마나 가까운가를 기준으로 메모리 계층구조를 만들 수 있다.


사진 출처 : https://phoenixnap.com/kb/memory-hierarchy

캐시 메모리

CPU와 메모리 간의 거리는 레지스터와의 거리보다 멀어서 속도가 느리다. 하지만 실행되고 있는 프로그램은 메모리에 저장되어 있으므로 메모리에 빈번히 접근해야한다.

레지스터의 장점(CPU와 가깝다)과 메모리의 장점(용량이 크다)을 모두 반영하기 위해 캐시 메모리라는 것이 만들어졌다.

  • SRAM 기반의 메모리.
  • 캐시 메모리는 CPU와 가까운 순서대로 계층을 구성(L1, L2, L3)
  • L1과 L2는 CPU 내부에, L3는 CPU 외부에 있음.
  • L1 캐시 메모리를 쪼개서 명령어만을 저장하는 L1I캐시, L1D 캐시로 분리하는 경우도 있음. (분리형 캐시)

참조 지역성 원리

캐시 메모리는 참조 지역성 원리에 기반해서 CPU가 사용할 법한 대상을 예측해서 저장한다.

  • 시간 지역성
    : 최근에 접근했던 메모리 공간에 다시 접근하려는 경향. (변수에 저장된 값은 여러 번 사용되기 때문)
  • 공간 지역성
    : 접근한 메모리 근처를 접근하려는 경향. (관련 있는 데이터 정보는 모여서 저장되기 때문.)

이 2가지 지역성에 기반해서 캐시 메모리에 값을 저장하고, 실제로 CPU가 해당 값을 사용한다면 캐시 히트라고 한다. 예측이 적중되었기 때문이다.
반대로 예측이 틀렸다면 캐시 미스라고 한다.

캐시 적중률이 높을 수록 CPU가 메모리에 접근해야하는 횟수가 줄어들어 효율이 높아진다. 대부분의 컴퓨터의 캐시 적중률은 85~95% 정도이다.

3. 하드 디스크

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

하드 디스크의 구조


사진 출처 : https://www.open.edu/openlearn/digital-computing/introducing-computing-and-it/content-section-5.1

  • 플래터 : 데이터가 저장되는 동그란 원판.
  • 스핀들 : 플래터를 회전시키는 부품.
  • 헤드 : 플래터를 대상으로 읽고, 쓰기를 수행하는 요소.
  • 디스크 암 : 헤드를 이동시키는 부품.

사진에서도 볼 수 있듯, 플래터는 여러 개 사용된다. 이러한 플래터의 앞, 뒷면을 모두 사용하기 위해 헤드도 여러 개 사용되며, 하나의 디스크 암에 부착되어 한꺼번에 움직인다.


사진 출처 : https://blog.cyber5w.com/hard-disk-investigation

  • 트랙 : 플래터를 동심원으로 나누었을 때, 그 중 하나의 원 (그림에서 분홍색 영역)
  • 섹터 : 트랙이나 플래터 자체를 피자 조각처럼 나누었을 때, 해당 위치. (그림에서는 트랙의 섹터와 디스크의 섹터를 구분지어놓았다.)
  • 실린더 : 같은 위치의 트랙을 여러 개 모았을 때 생기는 원통형의 구조를 논리적 단위로서 칭하는 단어.

보통 연속된 정보는 한 실린더에 기록된다. 헤드가 디스크 암에 의해 한꺼번에 같이 움직이기 때문이다.

하드 디스크가 데이터에 접근하는 과정

  • 탐색 시간
    : 데이터가 저장된 트랙까지 헤드를 이동시키는 시간. (다중 헤드 디스크는 헤드가 여러 개라서 헤드를 이동시킬 필요가 없다. 따라서 탐색 시간 0)
  • 회전 지연
    : 헤드가 읽거나 써야할 곳에 위치하기 위해 플래터를 회전시키는 시간.
  • 전송 시간
    : 하드 디스크와 컴퓨터간 데이터가 전송되는 시간.

4. 플래시 메모리

흔히 사용하는 USB, SD카드 등이 이에 해당한다. 전기적으로 데이터를 읽고 쓰는 반도체 기반의 저장 장치이다.
NAND 플래시 메모리, NOR 플래시 메모리가 있는데, 흔히 NAND 플래시 메모리를 사용한다.

플래시 메모리의 단위

  • : 데이터를 저장하는 가장 작은 단위.
  • 페이지 : 셀이 모여 만들어진 단위.
  • 블록 : 페이지가 모여 만들어진 단위.

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

SLC, MLC, TLC

셀이 몇 개의 비트를 저장하느냐에 따라 플래시 메모리의 종류는 SLC, MLC, TLC로 나뉜다.

SLCMLCTLC
셀 당 비트1bit2bit3bit
속도빠르다보통느리다
가격비싸다보통저렴
수명길다보통짧다

플래시 메모리의 저장과 삭제

플래시 메모리에서 저장은 페이지 단위로, 삭제는 블록 단위로 이루어진다.

따라서 플래시 메모리 내에서 페이지 단위로는 삭제가 불가능하므로, Valid 페이지만을 새로운 블록에 복사한 뒤, 불필요해진 블록을 삭제한다.

5. RAID

용량이 적은 하드 디스크나 SSD 여러 개로 용량이 큰 하나의 하드 디스크나 SSD보다 더 높은 효율을 낼 수 있다. RAID 레벨에 따라 여러 개의 RAID 방법이 있으며, 이 중 0, 1, 4, 5, 6이 대중적이다.

  • RAID 0 : 여러 개의 하드디스크에 데이터를 분산해서 저장(스트라이핑)
  • RAID 1 : 완전한 복사본을 만들어서 저장(미러링)
  • RAID 4 : 오류를 검출&복구하기 위한 패리티 정보만을 저장하는 하드디스크를 지정
  • RAID 5 : 각각의 하드디스크에 패리티 정보를 분산하여 저장
  • RAID 6 : RAID5와 저장 방식은 같으나, 서로 다른 패리티 정보를 2개씩 저장

6. 장치 컨트롤러 & 장치 드라이버

  • 장치 컨트롤러
    : CPU와 입출력 장치 간의 통신을 중개
    : 오류 검출
    : 전송률 차이를 조절 (= 데이터 버퍼링)
    : 장치 컨트롤러는 데이터 레지스터, 상태 레지스터, 제어 레지스터를 가짐.

  • 장치 드라이버
    : 입출력 장치의 장치 컨트롤러를 인식하고 제어하기 위한 프로그램
    : 운영체제가 장치 드라이버를 인식하고 실행해야함.

7. 입출력 방법 3가지

프로그램 입출력

프로그램 속 입출력 명령어로 장치를 제어한다. CPU가 주기적으로 장치 드라이버의 상태 레지스터를 확인하고, 제어 레지스터에 명령을 보낸다. (폴링)

  • 메모리 맵 입출력
    : 메모리와 입출력 장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 취급. 따라서 접근 명령어 자체에는 차이 X
  • 고립형 입출력
    : 메모리와 입출력 장치에 접근하기 위한 주소 공간을 분리. 따라서 입출력 전용 명령어가 존재.

인터럽트 기반 입출력

인터럽트가 동시에 발생한다면 인터럽트 간 우선 순위를 따져야 한다.

  • PIC(Programmable Interrupt Controller)
    : 여러 장치 컨트롤러에 연결되어 하드웨어 인터럽트들의 우선순위 판단. 보통 여러 개를 사용.

  • NMI(Non-Maskable Interrupt) : 우선순위가 가장 높은 인터럽트. PIC는 NMI 인터럽트의 우선순위를 따지지 않는다.

DMA 입출력

이전 프로그램, 인터럽트 기반 입출력은 데이터가 이동될 때 꼭 CPU를 거쳤었다. DMA 입출력 방법은 DMA 컨트롤러라는 하드웨어를 통해 CPU를 거치지 않고도 데이터를 이동시킨다.

그 과정은 다음과 같다.

  1. CPU로부터 입출력 작업 명령을 받는다.
  2. DMA 컨트롤러는 메모리와 장치 컨트롤러에 CPU를 거치지 않고 접근한다.
  3. 작업이 끝나면, CPU에 작업완료 인터럽트를 보낸다.

입출력 버스

DMA 컨트롤러는 입출력 버스에 연결되어 있다.

시스템 버스는 한 번에 여러 장치가 사용할 수 없다. 따라서 CPU가 시스템 버스를 최대한으로 사용하고, DMA 컨트롤러가 시스템 버스를 최대한 덜 사용하기 위해 입출력 버스에 연결되어 있다.


기본 숙제

185p 3번

  • 주로 캐시 메모리로 활용 SRAM
  • 주로 주기억 장치로 활용 DRAM
  • 대용량화에 유리 DRAM
  • 집적도가 상대적으로 낮음 SRAM

205p 1번
저장 장치 계층 구조 도식도 그리기
레지스터 > 캐시 메모리 > 메모리 > 보조기억장치

추가 숙제

Ch07-1. RAID의 종류와 정의를 간단히 정리 해보기

본문의 5번 목차에서 정리가 되어있으므로 생략합니다~

0개의 댓글

관련 채용 정보