多线程处理器中指令和关联读取请求的后台完成.pdf

上传人:54 文档编号:653999 上传时间:2018-03-01 格式:PDF 页数:37 大小:1.19MB
返回 下载 相关 举报
摘要
申请专利号:

CN97125461.3

申请日:

1997.12.11

公开号:

CN1188932A

公开日:

1998.07.29

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 9/38申请日:19971211授权公告日:20030528终止日期:20111211|||授权|||公开|||

IPC分类号:

G06F9/00

主分类号:

G06F9/00

申请人:

国际商业机器公司;

发明人:

约翰·米切尔·波肯哈根; 里查德·詹姆斯·艾克米亚; 施尔顿·波那尔德·勒文斯坦; 安德鲁·汉里·沃仑格; 多尼·阿因·阿文里尔; 詹姆斯·艾拉·布鲁克豪瑟

地址:

美国纽约

优先权:

1996.12.27 US 773,572

专利代理机构:

中国国际贸易促进委员会专利商标事务所

代理人:

于静

PDF下载: PDF下载
内容摘要

数据处理系统包括组成多条处理流水线的多个处理单元。流水线对指令处理并包括一存储流水线。系统还包括指令单元和存储控制单元。指令单元向执行单元发送指令,并通过它们控制多线程的执行。如果第一线程的指令在存储流水线中遇到了一次Cache未命中,则指令单元开始处理第二线程。指令单元向存储控制单元发出数据请求。当所请求数据返回后,第一线程遇到Cache未命中指令调度到存储流水线中一未用到的时隙。第一线程该指令将与第二线程指令一同被处理。

权利要求书

1: 一种数据处理系统,包括: 组成多条处理流水线的多个执行单元,所述多条处理流水线对指令进行 处理并包括一存储流水线; 一个指令单元,用于向所述多个执行单元输出指令,并通过所述多个执 行单元控制多个线程的执行,当前正在被所述多个执行单元执行的线程被 称为前台线程,当前未被所述多个执行单元执行的线程被称为后台线程; 一个存储控制单元,用于对后台线程的后台指令的数据读取请求进行处 理,所述存储控制单元监视所述存储流水线来检测存储流水线何时变为可 用,当存储控制单元检测到所述存储流水线为可用时将所述后台指令送入 到所述存储流水线,当所述存储控制单元将所述后台指令送到所述存储流 水线时将与所述后台指令相关的请求数据输出到所述多个执行单元。
2: 如权利要求1所述的数据处理系统,其特征在于: 在所述后台线程被所述指令单元从前台切换到后台之前,所述执行单元 完成位于除了所述存储流水线外的所述多条流水线的最后一流水阶段中所 述后台线程的指令的处理。
3: 如权利要求2所述的数据处理系统,其特征在于: 当所述后台线程切换到所述前台时,所述指令单元并不对所述执行单元 处理完毕的指令进行调度,也不将所述后台指令调度到所述多条处理流水 线。
4: 如权利要求1所述的数据处理系统,其特征在于: 所述存储控制单元包括至少一个序列发生器,当所述存储控制单元接收 到数据读取请求时,如果所述存储控制单元为可用的,则将所述数据读取 请求分配给所述存储控制单元。
5: 如权利要求4所述的数据处理系统,其特征在于: 所述存储控制单元包括多个序列发生器,使得多个数据读取请求能够被 同时处理。
6: 如权利要求1所述的数据处理系统,其特征在于: 还包括: 一个一级Cache; 存储数据的存储器装置; 当所述多个执行单元遇到一个一级Cache未命中时,所述指令单元向所 述多个存储控制单元发出所述的数据读取请求; 当处理所述的数据读取请求时,所述存储控制单元从所述存储器请求数 据,在所述请求数据从所述存储器装置返回时,如果所述存储流水线为可 用的,则将从所述存储器装置返回的所述请求数据直接输出到所述的若干 执行单元。
7: 如权利要求6所述的数据处理系统,其特征在于: 所述存储控制单元包括一个缓冲器,用来在将从所述存储器装置接收到 的数据输出到所述一级Cache之前暂时存储所述数据。
8: 如权利要求7所述的数据处理系统,其特征在于: 如果在包括所请求数据的数据开始存储到所述缓冲器之后,所述存储控 制单元检测到所述存储流水线已变为可用的,所述存储控制单元将所述请求 数据从所述缓冲器或所述一级Cache传输到所述多个执行单元。
9: 如权利要求8所述的数据处理系统,其特征在于: 当所述存储控制单元检测到所述存储流水线为可用时,如果所述缓冲器 已经开始存储包含所述请求数据的所述数据,但所述请求数据并未完全传输 到所述一级Cache,所述存储控制单元将所述请求数据从所述缓冲器传输到 所述多个执行单元。
10: 如权利要求1所述的数据处理系统,其特征在于: 当指令单元没有将一前台线程的指令调度到所述存储流水线时,所述存 储控制单元检测存储流水线是否可用。
11: 在数据处理系统中的一种数据处理方法,该数据处理系统包括组成多 条处理流水线的多个执行单元,所述多条处理流水线对指令进行处理,并 包括一存储流水线,所述数据处理系统进一步包括一个输出指令到所述多 个执行单元并通过所述多个执行单元来控制多个线程的执行的指令单元, 当前正在被所述多个执行单元执行的线程被称为前台线程,当前未被所述 多个执行单元执行的线程被称为后台线程,所述数据处理系统还包括一处 理后台线程的后台指令的数据读取请求的存储控制单元,所述方法包括: 监视所述存储流水线来检测所述存储流水线何时变为可用的; 当所述监视步骤检测到所述存储流水线变为可用时,将所述后台指令发 送到存储流水线;及 当所述发送步骤将所述后台指令发送到存储流水线时,输出与所述后台 指令相关的请求数据到所述多个执行单元。
12: 如权利要求11所述的方法,其特征在于进一步包括: 在所述后台线程被所述指令单元从前台切换到后台之前,所述执行单元 完成位于除了所述存储流水线的所述多条流水线的最后一流水阶段中所述 后台线程的指令的处理。
13: 如权利要求12所述的方法,其特征在于: 当将后台线程切换回前台时,将除了所述在完成步骤中完成的指令以及 在所述发送步骤中发送的所述后台指令外的其它指令调度到所述的多条处 理流水线中。
14: 如权利要求11所述的方法,其特征在于: 所述存储控制单元包括至少一个序列发生器,进一步包括以下步骤: 如果所述序列发生器为可用的,则将数据读取请求分配给所述的序列发 生器。
15: 如权利要求14所述的方法,其特征在于: 所述存储控制单元包括多个序列发生器,使得多个数据读取请求可以被 同时处理。
16: 如权利要求11所述的方法,其特征在于: 所述数据处理系统进一步包括一个一级Cache和用来存储数据的存储 器装置,而且进一步包括: 当所述多个执行单元遇到一级Cache未命中时,向所述存储控制单元发 出数据读取请求; 按照所述数据读取请求从所述存储器装置中请求数据; 如果在所述请求数据从所述存储器装置返回时所述监视步骤检测到所 述存储流水线为可用,则所述输出步骤将所述请求数据从所述存储器装置 直接输出到所述多个执行单元。
17: 如权利要求16所述的数据处理系统,其特征在于: 所述存储控制单元包括一个用来在将从所述存储器装置接收的数据输 出到一级Cache之前暂时存储所述数据的缓冲器, 如果在包含所述请求数据的数据开始存储到所述缓冲器之后,所述监视 步骤检测到所述存储流水线变为可用,则所述输出步骤将所述请求数据从 所述缓冲器或一级Cache传输到所述多个执行单元中。
18: 如权利要求17所述的方法,其特征在于: 如果所述缓冲器已经开始存储包含所述请求数据的所述数据,但当所述 监视步骤检测到存储流水线为可用时,所述请求数据并未完全传输到所述 一级Cache中,则所述输出步骤将所述请求数据从所述缓冲器输出到所述 多个执行单元。
19: 如权利要求11所述的方法,其特征在于: 当所述指令单元没有将前台线程的指令调度到所述存储流水线时,所述 监视步骤将会检测到所述存储流水线为可用的。

说明书


多线程处理器中指令和关联读取请求的后台完成

    本发明涉及如下U.S申请,它们在此被作为参考文献:(1)U.S申请,序列号未知,名称“MULTI-ENTRY FUUY ASSOCIATIVETRANSITION CACHE,1996年12月9日递交,Donald L.FREERKSEN,Famaz MOUNES-TOUSSI,Peder J.PAULSON,John D.IRISH,及Lyle E.GROSBACH;(2)U.S申请,序列号未知,名称”METHOD AND APPARATUS FOR PRIORITIZING AND ROUTINGCOMMANDS FROM A COMMAND SOURCE TO A COMMANDSINK,1996年12月9日递交,Donald L.FREERKSENEY Peder J.PAULSON及(3)U.S申请,序列号未知,名称“METHOD ANDAPPARATUS FOR TRACKING PROCESSING OF A COMMAND”,1996年12月9日递交,Donald L.FREERKSEN及PederJ.PAULSON。

    本发明涉及一种多线程数据处理系统和方法,在第二线程指令执行时完成对第一线程的指令和关联读取请求的处理。该方法获得比用切换回第一线程的方法更高的处理效率。

    当今最通用的高效的单片微处理器结构是RISC结构,即精简指令系统计算机结构。随着半导体技术的发展,RISC结构的目的已变为改进处理器的设计以使得尽量在一个机器时钟周期内开始一条指令的执行。每指令所占时钟周期数(CPI)这一特征量被广泛用来表示高效计算机的结构特征。指令流水线技术和高速缓冲存储器的结构特征为CPI的提高提供了可能性。指令流水线执行允许后面的指令可以在前面发布的指令执行完毕之前开始执行。高速缓冲存储器允许指令在大多数情况下可以连续执行而不必等待整个主存存取时间。

    指令流水线技术包括分几阶段处理一条指令。每一阶段一般占用一个时钟周期。阶段数可以根据RISC结构的不同而改变,典型的流水线技术包括一个取指阶段,将指令取出。下面将更详细讨论的超标量结构中同样也包括一个调度/通用目标寄存器存取阶段,在此阶段中进行指令地译码并将其调度到正确的流水线上。为了简化描述,本文在讨论流水和超标量结构时将略过以上两个基本处理阶段;然而,必须了解在该结构中曾执行过这两阶段。

    在取指和调度/通用目标寄存器存取两个基本处理阶段之后,下一阶段,即如图1所示的阶段1,为地址阶段。在地址阶段中,处理器从寄存器中取操作数来进行寄存器-寄存器的标量运算,如算术运算、逻辑运算,或为执行存取指令计算虚拟内存地址。在数据或第二阶段,即图1所示的阶段2中,寄存器-寄存器的标量运算已经完成,或是存取指令已经通过计算出的虚拟内存地址访问了数据高速缓冲存储器,即D-Cache。第三阶段是一提交阶段,在此阶段中将标量运算的结果或取数指令所取得的数据存入到目标寄存器。

    图1阐明了指令A在一个三阶段流水线中的生命周期。为获得流水线技术的高效率,多条指令将同时在流水线的不同阶段中执行。

    图2表示了A、B、C三条指令在图1所示流水线中的执行情况。如果顺序非流水地执行的话,执行A、B、C三条指令将占用9个时钟周期;而采用流水线技术之后,只需要5个指令周期。

    常规RISC处理器的效率可以通过采用超标量结构来大大提高。在超标量结构中提供了多个操作单元或执行单元来并行地运行多条流水线。

    图3举例说明了一个典型的流水4路(4-way)超标量结构的流水情况。存取操作、算术运算、逻辑运算和转移运算都分别用独立流水线执行。转移运算通常相对独立于其它流水线执行,但各转移分支也像其它指令一样通过流水线,以保持相关于其它指令的某一分支的指令顺序。转移运算的执行包括转移目标地址的计算、条件转移时条件码的检测、根据转移目标地址取指令、取消程序中已取的转移之后的所有指令的执行和提交、为所取的转移改变程序计数器。这些步都在图3所示的1至3阶段和前面所讨论的两个初步处理阶段,取指阶段和调度/通用目标寄存器存取阶段中完成。

    在超标量结构中,一次只能将一条指令调度进流水线,而且指令之间的相关性将影响调度或使流水线阻塞。图3所示的例子表示了指令A到I的执行情况。在非流水线且非超标量处理器的情况下所有这些指令的执行最少将占用27个时钟周期,而在流水线且非超标量处理器的情况下最少将占用11个时钟周期。而在流水、4路超标量处理器情况下,所有指令A到I的执行只需要5个时钟周期。

    在这种流水线、超标量结构中,指令可以顺序或非顺序方式完成。顺序方式指每条指令只能在调度在它前面的所有指令执行完毕之后完成。非顺序方式指只要满足预先定义的规则,各条指令可以在调度在它前面的所有指令执行完之前完成。在流水线、超标量结构中,无论是顺序方式还是非顺序方式,都存在使流水线阻塞的条件。如果一条指令依赖于在它之前调度的指令的结果,而前一条指令尚未完成时就会造成流水线阻塞。

    例如,依赖于存/取指令的指令,如一遇到Cache未命中,读取请求将被阻塞直到该Cache未命中得到解决,即Cache命中。保持一较高命中率,如数据高速缓冲存储器中命中率是很重要的,特别是在涉及到大的数据结构的计算时。一次Cache未命中将导致流水线阻塞几个时钟周期,而且如果未命中率太高,引起的内存等待时间将是一个严重的问题。

    虽然作为主存的存储设备的速度在不断提高,但是,存储芯片与高档处理器之间的速度差距已经变得越来越大。因此,现在高档处理器的设计中很大一部分的执行时间被用来在Cache未命中时等待,除非内存等待时间容忍(tolerance)技术能够实现,否则内存访问延迟将在处理器执行时间中占更大的比例。

    现有的一种内存等待时间容忍技术是硬件多线程技术。通常,硬件多线程技术采用一个单片处理器来记录各个任务和线程的状态。通常包括对处理器中各个线程对应的寄存器进行复制。

    例如,本申请的受让人以PowerPC商标销售的采用RISC结构的处理器中,为了执行多任务,该处理器必须能记录N个状态以运行N个线程。因此,以下这些寄存器将复制N次:通用寄存器(GPRS)、浮点寄存器(FPRS)、条件寄存器(CR)、浮点状态控制寄存器(FPSCR)、计数器、连接寄存器(LR)、异常寄存器(XER)、保存还原寄存器0和1(SRR0和SRR1)以及一些特殊功能寄存器(SPRS)。另外,段后备缓冲器(SLB)也可以进行复制,也可以在每一段入口标上相应的线程标号。如果没有复制或标记,SLB将在线程切换时被刷新。而且,一些转移预测机制例如相关寄存器和返回栈也应该复制。所幸的是,处理器的一些大的功能,像一级指令高速缓冲存储器(L1 I-Cache)、一级数据高速缓冲存储器(L1 D-Cache)、指令缓冲器、存储队列、指令调度器、操作单元或执行单元、流水线、翻译后备缓冲器(TLB)和转移历史表等,都不再需要复制。当一个线程遇到延迟时,处理器将迅速切换到另一线程。该线程的执行将与前一线程的存储器访问延滞时间重叠起来。

    多线程技术存在两种类型:硬件多线程技术和软件多线程技术。而硬件多线程技术又具有两种基本形式。传统的形式是在处理器中保存N个线程或状态,并将所有线程在循环的基础上交错执行。由于在单个线程中各指令是独立的,所以这种形式消除了对任何流水线的依赖性。另一种多线程技术的形式是在较长时间的等待事件时进行线程切换。本发明的一个最佳实施方式中就采用硬件多线程技术和在较长时间的等待事件时进行线程切换的技术。

    多线程技术允许在当前线程中检测到使流水线阻塞的条件时将流水线用于其它独立线程的有用工作。下面将联系图4和图5来说明多线程技术,图4表示了未采用多线程技术的情形。图4举例说明了流水线、4路超标量结构中在存储流水线中的一条指令发生Cache未命中时的处理情况。假设指令D0后面的指令具有依赖于指令A0的数据。指令A0为一条存储指令,并有一次需要5个时钟周期来解决的Cache未命中情况。因此,在没有多线程的情况下,流水线将被阻塞直到A0的Cache未命中得到解决。结果,当A0在第三时钟周期发生Cache未命中时,处理器在时钟周期4到7阻塞,一直到A0所要的数据在时钟周期7返回并在时钟周期8提交给A0。如图所示,指令在时钟周期9和10才得到继续执行。

    相比之下,硬件多线程技术允许在第一个线程遇到Cache未命中时处理器仍能工作。如图5所示,跟图4中一样,指令A0同样在第三时钟周期发生Cache未命中。然而,图5表示了采用硬件多线程技术时的处理;结果,在第四时钟周期线程0的指令被挤出流水线,而线程1的指令被调度入流水线。处理器在时钟周期4至7处理线程1。请注意,在非多线程结构中,处理器在这些时钟周期中仅仅只能等待。线程的切换可能会占用一个或多个时间周期,为了说明方便起见,本发明的图中并未将线程切换的时间计算在内。

    处理器将继续处理线程1直到切换回线程0,为了便于讨论,假定当指令M1遇到Cache未命中时会再次切换回线程0。熟练的技术人员知道,存在多个线程之间互相切换的技术。例如,在1993年六月IEEE微处理器第十三卷第三期第48至60页,Agarwal等所著的《Sparcle:大规模多处理器集的一种改良设计》中就说明了一种可能的线程切换的方法。

    由于指令M1遇到Cache未命中,线程1的指令被从流水线中挤出,线程0的指令A0、B0、C0和D0在第十个时钟周期时被调度入流水线。如上面所讨论的,D0后面的指令都依赖于指令A0的完成。线程0的指令在第十一时钟周期时开始继续处理。在后面的周期中,由于A0所需要的数据已经装入到数据Cache中,所以A0将出现Cache命中。因此,线程0的指令能在处理器中继续执行。

    遗憾的是,在常规数据处理系统的多线程结构中,第一线程中遇到Cache未命中的指令必须等待,直到该线程再次被激活或成为前台线程才能通过流水线进行处理。例如,上文所引用的Agarwal所著的文章中公开了这样一个系统。因此,此结构在处理依赖于Cache未命中指令的指令之前,需要有一个完成周期。

    本发明的一个目的是提供一种数据处理系统和方法,用来在执行第二线程指令时完成对第一进程的指令和关联读取请求的处理,以获得比用切换回上一线程的方法更高的处理效率。

    本发明的另一个目的是提供一种多线程、超标量结构,该结构具有在处理第二个线程时完成对处于后台的第一线程中遇到Cache未命中的指令的处理的能力。

    本发明的另一目的是提供一种具有改进的每指令所占时钟周期数(CPI)的数据处理系统和方法。

    本发明的目的通过提供一个至少执行第一和第二两个线程的数据处理系统和方法来实现。在执行第二线程的过程中,数据处理系统将完成与第一线程的指令相关的数据读取请求。完成此数据读取请求后,该数据处理系统将与第二线程的指令一起处理第一线程中与该请求相关的指令。因为,将第一线程的指令与第二线程的指令一起处理的话,就不必通过线程切换回到第一线程再进行处理,所以,数据处理系统能更有效地处理第一线程。

    更特别的是,该数据处理系统和方法包括组成多条处理流水线的多个执行单元。多个处理器流水线对指令进行处理,并包括一存储流水线。该数据处理系统进一步包括一个指令单元和一个存储控制单元。指令单元为多个执行单元提供指令,并通过这些执行单元来控制多个线程的执行。当发生Cache未命中时,指令单元向存储控制单元发出一数据请求,要求获得该未命中的数据。

    如果在存储流水线中的第一线程的指令遇到Cache未命中,指令单元决定进行线程切换的话,指令单元将开始第二线程的处理。同时,对应于指令单元发出的数据读取任务,存储控制单元从高级存储器请求未命中的数据。在第二线程的处理过程中,由于不可能总是有指令调度进流水线使流水线始终为满,所以,存储流水线将会出现未用到的时隙。当所请求的数据从高级存储器返回之后,存储控制单元将第一线程中遇到Cache未命中的指令发送到存储流水线中一个未用到的时隙中。第一线程的这条指令将与第二线程的指令一起进行处理。由于第二线程是当前调度进流水线的线程,所以第二线程的指令被视为前台指令。第一线程中遇到Cache未命中的这条指令将被视为后台指令与前台指令一起处理。这样,第一线程中遇到Cache未命中的这条指令就可以作为后台指令进行处理,而不必通过线程切换再回到第一线程进行处理,这条指令也就不必再调度进流水线了。作为代替,其它依赖于前面指令的指令就可以马上调度入流水线,因此,就比常规的结构要节约一个完整的处理周期。

    本发明的其它目的、特征、特性;该结构涉及的元件的方法、操作、功能;部件的组合;生产的节约等均将在以下的最佳实施方式的详细说明和所附的图解中明确说明。所有这些构成本说明书的一部分,其中,不同的图中的相同的参考数字表示相对应的部分。

    通过下面所给出的详细描述和图,将会得到对本发明充分的理解,所给出的图只是作为举例说明,而并非对本发明的限制,其中:

    图1示出流水线中一条指令的处理;

    图2示出流水线中多条指令的处理;

    图3示出在流水线、4路超标量结构流水线中指令的处理;

    图4示出在流水线、4路超标量结构流水线中出现Cache未命中时指令的处理;

    图5示出在流水线、多线程、4路超标量结构流水线中指令的处理;

    图6A示出根据本发明的数据处理系统的高层框图;

    图6B更详细地示出图6A中的存储控制单元;

    图7示出本发明的处理器的流水线的流程图;

    图8示出本发明的一条读取指令的处理;

    图9示出本发明的一数据请求的处理;

    图10A和10B示出本发明的后台处理的完成;

    图11示出本发明的流水线、多线程、超标量结构流水线中对指令的处理。

    参考图特别是图6A,其中描述了一个数据处理系统10的高层框图,数据处理系统10可能将用于实现本发明的方法和系统。在最佳实施方式中,数据处理系统10中的处理器12为一个单独的集成电路、流水线、超标量微处理器,可以用任何计算机结构实现,像以PowerPC注册商标销售的RISC处理器族,例如,国际商用机器公司销售的PowerPC 604微处理器芯片。

    下面将要讨论,数据处理系统10包括各个单元、寄存器、缓冲器、存储器以及所提供的其它部件,例如,在一个PowerPC RISC处理器中,以上部件均用集成电路更好地组织。可以理解,在图6A和图6B中,为了清楚起见,所有各种数据通路都以简化了的形式表示。如一个熟练的技术人员所理解的,要求各种元件有独立的输入和输出的数据通路。另外为了清楚起见,在某些元件中,从图6A和图6B中省去了许多数据和控制线。数据处理系统10可以按照RISC技术运行,也可以按有经验的技术人员所能想到的其它众所周知的计算技术运行。

    首先,将对图6A和6B所示的各种单元、寄存器、缓冲器、存储器等,以及它们的互连关系加以说明。然后,图6A和6B所示的数据处理系统的运行过程也将参照图7到11进行说明。

    如图6A所示,数据处理系统10最好包括一个主存储器14、一个二级Cache即L2 Cache 20、一个一级数据Cache即L1 D-Cache 16以及一个一级指令Cache即L1 I-Cache 18,以上部分通过各种总线连接和一个存储控制单元即SCU 22实现互连。如图6A所示,SCU 22包括一个Cache线(Cache line)缓冲器20来将L1 D-Cache 16连接到L2 Cache 20、主存储器14以及以后将要说明的许多执行单元。

    Cache线缓冲器21为在此作为参考文献,并与此一道同时申请的美国申请中的过渡Cache。该申请序号不详,名为“多入口全相联过渡Cache”,发明人为Don FREERKSEN,Farnaz MOUNES-TOUST,PederJ.PAULSON,John D.IRISH,和Lyle E.GROSBACH。

    一级数据Cache 16和一级指令Cache 18已作为处理器的一个部分在芯片上实现,而主存储器14和二级Cache 20则在芯片外实现。二级Cache 20应为比主存储器14速度更高的存储器系统,并且,通过按各种周知的技术在二级Cache 20中存储所选数据,由于对主存储器14的访问而引起的存储延时就可以减到最小。如图6A所示,二级Cache 20和主存储器14通过存储控制单元即SCU 22来与一级指令Cache 18和指令单元34相连。对此将对照图6B进行更详细的说明。

    从一级指令Cache 18来的指令将输出给数据处理系统10中的通过各种执行单元来控制多线程的执行的指令单元34。数据处理系统10中各种执行单元至少包括一个转移单元26,一个定点单元28,存储控制单元22,一个浮点单元32。进一步来讲,在一个最佳实施方式中,指令单元34采用任何众所周知的技术来减小所谓的“系统颠簸”,即就是许多次连续的线程切换。

    除了图6A所描述的各种执行单元之外,熟练的技术人员会理解这一点,即现代超标量微处理器系统通常包括上述每一执行单元的多种版本。还可以增加其它执行单元而不会违反本发明的精神和范围。许多这些单元将有一个来自通用寄存器GPRs 36、浮点寄存器FPRs 40等各种寄存器的输入源操作数信息。另外,多个专用寄存器SPRs 38可能被按照本发明的方法和系统用来存储线程切换时的处理器状态信息。如图6A所示,存储控制单元SCU 22和Cache线缓冲器21直接连到通用寄存器GPRs 36和浮点寄存器FPRs 40,而通用寄存器GPRs 36被连到专用寄存器SPRs 38。

    如图6A所示,为了在存储控制单元SCU 22和指令单元34之间进行通讯,在它们之间设置了一总线。例如,通过该总线,指令单元34发出数据请求给存储控制单元SCU 22,同样,存储控制单元SCU 22也可以通知指令单元34,如,通知指令单元34二级Cache发生未命中。另外,提供了一个包含虚拟地址向实地址映射的所谓的“翻译后备缓冲器”即TLB 24。虽然本发明中并未说明,还可以装备各种另外的高级存储器映射缓冲器,如工作形式与翻译后备缓冲器24相似的段后备缓冲器。

    图6B更详细地说明了存储控制单元SCU 22。如图6B所示,存储控制单元SCU 22包括从数据多路转换器102接收数据的Cache线缓冲器21。Cache线缓冲器21接收从未命中数据跟踪序列发生器100发出的控制信号。如以下将要详细讨论的本发明的一最佳实施方式中,序列发生器100包括三个序列发生器来处理和跟踪指令与或数据读取请求,并按组合逻辑实现。

    如图6B所示,数据多路转换器102从一级数据Cache 16,Cache线缓冲器21,执行单元,二级Cache 20以及主存储器14接收数据。从这些数据源传来的数据被数据多路转换器102作为对接收自序列发生器100的选择信号的响应而输出。序列发生器100输出控制信号到数据多路转换器102、Cache线缓冲器21、二级Cache 20。序列发生器100还从主存储器14接收控制信号并发送控制信号到主存储器14。数据多路转换器102的输出送到一级数据Cache 16、执行单元以及Cache线缓冲器21。为了清楚起见,Cache线缓冲器21和二级Cache 20以及主存储器14之间的连接没有表示出来。

    此外,如图6B所示,序列发生器100输出一个选择信号到从二级Cache20和主存储器14接收数据的指令多路转换器104。根据序列发生器100所输出的选择信号,指令多路转换器104将来自这些数据源的数据输出到一级指令Cache 18和指令单元34。在产生上面所讨论的控制和选择信号的过程中,序列发生器100访问并且修改对应于一级数据Cache 16的一级目录106和对应于二级Cache 20的二级目录108。对一级目录106和二级目录108的访问和修改可以根据已有的众所周如的技术来实现。图6B所示的存储控制单元SCU 22的操作将在下面详细讨论。

                        本发明的流水线结构

    下面,将参照图7讨论处理器12所实现的流水线结构。该流水线结构包括四条流水线:存储流水线、算术流水线、逻辑流水线和转移流水线。像本发明背景部分参照图3所讨论的一样,这些流水线包括相同的流水阶段。然而,有一点必须明确,本发明不是只限于四条流水线结构,而是可以为多于或少于四条流水线的结构。此外,流水线也可以重复而不会违反本发明的精神和范围。

    前面已经参照图1至3说明了流水线结构具有三个流水阶段,应该理解的是,对于调度/通用寄存器存取和指令的译码等初步处理步也同样可以实现。另外,流水阶段的数目没有限制,可以像有经验的计算机设计者通常所做的那样进行增加或减少。

    虽然,像图1至3那样,流水线结构包括相同的流水阶段,但存储流水线的第三阶段的结构与图1至3所示的有很大的区别。像上面所讨论的,本发明包括三个序列发生器,在图7中为了说明方便将它们标注为序列发生器100a、100b和100c。然而,序列发生器的数目并不限于三个,而是可以由计算机设计者按照效率特性的要求进行增加或减少。无论是多线程还是非多线程环境中,这多个序列发生器100a、100b和100c可以使处理更方便。序列发生器专门用来用于实现对一级数据Cache未命中和一级指令Cache未命中时的处理。

    例如,在指令的处理过程中,如果指令单元34遇到一级指令Cache未命中,则指令单元向存储控制单元SCU 22发一指令请求。存储控制单元SCU 22检测序列发生器100a、100b和100c中是否可用来处理该请求。如果为可用,则该可用的序列发生器将执行指令读取任务使得处理能够继续进行。同样地,如果遇到一级数据Cache未命中,则向存储控制单元SCU22发出数据请求,存储控制单元SCU 22检测序列发生器100a、100b和100c中是否可用来处理该请求。如果为可用,则该可用的序列发生器将处理此一级数据Cache未命中。

    由于提供了三个序列发生器,本发明的存储控制单元SCU 22能够同时处理三个这样的请求。相反,像图3所示的常规流水线结构只提供一单个序列发生器,因此,这种系统必须等该序列发生器变为可用时才能给其分配一新Cache未命中处理任务。

    通过多序列发生器组100,不论Cache未命中指令是否存在数据依赖,对单线程或多线程指令的处理都可以继续进行。因此,当序列发生器100a处理一个一级数据Cache未命中时,后面对该请求数据没有依赖的指令可以继续处理,因为另外两个序列发生器100b和100c可以用来处理下一次Cache未命中。

                        本发明的操作

    现在参考图6A至11对本发明的操作进行说明。

                        指令读取请求处理

    当指令单元34从一级指令Cache 18请求指令并遇到Cache未命中时指令单元34向存储控制单元SCU 22发一指令队列供应请求。存储控制单元SCU 22又向二级Cache 20发指令请求,如果二级Cache 20中还没有,则向主存储器14发请求。当存储控制单元SCU 22检测到所请求的指令已经返回时,存储控制单元SCU 22直接将所请求的指令分别输出到指令单元34和一级指令Cache 18以供处理和存储。

    图8详细说明了指令读取任务的处理。在S58步中,指令单元34向存储控制单元SCU 22发出指令读取请求。然后,在S60步中,存储控制单元SCU 22检测序列发生器组100中是否有可用序列发生器来处理该指令读取任务。一旦存在可用序列发生器,该序列发生器则被指定来处理该指令读取任务,在S62步中该序列发生器将指令请求送到二级Cache 20。作为对该请求的响应,二级Cache 20输出一可能包含有所请求指令的Cache线。但由于一个Cache地址可能对应多个实地址,在这特定Cache地址中的数据或指令可能不是所请求的数据或指令。根据存储在二级Cache目录108中的地址,序列发生器100采用已有的众所周知的的技术检测从二级Cache20中返回的数据或指令是否为所请求的数据或指令即检测数据或指令是否正确。假如是正确的,在S66步中序列发生器100向指令多路转换器104输出一选择信号,使指令多路转换器104将二级Cache 20提供的数据直接输出到一级指令Cache 18和指令单元34。

    然而,假如序列发生器100检测出从二级Cache 20中返回的数据或指令为不正确的,则在S65步中,序列发生器100向主存储器14发出指令请求。当主存储器14要输出所请求的数据时,主存储器14通过一控制线通知序列发生器100。在S66步中,作为响应,序列发生器100向指令多路转换器104输出一选择信号,使指令多路转换器104将主存储器14提供的数据直接输出到一级指令Cache 18和指令单元34。这样,指令单元34可以立即进行所请求指令的处理,而不必等待以下两步:(1)将指令存到一级指令Cache 18中;(2)从一级指令Cache 18中读出该指令。

                        数据读取请求处理

    为了响应执行单元的数据请求,存储控制单元SCU 22从一级数据Cache16中获取所请求的数据,并将该数据输出到请求该数据的执行单元或单元组;下文称为“请求执行单元或单元组”。如果存储控制单元SCU 22遇到一级数据Cache未命中,则存储控制单元SCU 22将检测序列发生器100中是否有可用序列发生器来处理该数据读取任务,如果有,该可用序列发生器则被指定来处理该数据读取任务。就像处理一级数据Cache未命中一样,序列发生器100首先试着从二级Cache 20中获得数据,假如数据不在二级Cache 20中,序列发生器100将向主存储器14请求数据。同样,所请求的数据可以从二级Cache 20或主存储器14中作为Cache线的部分输出。

    当序列发生器100检测到二级Cache 20或主存储器14正在返回所请求的数据时,序列发生器100检测请求数据的执行单元或单元组是否能接受此请求的数据。假如能够接受,则所请求的数据在存入一级数据Cache 16之前先输出到请求数据的执行单元或单元组。否则数据先存到Cache线缓冲器21,然后传输到一级数据Cache 16。如果请求数据的执行单元或单元组在包含所请求数据的Cache线完全传输到一级数据Cache 16之前变为可用,则Cache线缓冲器21将所请求数据输出到请求数据的执行单元或单元组。

    图9详细说明了在S28步中,序列发生器100被指派完成从二级Cache20或主存储器14请求数据的数据读取任务时,该数据读取任务的处理情况。如图9所示,在S30步中,就像上面参照图8和一次一级指令Cache未命中所讨论的一样,序列发生器100检测包含请求数据的Cache线是否正从二级Cache 20或主存储器14返回。

    如果序列发生器100检测到请求数据正在返回,序列发生器100接着检测请求数据的执行单元或单元组是否能接收请求的数据。序列发生器100检测存储流水线中是否存在时隙,以使请求该数据的指令能够得到处理。如果在S32步中序列发生器100检测到能接收请求的数据,则在S34步中,序列发生器100向数据多路转换器102发出选择信号,使得从二级Cache 20或主存储器14返回的请求的数据直接输出到执行单元。

    在序列发生器100的控制下,所请求的数据存储到Cache线缓冲器21中并随后输出到一级数据Cache 16。当数据多路转换器102将包含所请求数据的Cache线输出到执行单元时,该Cache线还同时提供给Cache线缓冲器21。序列发生器100通知Cache线缓冲器21存储该Cache线。当Cache线缓冲器21开始存储包含所请求数据的该Cache线时,Cache线缓冲器21输出一指示此Cache线在Cache线缓冲器21的存储器中存储的位置的存储地址。序列发生器100保存该存储地址并对应于存储在Cache线缓冲器21的该Cache线中数据的每一部分,例如,用一个数据字,设置一个标志。

    为了将该Cache线存入一级数据Cache 16,序列发生器100根据存储地址指示Cache线缓冲器21按数据部分的形式输出该Cache线,例如,一个字一个字地。序列发生器100同样使数据多路转换器102输出从Cache线缓冲器21输出的数据,并令一级数据Cache 16存储这些数据。

    在S32步中,假如序列发生器100检测到请求数据的执行单元或单元组不能接收数据,则在S36步中序列发生器100作如下工作:(1)使数据多路转换器102输出从二级Cache 20或主存储器14来的数据;(2)控制Cache线缓冲器21存储这些请求的数据。序列发生器100继续监视请求数据的执行单元或单元组检测它何时能接收所请求的数据。

    当序列发生器100检测到请求数据的执行单元或单元组能接收所请求的数据时,接着,在S40步中,序列发生器100检测包含所请求数据的Cache线是否已经全部从Cache线缓冲器21传到了一级数据Cache 16。序列发生器100通过检测是否命令过Cache线缓冲器21从包含所请求的数据的Cache线中输出所有数据部分存储到一级数据Cache 16中来完成上述检测。如果还未全部传输完,则在S42步中,序列发生器100将完成如下工作:(1)控制Cache线缓冲器21输出所请求的数据;(2)输出一选择信号到数据多路转换器102,使它将所请求的数据从Cache线缓冲器21中输出。然后执行单元接收并处理所请求的数据。然后包含所请求数据的Cache线在一级数据Cache 16中的存储也最终完成。

    在S40步中,假如序列发生器100检测到包含所请求数据的Cache线已经完全传输到一级数据Cache 16中,则在S44步中,序列发生器100完成如下工作:(1)控制一级数据Cache 16输出所请求的数据;(2)输出一选择信号到数据多路转换器102,使它将所请求的数据从一级数据Cache 16中输出。然后执行单元接收并处理所请求的数据。

    由于在所请求的数据从二级Cache 20或主存储器14返回之后,只要执行单元一旦可用就可以将所请求的数据传到执行单元中,通过这样,处理效率得到了提高。在许多例子中执行单元不必等数据通过以下三个步骤中的至少一个传来:(1)从高级存储器到Cache线缓冲器;(2)从Cache线缓冲器到一级数据Cache;(3)从一级数据Cache到执行单元。

    在上面所讨论的方法中,在包含所请求数据的Cache线已经开始传输到Cache线缓冲器21并尚未完全传输到一级数据Cache 16时,序列发生器100从Cache线缓冲器21中获得所请求的数据。在另一种实施方式中,虽然包含所请求数据的Cache线已经开始传输到Cache线缓冲器21,如果在该Cache线中的请求数据传输到Cache线缓冲器21之前执行单元为可用的话,序列发生器100就让所请求的数据直接从二级Cache 20或主存储器14输出到执行单元。

                            指令的后台完成

    现在说明在多线程环境下本发明的另一操作。根据这一操作,本发明的数据处理系统可以在第二线程的指令执行时完成对第一线程的指令和关联读取请求的处理,从而获得比通过线程切换回到第一线程处理更高的处理效率。

    如果第一线程的指令在存储流水线中遇到一级数据Cache未命中,指令单元34就会决定进行线程切换,指令单元34将开始第二线程的处理。同时指令单元34将读取未命中数据的任务分配给存储控制单元SCU 22,SCU 22将至少从二级Cache 20或主存储器14中的一个中请求未命中数据。

    在第二线程的处理过程中,由于不可能总有指令调度到存储流水线中使它始终为满,所以在存储流水线中总会出现未用到的时隙。在所请求的数据从二级Cache 20或主存储器14中返回之后,SCU 22将第一线程中遇到Cache未命中的指令发送到存储流水线的未用到的时隙中。于是,第一线程的这条指令就将与第二线程的指令一起处理。因为第二线程是当前调度到流水线中的线程,所以第二线程的指令被视为前台指令,第二线程被视为前台线程。因此,与前台指令一起处理的第一线程的指令被视为后台指令,第一线程被视为后台线程。

    这样,第一线程中遇到Cache未命中的指令可以在后台进行处理,所以当切换回第一线程时,这条指令就不必再调度进流水线。所以,依赖它的指令可以立即调度进流水线;因此,比常规结构节省了一个时钟周期。下面将参照图10A-11对后台完成的操作进行详细讨论。

    图10A和10B说明了根据本发明后台处理的完成,而图11则说明了这一操作过程中指令通过本发明的流水线结构的一个实例。为了便于讨论,先假设第一线程即线程0的指令正在被处理器12处理。因此,图11说明了正在流水线中处理的线程0的指令。为了表示这些指令是来自线程0,这些指令都被标上后缀0。

    如图11所示,在第三周期中,指令A0遇到一次一级数据Cache未命中。不像现有的数据处理系统那样,而是B0、C0和D0三条不依赖于指令A0的指令也在第三周期提交,使得这三条指令在切换回线程0时不必被再次调度进流水线。这就是如图10所示的第S68步,即后台完成处理的开始。

    一旦一条前台指令遇到一次一级数据Cache未命中,SCU 22检测序列发生器100的100a、100b和100c是否能够用来处理与该一级数据Cache未命中相关的数据请求任务。假如存在一可用的序列发生器,该可用的序列发生器被指定来处理此指令读取任务,在S70步中,像上面参照图8和一次一级指令Cache未命中所讨论的那样,指定的序列发生器从二级Cache20或主存储器14请求数据。

    同时,如图11的第四时钟周期所示,在图10A的S72步中进行一次线程切换。为了进行讨论,本发明后台完成处理的说明先假设Cache未命中后进行了一次线程切换。任何线程切换方法都可以与本发明配合使用。例如,线程切换可以在二级Cache未命中或翻译后备缓冲器(TLB)Cache未命中等情况下进行,而不一定只是在一级数据Cache未命中时。

    因此,如图11中第四时钟周期所示,流水线开始处理新的线程即线程1的指令。为了表示这些指令是来自线程1,在图11中这些指令都被标上后缀1。

    在图10A的S74步中,指定的序列发生器100检测所请求的数据是否正从二级Cache 20或主存储器14中返回。一旦指定的序列发生器检测到数据正在返回,则序列发生器检测在S76步中存储流水线是否可用。换句话说,就是序列发生器检测是否有前台的指令被调度到流水线的第一个流水阶段中。如果没有前台指令被调度到流水线的第一个流水阶段中,则称存储流水线为可用的。因此,在S78步中,指定的序列发生器100将遇到Cache未命中的后台指令从后台线程即线程0发送到存储流水线,并将从二级Cache 20或主存储器14中返回的所请求的数据直接输出到执行单元。如上面所讨论的,这随后的操作通过向图6B中的数据多路转换器102输出一选择信号使数据多路转换器102从二级Cache 20或主存储器14之一输出所请求的数据来完成。像参考图9的S34步所讨论的那样,在序列发生器100的控制下,所请求的数据还被存储到Cache线缓冲器21中,随后又存储到一级数据Cache 16中。

    如果在S76步中,指定的序列发生器100检测到存储流水线不是可用的,则处理继续进行到图10B的S80步。在S80步中开始包含所请求数据的Cache线到Cache线缓冲器21的传输。在S82步中指定的序列发生器100继续监视存储流水线,检测它是否为可用的。一旦存储流水线变为可用,就像参照图9中的S40步所讨论的一样,在S84步中,指定的序列发生器100检测包含所请求数据的Cache线是否已经完全从Cache线缓冲器21传输到一级数据Cache 16中。

    如果包含所请求数据的Cache线尚未传输完毕,则在S86中,序列发生器100完成如下工作:(1)将遇到Cache未命中的后台指令发送到存储流水线;(2)控制Cache线缓冲器21输出所请求的数据;(3)输出一个选择信号到数据多路转换器102,使得所请求的数据从Cache线缓冲器21通过数据多路转换器102输出到执行单元。在序列发生器100的控制下,Cache线缓冲器21将完成包含所请求数据的Cache线到一级数据Cache 16的传输。

    在S84步中,如果指定的序列发生器100检测到包含所请求数据的Cache线已经完全存储到一级数据Cache 16中,序列发生器100完成如下工作:(1)将遇到Cache未命中的后台指令发送到存储流水线;(2)控制一级数据Cache 16输出所请求的数据;(3)输出一个选择信号到数据多路转换器102,使得所请求的数据从一级数据Cache 16通过数据多路转换器102输出到执行单元。

    图11说明了上面所讨论的后台完成处理的一个实例。如图11所示,指令A0遇到的Cache未命中对应的所请求的数据在第六个时钟周期返回。图11的说明假设前台线程即线程1的指令并未在这个时钟周期被调度到存储流水线。因此,指令A0在第六时钟周期被送入存储流水线,并出现在存储流水线的第一流水阶段。当然,熟练的技术人员应当理解,在数据返回时,前台线程可能会正在使用存储流水线的设备,这样,必须经过几个时钟周期才能使存储流水线可用于后台完成。由于当线程0仍为后台线程时,指令A0已经被调度到存储流水线,所以指令A0被表示为“a0”表示为一条后台指令。(图11中错标为00)

    如图11的第六周期所示的,一旦后台指令被送入存储流水线,则指令在第七、第八周期中得到处理。当对应于这条指令的后台线程切换回前台时,这条指令就不必再次被调度到存储流水线中。所以在后台完成的指令后面的指令就可以被调度到流水线中。

    例如,如图11所示,在第九周期时线程1的指令M1遇到了Cache未命中。因此,第十周期时发生线程切换。指令E0、F0、G0和H0而不是指令A0到D0,被调度到流水线的最开始。像第十一周期中所表示的,线程0的处理重新继续。然而,如果指令A0在后台尚未完成处理,则指令A0到D0在线程切换后要被重新调度。

    图11和图5的比较表明,由于指令B0、CO和D0已经在第三周期提交完毕,而A0已经在后台完成,本发明的后台完成Cache未命中处理的方法将处理时间整整缩短了一个时钟周期。

    虽然本发明已经根据当前认为最实用和最佳的实施方式进行了说明,但应当理解,本发明不限于公开的这一实施方式,相反,还包括在所附的权利要求书说明的精神和范围之内的不同的修改及等价的方案。

多线程处理器中指令和关联读取请求的后台完成.pdf_第1页
第1页 / 共37页
多线程处理器中指令和关联读取请求的后台完成.pdf_第2页
第2页 / 共37页
多线程处理器中指令和关联读取请求的后台完成.pdf_第3页
第3页 / 共37页
点击查看更多>>
资源描述

《多线程处理器中指令和关联读取请求的后台完成.pdf》由会员分享,可在线阅读,更多相关《多线程处理器中指令和关联读取请求的后台完成.pdf(37页珍藏版)》请在专利查询网上搜索。

数据处理系统包括组成多条处理流水线的多个处理单元。流水线对指令处理并包括一存储流水线。系统还包括指令单元和存储控制单元。指令单元向执行单元发送指令,并通过它们控制多线程的执行。如果第一线程的指令在存储流水线中遇到了一次Cache未命中,则指令单元开始处理第二线程。指令单元向存储控制单元发出数据请求。当所请求数据返回后,第一线程遇到Cache未命中指令调度到存储流水线中一未用到的时隙。第一线程该指令。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1