用于设计数字处理器的方法以及装置制造方法及图纸

技术编号:2860081 阅读:130 留言:0更新日期:2012-04-11 18:40
用于在流水线化的中央处理器(CPU)或用户可定制的微处理器上执行指令的改进的方法及装置。在本发明专利技术第一方面,公布了一种在一个阶段已被阻塞或中断情况下控制流水线运行的改进方法。在一个实施例中,公布了一种流水线分段法(“撕裂”),其中该流水线在后面、未阻塞各阶段仍被允许继续下去而不顾稍前阶段的阻塞。类似地,还公布了一种方法,其中允许出现于流水线中稍前阶段的指令被再装配(“抓起”)到稍后的阻塞阶段。还公布了一种包括了上述分段法及再装配方法的综合处理器设计的方法,以及一种能够实现这一综合方法的计算机系统。(*该技术在2020年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及数字处理器的设计,尤其涉及用户定制的处理器的设计。
技术介绍
在计算机领域中RISC(精简指令集计算机)处理器是大家所熟知的。RISC处理器与非-RISC(通常所说的“CISC”)处理器相比,通常具有利用充分精简指令集的基本特性。一般RISC处理器机器指令并不全是微编码的,可以立即执行而不用解码,因而在处理速度上可以提供有意义的经济效益。这一“流线型的”指令处理能力还允许进一步简化处理器的设计(与非RISC设备相比),从而允许更小的硅片和更少的生产成本。此外,RISC处理器典型的特征在于若干或所有的下列属性(i)装入/存储存储器结构体系(也就是,仅在装入和存储指令时必须存取存储器;其他的指令经过处理器中的内部寄存器操作);(ii)多数指令的单周期执行;(iii)固定长度易于解码的指令格式;(iv)处理器和编译器的统一性,以及较简单和更易于编写的一个编译器;(v)硬连线控制;(vi)较少的寻址模式;(vii)相对静态的指令格式;和(viii)流水线操作。RISC装入/存储体系结构如上所述,通过限制存取存储器而只是装入和存储指令,RISC处理器的装入/存储体系结构大幅简化了设备的操作;其他的操作是“寄存器到寄存器”。因此,典型的RISC处理器还使用大量的内部寄存器来处理这样的操作。以下说明一个简单的装入/存储的支持加法的运算运算a=b+c指令load r3,a 用来自源定位a的值装入寄存器3load r4,b 用来自源定位b的值装入寄存器4add r5,r3,r4加寄存器3和4,并在寄存器5中存储结果store e,r5 在目的地位置e存储寄存器5的内容如上例所示,原有技术的RISC通常是用一个中间寄存器(例如,r5)来保持整个装入/存储操作过程中到存储器的数据。由于大多数RISC处理器依靠这样的装入/存储机制来存取和修改存储器的值,当期望一种简单的存储器存取时指令的效率受损。寻址模式一种寻址模式是存取一个可以在任何地方被发现的操作数的一种方法。通常,操作数可以位于存储器中或一个CPU寄存器中或者它们可以是被定义在代码本身中的文字值。在微处理器中可能使用的寻址模式尤其包括,“隐含的”寻址,其中操作码规定操作数;“立即”寻址,其中指令本身包含操作数;“直接”寻址,其中操作数为一个存储器地址或寄存器目的地;“非直接”寻址,其中操作数规定期望操作数的地址;和“索引”寻址,其中添加或者说操作两个或多个值以得到操作数的地址。在上述列出的寻址模式中,“立即”寻址在一个RISC处理器中经常使用,因为在指令内立即包含操作数。如上所述,一个立即指令(通常由语法“imm”表示或它的语法派生)一般在指令本身中包含操作数。一个立即指令通常具有这样的操作数,一个文字值跟随一个特殊的字符比如“#”符号。操作数的格式可以变化。例如,指令可以具有如下的一个操作数$1234 ;操作数是文字值$1234Buffer;操作数是被附属到“Buffer”的文字值‘Y’ ;操作数是ASCII代码大写字母Y 短立即与长立即当使用立即寻址/数据时,在规定操作数的双亲指令字内可以频繁编码较小的数据字(通常少于指令字大小的的一半)。这种方法经常称为“短立即”寻址/数据;然而,这种方法明显限制了可在单一指令字内使用的可允许地址/操作数。相反,长立即寻址/数据需要多于一个的指令字,但去掉了许多与短立即方式相关的限制。寄存器编码RISC处理器内的寄存器紧密地依靠指令集,因为通过指令这些寄存器被频繁规定作为操作数,或可替换的用于产生关于操作数的地址。原有技术通常这样构成指令编码方案将指令全部位数中的一或二位用于表示立即操作数的用途,或者通过一种可替换的指令类型隐含立即操作数的用途,如下所示。通常利用一个固定的位集——或者利用其它情况下会用于描述一个源数据寄存器的那些位——在指令字中对立即数据进行编码。add r0,r1,r2 ;r0=r1+r2;寄存器-寄存器相加addi r0,r1,10 ;r0=r1+10;寄存器-立即相加这种方法符合试图最小化指令字和寄存器容量的趋势,从而减少了完成处理器设计需要的所要求的硅。然而,利用指令操作码来推断保持在指令内的立即数据减少了可用以编码指令的灵活性。例如,使用上述原有技术编码的方法,不可能有效的使用一个单一的指令产生多个长立即常数。此外,如果一个运算(比如一个减法)是不可交换的,并需要让立即数据表示成减法器或减数,就需要有指令的两个立即版本以及指令的寄存器-寄存器版本。图1a-1c示例了典型的原有技术的用于寄存器-寄存器、寄存器-立即和立即-寄存器指令的寄存器编码格式。使用指令字的一部分来编码立即数据,或者允许一个后面的指令字被全部用于立即数据以便可以允许编码更大范围的值,在这二者中常常不可能进行选择通常,原有技术的处理器不允许将所有立即数据的组合与所有指令的方式一起使用。使用指令字的一部分来编码立即数据,或者允许一个后面的指令字被全部用于立即数据以便可以允许编码更大范围的值,在这二者中常常不可能进行选择。在一个带有用户-可扩展指令集的处理器中,这就对一个程序员任何使用一个新指令设置了一个限制,尤其是如果新指令的功能是不可交换的。流水线操作流水线操作是一种技术,用于通过把处理器中运算的顺序分成片段来增加处理器的性能,当可能时这些片段能以并行方式有效地被执行。在一个典型的流水线处理器中,与处理器运算操作程序(比如加法,乘法,除法等等)相关的运算单元通常被“分段”,以便整个任意时钟周期内在该单元的一个给定的片段中执行操作的一个具体部分。因此,在任意给定的时钟周期这些单元可以在一个不同计算的结果上进行运算。作为一个例子,在第一时钟周期中两个数A和B被送到乘法单元10并由单元的第一片段12进行部分处理。在第二时钟周期中,来自A和B相乘的部分结果被送到第二片段14,同时第一片段12接收开始进行处理的两个新的数(比方说C和D)。最终结果是在一个初始启动周期之后,每个时钟周期由运算单元10执行一次乘法运算。从一个体系结构到另一个流水线的深度可以变化。在本文中,术语“深度”指的是在流水线中存在的分立阶段的数量。通常,带有较多阶段的一个流水线执行程序较快,但如果流水线的效果是明显可见的话,对于程序员来说编程也更加困难。大多数流水线处理器是三阶段(取指令、解码和执行)或四阶段(比如取指令、解码、操作数提取和执行,或者可替换的,取指令、解码/操作数提取、执行和写回),尽管可以使用更多的或更少的阶段。当对一个流水线处理器的指令集进行开发时,必须考虑几种不同类型的“冒险”。例如,为了争夺相同的资源(比如总线,寄存器,或其他的功能单元)从重叠指令中会出现所谓的“结构上的”或“资源争夺”的危险性,这一般利用一个或多个流水线阻塞来解决。在读/写冲突的情况下出现所谓的“数据”流水线危险,该冲突可以改变存储器或寄存器存取的顺序。“控制”冒险通常产生于在程序流中的转移或类似的改变。使用流水线结构通常需要以联锁来处理这些冒险。例如,考虑这种情况,即在一个早先流水线阶段中的一个跟随指令(n+1)需要来自一个后面阶段指令n的结果。解决上述问题的一个简单方法是通过一个或多个时钟周期延迟在指令解码阶段中的操作数计算。然而本文档来自技高网...

【技术保护点】
一种用于设计具有一个指令集的用户定制的数字处理器的方法,包括:接收与所述处理器的设计配置有关的用户输入;识别至少一个技术描述,以便用于产生所述设计;以及至少部分地基于所述用户输入和被识别的所述至少一个技术描述,而生成 所述处理器的至少一个定制的描述语言模型,所述模型具有作为所述指令集的一部分的所述扩展指令;其中,所述扩展指令利用短立即数据和长立即数据这两种数据作为源数据。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:P沃恩斯C格林汉姆
申请(专利权)人:ARC国际美国控股公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利