KR20190011662A - Hbm에서의 프로세스를 위한 조직화된 니어-파 메모리 컨트롤러 - Google Patents

Hbm에서의 프로세스를 위한 조직화된 니어-파 메모리 컨트롤러 Download PDF

Info

Publication number
KR20190011662A
KR20190011662A KR1020180039769A KR20180039769A KR20190011662A KR 20190011662 A KR20190011662 A KR 20190011662A KR 1020180039769 A KR1020180039769 A KR 1020180039769A KR 20180039769 A KR20180039769 A KR 20180039769A KR 20190011662 A KR20190011662 A KR 20190011662A
Authority
KR
South Korea
Prior art keywords
memory controller
command
pim
tuning
host
Prior art date
Application number
KR1020180039769A
Other languages
English (en)
Other versions
KR102265600B1 (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 KR20190011662A publication Critical patent/KR20190011662A/ko
Application granted granted Critical
Publication of KR102265600B1 publication Critical patent/KR102265600B1/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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/366Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a centralised polling arbiter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/0653Monitoring storage devices or systems
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Dram (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

고 대역폭 메모리(HBM+) 시스템에서 메모리 커맨드들을 조정하는 방법은 호스트 메모리 컨트롤러 커맨드를 호스트 메모리 컨트롤러로부터 메모리로 전송하는 단계, 조정 메모리 컨트롤러에서 상기 호스트 메모리 컨트롤러 커맨드를 수신하는 단계, 상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러로부터 상기 메모리로 전달하는 단계 및, 상기 조정 메모리 컨트롤러가 상기 호스트 메모리 컨트롤러 커맨드에 기초하여 조정 메모리 컨트롤러 커맨드를 스케줄링하는 단계를 포함한다.

Description

HBM에서의 프로세스를 위한 조직화된 니어-파 메모리 컨트롤러{COORDINATED NEAR-FAR MEMORY CONTROLLER FOR PROCESS-IN-HBM}
본 발명은 메모리 대역폭 관리에 관한 것으로, 좀 더 상세하게는, HBM 로직 다이(die) 상의 프로세서 및 메모리 컨트롤러를 포함하는 고 대역폭 메모리(HBM; high-bandwidth memory) 시스템과 HBM에서의 프로세싱 방법에 관한 것이다.
도 1은 고 대역폭 메모리(HBM+) 시스템의 블록도이다.
도 1을 참조하면, 종래의 HBM 시스템은 일반적으로 하나의 마스터(master)를 사용하고, 마스터는 일반적으로 대응하는 메모리를 컨트롤하기 위해 사용되는 오프(off)-HBM 메모리 호스트 컨트롤러이다.
그러나, HBM+ 시스템(100)에서, 하나의 슬레이브(slave)(110)(예를 들어, DRAM(dynamic random access memory) 다이 상의 동적 랜덤 엑세스 메모리(DRAM)와 같은 휘발성 메모리 일 수 있는 메인 메모리)는 마스터들로서 두 메모리 컨트롤러들(120)을 가질 수 있다. 두 마스터들은 오프-HBM 메모리 컨트롤러(120a) 및 HBM(160)의 HBM 로직 다이(140)에 위치하는 온(on)-HBM 메모리 컨트롤러(120b)일 수 있다. HBM 로직 다이(140)는 HBM(160)인 3D-스택(stack) 메모리의 최하위 레이어(layer)에 대응할 수 있다. 반면에 DRAM 다이(110)는 HBM(160)의 상위 레이어들 중 하나에 대응할 수 있다. HBM 로직 다이(140)는 “니어(near)” 메모리 컨트롤러(NMC)(120b)를 사용하여 DRAM 다이(110)를 컨트롤할 수 있고, 이는 DRAM 다이(110)를 컨트롤하기 위해 프로세서(PU)(170)에 의해 지시될 수 있다.
오프-HBM 메모리 컨트롤러(120a)는 호스트 메모리 컨트롤러(120a)(예를 들어, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 또는 가속 처리 장치(APU)(130)의 호스트 메모리 컨트롤러(120a))로 지칭될 수 있다. 온-HBM 메모리 컨트롤러(120b)는 조정 메모리 컨트롤러(120b)로 지칭될 수 있고, HBM 로직 다이(140)에 위치할 수 있다.
호스트 메모리 컨트롤러(120a)는 조정 메모리 컨트롤러(120b)보다 DRAM 다이(110)로부터 멀리 떨어진 위치에 위치하기 때문에, 호스트 메모리 컨트롤러(120a)는 또한 원격 메모리 컨트롤러, 또는 “파(far)” 메모리 컨트롤러(FMC)로 여겨질 수 있다. 조정 메모리 컨트롤러(120b)는 DRAM 다이(110)에 대한 근접성으로 인해 로컬 메모리 컨트롤러 또는 “니어(near)” 메모리 컨트롤러(NMC)(120b)로 여겨질 수 있다. 호스트 메모리 컨트롤러(120a) 및 조정 메모리 컨트롤러(120b) 중 하나 또는 모두는 일반적인 메모리 컨트롤러로 나타낼 수 있다.
또한, 호스트 메모리 컨트롤러(120a) 및 조정 메모리 컨트롤러(120b)는 비동기적으로 통신할 수 있다. 따라서, 호스트 메모리 컨트롤러(120a) 및 조정 메모리 컨트롤러(120b)가 모두 동시에 DRAM(110)에 액세스하기 위해 시도하는 경우 문제가 발생할 수 있다.
다른 분야들(예를 들어, AXI(advanced extensible interface)와 같은 트랜잭션(transaction) 기반의 프로토콜을 사용하는 시스템-온-칩(SoC))에서 두 개의 다른 메모리 컨트롤러들 모두에 의한 동시 접근 시도로부터 발생하는 충돌에 대한 잠재적인 해결책은 중앙 아비터(arbiter)/중앙 집권된 컨트롤러로서 버스 아비터를 이용하는 것을 포함할 수 있다. 버스 아비터는 각 버스 사이클(cycle)에 대해 버스를 컨트롤하기 위해 허여될 버스 마스터를 결정할 수 있고, 모든 구성 요소들의 상태를 추적할 수 있다. 따라서, 두 개의 다른 메모리 컨트롤러들은 메모리에 접근하기 위한 허가를 버스 아비터로 요청할 수 있고, 버스 아비터는 메모리 컨트롤러들 중 하나에 접근을 허가할 수 있다(즉, 선택되지 않은 마스터로부터 간섭 없이 선택된 마스터 및 슬레이브 사이의 통신을 가능하게 하는 시간에서 오직 하나의 마스터에 대한 접근을 허가). 이후, 접근이 허가된 선택된 메모리 컨트롤러는 메모리에 액세스할 수 있고, 그리고/또는 메모리는 메모리 컨트롤러에 응답할 수 있다.
그러나, 상기 잠재적 해결책은 HBM+ 시스템(100)에 적용할 수 없다. 트랙섹션 기반의 프로토콜과 다르게, HBM은 핸드쉐이킹(handshaking) 동작들을 지원하지 않고, 이는 HBM(160)으로부터 임의의 메모리 컨트롤러(120)로 피드백 신호가 없음을 의미한다. 또한, 종래의 HBM의 HBM 로직 다이는 HBM 로직 다이 내에서 단독으로 컴퓨팅 기능들을 수행할 수 없다.
또한, 이는 트랜잭션 기반의 프로토콜과 다르게, HBM은 비결정적 타이밍을 지원하지 않고, 이는 호스트 메모리 컨트롤러(120a)가 HBM(160)으로 요청을 전송하면, HBM(160)이 예측 가능한 시간 내에 응답하는 것을 호스트 메모리 컨트롤러(120a)가 기대하는 것을 의미한다. 즉, 메모리 컨트롤러들(120) 중 하나가 명령 또는 요청을 전송하면, HBM(160)이 적절하게 요청된 데이터를 제공하는 것을 확실하게 하기 위해 HBM(160)은 주어진 시간 내(예를 들어, 약 30 나노초 이내)에 응답해야 한다.
위의 정보는 오직 본 발명의 실시 예들의 배경 기술에 대한 이해를 증진시키기 위한 것이고, 이에 따라 선행 기술이 아닌 정보를 포함할 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 호스트 메모리 컨트롤러와 조정 메모리 컨트롤러가 메모리의 동일한 주소에 접근하는 경우, 뱅크 충돌을 방지할 수 있는 고 대역폭 메모리(HBM+) 시스템을 제공할 수 있다.
본 발명의 실시 예들에 따르면, 고 대역폭 메모리(HBM+) 시스템에서 메모리 커맨드들을 조정하는 방법은 호스트 메모리 컨트롤러 커맨드를 호스트 메모리 컨트롤러로부터 메모리로 전송하는 단계, 조정 메모리 컨트롤러에서 상기 호스트 메모리 컨트롤러 커맨드를 수신하는 단계, 상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러로부터 상기 메모리로 전달하는 단계 및, 상기 조정 메모리 컨트롤러가 상기 호스트 메모리 컨트롤러 커맨드에 기초하여 조정 메모리 컨트롤러 커맨드를 스케줄링하는 단계를 포함한다.
상기 호스트 메모리 컨트롤러 커맨드에 기초하여 상기 조정 메모리 컨트롤러 커맨드를 스케줄링하는 단계는 상기 호스트 메모리 컨트롤러 커맨드를 조정 메모리 컨트롤러 커맨드 큐에 있는 상기 조정 메모리 컨트롤러 커맨드와 비교하는 단계 및 상기 비교에 기초하여 상기 조정 메모리 컨트롤러 커맨드의 스케줄링을 조정하는 단계를 포함할 수 있다.
상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러 커맨드와 비교하는 단계는 상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 메모리의 공통 뱅크에 대해 스케줄된지 여부를 결정하는 단계를 포함할 수 있고, 상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 공통 뱅크에 대해 스케줄된 경우 상기 조정 메모리 컨트롤러 커맨드가 처리된 것으로 가리켜질 때까지 추가 메모리 커맨드들이 상기 호스트 메모리 컨트롤러로부터 상기 공통 뱅크로 전송되는 것을 방지하는 단계를 더 포함할 수 있다.
상기 방법은 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 사이의 설정 합의를 설정하는 단계를 더 포함할 수 있고, 상기 설정 합의는 동일한 어드레스를 디코딩할 때 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 모두가 상기 메모리 내의 동일한 위치를 가리키도록 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러가 따르는 공통 어드레스-매핑 기법을 포함한다.
상기 방법은 상기 호스트 메모리 컨트롤러 커맨드로서 상기 호스트 메모리 컨트롤러로부터 PIM(process-in-memory) 커맨드를 전송하는 단계, 상기 호스트 메모리 컨트롤러가 상기 조정 메모리 컨트롤러 및 상기 호스트 메모리 컨트롤러 사이의 데이터 버스를 모니터하는 단계 및 상기 모니터하는 동안, 상기 PIM 커맨드가 처리되었는지 여부를 가리키는 상기 조정 메모리 컨트롤러로부터의 PIM 완료 응답을 감지하는 단계를 더 포함할 수 있다.
상기 방법은 상기 조정 메모리 컨트롤러가 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 판단하는 단계, 상기 PIM 완료 응답으로 상기 PIM 커맨드가 처리되지 않았음을 나타내는 단계, 상기 PIM 완료 응답으로 상기 추정 잔여 시간을 나타내는 단계 및 상기 PIM 완료 응답을 상기 조정 메모리 컨트롤러로부터 상기 호스트 메모리 컨트롤러로 전송하는 단계를 더 포함할 수 있다.
상기 추정 잔여 시간을 판단하는 단계는 상기 조정 메모리 컨트롤러의 조정 메모리 컨트롤러 커맨드 큐를 스캔하는 단계, 상기 조정 메모리 컨트롤러 커맨드 큐에서 미처리된 미처리 메모리 커맨드들을 판별하는 단계, 상기 미처리 메모리 커맨드들 각각에 대한 추정 시간을 판별하는 단계 및, 상기 추정 잔여 시간을 결정하기 위해 상기 추정 시간을 합하는 단계를 포함할 수 있다.
상기 방법은 상기 PIM 커맨드와 시간종료 값을 연결하는 단계, 상기 시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하는 단계 및 상기 호스트 메모리 컨트롤러로부터의 메모리 요청들을 전송하는 것을 방지하는 단계를 더 포함할 수 있다.
상기 방법은 상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 가리키는 상기 PIM 완료 응답을 요청하는 폴링(polling) 커맨드를 전송함으로써 상기 조정 메모리 컨트롤러를 폴링하는 단계를 더 포함할 수 있고, 상기 폴링 커맨드는 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송할 수 있었던 때보다 더 빠르게 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송하도록 야기시킨다.
상기 방법은 상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드의 우선순위를 가리키는 상기 폴링 커맨드의 우선순위 필드를 설정하는 단계, 시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하는 단계, 상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드의 우선순위를 증가시키도록 상기 우선순위 필드를 변경하는 단계, 상기 조정 메모리 컨트롤러가 조정 메모리 컨트롤러 커맨드 큐에서 상기 PIM 커맨드를 위로 이동시키는 단계 및 다른 메모리 커맨드들을 처리하기 전에 상기 PIM 커맨드를 처리하는 단계를 포함할 수 있다.
본 발명의 실시 예들에 따르면, 고 대역폭 메모리(HBM+) 시스템은 조정 메모리 컨트롤러, 호스트 메모리 컨트롤러, 메모리 및 명령어들을 실행하도록 구성되는 프로세서를 포함하고, 상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 호스트 메모리 컨트롤러 커맨드를 상기 호스트 메모리 컨트롤러로부터 상기 메모리로 전송하고, 상기 조정 메모리 컨트롤러에서 상기 호스트 메모리 컨트롤러 커맨드를 수신하고, 상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러로부터 사익 메모리로 전달하고, 상기 호스트 메모리 컨트롤러 커맨드에 기초하여 상기 조정 메모리 컨트롤러에 의해 조정 메모리 컨트롤러 커맨드를 스케줄하도록 야기한다.
상기 프로세서는 상기 호스트 메모리 컨트롤러 커맨드와 조정 메모리 컨트롤러 커맨드 큐에 존재하는 상기 조정 메모리 컨트롤러 커맨드를 비교하고, 상기 비교에 기초하여 상기 조정 메모리 컨트롤러 커맨드의 스케줄을 조정함으로써 상기 호스트 메모리 컨트롤러 커맨드에 기초하여 상기 조정 메모리 컨트롤러 커맨드를 스케줄하도록 구성될 수 있다.
상기 프로세서는 상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 메모리의 공통 뱅크에 대해 스케줄된지 여부를 판단하여 상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러 커맨드와 비교하도록 구성될 수 있고, 상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 공통 뱅크에 대해 스케줄된 경우, 상기 조정 메모리 컨트롤러 커맨드가 처리된 것으로 가리켜질 때까지, 상기 프로세서가 추가 메모리 커맨드를 상기 호스트 메모리 컨트롤러로부터 상기 공통 뱅크로 전송하는 것을 방지하도록 더 야기할 수 있다.
상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 사이의 설정 합의를 설정하도록 더 야기할 수 있고, 상기 설정 합의는 동일한 어드레스를 디코딩할 때 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 모두가 상기 메모리 내의 동일한 위치를 가리키도록 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러가 따르는 공통 어드레스-매핑 기법을 포함한다.
상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 호스트 메모리 컨트롤러 커맨드로서 상기 호스트 메모리 컨트롤러로부터 PIM(process-in-memory) 커맨드를 전송하고, 상기 호스트 메모리 컨트롤러로 상기 조정 메모리 컨트롤러 및 상기 호스트 메모리 컨트롤러 사이의 데이터 버스를 모니터하고, 상기 모니터하는 동안, 상기 PIM 커맨드가 처리되었는지 여부를 가리키는 상기 조정 메모리 컨트롤러로부터의 PIM 완료 응답을 감지하도록 더 야기할 수 있다.
상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 조정 메모리 컨트롤러로 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 판단하고, 상기 PIM 완료 응답으로 상기 PIM 커맨드가 처리되지 않았음을 나타내고, 상기 PIM 완료 응답으로 상기 추정 잔여 시간을 나타내고, 상기 PIM 완료 응답을 상기 조정 메모리 컨트롤러로부터 상기 호스트 메모리 컨트롤러로 전송하도록 더 야기할 수 있다.
상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 PIM 커맨드와 시간종료 값을 연결하고, 상기 시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하고, 상기 호스트 메모리 컨트롤러로부터의 메모리 요청들을 전송하는 것을 방지하도록 더 야기할 수 있다.
상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 호스트 메모리 컨트롤러를 이용하여 상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 가리키는 상기 PIM 완료 응답을 요청하는 폴링(polling) 커맨드를 전송하여 상기 조정 메모리 컨트롤러를 폴링하도록 더 야기할 수 있고, 상기 폴링 커맨드는 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송할 수 있었던 때보다 더 빠르게 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송하도록 야기시킨다.
상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 호스트 메모리 컨트롤러로 상기 PIM 커맨드의 우선순위를 가리키는 상기 폴링 커맨드의 우선순위 필드를 설정하고, 시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하고, 상기 호스트 메모리 컨트롤러로 상기 PIM 커맨드의 우선순위를 증가시키도록 상기 우선순위 필드를 변경하고, 상기 조정 메모리 컨트롤러로 조정 메모리 컨트롤러 커맨드 큐에서 상기 PIM 커맨드를 위로 이동시키고, 다른 메모리 커맨드들을 처리하기 전에 상기 PIM 커맨드를 처리하도록 더 야기할 수 있다.
본 발명의 실시 예들에 따르면, 고 대역폭 메모리(HBM+) 시스템은 HBM 및 호스트 메모리 컨트롤러를 포함하고, 상기 HBM은 DRAM을 포함하는 DRAM 다이 및 프로세서, 및 비교기, 스케줄러 및 커맨드 큐를 포함하는 조정 메모리 컨트롤러를 포함하는 로직 다이를 포함하고, 상기 HBM으로부터 분리되고 메모리 커맨드를 상기 DRAM 다이 상의 상기 DRAM으로 전송하도록 구성된 호스트 메모리 컨트롤러를 포함하고, 상기 조정 메모리 컨트롤러는 상기 메모리 커맨드를 수신하고, 상기 메모리 커맨드를 상기 DRAM 다이 상의 상기 DRAM으로 전달하도록 구성되고, 상기 비교기는 상기 조정 메모리 컨트롤러로부터의 다른 메모리 커맨드를 상기 호스트 메모리 컨트롤러로부터의 상기 메모리 커맨드와 비교하도록 구성되고, 상기 스케줄러는 상기 비교기에 의해 비교에 따라 상기 커맨드 큐의 상기 메모리 커맨드를 스케줄하도록 구성된다.
본 발명에 따르면, 호스트 메모리 컨트롤러 및 조정 메모리 컨트롤러가 메모리의 동일한 뱅크로 접근하는 경우, 뱅크 충돌을 방지할 수 있다.
본 발명에 따르면, 호스트 메모리 컨트롤러 커맨드와 조정 메모리 컨트롤러 커맨드들을 효율적으로 스케줄하여 고 대역폭 메모리 시스템의 성능을 향상시킬 수 있다.
도 1은 고 대역폭 메모리(HBM+) 시스템의 블록도이다.
도 2는 본 발명의 하나의 실시 예에 따른 고 대역폭 메모리(HBM+) 시스템의 상세한 마이크로아키텍처의 블록도이다.
도 3은 PIM 완료 응답의 전달을 나타내는 타이밍도이다.
도 4는 폴링(polling) 커맨드에 응답하여 PIM 완료 응답의 전달을 나타내는 타이밍도이다.
다음의 상세한 설명에서는, 오직 본 발명의 특정한 실시 예들이 도면을 통해 도시되고 설명된다. 통상의 기술자가 인식하는 것과 같이, 본 발명은 다양한 형식으로 구현될 수 있고 본 명세서에 기재된 실시 예들에 제한되는 것으로 해석되어서는 안 된다. 각 실시 예에 있는 특징 또는 양상의 설명은 전형적으로 다른 실시 예들에 있어서 다른 유사한 특징 또는 양상에 이용될 수 있는 것으로서 고려되어야 한다. 동일한 참조 번호는 본 명세서에서 동일한 요소를 가리킨다.
발명의 사상의 특징 및 발명의 사상을 달성하는 방법은 다음의 실시 예들의 상세한 설명 및 첨부된 도면들을 참조함으로써 더 쉽게 이해될 수 있다. 본 명세서에서, 실시 예들은 첨부된 도면들을 참조하여 더 상세하게 설명될 것이고, 도면들에서 동일한 참조 번호들은 동일한 요소들을 지칭한다. 그러나, 본 발명은 다양한 다른 형태들로 구현될 수 있고, 오직 본 명세서에서 설명된 실시 예들에 제한되어 해석되어서는 안 된다. 오히려, 이러한 실시 예들은 본 발명이 철저하고 완벽해지기 위한 예시들로서 제공되고, 기술 분야의 숙련된 기술자에게 본 발명의 양상들 및 특징들을 완전히 전달할 수 있다. 따라서, 본 발명의 양상들 및 특징들의 완벽한 이해를 위해 기술 분야에서 통상의 지식을 갖는 사람들에게 필요하지 않은 프로세스들, 요소들 및 기법들은 설명되지 않을 수 있다. 별도로 언급되지 않으면, 동일한 참조 번호들은 첨부된 도면들 및 상세한 설명 전체에 걸쳐 동일한 요소들을 나타내고, 따라서, 그것의 설명은 반복되지 않을 것이다. 도면들에서, 요소들, 레이어들 및 영역들의 상대적인 크기들은 명확성을 위해 과장될 수 있다.
아래의 명세서에서, 설명의 목적을 위해, 다양한 실시 예들의 완벽한 이해를 제공하기 위해 다양한 특정 세부 사항들이 기재된다. 그러나, 다양한 실시 예들은 이러한 특정 세부 사항들 없이 또는 하나 이상의 동등한 방식을 가지고 실행될 수 있다. 다른 예시들에서, 다양한 실시 예들이 불필요하게 모호하게 되는 것을 방지하기 위해 잘 알려진 구조들 및 장치들은 블록도 형태로 보여진다.
요소, 레이어, 영역 또는 구성 요소가 다른 요소, 레이어, 영역 또는 구성 요소와 "연결"되거나 "위"에 있는 것으로 지칭되는 경우, 다른 요소, 레이어, 영역 또는 구성 요소와 직접 연결되거나 바로 위에 있을 수 있고, 또는 하나 이상의 사이에 오는 요소, 레이어, 영역 또는 구성 요소가 존재할 수 있다. 그러나, "직접 연결"은 하나의 구성 요소가 중간 구성 요소 없이 다른 구성 요소와 직접 연결되는 것을 지칭한다. 한편, "사이의", "인접한" 또는 "바로 인접한"과 같은 구성 요소들 사이의 관계를 설명하는 다른 표현들은 유사하게 해석될 수 있다. 또한, 요소 또는 레이어가 두 요소들 또는 레이어들 "사이"에 있는 것으로 지칭되는 경우, 두 요소들 또는 레이어들 사이의 유일한 요소 또는 레이어일 수 있고, 또는 하나 이상의 사이에 오는 요소들 및 레이어들이 또한 존재할 수 있다.
본 명세서에서 사용되는 용어는 특정 실시 예들을 설명하기 위한 목적일 뿐이고 본 발명을 제한하기 위한 것은 아니다. 본 명세서에서 사용되는 바와 같이, 문맥이 분명하게 다른 것을 가리키지 않으면, 단수형은 복수형을 포함하도록 의도된다. "포함한다", "포함하는", "가지다", "가지는" 용어들은, 본 명세서에서 사용되는 경우, 명시된 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 구성 요소들의 존재를 명시하지만 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 그리고/또는 그것의 그룹들의 존재 또는 추가를 못하게 하는 것은 아니다. 본 명세서에서 사용되는 바와 같이, "그리고/또는" 용어는 연관된 나열 항목들 중 하나 이상의 어떤 조합 또는 모든 조합들을 포함한다.
본 명세서에서 사용되는 바와 같이, "상당히", "약", "대략적으로" 용어와 유사한 용어들은 근사의 용어로서 사용되며 정도의 용어로서 사용되는 것은 아니고, 기술 분야에서 통상의 기술자에 의해 인식될 수 있는 측정 또는 계산된 값들에서 내재된 편차들을 설명하도록 의도된다. "약" 또는 "대략적으로"는, 특정한 양의 측정과 연관된 의심스러운 측정 및 에러를 고려하여(예를 들어, 측정 시스템의 한계), 본 명세서에서 사용되는 바와 같이, 기술 분야에서 통상의 기술 중 하나에 의해 결정된 것으로서 특정 값에 대한 허용 가능한 편차의 범위 이내의 기술된 값 및 수단들을 포함한다. 예를 들어, "약"은 하나 이상의 표준 편차 이내 또는 기술된 값의 30%. 20%, 10%, 5% 이내를 의미할 수 있다. 또한, 본 발명의 실시 예들을 설명하는 경우 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예들"을 지칭한다. 본 명세서에서 사용되는 바와 같이, "사용하다", "사용하는", 및 "사용된" 용어들은 "활용하다", "활용하는" 및 "활용된" 용어들과 각각 동의어로 고려될 수 있다. 또한, "예시적인" 용어는 예시 또는 설명을 지칭하는 것으로 의도된다.
특정 실시 예가 다르게 구현될 수 있는 경우, 특정 프로세스 순서는 설명된 순서와 다르게 수행될 수 있다. 예를 들어, 두 개의 연속적으로 설명된 프로세스들은 거의 동일한 시간에 수행될 수 있거나 설명된 순서와 반대되는 순서로 수행될 수 있다.
실시 예들의 도식화된 도면들 그리고/또는 중간 구조들인 단면도들을 참조하여 본 명세서에서 설명된 다양한 실시 예들이 설명된다. 이에 따라, 예를 들어, 제조 기법들 그리고/또는 오차들의 결과로서 도면들의 형상들로부터의 변형들이 예상된다. 또한, 본 명세서에서 개시된 특정 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따라 실시 예들을 설명하기 위한 목적으로 설명된다. 따라서, 본 명세서에서 개시된 실시 예들은 영역들의 특정한 도시 형상들에 제한되는 것으로서 해석되어서는 안되지만, 예를 들어, 제조로부터 비롯되는 형상들에서의 편차들을 포함한다. 예를 들어, 사각형으로서 도시된 매입 영역은, 일반적으로, 원형 또는 곡선으로 된 특징들 그리고/또는 주입된 영역으로부터 주입되지 않은 영역까지의 바이너리(binary) 변화보다 영역의 가장자리에서 매입 집중의 기울기를 가질 것이다. 마찬가지로, 주입에 의해 형성된 매입 영역은 매입 영역 및 주입이 일어난 표면 사이의 영역에서 주입을 야기할 수 있다. 따라서, 도면들에서 도시된 영역들은 본질적으로 도식화된 것이고 도시된 영역들의 형상은 장치의 영역의 실제 형상을 나타내기 위한 것이 아니며 제한하기 위한 것도 아니다.
본 발명의 실시 예들에 따른 전자 또는 전기 장치들 그리고/또는 다른 관련된 장치들 또는 구성 요소들은 임의의 적절한 하드웨어, 펌웨어(예를 들어, 응용 주문형 집적 회로(application-specific integrated circuit), 소프트웨어, 또는 소프트웨어, 펌웨어 및 하드웨어의 조합을 활용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 구성 요소들은 하나의 집적 회로(IC; integrated circuit) 칩 또는 별도의 IC 칩들 상에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성 요소들은 연성 인쇄 회로 필름(flexible printed circuit film), 테이프 캐리어 패키지(TCP; tape carrier package), 인쇄 회로 기판(PCB; printed circuit board) 상에 구현될 수 있고, 또는 하나의 기판 상에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성 요소들은 하나 이상의 컴퓨팅 장치들에서 하나 이상의 프로세서들에서 실행되고, 컴퓨터 프로그램 명령들을 실행하고 본 명세서에서 설명된 다양한 기능들을 수행하기 위한 다른 시스템 구성 요소들과 상호 작용하는 프로세스 또는 스레드(thread)일 수 있다. 컴퓨터 프로그램 명령들은 예를 들어, 랜덤 액세스 메모리(RAM; random access memory)와 같은 표준 메모리 장치를 이용하여 컴퓨팅 장치에서 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령들은 또한 예를 들어, CD-ROM, 플래시 드라이브 등과 같은 다른 비 일시적 컴퓨터 판독 가능한 미디어에 저장될 수 있다. 또한, 기술 분야에서 통상의 기술자에게 다양한 컴퓨팅 장치들의 기능은 하나의 컴퓨팅 장치로 결합되거나 통합될 수 있는 것은 자명하고, 또는 특정 컴퓨팅 장치의 기능은 본 발명의 실시 예들의 사상 및 범위로부터 벗어나지 않는 하나 이상의 컴퓨팅 장치들을 통해 분산될 수 있다는 것은 자명하다.
별도로 정의되지 않으면, 본 명세서에서 사용된 모든 용어들(기술적 및 과학적 용어들을 포함하는)은 본 발명이 속하는 기술 분야의 통상의 기술자에 의해 일반적으로 이해되는 것과 같은 동일한 의미를 가진다. 일반적으로 사용되는 사전들에 정의된 용어들과 같은 용어들은 관련된 기술 그리고/또는 본 명세서의 문맥에서의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하고, 본 명세서에서 특별히 정의되지 않으면, 이상적 또는 과도하게 형식적으로 해석되어서는 안 된다.
도 2는 본 발명의 하나의 실시 예에 따른 고 대역폭 메모리(HBM+) 시스템의 상세한 마이크로아키텍처의 블록도이다.
도 2를 참조하면, 본 발명의 실시 예들은 HBM+ 시스템(200)의 환경에서 호스트 메모리 컨트롤러(220a) 및 조정 메모리 컨트롤러(220b)의 활동을 조정하기 위한 시스템 및 방법을 제공한다. 따라서, 프로세싱 유형의 메모리 활동들(DRAM 및 PIM(processing-in-memory) 활동들)은 기능의 정확성을 보장하기 위해 적절히 스케줄 될 수 있고, 이에 따라 메모리 시스템의 성능을 향상시킬 수 있다.
본 발명의 HBM+ 시스템(200)에서, 조정 메모리 컨트롤러(220b)는 DRAM(210)에 대한 보조 마스터로서 동작하고, 호스트 메모리 컨트롤러(220a)는 기본 마스터로서 동작한다. 조정 메모리 컨트롤러(220b)는 DRAM(210)으로 전송되는 호스트 메모리 컨트롤러 커맨드들을 인터셉트(intercept)할 수 있고, 호스트 메모리 컨트롤러(220a)로부터의 호스트 메모리 컨트롤러 커맨드들을 전부 DRAM(210)으로 전달할 수 있고, 이에 따라 DRAM(210)이 의도된 방식으로 호스트 메모리 컨트롤러(220a)에 응답하게 할 수 있다.
조정 메모리 컨트롤러(220b)는 호스트 메모리 컨트롤러(220a)로부터 호스트 메모리 컨트롤러 커맨드들을 수신하면서 조정 메모리 컨트롤러 커맨드들을 스케줄하기 위해 스케줄러(275)를 사용할 수 있다. 다른 메모리 컨트롤러들(220)로부터 메모리 커맨드들이 DRAM(210)의 다른 DRAM 뱅크들로 전송되면, 다른 메모리 커맨드들은 서로 독립적이다. 그러나, DRAM(210)의 동일한 DRAM 뱅크에 대해 다른 메모리 컨트롤러들(220)로부터의 메모리 커맨드 경쟁이 스케줄된 경우, 메모리 커맨드 경쟁은 충돌할 수 있고, 이는 시스템 성능에 부정적인 영향을 미칠 수 있다.
메모리 커맨드 충돌로부터 발생하는 문제들을 방지하기 위해, 조정 메모리 컨트롤러(220b)는 조정 메모리 컨트롤러(220b)의 스케줄링 결정을 조정하기 위해 호스트 메모리 컨트롤러(220a)로부터의 호스트 메모리 컨트롤러 커맨드들을 이용할 수 있다. 예를 들어, 호스트 메모리 컨트롤러 커맨드들에게는 조정 메모리 컨트롤러 커맨드들보다 높은 우선 순위가 주어질 수 있다. 따라서, 조정 메모리 컨트롤러(220b)의 스케줄러(275)는 설정 합의에 따른 호스트 메모리 컨트롤러 커맨드들에 기초하여 DRAM(210)에 전송되는 DRAM 커맨드들을 스케줄할 수 있고, 이에 따라, 호스트 메모리 컨트롤러(220a)로부터의 보통의 DRAM 요청들은 호스트 메모리 컨트롤러(220a)에 의해 예상된 바와 같이 DRAM(210)이 호스트 메모리 컨트롤러(220a)에 응답하도록 야기시킬 수 있다. 즉, 아래에서 더 설명될 바와 같이, 설정되고, 동의된 어드레스-매핑 기법에 따라 뱅크 충돌들을 방지하기 위해 조정 메모리 컨트롤러(220b) 및 호스트 메모리 컨트롤러(220a)는 공통된 규칙들을 설정하는 설정 합의의 공통 규칙을 따를 수 있다.
조정 메모리 컨트롤러(220b)의 스케줄러(275)는 조정 메모리 컨트롤러(220b)의 커맨드 큐(280)와 호스트 메모리 컨트롤러(220a)로부터의 커맨드들을 비교하기 위해 비교기(278)를 이용하고, 비교 결과에 기초하여 커맨드 스케줄링을 조정하거나 결정함으로써 스케줄링을 수행할 수 있다. 따라서, 두 메모리 컨트롤러들(220)로부터의 커맨드 충돌이 있는 경우, 메모리 컨트롤러들(220) 중 하나는 경쟁 커맨드가 완료되기를 기다릴 수 있다. 조정 메모리 컨트롤러(220b)의 비교기(278)는 두 커맨드들의 세트(예를 들어, 조정 메모리 컨트롤러(220b)로부터의 하나의 커맨드 세트 및 호스트 메모리 컨트롤러(220a)로부터의 다른 커맨드 세트)을 비교할 수 있다. 조정 메모리 컨트롤러(220b)가 양 쪽의 커맨드들의 세트가 DRAM(210)의 동일한 뱅크에 스케줄된 것으로 판단하는 경우, 조정 메모리 컨트롤러(220b)는 호스트 메모리 컨트롤러 커맨드가 완료될 때까지 기다릴 수 있고, 이후 조정 메모리 컨트롤러(220b)에 대응하는 커맨드를 스케줄하기 위해 스케줄러(275)를 이용할 수 있다.
또는, 호스트 메모리 컨트롤러(220a)는 기본 마스터로서 사용될 수 있으므로, 조정 메모리 컨트롤러(220b)는 일반적으로 호스트 메모리 컨트롤러(220a)에 의해 어떤 요청이 전송되는지 알 것이기 때문에, 조정 메모리 컨트롤러(220b)의 스케줄러(275)는 뱅크 충돌을 방지하기 위한 책임이 있을 수 있다. 예를 들어, 호스트 메모리 컨트롤러(220a)는 PIM(processing-in-memory) 요청을 DRAM(210)의 제1 뱅크로 전송할 수 있고, 조정 메모리 컨트롤러(220b)가 제1 뱅크에 대응하는 PIM의 처리를 완료할 때까지 동일한 제1 뱅크로 다른 커맨드들을 전송하는 것을 막을 수 있고, 이에 따라 기능적 정확성을 보장하고, 또한 조정 메모리 컨트롤러(220b)에 대한 스케줄링 복잡도 및 리소스 요구 사항을 감소시킬 수 있다.
따라서, 호스트 메모리 컨트롤러(220a) 및 조정 메모리 컨트롤러(220b) 사이의 설정 합의는 기능적 정확성을 보장하고 HBM 인터페이스 및 프로토콜을 유지하면서 뱅크 충돌을 방지한다. 또한, 호스트(230)로부터의 일반적인 메모리 요청들은 원하는 대로 지속적으로 진행할 수 있다.
상술한 바와 같이, 특정 어드레스에 대해, 호스트 메모리 컨트롤러(220a) 및 조정 메모리 컨트롤러(220b) 각각은 DRAM(210) 내부의 실제 대응하는 위치를 정확하게 찾아내거나 가리키기 위해 공통 어드레스-매핑 기법을 사용할 수 있다. DRAM(210)은 채널들, 뱅크들 및 행들 및 열들로 구성되기 때문에, 다른 유형의 어드레스-매핑 기법들은 특정 어드레스에 대응하는 DRAM(210)에서의 위치를 결정하기 위해 사용될 수 있다. 설정 합의에 따라, 호스트 메모리 컨트롤러(220a) 및 조정 메모리 컨트롤러(220b)는 메모리 요청들이 "잘못 이해"되지 않도록 동일한 어드레스-매핑 기법을 사용할 수 있다.
어드레스-매핑 기법에 따르면, 호스트 메모리 컨트롤러(220a)는 행(Row_CA)(252)에 대한 커맨드 어드레스 및 열(Col_CA)(254)에 대한 커맨드 어드레스를 전송할 수 있다. 그리고 나서, 조정 메모리 컨트롤러(220b)는 조정 메모리 컨트롤러(220b)의 커맨드 어드레스 디코더(277)에 기초하여 호스트 메모리 컨트롤러(220a)로부터의 커맨드들이 나타내는 것을 판별할 수 있다. 그리고 나서, 조정 메모리 컨트롤러(220b)의 커맨드 어드레스 디코더(277)는 실제 행 커맨드 어드레스(256) 그리고/또는 실제 열 커맨드 어드레스(258)를 판별할 수 있고, 또는 커맨드가 PIM 커맨드 어드레스(262)에 대응하는 것을 판별할 수 있다.
커맨드가 PIM 커맨드에 대응하지 않은 경우, 비교기(278)에서 비교가 수행되고, 입력되는 Row_CA(256) 및 Col_CA(258)는 커맨드 큐(280) 내의 커맨드들과 비교된다. 비교에 기초하여, 조정 메모리 컨트롤러(220b)의 스케줄러(275)는 커맨드 큐(280) 내에서 커맨드들의 스케줄링을 조정할 수 있다. 본 발명의 실시 예에 있어서, 커맨드 큐(280)에 있는 커맨드들은 활성화 커맨드(ACT), 읽기 커맨드(RD), 쓰기 커맨드(WR) 및 프리차지 커맨드(PRE)에 해당하고, 이는 DRAM(210)이 이해할 수 있는 커맨드들을 나타낸다. 각각의 커맨드에 대응하는 것은 "준비"(R) 또는 "준비 되지 않음"(N)을 가리키는 상태 지시자일 수 있고, 이는 스케줄러(275)가 언제 커맨드들이 스케줄될 수 있는지를 판별하는데 이용될 수 있다.
또는, 호스트 메모리 컨트롤러(220a)는 일반적인 DRAM 액세스 커맨드로부터 구별함으로써, PIM 커맨드/PIM 요청을 전송하는 것을 시도할 수 있다. 조정 메모리 컨트롤러(220b)의 커맨드 어드레스 디코더(277)에 의해 디코딩 동작이 수행된 이후, 커맨드가 일반적인 DRAM 커맨드이면, 커맨드는 DRAM(210)으로 직접 전달될 것이다. 대조적으로, 조정 메모리 컨트롤러(220b)에 의해 수신된 커맨드가 PIM 커맨드로 변환되면, PIM 커맨드는 PIM 디코더(264)에 의해 추가로 복호화될 수 있고, 커맨드 큐(280) 내에서 처리될 수 있다(예를 들어, 커맨드 어드레스 디코더(277)로부터, PIM 커맨드는 PIM 커맨드 어드레스(PIM_CA)(262)로 변환될 수 있고, PIM 디코더(264)가 복호화된 PIM 커맨드를 커맨드 큐(280)로 전송할 수 있도록 PIM 디코더(264)로 전송될 수 있다.
도 3은 PIM 완료 응답의 전달을 나타내는 타이밍도이다.
도 2 및 도 3을 참조하면, 조정 메모리 컨트롤러(220b)는 보조 마스터이기 때문에, 조정 메모리 컨트롤러(220b)는 커맨드를 스케줄하려고 하는 경우 더 낮은 우선순위를 가질 수 있다. 따라서, 조정 메모리 컨트롤러(220b)는 동작을 수행하고 스케줄된 커맨드들을 완료하기 위해 더 많은 시간을 소요할 수 있다. 조정 메모리 컨트롤러(220b)에서의 처리는 비 결정적이고, 조정 메모리 컨트롤러(220b)는 결정된 시간 안에 PIM 커맨드를 완료하지 못할 수 있기 때문에(PIM 커맨드는 기본 마스터인 호스트 메모리 컨트롤러(220a)로부터의 보통의 메모리 요청들에 의해 지연될 수 있기 때문에), 조정 메모리 컨트롤러(220b)는 임의의 PIM 요청/PIM 커맨드의 상태를 호스트 메모리 컨트롤러(220a)로 명시적으로 알려줄 수 있다.
그러므로, PIM 커맨드(310)가 호스트 메모리 컨트롤러(220a)로부터 전송된 이후, 호스트 메모리 컨트롤러(220a)는 매 PIM 시간 간격/PIM_ACK 시간(tPIM)(320) 마다 한번씩 데이터 버스(DQ 버스)(284)를 모니터할 수 있고, 이는 HBM+ 시스템(200)의 클럭 사이클의 일관된 수에 대응하는 시간 간격일 수 있고, 이는 동기식 더블 데이터 레이트(DDR; double data rate)에 대응할 수 있다. 호스트 메모리 컨트롤러(220a)는 PIM 완료 응답/PIM 응답 패킷(PIM_ACK)(330)을 감지하기 위해 DQ 버스(284)를 계속 모니터할 수 있고, 이는 PIM 커맨드(310)의 처리가 완료되었는지 여부를 나타낼 수 있다. PIM 완료 응답(330)은 조정 메모리 컨트롤러(220b)의 PIM 완료 응답 생성기(288)에 의해 생성될 수 있다.
DQ 버스(284)에서, 조정 메모리 컨트롤러(220b)는 PIM 완료 응답(330)에 대응하는 정보를 포함하는 패킷에 응답할 수 있다. PIM 완료 응답(330)은 샘플링된 시간(예를 들어, 매 PIM 시간 간격마다 한번씩)에 조정 메모리 컨트롤러(220b)에 의해 전송될 수 있다. PIM 완료 응답(330)은 완료 상태 비트에 대응하는 하나의 비트를 포함하는 256 비트 메시지로서 인스턴스화 될 수 있고, 이는 조정 메모리 컨트롤러(220b)의 PIM 완료 상태 레지스터(286)에 의해 설정될 수 있고, 관련된 DRAM 활동들이 종료될 때 설정될 수 있다. PIM 완료 응답(330)의 완료 상태 비트가 거짓을 가리키는 경우, 호스트 메모리 컨트롤러(220a)는 DQ 버스(284)를 계속 모니터할 수 있다. 그러나, PIM 완료 응답(330)이 완료 상태 비트가 진실임을 가리킨다면, 호스트 메모리 컨트롤러(220a)는 전송된 PIM 커맨드(310)가 완료되었고 성공적으로 표시되었다는 것을 알 수 있다.
또한, PIM 완료 응답(330)의 일부 또는 모든 나머지 비트들은 완료까지 남아있는 추정 시간을 제공하는데 이용될 수 있다(예를 들어, PIM 완료 응답(330)의 완료 상태 비트가 PIM 커맨드(310)의 완료가 아직 되지 않았음을 가리키는 경우). 예를 들어, 조정 메모리 컨트롤러(220b)는 PIM 커맨드(310)의 완료까지 남아있는 추정 시간을 추정하기 위해 추정기(292)를 포함할 수 있다. 조정 메모리 컨트롤러(220b)는 내부 동작들의 상태를 알 수 있으므로, 조정 메모리 컨트롤러(220b)의 추정기(292)는 커맨드 큐(280)를 스캔하여 커맨드 큐(280)의 미처리된 커맨드들 각각에 대한 추정 시간의 양을 결정하고, 추정된 시간을 모두 더하여 조정 메모리 컨트롤러(220b)가 PIM 커맨드(310)를 완료하기 위해 얼마만큼의 추가 시간을 예상하는지를 추정할 수 있다. 이후, PIM 완료 상태 레지스터(286)는 DRAM 완료 상태 지시자(268)에 의해 나타내질 수 있는 것과 같이, 관련 DRAM 활동들이 종료된 것으로 설정될 수 있다. 따라서, 조정 메모리 컨트롤러(220b)는 PIM 완료 응답(330)에서 나타나는 추정 잔여 시간으로 호스트 메모리 컨트롤러(220a)에 응답할 수 있다.
따라서, 일부 추가 DQ 버스 대역폭은 각 PIM 시간 간격(320)에 대한 PIM 커맨드(310)의 완료 지시를 위해 DQ 버스(284)로의 패킷 전송에 사용될 수 있지만 HBM 인터페이스 및 프로토콜은 커맨드 버스 대역폭을 낭비하지 않고 유지될 수 있다.
도 4는 폴링 커맨드에 응답하여 PIM 완료 응답의 전달을 보여주는 타이밍도이다.
도 2 및 도 4를 참조하면, 조정 메모리 컨트롤러(220b)에 의해 전송된 PIM 완료 응답(330)에서 나타난 추정 잔여 시간이 낮다고 예상되면, 호스트(230)는 폴링 커맨드(PIM_POLL)(410)를 이용하여 PIM 완료 상태를 능동적으로 폴링하기 위해 호스트 메모리 컨트롤러(220a)를 이용할 수 있다. 이에 따라 호스트(230)는 호스트 메모리 컨트롤러(220a)가 PIM 커맨드(310)의 처리를 위해 남아있는 시간을 더 정확하게 알 수 있게 한다.
폴링 커맨드(410)를 수신한 후, 조정 메모리 컨트롤러(220b)는 PIM 완료 응답(330)을 반환할 것이다(예를 들어, PIM 시간 간격(320)보다 더 자주 발생하는 시간 간격일 수 있는 tPIM_POLL 시간(420) 이내). 따라서, 호스트 메모리 컨트롤러(220)는 조정 메모리 컨트롤러(220b)에 의해 전송되는 임의의 PIM 완료 응답(330)으로 예상보다 더 빠르게 발생하는 비율로 PIM 커맨드(310)의 예상 완료에 관한 정보를 수신할 수 있다. 임의의 PIM 완료 응답(330)은, 상술한 바와 같이, 매 PIM 시간 간격(320)마다 오직 한번씩 발생한다. 예를 들어, HBM 시스템에 대한 현재 스펙들에 기초하여 tPIM_POLL 시간(420)은 약 3 나노초로 추정될 수 있는 반면에 PIM 시간 간격(320)은 약 50 나노초 이상으로 추정될 수 있다. 샘플 완료 시간이 약 50 나노초이고, 추정 잔여 시간이 때때로 매우 짧을 수 있기 때문에, 실제 응답 상태를 수신하기 위해 추가로 50 나노초를 기다리는 것은 적절하지 않을 수 있다. 따라서, 폴링 커맨드(410)는 HBM+ 시스템(200)의 효율성 및 성능을 향상시킬 수 있다.
능동적인 폴링에 의해 제공된 이점은 샘플 완료 시간이 제공되면서 또한 호스트 메모리 컨트롤러(220a)가 더 빠르게 응답 상태를 수신하게 하는 것이다. 그러나, 능동적인 폴링을 구현하기 위해 새로운 커맨드가 사용될 수 있으므로, 새로운 커맨드를 구현하기 위해 여분의 커맨드 버스 대역폭이 사용될 수 있다.
앞서 설명된 PIM 완료 응답(330) 및 폴링 커맨드(410)와 관련하여, DRAM(210)으로부터의 데이터 경로는 MUX(282)에 의해 제어될 수 있다. MUX(282)는 데이터를 DRAM(210)으로부터 호스트 메모리 컨트롤러(220a)로 다시 전송하거나 데이터를 조정 메모리 컨트롤러(220b) 내부의 프로세서(270)로 다시 전송할 수 있다. 데이터가 조정 메모리 컨트롤러(220b)의 내부 동작을 위해 사용되는 경우, 데이터는 프로세서(270)로 보내질 수 있다. 그러나, 데이터가 호스트 메모리 컨트롤러(220a)에 대한 응답인 경우, 데이터는 호스트 메모리 컨트롤러(220a)로 보내질 수 있다. DQ 버스(284)는 보통의 데이터 또는 PIM 완료 응답(330)을 전달하기 위해 사용될 수 있다.
HBM 인터페이스 및 프로토콜이 유지되고, 호스트로부터의 보통의 메모리 애플리케이션 요청이 원하는 대로 진행될 수 있더라도, 조정 메모리 컨트롤러(220b)가 낮은 우선순위를 갖기 때문에, 대응하는 커맨드는 적절한 것보다 느리게 완료할 수 있다. 또한, 호스트 메모리 컨트롤러(220a)로부터의 커맨드를 디코딩하기 위한 추가 사이클이 사용될 수 있다.
본 발명에 따르면, 주어진 PIM 커맨드(310)의 우선순위는 PIM 커맨드(310)가 원하는 시간 이내에 완료되도록 설정될 수 있다. 우선순위를 설정하기 위한 이러한 우선순위 정보는 PIM 커맨드(310) 그리고/또는 폴링 커맨드(410)에 내장될 수 있다.
예를 들어, 조정 메모리 컨트롤러(220b)가 영구적으로 PIM 커맨드(310)의 처리 완료를 실패하는 상황을 방지하기 위해, 호스트 메모리 컨트롤러(220a)는 적절한 스케줄링을 결정하고 그리고/또는 조정 메모리 컨트롤러(220b)로 우선순위 정보를 전송할 수 있다. 조정 메모리 컨트롤러(220b)는, 보조 마스터로서, 일반적으로 호스트 메모리 컨트롤러 명령들을 스케줄할 수 있기 때문에, 호스트 메모리 컨트롤러(220a)가 계속해서 명령들을 전송하는 상황은 조정 메모리 컨트롤러(220b)가 조정 메모리 컨트롤러(220b)의 PIM 명령에 대한 동작을 스케줄할 수 없도록 할 수 있다. 따라서, 각각의 PIM 커맨드(310)는 시간종료 값과 연관될 수 있다. 시간종료 값에 도달한 후에(예를 들어, 충분한 시간이 지난 후에) 호스트 메모리 컨트롤러(220a)에 의해 수신된 PIM 완료 응답(330)이 여전히 실패이면, 호스트 메모리 컨트롤러(220a)는 HBM 채널로 보통의 메모리 요청의 전송을 중단하여 순서를 바꿔 PIM 커맨드(310)를 스케줄할 수 있는 조정 메모리 컨트롤러(220b)에 대한 기회를 제공하고, 따라서 PIM 커맨드(310)의 완료를 가능하게 할 수 있다.
또한, 조정 메모리 컨트롤러(220b)는 향상된 성능을 위해 순서가 바꿔 PIM 커맨드(310)를 스케줄할 수 있다. 이는 PIM 커맨드들(310) 중 늦게 요청된 커맨드들 이후 발생한 PIM 커맨드들(310)(먼저 요청되었던) 중 일부의 실행을 야기할 수 있다. 조정 메모리 컨트롤러(220b)가 상대적으로 높은 우선순위를 갖는 PIM 커맨드들을 실행할 수 있도록 PIM 커맨드(310)에서 우선순위 필드는 호스트 메모리 컨트롤러(220a)에 의해 설정될 수 있다. 즉, 호스트 메모리 컨트롤러(220a)는 조정 메모리 컨트롤러(220b)가, 우선순위 필드를 디코딩 하자마자, PIM 커맨드(310)를 즉시 실행해야 하는지를 알 수 있도록 우선순위 필드를 설정할 수 있다.
또한, 폴링 커맨드(410)에 우선순위를 위한 필드가 있을 수 있다. 따라서, 호스트 메모리 컨트롤러(220a)는 이전에 발행된 PIM 커맨드(310)의 우선순위를 변경할 수 있다. 예를 들어, 호스트 메모리 컨트롤러(220a)가 PIM 커맨드(310)가 완료를 위해 허용할 수 없는 오랜 시간을 소요하는 것을 인식한다면, 호스트 메모리 컨트롤러(220a)는 PIM 커맨드(310)가 더 빠르게 완료되도록 하기 위해 우선순위 필드를 이용함으로써 PIM 커맨드(310)의 우선순위를 빠르게 하여, 조정 메모리 컨트롤러(220b)는 높은 우선순위로 PIM 커맨드의 실행을 시작할 수 있다.
따라서, 본 발명의 위에서 설명한 실시 예들은 고 대역폭 메모리(HBM+) 시스템을 제공한다.
앞의 내용은 실시 예들을 보여주는 것이고, 이에 한정되는 것으로 해석되지 않는다. 비록 몇몇 실시 예들이 설명되었지만, 기술 분야의 통상의 기술자는 실시 예들의 새로운 개시 및 이점을 실질적으로 벗어나지 않으면서 실시 예들에서 다양한 수정이 가능한 것을 쉽게 인식할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의된 바와 같이 실시 예들의 범위 이내에 포함되는 것으로 의도된다. 청구항들에서, 기능식 청구항은 기술된 기능을 수행하는 본 명세서에서 설명된 구조및 구조적 등가물뿐만 아니라 등가 구조를 포함하도록 의도된다. 따라서, 전술한 내용은 실시 예들을 보여주는 것이고 개시된 특정 실시 예들에 제한되는 것으로 해석되지 않는 것은 자명하고, 다른 실시 예들뿐만 아니라 개시된 실시 예들에 대한 수정들은 첨부된 청구항들의 범위에 포함되는 것으로 의도된다. 발명의 사상은 청구항에 포함될 청구항들의 균등 범위를 가지는 다음의 청구항들에 의해 정의된다.

Claims (20)

  1. 고 대역폭 메모리(HBM+) 시스템에서 메모리 커맨드들을 조정하는 방법에 있어서,
    호스트 메모리 컨트롤러 커맨드를 호스트 메모리 컨트롤러로부터 메모리로 전송하는 단계;
    조정 메모리 컨트롤러에서 상기 호스트 메모리 컨트롤러 커맨드를 수신하는 단계;
    상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러로부터 상기 메모리로 전달하는 단계; 및
    상기 조정 메모리 컨트롤러가 상기 호스트 메모리 컨트롤러 커맨드에 기초하여 조정 메모리 컨트롤러 커맨드를 스케줄링하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 호스트 메모리 컨트롤러 커맨드에 기초하여 상기 조정 메모리 컨트롤러 커맨드를 스케줄링하는 단계는,
    상기 호스트 메모리 컨트롤러 커맨드를 조정 메모리 컨트롤러 커맨드 큐에 있는 상기 조정 메모리 컨트롤러 커맨드와 비교하는 단계; 및
    상기 비교에 기초하여 상기 조정 메모리 컨트롤러 커맨드의 스케줄링을 조정하는 단계를 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러 커맨드와 비교하는 단계는 상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 메모리의 공통 뱅크에 대해 스케줄된지 여부를 결정하는 단계를 포함하고,
    상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 공통 뱅크에 대해 스케줄된 경우 상기 조정 메모리 컨트롤러 커맨드가 처리된 것으로 나타날 때까지 추가 메모리 커맨드들이 상기 호스트 메모리 컨트롤러로부터 상기 공통 뱅크로 전송되는 것을 방지하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 사이의 설정 합의를 설정하는 단계를 더 포함하고,
    상기 설정 합의는 동일한 어드레스를 디코딩할 때 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 모두가 상기 메모리 내의 동일한 위치를 가리키도록 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러가 뒤따르는 공통 어드레스-매핑 기법을 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 호스트 메모리 컨트롤러 커맨드로서 상기 호스트 메모리 컨트롤러로부터 PIM(process-in-memory) 커맨드를 전송하는 단계;
    상기 호스트 메모리 컨트롤러가 상기 조정 메모리 컨트롤러 및 상기 호스트 메모리 컨트롤러 사이의 데이터 버스를 모니터하는 단계; 및
    상기 모니터하는 동안, 상기 PIM 커맨드가 처리되었는지 여부를 나타내는 상기 조정 메모리 컨트롤러로부터의 PIM 완료 응답을 감지하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 조정 메모리 컨트롤러가 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 판단하는 단계;
    상기 PIM 완료 응답으로 상기 PIM 커맨드가 처리되지 않았음을 나타내는 단계;
    상기 PIM 완료 응답으로 상기 추정 잔여 시간을 나타내는 단계; 및
    상기 PIM 완료 응답을 상기 조정 메모리 컨트롤러로부터 상기 호스트 메모리 컨트롤러로 전송하는 단계를 더 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 추정 잔여 시간을 판단하는 단계는,
    상기 조정 메모리 컨트롤러의 조정 메모리 컨트롤러 커맨드 큐를 스캔하는 단계;
    상기 조정 메모리 컨트롤러 커맨드 큐에서 미처리된 미처리 메모리 커맨드들을 판별하는 단계;
    상기 미처리 메모리 커맨드들 각각에 대한 추정 시간을 판별하는 단계; 및
    상기 추정 잔여 시간을 판별하기 위해 상기 추정 시간을 합하는 단계를 포함하는 방법.
  8. 제 6 항에 있어서,
    상기 PIM 커맨드와 시간종료 값을 연관시키는 단계;
    상기 시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하는 단계; 및
    상기 호스트 메모리 컨트롤러로부터의 메모리 요청들을 전송하는 것을 방지하는 단계를 더 포함하는 방법.
  9. 제 5 항에 있어서,
    상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 가리키는 상기 PIM 완료 응답을 요청하는 폴링(polling) 커맨드를 전송함으로써 상기 조정 메모리 컨트롤러를 폴링하는 단계를 더 포함하고,
    상기 폴링 커맨드는 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송할 수 있었던 때보다 더 빠르게 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송하도록 야기시키는 방법.
  10. 제 9 항에 있어서,
    상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드의 우선순위를 가리키는 상기 폴링 커맨드의 우선순위 필드를 설정하는 단계;
    시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하는 단계;
    상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드의 우선순위를 증가시키도록 상기 우선순위 필드를 변경하는 단계;
    상기 조정 메모리 컨트롤러가 조정 메모리 컨트롤러 커맨드 큐에서 상기 PIM 커맨드를 위로 이동시키는 단계; 및
    다른 메모리 커맨드들을 처리하기 전에 상기 PIM 커맨드를 처리하는 단계를 포함하는 방법.
  11. 조정 메모리 컨트롤러;
    호스트 메모리 컨트롤러;
    메모리; 및
    명령어들을 실행하도록 구성되는 프로세서를 포함하고,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가:
    호스트 메모리 컨트롤러 커맨드를 상기 호스트 메모리 컨트롤러로부터 상기 메모리로 전송하고;
    상기 조정 메모리 컨트롤러에서 상기 호스트 메모리 컨트롤러 커맨드를 수신하고;
    상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러로부터 사익 메모리로 전달하고;
    상기 호스트 메모리 컨트롤러 커맨드에 기초하여 상기 조정 메모리 컨트롤러에 의해 조정 메모리 컨트롤러 커맨드를 스케줄하도록 야기하는 고 대역폭 메모리(HBM+) 시스템.
  12. 제 11 항에 있어서,
    상기 프로세서는 상기 호스트 메모리 컨트롤러 커맨드와 조정 메모리 컨트롤러 커맨드 큐에 존재하는 상기 조정 메모리 컨트롤러 커맨드를 비교하고, 상기 비교에 기초하여 상기 조정 메모리 컨트롤러 커맨드의 스케줄을 조정함으로써 상기 호스트 메모리 컨트롤러 커맨드에 기초하여 상기 조정 메모리 컨트롤러 커맨드를 스케줄하도록 구성되는 고 대역폭 메모리(HBM+) 시스템.
  13. 제 12 항에 있어서,
    상기 프로세서는 상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 메모리의 공통 뱅크에 대해 스케줄된지 여부를 판단하여 상기 호스트 메모리 컨트롤러 커맨드를 상기 조정 메모리 컨트롤러 커맨드와 비교하도록 구성되고,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 호스트 메모리 컨트롤러 커맨드 및 상기 조정 메모리 컨트롤러 커맨드가 상기 공통 뱅크에 대해 스케줄된 경우, 상기 조정 메모리 컨트롤러 커맨드가 처리된 것으로 나타날 때까지, 상기 프로세서가 추가 메모리 커맨드를 상기 호스트 메모리 컨트롤러로부터 상기 공통 뱅크로 전송하는 것을 방지하도록 더 야기하는 고 대역폭 메모리(HBM+) 시스템.
  14. 제 11 항에 있어서,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 사이의 설정 합의를 설정하도록 더 야기하고,
    상기 설정 합의는 동일한 어드레스를 디코딩할 때 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러 모두가 상기 메모리 내의 동일한 위치를 가리키도록 상기 호스트 메모리 컨트롤러 및 상기 조정 메모리 컨트롤러가 뒤따르는 공통 어드레스-매핑 기법을 포함하는 고 대역폭 메모리(HBM+) 시스템.
  15. 제 11 항에 있어서,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가:
    상기 호스트 메모리 컨트롤러 커맨드로서 상기 호스트 메모리 컨트롤러로부터 PIM(process-in-memory) 커맨드를 전송하고;
    상기 호스트 메모리 컨트롤러로 상기 조정 메모리 컨트롤러 및 상기 호스트 메모리 컨트롤러 사이의 데이터 버스를 모니터하고;
    상기 모니터하는 동안, 상기 PIM 커맨드가 처리되었는지 여부를 가리키는 상기 조정 메모리 컨트롤러로부터의 PIM 완료 응답을 감지하도록 더 야기하는 고 대역폭 메모리(HBM+) 시스템.
  16. 제 15 항에 있어서,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가:
    상기 조정 메모리 컨트롤러로 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 판단하고;
    상기 PIM 완료 응답으로 상기 PIM 커맨드가 처리되지 않았음을 나타내고;
    상기 PIM 완료 응답으로 상기 추정 잔여 시간을 나타내고; 및
    상기 PIM 완료 응답을 상기 조정 메모리 컨트롤러로부터 상기 호스트 메모리 컨트롤러로 전송하도록 더 야기하는 고 대역폭 메모리(HBM+) 시스템.
  17. 제 16 항에 있어서,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가:
    상기 PIM 커맨드와 시간종료 값을 연관시키고;
    상기 시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하고;
    상기 호스트 메모리 컨트롤러로부터의 메모리 요청들을 전송하는 것을 방지하도록 더 야기하는 고 대역폭 메모리(HBM+) 시스템.
  18. 제 15 항에 있어서,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가 상기 호스트 메모리 컨트롤러를 이용하여 상기 호스트 메모리 컨트롤러가 상기 PIM 커맨드를 처리하기 위한 추정 잔여 시간을 가리키는 상기 PIM 완료 응답을 요청하는 폴링(polling) 커맨드를 전송하여 상기 조정 메모리 컨트롤러를 폴링하도록 더 야기하고,
    상기 폴링 커맨드는 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송할 수 있었던 때보다 더 빠르게 상기 조정 메모리 컨트롤러가 상기 PIM 완료 응답을 전송하도록 야기시키는 고 대역폭 메모리(HBM+) 시스템.
  19. 제 18 항에 있어서,
    상기 프로세서에 의해 상기 명령어들이 실행되는 경우, 상기 명령어들은 상기 프로세서가:
    상기 호스트 메모리 컨트롤러로 상기 PIM 커맨드의 우선순위를 가리키는 상기 폴링 커맨드의 우선순위 필드를 설정하고;
    시간종료 값에 대응하는 시간 이내에 상기 PIM 커맨드가 처리되지 않음을 판단하고;
    상기 호스트 메모리 컨트롤러로 상기 PIM 커맨드의 우선순위를 증가시키도록 상기 우선순위 필드를 변경하고;
    상기 조정 메모리 컨트롤러로 조정 메모리 컨트롤러 커맨드 큐에서 상기 PIM 커맨드를 위로 이동시키고;
    다른 메모리 커맨드들을 처리하기 전에 상기 PIM 커맨드를 처리하도록 더 야기하는 고 대역폭 메모리(HBM+) 시스템.
  20. HBM(high-bandwidth memory); 및
    호스트 메모리 컨트롤러를 포함하고,
    상기 HBM은,
    DRAM을 포함하는 DRAM 다이; 및
    프로세서, 및 비교기, 스케줄러 및 커맨드 큐를 포함하는 조정 메모리 컨트롤러를 포함하는 로직 다이를 포함하고,
    상기 호스트 메모리 컨트롤러는 상기 HBM으로부터 분리되고 메모리 커맨드를 상기 DRAM 다이 상의 상기 DRAM으로 전송하도록 구성되고,
    상기 조정 메모리 컨트롤러는 상기 메모리 커맨드를 수신하고, 상기 메모리 커맨드를 상기 DRAM 다이 상의 상기 DRAM으로 전달하도록 구성되고,
    상기 비교기는 상기 조정 메모리 컨트롤러로부터의 다른 메모리 커맨드를 상기 호스트 메모리 컨트롤러로부터의 상기 메모리 커맨드와 비교하도록 구성되고,
    상기 스케줄러는 상기 비교기에 의한 비교에 따라 상기 커맨드 큐의 상기 메모리 커맨드를 스케줄하도록 구성된 고 대역폭 메모리(HBM+) 시스템.
KR1020180039769A 2017-07-25 2018-04-05 Hbm에서의 프로세스를 위한 조직화된 니어-파 메모리 컨트롤러 KR102265600B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762536919P 2017-07-25 2017-07-25
US62/536,919 2017-07-25
US15/723,014 2017-10-02
US15/723,014 US10437482B2 (en) 2017-07-25 2017-10-02 Coordinated near-far memory controller for process-in-HBM

Publications (2)

Publication Number Publication Date
KR20190011662A true KR20190011662A (ko) 2019-02-07
KR102265600B1 KR102265600B1 (ko) 2021-06-17

Family

ID=65037952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180039769A KR102265600B1 (ko) 2017-07-25 2018-04-05 Hbm에서의 프로세스를 위한 조직화된 니어-파 메모리 컨트롤러

Country Status (5)

Country Link
US (1) US10437482B2 (ko)
JP (1) JP6974260B2 (ko)
KR (1) KR102265600B1 (ko)
CN (1) CN109299024B (ko)
TW (1) TWI771407B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023128479A1 (ko) * 2021-12-30 2023-07-06 주식회사 엘엑스세미콘 메모리 제어 시스템 및 메모리 제어 기능을 갖는 디스플레이 디바이스

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9997232B2 (en) * 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US11016667B1 (en) * 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
CN111679785A (zh) 2019-03-11 2020-09-18 三星电子株式会社 用于处理操作的存储器装置及其操作方法、数据处理系统
DE102020105628A1 (de) 2019-03-11 2020-09-17 Samsung Electronics Co., Ltd. Verfahren zur Durchführung interner Verarbeitungsvorgänge mit vordefinierter Protokollschnittstelle einer Speichervorrichtung
KR20200129843A (ko) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN111143257A (zh) * 2019-12-02 2020-05-12 深圳市奥拓电子股份有限公司 Ddr仲裁控制器、视频缓存装置及视频处理系统
CN111459864B (zh) 2020-04-02 2021-11-30 深圳朗田亩半导体科技有限公司 一种存储器件及其制造方法
US11907575B2 (en) * 2021-02-08 2024-02-20 Samsung Electronics Co., Ltd. Memory controller and memory control method
US11609879B2 (en) * 2021-02-26 2023-03-21 Nvidia Corporation Techniques for configuring parallel processors for different application domains
US11947835B2 (en) * 2021-09-21 2024-04-02 Black Sesame Technologies Inc. High-performance on-chip memory controller
KR20230059229A (ko) 2021-10-26 2023-05-03 삼성전자주식회사 메모리 장치를 위한 커맨드 스케줄링 방법 및 이를 수행하는 메모리 시스템
US20230205706A1 (en) * 2021-12-23 2023-06-29 Advanced Micro Devices, Inc. Approach for managing near-memory processing commands and non-near-memory processing commands in a memory controller

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150293709A1 (en) * 2014-04-14 2015-10-15 Microsoft Corporation Fine-grained bandwidth provisioning in a memory controller
US20160070483A1 (en) * 2013-05-30 2016-03-10 Hewlett-Packard Development, L.P. Separate memory controllers to access data in memory

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877558B2 (en) 2007-08-13 2011-01-25 Advanced Micro Devices, Inc. Memory controller prioritization scheme
US8266393B2 (en) 2008-06-04 2012-09-11 Microsoft Corporation Coordination among multiple memory controllers
CN101639817B (zh) * 2009-03-13 2012-01-25 青岛海信信芯科技有限公司 一种存储器的控制方法、存储器控制器和存储器控制系统
US8132048B2 (en) * 2009-08-21 2012-03-06 International Business Machines Corporation Systems and methods to efficiently schedule commands at a memory controller
US8854387B2 (en) 2010-12-22 2014-10-07 Advanced Micro Devices, Inc. Bundle-based CPU/GPU memory controller coordination mechanism
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
WO2013048493A1 (en) 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
US9852090B2 (en) 2013-12-11 2017-12-26 Adesto Technologies Corporation Serial memory device alert of an external host to completion of an internally self-timed operation
US9632775B2 (en) 2014-02-11 2017-04-25 Apple Inc. Completion time prediction for vector instructions
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
US10033411B2 (en) 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
US10152421B2 (en) * 2015-11-23 2018-12-11 Intel Corporation Instruction and logic for cache control operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160070483A1 (en) * 2013-05-30 2016-03-10 Hewlett-Packard Development, L.P. Separate memory controllers to access data in memory
US20150293709A1 (en) * 2014-04-14 2015-10-15 Microsoft Corporation Fine-grained bandwidth provisioning in a memory controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023128479A1 (ko) * 2021-12-30 2023-07-06 주식회사 엘엑스세미콘 메모리 제어 시스템 및 메모리 제어 기능을 갖는 디스플레이 디바이스

Also Published As

Publication number Publication date
KR102265600B1 (ko) 2021-06-17
US10437482B2 (en) 2019-10-08
CN109299024A (zh) 2019-02-01
CN109299024B (zh) 2024-01-05
TW201908981A (zh) 2019-03-01
JP6974260B2 (ja) 2021-12-01
US20190034097A1 (en) 2019-01-31
JP2019029004A (ja) 2019-02-21
TWI771407B (zh) 2022-07-21

Similar Documents

Publication Publication Date Title
KR102265600B1 (ko) Hbm에서의 프로세스를 위한 조직화된 니어-파 메모리 컨트롤러
KR101946458B1 (ko) 비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들
US9372526B2 (en) Managing a power state of a processor
US7734833B2 (en) Method for scheduling operations called by a task on a real-time or non-real time processor
US8020166B2 (en) Dynamically controlling the number of busy waiters in a synchronization object
US20110113204A1 (en) Memory controller with external refresh mechanism
US7213084B2 (en) System and method for allocating memory allocation bandwidth by assigning fixed priority of access to DMA machines and programmable priority to processing unit
US20110197038A1 (en) Servicing low-latency requests ahead of best-effort requests
US9330025B2 (en) Information processing apparatus, memory control apparatus, and control method thereof
US20190213165A1 (en) Priority scheme for fast arbitration procedures
TW201622353A (zh) 具有信號標功能的系統晶片以及信號標指派方法
US20150234759A1 (en) Method and apparatus using high-efficiency atomic operations
WO2019128308A1 (zh) 一种进行调度请求的方法和设备
US5544333A (en) System for assigning and identifying devices on bus within predetermined period of time without requiring host to do the assignment
US9804911B2 (en) Concurrent validation of hardware units
US8909873B2 (en) Traffic control method and apparatus of multiprocessor system
US7765349B1 (en) Apparatus and method for arbitrating heterogeneous agents in on-chip busses
WO2023066141A1 (zh) 一种获取锁资源的方法、装置及设备
US20200320021A1 (en) Access management apparatus and access management method
US11023392B2 (en) Method for arbitrating access to a shared memory, and corresponding electronic device
US11782860B2 (en) Information processing device for preventing occurrence of memory contention
WO2012093475A1 (ja) 情報転送装置および情報転送装置の情報転送方法
JPH03171244A (ja) Dma制御方式

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right