기억장치
1. 기억장치란
컴퓨터에서 처리하려는 프로그램과 데이터를 저장하거나 당장 필요하지 않은 프로그램과 데이터를 저장하였다가 필요시에 공급 할 수 있도록 많은 양의 정보를 저장할 수 있는 장치
2. 기억장치의 종류
가. 주기억장치: 실행중인 프로그램에 필요한 데이터를 일시적으로 저장한다. (RAM, ROM)
나. 보조기억장치: 주기억장치보다 속도가 느리지만, 자료를 영구적으로 보관이 가능하다. (HDD, SSD)
3. 기억장치계층 간의 관계
블록(block): 두 계층 간에 전송되는 데이터의 최소 단위 (회색으로 칠해져 있는 곳)
히트(Hit): 중앙처리장치가 요구하는 데이터가 상위계층 블록에 존재하는 상태.
미스(Miss): 상위계층에서 찾을 수 없는 상태, 미스(Miss)인 경우에는 요구한 데이터를 포함한 블록을 찾기위해 하위계층에 접근한다.
히트율(hit ratio): 상위계층에서 찾을 수 있는 기억장치의 접근 비율, 기억장치계층의 성능을 평가하는데 사용
미스율(Miss ration): 상위계층에서 찾을 수 없는 기억장치의 접근 비율
히트시간(Hit time): 기억장치계층의 상위 기억장치에 접근하는 시간
미스 페널티(Miss penalty): 하위계층에서 대응되는 블록을 상위계층에 복사해 오는 시간 + 블록을 중앙처리장치에 전달하는 데 걸리는 시간
* 기억장치 성능 향상이 기억장치계층을 만들게 된 주요한 이유이기 때문에 히트와 미스의 처리속도가 매우 중요하다.
4. 기억장치의 기억방식
가. 정적 기억장치와 동적 기억장치
1) 정적 기억장치
가) 정보가 저장되면 전원이 유지되는 동안에는 그 데이터가 사라지지 않는다.
나) SRAM
2) 동적 기억장치
가)전원이 공급되는 동안에도 일정 주기로 충전해 주어야 데이터가 사라지지 않는다.
나) 하드웨어 회로가 포함되므로 구성이 복잡하다.
다) DRAM
나. 휘발성 기억장치와 비휘발성 기억장치
1) 휘발성 기억장치
가) 전원 공급이 끊기면 기억된 내용이 사라지는 장치
나) RAM
2) 비휘발성 기억장치
가) 전원 공급이 끊겨도 이전의 정보가 계속 유지되는 장치
나) 자기디스크, 자기테이프, ROM, 자기드럼
주기억장치
주기억장치는 컴퓨터 시스템에서 없어서는 안되는 필수적인 하드웨어 요소이지만, 입출력의 경제성을 생각해 볼때 몇가지 이슈들을 가지고 있다.
1. 중앙처리장치(CPU) 속도는 너무 빠르고, 보조기억장치 속도가 너무 느리기 때문에 주기억장치는 가운데에서 중재하는 역할을 수행한다. 중앙앙처리창지와 주기억장치 간의 속도 차이 개선은 컴퓨터 시스템의 전체적 성능 향상에 큰 영항을 미친다.
2. 주기억장치 대역폭이라는 속도의 한계로 주기억장치는 동작을 하는데, 중앙처리장치와 보조기억장치를 포함한 입출력장치가 공동으로 혹은 경쟁적으로 주기억장치를 이용하려 하기 때문에 제한된 주기억장치의 대역폭을 전부 중앙 처리장치가 명령어를 수행하는 데에만 제공할 수 없는 문제점이 발생한다.
이러한 문제점으로 인해 제한된 주기억장치와 중앙처리장치의 속도 차이를 개선하고, 주기억장치의 용량과 대역폭의 한계를 극복하기 위한 여러가지 방법들이 대두되게 되었다.
1. 복수모듈기억장치
2. 연관기억장치
복수모듈기억장치
등장배경
주기억장치의 대역폭은 명령어 수행속도에 제한적인 요소인데, 이러한 사실은 주기억장치를 이용하는 데 중앙처리장치와 입출력장치가 경쟁하게 되므로 주기억장치 버스에 병목 현상이 일어나기 때문이다.
기억장치모듈
기억장치를 접근하기 위해 필요한 MAR와 MBR을 묶은 단위
하나의 기억장치모듈로 구성된 주기억장치에서 3개의 단어를 읽으려면 적어도 3개의 기억장치 사이클이 필요하다. 따라서 주기억장치가 아무리 빨라져도 결국에는 기억장치 사이클이 작업시간을 지배하는 문제점이 생기게 된다.
복수모듈기억장치의 탄생
기억장치 모듈을 여러 개 가지고 있는 기억장치
1. 복수모듈기억장치의 구조
- 각 모듈은 독자적으로 그 모듈에 데이터를 저장하거나 읽을 수 있는 완전한 주기억장치이다.
- 기억장치를 구성하는 모듈 수만큼의 단어를 동시에 접근할 수 있다.
- 모듈 하나가 실행되는 동안 다른 모듈에서는 다른 일들을 실행하게 되는 구조이다.
2. 복수모듈기억장치의 수행과정
* 예를 들기 위해 3-모듈장치로 구성하겠습니다.
가. 주기억장치 주소버스를 통해 한 모듈에 주소를 보낸다. (A)
나. 다른 모듈에서는 미리 보낸 주소를 해독하여 기억장소에 접근한다. (M)
다. 또 다른 모듈에서는 읽어 낸 데이터를 주기억장치 데이터버스를 통하여 외부로 보낸다. (D)
* A+M+D는 주기억장치를 접근하는 데 필요한 각 수행 단계에 걸리는 시간이다. 유효 사이클은 이보다 훨씬 짧게 된다.
* 밑에 그림은 기억장치에 대한 접근 요구가 순서대로 요청될 때의 예이다. 하지만 접근 요청의 순서가 아니면 최대 속도를 내기가 힘들어진다.
버스경합: 1개의 버스를 공유하는 시스템에서 동시에 버스의 사용을 요구하는 경우 발생되는 문제점
기억장치충돌: 동시에 1개 이상의 모듈이 동일한 버스선을 사용하면 데이터들 간의 충돌이 발생되는 문제점
<해결 방법>
기억장치 인터리빙: 기억장치를 복수 모듈로 구성하고 각 모듈이 동시에 접근할 수 있도록 시분할 방식을 사용하는 방법
연관기억장치
기억장치에 기억되어 있는 데이터의 내용을 이용하여 기억장치에 접근이 가능한 장치
등장배경
어떤 데이터에 접근하려면 그 데이터가 저장되어 있는 단어의 주소를 알아야한다. 만약 기억장치가 단어의 주소를 알고 있다면 한 번의 접근으로 원하는 데이터를 얻을 수 있지만, 그렇지 않다면 많은 기억장치 사이클을 소모하게 되므로 매우 비효율적이다. 이러한 작업을 매우 효율적으로 수행할 수 있게 하는 기억장치가 연관기억장치이다.
연관기억장치의 탄생
- 기억장치에 저장된 데이터에 접근하기 위하여 주소를 사용하지 않고, 저장되어 있는 데이터의 내용을 참조하여 원하는 데이터에 접근한다.
지역성의 원리
1. 시간 지역성: 최근에 참조된 주소의 내용은 곧 다음에도 참조되는 특성을 말한다.
2. 공간 지역성: 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성을 말한다.
캐시 메모리
1. 캐시메모리
프로세서 내부에 있는 메모리이며, 주기억장치의 입출력 병목현상을 해소해주는 역할을 한다. 속도가 빠르고 가격이 비싸기 때문에 보통은 주기억장치와 짝을 이뤄 사용된다.
2. 캐시메모리 종류
L1: CPU 내부에 존재
L2: CPU와 주기억장치 사이에 존재
3. 캐시메모리의 진행과정
가. Case 1 캐시 적중률이 높은 경우 *(1),(2),(3)만을 포함
(1) CPU에서 필요한 데이터를 캐시메모리가 가지고 있는지 물어본다.
(2) 만약 캐시메모리가 CPU가 필요한 데이터를 가지고 있다면, cash bit와 알맞은 데이터를 반환한다.
(3) CPU가 필요한 데이터를 전달한다.
나. Case 2 캐시 적중률이 낮은 경우 *모든 번호 포함
(1) CPU에서 필요한 데이터를 캐시메모리가 가지고 있는지 물어본다.
(2) 만약 캐시메모리가 CPU가 필요한 데이터를 가지고 없다면, cash miss를 반환한다.
(3) 주기억장치(RAM)에게 데이터를 요청한다.
(4) 주기억장치에서 CPU가 필요한 데이터를 찾는다.
(5) 캐시 메모리로 지역성이 적용 된 데이터를 반환한다.
(6) 반환된 데이터를 캐시 메모리에 저장한다.
(7) CPU가 필요한 데이터를 전달한다.
* 캐시 메모리를 효율적으로 사용하기 위해서는 캐시 적중률을 높이는 것이 중요하다.
4. 캐시메모리의 사상 방식
캐시기억장치와 주기억장치 사이의 데이터 이동을 사상(Mapping)이라고 한다.
가. 직접사상
중앙처리장치가 기억장치를 참조할 때 중앙처리장치로부터 나온 주소를 Tag 필드와 Index 필드로 나누고, 원하는 데이터를 찾았을 때, 캐시기억장치에서 중앙처리장치 주소의 Index 필드와 같은 Index를 찾아 Tag까지 같다면 그 주소의 데이터를 가져가는 방식이다. 만약 같은 Index에 데이터가 없거나 Index는 같으나 Tag가 다르면 주기억장치에서 데이터를 찾아 가져오는 방식이다.
나. 연관사상
캐시기억장치에 데이터 블록을 저장할 때 데이터와 그 데이터의 주기억장치 주소도 함께 저장하는 방식이다. 만약 데이터가 필요할 때 중앙처리장치에서 나온 주소가 캐시기억장치 내에 주기억장치 주소와 일치하게 되면 함께 저장된 데이터를 가져오고, 그렇지 않다면 주기억장치에서 찾아 가져오게 된다.
다. 집합-연관사상
직접사상과 연관사상 방식을 조합하여 만든 방식이다. 이 방식은 캐시기억장치의 한 Index에 2개 이상의 서로 다른 데이터 블록을 저장시켜 하나의 세트를 만들고, 중앙처리장치 주소로 데이터를 찾을 때, 캐시기억장치에서 중앙처리장치 주소의 Index와 같은 Index를 찾은 후, 그 Index에 저장되어 있는 서로 다른 Tag를 갖는 데이터 중에서 주기억장치 주소가 일치한 데이터를 가져오는 방식이다.
5. 교체 알고리즘
캐시가 꽉 차있는 상태에서 중앙처리장치가 캐시에 접근하여 원하는 데이터 블록을 찾을 수 없을때 캐시의 내용 중 일부를 삭제하고 새로운 데이터 블록을 주기억장치에서 가져와야하는데, 이때 사용되는 알고리즘을 말한다.
FIFO(First In First Out): 먼저 들어온 내용을 먼저 제거하는 방식
LRU(Least Recently Used): 최근에 사용되지 않은 내용을 먼저 제거하는 방식
LFU(Least Frequently Used): 사용이 저조한 내용을 먼저 제거하는 방식
보조기억장치
가. CPU에 직접적으로 접근이 불가능 하기 때문에, 주기억장치(RAM)을 거쳐 간접적으로 접근이 가능하다.
나. 용량이 크고, 가격이 저렴하며, 비휘발성메모리에 속한다.
다. 프로그램 or 데이터가 주기억장치가 수용할 수 없을 정도로 큰 경우, 보조기억장치 메모리를 주기억장치로 반환하여 가상메모리로 사용을 한다.
<참고자료>
https://www.youtube.com/watch?v=EdTtGv9w2sA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
<Computer structures> chapter 14, 기억장치 end>
'CS(Computer science) > 컴퓨터 구조&운영체제' 카테고리의 다른 글
입출력시스템 (0) | 2020.01.22 |
---|---|
가상기억장치 (0) | 2020.01.17 |
폰 노이만 구조 vs 하버드 구조 (0) | 2020.01.11 |
인터럽트 (0) | 2020.01.06 |
Context Switch (0) | 2020.01.06 |