CN1274085C - 集成电路器件及其设计方法 - Google Patents
集成电路器件及其设计方法 Download PDFInfo
- Publication number
- CN1274085C CN1274085C CNB028104188A CN02810418A CN1274085C CN 1274085 C CN1274085 C CN 1274085C CN B028104188 A CNB028104188 A CN B028104188A CN 02810418 A CN02810418 A CN 02810418A CN 1274085 C CN1274085 C CN 1274085C
- Authority
- CN
- China
- Prior art keywords
- operating unit
- data
- integrated circuit
- polytype
- data path
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
-
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
Abstract
本发明提供了一种具有数据处理模块的集成电路器件,该数据处理模块包括多个布置成矩阵的操作单元、多个沿着矩阵的第一方向伸展并传递每个操作单元输入数据的第一布线组、多个沿着矩阵的第二方向伸展并传递每个操作单元输出数据的第二布线组、和多个布置在第一和第二布线组之间的每个交叉点上并能够选择和连接第一布线组中的任何布线与第二布线组中的任何布线的切换单元。该多个操作单元包括多种类型的操作单元,其具有适合于专用处理的不同数据路径,第一方向或第二方向上相同类型操作单元的布置在至少部分的数据处理模块中形成。该集成电路器件的功能能够通过改变操作单元的设置而动态地加以改变,且集成电路器件由具有适合于专用处理的不同数据路径的操作单元构成,从而该集成电路器件即紧凑又经济。
Description
技术领域
本发明涉及集成电路器件,其中多个操作单元布置成矩阵。
背景技术
FPGA(现场可编程门阵列)传统上认为是如下的一种集成电路器件,其中逻辑门布置成阵列,且逻辑门之间的连接能够自由改变。FPGA的结构可以粗略地分为多个逻辑模块和连接这些逻辑模块的布线。一个逻辑模块就是一个含有查询表和触发器的电路单元,且通过改变查询表中的设定值,其能够在位单位(bit units)上起逻辑门的作用,用以获得逻辑功能,如“与”或“或”。多个逻辑模块布置成阵列或矩阵,并且通过行布线和列布线相互连接。行布线和列布线在布线之间的交叉点处通过开关矩阵或类似物相连,从而使布线可重组。通过重组布线,能够改变逻辑模块的设置。
FPGA制造成能够在晶体管水平改变其连接的结构,是即使在FPGA制成之后也能够改变其一定程度可执行功能的集成电路器件。因此,FPGA是如下的一种结构,其中通过相同的硬件能够实现多种专用计算电路,并且可能对机能实现一定限制程度的动态控制。为了提供能够应用于广泛用途的结构,构成FPGA的逻辑模块具有相同的结构,且每个逻辑模块所能够实现的逻辑功能仅限制于“与”、“或”或“与非”水平。待处理的数据在位单元内操作,从而每个逻辑模块仅提供有一个由大约4位的SRAM构成的查询表。
FPGA通过使用含有查询表的逻辑模块而实现逻辑门的功能,如“与”门和“或”门,并通过用一系列可重组的布线连接该逻辑模块而实现多种专用计算电路的功能。因此相对于所能够实现的功能,面积效率(area efficiency)较低,且计算速度也不是特别地高。在改变FPGA待实现的功能时,必须改变极大数量的逻辑模块的功能,从而难以实现动态改变。即使通过提供特殊的用于直接分别控制每个逻辑模块的硬件可能使改变功能所需的时间减少,但是在应用程序执行期间还是难以动态控制该特殊的硬件,而且这种解决办法也不经济。
本发明的发明人提出了一种集成电路器件,其包括多种类型的操作单元,这些操作单元配备有适合于所需或专用处理的数据路径(硬件逻辑或电路),其中通过改变操作单元之间的连接便可能将集成电路器件的机能定义成所期望的专用处理单元。使用这种集成电路器件,不需要象使用FPGA时的情况那样在晶体管水平上改变所有的连接,从而硬件能够在较短时间内重组。因为该结构不需要象FPGA那样具有晶体管水平上通用适用性,所以封装密度能够提高,从而能够制造出紧凑、经济的系统。也能够消除冗余部件,从而提高处理速度,改善AC性能。
然而,因为FPGA由多个较小的功能单元或功能模块构成,所以将这些功能模块布置成矩阵并且在它们之间安置行布线和列布线的布局过程具有高度的规律性,这使得FPGA的设计比较容易,并导致元件水平上的面积效率较高。另一方面,含有适合于专用处理的数据路径的操作单元,其数据路径根据待执行的专用处理而不同,所以操作单元并不都具有相同的电路结构。这意味着,在硅基片上制造操作单元所需的面积对于所有的操作单元并不相等。为了能够以和由单一类型功能模块构成的FPGA相同的方式制造矩阵,可能要对各种类型的操作单元进行布置使每个操作单元都占据相同的面积,而不考虑操作单元中所含有的数据路径。换言之,可能要将多个操作单元布置在一个矩阵内,其中每个操作单元所给的面积都与需要面积最大的操作单元所占用的面积相同。然而这会降低面积效率,导致集成电路极其地大,还会导致AC性能恶化。这使得不能够完全实现这种集成电路器件的基本优点,其由具有适合于专用处理的数据路径的操作单元构成。
由上,本发明的一个目标是设计一种实际的集成电路器件,其包括各种类型具有适合于专用处理的数据路径的操作单元,并提一种集成电路器件,其能够利用这种操作单元的优点。本发明进一步的目的是提供一种紧凑、经济的集成电路器件,其具有较高的处理速度和良好的AC性能。
发明内容
本发明提供一种集成电路器件,包括数据处理模块,该数据处理模块包括:多个操作单元,其沿着一个矩阵的第一和第二方向布置;多个第一布线组,其相应于沿着第一方向的多个操作单元的布置而沿着第一方向延伸,并传递每个操作单元的输入数据和/或输出数据;多个第二布线组,其相应于沿着第二方向的多个操作单元的布置而沿着第二方向延伸,并传递每个操作单元的输入数据和/或输出数据;和多个切换单元,其位于第一布线组和第二布线组之间的每个交叉点处,并能够选择和连接第一布线组中含有的任何布线与第二布线组中含有的任何布线,其中所述多个操作单元被分为包含适合于专用处理的不同数据路径的多种类型的操作单元,并且相同类型的操作单元至少在一部分数据处理模块中形成沿第一方向或第二方向的布置,以及其中所述多种类型的操作单元包括延迟类型的操作单元,其包含适合于进行处理以便延迟数据的传递时间的数据路径。
本发明还提供一种集成电路器件,包括数据处理模块,该数据处理模块包括多种类型的操作单元和用于连接所述多种类型操作单元的布线组,其中该多种类型的操作单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于执行至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,其中布线组通过改变提供给该多种类型操作单元的数据的路由而改变用于数据处理的该多种类型操作单元的配置。
本发明还提供一种集成电路器件,包括数据处理模块,该数据处理模块包括多种类型的操作单元和用于连接该多种类型操作单元的布线组,其中该多种类型的操作单元包括不同类型的操作单元,这些不同类型的操作单元包含适合于执行至少一种不同指令的数据路径,以及其中每个操作单元包含用于锁存输入数据的触发器和用于锁存输出数据的触发器,该触发器由时钟单元控制,时钟单元用于确立在每个操作单元内所消耗的时钟数目,其中布线组通过改变提供给该多种类型操作单元的数据的路由而改变用于数据处理的该多种类型操作单元的配置。
本发明还提供一种集成电路器件,包括数据处理模块,该数据处理模块包括多个操作单元和用于连接该多个操作单元的布线组,其中该多个操作单元分成多种类型的操作单元,所述多种类型的操作单元包含适合于专用处理的不同数据路径,并且每个操作单元以字节单位和/或字单位处理数据,其中布线组通过改变提供给该多种类型操作单元的数据的路由而改变用于数据处理的该多种类型操作单元的配置。
本发明还提供一种集成电路器件的设计方法,该集成电路器件包括由多种类型操作单元和布线组构成的数据处理模块,其中所述操作单元沿着第一方向和第二方向布置成矩阵,所述布线组连接该多种类型的操作单元,该多种类型的操作单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于处理至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,该设计方法包括如下步骤:将集成电路器件中所执行的至少一部分处理转换成用编程语言书写的中间描述,该编程语言包含由该多种类型操作单元中的相应类型操作单元执行的指令;产生包括该多种类型操作单元和延迟类型操作单元的执行配置,该延迟类型操作单元用于调节时限,该执行配置能够执行中间描述的处理;和产生数据处理模块,其中布置有多种类型的操作单元从而能够实现所述执行配置。
本发明还提供一种集成电路器件的设计方法,该集成电路器件包括如下数据处理模块,其中布置有多种类型的操作单元,且其中用于数据处理的该多种类型操作单元的配置通过改变由布线组提供给该多种类型操作单元的数据的路由而改变,该多种类型的操作单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于处理至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,该设计方法包括如下步骤:将集成电路器件中所执行的至少一部分处理转换成用编程语言书写的中间描述,该编程语言包含由该多种类型操作单元中的相应类型操作单元执行的指令;产生包括该多种类型操作单元和延迟类型操作单元的执行配置,该延迟类型操作单元用于调节时限,该执行配置能够执行中间描述的处理;产生数据处理模块,其中布置有执行配置所需的多种类型操作单元;和产生用于该集成电路器件的执行程序,该执行程序包括表示执行配置的指令。
本发明还提供一种为集成电路器件生成执行程序的方法,该集成电路器件包括数据处理模块,其中布置有多种类型的操作单元,并且其中用于数据处理的多种类型操作单元的配置通过改变由布线组提供给多种类型操作单元的数据的路由而改变,该多种类型操作的单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于处理至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,该生成方法包括如下步骤:将集成电路器件中所执行的至少一部分处理转换成用编程语言书写的中间描述,该编程语言包括由该多种类型操作单元中的相应类型操作单元执行的指令;产生包括该多种类型操作单元和延迟类型操作单元的执行配置,该延迟类型操作单元用于调节时限,该执行配置能够执行中间描述的处理;和产生执行程序,其包括用于表示执行配置的指令。本发明的集成电路器件包括数据处理模块,其含有多个沿着矩阵的第一和第二方向布置的操作单元;多个第一布线组,其沿着第一方向相应于多个操作单元沿着第一方向的布置伸展,并传递每个操作单元的输入数据和/或输出数据;多个第二布线组,其沿着第二方向相应于多个操作单元沿着第二方向的布置伸展,并传递每个操作单元的输入数据和/或输出数据;和多个切换单元,其设置在第一和第二布线组的每个交叉点处,并能够选择和连接第一布线组中所含的任何一条布线与第二布线组中所含的任何一条布线。在该集成电路器件中,多个操作单元包括多种类型的操作单元,其具有适合于专用处理的不同数据路径,或者分成多种类型的操作单元,相同类型的操作单元形成沿着第一或第二方向的布置。
在本说明书中,表达“操作单元”是指小规模单元,其(1)以位或字单位处理数据,(2)配备有适合于专用或特殊处理的数据路径,且(3)能够执行专用或特殊算术运算、专用或特殊逻辑运算、或者两者的组合。这些操作单元也指称为元件、逻辑元件、逻辑单元或电路单元。在半导体基片上制造多种类型操作单元,其含有不同的或唯一的适合于专用处理的数据路径,所需的面积,很可能对每种类型的操作单元都不相同。然而,对于相同类型的操作单元,所占用的面积是相同的。因此,通过使相同类型的操作单元沿着第一方向或第二方向形成布置,便能够消除由于操作单元尺寸的差异而导致的波动。如果第一方向是行方向(水平方向,侧向或宽度方向),第二方向便是列方向(垂直方向,径向或高度方向)。作为一个实例,如果相同类型的操作单元形成沿着第一方向的布置,那么便能够布置该多个操作单元从而形成具有相同宽度的直带。因此,多个操作单元,其数据路径根据类型而不同且其尺寸也很可能不同,便能够沿着第一方向布置成直线,而不会在第二方向上产生冗余空间。因为操作单元沿着第一方向布置成直线且无尺寸波动,所以便可能将至少沿着第一方向的布线组布置成直线。这便有可能提高面积效率和集成电路器件的集成度,从而能够提供经济并具有高处理速度和良好AC性能的集成电路器件,在该集成电路器件中,含有不同数据路径的操作单元布置成矩阵。
在布置大量相同类型的操作单元时,操作单元能够布置成沿着第一或第二方向形成的多条直线。当一种类型操作单元的数目,例如第一类型操作单元,远远大于第二类型操作单元的数目时,如果第一类型操作单元简单地根据第二类型操作单元布置的长度而布置,那么最终数据处理模块的整体形状会太长太细,这会降低面积效率。在这种情况下,优选地通过将第一类型操作单元的布置与第二类型操作单元的布置相连从而改善数据处理模块的形状。在这种情况下,在至少部分的数据处理模块中,也就是说,在与第二类型操作单元的布置一样宽的范围内,相同类型操作单元的布置沿着第一或第二方向形成。
当相同类型的操作单元沿着第一方向布置时,甚至其尺寸根据操作单元的类型而不同的操作单元也能够无波动地布置成直线或线性线路(linear line),尽管不能保证操作单元沿着第二方向布置成直线。因此,优选地将多种类型的操作单元以相等的间隔沿着第一方向布置,从而保证操作单元沿着第二方向布置成直线。在这种情况下,第二方向上的布线组能够布置成直线,从而能够使连接操作单元的布线长度最小化。此外,有可能将第一布线组和第二布线组都布置成直线,从而能够容易地设计如下的集成电路器件,其中具有不同数据路径的操作单元布置成矩阵。当第一方向上各种类型操作单元的尺寸不同时,在第二方向上便不可能获得最有效的布置。然而,通过设计每种类型的操作单元使第二方向上各种类型的操作单元所需要的面积差值相等,并抵消第一方向上的差异,各种类型的操作单元便能够有效地加以布置,使第一和第二方向上都具有尽可能高的密度。
除了由用于传递数据的数据总线构成的总线布线之外,第一和第二布线组应当优选地包括用于传递进位信号(carry signal)的进位布线(carry wire)。利用这种结构,进位信号和显示真或假的信号能够从一个操作单元通过与数据总线相同的路由传递到另一个操作单元。
操作单元可以从第一布线组或第二布线组中的任何一个输入数据,并可以向这两者中的任何一个输出数据。然而,通过设定一条规则,即从一个布线组输入数据并向另一个布线组输出数据,数据便能够一直从一个操作单元仅通过一个切换单元传递到另一个操作单元。因此,操作单元优选地包括用于从第二布线组中的任何一条布线输入信号的装置,和用于向第一布线组中的任何一条布线输出信号的装置。
每一个操作单元都含有适合于专用处理的数据路径,从而每个操作单元都能够具有合适的用于处理(例如算术运算、逻辑运算等,甚至处理需要多条输入数据的运算)的数据路径。优选地,第二布线组形成输入布线,并且包括一对布线组,其沿着第二方向在操作单元布置的两侧上伸展,通过该布线,便能够容易地通过操作单元获得多条输入数据。
当矩阵所含操作单元的数目增加时,如果这些操作单元以灵活的方式加以连接,则布线的需要量与操作单元一致,从而需要极大数量的布线。出于这个原因,优选地将矩阵分割成多个矩阵,将适合于处理延迟数据传递的操作单元布置在位置相邻的第一和第二矩阵的边界上,将第一和第二布线组分隔在第一和第二矩阵之间,和使仅在第一和第二矩阵之间传送的信号同时使用第一和第二矩阵的布线。
同样优选地,具有适合于专用处理的数据路径的操作单元包括多种类型的操作单元,其含有适合于至少一种不同指令或指令级(instruction level)的处理的数据路径。在本说明书中,除非特别指出,否则表达“指令”指称任何指令,其构成用于书写程序的指令组的一部分,并且包括复合指令、宏指令、函数调用等。因此,每一个操作单元以8位的字节单位,或者以16、32、或64位的字单位处理数据。如果该集成电路器件所执行的处理能够用操作单元所支持指令的编程语言加以描述,那么通过将程序替换成操作单元的定位和选路,便能够容易地设计和制造出用于执行该程序的集成电路器件。
换言之,本发明提供了一种集成电路器件,其由数据处理模块构成,数据模块包括多种类型的沿着矩阵的第一和第二方向布置的操作单元和连接该多种类型操作单元的布线组,多种类型的操作单元包括不同类型的具有适合于执行至少一种不同指令的数据路径的操作单元。在设计该集成电路器件时,该集成电路器件所执行处理至少要部分地转变成用编程语言书写的中间描述(intermediatedescription),编程语言包括由该多种类型操作单元中的一种或多种支持的或者能够由其执行的指令。接着生成能够执行该中间描述的多种类型操作单元的执行配置,并生成数据处理模块,其中对多种类型操作单元加以布置从而获得该执行配置。这样,便能够容易地在短时间内设计和制造出能够执行所提交处理的集成电路器件。该设计和制造方法所提供的集成电路器件用硬件执行所提交的处理,从而具有较高的处理速度。
至于含有适合于在指令级上进行处理的数据路径的操作单元,能够获得如下类型的操作单元但不仅限于此。第一种类型的操作单元含有适合于数据输入处理的数据路径。第二种类型的操作单元含有适合于处理表示输入数据地址的数据路径。第三种类型的操作单元含有适合于数据输出处理的数据路径。第四种类型的操作单元含有适合于处理表示待输出数据地址的数据路径。第五种类型的操作单元含有适合于算术运算,如加或减整数,和/或逻辑运算(如比较和选择)的数据路径。乘法也可以包含在第五种类型的操作单元中,尽管这会使第五种类型的操作单元变得过大,但比划分出含有适合于乘法处理的数据路径的第六种类型操作单元要更有效。通过使用这些类型的操作单元,便可能执行描述或定义搜索处理或计算处理的指令,该处理作为大量处理的一部分会消耗大量的时间。对于以高频率重复执行的处理,例如信号处理或循环处理,通过使用或分配给大量硬件资源则能够以较高速度加以执行。
换言之,利用本发明,用传统的软件方法,即仅重复使用少量的硬件资源,执行速度不能够提高的处理,能够通过提供或分配大量的硬件资源并执行同步处理而加以执行,从而使性能改善成为可能。
为了布置用于在数据处理模块中形成平稳数据流的操作单元,具有适合于处理数据输入指令和/或数据输出指令的数据路径的操作单元优选地布置在数据处理模块的两端。为了执行类似流水线的处理,需要确定每个操作单元消耗时钟的数目。出于这个原因,优选地给每个操作单元提供用于锁存输入数据的输入触发器和用于锁存输出数据的输出触发器。然而,适合于处理输入指令或输出指令的数据路径能够自身作为触发器,锁存字节或字单位的数据,且在这种情况下,输入数据和输出数据能够用单一的触发器锁存。
当内在数据路径不同时,每个操作单元所消耗的时钟数目也不同。当数据处理模块中所采用的路径不同时,数据到达操作单元的时限也不同。出于这个原因,优选地提供第七种类型的操作单元,其含有适合于处理延迟数据传递时间的数据路径。在生成操作单元的配置时,生成了包括这种用于调节时限的操作单元的执行配置。
为了增加该操作单元所能够执行的处理范围,有效地是使用第八种类型的操作单元,其含有适合于处理连接位于数据处理模块外部的计算电路的数据路径。同样有效地是使用第九种类型的操作单元,其含有能够根据查询表选择其处理的数据路径。此外,通过使相同类型的操作单元沿着相同的方向布置,多个相同类型的操作单元便可以互连从而提供扩展的计算功能。为此,优选地使相同类型的操作单元沿着相同的方向布置,其含有用于连接该沿着相同方向布置的多个相同类型操作单元从而提供扩展计算功能的路径。作为一个实例,在适合于处理算术运算的操作单元实例中,通过将低精度的操作单元沿着相同的方向布置便能够执行高精度的计算处理。
通过提供多个数据处理模块和用于连接这些数据处理模块的第三布线组,操作单元配置所能够操作的处理范围能够大大地扩展。
利用本发明的集成电路器件,提供给操作单元的数据所采用的路由能够通过控制切换单元而加以改变,从而能够改变用于数据处理的操作单元的配置,切换单元能够选择和连接第一布线组中的任何布线与第二布线组中的任何布线。因此,本发明提供了一种集成电路器件,其包括数据处理模块,其中定位了多种类型的操作单元,且用于数据处理的多种类型操作单元的配置能够通过改变由布线组提供给多种类型操作单元的数据所采用的路由而加以改变,该多种类型的操作单元包括不同类型的操作单元,其含有适合于至少一种指令级上的不同处理的数据路径。利用该集成电路器件,数据处理模块的功能和所执行的处理内容能够在集成电路器件已经制造出之后加以改变。与FPGA趋向于在晶体管水平上映射(map)电路不同,具有适合于专用处理的数据路径的操作单元的配置能够改变,从而处理内容能够在短时间内改变。因此,可能提供一种集成电路器件,其中硬件所执行的处理内容能够动态地加以改变。
尽管该集成电路器件的数据处理模块具有全部的通用适用性,通过它能够执行不同的处理,但是每个操作单元都是一个专用的电路单元,具有适合于专用或特殊处理的数据路径,使得每个操作单元的适用性降低。这减少了电路方面的冗余量,从而对处理无用的电路几乎不会留下,结果提供了一种紧凑、经济、具有高处理速度的集成电路器件。
为了提高操作单元配置的灵活性,操作单元优选地含有用于从第一布线组和第二布线组中选择出任何布线并输入或输出信号的装置。操作单元还优选地含有用于存储布线选择的可重写配置存储器,且切换单元也优选地含有用于存储布线选择的可重写配置存储器。通过重写配置存储器如寄存器的内容,数据处理模块的功能能够动态地加以改变。通过预先将待改变的内容存储在存储器内,由较宽范围的操作单元构成的功能便能够容易地在一个时钟内加以改变。
通过安装用于将配置存储器的内容重写在集成电路器件上的控制单元,便可能提供一种集成电路器件,其中硬件所执行的处理内容能够通过程序而加以改变。控制单元可以是小规模部件如序列发生器或微码存储器。然而控制单元优选地是具有足够功能以根据程序改变操作单元配置的处理单元。通过组合数据处理单元,其中操作单元(逻辑元件或逻辑单元)布置成矩阵,与通用处理器如RISC处理器,便提供了一种器件,其中适合于重复使用有限硬件资源的传统软件方法的处理能够通过通用处理器而执行,执行速度不能提高的处理则能够通过数据处理模块而执行。通用处理器的处理和数据处理模块的处理还有可能平行地加以执行。而且,由数据处理器构成的操作单元有可能设定另一个操作单元的配置存储器。
对于能够通过程序加以控制的集成电路器件,集成电路器件的执行程序能够通过如下的方法而生成,(I)对待用编程语言执行的处理进行中间描述,编程语言包括操作单元所支持的指令,和(II)包括表示能够执行该中间描述的多种类型操作单元执行配置的指令。中间语言优选地是类似汇编程序的语言,具有较高的线性度从而能够容易地生成数据流程序(data flowgrams)。
在数据处理模块中,硬件所能执行的功能和处理的范围能够通过提供如下的操作单元而加以扩展,其含有用于改变和/或选择操作单元部分内部数据路径的装置。内部数据路径的改变和/或选择能够存储在操作单元的配置存储器中。适合于在指令级上进行处理的操作单元的内部数据路径是适合于执行至少一种指令的数据路径。设计集成电路器件和生成执行程序的处理过程生成了一种执行配置,其包括内部数据路径的选择和/或改变,还生成了一种执行程序,其含有表示选择和/或改变内部数据路径的指令。
附图说明
图1是显示根据本发明实施例的集成电路器件结构的框图。
图2显示了矩阵的结构。
图3显示了图2所示矩阵的放大图。
图4显示了传递进位信号的布线的布置,其出自图2所示矩阵中的布线组。
图5显示了切换单元的实例。
图6显示了适合于处理输入数据指令的数据路径单元的实例。
图7显示了适合于处理输出地址指令的数据路径单元的实例。
图8显示了适合于处理执行算术运算和/或逻辑运算指令的数据路径单元的实例。
图9显示了适合于处理延迟数据传递时限的数据路径单元的实例。
图10显示了适合于处理乘法指令的数据路径单元的实例。
图11(a)显示了适合于处理连接位于外部的计算电路的数据路径单元的实例。图11(b)显示了根据查询表选择其处理的数据路径单元的实例。
图12是显示根据本发明的另一个集成电路器件结构的框图。
图13显示了相连了多个LSI的几种实例。
图14显示了本发明集成电路器件的设计和制造方法。
图15是显示定位和选路选择处理的流程图。
图16是显示发现一个数据流程序配置处理的流程图。
图17显示了中间语言描述的实例。
图18显示了在矩阵中实现的数据流程序的实例。
图19显示了一个实例,其中数据流程序由操作单元配置构成。
图20显示了一个实例,其中数据流程序已经映射到矩阵上。
图21是显示用于在矩阵中实现数据流程序的配置的实例。
具体实施方式
下面参考附图对本发明进行说明。图1显示了一个实例,其中系统LSI 10设定成根据本发明的集成电路器件。该系统LSI 10包括通用处理器11,例如用于执行通用处理的RISC处理器,包括根据执行程序3中的指令执行的出错处理(error handling),和数据处理模块(下文称之为“矩阵单元”或“矩阵”)20,其中适合于专用数据处理的数据流或伪数据流由多个布置成矩阵的操作单元形成。通用处理器(下文也称作“RISC”)11也根据执行程序3控制矩阵20的配置,从而能够动态地改变矩阵20的配置。系统LSI 10还包括用于控制矩阵20中断操作的中断控制单元12、用于向矩阵20提供操作时钟信号的时钟发生器13、使计算电路能够更灵活地加以构建的FPGA单元14,和用于控制从/向外部输入和输出数据的总线控制单元15。处理器单元11和矩阵20通过数据总线17,通过它数据能够在处理器11和矩阵20之间相互交换,和指令总线18,其允许处理器11控制矩阵20的配置和操作。中断信号也从矩阵20通过信号线19供应给中断控制单元12,从而当矩阵20所进行的处理结束时,如果在处理期间出现了错误,矩阵20的状态便能够反馈给处理器11。
矩阵20和FPGA 14通过数据总线21相连。数据从矩阵20提供给FPGA 14,执行处理,且结果返回给矩阵20。矩阵20通过负载总线22和存储总线23与总线控制单元15相连,并用系统LSI 10的外部数据总线交换数据。因此,数据能够从外部DRAM 2或其它外部设备输入到矩阵20内,且矩阵20处理这些数据的结果能够输出返回给外部设备。处理器11也能够通过数据总线11a和总线控制单元15的组合体向/从外部设备输入和输出数据。如果处理器11构建成具有内部编码RAM或ROM,那么处理器11的执行程序(目标程序)3就能够预先存储在处理器11内。执行程序3还能够通过总线11a从LSI 10的外部提供。
图2显示了矩阵20的结构。矩阵20由68个操作单元(操作元件)30构成,它们布置成17条沿着水平或侧面方向(行方向)伸展的直线,和4条沿着垂直或长度方向(列方向)伸展的直线,从而多个操作单元30布置成阵列或矩阵。沿着水平方向伸展的行布线组51和沿着垂直方向伸展的列布线组52布置在这些操作单元30之间。列布线组52包括一对布线组52x和52y,其分别由列方向上位于操作单元30左侧和右侧的布线构成。数据通过这些布线组52x和52y提供给每一个操作单元30。列布线组52在从顶部数第9行的操作单元(DEL单元)处分开,且矩阵20分割成两个部分,其由第一矩阵28(其位于顶部并含有8行和4列操作单元30),和第二矩阵29(其位于底部并含有9行和4列操作单元30)构成。
图3显示了操作单元30和切换单元55的放大图,切换单元55设置在行布线组51和列布线组52之间的交叉点处。行布线组51含有足够的布线,以便从每个沿着行方向布置的操作单元30(在该实例中是4个操作单元30)传递字节(8位)数据或字(16位或32位)数据,也就是说,8-32位的数据。在本实施例的矩阵20中,行布线组51是具有用于至少4个通道的足够布线的总线。还提供了用于传递足够数量进位信号(其相应于数据量)的布线。
列布线组52也包括足够的用于向每个操作单元30提供字节或字单位数据的布线。在矩阵20的一个部分中,8个操作单元30布置成一列直线,从而本实施例中的列布线组52是具有用于足够8个通道的布线总线。还提供了用于传递相应于数据量的足够数量的进位信号的布线。
图4显示了在本实施例矩阵20的行布线组51和列布线组52中用于传递进位信号而提供的布线51c、52cx和52cy。进位信号能够用作显示进位的信号或用作显示真假的信号,且在矩阵20中,进位信号Ci由操作单元30中的如下单元所使用,即适合于算术运算和逻辑运算的数据路径单元(SMA)32b,用于延迟的数据路径单元(DEL)32c,和面向FPGA的数据路径单元(FPG)。因此进位信号布线51c、52cx和52cy设置成与含有这些数据路径单元的操作单元30相连。
设置在行布线组51和列布线组52之间每一个交叉点上的切换单元55构建成字节或字单位数据的可重组传递路径,并切换和连接行布线组51中的任何一个通道与列布线组52中的任何一个通道。图3所示的切换单元55包括多个用于选择行布线组51中的一个通道并将该通道与列布线组52相连的选择器58,和用于存储这些选择器58的设定的配置RAM 59。配置RAM 59中的数据根据处理器11所提供的数据而重写,从而行布线组51与列布线组52之间的连接能够在处理器11的控制下如所期望地加以动态控制。
图5所示的不同类型的切换单元56含有纵横交换器57,每一个纵横交换器57均与构成行布线组51的通道的布线和构成列布线组52的通道的布线相连,从而能够改变通道间的连接。这种类型的切换单元56还含有配置RAM或寄存器59,其中数据能够由处理器11加以设定,并能够自由地改变行布线组51和列布线组52之间的连接。
如图2所示,布置成矩阵20的每个操作单元30都含有一对选择器31x和31y,其用于分别从列布线组52x和52y选择输入数据,和数据路径单元32,其对选择器31x和31y所选择出的输入数据dix和diy执行专用处理并将输出数据d0输出到行布线组51。布置成矩阵20的多个操作单元30包括多种种类或类型的操作单元,其配备有适合于不同种类专用或特殊处理的数据路径。构成每一行的操作单元30,每一个都配备有相同的数据路径32,其提供相同类型的处理。也就是说,配备有用于执行不同处理的数据路径32的操作单元30布置在不同的行上。
布置在第1行上的元件或操作单元30与负载总线22相连,并含有适合于处理负载数据的数据路径单元32f。负载数据路径单元(LD)32f结构的一个实例如图6所示。LD 32f含有锁存输入数据和输出数据的触发器41,和在需要转换输出数据通道的情况下存储通道选择信息的配置RAM 39。LD 32f是用于执行输入指令即“输入”或“装载”的单元。LD 32f从负载总线22接收数据并将数据输出给行布线组51。应当注意,图2所示的“LD”及其它随后将加以解释的缩写如“BAL”、“LDA”、“SMA”和“DEL”,在本说明书中用于表示数据路径单元32和含有该类数据路径单元32的操作单元30的类型。
下面要说明的各种操作单元30每一个都具有配置RAM 39,且通过用RISC 11设定这些配置RAM 39的内容,操作单元30与行布线组51和列布线组52之间的连接能够动态地转换。当向操作单元30提供能够用选择器加以转换、改变和/或选择的数据路径和/或其中条件和参数(包括初始值)能够设定的功能时,数据路径和/或该功能能够通过设定配置RAM 39中的数据而加以控制。
布置在第2和第3行上的操作单元30,其每一个都含有适合于处理输出负载数据地址的数据路径单元32a。这些数据路径单元(BLA和LDA)32a结构的一个实例如图7所示。BLA和LDA 32a是用于根据指令如“input.address_external”和“input.address_internal”执行表示输入数据地址的指令(函数)的单元。BLA和LDA 32a包括由计数器和其它元件构成的地址发生器38。地址通过地址发布电路(address issuing circuit)38作为输出数据d0而输出,并通过行布线组51和列布线组52作为输入数据dix或diy而提供。每个数据路径单元32a还包括选择器42,其用于选择任何一个作为输入数据而提供的地址,和触发器41,其用于锁存输入数据和输出数据。因此,所装载的地址数据da从矩阵20输出到总线控制单元15。这些操作单元30的每一个还包括用于设定地址发生器38和选择器42状态的配置RAM 39。配置RAM 39的内容(数据)由处理器11设定,从而行布线组51与列布线组52的连接能够动态地加以改变,且地址发布电路38的设定能够自由地改变。
构成矩阵20第2行的操作单元30的BLA 32a发布模块负载的地址。另一方面,构成第3行的操作单元30的LDA 32a发布用于从模块已装载的数据中装载期望数据的地址。尽管数据路径单元BLA和LDA在细节结构上可以有一些不同,但这些单元分享相同的整体结构,如图7所示。
布置在第4和第5行上的操作单元30,其每一个都包括适合于算术运算和逻辑运算的数据路径单元32b。这些数据路径单元(SMA)32b结构的一个实例如图8所示。SMA 32b是用于计算的基本元件,包括位移电路43和掩蔽电路(mask circuit)44,其用于以位单位取出输入数据dix和diy,其以字节或字单位提供。每个SMA 32b还包括ALU(算术逻辑单位)45,其能够对输入数据dix和diy进行加法、减法、比较、逻辑“与”或逻辑“非”。一些SMA32b进一步包括用于合并和/或选择相邻SMA 32b计算结果的逻辑单位(LU)46。
SMA 32b还包括用于存储数据的配置RAM 39,这些数据选择和/或改变对位移电路43、掩蔽电路44、ALU 45和LU 46的处理。SMA 32b还包括用于锁存输入数据的触发器48、用于锁存输出数据的触发器49、和另一个用于调节时限的触发器FF或类似物。
SMA 32b支持算术运算指令和逻辑运算指令,如在书写具有加法、减法、比较、选择和其他逻辑运算功能的程序时所广泛使用的“加”、“减”、“比较”、“移位”、“与”和“选择”。这些计算处理中的哪一个或一些应当单独或组合执行的设置,能够根据配置RAM 39的内容(其由RISC 11设定)自由地加以控制,并且能够在任何时候加以改变。同样,固定或即刻数值能够用配置RAM 39设定为输入数据dix和diy。进位信号Cix和Ciy的设定条件相同。通过提供向ALU 45反馈输出数据d0的路径,还可能构建出状态机或计数器。还支持输入数据dix和diy的对换功能,且该功能也能够用于提高列布线组52的选择自由度和利用效率。
数据路径单位32b提供有能够输入和选择进位信号Cix和Ciy的路径,通过它便可能根据这些进位信号控制ALU 45和LU 46。还提供有用于输出与ALU 45的操作结果相关的进位信号C0的路径。对相邻SMA 32b的进位信号所执行的操作结果能够输入到ALU 45和LU 46,而不是仅仅选择进位信号。从而能够对一对进位信号执行操作,进而能够以极大的自由度使用该进位信号。
安装在SMA 32b左-右对中其中一个SMA 32b上的LU 46,能够对左侧SMA 32b的ALU和右侧SMA 32b的ALU的输出执行逻辑运算。为此,LU 46由配置RAM 39加以控制,并能够通过沿着行方向布置成相邻左-右位置的两个SMA 32b执行扩展功能。作为一个实例,当输入数据dix为32位长时,两条输入数据dix和diy能够表达成一条输入数据,从而以双精度(64位)执行处理。
在本实施例的矩阵20中,含有SMA 32b的执行单元30形成了第7、8、11和13行。
安装在第6行的操作单元30每一个都含有数据路径单元32c,其适合于处理延迟传递数据的时限。数据路径单元(DEL)32c结构的一个实例如图9所示。DEL 32c包括延迟电路47,其每一个都由多个选择器和触发器的组合构成,输入侧触发器48,输出侧触发器49,和用于选择电路的选择器42。每个延迟电路47的延迟能够由配置RAM 39中的数据设定为0-5时钟(clock),且X和Y系统中1-7时钟的延迟能够分别加以控制。根据配置RAM 39的设定,X系统和Y系统能够串联起来从而施加双倍延迟时间。与数据一起由行布线组51和列布线组52携带的进位信号Cix和Ciy也能够通过类似的数据路径延迟和输出。
通过提供配备有延迟数据路径DEL 32c的操作单元30,各种类型数据路径单元32内的信号延迟便能够按照需要加以调节。因此,便可能通过组合用于算术运算和逻辑运算的SMA 32b和用于乘法运算的MUL 32d(后面将进行说明)来调节在数据流形成时出现的延迟时间的差异,而不必给每个数据路径单元32都提供用于调节延迟的触发器和选择器。这简化了每个数据路径单元32的结构,提高了数据路径单元32的适用性,并且可能使每个数据路径单元32所占用的面积最小化。每个数据路径单元32可以配备有用于关闭输入数据的输入侧触发器48和用于锁存输出数据的输出侧触发器49,或者用于同时锁存输入数据和输出数据的触发器41,从而用于输出未经处理或已经过处理的输入数据所需的等待时间(潜伏时间)能够控制在时钟单位内。因此,通过DEL 32c的功能能够容易地补偿潜伏时间的差异,并且能够维持操作单元30组合体流水线计算的时限。
数据路径单元DEL 32c也起作用,从而将列布线组52提供的数据传递给行布线组51。布置在第9行上的操作单元30选择由第一矩阵28的列布线组52提供的数据,并将该数据输出到第二矩阵29的行布线组51。这样,第一矩阵28的数据能够用延迟数据路径单元DEL 32c的功能加以选择,并提供给第二矩阵29,从而第一矩阵28的列布线组52能够与第二矩阵29的列布线组52分开。因此,列布线组52的布线数量能够保持在如下数量,即覆盖一定数目的构成第一矩阵28或第二矩阵29的操作单元所需的数量,这便有可能减少布线占用的面积,从而简化切换单元55或56的结构,其用于从由布线组构成的布线组中选择数据。
当在矩阵20中构建数据流时,DEL 32c自动嵌入以进行时限调节或类似功能。还可能在程序中书写“延迟”指令,从而调节数据流之间或数据流与RISC处理器之间的时限,且在此情况下,DEL 32c用作执行延迟指令的操作单元。
布置在第10行上的操作单元30每一个都含有数据路径单元32d,其适合于执行“乘法”指令所表示的乘法处理。数据路径单元(MUL)32d结构的一个实例如图10所示。四个MUL 32d中的每一个都含有一个沿着行方向布置的16位*16位(32位结果)的乘法器MUL 61。还提供数据路径62和63,用于对四个乘法器MUL 61中每一个的输出执行计算处理。本实施例中用于乘法处理的数据路径单元MUL 32d的功能,能够通过组合该四个沿着行方向布置的MUL 32d而加以扩展。作为一个实例,乘法能够以二倍精度执行。因此,MUL 61、CSA 62、CPA 63和选择器64的功能由如下数据加以控制,其设定在数据路径单元32d的配置RAM 39内。
更详细地讲,最左边的MUL 61(AH*BH)将较高16位的输入数据dix与较高16位的输入数据diy相乘,下一个MUL 61(AH*BL)将较高16位的输入数据dix与较低16位的输入数据diy相乘,MUL 61(AL*BH)将较低16位的输入数据dix与较高16位的输入数据diy相乘,而MUL 61(AL*BL)将较低16位的输入数据dix与较低16位的输入数据diy相乘。之后,乘法器的结果通过CSA62和CPA 63加和在一起,从而沿着行方向布置的4个MUL 32d作为32位*32位(64位结果)的乘法器进行操作。尽管通过用SMA32b加和每个MUL 32d的乘法结果,也可能获得相同的结果,其中加和是通过将MUL 32d沿着行方向布置成直线并为执行加法的计算器添加少量专用布线而实现的,但是相同的结果也能够用较短的延迟、较少量的门而获得。
不对MUL 32d进行布置,通过给SMA 32b添加乘法功能而制造的数据路径单元(SMAM)可以设置在SMA 32b的位置上或者与SMA 32b布置在一起。一个操作单元30含有多少计算功能,以及如何通过设定配置RAM 39选择和使用操作单元的功能,取决于矩阵20的设计概念,并且可以与实施例不同。在本发明中,矩阵20包括多种类型的含有不同数据路径的操作单元30,虽然每个操作单元30能够处理的处理内容在范围或适用性上存在差异。因此,与如下矩阵相比,即其中布置了具有相同结构并支持所有类型处理的处理单元,显然减少了冗余和无用空间的数量,减少了冗余和无用处理时间,改善了AC性能。
布置在第14行上的操作单元30每一个都含有数据路径单元32,其作为安装在矩阵20外部的FPGA 14界面。起界面功能的数据路径单元(FPG)32e的结构如图11(a)所示。FPG 32e包括用于选择输入数据的选择器42、用于锁存输入数据并将输入数据提供给脱片(offchip)FPGA 14的触发器48、和用于锁存脱片(offchip)FPGA14的输出并设定该输出作为输出数据的触发器49。通过使用该FPG32e,矩阵20内的处理便能够通过向中断芯片FPGA 14提供输入数据并在FPGA 14内进行处理之后将数据返回给矩阵20而连续执行。对支持如下指令的操作单元,即在LSI 10所执行的应用程序中出现非常频繁的指令,加以选择、设计和布置,作为安装在矩阵20内的操作单元30。一旦安装,功能适用性有限的操作单元30将降低面积效率,所以这种操作单元30不布置在矩阵20内。通过提供数据路径单元FPG 32e,该适用性有限的处理和功能就能够用硬件以高速加以处理。
每个FPG 32e都是向矩阵引入外部界面的数据路径单元,具有良好的通用适用性,并具有能够不仅限于连接FPGA的外部处理电路。FPG 32e能够连接ASIC或其它LSI,其可以包括本实施例的矩阵20。
布置在第15和16行上的操作单元30含有数据路径单元STA和BSA,其适合于发布用于存储操作的地址。数据路径单元STA和BSA执行表示输出地址的指令,指令形式与上面提到的表示输入地址的指令相同。与图7所示数据路径单元32a相同类型的电路能够用作发布地址的功能元件。有两种类型的地址会发布给存储器,即用数据路径单元BSA发布用于存储已转换给模块的数据的地址,和用数据路径单元STA发布用于前模块的地址。
含有数据路径单元ST(其适合于根据诸如“输出”和“存储”指令输出数据)的操作单元30布置在位于底部的第17行上。尽管这些数据路径单元也称作数据路径单元ST,但是也能够使用结构与用于算术运算的数据路径单元32b基本相同的数据路径单元。当为矩阵20内的算术运算结果指出外部存储地址时,数据便通过操作单元ST而输出。
本发明中操作单元30的类型并不仅限于上面给出的例子。图11(b)显示了数据路径单元(RAM)32g的结构,其包括用于查询表的SRAM 65。输入数据dix能够用作地址,而输入数据diy能够用作数据,从而当数据和地址同时提供时便能够执行写入,而当仅提供地址时便执行读出。SRAM 65配备有多个存储体(bank),其使用能够根据配置RAM 39的设定而切换。当四个RAM 32g沿着行方向布置成直线时,RAM 32g便能够当四个8位RAM、两个16位RAM或一个32位RAM使用。数据路径单元32g能够当查询表使用,其根据对字节或字单位的输入数据所执行的期望功能而获得输出数据。这在通过矩阵20实现余弦转换处理或CRC计算时是有用的。
本发明的系统LSI 10是集成电路器件的一个实例,含有多个操作单元30,其沿着第一方向(在本实施例中是行或水平方向)和第二方向(在本实施例中是列方向或垂直方向)布置成矩阵。该多个操作单元30包括多种种类或类型的操作单元,其都含有适合于不同专用处理的数据路径单元32,数据路径单元32具有适合于输入数据的数据路径单元32f、适合于处理发布数据地址的数据路径单元32a、适合于处理或逻辑运算的数据路径单元32b、适合于乘法处理的数据路径单元32d、和上面作为例子给出的适合于处理延迟数据传递的数据路径单元32c。在多种类型操作单元30之间传递数据的行布线组51和列布线组52之间的连接由切换单元55加以控制,并通过改变这些操作单元30之间的连接,能够在矩阵20内定义执行期望数据处理的数据流类型专用计算电路。这意味着,本实施例的矩阵20能够在短时间内通过改变操作单元30之间的连接而重组为具有不同处理内容的专用计算电路,而不必象FPGA那样改变所有晶体管之间的连接。与FPGA的逻辑模块不同,操作单元30不具有如下的结构,即要求在晶体管水平上具有通用适用性,且每个操作单元30都含有用于专用处理的数据路径单元32,从而能够省去冗余电路并提高封装密度。因此,有可能提供一种紧凑、经济的系统,其中硬件的处理内容能够加以改变。冗余部件的数量能够显著减少,从而与FPGA相比,处理速度能够大幅上升,AC性能也能够改善。
如图6-11所示,适合于不同处理的数据路径单元32a-32g具有不同的结构。因此每个数据路径单元都能够以高速度执行其所倾向的处理,但是每个数据路径单元所占用的面积存在差异。出于这个原因,在本实施例的矩阵20中,含有相同功能数据路径单元32的操作单元30沿着行方向布置成直线,从而即使操作单元30所占用的面积根据操作单元30中数据路径单元32的类型而不同,也能够维持行方向上的线性。即使数据路径单元32的类型不同,通过使各行之间的间隔相等从而使行方向上的斜度相同,同样能够维持列方向上的线性。这使得以线性方式布置行布线组51和列布线组52成为可能。
也就是说,通过将具有相同数据路径单元32的操作单元30沿着行方向且之间以相同的间隔布置,操作单元30之间尺寸的差异便能够由列方向上的间隔抵消,从而即使列方向上的间隔每行之间均不同,也能够维持线性,且布线也能够象行布线组51一样加以线性布置。也有可能设计出行方向和列方向互换的矩阵20,这种矩阵也在本发明的范围之内。
如上所述,有可能以极高的效率将尺寸不同且所具有的数据路径单元32的结构也不同的操作单元30布置成矩阵。还有可能对连接这些操作单元30的行和列布线组的布线组(总线)加以线性布置。因此能够提供更加紧凑、成本低廉且制成后仍能够设定功能的可重组集成电路器件。相对于FPGA,能够进行高速处理并具有良好AC性能的操作单元30能够布置成更加紧凑的布置并且用尽可能短的布线连接,从而便能够提供可进行最高速度处理的集成电路器件。
这样,当矩阵20起数据流类型处理器件或装置的功能时,将具有相同功能数据路径单元32的操作单元30沿着行方向进行布置是有效的。作为一个实例,在上面的情况下,用于输入数据的操作单元30沿着位于列方向一端的第1行进行布置,用于输出数据的操作单元30沿着位于列方向另一端的第17行进行布置。当从宽的视角进行观察时,在矩阵20内形成了一条或多条从顶部朝向底部的数据流,其中适合于其他处理的操作单元30相应于数据流进行布置。使用行布线组51和列布线组52还可能形成一条或多条从底部朝向顶部的数据流,从而可能执行如下的数据处理,其能够最大地利用布置在矩阵20内的操作单元30。
正如适合于算术运算的数据路径单元32b和适合于乘法的数据路径单元32d一样,相同类型的操作单元30能够通过将操作单元30沿着相同的方向布置而连接在一起。在矩阵20中,操作单元30能够分离地使用,且扩展计算功能,如具有更高精度的操作,也能够通过编组或连接沿着行方向布置的操作单元而提供。
每个操作单元30、每个切换单元55或56都含有配置存储器,通过配置存储器,这些单元能够由处理器11的设定数据分别地加以控制。因此,操作单元30的配置能够由处理器11自由地加以改变,并且与电路在晶体管水平进行映射的FPGA不同,有可能改变的操作单元30的配置,其含有适合于事先执行或构建的专用处理的数据路径单元32,从而能够在短时间内,几乎在一个时钟内,改变操作单元30组合体所执行的功能。
此外,在每个操作单元30中,构成数据路径单元32的逻辑门(如选择器和ALU)的功能,能够由处理器11通过配置RAM 39而分别地加以设定。结果,操作单元30自身的功能能够在数据路径单元32所能够提供的功能范围内灵活地加以改变。利用本实施例的矩阵20,数据流或伪数据流能够处理极宽范围的功能。有可能要选择和布置操作单元30的类型,其适合于使用LSI 10的应用,如网络处理或图象处理,从而能够实现具有高封装效率的集成电路器件。
应当注意,在本实施例中,除了有可能如上所述地交换行布线组51和列布线组52之外,行和列也能够象操作单元30的布置方向一样进行交换。数据也可以通过行布线组和列布线组中的任何一个从/向操作单元30输入/输出。然而,如上面说明的矩阵20所示,通过设定如下规则,即数据由一个布线组输入(在上面的例子中是列布线组52)并由另一个布线组输出(在上面的例子中是行布线组51),通常数据能够从一个操作单元30通过一个切换单元55转移到另一个操作单元。
图12显示了与本发明相关的LSI的不同实例。在图12中,省略了中断控制单元12和时钟发生单元13,尽管在图1所示的LSI中含有相同类型的单元。在本实例LSI 10的矩阵20中,六个操作单元30布置在第二行之后的行上。其中左侧的四个操作单元30是每一个都含有数据路径单元32g(其起RAM的作用)的操作单元30;每一个都含有数据路径单元32a(其起发布待装载数据地址的BLA作用)的操作单元30;和每一个都含有数据路径单元32a(其也起发布地址的LDA作用)的操作单元30。然而位于每行右侧的两个操作单元30是每一个都含有数据路径单元32b(其起支持算术和逻辑运算的SMA作用)的操作单元30。这是因为在选择操作单元30时,起SMA 32b作用的操作单元的选择数量需要比其他类型的操作单元更多,以满足本LSI 10所要求的规格。和前面一样,通过将SMA 32b逻辑单元按照与其他类型操作单元相同的布置方式加以布置有可能设计出矩阵20,其中每一行有四个操作单元30布置成直线。尽管依赖于构成LSI 10的其他单元的布置,但是单考虑矩阵20,这种布置在高度或长度(列)方向上拉长了,这降低了面积效率。同样,因为长度方向上行数的增加,列布线组52载荷的增加和段(segment)数的增加,结果需要DEL 32c逻辑单元,并降低了处理速度。
在本实例的矩阵20中,大量具有SMA 32b的操作单元30通过添加其他类型的操作单元30而沿着行方向布置,从而矩阵20的整体形状近似于正方形。在该矩阵20中,布置在相同行上的所有操作单元并不需要是相同的类型。然而,在布置有较少量操作单元30(其含有例如RAM 32g、BLA和LDA)的区域内,相同类型的操作单元30沿着行方向布置,从而能够保持行方向上的线性。列方向的线性如较早前所说明的通过将各种类型的操作单元30以相等的斜度沿着行方向布置而加以保持。
在本实例的矩阵20中,6个输入缓冲器24和6个输出缓冲器25分别布置在负载总线22和存储总线23上。其中,2个输入缓冲器24和2个输出缓冲器25在总线控制单元15位置处分别与扩展输入(扩充或无限制)界面26和扩展输出(扩充或无限制)界面27相连。扩展界面26和27用作矩阵20之间的界面。因此,有可能将多个矩阵20布置在同一个芯片上,并有可能用扩展界面26和27连接矩阵20,或用扩展界面26和27将多个芯片10与矩阵20相连。
通过使用扩展界面26和27,数据流类型计算机或处理器能够通过使用多个含有矩阵20的LSI 10加以扩展或伸展。通过增加可被连接的矩阵20的数目,便能够增加可被连接的操作单元30的数目,从而有可能执行更复杂的处理。这还能通过改变操作单元30的配置而增加矩阵能够重组的范围,从而能够提供更加灵活的集成电路器件。具有改进性能(例如平行性增加)的操作单元30的配置,也能够灵活地加以选择。还可能通过沿着三个方向布置多个矩阵20构建出三维矩阵。
图13(a)显示了计算处理系统或集成电路器件9,其中矩阵20通过用扩展界面26和27连接n个LSI 10而有效地扩展了n倍。这些LSI能够组合成二维或三维。
在连接有多个LSI 10的系统9中,有可能使用扩展界面26和27作为用于向多个矩阵20或含有该矩阵20的LSI 10传递所需信息的总线。图13(b)-13(d)显示了各种实例。在图13(b)中,LSI 10通过扩展界面而连接成链。在图13(c)中,LSI 10连接成树状形式。在图13(d)中,LSI 10连接成环状形式。
可以使用简单的运算法则传递数据,作为一个实例,可以事先提供简单的程序从而为每个LSI 10发送初始设定。用于控制系统9的LSI(在使用链状连接形式时是链中的第一个LSI,在使用树状连接形式时是树顶部的LSI,或LSI环中的任何一个LSI),为下一个LSI 10提供数据形式的信息和权标(token),且接收该信息的LSI将该信息作为自身使用的信息(information intended for itself)加以处理并同时将该信息传递给下一个LSI 10。在每个矩阵20中,信息内容的判断以及至于信息是否准备由该矩阵20使用,能够用矩阵20中的任何一个操作单元30加以定义。信息的传递终点可以是含有RAM功能元件的操作单元30、处理器11的RAM或每个操作单元30的配置RAM 39。
发送的信息包括用于RISC处理器11的程序3、设定在矩阵20的配置RAM 39内的信息及类似信息。为了将信息设定在配置RAM39内,从扩展输入界面26接收的设定信息能够通过输入总线23和总线控制单元15用矩阵20的存储功能元件表示操作单元30配置RAM 39的地址而写入。信息可以暂时存储在外部DRAM2中,并能够用处理器11的功能元件传递给配置RAM 39。
传递信息还包括用于控制过时限的信息。数据能够以恒定周期(如1秒间隔)作为系统9的基本时钟而加以传递,从而能够使构成系统9的多个LSI 10内的处理同步化。
图14显示了本实施例LSI 10的设计和制造方法。一旦提供了待由LSI 10执行的作为规范(specification)71的处理,便执行用于将规范71转换成源文件73的处理72,源文件73用编程语言书写并由LSI 10执行。该转换处理72参考操作单元库79并将用标准高级语言如ANSI-C书写的规范71转换成中间表达73,其用编程语言书写(下文称作“中间语言”)并包括操作单元30所支持的指令。该转换处理72可以手动执行,或者用软件如编译程序执行。
在构成矩阵20的操作单元30中,操作单元LD含有数据路径单元32f并适合于处理用于输入数据的输入指令。操作单元BLA和LDA含有数据路径单元32a并适合于处理表示输入数据地址的指令。操作单元ST适合于处理用于输出数据的输出指令。操作单元BSA和STA含有数据路径单元32a并适合于处理表示待输出数据地址的指令。操作单元SMA含有数据路径单元32b并适合于处理算术运算指令和/或逻辑运算指令,而操作单元MUL含有数据路径单元32d并适合于处理乘法指令。这些操作单元30以字节或字单位处理数据,因此,一个操作单元30适合于执行一个指令或多个指令的处理。
因此,构成矩阵20的多种类型操作单元30能够支持数据的输入和输出指令、算术运算指令和逻辑运算指令,从而数据的输入和输出处理、算术处理和逻辑处理能够用操作单元30所支持的指令系列(中间语言)加以描述。对于重复执行输入/输出处理、信号处理和算术运算处理和/或逻辑运算处理的处理,也就是说循环处理,如果使用RISC处理器11并用有限的硬件资源在软件中进行重复处理的话,将难以提高处理速度。另一方面,利用本实施例的矩阵20,该处理能够分配在大量的硬件资源上,该硬件资源能够以操作单元的形式实现,从而能够通过使这些操作单元同时平行地进行操作而提高性能。因此,处理速度能够以简单的方式加以提高,即用性能分析器或类似物发现该处理,然后将该处理转换入硬件。
通过转换所提供的规范73而产生的中间表达,包括用C语言书写并由RISC处理器11执行的部分73a,和用中间语言书写并能够由矩阵20执行的部分73b。该部分73b,其是中间语言形式的中间表达,如图17所示。部分73b反映(reflect)了操作单元30所支持的指令,是以某种方式表达处理过程的描述,其能够转换成数据流程序或具有附加控制信息的控制数据流程序。因此,与HDL(硬件描述语言)或类似物不同,该系统的规范能够被设计者理解,从而在改变或修改系统时,这些改变或修正能够容易地用中间描述73b加以反映。中间语言的一种类型是类似汇编的语言,例如类似宏汇编的语言。这些语言的难度比C语言低且容易保持线性度,从而能够容易地生成数据流程序,且当该数据流程序映射到矩阵20上时,人们能够容易地了解所使用的配置是什么。因此,该语言有利于矩阵20和程序的开发,调试和维持也变得容易。
用中间语言描述的部分73b用操作单元30所支持的指令加以书写,从而该部分73b的处理能够表达为矩阵20中操作单元30的配置。然后,定位和选路处理75生成操作单元30的一个或多个配置(“执行配置”)76,其能够执行用中间语言加以描述的处理73b。该过程通过编译程序(软件)执行。一旦生成了执行配置76,便输出矩阵20,(其中设置有操作单元30以实现执行配置76)的信息78。如果矩阵20是根据该信息78而制造的,那么LSI 10的基础设计便完成了,并且以此为基础便能够制造出LSI 10。同时还生成了用于表示执行配置76的指令80。然后,在中间语言描述73b的位置处生成C源文件74,其包括表示执行配置76的指令80和运行该配置的指令,并用C编译程序进行编译从而生成由LSI 10执行的程序(目标程序)3。
如果不需要改变矩阵20内操作单元30的配置从而执行所提供的规范71,则不需要生成表示配置的指令,这足以生成含有如下操作单元30的矩阵20,该操作单元30能够执行用中间语言书写的部分73b的处理。在用现有的矩阵20执行所提供的规范71时,并不生成矩阵20。在这种情况下,生成用于将操作单元30(其已经布置在矩阵20内)的配置设定在执行配置76内的指令80,用于代替用中间语言书写的部分73b,然后进行编译从而生成执行程序3。
为了调节操作单元30之间处理的时限,在定位和选路处理75中必须产生包括延迟操作单元DEL(其含有数据路径单元32c)的执行配置76。在定位和选路处理75中,需要通过重复执行具有不同布局的矩阵20的设计步骤来发现合适的配置,并证实是否所有的执行配置都能够用合适的运算法则加以应用。
在每个操作单元30中,内部数据路径的配置能够用配置RAM39加以改变或选择。在含有数据路径单元32b的操作单元SMA中,操作的内容或细节需要用配置RAM 39加以设定。因此,在定位和选路处理75中,需要产生如下的执行配置,其包括已组合操作单元30的内部数据路径32的配置。操作单元30的设定提供给矩阵20,从而在每个操作单元30的配置RAM 39中,这些设定能够用表示该配置的执行程序3的指令激活。
下面参考图15-21描述生成操作单元30的配置的过程。图15是显示编译程序75的处理过程的流程图,其用于执行定位和选路处理。首先,在步骤91,图18所示的数据流程序(DFG)101由图17所示的中间语言描述73b生成。在需要多个数据流程序101时,要生成多个数据流程序101。接着,在步骤92生成矩阵20,其具有合适的布置并含有能够构成这些数据流程序101的操作单元30,然后在步骤93,为每个数据流程序101分别执行定位和选路(placing androuting),从而能够发现矩阵20的布置(其中能够分配所有的数据流程序101)和相应于矩阵20的执行配置。在步骤94,当定位和选路处理中不可能存在一个或多个数据流程序101时,便认为定位和选路处理的结果不可能用于本矩阵,且处理返回到步骤92,在其中生成一个具有新布置的矩阵20。执行输出数据处理的操作单元ST定位在矩阵20的输出侧,如果数据流程序101能够用最多全部操作单元ST进行分配,便认为定位和选路处理的结果是成功的。
在图16中,流程图显示了用于生成操作单元30的配置以执行一个数据流程序101的处理。为了能够容易地保持线性,优选地将操作单元30依次从数据流程序101下游端开始进行分配。因此,在步骤111,接下来确认是否能够在合适的位置处发现数据流程序101端部分的操作单元,以及该操作单元是否能够与输出数据的操作单元ST连线。在步骤112,如果能够发现合适的操作单元30和连接操作单元30的布线组,该步骤中定位和选路处理的结果便认为是成功的。接着在步骤113,标记所发现的资源,即操作单元30和布线组,并且将端部操作单元30标记为已完成布局。之后在步骤114,通过从下游端到上游端追踪数据流程序而确认是否能够发现变成为所标记的已完成布局的操作单元30的输入源的一个操作单元30,并且是否可能对其进行布线和选路。在步骤115,当输入源操作单元30能够在合适的位置被发现并且能够对其进行路由选择,能够发现和布局所有的输入源操作单元30并可能对其进行布线,数据流程序101便配置在矩阵20内。
图18所示的数据流程序101执行两种条件的两条输入数据以获得输出数据,并能够用图19所示的操作单元30的配置替代。更详细地讲,从下游端开始,该配置包括输出操作单元ST、两个用于算术运算的操作单元SMA和两个输入逻辑单元LD。两个时钟由两个用于算术运算的操作单元SMA共同消耗,从而用于调节该时钟(延迟)的延迟逻辑单元DEL包含在该配置内。同样,取决于矩阵20的布置,用于调节延迟的DEL需要适当地包含在该配置内。
图20显示的是如何将数据流程序101分配在矩阵20内。位于流程序端部的操作单元SMA在与用于输出操作单元SMA所产生数值的操作单元ST相同的列内发现。操作单元DEL,其是由该操作单元SMA进行加和的某一数值的输入源,在与操作单元SMA相同的列内发现,同时作为其他输入源的操作单元SMA在相邻的列内发现。图20所示的矩阵20分为三个片段29,从而操作单元LD,其是同一列内的操作单元DEL的输入源,能够通过两个另外的操作单元DEL与该操作单元DEL相连。同样,操作单元LD,其是相邻列内的操作单元SMA的输入源,能够通过两个操作单元DEL与操作单元SMA相连。因此,映射到矩阵20上的数据流程序101的实际配置如图21所示。表示该配置的指令80合并在含有该矩阵20的LSI10的执行程序3内,RISC处理器11依据指令80控制矩阵20的配置。这样,中间描述73b的处理便由矩阵20中的硬件加以执行。
如上所述,本发明的集成电路器件包括数据处理模块(矩阵),其中布置有含有适合于专用处理的数据路径的不同类型操作单元,并通过选择和定义各种类型操作单元的配置或多种配置,而能够在极短的时间内设计和制造出能够执行硬件中所提供的部分或全部规范的集成电路器件。布置在数据处理模块中的操作单元安装有用于执行指令的功能元件,从而仅通过将所提供的规范转换成用中间语言,其包括操作单元所支持的指令,书写的描述,软件处理便能够转换成硬件处理。同样,由该数据处理模块执行的处理能够仅通过发现操作单元的配置而加以定义。这意味着,为了制造用于执行所提供规范的硬件,不需要使用硬件描述语言,不需要在晶体管水平执行配置的逻辑合成然后生成硬件,或者执行转换成能够装载到FPGA内的信息的转换。所产生的用于生成操作单元配置的中间语言描述,是能够使设计者可以容易地掌握该处理的编程语言,并可能以很大的灵活性在短时间内进行修正和修改。
布置在数据处理模块内的操作单元并不是全都必须具有广泛的适用性、每一个都要有相同的结构,于是含有不同的或单一的适合于执行指令所表达处理的数据路径,结果在电路中几乎没有冗余。这便有可能提供紧凑、经济的集成电路器件。还有可能提供具有较高处理速度和良好AC性能的集成电路器件。在该集成电路器件中,由多个操作单元构成或设定的功能能够较容易地在一个时钟内加以改变,从而包括操作单元和布线组的资源,其构成了数据路径模块,能够有效地用于多种处理。
上面说明的实施例仅是本发明的一个实例,且如本专利说明所公开的,可能有各种的变本。作为一个实例,数据流程序,其由布置在矩阵内的操作单元的配置定义,包括所有的从固定在矩阵中的数据流程序到能够由矩阵中的程序进行动态重建的数据流程序。对操作单元的配置和操作单元内数据选择的控制并不仅限于RISC处理器的指示,从而能够由另一个LSI、另一个矩阵,或者甚至由矩阵内的一个操作单元加以指示。上面说明的操作单元是含有适合于专用处理(如算术运算、逻辑运算、乘法、延迟等)的数据路径的实例,但是操作单元所含有的数据路径的功能和结构并不仅限于这些实例。同样,布置在矩阵中的操作单元的类型也不仅限于上面说明的实例。本发明的效果也能够通过生成各种类型的操作单元、布置这些操作单元并用总线连接这些操作单元而获得,这些操作单元含有具有如下功能的数据路径,即适合于待由本发明数据处理装置执行的应用。
工业应用
本发明的集成电路器件或装置可以提供作为能够执行各种数据处理的系统LSI。同样,本发明的集成电路器件并不仅限于电子电路,也能够适用于光学电路或光电子电路。本发明的集成电路器件能够用可重建的硬件以较高速度执行数据处理,并能够优选地用作需要高速、实时操作的数据处理装置,如用于网络处理或图象处理的数据处理装置。
Claims (23)
1.一种集成电路器件,包括数据处理模块,该数据处理模块包括:
多个操作单元,其沿着一个矩阵的第一和第二方向布置;
多个第一布线组,其相应于沿着第一方向的多个操作单元的布置而沿着第一方向延伸,并传递每个操作单元的输入数据和/或输出数据;
多个第二布线组,其相应于沿着第二方向的多个操作单元的布置而沿着第二方向延伸,并传递每个操作单元的输入数据和/或输出数据;和
多个切换单元,其位于第一布线组和第二布线组之间的每个交叉点处,并能够选择和连接第一布线组中含有的任何布线与第二布线组中含有的任何布线,
其中所述多个操作单元被分为包含适合于专用处理的不同数据路径的多种类型的操作单元,并且相同类型的操作单元至少在一部分数据处理模块中形成沿第一方向或第二方向的布置,以及
其中所述多种类型的操作单元包括延迟类型的操作单元,其包含适合于进行处理以便延迟数据的传递时间的数据路径。
2.根据权利要求1的集成电路器件,
其中多种类型的操作单元以相等的间隔沿着第一方向布置。
3.根据权利要求1的集成电路器件,
其中多种类型的操作单元包括不同类型的操作单元,它们包含适合于指令级的至少一种不同的处理的数据路径。
4.根据权利要求1的集成电路器件,
其中多种类型的操作单元包括如下的操作单元,它们包含适合于处理输入和/或输出数据并且布置在数据处理模块一端和另端上的数据路径。
5.根据权利要求1的集成电路器件,
其中每个操作单元包括用于锁存输入数据的触发器和用于锁存输出数据的触发器,且所述触发器用时钟单元控制,所述时钟单元用于确立在每个操作单元内所消耗的时钟数目。
6.根据权利要求1的集成电路器件,
其中多种类型的操作单元包括至少一种如下类型的操作单元,其包含用于链接另一个沿着相同方向布置的操作单元并提供扩展的操作功能的路径。
7.根据权利要求1的集成电路器件,
其中每个操作单元包含用于选择第一布线组和/或第二布线组中所含的布线并输入和/或输出信号的装置。
8.根据权利要求7的集成电路器件,
其中每个操作单元包含用于存储布线选择的可重写配置存储器,且每个切换单元包含用于存储布线选择的可重写配置存储器。
9.根据权利要求8的集成电路器件,
其中每个操作单元包含用于改变和/或选择部分内部数据路径的装置,并且该配置存储器存储内部数据路径的改变和/或选择。
10.根据权利要求9的集成电路器件,
其中内部数据路径适合于至少一种指令级的处理。
11.根据权利要求8的集成电路器件,
进一步包括能够重写配置存储器内容的通用处理器。
12.根据权利要求1的集成电路器件,进一步包括多个数据处理模块和连接该多个数据处理模块的第三布线组。
13.根据权利要求1的集成电路器件,
其中每个操作单元都以字节单位和/或字单位处理数据。
14.根据权利要求1的集成电路器件,
其中第一和第二布线组包括用于传递数据的总线布线和用于传递进位信号的进位布线。
15.根据权利要求1的集成电路器件,
其中每个操作单元包含用于从第二布线组中所包含的任何布线输入信号的装置,和用于向第一布线组中所包含的任何布线输出信号的装置,以及
所述第二布线组包含一对沿着第二方向在多个操作单元排列的两侧延伸的布线组。
16.根据权利要求1的集成电路器件,
其中数据处理模块包括第一矩阵和第二矩阵,它们通过延迟类型操作单元的排列而连接。
17.根据权利要求1的集成电路器件,
其中多种类型的操作单元至少包含如下操作单元中的一种:
第一类操作单元,包含适合于数据输入处理的数据路径;
第二类操作单元,包含适合于表示输入数据地址的处理的数据路径;
第三类操作单元,包含适合于数据输出处理的数据路径;
第四类操作单元,包含适合于表示待输出数据地址的处理的数据路径;
第五类操作单元,包含适合于处理算术运算和/或逻辑运算的数据路径;
第六类操作单元,包含适合于乘法处理的数据路径;
第七类操作单元,包含适合于连接位于数据处理模块外部的计算电路的处理的数据路径;和
第八类操作单元,包含用查询表选择其处理的数据路径。
18.一种集成电路器件,包括数据处理模块,该数据处理模块包括多种类型的操作单元和用于连接所述多种类型操作单元的布线组,
其中该多种类型的操作单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于执行至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,其中布线组包括:
多个第一布线组,其相应于多种类型操作单元布置的第一方向而沿着第一方向延伸,并传递每个操作单元的输入数据和/或输出数据;
多个第二布线组,其相应于多种类型操作单元布置的第二方向而沿着第二方向延伸,并传递每个操作单元的输入数据和/或输出数据;和
多个切换单元,其位于第一布线组与第二布线组之间的每个交叉点处,并能够选择和连接第一布线组所包含的任何布线到第二布线组所包含的任何布线,
其中所述多个操作单元中的每一个包含用于选择第一布线组和/或第二布线组所包含的任何布线并输入和/或输出信号的装置,并且
其中布线组通过改变提供给该多种类型操作单元的数据的路由而改变用于数据处理的配置。
19.一种集成电路器件的设计方法,该集成电路器件包括由多种类型操作单元和布线组构成的数据处理模块,其中所述操作单元沿着第一方向和第二方向布置成矩阵,所述布线组连接该多种类型的操作单元,该多种类型的操作单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于处理至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,
该设计方法包括如下步骤:
将集成电路器件中所执行的至少一部分处理转换成用编程语言书写的中间描述,该编程语言包含由该多种类型操作单元中的相应类型操作单元执行的指令;
产生包括该多种类型操作单元和延迟类型操作单元的执行配置,该延迟类型操作单元用于调节时限,该执行配置能够执行中间描述的处理;和
产生数据处理模块,其中布置有多种类型的操作单元从而能够实现所述执行配置。
20.一种集成电路器件的设计方法,该集成电路器件包括如下数据处理模块,其中布置有多种类型的操作单元,且其中用于数据处理的该多种类型操作单元的配置通过改变由布线组提供给该多种类型操作单元的数据的路由而改变,该多种类型的操作单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于处理至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,
该设计方法包括如下步骤:
将集成电路器件中所执行的至少一部分处理转换成用编程语言书写的中间描述,该编程语言包含由该多种类型操作单元中的相应类型操作单元执行的指令;
产生包括该多种类型操作单元和延迟类型操作单元的执行配置,该延迟类型操作单元用于调节时限,该执行配置能够执行中间描述的处理;
产生数据处理模块,其中布置有执行配置所需的多种类型操作单元;和
产生用于该集成电路器件的执行程序,该执行程序包括表示执行配置的指令。
21.根据权利要求20的设计方法,
其中该多种类型操作单元中至少一种类型的操作单元包含适合于处理至少一种指令的内部数据路径和用于选择和/或改变部分内部数据路径的装置,并且
在用于产生执行配置的步骤中包括,产生还包括内部数据路径的选择和/或改变的执行配置。
22.一种为集成电路器件生成执行程序的方法,该集成电路器件包括数据处理模块,其中布置有多种类型的操作单元,并且其中用于数据处理的多种类型操作单元的配置通过改变由布线组提供给多种类型操作单元的数据的路由而改变,该多种类型操作的单元包括不同类型的操作单元和一延迟类型的操作单元,所述不同类型的操作单元包含适合于处理至少一种不同指令的数据路径,所述延迟类型的操作单元包含适合于进行处理以便延迟数据传递时间的数据路径,
该生成方法包括如下步骤:
将集成电路器件中所执行的至少一部分处理转换成用编程语言书写的中间描述,该编程语言包括由该多种类型操作单元中的相应类型操作单元执行的指令;
产生包括该多种类型操作单元和延迟类型操作单元的执行配置,该延迟类型操作单元用于调节时限,该执行配置能够执行中间描述的处理;和
产生执行程序,其包括用于表示执行配置的指令。
23.根据权利要求22的生成方法,
其中该多个操作单元中的至少一个包含适合于处理至少一种指令的内部数据路径和用于选择和/或改变部分内部数据路径的装置,并且
在用于产生执行配置的步骤中包括,产生还包括内部数据路径的选择和/或改变的执行配置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP155759/2001 | 2001-05-24 | ||
JP2001155759 | 2001-05-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1518798A CN1518798A (zh) | 2004-08-04 |
CN1274085C true CN1274085C (zh) | 2006-09-06 |
Family
ID=18999886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028104188A Expired - Lifetime CN1274085C (zh) | 2001-05-24 | 2002-05-24 | 集成电路器件及其设计方法 |
Country Status (9)
Country | Link |
---|---|
US (2) | US7191312B2 (zh) |
EP (1) | EP1391991A4 (zh) |
JP (1) | JP4208577B2 (zh) |
KR (1) | KR100952760B1 (zh) |
CN (1) | CN1274085C (zh) |
CA (1) | CA2448549A1 (zh) |
EA (1) | EA005344B1 (zh) |
TW (1) | TWI234737B (zh) |
WO (1) | WO2002095946A1 (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8412915B2 (en) * | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
EP1620806A2 (en) * | 2003-04-03 | 2006-02-01 | Koninklijke Philips Electronics N.V. | Runtime configurable virtual video pipeline |
JP2005018626A (ja) * | 2003-06-27 | 2005-01-20 | Ip Flex Kk | 並列処理システムの生成方法 |
JP4423953B2 (ja) * | 2003-07-09 | 2010-03-03 | 株式会社日立製作所 | 半導体集積回路 |
JP3887622B2 (ja) * | 2003-10-17 | 2007-02-28 | 松下電器産業株式会社 | データ処理装置 |
US20050102573A1 (en) * | 2003-11-03 | 2005-05-12 | Macronix International Co., Ltd. | In-circuit configuration architecture for embedded configurable logic array |
US20050097499A1 (en) * | 2003-11-03 | 2005-05-05 | Macronix International Co., Ltd. | In-circuit configuration architecture with non-volatile configuration store for embedded configurable logic array |
US20050093572A1 (en) * | 2003-11-03 | 2005-05-05 | Macronix International Co., Ltd. | In-circuit configuration architecture with configuration on initialization function for embedded configurable logic array |
US7425841B2 (en) * | 2004-02-14 | 2008-09-16 | Tabula Inc. | Configurable circuits, IC's, and systems |
WO2005091160A1 (ja) * | 2004-03-19 | 2005-09-29 | Ipflex Inc. | 活性化コードの生成方法 |
JP4546775B2 (ja) | 2004-06-30 | 2010-09-15 | 富士通株式会社 | 時分割多重処理可能なリコンフィギュラブル回路 |
CN100578545C (zh) | 2004-08-20 | 2010-01-06 | Ip菲力股份有限公司 | 标记图像的生成方法和图像处理系统 |
US7330050B2 (en) | 2004-11-08 | 2008-02-12 | Tabula, Inc. | Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements |
JP3810419B2 (ja) | 2004-12-07 | 2006-08-16 | 松下電器産業株式会社 | 再構成可能な信号処理プロセッサ |
JP4810090B2 (ja) | 2004-12-20 | 2011-11-09 | キヤノン株式会社 | データ処理装置 |
JP4654731B2 (ja) * | 2005-03-31 | 2011-03-23 | 富士ゼロックス株式会社 | 集積回路装置および信号処理装置 |
JP4102425B2 (ja) | 2005-04-12 | 2008-06-18 | 松下電器産業株式会社 | プロセッサ |
US7389481B2 (en) * | 2005-05-12 | 2008-06-17 | International Business Machines Corporation | Integrated circuit design utilizing array of functionally interchangeable dynamic logic cells |
JP4720436B2 (ja) * | 2005-11-01 | 2011-07-13 | 株式会社日立製作所 | リコンフィギュラブルプロセッサまたは装置 |
JP2007141132A (ja) * | 2005-11-22 | 2007-06-07 | Renesas Technology Corp | 動的再構成可能プロセッサおよびそれを制御するプロセッサ制御プログラム |
CN101346695A (zh) * | 2005-12-27 | 2009-01-14 | 松下电器产业株式会社 | 具有可重构的运算器的处理器 |
JP4838009B2 (ja) * | 2006-02-22 | 2011-12-14 | 富士通セミコンダクター株式会社 | リコンフィグラブル回路 |
JP4782591B2 (ja) | 2006-03-10 | 2011-09-28 | 富士通セミコンダクター株式会社 | リコンフィグラブル回路 |
JP4702159B2 (ja) * | 2006-04-25 | 2011-06-15 | 富士ゼロックス株式会社 | 集積回路装置 |
EP2063366A4 (en) | 2006-08-31 | 2012-08-15 | Fuji Xerox Co Ltd | METHOD AND SYSTEM FOR MOUNTING A CIRCUIT MODEL ON A RECONFIGURABLE DEVICE |
JP4866194B2 (ja) | 2006-09-29 | 2012-02-01 | 富士通セミコンダクター株式会社 | 集積回路及びリコンフィギュラブル回路の入力データ制御方法 |
JP5079342B2 (ja) * | 2007-01-22 | 2012-11-21 | ルネサスエレクトロニクス株式会社 | マルチプロセッサ装置 |
TW200849087A (en) * | 2007-06-01 | 2008-12-16 | Holtek Semiconductor Inc | Method of accelerating the excution of repeatative commands and its micro controller |
US8344755B2 (en) | 2007-09-06 | 2013-01-01 | Tabula, Inc. | Configuration context switcher |
JP5119902B2 (ja) | 2007-12-19 | 2013-01-16 | 富士通セミコンダクター株式会社 | 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム |
WO2009148021A1 (ja) * | 2008-06-03 | 2009-12-10 | 株式会社日立製作所 | パケット解析装置 |
EP2175374A1 (en) * | 2008-10-08 | 2010-04-14 | Panasonic Corporation | Method and apparatus for scalable array configuration |
DE102008037431B4 (de) * | 2008-10-10 | 2013-06-06 | Lear Corporation Gmbh | Verfahren zur dynamischen Konfiguration eines Signalaufbereiters |
JP5590849B2 (ja) * | 2009-10-08 | 2014-09-17 | キヤノン株式会社 | 複数の処理モジュールを有する並列処理回路を備えるデータ処理装置、その制御装置、およびその制御方法、プログラム |
JP2011209948A (ja) * | 2010-03-29 | 2011-10-20 | Canon Inc | 情報処理装置、情報処理方法、プログラム及び記憶媒体 |
US8996906B1 (en) | 2010-05-13 | 2015-03-31 | Tabula, Inc. | Clock management block |
US9148151B2 (en) | 2011-07-13 | 2015-09-29 | Altera Corporation | Configurable storage elements |
JP5653865B2 (ja) * | 2011-08-23 | 2015-01-14 | 日本電信電話株式会社 | データ処理システム |
JP6432348B2 (ja) * | 2012-12-25 | 2018-12-05 | 日本電気株式会社 | 演算装置及び演算方法 |
US9000801B1 (en) | 2013-02-27 | 2015-04-07 | Tabula, Inc. | Implementation of related clocks |
EP2963824B1 (en) * | 2013-03-01 | 2020-08-19 | Axion Research Inc. | Data processing device and control method therefor |
US10833843B1 (en) * | 2015-12-03 | 2020-11-10 | United Services Automobile Association (USAA0 | Managing blockchain access |
FR3063855B1 (fr) * | 2017-03-08 | 2019-04-12 | Areva Np | Circuit logique programmable de commande d'une installation electrique, en particulier une installation nucleaire, dispositif et procede de commande associes |
JP7173985B2 (ja) * | 2017-04-06 | 2022-11-17 | ゴールドマン サックス アンド カンパニー エルエルシー | 汎用並列コンピューティングアーキテクチャ |
US10796048B1 (en) * | 2017-06-16 | 2020-10-06 | Synopsys, Inc. | Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator |
CN111897580B (zh) * | 2020-09-29 | 2021-01-12 | 北京清微智能科技有限公司 | 一种可重构阵列处理器的指令调度系统及方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4967340A (en) * | 1985-06-12 | 1990-10-30 | E-Systems, Inc. | Adaptive processing system having an array of individually configurable processing components |
US4943909A (en) * | 1987-07-08 | 1990-07-24 | At&T Bell Laboratories | Computational origami |
US5450557A (en) * | 1989-11-07 | 1995-09-12 | Loral Aerospace Corp. | Single-chip self-configurable parallel processor |
AU6958694A (en) * | 1993-05-28 | 1994-12-20 | Regents Of The University Of California, The | Field programmable logic device with dynamic interconnections to a dynamic logic core |
US5457644A (en) * | 1993-08-20 | 1995-10-10 | Actel Corporation | Field programmable digital signal processing array integrated circuit |
GB9403030D0 (en) * | 1994-02-17 | 1994-04-06 | Austin Kenneth | Re-configurable application specific device |
US5426378A (en) * | 1994-04-20 | 1995-06-20 | Xilinx, Inc. | Programmable logic device which stores more than one configuration and means for switching configurations |
US5692147A (en) * | 1995-06-07 | 1997-11-25 | International Business Machines Corporation | Memory mapping method and apparatus to fold sparsely populated structures into densely populated memory columns or rows by selectively transposing X and Y address portions, and programmable gate array applications thereof |
GB9611994D0 (en) * | 1996-06-07 | 1996-08-07 | Systolix Ltd | A field programmable processor |
US6057367A (en) | 1996-08-30 | 2000-05-02 | Duke University | Manipulating nitrosative stress to kill pathologic microbes, pathologic helminths and pathologically proliferating cells or to upregulate nitrosative stress defenses |
US5841296A (en) * | 1997-01-21 | 1998-11-24 | Xilinx, Inc. | Programmable delay element |
US5966534A (en) * | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
JP3850531B2 (ja) | 1997-10-21 | 2006-11-29 | 株式会社東芝 | 再構成可能な回路の設計装置、及び再構成可能な回路装置 |
US6122719A (en) * | 1997-10-31 | 2000-09-19 | Silicon Spice | Method and apparatus for retiming in a network of multiple context processing elements |
JP3123977B2 (ja) * | 1998-06-04 | 2001-01-15 | 日本電気株式会社 | プログラマブル機能ブロック |
DE60025435T2 (de) * | 1999-09-13 | 2006-09-21 | Nippon Telegraph And Telephone Corp. | Parallelverarbeitungsvorrichtung und -verfahren |
US6633181B1 (en) * | 1999-12-30 | 2003-10-14 | Stretch, Inc. | Multi-scale programmable array |
US6469540B2 (en) * | 2000-06-15 | 2002-10-22 | Nec Corporation | Reconfigurable device having programmable interconnect network suitable for implementing data paths |
US20030088757A1 (en) * | 2001-05-02 | 2003-05-08 | Joshua Lindner | Efficient high performance data operation element for use in a reconfigurable logic environment |
-
2002
- 2002-05-23 TW TW091110952A patent/TWI234737B/zh not_active IP Right Cessation
- 2002-05-24 WO PCT/JP2002/005047 patent/WO2002095946A1/ja active IP Right Grant
- 2002-05-24 CN CNB028104188A patent/CN1274085C/zh not_active Expired - Lifetime
- 2002-05-24 EA EA200301290A patent/EA005344B1/ru not_active IP Right Cessation
- 2002-05-24 KR KR1020037015066A patent/KR100952760B1/ko active IP Right Grant
- 2002-05-24 CA CA002448549A patent/CA2448549A1/en not_active Abandoned
- 2002-05-24 JP JP2002592291A patent/JP4208577B2/ja not_active Expired - Lifetime
- 2002-05-24 US US10/333,534 patent/US7191312B2/en not_active Expired - Lifetime
- 2002-05-24 EP EP02728137A patent/EP1391991A4/en not_active Withdrawn
-
2007
- 2007-02-01 US US11/670,302 patent/US7577821B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1391991A4 (en) | 2007-10-24 |
JPWO2002095946A1 (ja) | 2004-09-09 |
EA005344B1 (ru) | 2005-02-24 |
EA200301290A1 (ru) | 2004-06-24 |
JP4208577B2 (ja) | 2009-01-14 |
US7191312B2 (en) | 2007-03-13 |
US7577821B2 (en) | 2009-08-18 |
US20030184339A1 (en) | 2003-10-02 |
KR100952760B1 (ko) | 2010-04-14 |
WO2002095946A1 (fr) | 2002-11-28 |
EP1391991A1 (en) | 2004-02-25 |
US20070186078A1 (en) | 2007-08-09 |
CN1518798A (zh) | 2004-08-04 |
KR20040004631A (ko) | 2004-01-13 |
CA2448549A1 (en) | 2002-11-28 |
TWI234737B (en) | 2005-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1274085C (zh) | 集成电路器件及其设计方法 | |
Shao et al. | Simba: Scaling deep-learning inference with multi-chip-module-based architecture | |
US9135387B2 (en) | Data processing apparatus including reconfiguarable logic circuit | |
JP4104538B2 (ja) | リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路 | |
Sharma et al. | Dnnweaver: From high-level deep network models to fpga acceleration | |
AU2017211781A1 (en) | Processor with reconfigurable algorithmic pipelined core and algorithmic matching pipelined compiler | |
CN1434380A (zh) | 图像处理装置和方法以及用于该装置的编译程序 | |
US20050283743A1 (en) | Method for generating hardware information | |
KR20220042424A (ko) | 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직 | |
US10394991B2 (en) | Methods and apparatus for dynamically configuring soft processors on an integrated circuit | |
de Fine Licht et al. | StencilFlow: Mapping large stencil programs to distributed spatial computing systems | |
Cong et al. | Bitwidth-aware scheduling and binding in high-level synthesis | |
Capalija et al. | Tile-based bottom-up compilation of custom mesh-of-functional-units FPGA overlays | |
CN110998513A (zh) | 高吞吐量处理器 | |
Xiao et al. | Fast linking of separately-compiled FPGA blocks without a NoC | |
Taka et al. | MaxEVA: Maximizing the Efficiency of Matrix Multiplication on Versal AI Engine | |
Koch et al. | Hierarchical reconfiguration of FPGAs | |
Mayer-Lindenberg | High-level FPGA programming through mapping process networks to FPGA resources | |
Pfenning et al. | Transparent FPGA acceleration with tensorflow | |
Marquet et al. | Massively parallel processing on a chip | |
Cardoso | Self-loop pipelining and reconfigurable dataflow arrays | |
Hui et al. | WindMill: A Parameterized and Pluggable CGRA Implemented by DIAG Design Flow | |
Mellat | Mocarabe: High-Performance Time-Multiplexed Overlays for FPGAs | |
Qararyah et al. | Fusing Depthwise and Pointwise Convolutions for Efficient Inference on GPUs | |
WO2011102362A1 (ja) | 集積回路及びその使用方法 |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: FUJI XEROX CO., LTD. Free format text: FORMER OWNER: IP PHILLY CO., LTD. Effective date: 20100420 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20100420 Address after: Tokyo, Japan Patentee after: Fuji Xerox Corp. Address before: Tokyo, Japan Patentee before: IP Flex Inc. |
|
CX01 | Expiry of patent term |
Granted publication date: 20060906 |
|
CX01 | Expiry of patent term |