CN102414671B - 对于不同源的分级内存仲裁技术 - Google Patents

对于不同源的分级内存仲裁技术 Download PDF

Info

Publication number
CN102414671B
CN102414671B CN201080018676.3A CN201080018676A CN102414671B CN 102414671 B CN102414671 B CN 102414671B CN 201080018676 A CN201080018676 A CN 201080018676A CN 102414671 B CN102414671 B CN 102414671B
Authority
CN
China
Prior art keywords
memory request
memory
coherent
stream
request
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201080018676.3A
Other languages
English (en)
Other versions
CN102414671A (zh
Inventor
古亨·克里希南
安东尼奥·阿萨罗
多恩·凯尔佩卡
托马斯·R·坎简
约尔格·温克勒
拉尔夫·弗莱明
莫里斯·B·斯坦曼
乔纳森·欧文
约翰·卡拉马丁纳斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN102414671A publication Critical patent/CN102414671A/zh
Application granted granted Critical
Publication of CN102414671B publication Critical patent/CN102414671B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

分级内存请求流仲裁技术合并来自多内存请求源(204、206、208、216)的连贯内存请求流,并根据来自非连贯内存请求流的请求仲裁合并的连贯内存请求流。在本发明的至少一个实施方式中,从多个内存请求流产生合并的内存请求流(316)的方法包括将连贯内存请求合并到第一串行内存请求流。该方法包括通过内存控制器电路(213、302)从至少所述第一串行内存请求流和合并的非连贯请求流中选择以置于合并的内存请求流中的内存请求。所述合并的非连贯内存请求流至少部分地基于选择以置于合并的内存请求流(334)中的在先内存请求的指示器。

Description

对于不同源的分级内存仲裁技术
技术领域
本发明涉及集成电路,尤其涉及用于向内存调度内存请求的技术。
背景技术
参考图1,示例性的片上系统(system-on-a-chip)(即SoC102)包括通过接口(例如,接口A)向集成内存控制器(例如,动态随机存取存储器(DRAM)控制器130)发出(issue)内存请求的多个中央处理单元(即CPU,例如CPU0104、CPU1106、…、CPUN 108)。该集成内存控制器实现系统连贯性(coherence)并作为通往共享内存空间(DRAM 114)的通道。专用内存请求器,例如图像处理单元(例如,GPU 140)向集成内存控制器的接口(接口B)发出内存请求(例如,直接存储器存取请求,即DMA请求),并从集成内存控制器的该接口接收响应。标准的DRAM控制器130支持连贯的(coherent)流量,即,实施内存一致性协议(memorycoherency protocol)以维持由CPU、I/O和GPU请求存取的数据副本之间的一致性。标准的仲裁程序利用基于优先级的仲裁程序结合SoC管线中的内存请求流,基于优先级的仲裁程序在不同的请求流之间选择以在内存总线上调度指令。从多个请求器对内存请求的这种调度影响了内存等待时间和每个请求源在内存总线上获得的内存带宽。
发明内容
分级内存请求流仲裁技术合并来自多内存请求源的连贯内存请求流,并根据来自非连贯内存请求流的请求仲裁合并的连贯内存请求流。在本发明的至少一个实施方式中,从多个内存请求流产生合并的内存请求流的方法包括将连贯内存请求合并到第一串行内存请求流。该方法包括通过内存控制器电路从至少所述第一串行内存请求流和合并的非连贯请求流中选择以置于合并的内存请求流中的内存请求。所述合并的非连贯内存请求流至少部分地基于选择以置于合并的内存请求流中的在先内存请求的指示器(indicator)。在本发明的至少一个实施方式中,选择以置于合并的内存请求流中的内存请求是至少部分地基于多个总线周转周期(turnaround)策略、带宽分配策略和页所有权策略(page ownershippolicy)选择的。在本发明的至少一个实施方式中,选择以置于合并的内存请求流中的内存请求是至少基于总线周转周期策略选择的。在本发明的至少一个实施方式中,总线周转周期策略发出内存请求的资格至少部分地基于与合并的内存请求流相关联的内存总线的流向和至少与和内存请求相关联的请求器、请求类型或优先级之一相关联的时间窗。在本发明的至少一个实施方式中,选择以置于合并的内存请求流中的内存请求是至少部分地基于带宽分配策略选择的。在本发明的至少一个实施方式中,带宽分配策略发出内存请求的资格至少部分地基于内存请求源和被挂起的(outstanding)内存请求的关联数量。在本发明的至少一个实施方式中,选择以置于合并的内存请求流中的内存请求是至少部分地基于页所有权策略选择的。在本发明的至少一个实施方式中,页所有权策略发出内存请求的资格至少部分地基于内存请求源的优先级和当前内存页所有权信息。
在本发明的至少一个实施方式中,该方法进一步包括从至少第一连贯内存请求流和第二连贯内存请求流中选择用于置于第一串行内存请求流中的内存请求,所述第二连贯内存请求流为预测(speculative)连贯请求流。在本发明的至少一个实施方式中,该方法进一步包括将第一连贯内存请求流、第二连贯内存请求流和重发请求流合并到第一串行内存请求流。在本发明的至少一个实施方式中,该方法进一步包括至少部分地基于与连接到内存控制器电路的内存电路关联的内存页表,在重发请求队列中存储第一串行内存请求流中没有资格发出的请求。在本发明的至少一个实施方式中,该内存页表基于选择以置于合并的内存请求流中的在先内存请求的指示器进行更新。在本发明的至少一个实施方式中,该方法进一步包括至少部分地基于选择以置于合并的内存请求流中的在先内存请求的指示器将非连贯内存请求合并到非连贯内存请求流中。在本发明的至少一个实施方式中,选择以置于合并的内存请求流中的在先内存请求的指示器包括一个或多个片选指示器、内存条指示器、指令指示器、行指示器和源指示器。在本发明的至少一个实施方式中,所述选择基于所述第一串行内存请求流、所述合并的非连贯内存请求流和内存页表的输出。
在本发明的至少一个实施方式中,一种装置包括配置成将从多个第一内存请求代理接收的多个连贯内存请求流合并到至少第一连贯内存请求流的仲裁单元。该装置包括配置成从合并的非连贯请求流和基于所述第一连贯内存请求流的第一串行内存请求流中选择用于置于合并的内存请求流中的内存请求的内存控制器单元。所述合并的非连贯内存请求流至少部分地基于选择以置于所述合并的内存请求流中的在先内存请求的指示器。在本发明的至少一个实施方式中,选择以置于所述合并的内存请求流中的所述内存请求是至少部分地基于一个或多个总线周转周期策略、带宽分配策略和页所有权策略选择的。在本发明的至少一个实施方式中,所述仲裁单元配置为产生预测内存请求,并配置为向与所述第一连贯组内存请求相关(coherent with)的所述内存控制器单元发出所述预测内存请求。在本发明的至少一个实施方式中,所述内存控制器单元包括配置为将所述第一连贯组内存请求、所述预测内存请求和所述非连贯内存请求分级合并到所述合并的内存请求流中的合并多路复用器单元。在本发明的至少一个实施方式中,所述合并多路复用器单元包括配置为从所述第一连贯内存请求、所述预测内存请求和第三组内存请求中选择前端内存请求的第一多路复用器单元,且所述合并多路复用器单元包括配置为从存储的前端内存请求版本中选择所述第三组内存请求的第二多路复用器单元。
在本发明的至少一个实施方式中,所述装置进一步包括配置成至少从所述前端内存请求和非连贯组(non-coherent set)内存请求中选择用于置于所述合并的内存请求流中的内存请求的第三多路复用器单元。在本发明的至少一个实施方式中,所述第三多路复用器单元配置为从所述前端内存请求、所述非连贯组内存请求和内存页表的输出中选择用于置于所述合并的内存请求流中的内存请求。在本发明的至少一个实施方式中,所述仲裁单元配置为产生预测内存请求,并配置为向与所述第一连贯组(coherent set)内存请求相关(coherent with)的所述内存控制器单元发出所述预测内存请求。在本发明的至少一个实施方式中,所述内存控制器单元包括配置为将所述第一连贯组内存请求、所述预测内存请求和所述非连贯内存请求分级合并到与多个各自的内存通道对应的多个合并的内存请求流中的多个合并多路复用器单元。在本发明的至少一个实施方式中,所述多个处理单元包括配置为发出多个第一连贯内存请求的多个通用处理单元,并且所述多个处理单元包括配置为发出第二连贯内存请求的输入/输出处理单元。在本发明的至少一个实施方式中,所述非连贯内存请求流由多个专用处理单元产生,所述专用处理单元至少部分地基于选择以置于所述合并的内存请求流中的前一内存请求的指示器。在本发明的至少一个实施方式中,选择以置于所述合并的内存请求流中的在先内存请求的指示器包括一个或多个片选(chip select)指示器、内存条指示器、指令指示器、行指示器和源指示器。
在本发明的至少一个实施方式中,一种系统包括配置为发出多个连贯内存请求流的多个连贯内存请求器和配置为发出至少一个连贯内存请求流和至少一个非连贯内存请求流的图像处理单元。所述图像处理单元包括配置为发出至少一个连贯内存请求流的输入/输出引擎(engine)。所述图像处理单元包括配置为发出合并的非连贯请求流的图像内存仲裁器,所述合并的非连贯请求流至少部分地基于选择以置于合并的内存请求流中的在先内存请求的指示器。所述系统包括配置为分级仲裁内存请求并从所述多个连贯内存请求流、所述至少一个连贯内存请求流和所述合并的非连贯请求流产生所述合并的内存请求流的集成内存控制器。在本发明的至少一个实施方式中,所述集成内存控制器包括配置为将所述多个连贯内存请求流和所述至少一个连贯内存请求流合并到至少第一连贯内存请求流的仲裁单元。在本发明的至少一个实施方式中,所述集成内存控制器包括配置为从所述合并的非连贯请求流和基于所述第一连贯内存请求流的第一串行内存请求流中选择用于置于所述合并的内存请求流中的内存请求的内存控制器单元。在本发明的至少一个实施方式中,所述集成内存控制器从所述多个连贯内存请求器、所述至少一个连贯内存请求流和所述合并的非连贯请求流产生多个合并的内存请求流以产生所述合并的内存请求,所述多个合并的内存请求流对应于各自的内存通道。在本发明的至少一个实施方式中,所述图像处理单元包括配置为产生显示信息的多个内存请求代理,并且所述图像内存调度器配置为将来自多个内存请求代理的内存请求合并到所述合并的非连贯内存请求流,所述合并的非连贯内存请求流至少部分地基于选择以置于所述合并的内存请求流中的前一内存请求的指示器。在本发明的至少一个实施方式中,所述集成内存控制器使用具有第一频率的控制时钟信号操作,所述图像处理单元使用具有第二频率的控制时钟信号操作,所述第二频率不同于所述第一频率。在本发明的至少一个实施方式中,所述合并的内存请求流至少部分地基于一个或多个总线周转周期策略、带宽分配策略和页所有权策略。
附图说明
通过参考附图,将使得本发明更好理解,其多种目标、特征和优势对本领域的普通技术人员来说显而易见。
图1示出了示例性片上系统(SoC)。
图2示出了与本发明的至少一个实施方式一致的示例性SoC。
图3示出了图2中SoC的内存控制器的示例部分,其与本发明的至少一个实施方式一致。
不同附图中的相同的标号标识类似或相同的组件。
具体实施方式
通常,图像处理单元(例如,图1中的GPU 140)内存请求包括非连贯内存请求并经常比CPU内存请求需要更宽的内存带宽。标准的DRAM控制器130对由GPU产生的经由接口B接收的非常规则(highly regular)的模式的请求重排序为长管道的内存请求。因此,由GPU 140产生的内存请求可能丢失其在SoC 102中的页局部性(locality)。此外,为维持峰值事务(transactional)带宽,图1中的SoC 102需要在GPU 140中缓冲。通过将请求提供给SoC202的最终选择阶段而不是系统串行化(serialization)点(例如,SoC 102的DRAM控制器130的前端),此处公开的SoC与SoC 102相比实现了改善的吞吐量。
参考图2,示例性片上系统(例如,SoC 102)包括多个中央处理单元(即CPU,例如,CPU0 204、CPU1 206、CPUN 208),该多个中央处理单元通过接口A向分级集成内存控制器(例如,分级集成内存控制器230)发出内存请求。分级集成内存控制器230实现系统连贯性并作为通往共享内存空间(例如,内存214)的通道。虽然其它合适的内存结构也可以使用,在SoC 202的至少一个实施方式中,内存214是双倍速率同步动态随机存取存储器2代或3代(即DDR2/3DRAM)。I/O引擎(例如,I/O引擎216)发出内存请求,并通过接口B接收集成内存控制器的响应。来自I/O引擎的CPU和直接存储器存取(即DMA)请求都必须与所述CPU请求一致。因此,CPU和DMA请求在通过接口C被发给内存控制器(例如,内存控制器213)之前在分级集成内存控制器230中的系统连贯化点(system coherence point)处合并。此外,分级集成内存控制器230包括分析从CPU和I/O引擎输入的内存请求以预测未来的内存存取并通过接口F向内存控制器发出预测内存读取请求(即预取)的逻辑。通过接口C和F发出的请求为连贯内存流。
在至少一个实施方式中,SoC202包括专用处理单元,例如图像处理单元240,其为有效地操控计算机图像信息的专用图像渲染(rendering)设备。在SoC 202的至少一个实施方式中,图像处理单元240(即GPU240)包括数个内存请求代理(例如,GC0 218、GC1 220、GCN 222),每个内存请求代理与非连贯内存请求的各自的队列相关联。注意,GPU 240可包括任一合适数量的内存请求代理。图像内存请求调度程序(例如,图像内存仲裁程序224)将来自不同的请求代理的非连贯内存请求结合为单一的非连贯请求流。图像内存仲裁程序224通过接口D从所述单一的非连贯流的请求向内存控制器213发出。
分级集成内存控制器230实现分级内存请求流仲裁技术。分级集成内存控制器230合并来自多内存请求源的多连贯内存请求流,并根据非连贯内存请求流的请求仲裁合并的连贯内存请求流。分级集成内存控制器230基于与单个内存请求流相关联的属性合并内存请求流。在SoC 202的至少一个实施方式中,来自CPU或在接口C上来自I/O引擎的连贯内存请求不要求峰值内存带宽。此外,该些连贯内存请求通常不产生可预计的批量(bank)读/写访问模式。即,CPU和I/O读或写请求通常具有随机到达率并同时访问多内存条。然而,因为读请求将数据提供回CPU中挂起的负载,CPU性能对读请求在此接口上的等待时间是灵敏的。图像处理单元240为高带宽请求源。因此,内存控制器213合并来自接口C和D的请求以增加带宽灵敏请求器对内存总线的利用率并降低等待灵敏请求器的平均等待时间。将第二组调度策略应用到意图增加在内存总线上的带宽并降低某些请求类型和/或请求源经历的等待时间的合并的连贯内存请求流和合并的非连贯内存请求流中的各每一个。因此,分级集成内存控制器230以与处理连贯内存请求不同的方式处理来自GPU 240的非连贯内存请求,例如,以确保屏幕无闪烁的更新。
在至少一个实施方式中,分级集成内存控制器230使用仲裁程序并使用反馈以影响源内(intra-source)仲裁,该仲裁程序将连贯和不连贯请求源作为独立的实体。例如,发出给合并的内存请求队列的下一内存请求使用整体挑选(global pick)的知识确定,即发出给合并的内存请求队列的最近的内存请求的指示器,例如,通过接口H传递给GPU 240。连贯请求源和非连贯请求源均使用来自最终仲裁阶段的涉及内存系统堆状态的反馈以影响从其各自的请求队列中对请求的选取。内存系统堆状态信息提高了图像内存仲裁器(例如,图像内存仲裁器224)从其内部队列的请求中选择导致页命中的请求的性能。在至少一个实施方式中,分级集成内存控制器230使用页所有权规则降低内存总线215上的页冲突数。在至少一个实施方式中,分级集成内存控制器230使用总线周转周期规则减小将数据总线从读操作切换到写操作或反过来时内存总线上出现的开销(penalty)。在至少一个实施方式中,分级集成内存控制器230采用对任一特定请求源的待解决的内存带宽上的限制以提供系统中其它内存请求器经历的服务时间的上限限制。
在SoC 202的至少一个实施方式中,内存控制器213包括分级合并多路复用器。参考图3,分级合并多路复用器302将从接口C、F和D接收到的流合并到内存请求的单一标准流(例如,合并的内存请求流316),其排列在合并的内存请求寄存器(即MRGQ)中用于通过内存控制器213经由内存总线215发往内存214。尽管只有分级合并多路复用器302和MRGQ描述为内存通道,但应注意的是,在至少一个实施方式中,SoC 202包括多内存通道(未示出)。因此,每个内存通道包括相应的分级合并多路复用器和相应的MRGQ。内存请求流C、F和D包括内存通道信息,且内存请求根据包含在各个内存请求中的内存通道信息被多路分配到各个分级合并多路复用器和MRGQ。
在分级合并多路复用器302的至少一个实施方式中,多路复用器308、320和312从各自的仲裁逻辑,例如仲裁选择(ARBSEL)304、ARBSEL324和ARBSEL326分别接收对应的选择信号。ARBSEL 304通过多路复用器308控制连贯请求的选择,这些连贯请求例如来自接口C的CPU或I/O请求、来自接口F的预测连贯请求和来自状态组件318的等待处理的连贯请求。
参考图2和图3,在分级合并多路复用器302的至少一个实施方式中,ARBSEL 304和图像内存仲裁器224调度请求以根据由内存页表306提供的内存条状态实现尽可能多的页命中,内存页表306包括有关选择以置于合并的内存请求队列(MRGQ)中的在先内存请求的信息。内存页表306保持内存系统214中所有片选和内存条的开或关状态。对于内存系统214的打开页,内存页表306包括指示该页哪一行是打开状态的指示器。每个时间复用器312授权一个请求,对应的片选和内存条状态根据选择以置于合并的内存请求队列(例如,信息335)中的内存请求的指示器在内存页表306中更新。图像内存仲裁器224通过接口E接收选择以置于合并的内存请求队列中的内存请求的指示器,该指示器存储在模块334中。
在内存控制器213的至少一个实施方式中,下述信息通过接口E提供给图像内存仲裁器224。
表1:接口E传递的信息
表2:接口E上的指令
因此,基于由多路复用器308选择的请求的前端请求流(即请求流311)和GPU请求流都可发出最好是页命中而不是页丢失和页冲突的请求。
回到图3,在分级合并多路复用器302的至少一个实施方式中,ARBSEL 324通过多路复用器320控制来自重发队列RBDQ328的至少一部分内容中的请求的选择。可使用任一合适的选择技术(例如,先进先出、最先就绪(oldest ready)、基于页状态和优先级以提高带宽并减小等待时间的技术等)。在分级合并多路复用器302中的至少一个实施方式中,状态组件318存储多路复用器320的输出以提供合适的时序特性。
在分级合并多路复用器302的至少一个实施方式中,提供给多路复用器312的请求流中的每个请求都与优先级值(例如,紧急、高、中或低)相关联。ARBSEL 326基于多路复用器312接收到的输入请求流的一般特性实现附加的优先级策略。例如,与GPU请求相比,CPU和I/O请求对等待时间具有更高的灵敏性并具有受限的带宽请求,GPU请求通常需要更高的带宽并对等待时间具有较低的灵敏性。因此,在至少一个实施方式中,相较于请求流329中相同优先级的GPU请求,ARBSEL 326优先处理请求流311中的请求。在至少一个实施方式中,ARBSEL 326以下列顺序实施优先级:紧急请求流329、高优先级请求流311、高优先级请求流329、中优先级请求流311、中优先级请求流329、低优先级请求流311和低优先级请求流329。
在分级合并多路复用器302的至少一个实施方式中,控制模块310和327基于页所有权、读/写周转周期和带宽控制策略从多路复用器308和队列332中分别确定请求资格。注意,可通过控制模块310和327实现一个或多个其它的策略。控制模块310和327根据从与内存请求对应的内存页表306中接收的数据确定从接口C、F和D接收的该些内存请求的仲裁资格。如果有仲裁资格,多路复用器308选择的请求在请求流311中传送到多路复用器312。在分级合并多路复用器302的至少一个实施方式中,如果多路复用器308选择的请求没有仲裁资格,则该请求不提供给请求流311线路上的多路复用器308,而是存储在重发队列RBDQ 328中。如果有仲裁资格,来自队列332的请求以请求流329的方式传送到多路复用器312。如果来自队列332的请求没有仲裁资格,则该请求不提供给请求流329线路上的多路复用器312,而是保留在队列332中。
页所有权规则
当系统中不同的请求源尝试访问内存通道上的片选和内存条对却对不同的行尝试访问时,发生页冲突。在分级合并多路复用器302中的至少一个实施方式中,控制模块327试图降低发送给内存总线的页冲突数量。举例来说,控制模块327阻止允许CPU从片选和内存条对中打开和读取page 0、然后让GPU关闭page 0并从相同的片选和内存条对中打开和读取page 1、然后再让CPU关闭page 1并再次读取page 0的请求序列。这样的反复页的序列调度在内存总线上冲突。相反地,控制模块327追踪最后打开内存通道中各个片选与内存条对的页的源并将此信息存储在内存页表306中。对于给定的片选与内存条对,当不是该内存条的所有者(例如,CPU是内存页表306中最后打开该页的源)的请求源试图打开新页时,控制模块327应用用于决定何时允许所有者变更的一组规则。通过应用该附加策略,一个源可在与其它源存在待解决的页冲突时持有更长的对页的所有权时间,从而在转到新的源之前由旧源产生更多的页命中以取得进步。
在至少一个实施方式中,控制模块327实施基于源优先级与当前页所有者的页所有权规则。举例来说,当CPU或I/O内存页的所有者时,使用可编程计时器将该页结合到该CPU或I/O维持一时间段。用于确定该时间段的循环计数根据冲突的GPU请求的优先级而变化。举例来说,可使用三组计数器,例如,一个计数器用于每一高、中和低优先级GPU请求,对每个请求类型具有增加的循环计数值。紧急内存请求使得CPU立即释放对该页的所有权。为确保对冲突源公平,当页所有者第一次打开页时启动计数器,且该第一页所有者继续对打开的行具有页命中时该计数器不计数(extended)。在控制模块327的至少一个实施方式中,对于不同的优先级(例如,低、中、高和紧急优先级),可对冲突(例如,GPU)请求在其可以打开已被其它请求器(例如,CPU)在不同行打开的页之前必须等待的时间窗进行编程。
在分级合并多路复用器302的至少一个实施方式中,当GPU为内存页的所有者时,该所有权在多个事件之一发生时释放。举例来说,当在内存总线上达到来自GPU 240的给定尺寸和优先级的请求的可编程数量时释放该所有权。请求数量可以根据冲突请求(例如,请求队列311中的请求)的优先级(例如,低、中或高)变化。当GPU断定表明对页的突发请求已完成的突发指示结束时可释放该所有权。当GPU基于两个连续的请求,不一定在连续的时钟周期内,从一个片选、内存条和行切换到另一个片选、内存条和行时也可释放所有权。此外,当由于GPU打开页而追踪周期数的可编程计数器记满时释放所有权。在至少一个实施方式中,分级合并多路复用器302包括基于分块(blocked)请求的优先级的一组计数器。注意,此处描述的页所有权规则是示例型的,分级合并多路复用器的其它实施方式可使用其它合适的页所有权规则。
总线周转周期管理
当第一类型(例如,读或写)的操作之后紧跟着第二类型(例如,分别写或读)的操作时出现总线周转周期。因为时序参数(例如,用于DRAM的DDR DIMM时序参数),总线周转周期可在内存数据总线上创建多个空闲指令(bubble)(即多个空闲周期的开销)。注意,不同的内存速度可具有不同的总线周转周期时间。在分级合并多路复用器302的至少一个实施方式中,ARBSEL 326配置多路复用器312以降低在内存总线上的读到写和写到读总线周转周期的方式合并流量。在至少一个实施方式中,ARBSEL 326将读操作(issuance)组合在一起并与写操作分开以降低总线周转周期数。一组时间窗基于根据请求器、请求类型或优先级的可编程配置。控制模块327追踪内存总线的当前方向,当请求器试图改变总线的所述方向时,请求器在其可被视为有资格的请求器之前必须等待特定时间窗期满。在至少一个实施方式中,控制模块327包括对应于各流量类别的配置寄存器,该配置寄存器确定时间窗并指定该特定的流量类别在能周转总线前何时必须等待。示例性配置寄存器包括具有许多控制时钟或许多传送字节的指示器,其必须在该特定流量类别能周转总线前出现。注意,此次记载的总线周转规则是示例性的,分级合并多路复用器的其它实施方式可使用其它合适的总线周转周期规则。
请求源带宽控制
为避免任一特定源长时间独占内存带宽,SoC 202限制MRGQ中来自任一给定源的挂起指令的数量。这通过以每个请求源为基础维持计数器来实现。在SoC 202的至少一个实施方式中,来自接口C的请求被限制,例如,限制为第一数量的字节。同时,来自接口D的请求变化为第二数量的字节。每个时间复用器312将总线授权给请求源,相应的计数器根据内存总线上挂起的来自该源的总字节数进行更新。如果请求器在该源的计数器已经超过程序门限值时提交请求,则该请求器被限制(throttle)为不具有多路复用器312的仲裁资格。此策略可实现其它任一请求源可见的等待时间上限。在示例性SoC 202中,请求源带宽控制确保显示请求在有限的时间内被处理。在SoC 202的至少一个实施方式中,两组配置寄存器控制MRGQ中出现的最大字节读或写请求数。在SoC 202的至少一个实施方式中,读和写可包括可由各个源激活的独立的限制配置寄存器。
如上所述,GPU请求通常被视为非连贯请求并经常需要高的内存带宽。GPU选择最有效的请求并经由接口D将其提供给分级合并多路复用器302。分级合并多路复用器302在队列332中存储来自GPU的该请求。注意,请求流311是独立于图像内存仲裁器选择而选择的,且所选的图像内存仲裁器请求对多路复用器312可直接访问,其为最终选择阶段。通过在SoC 202中而不是在被其它内存请求选择技术使用的系统串行化点(例如,图1中SoC102的DRAM控制器130的输入)处将该图像内存仲裁器请求提供给最终选择阶段,高带宽GPU客户端实现了超过SoC 102的吞吐量的改善的吞吐量。由于DRAM控制器130对由GPU产生的非常规则的请求重排序为长管道的内存请求,片上系统202比SoC 102提高了吞吐量。因此,在SoC 102中,GPU 140产生的请求丢失了其页局部性。此外,SoC 102在集成内存控制器的流量仲裁模块中需要额外资源。为了保持峰值DRAM数据带宽,与图2和图3中的SoC 202相比,图1中的SoC 102需要GPU中额外的缓冲。
参考图2和图3,由于GPU请求流绕过接口C并且该GPU请求没有与来自统一队列的CPU或I/O请求一同存储或挑选,在SoC 202中引入请求流329和请求流311之间的相同地址争论,即引入先写后读险态机制。通过图像内存仲裁器224对接口C和D上的请求之间的先写后读险态机制进行说明,其通过对存储在流量仲裁模块210中的正在处理的事务队列先进行CPU写操作再进行GPU读操作的确认,确保已经在接口C上分配的地址不存在地址冲突。在SoC 202的至少一个实施方式中,所述确认使用接口G提供的指示器,并利用任一合适的硬件或软件技术实现。一般来说,由于在系统操作期间罕有地址冲突,图3中的分级合并多路复用器302使得GPU请求具有高带宽,同时不损害CPU在图2中的SoC202的接口C上读取时所见的低等待时间。
图2和图3的SoC不是统一的队列结构,即,来自CPU、I/O和GPU的请求不是从单一的队列中选取的。因此,实现图2和3中记载的技术的SoC可物理上分开以支持顶层模块,例如,与其它集成内存控制器逻辑分开的GPU和相关的子模块。此外,SoC 202中不同的顶层模块可以不同的速率计时、可实现不同的队列结构以与每个GPU客户端连接、可具有独立于在集成内存控制器的前端的流量仲裁和连贯性管线的控制和数据通路。举例来说,分级集成内存控制器230使用具有第一频率的控制时钟信号操作,GPU 240使用具有不同于第一频率的第二频率的控制时钟信号操作。而且,图像内存仲裁器224可独立地验证和独立地设计(例如,逻辑上和物理上设计)。顶层模块的明确界限导致SoC的所有顶层模块的更快集成。
注意,此处记载的一些技术可包括响应程序指令的硬件操作。可选地,此处记载的技术可通过包含诸如状态机之类的硬连线逻辑以实现操作的特定硬件组件或通过程序数据处理组件和硬件组件的组合实现。因此,本发明的实施方式可包括此处记载的软件、数据处理硬件、数据处理系统实现的方法和各种处理操作。
本发明此处列举的说明是解说性的,不意欲限制后述权利要求中列举的本发明的保护范围。例如,本发明在一个实施方式中记载了图像处理单元包括在SoC中,本领域的普通技术人员将能够理解此处的教导可用于向与发出连贯内存请求的一个或多个处理单元共享内存结构发出非连贯内存请求的其它的处理单元(例如,音频编码或其它合适的处理单元)。在不偏离后述列举的权利要求所要求保护的本发明的范围和精神的情况下,可基于此处的记载作出此处公开的实施方式的各种变型和修改。

Claims (15)

1.从多个内存请求流产生合并的内存请求流(316)的方法,其包括:
将连贯内存请求合并到第一串行内存请求流;以及
通过内存控制器电路(213、302)从至少所述第一串行内存请求流和合并的非连贯内存请求流中选择内存请求以置于所述合并的内存请求流中,所述合并的非连贯内存请求流至少部分地基于选择以置于所述合并的内存请求流(334)中的在先内存请求的指示器。
2.根据权利要求1所述的方法,其中选择以置于所述合并的内存请求流中的所述内存请求是至少部分地基于多个总线周转周期策略、带宽分配策略和页所有权策略选择的。
3.根据权利要求1所述的方法,进一步包括:
从至少第一连贯内存请求流和第二连贯内存请求流中选择用于置于所述第一串行内存请求流中的内存请求,所述第二连贯内存请求流为预测连贯请求流。
4.根据权利要求1所述的方法,进一步包括:
将第一连贯内存请求流、第二连贯内存请求流和重发请求流合并到所述第一串行内存请求流。
5.根据权利要求1所述的方法,进一步包括:
将非连贯内存请求合并到至少部分地基于选择以置于所述合并的内存请求流中的在先内存请求的指示器的所述合并的非连贯内存请求流中。
6.一种用于向内存调度内存请求的装置,其包括:
配置为将从第一多个内存请求代理(204、206、208、216)接收的多个连贯内存请求流合并到至少第一连贯内存请求流的仲裁单元(210);以及
配置为从合并的非连贯内存请求流和基于所述第一连贯内存请求流的第一串行内存请求流中选择用于置于合并的内存请求流(316)中的内存请求的内存控制器单元(213),所述合并的非连贯内存请求流至少部分地基于选择以置于所述合并的内存请求流(334)中的在先内存请求的指示器。
7.根据权利要求6所述的装置,其中选择以置于所述合并的内存请求流中的所述内存请求是至少部分地基于总线周转周期策略、带宽分配策略和页所有权策略中的一个或多个选择的。
8.根据权利要求6所述的装置,
其中所述仲裁单元配置为产生预测内存请求,并配置为向与第一连贯内存请求相关的所述内存控制器单元发出所述预测内存请求,以及
其中所述内存控制器单元包括配置为将所述第一连贯内存请求、所述预测内存请求和非连贯内存请求分级合并到所述合并的内存请求流中的合并多路复用器单元。
9.根据权利要求8所述的装置,其中所述合并多路复用器单元包括:
配置为从所述第一连贯内存请求、所述预测内存请求和第三组内存请求中选择前端内存请求的第一多路复用器单元;以及
配置为从存储的前端内存请求版本中选择所述第三组内存请求的第二多路复用器单元。
10.根据权利要求9所述的装置,其中所述合并多路复用器单元包括:
配置成从所述前端内存请求、所述非连贯内存请求和内存页表的输出中选择用于置于所述合并的内存请求流中的内存请求的第三多路复用器单元。
11.根据权利要求6所述的装置,其中所述第一多个内存请求代理包括:
配置为发出多个第一连贯内存请求的多个通用处理单元;以及
配置为发出第二连贯内存请求的输入/输出处理单元。
12.根据权利要求6所述的装置,其中非连贯内存请求流由至少部分地基于选择以置于所述合并的内存请求流中的在先内存请求的指示器的多个专用处理单元产生,并且其中选择以置于所述合并的内存请求流中的在先内存请求的指示器包括片选指示器、内存条指示器、指令指示器、行指示器和源指示器中的一个或多个。
13.一种用于向内存调度内存请求的系统(202),其包括:
配置为发出多个连贯内存请求流的多个连贯内存请求器(204、206、208、216);
配置为发出至少一个连贯内存请求流和至少一个非连贯内存请求流的图像处理单元(240),所述图像处理单元(240)包括:
配置为发出所述至少一个连贯内存请求流的输入/输出引擎(216);以及
配置为发出合并的非连贯请求流的图像内存仲裁器(224),所述合并的非连贯请求流至少部分地基于选择以置于合并的内存请求流(334)中的在先内存请求的指示器;
配置为分级仲裁内存请求并从所述多个连贯内存请求流、所述至少一个连贯内存请求流和所述合并的非连贯请求流产生所述合并的内存请求流(316)的集成内存控制器(230)。
14.根据权利要求13所述的系统,其中所述集成内存控制器包括:
配置为将所述多个连贯内存请求流和所述至少一个连贯内存请求流合并到至少第一连贯内存请求流的仲裁单元;以及
配置为从所述合并的非连贯请求流和基于所述第一连贯内存请求流的第一串行内存请求流中选择用于置于所述合并的内存请求流中的内存请求的内存控制单元。
15.根据权利要求13所述的系统,其中所述集成内存控制器使用具有第一频率的控制时钟信号操作,所述图像处理单元使用具有第二频率的控制时钟信号操作,所述第二频率不同于所述第一频率。
CN201080018676.3A 2009-04-29 2010-04-26 对于不同源的分级内存仲裁技术 Active CN102414671B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/431,874 US8266389B2 (en) 2009-04-29 2009-04-29 Hierarchical memory arbitration technique for disparate sources
US12/431,874 2009-04-29
PCT/US2010/032343 WO2010126810A1 (en) 2009-04-29 2010-04-26 Hierarchical memory arbitration technique for disparate sources

Publications (2)

Publication Number Publication Date
CN102414671A CN102414671A (zh) 2012-04-11
CN102414671B true CN102414671B (zh) 2015-05-27

Family

ID=42316017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080018676.3A Active CN102414671B (zh) 2009-04-29 2010-04-26 对于不同源的分级内存仲裁技术

Country Status (6)

Country Link
US (2) US8266389B2 (zh)
EP (1) EP2430554B8 (zh)
JP (1) JP5616435B2 (zh)
KR (1) KR101557090B1 (zh)
CN (1) CN102414671B (zh)
WO (1) WO2010126810A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266389B2 (en) * 2009-04-29 2012-09-11 Advanced Micro Devices, Inc. Hierarchical memory arbitration technique for disparate sources
US20120179883A1 (en) * 2011-01-12 2012-07-12 Broadcom Corpotation System and method for dynamically adjusting memory performance
US9032162B1 (en) 2011-08-12 2015-05-12 Altera Corporation Systems and methods for providing memory controllers with memory access request merging capabilities
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
KR101949382B1 (ko) * 2012-04-04 2019-02-18 삼성전자주식회사 서비스 품질의 향상을 위한 시스템 온 칩 및 시스템 온 칩의 제어 방법
US8990473B2 (en) * 2012-10-04 2015-03-24 Applied Micro Circuits Corporation Managing requests to open and closed banks in a memory system
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US9110795B2 (en) 2012-12-10 2015-08-18 Qualcomm Incorporated System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US8959298B2 (en) 2012-12-10 2015-02-17 Qualcomm Incorporated System and method for managing performance of a computing device having dissimilar memory types
US9075952B2 (en) * 2013-01-17 2015-07-07 Intel Corporation Controlling bandwidth allocations in a system on a chip (SoC)
US10929551B2 (en) * 2013-03-13 2021-02-23 Comcast Cable Communications, Llc Methods and systems for managing data assets
WO2014178846A1 (en) * 2013-04-30 2014-11-06 Hewlett-Packard Development Company, L.P. Coalescing memory access requests
CN105579959B (zh) * 2013-09-24 2019-06-07 渥太华大学 硬件加速器虚拟化
WO2015067295A1 (en) 2013-11-05 2015-05-14 Huawei Technologies Co., Ltd. Method and arrangement for controlling requests to a shared electronic resource
US9367491B2 (en) * 2013-12-31 2016-06-14 Global Unichip, Corp. Method and apparatus for on-the-fly learning traffic control scheme
CN104581172A (zh) * 2014-12-08 2015-04-29 北京中星微电子有限公司 一种实现svc宏块级算法的硬件结构
US9886934B2 (en) * 2014-12-24 2018-02-06 Intel Corporation Ordering mechanism for offload graphics scheduling
US10417146B1 (en) 2018-05-15 2019-09-17 Apple Inc. Real-time resource handling in resource retry queue
US10866892B2 (en) 2018-08-13 2020-12-15 Apple Inc. Establishing dependency in a resource retry queue
US11470017B2 (en) * 2019-07-30 2022-10-11 At&T Intellectual Property I, L.P. Immersive reality component management via a reduced competition core network component
US11513973B2 (en) * 2019-12-20 2022-11-29 Advanced Micro Devices, Inc. Arbitration scheme for coherent and non-coherent memory requests
CN111540198B (zh) * 2020-04-17 2021-07-27 浙江工业大学 基于有向图卷积神经网络的城市交通态势识别方法
KR102607421B1 (ko) * 2020-04-27 2023-11-29 한국전자통신연구원 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법
CN111862592B (zh) * 2020-05-27 2021-12-17 浙江工业大学 一种基于rgcn的交通流预测方法
CN112419718B (zh) * 2020-11-17 2022-02-01 东北大学秦皇岛分校 一种基于时空图卷积神经网络的交通拥塞传播预测方法
CN112650697B (zh) * 2020-12-24 2023-04-18 西安翔腾微电子科技有限公司 一种基于ddr3存储控制器接口的多个主设备的仲裁电路
CN116737617B (zh) * 2023-08-11 2023-12-29 上海芯高峰微电子有限公司 一种访问控制器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3665415A (en) * 1970-04-29 1972-05-23 Honeywell Inf Systems Data processing system with program interrupt priority apparatus utilizing working store for multiplexing interrupt requests
CN1643482A (zh) * 2002-02-15 2005-07-20 比维奥网络公司 在多个请求信号之间进行公平仲裁的系统和方法
CN1675625A (zh) * 2002-06-07 2005-09-28 米克伦技术公司 具有内部高速缓存和/或内存访问预测的内存集线器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6487640B1 (en) * 1999-01-19 2002-11-26 International Business Machines Corporation Memory access request reordering to reduce memory access latency
US6625700B2 (en) * 2001-05-31 2003-09-23 Sun Microsystems, Inc. Arbitration and select logic for accessing a shared memory
US7210018B2 (en) * 2002-12-30 2007-04-24 International Business Machines Corporation Multiple-stage pipeline for transaction conversion
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
US8266389B2 (en) * 2009-04-29 2012-09-11 Advanced Micro Devices, Inc. Hierarchical memory arbitration technique for disparate sources

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3665415A (en) * 1970-04-29 1972-05-23 Honeywell Inf Systems Data processing system with program interrupt priority apparatus utilizing working store for multiplexing interrupt requests
CN1643482A (zh) * 2002-02-15 2005-07-20 比维奥网络公司 在多个请求信号之间进行公平仲裁的系统和方法
CN1675625A (zh) * 2002-06-07 2005-09-28 米克伦技术公司 具有内部高速缓存和/或内存访问预测的内存集线器

Also Published As

Publication number Publication date
JP2012525642A (ja) 2012-10-22
WO2010126810A1 (en) 2010-11-04
CN102414671A (zh) 2012-04-11
JP5616435B2 (ja) 2014-10-29
EP2430554B1 (en) 2018-03-14
US8645639B2 (en) 2014-02-04
EP2430554A1 (en) 2012-03-21
KR101557090B1 (ko) 2015-10-02
US20120331226A1 (en) 2012-12-27
US8266389B2 (en) 2012-09-11
EP2430554B8 (en) 2018-06-27
KR20120014914A (ko) 2012-02-20
US20100281231A1 (en) 2010-11-04

Similar Documents

Publication Publication Date Title
CN102414671B (zh) 对于不同源的分级内存仲裁技术
US11036650B2 (en) System, apparatus and method for processing remote direct memory access operations with a device-attached memory
US6006303A (en) Priority encoding and decoding for memory architecture
US6115761A (en) First-In-First-Out (FIFO) memories having dual descriptors and credit passing for efficient access in a multi-processor system environment
JP5270077B2 (ja) 調停回路、クロスバ、リクエスト選択方法、及び情報処理装置
US5682551A (en) System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto
US8095744B2 (en) Device for controlling access from a plurality of masters to shared memory composed of a plurality of banks each having a plurality of pages
US6519666B1 (en) Arbitration scheme for optimal performance
US11500797B2 (en) Computer memory expansion device and method of operation
US20240143392A1 (en) Task scheduling method, chip, and electronic device
US6615296B2 (en) Efficient implementation of first-in-first-out memories for multi-processor systems
US8972693B2 (en) Hardware managed allocation and deallocation evaluation circuit
JPH0997184A (ja) 効率的な割込み処理を含む情報処理システム
US20060179172A1 (en) Method and system for reducing power consumption of a direct memory access controller
US9965321B2 (en) Error checking in out-of-order task scheduling
EP1704487B1 (en) Dmac issue mechanism via streaming id method
US8239652B2 (en) Data processing system
JP3274634B2 (ja) リード制御装置
CN117149278B (zh) 一种命令处理系统、控制方法及主机设备
JP2003085125A (ja) メモリ制御器及びメモリ制御方法
JPH0844661A (ja) 情報処理装置
CN118034638A (zh) 重排序缓冲器、系统、组件、设备及传输方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant