XDR DRAM
XDR DRAM![]() |
XDR DRAM(Extreme Data Rate Dynamic Random-Access Memory)은 고성능 다이내믹랜덤 액세스메모리 인터페이스입니다RDRAM을 기반으로 하고 있으며, 이를 계승하고 있습니다.경합하는 테크놀로지에는 DDR2와 GDDR4가 있습니다.
개요
XDR은 소형 고대역폭 소비자 시스템, 고성능 메모리 애플리케이션 및 하이엔드 GPU에 효과적이도록 설계되었습니다.RDRAM의 초기 형식을 괴롭혔던 비정상적으로 긴 지연 문제를 해소합니다.또한 XDR DRAM은 핀 단위 대역폭에 중점을 두고 있기 때문에 PCB 생산에 대한 추가 비용 제어에 도움이 될 수 있습니다.이는 같은 양의 대역폭에 필요한 레인이 적기 때문입니다.램버스는 그 기술에 대한 권리를 가지고 있다.XDR은 Sony가 PlayStation 3 [1]콘솔에서 사용합니다.
기술사양
성능
- 400MHz의 초기 클럭환율
- Octal Data Rate(ODR; 옥탈 데이터 레이트): 레인당 클럭사이클당8비트
- 각 칩은 8, 16 또는 32개의 프로그래밍 가능한 레인을 제공하며 900MHz(7.2GHz 유효)[2]에서 최대 230.4Gb/s(28.8GB/s)를 제공합니다.
특징들
- 양방향 Differentional Rambus Signaling Level(DRSL; Differential Rambus 시그널링 레벨)
- 프로그램 가능한 온칩 종단
- 적응 임피던스 매칭
- 8개의 뱅크 메모리 아키텍처
- 최대 4개의 뱅크 인터리브 트랜잭션(전체 대역폭)
- 포인트 투 포인트 데이터 인터커넥트
- 칩스케일패키지
- 동적 요청 스케줄링
- 최대 효율을 실현하는 쓰기 후 조기 읽기 지원
- 오버헤드 리프레시 불필요
전력 요건
- 1.8 V Vdd
- 프로그램 가능한 초저전압 DRSL 200mV 스윙
- 저전력 PLL/DLL 설계
- 전원 차단 셀프 리프레시 지원
- 동적 클럭 게이트를 통한 동적 데이터 폭 지원
- 핀 단위 I/O 전원 차단
- 서브 페이지 활성화 지원
시스템 설계의 용이성
- 비트당 FlexPhase 회로는 2.5ps 해상도를 보상합니다.
- XDR 인터커넥트는 최소 핀 수를 사용합니다.
레이텐시
- 1.25/2.0/2.5/3.33 ns 요구 패킷
프로토콜
XDR RAM 칩의 고속 신호는 차동 클럭 입력(마스터로부터의 클럭, CFM/CFMN으로부터의 클럭), 12비트의 싱글 엔드 요구/명령 버스(RQ11..0) 및 최대 16비트 폭의 양방향 차동 데이터 버스(DQ15..0/DQN..0)입니다.요청 버스는 여러 개의 메모리 칩에 병렬로 연결할 수 있지만 데이터 버스는 포인트 투 포인트이며 RAM 칩은 하나만 연결할 수 있습니다.고정 폭의 메모리 컨트롤러로 다른 양의 메모리를 지원하기 위해 칩은 프로그래밍 가능한 인터페이스 폭을 가지고 있습니다.32비트 와이드 DRAM 컨트롤러는 2개의 16비트칩을 지원하거나 각각8비트의 데이터를 제공하는4개의 메모리칩 또는 2비트인터페이스로 구성된 최대 16개의 칩에 접속할 수 있습니다.
또, 각 칩에는, 그 기능을 판단해, 인터페이스를 설정하기 위해서 사용되는 저속 시리얼 버스가 있습니다.이것은, 리셋 회선(RST), 시리얼 커맨드 입력(CMD), 시리얼 클럭(SCK), 및 데이지 체인 접속되어 최종적으로 메모리 컨트롤러의 1개의 핀에 접속되는 시리얼 데이터 입력/출력 회선(SDI 및 SDO)의 3개의 공유 입력으로 구성됩니다.
싱글 엔드 라인은 모두 액티브-로우이며, 아사트 신호 또는 논리 1은 저전압으로 표시됩니다.
요구 버스는 클럭 입력에 대해 2배의 데이터 레이트로 동작합니다.연속된 2개의 12비트 전송(CFM의 하강 엣지에서 시작)에 의해 24비트명령어 패킷이 생성됩니다.
데이터 버스는 클럭의 8배 속도로 작동합니다. 400MHz 클럭은 3200MT/s를 생성합니다.모든 데이터 읽기 및 쓰기는 2 클럭 사이클 동안 16 전송 버스트에서 작동합니다.
요청 패킷 형식은 다음과 같습니다.
시계 엣지 | 조금 | NOP | 열 읽기/쓰기 | 보정/전원 절단 | 프리차지/갱신 | 행 활성화 | 마스크된 쓰기 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
조금 | 조금 | 묘사 | 조금 | 묘사 | 조금 | 묘사 | 조금 | 묘사 | 조금 | 묘사 | ||||||||
↓ | RQ11 | 0 | 0 | COL 연산 코드 | 0 | COLX opcode | 0 | ROWP 연산 코드 | 0 | ROWA 운영 코드 | 1 | COLM opcode | ||||||
↓ | RQ10 | 0 | 0 | 0 | 0 | 1 | M3 | 마스크 쓰기 로우 비트 | ||||||||||
↓ | RQ9 | 0 | 0 | 1 | 1 | R9 | 행 주소 하이비트 | M2 | ||||||||||
↓ | RQ8 | 0 | 1 | 0 | 1 | R10 | M1 | |||||||||||
↓ | RQ7 | x | WRX | 쓰기/읽기 비트 | x | 예약되어 있다 | POP1 | 프리차지 지연(0 ~3) | R11 | M0 | ||||||||
↓ | RQ6 | x | C8 | 컬럼 어드레스 하이비트 | x | POP0 | R12 | 예약되어 있다 | C8 | 컬럼 어드레스 하이비트 | ||||||||
↓ | RQ5 | x | C9 | x | x | 예약되어 있다 | R13 | C9 | ||||||||||
↓ | RQ4 | x | C10 | 예약되어 있다 | x | x | R14 | C10 | 예약되어 있다 | |||||||||
↓ | RQ3 | x | C11 | XOP3 | 서브오퍼코드 | x | R15 | C11 | ||||||||||
↓ | RQ2 | x | BC2 | 은행주소 | XOP2 | BP2 | 프리차지 뱅크 | BA2 | 은행주소 | BC2 | 은행주소 | |||||||
↓ | RQ1 | x | BC1 | XOP1 | BP1 | BA1 | BC1 | |||||||||||
↓ | RQ0 | x | BC0 | XOP0 | BP0 | BA0 | BC0 | |||||||||||
↑ | RQ11 | x | DELC | 명령 지연(0 ~1) | x | 예약되어 있다 | POP2 | 프리차지 활성화 | 델라 | 명령 지연(0 ~1) | M7 | 마스크 쓰기 하이비트 | ||||||
↑ | RQ10 | x | x | 예약되어 있다 | x | ROP2 | Refresh 명령어 | R8 | 행 주소 로우 비트 | M6 | ||||||||
↑ | RQ9 | x | x | x | ROP1 | R7 | M5 | |||||||||||
↑ | RQ8 | x | x | x | ROP0 | R6 | M4 | |||||||||||
↑ | RQ7 | x | C7 | 컬럼 어드레스 로우 비트 | x | DELR1 | 리프레시 지연(0 ~3) | R5 | C7 | 컬럼 어드레스 로우 비트 | ||||||||
↑ | RQ6 | x | C6 | x | DELR0 | R4 | C6 | |||||||||||
↑ | RQ5 | x | C5 | x | x | 예약되어 있다 | R3 | C5 | ||||||||||
↑ | RQ4 | x | C4 | x | x | R2 | C4 | |||||||||||
↑ | RQ3 | x | SC3 | 서브컬럼 어드레스 | x | x | R1 | SC3 | 서브컬럼 어드레스 | |||||||||
↑ | RQ2 | x | SC2 | x | BR2 | 리프레시 뱅크 | R0 | SC2 | ||||||||||
↑ | RQ1 | x | SC1 | x | BR1 | SR1 | 서브행 주소 | SC1 | ||||||||||
↑ | RQ0 | x | SC0 | x | BR0 | SR0 | SC0 |
다양한 명령어 사이에 경과할 필요가 있는 최소 시간을 제공하는 타이밍 제약이 다수 존재합니다(「Dynamic Random-Access Memory」메모리 「Memory 타이밍」을 참조).이러한 제약 조건을 송신하는 DRAM 컨트롤러는, 이러한 조건을 모두 만족하고 있는 것을 확인할 필요가 있습니다.
일부 명령어에는 지연 필드가 포함되어 있습니다.이러한 명령어에는 지정된 클럭사이클 수만큼 해당 명령어의 효과가 지연됩니다.이것에 의해, 같은 클럭 사이클로 복수의 커맨드를(다른 뱅크에 대해서) 유효하게 할 수 있습니다.
Row activate 명령어
이는 표준 SDRAM의 활성화 명령과 동일하게 작동하며 뱅크의 감지 앰프 어레이에 로드되는 행 주소를 지정합니다.전력을 절약하기 위해 감지 앰프 어레이의 일부만 활성화하도록 칩을 구성할 수 있습니다.이 경우 SR1..0 비트는 활성화할 행의 절반 또는 1/4을 지정하며, 다음 읽기/쓰기 명령의 열 주소는 해당 부분으로 제한되어야 합니다(새로 고침 작업에서는 항상 전체 행을 사용합니다).
읽기/쓰기 명령어
이러한 명령어는 표준 SDRAM의 읽기 또는 쓰기 명령과 유사하게 작동하며 열 주소를 지정합니다.데이터는 쓰기 명령어(일반적으로 3) 후 몇 사이클 후에 칩에 제공되며 읽기 명령어(일반적으로 6) 후 몇 사이클 후에 칩에 의해 출력됩니다.다른 형태의 SDRAM과 마찬가지로 DRAM 컨트롤러는 데이터 버스가 동시에 양방향으로 사용하도록 스케줄되지 않도록 해야 합니다.데이터는 항상 2클럭 사이클의 16 전송 버스트로 전송됩니다.따라서 x16 디바이스의 경우 버스트당 256비트(32바이트)가 전송됩니다.
칩이 16비트 미만의 데이터 버스를 사용하고 있는 경우, 1개 이상의 서브컬럼 어드레스 비트가 데이터 버스 상에 제시되는 컬럼의 부분을 선택하기 위해 사용된다.데이터 버스의 폭이 8비트인 경우 SC3를 사용하여 읽기 데이터의 어느 절반에 액세스해야 하는지 식별하고, 데이터 버스가 4비트인 경우 SC3 및 SC2를 사용합니다.
기존의 SDRAM과는 달리 버스트 내에서 데이터가 공급되는 순서를 선택할 수 있는 규정은 없습니다.따라서 중요한 단어 우선 읽기를 수행할 수 없습니다.
마스크된 쓰기 명령어
masked write 명령은 일반 쓰기와 유사하지만 명령 지연은 허용되지 않으며 마스크 바이트가 제공됩니다.이를 통해 어떤 8비트필드를 쓸지 제어할 수 있습니다.이것은 기입하는 바이트를 나타내는 비트맵이 아닙니다.쓰기 버스트의 32바이트에는 충분히 크지 않습니다.DRAM 컨트롤러가 쓰기 전 바이트를 채우는 비트패턴입니다DRAM 컨트롤러는 기입되는 다른 바이트에는 표시되지 않는 패턴을 검출합니다.버스트에는 256개의 패턴이 있고 32바이트밖에 없기 때문에 하나를 찾는 것은 간단합니다.여러 장치가 병렬로 연결되어 있는 경우에도 버스가 최대 128비트 폭이면 마스크 바이트를 항상 찾을 수 있습니다.(이렇게 하면 버스트당 256바이트가 생성되지만 마스크된 write 명령어는 그 중 적어도1개가 기입되지 않는 경우에만 사용됩니다).
각 바이트는 특정 클럭사이클 동안 1개의 데이터라인을 통해 전송되는8개의 연속 비트입니다.클럭 사이클 중에 전송되는 첫 번째 데이터 비트에 M0이 일치하고 마지막 비트에 M7이 일치한다.
또한 이 규칙은 중요한 워드 우선 읽기를 수행하는 데 방해가 됩니다. 모든 워드는 전송된 첫 번째 8비트의 비트를 포함해야 합니다.
프리차지/갱신 명령어
이 명령어는 기존 SDRAM의 프리차지 및 리프레시 명령어 조합과 비슷합니다.POPx 및 BPx 비트는 프리차지 동작을 지정하고 ROPx, DELRx 및 BRx 비트는 리프레시 동작을 지정합니다.각각 개별적으로 유효하게 할 수 있습니다.유효하게 되어 있는 경우는, 각각 다른 커맨드 지연이 발생할 가능성이 있기 때문에, 다른 뱅크로 행선지를 지정할 필요가 있습니다.
프리차지 명령어는 한 번에 1개의 뱅크에만 송신할 수 있습니다.기존 SDRAM과는 달리 "프리차지 all banks" 명령어는 없습니다.
refresh 명령어는 기존의 SDRAM과는 다릅니다."refresh all banks" 명령어는 없으며, 리프레시 동작은 메모리 컨트롤러에 의해 타이밍이 결정되도록 별도의 활성화 동작과 프리차지 동작으로 분할됩니다.리프레시 카운터는 컨트롤러에서도 프로그래밍할 수 있습니다.조작은 다음과 같습니다.
- 000: NOPR 새로 고침 작업 실행 안 함
- 001: REFP 새로 고침 프리차지. 선택한 뱅크에서 새로 고침 작업을 종료합니다.
- 010: REFA Refresh 활성화, REFH/M/L 레지스터와 새로 고치기 위해 선택한 뱅크로 선택한 행을 활성화합니다.
- 011: REFI Refresh & increment;(REFA의 경우), 그러나 REFH/M/L 레지스터도 증가합니다.
- 100: LRR0 Load Refresh Register low. RQ7–0을 Refresh 카운터 REFL의 하위8비트에 복사합니다.명령 지연 없음.
- 101: LRR1 Load Refresh Register middle. RQ7–0을 리프레시 카운터 REFM의 중간8비트에 복사합니다.명령 지연 없음.
- 110: LRR2 Load Refresh Register high.RQ7–0을 리프레시 카운터 REFH의 상위8비트에 복사합니다(실장되어 있는 경우).명령 지연 없음.
- 111 예약되어 있다
Calibrate/powerdown 명령어
이 명령어는 XOPx 필드에 의해 결정되는 다양한 기능을 수행합니다.16개의 가능성이 있지만 실제로는 4개만 사용됩니다.세 개의 하위 명령이 출력 드라이버 교정을 시작 및 중지합니다(100ms마다 정기적으로 수행해야 함).
네 번째 하위 명령은 칩을 전원 차단 모드로 설정합니다.이 모드에서는 내부 새로고침이 실행되며 고속 데이터 행은 무시됩니다.저속 시리얼 버스를 사용하여 웨이크업해야 합니다.
저속 시리얼 버스
XDR DRAM은 저속 시리얼버스를 사용하여 프로빙 및 설정됩니다.RST, SCK 및 CMD 신호는 컨트롤러에 의해 모든 칩에 병렬로 구동됩니다.SDI 회선과 SDO 회선은 데이지 체인으로 연결되어 마지막 SDO 출력이 컨트롤러에 접속되어 첫 번째 SDI 입력이 하이(logic 0)로 묶여 있습니다.
리셋시에, 각 칩은 SDO 핀을 로우(1)로 구동합니다.리셋이 해제되면 일련의 SCK 펄스가 칩으로 전송됩니다.각 칩은 SDI 입력이 높은(0) 것을 확인한 후 SDO 출력을 1사이클 높게(0) 구동합니다.또, 리셋 해제로부터 SDI 입력이 높은 것을 확인할 때까지의 경과 사이클수를 카운트 해, 그 카운트를 내부 칩 ID 레지스터에 카피한다.컨트롤러가 CMD 회선을 통해 송신하는 명령어에는 칩 ID 필드와 일치해야 하는 주소가 포함되어 있습니다.
명령어의 일반적인 구조
각 명령어는 8비트 주소를 사용하여 단일 8비트 레지스터를 읽거나 씁니다.최대 256개의 레지스터를 사용할 수 있지만 현재 할당되어 있는 것은 1 ~31의 범위뿐입니다.
통상 CMD 행은 하이인 채로(로직0) SCK 펄스는 영향을 주지 않습니다.명령을 전송하려면 CMD 회선을 통해 32비트 시퀀스가 클럭아웃됩니다.
- 4비트
1100
명령어 시작 신호. - 읽기/쓰기 비트0이면 읽기, 1이면 쓰기입니다.
- 싱글/브로드캐스트 비트0 의 경우는, 일치하는 ID 를 가지는 디바이스만이 선택됩니다.1의 경우 모든 디바이스에서 명령어가 실행됩니다.
- 시리얼 디바이스 ID의 6비트디바이스 리셋 시 디바이스 ID는 0부터 자동으로 할당됩니다.
- 레지스터 주소의 8비트
- "0"의 단일 비트.이를 통해 읽기 요청을 처리하고 읽기 시 SDO 출력을 활성화할 수 있습니다.
- 8비트 데이터이것이 읽기 명령일 경우 제공된 비트는 0이어야 하며 레지스터 값은 선택한 칩의 SDO 핀에 생성됩니다.선택되지 않은 칩은 모두 SDI 입력을 SDO 출력에 연결하므로 컨트롤러가 값을 볼 수 있습니다.
- "0"의 단일 비트.이것으로 명령어가 종료되어 SDO 출력을 디세블로 할 시간이 주어집니다.
「 」를 참조해 주세요.
레퍼런스
- ^ AnandTech: 셀 프로세서의 Rambus 및 인텔의 듀얼 코어 발표
- ^ 세계에서 가장 빠른 7.2를 생산하는 ElpidaGHz XDR DRAM
- ^ 2011년 7월 24일 Wayback Machine(Rambus)에서 아카이브된 XDR™ 아키텍처
외부 링크
- Rambus XDR 제품 페이지
- 램버스 플렉스IO CPU Integrate,
- rface는 XDR 인터페이스를 제공합니다.
- Qimonda XDR(TM) DRAM 제품