用于可合成流水线控制的方法及设备的制作方法

文档序号:6654711阅读:343来源:国知局
专利名称:用于可合成流水线控制的方法及设备的制作方法
技术领域
本发明涉及集成电路及其设计。
背景技术
近年来,集成电路处理器的设计已从独立的专用设计转变到支持更强联网能力和与竞争设计和传统平台的互操作性的设计。这与计算领域跟网络服务器计算机的重组相吻合,从而取代了传统流行的独立PC。
因此,提供具有最高独立性能的处理器不再是足够的。处理器必须适于处理手边的计算作业,这意味着高效响应处理调用。支持从不同厂商制造的各种不同设计的处理器而来的调用的处理器设计将是更胜一筹的,因为它将给予更大程度的互操作性。然而,在这样的设计之中,当无论或大或小、是服务器还是客户机的网络中处理器共享共同的设计特征时,将实现更高性能,正如2001年3月22日提交的共同未决的共有美国专利申请第09/815,554号中所述的,这里将其并入作为参考。这样的公共设计将理想地利用具有公共指令集及其子部分的公共体系结构、以及用于数据路径和寻址的公共设计。这样的设计还将理想地支持对图形数据进行服务或处理的作业的高执行速率。这样的设计将支持互操作性,同时提高共用设计的性能益处。
在设计用于这样目的的处理器时,需要有效率的处理器组织和设计方法。应当实现相对短的设计周期,而不考虑处理器大小以及处理器被设计支持的计算作业的大小。另一方面,在与传统独立处理器相竞争的水平上,每个处理器应当提供高性能。按照传统的设计方法,这些不同目标看似冲突,正如下面将描述的。
两个现有方法由现有技术提供以用于设计处理器合成设计和定制设计。这些设计方法对于处理器“核心”的设计来说具有特别的应用,这些“核心”即为除由集成电路(IC或“芯片”)提供的其他功能之外还提供处理器功能的这些芯片的单元。分类为芯片上系统(“SOC”)的集成电路具有处理器核心。
在合成设计方式中,如图1所示,可重用部件模块的库被预先开发,如S10处所示,该库可用来设计用于一定范围的时钟速度和目的的多样化的电路。这些可重用部件模块由相对高级的语言,例如寄存器传送级(“RTL”)描述来定义。然后设计者通过指定用于其中的部件模块来组装处理器设计,如S12处所示。编译器由RTL描述中指定的部件模块来合成电路布局。合成设计提供了在设计周期中修改处理器的实质特征,比如指令集、流水线宽度和高速缓存大小的灵活性。这样的修改是通过在RTL描述中指定不同的可重用部件模块集来进行的,如S14处所示。合成设计还允许设计在相对短的设计周期内得以创建和准备好进行(在硬件前阶段)。
另一方面,定制设计是艰苦的,需要相对长的设计周期。如图2所示,在处理器的完全定制设计中,处理器的单元是从底层向上设计的,包括所有功能模块,如S20处所示。电路被手工设计以满足特定性能标准,例如支持最小时钟频率、消耗低于特定限制的功率或者占据低于特定限制的集成电路面积。功能模块之间的布局和布线也被仔细地设计来满足这些性能标准,如S22处所示。由于对设计的每个单元给予了更大关注以及对于满足性能标准的特别强调,当定制设计处理器时,对比于合成地创建设计,能够实现高至四倍的性能。另一方面,对于定制设计的修改面临着困难,因为它们需要再次从底层向上地重新设计处理器,如S24处所示。

发明内容
按照本发明的一方面,提供一种设计集成电路处理器的方法,其包括识别将为处理器建立的定制设计的可重用部分。该处理器被定制设计为满足特定性能标准。这样的定制设计包括定制设计用于可重用部分的宏、指定每个宏的实例数量、提供用于宏的互连、以及组装定制设计的宏。
按照本发明的另一方面,提供一种集成电路处理器,其包括多个单元,其至少一些具有定制设计。具有定制设计的至少一些的这些单元是可重用的,使得处理器的结构是按照每个可重用单元的实例数量和可重用单元的互连来确定的。


图1是图示按照现有技术的合成设计方法的流程图。
图2是图示按照现有技术的定制设计方法的流程图。
图3是图示按照本发明实施例的处理器结构的方框图。
图4是图示按照本发明另一实施例的处理器结构的方框图。
图5是图示按照本发明又一实施例的处理器结构的具体方框图。
图6是图示按照本发明实施例的处理器的单线程指令流水线单元的结构和功能的图。
图7是图示按照本发明实施例的处理器的逐周期多线程指令流水线单元的结构和功能的图。
图8是图示按照本发明实施例的设计方法的流程图。
图9是图示按照本发明的设计方法实施例而组装的处理器结构的具体方框图。
具体实施例方式
现在将参照图3至9来描述本发明的实施例。
图3是图示通过按照本发明实施例的方法设计的处理器10的结构的方框图。如图3所示,该处理器包括三个基本单元,本地存储器(LS)12,功能单元14和提交逻辑16。本地存储器12用于至少缓冲数据以及优选地缓冲由功能单元14执行的指令。功能单元14对具有OP位宽的操作数执行指令。功能单元14所能处理的OP位数因处理器10的设计而变。在特定实施例中,OP位数是2的幂的整数倍,例如4、8、16、32或64位。功能单元14对于从本地存储器12向其提供的操作数执行指令。
提交逻辑16用于将排队执行的指令转换成操作功能单元的信号14。例如,用以在功能单元中将两个操作数相乘的指令被转换成操作序列,其每个操作均将一个操作数左移由第二操作数的位确定的位置数。随后,移位操作的结果被进位相加在一起。
图4图示了通过按照本发明实施例的方法设计的另一处理器20的结构。与图3所示处理器10相似,处理器20包括提交逻辑26,用于将指令转换成用以通过功能单元控制其执行的信号。然而,与处理器10不同,处理器20包括多个本地存储器(LS)22和多个功能单元24。每个本地存储器22至少将操作数提供给相应功能单元26,并且优选地提供将在功能单元24中对这些操作数执行的指令。尽管优选地实施于单个集成电路中,但是处理器20的本地存储器22和功能单元24是从处理器10的设计中重用的设计单元或组件。因此,例如,处理器10可包括对16位宽操作数执行指令的功能单元、以及提供对16位宽操作数的访问的本地存储器和处理64位宽指令的提交逻辑。在此情况下,处理器20可包括四个这样的功能单元24和四个这样的本地存储器,如图所示,每个处理16位宽操作数,和处理64位宽指令的提交逻辑。在此情况下,指令能够被排队以便针对四个不同操作数流来执行,诸如通过逐周期的多线程执行所能提供的(如下文将更为完整所述)。替代地,当操作数被排队于各本地存储器22中并且由相同指令来操作时,经过处理器20的数据路径的宽度以系数4潜在地增大。
图5是图示按照本发明实施例设计的处理器100的结构的更具体方框图。如图5所示,处理器100包括功能单元102和与其相连的高速缓存104,该高速缓存104用作为数据的储存库,这些数据是由功能单元102执行的运算的操作数和结果。处理器100还包括指令缓冲器106,来自于它的指令被传至流水线108,以便由提交逻辑110转换成用以操作功能单元102的信号。如图5中进一步所示,处理器100经过高速缓存104和指令缓冲器106接口至存储器101。存储器101存储用于处理器100的执行的数据和指令。处理器100还存储执行指令的结果。此外,如果这些指令包含任何在执行之前需要解释的语句,则存储器101可用来存储作为由处理器100解释这些语句的结果而产生的进一步指令。
在图5所示的实例中,高速缓存104的通向和来自处理器的数据路径具有一个双字的宽度(64位)。指令流水线108容纳具有双字宽度(宽度是64位)的指令。在实施例中,高速缓存容纳多至1024个此类双字。
指令缓冲器106保存从存储器101读取的指令,以放置于指令流水线108的队列中。在本发明的实施例中,指令缓冲器106保存适度数量,例如32个指令,每个指令具有一个双字的宽度。根据处理器100支持的特定应用的需要,能够提供具有更小或更大容量的指令缓冲器。优选地,指令缓冲器106提供先入先出(FIFO)操作,用于排队从存储器101读取的指令以便输出到指令流水线108,但是其也提供随机访问,以允许指令不以缓冲的次序来执行,用于分支转移操作。
指令流水线108将来自指令缓冲器中可用指令的一定数量的指令进行排队以便执行,在图5所示实例中该数量是6。指令流水线108支持传统的单线程方式,其中流水线中的每个指令(INSN1、INSN2、INSN3等)来自于单个指令流,并且依次地跟在该指令流中最后的在前指令之后。
指令流水线108的深度主要由特定处理器结构的要求来确定。如图所示,排队六个指令的指令流水线108需要六个指令周期以处理每个指令,以便转换成操作该运算单元102的信号。这些周期的一个或多个一般用来校查指令对更早执行的指令的结果的相关性。如果发现指令具有这样的相关性,则更早执行的指令的结果必须预备好以便从高速缓冲取回,或者如果在高速缓存104中不可得到,则从存储器101取回。
有时,执行该流中较早指令的结果在相关性校查时在高速缓存或存储器101中不可得到,这些结果被置于高速缓存104和存储器101之间中的“某处”。换句话说,这些数据处于从高速缓存或存储器传递到另一方的进程中,任一存储位置在该特定时间点都不允许访问数据。此时,继续下去的选择很少。按照一种选择,功能单元102通过执行一连串等待周期来暂停,直至数据在高速缓存中变得可用并且被提供到功能单元102以用于指令的执行。这是不合需要的,因为许多处理器周期会被浪费在等待数据就绪上。另一选择是将当前指令流挂起,处理器100立即开始加载另一指令流到缓冲器106中和到指令流水线108中用于执行。然而,该选择也是不合需要的,因为需要许多周期用于加载指令到缓冲器106中和准备用于指令流水线108中的执行。
图6图示了指令流水线208中保存的指令的执行序列。如图6所示,流水线208中的每个指令由线程号T1标识。线程号T1标识已从存储器取回的有关指令的特定序列。如本领域技术人员所普遍理解的,线程的每个指令常常涉及与最后的在先指令相同的工作项,使得该工作项通过依次执行特定线程中的指令来进行。图6图示了这样的情况,其中特定时间点的流水线208中的所有指令是单个线程T1的顺序排序的指令。在此方案中,有时候特定线程的执行可停止,另一线程的执行将就地开始。除了线程之间的这些偶然变化之外,图6中所示模型代表了这样一种顺序,其中线程的指令由具有单线程指令流水线208的处理器来执行。换句话说,线程T1的指令的执行被依次顺序地进行。
然而,如上所述,这样的执行由于各种原因而不是期望的。如果例如指令210的指令对在先操作的结果具有相关性,则该结果在该指令210就绪执行时必须可用于功能单元102(图5),否则无法执行指令210。结果,当这样的相关性出现时,通常的响应是将线程T1的当前指令流从指令流水线208去除,并且开始以另一线程T11(未示出)的指令填充流水线208。由于指令流水线208具有深度8,所以用手重新加载流水线的等待时间是8。相应地,至少八个周期在线程之间这样的转变期间被浪费于重新加载指令流水线。
图7图示了指令流水线308,其大大地减少了上述问题的影响。如图7所示,流水线308中等待执行的指令属于不同线程。尽管每个线程的指令在每个线程之内顺序排序,但是每个线程的指令被排队,使得在每个相继指令周期上,执行属于不同线程的指令。因此,在第一周期中,属于线程T1的指令310被执行。随后在第二周期中,执行来自线程T2的指令312。在第三周期中,属于线程T3的指令314被执行,之后在第四周期中执行属于线程T4的指令316。这里所述将不同线程的指令流水线化以便执行的方式被称为“逐周期多个线程(或‘多线程’)”。
逐周期多线程对处理器的效率有益,因为它使得指令的执行更不易受到相关性的影响。由于在指令流水线308中有四个等待执行的指令线程,关于特定线程T3的指令314的未满足的相关性(例如高速缓存命中失误)不导致其他线程T1、T2和T4的执行被挂起。关于特定线程T3的等待状态也不会打断其他线程的执行。线程T1、T2和T4的执行原样继续。
而且,逐周期多线程减少了用于执行每个线程的指令的等待时间。如图7所示,在深度为8个指令、其中针对四个线程提供多线程的指令流水线中,针对每个线程的等待时间仅为2,因为在任何时间点每个线程有不多于2个的指令在指令流水线308中等待执行。而且,当新线程取代了具有未满足相关性的线程而加载到指令流水线308中时,最多仅两个而不是八个周期被浪费。
注意,指令流水线可以是任意长度,任意数量的线程可被交错于如前所述支持逐周期多线程的指令流水线中。
由于前述原因,这样的处理器设计方法是非常期望的,其在可与完全定制设计相匹敌的水平上进行,但是具有改变特定可重用单元的数量和互连的灵活性,其随需地具有以逐周期多线程方式操作的能力。
图8是图示按照本发明实施例设计处理器的方法的流程图。图9是图示按照这样的方法而设计的处理器结构的方框图。如图8所示,这样的方法中的第一步骤是识别处理器设计的可重用部分,如S30处所示。处理器包括重复的单元,尽管这样的单元在其与其他单元的特定互连方面是不同的。
参见图9,通过这里公开的方法而设计的处理器400的结构按照在步骤S30中识别的支持其各种功能的可重用单元的数量而有所变化。因此,处理器400的设计包括高速缓存404,其具有多个可重用高速缓存单元CE 1、CE 2、...CE Z。高速缓存的大小由该设计中所用的高速缓存单元的数量来确定。每个高速缓存单元代表整体高速缓存的相对大的部分,使得高速缓存单元有资格作为一个“宏”。例如,具有16K双字大小的高速缓存可具有16个高速缓存单元,每个具有1024个双字大小。
下一步骤,本方法的S32(图8)是定制设计处理器,包括组成处理器的宏。相应地,在每个这样的宏内,布局和布线通过手工来艰难地设计,以便满足具体的性能标准。这样的性能标准包括实现目标时钟频率,其可被认为超过时钟频率的下限。性能标准还可包括满足对集成电路面积的目标要求,其可被认为满足对于集成电路面积的上限。该步骤与参照图2如上所述的定制设计方法相似,不同的是该设计方法现在要求可重用单元可作为待组合的宏,并且作为整体在该设计中共同起作用。
在完成每个宏的设计,并且确定需要多少这样定制设计的宏的实例以支持特定功能之后,用这些宏组装该处理器设计。这时,布线优选地被定制设计用于将宏的实例彼此互连,互连到设计的其他宏以及其它单元。以此方式,处理器被设计成符合严格性能标准,该性能标准甚至可与按照参照图2如上所述的方法来设计处理器时的性能标准一样严格。
随后,如图8中进一步所示,步骤S34规定指定通过改变该设计中所用的每类宏的实例的数量及其互连来修改处理器设计。这样就提供按照本发明实施例的设计方法的灵活性和多功能性。
从此方法得到的处理器结构可参照图9来更好地理解。在所示实施例中,除通过指定高速缓存单元宏CE1、CE2、...CE Z的实例数量来组装的高速缓存404之外,处理器的其他实质特征由其他类型的宏实例的数量来确定。因此在实施例中,指令缓冲器406是通过选择指令缓冲器宏实例的数量来设计的,用以提供缓冲器INSN BUF0、INSNBUF1、...INSN BUFX,每个缓冲器为特定线程缓冲指令流。换句话说,提供多个指令缓冲器,每个指令缓冲器以轮循方式输出指令到连接至指令流水线408的指令总线上。多个指令缓冲器INSN BUF1、INSN BUF2等、指令流水线408和提交逻辑410的组合形成处理器400的指令流水线单元412。包括多个指令缓冲器和通向指令流水线408的公共输出的此类结构允许进行按照逐周期多线程的操作,参照图7如上所述。然而这里与参照图2如上所述的方法不同,没必要在开始设计工作之前预先确定指令缓冲器的数量。由于每个宏被设计为可重用的,处理器的功能单元的大小和性能是按照每类宏的数量和互连来确定的。此外,指令流水线408的深度M和宽度N优选地按照支持指令流水线408的功能的宏的实例数量来确定。
此外,处理器400的功能单元402的性能是按照所提供的功能单元宏的实例FC1、FC2、...FCY的数量来确定的。功能单元宏的每个实例优选地实施功能单元14或24的功能,参照图3和4如上所述。换句话说,功能单元的每个宏实例具有执行线程的功能。因此,对于具有数量为Y的功能单元(每个处理OP位的操作数)的处理器结构而言,能够实现两个益处。第一,对于多至Y个指令流可进行多线程。第二,当功能单元作为一个单元来共同操作时,具有多至Y*OP宽度的操作数能够在一个周期中被处理。
处理器的功能结构中的具体变形在2004年4月22日提交的共有美国临时申请第60/564,682号中被描述,这里并入此申请作为参考,并且将其副本作为附件A附带于这里。
关于设计方法和处理器结构的前面描述强调了设计不同尺寸和性能处理器的灵活通用方式,然而它们拥有共同的设计特征和适于满足具体的性能标准。
尽管已经参照特定实施例在此描述了本发明,但是应当理解这些实施例仅说明本发明的原理和应用。因此应当理解,对于说明性的实施例可做出大量改型,并且在不脱离如所附权利要求限定的本发明的精神和范围的情况下,可得到其他方案。
权利要求
1.一种设计集成电路的处理器的方法,包括识别将为处理器建立的定制设计的可重用部分;定制设计所述处理器以满足特定性能标准,包括定制设计用于所述可重用部分的宏;指定每个宏的实例数量;提供用于所述宏的互连;以及组装所述定制设计的宏。
2.如权利要求1所述的方法,其中所述宏包括具有指令流水线功能的第一宏,其中所述定制设计所述处理器的步骤包括设计指令流水线单元,其包括选择所述第一宏的实例的数量。
3.如权利要求2所述的方法,其中所述设计所述指令流水线单元的步骤包括提供多个指令流缓冲器,每个指令流缓冲器均能够缓冲与至少一个其他所述指令流缓冲器中缓冲的指令流不同的指令流,以及将所述多个指令流缓冲器互连至所述指令流水线单元,使得所述指令流水线单元能够提供逐周期的多线程。
4.如权利要求1所述的方法,其中所述宏包括具有高速缓存功能的第二宏,其中所述定制设计所述处理器的步骤包括设计所述处理器的高速缓存,其包括选择所述第二宏的实例的数量。
5.如权利要求4所述的方法,其中所述高速缓存的大小是按照所述第二宏的所述实例数量来选择的。
6.如权利要求1所述的方法,其中所述宏包括具有线程执行功能的第三宏,其中所述定制设计所述处理器的步骤包括设计所述处理器的指令执行单元,其包括选择所述第三宏的实例的数量。
7.如权利要求6所述的方法,其中能够由所述指令执行单元同时执行的线程的数量是按照所述第三宏的所选实例数量来确定的。
8.如权利要求1所述的方法,其中所述特定性能标准包括时钟频率的下限。
9.如权利要求1所述的方法,其中所述特定性能标准包括集成电路面积的上限。
10.如权利要求8所述的方法,其中所述处理器的所述定制设计包括手工设计所述处理器的布局。
11.如权利要求8所述的方法,其中所述处理器的所述定制设计包括手工设计所述处理器的布线。
12.一种集成电路处理器,包括多个单元,其至少一些具有定制设计,至少一些所述单元具有可重用的定制设计,使得所述处理器的结构是按照每个所述可重用单元的实例数量和所述可重用单元的互连来确定的。
13.如权利要求12所述的处理器,其中所述可重用单元包括具有指令流水线功能的单元,其中所述处理器的指令流水线单元的结构是按照具有指令流水线功能的每个所述单元的实例的数量来确定的。
14.如权利要求13所述的处理器,其中所述指令流水线单元包括多个指令流缓冲器,每个指令流缓冲器能够缓冲与至少一个其他所述指令流缓冲器中缓冲的指令流不同的指令流,所述多个指令流缓冲器互连至所述指令流水线单元,使得所述指令流水线单元能够提供逐周期的多线程。
15.如权利要求12所述的处理器,其中所述可重用单元包括具有高速缓存功能的单元,其中所述处理器的高速缓存的结构是按照具有高速缓存功能的每个所述单元的实例数量来确定的。
16.如权利要求15所述的处理器,其中所述高速缓存的大小是按照具有高速缓存功能的所述单元的所述实例数量来确定的。
17.如权利要求12所述的处理器,其中所述可重用单元包括具有线程执行功能的单元,其中所述处理器的指令执行单元的结构是按照具有线程执行功能的每个所述单元的实例数量来确定的。
18.如权利要求17所述的处理器,其中能够由所述指令执行单元同时执行的线程的数量是按照具有线程执行功能的所述单元的实例数量来确定的。
全文摘要
提供一种设计集成电路处理器的结构和方法,其包括识别将为处理器建立的定制设计的可重用部分。该处理器被定制设计为满足特定性能标准。这样的定制设计包括定制设计用于可重用部分的宏、指定每个宏的实例数量、提供用于宏的互连、以及组装定制设计的宏。
文档编号G06F17/50GK1771486SQ200580000188
公开日2006年5月10日 申请日期2005年4月21日 优先权日2004年4月23日
发明者山崎刚 申请人:索尼计算机娱乐公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1