KR20140030220A - 메모리 소자를 테스트하기 위한 제어 회로 및 방법 - Google Patents

메모리 소자를 테스트하기 위한 제어 회로 및 방법 Download PDF

Info

Publication number
KR20140030220A
KR20140030220A KR1020137031456A KR20137031456A KR20140030220A KR 20140030220 A KR20140030220 A KR 20140030220A KR 1020137031456 A KR1020137031456 A KR 1020137031456A KR 20137031456 A KR20137031456 A KR 20137031456A KR 20140030220 A KR20140030220 A KR 20140030220A
Authority
KR
South Korea
Prior art keywords
memory
test
training parameters
value
parameter
Prior art date
Application number
KR1020137031456A
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 KR20140030220A publication Critical patent/KR20140030220A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50012Marginal testing, e.g. race, voltage or current testing of timing

Landscapes

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

Abstract

DDR 또는 다른 메모리를 위한 메모리 트레이닝이 보다 신속하게 수행될 수 있는 기술 및 구조가 개시된다. 메모리 컨트로러는 하나 이상의 메모리 파라미터(예를 들어, 타이밍 지연)가 지연 동기 루프(DLL)들과 같은 하나 이상의 메모리 소자를 위해 결정될 수 있도록 구성된다. 트레이닝은 시스템 BIOS에 의한 중재(또는 시스템 BIOS로 결과의 보고) 없이 수행될 수 있다. 그러므로, 트레이닝은 하드웨어에서 전체적으로 수행될 수 있다. 전압 트레이닝 기술이 또한 개시된다.

Description

메모리 소자를 테스트하기 위한 제어 회로 및 방법{CONTROL CIRCUIT AND METHOD FOR TESTING A MEMORY ELEMENT}
본 발명은 일반적으로 컴퓨팅 디바이스를 위한 메모리에 관한 것이다. 특히, 본 발명은 컴퓨팅 디바이스 메모리를 위한 동작 파라미터의 테스트 및/또는 결정에 관한 것이다.
많은 컴퓨터 아키텍처에서, 컴퓨터 프로세서는 버스를 통해 컴퓨터 메모리에 연결된다. 메모리 읽기 또는 쓰기를 정확히 수행하기 위하여, 메모리 제어 신호와 메모리 데이터 신호를 동기화하도록 메모리 데이터 신호를 지연시키는 것이 필요할 수 있다. 제어 신호는 예를 들어 비트스트림을 액세스할 때를 지시하는 신호일 수 있다. 제어 신호 및 데이터 신호가 역위상(out of phase)에 도달할 수 있기 때문에, 2개의 신호를 도로 동기화하도록 지연값을 사용하는 것은 에러를 감소시킬 수 있다(동기화는 비트 스트림이 하이-투-로우(high-to-low) 또는 로우-투-하이(low-to-high)로부터 비트 이행의 중간에서 잘못 샘플링되는 것을 방지할 수 있다). 아울러, 메모리의 다른 부분들은 메모리의 물리적 특성, 메모리에 연결된 데이터 라인(또는 버스), 및/또는 전체적인 동작 환경을 변화시키는 것으로 인하여 다른 형태로 동작할 수 있다.
그러므로, 메모리 액세스는 수개의 지연 동기 루프(delay-locked loop: DLL)들을 통해 제공될 수 있다. 각 DLL은 메모리의 일부에 대한 메모리 액세스를 통제할 수 있으며, 메모리 제어와 메모리 데이터를 동기화하도록 특정 지연 세팅으로 조정할 수 있다. 다양한 DLL 타이밍 지연 파라미터를 위하여 적절한 값을 교정하는 것은 데이터가 컴퓨터 메모리의 모든 부분에 정확히 쓰여지고 그로부터 정확히 읽혀지는 것을 보장할 수 있다. 그러나, 지연 세팅을 결정하는 것은 특히 높은 메모리 동작 빈도에서 시간 소모적일 수 있다.
한 실시예에서, 제어 회로와 파라미터 조정 회로를 포함하는 메모리 컨트롤러가 개시된다. 상기 제어 회로는 하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 수행하도록 구성되고, 상기 파라미터 조정 회로는 테스트의 중간 결과를 수신하고 상기 중간 결과에 기초하여 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하도록 구성된다.
또 다른 실시예에서, 메모리 소자의 복수의 시운전을 수행하는 메모리 컨트롤러를 포함하며, 복수의 시운전 중 초기의 것은 타이밍 파라미터를 위하여 제1값을 사용하고, 복수의 시운전 중 이후의 것들은 타이밍 파라미터를 위하여 다른 값을 각각 사용하며, 각각의 다른 값은 메모리 소자의 복수의 시운전 중 하나 이상의 이전에 수행된 것들의 결과에 기초하여 상기 메모리 컨트롤러에 의해 결정되는 방법이 개시된다. 방법은 복수의 시운전의 결과에 기초하여 타이밍 파라미터를 위한 동작값을 결정하는 메모리 컨트롤러를 또한 포함한다.
다른 실시예에서, 하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 수행하기 위한 수단과, 테스트의 중간 결과를 수신하고 상기 중간 결과에 기초하여 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하기 위한 수단을 포함하는 장치가 개시된다.
또 다른 실시예에서, 컴퓨터 시스템에서 실행 가능한 프로그램에 의해 동작되는 데이터 구조를 포함하고, 상기 프로그램은 데이터 구조에 의해 기입된 회로망(circuitry)을 포함하는 집적회로를 제조하는 공정의 일부를 수행하도록 상기 데이터 구조 상에서 동작하는 컴퓨터 판독 가능 저장 매체로서, 상기 데이터 구조에 의해 기입된 회로망은 하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 수행하도록 구성된 제어 회로와, 테스트의 중간 결과를 수신하고 상기 중간 결과에 기초하여 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하도록 구성된 파라미터 조정 회로를 포함하는, 컴퓨터 판독 가능 저장 매체가 개시된다.
본 발명의 교시뿐만 아니라 첨부된 청구항들은 이러한 요약에서 전술한 특징들과 실시예들에 의해 명백히 제한되지 않는다.
도 1a는 입력/출력("I/O") 회로를 통해 컴퓨터 메모리 소자에 연결되는 메모리 컨트롤러를 도시하는 블록도;
도 1b는 I/O 회로의 한 실시예를 도시하는 블록도;
도 2는 파라미터 조정 회로와 제어 회로의 실시예를 도시하는 블록도;
도 3은 메모리 파라미터 동작값을 결정하기 위한 방법의 흐름도;
도 4는 예시적인 컴퓨터 시스템의 한 실시예를 도시하는 블록도.
본 명세서는 "한 실시예" 또는 "실시예"에 대한 기준을 포함한다. 구문 "한 실시예에서" 또는 "실시예에서"의 출연은 동일한 실시예를 반드시 지칭하는 것은 아니다. 특정 특징부, 구조, 또는 특성들은 본 명세서와 일치하는 임의의 적절한 방식으로 조합될 수 있다.
전문용어. 다음의 문단은 본 명세서(첨부된 청구항들을 포함함)에서 보여지는 용어에 대한 정의 및/또는 문맥을 제공한다:
"포함하는". 이 용어는 개방형이다. 첨부된 청구항에서 사용되는 바와 같이, 이 용어는 추가의 구조 또는 단계를 배제하지 않는다. "...하나 이상의 유닛을 포함하는 장치"를 지칭하는 청구항을 논한다: 이러한 청구항은 추가의 구성요소들(예를 들어, 네트워크 인터페이스 유닛, 그래픽 회로 등)을 포함하는 것으로부터 상기 장치를 배제하지 않는다.
"하도록 구성되는". 다양한 유닛, 회로, 또는 다른 구성요소는 과제 또는 과제들을 수행"하도록 구성되는" 것으로서 기술되거나 또는 청구될 수 있다. 이러한 문맥에서, "하도록 구성되는"은 동작 동안 과제 또는 과제들을 수행하는 구조(예를 들어, 회로망)를 유닛/회로/구성요소가 포함하는 것을 나타내는 것에 의해, 구조를 함축하도록 사용된다. 그리하여, 유닛/회로/구성요소는 명시된 유닛/회로/구성요소가 현재 사용할 준비가 되어 있지 않을(예를 들어, 작동 중이 아닌)때조차도 상기 과제를 수행하도록 구성되는 것으로 말할 수 있다. "하도록 구성되는" 표현과 함께 사용되는 유닛/회로/구성요소는 하드웨어, 예를 들어 회로, 동작을 실시하도록 실행 가능한 메모리 저장 프로그램 명령 등을 포함한다. 유닛/회로/구성요소가 하나 이상의 과제를 수행"하도록 구성되는"을 인용하는 것은 그 유닛/회로/구성요소에 대하여 35 U.S.C.§ 112, 제6절을 명백히 적용하지 않도록 의도된다. 추가적으로, "하도록 구성되는"은 논쟁중인 과제(들)를 수행할 수 있는 방식으로 동작하는 소프트웨어 및/또는 펌웨어(예를 들어, FPGA 또는 범용 프로세서 실행 소프트웨어)에 의해 조종되는 일반적인 구조(예를 들어, 일반적인 회로)를 포함할 수 있다. "하도록 구성되는"은 또한 하나 이상의 과제를 실행 또는 수행하도록 적응된 디바이스(예를 들어, 집적회로)를 제조하는 제조 공정(예를 들어, 반도체 제조 설비)를 적응시키는 것을 또한 포함할 수 있다.
"제1", "제2" 등. 본 명세서에서 사용되는 바와 같은, 이러한 용어는 이것들이 선행하고 임의의 형태의 순서(예를 들어, 공간적, 시간적, 지역적 등)를 나타내지 않는 명사를 위한 라벨로서 사용된다. 예를 들어, "제1" 메모리 파라미터값 및 "제2" 메모리 파라미터값은 임의의 2개의 값을 지칭하도록 사용될 수 있으며, 하나의 값이 다른 값보다 높거나, 또는 하나의 값이 다른 것에 앞서 결정되었다는 것을 나타내지 않는다. 즉, "제1" 및 "제2"는 기술어이다.
"기초한". 본 명세서에서 사용되는 바와 같은, 이러한 용어는 결정에 영항을 주는 하나 이상의 인자를 기술하도록 사용된다. 이 용어는 결정에 영향을 줄 수 있는 추가의 인자를 배제하지 않는다. 즉, 결정은 단독으로 이러한 인자에 기초하거나 또는 적어도 부분적으로 이러한 인자에 기초할 수 있다. 구문 "B를 기초하여 A를 결정한다"를 고려한다. B는 A의 결정에 영향을 주는 인자일 수 있지만, 이러한 구문은 또한 C에 기초하는 것으로부터 A의 결정을 배제하지 않는다. 다른 예에서, A는 단독으로 B에 기초하여 결정될 수 있다.
"프로세서". 이 용어는 그 일반성을 가지며, 당 기술분야에서의 의미를 수용하고, 명령을 실행할 수 있는 디바이스를 포함한다. 프로세서는 제한 없이 중앙 제어 유닛(CPU), 코프로세서, 연산 처리 장치, 그래픽 처리 장치, 디지털 신호 프로세서(DSP) 등을 지칭할 수 있다. 프로세서는 단일 또는 다중 파이프라인을 구비한 슈퍼스칼라 프로세서일 수 있다. 프로세서는 각각 명령을 실행하도록 구성된 단일 또는 다중 코어를 포함할 수 있다.
"BIOS" 또는 "BIOS 디바이스". 이 용어는 그 일반성을 가지며, 당 기술분야에서의 의미를 수용하고, 하드웨어 시스템 세팅, 전력 세팅, 부트 디바이스 세팅의 순서 등을 변경하도록 컴퓨터 시스템의 운영 시스템과 관계 없이 컴퓨터 시스템의 프로세서에 의해 실행 가능한 컴퓨터 명령이 저장되는 메모리 또는 저장 디바이스(EPROM 또는 EEPROM 등)를 포함한다.
"메모리 트레이닝 파라미터" 또는 "메모리 파라미터". 본 명세서에서 사용되는 바와 같은, 이러한 용어는 메모리 읽기 및/또는 메모리 쓰기의 동작에 영향을 주는 임의의 파라미터를 지칭한다.
***
컴퓨터 시스템은 메모리 버스와 접속하는 하나 이상의 메모리 컨트롤러 채널(memory controller channel: MCC)들에 연결되는 메모리 컨트롤러를 포함할 수 있다(예를 들어, x86 프로세서는 DRAM 컨트롤러 채널에 연결된 그 노스브릿지에서 메모리 컨트롤러를 가질 수 있다). MCC은 컨트롤러로부터 쓰고 메모리 작업으로부터 정확히 읽는 것을 보장하도록 분수(fraction) 방식으로 송신기 및 수신기를 지연시키는 회로를 포함할 수 있다. 일부 지연값은 다른 것보다 양호하게 작업할 수 있으며, 메모리가 보다 높은 빈도로 동작하도록 허용할 수 있다. 그러므로, 적절한 지연값을 결정하는 프로세스는 시스템 성취 피크 성능을 도울 수 있다. 이러한 프로세스가 달성될 수 있는 하나의 방식은 메모리 컨트롤러로부터 데이터를 읽고 메모리 컨트롤러에 테이터를 쓰며 PCI 액세스를 통해(예를 들어, 사우스브릿지를 통하여) 송신기 및 수신기에서 지연을 동적으로 조정하는 BIOS를 가지는 것이다. 이러한 것은 "메모리 트레이닝"으로 지칭되는 동적 프로세스의 예이다.
메모리 트레이닝 동안, 메모리 컨트롤러는 메모리에 데이터를 쓰고, 그런 다음 다시 메모리를 읽고, 프로세서가 정확한 지연 세팅을 사용하여 데이터를 쓰거나 읽는지 여부를 결정하도록 이전에 쓰여진 데이터와 이를 비교할 수 있다. 불합격한 비교 후에, 새로운 지연 세팅은 채널 컨트롤러를 위해 사용될 수 있고, 프로세스는 비교가 정확할 때까지 반복될 수 있다. 그러나, 많은 양의 메모리가 메모리 컨트롤러에 부착될 때, 특히 복수의 PCI 액세스가 BIOS에 의해 수행될 때(액세스가 또 다른, 다른 지연 세팅을 테스트하도록 넘어가기 전에 특정 지연 세팅에 대해 완료했다는 것을 결정하기 위해 완성 비트(completion bit)를 자르도록 BIOS가 요구될 수 있음으로써), 트레이닝 시간은 상당히 증가될 수 있다. 추가의 정보를 위하여, 그 전체 내용을 참조하는 것에 의해 본 명세서에 통합되는 미국 특허공개 제2009/0244997호(미국 특허출원 제12/059,653호에 대응) 및 미국 특허공개 제2010/0325372호(미국 특허출원 제12/486,488호에 대응)를 참조한다. 본 발명은 메모리 트레이닝이 신속하게 수행되는 것을 가능하게 할 수 있는 구조 및 교시를 포함한다. 한 실시예에서, 메모리 트레이닝은 BIOS로부터 중재 없이 수행된다.
이제 도 1a를 참조하면, 메모리 컨트롤러(105)가 입력/출력("I/O") 회로(150)를 통해 컴퓨터 메모리 소자(180)에 연결된 블록도(100)가 도시된다.
메모리 소자(180)는 시스템(400)(도 4에 대하여 다음에 기술됨)과 같은 컴퓨터 시스템 내에 있을 수 있는 하나 이상의 메모리 기억 소자를 포함한다. 한 실시예에서, 메모리 소자(180)는 동적 랜덤 액세스 메모리(DRAM)의 하나 이상의 모듈이지만, 다른 실시예에서 데이터를 저장하도록 구성된 임의의 다른 형태의 메모리일 수 있다. 한 실시예에서, 메모리 소자(180)는 DDR2 또는 DDR3 DRAM이다. 따라서, 메모리 소자(180)는 복수의 그룹의 기억 바이트(storage byte)를 포함한다. 메모리 소자(180)(및 이 기억 바이트의 그룹)에 대한 액세스는 I/O 회로(150)를 통해 제공된다.
I/O 회로(150)의 실시예는 도 1b의 블록도에 도시된다. 도 1b에서, I/O 회로(150B)는 제어 회로(120) 및 메모리 소자(180)에 결합하도록 구성되고, 전송 버퍼(154), 송신기(156), 수신기(158), 및 수신 버퍼(160)를 포함한다. 일부 실시예에서, I/O 회로(150)는 버퍼(154), 송신기(156), 수신기(158) 및 수신 버퍼(160) 중 일부 또는 전부의 배수를 포함한다. 일부 실시예에서, 송신기(156)와 수신기(158)는 미국 특허공개 제2009/0244997호에 기술된 바와 같은 단일 트랜시버 구조 내에 결합된다. 따라서, I/O 회로(150)의 많은 구성이 가능하다.
메모리 소자(180)에 쓰여지는 정보는 송신기(156)를 통해 보내지기 전에 전송 버퍼(154)에 저장될 수 있다. 송신기(156)는 하나 이상의 지연 동기 루프를 포함할 수 있으며(또는 이에 연결될 수 있으며), 각각의 지연 동기 루프는 메모리 소자(180)의 하나 이상의 부분(기억 바이트의 그룹)에 대한 쓰기를 동기화하도록 사용될 수 있다. 송신기(156) 내에 있는 각 DLL(또는 복수의 송신기(156) 전체에 걸쳐 있는 각 DLL)은 다른 타이밍 파라미터값에 의해 통제될 수 있다. 예를 들어, 제1 DLL은 제1 타이밍값에 따라서 메모리 데이터 스트로브 신호(DQS)와 메모리 데이터 신호(DQ)를 맞출 수 있는 한편, 또 다른 DLL은 제2, 다른 타이밍값을 사용하여 DQS와 DQ를 맞출 수 있다. 마찬가지로, 수신기(들)(158)은 하나 이상의 타이밍 지연값에 따라서 DQS와 DQ를 또한 맞추는 하나 이상의 DLL을 포함할 수 있다. 일부 실시예에서, 송신기(156) 및 수신기(158)에 있는 DLL은 공유될 수 있다. 보다 일반적으로, 송신기(들)(156), 수신기(들)(158), 및/또는 이에 포함된(또는 송신기(156)와 수신기(158)가 연결하도록 구성되는) DLL은 '997 공개 및/또는 '372 공개에 기술된 송신기, 수신기, 트랜시버, 및 DLL의 특징의 일부 또는 전부를 가질 수 있다.
도 1a를 다시 참조하여, 도시된 바와 같이, 메모리 컨트롤러(105)는 파라미터 조정 회로(110)와 제어 회로(120)를 포함한다. 파라미터 조정 회로(110)는 도 1a의 실시예에 있는 하나 이상의 메모리 소자의 테스트를 개시하도록 구성된다. 한 실시예에서, 메모리 테스트를 시작하라는 지시는 BIOS 또는 프로세서와 같은 다른 구성요소로부터 파라미터 조정 회로(110)에 의해 수신된다. 다른 실시예에서, 파라미터 조정 회로(110)는 메모리 테스트를 자동으로(예를 들어, 회로(110)를 포함하는 컴퓨터 시스템이 파워 온되는 것에 응답하여) 메모리 테스트를 개시하도록 구성될 수 있다. 여전히 추가의 실시예에서, 파라미터 조정 회로(110)는 환경 조건에서의 검출된 변화(예를 들어, 상승 또는 강하된 온도; 상승 또는 강하된 전압), 소프트웨어(예를 들어, 운영 시스템 또는 BIOS)로부터 명령, 또는 고정 길이 및/또는 가변 길이 타이밍의 임의의 조합을 사용할 수 있는 하드웨어 또는 소프트웨어 기반 타이머와 같은 트리거 이벤트에 응답하여 하나 이상의 메모리 소자의 테스트를 개시(또는 재개시)하도록 구성될 수 있다. 일부 실시예에서, 파라미터 조정 회로(110) 대신에 제어 회로(120)가 메모리 테스트를 개시하도록 구성된다.
일반적으로, 파라미터 조정 회로(110)와 제어 회로(120)에 대해 본 명세서에 기술된 구조 및 기능 중 일부 또는 전부는 우선적으로 다른 회로에 위치될 수 있다. 그러므로, 일부 실시예에서, 파라미터 조정 회로(110)와 제어 회로(120)의 전부 또는 일부(및 기능적으로 이에 포함된)는 메모리 컨트롤러(105)의 외부에 위치될 수 있다. 일부 실시예에서, 파라미터 조정 회로(110)의 전부 또는 일부(및 기능적으로 이에 포함된)는 제어 회로(120) 내에 위치될 수 있다(그 역도 또한 같다). 또한, I/O 회로(150)의 전부 또는 일부(및 기능적으로 이에 포함된)는 메모리 컨트롤러(105), 메모리 소자(180), 및/또는 본 명세서에서 명확히 기술되지 않은 다른 구조 내에 위치될 수 있다.
도 1a의 실시예에서, 제어 회로(120)는 하나 이상의 메모리 트레이닝 파라미터를 사용하여 하나 이상의 메모리 소자의 테스트를 수행하도록 구성된다. 한 실시예에서, 하나 이상의 메모리 트레이닝 파라미터는 하나 이상의 타이밍 파라미터를 포함한다. 이러한 타이밍 파라미터는 메모리 소자(180)로부터 읽기 및/또는 메모리 소자에 쓰기를 위해 사용되는 하나 이상의 DLL의 행위를 통제하도록 사용될 수 있다. 예를 들어, 주어진 DLL은 대응하는 DQS 신호와 DQ 신호를 보다 잘 정렬하기 위하여 클럭 사이클의 특정 분수(또는 배수)만큼 DQ 신호를 지연시킬 수 있다(대안적으로, 일부 실시예에서, DQS 신호는 DQ 신호에 대하여 지연될 수 있다). 또 다른 실시예에서, 하나 이상의 메모리 소자의 테스트를 위해 사용된 하나 이상의 메모리 트레이닝 파라미터는 메모리 채널의 동작 전압(또는 공칭 피크 전압)과 같은 하나 이상의 전압 파라미터를 포함한다.
지금 도 2를 참조하여, 파라미터 조정 회로(210) 및 제어 회로(260)의 블록도가 도시된다. 이러한 회로들은 전술한 파라미터 조정 회로(110) 및 제어 회로(120)의 임의의 특징, 구조, 또는 기능성을 가질 수 있으며, 그 역도 또한 같다. 도시된 바와 같이, 파라미터 회로(210)는 파라미터 결정 로직(220), 결과 기억장치(230) 및 인터페이스 로직(240)을 포함하는 반면에, 제어 회로(260)는 테스트 데이터 발생기(262), 비교기(264) 및 인터페이스 로직(266)을 포함한다. 회로(110 및 120)에 대하여 전술한 바와 같이, 회로(210)의 전부 또는 일부(및 기능적으로 이에 포함된)는 회로(260)에 위치될 수 있으며, 그 역도 또한 같다. 한 실시예에서, 공통 회로는 회로(210 및 260)에 대하여 기술된 모든 구조 및 기능성을 포함한다.
파라미터 조정 회로(210)는 하나 이상의 메모리 트레이닝 파라미터를 위한 하나 이상의 동작값을 결정하도록 구성된다. 본 명세서에서 사용되는 바와 같은, 용어 "동작값"은 정상적인 컴퓨팅 동작의 부분으로서 사용되는 값(테스트 또는 교정의 목적을 위하여 배타적으로 사용되는 값에 대비되는 것으로서)을 지칭한다. 물론, 동작값과 테스트값은 일부 수치값을 가지거나 또는 동일한 수치 범위에 놓일 수 있다. 도 2의 실시예에서, 파라미터 결정 로직(220)은 결과 기억장치(230)에 저장된 중간 결과에 기초하여 동작값을 결정하도록 구성된다. 한 실시예에서, 메모리 소자의 테스트의 복수의 중간값은 하나 이상의 파라미터 동작값을 결정하도록 파라미터 조정 회로(210)에 의해 사용된다. 메모리 테스트의 중간 결과는 한 실시예에서 인터페이스 로직(240)을 통해 제어 회로(260)에 의해 기억장치(230)로 전달된다. 도 2의 실시예에서, 인터페이스 로직(240)은 제어 회로(260)와 통신하기 위한 부분(242)뿐만 아니라 BIOS와 통신하기 위한 부분(244)(예를 들어, 테스트를 시작하라는 지시를 수신함)을 포함한다.
데이터 발생기(262)는 도 2의 실시예에서 하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 위한 테스트 데이터를 발생시키도록 구성된다. 한 실시예에서, 발생기(262)는 패턴 발생기이며, 하나 이상의 선구성된 패턴 또는 시퀀스에 기초하여 많은 양의 데이터(예를 들어, 수백 메가바이트 이상)를 발생시킬 수 있다. 일부 실시예에서, 모든 발생된 테스트 데이터, 또는 그 일부는 랜덤하게 또는 의사 랜덤하게 발생될 수 있다. 일부 데이터 패턴은 어려운 에지 케이스(edge case)(하나의 1이 이어지고, 다시 복수의 연속 제로가 이어지는 제로의 특정 연속 번호는 "1" 비트를 검출하는데 더욱 어렵게 할 수 있고, 그 역도 또한 같다)를 테스트하도록 설계된 부분을 포함한다.
도 2의 실시예에서, 인터페이스 로직(266)은 하나 이상의 메모리 트레이닝 파라미터를 위한 하나 이상의 전류(테스트)값을 사용하여 메모리 소자(180)(예를 들어, I/O 회로(150)를 통해)에 데이터를 쓰도록 사용된다. 테스트 데이터가 메모리 소자(180)에 써진 후에, 데이터는 메모리로부터 다시 읽혀진다(예를 들어, 수신기(158) 및 수신 버퍼(160)를 통해). 일부 실시예에서, 테스트 데이터를 읽는 프로세스는 테스트 데이터를 쓰는 프로세스와 중첩할 수 있다(즉, 이 실시예에서 읽기가 시작하기 전에 모든 테스트 데이터가 메모리 소자(180)에 써질 필요는 없다). 비교기(264)는 메모리로부터 읽혀진 테스트 데이터(인커밍 데이터)가 메모리에 써졌던 테스트 데이터(아웃고잉 데이터)와 동일한지 여부를 결정하고 그로부터 중간 데이터를 발생시키도록 회로 로직을 포함한다. 이러한 중간 결과는 그런 다음 결과 기억장치(230)에 보고되고 이에 의해 저장될 수 있다. 메모리에 테스트 데이터를 스고 이를 다시 읽는 프로세스는 "읽기/쓰기 시운전(read/write trial)"으로서 본 명세서에 지칭된다. 일부 실시예에서, 읽기/쓰기 시운전은 하나 이상의 중간 결과를 발생시키는 것과 같은 다른 추가의 동작을 포함한다.
비교기(264)에 의해 발생된 중간 결과 데이터의 형태 및 풍부성은 구현에 의해 변할 수 있다. 일부 실시예에서, 비교기(264)는 인커밍 테스트 데이터가 주어진 메모리 트레이닝 파라미터(들)를 위한 아웃고잉 테스트 데이터와 완전히 동일하였는지에 대하여 합격/불합격 지시를 간단하게 발생시키도록 구성된다. 다른 실시예에서, 비교기(264)는 데이터의 임계량 또는 백분율이 정확하면(예를 들어, 1GB의 테스트 데이터당 단지 1 비트 에러 또는 바이트 에러) 합격 결과를 발생시킬 수 있다. 여전히 추가의 실시예에서, 비교기(264)는 읽기/쓰기 시운전 동안 일어난 비트 에러 또는 바이트 에러의 수, 및/또는 테스트 데이터 패턴 내에서 에러의 위치를 지시하는(예를 들어, 특정 케이스들이 불합격을 유발했을 수 있다는 것을 지시하는) 정량적 데이터를 발생시킬 수 있다.
하나 이상의 메모리 트레이닝 파라미터에 대응하는 하나 이상의 중간 결과에 기초하여, 파라미터 조정 회로(210)는 메모리 트레이닝 파라미터 중 적어도 하나를 조정하도록 구성된다. 예를 들어, 한 실시예에서, 파라미터 조정 회로(210)는 주어진 DLL을 위하여 주어진 타이밍 파라미터값(그 DLL을 위한 DQ 및 DQS 사이의 제로 옵셋 지연값 등)을 사용하여 메모리 소자(180)의 테스트를 시작하도록 구성된다. 주어진 값을 사용하여 초기 읽기/쓰기 시운전의 완료시에, 파라미터 조정 회로는 고정량만큼 주어진 값을 증가시킬 수 있다(예를 들어, 클럭 사이클의 1/32만큼 주어진 DLL을 위한 DQ 및 DQS 사이의 옵셋을 증분시킨다). 이후의 읽기/쓰기 시운전은 그런 다음 메모리 트레이닝 파라미터를 위한 신규값을 사용하여 수행될 수 있으며, 그래서, 추가의 중간 결과가 발생될 수 있다(그 후, DLL을 위한 메모리 트레이닝 파라미터값에 대한 조정이 만들어질 수 있다). 다양한 실시예에서, 파라미터 조정 회로(210)를 포함하는 메모리 컨트롤러는 다중의 DLL을 동시에 병렬로 트레이닝할 수 있다. 병렬 트레이닝은 일부 실시예에서 다중의 메모리 컨트롤러 채널을 통해 일어날 수 있다. 아울러, 다중 메모리 컨트롤러를 구비한 시스템은 마찬가지로 동시에 또는 병렬로 이러한 컨트롤러를 또한 트레이닝할 수 있다.
파라미터 조정 회로(210)는 또한 하나 이상의 메모리 트레이닝 파라미터를 위한 동작값을 결정하도록 구성된다. 따라서, 한 실시예에서, 파라미터 결정 로직(220)은 동작값을 계산하기 위해 복수의 읽기/쓰기 시운전의 중간 결과를 바탕으로 계산을 수행하도록 구성된다. 이러한 계산은 주어진 DLL을 위한 지연값의 "좌측 에지" 및/또는 "우측 에지"의 결정을 포함할 수 있다. 예를 들어, 중간 결과가 다음의 타이밍 파라미터값 및 다른 읽기/쓰기 시운전을 위한 합격/불합격 지시로 이루어지면:
Figure pct00001
1/8의 "좌측 에지"(제1 성공값) 및 4/8의 "우측 에지"(마지막 성공값)가 결정될 수 있다. 이러한 정보로부터, 5/16의 동작값이 좌측 에지 및 우측 에지값들을 평균하는 것에 의해 계산될 수 있었다. 동작값을 결정하는 다른 방법은, 비트 또는 바이트 에러의 수와 같은 정량적 데이터가 각 시운전을 위해 이용할 수 있으면, 가중 평균과 같이 또한 수행될 수 있다. 동작값은 또한 반복 테스트를 사용하여 결정될 수 있었으며, 예를 들어, 1/8의 좌측 에지 및 4/8의 우측 에지 내에서 추가의 읽기/쓰기 시운전이 구동될 수 있으며, 그 후에, 동작값은 추가적으로 발생된 데이터를 사용하여 계산되게 된다. 하나 이상의 동작값이 결정된 후에, 이것들은 전용 레지스터(예를 들어, 파라미터 조정 회로(210) 내에 있는 또는 DLL 자체 내에 있는 레지스터 내에서), 또는 본 발명의 통상의 지식을 가진 자에게 예측되는 임의의 다른 적절한 위치에서 결과 기억장치(230)에 저장될 수 있다. 한 실시예에서, 파라미터 동작값은 BIOS에 저장될 수 있다.
전압 메모리 파라미터는 또한 파라미터 조정 회로(210)와 제어 회로(260)에 의해 트레이닝될 수 있다. 그러므로, 한 실시예에서, 제어 회로(260)는 전압 파라미터와 타이밍 파라미터 모두를 변화시키는 것에 의해 메모리 소자(180)의 테스트를 수행하도록 구성된다. 이러한 테스트는 예를 들어 하나의 전압 수준에서 주어진 DLL을 위한 타이밍 파라미터의 동작값을 결정하고, 그런 다음 전압 수준을 상승시키거나 강하시키고 다른 전압에서 타이밍 파라미터를 위한 하나 이상의 다른 동작값을 결정하도록 추가의 읽기/쓰기 시운전을 수행하는 것에 의해 주어진 DLL을 위해 수행될 수 있다. 예를 들어, 이러한 테스트의 결과는 다음의 형태를 취할 수 있다:
Figure pct00002
다른 전압 수준을 위한 다양한 타이밍 세팅을 결정한 후에, 메모리 채널 컨트롤러는 부응해서 적절한 타이밍 파라미터 동작값을 선택할 수 있다(예를 들어, 다른 메모리 채널의 전압값을 위한 다른 타이밍값을 사용하거나 또는 시스템 동작 동안 전압 수준 변동에 응답하여 다른 타이밍값을 선택하여). 그러므로, 한 실시예에서, 각각의 복수의 전압 파라미터값을 위하여, 전압 파라미터값을 사용하는 메모리 소자에서 각각의 복수의 읽기/쓰기 시운전은 그 전압 수준을 위한 타이밍 파라미터 동작값을 결정하도록 위에서 서술된 방법에 따라서 수행될 수 있다.
도 3을 지금 참조하여, 파라미터 동작값을 결정하기 위한 방법(300)의 흐름도가 도시된다. 다양한 실시예에서, 방법(300)의 단계는 파라미터 조정 회로(210)와 제어 회로(260)에 의해 전체적으로 또는 부분적으로 수행된다.
단계(310)에서, 메모리 소자에서 복수의 읽기/쓰기 시운전의 수행을 시작하라는 지시가 수신된다. 전술한 바와 같이, 이러한 지시는 시스템 파워 온, 변화된 환경 조건(전압, 온도 등), 또는 하드웨어 또는 소프트웨어 타이머에 응답하여 자동으로 발생될 수 있다. 이러한 지시는 일부 실시예에서 BIOS 디바이스로부터 수신될 수 있다. 테스트를 시작하라는 지시는 테스트될 특정 어드레스 범위와 같은 추가 정보를 또한 포함할 수 있다.
단계(320)에서, 초기 읽기/쓰기 시운전은 메모리 트레이닝 파라미터를 위한 제1값을 사용하여 수행된다. 다양한 실시예에서, 이러한 초기값은 사전 설정되거나, 동적으로 결정되거나, 또는 테스트를 시작하라는 지시에서 명시될 수 있다. 예를 들어, 초기 읽기/쓰기 시운전은 특정 DLL을 위하여 제로의 DQ/DQS 타이밍 지연값을 사용할 수 있다. 데이터는 그런 다음 그 타이밍 지연값이 정확한 결과를 만들었는지 여부를 결정하도록 메모리에 쓰여지고 메모리로부터 읽혀지게 된다.
단계(330)에서, 초기 시운전의 결과에 기초하여, 메모리 트레이닝 파라미터를 위한 다른 값이 결정된다. 일부 실시예에서, 이러한 단계는 고정량(예를 들어, 클럭 사이클의 일부 분수)만큼 DQ/DQS 타이밍 지연값을 증분시키는 단계를 포함할 수 있다. 다양한 실시예에서, 타이밍 지연값은 동적으로 결정된 양(예를 들어, 이전의 시운전으로부터 비트 또는 바이트 에러의 수에 관한 정량적 데이터에 응답하여)만큼 증분될 수 있다. 본 명세서에서 다양한 예들이 테스트 동안 메모리 트레이닝 파라미터값을 "증분하는"을 지칭하지만, 값을 변경하도록, 감축(감산), 곱셈, 또는 나눗셈과 같은 다른 수학적 연산이 동등하게 가능하다는 것을 유념하여야 한다. 그러므로, 다른 파라미터값은 하나 이상의 이전의 결과에 기초하여 결정될 수 있다.
단계(340)에서, 추가적인 읽기/쓰기 시운전은 단계(330)로부터 새롭게 결정된 파라미터값을 사용하여 수행된다. 단계(340)는 단계(320)에 대하여 전술한 소자들의 일부 또는 전부를 포함할 수 있다. 단계(350)에서, 당해 특정 메모리 파라미터(들)를 위한 테스트가 연속하는지에 대한 결정이 만들어진다. 예를 들어, 좌측 에지가 이미 검출되었으면, 테스트는 우측 에지가 또한 검출될 때 중단될 수 있다(예를 들어, 하나 이상의 이전에 검출된 성공 다음에 하나 이상의 불합격의 검출 후에 테스트를 중단하는 것이 이어진다). 대안적으로, 일부 실시예에서, 테스트는 가능한 값의 전체 범위가 평가될 때까지 연속될 수 있다. 특정 파라미터(들)를 위한 테스트를 연속하는 것이 결정되면, 방법은 단계(330)로 되돌아가, 상기에서 서술된 바와 같이 진행한다. 그러나, 추가적인 테스트가 일어나지 않는 것이 결정되면, 단계(360)에서, 특정 메모리 파라미터를 위한 동작값이 결정된다. 이러한 결정은 위에서 서술된 바와 같이(예를 들어, 좌측 에지/우측 에지 평균화, 가중 평균화 등) 또는 본 발명의 통상의 지식을 가진 자에게 예측되는 바와 같이 임의의 방식으로 만들어질 수 있다.
일부 실시예에서, 단계(320) 내지 (360)는 결과를 BIOS 디바이스에 보고함이 없이 수행된다. 따라서, 이러한 실시예에서, 동작 파라미터값은 시스템(400)과 같은 컴퓨터 시스템의 BIOS에 의한 임의의 중재 또는 의사 결정(decision-making) 없이 결정될 수 있다. 이러한 것은 메모리 파라미터 트레이닝 프로세스를 크게 가속화할 수 있으며, 많은 컴퓨터 시스템에서와 같이, 하나 이상의 메모리 컨트롤러는 노스브릿지의 일부일(또는 이에 연결되고) 수 있는 한편, BIOS는 상당히 느린 사우스브릿지에 부착된다. 이전에 기술된 바와 같이, 일부 실시예에서, BIOS는 파라미터 조정 회로(210) 또는 제어 회로(260) 중 하나에 지시를 보내는 것에 의해 메모리 트레이닝을 개시할 수 있지만, 트레이닝이 완료될 때까지 반드시 어떠한 추가 행위도 취하지 않는다. 아울러, BIOS가 초기 시동 위상 후에 메모리 트레이닝에서 아무런 역할을 취하지 않는 실시예에서, BIOS는 컴퓨터 시스템을 부팅하는데 필요한 다른 동작을 수행하는데 자유로울 수 있다(그러므로, 전체적인 부팅 시간을 한층 가속화한다).
상기로부터 알 수 있는 바와 같이, 한 실시예에서, 제어 회로(260)는 하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 수행하기 위한 수단이고, 파라미터 조정 회로(210)는 테스트의 중간 결과를 수신하고 중간결과에 기초하여 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하기 위한 수단이다.
예시적인 컴퓨터 시스템
도 4를 지금 참조하여, 메모리 컨트롤러(105)를 포함할 수 있는 예시적인 컴퓨터 시스템(400)이 도시된다. 컴퓨터 시스템(400)은 인터커넥트(460)(예를 들어, 시스템 버스)를 통해 시스템 메모리(420) 및 I/O 인터페이스(들)(440)에 결합되는 프로세서 서브시스템(480)을 포함한다. I/O 인터페이스(들)(440)는 하나 이상의 I/O 디바이스(450)에 결합된다. 컴퓨터 시스템(400)은 서버 시스템, 퍼스널 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 메인프레임 컴퓨터 시스템, 휴대용 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 이동 전화, 무선 호출기, 또는 만능 휴대형 단말기(PDA)와 같은 소비자 디바이스를 포함하지만 이에 한정되지 않는 임의의 다양한 형태의 디바이스일 수 있다. 컴퓨터 시스템(400)은 또한 저장 디바이스, 스위치, 모뎀, 라우터 등과 같은 임의의 형태의 네트워크화된 주변 디바이스일 수 있다. 단일 컴퓨터 시스템(400)이 편의를 위해 도시되었지만, 시스템(400)은 또한 함께 동작하는 2개 이상의 컴퓨터 시스템으로서 실시될 수 있다.
프로세서 서브시스템(480)은 하나 이상의 프로세서 또는 처리 유닛을 포함할 수 있다. 예를 들어, 프로세서 서브시스템(480)은 하나 이상의 리소스 제어 처리 소자(420)에 결합되는 하나 이상의 처리 유닛(각각은 다중의 처리 소자 또는 코어를 가질 수 있다)을 포함할 수 있다. 컴퓨터 시스템(400)의 다양한 실시예에서, 프로세서 서브시스템(480)의 복수의 예는 인터커넥트(460)에 결합될 수 있다. 다양한 실시예에서, 프로세서 서브시스템(480)(또는 (480) 내에 있는 각 프로세서 유닛 또는 처리 소자)은 캐시 또는 다른 형태의 온-보드 메모리를 포함할 수 있다. 한 실시예에서, 프로세서 서브시스템(480)은 전술한 메모리 컨트롤러(105)를 포함할 수 있다.
시스템 메모리(420)는 프로세서 서브시스템(480)에 의해 사용 가능하고, 다양한 실시예에서 소자(180)와 같은 하나 이상의 메모리 소자를 포함한다. 시스템 메모리(420)는 하드 디스크 기억장치, 플로피 디스크 스토로지, 제거 가능한 디스크 기억장치, 플래시 메모리, 랜덤 액세스 메모리(RAM - 스태틱 RAM(SRAM), 외부 확장 메모리(EDO) RAM, 동기식 동적 RAM(SDRAM), 더블 데이터 레이트(DDR), SDRAM, RAMBUS RAM, 등), 읽기 전용 메모리(ROM - 프로그램 가능 ROM(PROM), 전기적 소거 가능한 프로그램 가능 ROM(EEPROM) 등) 등과 같은 다른 물리적 메모리 매체를 사용하여 실시될 수 있다. 컴퓨터 시스템(400)에 있는 메모리는 메모리(420)와 같은 주 기억장치로 한정되지 않는다. 오히려, 컴퓨터 시스템(400)은 프로세서 서브시스템(480)에 있는 캐시 메모리 및 I/O 디바이스(450)(예를 들어, 하드 드라이브, 기억장치 어레이 등)의 2차 기억장치와 같은 다른 형태의 기억장치를 또한 포함할 수 있다. 일부 실시예에서, 이러한 다른 형태의 기억장치는 프로세서 서브시스템(480)에 의해 실행 가능한 프로그램 명령을 또한 저장할 수 있다.
I/O 인터페이스(440)는, 다양한 실시예에 따르면, 다른 디바이스에 결합되고 이와 통신하도록 구성되는 임의의 다양한 형태의 인터페이스일 수 있다. 한 실시예에서, I/O 인터페이스(440)는 프런트-사이드로부터 하나 이상의 백-사이드 버스까지의 브릿지 칩(예를 들어, 사우스브릿지)이다. I/O 인터페이스(440)는 하나 이상의 대응 버스 또는 다른 인터페이스를 통해 하나 이상의 I/O 디바이스(450)에 결합될 수 있다. I/O 디바이스의 예는 기억장치 디바이스(하드 드라이브, 광 드라이브, 제거 가능 플래시 드라이브, 기억장치 어레이, SAN, 또는 이와 관련된 컨트롤러), 네트워크 인터페이스 디바이스(예를 들어, 로컬 또는 광대역 네트워크), 또는 다른 디바이스(예를 들어, 그래픽, 사용자 인터페이스 디바이스 등)을 포함한다. 한 실시예에서, 컴퓨터 시스템(400)은 네트워크 인터페이스 디바이스를 통해 네트워크에 결합된다.
컴퓨터 시스템(예를 들어, 컴퓨터 시스템(400))에 의해 실행되는 프로그램 명령은 다양한 형태의 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 일반적으로 말하면, 컴퓨터 판독 가능 저장 매체는 컴퓨터에 명령 및/또는 데이터를 제공하도록 컴퓨터에 의해 판독 가능한 임의의 비일시적/유형 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 저장 매체는 자기 또는 광학 매체, 예를 들어, 디스크(고정 또는 제거 가능), 테이프, CD-ROM, 또는 DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, 또는 Blu-Ray와 같은 저장 매체를 포함할 수 있다. 저장 매체는 RAM(동기식 동적 RAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등), SDRAM, 저전력 DDR(LPDDR2 등), SDRAM, 램버스 DRAM(RDRAM), 스태틱 RAM(SRAM) 등), ROM, 플래시 메모리, 범용 직렬 버스(USB) 인터페이스와 같은 주변 인터페이스를 통해 접근 가능한 비휘발성 메모리(예를 들어, 플래시 메모리)를 또한 포함할 수 있다. 저장 매체는 마이크로전자기계 시스템(MEMS)뿐만 아니라 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 접근 가능한 저장 매체를 포함할 수 있다.
일부 실시예에서, 컴퓨터 판독 가능 저장 매체는 프로그램에 의해 읽혀진 명령을 저장하도록 사용되고 전술한 바와 같은 파라미터 조정 회로(110 및/또는 210)와 제어 회로(120 및/또는 260)를 위한 하드웨어를 제조하도록 직접 또는 간접적으로 사용될 수 있다. 예를 들어, 명령은 베릴로그(Verilog) 또는 VHDL과 같은 고수준 디자인 언어(high level design language: HDL)에서 하드웨어의 행위 수준 또는 레지스터-전송 수준(register-transfer level: RTL) 기입을 기술하는 하나 이상의 데이터 구조를 서술할 수 있다. 기입은 목록(netlist)을 만들도록 상기 기입을 동기화할 수 있는 통합 툴(synthesis tool)에 의해 읽혀진다. 목록은 파라미터 조정 회로(110 및/또는 210)와 제어 회로(120 및/또는 260)의 기능성을 나타내는 한 세트의 게이트(예를 들어, 통합 라이브러리(synthesis library)에 의해 한정되는)를 포함할 수 있다. 목록은 그런 다음 마스크에 적용되도록 기하학적 형상을 기술하는 데이터 세트를 만들도록 배치되고 루팅될 수 있다. 마스크는 그런 다음 파라미터 조정 회로(110 및/또는 210)와 제어 회로(120 및/또는 260)에 대응하는 반도체 회로 또는 회로들을 만들도록 다양한 반도체 제조 단계에서 사용될 수 있다.
특정 실시예들이 위에서 서술되었지만, 단지 단일의 실시예가 특정 특징에 대하여 기술되는 경우에서도, 이 실시예들은 본 발명의 범위를 제한하도록 의도된 것이 아니다. 본 개시에서 제공되는 특징들의 예들은 달리 언급되지 않으면 제한적이라기 보다 예시적인 것으로 의도된 것이다. 위의 설명은 본 개시의 혜택을 받는 보 발명의 기술 분야에서 통상의 지식을 가진 자에게는 자명할 대안, 변경, 및 등가물을 망라하는 것으로 의도된다.
본 발명의 범위는 본 명세서에서 다루어지는 임의의 또는 모든 문제들을 경감시키든 아니든 간에 본 명세서에서 (명시적으로 또는 함축적으로) 개시되는 임의의 특징이나 특징들의 조합을 포함하며, 또는 그것들의 임의의 일반화를 포함한다. 따라서, 본 출원(또는 본 출원에 대하여 우선권을 주장하는 출원)의 절차 동안 새로운 청구항들이 이러한 임의의 특징들의 조합으로 형성될 수 있다. 특히, 첨부된 특허 청구 범위와 관련하여, 종속항들로부터의 특징들이 독립 항들과 조합될 수 있고, 각각의 독립항들로부터의 특징들이 첨부된 특허 청구 범위에서 나열된 특정 조합들뿐만 아니라 임의의 적절한 방식으로 조합될 수 있다.

Claims (20)

  1. 메모리 컨트롤러로서,
    하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 수행하도록 구성되는 제어 회로; 및
    테스트의 중간 결과를 수신하고, 상기 중간 결과에 기초하여 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하도록 구성된 파라미터 조정 회로를 포함하는 메모리 컨트롤러.
  2. 제1항에 있어서, 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나는 타이밍 파라미터이며;
    상기 파라미터 조정 회로는 복수의 중간 결과에 기초하여 상기 타이밍 파라미터를 위한 하나 이상의 동작값을 결정하도록 구성되는 것인 메모리 컨트롤러.
  3. 제1항에 있어서, 상기 테스트의 중간 결과는 상기 메모리 소자의 복수의 읽기/쓰기 시운전 중 하나 이상이 상기 하나 이상의 메모리 트레이닝 파라미터를 위해 주어진 값을 사용하여 완료되었다는 지시를 포함하며;
    상기 파라미터 조정 회로는 상기 메모리 소자의 복수의 읽기/쓰기 시운전의 하나 이상이 완료되었다는 지시에 기초하여, 상기 주어진 값과는 다른 값으로 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하도록 구성되는 것인 메모리 컨트롤러.
  4. 제3항에 있어서, 상기 메모리 소자는 복수의 그룹의 기억 바이트(storage byte)를 포함하며;
    상기 제어 회로는 상기 각각의 복수의 그룹의 기억 바이트를 위하여, 그 그룹의 기억 바이트에 전용된 지연 동기 루프에 각각의 복수의 타이밍 파라미터값을 제공하는 것에 의해 상기 메모리 소자의 테스트를 수행하도록 구성되는 것인 메모리 컨트롤러.
  5. 제1항에 있어서, 상기 파라미터 조정 회로는 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 위해 복수의 값을 사용하여 상기 메모리 소자에서 복수의 읽기/쓰기 시운전을 수행하는 것에 의해 상기 테스트를 수행하도록 구성되며;
    상기 메모리 컨트롤러는 복수의 읽기/쓰기 시운전의 결과를 바탕으로 계산을 수행하는 것에 의해 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 위한 동작값을 결정하도록 추가로 구성되는 것인 메모리 컨트롤러.
  6. 제1항에 있어서, 상기 제어 회로는 전압 파라미터 및 타이밍 파라미터를 변경하는 것에 의해 상기 메모리 소자의 테스트를 수행하도록 구성되는 것인 메모리 컨트롤러.
  7. 제6항에 있어서, 상기 파라미터 조정 회로는, 복수의 전압 파라미터값 각각에 대해, 그 전압 파라미터값을 사용하여 상기 메모리 소자에서 각각의 복수의 읽기/쓰기 시운전을 수행하도록 구성되며, 각각의 복수의 읽기/쓰기 시운전은 각각 다른 타이밍 파라미터값을 사용하는 것인 메모리 컨트롤러.
  8. 제7항에 있어서, 상기 메모리 컨트롤러는 상기 메모리 소자를 위한 복수의 동작 타이밍 파라미터값을 결정하도록 구성되고, 상기 복수의 동작 타이밍 파라미터값은 각각 상기 복수의 전압 파라미터값 중 적어도 각각의 것에 대응하는 것인 메모리 컨트롤러.
  9. 제5항에 있어서, 상기 메모리 컨트롤러는 좌측 에지값과 우측 에지값을 평균하는 것에 의해 상기 동작값을 결정하도록 구성되는 것인 메모리 컨트롤러.
  10. 방법으로서,
    메모리 소자의 복수의 시운전을 수행하는 메모리 컨트롤러를 포함하며, 복수의 시운전 중 초기의 것은 타이밍 파라미터를 위하여 제1값을 사용하고, 복수의 시운전 중 이후의 것들은 상기 타이밍 파라미터를 위하여 각각의 다른 값을 사용하며, 상기 각각의 다른 값은 상기 메모리 소자의 상기 복수의 시운전 중 하나 이상의 이전에 수행된 것들의 결과에 기초하여 상기 메모리 컨트롤러에 의해 각각 결정되며;
    상기 메모리 컨트롤러는 상기 복수의 시운전의 결과에 기초하여 상기 타이밍 파라미터를 위한 동작값을 결정하는 것인 방법.
  11. 제10항에 있어서, 상기 메모리 소자의 복수의 시운전을 수행하는 것은 BIOS 디바이스에 상기 복수의 시운전의 결과를 보고하는 것에 의존하지 않는 것인 방법.
  12. 제10항에 있어서, 상기 메모리 소자는 복수의 그룹의 기억 바이트를 포함하고;
    상기 메모리 소자의 상기 복수의 시운전을 수행하는 것은,
    복수의 지연 동기 루프 중 다른 것들을 통해 상기 복수의 그룹의 기억 바이트의 다른 것들에 쓰기를 수행하는 단계; 및
    상기 복수의 그룹의 기억 바이트의 다른 것들의 읽기를 수행하는 단계를 포함하는 것인 방법.
  13. 제12항에 있어서, 상기 타이밍 파라미터를 위한 복수의 동작값을 결정하는 메모리 컨트롤러를 추가로 포함하며, 상기 복수의 결정된 동작값은 각각 상기 복수의 지연 동기 루프 중 적어도 하나에 대응하는 것인 방법.
  14. 제10항에 있어서, 상기 메모리 소자의 상기 복수의 시운전을 수행하는 것은 변경된 환경 조건의 지시에 응답하는 것인 방법.
  15. 제10항에 있어서, 상기 복수의 시운전의 결과에 기초하여 상기 타이밍 파라미터를 위한 일정 범위의 동작값을 결정하는 메모리 컨트롤러를 추가로 포함하며, 결정된 동작값은 상기 범위에 있는 것인 방법.
  16. 장치로서,
    하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 수행하기 위한 수단; 및
    상기 테스트의 중간 결과를 수신하고 상기 중간 결과에 기초하여 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하기 위한 수단을 포함하는 장치.
  17. 제16항에 있어서, 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나는 타이밍 파라미터이며;
    상기 장치는 복수의 중간 결과에 기초하여 상기 하나 이상의 메모리 트레이닝 파라미터를 위한 하나 이상의 동작값을 결정하기 위한 수단을 추가로 포함하는 장치.
  18. 제16항에 있어서, 상기 테스트의 상기 중간 결과는 상기 메모리 소자의 복수의 읽기/쓰기 시운전 중 하나 이상이 상기 하나 이상의 메모리 트레이닝 파라미터를 위해 주어진 값을 사용하여 완료되었다는 지시를 포함하며;
    상기 장치는 상기 메모리 소자의 상기 복수의 읽기/쓰기 시운전 중 하나 이상이 완료되었다는 지시에 기초하여, 상기 주어진 값과는 다른 값으로 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하기 위한 수단을 추가로 포함하는 장치.
  19. 컴퓨터 시스템에서 실행 가능한 프로그램에 의해 동작되는 데이터 구조를 포함하고, 상기 프로그램이 상기 데이터 구조에 의해 기입된 회로망(circuitry)을 포함하는 집적회로를 제조하는 공정의 일부를 수행하도록 상기 데이터 구조 상에서 동작하는 것인 컴퓨터 판독 가능 저장 매체로서,
    상기 데이터 구조에 의해 기입된 상기 회로망은,
    하나 이상의 메모리 트레이닝 파라미터를 사용하여 메모리 소자의 테스트를 수행하도록 구성된 제어 회로; 및
    상기 테스트의 중간 결과를 수신하고, 상기 중간 결과에 기초하여 상기 하나 이상의 메모리 트레이닝 파라미터 중 적어도 하나를 조정하도록 구성된 파라미터 조정 회로를 포함하는, 컴퓨터 판독 가능 저장 매체.
  20. 제19항에 있어서, 상기 저장 매체는 하드웨어 기입 언어(hardware description language: HDL) 데이터, 베릴로그 데이터(Verilog data) 또는 그래픽 데이터베이스 시스템 II(graphic database system II: GDSII) 데이터를 저장하는 것인 컴퓨터 판독 가능 저장 매체.
KR1020137031456A 2011-05-06 2012-05-03 메모리 소자를 테스트하기 위한 제어 회로 및 방법 KR20140030220A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/102,975 US20120284576A1 (en) 2011-05-06 2011-05-06 Hardware stimulus engine for memory receive and transmit signals
US13/102,975 2011-05-06
PCT/US2012/036399 WO2012154512A1 (en) 2011-05-06 2012-05-03 Control circuit and method for testing a memory element

Publications (1)

Publication Number Publication Date
KR20140030220A true KR20140030220A (ko) 2014-03-11

Family

ID=46124737

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137031456A KR20140030220A (ko) 2011-05-06 2012-05-03 메모리 소자를 테스트하기 위한 제어 회로 및 방법

Country Status (6)

Country Link
US (1) US20120284576A1 (ko)
EP (1) EP2705432A1 (ko)
JP (1) JP2014517964A (ko)
KR (1) KR20140030220A (ko)
CN (1) CN103502964A (ko)
WO (1) WO2012154512A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268409B2 (en) 2015-09-22 2019-04-23 Samsung Electronics Co., Ltd. Memory controller managing a temperature of a memory device upon a training operation, a memory system, and a method of operating the same

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430418B2 (en) * 2013-03-15 2016-08-30 International Business Machines Corporation Synchronization and order detection in a memory system
US9142272B2 (en) 2013-03-15 2015-09-22 International Business Machines Corporation Dual asynchronous and synchronous memory system
US9535778B2 (en) 2013-03-15 2017-01-03 International Business Machines Corporation Reestablishing synchronization in a memory system
US9224442B2 (en) 2013-03-15 2015-12-29 Qualcomm Incorporated System and method to dynamically determine a timing parameter of a memory device
US20150026528A1 (en) * 2013-07-16 2015-01-22 Manuel A. d'Abreu Controller based memory evaluation
US9218575B2 (en) * 2013-09-04 2015-12-22 Intel Corporation Periodic training for unmatched signal receiver
US10275386B2 (en) 2014-06-27 2019-04-30 Advanced Micro Devices, Inc. Memory physical layer interface logic for generating dynamic random access memory (DRAM) commands with programmable delays
US9639495B2 (en) * 2014-06-27 2017-05-02 Advanced Micro Devices, Inc. Integrated controller for training memory physical layer interface
US10055370B2 (en) * 2014-07-09 2018-08-21 Advanced Micro Devices, Inc. Method and apparatis for processor standby
US9543041B2 (en) 2014-08-29 2017-01-10 Everspin Technologies, Inc. Configuration and testing for magnetoresistive memory to ensure long term continuous operation
JP6462410B2 (ja) * 2015-02-26 2019-01-30 ルネサスエレクトロニクス株式会社 半導体装置、テストプログラムおよびテスト方法
CN104750589B (zh) * 2015-03-12 2018-03-02 广东欧珀移动通信有限公司 一种存储器参数调节方法及移动终端
KR20180007374A (ko) 2016-07-12 2018-01-23 삼성전자주식회사 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
JP6841185B2 (ja) * 2017-08-18 2021-03-10 京セラドキュメントソリューションズ株式会社 情報処理装置、及び画像形成装置
KR102340446B1 (ko) * 2017-09-08 2021-12-21 삼성전자주식회사 스토리지 장치 및 그것의 데이터 트레이닝 방법
CN107679210A (zh) * 2017-10-17 2018-02-09 山东浪潮通软信息科技有限公司 一种报表数据交换方法、装置及系统
JP6962130B2 (ja) * 2017-10-24 2021-11-05 富士通株式会社 データ送受信システム、データ送受信装置およびデータ送受信システムの制御方法
CN108010558A (zh) * 2017-11-28 2018-05-08 晶晨半导体(上海)股份有限公司 一种存储器的信号完整性测试方法
CN108039189A (zh) * 2017-11-28 2018-05-15 晶晨半导体(上海)股份有限公司 一种存储器的信号完整性测试方法
CN109960616B (zh) * 2017-12-22 2023-04-07 龙芯中科技术股份有限公司 基于处理器的内存参数的调试方法及系统
CN108646984B (zh) * 2018-05-16 2020-01-03 华为技术有限公司 一种dqs位置调整方法和装置
CN109828878B (zh) * 2019-01-18 2022-10-11 晶晨半导体(上海)股份有限公司 存储模块的测试方法、主板中存储单元的测试方法及装置
KR20210026353A (ko) 2019-08-30 2021-03-10 삼성전자주식회사 메모리 장치 트레이닝 방법 및 이를 포함한 전자 기기 및 전자 시스템
CN110993005B (zh) * 2019-12-11 2021-03-26 海光信息技术股份有限公司 电路结构、芯片、训练方法及训练装置
CN113450852B (zh) * 2020-03-25 2022-04-12 长鑫存储技术有限公司 半导体存储器的训练方法及相关设备
CN113496719B (zh) * 2020-04-08 2023-06-23 长鑫存储技术有限公司 半导体存储器的训练方法及相关设备
KR20210136480A (ko) * 2020-05-07 2021-11-17 삼성전자주식회사 프로세싱 장치가 실장된 메모리 모듈을 포함하는 컴퓨팅 시스템의 부팅 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647467B1 (en) * 2006-05-25 2010-01-12 Nvidia Corporation Tuning DRAM I/O parameters on the fly
US7924637B2 (en) * 2008-03-31 2011-04-12 Advanced Micro Devices, Inc. Method for training dynamic random access memory (DRAM) controller timing delays
US8819474B2 (en) * 2009-04-03 2014-08-26 Intel Corporation Active training of memory command timing
US20100325372A1 (en) 2009-06-17 2010-12-23 Housty Oswin E Parallel training of dynamic random access memory channel controllers
US20110040902A1 (en) * 2009-08-13 2011-02-17 Housty Oswin E Compensation engine for training double data rate delays
US8233336B2 (en) * 2009-09-25 2012-07-31 Infineon Technologies Ag Memory controller comprising adjustable transmitter impedance

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268409B2 (en) 2015-09-22 2019-04-23 Samsung Electronics Co., Ltd. Memory controller managing a temperature of a memory device upon a training operation, a memory system, and a method of operating the same

Also Published As

Publication number Publication date
EP2705432A1 (en) 2014-03-12
CN103502964A (zh) 2014-01-08
WO2012154512A1 (en) 2012-11-15
US20120284576A1 (en) 2012-11-08
JP2014517964A (ja) 2014-07-24

Similar Documents

Publication Publication Date Title
KR20140030220A (ko) 메모리 소자를 테스트하기 위한 제어 회로 및 방법
US10134455B2 (en) Efficient calibration of a data eye for memory devices
KR101549648B1 (ko) 메모리 액세스 지연을 트레이닝하기 위한 방법 및 장치
US20170213585A1 (en) Memory subsystem i/o performance based on in-system empirical testing
US9832006B1 (en) Method, apparatus and system for deskewing parallel interface links
US6316980B1 (en) Calibrating data strobe signal using adjustable delays with feedback
US9520877B2 (en) Apparatus and method for detecting or repairing minimum delay errors
JP5676759B2 (ja) 安定した仮想周波数のための複数の動作点の管理
KR101711263B1 (ko) 가변 지연 라인 유닛을 갖는 지연 라인 회로
US8379457B1 (en) Auto calibration of storage memory controller
KR100930401B1 (ko) 반도체 메모리 장치
US9672882B1 (en) Conditional reference voltage calibration of a memory system in data transmisson
US7949080B2 (en) Phase adjusting function evaluating method, transmission margin measuring method, information processing apparatus and computer readable information recording medium
TWI679851B (zh) 數位延遲鎖定迴路(dll)訓練技術
US8539413B1 (en) Frequency optimization using useful skew timing
KR101217937B1 (ko) 고속의 외부 메모리 인터페이스를 위한 적응적 디지털 phy
US9032274B2 (en) Method and apparatus for clock and data recovery
US9183125B2 (en) DDR receiver enable cycle training
US20120218841A1 (en) Utilizing two algorithms to determine a delay value for training ddr3 memory
US20230112432A1 (en) Dynamic setup and hold times adjustment for memories
US8254189B2 (en) Method for tuning control signal associated with at least one memory device
US20180107612A1 (en) System and Method of Determining Memory Access Time
WO2023064729A1 (en) Dynamic setup and hold times adjustment for memories
WO2007029051A1 (en) Method and a computer readable medium for analyzing a design of an integrated circuit
JP5477013B2 (ja) 集積回路

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid