处理器的制作方法

文档序号:6432688阅读:143来源:国知局
专利名称:处理器的制作方法
技术领域
本公开涉及处理器。更具体地,本公开涉及预设使用VLIW(超长指令字)型并行执行部分等的处理器。
背景技术
如RISC (精简指令集计算机)处理器的顺序执行处理器适于通用控制处理。另一方面,如VLIW处理器的并行执行处理器善于为了特殊目的执行简单和大量的并行执行处理。通常,这两种类型的处理器每种具有独立的指令高速缓存或RAM(随机存取存储器),并且独立运行(发出和执行指令)。即,RISC侧处理和VLIM处理器处理不混合;它们仅仅可以在更高层的共享存储器上交换信息。难以以分钟为增量融合这两种处理。在过去,提出了这样的处理器,其使用RISC处理器指令的子程序指令代码来操作 VLIW控制单元(例如,见日本专利公开No. 2002-032218(图1))。提出的技术涉及使用子程序指令代码来指定使得VLIW控制单元开始程序执行的程序号(program number) 0这允许VLIW控制单元执行并行执行。

发明内容
根据上述提出的技术,RISC处理器指令可以用于开始VLIW控制单元的并行执行。 然而,该技术要求所有子程序程序预先准备好,使得它们中的一些可以通过程序号指定。该要求归因于所有VLIW控制单元通常通过使用32位宽的RISC处理器指令并行运行的事实。 在该情况下,在执行下一 RISC处理器指令之前,等待给定子程序程序的执行结束。接着是以互斥方式执行RISC处理器处理和VLIW控制单元处理。这使得难以以分钟为增量融合两种类型的处理。此外,需要频繁改变模式可能招致劣化的处理效率。同时,如果以此方式定义新的RISC指令集,使得RISC指令集与VLIW指令完美融合,则将难以保持与基于过去的RISC指令集的软件资源和软件开发环境的兼容性。本公开已经考虑上述问题作出,并且提供一种用于有效地融合顺序执行部分 (RISC处理器)的处理和并行执行部分(VLIW控制单元)的处理的处理器。根据本公开实施例,提供了一种处理器,包括指令提取部分,配置为根据程序计数器同时提取多个固定长度的指令;指令预解码器,配置为预解码所述多个固定长度的指令的一部分中的特定字段;以及程序计数器管理部分,配置为根据预解码的结果控制所述程序计数器的增量。该结构通过在指令的解码之前设置程序计数器的增量值,提供便利控制的效果。优选地,所述特定字段可以放置在对所述固定长度的指令的一部分共同的特定位位置。此外,所述特定字段可以优选地包括可同时发出的指令计数字段,其指示所述多个固定长度的指令中的可同时发出的指令的数量。根据本公开另一实施例,提供了一种处理器,包括指令提取部分,配置为根据程序计数器同时提取四个固定长度的指令;指令预解码器,配置为预解码放置在对所述四个固定长度的指令中的第二和第四固定长度指令共同的特定位位置中的特定字段;以及程序计数器管理部分,配置为根据预解码的结果以这样的方式执行控制,使得对应所述固定长度的指令中的一个、两个或四个设置所述程序计数器的增量值。该结构通过在四个指令的提取之后并且在指令的解码之前设置程序计数器的增量值对应于一个、两个或四个指令, 提供了便利控制的优点。根据本公开另一实施例,提供了一种处理器,包括指令提取部分,配置为根据程序计数器同时提取多个固定长度的指令;顺序执行部分,配置为顺序执行所述多个固定长度的指令中由操作码字段指定的特定指令;并行执行部分,配置为根据基于特定字段中指示的信息的并行度,执行所述多个固定长度的指令中由操作码字段指定的特定指令;指令预解码器,配置为预解码所述多个固定长度的指令中要由所述并行执行部分执行的那些固定长度的指令中的特定字段;以及程序计数器管理部分,配置为根据预解码的结果控制所述程序计数器的增量值。该结果提供在指令的解码之前设置程序计数器的增量值以及基于特定字段中指示的信息并行执行指令的效果。优选地,所述特定字段可以放置在对要由所述并行执行部分执行的那些固定长度的指令共同的特定位位置中。此外,所述特定字段优选地可以包括可同时发出的指令计数字段,其指示所述多个固定长度的指令中的可同时发出指令的数量。根据本公开另一实施例,提供了一种处理器,包括指令提取部分,配置为根据程序计数器同时提取四个固定长度的指令;顺序执行部分,配置为顺序执行所述四个固定长度的指令中由操作码字段指定的特定指令;并行执行部分,配置为根据基于特定字段中指示的信息的并行度,执行所述四个固定长度的指令中由操作码字段指定的特定指令;指令预解码器,配置为预解码放置在对所述四个固定长度的指令中要由并行执行部分执行的第二和第四固定长度指令共同的特定位位置中的特定字段;以及程序计数器管理部分,配置为根据预解码的结果以这样的方式执行控制,使得对应所述固定长度的指令中的一个、两个或四个设置所述程序计数器的增量值。该结构提供在四个固定长度指令的提取之后并且在指令的解码之前设置程序计数器的增量值对应于一个、两个或四个指令、以及根据基于特定字段中指示的信息的并行度来并行执行指令的效果。如上所述实践的本公开提供了有效地融合顺序执行部分(如RISC处理器)的处理和并行执行部分(如VLIW控制单元)的处理的优点。


图1是示出采用本公开的处理器系统的典型配置的示意图;图2是示出作为实施例一部分的RISC处理器的指令发出特征的典型整体结构的示意图;图3是示出作为实施例一部分的RISC处理器的典型详细结构的示意图;图4A和4B是示出用于实施例使用的典型指令格式的示意图;图5A、5B和5C是示出实施例的典型指令发出定时的表格图;图6A、6B、6C和6D是示出对应于实施例的指令发出定时的可同时发出指令计数字段中的典型值的示意图;图7是示出如何典型地控制实施例的程序计数器的增量的表格图8是示出用于实施例使用的典型内嵌汇编宏指令的表格图;图9是示出与实施例有关的可同时发出指令计数和内嵌汇编宏指令之间的关系的表格图;以及图10是示出用与实施例有关的汇编宏指令写的典型程序的示意图。
具体实施例方式现在将描述本公开的一些优选实施例(以下简称为实施例)。将在以下标题下给出描述1.第一实施例(用于控制程序计数器增量);以及2.第二实施例(用于使用汇编宏指令设置可同时发出指令的数量)3.结论<1.第一实施例>[处理器系统的配置]图1是示出采用本公开的处理器系统的典型配置的示意图。处理器系统包括RISC 处理器100、VLIff协处理器200、普通处理器300和主存储器400。该实施例设想每周期提取多达32位长的指令用于通过VLIW协处理器并行执行,或者组合RISC处理器100和VLIW 协处理器200用于并行指令执行。稍后将讨论指令格式的具体示例。用作处理器系统的主处理器的RISC处理器100可以采用例如RISC架构。经由存储器总线409与主存储器400连接的RISC处理器100从主存储器400获取必要的指令和数据用于指令执行处理。RISC处理器100由指令高速缓存101、指令选择器102、指令解码器103、顺序执行部分104、寄存器文件105和数据高速缓存106构成。指令高速缓存101是暂时保持从主存储器400读取的指令的高速缓存存储器。假设每周期从主存储器400读取多达四条指令到指令高速缓存101中。还假设每周期多达四条指令从指令高速缓存101馈送到系统的相关组件。在该情况下,在四条指令中,除了第一指令外的三条(即,第二、第三和第四指令)经由具有96位的指令长度的扩展指令路径191 提供给VLIW协处理器200。顺带提及,指令高速缓存101是权利要求中所述的指令提取部分的示例。指令选择器102选择性地输出从指令高速缓存101馈送的四条指令中的一条。由指令选择器102选择的指令目标是由RISC处理器100中的顺序执行部分、VLIW协处理器 200和普通处理器300之一执行。当由指令选择器102选择的指令提供到外部附接的VLIW 协处理器200或普通处理器300时,使用具有32位的指令长度的普通指令路径。指令解码器103解码由指令选择器102选择的指令。如果通过指令解码器103解码的结果显示所述指令目标是由RISC处理器100执行,则该指令转发给顺序执行部分104。顺序执行部分104是RISC处理器100的指令执行部分。顺序指令部分104根据通过指令解码器103解码的结果,使用寄存器文件105中保持的操作数数据执行处理。根据需要,执行结果写回到寄存器文件105。此外,与通过指令解码器103解码的结果一致,顺序执行部分104从主存储器400或从数据高速缓存106读取数据,并且将操作数数据加载到寄存器文件105中。此外,根据通过指令解码器103解码的结果,顺序执行部分104将寄存器文件105中保持的数据存储到主存储器400中。在该情况下,如果数据高速缓存106在往回复制(copy-back)方案下运行,则数据仅仅保持在数据高速缓存106中,而不写到主存储器400。原理上,顺序执行部分104每周期处理一条指令。然而,这不一定应用于流水线处理中各指令之间的重叠执行。即,多个指令可以看起来同时处理。寄存器文件105是一般的寄存器,其保持顺序执行部分104的指令执行所需的操作数数据。寄存器文件105中保持的操作数数据目标是由顺序执行部分104读取或写入。 此外,寄存器文件105目标是从主存储器400对其加载数据或者将保持的数据存储到主存储器400中。此外,寄存器文件105允许数据到或来自另一协处理器的寄存器文件的寄存器到寄存器传送。寄存器之间的数据传送使用路径195执行。数据高速缓存106是暂时保持从主存储器400读取的数据的数据存储器。如果数据高速缓存106在往回复制方案下运行,则可能明显地出现与主存储器的不匹配。然而,执行控制,使得在两个存储器之间保持它们内容的逻辑一致性。VLIW协处理器200和普通协处理器300也使用数据高速缓存106,使得高速缓存106暂时保持它们的数据。假设(32位的)一个数据项每周期从数据高速缓存106馈送到寄存器文件105或普通协处理器300。 还假设(1 位的)四个数据项每周期从数据高速缓存106提供到VLIW协处理器200。用作RISC处理器100的协处理器的VLIW协处理器200在VLIW控制下执行并行指令执行。VLIW协处理器200包括并行指令解码器203、并行执行部分204和寄存器文件 205。并行指令解码器203解码从RISC处理器100馈送的指令。除了普通指令路径192 上的单个指令的信号,RISC处理器100可以在扩展指令路径191上提供三条指令的信号。 即,可以给并行指令解码器203提供每周期多达四条指令的信号。并行指令解码器203具有每周期解码多达四条指令的能力。并行执行部分204是VLIW协处理器200的指令执行部分。并行指令部分204具有每周期并行执行多达四条指令的能力。如稍后讨论的,如果操作码字段指示VLIW协处理器指令,则并行执行部分204根据基于可同时发出指令计数字段中指示的信息的并行度执行VLIW处理器指令。寄存器文件205是保持并行执行部分204的指令执行所需的操作数数据的寄存器。可以通过路径196从数据高速缓存106给寄存器文件205提供每周期多达(1 位的) 四条指令。寄存器文件205中保持的操作数数据目标是由并行执行部分204读取或写入。 此外,寄存器文件205允许数据到或来自RISC处理器100或普通处理器300的寄存器文件的寄存器到寄存器传送。寄存器之间的数据传送使用路径195执行。普通协处理器300执行其它处理作为RISC处理器100的协处理器。例如,浮点协处理器可以用作普通协处理器300。其中,普通协处理器300包括指令解码器303和寄存器 305 等。指令解码器303解码从RISC处理器100提供的指令。RISC处理器100通过普通指令192将每周期的单个指令的信号馈送到指令解码器303。寄存器文件305是保持普通协处理器300内部的执行部分(未示出)的指令执行所需的操作数数据的寄存器。可以通过作为路径196 —部分的路径197从数据高速缓存 106给寄存器文件305提供每周期(32位的)一条指令。[指令发出特征的结构]
图2是示出作为实施例一部分的RISC处理器100的指令发出特征的典型整体结构的示意图。RISC处理器100具有插入在图1所示的指令高速缓存101和指令解码器103 之间的两个指令预解码器170。此外,RISC处理器100包括程序计数器管理部分110,其管理用于程序执行的程序计数器。指令预解码器170预解码从指令高速缓存101同时读取(即,提取)的四条指令中的第二和第四指令中的特定字段701。第一和第三指令也可以包含特定字段701,然而该特定字段不需要预解码。在该上下文中,预解码指在通过指令解码器103的指令解码之前执行的解码。作为要预解码的目标的特定字段701包括操作码字段和可同时发出指令计数字段。操作码字段指示指令类型,并且一种这样的指令类型包括VLIW协处理器指令。VLIW协处理器指令是要由VLIW协处理器200处理的指令。在VLIW协处理器指令的情况下,可同时发出指令计数字段指示可同时发出到VLIW协处理器200的指令的数量。根据可同时发出指令计数字段,程序计数器管理部分110执行程序计数器控制,并且VLIW协处理器200 的并行执行部分204执行并行执行控制。通过指令预解码器170的预解码的结果经由信号线179发送到程序计数器管理部分110。从指令高速缓存101同时读取的四条指令被管理为四条指令间隙(slot)#0到#3。 即,第一指令被处理为指令间隙#0,第二指令作为指令间隙#1,第三指令作为指令间隙#2, 并且第四指令作为指令间隙#3。这些指令可以暂时保持在指令间隙寄存器中,或者可以被管理而不需要求助这样的寄存器。范围从指令间隙#1到指令间隙#3的三条指令经由扩展指令路径191馈送到VLIW协处理器200。通过指令选择器102选择范围从指令间隙#0到指令间隙#3的四条指令之一。选择的指令经由普通指令路径192发送到RISC处理器100, 或者VLIW协处理器200或普通协处理器300的指令解码器。程序计数器管理部分110根据通过指令预解码器170预解码的结果,控制RISC处理器100中的程序计数器的增量。如果操作码字段指示普通指令而不是VLIW协处理器指令,则程序计数器的增量设为对应于一条指令。如果操作码字段指示VLIW协处理器指令, 则根据指令间隙#1和#3的可同时发出指令计数字段确定程序计数器的增量值。由程序计数器管理部分110管理的程序计数器值馈送给指令高速缓存101,从而提取领先由程序计数器指示的地址的四条指令。此外,程序计数器管理部分110根据预解码的结果对指令选择器102提供选择性控制。利用对程序计数器增量的控制,当操作码字段指示普通指令而不是VLIW协处理器指令时,程序计数器管理部分110使得指令选择器102在从指令间隙#0开始的时间选择一条指令。如果操作码字段指示VLIW协处理器指令,则程序计数器管理部分110根据指令间隙 #1到#3中的可同时发出指令计数字段,使得指令选择器102选择相关的指令。图3是示出作为实施例一部分的RISC处理器100的典型详细结构的示意图。该结构示例指示RISC处理器100的指令流水线中的指令高速缓存级、指令提取级和寄存器文件级。指令高速缓存级是与程序计数器一致地访问指令高速缓存的存储器部分的一级。指令提取级是从存储器部分读取的指令经历选择的一级。寄存器文件级是解码提取的指令并获取它们的操作数数据的一级。指令高速缓存101和程序计数器管理部分110跨越指令高速缓存级和指令提取级。指令预解码器170属于指令提取级,而指令解码器103属于寄存器文件级。对于上述结构示例,假设可同时发出指令组的指令地址在软件开发时对齐。S卩,假设当两条指令要同时发出时,地址在两字边界对齐,或者当四条指令要同时发出时,地址在四字边界对齐。接着在上述结构中,不同周期中提取的指令不能同时发出。程序计数器管理部分110包括程序计数器锁存器114、115、121到123和133 ;加法器111到113,程序计数器复用器116和124 ;以及与(AND)门132。加法器111将当前程序计数器递增对应于一条指令的“1”。加法器112将当前程序计数器递增对应于两条指令的“2”。加法器113将当前程序计数器递增对应于四条指令的 “4”。程序计数器锁存器114选择性地锁存加法器111的输出、分支目的地地址、或异常处理程序地址。程序计数器锁存器115锁存加法器113的输出。程序锁存器121锁存程序计数器锁存器114的值作为用于指令高速缓存级的锁存器。程序计数器123锁存程序计数器锁存器115的值作为用于指令高速缓存级的锁存器。程序计数器锁存器133锁存程序计数器复用器124的输出作为用于指令提取级的锁存器。与门132使用屏蔽信号屏蔽通过指令预解码器170(对信号线179)预解码的结果。与门132的输出发送到程序计数器复用器124的选择性信号输入。程序计数器复用器 1 根据选择性信号输入选择程序计数器锁存器121到123中的值之一,并且输出选择的值作为当前程序计数器值。程序计数器复用器116根据指令类型选择程序计数器锁存器114 或115的输出,并且将选择的输出馈送到指令高速缓存101。指令高速缓存101包括指令高速缓存标签存储器141、指令高速缓存通路(way)存储器142和143、总线接口 144、和复用器145和146。指令高速缓存101还包括高速缓存标签锁存器151、高速缓存数据锁存器152和153、比较器巧4和155和复用器161到164。指令高速缓存标签存储器141是指令高速缓存101的高速缓存标签。这样,指令高速缓存标签存储器141保持指令地址的标签部分。指令高速缓存标签存储器141根据从程序计数器复用器116提供的程序计数器值输出相关条目(entry)。指令高速缓存通路存储器142和143是保持来自主存储器400的指令的存储器。在该示例中,假设双通路组联合存储器安排。当指令高速缓存通路存储器142和143存储来自主存储器400的指令时, 指令高速缓存标签存储器141将标签部分存入相应的条目中。与存储器总线409连接的总线接口 144从主存储器400获取指令。当指令高速缓存通路存储器142或143要在指令高速缓存错失(miss)时填充指令时,总线接口 144用于发送所述指令到指令流水线。复用器145用于选择标签部分,而复用器146用于选择指令。高速缓存标签锁存器151锁存复用器145的输出。高速缓存数据锁存器152锁存指令高速缓存通路存储器142的输出。高速缓存数据锁存器153锁存复用器146的输出。比较器154和155比较指令高速缓存标签存储器141中保持的标签部分和程序计数器。如果比较器1 和155的至少一个检测到匹配,则存在高速缓存命中(cache hit) 的可能性。如果比较器巧4和155两者都检测到不匹配,则意味着高速缓存错失命中已经发生。复用器161和162分别选择高速缓存数据锁存器152和153中保持的(1 位的) 四条指令中的(32位的)一条指令。复用器161和162对应于图1和2中所示的指令选择器 102。复用器163根据比较器巧4和155进行的比较结果选择复用器161或162的输出。复用器164根据比较器154和155进行的比较结果,选择来自高速缓存数据锁存器152 或153的输出的后96位。即,复用器163和164选择双通道指令高速缓存的任一。复用器 163选择一条指令(32位)的通道,并且复用器164选择三条指令(96位)的通道。如上所述,指令预解码器170预解码四条指令中的第二和第四指令中的特定字段 701。特定字段701包括在复用器164的输出中。指令预解码器170经由信号线179发送作为它们的预解码的结果的程序计数器增量值(sel_PC)到程序计数器管理部分110。如果检测到VLIW协处理器指令,则指令预解码器170输出允许发出指令到VLIW协处理器的使能信号。假定使能信号来自指令预解码器170,与门166屏蔽复用器164的输出(即,三条指令)。S卩,如果检测到VLIW协处理器,则输出未检查的三条指令;如果检测到不同于VLIW 协处理器指令的指令,则屏蔽三条指令。锁存器181锁存四条提取指令中的后三条。锁存器182锁存四条提取指令中的第一条。锁存器183锁存程序计数器。锁存器181的输出连接到扩展指令路径191,并且锁存器182的输出连接到普通指令路径192。锁存器182的输出还馈送到指令解码器103。艮口, 上述指令预解码器170布置在指令解码器103的上游。[指令格式]图4A和4B是示出用于实施例使用的典型指令格式的示意图。如图4A所示,实施例假设32位长的指令。从位31到位25范围内的七位构成操作码字段。在该示例中,显示为指定VLIW协处理器指令(协处理器2指令)。S卩,VLIff协处理器200定位为RISC处理器100可以原始连接到的第二协处理器,并且在协处理器2指令定义为VLIW协处理器指令时经历执行控制。原理上,(从位M到位0范围内的25位的)VLIW协处理器指令的主体仅仅由协处理器2( S卩,由VLIW协处理器200)解释。然而,在该实施例的情况下,位M和 23也被RISC协处理器100参考,如稍后讨论的。尽管VLIW协处理器200在此定义为第二协处理器,但这仅仅是示例。由位对和23构成的两位字段fmt是指示可同时发出指令的数量的字段。具体地, 如果可同时发出指令计数字段是“00”,则只有一条指令要发出;如果可同时发出指令计数字段是“01”,则两条指令要同时发出;如果可同时发出指令计数字段是“10”,则四条指令要同时发出。根据可同时发出指令计数字段的值,程序计数器管理部分110控制程序计数器增量,同时VLIW协处理器200确定指令执行中的并行度。如果仅仅VLIW协处理器指令要同时发出,则可同时发出指令计数字段的值等于VLIW协处理器200的指令执行并行度。如果RISC指令和VLIW协处理器指令要同时发出,则可同时发出指令计数字段的值减“ 1”等于VLIW协处理器200的指令执行并行度。可同时发出指令组中的VLIW协处理器指令指示可同时发出指令计数字段中的相同值。然而,应当注意的是,不一定需要参考所有指令值, 因为一个指令的值可以从指令组内的另一指令的值估计,如稍后将讨论的。在随后的描述中,为了简化,表示一条指令的值“00”可以指示为“1”,表示两条指令的值“01”可以指示为 “ 2 ”,并且指示四条指令的值“ 10 ”可以指示为“4”。由位22构成的一位标志是取决于之前比较指令的结果指定是否执行感兴趣的指令的条件标志。例如,如果给定指令的Cf位为“ 1 ”,则在之前比较指令的结果为“真”的情况下执行所述指令,并且在之前比较指令的结果为“假”的情况下不执行所述指令。如果Cf 位为“0”,则总是执行所述指令。由位21构成的单个位imm指示位9到位5构成直接操作数或第二源操作数rt。如果imm位为“1”,则指示五位的直接操作数。由位20和19构成的两位字段opc指示VLIW协处理器指令的操作类型的大的分类。例如,如果opc字段是“00”或“01”,则指示ALU操作(ALU_X,Y)。如果opc字段是 “10”,则指示位移操作(BSF)、移动(MOV)或打包操作(PACK)。如果opc字段是“ 11”,则指示乘法(MPY)或比较(CMP_X)。例如,如果opc字段是“11”,则位4指示指令的小的分类, 如图4A所示。从位18到位15范围内的四位字段fimct指示功能。fimct字段的处理的操作类型相互不同。从位14到位10范围内的五位字段指示第一源操作数rs。从位9到位5范围内的五位字段指示第二源操作数rt或直接操作数imm。从位4到位0范围内的五位字段指示目的地操作数rd。在这些位字段中,从位31到位23范围内的九位经历指令预解码器170的预解码。 即,指令预解码器170预解码在对各指令共同的特定位位置中布置的操作码字段和可同时发出指令计数字段两者。所有其它字段要由VLIW协处理器解码,并且与RISC处理器100无关。[指令发出定时]图5A、5B和5C是示出实施例的典型指令发出定时的表格图。图5A示出四条可同时发出指令的三种模式;图5B指示两条可同时发出指令的三种模式;以及图5C描绘一条发出指令的三种模式。在同时发出的四条指令的第一模式中,VLIW协处理器指令获得所有四个指令间隙。在该模式情况下,第一条指令经由普通指令路径192发出,并且剩余三条指令经由扩展指令路径191发出。这允许VLIW协处理器200并行执行四条指令。在同时发出的四条指令的第二模式中,RISC指令单独获得第一间隙,并且VLIW协处理器指令保持后三个间隙。在该模式情况下,后三条指令经由扩展指令路径191发出到 VLIW协处理器200。在RISC处理器100执行一条指令的同时,剩余三条指令由VLIW协处理器200并行执行。在同时发出的四条指令的变化模式中,RISC-VLIW传送指令可单独获得第一间隙, 并且VLIW协处理器指令可保持后三个间隙。在该模式情况下,在RISC处理器100执行 RISC-VLIff传送指令的同时,剩余三条指令由VLIW协处理器200并行执行。在同时发出两条指令的第一模式中,VLIW协处理器指令获得前两个指令间隙。在该模式情况下,经由普通指令路径192发出第一条指令,并且经由扩展指令路径191发出随后一条指令。这允许VLIW协处理器200并行执行两条指令。在同时发出两条指令的第二模式中,RISC指令获得第一间隙,并且VLIW协处理器指令获得随后一个间隙。在该模式情况下,经由扩展指令路径191将随后一条指令发出到 VLIff协处理器200。在RISC处理器100执行一条指令的同时,VLIff协处理器200执行另一条指令。在同时发出两条指令的变化模式中,RISC-VLIW传送指令可以获得第一间隙,并且VLIW协处理器指令获得随后一个间隙。在该模式情况下,在RISC处理器100执行 RISC-VLIff传送指令的同时,VLIff协处理器200执行一条指令。在发出一条指令的第一模式中,单独执行的VLIW协处理器指令获得第一指令间隙。在该模式情况下,经由普通指令路径192发出第一条指令。这允许VLIW协处理器200 执行一条指令。在发出一条指令的第二模式中,RISC指令获得第一间隙,并且不能同时执行的指令获得随后间隙。在该模式情况下,随后指令目的是在下一周期中执行。这对于发出一条 RISC-VLIff传送指令的变化模式也成立。如从前面描述理解的,本实施例预设当要同时发出RISC指令和VLIW指令时,RISC 指令布置在指令间隙#0中。符合该预设有助于简化指令预解码器170的结构。图6A、6B、6C和6C是示出对应于实施例的指令发出定时的可同时发出指令计数字段中的典型值的示意图。当要同时发出四条提取指令时,可同时发出指令计数字段在指令间隙#1和指令间隙#3两者中具有值“4”,如图6A所示。在该情况下,只参考指令间隙#1中的可同时发出指令计数字段就足够;不需要特别参考指令间隙#3中的可同时发出指令计数字段。尽管估计指令间隙#0和指令间隙#2两者中的可同时发出指令计数字段也具有值“4”,但不需要参考这些字段。假设在四条提取指令中,要同时发出前两条指令,然后同时发出随后两条指令。在这样的情况下,如图6B所示,在指令间隙#1和指令间隙#3两者中,可同时发出指令计数字段具有值“2”。指令间隙#1中的可同时发出指令计数字段指示要同时发出前两条指令,并且指令间隙#3中的可同时发出指令计数字段示出要同时发出随后两条指令。尽管估计指令间隙#0和指令间隙#2两者中的可同时发出指令计数字段也具有值“2”,但不需要参考这些字段。假设在四条提取指令中,要同时发出前两条指令,然后顺序发出随后两条指令。在这样的情况下,如图6C所示,指令间隙#1中的可同时发出指令计数字段具有值“2”,指示要同时发出前两条指令。指令间隙#3中的可同时发出指令计数字段具有值“1”,指示要顺序发出随后两条指令。尽管估计可同时发出指令计数字段在指令间隙#0中具有值“2”并且在指令间隙#2中具有值“1”,但不需要参考这些字段。假设在四条提取指令中,要顺序发出前两条指令,然后同时发出随后两条指令。在这样的情况下,如图6D所示,指令间隙#1中的可同时发出指令计数字段具有值“1”,而指令间隙#3中的可同时发出指令计数字段具有值“2”。指令间隙#1中的可同时发出指令计数字段指示要顺序发出前两条指令,并且指令间隙#3中的可同时发出指令计数字段指示要同时发出随后两条指令。尽管估计可同时发出指令计数字段在指令间隙#0中具有值“1” 并且在指令间隙#2中具有值“2”,但不需要参考这些字段。[对程序计数器的增量控制]图7是示出如何典型地控制实施例的程序计数器的增量的表格图。当指令间隙#1或#3中的可同时发出指令计数字段给出值“4”时,程序计数器的增量值设为对应于四条指令。这使得要同时提取下四条指令。如果指令间隙#1或指令间隙#3中的可同时发出指令计数字段具有值“4”,则其它指令间隙中的可同时发出指令计数字段总是也具有相同值“4”。因此在该情况下,参考两个指令间隙的任一就足够。如果指令间隙#1和#3两者中的可同时发出指令计数字段给出值“2”,则程序计数器的增量值设为对应于第一周期中的两条指令和下一周期中的两条指令。此后,同时提取下四条指令。如果指令间隙#1中的可同时发出指令计数字段具有值“2”并且指令间隙#3中的可同时发出指令计数字段具有值“1”,则程序计数器的增量值设为对应于第一周期中的两条指令、下一周期中的一条指令和下一周期中的一条指令。此后,同时提取下四条指令。如果指令间隙#1中的可同时发出指令计数字段具有值“1”并且指令间隙#3中的可同时发出指令计数字段具有值“2”,则程序计数器的增量值设为对应于第一周期中的一条指令、下一周期中的一条指令和下一周期中的两条指令。此后,同时提取下四条指令。如果指令间隙#1和指令间隙#3两者中的可同时发出指令计数字段给出值“ 1 ”,则程序计数器的增量值设为对应于四个重复周期的每个中一条指令,因为四条指令一次发出一条。此后,同时提取下四条指令。根据上述第一实施例,指令预解码器170预解码VLIW协处理器指令中的可同时发出指令计数字段,从而容易地控制程序计数器的增量。这使得可能以周期为单位同时发出多个RISC指令和VLIW协处理器指令,从而RISC处理器100和VLIW协处理器200可以同时操作。<2.第二实施例>上述第一实施例显示为使用这样的技术,其通过预解码可同时发出指令计数字段控制程序计数器增量。下面要说明的第二实施例利用这样的技术,其通过使用汇编宏指令设置可同时发出指令计数字段。硬件结构和机器语言代码级别的指令集对第一和第二实施例是共同的。使用汇编宏指令生成机器语言代码的技术仅仅是示例。可替代地,可能通过使得C编译器等自动地提取可以并行执行的纯C程序的那些部分等,使得这些部分自动地映射为VLIW指令,自动地生成包括上述可同时发出指令计数字段的机器语言代码。[内嵌汇编宏指令]图8是示出用于实施例使用的典型内嵌汇编宏指令的表格图。图8列出的是第二实施例使用的一些代表性内嵌汇编宏指令。其它不同的内嵌汇编宏指令可以设计并用于本实施例的使用。VliwAlign4内嵌汇编宏指令是用于四字对齐的内嵌汇编宏。该内嵌汇编宏用于将随后的汇编指令与四字边界对齐。在该情况下,编译器可以根据需要插入NOP(不操作)指令。VliwAlign2内嵌汇编宏指令是用于两字对齐的内嵌汇编宏。该内嵌汇编宏用于将随后的汇编指令与两字边界对齐。在该情况下,如同VliwAlign4内嵌汇编宏指令,编译器可以根据需要插入Ν0Ρ(不操作)指令。VliwQ4内嵌汇编宏指令是用于同时发出四条VLIW协处理器指令的VLIW协处理器指令。该VLIW协处理器指令宏使得在指定的四条VLIW协处理器指令的可同时发出指令计数字段中设置指示四条指令的值“10”。VliwQ3内嵌汇编宏指令是用于同时发出一条RISC指令和三条VLIW协处理器指令的VLIW协处理器指令。该VLIW协处理器指令宏使得在指定的三条VLIW协处理器指令的可同时发出指令计数字段中设置指示四条指令的值“10”。可替代地,RISC指令可以被 RISC-VLIff通信内嵌汇编宏指令替代用于同时发出。VliwD2内嵌汇编宏指令是用于同时发出两条VLIW协处理器指令的VLIW协处理器指令。该VLIW协处理器指令宏使得在指定的两条VLIW协处理器指令的可同时发出指令计数字段中设置指示两条指令的值“01”。VliwDl内嵌汇编宏指令是用于同时发出一条RISC指令和一条VLIW协处理器指令的VLIW协处理器指令。该VLIW协处理器指令宏使得在指定的一条VLIW协处理器指令的可同时发出指令计数字段中设置指示两条指令的值“01”。可替代地,RISC指令可以被 RISC-VLIff通信内嵌汇编宏指令替代用于同时发出。Vliwrt嵌汇编宏指令是用于简单发出一条VLIW协处理器指令的VLIW协处理器指令宏。该VLIW协处理器指令宏使得在指定的一条VLIW协处理器指令的可同时发出指令计数字段中设置指示一条指令的值“00”。RISC-VLIW通信内嵌汇编宏指令可以包括例如如Vliw_LD、Vliw_ST、Vliw_MT和 Vliw_MF的内嵌汇编宏指令。Vliw_LD内嵌汇编宏指令可以用用于从RISC数据高速缓存直接加载数据到Vliw协处理器寄存器的一条指令代替。Vliw_ST内嵌汇编宏指令可以用用于从Vliw协处理器直接存储数据到RISC数据高速缓存的一条指令代替。Vliw_MT内嵌汇编宏指令可以用用于从RISC寄存器文件移动数据到Vliw协处理器寄存器中的一条指令代替。Vliw_MF内嵌汇编宏指令可以用用于从Vliw协处理器寄存器移动数据到RISC寄存器文件中的一条指令代替。这些RISC-VLIW通信内嵌汇编宏指令允许RISC处理器100和 VLIff协处理器200之间的数据通信。_addu_inline内嵌汇编宏指令是用于指定加法操作的RISC指令内嵌汇编宏指令。该_3(1(111」111^^内嵌汇编宏指令这里显示为典型的RISC指令内嵌汇编宏指令。可以设计和使用许多其它RISC指令内嵌汇编宏指令。[内嵌汇编宏指令和可同时发出指令计数]图9是示出与实施例有关的可同时发出指令计数和内嵌汇编宏指令之间的关系的表格图。尽管该表格列出所有指令间隙#0到#3的可同时发出指令计数,但是实际参考指令间隙#1和#3。在VliwQ4内嵌汇编宏指令的情况下,指令间隙#0到#3的可同时发出指令计数设为指示四条指令的“10”。在RISC指令和VliwQ3内嵌汇编宏指令的组合的情况下,指令间隙#1到#3的可同时发出指令计数设为指示四条指令的“10”。要注意,在指令间隙#0的 RISC指令中不设置任何值,因为不存在相关字段。在VliwD2内嵌汇编宏指令的组合的情况下,指令间隙#0和#1的可同时发出指令计数设为指示两条指令的“01”。在RISC指令和VliwDl内嵌汇编宏指令的组合的情况下, 指令间隙#1的可同时发出指令计数设为指示两条指令的“01,但是在指令间隙#0的RISC 指令中不设置任何值,因为不存在相关字段。在这些情况下,取决于随后指令,指令间隙#2 和#3的可同时发出指令计数设为指示两条指令的“01”或者指示一条指令的“00”。S卩,如果随后指令是VliwD2内嵌汇编宏指令,则可同时发出指令计数设为指示两条指令的“01”, 或者如果随后指令是Vliw内嵌汇编宏指令,则可同时发出指令计数设为指示一条指令的 “00”。
在Vliw内嵌汇编宏指令的情况下,指令间隙#0和#1的可同时发出指令计数设为指示一条指令的“00”。取决于随后指令,指令间隙#2和#3的可同时发出指令计数设为指示两条指令的“01”或者指示一条指令的“00”。即,如果随后指令是VliwD2内嵌汇编宏指令,则可同时发出指令计数设为指示两条指令的“01”,或者如果随后指令是Vliw内嵌汇编宏指令,则可同时发出指令计数设为指示一条指令的“00”。[基于内嵌汇编宏指令的程序]图10是示出与实施例有关的用汇编宏指令写的典型程序的示意图。该程序示例使用内嵌汇编宏指令用C语言编写。顶部的“包括”声明是调用内嵌汇编宏定义文件的声明。该声明后面是样本代码。下面是使用“for”声明的循环的主体的逐行说明。循环主体的第一行是用于将第二行指令与四字边界对齐的VliwAligh4内嵌汇编宏指令。第二行由RISC指令(_addU_inline内嵌汇编宏指令)和VliwQ3内嵌汇编宏指令构成。VliwQ3内嵌汇编宏指令指定三条VLIW协处理器指令Vliw_SUB指令、Vliw_ADD指令和VliW_nop指令。第二行使得一条RISC指令和三条VLIW协处理器指令同时发出。第三行由指定四条VLIW协处理器指令的VliwQ4内嵌汇编宏指令构成Vliw_ADD 指令、Vliw_SUB指令、Vliw_nop指令和Vliw_n0p指令。第三行使得四条VLIW协处理器指令同时发出。第四行由Vliw_ST内嵌汇编宏指令和VliwQ3内嵌汇编宏指令构成。VliwQ3内嵌汇编宏指令指定三条VLIW协处理器指令Vliw_SUB指令、Vliw_ADD指令和Vliw_n0p指令。 第四行使得一条RISC-VLIW通信指令和三条VLIW协处理器指令同时发出。第五行构成C语言中的加法。预期C编译器自动地将该处理映射为RISC加法指令。该加法指令由RISC处理器100中的顺序执行部分执行。第六和第七行每个是Vliw内嵌汇编宏指令。这些Vliw内嵌汇编宏指令独立地发送到VLIW协处理器200。第八行由用于将第九行指令与两字边界对齐的VliwAligh2内嵌汇编宏指令构成。第九行由指定两条VLIW协处理器指令的VliwD2内嵌汇编宏指令构成Vliw_Vsrami指令和Vliw_MUL指令。第九行使得两条VLIW协处理器指令同时发出。第十行由RISC指令(_addU_inline内嵌汇编宏指令)和VliwDl内嵌汇编宏指令构成。VliwDl内嵌汇编宏指令指定Vliw_MUL指令作为VLIW协处理器指令。第十行使得一条RISC指令和一条VLIW协处理器指令同时发出。根据上述第二实施例,内嵌汇编宏指令用于指定指令对齐和可同时发出指令组。 这使得容易设置VLIW协处理器指令中的可同时发出指令计数字段的值。<3.结论〉如上所述,本公开的实施例通过指令预解码器170的预解码便利程序计数器增量的控制。这允许以周期为单位同时发出多个RISC指令和VLIW协处理器指令,从而RISC处理器100和VLIW协处理器200可以同时执行它们分别优胜的处理。例如,VLIff协处理器 200可以在RISC处理器100正在计算下一 VLIW操作所需的数据的存储器地址(指针)的同时,执行并行数据操作。此外,RISC处理器100可以对已经传送到RISC的VLIW操作的结果进行处理或确定,或者可以执行完全不同的处理。此外,可能以周期为单位发出多个RISC-VLIW通信指令和VLIW协处理器指令。这使得可能同时实现给定周期内的VLIW协处理器操作和(从RISC数据高速缓存或RISC寄存器文件)提供随后的VLIW协处理器操作所需的数据。以此方式,VLIW协处理器可以在每个周期内连续地它的操作,而不用等待从RISC提供数据。然而,实际上,考虑一条RISC指令(或RISC-VLIW通信指令)和多达三条VLIW指令的比率,可能不容易让VLIW协处理器以无缝连续的方式运行。在该情况下,本公开的有效扩展可以实现以具有同时发出一样多的N条RISC指令和N条VLIW指令。此外,根据本公开实施例,可同时发出的VLIW协处理器指令的数量是可变的;指令计数可以是1、2或4。这使得可能具有比固定长度VLIW协处理器更少的空间隙,从而可以改进指令密度。此外,根据本公开实施例,在VLIW协处理器指令的主体中指定可同时发出的指令计数字段。这使得可以维持与只使用RISC指令的过去的软件资源的兼容性。此外,根据本公开实施例,可同时发出指令计数字段用于简化程序计数器增量的控制。即使重新增加指令预解码器170,操作频率也不下降,使得高速性能仍然可获得。上述实施例和它们的变化仅仅是其中可以实现本公开的示例。如从上面清楚的, 优选实施例的描述中的各实施例的细节和它们的变化基本对应于权利要求中要求保护的公开内容。类似地,权利要求中命名的公开内容基本对应于优选实施例的描述中具有相同名称的细节。然而,本公开的这些实施例和它们的变化以及其它示例不限于此,并且本领域技术人员应当理解的是,依赖于设计需求和其他因素,可以出现各种修改、组合、子组合和更改,只要它们在权利要求或其等效物的范围内。此外,作为实施例一部分的上述一系列步骤和处理可以构造为用于这些这样的步骤和处理的方法、用于使得计算机执行这样的方法的程序、或者存储这样的程序的记录介质。记录介质可以是各种存储介质(如CD(致密盘)、MD(迷你盘)、DVD(数字多功能盘)、 存储卡和蓝光盘(注册商标))的任何一种。本申请包含涉及于2010年9月13日向日本专利局提交的日本优先权专利申请JP 2010-203910中公开的主题,在此通过引用并入其全部内容。
权利要求
1.一种处理器,包括指令提取部分,配置为根据程序计数器同时提取多个固定长度的指令; 指令预解码器,配置为预解码所述多个固定长度的指令的一部分中的特定字段;以及程序计数器管理部分,配置为根据预解码的结果控制所述程序计数器的增量。
2.如权利要求1所述的处理器,其中所述特定字段放置在对所述固定长度的指令的一部分共同的特定位位置。
3.如权利要求2所述的处理器,其中所述特定字段包括可同时发出的指令计数字段, 其指示所述多个固定长度的指令中的可同时发出指令的数量。
4.一种处理器,包括指令提取部分,配置为根据程序计数器同时提取四个固定长度的指令; 指令预解码器,配置为预解码放置在对所述四个固定长度的指令中的第二和第四固定长度指令共同的特定位位置中的特定字段;以及程序计数器管理部分,配置为根据预解码的结果以这样的方式执行控制,使得对应所述固定长度的指令中的一个、两个或四个设置所述程序计数器的增量值。
5.一种处理器,包括指令提取部分,配置为根据程序计数器同时提取多个固定长度的指令; 顺序执行部分,配置为顺序执行所述多个固定长度的指令中由操作码字段指定的特定指令;并行执行部分,配置为根据基于特定字段中指示的信息的并行度,执行所述多个固定长度的指令中由操作码字段指定的特定指令;指令预解码器,配置为预解码所述多个固定长度的指令中要由所述并行执行部分执行的那些所述固定长度的指令中的所述特定字段;以及程序计数器管理部分,配置为根据预解码的结果控制所述程序计数器的增量值。
6.如权利要求5所述的处理器,其中所述特定字段放置在对要由所述并行执行部分执行的那些所述固定长度的指令共同的特定位位置中。
7.如权利要求6所述的处理器,其中所述特定字段包括可同时发出的指令计数字段, 其指示所述多个固定长度的指令中的可同时发出的指令的数量。
8.一种处理器,包括指令提取部分,配置为根据程序计数器同时提取四个固定长度的指令; 顺序执行部分,配置为顺序执行所述四个固定长度的指令中由操作码字段指定的特定指令;并行执行部分,配置为根据基于特定字段中指示的信息的并行度,执行所述四个固定长度的指令中由操作码字段指定的特定指令;指令预解码器,配置为预解码放置在对所述四个固定长度的指令中的要由所述并行执行部分执行的第二和第四固定长度指令共同的特定位位置中的所述特定字段;以及程序计数器管理部分,配置为根据预解码的结果以这样的方式执行控制,使得对应所述固定长度的指令中的一个、两个或四个设置所述程序计数器的增量值。
全文摘要
一种处理器,包括指令提取部分,配置为根据程序计数器同时提取多个固定长度的指令;指令预解码器,配置为预解码所述多个固定长度的指令的一部分中的特定字段;以及程序计数器管理部分,配置为根据预解码的结果控制所述程序计数器的增量。
文档编号G06F9/38GK102402418SQ20111026535
公开日2012年4月4日 申请日期2011年9月8日 优先权日2010年9月13日
发明者花木博一, 高岛敏 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1