控制片上系统(SoC)中的带宽分配的制作方法
【专利说明】控制片上系统巧oC)中的带宽分配
【背景技术】
[0001] 许多计算平台,特别是便携式和其他低功率设备,结合片上系统(SoC)作为主处 理器。该些SoC被配置为支持平台的编程模型W确保软件正确地工作。遵循基于个人 计算机(PC)标准的一些SoC典型地使用硬件来实现根据例如在外围组件互连快速(PCI Express?(PCIe?))规范基础规范版本2. 0中描述的PCIExpress?规范定义的程序排序语 义。
[0002] 排序架构的一个引人注目的方面在于从主机代理到输入/输出(10)代理的下游 存储器映射输入输出(MMI0)写入与从存储器返回到10代理的读取完成数据经历相同的路 径。该一路径被称为外发路径,因为其从SoC的根联合体离开。遵照PCIe?规则,到10代理 的存储器读取完成无法绕开已经投送到相同虚拟通道上的任何在先的代理MMI0写入。因 此基本上,在该一外发路径上所产生的流量不是可控的,该会导致饥饿状态和误分配问题。
【附图说明】
[0003] 图1是根据本发明实施例的SoC的高级视图的方框图。
[0004] 图2是根据本发明实施例说明在外发分配中设及的系统代理的组件的细节的方 框图。
[0005] 图3是根据本发明实施例用于控制具有不同类型的信息流的外发通道的带宽的 方法的流程图。
[0006] 图4是根据本发明实施例用于执行外发带宽限制(throttle)的状态机的方框图。
[0007] 图5是根据本发明实施例的外发限制逻辑的方框图。
[0008] 图6是根据本发明实施例存在于计算机系统中的组件的方框图。
【具体实施方式】
[0009] 在各种实施例中,可W针对根联合体外发路径在SoC系统代理中提供可配置的服 务质量机制。按照该一方式,可W调整来自诸如缓存代理的主机代理的下游MMI0请求W及 来自诸如非缓存代理的输入/输出(10)代理的上游存储器读取的完成的带宽分配,同时还 满足排序要求。用于控制带宽分配的该一机制在进入到系统代理的有序域之前执行。虽 然本发明的范围不限于此,但是在实施例中,该一带宽分配调整是在基本输入/输出系统 炬10巧中实现的。
[0010] 现在参照图1,示出了根据本发明实施例的SoC的高级视图的方框图。如图1所 示,SoC100包括各种代理和其他组件。为了互连各种代理并且提供某些系统级控制技术, 提供了相关结构110,在本文也被称为系统代理。如将在下面进一步描述的,系统代理110 包括根据本发明实施例的下游分配逻辑W及各种其他组件,例如队列、缓冲器、跟踪器、控 制逻辑等等。
[0011] 如所看到的,相关结构110用作多个不同的代理与其他组件之间的主片上互连。 在上游侧上,提供了多个缓存代理12〇1-120。。虽然本发明的范围不限于此,但是该些缓存 代理可w对应于通常包括一个或多个处理器核屯、w及一级或多级高速缓冲存储器的中央 处理单元(CPU)。因而,该些代理是缓存代理,因为它们被配置为经由内部代理高速缓存W 相关的方式来维持数据。虽然被描述为CPU,但是应理解,在一些实施例中,其他类型的缓存 代理,例如核屯、、图形引擎或带有相关联的高速缓冲存储器的其他专用处理逻辑也可W用 作缓存代理。还应理解,发送MMIO写入的代理不限于缓存代理,并且诸如非缓存代理的其 他代理也发送MMIO事务。
[0012] 相对而言,SoC100的其他代理可W被配置为非缓存代理。可W存在诸如10代 理的不同类型的非缓存代理,其可W采取诸如捕获设备、擅染设备、外围设备等等的许多形 式。该些非缓存代理中的一些,例如非缓存代理13〇1和1302,经由符合PCIe?排序规则的片 上互连直接禪合到系统代理110。非缓存代理在该一片上互连的主接口上发出上游探听和 非探听存储器请求。10代理可W在SoC支持的任何虚拟通道(VC)上发出存储器请求(注 意,一些SoC支持1VC,一些支持2VC,一些支持3VC,等等)。
[0013] 请求和写入数据在进入(inbound)路径上到达系统代理110。读取完成数据在外 发路径上返回到代理。缓存代理使用端口 10或存储器映射读取/写入来将下游请求发出 到10设备。在实施例中,该些请求在第一虚拟通道(即VC0)上行进。当来自缓存代理120 的每一个请求在全局上被排序时,该请求从系统代理110接收指示。当来自缓存代理120 的MMIO写入进入系统代理110的有序域中时,它们在全局上被排序。该一进入被称为将下 游写入投送到外发路径中。一旦外发读取完成已经进入有序域,其就无法绕开已经投送到 该有序域中的相同VC的任何在先的匪10写入。
[0014] 转而,其他非缓存10代理13〇3-130,经过开关结构135禪合到片上互连主接口 或者经过桥禪合到不同的协议。在所示的示例中,该些非缓存代理中的每一个及开关 结构)能够经由片上互连的主接口禪合到相关结构110。在实施例中,主接口包括一个或 多个VC,在不同的VC之间没有排序要求。此外,SoC100还包括多个集成的非缓存代理 14〇1-140,,其可W经由不同互连技术的请求器接口直接禪合到相关结构110。另外,多个存 储器控制器15〇1-150。也可W禪合到相关结构110W提供互连并且控制禪合到SoC的存储 器(为了易于说明,在图1中未示出)的功能,在实施例中,该存储器可W被实现为动态随 机存取存储器值RAM)。虽然在图1的实施例中W该一示例示出,但是应理解,本发明的范围 不限于此,并且许多不同类型的SoC和其他半导体器件可W利用根据本发明实施例的下游 分配逻辑。
[0015] 现在参照图2,示出了根据本发明实施例说明在外发分配中设及的系统代理的组 件的细节的方框图。如图2所示,系统200包括均位于系统代理内的各种组件W及SoC的 其他组件。
[0016] 在图2的实施例中,该些SoC组件包括上游组件,即CPU模块21〇1-210。,其通常 可W关于图1的缓存代理而被如上所述地配置。此外,存在多个存储器控制器25〇1-25〇2。 为了该里讨论的目的,该些存储器控制器提供响应于上游读取请求从存储器接收的进入数 据,即,经过该些存储器控制器提供读取完成数据,并且随后该读取完成数据传输经过选择 器252并且到达数据缓冲器215,数据缓冲器215是来自各种虚拟通道和其他代理的附加写 入数据经过另一选择器212被提供到其中的共享缓冲器。
[0017] 数据缓冲器215可W被控制为响应于来自选择逻辑220的控制信号而输出数据的 给定部分,例如,缓冲器中的条目,在实施例中,选择逻辑220可W提供地址和读取使能信 号,W便因而能够输出在所选择的地址处的数据,例如存储在共享缓冲器215的给定条目 中的数据。共享数据缓冲器215存储传输至/自存储器、至/自缓存代理W及至/自10代 理的全部数据。注意到,在一些实施例中,可W在专用的每存储器通道基础上提供单独的数 据缓冲器。并且,单独的数据缓冲器可W是每代理或每功能专用的(例如,MMI0写入数据 具有数据缓冲器),或者可W针对每一个VC提供单独的数据缓冲器。
[001引如在图2中更具体示出的,该一数据可W被输出到合适的目的地,例如,到CPU模 块2101-210。或者到另一代理的上游数据。而且,在外发方向上提供的数据被从数据缓冲器 215输出并且输出到有序域270内的合适队列,该有序域270可W被配置有多个输出队列 2401-24012。虽然所示为有限数目的队列,但是应理解,本发明的范围不限于此,并且在其他 实施例中更多或更少该样的队列可W与特定的虚拟通道相关联并且可W存在信息类型。
[0019] 为了在外发方向上提供读取数据,可W将该读取数据存储在该些队列中的被标识 的一个队列中。具体地说,可^将读取完成数据存储在多个完成队列240。4,24〇11和24〇12的 一个中,它们中的每一个对应于给定的虚拟通道的完成队列,该给定的虚拟通道即是虚拟 通道VC0-VCN。此外,从数据缓冲器215输出的数据可W被进一步提供到数据队列240。2,该 数据队列240。2可W被配置为存储针对虚拟通道0的投送和非投送数据。如将进一步描述 的,关于VC0中的事务的信息,包括从数据缓冲器215输出的数据,也可W被存储在顺序