CN103699362B - 微处理器及其执行的方法 - Google Patents
微处理器及其执行的方法 Download PDFInfo
- Publication number
- CN103699362B CN103699362B CN201310729108.XA CN201310729108A CN103699362B CN 103699362 B CN103699362 B CN 103699362B CN 201310729108 A CN201310729108 A CN 201310729108A CN 103699362 B CN103699362 B CN 103699362B
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache
- prefetched
- microprocessor
- microcommand
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000003860 storage Methods 0.000 claims abstract description 44
- 238000013519 translation Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 8
- 238000000151 deposition Methods 0.000 claims description 3
- 230000014616 translation Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 150000002500 ions Chemical class 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 235000009854 Cucurbita moschata Nutrition 0.000 description 1
- 240000001980 Cucurbita pepo Species 0.000 description 1
- 235000009852 Cucurbita pepo Nutrition 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 235000020354 squash Nutrition 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
-
- 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/30047—Prefetch instructions; cache control instructions
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
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)
- Advance Control (AREA)
Abstract
本发明提供了由微处理器所执行的方法以及微处理器。该微处理器包括高速缓存、指令组以及存储器子系统。指令组包括第一预取指令与第二预取指令,第一预取指令与第二预取指令中每一者用来命令微处理器自系统存储器预取数据快取列至高速缓存。存储器子系统用来执行第一预取指令与第二预取指令。对于第一预取指令,存储器子系统根据既定情况组而放弃自系统存储器预取数据快取列至高速缓存。对于第二预取指令,存储器子系统根据既定情况组来完成自系统存储器预取数据快取列至高速缓存。
Description
本申请是申请日为2010年6月1日、申请号为201010194974.X、发明名称为“微处理器及其执行的方法”的发明专利申请的分案申请。
技术领域
本发明是有关于微处理器的数据预取(data prefetching),特别是有关于微处理器的指令预取。
背景技术
重复数据串搬移(REP MOVS)巨指令是x86指令集架构中常被频繁执行的巨指令。此巨指令命令微处理器将数据串由存储器内的来源位置搬移至存储器内的目标位置。此指令可以微码(microcode)来实现。假使被搬移的字节的数量相对地较大,则微码可以利用“快速数据串搬移(fast string move)”的微码例程(rout ine)来实现该巨指令。此快速数据串搬移微码例程执行多个加载-储存(load-store)微操作(micro-op)组(pairs)的序列。快速数据串搬移微码例程试图执行大量的加载与储存微操作(例如16字节),这是因为加载与储存微操作的效率较高,换言之,载入与储存微操作可处理的数据量大于REP MOVS[B/W/D/Q](即字节/字组/双字组/四字组)所指定的每一数据单位。
然而,由于加载微操作所指定的系统存储器快取列读取具有较长的延迟,因此加载微操作通常会未命中高速缓存而导致REP MOVS巨指令相对变慢。
发明内容
本发明提供一种微处理器,包括高速缓存、指令组以及存储器子系统。指令组包括第一预取指令与第二预取指令,第一预取指令与第二预取指令中每一者用来命令微处理器自系统存储器预取数据快取列至高速缓存。存储器子系统用来执行第一预取指令与第二预取指令。对于第一预取指令,存储器子系统根据既定情况组而放弃自系统存储器预取数据快取列至高速缓存。对于第二预取指令,存储器子系统根据既定情况组来完成自系统存储器预取数据快取列至高速缓存。
本发明还提供一种微处理器,包括高速缓存及微码单元。微码单元包含一微码,该微码用来实现一架构性重复数据串搬移指令。该微码包括多个保证预取-加载-储存指令组的序列。微处理器还包括存储器子系统,用来执行保证预取、加载、及储存指令,甚至在既定情况组存在且当存储器子系统将非保证预取指令仅视为暗示时,用来将保证预取指令所指定的快取列的数据预取至高速缓存。
本发明又提供一种微处理器,包括高速缓存及微码单元。微码单元包含一微码,该微码用来实现一架构性重复数据串搬移指令,且微码包括多个加载指令与储存指令,用以将数据串由来源存储器位置搬移至目标存储器位置。微码还包括多个预取指令,这些预取指令远远领先加载指令,以增加快取列在被加载指令存取前出现在该高速缓存的可能性。微处理器还包括存储器子系统,用来执行预取、加载、与储存指令。存储器子系统用来检测预取指令之中的一者所指示的存储器地址于微处理器的转译后备缓冲器中未命中的情况,且相应地通知微码单元该转译后备缓冲器的未命中。
本发明也提供一种由微处理器所执行的方法。微处理器包括高速缓存以及指令组,且指令组具有多个第一预取指令与第二预取指令。该方法包括当执行第一预取指令时,检测预设情况组中之中的一者或多个是否存在。第一预取指令命令该微处理器自系统存储器预取第一数据快取列至高速缓存。该方法也包括当执行第一预取指令时,检测到预设情况组中的一者或多个存在时,放弃自系统存储器预取第一数据快取列至高速缓存的步骤。该方法也包括当执行第二预取指令时,检测预设情况组中之中的一者或多个是否存在。第二预取指令命令微处理器自系统存储器预取第二数据快取列至高速缓存。该方法还包括当执行第二预取指令时,检测到预设情况组中的一者或多个存在时,完成自系统存储器预取第二数据快取列至高速缓存的步骤。
本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包括解码架构性重复数据串搬移指令。该方法也包括相应于对架构性重复数据串搬移指令进行解码的步骤,执行多个保证预取-加载-储存指令组的序列。执行该等保证预取-加载-储存指令组的序列的步骤包括甚至在既定情况组存在时且当存储器子系统将多个非保证预取指令仅视为暗示时,预取由该等保证预取-加载-储存指令组的序列所指定的高速缓存的多个快取列。
本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包括对架构性重复数据串搬移指令进行解码。该方法也包括相应于对架构性重复数据串搬移指令进行解码的步骤,执行多个加载指令与储存指令,以将数据串由来源存储器位置搬移至目标存储器位置。该方法也包括在执行加载指令之前,执行多个预取指令,以增加多个快取列在被加载指令处理前出现在高速缓存的可能性。该方法还包括检测预取指令的一者正指示出一存储器地址于微处理器的转译后备缓冲器中未命中的情况,且相应地导致微码单元被通知转译后备缓冲器的未命中。
本发明还提供一种由一微处理器所执行的方法,该微处理器包括一高速缓存以及一指令组,且该指令组具有第一预取指令与第二预取指令,该方法包括:当执行该第一预取指令时,检测一预设情况组中的一者或多个的存在,其中,该第一预取指令命令该微处理器自一系统存储器预取一第一数据快取列至该高速缓存;响应于当执行该第一预取指令时检测该预设情况组中的一者或多个的存在的步骤,放弃自该系统存储器预取该第一数据快取列至该高速缓存;当执行该第二预取指令时,检测该预设情况组中的一者或多个的存在,其中,该第二预取指令命令该微处理器自该系统存储器预取一第二数据快取列至该高速缓存;以及响应于执行该第二预取指令时检测该预设情况组中的一者或多个的存在的步骤,完成自该系统存储器预取该第二数据快取列至该高速缓存,其中该预设情况组包括该第一和第二预取指令分别所指示的第一和第二快取列的地址于该微处理器的转译后备缓冲器中未命中。
本发明还提供一种由一微处理器所执行的方法,该微处理器包括一高速缓存和微码,该方法包括:对一架构性重复数据串搬移指令进行解码;响应于对该架构性重复数据串搬移指令进行解码的步骤,执行多个加载指令与储存指令,以将数据串由一来源存储器位置搬移至一目标存储器位置;在执行该多个加载指令之前,执行多个预取指令,以增加多个快取列在被该多个加载指令处理前出现在该高速缓存的可能性,其中该多个加载和储存指令以及该多个预取指令是该微处理器的微码的指令;检测该多个预取指令的一者正指示出一存储器地址于该微处理器的一转译后备缓冲器中未命中的一情况,且相应地导致该微码被通知该转译后备缓冲器的未命中;响应于检测到该情况,清除晚于该多个预取指令的该一者的该多个加载和储存指令的每一个;以及在上述清除的步骤后,于剩余的该多个加载指令之前,重新开始执行剩余的该多个预取指令,以增加剩余的该多个快取列在被剩余的该多个加载指令处理前出现在该高速缓存的可能性。
本发明还提供一种微处理器,包括:一高速缓存;一指令组,包括第一预取指令与第二预取指令,该第一预取指令与该第二预取指令中每一者用来命令该微处理器自一系统存储器预取一数据快取列至该高速缓存;以及一存储器子系统,用来执行该第一预取指令与该第二预取指令,其中,对于该第一预取指令,该存储器子系统响应于一第一既定情况组而放弃自该系统存储器预取该数据快取列至该高速缓存,其中,对于该第二预取指令,该存储器子系统响应于该第一既定情况组来完成自该系统存储器预取该数据快取列至该高速缓存,其中该既定情况组包括该第一和第二预取指令在一序列指令之后的情况。
附图说明
图1绘示本发明一实施例的微处理器的方块图;
图2的窗体示意图1的存储器子系统在不同情况下执行保证预取微指令时,存储器子系统所执行的操作;
图3示意图1的微处理器的快速数据串搬移微码一实施例的部分序列;以及
图4示意图1的微处理器的操作流程图。
[主要元件标号说明]
100~微处理器; 102~指令高速缓存;
104~指令转译器; 106~缓存器别名表(RAT);
108~保留站; 114~引退单元;
112~多个执行单元与存储器子系统;
116~重排序缓冲器(ROB);
118~微码单元; 122~填充队列;
124~数据高速缓存;
126~总线接口单元(BIU);
128~控制逻辑单元; 132~重复数据串搬移巨指令;
134、136~微指令;
135~处理器总线;
138~一般目的缓存器(GPR);
142~快速数据串搬移微码;
144~转译后备缓冲器(TLB);
402、404、406、408、412、414、416、418~方法步骤。
具体实施方式
为使本发明的上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并配合所附图式,作详细说明如下。
发明人认为假使能以某种方式使加载操作命中(hit)图1的数据高速缓存124,则图1的微处理器100可更快速地执行数据串搬移。发明人试图通过隐藏与加载操作相关的存储器存取延迟来达到快速数据串搬移。而隐藏的方式是在微码中加入预取微指令,此预取微指令可在加载操作之前先预取数据串中即将会需要的部分至数据高速缓存124。然而,发明人注意到存储器子系统把一般预取操作仅视为暗示(hint)。也就是说,在某些情况下存储器子系统会放弃预取快取列至数据高速缓存124。例如,当图1的填充队列(fillqueue)122被填满时(即填充队列122的所有项目(entries)现在都被配置)、需要执行页表查找(tablewalk)、遭遇序列(serialize)执行的情况(例如预取操作位于一序列指令之后,例如锁定操作)、或是预取的地址与储存操作或监测(snoop)操作的地址发生冲突(address-collision)。当这些情况其中一者发生时,指定的快取列不会被预取至高速缓存,这通常导致了加载操作开始未命中于高速缓存,进而使数据串搬移再次变慢。
在了解到微处理器100十分需要将数据预取至数据高速缓存124,发明人将一保证预取(guaranteed prefetch,gprefetch)微指令加入图1的快速数据串搬移微码142所能使用的微指令组。保证预取微指令与一般预取微指令的相异之处在于,只要指令架构允许,在几乎任何情况下,保证预取微指令都能保证特定快取列会被撷取至数据高速缓存124。
图2的窗体列出在不同情况下执行一保证预取微指令时,存储器子系统所执行的操作。
(1)假使保证预取微指令正预取的存储器页面(page)的存储器特性为不可快取(uncacheable),由于指令架构不允许预取不可快取的存储器页面,因此存储器子系统不会预取快取列,但是相对地会致使保证预取微指令产生例外处理程序(exception),让微码单元118可以一般方式来执行数据串搬移,也就是非预取的方式。
(2)假使填充队列122被填满时,存储器子系统将使保证预取微指令被重新执行(replay),直到填充队列122的一项目可被成功地配置。
(3)假使保证预取微指令与储存操作或监测操作发生冲突(例如存取同一地址)时,存储器子系统将使保证预取微指令被重新执行,直到不再有冲突发生。
(4)假使存储器子系统遭遇一序列执行的情况,其将重新执行保证预取微指令。
(5)假使保证预取微指令的虚拟地址未命中于图1的转译后备缓冲器(Translation Lookaside Buffer,TLB)144中,存储器子系统不会预取快取列,且将使保证预取微指令产生一个例外处理程序。通过产生由微码单元118所处理的例外处理程序,存储器子系统致使存储器子系统执行页表查找,之后再使快速数据串搬移微码重新加载执行(re-prime the pump)。否则的话,尤其是如果TLB 144的未命中是发生在之保证预取-加载-储存微指令组(gprefetch-load-store triplets)的循环主体(loop body)时(参阅图3与下文讨论),与保证预取微指令相关的存储器存取延迟可能无法被隐藏,使得对应的加载微指令将未命中高速缓存。然而,此例外处理程序会导致管线中较晚于保证预取微指令的任何微指令被清除(flushed),包括保证预取-加载-储存微指令组在内。一般来说,在下列情况之下,快速数据搬移微码不需要重新执行,例如填充队列122为填满的、与储存指令/监测指令发生冲突、或是在序列执行的情况下。因此,在这些情况下存储器子系统不会产生例外处理程序,而是重新执行保证预取微指令。在其它实施例中,当保证预取微指令的虚拟地址未命中TLB 144时,存储器子系统执行页表查找并重新执行保证预取微指令。
如图3所示,为了在加载微指令执行之前将数据预取至数据高速缓存124内,快速数据串搬移微码142经改良加入一保证预取微指令至加载-储存微指令组,以建立保证预取-加载-储存微指令组。由于保证预取微指令通常会有相对较长的系统存储器存取延迟,因此快速数据串搬移微码142在开始保证预取-加载-储存微指令组之前,还包含了一些额外的初始保证预取微指令使系统存储器存取延迟可减少(在图3的实施例中为5个保证预取微指令)。快速数据串搬移微码142的程序设计应试图把这些初始保证预取微指令放置在时间上充分领先于保证预取-加载-储存微指令组的循环主体的位置,使得初始保证预取微指令所指定的快取列的数据,在加载操作进入存储器子系统之前就已经预取至数据高速缓存124,进而使加载操作可命中于数据高速缓存124。也就是说,快速数据串搬移微码142的程序设计应试图在初始保证预取微指令与保证预取-加载-储存微指令组循环主体之间放置足够的其它指令,使得在加载操作到达时,初始保证预取微指令所预取的快取列已位于数据高速缓存124内。因此,在循环的尾端(end),快速数据串搬移微码142包括与初始保证预取微指令数量对应的加载-储存微指令组(不包括保证预取微指令)(例如5组加载-储存微指令组),以与预先执行的初始保证预取微指令同步(sync up)。在一实施例中,一快取列为64字节,且每一加载/储存操作是16字节。因此,虽然图3的范例的微码序列有5组加载-储存微指令组,但是实际上共有5组64字节的加载-储存微指令组,意即有5组微指令组,且每一组为4个16字节的加载-储存微指令组。对于效能来说,保证预取微指令必须位在加载操作之前,并且必须将指定的快取列读入数据高速缓存124,使加载操作可命中数据高速缓存124,这点是很重要的。这就是为什么保证预取微指令必须保证其完成度,甚至在需要时重新执行,或者至少要引发例外处理程序使快速数据串搬移微码142有机会重新执行快速数据串搬移(例如在未命中TLB 144的情况下)是如此重要。这也是为什么一般预取微指令在操作上有所不足,因为一般预取微指令仅被视为暗示。在一实施例中,每一保证预取、载入、与储存操作都会更新各自的地址,分别是prefetch_address、load_address及store_address。
现在参阅图1,其示意本发明一实施例的微处理器100的方块图。微处理器100是一个管线微处理器(pipelined microprocessor),包括指令高速缓存102。指令高速缓存102用以快取多个程序指令,在此处也称为巨指令(macroinstruct ions)132。指令高速缓存102提供巨指令132至指令转译器104。指令转译器104对每一巨指令132进行解码,且将大部分的巨指令132转译为一或多个微指令134。转译后的微指令134可包括一般预取(normalprefetch)微指令等等。此外,在一实施例中,微处理器100的指令组架构包括重复数据串搬移巨指令132,其可包括在使用者程序内,细节将于后文描述。指令转译器104用以识别哪些巨指令132会被实现于存放于微处理器100的微码单元118的微码142。当指令转译器104遇到实现于微码142的巨指令132时,指令转译器104将转移控制权至微码单元118的微序列发生器(microsequencer)(未示出),其中该微序列发生器自微码单元118的微码存储器(未示出)内撷取微码142的多个微指令136,并分派(dispatch)这些微指令136以供执行。值得一提的是,微码142包括用以实现重复数据串搬移巨指令132的程序码(此处称为快速数据串搬移微码142),例如x86架构的REP MOVS巨指令。此重复数据串搬移巨指令132使用到保证预取微指令。微指令136可包括加载、储存以及保证预取微指令等等。
一缓存器别名表(register alias table,RAT)106接收来自指令转译器104的转译后微指令134以及来自微码单元118的快速数据串搬移微码142中的微指令136,且RAT 106产生微指令134和136的相依性(dependencies)。在一实施例中,微处理器100是一个非循序(out-of-order)执行的微处理器,且RAT 106是微处理器100管线中按程序顺序接收微指令的最后管线部分。RAT 106整合(incorporate)微指令的程序顺序,而该程序顺序被重排序缓冲器(reorder buffer,ROB)116用以根据程序顺序来引退微指令134和136。RAT 106在分派微指令134和136给保留站(reservation stat ion)108之前,会先依照程序顺序在ROB 116内配置一项目给每一个微指令134和136。ROB116耦接至RAT 106、保留站108、多个执行单元与存储器子系统112以及引退单元114。
保留站108接收来自RAT 106的微指令134和136,并根据RAT 106所产生的相依性信息判断微指令134和136的来源操作数是否为可用(available),且多个执行单元与存储器子系统112也可用时,保留站108将微指令134和136发布至多个执行单元与存储器子系统112。微处理器100也包括多个一般目的缓存器(general purpose register,GPR)138,其被微指令134和136所使用,作为快速数据串搬移微码142所搬移的数据串的中间储存位置(intermediate storage locat ions)。引退单元114按照微指令134和136在ROB 116内的程序顺序来引退微指令134和136。值得一提的是,引退单元114会检查在ROB 116内最旧的指令的项目的多个旗标,以判断微指令134和136是否需要被重新执行,或判断是否需要引发例外处理程序。
存储器子系统包括转译后备缓冲器(Translation Lookaside Buffer,TLB)144、数据高速缓存124、填充队列122、总线接口单元(bus interfaceunit,BIU)126以及控制逻辑单元128,其中,控制逻辑单元128耦接于TLB144、数据高速缓存124、填充队列122以及BIU 126。BIU 126将微处理器100介接至一处理器总线,该处理器总线耦接至微处理器100所在(reside)的计算机系统的系统存储器(未示出)。系统存储器储存重复数据串搬移巨指令132所要搬移的数据串,此数据串是由一来源地址搬移至重复数据串搬移巨指令132所指定的目标地址。TLB 144提供存储器页面的虚拟至物理地址转换的快取。数据高速缓存124提供自系统存储器所读取的数据的快取,例如重复搬移数据串巨指令132的数据串。填充队列122具有一定数量的快取列缓冲器,每一快取列缓冲器可由存储器子系统来分别配置,以接收BIU 126自系统存储器读出的快取列,例如由保证预取微指令所预取的一快取列的数据串,该数据串为重复搬移数据串巨指令132所指定的。由于保证预取微指令不会将数据加载至微处理器100的架构缓存器,因此最好由存储器子系统来完成保证预取微指令,并接着释放出存储器子系统的资源。一旦存储器子系统确定任何会防止其预取由保证预取微指令所指定的快取列的情况存在时,可配置填充队列122的一个快取列缓冲器给该快取列。此外,当此保证预取微指令成为微处理器100中最旧的指令时,引退单元114会立刻引退此保证预取微指令,以利有效地释放先前配置给该保证预取微指令的ROB 116项目。
存储器子系统可执行保证预取微指令、一般预取微指令、加载微指令以及储存微指令等等。在某些情况下,如图2的窗体所示,存储器子系统可能想要致使微处理器100重新执行某个微指令(例如一保证预取微指令),或者致使微处理器100引发例外处理程序来响应某一微指令。为了完成重新执行,存储器子系统对保证预取微指令所对应的ROB 116项目设定一重新执行旗标,以示意此保证预取微指令必须重新执行。接着,当此保证预取微指令准备引退时(例如此保证预取微指令为ROB 116中最旧的指令),ROB 116重新执行保证预取微指令,并且将晚于此微指令的所有微指令返回至保留站108,使得其来源操作数被重新撷取,并重新发布被返回的微指令至执行单元与存储器子系统来执行。为了完成例外处理程序,存储器子系统对保证预取微指令所对应的ROB 116项目设定一例外旗标,以示意此保证预取微指令引发例外状况(exception condit ion)。接着,当保证预取微指令准备引退时,ROB 116引发一例外处理程序,由微码单元118中的例外处理管理程序(exceptionhandler)执行,以将例外状况传达给快速数据串搬移微码142。
现在参阅图4,其示意图1的微处理器100的操作流程的一实施例。流程开始于步骤402。
在步骤402中,存储器子系统正执行一预取微指令(可以是保证预取微指令或是一般预取微指令),且遭遇一状况,例如图2的窗体所表示的情况,存储器子系统无法将指定的快取列撷取到数据高速缓存124。流程前进至步骤404。
在步骤404中,存储器子系统判断该预取微指令的类型。如果此预取微指令是保证预取微指令,流程前进至判断步骤408;反之,如果此预取微指令是一般预取微指令,流程则前进至步骤406。
在步骤406中,存储器子系统压制(squash)此一般预取微指令。也就是说,存储器子系统不会在处理器总线135上产生数据传输(transaction)以读取一般预取微指令所指定的快取列,并允许此一般预取微指令可正常地引退。换句话说,存储器子系统将此一般预取微指令视为一暗示,并且在此状况下把它当作无操作(no-op)微指令来执行。于一实施例中,在一般预取微指令所指定的快取列位置未命中TLB 144的情况下,存储器子系统会执行页表查找,并接着重新执行此一般预取微指令,而不是压制它。一般预取微指令的流程结束于步骤406。
如果此预取微指令为保证预取微指令,在判断步骤408中,存储器子系统判断步骤402所遭遇到的情况是否为保证预取微指令所指定的地址落在具有不可快取特性的存储器区域内。如果是的话,流程前进至步骤412;反之,流程前进至判断步骤414。
在步骤412中,存储器子系统放弃预取该快取列,并对此保证预取微指令所对应的ROB 116项目设定例外旗标,使得此保证预取微指令接续引发例外处理程序。如此一来会使得快速数据串搬移微码142藉助于程序码的非预取版本来实现重复数据串搬移巨指令132。在此应注意,在步骤412与416中通过对ROB 116的项目设定例外旗标所引发的例外处理程序并非架构性例外处理程序(architectural exception),而是微处理器100的内部微例外处理程序(micro-exception)。也就是说,在内部微例外处理程序的情况下,快速数据串搬移微码142不会将控制权转移至系统软件。例外处理程序的流程结束于步骤412。
在步骤414中,存储器子系统判断在步骤402中所遭遇到的情况是否为保证预取微指令所指定的地址未命中TLB 114。如果是的话,流程前进至步骤416;反之,流程前进至步骤418。
若保证预取微指令所指定的地址未命中TLB 114,在步骤416中,存储器子系统放弃预取该快取列,并对此保证预取微指令所对应的ROB 116项目设定例外旗标,使得此保证预取微指令接续引发例外处理程序。此例外处理程序导致微处理器100管线中较晚于此保证预取微指令的任何微指令136被清除,包括图3的保证预取-加载-储存微指令组。接着,快速数据串搬移微码142执行一微指令以引发页表查找的执行,藉此获得存储器页面的虚拟至物理地址转换,此存储器页面包含保证预取微指令所指定的快取列地址。此外,图3的快速数据串搬移微码142会回复执行(resume),重新加载微指令并利用保证预取微指令来执行快速数据串搬移。在本发明另一实施例中,当发生未命中TLB时,存储器子系统会执行页表查找,并接着以类似步骤418所叙述的方式来重新执行保证预取微指令,而不是致使存储器子系统产生例外处理程序。未命中TLB的流程结束于步骤416。
如果保证预取微指令所指定的地址命中TLB 114,在步骤418中,存储器子系统对保证预取微指令所对应的ROB 116项目设定重新执行旗标,使得保证预取微指令可接续被重新执行。在许多情况中,当保证预取微指令被重新执行时,状况可被排除(即填充队列122的项目为可用的、地址冲突不再存在、或是序列指令被引退),使得存储器子系统可立即重新执行保证预取微指令,当对应的加载微指令到达存储器子系统时,快取列的数据已实时放入数据高速缓存124。命中TLB的流程结束于步骤418。
在一实施例中,可考虑将一保证预取指令加入至微处理器100的指令组架构内,以供使用者程序使用,如同快速数据串搬移微码142所使用的保证预取微指令。
将保证预取微指令加入微指令组的优点在于,由于当加载微指令执行时,所搬移的数据较可能命中于数据高速缓存124,因此微码单元118可较快速地执行REP MOVE指令。
本发明的不同实施例已于本文叙述,但本领域技术人员应能了解这些实施例仅作为范例,而非限定于此。本领域技术人员可在不脱离本发明的精神的情况下,对形式与细节上做不同的变化。例如,软件可致能本发明实施例所述的装置与方法的功能、组建(fabrication)、塑造(modeling)、模拟、描述(description)、以及/或测试。可透过一般程序语言(C、C++)、硬件描述语言(Hardware Description Languages,HDL)(包括Verilog HDL、VHDL等等)、或其它可利用的程序语言来完成。此软件可配置在任何已知的计算机可使用媒介,例如半导体、磁盘、或光盘(例如CD-ROM、DVD-ROM等等)。本发明所述的装置与方法实施例可被包括于半导体智能财产核心,例如微处理器核心(以HDL来实现),并转换成集成电路产品的硬件。此外,本发明所述的装置与方法可实现为硬件与软件的结合。因此,本发明不应局限于所揭露的实施例,而是依所附的权利要求范围与等同实施所界定。特别是,本发明可实施在使用于一般用途计算机中的微处理器装置内。最后,本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (5)
1.一种由一微处理器所执行的方法,该微处理器包括一高速缓存以及一指令组,且该指令组具有第一预取指令与第二预取指令,该方法包括:
当执行该第一预取指令时,检测一预设情况组中的一者或多个的存在,其中,该第一预取指令命令该微处理器自一系统存储器预取一第一数据快取列至该高速缓存;
响应于当执行该第一预取指令时检测该预设情况组中的一者或多个的存在的步骤,放弃自该系统存储器预取该第一数据快取列至该高速缓存;
当执行该第二预取指令时,检测该预设情况组中的一者或多个的存在,其中,该第二预取指令命令该微处理器自该系统存储器预取一第二数据快取列至该高速缓存;以及
响应于执行该第二预取指令时检测该预设情况组中的一者或多个的存在的步骤,完成自该系统存储器预取该第二数据快取列至该高速缓存,
其中该预设情况组包括该第一和第二预取指令分别所指示的第一和第二快取列的地址于该微处理器的转译后备缓冲器中未命中。
2.根据权利要求1所述的方法,其中该指令组是一架构指令组。
3.根据权利要求2所述的方法,其中该架构指令组是一x86架构指令组。
4.一种由一微处理器所执行的方法,该微处理器包括一高速缓存和微码,该方法包括:
对一架构性重复数据串搬移指令进行解码;
响应于对该架构性重复数据串搬移指令进行解码的步骤,执行多个加载指令与储存指令,以将数据串由一来源存储器位置搬移至一目标存储器位置;
在执行该多个加载指令之前,执行多个预取指令,以增加多个快取列在被该多个加载指令处理前出现在该高速缓存的可能性,其中该多个加载和储存指令以及该多个预取指令是该微处理器的微码的指令;
检测该多个预取指令的一者正指示出一存储器地址于该微处理器的一转译后备缓冲器中未命中的一情况,且相应地导致该微码被通知该转译后备缓冲器的未命中;
响应于检测到该情况,清除晚于该多个预取指令的该一者的该多个加载和储存指令的每一个;以及
在上述清除的步骤后,于剩余的该多个加载指令之前,重新开始执行剩余的该多个预取指令,以增加剩余的该多个快取列在被剩余的该多个加载指令处理前出现在该高速缓存的可能性。
5.一种微处理器,包括:
一高速缓存;
一指令组,包括第一预取指令与第二预取指令,该第一预取指令与该第二预取指令中每一者用来命令该微处理器自一系统存储器预取一数据快取列至该高速缓存;以及
一存储器子系统,用来执行该第一预取指令与该第二预取指令,其中,对于该第一预取指令,该存储器子系统响应于一第一既定情况组而放弃自该系统存储器预取该数据快取列至该高速缓存,其中,对于该第二预取指令,该存储器子系统响应于该第一既定情况组来完成自该系统存储器预取该数据快取列至该高速缓存,
其中该既定情况组包括该第一和第二预取指令在一序列指令之后的情况。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18279909P | 2009-06-01 | 2009-06-01 | |
US61/182,799 | 2009-06-01 | ||
US12/781,337 | 2010-05-17 | ||
US12/781,337 US8533437B2 (en) | 2009-06-01 | 2010-05-17 | Guaranteed prefetch instruction |
CN201010194974.XA CN101984403B (zh) | 2009-06-01 | 2010-06-01 | 微处理器及其执行的方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010194974.XA Division CN101984403B (zh) | 2009-06-01 | 2010-06-01 | 微处理器及其执行的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699362A CN103699362A (zh) | 2014-04-02 |
CN103699362B true CN103699362B (zh) | 2016-08-17 |
Family
ID=43221597
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010194974.XA Active CN101984403B (zh) | 2009-06-01 | 2010-06-01 | 微处理器及其执行的方法 |
CN201310729108.XA Active CN103699362B (zh) | 2009-06-01 | 2010-06-01 | 微处理器及其执行的方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010194974.XA Active CN101984403B (zh) | 2009-06-01 | 2010-06-01 | 微处理器及其执行的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8533437B2 (zh) |
CN (2) | CN101984403B (zh) |
TW (2) | TWI531967B (zh) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
CN101627365B (zh) | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
WO2012037491A2 (en) | 2010-09-17 | 2012-03-22 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
EP2689327B1 (en) | 2011-03-25 | 2021-07-28 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
CN103635875B (zh) | 2011-03-25 | 2018-02-16 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
WO2012162189A1 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
TWI666551B (zh) | 2011-05-20 | 2019-07-21 | 美商英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
CN104040491B (zh) | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
WO2013101213A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Method and apparatus for cutting senior store latency using store prefetching |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US10146545B2 (en) * | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
KR101667772B1 (ko) | 2012-08-18 | 2016-10-19 | 퀄컴 테크놀로지스, 인크. | 프리페칭을 갖는 변환 색인 버퍼 |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9292453B2 (en) * | 2013-02-01 | 2016-03-22 | International Business Machines Corporation | Storing a system-absolute address (SAA) in a first level translation look-aside buffer (TLB) |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
KR101708591B1 (ko) | 2013-03-15 | 2017-02-20 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US20160011876A1 (en) * | 2014-07-11 | 2016-01-14 | Cavium, Inc. | Managing instruction order in a processor pipeline |
CN105993004B (zh) * | 2014-07-21 | 2019-04-02 | 上海兆芯集成电路有限公司 | 转译后备缓冲器、操作其的方法以及包含其的处理器 |
CN106485321B (zh) * | 2015-10-08 | 2019-02-12 | 上海兆芯集成电路有限公司 | 具有架构神经网络执行单元的处理器 |
US10126952B2 (en) | 2015-11-05 | 2018-11-13 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
US10241945B2 (en) | 2015-11-05 | 2019-03-26 | International Business Machines Corporation | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions |
US10140052B2 (en) | 2015-11-05 | 2018-11-27 | International Business Machines Corporation | Memory access in a data processing system utilizing copy and paste instructions |
US10152322B2 (en) | 2015-11-05 | 2018-12-11 | International Business Machines Corporation | Memory move instruction sequence including a stream of copy-type and paste-type instructions |
US10067713B2 (en) | 2015-11-05 | 2018-09-04 | International Business Machines Corporation | Efficient enforcement of barriers with respect to memory move sequences |
US10042580B2 (en) | 2015-11-05 | 2018-08-07 | International Business Machines Corporation | Speculatively performing memory move requests with respect to a barrier |
US9996298B2 (en) * | 2015-11-05 | 2018-06-12 | International Business Machines Corporation | Memory move instruction sequence enabling software control |
US10346164B2 (en) | 2015-11-05 | 2019-07-09 | International Business Machines Corporation | Memory move instruction sequence targeting an accelerator switchboard |
US10175985B2 (en) | 2016-03-28 | 2019-01-08 | International Business Machines Corporation | Mechanism for using a reservation station as a scratch register |
US20170286118A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion |
JP2019537085A (ja) * | 2016-10-26 | 2019-12-19 | テンセラ ネットワークス リミテッド | ヘッダ修正を使用したプリフェッチキャッシュ管理 |
US10120688B2 (en) * | 2016-11-15 | 2018-11-06 | Andes Technology Corporation | Data processing system and method for executing block call and block return instructions |
CN111475203B (zh) * | 2020-04-03 | 2023-03-14 | 小华半导体有限公司 | 一种用于处理器的指令读取方法以及相应的处理器 |
US11481219B2 (en) * | 2020-05-07 | 2022-10-25 | International Business Machines Corporation | Store prefetches for dependent loads in a processor |
CN111679857B (zh) * | 2020-06-15 | 2024-01-23 | 上海兆芯集成电路股份有限公司 | 高效能复杂指令译码的微处理器 |
CN114138341B (zh) * | 2021-12-01 | 2023-06-02 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0752644A3 (en) * | 1995-07-07 | 2001-08-22 | Sun Microsystems, Inc. | Memory management unit incorporating prefetch control |
US6128703A (en) * | 1997-09-05 | 2000-10-03 | Integrated Device Technology, Inc. | Method and apparatus for memory prefetch operation of volatile non-coherent data |
US8127121B2 (en) * | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6470427B1 (en) * | 1999-11-09 | 2002-10-22 | International Business Machines Corporation | Programmable agent and method for managing prefetch queues |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6820173B1 (en) * | 2001-02-23 | 2004-11-16 | Nvidia Corporation | Data prefetcher with predictor capabilities |
US6578130B2 (en) * | 2001-10-18 | 2003-06-10 | International Business Machines Corporation | Programmable data prefetch pacing |
US6810466B2 (en) | 2001-10-23 | 2004-10-26 | Ip-First, Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US6775747B2 (en) * | 2002-01-03 | 2004-08-10 | Intel Corporation | System and method for performing page table walks on speculative software prefetch operations |
US7080211B2 (en) | 2002-02-12 | 2006-07-18 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory |
US7089368B2 (en) | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory |
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
TWI227402B (en) * | 2002-06-18 | 2005-02-01 | Ip First Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US6981099B2 (en) * | 2002-12-16 | 2005-12-27 | Sun Microsystems, Inc. | Smart-prefetch |
TWI227853B (en) * | 2003-08-29 | 2005-02-11 | Rdc Semiconductor Co Ltd | Data accessing method and system for processing unit |
JP4134179B2 (ja) * | 2005-02-04 | 2008-08-13 | 株式会社ソニー・コンピュータエンタテインメント | ソフトウエアによる動的予測方法および装置 |
US7840761B2 (en) * | 2005-04-01 | 2010-11-23 | Stmicroelectronics, Inc. | Apparatus and method for supporting execution of prefetch threads |
US7707359B2 (en) * | 2005-12-09 | 2010-04-27 | Oracle America, Inc. | Method and apparatus for selectively prefetching based on resource availability |
CN100485608C (zh) * | 2006-11-17 | 2009-05-06 | 上海高性能集成电路设计中心 | 基于访存指令的数据流预取方法 |
US8595471B2 (en) | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
-
2010
- 2010-05-17 US US12/781,337 patent/US8533437B2/en active Active
- 2010-06-01 TW TW103101921A patent/TWI531967B/zh active
- 2010-06-01 CN CN201010194974.XA patent/CN101984403B/zh active Active
- 2010-06-01 TW TW099117546A patent/TWI436272B/zh active
- 2010-06-01 CN CN201310729108.XA patent/CN103699362B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US8533437B2 (en) | 2013-09-10 |
TWI436272B (zh) | 2014-05-01 |
US20100306503A1 (en) | 2010-12-02 |
TWI531967B (zh) | 2016-05-01 |
CN101984403A (zh) | 2011-03-09 |
TW201419143A (zh) | 2014-05-16 |
CN101984403B (zh) | 2014-06-25 |
TW201120744A (en) | 2011-06-16 |
CN103699362A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103699362B (zh) | 微处理器及其执行的方法 | |
TWI428820B (zh) | 執行快速重複載入資料串操作的微處理器 | |
EP3301566B1 (en) | Pipelined processor with multi-issue microcode unit having local branch decoder | |
CN103793202B (zh) | 微处理器以及预取数据至微处理器的方法 | |
EP1006448B1 (en) | Pipelined non-blocking two level cache system with inherent transaction collision-avoidance | |
US7958317B2 (en) | Cache directed sequential prefetch | |
US6088789A (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
US9135005B2 (en) | History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties | |
JPH02234248A (ja) | 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法 | |
JP2003514299A (ja) | インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ | |
US10713172B2 (en) | Processor cache with independent pipeline to expedite prefetch request | |
KR20010073182A (ko) | 전송을 적재하는 저장 메커니즘 | |
US9092346B2 (en) | Speculative cache modification | |
EP3171264A1 (en) | System and method of speculative parallel execution of cache line unaligned load instructions | |
JP2002527798A (ja) | ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム | |
JP2596712B2 (ja) | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 | |
US20030182539A1 (en) | Storing execution results of mispredicted paths in a superscalar computer processor | |
US10261909B2 (en) | Speculative cache modification | |
CN101882063B (zh) | 微处理器以及预取数据至微处理器的方法 | |
JP2001356905A (ja) | スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法 |
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 |