메모리 리프레시

**메모리 리프레시**()는 정보를 보존하기 위해 주기억장치 영역에서 주기적으로 정보를 읽고, 읽은 정보를 수정 없이 즉시 동일한 영역에 다시 쓰는 과정이다. 메모리 리프레시는 가장 널리 사용되는 컴퓨터 메모리 유형인 반도체 동적 램(DRAM) 작동 중에 필요한 백그라운드 유지보수 프로세스이며, 사실상 이 메모리 계열의 정의적 특징이다.

DRAM 칩에서 각 비트의 메모리 데이터는 칩에 있는 작은 축전기의 전하 유무로 저장된다. 시간이 지남에 따라 메모리 셀의 전하가 누설되므로, 리프레시되지 않으면 저장된 데이터는 결국 손실된다. 이를 방지하기 위해 외부 회로는 주기적으로 각 셀을 읽고 다시 쓰면서 축전기의 전하를 원래 수준으로 복원한다. 각 **메모리 리프레시 사이클**은 다음 메모리 셀 영역을 리프레시하여 칩의 모든 셀을 연속적으로 반복해서 리프레시한다. 이 과정은 일반적으로 메모리 회로에 의해 백그라운드에서 자동으로 수행되며 사용자에게 투명하다. 리프레시 사이클이 발생하는 동안 메모리는 일반적인 읽기 및 쓰기 작업에 사용할 수 없지만, 최신 메모리에서는 이 오버헤드가 메모리 작동을 크게 지연시킬 정도로 크지 않다.

정적 램(SRAM)은 리프레시가 필요 없는 전자 메모리이다. SRAM 메모리 셀은 DRAM의 단일 트랜지스터와 축전기에 비해 4~6개의 트랜지스터가 필요하므로 SRAM 회로는 칩에 더 많은 공간을 필요로 한다. 결과적으로 SRAM 칩의 데이터 밀도는 DRAM보다 훨씬 낮고, 비트당 가격도 더 높다. 따라서 DRAM은 컴퓨터, 비디오 게임 콘솔, 그래픽 카드 및 대용량과 저비용을 요구하는 애플리케이션의 주 메모리로 사용된다. 메모리 리프레시의 필요성은 DRAM을 더 복잡하게 만들지만, DRAM의 밀도 및 비용 이점이 이러한 복잡성을 정당화한다.

## 작동
메모리가 작동하는 동안 각 메모리 셀은 제조업체가 지정한 최대 리프레시 간격(일반적으로 밀리초 범위) 내에서 반복적으로 리프레시되어야 한다. 리프레시는 데이터를 액세스하는 데 사용되는 일반적인 메모리 작업(읽기 및 쓰기 사이클)을 사용하지 않고, 별도의 카운터 회로에 의해 생성되고 일반적인 메모리 액세스 사이에 끼워지는 리프레시 사이클이라는 특수 사이클을 사용한다.

메모리 칩의 저장 셀은 행과 열의 직사각형 배열로 배치된다. DRAM의 읽기 과정은 파괴적이어서 전체 행의 메모리 셀에서 전하를 제거하므로, 칩에는 각 메모리 셀 열마다 하나씩, 감지 증폭기라고 불리는 특수한 래치 열이 있어 데이터를 임시로 보관한다. 일반적인 읽기 작업 중에 감지 증폭기는 데이터를 읽고 래치한 후 액세스된 행의 데이터를 다시 쓴다. 이 배열은 칩의 일반적인 읽기 전자 장치가 메모리 전체 행을 병렬로 리프레시할 수 있게 하여 리프레시 과정을 크게 가속화한다. 일반적인 읽기 또는 쓰기 사이클이 메모리 행을 리프레시하더라도, 일반적인 메모리 액세스가 필요한 시간 내에 모든 행에 도달할 것이라고는 보장할 수 없으므로 별도의 리프레시 과정이 필요하다. 리프레시 과정에서 일반적인 읽기 사이클을 사용하는 대신, 시간을 절약하기 위해 약식 리프레시 사이클이 사용된다. 리프레시 사이클은 읽기 사이클과 유사하지만 두 가지 이유로 더 빠르게 실행된다.
*리프레시의 경우 행 주소만 필요하므로 칩 주소 회로에 열 주소를 적용할 필요가 없다.
*셀에서 읽은 데이터를 출력 버퍼나 데이터 버스로 공급하여 CPU로 보낼 필요가 없다.
각 셀이 리프레시 시간 간격 내에 리프레시되도록 하려면, 리프레시 회로는 해당 간격 내에 칩의 각 행에 대해 리프레시 사이클을 수행해야 한다.

### 리프레시 회로의 종류
일부 초기 시스템에서는 마이크로프로세서가 리프레시를 제어했지만, 타이머가 주기적인 인터럽트를 발생시켜 리프레시를 수행하는 서브루틴을 실행하는 방식이었다. 이는 리프레시 프로세스를 중단하고 메모리 데이터를 잃지 않고는 마이크로프로세서를 일시 중지하거나, 단일 스텝으로 실행하거나, 에너지 절약 하이버네이션 모드로 전환할 수 없다는 것을 의미했다. 따라서 현대 시스템에서는 리프레시가 메모리 컨트롤러의 회로에 의해 처리되며, 이는 칩 자체에 내장될 수도 있다. 의사 정적 RAM(PSRAM)과 같은 특수 DRAM 칩은 모든 리프레시 회로를 칩에 내장하고 있으며, 나머지 컴퓨터 입장에서는 정적 램처럼 작동한다.

일반적으로 리프레시 회로는 리프레시할 행의 주소를 포함하는 리프레시 카운터(칩의 행 주소 선에 적용됨)와 카운터를 증가시켜 행들을 순차적으로 이동시키는 타이머로 구성된다. 이 카운터는 메모리 컨트롤러 회로의 일부이거나 메모리 칩 자체에 있을 수 있다. 두 가지 스케줄링 전략이 사용되었다.
*버스트 리프레시 – 모든 행이 리프레시될 때까지 일련의 리프레시 사이클이 연속적으로 수행된 후, 다음 리프레시가 필요할 때까지 일반적인 메모리 액세스가 발생한다.
*분산 리프레시 – 리프레시 사이클이 일정한 간격으로 수행되며, 메모리 액세스와 번갈아 가며 실행된다.
버스트 리프레시는 메모리를 사용할 수 없는 긴 기간을 초래하므로, 대부분의 현대 시스템, 특히 실시간 시스템에서는 분산 리프레시가 사용된다. 분산 리프레시에서 리프레시 사이클 간의 간격은 다음과 같다.
:\text{refresh cycle interval}=\text{refresh time}\, / \,\text{number of rows} \,
예를 들어, DDR SDRAM은 리프레시 시간이 64&nbsp;ms이고 8,192개의 행을 가지므로, 리프레시 사이클 간격은 7.8&nbsp;μs이다.

2012년 이후 개발된 DRAM 칩 세대에는 내장 리프레시 카운터가 포함되어 있으며, 메모리 제어 회로는 이 카운터를 사용하거나 외부 카운터에서 행 주소를 제공할 수 있다. 이 칩에는 세 가지 표준 리프레시 방식이 있으며, 열 선택(CAS) 및 행 선택(RAS) 선의 다른 신호 패턴으로 선택된다.
*RAS 온리 리프레시 – 이 모드에서는 리프레시할 행의 주소가 일반적으로 메모리 컨트롤러의 외부 카운터에 의해 생성되는 주소 버스 선을 통해 제공된다.
*CAS 비포 RAS 리프레시 (CBR) – 이 모드에서는 온칩 카운터가 리프레시할 행을 추적하고 외부 회로는 단순히 리프레시 사이클을 시작한다. 이 모드는 메모리 주소 버퍼의 전원을 켤 필요가 없으므로 전력 소모가 적다. 대부분의 최신 컴퓨터에서 사용된다.
*숨겨진 리프레시 – 이는 CBR 리프레시 사이클의 대체 버전으로, 이전 읽기 또는 쓰기 사이클과 결합될 수 있다. 리프레시는 데이터 전송 중에 병렬로 수행되어 시간을 절약한다.

2012년 세대 DRAM 칩부터 RAS 온리 모드는 없어졌으며, 내부 카운터가 리프레시를 생성하는 데 사용된다. 칩에는 컴퓨터가 절전 모드에 있을 때 사용할 수 있는 추가 절전 모드가 있으며, 이 모드에서는 온칩 발진기가 내부 리프레시 사이클을 생성하여 외부 클럭을 끌 수 있다.

### 리프레시 오버헤드
메모리가 리프레시에 소요하는 시간의 비율인 리프레시 오버헤드는 시스템 타이밍으로부터 계산할 수 있다.
:\text{refresh overhead}=\frac {\text{time required for refresh}} {\text{refresh interval}} \,
예를 들어, SDRAM 칩은 213=8,192개의 행, 64 ms의 리프레시 간격, 133&nbsp;MHz로 작동하는 메모리 버스를 가지며, 리프레시 사이클은 4클럭 사이클이 걸린다. 리프레시 사이클의 시간은 다음과 같다.
:\text{length of refresh cycle}=4/f=\frac {4}{1.33(10^8)\,\text{Hz}}=30\, \text{ns} \,
:\text{time required for refresh}=(\text{length of refresh cycle})(\text{rows})=(30\, \text{ns})(8192)=0.246\,\text{ms} \,
:\text{refresh overhead}=\frac {0.246\,\text{ms}}{64\, \text{ms}}=.0038 \,
따라서 메모리 칩 시간의 0.4% 미만이 리프레시 사이클에 사용된다.
SDRAM 칩에서는 각 칩의 메모리가 병렬로 리프레시되는 뱅크로 나뉘어 추가 시간을 절약한다. 따라서 필요한 리프레시 사이클 수는 단일 뱅크의 행 수이며, 이는 사양에 명시되어 있으며 2012년 세대 칩에서는 8,192로 고정되었다.

## 리프레시 간격
리프레시 작업 간의 최대 시간 간격은 각 DRAM 기술에 대해 JEDEC에 의해 표준화되며 제조업체의 칩 사양에 명시되어 있다. 일반적으로 DRAM의 경우 밀리초 범위, EDRAM의 경우 마이크로초 범위이다. DDR2 SDRAM 칩의 경우 64ms이다. 최대 리프레시 간격은 메모리 셀 축전기에 저장된 전하와 누설 전류의 비율에 따라 달라진다. 반도체 내의 누설 전류는 온도와 함께 증가하므로, 고온에서는 리프레시 간격을 줄여야 한다. DDR2 SDRAM 칩은 온도 보상 리프레시 구조를 가지고 있으며; 칩 케이스 온도가 을 초과하면 리프레시 간격을 절반으로 줄여야 한다. 축전기의 기하학적 구조가 새로운 세대의 메모리 칩마다 축소되어 저장되는 전하가 줄어들고 있지만, DRAM의 리프레시 간격은 증가하고 있다; 1M 칩의 경우 8&nbsp;ms, 16M 칩의 경우 32&nbsp;ms에서 256M 칩의 경우 64&nbsp;ms로. 더 긴 리프레시 간격은 장치의 시간이 리프레시에 소요되는 비율이 적어지고 메모리 액세스에 더 많은 시간을 할애할 수 있음을 의미한다. 이러한 개선은 주로 누설 감소를 통해 달성된다.

대부분의 DRAM 메모리 셀에서 읽기 가능한 전하 값, 즉 데이터의 실제 지속 시간은 리프레시 간격보다 훨씬 길어 1~10초에 달한다. 그러나 트랜지스터 누설 전류는 공정 변화로 인해 동일한 칩 내의 다른 메모리 셀 간에 크게 달라진다. 단일 비트가 손실되기 전에 모든 메모리 셀이 리프레시되도록 하기 위해 제조업체는 리프레시 시간을 보수적으로 짧게 설정해야 한다.

이러한 빈번한 DRAM 리프레시는 저전력 전자공학 장치의 대기 모드에서 소비되는 총 전력의 3분의 1을 차지한다. 연구원들은 온도 보상 리프레시(TCR)와 보존 인식 DRAM 배치(RAPID)를 포함하여 리프레시 속도를 줄여 배터리 작동 시간을 연장하는 여러 접근 방식을 제안했다. 실험에 따르면 일반적인 기성 DRAM 칩에서는 소수의 약한 셀만이 최악의 경우인 64&nbsp;ms 리프레시 간격을 실제로 요구하며, 심지어 이 경우에도 지정된 온도 범위의 고온에서만 그렇다. 실온(예: )에서는 동일한 약한 셀이 올바른 작동을 위해 500&nbsp;ms마다 한 번씩 리프레시되어야 한다. 시스템이 가장 약한 1%의 페이지 사용을 피할 수 있다면, 일반적인 DRAM은 나머지 99%의 페이지가 올바르게 작동하기 위해 에서도 초당 한 번만 리프레시하면 된다. 일부 실험에서는 이 두 가지 보완적인 기술을 결합하여 실온에서 10초의 리프레시 간격으로 올바른 작동을 제공한다.

오류 허용 애플리케이션(예: 그래픽 애플리케이션)의 경우, DRAM 또는 eDRAM에 저장된 비핵심 데이터를 보존 기간보다 낮은 속도로 리프레시하면 약간의 품질 손실로 에너지를 절약할 수 있으며, 이는 근사 컴퓨팅의 한 예이다.

## SRAM 및 DRAM 메모리 기술

### SRAM
다른 종류의 반도체 메모리인 정적 램(SRAM)에서는 데이터가 축전기의 전하로 저장되는 것이 아니라 쌍안정 회로에 저장되므로 SRAM은 리프레시할 필요가 없다. 두 가지 기본 메모리 유형은 장점과 단점을 가지고 있다. 정적 메모리는 전원이 켜져 있는 동안 영구적이라고 볼 수 있다. 즉, 한 번 기록되면 명시적으로 변경될 때까지 유지되므로 시스템 설계 측면에서 사용이 간단하다. 그러나 각 SRAM 셀의 내부 구조는 DRAM 셀에 필요한 단일 트랜지스터에 비해 6개의 트랜지스터를 필요로 하므로 SRAM의 밀도는 DRAM보다 훨씬 낮고 비트당 가격은 훨씬 높다.

### CPU 기반 리프레시
일부 초기 마이크로프로세서(예: 자일로그 Z80)는 동적 메모리 셀을 리프레시하기 위해 행 주소 스트로브(RAS)를 제공할 수 있는 특수 내부 레지스터를 제공했으며, 이 레지스터는 각 리프레시 사이클마다 증가했다. 이는 시스템에서 이미 사용 중인 다른 집적 회로가 RAM 전반에 걸쳐 순환 액세스를 이미 생성하는 경우(예: 모토로라 6845)에도 수행될 수 있었다. Z80과 같은 CPU에서는 RAS 리프레시의 가용성이 하드웨어 설계를 단순화하여 큰 판매 포인트였다. 여기서 RAS 리프레시는 작동상 중복되는 클럭 사이클(T-상태), 즉 버스가 필요하지 않을 수 있는 명령어 디코딩 및 실행 중에 고유한 주소 및 제어 선 조합에 의해 신호된다. 이러한 T-상태 동안 버스가 비활성화되는 대신, 리프레시 레지스터가 리프레시 회로를 활성화하기 위한 제어 신호 조합과 함께 주소 버스에 제시되었다.

Z80의 초기 버전에서 16&nbsp;kB RAM 칩의 보편성(128행)과 어느 정도의 선견지명 부족으로 인해 R 레지스터는 7비트 폭 범위(0-127, 128행) 내에서만 증가했다. 8번째 비트는 사용자가 설정할 수 있었지만, 내부 순환에 의해 변경되지 않았다. 64 kbit 이상 DRAM 칩(256행)의 등장과 함께, 누락된 8번째 비트를 합성하고 몇 밀리초 후에 메모리 내용 블록이 손실되는 것을 방지하기 위해 리프레시 신호 주변에 추가 회로 또는 논리가 구축되어야 했다. 일부 상황에서는 인터럽트 및 소프트웨어를 활용하여 적절한 시간에 8번째 비트를 전환하여 R 레지스터의 전체 범위(256행)를 커버할 수 있었다. 또 다른 방법은 하드웨어 측면에서 더 보편적이지만 더 복잡한 방법으로, 8비트 카운터 칩을 사용하는 것이었다. 이 카운터의 출력은 R 레지스터 대신 리프레시 RAS 주소를 제공했다. CPU의 리프레시 신호는 이 카운터의 클럭으로 사용되어 각 리프레시 사이클마다 메모리 행이 증가하도록 했다. Z80 코어의 이후 버전 및 라이선스 복제품은 자동 순환에서 8번째 비트가 포함되지 않는 문제를 해결했으며, 현대 CPU는 이러한 기본 제공 기능을 크게 확장하여 DRAM 리프레시를 위한 풍부한 올인원 솔루션을 제공한다.

### 의사정적 DRAM
의사정적 RAM(PSRAM 또는 PSDRAM)은 SRAM과 유사하게 작동하도록 내장된 리프레시 및 주소 제어 회로를 갖춘 동적 RAM이다. DRAM의 높은 밀도와 실제 SRAM의 사용 편의성을 결합한다. PSRAM(Numonyx 제조)은 애플 아이폰 및 기타 임베디드 시스템에 사용된다.

일부 DRAM 부품은 자체 리프레시 대기 모드를 가지고 있다. 이는 주로 시스템이 DRAM에 저장된 데이터를 잃지 않고 전력 절약을 위해 DRAM 컨트롤러의 작동을 일시 중단할 수 있도록 하기 위한 것이며, PSRAM은 별도의 DRAM 컨트롤러 없이 작동할 수 있도록 한다. PSRAM의 내장형 변형은 MoSys에서 1T-SRAM이라는 이름으로 판매되며, 기술적으로는 DRAM이지만 SRAM과 매우 유사하게 작동하며, 닌텐도 게임큐브 및 Wii 콘솔에 사용된다.

## 리프레시를 사용하는 다른 메모리 기술
몇몇 초기 컴퓨터 메모리 기술도 메모리 리프레시와 유사한 목적의 주기적인 프로세스를 필요로 했다. 윌리엄스관이 가장 유사한데, DRAM과 마찬가지로 본질적으로 각 비트에 저장된 값이 리프레시되지 않으면 점차 소멸되는 용량성 메모리이기 때문이다.

자기코어 메모리에서 각 메모리 셀은 전원이 꺼진 상태에서도 데이터를 무기한 유지할 수 있지만, 어떤 메모리 셀에서든 데이터를 읽으면 내용이 지워진다. 결과적으로 메모리 컨트롤러는 일반적으로 비파괴 읽기 작업의 환상을 만들기 위해 각 읽기 사이클 후에 리프레시 사이클을 추가했다. 일부 초기 컴퓨터는 증가 및 감소를 위해 원자적 읽기-수정-쓰기 사이클(조합된 읽기 및 쓰기 및 수정)을 구현했다.

지연선 기억기는 데이터가 실제로 전송선로 내의 신호로 저장되기 때문에 지속적인 리프레시를 필요로 한다. 이 경우 리프레시 속도는 메모리 액세스 타임과 비슷하다.

## 같이 보기
* 콜드 부트 공격
* 메모리 스크러빙
* 로우 해머

## 각주

분류:컴퓨터 메모리