用于在主处理器与副处理器间分配处理功能的系统和方法

文档序号:6609555阅读:229来源:国知局
专利名称:用于在主处理器与副处理器间分配处理功能的系统和方法
技术领域
本发明属于计算机领域。更具体地,本发明涉及计算系统内多个 处理器之间的处理任务的分配。
背景技术
多种不同类型的计算系统已经在世界上获得了广泛应用。这些计 算系统包括个人计算机、服务器、大型机和多种多样的单体和嵌入式 计算设备。存在着延展的客户-服务器系统,应用程序和信息在多个
PC网络、大型机和微型计算机间分布。在网络连接的分布式系统中,
用户可以访问多个应用程序、数据库、网络系统、操作系统和大型应 用程序。计算机向个人和企业提供许多软件应用程序,包括字处理、 电子数据表和记账。此外,网络使得在不同位置的人们可以通过电子 邮件、网站、即时消息和网络会议进行高速通信。
高性能单片微处理器的通常体系结构是精简指令集计算机
(RISC)体系结构,其特征在于常用指令的精简小集合,以便快速执 行。于是,在RISC体系结构中, 一个复杂的指令包括快速分步执行 的简单指令的一个小集合。这些步骤以适于执行特定的简单指令的执
行单元来实现。在一个超标量体系结构中,这些执行单元典型地包括 并行运行的装载/存储单元、整数算术/逻辑单元、浮点算术/逻辑单元 和图形逻辑单元。在一个处理器体系结构中, 一个操作系统控制处理 器和处理器外围部件的操作。可执行的应用程序存储在计算机的硬件 驱动器里。计算机的处理器使得应用程序响应于用户的输入来运行。
在某些系统中,服务处理器与主处理器联合操作。主处理器执行 多数的处理工作,包括执行应用程序代码,而服务处理器执行例行的 任务。这些例行的任务包括配置系统各组件,这包括配置主处理器。 当前的处理系统包括多个实体的组合。这些实体包括存储器、设备(以
太网适配器、USB适配器、视频适配器)和处理器,这些实体必须共 同工作来完成计算机的各功能。这些实体可以基于物理特性来分组, 例如基于它们具有多少地址/数据线、这些线如何驱动、它们需要什么 样的时钟速度等等。这些设备经地址和数据总线通信。 一个总线的各 实体必须与另一总线的实体通信。从一个总线向另一总线引导信息的 设备称为桥(bridge)。
服务处理器的一项重要工作是经历(go through)总线网并配置 这些桥,以便各单独的总线能作为一个有效的系统一起工作。该服务 处理器提供设置信息给主处理器并配置时钟和系统电压源。该服务处 理器还启动该主处理器。在主处理器启动之后,通过在总线上配置所 有的特定设备完成系统初始化,开启操作系统并开始执行应用程序。
一旦主处理器运行,服务处理器就从初始化任务中释放出来,然 后开始监视系统环境。例如,服务处理器监视温度状况,如果系统过 热,服务处理器可以开启一个风扇。如果系统温度持续上升,服务处 理器可以减緩主处理器速度,使得其消耗较低能量从而散热减少。在 温度极限情况,服务处理器可以关掉主处理器。
服务处理器不执行应用程序代码,并且还具有其自己的代码空 间,即该服务处理器执行的代码不同于主处理器执行的代码并且在存 储器中独立于后者。由于当前系统的服务处理器不执行主处理器执行 的操作系统代码,也不执行应用程序代码,该服务处理器的能力没有 被充分利用。因此,需要在主处理器和副处理器之间更有效地分配处 理功能,以便更有效地利用能耗。

发明内容
上述的问题大部分由本发明的用于在主处理器和副处理器之间 分配处理责任的系统、方法和介质解决。在一个实施例中,该系统包 括一个主处理器,用来实施处理器功能,包括只要未检测到发生了特
殊状况,执行应用程序代码。该系统还包括一个副处理器,用来在检 测到特殊状况发生时实施至少某些处理器功能。如果未发生特殊状况, 副处理器保持在休眠状态。如果发生了特殊状况,副处理器置于唤醒 状态并被分配处理功能。在温度超过阈值的情况下,副处理器返回到 休眠状态。当副处理器未处于休眠状态时, 一个共用的操作系统既可 以由主处理器执行也可以由副处理器执行。
实施例中包括一种用于在主处理器和副处理器间分配处理功能 的方法。该方法包括将可由主处理器和副处理器二者访问的可执行代 码存储到一个存储器中。当未发生特殊状况时,主处理器执行包括应 用程序代码的计算机代码。当发生了特殊状况时,副处理器执行可执 行代码。当未发生特殊状况时,副处理器处于休眠状态。该特殊状况 可以包括处理器使用率水平超过阈值,或者可以包括由主处理器接收 到浮点指令,或者接收到用来实施电子数据表计算或更新、格式化和 再现图形的打印及预览功能、应用程序启动、抗病毒文件扫描、观看 网络广播等的指令。当发生了该特殊状况时,该副处理器被唤醒。当 温度状况超过了特定阈值时,该副处理器可以返回到休眠状态。
本发明的另一实施例提供一种计算机程序产品,包括若干指令, 当在数据处理系统中执行时,能使得系统实施一系列操作,用来在主 处理器和副处理器之间分配处理功能。该一系列操作总地包括监视一 个或多个特殊状况。如果未发生一个或多个特殊状况,副处理器保持 在休眠状态。如果一个或多个特殊状况发生,处理功能被分配由副处 理器实施。同样,如果温度状况超过特定阈值,该副处理器可以返回 到休眠状态。


本发明的优点在阅读了下面的详细说明并参考附图后将更加清 楚,其中相似的标记表示类似部件。
图l表示一个网络内的一个数字系统的实施例;在该数字系统中 有一个主处理器和一个副处理器;
图2表示可配置用来在主处理器和副处理器间分配处理功能的计 算机内的一个处理器的实施例;
图2A表示由主处理器实施的用来检测向副处理器分配处理器功 能的特殊状况的功能的方框图3表示一个实施例的流程图,当副处理器休眠而未实施处理功 能时,用来在主处理器和副处理器之间分配处理功能;
图4表示一个实施例的流程图,当副处理器处于唤醒状态实施处 理功能时,用来分配处理功能。
实施例的详细说明
以下是附图中表示的本发明的实施例的详细说明。示例的详细说 明仅用来清楚地说明本发明。但是所提供的细节不用来限定期望的实 施例的改动;相反,本发明意在覆盖后附权利要求中限定的本发明的 精神和范围内的所有改动、等同和替换方案。下面的详细说明旨在使 这些实施例对本领域的普通技术人员来说显而易见。
本发明公开了用来在主处理器和副处理器之间分配处理功能的 系统、方法和介质。在一个实施例中,当副处理器处于休眠状态时, 主处理器实施例行的处理职责,包括执行应用程序代码。当认为主处 理器的负担超负荷时,副处理器被从休眠状态唤醒,并被分配否则将 由主处理器实施的处理功能。如果系统的温度升高超过一个阈值,副 处理器返回到休眠状态。
图l示出了例如根据本发明的一个实施例实现的计算机的数字系 统116。数字系统116包括第一处理器(处理器1) 98和第二处理器 (处理器2)100。处理器98是主处理器,处理器100是副处理器。 处理器98和100 二者的每一个都根据BIOS (基本输入/输出系统)代 码104和操作系统(OS )代码106工作。BIOS和OS代码存储在存 储器108中。BIOS代码典型地存储在只读存储器(ROM)中,OS 代码典型地存储在计算机系统116的硬驱上。数字系统116包括物理 上靠近处理器98和100的2级(L2 )高速緩存102。存储器108还存
储由处理器98和100执行的其它程序。在一个实施例中,存储器108 存储分配软件,用来在处理器1和2之间分配处理负荷,如下所述。 该软件可以是OS代码106的一部分。存储器108还可以包括第一执 行队列107和第二执行队列109,第一执行队列107包含待由处理器1 执行的指令,第二执行队列109包含待由处理器2执行的指令。存储 器108还存储处理器98和100在执行指令过程中要使用的数据。
在一个实施例中,主处理器98是低功耗处理器,它运行速度比 副处理器100慢,且比副处理器消耗更少能量。副处理器100是高功 耗处理器,它运行速度比主处理器98快,并消耗更大能量。此外,副 处理器100可以直接由执行单元硬件执行浮点指令,而主处理器98 可以通过软件模拟浮点硬件的方式更慢地执行浮点指令。在例行操作 中,低功耗处理器98执行例行功能,如键盘和鼠标通信、相对简单的 视频显示功能和其它例行的附属功能。此外,主处理器98可以例行地 执行所有软件,实施计算机系统通常执行和实施的所有操作。
当认为主处理器98的负荷太重时,则某些工作被卸栽到相对高 功耗、高速度的处理器100。因此,副处理器100通常处于休眠状态, 仅在认为主处理器98的负荷太重时才被唤醒。当处于休眠状态时,副 处理器100仅运行保持其Ll高速緩冲存储器,及实施其它小的功能, 而不执行操作系统或应用程序代码。更具体地,当副处理器100处于 休眠状态时,所有的配置参数,即功耗管理选项、时钟选项、核心错 误处理选项、存储器高速緩存选项、高性能调谐总线选项,都被设置 并保存在存储器中。这与处理器完全掉电相反。如果处理器被关掉, 那么在副处理器100将运行前,主处理器98就必须执行初始化过程来 恢复该信息。
在休眠状态,只需要应用硬件中断命令,来使该处理器访问预定 的存储器位置,恢复一组通用寄存器,并开始执行代码。替代实施例 可以使用替代方法来唤醒副处理器。当副处理器100工作时,操作系 统向其分配最劳动密集型的处理任务,而向主处理器98分配小的任 务,例如处理来自键盘或鼠标的输入及染色视频显示。分配给副处理
器100的劳动密集型处理任务可以包括浮点操作、数据库操作、电子
数据表计算和更新、格式化和再现图形的打印和预览功能、应用程序 启动、抗病毒文件扫描和观看网络广播。
处理器98、 100包括位于芯片上的一级(Ll)高速緩存190、取 指令器130、控制电路160和执行单元150。 一级高速緩存190接收和 存储接近执行时间的指令。取指令器130从存储器取指令。执行单元 150实施指令要求的操作。执行单元150可以包括装载/存储单元、整 数算术/逻辑单元、浮点算术/逻辑单元和图形逻辑单元。每个执行单 元包括数个阶段来实施取指令器130所取的指令的执行过程中的步 骤。控制电路160控制取指令器130和执行单元150。控制电路160 还从执行单元150接收关于控制决定的信息。例如,在执行流水线中
发生数据高速緩存未命中的情况下,控制电路160被通知以处理延迟 (stall)。
数字系统116还典型地包括未示出的其它部件和子系统,例如 Trusted Platform Module (信任的平台模块)、存储器控制器、随机 存取存储器(RAM)、外围驱动器、系统监视器、键盘、彩色视频监 视器、 一个或多个软盘驱动器、 一个或多个可移动非挥发介质驱动器 (例如硬盘驱动器)、CD和DVD驱动器、指示设备(例如鼠标) 和网络接口适配器等等。数字系统116可以包括个人计算机、工作站、 服务器、大型机、笔记本或膝上型计算机、台式计算机等等。处理器 98、 100之一或二者也可以通过输入/输出设备110与服务器112通信。 服务器112将系统116连接到其它计算机和服务器114。于是数字系 统116可以处于计算机网络中,例如因特网和/或本地内部网。此外, 服务器112可以控制访问其它存储器,包括磁带驱动存储器、硬盘阵 列、RAM、 ROM等等。
这样在数字系统116的一个操作模式中,L2高速緩存从存储器 108接收希望在处理器98、 100的处理器流水线中处理的数据和指令。 L2高速緩存是物理上接近处理器98、 100的高速存储器,以便获得更 大的速度。L2高速緩存102从存储器108接收多个指令线程(thread )
的指令。这些指令可以包括装栽和存储指令、分支指令、算术逻辑指
令、浮点指令等等。Ll高速緩存190置位在处理器核心,包含优选地 从L2高速緩存102接收的数据和指令。理想地,当时间接近要执行 程序指令的时间时,如果有的话,指令与数据首先被传递到L2高速 緩存,然后当执行时间迫近时,传递到L1高速緩存。
执行单元150执行从Ll高速緩存190接收的指令,执行单元150 可以包括装栽/存储单元、整数算术/逻辑单元、浮点算术/逻辑单元和 图形逻辑单元。这些单元中的每一个都适于执行一组特定的指令。这 些指令可以被提交到不同的执行单元以进行并行执行。在 一个实施例 中,处理器98、 IOO可以同时使用两个执行单元来执行特定的指令。 由执行单元150处理的数据可以存储在整数寄存器文件和浮点寄存器 文件(未示出)中,也可以从整数寄存器文件和浮点寄存器文件中访 问。存储在这些寄存器文件中的数据还可以来自于、也可以传送到位 于板面上的Ll高速緩存190或外部高速緩存或存储器。处理器可以 通过执行装栽指令从存储器(例如Ll高速緩存)装栽数据到处理器 的寄存器。处理器可以通过执行一个存储指令从寄存器中将数据存储 到存储器中。
计算机的存储器包括只读存储器(ROM)、实施在DRAM和 SRAM中的高速緩冲存储器、硬盘驱动器、CD驱动器和DVD驱动器。 服务器也可以有其自己的存储器,控制对其它存储器(例如磁带驱动 器和硬盘阵列)的访问。网络中的每个计算机可以存储和执行其自己 的应用程序。某些应用程序(如数据库)可以驻留在服务器中。这样, 每个计算机可以访问存储在服务器中的同一数据库。此外,每个计算 机可以通过服务器访问其它存储器。
于是,某些实施例包含一个多处理器系统,具有低功耗的主处理 器98和高功耗的副处理器100。在另一实施例中,两个处理器可以获 得可比的功耗。启动后,主处理器98初始化系统资源并引出(bring up) 准备好的副处理器100,及执行配置任务。这些配置任务类似于由简 单J3艮务处理器通常执行的配置任务。完成初始化和配置任务之后,副
处理器100释放到休眠状态。在休眠状态中,副处理器100不执行计 算机代码。在休眠状态中,副处理器100不实施任何处理功能而仅仅 保持准备好状态以当被主处理器98 (在OS的指导下操作)呼叫时执 行操作。同时,主处理器98实施包括执行应用程序代码的所有处理功 能。
在通常操作中,OS代码包括由主(低功耗)处理器98执行的系 统空闲任务例程,以使得可以判定处理器的使用率。在多任务操作系 统中,诸如OS-X、 Windows、 Linux、 AIX,竟争访问处理器的每个 任务必须通过将其自己放置到执行队列中来注册其意图。每个任务都 将运行一小段时间,然后暂停以便其它任务可以运行。有时候由于需 要的信息未准备好(如来自键盘的输入未准备好),某一任务也可能 暂停。当一个任务暂停或完成时,系统返回来执行操作系统代码,而 该任务保持在执行队列中。操作系统于是指挥处理器98执行执行队列 中的下一任务。如果执行队列中没有任务,处理器98执行系统空闲任 务直到再次有任务进入到执行队列中。在一个实施例中,系统使用率 是在给定的时间段中花在系统空闲任务的时间与执行处理器功能和系 统空闲任务所用时间的比率。例如如果在l秒钟内,500毫秒用在了 系统空闲任务上,使用率是50%。其它实施例可以使用系统使用率的 替换量度,正如本领域的普通技术人员所认识的。
监视系统空闲任务的时间便可以确定主处理器的使用率的水平。 如果使用率超过一特定指明的第一阈值,那么主处理器98呼叫副处理 器100进入操作。实施此比较功能的逻辑可以包括在OS代码中或作 为可由主处理器98执行的单独的代码。此阈值存储在ROM中或可以 由用户输入并存储在可读写存储器中。更具体地,主处理器98在操作 系统的指导下将产生一个硬件中断命令到副处理器100,使得副处理 器100进入操作中。然后,副处理器100开始执行其执行队列中的代 码,在图1中标记为执行队列2, 109。同时,主处理器98可以通过 执行其执行队列中的代码(图1中标记为执行队列1, 107)仍实施某 些处理职责。
这样,处理器98、 100的每一个都具有其自己的执行队列。当发 生一特殊情况时,表明需要唤醒副处理器100,主处理器98可以从其 执行队列107移动任务到副处理器的执行队列109。在某些实施例中, 一个任务的任务控制模块的属性指明原始执行队列,使得该任务与原 始执行队列相关联。特定任务,例如浮点操作,仅可以由副处理器100 执行。这样的任务可以由该任务的任务控制模块的另一属性指定。
如果副处理器100因为例如温度超过阈值而被置入休眠状态,挂 起仅由副处理器执行的任务的执行过程,直到副处理器被再次唤醒。 所有其它的任务可以被返回到主处理器执行队列107以便由主处理器 执行。当副处理器100休眠时,如果主处理器98的使用水平高于一个 阈值,那么主处理器的执行队列107被扫描来寻找副处理器IOO拥有 的处理,如每个任务的任务控制模块所表明的。这些处理被移动到副 处理器的执行队列109,并且副处理器IOO被唤醒。
如果到了唤醒副处理器100的时间,在主处理器98的队列107 中没有副处理器IOO拥有的任务,那么主处理器队列107的某些任务 (也许一半)被转移到副处理器队列109。这些任务仍由主处理器98 拥有,但是这些任务的执行所导致的要执行的任何处理可以由副处理 器100拥有。当副处理器100完成其队列109中所有任务的执行时, 副处理器IOO可以被置入休眠中。
这样,在一个实施例中,处理器IOO,由处理器98唤醒到操作中 后,将执行系统空闲任务,并且当副处理器100的CPU的使用率低于 一特定指明的第二阈值时返回到休眠状态。副处理器100在OS代码 106的指导下,由主处理器98产生的硬件中断命令返回到休眠状态。 例如,主处理器98可以将休眠任务排列到副处理器的执行队列中,使 得副处理器向其机器状态寄存器写1比特,来引发休眠状态。可以利 用替换实施例来将副处理器置入休眠状态。此外,在某些实施例中, 该第一阈值可以不同于第二阈值,来形成副处理器100的滞后操作。 这些阈值可以存储在ROM (只读存储器)并在需要时访问。在另一 实施例中,这些阈值存储在可读写存储器中,并可以由用户通过用户
接口设备(如键盘)来指定。
在一个实施例中,当特定状况发生时,主处理器98将呼叫副处 理器100进入操作。例如,在一个实施例中,主处理器98可能缺少用 于浮点算术的浮点执行单元。在此情况下,当接收到要执行浮点算术 的操作代码时,主处理器98将呼叫副处理器100进入操作来执行浮点 算术,后者包含浮点执行单元。
这样,当主处理器98达到使用率阈值或其它特殊状况发生时, 主处理器98呼叫副处理器100进入操作。为此,主处理器98存储其 执行线程的状态以卸栽到副处理器100。该状态存储在主、副处理器 均可访问的存储器中。主处理器98将副处理器IOO带到这样的状态, 即使处理器间可以通信,并通知副处理器100当前时间基准值,传送 要由副处理器IOO执行的线程的开始地址。本领域的普通技术人员将 可以理解用来使副处理器100进入操作的其它过程。主处理器98通知 OS调度器,副处理器100处于唤醒状态并准备好协助处理要执行的 指令。OS调度器是OS代码106的一个部分,其接收来自队列的一个 任务并引导该任务被处理器执行。这样,OS调度器将从副处理器100 的执行队列109获得要运行的每个下一个任务,并使得该任务由副处 理器100执行。
当被唤醒时,副处理器100装栽上下文信息(例如执行过程从其 开始的指令地址),并分支到该位置。于是,副处理器100就好像从 中断返回。副处理器100此时由OS代码106控制。分配到副处理器 100的线程由副处理器100独立地执行,而不由主处理器98执行。一 旦被呼叫到操作中,副处理器100还执行OS代码106分配给它的任 何附加的线程。在一个实施例中,在多处理器操作期间,主处理器98 将被系统空闲任务的定时通知,来监视副处理器的使用率水平,是否 副处理器使用率低于一个阈值。在另一实施例中,主处理器监视是否 主处理器的使用率低于一个阈值。这样,当处理要求再次变低时,副 处理器100由主处理器98引导返回到休眠模式,主处理器98恢复全 部操作职责,直到再次发生需要副处理器100的情况。
在某些实施例中,副处理器100到主处理器98的处理职责的转 换可以在温度状况超过一特定阈值时发生。这种监视温度状况并且与 阈值进行比较的操作可以由处理器98在OS代码106的指导下执行。 这在膝上型计算机的情况下尤其重要,此时温度状况可能变得至关重 要并且不容易降温。因此,在副处理器100操作的过程中,部件的温 度可能升高。部件温度可以由温度传感器检测,传感器可以很关键地 位于数字系统116的壳体内,特别地,温度传感器可以位于副处理器 100附近来检测温度。在温度超过阈值的情况下,副处理器100进入 休眠状态,而以热量形式散布较少能量的主处理器98接管所有的系统 操作。因此,根据处理器使用率来决定向副处理器100转移处理职责, 而根据温度状况来决定将处理职责转移回主处理器98。
图2显示了一个可以在数字系统(例如数字系统116)中实施的 主处理器或副处理器200的实施例,来执行OS代码106、应用程序 以及可以是OS代码一部分的处理器分配软件。1级指令高速緩存210 从处理器外部的存储器216 (例如2级高速緩存)接收指令。于是, 例如处理器分配软件可以存储在存储器中作为一个应用程序或者OS 代码的一部分。再有,处理器200执行的代码可以是存储在其相应执 行队列107或109中的代码。顺序的指令群可以从执行队列107、 109 转移到L2高速緩存,这些指令的子群可以转移到Ll高速緩存。
取指令器212保留一个程序计数器并从Ll指令高速緩存210取 得处理分配指令。取指令器212的程序计数器包括要执行的下一指令 的地址。取指令器212还执行预取操作。这样,取指令器212与存储 器控制器214通信来启动指令从存储器216到指令高速緩存210的转 移。指令从系统存储器216要转移到高速緩存中的位置是由从系统存 储器地址中得到的一个索引确定的。
指令序列从系统存储器216转移到指令高速緩存210来实施处理 器分配功能。例如, 一个指令序列可以指示处理器1来监视随着时间 的处理器使用率水平。该指令序列可以包括确定处理器使用率是否超 过一特定的阈值。该指令序列可以还包括卸栽处理功能到副处理器。
该指令序列还可以包括检测处理功能卸载到副处理器的特殊状况。例 如,特定的劳动密集型指令(例如浮点指令)可以被卸栽来由副处理
器执行。这些指令序列可以是操作系统代码106的一部分或者是主处 理器98执行的单独程序的一部分。这些指令序列实施的功能显示在图 2A中。
取指令器取回传送到指令高速緩存210的指令并再传送到指令解 码器220。指令解码器220接收并解码由取指令器212取得的指令。 指令緩沖器230从指令解码器220接收解码的指令。指令緩沖器230 包括用于多个指令的存储器位置。指令緩沖器230可以重新安排从指 令解码器220接收的指令的执行顺序。因此,指令緩冲器230包括一 个指令队列来提供指令传送到调度单元240的顺序。
调度单元240将从指令緩冲器230接收的指令分派到执行单元 250。在超标量体系结构中,执行单元250可以包括装载/存储单元、 整数算术/逻辑单元、浮点算术/逻辑单元和图形逻辑单元,前述各单 元并行操作。因此调度单元240将指令分派到某些或全部执行单元来 同时执行指令。执行单元250包括若干阶段,来实施执行从调度单元 240接收的各指令中的多个步骤。执行单元250处理的数据可以存储 在图中未示出的整数寄存器文件中和浮点寄存器文件中或从其读取。 这样指令被顺序地并行执行。
图2显示了具有多个执行单元的一个处理器的第一执行单元 (XU1 ) 270和第二执行单元(XU2) 280。每个执行单元250的每个 阶段都能够实施不同指令执行中的一个步骤。在处理器200操作的每 个周期中,指令的执行经过执行单元250内的处理器流水线进展到下 一阶段。本领域的技术人员将认识到处理器"流水线"的各阶段可以 包括未示于图2的其它的阶段和电路。此外,通过多线程处理,可以 同时运行多个处理过程。因此,可以顺序地和并行地执行多个指令来 实施处理器分配功能。
图2还显示了控制电路260,用来实施控制处理器200的操作的 多种功能。例如,控制电路260内的一个操作控制器解释包含在指令 中的OP代码并指导适当的执行单元来实施所指示的操作。再有,控 制电路260可以包括一个分支再引导单元,当确定一个分支被错误地 预测时,来再次引导取指令器212。控制电路260可以还包括一个刷 新(flush)控制器,用来刷新比错误预测的分支指令更新的指令。当 副处理器100休眠时,参考图2讨论的各种部件都是空闲的。这样当 副处理器100休眠时,取指令器、指令解码器、调度单元和执行单元 不实施它们正常的功能而是处于空闲。
图2A显示主处理器98实施的用来检测分配处理器功能给副处理 器100的特殊状况的功能的方框图。这些功能包括当处理器98空闲时 实施的系统空闲任务9802。处理器使用率监视器9804监视处理器的 使用率。在一个实施例中,处理器使用率确定为在给定时间内花在系 统空闲任务的时间与实施处理器功能所花时间加上系统空闲任务所花 时间之比。可以使用处理器使用率的其它测度。使用率阈值比较器 9806将处理器使用率与一个阈值作比较,来确定是否需要将处理器功 能分配到副处理器。
处理器98还实施温度监视功能9808来确定系统温度,该温度例 如可以是副处理器附近的温度。温度阈值比较器9810比较测得的温度 与一个阈值,来确定是否应将副处理器置于休眠中。温度由一个或多 个温度传感器测量,传感器很关键地置于计算机机壳内部。特别地, 温度传感器可以置于处理器附近。在检测到特殊状况的情况下,唤醒/ 休眠功能9812提供唤醒副处理器或将其置于休眠所需的命令。实施图 2A中的功能的指令可以是操作系统的一部分或者可以作为系统存储 器中存储的单独的程序来提供。
图3显示了一个流程图300的实施例,用来当副处理器休眠而未 执行处理功能时分配处理功能。在通常操作中,其中主处理器实施所 有的系统处理操作,主处理器监视处理器使用率水平(单元302)。 这可以通过操作系统的系统空闲任务完成。主处理器确定是否主处理 器使用率水平超过一特定阈值(单元304)。如果超过特定阈值,那 么处理功能被分配到副处理器(单元308),且副处理器被唤醒(单
元312)。通过主处理器将任务从其自己的执行队列移动到副处理器 的执行队列来将处理功能分配到副处理器。 一个任务的任务控制模块 的属性被设定来指定主处理器作为原始处理器。还有,任务控制模块 表明此任务是否为仅由副处理器执行的任务。当到了该唤醒副处理器 的时间时,这样的任务将总是被移动到副处理器的执行队列。
如果未超过阈值,那么主处理器继续其功能并监视是否发生特殊 状况(单元306)。这样,主处理器例如可以检测是否主处理器流水 线中的指令要求浮点操作。在某些实施例中,浮点指令可以被卸栽到 副处理器。在其它实施例中,在执行其它劳动密集型任务指令的情况 下,可以认为发生了特殊状况,这些任务包括电子数据表计算与更 新、格式化和再现图形的打印与预览功能、应用程序启动、抗病毒文 件扫描及观看网络广播。如果发生了特殊状况(单元310),那么处 理功能被分配到副处理器(单元308 )并且副处理器被唤醒(单元312 )。 如果未检测到特殊状况,则处理过程在单元302处继续。
图4显示了当副处理器醒着并在执行处理功能时用于分配处理功 能的流程图400的实施例。操作中,操作系统可以使得副处理器执行 系统空闲任务来监视副处理器使用率(单元402)。在一个实施例中, 副处理器确定是否副处理器的使用率水平低于一个特定阈值(单元 404)。在另一实施例中,主处理器确定主处理器的使用率是否低于一 个阈值。如果是,那么除了要由副处理器专门执行的处理功能外的所 有处理功能被分配到主处理器(单元408),并且副处理器被置于休 眠中(单元412)。如果超过了阈值,那么副处理器继续其功能,同 时主处理器监视温度状况(单元406 )。
如果超过了温度阈值(单元410),那么所有的处理功能被分配 到主处理器(单元408),副处理器被置于休眠状态(单元412)。所 述的温度可以是副处理器附近的温度传感器测量的温度,或者位于计 算机壳体内部其它关键位置的温度传感器测量的温度。否则,处理过 程在单元402继续。处理功能通过从副处理器的执行队列向主处理器 的执行队列移动任务来分配到主处理器。这些任务中的某些将被标记
为副处理器专有或者专门执行。这样的任务不会被主处理器执行,而 是当发生了特殊状况而再次唤醒副处理器时,为副处理器保留这些任 务。
本发明可以采取完全硬件实施例、完全软件实施例或者包含硬件 和软件二者的实施例的形式。在一个实施例中,本发明在软件中实现, 包括但不限于固件、驻留软件、微代码等等。此外,实施例可以采用 计算机程序产品的形式,可以从机器可访问的可读介质上取用,该介 质提供由图1所示的计算机或者任何指令执行系统使用或者结合其使 用的程序代码。为了说明的目的,机器可访问或者机器可使用或者计 算机可读的介质可以是包含、存储、通信、传播或传送程序供指令执 行系统、装置或设备使用或结合使用的任何装置。该介质可以是电子 的、磁的、光的、电磁的、红外的或者半导体系统(或者装置或者设 备)或者传播介质。机器可访问的介质的范例包括半导体或固态存储
器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储 器(ROM)、刚性磁盘和光盘。光盘的当前范例包括紧致盘-只读存 储器(CD-ROM)、紧致盘读/写(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统包括直接或通过系 统总线间接地耦合到存储器部件的至少一个处理器,如图1所示。存 储器部件可以包括实际执行程序代码期间使用的本地存储器108、大 容量(bulk)存储器和高速緩冲存储器102、 190,它们提供至少某些 程序代码的暂时存储,以便减少执行期间代码必须从大容量存储器检 索的次数。输入/输出或I/0设备(包括但不限于键盘、显示器、指示 设备等等)可以直接或通过接合I/O控制器耦合到系统。网络适配器 也可以耦合到该系统,以便使得数据处理系统变得能够耦合到其它的
备。调制解;i:有线调制解;器;以太网卡只是目前可用;网络适
配器的几种类型。
因此,本发明的另一实施例提供一种计算机程序产品,包括执行 下述功能的指令,即当在一个数据处理系统中执行这些指令时,使
得该系统实施一系列操作,用来在主处理器和副处理器之间分配处理 功能。该系列操作通常包括监视一个或多个特殊状况。如果一个或多 个特殊状况不发生,那么副处理器保持在休眠状态。如果一个或多个 特殊状况发生,则副处理器被置于唤醒的状态,并且处理功能被分配 到该副处理器以便由其实施。该系列操作还包括监视温度水平,并且 如果温度超过一个阈值,将副处理器置入休眠状态。该系列操作还可 以包括当副处理器未处于休眠状态时监视副处理器的使用率水平。如 果副处理器的使用率水平低于一个阈值,则副处理器被返回到休眠状 态。该系列操作还可以包括监视主处理器的使用率水平。当该使用率 水平超过一个阈值时,副处理器被从休眠状态唤醒来实施处理功能。 虽然本发明及其某些优点已经针对某些实施例进行了详细说明, 但是应当理解在不脱离后附权利要求限定的本发明的精神和范围的情 况下可以做出各种改变、替换和变动。虽然本发明的一个实施例可以 获得多个目的,但是并不是后附权利要求范围内的每个实施例都将获 得每个目的。此外,本申请的范围不限定于说明书中描述的处理、机 器、制造、物质的构成、方式、方法和步骤的特定实施例。本领域的 技术人员从此说明书可以容易地理解,根据本发明,可以使用实质上 实施与这里所描述的相应实施例相同功能或获得相同效果的处理、机 器、制造、物质构成、方式、方法和步骤。因此,后附权利要求旨在 包括这些处理、机器、制造、物质构成、方式、方法和步骤。
权利要求
1、一种多处理器系统,用来在主处理器和副处理器之间分配处理功能,该系统包括主处理器,用来实施除了专属于副处理器之外的处理器功能,该处理功能包括在未检测到特殊状况期间执行应用程序代码,以及在检测到特殊状况的情况下将副处理器置于唤醒状态;及副处理器,当检测到特殊状况并且该副处理器处于唤醒状态时,用来实施至少某些处理器功能,在未检测到特殊状况期间该副处理器保持在休眠状态,如果监视的温度超过一个阈值,处于唤醒状态的副处理器被置于休眠状态。
2、 根据权利要求l的系统,其中当副处理器处于操作中来实施 处理器功能时,主处理器和副处理器二者执行一个公共的操作系统。
3、 根据权利要求l的系统,其中该主处理器配置该副处理器。
4、 根据权利要求l的系统,其中该副处理器在未处于休眠状态 时执行应用程序代码。
5、 根据权利要求l的系统,其中该主处理器在未检测到特殊状 况期间执行系统空闲任务,并且其中当副处理器处于唤醒状态时该副 处理器执行系统空闲任务。
6、 根据权利要求l的系统,其中如果主处理器的使用率超过一 个阈值,则该特殊状况发生。
7、 根据权利要求l的系统,其中如果接收到要由主处理器执行 的浮点指令,则该特殊状况发生。
8、 根据权利要求l的系统,其中,在发生了特殊状况之后,如 果主处理器的使用率下降到低于一个阈值,则该副处理器返回到休眠状态o
9、 根据权利要求l的系统,其中,在该特殊状况发生之后,如 果温度状况超过一个阈值,该副处理器返回到休眠状态。
10、 一种用来在主处理器和副处理器之间分配处理功能的方 法,包括在存储器中存储可执行代码,该存储器可由主处理器和副处理器 二者访问;在未检测到特殊状况期间,由主处理器执行包括应用程序代码的 可执行代码;和响应于发生了特殊状况,由副处理器执行可执行代码,该副处理 器在未发生特殊状况期间保持在休眠状态,在发生了特殊状况的情况 下,该副处理器被置于唤醒的状态,如果温度超过一个阈值,该副处 理器被返回到休眠状态。
11、 根据权利要求io的方法,其中该特殊状况包括处理器使 用率水平超过一个阈值。
12、 根据权利要求10的方法,其中该特殊状况包括主处理器接收到一个浮点指令。
13、 根据权利要求10的方法,其中所述主处理器监视所述温度。
全文摘要
本发明公开了一种用来在主处理器和副处理器之间分配处理功能的系统、方法和介质。在一个实施例中,主处理器实施例行的处理职责,包括执行应用程序代码,而副处理器处于休眠状态。当认为主处理器的负荷过大时,副处理器被从休眠状态唤醒并被指定来实施否则将需要由主处理器实施的处理功能。如果系统中的温度升高超过一个阈值,则副处理器返回到休眠状态。
文档编号G06F1/32GK101105711SQ20071010881
公开日2008年1月16日 申请日期2007年5月31日 优先权日2006年7月13日
发明者蒂莫西·W.·吉, 马克·A·里纳尔蒂 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1