기억장치, 즉 메모리는 접근 속도, 기억 용량의 크기, 용도에 따라서 레지스터, 캐시 메모리, 주기억장치, 보조기억장치로 구분된다. 레지스터는 CPU 내부에 존재하며, 중앙처리장치의 처리 속도와 비슷한 접근 시간을 가진다. 그리고 캐시 메모리는 중앙처리장치가 주기억장치에 접근 시 속도 차이를 줄이기 위해 사용된다. 또한 실행 중인 프로그램의 명령어와 데이터를 저장하는데 기억 용량은 적지만 접근 시간이 주기억장치보다 5 ~ 10배 정도 빠르다.
주기억장치는 중앙처리장치가 직접 데이터를 읽고 쓸 수 있는 장치로, 레지스터나 캐시 메모리보다 용량이 크다. 보조기억장치는 주기억장치에 비해 접근 시간은 느리지만 기억 용량이 크다. 이 속도 차이는 약 1000배에 달한다.
기억장치의 계층 구조를 살펴보면, 위로 올라갈수록 데이터를 읽고 쓰는 접근 속도는 빠르지만, 기억 용량이 감소하고 비트 당 저장 비용이 상승한다. 따라서 기억장치의 구성 비용과 성능을 감안하여 중앙처리장치가 사용하는 데이터를 상위 계층에 저장해야 기억장치를 효율적으로 사용할 수 있다.
중앙처리장치에서 프로그램을 실행하려면 우선 보조기억장치에 있는 프로그램을 실행하여 해당 프로그램의 코드를 주기억장치로 옮겨와야 한다. 이는 중앙처리장치가 보조기억장치에 직접적으로 접근이 불가능하기 때문이다.
또한 주기억장치에 있는 데이터들을 중앙처리장치가 가져올 때는 우선적으로 캐시 메모리에 저장이 된다. 그렇게 하면 중앙처리장치가 필요로 하는 데이터가 캐시 메모리에서 발견이 되고 주기억장치에서 가져오는 것보다 훨씬 빠르게 접근이 가능하게 된다.
주기억장치는 컴퓨터가 동작하는 동안 프로그램과 데이터, 연산의 중간 결과 등을 저장한다. 중앙처리장치와 직접 데이터를 주고 받을 수 있도록 내부 버스로 연결되어 있으며 현재는 반도체 기억장치를 사용하는데, 램(RAM : Random Access Memory)와 ROM(Read Only Memory)이 있다.
RAM은 전원 공급이 중단되면 데이터가 사라지는 휘발성 메모리로 정보의 기록과 해동을 할 수 있으며, 정보의 위치에 관계 없이 일정한 시간 내에 읽거나 쓸 수 있는 임의 접근 기억장치이다. 제조 기술에 따라 DRAM(Dynamic)과 SRAM(Static)으로 나뉜다.
ROM은 저장된 프로그램과 데이터를 읽기만 하는 기억장치로 전원이 공급되지 않아도 내부 데이터를 영구적으로 보존할 수 있는 비휘발성 메모리다. 때문에 시스템 동작 중 변하지 않는 프로그램이나 데이터를 저장하는 데 사용한다. 또한 부팅 시 시스템을 점검하고 주변 장치를 초기화하는 역할을 하며 주로 BIOS(Basic Input Output System)에 사용된다.
캐시 메모리(Cache Memory)는 주기억장치보다 속도가 빠르기 때문에, 주기억장치로부터 프로그램이나 데이터를 가져오려면 많은 시간이 소요된다. 이때 캐시 메모리가 중앙처리장치에서 주기억장치로의 긴 접근 시간으로 인한 성능 저하를 방지한다. 때문에 캐시 메모리는 중앙처리장치와 주기억장치 사이에 위치한다.
캐시 메모리는 주기억장치의 일부만을 저장한다. 중앙처리장치는 주기억장치로부터 프로그램이나 데이터를 가져올 때 우선적으로 원하는 정보가 있는지 캐시 메모리를 검사하고 있다면 바로 읽어오지만 없으면 주기억장치에서 캐시 메모리로 저장을 한 다음에 읽어온다.
이 때, 원하는 정보가 있다면 이를 캐시 적중(Cache Hit)이라고 하고, 존재하지 않는다면 캐시 미스(Cache Miss)라고 한다. 원하는 정보가 캐시 메모리에 존재할 확률을 나타내는 캐시 적중률이 있는데 이 캐시 적중률이 높을 수록 성능이 우수한 것으로 정의한다.
보조기억장치는 주기억장치와 연결되어 주기억장치에 담지 못하는 프로그램과 데이터를 저장한다. 특정 프로그램을 실행하고 싶을 경우 이 보조기억장치에서 주기억장치로 해당 프로그램의 코드와 데이터를 옮겨와 저장하여 중앙처리장치가 읽어가는 형식의 구조를 가진다.
보조기억장치는 저장된 정보의 접근 방식에 따라서 순차 접근 기억장치(SASD : Sequential Access Storage Device)와 직접 접근 기억장치(DASD : Direct Access Storage Device)로 구분한다.
'프로그래밍 > 컴퓨터' 카테고리의 다른 글
[CS] GPGPU (0) | 2023.07.11 |
---|---|
[CS] SIMD(Single Instruction Multiple Data) (0) | 2023.06.19 |
[CS] 메모리 단편화 & 메모리 풀 (0) | 2023.05.04 |
[CS] 캐시 메모리 (0) | 2023.04.20 |
[CS] CPU 와 마이크로 프로세서 (0) | 2023.04.19 |
댓글