[컴퓨터 구조 - 하드웨어 - 메모리]
참고한 자료:
Computer Organization and Desgin 5th edition
,
Operating System: Concepts 10th edition BY A.Silberschatz
컴퓨터 구조에 있어서, Memory
란 데이터를 저장하는 구성요소이다.
cf. 선행할 개념: 지역성
Locality
메모리 구조에 대해서 이야기를 할 때에 빠지지 않는 부분으로,
principle of Locality
가 적용되기 때문에 지역성에 관하여 다루는 것이 중요하다.
1) Temporal Locality
시간적 지역성은 어떤 항목이 참조되었을 때, 해당 항목은 곧바로 다시 참조될 가능성이 높다는 원칙이다.
2) Spatial Locality
공간적 지역성은 어떤 항목이 참조되었을 때, 해당 항목의 근처에 가까운 항목들이 곧바로 참조될 가능성이 높다는 원칙이다.
이러한 지역성의 원칙은, 컴퓨터의 메모리에 대해 계층구조를 구현함으로 이용할 수 있다.
메모리는 속도와 용량, 비용에 따라 계층적으로 구조가 분화된다. 이러한 계층 구조의 목적은 유저에게
가장 빠른 메모리의 접근 속도를 제공하면서,
가장 싼 기술로 최대한 큰 메모리 용량을 제공하는 것
이라고 할 수 있다.
이러한 계층구조를 만든 이유는 물론 성능 향상이기 때문에, hit-miss ratio
로서 처리 속도가 매우 중요하다.
hit time
이란 메모리 계층구조에서 상위 계층에 접근하는 시간이다.
메모리 계층구조는 최근에 접근한 데이터들을 프로세서 가까이 적재함으로 temporal locality
를,
메모리의 상위 계층으로 필요한 데이터 뿐만 아니라 그와 인접한 데이터 블록들을 옮김으로 spatial locality
를 이용한다.
메모리 계층구조에서 주요 저장장치들은 다음과 같다.
CPU 내부에 있는 가장 빠른 메모리.
용량이 작고, CPU가 직접 접근하여 연산에 사용.
명령어나 데이터 처리를 위한 임시 저장소.
CPU와 메인 메모리(RAM) 사이에서 데이터를 임시 저장.
CPU의 연산 속도와 메모리의 속도 차이를 줄이기 위해 사용.
L1, L2, L3 등 계층적으로 구성되며, L1이 가장 빠르고 용량이 작음.
현재 실행 중인 프로그램과 데이터를 저장.
DRAM(Dynamic RAM)을 주로 사용하며, 휘발성(전원이 꺼지면 데이터 소실).
속도는 캐시보다 느리지만, 용량은 큼.
SSD, HDD와 같은 대용량 저장 장치.
데이터를 영구적으로 저장하며, 비휘발성.
메인 메모리보다 느리지만, 저장 용량이 훨씬 큼.
RAM은 대표적인 컴퓨터의 주요메모리로 실행중인 프로그램과 데이터를 임시 저장하는 저장장치이다.
명명에서 알 수 있듯이, 물리적인 저장 위치와 상관없이 어느 곳에서든 원하는 위치의 데이터에 대한 접근과 처리가 가능하여 Random Access
를 통해 임의의 메모리 주소에 동일한 속도로 접근이 가능하다.
RAM은 다음과 같은 주요 특징이 존재한다.
전원이 꺼지면 RAM에 저장된 데이터가 완전히 사라지는 휘발성을 가지기 때문에, long-term 데이터 저장에 사용하지 않는다.
SSD나 하드디스크와 같은 Secondary Storage와 비교하여 상위의 메모리 계층구조에 위치하여 더 빠른 처리 속도를 가진다.
cf.
- DRAM (Dynamic RAM)
=>
Main Memory
로 주기억장치 사용- SRAM (Static RAM)
=>
Cache
로 임시 메모리 사용
ROM은 이름에서 알 수 있다시피 Read-Only
이기 때문에, 저장 시 수정이 불가능한 읽기 전용 으로 데이터를 저장하는 저장장치이다. 따라서 보통 컴퓨터가 부팅될 때 필요한 기본적인 입/출력 시스템, 펌웨어, 하드웨어 초기화 코드등을 저장하는 데에 사용된다.
휘발성을 가진 RAM과 차별적으로, ROM은 데이터를 영구적으로 저장한다.
cf.
- EPROM (Erasable Programmable ROM)과 EEPROM (Electrically Erasable Programmable ROM)
=> 자외선을 쬠으로 데이터를 지우고 다시 기록할 수 있는 EPROM은 번거롭기 때문에,
전기 신호를 통해 삭제 가능한 EEPROM을 사용한다.- Flash Memory
베이직한 하드웨어에서, 각각의 프로세스가 독립된 메모리 공간을 가지도록 보장해야 한다. 따라서 특정 프로세스만 접근 가능하도록 legal
한 메모리 주소 영역을 설정하여 접근할 수 있도록 해야 한다.
2개의 register, Base
와 Limit
을 사용한다.
Base
Base 레지스터는 기준
으로서 가장 작은 legal한 물리 메모리 주소의 값을 저장한다.
Limit
Limit 레지스터는 상한
으로서 주어진 영역의 크기를 저장한다.
ex. Given base reg 300040, limit reg 120900
프로그램은 300040 ~ 420940 (= 30040 + 120900) 범위의 모든 주소 접근 가능
!caution: 시간 관계 상 주소 할당 분류에서의 compile time, load time, execution time 바인딩의 설명은 생략하겠음.
주소 할당에 있어서 사용되는 메모리 주소에 대해,
물리 주소 공간은 하드웨어 메모리가 취급하는 (MAR, memory address register 에 주어지는 주소) 주소를 가리킨다.
논리 주소 공간은 CPU가 생성하는 주소를 말하며, 일반적으로 virtual address
와 같은 의미로 사용한다.
프로그램 실행 중에 CPU가 생성한 logical address
에 대해 physical address
로 변환해줘야 하는데, 이러한 매핑 작업이 하드웨어 장치인 MMU
에 의해 실행된다.
예시 시나리오로 위 이미지를 다루자면,
CPU가 생성한 논리 주소 346에 대해, MMU내의 relocation reg의 값이 더해지면서 실제 메인 메모리의 14346 번지를 접근하게 된다.
to be continued..