오늘은 프로그램과 데이터를 저장하기 위한 장치인 기억장치에 대해 알아보겠습니다.
1. 기억장치의 분류와 특성
1) 액세스(access)의 종류와 그에 따른 기억장치 분류
CPU가 어떤 정보를 기억장치에 쓰거나 기억장치로부터 읽는 동작을 액세스(access)한다고 합니다. 기억장치는 제조 공정과 재료 및 조직에 따라 액세스 하는 방법도 달라지는데 그에따른 유형과 분류에 대해 알아보겠습니다.
액세스(access): 기억장치에 대한 읽기 및 쓰기 동작
1.1) 순차적 액세스(sequential access)
저장되는 모든 정보는 레코드라고 불리는 정보 단위로 분리되어 저장되고, 각 레코드는 고유의 주소를 가집니다.
순차적 액세스는 저장된 정보 즉 레코드를 처음부터 순서대로 액세스 합니다. 임의의 위치에 저장된 특정 정보를 읽기 위해서는 그 위치에 도달할때까지 앞부분을 모두 통과해야 합니다. 따라서 정보가 저장된 위치에 따라 액세스 시간이 달라집니다.
이 방식을 사용하는 저장장치로는 자기테이프(magnetic tape)가 있습니다.
순차적액세스(sequential access): 기억장치에 저장된 정보를 처음부터 순서대로 액세스 하는 방식
1.2) 직접 액세스(direct access)
직접 액세스에서는 읽기/쓰기 장치가 각 레코드의 근처로 직접 이동한 후에 순차적 검색(sequential searching)을 통해 최종 위치에 도달합니다. 이 방식에서도 액세스 시간은 정보의 저장 위치에 따라 가변적입니다.
저장장치로는 자기디스크(magnetic disk), CD-ROM, DVD 등이 있습니다.
직접 액세스(direct access): 읽기/쓰기 장치를 정보가 위치한 근처로 직접 이동시킨 다음에, 순차적 검색으로 최종 위치에 도달하는 방식
1.3) 임의 액세스(random access)
기억장치 내의 모든 저장 장소들은 고유의 주소를 가지고 있으며 별도의 읽기/쓰기 회로를 가지고 있습니다. 따라서 어떤 위치든 임의로 선택될 수 있고, 직접 주소 지정 되고, 액세스 될 수 있습니다. 결과적으로 액세스에 걸리는 시간이 항상 일정하다는 특징이 있습니다.
저장장치로는 반도체 기억장치들이 있습니다.
임의 액세스(random access): 기억 장소들이 임의로 선택될 수 있으며, 기억장치 내의 어떤 위치든 액세스에 걸리는 시간이 동일
1.4) 연관 액세스(associative access)
임의 액세스의 변형으로, 각 기억장소에는 키(key)값에 해당하는 비트들이 데이터와 함께 저장되어 있습니다.
액세스 요구에는 비트 패턴이 포함되어 있는데, 그 비트들과 각 기억장소의 키 비트들을 비교하여, 일치하는 기억장소의 데이터가 읽혀져 출력 됩니다. 키값의 비교에 걸리는 시간은 일정합니다. 하지만 비트패턴과 키값들을 비교하는데 시간이 많이 걸리기 때문에 모든 기억장소의 키값들을 동시에 비교할 수 있는 하드웨어를 포함하고있습니다. 가격에 매우높아 특수한 용도로 사용됩니다.
연관 액세스(associative access): 각 기억장소에 포함된 키(key)값의 검색을 통하여 액세스 할 위치를 찾아내는 방식
2) 기억장치의 특성과 용어
기억장치 시스템 설계에 있어서 용량(capacity)과 액세스 속도(access speed)가 중요합니다. 기억장치에서 용량을 나타내는 단위는 바이트(byte) 혹은 단어(word) 입니다. 단어의 길이는 CPU가 실행할 명령어의 길이 혹은 내부 연산에서 한 번에 처리할 수 있는 데이터 비트의 수와 같습니다.
CPU가 한 번의 기억장치 액세스에 의해 읽거나 슬 수 있는 비트 수를 전송단위라고 합니다.
내부 기억장치에 있어서 전송 단위는 기억장치 모듈로 들어가고 나오는 데이터의 수와 같습니다.
외부 기억장치에서는 단어보다 훨씬 더 큰 단위로 데이터가 전송되기도 하는데 그 단위를 블록(block)이라고 합니다. 한 블록을 전송하기 위해서는 여러 번의 전송 동작들이 연속적으로 수행되어야 합니다.
주소지정단위는 하나의 주소에 의해 엑세스되는 비트들의 그룹입니다.
각 기억장치에는 고유의 주소가 할당되는데, 바이트에 대하여 주소를 지정할 수도 있고, 각 단어별로 지정할 수도 있습니다.
CPU가 발생하는 주소비트의 수 A와 주소 지정될 수 있는 기억장소들의 수 N은 $2^{A} = N$의 관계를 가집니다.
3) 액세스 속도와 관련된 파라미터
3.1) 액세스 시간(access time)
주소와 읽기/쓰기 신호가 기억장치에 도착하는 순간부터 데이터가 저장되거나 읽혀지는 동작이 완료되는 순간까지의 시간입니다.
기억장치마다 시간이 일정한 겨우도 있고 달라지는 경우도 있습니다.
3.2) 기억장치 사이클 시간(memory cycle time)
액세스 시간과 다음 액세스를 시작하기 위해 필요한 동작에 걸리는 추가시간을 합한 시간입니다.
여기서 추가적인 시간이란 읽기 동작 후에 정보가 소멸되는 저장장치인 경우에 그것을 복원시키는데 걸리는 시간입니다.
과거의 자기 코어나 최근에 개발되고 있는 FRAM은 일정 시간이 소요되지만 반도체 기억장치나 최근의 저장장치들은 내용이 지워지지 않아서 액세스 시간과 사이클 시간이 같습니다.
3.3) 데이터 전송률
기억장치로부터 초당 읽혀지거나 쓰여질 수 있는 비트 수를 말합니다.
이것은 (1/액세스 시간) X (한 번에 읽혀지는 데이터 바이트 수) 로 구할 수 있습니다.
예시로 어떤 기억장치의 액세스 시간이 100ns이고, 한번에 32비트씩 읽혀진다면, 데이터의 전송률은 다음과 같습니다.
$$\left (\frac{1}{100\times 10^{-9}} \right )\times \left ( \frac{32}{8} \right ) = 40[MBytes/sec]$$
2. 계층적 기억장치 시스템
CPU가 아무리 빠르다고 해도 기억장치가 느리다면 액세스 과정에서 시간이 소요되어 성능이 저하됩니다. 이를 해결하기 위해 여러 유형의 기억장치들을 계층적으로 구성하여 설치함으로써, 평균 기억장치 액세스 속도를 높이면서도 가격대를 적절히 유지할 수 있습니다.
계층적 기억장치시스템: 속도, 가격 및 크기가 다양한 기억장치들을 계층적으로 설치함으로써 성능대가격비를 높이는 시스템 구성방식
1) 계층적 기억장치 시스템의 필요성과 효과
기억장치의 특성들 간에는 다음과 같은 관계들이 성립합니다.
- 액세스 속도가 높아질수록, 비트당 가격도 높아짐
- 용량이 커질수록, 비트당 가격은 낮아짐
- 용량이 커질수록, 액세스 속도는 낮아짐
성능이 중요하다고 액세스 속도가 높은 기억장치를 사용하면 용량이 부족하고 반대의 경우도 마찬가지일 것입니다.
둘중 하나를 포기하거나 특정 기술에 의존하지말고 계층적 기억장치 시스템을 구성하면 해결할 수 있습니다.
다음 그림으로 예시를 들어보겠습니다.
- 첫 번째 계층의 기억장치 $M_{L1}$은 액세스 시간이 10ns
- 두 번째 계층의 기억장치 $M_{L2}$은 용량이 더 크지만 액세스 시간이 100ns
위와 같이 가정했을때 가져오고 싶은 데이터 Target이 $M_{L2}$에 있다고 가정해봅시다.
단순히 가져오기만 하면 100ns가 걸리겠지만 가져오는 과정에서 $M_{L1}$에 Target을 저장합니다.
그러면 첫번째로 Target을 가져오는건 100ns가 걸리겠지만,
두번째로 Target을 가져올때는 $M_{L1}$에 있는 데이터를 가져오기 때문에 10ns가 걸리게 됩니다.
프로그램 수행이 진행되는 동안에 CPU가 명령어와 데이터를 읽기 위해 기억장치를 액세스하는 위치를 찾아보면 특정 영역에 집중되는 경향이 있습니다. 이는 프로그램이 반복 루프와 서브 루틴들을 포함하고 있기 때문입니다. 그럼 한 프로그램을 실행할때 $M_{L1}$에 자주 사용되는 데이터를 저장해놓고 사용하면 성능은 올라가게 될것입니다. 이러한 원리를 지역성의 원리라고 합니다.
지역성의 원리(principle of locality): CPU가 기억장치의 한정된 몇몇 영역들을 집중적으로 액세스하면서 작업을 수행한다는 원리
이와같이 기억장치를 계층적으로 사용한다면, 속도와 용량 및 가격 면에서 더 개선된 기억장치시스템을 구성할 수 있게 됩니다.
2) 기억장치 계층
다음 그림은 기억장치 계층을 나타냅니다.
계층이 상승할 수록 비트당 가격이 높아지고, 용량이 감소하며, 액세스 시간은 짧아지고, CPU에 의한 액세스 빈도는 높아집니다.
CPU 레지스터와 주 기억장치의 액세스 시간은 적게는 수십, 많게는 수백배의 차이가 납니다.
이러한 문제를 해결하기 위하여, 대부분의 컴퓨터 시스템에서는 CPU와 주기억장치 사이에 속도가 빠르지만 용량은 작은 캐시메모리(cache memory)를 설치합니다. CPU와 주기억장치 간의 속도 차이를 보완해주기 위하여 데이터를 일시 저장해주는 중간 버퍼 기능을 수행합니다.
지금까지 살펴본 계층적 기억장치 시스템을 구성하면 다음과 같은 특징을 갖게됩니다.
- 하위 계층으로 내려갈 수록
- 용량이 더 커짐
- 비트당 가격이 떨어짐
- 지역성의 원리로 인하여 액세스 빈도는 낮아짐
결과적으로 더 적은 비용으로, 더 빠르고 더 큰 용량의 기억장치 시스템을 구성할 수 있게 됩니다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] 제어유니트(Control Unit)와 마이크로프로그램 (0) | 2025.04.27 |
---|---|
[컴퓨터 구조] 부동소수점 수의 표현과 산술연산 (0) | 2025.04.22 |
[컴퓨터 구조] 정수의 산술 연산 (2) | 2025.04.16 |
[컴퓨터 구조] 시프트 연산 (0) | 2025.04.15 |
[컴퓨터 구조] 논리연산 (0) | 2025.04.10 |