RAM의 특징과 종류
RAM의 특징
- RAM은 컴퓨터의 전원을끄면 RAM에 저장된 데이터와 명령어가 모두 날아가는 휘발성 저장장치
- SSD,HDD,USB등 컴퓨터의 전원을 꺼도 저장된 데이터와 명령어가 날아가지 않는 비휘발성 저장장치
- 보조기억장치는 전원을꺼도 데이터를 유지하지만 CPU는 보조기억장치에 직접적으로 접근하지 못함
- 보조기억 장치에는 보관할 대상 을 저장, 주기억 장치에는 실행할 대상을 저장함
- CPU가 실행하고 싶은 프로그램이 보조기억 장치에 있다면 실행할 대상을 RAM으로 복사하여 저장한뒤 실행함
RAM의 용량과 성능
- RAM의 용량이 충분히 크다면 한번에 실행할 수 있는 프로그램이 많음
- 한번에 실행할 수 있는 프로그램이 많다 = 보조기억 장치에서 RAM으로 복사할 수 있는 용량이 크기 때문에 CPU가 보조기억 장치로 접근하는 횟수를 줄여서 많은 프로그램들을 동시에 빠르게 실행하는데 유리함
RAM의 종류
DRAM
- Dynami RAM, 동적램, 저장된 데이터가 동적으로 변하는 RAM
- 시간이 지나면 저장된 데이터가 점차 사라짐
- 데이터 소멸을 막기 위해 주기적으로 데이터를 재활성화(refresh)
- 소비전력이 낮고, 저렴하고, 집적도가 높음(데이터를 많이 저장할 수 있음)
SRAM
- Static RAM, 정적 RAM, 저장된 데이터가 변하지 않는 RAM
- 시간이 지나도 데이터가 사라지지 않음
- SRAM은 DRAM보다 속도가 더 빠름
- 집적도가 낮고, 소비전력이큼, 가격도 비쌈
- 대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치 => 캐시메모리에서 사용
SDRAM
- SDRAM, Sychronous Dynamic RAM, CPU 클럭 신호와 동기화된 발전된 DRAM
- 클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고 받을수 있는 DRAM
DDR SDRAM
- Double Data Rate SDRAM, 대역폭을 넓혀 속도를 빠르게 만든 SDRAM
- 대역폭 : 데이터를 주고받는 길의 너비
- 대역폭의 너비가 2배
- 현재 거의 모든 메모리는 DDR4 SDRAM을 사용 2의4승 16배의 대역폭
메모리의 주소공간
물리주소
- 실제로 정보가 저장된 하드웨어상의 주소 , 메모리가 가진 실제주소
논리주소
- 실행중인 프로그램 각각에 부여된 주소 , CPU가 이해하는 주소
- 각 주소는 0번지 부터 부여됨
MMU
- Memory Management Unit 메모리 관리 장치
- CPU와 주소버스 사이에 위치함
- 논리 주소를 물리주소로 변환해주는 역할
- CPU가 발생시긴 논리주소 + 베이스 레지스터에 저장된 주소
- EX ) 논리주소 200 + 베이스 레지스터 주소 500 = 물리주소 : 700
- 베이스 레지스터(500)로 부터 논리주소(200) 만큼 떨어진 메모리주소(700)에 접근
- 베이스 레지스터는 프로그램의 가장작은 물리주소, 첫 물리주소를 저장
- 논리주소는 베이스 레지스터로 부터 논리주소만큼 떨어진 거리의 주소
메모리 보호 기법
- 프로그램이 자기에게 할당된 논리주소를 벗어나 다른 논리주소에 접근에 데이터를 변경할때, 이를 방지하는 기법
한계 레지스터
- 다른 영역을 침범할 수 있는 명령어는 위험함, 다른 프로그램에 영향을 받지 않도록 보호함
- 논리주소의 최대 크기를 지정함
- 베이스 레지스터값 ( 500 ) < 논리주소( 200 ) < 베이스 레지스터값 (500) + 한계 레지스터값 ( 500 )
- CPU가 접근하려는 논리주소(200)는 한계 레지스터(500)가 저장한 값 보다 크면 안됨
- CPU는 메모리에 접근하기전에 접근하고자 하는 논리주소가 한계 레지스터보다 작은지를 항상 검사함
- CPU가 한계레지스터 보다 높은 논리주소에 접근하려고 하면 인터럽트(트랩)를 발생시켜 실행을 중단함
- 인터럽트를 발생시켜 CPU가 메모리에 접근하지 못하도록 방어하고 메모리내의 프로그램을 보호함
캐시메모리
- CPU가 메모리에 접근하는 시간은 CPU의 연산속도보다 느림 => 성능 손해
- CPU가 메모리에 접근하여 데이터, 명령어를 가져오는 속도가 느리기 때문에 연산속도가 빨라도 소용없음 => 이를 극복하기 위해 생긴게 캐시메모리
저장 장치 계층 구조
- CPU와 가까운 저장장치는 속도는 빠르고, 멀리있는 저장 장치는 느림
- 속도가 빠른 저장장치는 용량이 잒, 가격이 비쌈
캐시 메모리
- 캐시메모리는 CPU와 메모리 사이에 위치하여 레지스터보다 용량이 크고 RAM보다 빠른 SRAM기반의 저장장치
- CPU의 연산속도와 메모리 접근 속도의 차이를 줄이기 위한 용도
- L1, L2 ,L3캐시로 나뉨, L1,L2캐시는 CPU내부에 위치하고 L3캐시는 CPU외부에 위치함\
- CPU는 L1,L2,L3 캐시 순으로 데이터를 조회함
- 멀티코어 프로세스는 L1,L2캐시는 각 CPU안에 위치하고 L3캐시는 코어끼리 L3캐시를 공유함 데이터와 명령어를 공유
- 각 코어의 L1,L2캐시가 가지고 있는 명령어와 데이터가 다르기 떄문에 데이터 정합성문제 발생 가능, 데이터의 싱크를 맞춰 주어야함
- 분리형 캐시 : 접근속도를 빠르게 하기 위해 명령어만 저장하는 L1I캐시, 데이터만 저장하는 L1D캐시로 분리하는 경우도 있음
참조 지역성의 원리
- 캐시메모리는 메모리보다 용량이적기 때문에 실행할 데이터와 명령어를 메인 메모리에서 복사하여 저장함
- 캐시메모리는 CPU가 자주 사용할 것 같은 대상을 예측하여 저장함
- 예측한 데이터가 캐시메모리에 존재할 경우 Cashe hit, 없을 경우 Cashe Miss
- 미리 가져오는 것 Cash Warm
- 캐시가 히트 되는 비율을 캐시 적중률 이라고함
- CPU는 캐시 적중률이 80~90%정도
최근에 접근했던 메모리 공간에 다시 접근하려는 경향
- CPU는 변수가 저장된 메모리 공간을 언제든 다시 참조할 수 있다
- CPU는 최근에 접근했던 메모리 공간(변수가 저장된)을 여러번 다시 접근할 수 있음 (시간 지역성)
접근했던 메모리 공간근처를 접근하려는 경향
- CPU가 실행하려는 프로그램은 관련된 데이터들끼리 메모리에 모여있음
- 특정 프로그램 실행중에 실행중인 프로그램의 자원을 할때 프로그램의 자원이 모여있는 메모리공간에 집중적으로 접근함 (공간 지역성)
질문
1. DRAM과 SRAM의 특징에 대해 각각 설명해주고 차이점을 말해주세요
- 정보를 저장하기 위해 전하를 저장하는 커패시터를 사용합니다.
- 정보를 저장하는 커패시터의 전하가 시간이 지나면서 점차 사라지기 때문에 주기적으로 리프레시(refresh)가 필요
- 비교적 저렴하고 높은 용량을 제공합니다.
- 비교적 낮은 속도와 높은 접근 시간을 가지고 있습니다.
- 주로 주기억장치로 사용되며, 컴퓨터의 메인 메모리로 사용됩니다.
2. 논리주소를 물리주소에 대해 설명 해주고 MMU가 논리주소를 물리주소로 변환하는 과정에 대해 설명해주세요
- 정보를 저장하기 위해 플립플롭과 전선을 사용합니다.
- 데이터를 저장하는 동안 전하를 계속 유지하므로 리프레시가 필요하지 않습니다.
- 빠른 속도와 낮은 접근 시간을 가지고 있습니다.
- 비교적 비싸며 용량이 작습니다.
- 캐시 메모리 등 빠른 액세스 속도가 필요한 곳에 사용됩니다.
3. 메모리 보호 기법 중 한계 레지스터가 어떤 방식으로 메모리에 저장된 데이터를 보호하는지 설명해주세요
물리주소(Physical Address)는 실제 하드웨어 메모리에서의 위치를 나타내는 주소입니다. 실제로 데이터가 저장되는 물리적인 주소입니다.
MMU(Memory Management Unit)는 논리주소를 물리주소로 변환하는 역할을 수행합니다. MMU는 주소 변환 테이블을 사용하여 논리주소를 물리주소로 매핑합니다. 이 테이블은 각 프로세스의 주소 공간에 대한 매핑 정보를 포함하고 있습니다. MMU는 주소 변환 테이블을 참조하여 논리주소를 물리주소로 변환하고, 변환된 물리주소를 메모리에 전달하여 데이터에 액세스합니다.
한계 레지스터는 프로그램이 액세스할 수 있는 주소 범위를 지정하는 역할을 합니다. 프로그램이 한계 레지스터를 초과하여 메모리에 액세스하려고 할 때, 하드웨어는 이를 감지하고 예외를 발생시켜 해당 액세스를 방지합니다.
한계 레지스터는 일반적으로 CPU 내부에 위치하며, 프로그램이 메모리에 액세스하기 전에 한계 레지스터와 주소를 비교하여 액세스의 유효성을 검사합니다. 이를 통해 프로그램이 허용된 메모리 영역 내에서만 실행되도록 보호할 수 있습니다.
저장장치 계층 구조는 데이터에 대한 액세스 시간과 비용을 최적화하기 위해 여러 개의 저장장치를 계층적으로 구성하는 방식입니다. 일반적으로 저장장치 계층은 다음과 같은 구조로 이루어집니다.
4. 저장장치계층 구조에 대해 설명해주고, 캐시메모리의 위치에 대해 설명해주세요
캐시 메모리(Cache Memory): 가장 빠르고 비싼 메모리 계층으로 CPU와 가까운 위치에 있으며, 속도가 빠르기 때문에 CPU가 자주 액세스하는 데이터를 저장합니다.
주기억장치(Main Memory): 캐시 메모리 다음으로 느리고 큰 용량의 메모리로, 프로그램 및 데이터를 저장합니다.
보조 기억장치(Secondary Storage): 주기억장치보다 접근 속도가 느리지만 큰 용량을 제공하는 장치로, 하드 디스크 드라이브(HDD)나 솔리드 스테이트 드라이브(SSD) 등이 있습니다.
이러한 구조는 계층 간 데이터 전송을 통해 빠른 액세스 시간과 큰 저장 용량을 모두 충족시킬 수 있습니다. 데이터가 CPU에 의해 요청되면, 먼저 캐시 메모리에서 데이터의 존재 여부를 확인하고, 캐시에 있으면 바로 액세스합니다. 그렇지 않으면 주기억장치로 이동하여 데이터를 검색하고, 필요한 경우 보조 기억장치에서 데이터를 로드합니다.
5. 참조 지역성의 원리에 대해 설명해주세요.
참조 지역성(Locality of Reference)은 프로그램이 특정 데이터에 반복적으로 액세스하는 경향을 나타내는 원리입니다. 이는 다음 두 가지 형태로 나타납니다.
시간적 지역성(Temporal Locality): 최근에 액세스된 데이터는 가까운 미래에 다시 액세스될 가능성이높다는 원리입니다. 즉, 한 번 액세스한 데이터는 잠시 후에 다시 액세스될 가능성이 높습니다. 이를 통해 캐시 메모리 등의 빠른 메모리 계층에서 데이터를 재사용할 수 있으며, 전체적인 시스템 성능을 향상시킬 수 있습니다.
공간적 지역성(Spatial Locality): 최근에 액세스된 데이터와 인접한 주소에 위치한 데이터에도 액세스할 가능성이 높다는 원리입니다. 예를 들어 배열의 연속된 요소에 접근하는 경우, 배열의 인접한 요소에도 접근할 가능성이 높습니다. 이를 통해 캐시 메모리 등에서 데이터 블록을 사전에 가져와서 향후 액세스 시간을 단축시킬 수 있습니다.
공통질문
트랜잭션이란 무엇이고 원자성, 일관성, 고립성, 지속성이란 무엇인지 설명해주실 수 있을까요?