用于提供对易失性存储器维护事件的内核调度的系统和方法与流程

文档序号:11288544阅读:199来源:国知局
用于提供对易失性存储器维护事件的内核调度的系统和方法与流程



背景技术:

便携式计算设备(例如,蜂窝电话、智能电话、平板计算机、便携式数字助理(pda)以及便携式游戏控制台)以及其它计算设备持续提供不断扩展的一系列功能和服务,并且为用户提供前所未有水平的对信息、资源和通信的访问。为了与这些服务增强保持同步,这样的设备已经变得更加强大并且更加复杂。现今便携式计算设备通常包括片上系统(soc),其包括嵌入在单个基板上的一个或多个芯片组件(例如,一个或多个中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器等)。soc可以经由高性能数据和控制接口耦合到一个或多个易失性存储器设备,例如,动态随机存取存储器(dram)。

高性能dram存储器通常需要执行各种类型的硬件维护事件。例如,可以以相对高的时钟频率(例如,ghz时钟频率)执行周期性校准和训练,以便提供接口的无误操作。存储器刷新是在dram存储器的操作期间所要求的后台维护过程,因为每比特的存储器数据是随着芯片上的小电容器的电荷的存在或者缺少而被存储的。随着时间过去,存储器单元中的电荷泄漏掉,因此在没有刷新的情况下,所存储的数据最终将丢失。为了防止这种情况,dram控制器周期性地读取每个单元并且重写其,从而将电容器上的电荷恢复到其原始水平。

这些硬件维护事件可能不期望地阻塞cpu业务。例如,在现有系统中,硬件维护事件是由存储器控制器控制的独立的事件,其可能导致活动的cpu进程与这些周期性的独立的dram硬件事件之间的存储器访问冲突。当发生冲突时,cpu进程可能在dram硬件事件正被服务的同时暂时地停止。为dram服务还可能关闭或者重置cpu进程正在使用的打开的页面。停止cpu进程是不期望的,因此,dram硬件事件通常是在单个的基础上来完成的。soc硬件可以具有推迟dram硬件事件的能力,但是通常仅在极短时间段(例如,基于纳秒级别)内。因此,由于大量单独的dram硬件事件导致的概率性阻塞,活动的cpu进程可能引起不期望的低效。

因此,需要提供用于减少由周期性的易失性存储器维护事件导致的存储器访问冲突以及改善cpu进程存储器效率的系统和方法。



技术实现要素:

公开了用于调度易失性存储器维护事件的系统、方法和计算机程序。一个实施例是一种方法,其包括:存储器控制器确定用于执行针对易失性存储器设备的维护事件的服务时间(tos)窗口,所述易失性存储器设备经由存储器数据接口耦合到所述存储器控制器;所述存储器控制器向处理单元提供中断信号;确定所述维护事件的优先级;以及根据所述优先级来调度所述维护事件。

另一实施例是一种系统,其包括:动态随机存取存储器(dram)设备和片上系统(soc)。所述soc包括处理设备和dram控制器,其经由存储器数据接口电耦合到所述dram设备。所述dram控制器包括调度器模块,所述调度器模块被配置为确定用于执行用于所述dram设备的维护事件的服务时间(tos)窗口。所述tos窗口由被提供给所述处理设备的中断信号以及用于执行所述维护的最后期限来定义。所述处理单元从所述dram控制器接收所述中断信号。响应于所述中断信号,所述处理单元确定所述维护事件的优先级。根据所述优先级来调度所述维护事件。

附图说明

在各图中,除非另外指出,否则类似的附图标记贯穿各个视图指代类似的部分。对于诸如“102a”或者“102b”之类的字母字符名称的附图标记而言,字母字符名称可以对在同一图中存在的两个类似的部分或者元素进行区分。当旨在附图标记包含在所有图中具有相同的附图标记的所有部分时,可以省略用于附图标记的字母字符名称。

图1是用于调度易失性存储器维护事件的系统的实施例的框图。

图2是示出图1的系统的组件和操作的框图/流程图。

图3是示出用于调度图1和2的系统中的dram维护事件的方法的实施例的流程图。

图4是示出用于调度dram维护事件的服务时间(tos)窗口的时间线。

图5是示出用于根据优先级表来调度cpu线程a、b和c以及dram维护事件的系统的另一实施例的框图/流程图。

图6是示出用于在没有经由内核调度器进行调度的情况下周期性地执行图5的系统中的dram维护事件的方法的实施例的时间线。

图7是示出用于根据优先级表来调度dram维护事件的方法的实施例的时间线。

图8是示出用于根据优先级表来调度dram维护事件的系统的另一实施例的框图/流程图。

图9是示出用于生成用于调度dram维护事件的优先级表的方法的实施例的流程图。

图10示出用于确定用于dram维护事件的优先级的优先级表的示例性实施例。

图11是示出在tos窗口期间执行的dram刷新事件的时间线。

图12是示出用于在tos窗口已经到期之后执行dram刷新事件的硬件干预方法的实施例的时间线。

图13是可以将用于调度dram维护事件的系统和方法并入的便携式计算设备的实施例的框图。

图14是用于调度多处理器soc中的易失性存储器维护事件的系统的另一实施例的框图。

图15是示出图14中的dram控制器中的决策模块的实施例的组合流程图/框图。

图16是示出用于调度图14的多处理器soc中的dram维护事件的方法的实施例的流程图。

图17是示出用于单独地调度以及控制图14的多处理器soc中的dram维护的方法的实施例的时间线。

图18是图15的决策优先级表的实施例的表。

图19是由图14的处理器中的每个处理器单独地生成的通知的示例性实现的数据图。

具体实施方式

“示例性”一词在本文中用于意指“用作例子、实例或说明”。在本文中被描述为“示例性的”任何方面未必被解释为比其它方面优选或者有优势。

在该描述中,术语“应用”或者“图像”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。另外,本文中所提及的“应用”还可以包括本质上不可执行的文件,例如,可能需要打开的文档或者需要访问的其它数据文件。

术语“内容”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。另外,本文中所提及的“内容”还可以包括本质上不可执行的文件,例如,可能需要打开的文档或者需要访问的其它数据文件。

如该描述中使用的,术语“组件”、“数据库”、“模块”、“系统”等旨在指代计算机相关实体,任一硬件、固件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,在计算设备上运行的应用和计算设备都可以是组件。一个或多个组件可以位于进程和/或执行的线程内,并且组件可以被本地化在计算机上和/或分布在两个或更多个计算机之间。另外,这些组件可以从具有存储在其上的各种数据结构的各种计算机可读介质执行。组件可以通过本地和/或远程进程的方式进行通信,例如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件通过信号的方式与本地系统、分布式系统和/或跨越诸如互联网之类的具有其它系统的网络的另一组件交互)。

在该描述中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和”无线手机“可互换地使用。随着第三代(“3g”)无线技术和第四代(“4g”)的出现,较大的带宽能力已经使得更多的便携式计算设备能够具有更多种无线能力。因此,便携式计算设备可以包括蜂窝电话、寻呼机、pda、智能电话、导航设备或者具有无线连接或者链路的手持计算机。

150605u1cn

图1示出了用于经由存储器控制器提供对易失性存储器硬件维护事件的内核调度的系统100的实施例。系统100可以在任何计算设备中实现,其包括个人计算机、工作站、服务器、便携式计算设备(pcd)(例如,蜂窝电话、便携式数字助理(pda)、便携式游戏控制台或者平板计算机)。系统100包括片上系统(soc)102,其电耦合到一个或多个存储器设备。存储器设备可以包括易失性存储器(例如,动态随机存取存储器(dram)104)和非易失性存储器118。dram104可以经由高性能数据总线107和控制总线105电耦合到soc102。

soc102包括各种片上或者芯上(on-die)组件。在图1的实施例中,soc102包括经由soc总线116互连的以下各项:一个或多个处理设备(例如,中央处理单元(cpu)106、图形处理单元(gpu)、数字信号处理器(dsp)等)、dram控制器108、静态随机存取存储器(sram)110、只读存储器(rom)112、以及存储控制器114。存储控制器114耦合到非易失性存储器118,并且控制相关联的存储器事务。应当明白的是,非易失性存储器118可以包括任何非易失性存储器,例如,闪存、闪存驱动器、安全数字(sd)卡、固态驱动器(ssd)或者其它类型。cpu106可以包括用于确定当前cpu处理负载的一个或多个传感器126。dram104可以包括用于确定dram104的温度的一个或多个温度传感器128。

dram控制器108包括用于调度、控制和执行各种dram硬件维护事件的各个模块130。如以下更详细地描述的,dram控制器108可以经由与cpu106的信令和通信以及由操作系统120提供的功能(例如,内核调度器122、中断处理程序124等)实现dram硬件维护。在这点上,存储器硬件维护模块130还可以包括调度器模块132,其用于通过生成中断信号并且经由例如中断请求(irq)总线117将其发送给cpu106来发起对dram维护事件的调度。调度器模块132可以将用于定义用于执行所调度的维护事件的服务时间(tos)窗口的定时器/控制模块134并入其中。在一个实施例中,如本领域所已知的,dram硬件维护事件可以包括刷新操作、校准操作和训练操作。刷新模块136包括用于刷新dram104的易失性存储器的逻辑单元。校准模块138包括用于周期性地校准电压信号电平的逻辑单元。训练模块140包括用于周期性地调整在dram操作期间使用的定时参数的逻辑单元。

图2了示出用于调度、控制和执行dram硬件维护事件的各个组件之间的接口的实施例。调度器132和定时器/控制模块134(其位于dram控制器108中)与操作系统120的中断处理程序124以接口方式连接。cpu106从dram控制器108接收中断信号,该中断信号指示dram硬件维护事件将被内核调度器122调度。在接收到中断时,在cpu106上运行的中断处理程序124与优先级表202以接口方式连接,优先级表202可以用于为与所接收的中断信号相关联的特定dram硬件维护事件分配优先级。中断处理程序124与内核调度器122以接口方式连接,以根据由优先级表202定义的优先级来调度dram硬件维护事件。应当明白的是,利用对应的中断处理程序的多个中断可以用于为不同类型的维护事件中的所有维护事件服务。

图3示出了由系统100实现的用于提供对dram硬件维护事件的内核调度的方法300。在框302处,dram控制器108确定用于经由内核调度器122调度、控制和执行一个或多个dram硬件维护事件的服务时间(tos)窗口。图4示出了描绘示例性tos窗口408的存储器维护事件时间线400。时间线400的y轴表示随着时间(x轴)的存储器维护事件。在一个实施例中,tos窗口408被定义为中断信号402与在其之前dram硬件维护事件可以被执行的预定的最后期限之间的持续时间。如图4中所示,中断信号402可以是在参考线404所示的时间t1处接收的。dram控制器108可以经由定时器和控制模块134监测tos窗口408,以确定所调度的dram维护事件是否已经在参考线406所示的最后期限时间t2之前完成。

再次参照图3,在框304处,dram控制器108将一个或多个中断信号402提供给cpu106,其指示一个或多个dram硬件维护事件将在tos窗口408期间被执行。中断处理程序124接收中断信号402。在框306处,响应于中断信号402,中断处理程序124可以确定将在tos窗口408期间被执行的一个或多个dram硬件维护事件的优先级。应当明白的是,tos窗口408表示如下情况下的、在其期间一个或多个dram维护事件可以被最佳地推迟执行的可用的服务窗口:在cpu空闲时间期间、当cpu106具有较少负载(允许完成关键的、高优先级任务)时或者根据其它优先级方案,其任何一种可以被体现在优先级表202中。还应当明白的是,dram维护事件可以被调度为在tos窗口408期间作为一批维护事件而不是现有系统所要求的单独的维护事件来执行,例如通过发出多个刷新命令或者通过组合刷新和训练事件。以这种方式,可以消除或者显著减少存储器访问冲突,并且可以改善cpu进程存储器效率。

在一个实施例中,优先级可以是根据优先级表202确定的,优先级表202例如基于维护事件的类型(例如,刷新、校准、训练等)、由负载传感器126确定的当前cpu负载以及由传感器128确定的当前dram温度。在框308处,由中断处理程序124根据在框306期间所确定的优先级,将一个或多个dram硬件维护事件作为新线程插入到内核调度器122的输入队列上。内核调度器122可以遵循标准惯例,以基于优先级,公平地分派其队列中的活动中的所有活动。在框310处,一个或多个dram硬件维护事件可以经由内核调度器122,根据优先级来执行。如上所述,在一个实施例中,dram硬件维护事件可以被分组在一起,以形成tos窗口408内的有利的时间处的单个较长的dram维护操作。在所调度的dram硬件维护事件被执行之前tos窗口408到期的情况下(即,到达最后期限t2),定时器和控制模块134可以通过停止cpu106上的业务以及执行期望的维护,来覆盖内核调度并且执行硬件干预。如果发生干预,那么定时器和控制模块134可以维护过去干预的日志,其可以由cpu106访问。

图5示出了系统100的涉及与三个处理线程(线程a502、线程b504和线程c506)相关的dram刷新操作的另一示例性实现。如图5中所示,操作系统120可以包括用于调度存储器操作和dram硬件维护事件的一个或多个基于优先级的输入队列。在该例子中,系统支持三个优先级水平。输入队列508用于调度与最高优先级(优先级0)相关联的操作。输入队列510用于调度与下一最高优先级(优先级1)相关联的操作。输入队列512用于调度与最低优先级(优先级2)相关联的操作。应当明白的是,可以支持任何数量的优先级水平、类型和方案。

如上所述,dram104可以涉及来自刷新模块136、校准模块138和训练模块140的周期性的硬件服务事件。在一个实施例中,模块136、138和140可以包括用于使用由模块134提供的定时器来跟踪周期性服务间隔的相应的硬件。每个定时器可以跟踪tos窗口408,在tos窗口408内,应当完成对应的dram硬件维护事件。

随着用于每个事件的服务时间临近,调度器132可以向cpu106发出中断信号402。应当明白的是,中断信号402可以使得操作系统120的中断处理程序124基于优先级表202,将对应的事件线程添加到输入队列508、510和512中的一个输入队列上。图8示出了其中中断处理程序124接收用于刷新操作的中断信号402的例子。中断处理程序124可以访问优先级表202,并且确定刷新操作将被分配最低优先级(即,用于优先级2的操作的输入队列512)。可以基于来自负载传感器126和/或温度传感器128的输入,来确定优先级。在图8的例子中,将线程a502作为优先级0的操作添加到输入队列508中,将线程b504作为优先级1的操作添加到输入队列510中,并且将线程c506作为优先级2的操作添加到输入队列512中。在中断处理程序124确定刷新操作将被分配优先级2的操作之后,可以将刷新操作802添加到与优先级2的操作相对应的输入队列512中。

根据内核调度算法,内核调度器122可以分派线程a、b和c以及刷新线程802。在一个实施例中,例如,内核调度算法可以遵循静态优先级方案、优先化的轮询方案或者优先化的乒乓方案,这些都是本领域中公知的。应当明白的是,当刷新线程802执行时,对应的刷新驱动器514可以用于命令dram控制器108中的刷新模块136执行刷新事件。额外的校准和训练驱动器514可以用于命令校准模块138和训练模块140分别执行对应的dram维护事件。应当明白的是,在进行服务之前,每个驱动器514可以检查硬件,以确定是否由于在事件被执行之前tos窗口408到期而已经发生硬件干预。

如上所述,模块134中的定时器可以跟踪服务事件应当何时被完成的最后期限。例如,在重cpu负载之下,dram维护事件线程和相关联的驱动器514可以在最后期限之前不执行。如果发生这种情况,那么dram控制器108知晓由定时器跟踪的最后期限,并且硬件将立即干预,停止cpu业务,以及执行所要求的dram服务。在干预之后,硬件可以如先前所描述地继续进行。

图6是示出用于在没有经由内核调度器122的dram控制器108调度的情况下周期性地刷新图5的例子中的dram104的传统方法的实施例的存储器业务时间线。应当明白的是,该例子示出了传统方法,其将刷新操作作为单独的服务事件来周期性地调度,而与内核调度、优先级等无关。如图6中所示,各个刷新602以恒定的周期发生,而不是由dram控制器108经由内核调度器122调度。因此,当处理线程a502、线程b504和线程c506时,每个刷新602要求对应的线程被停止,以使得刷新操作能够被执行。图7示出了其中上述系统和方法用于调度刷新602的群组的、图6的例子。图7示出了每个存储器访问冲突可以通过将刷新602调度为在空闲时间期间执行来避免,并且从而改善cpu进程存储器效率。

图9是示出用于生成优先级表202的优先级校准方法900的实施例的流程图。本领域技术人员将明白的是,可以调整在方法900中使用的某些值,以适应不同的平台、存储器类型、软件构建等。还应当明白的是,可以通过原始设备制造商(oem)来提供这些值。

如框902处所示出的,可以跨域各个温度值来执行优先级校准。在框904处,可以跨域cpu负载的各个值(例如,百分比值、范围等)来执行优先级校准。在跨越各值进行扫描期间,可以减小校准、训练和刷新硬件事件的线程优先级。应当明白的是,这对应于将整数值优先级从0向上增加直到硬件干预(当调度无法在tos窗口内完成时)的次数超过门限为止。在这点上,可以针对该温度值(t)和cpu负载值(x),对优先级记录日志(框912),在该流程之后可以返回到框904。参照图9,框906指示可以将系统运行固定的时间段,以对硬件干预进行计数(框908)。在决策框910处,如果硬件干预的次数小于门限,那么可以减小优先级。如果硬件干预的次数超过门限,那么执行框912。

图10示出了包括用于温度值(列1004)和cpu百分比负载(行1002)的组合的优先级值的示例性优先级表202。例如,可以为用于85度的温度值和80%的cpu负载的优先级值分配最高优先级水平(优先级=0),这是因为重cpu负载和高dram温度。

如上所述,dram控制器108可以经由定时器和控制模块134监测tos窗口408,以确定所调度的dram维护事件是否已经在对应的最后期限之前完成。图11是示出刷新602的群组在线程1101和1103的执行之间的空闲时间中的tos窗口1106期间被成功调度和执行的时间线1100。图12示出了当线程1101正在执行时并且在刷新602的群组可以被执行之前tos窗口1106到期时的时间线1200。在这种情况中,dram控制器108检测到错过最后期限并且发起如上所述的硬件干预。可以由计数器对用于每种类型的维护事件的干预的运行历史记录日志,其可以被在cpu106上运行的操作系统120来读取和/或重启。操作系统120可以周期性地读取并且清除该干预历史,并且将先前读数的日志存储在非易失性存储器118中。这允许操作系统120测量已经在固定连续的时间段(例如,在图9的框908中的持续时间方面相等)内发生的干预的次数。在非易失性存储器118中存储的日志可以由操作系统120用于确保系统100仍然保持可接受的校准,并且干预的发生次数还没有显著地恶化。例如,如果日志显示系统100已经降级,并且已经遭遇超过图9中的框910中所描述的校准门限的值的干预,那么系统可以通过增加针对每个表条目的优先级(不包括已经是最高的优先级0),来有意地调整优先级表202,从而减小干预率。相反,如果日志报告在延长的时间段(例如,48小时,其与图9中的框908的示例性实施例中使用的时间段相比分外长)期间,系统100正在经历零或者接近零的干预,那么这可以指示优先级表202的条目已经被给予高于所需的优先级,那么系统100可以包括减小用于每个条目的优先级的能力,从而使得干预率上升。

如上所述,可以将系统100并入任何期望的计算系统中。图13示出了包括soc102的示例性便携式计算设备(pcd)1300。在该实施例中,soc103包括多核cpu1302。多核cpu1302可以包括第零核1310、第一核1312和第n核1314。例如,这些核中的一个核可以包括图形处理单元(gpu),其中其它核中的一个或多个包括cpu。

显示器控制器328和触摸屏控制器330可以耦合到cpu1302。进而,在soc102之外的触摸屏显示器1306可以耦合到显示器控制器328和触摸屏控制器330。

图13还示出了视频编码器334(例如,逐行倒相(pal)编码器、顺序传送彩色与存储制式(secam)编码器或者美国国家电视系统委员会(ntsc)编码器)耦合到多核cpu1302。进一步地,视频放大器336耦合到视频编码器334和触摸屏显示器1306。此外,视频端口338耦合到视频放大器336。如图13中所示,通用串行总线(usb)控制器340耦合到多核cpu1302。此外,usb端口342耦合到usb控制器340。dram104和用户识别模块(sim)卡346还可以耦合到多核cpu1302。

进一步地,如图13中所示,数字照相机348可以耦合到多核cpu1302。在示例性方面中,数字照相机348是电荷耦合器件(ccd)照相机或者互补金属氧化物半导体(cmos)照相机。

如图13中进一步所示,立体声音频编码器解码器(codec)350可以耦合到多核cpu1302。此外,音频放大器352可以耦合到立体声音频codec350。在示例性方面中,第一立体声扬声器354和第二立体声扬声器356耦合到音频放大器352。图13示出了麦克风放大器358还可以耦合到立体声音频codec350。此外,麦克风360可以耦合到麦克风放大器358。在特定的方面中,频率调制(fm)无线电调谐器362可以耦合到立体声音频codec350。此外,fm天线364耦合到fm无线电调谐器362。进一步地,立体声耳机366可以耦合到立体声音频codec350。

图13还示出了射频(rf)收发机368可以耦合到多核cpu1302。rf开关370可以耦合到rf收发机368以及rf天线372。小键盘204可以耦合到多核cpu602。此外,具有麦克风的单声道耳机376可以耦合到多核cpu1302。进一步地,振动器设备378可以耦合到多核cpu1302。

图13还示出了电源380可以耦合到soc102和soc202。在特定的方面中,电源380是直流(dc)电源,其向pcd1300的需要功率的各个组件提供功率。此外,在特定的方面中,电源是可充电dc电池或者dc电源,其是从交流电(ac)到连接到ac电源的dc变压器得到的。

图13还指示pcd1300还可以包括网卡388,其可以用于访问数据网络,例如,局域网、个域网或者任何其它网络。网卡388可以是蓝牙网卡、wifi网卡、个域网(pan)卡、个域网超低功率技术(peanut)网卡、电视/电缆/卫星调谐器、或者本领域中公知的任何其它网卡。进一步地,网卡388可以被并入到芯片中,即网卡388可以是芯片中的完整方案,而可以不是单独的网卡388。

参照图13,应当明白的是,存储器104、触摸屏显示器1306、视频端口338、usb端口342、照相机348、第一立体声扬声器354、第二立体声扬声器356、麦克风360、fm天线364、立体声耳机366、rf开关370、rf天线372、小键盘204、单声道耳机376、振动器378和电源380可以在片上系统102之外。

应当明白的是,上述用于调度易失性存储器维护事件的系统和方法可以被并入到多处理器soc中,多处理器soc包括共享同一易失性存储器的两个或更多个单独的存储器客户端。图14示出了图1的soc102包括以下三个存储器客户端的实施例:cpu106、图形处理单元(gpu)1402和调制解调器处理单元(mpu)1404。每个处理器自主地并且相互独立地运行,但是能够经由soc总线116相互通信以及与rom112、sram110、dram控制器108和存储控制器114进行通信。如上所述并且如图14中所示,cpu106、gpu1402和mpu1404可以注册为由多客户端决策模块1400所包括,并且经由irq总线117从dram控制器108接收中断信号。

可以将任何数量的额外的处理器和/或处理器类型并入到soc102中。每种处理器类型可以包括单数和/或多个并行执行单元,其在它们各自的处理器类型上运行的内核和调度功能单元(例如,内核调度器122、中断处理程序124—图1)的命令下执行线程。如图14中进一步所示,cpu106、gpu1402和mpu1404可以分别包括操作系统120a、120b和120c以及对应的负载传感器126a、126b和126c。结合图1-13所描述的内核调度系统和方法可以扩展用于cpu106、gpu1402和mpu1404中的每一个。

如以下更详细地描述的,dram控制器108还可以包括多客户端决策模块1400,其包括用于通过将soc处理器中的每个处理器的内核调度考虑在内,来确定何时要调度dram维护事件的逻辑单元。内核调度可以以上述方式来执行。在图14的多处理器环境中,随着tos临近,定时器和控制模块134可以向cpu106、gpu1402和mpu1404中的每一个发出一个或多个中断。作为响应,在每个操作系统120a、120b和120c内的中断服务例程(isr)可以向它们各自的调度器输入队列发出对应的事件。在这点上,可以复制事件,并且将其排队用于每种处理器类型。可以将非活动的或者处于睡眠模式的处理器从对中断进行响应中暂时地排除,并且从多客户端决策模块1400的处理中排除,直到它们再次变得活动为止。任何处理器可以在任何时间将其自身从多客户端决策中排除。每个处理器可以通过例如以下操作来这样做:除了屏蔽来自该处理器的中断处理程序124的维护事件中断117以外,还执行到多客户端决策模块1400的写,该写表示该处理器应当不再被包括在多客户端决策中。

cpu106、gpu1402和mpu1404单独地运行,并且通过生成单独的调度通知并且将该通知提供给dram控制器108来调度dram维护事件。在一个实施例中,每个处理器内核调度器确定它们自己的“用于维护的最佳时间”,并且然后调度与dram控制器108的通知,dram控制器108具有最终权威来基于从每个处理器接收的调度通知来决定实际的调度。应当明白的是,dram控制器108可以以随机的次序来接收调度通知,而不是遵循任何一致的模式。多客户端决策模块1400可以利用所存储的特征化数据以及dram业务利用率数据,来确定何时要执行dram维护事件。存储器业务利用率模块1406(图14)可以确定并且报告dram104上的业务活动的当前水平。以这种方式,用于每个soc处理器的内核调度器可以单独地确定执行dram维护事件的最佳时间,但是多客户端决策模块1400进行何时这样做的最终决策。

图15示出了多客户端决策模块1400的实施例的通用操作和数据输入。cpu106、gpu1402和mpu1404通过提供通知1502,来单独地向多客户端决策模块1400通知执行dram维护事件的最佳时间。通知1502可以经由到dram控制器108的写操作来实现。

图19示出了包括客户端id1902、客户端优先级数据1904、客户端负载数据1906和维护事件id1908的写操作1900的示例性实现。客户端id1902可以用于标识哪个处理器正在发送通知1502。客户端优先级数据1904可以包括被分配给该处理器的优先级。在一个实施例中,根据预先定义的优先级方案,可以为每种处理器类型(例如,cpu、gpu、mpu等)分配优先级。处理器的优先级可以与对dram访问时延的敏感度相反。换言之,可以为对时延相对更敏感的处理器分配较高的优先级。在图14的例子中,可以为mpu1404分配“最高优先级”,为gpu1402分配“最低优先级”,以及为cpu分配“中间优先级”。如图15中所示,可以不为优先级数据提供通知。在替代的实施例中,可以存储处理器优先级数据1502,或者以其它方式将其提供给dram控制器108。再次参照图19,经由写操作1900提供的客户端负载数据1906可以包括例如由处理器观察到的平均负载(即,处理器利用率)。可以由负载传感器126测量处理器利用率。维护事件id1908可以包括标识正被调度的dram维护事件的类型的事件类型(例如,刷新、训练、校准)。在一个实施例中,维护事件id1908还可以用于将来自处理器的配置和状态信息发送给多客户端决策模块1400。例如,可以由每个处理器周期性发送独立的客户端负载数据1906,或者可以从处理器发送排除请求,以从多客户端决策中暂时地移除。

再次参照图15,多客户端决策模块1400可以被配置为根据一个或多个决策规则来确定何时要执行dram维护事件。在一个实施例中,基于逐个通知来应用决策规则。换言之,随着接收到每个通知1502,将决策规则应用于该通知。多客户端决策模块1400可以使用各种类型的数据来应用决策规则。在图15的实施例中,输入数据包括决策表1506、处理器优先级数据1504和存储器业务利用率数据1508。以下参照图18描述了示例性决策表1506。可以由模块1406(图14)来提供存储器业务利用率数据1508。

图16是示出用于调度图14的多处理器soc中的dram维护事件的基于规则的方法1600的实施例的流程图。在框1602处,dram控制器108可以确定用于执行dram维护事件的tos窗口。在框1604处,dram控制器108向soc102上的多个处理器中的每个处理器提供中断信号。在框1606处,每个处理器通过生成对应的通知1502来单独地调度dram维护事件。框1602、1604和1606可以以上述方式进行操作。

随着每个通知1502被dram控制器108接收到(框1608),多客户端决策模块1400可以应用一个或多个决策规则,以确定何时要执行dram维护事件。多客户端决策模块1400可以跟踪哪个处理器(哪些处理器)已经在当前tos窗口内发送了通知。在决策框1610处,多客户端决策模块1400可以确定是否存在具有与当前通知的优先级相比较高优先级的任何未完成的通知1502。如果存在具有与当前通知相比较高优先级的未完成的通知,那么多客户端决策模块1400可以等待下一通知1502的到达(将控制返回到框1608)。例如,考虑从gpu1402(其具有“最低优先级”)接收到当前通知1502的情况。如果尚未从cpu106或者mpu1404(这二者具有较高优先级)接收到通知,那么dram控制器108可以等待接收下一通知。如果不存在具有与当前通知相比较高优先级的任何未完成的通知,那么控制传递给决策框1612。在决策框1612处,多客户端决策模块1400确定是“现在去往”并且服务dram维护事件,还是等待从一个或多个处理器接收另外的通知。如果最高优先级的处理器是最后利用通知来进行响应的,那么这意味着没有未完成的通知,并且基于规则的方法1600可以自动地前进到框1614。

在一个实施例中,决策框1612可以通过访问决策表1506(图15)来实现。图18示出了示例性决策表1506,其基于cpu负载(列1802)、gpu负载(列1804)和mpu负载(列1806)的各种组合来指定“现在去往”或者“等待”动作(列1808)。在图18的例子中,虽然处理器负载是根据“低”或者“高”值来指定的,但是可以实现数字范围或者其它值。可以保留处理器负载值1802、1804和1806,直到经由写操作1900的下一值更新覆盖当前值为止。出于即使在没有dram维护事件期间也向多客户端决策模块1400提供准确的负载信息的目的,可以周期性地发送处理器负载值更新。

再次参照图16,如果决策表1506指示“写”动作,那控制返回到框1608。如果决策表1506指示“现在去往”动作,那么dram控制器108可以开始监测dram业务利用率(框1614)。当dram业务利用率下降到低于预定或者可编程的门限时(决策框1620),dram控制器108可以开始为dram事件服务(框1622)。当监测dram业务利用率时,dram控制器108可以跟踪tos窗口是否已经到期(决策框1616)。如果tos窗口在为dram维护事件服务之前到期,那么dram控制器可以以上述方式执行硬件干预(框1618)。

图17是示出基于规则的方法1600的操作的两个例子的时间线。时间线1700示出由dram控制器108接收的通知1502的次序,并且时间线1702示出所产生的用于为dram维护事件服务的定时。参照时间线1700,从cpu106(“中间优先级”)接收第一通知1704a。由于还没有从较高优先级的处理器(即gpu1402和mpu1404)接收到通知,所以dram控制器108等待下一通知。从gpu1402(“最低优先级”)接收第二通知1706a。由于最高优先级的处理器(mpu1404)仍然未完成,所以dram控制器在检查业务利用率模块1406并且在tos窗口1711a内为dram维护事件服务之前,等待接收最后的通知(1708a)。时间线1702示出了当接收到最后的通知1708a时生成信号1710a。

在稍后的时间处,可以调度第二dram维护事件。对于该dram维护事件,以不同的次序接收通知。从mpu(其具有“最高优先级”)接收第一通知1708a。响应于接收到通知1708a,dram控制器108可以确定不存在具有较高优先级的任何未完成的通知。作为响应,多客户端决策模块1400可以访问决策表1506,以确定是开始为dram服务(“现在去往”动作)还是等待直到下一通知为止(“等待”动作)。在该例子中,mpu1404具有“高”负载(图18中的第二行),并且多客户端决策模块1400确定对应的动作是“等待”。基于决策表1506,dram控制器108等待从cpu106(“中间优先级”)接收下一通知1704b。由于与gpu1402相关联的未完成的通知不是较高优先级,所以多客户端决策模块1400可以访问决策表1506,以确定是开始为dram服务(例如,“现在去往”动作)还是等待直到下一通知为止(例如,“等待”动作)。在该例子中,cpu106的写操作1900指示“高”负载。此外,mpu104已经完成将其负载从“高”更新为“低”值的单独的写操作1900,并且多客户端决策模块1400确定对应的动作(例如,图18中的第三行)是“现在去往”。可以如图16中的框1620中所描述的针对存储器业务低于门限来检查业务利用率模块1406,并且然后dram控制器开始为dram维护事件服务。时间线1702示出了当接收到通知1704b时并且在从最低优先级的处理器(即gpu1402)接收到通知1706b之前,生成信号1710b。gpu1402通知1706b仍然可能发生,但是可能被多客户端决策模块1400忽略,因为dram维护已经在当前tos窗口1711b内完成。例如,如图17中所示,当发出信号1710b时,可以关闭tos窗口1711b。

应当明白的是,可以将本文描述的方法步骤中的一个或多个步骤作为计算机程序指令(例如,上述模块)存储在存储器中。可以由任何适当的处理器与对应的模块结合或者合作来执行这些指令,以执行本文所描述的方法。

在本说明书中描述的各过程或者各过程流中的某些步骤自然而然地在其它步骤之前,以便本发明如所描述地运作。然而,本发明并不限于所描述的步骤的次序,如果这样的次序或者顺序不改变本发明的功能。也就是说,应认识到的是,在不脱离本发明的范围和精神的情况下,一些步骤可以在其它步骤之前、之后或者与其并行地(与其基本上同时)执行。在一些实例中,可以在不脱离本发明的情况下,省略或者不执行某些步骤。此外,诸如“之后”、“然后”、“接下来”等的词语并非旨在限制这些步骤的次序。这些词语仅用于引导读者通读示例性方法的描述。

此外,本领域技术人员在编程时能够基于例如本说明书中的流程图以及相关联的描述,编写计算机代码,或者识别合适的硬件和/或电路,从而在没有困难的情况下实现所公开的发明。

因此,特定的程序代码指令集或者详细的硬件设备的公开并不被视为对于充分地理解如何实现和使用本发明而言是必需的。在以上描述中并且结合可以示出各个过程流的图,详细地解释了所要求保护的计算机实现的过程的发明的功能。

在一个或多个示例性方面中,所描述的功能可以用硬件、软件、固件、或其任意组合来实现。如果用软件来实现,所述功能可以存储在计算机可读介质上或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质二者,通信介质包括促进将计算机程序从一个地方传输到另一个地方的任何介质。存储介质可以是可以由计算机访问的任何可用介质。通过举例而非限制的方式,这种计算机可读介质可以包括ram、rom、eeprom、nand闪存、nor闪存、m-ram、p-ram、r-ram、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或者可以用于携带或存储具有指令或数据结构形式的期望程序代码并且可以被计算机访问的任何其它介质。

另外,任何连接被适当地称为计算机可读介质。例如,如果利用同轴电缆、光纤电缆、双绞线、数字用户线(“dsl”)或无线技术(例如,红外线、无线电和微波)从网站、服务器或其它远程源发送软件,则同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如,红外线、无线电和微波)被包括在介质的定义中。

如本文中所使用的,磁盘(disk)和光盘(disc)包括压缩光盘(“cd”)、激光光盘、光盘、数字多功能光盘(“dvd”)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述各项的组合也应当包括在计算机可读介质的范围之内。

对于本领域技术人员而言,本发明涉及的在不脱离其精神和范围的情况下的替代实施例将变得显而易见。因此,虽然已经示出并且详细地描述了所选择的方面,但是将理解的是,可以在不脱离本发明的精神和范围(如以下权利要求所定义的)的情况下在其中进行各种替换和改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1