KR20090077015A - 듀얼-모드 메모리 상호접속을 포함하는 메모리 제어기 - Google Patents

듀얼-모드 메모리 상호접속을 포함하는 메모리 제어기 Download PDF

Info

Publication number
KR20090077015A
KR20090077015A KR1020097011350A KR20097011350A KR20090077015A KR 20090077015 A KR20090077015 A KR 20090077015A KR 1020097011350 A KR1020097011350 A KR 1020097011350A KR 20097011350 A KR20097011350 A KR 20097011350A KR 20090077015 A KR20090077015 A KR 20090077015A
Authority
KR
South Korea
Prior art keywords
memory controller
data
memory
differential
signal paths
Prior art date
Application number
KR1020097011350A
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 KR20090077015A publication Critical patent/KR20090077015A/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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Information Transfer Systems (AREA)
  • Static Random-Access Memory (AREA)

Abstract

듀얼 모드 메모리 상호접속을 포함하는 메모리 제어기가 제공되며, 상기 메모리 제어기는 복수의 입력 버퍼들 및 복수의 출력 드라이버들을 포함하는 입력/출력(I/O) 회로를 포함한다. 상기 I/O 회로는 모드 선택 신호의 상태에 따라 제 1 모드 및 제 2 모드 중 하나의 모드에서 동작하도록 구성될 수 있다. 상기 제 1 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 메모리 모듈들로의 접속을 위한 병렬 상호접속을 제공하도록 구성될 수 있다. 상기 제 2 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 버퍼 유닛들 각각으로의 접속을 위한 각각의 직렬 상호접속을 제공하도록 구성될 수 있고, 상기 버퍼 유닛들 각각은 상기 하나 또는 그 이상의 메모리 모듈들로부터 판독되거나 또는 상기 하나 또는 그 이상의 메모리 모듈들에 기입되는 메모리 데이터를 버퍼링하도록 구성될 수 있다.

Description

듀얼-모드 메모리 상호접속을 포함하는 메모리 제어기{MEMORY CONTROLLER INCLUDING A DUAL-MODE MEMORY INTERCONNECT}
본 발명은 컴퓨터 메모리 시스템에 관한 것으로, 특히 메모리 제어기와 메모리 유닛 간의 데이터 전달에 관한 것이다.
컴퓨터 시스템은 여러 개의 서로 다른 타입의 시스템 메모리를 사용한다. 일반적 타입의 한가지 시스템 메모리는 탈착가능한 메모리 모듈을 사용하여 구현된다. 메모리 모듈들은 서로 다른 타입 및 구성을 갖는다. 그러나, 일반적으로, 메모리 모듈은 에지 커넥터(edge connector) 및 많은 메모리 디바이스를 구비한 인쇄 회로 기판으로서 구현될 수 있다. 메모리 모듈은 마더보드 혹은 다른 시스템 보드 상에 위치하는 소켓(socket)에 플러그인(plug in)될 수 있다. 일반적으로 사용되는 메모리 모듈은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module, DIMM)로서 알려져 있으나, 다른 것도 있을 수 있다. 다른 시스템에서, 메모리 디바이스들은 탈착가능하지 않을 수 있고 그리고 마더보드 혹은 시스템 보드에 바로 장착될 수 있다.
컴퓨터 시스템 프로세서 속도 및 성능은 최근 급속하게 증가하고 있다. 그러나, 일반적으로 시스템의 메모리 성능은 뒤처져 있다. 그래서, 일부 시스템 성능 개선은 시스템 메모리의 성능에 의해 제한될 수 있다. 따라서, 시스템 메모리 대역폭 및 용량에서의 개선은 시스템 설계자들의 중요 관심 대상이 될 수 있다.
시스테 메모리 성능에서의 개선이 가능할지라도, 이러한 개선은 때때로 비용이 많이 든다. 그래서, 비용을 낮추면서 시스템 메모리 대역폭 및 용량을 개선하는 것이 바람직하다.
듀얼 모드 메모리 상호접속을 포함하는 메모리 제어기의 다양한 실시예들이 개시된다. 일 실시예에서, 메모리 제어기는 복수의 입력 버퍼들 및 복수의 출력 드라이버들을 포함하는 입력/출력(I/O) 회로를 포함한다. 상기 I/O 회로는 모드 선택 신호의 상태에 따라 제 1 모드 및 제 2 모드 중 하나의 모드에서 동작하도록 구성될 수 있다. 상기 제 1 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 메모리 모듈들로의 접속을 위한 병렬 상호접속을 제공하도록 구성될 수 있다. 상기 제 2 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 버퍼 유닛들 각각으로의 접속을 위한 각각의 직렬 상호접속을 제공하도록 구성될 수 있고, 상기 버퍼 유닛들 각각은 상기 하나 또는 그 이상의 메모리 모듈들로부터 판독되거나 또는 상기 하나 또는 그 이상의 메모리 모듈들에 기입되는 메모리 데이터를 버퍼링하도록 구성될 수 있다.
일 실시예에서, 각각의 직렬 상호접속은 복수의 차동 쌍방향 데이터 신호 경로들을 포함한다. 각각의 차동 쌍방향 데이터 신호 경로는 소정의 버퍼 유닛과 상기 메모리 제어기 간에 데이터를 전달할 수 있다.
또 다른 실시예에서, 각각의 직렬 상호접속은 커맨드 정보를 메모리 제어기로부터 소정의 버퍼 유닛으로 전달할 수 있는 차동 커맨드 신호 경로를 포함한다.
또 다른 실시예에서, 각각의 직렬 상호접속은 복수의 다운스트림 차동 단방향 신호 경로들 및 다운스트림 단방향 차동 클럭 신호 경로를 포함한다. 다운스트림 차동 단방향 신호 경로들 각각은 데이터, 어드레스 및 커맨드 정보를 메모리 제어기로부터 하나 또는 그 이상의 버퍼 유닛들로 전달할 수 있다. 다운스트림 단방향 차동 클럭 신호 경로는 직렬 클럭 신호를 메모리 제어기로부터 하나 또는 그 이상의 버퍼 유닛들 각각으로 전달할 수 있다.
또 다른 실시예에서, 각각의 직렬 상호접속은 복수의 업스트림 차동 단방향 신호 경로들을 포함한다. 업스트림 차동 단방향 신호 경로들 각각은 데이터 및 순환 잉여 코드(Cyclic Redundancy Code, CRC) 정보를 하나 또는 그 이상의 버퍼 유닛들 중 하나로부터 메모리 제어기로 전달할 수 있다.
도 1은 고속 버퍼를 포함하는 메모리의 일 실시예를 나타낸 블럭도이다.
도 2는 도 1의 메모리 시스템 컴포넌트의 더 세부적 실시형태를 나타낸 도면이다.
도 3은 도 1 및 도 2에 도시된 실시예들의 예시적 버스트 동작을 나타낸 타이밍도이다.
도 4는 도 1 내지 도 3에 도시된 실시예들의 동작을 나타낸 흐름도이다.
도 5는 도 1에 도시된 메모리 시스템을 포함하는 컴퓨터 시스템의 일 실시예 를 나타낸 블럭도이다.
도 6은 듀얼 모드 메모리 제어기를 포함하는 도 6의 컴퓨터 시스템의 실시예를 나타낸 블럭도이다.
도 7은 듀얼 모드 인터페이스를 구비한 메모리 제어기를 포함하는 메모리 시템의 일 실시예를 나타낸 블럭도이다.
도 8은 도 7의 메모리 시스템 컴포넌트들의 더 세부적 실시형태를 나타낸 도면이다.
도 9는 도 7 및 도 8에 도시된 실시예들의 동작을 나타낸 흐름도이다.
도 10은 도 7에 도시된 메모리 시스템을 포함하는 컴퓨터 시스템의 일 실시예를 나타낸 블럭도이다.
도 11은 듀얼 모드 메모리 제어기를 포함하는 도 10의 컴퓨터 시스템의 실시예를 나타낸 블럭도이다.
본 발명의 다양한 수정 및 그 대안적 형태가 가능하지만, 특정 실시예들이 단지 예시적으로 도면에서 도시되고 본 명세서에서 상세히 설명된다. 그러나 이해해야만 하는 것으로, 이러한 도면 및 상세한 설명을 통해 본 발명을 이처럼 개시되는 특정 실시예에만 한정시키려하는 것이 아니며, 이와는 반대로 첨부되는 특허청구범위에 의해 정의되는 바와 같이 본 발명의 사상 및 범위 내에 있는 모든 수정물, 등가물, 및 대안물을 포괄하는 것으로 이해되어야 한다. 유의할 것으로, 어구 "~ 할 수 있다"는 본 명세서 전체에 걸쳐 허용적 의미(즉, ~할 가능성, ~할 잠재 성)로 사용된 것이지, 강제적 의미(즉, 반드시 ~ 한다)로 사용된 것이 아니다.
이제 도 1을 참조하면, 고속 직렬 버퍼의 일 실시예를 포함하는 메모리 시스템의 블럭도가 도시된다. 메모리 시스템(10)은 메모리 유닛(110A 내지 110H)에 연결되고, 그리고 버퍼 유닛(170A 내지 170J)에 연결되는 메모리 제어기(100)를 포함한다. 유의할 것으로 번호 및 문자를 갖는 참조 부호를 포함하는 컴포넌트들은 단지 번호만으로 언급될 수 있다. 예를 들어, 메모리 유닛(110A)은 적절할 경우 메모리 유닛(110)으로 언급될 수 있다. 또한 유의할 것으로, 메모리 제어기(100)는 노스브리지 구성(Northbridge arrangement)에서 사용될 수 있는 바와 같은, 칩셋의 일부인 메모리 제어기일 수 있다. 대안적으로, 도 5에 도시된 바와 같이, 메모리 제어기(100)는 임베드될 수 있는데, 이 경우, 예를 들어, 하나 또는 그 이상의 프로세서 코어를 포함하는 프로세싱 노드 내에 메모리 제어기(100)가 임베드된다.
일 실시예에서, 메모리 유닛들(110A ~ 110H)은 예를 들어 듀얼 인-라인 메모리 모듈(Dual In-line Memory Modules, DIMM)과 같은 메모리 모듈일 수 있다. 그래서, 각각의 DIMM은 예를 들어 메모리 디바이스들의 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM) 내의 디바이스들과 같은 복수의 메모리 디바이스들(미도시)을 포함할 수 있다. 그러나, 유의할 것으로, 일반적으로, 시스템(10)의 메모리 유닛들(110)은 임의 타입의 시스템 메모리를 나타낼 수 있다.
예시적 실시예에서, 메모리 제어기(100)는 고속 직렬 상호접속(160A 및 160B)을 통해 버퍼 유닛들(170)에 연결된다. 일 실시예에서, 각각의 고속 직렬 상호접속(160)은 차동 신호 기술(differential signaling techniques)을 사용한다. 고속 직렬 상호접속(160)은 복수의 차동 쌍방향 데이터 신호 경로(DDQ), 차동 버퍼 커맨드 신호 경로(BCMD), 차동 클럭 신호 경로(WCLK), 및 차동 순환 잉여 코드 신호 경로(CRC)를 포함할 수 있다. 예시적 실시예에서, 두 개의 메모리 채널이 도시된다. 이 경우, 직렬 상호접속(160A)은 하나의 채널을 위해 사용될 수 있고, 따라서 버퍼 유닛(170A 내지 170F)에 연결되고, 그리고 직렬 상호접속(160B)은 다른 채널을 위해 사용될 수 있으며 버퍼 유닛(170G 내지 170J)에 연결된다. 유의할 것으로, 예시적 실시예에서, 버퍼 유닛(170E 및 170J) 각각의 일부는 사용되지 않으며, 필요하다면 다른 목적을 위해 사용될 수 있다.
추가적으로, 메모리 제어기(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 데이터 경로는 복수의 팔-비트(바이트 폭) 데이터 경로를 포함할 수 있다. 예를 들어, 풀 데이터 경로(full data path)는 288 비트 폭 일 수 있지만, 풀 데이터 경로는 바이트 크기의 부분들로 나누어질 수 있다. 유의할 것으로, 일 실시예에서, 288 비트는 네 개의 체크 바이트(check byte)를 포함할 수 있고, 반면에 다른 실시예에서는 다른 개수의 체크 바이트가 사용될 수 있다. 또한 유의할 것으로, 풀 데이터 경로는 임의 개수의 데이터 비트를 포함할 수 있고, 그리고 다른 크기의 부분들로 나누어질 수 있다. 직력 상호접속(160)의 DDQ 데이터 경로는 병렬 상호접속을 통해 전달되는 데이터를 직렬로 그리고 고속으로 전달할 수 있다. 예를 들어, DDQ0 신호 경로는 DQ[0:3]에 대응하는 데이터 비트들을 전달할 수 있고, DDQ1 신호 경로는 DQ[4:7]에 대응하는 데이터 비트들을 전달할 수 있는 등등이지만, 다른 맵핑도 가능하다.
데이터 경로들이 메모리 유닛들(110)에 연결될 수 있는 다양한 방법이 존재한다. 예를 들어, 버퍼 유닛들(170)이 단일 집적 회로의 일부일 수 있는 경우가 고려될 수 있다. 그러나, 이러한 구현을 위해 요구될 수 있는 많은 핀 개수로 인해, 실제로 실현불가능하다. 그래서, 일 실시예에서, 데이터 경로는 분열되어 더 작은 단위로 그룹화될 수 있다. 따라서, 일 실시예에서, 버퍼 유닛들(170) 각각은 각각의 그룹에 버퍼 기능을 제공하는 단독형 집적 회로일 수 있다.
일 실시예에서, 기입 동작 동안, 각각의 직렬 버퍼 유닛(170)은 직렬로 클럭 인(clock in)하여, 두 개의 바이트들을 저장하고, 그 다음에 병렬 상호접속(165) 상에서 병렬로 이러한 두 개의 바이트들을 순차적으로 전송할 수 있다. 필요한 작업량(throughput)을 얻기 위해, 일 실시예에서, 직렬 상호접속(160)은 병렬 상호접속(165)이 데이터 신호 경로 상에서 데이터를 전송하는 속도의 네 배의 속도에서 데이터를 전송할 수 있다. 그러나, ADDR/CMD 신호 경로 및 MCLK 신호 경로는 병렬 상호접속(165)의 데이터 경로의 속도의 반인 속도에서 동작할 수 있다. 예를 들어, 직렬 상호접속(160)은 6.4GT/s로 DDQ 데이터 경로 상에서 데이터를 전송할 수 있고, 반면에 병렬 상호접속(165)의 데이터 신호 경로 DQ/DQS는 1600MT/s에서 데이터를 전송할 수 있고, 그리고 ADDR/CMD 및 MCLK 신호 경로는 800MT/s에서 동작할 수 있다. 유의할 것으로, 다른 실시예에서, 직렬 버퍼 유닛들(170)은 임의 개수의 바이트들을 병렬 인터페이스(165) 상에서 전송하기 이전에 저장할 수 있다. 또한 유의할 것으로, 직렬 상호접속(160)은 병렬 상호접속(165)과 관련하여 임의의 적당한 데이터 속도에서 동작할 수 있다.
CRC 신호 경로는 CRC 정보를 각각의 단방향 차동 신호 경로를 통해 각각의 버퍼 유닛(170)으로부터 메모리 제어기(100)로 전달할 수 있다. 추가적으로, 클럭 신호 경로는 WCLK 신호를 버퍼 유닛들(170) 각각에 전달할 수 있다. 마찬가지로, BCMD 신호 경로들은 버퍼 커맨드를 메모리 제어기(100)로부터 버퍼 유닛들(170) 각각에 전달한다.
일 실시예에서, 메모리 제어기(100)는 BCMD 신호 경로들을 통해 전송된 커맨드를 통해 버퍼 유닛들(170)의 동작을 제어할 수 있다. 이 경우, 버퍼 유닛들(170) 은 정상 동작 모드와 구성 및 테스트 모드를 가질 수 있다. 예를 들어, 정상 데이터 동작 동안, 메모리 제어기(100)는, 데이터 저장소에 대한 판독 및 기입을 수행하고, 아울러 DQ 신호 경로의 위상 오프셋을 조절하기 위해, 데이터와 프리앰블(preamble) 및 포스트앰블(postamble)에 대한 판독 및 기입 커맨드를 전송할 수 있다. 추가로, 메모리 제어기(100)는, 예를 들어, 다양한 루프백 커맨드(loopback commands), CRC 제어 커맨드, 및 CRC 훈련 패턴 커맨드(CRC training pattern commands)를 전송함으로써 버퍼 유닛들(170)의 구성, 훈련, 및 테스트를 제어할 수 있다.
높은 데이터 속도에서 버퍼 유닛(170) 혹은 메모리 제어기(100)가 비트 에러를 수신할 확률은 상당히 높다. 따라서, 보호되는 블럭 내에서 복수의 비트 에러들을 엄격히 검출할 수 있는 에러 검출 코드로 메모리 제어기(100)와 버퍼 유닛들(170) 간의 전송을 보호할 필요가 있을 수 있다. 일 실시예에서, CRC 코드는 이러한 복수의 비트 에러 검출을 제공하기 위해 사용될 수 있다. 특히, 도 2에 도시된 바와 같이, 버퍼 유닛 및/또는 메모리 모듈에서의 로직을 간단히 하기 위해, 그리고 메모리 제어기(100)에 에러를 보고할 때, 버퍼 유닛(170)은 발생된 데이터 혹은 수신된 데이터에 근거하여 CRC를 계산한다. 따라서, 메모리 제어기(100)에 다시 CRC 정보를 전송하기 위해, 단방향 CRC 신호 경로들이 사용될 수 있다. 도 2에 도시된 바와 같이, CRC 유닛(250)은 그 내부의 데이터에 근거하여 CRC를 계산할 수 있고, 그리고 다시 메모리 제어기(100)에 CRC 데이터를 전송할 수 있다. 어느 한쪽 방향에서의 링크 상에서 에러가 검출될 때, 메모리 제어기(100)는 동작을 재시도함 으로써 에러를 정정할 수 있다.
일 실시예에서, CRC 정보는 계산되어, 버퍼 유닛(170)으로부터 메모리 제어기(100)로 전송시 데이터와 함께 동시에 보내질 수 있고, 그래서 CRC는, 메모리 제어기(100)에 도달할 때, 보호되는 데이터 블럭과 동일한 시간에 이용가능하게 될 수 있다. 일 실시예에서, CRC 계산과 관련된 지연은, 기입에서 판독으로의 전이 및 판독에서 기입으로의 전이 동안, 데이터 경로들 상에 도입된 지연에 의해 완화될 수 있다.
앞서 언급된 바와 같이, 종래의 많은 시스템들은, 예를 들어, 양쪽 통신 디바이스들에서, 클럭 위상 복원, 채널 등화, 에러 검출과 같은 제어 기능을 구현함으로써 고속의 쌍방향 통신을 제어한다. 그러나, 아래에서 더 상세히 설명되는 바와 같이, 버퍼 유닛(170)은 간단하게 될 수 있어, 이런 타입의 제어 기능은 비대칭이 된다. 이 경우, 메모리 제어기(100)는, 버퍼 유닛(170)으로부터 수신되는 정보에 근거하여 버퍼 유닛(170)이 데이터를 올바르게 판독할 수 있도록, 전송된 기입 데이터의 신호 특성(예를 들어, 위상 등)을 동적으로 그리고 적합하게 조절할 수 있는 제어 기능을 포함할 수 있다. 추가로, 메모리 제어기(100)는 메모리 제어기(100)가 버퍼 유닛(170)에 의해 전송된 데이터를 수신할 수 있도록 그 내부의 수신기 특성을 조절할 수 있다. 또한, 메모리 제어기(100)는 어드레스 및 커맨드 정보가 올바르게 샘플링될 수 있도록 버퍼 유닛(170)에 제공되는 클럭 신호들의 위상을 조절할 수 있다.
특히, 높은 데이터 속도에서, 버스 내의 서로 다른 신호들에 대한 전송 경로 에서의 지연의 불확실성은, 이러한 신호들의 수신기의 샘플 클럭의 비트 당 위상 조절(per bit phase adjustment)을 요구할 수 있다. 버퍼 유닛(170)에서의 이러한 회로의 사용을 피하기 위해, 메모리 제어기(100)는 전송된 클럭 및 데이터 신호들의 위상을 조절하여 슬레이브에서의 복합 위상 시트팅 회로(complex 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)에 의해 발생될 수 있고, 이것은 가변 위상 유닛들(293, 294, 295, 및 296)에 연결될 수 있으며, 가변 위상 유닛들은 클럭 유닛(106)의 일부일 수 있으며 메모리 제어기(100)에 내부 클럭을 제공할 수 있다. 가변 위상 유닛들(293, 294, 295, 및 296)의 출력들은 각각 플립-플롭(Flip-Flops, FF)(290, 289, 286, 및 284)에 클럭 신호를 제공한다. 가변 위상 유닛(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)에 연결되고, 그 출력이 수신기 클럭 데이터 복원 유닛(RxCDR)(282)의 입력에 연결된다. RxCDR이 비트 당 오프셋 유닛(per bit offset unit)(285)에 연결되고, 이것은 가변 위상 유닛(296)에 연결된다. 버퍼 커맨드 정보가 FF(289)의 입력에 제공된다. FF(289)의 출력이 차동 등화 출력 드라이버(288)에 연결되고, 이것은 차동 BCMD 신 호 경로에 연결된다.
버퍼 유닛(170)은 DDQ[7:0] 신호 경로들 각각에 대한 차동 입력 버퍼를 나타내는 버퍼(209)를 포함한다. 버퍼(209)는 DDQ[7:0] 신호 경로들 중 하나 상에서 전송된 기입 데이터를 수신하도록 연결된다. 버퍼(209)의 출력은 FF(208)의 입력에 연결된다. FF(208)의 출력은 기입 FIFO(220)에 연결된다. 기입 FIFO(220)의 출력은 DRAM 인터페이스(256)에 연결되고, 이것은 병렬 상호접속(165)을 통해 메모리 유닛들(110)에 대한 인터페이스를 위해 사용되는 출력 드라이버 회로들 및 입력 버퍼를 나타낸다. 도시된 바와 같이, 16개의 데이터 스트로브 신호 경로들 DQS[15:0] 및 32개의 데이터 신호 경로들 DQ[31:0]이 병렬 상호접속(165)의 일부로서 존재한다. 기입 FIFO로부터의 기입 데이터가 DQ[31:0]를 통해 메모리 유닛들(110)에 출력될 수 있다. 유의할 것으로, 비록 단지 DQ 및 DQS 신호들만이 도시되었지만, 다른 신호들은 간략한 설명을 위해 생략되었다. 또한 유의할 것으로, 비록 간략한 설명을 위해 도시되지는 않았지만 MCLK 및 DQS 신호들은 차동 신호들일 수 있다.
DQ[31:0]을 통한 메모리 유닛들(110)로부터의 판독 데이터는 DRAM 인터페이스(256)를 통해 멀티플렉서(multiplexer, mux)(203)의 하나의 입력에 연결된다. mux(203)의 출력이 FF(206)의 입력에 제공된다. 제어 로직(255)은 mux(203)의 멀티플렉서 입력 선택을 제어한다. FF(206)의 출력은 DDQ[7:0]의 차동 신호 경로들 중 하나에 연결되는 차동 등화 데이터 출력 드라이버(210)에 연결된다.
버퍼 유닛(170)은 입력 버퍼(201)를 통해 메모리 제어기(100)로부터 버퍼 커맨드 정보(BCMD)를 수신하도록 연결된 제어 로직(255)를 포함하고, 이것은 FF(202) 의 입력에 연결된다. BCMD 정보는 제어 로직(255)으로 하여금 DQ 데이터 경로들 상의 기입 데이터를 구동하도록 할 수 있고, 또는 DQ 데이터 경로들에 대한 데이터를 판독하도록 할 수 있고, 또는 초기화 시퀀스에 진입하도록 할 수 있고 그리고 초기화 시퀀스에서 나오도록 할 수 있고 기타 등등을 할 수 있다. 따라서, 제어 로직(255)은 DRAM 인터페이스(256), CRC 유닛(250), mux(203)를 제어할 수 있고, 뿐만 아니라 다른 회로들도 제어할 수 있다.
예시된 실시예에서, 3.2GHz 클럭이 FF(202, 205, 208, 및 206)의 클럭 입력에 연결된다. FF(202, 205, 208, 및 206) 각각은 듀얼 에지 플립 플롭으로서 도시되었는데, 이것이 의미하는 것은 이들이 입력 클럭 신호의 리딩 에지(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)은 RxCDR(282), 오프셋 유닛(285), 및 가변 위상 유닛(296)을 사용하여 FF(284)의 클럭 위상을 조절할 수 있다. 추가적으로, 메모리 제어기(100) 내에서의 제어 유닛(101)은 가변 위상 유닛(293)을 조절하여 FF(290)에 제공된 6.4GHz 클럭 신호의 위상을 조절할 수 있다. 파워 온 리셋 동안과 같은 초기화 프로세스 동안, 예를 들어, 메모리 제어기(100)는, 버퍼 유닛(170)이 버퍼 커맨드 신호들을 올바르게 샘플링할 수 있도록 하기 위해, FF(289)에 제공된 6.4GHz 클럭 신호의 위상을 조절하도록 가변 위상 유닛(294)을 조절할 수 있다. 또한, 초기화 동안, 그리고 사전에 결정된 간격에서의 동작 동안, 제어 유닛(101)은, 버퍼 유닛(170)이 더욱 최적으로 기입 데이터를 수신할 수 있도록 하기 위해, 가변 위상 유닛(295)을 조절하여 버퍼 유닛(170)에 전송된 기입 데이터의 위상을 조절할 수 있도록 FF(286)에 제공된 6.4GHz 클럭 신호의 위상을 조절할 수 있다.
도 3은 팔-비트 버스트 동안 도 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)가 BCMB 신호 경로들을 통해 버퍼 유닛들(170)에 전송된다. rdA 데이터가 DQ 신호 경로들 상에 있게 된 후에, 다음 MCLK 싸이클 이후, rdA 데이터가 DDQ 신호 경로들 상에 나타난다. 앞서 설명된 바와 같이, rdA 및 rdB 데이터가 MCLK 속도의 두배의 속도(예를 들어, 1600MT/s)에서 메모리 유닛들(110)로부터 버퍼 유닛들(170)에 병렬로 전달된다. 그러나, 상기 데이터는 훨씬 빠른 데이터 속도(예를 들어, 6.4GT/s)에서 버퍼 유닛들(170)로부터 메모리 제어기(100)에 직렬로 전달된다.
판독에서 기입으로의 전이시 버스 왕복 운행 시간(bus turn-around time)을 완화시키기 위해, 기입 데이터는 버퍼 유닛(170) 내에 사전에 버퍼링될 수 있다. 예를 들어, 도시된 바와 같이, wrX 데이터 및 관련 BCMD 기입 커맨드(예를 들어, w1)가 버퍼 유닛들(170)에 전송되지만, 그러나 이러한 데이터는, 점선으로 표시된 바와 같이, 이후까지 메모리 유닛들(110)에 기입되지 않는다.
판독/기입/판독 시퀀스는 일반적으로 다음과 같이 설명될 수 있는데, 즉, wrX 데이터가 DDQ 신호 경로들을 통해 메모리 제어기(100)에 의해 버퍼 유닛(170)에 기입되고 그리고 버퍼 유닛(170) 내에 저장된다. 메모리 제어기(100)는 판독 커맨드(rdA 이후 몇몇 MCLK 싸이클 이후 rdB)를 ADDR/CMD 신호 경로들을 통해 동시에 메모리 유닛들(110)에 발행한다. DQ 버스 상에 나타난 rdA 데이터 바로 전에서(예를 들어, DDQ 상에서의 wrX 데이터 전달의 끝에서), 메모리 제어기(100)는 판독 커맨드(예를 들어, r0, r1)를 BCMD를 통해 버퍼 유닛(170)에 발행한다. rdA 및 rdB 데이터가 DQ 버스 상에 있는 동안, 메모리 제어기(100)는 기입 커맨드(예를 들어, wrX 및 wrY)를 ADDR/CMD 버스를 통해 메모리 유닛들(110)에 전송한다. rdA 및 rdB 데이터가 버퍼 유닛(170) 내에 래치되고, 그리고 DDQ를 통해 메모리 제어기(100)에 전송된다. DDQ 상의 rdB 데이터 전송이 완료되기 전에, 메모리 제어기(100)는 기입 커맨드(예를 들어, w0, w2, 및 w3)를 버퍼 유닛(170)에 전송한다. w2 커맨드는 이전에 저장된 wrX 데이터가 메모리 유닛들(110)에 기입되도록 하고, 반면에, w3 기입 커맨드는 DDQ 신호 경로들을 통해 단지 전송되는 wrY 데이터가 DQ 데이터 경로들을 통해 메모리 유닛들(110)에 전송되도록 한다. wrX 데이터가 메모리 유닛들(110)에 기입되고 있는 동안, 메모리 제어기(100)는 rdC 커맨드를 ADDR/CMD 신호 경로들을 통해 메모리 유닛들(110)에 발행한다. 몇 개의 싸이클 이후, rdC 데이터 및 데이터 스트로브들이 각각 DQ 신호 경로들 및 DQS 신호 경로들 상에 나타난다. rdC 데이터가 DQ 데이터 경로들 상에서 버퍼 유닛들(170)에 전송됨에 따라, 메모리 제어기(100)는 판독 커맨드들(예를 들어, r0 및 r1)을 BCMD 신호 경로들을 통해 버 퍼 유닛들(170)에 발행하고, 따라서 버퍼 유닛들(170)이 DDQ 데이터 경로들을 통해 판독 데이터를 전송할 수 있도록 한다. wrX 데이터와 마찬가지로, wrZ 데이터는 이러한 버스트 동안 메모리 유닛들(110)에 기입되지 않는다. 대신에 다음 기입 버스트 동안 사용을 위해 버퍼 유닛(170)에 저장된다. 앞서 설명된 바와 같이, CRC가, 메모리 제어기(100)와 버퍼 유닛들(170) 간의 판독 및 기입 동작 동안, 발생되어 메모리 제어기(170)에 전송된다. 화살표에 의해 표시된 바와 같이, CRC가 BCMD 정보, 기입 데이터 및 판독 데이터로부터 발생된다. 도시된 바와 같이, w1, r0, w0 커맨드, wrX, rdA, 및 rdB 데이터가 CRC 신호 경로들 상에서 버퍼 유닛들(170)로부터 메모리 제어기(170)로 전송되는 CRC 정보를 발생시키기 위해 사용된다.
유의할 것으로 비록 앞서의 신호들이 CRC 정보가 발생되도록 할 수 있고, 그리고 도시된 바와 같이 메모리 제어기(100)에 전송되도록 할 수 있을 지라도, CRC 신호 경로들은 버퍼 유닛들(170)이 유휴 상태(즉, 데이터를 전송하지 않는 상태)에 있을 때에도 전이를 가질 수 있다. 앞서 설명된 바와 같이, CRC 데이터는 메모리 제어기(100) 내에서 RxCDR(282)를 구동시킨다. 따라서, 이러한 전이는 판독 데이터 샘플 클럭이 판독 데이터를 올바르게 샘플링하도록 계속적으로 위상 정렬될 수 있게 할 수 있다.
도 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)), 그리고 훈련 패턴(예를 들어, 10101010 ...)이 홀수 MCLK 싸이클 동안 CRC 경로 상에서 출력된다(블럭(420)). 메모리 제어기(100)는 BCDM 신호 경로 상에서 훈련 패턴을 구동시키고, 이것은 짝수 MCLK 싸이클 동안 CRC 경로 상에서 출력된다(블럭(425)). 메모리 제어기(100)는 CRC 경로 상의 알려진 데이터 패턴을 수신하는 비트-락(bit-lock) 및 바이트-락(byte-lock)을 획득한다(블럭(430)). 추가로, 메모리 제어기(100)는 가변 위상 유닛(294)을 조절함으로써, BCDM 클럭 신호의 위상을 조절하고, 그래서 버퍼 유닛(170)은 BCDM 신호 경로 상에서 비트-락(즉, 비트 정렬) 및 바이트-락(즉, 바이트 정렬)을 획득할 수 있다(블럭(435)). 특히, 메모리 제어기(100)는, 버퍼 유닛(170)이 각각의 비트를 올바르게 캡처링하는 것 및 직렬 비트들에서 시프팅하는 것, 및 올바른 바이트 경계 상에서 전체 팔-비트 바이트를 캡처링하는 것을 확실히 하기 위해 일 비트 시간(UI) 동안 전송되는 패턴을 변화(시프팅)시킬 수 있다. 그 다음에 메모리 제어기는 훈련 모드로부터 버퍼 유닛(170)이 나오도록 버퍼 커맨드를 전송할 수 있다(블럭(440)).
DDQ 데이터 경로을 훈련시키기 위해, 메모리 제어기(100)는 DDQ 데이터 패턴들을 통해 훈련 패턴(예를 들어, 많은 전이를 갖는 램덤 패턴)을 전송한다. 이러한 패턴은 기입 FIFO(220) 내에 저장된다(블럭(445)). 메모리 제어기(100)는 비트-락을 획득하기 위해 다시 저장된 패턴을 판독한다(블럭(450)). 메모리 제어기(100)는 실질적으로 50%의 비트 에러율을 획득하기 위해 (예를 들어, 가변 위상 유닛(295)을 조절함으로써) 기입 데이터의 위상을 조절한다. 50% 전이 에러율은 기입 데이터가 에지 근처에서 샘플링되고 있다는 것을 나타낼 수 있다. 메모리 제어기(100)는 그 다음에 0.5 UI만큼 기입 데이터의 위상을 다시 조절한다. 이렇게 함으로써 FF(208)는, 예를 들어, 각각의 데이터 비트의 가운데 가까이 있는 데이터를 샘플링한다. 이러한 프로세스는 각각의 DDQ 신호 경로에 대해 수행될 수 있다(블럭(455)). 바이트-락을 획득하기 위해, 메모리 제어기(100)는 DDQ 데이터 경로들을 통해 훈련 패턴을 전송한다. 일 실시예에서, 훈련 패턴은 각각의 바이트에 대해 서로 다른 패턴을 가질 수 있다. CRC 정보를 모니터링하는 동안, 메모리 제어기(100) 는 일 UI 증분으로 훈련 패턴 데이터를 시프팅시킬 수 있다. 만약 CRC 정보가 올바르다면, 바이트-락이 확립된다(블럭(460)). 훈련 패턴이 버퍼 유닛(170) 내에서 바이트-락되면, 메모리 제어기(100)는 판독 데이터 바이트-락을 획득하기 위한 시도를 한다. 일 실시예에서, 메모리 제어기(100)는 바이트-락된 훈련 패턴을 다시 판독한다(블럭(465)). 이 지점에서, 직렬 상호접속은, 비트-락 및 바이트-락 양쪽 모두가 기입 및 판독 방향에서 획득되도록 정렬되어야만 한다.
이 경우, 병렬 DRAM 인터페이스(256)가 정렬될 수 있다. 특히, 일 실시예에서, 메모리 제어기(100)는, 기입 위상 DQS 에지들이 적절한 MCLK 에지에 맞추어 정렬될 때 까지, WCLK 위상을 조절할 수 있고 BCDM 및 DDQ 기입 위상 정렬이 보존될 수 있다(블럭(470)).
정상 동작 동안, 버퍼 유닛(170)의 직렬 및 병렬 상호접속이 정렬되면, 메모리 제어기(100)는 앞서 설명된 바와 같이 훈련 패턴을 사용하여 직렬 상호접속(160)의 기입 위상 훈련을 수행할 수 있다. 이러한 훈련은 사전에 결정된 간격에서 수행될 수 있다. 마찬가지로, 유휴 기간 동안, 메모리 제어기(100)는 다수의 유휴 커맨드들을 버퍼 유닛(170)에 전송함으로써 BCDM 및 CRC 정렬을 모니터링 및 조절할 수 있다. 이러한 유휴 커맨드들은 사전에 결정된 전이 풍부 CRC 패턴이 CRC 신호 경로 상에서 전송되도록 할 수 있다(블럭(475)).
도 5를 참조하면, 도 1 및 도 2의 메모리 시스템을 포함하는 컴퓨터 시스템의 예시적 실시예의 블럭도가 도시된다. 유의할 것으로, 도 1 및 도 2에 도시된 컴포넌트들에 대응하는 컴포넌트들은 명확하고 간단한 설명을 위해 동일한 번호가 부 여되었다. 컴퓨터 시스템(500)은 메모리 버퍼들(170)에 연결되는 그리고 메모리 유닛들(110)에 연결되는 프로세싱 노드(650)를 포함한다.
일 실시예에서, 버퍼 유닛들(170)은 마더보드(motehrboard)에 장착된 집적 회로 칩들일 수 있고, 그리고 메모리 유닛들(110)은 소켓에 플러그인될 수 있다. 또 다른 실시예에서, 버퍼 유닛들(170)은, 메모리 도터 카드 소켓(memory daughter card socket)에 플러그인될 수 있는 도터 보드(daughter board)에 장착된 집적 회로 칩들일 수 있다. 이러한 실시예에서, 도터 보드는 메모리 유닛들(110)을 라이저 장치(riser arrangement)에 플러그인 시킬 수 있는 소켓들을 가질 수 있다.
특히, 프로세싱 노드(650)는 메모리 제어기(100)에 연결된 프로세서 코어들(601)을 포함한다. 유의할 것으로, 프로세싱 노드(650) 내에 임의 개수의 프로세서 코어들(601)이 있을 수 있다. 앞서 설명된 바와 같이, 메모리 제어기(100) 신호들은 차동 직렬 상호접속(160)을 통해 메모리 버퍼들(170)에 연결되고, 그리고 병렬 상호접속(165)을 통해 메모리 유닛들(170)에 연결된다. 도시된 바와 같이, 직렬 상호접속은 단방향 CRC 신호 경로, 단방향 WCLK 신호 경로, 단방향 BCDM 신호 경로, 및 쌍방향 데이터 신호 경로를 포함한다. 추가적으로, 병렬 상호접속(165)은, 메모리 버퍼들(170)과 메모리 유닛들(110) 간의 쌍방향 데이터 및 데이터 스트로브 신호 경로들을 포함한다. 또한, 병렬 상호접속(165)은, 프로세싱 노드(650)와 메모리 유닛들(110) 간의 단방향 ADDR/CMD 및 MCLK 신호 경로들을 포함한다. 유의할 것으로, ADDR/CMD 신호에 추가하여, 병렬 상호접속(165) 상에 포함된 칩 선택, 뱅크 선택, 및 기타 신호와 같은 다른 신호들이 있을 수 있지만, 본 명세서에서는 간략 한 설명을 위해 생략되었다. 또한 유의할 것으로, 비록 간략한 설명을 위해 도시되지는 않았지만, MCLK 및 DQS 신호는 차동 신호일 수 있다.
도 6을 참조하면, 듀얼 모드 메모리 상호접속을 구비한 메모리 제어기를 포함하는 컴퓨터 시스템의 일 실시예를 나타낸 블럭도가 제공된다. 컴퓨터 시스템(700)은 도 5에 도시된 컴퓨터 시스템(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에 도시된 바와 같이, 구성 유닛(720)은 메모리 제어기(710) 내에서 I/O 회로들(711)의 구성을 결정 및 선택할 수 있다. 일 실시예에서, 메모리 제어기(710)의 모드는 프로세싱 노드(600)의 하드와이어링된 외부 핀을 사용하여 선택될 수 있다. 이러한 실시예에서, 프로세싱 노드(600)의 하나 또는 그 이상의 외부 선택 핀들은 도시된 바와 같이 회로 접지에 하드와이어링될 수 있거나, 혹은 예를 들어, VDD 또는 다른 전압에 하드와이어링될 수 있다. 구성 유닛(720)은 선택 핀 상태를 검출할 수 있고, 그것에 따라서 메모리 제어기(710)의 I/O 회로들(711)을 구성할 수 있다. 또 다른 실시예에서, 메모리 제어기 모드는 BIOS(605) 혹은 다른 시스템 레벨 소프트웨어의 실행 동안에 시스템 시동 동안 선택될 수 있다.
예시된 실시예에서, 제 1 모드에서 메모리 제어기(710)는 메모리 유닛들(110)에 직접 연결된다. 이러한 구성에서, I/O 회로들(711)은, 예를 들어 DQ, DQS, ADDR/CMD, 및 MCLK와 같은 신호 경로들을 포함하는 병렬 상호접속이다. 제 2 모드에서, I/O 회로들(711)은, 도 1, 도 2 및 도 5에 도시된 바와 같이 메모리 버퍼 유닛(170)(점선)에 연결된 차동 직렬 상호접속으로 변한다.
모드 스위치를 달성하기 위해, I/O 회로들(711)은 복수의 출력 드라이버들 및 입력 버퍼들을 포함할 수 있다. 드라이버들 및 버퍼들 중 일부는 차동 회로일 수 있고, 일부는 싱글-엔드형(single-ended)일 수 있다. 일 실시예에서 모드에 따라, 프로세싱 노드의 다양한 I/O 핀들과 드라이버들 및 버퍼들 간의 접속이 변경될 수 있다. 따라서, 일 실시예에서, I/O 회로들(711)의 부분들은 프로그래밍가능 상 호접속처럼 동작할 수 있다.
예를 들어, 도 6에 도시된 바와 같이, CRC/DQS 신호 경로들은 쌍방향 DQS 신호 경로들과 단방향 CRC 신호 경로들 간에 변할 수 있다. DQS/BCMD는 또한 쌍방향 DQS 신호 경로들과 단방향 BCDM 신호 경로들 간에 변할 수 있다. 추가적으로, WCLK/DQS 신호 경로들은 쌍방향 DQS 신호 경로들과 단방향 WCLK 신호 경로들 사이에서 변할 수 있다. 또한, DDQ/DQ 신호 경로들은 쌍방향 싱글 엔드형 DQS 신호 경로들과 쌍방향 차동 데이터 DDQ 신호 경로들 사이에서 변할 수 있다.
도 7을 참조하면, 고속 버퍼를 포함하는 메모리 시스템의 또 다른 실시예의 블럭도가 도시된다. 메모리 시스템(80)은 메모리 유닛들(11OA 내지 11OH)에 연결되고, 그리고 버퍼 유닛들(870A 내지 870D)에 연결되는 메모리 제어기(800)를 포함한다. 유의할 것으로, 도 1에 도시된 메모리 제어기와 유사하게, 메모리 제어기(800)는 노스브리지 구성에서 사용될 수 있는 바와 같은, 칩셋의 일부인 메모리 제어기일 수도 있다. 대안적으로, 도 10에 도시된 바와 같이, 메모리 제어기(800)는 임베드될 수 있는데, 이 경우, 예를 들어, 하나 또는 그 이상의 프로세서 코어를 포함하는 프로세싱 노드 내에 메모리 제어기(100)가 임베드된다.
이전의 도면에서 도시된 것들과 대응하는 컴포넌트들에는, 명확하고 간단한 간단한 설명을 위해 동일한 번호가 부여되었다. 일 실시예에서, 메모리 유닛들(110A-110H)은 앞서 설명된 바와 같이 예를 들어 인-라인 메모리 모듈(DIMM)과 같은 메모리 모듈들을 나타낼 수 있다. 다양한 실시예들에서, 메모리 유닛들은 예를 들어, DDR2 및 DDR3과 같은 다양한 기술을 따를 수 있다.
예시된 실시예에서, 메모리 제어기(800)는 직렬 상호접속(860A 내지 860D)을 통해 버퍼 유닛들(870)에 연결된다. 일 실시예에서, 각각의 직렬 상호접속(860)은 차동 신호 기술을 사용한다. 도 8에 관한 설명과 함께 아래에서 더 상세히 설명되는 바와 같이, 직렬 차동 상호접속(860A-86OD) 각각은 각각의 버퍼 유닛(870)에 대한 업스트림 링크 및 다운스트림 링크를 포함할 수 있다. 다운스트림 링크는 복수의 다운스트림 직렬 데이터 신호 경로(DSD) 및 대응하는 다운스트림 직렬 클럭 신호 경로(DSCLK)(데이터를 버퍼 유닛들(870)에 클럭킹시키기 위해 사용될 수 있음)를 포함할 수 있다. 마찬가지로, 각각의 업스트림 링크는 복수의 업스트림 직렬 데이터 신호 경로들(USD) 및 대응하는 업스트림 직렬 클럭 신호 경로(USCLK)(데이터를 메모리 제어기(800)에 클럭킹시키기 위해 사용될 수 있음)를 포함할 수 있다. 예시된 실시예에서, 네 개의 메모리 채널이 도시되었지만, 다른 개수의 메모리 채널도 가능할 수 있다. 이 경우, 직렬 상호접속(160A)이 하나의 채널을 위해 사용될 수 있고, 따라서 버퍼 유닛(870A)에 연결되고, 직렬 상호접속(860B)이 제 2 채널을 위해 사용될 수 있고, 그리고 버퍼 유닛들(870B)에 연결되며, 직렬 상호접속(860B)이 제 3 채널을 위해 사용될 수 있고, 그리고 버퍼 유닛들(870C)에 연결되고, 직렬 상호접속(860D)이 제 4 채널을 위해 사용될 수 있고, 그리고 버퍼 유닛들(870D)에 연결된다.
앞서 설명된 실시예들에 사용된 직렬 상호접속(160)과 대조적으로, 직렬 상호접속(860)은 데이터 신호 경로들을 사용하는데, 이러한 데이터 신호 경로들 각각은 데이터, CRC, 및 ADDR/CMD 정보를 전달한다. 이 경우, 일 실시예에서, 직렬 상 호접속(860)은 패킷 프로토콜을 사용할 수 있으며, 여기서 패킷은 페이로드(payload)가 ADDR/CMD인지 혹은 데이터인지를 지정하기 위한 인코딩을 포함할 수 있다. 추가적으로, 각각의 패킷은 CRC 정보에 대한 전용 비트 시간 및 페이로드(예를 들어, 데이터 혹은 ADDR/CMD)을 갖는 포맷을 가질 수 있다.
추가적으로, 버퍼 유닛들(870A-870D)이 병렬 상호접속(865)을 통해 메모리 유닛들(110)에 연결된다. 일 실시예에서, 병렬 상호접속(865)은 데이터 경로(DQ), 데이터 스트로브 신호 경로(DQS), 어드레스/커맨드 신호 경로(ADDR/CMD), 및 클럭 신호 경로(MCLK)를 포함할 수 있다. 유의할 것으로, 병렬 상호접속(865) 상에 포함된 칩 선택, 뱅크 선택, 체크 비트 및 기타 신호와 같은 다른 신호들이 있을 수 있지만, 본 명세서에서는 간략한 설명을 위해 생략되었다. 또한 유의할 것으로, 병렬 상호접속(865)은 네 개의 채널을 포함할 수 있다. 도시된 바와 같이, 채널들 중 하나는 메모리 유닛들(110A 내지 110D)에 연결되고, 또 다른 하나는 메모리 유닛들(110E 내지 110H)에 연결되며, 또 다른 하나는 메모리 유닛들(110J 내지 110M)에 연결되고, 그리고 또 다른 하나는 메모리 유닛들(110N 내지 110R)에 연결된다.
아래에서 더 상세히 설명되는 바와 같이, DQ 데이터 경로들은 버퍼 유닛들(870)과 메모리 유닛들(110) 사이에서 양쪽 방향으로 데이터를 전달할 수 있으며, 직렬 상호접속(860)의 차동 데이터 경로는 병렬 상호접속을 통해 전달되는 데이터를 직렬로 그리고 고속으로 전달할 수 있다. 예를 들어, 소정의 업링크 USD[O] 또는 다운링크 DSD[0] 신호 경로는 DQ[0:3]에 대응하는 데이터 비트들을 전달할 수 있고, USD[1] 신호 경로는 DQ[4:7]에 대응하는 데이터 비트들을 전달할 수 있고, 그리고 기타 등등이 있을 수 있으며, 다른 맵핑도 가능하다. 일부 실시예들에서, 직렬 링크들은 직렬 데이터 핀들의 수에 있어 비대칭일 수 있다. 일 실시예에서, 업링크는 다운링크보다 더 많은 데이터 신호 경로들을 가질 수 있는데, 왜냐하면 기입 동작 보다는 판독 동작에 의해 더 많은 대역폭이 소모될 수 있을 것으로 예측되기 때문이다.
앞서 설명된 버퍼 유닛들(170)과 유사하게, 각각의 직렬 상호접속(860)은 병렬 상호접속(865)이 데이터 신호 경로 상에서 데이터를 전달하는 속도의 네 배의 속도에서 데이터를 전달할 수 있다. 그러나, ADDR/CMD 신호 경로 및 MCLK 신호 경로는 병렬 상호접속(865)의 데이터 경로의 속도의 반인 속도에서 동작할 수 있다. 예를 들어, 직렬 상호접속(860)은 업링크 및 다운링크 데이터 경로 상에서 6.4GT/s 속도로 데이터를 전송할 수 있고, 반면에, 병렬 상호접속(865)의 데이터 신호 경로 DQ/DQS는 1600MT/s에서 데이터를 전송할 수 있고, 그리고 ADDR/CMD 및 MCLK 신호 경로들은 80OMT/s에서 동작할 수 있다. 유의할 것으로, 직렬 상호접속(860)은 병렬 상호접속(865)과 관련된 임의의 적절한 데이터 속도에서 동작될 수 있다.
일 실시예에서, 메모리 제어기(800)는 DSD 신호 경로들 상에서 전송된 커맨드들을 통해 버퍼 유닛들(870)의 동작을 제어할 수 있다. 이 경우, 버퍼 유닛들(870)은 정상 동작 모드와 구성 및 테스트 모드를 가질 수 있다. 예를 들어, 정상 데이터 동작 동안, 메모리 제어기(800)는, 데이터 저장소에 대한 판독 및 기입을 수행하고, 아울러 DQ 신호 경로의 위상 오프셋을 조절하기 위해, 데이터와 프리앰블 및 포스트앰블에 대한 판독 및 기입 커맨드를 전송할 수 있다. 추가로, 메모 리 제어기(800)는, 예를 들어, 다양한 루프백 커맨드, CRC 제어 커맨드, 및 CRC 훈련 패턴 커맨드를 전송함으로써 버퍼 유닛들(870)의 구성, 훈련, 및 테스트를 제어할 수 있다.
높은 데이터 속도에서 버퍼 유닛(170) 혹은 메모리 제어기(100)가 비트 에러를 수신할 확률은 상당히 높다. 따라서, 보호되는 블럭 내에서 복수의 비트 에러들을 엄격히 검출할 수 있는 에러 검출 코드로 메모리 제어기(100)와 버퍼 유닛들(170) 간의 전송을 보호할 필요가 있을 수 있다. 일 실시예에서, CRC 코드는 이러한 복수의 비트 에러 검출을 제공하기 위해 사용될 수 있다. 특히, 도 2에 도시된 바와 같이, CRC 정보가 발생될 수 있고, 그리고 업링크 및 다운링크 양쪽 모두에서 전송될 수 있다. 어느 한쪽 방향에서의 직렬 상호접속 상에서 에러가 검출될 때, 메모리 제어기(100)는 동작을 재시도함으로써 에러를 정정할 수 있다. 일 실시예에서, 다운스트림 링크에서 검출된 CRC 에러는 업스트림 CRC에 인코딩될 수 있다.
일 실시예에서, 메모리 제어기(800)는, 버퍼 유닛(870)으로부터 수신된 정보에 근거하여 버퍼 유닛(870)이 올바르게 데이터를 판독할 수 있도록, 전송된 기입 데이터의 신호 특성(예를 들어, 위상 등)을 동적으로 그리고 적합하게 조절할 수 있는 제어 기능을 포함할 수 있다. 추가적으로, 메모리 제어기(800)는, 메모리 제어기(100)가 버퍼 유닛(870)에 의해 전송된 데이터를 수신할 수 있도록 그 내부의 수신기 특성을 조절할 수 있다. 더욱이, 메모리 제어기(800)는 어드레스 및 커맨드 정보가 올바르게 샘플링될 수 있도록 버퍼 유닛(870)에 제공되는 클럭 신호들의 위 상을 조절할 수 있다.
특히, 높은 데이터 속도에서, 버스 내의 서로 다른 신호들에 대한 전송 경로에서의 지연의 불확실성은, 이러한 신호들의 수신기의 샘플 클럭의 비트 당 위상 조절을 요구할 수 있다. 버퍼 유닛(870)에서의 이러한 회로의 사용을 피하기 위해, 메모리 제어기(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), 및 업스트림 차동 데이터 신호 경로 DSD[19:0]를 포함한다.
메모리 제어기(800)는 9.4GHz 클럭 신호를 포함하고, 이것은 도 7의 클럭 유닛(806)에 의해 발생될 수 있다. 일 실시예에서, 6.4GHz 클럭은 메모리 제어기(800)에 대한 내부 클럭이다. 가변 위상 유닛(890)의 출력은 플립-플롭(FF)(889)에 클럭 신호를 제공한다. 6.4GHz 클럭이 또한 레인 디스큐 회로(lane deskew circuit)(881)에 연결되고, 그리고 FF(893)의 클럭 입력에 연결되어 직렬 클럭 DSCLK을 발생시킨다. FF(893)은 입력으로 피드백하는 피드백 루프로 연결된 인버터(892)를 가지기 때문에, 6.4GHz 클럭은 두개로 나누어지고, 3.2GHz 직렬 클럭으로서 출력된다. 3.2 GHz 클럭은 차동 출력 드라이버(891)에 의해 차동적으로 구동된다.
예시된 실시예에서, 기입 데이터, ADDR/CMD, 및 CRC가 FF(889)의 출력에 제공된다. FF(889)의 출력이 차동 등화 출력 드라이버(888)에 연결된다. 드라이버(888)의 출력이 DSD[11:0]의 하나의 신호 경로에 연결된다. 따라서, DSD[11:0]의 각각의 신호 경로에 대해, 유사한 출력 경로(미도시)가 사용될 수 있다. 마찬가지로, 판독 데이터에 대해, USD[19:0]의 하나의 신호 경로가 차동 입력 버퍼(885)에 연결되고, 그 출력이 FF(886)의 입력에 연결된다. FF(886)의 출력이 레인 디스큐 유닛(861)의 입력에 연결된다. 레인 디스큐 유닛(881)의 출력이 판독 데이터 및 CRC 정보로서 메모리 제어기(800)의 다른 부분들(미도시)에 제공된다. 업스트림 직 렬 클럭 신호(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), 및 출력 멀티플렉서(mux)(809)에 연결된다. 기입 FIFO(807)의 출력은 DRAM 인터페이스(256)에 연결되고, 이것은 도 2에 관한 설명과 함께 앞서 설명된 DRAM 인터페이스(256)와 유사하다. 도시된 바와 같이, 병렬 상호접속(885)의 일부로서, 네 개의 MCLK 신호들, ADDR/CMD 신호들, 16개의 데이터 스트로브 신호 경로들 DQS[15:0], 및 72개의 데이터 신호 경로들 DQ[71:0]이 있다. 기입 FIFO(807)로부터의 기입 데이터는 DQ[71:0]를 통해 메모리 유닛들(110)에 출력될 수 있다. 유의할 것으로, 다른 신호들은 간단한 설명을 위해 생략되었다. 유의할 것으로, 간단한 설명을 위해 비록 도시되지는 않았지만, MCLK 및 DQS 신호는 차동 신호일 수 있다.
DQ[71:0]을 통한 메모리 유닛들(110)로부터의 판독 데이터는 DRAM 인터페이스(856)를 통해 mux(809)의 하나의 입력에 연결될 수 있다. mux(809)의 출력이 FF(810)의 입력에 제공된다. 제어 로직(885)은 mux(809)의 멀티플렉서 입력 선택을 제어한다. FF(810)의 출력은, USD[19:0]의 차동 신호 경로들 중 하나에 연결된 차동 등화 데이터 출력 드라이버(811)에 연결된다.
버퍼 유닛(870)은 또한 메모리 제어기(800)로부터 커맨드 정보(CMD)를 수신하도록 연결되는 제어 로직(855)을 포함한다. CMD 정보는 제어 로직(855)으로 하여금 DQ 데이터 경로들 상에서의 기입 데이터를 구동하도록 할 수 있고, 또는 DQ 데이터 경로들에 대한 데이터를 판독하도록 할 수 있고, 또는 초기화 및 테스트 시퀀스에 진입하도록 할 수 있고 그리고 초기화 및 테스트 시퀀스에서 나오도록 할 수 있고 기타 등등을 할 수 있다. 따라서, 제어 로직(855)은 DRAM 인터페이스(856), CRC 유닛들(806 및 808), mux(809)를 제어할 수 있을 뿐만 아니라 다른 회로들도 제어할 수 있다.
예시된 실시예에서, 3.2GHz 클럭은 FF(810)의 클럭 입력에 연결되고, 그리고 차동 등화 데이터 출력 드라이버(812)의 입력에 연결되고, 그 출력은 업스트림 직렬 클럭 USCLK이다. 3.2GHz 클럭 신호가 또한 네등분화 유닛(804)에 연결되어 내부의 800MHz 클럭 도메인을 제공하는데, 이것은 MCLK 도메인이다.
일 실시예에서, DSD[11:0] 신호 경로들을 통해 수신된 패킷들은 CMD 버퍼(805), 기입 FIFO(807), 및 CRC 유닛(806)에 동시에 제공될 수 있다. 패킷들이 ADDR/CMD 또는 데이터 페이로드 중 어느 하나로서 지정되도록 인코딩될 수 있기 때문에, CMD 버퍼(805) 및 기입 FIFO(807)는 이들이 그들 각각의 패킷들을 캡처링할 수 있도록 패킷 디코드 로직(미도시)을 포함할 수 있다. 따라서, 기입 데이터 페이로드 패킷이 수신될 때, 패킷은 기입 FIFO(807)에 의해 디코딩될 수 있고, 그리고 기입 FIFO(807) 내에 데이터가 저장된다. CMD 버퍼(805)는 데이터 페이로드 패킷들을 버릴 수 있다. 기입 FIFO(807)는, DRAM 인터페이스(856)를 통해 메모리 유닛들(110)에 출력될 충분한 비트들이 수신될 때까지, 기입 데이터를 저장할 수 있다. 유사하게, CMD 페이로드 패킷이 수신될 때, 패킷은 CMD 버퍼(805)에 의해 디코딩될 수 있고, 그리고 CMD 정보가 CMD 버퍼(805) 내에 저장된다. 기입 FIFO(807)는 CMD 페이로드 패킷들을 버릴 수 있다. 모든 패킷들이 CRC 페이로드를 포함할 수 있기 때문에, CRC 유닛(806)은 모든 패킷을 수신하여, CRC 정보를 추출한다.
도 9에 관한 설명과 함께 아래에서 더 상세히 설명되는 바와 같이, 동작 동안, 메모리 제어기(800)는 전송된 기입 데이터 및 수신된 판독 데이터의 신호 특성(예를 들어, 위상 등)을 동적으로 적합하게 조절할 수 있다. 특히, 앞서 언급된 바와 같이, 수신 유닛(804)은 레인 디스큐(881)와 같은 샘플 클럭 위상 조절 회로들과, 그리고 자신의 로컬 샘플 클럭 위상을 조절하여 버퍼 유닛(870)에 의해 전송된 데이터를 더욱 최적으로 수신하기 위해 가변 위상 유닛들(890 및 882)을 포함한다. 이 경우, 메모리 제어기(800)가 버퍼 유닛(870)으로부터 CRC 데이터를 언제 수신하고 있는지 상관없이, 수신 유닛(804)은 레인 디스큐 및 가변 위상 유닛(882)을 사용하여 FF(885)의 클럭 위상을 조절할 수 있다. 추가적으로, 메모리 제어기(800) 내의 제어 유닛(801)은 가변 위상 유닛(890)을 조절하여, 버퍼 유닛(870)이 더욱 최적으로 기입 데이터를 수신할 수 있도록 버퍼 유닛(870)에 전송된 기입 데이터의 위상을 조절할 수 있다.
도 9는 도 7 및 도 8에 도시된 실시예들의 예시적인 동작을 나타낸 흐름도이 다. 특히, 메모리 제어기(800)와 버퍼 유닛들(870) 간의 통신을 확립하고 유지하기 위한 초기화 절차 및 구성 절차가 설명된다. 도 7 내지 도 9를 함께 참조하면, 흐름도는 도 9의 블럭(900)에서 시작하는데, 예를 들어 파워온 리셋 혹은 다른 시스템 리셋 조건 동안 시스템이 리셋될 때, 직렬 신호 경로들 어떤 것도 정렬된 것으로 고려될 수 없다. 이경우, 메모리 제어기 및 버퍼 유닛(870)은 리셋으로부터 나와 훈련 상태 1 또는 T1에 있게 된다. T1 상태에서 직렬 상호접속(860)은 400MT/s에서 동작된다(블럭(905)). 메모리 제어기(800)는 데이터를 전송하고 수신하기 위해 데드-레콘닝된(dead-reckoned) 0.5UI 오프셋을 사용한다(블럭(910)). 예를 들어, 메모리 제어기는 소정의 비트 시간 내에서 근접 포인트에 있도록 오프셋을 조절한다. 메모리 제어기(800)는 버퍼 유닛(870)으로 하여금 T1 상태에서 나오도록 그리고 T2 상태로 들어가도록 하는 커맨드를 전송한다(블럭(915)). T2 상태에서, 버퍼 유닛(870)은 USD 링크의 모든 비트 레인들 상에서 101010... 패턴과 같은 사전에 결정된 패턴을 구동한다. 메모리 제어기는 예를 들어, 알려진 패턴을 사용하여 비트-락을 획득하고, 그리고 가변 위상 유닛(882)을 조절한다.(블럭(920)).
일 실시예에서, 메모리 제어기(800)는, 예를 들어 팔 비트 시간 동안 모든 것들을 구동시킴으로써, 버퍼 유닛(870)이 T2 상태를 나오도록 하고 T3 상태에 들어가도록 하는 버퍼 커맨드를 전송한다(블럭(925)). T3 상태에서, 버퍼 유닛(870)은 101010...과 같은 사전에 결정된 패턴을 짝수 MCLK 싸이클 상에서 USD 신호 경로들을 통해 메모리 제어기(800)에 전송한다(블럭(930)). 버퍼 유닛(870)은 다운스트림 데이터를 홀수 MCLK 싸이클 상에서 업스트림 USD 신호 경로들로 루프백시키도 록 구성되고, 그리고 101010... 패턴과는 다른 패턴을 DSD 신호 경로들을 통해 다운스트림 전송하도록 구성된다(블럭(935)). 메모리 제어기(800)는 서로 다른 패턴들을 사용하여 바이트-락을 획득한다. 메모리 제어기(800)는 그 다음에 다운스트림 데이터 위상을 조절하여 버퍼 유닛(870)이 비트-락 및 바이트-락을 획득하도록 한다(블럭(940)). 완료될 때, 메모리 제어기(800)는 팔 비트 시간 동안 모든 제로들을 구동시켜, 버퍼 유닛(870)으로 하여금 T3 상태에서 나와 정상 동작 모드 블럭(945)에 들어가게 하며, 여기서 메모리 제어기(800)는 메모리 유닛들(110) 등에 대해 데이터를 판독 및 기입을 수행할 수 있다.
정상 동작 모드에 있는 경우, 메모리 제어기(800)는 각각의 버퍼 유닛(870) 내에서, 네등분화 MCLK 분할기(804)를 조절할 수 있고, 그래서 모든 버퍼 유닛들(870)은 동일한 클럭 에지(위상)를 사용할 수 있다(블럭(950)). 특히, 메모리 제어기(800)는 하나 또는 그 이상의 비트 시간 동안 MCLK 위상을 지연시키도록 버퍼 커맨드들을 전송할 수 있다.
정상 동작 동안 사전에 결정된 간격(예를 들어, 매 100㎲마다)에서, 메모리 제어기(800)는 주기적 훈련 모드를 사용하여 업스트림 및 다운스트림 신호 경로들을 훈련시킬 수 있다(블럭(955)). 예를 들어, 다운스트림 훈련에 대해, 메모리 제어기(800)는, 사전에 결정된 훈련 위상 오프셋을 사용하여 기입 FIFO(807)에 훈련 패턴을 기입할 수 있다(블럭(960)). 메모리 제어기(800)는 그 다음에 훈련 패턴을 다시 판독할 수 있고, 그리고 패턴의 전이 값으로부터 에러 싸인(error sign)을 계산할 수 있다(블럭(965)). 계산된 에러 싸인을 사용하여, 메모리 제어기(800)는 다 운스트림 데이터 위상을 조절할 수 있다(블럭(970)).
업스트림 훈련에 대해, 메모리 제어기(800)는 정상 위상 오프셋을 사용하여 훈련 패턴을 기입 FIFO(807)에 기입할 수 있다(블럭(975)). 메모리 제어기(800)는 그 다음에 저장된 훈련 패턴을 다시 판독할 수 있고, 그리고 또 다른 사전에 결정된 훈련 위상 오프셋을 사용하여 패턴의 전이 값들로부터 에러 싸인을 계산할 수 있다(블럭(980)). 계산된 에러 싸인을 사용하여, 메모리 제어기(800)는 업스트림 샘플 위상을 조절할 수 있다(블럭(985)). 주기적 훈련이 완료되면, 버퍼 유닛(870)은 블럭(945)에서 앞서 설명된 바와 같은 정상 모드에 다시 놓인다.
도 10을 참조하면, 도 7의 메모리 시스템을 포함하는 컴퓨터 시스템의 일 실시예를 나타낸 블럭도가 도시된다. 유의할 것으로, 도 7 및 도 8에 도시된 컴포넌트들에 대응하는 컴포넌트들에는 명확하고 간단한 설명을 위해 동일한 번호가 부여되었다. 컴퓨터 시스템(1100)은 메모리 버퍼들(870)에 연결되고, 그리고 메모리 유닛들(110)에 연결되는 프로세싱 노드(1150)를 포함한다.
도 5에 도시된 컴퓨터 시스템과 유사하게, 일 실시예에서, 버퍼 유닛들(870)은 마더보드에 장착된 집적 회로 칩들일 수 있고, 그리고 메모리 유닛들(110)은 소켓들에 플러그인될 수 있다. 또 다른 실시예에서, 버퍼 유닛들(870)은 메모리 도터 카드 소켓에 플러그인 될 수 있는 도터 보드에 장착된 집적 회로 칩들일 수 있다. 이러한 실시예에서, 도터 보드는 메모리 유닛들(110)을 라이저 장치에 플러그인 시킬 수 있는 소켓들을 가질 수 있다.
도 10에 도시된 실시예에서, 프로세싱 노드(1150)는 메모리 제어기(800)에 연결된 프로세서 코어(1101)를 포함한다. 유의할 것으로, 프로세싱 노드(1150) 내에는 임의 개수의 프로세서 코어들(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에 관한 설명과 함께 앞서 설명된 바와 같이, 메모리 유닛들(110)로의 다이렉트 접속을 위한 병렬 상호접속(865) 또는 버퍼 유닛들(870)과의 사용을 위한 직렬 상호접속(860) 중 어느 하나와 함께 동작하도록 선택적으로 구성될 수 있다.
앞서 설명된 메모리 제어기(710)와 유사하게, 도 11의 메모리 제어기(1210)는 또한, 다양한 메모리 사양과 호환가능한 메모리 모듈들로의 다이렉트 접속을 위한 병렬 상호접속과 함께 선택적으로 동작할 수 있다. 예를 들어, 다양한 실시예에서, 메모리 유닛들(110)은 DDR2, DDR3 혹은 요구되는 다른 사양과 호환가능하다. 이 경우, 메모리 제어기(1210)는, 요구되는 대로, DDR2 및 DDR3 기술과 호환가능한 병렬 상호접속(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 (27)

  1. 메모리 제어기로서,
    복수의 입력 버퍼들 및 복수의 출력 드라이버들을 포함하는 입력/출력(I/O) 회로를 포함하여 구성되고,
    상기 I/O 회로는 모드 선택 신호의 상태에 따라 제 1 모드 및 제 2 모드 중 하나의 모드에서 동작하고,
    상기 제 1 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 메모리 모듈들로의 접속을 위한 병렬 상호접속을 제공하고,
    상기 제 2 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 버퍼 유닛들 각각으로의 접속을 위한 각각의 직렬 상호접속을 제공하고, 상기 버퍼 유닛들 각각은 상기 하나 또는 그 이상의 메모리 모듈들로부터 판독되거나 또는 상기 하나 또는 그 이상의 메모리 모듈들에 기입되는 메모리 데이터를 버퍼링하는 것을 특징으로 하는 메모리 제어기.
  2. 제1항에 있어서,
    상기 각각의 직렬 상호접속은 복수의 차동 쌍방향 데이터 신호 경로들을 포함하고, 상기 차동 쌍방향 데이터 신호 경로들 각각은 상기 하나 또는 그 이상의 버퍼 유닛들 중 소정의 버퍼 유닛과 상기 메모리 제어기 간에 데이터를 전달하는 것을 특징으로 하는 메모리 제어기.
  3. 제1항에 있어서,
    상기 각각의 직렬 상호접속은 차동 커맨드 신호 경로를 포함하고, 상기 차동 커맨드 신호 경로는 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들 중 소정의 버퍼 유닛으로 커맨드 정보를 전달하는 것을 특징으로 하는 메모리 제어기.
  4. 제1항에 있어서,
    상기 I/O 회로에 연결되며, 상기 제 1 모드와 상기 제 2 모드 중 어느 모드를 선택할지를 검출하여 상기 I/O 회로에 상기 모드 선택 신호를 제공하는 구성 유닛을 더 포함하는 것을 특징으로 하는 메모리 제어기.
  5. 제1항에 있어서,
    상기 각각의 직렬 상호접속은 제 1 데이터 전송 속도에서 동작하고, 상기 병렬 상호접속은 제 2 데이터 전송 속도에서 동작하고, 상기 제 1 데이터 전송 속도는 상기 제 2 데이터 전송 속도보다 더 빠른 것을 특징으로 하는 메모리 제어기.
  6. 제5항에 있어서,
    상기 각각의 직렬 상호접속은 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들 중 소정의 버퍼 유닛에 클럭을 전달하는 차동 클럭 신호 경로 를 포함하고, 차동 클럭 신호들 각각은 상기 제 1 데이터 전송 속도에서 동작하는 것을 특징으로 하는 메모리 제어기.
  7. 제5항에 있어서,
    상기 병렬 상호접속은 하나 또는 그 이상의 클럭 신호 경로들을 포함하고, 상기 클럭 신호 경로들 각각은 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 메모리 모듈들로 제 2 클럭 신호를 전달하며, 상기 제 2 클럭 신호는 상기 제 2 데이터 전송 속도에서 동작하는 것을 특징으로 하는 메모리 제어기.
  8. 제1항에 있어서,
    상기 병렬 상호접속은 정렬된 복수의 쌍방향 데이터 신호 경로들을 포함하고, 상기 쌍방향 데이터 신호 경로들 각각은 상기 메모리 제어기와 상기 하나 또는 그 이상의 메모리 모듈들 중 특정 하나 간에 데이터를 전달하는 것을 특징으로 하는 메모리 제어기.
  9. 제1항에 있어서,
    상기 병렬 상호접속은 복수의 쌍방향 데이터 스트로브 신호 경로들을 포함하고, 상기 쌍방향 데이터 스트로브 신호 경로들은 상기 메모리 제어기와 상기 하나 또는 그 이상의 메모리 모듈들 중 특정 하나 간에 데이터 스트로브들을 전달하는 것을 특징으로 하는 메모리 제어기.
  10. 제1항에 있어서,
    상기 병렬 상호접속은 복수의 단방향 어드레스 및 커맨드 신호 경로들을 포함하고, 상기 단방향 어드레스 및 커맨드 신호 경로들은 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 메모리 모듈들로 어드레스 및 커맨드 정보를 전달하는 것을 특징으로 하는 메모리 제어기.
  11. 제1항에 있어서,
    상기 각각의 직렬 상호접속들 각각은 순환 잉여 부호(Cyclic Redundancy Code, CRC) 정보를 하나 또는 그 이상의 단방향 CRC 신호 경로들을 통해 상기 하나 또는 그 이상의 버퍼 유닛들로부터 전달하고, 상기 CRC 정보는 상기 각각의 직렬 상호접속을 통해 상기 메모리 제어기에 의해 전송된 데이터에 대응하는 것을 특징으로 하는 메모리 제어기.
  12. 제1항에 있어서,
    상기 각각의 직렬 상호접속은 복수의 다운스트림 차동 단방향 신호 경로들을 포함하고, 상기 다운스트림 차동 단방향 신호 경로들 각각은 데이터, 어드레스 및 커맨드 정보를 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들로 전달하는 것을 특징으로 하는 메모리 제어기.
  13. 제12항에 있어서,
    상기 각각의 직렬 상호접속은 다운스트림 단방향 차동 클럭 신호 경로를 포함하고, 상기 다운스트림 단방향 차동 클럭 신호 경로는 직렬 클럭 신호를 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들 각각으로 전달하는 것을 특징으로 하는 메모리 제어기.
  14. 제1항에 있어서,
    상기 각각의 직렬 상호접속은 복수의 업스트림 차동 단방향 신호 경로들을 포함하고, 상기 업스트림 차동 단방향 신호 경로들 각각은 데이터 및 순환 잉여 부호(Cyclic Redundancy Code, CRC) 정보를 상기 하나 또는 그 이상의 버퍼 유닛들 중 하나로부터 상기 메모리 제어기로 전달하는 것을 특징으로 하는 메모리 제어기.
  15. 제1항에 있어서,
    상기 각각의 직렬 상호접속은 업스트림 단방향 차동 클럭 신호 경로를 포함하고, 상기 업스트림 단방향 차동 클럭 신호 경로는 직렬 클럭 신호를 상기 하나 또는 그 이상의 버퍼 유닛들 중 하나로부터 상기 메모리 제어기로 전달하는 것을 특징으로 하는 메모리 제어기.
  16. 컴퓨터 시스템으로서,
    프로세서와; 그리고
    상기 프로세서에 연결된 메모리 제어기를 포함하여 구성되며,
    상기 메모리 제어기는,
    복수의 입력 버퍼들 및 복수의 출력 드라이버들을 포함하는 입력/출력(I/O) 회로를 포함하여 구성되고, 상기 I/O 회로는 모드 선택 신호의 상태에 따라 제 1 모드 및 제 2 모드 중 하나의 모드에서 동작하고,
    상기 제 1 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 메모리 모듈들로의 접속을 위한 병렬 상호접속을 제공하고,
    상기 제 2 모드에서의 동작 동안, 상기 I/O 회로는 하나 또는 그 이상의 버퍼 유닛들로의 접속을 위한 차동의 직렬 상호접속을 제공하고, 상기 버퍼 유닛들 각각은 상기 하나 또는 그 이상의 메모리 모듈들로부터 판독되거나 또는 상기 하나 또는 그 이상의 메모리 모듈들에 기입되는 메모리 데이터를 버퍼링하는 것을 특징으로 하는 컴퓨터 시스템.
  17. 제16항에 있어서,
    상기 직렬 상호접속 각각은 복수의 차동 쌍방향 데이터 신호 경로들을 포함하고, 상기 차동 쌍방향 데이터 신호 경로들 각각은 상기 하나 또는 그 이상의 버퍼 유닛들 중 소정의 버퍼 유닛과 상기 메모리 제어기 간에 데이터를 전달하는 것을 특징으로 하는 컴퓨터 시스템.
  18. 제16항에 있어서,
    상기 직렬 상호접속 각각은 차동 커맨드 신호 경로를 포함하고, 상기 차동 커맨드 신호 경로는 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들 중 소정의 버퍼 유닛으로 커맨드 정보를 전달하는 것을 특징으로 하는 컴퓨터 시스템.
  19. 제16항에 있어서,
    상기 I/O 회로에 연결되며, 상기 제 1 모드와 상기 제 2 모드 중 어느 모드를 선택할지를 검출하여 상기 I/O 회로에 상기 모드 선택 신호를 제공하는 구성 유닛을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  20. 제16항에 있어서,
    상기 직렬 상호접속 각각은 제 1 데이터 전송 속도에서 동작하고, 상기 병렬 상호접속은 제 2 데이터 전송 속도에서 동작하고, 상기 제 1 데이터 전송 속도는 상기 제 2 데이터 전송 속도보다 더 빠른 것을 특징으로 하는 컴퓨터 시스템.
  21. 제20항에 있어서,
    상기 직렬 상호접속 각각은 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들 중 소정의 버퍼 유닛에 클럭을 전달하는 차동 클럭 신호 경로를 포함하고, 상기 차동 클럭 신호들 각각은 상기 제 1 데이터 전송 속도에서 동작하는 것을 특징으로 하는 컴퓨터 시스템.
  22. 제20항에 있어서,
    상기 병렬 상호접속은 하나 또는 그 이상의 클럭 신호 경로들을 포함하고, 상기 클럭 신호 경로들 각각은 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 메모리 모듈들로 제 2 클럭 신호를 전달하며, 상기 제 2 클럭 신호는 상기 제 2 데이터 전송 속도에서 동작하는 것을 특징으로 하는 컴퓨터 시스템.
  23. 제16항에 있어서,
    상기 병렬 상호접속은,
    정렬된 복수의 쌍방향 데이터 신호 경로들과, 상기 쌍방향 데이터 신호 경로들 각각은 상기 메모리 제어기와 상기 하나 또는 그 이상의 메모리 모듈들 중 특정 하나 간에 데이터를 전달하고;
    복수의 쌍방향 데이터 스트로브 신호 경로들과, 상기 쌍방향 데이터 스트로브 신호 경로들은 상기 메모리 제어기와 상기 하나 또는 그 이상의 메모리 모듈들 중 특정 하나 간에 데이터 스트로브들을 전달하고; 그리고
    복수의 단방향 어드레스 및 커맨드 신호 경로들을 포함하여 구성되고,
    상기 단방향 어드레스 및 커맨드 신호 경로들은 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 메모리 모듈들로 어드레스 및 커맨드 정보를 전달하는 것을 특징으로 하는 컴퓨터 시스템.
  24. 제16항에 있어서,
    상기 직렬 상호접속 각각은 복수의 다운스트림 차동 단방향 신호 경로들을 포함하고, 상기 다운스트림 차동 단방향 신호 경로들 각각은 데이터 및 커맨드 정보를 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들로 전달하는 것을 특징으로 하는 컴퓨터 시스템.
  25. 제24항에 있어서,
    상기 직렬 상호접속 각각은 다운스트림 단방향 차동 클럭 신호 경로를 포함하고, 상기 다운스트림 단방향 차동 클럭 신호 경로는 직렬 클럭 신호를 상기 메모리 제어기로부터 상기 하나 또는 그 이상의 버퍼 유닛들 각각으로 전달하는 것을 특징으로 하는 컴퓨터 시스템.
  26. 제16항에 있어서,
    상기 직렬 상호접속 각각은 복수의 업스트림 차동 단방향 신호 경로들을 포함하고, 상기 업스트림 차동 단방향 신호 경로들 각각은 데이터 및 순환 잉여 부호(Cyclic Redundancy Code, CRC) 정보를 상기 하나 또는 그 이상의 버퍼 유닛들 중 하나로부터 상기 메모리 제어기로 전달하는 것을 특징으로 하는 컴퓨터 시스템.
  27. 제16항에 있어서,
    상기 직렬 상호접속 각각은 업스트림 단방향 차동 클럭 신호 경로를 포함하 고, 상기 업스트림 단방향 차동 클럭 신호 경로는 직렬 클럭 신호를 상기 하나 또는 그 이상의 버퍼 유닛들 중 하나로부터 상기 메모리 제어기로 전달하는 것을 특징으로 하는 컴퓨터 시스템.
KR1020097011350A 2006-10-31 2007-10-29 듀얼-모드 메모리 상호접속을 포함하는 메모리 제어기 KR20090077015A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/590,286 US7694031B2 (en) 2006-10-31 2006-10-31 Memory controller including a dual-mode memory interconnect
US11/590,286 2006-10-31

Publications (1)

Publication Number Publication Date
KR20090077015A true KR20090077015A (ko) 2009-07-13

Family

ID=39175571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097011350A KR20090077015A (ko) 2006-10-31 2007-10-29 듀얼-모드 메모리 상호접속을 포함하는 메모리 제어기

Country Status (8)

Country Link
US (2) US7694031B2 (ko)
JP (1) JP2010508600A (ko)
KR (1) KR20090077015A (ko)
CN (1) CN101583933B (ko)
DE (1) DE112007002619B4 (ko)
GB (1) GB2458040A (ko)
TW (1) TWI489456B (ko)
WO (1) WO2008054696A1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080189457A1 (en) * 2006-12-06 2008-08-07 International Business Machines Corporation Multimodal memory controllers
US20080140907A1 (en) * 2006-12-06 2008-06-12 Dreps Daniel M Multimodal Memory Controllers
US20100180143A1 (en) * 2007-04-19 2010-07-15 Rambus Inc. Techniques for improved timing control of memory devices
US8521979B2 (en) 2008-05-29 2013-08-27 Micron Technology, Inc. Memory systems and methods for controlling the timing of receiving read data
US7979757B2 (en) * 2008-06-03 2011-07-12 Micron Technology, Inc. Method and apparatus for testing high capacity/high bandwidth memory devices
KR100942953B1 (ko) * 2008-06-30 2010-02-17 주식회사 하이닉스반도체 데이터 전달 회로 및 그를 포함하는 반도체 메모리 장치
US7855931B2 (en) 2008-07-21 2010-12-21 Micron Technology, Inc. Memory system and method using stacked memory device dice, and system using the memory system
US8756486B2 (en) 2008-07-02 2014-06-17 Micron Technology, Inc. Method and apparatus for repairing high capacity/high bandwidth memory devices
US8289760B2 (en) * 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
US8127204B2 (en) 2008-08-15 2012-02-28 Micron Technology, Inc. Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system
US8489837B1 (en) 2009-06-12 2013-07-16 Netlist, Inc. Systems and methods for handshaking with a memory module
US9128632B2 (en) * 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
US8533538B2 (en) * 2010-06-28 2013-09-10 Intel Corporation Method and apparatus for training a memory signal via an error signal of a memory
KR101728067B1 (ko) * 2010-09-03 2017-04-18 삼성전자 주식회사 반도체 메모리 장치
US9223726B2 (en) 2010-09-10 2015-12-29 Cypress Semiconductor Corporation Apparatus and method for programmable read preamble with training pattern
US8140778B1 (en) * 2010-09-10 2012-03-20 Spansion Llc Apparatus and method for data capture using a read preamble
US9355051B2 (en) 2010-09-10 2016-05-31 Cypress Semiconductor Corporation Apparatus, method, and manufacture for using a read preamble to optimize data capture
US8990605B2 (en) 2010-09-10 2015-03-24 Spansion Llc Apparatus and method for read preamble disable
US8583987B2 (en) 2010-11-16 2013-11-12 Micron Technology, Inc. Method and apparatus to perform concurrent read and write memory operations
US8400808B2 (en) 2010-12-16 2013-03-19 Micron Technology, Inc. Phase interpolators and push-pull buffers
TWI464597B (zh) * 2012-07-19 2014-12-11 Wistron Corp 改善資料傳輸之方法及其相關電腦系統
US20140359181A1 (en) * 2013-05-31 2014-12-04 Hewlett-Packard Development Company, L.P. Delaying Bus Activity To Accomodate Memory Device Processing Time
US10324841B2 (en) 2013-07-27 2019-06-18 Netlist, Inc. Memory module with local synchronization
US9171597B2 (en) 2013-08-30 2015-10-27 Micron Technology, Inc. Apparatuses and methods for providing strobe signals to memories
US9218575B2 (en) * 2013-09-04 2015-12-22 Intel Corporation Periodic training for unmatched signal receiver
TWI533608B (zh) * 2014-06-30 2016-05-11 友達光電股份有限公司 資料接收器及資料接收方法
US9852811B2 (en) * 2014-11-13 2017-12-26 Macronix International Co., Ltd. Device and method for detecting controller signal errors in flash memory
US20160371211A1 (en) * 2015-06-16 2016-12-22 Apple Inc. Bus-bit-order ascertainment
US10186309B2 (en) 2016-06-29 2019-01-22 Samsung Electronics Co., Ltd. Methods of operating semiconductor memory devices and semiconductor memory devices
US10692555B2 (en) 2016-06-29 2020-06-23 Samsung Electronics Co., Ltd. Semiconductor memory devices enabling read strobe mode and related methods of operating semiconductor memory devices
KR102641515B1 (ko) 2016-09-19 2024-02-28 삼성전자주식회사 메모리 장치 및 그것의 클록 분배 방법
US10795592B2 (en) * 2017-05-05 2020-10-06 Dell Products, L.P. System and method for setting communication channel equalization of a communication channel between a processing unit and a memory
KR102392055B1 (ko) * 2017-08-09 2022-04-28 삼성전자주식회사 리트레이닝 동작의 수행 여부를 효율적으로 결정하기 위한 메모리 장치 및 이를 포함하는 메모리 시스템
US11604714B2 (en) 2017-08-09 2023-03-14 Samsung Electronics Co, Ltd. Memory device for efficiently determining whether to perform re-training operation and memory system including the same
KR102438991B1 (ko) 2017-11-28 2022-09-02 삼성전자주식회사 메모리 장치 및 그것의 동작 방법
US10884451B2 (en) * 2018-05-01 2021-01-05 DeGirum Corporation System and methods for completing a cascaded clock ring bus
US10418125B1 (en) * 2018-07-19 2019-09-17 Marvell Semiconductor Write and read common leveling for 4-bit wide DRAMs
US11734174B2 (en) * 2019-09-19 2023-08-22 Intel Corporation Low overhead, high bandwidth re-configurable interconnect apparatus and method
US11392299B2 (en) 2019-12-20 2022-07-19 Micron Technology, Inc. Multi-purpose signaling for a memory system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6510487B1 (en) * 1996-01-24 2003-01-21 Cypress Semiconductor Corp. Design architecture for a parallel and serial programming interface
EP1021884A2 (en) 1997-07-31 2000-07-26 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)
US6304930B1 (en) * 1998-01-20 2001-10-16 Matsushita Electric Industrial Co., Ltd. Signal transmission system having multiple transmission modes
JP3315375B2 (ja) * 1998-01-20 2002-08-19 松下電器産業株式会社 信号伝送システム
US6052073A (en) * 1998-03-23 2000-04-18 Pmc-Sierra Ltd. Serial to parallel converter enabled by multiplexed flip-flop counters
JPH11306074A (ja) * 1998-04-23 1999-11-05 Sharp Corp 情報処理装置
JP2000207350A (ja) * 1999-01-19 2000-07-28 Asahi Chem Ind Co Ltd デ―タ転送装置及びデ―タ転送方法
US6502161B1 (en) * 2000-01-05 2002-12-31 Rambus Inc. Memory system including a point-to-point linked memory subsystem
US7047330B2 (en) * 2001-03-06 2006-05-16 Ati Technologies, Inc. System for digital stream transmission and method thereof
US6845420B2 (en) * 2001-10-11 2005-01-18 International Business Machines Corporation System for supporting both serial and parallel storage devices on a connector
US20040098545A1 (en) 2002-11-15 2004-05-20 Pline Steven L. Transferring data in selectable transfer modes
JP2004199309A (ja) * 2002-12-18 2004-07-15 Renesas Technology Corp マイクロコントローラ、マイクロプロセッサおよび不揮発性半導体メモリ装置
US6826663B2 (en) 2003-01-13 2004-11-30 Rambus Inc. Coded write masking
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
US7085886B2 (en) * 2003-05-28 2006-08-01 International Buisness Machines Corporation Autonomic power loss recovery for a multi-cluster storage sub-system
JP2005346123A (ja) * 2004-05-31 2005-12-15 Toshiba Corp パラレルインタフェースコネクタを備えたストレージ装置及び同装置に適用される変換コネクタ
KR100643605B1 (ko) 2004-08-16 2006-11-10 삼성전자주식회사 적응형 프리 엠퍼시스 장치, 데이터 통신용 송신기,데이터 통신용 송수신 장치 및 적응형 프리 엠퍼시스 방법
US20060195631A1 (en) 2005-01-31 2006-08-31 Ramasubramanian Rajamani Memory buffers for merging local data from memory modules
US7368950B2 (en) 2005-11-16 2008-05-06 Montage Technology Group Limited High speed transceiver with low power consumption
US7577039B2 (en) 2005-11-16 2009-08-18 Montage Technology Group, Ltd. Memory interface to bridge memory buses
US7558124B2 (en) 2005-11-16 2009-07-07 Montage Technology Group, Ltd Memory interface to bridge memory buses

Also Published As

Publication number Publication date
TW200832406A (en) 2008-08-01
GB0908637D0 (en) 2009-06-24
US20100228891A1 (en) 2010-09-09
US8019907B2 (en) 2011-09-13
CN101583933B (zh) 2012-09-05
DE112007002619B4 (de) 2022-08-04
GB2458040A (en) 2009-09-09
CN101583933A (zh) 2009-11-18
TWI489456B (zh) 2015-06-21
US20080147897A1 (en) 2008-06-19
JP2010508600A (ja) 2010-03-18
WO2008054696A1 (en) 2008-05-08
US7694031B2 (en) 2010-04-06
DE112007002619T5 (de) 2009-09-10

Similar Documents

Publication Publication Date Title
US8019907B2 (en) Memory controller including a dual-mode memory interconnect
JP5300732B2 (ja) 高速シリアルバッファを有するメモリシステム
US9979432B2 (en) Programmable distributed data processing in a serial link
US7444558B2 (en) Programmable measurement mode for a serial point to point link
US7219294B2 (en) Early CRC delivery for partial frame
US7395485B2 (en) Check codes mapped across multiple frames
US7412627B2 (en) Method and apparatus for providing debug functionality in a buffered memory channel
US7861140B2 (en) Memory system including asymmetric high-speed differential memory interconnect
US20050108458A1 (en) Lane testing with variable mapping
US7212423B2 (en) Memory agent core clock aligned to lane
US8489912B2 (en) Command protocol for adjustment of write timing delay
US20100153799A1 (en) Method and apparatus for loopback self testing
CA2800612A1 (en) Status indication in a system having a plurality of memory devices
CN100538675C (zh) 中心单元、存储器模块、存储器系统和对其读和写的方法
EP4049050A1 (en) Performing scan data transfer inside multi-die package with serdes functionality
US8619883B2 (en) Low speed access to DRAM
JP4786941B2 (ja) ハブ、メモリモジュール、及びメモリシステムとこれを通じた読み込み方法及び書き込み方法

Legal Events

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