会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑零配件 / 微处理器 / 微处理器以及预取数据至微处理器的方法

微处理器以及预取数据至微处理器的方法

阅读:1053发布:2020-07-10

IPRDB可以提供微处理器以及预取数据至微处理器的方法专利检索,专利查询,专利分析的服务。并且本发明提供一种微处理器,包括一指令解码器用以解码一指令集中的多个指令,其中指令集包括一重复预取间接指令。重复预取间接指令包括多个地址操作数以及一计数值,微处理器使用地址操作数来计算一预取表中的一第一项目的一地址,其中预取表具有多个项目,并且预取表中的各个项目包括一预取地址。计数值用以指定欲被预取的多条快取线的数量,其中快取线的每一个的一存储器地址是由项目中的一个中的预取地址所指定。,下面是微处理器以及预取数据至微处理器的方法专利的具体信息内容。

1.一种微处理器,包括:

一指令解码器,用以解码一指令集中的多个指令,其中上述指令集包括一重复预取间接指令;以及上述重复预取间接指令,包括:

多个地址操作数,上述微处理器使用上述地址操作数来计算一预取表中的一第一项目的一地址,其中上述预取表具有多个项目,并且上述预取表中的各个项目包括一预取地址;

一计数值,用以指定欲被预取的多个快取线的数量,其中上述快取线的每一个的存储器地址是由上述项目中的一个中的上述预取地址所指定;以及一延迟值,其中上述微处理器在执行上述重复预取间接指令时是以一延迟量来延迟各个预取上述快取线中的一个的迭代,其中上述延迟量是等于上述延迟值中所指定的一指令数量。

2.如权利要求1所述的微处理器,其中上述预取表中的上述项目是位于多个非连续存储器位置。

3.如权利要求1所述的微处理器,其中上述重复预取间接指令还包括:一偏移量,用以指定上述预取表中的各个项目之间的一距离。

4.如权利要求3所述的微处理器,其中上述偏移量是通过位于上述重复预取间接指令之前的一指令加载至一通用暂存器。

5.一种预取数据至微处理器的方法,用以预取数据至一微处理器,预取数据至微处理器的方法包括:解码一重复预取间接指令;以及

响应于解码上述重复预取间接指令且按照上述重复预取间接指令的指示,预取多个快取线至上述微处理器;

其中上述重复预取间接指令包括:

多个地址操作数,用以计算具有多个项目的一预取表的一第一项目的一地址,其中上述预取表具有多个项目,并且上述预取表中的各个项目包括一预取地址;

一计数值,用以指定欲被预取的上述快取线的数量至上述微处理器内,其中上述快取线的每一个的存储器地址是由上述预取表中的上述项目中的一个中的上述预取地址所指定;以及一延迟值,其中上述预取是以一延迟量来延迟各个预取上述快取线中的一个的迭代,其中上述延迟量是等于上述延迟值中所指定的一指令数量。

6.如权利要求5所述的预取数据至微处理器的方法,其中上述重复预取间接指令还包括:一运算码,上述运算码与一奔腾Ⅲ预取指令运算码不同。

7.如权利要求6所述的预取数据至微处理器的方法,其中上述重复预取间接指令还包括:一奔腾Ⅲ重复字串指令前置码,上述奔腾Ⅲ重复字串指令前置码是位于上述运算码之前。

8.如权利要求5所述的预取数据至微处理器的方法,其中上述重复预取间接指令还包括:一奔腾Ⅲ预取指令运算码;

一奔腾Ⅲ重复字串指令前置码;以及

一第二前置码,其中上述奔腾Ⅲ重复字串指令前置码与第二前置码是位于上述奔腾Ⅲ预取指令运算码之前。

9.如权利要求5所述的预取数据至微处理器的方法,其中上述重复预取间接指令还包括:一偏移量,用以指定上述预取表中的各个项目之间的一距离。

10.如权利要求5所述的预取数据至微处理器的方法,其中上述延迟值是通过位于上述重复预取间接指令之前的一指令加载至一通用暂存器。

11.一种微处理器,上述微处理器位于具有一系统存储器的一系统中,上述微处理器包括:一指令解码器,用以解码一预取指令,上述预取指令指定一计数值与用以指向一表格的一地址,其中上述计数值表示欲从上述系统存储器中预取的多个快取线的数量,并且上述表格用以储存上述快取线的多个存储器地址;

一计数暂存器,用以储存一剩余计数值,上述剩余计数值表示欲被预取的上述快取线的一剩余数量,其中上述计数暂存器一开始即具有被指定在上述预取指令中的上述计数值;

一控制逻辑电路,耦接至上述指令解码器与上述计数暂存器,上述控制逻辑电路使用上述计数暂存器与从上述表格中所提取的上述存储器地址,用以控制上述微处理器将上述表格中的上述快取线的上述存储器地址提取至上述微处理器,并且控制上述微处理器将上述系统存储器中的上述快取线预取至上述微处理器的一快取存储器;以及一地址暂存器,用以储存一项目地址,其中上述项目地址指向正被预取的上述快取线中的一个的上述存储器地址;

其中上述预取指令更指定一延迟值,其中上述控制逻辑电路以一延迟量来延迟预取上述快取线中的每一个的步骤,其中上述延迟量是等于上述延迟值中所指定的一指令数量。

12.如权利要求11所述的微处理器,其中上述控制逻辑电路一开始即将上述预取指令所指定的上述地址加载至上述地址暂存器。

13.如权利要求11所述的微处理器,其中上述控制逻辑电路根据预取上述快取线中的每一个来更新位于上述地址暂存器中的上述项目地址。

14.如权利要求13所述的微处理器,还包括:

一加法器,耦接至上述地址暂存器,用以根据预取上述快取线中的每一个来增加一加数至地址暂存器中的上述项目地址以便产生一总和,其中上述控制逻辑电路使用上述总和来更新上述地址暂存器。

15.如权利要求14所述的微处理器,其中上述加数为一存储器地址的大小。

说明书全文

微处理器以及预取数据至微处理器的方法

[0001] 本案是申请日为2010年7月30日、申请号为201010243785.7、发明名称为“微处理器以及预取数据至微处理器的方法”的发明专利申请的分案申请。

技术领域

[0002] 本发明是关于微处理器,特别是关于微处理器中的预先提取(prefetching)。

背景技术

[0003] 美国专利第6,832,296号揭露了适用于x86架构的预取指令(prefetch instruction),上述预取指令利用重复前置码(REP prefix)将存储器中的多条序列快取线(cache lines)预先提取至处理器的高速缓存中。换言之,处理器的通用暂存器中具有多条由计数值(count)所指定的序列快取线。然而,程序设计者知道会有想要预先提取存储器中的非连续快取线的情况,其中非连续快取线代表这些快取线的位置是任意的。若一个程序想要预先提取多条非连续快取线,则此程序必须包含多个上述美国专利所提及的预取(REP PREFETCH)指令。然而,这会增加程序码长度(code size)并使得处理器需要执行多个指令而不是单一指令。因此,我们需要一种改良的预取指令用以解决这些问题。

发明内容

[0004] 本发明提供一种微处理器,该微处理器包括一指令解码器。指令解码器用以解码一指令集中的多个指令,其中指令集包括一重复预取间接指令。重复预取间接指令包括多个地址操作数以及一计数值。微处理器使用地址操作数来计算一预取表中的一第一项目的一地址,其中预取表具有多个项目,并且预取表中的各个项目包括一预取地址。计数值用以指定欲被预取的多条快取线的数量,其中快取线的每一者的存储器地址是由项目中的一者中的预取地址所指定。
[0005] 本发明提供另一种微处理器,该微处理器位于具有一系统存储器的一系统中。微处理器包括一指令解码器、一计数暂存器以及一控制逻辑电路。指令解码器用以解码一预取指令,预取指令指定一计数值与用以指向一表格的一地址,其中计数值表示欲从系统存储器中预取的多条快取线的数量,并且表格用以储存快取线的多个存储器地址。计数暂存器用以储存一剩余计数值,剩余计数值表示欲被预取的快取线的一剩余数量,其中计数暂存器一开始即具有被指定在预取指令中的计数值。控制逻辑电路耦接至指令解码器与计数暂存器,控制逻辑电路使用计数暂存器与从表格中所提取的存储器地址,用以控制微处理器将表格中的快取线的存储器地址提取至微处理器,并且控制微处理器将系统存储器中的快取线预取至微处理器的一高速缓存。
[0006] 本发明提供另一种预取数据至微处理器的方法,该微处理器位于具有一系统存储器的一系统中。上述方法包括解码一预取指令,预取指令指定一计数值与用以指向一表格的一地址,其中计数值表示欲从系统存储器中预取的多条快取线的数量,并且表格用以储存快取线的多个存储器地址。上述方法还包括储存一剩余计数值,其中剩余计数值表示欲被预取的快取线的一剩余数量,并且剩余计数值的一初始值为被指定在预取指令中的计数值。上述方法还包括使用剩余计数值与表格中的存储器地址,用以将系统存储器中的快取线预取至微处理器的一高速缓存。
[0007] 为让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。

附图说明

[0008] 图1为本发明实施例的微处理器的方块图;
[0009] 图2为已知技术的奔腾Ⅲ预取指令的方块图;
[0010] 图3为已知技术的奔腾Ⅲ字串指令的方块图;
[0011] 图4为已知技术的重复预取指令的方块图;
[0012] 图5为本发明实施例的重复预取间接指令的方块图;
[0013] 图6为本发明实施例的预取表的方块图;
[0014] 图7为图1中的微处理器执行图5中的重复预取间接指令的操作流程图;
[0015] 图8为本发明另一实施例的微处理器的方块图;
[0016] 图9为本发明另一实施例的重复预取间接指令的方块图;
[0017] 图10为本发明另一实施例的预取表的方块图;
[0018] 图11为图8中的微处理器执行图9中的重复预取间接指令的操作流程图。
[0019] [主要元件标号说明]
[0020] 100~微处理器;               102~指令解码器;
[0021] 104~暂存器文件;             106~延伸计数暂存器;
[0022] 108~初始预取表项目地址;     114~地址产生器;
[0023] 116、118、146~多工器;         122~预取表项目地址暂存器;
[0024] 124~重复预取计数暂存器;     126~加法器;
[0025] 128~递减器;                 144~控制逻辑电路;
[0026] 154~高速缓存;               166~响应缓冲器;
[0027] 172~总线接口单元;           186~第一预取表项目地址;
[0028] 188~重复预取计数值;         194~预取地址;
[0029] 197~第二预取表项目地址;     400~重复预取指令;
[0030] 404、504~运算码字段;         406~ModR/M字节;
[0031] 500、900~重复预取间接指令;   508~地址操作数;
[0032] 600~预取表;                 602~预取地址;
[0033] 604~快取线;                 896~延伸来源索引暂存器;
[0034] 899~偏移暂存器;             902~偏移量;
[0035] 1004~其它数据。

具体实施方式

[0036] 为了解决上述问题,本发明提供一新的预取指令使得程序设计者能够在存储器中建立一预取表(如图6的预取表600与图10的预取表1000),其中预取表600中的各个项目(entry)用以指定欲被预先提取的快取线的预取地址。此外,本发明所提供的新的预取指令可使程序设计者能够指定欲被处理器所预先提取的多条非连续快取线。在本发明中,是以重复预取间接(REP PREFETCH INDIRECT)指令500(参考图5)来表示上述新的预取指令。
[0037] 图1为本发明实施例的微处理器100的方块图,此微处理器100能够执行一重复预取间接指令。由于微处理器100在许多方面与美国专利第6,832,296号的图1中的微处理器100(之后简称“已知微处理器”)类似,因此本文是以引用方式将“已知微处理器”并入本文中。但值得注意的是,本发明所揭露的微处理器100具有额外特征—能够执行重复预取间接指令。以下列出本发明的微处理器100与已知微处理器的差别:
[0038] 第一,微处理器100以预取表项目地址(Prefetch Table Entry Address;PTEA)暂存器122取代已知微处理器中的重复预取地址(Repeat Prefetch Address;RPA)暂存器122,用以储存目前所使用的预取表600的项目的地址。因此,预取表项目地址暂存器122提供一第一预取表项目地址186至多工器(MUX)146,而已知微处理器则提供一预取地址。
[0039] 第二,多工器146被改造用以额外接收来自高速缓存154的预取地址194。
[0040] 第三,多工器116被改造用以额外接收来自高速缓存154的第二预取表项目地址197。
[0041] 第四,加法器126被改造用以将第一预取表项目地址186增加一个存储器地址大小(例如4字节),而不是增加一条快取线大小。
[0042] 图2为已知技术的奔腾Ⅲ预取指令的方块图。
[0043] 图3为已知技术的奔腾Ⅲ字串指令的方块图。
[0044] 图4为已知技术的重复预取指令的方块图。
[0045] 图5为本发明实施例的重复预取间接指令的方块图。重复预取间接指令500在许多方面与图4的已知微处理器的重复预取指令400类似。以下将列出本发明的重复预取间接指令500与重复预取指令400的差别之处。重复预取间接指令500的运算码字段504的值不同于重复预取指令400的运算码字段404的值,使得指令解码器102能够区分这两个指令。在另一实施例中,重复预取间接指令500与重复预取指令400共享相同的运算码的值,不过重复预取间接指令500包含一额外的前置码用以与重复预取指令400区别。此外,重复预取间接指令500的地址操作数(address operands)508用来指定初始的预取表600项目的存储器地址,而不是指定初始的预取地址。
[0046] 图6为本发明实施例的预取表的方块图。预取表600包含多个项目,各个项目包含一预取地址602用以指向存储器中的快取线604,换言之,预取地址602为快取线604的存储器地址。如图6所示,预取表600中的预取地址602是彼此相邻。因此,图1中的加法器126将第一预取表项目地址186增加一个存储器地址大小,用以指向预取表600中的下一个预取地址602。在另一实施例中(参考图8~11),预取表600的预取地址602是非连续(non-sequential)的。
[0047] 请参考图7,图7为图1中的微处理器100执行重复预取间接指令500的操作流程图。流程从步骤702开始。
[0048] 在步骤702中,指令解码器102将重复预取间接指令500解码。流程前进至步骤704。
[0049] 在步骤704中,地址产生器114产生由重复预取间接指令500中的ModR/M字节406与地址操作数508所指定的有效地址(初始预取表项目地址)108。初始预取表项目地址108代表预取表600中的第一个项目的存储器地址。流程前进至步骤706。
[0050] 在步骤706中,控制逻辑电路144将延伸计数(Extended Count;ECX)暂存器106中的计数值(即欲被预先提取的快取线的数量)复制到重复预取计数(Repeat Prefetch Count;RPC)暂存器124中。此外,地址产生器114将初始预取表项目地址108加载至预取表项目地址暂存器122。计数值是通过位于重复预取间接指令500之前的一指令加载至延伸计数暂存器106。流程前进至步骤708。
[0051] 在步骤708中,微处理器100从预取表600中提取由第一预取表项目地址186所指定的预取地址602。值得注意的是,预取地址602可能已经位于高速缓存154中。仔细而言,在本实施例中,当微处理器100从预取表600中提取第一个预取地址602时,与第一预取表项目地址186有关的整条快取线会被提取。因此,在提取初始的预取表600的项目中的初始的预取地址602之后,预取表600中的后几个预取地址602可能会位于高速缓存154中,而此现象会随着预取动作的执行而持续。若预取地址602尚未位于高速缓存154中,则总线接口单元172会将系统存储器中的预取地址602提取至响应缓冲器(response buffer)166,用以依序地将预取地址602引退至高速缓存154中。在另一实施例中,为了避免使用预取地址602来破坏(pollute)高速缓存154,预取地址602并没有被引退至高速缓存154。相反地,响应缓冲器166(或其它中间储存(intermediate storage)位置)将此预取地址602提供至多工器146用以完成步骤712到步骤716的动作,当完成步骤712到步骤716后再将预取地址602丢弃(discard)。流程前进至步骤712。
[0052] 在步骤712中,高速缓存154查找(look up)于步骤708中所提取的预取地址602,其中高速缓存154(或响应缓冲器166或其它中间储存位置)将此预取地址602作为预取地址194用以提供至多工器146。流程前进至判断步骤714。
[0053] 在判断步骤714中,若预取地址194出现于(hits in)高速缓存154,则流程前进至步骤718。若预取地址194未出现于高速缓存154,则流程前进至步骤716。
[0054] 在步骤716中,总线接口单元172将系统存储器中由预取地址194所指定的快取线604预先提取至响应缓冲器166,响应缓冲器166接着将预先提取的快取线604写入至高速缓存154。流程前进至步骤718。
[0055] 在步骤718中,控制逻辑电路144控制递减器(decrementer)128与多工器118用以将重复预取计数暂存器124中的数值递减1。此外,控制逻辑电路144控制加法器126与多工器116用以将预取表项目地址暂存器122中的数值增加一个存储器地址大小。流程前进至判断步骤722。
[0056] 在判断步骤722中,控制逻辑电路144判断重复预取计数值188是否为零。若为零,则流程结束;若不为零,则流程回到步骤708用以完成预取下一条快取线604的动作。
[0057] 虽然图7中并未描述关于本发明的微处理器100的其它实施例,但这些实施例以下所描述的特征,例如在转译查询缓冲器(Translation Lookaside Buffer;TLB)发生遗漏(miss)时停止预取动作,并且在失去仲裁(arbitration)或未到达自由请求缓冲器(free request buffer)的次临界数量时重新执行预取动作。
[0058] 请参考图8,图8为本发明中微处理器100的另一实施例的方块图,此微处理器100能够执行一重复预取间接指令900。图8的微处理器100在许多方面与图1的微处理器100类似。然而,图8的微处理器100用以执行图9中的重复预取间接指令900。重复预取间接指令900包含一偏移量(offsetvalue)902用以指定各个预取表600的项目之间的距离。偏移量
902有助于程序设计者在存储器中建立如图10所示的预取表1000,其中图10中的预取表
1000具有非连续位置的预取地址602,相关细节将在以下做进一步说明。
[0059] 请参考回图8,相较于图1的微处理器100,图8的微处理器100包括一偏移暂存器(offset register)899。偏移暂存器899从暂存器文件(register file)104的延伸来源索引(Extended Source Index;ESI)暂存器896中接收图9的偏移量902,并且将所接收的偏移量902提供至加法器126,使得加法器126将预取表项目地址暂存器122中的数值增加一个偏移量902,以便提供下一个预取表项目地址至预取表项目地址暂存器122。偏移量902被通过位于重复预取间接指令900之前的一指令加载至延伸来源索引暂存器896。
[0060] 请参考图11,图11为图8中的微处理器100执行重复预取间接指令900的操作流程图。图11与图7的操作流程图类似,以下将列出两者之间的差别。
[0061] 步骤1106取代了步骤706,并且在步骤1106中,控制逻辑电路144将延伸计数暂存器106中的计数值(即欲被预先提取的快取线的数量)复制到重复预取计数暂存器124中。此外,地址产生器114将初始预取表项目地址108加载至预取表项目地址暂存器122。控制逻辑电路144将偏移量902加载至偏移暂存器899。
[0062] 步骤1118取代了步骤718,并且在步骤1118中,控制逻辑电路144控制递减器128与多工器118用以将重复预取计数暂存器124中的数值递减1。此外,控制逻辑电路144控制加法器126与多工器116用以将预取表项目地址暂存器122中的数值增加一个偏移量902,而不是增加一个存储器地址大小。
[0063] 请参考图10,图10为本发明中预取表的另一实施例的方块图。假设预取表1000为一具有多个区间(buckets)或数据结构的开放式散列表(open hash table)。各个区间包含两个字段,分别为8字节散列值(对应至图10中的“其它数据1004”)与4字节存储器地址(对应至图10中的“预取地址602”),其中该4字节存储器地址为一散列对象指针(hash object pointer)。
[0064] 散列表:
[0065] 区间[0]:
[0066] 散列值:8字节
[0067] 散列对象指针:4字节
[0068] 区间[1]:
[0069] 散列值:8字节
[0070] 散列对象指针:4字节
[0071] 区间[2]:
[0072] 散列值:8字节
[0073] 散列对象指针:4字节
[0074] 在本实施例中,可利用延伸来源索引暂存器896中的数值8来执行重复预取间接指令900,并且重复预取间接指令900会略过8字节散列值字段用以提取散列对象指针作为预取地址602。现有的程序中普遍具有此类型的数据结构(即使数值大小会变动)。使程序设计者能够指定偏移量902的优点有助于程序设计者或编译器使用现有的数据结构(例如散列表—预取表1000),而不需要另外为重复预取间接指令900建立一预取表。
[0075] 在另一实施例中,程序设计者可在另一个通用暂存器中指定一延迟值(delay value)。若延迟值非为零(non-zero),则微处理器100在执行重复预取间接指令900时会延迟各个预取一快取线604的迭代(iteration),其中延迟量是等于被指定在延迟值中的指令的数量。
[0076] 本发明虽以各种实施例揭露如上,然其仅为范例参考而非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰。举例而言,可使用软件来实现本发明所述的装置与方法的功能、构造、模块化、模拟、描述及/或测试。此目的可通过使用一般程序语言(例如C、C++)、硬件描述语言(包括Verilog或VHDL硬件描述语言等等)、或其它可用的程序来实现。该软件可被设置在任何计算机可用的媒体,例如半导体、磁盘、光盘(例如CD-ROM、DVD-ROM等等)中。本发明实施例中所述的装置与方法可被包括在一半导体智慧财产权核心(semiconductor intellectual property core),例如以硬件描述语言(HDL)实现的微处理器核心中,并被转换为硬件型态的集成电路产品。此外,本发明所描述的装置与方法可通过结合硬件与软件的方式来实现。因此,本发明不应该被本文中的任一实施例所限定,而当视所附的权利要求范围与其等效物所界定者为准。特别是,本发明是实现于一般用途计算机的微处理器装置中。最后,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用