CN1975663A - 具有用于不同线程的非对称硬件多线程支持的装置 - Google Patents
具有用于不同线程的非对称硬件多线程支持的装置 Download PDFInfo
- Publication number
- CN1975663A CN1975663A CNA2006101517453A CN200610151745A CN1975663A CN 1975663 A CN1975663 A CN 1975663A CN A2006101517453 A CNA2006101517453 A CN A2006101517453A CN 200610151745 A CN200610151745 A CN 200610151745A CN 1975663 A CN1975663 A CN 1975663A
- Authority
- CN
- China
- Prior art keywords
- thread
- impact damper
- hypervelocity
- processor
- certain kinds
- 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.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims description 86
- 238000012545 processing Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 15
- 238000012423 maintenance Methods 0.000 claims description 8
- 238000013459 approach Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012797 qualification Methods 0.000 claims description 4
- 230000015654 memory Effects 0.000 abstract description 29
- 238000011010 flushing procedure Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 18
- 230000000875 corresponding effect Effects 0.000 description 17
- 238000013461 design Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000008034 disappearance Effects 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000009987 spinning Methods 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004100 electronic packaging Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供了一种用于特定类线程的非对称硬件支持。优选地,该特定类线程是高优先级的I/O绑定线程。在第一个方面中,多线程处理器包括用于支持N个线程的并发执行的N组寄存器。至少一个寄存器组专门用于特定类的线程,并且不能为其它线程所使用,即使在闲置时也是如此。在第二方面中,特定类的线程仅可填充超高速缓冲器存储器的有限的部分,以便减少否则可能出现的超高速缓冲器的刷新。
Description
技术领域
本发明涉及一种数字数据处理硬件,具体地讲,本发明涉及在数字数据处理设备的处理单元中用于支持多线程并发执行的数字数据处理硬件的设计与操作。
背景技术
所谓的信息革命,开始于20世纪下半叶。尽管与其它任何历史事件或机器革命相比,信息革命是范围更宽的历史发展,但没有哪种单个的设备比数字电子计算机更能代表信息革命。计算机系统的发展无疑是一场革命。每年,计算机系统都在以更快的速度持续增长、存储更多的数据,以及向它们的用户提供更多的应用。
通常,现代计算机系统包括中央处理单元(CPU)以及存储、检索和传送信息所需的支持硬件,例如通信总线和存储器。其还包括与外界进行通信所需的硬件,例如输入/输出控制器或者存储控制器,以及附带设备,例如键盘、监视器、磁带驱动器、磁盘驱动器、连接网络的通信线等。CPU是系统的心脏。其执行包括计算机程序的指令和指导其它系统部件的操作。
从计算机硬件的观点来看,大多数系统以基本相同的方式进行操作。处理器能够执行一组有限的非常简单的操作,例如算法、逻辑比较、以及从一个位置到另一个位置的数据的移动。但是,每个操作都非常快地执行。指导计算机执行大量这种简单操作的程序给人们一种幻觉,即计算机正在做复杂的事情。被用户感觉为计算机系统的新的或改进的能力,实质上能够通过执行一组相同的非常简单的操作但要非常快地完成它来实现。因此,对计算机系统的继续改进要求使这些系统更快。
可以按每个时间单位所执行的操作的数目来粗略地测量计算机系统的总速度(也称为“吞吐能力”)。从概念上讲,对系统速度的所有可能的改进中,最简单的是提高各种部件的时钟速度,特别是处理器的时钟速度。例如,如果每一部件都以两倍快的速度运行,而在其它方面仍严格按相同的方式运作,则所述系统将仅用一半的时间就可执行某一给定的任务。由大量离散部件构造的早期的计算机处理器,通过缩减部件和把部件加以组合,最终把整个处理器作为集成电路封装在一个单一芯片上,很容易获得明显的时钟速度的提高,另外,通过进一步的尺寸的减小和其它改进,提高的时钟速度,也继续为人们所追求的一个目标。
除了提高时钟速度外,通过增加每个时钟周期所执行的操作的平均数目,提高单个CPU或系统的吞吐能力也是可能的。现代计算机系统的设计旨在并发地执行众多的操作,以增加在给定时间内所执行的操作的平均数目。各种类型的并行机制,是提高系统吞吐能力的共同的技术。例如,单个处理器尺寸和成本的降低使在单一计算机系统中提供多个并行操作的CPU可行并实际上通用。
计算机设计中并行机制的一种具体的形式是使用计算机处理器中的硬件多线程处理。处理器设计领域中所使用的术语“多线程处理”与该术语的软件使用不同,为此,通常把“硬件多线程处理”这一说法用于区分处理器设计领域的多线程处理和软件领域中的“多线程处理”,或“多道程序设计”。这一术语的软件使用意味着:把单一的进程或任务划分成多个能够被独立地调度(dispatch)来执行的相关的线程。硬件多线程处理涉及单一处理器中多个软件线程的并发执行。这些线程可以代表互相无关的、完成独立的任务。如这里所使用的,术语“多线程处理”指的是硬件多线程处理,除非特别加以限定。
支持硬件多线程处理的处理器,可以在任何时刻支持多个活跃的线程。即,操作系统中的调度程序(dispatcher)可以并发地把多个线程调度于同一处理器。从操作系统的角度来看,似乎存在着两个处理器,每一个处理器执行相应的线程。存在着针对硬件多线程处理的多种方案(approach)。在较传统的形式(有时将其称为“细粒度多线程处理(fine-grained multithreading)”)中,处理器通过周期性地交替执行来并发地执行N个线程。这在单一线程中的每一个指令的执行之间创建了间隙,该间隙有助于减小等待某一短期等待时间(latency)事件的影响,例如减小了等待完成流水线操作的影响。多线程处理的第二种形式,有时将其称为“粗粒度多线程处理(coarse-grainedmultithreading)”,专门执行单一线程的多条指令,直至处理器遇到某一较长期的等待时间事件,例如超高速缓冲器缺失(cache miss),此时,处理器转向另一个线程。在第三种多线程处理(此处将其称为“动态(dynamic)多线程处理”)形式中,处理器中的指令单元根据当前处理器和线程状态,在每一周期中从用于执行的多个线程中选择一个或多个指令。
不管所使用的硬件多线程处理的类型如何,所有硬件多线程处理趋于提高某些处理器资源的充分利用,这是因为一个或多个活跃的线程可以利用处理器资源来执行指令,即使当其它线程发生停顿(stall)时例如当等待超高速缓冲器行被填充的时候也是如此。即,在仅仅支持单一线程的处理器中,某些处理器资源,例如流水线,可能不得不闲置地等待众多等待时间事件的任何一个。然而,如果在所述处理器中的多个线程为活跃的,则可利用资源的可能性增大。换一种说法,与仅支持单一线程的类似的处理器相比,多个线程的处理器增加了每个时钟周期所执行的操作的平均数目。
通常,硬件多线程处理涉及针对每一线程复制某些处理器寄存器,以便独立地维护多个线程的状态。例如,对于实现了执行多个线程的PowerPCTM体系结构的处理器来说,该处理器必须维护运行N个线程的N个状态。因此,以下寄存器被N次复制:通用寄存器、浮点寄存器、条件寄存器、浮点状态与控制寄存器、计数寄存器、链接寄存器、异常(exception)寄存器、保存/恢复寄存器以及专用寄存器。另外,可以复制某些特定缓冲器,例如段后备(segment lookaside)缓冲器,也可以使用线程编号,对每一项加以标记。而且,某些分支预测机制,例如相关寄存器以及返回栈(stack),也应该加以复制。然而,通常不能复制较大的硬件结构,例如超高速缓冲器和执行单元,而且它们由所有线程共享。
于是,可以看出,硬件多线程处理涉及对维护状态信息所需的附加寄存器和其它结构的形式的硬件的复制。尽管所支持线程的数目可以改变,但每一线程都要求额外的硬件资源,该额外硬件资源一定要通过共享硬件资源例如执行单元的使用中的增加证明是正当的。随着添加更多的线程,利用中的边际改进下降,而且共享硬件资源被更充分地利用,同时每一附加线程的开销是相对固定的。因此,大多数硬件多线程处理处理器中所支持的线程的数目是相对小的,其中2是通常的数目。
在许多系统体系结构中,某些代表中断和其它特定进程的线程运行在高优先级上。一个具体的例子是I/O绑定线程,即那些服务于I/O进程的线程。一般情况下,这些线程把它们的大量时间花费于等待I/O完成的等待状态,而且当执行时,执行频繁,但仅简短地执行,并且不要求大量的硬件资源。当这样一个线程正等待一个事件而且该事件发生时,操作系统调度程序通常立即把该线程调度于处理器(因为其具有高优先级),从而抢占某些当前正在执行的线程。
尽管对每一个I/O绑定线程加以调度时其可能仅简短地执行,但众多高优先级抢占的累积效应可能会降低系统操作的效率。抢占当前正在执行的线程、保存其状态以及把I/O绑定线程调度于处理器,会涉及某些开销,而且众多这样的事件还会使这一开销成倍增长,从而使其变为相当大的额外工作。另外,高优先级线程往往会刷新超高速缓冲器的内容,甚至是当仅简短执行时。即,其将以其要求数据来填充超高速缓冲器,特别是最接近于处理器的高层超高速缓冲器,从而导致其它线程所需的数据被删除。
人们希望找到处理器操作与设计的改进的技术,这些技术能够避免或减轻服务于这种高优先级线程的某些不希望的副作用。
发明内容
在本发明优选实施例的第一方面中,支持多线程处理的处理器包括N组寄存器,用于支持N个线程的线程状态和并发执行的维护。这些寄存器组中的至少一个组为特定线程类专门加以使用,而不能为另外类型的线程所使用,即使在没有特定类线程执行时也是如此。
在本发明优选实施例的第二方面中,在超高速缓冲存储器的使用上特定类的线程被限制。该特定类的线程仅可填充超高速缓冲存储器的有限的部分,以减小否则可能出现的超高速缓冲器的刷新。
在该优选实施例中,处理器支持三个寄存器组,其中,一个组专门为所述特定类的线程所使用。优选地,该特定类包括通常仅简短执行的高优先级线程,具体地讲,包括I/O绑定线程。通常,预期专用寄存器组可能大多数时间处于闲置状态。当调度特定类线程时,在专用寄存器组中维护其状态。在特定类线程可以填充L1 I-超高速缓冲器和L1 D-超高速缓冲器的超高速缓冲器行(cache line)的数目方面,对特定类线程进一步地加以限制。优选地,超高速缓冲器为N路(N-way)相关的,在每一个相关的组中,某些有限数目的超高速缓冲器行可为特定类的线程加以使用。特定类线程仅可以把数据仅仅加载于超高速缓冲器的这一有限的部分中,从而可防止其刷新超高速缓冲器的全部内容。
在该优选实施例中,处理器作为动态多线程处理器加以操作,其中,指令单元根据线程优先级选择加以执行的指令,特定类的线程具有最高优先级。即,指令单元在具有可供立即执行的指令的程度上从最高优先级线程选择加以执行的指令,并且从较低优先级线程选择指令,选择到较高优先级线程指令不能立即就绪加以执行的程度。然而,也可以使用可选的多线程处理形式。
优选地,操作系统的调度程序根据该特定类的成员关系调度线程,指示处理器是否要在特定类寄存器组中执行所调度的线程。
尽管可以假设把N个寄存器组之一限制于某一类线程(从而导致该寄存器组大多数时间处于不活跃状态)比允许任何线程在N个寄存器组中的任何一个寄存器组中加以执行(从而提高了寄存器组的利用率)效率低,但情况并非必定如此。当寄存器组的数目N增长时,较低优先级寄存器组以较低的频度加以执行,从而第N个组的利益成了问题。通过为那些通常频繁但仅简短执行的高优先级线程建立特定寄存器组,被调度的特定线程通常取代处理器的寄存器中的不活跃的特定线程。当特定线程放弃处理器时,不需要交换出活跃的通用线程,然后再将其交换回来。这减少了通用线程所经历的操作系统中现场交换活动的活动量。现场交换工作量的这一减少可以很大程度地补偿特定寄存器组在大部分时间处于闲置状态的状况。另外,通过限制可得于特定线程(通常,它们无论如何都不需要太多的超高速缓冲器行)的超高速缓冲器行的数目,可以有效防止这些线程在它们的简短的执行周期期间刷新超高速缓冲器,从而减少了对其它活跃线程的中断。
附图说明
参照附图,可以充分理解本发明结构与操作上的细节,在这些附图中,以相同的参照数字表示相同的部分,其中:
图1为根据本发明的优选实施例的计算机系统的主要硬件部件的高级方框图,其中,所述计算机系统利用了用于不同线程的非对称硬件多线程支持。
图2更详细地表示了根据本优选实施例的层级结构的CPU以及作为主存储器的临时存储部分的各层超高速缓冲器。
图3为根据本优选实施例的包括某些相关超高速缓冲器结构的CPU的主要部件的高级图。
图4为根据本优选实施例的包括相关存取机制的超高速缓冲器的一般结构的一个表示。
图5概念性地描述了根据本优选实施例的计算机系统中的存储器102的某些主要软件部件、以及在不同抽象层上硬件和软件功能的划分。
具体实施方式
参照附图,在所有这些附图中,以相同的数字表示相同的部分,图1为根据本发明的优选实施例的计算机系统100的主要硬件部件的高级表示,其中,计算机系统100利用了支持不同线程的非对称硬件多线程处理。计算机系统100的主要部件包括一个或多个中央处理单元(CPU)101A~101D、主存储器102、超高速缓冲存储器106、终端接口111、存储器接口112、I/O设备接口113、以及通信/网络接口114,它们全都经由总线103、104以及总线接口105被耦合用于部件间的通信。
系统100包括一个或多个通用可编程中央处理单元(CPU)101A~101D,此处,将它们一般性地称为特征101。在该优选实施例中,典型的相对大规模系统的系统100包括多个处理器,但作为选择,系统100也可以为单一的CPU系统。每一个处理器101并发地执行代表多个活跃线程的在存储器102中存储的指令。把指令和其它数据从主存储器102加载于超高速缓冲存储器106,以加以处理。主存储器102为随机存取半导体存储器,用于存储包括程序的数据。尽管图1中把主存储器102和超高速缓冲器106概念地表示为单一的实体,但应该认识到,事实上,这些主存储器102和超高速缓冲器106是更复杂的,具体地讲,超高速缓冲器以多个不同的层级存在,如这里更详细地加以描述的。同样,某些层级的超高速缓冲器可以在多个CPU之间加以共享,如图1中所描述的,而其它层级的超高速缓冲器可以包括多个超高速缓冲器阵列,每一个超高速缓冲器阵列被紧密地耦合于单一的CPU。
总线103~105在各种系统部件之间提供了通信路径。存储器总线103在CPU 101和超高速缓冲器106、主存储器102和I/O总线接口单元105当中提供了用于传送数据的数据通信路径。还把I/O总线接口105耦合于系统I/O总线104,以把数据传送于各种I/O单元或者从各种I/O单元传送数据。I/O总线接口105通过系统I/O总线104与多个I/O接口单元111~114进行通信,也将I/O接口单元111~114称为I/O处理器(IOP)或I/O适配器(IOA)。系统I/O总线可以为例如工业标准PCI总线或任何其它适当总线技术。
I/O接口单元111~114支持与各种存储器和I/O设备的通信。例如,终端接口单元111支持附接一个或多个用户终端121~124。存储接口单元112支持附接一个或多个直接存取存储设备(DASD)125~127(通常为旋转磁盘驱动存储设备,但作为选择,它们也可以为其它设备,包括其配置对于主机来说,就像是一个单一大规模存储设备的盘驱动器阵列)。I/O和其它设备接口113向各种其它输入/输出设备或其它类型的设备中的任何一个设备提供接口。图1的示范性实施例中描述了两种这样的设备,即打印机128和传真机129,应该认识到,可能存在着许多其它这样的设备,它们可能呈不同的类型。网络接口114提供从系统100到其它数字设备和计算机系统的一个或多个通信路径,例如,这样的通信路径可以包括诸如Internet、局域网或其它网络的一个或多个网络130,或者也可以包括远程设备通信线路、无线连接等。
应该认识到,图1试图在高层级上描述系统100的代表性的主要部件,各部件可能比图1中所示的部件更复杂,也可以采用非图1中所示的部件或者可以还包括除图1中所示之外的部件,以及部件的数目、类型以及配置可以不同。还应该认识到,在具体的计算机系统中,可以不必提供图1中所示的所有部件。此处公开了这样的具有更大复杂度或更多变化的计算机系统的几个具体的例子,应该认识到,仅以举例的方式给出这些更大复杂度或更多变化的例子,而实际上不必仅局限于这样的变化。
尽管图1中把主存储器102描述为单一单片电路(monolithic)实体,然而也可以对存储器加以分布,并可以把其与不同的CPU或CPU组相关联,如各种所谓非均匀存储器存取(non-uniform memory access:NUMA)计算机体系结构中任何一种体系结构中人们所熟悉的。尽管图1中把存储器总线103描述为在超高速缓冲器106、主存储器102以及I/O总线接口105之间提供了直接通信路径的相对简单的、单一的总线结构,但实际上,存储器总线103可以包括多条不同的总线或多个不同的通信路径,可以按各种不同的形式中的任何一种形式例如按层级结构中的点到点链接、星状或网状配置、多层次结构总线、并行以及冗余路径等加以配置。另外,尽管把I/O总线接口105和I/O总线104描述为单一的相应单元,但事实上,系统100可以包含多个I/O总线接口单元105和/或多条I/O总线104。尽管把多个I/O接口单元描述为把系统I/O总线104与通向各种I/O设备的各种通信路径相分离,但作为选择,也可以把某些或全部I/O设备直接连接到一个或多个系统I/O总线。
图1中所描述的计算机系统100具有多个附接终端121~124,例如,可以为典型的多用户“大型机(mainframe)”计算机系统。通常,在这种情况下,所附接设备的实际数目大于图1中所示的数目,尽管本发明并不局限于任何特定大小的系统。作为选择,计算机系统100也可以为通常仅包括单用户显示器和键盘输入的单用户系统,或者可以为具有极少或没有直接用户接口但从其它计算机系统(客户机)中接收请求的服务器或类似设备。
尽管已在高层次上描述和说明了各种系统部件,但应该认识到,典型的计算机系统可以包括许多此处未加描述的其它部件,对本发明的理解而言,这些部件并不重要。
图2更详细地表示了根据本优选实施例的层次结构的CPU以及作为主存储器102的临时存储部分的各种层次的超高速缓冲器。在这一实施例中,除主存储器外,在所指定的各层上,即在层1(最高层)、层2以及层3上,存在着超高速缓冲器的层次结构。一般情况下,在较高的层(更接近处理器)上,超高速缓冲器变得越快,而存储的数据就越少。每一个处理器101与相应一对的层1超高速缓冲器相关联,其不为任何其它处理器所共享。该对超高速缓冲器中的一个超高速缓冲器为用于存储在相关处理器101上执行的指令的层1指令超高速缓冲器(L1 I-超高速缓冲器)201A、201B(此处,一般性地将其称为特征201)。该对超高速缓冲器中的另一个超高速缓冲器为用于存储在相关处理器101上执行的线程所加以处理的数据(除指令外)的层1数据超高速缓冲器(L1 D-超高速缓冲器)202A、202B(此处,一般地将其称为特征202)。还把每一个处理器与相应的层2超高速缓冲器203和层3超高速缓冲器204相关联,层2超高速缓冲器203和层3超高速缓冲器204通常可以存储来自存储器102的任何形式的数据。优选地,每对的层1超高速缓冲器201、202专门针对单一的相应处理器,每一个L2超高速缓冲器203和每一个L3超高速缓冲器204通常在多个处理器之间共享,但作为选择,也可以把一个或多个这样的超高速缓冲器专门针对单一的相应处理器。为了清楚地加以说明,图2仅描述了两个处理器101、两对的L1超高速缓冲器210,202、一个L2超高速缓冲器203以及一个L3超高速缓冲器204,然而,系统100的各层中的处理器和超高速缓冲器的数目可以不同,而且共享各层中每一层的超高速缓冲器的处理器的数目也可以不同。还应该认识到,超高速缓冲器层的数目也可以不同,不需要把L1超高速缓冲器划分成分离的指令和数据超高速缓冲器,并且可以多于或少于三层超高速缓冲器。
图2旨在描述各种超高速缓冲器之间的某些功能关系,分离地描述某些部件的事实并不意味着是如何封装这些部件的表示。现代集成电路技术已发展至这样一种程度:其中,通常把至少某一超高速缓冲器封装在与处理器(有时也将其称为处理器内核,以将其与超高速缓冲器和其它机构相区别)相同的集成电路芯片上。典型的情况是,把L1超高速缓冲器201、202封装在与处理器相同的集成电路芯片上,并且将它们视为处理器的一部分。甚至有可能把多个处理器内核放置在单一的芯片中,并附有一定量的共享超高速缓冲器。例如,在图2所表示的实施例中,把一对CPU 101A、101B以及一对相应的L1 I-超高速缓冲器201A,201B、一对相应的L1 D-超高速缓冲器202A、202B以及由处理器101A和101B共享的单一的L2超高速缓冲器203一起封装在单一的集成电路芯片210中。通常,L3超高速缓冲器204为随相应处理器芯片一起安装在公共电路封装上的一个或多个分离集成电路芯片。然而,这一配置仅为一种可能的封装配置,随着集成电路和其它电子封装技术的发展,可以想像将能够使用进一步的集成技术。
芯片210包括双向外部数据通信接口205,用于处理与芯片210外部的系统部件的数据通信。数据路径存在于主存储器102、L3超高速缓冲器204和芯片外部数据接口205之间,以及接口205之间、L2超高速缓冲器203和L1超高速缓冲器201、202之间。尽管图2把数据路径概念性地表示为直接路径,但实际上,也可以把它们作为连续的总线或类似的数据路径加以实现。
图3为根据本优选实施例的包括某些相关超高速缓冲器结构的CPU 101的主要部件的高级图,其对CPU 101的描述比图1或2中所描述的更为详细。CPU 101包括指令单元部分301和执行单元部分311。一般情况下,指令单元301从L1 I-超高速缓冲器201获取指令,然后选择将调度于执行单元的指令,并且对这些指令进行译码,接下来解算用于控制程序流的分支条件。执行单元311对寄存器中的数据进行算术和逻辑操作,并且加载或存储来自L1 D-超高速缓冲器202的数据。CPU 101还包括地址转换单元322。
在本实施例中,CPU支持多达三个独立线程在处理器101中的并发执行,应该认识到所支持的线程的数目可以是变化的。具体地讲,CPU维护多达三个活跃线程的状态,其中任何一个活跃的线程均可以利用该处理器的硬件资源。为了维护三个活跃的线程的状态,针对每一个线程,复制维护状态信息的某些寄存器或这些寄存器的某些部分。此处,把活跃的线程指定为线程0、1以及2(T0、T1以及T2),其中,T0为最高优先级线程,T2为最低优先级线程。保留线程T0,以供特定类的线程所使用,通常这些特定类的线程为I/O绑定线程以及某些其它线程。这些特定类的线程通常把它们的大部分时间花费于操作系统中的等待状态,以等待某一事件(例如I/O中断)。当把它们调度于处理器加以执行时,它们将以高优先级加以执行。通常,执行是简短的,然后线程返回到等待状态。操作系统的调度程序指示被调度的线程是应该作为线程T0(特定的线程)还是应该作为其它一般线程中的一个线程加以执行。
指令单元301包括分支单元302、指令译码/调度单元303以及一组指令寄存器(也叫做指令缓冲器)304。在执行之前,把指令从L1 I-超高速缓冲器201加载到缓冲器304中。在本优选实施例中,指令单元包括指令缓冲器的三个子集305~307,每一个子集大小相同,并且对应于处理器所支持的相应线程。在当前机器周期中,译码/调度单元203从缓冲器204选择一个或多个将被调度加以执行的指令,并且对该指令进行译码,以确定要执行的一个或多个操作或分支条件。分支单元202通过估计分支条件控制程序流,并且根据L1 I-超高速缓冲器221重填缓冲器204。
执行单元211包括多个执行流水线(pipeline)312~314。图3表示了加载-存储流水线312、整数算术/逻辑流水线313以及浮点流水线314。尽管图3中说明了3种代表性的流水线,但应该认识到流水线的数目是可变的,并且可以存在多条相同类型的流水线。每一个流水线在相应于机器周期的多个阶段中对数据进行规定的操作或一组操作。如本领域技术人员已知的,在第一机器周期中,把用于操作的数据引入流水线,然后在每个连续的周期中,前进流水线中的一个阶段。只要流水线总是满的,其就可以平均每个周期执行一个操作,而无论其占用多少个阶段完成该操作(尽管事实上不可能总是保持流水线为满的)。
执行单元211还包括一组通用数据寄存器215,用于根据来自指令单元301的指令,存储将在流水线312~314中加以处理的数据。通用数据寄存器包括三个子集316~318,每一个子集大小相同,并且对应于处理器所支持的相应的线程。为了清楚地加以说明,把数据寄存器的每一个子集316~318表示为相等大小的寄存器的单一的集合。然而,在许多处理器体系结构中,数据寄存器包括一组整数数据寄存器和一组独立的浮点数据寄存器,后者通常较长。在处理器体系结构既支持整数也支持浮点寄存器的情况下,每一个子集316~318均包括全套整数和浮点寄存器。在处理器实现方案包括比处理器体系结构更多的寄存器时,可以把多余的寄存器赋予一个特定的子集316~318或者在它们之间共享。
除了图2中所示的部件外,处理器101还可以包括各种专用寄存器中的任何一种专用寄存器,例如机器状态寄存器、条件寄存器、状态寄存器等(未在图中加以显示)。在专用寄存器包含专门针对线程的状态信息的情况下,可以针对由处理器所支持的每一个线程来复制该专门针对线程的信息。
地址转换单元321把指令单元201或执行单元211所生成的地址(通常将它们称为“虚拟(virtual)地址”或“有效(effective)地址”)转换成主存储器102中的相应的地址(通常将它们称为“实际(real)地址”或“物理(physical)地址”)。优选地,地址转换单元包括转换后备(look-aside)缓冲器(TLB)322,其实际上是来自存储器中的页表(page table)的某一地址转换数据的超高速缓冲器,并且也可以包括其它数据。依据这一体系结构,地址转换可以依赖于生成所述地址的线程。如果情况如此,则每一个TLB项(entry)包含线程标识符,该线程标识符标识TLB项所对应的线程。
在该优选实施例中,使用实际地址对L2超高速缓冲器203和L3超高速缓冲器204进行寻址,而使用有效地址对L1超高速缓冲器201、202进行寻址。使用实际地址存取超高速缓冲器必然意味着在存取超高速缓冲器之前,用于数据存取的地址必须由地址转换单元321加以转换,但这样做具有其它方面的显著优点,特别是在系统具有多个处理器和超高速缓冲器时维护超高速缓冲器的连贯性方面。使用“实际地址对有效地址(real vs.effectiveaddresses)”存取超高速缓冲器是涉及众多因素的体系结构设计选择,某些系统体系结构专门使用实际地址以存取所有超高速缓冲器,某些则专门使用有效地址,以及某些把有效地址用于某些超高速缓冲器(较高层超高速缓冲器)而把实际地址用于其它超高速缓冲器。尽管此处描述了具体的实施例,但本发明并不局限于任何具体的体系结构,而是可用于使用这些体系结构变体的任何一种变体的系统中。
在操作中,译码/调度单元303从寄存器304选择用于调度到执行单元311的指令。CPU 101中所执行的每一个指令执行单一的原始(primitive)操作,例如加载、存储、整数算术或逻辑操作、浮点操作、分支等。译码/调度单元303可以在单一机器周期中同时调度多条这样的指令,而且这些指令可以来自同一线程,或者可以来自不同的线程。调度是处理指令的初始阶段。在把指令调度于执行单元的流水线312~314的情况下,所述指令可能要占用多个机器周期才能得以完成,其它的指令可以在相继的周期中被调度到相同的流水线。
译码/调度单元303根据线程优先级选择用于调度的指令。如果诸如流水线的硬件处理资源可用于接收指令,并且在T0缓冲器305中存在已准备好使用该处理资源的可用的指令,则将从T0缓冲器中选择和调度这一指令。如果处理资源可用,但T0缓冲器中不存在可以使用该资源的可用指令,则译码/调度单元将从T1缓冲器306中选择可用指令(如果这种指令存在的话);如果失败,则从T2缓冲器307中选择可用指令(如果这种指令存在的话)。对于每个周期而言,处理资源不总是可用于接收新的指令。流水线有时会发生停顿和/或可能需要对其加以刷新和重新启动,这可能会导致在一个或多个周期中流水线不可使用。另外,指令处于寄存器204之一的事实并不意味着其可用于执行。可能存在着程序逻辑要求首先加以执行的其它在先的指令(尽管在许多情况下,有可能并发执行多条指令或者在不破坏程序逻辑的前提下打乱次序执行多条指令)。
每个执行线程内的指令被分组为非依赖(non-dependent)顺序指令的各个组中。当把指令从L1 I-超高速缓冲器201加载到缓冲器204中时,依赖性检查单元308自动地分析指令流,以确定哪些指令可以并发地执行或打乱次序地执行。依赖性检查单元通过在每一组的最后指令处设置停止比特,把指令流划分成顺序指令的组。在任何组中,指令不具有依赖性,并且可以安全地打乱次序对它们加以执行。具体地讲,对于每条指令,当同一组中前一条指令完成时,依赖性检查单元确定是否存在某种依赖性。依赖性取决于指令的类型和操作数(operand)。在两条不同指令涉及同一操作数的情况下,这经常但不总是产生依赖性。例如,如果两条指令把同一操作数用作被读取到或输入到某一流水线的数据的源,则不存在依赖性。但如果第一条指令写到操作数位置,而第二条指令从同一位置读出,则第二条指令显然依赖于第一条指令,因此不能在第一条指令之前执行,也不能与第一条指令同时执行。如果在同一个组中发现依赖性,则依赖性检查单元把停止比特设置于临近的前一条指令中,以致所分析的指令将成为独立组(separate group)的一部分。当译码/调度单元303选择用于调度的指令时,它不能越出(由停止比特表示的)组,直至已调度完前面的所有指令。
由于保留了T0线程寄存器以供特定类的线程所使用(而其余的寄存器组可由任何类型的线程使用),所以大多数时间不存在正在处理器中执行的活跃的T0线程,而且T0寄存器组把它们的大部分时间花费于闲置状态,当不存在活跃的T0线程时,译码/调度单元303一般情况下将从T1线程中选择用于调度的指令,并且有时在硬件资源可用而无T1线程指令可加以调度以填充它的情况下选择T2线程指令。当T0线程为活跃时,其获得高于其它线程的优先级,因此T1和T2线程将被以明显低的频度加以调度。在这一模式下,为最低优先级的T2线程可能极少或永远不能使其指令得以调度,但其状态保留在其寄存器组中,准备好在T0线程放弃处理器时恢复较频繁的执行。
尽管已在高级上描述和说明了各种CPU部件,但应该认识到,本优选实施例的CPU包含许多未加以描述的其它部件,这些部件对本发明的理解无关紧要。而且,还应该认识到,图3的CPU仅为CPU体系结构的一个例子,而且在CPU 101中,部件的数目、类型以及配置可存在着许多变更形式,除了所描述的这些部件,还可存在未加以描述的部件,而且并非所有所描述的部件都可出现在CPU设计中。例如,缓冲器和超高速缓冲器的数目和配置可以变化,执行单元流水线的数目和功能可以变化,可以按不同的阵列和集合配置寄存器,专用浮点硬件可以存在,也可以不存在等。另外,CPU 101可以具有简单的指令集,也可以具有复杂的指令集等。
在本优选实施例中,把T0线程限制为使用某些超高速缓冲器的一部分。这一限制的原因在于,以高优先级操作的T0线程将趋于刷新超高速缓冲器以及用其自身的数据替换超高速缓冲器的内容。在短暂执行之后,T1和T2线程接下来必须用它们的数据重新填充超高速缓冲器。然而,通常T0线程不需要像其它线程那样大的超高速缓冲器空间。其工作集合通常较小。如果不加以限制,它将导致最近最少使用的超高速缓冲器行被逐出(evict)。通常,这些超高速缓冲器行是与其它线程相关的行。但如果把T0线程限制为超高速缓冲器的某一部分(超高速缓冲器仍足够大,足以提供适当的工作集合(workingset)),则其仅止于逐出其自己的将不再需要的超高速缓冲器行,而不是未来其它线程将需要的较旧的超高速缓冲器行。
一般情况下,在较高的超高速缓冲器层上,由高优先级线程所引起的刷新的影响是较大的。因为T0线程通常不要求大量的数据,所以即使未加以限制,较大、较低层的超高速缓冲器也不可能被大规模地刷新。因此,在本优选实施例中,仅对L1超高速缓冲器加以限制,即仅把T0线程限制于L1超高速缓冲器的一部分,而不把其限制于L2或L3超高速缓冲器的任何部分。作为选择,也可以把T0线程限制于L2和/或L3超高速缓冲器的某一适当的部分。
图4为根据本优选实施例的包括相关存取机制的超高速缓冲器的一般结构的表示。图4可以表示L1 I-超高速缓冲器201、L1 D-超高速缓冲器202、L2超高速缓冲器203或L3超高速缓冲器204中的任何一个超高速缓冲器,但在本优选实施例中,在L1超高速缓冲器中,逐出选择逻辑410是不同的,如此处进一步加以解释的。
如本领域技术人员所熟悉的,通过根据选择地址比特(或者,在某些情况下,根据附加比特,例如线程标识符比特)对相关集合的标识进行译码,并且把相关集合中的超高速缓冲器行的地址与所希望的数据地址进行比较,来存取超高速缓冲器。例如,如果超高速缓冲器中存在1K的相关集合,则需要10个比特来从这1K中确定具体的相关集合。理想的情况下,确定这10个比特,使得每一个相关集合具有被存取的相等的几率。在本优选实施例中,使用有效地址对L1超高速缓冲器201、202进行寻址,而使用实际地址对L2超高速缓冲器203和L3超高速缓冲器204进行寻址。因此,为了存取L2或L3超高速缓冲器,通过地址转换硬件321,首先把处理器所生成的有效地址转换成实际地址。作为选择,如在某些计算机系统设计中已知的,也可使用实际地址存取所有超高速缓冲器层,或者使用虚拟或有效地址来存取某些或全部L1之下的超高速缓冲器,不用进行转换。
参照图4,超高速缓冲器包括超高速缓冲器数据表401和超高速缓冲器索引402。数据表401包括多个按相关集合404分组的数据的超高速缓冲器行403。在本优选实施例中,在所有超高速缓冲器中,每一个超高速缓冲器行403具有相同的大小,但并不需要一定如此。超高速缓冲器行是可以输入超高速缓冲器或从超高速缓冲器加以逐出的数据的最小单位。典型的超高速缓冲器行的大小为128个字节,然而这一大小可以改变。每个相关集合404中的超高速缓冲器行的数目通常是变化的,对于较低层的超高速缓冲器来说,这一数目较大。例如,在每个相关集合中,L1超高速缓冲器可以包含8个超高速缓冲器行,而在每个相关集合中,L2和L3超高速缓冲器具有16行,应该认识到,这些只是可以变化的具有代表性的参数。
索引402包括索引项406的多个行405,每行405对应于数据表401的各自的相关集合404并且包含多个索引项406,索引项406的数目等于相关集合404中超高速缓冲器行403的数目。每一个索引项406包括对应超高速缓冲器行403的地址421的至少一部分、某些控制比特422以及线程标识符423。地址部分421可以为实际或有效地址的一部分,其取决于使用哪一种地址来存取超高速缓冲器。控制比特422可以包括但不必局限于:修改比特;无效比特;一个或多个用于在必要的情况下选择将被逐出的超高速缓冲器行的比特,例如,最近最少使用的(LRU)比特;一个或多个用作信标(semaphore)的比特;用于维护超高速缓冲器连贯性的锁定或类似机制,等等,如本领域技术人员已知的。
通过使用选择器逻辑407选择与所希望的数据的地址420(此处将其称为参照(reference)地址)的一部分的某一函数相对应的索引404的一个行405,来参照(referenced)超高速缓冲器行。选择这一函数是为了在各种相关集合之间实现数据参照的近似相等的分布。通常,这一函数为在对应于超高速缓冲器行大小的M个最低比特紧上面的比特位置处的N个比特的参照地址的直接译码。例如,对于一个128即27的超高速缓冲器行大小,M为7。N取决于超高速缓冲器中相关集合的数目,并且足够大以选择任何相关集合。一般情况下,这意味着,N是相关集合数目的以2为底的对数。即,对于具有1024个相关集合的超高速缓冲器,N为10。然而,作为选择,也可以使用更复杂的散列函数,其可以包括地址之外的比特,例如为线程标识符。另外,对于所有超高速缓冲器来说,这些函数不必相同。对于一个超高速缓冲器,可以使用直接译码,而对于另一个超高速缓冲器,使用更复杂的散列函数。参照地址包括(N+M)以上的比特,以致可以把多个地址映射到同一相关集合。
把参照地址的选择比特输入于选择器逻辑407,选择器逻辑407生成选择信号,以选择超高速缓冲器索引402的单一的行405。然后,通过比较器逻辑409,把所选择的行405的每个相应索引项406中的地址411与参照地址420加以比较。事实上,通常仅需要比较不为选择器407所使用的参照地址的某一部分,因为通过行选择的优点内在地比较了选择器407所使用的比特。如果存在匹配,则比较器逻辑409输出对应于索引项中一个匹配索引项的选择信号。选择器逻辑408使用由选择器407所使用的相同的参照地址比特来选择超高速缓冲器行403的相关集合404,并且比较器409的输出在所选择的相关集合中选择超高速缓冲器行403的单一的一个。所选择行是超高速缓冲器的数据输出413。比较器409所输出的各个选择行通过或(OR)门412进行逻辑或操作,以产生超高速缓冲器选中信号。即,如果OR门412的输出为活跃的,则已检测到超高速缓冲器选中,并且可以把数据输出413视为有效的。如果OR门412的输出为不活跃的,则存在超高速缓冲器缺失。
尽管图4中把选择器407和408描述为独立的实体,但可以看出,它们执行相同的功能。取决于芯片的设计,实际上,这些选择器可以为单一的选择器,具有同时选择索引402中的索引行405和超高速缓冲器数据表401中的相关集合404的输出。
当对超高速缓冲器的数据参照产生了超高速缓冲器缺失(所要求的数据不在超高速缓冲器中)时,通常必须从较低层超高速缓冲器或者从主存储器102加载所要求的数据。取决于系统的设计,有时也可以预先把数据加载于超高速缓冲器,但通常仅针对较低层超高速缓冲器,而不针对L1超高速缓冲器这样做。当把新的超高速缓冲器行加载于超高速缓冲器中时,必须选择将加以取代的现存的行(从超高速缓冲器中“逐出的”)。由逐出选择逻辑410进行这一选择。
被逐出的行必须属于与将取代它的行相同的相关集合。通过使用选择器407选择超高速缓冲器索引402的合适的行405并且把每一项406的选择控制比特422和线程标识符423输入到逐出选择逻辑410来选择用于逐出的行。逐出选择逻辑410输出选择信号,为了超高速缓冲器数据表401的写出或者为把新的超高速缓冲器行从加载总线413加载于超高速缓冲器数据表,所述选择信号用于选择相关集合404的超高速缓冲器行403。当加载新的超高速缓冲器行时,逐出选择逻辑410的输出也驱动写选择器411,为了写入来自加载总线413的数据、地址420、或其它可适用于新加载的超高速缓冲器行的控制信息,所述写选择器411选择超高速缓冲器索引的行405的项406。
在本优选实施例中,对于至少一个超高速缓冲器,逐出逻辑410有效地限制可以被T0线程填充的每个相关集合中的超高速缓冲器行的数目。把这一数目称为T0极限(T0L),而且其必须小于每个相关集合中的超高速缓冲器行的数目。外部信号(T0)向逐出逻辑指明请求了新的超高速缓冲器行的线程是否是T0线程。如果不是,则逐出逻辑根据任何适当的逐出算法,选择用于逐出的相关集合的任何超高速缓冲器行。传统技术中存在众多这样的算法,任何一种这样的算法,现在所知道的或以后所开发的,均可加以使用。如果T0线程请求了新的超高速缓冲器行,以及如果已经存在被线程T0填充的相关集合中的T0L个超高速缓冲器行,则限制逐出逻辑以逐出由线程T0填充过的超高速缓冲器行的一个。在这一方式下,由线程T0填充过的超高速缓冲器中的行的数目不能超过T0L。
通过在某些情况下改变逐出优先级,逐出逻辑410可以容易地实现这一限制。正常情况下,逐出逻辑410导出针对所选择的相关集合的每一个超高速缓冲器行的优先级,并且选择低优先级行加以逐出。正常情况下,根据已知的技术或今后所开发的技术中的任何一种技术,从控制字段422的某些比特中导出优先级,例如从表示参照新旧程度的LRU比特、无效比特等中导出优先级。如果新的超高速缓冲器行被线程T0所重新填充并且在由T0填充的相关集合中已经存在T0L个或T0L个以上的超高速缓冲器行,则修改这一优先级(Std_Priority)。赋予每个超高速缓冲器行的所修改的优先级可表示如下:
IF(3Cache_Line_T0(i)+New_Line_T0>T0L)AND
(Cache_Line_T0(S)=0)
THEN Priority_Cache_Line(S)=MAX
ELSE Priority_Cache_Line(S)=Std_Priority_Cache_Line(S)
其中,如果填充新超高速缓冲器行的线程为T0线程,则New_Line_T0为1,否则为0。如果线程T0填充了超高速缓冲器行i,则Cacthe_Line_T0(i)为1,否则为0(跨越相关集合中的所有超高速缓冲器行所得到的总和)。MAX为最高可能的优先级。Privrity_Cache_Line(S)为超高速缓冲器行S的所修改的优先级,而Std_Priority_Cache_Line(S)是基于LRU、无效和/或其它控制比特的超高速缓冲器行S的未修改的优先级。优选地,MAX为高于任何其它层的特定高优先级层,但作为选择,其也可以为基于LRU的最高层(即等价于最近所存取的超高速缓冲器行的一个层)。作为选择,通过添加超高速缓冲器行S必须能够有效接收MAX优先级的附加条件,修改以上的表达式也是可能的。这一附加的条件可允许无效的超高速缓冲器行被线程T0所请求的超高速缓冲器行所取代,因此,在加以限制的情况下,由线程T0所填充的超高速缓冲器行可以超过T0L极限。
如以上所描述的,特定类的线程使用处理器101中的T0寄存器组加以执行。可以看出,处理器本身中不存在任何可以防止任何类型线程在T0寄存器组中执行的机制。处理器依赖于操作系统以识别那些应在T0寄存器组中执行的特定类的线程。操作系统的调度程序独立地记录线程类型,并且向处理器指明所调度的线程应在其中执行的寄存器组。
图5概念性地描述了计算机系统100中的存储器102的某些主要软件部件以及在不同抽象层上硬件和软件功能的划分。如人们所熟悉的,计算机系统是执行进程的顺序状态的机器。可以在不同的抽象层上表示这些进程。在抽象的高层上,用户确定进程和输入,并且接收输出。当前进到较低层时,会发现这些进程为某种编程语言的指令序列,接着较低层的这些指令序列被翻译成再下一层的指令序列,并且通过操作系统编码和最终到达放入机器寄存器中以迫使某些动作加以执行的数据比特。在很低层,变化的电压导致各晶体管导通和断开。在图5中,在图的顶部表示了抽象的“较高(higher)”层,而在图的底部表示了较低层。
图5中所描述的硬件层501表示导致指令得以执行的物理处理器、存储器、总线以及其它部件。如此处所使用的,硬件层501代表图1~4中所示的物理设备的集合(相对于与设备中存储的数据),其包括图1~4中未加以显示的其它硬件。
紧在硬件层之上的是低层操作系统层502,在某些操作系统中把这一层称为“内核(kernel)”。就物理意义而言,操作系统为代码,即其为存储在各存储器区域中的、在一个或多个处理器上加以执行以完成所要求功能的指令形式的数据。低层操作系统提供了共享系统资源、分配存储器、确保安全等所需的某些基本操作系统功能。低层操作系统502所提供的功能之一是线程调度功能503。调度程序503把那些等待执行的线程调度于处理器,以加以执行,如此处更详细加以解释的。与调度程序503相关的是:就绪(ready)队列数据结构504,其包含准备好加以执行并且等待调度程序503进行调度的线程;等待队列数据结构505,其包含不能立即准备好执行的实例化的线程,即那些在可以把它们调度于处理器加以执行之前正等待某一事件(例如I/O操作的完成)的出现的线程;以及执行状态数据结构(将它们表示为实体506A~506D,此处将它们统称为特征506),它们记录当前正在各处理器101A~101D中执行的线程。
在低层操作系统502的层之上,为各种用户应用510~512以及用户数据对象513~518。系统能够选择地包括附加的较高层操作系统功能509。通常情况下,较高层操作系统功能509向那些希望访问它们的用户提供附加能力和功能,然而,用户进程也可以直接存取低层操作系统502以加以执行。
线程调度依赖于线程的状态和优先级。在任何时刻,线程处于若干状态之一。例如,线程可以处于:执行状态,在这一状态下,其已被调度至处理器加以执行;事件等待状态,在这一状态下,其不能被执行直至某一外部事件发生为止,因此,其正在等待该事件的发生;或者就绪状态,在这一状态下,线程准备好加以执行,并且仅等待可用的处理器。依据操作系统,可以定义附加的状态或者上述状态的细化。另外,通常还把执行的优先级与每一个线程相关联。可以使用本技术领域中已知的或今后所开发的各种优先级赋予方案中的任何一种方案。通常由用户、系统管理员、或操作系统本身赋予优先级。例如,用户应用进程的优先级通常为针对由操作系统所确定的各用户进程的缺省优先级,用户可不考虑该优先级。在线程存在期间,该优先级可以是固定的,或者也可以依据各种因素对其加以调整,例如依据线程已在就绪队列中等待的时间长度来对其加以调整。
在本优选实施例中,每一个线程或每组线程所载有的状态信息之一是该线程或该线程组是否为“特定类”线程的一个成员。可以把这一信息作为单一的比特加以承载,但作为选择,具有要求多个比特状态信息的多个特定或其它类的线程也是可能的。
优选地,通过各种可选的技术中的任何一种技术指定特定类中的成员关系。例如,根据相同的线程属性或线程属性的组合,操作系统能够自动地把某些内核线程指定为特定类。对于操作系统而言,根据所观察到的行为,例如在先前调度时线程执行的指令的数量或时间,动态地把线程指定为特定类甚至也是可能的。成员关系可以为代码的固定的属性,可以由用户手工地加以确定和在编译时间、建立时间、加载时间或者在指令执行之前的其它时间上指定。由于不希望允许任何随心所欲的用户指定他的代码或他的代码的某些部分作为特定类线程来执行,因此优选地使用仅对被授权的人是可获得的特定工具来指定所述特定类中的成员关系。
一般情况下,期望特定类线程将是低层操作系统功能而不是用户应用代码。那些未被指定为属于特定类的线程被视为“一般类”线程。在图5中,把特定类线程表示为“SN”,把一般类线程表示为“GN”,其中N为整数。
线程就绪队列结构504和线程等待队列结构505标识可变数目的线程,可以根据任何适当的传统形式构造其中的数据。图5中把这些队列结构表示为各自单一的列表或队列,但事实上,也可以包括根据优先级或其它考虑所分离的多个列表。如图5中所表示的,就绪队列504上的线程通常为一般类线程,因为特定类线程往往会被立即加以调度;等待队列505通常包括特定类线程和一般类线程的混合体。
线程保持在等待队列505上,直至其正在等待的某一事件发生。在所述事件发生时,该线程被转移至就绪队列504。调度程序503从就绪队列504选择用于调度的线程。通常,根据优先级选择线程,在相等的优先级的线程中,首先选择已经处于就绪队列时间最长的线程。然而,也可以使用其它考虑。例如,在某些系统中,例如在非均匀存储器体系结构(NUMA)系统中,或者在逻辑上分割的系统中,可以为系统中的不同的处理器或处理器组和/或根据与处理器或处理器组相关的某种形式所调度的线程保持分离的队列。另外,尽管已把本发明描述为具有单一的操作系统和将特定类的线程调度于T0寄存器组的调度程序,但也可以把计算机系统分割成多个逻辑部分,每一个逻辑部分包括其自己的相应的操作系统和调度程序,在这种情况下,用于选择调度到T0寄存器组的特定类线程的调度程序可以出现在一个、某些或全部逻辑部分中。
执行状态数据结构506记录在每个处理器的每个寄存器组中执行的线程。例如,如图5中所示,与处理器101A相关的数据结构506A把线程“S4”记录于T0线程寄存器组中,把线程“G3”记录于T1寄存器组中,以及把线程“G8”记录于T2寄存器组中。通常,T1和T2寄存器组很忙,因此,一般类线程将在就绪队列504上等待。然而,一般情况下,大多数特定类线程将在等待队列505上等待,并且在任何给定时刻仅少数几个将正在执行。通常,正在执行的特定类线程的数目将不超过处理器的数目,即T0寄存器组的数目。如图5中所示,针对处理器101B和101D的T0寄存器组(分别记录在执行状态数据结构506B和506D中)为闲置的。
仅从就绪队列504把一般类线程调度于可用的T1或T2寄存器组,并且永远不调度于T0寄存器组,甚至在T0寄存器组处于闲置状态的情况下也是这样。当任何处理器中的T1或T2寄存器组变成可用时(由于正在执行的线程放弃了该处理器,或者为正在执行的线程所抢占),调度程序503从就绪队列504选择线程,并且将其调度于该处理器。如果T1寄存器组变得可用,则调度程序可以使该处理器把现存的T2线程转换至T1寄存器组,并且把处于队列中(enqueued)的线程调度于T2寄存器组。一般情况下,从就绪队列到T1或T2寄存器组所调度的线程为一般类线程,但在极少数情况下,其可以为特定类线程,如以下讨论的。
当导致某一在等待队列505上等待的线程变为准备好执行的事件发生时,把该线程转移到就绪队列504。如果该线程为特定类线程,则其通常为高优先级线程,因此排在就绪队列的队首,以便立刻得以调度。如果有可用的T0寄存器组,则把特定类线程调度于该T0寄存器组。通常情况下,将至少有一个T0寄存器组是可用的,可立即把特定类线程调度于该T0寄存器组。在极少数情况下,所有T0寄存器组均处于忙状态。如果情况如此,则可以把特定线程调度于T1寄存器组(或甚至T2寄存器组)。因为特定类线程具有高优先级,所以通常其将抢占现存的一般类线程,并且在这种情况下立即被调度于T1寄存器组。如果特定类线程被调度于T1寄存器组,则它在T1寄存器组中就象任何一个一般类线程那样执行,并不把其限制于L1超高速缓冲器中的超高速缓冲器行的某一子集(如T0寄存器组中运行的线程那样)。调整参数的操作系统控制着是否可以把特定线程调度于T1和T2逻辑处理器。
图5中把各种软件实体表示为独立的实体或包含在其它实体中。然而,应该认识到,这一表示仅为说明性的,具体的模块或数据实体可以是独立的实体,也可以是公共模块或模块包的一部分。另外,尽管在图5中概念性地表示了一定数量和类型的软件实体,然而,应该认识到,这种实体的实际数目是可变的,具体地讲,在复杂的多处理器系统环境中,这种实体的数目通常要大得多,而且复杂得多。
尽管把图5的软件部件概念性地描述为驻留在存储器202中,然而,应该认识到,一般情况下,计算机系统的存储器将很小而不能同时容纳所有程序和数据,通常把信息存储在数据存储设备125~127中,数据存储设备125~127包括诸如旋转磁盘驱动器的一个或多个海量存储设备,另外,当要求时,操作系统还把信息按页存储在存储器中。而且,还应该认识到,图5的概念性表示并不意味着任何特殊的存储器组织模型,系统100可以使用单一的地址空间虚拟存储器,也可以使用重叠的多个虚拟地址空间。
具有一个高优先级但仅具有有限超高速缓冲器硬件线程和两个硬件常规线程的这里所描述的本发明实施例能够最好地比较为具有三个常规线程的处理器。为了比较,考虑其中存在两个或三个CPU密集计算应用线程(CPUcompute-intensive application thread)以及几个I/O密集线程(I/O intensivethread)的情况。I/O密集线程可以代表密集计算应用执行异步I/O和/或执行诸如从一个设备到另一个设备拷贝文件的有用功能。
在不用指定特定寄存器组的三线程的传统处理器的情况下,为了调度高优先级I/O线程,操作系统执行“现场转换(context switch)”,其保存所述三个运行计算密集线程的一个的状态,然后恢复I/O线程的状态。当其运行时,如果I/O线程从一个存储器缓冲器向另一个存储器缓冲器拷贝数据块,则其将从超高速缓冲器中逐出大量(即使并非全部)的计算线程的数据。I/O线程对超高速缓冲器的清扫,明显减慢了两个仍在运行的计算密集应用。当I/O线程进入等待状态时,操作系统执行另一个现场转换,其保存I/O线程的状态并且恢复准备好运行的计算密集线程的状态。现在,所有三个计算线程都正在运行,但运行迟缓,这是因为它们全都反复地经历超高速缓冲器缺失并且这些超高速缓冲器缺失导致指令需要占用更多的时钟周期来执行。
相比之下,本优选实施例避免了因调度I/O线程所导致的计算密集线程现场的保存/恢复。其还避免了I/O线程对计算线程所造成的超高速缓冲器缺失。
在忙于许多并发I/O线程的系统中,将存在着许多涉及I/O线程的现场变化(context change),因为在I/O中断之后,它们变为可调度的。在本发明的这一实施例中,优选地,它们将利用高优先级硬件线程而不是通用线程。
在存在两个或三个计算密集应用线程时,借助本优选实施例,不用经历中断和现场转换以服务I/O密集线程。然而,在存在三个计算密集应用线程时,如果两个或两个以上这样的线程共享同一优先级,则在它们之间仍存在着操作系统所进行的中断和现场转换,因为操作系统在这些应用线程之间分时共享系统资源。
在仅支持两个线程的传统的处理器的情况下,这些问题通常更为突出。
在本优选实施例中,超高速缓冲器中的逐出选择逻辑用于限制可由T0线程填充的超高速缓冲器行的数目,即当T0填充行的数目达到预先确定的极限T0L时,通过择优地逐出T0填充行来实现这一限制。本实施例具有实现简单的优点,并且十分灵活,使得当不存在活跃的T0线程时,允许所有超高速缓冲器行被非T0线程使用。然而,也存在着各种可选的用于限制由T0线程所使用的超高速缓冲器行的数目的方法。例如,可以为可能不使用任何其它超高速缓冲器行的T0线程预留在每一个相关集合中的行的固定子集。这样的子集可以为T0线程专门地预留,或者当不存在活跃的T0线程时,也可以由其它线程加以使用。作为选择,该T0线程可以拥有自己的处于同一层的独立的超高速缓冲器,它对于其它的线程是不可存取的。在某些情况下,独立的超高速缓冲器所提供的隔离可提供更好的性能,尽管T1或T2线程不能使用专门用于T0线程的额外的超高速缓冲器行。
在本优选实施例中,把特定类的线程调度于专用的高优先级寄存器组,并且限制其仅可利用超高速缓冲器中的超高速缓冲器行的子集。然而,作为选择,独立于其它特征,有可能仅仅利用这些特征的一个。例如,可以为特定类线程留出特定高优先级寄存器组,而不对其可利用的超高速缓冲器行的数目进行任何限制。作为选择,对能够由某一类线程填充的超高速缓冲器行的数目提供限制而不提供用于这种线程的特定寄存器组也是可能的。
在本优选实施例中,特定类的线程利用专用的高优先级的寄存器组,并且将它们限制于仅可利用超高速缓冲器中的超高速缓冲器行的子集,所述寄存器不可用于通用类线程。然而,作为选择,提供用于特定类线程的其它形式的非对称硬件资源支持也是可能的。例如,一般情况下,期望特定类线程不执行大量浮点或向量操作。如果处理器包含向量或专门的浮点流水线,以及其它用于有效执行浮点操作的逻辑,其包含支持这样的操作的向量和浮点寄存器,则在某些处理器设计中,在T0寄存器组中忽略这样的寄存器是可行的。这样的忽略可略减少支持T0寄存器组所需的硬件资源,但其可能要求编译程序能够按不使用浮点指令的特定模式来编译适合T0的线程。对T0寄存器组进行附加的硬件缩减或修改也是可能的。
如此处所描述的,多线程处理器支持N个线程的并发执行,其中,优选N为3。然而,N的选择可能依赖于众多设计因素,并且可能为除3以外的数目。当处理器的能力变得更强大时,设计上的考虑可能将有助于支持更大数目的线程。而且,尽管在本优选实施例中,为特定类线程预留了单一的寄存器组,但可以想像为特定类线程所预留的寄存器组的数目也可大于1。
总之,此处,无论是否是作为操作系统内核的一部分加以实现,均把执行旨在实现本发明的某些所说明的实施例的软件例程称为“程序”或“计算机程序”。通常,这些程序包括指令,当由符合本发明的计算机系统中的设备或系统中的一个或多个处理器执行和读取时,这些指令使这些设备或系统执行那些体现本发明各个方面的步骤或者生成体现本发明的各个方面的要素所需的步骤。而且,尽管已经就全功能计算机系统描述了本发明,而且以下还将就全功能计算机系统继续描述本发明,但可以以各种形式把本发明的各个实施例作为程序产品加以销售,不管用于实际销售的信号承载媒体的具体类型如何,均可同等地使用本发明。信号承载媒体的例子包括但并不局限于易挥发和非易挥发存储器设备、软盘、硬盘驱动器、CD-ROM、DVD、磁带等。另外,本发明还适用于任何形式的信号承载媒体,而不管是否在包括无线网络的传输网络上把数据从一种形式的信号承载媒体交换于另一种形式的信号承载媒体。图1中把信号承载媒体的例子说明为系统存储器102和数据存储设备125~127。
尽管已公开了本发明的具体的实施例,并且给出了某些选择,但本领域技术人员将会意识到,在下列权利要求的范围内,可以在形式和细节上对本发明进行进一步的变更。
Claims (19)
1.一种数字数据处理设备,包括:
处理器,所述处理器包含多个寄存器组,用于支持多个线程的线程状态和并发执行的维护,所述多个寄存器组的每一个寄存器组对应于各自的线程;
存储器,用于存储可由所述处理器执行的指令;
操作系统,体现为多个处理器可执行的指令,所述操作系统包括调度程序,其用于选择将调度于所述处理器的线程;
其中,所述线程包括多个特定类的线程和多个不属于所述特定类的线程,而且其中,为所述特定类的线程预留了至少一个所述寄存器组。
2.根据权利要求1所述的数字数据处理设备,其中,所述特定类的线程包括高优先级的I/O绑定线程。
3.根据权利要求1所述的数字数据处理设备,
其中,把相应的执行优先级与所述多个寄存器组的每一个所述寄存器组相关联;
其中,所述处理器包括从所述多个寄存器组中选择用于执行的指令的指令单元,所述指令单元根据每一个所述寄存器组的所述相应执行优先级,择优地选择指令。
4.根据权利要求3所述的数字数据处理设备,其中,为特定类的所述线程预留的所述寄存器组具有高于不是为特定类的所述线程预留的所述多个寄存器组的任何一个所述寄存器组的执行优先级。
5.根据权利要求1所述的数字数据处理设备,
其中,所述调度程序把用于执行的线程调度于调度程序所指定的寄存器组中;以及
其中,所述调度程序把不属于所述特定类的所述线程仅仅调度于除了为特定类的所述线程预留的所述至少一个寄存器组之外的寄存器组中。
6.根据权利要求1所述的数字数据处理设备,还包括:
至少一个超高速缓冲器,用于临时存储供正在所述处理器上执行的线程使用的所述存储器的选择性内容;
其中,防止正在所述处理器上执行的所述特定类的线程填充超过所述超高速缓冲器的一个部分,所述部分小于所述超高速缓冲器之全部。
7.一种数字数据处理设备,包括:
处理器,所述处理器包含多个寄存器组,支持多个线程的线程状态和并发执行的维护,所述多个寄存器组的每一个寄存器组对应于各自的线程;
存储器,用于存储可由所述处理器执行的指令;
超高速缓冲器,用于临时存储供正在所述处理器上执行的线程使用的所述存储器的选择性内容;以及
其中,所述线程包括多个特定类的线程和多个不属于所述特定类的线程,以及
其中,防止正在所述处理器上执行的所述特定类的线程填充超过所述超高速缓冲器的一个部分,所述部分小于所述超高速缓冲器之全部。
8.根据权利要求7所述的数字数据处理设备,其中,特定类的所述线程包括高优先级的I/O绑定的线程。
9.根据权利要求7所述的数字数据处理设备,其中,所述超高速缓冲器包括多个超高速缓冲器行,每一行同等地可用于所述特定类的线程;以及
其中,所述数字数据处理设备还包括限制由所述特定类的线程所填充的所述超高速缓冲器行的数目的超高速缓冲器填充设施。
10.根据权利要求9所述的数字数据处理设备,
其中,所述超高速缓冲器包括多个相关集合,每一个相关集合包括N个超高速缓冲器行,其中N是大于1的整数;以及
其中,所述超高速缓冲器填充设施包括从所述超高速缓冲器中选择用于逐出的超高速缓冲器行的逐出逻辑,当由特定类的线程所填充的相关集合中的超高速缓冲器行的总数目等于或超过预先确定的小于N的值时,所述逐出逻辑择优地选择将从所述相关集合加以逐出的由所述特定类的线程所填充的行。
11.根据权利要求7所述的数字数据处理设备,
其中,把所述超高速缓冲器划分成多个分立的部分,把至少一个部分分配于所述特定类的线程,并且把至少一个部分分配于不属于所述特定类的线程。
12.根据权利要求7所述的数字数据处理设备,
其中,所述至少一个超高速缓冲器包括至少一个处于第一层的超高速缓冲器,以及至少一个处于第二层的超高速缓冲器,所述第一层比所述第二层更接近于所述处理器,以及
其中,防止正在所述处理器上执行的所述特定类的线程填充超过所述至少一个处于所述第一层的超高速缓冲器的一个部分,所述部分小于所述至少一个处于所述第一层的超高速缓冲器之全部,但不防止其填充超过所述至少一个处于所述第二层的超高速缓冲器的一个部分。
13.一种用于支持调度功能的计算机程序产品,包括:
用于多线程处理器的调度程序,该调度程序被实现作为多个记录在信号承载媒体上的计算机可执行的指令,其中,当在至少一个计算机系统上执行时,所述指令导致至少一个计算机系统选择将调度于所述多线程处理器的线程,
其中,所述多线程处理器包括多个寄存器组,用于支持多个线程的线程状态和并发执行的维护,所述多个寄存器组的每一个寄存器组对应于各自的线程;
其中,所述线程包括多个特定类的线程和多个不属于所述特定类的线程,而且其中,为所述特定类的线程预留至少一个所述寄存器组;以及
其中,根据被调度的线程是否为所述特定类的线程,所述调度程序从其上调度了线程的所述多线程处理器的所述多个寄存器组中选择寄存器组。
14.根据权利要求13所述的计算机程序产品,其中,所述特定类的线程包括高优先级的I/O绑定的线程。
15.一种用于数字数据处理系统的数字数据处理器芯片,包括:
处理器内核,所述处理器内核包括多个寄存器组,用于支持多个线程的线程状态和并发执行的维护,所述多个寄存器组的每一个寄存器组对应于各自的线程;
超高速缓冲器,其由正在所述处理器内核上执行的线程使用,所述超高速缓冲器临时存储供正在所述处理器上执行的线程使用的所述数字数据处理系统的存储器的选择性内容;以及
其中,所述线程包括多个特定类的线程和多个不属于所述特定类的线程,
其中,防止正在所述处理器上执行的所述特定类的线程填充超过所述超高速缓冲器的一个部分,所述部分小于所述超高速缓冲器之全部。
16.根据权利要求15所述的数字数据处理器芯片,其中,所述超高速缓冲器包括多个超高速缓冲器行,每一行同等地可用于所述特定类的线程;以及
其中,所述数字数据处理设备还包括用于限制由所述特定类的线程所填充的所述超高速缓冲器行的数目的超高速缓冲器填充设施。
17.根据权利要求16所述的数字数据处理器芯片,
其中,所述超高速缓冲器包括多个相关集合,每一个相关集合包括N个超高速缓冲器行,其中N是大于1的整数;以及
其中,所述超高速缓冲器填充设施包括用于从所述超高速缓冲器中选择用于逐出的超高速缓冲器行的逐出逻辑,当由特定类的线程所填充的相关集合中的超高速缓冲器行的总数目等于或超过预先确定的小于N的值时,所述逐出逻辑择优地选择将从所述相关集合中加以逐出的由所述特定类的线程所填充的行。
18.根据权利要求15所述的数字数据处理器芯片,
其中,把所述超高速缓冲器划分成多个分立的部分,把至少一个部分分配于所述特定类的线程,并且把至少一个部分分配于不属于所述特定类的线程。
19.根据权利要求15所述的数字数据处理器芯片,
其中,所述处理器芯片包括至少一个处于第一层的超高速缓冲器,以及至少一个处于第二层的超高速缓冲器,所述第一层比所述第二层更接近于所述处理器内核,以及
其中,防止正在所述处理器内核上执行的所述特定类的线程填充超过所述至少一个处于所述第一层的超高速缓冲器的一个部分,所述部分小于所述至少一个处于所述第一层的超高速缓冲器之全部,但不防止填充超过所述至少一个处于所述第二层的超高速缓冲器的一个部分。
20.根据权利要求15所述的数字数据处理器芯片,其中,为所述特定类的线程预留了至少一个所述寄存器组。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/290,887 US7624257B2 (en) | 2005-11-30 | 2005-11-30 | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
US11/290,887 | 2005-11-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1975663A true CN1975663A (zh) | 2007-06-06 |
CN100530082C CN100530082C (zh) | 2009-08-19 |
Family
ID=38088885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101517453A Expired - Fee Related CN100530082C (zh) | 2005-11-30 | 2006-09-08 | 具有用于不同线程的非对称硬件多线程支持的装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7624257B2 (zh) |
KR (1) | KR100810017B1 (zh) |
CN (1) | CN100530082C (zh) |
TW (1) | TW200805150A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141938A (zh) * | 2010-12-03 | 2011-08-03 | 华为技术有限公司 | 多线程系统中软件负荷的调整方法及装置 |
WO2012114254A1 (en) * | 2011-02-23 | 2012-08-30 | International Business Machines Corporation | Thread transition management |
CN107111482A (zh) * | 2014-10-28 | 2017-08-29 | 国际商业机器公司 | 控制线程在多线程处理器中的执行 |
CN107111578A (zh) * | 2014-10-08 | 2017-08-29 | 国际商业机器公司 | 用于多线程处理器的高效中断路由 |
CN107870779A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | 调度方法与装置 |
CN110297722A (zh) * | 2019-06-28 | 2019-10-01 | Oppo广东移动通信有限公司 | 线程任务通信方法及相关产品 |
CN112368679A (zh) * | 2018-07-06 | 2021-02-12 | 苹果公司 | 用于调度线程以用于执行的系统 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
KR100770034B1 (ko) * | 2006-03-02 | 2007-10-26 | 삼성전자주식회사 | 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 |
US9003410B2 (en) * | 2007-01-30 | 2015-04-07 | Hewlett-Packard Development Company, L.P. | Abstracting a multithreaded processor core to a single threaded processor core |
GB2448118B (en) * | 2007-04-03 | 2011-08-24 | Advanced Risc Mach Ltd | Error recovery following erroneous execution with an instruction processing pipeline |
US7747820B2 (en) * | 2007-06-15 | 2010-06-29 | Microsoft Corporation | Managing working set use of a cache via page coloring |
US8584138B2 (en) * | 2007-07-30 | 2013-11-12 | Hewlett-Packard Development Company, L.P. | Direct switching of software threads by selectively bypassing run queue based on selection criteria |
US9772853B1 (en) * | 2007-09-17 | 2017-09-26 | Rocket Software, Inc | Dispatching a unit of work to a specialty engine or a general processor and exception handling including continuing execution until reaching a defined exit point or restarting execution at a predefined retry point using a different engine or processor |
CN101546282B (zh) * | 2008-03-28 | 2011-05-18 | 国际商业机器公司 | 用于在处理器中执行写拷贝的方法和设备 |
US10089119B2 (en) | 2009-12-18 | 2018-10-02 | Microsoft Technology Licensing, Llc | API namespace virtualization |
US8341355B2 (en) * | 2010-05-25 | 2012-12-25 | International Business Machines Corporation | Reducing energy consumption of set associative caches by reducing checked ways of the set association |
US8413158B2 (en) | 2010-09-13 | 2013-04-02 | International Business Machines Corporation | Processor thread load balancing manager |
US8776094B2 (en) * | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
US8695021B2 (en) | 2011-08-31 | 2014-04-08 | Microsoft Corporation | Projecting native application programming interfaces of an operating system into other programming languages |
TWI556092B (zh) * | 2011-09-30 | 2016-11-01 | 英特爾公司 | 用以減少電力消耗之基於優先順序的應用程式事件控制技術 |
TWI497419B (zh) * | 2011-10-20 | 2015-08-21 | Via Tech Inc | 電腦裝置及其中斷任務分配方法 |
US9069598B2 (en) * | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
US9201810B2 (en) * | 2012-01-26 | 2015-12-01 | Microsoft Technology Licensing, Llc | Memory page eviction priority in mobile computing devices |
US9639466B2 (en) * | 2012-10-30 | 2017-05-02 | Nvidia Corporation | Control mechanism for fine-tuned cache to backing-store synchronization |
US10095765B1 (en) * | 2013-04-10 | 2018-10-09 | Marvell International Ltd. | Method and apparatus for a hardware-implemented AVL tree module |
US9817667B2 (en) * | 2013-05-23 | 2017-11-14 | Advanced Micro Devices, Inc. | Techniques for scheduling operations at an instruction pipeline |
US10635504B2 (en) | 2014-10-16 | 2020-04-28 | Microsoft Technology Licensing, Llc | API versioning independent of product releases |
US11080064B2 (en) | 2014-10-28 | 2021-08-03 | International Business Machines Corporation | Instructions controlling access to shared registers of a multi-threaded processor |
US9652817B2 (en) * | 2015-03-12 | 2017-05-16 | Samsung Electronics Co., Ltd. | Automated compute kernel fusion, resizing, and interleave |
US10248457B2 (en) | 2016-08-10 | 2019-04-02 | International Business Machines Corporation | Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task |
US10275280B2 (en) | 2016-08-10 | 2019-04-30 | International Business Machines Corporation | Reserving a core of a processor complex for a critical task |
US10248464B2 (en) | 2016-10-24 | 2019-04-02 | International Business Machines Corporation | Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex |
US10223164B2 (en) | 2016-10-24 | 2019-03-05 | International Business Machines Corporation | Execution of critical tasks based on the number of available processing entities |
CN107707665A (zh) * | 2017-10-19 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种网络存储方法、装置、系统及计算机可读存储介质 |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10761983B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10915271B2 (en) * | 2018-01-29 | 2021-02-09 | Micron Technology, Inc. | Memory controller with programmable atomic operations |
US12019920B2 (en) | 2018-01-29 | 2024-06-25 | Micron Technology, Inc. | Memory controller with programmable atomic operations |
KR20210051718A (ko) | 2019-10-31 | 2021-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11625269B1 (en) * | 2021-03-31 | 2023-04-11 | Amazon Technologies, Inc. | Scheduling for locality of reference to memory |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197138A (en) * | 1989-12-26 | 1993-03-23 | Digital Equipment Corporation | Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching |
US5404469A (en) * | 1992-02-25 | 1995-04-04 | Industrial Technology Research Institute | Multi-threaded microprocessor architecture utilizing static interleaving |
JPH11203149A (ja) | 1998-01-13 | 1999-07-30 | Matsushita Electric Ind Co Ltd | タスクスケジュール装置およびその方法 |
US6202129B1 (en) | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
US6275907B1 (en) * | 1998-11-02 | 2001-08-14 | International Business Machines Corporation | Reservation management in a non-uniform memory access (NUMA) data processing system |
US6938252B2 (en) | 2000-12-14 | 2005-08-30 | International Business Machines Corporation | Hardware-assisted method for scheduling threads using data cache locality |
US20020103847A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Efficient mechanism for inter-thread communication within a multi-threaded computer system |
US7080379B2 (en) | 2002-06-20 | 2006-07-18 | International Business Machines Corporation | Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue |
US7222343B2 (en) * | 2003-01-16 | 2007-05-22 | International Business Machines Corporation | Dynamic allocation of computer resources based on thread type |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US20040268093A1 (en) | 2003-06-26 | 2004-12-30 | Samra Nicholas G | Cross-thread register sharing technique |
US7103735B2 (en) * | 2003-11-26 | 2006-09-05 | Intel Corporation | Methods and apparatus to process cache allocation requests based on priority |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7475399B2 (en) * | 2004-01-13 | 2009-01-06 | International Business Machines Corporation | Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization |
US20060036810A1 (en) * | 2004-08-12 | 2006-02-16 | International Business Machines Corporation | System, application and method of reducing cache thrashing in a multi-processor with a shared cache on which a disruptive process is executing |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
-
2005
- 2005-11-30 US US11/290,887 patent/US7624257B2/en not_active Expired - Fee Related
-
2006
- 2006-09-08 CN CNB2006101517453A patent/CN100530082C/zh not_active Expired - Fee Related
- 2006-11-08 TW TW095141321A patent/TW200805150A/zh unknown
- 2006-11-10 KR KR1020060110854A patent/KR100810017B1/ko not_active IP Right Cessation
-
2007
- 2007-10-24 US US11/923,455 patent/US8250347B2/en not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141938A (zh) * | 2010-12-03 | 2011-08-03 | 华为技术有限公司 | 多线程系统中软件负荷的调整方法及装置 |
US10055226B2 (en) | 2011-02-23 | 2018-08-21 | International Business Machines Corporation | Thread transition management |
WO2012114254A1 (en) * | 2011-02-23 | 2012-08-30 | International Business Machines Corporation | Thread transition management |
GB2502222A (en) * | 2011-02-23 | 2013-11-20 | Ibm | Thread transition management |
GB2502222B (en) * | 2011-02-23 | 2014-04-09 | Ibm | Thread transition management |
US8725993B2 (en) | 2011-02-23 | 2014-05-13 | International Business Machines Corporation | Thread transition management |
US9703561B2 (en) | 2011-02-23 | 2017-07-11 | International Business Machines Corporation | Thread transition management |
US11256507B2 (en) | 2011-02-23 | 2022-02-22 | International Business Machines Corporation | Thread transition management |
US10296339B2 (en) | 2011-02-23 | 2019-05-21 | International Business Machines Corporation | Thread transition management |
CN107111578B (zh) * | 2014-10-08 | 2020-06-19 | 国际商业机器公司 | 用于多线程处理器的高效中断路由 |
CN107111578A (zh) * | 2014-10-08 | 2017-08-29 | 国际商业机器公司 | 用于多线程处理器的高效中断路由 |
CN107111482A (zh) * | 2014-10-28 | 2017-08-29 | 国际商业机器公司 | 控制线程在多线程处理器中的执行 |
CN107870779A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | 调度方法与装置 |
CN107870779B (zh) * | 2016-09-28 | 2023-12-12 | 北京忆芯科技有限公司 | 调度方法与装置 |
CN112368679A (zh) * | 2018-07-06 | 2021-02-12 | 苹果公司 | 用于调度线程以用于执行的系统 |
CN110297722A (zh) * | 2019-06-28 | 2019-10-01 | Oppo广东移动通信有限公司 | 线程任务通信方法及相关产品 |
CN110297722B (zh) * | 2019-06-28 | 2021-08-24 | Oppo广东移动通信有限公司 | 线程任务通信方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
TW200805150A (en) | 2008-01-16 |
US8250347B2 (en) | 2012-08-21 |
KR20070056945A (ko) | 2007-06-04 |
CN100530082C (zh) | 2009-08-19 |
US20070124568A1 (en) | 2007-05-31 |
US7624257B2 (en) | 2009-11-24 |
US20080040583A1 (en) | 2008-02-14 |
KR100810017B1 (ko) | 2008-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100530082C (zh) | 具有用于不同线程的非对称硬件多线程支持的装置 | |
JP7025617B2 (ja) | メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体 | |
CN1112636C (zh) | 在多线程处理器中选择线程切换事件的方法和装置 | |
CN1117319C (zh) | 在多线程处理器中改变线程优先级的方法和装置 | |
US10579388B2 (en) | Policies for shader resource allocation in a shader core | |
EP1027645B1 (en) | Thread switch control in a multithreaded processor system | |
US8893145B2 (en) | Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes | |
US8516461B2 (en) | Method to dynamically distribute a multi-dimensional work set across a multi-core system | |
TW413787B (en) | An apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor | |
EP2542973B1 (en) | Gpu support for garbage collection | |
US20120079503A1 (en) | Two-Level Scheduler for Multi-Threaded Processing | |
CN101048763A (zh) | 高速缓冲存储器的动态重新配置 | |
US20120147021A1 (en) | Graphics compute process scheduling | |
US20060136919A1 (en) | System and method for controlling thread suspension in a multithreaded processor | |
WO2012082421A1 (en) | Accessibility of graphics processing compute resources | |
US8180998B1 (en) | System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations | |
CN1262934C (zh) | 具有不同资源访问方案的系统集成代理程序 | |
CN1834852A (zh) | 使用指令相关性查看深度来改善处理性能的方法和装置 | |
CN1924832A (zh) | 多重处理环境中基于因果性的存储器访问排序 | |
US20230077058A1 (en) | Priority Inversion Mitigation Techniques | |
Zhang et al. | Distributed computing in mask data preparation for 45-nm node and below | |
WO2023038759A1 (en) | Quality of service techniques in distributed graphics processor | |
EP4384975A1 (en) | Logical slot to hardware slot mapping for graphics processors | |
Hung | Reconfigurable hardware module sequencer for dynamically partially reconfigurable systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090819 |
|
CF01 | Termination of patent right due to non-payment of annual fee |