CN1226700A - 高性能推测性未对齐加载操作 - Google Patents
高性能推测性未对齐加载操作 Download PDFInfo
- Publication number
- CN1226700A CN1226700A CN99101041A CN99101041A CN1226700A CN 1226700 A CN1226700 A CN 1226700A CN 99101041 A CN99101041 A CN 99101041A CN 99101041 A CN99101041 A CN 99101041A CN 1226700 A CN1226700 A CN 1226700A
- Authority
- CN
- China
- Prior art keywords
- data
- access
- unjustified
- instruction
- load
- 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
- 238000000034 method Methods 0.000 claims abstract description 11
- 230000004044 response Effects 0.000 claims abstract description 4
- 230000008521 reorganization Effects 0.000 claims description 5
- 101000911390 Homo sapiens Coagulation factor VIII Proteins 0.000 claims description 2
- 102000057593 human F8 Human genes 0.000 claims description 2
- 229940047431 recombinate Drugs 0.000 claims description 2
- 238000005215 recombination Methods 0.000 claims 2
- 230000006798 recombination Effects 0.000 claims 2
- 238000013500 data storage Methods 0.000 claims 1
- 238000012856 packing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 101001009517 Homo sapiens Probable G-protein coupled receptor 32 Proteins 0.000 description 3
- 102100030321 Probable G-protein coupled receptor 32 Human genes 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008676 import Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002650 habitual effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明的一个方面有关在具有数据高速缓存和寄存器文件的超标量处理器中处理装入指令的一种方法。在一个实施方案中,该方法包括以下步骤:调度一条未对齐装入指令,以存取在高速缓存中未对齐的一个数据块;在继续调度对齐指令时,根据未对齐装入指令,对高速缓存生成一个第一存取和一个最终存取,存储从第一存取取回的数据,直到可以得到来自最终存取的数据;将来自第一和最终存取的数据按装入指令所要求的顺序重组;把重组好的数据存储到寄存器文件。
Description
本发明大体关于计算机处理器的领域,具体地,有关被集成到一个单个微处理器芯片上的处理器。更加具体地,本发明有关未对齐的存储数据的推测性存取。
提供更加快速的微处理器是当今处理器设计的一个主要目标。已经采用了许多不同的技术,来改善处理器性能。极大地改善了处理器性能的一个技术是高速缓冲存储器(cache)的使用。正如此处所使用的,高速缓冲存储器指的是一组存储器存储单元,它们在微处理器本身上形成,所以比位于微处理器芯片之外的其它类型的存储器(例如RAM或磁盘)有更快的存取时间。通过将频繁使用的数据的一个拷贝存储在高速缓存中,处理器能够在需要这些数据时存取高速缓存,而不必到“芯片外”去获得信息,这大大增强了处理器的性能。
不过,有些问题与高速缓冲存储器相关。其中一个问题出现在高速缓存中的数据相对于高速缓存边界未对齐的时候。尽管许多较新的软件编译器都尽力避免未对齐的问题,然而仍有某些类型的操作,例如FORTRAN编程语言中惯用的COMMON语句,会频繁地引起高速缓存未对齐,所以,为保持整个软件的能力,一个处理器必须具有处理未对齐的高速缓存数据的能力。参照图1A和1B,将更详细地描述了高速缓存中未对齐数据的问题。
图1A是一个描述常规高速缓存的内容的图形,该高速缓存例如是在IBM公司的POWER PC处理器家族中使用的高速缓存。如图所示,高速缓存100包含一些“高速缓存行”,每个高速缓存行是128字节宽。不过,在任何单次存取中,最多能从高速缓存中读8个字节。正如此处所用的,术语“字”指的是一个四字节数据块,术语“双字”指的是一个八字节数据块。图1A示出了高速缓存行0中的一个双字。第一个字是xxab,第二个字是cdxx,其中a,b,c,d是需要的数据字节,“x”代表不需要的数据字节。一般地,处理器被设计为允许在处理器执行单元和高速缓存间进行n位宽的传送。为了举例,假设存取图1A所示高速缓存的处理器允许32位或一个字宽的数据传输。高速缓存100的任何高速缓存行中的任何字,都可由单个装入指令取出。类似地,任何高速缓存行中的任何字都可由单个存储指令写入。若处理器请求包含字节a,b,c,d的字,则由以上可见,只需单个装入指令来从高速缓存中得到数据的全部四个字节,这是因为所有的所要求数据都位于高速缓存行的单个双字中。
现参照图1B,示出了存储在高速缓存100中的同一数据,不过,这次它相对于高速缓存边界来说是未对齐的。特别地,可以看到,所要求字的a,b,c字节都存储在高速缓存行0中,而字节d被存储在高速缓存行1中。现在,处理器必须对高速缓存做两次存取以获得数据的所有四个字节。而且,因为数据是在两次分开的存取操作中从高速缓存中取出的,所以,在它被写入处理器的一个结构寄存器中之前,必须被重组。
图1C大致示出了用于重组由一个高速缓存存取返回的未对齐数据的一个常规电路。电路300一般被称为一个装入格式化器。格式化器包括格式化器控制逻辑302,它提供所需的控制信号以操作电路300的其它部件。格式化器300中还包括一个旋转器304,归并锁存器306和一个多路复用器308。旋转器从高速缓存中接收数据,并依据从格式控制逻辑302接收的信号,将数据组织成8字节的块,在旋转器304中数据能被移位到任何期望的八位位置。在当前情况下,被旋转到旋转器最左边位置的字节a,b和c被送到归并锁存器306中,它在处理器对高速缓存的行1做第二次存取时,保存该数据。在处理器存取高速缓存行1时,处理器取出字节d并将它送给旋转器304,旋转器304将该字节旋转到左边第四个字节位置。然后,字节d与来自归并锁存器306的字节a,b和c一起被直接送到多路复用器308中。以这种方式,数据被正确地重组并随后送到处理器的结构寄存器中。
超标量处理器能得到超过常规标量处理器的性能优势,是因为它们允许不按程序顺序执行指令。以这种方式,一个执行较慢的指令将不会使随后的指令停止执行,该随后的指令可以在较慢指令未决时,利用处理器上的其它资源执行。
不过,对高速缓存的未对齐存取不能用于超标量处理,因为存在数据不按顺序从高速缓存中返回的可能性。特别地,再参照以上例子,如果由于某种原因,第二个装入指令在第一个装入指令之前完成,则包含字节d的数据将首先进入格式化器,然后是包含字节a,b,c的数据。在这种情况下,当数据被重组时,字节的顺序是错误的。对该问题的一个解决方法是禁止未对齐高速缓存指令被推测地执行。换句话说,当超标量处理器认识到要出现一个对高速缓存未对齐存取时,它停止发布该未对齐高速缓存存取指令之后的指令,并停下来等待在该高速缓存存取指令之前发布的指令结束。然后,它按顺序处理这两个高速缓存存取指令。这种方式可以保证未对齐高速缓存存取按顺序完成。尽管解决了以上所提问题,但它也降低了处理器性能。于是,本发明的一个目的是提供一个超标量处理器,它允许推测地执行未对齐高速缓存存取指令。下面的描述将进一步揭示本发明的目的和优点。
在本发明的一个方案中,高速缓存存取指令,例如装入和存储,被提供有一个标记,将每条指令标记为第一个,最后一个或非未对齐指令。在调度时,若认识到指令是一个未对齐高速缓存存取,则由装入/存储单元控制逻辑将其标记为“第一”。同时,未对齐/忙锁存器中的一位被置位,该锁存器是由装入/存储单元逻辑操作的。在调度所需数据存取的第二条高速缓存存取指令时,该指令被标记为“最终”。一旦调度“最终”高速缓存存取指令,则不再调度其它的未对齐高速缓存存取指令,直到已完成“第一”和“最终”指令。不过,允许执行并完成其它对齐的高速缓存存取指令。以这种方式,处理器在第一和最终高速缓存存取指令未决时,允许指令的推测执行。
对齐的指令不要求使用归并锁存器,从而可以通过格式化器并进入处理器寄存器,而不干扰第一和最终指令的处理。当第一指令结束时,它被送给格式化器,格式化器将数据存入归并锁存器。在来自第一存取的数据被存入归并锁存器中时,可以有任意数量的对齐高速缓存存取通过格式化器。在“最终”指令结束并被送给格式化器时,装入/存储单元控制逻辑认识到,该数据要与归并锁存器中存储的数据合并。执行归并操作,随后重组好的数据被送到处理器上的寄存器中。然后,未对齐/忙锁存器被清零以允许调度任何随后的未对齐高速缓存存取指令。因为在任何给定时间,在处理器中只允许有一个未对齐高速缓存存取指令未决,所以不存在归并锁存器被误用的危险。如果最终高速缓存存取指令在第一高速缓存存取指令之前结束并被送给格式化器,则只需简单地将该数据丢弃。在本发明的一个特定方案中,若最终指令在第一指令之前完成,则使用失中队列表来保存最终指令的数据。
图1A描述了展示对齐数据的一个高速缓存中的逻辑内容。
图1B描述了一个高速缓存,它有跨越两个高速缓存行的未对齐高速缓存数据。
图1C是一个简图,展示了用来重组从高速缓存中取出的未对齐数据的一个格式化器。
图1D是根据本发明一个实施方案给出的处理器的方块图。
图2是一个电路的简图,该电路用来执行按本发明的一个实施方案的未对齐高速缓存存取。
图3是一个表,示出了按本发明一个实施方案的第一/最终标记的操作。
图4A-4B分别举例说明了按本发明的一个实施方案的对齐和未对齐高速缓存存取。
图5举例说明了第一和最终标记在一对基本装入指令中的应用,该指令是随着对一个装入指令的调度而产生的。
图6举例说明了按本发明一个实施方案的一个失中队列表的逻辑内容。
图1D是依照本发明用来处理信息的处理器系统10的方块图。在优选实施方案中,处理器10是一个单集成电路超标量微处理器,例如德克萨斯州奥斯丁IBM公司的Power PC处理器。相应地,如以下要进一步描述的,处理器10包括多种不同的单元,寄存器,缓冲器,存储器和其它部分,所有这些都是由集成电路形成的。还有,在优选实施方案中,处理器10按精减指令集计算(‘RISC’)技术操作。如在图1中所示的,系统总线11连接到处理器10的一个总线接口单元(“BIU”)12上。BIU12控制处理器10和系统总线11间的信息传输。
BIU12连接到指令高速缓存14和处理器10的数据高速缓存16上。指令高速缓存14向一个定序器单元18输出指令。根据来自指令高速缓存14的指令,定序器单元18有选择地把指令输出到处理器10的其它执行电路。
除了包含调度单元46和完成单元48这些执行单元的定序器单元18以外,在优选实施方案中,处理器10的执行电路还包括多个执行单元,称为分支单元20,定点单元A(“FXUA”)22,定点单元B(“FXUB”)24,复杂定点单元(“CFXU”)26,装入/存储单元(“LSU”)28和浮点单元(“FPU”)30。FXUA22,FXUB24,CFXU26和LSU28从通用结构寄存器(“GPR”)32和定点更名缓冲器34中输入它们的源操作数信息。另外,FXUA22和FXUB24从进位位(“CA”)寄存器42中输入“进位位”。FXUA22,FXUB24,CFXU26和LSU28将它们的操作的结果(目的操作数信息)输出,以便存储在定点更名缓冲器34的选定项中。CFXU26也向/从专用寄存器(“SPR”)40输入源操作数信息和输出目的操作数信息。
FPU300从浮点结构寄存器(“FPR”)26和浮点更名缓冲器38中输入其源操作数信息。FPU300输出其操作的结果(目的操作数信息)以存储在浮点更名缓冲器38的选定项中。
定序器单元18向/从GPR32和FPR36输入和输出信息。分支单元20从定序器单元18输入指令和指示处理器10的当前状态的信号。根据这些指令和信号,分支单元20向定序器单元18输出信号,指示存储一系列由处理器10执行的指令的合适的存储器地址。根据来自分支单元20的信号,定序器单元18从指令高速缓存14中输入指定的指令序列。如果指令序列中的一个或多个指令没有存储在指令高速缓存14中,则指令高速缓存14从连接到系统总线11上的系统存储器39中(通过BIU12和系统总线11)输入该指令。
根据从指令高速缓存14输入的指令,定序器单元18通过调度单元46,有选择地将指令调度给执行单元20,22,24,26,28和30中选定的一个。每个执行单元执行特定指令类中的一个或多个指令。例如,FXUA22和FXUB24执行源操作数上的第一类定点算术操作,例如加法,减法,与,或和异或。CFXU26执行源操作数上的第二类定点操作,例如定点乘和除。FPU30执行源操作数的浮点操作,例如浮点乘和除。
通过同时在不同的执行单元20,22,24,26,28和30中处理多条指令,处理器10获得了高的性能。相应地,每条指令的执行都被分为一系列阶段,每个阶段都可以与其它指令的一些阶段并行执行。这种技术被称为“流水线技术”。在优选实施方案的一个典型方面,一条指令通常以六个阶段执行,称为:取指令,解码,调度,执行,完成和回写。
在优选实施方案中,每条指令都要求一个机器周期来完成指令处理的每个阶段。然而,有些指令(例如由CFXU26执行的复杂定点指令)可能要求多于一个周期。因此,根据指令处理完成所需时间的不同,在一个特定指令的执行和完成阶段之间会出现不同的延迟。
响应一条装入指令,LSU28从数据高速缓存26中输入信息并将该信息拷贝到更名缓冲器34和38中选定的一个。如果该信息没有存储在数据高速缓存16中,则数据高速缓存16(通过BIU12和系统总线11)从连接到系统总线11上的一个系统存储器39中输入该信息。另外,数据高速缓存16能够从数据高速缓存中向连接到系统总线11上的系统存储器39(通过BIU12和系统总线11)输出信息。响应存储指令,LSU28从GPR32和FPR36中选定的一个输入信息并将该信息拷贝到数据高速缓存16或存储器。
举一个执行单元,例如FXUA22,FXUB24,更名缓冲器34和调度单元46间交互作用的例子,从调度单元46向FXUA22调度一条指令“addc,a,b”。正如本领域专业人士所熟知的,调度单元46向FXUA22提供操作数“a”和“b”的标记,以告知FXUA22到哪里取出操作数的数据。例如,在一个有六个更名缓冲器的系统中,调度单元46可能适当地将位于一个更名缓冲器1中的操作数“a”标记为一个六位标记100000。标记010000可能适用于指明操作数“b”是在更名缓冲器2中。因为FXUA22不写入GPR32,调度单元46必须为操作的目标使用一个更名缓冲器标记,例如001000,以使“add”指令的结果被放入更名缓冲器3中。
现参照图2,这里简要示出了按本发明一个优选实施方案中用于处理装入指令的电路。电路200包括例如加法器202这样的逻辑,它被用于计算存取高速缓存206中的数据所需的有效地址。自然,本发明适用于本领域中已知的任意数量的存储器寻址模式。为举例的目的,以PowerPC微处理器结构为例描述本发明操作。Power PC结构在不同出版物中已有全面描述,例如Power PC微处理器家族:编程环境,它可从IBM微电子学中查到,出版号NO.MPRPP CFPE-01,在此引入以供参考。由加法器202产生的有效地址被传送给数据单元204,它包含物理存取高速缓存206所需的控制逻辑。数据单元204还包括一个未对齐/忙锁存器208,它跟踪电路200是否正在处理一个未对齐装入指令。本发明的这一特征将在下面更详细地介绍。
在本例中,高速缓存206有一个连接到一条64位数据线上的输出端口,该数据线将数据从高速缓存206传送给格式化器210。格式化器的设计和操作在本领域中是众所周知的,此处仅描述说明本发明所需要的内容。在所示实施方案中,格式化器210包括一个旋转器212,采用它来将来自64位数据线的数据沿任何给定的8位边界重定位或“旋转”。换句话说,从64位数据线接收的任何数据字节在旋转器212中都可被重新放置双字中的较低或较高顺序位置。正如此处所用的,术语“双字”指数据的一个八字节段,术语“字”指的是四字节段。
旋转器212的输出被连接到归并锁存器214和多路复用器216上。归并锁存器214仅协同未对齐数据装入一起使用。多路复用器216从旋转器,且如果需要,也从归并锁存器214将数据传送到更名寄存器文件218中。多路复用器216被设计为同时从旋转器212和归并锁存器214传送数据。这样,多路复用器在将由一条未对齐装入指令取出的数据传送给更名寄存器文件之前,重组该数据。
最后,如常规地,在装入指令完成之后,来自更名寄存器文件218中适当寄存器的用于已完成指令的数据被传送给GPR寄存器文件220中相应的寄存器。当然,那些本领域专业人士可以理解,更名寄存器218和GPR寄存器文件220不必是物理上分开的寄存器文件,而可以是统一的寄存器文件,根据与寄存器相关的状态位的状态,存储在寄存器中的数据被指定为更名或GPR数据。
按本发明实施方案,在装入/存储单元(未示出)执行一个装入指令时,它还将一个第一/最终标记与指令联系起来,在指令通过电路200时,该标记用来跟踪指令。在一个特定实施方案中,该第一/最终标记是一个2位宽数据段,它被附加在指令上。图3是一个表,说明了按本发明的一个方案的第一/最终标记的操作。在该实施方案中,不允许第一和最终位同时为低。如果第一位为低且最终位为高,则装入指令被标记为“最终”,并代表未对齐指令所要求的对高速缓存206的第二次数据存取。若第一位为高且最终位为低,则指令被标记为“第一”,并代表未对齐指令对高速缓存206的第一次数据存取。若第一和最终位均为高,则指令不是未对齐的,并可正确地通过电路200。
图4A和4B更详细地描述了本发明的操作。图4A示出了高速缓存206中一部分逻辑内容。在本例中,高速缓存206的每一行是128字节宽且是双字可寻址的。需要明白的是,在高速缓存行400中,仅仅给出了一个双字。在该例中,希望从高速缓存行400中存取包含字节a,b,c和d的字。在高速缓存行400中,数据是对齐的,可发出单个装入指令来取出它。
现参照图2和4B,数据是未对齐的,因为它跨过了一个高速缓存行边界。不过,应该明白,如果数据对一个双字边界是未对齐的,则该数据在同一高速缓存行中也可以是未对齐的。还应该明白,按Power PC结构,对高速缓存的每次存取返回一个双字。若调度一条试图装入字节a,b,c,d的指令,可以看到,要求对高速缓存206做两次存取,一次是对高速缓存行400,另一次是对高速缓存行402。在这种情况下,数据单元204中的逻辑认识到,指令所要求的数据是未对齐的。逻辑电路依次生成两个获得数据所需的“基本”指令LD1和LD2。基本指令仅由LSU内部使用以执行必要的高速缓存存取。如图5所示,LD1将被标记为“第一”,LD2被标记为“最终”。同时,数据单元204确立未对齐/忙锁存器208的一位。这使得调度单元暂停发出其它的未对齐指令。不过,电路200仍可以调度并执行其它指令,包括对齐的装入指令。这是因为对齐指令不要求使用归并锁存器214。这样,如果未对齐指令已事先由第一高速缓存存取将数据写入归并锁存器214,并且正在等待由第二次存取取回数据,则一条对齐指令仍可通过多路复用器216将该数据从旋转器212传送到更名寄存器中,而不干扰存储在归并锁存器214中的数据。在其他实施方案中,本发明的这一特性被扩展为可以提供多个归并锁存器,以允许多个未对齐指令同时在处理器中未决。自然,为每个未对齐指令跟踪第一和最终标记的装置也可被类似地扩展。
当格式化器210接收到来自LD1的数据时,该数据按要求在旋转器212中旋转并被放入归并锁存器214,该数据被储存在锁存器214中并等待由最终装入指令装入的数据。如前面所述对齐指令可以继续使用格式化器处理它们的数据。当格式化器接收了来自LD2的数据时,它旋转该数据并传送给多路复用器216。同时,归并锁存器214中的数据也被传送给多路复用器216,在那里,数据被重组为所需的包含字节a,b,c和d的字。然后,按常规超标量技术,它被传送到更名寄存器文件218和GPR220中。
因为处理器提供无序指令执行,所以,有可能出现来自最终装入指令的数据在来自第一指令的数据之前被传送给格式化器210。这时,格式化器210中的逻辑认识到归并锁存器214中不包含任何有效数据,于是丢弃最终装入指令传送给它的数据。在来自第一指令的数据被存入归并锁存器之后,来自最终指令的数据被再次传送给格式化器。当然,在这种情况下,处理器必须提供一些用来重发来自最终指令的数据的装置,而不要求调度单元重新发出原始的未对齐装入指令。对那些本领域专业人士来说,可以有很多完成这一任务的合适方式。例如,在本发明的一个实施方案中,如果在归并锁存器中没出现来自第一指令的数据,则使用一个“失中队列”表来重发来自最终指令的数据。这将参照图6进行更详细的介绍。
图6描述了按本发明的一个实施例的一个失中队列表中的逻辑内容。如所示出的,失中队列表中的每项包括指令的第一/最终标记及指令的实际地址。其它信息,例如有效位,状态位等,可以根据设计选择提供。在本发明的一个实施方案中,每调度一条指令,就创建失中队列表600中的一项。若指令在数据高速缓存中命中,则在随后的周期中,从失中队列表600中移去该指令的那一项。不过,若指令在数据高速缓存中落空,则它的实际地址和其它信息保留在失中队列表600中。处理器连续地扫描失中队列表中的项目,并且在每个周期,处理器都试图按存储在表中的实际地址存取高速缓存。最后,对于失中队列表中的每项高速缓存中的数据都变为可获得的,并被传送给寄存器文件。
按本发明的一个实施方案,来自最终存取的数据在来自第一存取的数据之前被送给格式化器这一事件被认为与高速缓存落空类似。这样,在每个周期,处理器扫描失中队列表600,按失中队列600中所存最终指令的地址存取高速缓存数据,并将其送给格式化器。格式化器响应从高速缓存控制逻辑接收的有效性信号。如果高速缓存在来自第一指令的数据可用之前向格式化器传送最终指令的数据,则撤销该数据的有效性信号。从而,格式化器将丢弃该数据且该最终指令的项被保留在失中队列表600中。在来自第一指令的数据成为可用并被传送给格式化器以后,在随后的一个周期,来自最终指令的数据被再次传送给格式化器,但这次要确立有效性信号。于是,格式化器处理来自第一和最终指令的数据并向完成表逻辑传回一个信号以从失中队列表600中消去第一和最终项。
在最终存取已从高速缓存中取出其数据以后,装入指令准备结束。在结束时,未对齐/忙锁存器208中的位被清零,现在,装入/存储单元可以发布随后的未对齐指令。
按照另一实施方案,格式化器可以这样设计,如果在第一数据被接收之前,接收到最终数据,则最终数据被保存在归并锁存器中。在接收到第一数据时,将它与最终数据重新组合并送入更名寄存器文件。如果以这种方式实现格式化器,则可以避免使用失中队列表600。
尽管上面是按照特定实施方案描述本发明,但本领域专业人士应能认识到,在不脱离本发明精神和范围的情况下,可以做形式和细节上的不同变换,例如,按本发明的其他实施方案,可以在处理指令时并行使用多个装入/存储单元。
Claims (10)
1.在具有一个数据高速缓存和一个寄存器文件的超标量处理器中处理装入指令的方法,其特征在于包括:
调度一条未对齐装入指令,存取在高速缓存中未对齐的一个数据块;
继续调度对齐指令;
根据该未对齐装入指令,对高速缓存产生一个第一存取和一个最终存取;
存储从第一存取取出的数据,直到来自最终存取的数据可用;
将来自第一和最终存取的数据按装入指令所需的顺序重组;
将重组好的数据存入寄存器文件。
2.如权利要求1的方法,其特征在于:生成一个第一存取和一个最终存取包含将多个位与存取相关联,以表明该存取是第一还是最终存取。
3.如权利要求1的方法,其特征在于,它还包括这样的步骤,即根据对未对齐装入指令的调度,确立一个信号,以使处理器停止对随后的未对齐指令的调度。
4.如权利要求3的方法,其特征在于,它还包括根据未对齐装入指令的完成确立一个信号的步骤,它使得处理器重新开始对未对齐指令的调度。
5.在有一个数据高速缓存和一个寄存器文件的超标量处理器中处理装入指令的电路,其特征在于包括:
用来调度指令的装置;
检测一个未对齐指令的调度的装置,该指令存取高速缓存中未对齐的数据块;
用来在检测到未对齐装入指令时,停止调度随后的未对齐装入指令,同时调度随后的对齐指令的装置;
根据未对齐装入指令,对高速缓存产生一个第一存取和一个最终存取的装置;
用来存储由第一存取取出的数据,直到来自最终存取的数据可用的装置;
用来将来自第一和最终存取的数据按装入指令所需的顺序重组的装置;
用来将重组的数据存储到寄存器文件中的装置。
6.如权利要求5的电路,其特征在于,用来停止对随后的未对齐装入指令的调度的装置,包含一个锁存器,后者有一个响应该未对齐指令的调度而被确立并在该未对齐指令结束时撤销的位。
7.如权利要求5的电路,其特征在于,产生一个第一存取和一个最终存取的装置包含生成与第一和最终存取相关的标记的逻辑电路。
8.如权利要求7的电路,其特征在于标记包含多个位,它们根据相应的存取是第一存取还是最终存取而被确立。
9.如权利要求1的电路,其特征在于重组数据的装置包含一个锁存器,它用来存储来自第一存取的数据,直到可以得到来自第二存取的数据。
10.如权利要求1的电路,其特征在于重组数据的装置包含一个锁存器,它用来存储来自第二存取的数据,直到可以得到来自第一存取的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US021133 | 1998-02-10 | ||
US021,133 | 1998-02-10 | ||
US09/021,133 US6112297A (en) | 1998-02-10 | 1998-02-10 | Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1226700A true CN1226700A (zh) | 1999-08-25 |
CN1161689C CN1161689C (zh) | 2004-08-11 |
Family
ID=21802524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB991010418A Expired - Fee Related CN1161689C (zh) | 1998-02-10 | 1999-01-08 | 在超标量处理器中处理装入指令的方法和电路 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6112297A (zh) |
EP (1) | EP0936538A2 (zh) |
JP (1) | JP3151444B2 (zh) |
KR (1) | KR100335745B1 (zh) |
CN (1) | CN1161689C (zh) |
CA (1) | CA2260308C (zh) |
TW (1) | TW440794B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399262C (zh) * | 2003-08-26 | 2008-07-02 | 国际商业机器公司 | 用于降低功率的按需驱动时钟调节的处理器 |
CN107066238A (zh) * | 2017-04-18 | 2017-08-18 | 上海兆芯集成电路有限公司 | 执行高速缓存行未对齐加载指令的系统和方法 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6230238B1 (en) * | 1999-03-02 | 2001-05-08 | Motorola, Inc. | Method and apparatus for accessing misaligned data from memory in an efficient manner |
US6915385B1 (en) * | 1999-07-30 | 2005-07-05 | International Business Machines Corporation | Apparatus for unaligned cache reads and methods therefor |
US6289428B1 (en) * | 1999-08-03 | 2001-09-11 | International Business Machines Corporation | Superscaler processor and method for efficiently recovering from misaligned data addresses |
US6820195B1 (en) * | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
US6604188B1 (en) | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
US6728865B1 (en) * | 1999-10-20 | 2004-04-27 | Transmeta Corporation | Pipeline replay support for unaligned memory operations |
US6704854B1 (en) * | 1999-10-25 | 2004-03-09 | Advanced Micro Devices, Inc. | Determination of execution resource allocation based on concurrently executable misaligned memory operations |
US6615300B1 (en) | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
US7120781B1 (en) * | 2000-06-30 | 2006-10-10 | Intel Corporation | General purpose register file architecture for aligned simd |
US7370184B2 (en) * | 2001-08-20 | 2008-05-06 | The United States Of America As Represented By The Secretary Of The Navy | Shifter for alignment with bit formatter gating bits from shifted operand, shifted carry operand and most significant bit |
US6721866B2 (en) * | 2001-12-21 | 2004-04-13 | Intel Corporation | Unaligned memory operands |
US7398334B1 (en) | 2004-03-12 | 2008-07-08 | Xilinx, Inc. | Circuit for and method of realigning data |
US20060155961A1 (en) * | 2005-01-06 | 2006-07-13 | International Business Machines Corporation | Apparatus and method for reformatting instructions before reaching a dispatch point in a superscalar processor |
US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
JP4837305B2 (ja) * | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
US8185880B2 (en) * | 2007-10-04 | 2012-05-22 | International Business Machines Corporation | Optimizing heap memory usage |
JP5395383B2 (ja) * | 2008-08-21 | 2014-01-22 | 株式会社東芝 | パイプライン演算プロセッサを備える制御システム |
JP2010157130A (ja) * | 2008-12-27 | 2010-07-15 | Toshiba Corp | メモリシステム |
JP5380102B2 (ja) * | 2009-02-16 | 2014-01-08 | 株式会社東芝 | マイクロプロセッサ |
US8086801B2 (en) * | 2009-04-08 | 2011-12-27 | International Business Machines Corporation | Loading data to vector renamed register from across multiple cache lines |
US8127078B2 (en) * | 2009-10-02 | 2012-02-28 | International Business Machines Corporation | High performance unaligned cache access |
US20120246407A1 (en) * | 2011-03-21 | 2012-09-27 | Hasenplaugh William C | Method and system to improve unaligned cache memory accesses |
US8688962B2 (en) * | 2011-04-01 | 2014-04-01 | Intel Corporation | Gather cache architecture |
CN105446777B (zh) * | 2015-11-18 | 2019-06-04 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行方法 |
US11755324B2 (en) * | 2021-08-31 | 2023-09-12 | International Business Machines Corporation | Gather buffer management for unaligned and gather load operations |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS548937A (en) * | 1977-06-22 | 1979-01-23 | Nec Corp | Buffer memory unit |
US4287561A (en) * | 1978-03-16 | 1981-09-01 | International Business Machines Corporation | Address formulation interlock mechanism |
US4814976C1 (en) * | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
KR100248903B1 (ko) * | 1992-09-29 | 2000-03-15 | 야스카와 히데아키 | 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템 |
US5577200A (en) * | 1994-02-28 | 1996-11-19 | Intel Corporation | Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system |
JPH09114733A (ja) * | 1995-10-17 | 1997-05-02 | Nec Corp | キャッシュ記憶装置における非整列データ転送機構 |
US5802556A (en) * | 1996-07-16 | 1998-09-01 | International Business Machines Corporation | Method and apparatus for correcting misaligned instruction data |
JP3047170B2 (ja) * | 1997-10-11 | 2000-05-29 | 好高 青山 | 供給ロッド式の部品供給装置 |
-
1998
- 1998-02-10 US US09/021,133 patent/US6112297A/en not_active Expired - Fee Related
-
1999
- 1999-01-08 CN CNB991010418A patent/CN1161689C/zh not_active Expired - Fee Related
- 1999-01-15 KR KR1019990001065A patent/KR100335745B1/ko not_active IP Right Cessation
- 1999-01-21 EP EP99300426A patent/EP0936538A2/en not_active Withdrawn
- 1999-01-25 CA CA002260308A patent/CA2260308C/en not_active Expired - Fee Related
- 1999-02-03 JP JP02597099A patent/JP3151444B2/ja not_active Expired - Fee Related
- 1999-02-06 TW TW088101834A patent/TW440794B/zh not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399262C (zh) * | 2003-08-26 | 2008-07-02 | 国际商业机器公司 | 用于降低功率的按需驱动时钟调节的处理器 |
CN107066238A (zh) * | 2017-04-18 | 2017-08-18 | 上海兆芯集成电路有限公司 | 执行高速缓存行未对齐加载指令的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3151444B2 (ja) | 2001-04-03 |
US6112297A (en) | 2000-08-29 |
KR19990072271A (ko) | 1999-09-27 |
TW440794B (en) | 2001-06-16 |
KR100335745B1 (ko) | 2002-05-08 |
CN1161689C (zh) | 2004-08-11 |
CA2260308C (en) | 2001-10-09 |
JPH11272464A (ja) | 1999-10-08 |
CA2260308A1 (en) | 1999-08-10 |
EP0936538A2 (en) | 1999-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1161689C (zh) | 在超标量处理器中处理装入指令的方法和电路 | |
US7051187B2 (en) | Superscalar RISC instruction scheduling | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
CN1047245C (zh) | 采用独立存取中间存储器的超标量处理器系统中加强指令调度的方法和系统 | |
EP0690371A1 (en) | Fetch and store buffer for supporting out of order execution in a data processing system | |
CN1144934A (zh) | 具有执行送数指令执行部件的数据处理器及其操作方法 | |
KR100346515B1 (ko) | 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일 | |
US6978360B2 (en) | Scalable processor | |
JPS61109147A (ja) | 命令フェッチ及び実行制御方法 | |
CN101046740A (zh) | 用于按需临时寄存器重命名的方法和系统 | |
JP2898105B2 (ja) | コンパイル中にソフトウェア・スケジューリング技術を用いてハードウェアのパイプライン処理の中断を最小化する方法 | |
US4773041A (en) | System for executing a sequence of operation codes with some codes being executed out of order in a pipeline parallel processor | |
US6192461B1 (en) | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle | |
CN1226023A (zh) | 加载/加载检测和重定序方法 | |
HUT75823A (en) | Method of operation of a system for processing information, as well as the processing system | |
JP2933026B2 (ja) | 複数命令並列発行/実行管理装置 | |
WO2002057908A2 (en) | A superscalar processor having content addressable memory structures for determining dependencies | |
CN1171144C (zh) | 可以跟踪不按序操作期间异常的数据处理系统及方法 | |
CN101539852A (zh) | 处理器和信息处理设备 | |
EP0297265B1 (en) | An instruction control mechanism for a computer system | |
CN1269026C (zh) | 寄存器移动操作 | |
US20080282050A1 (en) | Methods and arrangements for controlling memory operations | |
HUT75816A (en) | Method of operation of a system for processing information, as well as the processing system | |
US6990568B2 (en) | Retiring early-completion instructions to improve computer operation throughput | |
CN1193777A (zh) | 非顺序处理系统中的低执行时间指令发送 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040811 Termination date: 20100208 |