发明名称 自堆叠快取记忆体进行快速推测性弹出作业的微处理器及装置
摘要 本发明系揭露一种微处理器的堆叠快取记忆体及进行推测性快速弹出(fast speculative pop instruction)作业的装置。此堆叠快取记忆体以一种后入先出(last-in-first-out)的方式储存压入指令相关的复数个快取单位(cache line)的资料。最新的非弹出性(non-popped)压入资料储存在堆叠快取顶层(top entry)的快取单位内,一用以指定该压入资料位置的偏移量(offset)被维持着。当遭遇一使堆叠指标暂存器(stack pointer register)更新的指令时,此一偏移量亦被更新。当一弹出指令要求资料,在确定弹出指令的来源位址是否与所提供资料的位址相匹配之前,堆叠快取就推测性地自顶层提供由该偏移量所定的资料给弹出指令。如果来源位址与所提供资料的位址随后被判定为不匹配,则进行一异常作业,以提供正确资料。
申请公布号 TWI275938 申请公布日期 2007.03.11
申请号 TW093116903 申请日期 2004.06.11
申请人 智权第一公司 发明人 劳德利 虎克
分类号 G06F12/08(2006.01) 主分类号 G06F12/08(2006.01)
代理机构 代理人 陈瑞田 台北市信义区忠孝东路5段410号4楼
主权项 1.一种快取记忆体(cache menory),其包括: 一后入先出(last-in-first-out)记忆体,该后入先出记 忆体用于快取压入(push)指令之目的位置相关的快 取单位(cache line)的资料,该后入先出记忆体并具一 顶层(top entry),用以储存最新的压入(push)指令之目 的位址相关的一快取单位; 一输入单元,连接该后入先出记忆体,该输入单元 用于指示:一自该快取记忆体要求资料的指令是一 指定该资料来源位址的弹出(pop)指令;及 逻辑单元,连接该输入单元,该逻辑单元用于回应 该输入单元,并在决定该来源位址与储存在该顶层 之快取单位的位址是否匹配之前,控制该后入先出 记忆体推测性地自该顶层提供该资料至该弹出指 令。 2.如申请专利范围第1项所述之快取记忆体,其更包 含: 一比较器,连接该逻辑单元,在该逻辑单元控制该 后入先出记忆体推测性地提供该资料至该弹出指 令之后,该比较器用于比较该来源位址与储存在该 顶层之快取单位的位址。 3.如申请专利范围第2项所述之快取记忆体,其更包 含: 一输出单元,连接该逻辑单元,如果该比较器指示: 该弹出指令的该来源位址与储存在该顶层之该快 取单位的位址不匹配,该输出单元用于指示:该后 入先出记忆体不正确地推测性提供该资料至该弹 出指令。 4.如申请专利范围第3项所述之快取记忆体,其中该 输出单元用于指示一异常情况。 5.如申请专利范围第1项所述之快取记忆体,其中该 弹出指令包含一X86的POP指令。 6.如申请专利范围第1项所述之快取记忆体,其中该 弹出指令包含一X86的RET指令。 7.如申请专利范围第1项所述之快取记忆体,其中该 弹出指令包含一X86的LEAVE指令。 8.如申请专利范围第1项所述之快取记忆体,其中该 弹出指令包含一指令,其用于自一系统记忆体之堆 叠弹出该资料,而该系统记忆体连接一包含此快取 记忆体之微处理器。 9.如申请专利范围第8项所述之快取记忆体,其中该 系统记忆体弹出的资料包含一返回位址。 10.如申请专利范围第8项所述之快取记忆体,其中 该快取单位包含复数个字元的资料,该些字元数目 等于能在快取记忆体与该系统记忆体之间传递的 最小字元数目。 11.如申请专利范围第8项所述之快取记忆体,其中 该最新压入指令的该目的位址包含一在该堆叠的 位址,而该堆叠系在该系统记忆体上。 12.如申请专利范围第8项所述之快取记忆体,其中 该弹出指令的该来源位址包含一在该堆叠的位址, 而该堆叠系在该系统记忆体上。 13.如申请专利范围第1项所述之快取记忆体,其中 该快取单位包含一第一字元组的资料,其中提供给 该弹出指令的该资料包含一第二字元组的资料,且 其中该第一字元组的字元数至少二倍于该第二字 元组的字元数。 14.如申请专利范围第1项所述之快取记忆体,其中 快取自该快取记忆体的该快取单位的资料与一包 含该快取记忆体之系统的其他记忆体保持一致性 。 15.如申请专利范围第1项所述之快取记忆体,其更 包含: 一偏移量,供应该逻辑单元,该偏移量用于指定位 于该顶层之快取单位之资料的位置,而该资料系由 最新的压入指令所定。 16.如申请专利范围第15项所述之快取记忆体,其中 该逻辑单元控制该后入先出记忆体,推测性地自该 顶层之快取单位之资料的位址,提供该资料,而该 位址系由该偏移量所定。 17.如申请专利范围第16项所述之快取记忆体,其中, 如果为回应该弹出指令,而更新该偏移量,致使该 偏移量绕越该顶层之快取单位,该逻辑单元将令该 后入先出记忆体移出其内的该顶层。 18.如申请专利范围第15项所述之快取记忆体,其中, 如果在存入该最新的压入指令所定的该资料之前, 更新该偏移量,致使该偏移量绕穿该顶层之快取单 位,该逻辑单元将令该后入先出记忆体下移,因而 产生一新的顶层,其中该逻辑单元将由该最新的压 入指令所定的该资料存入该新的顶层中由该偏移 量所定之位址。 19.如申请专利范围第15项所述之快取记忆体,其更 包含: 一算术单元,连接该逻辑单元,该算术单元用于更 新该偏移量。 20.如申请专利范围第19项所述之快取记忆体,其中 该算术单元更新该偏移量包含将一由指令所定的 运算元加于该偏移量,其中该指令指定该运算元加 至一微处理器内的堆叠指标暂存器,而该微处理器 包含该快取记忆体。 21.如申请专利范围第20项所述之快取记忆体,其中, 如果该偏移量的更新致使该偏移量绕越该顶层之 快取单位,该逻辑单元将令该后入先出记忆体移出 其内的该顶层。 22.如申请专利范围第1项所述之快取记忆体,其中 该最新的压入指令系指相对于储存于该后入先出 记忆体的复数该快取单位的资料为最新。 23.如申请专利范围第1项所述之快取记忆体,其中 该最新的压入指令系指相对于储存于该后入先出 记忆体且尚未被弹出的资料为最新。 24.如申请专利范围第1项所述之快取记忆体,其中 该最新压入指令的该目的位址所相关的该快取单 位包含一尚未自系统记忆体堆叠弹出的最新压入 指令之资料。 25.一种快取记忆体(cache memory),其包括: 一输入单元,该输入单元用于指定自此快取记忆体 读取资料的指令之型态,而该指令指定该资料的来 源位址; 一后入先出(last-in-first-out)记忆体,连接该输入单 元,该后入先出记忆体具有复数个层(entries),每一 个层储存与一压入(push)指令相关的一个快取单位 的资料,其中并具有一顶层(top entry)储存与一最新 压入指令相关的一个快取单位(cache line)的资料,其 中为回应该输入单元指示:该指令为一弹出(pop)指 令,此快取记忆体自该后入先出记忆体的该顶层提 供资料给该弹出指令;及 一比较器,接收该来源位址,该比较器用于产生:该 来源位址与储存在该后入先出记忆体的该顶层之 快取单位的位址是否匹配的指示,以决定提供给该 弹出指令的该资料是否正确。 26.如申请专利范围第25项所述之快取记忆体,其中 在一第一时脉周期之中,此快取记忆体自该后入先 出记忆体的该顶层提供该来源资料给该弹出指令, 其中在一第二时脉周期之中,该比较器产生该指示 。 27.如申请专利范围第26项所述之快取记忆体,其中 该第二时脉周期紧接在该第一时脉周期之后。 28.如申请专利范围第26项所述之快取记忆体,其中 该第二时脉周期并不比该第一时脉周期快。 29.如申请专利范围第25项所述之快取记忆体,其中 该最新的压入指令系指相对于储存于该后入先出 记忆体的复数该快取单位的资料为最新。 30.如申请专利范围第25项所述之快取记忆体,其更 包含: 一输出单元,连接该比较器,如果该来源位址与储 存在该后入先出记忆体的该顶层之该快取单位的 该位址不匹配,该输出单元用于指示:提供至该弹 出指令的该资料为错误资料。 31.如申请专利范围第25项所述之快取记忆体,其更 包含: 一偏移量,连接该后入先出记忆体,该偏移量用于 指定位于该顶层之该快取单位的该资料的位置,而 该资料系由此快取记忆体提供给该弹出指令。 32.如申请专利范围第31项所述之快取记忆体,其更 包含: 一多工器,连接该偏移量,基于该偏移量,该多工器 用于自该快取单位内选取该资料。 33.如申请专利范围第25项所述之快取记忆体,其中 该来源位址与储存于该顶层的该快取单位的该位 址均包含实体记忆体位址。 34.如申请专利范围第25项所述之快取记忆体,其中 该后入先出记忆体亦存有在其内进行快取的复数 个资料的快取单位的位址,其中此快取记忆体更包 含: 复数个比较器,接收该来源位址,该复数个比较器 用于比较该来源位址与在该后入先出记忆体内进 行快取的复数个资料的该快取单位的该位址,其中 该来源位址指定一载入指令指定的载入资料之载 入位址。 35.如申请专利范围第34项所述之快取记忆体,其更 包含: 一输出单元,连接该复数个比较器,如果该复数个 比较器指示:该载入指令的来源位址与在该后入先 出记忆体进行快取的复数个资料的该快取单位的 复数个该位址之一相匹配,该输出单元用于指示: 该载入位址命中此快取记忆体。 36.如申请专利范围第25项所述之快取记忆体,其为 一电脑程式产品,此一电脑程式产品包含一电脑可 用之媒介,该媒介具有电脑可读程式码,其中该电 脑程式产品系与一计算装置一起使用。 37.如申请专利范围第25项所述之快取记忆体,其中 此快取记忆体系由一包含于传输媒介的电脑的资 料讯号所提供,且该资料讯号包含电脑可读的程式 码。 38.一种快取记忆体(cache memory),其包括: 复数个第一类储存元件,规划为一随机存取快取记 忆体(random access cache),该复数个第一类储存元件用 于快取非压入指令(non-push)所定的资料; 复数个第二类储存元件,规划为一堆叠快取记忆体 (stack cache),该复数个第二类储存元件用于快取压 入(push)指令的目的位址所相关的资料的快取单位( cache line),该堆叠快取记忆体具有一顶层(top entry) 用于储存最新压入指令的目的位址所相关的一快 取单位; 一输入单元,该输入单元用于指示:一自快取记忆 体要求资料的指令是一指定该资料来源位址的弹 出(pop)指令;及 逻辑单元,连接该输入单元及该复数个第一和第二 类储存元件,该逻辑单元用于回应该输入单元,并 在决定:该来源位址与储存在该顶层之该快取单位 的位址是否匹配之前,控制该堆叠快取记忆体推测 性地自该顶层提供该资料至该弹出指令。 39.一种快取堆叠记忆体(caching stack memory)资料的方 法,其包括: 将一压入(push)指令所定的资料及在一堆叠记忆体( stack memory)内此一资料的目的位址存入快取记忆体 (cache memory); 在该存入之后,解码一弹出(pop)指令; 回应该解码,为此弹出指令产生一资料的来源位址 ; 在该产生来源位址之后,比较来源位址与储存于此 快取记忆体的目的位址;及 针对该解码,不考虑该比较,提供储存于此快取记 忆体的资料。 40.如申请专利范围第39项所述之快取堆叠记忆体 资料的方法,其更包含: 回应该比较,决定:来源位址并不存在快取记忆体; 及 回应该决定,修正该资料提供。 41.如申请专利范围第40项所述之快取堆叠记忆体 资料的方法,其中该修正包含: 自此快取记忆体之外的一堆叠记忆体提取来源位 址所定的正确资料。 42.如申请专利范围第41项所述之快取堆叠记忆体 资料的方法,其中该修正更包含: 在该提取之前,产生一微处理机之异常状况( exception)。 43.如申请专利范围第39项所述之快取堆叠记忆体 资料的方法,其中快取记忆体设计成具有一后入层 (last-in entry)的后入先出记忆体,其中该资料提供包 含: 提供储存于快取记忆体的后入层的资料。 44.如申请专利范围第43项所述之快取堆叠记忆体 资料的方法,其中后入层被规划为储存一包含复数 个资料字(data words)的快取单位。 45.如申请专利范围第44项所述之快取堆叠记忆体 资料的方法,其更包含: 如果一推测性的提供资料包含提供储存于该后入 层上该快取单位之该复数个资料字的最后一个时, 在该提供资料之后,弹出该后入先出记忆体。 46.如申请专利范围第44项所述之快取堆叠记忆体 资料的方法,其更包含: 如果目的位址在快取记忆体失误,在该储存之前, 压下此后入先出记忆体。 47.如申请专利范围第39项所述之快取堆叠记忆体 资料的方法,其中该提供资料至少与该比较一样快 。 48.一种自快取记忆体(cache memory)推测性的提供资 料给弹出(POP)指令的方法,其包括: 储存压入(push)指令的目的位址所定的第一资料进 入后入先出(last-in-first-out)记忆体的顶层(top entry); 在该储存第一资料之后,自弹出指令收到对由来源 位址所定的第二资料的要求; 回应该收到要求,不理会来源位址,自后入先出记 忆体的顶层提供第一资料; 比较来源位址与目的位址;及 在该提供第一资料之后,回应该比较,决定第一资 料是否即是第二资料。 49.如申请专利范围第48项所述之自快取记忆体推 测性的提供资料给弹出指令的方法,其更包含: 如果来源位址与目的位址不匹配,产生一输出,其 指示:第一资料不是第二资料。 50.如申请专利范围第49项所述之自快取记忆体推 测性的提供资料给弹出指令的方法,其更包含: 在该产生输出之后,提供第二资料给弹出指令。 51.如申请专利范围第50项所述之自快取记忆体推 测性的提供资料给弹出指令的方法,其更包含: 执行一异常常式(exception routine)以进行该提供第二 资料。 52.如申请专利范围第48项所述之自快取记忆体推 测性的提供资料给弹出指令的方法,其更包含: 在不快于该提供第一资料的情况,进行虚拟至真实 的分页位址翻译(page address translation)以产生来源 位址。 53.一种用以记录电脑程式码之电脑可读取记录媒 体,该电脑程式码用以处理堆叠快取记忆体及进行 推测性快速弹出(fast speculative pop instruction)作业, 该电脑程式码其包括: 电脑可读程式码(computer-readable program code),用于提 供一快取记忆体(cache memory),该程式码包含: 第一程式码,用于提供一输入,以指示:一种自快取 记忆体读取资料的指令类型,该指令指定该资料的 来源位址; 第二程式码,用于提供一后入先出(last-in-first-out) 记忆体,该后入先出记忆体连接该输入,该后入先 出记忆体具有复数个层(entries),每一个层储存一快 取单位(cache line)的资料,每一资料与一压入(push)指 令相关,该复数个层具有一顶层(top entry),用以储存 一快取单位的资料,该资料与一最新压入指令相关 ,其中为回应该输出指示;该指令为一弹出(pop)指令 ,此快取记忆体自该后入先出记忆体的该顶层提供 资料给该弹出指令;及 第三程式码,用于提供一比较器以接受该来源位址 ,用以产生该来源位址与该后入先出记忆体的该顶 层之快取单位的位址是否匹配的指示,以决定:提 供给该弹出指令的该资料是否为正确资料。 图式简单说明: 第一图为本发明导管结构化微处理器的方块图 第二图为本发明第一图中堆叠快取的方块图 第三图为本发明第一图中堆叠快取附加元件的方 块图 第四图为本发明第一图中第一级资料快取之多工 逻辑的方块图 第五图为本发明自第一图中堆叠快取进行快速弹 出作业的流程图 第六图为本发明向第一图中堆叠快取进行压入作 业的流程图 第七图为本发明第一图中微处理器回应加入堆叠 指标指令的流程图 第八图为本发明自第一图中堆叠快取进行载入作 业的流程图 第九图为本发明向第一图中第一级资料快取进行 存入作业的流程图 第十图为本发明自第一图堆叠快取进行第五图快 速弹出作业的时序图 第十一图为本发明第八图中自堆叠快取进行推测 性载入作业的时序图 第十二图为本发明第八图中自堆叠快取进行常规( 即非推测性)载入作业的时序图 第十三图为本发明第八图中自非堆叠快取进行载 入作业的时序图 第十四图为本发明导管结构化微处理器的方块图 第十五图为本发明第十四图中第一级资料快取的 方块图 第十六图为本发明自第十五图中资料快取进行快 速弹出作业的流程图 第十七图为本发明向第十五图中资料快取进行压 入作业的流程图 第十八图为本发明第十四图中微处理器回应加入 堆叠指标指令的流程图 第十九图为本发明第十六图中自第十五图中资料 快取进行快速弹出作业的时序图
地址 美国