4장 기억 장치

제 4 장  기억 장치

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□                                                                                                4.1 기억 장치의 특성

4.2 주기억 장치

4.3 보조 기억 장치

4.4 가상 기억 장치

4.5 고속 기억 장치

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

○ 기억 장치(memory) :

― 데이터를 컴퓨터의 프로세서가 직접 처리 혹은 참조할	수 있는 형태로 기억시켜 놓은 곳

― 입출력은 기억 장치를 매개로

― 기억 장치 사용 목적에 따른 분류 :

주기억 장치 ∀ CPU 와 직접 데이터 교환

보조기억 장치 ∀ CPU와 직접 데이터를 교환할 수는	없고, 주기억 장치를 통해서만 데이터 교환 가능

4장 기억 장치

● 기억 장치의 특성

― 기억 장치의 기술 발전 ∀ 컴퓨터의 구성 방법에 큰 변화

― 기억 장치의 특성 : 물리적 현상과 구성상의 원칙

● 기억 장치 계층(memory hierarchy)

― 기억 장치 3 계층

1. CPU의 기억 장치

― 프로세서와 속도가 비슷

― 오퍼레이션 레지스터(operation register, 플립 플롭 레지스터), 명령/ 데이터 의 일시적인 저장

― 버퍼(buffer) / 캐쉬(cache) 기억 장치

2. 주기억 장치(main 또는 primary memory)

― 컴퓨터의 동작 중 프로세서가 필요로 하는 프로그램/	데이터 저장

― 비교적 용량이 크고, 고속

― CPU명령에 의하여 직접 액세스(random access) 가능

― IC 메모리/자기 코어(ferrite core)메모리

3. 보조 기억 장치(secondary/auxiliary/backing memory)

― 용량 면에서는 크나 속도는 아주 느리다.

― 주기억 장치에 저장할 수 없는 것, CPU에서 계속적으로 필요 없는 시스템 프로그램/대량의 데이터 파일 (file) 저장

― 자기 드럼, 자기 디스크와 자기 테이프 등

○ 캐쉬 기억 장치 :

주기억 장치의 액세스 타임과 프로세서 논리 회로와의 속도	차이를 줄이기 위하여 사용

● 액세스 타임과 방법

― 기억 장치의 성능: 기억 장치에서 데이터를 읽거나 기록하는 속도를 측정하여 결정

― 판독 액세스 타임(read access time): 한 워드 단위의 데이터를 읽어내는 시간(액세스 타임)

★ 정확한 액세스 타임의 정의가 곤란하여, 실제는 기억 장치에 있는 데이터의 판독 요청이 있는 시간으로부터 요구한 데이터가 사용 가능할 때까지의 시간으로 정한다.

― 액세스 방법(access mode):

직접 액세스(random access)와	순차 액세스(sequential access)

―기억 장치의 액세스 단위 ∀ 위치(location) / 주소(address)

워드 주소 지정(word-addressable) 방법

바이트 주소 지정(byte-addressable) 방법

예), 그림 4-1

― 워드 주소 방법:

0, 4, 8 번을 액세스 ∀

0-3, 4-7, 8-11 번지의 내용이 워드 단위로 묶여서 전송

. ― 바이트 주소 지정 방법

한 바이트씩 각각의 번지를 지정하여 데이터를 전송

워드의 주소		바이트 주소
0	0	1	2	3
4	4	5	6	7
8	8	9	10	11

그림 4-1.  바이트 주소 지정 방법에서 기억 장치의 주소 구성

― 직접 액세스(random access): 기억 장치에 있는 주소의 순서와 관계없이  원하는 위치에	액세스하는 방법 ( n 비트 주소가 decoder를 통해 memory 위치를 지정함, 액세스 시간이 동일하나 해석기가 필요함, 주기억장치에 많이 사용)

그림 4-2.  2 차원 메모리 구조(B 비트× W 워드)

(n = log2W, W 는 항상 2 의 제곱수이다.)

― 순차 액세스

1. 기억장소 액세스 시간이 저장되어 있는 위치에 따라 비례

2. 감지기(sensor)가 고정되어 있고, 기억 장치 또는 기억된	내용이 계속 이동하여 원하는 주소(위치)가 감지기에	이르렀을 때 데이터 전송

그림 4-3.  순차 액세스 기억 장치의 개념적 모델

● 기억의 보존성

(1) 판독 후 기억내용:	파괴적/비 파괴적

(2) 시간 경과: 동적 저장(refresh 필요)/정적 저장

(3) 전원 공급:	소멸적/비소멸적

― 메모리의 재생(refresh): 일정 시간이 지나면 물리적 성질에 의하여 전하가 방전되므로, 이를 다시금 채워주는 과정

― Destructive Read Out/ Non-Destructive Read Out

― 소멸성 문제 해결:	주 메모리의 데이터를 보조 메모리로 옮기기 위한 예비(back-up) 전지 부착하여	데이터의 훼손 방지

― RWM(read-write memory):	판독과 기록이 가능하여 데이터를 저장하거나 꺼낼 수 있는	메모리

― ROM(read only memory)/RMM(read mostly memory):	읽어내는 것만을 허용하고,  기록하는 동작은 금하거나 극히 제한하는 메모리

표 4-1.  대표적인 메모리 제조 기술의 특성

제조 기술	경비 $/비트	액 세 스 타임 (초)	액 세 스 방법	판독/ 기록	보 존 성	물리적 기억장치 매체
양극 반도체	10-1	10-8	직 접	판독/ 기록	NDRO 소멸성	전자적
MOS 반도체	10-2	10-7	직 접	판독/ 기록	DRO/NDRO 소멸성	전자적
자기 코어	10-2	10-6	직 접	판독/ 기록	DRO 비소멸성	자기적
자기 드럼/ 자기 디스크	10-4	10-2	직접 or 반직접	판독/ 기록	NDRO비소멸성	자기적
자기 테이프	10-5	10-1	직 렬	판독/ 기록	NDRO 비소멸성	자기적
천공 카드/ 종이 테이프	10-6	10	직 렬	판독/ 기록	NDRO 비소멸성	기계적

● 사이클 타임과 메모리의 대역폭(bandwidth)

― 메모리의 전송 속도의 개선 ∀ 데이터 전송률(transfer rate)  또는 메모리 대역폭(bandwidth : BW)을 높이는 것

― 메모리 대역폭

1. 메모리가 프로세서에 1초 동안에 전송할 수 있는 비트	수

2. 메모리의 대역폭은 사이클 타임 또는 액세스 타임과 메모리에 연결되어 있는 데이터 버스 길이에 따라 결정

3. 단위는 bps(bit per sec) 또는 BPS(byte per sec)

―  메모리 대역폭  BW: BW = w / tc (bit/sec)	식(4.1)

tc : 메모리의 사이클 타임

w 비트 : 한 번에 프로세서로 전송되는 데이터 워드

예)   메모리 모듈의 액세스 타임 : 0.5□s

데이터 워드가 각각 32 비트, 64 비트일 경우의

메모리의	BW

32 bit   BW = 32/0.5□s = 64Mbps =8MB/s

64 bit   BW = 64/0.5□s = 128Mbps = 16MB/s

― 메모리의 전송 속도(대역폭)을 높이기 위한 방법

1. 메모리 사이클 타임이 빠른 논리 회로의 메모리 사용

2.	프로세서가 메모리에 액세스하는 워드 비트 수 늘림.

― 워드의 비트 수를 늘리는 방법

펜티엄 프로 : 메모리에 액세스하여 한 번에 64 비트의 데	이터를 판독

80486 : 32 비트의 데이터 판독

― 펜티엄 프로 클럭 주파수는 80486 에 비해 3 배 이상 고속

― 실제의 메모리 대역폭을 향상시킬 수 있는 방법

1. 메모리의 인터페이스 기법을 변화: 메모리 (interleaving) 방식

2. 프로세서 내부에 고속의 캐쉬 메모리를 사용

● 주 기억 장치

● 주 기억 장치의 구조 와 동작

― 프로그램 수행 중 프로그램과 데이터는 주 기억 장치에 적재

― 주 기억 장치는 워드 단위로 저장되고 검색하도록 설계

그림 4-6 메모리와 CPU의 연결도

― CPU 와 메모리간의 데이터의 교환 단계

1. 데이터전송: 메모리 주소 레지스터와 데이터 레지스터를 통함

2. MAR(k비트), MBR(n비트): 주기억장치는 2k비트의 주소공간

3. 메모리 사이클 동안 n 비트의 데이터가 전송

― 메모리를 선택하는 기준: 동작 속도, 즉 메모리의 액세스 타임 ta 와 사이클 타임(cycle time) tc 에 따라 선택

― 프로세서가 메모리에 접근하는 액세스 타임:	프로세서로부터 출력되는 주소 데이터가 주소 버스에 적재	된 후, 메모리에 저장되어 있는 데이터가 데이터 버스에 적재될 때까지 걸리는 시간

― 사이클 타임

1. 메모리의 액세스 타임과 동일한 의미로 사용가능

2. 메모리의 순수한 액세스 타임 ta 와 복원 시간 tr 을 더	한 시간 tc 을 의미

tc = ta + tr	(식 4.2)

● 데이터의 판독과 기록

― 메모리는 한 개의 주소에 1 바이트의 데이터 저장, 한 개 워드(16비트)는 메모리의 연속된 2 개 주소 위치에	저장

― 메모리에 저장되는 데이터: 피연산자(operand), 명령어, 알파뉴메릭 문자와 2진 코드

― 메모리의 데이터 전송

메모리와 프로세서 또는 입출력 장치 사이의 통신은 두 개	의 제어 신호와 두 개의 외부 레지스터, 그리고 주소 해석	기를 통해 이루어지며, 프로세서로부터 메모리에 전송되는	제어 신호는 데이터의 전송 방향 지정

그림 -7 메모리의 데이터 전송

― 메모리 위치의 주소 공간

MAR 이 n 비트	∀ 주소 공간은 최대 2n 개

0 번지 부터 2n-1 번지까지 지정

예) MAR : 16 개 비트

컴퓨터의 기억 장치는 총 65,536(64K) 개 번지에 데이터 저장

― 그림 4-7 의 프로세서의 제어 신호

1. 기록 제어 신호 WR

2. 판독 제어 신호 RD

― 판독의 동작 순서(그림 4-8(a))

(1) 메모리의 특정 위치 지정: 주소 데이터를 MAR에 전송

(2) 버스 제어 장치는 MAR의 주소 데이터를 주소 버스에 적재

(3) 주소 버스에 적재된 2 진 주소는 주소 해석기에 보내짐

(4) 제어 버스를 통해 판독제어신호를	논리 1로 전송

(5) 메모리의 해당 위치에 저장되어 있는 데이터가	데이터 트랜시버로 전송

(6) 데이터 트랜시버에 저장되어 있는 데이터는 데이터 버스를 통해 MBR로 전송

(a) Read

(b) write

그림 4-8. 판독/기록 동작시 데이터의 전송

― 기록 동작의 순서(그림 4-8(b))

(1) 제어 장치는 주소 데이터를 MAR로 전송

(2) 버스 제어 장치는 MAR의 주소 데이터를 주소 버스에 적재

(3) 주소 버스에 적재된 주소 데이터는 주소 해석기에 전송

(4) 제어 장치는 기록 제어 신호 WR을 논리 1 로 활성화

(5) 프로세서는 MBR의 2 진 데이터를 데이터 버스 상에 적재

(6) 데이터 버스 상의 2 진 데이터가 데이터 트랜시버에 전송

(7) 데이터 트랜시버의 데이터가 메모리의 해당 위치에 전송

― 메모리의 데이터 워드

1. 일반적인 경우로서 고정 단어 길이(fixed word length)

2. 워드는 보통 16 비트 데이터를 일컬으며,

3. 32 비트를 long word 또는 double	word라 부른다.

― 한 개의 2 진 데이터를 저장할 수 있는 기억 소자: 2 진 저장 cell (셀은 메모리의 가장 기본적	인 최소 블럭). 2 진 저장 셀은 일반적으로 데이터를 저장하는 플립플롭과 데이터 저장을 제어하기 위한 몇 개의	논리 게이트들로 구성되는 순차 논리 회로임.

그림 4-9. 2 진 저장 셀의 구조

그림 4-10. (nxm) RAM의 구조

n×2n 해석기: 프로세서로부터 주소 입력의 값에 따라 0~2n-1 워드 가운데 한 개의 m 비트 워드만을 활성화시키는 선택선의 제어 입력으로 동작

OR 게이트: 해석기에 의해 선택된 주소에 의해 선택된 해당 m 비트 워드 데이터를 출력하는 비트 셀의 데이터 출력으로 동작

동작 설명

- n 개의 주소 입력선들은 워드 0 ∼ 워드 2n-1 을 선택

- 판독 제어 신호 RD = 1이고, 기록 제어 신호 WR = 0 일 경우 선택된 메모리 위치의 해당 워드의 m 개의 각 비트 셀들은 OR 게이트의 입력에 인가되며 나머지 셀은 0으로 되어 OR 게이트의 출력에 전혀 영향을 미치지 못함.

- 제어 입력이 RD = 0, WR = 1 로 지정될 경우는 주소 해석기에 의해 선택된 메모리 위치의 n 개 비트 셀에 새로운 데이터의 입력이 활성화 되어 비트 셀 내의 D 플립 플롭에 새로운 2 진 데이터가 저장되고, 선택되지 못한 다른 메모리의 위치들의 비트 셀들은 과거에 기억된 데이터를 그대로 유지

● 메모리 뱅크와 인터리브

― 메모리의 대역폭(BW)를 개선하는 방법

- 메모리의 인터페이스 기법을 변화시키는 방법 ∀병렬 구조

- Bank 구조 메모리와 interleave 구조의 메모리 (그림 4-11)

[1] 메모리 뱅크

- 모듈 형의 memory bank 또는 memory module

- CPU에서 나오는 메모리 버스에 접속(그림 4-11참조)

- 각 메모리 뱅크에는 각각 상이한 범위의 어드레스가 배치됨

(a) 메모리 버스

(b) 메모리 뱅크

그림 4-11. CPU와 메모리 뱅크의 구성도

― 메모리 버스(memory bus)의 구성(그림 4-11(b))

주소 버스, 데이터 버스 및 제어 버스

― 뱅크 구조 메모리: 기억 장치를 몇 개의 독립된 뱅크로 구분

- 프로세서는 물론 다수의 DMA 제어기들이 메모리 인터페이스 회로를 거쳐 동시에 메모리의 각 뱅크에 액세스 함

- 각 장치에서 판독하려는 데이터가 동일한 뱅크 내에 저장되어 있을 경우 속도 면에서 장점은 없음

그림 4-12. 뱅크 구조 메모리

[2] 메모리 인터리브(memeory interleave)

어드레스의 하위 k비트를 뱅크 해석기에 인가. 하나의 메모리 뱅크에 할당할 수 있는 어드레스가 2k 씩 간격을 띄게 되는 것

(a)

(b)

그림 4-13. 메모리 인터리브 방식

- t1: 데이터를 기억 장소로부터 읽기 버퍼로 호출하는	시간

- t2: 읽기 버퍼로부터 CPU 로 전송하는 데 걸리는 시간

- 인터리브방식에서 연속된 어드레스에 순차로 액세스할 경우 1 데이터 당 액세스 시간 : t1/n  + t2

일반적으로 t1 ≫ t2 , 액세스 시간 ≒ 1/n

그림 4-14. 뱅크 메모리의 구조(상위 인터리브)

― 하위 인터리브 구조와 상위 인터리브(뱅크) 구조 메모리의 유일한 차이점 : 순차적인 주소들이 뱅크 구조 메모리의 경계를 넘어설 수 있다는 점

그림 4-15. 하위 인터리브 메모리의 구조

<예: p. 144>, Intel 80x86 계열의 메모리 구조

● 공유 메모리

― 메모리 버스에는 입출력 제어용의 프로세서도 접속 (어드레스 레지스터와 데이터 레지스터 및 제어회로를 구비)

― 그림 4-16(a) 에서와 같은 버스 제어용의 신호선 필요

1) 버스 사용 중(bus busy)

2) 버스 사용요구(bus request)

3) 버스 사용허가(bus grant)

(a) 구성도

(b) 핸드쉐이크 타이밍도

그림 4-16. 메모리 버스의 공유

― CPU 이외의 프로세서가 메모리 뱅크	에 액세스하는 절차

1) Bus busy 신호가 없는 것을 확인 bus request 신호를 낸다.

2) CPU가 bus grant 신호를 내므로 프로세서 쪽에서 bus busy 신호를 내고서 메모리 버스를 사용한다.

3) 메모리 버스의 사용이 종료되면 bus busy 신호를 취하한다.

★ CPU이외의 프로세서가 직접 기억 장치에 액세스하는	방식 :  DMA(Direct Memoty Access)

★ 여러 대의 CPU를 메모리 버스에 접속해서 기억 장치를	공유하는 경우는 버스사용권을 조정하기 위해서 버스 조	정 회로(bus arbitrator)를 사용 (그림 4-17 참조)

그림 4-17. 버스결합에 의한 멀티프로세서

― 공유 메모리(shared memory): 여러 개의 CPU에 의해서 공유되는 기억 장치

― 멀티포트 메모리(multiport memory) : 그림 4-18 참조

1. 각기 별개의 메모리 버스에 접속하기 위한 복수 메모리	포트를 가지는 메모리

2. 메모리 포트는 그림 4-11(b) 의 메모리 제어장치	(memory cotroller)에 해당하는 부분

그림 4-18. 멀티포트 메모리

● 메모리 관리

― 기억 장치 ∀ 프로그램과 데이터가 기억

― 프로그램 메모리:	프로그램을 기억하는 부분

― 데이터 메모리:	데이터를 기억하는 부분

― 프로그램과 데이터가 메모리에 함께 있는 것은 프로그램을 실행하는 측면에서는 바람직하지 않다.(예: 교재 p. 147)

― 메모리 관리:	기억 장치에 기억되는 다수의 프로그램과 데이터가 착오로	상호 간섭하는 일이 없도록 관리하는 것

그림 4-19. 기억 장치 영역의 사용상황

― 시스템 영역: OS에 관한 프로그램과 데이터가 기억됨

― 인터럽트 벡터(interrupt vector): 인터럽트가 발생했을 때 실행해야 할 프로그램의 개시번지를 인터럽트 원인별로 배열한 것

― 시스템 변수: 사용 중인 기억 장치의 메모리 사이즈, 사용자 영역의 선두	번지, 시간 등 시스템 전체에서 오직 하나만 있으면 되는 데이터의 집합

― 채널 프로그램: 입출력제어장치가 읽어들여 실행하는 입출력 명령의 집합

― 시스템 서브루틴: OS나 사용자 프로그램이 사용하는 입출력장치나 시스템 변수에 액세스하기 위한 서브루틴의 집합

― OS 모듈:	OS의 처리를 주관하는 프로세서로서 동시, 병행적으로 실행되는 것들

― 사용자 영역:	몇 개의 사용자 프로그램 외에 이들 사용자 프로그램간의 교신용으로 사용되는 사용자 공통 데이터나, OS에 의해서 기동되어 사용자 프로그램을 메모리에 로드하는 역할을 하는 로더(loader)등

― CPU 모드:	시스템 영역의 프로그램이나 데이터가 사용자 프로그램에	의해서 파괴되지 않도록 보호하기 위하여 관리모드와 사용자 모드 두 모드로 관리

― 관리 모드(monitor mode): 기억 장치의 전 영역에 액세스가능, 관리 모드에서는 사용자 모드에서 사용할 수 없는 몇 가지 종류의 영역을 사용할 수	있으며 이와 같은 명령을 특권명령(privileged instruction)	이라 부른다.

― 사용자 모드(user mode): 시스템 영역에는 액세스 불가능

● 메모리 보호

- 시스템 영역의 보호뿐만 아니라 사용자 프로그램간에도 서	로 상대를 침범하지 않도록 하는 기능 ∀ memory protection

― 메모리 보호의 방법 :

블록마다 보호키(key)를 붙이는 방법

경계 레지스터(boundary register)를 사용하는 방법

- 보호키 방식: 그림 4-20 의 예에서는 메모리를 2K 바이트의 블록으로 분할하고 각 블록마다 기억키를 메모리와는 별도로 설치한다.

그림 4-20. 보호키 방식의 메모리 보호

- 읽기방지비트 0 : 보호키와 기억키의 일치 시 쓰기 허용. 읽기는 항상 허용.

- 읽기방지비트 1: 보호키와 기억키의 일치 시 쓰기/읽기 허용. 그 이외에는 쓰기/읽기는 항상 금지.

- 보호키 0: 마스터키, 모든 블록에 읽기/쓰기 가능

- 경계 레지스터 방식: 베이스 레지스터와 경계 레지스터에 사용자의 한 프로그램에 대한 선두번지와 최종 번지를 기록. 메모리 엑세스가 이 범위를 넘어가면 인터럽트를 일으킴.

그림 4-21. 세그먼트 테이블에 의한 액세스 제어

- 세그먼트 어드레스 방식: 사용자 프로그램 별로 설치하는 세그먼트 테이블에 각 세그먼트에 대한 엑세스 권한을 기록. 이를 위반한 엑세스 시도가 있으면 인터럽트 발생.

- 액세스 권한은 읽기, 쓰기, 실행 3가지 임.

- 공통 데이터에 대한 읽기/쓰기의 관리 가능.

● 메모리 스택

기억 장치의 일부 또는 마지막 부분을 스택으로 사용

― 스택: 워드나 바이트 단위의 데이터들을 오직 한 쪽으로만 입력하거나 출력할 수 있는 액세스 제한을 둔 데이터 원소들의 리스트

― LIFO(last in first out) 메모리

― 스택에 데이터를 놓으려고 할 때 큰 address로부터 작은 address 쪽으로 저장하고, 또 꺼낼 때는 그 역이 되도록 함.

― 스택에 데이터를 입력하는 것을 push, 출력되는 것을 pop

그림 4-22.  스택과 그 실행

― 컴퓨터 메모리에서의 스택 구현

. 기억 장치에 있는 일련의 기억 장소를 스택으로 사용

. 바닥(bottom)으로 저장한 기억 장소에 최초의 데이터가 저장

. 상위 또는 하위 주소의 기억 장소에 연속적으로 저장함으로써 스택의 역할

. 여기에서 스택에 저장되는 마지막 위치 즉, 현재의 상한	(top) 위치를 표시해 주는 것이 필요→ SP: stack	pointer

-Push: SP를 하나 감소 후 음수 면 처리불능. 아니면 처리.

-Pop: SP의 값이 바닥 주소보다 작거나 같을 때 저장된 내용을 꺼낸 후 SP를 하나 증가시킴.

-스택 overflow/underflow 체크: 2개의 레지스터에 상/하한 저장

● 주기억 장치의 종류

― 기억 장치(메모리): 자기 코어, 반도체 메모리등

[1] 자기 코어(magnetic core)

(a) 모양

(b) '1'의 기억

(c) '0'의 기억

그림 4-23.  자기 코어의 모양과 기억

[2] 반도체 메모리(semiconductor memory)

― 반도체 메모리

. 플립플롭을 집적(IC)화한 것

. 고속이고 작은 용량:  양극형(bipolar) 메모리

. 저속이고 대용량: MOS 메모리

(1) 양극형 메모리와  MOS 메모리

― 양극형(bipolar) 메모리

전력 소모가 mW 단위로 다소 높고, 한 개의 비트를	저장하는데 약 4 개의 트랜지스터가 필요하여 칩 소요 면적	이 단극형의 경우보다 약 4 배가 크기 때문에 가장 낮은 기억 용량으로 집적되는 것이 일반적이다.( TTL메모리, S-TTL메모리, ECL	메모리)

― TTL메모리: 고속으로 동작된다는 장점과 전력 소비가 크다는 단점, 단극형 기억 소자에 비해 고가, 낮은 잡음 여유도

― 잡음 여유도(noise margine : NM)란 디지털 논리 회로에서 누선 전류와 같은 외부 잡음 등이 직류 전압으로 활성화될 경우 허용될 수 있는 전압을 말한다.

― 쇼트키 TTL메모리: 표준 TTL메모리 보다 3 배 이상 고속으로 동작되는 특성

― ECL메모리: 프로세서가 가장 고속으로 액세스할 수 있는 기억 소자, 수십 mW에 달하는 매우 높은 전력을 소모, 잡음 여유도가 낮고, 또한 가격이 고가인 단점

― 양극형 메모리의 특성

(1) 메모리의 액세스 속도가 빠르다.

(2) 소비 전력이 크다.

(3) 가격이 고가이다.

(4) 잡음 여유도가 낮다.

― 단극형(unipolar) 트랜지스터를 사용하고 있는 단극형 메모리들은 동작 속도는 느리지만 실리콘 칩에 매우 높은 밀도로 집적시킬 수 있기 때문에 대용량의 메모리를 설계할 수 있는 장점과 소비 전력 또한 □W 정도로 매우 낮은 특징

	양극형 기억장치
TTL			S-TTL			ECL

				MOS 기억 장치
PMOS			NMOS			CMOS			SOS			GaAs

그림 4-24. 반도체 메모리 제조 기술

표 4-2 메모리 제조 기술의 특성 비교

제조 기술	동작 속도	소비 전력	집적도	잡음 여유도
TTL/S-TTL	빠르다	크다(□)	낮다	낮다
ECL	가장 빠르다	가장 크다	가장 낮다	가장 낮다
NMOS	느리다	낮다(□)	가장 높다	크다
PMOS	느리다	중간	높다	크다
GaAs	빠르다	크다	높다	중간
CMOS/SOS	가장 느리다	가장 낮다	높다	가장 크다

(2) RAM(Random Access Memory)

― 메모리로부터 데이터를 판독하거나, 메모리에 기록 동작 모두를 수행할 수 있는 메모리 : RWM

― 일반 데이터는 물론 프로그래머가 작성한 명령어 세트들의 집합인 프로그램과 중간 결과 및 최종 결과 등을 저장

― 데이터의 저장 위치에 순차적으로 액세스 가능하고, 어떠한 데이터의 저장 위치에도 직접 액세스가 가능한 메모리

― 메모리의 액세스 타임(access time)이 일정한 특성

― 중요한 단점은 휘발성(volatile)이라는 점

― 휘발성: 메모리로부터 전원을 제거할 경우 저장되었던 데이터를 모두 잃어버리는 것

― 비파괴적(non-destructive)인 메모리로서, 전원이 공급되는 한, CPU 에서 메모리 내의 데이터를 판독하여도 저장된 내용이 그대로 유지되는 기억 소자

― RAM의 종류: SRAM, DRAM, QUASI-RAM

● SRAM(Static RAM)

― Refresh 필요 없음.

― 한 개의 2 진 비트를 저장하는 부분을 메모리 CELL이라 함

― 집적도를 높이기 위해 일반적으로 양극형보다는 MOS 기술로 제조(NMOS 또는 CMOS)

― 양극형 메모리의 장점은 고속(액세스 타임 : 400ns)으로 동작

CMOS 메모리의 장점은 고밀도로 집적이 가능하다는 점

그림 4-25. 16K×8 비트 SRAM 칩의 블록도

●  DRAM(Dynamic Random Access Memory)

― DRAM 셀에 저장된 데이터는 대략 2ms 정도 시간이 경과한 후에는 전원이 제거되지 않더라도 자연적으로 소멸됨 (DRAM의 이와 같은 특성은 커패시터에 저장되는 전하의 존재 유무에 따라 논리 0 과 1 을 나타내게 되지만, 커패시터에 저장된 전하는 2 ms 의 짧은 시간 내에 스스로 방전되기 때문)

그림 4-27 DRAM의 구조

― DRAM은 기억 장치로서 올바르게 데이터를 저장하기 위해서는 일정한 시간 간격(2ms이하)을 두고 저장된 2 진 데이터	에 대해 재생(refresh)해 주어야만 한다.

― DRAM은 구조가 매우 간단하고, SRAM에 비해 대용량으로 설계가 가능하며, 주소 핀의 수가 거의 1/2로 가능하고, 비트	당 가격이 매우 저렴함

― DRAM 의 특징:	(1) 대용량,	(2) 저전력,	(3) 핀의 수 감소, (4) 저가격

(예제 4-1) 8개의 128K×1 DRAM칩을 사용하여 메모리를 구성할 경우 인텔 80×86 프로세서들이 지정할 수 있는 주소 공간과 메모리 위치 전체를 몇 회에 걸쳐 액세스 할 수 있는가를 나타내라.

(해) 8 개의 128K × 1 비트 DRAM칩을 한 개의 모듈로 구성할 경우 전체적으로 128 K개의 주소 위치를 구성할 수 있기 때문에 16 비트 프로세서인 8086 과 80286 프로세서들은 한 번에 최대 2개 주소 위치에 액세스할 수 있으므로 65,536 회에 걸쳐 전체를 액세스할 수 있다.	80386과 80486 의 경우는 ?

― 5164 CMOS DRAM 칩의 블록도 도시

1.	5164 IC칩의 주소 핀은 SRAM의 경우와는 달리 주소 핀의 수는 1/2 로 가능(DRAM칩 의 경우 주소 핀의 수가 1/2	로 줄어든 이유: 주소 제어 입력으로서 각기 row address strobe(RAS) 제어 신호 단자	와 column address strobe (CAS) 제어	신호 단	자가	있기 때문)

2. 5164 DRAM 칩의 주소핀은 A0 - A7로 8 개 핀만으로	64K 의 메모리 위치 주소에 액세스할 수 있다

3. 그림 4-28 에 나타낸 바와 같이 다른 제어 신호로서 기	록 가능(write enable : WE) 제어 단자가 있으며, 데이터	입력 핀 DI 와 데이터 출력 핀 DO로 구성되어 있음

그림 4-28. 5164 DRAM칩의 블록도

― 대부분의 DRAM칩은 매트릭스 배열로 구성(예: 256×256 매트릭스 배열로 64K×1 개의 비트 셀을 이룸).

그림 4-29. DRAM칩의 핀 실체도

● Quasi-RAM

― integrated RAM : iRAM

― 사용이 간단한 SRAM의 장점과 DRAM의 저장밀도, 가격과	소비 전력의 모든 장점을 갖춘 새로운 종류의 메모리 칩

(3) ROM(Read Only Memory)

― 데이터의 판독만을 전담하여 설계된 메모리 소자

― 이미 저장된 데이터들이 변화되어서는 안 되는 특수한 데이터들을 저장하는데 사용되며, 일반적으로 컴퓨터 제조 회사에서 제공되는 특수한 프로그램과 데이터 등을 저장

― 저장된 2 진 데이터들은 제조 회사에서 ROM 칩 제조 시에 저장되며, 저장된 데이터들은 전원이 제거되더라도 데이터가 소멸되지 않는 비휘발성(non-volatile) 메모리

― ROM 의 종류:	Mask ROM, PROM(programmable ROM),	EPROM(erasable PROM) 등

● 마스크 ROM(mask-ROM)

― 메모리 칩을 제조하는 생산 회사들에 의해 사전에 특수한 2	진 데이터가 저장된 메모리 소자(기록 불가)

― 저장되는 데이터는 흔히 로그 함수, 제곱근, 삼각 함수, 곱셈, 나눗셈 연산과 같은 수학적인 표와 CRT 에 문자를 표시하기 위한 문자 발생 코드 등의 중요한 데이터들

― 결점은 ROM 의  마스크 제조시 비용이 많이 소요된다

― 대량 생산이 가능, 1 개당 가격은 매우 저렴.

그림 4-30. ROM칩의 블록도

● PROM(programmable ROM)

PROM writer를 사용하여 응용 분야에 맞도록 1 회에 한하여 자신이 원하는 프로그램 데이터를 기억시킬 수 있는 특수한 ROM

● EPROM(erasable PROM)

― PROM 칩과 마찬가지로 사용자에 위해 새로운 내용을 반영구적으로 프로그램할 수 있는 기억 소자

― EPROM 칩의 특징은 저장된 내용을 삭제하여 다시 새로운 내용으로 프로그램할 수 있는 메모리 칩

― EPROM writer로 EPROM 칩의 수정 유리판을 통하여 강	력한 자외선을 투과하여 삭제 또는 기록하는 방법

― EEROM(electrically erasable ROM): 핀에 전기적인 펄스를 입력시켜 새로운 데이터의 기록이	가능한 기억 소자

[3] 미래의 기억 소자

조셉슨 소자(Josephson device)

― 현재 사용되고 있는 기억 소자보다 비트 변환 속도가 10배 이상 빠른 것

― 조셉슨 소자는 영국의 노벨상 수상자 브라이언 조셉슨(Brian	Josephson)에 의해 붙여진 이름이며 앞으로 어떠한 메모리	보다도 소형화, 고속화, 실용화가 될 수 있도록 많은 연구	가 뒤따를 것이다.

● 보조 기억 장치

자기 드럼(magnetic drum), 자기 디스크(magnetic disk), 자기 테이프(magnetic tape), 카트리지 테이프(cartridge tape), CD (compact disk), 광 디스크(optical disk), 대용량 코어 메모리, 자기 버블, CCD(Charge Coupled Device) 등

― 중요한 특성: 액세스 방법(access mode), 액세스 타임, 전송 속도, 용량과 비용 등

● 자기 드럼(magnetic drum)

그림 4-31.  자기 드럼

(a)

(b)

그림 4-32.  자기 드럼 메모리

● 자기 디스크 (magnetic disk)

― 자기 디스크(magnetic disk)

1. Hard disk로 통용되는 대용량의 보조 기억	장치

2. 금속이나 플라스틱으로 만들어진 원형판(platter)을 자화된 물질로 코팅한 기억 매체

3. 자기 디스크는 head라는 유도 코일로 데이터를 읽고 쓴다.

― 일반적으로 각 트랙에 기록되는 데이터의 양은 동일하므로, 자기 디스크 표면의 기록 밀도는 바깥쪽 트랙으로부터 안쪽	트랙으로 옮겨갈수록 증가

그림 4-33. 자기 디스크의 데이터 기록 형태

[2] 자기 디스크의 종류와 특징

표 4-3. 디스크 시스템의 특징

특 징	구 분
헤드 움직임	고정 헤드(트랙당 1 개), 이동 헤드(면당 1 개)
디스크 분리	분리 불가, 분리 가능
면 수	단면, 양면
원반 수	단일, 다중
헤드 기술	접촉식, 일정간격, 공기 역학식

(a) 고정 헤드 디스크

(b) 이동 헤드 디스크

그림 4-34. 디스크의 헤드

● 자기 테이프(magnetic tape)

그림 4-37. 테이프 헤드

○ 가상 메모리

● 메모리 계층 구조

가상 메모리(virtual memory)

― 가상 메모리는 컴퓨터가 실제로는 상대적으로 용량이 적은 기억 장치를 갖고 있지만, 사용자가 자기의 요구에 따라 매우	커다란 기억 장소를 갖고 있는 것처럼 느끼게 한다.

― 가상 메모리는 두 단계 혹은 그 이상의 단계를 갖는 계층적(hierarchical) 저장 시스템을 나타내며, 이 계층적	저장 시스템은 운영 체제에 의하여 사용자로 하여금 마치 기억 장치가 단일하고 큰 주소들로 직접 구성된 것처럼 보이도록 관리된다.

― 대부분 가상 기억 시스템은 주기억장치 M1(용량S1)과 보조기억장치 M2(용량 S2)를 갖는 두 단계 계층구조를 사용하며, 고급 프로그래밍 언어에서 마치 무한한 용량의 기억장치가 있는 것처럼 여기지만 사실상 용량은 S1+S2로 한계가 있다.

― 가상 메모리를 사용하는 세 가지의 이유

1. 사용자가 기억 장소를 할당하는 불편을 없애기 위함

2. 프로그램을 그것의 실행 중 사용되는 메모리 시스템의 구	성 및 수용 능력과 무관하게 함

3. 다른 사용자들 간에 메모리 공간의 효율적인 공동사용	(sharing) 을 허용하고, 그러한 메모리 계층 구조로써 가능한 최대의 access rates와 비트 당 가장 저렴한 비용을 얻기 위함

● 메모리 계층(memory hierarchy)

― Ci, tAi, Si 가 각각 비트당 비용, 액세스 타임, 메모리 용량

― 일반적으로 기억장치의 계층 Mi 와 Mi+1 간의 관계는

Ci  > Ci+1

tAi < tAi+1

Si  < Si+1

그림 4-39.  일반적인 메모리 계층 구조

― 논리적 주소들의 재배치(relocation):	프로그램의 실행 동안, CPU는 연속적으로 논리적 메모리 주소들을 생성하며, 이러한 주소들은 메모리 계층을 통해	어떤 형태로 분산된다. 만약 Mi(i≠1)에 할당된 주소가 생성	되면, 그 주소는 CPU가 직접 통신 가능한 유일한 계층	인 M1에 다시 배치되어야만 한다.

― 참조의 지역성(locality of reference): 메모리 계층 구조를 성공적으로 작동시키는 데 필수적인 논리적 메모리 주소들의 예측은 프로그램들의 공통적인 성질(참조의 지역성)에 기초한다. 이것은 짧은 기간에 대해 전형적인 프로그램에 의해 생성되는 주소들이 그 프로그램의 논리적 주소 공간의 적은 영역에 국한되는 경향이 있다는 것

□

참 □                     □□

□                     □□

조 □      □□             □□

□      □□             □□□

빈 □      □□             □ □

□      □□             □ □

도 □      □□          □  □ □

□      □□□         □  □ □

□      □ □         □  □ □                       □□□□

□     □□ □       □ □  □ □       □   □□□□      □□□  □

□□□□□□□  □□□□□□□□□□□□□□ □□□□□□□□□□□□□  □□□□□□□□    □□□□□

논리적 주소 공간

그림 4-40.  주소 참조의 전형적인 비균등 분포

― 참조의 지역성의 이유

1) 명령어들과 데이터들이 프로그램 실행 동안 요구되는 순	서와 컴퓨터의 메모리 내에 연속적으로 내려져 가는 순	서가 매우 유사하다는 것이다.

2) 프로그램 루프에 기인

― 메모리 계층 구조 설계 목표: 가장 빠른 M1의 액세스 속도와 가장 비용이 저렴한 Mn의 비트 당 가격을 비슷하게 유지할 수 있는 성능 구현

― 메모리 계층 구조의 성능 요인

(1) 주소 참조의 통제량(즉, 메모리 계층 구조를 사용하는 프로그램에 의해 생성되는 논리적 주소들의 순서와 빈도)

(2) CPU 에 대한 각 계층 Mi 의 액세스 타임

(3) 각 계층의 저장 용량

(4) 인접한 계층들 간에 전송되는 데이터들의 블럭의 크기

(5) 데이터 블럭이 메모리의 어떤 영	역으로 전송되어 지는 가를 결정하는데 사용되는 할당 알고리즘.

● 가상 메모리(virtual memory)

― 가상 메모리: 프로그래머는 메모리의 기억 용량 제어에 관계없이 프로그램을 작성하고 OS와 하드웨어가 자동적으로 오버레이를 행하도록 한 것

― 이 방식은 자기 디스크에 충분히 큰 가상 기억 영역을 두고	프로그램에서 액세스하는 부분을 메모리로 옮겨서 사용하는	것

― page:자기 디스크와 메모리간에 전송되는 가상기억영역 단위

― roll in: 페이지를 자기 디스크로부터 메모리로 전송하는 것

― roll out: 기억 장치로부터 자기 디스크로 전송하는 것

― 물리적 주소(physical address):	일반적으로 기억 장치 안의 물리적 장소에 부여된 주소

― 논리 주소(logical address):	프로그램 작성에 사용되는 주소

― 프로그램이 기억 장치를 사용할 때 논리 주소는 물리적 주소로 변환됨

― 실 메모리(real memory):	하드웨어로 존재하고 물리적 주소로 참조되는 메모리

― 실 메모리보다 용량이 큰 논리주소로 표현되는 가상적인 기억 공간을 가상 메모리(virtual memory)

[1] 롤인 롤아웃(roll in, roll out)

― 기억 장치와 보조 기억 장치간의 데이터 전송을 스와핑	(swapping)이라 하며 롤인 롤아웃(roll-in roll-out)은 일(job) 단위로 스와핑을 행하는 방식

― 우선순위가 높은 프로그램이 도착하였는데 기억 장치에	빈 영역이 없으면 기억 장치 상의 실행중인 일을 보조 기억 장치에 대피(roll out)

― 우선순위가 높은 일이 끝나면 대피된 일을 주기억에 다시 로	드하고 실행을 재개(roll in)

[2] 오버레이(overlay)

― 롤인, 롤아웃방식이 일(JOB) 단위로 스와핑

― Ovelay 방식: 일의 어드레스 공간의 일부분을 스와핑

(a) 프로그램의 분할

(b) 메모리 영역의 할당

그림 4-41. 오버레이 방식

― 그림 4-41 의 예:	프로그램을 A∼F 의 프로그램 단위(세그먼트)로 분할하고,	A 는 B 와 C 를 호출하고,	B 는 F 를 호출하며,	C 는 D 와 E 를 호출하는 것을 나타냄

― 이 관계로부터 B 와 C 는 서로 호출하는 일이 없으므로 B와 C 는 동시에 기억 장치에 로드 될 필요가 없는 배타적 세그먼트이다. 이 프로그램 전체를 주기억에 로드하려면 190K 워드가 필요하지만 각 세그먼트간의 관계를 고려해서	그림(b)와 같이 배치(allocation)하면 100K 워드로 충분하다.

― 각 세그먼트는 보조 메모리에 넣어두고 필요에 따라 기억 장	치에 적재하는 데, 이 방법을 오버레이라 한다.

[3] 연상기억(Associative memory)

― 메모리에 저장되어 있는 표에서 필요한 항목을 탐색

저장된 데이터를 그 데이터가 들어있는 주소에 의해서 액세	스하는 것이 아니고 기억내용 자체에 의해서 그것이 기억되	어 있는 장소에 액세스할 수 있도록 한다면 탐색시간을 줄	일 수 있을 것이다.

― 기억 내용에 의해서 액세스하는 메모리

associative memory	또는 content-addressable memory

― 기억 장치는 데이터의 내용을 바탕으로 해서 모든 번지를 동	시에 병렬적으로 액세스한다.

― 연상 메모리에 기억되는 데이터는 몇 개의 서브 필드로 분할	되어 있으며 여기에 액세스하고자 할 경우에는 서브 필드 및 그 서브 필드의 값, 즉 키 데이터(key data)를 지정할 필요

그림 4-42. 연상메모리

- 마스크 레지스터 M에 의해 subfield가 지정되며, 키 레지스터 K가 key 값을 저장하고 있다. 전 메모리 셀의 내용을 M으로 마스크한 값과 K가 동시에 비교되고, 일치한 셀에 해당하는 매치 레지스터의 비트는 1로, 그 이외는 0으로 설정된다. 출력 레지스터는 일치한 셀의 내용이 호출된다.

[4] 가상기억 방식

― 가상 메모리는 그림 4-43 과 같이 일정한 크기의 페이지로 분할하고 각 페이지에는 페이지 번호를 붙임

― 메모리의 기억 공간도 페이지와 같은 크기의 페이지 프레임	(page frame)으로 분할하여 페이지 프레임 번호를 붙임

― 롤인, 롤아웃은 페이지와 페이지 프레임간에 행해짐

그림 4-43. 가상 기억 방식

― 페이지 테이블(page table):	어떤 페이지가 기억 장치에 롤인되어 있는지의 여부와 롤인	되어 있다면 어떤 페이지의 프레임에 들어가 있는가의 데이	터가 기억

― 그림(a)의 직접형 page table:	페이지 번호에 대응하는 난에는 페이지 프레임 번호 f, 또는 롤아웃 되었다는 표지가 기록

― 그림(b)의 연상형 page table:	페이지 프레임 번호에 대응하는 난에 페이지 번호 p 가 기록

― 직접형에서는 p로부터 f 를 구하는 것이 간단하지만 큰 테이	블이 필요하고, 연상형의 경우에는 테이블은 작아도 되지만	p 로부터 f 를 구하는 데, 테이블의 전체 난을 탐색해야 하	기 때문에 시간이 걸린다는 결점이 있고, 연상 메모리를 사용하면 고속으로 행할 수 장점이 있음

― 페이지수가 페이지 프레임에 비해서 훨씬 클 경우에는 연상형이 유리하며 그렇지 않을 경우에는 직접형이 유리

(a) 직접형

(b) 연상형

그림 4-44. 페이지 테이블

― 멀티 프로그래밍 방식의 경우 각 프로그램이 독자적 가상기억 공간을 사용. 이때, 사용자 프로그램 별 페이지 테이블을 마련하고 CPU에는 페이지 테이블을 지시하기 위한 페이지 테이블 포인터 기억 레지스터를 갖춤.

― 페이지 테이블은 각 프로그램의 크기에 대응하는 크기면 충분

그림 4-45. 다중 프로그래밍방식에 있어서의 가상기억

― 재배치(relocation)라는 기법

같은 프로그램을 물리적 메모리의 어떤 위치에서도 실행시킬 수 있으며, 실제의 메모리나 디스크 내에 맵핑 만 바꾸어주면 어디든 들어갈 수 있다.

― 메모리 매핑 또는 주소 변환(address translation)

가상 메모리가 있을 때, CPU가 가상 주소를 내보내면 하드웨어와 소프트웨어를 같이 이용하여 이를 물리적 주소로 변환한 후 기억 장치에 액세스할 수 있게 하는 과정

― 최신 컴퓨터는 일반적으로 가상 메모리의 두 계층(DRAM과 자기 디스크)로 되어 있음.

표 4-4.  캐쉬와 가상 메모리의 각종 변수들의 특성

변수	1차 캐쉬	가상 메모리
페이지(블럭)의크기	16 - 128 바이트	4K - 64K
히트 시간	1∼2 클럭 사이클	40∼100 클럭 사이클
미스 페날티 (액세스 시간) (전송 시간)	8∼100 클럭 사이클 (6∼60 클럭 사이클) (2∼40 클럭 사이클)	70만∼600만 클럭 사이클 (50만∼400만 클럭 사이클) (20만∼200만 클럭 사이클)
미스율	0.5∼10%	0.00001∼0.001%
데이터 메모리 크기	0.016∼1MB	16∼8192MB

― 캐쉬와 가상 메모리의 차이

(1) 캐쉬 미스 시의 대체는 주로 하드웨어가 제어하는데 반하	여 가상 메모리의 대체는 주로 운영체제가 제어한다. 미스	페날티가 더 길다는 것은 운영체제가 관여할 여유가 있고	어떤 것을 대체해야 하는가 판단하는데 더 많은 시간을 쓸	수 있다는 뜻이 된다.

(2) 프로세서의 주소 크기가 가상 메모리의 크기를 결정하지만 캐쉬 크기는 프로세서의 주소 크기와 관계가 없다.

(3) 보조 메모리는 계층상 기억 장치를 백업하는 역할을 할	뿐만 아니라 대부분 파일 시스템을 위해서 사용된다.

― 가상 메모리 시스템의 두 가지 구분

1. 페이지(page)라는 고정 크기의 블럭을 가진 것, 페이지 크기는 고정으로 4K - 64K

2. 세그먼트(segments)라는 가변 크기의 블럭을 가진 것,	그 크기는 가변적인 데. 세그먼트의 크기는 최대 216 = 64KB 에서 232 = 4GB 까지로 되어 있고, 최소의 세그먼트는 1 바이트

― 최근의 시스템은 세그먼트만 사용하는 것은 거의 없고 paged segments 방식을 사용하는 것이 많다.

● 세그먼트 방식(segmentation)

― 페이지 방식에서 주소 공간의 블럭화는 시스템에 의해 자동적으로 이루어짐.

― 세그먼트 방식에서는 프로그래밍에 의해서 프로그램과 논리적으로 관계가 있는 부분을 단위로 블럭화

― 프로그램은 서브루틴(프로시져), 데이터는 배열/리스트와 같은 그룹으로 구분되며, 이 논리적인 한 부분을 segment라 함

― 각 세그먼트는 상이한 크기를 가짐.

― 세그먼트의 논리 주소로부터 물리 주소로의 변환은 페이지 테이블과 비슷한 세그먼트 테이블을 참조해서 행함.

― 세그먼테이션(segmentation) 방식: 세그먼트에 의해서 주기억 장치에 배치하는 기억 관리기법

그림 4-46. 세그먼트방식에 있어서의 가상기억

― 프로그래머가 프로그램을 세그먼트화하고 다시 시스템에 의해서 페이지화한다. 주기억장치와 보조기억장치간의 전송은 페이지 단위로 행해지며, 세그먼트에 의해서 프로그램의 공유나 메모리 보호 등 프로그램 구성요소 상호의 관계를 제어한다.

― 유효 주소는 그림 4-46 과 같이 세그먼트 번호 s, 페이지 번호 p 및 변위 d 로 구성된다. 이와 같은 방식에서 메모리 참조 시 2회 테이블 읽기가 이루어져야 한다.

― 이의 해결책으로 한번 테이블을 찾아서 결정한 페이지 프레임 번호를 연상 메모리에 등록해 둔다. 유효주소가 주어지면 CPU는 연상메모리에서 찾아서 있으면 그 프레임 번호를 사용하고, 없으면 세그먼트 테이블과 페이지 테이블을 순차로 찾아서 페이지 프레임을 구하는 것과 동시에 그 결과를 연상메모리에 등록한다.

― 페이지의 크기를 정하는 문제: 메모리의 이용 효율이라는 면에서 중요한 사항

― 페이지 사이즈가 너무 크면 페이지 중에 사용하지 않는	부분이 생겨 내부 단편화 (internal fragmentation)가 일	어나기 때문에 페이지 사이즈는 작은 쪽이 좋지만 페이지를 작게 하면 페이지수가 증가하므로 페이지 테이블이 커져 이것을	기억하는 데 메모리 공간을 낭비하게 된다. 실제로는 1∼	4K 바이트 정도의 페이지 사이즈를 사용

● 페이징(paging)

― 디맨드 페이징(demand paging)방식:	프로그램에서 액세스한 페이지가 메모리에 없을 경우에는	이것을 자기 디스크에서 롤인해야 하는데, 이것을 프로그램	실행 시에 자동적으로 행하는 것

(A) FIFO 방식

(b) LRU 방식

그림 4-47. 디멘드 페이징을 위한 페이지 테이블

― 연상형의 페이지 테이블에서 페이지 프레임이 가득 찬 경우 어느 프레임부터 갱신할 것인가? FIFO방식, LRU 방식

― FIFO 방식: 먼저 롤인 된 페이지 프레임이 상위 순서. 롤인 시 일련번호를 붙여주는 형태 혹은 순환형 큐 형태로 함. 프로그램의 종료로 비게 된 프레임에 대응하는 난도 채움.

― LRU (least recently used page first): 장시간 참조가 없었던 페이지 프레임일수록 상위 순서. 페이지 테이블의 순위 난에 참조가 있는 것은 0으로, 그 밖의  페이지 프레임은 모두 1을 더하는 형태로 함.

― 써넣기 flag: 페이지 프레임에 새로운 페이지를 롤인 할 경우  기존의 페이지가 변경되었으면 롤아웃을 해야함. 이렇게 하기 위해 페이지에 기록 시 세트하는 것이 써넣기 flag임.

― 히트(hit):	CPU 에 의해서 유효 주소, 즉 가상 기억 공간의 주소가 생	성되면 그 페이지가 페이지 테이블에 등록되어 있는가를 조사하여 등록되어 있으면 히트라 한다. 이 때에는 그 페이지 프레임 번호를 읽어내고, 이것과 오프셋을 연결한 실주소를 주소 레지스터에 넣고 메모리에 액세스한다. 이때 페이지 테이블의 순위난을 0으로 하고, 써넣기일 경우에는 써넣기 플래그를 세트한다.

― 페이지 부재(page fault):	그 페이지가 페이지 테이블에 등록되어 있지 않은, 즉 히트	하지 않은 경우이며, 인터럽트가 일어나 다음과 같은 인터	럽트 처리 프로그램이 실행된다. 최고 순위의 페이지 테이블 칸을 탐색하여 거기의 써넣기 플래그가 세트되어 있으면	우선 그 페이지 프레임의 내용을 롤아웃한 후에, 그렇지 않으면 바로 액세스하려고 하는 페이지를 구 페이지 프레임에 롤인하고 페이지 테이블에 새로운 페이지 번호를 써넣는다. 그 후의 동작은 페이지 부재가 없는 경우와 같다.

― 프로그램이 진행함에 따라서 액세스되는 페이지 수는 증가

― 워킹 세트(working set): 어떤 시각 t에 있어서 그 T초 전으로부터 그 시점까지에 액세스된 페이지의 수 W(T, t)는 그림 4-48 과 같이 T 의 단조 증가 함수가 된다.

― 멀티프로그래밍 방식에서 동시에 실행되는 각 프로그램에 대	한 W를 합한 것도 같은 모양이 된다. 가령 사용할 수 있는 페이지 프레임의 수가 W1 이라고 하면	T1 초 동안은 페이지를 롤아웃할 필요가 없지만 이 시간을 초과하면 롤아웃이 필요하게 된다고 말할 수 있다. 그림에서 보는 바와 같이 W1을 작게 하면 T1 은 급격히 감소

― 스래싱(thrashing):	롤인, 롤아웃이 매우 빈번하게 되는 상태를 말하며, 이와 같은 상태에 빠지면 프로그램의 처리가 순조롭게 이루어지지 않으므로 동시에 처리하는 프로그램의 수를 감소시키는 등의 조치가 필요

그림 4-48. 워킹 세트의 크기

― 가상 기억의 이점:	메모리의 크기에 개의치 않고 큰 사용자 프로그램을 작성할 수 있다는 것.	실제로는 자기 디스크를 사용하는 것이므로 메모리만으로	처리하는 경우에 비해서 처리 속도가 떨어진다.

● 고속 메모리(high-speed memory)

― 고속 계산 수행의 문제점

프로세서와 기억 장치 M과의 작동 속도의 차이

― CPU와 기억장치 간 인터페이스 대역폭을 늘리기 위한 방법들

1. 주기억 장치에 더 빠른 기술을 사용하	여 메모리 액세스 시간을 감소

2. 더 긴 메모리 워드를 사용

3. 액세스 타임을 줄이기 위해, 프로세서와 주기억 장치 사	이에 빠른 캐쉬 메모리를 삽입

4. 각 메모리 사이클 동안에 한 개 이상의 워드를 액세스

● 캐쉬 메모리l(Cache Memory)

― 캐쉬 메모리의 사용: CPU 속도와 기억 장치의 속도 사이의 차이가 현저할 때 명령의 수행 속도가 기억 장치의 속도에 비례하지 않고 거의 CPU의 속도와 같도록 하기 위함

― 속도의 격차를 완화하기 위한 완충 장치:	버퍼 메모리(buffer memory)/캐쉬 메모리(cache memory). 주기억장치보다 용량이 현저히 작고 속도가 CPU와 유사하며 CPU 내부에 존재하므로 CPU 내부의 레지스터와 액세스는 유사함

― 속도가 빠른 컴퓨터 본체와 느린 자기 디스크의 완충:	디스크 캐쉬(disk cache)

― 컴퓨터에서 캐쉬 메모리를 첨가하는 목적: 평균 메모리 액세스 타임 tA 를 가능한 캐쉬 액세스 타임	tA1 에 근접시키는 것

― 명령이나 데이터를 위하여 메모리에 액세스 할 경우 원하는	데이터가 캐쉬에 기억되어 있을 때 ∀ 적중(hit), 적중률(hit ratio)이 1 에 가까워야 함(이것은 프로그램의 참조의 지역성 성질 때문에 가능)

― 캐쉬-기억 장치 계층 구조(M1, M2)와 기억 장치-보조 기억 장	치 계층 구조(M2, M3)사이에는 중요한 차이(표 4-5에	요약)

1. (M1, M2)가 메모리 계층 구조에서 더 위에 있으므로,	(M2, M3) 보다 더 빠른 속도로 작용

2. 액세스 타임 비율 tA2 / tA1은 대체적으로 10 이하인 반	면, tA3 / tA2는 대체적으로 100 이상

3. 작동 속도에 있어서 차이 때문에 (M1,M2)를 관리하는 데	는 소프트웨어 루틴보다 고속의 논리 회로를 사용

표 4-5.  캐쉬-기억 장치와 기억 장치-보조 기억 장치와의 주된 차이

2단계 계층 구조 (Mi-1, Mi)	캐쉬 - 주기억 장치 (M1, M2)	주기억 장치 - 보조기억 장치 (M2, M3)
전형적인 액세스 시간비 tAi/tAi-1	5 / 1	1000 / 1
기억 장치 관리 시스템	특별한 하드웨어로 구현	주로 소프트웨어로 구현
전형적인 페이지 크기	1내지 16 워드	16 내지 1025 워드
두 번째 단계 Mi에대한 프로세서의 액세스	대개 M2를 직접 액세스	M3에 대한 모든 액세스는 M2를 경유함

(a) 2 단계

(b) 3 단계

(c) 4 단계

그림 4-49.  캐쉬 시스템에서의 데이터의 흐름

● 매핑 방식(mapping)

― 주소가 주어졌을 때 그것의 블럭이 어디에 있는가의 데이터는 블럭 디렉토리(block directory)에 기억된다.

― 캐쉬 메모리의 관리방식에 따라 여러 가지 블럭 디렉토리가	사용되는 데, 그 대표적인 관리 방식

[1] 직접 사상(그림 4-50 참조)

1. 블럭 별로, 그 안에 들어갈 캐쉬 메모리의 프레임이 고정.	블럭 번호 b 는 주소의 상위 비트 열로 나타내지만 그 하	위 비트 열이 프레임 번호 r 을 나타내도록 되어 있다.

2.	모든 블럭 수를 n, 전 프레임 수를 m 이라 하면 1 프레임 당 n/m 개의 블럭이 들어갈 가능성이 있으므로, 블럭 디렉토리의 그 프레임에 대응하는 칸에는 실제로 들어가 있는 블럭의 블럭 번호에서 r 의 부분을 제한, 상위의 비트열 k 를 제한 나머지 부분(r,d)가 된다. (단, 블럭 디렉토리의 r 번째 칸이 k 와 일치하지 않는 경우에는 (k,r)번째의 블럭을 메모리로부터 캐쉬 메모리에 읽어들이고 블럭 디렉토리를 k 로 바꿔쓰지 않으면 안 된다.)

3. 이 방식에서는 캐쉬 메모리에 빈 프레임이 있어도, 거기에 어떤 블럭이나 넣을 수 없다는 결점은 있지만	주소 변환이 용이하여 제어 회로가 간단하고 고속으로 수행되므로 실용

그림 4-50. 직접 사상 방식

[2] 섹터 방식(sectoring)

1. 메모리의 주소 공간을 몇 개의 연속된 블럭으로 이루어지는 섹터(sector)로 분할하고 캐쉬 메모리에는 섹터 단위로 써넣을 장소를 배치한다.

2. 캐쉬 메모리 쪽도 섹터 크기의 섹터 프레임으로 분할하고 여기에 한 섹터를 기억한다. 섹터는 어느 섹터 프레임에 넣어도 좋지만 섹터 내에서의 위치는 섹터 프레임 안에서도 바꿀 수 없다.

3. 메모리에서 캐쉬 메모리에 써넣는 단위는 섹터가 아니고 블럭이다. 따라서 블럭 디렉토리에는 섹터 프레임별로 칸을 마련하고 섹터프레임 번호, 할당된 섹터의 섹터 번호, 캐쉬 메모리에 들어 있는 블럭을 표시하기 위한 비트 맵 및 섹터 할당 갱신을 위한 순위를 쓴다.

그림 4-51. 섹터방식

[3] 집합 연관 사상(set asociative mapping)

1. 캐쉬 메모리의 연속된 수 프레임을 모아 그룹을 만들고 g 번째 그룹에 써넣을 수 있는 메모리의 블럭은 블럭 번호의 하위 비트열의 값이 g인	것만으로 한정한다는 제한을 둔다.

2. 검색하는 블럭 디렉토리의 범위가 좁혀지므로 연상 메모리가 간단해지고 또 캐쉬 메모리의 이용 효율이 높아진다는 잇점

3. 지금 블럭 번호를 나타내는 비트열에서 그룹 번호 g 를	한 나머지 부분을 b 라 하면 캐쉬 주소는 메모리 주소의 블럭 번호의 부분을, g 로 지정되는 그룹의 블럭 디렉토리의 블럭 번호가 b 와 일치하는 칸의 프레임 번호 r로 치환한 것

그림 4-52. 집합 연관 사상 방식

● 교체 알고리즘

액세스할 블럭이 캐쉬 메모리에 없는 경우에는 그 블럭을 메모리에서 읽어 내어 캐쉬 메모리에 써넣어야 되는 데, 블럭 갱신 방식을 정해둘 필요가 있다. 자주 사용되는 방식은  LRU 방식, FIFO 방식, 그리고 전혀 무작위로 선택하는 랜덤 방식

● Write 제어

1. 가상기억의 경우, 페이지 갱신을 할 때 한 번이라도 기록되었던 페이지 프레임은 롤아웃할 필요

2. 캐쉬 메모리의 경우에는 이 시간을 절약하기 위해서 액세스한 캐쉬 메모리에 write 할 때 동시에 메모리 쪽에도 써넣는 방식을 사용하므로 롤아웃할 필요는 없다

3. 이와 같이 캐쉬 메모리와 메모리의 양쪽에 동시에 써넣는 방법을 라이트 스루(write through)

4. 기억 장치에서 캐쉬 메모리에 롤인할 때도 일단 롤인하고서 CPU가 캐쉬 메모리에 해당 데이터를 읽는 것이 아니고 롤인할 때 동시에 CPU 가 읽는 방식을 취하기도	한다. 이 방법이 리드 스루(read through)

● 캐쉬의 효과

― 캐쉬 메모리의 효과 :	명령어의 처리 시간

― 명령의 처리 시간은 명령어를 호출하는 시간, 피연산자 (1개라고 가정)를 메모리에서 호출하는 시간 및 연산 시간의 합

캐쉬 메모리가 없는 컴퓨터의 명령 처리 시간 : To

캐쉬 메모리를 가지며 명령어와 피연산자가 모두 캐쉬 메모리에 있을 경우의 명령어 처리 시간 : Tc

(to : 연산시간, tm : 기억 장치의 액세스 시간, tc : 캐쉬 메	모리의 액세스 시간)

To = to + 2tm	식(4.3)

Tc = to + 2tc	식(4.4)

― 실제는 명령어나 피연산자는 반드시 캐쉬 메모리에 있지 않다.

― 연산시간 Tc(h) 의 계산

1. (히트율(hit rate) : h, 메모리로부터 1 블럭을 캐쉬 메	모리에 전송하는 데 걸리는 시간 : tb )

Tc(h) = Tc + 2(1 - h)tb	식(4.5)

2. tb = tm 이고, 또 tc≪tm, t0≒tc 이므로

[eqn: {T_c `(h`)} over T_0 ~ Image ~ 3 over 2 ~ t_c over t_m ~+~ 1 ~-~ h]	식(4.6)

의 관계식을 얻는다. tc = 0.05□, tm = 0.5□ 라 하고 히트율이 0.9 라 하면 캐쉬 메모리에 의해서 실행시간이 1	/4로 단축된다.

● 디스크 캐쉬

― 자기 디스크의 액세스 시간의 단축: 자기 디스크 제어 장치 안이나 적절한 위치에 디스크 캐쉬라 부르는 버퍼 메모리(RAM)를 갖추기도 한다.

― 디스크 캐쉬에는 자기 디스크의 1 트랙분에 상당하는 데이터가 들어가는 프레임이 수백 개 정도 설치

― 디스크 캐쉬 제어기는 디스크 전송을 관장하며 지역성을 이용하여 실제 입출력 데이터 전송 시간을 줄임

― 기억 장치에 전송하는 전송 크기에 따라 다르지만 20∼30□ 걸리던 시간을 2∼5□ 로 단축시키고 있다.	UNIX 와 같은 운영체제에서는 주기억 장치에 한 입출력 버퍼를 유지하는 소프트웨어 캐쉬 기법을 사용하기도 한다.

그림 4-53. 디스크 캐쉬를 갖춘 자기 디스크 제어장치

그림 4-54.  디스크 캐쉬