CS/컴퓨터구조

[컴퓨터구조] 메모리

nowkoes 2023. 6. 22. 00:46

<본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다>


메모리

개요

 보조기억장치는 전원을 꺼도 데이터를 보존하는 비휘발성 저장 장치로, 이곳에는 데이터나 프로그램을 영구적으로 저장한다. 그러나 CPU와 보조기억장치 간에는 큰 데이터 전송 속도 차이가 있고, 두 장치 사이에 운영 체제가 중재 역할을 하므로, CPU는 보조기억장치에 직접 접근할 수 없다. 이 문제를 해결하기 위해, 실행될 프로그램이나 데이터는 보조기억장치에서 먼저 주 메모리인 RAM으로 복사된다. RAM은 휘발성 메모리로, 전원이 꺼지면 그 내용이 사라지지만, CPU가 빠르게 접근하여 데이터를 읽고 쓸 수 있게 한다.

 

 따라서 RAM의 용량은 시스템 성능에 큰 영향을 미친다. RAM의 용량이 클수록 보조기억장치에서 더 많은 데이터를 미리 로드하여 저장할 수 있게 되는데, 이는 여러 프로그램을 동시에 실행하거나 대용량 데이터를 처리하는 데 매우 유리하다. 이렇게 함으로써 시스템은 보조기억장치와 CPU 간의 속도 차이를 극복하고, 전반적인 성능을 향상할 수 있다. 하지만 용량이 필요 이상으로 커졌을 땐 속도가 그에 비례하여 증가하진 않는다. 컴퓨터가 실행하는 프로그램들과 작업들은 모두 특정 양의 메모리를 필요로 하는데, 필요한 것보다 훨씬 더 많은 RAM이 있더라도, 이는 사용되지 않을 가능성이 있기 때문이다.


종류

 RAM의 종류에는 크게 DRAM, SRAM, SDRAM, DDR SDRAM이 있다.

 

DRAM

 DRAM(Dynamic RAM)정보를 저장하기 위해 캐패시터를 사용하는 메모리다. 캐패시터는 충전과 방전을 통해 0과 1을 나타내고, 일정 시간이 지나면 방전되어 데이터가 사라져 일정 간격으로 데이터를 재활성화하는 리프레시가 필요하다는 게 특징이다. 상대적으로 속도는 느리지만, 이런 단점을 상쇄하는 게 소비 전력이 낮고, 비용이 저렴하며, 집적도가 높다는 장점이 있다. 그래서 DRAM은 주로 컴퓨터의 주 메모리로 쓰인다.

 

SRAM

 SRAM(Static RAM)플립플롭 회로를 사용해 정보를 저장하는 메모리다. DRAM과는 달리 여러 개의 트랜지스터를 사용해서, 리프레시가 필요 없고, 속도도 더 빠르다는 장점이 있다. 그런데 이런 장점에도 불구하고 소비 전력이 많이 필요하고, 비싸고, 집적도가 낮아서 주 메모리로 쓰기는 힘들다. 그래서 대신에 속도가 중요한 캐시 메모리 등에서 주로 쓰인다.

 

  DRAM SRAM
리프레시 O X
속도 느림 빠름
가격 저렴 비쌈
집적도 높음 낮음
소비 전력 적음 높음
사용 용도 주기억장치 캐시 메모리

 

SDRAM

 SDRAM(Synchronois Dynamic RAM)시스템 버스의 클럭 속도에 동기화되어 동작하는 DRAM이다. DRAM에 비해서 클럭마다 CPU와 정보를 주고받을 수 있어서 메모리와 CPU 사이의 속도 차이를 줄일 수 있다. 그래서 빠른 데이터 처리 속도와 큰 용량을 제공할 수 있다는 장점이 있지만, DRAM과 마찬가지로 리프레시가 필요하다는 단점도 있다.

 

DDR SDRAM

 DDR SDRAM(Double Date Rate SDRAM)은 클럭 신호의 상승 간격과 하강 간격 모두에서 데이터를 전송함으로써 전송 효율을 높인 SDRAM이다. 즉, 하나의 클럭 사이클에 두 번의 데이터 전송을 허용해서 효율성을 높이고 데이터 전송 속도를 크게 향상한다는 것이다. 하지만 이것도 DRAM과 마찬가지로 리프레시가 필요하다는 단점이 있다.

 

출처: 구글

 

 현재 우리가 메인 메모리로 자주 사용하는 유형인 DDR SDRAM은 대역폭의 너비에 따라 뒤에 숫자가 붙는다. 가령, DDR2 SDRAM은 대역폭이 두 배 넓은 SDRAM이므로, SDR SDRAM보다 대역폭이 네 배 넓다. DDR4 SDRAM은 대역폭이 네 배 넓은 SDRAM이므로, SDR SDRAM보다 대역폭이 열여섯 배 넓다.


물리 주소와 논리 주소

 컴퓨터 시스템은 메모리를 관리하고 프로그램들이 메모리를 효과적으로 사용할 수 있게 하는 여러 가지 방법을 갖고 있다. 이 중에 하나가 바로 물리 주소와 논리 주소를 사용하는 것이다. 이 두 주소체계는 메모리 관리의 핵심적인 부분을 차지하며, 운영체제와 하드웨어의 상호작용에 있어 중요한 역할을 한다.

 

 물리 주소메모리 하드웨어에서의 실제적인 위치를 가리키는 값이다. 이 주소는 실제로 메모리 모듈에 있는 특정 셀을 가리키며, 이 셀에는 프로그램의 코드나 데이터가 저장될 수 있다. 이는 각 프로그램이 메모리의 어느 부분을 사용하고 있는지, 어떤 부분이 비어 있는지 등을 정확하게 알려주는 중요한 정보로 활용된다. 또한, 여러 프로그램이 메모리를 공유하는 멀티태스킹 환경에서는 프로그램 간의 메모리 충돌을 방지하기 위해 물리 주소를 통해 메모리를 분리하고 관리하는 역할도 한다.

 

 논리 주소CPU가 프로그램에게 제공하는 주소다. 프로그램이 실행되면 운영체제는 프로그램에게 독립적인 메모리 공간을 제공하는데, 이 공간은 0번지부터 시작하는 논리 주소로 구성된다. 프로그램은 이 논리 주소를 통해 메모리에 접근하며, 이런 방식으로 각 프로그램은 자신만의 독립된 메모리 공간을 가질 수 있게 된다. 논리 주소를 사용함으로써 동일한 논리 주소를 여러 프로그램이 공유하면서도 각자의 메모리 공간을 유지할 수 있다. 

 

 하지만 CPU가 이해하는 주소가 논리 주소라고는 해도, CPU가 메모리와 상호작용하려면 논리 주소와 물리 주소 간의 변환이 필요하다. 즉, 논리 주소가 실제 메모리에 접근할 때 물리 주소로 변환되어야 한다. 이러한 과정은 CPU와 주소 버스 사이에 위치한 메모리 관리 장치(Memory Management Unit, MMU)에 의해 수행된다. MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다. 예를 들어 현재 베이스 레지스터에 1500이 저장되어 있고, CPU가 발생시킨 논리 주소가 100번지라면 이 논리 주소는 아래 그림처럼 물리 주소 1600번지로 변환된다.

 

 

 이를 통해 베이스 레지스터와 논리 주소의 관계를 이해할 수 있다. 베이스 레지스터는 프로그램이 시작하는 물리 메모리의 최소 주소, 즉 프로그램의 첫 물리 주소를 저장한다. 이와 반대로, 논리 주소는 프로그램의 시작점으로부터 얼마나 떨어져 있는지, 즉 프로그램 내의 특정 위치를 가리키는 데 사용된다.


메모리 보호 기법

 컴퓨터 시스템에서는 다양한 프로그램들이 동시에 실행되는 멀티태스킹 환경이 일반적이다. 이때, 각 프로그램은 별도의 메모리 공간을 할당받아 독립적으로 동작하게 된다. 예를 들어, 메모장 프로그램이 1000번지부터 1999번지의 메모리 공간을 사용하고, 인터넷 브라우저는 2000번지부터 2999번지, 그리고 게임 프로그램은 3000번지부터 5999번지의 메모리를 사용하고 있다고 가정하자.

 

 

 이때, 메모장 프로그램에서 '논리 주소 1500번지에 숫자 100을 저장하라'는 명령어가 실행된다면 어떻게 될까? 베이스 레지스터에는 프로그램의 시작점인 1000번지가 저장되어 있으므로, 논리 주소 1500번지는 실제로는 물리 주소 2500번지를 의미하게 된다. 이로 인해 메모장 프로그램은 자신의 메모리 영역을 벗어나 인터넷 브라우저의 메모리 공간에 데이터를 저장하게 되는 문제가 발생한다.

 

 

 이와 같은 문제를 방지하기 위해, 시스템은 한계 레지스터(Limit Register)라는 메모리 보호 기법을 사용한다. 한계 레지스터는 각 프로그램의 논리 주소 범위를 저장하며, CPU는 이 한계 레지스터를 사용하여 논리 주소가 유효한 범위 내에 있는지 확인한다. 만약 논리 주소가 한계 레지스터가 허용하는 범위를 벗어난다면, CPU는 그 명령을 실행하지 않고 오류를 발생시킨다. 이렇게 하여 한 프로그램이 다른 프로그램의 메모리 공간을 침범하는 것을 막을 수 있다. 이는 프로그램들이 서로 독립적으로 안전하게 실행될 수 있도록 하는 중요한 보호 메커니즘이다.

 

 이렇게 되면, 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만이 되어, CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 하면 인터럽트를 발생시켜 실행을 중단한다. 

 


요약

메모리
1. 정의: 프로그램이 실행되는 동안 필요한 정보인 데이터와 명령어를 저장하는 장치
2. 종류
 - DRAM, SRAM, SDRAM, DDR SDRAM
3. 주소 종류
 - 물리 주소, 논리 주소
4. 메모리 보호 기법
 - 한계 레지스터를 통해 실행 중인 프로그램의 독립적인 실행 공간 확보
반응형