KR102011092B1 - 프로그래머블 지연을 가진 동적 랜덤 액세스 메모리(dram) 명령을 생성하기 위한 메모리 물리 계층 인터페이스 로직 - Google Patents

프로그래머블 지연을 가진 동적 랜덤 액세스 메모리(dram) 명령을 생성하기 위한 메모리 물리 계층 인터페이스 로직 Download PDF

Info

Publication number
KR102011092B1
KR102011092B1 KR1020167026427A KR20167026427A KR102011092B1 KR 102011092 B1 KR102011092 B1 KR 102011092B1 KR 1020167026427 A KR1020167026427 A KR 1020167026427A KR 20167026427 A KR20167026427 A KR 20167026427A KR 102011092 B1 KR102011092 B1 KR 102011092B1
Authority
KR
South Korea
Prior art keywords
instruction
training
memory
delay
instructions
Prior art date
Application number
KR1020167026427A
Other languages
English (en)
Other versions
KR20170027696A (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 KR20170027696A publication Critical patent/KR20170027696A/ko
Application granted granted Critical
Publication of KR102011092B1 publication Critical patent/KR102011092B1/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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a 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/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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

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

Abstract

메모리 물리 계층 인터페이스(PHY)(140, 205)와 연관되어 구현되는 복수의 레지스터(222)는 하나 이상의 명령 및 하나 이상의 지연(415, 515, 535, 540)을 표시하는 하나 이상의 명령어 워드(300)를 저장하는데 사용될 수 있다.   메모리 PHY에 구현되는 트레이닝 엔진(220)은 외부 메모리(210)에 전달하기 위한 명령(410, 420, 430, 510, 520, 525)들의 고속 프로그래머블 시퀀스를 발생시킬 수 있고, 하나 이상의 지연에 기초하여 명령을 지연시킬 수 있다.   명령들의 고속 프로그래머블 시퀀스는 하나 이상의 명령어 워드에 기초하여 발생될 수 있다. 

Description

프로그래머블 지연을 가진 동적 랜덤 액세스 메모리(DRAM) 명령을 생성하기 위한 메모리 물리 계층 인터페이스 로직 {MEMORY PHYSICAL LAYER INTERFACE LOGIC FOR GENERATING DYNAMIC RANDOM ACCESS MEMORY (DRAM) COMMANDS WITH PROGRAMMABLE DELAYS}
본 발명은 일반적으로 프로세싱 시스템에 관한 것이고, 특히, 프로세싱 시스템의 메모리 물리 계층 인터페이스에 관한 것이다.
시스템-온-칩(SOC)과 같은 프로세싱 시스템은 차후 이용을 위해 데이터 또는 명령어를 저장하기 위해 메모리를 이용한다.   예를 들어, SOC는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 및 가속 프로세싱 유닛(APU)과 같은 프로세싱 유닛들을 포함할 수 있어서, 메모리로부터 명령어 또는 데이터를 판독할 수 있고, 명령어 또는 데이터를 이용하여 작동을 수행할 수 있고, 그 후, 메모리에 결과를 다시 기록할 수 있다.   프로세싱 시스템은 프로세싱 시스템의 작동 중 프로세싱 시스템이 저장된 정보에 액세스할 수 있도록, 정보 저장에 사용될 수 있는 동적 랜덤 액세스 메모리(DRAM)와 같은 메모리 모듈에 대한 액세스를 제어하기 위한 메모리 물리 계층 인터페이스를 포함할 수 있다.   프로세싱 시스템의 메모리 물리 계층 인터페이스는 흔히 "메모리 PHY"로 불린다.   메모리 컨트롤러는 메모리 PHY의 작동을 제어하는데 통상적으로 사용된다.   
메모리 PHY는 통상적으로, 데이터를 DRAM으로부터 정확하게 판독할 수 있기 전에 또는 DRAM에 데이터를 정확하게 기록할 수 있기 전에 메모리 PHY와 DRAM 간의 인터페이스를 통해 교환되는 시퀀스를 이용하여 트레이닝된다.   트레이닝 시퀀스는 판독 명령, 기록 명령, 활성화 명령, 또는 다른 작동의 수행에 사용되는 다른 명령과 같이, 복수의 명령을 포함할 수 있다.   메모리 PHY 또는 DRAM은 명시된 지연 시간 간격에 의해 분리되는 트레이닝 시퀀스의 명령을 요구할 수 있다.   예를 들어, 기록 명령에 판독 명령이 이어질 때, DRAM은 기록 명령과 판독 명령 간에 8 사이클의 지연을 요구할 수 있다.   지연 시간 간격은 서로 다른 유형의 명령에 대해 서로 다를 수 있다.   예를 들어, 2개의 기록 명령들 간의 지연 시간 간격은 기록 명령과 판독 명령 간의 지연 시간 간격과는 다를 수 있다.   지연 시간 간격은 서로 다른 유형의 명령에 대해 서로 다를 수 있다.
본 발명은 첨부 도면을 참조함으로써 더 쉽게 이해될 것이고, 그 수많은 특징 및 장점들이 당 업자에게 명백해질 수 있다.   서로 다른 도면에서 동일한 도면 부호의 이용은 유사 또는 동일 아이템을 표시한다. 
도 1은 일부 실시예에 따라 하나 이상의 중앙 프로세싱 유닛(CPU) 프로세서 코어 및 그래픽 프로세싱 유닛(GPU)을 포함하는 가속 프로세싱 유닛(APU)의 블록도다.    
도 2는 일부 실시예에 따라 동적 랜덤 액세스 메모리(DRAM) 및 메모리 물리 계층 인터페이스(PHY)를 포함하는 프로세싱 유닛의 일부분의 블록도다.   
도 3은 일부 실시예에 따라 레지스터에 저장될 수 있는 명령어 워드의 한 예의 블록도다.   
도 4는 일부 실시예에 따라 트레이닝 엔진에 의해 공급될 수 있는 명령들의 시퀀스를 나타내는 도면이다.  
도 5는 일부 실시예에 따라 트레이닝 엔진에 의해 공급될 수 있는 명령들의 시퀀스를 나타내는 도면이다.  
도 6은 일부 실시예에 따른 명령 시퀀스 실행 방법의 흐름도다.    
도 7은 일부 실시예에 따라, 도 1에 도시되는 APU와 같은 프로세싱 유닛에서 구현될 수 있는 메모리 PHY의 트레이닝 방법의 흐름도다.   
도 8은 일부 실시예에 따라 프로세싱 시스템의 일 구성요소의 적어도 일부분을 구현하는 집적 회로 소자를 설계 및 제조하기 위한 방법을 나타내는 흐름도다.
기존의 트레이닝 시퀀스는 지정된 지연 시간 간격만큼 분리된 지정된 시퀀스의 명령들을 이용한다.   결과적으로, 기존의 트레이닝 시퀀스는, 가령, 서로 다른 DRAM 설계의 서로 다른 타이밍 요건에 부합하도록, 변형될 수 없다.   그러나, 여기서 논의되는 바와 같이, DRAM에 공급되는 명령들 간의 지연 시간 간격은 서로 다른 유형의 명령들에 대해 서로 다를 수 있고, 지연 시간 간격은 서로 다른 유형의 DRAM에 대해 또한 다를 수 있으며, 새 DRAM 설계가 도입됨에 따라 변할 수 있다.   서로 다른 메모리 PHY 또는 DRAM 설계의 타이밍 요건에 부합하도록, 트레이닝 시퀀스는 메모리 PHY에서 구현되는 프로그래머블 트레이닝 엔진에 의해 유연하게 형성될 수 있다.   트레이닝 엔진은 명령을 표시할 제 1 필드와, 명령 실행 전에 경과되어야할 지연 시간 구간을 표시하는 제 2 필드를 포함하는 명령어 워드를 이용하여 프로그래밍될 수 있다.   명령어 워드의 일부 실시예는 명령에 의해 사용되는 DRAM 어드레스와, 명령에 의해 사용되는 DRAM의 뱅크와, 명령에 대한 반복 카운트, 등을 표시하는 다른 필드를 또한 포함할 수 있다.   메모리 PHY의 일부 실시예는 명령어 워드를 홀딩하기 위한 레지스터와, 레지스터에 저장된 명령어 워드의 실행을 개시하기 위해 기록될 수 있는 시작 비트를 포함한다.   
명령어 워드에 지연 시간 간격을 채택함으로써, 프로그래머들이 서로 다른 유형의 DRAM의 요건들을 충족시키는 트레이닝 시퀀스를 생성할 수 있고, 차후의 DRAM 설계의 아직 알려지지 않은 요건들을 충족시킬 수 있는 차후 트레이닝 시퀀스의 발전을 뒷받침할 수 있다.   더욱이, 두 명령이 특정 지연 시간 간격만큼 분리될 필요가 있지만, 메모리 PHY 또는 DRAM의 일부 실시예에서는 다른 유형의 명령이 두 명령 간에 수행될 수 있다.   따라서, 명령에 대한 명령어 워드에 표시되는 지연 시간 간격은 다른 두 명령에 대한 지연 시간 간격 요건을 여전히 충족시키면서도 중간 명령을 실행할 수 있는 값으로 설정될 수 있다. 
도 1은 일부 실시예에 따라 하나 이상의 중앙 프로세싱 유닛(CPU) 프로세서 코어(105, 110) 및 그래픽 프로세싱 유닛(GPU)(115)을 포함하는 가속 프로세싱 유닛(APU)(100)의 블록도다.   APU(100)는 시스템-온-칩(SOC)으로 구현될 수 있다.   CPU 프로세서 코어(105, 110)는 명령어를 개별적으로, 동시적으로, 또는 병렬로 실행할 수 있다.   도 1에 도시되는 APU(100)가 2개의 CPU 프로세서 코어(105, 110)를 포함하지만, 본 발명의 이점을 가진 당 업자는 APU(100) 내 프로세서 코어의 수가 설계 선택 상의 문제임을 이해하여야 한다.   APU(100)의 일부 실시예는 도 1에 도시되는 2개의 CPU 프로세서 코어(105, 110)보다 많거나 적은 개수를 포함할 수 있다.   GPU(115)는 디스플레이에 출력하도록 구성된 가상 이미지를 생성하는데 사용된다.   GPU(115)의 일부 실시예는 복수의 프로세싱 코어(도시되지 않음)를 또한 포함할 수 있다. 
CPU 프로세서 코어(105)는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있는 바이오스(BIOS)(120)를 포함한다.   BIOS(120)의 일부 실시예는 가령, APU(100)를 포함하는 시스템이 전력공급받거나 부팅됨에 응답하여, APU(100)의 구성요소들을 초기화 또는 검사하는데 사용된다.   BIOS(120)는 운영 체제를 로딩하는데 또한 사용될 수 있다.   BIOS(120)에 의해 발생되는 명령어 또는 명령은 하나 이상의 데이터 파이프라인(도 1에 도시되지 않음)을 이용하여 APU(100) 내 다른 위치에 운반될 수 있다.   대안으로서, BIOS(120)는 CPU 프로세서 코어(110) 내에 또는 APU(100) 내 다른 위치에 구현될 수 있다.  
도 1에 도시되는 APU(100)는 다른 SOC 로직(125)을 또한 포함한다.   다른 SOC 로직(125)의 일부 실시예는 어드레스 생성 및 메모리 판독 또는 기록 사이클 개시 기능, 메모리-메모리 데이터 전송 수행 기능, 또는, CPU 프로세서 코어(105, 110) 또는 GPU(115) 간의 데이터 전송 기능을 위한 DMA 엔진(도시되지 않음)을 포함할 수 있다.   다른 SOC 로직(125)은 라우팅 로직, 코히어런시 로직, 또는 기타 기능 구현을 위한 로직을 또한 포함할 수 있다.   다른 SOC 로직(125)의 일부 실시예는 APU(100)와, 외부 동적 랜덤 액세스 메모리(DRAM)(135)와 같은 다른 메모리 간의 데이터 흐름을 조율하기 위해 메모리 컨트롤러(MC)(130)를 포함한다.   메모리 컨트롤러(130)는 외부 메모리로부터 정보의 판독과, 외부 메모리에 정보의 기록을 제어하는데 사용되는 로직을 포함한다.   메모리 컨트롤러(130)는 DRAM 내 메모리 셀의 정보가 보유되도록, DRAM에 정보를 주기적으로 재-기록하는데 사용되는 리프레시 로직을 또한 포함할 수 있다.  
메모리 컨트롤러(130)는 메모리 PHY(140)로 불릴 수 있는 메모리 물리 계층 인터페이스(140)를 통해 송신되는 신호를 이용하여 DRAM(135)과 같은 다른 메모리 모듈의 작동을 제어할 수 있다.   메모리 PHY(140)는 APU(100)에 연결될 수 있는 다른 메모리 모듈의 작동을 통제하는 신호를 구동하는데 사용되는 회로를 포함한다.   예를 들어, 메모리 PHY(140)는 DRAM(135)과 같은 메모리 모듈의 부분들의 판독, 기록, 리프레싱, 또는 소거를 제어하는 신호를 제공할 수 있다.   메모리 PHY(140)는 메모리 PHY(140)의 작동 주파수 및/또는 작동 전압에 의해 결정될 수 있는 서로 다른 작동점에서 작동할 수 있다.   예를 들어, 나머지 SOC 로직(125)은 메모리 PHY(140) 및/또는 메모리 컨트롤러(130)에 의해 사용되는 전압을 통제하는 기준 전압(VDD)과 메모리 PHY(140) 및/또는 메모리 컨트롤러(130)의 동기화를 통제하기 위한 클럭 신호를 제공하는 클럭(145)을 포함할 수 있다.   
메모리 PHY(140)는 메모리 PHY(140)와 DRAM(135) 사이의 통신 중 판독 또는 기록 성능을 개선시키기 위해 트레이닝되어야 한다.   따라서 메모리 PHY(140)는 트레이닝 시퀀스 또는 명령 발생, DRAM(135)에 트레이닝 시퀀스 또는 명령 송신, 트레이닝 시퀀스 또는 명령에 응답하여 DRAM(135)에 의해 발생된 신호 수신, DRAM(135)으로부터의 응답에 기초하여 메모리 PHY(140)의 판독/기록 파라미터 조정에 사용되는 일체형 트레이닝 제어 로직(155)을 포함한다.   메모리 PHY(140)에 트레이닝 제어 로직(155)을 통합시킴으로써, BIOS(120)에 구현되는 알고리즘을 이용하여 메모리 PHY(140)를 트레이닝시키는 기존 관례에 비해 다수의 장점이 나타난다.   트레이닝 제어 로직(155)에 의해 사용되는 트레이닝 알고리즘의 포스트-프로세싱(post-processing) 및/또는 시딩(seeding)은, BIOS(120)와 메모리 PHY(140) 간의 데이터 파이프라인을 통해 트레이닝 시퀀스를 송신할 필요성을 제거함으로써, 감소 또는 제거될 수 있다.   
트레이닝 제어 로직(155)의 일부 실시예는 트레이닝 시퀀스를 발생시키기 위해, 그리고, 트레이닝 시퀀스를 이용하여 메모리 PHY(140)의 작동을 구성하기 위해, 하나 이상의 트레이닝 엔진과 마이크로컨트롤러를 포함한다.   예를 들어, 트레이닝 제어 로직(155)은 DRAM(135)에 전달을 위한 명령들의 고속 프로그래머블 시퀀스를 발생시키는 트레이닝 엔진을 포함할 수 있다.   트레이닝 제어 로직(155)은 고속 프로그래머블 시퀀스 형성에 사용될 수 있는 하나 이상의 명령을 식별하는 정보를 포함하는 명령어 워드를 저장하기 위해 하나 이상의 레지스터를 또한 포함할 수 있다(또는 레지스터에 액세스할 수 있다.    명령어 워드는 명령과 연관된 지연을 표시하는 정보와, 기타 정보를 또한 포함할 수 있다.   트레이닝 제어 로직(155)은 그 후, 여기서 논의되는 바와 같은, 명령과, 명령 시퀀스 내 기타 명령 간에 표시된 지연을 삽입할 수 있다. 
도 2는 일부 실시예에 따라 도 1에 도시되는 DRAM(135) 및 메모리 PHY를 포함하는 프로세싱 유닛의 일부분(200)의 블록도다.   메모리 PHY(205)는 트레이닝 알고리즘에 기초하여 DRAM(210)과 통신하기 위한 메모리 PHY(205)의 판독 트레이닝 및 기록 트레이닝을 제어하는데 사용되는 컨트롤러(215)를 포함한다.   컨트롤러(215)의 일부 실시예는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다.   컨트롤러(215)는 일부 실시예에서 마이크로컨트롤러(215)로 불릴 수도 있다.   컨트롤러(215)가 메모리 PHY(205)에 통합되어 있고 따라서 데이터 파이프라인에 의해 메모리 PHY(205)로부터 분리되지 않기 때문에, 컨트롤러(215)에 의해 구현되는 트레이닝 알고리즘은 시딩없는 트레이닝 알고리즘일 수 있다.    여기서 논의되는 바와 같이, 시딩없는(seedless) 트레이닝 알고리즘은, 가령, 되돌아오는 신호의 포스트-프로세싱을 위한, 트레이닝 알고리즘에 의해 생성되는 명령 또는 트레이닝 시퀀스에 의해 가로지르는 신호 경로 또는 데이터 파이프라인을 특성화시키는 정보를 이용하여 구성될 필요가 없다.   컨트롤러(215)는 전력 공급, 수직 리트레이스 주파수 변화, 전력 상태 전환(가령, 아이들 상태와 활성 상태 간)에 응답하여, 또는, 지정된 주파수에서 주기적으로, 또는, 기타 이벤트 또는 신호에 응답하여, 트레이닝을 개시할 수 있다. 
컨트롤러(215)는 도 1에 도시되는 BIOS(120)와 같은 BIOS와 상호작용할 수 있다.   일부 실시예에서, BIOS는 로컬 정적 랜덤 액세스 메모리(SRAM)와 같은 메모리 어레이를 로딩함으로써, 또는, DRAM(210)과 연관된 구성 정보를 제공함으로써, 또는, 시스템 부팅에 응답하여 트레이닝 시퀀스를 개시하도록 컨트롤러(215)에 지시함으로써, 컨트롤러를 구성할 수 있다.    그러나, 컨트롤러(215)가 구성되면, 컨트롤러(215)의 일부 실시예는 실질적으로 BIOS로부터 독립적으로, 그리고, 실질적으로 BIOS로부터 입력없이, 메모리 PHY(205)의 트레이닝을 제어할 수 있다.    예를 들어, 컨트롤러(215)는 BIOS에 독립적으로 작동하는, 그리고,  BIOS로부터 트레이닝 명령 또는 트레이닝 시퀀스 수신없이 메모리 PHY(205)를 트레이닝시킬 수 있는, 트레이닝 알고리즘을 구현한다.   컨트롤러(215)가 (BIOS로부터 컨트롤러(215)까지 데이터 파이프라인을 통해 전송되어야하는) BIOS로부터 입력없이 메모리 PHY(205)의 트레이닝을 제어할 수 있기 때문에, 트레이닝 알고리즘은 시딩없는(seedless) 트레이닝 알고리즘으로 구현될 수 있다. 
컨트롤러(215)는 어드레스 명령 상태 기계(ACSM)(220)으로 또한 불릴 수 있는 제 1 트레이닝 엔진(220)에 연결된다.   ACSM(220)은 메모리 PHY(205)의 트레이닝 중 DRAM(210)에 제공될 수 있는 명령을 발생시킨다.   프로그래머블 명령은 메모리 PHY(205)의 일체형 부분으로 하드웨어적으로 구현되는 제 1 트레이닝 엔진(220)의 실시예를 위해 "고속으로" 발생될 수 있다.   ACSM(220)에 의해 발생되는 명령은 DRAM(210) 내 명시된 위치로부터 정보를 판독하기 위한 판독 명령과, DRAM(210) 내 명시된 위치에 정보를 기록하기 위한 기록 명령과, 활성화 명령과 같은 기타 명령을 포함할 수 있다.   ACSM(220)의 일부 실시예는 메모리 PHY(205)의 물리 핀으로의 신호를 구동하는 동시적 판독 및 기록 명령들을 조합하는 루프백 명령을 발생시킬 수 있고, 이는 그 후 메모리 PHY(205)를 통해 경로를 따라 되돌아온다.   따라서, 루프백 명령은, DRAM(210)을 메모리 PHY(205)의 물리 핀에 연결할 필요없이, 메모리 PHY(205)를 검사하는데 사용될 수 있다.   ACSM(220)의 일부 실시예는 명령들 간의 명시된 지연을 가진 하나 이상의 명령을 반복적으로 실행하는 루프 명령을 발생시킬 수 있어서, 실행 중 단일 명령어에 대해 루프 또는 반복을 수행할 수 있고, 시퀀스 내 복수의 명령들에 대해 루프를 수행할 수 있으며, 등등이 가능하다. 
ACSM(220)에 의해, 하나 이상의 레지스터(222)에 액세스가능하다 - 가령, 판독 또는 기록될 수 있다.   도 2에 도시되는 레지스터(222)는 ACSM(220)에 대해 외부적이다.   그러나, 일부 실시예에서, 레지스터(222) 또는 메모리 위치(224)가 ACSM(220) 내에 또는 기타 위치에서 구현될 수 있다.   레지스터(222)의 일부 실시예는 ACSM(220)의 구성 및 제어에 사용되는 정보를 저장하기 위한 물리 레지스터와, 명령어 워드(223) 저장에 사용되는 다른 물리 레지스터를 포함할 수 있다.   예를 들어, 레지스터(222)는 ACSM 제어를 위한 제 1 지정 개수의 물리 레지스터와, 지정 개수의 명령어 워드(223)와 연관된 정보의 저장을 위한 제 2 지정 개수의 레지스터를 포함할 수 있다.   제 2 지정 개수의 레지스터는 제 1 지정 개수의 레지스터보다 클 수 있다.   각각의 레지스터는 16-비트 레지스터 또는 다른 크기의 레지스터일 수 있다. 
 레지스터(222)는 명령 및 명령과 연관된 타이밍 지연을 표시하는 정보를 각각 포함하는 명령어 워드(223)를 저장하는데 사용된다.   명령어 워드(223)는 컨트롤러(215)에 의해 레지스터(222)에 기록될 수 있다.   타이밍 지연은 명령어 워드 내 명령과, 다른 명령, 가령, 다른 명령어 워드(223) 내 명령 사이에 삽입될 지연을 표시한다.   타이밍 지연은 대응 명령 실행 전에 또는 대응 명령 실행 후에 삽입될 수 있다.   일부 실시예에서, 명령어 워드(223)는 명령어 워드에 표시되는 명령의 반복 횟수를 표시하는 명령 반복 카운트, DRAM(210)과 같은 외부 메모리 내 어드레스, DRAM(210)에 액세스하기 위한 어드레스 발생에 사용될 수 있는 알고리즘형 어드레스 발생 제어 정보, 외부 메모리 내 뱅크, 등과 같은 기타 정보를 또한 포함할 수 있다.   알고리즘형 어드레스 발생 제어 정보는 어드레스의 랜덤 선택을 위한 다항식 형성에 사용되는 정보, 어드레스 증분용 정보, 어드레스 오프셋 또는 스트라이드, 어드레스 회전에 사용되는 정보, 등을 포함할 수 있다. 
레지스터(222)의 일부 실시예는 시작 어드레스, 시퀀스 루프 어드레스, 등과 같은 정보의 표시에 사용될 수 있는 하나 이상의 제어 비트를 저장하기 위한 메모리 위치(224)를 또한 포함할 수 있다.   ACSM(220)은 컨트롤러(215)가 메모리 위치(224)에 지정 값의 시작 비트를 기록함에 응답하여 하나 이상의 명령 또는 명령 시퀀스의 실행을 개시할 수 있다.   레지스터(222)에 저장된 명령어 워드(223)의 일부 실시예는, 명령어 워드에 지정 값의 종료 비트를 기록함으로써 명령 시퀀스의 실행을 종료시키는데 사용될 수 있는 종료 비트를 포함할 수 있다. 
컨트롤러(215)는 PRBS 패턴 발생기 체커(PPGC)(225)로 불릴 수 있는 제 2 트레이닝 엔진(225)에 또한 연결된다.   PPGC(225)의 일부 실시예는 프로그래머블하며, 메모리 PHY(205)의 트레이닝을 위한 트레이닝 시퀀스로 사용되는 데이터 스트림을 발생시킬 수 있다.   예를 들어, PPGC(225)는 컨트롤러(215)에 의해 제공되는 시그널링에 응답하여 임의의 16-비트(또는 그 미만의) 다항식을 위한 데이터 스트림을 발생시킬 수 있다.   PPGC(225)의 일부 실시예는 트레이닝 시퀀스를 발생시키는데 사용되는 별도의 제너레이터(235)와, 메모리 PHY(205)와 DRAM(210) 간에 흐르는 트레이닝 시퀀스를 포함하는 판독 또는 기록 스트림의 동기화를 점검하는데 사용되는 체커(checker)(230)를 포함한다.   PPGC(225)의 작동은 ACSM(220)으로부터 수신되는 시그널링에 의해 제어될 수 있다.   예를 들어, ACSM(220)은 제너레이터(235)에서 트레이닝 시퀀스 발생과 같은 작동들의 실행을 순서화하는 시그널링을 제공할 수 있다. 
컨트롤러(215)는 데이터 트레이닝 상태 머신(DTSM)(240)으로 불릴 수 있는 제 3 트레이닝 엔진에 또한 연결된다.   DTSM(240)은 메모리 PHY(205)에 의해 사용되는 타이밍 파라미터 또는 전압 오프셋 파라미터의 조정 여부를 결정하기 위해 DRAM(210)에 제공되는 트레이닝 시퀀스에, DRAM(210)으로부터 수신되는 트래픽을 비교한다.   예를 들어, PPGC(225)는 메모리 PHY(205)의 판독 트레이닝 또는 기록 트레이닝 중 DRAM(210)으로부터 되돌아오는 시퀀스에 비교하기 위해, DTSM(240)에 트레이닝 시퀀스의 표현을 제공할 수 있다.   트레이닝 루프 시작 전에, 컨트롤러(215)는 메모리 PHY(205)에 의해 사용되는 타이밍 파라미터 또는 전압 오프셋 파라미터를 제어하도록 DTSM(240)을 구성할 수 있다.   컨트롤러(215)는 그 후, 하나 이상의 트레이닝 시퀀스를 구동하도록 ACSM(220) 및 PPGC(225)를 프로그래밍할 수 있다.   DTSM(240)은 그 후, PPGC(225)에 의해 생성된 트레이닝 시퀀스를, DRAM(210)으로부터 수신된 시퀀스에 비교할 수 있다.   예를 들어, DTSM(240)은 복수의 서로 다른 지연에서 트레이닝 시퀀스 및 수신 시퀀스를 상관시킬 수 있다.   이러한 비교에 기초하여, DTSM(240)은, 가령, 타이밍 파라미터 또는 전압 오프셋 파라미터를 증분 또는 감분시킴으로써, 타이밍 파라미터 또는 전압 오프셋 파라미터의 조정 여부를 결정한다.   예를 들어, 트레이닝 시퀀스 및 수신 시퀀스의 상관에 기초하여 결정되는 지연에 기반하여 타이밍 오프셋이 증가 또는 감소할 수 있다.   DTSM(240)의 일부 실시예는 데이터 컨투어 아이 위치(data contour eye position)로 트레이닝을 위한 상한 또는 하한 비교 로직을 가진 데이터 필터 또는 이진 가산기를 또한 구현할 수 있다. 
선입선출(FIFO) 버퍼 세트들을 이용하여, DRAM(210)에 제공되기 전에 트레이닝 시퀀스를 버퍼링할 수 있고, DRAM(210)으로부터 수신된 후 수신 시퀀스들을 버퍼링할 수 있다.   예를 들어, 한 세트의 아웃바운드 FIFO 버퍼(245)를 이용하여 아웃바운드 트래픽을 버퍼링할 수 있고, 한 세트의 인바운드 FIFO 버퍼(250)를 이용하여 인바운드 트래픽을 버퍼링할 수 있다.   하나 이상의 수신기(255)를 이용하여 채널을 통해 DRAM(210)까지 신호를 수신할 수 있고, 이를 인바운드 FIFO 버퍼(250)에 제공할 수 있다.   하나 이상의 드라이버(260, 265)를 이용하여 인바운드 FIFO 버퍼(245)로부터 채널을 통해 DRAM(210)까지 신호를 송신할 수 있다.   예를 들어, 드라이버(260)를 이용하여 데이터(DQ) 또는 타이밍(DQS) 신호를 채널(270)에 구동시킬 수 있고, 수신기(255)를 이용하여 채널(270)을 통해 데이터(DQ) 또는 타이밍(DQS) 신호를 수신할 수 있다.   다른 예로서, 드라이버(265)를 이용하여 채널(275)을 통해 DRAM(210)에 어드레스(ADDR) 또는 명령(CMD)을 구동할 수 있다.   수신기(255) 또는 드라이버(260, 265)에 의해 사용되는 타이밍 지연 및 전압 오프셋이 조정될 수 있다. 
메모리 PHY(205)는 타이밍/전압 제어 로직(280)을 포함한다.   DTSM(240)은 타이밍 파라미터에 대한 조정을 표시하기 위해 타이밍/전압 제어 로직(280)에 신호를 제공할 수 있다.   예를 들어, DTSM(240)은 DRAM(210)에 제공되는 트레이닝 시퀀스와 DRAM(210)으로부터 수신되는 시퀀스의 비교에 기초하여, 타이밍 지연 또는 전압 오프셋을 증분 또는 감분시키도록 타이밍/전압 제어 로직(280)에 지시할 수 있다.   타이밍/전압 제어 로직(280)은 그 후, 수신기(255) 또는 드라이버(260, 265)에 의해 사용되는 타이밍 지연 또는 전압 오프셋을 조정하기 위해 수신기(255) 또는 드라이버(260, 265)에 제어 신호를 제공할 수 있다.   타이밍/전압 제어 로직(280)의 일부 실시예는 수신 이네이블 스테이지(receive enable stage), 기록 레벨링 스테이지, 판독 트레이닝 스테이지, 기록 트레이닝 스테이지, 및 메모리 PHY(205)와 DRAM(210) 간의 인터페이스를 위한 데이터 아이 컨투어(data eye contour)의 전압 레벨 결정을 위한 스테이지와 같은, 복수의 스테이지에서 타이밍 지연 또는 전압 오프셋을 조정하는데 사용될 수 있다. 
도 3은 일부 실시예에 따른 명령어 워드(300)의 한 예의 블록도다.   명령어 워드(300)의 일부 실시예는 도 2에 도시되는 레지스터(222)에 저장되는 명령어 워드(223)와 같은 레지스터에 저장될 수 있다.    명령어 워드(300)는 판독 명령, 기록 명령, 활성화 명령, 또는, 도 2에 도시되는 메모리 PHY(205)와 같은 메모리 PHY를 위한 트레이닝 시퀀스의 일부분으로 실행될 수 있는 기타 명령과 같은, 명령 유형을 표시하는 정보를 저장하기 위한 필드(305)를 포함한다.   명령어 워드(300)는 필드(305)에 표시되는 명령과 관련된 명령 지연을 표시하는 정보를 저장하기 위한 필드(310)를 또한 포함한다.   필드(310)의 일부 실시예는 필드(305)에 표시되는 명령의 실행 전 또는 후 경과해야 하는 사이클의 수를 표시하는 정보를 포함할 수 있다.   
명령어 워드(300)의 일부 실시예는 필드(305)에 표시되는 명령이 반복되어야 하는 횟수를 표시하는 명령 반복 카운트를 표시하는 정보를 저장하기 위한 필드(315)를 또한 포함한다.   필드(310)에 표시되는 명령 지연은 명령의 각각의 반복에 적용될 수 있다.   필드(320)는 필드(305)에 표시되는 명령과 관련된 어드레스를 포함할 수 있다.   어드레스는 명령 실행 중 판독 또는 기록될 수 있는 외부 메모리(가령, 도 2에 도시되는 DRAM(210)) 내 위치를 표시할 수 있다.   명령어 워드(223)의 일부 실시예는, 특정 값의 종료 비트를 명령어 워드(300)에 기록함으로써 명령 시퀀스의 실행을 종료시키는데 사용될 수 있는 종료 비트, 외부 메모리 내 뱅크, 외부 메모리, 등에 액세스하기 위한 어드레스 발생에 사용될 수 있는 알고리즘형 어드레스 발생 제어 정보와 같은 다른 정보를 저장하기 위한 하나 이상의 필드(325)를 또한 포함할 수 있다. 
도 4는 일부 실시예에 따라 도 2에 도시되는 ACSM(220)과 같은 트레이닝 엔진에 의해 공급될 수 있는 명령들의 시퀀스(400)를 나타내는 도면이다.   수평축은 클럭 사이클의 시간을 표시하며, 화살표 방향으로 표시되는 바와 같이, 좌측으로부터 우측으로 증가한다.   시퀀스(400)는 블록(405)에서 시작된다.   예를 들어, 시퀀스(400)는, 도 2에 도시되는 컨트롤러(215)와 같은 컨트롤러가 트레이닝 엔진과 연관된 메모리에 정보를 기록함으로써 트레이닝 엔진을 구성함에 응답하여, 개시될 수 있다.   컨트롤러는 그 후, (405)에서 시퀀스(400)를 시작하기 위해, 도 2에 도시되는 위치(224)와 같은 특정 위치에 시작 비트를 기록할 수 있다.   트레이닝 엔진은 그 후 레지스터로부터 명령어 워드를 판독할 수 있다.   예를 들어, 트레이닝 엔진은 시작 어드레스 포인터에 의해 표시되는 레지스터에서 명령어 워드를 판독할 수 있다.   명령어 워드는 트레이닝 엔진에 의해 실행될 명령과, 명령과 관련된 명령 지연을 식별하는 정보를 포함한다.   명령의 예는, DRAM과 같은 외부 메모리에 정보를 기록하는데 사용되는 기록 명령, 외부 메모리로부터 정보를 판독하는데 사용되는 판독 명령, 활성화 명령, 등을 포함한다.   
트레이닝 엔진에 의해 판독되는 제 1 명령은, 적어도 명령어 워드 내 명령 지연에 의해 표시되는 지정된 시간 간격만큼이나 긴 지연(415)에 이어 실행되는 판독 명령(410)이다.   트레이닝 엔진은 그 후 레지스터로부터 다음 명령어 워드를 판독할 수 있다.   다음 명령어 워드는 다음 명령이 판독 명령(420)임을 표시하는 정보를 포함한다.   일부 실시예에서, 외부 메모리에 정보를 기록하는 기록 명령의 수행과, 외부 메모리로부터 정보를 판독하는 판독 명령의 수행 간에 지정된 양의 시간이 경과할 것이 요구될 수 있다.   요구되는 대기시간은 트레이닝 엔진을 구현하는 메모리 PHY에 연결되는 DRAM의 유형과 같은 외부 메모리의 특성에 좌우될 수 있다.   따라서 프로그래머는 기록 명령(410)과, 명령어 워드의 명령 지연 필드 내 후속 판독 명령(420) 간의 적절한 명령 지연을 표시할 수 있다.   따라서 트레이닝 엔진은, 적어도 명령어 워드 내 명령 지연에 의해 표시되는 지정된 시간 간격만큼이나 긴 시간 간격(425) 동안 판독 명령(420)의 실행을 지연시킬 수 있다. 
트레이닝 엔진은 그 후 레지스터로부터 후속 명령어 워드를 판독할 수 있다.   일부 실시예에서, 후속 명령어 워드는 이전 판독 명령(420)에 이어 외부 메모리로부터 정보를 판독하는데 사용되는 판독 명령(430)을 식별하는 정보를 포함한다.   2개의 일련의 판독 명령(420, 430)의 수행 간에 지정된 시간 간격의 경과가 요구될 수 있고, 이러한 시간 간격은 명령어 워드 내 명령 지연 필드에 표시될 수 있다.   따라서 트레이닝 엔진은, 적어도 명령어 워드 내 명령 지연에 의해 표시되는 지정된 시간 간격만큼이나 긴 시간 간격(435) 동안 판독 명령(430)의 실행을 지연시킬 수 있다.   2개의 일련의 판독 명령(420, 430) 간에 경과해야하는 지정된 시간 간격은, 기록 명령(410)과 판독 명령(420) 간에 경과되어야 하는 지정된 시간 간격과 다를 수 있다.   
일반적으로 말해서, 서로 다른 유형의 명령들 간에 경과해야하는 시간 간격은, 명령의 유형, 명령 수행 순서, 또는 명령, 메모리 PHY, 또는 서로 다른 듀얼 인-라인 메모리 모듈(DIMM)을 포함한 외부 메모리의 다른 특성에 좌우될 수 있다.   예를 들어, 서로 다른 DIMM은 메모리 PHY에 대해 서로 다른 거리에 위치할 수 있고, 결과적으로, 메모리 PHY와 서로 다른 DIMM 간의 통신은 서로 다른 전송 지연을 경험할 수 있다.   명령어 워드에 표시되는 지연은 서로 다른 전송 지연을 나타내는데 사용될 수 있다 - 가령, 가장 먼 DIMM에 공급되는 판독 명령에 응답하여 되돌아오는 정보가, 메모리 PHY에 더 가까운 DIMM에 공급되는 후속 판독 명령에 응답하여 되돌아오는 정보와 충돌하는 것을 방지하는데 사용될 수 있다.   명령어 워드에 명령 지연 필드를 포함시킴으로써, 특정 실시예의 요건에 맞도록 명령 시퀀스(400)를 적응시킬 수 있는 유연성을 프로그래머에게 제공할 수 있다. 
도 5는 일부 실시예에 따라 도 2에 도시되는 ACSM(220)과 같은 트레이닝 엔진에 의해 공급될 수 있는 명령들의 시퀀스(500)를 나타내는 도면이다.   수평축은 클럭 사이클의 시간을 표시하며, 화살표 방향으로 표시되는 바와 같이, 좌측으로부터 우측으로 증가한다.   시퀀스(500)는 블록(505)에서 시작된다.   예를 들어, 시퀀스(500)는, 컨트롤러가 도 2에 도시되는 위치(224)와 같은 특정 위치에 시작 비트를 기록함에 응답하여, 개시될 수 있다.   트레이닝 엔진은 그 후 레지스터(가령, 시작 포인터에 의해 표시되는 레지스터)로부터 명령어 워드를 판독할 수 있다.   명령어 워드는 트레이닝 엔진에 의해 실행될 명령(510)과, 명령(510)과 관련된 명령 지연을 식별하는 정보를 포함한다.   기록 명령(510)은 적어도 명령어 워드 내 명령 지연에 의해 표시되는 지정된 시간 간격만큼이나 긴 지연(515)에 이어 실행된다.   
다음의 두 명령은 판독 명령(520)과, 하나 이상의 다른 명령(525)을 포함한다.   판독 명령(520)은 기록 명령(510)에 대해 대기시간(530)을 갖고 실행되어야 한다.   나머지 명령(525)은 기록 명령(510) 또는 판독 명령(520)에 대해 특정 대기시간없이 실행될 수 있고, 또는, 대기시간(530)에 비해 비교적 작은 대기시간으로 실행될 수 있다.   따라서, 판독 명령(520) 및 나머지 명령(525)과 관련된 명령어 워드 내 지연(535, 540)은, 두 지연(535, 540)의 합이 적어도 대기시간(530)만큼 크도록 구성될 수 있다.   따라서 트레이닝 엔진은 지연(535) 후 나머지 명령(525)을 실행할 수 있고, 이어서 지연(540) 후 판독 명령(520)을 실행할 수 있으며, 이는 판독 명령(520)이 기록 명령(510)에 대해 대기시간(530)을 갖고 실행되어야 하는 요건을 또한 충족시킨다.  
도 6은 일부 실시예에 따른 명령 시퀀스 실행 방법의 흐름도다.   방법(600)은 도 2에 도시되는 ACSM(220)과 같은 트레이닝 엔진에서 구현될 수 있다.   블록(605)에서, 방법(600)은 트레이닝 엔진이 시작 비트를 기록함에 응답하여 시작된다.   블록(610)에서, 트레이닝 엔진은 트레이닝 엔진에 의해 관리되는 시작 포인터에 의해 표시되는 레지스터와 같은 레지스터로부터 명령어 워드를 판독한다.   결정 블록(615)에서, 트레이닝 엔진은 명령어 워드가 명령어 워드에 의해 표시되는 명령과 관련된 명령 지연을 표시하는 정보를 포함하는지 여부를 결정한다.   그렇지 않을 경우, 트레이닝 엔진은 제약사항없이 명령을 발급할 수 있고, 이 명령이 블록(620)에서 실행될 수 있다.   그러한 경우, 트레이닝 엔진은 적어도 표시된 지연만큼이나 긴 시간 간격 후 명령을 발급하도록 제한받는다.    따라서 트레이닝 엔진은 적어도 블록(625)에서 표시된 지연 동안 대기할 수 있다.   그 후 트레이닝 엔진은 명령을 발급할 수 있고, 이 명령이 블록(620)에서 실행될 수 있다. 
명령어 워드의 일부 실시예는 명령어 워드 내 명령의 반복 횟수를 표시하는 명령 반복 필드를 포함할 수 있다.   결정 블록(630)에서, 트레이닝 엔진은 명령 반복 필드에 표시되는 명령 반복 카운트보다 적은 반복 횟수 동안 명령이 반복되었는 지 여부를 결정한다.   반복 횟수가 명령 반복 카운트보다 적을 경우, 명령이 적어도 한번 이상 반복되어야 함을 표시하여, 트레이닝 엔진은 결정 블록(615)에서 적절한 지연을 결정하고, 가능하다면, 블록(625)에서 표시된 지연 동안을 대기 후, 블록(620)에서 명령을 실행한다.   방법(600)은 반복 횟수가 명령 반복 카운트보다 크거나 동일하면 결정 블록(630)으로 진행될 수 있다.   트레이닝 엔진의 일부 실시예는 명령의 반복 횟수를 파악하기 위해 카운터를 관리할 수 있다. 
결정 블록(635)에서, 트레이닝 엔진은 현재의 명령어 워드를 갖는 명령 시퀀스를 종료할지 여부를 결정한다.   일부 실시예에서, 명령 시퀀스는 종료 비트가 현 명령어 워드에서 설정됨에 응답하여 종료될 수 있다.   명령 시퀀스가 종료되지 않는다고 트레이닝 엔진이 결정할 경우, 트레이닝 엔진은 가령, 시작 포인터를 다음 레지스터로 전진시킴으로써, (블록(640)의) 다음 명령어 워드로 진행할 수 있다.   그 후 방법(600)은 블록(610)으로 진행하여, 다음 명령어 워드가 레지스터로부터 판독된다.   명령 시퀀스가 종료된다고 트레이닝 엔진이 결정할 경우, 명령 시퀀스가 종료될 수 있고, 방법(600)은 블록(645)에서 시작 비트를 설정해제(unset)함으로써 종료될 수 있다. 
도 7은 일부 실시예에 따라, 도 1에 도시되는 가속 프로세싱 유닛(100)과 같은 프로세싱 유닛에서 구현될 수 있는 메모리 PHY의 트레이닝 방법(700)의 흐름도다.   방법(700)의 실시예는 도 1에 도시되는 트레이닝 제어 로직(155), 또는 도 2에 도시되는 컨트롤러(215),  ACSM(220), PPGC(225), DTSM(240), 및/또는 타이밍/전압 제어 로직(280)과 같은, 트레이닝 제어 로직에서 구현될 수 있다.   
블록(705)에서, 트레이닝 제어 로직은 DRAM과 인터페이스를 통해 데이터를 수신하도록 메모리 PHY를 가동시킬 때를 결정하기 위해 수신 이네이블 트레이닝(receive enable training)을 수행한다.   일부 실시예는 DRAM으로부터 선택된 어드레스를 판독하기 위한 판독 명령을 송신함으로써 수신 이네이블 트레이닝을 수행한다.   판독 명령 사이에는, DRAM으로부터 수신한 신호에 대응하는 버블 시퀀스를 발생시키는 버블 시퀀스가 배치된다.    그 후 트레이닝 제어 로직은 메모리 PHY 내 명령 발생 시간을, DRAM으로부터의 명령 응답이 메모리 PHY로 되돌아가는 시간에 정렬시키도록 DRAM으로부터 수신되는 신호를 모니터링한다.   버블 스페이싱 시간 간격 범위는, 경로 내 내부 메모리 PHY 및 DRAM 대기시간 더하기, 최악의 경우의 라운드 트립 대기시간(round trip latency)보다 큰 크기를 가진다.   이는 앞선 또는 차후의 응답과 연관된 명령 응답의 앨리어싱(alliasing) 가능성을 피한다.   메모리 PHY는 수신 이네이블 트레이닝 스테이지 중 연속 판독 상태에 머물도록 구성될 수 있다.   예를 들어, 컨트롤러(215)는 ACSM(220), PPGC(225), 및 DTSM(240)을 구성할 수 있고, 그 후 트레이닝 스테이지를 개시할 수 있다.   ACSM(220)은 DRAM(210)에 트레이닝 시퀀스를 기록하기 위한 명령/어드레스를 발급할 수 있고, 그 후, DRAM(210)으로부터 다시 트레이닝 시퀀스를 판독하기 위한 명령/어드레스를 발급할 수 있다.   일부 실시예에서, 발급된 명령에 응답하여 실제로 어떤 정보도 DRAM(210)에 기록되지 않고, DQ 버스가 무시된다.   되돌아오는 DQS만이 모니터링된다.   따라서, 발급된 명령은 판독 명령과 유사하지만, DTSM(240)은 명령에 응답하여 어떤 데이터가 되돌아오는지에 관여하지 않는다.   DTSM(240)은 DRAM(210)으로부터 되돌아오는 DQS 스트로브의 타이밍 조정에만 관심을 둔다.   트레이닝 시퀀스는 PPGC(225)에 의해 발생될 수 있고, DRAM(210)에 제공될 수 있다.   DTSM(240)은 그 후 DRAM(210)으로부터의 수신 데이터를 트레이닝 시퀀스와 상관시켜서, 라운드-트립 지연을 식별할 수 있고, 검출된 라운드 트립 지연을 무효화(null)시키기 위해 수신기(255) 및 드라이버(260, 265)와 같은 적절한 수신기/드라이버의 파라미터를 조정하도록 타이밍/전압 제어 로직(280)에 지시할 수 있다. 
블록(710)에서, 트레이닝 로직은 메모리 PHY에 의해 사용되는 클럭 신호를 DRAM에 의해 사용되는 클럭 신호에 정렬시키기 위해 기록 레벨링(write leveling)을 수행한다.   따라서 트레이닝 로직의 일부 실시예는 DRAM에서 클럭의 값을 샘플링하는데 사용되는 타이밍(DQS) 신호와 메모리 PHY 클럭 신호를 송신할 수 있다.    그 후 트레이닝 로직은, DQ 버스 상에서 되돌아오는 DRAM 클럭의 샘플링된 값을 이용하여, 가령, DQS 신호를 DRAM 내부적인 메모리 클럭 위상과 정렬시키도록 지연을 삽입시킴으로써, 메모리 PHY 클럭 및 DRAM 클럭을 정렬시킬 수 있다.   예를 들어, 컨트롤러(215)로부터의 시그널링에 응답하여, ACSM(220)은 DRAM의 메모리 클럭을 샘플링하기 위해 DRAM(210)에 제공되는 DQS 신호와 상승 에지를 포함하는 메모리 PHY 클럭 신호를 야기하는 기록 명령을 발생시킬 수 있다.   기록 명령은 여기서 논의되는 바와 같이, 레지스터(222)로부터 판독되는 정보에 기초하여 발생될 수 있다.   DRAM 클럭의 샘플링된 값은 그 후 메모리 PHY(205)에 되돌아 올 수 있다.   PPGC(225)의 체커(230)는 내부 비교 값을 발생시켜서 이 값을 DTSM(240)에 제공한다.   DTSM(240)은 그 후 내부 비교 값을, DRAM(210)으로부터 수신되는 샘플링된 클럭 신호 값에 비교할 수 있고, 기록 DQS를 DRAM(210) 내 클럭에 정렬시키도록 비교에 기초한 조정 신호를 발생시킬 수 있다.   DTSM(240)은 그 후, 메모리 PHY 클럭 및 DRAM 클럭을 동기화시키기 위해 수신기(255) 및 드라이버(260, 265)의 파라미터를 조정하도록 타이밍/전압 제어 로직(280)에 지시할 수 있다.   예를 들어, 내부 비교 값이 "0"이고 DRAM 클럭의 샘플링된 값이 "1"일 경우, DTSM(240)은 메모리 PHY(205)의 타이밍을 지정된 시간 양만큼 전진시키도록 타이밍/전압 제어 로직(280)에 지시할 수 있다.   내부 비교 값이 "1"이고 DRAM 클럭의 샘플링된 값이 "0"일 경우, DTSM(240)은 메모리 PHY(205)의 타이밍을 지정된 시간 양만큼 지연시키도록 타이밍/전압 제어 로직(282)에 지시할 수 있다.   이 프로세스는 메모리 PHY 클럭 및 DRAM 클럭의 동기화를 지정된 허용공차 내로 조율하도록 반복될 수 있다. 
블록(715)에서, 트레이닝 로직은 메모리 PHY와 DRAM 간의 판독/기록 데이터 경로에 기초하여 데이터 아이 컨투어의 1차원 시간 경계부를 결정하도록 판독/기록 페이즈 트레이닝을 수행한다.   따라서, 트레이닝 로직의 일부 실시예는 DRAM 내 어드레스에 트레이닝 시퀀스를 기록하기 위한, 그리고, 데이터 아이 컨투어의 1차원 시간 경계부를 결정하기 위해, 서로 다른 지연으로 DRAM의 어드레싱된 위치로부터 트레이닝 시퀀스를 루프-판독하기 위한, 일련의 명령을 송신할 수 있다.   예를 들어, 컨트롤러(215)로부터의 시그널링에 응답하여, ACSM(220)은 PPGC(225)에 의해 발생되는 하나 이상의 시퀀스를 DRAM(210) 내 하나 이상의 어드레스에 기록하기 위한 명령을 발급할 수 있다.   ACSM(220)은 그 후, 서로 다른 지연 값으로 루프되는 DRAM(210) 내 어드레스에 일련의 판독 명령을 발급할 수 있다.   명령 시퀀스의 일부 실시예는 여기서 논의되는 바와 같이, 레지스터(222) 내 명령어 워드로부터 판독되는 정보에 기초하여 ACSM(220)에 의해 발생될 수 있다.   DTSM(240)은 그 후, 루프 판독 명령 각각에 대한 수신 시퀀스를 제공된 트레이닝 시퀀스에 비교하여, 데이터 아이 컨투어의 좌측 에지 및 우측 에지를 결정할 수 있다.   DTSM(240)은 그 후, 좌측 에지와 우측 에지 사이의 중점과 같은 데이터 아이 컨투어 내 지정된 위치에 대응하도록 수신기(255)의 타이밍 파라미터, 가령, 위상을 조율하도록 타이밍/전압 제어 로직(280)에 지시할 수 있다.  
블록(720)에서, 트레이닝 로직은 메모리 PHY와 DRAM 간의 판독/기록 데이터 경로에 기초하여 데이터 아이 컨투어의 전압 레벨을 결정하도록 2차원(2D) 판독/기록 페이즈 트레이닝을 수행한다.   따라서 트레이닝 로직의 일부 실시예는 DRAM으로부터/에 트레이닝 시퀀스를 판독/기록하도록 일련의 판독/기록 명령을 송신할 수 있다.   일련의 판독/기록 명령은 데이터 아이 컨투어의 전압 레벨을 결정하기 위해 서로 다른 타이밍 지연 및 서로 다른 전압 오프셋을 이용하여 수행될 수 있다.   예를 들어, 컨트롤러(215)로부터의 시그널링에 응답하여, ACSM(220)은 PPGC(225)에 의해 발생되는 하나 이상의 시퀀스를, 초기 타이밍 지연을 이용하여, DRAM(210) 내 하나 이상의 어드레스에 기록하기 위한 명령을 발급할 수 있다.   ACSM(220)은 그 후, DRAM(210) 내 어드레스에 일련의 루프 판독 명령을 발급할 수 있다.   판독/기록 명령은 수신기(255) 또는 드라이버(260, 265)에 서로 다른 값의 전압 오프셋 제공과 동시에 발급될 수 있다.   명령 시퀀스의 일부 실시예는 여기서 논의되는 바와 같이, 레지스터(222) 내 명령어 워드로부터 판독되는 정보에 기초하여 ACSM(220)에 의해 발생될 수 있다.   DTSM(240)은 그 후, 루프 판독 명령 각각에 대한 수신 시퀀스를 제공된 트레이닝 시퀀스에 비교하여, 초기 타이밍 지연에 대한, 데이터 아이 컨투어의 좌측 에지 및 우측 에지 간의 전압 레벨을 결정할 수 있다.   타이밍 지연은 변경될 수 있고(가령, 증분 또는 감분), 전압 레벨 결정 프로세스는 반복될 수 있다.   이 프로세스는 소정 범위의 타이밍 지연 및 전압 레벨에 대해 2차원 데이터 아이 컨투어를 결정하도록 반복될 수 있다.   일부 실시예는 대신에, 전압 레벨을 반복적으로 선택하고, 선택된 전압 레벨에 대해 타이밍 지연을 루프화함으로써, 2차원 데이터 아이 컨투어를 결정할 수 있다.    
DTSM(240)은 최적의 전압 레벨 및 타이밍 지연을 제공하는 데이터 아이 컨투어 내 위치에 대응하도록, 수신기(255) 또는 드라이버(260, 265)의 타이밍 지연 및 전압 오프셋을 조율하도록 타이밍/전압 제어 로직(280)에 지시할 수 있다.   타이밍 지연 또는 전압 오프셋에 대한 조정은, 샘플링된 트레이닝 데이터 내 정확한 샘플 및 부정확한 샘플의 수에 기초하여 결정될 수 있다.   DTSM(240)의 일부 실시예는 샘플링된 트레이닝 데이터 내 부정확한 샘플에 대한 정확한 샘플의 지정된 비에 기초하여, 최적의 타이밍 지연 및 전압 오프셋을 결정할 수 있다.   예를 들어, DTSM(240)은 메모리 PHY(205)에 의해 수신되는 부정확한 샘플의 수에 대한 정확한 샘플의 수의 비가 지정된 비 이하일 때까지 타이밍 지연 및 전압 오프셋을 조율할 수 있다.   DTSM(240)의 일부 실시예는 지정된 비를 이용하여, 더 최적의 트레이닝 위치를 결정할 수 있다는 기대와 함께, 데이터 아이 컨투어의 형상을 변경할 수 있다.   예를 들어, 2D 아이 컨투어는 지정된 비에 기초하여 팽창 또는 수축될 수 있다.   2-D 데이터 아이 컨투어의 형상에 대한 다른 변경 역시 가능하다. 
일부 실시예에서, 앞서 설명된 장치 및 기술은 도 1-7을 참조하여 앞서 설명된 메모리 PHY와 같은, (집적 회로 패키지 또는 마이크로칩으로도 불리는) 하나 이상의 집적 회로(IC) 소자를 포함하는 시스템에서 구현된다.   전자 설계 자동화(EDA) 및 컴퓨터 보조 설계(CAD) 소프트웨어 툴이 이러한 IC 소자의 설계 및 제조에 사용될 수 있다.  이러한 설계 툴은 통상적으로 하나 이상의 소프트웨어 프로그램으로 나타난다.  이러한 하나 이상의 소프트웨어 프로그램은 회로 제조를 위한 제조 시스템을 채택 또는 설계하기 위한 프로세스의 적어도 일부분을 수행하도록 하나 이상의 IC 소자의 회로를 나타내는 코드로 작동하도록 컴퓨터 시스템을 조작시키는, 컴퓨터 시스템에 의해 실행가능한 코드를 포함한다.  이 코드는 명령어, 데이터, 또는 명령어 및 데이터의 조합을 포함할 수 있다.  설계 툴 또는 제조 툴을 나타내는 소프트웨어 명령어는 통상적으로, 컴퓨팅 시스템에 액세스가능한 컴퓨터 판독가능 저장 매체에 저장된다.  마찬가지로, IC 소자의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드가, 동일한 컴퓨터 판독가능 저장 매체에/로부터 또는 서로 다른 컴퓨터 판독가능 저장 매체에/로부터 저장/액세스될 수 있다.  
컴퓨터 판독가능 저장 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하도록 사용 중 컴퓨터 시스템에 의해 액세스가능한 임의의 저장 매체 또는 저장 매체들의 조합을 포함할 수 있다.  이러한 저장 매체는 광학 매체(가령, 컴팩트 디스크(CD), 디지털 다용도 디스크(DVD), 블루-레이 디스크), 자기 매체(가령, 플라피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(가령, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(가령, 읽기-전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로일렉트로미캐니컬 시스템(MEMS)-기반 저장 매체를 포함할 수 있지만, 이에 제한되지 않는다.  컴퓨터 판독가능 저장 매체는 컴퓨팅 시스템에 내장될 수 있고(가령, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착될 수 있으며(가령, 자기 하드 드라이브), 컴퓨팅 시스템에 제거가능하게 부착될 수 있고(가령, 광학 디스크 또는 범용 시리얼 버스(USB)-기반 플래시 메모리), 또는 유선 또는 무선망을 통해 컴퓨터 시스템에 연결될 수 있다(가령, 네트워크 액세스가능 저장 매체(NAS)). 
도 8은 일부 실시예에 따른 하나 이상의 형태를 구현하는 IC 소자의 설계 및 제조를 위한 일례의 방법(800)을 나타내는 흐름도다.   앞서 언급한 바와 같이, 다음 프로세스들 각각에 대해 발생되는 코드가, 대응 설계 툴 또는 제조 툴에 의한 액세스 및 이용을 위해 비-일시적 컴퓨터 판독가능 저장 매체에 저장 또는 포함된다. 
블록(802)에서, IC 소자의 기능적 규격이 발생된다.  (종종 마이크로아키텍처 규격(MAS)이라고 불리는) 기능 규격은 C, C++, SystemC, Simulink, 또는 MATLAB을 포함하는 다양한 프로그래밍 언어 또는 모델링 언어 중 임의의 언어에 의해 표현될 수 있다.  
블록(804)에서, IC 소자의 하드웨어를 나타내는 하드웨어 설명 코드를 발생시키는데 기능 규격이 사용된다.  일부 실시예에서, 하드웨어 디스크립션 코드가 적어도 하나의 하드웨어 디스크립션 언어(HDL)를 이용하여 표현되고, 이는 IC 소자의 회로의 공식 설명 및 설계를 위한 다양한 컴퓨터 언어, 규격 언어, 또는 모델링 언어 중 임의의 것을 포함한다.  발생되는 HDL 코드는 통상적으로, IC 소자의 회로의 작동, 회로의 설계 및 조직, 시뮬레이션을 통해 IC 소자의 정확한 작동을 검증하기 위한 검사를 나타낸다.  HDL의 예는 아날로그 HDL (AHDL), 베리로그 HDL, 시스템베리로그 HDL, 및 VHDL을 포함한다.  동기화된 디지털 회로를 구현하는 IC 소자의 경우에, 하드웨어 디스크립터 코드는 동기식 디지털 회로의 작동의 추상적 표현을 제공하기 위해 레지스터 트랜스퍼 레벨(RTL) 코드를 포함할 수 있다.  다른 유형의 회로의 경우에, 하드웨어 디스크립터 코드는 회로 작동의 추상적 표현을 제공하기 위해 거동-레벨 코드를 포함할 수 있다.  하드웨어 디스크립션 코드에 의해 표현되는 HDL 모델은 통상적으로, 설계 검증 통과를 위한 한 라운드 이상의 시뮬레이션 및 디버깅을 거친다.  
하드웨어 디스크립션 코드에 의해 표현되는 설계 검증 후, 블록(806)에서, 합성 툴을 이용하여, IC 소자의 회로의 초기 물리적 구현을 표현 또는 형성하는 코드를 발생시키도록 하드웨어 디스크립션 코드를 합성한다.  일부 실시예에서, 합성 툴은 회로 소자 인스턴스(가령, 게이트, 트랜지스터, 저항기, 커패시터, 인덕터, 다이오드, 등)들과, 회로 소자 인스턴스들 간의 네트 또는 연결을 포함하는 하나 이상의 네트리스트를 발생시킨다.  대안으로서, 네트리스트의 전부 또는 일부가 합성 툴 이용없이 수동으로 발생될 수 있다.  하드웨어 디스크립션 코드와 마찬가지로, 네트리스트는 하나 이상의 네트리스트의 최종 세트 발생 전에 하나 이상의 검사 및 검증 프로세스를 거칠 수 있다.  
대안으로서, 도식적 에디터 툴을 이용하여 IC 소자의 회로의 도식을 초안할 수 있고, 그 후 도식적 캡처 툴을 이용하여 결과적인 회로도를 캡처하고 회로도의 구성요소 및 연결성을 나타내는 (컴퓨터 판독가능 매체 상에 저장된) 하나 이상의 네트리스트를 발생시킬 수 있다.  캡처된 회로도는 그 후 검사 및 검증을 위한 한 라운드 이상의 시뮬레이션을 거칠 수 있다.   
블록(808)에서, 하나 이상의 EDA 툴은 블록(806)에서 생성되는 네트리스트를 이용하여, IC 소자의 회로의 물리 레이아웃을 나타내는 코드를 발생시킬 수 있다.  이 프로세스는 예를 들어, IC 소자의 회로의 각각의 요소의 위치를 결정 또는 고정시키도록 네트리스트를 이용하는 배치 툴을 포함할 수 있다.  더욱이, 라우팅 툴이, 네트리스트에 따라 회로 요소들을 연결시키는데 필요한 와이어를 추가 및 라우팅하기 위해 상기 배치 프로세스 상에 구축된다.  결과적인 코드는 IC 소자의 3차원 모델을 나타낸다.  코드는, 예를 들어, 그래픽 데이터베이스 시스템 II(GDSII) 포맷과 같은,  데이터베이스 파일 포맷으로 나타날 수 있다.  이러한 포맷의 데이터는 통상적으로, 기하학적 형상, 텍스트 라벨, 및 계층 형태의 회로 레이아웃에 관한 기타 정보를 나타낸다.   
블록(810)에서, 물리 레이아웃 코드(가령, GDSII 코드)가 제조 설비에 제공되고, 이 설비는 물리 레이아웃 코드를 이용하여 IC 소자 제조를 위한 제조 설비의 제조 툴을 (마스크 작업을 통해) 구성 또는 적응시킬 수 있다.  즉, 물리 레이아웃 코드는 하나 이상의 컴퓨터 시스템에 프로그래밍될 수 있고, 이는 그 후 제조 설비의 툴의 작동을, 또는, 그 안에서 수행되는 제조 작동을, 전체적으로 또는 부분적으로, 제어할 수 있다. 
일부 실시예에서, 앞서 설명된 기술들 중 소정 형태가, 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다.   소프트웨어는 비-일시적 컴퓨터 판독가능 저장 매체 상에 저장되는 또는 유형으로 포함되는 한 세트 이상의 실행가능 명령어를 포함한다.   소프트웨어는, 하나 이상의 프로세서에 의해 실행될 때, 앞서 설명된 기술들 중 하나 이상의 형태를 수행하도록 하나 이상의 프로세서를 조작하는 명령어 및 소정 데이터를 포함할 수 있다.   비-일시적 컴퓨터 판독가능 저장 매체는, 예를 들어, 자기 또는 광학 디스크 저장 장치, 고상 저장 장치, 가령, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 장치, 등을 포함할 수 있다.   비-일시적 컴퓨터 판독가능 저장 매체 상에 저장되는 실행가능 명령어는, 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는, 하나 이상의 프로세서에 의해 해석 또는 실행될 수 있는 기타 명령어 포맷일 수 있다.  
포괄적 설명에서 앞서 설명된 모든 활동 또는 요소들이 요구되는 것은 아니며, 특정 활동 또는 장치의 일부분이 요구되지 않을 수 있으며, 앞서 설명된 사항에 추가하여 하나 이상의 추가적인 활동이 수행되거나 요소들이 포함될 수 있다.   더욱이, 활동이 나열되는 순서가, 꼭 활동들이 수행되는 순서가 아닐 수 있다.  또한, 구체적 실시예를 참조하여 개념을 설명하였다.   그러나, 당 업자는 아래 청구범위에서 제시되는 본 발명의 범위로부터 벗어나지 않으면서 다양한 변형 및 변화가 이루어질 수 있음을 이해할 수 있을 것이다.   따라서, 명세서 및 도면은 제한적 측면보다는 예시적 측면으로 간주되어야 하고, 이러한 모든 변형예는 본 발명의 범위 내에 포함되도록 구성된다. 
이점, 기타 장점, 문제점에 대한 해법이, 구체적 실시예와 관련하여 앞서 설명되었다.   그러나, 이점, 장점, 문제점에 대한 해법, 그리고, 어떤 이점, 장점, 또는 해법을 발생시키거나 두드러지게 할 수 있는 임의의 특징들이, 청구범위 전체 또는 일부의 핵심적인, 또는, 필수적인, 또는 본질적인 특징으로 간주되어서는 안된다.  더욱이, 앞서 개시된 특정 실시예들은 예시적인 것에 불과하며, 개시되는 주제는 여기서의 설명의 이점을 가진, 당 업자에게 명백한, 다르지만 동등한 방식으로 변형 및 실시될 수 있다.   아래 청구범위에서 설명되는 것과는 다른, 여기서 도시되는 구조 또는 설계의 세부사항에 어떤 제한사항도 의도하지 않는다.   따라서, 앞서 개시된 특정 실시예는 변경 또는 변형될 수 있고, 이러한 모든 변형들이 개시되는 주제의 범위 내에 있다고 간주된다.   따라서, 여기서 추구되는 보호 범위는 아래 청구항에 제시되는 바와 같다.

Claims (20)

  1. 장치에 있어서, 
    외부 메모리의 설계에 기초한 명령들에 대한 타이밍 요건들을 갖는 상기 외부 메모리에 연결하기 위한 메모리 물리 계층 인터페이스(PHY)와, 
    적어도 하나의 명령 및 적어도 하나의 프로그래머블 지연을 표시하는 적어도 하나의 명령어 워드를 저장하도록, 상기 메모리 PHY와 연관되어 구현되는 복수의 레지스터들 - 상기 적어도 하나의 프로그래머블 지연은 상기 외부 메모리의 타이밍 요건들에 기초하여 프로그래밍되고 그리고 상기 명령을 실행하기 전에 경과해야 하는 시간 간격이며 - 과, 그리고
    제 1 프로그래머블 트레이닝 엔진을 포함하고,
    상기 제 1 프로그래머블 트레이닝 엔진은,
    컨트롤러가 시작 비트를 기록하는 것에 응답하여 상기 적어도 하나의 명령어 워드를 판독하고,
    상기 적어도 하나의 명령어 워드에 기초하여, 상기 외부 메모리에 전달하기 위한 명령들의 고속 프로그래머블 트레이닝 시퀀스들을 발생시키고,
    상기 적어도 하나의 프로그래머블 지연에 기초하여 상기 명령들을 지연시키고,
    상기 명령들을 실행하고,
    상기 프로그래머블 트레이닝 시퀀스들에 응답하여 상기 외부 메모리에 의해 생성된 신호들을 수신하고,
    상기 수신된 신호들에 기초하여 상기 메모리 PHY의 판독/기록 파라미터들을 조정하고, 그리고
    상기 프로그래머블 트레이닝 시퀀스들이 종료될 것이라고 결정하는 것에 응답하여 상기 시작 비트를 설정해제(unset)하도록 상기 메모리 PHY에 구현되는, 장치.
  2. 제 1 항에 있어서, 
    상기 메모리 PHY와 연관되어 구현되는 메모리 위치 - 상기 컨트롤러가 상기 메모리 위치에 시작 비트를 기록함에 응답하여 상기 제 1 트레이닝 엔진이 상기 적어도 하나의 명령의 실행을 개시함 - 를 더 포함하는, 장치.
  3. 제 2 항에 있어서, 상기 제 1 트레이닝 엔진은 상기 적어도 하나의 명령에 기초하여 상기 적어도 하나의 지연을 결정하고, 상기 컨트롤러는 상기 복수의 레지스터에 상기 적어도 하나의 명령어 워드를 기록하는, 장치.
  4. 제 3 항에 있어서, 상기 적어도 하나의 명령은 제 1, 2, 3 명령을 포함하고, 상기 제 1 트레이닝 엔진은 제 1 명령을 실행하고, 제 1 명령 실행에 대해 제 1 지연 후 제 2 명령을 실행하며, 제 2 명령 실행에 대해 제 2 지연 후 제 3 명령을 실행하고, 상기 제 1 지연 및 제 2 지연의 합은 상기 제 1 명령 및 제 3 명령의 대기시간 요건을 충족시키는, 장치.
  5. 제 1 항에 있어서, 상기 적어도 하나의 명령어 워드는 상기 적어도 하나의 명령의 반복 수를 표시하는 적어도 하나의 명령 반복 카운트를 표시하는, 장치.
  6. 제 1 항에 있어서, 상기 적어도 하나의 명령어 워드는 외부 메모리 내 어드레스, 알고리즘형 어드레스 발생 제어, 외부 메모리 내 뱅크, 및 종료 비트 중 적어도 하나를 표시하는, 장치.
  7. 제 1 항에 있어서, 
    상기 메모리 PHY에 통합구성되는 컨트롤러 - 상기 컨트롤러는 시딩없는 트레이닝 알고리즘에 기초하여 외부 메모리와 통신하기 위해 메모리 PHY의 트레이닝을 제어함 - 를 더 포함하는, 장치. 
  8. 제 1 항에 있어서, 
    제 1 트레이닝 엔진에 의해 생성되는 제어 시그널링에 응답하여 외부 메모리에 전달하기 위한 트레이닝 시퀀스를 발생시키기 위한 제 2 트레이닝 엔진과, 
    외부 메모리로부터 수신된 시퀀스를, 상기 제 2 트레이닝 엔진에 의해 발생되는 트레이닝 시퀀스에 비교하기 위한 제 3 트레이닝 엔진을 더 포함하는, 장치.
  9. 방법에 있어서, 
    메모리 물리 계층 인터페이스(PHY)에서 구현되는 제 1 트레이닝 엔진에서, 컨트롤러가 시작 비트를 기록하는 것에 응답하여, 적어도 하나의 명령 및 적어도 하나의 프로그래머블 지연을 표시하는 적어도 하나의 명령어 워드를 판독하는 단계- 상기 적어도 하나의 프로그래머블 지연은 상기 외부 메모리의 타이밍 요건들에 기초하여 프로그래밍되고 그리고 상기 적어도 하나의 명령을 실행하기 전에 경과해야 하는 시간 간격이며 - 와;
    상기 제 1 트레이닝 엔진을 사용하여, 상기 외부 메모리에 전달하기 위한 상기 적어도 하나의 명령어 워드에 기초하여 명령들의 고속 프로그래머블 트레이닝 시퀀스들을 발생시키는 단계 - 상기 명령들은 상기 적어도 하나의 프로그래머블 지연에 기초하여 지연되고, 그리고 상기 적어도 하나의 명령은 제 1, 2, 3 명령을 포함하며,
    상기 제 1 명령을 실행하는 단계와, 
    상기 제 1 명령 실행에 대해 제 1 지연 후 제 2 명령을 실행하는 단계와,  
    상기 제 2 명령 실행에 대해 제 2 지연 후 제 3 명령을 실행하는 단계 - 상기 제 1 지연 및 제 2 지연의 합은 상기 제 1 명령 및 제 3 명령의 대기시간 요건을 충족시키며 - 와, 그리고
    상기 프로그래머블 트레이닝 시퀀스들이 종료될 것이라고 결정하는 것에 응답하여 상기 시작 비트를 설정해제하는 단계를 더 포함하며 - 와;
    명령들의 프로그래머블 트레이닝 시퀀스들에 응답하여 상기 외부 메모리에 의해 생성된 신호들을, 상기 제 1 트레이닝 엔진에서 수신하는 단계와; 그리고
    상기 수신된 신호들에 기초하여 상기 메모리 PHY의 판독/기록 파라미터들을, 상기 제 1 트레이닝 엔진에서 조정하는 단계를 포함하는, 방법.
  10. 제 9 항에 있어서, 
    상기 컨트롤러는 상기 시작 비트를 상기 메모리 PHY에 구현되는 메모리 위치에 기록하는 단계를 더 포함하는, 방법. 
  11. 제 9 항에 있어서, 
    상기 적어도 하나의 명령에 기초하여 상기 적어도 하나의 지연을 결정하는 단계와, 
    상기 적어도 하나의 명령어 워드를 복수의 레지스터에 기록하는 단계를 더 포함하는, 방법. 
  12. 삭제
  13. 제 9 항에 있어서, 상기 적어도 하나의 명령어 워드 내 적어도 하나의 명령 반복 카운트에 의해 표시되는 반복 횟수 동안 상기 적어도 하나의 명령을 실행하는 단계 - 상기 적어도 하나의 명령의 반복은 상기 적어도 하나의 지연만큼 지연됨 - 를 더 포함하는, 방법. 
  14. 제 9 항에 있어서, 상기 적어도 하나의 명령어 워드에 액세스하는 단계는, 외부 메모리 내 어드레스, 알고리즘형 어드레스 발생 패턴, 외부 메모리 내 뱅크, 및 종료 비트 중 적어도 하나를 표시하는 상기 적어도 하나의 명령어 워드에 액세스하는 단계를 포함하는, 방법. 
  15. 제 9 항에 있어서, 
    상기 적어도 하나의 명령어 워드 내 지정된 값의 종료 비트를 검출함에 응답하여, 상기 적어도 하나의 명령의 실행을 종료하는 단계를 더 포함하는, 방법. 
  16. 제 9 항에 있어서, 
    상기 메모리 PHY에 통합구성되는 컨트롤러에서, 시딩없는 트레이닝 알고리즘에 기초하여 외부 메모리와 통신하기 위한 메모리 PHY의 트레이닝에 대한 제어 시그널링을 발생시키는 단계를 더 포함하는, 방법. 
  17. 제 16 항에 있어서, 
    상기 제 1 트레이닝 엔진으로부터의 제 2 제어 시그널링을 제 2 트레이닝 엔진에 제공하는 단계 - 상기 제 2 트레이닝 엔진은 제 1 트레이닝 엔진으로부터의 제 2 제어 시그널링에 응답하여, 외부 메모리에 전달하기 위한 트레이닝 시퀀스를 발생시킴- 와, 
    제 1 트레이닝 엔진으로부터의 제 3 제어 시그널링을 제 3 트레이닝 엔진에 제공하는 단계 - 상기 제 3 트레이닝 엔진은 외부 메모리로부터 수신한 시퀀스를, 제 3 제어 시그널링에 응답하여 제 2 트레이닝 엔진에 의해 발생되는 트레이닝 시퀀스에 비교함 - 를 더 포함하는, 방법.
  18. 실행 가능한 명령어들의 세트를 구현하는 비 일시적인 컴퓨터 판독 가능 저장 매체로서, 상기 실행 가능한 명령어들의 세트는 적어도 하나의 프로세서들로 하여금,
    컨트롤러가 시작 비트를 기록하는 것에 응답하여, 적어도 하나의 명령 및 적어도 하나의 프로그래머블 지연을 표시하는 적어도 하나의 명령어 워드를 판독하고, 상기 적어도 하나의 프로그래머블 지연은 외부 메모리의 타이밍 요건들에 기초하여 프로그래밍되고 그리고 상기 적어도 하나의 명령을 실행하기 전에 경과해야 하는 시간 간격이며,
    메모리 물리 계층 인터페이스(PHY)에서 구현되는 제 1 트레이닝 엔진을 사용하여, 상기 외부 메모리에 전달하기 위한 상기 적어도 하나의 명령어 워드에 기초하여 명령들의 고속 프로그래머블 트레이닝 시퀀스들을 발생시키고, 상기 명령들은 상기 적어도 하나의 프로그래머블 지연에 기초하여 지연되고, 그리고
    상기 적어도 하나의 프로그래머블 지연에 기초하여 상기 명령들을 지연시키고,
    상기 명령들을 실행하고,
    상기 프로그래머블 트레이닝 시퀀스들이 종료될 것이라고 결정하는 것에 응답하여 상기 시작 비트를 설정해제하고,
    상기 프로그래머블 트레이닝 시퀀스들에 응답하여 상기 외부 메모리에 의해 생성된 신호들을, 상기 제 1 트레이닝 엔진에서 수신하고,
    상기 수신된 신호들에 기초하여 상기 메모리 PHY의 판독/기록 파라미터들을 조정하도록 하는, 비 일시적인 컴퓨터 판독 가능 저장 매체.
  19. 제 18 항에 있어서,
    상기 적어도 하나의 명령에 기초하여 상기 적어도 하나의 지연을 결정하고 그리고 상기 적어도 하나의 명령어 워드를 복수의 레지스터에 기록하기 위해 상기 적어도 하나의 프로세서를 조작하기 위한 실행 가능한 명령어들의 세트를 구현하는 것을 더 포함하는, 비 일시적인 컴퓨터 판독 가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 시작 비트를 상기 메모리 PHY에 구현되는 저장 위치에 기록하고 그리고 상기 적어도 하나의 명령어 워드의 종료 비트의 미리 결정된 값을 검출하는 것에 응답하여 상기 적어도 하나의 명령의 실행을 종료하도록 상기 적어도 하나의 프로세서를 조작하는 실행 가능한 명령어들의 세트를 구현하는 것을 더 포함하는, 비 일시적인 컴퓨터 판독 가능 저장 매체.
KR1020167026427A 2014-06-27 2015-06-23 프로그래머블 지연을 가진 동적 랜덤 액세스 메모리(dram) 명령을 생성하기 위한 메모리 물리 계층 인터페이스 로직 KR102011092B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/318,065 2014-06-27
US14/318,065 US10275386B2 (en) 2014-06-27 2014-06-27 Memory physical layer interface logic for generating dynamic random access memory (DRAM) commands with programmable delays
PCT/US2015/037172 WO2015200318A1 (en) 2014-06-27 2015-06-23 Memory physical layer interface logic for generating dynamic random access memory (dram) commands with programmable delays

Publications (2)

Publication Number Publication Date
KR20170027696A KR20170027696A (ko) 2017-03-10
KR102011092B1 true KR102011092B1 (ko) 2019-08-14

Family

ID=54930682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167026427A KR102011092B1 (ko) 2014-06-27 2015-06-23 프로그래머블 지연을 가진 동적 랜덤 액세스 메모리(dram) 명령을 생성하기 위한 메모리 물리 계층 인터페이스 로직

Country Status (6)

Country Link
US (1) US10275386B2 (ko)
EP (1) EP3105761B1 (ko)
JP (1) JP6741585B2 (ko)
KR (1) KR102011092B1 (ko)
CN (1) CN106104698B (ko)
WO (1) WO2015200318A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9767868B2 (en) * 2014-01-24 2017-09-19 Qualcomm Incorporated Providing memory training of dynamic random access memory (DRAM) systems using port-to-port loopbacks, and related methods, systems, and apparatuses
US10613995B2 (en) * 2015-03-16 2020-04-07 Rambus Inc. Training and operations with a double buffered memory topology
US10503523B2 (en) * 2017-06-30 2019-12-10 Intel Corporation Technologies to improve system boot performance and reliability
KR102368966B1 (ko) * 2017-10-23 2022-03-03 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치들을 포함하는 스토리지 장치, 그리고 제어기와 불휘발성 메모리 장치들 사이에서 데이터 입력 및 출력 라인들을 트레이닝하는 방법
GB2572665B (en) * 2018-04-05 2020-07-08 Imagination Tech Ltd Verification of hardware design for data transformation pipeline
CN109840878B (zh) * 2018-12-12 2023-05-23 中国航空工业集团公司西安航空计算技术研究所 一种基于SystemC的面向GPU参数管理方法
KR20200100951A (ko) * 2019-02-19 2020-08-27 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 데이터 처리 시스템
US11093244B2 (en) * 2019-08-28 2021-08-17 Micron Technology, Inc. Command delay
US11567557B2 (en) * 2019-12-30 2023-01-31 Advanced Micro Devices, Inc. Electrical power operating states for core logic in a memory physical layer
US11789620B2 (en) 2021-12-23 2023-10-17 Advanced Micro Devices, Inc. Dynamic random-access memory (DRAM) phase training update
JP2024510355A (ja) * 2022-02-24 2024-03-07 チャンシン メモリー テクノロジーズ インコーポレイテッド データ伝送回路、データ伝送方法及びメモリ
TWI803211B (zh) * 2022-02-25 2023-05-21 南亞科技股份有限公司 隨機指令產生系統及隨機指令產生方法
US11693600B1 (en) * 2022-02-28 2023-07-04 Dell Products L.P. Latency-based detection of storage volume type
CN115344215A (zh) * 2022-08-29 2022-11-15 深圳市紫光同创电子有限公司 存储器训练方法及***
CN117894354A (zh) * 2022-10-08 2024-04-16 长鑫存储技术有限公司 一种延时控制电路、方法和存储器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100711A1 (en) 2008-10-17 2010-04-22 Advanced Micro Devices, Inc. Data processor device and methods thereof
US20120307577A1 (en) 2011-05-30 2012-12-06 Srinivas Sriadibhatla System and method for gate training in a memory system
US20130044796A1 (en) 2011-08-16 2013-02-21 Aniruddha Haldar Hardware-based data eye training for high speed links
US20140114887A1 (en) 2012-10-22 2014-04-24 Venkatraman Iyer High performance interconnect physical layer

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940876A (en) * 1997-04-02 1999-08-17 Advanced Micro Devices, Inc. Stride instruction for fetching data separated by a stride amount
TW559694B (en) * 2002-06-21 2003-11-01 Via Tech Inc Method and system of calibrating the control delay time
US8166221B2 (en) 2004-03-17 2012-04-24 Super Talent Electronics, Inc. Low-power USB superspeed device with 8-bit payload and 9-bit frame NRZI encoding for replacing 8/10-bit encoding
US7366809B2 (en) * 2004-04-12 2008-04-29 Texas Instruments Incorporated Pipelined stop, start, address byte, and data byte technique and circuit for I2C logic system
JP2006260071A (ja) 2005-03-16 2006-09-28 Oki Data Corp メモリ制御装置および情報処理装置
US8386722B1 (en) * 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US7336551B2 (en) * 2005-11-30 2008-02-26 Intel Corporation Semiconductor memory devices and systems, and methods of using having reduced timers and registers
US7647467B1 (en) 2006-05-25 2010-01-12 Nvidia Corporation Tuning DRAM I/O parameters on the fly
US7865660B2 (en) * 2007-04-16 2011-01-04 Montage Technology Group Ltd. Calibration of read/write memory access via advanced memory buffer
US7941713B2 (en) * 2008-08-27 2011-05-10 Taiwan Semiconductor Manufacturing Company, Ltd. Programmable self-test for random access memories
US8819474B2 (en) * 2009-04-03 2014-08-26 Intel Corporation Active training of memory command timing
US8356155B2 (en) 2010-09-13 2013-01-15 Advanced Micro Devices, Inc. Dynamic RAM Phy interface with configurable power states
US8645743B2 (en) 2010-11-22 2014-02-04 Apple Inc. Mechanism for an efficient DLL training protocol during a frequency change
KR101217937B1 (ko) 2010-12-30 2013-01-02 (주)인디링스 고속의 외부 메모리 인터페이스를 위한 적응적 디지털 phy
US8760945B2 (en) * 2011-03-28 2014-06-24 Samsung Electronics Co., Ltd. Memory devices, systems and methods employing command/address calibration
US20120284576A1 (en) 2011-05-06 2012-11-08 Housty Oswin E Hardware stimulus engine for memory receive and transmit signals
US8634221B2 (en) 2011-11-01 2014-01-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory system that utilizes a wide input/output (I/O) interface to interface memory storage with an interposer and that utilizes a SerDes interface to interface a memory controller with an integrated circuit, and a method
US9330031B2 (en) * 2011-12-09 2016-05-03 Nvidia Corporation System and method for calibration of serial links using a serial-to-parallel loopback
US8850155B2 (en) 2011-12-19 2014-09-30 Advanced Micro Devices, Inc. DDR 2D Vref training
US20130318285A1 (en) 2012-05-23 2013-11-28 Violin Memory Inc Flash memory controller
CN103505964A (zh) 2012-06-26 2014-01-15 维克斯滤清器有限责任公司 过滤器组件及其组装方法
US8856573B2 (en) 2012-06-27 2014-10-07 Intel Corporation Setting a number (N) of fast training sequences (FTS) automatically to an optimal value
KR101385605B1 (ko) 2012-07-16 2014-04-16 옵티시스 주식회사 영상 매트릭스 장치
US8842480B2 (en) 2012-08-08 2014-09-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Automated control of opening and closing of synchronous dynamic random access memory rows
KR101958855B1 (ko) * 2012-08-31 2019-03-18 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작방법
EP2896150B1 (en) 2012-09-17 2019-11-06 Avago Technologies International Sales Pte. Limited Time to time-frequency mapping and demapping for ethernet passive optical network over coax (epoc)

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100711A1 (en) 2008-10-17 2010-04-22 Advanced Micro Devices, Inc. Data processor device and methods thereof
US20120307577A1 (en) 2011-05-30 2012-12-06 Srinivas Sriadibhatla System and method for gate training in a memory system
US20130044796A1 (en) 2011-08-16 2013-02-21 Aniruddha Haldar Hardware-based data eye training for high speed links
US20140114887A1 (en) 2012-10-22 2014-04-24 Venkatraman Iyer High performance interconnect physical layer

Also Published As

Publication number Publication date
CN106104698A (zh) 2016-11-09
US10275386B2 (en) 2019-04-30
JP6741585B2 (ja) 2020-08-19
EP3105761B1 (en) 2021-04-21
KR20170027696A (ko) 2017-03-10
EP3105761A1 (en) 2016-12-21
US20150378956A1 (en) 2015-12-31
CN106104698B (zh) 2021-04-20
WO2015200318A1 (en) 2015-12-30
JP2017523489A (ja) 2017-08-17
EP3105761A4 (en) 2017-09-27

Similar Documents

Publication Publication Date Title
KR102011092B1 (ko) 프로그래머블 지연을 가진 동적 랜덤 액세스 메모리(dram) 명령을 생성하기 위한 메모리 물리 계층 인터페이스 로직
KR102222420B1 (ko) 메모리 물리 계층 인터페이스를 훈련하기 위한 통합 제어기
CN105229619B (zh) 具有指定区域存储器访问调度的存储器***
US11513689B2 (en) Dedicated interface for coupling flash memory and dynamic random access memory
US9607120B2 (en) Implementing system irritator accelerator FPGA unit (AFU) residing behind a coherent attached processors interface (CAPI) unit
JP5034916B2 (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
US9183125B2 (en) DDR receiver enable cycle training
US20110035204A1 (en) Layered Modeling for High-Level Synthesis of Electronic Designs
US10430215B1 (en) Method and system to transfer data between hardware emulator and host workstation
TW201331775A (zh) 用於硬體描述語言環境之全域時鐘處理常式物件
US11430496B2 (en) Phase-aware DDR command dynamic scheduling
JP4262174B2 (ja) シミュレーション時間取得方法
CN107247577B (zh) 一种配置soc ip核的方法、装置及***
US10007489B1 (en) Automated method identifying physical memories within a core or macro integrated circuit design
JP2007207119A (ja) 表示装置及び表示方法
JP2015099570A (ja) コントローラ、記憶装置、および制御方法
Ikodinovic Methodology for Cycle-Accurate DRAM Performance Analysis
Mohan Design and Verification of a DDR2 Memory Controller for System on Chip Education.
Dedeepya et al. Memory Controller using Functional Coverage Driven Functional Verification using SV and UVM

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant