기억장치 : 프로그램과 데이터를 저장하는 장치
주기억장치
처리에 당장 필요한 프로그램이나 데이터 저장
중앙처리장치와 직접 데이터교환가능
보조기억장치
주기억장치의 용량부족으로 인해 저장이 어려운 대량의 자료를 보관하는 장치
중앙처리장치와 직접적인 자료교환이 불가능, 주기억장치를 통해서만 가능
주기적장치에 비해 가격이 저렴하고 용량이 크지만, 자료의 전송속도는 느림
1. 지역성의 원리
- 프로그램 실행에서 발생하는 주소들은 기억장치내 한정된 영역만을 반복적으로 지정
- 그외의 영역에 대한 접근은 상대적으로 희박
시간적 지역성(temporal locality)
- 어떤 내용이 한번 참조되면 곧바로 다시 참조되기 쉬움
공간적 지역성(spatial locality)
- 어떤 내용이 한번 참조되면 그 내용에 가까운 곳의 다른 내용이 곧바로 다시 참조되기 쉬움
프로그램의 지역성
레코드나 배열의 요소에 접근할때 공간적 지역성이 커짐
- 반복적으로 명령어/데이터에 접근하는 루프를 포함한 프로그램은 시간적 지역성 큼
- 대개의 명령어들이 순차접근되므로 공간적 지역성도 큼
2. 기억장치의 계층구조
(1) 기억장치 계층구조
▷ 상위계층 : 하위계층 기억장치가 기억하는 내용 일부를 저장
▷ 하위계층 : 모든 데이터가 저장됨
▷ 블록 : 두 계층간에 전송되는 정보의 단위(데이터의 최소단위)
▷ 히트(hit) : CPU에 의해 요구되는 데이터가 상위계층의 어떤 블록에 있을때
▷ 미스(miss) : 상위계층에서 찾을수 없을때
▷ 히트율: 상위계층에서 찾을수 있는 기억장치 접근비율
▷ 미스율: 상위계층에서 찾을수 없는 기억장치 접근비율
(2) 기억장치 성능평가
▷ 기억용량(capacity)
▷ 접근시간(access time) : 기억장치의 데이터 판독, 기록에 걸리는 시간
▷ 사이클 시간(cycle time) : 하나의 억세스 시작부터 다음 억세스 시작까지 소요시간
▷ 기억장치 대역폭(bandwidth) : 기억장치의 데이터 처리속도, 데이터 전송율
▷가격(cost)
(3) 주기억 장치 성능평가
- 접근시간 : CPU의 클럭 사이클과 비교하여 많은 차이가 있어, CPU와 속도차이의 개선필요
- 대역폭 : CPU와 보조기억장치, 입출력장치들이 공동으로 사용하므로 대역폭이 제한적
- 기억용량 : 기억용량의 증가가 요구됨
≫ 개선방법 : 복수모듈기억장치, 연관기억장치, 캐시기억장치(속도차이), 가상기억장치(기억용량)
3. 복수모듈 기억장치
(1) 주기억장치의 대역폭 개선방법
▷ 문제점
- 명령어 수행속도의 제한적인 요소
- 중앙처리장치와 입출력장치가 경쟁적으로 이용하므로 병목현상발생
▷ 대역폭의 개선방법
- 속도가 빠른 기억소자를 이용하여 설계
- 주기억장치에서 한번에 읽을수 있는 단어의 비트수 증가
- 기억장치의 구조적 개선 ≫ 복수모듈 기억장치
(2) 복수모듈 기억장치 구성
기억장치모듈을 여러개 가지고 있는 기억장치(각 모듈은 독자적인 주기억장치)
기억장치를 구성하고 있는 모듈수만큼 단어들을 동시에 접근가능
▷ 복수모듈 기억장치의 작동
(3) 문제점 및 해결안
- 1개의 버스를 공유할 경우 동시에 버스 사용을 요구하는 버스경합 발생
- 동시에 1개 이상의 모듈들이 동일 버스 사용시 데이터간의 충돌 : 기억장치 충돌
≫ 개선방법 (기억장치 접근시간을 효율적으로 향상)
- 메모리 인터리빙(memory interleaving)
- 기억장치를 복수모듈로 구성하고 각 모듈이 동시에 접근(버스경합이나 기억장치충돌방지)
- 같은 시각에 여러 모듈로 동시에 주소를 전달할수 없음
- CPU가 모듈별로 전송할 주소를 교대로 배치한후 차례차례로 전송하여 병행접근
4. 연관기억장치 (Associative Memory)
- 내용주소화 기억장치 (CAM : Content Addrssable Memory)
- 기억장치에 저장된 데이터의 내용을 이용하여 기억장치에 접근할수 있는 기억장치
- 통상의 기억장치와 달리 단어의 주소가 아닌 내용을 기억하는 기억장치
- 일반적인 데이터는 단어로 구성되며 저장된 주소로 접근, 주소를 모르는경우 많은 기억장치 사이클 필요
(1) 연관기억장치의 구성 및 접근
▷ 21세 ~ 31세의 학생검색
(2) 연관기억장치의 장점
▷ 주소에 의해 데이터에 접근하는 RAM에 비해 접근 속도가 빠름
ex) 32K x 16 RAM의 경우(32,000개의 기억장치 사이클, 주소0부터 마지막까지 순서대로 비교)
▷ 16개의 연관기억장치 사이클 (associative memory cycle)필요
▷32000개 단어 모두에 대해 한비트씩 병렬로 읽어내어 비교 (16비트 데이터의 경우)
▷ 연관기억장치 기억소자들은 병렬판독회로가 포함되어 가격이 비쌈
5. 캐시기억장치
- 주기억장치의 수행속도 개선을 위한 방법
- 주기억장치보다 속도가 빠른 기억소자, 중앙처리장치와 주기억장치간 속도차 줄여줌
- 중앙처리장치가 주기억장치에 접근하는 대신 캐시기억장치에서 데이터를 인출
(1) 원리
- 캐시기억장치는 가격이 비싸기 대문에 기억용량은 주기억장치의 기억용량보다 작음
- CPU가 주기억장치에 있는 데이터를 미리 캐시기억장치로 옮겨놓고 접근
- 접근해야 할 데이터를 미리 예측 (데이터 접근의 지역성 원리 이용)
** 데이터 접근의 지역성 원리: 최근 접근한 프로그램과 데이터는 미래에 다시 접근될 가능성이 크므로 가까운 미래에 접근할 명령어와 데이터를 비교적 정확하게 예측하는 수단, 캐시기억장치와 가상기억장치에서 기억장치의 성능개선을 위한 수단으로 사용
▷ 캐시기억장치로 옮기는 데이터
- 데이터 접근의 지역성을 기초로 그 단어를 포함하는 블록을 옮김
- 가까운 미래에 접근할 데이터를 예측하는 방법 구현
▷ 블록
- 주기억장치내 연속적으로 저장된 일정한 수의 단어
- 주기억장치와 캐시기억장치는 모두 같은수의 단어로 구성된 블록으로 나뉨
▷ 희생블록 (victim block)
- 캐시에 미스되었을때 접근하려는 데이터를 가져오기 위한 한블럭의 공간확보
- 희생블록은 가장 사용되지 않을것으로 생각되는 블록을 선택
- 블록교환 : 희생블록을 주기억장치의 원래공간에 저장, 희생블록이 있던 캐시의 블록에 주기억장치의 블록을 저장
▷ 적중률
-블록 교환이 자주 일어나는 것은 주기억장치 접근이 빈번한 것으로 시간적 낭비
- 캐시기억장치에서 히트되는 비율(적중률)을 높여 블록교환 최소화
- 적중률은 캐시기억장치의 적중율을 측정 ( 우수 : 0.95 ~0.99 )
5. 캐시기억장치의 사상
▷ Mapping (사상)
- 캐시와 주기억장치 사이의 데이터 이동
- 중앙처리장치가 캐시에서 데이터를 가져오려 할때
캐시에 원하는 데이터가 없는경우(miss) 캐시의 일부를 주기억장치로 보내고, 주기억장치의 데이터를 캐시로 가져와야 하는 데이터 이동발생
- 직접사상, 연관사상
(1) 직접 사상방식
중앙처리장치가 주기억장치를 참조시 주소필드를 Tag필드와 Index필드로 구분
- 캐시에서 주소 Index필드와 같은 인덱스를 찾아 Tag확인/일치 시 데이터 인출
Index가 없거나 Tag불일치시 주기억장치에서 데이터를 찾아 가져옴
▷ 단점
데이터가 캐시의 Index에 따라 순차적으로 저장
Index는 같으나 태그가 다른 데이터를 반복 접근시 캐시기억장치 접근실패율이 높아짐
캐시의 하나의 Index에 서로 다른 두개의 데이터를 공유할수 없음
(2) 연관 사상방식
캐시기억장치에 데이터블록을 저장할때, 데이터와 주기억장치의 주소도 함께 저장
주기억장치의 데이터블록이 캐시기억장치 임의의 위치 존재, 직접사상방식 단점 일부보완
▷ 단점
중앙처리장치의 주소를 캐시에서 찾을때 최악의 경우, 모든 캐시주소를 다 검색해야함
(3) 집합-연관 사상방식
- 직접사상방식과 연관사상방식을 조합
- 캐시기억장치내 하나의 인덱스에 두개이상의 데이터블록을 저장하고 세트(집합)구성
- 데이터 검색시, 중앙처리장치 주소의 Index와 같은 Index를 찾고,
인덱스에 연관된 서로 다른 태그의 데이터 중에 연관사상방식에서와 같은 방식으로 데이터를 찾음
6. 가상기억장치
- 주기억장치의 기억용량이 부족한 점을 개선
- 비트당 가격과 용량은 보조기억장치수준이나 속도가 주기억장치와 같은 장치제공
보조기억장치와 같이 용량이 큰 기억장치를 마치 주기억장치처럼 사용하는 개념
(1) 가상주소
가상주소 (Virtual address :VA) 가상기억장치 시스템에서 수행되는 프로그램 명령어가 사용하는 주소
물리주소 (Physical address:PA) 주기억장치에 접근하기 위해 실제 주기억장치에 적용하는 주소
→ 중앙처리장치에서 참조되기 위해 가상주소는 주기억장치의 물리주소로 변환 (주소매핑)
(2) 동작원리 및 주소변환
프로그램을 블록단위로 나누어, 주기억장치에는 현재 실행되는 불록만 기억
나머지 부분은 보조기억장치에 두었다가 필요시 주기억장치로 올림
운영체제가 작업하며, 중앙처리장치는 모든 내용이 주기억장치에 있는것처럼 사용
** 블록의 기본개념은 페이지(page)이며, 세그먼트(segment)를 사용하기도 함
▷ 주소변환표 (매핑표) 이용
- CPU가 가상주소로 접근하기 위해 변환표로 물리주소로 변환 후 실제 주기억장치에 접근
- 페이징 기법, 세그먼트 기법
(3) 페이징 기법- 가상기억공간의 프로그램 블록과 실제기억공간의 프로그램 블록의 크기가 같음- 가상기억공간을 동일한 크기의 블록인 페이지로 나누어 주소변환에 활용
(4) 세그먼트 기법- 가상기억공간의 주소공간을 세그먼트 단위로 분할- 세그먼트는 페이지와 달리 주소공간의 크기가 동일하지 않은 가변길이의 주소공간
- 프로그램의 논리적인 구조에 다라 페이지의 크기를 다양하게 나눔
- 프로그래머가 프로그램을 논리적인 구조에 따라 세그먼트화, 시스템이 페이지로 나눔
- 가상주소를 논리주소라 하며, 세그먼터번호, 페이지번호, 워드번호로 표현
7. 보조기억장치
당장 필요하지 않지만 필요시 주기억장치로 옮겨 사용할수 있는 자료를 저장
기억장치 계층구조상에서 하위계층 수준에 위치
(1) 종류
▷ 접근 시간, 접근방법, 저장매체에 따라 구분
- 자기매체 (자기디스크, 자기테이프)
- 광학디스크 (컴팩트디스크)
- 반도체 메모리 (SSD)
▷ 구성방법에 따라
- RAID 시스템
(2) 데이터 접근방법
▷ 순차접근(sequential access)방법
- 자료가 순차적 저장, 자료접근시 처음부터 순서적으로 데이터 검색
- 파일의 레코드에 차례로 접근, 일괄처리에 사용 ( 자기 테이프 )
▷ 직접접근(direct access)방법
- 파일내의 레코드 검색시 직접 원하는 레코드에 접근가능
- 데이터 검색이 빠르며, 실시간 처리에 주로 사용 (자기 디스크)
(3) 자기디스크
금속이나 플라스틱으로 만들어진 원형판(platter)을 자화된 물질로 코팅한 기억매채
헤드라 불리는 유도코일(conducing coil)을 사용해서 데이터를 읽고 씀
하드디스크와 플로피 디스크
(4) 자기테이프
산화자기 박막으로 코팅된 테이프
순차접근방식의 기억장치
기록밀도의 효율성이 높으나(데이터 백업용) 속도가 느림
데이터는 레코드 단위로 기록됨
(5) 광학디스크
광학매체를 이용한 보조기억장치
플라스틱 재질의 투명한 디스크원판내부에 알루미늄을 코팅해 반사면을 기록면으로 만들고 빛을 이용해 0과 1을 기록하고 판독
정보 저장용량이 매우 큼 - 멀리미디어 응용분야에서 사용
▷ 광기억장치의 종류
CD : 디지털화된 음량정보 저장장치
CD-ROM : CD보다 재생장치가 정교하며 오류 수정코드가짐
CD-R : 한번 데이터를 기록하면 이후 읽기만 가능한 CD
CD-RW : 재기록이 가능한 CD
DVD(Digital Video Disk): 영상저장매체로서 CD의 6~8배 용량
▷ 하드 디스크의 문제점
자기 디스크를 이용함에 따라 처리속도의 한계
디스크의 회전에 따른 소음과 전력소모의 문제
(6) SSD(Solid State Device)
자기디스크가 아닌 반도체 메모리 내장
빠른 속도의 데이터 읽기, 쓰기 가능
물리적인 움직임이 없어 작동소음이 없고 전력소모가 적음
▷ SSD의 동작
- 블록과 페이지를 기반으로 한 구조 : 기존 파일시스템과 운영체제 직접활용 불가능
- SSD컨트롤러에서 물리블록과 페이지 위에 논리섹터를 구현
시스템이 SSD를 기존의 하드 디스크처럼 사용할수 있도록 함
** 플래시 변환계층 (FTL:Flash Translation Layer)
물리블록과 페이지위에 논리섹터를 구현 → 파일시스템이 논리섹터 주소를 통해 SSD에 접근 → 물리블록과 페이지주소로 변환하여 플래시 메모리의 데이터에 도달
8. RAID 시스템
고가의 대용량 디스크 시스템을 만드는 SLED(single large expensive disk)를
저가의 작은 디스크 배열로 대체하기 위해 RAID(redundant array of inexpensive
disks)시스템 개발
- 크기가 작고, 저가인 여러개의 하드디스크를 묶어 하나의 기억장치처럼 사용
- 실제 여러 하드디스크에 데이터를 분산처리하나 운영체제는 하나의 디스크로 인식
- 전송률을 높이기 위해 입출력을 병렬로 처리하므로 여러개의 헤드와 구동장치 필요
- 장치가 늘어날수록 오류발생율이 증가, 오류검출용 패러티비트를 저장할 여분디스크 필요
- RAID 0 ~ 6레벨까지 7종류, 레벨사이의 계층적 관계는 없으며 서로 다른 특성보유