SDRAM

섬네일|SDRAM 메모리 모듈
**동기식 동적 램**(Synchronous dynamic random-access memory, **synchronous dynamic RAM** 또는 **SDRAM**, **에스디램**)은 외부 핀 인터페이스의 동작이 외부에서 제공되는 클럭 신호에 의해 조율되는 모든 DRAM을 가리킨다.

1970년대 초부터 1990년대 초까지 생산된 DRAM IC는 비동기식 인터페이스를 사용했는데, 입력 제어 신호는 반도체 경로를 통한 지연만으로 내부 기능에 직접적인 영향을 미쳤다. SDRAM은 동기식 인터페이스를 통해 클럭 입력의 상승 에지 이후에 제어 입력의 변경 사항이 인식된다. JEDEC에 의해 표준화된 SDRAM 제품군에서는 클럭 신호가 들어오는 명령에 응답하는 내부 유한 상태 기계의 단계를 제어한다. 이러한 명령은 성능 향상을 위해 파이프라인될 수 있으며, 새로운 명령이 수신되는 동안 이전에 시작된 작업이 완료된다. 메모리는 크기가 같지만 독립적인 여러 섹션으로 나뉘는데, 이를 뱅크라고 하며, 장치가 각 뱅크에서 메모리 액세스 명령을 동시에 수행하고 인터리빙 방식으로 액세스 속도를 높일 수 있도록 한다. 이를 통해 SDRAM은 비동기 DRAM보다 더 높은 동시성과 더 빠른 데이터 전송 속도를 달성할 수 있다.

파이프라인 방식은 칩이 이전 명령 처리를 완료하기 전에 새 명령을 수락할 수 있음을 의미한다. 파이프라인 방식의 쓰기 작업의 경우, 데이터가 메모리 배열에 기록되기를 기다리지 않고 쓰기 명령 뒤에 즉시 다른 명령이 올 수 있다. 파이프라인 방식의 읽기 작업의 경우, 요청된 데이터는 읽기 명령 후 고정된 수의 클록 주기(레이턴시) 후에 나타나며, 이 동안 추가 명령을 보낼 수 있다.

## 역사
[섬네일|PC100 [DIMM 패키지에 있는 8개의 현대 SDRAM IC]]

초기 DRAM은 종종 CPU 클럭에 동기화(클록 동기화)되어 초기 마이크로프로세서와 함께 사용되었다. 1970년대 중반에 DRAM은 비동기식 설계로 전환되었지만, 1990년대에는 동기식 동작으로 다시 돌아왔다. 1980년대 후반 IBM은 듀얼 엣지 클럭킹 기능을 사용하는 DRAM을 구축하여 1990년 국제 고체회로 학회에서 결과를 발표했다. 그러나 그것은 SDRAM이 아닌 표준 DRAM이었다.

최초의 상업용 SDRAM은 16Mbit 용량의 삼성 KM48SL2000 메모리 칩이었다. 1992년에 삼성전자가 CMOS (상보형 금속 산화물 반도체) 제조 공정을 사용하여 제조했으며, 1993년에 양산되었다. 2000년까지 SDRAM은 성능이 뛰어나 현대 컴퓨터의 거의 모든 다른 유형의 DRAM을 대체했다.

SDRAM 레이턴시는 비동기 DRAM보다 본질적으로 낮지(빠른 액세스 시간) 않다. 실제로 초기 SDRAM은 추가 논리로 인해 동시대의 버스트 EDO DRAM보다 다소 느렸다. SDRAM의 내부 버퍼링의 이점은 여러 메모리 뱅크에 대한 작업을 인터리빙하여 유효 대역폭을 증가시키는 능력에서 비롯된다.

더블 데이터 레이트 SDRAM, 즉 DDR SDRAM은 1997년 삼성에서 처음 시연되었다. 삼성은 1998년 6월에 최초의 상업용 DDR SDRAM 칩(64Mbit)을 출시했으며, 같은 해 곧이어 현대전자(현재 SK하이닉스)도 출시했다.

오늘날 거의 모든 SDRAM은 전자 부품의 상호 운용성을 촉진하기 위해 개방형 표준을 채택하는 전자 산업 협회인 JEDEC이 수립한 표준을 준수하여 제조된다. JEDEC은 1993년에 첫 SDRAM 표준을 공식적으로 채택했으며, 이후 DDR, DDR2, DDR3를 포함한 다른 SDRAM 표준도 채택했다.

SDRAM은 서버 및 워크스테이션과 같이 더 큰 확장성이 필요한 시스템을 위해 레지스터 변종으로도 제공된다.

오늘날 세계 최대의 SDRAM 제조업체로는 삼성전자, SK하이닉스, 마이크론 테크놀로지, 난야 테크놀로지가 있다.

## 타이밍
DRAM 성능에는 몇 가지 제한이 있다. 가장 주목할 만한 것은 읽기 주기 시간으로, 열린 행에 대한 연속적인 읽기 작업 간의 시간이다. 이 시간은 66MHz SDRAM(1MHz = 106Hz)의 경우 15ns에서 DDR-400의 경우 5ns로 감소했지만, DDR2-800 및 DDR3-1600 세대에서는 상대적으로 변함이 없었다. 그러나 인터페이스 회로를 기본 읽기 속도의 점점 더 높은 배수에서 작동함으로써 달성 가능한 대역폭이 빠르게 증가했다.

또 다른 제한은 CAS 레이턴시로, 열 주소를 제공하고 해당 데이터를 수신하는 사이의 시간이다. 다시 말해, 이 값은 지난 몇 세대의 DDR SDRAM에서 10~15나노초로 비교적 일정하게 유지되었다.

작동 중 CAS 레이턴시는 SDRAM의 모드 레지스터에 프로그램되고 DRAM 컨트롤러가 예상하는 특정 클록 사이클 수이다. 어떤 값이라도 프로그램할 수 있지만, 너무 낮으면 SDRAM이 올바르게 작동하지 않는다. 클럭 속도가 높을수록 클록 사이클에서 유용한 CAS 레이턴시가 자연스럽게 증가한다. 10~15ns는 DDR-400 SDRAM의 200MHz 클록에서 2~3사이클(CL2~3)에 해당하며, DDR2-800의 경우 CL4-6, DDR3-1600의 경우 CL8-12에 해당한다. 클럭 사이클이 느리면 CAS 레이턴시 사이클 수가 자연스럽게 낮아질 수 있다.

SDRAM 모듈에는 모듈 내 칩의 타이밍보다 느릴 수 있는 자체 타이밍 사양이 있다. 100MHz SDRAM 칩이 처음 등장했을 때, 일부 제조업체는 해당 클럭 속도에서 안정적으로 작동할 수 없는 "100MHz" 모듈을 판매했다. 이에 대응하여 인텔은 100MHz에서 안정적으로 작동할 수 있는 메모리 모듈 생산에 대한 요구 사항 및 지침을 제시하는 PC100 표준을 발표했다. 이 표준은 광범위하게 영향력을 행사했으며, "PC100"이라는 용어는 100MHz SDRAM 모듈의 일반적인 식별자가 되었고, 이제 모듈은 일반적으로 "PC-" 접두사가 붙은 숫자(PC66, PC100 또는 PC133 – 숫자의 실제 의미는 변경되었지만)로 지정된다.

## 제어 신호
모든 명령은 클럭 신호의 상승 에지에 상대적으로 시간이 지정된다. 클럭 외에도 6개의 제어 신호가 있으며, 대부분 액티브 로우이며 클럭의 상승 에지에서 샘플링된다.
* **CKE** 클럭 활성화. 이 신호가 낮으면 칩은 클럭이 멈춘 것처럼 동작한다. 명령이 해석되지 않고 명령 대기 시간도 경과하지 않는다. 다른 제어 라인의 상태는 관련이 없다. 이 신호의 효과는 실제로 한 클럭 사이클 지연된다. 즉, 현재 클럭 사이클은 평소처럼 진행되지만, 다음 클럭 사이클은 CKE 입력을 다시 확인하는 것 외에는 무시된다. CKE가 높게 샘플링된 클럭의 상승 에지 이후에 일반적인 동작이 재개된다. 다시 말해, 다른 모든 칩 동작은 마스크된 클럭의 상승 에지에 상대적으로 시간이 지정된다. 마스크된 클럭은 입력 클럭과 이전 입력 클럭의 상승 에지 동안의 CKE 신호 상태의 논리적 AND이다.
* ***' 칩 선택. 이 신호가 높으면 칩은 다른 모든 입력(CKE 제외)을 무시하고 NOP 명령을 수신한 것처럼 동작한다.
* '''DQM''' 데이터 마스크. (Q 문자는 디지털 논리 규칙에 따라 데이터 라인이 "DQ" 라인으로 알려져 있기 때문에 나타난다.) 이 신호가 높으면 데이터 I/O를 억제한다. 쓰기 데이터와 함께 사용될 때, 데이터는 실제로 DRAM에 기록되지 않는다. 읽기 주기 2주기 전에 높게 설정되면 읽기 데이터는 칩에서 출력되지 않는다. x16 메모리 칩 또는 DIMM에는 8비트당 하나의 DQM 라인이 있다.

=== 명령 신호 ===
* ***', 행 주소 스트로브. 이름과는 달리, 이것은 스트로브가 아니라 단순히 명령 비트이다.  및 와 함께 8가지 명령 중 하나를 선택한다.
* ***', 열 주소 스트로브. 이것도 스트로브가 아니라 명령 비트이다.  및 와 함께 8가지 명령 중 하나를 선택한다.
* ***', 쓰기 활성화.  및 와 함께 8가지 명령 중 하나를 선택한다. 일반적으로 읽기 유사 명령과 쓰기 유사 명령을 구분한다.

### 뱅크 선택 (BAn)
SDRAM 장치는 내부에 2개, 4개 또는 8개의 독립적인 내부 데이터 뱅크로 나뉜다. 하나에서 세 개의 뱅크 주소 입력(BA0, BA1 및 BA2)은 명령이 전달될 뱅크를 선택하는 데 사용된다.

### 주소 지정 (A10/An)
많은 명령은 또한 주소 입력 핀에 제시된 주소를 사용한다. 주소를 사용하지 않거나 열 주소를 제시하는 일부 명령은 A10을 사용하여 변형을 선택하기도 한다.

### 명령
SDR SDRAM 명령은 다음과 같이 정의된다.

모든 SDRAM 세대(SDR 및 DDRx)는 본질적으로 동일한 명령을 사용하며, 변경 사항은 다음과 같다.
* 더 큰 장치를 지원하기 위한 추가 주소 비트
* 추가 뱅크 선택 비트
* 더 넓은 모드 레지스터 (DDR2 이상은 13비트, A0~A12 사용)
* 추가 확장 모드 레지스터 (뱅크 주소 비트로 선택)
* DDR2는 버스트 종료 명령을 삭제하고, DDR3은 이를 "ZQ 캘리브레이션"으로 재할당한다.
* DDR3 및 DDR4는 읽기 및 쓰기 명령 중 A12를 사용하여 "버스트 찹", 즉 절반 길이 데이터 전송을 나타낸다.
* DDR4는 활성화 명령의 인코딩을 변경한다. 새로운 신호 가 이를 제어하며, 이 동안 다른 제어 라인은 행 주소 비트 16, 15, 14로 사용된다. 가 높으면 다른 명령은 위와 동일하다.

## 구조 및 작동
[섬네일|확대된 SDRAM [메모리 모듈]]
예를 들어, 512MB SDRAM DIMM(512MB 포함)은 각각 512Mbit의 저장 공간을 포함하고 DIMM의 64비트 또는 72비트 너비에 각각 8비트를 기여하는 8개 또는 9개의 SDRAM 칩으로 구성될 수 있다. 일반적인 512Mbit SDRAM 칩은 내부적으로 4개의 독립적인 16MB 메모리 뱅크를 포함한다. 각 뱅크는 각각 16,384비트의 8,192개 행 배열이다. (2048개의 8비트 열). 뱅크는 유휴 상태이거나 활성 상태이거나 또는 한 상태에서 다른 상태로 전환되는 중이다.

활성 명령은 유휴 뱅크를 활성화한다. 이 명령은 2비트 뱅크 주소(BA0-BA1)와 13비트 행 주소(A0-A12)를 제시하며, 해당 행을 뱅크의 모든 16,384개 열 감지 증폭기 배열로 읽어들인다. 이 작업은 "행 열기"라고도 알려져 있다. 이 작업은 해당 행의 동적(정전용량) 메모리 저장 셀을 새로 고치는 부수적인 효과가 있다.

행이 활성화되거나 "열리면" 해당 행에 대한 읽기 및 쓰기 명령이 가능하다. 활성화에는 최소 시간이 필요하며, 이를 행-열 지연(tRCD)이라고 하며, 읽기 또는 쓰기 작업이 발생하기 전에 이 시간이 경과해야 한다. 이 시간은 클록 주기의 다음 배수로 반올림되어 활성 명령과 읽기 또는 쓰기 명령 사이의 최소 대기 사이클 수를 지정한다. 이러한 대기 사이클 동안 다른 뱅크에 추가 명령을 보낼 수 있다. 각 뱅크는 완전히 독립적으로 작동하기 때문이다.

읽기 및 쓰기 명령은 모두 열 주소를 필요로 한다. 각 칩은 한 번에 8비트의 데이터에 액세스하므로 2,048개의 가능한 열 주소가 있으며, 따라서 11개의 주소 라인(A0-A9, A11)만 필요하다.

읽기 명령이 발행되면 SDRAM은 구성된 CAS 지연 시간에 따라 몇 클럭 사이클 후에 클럭 신호의 상승 에지에 맞춰 해당 출력 데이터를 DQ 라인에 생성한다. 버스트의 후속 워드는 후속 상승 클럭 에지에 맞춰 생성된다.

쓰기 명령은 동일한 상승 클럭 에지 동안 DQ 라인에 기록될 데이터와 함께 제공된다. 메모리 컨트롤러는 SDRAM이 읽기 데이터를 DQ 라인에 동시에 구동해야 할 때 쓰기 데이터를 해당 라인에 구동하지 않도록 보장해야 한다. 이는 읽기 버스트가 완료될 때까지 기다리거나, 읽기 버스트를 종료하거나, DQM 제어 라인을 사용하여 수행할 수 있다.

메모리 컨트롤러가 다른 행에 액세스해야 하는 경우, 먼저 해당 뱅크의 감지 증폭기를 유휴 상태로 되돌려 다음 행을 감지할 준비를 해야 한다. 이를 "프리차지(precharge)" 작업 또는 "행 닫기"라고 한다. 프리차지는 명시적으로 명령할 수도 있고, 읽기 또는 쓰기 작업이 완료될 때 자동으로 수행될 수도 있다. 다시 말해, 최소 시간인 행 프리차지 지연(tRP)이 경과해야 해당 행이 완전히 "닫히고" 해당 뱅크가 다른 활성화 명령을 수신할 수 있도록 유휴 상태가 된다.

행을 새로 고치는 것은 행을 활성화하는 자동적인 부수 효과이지만, 이를 수행하는 데 필요한 최소 시간은 활성 명령이 행을 여는 것과 해당하는 프리차지 명령이 행을 닫는 것 사이의 최소 행 액세스 시간 tRAS 지연을 필요로 한다. 이 제한은 일반적으로 해당 행에 대한 원하는 읽기 및 쓰기 명령에 의해 가려지므로, 그 값은 일반적인 성능에 거의 영향을 미치지 않는다.

## 명령 상호작용
NOP(동작 없음) 명령은 항상 허용되는 반면, 모드 레지스터 로드 명령은 모든 뱅크가 유휴 상태여야 하며, 변경 사항이 적용될 때까지 지연이 필요하다. 자동 새로 고침 명령 또한 모든 뱅크가 유휴 상태여야 하며, 칩을 유휴 상태로 되돌리는 데 새로 고침 주기 시간 tRFC가 소요된다. (이 시간은 일반적으로 tRCD + tRP와 같다.) 유휴 뱅크에서 허용되는 유일한 다른 명령은 활성 명령이다. 이 명령은 위에서 언급했듯이, 행이 완전히 열리고 읽기 및 쓰기 명령을 수락할 수 있게 되기까지 tRCD가 소요된다.

뱅크가 열리면 읽기, 쓰기, 버스트 종료, 프리차지 등 네 가지 명령이 허용된다. 읽기 및 쓰기 명령은 버스트를 시작하며, 이는 후속 명령에 의해 중단될 수 있다.

### 읽기 버스트 중단
읽기, 버스트 종료 또는 프리차지 명령은 읽기 명령 후 언제든지 발행될 수 있으며, 구성된 CAS 레이턴시 후에 읽기 버스트를 중단한다. 따라서 사이클 0에 읽기 명령이 발행되고, 사이클 2에 다른 읽기 명령이 발행되며, CAS 레이턴시가 3인 경우, 첫 번째 읽기 명령은 사이클 3과 4 동안 데이터를 버스트하기 시작하고, 두 번째 읽기 명령의 결과는 사이클 5부터 나타난다.

사이클 2에 발행된 명령이 버스트 종료 또는 활성 뱅크의 프리차지였다면, 사이클 5 동안 출력은 생성되지 않는다.

중단하는 읽기는 어떤 활성 뱅크라도 가능하지만, 프리차지 명령은 동일한 뱅크 또는 모든 뱅크에 대한 읽기 버스트만 중단한다. 다른 뱅크에 대한 프리차지 명령은 읽기 버스트를 중단하지 않는다.

쓰기 명령으로 읽기 버스트를 중단하는 것은 가능하지만 더 어렵다. DQM 신호를 사용하여 SDRAM의 출력을 억제하여 메모리 컨트롤러가 쓰기 작업에 맞춰 DQ 라인으로 SDRAM에 데이터를 구동할 수 있도록 해야 한다. DQM이 읽기 데이터에 미치는 영향은 두 사이클 지연되지만, 쓰기 데이터에 미치는 영향은 즉각적이기 때문에 DQM은 쓰기 명령 최소 두 사이클 전에 (읽기 데이터를 마스크하기 위해) 올려야 하지만, 쓰기 명령 사이클에는 내려야 한다 (쓰기 명령이 효과를 내기 위함).

이를 단 두 클록 사이클 내에 수행하려면 SDRAM이 클록 에지에서 출력을 끄는 데 걸리는 시간과 다음 클록 에지에서 쓰기 작업을 위해 SDRAM에 입력으로 데이터를 제공해야 하는 시간 사이에 신중한 조율이 필요하다. 클록 주파수가 너무 높아 충분한 시간을 허용하지 않는 경우, 세 사이클이 필요할 수 있다.

읽기 명령에 자동 프리차지가 포함된 경우, 프리차지는 중단 명령과 동일한 사이클에 시작된다.

## 버스트 순서
CPU 캐시가 있는 최신 마이크로프로세서는 일반적으로 캐시 라인 단위로 메모리에 접근한다. 64바이트 캐시 라인을 전송하려면 64비트 DIMM에 연속적으로 8번 접근해야 하는데, 이는 모드 레지스터를 사용하여 SDRAM 칩을 8단어 버스트를 수행하도록 구성함으로써 단일 읽기 또는 쓰기 명령으로 모두 트리거할 수 있다. 캐시 라인 페치는 일반적으로 특정 주소에서 읽기 동작으로 트리거되며, SDRAM은 캐시 라인의 "크리티컬 워드"가 먼저 전송되도록 허용한다. (여기서 "워드"는 SDRAM 칩 또는 DIMM의 폭을 의미하며, 일반적인 DIMM의 경우 64비트이다.) SDRAM 칩은 캐시 라인에서 나머지 단어의 순서에 대해 두 가지 가능한 규칙을 지원한다.

버스트는 항상 BL의 배수에서 시작하는 BL 연속 단어의 정렬된 블록에 액세스한다. 예를 들어, 4단어 버스트가 열 주소 4에서 7까지 액세스하면 단어 4에서 7까지 반환된다. 그러나 순서는 요청된 주소와 구성된 버스트 유형 옵션(순차 또는 인터리브)에 따라 달라진다. 일반적으로 메모리 컨트롤러는 둘 중 하나를 필요로 한다. 버스트 길이가 1 또는 2일 때는 버스트 유형이 중요하지 않다. 버스트 길이가 1일 때는 요청된 단어만 액세스된다. 버스트 길이가 2일 때는 요청된 단어가 먼저 액세스되고, 정렬된 블록의 다른 단어가 두 번째로 액세스된다. 이는 짝수 주소가 지정된 경우 다음 단어이고, 홀수 주소가 지정된 경우 이전 단어이다.

순차 버스트 모드의 경우, 나중 단어는 주소가 증가하는 순서로 액세스되며, 블록의 끝에 도달하면 시작으로 돌아간다. 따라서 예를 들어, 버스트 길이가 4이고 요청된 열 주소가 5인 경우, 단어는 5-6-7-4 순서로 액세스된다. 버스트 길이가 8인 경우, 액세스 순서는 5-6-7-0-1-2-3-4가 된다. 이는 열 주소에 카운터를 추가하고 버스트 길이를 넘는 캐리는 무시함으로써 이루어진다. 인터리브 버스트 모드는 카운터와 주소 간의 배타적 논리합 연산을 사용하여 주소를 계산한다. 동일한 시작 주소 5를 사용하여 4단어 버스트는 5-4-7-6 순서로 단어를 반환한다. 8단어 버스트는 5-4-7-6-1-0-3-2가 된다. 사람에게는 더 혼란스럽지만, 하드웨어에서 구현하기는 더 쉬울 수 있으며, 인텔 마이크로프로세서에서 선호된다.

요청된 열 주소가 블록의 시작에 있으면, 두 버스트 모드(순차 및 인터리브) 모두 동일한 순차 시퀀스 0-1-2-3-4-5-6-7으로 데이터를 반환한다. 차이점은 크리티컬 워드 우선 순서로 메모리에서 캐시 라인을 가져올 때만 중요하다.

## 모드 레지스터
단일 데이터 속도 SDRAM은 단일 10비트 프로그래밍 가능한 모드 레지스터를 가지고 있다. 이후의 더블 데이터 속도 SDRAM 표준은 뱅크 주소 핀을 사용하여 주소 지정되는 추가 모드 레지스터를 추가한다. SDR SDRAM의 경우, 뱅크 주소 핀과 A10 이상의 주소 라인은 무시되지만, 모드 레지스터 쓰기 중에는 0이어야 한다.

비트는 M9에서 M0까지이며, 모드 레지스터 로드 주기 동안 A9에서 A0까지의 주소 라인에 표시된다.
* M9: 쓰기 버스트 모드. 0이면 쓰기는 읽기 버스트 길이와 모드를 사용한다. 1이면 모든 쓰기는 비버스트(단일 위치)이다.
* M8, M7: 작동 모드. 예약되어 있으며 00이어야 한다.
* M6, M5, M4: CAS 레이턴시. 일반적으로 010 (CL2) 및 011 (CL3)만 유효하다. 읽기 명령과 칩에서 데이터 출력 사이의 사이클 수를 지정한다. 칩에는 나노초 단위의 이 값에 대한 기본 제한이 있다. 초기화하는 동안 메모리 컨트롤러는 클럭 주파수에 대한 지식을 사용하여 해당 제한을 사이클로 변환해야 한다.
* M3: 버스트 유형. 0은 순차 버스트 순서를 요청하고, 1은 인터리브 버스트 순서를 요청한다.
* M2, M1, M0: 버스트 길이. 000, 001, 010 및 011 값은 각각 1, 2, 4 또는 8 워드의 버스트 크기를 지정한다. 각 읽기 (및 M9가 0인 경우 쓰기)는 버스트 중지 또는 다른 명령에 의해 중단되지 않는 한 해당 수의 액세스를 수행한다. 111 값은 전체 행 버스트를 지정한다. 버스트는 중단될 때까지 계속된다. 전체 행 버스트는 순차 버스트 유형에서만 허용된다.

이후 (더블 데이터 레이트) SDRAM 표준은 더 많은 모드 레지스터 비트를 사용하며 "확장 모드 레지스터"라고 불리는 추가 모드 레지스터를 제공한다. 레지스터 번호는 모드 레지스터 로드 명령 동안 뱅크 주소 핀에 인코딩된다. 예를 들어, DDR2 SDRAM은 13비트 모드 레지스터, 13비트 확장 모드 레지스터 No. 1 (EMR1), 5비트 확장 모드 레지스터 No. 2 (EMR2)를 가지고 있다.

## 자동 새로 고침
RAM 칩은 각 뱅크의 각 행을 열고 닫음으로써(활성화 및 프리차징) 새로 고칠 수 있다. 그러나 메모리 컨트롤러를 단순화하기 위해 SDRAM 칩은 "자동 새로 고침" 명령을 지원하며, 이 명령은 각 뱅크의 한 행에 대해 이러한 작업을 동시에 수행한다. SDRAM은 또한 모든 가능한 행을 반복하는 내부 카운터를 유지한다. 메모리 컨트롤러는 각 새로 고침 간격마다 충분한 수의 자동 새로 고침 명령(우리가 사용했던 예에서는 행당 하나, 8192개)만 발행하면 된다(tREF = 64ms가 일반적인 값). 이 명령이 발행될 때 모든 뱅크는 유휴 상태여야 한다(닫힌 상태, 프리차지된 상태).

## 저전력 모드
앞서 언급했듯이, 클럭 활성화(CKE) 입력은 SDRAM에 대한 클럭을 효과적으로 중지하는 데 사용될 수 있다. CKE 입력은 클럭의 각 상승 에지에서 샘플링되며, 낮으면 다음 클럭의 상승 에지는 CKE 확인 외의 모든 목적으로 무시된다. CKE가 낮은 상태를 유지하는 한, 클럭 속도를 변경하거나 클럭을 완전히 중지하는 것이 허용된다.

SDRAM이 동작을 수행하는 동안 CKE가 낮아지면, CKE가 다시 높아질 때까지 단순히 "정지" 상태를 유지한다.

SDRAM이 CKE가 낮아질 때 유휴 상태(모든 뱅크 프리차지, 진행 중인 명령 없음)이면, SDRAM은 자동으로 절전 모드로 진입하며, CKE가 다시 높아질 때까지 최소 전력을 소비한다. 이는 최대 새로 고침 간격 tREF보다 오래 지속되어서는 안 되며, 그렇지 않으면 메모리 내용이 손실될 수 있다. 이 시간 동안 추가적인 전력 절약을 위해 클럭을 완전히 멈추는 것은 합법적이다.

마지막으로, 자동 새로 고침 명령이 SDRAM으로 전송되는 동시에 CKE가 낮아지면, SDRAM은 자체 새로 고침 모드로 진입한다. 이는 절전 모드와 유사하지만, SDRAM은 온칩 타이머를 사용하여 필요에 따라 내부 새로 고침 사이클을 생성한다. 이 시간 동안 클럭을 멈출 수 있다. 자체 새로 고침 모드는 절전 모드보다 약간 더 많은 전력을 소비하지만, 메모리 컨트롤러를 완전히 비활성화할 수 있어 일반적으로 차이를 상쇄하고도 남는다.

배터리 구동 장치를 위해 설계된 SDRAM은 몇 가지 추가적인 절전 옵션을 제공한다. 하나는 온도 의존형 새로 고침으로, 온칩 온도 센서가 낮은 온도에서 새로 고침 속도를 낮추어 항상 최악의 경우 속도로 실행되는 것을 방지한다. 또 다른 하나는 선택적 새로 고침으로, 자체 새로 고침을 DRAM 배열의 일부로 제한한다. 새로 고침되는 비율은 확장 모드 레지스터를 사용하여 구성된다. 세 번째는 모바일 DDR(LPDDR) 및 LPDDR2에 구현된 "딥 절전" 모드로, 메모리를 무효화하고 종료하려면 전체 재초기화가 필요하다. 이는 CKE를 낮추면서 "버스트 종료" 명령을 전송하여 활성화된다.

## DDR SDRAM 프리페치 아키텍처
DDR SDRAM은 메모리의 공통 물리적 행에 있는 여러 데이터 워드에 빠르고 쉽게 접근할 수 있도록 프리페치 아키텍처를 사용한다.

프리페치 아키텍처는 DRAM에 대한 메모리 액세스의 특정 특성을 활용한다. 일반적인 DRAM 메모리 동작은 비트라인 프리차지, 행 액세스, 열 액세스 세 가지 단계로 이루어진다. 행 액세스는 DRAM 메모리 셀의 미세한 신호를 신중하게 감지하는 것을 포함하므로 읽기 동작의 핵심이며, 메모리 동작 중 가장 느린 단계이다. 그러나 한 번 행이 읽히면, 동일한 행에 대한 후속 열 액세스는 감지 증폭기가 래치 역할도 하므로 매우 빠를 수 있다. 참고로, 1 Gbit DDR3 장치의 한 행은 2,048 비트 너비이므로, 내부적으로 행 액세스 단계 동안 2,048비트가 2,048개의 개별 감지 증폭기로 읽어들여진다. 행 액세스는 DRAM 속도에 따라 50 ns가 걸릴 수 있지만, 열린 행에서 열 액세스는 10ns 미만이다.

기존 DRAM 아키텍처는 오랫동안 열린 행의 비트에 대한 빠른 열 액세스를 지원해 왔다. 2,048비트 너비의 행을 가진 8비트 너비의 메모리 칩의 경우, 행의 256개 데이터워드(2048/8) 중 어느 하나에 대한 액세스도 다른 행에 대한 개입 액세스가 발생하지 않는 한 매우 빠를 수 있다.

기존의 빠른 컬럼 접근 방식의 단점은 새로운 컬럼 주소를 각 추가 데이터 워드에 대해 보내야 한다는 점이었다. 주소 버스는 데이터 버스와 동일한 주파수에서 작동해야 했다. 프리페치 아키텍처는 단일 주소 요청으로 여러 데이터 워드를 얻을 수 있도록 하여 이 프로세스를 단순화한다.

프리페치 버퍼 아키텍처에서는 메모리 액세스가 행에서 발생할 때 버퍼가 행의 인접한 데이터 워드 세트를 잡고 개별 열 주소 요청 없이 IO 핀에서 빠르게 ("버스트"하여) 읽어낸다. 이는 CPU가 메모리에서 인접한 데이터 워드를 원한다고 가정하며, 실제로는 매우 자주 그렇다. 예를 들어, DDR1에서는 동일한 클럭 사이클에서 각 칩에서 두 개의 인접한 데이터 워드가 읽혀져 프리페치 버퍼에 저장된다. 그런 다음 각 워드는 클럭 사이클의 연속적인 상승 및 하강 에지에서 전송된다. 마찬가지로, 4n 프리페치 버퍼가 있는 DDR2에서는 4개의 연속적인 데이터 워드가 읽혀져 버퍼에 저장되는 동안 DDR 내부 클럭보다 두 배 빠른 클럭이 더 빠른 외부 클럭의 연속적인 상승 및 하강 에지에서 각 워드를 전송한다.

프리페치 버퍼 깊이는 코어 메모리 주파수와 IO 주파수 간의 비율로 생각할 수도 있다. 8n 프리페치 아키텍처(DDR3 등)에서는 IO가 메모리 코어보다 8배 빠르게 작동한다(각 메모리 액세스는 IO에서 8개의 데이터 워드 버스트를 발생시킨다). 따라서 200MHz 메모리 코어는 각각 8배 빠르게 작동하는 IO(초당 1600메가비트)와 결합된다. 메모리에 16개의 IO가 있다면 총 읽기 대역폭은 200MHz x 액세스당 8개 데이터 워드 x 16개 IO = 초당 25.6 기가비트(Gbit/s) 또는 초당 3.2 기가바이트(GB/s)가 된다. 여러 DRAM 칩이 있는 모듈은 그에 상응하는 더 높은 대역폭을 제공할 수 있다.

SDRAM의 각 세대는 프리페치 버퍼 크기가 다르다.

* DDR SDRAM의 프리페치 버퍼 크기는 2n(메모리 액세스당 두 개의 데이터 워드)이다.
* DDR2 SDRAM의 프리페치 버퍼 크기는 4n(메모리 액세스당 네 개의 데이터 워드)이다.
* DDR3 SDRAM의 프리페치 버퍼 크기는 8n(메모리 액세스당 여덟 개의 데이터 워드)이다.
* DDR4 SDRAM의 프리페치 버퍼 크기는 8n(메모리 액세스당 여덟 개의 데이터 워드)이다.
* DDR5 SDRAM의 프리페치 버퍼 크기는 8n이며, 16n의 추가 모드가 있다.

## 세대

### SDR
[섬네일|upright=1.25|[사운드 블라스터 X-Fi|사운드 블라스터 X-Fi 패탈리티 프로 사운드 카드의 64&nbsp;MB 사운드 메모리는 2개의 마이크론 48LC32M8A2 SDRAM 칩으로 구성되어 있다. 이 칩들은 133&nbsp;MHz (7.5&nbsp;ns 클럭 주기)로 작동하며 8비트 너비의 데이터 버스를 가지고 있다.]]

원래는 단순히 SDRAM으로 알려져 있었으며, 단일 데이터 속도 SDRAM은 클록 주기당 하나의 명령을 수락하고 하나의 데이터 워드를 전송할 수 있다. 칩은 다양한 데이터 버스 크기(가장 일반적으로 4, 8 또는 16비트)로 만들어지지만, 칩은 일반적으로 한 번에 64(비ECC) 또는 72(ECC)비트를 읽거나 쓰는 168핀 DIMM으로 조립된다.

데이터 버스의 사용은 복잡하여 복잡한 메모리 컨트롤러 회로가 필요하다. 이는 DRAM에 기록된 데이터는 쓰기 명령과 같은 주기에 제시되어야 하지만, 읽기 작업은 읽기 명령 후 2~3주기 후에 출력을 생성하기 때문이다. DRAM 컨트롤러는 데이터 버스가 읽기와 쓰기에 동시에 필요하지 않도록 보장해야 한다.

일반적인 SDR SDRAM 클록 속도는 66, 100, 133&nbsp;MHz(각각 15, 10, 7.5&nbsp;ns 주기)이며, 각각 PC66, PC100, PC133으로 표기된다. 최대 200&nbsp;MHz의 클록 속도를 사용할 수 있었다. 3.3&nbsp;V의 전압에서 작동한다.

이 유형의 SDRAM은 클럭 사이클당 하나의 데이터 워드만 전송되기 때문에(단일 데이터 속도) DDR 변형보다 느리다. 그러나 이 유형은 일반적으로 하나의 데이터 워드를 전송하는 데 2~3클럭이 걸렸던 이전 모델인 확장 데이터 출력 DRAM (EDO-RAM) 및 고속 페이지 모드 DRAM (FPM-RAM)보다 빠르다.

#### PC66
**PC66**은 합동 전자 장치 공학 협의회에서 정의한 내부 착탈식 컴퓨터 메모리 표준을 가리킨다. PC66은 66.66&nbsp;MHz의 클록 주파수에서 64비트 버스로 3.3&nbsp;V 전압으로 작동하는 동기식 DRAM이다. PC66은 168핀 DIMM 및 144핀 SO-DIMM 폼 팩터로 제공된다. 이론적 대역폭은 533&nbsp;MB/s이다. (1&nbsp;MB/s = 초당 1백만 바이트)

이 표준은 인텔 펜티엄 및 AMD K6 기반 PC에서 사용되었다. 또한 베이지 파워 맥 G3, 초기 아이북 및 파워북 G3에도 적용되었다. FSB가 66&nbsp;MHz인 많은 초기 인텔 셀러론 시스템에서도 사용되었다. PC100 및 PC133 표준에 의해 대체되었다.

#### PC100

섬네일|upright=1.25|DIMM: 168핀, 2개 노치
**PC100**은 합동 전자 장치 공학 협의회에서 정의한 내부 착탈식 컴퓨터 랜덤 액세스 메모리 표준이다. PC100은 100&nbsp;MHz 클럭 주파수에서 64비트 버스 폭으로 3.3&nbsp;V 전압에서 작동하는 동기식 DRAM을 나타낸다. PC100은 168핀 DIMM 및 144핀 SO-DIMM 폼 팩터로 제공된다. PC100은 PC66과 하위 호환되며 PC133 표준에 의해 대체되었다.

100MHz SDRAM 칩으로 구성된 모듈이 반드시 100MHz에서 작동할 수 있는 것은 아니다. PC100 표준은 메모리 모듈 전체의 기능을 명시한다. PC100은 많은 오래된 컴퓨터에서 사용된다. 1990년대 후반의 PC가 PC100 메모리를 가장 흔하게 사용했다.

#### PC133
**PC133**은 합동 전자 장치 공학 협의회에서 정의한 컴퓨터 메모리 표준이다. PC133은 133&nbsp;MHz 클럭 주파수에서 64비트 폭의 버스를 통해 3.3&nbsp;V 전압으로 작동하는 SDR SDRAM을 가리킨다. PC133은 168핀 DIMM 및 144핀 SO-DIMM 폼 팩터로 제공된다. PC133은 JEDEC이 승인한 가장 빠르고 마지막 SDR SDRAM 표준이며, 초당 1.066&nbsp;GB의 대역폭을 제공한다 ([133.33&nbsp;MHz * 64/8]=1.066&nbsp;GB/s). (1&nbsp;GB/s = 초당 10억 바이트) PC133은 PC100 및 PC66과 하위 호환된다.

### DDR

DRAM의 액세스 레이턴시는 DRAM 배열에 의해 근본적으로 제한되지만, DRAM은 각 내부 읽기 작업이 실제로 수천 비트의 행이므로 매우 높은 잠재적 대역폭을 가진다. 이 대역폭을 사용자에게 더 많이 제공하기 위해 더블 데이터 레이트 인터페이스가 개발되었다. 이 인터페이스는 클록 주기당 한 번씩 수락되는 동일한 명령을 사용하지만, 클록 주기당 두 개의 데이터 워드를 읽거나 쓴다. DDR 인터페이스는 클록 신호의 상승 에지와 하강 에지 모두에서 데이터를 읽고 쓰는 방식으로 이를 달성한다. 또한, SDR 인터페이스 타이밍에 대한 일부 사소한 변경이 사후적으로 이루어졌으며, 공급 전압이 3.3V에서 2.5V로 감소되었다. 결과적으로, DDR SDRAM은 SDR SDRAM과 하위 호환되지 않는다.

DDR SDRAM (때로는 더 명확하게 DDR1이라고도 함)은 최소 읽기 또는 쓰기 단위를 두 배로 늘린다. 모든 액세스는 최소한 두 개의 연속된 워드를 참조한다.

일반적인 DDR SDRAM 클럭 속도는 133, 166, 200MHz(각각 7.5, 6, 5ns/사이클)이며, 일반적으로 DDR-266, DDR-333, DDR-400(3.75, 3, 2.5ns/비트)으로 설명된다. 해당 184핀 DIMM은 PC-2100, PC-2700, PC-3200으로 알려져 있다. DDR-550(PC-4400)까지의 성능을 사용할 수 있다.

### DDR2

DDR2 SDRAM은 DDR SDRAM과 매우 유사하지만, 최소 읽기 또는 쓰기 단위를 다시 두 배로 늘려 연속 4개의 워드로 만든다. 버스 프로토콜도 고성능 동작을 허용하도록 단순화되었다. (특히 "버스트 종료" 명령이 삭제되었다.) 이를 통해 내부 RAM 동작의 클록 속도를 높이지 않고도 SDRAM의 버스 속도를 두 배로 늘릴 수 있다. 대신 내부 동작은 SDRAM보다 4배 넓은 단위로 수행된다. 또한, 대용량 RAM 칩에 8개의 뱅크를 허용하기 위해 추가 뱅크 주소 핀(BA2)이 추가되었다.

일반적인 DDR2 SDRAM 클럭 속도는 200, 266, 333 또는 400&nbsp;MHz(주기 5, 3.75, 3 및 2.5&nbsp;ns)이며, 일반적으로 DDR2-400, DDR2-533, DDR2-667 및 DDR2-800(주기 2.5, 1.875, 1.5 및 1.25&nbsp;ns)으로 설명된다. 해당 240핀 DIMM은 PC2-3200부터 PC2-6400까지로 알려져 있다. DDR2 SDRAM은 현재 533&nbsp;MHz 클럭 속도로 제공되며, 일반적으로 DDR2-1066으로 설명되며 해당 DIMM은 PC2-8500(제조사에 따라 PC2-8600이라고도 함)으로 알려져 있다. DDR2-1250(PC2-10000)까지의 성능을 사용할 수 있다.

내부 동작이 클럭 속도의 절반이므로, DDR2-400 메모리(내부 클럭 속도 100MHz)는 DDR-400(내부 클럭 속도 200MHz)보다 약간 높은 레이턴시를 가진다.

### DDR3

DDR3는 이 추세를 이어가며 최소 읽기 또는 쓰기 단위를 연속 8개 워드로 두 배로 늘렸다. 이를 통해 내부 작업의 클럭 속도를 변경하지 않고 너비만 변경하여 대역폭과 외부 버스 속도를 다시 두 배로 늘릴 수 있다. 800–1600&nbsp;M 전송/초(400–800&nbsp;MHz 클럭의 양쪽 에지)를 유지하려면 내부 RAM 배열은 초당 100–200&nbsp;M 페치를 수행해야 한다.

다시 말해, 두 배로 늘어날 때마다 단점은 레이턴시가 증가한다는 것이다. 모든 DDR SDRAM 세대와 마찬가지로 명령은 여전히 하나의 클럭 에지로 제한되며 명령 레이턴시는 클럭 사이클로 주어진다. 클럭 사이클은 일반적으로 인용되는 전송 속도의 절반이다(DDR3-800에서 CAS 레이턴시 8은 8/(400&nbsp;MHz) = 20 ns로, PC100 SDR SDRAM의 CAS2 레이턴시와 정확히 동일하다).

DDR3 메모리 칩은 상업적으로 제조되고 있으며, 이를 사용하는 컴퓨터 시스템은 2007년 하반기부터 출시되었으며, 2008년부터는 상당한 사용량을 보였다. 초기 클럭 속도는 400MHz 및 533MHz로, DDR3-800 및 DDR3-1066(PC3-6400 및 PC3-8500 모듈)으로 설명되었지만, 현재는 667MHz 및 800MHz로, DDR3-1333 및 DDR3-1600(PC3-10600 및 PC3-12800 모듈)으로 설명되는 것이 일반적이다. DDR3-2800(PC3 22400 모듈)까지의 성능을 사용할 수 있다.

### DDR4

DDR4 SDRAM은 DDR3 SDRAM의 후속작이다. 2008년 샌프란시스코에서 열린 인텔 개발자 포럼에서 공개되었으며, 2011년 시장에 출시될 예정이었다. 개발 기간 동안 출시 시기가 상당히 변경되었는데, 원래는 2012년에 출시될 것으로 예상되었으나, 이후 (2010년에는) 2015년에 출시될 것으로 예상되기도 했다. 그러나 2011년 초 샘플이 발표되었고, 제조업체들은 2012년에 상업 생산 및 시장 출시가 예상된다고 발표하기 시작했다. DDR4는 2015년경에 대중화되었는데, 이는 DDR2에서 DDR3로 대중 시장 전환에 약 5년이 걸린 것과 비슷하다.

DDR4 칩은 1.2&nbsp;V 이하에서 작동하며, 초당 20억 개 이상의 데이터 전송을 수행한다. 초기 주파수는 2133&nbsp;MHz로 도입될 것으로 예상되었으며, 2013년까지 잠재적으로 4266&nbsp;MHz로 상승하고 전압은 1.05&nbsp;V로 낮아질 것으로 예상되었다.

DDR4는 내부 프리페치 너비를 다시 두 배로 늘리지 않고 DDR3와 동일한 8n 프리페치를 사용한다. 따라서 데이터 버스를 바쁘게 유지하려면 여러 뱅크에서 읽기 작업을 인터리브해야 한다.

2009년 2월, 삼성은 40&nbsp;nm DRAM 칩을 검증했는데, 이는 DDR4 개발에 있어 "중요한 단계"로 간주된다. 왜냐하면 2009년 기준으로 현재 DRAM 칩은 50&nbsp;nm 공정으로 막 전환되기 시작했기 때문이다. 2011년 1월, 삼성은 30&nbsp;nm 2048&nbsp;MB DDR4 DRAM 모듈의 완성 및 테스트용 출시를 발표했다. 이 모듈은 1.2&nbsp;V에서 최대 2.13&nbsp;Gbit/s의 대역폭을 가지며, pseudo open drain 기술을 사용하고 동등한 DDR3 모듈보다 40% 적은 전력을 소비한다.

### DDR5

2017년 3월, JEDEC은 DDR5 표준이 개발 중임을 발표했지만, DDR4의 대역폭을 두 배로 늘리고 전력 소비를 줄이며 2018년에 표준을 발표한다는 목표 외에는 세부 정보를 제공하지 않았다. 이 표준은 2020년 7월 14일에 발표되었다.

## 실패한 후계자
DDR 외에도 SDR SDRAM을 계승할 여러 다른 메모리 기술이 제안되었다.

### 램버스 DRAM (RDRAM)
RDRAM은 DDR과 경쟁했던 독점 기술이었다. 상대적으로 높은 가격과 실망스러운 성능(높은 레이턴시와 DDR의 64비트 채널에 비해 좁은 16비트 데이터 채널로 인한)으로 인해 SDR SDRAM을 계승하려는 경쟁에서 패배했다.

### 동기식 링크 DRAM (SLDRAM)
SLDRAM은 더 높은 성능을 자랑하며 RDRAM과 경쟁했다. 1990년대 후반 SLDRAM 컨소시엄에 의해 개발되었다. SLDRAM 컨소시엄은 약 20개의 주요 DRAM 및 컴퓨터 산업 제조업체로 구성되었다. (SLDRAM 컨소시엄은 SLDRAM Inc.로 법인화되었다가 Advanced Memory International, Inc.로 이름을 변경했다.) SLDRAM은 개방형 표준이었으며 라이선스 비용을 요구하지 않았다. 사양은 200, 300 또는 400MHz 클럭 주파수에서 실행되는 64비트 버스를 요구했다. 이는 모든 신호가 동일한 라인에 있어 여러 라인의 동기화 시간을 피함으로써 달성된다. DDR SDRAM과 마찬가지로 SLDRAM은 이중 펌프 버스를 사용하여 400, 600, 또는 800&nbsp;MT/s의 유효 속도를 제공한다. (1&nbsp;MT/s&nbsp;=&nbsp;초당 10002 전송)

SLDRAM은 11비트 명령 버스(10개의 명령 비트 CA9:0과 하나의 명령 시작 FLAG 라인)를 사용하여 차동 명령 클럭(CCLK/CCLK#)의 4개 연속 에지에서 40비트 명령 패킷을 전송했다. SDRAM과 달리 칩별 선택 신호는 없었다. 각 칩에는 재설정 시 ID가 할당되었고, 명령에는 이를 처리해야 하는 칩의 ID가 포함되어 있었다. 데이터는 18비트(칩당) 데이터 버스를 통해 4 또는 8워드 버스트로 전송되었으며, 두 개의 차동 데이터 클럭(DCLK0/DCLK0# 및 DCLK1/DCLK1#) 중 하나를 사용했다. 표준 SDRAM과 달리 클럭은 데이터 소스(읽기 작업의 경우 SLDRAM 칩)에 의해 생성되어 데이터와 동일한 방향으로 전송되어 데이터 스큐를 크게 줄였다. DCLK 소스가 변경될 때 일시 정지가 필요하지 않도록 각 명령은 사용할 DCLK 쌍을 지정했다.

기본 읽기/쓰기 명령은 (첫 번째 단어의 CA9부터 시작하여) 다음과 같이 구성되었다.

* 장치 ID 9비트
* 명령 코드 6비트
* 뱅크 주소 3비트
* 행 주소 10 또는 11비트
* 행 또는 열 확장을 위한 예비 비트 5 또는 4비트
* 열 주소 7비트

개별 장치는 8비트 ID를 가졌다. 명령에서 전송된 ID의 9번째 비트는 여러 장치를 주소 지정하는 데 사용되었다. 정렬된 2의 거듭제곱 크기의 그룹은 모두 주소 지정될 수 있었다. 전송된 MSB가 설정되면 전송된 주소의 최하위 0비트까지의 모든 최하위 비트는 "이것이 나에게 주소 지정되었는가?" 목적을 위해 무시되었다. (ID8 비트가 실제로 ID0보다 중요도가 낮다고 간주되면, 유니캐스트 주소 일치가 이 패턴의 특수한 경우가 된다.)

읽기/쓰기 명령은 최상위 비트가 지워져 있었다.
* CMD5=0
* CMD4=1은 지정된 행을 열기(활성화)하고, CMD4=0은 현재 열린 행을 사용한다.
* CMD3=1은 8워드 버스트 전송, CMD3=0은 4워드 버스트
* CMD2=1은 쓰기, CMD2=0은 읽기
* CMD1=1은 이 액세스 후 행을 닫기, CMD1=0은 행을 열어두기
* CMD0은 사용할 DCLK 쌍(DCLK1 또는 DCLK0)을 선택한다.

사양에서 주목할 만한 누락은 바이트별 쓰기 활성화였다. 이는 CPU 캐시와 ECC 메모리를 사용하는 시스템을 위해 설계되었으며, 항상 캐시 라인의 배수로 쓰기 작업을 수행한다.

추가 명령(CMD5 설정 시)은 데이터 전송 없이 행을 열고 닫고, 새로 고침 작업을 수행하고, 구성 레지스터를 읽거나 쓰고, 기타 유지 관리 작업을 수행했다. 이러한 명령 대부분은 추가 4비트 하위 ID(기본 ID와 동일한 다중 대상 인코딩을 사용하여 5비트로 전송됨)를 지원했는데, 이는 병렬로 연결되어 항상 동시에 읽기/쓰기되는 장치를 구분하는 데 사용될 수 있었다.

다양한 장치 타이밍 매개변수를 제어하기 위한 8비트 제어 레지스터와 32비트 상태 레지스터가 여러 개 있었다.

### 가상 채널 메모리 (VCM) SDRAM
VCM은 NEC가 설계했지만 라이선스 비용 없이 개방형 표준으로 출시된 독점적인 SDRAM 유형이었다. 표준 SDRAM과 핀 호환되지만 명령이 다르다. 이 기술은 VCM이 RDRAM만큼 비싸지 않았기 때문에 잠재적인 경쟁 상대였다. 가상 채널 메모리(VCM) 모듈은 기계적 및 전기적으로 표준 SDRAM과 호환되므로, 둘 다에 대한 지원은 메모리 컨트롤러의 기능에만 달려 있다. 1990년대 후반, 인기 있는 VIA KX133 및 KT133과 같은 여러 PC 노스브리지 칩셋에 VCSDRAM 지원이 포함되었다.

VCM은 DRAM 뱅크의 감지 증폭기 행과 데이터 I/O 핀 사이에 각각 1/4 행 "세그먼트" 크기의 16개 "채널" 버퍼로 구성된 SRAM 캐시를 삽입한다. VCSDRAM에 고유한 "프리페치" 및 "복원" 명령은 DRAM의 감지 증폭기 행과 채널 버퍼 간에 데이터를 복사하는 반면, SDRAM의 읽기 및 쓰기 명령에 해당하는 명령은 액세스할 채널 번호를 지정한다. 따라서 읽기 및 쓰기 작업은 DRAM 배열의 현재 활성 상태와 독립적으로 수행될 수 있으며, 한 번에 4개의 전체 DRAM 행이 액세스를 위해 "열려" 있는 것과 동일하다. 이는 표준 2뱅크 SDRAM에서 가능한 두 개의 열린 행보다 향상된 것이다. (실제로 일부 작업에 사용되는 17번째 "더미 채널"이 있다.)

VCSDRAM에서 읽으려면 활성 명령 후 "프리페치" 명령이 필요하며, 이는 감지 증폭기 배열에서 채널 SDRAM으로 데이터를 복사한다. 이 명령은 뱅크, 2비트 열 주소(행의 세그먼트 선택용), 4비트 채널 번호를 지정한다. 이 작업이 수행되면 채널 버퍼에 대한 읽기 명령이 계속되는 동안 DRAM 배열을 프리차지할 수 있다. 쓰려면 먼저 데이터를 채널 버퍼에 기록한 다음(일반적으로 프리페치 명령을 사용하여 이전에 초기화됨), 프리페치 명령과 동일한 매개변수를 가진 복원 명령이 채널에서 감지 증폭기 배열로 데이터 세그먼트를 복사한다.

활성(열린) 행에 대해 수행되어야 하는 일반 SDRAM 쓰기와 달리, 복원 명령이 발행될 때 VCSDRAM 뱅크는 프리차지(닫힌)되어야 한다. 복원 명령 직후의 활성 명령은 DRAM 행에 대한 쓰기 작업을 완료하도록 지정한다. 또한, 현재 열린 행에 대한 쓰기를 허용하는 17번째 "더미 채널"이 있다. 이 채널은 읽을 수 없지만, 프리페치되거나 기록되거나 감지 증폭기 배열로 복원될 수 있다.

일반적으로 세그먼트는 프리페치된 것과 동일한 메모리 주소로 복원되지만, 채널 버퍼는 크고 정렬된 메모리 블록을 매우 효율적으로 복사하거나 지우는 데 사용될 수도 있다. (4분의 1 행 세그먼트 사용은 DRAM 셀이 SRAM 셀보다 좁다는 사실에 기인한다.) SRAM 비트는 4개의 DRAM 비트 너비로 설계되었으며, 이들이 걸쳐 있는 4개의 DRAM 비트 중 하나에 편리하게 연결된다. 추가 명령은 한 쌍의 세그먼트를 한 쌍의 채널로 프리페치하며, 선택적 명령은 프리페치, 읽기 및 프리차지를 결합하여 무작위 읽기의 오버헤드를 줄인다.

위는 JEDEC 표준 명령이다. 초기 칩은 더미 채널이나 쌍 프리페치를 지원하지 않았으며, 프리차지에 다른 인코딩을 사용한다.

여기에 그림으로 표시된 13비트 주소 버스는 최대 128&nbsp;Mbit 장치에 적합하다. 이 장치는 8,192개 행과 8,192개 열로 구성된 두 개의 뱅크를 가지고 있다. 따라서 행 주소는 13비트이고, 세그먼트 주소는 2비트이며, 세그먼트의 2,048비트(256바이트)에서 한 바이트를 선택하는 데 8비트 열 주소가 필요하다.

## 동기식 그래픽스 램 (SGRAM)
동기식 그래픽스 RAM (SGRAM)은 그래픽 어댑터를 위한 SDRAM의 특수 형태이다. 비디오 카드에서 발견되는 텍스처 메모리 및 프레임버퍼와 같은 그래픽 관련 작업을 위해 설계되었다. 비트 마스킹(다른 비트 평면에 영향을 주지 않고 지정된 비트 평면에 쓰기) 및 블록 쓰기(메모리 블록을 단일 색상으로 채우기)와 같은 기능을 추가한다. VRAM 및 WRAM과 달리 SGRAM은 단일 포트이다. 그러나 동시에 두 개의 메모리 페이지를 열 수 있어 다른 비디오 RAM 기술의 듀얼 포트 특성을 시뮬레이션한다.

가장 초기에 알려진 SGRAM 메모리는 1994년으로 거슬러 올라가는 8Mbit 칩이다. 1994년 11월에 출시된 히타치 HM5283206과 1994년 12월에 출시된 NEC μPD481850이 그것이다. SGRAM을 사용한 가장 초기에 알려진 상업용 장치는 소니의 플레이스테이션 (PS) 비디오 게임 콘솔로, 1995년 12월에 출시된 일본 SCPH-5000 모델부터 NEC μPD481850 칩을 사용했다.

### 그래픽 더블 데이터 레이트 SDRAM (GDDR SDRAM)

그래픽스 더블 데이터 레이트 SDRAM (GDDR SDRAM)은 GPU의 주 메모리로 사용하기 위해 설계된 특수 DDR SDRAM의 한 종류이다. GDDR SDRAM은 DDR3와 같은 일반적인 DDR SDRAM과는 구별되지만, 일부 핵심 기술을 공유한다. 주요 특징은 DRAM 코어와 I/O 인터페이스 모두에서 더 높은 클록 주파수를 가져 GPU에 더 큰 메모리 대역폭을 제공한다는 것이다. 2025년 현재 GDDR은 GDDR2, GDDR3, GDDR4, GDDR5, GDDR5X, GDDR6, GDDR6X, GDDR6W, GDDR7 등 9개 연속 세대가 있다.

GDDR은 처음에는 DDR SGRAM으로 알려졌다. 1998년 삼성전자가 16Mbit 메모리 칩으로 상업적으로 출시했다.

## 고대역 메모리 (HBM)

고대역 메모리 (HBM)는 삼성전자, AMD, SK하이닉스의 3D 스택 SDRAM용 고성능 RAM 인터페이스이다. 고성능 그래픽 가속기 및 네트워크 장치와 함께 사용하도록 설계되었다. 최초의 HBM 메모리 칩은 2013년 SK하이닉스에서 생산되었다.

## 타임라인

### SDRAM

 

### SGRAM
 

### HBM

## 같이 보기
* GDDR (그래픽스 DDR) 및 하위 유형인 GDDR2, GDDR3, GDDR4, GDDR5, GDDR6, GDDR7
* 장치 대역폭 목록
* 직렬 프레즌스 검출 - SDRAM 모듈의 타이밍 데이터가 포함된 EEPROM
* SDRAM 튜토리얼 - 텔아비브 대학교 학생들이 만든 플래시 웹사이트
* 메릴랜드 대학교 석사 논문인 고성능 DRAM 시스템 설계 제약 사항 및 고려 사항에서 SDRAM 아키텍처/용어 및 명령 타이밍 종속성에 대한 간결하지만 철저한 검토.

## 각주

## 외부 링크
* SDRAM (메모리)에 대해 항상 알고 싶었지만, 묻기 두려웠던 모든 것, 2010년 8월, 아난드테크
* RAM 타이밍 이해하기, 2011년 5월, 하드웨어 시크릿
* PC SDRAM 사양, Rev 1.7
* 133&nbsp;MHz PC133 SDRAM SO-DIMM 사양
* PC SDRAM 직렬 프레즌스 검출 (SPD) 사양, Rev 1.2B


분류:대한민국의 발명품