KR20090080538A - 고속 직렬 버퍼를 포함하는 메모리 시스템 - Google Patents

고속 직렬 버퍼를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20090080538A
KR20090080538A KR1020097011022A KR20097011022A KR20090080538A KR 20090080538 A KR20090080538 A KR 20090080538A KR 1020097011022 A KR1020097011022 A KR 1020097011022A KR 20097011022 A KR20097011022 A KR 20097011022A KR 20090080538 A KR20090080538 A KR 20090080538A
Authority
KR
South Korea
Prior art keywords
data
memory controller
memory
units
serial
Prior art date
Application number
KR1020097011022A
Other languages
English (en)
Inventor
게랄드 알. 탈보트
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20090080538A publication Critical patent/KR20090080538A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Transfer Systems (AREA)

Abstract

메모리 시스템은 하나 이상의 메모니 유닛들을 포함하며, 각각의 메모리 유닛은 하나 이상의 메모리 디바이스들과 병렬 배선을 포함한다. 상기 시스템은 또한 메모리 제어기와 메모리 유닛들 간의 데이터 전송을 제어할 수 있는 메모리 제어기를 포함한다. 메모리 시스템은 병렬 배선을 통해 메모리 유닛들에 연결되는 하나 이상의 버퍼 유닛들을 더 포함한다. 버퍼 유닛들 각각은 각각의 직렬 배선을 통해 메모리 제어기에 연결된다. 각각의 버퍼 유닛은, 메모리 제어기로부터 명령 정보를 수신함에 응답하여, 각각의 직렬 배선을 통해 메모리 제어기로부터 데이터를 수신하며, 또한 병렬 배선을 통해 상기 데이터를 메모리 유닛들로 전송한다. 메모리 제어기는 또한, 상기 버퍼 유닛들로부터 수신된 정보에 근거하여 전송 데이터의 신호 특성들을 조정함으로써 메모리 제어기와 버퍼 유닛들 간의 데이터 전달을 비대칭적으로 제어할 수 있다.

Description

고속 직렬 버퍼를 포함하는 메모리 시스템{MEMORY SYSTEM INCLUDING A HIGH-SPEED SERIAL BUFFER}
본 발명은 컴퓨터 메모리 시스템에 관한 것이며, 보다 상세하게는 메모리 제어기와 메모리 유닛 간의 데이터 전달(data transfer)에 관한 것이다.
컴퓨터 시스템은 다양한 종류의 시스템 메모리를 사용한다. 한가지 일반적인 시스템 메모리 종류는 착탈가능형(removable) 메모리 모듈들을 사용하여 구현된다. 메모리 모듈들은 서로 다른 종류 및 구성을 지닌다. 그러나 일반적으로, 메모리 모듈은 하나의 에지 커넥터(edge connector)와 다수의 메모리 디바이스들을 구비한 인쇄 회로 기판으로 구현될 수 있다. 상기 메모리 모듈은 마더보드 또는 다른 시스템 보드상에 위치한 소켓에 접속(plug in)될 수 있다. 다른 메모리 모듈들이 존재하지만, 일반적으로 사용되는 메모리 모듈은 듀얼 인라인 메모리 모듈(DIMM)로 알려져 있다. 다른 시스템들에서는, 메모리 디바이스들이 비착탈형(non-removable) 일 수 있으며 마더보드 또는 시스템 보드에 직접 장착될 수 있다.
최근, 컴퓨터 시스템 프로세서의 속도 및 성능은 빠르게 향상되였다. 그러나, 시스템 메모리 성능은 일반적으로 그보다 뒤처진다. 따라서, 일부 시스템 성능 개선이 시스템 메모리의 성능에 의해 제한될 수 있다. 그러므로, 시스템 설계자에 게 시스템 메모리 대역폭 및 용량에서의 개선은 중요한 고려대상일 수 있다.
시스템 메모리 성능의 개선이 가능하지만, 이러한 개선은 때때로 비용이 많이 든다. 그러므로, 저비용을 유지하면서 시스템 메모리 대역폭 및 용량을 개선하는 것이 바람직할 것이다.
고속 직렬 버퍼(high-speed serial buffer)를 포함하는 메모리 시스템의 다양한 실시예들이 개시된다. 일 실시예에서, 상기 메모리 시스템은 예를 들어, 각각 하나 이상의 메모리 디바이스들과 병렬 배선을 포함하는 듀얼 인라인 메모리 모듈(DIMM)과 같은 하나 이상의 메모리 유닛들을 포함한다. 메모리 시스템은 또한 메모리 제어기와 메모리 유닛들 간의 데이터 전달(data transfer)을 제어할 수 있는 메모리 제어기를 포함한다. 메모리 시스템은 병렬 배선을 통해 메모리 유닛들로 연결되는 하나 이상의 버퍼 유닛들을 더 포함한다. 각각의 버퍼 유닛은, 메모리 제어기로부터 명령 정보를 수신함에 응답하여, 각각의 직렬 배선을 통해 메모리 제어기로부터 데이터를 수신하며, 또한 상기 병렬 배선을 통해 그 데이터를 메모리 유닛들로 전송할 수 있다. 메모리 제어기는 또한, 버퍼 유닛들로부터 수신한 정보에 근거하여 전송 데이터(transmitted data)의 신호 특성들을 조정함으로써 메모리 제어기와 버퍼 유닛들 간의 데이터 전달을 비대칭적으로 제어하도록 되어 있을 수 있다.
일 구체적인 구현예에서, 각각의 직렬 배선은 복수의 차동 양방향 데이터 신호 경로들을 포함한다. 각각의 차동 양방향 데이터 신호 경로들은 주어진 버퍼 유닛과 메모리 제어기 사이에서 데이터를 운반(convey)할 수 있다. 추가적으로, 병렬 배선은 그룹들로 정렬된 복수의 양방향 데이터 신호 경로들을 포함한다. 각각의 그룹은 주어진 버퍼 유닛과 메모리 유닛들 간에 데이터를 운반할 수 있다. 또한, 각각의 차동 양방향 데이터 신호 경로를 통해 운반된 데이터는 병렬 배선 양방향 데이터 신호 경로들의 각 서브세트에 의해 운반될 수 있다.
또 다른 구체적인 구현예에서, 각각의 직렬 배선은 메모리 제어기로부터 주어진 버퍼 유닛으로 명령 정보를 운반할 수 있는 차동 명령 신호 경로를 포함한다.
또 다른 구체적인 구현예에서, 각각의 직렬 배선은 복수의 다운스트림 차동 단방향 신호 경로들과 하나의 다운스트림 단방향 차동 클럭 신호 경로를 포함한다. 다운스트림 차동 단방향 신호 경로들 각각은 메모리 제어기로부터 하나 이상의 버퍼 유닛들로 데이터, 그리고 주소 및 명령 정보를 운반할 수 있다. 다운스트림 단방향 차동 클럭 신호 경로는 메모리 제어기로부터 하나 이상의 버퍼 유닛들 각각으로 직렬 클럭 신호를 운반할 수 있다.
또 다른 구체적인 구현예에서, 각각의 직렬 배선은 복수의 업스트림 차동 단방향 신호 경로들을 포함한다. 업스트림 차동 단방향 신호 경로들 각각은 하나 이상의 버퍼 유닛들 중 한 버퍼 유닛으로부터 메모리 제어기로 데이터와 CRC (cyclic redundancy code) 정보를 운반할 수 있다.
도 1은 고속 버퍼를 포함하는 메모리 시스템의 일 실시예의 블록도이다.
도 2는 도 1의 메모리 시스템 요소들의 보다 구체적인 양상들을 도시하는 도 이다.
도 3은 도 1 및 도 2 에 도시된 실시예들의 예시적인 버스트 동작을 도시하는 타이밍도이다.
도 4는 도 1 내지 도 3 에 도시된 실시예들의 동작을 설명하는 흐름도이다.
도 5는 도 1에 도시된 메모리 시스템을 포함하는 컴퓨터 시스템의 일 실시예의 블록도이다.
도 6은 듀얼 모드 메모리 배선을 구비한 메모리 제어기를 포함하는 컴퓨터 시스템의 일 실시예의 블록도이다.
도 7은 고속 버퍼를 포함하는 메모리 시스템의 또다른 실시예의 블록도이다.
도 8은 도 7의 메모리 시스템 요소들의 보다 구체적인 양상들을 도시하는 도이다.
도 9는 도 7 및 도 8에 도시된 실시예들의 동작을 설명하는 흐름도이다.
도 10은 도 7에 도시된 메모리 시스템을 포함하는 컴퓨터 시스템의 일 실시예의 블록도이다.
도 11은 듀얼 모드 메모리 배선을 구비한 메모리 제어기를 포함하는 컴퓨터 시스템의 또 다른 실시예의 블록도이다.
본 발명의 다양한 수정 및 대안적인 형태들이 가능하지만, 본 발명의 구체적인 실시예들이 예로서 도면에서 도시되며 본 명세서에서 자세히 설명될 것이다. 그러나, 도면 및 도면에 대한 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려 의도된 것이 아니며, 그와 반대로 본 발명은 첨부된 청구항들에 의해 정의된 바와 같이 본 발명의 사상 및 범주에 부합하는 모든 수정, 등가물, 그리고 대체물을 포함하도록 의도된다. 주목할 점은 "~수 있다(may)"라는 표현은 본 명세서 전체에서 허용적인 의미(즉, ~할 가능성이 있다, ~할 수 있다)로 사용되었으며, 강제적인 의미(즉, ~해야만 한다(must))로 사용된 것이 아니라는 것이다.
이제 도 1을 참조하면, 고속 직렬 버퍼의 일 실시예를 포함하는 메모리 시스템의 블록도가 도시된다. 메모리 시스템(10)은 메모리 유닛들(110A~110H), 그리고 버퍼 유닛들(170A-170J)에 연결된 메모리 제어기(100)를 포함한다. 주목할 점은 숫자 및 문자의 참조 부호들을 포함하는 요소들이 단지 숫자만으로도 참조될 수 있다는 것이다. 예를 들어, 메모리 유닛(110A)은 적절한 경우 메모리 유닛(110)으로 지칭될 수 있다. 또한 주목할 점은 메모리 제어기(100)은 노스브리지 장치 내에서 사용될 수 있는 것과 같은 칩셋의 일부인 메모리 제어기일 수 있다는 것이다. 대안적으로, 도 5에 도시된 바와 같이, 메모리 제어기(100)는 내장형 솔루션(embedded solution)의 일부일 수 있는바, 상기 내장형 솔루션에서, 메모리 제어기(100)는 예를 들어 하나 이상의 프로세서 코어들을 포함하는 프로세싱 노드 내에 내장된다.
일 구현예에서, 메모리 유닛들(110A-110H)은 예를 들어, 듀얼 인라인 메모리 모듈과 같은 메모리 모듈들일 수 있다. 따라서, 각각의 DIMM은 예를 들어, 각각의 메모리 디바이스들 중 동적 랜덤 억세스 메모리(DRAM) 군에서의 디바이스들과 같은 복수의 메모리 디바이스들(도시되지 않음)을 포함할 수 있다. 그러나, 주목할 점은 일반적으로, 시스템(10)의 메모리 유닛들(110)은 임의의 시스템 메모리 유형을 나 타낼 수 있다는 것이다.
도시된 실시예에서, 메모리 제어기(100)는 고속 직렬 배선(160A, 160B)을 통해 버퍼 유닛(170)들에 연결된다. 일 실시예에서, 각각의 고속 직렬 배선(160)은 차동 시그널링 기법을 사용한다. 고속 직렬 배선(160)은 복수의 차동 양방향 데이터 신호 경로들(DDQ), 차동 버퍼 명령 신호 경로들(BCMD), 차동 클럭 신호 경로들(WCLK), 그리고 차동 순환 중복 코드 신호 경로들(CRC)을 포함할 수 있다. 도시된 실시예에서, 두개의 메모리 채널들이 보여진다. 따라서, 직렬 배선(160A)이 일 채널에 대해 사용되어 버퍼 유닛(170A~170F)에 연결되고, 직렬 배선(160B)이 다른 채널에 대해 사용되어 버퍼 유닛(170G~170J)에 연결된다. 주목할 점은 도시된 실시예에서, 각 버퍼 유닛들(170E, 170F)의 일부가 사용되지 않으며 따라서 의도에 따라 다른 용도로 사용될 수 있다는 점이다.
추가적으로, 메모리 제어기(100)는 병렬 배선(165)을 통해 메모리 유닛들(110)에 연결된다. 도시된 바와 같이, 메모리 제어기(100)와 메모리 유닛들(110) 사이의 병렬 배선(165)은 주소/명령 신호 경로들(ADDR/CMD), 그리고 클럭 신호 경로들(MCLK)을 포함할 수 있다. 도시된 두개의 직렬 배선들과 유사하게, 두개의 ADDR/CMD/MCLK 신호 경로들이 도시되어 있다. 각각의 메모리 채널에 대하여 각각의 ADDR/CMD/MCLK 신호 경로들이 사용될 수 있다. 도시된 바와 같이, ADDR/CMD/MCLK 신호 경로들 중 하나는 메모리 유닛들(110A~110D)에 연결되고, 다른 ADDR/CMD/MCLK 신호 경로는 메모리 유닛(110E~110H)에 연결된다. 또한, 버퍼 유닛(170)은 병렬 배선(165)를 통해 메모리 유닛(110)에 연결된다. 도시된 바와 같이, 병렬 배선(165) 은 또한 데이터 경로(DQ) 및 데이터 스트로브 신호 경로(DQS)를 포함한다. 일 실시예에서, 메모리 제어기(100)는 ADDR/CMD 신호 경로들을 통해 주소와 명령들을 송신함으로써 메모리 유닛들(110)의 동작을 제어할 수 있다.
하기에서 보다 자세히 설명될 바와 같이, DQ 데이터 경로들은 버퍼 유닛들(170)과 메모리 유닛들(110) 사이에서 양 방향 모두로 데이터를 운반할 수 있다. DQ 데이터 경로들은 다수의 8 비트(바이트-너비) 데이터 경로들이다. 예를 들어, 전체 데이터 경로는 288 비트 폭일 수 있지만, 전체 데이터 경로는 바이트-규모의 부분들로 나누어 질 수 있다. 주목할 점은, 일 실시예에서 288 비트가 4개의 체크 바이트들을 포함할 수 있지만, 다른 실시예들에서는, 다른 수의 체크 바이트가 사용될 수 있다는 것이다. 또한, 주목할 점은 전체 데이터 경로가 임의의 수의 데이터 비트들을 포함할 수 있으며, 서로 다른 규모의 부분들로 나뉠 수 있다는 것이다. 직렬 배선들(160)의 DDQ 데이터 경로들은 병렬 배선을 통해 운반된 데이터를 직렬로, 그리고 고속으로 운반할 수 있다. 예를 들어, DDQ0 신호 경로는 DQ[0:3]에 대응하는 데이터 비트들을 운반할 수 있으며, DDQ1 신호 경로는 DQ[4:7]에 대응하는 데이터 비트들을 운반할 수 있지만, 다른 매핑(mapping)들도 가능하다.
데이터 경로들이 메모리 유닛들(110)에 연결될 수 있는 다양한 방법들이 존재한다. 예를 들어, 버퍼 유닛들(170)이 단일 집적 회로의 일부인 것이 고려된다. 그러나, 그러한 구현을 위해 요구될 수 있는 핀들의 개수로 인하여, 이는 실현불가능할 것이다. 따라서, 일 실시예에서, 데이터 경로는 나뉘어져 더 작은 유닛으로 그룹화된다. 따라서, 일 실시예에서, 각각의 버퍼 유닛들(170)은 각각의 그룹에 대 하여 버퍼 기능을 제공하는 독립형(standalone) 집적 회로일 수 있다.
일 실시예에서, 기입 동작 동안, 각각의 직렬 버퍼 유닛(170)은 직렬로 클럭 입력되고 두 바이트를 저장할 수 있으며, 후속적으로 그 두 바이트를 병렬 배선(165)상에 병렬로 전송할 수 있다. 필요한 결과를 얻기 위하여, 일 실시예에서, 상기 직렬 배선(160)은 병렬 배선(165)이 데이터 신호 경로들로 데이터를 전달하는 것의 4배의 속도로 데이터를 전달할 수 있다. 그러나, ADDR/CMD 신호 경로들 및 MCLK 신호 경로들은 병렬 배선(165)의 데이터 경로들의 절반의 속도로 동작할 수 있다. 예를 들어, 직렬 배선(160)은 DDQ 데이터 경로들 상에서 6.4GT/s로 데이터를 전달할 수 있으며, 병렬 배선(165)의 데이터 신호 경로들(DQ/DQS)은 1600MT/s로 데이터를 전달할 수 있고, ADDR/CMD 그리고 MCRK 신호 경로들은 800MT/s로 동작할 수 있다. 주목할 점은 다른 실시예들에서, 직렬 버퍼 유닛들(170)은 임의의 바이트들을 병렬 배선(165)상으로 전송하기 전에 그 임의의 바이트들을 저장할 수 있다는 것이다. 또한 주목할 점은 직렬 배선(160)은 병렬 배선(165)과 관련하여 임의의 적절한 데이터 속도에서 동작할 수 있다는 것이다.
CRC 신호 경로들은 각각의 단방향 차동 신호 경로를 통해 각각의 버퍼 유닛(170)으로부터 메모리 제어기(100)로 CRC 정보를 운반할 수 있다. 추가적으로, 클럭 신호 경로들은 각각의 버퍼 유닛들(170)로 WCLK 신호들을 운반할 수 있다. 유사하게, BCMD 신호 경로들은 버퍼 명령들을 상기 메모리 제어기(100)로부터 각각의 버퍼 유닛들(170)로 운반한다.
일 실시예에서, 메모리 제어기(100)는 BCMD 신호 경로들을 통해 송신된 명령 들을 통하여 버퍼 유닛들(170)의 동작을 제어할 수 있다. 따라서, 버퍼 유닛들(170)은 정규(normal) 동작 모드 그리고 구성 및 테스트 모드를 가질 수 있다. 정규 데이터 동작 중에 메모리 제어기(100)는, 예를 들어, 데이터 저장장치에 기입 및 판독을 하기 위하여, 그리고 DQ 신호 경로들의 위상 위상 오프셋(phase offset)을 조정하기 위하여, 데이터 및 프리앰블, 포스트앰블 모두에 대한 판독 및 기입 명령들을 송신할 수 있다. 추가적으로, 메모리 제어기(100)는 예를 들어, 다양한 루프백 명령들, CRC 제어 명령들, 그리고 CRC 트레이닝 패턴 명령들을 송신함으로써, 버퍼 유닛들(170)의 구성, 트레이닝 그리고 테스팅을 제어할 수 있다.
높은 데이터 속도에서 버퍼 유닛(170) 또는 메모리 제어기(100)가 비트 에러를 수신할 가능성이 매우 높다. 따라서, 보호 블록 내의 다중 비트 에러들을 확실히 검출할 에러 검출 코드를 사용하여 메모리 제어기(100)와 버퍼 유닛들(170) 간의 데이터 전달을 보호할 필요가 있을것이다. 일 실시예에서, CRC 코드는 그러한 다중 비트 에러 검출을 제공하기 위하여 사용될 수 있다. 보다 상세하게는, 도 2에 도시된 바와 같이, 버퍼 유닛 및/또는 메모리 모듈 내의 로직을 단순화하기 위하여, 그리고 메모리 제어기(100)에 에러를 보고하기 위하여, 버퍼 유닛(170)은 버퍼 유닛이 생성하는 또는 수신하는 데이터에 근거하여 CRC를 계산한다. 따라서, CRC 정보를 메모리 제어기(100)로 다시 전달하기 위하여, 단방향 CRC 신호 경로들이 사용될 수 있다. 도 2에 도시된 바와 같이, CRC 유닛(250)은 그것의 내부 데이터를 근거로 하여 CRC를 계산하고, 상기 CRC 데이터를 메모리 제어기(100)로 다시 송신할 수 있다. 어느 방향에서라도 에러가 검출되면, 메모리 제어기(100)가 동작을 재 시도함으로써 에러를 정정할 수 있다.
일 실시예에서, CRC 정보가 계산되어, 버퍼 유닛(170)으로부터 메모리 제어기(100)로 전달되는 데이터와 동시에 송신됨으로써, 상기 CRC는 그것이 메모리 제어기(100)에 도착할 때, 그것이 보호하고 있는 데이터 블록과 동시에 사용가능해 질 수 있다. 일 실시예에서, 기입에서 판독(write-to-read), 그리고 판독에서 기입(read-to-write)으로의 천이(transition) 중에 데이터 경로들상에서 발생된 지연에 의하여, CRC를 계산하는 것과 관련된 지연(delay)은 경감될 수 있다.
상술한 바와 같이, 많은 종래의 시스템들이, 예를 들어 양 통신 디바이스들 모두에서, 클럭 위상 복원(clock phase recovery), 채널 등화(channel equalization), 에러 검출과 같은 제어 기능들을 구현함으로써 고속 양방향 통신을 제어한다. 그러나, 하기에서 보다 자세히 설명될 바와 같이, 버퍼 유닛(170)은 이러한 유형의 제어 기능을 비대칭적으로 만듦으로써 단순화될 수 있다. 따라서, 메모리 제어기(100)는, 버퍼 유닛(170)이 버퍼 유닛(170)으로부터 수신된 정보에 근거하여 정확하게 데이터를 판독할 수 있게하기 위하여, 전송된 기입 데이터의 신호 특성(예를 들어, 위상, 등.)을 동적 그리고 적응적으로 조정할 수 있는 제어 기능을 포함할 수 있다. 추가적으로, 메모리 제어기(100)는, 그 내부의 수신기 특성들을 조정하여 메모리 제어기(100)가 버퍼 유닛(170)에 의해 송신된 데이터를 수신할 수 있게 해줄 수 있다. 또한, 메모리 제어기(100)는 주소 및 명령 정보가 정확하게 샘플링될 수 있게 하기 위하여 버퍼 유닛(170)에 제공되는 클럭 신호들의 위상을 조정할 수 있다.
보다 상세하게는, 높은 데이터 속도에서, 버스 내의 서로 다른 신호들에 대한 전송 경로 내에서의 지연의 불확실성은, 그 신호들의 수신기의 샘플 클럭의 퍼 비트 위상 조정(per bit phase adjustment)을 필요로할 수 있다. 버퍼 유닛(170) 내에서 이 회로를 사용하지 않기 위하여, 메모리 제어기(170)는 그것의 전송된 클럭 및 데이터 신호들의 위상을 조정하여 슬레이브 내에 복잡한 위상 천이 회로(phase shifting circuits)를 사용하는 것을 피할 수 있다. 따라서, 도시된 실시예에서, 메모리 제어기(100)는 전송 유닛(102), 수신 유닛(104), 그리고 클럭 유닛(106)에 연결되는 제어 유닛(101)을 포함한다. 제어 유닛(101)은 메모리 제어기(100) 내의 다양한 클럭 에지들의 위상을 조정하기 위하여 사용될 수 있는 버퍼 유닛들(170)로부터 수신된 데이터에 근거하여 위상 정보를 계산할 수 있다. 예를 들어, CRC 데이터와 판독 데이터와 같은 정보에 응답하여, 제어 유닛(101)은 전송 유닛(102), 수신 유닛(104), 및 클럭 유닛(106) 각각의 위상 트래킹 및 조정 회로들(도 2에 도시됨)을 제어할 수 있다. 이 기능은 도 2 및 도 5의 설명과 관련하여 하기에서 보다 구체적으로 설명된다.
도 2를 참조하면, 도 1의 메모리 시스템 요소들의 보다 구체적인 양상들을 설명하는 도면이 도시된다. 도 1에 도시된 요소들에 대응하는 요소들은 명료성과 단순성을 위하여 동일한 부호로 표시되었다. 메모리 제어기(100)는 차동 직렬 배선(160)을 통해 직렬 버퍼(170)에 연결된다. 주목할 점은 버퍼 유닛(170)은 도 1에 도시된 버퍼 유닛들(170A~170J) 중 임의의 버퍼 유닛을 나타낼 수 있다는 것이다. 따라서, 차동 직렬 배선(160)은 차동 WCLK 신호 경로, 차동 BCMD 신호 경로, 차동 CRC 신호 경로, 그리고 차동 데이터 신호 경로들 DDQ[7:0]을 포함한다.
메모리 제어기(100)는 6.4GHz 클럭 신호를 포함하는 바, 상기 클럭 신호는 도 1의 클럭 유닛(106)에 의해 생성될 수 있으며, 클럭 유닛(106)의 일부일 수 있고 메모리 제어기(100)를 위한 내부 클럭을 제공할 수 있는 가변 위상 유닛들(293, 294, 295, 296)에 연결된다. 가변 위상 유닛(293)은 FF(290)의 클럭 입력에 연결된다. FF(290)가 상기 입력으로의 피드백 루프 내에 연결되는 인버터(292)를 포함하므로, 상기 6.4GHz 클럭은 3.2GHz 클럭으로서 출력된다. FF(290)의 출력은 차동 출력 드라이버(291)의 입력에 연결되며, 차동 출력 드라이버의 출력은 차동 WCLK 신호 경로에 연결된다. 기입 데이터는 FF(286)의 입력에 연결된다. FF(286)의 출력은 차동 등화 출력 드라이버(287)에 연결된다. 드라이버(287)의 출력은 DDQ[7:0] 중 하나의 신호 경로에 연결된다. 그러므로, DDQ[7:0]의 각각의 신호 경로들에 대하여, 유사한 기입 데이터 출력 경로(도시되지 않음)가 사용될 수 있다. 이와 유사하게, 판독 데이터에 대해서, DDQ[7:0] 중 하나의 신호 경로가 차동 입력 버퍼(283)에 연결되며, 그 출력이 FF(284)의 입력에 연결된다. FF(284)의 출력은 메모리 제어기(100)의 다른 부분들(도시되지 않음)에 판독 데이터로서 제공된다. CRC 신호 경로는 차동 입력 버퍼(281)에 연결되며, 그것의 출력은 수신기 클럭 데이터 복원 유닛(Rx CDR)(282)의 입력에 연결된다. RxCDR은 퍼 비트 오프셋 유닛(Per bit Offset Unit)(285)에 연결되며, 이것은 가변 위상 유닛(296)에 연결된다. 버퍼 명령 정보는 FF(289)의 입력에 제공된다. FF(289)의 출력은 차동 등화 출력 드라이버(288)에 연결되며, 상기 차동 등화 출력 드라이버(288)는 차동 BCMD 신호 경로에 연결된다.
버퍼 유닛(170)은 DDQ[7:0] 신호 경로들 각각에 대한 차동 입력 버퍼를 나타내는 버퍼(209)를 포함한다. 버퍼(209)는 DDQ[7:0] 신호 경로들 중 한 경로상에 송신된 기입 데이터를 수신하도록 연결된다. 버퍼(209)의 출력은 FF(208)의 입력에 연결된다. FF(208)의 출력은 기입 FIFO(220)에 연결된다. 기입 FIFO(220)의 출력은 DRAM 인터페이스(256)에 연결되며, 상기 DRAM 인터페이스(256)는 병렬 배선(165)을 통해 메모리 유닛들(110)과 인터페이스하는데에 사용되는 입력 버퍼 및 출력 드라이버 회로들을 나타낸다. 도시된 바와 같이, 병렬 배선(165)의 일부로서 16개의 데이터 스트로브 신호 경로들 DQS[15:0]과 32개의 데이터 신호 경로들 DQ[31:0]이 있다. 기입 FIFO로부터의 기입 데이터는 DQ[31:0]을 통해 메모리 유닛들(110)에 출력될 수 있다. 주목할 점은 DQ 및 DQS 신호들만이 도시되었으나, 다른 신호들은 단순성을 위하여 생략되었다는 것이다. 또한, 주목할 점은 단순성을 위하여 그렇게 도시되지는 않았지만, MCLK 및 DQS 신호들은 차동 신호들일 수 있다는 것이다.
DQ[31:0]을 통한 메모리 유닛들(110)로부터의 판독 데이터는 DRAM 인터페이스(256)을 통하여 멀티플렉서(먹스)(203)의 일 입력에 연결된다. 먹스(203)의 출력은 FF(206)의 입력에 제공된다. 제어 로직(255)은 먹스(203)의 멀티플렉서 입력 선택을 제어한다. FF(206)의 출력은 DDQ[7:0]의 차동 신호 경로들 중 하나에 연결되는 차동 등화 데이터 출력 드라이버(210)에 연결된다.
버퍼 유닛(170)은 입력 버퍼(201)를 통해 메모리 제어기(100)로부터 버퍼 명령 정보(BCMD)를 수신하도록 연결되는 제어 로직(255)을 포함하며, 상기 버퍼(201) 는 FF(202)의 입력에 연결된다. BCMD 정보는 제어 로직(255)이 DQ 데이터 경로들 상에 데이터를 기입하게 할 수 있으며, 또는 DQ 데이터 경로들에 대한 데이터를 판독하거나 초기화 시퀀스에 진입 또는 초기화 시퀀스를 빠져나오게 하는 일 등을 할 수 있다. 그러므로, 제어 로직(255)은 DRAM 인터페이스, CRC 유닛(250), 먹스(203) 및 다른 회로들을 제어할 수 있다.
도시된 실시예에서, 3.2GHz 클럭은 FF(202, 205, 206, 208)의 클럭 입력에 연결된다. FF(202, 205, 206, 208) 각각은 듀얼 에지 플립 프롭으로 도시되며, 이는 그것들이 입력 클럭 신호의 리딩 에지(leading edge)와 트레일링 에지(trailing edge)에서 모두 'D'입력을 래치한다는 것을 의미한다. 따라서, 기입 데이터, 및 BCMD 정보는 그들 각각의 데이터 경로들 상에 6.4Gb/s로 운반될 수 있으며, 3.2GHz 클럭을 사용하여 입력이 래치될 수 있다. 유사하게, 메모리 제어기(100)가 6.4GHz에서 동작하므로, 판독 데이터 그리고 CRC 정보는 6.4Gb/s에서 그들 각각의 신호 경로들상에 운반될 수 있으며 특정 루프 백 모드 동안 메모리 제어기(100) 내에서 사용될 수 있다.
일 실시예에서, 기입 데이터가 수신될 때, 기입 데이터는 FF(208)에 의해 래치되며 기입 FIFO(220)에 저장된다. 기입 FIFO(220)는 DRAM 인터페이스(256)를 통해 메모리 유닛들(110)로 출력되기에 충분한 비트들이 수신될때까지 데이터를 저장할 수 있다.
도 5의 설명과 관련하여 하기에서 보다 자세히 설명될 바와 같이, 동작 중에, 메모리 제어기(100)는 전송된 기입 데이터의 신호 특성들(예를 들어, 위상등) 과 그 내부의 수신기 특성들을 동적 그리고 적응적으로 조정하고, 버퍼 유닛(170)에 제공되는 3.2GHz 클럭을 생성하는 6.4GHz 클럭의 위상을 조정할 수 있다. 보다 상세하게는, 상술한 바와 같이, 수신 유닛(104)은 그 자체의 로컬 샘플 클럭 위상을 조정하여 버퍼 유닛(170)에 의해 전송된 데이터를 보다 최적으로 수신하기 위하여, RxCDR(282) 및 오프셋 유닛(285)과 같은 샘플 클럭 위상 조정 회로들을 포함한다. 따라서, 메모리 제어기(100)가 버퍼 유닛(170)으로부터 CRC 데이터를 수신할 때마다, 수신 유닛(104)은 FF(284)의 클럭 위상을 조정하기 위하여 RxCDR(282), 오프셋 유닛(285), 및 가변 위상 유닛(296)을 사용할 수 있다. 추가적으로, 메모리 제어기(100) 내의 제어 유닛(101)은 FF(290)에 제공된 6.4GHz 클럭 신호의 위상을 조정하기 위하여 가변 위상 유닛(293)을 조정할 수 있다. 파워-온 리셋 중과 같은 초기화 프로세스 동안, 예를 들어, 메모리 제어기(100)는, 버퍼 유닛(170)이 버퍼 명령 신호들을 정확히 샘플링하게 하도록 가변 위상 유닛(294)을 조정하여 FF(289)에 제공된 6.4GHz 클럭 신호의 위상을 조정할 수 있다. 또한, 초기화 중에 그리고 소정의 시간간격(interval)마다의 동작 중에, 제어 유닛(101)은, 버퍼 유닛(170)이 보다 최적으로 기입 데이터를 수신할 수 있게 하기 위하여 버퍼 유닛(170)에 전송된 기입 데이터의 위상을 조정하도록, 가변 위상 유닛(295)을 조정하여 FF(286)에 제공된 6.4GHz 클럭 신호의 위상을 조정할 수 있다.
도 3은 8 비트 버스트(burst) 동안 도 1 및 도 2에 도시된 실시예들의 예시적인 동작을 도시하는 타이밍도이다. 보다 상세하게는, 이 타이밍 도는 128 바이트 판독/기입/기입 버스트를 보여준다. 이 도면은 MCLK 및 ADDR/CMD 신호들을 포함하 며, 이 신호들은 메모리 제어기(100)에 의해 메모리 유닛들(110)로 제공된다. 이 도면은 또한 DQ 및 DQS 신호들을 도시하는 바, 상기 신호들은 버퍼 유닛들(170)과 메모리 유닛들(110) 사이에서 각각 데이터 및 데이터 스트로브들을 운반한다. 나머지 신호들: DDQ, BCMD, 및 CRC 신호는 메모리 제어기(100)와 버퍼 유닛들(170) 사이에서 정보를 운반한다.
도시된 바와 같이, 판독 명령들(예를 들어, rdA 및 rdB)이 메모리 제어기(100)에 의해 메모리 유닛들(110)로 송신된다. 몇 MCLK 사이클들 후에 데이터는 데이터 스트로브 신호들 DQS와 함께 DQ 신호 경로에 나타난다. DQ 신호 경로들 상에 데이터가 나타나기 전에, 판독 명령들(예를 들어, r0, r1)이 BCMD 신호 경로들을 통해 버퍼 유닛들(170)로 송신된다. 다음의 MCLK 사이클 후에 rdA 데이터가 DQ 신호 경로 상에 존재하며, rdA 데이터가 DDQ 신호 경로들상에 나타난다. 상술한 바와 같이, rdA 및 rdB 데이터는 MCLK 속도(예를 들어, 1600MT/s) 두배의 속도로 메모리 유닛들(110)로부터 버퍼 유닛들(170)에 병렬로 운반된다. 그러나, 상기 데이터는 훨씬 빠른 데이터 속도(예를 들어 6.4GT/s)로 버퍼 유닛들(170)로부터 메모리 제어기(100)로 직렬로 운반된다.
판독에서 기입으로 천이(transition)할 때 버스 회송시간(bus turnaround time)을 줄이기 위하여, 기입 데이터는 버퍼 유닛(170) 내에 미리 버퍼링될 수 있다. 예를 들어, wrX 데이터 및 관련 BCMD 기입 명령들(예를 들어, w1)이 버퍼 유닛들(170)로 송신되지만, 그 데이터는 점선으로 나타낸 것과 같은 나중의 시점까지 메모리 유닛들(110)에 기입되지 않는다.
판독/기입/판독 시퀀스는 일반적으로 다음과 같이 설명된다 : wrX 데이터가 메모리 제어기(100)에 의해 DDQ 신호 경로들을 통해 버퍼 유닛(170)에 기입되며 버퍼 유닛(170) 내에 저장된다. 메모리 제어기(100)는 동시에 ADDR/CMD 신호 경로들을 통해 메모리 유닛들(110)에 판독 명령들(rdA는 몇 MCLK 사이클 후 rdB가 그 뒤에 온다)을 발행한다. rdA 데이터가 DQ 버스상에 나타나기 직전(예를 들어, DDQ상의 wrX 데이터 전달 완료시)에, 메모리 제어기(100)는 BCMD를 통해 버퍼 유닛(170)으로 판독 명령들(예를 들어, r0, r1)을 발행한다. rdA와 rdB가 DQ 버스상에 존재하는 동안, 메모리 제어기(100)는 ADDR/CMD 버스를 통해 기입 명령들(예를 들어, wrX, wrY)을 메모리 유닛들(110)로 송신한다. rdA와 rdB 데이터는 버퍼 유닛(170) 내에서 래치되며, DDQ를 통해 메모리 제어기(100)로 송신된다. DDQ 상의 rdB 데이터 전달이 완료되기 전에, 메모리 제어기(100)는 버퍼 유닛(170)에 기입 명령들(예를 들어, wo, w2, 그리고 w3)을 송신한다. w2 명령은 앞서서 저장된 wrX 데이터를 메모리 유닛들(110)로 기입되게 하며, w3 기입 명령은 DDQ 신호 경로들을 통해 송신된 wrY 데이터를 DQ 데이터 경로들을 통해 메모리 유닛들(110)로 송신되게 한다. wrX 데이터가 메모리 유닛들(110)에 기입되는 동안, 메모리 제어기(100)는 rdC 명령을 ADDR/CMD 신호 경로들을 통해 메모리 유닛들(110)에 발행한다. 몇번의 사이클 후, rdC 데이터 및 데이터 스트로브들이 DQ 신호 경로들 및 DQS 신호 경로들 상에 각각 나타난다. rdC 데이터가 DQ 데이터 경로들 상에서 버퍼 유닛들(170)로 전달됨에 따라, 메모리 제어기(100)는 BCMD 신호 경로들을 통해 버퍼 유닛들(170)에 판독 명령들(예를 들어, r0, r1)을 발행하며, 그러므로, 버퍼 유닛들(170)이 DDQ 데이터 경로들을 통해 판독 데이터를 송신할 수 있게 한다. wrX 데이터와 유사하게, wrZ 데이터는 이 버스트 기간 동안 메모리 유닛들(110)에 기입되지 않는다. 대신에, 이 데이터는 다음 기입 버스트동안 사용하기 위하여 버퍼 유닛(170) 내에 저장된다. 상술한 바와 같이, 메모리 제어기(100)와 버퍼 유닛들(170) 사이의 판독 및 기입 동작들 동안, CRC가 생성되어 메모리 제어기(170)로 송신된다. CRC는 화살표로 나타낸 것과 같이 BCMD 정보, 기입 데이터, 및 판독 데이터로부터 생성된다. 도시된 바와 같이, w1, r0, w0 명령들, wrX rdA, 및 rdB 데이터는 CRC 신호 경로들 상에 버퍼 유닛들(170)로부터 메모리 제어기(100)로 송신되는RC 정보를 생성하기 위하여 사용된다.
주목할 점은 도시된 바와 같이, 위의 신호들이 CRC 정보를 생성하여 메모리 제어기(100)로 송신할 수 있지만, CRC 신호 경로들은 버퍼 유닛들(170)이 유휴(idle) 상태일 때(즉, 데이터를 전달하지 않을 때)에도 신호천이(transition)을 가질 수 있다는 점이다. 상술한 바와 같이, CRC 데이터는 메모리 제어기(100) 내의 RxCDR(282)를 구동한다. 그러므로, 이러한 천이들은 판독 데이터를 정확하게 샘플링하도록, 판독 데이터 샘플 클럭이 계속해서 위상 정렬(align)되게 할 수 있다.
도 4는 도 1 및 도 2에 도시된 실시예들의 동작을 설명하는 흐름도이다. 위에서 간략하게 설명한 바와 같이, 메모리 제어기(100)와 버퍼 유닛들(170) 사이의 인터페이스는 비대칭적이다. 즉, 버퍼 유닛들(170) 보다 메모리 제어기(100)에 더 많은 제어 기능이 존재한다. 그러므로, 파워 업 중, 및 동작 중 소정의 시점에, 메모리 제어기(100)는 버퍼 유닛(170)이 버퍼 유닛(170)으로부터 수신된 정보에 근거 하여 데이터를 정확하게 판독할 수 있도록, 송신된 기입 데이터의 신호 특성들(예를 들어, 위상, 등)을 조정할 수 있다. 추가적으로, 메모리 제어기(100)는 메모리 제어기(100)가 버퍼 유닛(170)에 의해 송신된 데이터를 정확하게 수신할 수 있도록, 그것의 내부 수신기 특성을 조정할 수 있다. 또한, 메모리 제어기(100)는 버퍼 유닛(170)에 제공되는 클럭 신호들의 위상을 조정하며, 버퍼 명령 정보가 버퍼 유닛들(170)에 의해 정확하게 샘플링될 수 있게 하기 위하여 BCMD 신호의 위상을 조정할 수 있다.
도 1, 도 2, 도 4를 종합적으로 참조하여, 도 4의 블록(400)에서 시작하면, 리셋 또는 파워-온 조건(블록 400) 후, 일 실시예에서, 제어 로직(255)은 트레이닝 모드에서 버퍼 유닛(170)이 리셋에서 나오도록 한다(블록 405). 트레이닝 상태로 진입함에 따라, 모든 양방향 신호 경로 드라이버들(예를 들어, DDQ, DQ, 그리고 DQS)은 고 임피던스 상태에 놓일 수 있다(블록 410). 트레이닝 모드에서, BCMD 신호 경로는 짝수 MCLK 사이클 동안 CRC 신호 경로로 루프 백(loop back)되고(블록(415)), 홀수 MCLK 사이클 동안 트레이닝 패턴(예를 들어, 10101010..)이 CRC 패스 상에 출력된다(블록(420)). 메모리 제어기(100)는 BCMD 신호 경로 상에 트레이닝 패턴을 드라이브하며, 상기 트레이닝 패턴은 짝수 MCLK 사이클들 동안 CRC 경로상에 출력된다(블록(425)). 메모리 제어기(100)는 CRC 경로 상에서 알려진 데이터 패턴들을 수신하는 비트-록(bit-lock) 및 바이트-록(byte-lock)을 얻는다(블록(430)). 추가적으로, 메모리 제어기(100)는 가변 위상 유닛(294)을 조정함으로써 BCMD 클럭 신호의 위상을 조정하며, 따라서 버퍼 유닛(170)이 BCMD 신호 경로상에 서 비트-록(즉, 비트 정렬) 및 바이트-록(즉, 바이트 정렬)을 얻을 수 있다(블록(435)). 보다 상세하게는, 메모리 제어기(100)는, 버퍼 유닛(170)이 각각의 비트를 정확하게 포획(capture)하고 직렬 비트들 내에서 시프트하며, 정확한 바이트 경계에서 8-비트 바이트들 전체를 포획할 수 있게 하기 위하여, 일 비트 타임(bit time)(UI)마다 송신되는 패턴을 변화(시프트)시킬 수 있다. 메모리 제어기는 버퍼 유닛(170)을 트레이닝 모드로부터 빠져나오게 하기 위한 버퍼 명령을 송신할 수 있다(블록(440)).
DDQ 데이터 경로를 트레이닝 하기 위하여, 메모리 제어기(100)는 DDQ 데이터 경로들을 통해 트레이닝 패턴(예를 들어, 많은 천이를 지닌 랜덤 패턴)을 송신한다. 이 패턴은 기입 FIFO(220) 내에 저장된다(블록(445)). 메모리 제어기(100)는 비트-록을 얻기 위하여 저장된 패턴을 다시 판독한다(메모리(450)). 메모리 제어기(100)는 실질적으로 50%의 비트 에러율을 얻기 위하여 기입 데이터의 위상을 조정한다(예를 들어, 가변 위상 유닛(295)를 조정함으로써). 50% 천이 에러율은 기입 데이터가 에지부근에서 샘플링된다는 것을 나타낼 수 있다. 메모리 제어기(100)는 0.5UI 만큼 기입 데이터의 위상을 조정한다. 그렇게 하는 것은 FF(208)이, 예를 들어, 각각의 데이터 비트의 중간 부근의 데이터를 샘플하게 할 것이다. 이 프로세스는 각각의 DDQ 신호 경로에 대해 수행될 수 있다(블록(455)). 바이트-록을 얻기 위하여, 메모리 제어기(100)는 DDQ 데이터 경로들을 통해 트레이닝 패턴을 송신한다. 일 실시예에서, 트레이닝 패턴은 각 바이트마다 서로 다른 패턴을 가진다. CRC 정보를 모니터링하는 동안, 메모리 제어기(100)는 일 UI 증분만큼 트레이닝 패턴 데 이터를 시프트할 것이다. CRC 정보가 정확하다면, 바이트-록이 확립된다(블록(460)). 트레이닝 패턴이 버퍼 유닛(170) 내에서 바이트 록된다면, 메모리 제어기(100)는 판독 데이터 바이트 록을 얻으려 시도한다. 일 실시예에서, 기입 및 판독 방향에서 비트 록 및 바이트 록이 모두 얻어지게끔 직렬 배선이 정렬되어야 한다.
따라서, 병렬 DRAM 인터페이스(256)가 정렬될 것이다. 보다 상세하게는, 일 실시예에서, 기입 위상 DQS 에지들이 적절한 MCLK 에지들에 정렬될 때까지, BCMD 및 DDQ 기입 위상 정렬을 유지하는 동안에 메모리 제어기(100)가 WCLK 위상을 조정할 수 있다(블록(470)).
일단 버퍼 유닛(170) 직렬 및 병렬 배선들이 정렬되면, 정규 동작 중에, 메모리 제어기(100)는 상술한 바와 같은 트레이닝 패턴들을 사용하여 직렬 배선(160)의 기입 위상 트레이닝을 수행할 수 있다. 이 트레이닝은 소정의 인터벌에서 수행될 수 있다. 이와 유사하게, 유휴 기간동안, 메모리 제어기(100)는 버퍼 유닛(170)으로 다수의 유휴 명령들을 송신함으로써 BCMD 및 CRC 정렬을 모니터 및 조정할 수 있다. 이러한 유휴 명령들은 소정의 천이 리치 CRC 패턴(transition rich CRC pattern)들을 CRC 신호 경로상에 송신되게 할 수 있다(블록(475)).
도 5를 참조하면, 도 1 및 도 2의 메모리 시스템을 포함하는 컴퓨터 시스템의 예시적인 실시예의 블록도가 도시된다. 도 1 및 도 2에 도시된 요소들에 대응하는 요소들은 명료성과 단순성을 위하여 동일한 부호로 표시되었다. 컴퓨터 시스템(500)은 메모리 버퍼들(170)과 메모리 유닛들(110)에 연결된 프로세싱 노드(650) 를 포함한다.
일 실시예에서, 버퍼 유닛들(170)은 마더보드에 장착된 집적 회로 칩일 수 있으며, 메모리 유닛(110)들은 소켓에 접속될 수 있다. 또 다른 실시예에서, 버퍼 유닛들은 메모리 도터 카드(daughter card) 소켓에 접속될 수 있는 도터 보드(daughter board)에 장착된 집적 회로 칩들일 수 있다. 이러한 구현예에서, 도터 보드들은 메모리 유닛들을 라이저 장치(riser arrangement) 내에 접속하기 위한 소켓들을 구비할 수 있다.
보다 상세하게는, 프로세싱 노드(650)는 메모리 제어기(100)에 연결된 프로세서 코어들(601)을 포함한다. 주목할 점은 프로세싱 노드(650) 내에 임의의 개수의 프로세서 코어들(601)이 존재할 수 있다는 것이다. 상술한 바와 같이, 메모리 제어기(100) 신호들은 차동 직렬 배선(160)을 통해 메모리 버퍼(170)에 연결되며, 병렬 배선(165)을 통해 메모리 유닛들(170)에 연결된다. 도시된 바와 같이, 직렬 배선은 단방향 CRC 신호 경로들, 단방향 WCLK 신호 경로들, 단방향 BCMD 신호 경로들, 그리고 양방향 데이터 신호 경로들을 포함한다. 추가적으로, 병렬 배선(165)은 메모리 버퍼들(170)과 메모리 유닛들(110) 사이에 양방향 데이터 및 데이터 스트로브 신호 경로들을 포함한다. 또한, 병렬 배선(165)은 프로세싱 노드(650)과 메모리 유닛들(110) 사이에 단방향 ADDR/CMD 및 MCLK 신호 경로들을 포함한다. ADDR/CMD 신호들에 부가하여, 칩 선택, 뱅크 선택, 및 병렬 배선(165) 상에 포함된 다른 신호들과 같은 다른 신호들이 존재할 수 있지만, 본 명세서에서는 단순성을 위하여 생략되었다. 또한, 단순성을 위하여 그렇게 도시하지는 않았지만, MCLK와 DQS 신호 들은 차동 신호들일 수 있다.
도 6을 참조하면, 듀얼 모드 메모리 배선을 구비한 메모리 제어기를 포함하는 컴퓨터 시스템의 일 실시예의 블록도가 도시된다. 컴퓨터 시스템(700)은 도 6에 도시된 컴퓨터 시스템(500)과 유사하다. 예를 들어, 컴퓨터 시스템(700)은 또한 메모리 버퍼들(170)과 메모리 유닛들(110)에 연결된 프로세싱 노드(650)를 포함한다. 그러나, 도 6에서, 메모리 제어기(710)는 그것이 듀얼 모드 메모리 제어기이므로 도 5의 메모리 제어기(100)와는 다르다. 보다 상세하게는, 하기에 보다 자세히 설명될 바와 같이, 메모리 제어기(710)는 선택적으로, 메모리 유닛들(110)에 대한 병렬 배선 또는 버퍼 유닛들(170)과 사용하기 위한 직렬 배선 중 하나와 동작할 수 있다.
위에서 간략하게 설명한 바와 같이, 컴퓨터 시스템 설계자들은 시스템을 매우 유연성 있게 하여 시스템의 요소들이 가능한한 많은 시스템 제조자들에 의해 사용될 수 있게 하고 싶어한다. 따라서, 일 실시예에서, 메모리 제어기(710)는 다양한 메모리 규격들과 호환될 수 있는 병렬 메모리 배선을 제공하도록 제1 모드에서 동작하게 되어 있을 수 있다. 예를 들어, 다양한 실시예들에서, 메모리 제어기들(110)은 DDR2, DDR3, 또는 다른 바람직한 규격들과 호환될 수 있다. 따라서, 메모리 제어기(710)는, 그것의 병렬 배선으로서, 요구되어지는 바에 따라, DDR2 및 DDR3 기술과 호환되는 병렬 배선을 제공할 수 있다. 추가적으로, 메모리 제어기(710)는 도 1 및 도 2의 직렬 배선(160)과 같은 차동 직렬 배선을 제공하기 위하여 제2 모드에서 동작하게 되어 있을 수 있다.
도 6에 도시된 바와 같이, 구성 유닛(configuration unit)(720)은 메모리 제어기(710) 내의 I/O 회로들(711)의 구성을 결정하고 선택할 수 있다. 일 실시예에서, 메모리 제어기(710)의 모드는 프로세싱 노드(600)의 고정배선된(hardwired) 외부 핀을 사용하여 선택될 수 있다. 그러한 실시예에서, 프로세싱 노드(600)의 하나 이상의 외부 선택 핀들은 도시된 바와 같이 회로 접지 또는 예를 들어, VDD 또는 어떤 다른 전압에 고정배선될 수 있다. 구성 유닛(720)은 선택 핀 상태를 검출하고, 따라서 메모리 제어기(710)의 구성 I/Q 회로들(711)을 검출할 수 있다. 또 다른 실시예에서, 메모리 제어기 모드는 BIOS(605) 또는 다른 시스템 레벨 소프트웨어의 실행 중 시스템 기동 중에 선택될 수 있다.
도시된 실시예에서, 제1 모드에서, 메모리 제어기(710)는 메모리 유닛들(110)에 직접 연결된다. 그러한 구성에서, I/O 회로들(711)은 예를 들어, DQ, DQS, ADDR/CMD, 및 MCLK와 같은 신호 경로들을 포함하는 병렬 배선이다. 제2 모드에서, I/O 회로들(711)은 도 1, 도 2, 및 도 5에 도시된 것과 같이 메모리 버퍼 유닛(170)(점선)에 연결되는 차동 직렬 배선으로 변경된다.
모드 전환(mode switch)을 달성하기 위하여, I/O 회로들(711)은 복수의 출력 드라이버들과 입력 버퍼들을 포함할 수 있다. 드라이버들 및 버퍼들의 일부는 차동 회로들일 수 있으며, 일부는 단일단(single-ended)일 수 있다. 일 실시예에서, 모드에 따라, 프로세싱 노드 및 드라이버들과 버퍼들의 다양한 I/O 핀들사이의 연결이 변할 수 있다. 그러므로, 일 실시예에서, I/O 회로들(711)의 부분들은 프로그램가능 배선(programmable interconnect)처럼 동작할 수 있다.
예를 들어, 도 6에 도시된 바와 같이, CRC/DQS 신호 경로들은 양방향 DQS 신호 경로들 및 단방향 CRC 신호 경로들 간에 변경될 수 있다. 추가적으로, WCLK/DQS 신호 경로들은 양방향 DQS 신호 경로들과 단방향 WCLK 신호 경로들 간에 변경될 수 있다. 또한, DDQ/DQ 신호 경로들은 양방향 단일단 DQS 신호 경로들과 양방향 차동 데이터 DDQ 신호 경로들 간에 변경될 수 있다.
도 7 을 참조하면, 고속 버퍼를 포함하는 메모리 시스템의 또 다른 실시예의 블록도가 도시된다. 메모리 시스템(80)은 메모리 유닛들(110A~110H)에, 그리고 버퍼 유닛들(870A~970D)에 연결된 메모리 제어기(800)를 포함한다. 도 1에 도시된 메모리 제어기와 유사하게, 메모리 제어기(800)는 노스브리지 장치에서 사용될 수 있는 것과 같은 칩셋의 일부인 메모리 제어기일 수 있다. 대안적으로, 도 10에 도시된 바와 같이, 메모리 제어기(800)는 임베디드 솔루션의 일부일 수 있는 바, 상기 솔루션에서 예를 들어, 하나 이상의 프로세서 코어들을 포함하는 프로세싱 노드 내에 메모리 제어기(100)가 임베디드될 수 있다.
명료성과 단순성을 위하여, 앞의 도면에서 도시된 것들에 대응하는 요소들은 동일한 부호로 표시된다. 따라서, 일 실시예에서, 메모리 유닛들(110A-110H)은 앞에서 설명한 바와 같이, 예를 들어 듀얼 인라인 메모리 모듈(DIMM)들과 같은 메모리 모듈들을 나타낼 수 있다. 다양한 구현예에서, 메모리 유닛들은 예를 들어 DDR2, DDR3와 같은 다양한 기술들을 따를 수 있다.
도시된 실시예에서, 메모리 제어기(800)는 직렬 배선(860A-860D)를 통해 버퍼 유닛들(870)에 연결된다. 일 실시예에서, 각각의 직렬 배선(860)은 차동 시그널 링 기법을 사용한다. 도 8의 설명과 관련하여 하기에서 보다 자세히 설명될 바와 같이, 직렬 차동 배선들(860A-860D)은 각각 각 버퍼 유닛(870)으로의 업스트림 링크 및 다운스트림 링크를 포함할 수 있다. 다운스트림 링크는 복수의 다운스트림 직렬 데이터 신호 경로들(DSD)과, 데이터를 버퍼 유닛들(870) 내부로 클러킹(clock)하는데에 사용될 수 있는 대응하는 다운스트림 직렬 클럭 신호 경로(DSCLK)를 포함할 수 있다. 유사하게, 각각의 업스트림 링크는 복수의 업스트림 직렬 데이터 신호 경로들(USD) 및 데이터를 메모리 제어기(800) 내부로 클러킹하는데에 사용될 수 있는 대응하는 업스트림 직렬 클럭 신호 경로(USCLK)를 포함할 수 있다. 도시된 실시예에서는 4개의 메모리 채널들이 보여지지면, 다른 개수도 가능하다. 따라서, 직렬 배선(160A)은 일 채널에 대해 사용될 수 있고, 버퍼 유닛(870A)에 연결되며, 직렬 배선(860B)은 제2 채널에 대해 사용될 수 있으며 버퍼 유닛들(870B)에 연결되고, 직렬 배선(860B)은 제3 채널에 대해 사용될 수 있으며 버퍼 유닛들(870C)에 연결되고, 그리고 직렬 배선(860D)는 제4 채널에 대해 사용될 수 있으며 버퍼 유닛들(870D)에 연결된다.
위에서 설명한 실시예들에서 사용된 직렬 배선(160)과는 대조적으로, 직렬 배선(860)은, 각각 데이터, CRC, 그리고 ADDR/CMD 정보를 운반하는 데이터 신호 경로들을 사용한다. 따라서, 일 실시예에서, 직렬 배선(860)은 패킷 프로토콜을 사용할 수 있는 바, 상기 패킷 프로토콜에서, 패킷들은 페이로드(payload)가 ADDR/CMD 인지 데이터인지를 지정하기 위한 인코딩들을 포함할 수 있다. 추가적으로, 각각의 패킷은 CRC 정보, 및 페이로드(예를 들어, 데이터 또는 ADDR/CMD)에 대해 지정된 비트 타임(bit times)을 지니는 포맷을 가질 수 있다.
추가적으로, 버퍼 유닛들(870A-870D)은 병렬 배선(865)을 통해 메모리 유닛들(110)에 연결된다. 일 실시예에서, 직렬 배선(865)은 데이터 경로들(DQ), 데이터 스트로브 신호 경로들(DQS), 주소/명령 신호 경로들(ADDR/CMD), 그리고 클럭 신호 경로들(MCLK)을 포함할 수 있다. 칩 선택, 뱅크 선택, 체크 비트, 그리고 병렬 배선(865) 상에 포함된 다른 신호들과 같은 다른 신호들이 있을 수 있으나, 본 명세서에서는 단순성을 위하여 생략되었다. 또한, 병렬 배선(865)은 4개의 채널들을 포함할 수 있다. 도시된 바와 같이, 채널들 중 하나는 메모리 유닛들(110A-110D)에 연결되고, 또 다른 채널은 메모리 유닛들(110E-110H)에 연결되고, 또 다른 채널은 메모리 유닛들(110J-110M)에 연결되며, 그리고 또 다른 채널은 메모리 유닛들(110N-110R)에 연결된다.
하기에서 보다 자세히 설명될 바와 같이, DQ 데이터 경로들은 버퍼 유닛들(870)과 메모리 유닛들(110) 간에 양 방향 모두에서 데이터를 운반할 수 있으며, 직렬 배선(860)의 차동 데이터 경로들은 병렬 배선을 통해 운반되었던 데이터를 직렬로, 그리고 보다 빠른 속도로 운반할 수 있다. 예를 들어, 주어진 업링크 USD[0] 또는 다운링크 DSD[0] 신호 경로는 DQ[0:3]에 대응하는 데이터 비트들을 운반할 수 있으며, USD[1] 신호 경로는 DQ[4:7]에 대응하는 데이터 비트들을 운반할 수 있지만, 다른 매핑들도 가능하다. 일부 실시예들에서, 직렬 링크들은 직렬 데이터 핀들수의 관점에서 비대칭형일 수 있다. 기입 동작들 보다 판독 동작들에 의해서 더 많은 대역폭이 소모될 것으로 가정되므로, 일 실시예에서, 업링크는 다운링크보다 더 많은 데이터 신호 경로들을 가질 수 있다.
위에 설명된 버퍼 유닛들(170)과 유사하게, 각각의 직렬 배선(860)은 병렬 배선(865)이 데이터 신호 경로들상에서 데이터를 전달하는 것의 4배 속도로 데이터를 전달할 수 있다. 그러나, ADDR/CMD 신호 경로들 그리고 MCLK 신호 경로들은 병렬 배선(865)의 데이터 경로들의 절반의 속도로 동작할 수 있다. 예를 들어, 직렬 배선(860)은 6.4GT/s에서 업링크 및 다운링크 데이터 경로들로 데이터를 전달할 수 있으며, 병렬 배선(865)의 데이터 신호 경로들 DQ/DQS은 1600MT/s로 데이터를 전달할 수 있고, ADDR/CMD 및 MCLK 신호 경로들은 800MT/s에서 동작할 수 있다. 주목할 점은 직렬 배선(860)은 병렬 배선(865)과 관련하여 임의의 적절한 데이터 속도에서 동작할 수 있다는 것이다.
일 실시예에서, 메모리 제어기(800)는 DSD 신호 경로들 상에 송신된 명령들을 통해 버퍼 유닛들(870)의 동작을 제어할 수 있다. 따라서, 버퍼 유닛들(870)은 정규 동작 모드와 구성 및 테스트 모드를 가질 수 있다. 예를 들어, 정규 데이터 동작 중에, 메모리 제어기(800)가 데이터 저장장치를 판독하고 데이터 저장장치에 기입하기위하여, 그리고 DQ 신호 경로들의 위상 오프셋을 조정하기 위하여, 데이터 및 프리/포스트 앰블(pre- and post-ambles)들에 대해 판독 및 기입 명령들을 송신할 수 있다. 추가적으로, 메모리 제어기(800)는 예를 들어 다양한 루프백 명령들, CRC 명령들, 그리고 CRC 트레이닝 패턴 명령들을 송신함으로써, 버퍼 유닛들(870)의 구성, 트레이닝 및 테스팅을 제어할 수 있다.
높은 데이터 속도에서, 버퍼 유닛(170) 또는 메모리 제어기(100)가 비트 에 러를 수신할 가능성은 매우 높다. 따라서, 보호 블록 내에서 다중 비트 에러들을 확실히 검출할 에러 검출 코드를 사용하여, 메모리 제어기(100)와 버퍼 유닛들(170) 사이의 데이터 전달을 보호하는것이 필요할 것이다. 일 실시예에서, CRC 코드는 그러한 다중 비트 에러 검출을 제공하기 위하여 사용될 수 있다. 보다 상세하게는, 도 2에 도시된 바와 같이, CRC 정보는 업링크와 다운링크 모두에서 생성되고 송신될 수 있다. 직렬 배선상의 어느 방향에서라도 에러가 검출되면, 메모리 제어기(100)가 동작을 재시도하여 에러를 정정할 수 있다. 일 실시예에서, 다운스트림 링크에서 검출된 CRC 에러는 업스트림 CRC로 인코딩될 수 있다.
일 실시예에서, 메모리 제어기(800)는 버퍼 유닛(870)이 버퍼 유닛(870)으로부터 수신된 정보에 근거하여 정확하게 데이터를 판독할 수 있게 하기 위하여 전송된 기입 데이터의 신호 특성들(예를 들어, 위상, 등)을 동적 그리고 적응적으로 조정할 수 있다. 추가적으로, 메모리 제어기(800)는 메모리 제어기(100)가 버퍼 유닛(870)에 의해 송신된 데이터를 수신할 수 있게 하기 위하여 그 내부 수신기 특성들을 조정할 수 있다. 또한, 메모리 제어기(800)는 주소 및 명령 정보가 정확히 샘플링 될 수 있게 하기 위하여 버퍼 유닛(870)에 제공되는 클럭 신호들의 위상을 조정할 수 있다.
보다 상세하게는, 높은 데이터 속도에서, 버스 내의 차동 신호들을 위한 전송 경로에서의 지연의 불확실성은 그 신호들의 수신기의 샘플 클럭의 퍼 비트 위상 조정(per bit phase adjustment)을 필요로 할 수 있다. 버퍼 유닛(800) 내에서 이 회로를 사용하는 것을 방지하기 위하여, 메모리 제어기(800)는 그것의 전송된 클럭 및 데이터 신호들을 조정하여 슬레이브 내에 복잡한 위상 시프트 회로들을 방지할 수 있다. 따라서, 도시된 실시예에서, 메모리 제어기(800)는 전송 유닛(802), 수신 유닛(804), 및 클럭 유닛(806)에 연결되는 제어 유닛(801)을 포함한다. 제어 유닛(801)은 메모리 제어기(800) 내의 다양한 클럭 에지들의 위상을 조정하기 위하여 사용될 수 있는 버퍼 유닛들(870)로부터 수신된 데이터에 근거하여 위상 정보를 계산할 수 있다. 예를 들어, CRC 데이터 및 판독 데이터와 같은 정보에 응답하여, 제어 유닛(801)은 전송 유닛(802), 수신 유닛(804), 그리고 클럭 유닛(806) 내의 위상 트랙킹 및 조정 회로들(도 8에 도시됨)을 각각 제어할 수 있다. 이 기능은 도 8 및 도 9의 설명과 관련하여 하기에서 보다 자세히 설명된다.
도 8을 참조하면, 도 7의 메모리 시스템 요소들의 보다 구체적인 양상들을 설명하는 도면에 도시된다. 도 7에 도시된 것들에 대응하는 요소들은 명료성과 단순성을 위하여 동일한 부호로 표시된다. 메모리 제어기(800)는 차동 직렬 배선(860)을 통해 직렬 버퍼 유닛(870)에 연결된다. 버퍼 유닛(870)은 도 7에 도시된 버퍼 유닛들(870A-870D) 중 임의의 버퍼유닛을 나타낼 수 있다. 따라서, 차동 직렬 배선(860)은 다운스트림 차동 지렬 클럭 신호 경로(DSCLK), 및 다운스트림 차동 데이터 신호 경로들 DSD[11:0]을 포함한다. 유사하게, 차동 직렬 배선(860)은 업스트림 차동 직렬 클럭 신호 경로(USCLK), 및 업스트림 차동 데이터 신호 경로들 USD[19:0]을 포함한다.
메모리 제어기(800)는 6.4GHz 클럭 신호를 포함하는 바, 상기 클럭 신호는 도 7의 클럭 유닛(806)에 의해 생성될 수 있다. 일 실시예에서, 6.4GHz 클럭은 메 모리 제어기(800)를 위한 내부 클럭이다. 가변 위상 유닛(890)의 출력은 플립-플롭(FF)(889)에 대한 클럭 신호를 제공한다. 6.4GHz 클럭은 또한 레인 디스큐(lane deskew) 회로(881)에 연결되며, 그리고 직렬 클럭 DSCLK을 생성하기 위하여 FF(893)의 클럭 입력에 연결된다. FF(893)이 입력으로의 피드백 루프 내에 연결된 인버터(892)를 구비하므로, 6.4GHz 클럭은 2 분주되며, 3.2GHz 직렬 클럭으로 출력된다. 상기 3.2GHz 클럭은 차동 출력 드라이버(891)에 의해 차동적으로(differentially) 구동된다.
도시된 실시예에서, 기입 데이터, ADDR/CMD, 및 CRC는 FF(889)의 입력에 제공된다. FF(889)의 출력은 차동 등화 출력 드라이버(888)에 연결된다. 드라이버(888)의 출력은 DSD[11:0]의 일 신호 경로에 연결된다. 따라서, DSD[11:0]의 각각의 신호 경로에 대해, 동일한 출력 경로(도시되지 않음)가 사용될 수 있다. 이와 유사하게, 판독 데이터에 대해, USD[19:0]의 일 신호 경로가 차동 입력 버퍼(885)에 연결되며, 그것의 출력이 FF(886)의 입력에 연결된다. FF(886)의 출력은 레인 디스큐 유닛(881)의 입력에 연결된다. 레인 디스큐 유닛(881)의 출력은 메모리 제어기(800)의 다른 부분들(도시되지 않음)에 판독 데이터 및 CRC 정보로서 제공된다. 업스트림 직렬 클럭 신호 USCLK는 차동 입력 버퍼(887)에 연결되며, 그것의 출력은 가변 위상 유닛(882)에 연결된다. 그것의 출력은 FF(886)의 클럭 입력에 연결된다.
버퍼 유닛(870)은 DSD[11:0] 신호 경로들 각각에 대한 차동 입력 버퍼를 나타내는 버퍼(801)를 포함한다. 버퍼(801)는 DSD[11:0] 신호 경로들 중 한 경로상에 송신된 기입 데이터, ADDR/CMD, 및 CRC 정보를 수신하도록 연결된다. 따라서, 메모리 제어기(800)와 유사하게, DSD[11:0]의 각각의 신호 경로에 대해, 유사한 출력 경로(도시되지 않음)가 사용될 수 있다. 버퍼(801)의 출력은 FF(802)의 입력에 연결된다. FF(802)의 출력은 FF(803)의 입력에 연결된다. FF(803)의 출력은 명령 버퍼(805), CRC 유닛(806), 기입 FIFO(807), 그리고 출력 멀티플렉서(먹스)(809)에 연결된다. 기입 FIFO(807)의 출력은 DRAM 인터페이스(256)에 연결되는 바, 상기 DRAM 인터페이스(256)는 도 2의 설명과 관련하여 위에서 설명한 DRAM 인터페이스와 유사하다. 도시된 바와 같이, 병렬 배선(865)의 일부로서 4개의 MCLK 신호들, ADDR/CMD 신호들, 16개의 데이터 스트로브 신호 경로들 DQS[15:0], 그리고 72개의 데이터 신호 경로들 DQ[71:0]이 존재한다. 다른 신호들은 단순성을 위하여 생략되었다. 단순성을 위하여 그렇게 도시되지는 않았지만, MCLK 및 DQS 신호들은 차동 신호들일 수 있다.
DQ[71:0]를 통한 메모리 유닛들로부터의 판독 데이터는 DRAM 인터페이스(856)를 통해 먹스(809)의 일 입력까지 연결될 수 있다. 먹스(809)의 출력은 FF(810)의 입력에 제공된다. 제어 로직(855)는 먹스(809)의 멀티플렉서 입력 선택을 제어한다. FF(810)의 출력은 USD[19:0]의 차동 신호 경로들 중 하나에 연결되는 차동 등화 데이터 출력 드라이버(811)에 연결된다.
버퍼 유닛(870)은 또한 메모리 제어기(800)로부터 명령 정보(CMD)를 수신하도록 연결되는 제어 로직(855)을 포함한다. CMD 정보는 제어 로직(855)이 DQ 데이터 경로들 상에 기입 데이터를 드라이브하게 하거나 DQ 데이터 경로들에 대하여 데 이터를 판독하게 하거나, 또는 초기화, 및 테스트 시퀀스 등에 진입하거나 그로부터 빠져나오게 할 수 있다. 따라서, 제어 로직(855)은 DRAM 인터페이스(856), CRC 유닛들(806, 808), 먹스(809) 및 다른 회로들을 제어할 수 있다.
도시된 실시예에서, 3.2GHz 클럭은 FF(810)의 클럭 입력에 연결되고 차동 등화 데이터 출력 드라이버(812)의 입력에 연결되며, 상기 차동 등화 데이터 출력 드라이버(812)의 출력은 업스트림 직렬 클럭(USCLK)이다. 3.2GHz 클럭 신호는 또한, 4 분주 유닛(Divide by four unit)(804)에 연결되며 따라서, 800MHz 클럭 도메인을 제공하는바, 상기 클럭 도메인은 MCLK 도메인이다.
일 실시예에서, DSD[11:0] 신호 경로들을 통해 수신된 패킷들은 CMD 버퍼(805), 기입 FIFO(807), 그리고 CRC 유닛(806)에 동시에 제공될 수 있다. 이 패킷들은 그들을 ADDR/CMD 또는 데이터 페이로드로서 지정하도록 인코딩될 수 있으므로, CMD 버퍼(805) 및 기입 FIFO(807)은, 상기 CMD 버퍼(805) 및 기입 FIFO(807)가 그들 각각의 패킷들을 포획할 수 있도록 해주는 패킷 디코드 로직(도시되지 않음)을 포함할 수 있다. 따라서, 기입 데이터 페이로드 패킷이 수신될 때, 상기 패킷은 기입 FIFO(807)에 의해 디코딩될 수 있으며, 데이터는 기입 FIFO(807) 내에 저장된다. CMD 버퍼(805)는 데이터 페이로드 패킷들을 폐기(discard)할 수 있다. 기입 FIFO(807)는, DRAM 인터페이스(856)를 통해 메모리 유닛들(110)에 출력되기에 충분한 비트들이 수신될때까지 기입 데이터를 저장할 수 있다. 유사하게, CMD 페이로드 패킷이 수신될 때, 상기 패킷은 CMD 버퍼(805)에 의해 디코딩될 수 있으며, CMD 정보는 CMD 버퍼(805) 내에 저장된다. 기입 FIFO(807)는 CMD 페이로드 패킷들을 폐기 할 수 있다. 모든 패킷들이 CRC 페이로드를 포함할 수 있으므로, CRC 유닛(806)은 모든 패킷들을 수신하여 CRC 정보를 추출한다.
도 9의 설명과 관련하여 하기에서 보다 자세히 설명될 바와 같이, 동작 중에, 메모리 제어기(800)는 전송된 기입 데이터 및 수신된 판독 데이터의 신호 특성들(예를 들어, 위상, 등)을 동적이고 적응적으로 조정할 수 있다. 보다 상세하게는, 위에서 언급한 바와 같이, 수신 유닛(804)은 버퍼 유닛(870)에 의해 전송된 데이터를 보다 최적으로 수신하기 위하여 그들 자신의 로컬 샘플 클럭 위상을 조정하기 위한 가변 위상 유닛들(890, 882), 및 레인 데스큐(881)와 같은 샘플 클럭 위상 조정 회로들을 포함한다. 따라서, 메모리 제어기(880)가 버퍼 유닛(870)으로부터 CRC 데이터를 수신할 때마다, 수신 유닛(804)은 FF(885)의 클럭 위사을 조정하기 위하여 레인 데스큐 및 가변 위상 유닛(882)을 사용할 수 있다. 추가적으로, 메모리 제어기(800) 내의 제어 유닛(801)은 버퍼 유닛(870)이 기입 데이터를 보다 최적으로 수신할 수 있게 하도록, 가변 위상 유닛(890)을 조정하여 버퍼 유닛(870)에 전송되는 기입 데이터의 위상을 조정할 수 있다.
도 9는 도 7 및 도 8에 도시된 실시예들의 예시적인 동작을 설명하는 흐름도이다. 보다 상세하게는, 메모리 제어기(800)와 버퍼 유닛들(870) 간에 통신을 확립하고 유지하기 위한 초기화 및 설정 과정이 설명된다. 도 7 내지 도 9를 종합적으로 참조하여, 도 9의 블록(900)에서 시작하면, 파워-온 리셋 또는 다른 시스템 리셋 조건 중에서와 같이 시스템이 리셋될 때에는, 어느 직렬 신호 경로들도 정렬된것으로 여겨질 수 없다. 따라서, 메모리 제어기 및 버퍼 유닛(870)은 트레이닝 상 태 1, 즉 T1 에서 리셋을 빠져나온다. T1 상태에서, 직렬 배선(860)은 400MT/s에서 동작한다(블록(905)). 메모리 제어기(800)는 데이터를 송신하고 수신하기 위하여 데드-레커닝된(dead-reckoned) 0.5UI 오프셋을 사용한다(블록(910)). 예를 들어, 메모리 제어기는 오프셋이 주어진 비트 타임으로부터 중간정도인 근사 포인트(approximated point)가 되도록 조정할 수 있다. 메모리 제어기(800)는 버퍼 유닛(870)이 T1 상태를 빠져 나오고 T2 상태로 진입하게 하는 명령을 송신한다(블록(915)). T2 상태에서, 버퍼 유닛(870)은 USD 링크의 모든 비트 레인들 상에 101010...패턴과 같은 소정의 패턴을 드라이브한다. 메모리 제어기는 예를 들어, 알려진 패턴을 사용하여 비트-록(bit-lock)을 얻고, 가변 위상 유닛(882)을 조정한다.
일 실시예에서, 메모리 제어기(800)는, 8번의 비트 타임 동안 모두 1을 드라이브하여, 버퍼 유닛(870)이 T2 상태에서 빠져나오고 T3 상태에 진입하게 하는 버퍼 명령을 송신한다. T3 상태에서, 버퍼 유닛(870)은 짝수 MCLK 사이클들 상에 USD 신호 경로들을 통해 메모리 제어기(800)로 101010...과 같은 소정의 패턴을 송신한다(블록(930)). 버퍼 유닛(870)은 홀수 MCLK 사이클에 다운스트림 데이터를 업스트림 USD 신호 경로들로 루프백(loop back)하고 101010...패턴과 다른 패턴을 DSD 신호 경로들을 통해 다운스트림에 송신한다(블록(935)). 메모리 제어기(800)는 서로 다른 패턴들을 사용하는 바이트-록을 얻는다. 메모리 제어기(800)은 다운스트림 데이터 위상을 조정하여 버퍼 유닛(870)이 비트-록 및 바이트 록을 얻을 수 있게 해준다(블록(940)). 완료될때, 메모리 제어기(800)는 8개의 비트 타임에 대해 모두 0 을 드라이브하여, 버퍼 유닛(870)이 T3 상태에서 빠져나와 정규 동작 모드(블록(945))에 진입하게 하며, 정규 동작 모드에서 메모리 제어기(800)는 메모리 유닛(110)등에 데이터를 기입하거나 판독 할 수 있다.]
일단 정규 동작 모드가 되면, 메모리 제어기(800)는, 모든 버퍼 유닛들(870)이 동일한 클럭 에지(위상)를 사용하게끔 각 버퍼 유닛(870) 내의, 4 분주(devide-by four) MCLK 분배기(804)를 조정할 수 있다. 보다 상세하게는, 메모리 제어기(800)는 하나 이상의 비트 타임만큼 MCLK 위상을 지연(retard)시키기 위한 버퍼 명령어들을 송신할 수 있다.
정규 동작 중 소정의 시간간격(interval) 마다(예를 들어, 매 100us마다), 메모리 제어기(800)는 주기적 트레이닝 모드를 사용하여 업스트림 및 다운스트림 신호 경로들을 트레이닝할 수 있다. 예를 들어, 다운스트림 트레이닝 동안, 메모리 제어기(800)는 소정의 트레이닝 위상 오프셋을 사용하여 기입 FIFO(807)에 트레이닝 패턴을 기입할 수 있다(블록(960)). 메모리 제어기(800)는 트레이닝 패턴을 다시 판독하고 상기 패턴의 천이 값들로부터 에러 사인을 계산할 수 있다(블록(965)). 상기 계산된 에러 사인을 사용하여, 메모리 제어기(800)는 다운스트림 데이터 위상을 조정할 수 있다(블록(970)).
업스트림 트레이닝 동안, 메모리 제어기(800)는 정규 위상 오프셋을 사용하여 기입 FIFO(807)에 트레이닝 패턴을 기입할 수 있다(블록(975)). 메모리 제어기(800)는 저장된 트레이닝 패턴을 판독하며, 또 다른 소정의 트레이닝 위상 오프셋을 사용하여 상기 패턴의 천이 값들로부터 에러 사인을 계산할 수 있다. 상기 계 산된 에러 사인을 사용하여, 메모리 제어기(800)는 업스트림 샘플 위상을 조정할 수 있다(블록(985)). 주기적인 트레이닝이 완료되면, 블록(945)에서, 버퍼 유닛(870)은 위에 설명된 바와 같이 다시 정규 모드에 놓인다.
도 10을 참조하면, 도 7의 메모리 시스템을 포함하는 컴퓨터 시스템의 일 실시예의 블록도가 도시된다. 도 7 및 도 8에 도시된 요소들에 대응하는 요소들은 명확성과 단순성을 위하여 동일한 부호로 표시되었다. 컴퓨터 시스템(1100)은 메모리 버퍼들(870)과 메모리 유닛들(110)에 연결된 프로세싱 노드(1150)를 포함한다.
도 5에 도시된 컴퓨터 시스템과 유사하게, 일 실시예에서, 버퍼 유닛들(870)은 마더보드에 장착된 집적 회로 칩일 수 있으며, 메모리 유닛들(110)은 소켓에 접속될 수 있다. 또 다른 실시예에서, 버퍼 유닛들(870)은 메모리 도터 카드 소켓에 접속될 수 있는 도터 보드에 장착된 집적 회로 칩들일 수 있다. 그러한 실시예에서, 도터 보드들은 메모리 유닛들(110)을 라이저 장치 내에 접속하기 위한 소켓들을 구비할 수 있다.
도 10에 도시된 실시예에서, 프로세싱 노드(1150)는 메모리 제어기(800)에 연결된 프로세서 코어들(1101)을 포함한다. 주목할 점은 프로세싱 노드(150) 내에 임의의 개수의 프로세서 코어들(1101)이 존재할 수 있다는 것이다. 도 7 및 도 8의 설명과 관련하여 위에서 설명된 바와 같이, 메모리 제어기(800) 신호들은 차동 직렬 배선(860)을 통해 메모리 버퍼들(870)에 연결되며, 병렬 배선(865)을 통해 메모리 유닛들(110)에 연결된다. 도시된 바와 같이, 직렬 배선(860)은 단방향 다운스트림 신호 경로들, 단방향 다운스트림 클럭 신호 경로들, 단방향 업스트림 신호 경로 들, 그리고 단방향 업스트림 클럭 신호 경로들을 포함한다. 추가적으로, 병렬 배선(865)은 메모리 버퍼들(870)과 메모리 유닛들(110) 사이에 양방향 데이터 및 데이터 스트로브 신호 경로들을 포함한다. 또한, 병렬 배선(865)은 프로세싱 노드(600)과 메모리 유닛들(110) 사이에 단방향 ADDR/CMD 및 MCLK 신호 경로들을 포함한다. ADDR/CMD 신호들에 부가하여, 칩 선택, 뱅크 선택, 및 다른 신호들이 병렬 배선(865)에 포함되어 존재할 수 있지만, 그 신호들은 본 명세서에서는 단순성을 위하여 생략되었다.
도 11을 참조하면, 듀얼 모드 메모리 배선을 구비한 메모리 제어기를 포함하는 컴퓨터 시스템의 또 다른 실시예의 블록도가 도시된다. 컴퓨터 시스템(1200)은 도 10에 도시된 컴퓨터 시스템(1100)과 유사하다. 예를 들어, 컴퓨터 시스템(1200)은 또한 메모리 버퍼들(870)과 메모리 유닛들(110)에 연결된 프로세싱 노드(1250)를 포함한다. 그러나, 도 11에서, 메모리 제어기(1210)는 듀얼-모드 메모리 제어기이므로 도 10의 메모리 제어기(800)와는 다르다. 보다 상세하게는, 하기에서 보다 자세히 설명될 바와 같이, 메모리 제어기(1210)는, 도 7 및 도 8의 설명과 관련하여 위에서 설명된 바와 같이, 버퍼 유닛들(870)과 함께 사용하기 위하여 직렬 배선(860)과 함께 동작하거나 메모리 유닛들(110)과의 직접 연결을 위하여 병렬 배선(865)과 함께 동작하도록 선택적으로 구성될 수 있다.
위에서 설명된 메모리 제어기(710)와 유사하게, 도 11의 메모리 제어기(1210)는 다양한 메모리 규격들에 호환될 수 있는 메모리 모듈들로의 직접 연결을 위해, 선택적으로 병렬 배선을 사용하여 동작할 수 있다. 예를 들어, 다양한 실 시예들에서, 메모리 유닛들(110)은, 그것의 병렬 배선으로서, DDR2, DDR3, 또는 요구되어지는 다른 규격들과 호환가능하다. 따라서, 메모리 제어기(1210)는 요구되어지는 바에 따라 DDR2, 및 DDR 3 기술과 호환되는 병렬 배선(865)을 제공할 수 있다. 추가적으로, 메모리 제어기(1210)는 또한, 버퍼 유닛들(870)로의 연결을 위하여, 도 7 및 도 8의 직렬 배선(860)과 같은 직렬 차동 배선을 제공하기 위하여, 선택적으로 제2 모드에서 동작하도록 되어 있을 수 있다.
도 11에 도시된 바와 같이, 구성 유닛(1220)은 메모리 제어기(1210) 내의 I/O 회로들(1211)의 구성을 결정하고 선택할 수 있다. 일 실시예에서, 메모리 제어기(1210)의 모드는 프로세싱 노드(1250)의 고정배선형 외부 핀을 사용하여 선택될 수 있다. 그러한 실시예에서, 프로세싱 노드(1250)의 하나 이상의 외부 선택 핀들은 도시된 바와 같이 회로 그라운드나 VDD 또는 예를 들어 임의의 다른 전압에 고정배선될 수 있다. 구성 유닛(1220)은 선택 핀 상태을 검출할 수 있으며, 따라서 메모리 제어기(1210)의 구성 I/O 회로들(1211)을 검출할 수 있다. 또 다른 실시예에서, 메모리 제어기 모드는 BIOS(1205) 또는 다른 시스템 레벨 소프트웨어 실행 중의 시스템 기동 중에 선택될 수 있다.
도시된 실시예에서, 제1 모드에서, 메모리 제어기(1210)는 메모리 유닛들(110)에 직접 연결된다. 그러한 구성에서, I/O 회로들(1211)은 예를 들어, 다른 것들 중에서도, DQ, DQS, ADDR/CMD, 및 MCLK와 같은 신호 경로들을 포함하는 병렬 배선을 제공한다. 제2 모드에서, I/O 회로들(1211)은 도 7, 도 8, 및 도 10에 도시된것과 같은 메모리 버퍼 유닛(870)(점선)에 연결된다.
모드 스위치를 달성하기 위하여, I/O 회로들(1211)은 복수의 출력 드라이버들과 입력 버퍼들을 포함할 수 있다. 드라이버들 및 버퍼들의 일부는 차동 회로들일 수 있으며, 이들 중 일부는 단일단일 수 있다. 일 실시예에서, 모드에 따라, 프로세싱 노드와 드라이버와 버퍼들의 다양한 I/O 핀들 간의 연결이 변경될 수 있다. 그러므로, 일 실시예에서, I/O 회로들(1211)의 일부는 프로그램가능형 배선처럼 동작할 수 있다.
예를 들어, 도 11에 도시된 바와 같이, DSD 신호 경로들은 요구되는 바에 따라, 단방향 차동 DDS 신호 경로들 및 양방향 단일단 DQ 신호 경로들 간에 변경될 수 있다. 추가적으로, USD 신호 경로들은 단방향 UDS 신호 경로들과 양방향 단일단 ADDR/CMD 신호 경로들, 그리고/또는 양방향 차동 DQS 신호 경로들을 간에 변경될 수 있다. 또한, DSCLK 신호 경로들은 하나 이상의 단일단 MCLK 신호 경로와 단방향 클럭 신호 경로 간에 변경될 수 있다. 주목할 점은 다른 핀 조합도 가능하며 고려될 수 있다는 것이다.
위의 실시예들이 상당히 자세하게 설명되었지만, 당업자들에게는 위의 개시가 완전히 이해됨에 따라 다양한 변경 및 수정이 명백할 것이다. 다음의 청구항들은 모든 그러한 변경 및 수정을 포괄하도록 해석되는 것으로 의도되었다.
본 발명은 일반적으로 마이크로프로세서에 적용가능할 것이다.

Claims (26)

  1. 메모리 시스템으로서,
    각각, 하나 이상의 메모리 디바이스들과 병렬 배선(parallel interconnect)을 포함하는 하나 이상의 메모리 유닛들과;
    상기 병렬 배선을 통하여 상기 하나 이상의 메모리 유닛들에 연결된 하나 이상의 버퍼 유닛들과; 그리고
    각각의 직렬 배선을 통해 상기 하나 이상의 버퍼 유닛들 각각에 연결된 메모리 제어기를 포함하여 구성되며;
    상기 하나 이상의 버퍼 유닛들 각각은, 상기 메모리 제어기로부터 명령 정보를 수신함에 응답하여, 상기 각각의 직렬 배선을 통해 상기 메모리 제어기로부터 데이터를 수신하도록 되어 있으며, 그리고
    상기 메모리 제어기는, 상기 하나 이상의 메모리 유닛들로부터 수신된 정보에 근거하여, 전송 데이터(transmitted data)의 신호 특성들을 조정함으로써, 상기 메모리 제어기와 상기 하나 이상의 버퍼 유닛들 간에서의 데이터 전달(data transfer)을 비대칭적으로 제어하도록 되어 있는 것을 특징으로 하는 메모리 시스템.
  2. 제1항에 있어서,
    각각의 직렬 배선은, 각각 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유 닛과 상기 메모리 제어기 사이에서 데이터를 운반(convey)하도록 되어 있는 복수의 차동 양방향 데이터 신호 경로들을 포함하는 것을 특징으로 하는 메모리 시스템.
  3. 제1항에 있어서,
    각각의 직렬 배선은 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛으로 명령 정보를 운반하도록 되어있는 차동 명령 신호 경로를 포함하는 것을 특징으로 하는 메모리 시스템.
  4. 제2항에 있어서,
    상기 병렬 배선은 그룹들로 정렬된 복수의 양방향 데이터 신호 경로들을 포함하며, 각각의 그룹은 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛과 상기 하나 이상의 메모리 유닛들 간에 데이터를 운반하도록 되어 있는 것을 특징으로 하는 메모리 시스템.
  5. 제4항에 있어서,
    각각의 직렬 배선의 각 차동 양방향 데이터 신호 경로를 통해 운반된 데이터는 상기 병렬 배선의 양방향 데이터 신호 경로들 각각의 서브세트(subset)에 의해 운반되는 것을 특징으로 하는 메모리 시스템.
  6. 제1항에 있어서,
    상기 직렬 배선은 제1 데이터 전송 속도에서 동작하며 상기 병렬 배선은 제2 데이터 전송 속도에서 동작하며, 상기 제1 데이터 전송 속도는 제2 전송 속도보다 빠른 것을 특징으로 하는 메모리 시스템.
  7. 제6항에 있어서,
    각각의 직렬 배선은 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛으로 클럭을 운반하도록 되어 있는 차동 클럭 신호 경로를 포함하며, 상기 차동 클럭 신호들 각각은 상기 제1 데이터 전송 속도로 동작하는 것을 특징으로 하는 메모리 시스템.
  8. 제1항에 있어서,
    상기 병렬 배선은, 각각, 상기 메모리 제어기로부터 상기 하나 이상의 메모리 유닛들로 클럭 신호를 운반하도록 되어 있는 하나 이상의 클럭 신호 경로들을 포함하며, 상기 제2 클럭 신호는 상기 제2 데이터 전송 속도로 동작하는 것을 특징으로 하는 메모리 시스템.
  9. 제1항에 있어서,
    상기 하나 이상의 버퍼 유닛들은 상기 직렬 배선의 하나 이상의 단방향 CRC 신호 경로들을 통해 순환 중복 코드(CRC) 정보를 전송하도록 되어 있으며, 상기 CRC 정보는 상기 각각의 직렬 배선을 통해 상기 메모리 제어기에 의해 송신된 데이 터에 대응하는 것을 특징으로 하는 메모리 시스템.
  10. 제1항에 있어서,
    각각의 직렬 배선은, 각각, 데이터, 주소, 및 명령 정보를 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들로 운반하도록 되어 있는 복수의 다운스트림 차동 단방향 신호 경로들을 포함하는 것을 특징으로 하는 메모리 시스템.
  11. 제10항에 있어서,
    각각의 직렬 배선은 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들 각각으로 직렬 클럭을 운반하도록 되어 있는 다운스트림 단방향 차동 클럭 신호 경로를 포함하는 것을 특징으로 하는 메모리 시스템.
  12. 제1항에 있어서,
    각각의 직렬 배선은, 각각, 상기 하나 이상의 버퍼 유닛들 중 하나로부터 상기 메모리 제어기로 데이터와 순환 중복 코드(CRC) 정보를 운반하도록 되어 있는 복수의 업스트림 차동 단방향 신호 경로들을 포함하는 것을 특징으로 하는 메모리 시스템.
  13. 제12항에 있어서,
    각각의 직렬 배선은 상기 하나 이상의 버퍼 유닛들 중 하나로부터 상기 메모 리 제어기로 직렬 클럭 신호를 운반하도록 되어있는 업스트림 단방향 차동 클럭 신호 경로를 포함하는 것을 특징으로 하는 메모리 시스템.
  14. 컴퓨터 시스템으로서,
    프로세서와; 그리고
    상기 프로세서에 연결된 메모리 시스템을 포함하며, 상기 메모리 시스템은,
    각각이 하나 이상의 메모리 디바이스들 및 병렬 배선을 포함하는 하나 이상의 메모리 유닛들과;
    상기 병렬 배선을 통해 상기 하나 이상의 메모리 유닛들에 연결된 하나 이상의 버퍼 유닛들과; 그리고
    각각의 직렬 배선을 통해 상기 하나 이상의 버퍼 유닛들 각각에 연결된 메모리 제어기를 포함하며,
    상기 하나 이상의 버퍼 유닛들 각각은, 상기 메모리 제어기로부터 명령 정보를 수신함에 응답하여, 상기 각각의 직렬 배선을 통해 상기 메모리 제어기로부터 데이터를 수신하고 상기 데이터를 상기 병렬 배선을 통해 상기 하나 이상의 메모리 유닛들로 전송하도록 되어 있으며; 그리고
    상기 메모리 제어기는 상기 하나 이상의 버퍼 유닛들로부터 수신된 정보에 근거하여 전송 데이터의 신호 특성들을 조정함으로써 상기 메모리 제어기와 상기 하나 이상의 버퍼 유닛들 간의 데이터 전달을 비대칭적으로 제어하도록 되어있는 것을 특징으로 하는 컴퓨터 시스템.
  15. 제14항에 있어서,
    각각의 직렬 배선은, 각각, 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛과 상기 메모리 제어기 간에 데이터를 운반하도록 되어 있는 복수의 차동 양방향 데이터 신호 경로들을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  16. 제14항에 있어서,
    각각의 직렬 배선은, 각각, 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛으로 명령 정보를 운반하도록 되어 있는 차동 명령 신호 경로를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  17. 제15항에 있어서,
    상기 병렬 배선은 그룹들로 정렬된 복수의 양방향 데이터 신호 경로들을 포함하며, 각각의 그룹은 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛과 상기 하나 이상의 메모리 유닛들 간에 데이터를 운반하도록 되어 있는 것을 특징으로 하는 컴퓨터 시스템.
  18. 제17항에 있어서,
    상기 각각의 직렬 배선의 각각의 차동 양방향 데이터 신호 경로를 통해 운반된 데이터는 상기 병렬 배선의 양방향 데이터 신호 경로들의 각 서브세트에 의해 운반되는 것을 측징으로 하는 컴퓨터 시스템.
  19. 제14항에 있어서,
    상기 직렬 배선은 제1 데이터 전송 속도에서 동작하며, 상기 병렬 베선은 제2 데이터 전송 속도에서 동작하고, 상기 제1 데이터 전송 속도는 제2 전송 속도보다 빠른 것을 특징으로 하는 컴퓨터 시스템.
  20. 제14항에 있어서,
    상기 병렬 배선은, 각각, 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛으로 클럭을 운반하도록 되어 있으며, 상기 차동 클럭 신호들 각각은 상기 제1 데이터 전송 속도로 동작하는 것을 특징으로 하는 컴퓨터 시스템.
  21. 제14항에 있어서,
    상기 병렬 배선은, 각각, 상기 메모리 제어기로부터 상기 하나 이상의 메모리 유닛들 중 주어진 버퍼 유닛으로 클럭 신호를 운반하도록 되어있는 하나 이상의 클럭 신호 경로들을 포함하며, 상기 제2 클럭 신호는 상기 제2 데이터 전송 속도에서 동작하는 것을 특징으로 하는 컴퓨터 시스템.
  22. 제14항에 있어서,
    상기 하나 이상의 버퍼 유닛들 각각은 상기 병렬 배선의 하나 이상의 단방향 CRC 신호 경로들을 통해 순환 중복 코드(CRC) 정보를 전송하도록 되어 있으며, 상기 CRC 정보는 상기 각각의 직렬 배선을 통해 메모리 제어기가 송신한 데이터에 대응하는 것을 특징으로 하는 컴퓨터 시스템.
  23. 제14항에 있어서,
    각각의 직렬 배선은, 각각, 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들로 데이터, 주소, 및 상기 명령 정보를 운반하도록 되어 있는 복수의 다운스트림 차동 단방향 신호 경로들을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  24. 제23항에 있어서,
    각각의 직렬 배선은 상기 메모리 제어기로부터 상기 하나 이상의 버퍼 유닛들 중 주어진 버퍼 유닛으로 직렬 클럭 신호를 운반하도록 되어 있는 다운스트림 단방향 차동 클럭 신호 경로를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  25. 제14항에 있어서,
    각각의 직렬 배선은, 각각, 상기 하나 이상의 버퍼 유닛들로부터 상기 메모리 제어기로 데이터를 운반하도록 되어 있는 복수의 업스트림 차동 단방향 신호 경로들을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  26. 제25항에 있어서,
    각각의 직렬 배선은 상기 하나 이상의 버퍼 유닛들로부터 상기 메모리 제어기로 직렬 클럭 신호를 운반하도록 되어 있는 업스트림 단방향 차동 클럭 신호 경로를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
KR1020097011022A 2006-10-31 2007-10-29 고속 직렬 버퍼를 포함하는 메모리 시스템 KR20090080538A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/590,285 US20080104352A1 (en) 2006-10-31 2006-10-31 Memory system including a high-speed serial buffer
US11/590,285 2006-10-31

Publications (1)

Publication Number Publication Date
KR20090080538A true KR20090080538A (ko) 2009-07-24

Family

ID=39167598

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097011022A KR20090080538A (ko) 2006-10-31 2007-10-29 고속 직렬 버퍼를 포함하는 메모리 시스템

Country Status (8)

Country Link
US (1) US20080104352A1 (ko)
JP (1) JP5300732B2 (ko)
KR (1) KR20090080538A (ko)
CN (1) CN101583934B (ko)
DE (1) DE112007002605T5 (ko)
GB (1) GB2456098B (ko)
TW (1) TW200830326A (ko)
WO (1) WO2008054694A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250295B2 (en) 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US8001434B1 (en) * 2008-04-14 2011-08-16 Netlist, Inc. Memory board with self-testing capability
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8787060B2 (en) 2010-11-03 2014-07-22 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US8154901B1 (en) 2008-04-14 2012-04-10 Netlist, Inc. Circuit providing load isolation and noise reduction
KR101534790B1 (ko) * 2008-10-15 2015-07-07 마벨 월드 트레이드 리미티드 데이터 저장 시스템들을 위한 구조
US9128632B2 (en) 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
WO2011130007A1 (en) * 2010-04-14 2011-10-20 Rambus Inc. Levelization of memory interface for communicating with multiple memory devices
KR101728067B1 (ko) * 2010-09-03 2017-04-18 삼성전자 주식회사 반도체 메모리 장치
US8880819B2 (en) 2011-12-13 2014-11-04 Micron Technology, Inc. Memory apparatuses, computer systems and methods for ordering memory responses
JP5895640B2 (ja) * 2012-03-21 2016-03-30 富士ゼロックス株式会社 データ処理装置およびメモリ制御装置
CN105706064B (zh) 2013-07-27 2019-08-27 奈特力斯股份有限公司 具有本地分别同步的内存模块
US9141541B2 (en) 2013-09-20 2015-09-22 Advanced Micro Devices, Inc. Nested channel address interleaving
US10684224B2 (en) 2014-06-05 2020-06-16 Universität Heidelberg Method and means for multispectral imaging
US10095421B2 (en) 2016-10-21 2018-10-09 Advanced Micro Devices, Inc. Hybrid memory module bridge network and buffers
US10418125B1 (en) 2018-07-19 2019-09-17 Marvell Semiconductor Write and read common leveling for 4-bit wide DRAMs
US10541841B1 (en) * 2018-09-13 2020-01-21 Advanced Micro Devices, Inc. Hardware transmit equalization for high speed
US11734174B2 (en) * 2019-09-19 2023-08-22 Intel Corporation Low overhead, high bandwidth re-configurable interconnect apparatus and method
TWI771982B (zh) * 2021-04-13 2022-07-21 國立中山大學 雙邊緣觸發的正反器電路與其移位暫存器

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5272664A (en) * 1993-04-21 1993-12-21 Silicon Graphics, Inc. High memory capacity DRAM SIMM
US5504700A (en) * 1994-02-22 1996-04-02 Sun Microsystems, Inc. Method and apparatus for high density sixteen and thirty-two megabyte single in-line memory module
JP3455040B2 (ja) * 1996-12-16 2003-10-06 株式会社日立製作所 ソースクロック同期式メモリシステムおよびメモリユニット
CA2302466A1 (en) * 1997-07-31 1999-02-11 Stanford Syncom Inc. Means and method for a synchronous network communications system
US20040236877A1 (en) * 1997-12-17 2004-11-25 Lee A. Burton Switch/network adapter port incorporating shared memory resources selectively accessible by a direct execution logic element and one or more dense logic devices in a fully buffered dual in-line memory module format (FB-DIMM)
JP2000148656A (ja) * 1998-11-09 2000-05-30 Mitsubishi Electric Corp メモリシステム
US6338144B2 (en) * 1999-02-19 2002-01-08 Sun Microsystems, Inc. Computer system providing low skew clock signals to a synchronous memory unit
US6839393B1 (en) * 1999-07-14 2005-01-04 Rambus Inc. Apparatus and method for controlling a master/slave system via master device synchronization
US6321282B1 (en) * 1999-10-19 2001-11-20 Rambus Inc. Apparatus and method for topography dependent signaling
US6502161B1 (en) * 2000-01-05 2002-12-31 Rambus Inc. Memory system including a point-to-point linked memory subsystem
US6215727B1 (en) * 2000-04-04 2001-04-10 Intel Corporation Method and apparatus for utilizing parallel memory in a serial memory system
JP3757757B2 (ja) * 2000-05-18 2006-03-22 株式会社日立製作所 リード優先メモリシステム
US6516282B2 (en) * 2001-04-19 2003-02-04 Ge Medical Systems Global Technology Company Predictive thermal control used with a vacuum enclosed coil assembly of a magnetic resonance imaging device
DE10123769C1 (de) * 2001-05-16 2002-12-12 Infineon Technologies Ag Verfahren zur Anpassung unterschiedlicher Signallaufzeiten zwischen einer Steuerung und wenigstens zweier Verarbeitungseinheiten sowie Rechnersystem
TW563132B (en) * 2001-10-09 2003-11-21 Via Tech Inc Common DRAM controller supports double-data-rate and quad-data-rate memory
US7003684B2 (en) * 2002-03-27 2006-02-21 Via Technologies, Inc. Memory control chip, control method and control circuit
JP3866618B2 (ja) * 2002-06-13 2007-01-10 エルピーダメモリ株式会社 メモリシステム及びその制御方法
US20040098545A1 (en) * 2002-11-15 2004-05-20 Pline Steven L. Transferring data in selectable transfer modes
US7313639B2 (en) * 2003-01-13 2007-12-25 Rambus Inc. Memory system and device with serialized data transfer
WO2004102403A2 (en) * 2003-05-13 2004-11-25 Advanced Micro Devices, Inc. A system including a host connected to a plurality of memory modules via a serial memory interconnect
US7165153B2 (en) * 2003-06-04 2007-01-16 Intel Corporation Memory channel with unidirectional links
US7222224B2 (en) * 2004-05-21 2007-05-22 Rambus Inc. System and method for improving performance in computer memory systems supporting multiple memory access latencies
US7516029B2 (en) * 2004-06-09 2009-04-07 Rambus, Inc. Communication channel calibration using feedback
KR100643605B1 (ko) * 2004-08-16 2006-11-10 삼성전자주식회사 적응형 프리 엠퍼시스 장치, 데이터 통신용 송신기,데이터 통신용 송수신 장치 및 적응형 프리 엠퍼시스 방법
KR100588599B1 (ko) * 2005-05-03 2006-06-14 삼성전자주식회사 메모리 모듈 및 메모리 시스템
US7368950B2 (en) * 2005-11-16 2008-05-06 Montage Technology Group Limited High speed transceiver with low power consumption
US7558124B2 (en) * 2005-11-16 2009-07-07 Montage Technology Group, Ltd Memory interface to bridge memory buses
US7577039B2 (en) * 2005-11-16 2009-08-18 Montage Technology Group, Ltd. Memory interface to bridge memory buses

Also Published As

Publication number Publication date
GB2456098A (en) 2009-07-08
CN101583934A (zh) 2009-11-18
WO2008054694A1 (en) 2008-05-08
DE112007002605T5 (de) 2010-04-22
JP5300732B2 (ja) 2013-09-25
GB0907462D0 (en) 2009-06-10
JP2010508599A (ja) 2010-03-18
TW200830326A (en) 2008-07-16
CN101583934B (zh) 2013-01-09
GB2456098B (en) 2011-11-09
US20080104352A1 (en) 2008-05-01

Similar Documents

Publication Publication Date Title
US8019907B2 (en) Memory controller including a dual-mode memory interconnect
KR20090080538A (ko) 고속 직렬 버퍼를 포함하는 메모리 시스템
US7219294B2 (en) Early CRC delivery for partial frame
US7395485B2 (en) Check codes mapped across multiple frames
US7624225B2 (en) System and method for providing synchronous dynamic random access memory (SDRAM) mode register shadowing in a memory system
US7979616B2 (en) System and method for providing a configurable command sequence for a memory interface device
US7952944B2 (en) System for providing on-die termination of a control signal bus
US7593288B2 (en) System for providing read clock sharing between memory devices
US7861140B2 (en) Memory system including asymmetric high-speed differential memory interconnect
US7212423B2 (en) Memory agent core clock aligned to lane
WO2005050465A2 (en) Lane testing with variable mapping
US20060004953A1 (en) Method and apparatus for increased memory bandwidth
WO2010069045A1 (en) Error detection method and a system including one or more memory devices
US10740264B1 (en) Differential serial memory interconnect
US20050268061A1 (en) Memory channel with frame misalignment
WO2022051128A1 (en) Data-buffer controller/control-signal redriver
WO2022179368A1 (zh) 优化闪存颗粒的方法和相关装置
US20080151591A1 (en) Memory system with a configurable number of read data bits

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application