CN1331044C - 于一微处理器中处理一分离式载入作业的装置与方法 - Google Patents
于一微处理器中处理一分离式载入作业的装置与方法 Download PDFInfo
- Publication number
- CN1331044C CN1331044C CNB2005100062723A CN200510006272A CN1331044C CN 1331044 C CN1331044 C CN 1331044C CN B2005100062723 A CNB2005100062723 A CN B2005100062723A CN 200510006272 A CN200510006272 A CN 200510006272A CN 1331044 C CN1331044 C CN 1331044C
- Authority
- CN
- China
- Prior art keywords
- data
- performance element
- load instructions
- microprocessor
- instruction
- 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 description 36
- 238000003860 storage Methods 0.000 claims description 86
- 230000009471 action Effects 0.000 claims description 21
- 238000009826 distribution Methods 0.000 claims description 18
- 238000007667 floating Methods 0.000 claims description 16
- 238000012546 transfer Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 6
- 238000007766 curtain coating Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 abstract description 5
- 238000013502 data validation Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- VEMKTZHHVJILDY-UHFFFAOYSA-N resmethrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=COC(CC=2C=CC=CC=2)=C1 VEMKTZHHVJILDY-UHFFFAOYSA-N 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- NHDHVHZZCFYRSB-UHFFFAOYSA-N pyriproxyfen Chemical compound C=1C=CC=NC=1OC(C)COC(C=C1)=CC=C1OC1=CC=CC=C1 NHDHVHZZCFYRSB-UHFFFAOYSA-N 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method 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/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
-
- 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
- G06F9/383—Operand prefetching
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
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
技术领域
本发明是关于微处理器的载入动作,特别是关于避免因载入动作而导致的微处理器管线(pipeline)迟滞(stall)。
背景技术
现代微处理器大多具有管线架构,亦即,微处理器的多个区块或管线的多个阶段可同时执行数个指令。汉尼西(John L.Hennessy)与派特森(David A.Patterson)于一九九六年由加州旧金山市摩根考夫曼出版社(Morgan Kaufman Publishers)所出版的“计算机架构-计量分析”(Computer Architecture:A Quantitative Approach)第二版中,定义管线为“同时执行多个指令的一实作技术”。接着,作者们提供以下对于管线的精采解说:
“一条管线类似一条装配生产线。一汽车装配生产线中拥有许多组装步骤,每一步骤皆对汽车的生产作出一定贡献。而每一步骤皆与其他步骤同时平行运作,虽然其对象是属于不同汽车。于一计算机管线作业当中,每一步骤完成一个指令的一部分。如同装配生产线一般,不同的步骤同时平行完成不同指令的不同部分。上述的每一步骤被称为一管线阶段或一管线节段。此管线阶段是相互连接以形成一管线,亦即指令由管线的一端进入,经过若干阶段之后,自另一端离开,犹如汽车于装配生产线一般。”
采用同步电路的微处理器的运作是根据时脉周期。于典型的微处理器中,一指令是于每一时脉周期间,自管线的一阶段移动至另一阶段。于一汽车装配生产线中,若某一阶段的工人因缺乏车辆可供组装而闲置呆坐,则此装配生产线的生产或绩效即受到影响。同样地,若微处理器的某一阶段是因缺乏可供执行的指令而闲置了一个时脉周期,上述的情况通常被称为管线气泡(bubble),则此微处理器的效能同样受到影响而变差。
一般而言,微处理器管线的初始阶段负责提取程序的指令,并将上述所提取的指令分配或发送至管线中实际执行此指令的各个阶段,比如执行加减乘除等动作的逻辑电路计算单元。现代微处理器通常包含多个实际执行指令的执行单元,诸如整数计算单元、浮点数计算单元,或单指令多资料单元(SIMD,Single Instruction Multiple Data)等。上述的分配逻辑电路决定每一个指令将送往哪个执行单元,并且结合执行指令所需的资料(即操作数),以便执行特定的运算来获得结果。若无法获得上述指令所需的操作数,则此分配逻辑电路的运作即发生一瓶颈,进而影响到造成此瓶颈指令之后的其他指令;而甚至被分配至不同于上述造成瓶颈指令的其他执行单元的其他指令,或者跟上述造成瓶颈指令的计算结果不相关的其他指令都将受到影响。上述的情况将导致执行单元闲置而无法执行指令。
相对而言,操作数通常较易取得,因为大多数的操作数是来自微处理器内部的暂存器,故可于一个时脉周期内提供操作数。其他指令的操作数(比如由加载指令所指定的操作数)是由存储器地址而指定。位于存储器内的操作数通常可由微处理器内部的快取存储器于数个时脉周期内提供。然而,有些时候加载指令所指定的资料可能无法及时获得,比如当快取存储器内并无所指定的资料时。于现代微处理器中,自系统存储器提取资料至微处理器所需的时间是较从微处理器内部的暂存器或快取存储器提取资料所需的时间长一到两个量级。而关于此项比例有越来越大趋势,更加剧上述加载指令于指令分配电路所造成的管线延迟与造成管线气泡问题的严重性。据此,亟须一装置与方法以避免上述问题。
发明内容
于本发明所揭示的一目的,是提供一具有管线架构的微处理器,此微处理器将指令分配功能分散至主要指令分配器与执行单元内的额外指令分配逻辑电路,令接续于一遭遇一存储器相关延迟的指令后的其他指令得以不受迟滞继续被分配执行。主要指令分配器要求自一资料快取读取一加载指令所提供的存储器地址内的载入资料。若此资料快取指出此刻无法提供上述的载入资料,则上述的指令分配器立即将此加载指令提供至某适当执行单元而先不理会缺乏载入资料;此指令分配器亦提供上述执行单元一个可独特标示出上述加载指令所缺乏的载入资料的标签,而此资料快取亦知悉此标签。稍后此资料快取获得上述载入资料后,将此载入资料与上述标签馈入一总线,并设定一有效性指标标示此标签与载入资料是属有效。同时正监控此资料快取以获得一有效标签的执行单元内的指令分配逻辑电路,将此有效标签与先前自指令分配器获得的标签进行比对。当比对某标签吻合时,此分配逻辑电路即自上述总线取得此载入资料,并且将此加载指令与资料分配至一功能单元以供执行。上述作业流程于此被称为一分离式载入作业(detached load operation),或称为一分散式载入分配作业(distributed load dispatch operation)。
于本发明所揭示的另一目的,上述每一个执行单元皆包含一指令/资料队列。此指令分配器将上述加载指令写入此队列的一笔记录,以及将一值写入此队列的一资料有效性指标以指出此加载指令的资料是属无效。无论是否为加载指令,若其所有操作数俱皆齐备,则上述的指令分配器皆将其它指令写入此队列,并设定此指令的资料有效性指标为有效。当分配逻辑电路监控上述的资料快取总线时,其仅对队列内资料有效性指标为无效以及具有一有效的指令有效性指标的记录进行标签的比对。一旦上述分配逻辑电路自此资料快取获得上述载入资料,并且将此资料置入储存此分离式加载指令的队列记录后,上述的分配逻辑电路便设定上述资料有效性指标为有效以指出此分离式加载指令已作好准备,可供上述的功能单元加以供执行。
于本发明所揭示的另一目的,上述的指令分配器于分配上述的加载指令至执行单元前,先确保此加载指令是为一不会引发例外的指令,据此令执行单元于此加载指令执行后即可马上将其离退(retire)。上述做法具有一显著优势,亦即当有其它指令被其它执行单元而非此执行单元所限定来保持被分派的加载指令时,则上述做法允许基本上无限地指令分配执行。
本发明一于一微处理器中避免一加载指令而造成管线迟滞的装置,该微处理器包含多数个执行单元以及一快取,其特征在于,该装置包含:
一指令分配器,耦接至该快取,以自该快取要求该加载指令所指定的一资料,可以自该快取接收一代表该资料于当时不存在于该快取的指示,以及可以提供该加载指令与一用以识别无法获得的该资料的标签至该多数个执行单元其中之一;以及
一分配逻辑电路,位于每一个该多数个执行单元内并与该快取连接,其可以监控一连接该快取与该多数个执行单元的总线,以侦测有效吻合该标签的一代表现在可自该快取获得该资料,其还可以于该快取获得该资料后,分配该加载指令与该资料以供执行。
其中该指令分配器于接收代表该资料于当时不存在于该快取的该指示后,提供该加载指令与该标签至该多数个执行单元其中之一,而不会造成该微处理器的管线架构因等待自该快取获得该资料所导致的迟滞。
其中该分配逻辑电路分配该加载指令与该资料以供该多数个执行单元其中之一的一功能单元执行。
其中尚包含下列可能变化的某一种或其任意组合:
该功能单元是设定用以搬移该资料至由该功能单元所在的一该执行单元所维护的一暂存器;以及
该功能单元被设定用以供执行由该加载指令所指定的一动作以产生一执行结果。
其中该动作包含一整数运算。
其中该动作包含一浮点数运算。
其中该动作包含一包裹数学运算。
其中该动作包含一多媒体延伸集包裹数学运算。
其中该动作包含一串流延伸集包裹数学运算。
其中尚包含下列可能变化的某一种或其任意组合:
该指令分配器尚可以决定提供该加载指令至该多数个执行单元的何者以供执行;
该指令分配器更可以根据该加载指令的一形式以决定提供该加载指令至该多数个执行单元的何者以供执行;以及
该指令分配器更可以根据该多数个执行单元其中之一现行负荷量以决定提供该加载指令至该多数个执行单元的何者以供执行。
其中该装置还包含:
于每一个该多数个执行单元内的一指令队列,该指令队列设定用以储存自该指令分配器所接收的多数个加载指令与该标签。
其中该指令队列亦设定用以储存自该快取所获得的多数个该资料。
其中该指令队列亦设定用以储存与该该些资料相关的多数个有效性指标,该多数个有效性指标的每一个是标示该资料是否有效。
其中当该指令分配器接收自该快取的该指示标示该资料并不存在于该快取时,该第一分配逻辑将于该有效性指标中储存一值,以标示提供至该多数个执行单元其中之一的该加载指令与该标签的相关该资料是属无效。
其中该分配逻辑电路在自该快取获得该资料后,便更新该有效性指标的该值以标示该资料是属有效。
其中当该指令分配器接收自该快取的该指示标示该资料是存在于该快取时,该指令分配器将于该有效性指标中储存一值,以标示提供至该多数个执行单元其中之一的该加载指令与该标签的相关该资料是属有效。
其中于该指令分配器提供该加载指令与该资料至该多数个执行单元其中之一并且于该有效性指标内储存该值以标示该资料是属有效后,其中该分配逻辑电路亦分配该加载指令与该资料。
其中尚包含下列可能变化的某一种或其任意组合:
仅有当该加载指令被判断出将不会产生一例外时,其中该第一分配逻辑始提供该加载指令至该多数个执行单元其中之一;以及
该指令分配器更被设定用以提供非加载指令与所有有效操作数至该多数个执行单元其中之一。
其中该标签是可唯一独特识别出该无法获得的资料。
其中该快取管理给予该指令分配器的可唯一独特识别该资料的该标签的产生。
其中该指令分配器管理给予该快取的可唯一独特识别该资料的该标签的产生。
其中该加载指令包含一微指令以自一存储器地址载入资料并且对资料进行一数学运算。
其中尚包含下列可能变化:
若该资料的一地址不存在于该快取中,则该快取提供至该指令分配器的该指示是标示该快取于现在无法提供该资料;以及
若该资料的一地址存在于该快取中,但因该地址与位于该微处理器管线中的一储存作业地址相同而导致于该快取内的该地址无效,则该快取提供至该指令分配器的该指示是标示该快取于现在无法提供该资料。
其中该微处理器管线是于现在无法将该储存作业地址的资料传送至该快取。
其中该指令分配器与该多数个执行单元相较,是位于该微处理器管线的较早阶段便被执行。
其中该分配逻辑电路是通过该总线自该快取获得该资料。
其中该加载指令包含一指令以令该微处理器自一存储器地址所指定的一存储器位置中将该资料读入该微处理器。
其中一电脑程序产品包含一电脑可使用媒体包封电脑可阅读程序码以衍生出该装置,其中该电脑程序产品是应用于一计算装置。
其中包封于一传输媒介的一电脑资料信号包含电脑可阅读程序码以提供该装置。
本发明一具有管线架构的微处理器,其特征在于,该微处理器包含:
一资料快取以连接至一总线;
多数个执行单元,耦接至该资料快取不,其中每一该多数个执行单元皆通过该总线连接至该资料快取,每一该多数个执行单元具有一指令队列与一分配逻辑电路,以于该指令队列指出一指令的所有操作数皆有效的情况下,分配该指令队列内的该指令至该执行单元内的一功能单元;以及
一指令分配器,耦接至该资料快取与该多数个执行单元,该指令分配器提供至少一指令与至少一操作数以及一标示该操作数是否有效的指示至每一该多数个执行单元内的该指令队列,其中若该资料快取无法提供一某指令操作数,则该指令分配器即提供该指令与一标示该某指令操作数是属无效的指示至该指令队列,而不等待自该资料快取获得该某指令操作数。
其中该指令分配器还可以提供一可唯一独特识别出无法获得的该某指令操作数的标签至该指令队列。
其中该分配逻辑电路于侦测到先前由该指令分配器所提供的该标签相同于通过该总线自该资料快取所传送的该某指令操作数相关的标签后,接着通过该总线自该资料快取获得该操作数。
其中该分配逻辑电路于通过该总线自该资料快取获得该某指令操作数后,接着分配该指令与该某指令操作数至该功能单元以供执行。
其中该多数个执行单元包含至少一整数执行单元、一浮点数执行单元、一多媒体延伸集执行单元,以及一串流延伸集执行单元。
其中该指令包含一加载指令。
本发明一种于一微处理器中进行分散式加载指令分配的方法,其中该微处理器具有一快取、一中央指令分配器,与多数个执行单元,并且每一该执行单元皆有一附属指令分配逻辑电路,其特征在于,该方法包含:
一接收步骤,由该中央指令分配器自该快取接收一指示以标示于一加载指令中所指定的操作数资料是无法获得;
一提供步骤,由该中央指令分配器提供该加载指令与一标示出该操作数资料是无法获得的指示至该多数个执行单元其中之一;以及
一获得步骤,于该多数个执行单元其中之一获得标示出无法获得该操作数资料的该指示后,由该多数个执行单元中的一某执行单元的该附属指令分配逻辑电路自该快取获得该操作数资料。
其中还包含:
于该获得步骤后,由该多数个执行单元其中之一的该附属指令分配逻辑电路分配指令与已获得的该操作数资料至该多数个执行单元中的该某执行单元之一功能单元以供执行。
其中还包含:
判断该加载指令是否为一会产生例外的指令;以及
仅于该加载指令非一会产生例外的指令的情况下,将该加载指令提供至该多数个执行单元中的该某执行单元。
其中还包含:
一标签提供步骤,是在该获得步骤的前,由该中央指令分配器提供可唯一独特识别该无法获得的操作数资料的一标签至该多数个执行单元中的该某执行单元,在此该获得步骤是由该多数个执行单元其中之一的该附属指令分配逻辑电路自该快取获得该操作数资料。
其中还包含:
一传送步骤,该传送步骤是于进行该标签提供步骤后,亦即于该中央指令分配器提供可唯一独特识别该无法获得的操作数资料的该标签至该多数个执行单元的该某执行单元后,由该快取于一总线上传送该标签。
其中还包含:
一侦测步骤,是于进行该传送步骤后,由该多数个执行单元的该某执行单元的该附属指令分配逻辑电路比对于该总线上可唯一独特识别该无法获得的操作数资料的该标签;以及
执行该获得步骤,于进行该侦测步骤后,接着由该多数个执行单元的该某执行单元的该附属指令分配逻辑电路自该快取获得该操作数资料。
其中还包含:
一操作数获得步骤,是于该中央指令分配器提供标示出该操作数资料是无法获得的该指示至该多数个执行单元的该某执行单元后,由资料快取获得该操作数资料。
其中由该中央指令分配器提供该加载指令至该多数个执行单元其中之一该某执行单元的该提供步骤包含写入该加载指令至该多数个执行单元其中之一该某执行单元之一指令队列。
本发明一种于一微处理器中进行分散式加载指令分配的方法,其特征在于,该方法包含:
对一第一指令进行解码,其中该第一指令是通过指定一存储器地址的方式指定一操作数;
于快取存储器无法提供该存储器地址并且向一第一执行单元指示该操作数是属无效后,提供该第一指令至无操作数的该第一执行单元;
于提供该第一指令后,让该第一执行单元自快取存储器获得该操作数;
于获得该第一指令后,让该第一执行单元执行该指令;
于该第一指令进行解码后,对一第二指令进行解码;和
自快取获得该操作数前,提供该第二指令至一第二执行单元。
其中还包含:
若该存储器地址存在于快取存储器,并且指示到执行单元的该操作数是属有效后,即提供该第一指令至该第一执行单元。
其中还包含:
于提供该第一指令但不包含该操作数至该第一执行单元的同时,提供可唯一独特识别出该操作数的一标签;以及
由该第一执行单元侦测该标签与来自快取存储器的一相关于该操作数的标签是否相同,接着该第一执行单元自快取存储器获得该操作数。
附图说明
为进一步说明本发明的具体技术内容,以下接合实施例及附图详细说明如后,其中:
图1是为根据本发明的一具有管线架构的微处理器的一方块示意图;
图2是为根据本发明图1所示的一指令队列的一方块示意图;
图3是为根据本发明图1所示的一执行单元之一局部方块示意图;以及
图4是为根据本发明图1所示的微处理器作业的一流程示意图。
具体实施方式
为了能彻底地了解本发明,将在下列的描述中提出详尽的步骤及其组成。显然地,本发明的施行并未限定于技艺者所熟习的特殊细节。另一方面,众所周知的组成或步骤并未描述于细节中,以避免造成本发明不必要的限制。本发明的较佳实施例会详细描述如下,然而除了这些详细描述的外,本发明还可以广泛地施行在其他的实施例中,不受限定于本发明的范围。
参考图1所示,其是为根据本发明的具有管线架构的微处理器100的方块示意图。此微处理器100包含多数个管线阶段。于一实施例中,此微处理器100是能实际执行x86架构的指令集。
上述的微处理器100包含一指令提取器102。此指令提取器102自一指令快取中提取程序指令,或若指令不在此指令快取的内时,自与上述的微处理器100相连的一系统存储器中提取程序指令。上述由此指令提取器102所提取的指令包含加载指令。此加载指令是为一指定某一存储器地址的指令,此加载指令的内容是将此指定地址的资料自上述的系统存储器移动至上述微处理器100。若上述的指定地址与此指定地址中的资料已存在于此微处理器100的一资料快取116,则将由上述资料快取116中载入此资料,而非由上述的系统存储器。此加载指令命令此微处理器100搬移上述指定地址中的资料至此加载指令所指定的一目的暂存器。例如,MOV指令是x86架构下的一加载指令,此MOV指令指定一存储器地址为来源操作数以及一通用暂存器为目的操作数。x86架构下的另一加载指令是FLD指令,此FLD指令命令此微处理器100搬移其来源操作数所指定的存储器地址中的资料至此微处理器100的一浮点数暂存器。MOVSS指令是x86架构下的另一加载指令,此MOVSS指令命令此微处理器100从来源操作数所指定的存储器地址载入资料至此微处理器100的一串流延伸集(SSE,Streaming SIMD Extension)暂存器。
上述的微处理器100亦包含一连接至上述指令提取器102的指令格式器104。于一实施例中,此微处理器100所处理的指令集包含可变长度指令,如x86架构指令集,而非固定长度指令。上述的指令格式器104分析一串指令位元组,并将此串位元组拆解为各个独立指令。更进一步而言,此指令格式器104判断出上述的各个独立指令于此串位元组中的长度与启始位置。于一实施例中,此指令格式器104提供已格式化的巨指令至一供储存格式化微指令的指令队列。
上述的微处理器100亦包含一连接至上述指令格式器104的一指令转译器106。于一实施例中,此微处理器100包含一精简指令集计算机(RISC,Reduced Instruction Set Computer)核心,其中上述的精简指令集计算机核心是执行一原生指令集。相对于由上述指令提取器102所提取的指令(被称为巨指令),亦被称为微指令的原生指令是较简单并且更具执行效率的指令。例如,包含巨指令的x86架构指令集或被称为复杂指令集计算机(CISC,Complex Instruction Set Computer)。上述的指令转译器106是将巨指令转译成微指令。此指令转译器106自上述指令格式器104的指令队列中提取已格式化的巨指令,并且将每一个巨指令转译成至少一个以上的微指令供此微处理器100管线的后续阶段利用。此外,此微处理器100亦包含一微码存储器以供储存微码常式,此指令转译器106是使用上述的常式以转译特别复杂或较少使用的巨指令。上述的原生指令集包含精简指令集计算机形式的微加载指令,此微加载指令指定一存储器地址以自系统存储器(或上述的资料快取116)中搬移该地址的资料至此微加载指令所指定的一目的暂存器。于一实施例中,上述的原生指令集包含一类被称为载入暨逻辑电路运算(Ld-Alu)的微加载指令,此类微加载指令将执行载入资料的动作并且对已载入的资料进行一功能运算。于此所指涉的加载指令包含一个命令微处理器的指令自一存储器地址所指定的位置读取资料至微处理器,并且可能包含一巨指令或微指令。于一实施例中,此指令转译器106提供微指令至一供储存转译后的微指令的指令队列。
上述的微处理器100亦包含一连接至上述指令转译器106的一地址产生器108、一连接至上述地址产生器108的指令分配器114、一连接至上述指令分配器114的资料快取116、一连接至上述资料快取116的总线介面单元118,以及多数个连接至上述指令分配器114与资料快取116的执行单元112。于图1示出的实施例中,此微处理器100包含四个执行单元112:一整数执行单元112A、一浮点数执行单元112B、一多媒体延伸集(MMX,multi-media extension)执行单元112C,以及一串流延伸集(SSE)执行单元112D;其中上述各单元的集合可称为执行单元112,并且各个单元亦可分别称为执行单元112。于图1示出的实施例中,此微处理器100包含三个暂存器档案136:一位于上述整数执行单元112A中的通用暂存器档案136A以储存此整数执行单元112A执行指令的相关资料、一位于上述浮点数执行单元112B中的浮点数暂存器档案136B以储存此浮点数执行单元112B与多媒体延伸集执行单元112C执行指令的相关资料,以及一位于上述串流延伸集执行单元112D中的串流延伸集暂存器档案136C以储存此串流延伸集执行单元112D执行指令的相关资料;其中上述各档案的集合可称为暂存器档案136,并且各个档案亦可分别称为暂存器档案136。
除自上述的指令转译器106接收指令外,上述的地址产生器108亦通过一操作数总线172自上述的暂存器档案136接收操作数。若所接收的指令指定一存储器地址,如加载指令所指定的载入地址,则此地址产生器108即利用此指令输入的操作数产生一存储器地址;其中上述的操作数可能包括于指令本身所指定的一位移值(displacement)或一补偿常数值(offset constant)以及来自上述通用暂存器档案136A的操作数,如节段暂存器(segment register)的值。上述的指令可能特别额外指定上述暂存器档案的操作数,亦可能隐藏于指令本身,如一堆叠堆入(push)指令与一堆叠提出(pop)指令本身即已隐含指定一堆叠指标暂存器的操作数参与存储器地址的运算。于一实施例中,上述的微处理器100包含一介于上述指令转译器106与地址产生器108的一暂存器阶段以通过上述的操作数总线172自上述的暂存器档案136接收操作数。
上述的指令分配器114是自上述的地址产生器108接收指令与存储器地址。此指令分配器114亦通过上述的操作数总线172自上述的暂存器档案136接收暂存器操作数。接着,此指令分配器114将已接收的指令分配至一适当的执行单元112;其中,此指令分配器114是通过一指令/资料总线182A将指令分配至上述的整数执行单元112A、通过一指令/资料总线182B将指令分配至上述的浮点数执行单元112B、通过一指令/资料总线182C将指令分配至上述的多媒体延伸集执行单元112C,以及通过一指令/资料总线182D将指令分配至上述的串流延伸集执行单元112D。上述各总线182A至182D的集合可称为指令/资料总线182,并且各个总线亦可分别称为指令/资料总线182。上述的指令分配器114判定哪些执行单元112是被设定以供执行哪个指令,并且将每个指令分配至适当的执行单元112。于第一图示出的实施例中,此指令分配器114将整数指令分配至上述的整数执行单元112A、浮点数指令分配至上述的浮点数执行单元112B、多媒体延伸集指令分配至上述的多媒体延伸集执行单元112C,以及串流延伸集指令分配至上述的串流延伸集执行单元112D。于一实施例中,某种形态的执行单元112可能包含多个执行单元112。例如,此微处理器112可能包含两个串流延伸集执行单元112D;亦即有多个执行单元112可被设定执行某一类型的指令。于此实施例中,上述的指令分配器114亦可根据此执行单元112的工作负荷量以决定指令的分配,亦即此指令分配器114可由此执行单元112得悉资讯,例如于每个执行单元112中有多少等待执行的指令数量。此指令分配器114可依据上述资讯平均地分配指令至各个执行单元112以利程序执行的最佳化。
于此所定义的操作数是指一指令所需的输入,以利指令产生一结果或执行一项功能。一般而言,指令可指定来自一个或三个来源的一或多个的操作数。其中,来源的一是指令本身,指令可能提供一直接操作数(directoperand),亦即指令位元组所包含的一个值,如一立即的资料值、一地址的位移值,或一补偿值;来源的二是暂存器,例如此微处理器100中的暂存器档案136内的暂存器可提供一暂存器操作数(registeroperand);操作数来源的三是存储器,例如系统存储器或上述的资料快取116可提供一存储器操作数(memory operand)。更精确而言,加载指令是指定位于一存储器地址中的一存储器操作数,将其载入至此微处理器100中的一暂存器。
一般而言,上述的指令分配器114获得指令所指定的所有操作数之后,即将此一指令及其操作数分配至一适当的执行单元112。若某一指令的操作数尚未到齐,则上述的指令分配器114将持续等待,直至所有操作数到齐后始开始分配指令。上述情况所造成的一副作用为,于此一指令后的其余指令皆无法被分配至上述的执行单元112,据此则导致至少一个以上的执行单元112闲置不动,即便后续指令可为此闲置执行单元112所执行。此问题特别是发生于无法自上述的资料快取116中取得加载指令的一存储器操作数时,须花费较长时间取得资料。然而,本发明的优点是根据是否需要等待操作数以分辨非加载指令与加载指令。若一加载指令的存储器操作数并不存在于上述的资料快取116时,则不待上述存储器操作数,上述的指令分配器114立刻将此指令分配至一适当的执行单元112;接着,于上述的资料快取116获取此存储器操作数后,此执行单元112随即执行此指令以避免发生上述的问题。上述所指涉的作业过程称为一分离式载入作业(detached load operation),或称为一分散式载入分配作业(distributed load dispatch operation),以下将描述其细节。
若上述的指令分配器114所接收的指令是为一加载指令,此指令分配器114将发出一读取此加载指令所指定资料的要求142至上述的资料快取116;其中,上述的要求142包含由上述地址产生器108所产生的载入存储器地址。为对此指令分配器114所发出的此要求142作出回应,上述的资料快取116将以下列三种方式择一回应:第一,若此读取要求142导致一例外情况时,此资料快取116将于一例外信号144中产生一真(true)值以回应上述的指令分配器114。其中,上述的例外情况诸如除错例外、中断点(breakpoint)例外、范围超出例外、无效动作码例外(invalid opcode exception)、超精准浮点数(double)错误、区段不存在例外(segment not present exception)、堆叠区段错误、一般保护错误(stack segment exception)、分页错误、对齐检查例外(alignment check exception),或机器检查例外等。当上述资料快取116不于例外信号144产生一真值时,意即此加载指令是为一非例外(non-excepting)指令。于第二种回应方式中,上述的资料快取116将于一资料取得性信号146中产生一伪(false)值以指明此加载指令所指定的载入地址于此刻是无法取得,并且向此指令分配器114提供一标签148以唯一独特识别此一无法取得的资料。接着,上述指令分配器114将上述的唯一独特标签148分配至上述的适当执行单元112;据此唯一独特标签148,此适当执行单元112将于其后向上述资料快取116取得所要求的资料,其中细节将于稍后进行讨论。于第三种回应方式中,上述的资料快取116将于一资料取得性信号146中产生一真值以指明此载入地址的资料是可取得,并通过一资料总线152将所要求的资料提供至上述指令分配器114。上述的资料快取116包含一标签管理器122,此标签管理器122是管理由一标签信号148所提供的标签,以确保每一个未解决的分离式载入作业皆收到一个唯一独特标签148。于一实施例中,此标签管理器122是维护一流动数值(rollingdigit),当每次发出一新的唯一独特标签148后,此一流动数值即随之增加。此流动数值须大到足供保证于此微处理器100中的任何时刻内,任一分离式载入作业皆可拥有一唯一独特标签148。
上述的资料快取116亦连接至上述的总线介面单元118。此资料快取116向此总线介面单元118发出要求至系统存储器载入或储存资料,其中,系统存储器是通过一微处理器总线连接至此微处理器100。上述的资料快取116可能包含一阶层式的快取存储器,如一第一级快取与一第二级快取。特别当上述的指令分配器114将发出上述的申请读取资料的要求142至此资料快取116,并且此资料快取116并无此资料时,亦即此载入地址并不存在于此资料快取116中时,则此资料快取116将向上述的总线介面单元118发出要求,自系统存储器提取包含上述资料的一个或一个以上的快取资料段(cache line)。上述自系统存储器提取资料可能须耗费较长时间,于某些实施例的微处理器100当中,可能大约需要花费一百个核心时脉周期的久。本发明所具有的优势在于可不等待载入操作数资料,加载指令直接于缺乏载入操作数资料的情况下被分配至上述的执行单元112;据此,位于此加载指令后的其他指令亦可被分配至上述的执行单元112执行,而不会停滞于较早的管线阶段并且可能造成执行单元112的闲置。当所需载入的资料自系统存储器抵达后,上述的总线介面单元118将此资料提供至上述的资料快取116;接着,此资料快取116将通过一资料总线162提供所需载入的资料、通过一标签信号164提供与此资料相关的唯一独特标签148,以及产生一真值于一有效信号166中。上述的资料总线162、一标签信号164,以及有效信号166皆包含一连接至每个执行单元112的总线。于一实施例中,上述的资料总线162是包含一个六十四位元的总线。当加载指令正卡在上述的适当执行单元112时,此执行单元112即监控与上述资料快取116连接的总线,以便侦测与获得上述资料快取116所提供的载入资料,此一过程将于稍后加以详述。
除上述的多媒体延伸集执行单元112C与上述的浮点数执行单元112B共用同一个暂存器档案外,每一个执行单元112包含一指令队列132x、一功能单元134x、一分配逻辑138x,与一暂存器档案136x。如图1所示,上述标号的尾码“x”于上述整数执行单元112A的各元件中是为“A”、于上述浮点数执行单元112B的各元件中是为“B”、于上述多媒体延伸集执行单元112C的各元件中是为“C”,以及于上述串流延伸集执行单元112D的各元件中是为“D”。
对每一个执行单元112而言,上述的指令队列132是通过前述的指令/资料总线182自上述的指令分配器114接收指令与操作数。此指令队列132亦通过上述的资料总线162自上述资料快取116接收资料。以下关于此指令队列132的结构细节请参考图2与图3所示。上述的功能单元134是连接至上述的指令队列132,并且接收来自此指令队列132的指令与操作数以及接受上述分配逻辑138的控制。此功能单元134将针对操作数进行所接收指令指定的一功能动作,诸如位移(shift)、旋转(rotate)、数学运算、布林运算、载入、储存、控制、测试、比较,或其他动作。连接至此功能单元134的上述暂存器档案136,是接收并储存此功能单元134的运算结果。上述的分配逻辑电路138是连接至上述的指令队列132与功能单元134。此分配逻辑电路138负责管理上述的指令队列132,并且控制此指令队列132,将指令分配至上述的功能单元134执行。此分配逻辑电路138亦接收来自上述资料快取116的标签信号164与有效信号166,以便监控侦测来自此资料快取116的分离载入资料,其细节将于稍后详述。
于本说明说所指称的分配或称发送指令,意指提供一个指令与其相关的操作数以便执行。于图1示出的微处理器100中,此指令分配器114将绝大多数的指令分配发送至其中一个执行单元112,意即此指令分配器114提供绝大多数指令与其相关的操作数至上述的执行单元112。然而,如先前已述,于存储器操作数尚无法取得的情况下,此指令分配器114选择性地将缺乏存储器操作数的加载指令提供至上述的执行单元112。于上述的情况下,此执行单元112中的分配逻辑电路138将于稍后自上述的资料快取116获得上述的存储器操作数,接着将此加载指令与此存储器操作数分配至上述的功能单元134。于此,上述的过程特此称为一分离式载入作业,或一分散式载入分配作业。
请参考图2,其是为根据本发明图1所示的一指令队列132的一方块示意图。图2示出的指令队列132是代表每一个于图1示出的执行单元112内的指令队列132。图2示出的指令队列132具有八笔记录(entry),然而,记录的个数将依据各个执行单元112的不同需求而有所增减,比如根据此一执行单元112所执行的指令形态以及执行每一个指令所需的平均时间而定。
每一笔队列记录222包含一资料栏位202、资料有效性栏位204、一标签栏位206、一指令栏位208,以及一指令有效性栏位212。上述的指令栏位208储存将由上述执行单元112所执行的指令,可能包含原有巨指令的指令位元组或是微指令。除此之外,此指令栏位208可能包含于此微处理器100先前管线阶段对指令解码所产生的其他资讯。上述的指令有效性栏位212是用以指出储存于此指令栏位208内的指令是否有效。每次当上述的指令分配器114写入资料至此指令队列132时,此笔队列记录222的指令有效性栏位212是被更新为一真值。当上述的分配逻辑电路138自此笔队列记录222移除指令时,此指令有效性栏位212则被更新为一伪值。上述的资料栏位202是用以储存于此指令栏位208内的指令的操作数,诸如一加载指令的一存储器操作数。上述的资料有效性栏位204是用以指出储存于此资料栏位202内的资料是否有效。于一实施例中,上述的资料栏位202包含多数个栏位以储存多数个操作数,以及一相对应的多数个资料有效性栏位204。上述的标签栏位206是用以储存相对应于一分离式载入作业的一唯一独特标签;当上述的指令分配器114分配一加载指令以供执行此分离式载入作业时,此指令分配器114是将由上述资料快取116所提供的一唯一独特标签写入上述的标签栏位206。于此指令队列132内的每一笔队列记录222皆经过由上述分配逻辑电路138所控制的一多工器(未示于图2中),以便择一分配至上述的功能单元134执行。于一实施例中,上述分配逻辑电路138是依据所接收指令的时间顺序,将此指令队列132中的指令分配至上述的功能单元134执行。然而,于其他实施例中,上述分配逻辑电路138是不依据所接收指令的时间顺序,将此指令队列132中的指令分配至上述的功能单元134执行。例如,于指令间没有前后顺序关联的情况下,此分配逻辑电路138可能将一操作数齐备的指令移动至一尚缺乏操作数的分离式加载指令的前执行。
请参考图3,其是为根据本发明图1所示的一执行单元112的一局部方块示意图。此执行单元112包含图1示出的分配逻辑电路138。图3示出的单一笔队列记录222是代表图2示出的指令队列的多数个队列记录222。上述的执行单元112自上述指令分配器114连接上述的指令/资料总线182,其中,此指令/资料总线182包含一部分供写入上述队列记录222的资料有效性栏位204、标签栏位206,以及指令栏位208。位于上述队列记录222的资料有效性栏位204、标签栏位206、指令栏位208以及指令有效性栏位212内的资料是为上述分配逻辑138的输入。此分配逻辑138亦接收来自上述的资料快取116的标签信号164与有效性信号166。
上述的执行单元112亦包含一具有两个输入端的多工器312,其中上述多工器312的输出端是连接至上述队列记录222的资料栏位202。于此执行单元112中的每一笔队列记录222皆具有一个多工器312。此多工器312的一输入端是接收来自上述资料快取116的资料总线162的输入,另一输入端是接收来自上述指令分配器114的指令/资料总线182的资料总线部分。上述的分配逻辑138产生一资料选择信号308以控制上述两输入端的何者为此多工器312的输出。当上述指令分配器114写入此笔队列记录222时,则上述的分配逻辑138选择来自指令/资料总线182的资料;若分离式载入资料是由上述资料快取116获得时,则上述的分配逻辑138选择来自上述资料快取116的资料总线162的输入。此外,当上述的指令分配器114写入此笔队列记录222或当上述分配逻辑138自上述资料快取116获得分离式载入资料时,上述分配逻辑138亦于一资料写入信号306中产生一真值提供至上述队列记录222的资料栏位202,此真值可令此多工器312的输出值输出至上述的资料栏位202。自上述资料快取116获得资料后,此分配逻辑电路138亦产生一更新资料有效性信号304将上述的资料有效性栏位值更新为一真值。
请参考图4,其是为根据本发明图1所示的微处理器100作业的一流程示意图。此流程是始于步骤402。
于步骤402中,上述的指令分配器114接收一指令。此一指令可能为一加载指令或其他非载入的指令。于一实施例中,上述的指令分配器114一次接到一个指令;然而,可能有其他实施例的微处理器100是属超纯量(superscalar)处理器,此超纯量处理器的指令分配器114于每一时脉中接收多个指令,并且于每一时脉中将多个指令分配至各执行单元112。接着,此流程进行至决策步骤404。
于决策步骤404中,上述的指令分配器114判断所接收指令是否为一加载指令。若此指令属加载指令,则进行步骤406;否则进行步骤416。
进行步骤406,上述的指令分配器114产生一要求142至上述的资料快取116,要求取得位于此加载指令中存储器地址内的资料。接着,进行决策流程408。
于决策步骤408中,上述的指令分配器114检查上述资料快取116是否产生例外讯号144,进而判断此加载指令是否为一不造成例外的指令。若此指令不会造成例外状况,则进行步骤414;否则进行步骤412。
于步骤412中,此加载指令所造成的例外状况,通常需要导致例外的指令消去。整个流程将于步骤412结束。
于决策步骤414中,上述的指令分配器114检查上述资料取得性信号146以判断是否能取得先前所要求的资料。若因资料不在此资料快取116中,则上述的指令分配器114将无法取得资料。亦即,由此指令分配器114提供至此资料快取116的载入存储器地址并不在此资料快取116中。但若于此微处理器100管线中另有一储存作业地址与此载入存储器地址相同,并且拥有更新的资料时,即便此载入存储器地址是位于此资料快取116中,此资料快取116亦不能将此资料传至上述的指令分配器114,且必须产生一伪值至上述资料取得性信号146。若可取得此资料,则接着进行步骤416;否则进行步骤424。
进行步骤416,获得此指令所需的所有操作数后,上述的指令分配器114将此指令及其操作数写入适当执行单元112的指令队列132。此指令分配器114亦于被写入的队列记录222的资料有效性栏位204写入一真值以表示于此队列记录222的资料是属有效。于上述指令分配器114写入后,此队列记录222的指令有效性栏位212亦自动更新为一真值。接着进行步骤418。
于步骤418中,一旦某指令待分配后,于此执行单元112的分配逻辑电路138将此指令自上述的指令队列132中移除,并且将此指令分配至上述的功能单元134执行。于上述分配逻辑电路138自此指令队列132的队列记录222移除上述指令后,此队列记录222的指令有效性栏位212即自动更新为一伪值。接着进行步骤422。
于步骤422中,上述的功能单元134执行此指令。上述执行此指令的功能单元134包含足以产生此指令结果的功能动作,诸如位移、旋转、数学运算、布林运算、载入、储存、控制、测试、比较,或其他动作。上述执行此指令的功能单元134亦可能根据执行此指令的结果进而更新此微处理器100架构状态,例如更新诸多暂存器档案136其一的暂存器内容。以一加载指令为例,因此指令于上述决策步骤408中被判定为一不会造成例外的指令,即可能更新上述的暂存器档案136。以一搬移形态的加载指令为例,上述的功能单元134将载入资料搬移至上述暂存器档案136的目标暂存器中。对某些搬移指令而言,上述的功能单元134会修改或扩增所传递的载入资料。例如一正负号延伸的加载指令,上述的功能单元134除提供原始资料的外,亦提供额外几个位元长的资料以表示原始资料的正负符号。整个流程于步骤422结束。
于步骤424中,通过前述标签信号148,此资料快取116将前述标签管理器122所提供的关于此分离式载入资料的一唯一独特标签提供至上述的指令分配器114。于另一实施例中,负责管理唯一独特标签的标签管理器122是包含于上述的指令分配器114而非资料快取116中。于此实施例中,上述的指令分配器114预订一唯一独特标签,并将此唯一独特标签包封于上述发送至此资料快取116的要求142中。若此资料快取116指出所要求的资料不存在,则此资料快取116将此载入要求连结至此唯一独特标签。接着进行步骤426。
于步骤426中,若因载入资料不存在于此资料快取116,则此资料快取116将要求前述总线介面单元118对系统存储器发出一总线要求上述的载入资料。若因载入资料的存储器地址与位于此微处理器100管线内的一储存作业地址相同,并且其资料较新于此资料快取116的资料,故无法将此资料快取116的资料传送至上述的指令分配器114,则此资料快取116将持续等待较新资料更新此资料快取116的内容。接着进行步骤428。
于步骤428中,此指令分配器114将上述指令与其他已经获得的操作数写入适当执行单元112的指令队列132中。此指令分配器114亦对被写入到该笔队列记录222的资料有效性栏位204设定为一伪值,以指明于此笔队列记录222内的分离式载入资料栏位202是属无效。此指令分配器114亦将由步骤424中自上述的资料快取116获得的标签值写入此笔队列记录222内的标签栏位206。于上述的指令分配器114写入后,此笔队列记录222内的指令有效性栏位212将自动更新为一真值。接着进行步骤432。
于步骤432中,上述的分配逻辑电路138监控或侦查来自此资料快取116的标签信号164与有效信号166,当此有效信号166为真时,接着查询上述指令队列132中是否有任何一笔队列记录222的资料有效性栏位204的值为伪及指令有效性栏位212的值为真,同时其标签栏位206是与上述的标签信号164相同者。接着进行步骤434。
于步骤434中,上述的分配逻辑电路138是根据于步骤432中对上述来自资料快取116总线的监控,以判定是否存有一标签相同的队列记录222。若确有标签相同的队列记录222,则进行步骤436;否则整个流程将回到步骤432。
于步骤436中,由对前述的资料选择信号308产生一真值以令前述多工器312以上述资料快取116的资料总线162做为输入端,以及对前述的资料写入信号306产生一真值以令此分离式载入资料被写入,上述的分配逻辑138即可自上述资料快取116的资料总线162中载入资料至上述标签相同的队列记录222的资料栏位202中。接着进行步骤418。
本发明所具有的一优点在于,当尚在等待一所需资料未完备的加载指令时,只须与上述未完备的资料无关,则本发明允许一基本上无限数量的后续指令继续被分配执行。是因根据本发明的指令分配器114于分配加载指令至执行单元112前,已先确认此指令将不会造成例外状况,故后续不相关的指令将不会再与上述分散式加载指令有何关联。据此,上述后续不相关的指令可自其所执行的执行单元112离退,并且将位于此执行单元112内指令队列132的队列记录222空出给新的后续不相关指令。上述优点是超越传统微处理器。例如于一具有传统重新排序(reorder)缓冲区的微处理器中,当有一加载指令正等待中时,能够进行分配的后续指令的数目将被限制于上述重新排序缓冲区的深度,因为此微处理器须得等待执行单元处理完此加载指令后,才得以通知上述重新排序缓冲区此加载指令是否会产生一例外情况。
虽然本发明及其目的、特征,与优点已于上详述,但本发明亦适用于其他实施例。例如,虽然于本说明书中所提到的一微处理器实施例是采用x86架构,然而于此所提到的装置与方法皆不受限于x86架构,并且可以适用于其他不同的微处理器架构。除此的外,虽然本发明所提的例子为加载指令,亦可延伸运用至需要长延迟时间以获得操作数的任何指令。最后,虽然先前所述的实施例是具有特定数目的特定形态的执行单元,然则熟悉此项技艺者将可明白本发明可适用于其他种类与数量的执行单元组合。
再者,虽然本发明及其目的、特征,与优点已于上详述,但本发明亦适用于其他实施例。本发明的实作除可使用硬件的外,本发明亦可以实作于一电脑可使用(比如以电脑可阅读的形式)的媒体上的电脑可阅读码(亦即电脑可阅读的程序码与资料等等),其中上述的电脑可阅读码将可使本发明揭露的功能、组件,或者上述两者得以运行。例如,本发明可通过使用此领域内的通用程序语言(例如C、C++、Java以及其他类似程序语言);GDSII资料库;包括Verilog HDL、VHDL、Altera HDL(AHDL)或其他的硬件描述语言(HDL,hardware description language);或其他程序性与/或电路(亦即线路)捕捉工具等加以实作。上述的电脑码可置放于任何电脑可使用(比如以电脑可阅读的形式)的媒体,包括半导体存储器、磁盘、光盘(如CD-ROM、DVD-ROM,及其他),以及于一电脑可使用(比如以电脑可阅读的形式)的传输媒介(例如载波或任何其他包括数字、光学,或模拟基础的媒介)上的一电脑资料信号。其中,上述的电脑码可通过包含网际网路与内部网路的类的通讯网路进行传输。本发明可实作于电脑码(例如以智慧财产权核心的部分存在、如一微处理器核心、或一系统层次的设计,或系统晶片等方式)并且可以部分转换成以集成电路形式存在的硬件。再者,本发明可能实施的方式是为硬件与上述电脑码的组合。
显然地,依照上面实施例中的描述,本发明可能有许多的修正与差异。因此需要在其附加的权利要求项的范围内加以理解,除了上述详细的描述外,本发明还可以广泛地在其他的实施例中施行。上述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述申请专利范围内。
Claims (46)
1.一于一微处理器中避免一加载指令而造成管线迟滞的装置,该微处理器包含多数个执行单元以及一快取,其特征在于,该装置包含:
一指令分配器,耦接至该快取,以自该快取要求该加载指令所指定的一资料,可以自该快取接收一代表该资料于当时不存在于该快取的指示,以及可以提供该加载指令与一用以识别无法获得的该资料的标签至该多数个执行单元其中之一;以及
一分配逻辑电路,位于每一个该多数个执行单元内并与该快取连接,其可以监控一连接该快取与该多数个执行单元的总线,以侦测有效吻合该标签的一代表现在可自该快取获得该资料,其还可以于该快取获得该资料后,分配该加载指令与该资料以供执行。
2.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该指令分配器于接收代表该资料于当时不存在于该快取的该指示后,提供该加载指令与该标签至该多数个执行单元其中之一,而不会造成该微处理器的管线架构因等待自该快取获得该资料所导致的迟滞。
3.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该分配逻辑电路分配该加载指令与该资料以供该多数个执行单元其中之一的一功能单元执行。
4.如权利要求3所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中尚包含下列可能变化的某一种或其任意组合:
该功能单元是设定用以搬移该资料至由该功能单元所在的一该执行单元所维护的一暂存器;以及
该功能单元被设定用以供执行由该加载指令所指定的一动作以产生一执行结果。
5.如权利要求4所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该动作包含一整数运算。
6.如权利要求4所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该动作包含一浮点数运算。
7.如权利要求4所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该动作包含一包裹数学运算。
8.如权利要求7所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该动作包含一多媒体延伸集包裹数学运算。
9.如权利要求7所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该动作包含一串流延伸集包裹数学运算。
10.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中尚包含下列可能变化的某一种或其任意组合:
该指令分配器尚可以决定提供该加载指令至该多数个执行单元的何者以供执行;
该指令分配器更可以根据该加载指令的一形式以决定提供该加载指令至该多数个执行单元的何者以供执行;以及
该指令分配器更可以根据该多数个执行单元其中之一现行负荷量以决定提供该加载指令至该多数个执行单元的何者以供执行。
11.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该装置还包含:
于每一个该多数个执行单元内的一指令队列,该指令队列设定用以储存自该指令分配器所接收的多数个加载指令与该标签。
12.如权利要求11所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该指令队列亦设定用以储存自该快取所获得的多数个该资料。
13.如权利要求12所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该指令队列亦设定用以储存与该该些资料相关的多数个有效性指标,该多数个有效性指标的每一个是标示该资料是否有效。
14.如权利要求13所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中当该指令分配器接收自该快取的该指示标示该资料并不存在于该快取时,该指令分配器将于该有效性指标中储存一值,以标示提供至该多数个执行单元其中之一的该加载指令与该标签的相关该资料是属无效。
15.如权利要求14所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该分配逻辑电路在自该快取获得该资料后,便更新该有效性指标的该值以标示该资料是属有效。
16.如权利要求13所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中当该指令分配器接收自该快取的该指示标示该资料是存在于该快取时,该指令分配器将于该有效性指标中储存一值,以标示提供至该多数个执行单元其中之一的该加载指令与该标签的相关该资料是属有效。
17.如权利要求16所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中于该指令分配器提供该加载指令与该资料至该多数个执行单元其中之一并且于该有效性指标内储存该值以标示该资料是属有效后,其中该分配逻辑电路亦分配该加载指令与该资料。
18.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中尚包含下列可能变化的某一种或其任意组合:
仅有当该加载指令被判断出将不会产生一例外时,其中该指令分配器始提供该加载指令至该多数个执行单元其中之一;以及
该指令分配器更被设定用以提供非加载指令与所有有效操作数至该多数个执行单元其中之一。
19.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该标签是可唯一独特识别出该无法获得的资料。
20.如权利要求19所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该快取管理给予该指令分配器的可唯一独特识别该资料的该标签的产生。
21.如权利要求19所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该指令分配器管理给予该快取的可唯一独特识别该资料的该标签的产生。
22.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该加载指令包含一微指令以自一存储器地址载入资料并且对资料进行一数学运算。
23.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中尚包含下列可能变化:
若该资料的一地址不存在于该快取中,则该快取提供至该指令分配器的该指示是标示该快取于现在无法提供该资料;以及
若该资料的一地址存在于该快取中,但因该地址与位于该微处理器管线中的一储存作业地址相同而导致于该快取内的该地址无效,则该快取提供至该指令分配器的该指示是标示该快取于现在无法提供该资料。
24.如权利要求23所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该微处理器管线是于现在无法将该储存作业地址的资料传送至该快取。
25.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该指令分配器与该多数个执行单元相较,是位于该微处理器管线的较早阶段便被执行。
26.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该分配逻辑电路是通过该总线自该快取获得该资料。
27.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中该加载指令包含一指令以令该微处理器自一存储器地址所指定的一存储器位置中将该资料读入该微处理器。
28.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中一电脑程序产品包含一电脑可使用媒体包封电脑可阅读程序码以衍生出该装置,其中该电脑程序产品是应用于一计算装置。
29.如权利要求1所述的于一微处理器中避免一加载指令而造成管线迟滞的装置,其特征在于,其中包封于一传输媒介的一电脑资料信号包含电脑可阅读程序码以提供该装置。
30.一具有管线架构的微处理器,其特征在于,该微处理器包含:
一资料快取以连接至一总线;
多数个执行单元,耦接至该资料快取,其中每一该多数个执行单元皆通过该总线连接至该资料快取,每一该多数个执行单元具有一指令队列与一分配逻辑电路,以于该指令队列指出一指令的所有操作数皆有效的情况下,分配该指令队列内的该指令至该执行单元内的一功能单元;以及
一指令分配器,耦接至该资料快取与该多数个执行单元,该指令分配器提供至少一指令与至少一操作数以及一标示该操作数是否有效的指示至每一该多数个执行单元内的该指令队列,其中若该资料快取无法提供一某指令操作数,则该指令分配器即提供该指令与一标示该某指令操作数是属无效的指示至该指令队列,而不等待自该资料快取获得该某指令操作数。
31.如权利要求30所述的具有管线架构的微处理器,其特征在于,其中该指令分配器还可以提供一可唯一独特识别出无法获得的该某指令操作数的标签至该指令队列。
32.如权利要求31所述的具有管线架构的微处理器,其特征在于,其中该分配逻辑电路于侦测到先前由该指令分配器所提供的该标签相同于通过该总线自该资料快取所传送的该某指令操作数相关的标签后,接着通过该总线自该资料快取获得该操作数。
33.如权利要求32所述的具有管线架构的微处理器,其特征在于,其中该分配逻辑电路于通过该总线自该资料快取获得该某指令操作数后,接着分配该指令与该某指令操作数至该功能单元以供执行。
34.如权利要求30所述的具有管线架构的微处理器,其特征在于,其中该多数个执行单元包含至少一整数执行单元、一浮点数执行单元、一多媒体延伸集执行单元,以及一串流延伸集执行单元。
35.如权利要求30所述的具有管线架构的微处理器,其特征在于,其中该指令包含一加载指令。
36.一种于一微处理器中进行分散式加载指令分配的方法,其中该微处理器具有一快取、一中央指令分配器,与多数个执行单元,并且每一该执行单元皆有一附属指令分配逻辑电路,其特征在于,该方法包含:
一接收步骤,由该中央指令分配器自该快取接收一指示以标示于一加载指令中所指定的操作数资料是无法获得;
一提供步骤,由该中央指令分配器提供该加载指令与一标示出该操作数资料是无法获得的指示至该多数个执行单元其中之一;以及
一获得步骤,于该多数个执行单元其中之一获得标示出无法获得该操作数资料的该指示后,由该多数个执行单元中的一某执行单元的该附属指令分配逻辑电路自该快取获得该操作数资料。
37.如权利要求36所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
于该获得步骤后,由该多数个执行单元其中之一的该附属指令分配逻辑电路分配指令与已获得的该操作数资料至该多数个执行单元中的该某执行单元之一功能单元以供执行。
38.如权利要求36所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
判断该加载指令是否为一会产生例外的指令;以及
仅于该加载指令非一会产生例外的指令的情况下,将该加载指令提供至该多数个执行单元中的该某执行单元。
39.如权利要求36所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
一标签提供步骤,是在该获得步骤的前,由该中央指令分配器提供可唯一独特识别该无法获得的操作数资料的一标签至该多数个执行单元中的该某执行单元,在此该获得步骤是由该多数个执行单元其中之一的该附属指令分配逻辑电路自该快取获得该操作数资料。
40.如权利要求39所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
一传送步骤,该传送步骤是于进行该标签提供步骤后,亦即于该中央指令分配器提供可唯一独特识别该无法获得的操作数资料的该标签至该多数个执行单元的该某执行单元后,由该快取于一总线上传送该标签。
41.如权利要求40所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
一侦测步骤,是于进行该传送步骤后,由该多数个执行单元的该某执行单元的该附属指令分配逻辑电路比对于该总线上可唯一独特识别该无法获得的操作数资料的该标签;以及
执行该获得步骤,于进行该侦测步骤后,接着由该多数个执行单元的该某执行单元的该附属指令分配逻辑电路自该快取获得该操作数资料。
42.如权利要求36所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
一操作数获得步骤,是于该中央指令分配器提供标示出该操作数资料是无法获得的该指示至该多数个执行单元的该某执行单元后,由资料快取获得该操作数资料。
43.如权利要求36所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中由该中央指令分配器提供该加载指令至该多数个执行单元其中之一该某执行单元的该提供步骤包含写入该加载指令至该多数个执行单元其中之一该某执行单元之一指令队列。
44.一种于一微处理器中进行分散式加载指令分配的方法,其特征在于,该方法包含:
对一第一指令进行解码,其中该第一指令是通过指定一存储器地址的方式指定一操作数;
于快取存储器无法提供该存储器地址并且向一第一执行单元指示该操作数是属无效后,提供该第一指令至无操作数的该第一执行单元;
于提供该第一指令后,让该第一执行单元自快取存储器获得该操作数;
于获得该第一指令后,让该第一执行单元执行该指令;
于该第一指令进行解码后,对一第二指令进行解码;和
自快取获得该操作数前,提供该第二指令至一第二执行单元。
45.如权利要求44所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
若该存储器地址存在于快取存储器,并且指示到执行单元的该操作数是属有效后,即提供该第一指令至该第一执行单元。
46.如权利要求44所述的于一微处理器中进行分散式加载指令分配的方法,其特征在于,其中还包含:
于提供该第一指令但不包含该操作数至该第一执行单元的同时,提供可唯一独特识别出该操作数的一标签;以及
由该第一执行单元侦测该标签与来自快取存储器的一相关于该操作数的标签是否相同,接着该第一执行单元自快取存储器获得该操作数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/776,751 | 2004-02-11 | ||
US10/776,751 US7191320B2 (en) | 2003-02-11 | 2004-02-11 | Apparatus and method for performing a detached load operation in a pipeline microprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1664776A CN1664776A (zh) | 2005-09-07 |
CN1331044C true CN1331044C (zh) | 2007-08-08 |
Family
ID=34750447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100062723A Active CN1331044C (zh) | 2004-02-11 | 2005-01-31 | 于一微处理器中处理一分离式载入作业的装置与方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7191320B2 (zh) |
EP (1) | EP1569090B1 (zh) |
CN (1) | CN1331044C (zh) |
DE (1) | DE602004021167D1 (zh) |
TW (1) | TW200527297A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI482085B (zh) * | 2011-02-03 | 2015-04-21 | Intel Corp | 用於柵格化之串流壓縮的方法及設備、和非暫態性電腦可讀取媒體 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070266160A1 (en) * | 2006-05-09 | 2007-11-15 | Johnson Chris D | Automatic Application Server Fail Fast and Recover on Resource Error |
US8578387B1 (en) * | 2007-07-31 | 2013-11-05 | Nvidia Corporation | Dynamic load balancing of instructions for execution by heterogeneous processing engines |
US9304775B1 (en) | 2007-11-05 | 2016-04-05 | Nvidia Corporation | Dispatching of instructions for execution by heterogeneous processing engines |
US8074060B2 (en) * | 2008-11-25 | 2011-12-06 | Via Technologies, Inc. | Out-of-order execution microprocessor that selectively initiates instruction retirement early |
US8266409B2 (en) | 2009-03-03 | 2012-09-11 | Qualcomm Incorporated | Configurable cache and method to configure same |
US9513918B2 (en) * | 2011-12-22 | 2016-12-06 | Intel Corporation | Apparatus and method for performing permute operations |
US9384002B2 (en) * | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
US10001993B2 (en) * | 2013-08-08 | 2018-06-19 | Linear Algebra Technologies Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
US10754759B1 (en) * | 2018-02-05 | 2020-08-25 | Xilinx, Inc. | Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit |
US11093282B2 (en) * | 2019-04-15 | 2021-08-17 | International Business Machines Corporation | Register file write using pointers |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1224192A (zh) * | 1998-01-20 | 1999-07-28 | 国际商业机器公司 | 带同步流水线的微处理器的改进 |
US6260189B1 (en) * | 1998-09-14 | 2001-07-10 | Lucent Technologies Inc. | Compiler-controlled dynamic instruction dispatch in pipelined processors |
US6349381B1 (en) * | 1996-06-11 | 2002-02-19 | Sun Microsystems, Inc. | Pipelined instruction dispatch unit in a superscalar processor |
WO2002037269A1 (en) * | 2000-11-03 | 2002-05-10 | Clearwater Networks, Inc. | Fetch and dispatch decoupling mechanism for multistreaming processors |
CN1409210A (zh) * | 2001-09-20 | 2003-04-09 | 松下电器产业株式会社 | 处理器、编译装置与编译方法、存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06222990A (ja) * | 1992-10-16 | 1994-08-12 | Fujitsu Ltd | データ処理装置 |
US5588126A (en) * | 1993-12-30 | 1996-12-24 | Intel Corporation | Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system |
US5724536A (en) | 1994-01-04 | 1998-03-03 | Intel Corporation | Method and apparatus for blocking execution of and storing load operations during their execution |
US5671444A (en) * | 1994-02-28 | 1997-09-23 | Intel Corporaiton | Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers |
EP0676690B1 (en) * | 1994-03-09 | 2003-05-14 | Sun Microsystems, Inc. | Delayed write of store instruction in processor device |
US5649225A (en) * | 1994-06-01 | 1997-07-15 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US5751983A (en) * | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
US5737636A (en) * | 1996-01-18 | 1998-04-07 | International Business Machines Corporation | Method and system for detecting bypass errors in a load/store unit of a superscalar processor |
US6035394A (en) * | 1998-02-17 | 2000-03-07 | International Business Machines Corporation | System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel |
US6374344B1 (en) * | 1998-11-25 | 2002-04-16 | Compaq Information Technologies Group L.P. (Citg) | Methods and apparatus for processing load instructions in the presence of RAM array and data bus conflicts |
US6438704B1 (en) * | 1999-03-25 | 2002-08-20 | International Business Machines Corporation | System and method for scheduling use of system resources among a plurality of limited users |
US6968444B1 (en) * | 2002-11-04 | 2005-11-22 | Advanced Micro Devices, Inc. | Microprocessor employing a fixed position dispatch unit |
-
2004
- 2004-02-11 US US10/776,751 patent/US7191320B2/en active Active
- 2004-09-14 DE DE602004021167T patent/DE602004021167D1/de active Active
- 2004-09-14 EP EP04255566A patent/EP1569090B1/en active Active
-
2005
- 2005-01-28 TW TW094102818A patent/TW200527297A/zh unknown
- 2005-01-31 CN CNB2005100062723A patent/CN1331044C/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6349381B1 (en) * | 1996-06-11 | 2002-02-19 | Sun Microsystems, Inc. | Pipelined instruction dispatch unit in a superscalar processor |
CN1224192A (zh) * | 1998-01-20 | 1999-07-28 | 国际商业机器公司 | 带同步流水线的微处理器的改进 |
US6260189B1 (en) * | 1998-09-14 | 2001-07-10 | Lucent Technologies Inc. | Compiler-controlled dynamic instruction dispatch in pipelined processors |
WO2002037269A1 (en) * | 2000-11-03 | 2002-05-10 | Clearwater Networks, Inc. | Fetch and dispatch decoupling mechanism for multistreaming processors |
CN1409210A (zh) * | 2001-09-20 | 2003-04-09 | 松下电器产业株式会社 | 处理器、编译装置与编译方法、存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI482085B (zh) * | 2011-02-03 | 2015-04-21 | Intel Corp | 用於柵格化之串流壓縮的方法及設備、和非暫態性電腦可讀取媒體 |
Also Published As
Publication number | Publication date |
---|---|
EP1569090A2 (en) | 2005-08-31 |
EP1569090B1 (en) | 2009-05-20 |
CN1664776A (zh) | 2005-09-07 |
EP1569090A3 (en) | 2007-11-14 |
DE602004021167D1 (de) | 2009-07-02 |
TWI292557B (zh) | 2008-01-11 |
US7191320B2 (en) | 2007-03-13 |
US20040172521A1 (en) | 2004-09-02 |
TW200527297A (en) | 2005-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1331044C (zh) | 于一微处理器中处理一分离式载入作业的装置与方法 | |
US4916652A (en) | Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures | |
CN101655781B (zh) | 微处理器、用以处理微处理器的储存宏指令的方法 | |
CN101542430B (zh) | 用于处理器的加载/存储单元及其应用 | |
CN101558388B (zh) | 数据高速缓存虚拟提示路线预测及其应用 | |
CN100495325C (zh) | 用于按需临时寄存器重命名的方法和系统 | |
JP3720370B2 (ja) | 自己修飾コード処理装置 | |
US9569214B2 (en) | Execution pipeline data forwarding | |
US6463524B1 (en) | Superscalar processor and method for incrementally issuing store instructions | |
JPH11512855A (ja) | ロード/ストアオペレーションのout−of−order実行の制御 | |
JP2002149401A (ja) | マイクロプロセッサ内の命令処理法方、マイクロプロセッサ及び情報処理システム | |
CN101324840A (zh) | 用于增强处理单元中的独立加载的执行的方法和系统 | |
US8219784B2 (en) | Assigning and pre-decoding group ID and tag ID prior to dispatching instructions in out-of-order processor | |
CN101802779A (zh) | 具有可重新组构的浮点单元的处理器 | |
EP0933697A2 (en) | A method and system for handling multiple store instruction completions in a processing system | |
US5751946A (en) | Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor | |
WO2008100551A1 (en) | Distributed dispatch with concurrent, out-of-order dispatch | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor | |
JP2001142699A (ja) | パイプラインプロセッサにおける命令データの転送メカニズム | |
US20140129805A1 (en) | Execution pipeline power reduction | |
US20020056034A1 (en) | Mechanism and method for pipeline control in a processor | |
US6134645A (en) | Instruction completion logic distributed among execution units for improving completion efficiency | |
CN108958798B (zh) | 指令翻译电路、处理器电路及其执行方法 | |
US20080077778A1 (en) | Method and Apparatus for Register Renaming in a Microprocessor | |
US5765017A (en) | Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers |
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 |