用于生成指令精简方案集的方法、用于根据所生成的集来精简程序的方法,以及能够执行...的制作方法

文档序号:6351048阅读:105来源:国知局
专利名称:用于生成指令精简方案集的方法、用于根据所生成的集来精简程序的方法,以及能够执行 ...的制作方法
技术领域
本发明涉及用于生成指令精简方案集的方法。本发明还涉及用于根据所生成的指令精简方案集来精简程序的方法。本发明还涉及被适当编程以实现这些方法的装置。本发明还涉及包括用于促使装置实现这些方法中的一种或多种方法的程序的记录载体。、本发明还涉及能够执行被如上精简的程序的可编程处理器。
背景技术
US2002042909描述了一种用于生成在处理架构中使用的程序指令序列的编译方法,所述处理架构具有用于执行来自相应指令集的指令的架构资源。公知的编译方法输入包括多个源代码指令语句的源文件,所述源代码指令语句包含至少第一种类的指令语句和第二种类的指令语句。该方法选择至少第一指令集和第二指令集。第二指令集是被设计成仅支持由第一指令集所支持的架构资源的子集的精简指令集。通过使用具有不同大小的这至少两个指令集,编译器能够降低被处理的平均代码长度,因为精简码中需要更少的比特来对操作和寄存器进行编码。在该公知的方法中,编译器检测源代码的类型是时间关键代码还是管理代码。被分类为管理代码的代码由第一精简指令集表示,而时间关键代码由第二指令集表示。通过使用具有不同大小的这至少两个指令集,编译器能够降低被处理的平均代码长度,因为精简码中需要更少的比特来对操作和寄存器进行编码。该公知编译器的缺点在于第一和第二指令集的分配仅在时间关键代码和管理代码能够被辨别的情况下才是可能的。本发明的目的是提供一种能够也在更通用的环境中生成一个或多个指令集的方法。

发明内容
根据本发明的第一方面,提供一种用于生成针对要由可编程处理器处理的指令的子集的各个指令精简方案的方法,其包括以下步骤a)接收代表要在可编程处理器上执行的软件的至少一个输入代码样本,所述输入代码包括用于定义第一指令集的多个指令,b)将被移除指令集初始化为空,c)确定第一指令集的最精简表示,d)将最精简表示的大小与阈值进行比较,
e)如果所述大小大于阈值则执行步骤el至e3,el)确定第一指令集的哪个指令具有最高的编码成本,e2)从第一指令集中移除具有最高编码成本的指令,以及e3)将所述指令添加到被移除指令集中,f)重复步骤b-f,其中第一指令集由被移除指令集形成。与公知方法相反的是,根据所述第一方面的该方法是通常可应用的。该方法有效地将具有大的互对应性的指令分组到公共群中。选择具有高编码成本的偏离指令(deviating instruction)来形成分离的群。该过程可以重复。 对于一些指令,最精简表示可能是原始(未精简)表示。这里使用的原始表示也将被称为“全视图”。指令精简方案的数量以及针对每个指令精简方案的需求压缩可以是固定的。可替换地,可以通过计算考虑多个指令中不同指令的数量以及用于指示最小需求压缩因子的阈值来自动地确定指令精简方案的数量和每个指令精简方案的压缩。在一个实施例中,请求用户指定指令精简方案的数量以及每个指令精简方案的压缩,以便用户能够控制精简过程并试验哪个规范提供最好的结果。在所述方法的实施例中,所述指令包括被单独精简的多个指令字段。通过精简单独的指令字段,与将指令作为整体进行精简的情况相比能够获得更高的压缩。如果两个指令在特定的指令字段中具有相同的值但以其他方式不同,则那个指令字段的值可以由公共代码精简,但是将指令作为整体的精简将需要不同的代码。关于指令字段的知识优选从处理器描述文件中获得。精简方案可以对应于可编程处理器的某个视图。处理器视图被定义为硅蜂窝(silicon hive)编译器的目标,在该编译器中仅处理器资源的子集才是可用的。关于处理器资源的知识从处理器描述文件中获得。在所述实施例的变形中,被单独精简的指令字段至少包括操作码、用于指示写端口索引的字段以及用于指示读端口索引的字段。精简这些字段产生高的代码大小降低。另夕卜,下面的字段也可以被单独精简用于指示结果端口(总线)的字段、用于指示写端口选择的字段以及包括立即值的字段。在一个实施例中,针对不同子集的指令精简方案具有互不相同的码字宽度,其中这些子集中的至少其中一个子集具有最小码字宽度。在子集被允许具有互不相同的大小的情况中,一些子集可以通过使用更小的码字进行精简,从而节省编码空间。一些子集可以具有互不相同的精简方案,但是可以由具有互相相同大小的码字进行编码。在一个实施例中,针对每个子集的精简方案的码字的大小是大于或等于I的整数乘以最小码字宽度。通过该措施简化了指令的读取。部分指令可以不被精简。这些指令的长度可以等于从其中获取被精简或未被精简的指令的指令存储器的宽度,但是可以可替换地更小。优选地,指令不大于指令存储器的宽度以保持短的指令获取时间。在一个实施例中,互不相同的子集以互不相同的方式进行精简。例如,根据第一视图而被精简的指令可以使用采用编译时间可编程寄存器的查找表解精简(扩展),而根据第二视图而被精简的指令可以使用采用硬连线查找表的查找表。如果子集中的至少一个子集被精简为可变长度代码,则是有利的。通过将可变长度代码(VLC)仅应用于指令的子集,一方面,优点在于能够在那个子集中获得高的指令压缩因子,而另一方面,能够保持适中的代码数量,从而该子集中的代码能够被容易地解精简(被扩展)。精简方案的唯一约束是同一视图中的精简后指令具有小于或等于特定最大长度的大小。因此,长度小于或等于“视图”长度的VLC精简后指令将适合于该视图。根据本发明的第二方面,根据第一方面的方法进一步包括以下步骤-接收包括多个指令的程序,-对于每个指令,确定如步骤a-f 所确定的相应的指令精简方案,-根据所述指令精简方案来压缩指令,-提供精简后指令。

以此方式,被精简的程序可以与用于定义指令精简方案集的程序相同。精简后指令可以存储在特定地址范围中,从而能够根据指令地址而清楚地知道使用什么类型的精简方案。在一个实施例中,根据第二方面的方法进一步包括将精简后指令与用于指示使用的精简方案类型的至少一个指示符一起提供的步骤。这使得能够将精简后指令存储在与用于促成处理的原始程序相同的序列中。另外,精简后指令不需要被对准。在一个实施例中,精简后指令存储在包括多个分段的字中,而且每个分段至少包括用于指示所述分段是否是精简后指令的第一分段的指示符。在另一实施例中,精简后指令存储在包括多个分段的字中,其中每个精简后指令包括位于精简后指令内的预定位置处的指示符,所述指示符用于指示下一精简后指令的视图。其优点在于,即使根据不同视图的指令具有不同的大小,用于对精简后指令进行解精简的指令扩展器仍然能够准确和及时地预获取精简后指令的下一码字。根据本发明的第三方面,提供一种被适当编程以执行根据第一方面或第二方面的方法的装置。根据本发明的第四方面,提供一种包括程序的记录载体,所述程序促使装置执行根据第一方面或第二方面的方法。根据本发明的第五方面,提供一种可编程处理器,其包括-程序存储器,该程序存储器包括被存储为精简后指令数据的指令序列,精简后指令数据至少包括根据第一精简方案而被精简为具有N个存储器字分段的第一码字的第一指令,以及根据第二精简方案而被精简为具有M个存储器字分段的第二码字的第二指令,-指令解码器,-至少一个寄存器文件,-稱合到所述寄存器文件的至少一个发布槽(issueslot),-指令扩展器,包括-精简方案识别器,用于识别针对从程序存储器中获取的精简后指令数据的指令精简方案,-输入,用于接收程序计数器,-存储设备,用于临时存储至少一段程序存储器字,-选择设备,用于从程序存储器和存储设备中选择精简后指令数据,-指令扩展单元,用于将所选择的精简后指令扩展成大小为K的扩展后指令,-控制设备,用于响应于程序计数器来生成程序存储器的地址,并用于控制选择设备,其中K、N、M是大于或等于I的整数,整数N、M不大于K,并且其中N、M中的至少一者小于K。本发明的第一至第五方面是可以进一步包括设计和测试设备的环境的一部分。


下面将更详细地描述本发明的这些和其他方面。其中
图I示出了传统可编程处理器,图2示出了另一传统可编程处理器的一部分,图3示意性地示出了图2中部分示出的处理器的程序存储器的内容,图4示出了用于确定指令精简方案集的方法,图5示出了用于生成指令精简方案集的工具,图6示出了用于精简程序的工具,图7示意性地示出了根据本发明的可编程处理器的第一实施例,图8更详细地示出了图7的一部分,图9更详细地示出了图8的一部分,图10更详细地示出了图9的一部分,图11示出了用于在图7的处理器中处理指令的方法,图12示意性地示出了根据本发明的可编程处理器的第二实施例,图13示出了用于在图12的处理器中处理指令的方法,图14示意性地示出了根据本发明的可编程处理器的第三实施例,图15示意性地示出了根据本发明的用于生成可编程处理器的硬件描述的工具。
具体实施例方式在下面的详细描述中,阐述了多个具体细节以提供对本发明的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践本发明。在其他实例中,没有详细描述公知的方法、过程和部件,以便不模糊本发明的各个方面。下文中,将参照示出了本发明的实施例的附图来更充分地描述本发明。然而,本发明可以被体现为许多不同的形式,并且不应当被解释为局限于本文阐述的实施例。相反地,提供这些实施例,以使得本公开将透彻和完整以及将向本领域技术人员充分地传达本发明的范围。应当理解,当提及一个元件“连接”或“耦合”到另一元件时,该元件能够直接连接或耦合到其他元件,或者可以存在中间元件。相对地,当提及一个元件“直接连接到”或“直接耦合到”另一元件时,不存在中间元件。通篇中,类似的标号指代类似的元件。如本文使用的,术语“和/或”包括被关联列出的项中的一个或多个的项的任意和所有组合。应当理解,虽然术语“第一”、“第二”、“第三”等在本文中可以用于描述各种元件、部件和/或部分,但是这些元件、部件和/或部分不应当受到这些术语的限制。这些术语仅用于将一个元件、部件或部分与另一元件、部件和/或部分相区分。因此,下面讨论的第一元件、部件和/或部分能够用第二元件、部件和/或部分来表述,但是并不背离本发明的教导。
除非另有定义,否则本文使用的所有术语(包括技术和科技术语)都具有与本发明所属技术领域中的普通技术人员所通常理解的相同的意义。还应当理解,诸如在普通使用的字典中所定义的那些术语之类的术语应当被解释为具有与它们在相关领域的上下文中所具有的意义相一致的意义,并且不应当以理想或过于正式的意义进行解释,除非在本文中明确地如此定义。本文提到的所有出版物、专利申请、专利和其他参考都通过引用而被全部合并到本文。万一冲突,包括定义的本说明书将进行控制。另外,材料、方法和示例仅是说明性的,而且并非意欲进行限制。图I示意性地示出了可编程处理器。在图I所示的示例中,可编程处理器是VLIW处理器。VLIW处理器并行地处理被分组成VLIW指令字的多个指令字。这些通常由软件开发工具来产生。图I所示的VLIW处理器包括程序存储器10和耦合到程序存储器的指令解码器20。程序存储器10包含VLIW指令字。VLIW处理器还包括经由第一选择元件30a,. . .,30m耦合到多个总线70的多个寄存器文件40a,40n。寄存器文件具有一个或多个输入端口和一个或多个输出端口。寄存器端口由数据输入或输出和地址输入构成。清楚起见,图I仅示出了单个发布槽50。实际上,VLIW处理器将具有多个发布槽。 多个发布槽中的每个发布槽处理来自VLIW指令字的特定的指令字。发布槽包括能够对输入数据执行有限操作集的一个或多个功能单元。发布槽50具有指令解码器51和多个功能单元FU 53a,...,53k,例如乘法器、加法器、移位器等。发布槽50还具有第二选择元件52a,52k,用于选择来自各种源(例如寄存器文件)的输入数据和来自解码器20的用于提供立即值的输出。功能单元53a,53k和第二选择元件52a,. . .,52k的操作由操作解码器51控制。处理器还包括多个第三选择元件60a,. . .,60k,用于选择性地将功能单元53a, ,53k耦合到总线70。指令通常包括多个指令字段。每个字段控制可编程处理器的数据路径的具体项。在该特别示例中,指令可以包括下面的用于操作码、结果端口选择的选择(buS_SeleCt)、写端口的选择(wp_select)、写端口的索引的规范(wp_index)、读端口的索引的选择(rp_index)和立即的规范等6种指令字段。通常,每个发布槽具有一个操作码指令字段。该字段选择要由发布槽执行哪个操作。该操作由发布槽的其中一个功能单元执行。操作码被解码成功能单元选择信号和操作类型(optype),以激活特定的FU和那个FU的特定操作。在一些情况中,操作码可以不存在,例如如果发布槽专用于处理仅一个操作,例如加载立即值。具有不止一个发布槽输出的每个总线具有单独的用于指示哪个发布槽输出被连接到总线的bus_select字段。每个寄存器文件输入端口连接到一个或多个总线。如果存在连接到一个写端口的不止一个总线,则多路复用器选择到寄存器文件的输入端口的正确的总线。写端口选择(wp_Sel)指令字段包含用于该多路复用器的选择值。专门的代码wp_Sel= “11.. 11”用于指示在写端口上不应当发生写动作。该指令字段包含被写入寄存器文件的寄存器地址。每个寄存器写端口都具有单独的 wp_index。该指令字段包含从寄存器文件读取的寄存器地址。每个寄存器读端口都具有单独的 rp_index。
立即指令字段包含能够被用作发布槽中的其中一个功能单元的输入的值。并非根据本发明的、被称为立即覆盖(immediate overlaying)的代码精简方式依赖于这样的事实,即发布槽中的功能单元的输入可以使用寄存器文件输出或立即字段作为输入。optype确定输入是什么,而且对于每个指令而言这可以不同。如果操作码指示寄存器文件输出被用于操作,则发布槽的立即字段是冗余的。因此,如果立即值被选择作为输入,则针对连接到发布槽的输入的寄存器输出端口的寄存器索引字段是冗余的。由于该立即字段和该寄存器索引字段从来不在同一指令中使用,所以两个字段可以组合。立即和寄存器索引字段(的一部分)的组合将被称为立即覆盖。代码精简的另一方式利用不同视图的使用。处理器视图被定义为编译器的目标,
在该编译器中仅处理器资源的子集才是可用的。子集可通过以下约束来定义-寄存器文件属性输入/输出端口的数量、地址范围-功能单元属性立即范围、操作码的数量-总线的数量-完整的发布槽、功能单元、寄存器文件,...等。就代码精简而言,如果用于控制子集的指令比特的数量明显小于用于完整处理器的指令比特的数量,则处理器视图是有用的。处理器能够具有不止一个视图。用于支持视图机制的硬件如图2所示。在第一视图(视图0)中,所有的处理器资源都是可用的。程序存储器字包括单个指令。在第二视图(视图I)中,每个程序存储器字包括2个精简后指令。在第三视图(视图2)中,每个程序存储器字包括4个精简后指令,如图3所示意性示出的那样。注意,全视图并非必须等于程序存储器宽度。有时,选择更宽的程序存储器以使得更小视图能够更好的压缩是有意义的。例如,假设处理器具有60比特的全宽,而且最小视图具有16比特的宽度。通过采取60的程序存储器宽度,最小视图具有60/16=3. 75的压缩。这必须被四舍五入成2的一次幂,这导致压缩因子2。如果程序存储器的宽度等于64,则压缩变为因子4。在图3中,针对视图0的指令以常规方式放置,从而从地址0开始。对于视图0指令,PC等于程序存储器地址。针对视图I的指令从程序存储器地址OxlB开始。针对视图I的第一指令的程序计数器由具有值0的一个LSB (表明程序存储器字OxlB的下半区包含指令)、具有值“01”的两个MSB (表明该指令是视图I指令)以及接着等于程序存储器地址OxlB的中间比特形成。对于PC而言,结果是0x1036。随后指令的PC值能够通过递增该PC而找到。从地址0x2A开始,针对视图2的指令被布置。针对第一视图2指令的PC值由具有值“00”的2个Isb (用于从所述字中的4个精简后指令中选出存储器地址为“0x2A”的第一个精简后指令)和具有值2的2个MSB (表示视图号)形成。结果是0x2150。如图2所示,用于支持视图机制的硬件包括第一精简后指令选择器22和第二精简后指令选择器23、第一指令解精简单元24和第二指令解精简单元25和全指令选择器26。当运行程序时,处理器指示将用它的程序计数器(PC) 12来执行指令。程序计数器12的输出具有第一部分12a、第二部分12b和第三部分12c,其中第一部分12a用于控制第一指令解精简单元24和第二指令解精简单元25,第二部分12b用于处理所需的程序存储器字,以及第三部分12c用于控制全指令选择器26。部分12c指示视图选择。在全视图模式中,PC等于程序存储器地址。针对全视图(视图0)的程序存储器字确切地包含一个全指令。全指令选择器26仅将该指令传递给指令解码器20。在“精简后视图”模式中,PC不能直接被映射到程序存储器地址。在那种情况中,PC的部分12a指示程序存储器字中的哪个指令需要被选择。如果由部分12b中的地址所指示的程序存储器字被读取,则由被程序计数器的部分12a所控制的第一精简后指令选择器22和第二精简后指令选择器23所选择的精简后指令在指令解精简单元24和25中被提取。指令解精简单元24、25将精简指令转换成全指令。对于每个被实施的精简方案而言,对应于处理器的特定视图来实施指令解精简器
24、25。解精简器24、25的输出是全指令选择器26的输入。PC的部分12c (view_select)确定全指令选择器26的哪些输入被选择作为指令选择器26的输出。
在参照图2和图3所描述的代码精简方法中,编程器定义需要在哪个视图中运行哪个代码。基本构件块的所有指令应当以一个视图为目标。视图的切换仅能够通过跳转操作(jump operation)的方式来实现。这仅通过跳转指令来实现。在指令选择和调度之后,汇编器定义精简后指令并确定多个精简后指令如何被放置在一个程序存储器字中。链接器定义每个被构建的字的程序存储器地址。通常,针对一个视图的指令被分组在一起。一个组的第一指令总是从程序存储器字的比特0开始。同一基本构件块中的随后指令随后被放置在程序存储器字中,如果乘以压缩因子的精简后指令大小小于程序存储器宽度,则在它们之间留下伪比特(dummy bit)。如果字满了,则在下一程序存储器字的比特零处放置下一指令。图4示意性地示出了根据本发明的用于生成针对要由可编程处理器处理的指令子集的各个指令精简方案的方法。该方法包括用于接收代表将在可编程处理器上执行的软件的至少一个输入代码样本的第一步骤SI,所述输入代码包括用于定义第一指令集的多个指令(SI)。在所示的实施例中,该方法包括第二步骤S2,其中要求用户指定指令精简方案的数量以及针对每个指令精简方案的最小需求压缩。这样,用户能够控制精简过程,并试验哪个规范提供最好的结果。步骤S2不是关键的。可替换地,指令精简方案的数量以及每个指令精简方案的需求压缩可以是固定的。在再一实施例中,可以通过计算考虑多个指令中不同指令的数量以及阈值来自动地确定指令精简方案的数量和每个指令精简方案的压缩。在第三步骤(S3)中,定义被移除指令集,而且该被移除指令集被初始化为空集。之后在步骤S4中,确定弟一指令集的最精简表不。在步骤S5中,将所述最精简表示的大小与阈值进行比较。依赖于该比较的结果,在步骤S5之后执行步骤S6至S8或者执行步骤S9至S10。如果最精简表示的大小大于所述阈值,则执行步骤S6至S8,否则执行步骤S9至S10。在步骤S6中,确定第一指令集的哪个指令具有最高的编码成本。随后在步骤S7中,从第一指令集中移除该指令并且在步骤S8中将其添加到移除指令集中。之后程序流转到步骤S4。在确定最精简表示的大小不大于所述阈值的情况中,第一指令集被重新定义为移除指令集(步骤S9),而且移除指令集被重新定义为空(步骤S10)。
根据本发明第一方面的该方法可以在如图5所示的视图生成工具VG中使用。如图所示,视图生成工具从例如ELF (执行语言格式)的视图无关可再定位对象文件115开始。视图无关可再定位对象文件115能够从必须由处理器执行的典型软件应用程序中获得。可再定位对象文件115在压缩之后理想地确切容纳在所选程序存储器中。对象文件115是链接步骤的结果,其中在链接步骤中程序所需的所有模块被合并。文件115包含针对跳转目标和数据对象的符号。视图生成工具VG应当将符号作为单独值进行处理。应当假设两个不同的符号总是指代不同的值,虽然这或许是不对的。在一个实施例中,视图生成工具VG能够执行预再定位,以便识别具有相同值的符号。潜在地,这降低了表中的条目的数量,从而改善了压缩因子。在所示的实施例中,另外地,还提供了处理器描述文件105。处理器描述文件105便于降低用于搜索最佳指令精简方案集的搜索空间,因为其提供了关于能够被单独精简的 指令如何被划分成指令字段的信息。处理器的处理器描述文件105由第一架构参数提取(APEX)模块120转换成时间静止指令格式(TSIF)数据结构125。APEX模块120提供用于提取在处理器的硬件描述中定义的参数的应用编程接口(API)。当使用硬件构件块库来构建处理器的硬件时使用该API。TSIF数据结构125和视图无关可再定位对象文件115被提供给视图生成模块130,这将在下面更详细描述。视图生成模块130生成视图定义文件135。视图生成模块130的实施例的典型实现方式在下面的伪代码中示出。在该实施例中,唯一地根据可再定位对象文件115来确定指令精简方案集。
权利要求
1.一种用于生成针对要由可编程处理器处理的指令的子集的各个指令精简方案的方法,包括以下步骤 a)接收代表要在所述可编程处理器上执行的软件的至少一个输入代码样本,所述输入代码包括用于定义第一指令集的多个指令(SI ), b)将被移除指令集初始化为空(S3), c)确定所述第一指令集的最精简表示(S4), d)将所述最精简表示的大小与阈值进行比较(S5), e)如果所述大小大于所述阈值则执行步骤el至e3, el)确定所述第一指令集的哪个指令具有最高的编码成本(S6), e2)从所述第一指令集中移除具有所述最高编码成本的所述指令(S7) e3)将所述指令添加到所述被移除指令集中(S8), f)重复步骤b-f,其中所述第一指令集由所述被移除指令集形成(S9,S10)。
2.根据权利要求I所述的方法,包括请求多个指令精简方案和每个指令精简方案的压缩的步骤(S2)。
3.根据权利要求I所述的方法,包括对多个指令精简方案进行迭代并确定为每个指令精简方案所获得的压缩量的步骤。
4.根据权利要求1-2中的其中一个权利要求所述的方法,其中,所述指令包括被单独精< >简的多个指令字段。
5.根据权利要求4所述的方法,其中,被单独精简的所述指令字段至少包括操作码、指示写端口索引的字段和指示读端口索引的字段。
6.根据前述任一权利要求所述的方法,其中,针对不同子集的所述指令精简方案具有 互不相同的码字宽度,其中所述子集中的至少其中一个子集具有最小码字宽度。
7.根据权利要求6所述的方法,其中,针对每个子集的所述精简方案的码字的大小是整数乘以最小码字宽度,所述整数大于或等于I。
8.根据前述任一权利要求所述的方法,其中,互不相同的子集以互不相同的方式进行精简。
9.根据前述任一权利要求所述的方法,其中,所述子集中的至少其中一个子集被精简为可变长度代码。
10.根据前述任一权利要求所述的方法,还包括以下步骤 -接收包括多个指令的程序, -对于每个指令,确定如步骤a-f所确定的相应的指令精简, -根据所述指令精简来压缩所述指令, -提供精简后指令。
11.根据权利要求10所述的方法,包括将所述精简后指令与用于指示所使用的精简类型的至少一个指示符一起提供的步骤。
12.根据权利要求10或11所述的方法,其中,所述精简后指令存储在包括多个分段的字中,而且其中每个分段至少包括用于指示所述分段是否是精简后指令的第一分段的指示符。
13.根据权利要求10或11所述的方法,其中,所述精简后指令存储在包括多个分段的字中,其中每个精简后指令包括位于所述精简后指令内的预定位置处的指示符,所述指示符指示用于下一精简后指令的精简类型。
14.根据权利要求I所述的方法,还包括以下步骤 -接收可编程处理器的规范, -使用所述规范和所生成的各个指令精简方案来确定针对指令解精简器的硬件规范。
15.被适当编程以实现根据权利要求I至14中任一权利要求所述的方法的装置。
16.包括用于促使装置实现根据权利要求I至14中任一权利要求所述的方法的程序的记录载体。
17.一种可编程处理器,包括 -程序存储器(10),所述程序存储器包括被存储为精简后指令数据的指令序列,所述精简后指令数据至少包括根据第一指令精简方案而被精简为具有N个存储器字分段的第一码字的第一指令,以及根据第二指令压缩方案而被精简为具有M个存储器字分段的第二码字的第二指令, -指令解码器(20), -至少一个寄存器文件(40,40a), -耦合到所述寄存器文件(40a)的至少一个发布槽(50), -指令扩展器(80),所述指令扩展器包括 -精简方案识别器(17),用于识别针对从所述程序存储器中获取的精简后指令数据的所述指令精简方案, -输入,用于接收程序计数器(PC ), -存储设备(14),用于临时存储至少一段程序存储器字, -选择设备(27),用于从所述程序存储器(10)和所述存储设备(14)中选择精简后指令数据, -指令扩展单元(87),用于将所选择的精简后指令扩展成大小为K的扩展后指令, -控制设备(85),用于响应于所述程序计数器(PC)来生成所述程序存储器的地址(AD),并用于控制所述选择设备, 其中K、N和M是大于或等于I的整数,所述整数N、M不大于K,并且其中N、M中的至少一者小于K。
18.根据权利要求17所述的可编程处理器,其中,所述存储设备(14)是寄存器,并且其中所述选择设备(27)包括多个多路复用模块(27a,…,27d),其中每个多路复用模块选择精简后指令数据的其中一个分段或零个分段。
全文摘要
用于生成针对要由可编程处理器处理的指令的子集的各个指令精简方案的方法包括以下步骤a)接收代表要在所述可编程处理器上执行的软件的至少一个输入代码样本,所述输入代码包括用于定义第一指令集的多个指令(S1),b)将被移除指令集初始化为空(S3),c)确定所述第一指令集的最精简表示(S4),d)将所述最精简表示的大小与阈值进行比较(S5),e)如果所述大小大于所述阈值则执行步骤e1至e3,e1)确定所述第一指令集的哪个指令具有最高的编码成本(S6),e2)从所述第一指令集中移除具有所述最高编码成本的所述指令(S7),以及e3)将所述指令添加到所述被移除指令集中(S8),f)重复步骤b-f,其中所述第一指令集由所述被移除指令集形成(S9,S10)。
文档编号G06F9/318GK102741817SQ201080050130
公开日2012年10月17日 申请日期2010年9月3日 优先权日2009年9月4日
发明者A·奥古斯特伊恩, E·Y·M·勒特恩阿夫, H·T·J·茨瓦尔坚科特, J·A·J·莱特恩, J·冯厄特尔, 郭园青 申请人:英特尔贝内卢克斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1