KR20130028013A - 동적 데이터 스트로브 검출 - Google Patents

동적 데이터 스트로브 검출 Download PDF

Info

Publication number
KR20130028013A
KR20130028013A KR1020120099221A KR20120099221A KR20130028013A KR 20130028013 A KR20130028013 A KR 20130028013A KR 1020120099221 A KR1020120099221 A KR 1020120099221A KR 20120099221 A KR20120099221 A KR 20120099221A KR 20130028013 A KR20130028013 A KR 20130028013A
Authority
KR
South Korea
Prior art keywords
memory
data
memory interface
value
interface circuit
Prior art date
Application number
KR1020120099221A
Other languages
English (en)
Other versions
KR101471251B1 (ko
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 KR20130028013A publication Critical patent/KR20130028013A/ko
Application granted granted Critical
Publication of KR101471251B1 publication Critical patent/KR101471251B1/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/1689Synchronisation and timing concerns
    • 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/38Information transfer, e.g. on bus
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

데이터를 캡처하기 위해 데이터 스트로브 신호가 유효한 때를 결정하는 것에 관한 기술이 개시된다. 일 실시예에서는, 데이터 스트로브 신호에 기초하여 메모리로부터 데이터를 캡처하기 위한 초기 타임 값을 결정하도록 구성된 메모리 인터페이스 회로를 포함하는 장치가 개시된다. 몇몇 실시예에서는, 상기 메모리 인터페이스회로가, 메모리로부터 알려진 값을 판독함으로써, 초기 타임 값을 결정할 수 있다. 일 실시예에서, 메모리 인터페이스 회로는 또한 데이터를 캡처하기 위한 조정된 타임 값을 결정하도록 구성되며, 여기에서 메모리 인터페이스 회로는 데이터 스트로브 신호를 샘플링하기 위해 초기 타임 값을 이용함으로써 조정된 타임 값을 결정하도록 구성된다.

Description

동적 데이터 스트로브 검출{DYNAMIC DATA STROBE DETECTION}
본 발명은 일반적으로 프로세서에 관한 것으로, 보다 상세히는 프로세서들의 메모리와의 인터페이싱에 관한 것이다.
프로세서와 메모리 간에 데이터가 전송될 때, 데이터 스트로브 신호(때때로 DQS라고도 칭함)에, 버스 상의 전압들이 실제 데이터 값들과 대응하는 때를 표시하고 그 버스로부터의 데이터 값들의 캡처를 조작(coordinate)하기 위한 데이터 신호가 제공된다. 기입 동작에서, 프로세서 상의 메모리 컨트롤러 인터페이스는 메모리에 기입되고 있는 데이터에 대한 데이터 스트로브 신호를 생성하는 것을 담당한다. 판독 동작에서, 메모리는 판독되고 있는 데이터에 대한 데이터 스트로브 신호를 생성한다.
통상적으로 데이터 스트로브 신호는 동일한 양방향 버스 라인을 통해 전송된다. 이와 같이, DQS 신호 라인은 판독 동작 수행과 기입 동작 수행 간의 프로팅(float)(즉, 3가지 상태(tri-state))이 허용될 수 있다. 데이터 스트로브 신호가 유효하기 전에 수신자가 데이터를 캡처하기를 시도한다면, 신호 라인의 3가지 상태의 값은 데이터가 잘못 캡처되도록 할 수 있다. 또 다른 경우, DQS 신호의 초기 싸이클 이후에 수신자가 데이터를 캡처하기 시작한다면, 모든 데이터가 캡처되지는 않을 것이다.
<발명의 개요>
본 발명은 데이터 스트로브 신호가 데이터 캡처에 유효한 때를 결정하기 위한 기술을 설명한다.
일 실시예에서, 메모리와의 기입 동작 및 판독 동작의 수행을 촉진하도록 구성되는 메모리 인터페이스 회로(예를 들어, 메모리 PHY)를 포함하는 프로세서가 개시된다. 판독 동작 동안, 메모리 인터페이스 회로는 메모리에 의해 제공된 데이터 스트로브 신호에 기초하여 데이터의 비트들을 래치함으로써 메모리 버스로부터 수신된 데이터를 캡처할 수 있다. 무효한 데이터를 캡처할 가능성을 줄이기 위하여, 메모리 인터페이스 회로는, 일 실시예에서, 알려진 값에 대하여 메모리에 판독 요청을 송신하는 캘리브레이션을 수행할 수 있다(예를 들어, 메모리에 대한 오토 리플래시 모드를 벗어난 후, 프로세서 및 메모리의 초기화 동안, 등등). 그 다음 비트들의 캡처를 시작하고 이들을 저장된 값의 사본과 비교하여 버스 상의 데이터가 유효하게 되어 데이터 스트로브 신호 또한 유효함을 나타내는 때를 결정한다. 일 실시예에서, 메모리 인터페이스 회로는 데이터 스트로브 값이 유효한 때(예를 들어, 판독 요청을 송신한 이후의 3.5 클럭 싸이클)를 결정할 수 있을 때까지 복수의 판독 동작들을 수행하도록 구성될 수 있다. 다른 실시예에서, 메모리 인터페이스 회로는 단일 판독 요청을 송신하고 스트로브 신호의 레이트보다 더 높은 레이트(예를 들어, DQS의 매 1/4 싸이클)로 데이터의 비트들을 캡처하여 신호가 유효한 때를 결정할 수 있다.
일부 실시예에서, 메모리 인터페이스 회로는 또한 데이터 스트로브 신호를 샘플링하여 데이터 스트로브 신호가 유효한 때를 결정하는 다른 캘리브레이션을 수행하도록 구성될 수 있다. 그 다음 메모리 인터페이스 회로는 이 결정에 기초하여 데이터의 비트들을 래치하는 때를 조정할 수 있다. 일 실시예에서, 메모리 인터페이스 회로는 메모리로부터 알려진 값을 판독함으로써 결정되는 초기 타임 값에 기초하여 데이터 스트로브 신호를 샘플링하는 때를 결정하도록 구성된다. 일부 실시예에서, 메모리 인터페이스 회로는 프로세스, 전압, 및 온도(PVT)에서의 변화에 의해 스트로브 신호의 타이밍이 변화함에 따른 조정을 최소화하기 위하여 데이터 스트로브 신호를 주기적으로 리샘플링할 수 있다.
도 1은 2개의 판독 동작들에 대한 타이밍 특성들을 도시하는 한 쌍의 타이밍도.
도 2은 하나 이상의 메모리 모듈에 연결된 집적 회로의 실시예를 도시하는 블록도.
도 3은 메모리 모듈에 연결된 메모리 PHY의 일 실시예를 도시하는 블록도.
도 4는 메모리 PHY 내의 캘리브레이션 유닛의 일 실시예를 도시하는 블록도.
도 5a 및 5b는 메모리 PHY 내의 데이터 버퍼의 실시예를 도시하는 블록도.
도 6은 데이터 스트로브 신호가 유효한 때를 결정하는 방법의 일 실시예를 도시하는 흐름도.
도 7은 데이터 스트로브 신호가 유효한 때를 결정하는 방법의 다른 실시예를 도시하는 흐름도.
도 8은 예시적인 시스템의 블록도.
본 명세서는 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 참조들을 포함한다. 구문들 "일 실시예에서" 또는 "실시예에서"의 등장이 반드시 동일한 실시예를 말하는 것은 아니다. 특정 특징들, 구조들 또는 특성들이 본 발명에 따른 임의의 적절한 방식으로 결합될 수 있다.
용어. 이하의 단락들은 본 명세서(첨부된 청구범위 포함)에 나오는 용어들에 대한 정의 및/또는 문맥(context)을 제공한다:
"포함하는(Comprising)". 이 용어는 개방형이다. 첨부된 청구범위에서 사용됨에 있어서, 이 용어는 추가적인 구조 또는 단계들을 배제하지 않는다. "... 하나 이상의 프로세서 유닛을 포함하는 장치"를 인용하는 청구범위를 고려하도록 한다. 이러한 청구범위는 장치가 추가적인 컴포넌트들(예를 들어, 네트워크 인터페이스 유닛, 그래픽 회로 등)을 포함하는 것을 배제하지 않는다.
"~하도록 구성된(Configured To)". 여러 유닛들, 회로들 또는 다른 컴포넌트들이 태스크 또는 태스크들을 수행"하도록 구성된" 것으로서 설명되거나 청구될 수 있다. 이와 관련하여, "~하도록 구성된"은 유닛들/회로들/컴포넌트들이 동작 동안에 그러한 태스크 또는 태스크들을 수행하는 구조(예를 들어, 회로)를 포함하는 것을 나타냄으로써 구조를 함축하는 데에 사용된다. 이와 같이, 특정 유닛/회로/컴포넌트가 현재 동작 중이 아니더라도(예를 들어, on이 아니더라도), 유닛/회로/컴포넌트가 태스크를 수행하도록 구성된 것이라고 말할 수 있다. 용어 "~하도록 구성된"에 의해 사용된 유닛들/회로들/컴포넌트들은 하드웨어(예를 들어, 회로들, 동작을 구현하기 위하여 실행가능한 프로그램 명령어들을 저장하는 메모리 등)를 포함한다. 유닛/회로/컴포넌트가 하나 이상의 태스크를 수행"하도록 구성된" 것임을 인용하는 것은 그 유닛/회로/컴포넌트에 대하여 35 U.S.C. §112, 6항을 명백하게 적용하지 않기 위함이다. 또한, "~하도록 구성된"은 논의 중인 태스크(들)를 수행할 수 있는 방식으로 동작하도록 소프트웨어 및/또는 펌웨어(예를 들어, 소프트웨어를 실행하는 범용 프로세서 또는 FPGA)에 의해 조작되는 일반적인 구조(예를 들어, 일반적인 회로)를 포함할 수 있다. "~하도록 구성된"은 또한 하나 이상의 태스크를 구현 또는 수행하도록 되어있는 디바이스들(예를 들어, 집적 회로들)을 제작하기 위하여 제조 프로세스(예를 들어, 반도체 제작 설비)를 적응시키는 것을 포함할 수 있다.
"제1", "제2" 등. 본원에서 사용됨에 있어서, 이들 용어들은 이들 용어들 다음에 오는 명사들에 대한 라벨들로서 사용되고, 어떠한 유형의 순서(예를 들어, 공간적, 시간적, 논리적 등)도 암시하지는 않는다. 예를 들어, 8개의 프로세싱 요소들 또는 코어들을 갖는 프로세서에서, 용어 "제1" 및 "제2" 프로세싱 요소들은 8개의 프로세싱 요소들 중 임의의 2개의 프로세싱 요소를 말하기 위하여 사용될 수 있다. 즉, "제1" 및 "제2" 프로세싱 요소들은 논리 프로세싱 요소들 0 및 1로 한정되지 않는다.
"~에 기초하여(Based On)". 본원에서 사용됨에 있어서, 이 용어는 결정에 영향을 미치는 하나 이상의 팩터들을 설명하기 위하여 사용된다. 이 용어는 결정에 영향을 미칠 수 있는 추가적인 팩터들을 배제하지 않는다. 즉, 단지 이들 팩터들에 단독으로 기초하여 또는 이들 팩터들에 적어도 일부 기초하여 결정이 행해질 수 있다. 구문 "B에 기초하여 A를 결정한다"를 고려하도록 한다. B는 A의 결정에 영향을 미치는 팩터일 수 있지만, 이러한 구문은 A가 또한 C에 기초하여 결정되는 것을 배제하지 않는다. 다른 예들에서, A는 단독으로 B에 기초하여 결정될 수 있다.
"데이터 스트로브 신호(Data Strobe Signal)". 이 용어는 당해 기술 분야에서 그 일반적인 통념을 가지며, 유효한 데이터가 송신되고 있는 것을 나타내기 위하여 하나 이상의 데이터 신호와 함께 구동되는 신호를 포함한다. 스트로브 신호는 통상적으로 데이터 신호와 유사한 위상 및 주파수를 가지며, 데이터 신호로부터 데이터를 캡처하는 데에 사용될 수 있다.
이제 도 1로 가면, 2개의 판독 동작들에 대한 가능한 타이밍 특성들을 나타내는 한 쌍의 타이밍도(110A 및 110B)가 도시되어 있다. 도시된 바와 같이, 각각의 도면(110)은 클럭 신호 CK(차동 신호 쌍 CK_t 및 CK_c로 표현됨), 커맨드 신호 [CMD], 데이터 스트로브 신호 DQS(차동 신호 쌍 DQS_c 및 DQS_t로 표현됨), 및 데이터 신호 DQ를 포함한다. 클럭 신호 CK는 집적 회로와 메모리 간의 여러 동작들의 타이밍을 조정하는 데에 사용될 수 있다. 커맨드 신호 [CMD]는 메모리 물리 인터페이스 회로(PHY)에 의해 생성되어, 메모리로 하여금 여러 동작들(예를 들어, 판독을 위한 행 및 열 어드레스 스트로브들 등)을 수행하게 할 수 있다. 데이터 스트로브 신호 DQS는 데이터 신호 DQ가 유효한 데이터(비트 D1, D2, D3 등으로 나타냄)를 가질 때 진동하는 신호이다.
양 판독 동작들에서, 메모리 PHY는 시간 T0에서 CMD 신호를 통해 메모리에 판독 커맨드를 전송함으로써 시작한다. 그 후, 메모리는 다음의 하나 이상의 클럭 사이클 동안 데이터를 검색하고 요청된 데이터를 메모리 PHY에 다시 제공할 수 있다. 메모리가 데이터 제공을 시작하면, 메모리는 DQS를 로우로 구동시키고, 그 후 비트들이 버스 양단에서 구동됨에 따라 DQS를 진동시킨다. 도면(110A)에서, 메모리는 T2 후에 DQS를 로우로 구동시키고, T3 후에 DQS를 진동시키기를 시작한다. 도면(110B)에서, 메모리는 T3 후에 DQS를 로우로 구동시키고, T4 후에 진동을 시작한다. DQS가 진동함에 따라, 일 실시예에서, 메모리 PHY는 하강 에지(falling edge)(104)에서 시작하는 DQS의 하강 에지들 상에서 DQ의 비트들을 래치한다.
이러한 실시예에서 모든 데이터를 정확하게 캡처하기 위하여, 메모리 PHY는 DQS의 제1 전체 하강(즉, 플로팅 값으로부터 논리 0으로의 하강(102)과 반대로, 논리 1로부터 논리 0으로의 하강(104)) 동안에 데이터 래치를 시작해야 한다. 제1 비트의 데이터가 이 하강에서 또는 그 전에(예를 들어, 102A에서 또는 그 전에) 래치되면, DQS의 플로팅 상태는 유효하지 않은 비트들이 래치되게 할 수 있다. 104A 후에 제1 비트가 래치되면, 초기 비트 D1은 캡처되지 않는다. 여러 실시예들에서, 메모리 PHY는 DQS가 유효하게 될 때까지(예를 들어, 하강(102) 후의 시간까지) DQS를 게이팅함으로써(예를 들어, 캡처하는 DQ 래치를 구동하는 것을 방지함으로써) 데이터가 캡처되는 때를 컨트롤할 수 있다. 따라서, 도면(110A)에서, 메모리 PHY는 정확히 모든 비트의 데이터를 정확하게 캡처하기 위하여 기간(120A) 내에서 DQS를 언게이트(ungate)하여야(즉, 캡처하는 래치에 제공하여야) 한다.
여러 메모리 표준들은 데이터가 정확하게 캡처되는 것을 보장하기 위하여 판독 커맨드가 발행된 후에 DQS가 유효하게 되는 딜레이 기간을 지정할 수 있다. 이 딜레이 기간의 예는 T0에서의 판독 커맨드의 시작부터 3개의 CK 사이클 딜레이로서 도면(110A 및 110B)에 도시되어 있다. 두 도면(110A 및 110B) 모두에서, DQS는 이 3개의 사이클 기간(단, 이 딜레이의 마지막 및 DQS 진동의 시작 사이의 시간이 tDQSCK로서 지칭될 수 있음에 유의) 후에 유효해지지만, 이 기간을 정의하는 것이 DQS가 T3에서 플로팅 상태인 도면(110B)에 도시된 바와 같이 DQS가 이 기간의 마지막에 유효할 것임을 보장하지는 않는다. 예를 들어, 도면(110A)에서, 메모리 PHY가 T3에서 DQS를 언게이트하면, DQS는 플로팅되지 않고, 메모리 PHY는 데이터를 정확하게 캡처할 것이다. 그러나, 도면(110B)에서, DQS는 T3 후의 기간(130) 동안에 플로팅 상태이다. DQS가 기간(130) 동안에 메모리 PHY에서 캡처 래치를 구동하도록 허가되면, 유효하지 않은 데이터가 캡처될 수 있다. 그러나, DQS가 기간(120B) 동안에 언게이트되면, 데이터는 정확하게 캡처되어야 한다.
이하에서 기술되는 바와 같이, 여러 실시예들에서, 집적 회로는 다양한 기술들을 사용하여, 데이터를 캡처하기 위하여 데이터 스트로브 신호를 사용하기를 시작할 때를 결정할 수 있다. 예를 들어, 이러한 회로는 다양한 기술들을 사용하여, 양 기간(120A 및 120B) 내의 타임 값을 결정하고 그 타임 값에 기초하여 데이터 캡처를 시작할 수 있다.
이제 도 2을 참조하면, 시스템(10)의 블록도가 도시되어 있다. 예시적인 실시예에서, 시스템(10)은 외부 메모리 모듈들(240A-240B)에 연결된 집적 회로(IC)(200)를 포함한다. 집적 회로(200)는 하나 이상의 프로세싱 코어(210A-210B), 메모리 컨트롤러(220) 및 하나 이상의 메모리 물리 인터페이스 회로(PHY)(230A-230B)를 포함한다. 메모리 컨트롤러(220)는 각각의 상호접속부들(212A 및 212B)을 통해 코어들(210A 및 210B)에, 및 각각의 상호접속부들(222A 및 222B)을 통해 메모리 PHY(230)에 연결된다. 메모리 PHY는 각각의 상호접속부들(232A 및 232B)을 통해 메모리 모듈들(240A 및 240B)에 연결된다.
일 실시예에서, 코어들(210)은 데이터에 대한 판독 및 기입 요청들을 발생시키도록 구성된다. 코어들(210)은 임의의 명령어 세트 아키텍처를 구현할 수 있고, 그 명령어 세트 아키텍처에서 정의된 명령어들을 실행하도록 구성될 수 있다. 코어들(210)은 스칼라(scalar), 슈퍼스칼라(superscalar), 파이프라인(pipelined), 슈퍼파이프라인(superpipelined), 무작위의(out of order), 순서가 있는(in order), 추측의(speculative), 비추측의(non-speculative), 등 또는 이들의 조합을 포함하는 임의의 마이크로아키텍처를 채택할 수 있다. 코어들(210)은 회로를 포함할 수 있고, 선택적으로 마이크로코딩 기술들을 구현할 수 있다. 코어들(210)은 하나 이상의 캐시 레벨을 포함할 수 있다. 하나 이상의 코어들(210)은 디스플레이될 개체들을 프레임 버퍼로 렌더링하도록 구성된 그래픽 컨트롤러를 구현할 수 있다.
일 실시예에서, 메모리 컨트롤러(220)는 코어들(210)에 의해 발생된 요청들을 처리하고, 대응하는 커맨드들을 발행하여 메모리 모듈들(240)로 하여금 다양한 메모리 동작들이 수행되게 하도록 구성된다. 메모리 컨트롤러(220)는 또한 (도 8에 관련하여 설명된 것들과 같은) 다양한 주변 장치 디바이스들, 네트워킹 디바이스들, 저장소 디바이스들, I/O 디바이스들 등과 같은 다른 소스들로부터의 요청을 처리할 수도 있다. 메모리 컨트롤러(220)는 번역 구조들(translation structures), 페이지 워크 유닛들(page walk units) 등과 같은 가상 메모리를 구현하기 위한 다양한 구조들을 포함할 수 있다. 일 실시예에서, 메모리 컨트롤러(220)는 모듈들(240)에 대한 리프레쉬 커맨드들을 발행함으로써 메모리 모듈들(240)을 리프레쉬하는 것을 용이하게 하도록 구성된다.
일 실시예에서, 메모리 PHY들(230)은 데이터의 교환을 용이하게 하기 위해 메모리 모듈들(240)을 갖는 IC(200)의 로우-레벨 물리 인터페이싱을 다루도록 구성된다. 예를 들어, 메모리 PHY들(230)은 신호들의 타이밍, DRAM 메모리를 동기화하기 위한 적절한 클럭킹 등을 담당할 수 있다. 메모리 PHY들(230)은 집적 회로(200) 내에 공급된 클럭으로 로킹(lock)하고, 메모리 모듈들(240)에 의해 사용되는 대응하는 클럭(예를 들어, 상기에 설명된 클럭 신호 CK)을 발생시키도록 구성될 수 있다. 메모리 PHY들(230)은 메모리 컨트롤러(220)로부터의 커맨드들을 메모리 모듈들(240)에 릴레이하도록 구성될 수 있다. 메모리 PHY들(230)은 메모리 컨트롤러(220)으로부터의 커맨드들을 수신하고, 메모리 모듈들(240)에 하나 이상의 대응하는 신호들(예를 들어, CMD, DQS, DQ 등)을 발생시키도록 구성될 수도 있다.
메모리 모듈들(240)은 동적 랜덤 액세스 메모리(DRAM), 동기 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3, etc.), (mDDR3 등과 같은 SDRAM의 모바일 버전들 및/또는 LPDDR2, LPDDR3 등과 같은 SDRAM의 저전력 버전을 포함하는), SDRAM, RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 임의의 형태의 메모리일 수 있다. 하나 이상의 메모리 디바이스들은 싱글 인라인 메모리 모듈들(SIMM), 듀얼 인라인 메모리 모듈들(DIMM) 등과 같은 메모리 모듈들을 형성하기 위해 회로 기판 위로 연결될 수 있다. 대안적으로, 디바이스들은 집적 회로(200)와 함께 칩-온-칩 구성, 패키지-온-패키지 구성, 또는 다중 칩 모듈 구성으로 장착될 수 있다.
다양한 실시예들에서, 메모리 PHY들(230)은 데이터 스트로브 신호 DQS에 기초하여 메모리 모듈들(240)로부터 수신된 데이터 DQ를 캡처하도록 구성된다. DQS가 유효할 때, 데이터가 캡처되는 것을 보장하기 위해, 일 실시예에서, PHY들(230)은 대응하는 커맨드를 메모리 모듈들(240)에 전송한 후에 DQS가 유효하게 되는 때를 결정하는 캘리브레이션 프로세스를 수행하도록 구성된다. 하기에서 설명될 바와 같이, 일 실시예에서, 이 캘리브레이션 프로세스는 메모리로부터 공지된 값을 판독하고, 그 값이 올바르게 캡처되어 DQS가 그 포인트에서 유효함을 나타내는 때를 결정하는 것을 포함할 수 있다. 일부 실시예들에서, 이 캘리브레이션 프로세스는 DQS의 타이밍을 더 정확하게 결정하고 임의의 후속하는 타이밍 변화를 감지하기 위해 DQS를 주기적으로 샘플링하는 것을 더 포함할 수 있다.
이제 도 3으로 돌아가면, 메모리 모듈(240)에 연결된 메모리 PHY(230)의 일 실시예가 도시된다. 도시된 실시예에서, 메모리 PHY(230)는 마스터 딜레이드-록 루프(delayed-lock loop)(DLL)(304), 하나 이상의 데이터 버퍼들(310A 및 310B), 딜레이 유닛(320), 게이트(330) 및 캘리브레이션 유닛(340)을 포함한다. 메모리 모듈(240)은 테스트 값 저장소(test value storage)(350)도 포함한다.
일 실시예에서, 마스터 DLL(304)은 다양한 동작 수행을 조작하기 위해 PHY(230) 내의 다양한 유닛들에 수신된 마스트 클럭 신호(302)를 공급하도록 구성된다. 일부 실시예에서, 마스터 DLL(304)은 신호(302)에 기초하여 메모리 모듈들(240)을 위한 클럭 신호 CK를 발생시키도록 더 구성될 수 있다. 일부 실시예들에서, 메모리 모듈(240)이 더블 데이터 레이트(DDR) 메모리라면, 신호 CK는 두 배의 신호(302) 레이트를 가질 수 있다.
일 실시예에서, 데이터 버퍼들(310)은 메모리 컨트롤러(220)에 제공될 수 있을 때까지 메모리 모듈(240)로부터 수신된 데이터 DQ를 캡처하고 버퍼링하도록 구성된다. 다양한 실시예들에서, 데이터 버퍼들(310)은 (예를 들어, DQS의 각각의 하강(또는 상승) 에지에서) 데이터 스트로브 신호 DQS에 기초하여 데이터 DQ의 비트들을 래치(latch)하도록 구성된다. 하기에서 설명될 바와 같이, 일 실시예에서, 캘리브레이션 유닛(340)은 DQS의 타이밍 특성들을 결정하기 위해 버퍼(310)로부터의 비트들을 캡처할 수 있다. 데이터 버퍼들(310)은 도 5a 및 5b와 함께 이하 더 자세히 설명된다.
일 실시예에서, 딜레이 유닛(320)은 데이터 버퍼(310)가 동작 게이트(330)에 의해 DQS를 수신할 때를 제어하도록 구성된다. 도시된 실시예에서, 커맨드 CMD가 메모리 모듈(240)에 송신된 이후에 적절한 딜레이(322)(예를 들어, 클럭 신호(302)의 3.5 사이클)가 경과한 후에, 딜레이 유닛(320)은 게이트(330)를 개방하기 위해 캡처 스타트 신호(324)를 어써트(assert)하도록 구성된다. 일 실시예에서, 딜레이 유닛(320)은 딜레이드-록 루프를 이용하여 구현될 수 있다. 다양한 실시예들에서, 캡처 스타트 신호(324)의 어써션(assertion)은 DQS 어라이벌(arrival)(즉, DQS가 유효하게 될 때)에 따라 타이밍된다. 예를 들어, 상기에서 설명된 도면들(110A 및 110B)에서, 딜레이 유닛(320)은 DQS로 하여금 데이터를 캡처하기 위한 버퍼들(310)을 구동하도록 하기 위해 구간들(120A 및 120B)의 오버랩동안 게이트(330)를 개방하도록 구성될 수 있다. 상기에서 언급된 바와 같이, 만약, 캡처 스타트(324)가 DQS의 제1 하강 에지 후에 어써트된다면, 버퍼(310)는 모든 DQ 비트들을 정확하게 캡처하지 않을 수 있다. 유사하게, 만약, 캡처 스타트(324)가 DQS가 플로팅(floating)일 때 어써트된다면, 버퍼들(310)은 잘못된 DQS 에지들 상에서 유효하지 않은 데이터를 캡처할 수 있다.
일 실시예에서, 캘리브레이션 유닛(340)은 DQS가 유효하게 될 수 있는 때를 결정하고, 딜레이 값(322)의 딜레이 조정(342)을 수행하여 딜레이 유닛(320)이 적절한 구간 동안 캡처 스타트(330)를 어써트하도록 구성된다. 다양한 실시예들에서, 캘리브레이션 유닛(340)은 메모리 모듈(240)로부터의 테스트 값을 판독하고 버퍼(310)가 캡처하는 비트들을 분석함으로써 딜레이 유닛(320)에 대한 딜레이 값(322)을 결정한다. 캘리브레이션 유닛(340)이 캡처된 비트 스트림 내의 캡처된 테스트 값(352)을 인식할 때, 캘리브레이션 유닛(340)은 DQS가 이 구간 동안 유효한지를 결정할 수 있다. 따라서, 캘리브레이션 유닛(340)은 그 후에 딜레이 유닛(320)의 딜레이 값(322)을 조정할 수 있다. 일부 실시예들에서, 캘리브레이션 유닛(340)은 다중 판독 동작들로부터 캡처된 데이터를 분석함으로써 딜레이 값(322)을 결정하며, 각 판독 동작에 대한 데이터는 상이한 각각의 딜레이 값(322)을 이용하여 캡처되었다. 캘리브레이션 유닛(340)은 테스트 값의 정확한 캡처를 만들어 내는 딜레이 값(322)을 결정할 때까지, 상이한 딜레이 값들(322)을 계속하여 테스트할 수 있다. 다른 실시예들에서, 캘리브레이션 유닛(340)은 대안으로 단지 단일의 판독 동작으로부터의 데이터를 분석할 수 있으며, 데이터는, 데이터가 정확하고 DQS가 유효하게 되는 때를 결정하기 위해 DQS보다 높은 레이트(예를 들어, DQS의 매 1/4 사이클)에서 캡처된다. 일부 실시예들에서, 딜레이 값(322)을 결정하는 데 사용되는 테스트 값은 처음에 메모리에 기입되고, 후속하여 판독된다. 다른 실시예들에서, 테스트 값은 메모리 모듈(240)의 전용 부분에 저장되며, 예를 들어, 영구적으로 하드코딩된다.
일 실시예에서, 테스트 값 저장소(350)는 액세스 가능한 테스트 값들을 저장하는 것이 전용인 모듈(240)의 일부이다. 일부 실시예들에서, 저장소(350)는 공지된 테스트 값들을 반환하는 액세스 가능한 레지스터들을 포함할 수 있다. 예를 들어, 메모리 모듈(240)이 LPDDR 표준을 구현하는 일 실시예에서, 저장소(350)는 모드 레지스터 판독(MRR) 커맨드들에 응답하여 공지된 데이터 패턴들을 반환하는 모드 레지스터들(MR)(32 및 40)을 포함한다. 일 실시예에서, 캘리브레이션(340)은 메모리 모듈(240)에 직접 판독 요청을 발행하여 이에 의해 저장소(350)로부터의 테스트 값을 반환하게 하도록 구성될 수 있다. 다른 실시예에서는, 그 대신에 캘리브레이션(340)은 메모리 컨트롤러(220)로 하여금, 판독 커맨드를 (예컨대, 판독 명령어(344)를 통해) 발행하게 하고, 그 다음 메모리 PHY(230)는 테스트 값에 대한 메모리 모듈(240)로 릴레이한다.
일부 실시예에서, 공지 값을 판독하여 결정된 딜레이 값(322)은, 데이터가 일관성있게 올바로 캡처될 것을 보장하기에 충분할 만큼 정확하지 않을 수 있다(또는, 일부 실시예에서, 공지 값을 판독하는데 시간을 소모하는 것은, 다양한 타이밍 제약 때문에 실행 가능한 옵션이 아닐 수 있다). 다양한 실시예에서, 캘리브레이션 유닛(340)은, 사전에 결정된 딜레이 값(322)을 DQS를 샘플링하기 위한 초기 타임 값으로 사용하여, 그것이 언제 유효해지는지 결정하도록 구성된다. 일 실시예에서, 캘리브레이션 유닛(340)이 DQS를 샘플링하는 경우, 캘리브레이션 유닛은 DQS의 제1 전부 하강 (또는 상승) 클럭 에지를 식별하고, 그에 따라 딜레이 값(322)을 조정하도록 시도할 수 있다. 일부 실시예에서, 캘리브레이션 유닛(340)은 통상/기능적 판독 동작(즉, 공지된 테스트 값에 대한 것이 아닌 판독 동작)의 수행 동안, 이러한 조정된 딜레이 값(322)을 결정할 수 있다.
캘리브레이션 유닛(340)은, 다양한 기준에 기초하여 언제 DQS를 샘플링해야 하는지 또는 언제 공지 값을 판독해야 하는지를 결정할 수 있다. 일 실시예에서, 캘리브레이션 유닛(340)은, 메모리 PHY(230) 및 메모리 모듈(240)이 기동시에 초기화될 때(예컨대, 일 실시예에서, 록 신호가 마스터 DLL(304)로부터 어써트된 이후에), 캘리브레이션을 수행하기 위해(즉, "공지 값 캘리브레이션"을 수행) 공지 값을 판독할 수 있다. (일 실시예에서, 메모리 컨트롤러(220)는 캘리브레이션 유닛(340)으로 하여금 이러한 초기 캘리브레이션을 수행하게 할 수 있고; 캘리브레이션 유닛(340)은 그 이후에, 자기 자신이 후속 캘리브레이션을 언제 수행해야 할 지를 결정할 수 있다.) 일부 실시예에서, 캘리브레이션 유닛(340)은 또한, 메모리 모듈(340)이 자동 리프레시 모드를 나간 이후, 저 전력 모드를 나간 이후, 미리 결정된 기간이 경과한 이후 등에 공지 값 캘리브리션을 수행할 수 있다. 일부 실시예에서, 캘리브레이션 유닛(340)은, 공지 값 캘리브레이션이 각각 수행된 이후에 (예컨대, 더 정확한 딜레이 값(322)을 결정하기 위해) DQS를 샘플링하여 캘리브레이션을 수행할 수 있다(즉, "샘플링 캘리브레이션" 수행). 일부 실시예에서, 캘리브레이션 유닛(340)은 또한, 주기적으로 샘플링 캘리브레이션을 수행할 수 있다(예컨대, 특정 기간이 경과한 이후에).
이제 도 4를 참조하면, 캘리브레이션 유닛(340)의 일 실시예가 도시된다. 도시된 실시예에서, 캘리브레이션 유닛(340)은, 비교 유닛(410), 샘플링 유닛(420), 및 하나 이상의 타이머(430)를 포함한다.
일 실시예에서, 비교 유닛(410)은, 공지 값 캘리브레이션의 수행을 용이하게 하도록 구성된다. 도시된 실시예에서, 비교 유닛(410)은, 버퍼(310)에 의해 캡처된 비트들을 저장된 테스트 값(412)(예컨대, MR(32) 및 MR(40)에 의해 반환된 패턴들과 같은 저장소(350)의 값들의 사본)과 비교하여, 캡처된 테스트 값(352)을 식별한다. 이후에, 비교 유닛(410)은, 캡처된 테스트 값(352)을 언제 식별하는지에 기초하여 딜레이 값(414)을 결정할 수 있다. 일부 실시예에서, 비교 유닛(410)은, 다수의 판독 동작으로부터 캡처된 비트들을 비교하여, 그 값(352)을 식별하고 딜레이 값(414)을 결정하도록 구성된다. 다른 실시예에서, 비교 유닛(410)은, 단일 판독 동작에서만 캡처된 비트들을 비교하여, 그 값(352)을 식별하고 딜레이 값을 결정하도록 구성된다. 이러한 실시예에서, 다수의 판독 동작이 불필요하도록, 비트들은 DQS의 레이트보다 더 높은 레이트(예컨대, DQS의 매 1/4 사이클)로 캡처될 수 있다. 도시된 실시예에서, 비교 유닛(410)은 DQS의 샘플링을 용이하게 하기 위해 값(414)을 제공한다. 다른 실시예에서, 캘리브레이션 유닛(340)은 값(414)을 직접 딜레이 값(322)으로서 사용하여 딜레이 조정(342)을 수행할 수 있다.
일 실시예에서, 샘플링 유닛(420)은 샘플링 캘리브레이션의 수행을 용이하게 하도록 구성된다. 다양한 실시예에서, 샘플링 유닛(420)은, 인커밍 DQS를 샘플링하여 미리 결정된 패턴의 DQS 상승 및 하강 에지에 대한 체크를 하고 언제 DQS가 유효해지는 지를 결정하도록 구성된다. 일 실시예에서, 샘플링 유닛(420)은 적어도 매 1/16 사이클의 레이트로 샘플링한다(예컨대, 1/16 tCK 페이즈 시프티드 클럭은 오버샘플링 DLL에 의해 생성될 수 있다). 상기한 바와 같이, 일 실시예에서, 샘플링 유닛(420)은, 통상 판독 동작 동안 DQS를 샘플링하도록 구성된다; 다른 실시예에서, 샘플링 유닛(420)은 공지 값 캘리브레이션 동안 DQS를 샘플링할 수 있다. 도시된 실시예에서, 캘리브레이션 유닛(340)은, 샘플링 유닛(420)에 의해 결정된 딜레이 값에 기초하여 딜레이 유닛(342)의 조정(342)을 수행한다(일부 실시예에서, 샘플링 유닛(420)에 의해 결정된 딜레이 값은, 유닛(420)에 의해 사용된 더 높은 샘플링 레이트 때문에 값(414)보다 더 정확할 수 있다). 상기한 바와 같이, 다양한 실시예에서, 딜레이 조정(342)은, DQS가 유효해질 수 있을 윈도우의 중간에서 캡처 스타트(324)의 어써션(assertion)을 위치시키도록 수행될 수 있다.
일 실시예에서, 타이머(430)는 캘리브레이션 유닛(340)에 의해 공지 값 및/또는 샘플링 캘리브레이션을 수행할 때를 결정하도록 사용된다. 상기한 바와 같이, 일부 실시예에서, 캘리브레이션 유닛(340)은, 초기화 이후(예컨대, 시스템 부트-업 동안), DRAM 셀프 리프레시 모드 이후 등에 공지 값 캘리브레이션을 수행하도록 구성될 수 있고, 그 이후 즉시 샘플링 캘리브레이션을 수행할 수 있다. 일부 실시예에서, 캘리브레이션 유닛(340)은 또한 샘플링 캘리브레이션을 주기적으로 수행할 수 있다. 다양한 실시예에서, 타이머(430)는 그러한 캘리브레이션이 마지막으로 수행된 것이 언제인지를 추적하는데 사용될 수 있다. 예를 들면, 각 타이머(430)는 리셋 시에 시작 값으로 로딩될 수 있고, 캘리브레이션 이후에 동일한 시작 값으로 리로딩될 수 있다. 일 실시예에서, 타이머(430)가 제1 임계치에 도달하면, 캘리브레이션 유닛(340)은 다음번 가능한 판독시에 샘플링 캘리브레이션을 수행하도록 결정할 수 있다. 타이머(430)가 판독 전에 제2 임계치에 도달하면, 캘리브레이션 유닛(340)은 메모리 컨트롤러(220)에게 판독 커맨드를 발행하고 그 판독 동작의 수행 동안 DQS를 샘플링하라고 지시할 수 있다. 캘리브레이션 유닛(340)이 샘플링 캘리브레이션을 완료할 수 없고(예컨대, 다음 판독이 곧바로 발생하지 않거나 캘리브레이션 유닛(340)이 DQS가 유효해지는 때를 결정할 수 없을 때) 타이머(430)가 제3 임계치에 도달하면, 캘리브레이션 유닛(340)은 공지 값 캘리브레이션을 수행하도록 결정할 수 있다. 일부 실시예에서, 타이머(430)는, 메모리 PHY(230)에 의해 제어되는 각 메모리 랭크마다 각자의 타이머(430)를 포함할 수 있다.
이제 도 5a를 참조하면, 데이터 버퍼(310)의 일 실시예가 도시된다. 도시된 실시예에서, 버퍼(310)는, 판독-/기입-포인터 FIFO(first-in-first-out) 버퍼로서 구성된다. 도시된 바와 같이, 버퍼(310)는, 래치(510A-D)(예컨대, DQ 플립-플랍), 컨트롤 유닛(520), 및 멀티플렉서(MUX)(530)를 포함한다.
일 실시예에서, 래치(510A-D)는, 비트들이 메모리 컨트롤러(220)에 제공될 수 있을 때까지, 메모리 모듈(240)로부터 수신된 데이터 DQ의 비트들을 저장하도록 구성된다. 일 실시예에서, 통상 동작 동안(즉, 딜레이 값(322)이 결정되지 않은 때), 컨트롤 유닛(520)은, 각각의 수신된 비트 DQ에 대한 래치를 선택하고, DQS에 기초하여 선택된 래치를 클럭킹한다(즉, 래치가 그 비트를 캡처하고 저장하게 한다). 이후에, 컨트롤 유닛(520)은, 버퍼(310)로부터의 판독 동안 MUX(530)를 사용하여, 래치(510)의 출력을 선택할 수 있다. 기입 및 판독을 추적하기 위해서, 컨트롤 유닛(520)은 캡처 및 리캡처 카운터(522)를 보유할 수 있고, 이는 기입되고 판독된 마지막 래치를 나타낼 수 있다(또는 기입되거나 판독될 다음 래치를 나타낼 수 있다). 따라서, 일 실시예에서, 컨트롤 로직(520)은, 비트가 래칭되는 때에 DQS의 하강 (또는 상승) 에지 상의 캡처 카운터를 증분할 수 있고, 비트가 판독되는 때에 클럭 신호(302)의 하강 (또는 상승) 에지 상의 리캡처 카운터를 증분할 수 있다.
일 실시예에서, 딜레이 값(322)이 결정되는 때에, 제어 유닛(520)은 자신의 캡처 및 리캡처 카운터(522)를 증분시키지 않고, 그 대신에, 동일한 래치(510)로 하여금 테스트 값의 비트들을 캡처하게 한다. 상기한 바와 같이, 다양한 실시예에서, 캘리브레이션 유닛(340)(예컨대, 구체적으로 도시된 실시예에서 비교 유닛(410))은 래치(510)의 출력을 샘플링하여 비트들의 비교를 수행하도록 구성될 수 있다. 상기한 바와 같이, 일부 실시예에서, 캘리브레이션 유닛(340)은 DQS의 레이트보다 더 높은 레이트로 출력을 샘플링하도록 구성된다(예컨대, 적어도 DQS의 매 1/4 사이클); 다른 실시예에서, 유닛(340)은 DQS의 각 사이클 동안 단일 비트를 샘플링할 수 있다.
이제 도 5b를 참조하면, 데이터 버퍼(310)의 다른 실시예가 도시된다. 도시된 실시예에서, 버퍼(310)는 시프트 레지스터 FIFO 버퍼로서 구성된다. 도시된 바와 같이, 버퍼(310)는 래치(550A-D) 및 게이트(560)를 포함한다. 통상 판독 동작 중에, 래치들(550)은 일 실시예에 있어서 데이터 DQ의 비트들이 하나의 래치(550)로부터 다음의 래치로 시프트됨에 따라 DQS에 의해 클럭킹된다. 그러나, 도시된 실시예에 있어서, 테스트 값이 판독되고 있는 경우, 게이트(560)가 폐쇄되어, DQS가 래치(550A)만을 구동하며, 비트들이 후속 래치들(550B-550D)로 시프트되지 않는다. 그러면, 비교 유닛(410)은 단지 초기 래치(550A)의 출력을 샘플링하도록 구성될 수 있다.
이하, 도 6을 참조하면, 데이터 스트로브 신호가 유효한 때를 결정하는 방법(600)의 흐름도가 도시되어 있다. 방법(600)은 메모리 PHY(230)와 같은 메모리 인터페이스 회로에 의해 수행될 수 있는 방법의 일 실시예이다. 몇몇 실시예들에 있어서, 방법(600)은 메모리 PHY(230)의 초기화 중에(예를 들어, IC(200)의 부트 중에), 메모리에 대한 리프레시 모드의 종료 이후 등에 수행될 수 있다. 많은 경우에, 방법(600)의 수행은 유효하지 않은 데이터를 캡처할 위험들을 감소시킬 수 있다.
단계(610)에서, 메모리 PHY(230)는 데이터 값에 대한 판독 요청을 메모리(예를 들어, 메모리 모듈(240))로 송신한다. 일 실시예에 있어서, 데이터 값은 메모리의 전용 부분(예를 들어, 레지스터들 MR 32 또는 MR 40)에 저장된 테스트 값이다. 다른 실시예에 있어서, 데이터 값은 이전에 메모리로 기록되었다. 일 실시예에 있어서, 메모리 PHY(230)는 요청을 생성(즉, 발행)하지 않을 수 있지만, 대신에 메모리 컨트롤러(예를 들어, 메모리 컨트롤러(220))가 데이터 요청을 발행하게 할 수 있다.
단계(620)에서, 메모리 PHY(230)는 (예를 들어, 버스(232)로부터) 데이터 값의 캡처를 수행한다. 일 실시예에 있어서, 메모리 PHY(230)는 캡처된 데이터 값과 정확한 카피(예를 들어, 테스트 값들(412) 중 하나)를 비교하여, 데이터 값이 정확하게 캡처되었는지 여부를 결정한다. 몇몇 실시예들에 있어서, 메모리 PHY(230)는, 각각의 캡처가 각각의 타임 값(예를 들어, 딜레이 값(322)의 상이한 잠재적인 값)과 연관되도록 동일한 판독 요청에 대하여 단계(620) 중에 복수의 캡처들(예를 들어, 적어도 4회)을 수행할 수 있다.
단계(630)에서, 메모리 PHY(230)는 데이터 스트로브 신호(예를 들어, DQS)에 기초하여 데이터를 캡처할 때를 결정하기 위한 타임 값을 결정한다. 일 실시예에 있어서, 결정된 타임 값은, 데이터 스트로브 신호가 메모리에 의해 구동되는 것과 메모리에 대한 판독 요청의 발행 사이의 기간을 나타내는 값(예를 들어, 딜레이 값(322))이다. 일 실시예에 있어서, 상이한 각각의 타임 값들에 대하여 단계(620)에서 다수의 캡처들이 수행된 경우, 메모리 PHY(230)는 결정된 초기 타임 값으로서 각각의 타임 값들 중 하나를 선택할 수 있다. 따라서, 다양한 실시예들에 있어서, 타임 값이 데이터 스트로브 신호가 유효하게 될 가능성이 있는 윈도우의 중앙에(예를 들어, 전술한 기간들(120A 및 120B)의 오버랩 내에) 있다면 이 타임 값이 선택될 수 있다. 일 실시예에 있어서, 선택된 값은 다음에 (예를 들어, 게이트(330)를 제어함으로써) 메모리로부터 데이터를 후속 캡처하는데 이용될 수 있다.
몇몇 실시예들에 있어서, 방법(600)은 후술하는 방법(700)과 함께 수행될 수 있다.
이하, 도 7을 참조하면, 데이터 스트로브 신호가 유효한 때를 결정하는 다른 방법(700)의 흐름도가 도시되어 있다. 방법(700)은 메모리 PHY(230)와 같은 메모리 인터페이스 회로에 의해 수행될 수 있는 방법의 일 실시예이다. 많은 경우에, 방법(700)의 수행은 유효하지 않은 데이터를 캡처할 위험들을 감소시킬 수 있다.
단계(710)에서, 메모리 PHY(230)는 데이터 스트로브 신호에 기초하여 메모리로부터 데이터를 캡처하기 위한 초기 타임 값을 결정한다. 몇몇 실시예들에 있어서, 단계(710)는 전술한 방법(600)을 수행하는 단계를 포함한다.
단계(720)에서, 메모리 PHY(230)는 데이터 스트로브 신호를 샘플링하기 위해서 (단계(710)에서 또는 단계(720)의 이전 수행(pervious performance) 중에 결정된) 초기 타임 값을 이용함으로써 조정된 타임 값을 결정한다. 일 실시예에 있어서, 메모리 PHY(230)는 데이터 스트로브 신호의 단일 사이클 내에서 (예를 들어, 사이클의 1/16마다) 데이터 스트로브 신호의 다수의 샘플들을 수행한다. 몇몇 실시예들에 있어서, 메모리 PHY(230)는 복수의 샘플들을 수행하기 위해서 버퍼 내의 래치(예를 들어, 래치(510A 또는 550A))의 출력을 샘플링한다. 전술한 바와 같이, 일 실시예들에 있어서, 메모리 PHY(230)는 데이터 스트로브 신호를 샘플링하여, 데이터 스트로브 신호가 유효하게 될 때를 나타내는 (예를 들어, DQS 상승 에지 및 하강 에지의) 사전 결정된 패턴에 대하여 체크할 수 있다. 그런 다음, 메모리 PHY(230)는 이러한 조정된 타임 값을 이용하여 메모리로부터 수신된 데이터를 캡처할 수 있다.
다양한 실시예들에 있어서, 메모리 PHY(230)는 데이터 스트로브 신호의 임의의 조정을 고려하기 위해서 주기적으로 단계(720)를 수행하는 것을 계속할 수 있다. 단계(720)를 재수행할 때를 결정하기 위해서, 메모리 PHY(230)는 일 실시예에 있어서 (예를 들어, 단계(720)의 통과 수행에서 결정된) 타임의 최종 재검출이 수행된 때를 나타내는 카운터(예를 들어, 하나 이상의 타이머들(430))를 유지하며, 이 카운터의 만료 시에 다른 재검출을 수행한다.
예시적인 컴퓨터 시스템
이하, 도 8을 참조하면, (몇몇 실시예들에 있어서 전술한 시스템(10)을 구현하는데 이용될 수 있는) 시스템(850)의 일 실시예의 블록도가 도시되어 있다. 도시된 실시예에 있어서, 시스템(850)은 외부 메모리(852)에 연결된 집적 회로(200)의 적어도 하나의 인스턴스를 포함한다. 외부 메모리(852)는 도 2와 관련하여 전술한 메인 메모리 서브시스템을 형성할 수 있다(예를 들어, 외부 메모리(852)는 메모리 모듈들(240)을 포함할 수 있다). 집적 회로(200)는 하나 이상의 주변 장치들(854) 및 외부 메모리(852)에 연결된다. 메모리(852) 및/또는 주변 장치들(854)로 하나 이상의 공급 전압들을 공급할 뿐만 아니라 집적 회로(858)로 공급 전압들을 공급하는 전원(856)도 또한 제공된다. 몇몇 실시예들에 있어서, 집적 회로(200)의 하나보다 많은 인스턴스가 포함될 수 있다(그리고 하나보다 많은 외부 메모리(852)가 또한 포함될 수 있다).
메모리(852)는, DRAM(dynamic random access memory), SDRAM(synchronous DRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 SDRAM들의 모바일 버전들 및/또는 LPDDR2 등과 같은 SDRAM들의 저전력 버전들을 포함함), RAMBUS DRAM(RDRAM), SRAM(static RAM) 등과 같은 임의의 타입의 메모리일 수 있다. 하나 이상의 메모리 디바이스들은 SIMM(single inline memory module), DIMM(dual inline memory module) 등과 같은 메모리 모듈들을 형성하기 위해서 회로 기판 상에 연결될 수 있다. 대안적으로, 이들 디바이스들은 칩-온-칩 구성으로, 패키지-온-패키지 구성으로 또는 멀티칩 모듈 구성으로 집적 회로(200)로 장착될 수 있다.
주변 장치들(854)은 시스템(850)의 타입에 따라 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 일 실시예에 있어서, 시스템(850)은 모바일 디바이스(예를 들어, PDA(personal digital assistant), 스마트폰 등)일 수 있으며, 주변 장치들(854)은 wifi, 블루투스, 셀룰러, GPS(global positioning system) 등과 같은 다양한 타입의 무선 통신을 위한 디바이스들을 포함할 수 있다. 주변 장치들(854)은 RAM 저장소, 고체 저장소 또는 디스크 저장소를 비롯하여 부가적인 저장소를 더 포함할 수 있다. 주변 장치들(854)은 터치 디스플레이 스크린이나 멀티터치 디스플레이 스크린을 비롯한 디스플레이 스크린, 키보드나 다른 입력 디바이스들, 마이크로폰들, 스피커들 등과 같은 사용자 인터페이스 디바이스들을 포함할 수 있다. 다른 실시예들에 있어서, 시스템(850)은 임의의 타입의 컴퓨팅 시스템(예를 들어, 데스크톱 퍼스널 컴퓨터, 랩톱, 워크스테이션, 넷톱 등)일 수 있다.
특정 실시예들이 전술되었지만, 이들 실시예들은 단일의 실시예만이 특정 특징에 대하여 설명되는 경우에도 본 명세서의 범위를 제한하도록 의도되지는 않는다. 본 명세서에 제공된 특징들의 예들은 다른 방식으로 기술되지 않는 한 제한적이 아니라 예시적인 것으로 의도된다. 전술한 설명은, 본 명세서의 이익을 얻는 당업자에게 명백한 바와 같이 이러한 대안물들, 변형물들 및 등가물들을 커버하도록 의도된다.
본 발명의 범위는, 본 발명에서 다루는 문제점들 모두 또는 임의의 문제점을 완화하든지 간에 본 명세서에 (명시적으로 또는 암시적으로) 개시된 특징들 중 임의의 특징이나 이들의 조합 또는 그 임의의 일반론을 포함한다. 따라서, 본원(또는 본원에 대해 우선권을 청구하는 출원)의 속행 중에 이러한 특징들의 임의의 조합으로 새로운 청구항들이 공식화될 수 있다. 특히, 첨부된 청구항들과 관련하여, 종속 청구항들로부터의 특징들은 독립 청구항들의 특징들과 결합될 수 있으며, 각각의 독립 청구항들로부터의 특징들은 단지 첨부된 청구항들에서 열거된 특정 조합들로가 아니라 임의의 적절한 방식으로 결합될 수 있다.

Claims (17)

  1. 데이터 스트로브 신호에 기초하여 메모리로부터 데이터를 캡처하기 위한 초기 타임 값을 결정하도록 구성된 메모리 인터페이스 회로
    를 포함하며, 상기 메모리 인터페이스 회로는, 상기 데이터를 캡처하기 위한 조정된 타임 값을 결정하도록 구성되며, 상기 메모리 인터페이스 회로는 상기 데이터 스트로브 신호를 샘플링하기 위해 상기 초기 타임 값을 이용함으로써 상기 조정된 타임 값을 결정하도록 구성되는, 장치.
  2. 제1항에 있어서, 상기 메모리 인터페이스 회로는,
    상기 메모리로부터 알려진 값(known value)의 캡처를 수행하고,
    상기 알려진 값이 올바르게 캡처되었는지 여부에 기초하여 상기 초기 타임 값을 결정하도록
    구성되며,
    상기 초기 타임 값은 상기 메모리에 대한 판독 요청의 발행과 상기 메모리에 의해 구동되는 상기 데이터 스트로브 신호 간의 기간을 나타내는 값인, 장치.
  3. 제2항에 있어서, 상기 메모리 인터페이스 회로는,
    상기 알려진 값의 한 번의 판독 동작에 응답하여 복수의 캡처를 수행하고 -각각의 캡처는 각자의 타임 값과 연관됨-,
    각자의 타임 값 중 하나를 결정된 상기 초기 타임 값으로 선택하도록
    구성되는, 장치.
  4. 제2항에 있어서,
    상기 메모리 인터페이스 회로에 연결된 메모리 컨트롤러를 더 포함하고,
    상기 메모리 인터페이스 회로는 상기 메모리 컨트롤러가 상기 판독 요청을 발행하게 하도록 구성되는, 장치.
  5. 제1항에 있어서, 상기 메모리 인터페이스 회로는,
    상기 데이터 스트로브 신호의 단일 사이클 내에서 상기 데이터 스트로브 신호의 복수의 샘플링을 수행하고,
    상기 조정된 타임 값을 이용하여 상기 데이터 스트로브 신호가 데이터를 캡처할 수 있게 허용하는 때를 결정하도록
    구성되는, 장치.
  6. 제5항에 있어서, 상기 메모리 인터페이스 회로는 상기 메모리의 리프레시 동작에 응답하여 상기 복수의 샘플링을 수행하도록 구성되는, 장치.
  7. 제1항에 있어서, 상기 메모리 인터페이스 회로는 상기 데이터를 캡처하기 위한 조정된 타임 값의 결정을 주기적으로 수행하도록 구성되는, 장치.
  8. 제1항에 있어서, 상기 메모리 인터페이스 회로는 판독 동작의 수행 동안에 상기 조정된 타임 값을 결정하도록 구성되는, 장치.
  9. 제1항에 있어서, 상기 메모리 인터페이스 회로는,
    데이터 캡처를 위한 타임 값의 마지막 결정이 행해졌던 때를 표시하는 카운터를 유지하고,
    상기 카운터의 만료 시에 타임 값의 결정을 수행하도록
    구성되는, 장치.
  10. 제1항에 있어서, 상기 메모리 인터페이스 회로는, 상기 메모리 인터페이스 회로와 상기 메모리 사이에 결합된 버스로부터 데이터를 캡처하도록 구성된 버퍼를 포함하고, 상기 메모리 인터페이스 회로는 복수의 샘플링을 수행하도록 상기 버퍼 내의 래치의 출력을 샘플링하도록 구성되는, 장치.
  11. 제1항에 있어서, 상기 메모리 인터페이스 회로는, 버스로부터 데이터를 캡처하도록 구성된 래치를 포함하고, 상기 메모리 인터페이스 회로는 상기 초기 타임 값에 기초하여 상기 데이터 스트로브 신호가 상기 래치에 제공되는 때를 제어하도록 구성되는, 장치.
  12. 메모리 인터페이스 회로가, 메모리에 데이터 값의 판독 요청을 송신하는 단계;
    상기 메모리 인터페이스 회로가, 데이터 스트로브 신호의 단일 사이클 동안 상기 데이터 값의 복수의 샘플링을 수행하는 단계; 및
    상기 복수의 샘플링에 기초하여, 상기 메모리 인터페이스 회로가, 상기 메모리로부터 데이터를 캡처하기 위해 상기 데이터 스트로브 신호가 유효한 때를 결정하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서, 상기 메모리 인터페이스 회로는, 상기 메모리 인터페이스 회로와 상기 메모리 간에 연결된 버스로부터 상기 데이터 값을 캡처하도록 구성된 버퍼를 포함하며, 상기 메모리 인터페이스 회로는 상기 복수의 샘플링을 수행하도록 상기 버퍼 내의 래치의 출력을 샘플링하도록 구성되는, 방법.
  14. 제12항에 있어서, 상기 복수의 샘플링은 상기 메모리의 리프레시 동작에 응답하여 수행되는, 방법.
  15. 제12항에 있어서, 상기 복수의 샘플링은 적어도 4개의 샘플링을 포함하는, 방법.
  16. 메모리가, 메모리 인터페이스 회로로부터 데이터 값의 판독 요청을 수신하는 단계;
    상기 메모리가, 상기 메모리 인터페이스 회로에 상기 데이터 값을 전송하는 단계
    를 포함하며,
    상기 메모리 인터페이스 회로는, 데이터 스트로브 신호의 단일 사이클 동안 상기 데이터 값의 복수의 샘플링을 수행하도록 구성되고, 상기 메모리 인터페이스 회로는, 상기 복수의 샘플링에 기초하여, 상기 데이터 스트로브 신호가 상기 메모리로부터 데이터를 캡처하기 위해 유효한 때를 결정하도록 구성되는, 방법.
  17. 제16항에 있어서, 상기 메모리는 자신의 전용 부분에 적어도 2개의 테스트 값을 저장하도록 구성되며, 상기 메모리 인터페이스 회로는, 전송된 데이터 값의 캡처된 버전이 올바르게 캡처되었는지 여부를 결정하기 위해 상기 전송된 데이터 값의 캡처된 버전을 상기 적어도 2개의 값 중 하나의 값의 복사본과 비교하도록 구성되는, 방법.
KR1020120099221A 2011-09-08 2012-09-07 동적 데이터 스트로브 검출 KR101471251B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/227,974 2011-09-08
US13/227,974 US8897084B2 (en) 2011-09-08 2011-09-08 Dynamic data strobe detection

Publications (2)

Publication Number Publication Date
KR20130028013A true KR20130028013A (ko) 2013-03-18
KR101471251B1 KR101471251B1 (ko) 2014-12-09

Family

ID=47148587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120099221A KR101471251B1 (ko) 2011-09-08 2012-09-07 동적 데이터 스트로브 검출

Country Status (9)

Country Link
US (1) US8897084B2 (ko)
EP (1) EP2568387A1 (ko)
JP (1) JP2013058209A (ko)
KR (1) KR101471251B1 (ko)
CN (1) CN102999454B (ko)
AU (1) AU2012216673B8 (ko)
BR (1) BR102012022563A2 (ko)
TW (1) TWI474178B (ko)
WO (1) WO2013036477A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9431091B2 (en) 2008-06-06 2016-08-30 Uniquify, Inc. Multiple gating modes and half-frequency dynamic calibration for DDR memory controllers
US8949520B2 (en) * 2009-01-22 2015-02-03 Rambus Inc. Maintenance operations in a DRAM
JP2013065372A (ja) * 2011-09-16 2013-04-11 Elpida Memory Inc 半導体装置およびそれを利用した情報処理システム
US9123408B2 (en) * 2013-05-24 2015-09-01 Qualcomm Incorporated Low latency synchronization scheme for mesochronous DDR system
US9166590B1 (en) 2014-01-23 2015-10-20 Altera Corporation Integrated circuits with improved memory interface calibration capabilities
JP6367591B2 (ja) * 2014-03-31 2018-08-01 株式会社メガチップス データストローブエッジ検出回路、データストローブ処理回路及びデータリード回路
KR102211709B1 (ko) 2014-05-19 2021-02-02 삼성전자주식회사 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법
US9209961B1 (en) * 2014-09-29 2015-12-08 Apple Inc. Method and apparatus for delay compensation in data transmission
KR102235521B1 (ko) * 2015-02-13 2021-04-05 삼성전자주식회사 특정 패턴을 갖는 저장 장치 및 그것의 동작 방법
JP6451505B2 (ja) 2015-05-28 2019-01-16 株式会社ソシオネクスト 受信回路、受信回路のタイミング調整方法、半導体装置
US9577854B1 (en) * 2015-08-20 2017-02-21 Micron Technology, Inc. Apparatuses and methods for asymmetric bi-directional signaling incorporating multi-level encoding
US9672882B1 (en) * 2016-03-29 2017-06-06 Apple Inc. Conditional reference voltage calibration of a memory system in data transmisson
US10083736B1 (en) * 2016-06-23 2018-09-25 Apple Inc. Adaptive calibration scheduling for a memory subsystem based on calibrations of delay applied to data strobe and calibration of reference voltage
JP6171066B1 (ja) * 2016-09-01 2017-07-26 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
CN108874686B (zh) * 2017-05-08 2021-08-03 龙芯中科技术股份有限公司 内存参数调节方法、装置及设备
US10204668B1 (en) * 2017-10-09 2019-02-12 Sandisk Technologies Llc On die delay range calibration
US10347347B1 (en) * 2017-12-18 2019-07-09 Intel Corporation Link training mechanism by controlling delay in data path
US10402121B2 (en) * 2017-12-21 2019-09-03 Apple Inc. Systems and methods for reducing performance state change latency
US10566037B1 (en) * 2018-07-27 2020-02-18 Western Digital Technologies, Inc Automated voltage and timing margin measurement for NAND flash interface
KR20200052562A (ko) 2018-11-07 2020-05-15 삼성전자주식회사 스토리지 장치
US11226752B2 (en) 2019-03-05 2022-01-18 Apple Inc. Filtering memory calibration
CN113450867B (zh) * 2020-03-27 2022-04-12 长鑫存储技术有限公司 形成用于存储器测试的数据库的方法及存储器测试方法
CN113568848B (zh) * 2020-07-29 2023-07-11 华为技术有限公司 处理器、信号调整方法及计算机系统
US11862224B2 (en) * 2021-01-22 2024-01-02 Realtek Semiconductor Corp. Method for performing memory calibration, associated system on chip integrated circuit and non-transitory computer-readable medium

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453402B1 (en) 1999-07-13 2002-09-17 Micron Technology, Inc. Method for synchronizing strobe and data signals from a RAM
JP4450586B2 (ja) 2003-09-03 2010-04-14 株式会社ルネサステクノロジ 半導体集積回路
US7259606B2 (en) 2004-01-27 2007-08-21 Nvidia Corporation Data sampling clock edge placement training for high speed GPU-memory interface
CN1930559A (zh) * 2004-01-27 2007-03-14 辉达公司 对高速gpu存储器接口的数据采样时钟边缘布置训练
US7079427B2 (en) 2004-07-02 2006-07-18 Taiwan Semiconductor Manufacturing Company, Ltd. System and method for a high-speed access architecture for semiconductor memory
US7171321B2 (en) * 2004-08-20 2007-01-30 Rambus Inc. Individual data line strobe-offset control in memory systems
US7366862B2 (en) 2004-11-12 2008-04-29 Lsi Logic Corporation Method and apparatus for self-adjusting input delay in DDR-based memory systems
US7215584B2 (en) 2005-07-01 2007-05-08 Lsi Logic Corporation Method and/or apparatus for training DQS strobe gating
US7443741B2 (en) 2005-07-07 2008-10-28 Lsi Corporation DQS strobe centering (data eye training) method
JP5013394B2 (ja) * 2005-09-13 2012-08-29 ルネサスエレクトロニクス株式会社 半導体集積回路装置
US7698589B2 (en) * 2006-03-21 2010-04-13 Mediatek Inc. Memory controller and device with data strobe calibration
US7603246B2 (en) * 2006-03-31 2009-10-13 Nvidia Corporation Data interface calibration
US7685393B2 (en) 2006-06-30 2010-03-23 Mosaid Technologies Incorporated Synchronous memory read data capture
JP2008103013A (ja) 2006-10-18 2008-05-01 Nec Electronics Corp メモリリード制御回路およびその制御方法
US7948812B2 (en) 2006-11-20 2011-05-24 Rambus Inc. Memory systems and methods for dynamically phase adjusting a write strobe and data to account for receive-clock drift
US7983368B2 (en) * 2006-12-11 2011-07-19 International Business Machines Corporation Systems and arrangements for clock and data recovery in communications
WO2008079910A2 (en) * 2006-12-20 2008-07-03 Rambus Inc. Strobe acquisition and tracking
EP2140454A2 (en) * 2007-04-19 2010-01-06 Rambus, Inc. Clock synchronization in a memory system
JP4517312B2 (ja) 2008-07-08 2010-08-04 ソニー株式会社 メモリアクセス制御装置および撮像装置
JPWO2010137330A1 (ja) * 2009-05-27 2012-11-12 パナソニック株式会社 遅延調整装置、遅延調整方法
JP2011003088A (ja) * 2009-06-19 2011-01-06 Panasonic Corp データラッチ調整装置およびそれを用いたメモリアクセスシステム
JP5258687B2 (ja) 2009-07-13 2013-08-07 ルネサスエレクトロニクス株式会社 メモリインタフェース制御回路
JP2011059762A (ja) 2009-09-07 2011-03-24 Ricoh Co Ltd メモリ制御システム及びメモリ制御方法
US8284621B2 (en) 2010-02-15 2012-10-09 International Business Machines Corporation Strobe offset in bidirectional memory strobe configurations
US8300464B2 (en) * 2010-04-13 2012-10-30 Freescale Semiconductor, Inc. Method and circuit for calibrating data capture in a memory controller

Also Published As

Publication number Publication date
AU2012216673A1 (en) 2013-03-28
AU2012216673A8 (en) 2014-07-03
TWI474178B (zh) 2015-02-21
TW201319815A (zh) 2013-05-16
AU2012216673B8 (en) 2014-07-03
EP2568387A1 (en) 2013-03-13
WO2013036477A1 (en) 2013-03-14
CN102999454B (zh) 2016-01-27
US8897084B2 (en) 2014-11-25
JP2013058209A (ja) 2013-03-28
US20130064025A1 (en) 2013-03-14
CN102999454A (zh) 2013-03-27
AU2012216673B2 (en) 2014-02-27
BR102012022563A2 (pt) 2015-06-09
KR101471251B1 (ko) 2014-12-09

Similar Documents

Publication Publication Date Title
KR101471251B1 (ko) 동적 데이터 스트로브 검출
US10658019B2 (en) Circuit, system and method for controlling read latency
JP5819027B2 (ja) メモリアクセス遅延トレーニングのための方法および装置
KR101295994B1 (ko) 주파수 변경 동안의 효율적인 dll 훈련 프로토콜을 위한 메커니즘
US7196948B1 (en) Method and apparatus for data capture on a bi-directional bus
US20100257398A1 (en) Method and system to improve the operations of a registered memory module
US9436387B2 (en) System and method for calibration of a memory interface
US9672882B1 (en) Conditional reference voltage calibration of a memory system in data transmisson
US20160034219A1 (en) System and method of calibration of memory interface during low power operation
US20110225445A1 (en) Memory interface having extended strobe burst for read timing calibration
US8078800B2 (en) Dynamic operating point modification in an integrated circuit
US20050198542A1 (en) Method and apparatus for a variable memory enable deassertion wait time
US8379459B2 (en) Memory system with delay locked loop (DLL) bypass control
US20200285406A1 (en) Filtering memory calibration
US20230112432A1 (en) Dynamic setup and hold times adjustment for memories
US9891853B1 (en) Memory calibration abort
González Trejo Low Energy DRAM Controller for Computer Systems
WO2023064729A1 (en) Dynamic setup and hold times adjustment for memories

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191029

Year of fee payment: 6