KR20190059325A - 플랫폼 마지닝 및 디버그를 위한 소프트웨어 모드 레지스터 액세스 - Google Patents

플랫폼 마지닝 및 디버그를 위한 소프트웨어 모드 레지스터 액세스 Download PDF

Info

Publication number
KR20190059325A
KR20190059325A KR1020197013589A KR20197013589A KR20190059325A KR 20190059325 A KR20190059325 A KR 20190059325A KR 1020197013589 A KR1020197013589 A KR 1020197013589A KR 20197013589 A KR20197013589 A KR 20197013589A KR 20190059325 A KR20190059325 A KR 20190059325A
Authority
KR
South Korea
Prior art keywords
memory
mode register
data rate
rank
double data
Prior art date
Application number
KR1020197013589A
Other languages
English (en)
Other versions
KR102444201B1 (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 KR20190059325A publication Critical patent/KR20190059325A/ko
Application granted granted Critical
Publication of KR102444201B1 publication Critical patent/KR102444201B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Abstract

데이터 처리 시스템은 메모리 채널 및 상기 메모리 채널에 결합된 데이터 프로세서를 포함한다. 상기 데이터 프로세서는, 상기 메모리 채널에 결합되고 더블 데이터 레이트 메모리의 적어도 하나의 랭크에 액세스하도록 적응된 메모리 제어기를 포함한다. 상기 메모리 제어기는 수신된 메모리 액세스 요청을 저장하기 위한 커맨드 큐, 및 상기 커맨드 큐로부터 메모리 액세스 요청을 선택하고, 상기 메모리 액세스 요청을 상기 메모리 채널에 제공하기 위한 아비터를 포함한다. 상기 메모리 액세스 요청은 미리 결정된 기준에 기초하여 선택되고, 모드 레지스터 액세스 요청에 응답하여 계류 중인 동작을 정지시킨다. 추가적으로, 상기 메모리 제어기는 상기 모드 레지스터 액세스 요청에 응답하여 메모리 버스에 적어도 하나의 대응하는 모드 레지스터 설정 커맨드를 생성하는 모드 레지스터 액세스 제어기를 포함한다. 이후, 상기 메모리 제어기는 상기 메모리 버스의 제어를 상기 아비터로 넘긴다.

Description

플랫폼 마지닝 및 디버그를 위한 소프트웨어 모드 레지스터 액세스
본 발명은 데이터 처리 시스템에 관한 발명이다.
서브-미크론 특징을 갖는 다수의 커패시터 어레이로 형성된 동적 랜덤 액세스 메모리(Dynamic Random Access Memory: DRAM) 칩이 컴퓨터 시스템에서 주 메모리에 이용된다. DRAM은 상대적으로 저렴하고 고밀도이기 때문에 장치당 대량의 DRAM을 통합할 수 있다. 오늘날 시판되는 대부분의 DRAM 칩은 JEDEC(Joint Electron Devices Engineering Council)에서 공표한 다양한 더블 데이터 레이트(Double Data Rate: DDR) DRAM 표준과 호환된다.
일부 DDR 메모리 칩은 온도 및 전압과 같은 동작 상태의 변화에 대해 특정 동작 파라미터를 조절하도록 주기적으로 재교정될 수 있다. 예를 들어, DDR3 및 DDR4는 "ZQ 교정"이라고 알려진 출력 버퍼 임피던스의 주기적인 재교정을 허용하고, DDR4는 "VREFDQ 트레이닝"이라고 알려진 주기적인 내부 참조 전압 재교정을 허용한다. 더욱이, DRAM 칩이 듀얼 인라인 메모리 모듈(dual inline memory module: DIMM)에 포함될 때, 이 모듈은 재교정될 필요가 있는 타이밍 파라미터를 자체적으로 갖는 데이터 버퍼를 선택적으로 포함할 수 있다.
예를 들어, DDR4 DRAM 칩에서, VREFDQ 값은 초기화 동안 호스트 DDR 제어기에 의해 구성되고 동작 동안 재교정될 수 있다. VREFDQ 값은 특정 모드 레지스터 설정 커맨드(mode register set command)를 통해 구성된다. VREFDQ는 보드 가열, 전력 공급 드리프트 등과 같은 상태 변화에 따라 동작 동안 재트레이닝되는 것이 바람직하다. 재트레이닝은 분열을 야기할 수 있으며, 기존 소프트웨어 메커니즘을 통해 수행될 때 성능이 저하될 수 있다. 추가적으로, DDR4 DRAM 칩 상의 VREFDQ 값을 업데이트하려면, JEDEC 사양은 다수의 모드 레지스터 설정 커맨드의 특정 시퀀스를 요구하며, 시퀀스 동안 다른 DRAM 커맨드가 개입하는 것을 허용하지 않는다. 현재 JEDEC 표준은 예를 들어 하드웨어 디버그 도구(Hardware Debug Tool)와 같은 스크립팅 도구를 통해 단일 테스트 모드 레지스터 커맨드를 이용하는 것을 어렵게 한다.
일 형태로 이하에서 설명된 바와 같이, 데이터 처리 시스템은 메모리 채널 및 상기 메모리 채널에 결합된 데이터 프로세서를 포함한다. 상기 데이터 프로세서는 상기 메모리 채널에 결합된 메모리 제어기를 포함하고, 더블 데이터 레이트 메모리의 적어도 하나의 랭크(rank)에 액세스하도록 적응된다. 상기 메모리 제어기는 수신된 메모리 액세스 요청을 저장하기 위한 커맨드 큐(command queue), 및 상기 커맨드 큐로부터 메모리 액세스 요청을 선택하고 상기 메모리 액세스 요청을 상기 메모리 채널에 제공하는 아비터(arbiter)를 포함한다. 상기 메모리 액세스 요청은 미리 결정된 기준에 기초하여 및 계류 중인 동작을 정지(quiesce)시키는 모드 레지스터 액세스 요청에 응답하여 선택된다. 추가적으로, 상기 메모리 제어기는 상기 모드 레지스터 액세스 요청에 응답하여 메모리 버스에 적어도 하나의 대응하는 모드 레지스터 설정 커맨드를 생성하는 모드 레지스터 액세스 제어기를 포함한다. 이후, 상기 메모리 제어기는 상기 메모리 버스의 제어를 상기 아비터로 넘긴다.
다른 형태에서, 데이터 프로세서는 메모리 액세스 에이전트(memory accessing agent) 및 상기 메모리 액세스 에이전트에 결합된 메모리 제어기를 포함한다. 상기 메모리 제어기는 메모리 시스템에 결합되도록 적응되고, 수신된 메모리 액세스 요청을 저장하기 위한 커맨드 큐, 아비터, 및 모드 레지스터를 포함한다. 상기 아비터는 상기 커맨드 큐로부터 메모리 액세스 요청을 선택적으로 선택하고, 메모리 채널에 상기 메모리 액세스 요청을 제공하고, 상기 모드 레지스터 액세스 요청에 응답하여, 계류 중인 동작을 정지시키는 요청이 상기 메모리 채널에 제공된다. 상기 모드 레지스터 액세스 요청에 응답하여, 상기 모드 레지스터 액세스 제어기는 메모리 버스에 적어도 하나의 대응하는 모드 레지스터 설정 커맨드를 생성하고, 이후 상기 메모리 버스의 제어를 상기 아비터에게 넘긴다.
또 다른 형태에서, 모드 레지스터 액세스 제어기를 통해 메모리 시스템에서 더블 데이터 레이트 인터페이스를 마지닝(margining) 및 테스트하는 방법이 설명된다. 더블 데이터 레이트 동작을 생성하는 요청이 시스템 초기화 이후 시간에 수신된다. 랭크의 현재 및 계류 중인 더블 데이터 레이트 동작을 정지시키는 요청이 생성된다. 모드 레지스터 설정 커맨드 시퀀스가 메모리 버스에서 수신된다. 상기 모드 레지스터 커맨드 시퀀스의 수신에 응답하여, 제1 모드 레지스터 커맨드 시퀀스가 상기 랭크와 관련된 제1 파라미터의 제어를 얻기 위해 상기 랭크 내의 복수의 뱅크(bank)로 송신된다. 후속 모드 레지스터 커맨드 시퀀스가 상기 랭크와 관련된 상기 제1 파라미터를 업데이트하기 위해 상기 복수의 뱅크로 송신된다.
또한, 또 다른 형태에서, 모드 레지스터 액세스 제어기를 통해 메모리 시스템에서 더블 데이터 레이트 데이터 버퍼 인터페이스를 마지닝 및 테스트하는 방법이 설명된다. 더블 데이터 레이트 데이터 버퍼의 초기화에 후속하여 버퍼 제어 워드 기입 커맨드 시퀀스를 생성하는 요청이 초기화 이후 시간에 수신된다. 상기 아비터는 현재 및 계류 중인 더블 데이터 레이트 버퍼 동작을 정지시킨다. 버퍼 제어 워드 기입 커맨드 시퀀스는 전압 파라미터 및 데이터 버퍼 타이밍 파라미터 중 적어도 하나의 파라미터를 변경하도록 분배된다.
도 1은 일부 실시예에 따른 데이터 처리 시스템의 블록도;
도 2는 도 1의 데이터 처리 시스템에 사용하기에 적합한 가속 처리 유닛(accelerated processing unit: APU)의 블록도;
도 3은 일부 실시예에 따라 도 2의 APU에 사용하기에 적합한 메모리 제어기 및 관련 물리적 인터페이스(PHY)의 블록도;
도 4는 일부 실시예에 따라 도 2의 APU에 사용하기에 적합한 다른 메모리 제어기 및 관련 PHY의 블록도;
도 5는 일부 실시예에 따른 메모리 제어기의 블록도;
도 6은 일부 실시예에 따른 모드 레지스터 설정 기입 커맨드(write command)를 인에이블하기 위한 상태 전이의 상태도;
도 7은 일부 실시예에 따른 더블 데이터 레이트 데이터 버퍼 동작을 위한 상태 전이의 상태도;
도 8은 일부 실시예에 따라 도 5의 메모리 제어기에 의해 사용될 수 있는 더블 데이터 레이트 동작의 흐름도;
도 9는 일부 실시예에 따라 도 5의 메모리 제어기에 의해 사용될 수 있는 데이터 버퍼 제어 동작의 흐름도;
도 10은 일부 실시예에 따라 도 5의 메모리 제어기에 의해 사용될 수 있는 다목적 레지스터의 내용을 검색하는 흐름도; 및
도 11은 일부 실시예에 따라 입력 값의 범위에 응답하여 DRAM의 출력값을 그래픽으로 디스플레이하는 2차원 데이터 아이(data eye)를 도시하는 도면.
이하의 설명에서, 여러 도면에서 동일한 참조 부호는 유사하거나 동일한 항목을 나타내는데 사용된다. 달리 명시되지 않는 한, "결합된"이라는 단어 및 이와 관련된 동사 형태는 이 기술 분야에 알려진 수단에 의해 전기적으로 직접 연결되는 것과 간접 연결되는 것을 모두 포함하며, 달리 명시되지 않는 한, 직접 연결에 관한 임의의 설명은 적절한 형태로 전기적으로 간접 연결된 것을 사용하는 대안적인 실시예에도 적용된다.
도 1은 일부 실시예에 따른 데이터 처리 시스템(100)의 블록도를 도시한다. 데이터 처리 시스템(100)은 일반적으로 가속 처리 유닛(APU)의 형태의 데이터 프로세서(110), 메모리 시스템(120), 주변 장치 상호 연결 익스프레스(peripheral component interconnect express: PCIe) 시스템(150), 범용 직렬 버스(universal serial bus: USB) 시스템(160), 및 디스크 드라이브(170)를 포함한다. 데이터 프로세서(110)는 데이터 처리 시스템(100)의 중앙 처리 유닛(CPU)으로서 동작하며 현대 컴퓨터 시스템에 유용한 다양한 버스 및 인터페이스를 제공한다. 이 인터페이스는 두 개의 더블 데이터 레이트(DDRx) 메모리 채널, PCIe 링크에의 연결용 PCIe 루트 복합체(root complex), USB 네트워크에의 연결용 USB 제어기, 및 SATA(Serial Advanced Technology Attachment) 대용량 저장 장치에의 인터페이스를 포함한다.
메모리 시스템(120)은 메모리 채널(130) 및 메모리 채널(140)을 포함한다. 메모리 채널(130)은 이 예에서 별개의 랭크에 대응하는 대표적인 DIMM(dual inline memory module)(134, 136 및 138)을 포함하는, DDRx 버스(132)에 연결된 듀얼 인라인 메모리 모듈(DIMM) 세트를 포함한다. 마찬가지로, 메모리 채널(140)은 대표적인 DIMM(144, 146 및 148)을 포함하는, DDRx 버스(142)에 연결된 DIMM 세트를 포함한다.
PCIe 시스템(150)은 데이터 프로세서(110) 내의 PCIe 루트 복합체에 연결된 PCIe 스위치(152), PCIe 장치(154), PCIe 장치(156), 및 PCIe 장치(158)를 포함한다. PCIe 장치(156)는 시스템 기본 입력/출력 시스템(basic input/output system: BIOS) 메모리(157)에 연결된다. 시스템 BIOS 메모리(157)는 판독 전용 메모리(read-only memory: ROM), 플래시 전기적으로 소거 가능한 프로그래밍 가능한 ROM(flash electrically erasable programmable ROM)(플래시 EEPROM) 등과 같은 다양한 비 휘발성 메모리 유형 중 임의의 것일 수 있다.
USB 시스템(160)은 데이터 프로세서(110) 내의 USB 마스터에 연결된 USB 허브(hub)(162) 및 이 USB 허브(162)에 각각 연결된 대표적인 USB 장치(164, 166 및 168)를 포함한다. USB 장치(164, 166 및 168)는 키보드, 마우스, 플래시 EEPROM 포트 등과 같은 장치일 수 있다.
디스크 드라이브(170)는 SATA 버스를 통해 데이터 프로세서(110)에 연결되고, 운영 시스템, 응용 프로그램, 응용 파일 등을 위한 대용량 저장매체를 제공한다.
데이터 처리 시스템(100)은 메모리 채널(130) 및 메모리 채널(140)을 제공함으로써 현대 컴퓨팅 애플리케이션에 사용하기에 적합하다. 메모리 채널(130 및 140)들 각각은 DDR 버전 4(DDR4), 저전력 DDR4(LPDDR4), 그래픽 DDR 버전 5(gDDR5) 및 고 대역폭 메모리(HBM)와 같은 최신 DDR 메모리에 연결될 수 있고, 향후 메모리 기술에 적응될 수 있다. 이러한 메모리는 높은 버스 대역폭과 고속 동작을 제공한다. 동시에 이러한 메모리는 또한 랩탑 컴퓨터와 같은, 배터리 전력으로 구동되는 애플리케이션의 전력을 절약하기 위해 저전력 모드를 제공하고, 또한 내장식 열적 모니터링(thermal monitoring) 기능을 제공한다.
도 2는 도 1의 데이터 처리 시스템(100)에 사용하기에 적합한 APU(200)의 블록도를 도시한다. APU(200)는 일반적으로 중앙 처리 유닛(CPU) 코어 복합체(210), 그래픽 코어(220), 디스플레이 엔진 세트(230), 메모리 관리 허브(240), 데이터 패브릭(data fabric)(250), 주변 제어기 세트(260), 주변 버스 제어기 세트(270), 시스템 관리 유닛(system management unit: SMU)(280), 및 메모리 제어기 세트(290)를 포함한다.
CPU 코어 복합체(210)는 CPU 코어(212)와 CPU 코어(214)를 포함한다. 이 예에서, CPU 코어 복합체(210)는 2개의 CPU 코어를 포함하지만, 다른 실시예에서는 CPU 코어 복합체는 임의의 수의 CPU 코어를 포함할 수 있다. 각각의 CPU 코어(212 및 214)는 제어 패브릭을 형성하는 시스템 관리 네트워크(system management network: SMN)에 및 데이터 패브릭(250)에 양방향으로 연결되고, 데이터 패브릭(250)에 메모리 액세스 요청을 제공할 수 있다. 각각의 CPU 코어(212 및 214)는 단일 코어일 수 있거나, 또는 나아가 캐시와 같은 특정 자원을 공유하는 둘 이상의 단일 코어를 갖는 코어 복합체일 수 있다.
그래픽 코어(220)는 고집적 및 병렬 방식으로 버텍스(vertex) 프로세싱, 프래그먼트(fragment) 프로세싱, 쉐이딩(shading), 텍스처 블렌딩(texture blending) 등과 같은 그래픽 동작을 수행할 수 있는 고성능 그래픽 처리 유닛(graphics processing unit: GPU)이다. 그래픽 코어(220)는 SMN에 및 데이터 패브릭(250)에 양방향으로 연결되고, 데이터 패브릭(250)에 메모리 액세스 요청을 제공할 수 있다.
이와 관련하여, APU(200)는 CPU 코어 복합체(210) 및 그래픽 코어(220)가 동일한 메모리 공간을 공유하는 통합 메모리 아키텍처를 지원하거나, 또는 CPU 코어 복합체(210) 및 그래픽 코어(220)가 메모리 공간의 일부를 공유하는 메모리 아키텍처를 지원할 수 있는 반면, 그래픽 코어(220)는 CPU 코어 복합체(210)에 의해 액세스될 수 없는 개인용 그래픽 메모리를 또한 사용한다.
디스플레이 엔진(230)은 모니터 상에 디스플레이하기 위해 그래픽 코어(220)에 의해 생성된 객체를 렌더링(rendering) 및 래스터화(rasterizing)한다. 그래픽 코어(220) 및 디스플레이 엔진(230)은 공통 메모리 관리 허브(240)에 양방향으로 연결되어 메모리 시스템(120) 내의 적절한 어드레스로의 균일한 변환을 행하고, 메모리 관리 허브(240)는 데이터 패브릭(250)에 양방향으로 연결되어 이러한 메모리 액세스를 생성하고 메모리 시스템으로부터 반환된 판독 데이터를 수신한다.
데이터 패브릭(250)은 임의의 메모리 액세스 에이전트와 메모리 제어기(290) 사이에서 메모리 액세스 요청 및 메모리 응답을 라우팅하기 위한 크로스바(crossbar) 스위치를 포함한다. 이 데이터 패브릭은 시스템 구성(system configuration)에 기초하여 메모리 액세스의 목적지를 결정하기 위해 BIOS에 의해 정의된 시스템 메모리 맵(map) 및 각각의 가상 연결(virtual connection)을 위한 버퍼를 더 포함한다.
주변 제어기(260)는 USB 제어기(262) 및 SATA 인터페이스 제어기(264)를 포함하고 이들 각각은 시스템 허브(266)에 및 SMN 버스에 양방향으로 연결된다. 이들 2개의 제어기는 APU(200)에서 사용될 수 있는 주변 제어기의 단지 예시이다.
주변 버스 제어기(270)는 시스템 제어기 또는 "사우스브리지(Southbridge)"(SB)(272) 및 PCIe 제어기(274)를 포함하고 이들 각각은 입력/출력(I/O) 허브(276)에 및 SMN 버스에 양방향으로 연결된다. I/O 허브(276)는 시스템 허브(266)에 및 데이터 패브릭(250)에 양방향으로 더 연결된다. 따라서, 예를 들어 CPU 코어는 데이터 패브릭(250)이 I/O 허브(276)를 통해 라우팅하는 액세스를 통해 USB 제어기(262), SATA 인터페이스 제어기(264), SB(272) 또는 PCIe 제어기(274) 내 레지스터를 프로그래밍할 수 있다.
SMU(280)는, APU(200) 상의 자원의 동작을 제어하고 이들 사이의 통신을 동기화하는 로컬 제어기이다. SMU(280)는 APU(200) 상의 다양한 프로세서의 전력-업 시퀀싱(power-up sequencing)을 관리하고, 리셋 신호, 인에이블 신호 및 다른 신호를 통해 다수의 오프-칩 장치를 제어한다. SMU(280)는, APU(200)의 각각의 구성 요소에 클록 신호를 제공하기 위해 예를 들어 위상 동기 루프(phase locked loop: PLL)와 같은 도 2에 도시되지 않은 하나 이상의 클록 소스를 포함한다. SMU(280)는 또한 다양한 프로세서 및 다른 기능 블록에 대한 전력을 관리하고, 적절한 전력 상태를 결정하기 위해 CPU 코어(212 및 214) 및 그래픽 코어(220)로부터 측정된 전력 소비 값을 수신할 수 있다.
APU(200)는 또한 다양한 시스템 모니터링 및 전력 절감 기능을 구현한다. 특히 하나의 시스템 모니터링 기능은 열적 모니터링이다. 예를 들어, APU(200)가 고온이 되면, SMU(280)는 CPU 코어(212 및 214) 및/또는 그래픽 코어(220)의 주파수 및 전압을 감소시킬 수 있다. APU(200)가 너무 고온이 되면, APU는 완전히 셧다운(shutdown)될 수 있다. 열적 이벤트는 또한 SMN 버스를 통해 SMU(280)에 의해 외부 센서로부터 수신될 수 있고, SMU(280)는 이에 응답하여 클록 주파수 및/또는 전력 공급 전압을 감소시킬 수 있다.
도 3은 일부 실시예에 따라 도 2의 APU(200)에 사용하기에 적합한 메모리 제어기(300) 및 관련 물리적 인터페이스(PHY)(330)의 블록도를 도시한다. 메모리 제어기(300)는 메모리 채널(310) 및 전력 엔진(320)을 포함한다. 메모리 채널(310)은 호스트 인터페이스(312), 메모리 채널 제어기(314), 및 물리적 인터페이스(316)를 포함한다. 호스트 인터페이스(312)는 메모리 채널 제어기(314)를 스케일 러블 데이터 포트(scalable data port: SDP)를 통해 데이터 패브릭(250)에 양방향으로 연결한다. 물리적 인터페이스(316)는 DDR-PHY 인터페이스 사양(DFI)을 따르는 버스를 통해 메모리 채널 제어기(314)를 PHY(330)에 양방향으로 연결한다. 전력 엔진(320)은 SMN 버스를 통해 SMU(280)에 양방향으로 연결되고, 고급 주변 버스(Advanced Peripheral Bus: APB)를 통해 PHY(330)에 양방향으로 연결되고, 또한 메모리 채널 제어기(314)에 양방향으로 연결된다. PHY(330)는 도 1의 메모리 채널(130) 또는 메모리 채널(140)과 같은 메모리 채널과 양방향 연결을 갖는다. 메모리 제어기(300)는 단일 메모리 채널 제어기(314)를 사용하여 단일 메모리 채널에 대한 메모리 제어기의 예시(instantiation)이며, 이하에서 더 설명될 방식으로 메모리 채널 제어기(314)의 동작을 제어하기 위해 전력 엔진(320)을 갖는다.
도 4는 일부 실시예에 따라 도 2의 APU(200)에 사용하기에 적합한 다른 메모리 제어기(400) 및 관련 PHY(440 및 450)의 블록도를 도시한다. 메모리 제어기(400)는 메모리 채널(410 및 420) 및 전력 엔진(430)을 포함한다. 메모리 채널(410)은 호스트 인터페이스(412), 메모리 채널 제어기(414), 및 물리적 인터페이스(416)를 포함한다. 호스트 인터페이스(412)는 메모리 채널 제어기(414)를 SDP를 통해 데이터 패브릭(250)에 양방향으로 연결한다. 물리적 인터페이스(416)는 메모리 채널 제어기(414)를 PHY(440)에 양방향으로 연결하고, DFI 사양을 따른다. 메모리 채널(420)은 호스트 인터페이스(422), 메모리 채널 제어기(424) 및 물리적 인터페이스(426)를 포함한다. 호스트 인터페이스(422)는 메모리 채널 제어기(424)를 다른 SDP를 통해 데이터 패브릭(250)에 양방향으로 연결한다. 물리적 인터페이스(426)는 메모리 채널 제어기(424)를 PHY(450)에 양방향으로 연결하고, DFI 사양을 따른다. 전력 엔진(430)은 SMN 버스를 통해 SMU(280)에 양방향으로 연결되고, APB를 통해 PHY(440 및 450)에 양방향으로 연결되고, 또한 메모리 채널 제어기(414 및 424)에 양방향으로 연결된다. PHY(440)는 도 1의 메모리 채널(130)과 같은 메모리 채널과 양방향 연결을 갖는다. PHY(450)는 도 1의 메모리 채널(140)과 같은 메모리 채널과 양방향 연결을 갖는다. 메모리 제어기(400)는 2개의 메모리 채널 제어기를 갖는 메모리 제어기의 예시이고, 이하에서 더 설명될 방식으로 메모리 채널 제어기(414) 및 메모리 채널 제어기(424) 모두의 동작을 제어하기 위해 공유 전력 엔진(430)을 사용한다.
도 5는 일부 실시예에 따른 메모리 제어기(500)의 블록도를 도시한다. 메모리 제어기(500)는 일반적으로 메모리 채널 제어기(510) 및 전력 제어기(550)를 포함한다. 메모리 채널 제어기(510)는 일반적으로 인터페이스(512), 큐(514), 커맨드 큐(520), 어드레스 생성기(522), 내용 어드레싱 가능한 메모리(content addressable memory: CAM)(524), 재생 큐(replay queue)(530), 리프레시 로직(refresh logic) 블록(532), 타이밍 블록(534), 페이지 테이블(page table)(536), 아비터(538), 에러 정정 코드(error correction code: ECC) 검사 블록(542), ECC 생성 블록(544), 및 데이터 버퍼(data buffer: DB)(546)를 포함한다.
인터페이스(512)는 외부 버스를 통해 데이터 패브릭(250)과 제1 양방향 연결을 갖고, 출력을 갖는다. 메모리 제어기(500)에서 이 외부 버스는 "AXI4"로 알려진 영국의 캠브리지(Cambridge)에 소재하는 ARM 홀딩스(Holdings) PLC사에 의해 지정된 고급 확장형 인터페이스 버전 4와 호환 가능하지만, 다른 실시예에서는 다른 유형의 인터페이스일 수 있다. 인터페이스(512)는 FCLK(또는 MEMCLK) 도메인으로 알려진 제1 클록 도메인으로부터 UCLK 도메인으로 알려진 메모리 제어기(500) 내부의 제2 클록 도메인으로 메모리 액세스 요청을 변환한다. 유사하게, 큐(514)는 UCLK 도메인으로부터 DFI 인터페이스와 관련된 DFICLK 도메인으로 메모리 액세스를 제공한다.
어드레스 생성기(522)는 AXI4 버스를 통해 데이터 패브릭(250)으로부터 수신된 메모리 액세스 요청의 어드레스를 디코딩한다. 메모리 액세스 요청은 정규화된 포맷으로 표현된 물리적 어드레스 공간 내의 액세스 어드레스를 포함한다. 어드레스 생성기(522)는 정규화된 어드레스를, 메모리 시스템(120) 내의 실제 메모리 장치를 어드레싱할 뿐만 아니라 관련 액세스를 효율적으로 스케줄링하는데 사용될 수 있는 포맷으로 변환한다. 이 포맷은 메모리 액세스 요청을 특정 랭크, 행(row) 어드레스, 열(column) 어드레스, 뱅크 어드레스 및 뱅크 그룹과 관련시키는 구역 식별자(region identifier)를 포함한다. 스타트업 시, 시스템 BIOS는 메모리 시스템(120) 내의 메모리 장치에 질의하여 그 크기 및 구성을 결정하고, 어드레스 생성기(522)와 관련된 구성 레지스터(configuration register) 세트를 프로그래밍한다. 어드레스 생성기(522)는 구성 레지스터에 저장된 구성을 사용하여 정규화된 어드레스를 적절한 포맷으로 변환한다. 커맨드 큐(520)는 CPU 코어(212 및 214) 및 그래픽 코어(220)와 같은, 데이터 처리 시스템(100) 내 메모리 액세스 에이전트로부터 수신된 메모리 액세스 요청의 큐이다. 커맨드 큐(520)는 어드레스 생성기(522)에 의해 디코딩된 어드레스 필드를 저장할 뿐만 아니라 아비터(538)가 메모리 액세스를 효율적으로 선택하게 하는, 액세스 유형 및 서비스 품질(quality of service: QoS) 식별자를 포함하는 다른 어드레스 정보를 저장한다. CAM(524)은 기입 후 기입(write after write: WAW) 및 기입 후 판독(read after write: RAW) 정렬 규칙(ordering rule)과 같은 정렬 규칙을 구현하기 위한 정보를 포함한다.
재생 큐(530)는 어드레스 및 커맨드 패리티 응답, DDR4 DRAM에 대한 기입 순환 중복 검사(cyclic redundancy check: CRC) 응답, 또는 gDDR5 DRAM에 대한 기입 및 판독 CRC 응답과 같은 응답을 대기하는 아비터(538)에 의해 선택된 메모리 액세스를 저장하기 위한 임시 큐이다. 재생 큐(530)는 ECC 검사 블록(542)에 액세스하여 반환된 ECC가 올바른지 또는 에러를 나타내는지 여부를 결정한다. 재생 큐(530)는 이러한 사이클들 중 하나의 사이클의 패리티 또는 CRC 에러의 경우에 액세스가 재생될 수 있게 한다.
리프레시 로직(532)은 메모리 액세스 에이전트로부터 수신된 정상적인 판독 및 기입 메모리 액세스 요청과는 별도로 생성되는 다양한 전력 다운(power-down), 리프레시 및 종단 저항(termination resistance: ZQ) 교정 사이클을 위한 상태 머신(state machine)을 포함한다. 예를 들어, 메모리 랭크가 프리차지 전력 다운에 있으면 이 메모리 랭크는 리프레시 사이클을 실행하기 위해 주기적으로 깨어나야(awaken) 한다. 리프레시 로직(532)은 주기적으로 리프레시 커맨드를 생성하여, DRAM 칩 내의 메모리 셀의 저장 커패시터에서 전하가 누설되는 것에 의해 야기되는 데이터 에러를 방지한다. 또한, 리프레시 로직(532)은 시스템의 열적 변화로 인한 다이 상의(on-die) 종단 저항의 불일치를 방지하기 위해 ZQ를 주기적으로 교정한다.
아비터(538)는 커맨드 큐(520) 및 구성 레지스터(562)에 양방향으로 연결된다. 아비터(538)는 메모리 채널 제어기(510)의 핵심이다. 아비터는 메모리 버스의 사용을 향상시키기 위해 액세스를 지능적으로 스케줄링하는 것에 의해 효율을 향상시킨다. 아비터(538)는 타이밍 블록(534)을 사용하여, 커맨드 큐(520) 내의 특정 액세스가 DRAM 타이밍 파라미터에 기초하여 발행하기에 적합한지 여부를 결정함으로써 적절한 타이밍 관계를 구현한다. 예를 들어, 각각의 DRAM은 "tRC"로 알려진 활성 커맨드들 사이에 최소 지정된 시간을 갖는다. 타이밍 블록(534)은 JEDEC 사양에 지정된 이 타이밍 파라미터 및 다른 타이밍 파라미터에 기초하여 적합성(eligibility)을 결정하는 카운터 세트를 유지하며, 재생 큐(530)에 양방향으로 연결된다. 페이지 테이블(536)은 아비터(538)에 대한 메모리 채널의 각각의 뱅크 및 랭크 내의 활성 페이지에 관한 상태 정보를 유지하고, 재생 큐(530)에 양방향으로 연결된다.
ECC 생성 블록(544)은, 인터페이스(512)로부터 수신된 기입 메모리 액세스 요청에 응답하여, 기입 데이터에 따라 ECC를 연산한다. DB(546)는 수신된 메모리 액세스 요청에 대한 기입 데이터 및 ECC를 저장한다. 아비터(538)가 메모리 채널로의 디스패치(dispatch)를 위해 대응하는 기입 액세스를 선택할 때, DB는 조합된 기입 데이터/ECC를 큐(514)에 출력한다.
전력 제어기(550)는 일반적으로 고급 확장형 인터페이스, 버전 1(AXI), APB 인터페이스(554), 및 전력 엔진(560)에 대한 인터페이스(552)를 포함한다. 인터페이스(552)는 SMN과 제1 양방향 연결을 갖고, 도 5에 별도로 도시된 "이벤트_n"으로 명명된 이벤트 신호를 수신하기 위한 입력, 및 출력을 포함한다. APB 인터페이스(554)는 인터페이스(552)의 출력에 연결된 입력, 및 APB를 통해 PHY에 연결하기 위한 출력을 갖는다. 전력 엔진(560)은 인터페이스(552)의 출력에 연결된 입력, 및 큐(514)의 입력에 연결된 출력을 갖는다. 전력 엔진(560)은 구성 레지스터(562)의 세트, 마이크로제어기(μC)(564), 자가 리프레시(self refresh) 제어기(SLFREF/PE)(566), 및 신뢰성 있는 판독/기입 모드 레지스터 액세스(RRW/MRA) 제어기(568)를 포함한다. 구성 레지스터(562)는 큐(514)에 양방향으로 연결된다. 구성 레지스터(562)는 AXI 버스를 통해 프로그래밍되고, 메모리 제어기(500) 내의 다양한 블록의 동작을 제어하기 위해 구성 정보를 저장한다. 따라서, 구성 레지스터(562)는 도 5에 상세히 도시되지 않은 이들 블록에 연결된 추가적인 출력을 갖는다. 자가 리프레시 제어기(566)는 리프레시 로직(532)에 의해 리프레시를 자동으로 생성하는 것에 추가하여 리프레시를 수동으로 생성하는 것을 허용하는 엔진이다. RRW/MRA 제어기(568)는 DDR 인터페이스 최대 판독 레이턴시(maximum read latency: MRL) 트레이닝 및 루프백(loopback) 테스트와 같은 목적을 위해 메모리 또는 I/O 장치에 연속적인 메모리 액세스 스트림을 제공한다. RRW/MRA 제어기(568)는 제어가 인터페이스(552)의 동작을 선택하는 로직을 추가적으로 제공한다.
메모리 채널 제어기(510)는 관련된 메모리 채널로의 디스패치를 위해 메모리 액세스를 선택할 수 있게 하는 회로를 포함한다. 원하는 중재 결정을 내리기 위해, 어드레스 생성기(522)는 어드레스 정보를, 메모리 시스템 내의 랭크, 행 어드레스, 열 어드레스, 뱅크 어드레스 및 뱅크 그룹을 포함하는 미리 디코딩된 정보로 디코딩하고, 커맨드 큐(520)는 미리 디코딩된 정보를 저장한다. 구성 레지스터(562)는 어드레스 생성기(522)가 수신된 어드레스 정보를 디코딩하는 방식을 결정하기 위해 구성 정보를 저장한다. 아비터(538)는 디코딩된 어드레스 정보, 타이밍 블록(534)에 의해 지시된 타이밍 적합성 정보, 및 페이지 테이블(536)에 의해 표시된 활성 페이지 정보를 사용하여 QoS 요구조건과 같은 다른 기준을 관찰하면서 메모리 액세스를 효율적으로 스케줄링한다. 예를 들어, 아비터(538)는 메모리 페이지를 변경하는 데 필요한 프리차지 및 활성화 커맨드의 오버헤드를 피하기 위해 페이지를 개방하는 액세스를 우선 구현하고, 하나의 뱅크에 대한 오버헤드 액세스를 다른 뱅크에 판독 및 기입하는 액세스와 인터리브(interleaving)함으로써 하나의 뱅크에 대한 오버헤드 액세스를 은닉한다. 특히 정상 동작 동안, 아비터(538)는 다른 페이지를 선택하기 전에 프리차지되는 것이 요구될 때까지 다른 뱅크의 페이지를 통상 개방 상태로 유지한다.
동작 시에, 도 5의 메모리 제어기(500)와 같은 메모리 제어기는 도 2의 CPU 코어 복합체(210) 내의 CPU 코어 또는 그래픽 코어(220)와 같은, 메모리 액세스 에이전트에 연결되고 이 메모리 액세스 에이전트로부터 메모리 액세스 요청을 수신한다. 메모리 제어기(500)는 또한 도 1의 메모리 시스템(120)에 연결되도록 적응된다. 전술한 바와 같이, 메모리 시스템(120)은 도 1의 DIMM(134, 136 및 138)으로 구현되는 메모리의 다수의 랭크를 포함할 수 있다. 메모리 제어기(500) 내의 아비터(538)는 미리 결정된 기준에 기초하여 커맨드 큐(520)로부터 메모리 액세스 요청을 선택한다. 아비터(538)는 판독 및 기입 액세스 및 리프레시를 수행하고 RRW/MRA 제어기(568)로부터의 요청에 응답한다. 적어도 하나의 DDR 메모리 버스 액세스 요청에 응답하여, RRW/MRA 제어기(568)는 아비터(538)에 DDR 메모리 버스의 제어를 넘기라는 요청을 생성한다. 아비터(538)는 VREFDQ 트레이닝을 구현하기 위해 일련의 지정된 동작, 예를 들어, 특정 모드 레지스터 설정(Mode Register Set: MRS) 커맨드를 생성하기 위해 RRW/MRA 제어기(568)에 메모리 버스의 제어를 넘긴다.
일반적으로, 구성 레지스터(562)는 인터페이스(552)를 통해 재교정 기입 커맨드 요청을 수신한다. 임무(mission) 모드 고-대역폭 데이터 전송 동안, 재교정 기입 커맨드 요청이 인터페이스(512)를 통해 제공된다. 기입 커맨드 요청에 응답하여, RRW/MRA 제어기(568)는 메모리 버스의 제어를 얻기 위해 요청을 아비터(538)에 제출한다. RRW/MRA 제어기(568)로부터의 요청에 응답하여, 아비터(538)는 계류 중인 동작을 정지시킨다. 계류 중인 동작을 정지시키는 것은 타깃 버스와 관련된 현재 및 계류 중인 동작을 완료하고 중지하는 것을 포함할 수 있지만 이에 국한되지는 않는다. 버스를 정지시키는 것은 계류 중인 긴급 리프레시 커맨드가 없다는 것을 결정하는 것을 추가로 포함할 수 있다. 아비터(538)가 타깃 랭크와 관련된 현재 및 계류 중인 동작을 정지시킨 후에, RRW/MRA 제어기(568)는 일련의 MRS 커맨드를 실행한다. 일련의 MRS 커맨드가 완료된 후, RRW/MRA 제어기(568)는 정상적인 판독 및 기입 메모리 버스 동작을 재개하기 위해 메모리 버스의 제어를 아비터(538)로 복귀시킨다. 메모리 액세스 요청의 흐름 및 메모리의 리프레시에 작은 분열을 야기하는 것만으로 메모리 버스의 제어를 취득하는 사이드 채널을 제공함으로써, 메모리 제어기(500)는 성능을 현저히 희생시키지 않고 또는 액세스 레이턴시를 현저히 증가시키지 않고 파라미터의 주기적인 재교정을 허용한다.
도 6은 일부 실시예에 따라 도 5의 메모리 제어기(500)에 의해 사용될 수 있는 상태도(600)를 도시한다. 상태도(600)는 더블 데이터 레이트 메모리의 파라미터를 기입 및 판독하기 위해 메모리 제어기(500)에 의해 이용되는 마지닝 및 테스트 커맨드에 대응하는 상태도이다. 상태도(600)는 요청 상태(602), 검출 상태(604), 정지 상태(606), 생성 상태(610), MRA 제어 상태(608), 대기 상태(612), 분배 상태(614), 디스에이블 상태(616) 및 아비터 제어 상태(618)를 포함한다. 상태도(600)는 화살표에 의한 상태 전이를 나타내고, 메모리 제어기(500)는 대응하는 요청에 응답하여 상태 전이를 수행한다.
상태도(600)는 전술한 메모리 제어기 동작에 대응하는 상태 머신의 상태를 나타낸다. 요청 상태(602)에서, RRW/MRA 제어기(568)는 운영 시스템으로부터 요청을 수신한다. 요청 상태(602)는 적어도 하나의 MRS 커맨드를 실행하기 위해 구성 레지스터(562)에 액세스하라는 요청에 대응한다. 이 요청은 상태 머신이 MRS 커맨드를 송신하여 도달되는 DRAM의 랭크를 선택한다. 일 실시예에서, DRAM 장치는 DRAM당 접근성(PDA) MRS 커맨드를 이용하여 랭크의 특정 DRAM 장치에 MRS 커맨드를 생성하는 것을 지원한다. PDA 기능은 미리 결정된 파라미터, 예를 들어, 다이 상의 종단(on die termination: ODT) 값, 및 주어진 랭크 상의 DRAM 장치 상의 내부 참조 전압 값을 프로그래밍하는데 이용된다.
검출 상태(604)에서, 아비터(538)는 임의의 활성 시스템 동작을 검출한다. 모드 레지스터에 액세스하라는 요청에 응답하여, 활성 시스템 동작 동안, 아비터(538)는 완료하기를 기다림으로써 메모리 채널에 계류 중인 동작(정상적인 판독 및 기입 동작 및 계류 중인 리프레시를 포함함)을 정지시킨다. 현재 및 계류 중인 메모리 랭크 동작의 정지는 정지 상태(606)에 대응한다. 메모리 버스를 정지시킴으로써 일시적으로 DRAM(들)을 유휴 상태(idle state)에 놓는다. 모드 레지스터의 내용은 DRAM이 유휴 상태에 있거나 DIMM이 타이밍 파라미터가 충족된 프리차지된 상태에 있을 때 운영 시스템의 정상 동작 동안 변경될 수 있다. 현재 및 계류 중인 동작의 정지 후에, 아비터(538)는 메모리 버스의 제어를 구성 레지스터(562)로 넘긴다.
MRA 제어 상태(608)에서, 모드 레지스터 액세스 제어기는 타깃 랭크의 제어를 취하고, 모드 레지스터는 변경된 파라미터 값을 실행하도록 프로그래밍된다. 이에 응답하여, 생성 상태(610)에서, RRW/MRA 제어기(568)는 예를 들어 DDRx 버스(132)와 같은 DIMM(134, 136 및 138)과 관련된 메모리 버스에 적어도 하나의 대응하는 모드 레지스터 설정 커맨드를 생성한다. 생성 상태(610)에서 MRS 커맨드는, DRAM 모드 레지스터 기입 커맨드 시퀀스, 레지스터 제어 워드 커맨드 시퀀스, 및 데이터 버퍼 제어 워드 기입 커맨드 시퀀스 중 하나이다. MRS 커맨드 사이클 시간은 모드 레지스터에 기입 동작을 완료하는 데 필요하며, MRS 커맨드들 간에 필요한 최소 시간이다.
그리하여, 대기 상태(612)에서 모드 레지스터 설정 커맨드 사이클 시간은 각각의 MRS 커맨드에 대해 충족된다. 모드 레지스터를 프로그래밍할 때, 액세스된 모드 레지스터 내의 어드레스 필드는 RRW/MRA 제어기(568)가 MRS 커맨드를 발행할 때 재한정된다. MRS 커맨드는 분배 상태(614)에서 메모리 버스로 분배 및 재분배된다. RRW/MRA 제어기(568)는 MRS 커맨드의 실행들 사이에 요구되는 최소 시간을 충족하기 위해 각각의 MRS 커맨드의 실행 후에 분배 상태(614)와 대기 상태(612) 사이를 사이클링한다. 일부 모드 레지스터에는 디폴트 값이 한정되어 있지만 모든 모드 레지스터에 디폴트 값이 한정되어 있는 것은 아니어서, 따라서 모드 레지스터의 내용은 필요할 때 분배 상태(614)에서 또한 초기화 및/또는 재초기화(즉, 기입)된다. 더 많은 모드 레지스터 설정 커맨드가 실행되기 전에 미리 결정된 수의 클록 사이클이 실행된다.
최종 수신된 모드 레지스터 설정 커맨드의 실행에 응답하여, 대기 상태(612)는 결정된 수의 클록 사이클을 실행하고, 디스에이블 상태(616)로 전이한다. 디스에이블 상태(616)에서, 타깃 파라미터의 변경이 중지된다. RRW/MRA 제어기(568)는 아비터 제어 상태(618)에서 메모리 버스의 제어를 아비터로 복귀시킨다. 요청 상태(602)로 되돌아가면, 메모리 제어기는 적어도 하나의 DRAM 파라미터를 변경 및/또는 판독하기 위해 다음 요청을 기다린다.
일 실시예에서, MRS 커맨드가 모드 레지스터 기입 커맨드 시퀀스인 경우, 기입 커맨드 시퀀스는 더블 데이터 레이트 메모리의 랭크 내 모든 DRAM으로 분배된다. 모드 레지스터 기입 커맨드 시퀀스는 더블 데이터 레이트 메모리의 랭크 내의 DRAM과 관련된 전압 파라미터, 타이밍 파라미터, 및 미리 결정된 대체 장치 파라미터 중 적어도 하나가 업데이트되도록 한다. 일례에서, 생성된 MRS 커맨드의 수신 시에 내부 참조 전압을 업데이트하라는 요청이 이루어질 때, MRS 커맨드의 적어도 일부는 더블 데이터 레이트 메모리의 적어도 하나의 랭크와 관련된 모드 레지스터 6(MR6)에서 수신된다. MRS 커맨드의 수신에 응답하여, 프로세스는 후속 MRS 커맨드를 실행하기 전에 대기 상태(612)에서 미리 결정된 수의 전압 참조 메모리 클록 사이클을 기다린다.
다른 실시예에서, DDR 장치와 관련된 파라미터의 즉각적인 제어(immediate control)를 갖기 위한 요청이 수신된다. 메모리 버스에 즉각적으로 액세스하기 위한 요청에 응답하여, 아비터(538)는 우회된다. 메모리 버스의 즉각적인 제어가 얻어질 수 있도록 직접 MRS 커맨드가 메모리 버스(DDRx 버스(132))에 생성된다.
도 7은 일부 실시예에 따라 도 5의 메모리 제어기(500)에 의해 사용될 수 있는 상태도(700)를 도시한다. 상태도(700)는 더블 데이터 레이트 메모리와 관련된 데이터 버퍼의 파라미터를 판독하고 업데이트하기 위해 메모리 제어기(500)에 의해 이용되는 마지닝 및 테스트 커맨드에 대응하는 상태도이다. 상태도(700)는 요청 상태(702), 초기화 상태(704), 활성 상태(706), 유휴 상태(708), 아비터 제어 상태(710), 대기 상태(712), 기입 상태(714), 정지 상태(716), 인에이블 상태(718), 대기 시간 상태(720) 및 대기 상태(722)를 포함한다.
동작 시에, 버퍼 제어 워드(buffer control word: BCW) 기입은 데이터 버퍼와 관련된 버스, 예를 들어, 버퍼 제어 버스, 또는 DDRx 버스(132)를 통해 커맨드 시퀀스로서 등록 클록 드라이버(registering clock driver: RCD)로부터 DIMM(134, 136 및 138)과 관련된 데이터 버퍼로 송신된다. 구성 레지스터(562)는 커맨드 시퀀스를 수신한다. 아비터(538)는 미리 결정된 기준에 기초하여 커맨드 큐(520)로부터 데이터 버퍼에 커맨드를 판독 또는 기입하기 위한 메모리 액세스 요청을 선택한다. 미리 결정된 기준은 리프레시 요청, 긴급 리프레시 요청, 시간 정렬된 요청, 및 미리 스케줄링된 분배 요청을 포함할 수 있다. RRW/MRA 제어기(568)는, 데이터 버퍼에 액세스하라는 요청을 수신한 것에 응답하여, 메모리 버스의 현재 및 계류 중인 활동을 정지시킬 것을 아비터(538)에 지시한다. RRW/MRA 제어기(568)는 BCW 기입 커맨드 시퀀스를 통해 내부 참조 전압 파라미터 및 데이터 버퍼 타이밍 값과 같은 미리 결정된 파라미터를 변경하기 위해 메모리 버스의 제어를 취한다. 미리 결정된 데이터 버퍼 파라미터를 변경하는 BCW 기입 커맨드 시퀀스는 버퍼 제어 버스를 통한 커맨드 시퀀스로서 등록 클록 드라이버(RCD)로부터 DIMM(134, 136 및 138)과 관련된 데이터 버퍼로 송신된다. BCW 기입 커맨드 시퀀스 내에서 제어 워드를 이용하는 데이터 버퍼 파라미터를 변경하면 장치가 안정화되는 데 시간이 걸린다. BCW 기입 커맨드 시퀀스를 실행할 때, 메모리 제어기(500)는 DRAM으로의 추가적인 액세스가 일어나기 전에 마지막 제어 워드 액세스 후 미리 결정된 수의 클록 사이클(tMRC)을 대기한다. 클록 타이밍을 변경 또는 기입한 경우, 안정화에 최대 tDLLK 시간이 소요될 수 있다.
상태도(700)는 메모리 제어기(500)를 통해 실행하기 위해 전술한 DIMM 데이터 버퍼 트레이닝 및 마지닝 동작에 대응하는 상태 머신의 상태를 더 제시한다. 상태도(700)에 의해 더 도시된 바와 같이, RCD는 운영 시스템의 초기화 상태(704), 활성 상태(706) 또는 유휴 상태(708)에서 DIMM(134, 136 및 138)과 관련된 파라미터에 액세스하고 업데이트하라는 요청을 수신한다. 초기화 상태(704)는 운영 시스템의 스타트업 상태에 대응한다. 다수의 기능이 활성 상태(706)와 관련될 수 있다. 일 실시예에서, 데이터 처리 시스템(100)과 관련된 활동은 최대 임무 모드 트래픽 동작으로부터 최소 임무 모드 트래픽 동작에 이르는 범위일 수 있다. 유휴 상태(708)는 비활성이지만 기능적인 데이터 처리 시스템(100)에 대응한다. 초기화 상태(704), 활성 상태(706) 또는 유휴 상태(708) 동안 데이터 버퍼에 액세스하라는 요청을 수신한 것에 응답하여, 메모리 제어기(500)는 대기 상태(712)로 전이한다. 대기 상태(712)는 BCW 기입 커맨드 시퀀스의 실행을 위해 데이터 버퍼를 준비하기 위해 이용되는 미리 한정된 대기 시간이다. 아비터(538)는 RRW/MRA 제어기(568)가 상태(718)에서 메모리 버스의 제어를 갖게 할 수 있다. 대기 상태(712)와 관련된 미리 결정된 대기 사이클의 완료에 후속하여, 아비터(538)는 데이터 버퍼와 관련된 현재 및 계류 중인 동작을 정지시킨다. 다시 대기 상태(712)로 전이된다.
상태(716)에서, 구성 레지스터(562)는 아비터(538)로부터 메모리 버스의 제어를 요청한다. 아비터(538)가 메모리 버스와 관련된 활동을 일시적으로 중지시키면, 아비터(538)는 메모리 버스의 제어를 구성 레지스터(562)로 넘긴다. 데이터 버퍼 기입 동작은 기입 상태(714)에서 생성된 BCW 기입 커맨드 시퀀스를 이용하여 RRW/MRA 제어기(568)를 통해 실행된다. 일 실시예에서, BCW 커맨드 시퀀스는 BCW 판독 커맨드 시퀀스에 대응한다. 일 실시예에서, 각각의 BCW 기입 및 판독 커맨드 시퀀스에 후속하여 5개의 데이터 전송 사이클 및 패리티 데이터 전송 사이클이 실행된다. 생성된 BCW 기입 커맨드 시퀀스는 버퍼 제어 버스를 통한 커맨드 시퀀스로서, 기입 상태(714)에서 DDR4 등록 클록 드라이버로부터 랭크의 DDR 데이터 버퍼로 송신된다. 버퍼 제어 워드 및 파라미터 설정을 변경하면 장치가 안정화되는 데 시간이 걸린다. BCW 시간(tBCW) 파라미터는 활성 BCW 기입 커맨드로부터 후속 유효 BCW 기입 커맨드로 전이하는 데 이용되는 시간을 나타낸다. 사이클 전이의 미리 결정된 수는 기입 상태(714)에서 BCW 기입 커맨드들 사이의 대기 사이클(712)로 전이하는 수에 대응한다.
DDR BCW 기입 커맨드 시퀀스는, 기입 상태(714)에서, 버퍼 제어 설정을 변경한 것에 후속하여 DDR 메모리의 적어도 하나의 랭크로 분배되고, 메모리 제어기(500)는 미리 결정된 수의 클록 사이클(TMRC)의 실행을 위해 대기 상태(720)로 전이한다. 대기 상태(720)로의 전이는 최종 제어 워드 액세스 후에, DRAM으로의 추가적인 액세스가 일어나기 전에 일어난다. 클록 타이밍이 변하는 경우, 기입 상태(714)에서, 메모리 제어기(500)는 대기 상태(722)로 전이한다. 대기 상태(712)로의 최종 전이에 응답하여, 대기 상태(720)와 대기 상태(722) 중 적어도 하나의 상태에서 추가적인 사이클 시간으로 전이가 이루어진다. 대기 상태(722)는 타이밍 파라미터로의 변경에 따라 실행되는 미리 결정된 수의 클록 사이클(tDLLK)에 대응하며, 메모리 제어기(500)는 상태(710)에서 아비터(538)가 메모리 버스의 제어를 다시 얻게 한다.
일 실시예에서, 적어도 하나의 데이터 버퍼 파라미터는 전압 참조 파라미터, 타이밍 제어 파라미터, 미리 결정된 대체 버퍼 파라미터, 및 대체 데이터 버퍼 파라미터 중에서 선택된다. 예를 들어, DIMM 데이터 버퍼 파라미터는 참조 전압 동작 범위, 참조 전압 스텝 크기, 참조 전압 설정 공차, 참조 전압 스텝 시간, 참조 전압 유효 공차, 및 클록 타이밍을 포함할 수 있지만, 이에 국한되는 것은 아니다. 타이밍 제어 파라미터는 더블 데이터 레이트 메모리의 관련 랭크의 데이터 버퍼의 타이밍 제어 레지스터에서 수신된다. 또한, DIMM 데이터 버퍼는 버퍼당 어드레스 가능성(Per Buffer Addressability: PBA)라고 불리는 버퍼 제어 워드 액세스 트랜잭션의 기능을 지원한다. 각 데이터 버퍼는 서로 독립적으로 구성될 수 있다. PBA는 버퍼당 독립적인 파라미터 변경 및 트레이닝을 허용하거나 또는 미리 결정된 DIMM 데이터 버퍼를 위한 ODT 임피던스 설정과 독립적이다. PBA 기능은 PBA 모드에서 프로그래밍될 필요가 있는 레지스터를 전혀 포함하지 않는 워드에 저장된 BCW 비트에 의해 인에이블되고; 이에 의해 버퍼마다 구체적으로 프로그래밍된 BCW 비트를 변경하지 않고도 버퍼가 PBA 모드로 들어가고 빠져 나갈 수 있게 한다.
도 6 및 도 7의 상태들 사이를 스위칭하기 위한 다수의 조건들 중 임의의 조건이 단독으로 또는 여러 조합으로 사용될 수 있다. 도시된 실시예에서, 이러한 조건은 판독 또는 기입 커맨드 시퀀스, 타이밍 대기 사이클, 메모리 버스 액세스, 아비터 제어, 및 계류 중인 동작의 정지를 포함한다. 또한, 도 6 및 도 7은 메모리의 주어진 랭크에서 단일 디바이스에 대한 마지닝 및 트레이닝(즉, PDA 및 PBA)을 도시할 수 있지만, 도 6 및 도 7의 상태 머신은 예를 들어 단일 랭크 및 다수의 랭크에 대해 다양한 방식으로 메모리 시스템의 더 큰 서브세트로 확장될 수 있다.
도 8은 도 5의 메모리 제어기(500)에 의해 사용될 수 있는 방법(800)의 흐름도를 도시한다. 블록(802)에서, 시스템 초기화 이후의 시간에 적어도 하나의 DDR 트레이닝 및 마지닝 동작을 생성하기 위한 요청이 운영 시스템으로부터 수신된다. RRW/MRA 제어기(568)는 블록(804)에서, 아비터(538)에 랭크의 현재 및 계류 중인 더블 데이터 레이트 동작을 정지시키는 요청을 생성한다. 블록(806)에서 MRS 커맨드가 예를 들어 DDRx 버스(132)와 같은 메모리 버스에서 수신된다. 블록(808)에서, 메모리 버스에서 MRS 커맨드를 수신한 것에 응답하여, 랭크의 미리 결정된 DDR 메모리 장치 파라미터, 예를 들어, VREFDQ 파라미터의 제어를 얻기 위해 제1 MRS 커맨드가 RRW/MRA 제어기(568)를 통해 랭크로 송신된다. 미리 결정된 수의 클록 사이클(tVREF)이 블록(810)에서 실행된다. 블록(812)에서, 제2 모드 레지스터 커맨드 시퀀스가 랭크와 관련된 적어도 하나의 DDR4 메모리 장치 파라미터를 업데이트하기 위해 랭크로 송신된다. DDR4 메모리 디바이스 파라미터 변경을 실행한 후에, 블록(814)에서, 미리 결정된 수의 클록 사이클이 실행된다. RRW/MRA 제어기(568)는 파라미터 제어를 디스에이블하기 위해 랭크에 후속 MRS 커맨드를 송신한다. 추가적인 미리 결정된 수의 클록 사이클이 블록(818)에서 실행된다. 블록(820)에서, 아비터는 메모리 버스에 다시 액세스를 얻게 한다. 프로세스는 종료 블록에서 끝난다.
도 9는 도 5의 메모리 제어기(500)에 의해 사용될 수 있는 방법(900)의 흐름도를 도시한다. 블록(902)에서, 시스템 초기화 이후 시간에 미리 결정된 데이터 버퍼 파라미터를 변경하기 위해 BCW 기입 커맨드 시퀀스를 생성하라는 요청이 수신된다. RRW/MRA 제어기(568)는 아비터(538)로부터 메모리 버스의 제어를 요청한다. 메모리 제어기(500)는 블록(904)에서 아비터(538)가 현재 및 계류 중인 버퍼 동작을 정지시키게 한다. 블록(906)에서 미리 결정된 수의 클록 사이클이 실행된다. BCW 기입 커맨드 시퀀스는 블록(908)에서 생성된다. BCW 기입 커맨드 시퀀스의 생성에 응답하여, 블록(910)에서 BCW 기입 커맨드 시퀀스가 제1 파라미터를 변경하기 위해 적어도 하나의 데이터 버퍼에 분배된다. 블록(912)에서 미리 결정된 수의 클록 사이클이 실행된다. 블록(914)에서, 랭크와 관련된 제2 파라미터를 업데이트하기 위해 후속 BCW 기입 커맨드 시퀀스가 데이터 버퍼에 송신된다. 블록(916)에서, 파라미터 업데이트의 실행에 후속하여, 다른 미리 결정된 수의 클록 사이클(최대 tDLLK)이 실행된다. 블록(918)에서, 데이터 버퍼의 제어를 디스에이블하기 위해 후속 BCW 기입 커맨드 시퀀스가 송신된다. 추가적인 수의 미리 결정된 클록 사이클이 블록(920)에서 실행된다. 블록(922)에서, 아비터는 현재 및 계류 중인 데이터 버스 동작에 다시 액세스를 얻게 된다. 프로세스는 종료 블록에서 끝난다.
도 10은 도 5의 메모리 제어기(500)에 의해 사용될 수 있는 방법(1000)의 흐름도를 도시한다. 블록(1002)에서, 다목적 레지스터의 내용을 검색/판독하기 위한 요청이 RRW/MRA 제어기(568)에서 수신된다. 블록(1004)에서 DDR 메모리 장치의 현재 및 계류 중인 DDR 메모리 버스 동작을 정지시키기 위해 RRW/MRA 제어기(568)에 의해 요청이 생성되고 아비터(538)에서 수신된다. 메모리 제어기(500)는 블록(1006)에서 아비터(538)가 현재 및 계류 중인 DDR4 메모리 버스 동작을 정지시키게 한다. 블록(1008)에서, MRS 커맨드가 메모리 버스에서 수신된다. 적어도 하나의 MRS 커맨드는 블록(1010)에서 랭크 내의 적어도 하나의 DRAM 장치와 관련된 미리 결정된 파라미터 값을 판독하기 위해 랭크에 분배된다. 블록(1012)에서 미리 결정된 수의 클록 사이클이 실행된다. 관련 랭크의 내용은 블록(1014)에서 검색/판독된다. 내용을 판독한 후에, 블록(1016)에서 미리 결정된 수의 클록 사이클이 실행된다. 블록(1018)에서, 메모리 제어기는 아비터가 현재 및 계류 중인 메모리 데이터 버스 동작에 다시 액세스를 얻게 한다. 프로세스는 종료 블록에서 끝난다.
도 11은 입력 값의 범위에 응답하여 DRAM의 출력값을 그래픽으로 디스플레이하는 2차원 데이터 아이를 도시한다. 데이터 아이(1100)는 데이터 아이(1106), 축(1102) 및 축(1104)을 포함한다. 축(1102)은 최소 및 최대 y-축 값을 디스플레이하고, 축(1104)은 최소 및 최대 x-축 값을 디스플레이한다.
일 실시예에서, 데이터 아이(1100)는 DRAM 장치의 미리 결정된 파라미터를 최적화하기 위해 이용되는 2차원 데이터 아이이다. 아비터(538)가 메모리 버스를 정지시키는 것에 후속하여 RRW/MRA 제어기(568)는 미리 결정된 파라미터 값을 데이터 아이의 중심으로 동적으로 이동시키기 위해 MRS 커맨드가 DRAM 장치에 분배되게 한다. 미리 결정된 파라미터 값을 데이터 아이의 중심으로 이동시키면 테스트 및 마지닝 동안 DRAM 장치와 관련된 파라미터 값을 동적으로 최적화할 수 있다.
도 8, 도 9, 및 도 10에 도시된 방법의 일부 또는 전부는, 컴퓨터 판독 가능 저장 매체에 저장되고 적어도 하나의 프로세서에 의해 실행되는 명령에 의해 제어될 수 있다. 도 8, 도 9, 및 도 10에 도시된 각각의 동작은 비 일시적인 컴퓨터 메모리 또는 컴퓨터 판독 가능 저장 매체에 저장된 명령에 대응할 수 있다. 다양한 실시예에서, 비 일시적인 컴퓨터 판독 가능 저장 매체는 자기 또는 광학 디스크 저장 장치, 플래시 메모리와 같은 솔리드 스테이트 저장 장치, 또는 다른 비 휘발성 메모리 장치 또는 장치들을 포함한다. 비 일시적인 컴퓨터 판독 가능 저장 매체 상에 저장된 컴퓨터 판독 가능 명령은 하나 이상의 프로세서에 의해 해석되고 및/또는 실행 가능한, 소스 코드, 어셈블리 언어 코드, 목적 코드, 또는 다른 명령 포맷일 수 있다.
특정 실시예가 설명되었지만, 이들 실시예에의 다양한 변경이 이 기술 분야에 통상의 지식을 가진 자에게 명백할 것이다. 메모리 제어기(500)는 고 대역폭 메모리(HBM), 동기 DRAM의 유형 등과 같은 DDRx 메모리 이외의 다른 유형의 메모리와 인터페이스할 수 있다. 도시된 실시예가 개별 DIMM에 대응하는 메모리의 각 랭크를 제시하였지만, 다른 실시예에서는 각 DIMM은 다수의 랭크를 지원할 수 있다. 또한, 메모리 채널은 DDR4 메모리의 복수의 랭크를 포함하거나 또는 단 하나의 랭크만을 포함할 수 있다. 또한, MRA 제어기의 동작은 VREDQ 트레이닝의 ZQ 교정과 같은 특정 유형의 교정을 참조하여 설명되었지만, 이 동작은 동작 동안 수행되는 다른 유형의 교정 및 트레이닝에 사용될 수 있다는 것은 명백하다.
따라서, 첨부된 청구 범위는 개시된 실시예의 범위 내에 있는 개시된 실시예의 모든 변경을 포함하는 것으로 의도된다.

Claims (30)

  1. 데이터 처리 시스템(100)으로서,
    모드 레지스터(mode register)를 포함하는 더블 데이터 레이트(double data rate) 메모리의 적어도 하나의 랭크(rank)(134/136/138)를 포함하는 메모리 채널(130); 및
    상기 메모리 채널(130)에 결합되고 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크에 액세스하도록 적응된 메모리 제어기(500)를 갖는 데이터 프로세서(110)를 포함하되, 상기 메모리 제어기는,
    수신된 메모리 액세스 요청을 저장하기 위한 커맨드 큐(command queue)(520);
    미리 결정된 기준에 기초하여 상기 커맨드 큐(520)로부터 메모리 액세스 요청을 선택하고, 상기 메모리 액세스 요청을 상기 메모리 채널에 제공하고, 모드 레지스터 액세스 요청에 응답하여 계류 중인 동작을 정지(606)시키기 위한 아비터(arbiter)(538); 및
    상기 모드 레지스터 액세스 요청에 응답하여 메모리 버스에 적어도 하나의 대응하는 모드 레지스터 설정 커맨드를 생성하고, 이후에 상기 메모리 버스의 제어를 상기 아비터(538)로 넘기는 모드 레지스터 액세스 제어기(562)를 포함하는, 데이터 처리 시스템(100).
  2. 제1항에 있어서,
    상기 모드 레지스터 설정 커맨드(608)를 생성하는 동작을 더 포함하고, 상기 모드 레지스터 설정 커맨드는 DRAM 모드 레지스터 기입 커맨드(608) 시퀀스, 레지스터 제어 워드 커맨드 시퀀스, 및 데이터 버퍼 제어 워드 기입 커맨드(714) 시퀀스 중 하나인, 데이터 처리 시스템(100).
  3. 제2항에 있어서,
    상기 DRAM 모드 레지스터 기입 커맨드 시퀀스를 DDR 메모리(610)의 적어도 하나의 랭크 내 복수의 DRAM에 분배하는 동작을 더 포함하는, 데이터 처리 시스템(100).
  4. 제3항에 있어서,
    상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(134/136/138)에 상기 DRAM 모드 레지스터 기입 커맨드 시퀀스(608)를 생성하는 동작을 더 포함하고, 상기 DRAM 모드 레지스터 기입 커맨드 시퀀스는 상기 DDR 메모리의 적어도 하나의 랭크(134/136/138)와 관련된 전압 참조 파라미터, 타이밍 파라미터, 및 미리 결정된 대체 장치 파라미터 중 적어도 하나를 업데이트하게 하는, 데이터 처리 시스템.
  5. 제4항에 있어서,
    상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(134/136/138)의 DRAM 모드 레지스터 6에서 상기 DRAM 모드 레지스터 기입 커맨드 시퀀스의 적어도 일부를 수신하는 동작; 및
    후속 DRAM 모드 레지스터 기입 커맨드 시퀀스(612)를 실행하기 전에 미리 결정된 수의 전압 참조 메모리 클록 사이클을 대기하는 동작을 더 포함하는 데이터 처리 시스템.
  6. 제4항에 있어서,
    상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(134/136/138)에서 후속 DRAM 모드 레지스터 기입 커맨드 시퀀스(612)를 수신하는 동작, 및 상기 후속 DRAM 모드 레지스터 기입 커맨드 시퀀스(612)를 수신한 것에 응답하여, 상기 전압 참조 파라미터(812)의 업데이트를 디스에이블시키는 동작을 더 포함하는 데이터 처리 시스템(100).
  7. 제2항에 있어서,
    상기 데이터 버퍼 제어 워드 기입 커맨드(714) 시퀀스를 생성한 것에 응답하여, 상기 데이터 버퍼 제어 워드 기입 커맨드(714) 시퀀스는 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(908)의 적어도 하나의 데이터 버퍼에 분배되는, 데이터 처리 시스템(100).
  8. 제7항에 있어서,
    상기 데이터 버퍼 제어 워드 기입 커맨드(714) 시퀀스는 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(908)의 상기 적어도 하나의 데이터 버퍼의 초기화(704/706/708) 이후의 시간에 적어도 하나의 데이터 버퍼 파라미터(908)를 변경하는, 데이터 처리 시스템(100).
  9. 제8항에 있어서,
    상기 적어도 하나의 데이터 버퍼 파라미터는 전압 참조 파라미터, 타이밍 제어 파라미터(714/908/912), 및 미리 결정된 대체 버퍼 파라미터, 및 대체 데이터 버퍼 파라미터 중에서 선택되는, 데이터 처리 시스템(100).
  10. 제9항에 있어서,
    상기 타이밍 제어 파라미터는 상기 더블 데이터 레이트 메모리(714)의 적어도 하나의 랭크(908)의 상기 적어도 하나의 데이터 버퍼의 타이밍 제어 레지스터에서 수신되는, 데이터 처리 시스템(100).
  11. 제1항에 있어서,
    즉각적인 모드 레지스터 액세스 요청에 응답하여, 상기 아비터를 우회하는 동작, 및 상기 메모리 버스(602/610)의 즉각적인 제어를 얻기 위해 상기 메모리 버스에 직접 모드 레지스터 설정 커맨드를 생성하는 동작을 포함하는, 데이터 처리 시스템.
  12. 제1항에 있어서,
    상기 메모리 채널(130)은 더블 데이터 레이트(DDR) 버전 4(DDR4) 메모리의 복수의 랭크(134/136/138)를 포함하는, 데이터 처리 시스템(100).
  13. 데이터 프로세서(110/200)로서,
    메모리 액세스 에이전트(210/220); 및
    상기 메모리 액세스 에이전트(210/212)에 결합되고 메모리 시스템(120)에 결합되도록 적응된 메모리 제어기(292/500)로서,
    수신된 메모리 액세스 요청을 저장하기 위한 커맨드 큐(520)를 포함하는, 상기 메모리 제어기(292/500);
    상기 커맨드 큐(520)로부터 메모리 액세스 요청을 선택적으로 선택하고, 상기 메모리 액세스 요청을 메모리 채널에 제공하고, 모드 레지스터 액세스 요청에 응답하여, 계류 중인 동작을 정지시키기 위한 아비터(538); 및
    상기 모드 레지스터 액세스 요청에 응답하여 메모리 버스에 적어도 하나의 대응하는 모드 레지스터 설정 커맨드를 생성하고, 이후 상기 메모리 버스의 제어를 상기 아비터(538)로 넘기기 위한 모드 레지스터 액세스 제어기(562)를 포함하는, 데이터 프로세서(110/200).
  14. 제13항에 있어서,
    상기 모드 레지스터 액세스 제어기(562)는 모드 레지스터 설정 커맨드(608)를 생성하고, 상기 모드 레지스터 설정 커맨드는 동적 랜덤 액세스 메모리(DRAM) 모드 레지스터 기입 커맨드 시퀀스(608)와 버퍼 제어 워드 기입 커맨드 시퀀스(714) 중 하나인, 데이터 프로세서(110/200).
  15. 제14항에 있어서,
    상기 모드 레지스터 액세스 제어기는 상기 DRAM 모드 레지스터 기입 커맨드 시퀀스(608)를 더블 데이터 레이트 메모리(610)의 적어도 하나의 랭크 내 복수의 DRAM에 분배하는, 데이터 프로세서(100/200).
  16. 제15항에 있어서,
    상기 모드 레지스터 액세스 제어기(562)는 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(134/136/138)에 상기 DRAM 모드 레지스터 기입 커맨드 시퀀스(608)를 생성하고, 상기 DRAM 모드 레지스터 기입 커맨드 시퀀스는 전압 파라미터를 업데이트하고, 상기 전압 파라미터는 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(134/136/138)와 관련된, 데이터 프로세서(110/200).
  17. 제16항에 있어서,
    상기 모드 레지스터 액세스 제어기(562)는 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(134/136/138)의 DRAM 모드 레지스터 6에 상기 DRAM 모드 레지스터 기입 커맨드 시퀀스(614)의 적어도 일부를 생성하고;
    후속 DRAM 모드 레지스터 기입 커맨드 시퀀스(612)를 실행하기 전에 미리 결정된 수의 참조 전압 메모리 클록 사이클을 대기하는, 데이터 프로세서.
  18. 제17항에 있어서,
    상기 메모리 버스는 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(134/136/138)에서 상기 후속 DRAM 모드 레지스터 기입 커맨드 시퀀스(614)를 수신하고, 상기 후속 DRAM 모드 레지스터 기입 커맨드를 수신한 것에 응답하여, 상기 전압 파라미터(812)의 업데이트를 디스에이블하는, 데이터 프로세서(110/200).
  19. 제15항에 있어서,
    상기 버퍼 제어 워드 기입 커맨드(714) 시퀀스를 생성한 것에 응답하여, 상기 메모리 버스는 상기 버퍼 제어 워드 기입 커맨드(714) 시퀀스를 상기 더블 데이터 레이트 메모리의 적어도 하나의 랭크(908)의 적어도 하나의 데이터 버퍼에 분배하는, 데이터 프로세서(110/200).
  20. 제16항에 있어서,
    상기 모드 레지스터 액세스 제어기는 적어도 하나의 파라미터를 업데이트하고, 상기 적어도 하나의 파라미터는 DQ 참조 전압 값(812)인, 데이터 프로세서(110/200).
  21. 제13항에 있어서,
    상기 모드 레지스터 액세스 제어기는 상기 아비터를 우회하게 하고, 즉각적인 모드 레지스터 액세스 요청(602/610)에 응답하여, 상기 메모리 버스의 즉각적인 제어를 얻기 위해 상기 메모리 버스에 직접 모드 레지스터 설정 커맨드를 생성하는, 데이터 프로세서(110/200).
  22. 모드 레지스터 액세스 제어기(292/500)를 통해 메모리 시스템에서 더블 데이터 레이트 인터페이스를 마지닝(margining) 및 테스트하는 방법(800/900)으로서,
    시스템 초기화 이후 시간에 더블 데이터 레이트 동작을 생성하는 요청을 수신하는 단계;
    랭크(802)의 현재 및 계류 중인 더블 데이터 레이트 동작을 정지시키는 요청을 생성하는 단계;
    메모리 버스에서 모드 레지스터 커맨드 시퀀스(806)를 수신하는 단계;
    상기 모드 레지스터 커맨드 시퀀스의 수신에 응답하여, 상기 랭크와 관련된 제1 파라미터의 제어를 얻기 위해 상기 랭크(802) 내의 복수의 뱅크에 제1 모드 레지스터 커맨드 시퀀스를 송신하는 단계; 및
    상기 랭크(812)와 관련된 상기 제1 파라미터를 업데이트하기 위해 후속 모드 레지스터 커맨드 시퀀스(806)를 상기 복수의 뱅크에 송신하는 단계를 포함하는, 더블 데이터 레이트 인터페이스를 마지닝 및 테스트하는 방법(800/900).
  23. 제22항에 있어서,
    대기 사이클(810)을 개시하는 단계를 더 포함하고, 상기 대기 사이클은 상기 후속 모드 레지스터 커맨드 시퀀스(810)의 실행 이후의 시간에 개시된, 미리 결정된 카운트의 참조 전압 메모리 클록 사이클(612)인, 더블 데이터 레이트 인터페이스를 마지닝 및 테스트하는 방법(800).
  24. 제22항에 있어서,
    상기 랭크의 현재 및 계류 중인 더블 데이터 레이트 동작의 정지를 해제하는 단계, 및 상기 랭크(822)로 동작 액세스를 가능하게 하는 단계를 더 포함하는, 더블 데이터 레이트 인터페이스를 마지닝 및 테스트하는 방법(800).
  25. 제23항에 있어서,
    후속 모드 레지스터 커맨드 시퀀스를 송신하는 단계는,
    미리 결정된 수의 참조 전압 메모리 클록 사이클의 완료에 후속하여 참조 전압의 제어를 디스에이블하기 위해 후속 모드 레지스터 6 기입 커맨드를 송신하는 단계; 및
    상기 후속 모드 레지스터 커맨드 시퀀스(820)의 수신에 응답하여 참조 전압 메모리 클록 사이클(612)을 개시하는 단계를 더 포함하는, 더블 데이터 레이트 인터페이스를 마지닝 및 테스트하는 방법(800).
  26. 제22항에 있어서,
    상기 모드 레지스터 액세스 제어기가 상기 복수의 뱅크에 상기 후속 모드 레지스터 커맨드 시퀀스를 생성한 것에 응답하여, 상기 모드 레지스터 액세스 제어기는 상기 더블 데이터 레이트 동작과 관련된 다목적 레지스터의 내용을 검색하고, 상기 내용은 관련된 더블 데이터 레이트 DRAM(1000)의 적어도 하나의 동작 성능에 대응하는, 더블 데이터 레이트 인터페이스를 마지닝 및 테스트하는 방법(800).
  27. 모드 레지스터 액세스 제어기를 통해 메모리 시스템에서 더블 데이터 레이트 데이터 버퍼 인터페이스를 마지닝 및 테스트하는 방법(900)으로서,
    더블 데이터 레이트 데이터 버퍼의 초기화에 후속하여 버퍼 제어 워드 기입 커맨드 시퀀스를 생성하는 요청을 수신하는 단계(902);
    현재 및 계류 중인 더블 데이터 레이트 데이터 버퍼 동작을 정지시키는 단계(904); 및
    전압 파라미터와 데이터 버퍼 타이밍 파라미터(908) 중 적어도 하나의 파라미터를 변경하기 위해 상기 버퍼 제어 워드 기입 커맨드 시퀀스를 더블 데이터 레이트 데이터 버퍼에 분배하는 단계를 포함하는, 더블 데이터 레이트 데이터 버퍼 인터페이스를 마지닝 및 테스트하는 방법(900).
  28. 제27항에 있어서,
    각각의 버퍼 제어 워드 기입 커맨드 시퀀스에 후속하는 대기 사이클을 개시하는 단계로서, 상기 대기 사이클은 제1 미리 한정된 수의 대기 사이클(910)인, 상기 대기 사이클을 개시하는 단계; 및
    상기 데이터 버퍼 타이밍 파라미터의 변경에 응답하여 제2 미리 한정된 수의 대기 사이클(918)을 개시하는 단계를 더 포함하는, 더블 데이터 레이트 데이터 버퍼 인터페이스를 마지닝 및 테스트하는 방법(900).
  29. 제27항에 있어서,
    상기 더블 데이터 레이트 데이터 버퍼의 현재 및 계류 중인 더블 데이터 레이트 동작의 상기 정지를 디스에이블하기 위해 후속 버퍼 제어 워드 기입 커맨드 시퀀스를 송신하는 단계를 더 포함하고, 상기 더블 데이터 레이트 데이터 버퍼에 아비터가 액세스하는 것이 가능하게 되는(920), 더블 데이터 레이트 데이터 버퍼 인터페이스를 마지닝 및 테스트하는 방법(900).
  30. 제27항에 있어서,
    상기 전압 파라미터는 DQ 참조 전압 레벨(908/912)인, 더블 데이터 레이트 데이터 버퍼 인터페이스를 마지닝 및 테스트하는 방법(900).
KR1020197013589A 2016-10-21 2017-07-27 플랫폼 마지닝 및 디버그를 위한 소프트웨어 모드 레지스터 액세스 KR102444201B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/299,994 US9965222B1 (en) 2016-10-21 2016-10-21 Software mode register access for platform margining and debug
US15/299,994 2016-10-21
PCT/US2017/044143 WO2018075118A1 (en) 2016-10-21 2017-07-27 Software mode register access for platform margining and debug

Publications (2)

Publication Number Publication Date
KR20190059325A true KR20190059325A (ko) 2019-05-30
KR102444201B1 KR102444201B1 (ko) 2022-09-19

Family

ID=61970204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197013589A KR102444201B1 (ko) 2016-10-21 2017-07-27 플랫폼 마지닝 및 디버그를 위한 소프트웨어 모드 레지스터 액세스

Country Status (6)

Country Link
US (1) US9965222B1 (ko)
EP (2) EP3529703A4 (ko)
JP (1) JP7181863B2 (ko)
KR (1) KR102444201B1 (ko)
CN (1) CN109863481B (ko)
WO (1) WO2018075118A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220037518A (ko) * 2019-08-12 2022-03-24 어드밴스드 마이크로 디바이시즈, 인코포레이티드 영구 메모리 시스템 등을 위한 데이터 무결성

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7768847B2 (en) 2008-04-09 2010-08-03 Rambus Inc. Programmable memory repair scheme
SG11201908904TA (en) * 2017-04-14 2019-10-30 Huawei Tech Co Ltd Memory refresh technology and computer system
US10719058B1 (en) * 2017-09-25 2020-07-21 Cadence Design Systems, Inc. System and method for memory control having selectively distributed power-on processing
CN108829348B (zh) * 2018-05-29 2022-03-04 上海兆芯集成电路有限公司 存储器装置及命令重排序方法
US10896265B2 (en) * 2018-08-02 2021-01-19 Micron Technology, Inc. Register access
WO2020051921A1 (en) * 2018-09-15 2020-03-19 Intel Corporation Runtime cell row replacement in a memory
CN111158875B (zh) * 2019-12-25 2023-05-02 眸芯科技(上海)有限公司 基于多模块的多任务处理方法、装置及系统
US11231879B2 (en) * 2020-02-28 2022-01-25 Micron Technology, Inc. Dedicated design for testability paths for memory sub-system controller
CN112395011B (zh) 2020-11-24 2022-11-29 海宁奕斯伟集成电路设计有限公司 命令响应信息的返回方法、返回控制装置和电子设备
CN112559399A (zh) * 2020-11-27 2021-03-26 山东云海国创云计算装备产业创新中心有限公司 一种多axi接口的ddr控制器及其控制方法

Citations (1)

* 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

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7610455B2 (en) * 2005-05-11 2009-10-27 Infineon Technologies Ag Technique to read special mode register
US9171585B2 (en) * 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
JP4615461B2 (ja) * 2006-03-10 2011-01-19 京セラミタ株式会社 メモリコントローラ
US8407394B2 (en) * 2008-01-08 2013-03-26 Cisco Technology, Inc. System and methods for memory expansion
US8825965B2 (en) * 2008-01-08 2014-09-02 Cisco Technology, Inc. System and methods for memory expansion
US7924637B2 (en) 2008-03-31 2011-04-12 Advanced Micro Devices, Inc. Method for training dynamic random access memory (DRAM) controller timing delays
JP5217786B2 (ja) * 2008-08-27 2013-06-19 セイコーエプソン株式会社 リクエスト調停装置及びリクエスト調停方法
US8102724B2 (en) 2009-01-29 2012-01-24 International Business Machines Corporation Setting controller VREF in a memory controller and memory device interface in a communication bus
US8363492B2 (en) * 2009-05-27 2013-01-29 Panasonic Corporation Delay adjustment device and delay adjustment method
EP2339795B1 (en) * 2009-12-07 2013-08-14 STMicroelectronics (Research & Development) Limited Inter-chip communication interface for a multi-chip package
EP2333673B1 (en) * 2009-12-07 2014-04-16 STMicroelectronics (Research & Development) Limited Signal sampling and transfer
US8274308B2 (en) * 2010-06-28 2012-09-25 Intel Corporation Method and apparatus for dynamic memory termination
US8850155B2 (en) 2011-12-19 2014-09-30 Advanced Micro Devices, Inc. DDR 2D Vref training
US9715467B2 (en) 2012-11-26 2017-07-25 Rambus Inc. Calibration protocol for command and address bus voltage reference in low-swing single-ended signaling
JP2016018430A (ja) * 2014-07-09 2016-02-01 ソニー株式会社 メモリ管理装置
US9846606B2 (en) 2014-11-07 2017-12-19 Mediatek Inc. Storage device calibration methods and controlling device using the same
US9933950B2 (en) * 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US10025685B2 (en) * 2015-03-27 2018-07-17 Intel Corporation Impedance compensation based on detecting sensor data
US10031677B1 (en) * 2015-10-14 2018-07-24 Rambus Inc. High-throughput low-latency hybrid memory module

Patent Citations (1)

* 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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220037518A (ko) * 2019-08-12 2022-03-24 어드밴스드 마이크로 디바이시즈, 인코포레이티드 영구 메모리 시스템 등을 위한 데이터 무결성

Also Published As

Publication number Publication date
EP3529703A4 (en) 2020-08-12
KR102444201B1 (ko) 2022-09-19
CN109863481B (zh) 2021-06-18
JP7181863B2 (ja) 2022-12-01
US9965222B1 (en) 2018-05-08
EP3529703A1 (en) 2019-08-28
CN109863481A (zh) 2019-06-07
JP2019536136A (ja) 2019-12-12
US20180113648A1 (en) 2018-04-26
EP4339769A2 (en) 2024-03-20
WO2018075118A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
KR102444201B1 (ko) 플랫폼 마지닝 및 디버그를 위한 소프트웨어 모드 레지스터 액세스
US11221772B2 (en) Self refresh state machine mop array
KR102235055B1 (ko) 미세 입도의 리프레시
KR102395745B1 (ko) 스트릭 및 판독/기입 트랜잭션 관리 기능을 갖는 메모리 제어기 아비터
US10037150B2 (en) Memory controller with virtual controller mode
EP3436958B1 (en) Low power memory throttling
JP7357169B2 (ja) Dramのリフレッシュ管理
JP2023508660A (ja) ダブルデータレートメモリトレーニングの削減によるメモリコンテキスト復元、システムオンチップのブート時間の短縮
EP3270295A1 (en) Memory controller with virtual controller mode

Legal Events

Date Code Title Description
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