优化的处理器和指令对准的制作方法

文档序号:6621728阅读:130来源:国知局
专利名称:优化的处理器和指令对准的制作方法
技术领域
本发明涉及处理器。在一个例子中,本发明涉及用于优化处理器和提供灵活的指令对准的方法和设备。
背景技术
常规处理器被配置来支持多种指令。在许多情况中,处理器电路被配置来执行特定的指令。指令往往用特别配置的子电路来依次处理。在一种情况中,一种特定类型的指令,转移指令,允许通过在转移目标地址跳转到非顺序指令来改变程序执行流。专门的电路往往被提供来计算转移指令跳转操作的目标地址。
然而,有效地执行用于不同类型指令的计算机理是有限的。在一个例子中,专门的子电路被配置来特别地计算多字节对准的转移目标地址。然而,专门的子电路往往不被再用于其它类型的指令。
用于有效优化处理器核心的机理是有限的。因此,希望提供改进的方法和设备以用于优化处理器和处理器电路的实现。在某些情况下,对准的限制可以被放宽来进一步优化处理器。

发明内容
用于优化处理器核心的方法和设备被提供。公共的处理器子电路被用来执行对各种不同类型指令的计算,包括转移和非转移指令。即使被支持指令是多字节或字对准的,增加跨越不同指令类型的计算的通用性也允许转移指令跳转到字节对准的存储器地址。
在一个实施例中提供了一个处理器。该处理器包括多个寄存器和电路。电路被配置来处理与包括转移和非转移指令的指令集相关的指令。每个指令都具有多字节的长度。指令在多字节对准的地址是可访问的。多字节对准的转移指令可操作来访问在字节对准的地址中的指令。
在另一个实施例中提供了一个处理器。该处理器包括多个寄存器和电路。电路被配置来处理与指令集相关的转移和非转移指令。转移指令和非转移指令包括一个立即字段(immediate field)。公共的子电路被用来处理与一个或多个转移指令和一个或多个非转移指令相关的立即字段。
在另一个实施例中提供了一个用于执行指令的方法。与地址相关的转移指令被解码。转移指令具有一个相关的操作码和一个立即值(immediate value)。转移目标地址用立即值来计算。转移目标地址通过使用公共子电路来确定。公共子电路可操作来计算字节对准的地址。公共子电路还被配置来执行非转移操作。跳转被执行到转移目标地址。转移目标地址是多字节对准的。
本发明的这些及其它特征和优点将在以下本发明的说明和附图中更详细地给出,其通过举例的方式说明了本发明的原理。


本发明可以通过参考结合附图的下列说明来最好地理解,其说明本发明的特定实施例。
图1是一个处理器的示意图。
图2是非转移指令的一个示意图。
图3是转移指令的一个示意图。
图4是使用公共子电路来执行的非转移指令的一个示意图。
图5是使用公共子电路来执行的转移指令的一个示意图。
图6是指令处理的一个流程图。
图7是可编程芯片的一个示意图。
图8是互连架构(interconnection fabric)的一个示意图。
图9是用于实现可编程芯片的技术的一个示意图。
图10是描述计算机系统的一个示意图。
具体实施例方式
现在将详细说明本发明的一些特定实施例,其中包括发明人构思用于执行本发明的最佳模式。这些特定实施例的例子在附图中被说明。虽然本发明结合这些特定实施例被描述,然而应当理解这不意味着将本发明限制于这些所述的实施例。相反,其意图覆盖包括在附加权利要求所定义的本发明的精神和范围内的替换、修改和等效物。例如,本发明的技术将在特定的处理器和存储器环境中来描述。
然而应当指出,本发明的技术可以被应用于各种类型的设备。在下列说明中,为了彻底理解本发明而阐明了大量的细节。本发明可以脱离所有的这些细节或其一部分而被实践。在其它情况中,为了避免不必要地模糊本发明而对熟知的处理操作不作详细描述。此外为了清楚起见,本发明的技术和机理有时将用单一的形式来描述。然而应当指出,除非另外提示,一部分实施例可以包括技术的多个反复操作或机理的多个实例化。例如,处理器被用于各种环境。然而应当理解,在本发明的范围内也可以使用多个处理器。
常规处理器被配置来支持多种指令。一些处理器支持通用指令集,比如精简指令集计算(RISC)指令集、复杂指令集计算(CISC)、或超长指令字(VLIW)指令集。其它诸如数字信号处理(DSP)处理器或视频加速器之类的更专门的处理器可以支持更专门的指令集。典型的处理器将基于指令类型和接收的相关联的参数来执行操作。例如,处理器可以执行随后是诸如载入和存储之类的存储器存取指令的加法指令序列。
指令集可以包括各种各样的指令,其中包括诸如无符号加法或无符号减法之类的算术指令,诸如逻辑与和逻辑或之类的逻辑指令,诸如载入字或存储字之类的数据传送指令,诸如等于则转移或不等于则转移之类的转移指令以及跳转指令。一些处理器体系结构允许指令集中的指令改变长度。例如,一些指令可能是16位长度的指令,而其它的指令是32位长度。然而,其它体系结构使用具有固定长度的指令。使用只包括固定长度指令的指令集极大地简化了指令集的实现。
简单性在许多情况中产生效率。因为指令是固定长度的,所以指令可以用特定的存储器地址来对准。例如,指令存储器以字节单元来编址。在任何字节地址都具有起始地址的任何指令在此称之为字节对准的指令。具有起始地址是字节地址大于1的整数倍数的任何指令在此称之为多字节对准的指令。例如,多字节对准的指令的特定情况是字对准的指令。字对准的指令具有每隔四个字节对准的起始地址。
从而,指令存储器中的任何字对准的指令都将起始于4字节、8字节、12字节、16字节等等的地址。因为指令是字对准的,所以诸如转移指令之类的一些指令只能跳转到特定的字对准的地址。诸如等于则转移或不等于则转移指令之类的转移指令允许通过跳转到在转移目标地址处的非顺序指令来改变程序的执行流。在某些例子中,转移目标地址作为嵌入在转移指令中的偏移和转移指令地址的函数来计算。在其它例子中,转移指令可能是一个给定的绝对地址。常规处理器使用专门的子电路来计算转移目标地址。专门的子电路通过假定转移目标地址是多字节对准的或字对准的来确定转移目标地址。
本发明的技术和机理认识到,使用专门的子电路来确定多字节对准的或字对准的转移目标地址是低效率的。通过增加跨越不同指令类型的计算通用性,本发明的技术和机理最小化硬件成本并最大化性能。例如,用于执行载入或存储指令的子电路也被用于执行转移指令。通过使用公共的子电路,硬件成本由于相同的子电路可以跨越不同的指令类型被再用而被减少。对于非公共的计算不需要使用专门的子电路。减少处理器中的电路数量通常允许增加处理器频率和性能。
在一个例子中,本发明的技术允许转移目标的有效计算。在典型的情况中,计算转移目标涉及确定与转移指令相关的立即字段的符号扩充(sign extended)值。处理器已经具有其它的使用相同立即字段的符号扩充值来执行计算的非转移指令。然而,多字节对准的问题通常阻止使用相同的子电路来执行两种类型的指令。通过选择将以字节出现的转移偏移,用于对非转移指令执行立即字段的符号扩充的相同子电路可以被再用于转移指令。
允许子电路再用于不同的指令类型同时也有其它的好处。通过再用子电路,提供了指令集的变化支持。使用本发明的技术和机理,新的指令可以被增加并得到灵活的处理。例如,当诸如16位指令之类的较小指令被引入32位指令集时,对准的限制一般被简化来匹配最小指令的大小。使用本发明的技术和机理,即使新的指令不是多字节对准的,转移指令也能够跳转到这些指令。例如,如果指令集中的指令先前被字对准,新指令可以是字节对准或者半字对准,并且转移指令将仍然能够跳转到适当的存储器单元。
如果不使用本发明的技术,则现存的转移指令将不得不被改变从而破坏兼容性,或者新的转移指令将不得不被增加以支持较小指令的对准的限制。通过增加一整套新的转移指令,不得不引入的附加的子电路,潜在地增加了硬件成本。一些常规的处理器使用多字节对准的指令。许多常规处理器都被配置来支持较小的指令。在许多情况下,新的转移指令被简单写入来处理这些特定的较小指令。常规的处理器从而与不同的转移指令群放在一起。一个转移指令群处理16位对准的指令。另一个类似的转移指令群处理8位对准的指令。常规处理器中的这些多余的转移指令群效率非常低。
图1是被配置来处理指令集的一个处理器示意图。处理器101包括有寄存器111、寄存器113和寄存器115的寄存器组。处理器101还包括用于处理各种不同指令的电路131。电路131包括子电路141。用于执行指令集中指令的处理器电路的任何部分在此称之为子电路。处理器101被连接到具有存储器行(memory line)153-161的存储器151。应当指出,处理器101还可能具有其它配置并包括其它未示出的元件,比如与指令高速缓存、数据高速缓存、以及存储器控制器。在典型的例子中,处理器依次从存储器读取指令并执行这些指令。指令可能涉及对数据进行操作,该数据也是从存储器载入并被放置于寄存器中以用于更加有效的访问。执行诸如算术操作之类的操作涉及到使用处理器101内特定的硬件。转移指令可能涉及使用处理器101内的另一个硬件块。
在一个极度简化的例子中,每个指令用处理器101内的不同子电路来处理。例如,逻辑“与”操作可以使用子电路141、寄存器111以及指令中提供的特定值而被执行。指令中用于提供特定操作的执行信息的参数在此称之为立即值。在某些情况下,立即值在先前的指令中从存储器中获得。
根据本发明的各种不同实施例,转移指令允许处理操作序列来移动到不同的多字节对准的存储单元。在一个例子中,指令是字对准的。转移指令允许转移到特定的字对准的地址。然而不允许转移到其它的地址。应当理解,通常对多字节或字对准的存储单元的限制对准允许访问范围更广的存储器地址。更特别地,有限位数可以用来存储与转移相关的偏移。在一个简化例子中,偏移的3位或八个不同值被提供。如果没有使用多字节对准,则转移目标地址在存储空间中被限制在三比特的八个字节的范围中。然而,如果使用了字对准,则偏移被乘以4。转移目标地址的范围现在被扩大为5位的范围或存储空间中的32个字节。在这个例子中,目标地址仍然只能在18个存储单元中,然而代替被限于8字节的范围,8个特定的存储单元被遍布32个字节的范围。
从而,许多处理器结构使用多字节对准来扩充转移目标地址的范围。包括转移指令的潜在目标地址的任何地址范围被称为转移目标地址范围。在许多处理器和专用集成电路中,处理唯一指令的加法逻辑和子电路比在可编程芯片中处理唯一指令的加法逻辑更廉价。许多可编程器件中的逻辑很受重视,因此本发明的技术认识到即使转移目标地址的范围被减小,再用子电路以用于处理不同类型的指令也是特别有益的。
图2是常规指令的一个示意图。根据各种不同的实施例,指令指定转移指令201的操作码、空字段203和205、以及立即值207。根据各种不同的实施例,对于指令中32比特的总数,用于转移指令201的操作码是6个比特,空字段203和205每个都是5个比特,而立即字段207是16个比特。根据各种不同的实施例,指令是字对准的。当处理器到达特定的转移指令时,它确定使用转移目标存储器地址应该被找到的偏移。在一个例子中,通过将转移偏移乘以4来计算转移目标地址,从而确保字对准和增加转移目标地址范围。计算结果然后被符号扩充到指令地址中的比特数。符号扩充值然后被添加到转移指令地址或程序计数器。在一个例子中,计算如下所示转移目标=程序计数器+符号扩充(立即字段*4)因为转移偏移的单位是字,而且程序计数器和转移目标的单位是字节,所以立即值被乘以4。
图3是常规算术指令的一个示意图。根据各种不同的实施例,指令包括整数加操作码(opcode)301、源寄存器303、目的寄存器305、和立即字段值307。根据各种不同的实施例,对于指令中32比特的总数,用于整数加指令301的操作码是6比特,寄存器字段303和305每个是5比特,而立即字段307是16比特。在一个例子中,整数加指令取在源寄存器字段303中识别的寄存器值,将其添加到立即字段307的符号扩充值,并将计算结果写入目的寄存器字段305所指定的寄存器。在一个例子中,立即字段从16比特被符号扩充到32比特,或者说是一个指令长度。根据各种不同的实施例,整数加指令被计算如下目的寄存器值=源寄存器值+符号扩充(立即字段)尽管转移指令和整数加指令对立即字段值执行符号扩充操作,然而转移指令在执行符号扩充之前还是将立即字段值乘以4。乘法运算被执行以便允许字对准和扩充的目标转移地址范围。然而,通过要求在符号扩充之前执行乘4的乘法运算,需要不同的子电路布线(route)来执行该操作。在许多情况中,一个子电路被特别配置用于符号扩充立即字段,另一个子电路被特别被配置用于符号扩充乘以4的立即字段。在某些例子中,乘以4的乘法运算通过在基础的符号扩充子电路上使用附加的多路复用器和移位器来执行。然而,附加硬件或附加子电路的成本昂贵,尤其是对于可编程芯片。因此,本发明的技术和机理允许子电路再用于两种类型的指令。
即使许多指令都是多字节的大小并且需要被对准在多字节地址上,本发明的技术和机理还是允许转移指令的单位是字节。
图4是允许字节对准的地址的转移指令的一个示意图。字段401和403保持为空。用于转移指令的操作码被包括在字段407中。转移偏移被包括在立即字段405中。然而,不同于常规的转移指令,立即字段值被以字节为单位保持而不是以字为单元。例如,常规指令将指示偏移的大小是32字。32的值将被保持在常规转移指令的立即字段中。乘以4的乘法运算将指示偏移大小是128字节。根据各种不同的实施例,128而不是值32被保持在立即字段405中。因为128的值被保持,所以不需要乘法运算或其它换算。通过将偏移符号扩充到指令地址中的比特数并将其加到转移指令地址或程序计数器,目标地址被计算出来。根据各种不同的实施例,符号扩充的偏移被加到程序计数器值的变型上,比如程序计数器加上4。在一个实施例中,该计算如下所示转移目标=程序计数器+符号扩充(立即字段)因为转移的单位是字节并且程序计数器值和转移目标的单位是字节,所以不需要乘以4。
图5是典型的非转移指令的一个示意图。非转移指令包括源寄存器字段501、目的寄存器字段503、以及立即值字段505、以及诸如整数加指令507之类的操作码。根据各种不同的实施例,整数加指令取源寄存器字段501所指定的寄存器值,将其加到立即字段505的符号扩充值上,并把计算结果写入目的寄存器字段503指定的寄存器。在一个实施例中,计算如下所示目的寄存器值=源寄存器值+符号扩充(立即字段)因为转移和非转移操作都执行对立即字段值的符号扩充操作,所以相同的子电路可以被再用于两种类型的操作。使用相同的子电路允许有效利用硬件资源并减少处理器核心的大小。
图6是用公共子电路来处理转移和非转移操作的一个技术流程图。在601,源寄存器值被获得。在603,用公共的子电路来执行对源寄存器值和立即字段值的操作。在一个例子中,所使用的公共子电路是用于执行符号扩充操作的电路。在605,计算结果被写入目的寄存器。在611,与程序计数器相关的值被获得。在613,用603中示出的相同子电路对程序计数器和立即字段值执行“与”操作。在615,在字节对准的地址上执行转移。应当指出,尽管图6被用来描述非转移和转移指令的含蓄的例子,但是许多其它的例子和配置也是可能的。此外,执行指令可能涉及诸如载入和存储之类的各种其它的操作,为清楚起见就不在此描述了。
尽管本发明的技术和机理可应用于各种不同处理器,包括通用处理器、视频加速器、密码学加速器、数字信号处理器、微控制器等等,然而本发明的技术和机理尤其可应用于可编程芯片和可编程芯片系统上的软核心处理器。可编程芯片上的逻辑往往是非常珍贵的,因此核心大小的减少往往是特别有益的。
图7是可用于实现本发明技术的可编程芯片上的一个系统实例的示意图。该系统包括处理器核心、硬件加速器、外围设备和外围接口。处理器核心大小可以通过再用子电路来执行转移和非转移操作而被优化。外围设备和外围接口在此称之为元件。可编程芯片上的系统包括处理器核心701和以太网元件703以及外部元件UART 711、PIO 713、定时器715和数据存储器717。在某些例子中,以太网元件103用数字信号处理(DSP)核心、密码学加速器或视频处理器来替代。应当指出,系统可以包括芯片内存储器717和芯片外存储器。在一个例子中,数据存储器717可以支持可变延时或固定延时访问。元件用互连架构707互连。用于连接系统中的元件的任何机理或逻辑在此称之为互连架构。在一个例子中,互连架构是总线。在另一个例子中,互连架构是从端仲裁架构。
可编程芯片使用不同类型的资源,其可以在不同分配中被互换地使用以便实现可编程芯片上的系统。在一个例子中,可编程芯片使用逻辑元件来实现可编程芯片上的每个不同的元件。
逻辑元件一般可以用诸如反熔丝、静态RAM和EPROM之类的元件来实现。可编程芯片上的任何机理在此称之为逻辑元件,可编程芯片基于编程信息对已知数量的输入线执行操作来提供一个或多个输出。一些逻辑元件被实现为查阅表和用于执行输入线上的布尔操作的开关的组合。在一个例子中,逻辑元件包括能够实现任意4输入逻辑功能的16位SRAM查阅表(LUT),形成快速进位链和快速级联链的电路、寄存器和用于寄存器的预置/重置逻辑。
本发明的技术和机理允许系统在来自高级语言程序的可编程芯片上的实现。在一个例子中,可变延时和固定延时可以在使用常规总线结构的系统上被支持。
系统总线一般具有设置宽度(例如64比特、128比特)并且在任一时刻只允许一个主元件主动地使用总线。在常规系统中,在任何给定时间只有一个主元件可以访问给定从元件中的任何一个。以如下方式访问从元件的多个主元件在此称之为同时访问从元件,即,如果在相同的数据线上执行会导致数据比特冲突的方式。
在一个例子中,以太网元件正在访问从PIO。当以太网元件正在访问从PIO时,即使主流输出设备和外围接口都是可用的,处理器也不能经由外围接口访问SDRAM。
根据本发明的各种不同实施例,应当认识到在诸如芯片上的系统、可编程芯片上的系统,及其它计算机系统实现之类的某些应用中不再需要总线。使用硬件描述符语言(HDL)的诸如可编程逻辑器件(PLD)或现场可编程门阵列(FPGA)之类的器件在此称之为可编程芯片或可编程器件。替代实现复杂的总线共享方案而使用诸如拆分(splitting)之类的机理,总线本身可以被除去以提高系统性能。
根据特定实施例,应当认识到主元件和从元件不需要经由诸如总线之类的构造来布线。通过不经由总线来路由信号,流输出设备可以用更加有效的方式来实现。构成总线的常规数据和地址线不再是被争用的资源。因为在系统中连接到每个从元件的物理线数量可以被固定,所以代之以从元件成为争用的资源。此外,不使用总线增强了互连的灵活性。例如,以太网元件可以被分配各种端口来直接访问存储器,而存储器将成为唯一被争用的资源。
因此不再需要与计算机系统中所有的从元件相关联的系统总线仲裁器。作为替代,可以被多于一个主元件访问的从元件本身被分配个别的从端仲裁器。对应于可由多于一个主元件访问的特定从元件的仲裁器在此称之为从端仲裁器。在一个实施例中,在计算机系统中对于每个从元件都有从端仲裁器。在其它实施例中,有一个从端仲裁器用于系统中被选择的从元件。本发明的技术认识到,对高级语言程序的以太网元件支持可以通过使用从端仲裁而更有效和实际地提供在系统中。
图8是使用从端仲裁的一个系统例子的示意图,有时被称为从属侧仲裁,同时使用多个主元件或同时使用多个主方(master)。使用对应于可由多于一个主元件访问的个别从元件的个别仲裁器的系统在此称之为从端仲裁系统。从端仲裁系统不再需要总线或系统总线仲裁器,当第一主元件正在访问第一从元件时,它们阻止第二主元件访问第二从元件。根据各种不同的实施例,诸如外围接口825之类的从元件与从端仲裁器851相关联。然而,从元件UART 821和PIO 823不与任何仲裁器相关联。在一个例子中,从元件UART 821和从PIO 823只能由主CPU 813访问而不能由主以太网设备815访问。然而,从存储器元件825可以被主CPU 813和主以太网设备815两者访问。
根据各种不同的实施例,从端仲裁器851允许第一主元件在第二主元件访问系统中的第二从元件的同时访问系统中的第一从元件。例如,主以太网815可以经由从端仲裁器851访问外围接口825,同时主CPU 813访问从UART821。
通过允许CPU在诸如流输出设备或以太网元件之类的另一个主元件访问存储器的同时访问从元件,总线瓶颈可以被减少。通过使用同时的多个主元件结构还可以支持元件之间更直接的连接。
图9是可编程芯片上的系统实现的一个示意图。输入级901一般从用户接收选择信息以用于诸如处理器核心之类的逻辑以及诸如将在电子器件上实现的流输出设备之类的其它元件。在一个例子中,被接收的输入是高级语言程序的形式。发生器程序905创建逻辑描述并把该逻辑描述以及其它定制的逻辑提供给多种任何综合工具、布局和布线(place and route)程序、以及允许逻辑描述实现在电子器件上的逻辑配置工具。
在一个例子中,输入级901往往允许将被用于电子器件的元件选择和参数化。输入级901还允许可变或固定延时支持的配置。在某些例子中,提供给输入级的元件包括知识产权函数、强函数(megafunction)、和知识产权核心。输入级901可以是使用向导的图形用户界面以允许高效或方便地输入信息。输入级还可能是文本接口或读取诸如电子表格、数据库表或获取选择信息的示意图之类的数据文件的程序。输入级901产生一个输出,其包含被选择的各种不同模块的相关信息。
在典型的实现中,发生器程序905可以识别该选择并产生具有用于实现各种不同模块的信息的逻辑描述。发生器程序905可以是从用户输入的模块信息中创建诸如Verilog、Abel、VHDL和AHDL文件之类的HDL文件的Perl脚本。在一个例子中,发生器程序识别要加速的高级语言程序的一部分。其它代码被留下用于在处理器核心上执行。根据各种不同的实施例,发生器程序905识别指针并提供用于每个指针的端口。具有发生器程序能力的一个工具是可编程芯片内系统(SOPC)编制器,它可以从加州圣何塞的Altera Corporation获得。发生器程序905还向综合工具907提供信息以允许自动综合HDL文件。在某些例子中,逻辑描述直接由设计者提供。由用户选择的各种不同元件之间的挂钩(hookup)也由发生器程序互连。一些可得到的综合工具是可从俄勒冈州Wilsonville的Mentor Graphics Corporation获得的Leonardo Spectrum以及可从加州Sunnyvale的Synplicity Corporation获得的Synplify。HDL文件可以包括仅仅由综合工具可读的技术特定的代码。HDL文件在此也可以被传送到仿真工具909。
所属领域技术人员应当了解,输入级901、发生器程序905和综合工具907可以是单独的程序。单独的程序之间的接口可以是数据库文件、日志、或仅仅是程序之间传送的消息。例如,替代于向存储器写入文件,输入级901可以直接向发生器程序905发送消息从而允许发生器程序创建逻辑描述。同样地,发生器程序可以直接向综合工具提供信息而不是写入HDL文件。同样地,输入级901、发生器程序905以及综合工具907可以被集成到单个程序中。
用户可以选择各种不同的模块,集成的程序可以取得用户选择并以没有中间文件的综合后网表的形式来输出逻辑描述。用于描述将被实现在电子器件上的逻辑的任何机理在此称之为逻辑描述。根据各种不同的实施例,逻辑描述是诸如VHDL、Abel、AHDL或Verilog文件之类的HDL文件。逻辑描述可以在元件的用户选择和器件最终配置参数之间的处理的不同阶段中。根据其它实施例,逻辑描述是诸如电子设计交换格式输入文件(EDF文件)之类的综合后网表。EDF文件是综合后网表文件的一个例子,其可以由综合工具907输出。
综合工具907可以取得HDL文件并输出EDF文件。综合工具允许在电子器件上实现逻辑设计。一些可以获得的综合工具是可从俄勒冈州Wilsonville的Mentor Graphics Corporation获得的Leonardo Spectrum以及可从加州Sunnyvale的Synplicity Corporation获得的Synplify。各种不同的综合后网表格式将被所属领域技术人员所了解。
验证级913一般在综合级907之后。验证级检查设计的准确性以确保中间或最终设计实现预期的要求。验证级一般包括仿真工具和定时分析工具。仿真工具可以不必实现物理器件而允许输入应用和输出检查。对于设计的功能和定时验证,仿真工具向设计者提供成本效率高和有效的有效机理。功能验证涉及与定时考虑无关的电路逻辑操作。诸如门延迟之类的参数被忽略不计。
定时验证涉及分析具有定时延迟的设计操作。设置、保持、及其它用于诸如触发器之类的时序设备的定时要求被确认。一些可以获得的仿真工具包括Synopsys VCS、VSS和Scirocco,它们可以从加州Sunnyvale的SynopsysCorporation获得,而Cadence NC-Verilog和NC-VHDL可以从加州圣何塞的Cadence Design System获得。在验证级913之后,被综合的网表文件可以被提供给包括布局和布线以及配置工具的物理设计工具919。布局和布线工具一般在目标硬件器件的特定逻辑元件上定位逻辑单元,并且根据实现电子设计所需的逻辑连接各种逻辑元件的输入和输出之间的线路。该器件也可以在923被物理上地测试。
对于可编程逻辑器件,可编程序逻辑配置级可以使布局和布线工具的输出凭借用户选择和参数化的模块来编程逻辑器件。根据各种不同的实施例,布局和布线工具以及逻辑配置级在Quartus开发工具中被提供,它可以从加州圣何塞的Altera Corporation获得。所属领域技术人员应当了解,多种综合、布局和布线、以及可编程逻辑配置工具可以使用本发明的各种不同技术来测试。
上面提到,不同的级和程序可以被集成到各种方式中。根据一个实施例,输入级901、发生器程序905、综合工具907、验证工具913以及物理设计工具919被集成到单个程序中。不同级自动运行并且对用户透明。程序可以接收用户选择的模块,产生描述用于实现各种不同选择模块的逻辑的逻辑描述,并实现电子器件。所属领域技术人员应当了解,HDL文件和EDF文件仅仅是逻辑描述的例子。其他的文件格式以及内部程序表示是逻辑描述的其它例子。
图10说明了可被用于实现具有共享I/O线路的可编程芯片的典型计算机系统。计算机系统1000包括任意数量的处理器1002(也称之为中央处理单元或CPU),它们被连接到包括存储器1006(一般是随机存取存储器或“RAM”)、存储器1004(一般是只读存储器或“ROM”)的设备。处理器1002可以被配置来产生用于任何指定处理器的测试序列。在本技术领域中所熟知的是,存储器1004向CPU单向传送数据和指令,并且存储器1006一般被用来以双向方式传送数据和指令。
这两个存储器设备都可以包括上述的任何适当类型的计算机可读介质。此外,大容量存储设备1008被双向连接到CPU 1002并提供附加的数据存储容量,而且可以包括任何上述的计算机可读介质。大容量存储设备1008可以被用来存储程序、数据等等,并且一般是诸如慢于存储器的硬盘之类的从存储介质。大容量存储设备1008可以被用来保持预封装的逻辑或知识产权功能的程序库(library)或数据库,以及关于产生特定配置的信息。应当理解,保持在大容量存储设备1008内的信息在适当的情况中可以以标准方式作为虚拟存储器被结合为存储器1006的一部分。诸如CD-ROM 1014之类的特定的大容量存储设备还可以向CPU单向传递数据。
CPU 1002还被连接到接口1010,接口1010包括一个或多个输入输出设备,比如视频监视器、跟踪球、鼠标、键盘、麦克风、触敏显示器、传感器读卡机、磁带或纸带读带机、书写板、触针、语音或手写识别器、或其它熟知的输入设备,当然包括其它计算机。最后,CPU 1002可以选择性地连接到使用通常如在1012所示的网络连接的计算机网或电信网。有了这类网络连接,在上述方法步骤的执行的过程中,期待CPU可以从网络接收信息或可以向网络输出信息。应当指出,系统1000还可以与把完成的设计传送到可编程芯片上的设备相关联。上述的设备和材料对于计算机硬件和软件领域的技术人员来说是很熟悉的。
上述的硬件元件可以被配置(通常临时地)来充当执行本发明操作的多个软件模块。例如,运行发生器程序的指令、输入级(例如向导),和/或编译器可以被存储在大容量存储设备1008或1014上并结合主存储器1006运行在CPU 1008上。
尽管上述的许多元件和处理是为方便起见的单一形式,然而所属领域技术人员应当了解,多个元件和重复处理也可以被用来实践本发明的技术。
虽然本发明已经被示出并参考其特定实施例被说明,但是所属领域技术人员应当了解,公开实施例的形式和细节可以在没有背离本发明的精神或范围的前提下被改变。例如,本发明的实施例可以用多种的主次元件来工作并不应该受限于上述实施例。因此,本发明意在被解释为包括所有属于本发明真实精神和范围的变型和等效物。
权利要求
1.一种处理器,包括多个寄存器;电路,被配置来处理与包括多个转移和非转移指令的指令集相关的多个指令,该多个指令每个都具有多字节长度,该多个指令在多字节对准的地址是可访问的;其中,所有的多字节对准的转移指令实质上都可操作来访问在字节对准的地址中的指令。
2.权利要求1的处理器,其中,所述多个指令在字对准的地址被访问。
3.权利要求1的处理器,其中,所述多个指令在半字对准的地址被访问。
4.权利要求1-3中任意一个的处理器,其中,访问指令包括读和写地址。
5.权利要求1-4中任意一个的处理器,其中,转移指令包括转移和条件转移指令。
6.权利要求1-5中任意一个的处理器,其中,转移指令包括转移偏移和当前的程序计数器值。
7.权利要求1的处理器,其中,转移偏移和当前程序计数器的单位是字节。
8.权利要求1的处理器,其中,所述多个指令是一个字的长度。
9.权利要求1的处理器,其中,该处理器支持的转移指令和多个非转移指令使用公共的子电路来实现。
10.权利要求9的处理器,其中,公共的子电路被用来处理与转移和非转移指令相关的立即字段。
11.权利要求10的处理器,其中,公共的子电路被用来执行与转移和非转移指令相关的立即字段的符号扩充。
12.权利要求1的处理器,其中,该处理器是可编程芯片上的处理器核心。
13.权利要求1的处理器,其中,该处理器是专用集成电路上的处理器核心。
14.一种用于执行指令的方法,该方法包括解码与地址相关联的转移指令,该转移指令具有相关联的操作码和立即值;用该立即值来计算转移目标地址,其中,该转移目标地址通过使用公共子电路来确定,该公共子电路可操作来计算字节对准的地址,其中,该公共子电路还被配置来执行非转移操作;跳转到该转移目标地址,其中,该转移目标地址是多字节对准的。
15.权利要求14的方法,其中,所述转移目标地址是多字节对准的。
16.权利要求14的方法,其中,所述转移目标地址是半字对准的。
17.权利要求14的方法,其中,计算所述转移目标地址包括执行符号扩充操作。
18.权利要求14的方法,其中,所述转移指令使用立即值和转移指令的地址来计算转移目标地址。
19.权利要求14的方法,其中,立即值和与转移指令相关的地址的单位是字节。
20.权利要求19的方法,其中,与所述转移指令相关的地址是程序计数器。
21.一个可编程芯片系统,包括解码装置,用于解码与地址相关联的转移指令,该转移指令具有相关联的操作码和立即值;计算装置,用于用立即值来计算转移目标地址,其中,该转移目标地址通过使用公共子电路来确定,该公共子电路可操作来计算字节对准的地址,其中,该公共子电路还被配置来执行非转移操作;跳转装置,用于跳转到转移目标地址,其中,该转移目标地址是多字节对准的。
22.权利要求21的可编程芯片系统,其中,所述转移目标地址是多字节对准的。
23.权利要求21的可编程芯片系统,其中,所述转移目标地址是半字对准的。
全文摘要
一种方法和设备被提供用来优化处理器核心。公共的处理器子电路被用来执行对各种不同类型指令的计算,包括转移和非转移指令。即使被支持指令是多字节或字对准的,增加跨越不同指令类型的计算的通用性也允许转移指令跳转到字节对准的存储器地址。
文档编号G06F9/30GK1690951SQ20051007622
公开日2005年11月2日 申请日期2005年3月30日 优先权日2004年3月31日
发明者J·L·巴尔 申请人:阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1