KR102370477B1 - 가상 컨트롤러 모드를 가진 메모리 컨트롤러 - Google Patents

가상 컨트롤러 모드를 가진 메모리 컨트롤러 Download PDF

Info

Publication number
KR102370477B1
KR102370477B1 KR1020197003112A KR20197003112A KR102370477B1 KR 102370477 B1 KR102370477 B1 KR 102370477B1 KR 1020197003112 A KR1020197003112 A KR 1020197003112A KR 20197003112 A KR20197003112 A KR 20197003112A KR 102370477 B1 KR102370477 B1 KR 102370477B1
Authority
KR
South Korea
Prior art keywords
memory
controller
sub
channel
channels
Prior art date
Application number
KR1020197003112A
Other languages
English (en)
Other versions
KR20190019203A (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 KR20190019203A publication Critical patent/KR20190019203A/ko
Application granted granted Critical
Publication of KR102370477B1 publication Critical patent/KR102370477B1/ko

Links

Images

Classifications

    • 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
    • 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/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
    • G06F13/287Multiplexed DMA
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/0674Disk device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)

Abstract

하나의 형태로, 메모리 컨트롤러는 커맨드 큐와 아비터를 포함하는 메모리 채널 컨트롤러를 가진다. 커맨드 큐는 가상 컨트롤러 모드에서 서브-채널 번호를 포함하는 메모리 액세스 요청을 저장한다. 아비터는 커맨드 큐에 연결되어서, 미리결정된 기준에 따라 커맨드 큐로부터 메모리 액세스 커맨드를 선택한다. 가상 컨트롤러 모드에서, 아비터는 미리결정된 기준을 사용하여 독립적으로, 각각의 서브-채널 내의 메모리 액세스 요청 중에서 선택하고, 선택된 메모리 액세스 요청을 복수의 서브-채널 중 대응되는 서브-채널로 전송한다. 또 다른 형태로, 데이터 프로세싱 시스템은 복수의 메모리 채널 및 복수의 서브-채널에 연결된 메모리 컨트롤러를 포함한다.

Description

가상 컨트롤러 모드를 가진 메모리 컨트롤러
본 발명은 컴퓨팅 디바이스의 메모리 컨트롤러에 관한 발명이며, 보다 상세하게는 가상 컨트롤러 모드를 가진 메모리 컨트롤러에 관한 발명이다.
컴퓨터 시스템은 전형적으로 주 메모리를 위해 비싸지 않고 고밀도인 동적 랜덤 액세스 메모리(DRAM) 칩을 사용한다. 오늘날 팔리는 대부분의 DRAM 칩은 Joint Electron Devices Engineering Council(JEDEC)에 의해 알려진 다양한 더블 데이터 레이트(DDR) DRAM 표준과 호환가능하다. DDR DRAM은 다양한 저전력 모드를 제공함에 의해, 고성능과 저전력 동작 모두를 제공한다.
현대의 DDR 메모리 컨트롤러는 펜딩 메모리 액세스 요청을 저장하기 위해 큐(queue)를 유지하여서, 이들이 효율성을 증가시키기 위해 생성되거나 저장되었던 순서와 관련하여, 고장난 펜딩 메모리 액세스 요청을 선택하도록 한다. 예를 들어, 메모리 컨트롤러는 큐로부터 메모리의 주어진 랭크 내의 동일한 로우로 복수의 메모리 액세스 요청을 불러오기할 수 있고, 현재의 로우를 프리차지하고 또 다른 로우를 활성화시키는 오버헤드(overhead)를 피하기 위해, 이들을 메모리 시스템으로 연속적으로 발행한다. 또한, 메모리 컨트롤러는 충분히 유연할 것을 요하므로, 이들은 다양한 메모리 타입, 밀도 및 메모리 채널 토폴로지로 구성될 수 있지만, 이들 다양한 모드를 지원하기 위해 칩 비용을 추가하는 많은 양의 추가적인 회로 면적을 요하지 않으면서 그렇게 해야 한다.
도 1은 일부 실시예에 따른 데이터 프로세싱 시스템을 형성하는 블록도를 나타내고,
도 2는 도 1의 데이터 프로세싱 시스템에서 사용하기에 적합한 가속 프로세싱 유닛(APU)을 형성하는 블록도를 나타내고,
도 3은 일부 실시예에 따른 도 2의 APU에서 사용하기에 적합한 메모리 컨트롤러 및 관련된 물리적 인터페이스(PHY)를 형성하는 블록도를 나타내고,
도 4는 일부 실시예에 따른 도 2의 APU에서 사용하기에 적합한 또 다른 메모리 컨트롤러 및 관련된 PHY를 형성하는 블록도를 나타내고,
도 5는 일부 실시예에 따른 메모리 컨트롤러를 형성하는 블록도를 나타내고, 및
도 6은 일부 실시예에 따른 가상 컨트롤러 모드를 가진 메모리 채널 컨트롤러를 형성하는 블록도를 나타낸다.
이하의 설명에서, 상이한 도면 내의 동일한 참조 번호의 사용은 유사하거나 동일한 아이템을 나타낸다. 달리 진술하지 않으면, 단어 "연결된" 및 이와 관련된 동사 형태는 기술 분야의 알려진 수단에 의해 직접 연결과 간접 전기 연결 모두를 포함하고, 달리 진술하지 않으면, 직접 연결의 임의의 설명은 간접 전기 연결의 적절한 형태를 사용하는 대안적인 실시에도 의미한다.
하나의 형태로 이하에 기술되는 바와 같이, 메모리 컨트롤러는 커맨드 큐 및 아비터를 포함하는 메모리 채널 컨트롤러를 포함한다. 커맨드 큐는 서브-채널 번호를 포함하는 메모리 액세스 요청을 가상 컨트롤러 모드 내에 저장한다. 아비터는 커맨드 큐에 연결되어서, 미리결정된 기준에 따라 커맨드 큐로부터 메모리 액세스 커맨드를 선택하는데, 가상 컨트롤러 모드에서, 아비터는 미리결정된 기준을 사용하여 독립적으로 각각의 서브-채널 내의 메모리 액세스 요청 중에서 선택하고, 선택된 메모리 액세스 요청을 복수의 서브-채널 중 대응되는 하나로 전송한다. 이러한 방법으로, 하나의 메모리 채널 컨트롤러는 복수의 채널에 액세스할 수 있고, 메모리 컨트롤러의 크기는 감소될 수 있다.
또 다른 형태로, 메모리 컨트롤러는 가상 컨트롤러 모드를 가진 메모리 채널 컨트롤러를 가진다. 메모리 채널 컨트롤러는, 어드레스 생성기, 커맨드 큐, 아비터 및 디스패치 큐를 포함한다. 어드레스 생성기는 메모리 액세스 요청을 수신하고, 메모리 액세스 요청을 디코딩하여 메모리 시스템 내의 메모리 디바이스의 랭크 및 뱅크를 선택하고, 가상 컨트롤러 모드에서, 메모리 액세스 요청의 각각에 대한 복수의 서브-채널의 서브-채널 번호를 더욱 디코딩한다. 커맨드 큐는 메모리 액세스 요청을 저장하기 위한 어드레스 생성기에 연결되어서, 디코딩되고, 가상 컨트롤러 모드 내에 서브-채널 번호를 포함한다. 아비터는 커맨드 큐에 연결되어서, 미리결정된 기준에 따른 랭크 및 뱅크를 사용하여, 그리고, 가상 컨트롤러 모드에서, 미리결정된 기준을 사용하여 독립적으로 각각의 서브-채널 내의 메모리 액세스 요청 중에서 선택하여, 커맨드 큐로부터의 메모리 액세스 요청을 선택한다. 디스패치 큐는 커맨드 큐에 연결되어서, 메모리 선택된 메모리 커맨드를 물리적 인터페이스를 통해 메모리 시스템으로 디스패칭하고, 가상 컨트롤러 모드에서 선택된 메모리 커맨드를 선택된 서브-채널로 더욱 디스패칭한다.
아직 또 다른 형태에서, 데이터 프로세싱 시스템은 복수의 메모리 채널 및 복수의 메모리 채널에 연결된 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는 가상 컨트롤러 모드를 가진 메모리 채널 컨트롤러를 가진다. 메모리 채널 컨트롤러는 커맨드 큐 및 아비터를 포함한다. 커맨드 큐는 서브-채널 번호를 포함하는 메모리 액세스 요청을 가상 컨트롤러 모드에 저장하기 위한 것이다. 아비터는 커맨드 큐에 연결되어서, 미리결정된 기준에 따라 커맨드 큐로부터 메모리 액세스 커맨드를 선택한다. 가상 컨트롤러 모드에서, 아비터는 미리결정된 기준을 사용하여 독립적으로 각각의 서브-채널 내의 메모리 액세스 요청에서 선택하고, 선택된 메모리 액세스 요청을 서브-채널 번호에 대응되는 복수의 메모리 채널 중 하나로 전송한다.
아직 또 다른 형태에서, 방법은 복수의 메모리 채널을 가진 메모리 시스템을 제어하기 위한 것이다. 가상 컨트롤러 모드에서, 메모리 액세스 요청이 수신되고, 각각의 메모리 액세스 요청은, 메모리 시스템 내의 메모리 디바이스의 뱅크, 랭크 및 서브-채널로 디코딩된다. 뱅크, 랭크 및 서브-채널을 포함하는 메모리 액세스 요청은 커맨드 큐 내에 저장된다. 미리결정된 기준은 미리결정된 기준을 사용하여, 커맨드 큐 내의 복수의 메모리 액세스 요청 중에서 선택하는데 사용되고, 미리결정된 기준은 각각의 서브-채널로 메모리 액세스 요청 중에서 독립적으로 선택하는데 더욱 사용된다. 그렇게 선택된 메모리 액세스 요청은 서브-채널에 따라 복수의 메모리 채널 중 하나로 디스패치된다.
도 1은 일부 실시예에 따른 데이터 프로세싱 시스템(100)을 형성하는 블록도를 나타낸다. 데이터 프로세싱 시스템(100)은 일반적으로, 가속 프로세싱 유닛(APU)의 형태인 데이터 프로세서(110), 메모리 시스템(120), 주변장치 구성요소 상호연결 익스프레스(PCIe) 시스템(150), 범용 직렬 버스(USB) 시스템(160) 및 디스크 드라이브(170)을 포함한다. 데이터 프로세서(110)는 데이터 프로세싱 시스템(100)의 중앙 프로세싱 유닛(CPU)로서 동작하고, 현대의 컴퓨터 시스템에서 유용한 다양한 버스와 인터페이스를 제공한다. 이들 인터페이스는 두 개의 더블 데이터 레이트(DDRx) 메모리 채널, PCIe 링크에 연결을 위한 PCIe 루트 컴플렉스, USB 네트워크에 연결을 위한 USB 컨트롤러 및 직렬 진보된 기술 접속(SATA) 대량 저장 디바이스로의 인터페이스를 포함한다.
메모리 시스템(120)은 메모리 채널(130) 및 메모리 채널(140)을 포함한다. 메모리 채널(130)은 DDRx 버스(132)에 연결된 한 세트의 듀얼 인라인 메모리 모듈(DIMMs)을 포함하고, 본 예시에서, 별도의 랭크에 대응되는 대표적인 DIMMs(134, 136 및 138)을 포함한다. 마찬가지로, 메모리 채널(140)은 DDRx 버스(142)에 연결된 한 세트의 DIMMs를 포함하고, 대표적인 DIMMs(144, 146 및 148)을 포함한다.
PCIe 시스템(150)은 데이터 프로세서(110) 내에 PCIe 루트 컴플렉스에 연결된 PCIe 스위치(152), PCIe 디바이스(154), PCIe 디바이스(156) 및 PCIe 디바이스(158)를 포함한다. 결국, PCIe 디바이스(156)는 시스템 베이직 입력/출력 시스템(BIOS) 시스템(157)에 연결된다. 시스템 BIOS 메모리(157)는 리드-온리 메모리(ROM), 플래시 전기적으로 삭제가능한 프로그래머블 ROM(EEPROM) 등과 같은 임의의 다양한 비휘발성 메모리 타입일 수 있다.
USB 시스템(160)은 데이터 프로세서(110) 내의 USB 마스터에 연결된 USB 허브(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 메모리에 연결될 수 있고, 추가적인 메모리 기술에 적응될 수 있다. 이들 메모리는 고 버스 대역폭 및 고속 동작을 제공한다. 동시에, 이들은 또한 랩탑 컴퓨터와 같은 배터리-전력공급되는 애플리케이션에 대해 전력을 아끼기 위해 저전력 모드를 제공하고, 또한 내장형 열 모니터링을 제공한다.
도 2는 도 1의 데이터 프로세싱 시스템(100)에서 사용하기에 적합한 APU(200)을 형성하는 블록도를 나타낸다. APU(200)는 일반적으로, 중앙 프로세싱 유닛(CPU) 코어 컴플렉스(210), 그래픽 코어(220), 한 세트의 디스플레이 엔진(230), 메모리 관리 허브(240), 데이터 패브릭(250), 한 세트의 주변장치 컨트롤러(260), 한 세트의 주변장치 버스 컨트롤러(270), 시스템 관리 유닛(SMU)(280), 및 한 세트의 메모리 컨트롤러(290)를 포함한다.
CPU 코어 컴플렉스(210)는 CPU 코어(212) 및 CPU 코어(214)를 포함한다. 본 예시에서, CPU 코어 컴플렉스(210)는 두 개의 CPU 코어를 포함하지만, 다른 실시예에서, CPU 코어 컴플렉스는 임의의 수의 CPU 코어를 포함할 수 있다. 각각의 CPU 코어(212 및 214)는, 제어 패브릭을 형성하는 시스템 관리 네트워크(SMN) 및 데이터 패브릭(250)에 양방향으로 연결되고, 메모리 액세스 요청을 데이터 패브릭(250)에 제공할 수 있다. 각각의 CPU 코어(212 및 214)는 통합 코어일 수 있고, 또는 캐시와 같은 어떤 자원을 공유하는 둘 이상의 통합 코어를 가진 코어 컴플렉스일 수도 있다.
그래픽 코어(220)는 버텍스 프로세싱, 프레그먼트 프로세싱, 쉐이딩, 텍스쳐 블렌딩 및 매우 집적되고 평행하나 방식인 것과 같은 그래픽 동작을 수행할 수 있는 고성능 그래픽 프로세싱 유닛(GPU)이다. 그래픽 코어(220)는 SMN 및 데이터 패브릭(250)에 양방향으로 연결되고, 메모리 액세스 요청을 데이터 패브릭(250)으로 제공할 수 있다. 이와 관련하여, APU(200)는, CPU 코어 컴플렉스(210)와 그래픽 코어(220)는 동일한 메모리 공간을 공유하는 통합된 메모리 아키텍쳐 또는 그래픽 코어(220)가 CPU 코어 컴플렉스(210)에 의해 액세스할 수 없는 사적인 그래픽 메모리를 사용하면서, CPU 코어 컴플렉스(210)와 그래픽 코어(220)가 메모리 공간의 일부를 공유하는 메모리 아키텍쳐를 지원할 수 있다.
디스플레이 엔진(230)은 모니터 상에 디스플레이하기 위해, 그래픽 코어(220)에 의해 생성된 물체를 렌더링 및 래스터화한다. 그래픽 코어(220) 및 디스플레이 엔진(230)은, 메모리 시스템(120) 내의 적절한 어드레스 내로 균일한 번역을 위한 공통 메모리 관리 허브(240)에 양방향으로 연결되고, 메모리 관리 허브(240)는, 이러한 메모리 액세스를 생성하고, 메모리 시스템으로부터 되돌아온 리드 데이터를 수신하기 위한 데이터 패브릭(250)에 양방향으로 연결된다.
데이터 패브릭(250)은, 임의의 메모리 액세싱 에이젼트와 메모리 컨트롤러(290) 사이의 메모리 액세스 요청과 메모리 응답을 라우팅하기 위한 크로스바 스위치를 포함한다. 또한, 시스템 구성은 물론 각각의 가상 연결을 위한 버퍼에 기초하여, 메모리 액세스의 목적지를 결정하기 위한, BIOS에 의해 결정된 시스템 메모리 맵을 포함한다.
주변장치 컨트롤러(260)는 USB 컨트롤러(262) 및 SATA 인터페이스 컨트롤러(264)를 포함하는데, 이들 각각은 시스템 허브(266) 및 SMN 버스와 양방향으로 연결된다. 이들 두 개의 컨트롤러는 APU(200)에서 사용될 수 있는 주변장치 컨트롤러의 예시에 불과하다.
주변장치 버스 컨트롤러(270)는 시스템 컨트롤러 또는 "사우스브리지"(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) 상의 다양한 프로세서의 파워-업 시퀀싱을 관리하고, 리셋, 인에이블 및 다른 신호를 통해 복수의 오프-칩 디바이스를 제어한다. SMU(280)는 위상 고정 루프(PLL)과 같이, 도 2에 도시되지 않은 하나 이상의 클록 소스를 포함하여, APU(200)의 구성요소의 각각에 대해 클록 신호를 제공한다. 또한, SMU(280)는 다양한 프로세서와 다른 기능 블록을 위한 전력을 관리하고, 적절한 전력 상태를 결정하기 위해, CPU 코어(212 및 214) 및 그래픽 코어(220)로부터 측정된 전력 소비 값을 수신할 수 있다.
또한, APU(200)는 다양한 시스템 모니터링 및 전력 절약 기능을 실행한다. 특히, 하나의 시스템 모니터링 기능은 열 모니터링이다. 예를 들어, APU(200)가 뜨거워지면, SMU(280)는 CPU(212 및 214) 및/또는 그래픽 코어(220)의 주파수와 전압을 감소시킬 수 있다. APU(200)가 너무 뜨거워지면, 그것은 전체적으로 셧다운될 수 있다. 또한, 열 이벤트가 SMN 버스를 통해 SMU(280)에 의해 외부로부터 수신될 수 있어서, SMU(280)는 응답으로 클록 주파수 및/또는 전력 공급 전압을 감소시킬 수 있다.
도 3은 일부 실시예에 따른 도 2의 APU(200)에서 사용하기에 적합한 메모리 컨트롤러(300) 및 관련된 물리적 인터페이스(PHY)(330)를 형성하는 블록도를 나타낸다. 메모리 컨트롤러(300)는 메모리 채널(310) 및 전력 엔진(320)을 포함한다. 메모리 채널(310)은 호스트 인터페이스(312), 메모리 채널 컨트롤러(314) 및 물리적 인터페이스(316)를 포함한다. 호스트 인터페이스(312)는 가변형 데이터 포트(scalable data port, SDP)를 통해, 메모리 채널 컨트롤러(314)를 데이터 패브릭(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)는 SDP를 통해, 메모리 채널 컨트롤러(414)를 데이터 패브릭(250)에 양방향으로 연결한다. 물리적 인터페이스(416)는 메모리 채널 컨트롤러(414)를 PHY(440)에 양방향으로 연결하고, DFI 스펙에 따른다. 메모리 채널(420)은 호스트 인터페이스(422), 메모리 채널 컨트롤러(424) 및 물리적 인터페이스(426)를 포함한다. 호스트 인터페이스(422)는 또 다른 SDP를 통해, 메모리 채널 컨트롤러(424)를 데이터 패브릭(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)는 두 개의 메모리 채널 컨트롤러를 가진 메모리 컨트롤러의 인스턴스생성이고, 공유된 전력 엔진(430)을 사용하여, 이하에 더욱 기술될 방식으로 메모리 채널 컨트롤러(414) 및 메모리 채널 컨트롤러(424) 모두의 동작을 제어한다.
도 5는 일부 실시예에 따른 메모리 컨트롤러(500)를 형성하는 블록도를 나타낸다. 메모리 컨트롤러(500)는 일반적으로 메모리 채널 컨트롤러(510) 및 전력 컨트롤러(550)를 포함한다. 메모리 채널 컨트롤러(510)는 일반적으로, 인터페이스(512), 큐(514), 커맨드 큐(520), 어드레스 생성기(522), 콘텐츠 어드레서블 메모리(CAM)(524), 리플레이 큐(530), 리프레쉬 로직 블록(532), 타이밍 블록(534), 페이지 테이블(536), 아비터(538), 오차 교정 코드(ECC) 체크 블록(542), ECC 생성 블록(544) 및 데이터 버퍼(DB)(546)를 포함한다.
인터페이스(512)는 외부 버스를 통해, 데이터 패브릭(250)에 제1 양방향 연결부를 가지고, 출력부를 가진다. 메모리 컨트롤러(500)에서, 이러한 외부 버스는 "AXI4"라고 알려진, 영국, 캠브리지의 PLC, ARM 홀딩스에 의해 명시된 진보되고 확장가능한 인터페이스 버전 4와 호환되지만, 다른 실시예에서는 다른 타입의 인터페이스일 수 있다. 인터페이스(512)는, FCLK(또는 MEMCLK)로 알려진 제1 클록 도메인으로부터 UCLK 도메인으로 알려진, 메모리 컨트롤러(500)의 내부의 제2 클록 도메인으로 메모리 액세스 요청을 번역한다. 마찬가지로, 큐(514)는, UCLK 도메인으로부터 DFI 인터페이스와 관련된 DFICLK 도메인으로 메모리 액세스를 제공한다.
어드레스 생성기(522)는 AXI4 버스를 통해 데이터 패브릭(250)으로부터 수신된 메모리 액세스 요청의 어드레스를 디코드한다. 메모리 액세스 요청은 정규화된 형식으로 표현된 물리적 어드레스 공간 내의 액세스 어드레스를 포함한다. 어드레스 생성기(522)는 정규화된 어드레스를 메모리 시스템(120) 내의 실제 메모리 디바이스에 어드레스함은 물론 관련된 액세스에 효율적으로 스케쥴링하는데 사용될 수 있는 형식으로 전환한다. 이러한 형식은, 메모리 액세스 요청을 특정한 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스 및 뱅크 그룹에 관련시키는 지역 식별자(region identifier)를 포함한다. 스타트업되면, 시스템 BIOS는 메모리 시스템(120) 내의 메모리 디바이스에 쿼리하여, 그들의 크기와 구성을 결정하고, 어드레스 생성기(522)와 관련된 한 세트의 구성 레지스터를 프로그램한다. 어드레스 생성기(522)는 구성 레지스터 내에 저장된 구성을 사용하여, 정규화된 어드레스를 적절한 형식으로 번역한다. 커맨드 큐(520)는 CPU 코어(212 및 214)와 그래픽 코어(220)와 같은 데이터 프로세싱 시스템(100) 내의 메모리 액세싱 에이젼트로부터 수신된 메모리 액세스 요청의 큐이다. 커맨드 큐(520)는 어드레스 생성기(522)에 의해 디코딩된 어드레스 필드는 물론, 아비터(538)가 액세스 타입과 서비스의 품질(QoS) 식별자를 포함하여, 효율적으로 메모리 액세스를 선택하도록 하는 다른 어드레스 정보를 저장한다. CAM(524)은, 리드 이후의 라이트(WAW)와 같은 순서 규칙 및 라이트 이후의 리드(RAW) 순서 규칙을 강제하는 정보를 포함한다.
리플레이 큐(530)는, 어드레스와 커맨드 패리티 응답과 같은 대기 응답(awaiting response), DDR4 DRAM에 대한 라이트 사이클릭 리던던시 체크(CRC) 또는 GDDR5 DRAM에 대한 라이트 및 리드 CRC 응답인 아비터(538)에 의해 선택된 메모리 액세스를 저장하기 위한 일시적인 큐이다. 리플레이 큐(530)는 ECC 체크 블록(542)에 액세스하여, 되돌아온 ECC가 정확한지 또는 에러를 나타내는지를 결정한다. 리플레이 큐(530)는 이들 사이클 중 하나의 패리티나 CRC 에러의 경우, 액세스가 리플레이되도록 한다.
리프레쉬 로직(532)은, 메모리 액세싱 에이젼트로부터 수신된 정상적인 리드 및 라이트 메모리 액세스 요청으로부터 별도로 생성된 다양한 파워다운, 리프레쉬 및 종결 저항(ZQ) 캘리브레이션 사이클에 대한 상태 머신을 포함한다. 예를 들어, 메모리 랭크가 프리차지 파워다운에 있다면, 리프레쉬 사이클을 실행하기 위해 주기적으로 어웨이크되어야 한다. 리프레쉬 로직(532)은 주기적으로 리프레쉬 커맨드를 생성하여, DRAM 칩 내의 메모리 셀의 저장 커패시터에서 전하의 누설에 의해 야기되는 데이터 에러를 방지한다. 또한, 리프레쉬 로직(532)은 주기적으로 ZQ를 캘리브레이트하여, 시스템의 열 변화에 의한 온-다이 종결 저항의 미스매치를 방지한다. 또한, 리프레쉬 로직(532)은 언제 DRAM 디바이스를 다양한 파워 다운 모드에 둘지 결정한다.
아비터(538)는 커맨드 큐(520)에 양방향으로 연결되고, 메모리 채널 컨트롤러(510)의 중심부이다. 그것은 액세스의 지능형 스케쥴링에 의해 효율성을 개선하여, 메모리 버스의 용도를 개선한다. 아비터(538)는 타이밍 블록(534)을 사용하여, 커맨드 큐(520) 내의 어떤 액세스가 DRAM 타이밍 파라미터에 기초하여 발행하기에 적격인지를 결정함에 의해 적절한 타이밍 관계를 강화시킨다. 예를 들어, 각각의 DRAM은 "tRC"으로 알려진 동일한 뱅크에 활성화 커맨드들 간의 최소 명시된 시간을 가진다. 타이밍 블록(534)은 이러한 타이밍 파라미터 또는 JEDEC 스펙에 명시된 다른 타이밍 파라미터에 기초하여, 적격성을 결정하고, 리플레이 큐(530)에 양방향으로 연결된 한 세트의 카운터를 유지한다. 페이지 테이블(536)은 각각의 뱅크 및 아비터(538)를 위한 메모리 채널의 랭크 내의 활성화 페이지에 대한 상태 정보를 유지하고, 리플레이 큐(530)에 양방향으로 연결된다.
인터페이스(512)로부터 수신된 라이트 메모리 액세스 요청에 응답하여, ECC 생성 블록(544)은 라이트 데이터에 기초하여 ECC를 계산한다. DB(546)는 메모리 액세스 요청으로부터 수신된 라이트 데이터 및 ECC를 저장한다. 아비터(538)가 메모리 채널로 디스페치를 위한 대응되는 라이트 액세스를 선택할 때, 결합된 라이트 데이터/ECC를 큐(514)로 출력한다.
전력 컨트롤러(550)는 진보된 확장가능한 인터페이스, 버전 원(AXI)으로의 인터페이스(552), APB 인터페이스(554) 및 전력 엔진(560)을 일반적으로 포함한다. 인터페이스(552)는 SMN으로의 제1 양방향 연결부를 가지는데, 이는 도 5에 별도로 도시된 "EVENT_n"으로 라벨링된 이벤트 신호를 수신하기 위한 입력부 및 출력부를 포함한다. APB 인터페이스(554)는 인터페이스(552)의 출력부에 연결된 입력부 및 APB를 통해 PHY로의 연결을 위한 출력부를 가진다. 전력 엔진(560)은 인터페이스(552)의 출력부에 연결된 입력부 및 큐(514)의 입력부에 연결된 출력부를 가진다. 전력 엔진(560)은 한 세트의 구성 레지스터(562), 마이크로컨트롤러(μC)(564), 셀프 리프레쉬 컨트롤러(SLFREF/PE)(566) 및 신뢰성 있는 리드/라이트 트레이닝 엔진(RRW/TE)(568)을 포함한다. 구성 레지스터(562)는 AXI 버스를 통해 프로그램되고, 다양한 블록의 동작을 제어하기 위한 구성 정보를 메모리 컨트롤러(500)에 저장한다. 따라서, 구성 레지스터(562)는 도 5에 자세히 도시되지 않은 이들 블록에 연결된 출력부를 가진다. 셀프 리프레쉬 컨트롤러(566)는, 리프레쉬 로직(532)에 의한 리프레쉬의 자동 생성에 더하여, 리프에쉬의 수동 생성을 허용하는 엔진이다. 신뢰성 있는 리드/라이트 트레이닝 엔진(568)은, DDR 인터페이스 리드 레이턴시 트레이닝 및 루프백 테스팅과 같은 목적을 위해, 연속적인 메모리 액세스 스트림을 메모리 또는 I/O 디바이스에 제공한다.
메모리 채널 컨트롤러(510)는, 메모리 액세스를 선택하여 관련 메모리 채널로 디스패치하도록 허용하는 회로를 포함한다. 원하는 아비트레이션 결정을 내리기 위해, 어드레스 생성기(522)는, 어드레스 정보를, 랭크, 로우 어드레스, 컬럼 어드레스, 뱅크 어드레스 및 메모리 시스템 내의 뱅크 그룹을 포함하는 사전 디코딩된 정보로 디코딩하고, 커맨드 큐(520)는 사전디코딩된 정보를 저장한다. 구성 레지스터(562)는, 어드레스 생성기(522)가 어떻게 수신된 어드레스 정보를 디코딩하는지 결정하기 위해, 구성 정보를 저장한다. 아비터(538)는, 디코딩된 어드레스 정보, 타이밍 블록(534)에 의해 표시된 타이밍 적격성 정보 및 QoS 요구사항과 같은 다른 기준을 관측하는 동안 효율적으로 메모리 액세스를 스케쥴링하기 위해, 페이지 테이블(536)에 의해 표시된 활성화 페이지 정보를 사용한다. 예를 들어, 아비터(538)는 메모리 페이지를 변화시키는데 요구되는 프리차지 및 활성화 커맨드의 오버헤드를 피하기 위해, 페이지를 오픈하기 위해 액세스에 대한 우선권(preference)을 실행하고, 이러한 액세스와 또 다른 뱅크로의 리드 및 라이트 액세스와 인터리빙함에 의해 하나의 뱅크로의 오버헤드 액세스를 숨긴다. 특히, 정상 동작 동안에, 아비터(538)는, 다양한 페이지를 선택하기 전에, 프리차지되도록 요구될 때까지, 페이지는 다양한 뱅크 내에서 개방되도록 결정할 수 있다.
도 6은 일부 실시예에 따른 가상 컨트롤러 모드를 가진 메모리 채널 컨트롤러(600)를 형성하는 블록도를 나타낸다. 메모리 채널 컨트롤러(600)는 메모리 채널 컨트롤러(510)로 사용될 수 있지만, 도 6은 큐(514), 커맨드 큐(520), 어드레스 생성기(522) 및 가상 컨트롤러 모드와 관련된 아비터(538)의 추가적인 세부사항을 도시한다. 상기 기술된 바와 같이, 어드레스 생성기(522)는 데이터 패브릭(250)을 통해 다양한 메모리 액세싱 엔진으로부터 메모리 액세스 요청을 수신한다. 그러나, 가상 컨트롤러 모드에서 동작할 때, 어드레스 생성기(522)는 각각의 메모리 액세스 요청의 어드레스를, 도 5의 구성 레지스터(562)에 의해 설정된 프로그래머블 디코딩에 따라, "SC"로 라벨링된 서브-채널 번호로 더욱 디코딩한다.
어드레스 생성기(522)는 디코딩된 서브-채널 번호를 포함하는 디코딩된 메모리 액세스 요청을 커맨드 큐(520)로 전송한다. 커맨드 큐(520)는 디코딩된 메모리 액세스 요청을 커맨드 큐(520) 내의 엔트리(610) 내에 저장하는데, 이는, 상기 기술된 바와 같이, 디코딩된 서브-채널 번호를 저장하기 위한 제1 필드(612) 및 디코딩된 메모리 액세스 요청의 나머지를 저장하기 위한 제2 필드(614)를 가진다.
아비터(538)는 커맨드 큐(520)에 양방향으로 연결되고, 커맨드 큐(520) 내의 어떤 액세스가 DRAM 타이밍 파라미터에 기초하여 발행하기에 적격인지를 결정함에 의해, 적절한 타이밍 관계를 집행하기 위해, 타이밍 블록(534)(도 6에 미도시)을 사용한다. 아비터(538)는, 가상 컨트롤러 모드가 선택되지 않을 때, 사용하는 미리결정된 기준에 따라, 커맨드 큐(520)로부터 각각의 서브-채널에 대해 독립적으로 적격의 메모리 액세스 요청을 선택한다. 이들 미리결정된 기준의 예시는 상기에 기술되고, 실시예들 간에 가변할 수 있다.
개시된 실시예의 하나의 양태에 따르면, 메모리 채널 컨트롤러(600)는, 각각의 서브-채널이 동일한 타입의 메모리를 사용한다고 가정하고, 이러한 가정은 두 개의 서브-채널에 대한 한 세트의 구성 레지스터만 사용함에 의해, 간단화된 설계와 더 작은 크기를 가진 메모리 채널 컨트롤러를 형성하는데 도움이 된다. 예를 들어, 각각의 DRAM은 활성화 커맨드(또는 로우 커맨드)와 컬럼 커맨드 사이의, "tRCD"라고 알려진 최소 명시된 시간을 가진다. 아비터(538)는 동일한 프로그래머블 값에 기초하여, 각각의 서브-채널의 적격성을 결정하기 위해 타이밍 블록(534) 내의 카운터를 사용하고, 그래서, 구성 레지스터(562)는 두 개의 서브-채널에 대한 단일 세트의 구성 레지스터만 요한다.
어떤 점에서, 이들 기준은 아비터(538)가 엔트리(610) 내에 저장된 메모리 액세스 요청을 선택하도록 야기하고, 이를 큐(514)에 제공할 것이다. 큐(514)는 서브-채널, 랭크 및 뱅크를 명시하면서, 메모리 액세스 요청을 대응되는 PHY로 전송하는 메모리 채널 컨트롤러(600)의 백엔드에서의 디스패치 큐이다. 도 6에 도시된 바와 같이, 큐(514)는 두 개의 서브-채널 사이에서 선택하고, 선택기(620) 및 두 개의 유사한 서브-채널 큐(630 및 640)를 포함한다. 선택기(620)는 하나의 입력부와 두 개의 출력부를 가지고, 메모리 액세스 요청(614)에 따라, 커맨드 큐(520)에 의해 제공된 SC 비트(612)에 기초하여, 두 개의 출력부들 사이에서 선택한다. 큐(630)는 선택기(620)의 제1 출력부에 연결된 입력부, 서브-채널 0의 PHY로의 연결을 위한 양방향 포트 및 제1 엔트리(632)와 최종 엔트리(634)를 포함하는 한 세트의 엔트리를 가지는데, 이들 각각은 SC 말고, 디코딩된 메모리 액세스 요청을 저장한다. 마찬가지로, 큐(640)는 선택기(620)의 제2 출력부에 연결된 입력부, 서브-채널 1의 PHY로의 연결을 위한 양방향 포트 및 제1 엔트리(642)와 최종 엔트리(644)를 포함하는 한 세트의 엔트리를 가지는데, 이들 각각은 SC 말고, 디코딩된 메모리 액세스 요청을 저장한다. 다른 실시예에서, 가상 컨트롤러 모드는 이렇나 패턴에 따라 두 개보다 많은 서브-채널을 지원할 수 있다.
가상 컨트롤러 모드는 LPDDR4와 HBM와 같은 커맨드 당 복수의 클록을 요하는 메모리 디바이스 타입의 능력을 사용한다. 그러므로, 아비터(538)는 두 개의 커맨드를 동시에 발행할 필요가 없고, 개개의 서브-채널 사이의 커맨드의 발행에 시차를 줄 수 있다. 이와 같은 상이한 서브-채널에 대한 커맨드의 발행의 시차를 주는 것은 동시에 두 개의 커맨드에 대한 데이터를 수집하고, 다양한 내부 버스에 대해 데이터를 인터리브하기 위한 필요성을 회피한다. 또한, 가상 컨트롤러 모드는 LPDDR4 DRAM 및 HBM DRAM의 의사 채널 모드(Pseudo Channel Mode)에 대한 서브-채널 지원의 이익을 얻을 수 있다. 예시적인 실시예에서, 메모리 채널 컨트롤러(600)는 HBM 레거시 모드와 같은 고 대역폭 모드를 지원하기에 충분히 넓은 내부 버스로 설계된다. 이러한 넓은 내부 버스로, 메모리 채널 컨트롤러(600)는, 임의의 인지된 대역폭 손실 없이, 복수의 서브-채널 상의 데이터 전송을 동시에 지원할 수 있다.
메모리 액세스 컨트롤러(600)는, 하나의 대응되는 메모리 채널을 가진 메모리 채널 컨트롤러에 대해 요구되는 것을 넘어 약간 여분의 회로를 사용하여, 복수의 서브-채널에 대한 액세스를 디코딩할 수 있다. 도 6의 예시에서 도시된 바와 같이, 메모리 채널 컨트롤러(600)는 서브-채널을 더욱 디코딩하는 어드레스 생성기(522), 각각의 메모리 액세스 요청에 의해 선택된 서브-채널의 트랙을 유지하기 위한 여분의 비트(SC)을 저장하는 커맨드 큐, 작은 양의 추가적인 디코딩만을 포함하는 아비터, 추가적인 서브-채널의 타이밍 적격성 및 상태의 추적을 유지하기 위해, 여분의 회로를 포함하는 타이밍 생성기 및 페이지 테이블(도 6에서 미도시) 및 선택기를 포함하고 각각의 서브-채널에 대한 액세스를 독립적으로 큐잉하기 위한 별도의 큐 구조를 포함한다. 그러나, 이들 수정예는 메모리 채널 컨트롤러(510)의 회로 면적의 비교적 작은 부분만을 요하므로, 메모리 채널 컨트롤러(600)는 도 4에 도시된 두 개의 메모리 채널 컨트롤러 설계보다 더욱 공간 효율적이다.
도 5의 메모리 컨트롤러(500)와 도 6의 메모리 액세스 컨트롤러(600)는 하드웨어와 소프트웨어의 다양한 조합으로 실행될 수 있다. 이러한 하드웨어 회로는 우선순위 인코더, 유한 상태 머신, 프로그래머블 로직 어레이(PLA) 등을 포함할 수 있다. 일부 실시예에서, 다른 기능 블록은 소프트웨어의 제어 하에서, 데이터 프로세서에 의해 수행될 수 있다. 소프트웨어 구성요소의 일부는 적어도 하나의 프로세서에 의해 실행을 위해 컴퓨터 판독가능한 저장 매체 내에 저장될 수 있고, 비일시적 컴퓨터 메모리 또는 컴퓨터 판독가능한 저장 매체 내에 저장된 명령어에 해당할 수 있다. 다양한 실시예에서, 비일시적 컴퓨터 판독가능한 저장 매체는 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리와 같은 고체-상태 저장 디바이스 또는 그 밖의 다른 비휘발성 디바이스 또는 디바이스들을 포함한다. 비일시적 컴퓨터 판독가능한 저장 매체 상에 저장된 컴퓨터 판독가능한 명령어는 소스 코드, 어셈블리 언어 코드, 객체 코드 또는 하나 이상의 프로세서에 의해 해석가능한 및/또는 실행가능한 그 밖의 다른 명령어 포맷 내에 있을 수 있다.
도 5의 메모리 컨트롤러(500)나 도 6의 메모리 액세스 컨트롤러(600) 또는 이들의 임의의 부분들은, 프로그램에 의해 판독될 수 있고, 집적 회로를 제작하기 위해, 직접적으로나 간접적으로 사용될 수 있는, 데이터베이스 또는 다른 데이터 구조의 형태 내의 컴퓨터 액세스가능한 데이터에 의해 기술되거나 표현될 수 있다. 예를 들어, 이러한 데이터 구조는 베릴로그나 VHDL과 같은 하이 레벨 설계 언어(HDL) 내의 하드웨어 기능의 행동-레벨 기술어 또는 레지스터-이송 레벨(RTL) 기술어일 수 있다. 기술어는, 합성 라이브러리로부터 게이트의 리스트를 포함하는 네트리스트를 생성하기 위해, 기술어를 합성할 수 있는 합성 툴에 의해 판독될 수 있다. 네트리스트는 집적 회로를 포함하는 하드웨어의 기능도 표현하는 한 세트의 게이트를 포함한다. 그리고 나서, 네트리스트는 마스크에 적용될 기하형상을 기술하는 데이터 세트를 생성하기 위해 위치되고 라우팅될 수 있다. 그리고 나서, 마스크는 집적 회로를 생성하기 위해 다양한 반도체 제작 단계에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스가능한 저장 매체상의 데이터베이스는 네트리스트(합성 라이브러리를 가지거나 없거나) 또는 원하는 바와 같이, 데이터 세트 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정한 실시예가 기술되지만, 이들 실시예에 대한 다양한 수정예가 기술 분야의 당업자에게 자명할 것이다. 예를 들어, 메모리 컨트롤러(500)는, 고 대역폭 메모리(HBM), 램버스 DRAM(RDRAM) 등은 물론 다양한 타입의 DIMM과 같이, DDRx 메모리 이외의 다른 타입의 메모리에 대해 인터페이스할 수 있다. 도시된 실시예가 DDR 메모리에 유용한 메모리 어드레싱과 제어 신호를 기술했지만, 이들은 사용된 메모리 타입에 의존하여 가변할 것이다. 게다가, 도 6의 메모리 액세스 컨트롤러(600)는 두 개보다 많은 가상 채널에 스케일될 수 있다.
그러므로, 첨부된 청구항에 의해, 개시된 실시예의 범위 내에 있는 개신된 실시예의 모든 수정예를 커버하도록 의도된다.

Claims (25)

  1. 메모리 채널 컨트롤러(510)를 가진 메모리 컨트롤러(500)에 있어서, 상기 메모리 채널 컨트롤러(510)는,
    가상 컨트롤러 모드에서, 서브-채널 번호를 포함하는 메모리 액세스 요청을 저장하기 위한 커맨드 큐(520)와, 및
    미리결정된 기준에 따라 상기 커맨드 큐(520)로부터 메모리 액세스 커맨드를 선택하기 위해, 상기 커맨드 큐(520)에 연결된 아비터(538) - 상기 가상 컨트롤러 모드에서, 상기 아비터(538)는 상기 미리결정된 기준을 사용하여 독립적으로 각각의 서브-채널 내에서 상기 메모리 액세스 요청 중에서 선택하고, 선택된 메모리 액세스 요청을 복수의 서브-채널(130/140) 중 대응되는 서브-채널로 전송함 - 를 포함하는, 메모리 컨트롤러(500).
  2. 제 1 항에 있어서, 상기 커맨드 큐(520)는,
    복수의 엔트리(610)를 포함하되, 각각의 엔트리는 상기 서브-채널 번호(612)을 저장하기 위한 제1 필드 및 상기 메모리 액세스 요청에 대한 추가적인 데이터(614)를 저장하기 위한 제2 필드를 포함하는, 메모리 컨트롤러(500).
  3. 제 1 항에 있어서, 상기 복수의 서브-채널(130/140) 중 선택된 서브-채널로 메모리 커맨드를 제공하기 위한 디스패치 큐(514)를 더 포함하는, 메모리 컨트롤러(500).
  4. 제 3 항에 있어서, 상기 아비터(538)는 상기 복수의 서브-채널 모두에 대한 공통 세트의 타이밍 레지스터를 사용하여 타이밍 적격성을 결정하는, 메모리 컨트롤러(500).
  5. 제 4 항에 있어서, 상기 아비터(538)에 연결된 타이밍 블록(534)을 더 포함하되, 상기 타이밍 블록(534)은 상기 커맨드 큐(520) 내의 액세스를 위한 타이밍 적격성을 별도로 결정하기 위해, 상기 공통 세트의 타이밍 레지스터를 사용하는, 메모리 컨트롤러(500).
  6. 제 3 항에 있어서, 상기 아비터(538)는 메모리 컨트롤러 클록 사이클 당 복수의 커맨드를 선택적으로 선택하고, 상기 복수의 커맨드의 각각을 상기 복수의 서브-채널(130/140) 중 상이한 서브-채널에 제공하는, 메모리 컨트롤러(500).
  7. 제 3 항에 있어서, 상기 미리결정된 기준은 메모리 액세스 타입, 페이지 상태 및 서비스의 품질을 포함하는, 메모리 컨트롤러.
  8. 데이터 프로세싱 시스템(100)에 있어서, 상기 데이터 프로세싱 시스템은,
    복수의 메모리 채널(130/140)과,
    상기 복수의 메모리 채널(130/140)에 연결되고, 가상 컨트롤러 모드를 사용하여 메모리 채널 컨트롤러(510)를 가진 메모리 컨트롤러(500)를 포함하되, 상기 메모리 채널 컨트롤러(510)는,
    상기 가상 컨트롤러 모드에서 서브-채널 번호를 포함하는 메모리 액세스 요청을 저장하기 위한 커맨드 큐(520)와, 및
    미리결정된 기준에 따라 상기 커맨드 큐(520)로부터 메모리 액세스 요청을 선택하기 위해 상기 커맨드 큐(520)에 연결된 아비터(538) - 상기 가상 컨트롤러 모드에서, 상기 아비터(538)는 상기 미리결정된 기준을 사용하여 독립적으로 각각의 서브-채널 내의 상기 메모리 액세스 요청 중에서 선택하고, 선택된 메모리 액세스 요청을 상기 서브-채널 번호에 대응되는 상기 복수의 메모리 채널(130/140) 중 메모리 채널로 전송하는, 데이터 프로세싱 시스템(100).
  9. 제 8 항에 있어서, 상기 커맨드 큐(520)는,
    복수의 엔트리(610)를 포함하되, 각각의 엔트리는 상기 서브-채널 번호(612)을 저장하기 위한 제1 필드 및 상기 메모리 액세스 요청에 대한 추가적인 데이터(614)를 저장하기 위한 제2 필드를 포함하는, 데이터 프로세싱 시스템(100).
  10. 제 8 항에 있어서, 상기 복수의 메모리 채널(130/140) 중 선택된 메모리 채널로 메모리 커맨드를 제공하기 위한 디스패치 큐(514)를 더 포함하는, 데이터 프로세싱 시스템(100).
  11. 제 10 항에 있어서,
    상기 아비터(538)는 메모리 컨트롤러 클록 사이클 당 복수의 커맨드를 선택적으로 선택하고, 상기 복수의 커맨드의 각각을 상기 복수의 메모리 채널(130/140) 중 상이한 메모리 채널에 제공하는, 데이터 프로세싱 시스템(100).
  12. 제 10 항에 있어서, 상기 메모리 액세스 요청을 제공하기 위한 복수의 메모리 액세싱 에이젼트(210/220)를 더 포함하는, 데이터 프로세싱 시스템(100).
  13. 복수의 메모리 채널(130/140)을 가진 메모리 시스템(120)을 제어하기 위한 방법에 있어서, 상기 방법은,
    가상 컨트롤러 모드에서,
    메모리 액세스 요청을 수신하는 단계와,
    상기 메모리 액세스 요청의 각각을 메모리 시스템(120) 내의 뱅크, 랭크 및 메모리 디바이스의 복수의 서브-채널로 디코딩하는 단계와,
    상기 뱅크, 상기 랭크 및 상기 서브-채널을 포함하는 상기 메모리 액세스 요청을 커맨드 큐(520) 내에 저장하는 단계와,
    미리결정된 기준을 사용하여, 상기 커맨드 큐(520) 내의 복수의 메모리 액세스 요청 중에서 선택하는 단계 - 상기 선택은 상기 미리결정된 기준을 사용하여, 독립적으로 각각의 서브-채널로의 상기 메모리 액세스 요청 중에 선택하는 단계를 더 포함함 - 와, 및
    선택되어서, 상기 서브-채널에 따라 복수의 메모리 채널(130/140) 중 메모리 채널로 상기 메모리 액세스 요청을 디스패치하는 단계를 포함하는, 메모리 시스템(120)을 제어하기 위한 방법.
  14. 제 13 항에 있어서,
    상기 서브-채널에 기초하여, 선택된 메모리 액세스 요청을 상기 복수의 메모리 채널로 디멀티플렉싱하는 단계를 더 포함하는, 메모리 시스템을 제어하기 위한 방법.
  15. 제 13 항에 있어서,
    상기 복수의 서브-채널 모두에 대한 공통 세트의 타이밍 레지스터를 사용하여 상기 메모리 액세스 요청에 대한 타이밍 적격성을 결정하는, 메모리 시스템을 제어하기 위한 방법.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020197003112A 2016-07-15 2016-09-23 가상 컨트롤러 모드를 가진 메모리 컨트롤러 KR102370477B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662363008P 2016-07-15 2016-07-15
US62/363,008 2016-07-15
US201662377265P 2016-08-19 2016-08-19
US62/377,265 2016-08-19
US15/252,889 2016-08-31
US15/252,889 US10037150B2 (en) 2016-07-15 2016-08-31 Memory controller with virtual controller mode
PCT/US2016/053455 WO2018013159A1 (en) 2016-07-15 2016-09-23 Memory controller with virtual controller mode

Publications (2)

Publication Number Publication Date
KR20190019203A KR20190019203A (ko) 2019-02-26
KR102370477B1 true KR102370477B1 (ko) 2022-03-04

Family

ID=60941095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197003112A KR102370477B1 (ko) 2016-07-15 2016-09-23 가상 컨트롤러 모드를 가진 메모리 컨트롤러

Country Status (4)

Country Link
US (1) US10037150B2 (ko)
KR (1) KR102370477B1 (ko)
CN (1) CN109690508B (ko)
WO (1) WO2018013159A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180061557A (ko) 2016-11-29 2018-06-08 삼성전자주식회사 컨트롤러 및 컨트롤러와 불휘발성 메모리 장치들을 포함하는 스토리지 장치
KR20180118329A (ko) * 2017-04-21 2018-10-31 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법
KR20200129843A (ko) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US20210200694A1 (en) * 2019-12-27 2021-07-01 Advanced Micro Devices, Inc. Staging buffer arbitration
US11494316B2 (en) * 2020-08-24 2022-11-08 Advanced Micro Devices, Inc. Memory controller with a plurality of command sub-queues and corresponding arbiters
CN112767978B (zh) * 2021-01-11 2022-10-14 湖南国科微电子股份有限公司 一种ddr命令调度方法、装置、设备及介质
US11379388B1 (en) 2021-03-31 2022-07-05 Advanced Micro Devices, Inc. Credit scheme for multi-queue memory controllers
US11934251B2 (en) * 2021-03-31 2024-03-19 Advanced Micro Devices, Inc. Data fabric clock switching
US11755246B2 (en) * 2021-06-24 2023-09-12 Advanced Micro Devices, Inc. Efficient rank switching in multi-rank memory controller
WO2023043439A1 (en) * 2021-09-15 2023-03-23 Intel Corporation Routing of memory transactions
US20230102680A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Stacked command queue
US11756606B2 (en) 2021-12-13 2023-09-12 Advanced Micro Devices, Inc. Method and apparatus for recovering regular access performance in fine-grained DRAM
US20230418772A1 (en) * 2022-06-24 2023-12-28 Advanced Micro Devices, Inc. Memory controller with pseudo-channel support
CN116257191B (zh) * 2023-05-16 2023-10-20 北京象帝先计算技术有限公司 存储器的控制器、组件、电子设备及命令调度方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153661A1 (en) 2008-12-11 2010-06-17 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US20110238941A1 (en) 2010-03-29 2011-09-29 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6013501B2 (ja) * 1978-09-18 1985-04-08 富士通株式会社 仮想計算機システムにおけるチヤネルアドレス制御方式
CN1040803C (zh) * 1989-05-17 1998-11-18 国际商业机器公司 在数据处理系统提供附加系统特性的方法和装置
US5369767A (en) * 1989-05-17 1994-11-29 International Business Machines Corp. Servicing interrupt requests in a data processing system without using the services of an operating system
US6052513A (en) * 1996-06-05 2000-04-18 Compaq Computer Corporation Multi-threaded bus master
US6260081B1 (en) 1998-11-24 2001-07-10 Advanced Micro Devices, Inc. Direct memory access engine for supporting multiple virtual direct memory access channels
US6295586B1 (en) 1998-12-04 2001-09-25 Advanced Micro Devices, Inc. Queue based memory controller
JP3546788B2 (ja) * 1999-12-20 2004-07-28 日本電気株式会社 メモリ制御回路
JP4443474B2 (ja) 2005-06-14 2010-03-31 株式会社ソニー・コンピュータエンタテインメント コマンド転送制御装置およびコマンド転送制御方法
US7587521B2 (en) 2005-06-23 2009-09-08 Intel Corporation Mechanism for assembling memory access requests while speculatively returning data
US7698498B2 (en) 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
JP2010003067A (ja) * 2008-06-19 2010-01-07 Sony Corp メモリシステムおよびそのアクセス制御方法、並びにプログラム
US8060692B2 (en) 2008-06-27 2011-11-15 Intel Corporation Memory controller using time-staggered lockstep sub-channels with buffered memory
EP2350843B1 (en) * 2008-07-29 2014-06-11 Synopsys, Inc. Data processing circuit with arbitration between a plurality of queues
JP5289569B2 (ja) * 2008-08-08 2013-09-11 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 標準メモリモジュールとピン互換性のあるメモリモジュール内における独立制御可能且つ再構成可能な仮想メモリデバイス
EP2313830B1 (en) * 2008-08-13 2013-10-02 Hewlett-Packard Development Company, L.P. Dynamic utilization of power-down modes in multi-core memory modules
WO2012036905A1 (en) 2010-09-16 2012-03-22 Apple Inc. Multi-ported memory controller with ports associated with traffic classes
US9405688B2 (en) 2013-03-05 2016-08-02 Intel Corporation Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture
US9293188B2 (en) 2014-02-03 2016-03-22 Advanced Micro Devices, Inc. Memory and memory controller for high reliability operation and method
WO2016126474A1 (en) * 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for parallel writing to multiple memory device locations
CN106547701B (zh) * 2015-09-17 2020-01-10 慧荣科技股份有限公司 记忆装置及数据读取方法
US10684969B2 (en) * 2016-07-15 2020-06-16 Advanced Micro Devices, Inc. Command arbitration for high speed memory interfaces

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153661A1 (en) 2008-12-11 2010-06-17 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US20110238941A1 (en) 2010-03-29 2011-09-29 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information

Also Published As

Publication number Publication date
KR20190019203A (ko) 2019-02-26
US10037150B2 (en) 2018-07-31
CN109690508A (zh) 2019-04-26
WO2018013159A1 (en) 2018-01-18
CN109690508B (zh) 2023-06-13
US20180018105A1 (en) 2018-01-18

Similar Documents

Publication Publication Date Title
KR102370477B1 (ko) 가상 컨트롤러 모드를 가진 메모리 컨트롤러
KR102395745B1 (ko) 스트릭 및 판독/기입 트랜잭션 관리 기능을 갖는 메모리 제어기 아비터
US11221772B2 (en) Self refresh state machine mop array
KR102442078B1 (ko) 고속 메모리 인터페이스들을 위한 명령 중재
JP7181863B2 (ja) データ処理システム、データプロセッサ及び方法
KR20210021302A (ko) 메모리 제어기에서의 리프레시 방식
EP3436958B1 (en) Low power memory throttling
US11494316B2 (en) Memory controller with a plurality of command sub-queues and corresponding arbiters
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
US11379388B1 (en) Credit scheme for multi-queue memory controllers
EP3270295A1 (en) Memory controller with virtual controller mode
US20240112747A1 (en) Signal interference testing using reliable read write interface

Legal Events

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