CN1945541A - 处理操作信息传送控制系统和方法 - Google Patents

处理操作信息传送控制系统和方法 Download PDF

Info

Publication number
CN1945541A
CN1945541A CNA2006101627260A CN200610162726A CN1945541A CN 1945541 A CN1945541 A CN 1945541A CN A2006101627260 A CNA2006101627260 A CN A2006101627260A CN 200610162726 A CN200610162726 A CN 200610162726A CN 1945541 A CN1945541 A CN 1945541A
Authority
CN
China
Prior art keywords
memory location
thread
information
register
memory
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.)
Pending
Application number
CNA2006101627260A
Other languages
English (en)
Inventor
G·黑内斯
B·麦克布赖德
L·M·塞尔吉
D·J·威尔松
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.)
Alcatel CIT SA
Alcatel Lucent NV
Original Assignee
Alcatel NV
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 Alcatel NV filed Critical Alcatel NV
Publication of CN1945541A publication Critical patent/CN1945541A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Communication Control (AREA)
  • Selective Calling Equipment (AREA)

Abstract

本发明公开了用于控制传送与处理操作相关的信息的系统和方法,所述处理操作例如线程。确定向或从存储位置中的哪个存储位置传送信息,如果有的话,而不是从所有的存储位置传送信息,其中与处理操作相关的信息存储在所述存储位置中,以便处理器在执行所述处理操作中使用。然后,信息被传送到或传送自任何确定的存储位置。

Description

处理操作信息传送控制系统和方法
技术领域
本发明一般涉及管理软件处理操作的执行,特别地涉及控制与诸如线程的软件处理操作相关的信息的传送。
背景技术
当等待例如从存储器中读取的特定指令的结果时,由处理器执行的处理任务或者操作可以“阻塞”或者停止执行。由于在等候指令完成的时候处理器没有被使用,这样的等待时间将影响处理器的效率。改进处理器效率的机制可以大大改善处理器性能。
线程是软件代码的连续指令,提供了改进处理系统效率和性能的装置。活动线程是这样的线程:在当前时钟周期内其中正在处理指令。当线程变为非活动时,另一个线程可以与当前的线程交换,而且开始使用处理资源,改进系统的处理效率。当另一个线程处于非活动状态,例如等待指令的结果时,可以执行一个活动线程。
当处理器不能继续执行线程,或者被先占,这可以是在活动线程阻塞或者当已经执行了全部活动的线程时,不同的线程被传送到处理器用于执行。根据传统的线程管理技术,这是由在处理器的活动线程寄存器和等待线程寄存器或者其他的存储器之间调换各自的执行环境信息来完成的,其中所述执行环境信息与活动线程和即将到来的线程相关。
专用存储器块典型地以一组寄存器的形式分配给每个线程而且不存在节约存储器的选择。每个线程被分配一定的存储空间,而且必须传送相应量的信息来调换线程,而不考虑线程实际上是否使用了所有的专用存储器空间。因为每个线程可能使用不了它的所有专用寄存器,这可能导致存储空间使用效率低,而且由于在线程调换的期间一些寄存器也许没有被线程使用但是仍将被调换,还可能增加线程调换需要的时间量。
如此,还有需要改进的技术,用于控制与软件操作相关的信息的传送,所述信息诸如线程执行环境信息。
发明内容
为了减少线程调换时间和存储器需求,本发明的一些实施例提供一种机制来指定将被复制用于调换线程的寄存器。
根据本发明的一个方面,配置控制器以确定信息是否将被传送到或传送自多个存储位置的任意存储位置,所述多个存储位置用于存储与处理操作相关的信息,以便在执行处理操作时由处理器使用,并且配置控制器以使得与处理操作相关的信息被传送到或传送自多个存储位置的每个存储位置,如果有的话,其中信息将被传送到或传送自所述每个存储位置。
通过接收指定信息将被传送到或传送自任意存储位置的映射信息,控制器可以确定信息是否将被传送到或传送自任意存储位置。
在一个实施例中,处理操作是要由处理器执行的处理操作,而且控制器使得与处理操作相关的信息存储到每个确定的存储位置。在另一个实施例中,处理操作是已经由处理器执行的处理操作,而且控制器使得与处理操作相关的信息从每个确定的存储位置读取。
处理器可以提供在执行处理操作期间存取的多个存储位置中的每个存储位置的指示。在这种情况下,控制器可以被进一步配置为接收处理器提供的指示,而且基于所述指示确定是否信息将从任意存储位置传送。
除了每个确定的存储位置,控制器可以或者可以不必修改多个存储位置中的存储位置的内容。在多个存储位置存储与另一个处理操作相关的信息而且控制器允许除了每个确定的存储位置以外多个存储位置中的存储位置的内容保持完整,这些内容在处理操作之间共享。
在一个实施例中,处理操作是线程,而且多个存储位置包括线程寄存器。
在还包括存储器的系统中可以设置控制器,所述存储器可操作地耦合到控制器并且包括多个存储位置。这样的系统还可以包括可操作地耦合到存储器的处理器。控制器本身,或者至少它的某些功能可以利用处理器来实现。
根据另一个方面,本发明提供了一种方法,该方法包括:确定信息是否将被传送到或传送自多个存储位置的任意存储位置,所述多个存储位置用于存储与处理操作相关的信息,以便由处理器在执行处理操时使用,而且使得与处理操作相关的信息被传送到或传送自多个存储位置的每个存储位置,如果有的话,其中信息将被传送到或传送自所述每个存储位置。
这些操作可以通过任意不同的方式执行,并且所述方法还可以包括进一步的操作,其中有一些已经在上面简要地说明了。
根据本发明另一个方面的设备包括用于执行处理操作的处理单元,以及可操作地耦合到所述处理单元的存储器。所述存储器包括多个存储位置,用于存储与要由处理单元执行的处理操作相关的信息,而且所述处理单元被配置为,确定在完成其处理操作的执行之后,信息是否将从多个存储位置中的任意存储位置传送,然后,在完成其处理操作的执行之后,使得与处理操作相关的信息从每个确定的存储位置传送,如果有的话。
处理单元可以通过执行至少下列之一,使得与处理操作相关的信息从每个确定的存储位置传送:提供每个确定的存储位置的指示,以及从每个确定的存储位置传送信息。
在一个实施例中,每个确定的存储位置包括处理单元在执行所述处理操作期间存取的存储位置。
在多个存储位置中的许多存储位置存储信息用于在其处理单元的执行处理操作期间由处理单元存取的情况下,确定的存储位置的数目可以是更多的、相同的或者更少的存储位置数目。
还提供存储数据结构的机器可读介质。所述数据结构包括存储信息是否将被传送到或传送至多个存储位置的存储位置的数据字段,所述存储位置用于存储与处理操作相关的信息以便由处理器在执行所述处理操作时使用。
数据结构可以包括多个数据字段,所述数据字段存储了信息是否将从多个存储位置的各个存储位置传送的指示。
对于本领域普通技术人员来说,在考察本发明的以下具体的说明性的实施例之后,本发明的其它方面和特征将变得显而易见。
附图说明
现在参考附图更详细地描述本发明实施例的例子,其中:
图1是结合了硬件线程技术的处理系统框图;
图2是结合另一个类型线程技术的处理系统的框图;
图3是结合本发明实施例的处理系统的框图;
图4是说明根据本发明实施例的方法的流程图;以及
图5是根据本发明实施例的数据结构的框图。
具体实施方式
通过增加执行周期对等待周期的比例,线程被用来改进对处理单元或诸如运算逻辑单元(ALU)的单元的使用。在即将出现的、改进的处理体系结构中,例如在群集处理器上的高级程序设计语言,将可能使用包括线程技术的改进的硬件特性来改善性能。
图1是处理系统的方框图,所述系统对于多处理器的每个均结合了硬件线程技术。多处理器经常被提供在例如空间有限的处理环境中,例如通信网络处理器(NP)的实施中,其中所述实施还受制于相对严格的处理时间需要。
处理系统10包括处理器12、14、16、18,每个处理器包括ALU 22、32、42、52、多路复用器24、34、44、54,以及八组线程寄存器26、36、46、56。
在线程寄存器26、36、46、56中,当它们没有执行时,每个多路复用器24、34、44、54管理线程存储,或者至少与线程相关的执行环境信息。执行变成阻塞的线程的ALU将当前的活动线程与等待线程进行调换。等待线程现在变成活动线程并被执行。换出的线程可以在寄存器26、36、46、56中等待以便在接下来的调换之后变成活动的执行线程。
基于来自操作系统的消息或者硬件信令,调度线程用于执行,所述硬件信令表明阻塞状况现在清除。
可以利用诸如静态随机存取存储器(SRAM)设备的存储器设备来提供线程寄存器26、36、46、56,允许对于大量被支持线程的相对小区域的要求。举例来说,一些现在的设计支持每个ALU最多8个线程,而其它仅仅支持4个甚至2个线程。在支持每个处理器8个线程的4-处理器系统中,如图1所示,这将产生32个线程的存储。
在图1的系统中,每个线程分配相同数量的采用大量寄存器形式的专用存储器空间,而不考虑线程实际上是否使用那些空间量。即使线程的空间/寄存器要求可能已知或者确定了,例如,当软件代码被编译时,每个线程将仍然具有相同专用存储器空间量。专用于每个线程的空间量通常与处理器线程寄存器的大小相同。
另外,通过捕捉或者传递整组寄存器的内容完成线程调换,由此当不同的线程将变成活动时,即使不需要用于执行的寄存器内容也从寄存器26、36、46、56传送。
图2是结合另一种线程技术的处理系统方框图。处理系统60包括四个处理器62、64、66、68、可操作地耦合到处理器的线程管理器110、可操作地耦合到线程管理器110的线程存储器112,以及可操作地耦合到处理器的代码存储器114。处理器62、64、66、68的每个包括ALU 72、82、92、102,一组活动线程寄存器74、84、94、104,以及一组等待线程寄存器76、86、96、106。
在待决美国专利申请11/220,492中详细描述了处理系统60,该申请于2005年9月6日提交,题为“PROCESSING OPERATIONMANAGEMENT SYSTEMS AND METHODS”,而且转让给本申请的所有者。
在上述参考待决申请公开的本发明的一个实施例中,通过将所有的活动线程寄存器74、84、94、104调换为等待寄存器76、86、96、106,来对处理器62、64、66、68执行线程调换。于是,等待线程寄存器76、86、96、106能被换入线程存储器112。
例如,因为指定技术中路径选择的限制,每个等待线程寄存器76、86、96、106和线程存储器112之间的操作连接可能不是“全宽”总线或者其它类型的连接,所述“全宽”总线或者其它类型的连接与线程寄存器74/76、84/86、94/96、104/106之间以及活动线程寄存器74、84、94、104和ALU72、82、92、102之间的连接是同样大小的连接。在这种情况下,线程存储器112和处理器62、64、66、68中的任何一个之间的线程调换将出现在许多步骤中。当调换功能完成时,例如在短时期内需要多个线程调换时,这可能引入活动线程额外的阻塞而且增加处理器等待时间。
如上所述,包括处理器和外部存储器之间的软件线程调换的传统的线程调换是相对缓慢的,因为对于在先阻塞的活动线程,所有活动线程寄存器的内容被复制到存储器中,然后对于新的活动线程的整组线程寄存器被从存储器复制回处理器线程寄存器。这样的长时延是硬件线程技术的促进因素。然而,因为专用存储器被分配给每个线程,基于硬件的线程调换还包括全部线程寄存器组之间的信息传送。
图3是包括本发明实施例的处理系统120的框图。应理解,图3的系统120和下面描述的后续附图的内容,仅仅出于说明的目的,而且本发明决不局限于附图中明确示出的和在这里描述的特定范例性的实施例。
例如,除了图3示出的处理器之外,多处理器系统可以包括一个或多个处理器,其中多处理器共用外部线程存储器和/或代码存储器。本发明的实施例还可以结合与所示结构类似的或者不同结构的一个或多个处理器来实现。由处理器执行的软件代码可以如图所示单独被存储,或者可能地和线程执行环境信息一起被存储在线程寄存器中。还可以不同于图3所示分布特定功能。此外还可以考虑其它的改变。
处理系统120包括线程存储装置122、可操作地耦合到线程存储装置122的控制器130、可操作地耦合到控制器130的处理器140,以及可操作地耦合到处理器140的代码存储器150。线程存储装置122包括线程存储器124和线程压缩映射126,控制器130包括解压模块132和压缩模块134,处理器140包括等待线程寄存器142、等待映射寄存器144、活动线程寄存器146、活动映射寄存器148,和ALU 149。
图3所示的元件之间相互连接的类型可以至少在一定程度上依靠系统120的特定实施。在一个实施例中,处理器140内部的互连以及控制器130与处理器140之间的互连要通过处理器总线结构,其中控制器130和线程存储装置122之间的互连借助于小于全宽的总线。
在外部线程存储装置122中,线程存储器124是这样的存储器设备:其中存储与线程相关的线程环境信息。任意不同类型的存储器设备可以用来实现线程存储器124,包括固态存储器设备和采用可移动的甚至可擦除存储器介质的存储器设备。在一个实施例中,线程存储器124被设置在诸如同步静态随机存储器(SSRAM)设备或者同步动态(SDRAM)设备的高密度存储器设备中。在多处理器系统中,通过允许同时存取线程存储器124中的多个线程,多端口存储器设备可以改善性能。
如下进一步的详细内容所述,线程压缩映射126可以设置在与线程存储器124同样的存储器设备中或者不同的存储器设备中,而且将这样的信息存储到特定的寄存器中:对于线程,所述信息将存储在线程存储器124中的线程环境信息的各部份映射到特定寄存器。
由控制器130控制线程存储装置122和处理器140之间的信息传送。如图3所示,控制器130没有必要与线程存储装置122直接交互。例如,如图2的处理系统60中,控制器130可以可替代地控制发往和来自于另一个部件的信息传送,所述另一个部件诸如线程管理器,其中在软件线程调换中涉及的线程管理器如图2的处理系统60般地进行调换。
解压模块132和压缩模块134可以各自用硬件、用于由诸如ALU 149处理单元执行的软件或者某些硬件和软件的结合来实现。将在下面详细描述这些模块132、134向处理器140传送信息或者从处理器140发出信息的功能。
每组线程寄存器142、146存储与线程相关的环境信息。定义线程环境的寄存器的例子包括堆栈指示器、程序计数器、计时器、标记和数据寄存器。在一些实施例中,当线程活动时处理器执行的实际的软件代码可以存储在线程寄存器中。然而,在图3所示例子中,软件代码分别存储在代码存储器150中。
虽然在这里主要地被称为寄存器,应理解所述环境信息并没有必要存储在任意特定类型的存储设备中。如同在这里使用的,寄存器可以更一般地表示存储信息的存储位置,而不是存储器设备的类型。
等待和活动映射寄存器存储信息,所述信息将寄存器142146中存储的线程环境信息的各个部分映射到那些寄存器。在一个实施例中,映射信息采用掩码形式,指示了在下一个线程调换中信息将被传送到或者传送自的寄存器。映射寄存器144、48可以在与线程寄存器142、146同样的存储装置中或者不同的存储装置中提供。
ALU 149是处理单元典型的例子,其执行机器可读指令,如软件代码。如上所述,线程技术有效地将软件程序或者进程分成能由ALU 149单独执行的个别的片段。在执行线程期间,ALU 149存取一些或者所有的活动线程寄存器146,以从寄存器中读取信息和/或写入信息到寄存器。如下面的详细描述,ALU 149还对活动映射寄存器148有影响。
代码存储器150存储软件代码,而且可以利用任何不同类型的存储器设备来实现,包括固态和/或其它类型的存储器设备。例如,ALU 149可以存取代码存储器150中的一部分软件代码,所述代码是由程序计数器或者其它的指示器或者存储在活动线程寄存器146中的程序计数器线程寄存器中的索引来指示的。目前的线程软件代码存储在系统120的代码存储器150中,虽然在其它的实施例中,线程环境信息和软件代码可能存储在如上所述同样的存储装置中。
通过捕获寄存器内容并且将它们作为单元换入和换出,以在活动和等待寄存器之间调换线程。然而,为了减少调换线程花费的时间,在线程寄存器142、146上提供由映射寄存器144、148支持的跟踪机制,以便当线程将被调换到线程存储器124时指示将被复制的寄存器。线程压缩映射126支持相反的操作,用于将线程从线程存储器124调换到处理器140。虽然线程寄存器142、146也可以具有预定尺寸,该尺寸对应于大量用于存储线程的环境信息的寄存器的分配,与那些分配的寄存器之间的信息传送是用要传送的信息量的方式来控制的,从而可以减少线程存储装置122和控制器130之间的调换时间。
跟踪机制可以通过产生程序代码可用的ALU 149中附加的指令来实现,以使得程序代码能够提供关于一组线程寄存器中的每个寄存器是否将被包括在线程调换活动中或者被线程调换活动排斥在外的指示。如下面进一步的详细描述,这些指示可以影响活动和等待线程寄存器146、142两者之一或者两者,因此可以控制寄存器内部调换和处理器/线程存储装置的调换。
根据传统的线程管理技术,活动和等待线程寄存器之间的线程调换包括所有寄存器的复制而不考虑它们的字段或者内容。当线程将变成活动时,活动线程寄存器146的内容自动地用等待寄存器142的内容来替代。本发明的实施例支持控制设置的使用以允许没有调换的寄存器或者被重写或者保持不变。此机制允许用于不同线程的寄存器值混合用于特定的类型操作,诸如线程之间共享数据。通过解压模块132可以支持用于从线程存储器124到等待线程寄存器142的软件线程调换的类似的功能。
从而,显而易见的是,处理器140和控制器130二者之一或者两者可以支持可选的调换控制功能。
在操作中,控制器130控制等待线程寄存器142和线程存储装置122之间的信息传送,所述等待线程寄存器142例如硬件寄存器和存储器阵列。通过调换所选择的等待线程寄存器142和活动线程寄存器146之一的内容,将等待线程变成活动的,所述等待线程的环境信息存储在所述等待线程寄存器142中。线程的软件代码可以与线程环境信息一起存储而且可以按类似方式对ALU 149可用,虽然在某些实施例中,当线程变成活动时,程序计数器或者类似的寄存器被代替地提供以便重定向ALU 149到存储在代码存储器150中指定的软件代码。
处理器内部等待和活动寄存器之间的线程调换可以通过处理器140本身,例如通过ALU 149来控制。ALU 149可以检测它当前的活动线程正等待例如来自存储器读取操作的回答,那么就换入它的等待线程以便在等待时间内执行。在其它的实施例中,外部元件通过处理器140检测线程阻塞而且开始线程调换。从线程存储器122换入可以同样地通过处理器140或者通过外部元件进行控制,所述外部元件诸如线程管理器或者操作系统。
线程状态和/或优先级经常被用作判断线程何时应该被调换的标准。例如,软件指令或者其它机制可以用于确定线程状态。当数据从例如存储器读操作返回时,等待处理器继续执行的线程可以处于“准备”或者类似状态。在等待线程寄存器142中阻塞或者换句话说中止的线程可以与线程存储装置122中处于准备状态的线程进行调换。这保证当等待线程没有准备好进一步运行时准备线程不会等待在共用的线程存储装置122中。
代替或者除了基于状态的调换之外,基于优先级的调换也是可能的。在创建时或者创建之后,线程可以被分配优先级。由父线程创建的线程,例如,可以与父线程具有同样的优先级。优先级还可以或者可替代地,明确地分配给线程。通过例如使用软件指令或功能来确定线程优先级,而且根据确定的优先级在线程存储装置122和等待线程寄存器142之间调换线程,线程可以按照优先级次序传送到处理器140。接着,由处理器140在低优先级线程执行之前执行最高级别优先级的线程。优先级还可以或者可代替地例如通过ALU 149控制等待和活动寄存器142、146之间线程的调换,以便允许较高优先级等待线程比低优先级活动线程占先。
根据组合的状态/优先级方法,在管理线程过程中线程状态和优先级两者都可以考虑。例如,期望的是,不将准备线程换出等待线程寄存器142,以便于换入较高优先级的阻塞线程。可以换入较高优先级线程,直到该线程处于准备状态。
状态和优先级表示判别标准的例子,其可以用于确定线程是否将被换入和/或换出线程存储装置122,以及将在线程寄存器142、146之间进行调换。其它的线程调换标准可以加入或者代替状态和优先级来使用。某些可选或者附加的线程调度机制对本领域技术人员来说是显而易见的。
通常,线程可以被看作软件处理操作的例子,包括一个或多个任务或者指令,其通过处理器或者是在处理器140情况下的处理器的处理单元(ALU 149)执行。根据本发明的一个实施例,当处理操作将被执行或者已经通过例如处理器140执行时,控制器130被配置为确定任意存储位置,其可以是图3中的一个或多个寄存器,与处理操作相关的信息向所述任意存储位置传送或者从所述存储位置传送。如果有的话,通过存储信息到所述位置或者从所述位置复制或者移动信息,或者控制另一个处理所述信息传输的元件,控制器130可以使得信息从每个确定位置传送出去。
在一个实施例中,提供了标识存储位置的状态的机制。例如,存储在线程寄存器中的值可以确定为对调换或者其它的信息传输操作目的有效或无效。这样的寄存器状态可以固定在映射信息中,也就是说,要传送的寄存器是有效的,或者代替映射信息或者附加在映射信息上分别提供。
虽然多处理器线程寄存器是活动的而且通常用来存储这些信息,本发明实施例允许利用选择的寄存器传送信息。由于信息能从等待线程寄存器142调换到活动线程寄存器146里,但是信息也许不在所有的线程寄存器之间进行调换,ALU 149可以存取所有的活动线程寄存器146,而且间接地存取等待线程寄存器142。
当处理操作被调换到处理器140中时,控制器130将与处理操作相关的信息传送到确定的寄存器,在图3所示实施例中可以包括所有的等待线程寄存器142或者仅仅包括其子集。如上所述,控制器130可以自己复制或者移动信息到寄存器,或者控制处理实际信息的传送的另一个元件。
考虑调换线程到处理器140中用于执行的例子。为简单起见,假定线程和它的压缩映射是预先写入线程存储装置122的。仅仅用于说明的目的,还假定等待和活动线程寄存器142、146每一个包括8个一字节寄存器,而且将要换入用于由处理器140执行的线程具有4字节环境信息。
显然的,处理系统的开始状态可以不同于上述假设。当处理系统120启动时,例如,它的线程存储装置122可以是空的,当线程被创建时,它们将通过操作系统或者处理器140向线程存储装置122添加。本领域技术人员还将理解本发明决不限于任意特定数量的用于线程的寄存器或者所述线程寄存器142、146。
对于操作中的调换,控制器130和特定解压模块132接收来自线程存储装置122的信息。解压模块132可以如所示直接存取线程存储装置122或者间接地存取线程存储装置122,后一种情况是结合图2的处理系统60实现的本发明实施例。
在仅使用4个寄存器的线程只占用4字节存储器的意义上,压缩线程存储器124中的信息,而不是在这一例子中通常为每个线程预留的8字节。存储在线程存储器124中的信息部份和实际的线程寄存器之间的对应关系由存储在线程压缩映射126中的映射信息指定。
例如该对应关系可以是掩码值的形式。这个8个一字节线程寄存器例子的二进制掩码值将是一字节长度。在二进制掩码值中,1(或者0)比特值,可以指示存储在线程存储器124中的信息的各个部分对应的寄存器。例如,掩码值01101001将指示4字节的存储环境信息分别属于第二、第三、第五和第八线程寄存器。
线程压缩映射126中的条目和线程存储器124中的信息之间的对应关系可以用任何不同的方法来创建。通常在编译时确定软件所需的线程和线程寄存器。在执行所述软件以前,可以由此在线程存储器124中开始建立线程环境信息的存储。接下来线程压缩映射126中的条目可以按与线程存储器124中相同的顺序组织起来,以便线程存储器124中的第一信息块与压缩映射126中的第一条目相关联,等等。线程存储器124和线程压缩映射126可以可代替地结合,例如,以使得映射信息被附加到环境信息中或与环境信息结合起来。
这些关联可以代替地被更加明确地指定。根据一个实施例,描述字段与特定的线程相关联而且指示对线程存储的线程寄存器的数目和环境信息到寄存器的映射。某种线程标识符从而被包括在线程压缩映射126中的每个条目中,以便当线程环境信息正在从线程存储器124换入时获得正确的映射信息。在压缩映射126中,线程环境信息可以代替地包括相应映射信息的指针或者其它的标识符。
根据来自线程压缩映射126的映射信息,解压模块132向适当的等待寄存器142分发线程环境信息。在上述例子中,来自线程存储器的4字节信息被写入第二、第三、第五和第八等待线程寄存器。其它等待寄存器的内容可以保持完整,以允许信息在线程之间共享、或者删除、重写、放置、复位、转化、或者修改。例如,可以根据在环境信息或者映射信息中指定的控制设置或者来自诸如操作系统的其它元件的命令来控制该功能。
映射信息还可以被写入等待映射寄存器144以便用于确定从线程存储装置122加载的寄存器,和/或如果线程被从处理器140换出,将被读取而且传送出去到线程存储器124中的寄存器。
继续操作中调换的例子,当换入的线程变得有效时,等待和活动线程寄存器142、146的内容被交换。如上所述,这可以包括每个等待线程寄存器142和活动线程寄存器146的相应寄存器之间大量的内容传送。
等待和活动寄存器142、146通常是相同大小,以便允许硬件线程调换,其通常比处理器和外部存储器之间的软件线程调换要快。由解压缩模块132将信息传送到的那些等待寄存器的内容,由此被传送给相应活动线程寄存器。例如程序计数,从等待线程寄存器142的程序计数寄存器被传送到活动线程寄存器146的程序计数寄存器。
由于压缩模块132和等待线程寄存器142之间的传送,例如,等待/活动线程寄存器调换可以包括改变非映射寄存器或者使非映射寄存器保持完整,以在线程之间共享信息。
等待和活动映射寄存器144、148的内容也可以被调换,以便映射信息“遵从”环境信息,所述映射信息对所述环境信息指定了寄存器对应关系。这允许ALU 149确定活动线程寄存器146中的哪些存储了从等待线程寄存器142装载的信息。
从等待映射寄存器144到活动映射寄存器148的映射信息传送还允许ALU 149保持在执行活动线程时存取的特定活动线程寄存器的记录,所述记录可以在线程执行被阻塞时特别有用,例如当线程被更高优先级的线程抢先的时侯。这个功能可以代替地由活动线程寄存器146和活动映射寄存器148之间的可操作连接激活,由此在执行线程期间存取的任意活动线程寄存器被自动标记在活动映射寄存器148中。
例如,当某个环境信息不再与后续的线程执行相关时,或者当计算要在新的寄存器中存储的新的输出值时,活动映射寄存器148中的映射信息还可以由ALU 149来更新。在前面的情况下,调入的寄存器的数量可以大于随后换出的寄存器数量,而在后面的情况下,更大量的寄存器可以被换出。ALU 149可以由此提供特定活动寄存器146的指示,一旦完成其处理操作的执行,将要从所述特定活动寄存器146传送信息,并且还可以或者替代地从活动寄存器146传送信息。更一般地,通过指示信息将要从哪些寄存器传送,或者实际从那些寄存器传送出信息,ALU 149可以使得信息从特定等待寄存器传送出去。
如上所述,ALU 149和活动映射寄存器148之间的相互作用可以通过提供与寄存器相关的ALU功能并且使那些功能对正由ALU 149执行的软件代码可用来进行支持。这些功能可以包括,例如清除、设置、插入或者指向活动映射寄存器148的功能、仅仅将活动映射寄存器148中的内容换出到等待映射寄存器144的功能、仅仅将等待映射寄存器144中的内容换入到活动映射寄存器148的功能,和/或其他功能。
当线程阻塞或者线程中的指令已被执行时,可以由ALU 149完成线程的当前执行。活动和等待线程寄存器146、142,或者至少活动映射寄存器148中指定的寄存器的内容再一次被调换。非映射寄存器可被修改或者保持完整。等待和活动映射寄存器148、144的内容也可以被调换。
在一些实施例中,只为线程维持线程环境信息,直到该线程所有指令已经执行完毕。活动和等待调换,以及后面描述的后续调换操作由此可以不必为全部完成的线程执行。
存储在等待线程寄存器142中的信息可以由压缩模块134压缩,并换出到线程存储器124中。压缩模块134移动或者复制来自等待寄存器的信息到线程存储器124,所述等待寄存器是在等待映射寄存器144中作为线程的一部分被指定的。在上述例子中,读取来自4个8字节等待线程寄存器142的信息,并且4字节信息被放置在线程存储器124中。由于没有存储器用于非活动寄存器,这导致信息压缩。来自等待映射寄存器的映射信息被同样地移动或者复制到线程压缩映射126中,以便能够确定用于后续调换操作的环境信息到寄存器的对应关系。
如上所述,线程被换入和换出到处理器140,而且ALU 149能识别寄存器是否应包括在调换中或者被撤消。从存储器节约的方面来说,虽然一个附加字节被用来存储所述压缩映射,上述例子线程仅仅使用了8个一字节寄存器中的4个。在这种情况下节约的总的存储器空间将是总共8寄存器字节,对于3寄存器的节约,减少了使用的4寄存器字节,减少了1寄映射字节。这表示用于线程的存储器减少36%而且同样地寄存器用于线程调换而传送的信息总量减少36%。在实际的执行中,对于32位处理器,线程大小总数可以很容易地超过1K比特。可以实现显著的节约和性能提高。
以上主要地在系统的环境上本发明的实施例。图4是根据本发明另一个实施例的方法160的流程图。
在方法160中,在162线程被存入存储器。例如,这可以包括在存储器中存储新线程的环境信息、将新创建的线程或者等待线程从处理器调换到外部存储器中,或者将阻塞线程从活动线程寄存器调换到等待线程寄存器中。
在164,确定用于存储与所述线程相关信息的多个存储位置中的诸如图3中的等待寄存器142的存储位置,如果有的话,信息将向或从所述存储位置传送,以便于将线程换入处理器或从处理器换出。当线程被调换时,方法160进行到166,与确定的存储位置调换信息的操作。这可以包括移动或者复制信息到确定的存储位置以便将处理操作调换到处理器里,或者从确定的存储位置移动或者复制信息以便将处理操作从处理器中换出。
例如,可以对同样的线程,或者对多个线程重复162、164、166的操作,以将线程换入或换出处理器。在多处理器系统中,可能同时地对于多线程执行这些操作。
根据本发明其它实施例的方法可以更进一步包括,与图4明确示出的那些操作相比较更少或者不同的操作,和/或按与示出的次序不同次序执行的操作。方法160说明了一个可能的实施例。
本发明还可以在存储器中存储的数据结构中体现,诸如图3的压缩映射126和/或映射寄存器144、148的二者之一或者两者。根据本发明说明性的实施例,在图5中示出示例性数据结构170。
数据结构170包括数据字段172、174,分别存储线程标识符和映射信息。数据字段172中的线程标识符将映射信息链接到特定的线程,而数据字段174中的映射信息提供一个或多个存储位置的指示,例如寄存器,信息将被传送到所述寄存器或从所述寄存器传送以便处理器在执行线程时使用。
参考图3和5,压缩映射126可以包括具有用于各自线程的结构170的多数据条目。
应当理解,取决于映射信息如何与相应线程环境信息相关联,线程标识符数据字段172可以不必提供在所有的实施例中。例如,如果映射信息被添加到线程存储器中的线程信息上,则线程标识符可以不必使用。此外,每次线程寄存器通常存储仅仅一个线程的信息,因此,在图3的处理系统120中,例如,映射寄存器144、148可以仅仅存储对应于这样的线程的映射信息,所述线程的环境信息存储在寄存器142、146中。
这里公开的本发明的实施例通过在上述操作期间减少要传送的信息量可以加快线程调换或者类似的操作。此外,线程存储器的更好的存储器使用允许在相同存储区域中支持更多线程,可能地改善了系统性能。
在活动和等待线程寄存器中存储的线程数据和线程存储器被有效地管理来提高处理速度。选择特定的等待寄存器用于和线程存储器中的内容进行调换。由于不活动的寄存器内容不占用任何线程存储器空间,存储在线程存储器中的数据被压缩,从而实现更有效率的存储利用。
此外,用来实现这些性能提高的装置还可以用来在线程之间共用的线程数据。通过仅仅调换选择的寄存器内容,因为非调换寄存器的内容保持完整,减少了调换时间而且在线程之间共享数据。
压缩的线程未必阻碍其它的线程功能。例如,在没有降低无压缩方案性能的情况下还可以支持先占线程技术。在强迫线程调换的情况下,其中当前活动线程被高优先级线程占先,该高优先级线程不能等待寄存器已经存取的该活动线程正常停止,因为当前的线程已变成活动的,已经被存取的寄存器与确定为活动的附加的任意其它寄存器将进行调换。虽然这可以复制便笺式存储器(scratch pad)或者垃圾数据,任意未影响到的而且没有换入的寄存器将保持不被复制,仍然实现了性能的改善。
此外,在这里公开的方法没有必要应用到所有的线程或者寄存器。对线程来说很基础的寄存器,诸如堆栈指示器、程序计数器、计时器,等等,总是被复制。在这种情况下,映射信息可以指定只是非基础的寄存器和环境信息之间的对应关系,或者总是被指定包括在调换中的与基本寄存器的完全映射。
压缩线程技术可以用于实现处理器执行性能、物理实现、资源分配和程序响应的效率的提高。这些因素可以结合到目标产品来使其运行得更快、成本减少、使用较少功率,而且在体积上变小。
已经描述的仅仅是本发明实施例原理的应用。在没有脱离本发明范围的情况下,本领域技术人员可以实现其它的设备和方法。
例如,虽然图3示出了一组等待线程寄存器,其它的实施例可以配置具有多组等待线程寄存器或者没有等待线程寄存器的处理器来操作。所述等待和活动寄存器代表了速度优化,因而没有必要在所有的设施中提供。
图3表示的特定功能划分同样地出于说明性目的。例如,控制器130的功能可以在处理器140中实现。
此外,应理解,由于除了输入/输出阻塞,线程可以换入和换出外部共享存储器。例如,线程可以包括睡眠时间或者停止条件,而且当处于睡眠或者停机状态时被换出处理器。
另外,虽然主要描述方法和系统的环境,例如,也考虑本发明其它的实施,如存储在机器可读介质上的指令。

Claims (25)

1.一种控制器,被配置为:确定信息是否将被传送到或传送自多个存储位置的任意存储位置,所述多个存储位置用于存储与处理操作相关的信息,以便所述处理器在执行所述处理操作中使用,而且使与所述处理操作相关的信息传送到或传送自所述多个存储位置的每个存储位置,如果有的话,其中信息将被传送到或传送自所述每个存储位置。
2.根据权利要求1的控制器,其中所述控制器被进一步配置为:通过接收映射信息确定信息是否将被传送到或传送自任意存储位置,其中所述映射信息指定了信息将被传送到或传送自的任意存储位置。
3.根据权利要求1或2的控制器,其中所述处理操作包括将由所述处理器执行的处理操作,而且其中所述控制器使得与所述处理操作相关的所述信息存储到每个确定的存储位置。
4.根据权利要求1或2的控制器,其中所述处理操作包括已经由所述处理器执行的处理操作,而且其中所述控制器使得与所述处理操作相关的信息从每个确定的存储位置中读取。
5.根据权利要求4的控制器,其中所述处理器被配置为:提供所述多个存储位置的每个存储位置的指示,所述指示在执行所述处理操作期间被存取,而且其中所述控制器被进一步配置为,接收由所述处理器提供的所述指示,而且基于所述指示确定信息是否将从任意存储位置传送。
6.根据权利要求4的控制器,其中所述控制器被进一步配置为:修改除了每个确定的存储位置之外所述多个存储位置中的存储位置的内容。
7.根据权利要求4的控制器,其中,在传送与所述处理操作相关的信息以前,所述多个存储位置存储与另一个处理操作相关的信息,其中所述控制器被进一步配置为:允许除了每个确定的存储位置之外,所述多个存储位置的存储位置的内容保持完整,借此在处理操作之间共享所述内容。
8.根据权利要求1或2的控制器,其中所述处理操作包括线程,而且其中所述多个存储位置包括线程寄存器。
9.一种系统,包括:根据权利要求1或2的控制器;以及存储器,其操作地耦合到所述控制器而且包括所述多个存储位置。
10.一种系统,包括:根据权利要求9的系统;以及可操作地耦合到所述存储器的所述处理器。
11.根据权利要求10的系统,其中所述控制器利用所述处理器来实现。
12.一种方法,包括:
确定信息是否将被传送到或传送自多个存储位置的任意存储位置,所述多个存储位置用于存储与处理操作相关的信息,以便由处理器在执行所述处理操作中使用;以及
将与所述处理操作相关的信息传送到或传送自,所述多个存储位置的每个存储位置,如果有的话,其中信息将被传送到或传送自所述每个存储位置。
13.根据权利要求12的方法,其中确定包括接收指定了任意存储位置的映射信息,其中信息将被传送到或传送自所述任意存储位置。
14.根据权利要求12或13的方法,其中所述处理操作包括将由所述处理器执行的处理操作,并且其中传送包括将与所述处理操作相关的所述信息存储到每个确定的存储位置。
15.根据权利要求12或13的方法,其中所述处理操作包括已经由所述处理器执行的处理操作,而且其中传送包括从每个确定的存储位置读取与所述处理操作相关的所述信息。
16.根据权利要求15的方法,进一步包括:
提供所述多个存储位置的每个存储位置的指示,所述指示在执行所述处理操作期间被存取,
其中确定包括基于所述指示确定。
17.根据权利要求15的方法,其中传送进一步包括至少下列之一:
允许除了每个确定的存储位置之外所述多个存储位置的存储位置的内容保持完整,从而与所述处理操作共用所述内容;以及
修改除了每个确定的存储位置之外所述多个存储位置的存储位置的内容。
18.根据权利要求12或13的方法,其中所述处理操作包括线程,而且其中所述多个存储位置包括线程寄存器。
19.一种存储指令的机器可读介质,在执行所述指令时运行根据权利要求12或13的方法。
20.一种设备,包括:
处理单元,用于执行处理操作;以及
存储器,可操作地耦合到所述处理单元,而且包括多个存储位置,所述多个存储位置用于存储与将由所述处理单元执行的处理操作相关的信息,
所述处理单元被配置为,确定在完成其所述处理操作的执行之后,信息是否将从所述多个存储位置的任意存储位置传送以及在完成其所述处理操作的执行之后,使得与所述处理操作相关的信息从每个确定的存储位置传送,如果有的话。
21.根据权利要求20的设备,其中所述处理单元被配置为:通过执行至少下列之一,以使得与所述处理操作相关的信息从每个确定的存储位置传送:
提供每个确定的存储位置的指示;以及
从每个确定的存储位置传送所述信息。
22.根据权利要求20或21的设备,其中每个确定的存储位置包括由所述处理单元在执行所述处理操作期间存取的存储位置。
23.根据权利要求22的设备,其中所述多个存储位置中的许多存储位置存储信息,以便由所述处理单元在其执行所述处理操作期间存取,以及其中许多确定的存储位置包括较大、相同、或者较少数量的存储位置。
24.一种存储数据结构的机器可读介质,所述数据结构包括:
数据字段,存储信息是否将被传送到或传送自多个存储位置的存储位置的指示,所述多个存储位置用于存储与处理操作相关的信息,以便由所述处理器在执行所述处理操作中使用。
25.根据权利要求24的介质,其中所述数据结构包括多个数据字段,所述数据字段存储了信息是否将被从所述多个存储位置的各个存储位置发送的指示。
CNA2006101627260A 2005-09-06 2006-09-06 处理操作信息传送控制系统和方法 Pending CN1945541A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/221,073 US20070055839A1 (en) 2005-09-06 2005-09-06 Processing operation information transfer control systems and methods
US11/221,073 2005-09-06

Publications (1)

Publication Number Publication Date
CN1945541A true CN1945541A (zh) 2007-04-11

Family

ID=37492040

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006101627260A Pending CN1945541A (zh) 2005-09-06 2006-09-06 处理操作信息传送控制系统和方法

Country Status (5)

Country Link
US (1) US20070055839A1 (zh)
EP (1) EP1760580B1 (zh)
CN (1) CN1945541A (zh)
AT (1) ATE447738T1 (zh)
DE (1) DE602006010147D1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2312388C2 (ru) * 2005-09-22 2007-12-10 Андрей Игоревич Ефимов Способ организации многопроцессорной эвм
US7631125B2 (en) * 2005-09-30 2009-12-08 Intel Corporation Dynamically migrating channels
KR100679050B1 (ko) * 2005-12-12 2007-02-06 삼성전자주식회사 태스크간 빠른 문맥 교환을 위해 레지스터 문맥을 저장,복구하는 방법 및 장치
JP4476267B2 (ja) * 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
DE102009037235A1 (de) * 2008-10-14 2010-04-15 Giesecke & Devrient Gmbh Speicherverwaltung in einem portablem Datenträger
US9348645B2 (en) * 2014-05-30 2016-05-24 Apple Inc. Method and apparatus for inter process priority donation
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
US11983537B1 (en) * 2022-12-21 2024-05-14 Ceremorphic, Inc. Multi-threaded processor with power granularity and thread granularity

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233599B1 (en) * 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6408325B1 (en) * 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
US20010042187A1 (en) * 1998-12-03 2001-11-15 Marc Tremblay Variable issue-width vliw processor
US20070055852A1 (en) 2005-09-06 2007-03-08 Alcatel Processing operation management systems and methods

Also Published As

Publication number Publication date
EP1760580B1 (en) 2009-11-04
ATE447738T1 (de) 2009-11-15
EP1760580A1 (en) 2007-03-07
DE602006010147D1 (de) 2009-12-17
US20070055839A1 (en) 2007-03-08

Similar Documents

Publication Publication Date Title
CN1945541A (zh) 处理操作信息传送控制系统和方法
CN105453044B (zh) 用于分布式处理任务部分指配的技术
US8935491B2 (en) Memory architecture for dynamically allocated manycore processor
CN112106026A (zh) 多线程自调度处理器为管理网络拥塞而进行的加载存取大小调整
CN1148647C (zh) 数据处理系统及其控制方法
CN112119376A (zh) 具有自调度处理器和混合线程组构的系统中使用工作描述符包的线程开始和完成
CN112106030A (zh) 具有多线程自调度处理器的系统中的线程状态监测
CN112088359A (zh) 多线程自调度处理器
CN112088357A (zh) 用户模式多线程自调度处理器中的系统调用管理
CN112088358A (zh) 多线程自调度处理器中的线程优先级管理
CN113504985B (zh) 一种任务处理方法以及网络设备
CN1904873A (zh) 嵌入式实时操作系统中多核处理器的核间通信方法及装置
CN1910554A (zh) 多处理器系统中处理器任务迁移的方法与装置
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
US20090172683A1 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
CN1735878A (zh) 数据处理器的状态引擎
CN1537274A (zh) 处理系统或计算机系统的任务控制方法和计算机程序
CN100346307C (zh) Java操作系统中实时任务调度的实现方法
CN1928811A (zh) 处理操作管理系统和方法
US20120311241A1 (en) Scheduler for memory
CN1426560A (zh) 具有不同资源访问方案的系统集成代理程序
CN104679575A (zh) 输入输出流的控制系统及其方法
CN1163834C (zh) 中断控制方法和中断控制系统
WO2023045250A1 (zh) 一种内存池资源共用的方法、装置、设备及可读介质
CN102609306B (zh) 多核处理芯片对视频处理任务的处理方法及其系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication