본문 바로가기

CS Knowledge/Computer Structure

Computer Structure - Memory

 

 

 

이 블로그는 '최신 컴퓨터 구조 - 임석구, 홍경호'를 참고하였습니다.

 

 

 

1. 기억 장치 시스템의 개요

2. 주기억 장치

3. 캐시 기억 장치

4. 가상 기억 장치

5. 연관 기억 장치 (생략)

6. 최신 기억 장치 기술 (생략)

 

 

 

1. 기억 장치 시스템의 개요

 

1-1. 위치에 따른 분류

- 컴퓨터 내부 또는 외부로 분류

- 내부 : 주기억 장치, CPU의 레지스터 

- 외부 : 자기디스크, 자기테이프

 

 

1-2. 용량에 따른 분류

- 바이트나 워드로 나타냄.

- 워드는 보통 CPU가 한번에. 처리할 수 있는 명령어의 비트 수로 설정

- 바이트는 보통 외부 기억장치들이 사용

 

 

1-3. 전송 단위에 따른 분류

- 내부 장치에서 전송 단위 : 기억 장치로 들어가고 나오는 데이터선의 수, 보통 워드길이와 같거나 다름

- 외부 장치에서 전송 단위 : 블록 단위(512, 1024바이트), 데이터 버스의 폭은 8, 16, 32비트 이기에 여러번의 전송 필요

 

 

1-4. 성능에 따른 분류

엑세스 시간 : 주소나 제어신호가 기억장치에 도착한 순간부터 데이터가 저장되거나 읽히는 순간까지를 의미.

사이클 시간 : 엑세스 시간과 다음 엑세스를 시작하기위해 필요한 시간의 합.

전송률 : 데이터가 기억장치로 들어가거나 나오는 초당 비트 수, 대역폭을 의미.

 

 

1-5. 엑세스 방법에 따른 분류

순차 엑세스 : 데이터를 처음부터 순차적으로 접근

직접 엑세스 : 각 기억장치의 FAT근처로 먼저 이동한 후, 그 이후부터 순차적 접근 

임의 엑세스 : 고유한 주소를 통해 데이터 엑세스

연관 엑세스 : 주소 대신 내용의 일부를 통해 데이터 엑세스

 

 

1-6. 물리적 특성에 따른 분류

- 휘발성, 비휘발성

- 파괴적, 비파괴적 : 데이터를 읽으면 데이터 파괴되는지 여부

 

 

(속도 빠름) CPU 레지스터 - 캐시(SRAM) - 주기억 장치(DRAM) - 자기디스크, DVD - 자기 테이프 (용량 큼)

외부 기억 장치(보조 기억 장치) : 자기 디스크, CD-ROM, DVD, 자기 테이프 등

 

 

 

 

 

2. 주기억 장치

- 주기억 장치는 기본적으로 CPU내부의 레지스터인 MAR, MBR과의 관계, 제어 신호 3개(읽기, 쓰기, 칩선택)로 동작한다.

- MAR(메모리 주소 레지스터)이 주소 버스를 통해 주기억장치의 특정 워드의 주소에 접근

- MBR(메모리 버퍼 레지스터)는 데이터 버스를 통해 해당 주소의 데이터를 가져간다.

 

 

2-1. 메모리 읽기 동작

- 읽으려는 메모리 주소를 MAR로 전송하고 읽기 신호(RD)와 칩 선택 신호(CS)를 활성화

 

 

 

2-2. 메모리 쓰기 동작

- 읽으려는 메모리 주소를 MAR로 전송함과 동시에 저장하려는 데이터의 워드를 MBR에 전송하고 칩선택 신호와 쓰기 신호(WR) 활성화

 

 

 

기억장치의 용량 = 2**n X m

(n = 주소 버스의 길이 비트, m = 워드당 비트)

(n = MAR의 비트수, m = MBR의 비트수)

EX) 기억 장치의 용량이 1024*8이라면 MAR, MBR 각각의 비트 수는 ? 10, 8 비트

 

 

2-3. 워드의 저장 방법

- 주기억 장치는 기억되는 데이터를 구별하기 위해 주소와 데이터 단위를 설정해야한다.

- 주소 : 0부터 쌓이는 방식

- 데이터 단위 : 워드나 바이트로 설정

 

- 엔디안 : 기억장치에 바이트를 배열하는 방식

- 리틀 엔디안 : 왼쪽부터 오른쪽 순으로 배열하는 방식

(EX 32비트 정수 12345678 -> 1바이트(8비트)씩 끊어서 78 -> 56 -> 34 순으로 낮은 주소부터 높은 주소로 배열)

- 빅 엔디안 : 리틀 엔디안의 반대 개념

- 바이 엔디안 : 엔디안을 선택할 수 있도록 설계된 개념

 

 

2-4. 반도체 기억 장치

- 쓰기 기능 여부, 휘발성/비휘발성, 재사용 가능 여부, 기억 방식에 따라 분류

 

1. RAM : 기본적으로는 휘발성을 의미하나 비휘발성을 갖는 차세대 메모리도 존재한다, 읽기/쓰기 가능하다.

2. ROM : 읽기만 가능하며 주기억 장치의 일부분을 ROM으로 활용한다.

 

 

 

관련 예제

 

 

2-5. 워드 길이 확장

- 데이터 I/O 비트 수가 워드 길이보다 적은 경우 : 여러개의 칩들을 병렬로 접속하여 구성

-> K는 약 2의 10승으로 판단.

-> (2**N x M) RAM은 N개의 주소 선, M개의 데이터 선을 의미.

-> 위의 문제에서는 주소선은 그대로 사용하고 8개의 데이터 선 4개를 이용해 32개의 데이터 선으로 확장하는 방식

 

 

2-6. 워드 용량 확장

- 필요한 기억장소의 수가 기억장치 칩의 기억장소 수보다 많은 경우 : 여러개의 칩들을 직렬로 접속하여 구성

칩 1 : 00 (00 0000 0000 ~ 11 1111 1111)

칩 2 : 01 (00 0000 0000 ~ 11 1111 1111)

칩 3 : 10 (00 0000 0000 ~ 11 1111 1111)

칩 4 : 11 (00 0000 0000 ~ 11 1111 1111)

 

 

 

 

3. 캐시 기억 장치

캐시의 사용 목적 : CPU와 주기억 장치의 속도 차이로 인해 발생하는 CPU 대기시간을 최소화하기 위해 CPU와 주기억장치 사이에 설치하는 고속 반도체 기억 장치, 주기억 장치보다 빠르지만 용량이 적다.

 

동작 흐름도

 

캐시 히트 : CPU가 원하는 데이터가 캐시에 있는 경우

캐시 미스 : CPU가 원하는 데이터가 캐시에 없어 주기억 장치로부터 읽어와야하는 경우

 

히트율 : 캐시 히트 되는 정도

예를들어, 10번 접근하고 히트율이 50인 경우는 0.5 = x/10, 캐시히트=5, 캐시미스 = 5

5*5ns + 5*50ns / 10 = 27.5ns

 

 

참조 지역성

- 공간적 지역성 : 주기억장치에 인접하여 저장되어 있는 데이터들이 연속적으로 엑세스될 가능성이 높은 경우

- 시간적 지역성 : 최근에 엑세스된 데이터가 미래에 다시 엑세스될 가능성이 높은 경우

 

 

 

캐시 설계의 목표

- 캐시 히트율 극대화

- 캐시 히트인 경우 캐시에서 데이터를 가져오는 시간 최소화

- 캐시 미스인 경우 주기억장치에서 데이터를 캐시로 저장하는 시간 최소화

- 캐시의 내용이 변경되었을 때, 주기억장치의 내용을 변경하는 시간 최소화

 

 

 

 

 

 

캐시 설계 설정정보

 

 

3-1. 캐시 용량

- 용량이 커질수록 히트율은 올라가지만 비용이 증가하고 주변 회로가 복잡해져 캐시 엑세스 시간이 증가한다.

 

 

3-2. 사상 방식

정의 : 주기억 장치의 블록이 캐시의 어떤 라인에 들어갈지 경정하는 방법
- 블록 : 주기억장치에서 캐시에서 이동하는 데이터의 단위

(예를들어, 주기억장치의 용량 : 2**n 워드, 블록은 K워드시 블록의 수는 2**N/K)

- 라인 : 캐시에서 각 블록이 저장되는 장소

(라인의 수는 블록의 수와 같으며 각 라인에는 하나의 블록이 저장된다.)

- 태그 : 라인에 적재된 블록을 구별해주는 정보

 

3-2-1. 사상방식의 종류

- 직접 사상

- 완전 연관 사상

- 세트 연관 사상

 

예를들어, 주기억장치의 크기가 128바이트(주소 7비트로 표현) 워드 길이 1바이트, 블록 크기가 4바이트인 경우,

캐시에는 총 32바이트의 용량을 갖게되고 각 라인은 블록의 크기와 같은 4바이트이므로 총 8개의 라인을 갖게 된다.

 

 

 

3-2-2. 직접 사상

- 주기억 장치들의 블록들이 지정된 하나의 캐시 라인으로만 적재된다.

- 주기억 장치의 주소가 7비트로 표현되고 필드 3개로 구성될 때, 3개의 필드 t+s+w = 7 이다. 

- 한 블록은 4바이트라고 가정하면 한 블록에 워드 4개가 들어가고 이를 표현하기 위해 w는 2비트가 필요하게 된다.

- 캐시 라인의 수가 8개이므로 이를 표현하기 위해서는 s는 3비트가 필요하고 자동으로 t는 2비트가 필요하게 된다.

(t-태그, s-라인, w-워드)

1. 해당 주소가 캐시로 보내진다.

2. 해당 주소와 일치하는 주소가 캐시에 있다면 히트되며 값을 가져온다.

3. 해당 주소와 일치하는 주소가 캐시에 없다면 미스되며 해당 라인이 비어있는지 확인하고 비어있다면 삽입된다.

4. 해당 주소와 일치하는 주소가 캐시에 없다면 미스되며 해당 라인이 비어있는지 확인하고 비어있지 않다면  대체한다.

(데이터를 읽을 때는 순서대로 00 01 10 11 순이다.)

(라인 확인 -> 태그 확인 순으로 일치 여부를 확인한다.)

 

 

장점 : 하드웨어가 간단하고 비용이 적게든다.

단점 : 주기억 장치 블록이 적재될 수 있는 라인이 한개뿐이므로 그 라인을 공유하는 다른 블록이 적재되는 경우 반복적으로 미스되어 히트율이 낮다.

 

 

 

 

3-2-3. 완전 연관 사상

- 주기억 장치의 블록이 캐시의 어느 라인으로도 적재 가능

- 태그 필드 = 주기억장치의 블록 번호

 

 

3-2-4. 세트 연관 사상

- 직접 사상 + 완전연관 사상

 

 

3-3. 교체 알고리즘

- 완전-연관, 세트-연관은 교체 알고리즘이 필요하다.

- 종류 :

LRU : 오랫동안 사용되지 않은 블록 교체

FIFO : 가장 오래된 블록 교체

LFU : 참조 횟수가 가장 적은 블록 교체

Random : 임의로 선택하여 교체

 

 

 

3-3-1. LRU

- 오랫동안 사용되지 않은 블록 교체

 

 

 

 

3-3-2. FIFO

- 가장 오래된 블록 교체

 

 

 

3-4. 쓰기 정책

- 캐시가 변경되었을 때, 그 내용을 주기억 장치에 갱신하는 시기와 방법을 결정하는 정책

- Write-through : 모든 쓰기 동작들이 캐시뿐만 아니라 주기억 장치에도 동시에 갱신하는 방식

(항상 내용이 같아지지만 시간이 더 오래걸린다.)

- Write-back : 캐시에서 데이터가 변경되어도 주기억 장치에는 갱신하지 않고 나중에 한번에 갱신하는 방식

(쓰기 시간이 짧아지지만 내용이 서로 다르다.)

 

 

 

3-5. 캐시 수

- 온-칩 캐시 : CPU내부에 L1캐시 포함

- 계층적 캐시 : 온칩 캐시를 사용하고 주기억 장치와 CPU 사이에 L2캐시를 삽입

- 분리 캐시 : 계층적 캐시에서 L1을 데이터 캐시와 주소 캐시를 나누어 놓은 구조

 

특징

- L2의 용량이 더 크며 L1의 내용 모두가 L2 내부에 존재한다.

- L1을 먼저 검사하고 없다면 L2를 검사하고 또 없다면 주기억 장치에 접근하는 구조

- L1은 속도가 빠르지만 용량이 적어 히트율이 낮다.

 

 

 

 

4. 가상 기억 장치

- 하드 디스크처럼 용량이 큰 보조 기억 장치를 주 기억 장치처럼 사용하는 개념

- CPU가 참조하는 가상 주소를 주기억 장치의 실제 주소로 변환해주는 주소 매핑이 필요하다.

- 주소 공간 : 가상 기억 장치의 가상 주소 집합

- 메모리 공간 : 주기억 장치의 실제 주소 집합

 

-> 매핑 방법에는 페이지, 연관 기억 장치, 세그먼트에 의한 매핑 방법이 있다.

 

 

4-1. 매핑 방법 : 페이지의 의한 매핑

페이지 : 주소공간을 고정 크기로 나눈 것

블록 : 메모리 공간을 고정크기로 나눈 것 

-> 페이지와 블록간 매핑표를 활용하여 둘을 매핑하는 방식

 

페이지 오류 : 해당 페이지가 주기억 장치에 존재하지 않는 경우

스레싱 : 페이지 오류가 자주 발생하는 경우를 의미

 

 

- 현존비트가 1이라면 해당 페이지가 주기억 장치에 존재함을 의미.

 

 

 

 

4-2. 페이지 교체 알고리즘

- 페이지 오류 발생시 요구된 페이지가 주기억 장치로 옮겨질 때 까지 프로그램이 중단된다.

- 보조 기억 장치에서 주기억 장치로 페이지를 전송하는 것은 I/O로 처리하므로 운영체제는 이 동작을 I/O 프로세서에 맡긴다.

- 페이지 교체 알고리즘 : 새로운 페이지가 주기억 장치로 전송될 때, 주기억 장치가 포화상태라면 제거할 페이지를 선택한다.

(종류 : FIFO, LRU, LFU 알고리즘 등)

 

 

  • FIFO (First In First Out) : 주기억 장치에서 가장 오래 있었던 페이지를 삭제
  • LRU (Least Recently Used) : 최근까지 가장 오랫동안 사용되지 않았던 페이지를 삭제
  • LFU (Least Frequently Used) : 사용 횟수가 가장 낮은 페이지를 삭제, 사용 횟수가 같다면 가장 오랜된 페이지를 삭제

 

 

 

 

 

 

 

 

 

 

 

 

'CS Knowledge > Computer Structure' 카테고리의 다른 글

Computer Structure - Sub Memory  (0) 2023.06.18
Computer Structure - Controller  (0) 2023.04.18
Computer Structure - CPU(2)  (0) 2023.04.18
Computer Structure - CPU(1)  (0) 2023.04.17
Computer Structure - Digital Logic Circuits(2)  (0) 2023.04.17