KR20220116041A - 이기종 메모리 시스템용 시그널링 - Google Patents

이기종 메모리 시스템용 시그널링 Download PDF

Info

Publication number
KR20220116041A
KR20220116041A KR1020227025670A KR20227025670A KR20220116041A KR 20220116041 A KR20220116041 A KR 20220116041A KR 1020227025670 A KR1020227025670 A KR 1020227025670A KR 20227025670 A KR20227025670 A KR 20227025670A KR 20220116041 A KR20220116041 A KR 20220116041A
Authority
KR
South Korea
Prior art keywords
memory
volatile
queue
command
commands
Prior art date
Application number
KR1020227025670A
Other languages
English (en)
Other versions
KR102478527B1 (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 KR20220116041A publication Critical patent/KR20220116041A/ko
Application granted granted Critical
Publication of KR102478527B1 publication Critical patent/KR102478527B1/ko

Links

Images

Classifications

    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

메모리 제어기는 이기종 메모리 채널을 통해 비휘발성 스토리지 클래스 메모리(SCM) 모듈과 인터페이스하며, 메모리 액세스 커맨드를 수신하기 위한 커맨드 큐를 포함한다. 메모리 인터페이스 큐는 나가는 커맨드들을 보유하기 위해 커맨드 큐에 결합된다. 비휘발성 커맨드 큐는 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위해 커맨드 큐에 결합된다. 중재기는 커맨드 큐로부터 엔트리들을 선택하고, 이들을 이기종 메모리 채널을 통한 송신을 위해 메모리 인터페이스 큐에 배치한다. 제어회로는 응답 데이터가 비휘발성 판독 커맨드들에 대해 이용가능하다는 것을 표시하는 준비 응답을 비휘발성 SCM 모듈로부터 수신하기 위해 이기종 메모리 채널에 결합되고, 그리고 준비 응답을 수신하는 것에 응답하여, 비휘발성 SCM 모듈이 응답 데이터를 발송하도록 커맨딩하기 위해 메모리 인터페이스 큐에 발송 커맨드가 배치되게 한다.

Description

이기종 메모리 시스템용 시그널링
컴퓨터 시스템은 전형적으로 메인 메모리용으로 저렴하고 고밀도의 동적 랜덤 액세스 메모리(DRAM) 칩을 사용한다. 현재 판매되는 대부분의 DRAM 칩은 JEDEC(Joint Electron Devices Engineering Council)에서 공표한 다양한 DDR(Double Data Rate) DRAM 표준과 호환된다. DDR 메모리 제어기는 게시된 DDR 표준에 따라 다양한 메모리 액세스 에이전트와 DDR DRAM 사이의 인터페이스를 관리하는 데 사용된다.
영구 스토리지가 있는 비휘발성 듀얼 인라인 메모리 모듈("NVDIMM-P")은 표준 DDR DIMM 대신 사용할 수 있지만 영구 메모리를 포함하는 스토리지 클래스 메모리이다. 그러나, 이러한 메모리들은 비결정적(non-deterministic )액세스 레이턴시들을 가지며 비휘발성 메모리에 대한 액세스를 일시적으로 지연시킬 수 있는 온보드 매체 관리 활동들을 가질 수 있고, 따라서 이러한 메모리들은 NVDIMM-P로부터의 데이터의 가용성에 대해 호스트 제어기에 통지하기 위해 핸드쉐이크 프로토콜을 필요로 한다. JEDEC은 이러한 비결정론(non-determinism)의 성능 영향을 완화하고, 비순차적 트랜잭션들을 가능하게 하고 커맨드들을 스택하기 위한 기능들을 제공하기 위해 트랜잭션 프로토콜을 개발하고 있다.
도 1은 종래 기술에 공지된 가속 프로세싱 유닛(APU) 및 메모리 시스템을 블록도 형태로 예시한다.
도 2는 일부 실시예들에 따른 도 1의 것과 같은 APU에서 사용하기에 적합한 메모리 제어기를 블록도 형태로 예시한다.
도 3은 일부 실시예들에 따른 APU 및 메모리 채널들의 쌍을 블록도 형태로 예시한다.
도 4는 일부 실시예들에 따른 메모리 액세스 커맨드들을 핸들링하는 프로세스를 다이어그램 형태로 예시한다.
도 5는 도 4의 프로세스의 추가 부분들을 다이어그램 형태로 예시한다.
도 6은 도 4 및 5의 프로세스의 추가 부분을 다이어그램 형태로 예시한다.
도 7은 일부 실시예들에 따른 메모리 액세스 요청들을 핸들링하기 위한 프로세스의 흐름도이다.
이하의 설명에서, 상이한 도면들에서 동일한 참조 번호들의 사용은 유사하거나 동일한 항목들을 나타낸다. 달리 언급되지 않는 한, 단어 "결합" 및 그의 연관된 동사 형태는 당업계에 공지된 수단에 의한 직접 연결 및 간접 전기 연결 모두를 포함하며, 달리 언급되지 않는 한, 직접 연결의 임의의 설명은 또한 적절한 형태의 간접 전기 연결을 사용하는 대안적인 실시예를 의미한다.
예시적인 실시예의 상세한 설명
메모리 제어기는 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈과 인터페이싱한다. 메모리 제어기는 커맨드 큐, 메모리 인터페이스 큐, 비휘발성 커맨드 큐(NV 큐), 중재기(arbiter), 및 제어 회로를 포함한다. 커맨드 큐는 휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력 및 출력을 갖고, 복수의 엔트리들을 갖는다. 메모리 인터페이스 큐는 커맨드 큐의 출력에 결합된 입력, 및 적어도 하나의 비휘발성 SCM 모듈에 결합된 이기종 메모리 채널에 결합하기 위한 출력을 갖는다. NV 큐는 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위한 커맨드 큐의 출력에 결합된다. 중재기는 커맨드 큐로부터 엔트리들을 선택하고 이들을 메모리 인터페이스 큐에 배치하기 위해 커맨드 큐에 결합되어, 이들을 이기종 메모리 채널을 통해 송신되게 한다. 제어 회로는 비휘발성 판독 커맨드들 중 연관된 것에 대해 응답 데이터가 이용가능하다는 것을 표시하는 준비 응답(ready response)을 비휘발성 SCM 모듈로부터 수신하기 위해 이기종 메모리 채널에 결합되도록 적응되고, 그리고 이에 응답하여 비휘발성 SCM 모듈이 응답 데이터를 발송하도록 커맨딩하기 위해 메모리 인터페이스 큐에 발송 커맨드가 배치되게 한다.
방법은 휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 복수의 메모리 액세스 요청들을 수신하는 단계를 포함한다. 메모리 액세스 요청을 이행하기 위한 메모리 액세스 커맨드들은 메모리 인터페이스 큐에 배치되고 메모리 인터페이스 큐로부터 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 연결된 이기종 메모리 채널로 메모리 액세스 커맨드들을 송신한다. 방법은 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 NV 큐에 저장하는 단계를 포함한다. 응답 데이터가 비휘발성 판독 커맨드들 중 연관된 것에 대해 이용가능하다는 것을 표시하는 준비 응답이 비휘발성 SCM 모듈로부터 수신된다. 이에 응답하여, 방법은 비휘발성 SCM 모듈에 응답 데이터를 발송하도록 커맨딩하기 위한 발송 커맨드를 메모리 인터페이스 큐에 배치하는 단계를 포함한다.
데이터 프로세싱 시스템은 중앙 프로세싱 유닛, 중앙 프로세싱 유닛에 결합된 데이터 패브릭, 및 중앙 프로세싱 유닛으로부터의 메모리 요청들을 이행하기 위해 데이터 패브릭에 결합된 메모리 제어기를 포함한다. 메모리 제어기는 커맨드 큐, 메모리 인터페이스 큐, NV 큐, 중재기, 및 제어 회로를 포함한다. 커맨드 큐는 휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력 및 출력을 갖고, 복수의 엔트리들을 갖는다. 메모리 인터페이스 큐는 커맨드 큐의 출력에 결합된 입력, 및 적어도 하나의 비휘발성 SCM 모듈에 결합된 이기종 메모리 채널에 결합하기 위한 출력을 갖는다. NV 큐는 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위한 커맨드 큐의 출력에 결합된다. 중재기는 커맨드 큐로부터 엔트리들을 선택하고 이들을 메모리 인터페이스 큐에 배치하기 위해 커맨드 큐에 결합되어, 이들을 이기종 메모리 채널을 통해 송신되게 한다. 제어 회로는, 비휘발성 판독 커맨드들 중 연관된 것에 대해 응답 데이터가 이용가능하다는 것을 표시하는 준비 응답을 비휘발성 SCM 모듈로부터 수신하기 위해 이기종 메모리 채널에 결합되고, 그리고 준비 응답을 수신하는 것에 응답하여, 비휘발성 SCM 모듈이 응답 데이터를 발송하도록 명령하기 위해 발송 커맨드를 메모리 인터페이스 큐에 배치되게 한다.
도 1은 종래 기술에 공지된 가속 처리 유닛(APU)(100) 및 메모리 시스템(130)을 블록도 형태로 예시한다. APU(100)는 호스트 데이터 프로세싱 시스템에서 프로세서로서 사용하기에 적합한 집적 회로이며, 일반적으로 중앙 프로세싱 유닛(CPU) 코어 컴플렉스(110), 그래픽 코어(120), 디스플레이 엔진 세트(122), 메모리 관리 허브(140), 데이터 패브릭(125), 주변 제어기 세트(160), 주변 버스 제어기 세트(170) 및 시스템 관리 유닛(SMU)(180)을 포함한다.
CPU 코어 컴플렉스(110)는 CPU 코어(112) 및 CPU 코어(114)를 포함한다. 이 예에서, CPU 코어 컴플렉스(110)는 2개의 CPU 코어를 포함하지만, 다른 실시예에서, CPU 코어 컴플렉스(110)는 임의의 수의 CPU 코어를 포함할 수 있다. CPU 코어들(112 및 114) 각각은 제어 패브릭을 형성하는 시스템 관리 네트워크(SMN) 및 데이터 패브릭(125)에 양방향으로 연결되고, 데이터 패브릭(125)에 메모리 액세스 요청들을 제공할 수 있다. 각각의 CPU 코어들(112 및 114)은 단일 코어들일 수 있거나, 캐시와 같은 특정 리소스들을 공유하는 2개 이상의 단일 코어들을 갖는 코어 컴플렉스일 수 있다.
그래픽 코어(120)는 정점 프로세싱, 프래그먼트 프로세싱, 쉐이딩, 텍스처 블렌딩 등과 같은 그래픽 동작들을 고도로 통합되고 병렬적인 방식으로 수행할 수 있는 고성능 그래픽 프로세싱 유닛(GPU)이다. 그래픽 코어(120)는 SMN 및 데이터 패브릭(125)에 양방향으로 연결되고, 데이터 패브릭(125)에 메모리 액세스 요청들을 제공할 수 있다. 이와 관련하여, APU(100)는 CPU 코어 컴플렉스(110) 및 그래픽 코어(120)가 동일한 메모리 공간을 공유하는 통합 메모리 아키텍처, 또는 CPU 코어 컴플렉스(110) 및 그래픽 코어(120)가 메모리 공간의 일부를 공유하는 메모리 아키텍처를 지원할 수 있고, 그래픽 코어(120)는 또한 CPU 코어 컴플렉스(110)에 의해 액세스가능하지 않은 프라이빗(private) 그래픽 메모리를 사용한다.
디스플레이 엔진(122)은 모니터 상에 디스플레이하기 위해 그래픽 코어(120)에 의해 생성된 객체를 렌더링 및 래스터화한다. 그래픽 코어(120) 및 디스플레이 엔진들(122)은 메모리 시스템(130)의 적절한 어드레스들로의 균일한 변환(uniform translation)을 위해 공통 메모리 관리 허브(140)에 양방향으로 연결되고, 메모리 관리 허브(140)는 이러한 메모리 액세스들을 생성하고 메모리 시스템으로부터 반환된 판독 데이터를 수신하기 위해 데이터 패브릭(125)에 양방향으로 연결된다.
데이터 패브릭(125)은 임의의 메모리 액세스 에이전트와 메모리 관리 허브(140) 사이에서 메모리 액세스 요청들 및 메모리 응답들을 라우팅하기 위한 크로스바 스위치를 포함한다. 이는 또한, 시스템 구성에 기초하여 메모리 액세스들의 목적지들을 결정하기 위한 기본 입력/출력 시스템(BIOS)에 의해 정의된 시스템 메모리 맵, 및 각각의 가상 연결에 대한 버퍼들을 포함한다.
주변 제어기(160)는 범용 직렬 버스(USB) 제어기(162) 및 직렬 고급 기술 부착(SATA) 인터페이스 제어기(164)를 포함하며, 이들 각각은 시스템 허브(166) 및 SMN 버스에 양방향으로 연결된다. 이들 2개의 제어기는 APU(100)에서 사용될 수 있는 주변 제어기의 단지 예시적인 것이다.
주변 버스 제어기(170)는 시스템 제어기 또는 "사우스브릿지"(SB)(172) 및 주변 컴포넌트 상호연결 익스프레스(PCIe) 제어기(174)를 포함하며, 이들 각각은 입력/출력(I/O) 허브(176) 및 SMN 버스에 양방향으로 연결된다. I/O 허브(176)는 또한 시스템 허브(166) 및 데이터 패브릭(125)에 양방향으로 연결된다. 따라서, 예를 들어, CPU 코어는 데이터 패브릭(125)이 I/O 허브(176)를 통해 라우팅하는 액세스를 통해 USB 제어기(162), SATA 인터페이스 제어기(164), SB(172), 또는 PCIe 제어기(174)에 레지스터들을 프로그래밍할 수 있다. APU(100)를 위한 소프트웨어 및 펌웨어는 ROM(read-only memory), EEPROM(flash electrically erasable programmable ROM) 등과 같은 다양한 비휘발성 메모리 유형들 중 임의의 것일 수 있는 시스템 데이터 드라이브 또는 시스템 BIOS 메모리(미도시)에 저장된다. 전형적으로, BIOS 메모리는 PCIe 버스를 통해 액세스하고 시스템 데이터 드라이브는 SATA 인터페이스를 통해 액세스한다.
SMU(180)는 APU(100) 상의 리소스들의 동작을 제어하고 그들 사이의 통신을 동기화하는 로컬 제어기이다. SMU(180)는 APU(100) 상의 다양한 프로세서들의 파워-업 시퀀싱을 관리하고 리셋, 인에이블 및 다른 신호들을 통해 다수의 오프-칩 디바이스들을 제어한다. SMU(180)는 APU(100)의 컴포넌트들 각각에 대한 클록 신호들을 제공하기 위해 위상 고정 루프(PLL)와 같은 하나 이상의 클록 소스들(도시되지 않음)을 포함한다. SMU(180)는 또한 다양한 프로세서들 및 다른 기능 블록들에 대한 전력을 관리하고, 적절한 전력 상태들을 결정하기 위해 CPU 코어들(112 및 114) 및 그래픽 코어(120)로부터 측정된 전력 소비 값들을 수신할 수 있다.
메모리 관리 허브(140) 및 그 연관된 물리적 인터페이스(PHY)(151 및 152)는 이러한 실시예에서 APU(100)와 통합된다. 메모리 관리 허브(140)는 메모리 채널들(141 및 142) 및 전력 엔진(149)을 포함한다. 메모리 채널(141)은 호스트 인터페이스(145), 메모리 채널 제어기(143) 및 물리적 인터페이스(147)를 포함한다. 호스트 인터페이스(145)는 메모리 채널 제어기(143)를 직렬 존재 검출 링크(SDP)를 통해 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(147)는 메모리 채널 제어기(143)를 PHY(151)에 양방향으로 연결하고, DDR PHY 인터페이스(DFI) 사양을 따른다. 메모리 채널(142)은 호스트 인터페이스(146), 메모리 채널 제어기(144), 및 물리적 인터페이스(148)를 포함한다. 호스트 인터페이스(146)는 다른 SDP를 통해 메모리 채널 제어기(144)를 데이터 패브릭(125)에 양방향으로 연결한다. 물리적 인터페이스(148)는 메모리 채널 제어기(144)를 PHY(152)에 양방향으로 연결하고, DFI 사양을 따른다. 전력 엔진(149)은 SMN 버스를 통해 SMU(180)에, APB를 통해 PHY들(151 및 152)에 양방향으로 연결되고, 또한 메모리 채널 제어기들(143 및 144)에 양방향으로 연결된다. PHY(151)는 메모리 채널(131)에 대한 양방향 연결을 갖는다. PHY(152)는 양방향 연결 메모리 채널(133)을 갖는다.
메모리 관리 허브(140)는 2개의 메모리 채널 제어기들을 갖는 메모리 제어기의 인스턴스화이고, 아래에서 더 설명될 방식으로 메모리 채널 제어기(143) 및 메모리 채널 제어기(144) 모두의 동작을 제어하기 위해 공유 전력 엔진(149)을 사용한다. 메모리 채널들(141 및 142) 각각은 DDR 버전 4(DDR4), 저전력 DDR4(LPDDR4), 그래픽 DDR 버전 5(gDDR5), 및 고대역폭 메모리(HBM)와 같은 최신 DDR 메모리들에 연결될 수 있고, 미래의 메모리 기술들에 적응될 수 있다. 이러한 메모리들은 높은 버스 대역폭 및 고속 동작을 제공한다. 동시에 랩톱 컴퓨터와 같은 배터리 구동 애플리케이션의 전력을 절약하기 위해 저전력 모드를 제공하고 내장 열 모니터링도 제공한다.
메모리 시스템(130)은 메모리 채널(131) 및 메모리 채널(133)을 포함한다. 메모리 채널(131)은 DDRx 버스(132)에 연결된 듀얼 인라인 메모리 모듈(DIMM)의 세트를 포함하며, 이 예에서는 별도 랭크에 대응하는 대표적인 DIMM(134, 136, 138)을 포함한다. 마찬가지로, 메모리 채널(133)은 대표적인 DIMM들(135, 137 및 139)을 포함하는 DDRx 버스(129)에 연결된 DIMM들의 세트를 포함한다.
APU(100)는 호스트 데이터 프로세싱 시스템의 중앙 프로세싱 유닛(CPU)으로서 동작하고 모뎀 컴퓨터 시스템에서 유용한 다양한 버스 및 인터페이스를 제공한다. 이러한 인터페이스들은 2개의 DDRx(Double Data Rate) 메모리 채널들, PCIe 링크에 연결하기 위한 PCIe 루트 컴플렉스, USB 네트워크에 연결하기 위한 USB 제어기, 및 SATA 대용량 스토리지 디바이스에 대한 인터페이스를 포함한다.
APU(100)는 또한 다양한 시스템 모니터링 및 절전 기능을 구현한다. 특히 하나의 시스템 모니터링 기능은 열 모니터링이다. 예를 들어, APU(100)가 뜨거워지면, SMU(180)는 CPU 코어들(112 및 114) 및/또는 그래픽 코어(120)의 주파수 및 전압을 감소시킬 수 있다. APU(100)가 너무 뜨거워지면, 그것은 완전히 셧다운될 수 있다. 열 이벤트들은 또한 SMN 버스를 통해 SMU(180)에 의해 외부 센서들로부터 수신될 수 있고, SMU(180)는 응답으로 클록 주파수 및/또는 전력 공급 전압을 감소시킬 수 있다.
도 2는 도 1의 것과 같은 APU에서 사용하기에 적합한 메모리 제어기(200)를 블록도 형태로 예시한다. 메모리 제어기(200)는 일반적으로 메모리 채널 제어기(210) 및 전력 제어기(250)를 포함한다. 메모리 채널 제어기(210)는 일반적으로 인터페이스(212), 메모리 인터페이스 큐(214), 커맨드 큐(220), 어드레스 생성기(222), 콘텐츠 어드레스 지정 가능 메모리(content addressable memory, CAM)(224), 재생 큐(230)를 포함하는 재생 제어 로직(231), 리프레쉬 로직 블록(232), 타이밍 블록(234), 페이지 테이블(236), 중재기(238), 오류 정정 코드(error correction code, ECC) 체크 회로(242), ECC 생성 블록(244), 데이터 버퍼(246), 비휘발성 버퍼(27), 및 NV 큐(248)를 포함한다.
인터페이스(212)는 외부 버스를 통해 데이터 패브릭(125)에 대한 제1 양방향 연결을 갖고, 출력을 갖는다. 메모리 제어기(200)에서, 이 외부 버스는 "AXI4"로 알려진 영국 케임브리지의 PLC인 ARM 홀딩스에 의해 특정된 고급 확장 가능한 인터페이스 버전 4와 호환되지만, 다른 실시예들에서 다른 유형들의 인터페이스들일 수 있다. 인터페이스(212)는 FCLK(또는 MEMCLK) 도메인으로 알려진 제 1 클록 도메인으로부터 UCLK 도메인으로 알려진 메모리 제어기(200) 내부의 제 2 클록 도메인으로 메모리 액세스 요청들을 변환한다. 유사하게, 메모리 인터페이스 큐(214)는 UCLK 도메인으로부터 DFI인터페이스와 연관된 DFICLK 도메인으로의 메모리 액세스를 제공한다.
어드레스 생성기(222)는 AXI4 버스를 통해 데이터 패브릭(125)으로부터 수신된 메모리 액세스 요청들의 어드레스들을 디코딩한다. 메모리 액세스 요청들은 정규화된 포맷으로 표현된 물리적 어드레스 공간의 액세스 어드레스들을 포함한다. 어드레스 생성기(222)는 정규화된 어드레스를 메모리 시스템(130)의 실제 메모리 디바이스들을 어드레싱하고, 관련 액세스들을 효율적으로 스케줄링하기 위해 사용될 수 있는 포맷으로 변환한다. 이 포맷은 메모리 액세스 요청을 특정 랭크(rank), 로우(row) 어드레스, 컬럼(column) 어드레스, 뱅크(bank) 어드레스 및 뱅크 그룹과 연관시키는 영역 식별자를 포함한다. 시동 시에, 시스템 BIOS는 메모리 시스템(130)의 메모리 디바이스들을 쿼리하여(query) 그 크기 및 구성을 결정하고, 어드레스 생성기(222)와 연관된 구성 레지스터들의 세트를 프로그래밍한다. 어드레스 생성기(222)는 정규화된 어드레스들을 적절한 포맷으로 변환하기 위해 구성 레지스터들에 저장된 구성을 사용한다. 어드레스 생성기(222)는 NVDIMM-P 메모리를 포함하는 메모리의 어드레스 범위를 디코딩하고, 메모리 액세스 요청이 NVDIMM-P에 대한 요청인지 여부를 표시하는 디코딩된 신호를 커맨드 큐(220)에 저장한다. 중재기(238)는 그런 다음 다른 요청들에 비해 적절한 우선순위로 NVDIMM-P 요청들의 우선순위를 지정할 수 있다. 커맨드 큐(220)는 CPU 코어들(112 및 114) 및 그래픽 코어(120)와 같은 APU(100)의 메모리 액세스 에이전트들로부터 수신된 메모리 액세스 요청들의 큐이다. 커맨드 큐(220)는 어드레스 생성기(222)에 의해 디코딩된 어드레스 필드들뿐만 아니라, 중재기(238)가 액세스 유형 및 서비스 품질(QoS) 식별자들을 포함하는 메모리 액세스들을 효율적으로 선택할 수 있게 하는 다른 어드레스 정보를 저장한다. CAM(224)은 기록 후 기록(WAW) 및 기록 후 판독(RAW) 순서지정 mles과 같은 순서지정 mles을 시행하기 위한 정보를 포함한다.
오류 정정 코드(ECC) 생성 블록(244)은 NVDIMM-P로 발송될 기록 데이터의 ECC를 결정한다 ECC 체크 회로(242)는 수신된 ECC를 들어오는 ECC에 대해 체크한다.
재생 큐(230)는 어드레스 및 커맨드 패리티 응답들과 같은 응답들을 기다리고 있는 중재기(238)에 의해 선택된 선택 메모리 액세스들을 저장하기 위한 임시 큐이다. 재생 제어 로직(231)은 ECC 체크 회로(242)에 액세스하여, 반환된 ECC가 정확한지 또는 오류를 표시하는지를 결정한다. 재생 제어 로직(231)은 이들 사이클들 중 하나의 패리티 또는 ECC 오류의 경우에 액세스들이 재생되는 재생 시퀀스를 개시하고 제어한다. 재생된 커맨드들은 메모리 인터페이스 큐(214)에 배치된다.
리프레시 로직(232)은 메모리 액세스 에이전트들로부터 수신된 정상 판독 및 기록 메모리 액세스 요청들과 별도로 생성되는 다양한 파워다운, 리프레시 및 종단 저항(ZQ) 교정(calibration) 사이클들을 위한 상태 머신들을 포함한다. 예를 들어, 메모리 랭크가 프리차지 파워다운 상태에 있는 경우, 리프레시 사이클들을 실행하기 위해 주기적으로 일어나야(awakened) 한다. 리프레쉬 로직(232)은 주기적으로 리프레쉬 커맨드를 생성하여 DRAM 칩들의 메모리 셀들의 스토리지 커패시터들로부터의 전하 누설에 의해 야기되는 데이터 오류를 방지한다. 또한, 리프레시 로직(232)은 시스템의 열 변화들로 인한 온-다이 종단 저항의 불일치를 방지하기 위해 ZQ를 주기적으로 교정한다.
중재기(238)는 커맨드 큐(220)에 양방향으로 연결되고 메모리 채널 제어기(210)의 핵심이다. 메모리 버스의 사용을 개선하기 위해 액세스의 지능적 스케줄링에 의해 효율성을 향상시킨다. 중재기(238)는 타이밍 블록(234)을 사용하여 커맨드 큐(220)의 특정 액세스들이 DRAM 타이밍 파라미터들에 기초하여 발행(issuance)에 적격한지(eligible) 여부를 결정함으로써 적절한 타이밍 관계들을 시행한다. 예를 들어, 각각의 DRAM은 "tRc"로 알려진 활성화 커맨드들 사이에 최소 특정된 시간을 갖는다. 타이밍 블록(234)은 JEDEC 사양에서 특정된 이 및 다른 타이밍 파라미터들에 기초하여 적격성(eligibility)을 결정하는 카운터들의 세트를 유지하고, 재생 큐(230)에 양방향으로 연결된다. 페이지 테이블(236)은 중재기(238)에 대한 메모리 채널의 각각 뱅크 및 랭크의 활성 페이지들에 대한 상태 정보를 유지하고, 재생 큐(230)에 양방향으로 연결된다.
NV 버퍼(247)는 재생 시퀀스들에서 사용하기 위해 그리고 NV 판독 응답들을 관리하기 위해 NV 판독 커맨드들을 NV 큐(248)에 저장한다. NV 버퍼(247)는 아래에서 더 설명되는 바와 같이 RD RDY 및 SEND 커맨드를 핸들링하기 위해 메모리 인터페이스 큐(214)에 양방향으로 연결된다.
인터페이스(212)로부터 수신된 기록 메모리 액세스 요청에 응답하여, ECC 생성 블록(244)은 기록 데이터에 따라 ECC를 계산한다. 데이터 버퍼(246)는 수신된 메모리 액세스 요청들에 대한 기록 데이터 및 ECC를 저장한다. 중재기(238)가 메모리 채널로의 디스패치를 위해 대응하는 기록 액세스를 선택할 때, 결합된 기록 데이터/ECC를 메모리 인터페이스 큐(214)에 출력한다.
전력 제어기(250)는 일반적으로 고급 확장 인터페이스, 버전 1(AXI), 고급 주변 버스(APB) 인터페이스(254) 및 전력 엔진(260)에 대한 인터페이스(252)를 포함한다. 인터페이스(252)는 도 2에 별도로 도시된 "EVENT n"으로 라벨링된 이벤트 신호를 수신하기 위한 입력 및 출력을 포함하는 SMN에 대한 제1 양방향 연결을 갖는다. APB 인터페이스(254)는 인터페이스(252)의 출력에 연결된 입력 및 APB를 통한 PHY로의 연결을 위한 출력을 갖는다. 전력 엔진(260)은 인터페이스(252)의 출력에 연결된 입력, 및 메모리 인터페이스 큐(214)의 입력에 연결된 출력을 갖는다. 전력 엔진(260)은 구성 레지스터 세트(262), 마이크로 제어기(pC)(264), 셀프 리프레시 제어기(SLFREF/PE)(266), 및 신뢰성 있는 판독/기록 타이밍 엔진(RRW/TE)(268)을 포함한다. 구성 레지스터(262)는 AXI 버스를 통해 프로그래밍되고, 메모리 제어기(200)의 다양한 블록의 동작을 제어하기 위한 구성 정보를 저장한다. 따라서, 구성 레지스터(262)는 도 2에 상세히 도시되지 않은 이들 블록에 연결된 출력을 갖는다. 셀프 리프레시 제어기(266)는 리프레시 로직(232)에 의한 리프레시들의 자동 생성 외에 리프레시들의 수동 생성을 허용하는 엔진이다. 신뢰성 있는 판독/기록 타이밍 엔진(268)은 DDR 인터페이스 최대 판독 레이턴시(MRL) 트레이닝 및 루프백 테스트와 같은 목적들을 위해 메모리 또는 I/O 디바이스들에 대한 연속적인 메모리 액세스 스트림을 제공한다.
메모리 채널 제어기(210)는 연관된 메모리 채널로의 디스패치를 위해 메모리 액세스들을 선택할 수 있게 하는 회로부를 포함한다. 원하는 중재(arbitration) 결정을 행하기 위해, 어드레스 생성기(222)는 어드레스 정보를 메모리 시스템의 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스 및 뱅크 그룹을 포함하는 미리디코딩된 정보로 디코딩하고, 커맨드 큐(220)는 미리디코딩된 정보를 저장한다. 구성 레지스터들(262)은 어드레스 생성기(222)가 수신된 어드레스 정보를 어떻게 디코딩하는지를 결정하기 위해 구성 정보를 저장한다. 중재기(238)는 서비스 품질(QoS) 요건과 같은 다른 기준을 관찰하면서 메모리 액세스를 효율적으로 스케줄링하기 위해 디코딩된 어드레스 정보, 타이밍 블록(234)에 의해 표시된 타이밍 적격성 정보, 및 페이지 테이블(236)에 의해 표시된 활성 페이지 정보를 사용한다. 예를 들어, 중재기(238)는 메모리 페이지들을 변경하기 위해 요구되는 프리차지 및 활성화 커맨드들의 오버헤드를 회피하기 위해 개방 페이지들에 대한 액세스들에 대한 선호도(preference)를 구현하고, 이들을 다른 뱅크에 대한 판독 및 기록 액세스들과 인터리빙함으로써 하나의 뱅크에 대한 오버헤드 액세스들을 숨긴다. 특히, 정상 동작 동안, 중재기(238)는, 상이한 페이지를 선택하기 전에 프리차지될 필요가 있을 때까지, 상이한 뱅크에서 페이지를 정상적으로 개방시킨다.
도 3은 일부 실시예들에 따른 데이터 프로세싱 시스템(300)을 블록도 형태로 예시한다. 데이터 프로세싱 시스템(300)은 메모리 시스템(330) 및 APU(310)를 포함한다. APU(310)는 메모리 시스템(330)과 인터페이스하기 위해 이기종 메모리 채널을 지원하는 메모리 제어기(200)(도 2)와 같은 메모리 제어기를 포함한다. 정상 DDRx 메모리 채널 이외에, APU(310)는 버스(342)를 통해 연결된 RDIMM들(344, 346 및 348)만을 갖는 이기종 메모리 채널(340) 이외에, 정상 레지스터 DIMM들 또는 RDIMM들(334 및 336) 및 NVDIMM-P(338) 모두를 갖는 이기종 메모리 채널(330) 상에서 NVDIMM-P(338)를 지원한다. 이 실시예에서 이기종 메모리 채널(330)은 NVDIMM-P들 및 RDIMM들 모두에 연결되지만, 이기종 메모리 채널은 일부 실시예에서 모든 NVDIMM-P 유형 DIMM들과 인터페이스하는 능력을 갖는다.
NVDIMM-P 표준 초안에 따르면, APU(310) 상의 메모리 제어기와 NVDIMM-P(338) 사이의 트랜잭션은 "링크" ECC에 의해 보호된다. 링크 ECC는 버스(332)를 통한 메모리 제어기와 NVDIMM 사이의 데이터 전송에 대한 데이터 무결성(integrity)을 보장한다. 공지된 ECC 메커니즘에 따라, 랜덤 또는 과도 오류에 의해 야기되는 링크 상의 데이터 손상으로부터 보호한다. 보호는 사용된 ECC 코드에 따라 다르다. ECC는 예를 들어, 다중-비트 오류 검출을 갖는 단일-비트 정정을 허용할 수 있다. 정정 불가능한 오류를 검출하는 것에 응답하여, 메모리 제어기는 과도 또는 랜덤 오류가 지속되지 않도록 트랜잭션을 재생할 수 있고, 또한 정정 가능한 및 정정 불가능한 오류들 모두를 운영 시스템에 보고할 수 있다.
NVDIMM-P 유형 DIMM들이 이 실시예에서 설명되지만, 다른 실시예는 이기종 메모리 채널을 통해 다른 유형의 스토리지 클래스 메모리(SCM) 모듈과 인터페이스하기 위해 본 명세서에서 기술을 채용한다. 본 명세서에서 사용되는 바와 같이, SCM은 시스템 메모리 공간에서 어드레싱가능한 비휘발성 메모리를 갖는 메모리 모듈을 표시한다. SCM 모듈의 비휘발성 메모리는 SCM 모듈 상에서 RAM과 버퍼링되거나 및/또는 RAM과 페어링될 수 있다. SCM 메모리 어드레스 맵은 운영 체제(OS) 관점에서 기존의 DRAM 개체군(population)과 함께 나타난다. OS는 전형적으로 SCM 정의 어드레스 범위가 종래의 메모리와 "다른" 유형의 메모리임을 인지한다. 이러한 구별은 OS에 이 메모리가 더 잠재되어(latent) 있고 지속적인 품질을 가질 수 있음을 알리기 위한 것이다. OS는 SCM 메모리를 직접 액세스 메모리 또는 파일 시스템 액세스 메모리로 매핑할 수 있다. 직접 액세스는 물리적 어드레싱 가능 메모리로 SCM 어드레스 범위에 액세스하는 OS를 의미한다. 파일 시스템 액세스는 OS가 파일 시스템의 일부로서 영구 메모리를 관리하고 파일 기반 API를 통해 SCM에 대한 액세스를 관리하는 것을 의미한다. 궁극적으로, 요청은 상위 레벨의 OS가 액세스를 관리하는 방법과 독립적으로 SCM 어드레스 범위 내의 메모리 제어기에 제공된다.
도 4-6은 일부 실시예들에 따른 비휘발성 판독 커맨드들을 핸들링하는 프로세스(700)(도 7)를 예시하는 일련의 도면들이다. 도시된 프로세스는 XREAD 커맨드들과 같은 NV 판독 커맨드들을 보유하기 위해, 커맨드들의 이행을 완료하기 위해 그리고 커맨드들의 재생을 필요로 하는 오류가 발생할 경우, 재생 프로세스에 대해 커맨드들을 이용가능하게 하기 위해 NV 큐(248)의 사용을 포함한다. 도 4 내지 도 6을 도 7을 참고하여 설명한다.
도 7은 일부 실시예들에 따라 메모리 액세스 커맨드들을 핸들링하기 위한 프로세스(700)의 흐름도이다. 프로세스(700)는 도 2의 메모리 제어기(200), 또는 다른 메모리 제어기 배열들로 구현에 적합하다. 프로세스(700)는 블록(702)에서 시작하고, 여기서 프로세스는 휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 복수의 메모리 액세스 요청들을 수신한다. 요청들을 풀링(fulling)하기 위한 메모리 액세스 커맨드들은 블록(704)에서 디코딩되고 커맨드 큐(220)(도 2)와 같은 커맨드 큐에 배치된다.
블록(706)에서, 커맨드 큐로부터의 메모리 액세스 커맨드들은 이기종 메모리 채널을 통한 송신을 위해 선택된다. 선택은 전형적으로 중재기(238)(도 2)와 같은 중재기에 의해 수행된다. 선택된 메모리 액세스 커맨드들은 송신될 메모리 인터페이스 큐에 배치된다. 이것의 예는 도 4의 다이어그램에서 도시되며, 화살표(401)는 메모리 인터페이스 큐 내에 배치되는 커맨드들을 도시한다. 블록(708)에서, 프로세스(700)는 메모리 인터페이스 큐에 배치된 비휘발성 판독 커맨드들을 NV 큐(248)(도 2)와 같은 비휘발성 커맨드 큐(NV 큐)에 저장한다. 이것의 예는 화살표(402)로 도시되며, 여기서 메모리 인터페이스 큐로 발송된 XREAD 커맨드는 NV 큐에 저장된다. 메모리 인터페이스 큐로부터의 메모리 액세스 커맨드들은 휘발성 듀얼 인라인 메모리 모듈(DIMM) 및 비휘발성 DIMM에 결합된 이기종 메모리 채널로 송신된다. 메모리 인터페이스 큐로부터의 메모리 액세스 커맨드의 송신은 이기종 메모리 채널을 통해 비휘발성 DIMM, 이 경우 매체 제어기, 비휘발성 매체 및 DRAM을 포함하는 NVDIMM-P로 전달되는 XREAD 커맨드를 도시하는 화살표(403)로 도시된다.
이기종 메모리 채널을 통해 송신되는 비휘발성 판독 커맨드들에 대해, 비휘발성 DIMM은 전형적으로, 비휘발성 DIMM의 비휘발성 메모리에서, 비휘발성 DIMM의 DRAM에서 또는 매체 제어기의 캐시에서 있을 수 있는, 요청된 데이터를 판독하는 예측가능하지 않은 프로세스로 인해, 비결정적 시간 기간 후에 응답한다. 비결정적 시간 기간 동안, 다른 메모리 액세스 커맨드들은 전형적으로 이행되고 메모리 인터페이스 큐로부터 제거된다. 비휘발성 DIMM의 매체 제어기는 요청된 데이터를 판독하는 프로세스를 완료하면, 준비 응답 신호(RD RDY)를 메모리 제어기에 발송한다. 전형적으로, RD RDY 신호는 메모리 인터페이스 큐가 메모리 액세스 커맨드들에 대한 응답들을 수신하는 서브채널보다는 이기종 메모리 채널의 별도 서브채널 상에서 발송 및 수신된다. 예를 들어, NVDIMM-P 메모리 채널을 사용하여, RD RDY 신호는 전형적으로 커맨드들 및 데이터가 송신되는 "CMD" 및 "DQ" 라인들과 별도의 메모리 채널의 "RSP R" 라인 상으로 발송된다.
블록(712)에서, RD RDY 신호는 비휘발성 DIMM으로부터 수신되어, 응답 데이터가 비휘발성 판독 커맨드들 중 연관된 것에 대해 이용가능하다는 것을 표시한다. 이 예에서 NV 버퍼 제어 회로부인 제어 회로는 RD RDY 신호를 수신한다. 도 5의 화살표(404)는 비휘발성 DIMM으로부터 NV 버퍼 제어 회로로 전달되는 RD RDY 신호를 도시한다. 이에 응답하여, 블록(714)에서, 제어 회로는 화살표(405)로 도시된 바와 같이 SEND 커맨드를 메모리 인터페이스 큐에 배치한다. 이에 따라, SEND 커맨드는 도 6의 화살표(406)로 도시된 비휘발성 DIMM으로의 송신을 위해 스케줄링 또는 큐잉된다. SEND 커맨드는 결정적 응답 시간을 갖는데, 그 이유는 SEND 커맨드가 도착할 때, 응답 데이터가 비휘발성 DIMM으로부터 발송될 준비가 되고, 따라서 SEND 커맨드는 메모리 인터페이스 큐 동작에 비결정적 지연을 부가하지 않기 때문이다. 비휘발성 판독 커맨드가 NV 큐가 아닌 메모리 인터페이스 큐에 유지되면, 커맨드가 이행될 때까지, 메모리 인터페이스 큐를 "막히게(clog)"하여, 다른 커맨드의 프로세싱을 지연시키고 커맨드의 전체 프로세싱에 지연을 부가할 것이다.
SEND 커맨드를 수신하면, 비휘발성 DIMM 매체 제어기는 커맨드에 대한 관련 식별자를 포함하여 비휘발성 판독 커맨드에 대해 판독된 응답 데이터를 메모리 제어기로 다시 송신한다. 이 실시예에서 연관된 식별자는 메모리 제어기에 송신된 데이터 및 RID를 도시하는 도 6의 화살표(407)에 의해 도시된 바와 같이 판독 커맨드에 대한 판독 식별자 "RID"이다.
블록(716)에서, 응답 데이터 및 연관 식별자는 메모리 제어기에 의해 비휘발성 DIMM으로부터 수신된다. 이에 응답하여, 메모리 제어기의 NV 버퍼는 연관된 식별자를 사용하여 동일한 연관된 식별자를 갖는 NV 큐의 비휘발성 판독 커맨드를 식별한다. 블록(718)에서, 비휘발성 준비 커맨드가 생성된 연관된 비휘발성 판독 요청의 이행으로 응답 데이터가 제공된다. 이는 요청을 이행하고, 연관된 비휘발성 판독 커맨드는 화살표(408)에 의해 도시된 바와 같이 NV 큐 및 NV 큐의 제거된(crossed-out) XREAD 커맨드로부터 제거된다.
일부 실시예들에서, 프로세스(700)는 중재기(238)(도 2)와 같은 중재기로 메모리 액세스 커맨드들을 스케줄링하는 것을 포함한다. 일 예에서, 메모리 액세스 커맨드들을 메모리 인터페이스 큐에 배치하기 전에, 프로세스는 비휘발성 판독 커맨드들을 다른 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화한다. 이러한 그룹화는 도 4에 도시되어 있으며, 화살표(401)는 새로운 순서로 메모리 인터페이스 큐에 배치된 메모리 액세스 커맨드들을 도시하며, READ(휘발성 판독 커맨드) 및 XREAD(비휘발성 판독 커맨드의 유형) 커맨드들은 함께 그룹화, 및 WRITE(휘발성 기록 커맨드) 및 XWRITE(비휘발성 기록 커맨드의 유형) 커맨드들은 함께 그룹화된다.
일부 실시예들에서, 블록(714)의 프로세스(700)는, SEND 커맨드를 메모리 인터페이스 큐에 배치하기 전에, SEND 커맨드를 SEND 커맨드를 메모리 인터페이스 큐에 배치하기 전에 비휘발성 또는 휘발성 판독 커맨드들의 그룹으로 그룹화하는 것을 더 포함한다. 이것은 도 5의 화살표(405)에서 도시되며, 여기서 SEND 커맨드는 READ 커맨드들의 그룹에 배치된다.
따라서, 본 명세서에 설명된 바와 같은 메모리 제어기 및 데이터 프로세싱 시스템은 이기종 메모리 채널 상의 비휘발성 DIMM들과 인터페이스하는 메모리 제어기의 능력을 향상시킨다. 더욱이, 본 명세서에서의 메모리 제어기는 메모리 인터페이스 큐가 비휘발성 판독 커맨드들이 이행될 때까지 긴 시간 기간 동안 비휘발성 판독 커맨드들을 보유할 필요를 제거함으로써 메모리 인터페이스 큐에 대해 필요한 길이를 감소시킨다.
도 2의 메모리 제어기(200) 또는 그 임의의 부분, 예컨대 중재기(238)는 프로그램에 의해 판독될 수 있고 집적 회로를 제조하기 위해 직접 또는 간접적으로 사용될 수 있는 데이터베이스 또는 다른 데이터 구조의 형태로 컴퓨터 액세스 가능한 데이터 구조에 의해 설명되거나 표현될 수 있다. 예를 들어, 이러한 데이터 구조는 Verilog 또는 VHDL과 같은 고레벨 설계 언어(HDL)에서의 하드웨어 기능의 행동 레벨 설명 또는 레지스터-전송 레벨(RTL) 기술일 수 있다. 설명은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 넷리스트를 생성하기 위해 설명을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 넷리스트는 또한 집적 회로들을 포함하는 하드웨어의 기능을 나타내는 게이트들의 세트를 포함한다. 그런 다음 넷리스트는 마스크들에 적용될 기하학적 형상들을 설명하는 데이터 세트를 생성하도록 배치 및 라우팅될 수 있다. 마스크들은 그런 다음 집적 회로들을 생성하기 위해 다양한 반도체 제조 단계들에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스가능 스토리지 매체 상의 데이터베이스는 넷리스트(합성 라이브러리를 갖거나 갖지 않음) 또는 원하는 경우 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정 실시예들이 설명되었지만, 이들 실시예들에 대한 다양한 수정들은 당업자에게 명백할 것이다. 예를 들어, 메모리 채널 제어기(210) 및/또는 전력 엔진(250)의 내부 아키텍처는 상이한 실시예들에서 변할 수 있다. 메모리 제어기(200)는 NVDIMM-P 및 DDRx 이외의 다른 유형의 메모리, 예컨대 고대역폭 메모리(HBM), RAMbus DRAM(RDRAM) 등과 인터페이싱할 수 있다. 예시된 실시예는 별도 DIMM들에 대응하는 메모리의 각각의 랭크를 도시하였지만, 다른 실시예들에서 각각의 DIMM은 다중 랭크들을 지원할 수 있다. 또한, 이기종 메모리 채널이 일반적으로 지원되지만, 이기종 채널은 전체적으로 비휘발성 DIMM으로 채워질 수 있다. 또한, 본 명세서에서 논의된 비휘발성 판독 커맨드들의 예시적인 유형이 XREAD 커맨드들이지만, 다른 유형들의 비휘발성 판독 커맨드들이 지원된다. 예를 들어, NVDIMM-P 사양은 요청된 메모리가 비휘발성 DIMM 상의 DRAM에서 발견되는 경우 결정적 응답 시간을 갖는 추측(speculative) 판독(SREAD) 커맨드를 제공하지만, 비휘발성 DIMM이 요청된 데이터가 DRAM에서 이용가능하지 않고 대신에 비휘발성 메모리 매체로부터 판독해야 한다고 결정하는 경우 비결정적 응답 시간을 갖는 비휘발성 판독으로 해석된다. 일부 실시예들에서, 그러한 "미스"가 발생하면, SREAD 커맨드들이 또한 NV 큐에 부가되고, 그런 다음 XREAD들과 유사하게 처리된다.
따라서, 개시된 실시예들의 범위 내에 속하는 개시된 실시예들의 모든 수정들을 포함하는 것이 첨부된 청구항들에 의해 의도된다.

Claims (18)

  1. 메모리 제어기에 있어서,
    휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 갖고, 복수의 엔트리들을 갖는 커맨드 큐;
    상기 커맨드 큐의 상기 출력에 결합된 입력 및 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종 메모리 채널에 결합하기 위한 출력을 갖는 메모리 인터페이스 큐;
    상기 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위해 상기 커맨드 큐의 상기 출력에 결합되는 비휘발성 커맨드 큐(NV 큐);
    상기 커맨드 큐로부터 엔트리들을 선택하고, 이들을 상기 이기종 메모리 채널을 통해 송신되게 하는 상기 메모리 인터페이스 큐에 이들을 배치하기 위해 상기 커맨드 큐에 결합된 중재기(arbiter); 및
    응답 데이터가 상기 비휘발성 판독 커맨드들 중 연관된 것에 대해 이용가능하다는 것을 표시하는 준비 응답을 상기 비휘발성 SCM 모듈로부터 수신하기 위해 상기 이기종 메모리 채널에 결합되도록 적응되고, 그리고 상기 준비 응답을 수신하는 것에 응답하여, 상기 비휘발성 SCM 모듈이 상기 응답 데이터를 발송하도록 커맨딩하기 위해 상기 메모리 인터페이스 큐에 발송 커맨드가 배치되게 하는 제어 회로를 포함하는, 메모리 제어기.
  2. 제1항에 있어서, 상기 제어 회로는, 상기 비휘발성 SCM 모듈로부터 응답 데이터 및 연관된 식별자가 수신되었음을 검출하고, 이에 응답하여, 상기 연관된 식별자를 사용하여 상기 비휘발성 큐에서 상기 연관된 비휘발성 판독 커맨드를 식별하고, 상기 비휘발성 큐로부터 상기 연관된 비휘발성 판독 커맨드를 제거하도록 추가로 적응되는, 메모리 제어기.
  3. 제1항에 있어서, 상기 중재기는, 상기 메모리 인터페이스 큐에 상기 메모리 액세스 커맨드들을 배치하기 전에, 비휘발성 메모리 판독 커맨드들을 다른 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화하는, 메모리 제어기.
  4. 제3항에 있어서, 상기 중재기는 상기 발송 커맨드를 상기 메모리 인터페이스 큐에 배치하기 전에 상기 발송 커맨드를 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화하는, 메모리 제어기.
  5. 제1항에 있어서,
    상기 메모리 제어기는 상기 연관된 비휘발성 판독 커맨드 다음의 비결정적 시간 기간(non-deterministic time period) 후에 상기 준비 응답을 수신하도록 동작가능하고; 및
    상기 비결정적 시간 기간 동안, 상기 메모리 제어기는 다른 메모리 액세스 커맨드들을 이행하고, 이들을 상기 메모리 인터페이스 큐로부터 제거하도록 동작가능한 것인, 메모리 제어기.
  6. 제1항에 있어서, 상기 제어 회로는 상기 메모리 인터페이스 큐가 상기 메모리 액세스 커맨드들에 대한 응답들을 수신하는 서브 채널보다 상기 이기종 메모리 채널의 별도 서브 채널 상에서 상기 준비 응답을 수신하는, 메모리 제어기.
  7. 방법에 있어서,
    휘발성 메모리 판독들, 휘발성 메모리 기록들, 비휘발성 메모리 판독들, 및 비휘발성 메모리 기록들을 포함하는 복수의 메모리 액세스 요청들을 수신하는 단계;
    상기 메모리 액세스 요청들을 이행하기 위한 메모리 액세스 커맨드들을 메모리 인터페이스 큐에 배치하고, 상기 메모리 액세스 커맨드들을 상기 메모리 인터페이스 큐로부터 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종 메모리 채널로 송신하는 단계;
    상기 메모리 인터페이스 큐에 배치된 상기 비휘발성 판독 커맨드들을 비휘발성 커맨드 큐(NV 큐)에 저장하는 단계; 및
    상기 비휘발성 판독 커맨드들 중 연관된 것에 대해 응답 데이터가 이용가능하다는 것을 표시하는 준비 응답을 상기 비휘발성 SCM 모듈로부터 수신하는 단계, 상기 준비 응답을 수신하는 것에 응답하여, 상기 메모리 인터페이스 큐에 상기 응답 데이터를 발송하도록 비휘발성 SCM 모듈에 커맨딩하기 위한 발송 커맨드를 배치하는 단계를 포함하는, 방법.
  8. 제7항에 있어서, 상기 비휘발성 SCM 모듈로부터 상기 응답 데이터 및 연관된 식별자를 수신하는 단계, 및 이에 응답하여, 상기 연관된 식별자를 사용하여 상기 NV 큐에서 상기 연관된 비휘발성 판독 커맨드를 식별하는 단계, 연관된 비휘발성 판독 요청의 이행으로 상기 응답 데이터를 제공하는 단계, 및 상기 NV 큐로부터 상기 연관된 비휘발성 판독 커맨드를 제거하는 단계를 더 포함하는, 방법.
  9. 제7항에 있어서, 상기 메모리 인터페이스 큐에 상기 메모리 액세스 커맨드들을 배치하기 전에, 비휘발성 판독 커맨드들을 다른 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서, 상기 메모리 인터페이스 큐에 상기 발송 커맨드를 배치하기 전에, 상기 메모리 인터페이스 큐에 상기 발송 커맨드를 배치하기 전에, 상기 발송 커맨드를 비휘발성 또는 휘발성 판독 커맨드들의 그룹과 그룹화하는 단계를 더 포함하는, 방법.
  11. 제7항에 있어서,
    상기 준비 응답은 상기 연관된 비휘발성 판독 커맨드 다음의 비결정적 시간 기간 후에 수신되고; 및
    상기 비결정적 시간 기간 동안, 다른 메모리 액세스 커맨드들이 이행되고 상기 메모리 인터페이스 큐로부터 제거되는, 방법.
  12. 제7항에 있어서, 상기 준비 응답은 상기 메모리 인터페이스 큐가 상기 메모리 액세스 커맨드들에 대한 응답들을 수신하는 서브 채널보다 상기 이기종 메모리 채널의 별도 서브 채널 상에서 수신되는, 방법.
  13. 데이터 프로세싱 시스템에 있어서,
    중앙 프로세싱 유닛;
    상기 중앙 프로세싱 유닛에 결합된 데이터 패브릭; 및
    상기 중앙 프로세싱 유닛으로부터의 메모리 요청들을 이행하기 위해 상기 데이터 패브릭에 결합된 메모리 제어기를 포함하고, 상기 메모리 제어기는,
    휘발성 판독 커맨드들, 휘발성 기록 커맨드들, 비휘발성 판독 커맨드들, 및 비휘발성 기록 커맨드들을 포함하는 메모리 액세스 커맨드들을 수신하기 위한 제1 입력, 및 출력을 갖고, 복수의 엔트리들을 갖는 커맨드 큐;
    상기 커맨드 큐의 상기 출력에 결합된 입력 및 적어도 하나의 비휘발성 스토리지 클래스 메모리(SCM) 모듈에 결합된 이기종 메모리 채널에 결합된 출력을 갖는 메모리 인터페이스 큐;
    상기 메모리 인터페이스 큐에 배치되는 비휘발성 판독 커맨드들을 저장하기 위해 상기 커맨드 큐의 상기 출력에 결합되는 비휘발성 커맨드 큐(NV 큐);
    상기 커맨드 큐로부터 엔트리들을 선택하고, 이들을 상기 이기종 메모리 채널을 통해 송신되게 하는 상기 메모리 인터페이스 큐에 이들을 배치하기 위해 상기 커맨드 큐에 결합된 중재기; 및
    응답 데이터가 상기 비휘발성 판독 커맨드들 중 연관된 것에 대해 이용가능하다는 것을 표시하는 준비 응답을 상기 비휘발성 SCM 모듈로부터 수신하기 위해 상기 이기종 메모리 채널에 결합되고, 그리고 상기 준비 응답을 수신하는 것에 응답하여, 상기 비휘발성 SCM 모듈이 상기 응답 데이터를 발송하도록 커맨딩하기 위해 상기 메모리 인터페이스 큐에 발송 커맨드가 배치되게 하는 제어 로직을 포함하는, 데이터 프로세싱 시스템.
  14. 제13항에 있어서, 상기 제어 로직은, 상기 비휘발성 SCM 모듈로부터 응답 데이터 및 연관된 식별자가 수신됨을 추가로 검출하고, 이에 응답하여, 상기 연관된 식별자를 사용하여 상기 NV 큐에서 상기 연관된 비휘발성 판독 커맨드를 식별하고, 상기 NV 큐로부터 상기 연관된 비휘발성 판독 커맨드를 제거하는, 데이터 프로세싱 시스템.
  15. 제13항에 있어서, 상기 중재기는, 상기 메모리 인터페이스 큐에 상기 메모리 액세스 커맨드들을 배치하기 전에, 비휘발성 판독 커맨드들을 다른 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화하는, 데이터 프로세싱 시스템.
  16. 제15항에 있어서, 상기 중재기는 상기 발송 커맨드를 상기 메모리 인터페이스 큐에 배치하기 전에 상기 발송 커맨드를 비휘발성 판독 커맨드들 또는 휘발성 판독 커맨드들과 그룹화하는, 데이터 프로세싱 시스템.
  17. 제13항에 있어서,
    상기 메모리 제어기는 상기 연관된 비휘발성 판독 커맨드 다음의 비결정적 시간 기간 후에 상기 준비 응답을 수신하고; 및
    상기 비결정적 시간 기간 동안, 상기 메모리 제어기는 다른 메모리 액세스 커맨드들을 이행하고, 이들을 상기 메모리 인터페이스 큐로부터 제거하는, 데이터 프로세싱 시스템.
  18. 제13항에 있어서, 상기 준비 응답은 상기 메모리 인터페이스 큐가 상기 메모리 액세스 커맨드들 중 다른 하나에 대한 응답들을 수신하는 서브 채널보다 상기 이기종 메모리 채널의 별도 서브 채널 상에서 수신되는, 데이터 프로세싱 시스템.
KR1020227025670A 2019-12-30 2020-12-10 이기종 메모리 시스템용 시그널링 KR102478527B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/730,070 US11099786B2 (en) 2019-12-30 2019-12-30 Signaling for heterogeneous memory systems
US16/730,070 2019-12-30
PCT/US2020/064265 WO2021138017A1 (en) 2019-12-30 2020-12-10 Signalling for heterogeneous memory systems

Publications (2)

Publication Number Publication Date
KR20220116041A true KR20220116041A (ko) 2022-08-19
KR102478527B1 KR102478527B1 (ko) 2022-12-16

Family

ID=76546262

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227025670A KR102478527B1 (ko) 2019-12-30 2020-12-10 이기종 메모리 시스템용 시그널링

Country Status (6)

Country Link
US (2) US11099786B2 (ko)
EP (1) EP4085340A4 (ko)
JP (1) JP7195486B1 (ko)
KR (1) KR102478527B1 (ko)
CN (1) CN114902198B (ko)
WO (1) WO2021138017A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531601B2 (en) * 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
US11099786B2 (en) * 2019-12-30 2021-08-24 Advanced Micro Devices, Inc. Signaling for heterogeneous memory systems
US20230393750A1 (en) * 2022-06-01 2023-12-07 Micron Technology, Inc. Apparatus with response completion pacing
CN116301664B (zh) * 2023-05-16 2023-08-15 北京象帝先计算技术有限公司 存储器的控制器、组件、电子设备及命令缓存方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030177320A1 (en) * 2002-02-25 2003-09-18 Suneeta Sah Memory read/write reordering
US20110238934A1 (en) * 2010-03-29 2011-09-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US20130212318A1 (en) * 2008-12-23 2013-08-15 Apple Inc. Architecture for address mapping of managed non-volatile memory
US10282103B1 (en) * 2015-11-09 2019-05-07 Seagate Technology Llc Method and apparatus to delete a command queue
US10572180B1 (en) * 2015-11-09 2020-02-25 Seagate Technology Llc Method and apparatus to perform a function level reset in a memory controller

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150017526A (ko) 2013-08-07 2015-02-17 삼성전자주식회사 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9996262B1 (en) 2015-11-09 2018-06-12 Seagate Technology Llc Method and apparatus to abort a command
US10769098B2 (en) * 2016-04-04 2020-09-08 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US10810144B2 (en) * 2016-06-08 2020-10-20 Samsung Electronics Co., Ltd. System and method for operating a DRR-compatible asynchronous memory module
US11675659B2 (en) * 2016-07-15 2023-06-13 Advanced Micro Devices, Inc. DDR memory error recovery
US10296230B1 (en) 2017-12-22 2019-05-21 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
US10503438B1 (en) * 2018-08-24 2019-12-10 Micron Technology, Inc. Memory sub-system supporting non-deterministic commands
US11137941B2 (en) * 2019-12-30 2021-10-05 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules
US11099786B2 (en) * 2019-12-30 2021-08-24 Advanced Micro Devices, Inc. Signaling for heterogeneous memory systems
US11531601B2 (en) * 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030177320A1 (en) * 2002-02-25 2003-09-18 Suneeta Sah Memory read/write reordering
US20130212318A1 (en) * 2008-12-23 2013-08-15 Apple Inc. Architecture for address mapping of managed non-volatile memory
US20110238934A1 (en) * 2010-03-29 2011-09-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US10282103B1 (en) * 2015-11-09 2019-05-07 Seagate Technology Llc Method and apparatus to delete a command queue
US10572180B1 (en) * 2015-11-09 2020-02-25 Seagate Technology Llc Method and apparatus to perform a function level reset in a memory controller

Also Published As

Publication number Publication date
US11099786B2 (en) 2021-08-24
EP4085340A4 (en) 2023-06-14
JP7195486B1 (ja) 2022-12-23
US20210200467A1 (en) 2021-07-01
CN114902198B (zh) 2023-10-27
KR102478527B1 (ko) 2022-12-16
WO2021138017A1 (en) 2021-07-08
EP4085340A1 (en) 2022-11-09
US11748034B2 (en) 2023-09-05
CN114902198A (zh) 2022-08-12
US20210382661A1 (en) 2021-12-09
JP2023500741A (ja) 2023-01-10

Similar Documents

Publication Publication Date Title
US11221772B2 (en) Self refresh state machine mop array
KR102478527B1 (ko) 이기종 메모리 시스템용 시그널링
US11531601B2 (en) Error recovery for non-volatile memory modules
US11561862B2 (en) Refresh management for DRAM
KR102542493B1 (ko) 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이
KR102615693B1 (ko) Dram을 위한 리프레시 관리
JP2019522257A (ja) 低電力メモリのスロットリング
CN115885268A (zh) Dram命令拖尾管理
JP2023508117A (ja) 不揮発性メモリモジュールのエラー報告
CN117120992A (zh) 用于多队列存储器控制器的信用方案
CN115605853A (zh) 高效存储器总线管理
CN117546135A (zh) 具有混合dram/持久性存储器通道仲裁的存储器控制器

Legal Events

Date Code Title Description
GRNT Written decision to grant