多芯架构中的资源管理的制作方法

文档序号:6655476阅读:227来源:国知局
专利名称:多芯架构中的资源管理的制作方法
技术领域
本发明涉及用于多芯架构中的资源管理的方法和装置。
背景技术
现今,合并复杂异机种的多芯架构的半导体装置被用于宽泛的各种系统和装置(从遍布的桌面计算机到最新近的现代电子装置,如移动电话、个人数字助理以及高速电信或网络切换装备)中。
无论打算使用何种计算机处理器,处理器制造商都持续努力增加当前处理器的性能,同时保持或减小它们的单位“成本”。
处理器的“成本”可以利用各种参数来度量。尽管在许多情况下,该成本将是纯粹的金融成本,但是,在许多应用中,尤其是在嵌入式处理器市场中,成本计算还包括诸如功耗、冷却要求、功效以及面市时间的辅助考虑。
任何处理器执行有用功能的绝对能力可以根据可实现的MIPS(每秒百万条指令)比加以描述,由此,任何处理器的“性价”比都可以根据例如MIPS/mm2、MIPS/$或MIPS/mW加以描述。
然而,实际上,不是全部指令都完成相同量的有用工作,因此,“纯粹的”MIPS额定值是不容易比较的。因而,虽然数字信号处理器(DSP)在移动电话的无线接口近旁可很好地适于解决数学运算密集处理,但是在运行在该移动电话的屏幕上运行的网页浏览器方面效率非常低下。有效的是,这意谓着处理器可以根据“应用可获”性价更有用地分类。
而且,为实现具体应用而必须使用以控制和定制处理器的编程(即软件)工具的低效,可以造成有效性能的额外减小。由此,可以从针对具体应用的处理器中提取的性能的最终等级可以看作为可用的或“可实现的应用可获”性价的等级。
在半导体公司为改进处理器应用可获性价的驱动下,已经开发出一款新处理器,即,多芯装置。多芯装置是由各种单元(核心)构建的高度集成的处理器,每个单元可以高度地专业化,以便为该处理器可以执行的应用的具体方面提供最大等级的有用性价。这种装置可以是“异机种的”(即,包括多个相异的核心),或者是“同机种的”(即,包括多个相似的核心)。
因为针对任何具体产品,集成不但包括多个处理核心,而且包括处理大部分(否则全部)硬件需求所需的存储器、IO以及其它系统“核心”,所以大部分多芯装置也可以被分类为芯片上系统(SoC)装置。尽管不是全部SoC装置都具有多个处理核心,但是术语多芯和SoC经常是可互换的。多芯SoC的一个良好的示例可以在许多移动电话中发现,其中会发现为运行无线接口而包括一个或更多个DSP的单个处理器,和在电话上运行用户应用的通用处理器。
摩尔定律使得能够出现多芯装置,摩尔定律声明可以安装到由硅制成的任何指定面积中的晶体管的数量因制造工艺的改进每十八个月就会翻番。因此,摩尔定律允许把更多单个晶体管安装到硅片上的任何指定面积中,使得在单片硅上制造更复杂的装置在技术上和经济上都是可行的。同样,由于缩减晶体管的尺寸,因而晶体管能够按更高的速度开关。
历史上,摩尔定律用于制造更快或就使用的硅而言成本更有效的尺寸更小的新一代处理器,而不对基础的架构进行任何大的改变(即,该改进是在制造工艺和装置的物理微观架构而不是装置的逻辑宏观架构上的改进)。
有效的是,趋向于多芯/SoC处理器可以被视为向更高等级的集成的宏观架构转换,这首先是从把1O(通信)功能性引入到硅片自身上开始的;现在,IO、存储器以及多个处理单元、DSP以及协处理器的功能性都可以集成到同一硅片上。这些处理器通过为特定类的应用提供最低成本、最高性能的处理器而会减小最终产品的制造成本。而且,通过将大多数系统组件集成到单个处理器上,可以减小部件数,因此,提高可靠性并降低功耗。
关键问题是可以怎样优化底层硬件在这种多芯装置中的使用,以便实现最高可能的“应用可获”性价。
处理器和系统设计者可以按许多方式影响应用软件内的并行(应用级并行)和指令流内的并行(指令级并行)。各种表现的不同之处在于,当系统在执行/处于“运行时”(动态系统)时,或者当应用软件被编译/处于编译时间(静态系统)时,在何处管理并行和是否管理并行。实际上,动态和静态系统与硬件加强和软件加强解决方案之间的划分不明显,来自一个门类的技术通常由另一个门类借用。
在单处理核心级方面,本领域很好地建立了多发处理器或并行操作来自单个流的许多指令的机器的概念。它们分为两种基本类型超标量处理器和超长指令字(VLIW)处理器。超标量处理器以按运行时(动态调度)或者按编译时间(静态调度)识别的时钟周期发出可变数量个指令。VLIW处理器发出固定数量个指令,形成超长指令字,这由编译器限定。典型的是,当系统的编程模型是标准的单处理器抽象时,编程者完全不知道这个过程。
过线程(Super-threading)和超线程(Hyper-threading)是在多个虚拟处理器中通过复用多个执行线程来仿真多个处理器的两种技术。典型的是,这些虚拟处理器共享统计上不由单个线程在全部时间使用的某些资源。过线程和超线程架构看起来像多个独立处理器,因此需要提交应用级并行,以便高效地工作。典型的是,处理器核心中的硬件限制把可以支持的线程的数量限制得大致小于100个线程。
而且,针对许多应用中的固有并行的开发,存在几种系统架构选择。多指令多数据(MIMD)机器(其中,各处理器执行其自己的指令并且对其自己的数据集进行操作,同时通过一些共享资源(例如存储器和/或互连)与其对等体协作)因它们能够解决宽泛的各种应用而变得流行起来。
随着性能需求的增加,嵌入式系统日益利用多芯MIMD架构,利用多个相异或相似的处理资源,以提供所需等级的硅功效。典型的是,尽管通常还可以发现更多应用型混合架构,但是,存在一类称为集中共享存储器架构(即,在多个处理资源之间共享单个地址空间(或其比例))的MIMD机器。
尽管MIMD阵列的各处理资源可以采用指令级并行(ILP),但是,MIMD机器也可以采用线程级并行(TLP),以实现底层硬件的潜在性能。相比于ILP(其按运行时(通过特定硬件)或编译时间(通过优化编译工具)识别),TLP是按应用设计时间在高级编程软件内限定的。
线程是已作为并行的高级表达在软件界内使用许多年的概念。线程限定工作的自主包,该自主包包括执行状态、指令流以及数据集,根据定义,其可以与其它线程同时执行。指令流的复杂性是不重要的。线程可以描述从简单的数据传递到复杂的数学变换的任何事情。
传统上,操作系统已经参与系统管理的设置,包括线程分配功能,这使得应用能够在多芯架构的特定配置上运行,而不需要软件工程师对底层设备架构有详细的理解。然而,针对单芯装置内的线程管理的现有软件技术不能容易地以连贯的方式适于多芯架构。迄今为止的解决方案需要逐设计地专门预定解决方案,并且通常已折衷处理了性能和可扩展性。
历史上,对于异机种的多芯系统(即,具有广泛相异处理资源的系统)的情况来说,已经采用了许多变化方法,以使得全异的处理资源能够一起工作。然而,广泛地说,这些可以分成两类,“代理服务器主机”和“协作”(也称为“端到端”)。对于前一情况来说,指定的通用主机处理器(其在基于总线的系统中通常被称为CPU)全面控制系统,代管系统上任务,并同步对诸如存储器和装置的资源的访问。这种系统监管典型地在操作系统核心中操作,并且与主机处理器上的系统应用和异步事件的处理竞争时间片。换句话说,这种通用处理器必须充任针对多芯装置上的全部处理资源的中央代理服务器线程管理器,并充任关键应用处理器。
当在这种配置中使用时,在准备好针对各处理资源执行的线程的队列可以自行开行执行之前(即,等待和定时队列),根据预定调度策略,即,它们的优先级(即,分派或就绪队列)和等待某一事件的线程的队列,或者另一线程的结果返回,通用处理器必须保持所述准备好针对各处理资源执行的线程的队列。这些在其它系统消耗(如在线程执行之前的处理器配置)之外。
无论何时例如,作为因线程完成而发出中断(因此释放已经完成该线程的处理资源)的结果,通用处理器将其处理时间从其当前执行的线程转向系统的管理(包括线程管理),通用处理器都必须进行现场(context)改变。
现场改变涉及将中止线程的当前进程存储到存储器中,取与为其它线程/处理资源进行服务的管理例程有关的指令,接着执行这些指令,包括任何配置要求。必须执行进一步的现场改变,以返回到原来的中止线程。这些现场改变典型地在接收到中断时执行,而在嵌入式系统中,这些中断针对在通用存储器上执行的应用代码来说通常是频繁且异步的。因此,系统整体上表现出显著的性能劣化。现场切换还对主机处理器高速缓存的功效具有负面影响(所谓的“冷高速缓存”效应)。
对于协作系统的情况来说,各处理资源运行操作系统的单独例程,所述单独例程的一部分使得能够实现资源间通信。因此,这种布置具有相对严格的架构划分,作为在对等体之间具体路由中断的结果。尽管这种类型的系统提供生成应用所需的原型(primitive),但是,实现的性能仍经受与操作系统核心活动相关联的频繁现场切换。
总之,针对在传统架构(通用处理器、软件执行程序等)中实现系统管理的当前设计和方法,对于复杂异机种的多芯架构的系统和线程管理来说是不合适的。的确,通用处理器在微观(指令集)架构级和宏观(高速缓存、寄存器文件管理)架构级方面都缺乏优化。尽管多芯处理器的互连提供了用于分立处理资源间操作的物理介质,但是不存在能够实现针对系统管理的相干方法的在全部处理资源间共享的系统范围的任务管理和通信层。在最糟的情况下,这可能导致与每个处理资源之间的每个可能通信通道相关联的明显不同的问题,其中的每个传统上都必须特别地在软件中单独解决。
因而,需要用于这些非常复杂的多芯架构的高效系统管理方法。软件抽象不能单独地提供复杂多芯架构的必需性能等级。

发明内容
根据本发明第一方面,提供了一种根据权利要求1所述的用于多芯处理器的资源管理和任务分配控制器。
在优选实施例中,根据权利要求1所述的控制器专用于资源管理和任务分配,并且不提供进一步的处理资源。
在本发明的实施例中,“传统的”主处理单元(即,在缺少本发明的资源管理和任务分配控制器的情况下执行任务分配和用作一个可用处理资源的一般处理资源)可以在系统开启时作为主控而开始,而在初始化序列期间资源管理和任务分配控制器采用来自MPU的主控状态。
本发明的实施例还提供针对异机种多芯处理器的功能性,该功能性使得能够向会被忽略的处理资源分配任务,以用于处理特定任务。这样,本发明的控制器允许更有效地使用可用资源。
通过提供一种单独的资源管理和任务分配控制器,本发明提供了针对多芯处理器的改进的任务分配和管理系统,使得能够在可用处理资源之间更有效地分配任务。该控制器把系统管理和异常处理的单元抽象成专用、高效、硬代码化的实施例。
本发明的实施例采用控制器客户端以及控制器,而不是实现“代理服务器代理”的作用。该控制器客户端可以采用硬件或软件的形式实现。这种布置有效地控制了底层系统的“运行时”活动。具体来说,该控制器基于预定分配参数的范围持续地(“贪心地”)保持系统线程状态和调度判决的正确性。
因此,与复杂性无关地,就在构成的组件之间划分工作与单个处理资源的自主性而言,优选实施例的架构提供显著的有益效果。全部处理资源变成从属装置,这些从属装置默认是“懒惰的”,即,它们等待资源管理和任务分配控制器在优先实施例中经由专用中断明确指示以执行任务。同样,在其它实施例中,在资源管理和任务分配控制器与处理资源之间可以使用基于轮询的通信。
在采用本发明的控制器的系统中,直接通过插针或者间接通过一个处理资源(即,IO装置)的外部操纵从架构外部发起的所有异步事件,都被优先路由至该控制器,在该控制器处,利用在“引导时间”配置的一组调度策略来对它们与目标处理资源上的当前执行任务进行比较。处理资源仅在与外部事件相关联的中断服务线程(IST)负责当前执行事务(线程或任务)时中断,由此消除了作为现有技术中的问题的在任何处理资源中的不必要的现场切换。而且,优选实施例的控制器客户端使得具有任意复杂性的处理资源能够对共享资源和控制器自身执行基本系统管理操作(生成线程、发出同步原型、删除线程、存储器复制等),避免基于指令集的机器通过代理服务器执行这些任务的必要。
在本发明的又一方面中,提供了一种包括这种控制器的多芯处理器。
本发明还延伸至根据权利要求40所述的在多芯处理器中控制并分配资源的方法。
此外,在所附加的从属权利要求中限定了本发明的优点和特征。


本发明可以采用许多方式进行实施,下面,参照附图,仅通过示例,对一些实施例进行描述,其中图1示出了包括根据本发明实施例的资源管理和任务分配控制器的系统的逻辑布局的示意性框图;图2示出了图1中的逻辑布局的一个示范实现的示意性框图,其中,实现本发明的控制器连同专用存储器装置和控制器客户端一起并入通用多芯处理器架构内;图3再次采用框图的形式示出了包括有图2中的单元的现代芯片上系统(SoC)总线型架构的示例;图4示出了与图1、2以及3中的控制器的外部连接的更详细的图;图5示出了图2和3中的存储器装置的更详细的图;图6示出了图2、3以及4中的控制器的内部构成的更详细的图;图7示出了如图2和3中所示的控制器客户端的示意性框图;图7b示出了在充任用于多个处理资源的代理服务器的单个控制器客户端的情况下的系统的示意性框图;图8示出了硬件控制器客户端的更详细的示意性框图;图9a和9b示出了一般描述符及其相关联的域;图9c和9d示出了线程描述符及其相关联的域;图9e和9f示出了调度程序层描述符及其相关联的域;图9g和9h示出了分派队列描述符及其相关联的域;图9i和9j示出了等待队列描述符及其相关联的域;图9k和9l示出了跳跃列表描述符及其相关联的域;图10示出了在线程描述符、系统管理控制器、处理资源与共享的系统存储器之间的典型的关系;图11例示了在图10中的布置中的间接的原理,其中,呈现了两个相异的处理资源;图12示出了图4中的控制器内的线程管理的典型的全貌图;图13示出了典型的等待队列结构;图14示出了典型的等待队列跳跃列表;图15示出了典型的定时器队列;图16示出了针对两个处理资源的典型的就绪队列结构;图17示出了典型的单个分派队列结构的示范实施例;图18示出了包括线程包的两层调度层级;以及图19示出了通常可以在通信系统中发现的示范简化队列结构。
具体实施例方式
图1示出了包括有根据本发明实施例的特征的系统框架10的逻辑图。框架10包括多个处理资源150,各处理资源相对于其它处理资源150可以是相似或相异的,并且各处理资源可以是任意复杂的。各处理资源共享经由互连部160对存储有共享数据的公共系统存储器140的访问。应当明白,当然不是全部系统存储器140都必需公用于全部处理资源150。
该系统框架还包括根据本发明实施例的集中任务分配和管理系统20。集中任务分配和管理系统20包括系统管理控制器130和连接至专用紧密耦合存储器190的专用紧密耦合存储器接口180。各处理资源150能够经由互连部115访问控制器130。要明白的是,在图1中的布置的实现中不需要特殊的互连策略(即,控制器130与各处理资源150通信所采用的布置,和相反情况下各处理资源150与系统存储器140通信所采用的布置);具体地,可以同等地采用点对点连接、中央系统总线以至管道传送架构,仅仅除了各处理资源应当能够与控制器130直接或间接地(即,经由其它处理资源等)通信的情况之外。
图2再次仅通过示例示出了实现图1中的逻辑布置的多芯处理器。图2中的多芯处理器采用各经由系统互连部160相连接的多个处理资源150。系统互连部160又经由输入接口100和输出接口110而与系统管理控制器130通信。在图2中的示例中,系统互连部160被设置为传统的中央总线,其将各处理资源150相互连接并将各处理资源150与控制器130相连接,并且还将各处理资源150与诸如系统存储器140的共享系统资源相连接。与存储器140的连接可以通过多个当前可用的接口技术中的任何一种来实现。该存储器可以由当前可用的中央计算机存储器技术(例如,静态随机存取存储器(SRAM),或双倍数据速率随机存取存储器(DDR RAM))中的任何一种组成。
参照图2,所述多个处理资源150中的每个都具有被设置成接收来自中央控制器130的控制信息并且根据接收的控制信息来管理处理资源150的相关联的系统管理控制器客户端120。下面,结合图7和8,对控制器客户端120的功能和用途进行更详细的描述。各处理资源还具有相关联的互连代理170,以经由系统互连部160与控制器130通信。互连代理170向控制器客户端120提供一般接口,该一般接口独立于系统互连部160上使用的基础互连协议,即,其提供在系统互连部160上使用的通信协议与控制器客户端120使用的通信协议之间的协议转换。由于互连代理170的使用,本发明实施例中的控制器客户端120可以与当前可用的任何系统互连协议一起使用。
整体上,多芯处理器被设置成执行目标应用,该目标应用可以分解为许多单个任务,即,所谓的线程。根据参数(包括但不限于所关注的线程的优先级、各处理资源150的可用性以及特定处理资源对于执行特定线程的适合性)的数量,通过控制器130向各处理资源150分配一合适的线程。下面将再次对其进行更详细的描述。
然而,要明白的是,系统管理控制器130及其专用存储器190的增加并不另外要求重新设计处理器10的布局。
图3中示出了一种具体布置,其采用框图的形式示出了典型的芯片上系统(SoC)架构,并且其例示了在具体应用中可以受控制器130的资源管理的各种处理资源。应当注意到,处理资源可以具体具有诸如DSP的相对一般的性能,或者可以具有诸如外围IO的相对受限的功能性。
系统管理控制器接口组图4示出了控制器130及设置在控制器130的外围的与其相关联的接口组200-250。
系统控制组200包括为确保系统管理控制器130的正确操作所需的两个系统输入信号。这两个系统输入包括连接至系统时钟的CLK输入,和RST输入。来自系统管理控制器130的全部输入信号都与系统时钟同步,并且针对系统管理控制器130的全部输入信号都是利用该时钟进行采样的。RST输入是同步复位信号,用于对系统管理控制器130进行复位。
外部中断组210由源自系统管理系统外部的一组同步外部中断组成。这些信号在它们接合至系统管理控制器130外围之前必须与CLK同步。在外部中断组210中的信号可以从例如与外界的输入接口来驱动,或者经由插针直接从多芯处理器外部驱动。外部中断输入的数量在多芯处理器10设计阶段限定。
内部控制组220由针对各控制器客户端120的单个同步中断及其关联处理资源150组成。因此,信号组的数量典型地与系统内的处理资源150的数量相对应,并且将在多芯处理器10设计阶段限定。内部中断信号指示准备执行的线程,并且被指配给与控制器客户端120相关联的具体处理资源150。
紧密耦合存储器接口组180将系统管理控制器130连接至其自己的专用紧密耦合存储器资源190。图5示出了专用紧密耦合存储器190的典型结构。地址路径和数据路径的宽度在多芯处理器10设计阶段限定。专用紧密耦合存储器接口包括存储器地址总线191、存储器读取数据总线192、存储器写入数据总线193以及写入使能信号194和读取使能信号196。
假定安装的存储器是同步SRAM装置。根据目标应用的需要,专用紧密耦合存储器190包括整数数量个控制器存储器单元195,这些是在多芯处理器10设计阶段限定的。在当前优选实施例中,各控制器存储器单元195消耗256比特存储器空间。还是在当前优选实施例中,控制器支持最多65536个控制器存储器单元(即,16Mb存储器)。尽管如下面所述的队列描述符消耗控制器存储器单元195,但是,在典型的系统中,所需的控制器存储器单元195的数量将由线程支持需求支配。例如,能够在系统管理控制器130内同时支持400个线程的系统将需要大约128Kb的安装存储器。
图4中的互连接口组230与多芯处理器10和互连代理170中使用的所选互连协议一致,这是在多芯处理器设计阶段限定的。
控制器子模块描述和功能图6示出了系统管理控制器130的主逻辑组件。控制器130的功能性在四个主要的内部并行处理子模块中划分,并执行下列功能1、线程输入管理器(TSIM)300,其被设置成,将空闲控制器存储器单元195的列表保持在专用紧密耦合存储器190内,并且监控控制器存储器单元195恢复。
2、线程同步管理器(TSPM)310,其被设置成,将等待列表和定时器队列保持在专用紧密耦合存储器190内,并且在线程之间执行同步,并且在需要时,对专用紧密耦合存储器190内的就绪队列结构执行线程的升级。线程同步管理器310通过在专用紧密耦合存储器190内插入和提取等待线程描述符来保持等待和定时器队列结构的完整性。
3、线程输出管理器(TSOM)320,其被设置成,将就绪队列结构保持在专用紧密耦合存储器190内,并且分派在专用紧密耦合存储器190内的针对各处理资源150的队列。线程输出管理器(TSOM)320还被设置成,生成向控制器客户端120发送的中断220。在专用紧密耦合存储器190内,通过对保持在控制器存储器单元195中的线程描述符进行插入和提取来执行对就绪队列结构的完整性的保持。
4、线程调度管理器(TSSM)330,其被设置成,在设置在专用紧密耦合存储器190内的就绪队列结构内提供针对各处理资源150的调度判决。
另外,多个辅助处理子模块提供支持以下功能5、线程存储器管理器(TSMM)340,其被设置成,提供对安装的专用紧密耦合存储器190的集中访问,包括相互独占和锁定。
6、中断管理器(TSIC)350,其被设置成,将引入的外部系统中断转换成内部同步原型。
7、定时管理器(TSTC)360,其被设置成,提供针对各处理资源150的用于同步目的和监控定时器功能性的定时器功能。
8、系统接口(TSIF)380,其被设置成,提供对多芯处理资源150的互连接口连接和配置以及运行时访问。
下面,对系统管理控制器130内的上述主要和辅助处理子模块的交互进行详细的描述。
各子模块呈现了针对其它子模块的功能集,使得各子模块能够指示其对端对它们各自在专用紧密耦合存储器190内保持的结构执行操作。在控制器软件应用编程接口(API)处接收到类似命令时,由具体的子模块调用功能。
线程输入管理器功能线程输入管理器300提供针对系统管理控制器130内的其它子模块的三个公共功能。
空闲列表状态(FreeListStatus)功能,其返回控制器存储器单元195空闲列表内的单元的头指针和数量。空闲列表是当前未使用的控制器存储器单元195的列表。在控制器130软件API处接收到类似的命令时,仅可以由系统接口380调用这个功能。
入栈空闲索引(PushFreeIndex)功能,其用来将释放的控制器存储器单元195索引向后推入到空闲列表上。仅可以由线程调度管理器330调用这个功能。
出栈空闲索引(PopFreeIndex)功能,其用来将空闲控制器存储器单元195索引从空闲列表弹出。典型地从系统接口380内的API调用服务例程调用该功能。
线程同步管理器功能线程同步管理器310提供七个针对系统管理控制器130内的其它子模块的公共功能。
响应于控制器130软件API接收到的类似的命令,仅可以由系统接口380调用下列五个功能。
入栈等待描述符(PushPendingDescriptor)功能,其被用来在引导过程期间向等待队列描述符的列表添加等待队列描述符。
入栈线程(PushThread)功能,其被用来在运行时期间向指定等待队列增加附属线程。
设置定时器状态(SetTimerStatus),其设置定时器队列内的单元的头指针和数量。
获得定时器状态(GetTimerStatus)功能,其返回定时器队列内的单元的头指针和数量。
设置等待状态(SetPendingStatus)功能,其设置等待队列描述符列表的状态。
获得等待状态(GetPendingStatus)功能,其返回等待描述符队列内的单元的头指针和数量。
同步事件(SyncEvent)功能,其被用来向指定等待队列发出同步原型。由线程中断管理器350和系统管理控制器380调用这个功能。
时间事件(TimeEvent)功能,其被用来向定时器队列发出基于定时器的同步原型。仅由时间管理器360调用这个功能。
线程输出管理器功能线程输出管理器320提供五个针对系统管理控制器130内的其它子模块的公共功能。
入栈功能在就绪队列结构内设置线程描述符。可以以加快处理速度(例如,针对处理中断)的高优先级来调用该方法。如果线程是独立(立即就绪)的,则调用将从系统接口380进行,而如果线程描述符最初具有相关性,则调用从线程同步管理器310进行。
响应于在控制器130软件API处接收到类似的命令,可以仅由系统接口380调用下列三个功能。
获得分派队列状态(GetDispatchQueueStatus)功能,其返回分派队列列表内的单元的头指针和数量。
设置分派队列状态(SetDispatchQueueStatus)功能,其设置分派队列列表内的单元的头指针和数量。
分派队列出栈(DispatchQueuePop)功能,其从分派队列的头部弹出线程描述符。
分派工作队列入栈(DispatchWorkQueuePush)功能,其将分派队列推入到线程输出管理器320工作队列上。可以仅由线程调度管理器330调用这个功能,线程调度管理器330使用这个功能来向输出管理器320通知分派队列内作为调度更新的结果所需的改变。
线程调度管理器功能线程调度管理器330提供针对设置在系统管理控制器130内的线程输出管理器320和系统接口(TSIF)380的三个公共功能。
入栈推入工作事件(PushPushWorkEvent)功能,其在线程输出管理器320将线程描述符增加到就绪队列结构之后立即由该线程输出管理器320调用。
入栈弹出工作事件(PushPopWorkEvent)功能,其在线程输出管理器320从就绪队列结构中去除线程描述符之后立即由该线程输出管理器320调用。
空闲索引(FreeIndex)功能,其使得控制器存储器单元195的释放能够与在线程调度管理器330内进行的调度活动恰当地同步。在控制器130软件API处接收到类似的命令时,或者作为在线程输出管理器320内的出栈操作的结果,可以发出该调用。
控制器客户端如前所述,术语处理资源150应用于可以执行指令的任何资源,而与指令可以是如何初步的无关。因此,也包括具有诸如输入/输出模块的固定功能的资源。根据处理资源150的类型,系统互连部160与处理资源150之间经由系统管理核心客户端120的连接可以是单向的,或者是双向的。
图7示出了与系统管理控制器130一起使用的控制器客户端120的示范示意性框图。
对于合适的处理资源150,例如,通用处理器或数字信号处理器,典型地采用软件的形式实现控制器客户端120。然而,如果处理资源150具有受限的功能,则控制器客户端120可能需要硬件组件。
当在系统互连部160与处理资源150之间使用硬件组件时,控制器客户端120仍利用相同接口连接至处理资源150。也就是说,控制器客户端向互连代理170呈现与处理资源150针对控制器客户端的接口相同的接口。在一些情况下,例如,在输入/输出装置的情况下,恰当的是,把进入到处理资源内的数据路径处理为明显与从处理资源出去的数据路径不同。
除了主接口之外,控制器客户端120还提供出带接口(out of bandinterface),以用作针对运行时和调试事件的输出。如果使用软件控制器客户端120,则可利用标准中断来调用恰当的服务例程。
操作的控制器客户端模式各控制器客户端120完全受中断驱动。在接收到来自控制器130的内部中断的时候,控制器客户端120从与特定处理资源150相关联的分派队列的头部弹出线程描述符,该分派队列保持在专用紧密耦合存储器190中。接着,将线程描述符内的唯一引用用于读取来自主存储器资源140的进一步的线程控制信息、线程控制模块(TCB)。在TCB内包括的信息可以是下列任何一种1、控制器客户端120配置内容。这个信息可以用于配置控制器客户端120系统资源使用策略、数据呈现模式等。
2、处理资源150配置内容。这是为准备用于执行具体线程的处理资源150所需的信息。这个信息可以包括从该线程的先前部分执行起的恢复或诸如音频编解码器的专用程序硬件加速器的配置。
3、指令内容。在固定功能硬件加速器的情况下,“指令”将隐含在目标化的硬件处理资源150中,例如,处理资源150是输出模块时的输出指令,并且任何需要的专用程序或配置将容纳在配置信息内。在软件控制器客户端120的情况下,这将典型地作为针对与线程相关联的功能代码的指针。
4、数据内容。这个内容可以限定在系统存储器140中的开始地址或多个地址,和线程可以进行操作的数据范围。
5、控制器客户端120后处理内容。这个内容确定在完成线程执行之后控制器客户端120的动作。
控制器客户端120的操作存在三个明显的阶段1、配置阶段,其中,针对特定线程的执行而准备处理资源150和控制器客户端120。在最简单情况下,配置阶段为空值。
2、执行阶段。其中,正在执行线程,并且控制器客户端120可以提供数据和/或监控资源利用。
3、完成阶段。处理的完成可能导致没有动作、另一线程的生成、同步原型的发出或线程生成和同步的组合。而且,控制器客户端120还可能被要求设置或更新调度程序测度并终止线程。在线程的执行期间需要进一步的存储器以存储结果的情况下,控制器客户端120还必须执行这个方法。
在单个硬件控制器客户端120b在有效时段期间完全使用可用系统互连部160带宽的情况下,最优化的解决方案允许控制器客户端120b作为针对多个硬件处理资源150的代理服务器操作。图7b中示出了这种布置。如前述情况,代理服务器控制器客户端120b受中断驱动,然而,尽管在前述示例中,仅从控制器130发出单个中断,但是在代理服务器控制器客户端模型中,存在针对各处理资源150的中断。根据从控制器130接收到的中断的索引,代理服务器控制器客户端120b在识别的处理资源150上执行相同的步骤。在需要系统互连部160使用策略的代理服务器控制器客户端模型中,硬件适配器120c保持在处理资源150与系统互连部160之间。
如前所述,可以采用软件的形式实现控制器客户端120。在这种情况下,控制器客户端120的一些功能性,例如,共享的资源使用策略,将典型地使用可能已经呈现在处理资源150硬件中的现有硬件组件(例如,存储器管理单元(MMU))。
因此,软件控制器客户端120架构和实现是针对处理资源150特定的。
根据相关联的处理资源150的特性,硬件控制器客户端120还可以具有专用程序需求。下面的部分描述适于多数情况下的一般架构。
硬件控制器客户端的一般示例图8中示出了硬件控制器客户端120的基本结构。控制器客户端有限状态机(FSM)500在设计的功能中心处。该有限状态机(FSM)500可以在全部三个阶段期间都是有效的。通过来自控制器120的中断220激活控制器客户端FSM 500。
首先,控制器客户端FSM 500控制系统互连部160,以从共享存储器资源140读取TCB,该TCB包括针对其自己的指令的引用。在配置阶段期间,控制器客户端120可以控制处理资源接口,解释配置命令并且将它们转换成向处理资源150发出的写入周期。而且,控制器客户端120配置其自己的资源策略。从配置状态到执行状态的转换的方式是针对处理资源150特定的,但可以通过显式的执行原型或仅通过进入数据传递状态来标志。
从控制器客户端120的角度来看,最简架构在处理资源150与系统侧具有相同的接口协议。在这种情况下,在执行阶段期间,将处理资源150读取和写入周期简单地交叉映射到系统接口,而在合适情况下进行校验。
在系统到处理资源510和处理资源到系统520的路径中,最简单的控制器客户端120实现需要FIFO型接口。在这种特性的控制器客户端120的执行阶段期间,可以通过消息或流式传输模式向处理资源150提交数据。整个数据集在处理之前本地积聚在控制器客户端120内的消息模式,造成可能便于更复杂互连仲裁器的更粗模块互连行为。数据直接从系统存储器流式传输到处理资源150中的流式传输模式呈现更加硅片有效的解决方案,该解决方案需要更仔细地考虑信号交换(hand-shaking)并且展示出细致的互连事务以及与互连性能的紧密耦合。
通过对向处理资源150提交数据进行测量,可以推断从执行阶段到完成阶段的转换,或者可以由处理资源150自身明确地信令指示从执行阶段到完成阶段的转换。在完成阶段期间,控制器客户端120再次从最初的线程控制模块提供的指令集起执行。
注意,在一些情况下,恰当的是,把进入处理资源150的数据路径(例如,输入/输出装置)和从处理资源150出去的路径处理成明显不同的。相反,在一些情况下(举例来说,如DSP的算术加速器),自然的是,把数据的消耗方和产生方耦合在同一控制器客户端120框架内。
为了提供处理资源150与其它系统资源之间的去耦等级,也可以通过控制器客户端120设置多个另外的措施a)通过利用比较器530和比较地址寄存器540,可以针对由基址和偏移限定所限定的期望行为校验处理资源150生成的地址。
b)利用减法器550和偏移地址寄存器560,可以偏移处理资源150生成的地址,使得处理资源150能够具有针对任何指定线程的地址映射的标准化视图,典型的是,标准化的循环地址(arund address)0×0。
对象在系统管理控制器130内使用的数据类型的实例被分成公共可见性(从系统可见并由系统整体操纵)和私有可见性(仅在系统管理控制器130内可见并仅由系统管理控制器130子模块操纵)。为了确保设计在多个端应用上的可移植性,将全部线程、队列以及集中的队列描述符存储在利用公共基类的专用紧密耦合存储器190、控制器存储器单元195内。
控制器存储器单元各控制器存储器单元195可以表示下列7种描述符类型中的任一种1、空闲列表单元。这个单元针对任一其它描述符类型的使用都是空闲的。不需要用户初始化或运行时操纵。
2、线程描述符(TD)。其是表示应用/OS线程的数据结构。这个描述符可以存在于专用紧密耦合存储器190中的等待队列、就绪队列或分派队列中。不需要用户初始化,但是需要运行时操纵。
3、调度程序根描述符(SRD)。其是调度程序层级的顶描述符。需要用户初始化,但是不需要运行时操纵。该根描述符没有父系,而子系可以是SSTD、DSTD或TD中的任一种。
4、静态调度程序层描述符(SSTD)。其是静态调度程序层描述符,其父系可以是SRD,或者是另一SSTD。SSTD的子系可以是另一SSTD、DSTD或TD中的任一种。
5、动态调度程序层描述符(DSTD)。其是动态调度程序层描述符。不需要用户初始化,但是需要运行时操纵。DSTD的父系可以是SRD,或者是SSTD,但是DSTD可以仅具有TD子系。
6、分派队列描述符。这种类型的描述符描述这样的线程描述符的列表,即,其在等待来自相关联的处理资源150的出栈操作。需要用户初始化,但是不需要运行时操纵。
7、等待队列描述符。这种类型的描述符描述这样的线程描述符的列表,即,其在等待同步事件。需要用户初始化,但是不需要运行时操纵。
在下列部分中更详细地描述这些描述符。
图9a到91示出了控制器存储器单元195的各种形式及它们自己。
线程表示如果描述符需要初始化或运行时操纵,则通过控制器130 API完成操作。集中的任务分配和管理系统被设计成确保实时交互对于硬件实现是足够合适/简单的。
图10示出了在线程描述符、系统管理控制器130、处理资源150与共享的系统存储器140之间的典型关系。各线程原型包括唯一引用,pReference。这个引用不通过系统管理控制器130解释或修改。pReference提供了针对系统存储器140中限定待执行任务的数据结构的指针。典型地,其是控制器客户端控制模块125,并且至少包括下列元素函数指针(如图10中所示的处理资源指令模块145)、堆栈指针以及变元指针(如图10同时示出的数据模块135)。另外,可以限定提供遍及共享系统资源的带内配置或安全性的域。
然而,根据应用和/或目标处理资源150,可以改变控制器客户端控制模块125的复杂性。具体地,注意,可以包括进一步的间接等级,其在指定合适的“控制”指令代码和相对应的“数据路径”代码时,可以使全异的处理资源150能够在特定情况下对相同数据执行相同的功能。
图11示出了调度层级负载对两个相异的处理资源(图11中的类型I和类型II)150a和150b上的任务进行平衡的示例。除了在此具有与各类处理资源的相异的指令集所需的特定指令流相对应的针对各类处理资源的指针之外,pReference域(在针对这个层级排队的线程描述符内)如前引用控制器客户端控制模块125。控制器客户端120根据控制器客户端控制模块125内的标志选择恰当的指令流(指令模块145a或145b)。
这个特征可以是例如结合特定处理资源的下电特征而有用的。在针对指定任务的最优处理器下电的情况下,希望次优处理器执行任务,而不是招致代价高的重新引导周期。而且,在例外的负载下,可以使得能够实现轻负载的通用处理器,以例如减轻重负载的DSP上的负担。
当处理资源150准备好处理线程时,其从与所述处理资源150唯一地相关联的合适分派队列出栈。出栈操作返回以下对象,其包括pReference,其是导致调度事件的调度程序测度;和包括对线程是否因超时或同步原型而就绪的指示的一组标志。用于线程描述符的控制器存储器单元195自动地返回到由将来的线程描述符使用的空闲列表。
公共对象这个部分描述系统通过控制器130 API可见的对象。典型地,这些对象由集中的任务分配和管理系统按运行时操纵,该任务分配和管理系统包括控制器130和客户端120以及它们的相关联的处理资源150。
运行时控制器130 API使得应用能够引入新的线程、引入新的动态调度程序单元、发出同步原型、弹出调度的线程、推入被抢先的线程或去除线程。
图12示出了系统管理控制器130内的线程管理的典型全貌图。
线程原型图9c和9d中示出了线程原型的格式。根据其依赖性,可以将线程描述符设置在等待队列结构中或直接设置到就绪队列结构中。如果要把线程设置在等待队列结构中,则应用必须限定线程的依赖性。对外部事件的依赖表明其自身为依赖性引用。控制器130不解释该依赖性引用;其被保持以与到来的同步原型比较,来确定何时将线程描述符转到就绪队列结构中。
对于从属线程来说,可以结合空依赖性引用指定超时,这个措施可以用作基于线程硬件的定时措施。与依赖性引用无关地,超时导致在特定时间调度线程。
根据使线程进到就绪队列结构的同步事件(定时器或原型),来标识线程。
同步原型同步原型与等待队列连接,并且可以使一个或更多个线程描述符从等待队列结构转至就绪队列结构。
各同步原型包括唯一的引用,其被与存储在标识的等待队列中的各线程描述符内的依赖性引用比较。按线程原型标识的优先级的顺序继续比较。
根据其类型,同步可以激发等待队列内的最高优先级匹配线程描述符,或者全部匹配的线程描述符。而且,特殊广播原型激发全部等待对列内的全部匹配的线程描述符。
中断处理中断服务线程(IST)方法提供使异步事件施加在处理资源150上的负载最小化的有价值方法。而且,在基于本发明的系统中的加速实时响应使得能够以较少的系统修改实现IST的更普遍的使用。
控制器130从控制器外围上的外部中断输入210自动生成同步原型。在接收到这些中断同步原型的时候,将等待队列内的预配置中断服务线程描述符推到就绪队列结构。
应用通常在系统初始化时,并且也在与相关联的中断服务线程的各次执行内,配置与外部中断210相关联的线程描述符。
这个措施有效地消除了针对系统内的任何其它专用中断服务处理资源150的需要。而且,其通过相同的优先级结构并根据用于全部处理器任务的相同策略处理这些外部中断210,从而消除了针对在已经执行更高优先级任务的处理资源内进行现场(context)切换的需要。通过利用正常抢先例程将当前执行的线程推回到就绪队列中的能力,来支持任意数量的嵌套中断。
采用类似的方式处理基于定时器的中断(监控和定期事件)。基于时间的任务(定期的或只有一次的)必须插入到定时器队列中,并且按与针对具有超时依赖性的线程类似的方式来处理。根据设计,这个方法排除了具有无用处理需求的基于时间的异常。
中断优先级可以被设置成,使得中断例程可以为获得快速响应时间而抢先当前执行的任务。
私有对象典型地,在引导时间,即,在下电周期之后的系统初始化期间,配置私有对象。处理资源150在运行时期间几乎不与内部对象直接交互。
内部对象是主队列结构。系统管理控制器130管理四个主队列类型等待队列、定时器队列、就绪队列以及分派队列。
在系统管理控制器130内存在额外的辅队列,以便于内部操作。队列之间的线程描述符移动仅以指针操作发生。从不复制线程描述符。
等待队列结构可以通过同步事件或定时器事件将线程从等待队列结构升到就绪队列结构。线程可能对上述两类事件都敏感,或者只对其中的一个敏感。在其中线程对两者上述两类事件都敏感的情况下,线程呈现在等待队列和定时器队列中。
等待队列保持等待同步事件的从属线程。通过同步原型从这些结构中去除线程,或者通过定时管理器360内部生成的定时器事件从处理资源150去除线程。可配置的多个等待队列可用于应用编程器,以支持多个争用范围和中断服务线程;必须根据各等待队列内的单元的优先级处理它们。针对根据优先级的处理,存在两种另选例,插入排序和提取排序。插入排序限定这样一过程,即,通过该过程按严格的优先级顺序存储等待列表,并且根据新线程的优先级将它们插入到该列表内的一位置处。提取排序对插入新线程的位置进行任意的选择,并且在同步之后对合格的线程描述符执行基于的优先级排序。本发明的优选实施例采用插入排序技术。
图13示出了等待队列的典型结构。按严格的优先级顺序存储条目。可以通过使用跳跃列表加速完成新线程插入的速度,并且图14示出了典型的等待队列跳跃列表。
如前所述,线程可以被阻止,以等待同步或定时器事件。一些线程专门等待同步事件,而类似地,一些线程专门等待定时器事件。在各情况下,线程将仅呈现在单个队列中。各线程包括名义上与等待队列和定时器队列相关联的两组指针。在这些情况下,设置的定时器队列和等待队列指针分别是备用的。跳跃列表可以利用这些备用指针,例如,如果线程没有出现在定时器列表中,则这些指针可以再用于指示在等待队列中可能的向前跳跃。这使得当迭代地接近针对新从属线程的正确插入点时,另外的顺序搜索能够跳过线程描述符块。
一个另选例是跳跃节点描述符,并且在图9k中示出了其一个示例,以及其相关联的域(图9l)。跳跃节点描述符可以根据预定测度周期性地插入到等待和定时器队列结构中。根据在跳跃节点描述符之间或参与的线程描述符之间的限定最大观察数量个线程描述符,插入跳跃节点描述符。跳跃节点描述符可以同时形成等待队列和定时器队列跳跃列表的一部分。
必须根据各新的从属线程的优先级插入各新的从属线程。这个过程典型地通过遍历跳跃列表开始,直到新线程的优先级高于跳跃列表节点的优先级为止。此后,将按逐线程描述符的方式从该跳跃列表节点继续搜索,直到发现正确的插入点为止。这使得另外的线性搜索在针对新从属线程导向正确的插入点时能够跳过等待线程块。
同步事件具有三个明显不同的类型单播同步事件对在指定等待队列中发现的第一(最高优先级)合适的从属线程触发状态转换。
多播同步事件对在指定等待队列中全部合适的从属线程触发状态转换。
广播同步事件对在所有等待队列中全部合适的从属线程触发状态转换。
如图9i和9j所示,等待队列描述符限定等待队列。等待队列描述符在系统初始化期间被设置一次,并且消耗一个控制器存储器单元195。等待队列仅包括从属线程描述符和跳跃列表节点。
定时器队列结构设置单个系统宽定时器队列,其存储等待超时事件的线程描述符。
图15示出了定时器队列的示范实施例。
跳跃列表还被用于加速如上所述的将线程插入到定时器队列结构中。然而,在这种情况下,对于跳跃列表使用的是仅具有时间相关性(如果存在)的线程。
定时器队列描述符存储在寄存器内,使得能够在定时器队列的头部与当前时间之间进行同时比较。这极大地减小了定时器信号对存储器带宽的影响。
就绪队列结构就绪队列结构保持准备执行的线程。这些线程利用独立的线程原型生成,或者它们已经接收到它们所依据的同步原型。已经预先从等待队列结构转换出同步的线程。
就绪队列结构可以包括调度程序节点描述符和独立且同步的线程描述符。尽管允许线程描述符和动态调度程序层描述符实时进出,但是,这种结构很大程度上是在系统初始化期间限定的。
就绪队列可以针对指定处理资源150或一组处理资源150调度线程。这使得在保持把特定任务定位于特定处理资源150(例如,硬件加速器或IO装置)处的能力的同时,能够实现横跨多个处理资源150的负载平衡。
图16示出了针对两个处理资源150的典型就绪队列结构。注意,动态调度程序层2可用于两个根调度程序层。这使得系统管理控制器130在与根层1和2相关联的处理资源150之间的动态层2之下能够负载平衡线程。
调度程序层调度程序层限定为调度线程描述符而使用的层级。各调度程序层典型地限定调度算法、用于确定调度判决的一些测度和子单元的列表,这些子单元可以是进一步的调度程序层或线程描述符。存在三种类型的调度程序层描述符根、静态以及动态。图9e和9f示出了调度程序层存储器单元的格式。
根调度程序描述符与分派队列具有一对一映射的关系。它们表示就绪队列结构中的最后结点。调度程序根描述符在系统初始化期间被配置并且永远存在。
静态调度程序描述符存在于调度程序层级中的根节点之下。静态调度程序描述符的父系可以是其它静态调度程序描述符或根描述符。它们根据它们的父系的限定调度程序算法和它们的调度程序测度与同胞节点竞争。静态调度程序描述符在系统初始化期间被配置并且永远存在。在操作期间,系统管理控制器130根据选择的调度算法(例如,循环调度)保持调度程序测度。
动态调度程序描述符存在于调度层级中的根之下并且可能存在于静态节点之下。动态调度程序描述符的父系可以是静态调度程序描述符或根描述符。它们根据它们的父系的限定调度程序算法和它们自己的调度程序测度与同胞节点竞争。动态调度程序描述符可以在任何时间配置,并且可以在指定情况下退出。这使得系统与可能完全静态设置相比能够支持更多数量的调度层。系统管理控制器130通过利用似然性(尽管在全部时间使用了大量和各种线程和动态调度程序层,但在有限时段,暂态需求较小)来实现这个目标。例如,在具有安装的支持最多4000个动态单元(线程和动态调度程序描述符)的存储器的联网系统中,可以及时在任何时刻支持16000个连接,来自全部连接空间的仅一小部分的数据单元将驻留在控制器中。因为如果动态调度程序描述符没有出现,则其必须在添加子系线程描述符之前生成,所以以性能上的小损失为代价而实现了这种灵活性。
在操作期间,系统管理控制器130根据选择的调度算法保持调度程序测度。在特定情况下,动态调度程序描述符将被释放回控制器存储器单元195空闲列表。这可通过把要处理的最后线程的pReference存储在动态调度程序层描述符内的该层内来实现。控制器130 API支持控制器存储器单元195的轮询,以确定动态调度程序描述符在随后的类似线程之间是否持续。
分派队列分派队列将调度的线程描述符保持在等待来自相关联的处理资源150的服务的先入先出(FIFO)队列中。在当前优选实施例中,允许最多32个分派队列。在图9g和9h中示出,通过分派队列描述符限定分派队列。在系统初始化期间配置分派队列描述符。
将线程描述符从就绪队列结构转至分派队列结构的过程是在硬件中执行的,并且不需要控制器130 API交互。
图17示出具体实现本发明特征的典型单的一个分派队列结构的示范实施例。分派队列描述符限定一全阈值。分派队列长度仅被允许超过正在调度线程包或发生抢先线程入栈的全阈值。
通过处理资源经由控制器130 API调用的出栈操作,从分派队列中去除单元。
在分派队列描述符中包括优先级域。当线程从分派队列弹出时,优先级域填充有现在执行的线程的优先级。进一步的API调用使得优先级能够被执行处理器复位成另一值,以便避免优先级倒置。优先级倒置涉及不同优先级的至少3个线程,描述了同步需求和调度需求之间的冲突。优先级倒置允许低优先级线程无限期地阻止高优先级线程。例如,低优先级线程锁定共享的资源,接着被高优先级线程抢先。接着,高优先级线程阻止低优先级线程锁定的资源。因为高优先级线程现被阻止,正常情况下,低优先级线程将继续,要是没有第三介质线程(其独立于锁定的资源,并且现在可以运行)的话。低优先级线程从未获得机会,以解锁共享的资源,因此,无限期地阻止高优先级线程。“优先级最高限度”协议意指,当线程拥有共享的资源时,其按指定的优先级运行。这确保了如上所述的“低”优先级线程在拥有与高优先级线程共享的资源时,呈现“高”优先级。
线程包描述源于同一调度程序层的一组线程描述符。在强制更新调度确定之前,参数出现在限定可以从就绪队列的层转换至分派队列的线程的数量的各调度程序描述符中。通过利用这个能力,并且设置调度程序层共享公共资源,可以向处理资源150提交与其它情况下相比表现出显著更高的高速缓存本地性的线程块,由此减小高速缓存缺失并增加系统性能。
图18示出了根据本发明实施例的包括线程包的示范两层调度层级。距离根层最远的层,即,子层,利用了FIFO调度算法。根层调度程序算法被设置为循环。在实施例中,各FIFO队列内的单元相对于同一队列中的其它成员表现出高等级的高速缓存本地性。
图18中的(a)示出了这样的调度结果,其中子层线程包限制被设置成1。该结果被理想地交错。这个方案针对各队列呈现最小等待时间;然而,它也是最少存储器感觉的(即,最可能表现出差的高速缓存性能)。在各调度的线程之后必需进行现场切换。如果根层与使用高速缓存的处理资源150相关联,则强制高速缓存缺失可能影响系统性能。
图18中的(b)示出了这样的调度结果,其中子层线程包限制被设置成4。调度程序表现出更粗的更新特性,这表明其自己为按所述线程包限制设置的限制从同一队列调度的线程块。尽管这个突发(bursty)行为在一些情况下可能不够理想,但是,其表现出更好的高速缓存性能,因为相对不太需要进行现场切换。所得效果模拟了粗粒(coarse grain)多线程化的优异的高速缓存性能,同时保持了细化方法的优异的编程模型。
如果系统与外界交互,则往往最不希望线程包的突发特性。然而,线程包仅是在目标处理资源150使用高速缓存的情况下的有益效果,因此与外界交互的专用程序处理资源150(例如,IO装置)往往不使用高速缓存技术,因而不利用线程包。
返回到图17,通过处理资源150经由控制器130 API调用的出栈操作,从分派队列中去除单元。如果发生抢先,则可以将单元推回到就绪队列中。
在分派队列描述符中包括优先级域,其使得能够实现优先级最高限度协议,防止针对共享数据的优先级倒置。各处理资源150具有唯一分派队列。
调度针对应用和系统的调度需求在宽范围内变化,并且实际上,仅可能在真实操作环境中测试之后才变得清楚。为适应这种情况,系统管理控制器130在使用的调度策略和调度算法中提供灵活性,可以在整个多芯处理器设计阶段对其进行修改和调整。
调度策略可以分成三类1、协作调度程序,其依赖于当前执行的任务,以在调度新任务之前释放处理资源150。尽管这个类型的系统与最小化冷高速缓存效应(例如,如果针对处理资源150的本地高速缓存不包括所需指令,则因此必须从更慢的高等级存储器加载缺失的指令)和固定功能硬件加速器一致,但它可能不适合更复杂的嵌入式应用。
2、静态算法驱动调度程序,其可以抢先当前执行的任务,以便执行更合格的任务。根据预定调度参数和算法,最合格的线程总是在这些系统中执行的线程。在系统开始执行之前,任何指定的任务的合格性都是固定的。
3、动态算法驱动调度程序,其可以按运行时重定义合格性。如前所述,当前运行的过程仍具有最高合格性,但是,合格性测度自任务开始执行起已经改变。
系统管理控制器130经由恰当的配置和与目标应用的运行时交互来满足全部三个调度策略。
系统管理控制器130支持建立在操作系统和通信组内的许多调度算法。例如,在先入先出队列中,优先级排队或加权公平排队。调度算法的恰当选择表现出明显的优点,特别是在涉及主观质量测度的情况下。
在线程描述符内设置了两个调度程序测度,以支持系统管理控制器130内的调度行为。第一个调度程序测度表示在所有情况下线程的优先级,并且在等待队列结构、基于优先级的调度程序和分派队列结构内使用。必要情况下,使用第二个调度程序测度来在单个线程及其对等体之间进行选择。而且,任一测度都可以用于更新父系描述符内的测度。在线程描述符的第二原型内设置的值必须反映在其调度程序层级中经受的调度的类型。
这两个调度程序测度被用于调度程序描述符和线程描述符二者中。然而,尽管在处理资源150内计算线程测度,但是,这对于调度程序层是不可能的。从而,必须从指定的层的调度线程传递足够的参数,以使得调度程序层能够更新其自己的测度。针对各调度程序层限定一组指令,这一组指令限定测度怎样从子系向父系传播。
对全部调度程序层级进行一定的关注,可以容易地生成调度程序算法的复杂组合,以在应用系统中提供改进的传输和任务管理能力。
参数继承示例图19示出了通常可在通信系统中发现的简化队列结构的示范实施例。该结构表示针对IO装置的输出队列。共享FIFO队列的全部线程处在同一连接上,因此,这就是按连接(per connection)排队结构。在这个示例中,第二调度层使用加权公平排队(WFQ)算法。这个算法基于指定任务的长度和加权因子计算该指定任务的完成时间。接着,它选择具有最先完成时间的分组。尽管WFQ依赖于线程表示的分组长度的知识,但是,最初的FIFO队列是独立于这个信息的。在这种情况下,应用编程者必须确保分组的长度出现在针对各线程的调度程序测度中。在层级中更高的调度程序层针对它们自己的调度算法继承这种参数。
对于WFQ来说,需要下列变量P分配给连接的管道(pipe)带宽的分数l分组的长度B总体管道带宽c连接带宽d调度程序层最终期限计算连接带宽c的公式是
P*B=c如果把信道标准化为带宽l,则p变得等于c。
接着,给出分组的处理完成时间t1p*l=t]]>这样,需要的测度是1/p和l。因为p最初是一分数,所以这些值(1/p和l)都是整数。调度分组的长度通过调度程序层级向上传递,从而逐渐更新层的最终期限。整体上,在各次更新内执行的计算为d=d+[1p*l]]]>其中,在调度程序层描述符内存储d和1/p(权重),而在调度更新期间通过层级传递l。在调度程序管理器330内执行这个计算。
虽然描述了本发明的具体实施例,但是,应当明白,这仅仅是示例而已,可以考虑对本发明进行各种修改。而且,本发明是采用例如但不限于移动电话或因特网协议话音业务(VoIP)的多芯处理器的任何装置或应用中的一般应用。因此,所述具体实施例不应被视为对下列权利要求确定的保护范围的限制。
权利要求
1.一种资源管理和任务分配控制器,该控制器用于安装在具有多个互连处理器单元的多芯处理器中,所述处理器单元为处理可执行事务提供资源,所述多个处理器单元中的至少一个是主处理单元;所述控制器适于在安装时与包括所述主处理单元在内的所述多个处理器单元中的每一个通信,并且包括控制逻辑,该控制逻辑用于根据预定分配参数将所述多芯处理器内的可执行事务分配给特定处理器单元。
2.根据权利要求1所述的控制器,其中,在所述控制器的控制逻辑内包括的预定分配参数的范围包括多个事务调度规则,所述多个事务调度规则用于调度所述处理器单元执行可执行事务的定时和/或顺序。
3.根据权利要求1或权利要求2所述的控制器,其中,在所述控制器的控制逻辑内包括的预定分配参数的范围包括多个系统管理规则,所述多个系统管理规则用于控制所述处理器单元执行可执行事务的方式。
4.根据权利要求2或权利要求3所述的控制器,所述控制器还被设置成生成向处理单元传送的指令。
5.根据权利要求4所述的控制器,所述控制器被设置成向一处理器单元发送处理器单元配置指令,该处理器单元配置指令使所述处理器单元又适于允许随后执行所述控制器分配给该处理单元的可执行事务。
6.根据权利要求4或权利要求5所述的控制器,所述控制器被设置成通过向所述处理器单元发送一个或更多个中断来生成指令。
7.根据权利要求4或权利要求5所述的控制器,所述控制器被设置成通过向所述处理器单元发送一个或更多个轮询来生成指令。
8.根据任一前述权利要求所述的控制器,其中,所述控制逻辑还包括可执行事务管理器;和专用存储器管理器;其中,所述专用存储器管理器控制所述可执行事务管理器对所述专用存储器的访问。
9.根据权利要求8所述的控制器,其中,所述可执行事务管理器还包括可执行事务输入管理器,该可执行事务输入管理器被设置成保持对所述专用存储器内的可用存储的指示。
10.根据权利要求9所述的控制器,其中,所述可执行事务输入管理器被设置成保持所述专用存储器内的可用存储器位置的列表。
11.根据权利要求10所述的控制器,其中,所述可执行事务输入管理器保持对可用存储器的指示,作为来自所述专用存储器管理器的更新指令的结果。
12.根据任一前述权利要求所述的控制器,其中,要分配的所述可执行事务包括多个线程,各线程形成在所述多芯处理器上执行的应用的一部分,其中,所述多个线程中的至少一些是能够独立于其它事件执行的独立线程,并且其中,所述多个线程中的至少一些是从属线程,该从属线程的执行取决于预定事件的存在。
13.根据权利要求12所述的控制器,其中,所述控制逻辑还包括时间管理器,该时间管理器被设置成向所述可执行事务管理器提供定时器功能。
14.根据权利要求13所述的控制器,其中,所述预定事件是定时事件。
15.根据权利要求12所述的控制器,其中,所述预定事件是先前线程的执行完成,或者是另一更合适线程的抢先。
16.根据权利要求12所述的控制器,其中,所述可执行事务管理器还包括可执行事务同步管理器,该可执行事务同步管理器被设置成,在所述专用存储器内保持表示等待预定事件发生的从属线程的至少一个等待队列列表,并在所述专用存储器内保持表示等待定时事件的线程的至少一个定时器队列列表。
17.根据权利要求12所述的控制器,其中,所述可执行事务管理器还包括可执行事务输出管理器,该可执行事务输出管理器被设置成,在所述专用存储器内保持表示等待在所述多个处理器单元中的相关联的一个上执行的线程的多个分派队列结构,并在所述专用存储器内保持表示等待向所述多个处理器单元中的一个分配以在此执行的线程的多个就绪队列结构。
18.根据权利要求17所述的控制器,其中,所述可执行事务管理器还包括可执行事务调度管理器,该可执行事务调度管理器被设置成,提供并保持调度判决,该调度判决用于针对各处理器单元按序排列从所述就绪队列内到所述分派队列对线程的分派。
19.根据任一前述权利要求所述的控制器,其中,所述控制逻辑还包括系统接口管理器,该系统接口管理器与所述可执行事务管理器通信,并且被设置成管理所述控制器对所述多芯处理器的访问。
20.根据权利要求19所述的控制器,其中,所述系统接口管理器被设置成,提供对所述可执行事务管理器的互连连接和配置以及运行时访问。
21.根据权利要求6所述的控制器,其中,所述控制逻辑还包括系统中断管理器,该系统中断管理器用于将在所述多芯处理器内采用的第一格式的系统中断转换成不同的第二格式的控制器中断,所述可执行事务管理器可以理解该第二格式。
22.一种多芯处理器,该多芯处理器包括根据任一前述权利要求所述的控制器,所述多芯处理器具有多个互连处理器单元,各处理器单元都具有相关联的控制器客户端,其中,各控制器客户端被设置成,根据来自所述控制器的控制信号,控制在所述多芯处理器中的所述处理器单元与其余部分之间的通信。
23.一种多芯处理器,该多芯处理器包括根据任一前述权利要求所述的控制器,所述多芯处理器具有多个互连处理器单元,和至少一个控制器客户端,其中,所述控制器客户端被设置成,根据来自所述控制器的控制信号,控制在所述多芯处理器中的所述处理器单元与其余部分之间的通信。
24.根据权利要求22所述的多芯处理器,所述多芯处理器还包括所述控制器和所述多个互连处理器单元可访问的共享系统互连部。
25.根据权利要求24所述的多芯处理器,所述多芯处理器还包括外部接口,该外部接口用于将所述多芯处理器连接至一个或更多个外部装置。
26.根据权利要求22到25中的任一项所述的多芯处理器,所述多芯处理器还包括与所述控制器通信的专用存储器。
27.根据权利要求26所述的多芯处理器,其中,所述专用存储器可由所述控制器专有访问。
28.根据权利要求22所述的多芯处理器,其中,所述专用存储器可由所述控制器和所述多芯处理器中的至少一个其它组件访问。
29.根据权利要求22到27中的任一项所述的多芯处理器,其中,所述存储器包括多个单独存储器单元。
30.根据权利要求29所述的多芯处理器,其中,所述多个单独存储器单元的数量是可由用户限定的。
31.根据权利要求30所述的多芯处理器,其中,各存储器单元具有相似的大小,并且可由用户限定存储器单元的数量导致可变的存储器大小。
32.根据权利要求22所述的多芯处理器,其中,所述控制器客户端是运行在相关联的处理器单元上的软件应用。
33.根据权利要求22所述的多芯处理器,其中,所述控制器客户端是依赖于相关联的处理器单元的功能性的硬件控制器客户端。
34.根据权利要求33所述的多芯处理器,其中,所述控制器客户端还包括客户端控制逻辑,该客户端控制逻辑用于在被来自所述控制器的控制信号激活时控制相关联的处理器单元。
35.根据权利要求34所述的多芯处理器,其中,所述控制器客户端还包括多个缓冲器,所述多个缓冲器用于暂时存储在所述多芯处理器中的所述处理器单元与其余部分之间发送的通信消息。
36.根据权利要求35所述的多芯处理器,其中,所述多个缓冲器是先进先出缓冲器。
37.根据权利要求35所述的多芯处理器,其中,所述控制器客户端还包括多个存储器单元,各存储器单元被设置成存储地址。
38.根据权利要求37所述的多芯处理器,其中,所述控制器客户端还包括多个比较器,各比较器被设置成比较相关联的处理器单元生成的地址和在所述多个存储器单元中的一个存储器单元中存储的地址。
39.根据权利要求37所述的多芯处理器,其中,所述控制器客户端还包括减法器,该减法器被设置成,从相关联的处理器单元生成的地址减去在所述多个存储器单元中的一个存储器单元中存储的地址。
40.一种在多芯处理器内控制并分配资源的方法,该多芯处理器具有多个处理器单元,所述多个处理器单元中的至少一个是主处理器单元,所述方法包括以下步骤在与所述主处理器单元分离的资源管理和任务分配控制器处接收可执行事务;和与中央处理单元控制无关地将所述可执行事务分配给所述多个处理器单元中的一个处理器单元。
41.根据权利要求40所述的方法,所述方法还包括以下步骤将所述可执行事务经由事务管理客户端定向到所述多个处理器单元中的一个处理器单元。
42.根据权利要求41所述的方法,其中,所述事务管理客户端是硬件客户端。
43.根据权利要求41所述的方法,其中,所述事务管理客户端是软件客户端。
44.根据权利要求42所述的方法,所述方法还包括以下步骤在所述事务管理客户端内存储预定地址。
45.根据权利要求44所述的方法,所述方法还包括以下步骤在所述事务管理客户端处,从相关联的处理器单元生成的地址减去所述预定地址以生成标准化的地址。
46.根据权利要求44所述的方法,所述方法还包括以下步骤在所述事务管理客户端处,比较相关联的处理器单元生成的地址和存储的所述预定地址;和根据比较结果配置所述处理器单元。
47.根据权利要求42所述的方法,所述方法还包括以下步骤在所述事务管理客户端处,存储从所述多芯处理器的其余部分到相关联的处理器单元的整个通信消息;和随后将所述整个消息传递到相关联的处理器单元。
48.根据权利要求42所述的方法,所述方法还包括以下步骤在所述事务管理客户端处,从所述多芯处理器的其余部分向相关联的处理器单元流式传输通信消息。
49.根据权利要求41所述的方法,所述方法还包括以下步骤利用第二事务管理客户端生成、执行或删除针对第一事务管理客户端的可执行事务。
50.根据权利要求40到49中的任一项所述的方法,所述方法还包括以下步骤基于预定的一组调度参数,将可执行事务分配给所述多个处理器单元中的一个处理器单元。
51.根据权利要求50所述的方法,其中,所述一组调度参数是可由用户限定的。
52.根据权利要求50或权利要求51所述的方法,所述方法还包括以下步骤监控所述控制器使用的所述调度参数的列表。
53.根据权利要求50到52中的任一项所述的方法,所述方法还包括以下步骤随时间改变所述一组调度参数。
54.根据权利要求52所述的方法,其中,所述保持所述调度参数的列表的步骤还包括以下步骤保持可以由所述多个处理器单元中的一个或更多个处理器单元执行的就绪任务的列表。
55.根据权利要求50到53中的任一项所述的方法,所述方法还包括以下步骤基于在所述多芯处理器内平衡处理器资源的要求,将可执行事务分配给所述多个处理器单元中的一个处理器单元。
56.根据权利要求50到53中的任一项所述的方法,所述方法还包括以下步骤当确定希望由所述多个处理器单元中的一个处理器单元执行更高优先级的任务时,防止向该一个处理器单元分配可执行事务。
57.根据权利要求40到56中的任一项所述的方法,所述方法还包括以下步骤保持超过预定时间长度尚未被分配的可执行事务的列表。
58.根据权利要求52所述的方法,其中,所述监控所述调度参数的列表的步骤还包括以下步骤保持等待预定事件的等待任务的列表。
59.根据权利要求58所述的方法,其中,所述预定事件是定时器事件、同步事件或者全部两个。
60.根据权利要求58所述的方法,所述方法还包括以下步骤根据相互排斥的预定事件保持等待任务的多个列表。
61.根据权利要求52所述的方法,其中,所述监控所述调度参数的列表的步骤还包括以下步骤保持等待在特定处理资源上执行的分派任务的列表。
62.根据权利要求61所述的方法,所述方法还包括以下步骤在超时期满时将等待预定事件的可执行事务移向就绪队列。
63.根据权利要求40到62中的任一项所述的方法,其中,所述控制器专用于分配任务。
64.一种实质上上如在此参照附图所述的用于多芯处理器的资源管理和任务分配控制器。
65.一种实质上如在此参照附图所述的多芯处理器。
66.一种实质上如在此参照附图所述的在多芯处理器中控制并分配资源的方法。
全文摘要
本发明提供了一种资源管理和任务分配控制器,该控制器用于安装在具有多个互连处理器单元的多芯处理器中,所述处理器单元为处理可执行事务提供资源,所述多个处理器单元中的至少一个是主处理单元,所述控制器适于在安装时与包括所述主处理单元在内的所述多个处理器单元中的每一个通信,并且包括控制逻辑,该控制逻辑用于根据预定分配参数将多芯处理器内的可执行事务分配给特定处理器单元。
文档编号G06F15/80GK1993674SQ200580010801
公开日2007年7月4日 申请日期2005年3月30日 优先权日2004年3月31日
发明者马克·大卫·李佩特 申请人:科威尔公司, 富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1