본문 바로가기
Computer Science/Computer Architecture

[CS] 내부 기억장치(Internal Memory)(1)

by 기몬식 2023. 8. 16.

기억장치

기억장치의 분류와 특성

CPU가 어떤 정보를 기억장치에 쓰거나 기억장치로부터 읽는 동작을 액세스(access)한다고 말하는데 액세스 유형은 일반적으로 다음과 같이 분류됩니다.

  • 순차적 액세스(sequential access): 기억장치에 젖아된 정보들을 처음부터 순서대로 액세스합니다. 자기 테이프(magnetic tape) 저장장치가 이방식을 이용하는데 저장되는 모든 정보는 테이프의 처음 위치에서 시작하여 연속적으로 위치하게 됩니다. 그 내용들은 내부적으로 레코드(record)라고 불리는 정보 단위로 분리되어 저장되고 각 레코드는 고유의 주소를 가집니다. 테이프 내 임의의 위치에 저장된 특정 정보를 읽기 위해서는 그위치에 도달할때까지 앞부분의 테이프를 모두 통과해야합니다. 따라서 정보가 저장된 위치에 따라 액세스 시간이 달라집니다.
  • 직접 액세스(direct access): 읽기/쓰기 장치가 각 레코드(혹은 블록)의 근처로 직접 이동한 후에 순차적 검색(sequential searching)을 통하여 최종 위치에 도달합니다. 이 방식에서도 액세스 시간은 정보의 저장 위치에 따라 가변적입니다.
  • 임의 액세스(random access): 기억장치 내의 모든 저장 장소들은 고유의 주소를 가지고 있으며 별도의 읽기/쓰기 회로를 가지고 있습니다. 따라서 어떤 위치든 임의로 선택될 수 있고 직접 주소지정 되고 액세스 될 수 있습니다. 어떤 위치를 액세스하든 그에 걸리는 시간이 항상 일정합니다.
  • 연관 액세스(associative access): 각 기억 장소에는 키(key)값에 해당하는 비트들이 데이터와 함께 저장되어 있습니다. 주소 대신에 원하는 비트 패턴이 포함되어 있는데 그 비트들과 각 기억 장소의 키 비트들을 비교하여 일치하는 기억장소의 데이터가 읽혀져 출력됩니다. 키값의 비교에 걸리는 시간은 기억 장소의 위치에 관계없이 일정합니다.

CPU가 한 번의 기억장치 액세스에 의해 읽거나 쓸 수 있는 비트 수를 전송 단위(unit of transfer)라 합니다.
외부 기억장치에서는 데이터가 단어보다 훨씬 더 큰 단위로 전송되기도하는데 그 단위를 블록(block)이라고 부릅니다.
그러나 외부 기억장치에 접속되는 데이터 버스의 폭(width)은 8비트, 16비트 혹은 32비트이기 떄문에 한 블록을 전송하기 위해서는 여러 번의 전송 동작들이 연속적으로 수행되어야 합니다.

기억장치는 데이터를 저장하는 성질에 따라 두 가지 유형으로 나눌 수 있습니다.
휘발성 기억장치(volatile moemory)는 저장된 정보가 시간이 지남에 따라 점차 사라지거나 전력 공금이 중단되면 소멸됩니다.
비휘발성 기억장치(nonvolatile moemory)는 일단 저장된 정보는 필요에 의해 변경될 때까지는 그대로 유지되며 정보 유지를 위하여 지속적으로 전력을 공급할 필요도 없습니다.

계층적 기억장치시스템

최근 기억장치 제조 기술의 발전으로 인하여 반도체 기억장치의 속도가 계속 높아지고는 있지만 CPU의 속도는 더욱 급속히 향샹되고 있기 때문에 그들간의 속도 격차는 줄어들지 않고 있습니다.
따라서 대부분의 컴퓨터시스템에서는 여러 유형의 기억장치들을 계층적으로 구성하여 설치함으로써 평균 기억장치 애겟스 속도를 높이면서 가격대성능비도 적절히 유지되도록 하고 있습니다.
그와 같은 계층적 기억장치시스템(hierarchical memory system)을 구성하는 방법과 그 효과는 다음과 같습니다.

필요성 및 효과

일반적으로 디스크의 속도는 주기억장치로 사용하는 반도체 기억장치의 속도에 비하여 대략 10만 배 정도 느립니다.
따라서 그때마다 CPu는 오랜 시간을 기다려야합니다.
이러한 CPU 대기 시간은 주기억장치의 용량을 증가시킬수록 줄어들게 됩니다.
즉 주기억장치 용량이 커질수록 더 많은 프로그램과 데이터들을 CPU 가까이 위치시킬 수 있어서 평균 액세스 시간이 짧아집니다.
하지만 속도가 빠른 기억장치일수록 가격이 더 높아지기 때문에 용량을 무한정 증가시킬 수 만은 없습니다.
따라서 기억장치의 설계에서 가격고 ㅏ용량 및 속도 간에는 적절한 조정(tradeoff)이 필요합니다.

기억장치 계층

CPU가 필요로 하는 데이터가 레지스터에 없는 경우에 주기억장치로부터 읽어오기 위하여 상당히 긴 시간을 기다려야합니다.
그러한 문제를 해결하기 위하여 CPU와 주기억장치 사이에 속도가 빠르지만 용량은 작은 캐시 메모리(cache memory)를 설치합니다.
CPU와 주기억장치 간의 속도 차이를 보완해주기 위하여 데이터를 일시 저장해주는 중간 버퍼 기능을 수행합니다.

계층적 기억장치시스템을 구성하면 다음과 같은 특징을 가지게 됩니다.
하위 계층으로 내려갈수록 용량이 더 커지고 비트당 가격은 떨어지는 반면에 지역성의 원리로 인하여 액세스 빈도가 더 낮아집니다.
즉 하위 계층의 기억장치들은 속도가 느리지만 액세스 빈도는 낮으며 더 많이 액세스되는 상위 계층의 기억장치들은 속도가 빠르기 때문에 전체적으로 평균 기억장치 액세스 시간은 더 짧아지게 됩니다.
결과적으로 계층적 방식을 이용함으로써 더 적은 비용으로 더 빠르고 더 큰 용량의 기억장치시스템을 구성할 수 있게 되는 것입니다.

해당 글은 컴퓨터구조론(김종현 저)을 읽고 공부한 내용을 정리한 글입니다.

오탈자 및 오류 내용을 댓글 또는 메일로 알려주시면, 검토 후 조치하겠습니다.