CN1653446A - 具有可配置执行单元的高性能混合处理器 - Google Patents
具有可配置执行单元的高性能混合处理器 Download PDFInfo
- Publication number
- CN1653446A CN1653446A CNA038113937A CN03811393A CN1653446A CN 1653446 A CN1653446 A CN 1653446A CN A038113937 A CNA038113937 A CN A038113937A CN 03811393 A CN03811393 A CN 03811393A CN 1653446 A CN1653446 A CN 1653446A
- Authority
- CN
- China
- Prior art keywords
- design
- processor
- configurable logic
- configurable
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 57
- 238000013461 design Methods 0.000 claims description 166
- 230000006870 function Effects 0.000 claims description 20
- 230000008878 coupling Effects 0.000 claims description 12
- 238000010168 coupling process Methods 0.000 claims description 12
- 238000005859 coupling reaction Methods 0.000 claims description 12
- 239000004065 semiconductor Substances 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 3
- 150000001875 compounds Chemical class 0.000 abstract 1
- 238000007429 general method Methods 0.000 abstract 1
- 230000008901 benefit Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Abstract
一种用于构建混合处理器的新颖通用方法,通过允许在可重新配置逻辑中执行更强大、紧耦合的指令集扩展而在应用中实现更高性能。可通过自动和半自动方法发现和设计新指令集。改进的可重新配置执行单元支持深流水线化,增加附加的寄存器和寄存器堆,具有许多源和目的寄存器和宽数据路径的复合指令。新型接口方法使等待时间更少,混合处理器与其他逻辑之间的带宽连接更高。
Description
技术领域
本发明涉及处理器,更具体而言涉及具有可配置执行单元的高性能混合处理器。
背景技术
专用处理器
由于其经由软件的可编程特性允许对相当复杂的任务进行快速开发和修改,从而在电子应用领域,微处理器得以广泛应用。它们构成通用计算机系统以及范围包括网络路由器到蜂窝电话的专用电子设备的核心部分。半导体技术在速度和密度方面的进展,使得能够生产比随后的设计更快,更小和功率更低的微处理器。由于它们易于编程以执行所要完成的任务,且足以高效以满足需求,因而当今得到广泛应用。集成电路设计的传统经济—设计新微处理器和检验新微处理器设计的大量工程付出,加上大量原型建立成本—促生出可用于多种不同任务的处理器。
大多数微处理器设计是通用的。它们包括固定的特征集合—指令集,存储器系统和接口—这使得处理器可广泛应用于不同任务。然而,这些通用处理器不足以完成许多重要的任务。特别是,程序员必须经常使用通用指令的较长序列来计算特定应用任务的必要结果。这种低效意味着电子系统不够快速,或浪费过多功率。从而,通用微处理器不能容易地应用于这样的情形。
通用平台的吸引力
理想的解决方案是专用处理器,专用处理器同通用处理器共享高级语言的易编程能力,不过还确切地包括用于特定任务集合的正确指令集合。根据应用以及指令集合,专用指令集合可精简必须执行的指令的数量,并数百倍地缩短执行时间。对于任何给定的专用指令集合,性能改善可限于较小应用集合。因此,重要的是减少开发和构建适于特定应用的微处理器的成本和工作量。
对于成本和工作量而言,存在两个重要成分。第一个成分是发现,描述和设计新微处理器以及相关软件的工程量。主要任务可包括以下内容:
·分析目标应用,发现性能瓶颈和目标代码部分以进行指令集优化
·定义减少执行所需的处理器时钟周期数量的新指令
·进行详细逻辑设计以实现包括有增强型指令译码和新指令执行单元的增强型处理器
·开发出新的软件开发工具,特别是新汇编程序,高级语言编译器和其他软件生成器,以使得程序能够使用增强型指令及其他特征
·对运行时刻软件,如可需要用来管理处理器的增强型硬件资源(寄存器,存储器和指令)的操作系统和软件库,进行的任何修改
专用处理器开发的工作量的第二个成分是创建实现具有其增强型指令集的完整处理器的集成半导体电路。该实现必须打破低原型建立成本与低批量制造成本之间的平衡。其中针对目标处理器定义优化所有逻辑门,存储器和布线的全定制设计通常会实现最小尺寸,最低功耗和最低批量制造成本,但开发和原型建立的一次性成本可能会很高。设计和制造原型的时间常达数月。对于低到中等的生产批量,原型建立的摊销成本(amortized cost)可大于直接制造成本。
成本和工作量的第一个成分由处理器生成工具来解决,例如,由A.Wang,E.Killian,D.Maydan,C.Rowen的“Hardware/SoftwareInstruction Set Configurability for System-on-Chip Processors”(Proceedings of Design Automation Conference,2001),或R.Gonzalez的“Configurable and Extensible Processors Change System Design”(Proceedings of Hot Chips 11,1999)所描述的。这些工具使得电子系统设计人员能够快速地发现,描述,验证新的指令集,并生成全部硬件设计以及相应的软件。
第二个成分对于低批量设计而言至关重要,对此已有解决方案提出。例如,基于现场可编程门阵列器件,能够以快速原型开发方式实现整个处理器。遗憾的是,这些器件的完全灵活性导致单位电子功能的更高成本和更低的时钟速率。用现场可编程逻辑实现的处理器与使用更常规标准单元电路实现的相同处理器相比,通常慢五倍多,且占有的硅面积超过十倍。这些标准单元处理器的速度可以是通过仔细的人工调节的电路实现的等效处理器的一半。从而,人们感兴趣的是考虑混合的实现方式,其中,使用快速密集电路(fast dense circuit)实现包括公共指令、寄存器、存储器和接口的基处理器(base processor),并且通过快速配置具有较慢但灵活的现场可编程或可重新配置逻辑的通用部分,实现专用扩展。理想情况下,这将产生可能在单个集成电路上实现的标准设计,且该标准设计具有更充分的定制设计的速度和批量成本特征,但具有低原型开发成本和可重新配置逻辑电路的低工作量。
处理器-FPGA耦合的选择
研究人员已经描绘出多种用于专用处理的微处理器与可重新配置逻辑混合设计的不同可能解决方案。Gilson的美国专利No.5,361,373概括性地论述了将处理器电路与分离的标准现场可编程门阵列(FPGA)器件组合以构成混合处理单元,不过没有详细说明在它们之间的通信,或者描述了一种开发配置或对处理器编程的系统方法。K.Compton,S.Hauck的“Configurable Computing:A Survey of Systems andSoftware”(Technical Report,Northwestern University,Dept of ECE,1999)给出了一种对混合处理单元可能进行测定的方法,混合处理单元分成四类,如在处理器100与数据存储器150之间关系所示,图1中显示所有这些内容,不过不是任何系统都包含超过一种的可重新配置处理单元。
这四种类型为:(1)处理器内的可重新配置功能单元110—直接由处理器指令控制,并可访问内部处理器寄存器的功能单元。操作的等待时间为一个或数个周期。(2)可重新配置协处理器120—不受处理器的恒定控制但可以访问处理器存储器的功能单元。测得的操作等待时间为数百个周期或者更多。(3)附连处理单元130—在很长时间只进行很处理器监测的条件下进行操作的功能单元。处理单元130不能访问处理器局部存储器,例如在图1中所示的数据存储器150。
通用处理器100与可重新配置处理单元130之间的通信在总线102上进行,并且可花费数十个周期。操作的等待时间通常比协处理器的要大得多。(4)独立处理单元140—操作与任何其他处理器无关的具有完全独立控制的功能单元。它们通常通过网络106进行访问,由于需要通过网络接口104和数据总线102以便与处理器100进行通信,从而具有很长的等待时间。
在所描述的四类处理器单元中,处理器100内的可重新配置功能单元110与其他形式的混合相比,看似实现更低的等待时间和更高的数据带宽。对于低数据传输速率的应用来说,混合的类型不会具有明显的效果。不过,对于需要与处理器交换更多数据的应用来说,这种构造的选择具有显著的影响。当可重新配置功能单元与处理器紧耦合时,在每个周期,功能单元与处理器可交换数个操作数—至少有两个源操作数和一个结果操作数—传输的等待时间仅为一个周期的一部分。相反,协处理器120,附连处理器10和独立处理单元140的结构需要多于一个周期的等待时间进行传输,且很少能实现每个周期一个操作数。
在处理器内放置可重新配置单元的明显缺点是可能在处理器与可重新配置功能单元的操作之间缺少并行性。本发明重在使这种紧耦合可重新配置单元获得基本改善,以提高操作数带宽,减少操作数等待时间,使基处理器与功能单元之间以及功能单元之间的并行性最大化。
简单指令集扩展
在R.Razdan,M.D.Smith的“A High-PerformanceMicroarchitecture with Hardware-Programmable Function Units”(Proceedings of MICRO-27,1997年11月)中描述了紧耦合可重新配置功能单元的一些简单示例,美国专利No.5,696,956,5,819,064和6,035,123描述了用于实现附加简单RISC指令的组合逻辑的RISC基处理器与现场可编程逻辑阵列的简单混合。现场可编陈逻辑基于n输入,1输出查询表(LUT),它与在商用普及的FPGA中所使用的那些查询表相似。添加的指令严格遵循基RISC指令的格式和结构。指令编码的一个固定部分为在可重新配置逻辑中要实现的新指令而保留。指令字的一个字段构成与用于实现一个组合逻辑功能的逻辑相对应的ID。每个添加的指令可与其它指令一样访问相同的两个源寄存器操作数。每个添加的指令可创建一个结果操作数,而且必须在一个处理器周期中产生其结果。该结果被写入到基处理器的寄存器堆中,结果的宽度与基处理器的字宽度一致。当正在执行扩展指令时,不并行执行任何其他指令。此外,每个添加指令的逻辑不同于任何其他逻辑,且不与任何其他逻辑共享。这允许根据程序的利用情况动态加载的每个指令的配置,因而现场可编程逻辑用作公共使用的扩展指令的高速缓存。另一方面,这阻止在指令之间的逻辑共享以及对于一组指令的更高逻辑成本。
S.Hauck,T.W.Fry,M.H.Hosler,J.P.Kao的“The ChimaeraReconfigurable Functional Unit”(Proceedings of the IEEE Symposiumon Field-Programmable Custom Computing Machines,1997)中描述了试图进一步提高在基处理器寄存器堆与可重新配置功能单元之间的操作数带宽的混合设计。在现场可配置单元中镜像设置(shadow)通用RISC处理器的寄存器的子集,其中超过两个的寄存器可用于源操作数。不过,这大大增加了必须从寄存器堆引入到现场可配置逻辑中的导线的数量。然而,在每个周期仅能产生一个结果操作数,其宽度受限于基RISC处理器的字宽度,且其未被流水线化,从而必需在扩展指令译码后的一个周期内完成计算。
现有发明的限制
本发明人已认识到的现有发明的限制可归纳为以下几点:
1.处理器与现场可编程逻辑的松耦合导致很长的延迟时间和低带宽。此外,线程可编程逻辑的操作不能被处理器紧密协调或被软件控制。这导致更低的性能,更难的开发,和更少的机会来使用两个子系统的联合操作。
2.RISC处理器与RISC型扩展指令之间的紧耦合限制了并行性。在RISC处理器中,计算指令(基于寄存器堆中的值,将新值写入寄存器堆的指令)通常在一个周期内执行。在流水线中一次可发出和执行一基指令或扩展指令,但二者不会同时进行。此外,如果存在多个可重新配置功能单元,则在任何周期中仅有一个能执行指令。在执行中不存在有效重叠(effective overlap)。
3.RISC处理器与RISC型扩展指令之间的紧耦合限制了新指令的加速。RISC型指令编码通常仅允许指定两个源寄存器。因此,通过可重新配置逻辑添加的新指令限于两个源操作数。专用指令集扩展的优点源自于使用专用指令的短序列来代替通用指令的较长序列。遗憾的是,没有多少通用指令较长序列很少具有仅仅两个源操作数。仅有的特殊情形是能够用单个RISC指令代替多个通用指令。提供对附加通用寄存器的访问(如在Hauck等人的文献中所述)能够提高潜在的加速,但在指令的定义中这些引用是隐含的,因而对寄存器的选择严重受限。这减少了具有多于两个的源寄存器的这些指令的有效性,并且使得非常难以用编译器产生代码。
4.功能单元流水线化的缺乏降低了在单个指令中实现深逻辑功能的可能性。可能最有价值的指令集扩展经常涉及将数个复杂算法和其他操作组合成单个指令。该逻辑可具有比处理器正常周期时间更长的延迟,尤其是在较慢的现场可编程逻辑中实现时。或者必须避免这些指令,或者必须以某种方式使处理器暂停以在发出下一个指令之前等待该结果。任一种方法都减少了混合微处理器的潜在加速。
5.用于紧耦合重新配置的所有先前已知的方法仅用于在通用处理寄存器上的新组合功能。不能添加新的状态寄存器。这限制了访问数据的带宽,并有碍于在计算的较长序列内对复杂中间状态的更新。现有的有关仅一个结果,宽度等于基处理器字的限制尤其麻烦。如果能添加新的状态寄存器或全部寄存器堆,则对应用较大加速的机会大大增加。
6.对简单RISC型指令格式的现有限制限制了灵活性和性能。当可添加新格式时,则会出现新的加速机会。在当前现场可配置处理器中缺少两种重要类型的指令格式。首先,指定多于两个的源操作数的指令格式,其中,源操作数或可来自于基处理器的通用寄存器,或可来自于现场可配置功能单元内的附加寄存器以及寄存器堆。其次,指定多于一个的结果的指令格式。多个结果说明符(result specifier)或用于对复杂操作进行编码,或用于对单个字中的数个简单操作进行编码。
7.现有紧耦合现场可编程功能单元旨在充当直接实现对通用RISC指令的快速替代的手段。它们并不十分适于实现诸如单指令多数据(SIMD)或向量操作的数据并行操作。这样的限制表面在仅与基处理器寄存器同样宽(通常为32位)的源和结果数据路径的使用方面,以及表现在所提出的用于发现和设计新指令的方法方面,该方法不使用向量化技术来发现可并行执行循环的多次迭代的情形。此外,现有的解决方法目的在于加速通常在通用计算机系统中发现的软件算法类型。它们通常涉及宽整数数据类型,特别是16位和32位整数。涉及大量这种宽操作数的并行操作在硬件上代价昂贵。相反,在嵌入式应用(如信号和图像处理)中,本来的实际数据大小通常非常小(10位或者更小),因而并行操作的机会非常大。
8.现有解决方案的不足还表现在系统中处理器与其他逻辑功能之间的有限接口方面。实际上,事实上所有计算机系统数据在进入处理器之前都通过中央主存储器,中央主存储器在分立的集成电路中实现。相反,在嵌入式电子系统中,处理器通常在存储器、输入/输出接口和其他专用逻辑方面的同一集成电路中实现。使所有数据都通过主存储器会形成瓶颈。外部逻辑到处理器的直接接口将减小等待时间,并增加许多操作的带宽。
9.用于开发和使用专用指令逻辑的现有方法假设每个添加的指令的逻辑彼此独立。在假设并非所有要求的扩展都能适于可用的可配置逻辑阵列的前提下,可按需加载每个逻辑配置。这表明,当重叠实施的两个指令同时驻留在逻辑阵列中时,不能容易地共享公共逻辑,可能会导致逻辑功能的大大重复。
克服这些限制将大大改善混合处理器的性能。
发明内容
本发明致力于解决现有解决方案的主要限制。
本发明的优点在于,允许将复杂的执行单元实现为紧耦合的指令集扩展,且具有全软件支持和基处理器与扩展之间的非常高的带宽。
本发明的另一优点在于,提供可重新配置执行单元的自动流水线化允许许多独立操作在基处理器和一个或多个扩展执行单元上同时进行。
本发明的另一优点在于,为可重新配置逻辑中的深流水线化的实现提供灵活性,从而可以将复杂的功能实现为单个指令。
本发明的另一优点在于,完全支持可重新配置逻辑中的状态寄存器和寄存器堆,包括所有旁路和互锁逻辑的有效实现。
本发明的又一优点在于,以基处理器中不可用的指令格式实现可重新配置执行单元。可同时支持多种格式,仅受寄存器说明符模板的限制。
本发明的又一优点在于,提供包括寄存器、寄存器堆和多种宽度的数据路径的可重新配置执行单元,其中数据路径仅受可重新配置逻辑结构容量的限制。宽数据路径使得能够且有效地在单个数据字内并行处理数个操作数。
本发明的再一优点在于,在处理器与扩展执行单元之间灵活接口的使用,允许由数个处理器,或者由一个处理器以及其他逻辑共享可重新配置逻辑块。用于处理器的可选接口包括接入到其他处理器和外部逻辑(可能通过时钟和带宽匹配队列)的存储器映射数据端口,和在可重新配置执行单元与其他逻辑之间的信号直接输入和输出。
本发明的优点在于,允许将针对一组指令的所有逻辑合成在一起以找出公共的子功能,并减小将要一起使用的一组指令的总逻辑区和延迟。
因此,本发明在一个方面提供一种混合处理器设计,包括具有适于不同应用的基处理器指令的非可配置基处理器设计,和与非可配置基处理器设计紧耦合的至少一个可配置执行单元设计,其中每个执行单元设计能实现均执行复杂操作的扩展指令。
附图说明
在下面参照附图,通过本发明的非限定性示例性实施例,进一步详细描述本发明的上述和其他方面、特征及优点,其中附图中相同附图标记表示本发明的相同部件,其中:
图1说明多种传统混合处理器设计;
图2说明根据本发明的混合处理器的框图;
图3说明根据本发明的混合处理器的产生;
图4说明根据本发明具有流水线级段的混合处理器的实施例;
图5为用于本发明混合处理器的寄存器说明符格式的示例性表格;
图6说明根据本发明具有流水线级段的混合处理器的另一实施例;以及
图7说明本发明的另一实施例。
具体实施方式
通过使用以允许高时钟频率、低成本和低功率的技术实现的基处理器,和与基处理器紧耦合并能快速调整以实现宽范围的可能专用指令和接口的可重新配置逻辑结构的组合,本发明实现混合专用微处理器。这种组合允许将标准电子系统快速个性化成具有高时钟频率和少量周期、实现每个应用所需的专用微处理器。
在根据本发明的混合处理器中,如上所述,使用紧耦合可重新配置逻辑的主要优点在于:通用处理器指令的长序列-通常为基本算法、移位和逻辑指令的组合-被以新形式实现同等功能的专用指令的更短序列所取代。其他操作,如存储器操作(加载,保存),控制流(分支,跳转)和系统功能(中断处理,上下文切换),主要使用基处理器的现有逻辑。
图2中示出了混合处理器200的主要结构,包括基处理器,可重新配置逻辑,指令和数据存储器以及总线接口。应当注意,此处使用可重新配置来包含最大潜在范围的应用,其应该包括可进行配置,之后可依照需要重新配置的系统。这不应视作一种限制,因为本发明也覆盖那样使用此处给出的教导(针对经过简单配置并且如所配置的那样使用的系统)的系统。
如图所示,基处理器包括程序计数器212,基寄存器堆214,基ALU 216,地址生成器218,数据存储器或高速缓存220,流水线控制器222,指令存储器或高速缓存224,指令译码器226以及总线接口228。
可重新配置逻辑包括扩展寄存器堆230和扩展执行单元232,以及部分数据存储器或高速缓存220,流水线控制器222,指令存储器或高速缓存224,指令译码器226。还可知,基处理器的某些部分会与可重新配置逻辑交互。例如,基处理器可以负责数据加载和存储,以及高速缓存和存储器管理操作。扩展执行单元232可以使用基处理器内的装载存储单元。另一个例子是,基处理器通常会包含基处理器状态寄存器,异常处理寄存器和其他处理器控制功能。可重新配置逻辑内的扩展执行单元232可以产生异常。另外,基处理器可包含其他紧耦合的系统外围设备—总线接口、定时器、调试接口和可由扩展执行单元访问的其他专用接口。下面将描述用基处理器实现可重新配置逻辑时需要考虑的事项。
通过该方法实现的混合处理器200可使用由自动处理器发生器产生的宽范围的指令集扩展,诸如在例如A.Wang,E.Killian,D.Maydan,C.Rowen的“Hardware/Software Instruction Set Configurability forSystem-on-Chip Processors”(Proceedings of Design AutomationConference,2001)中所描述的Xtensa处理器。扩展指令均可包括具有两个源操作数和一个结果操作数的简单RISC型指令,不过还可以包括宽范围的包含下述指令的其他指令功能和处理器逻辑实现,从而能执行复杂的操作:
1.以处理器存储器作为直接操作数源或目的的指令;
2.具有在可配置逻辑结构中实现一个或多个状态寄存器或寄存器堆的指令;
3.具有大量寄存器说明符字段的指令;
4.具有不同于基处理器体系结构的基本格式的指令;
5.等待时间大于一个处理器时钟周期的指令,该时间是从处理器观察的,且由可配置处理器互锁和旁路逻辑支持,可使该指令完全或部分地流水线化,以允许基本指令与可重新配置结构中实现的指令之间,或者所有在可重新配置逻辑中实现的数个指令之间存在显著的并行度;
6.对比基处理器固有宽度更宽的操作数进行操作的指令;
7.将多于一个的基本操作数组合成单个源和/或结果复合操作数,且并行地对所有基本操作数执行简单或复杂操作的指令;
8.其中在定制半导体电路或者半定制标准单元或者门阵列电路中实现基处理器,并且用现场可编程逻辑或者现场可配置数据路径元件实现可配置逻辑的实现;或者
9.其中在定制半导体电路中实现基处理器并且用半定制标准单元或门阵列电路实现可重新配置逻辑的实现。
按照图3中概括描述的方法产生新的混合处理器配置。该方法包括如步骤310所示剖析(profiling)目标应用集,以通常根据对应用代码的模拟来识别代码的关键部分。如步骤320中所示,使用高级指令集描述语言(使用自动编译器320A或人工320B技术)开发指令集扩展。步骤330表示使用诸如TIE的语言开发中间表示—指令集描述,TIE如在例如A.Wang,E.Killian,D.Maydan,C.Rowen“Hardware/SoftwareInstruction Set Configurability for System-on-Chip Processors”(Proceedings of Design Automation Conference,2001)中所描述。这种指令集描述包括指令的编码、语义和流水线化以及其作为处理器一部分的实现所必需的所有基本信息。步骤340表示处理器生成,其中将一组扩展指令翻译成1)可配置执行单元的配置—采用逻辑描述或者网络表的形式,2)扩展软件工具,如编译器、汇编程序、调试器和程序库,3)用于扩展处理器的模拟器,以及4)运行时刻软件,如支持扩展指令集的实时操作系统。常规方法能够使用编译器、汇编程序和程序库产生包含扩展指令集的使用的应用的二进制代码。之后,执行评价步骤350,该步骤包括如步骤350A所示的有关可重新配置逻辑中实现的逻辑的大小和速度的评估,以及如步骤350B所示对通过运行应用程序二进制代码而得到的应用速度的评估。
这种新方法的创新之处在于,通过将可编程逻辑重新配置成新执行单元而支持复杂指令集扩展。它们可包括宽数据路径,附加寄存器堆和多个时钟周期上的执行的流水线化。一个例子如图4所示。
图4以说明各个管道级段(pipe stage)的功能表示示出了混合处理器200。如图中所示,指令存储器(对应于图2的指令存储器224),译码器以及互锁和旁路计算逻辑(其合起来对应于图2的指令译码器226和流水线控制器222),以及逻辑(对应于图2的基ALU 216和相关电路)可存在于耗用源操作数或者生成结果的每个管道级段。图4还示出了基本流水线结构。该例子具有用于基处理器指令的五级段管道,和用于扩展功能单元的七级段管道,尽管可接受任何数量的基本和扩展功能单元管道级段。其示出了基寄存器(与图2的基寄存器堆214对应),不过基处理器可包括例如多个寄存器堆。正如常规情形那样,还包括地址寄存器,浮点寄存器和条件代码寄存器,并且它们是图中示出的组成基寄存器的寄存器堆的特定例子。
图4还示出从基寄存器堆流出并回到基寄存器堆中的两个源操作数(读出端口)和一个结果(写入端口),不过应当理解,基处理器寄存器堆可具有更多读出端口或更多写入端口。如图所示,这可以用于任何基本指令,包括ALU、存储器和控制指令。不过,还应当理解的是,基处理器和基本指令集可以具有更多寄存器堆和更多源和结果端口,因为所述的本发明不受特定基本指令集或流水线的限制。
虽然图4中没有明确地表示出,不过在该优选实施例中,扩展执行单元向基寄存器堆访问源数据,并且扩展执行单元能够产生回到扩展寄存器堆和基寄存器堆或者两者的结果。
类似地,基执行单元-在标记为“Extended Logic”的块中扩展到多个周期上-可以具有各种字宽。例如,对地址寄存器的操作可以为32位,对浮点寄存器的操作可以为64位,对条件代码寄存器的操作可以为1位宽。可重新配置执行单元具有相同的多样性。它们可以具有不同宽度;可以具有多个寄存器堆;流水线可以短于或者长于基处理器流水线。注意,用于数据存储器加载和存储的地址可以来自基处理器执行单元或可重新配置执行单元。
图4还示出了处理器内的互锁和旁路操作的基本形式。如果微处理器计算占用多于一个的流水线级段,则随后的指令可能正等待该结果。互锁机制是一种通过将第一指令的目的寄存器与第二指令的源寄存器进行比较而检测该条件的特性。如果它们相匹配,则处理器必须延迟第二指令的执行,直至第一指令已经产生结果。在流水线处理器中,通常从寄存器堆读出源操作数。仅在已知一个指令及其前面的指令无差错地完成之后,才将该指令的结果回写到寄存器堆中。如果在一个早期管道级段中产生出结果,则在其被写入之前强制等待一个或多个周期。旁路机制允许等待该结果的随后指令不经写入而将该结果值作为源,然后读取寄存器堆。上述的可重新配置处理器未实现具有可重新配置的旁路和互锁控制的可重新配置流水线执行单元。
本发明的关键方面在于用于实现将基处理器的行为(包括基本流水线中指令的结果),和在现场可编程逻辑中实现的扩展执行单元的行为进行协调的混合旁路与互锁机制的机制。该机制确保结果数据在扩展执行单元的管道级段中间,以及在基处理器与扩展执行单元之间正确地传递。它还暂停混合处理器200,包括将新指令发送给基处理器和扩展执行单元,直至新指令可获得所等待的结果。计算互锁和旁路条件的基本任务如下所述:
1.跟踪处理器流水线中每个级段处的指令的源和目的寄存器。对于每个指令,可以有数个源和数个目的地。
2.在每个管道级段中,将该管道级段中所需的每个源寄存器说明符与寄存器堆想要到达的每个目的寄存器说明符进行比较。
3.每当结果已经产生,但等待写到寄存器堆(进行等待,直至已知所有在先指令已经安全完成),并且需要作为源操作数时,将实际的结果值旁路到执行单元的源操作符输入端,以取代来自寄存器堆的源值。
4.每当由于仍然在执行流水线中进行计算而仍没有得到结果时,暂停相关指令,直至获得结果并且结果可以被旁路。
混合处理器设计的一个主要难点在于在高速逻辑技术(例如标准单元)中实现的基处理器与在更低性能逻辑技术(例如PFGA查询表(LUT)和可编程互连)中实现的可重新配置执行单元之间电路性能的差异。该差异在两个子系统之间的接口的位置处,特别是在基处理器传送某些条件的位置处尤为重要,并且可重新配置逻辑必须在基处理器高时钟速率流水线的要求内作出响应。下面的列表列出了基处理器与可重新配置执行单元之间的通信的主要类型:
从基处理品到可重新配置单元:
·指令字,包括寄存器说明符,操作说明符和中间值,所述中间值包括某些常用信号的潜在的单状态(one-hot)编码以便于在可重新配置指令的细节的可重新配置逻辑中进行译码。这些增加的信号可包括有关指令长度、指令格式或者某些指令字段的附加译码的信息。
·从基寄存器堆读取的源操作数,或者来自在先的基处理器指令、被用作源操作数的旁路结果
·从数据存储器或高速缓存读取的加载数据
·控制信息,包括暂停、异常和其他操作模式信息(例如特权级别)。
从可重新配置单元到基处理器:
·要返回基寄存器堆以及旁路到基执行单元的结果操作数
·要写入数据存储器或高速缓存的存储数据
·控制信息(例如用于导致异常响应和指令执行取消的出错指示)
注意,在优选实施例中,可重新配置执行单元不直接负责计算基处理器所使用的暂停信息。这全部在基处理器中进行计算,其中使用一组可重新配置指令格式与相关模板。这种模板的使用是一个重要的创新,因为它解决了由基处理器与可重新配置单元之间的速度差异引起的最主要问题—流水线的协调。
基处理器逻辑可以使用以下机制实现通用的可重新配置暂停逻辑。
1.将全部指令编码空间的一部分分配给可重新配置指令集扩展。这除了基处理器的指令集以外,可允许增加数十或数百个指令。这些指令槽位(slot)可以静态地分配给调度组。
2.可重新配置表对于每组指令槽位包含两个值:
指令格式号—所支持的指令模板中定义指令字内所有(可重新配置指令所使用的)寄存器说明符的位置和大小的一个模板的标识符。例如,如下面的图5中所示,混合处理器200可以定义八个寄存器说明符格式,并且在一个三位字段中将每个指令组的选择进行编码。
use/def号—可重新配置执行单元的所支持流水线深度设置之一的标识符。例如,混合处理器200可以定义下面关于其中需要(使用)源操作数的管道级段,以及其中产生(def)结果的管道级段的可能性,并且在一个两位字段中对use/def设置的选择进行编码。
操作数1 | 操作数2 | 操作数3 | 操作数4 | 操作数5 | 操作数6 | |
集合0 | Use 1 | Use 1 | Def 3 | Use 1 | Use 1 | Def 3 |
集合1 | Use 1 | Use 1 | Use 3Def 6 | Use 1 | Use 1 | Def 3 |
集合2 | Use 1 | Use 1 | Use 1Def 3 | |||
集合3 | Use 1 | Def 3 |
指令组中的所有扩展指令将具有相同指令格式和use/def模式。如果存在比组中的指令更多的具有相同格式和use/def模式的指令,则可使用多于一个的组。还可以使用用于配置这些模板的相同格式和use/def信息,来产生具体的指令操作码分配和译码逻辑,使逻辑的流水线化自动化,并且自动产生周期准确的模拟器和代码调度器。
有两种基本方法来协调基处理器与可重新配置执行单元之间的逻辑速度的差异。
第一,可以将可重新配置逻辑深度流水线化。这表明,通过与基处理器相同的时钟,以流水线寄存器时钟获得可重新配置流水线中的所有中间值。这非常适于例如将触发器与每个LUT关联起来的某些FPGA体系结构,而不会额外花费面积或时间。这充分利用了处理器生成器的性能来实现在模拟器中模拟流水线的软件工具,并产生和调度将这些操作的流水线等待时间隐藏起来的代码。这种深流水线化的方法可能需要可重新配置逻辑中比基处理器中的相同逻辑深得多的流水线。例如,对于0.18微米标准单元工艺,最差的200MHz时钟速率是行得通的(在5ns内执行每个管道级段)。FPGA中的可重新配置逻辑可以慢四倍,从而对于在基于标准单元的流水线中实现相同逻辑时会需要的每一个,需要至少四个管道级段。该方法具有重复率高的优点—在每个基处理器周期可在可重新配置流水线中启动一个新扩展操作。
第二,可重新配置逻辑通常能够运行在更低的时钟速率下,使得基处理器的时钟为可重新配置逻辑时钟的整数倍。基处理器仍然将可重新配置单元视作深流水线化的—具有长等待时间,不过可重新配置逻辑不会具有额外流水线寄存器的定时开销。例如,对于0.18微米标准单元工艺,最差的200MHz时钟速率是行得通的(在5nm内执行每个管道级段),而用FPGA技术实现的可重新配置逻辑可以用50MHz的实际时钟频率实现相同的逻辑(每个管道级段在20nm内执行)。基处理器将认为单元是以四倍时钟速率运行,不过具有四倍的流水线深度,且具有仅在每第四个基处理器周期吸入一个新操作的能力。图6中示出了具有三分频可配置执行单元时钟的两时钟混合。
存在多种变型。基处理器和可重新配置逻辑时钟可以彼此异步,尽管边界处每个信号的时钟重新同步的代价可能较高。可存在多于一个的可重新配置执行单元,并且每个可重新配置执行单元可以具有其自己的相对于基处理器时钟的时钟除数。
将基处理器更加固定的实现与用于指令集扩展的更加可重新配置的逻辑结构结合的混合可扩展处理器的实现,带来三个更加重要的创新,所有这些都是基于与紧密相关实现的其他功能共享可重新配置结构,如图7中所示:
1.指令集扩展(如712A和712B所示)和非处理器逻辑714可共享可重新配置逻辑的单个模块710,其中这两者逻辑上分离但物理上混合地使用,以最佳地利用可获得的可重新配置结构。基处理器(如730A或730B所示)可使用其正常的数据读和写能力,将映射到基处理器地址空间的状态元素读出和写入,并且作为在基处理器与其他功能之间的高带宽、低等待时间的数据端口。可使用输入和输出数据队列来适应数据产生/消耗速率的不同时钟频率,或者对外部逻辑隐藏流水线行为的细节(例如指令暂停和取消)。例如可使用非处理器逻辑实现诸如数据队列的数据缓冲逻辑,诸如迭代加密引擎、未联结于指令执行的基于自治计算功能的状态机,诸如串行接口通道的数据输入/输出,诸如总线监视或者调试硬件支持的处理器支持功能,或者通常在现场可编程或标准单元逻辑中实现的任何其他逻辑功能。
2.两个或更多个基处理器(如730A或730B所示)可共享一个统一的可重新配置逻辑结构720。这样就可以更好地利用该结构,并提供用于在处理器之间进行通信的自然机制,其中该通信比一般的总线传输具有更高带宽和更低等待时间。两种处理器都可以使用以上第一项所述的存储器映射接口方法。然后,可以将队列和其他逻辑732配置成将两个处理器的数据端口734A和734B联结在一起。
3.可重新配置结构中实现的其他逻辑可以通过总线736A和736B直接与扩展指令通信,不过定义了这样的指令,其中可将其他逻辑中的任意信号作为源操作数输入到指令执行,并且可以将写入目的寄存器中的任何值输出以将信号驱动到其他逻辑中。这样就产生了专用信息的非常快速、简单的通信。
尽管上面描述了多个优选实施例,不过本领域技术人员易于想到,在本质上不偏离本发明新颖教导和优点的条件下,实施例可存在多种变型。例如,在上面的描述中,始终存在一些在基处理器中实现的指令,而附加指令(扩展)在现场可编程逻辑中执行。在极端情况下,所有指令都需要现场可编程逻辑,基处理器仅包含用于获取和发送指令的基础结构。因此,尽管在许多情况下是优选的,不过不必在基处理器中完全实现某指令集。因而,应当根据下面的权利要求解释本发明。
Claims (57)
1.一种混合处理器设计,包括:
非可配置基处理器设计,其具有适于不同应用的基处理器指令;和
可配置逻辑设计,其与非可配置基处理器设计紧耦合,该可配置逻辑设计能实现均执行复杂操作的扩展指令。
2.如权利要求1所述的混合处理器设计,其中基处理器设计的物理设计使用定制逻辑和标准单元电路设计技术中的一种,并且可配置逻辑设计的物理设计使用包括现场可编程逻辑的使用的另一种设计技术。
3.如权利要求2所述的混合处理器设计,其中用基于RAM的查询表实现现场可编程逻辑。
4.如权利要求2所述的混合处理器设计,其中基处理器设计的物理设计和可配置逻辑设计的物理设计均实现为半导体器件。
5.如权利要求1所述的混合处理器设计,其中基处理器设计的物理设计使用定制逻辑电路设计技术,可配置逻辑设计的物理设计使用包括使用标准单元或门阵列逻辑电路的使用的另一种设计技术。
6.如权利要求5所述的混合处理器设计,其中基处理器设计的物理设计和可配置逻辑设计的物理设计均实现为半导体器件。
7.如权利要求1所述的混合处理器设计,其中基处理器设计具有宽度为32位的寄存器。
8.如权利要求1所述的混合处理器设计,其中基处理器设计支持至少16个通用寄存器,并且基指令格式使用少于32个的位。
9.如权利要求1所述的混合处理器设计,其中可配置逻辑设计的流水线深度超过一个周期。
10.如权利要求1所述的混合处理器设计,其中至少一个扩展指令对扩展寄存器或扩展寄存器堆进行操作。
11.如权利要求1所述的混合处理器设计,其中至少一个扩展指令使用比基处理器设计的寄存器更宽的数据路径。
12.如权利要求11所述的混合处理器设计,其中使用比基处理器设计的寄存器更宽的数据路径,对一数据字内的数个操作数的每个并行地计算相同操作。
13.如权利要求11所述的混合处理器设计,其中至少另一个扩展指令使用多于两个的源寄存器说明符。
14.如权利要求1所述的混合处理器设计,其中至少一个扩展指令使用多于两个的源寄存器说明符。
15.如权利要求1所述的混合处理器设计,其中至少一个扩展指令计算多于一个的结果。
16.如权利要求1所述的混合处理器设计,其中可配置逻辑设计用与基处理器设计相同的时钟进行流水线化。
17.如权利要求1所述的混合处理器设计,其中基处理器设计通过加载和存储操作访问可配置逻辑设计中实现的非处理器逻辑。
18.如权利要求1所述的混合处理器设计,还包括具有适于不同应用的指令的至少另一个非可配置基处理器设计,其中所述非可配置基处理器设计和所述另一个非可配置基处理器设计共享可配置逻辑设计,并且其中所述非可配置基处理器设计和所述另一个非可配置基处理器设计的扩展指令在可配置逻辑设计中实现。
19.如权利要求1所述的混合处理器设计,其中所述扩展指令直接访问可配置逻辑设计中实现的非处理器逻辑,以作为指令的源操作数。
20.如权利要求1所述的混合处理器设计,其中扩展指令的结果直接可用于可配置逻辑设计中实现的非处理器逻辑。
21.如权利要求1所述的混合处理器设计,其中由通过从预先定义的可选指令的菜单中进行选择来配置可配置逻辑设计的用户来选择某些扩展指令。
22.如权利要求1所述的混合处理器设计,其中使用指令描述语言来定义某些扩展指令。
23.如权利要求1所述的混合处理器设计,其中由分析用高级语言写出的应用的软件程序来定义某些扩展指令。
24.如权利要求1所述的混合处理器设计,其中基于为确定性能关键部分而对应用进行的剖析,获得某些扩展指令。
25.如权利要求1所述的混合处理器设计,其中使用指令模板计算基处理器设计内的流水线互锁或旁路。
26.如权利要求1所述的混合处理器设计,其中在单个半导体基片上一起实现基处理器设计和可配置逻辑设计。
27.如权利要求1所述的混合处理器设计,其中基处理器设计,可配置逻辑设计和其他可配置或非可配置逻辑功能或存储器一起在单个半导体基片上实现。
28.如权利要求1所述的混合处理器设计,其中可配置逻辑设计与基处理器设计异步地运行,并且在可配置逻辑设计与基处理器设计之间传递的某些信号通过至少一个同步电路。
29.如权利要求1所述的混合处理器设计,其中可配置逻辑设计为可重新配置的。
30.如权利要求1所述的混合处理器设计,其中可配置逻辑设计包括扩展执行单元和扩展寄存器堆。
31.一种进行混合处理器设计的方法,包括以下步骤:
提供具有适于不同应用的基处理器指令的非可配置基处理器设计;以及
确定与非可配置基处理器设计紧耦合的可配置逻辑设计,所述可配置逻辑设计能实现均执行复杂操作的扩展指令,从而获得混合处理器设计。
32.如权利要求31所述的方法,还包括步骤:
使用定制逻辑和标准单元电路设计技术之一实现非可配置基处理器设计;以及
使用包括现场可编程逻辑的使用的另一种设计技术实现可配置逻辑设计。
33.如权利要求32所述的方法,其中所述实现步骤用基于RAM的查询表来实现现场可编程逻辑。
34.如权利要求32所述的方法,其中所述实现步骤将基处理器设计和可配置逻辑设计实现为半导体器件。
35.如权利要求31所述的方法,还包括步骤:
使用定制逻辑电路设计技术实现基处理器设计;以及
使用包括标准单元或门阵列逻辑电路的使用的另一种设计技术实现可配置逻辑设计。
36.如权利要求35所述的方法,其中所述实现步骤将基处理器设计和可配置逻辑设计实现为半导体器件。
37.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括可配置逻辑设计中的流水线深度超过一个周期。
38.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括提供对扩展寄存器或扩展寄存器堆进行操作的至少一个扩展指令。
39.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括提供所使用的数据路径宽于基处理器设计的寄存器的至少一个扩展指令。
40.如权利要求39所述的方法,其中所述确定可配置逻辑设计的步骤包括提供使用多于两个的源寄存器说明符的至少另一个扩展指令。
41.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括提供使用多于两个的源寄存器说明符的至少一个扩展指令。
42.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括提供计算多于一个的结果的至少一个扩展指令。
43.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括用与基处理器设计相同的时钟将可配置逻辑设计流水线化。
44.如权利要求31所述的方法,其中所述提供基处理器设计的步骤包括,为基处理器设计提供通过加载和保存操作数对可配置逻辑设计中实现的非处理器逻辑的访问。
45.如权利要求31所述的方法,还包括提供具有适于不同应用的指令的至少另一个非可配置基处理器设计的步骤,其中所述非可配置基处理器设计和所述另一个非可配置基处理器设计共享可配置逻辑设计,并且其中所述非可配置基处理器设计和所述另一个非可配置基处理器设计在可配置逻辑设计中实现。
46.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括提供直接访问可配置逻辑设计中实现的非处理器逻辑,以作为指令的源操作数的扩展指令。
47.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括提供直接可用于可配置逻辑设计中实现的非处理器逻辑的扩展指令结果。
48.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括由通过从预先定义的可选指令的菜单中进行选择来配置可配置逻辑设计的用户选择某些扩展指令。
49.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括使用指令描述语言定义某些扩展指令。
50.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括由分析用高级语言写出的应用的软件程序来定义某些扩展指令。
51.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括,基于为确定性能关键部分而对应用进行的剖析,获得某些扩展指令。
52.如权利要求31所述的方法,其中所述提供基处理器设计的步骤包括提供使用指令模板计算的流水线互锁或旁路。
53.如权利要求31所述的方法,还包括在单个半导体基片上一起实现基处理器设计和可配置逻辑设计的步骤。
54.如权利要求31所述的方法,还包括在单个半导体基片上一起实现基处理器设计,可配置逻辑设计和其他可配置或非可配置逻辑功能或存储器。
55.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括使可配置逻辑设计与基处理器设计异步地运行,并且使在可配置逻辑设计与基处理器设计之间传递的某些信号通过至少一个同步电路。
56.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括使所述可配置逻辑设计是可重新配置的。
57.如权利要求31所述的方法,其中所述确定可配置逻辑设计的步骤包括提供扩展执行单元和扩展寄存器堆。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/120,849 | 2002-04-10 | ||
US10/120,849 US7200735B2 (en) | 2002-04-10 | 2002-04-10 | High-performance hybrid processor with configurable execution units |
PCT/US2003/009337 WO2003088071A2 (en) | 2002-04-10 | 2003-03-25 | High-performance hybrid processor with configurable execution units |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1653446A true CN1653446A (zh) | 2005-08-10 |
CN1653446B CN1653446B (zh) | 2010-05-05 |
Family
ID=29248290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN038113937A Expired - Fee Related CN1653446B (zh) | 2002-04-10 | 2003-03-25 | 具有可配置执行单元的高性能混合处理器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7200735B2 (zh) |
JP (1) | JP3860575B2 (zh) |
KR (1) | KR100998586B1 (zh) |
CN (1) | CN1653446B (zh) |
AU (1) | AU2003222086A1 (zh) |
GB (1) | GB2402787B (zh) |
TW (1) | TWI223194B (zh) |
WO (1) | WO2003088071A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050143A (zh) * | 2013-03-14 | 2014-09-17 | 阿尔特拉公司 | 向混合可编程多核器件映射网络应用 |
CN106371807A (zh) * | 2016-08-30 | 2017-02-01 | 华为技术有限公司 | 一种扩展处理器指令集的方法及装置 |
CN107077327A (zh) * | 2014-06-30 | 2017-08-18 | 微体系统工程有限公司 | 用于可扩展宽操作数指令的系统和方法 |
CN108027798A (zh) * | 2015-12-08 | 2018-05-11 | 上海兆芯集成电路有限公司 | 用于动态配置执行资源的具有可扩展指令集架构的处理器 |
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
CN112015490A (zh) * | 2020-11-02 | 2020-12-01 | 鹏城实验室 | 可编程器件实现与测试精简指令集方法、设备及介质 |
Families Citing this family (160)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6836839B2 (en) | 2001-03-22 | 2004-12-28 | Quicksilver Technology, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US7962716B2 (en) | 2001-03-22 | 2011-06-14 | Qst Holdings, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US7249242B2 (en) | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
US7653710B2 (en) | 2002-06-25 | 2010-01-26 | Qst Holdings, Llc. | Hardware task manager |
US7752419B1 (en) | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
US6577678B2 (en) | 2001-05-08 | 2003-06-10 | Quicksilver Technology | Method and system for reconfigurable channel coding |
US7046635B2 (en) | 2001-11-28 | 2006-05-16 | Quicksilver Technology, Inc. | System for authorizing functionality in adaptable hardware devices |
US6986021B2 (en) | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US7215701B2 (en) | 2001-12-12 | 2007-05-08 | Sharad Sambhwani | Low I/O bandwidth method and system for implementing detection and identification of scrambling codes |
US7403981B2 (en) | 2002-01-04 | 2008-07-22 | Quicksilver Technology, Inc. | Apparatus and method for adaptive multimedia reception and transmission in communication environments |
US7305567B1 (en) * | 2002-03-01 | 2007-12-04 | Cavium Networks, In. | Decoupled architecture for data ciphering operations |
US6781408B1 (en) | 2002-04-24 | 2004-08-24 | Altera Corporation | Programmable logic device with routing channels |
US7142011B1 (en) | 2002-04-24 | 2006-11-28 | Altera Corporation | Programmable logic device with routing channels |
US7328414B1 (en) | 2003-05-13 | 2008-02-05 | Qst Holdings, Llc | Method and system for creating and programming an adaptive computing engine |
US7660984B1 (en) | 2003-05-13 | 2010-02-09 | Quicksilver Technology | Method and system for achieving individualized protected space in an operating system |
US7318014B1 (en) * | 2002-05-31 | 2008-01-08 | Altera Corporation | Bit accurate hardware simulation in system level simulators |
GB0215033D0 (en) * | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Instruction set translation method |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US7937591B1 (en) | 2002-10-25 | 2011-05-03 | Qst Holdings, Llc | Method and system for providing a device which can be adapted on an ongoing basis |
US8276135B2 (en) | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
US7225301B2 (en) | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
US7581081B2 (en) * | 2003-03-31 | 2009-08-25 | Stretch, Inc. | Systems and methods for software extensible multi-processing |
US7613900B2 (en) * | 2003-03-31 | 2009-11-03 | Stretch, Inc. | Systems and methods for selecting input/output configuration in an integrated circuit |
US7590829B2 (en) * | 2003-03-31 | 2009-09-15 | Stretch, Inc. | Extension adapter |
US8001266B1 (en) | 2003-03-31 | 2011-08-16 | Stretch, Inc. | Configuring a multi-processor system |
US7991606B1 (en) | 2003-04-01 | 2011-08-02 | Altera Corporation | Embedded logic analyzer functionality for system level environments |
US7509246B1 (en) | 2003-06-09 | 2009-03-24 | Altera Corporation | System level simulation models for hardware modules |
US7373642B2 (en) * | 2003-07-29 | 2008-05-13 | Stretch, Inc. | Defining instruction extensions in a standard programming language |
US7418575B2 (en) * | 2003-07-29 | 2008-08-26 | Stretch, Inc. | Long instruction word processing with instruction extensions |
US7669035B2 (en) * | 2004-01-21 | 2010-02-23 | The Charles Stark Draper Laboratory, Inc. | Systems and methods for reconfigurable computing |
CN1306395C (zh) * | 2004-02-13 | 2007-03-21 | 中国科学院计算技术研究所 | Mips指令集的处理器扩展指令及其编码方法和部件 |
US7225416B1 (en) * | 2004-06-15 | 2007-05-29 | Altera Corporation | Methods and apparatus for automatic test component generation and inclusion into simulation testbench |
US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
ATE458309T1 (de) * | 2004-10-28 | 2010-03-15 | Ip Flex Inc | Datenverarbeitungsgerät mit rekonfigurierbarer logischer schaltung |
US8966223B2 (en) * | 2005-05-05 | 2015-02-24 | Icera, Inc. | Apparatus and method for configurable processing |
US8620980B1 (en) | 2005-09-27 | 2013-12-31 | Altera Corporation | Programmable device with specialized multiplier blocks |
US8266199B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8041759B1 (en) | 2006-02-09 | 2011-10-18 | Altera Corporation | Specialized processing block for programmable logic device |
US8266198B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8301681B1 (en) | 2006-02-09 | 2012-10-30 | Altera Corporation | Specialized processing block for programmable logic device |
US9064076B1 (en) * | 2006-03-23 | 2015-06-23 | Synopsys, Inc. | User interface for facilitation of high level generation of processor extensions |
US7836117B1 (en) | 2006-04-07 | 2010-11-16 | Altera Corporation | Specialized processing block for programmable logic device |
US7822799B1 (en) | 2006-06-26 | 2010-10-26 | Altera Corporation | Adder-rounder circuitry for specialized processing block in programmable logic device |
US8099583B2 (en) | 2006-08-23 | 2012-01-17 | Axis Semiconductor, Inc. | Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing |
US9665970B2 (en) * | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US8386550B1 (en) | 2006-09-20 | 2013-02-26 | Altera Corporation | Method for configuring a finite impulse response filter in a programmable logic device |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | Altera Corporation | Large multiplier for programmable logic device |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7814137B1 (en) | 2007-01-09 | 2010-10-12 | Altera Corporation | Combined interpolation and decimation filter for programmable logic device |
US7865541B1 (en) | 2007-01-22 | 2011-01-04 | Altera Corporation | Configuring floating point operations in a programmable logic device |
US8650231B1 (en) | 2007-01-22 | 2014-02-11 | Altera Corporation | Configuring floating point operations in a programmable device |
US8645450B1 (en) | 2007-03-02 | 2014-02-04 | Altera Corporation | Multiplier-accumulator circuitry and methods |
US7984272B2 (en) * | 2007-06-27 | 2011-07-19 | International Business Machines Corporation | Design structure for single hot forward interconnect scheme for delayed execution pipelines |
DE102007038545A1 (de) * | 2007-08-16 | 2009-02-19 | Robert Bosch Gmbh | Programmierbarer Filterprozessor |
US7949699B1 (en) | 2007-08-30 | 2011-05-24 | Altera Corporation | Implementation of decimation filter in integrated circuit device using ram-based data storage |
US7996656B2 (en) * | 2007-09-25 | 2011-08-09 | Intel Corporation | Attaching and virtualizing reconfigurable logic units to a processor |
US20090210677A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline |
US20090210669A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Prioritizing Floating-Point Instructions |
US7865700B2 (en) * | 2008-02-19 | 2011-01-04 | International Business Machines Corporation | System and method for prioritizing store instructions |
US7984270B2 (en) * | 2008-02-19 | 2011-07-19 | International Business Machines Corporation | System and method for prioritizing arithmetic instructions |
US8108654B2 (en) * | 2008-02-19 | 2012-01-31 | International Business Machines Corporation | System and method for a group priority issue schema for a cascaded pipeline |
US20090210672A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US20090210666A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US8095779B2 (en) * | 2008-02-19 | 2012-01-10 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US7877579B2 (en) * | 2008-02-19 | 2011-01-25 | International Business Machines Corporation | System and method for prioritizing compare instructions |
US7882335B2 (en) * | 2008-02-19 | 2011-02-01 | International Business Machines Corporation | System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline |
US7870368B2 (en) * | 2008-02-19 | 2011-01-11 | International Business Machines Corporation | System and method for prioritizing branch instructions |
US7996654B2 (en) * | 2008-02-19 | 2011-08-09 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US8959137B1 (en) | 2008-02-20 | 2015-02-17 | Altera Corporation | Implementing large multipliers in a programmable integrated circuit device |
US8244789B1 (en) | 2008-03-14 | 2012-08-14 | Altera Corporation | Normalization of floating point operations in a programmable integrated circuit device |
US8078833B2 (en) * | 2008-05-29 | 2011-12-13 | Axis Semiconductor, Inc. | Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions |
US8181003B2 (en) | 2008-05-29 | 2012-05-15 | Axis Semiconductor, Inc. | Instruction set design, control and communication in programmable microprocessor cores and the like |
US8626815B1 (en) | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
US8255448B1 (en) | 2008-10-02 | 2012-08-28 | Altera Corporation | Implementing division in a programmable integrated circuit device |
US8307023B1 (en) | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
IT1392495B1 (it) * | 2008-12-29 | 2012-03-09 | St Microelectronics Srl | Metodo per progettare un acceleratore ad elevate prestazioni di tipo asic (circuito integrato ad applicazione specifica - application-specific integrated circuit) |
US8805916B2 (en) | 2009-03-03 | 2014-08-12 | Altera Corporation | Digital signal processing circuitry with redundancy and bidirectional data paths |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US8645449B1 (en) | 2009-03-03 | 2014-02-04 | Altera Corporation | Combined floating point adder and subtractor |
US8468192B1 (en) | 2009-03-03 | 2013-06-18 | Altera Corporation | Implementing multipliers in a programmable integrated circuit device |
US8886696B1 (en) | 2009-03-03 | 2014-11-11 | Altera Corporation | Digital signal processing circuitry with redundancy and ability to support larger multipliers |
US8549055B2 (en) | 2009-03-03 | 2013-10-01 | Altera Corporation | Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry |
US8650236B1 (en) | 2009-08-04 | 2014-02-11 | Altera Corporation | High-rate interpolation or decimation filter in integrated circuit device |
US8396914B1 (en) | 2009-09-11 | 2013-03-12 | Altera Corporation | Matrix decomposition in an integrated circuit device |
US8412756B1 (en) | 2009-09-11 | 2013-04-02 | Altera Corporation | Multi-operand floating point operations in a programmable integrated circuit device |
EP2526494B1 (en) | 2010-01-21 | 2020-01-15 | SVIRAL, Inc. | A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations |
US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
US8601044B2 (en) | 2010-03-02 | 2013-12-03 | Altera Corporation | Discrete Fourier Transform in an integrated circuit device |
US8458243B1 (en) | 2010-03-03 | 2013-06-04 | Altera Corporation | Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering |
US8484265B1 (en) | 2010-03-04 | 2013-07-09 | Altera Corporation | Angular range reduction in an integrated circuit device |
US8510354B1 (en) | 2010-03-12 | 2013-08-13 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8539014B2 (en) | 2010-03-25 | 2013-09-17 | Altera Corporation | Solving linear matrices in an integrated circuit device |
US8862650B2 (en) | 2010-06-25 | 2014-10-14 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8589463B2 (en) | 2010-06-25 | 2013-11-19 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8577951B1 (en) | 2010-08-19 | 2013-11-05 | Altera Corporation | Matrix operations in an integrated circuit device |
US8645451B2 (en) | 2011-03-10 | 2014-02-04 | Altera Corporation | Double-clocked specialized processing block in an integrated circuit device |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
KR101849702B1 (ko) * | 2011-07-25 | 2018-04-17 | 삼성전자주식회사 | 외부 인트린직 인터페이스 |
US8812576B1 (en) | 2011-09-12 | 2014-08-19 | Altera Corporation | QR decomposition in an integrated circuit device |
US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US9053045B1 (en) | 2011-09-16 | 2015-06-09 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US8762443B1 (en) | 2011-11-15 | 2014-06-24 | Altera Corporation | Matrix operations in an integrated circuit device |
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US8543634B1 (en) | 2012-03-30 | 2013-09-24 | Altera Corporation | Specialized processing block for programmable integrated circuit device |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US8996600B1 (en) | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US9207909B1 (en) | 2012-11-26 | 2015-12-08 | Altera Corporation | Polynomial calculations optimized for programmable integrated circuit device structures |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9471537B2 (en) | 2013-03-14 | 2016-10-18 | Altera Corporation | Hybrid programmable many-core device with on-chip interconnect |
US9557792B1 (en) | 2013-05-31 | 2017-01-31 | Amazon Technologies, Inc. | Datacenter power management optimizations |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US10019260B2 (en) * | 2013-09-20 | 2018-07-10 | Via Alliance Semiconductor Co., Ltd | Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9547493B2 (en) * | 2013-10-03 | 2017-01-17 | Synopsys, Inc. | Self-timed user-extension instructions for a processing device |
US9379687B1 (en) | 2014-01-14 | 2016-06-28 | Altera Corporation | Pipelined systolic finite impulse response filter |
US9720661B2 (en) * | 2014-03-31 | 2017-08-01 | International Businesss Machines Corporation | Selectively controlling use of extended mode features |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US9507891B1 (en) | 2015-05-29 | 2016-11-29 | International Business Machines Corporation | Automating a microarchitecture design exploration environment |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10579557B2 (en) * | 2018-01-16 | 2020-03-03 | Advanced Micro Devices, Inc. | Near-memory hardened compute blocks for configurable computing substrates |
US20190303263A1 (en) * | 2018-03-30 | 2019-10-03 | Kermin E. Fleming, JR. | Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
WO2020061875A1 (en) * | 2018-09-27 | 2020-04-02 | Intel Corporation | Highlight moment identification technology in volumetric content creation systems |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US10565036B1 (en) | 2019-02-14 | 2020-02-18 | Axis Semiconductor, Inc. | Method of synchronizing host and coprocessor operations via FIFO communication |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4124889A (en) * | 1975-12-24 | 1978-11-07 | Computer Automation, Inc. | Distributed input/output controller system |
IL89120A (en) | 1988-02-17 | 1992-08-18 | Mips Computer Systems Inc | Circuit synchronization system |
JP3099889B2 (ja) | 1990-06-29 | 2000-10-16 | 株式会社東芝 | 電子計算機、プログラマブル論理回路及びプログラム処理方法 |
DE69231451T2 (de) | 1991-03-11 | 2001-05-10 | Mips Tech Inc | Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum |
US5577259A (en) * | 1991-09-19 | 1996-11-19 | Unisys Corporation | Instruction processor control system using separate hardware and microcode control signals to control the pipelined execution of multiple classes of machine instructions |
US5280592A (en) * | 1992-01-03 | 1994-01-18 | Amdahl Corporation | Domain interlock |
US5357237A (en) * | 1992-09-04 | 1994-10-18 | Motorola, Inc. | In a data processor a method and apparatus for performing a floating-point comparison operation |
US5361373A (en) | 1992-12-11 | 1994-11-01 | Gilson Kent L | Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor |
US5548776A (en) * | 1993-09-30 | 1996-08-20 | Intel Corporation | N-wide bypass for data dependencies within register alias table |
JPH07175631A (ja) | 1993-12-16 | 1995-07-14 | Dainippon Printing Co Ltd | 演算処理装置 |
US5590305A (en) * | 1994-03-28 | 1996-12-31 | Altera Corporation | Programming circuits and techniques for programming logic |
US5625784A (en) * | 1994-07-27 | 1997-04-29 | Chromatic Research, Inc. | Variable length instructions packed in a fixed length double instruction |
US5819064A (en) * | 1995-11-08 | 1998-10-06 | President And Fellows Of Harvard College | Hardware extraction technique for programmable reduced instruction set computers |
US6035123A (en) * | 1995-11-08 | 2000-03-07 | Digital Equipment Corporation | Determining hardware complexity of software operations |
US5696956A (en) * | 1995-11-08 | 1997-12-09 | Digital Equipment Corporation | Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents |
US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
US6182203B1 (en) * | 1997-01-24 | 2001-01-30 | Texas Instruments Incorporated | Microprocessor |
US6185126B1 (en) * | 1997-03-03 | 2001-02-06 | Cypress Semiconductor Corporation | Self-initializing RAM-based programmable device |
JP3340343B2 (ja) | 1997-03-13 | 2002-11-05 | 株式会社東芝 | プロセッサ及び情報処理装置 |
US6584525B1 (en) * | 1998-11-19 | 2003-06-24 | Edwin E. Klingman | Adaptation of standard microprocessor architectures via an interface to a configurable subsystem |
JP3449186B2 (ja) * | 1997-08-19 | 2003-09-22 | 富士通株式会社 | パイプラインバイパス機能を有するデータ処理装置 |
US5923893A (en) * | 1997-09-05 | 1999-07-13 | Motorola, Inc. | Method and apparatus for interfacing a processor to a coprocessor |
US6102963A (en) * | 1997-12-29 | 2000-08-15 | Vantis Corporation | Electrically erasable and reprogrammable, nonvolatile integrated storage device with in-system programming and verification (ISPAV) capabilities for supporting in-system reconfiguring of PLD's |
JP3809727B2 (ja) * | 1998-06-17 | 2006-08-16 | 富士ゼロックス株式会社 | 情報処理システム、回路情報管理方法および回路情報記憶装置 |
AU3484100A (en) | 1999-02-05 | 2000-08-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor andmethod for the same |
JP2000235490A (ja) | 1999-02-17 | 2000-08-29 | Hitachi Ltd | マイクロプロセッサ |
JP2000284945A (ja) | 1999-03-29 | 2000-10-13 | Sharp Corp | デジタル機器及びその開発方法 |
JP2001092662A (ja) | 1999-09-22 | 2001-04-06 | Toshiba Corp | プロセッサコア及びこれを用いたプロセッサ |
JP3723775B2 (ja) | 2002-01-10 | 2005-12-07 | 松下電器産業株式会社 | データ処理装置 |
-
2002
- 2002-04-10 US US10/120,849 patent/US7200735B2/en not_active Expired - Lifetime
-
2003
- 2003-03-25 WO PCT/US2003/009337 patent/WO2003088071A2/en active Application Filing
- 2003-03-25 JP JP2003584939A patent/JP3860575B2/ja not_active Expired - Fee Related
- 2003-03-25 KR KR1020047016062A patent/KR100998586B1/ko not_active IP Right Cessation
- 2003-03-25 CN CN038113937A patent/CN1653446B/zh not_active Expired - Fee Related
- 2003-03-25 AU AU2003222086A patent/AU2003222086A1/en not_active Abandoned
- 2003-03-25 GB GB0421865A patent/GB2402787B/en not_active Expired - Fee Related
- 2003-04-04 TW TW092107783A patent/TWI223194B/zh not_active IP Right Cessation
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050143A (zh) * | 2013-03-14 | 2014-09-17 | 阿尔特拉公司 | 向混合可编程多核器件映射网络应用 |
CN107077327A (zh) * | 2014-06-30 | 2017-08-18 | 微体系统工程有限公司 | 用于可扩展宽操作数指令的系统和方法 |
US10204055B2 (en) | 2014-06-30 | 2019-02-12 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
CN108027798A (zh) * | 2015-12-08 | 2018-05-11 | 上海兆芯集成电路有限公司 | 用于动态配置执行资源的具有可扩展指令集架构的处理器 |
CN106371807A (zh) * | 2016-08-30 | 2017-02-01 | 华为技术有限公司 | 一种扩展处理器指令集的方法及装置 |
CN106371807B (zh) * | 2016-08-30 | 2019-03-19 | 华为技术有限公司 | 一种扩展处理器指令集的方法及装置 |
CN110007962A (zh) * | 2019-03-08 | 2019-07-12 | 浙江大学 | 一种基于代码自动生成的指令集模拟方法 |
CN112015490A (zh) * | 2020-11-02 | 2020-12-01 | 鹏城实验室 | 可编程器件实现与测试精简指令集方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US7200735B2 (en) | 2007-04-03 |
GB0421865D0 (en) | 2004-11-03 |
US20050166038A1 (en) | 2005-07-28 |
WO2003088071A3 (en) | 2004-07-22 |
WO2003088071A2 (en) | 2003-10-23 |
JP3860575B2 (ja) | 2006-12-20 |
TW200307215A (en) | 2003-12-01 |
GB2402787B (en) | 2005-07-27 |
AU2003222086A1 (en) | 2003-10-27 |
GB2402787A (en) | 2004-12-15 |
WO2003088071B1 (en) | 2004-09-23 |
JP2005522781A (ja) | 2005-07-28 |
KR20050008677A (ko) | 2005-01-21 |
KR100998586B1 (ko) | 2010-12-07 |
CN1653446B (zh) | 2010-05-05 |
TWI223194B (en) | 2004-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1653446A (zh) | 具有可配置执行单元的高性能混合处理器 | |
Teifel et al. | An asynchronous dataflow FPGA architecture | |
Wolf et al. | Multiprocessor system-on-chip (MPSoC) technology | |
Arnold | The Splash 2 software environment | |
Villasenor et al. | The flexibility of configurable computing | |
CN1781092A (zh) | 数据流机 | |
CN1349630A (zh) | 提供现场可编程系统级装置的软件工具 | |
US20130290693A1 (en) | Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core | |
Gokhale et al. | FPGA computing in a data parallel C | |
Rinker et al. | An automated process for compiling dataflow graphs into reconfigurable hardware | |
Amano et al. | MuCCRA chips: Configurable dynamically-reconfigurable processors | |
Guo et al. | Pillars: An integrated CGRA design framework | |
Gokhale et al. | High level compilation for fine grained fpgas | |
Choudhury et al. | An FPGA overlay for CNN inference with fine-grained flexible parallelism | |
Hartenstein et al. | Costum computing machines vs. hardware/software co-design: From a globalized point of view | |
Gokhale et al. | Co-synthesis to a hybrid RISC/FPGA architecture | |
Sano | DSL-based design space exploration for temporal and spatial parallelism of custom stream computing | |
Peng et al. | Automated synthesis for asynchronous FPGAs | |
Stripf et al. | A compilation-and simulation-oriented architecture description language for multicore systems | |
Unnikrishnan et al. | Application specific customization and scalability of soft multiprocessors | |
Chattopadhyay et al. | Language-driven exploration and implementation of partially re-configurable ASIPs | |
Hirvonen et al. | AEx: Automated customization of exposed datapath soft-cores | |
Boppu | Code Generation for Tightly Coupled Processor Arrays | |
Nguyen et al. | Design and Implementation of a Coarse-grained Dynamically Reconfigurable Multimedia Accelerator | |
Bossuet et al. | Targeting tiled architectures in design exploration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100505 Termination date: 20140325 |