CN1229741C - 借助并行定序器的数字电路实现 - Google Patents

借助并行定序器的数字电路实现 Download PDF

Info

Publication number
CN1229741C
CN1229741C CNB018078346A CN01807834A CN1229741C CN 1229741 C CN1229741 C CN 1229741C CN B018078346 A CNB018078346 A CN B018078346A CN 01807834 A CN01807834 A CN 01807834A CN 1229741 C CN1229741 C CN 1229741C
Authority
CN
China
Prior art keywords
sequencer
mentioned
data
instruction
group
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
Application number
CNB018078346A
Other languages
English (en)
Other versions
CN1422406A (zh
Inventor
斯坦利·M·海杜克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STANLEY M HYDUKE
Original Assignee
STANLEY M HYDUKE
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by STANLEY M HYDUKE filed Critical STANLEY M HYDUKE
Publication of CN1422406A publication Critical patent/CN1422406A/zh
Application granted granted Critical
Publication of CN1229741C publication Critical patent/CN1229741C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)
  • Programmable Controllers (AREA)

Abstract

一个利用一组能快速、有效地并行处理系统级设计的同步定序器来设计和实现数字集成电路的系统。该系统和方法将基于数字原理图和硬件描述语言(HDL)的设计转换为由一组并行运算定序器来执行的一个逻辑方程组和一位算术逻辑运算。该系统包括将连线表和DHL设计转换为布尔逻辑方程的软件和一个在多个定序器之间分配这些逻辑方程的编译器。每个定序器包括一个逻辑处理器、储存指定布尔逻辑方程执行代码的关联程序存储器和储存逻辑方程处理结果的数据存储器。为使多个定序器同步执行逻辑方程,所有程序存储器由一个公共地址寄存器编址。逻辑方程的处理被设计得使它们的输出能够被该互连定序器中的同步读指令读出,而不需要任何控制信号。

Description

借助并行定序器的数字电路实现
发明领域
本发明涉及数字电路实现,更特别的是涉及能快速有效地设计和实现数字集成电路的一种新的硅设备体系结构。
发明背景
硅数字集成电路的实现技术已经十分完善。存在着无数借助诸如门电路、触发器和其他数字元件这类互连元件来实现数字电路的技术,譬如专用集成电路(ASIC)、现场可编程门阵列(FPGA)和合成可编程逻辑设备(CPLD)。这些技术的最大优点是由于所有数字元件的并行作用而带来的快速运算。
不过,现行技术也有许多随着元件几何尺寸的缩小和设计规模的增加而变得更加显著的缺点。譬如,这类设备的排列和布线时间按指数增长。现行技术还需要繁重的、占用大量劳动的、关键的布线设计路径计时分析。本发明完全消除了这种计时分析,而且设计编译时间与设计规模成线形比例关系。
采用深亚微型硅技术的现有设备体系结构需要对元件和它们的连接作复杂的分析来确定整体设计性能。新的物理现象在更高的元件密度上起着更大的作用,不断使得电路图分析变得更加复杂。现在已经十分清楚,某些形式的递增编译对于高密度深亚微型设备的电路图将是必要的。但是这些增量型硅编译需要一个相当大的人力投入和努力,这将使该设计过程变得更慢。因而本发明的另一个目的就是完全消除需要增量编译的设备电路图。
复杂设备的有效测试需要安排附加的硅边界扫描电路。这使得设计更加复杂,也降低了硅表面区域的有效利用。然而,由于没有其他好的方法来测试硅,所以这一过程被广泛应用于超过100000个门电路的ASIC设备。本发明还有一个目的则是提供不需要任何附加边界扫描电路或类似电路的有效的设备测试。
由于元件利用的随机性质,所以留出相当大面积的硅以便进行门阵列、CPLD和FPGA的元件之间的连接。这降低了硅的有效利用。用我的发明制造的设备基于极为常规的存储器结构,不需要那种取决于设计的互连区域,所以改善了硅表面区域的利用率。
现行技术耗散大量的热,因为所有电路都并行运行。这限制了能够安排在该硅片上的设计规模。本发明描述一个能降低功率消耗、并允许相当高电路密度的并-串行电路操作。
现行设计方法原理更加基于技术而不是基于严格的数学算法。结果,设计者必须在某些电路之间进行精细的相互调整来获得更好的性能或者改进面积利用率。为了得到最好结果,这需要高水平的专门技能、不断的雇员教育和反复试验研究。另一个目的就是要消除各设计的相互精细调整,降低对一个设计者的专门技能要求。由于本发明是基于数学算法,所以它提供一个消除各设计间的相互精细调整、并降低对设计者专门技能水平要求的完全自动化的设计环境。
由于现行设计工具技术是根据硅中的物理现象来进行调整的,所以设计者必须随着技术的变化而不断购买更新、更先进的软件。本发明将设计者与硅技术中的变化分离,从而使得一套工具能够应付硅处理上的所有未来改进。另一个目的就是用一套工具来应付硅处理上的所有未来改进以便使设计者脱离硅技术中的变化。
现有硅生产的发展大大超过了设计工具的能力。硅技术允许制造具有几千万晶体管的设备,而现有商业设计工具将这一数目限制为大约一千万个晶体管。因此,设计工具是对硅设备应用进一步推广的一个主要障碍。然而,过错不在于设计工具,而在于用硅实现数字电路的方法。当前采用的硅体系结构使设计工具变得不必要地缓慢、笨重和难以使用。所以本发明的目的是提供这样的硅体系结构,它能便于使用快速简单的设计工具、需要最少的学习和不需要设备体系结构方面的专门技能。
本发明的另一个目的就是对每个新设计取消需要烦琐而耗时的增量编译的设备电路图。
本发明还有一个目的就是提供有效的设备测试而不需要任何附加的边界扫描电路或类似电路。
采用我的发明制造的设备是基于极为常规的存储器结构,不需要那种取决于设计的互连面积,从而改进了硅表面面积的利用率。
本发明描述一个能降低功率消耗并允许采用相当高电路密度的并-串行电路操作。
另一个目的是消除设计间的相互精细调整,并降低对一个设计者要求的专门技能。
还有一个目的则是用一套工具应付所有未来的硅处理技术的改进来使一个设计者脱离硅的应用技术。
本发明的另一个目的是提供便于使用快速简单设计工具的硅体系结构以便使所需要的学习最少,而且不需要设备体系结构方面的专门技能。
发明概述
本发明的目的是在逻辑应用中采用极为常规的存储器结构来取代门电路和触发器这类元件以便更好地利用硅的表面面积。定序器(sequencer)是一种不包括那些能改变指令执行顺序的转移、分支或类似指令的逻辑处理器。本发明描述如何用一组同步定序器来快速、有效地处理系统级设计。
根据本发明的一个方面,提供一种用于并行处理逻辑方程和算术运算的并行处理器,包括:
一组定序器装置,具有使该组定序器装置中每个定序器同步运行的共同时钟;
该组定序器装置中每个定序器具有一个一位处理器、输入多路转换器、储存由该一位处理器所产生数据的数据存储器和一个机器指令解码器;
公共程序存储器,用于存储可处理逻辑方程的机器指令,所述公共程序存储器包括该组定序器中的每个定序器内的分布式程序存储器,从逻辑方程转换所得的机器指令被储存在上述分布式程序存储器中;上述机器指令按近似相等的比例在该组定序器中每个定序器内的上述分布式程序存储器之间进行分配;
公共地址计数器,用于寻址该组定序器中至少两个定序器的所述分布式程序存储器;
公共复位线,用于复位该组定序器中的每个定序器;
其中该组定序器中被选定的定序器具有程序结束识别装置,用于识别一条程序结束机器指令,上述程序结束识别装置在检测到上述程序结束机器指令时将上述公共地址计数器复位;
每个上述定序器装置中的上述指令解码器包含无操作识别装置来识别一个无操作机器指令,并禁止该组定序器中该无操作机器指令已被识别的定序器进行任何运算;
该组定序器中每个定序器包括一个数据写控制器和一个输入控制器;
上述机器指令解码器被构造成可检测设定/复位机器指令,上述机器指令解码器在检测到一条设定/复位指令时修改上述数据写控制器的运行;
上述数据写控制器只是在上述一位处理器的输出处于预定的逻辑状态时才向上述数据存储器产生一个写脉冲输出;
上述机器指令解码器在检测到一条设定/复位指令时修改上述输入控制器的运行;
上述输入控制器根据当前机器指令中选定位的状态来产生一个逻辑“1”和“0”;
上述多个定序器在它们的上述程序存储器中含有将数据存储器的各个位设置为预定逻辑状态的初始化指令;该初始化指令被上述程序结束机器指令从该逻辑执行指令分散到每个上述选定的定序器中;
上述指令解码器可响应所述公共程序存储器并控制所述输入多路转换器、一位处理器以及数据存储器的运行;
所述一位处理器可响应所述指令解码器和输入多路转换器并产生输出数据;
所述数据存储器在所述指令解码器的控制下存储该输出数据。
根据本发明的另一个方面,提供一种用于并行处理逻辑方程和算术运算的并行处理器,包括:
一组定序器装置,具有使该组定序器装置中每个定序器同步运行的共同时钟;
该组定序器装置中每个定序器具有一个一位处理器、输入多路转换器、储存由该一位处理器所产生数据的数据存储器和一个机器指令解码器;
公共程序存储器,用于存储可处理逻辑方程的机器指令;
所述公共程序存储器包括该组定序器中的每个定序器内的分布式程序存储器,从逻辑方程转换所得的机器指令被储存在上述分布式程序存储器中;上述机器指令按近似相等的比例在该组定序器中每个定序器内的上述分布式程序存储器之间进行分配;
该组定序器装置中第一定序器内的上述输入多路转换器被连接得能从该组定序器中第二定序器内的上述一位处理器接收第一个选定的输出数据信号;
第一定序器的上述程序存储器包括一个读出机器指令,它代表计算所得的上述第一个选定的输出数据信号的执行时间和出现时间,以便通过上述第一定序器内的上述输入多路转换器读出上述第一个选定的输出数据信号;
上述第一个选定的输出数据信号被储存在该组定序器装置中上述第一定序器内的数据存储器之中;
上述指令解码器可响应所述公共程序存储器并控制所述输入多路转换器、一位处理器以及数据存储器的运行;
所述一位处理器可响应所述指令解码器和输入多路转换器并产生输出数据;
所述数据存储器在所述指令解码器的控制下存储该输出数据。
根据本发明的再一个方面,提供一种在公共时钟的控制下可并行处理逻辑方程和算术运算的并行处理器,包括:
可连续并彼此独立地运行的一组定序器装置,具有使该组定序器装置中每个定序器同步运行的共同时钟;
该组定序器装置中每个定序器具有一个一位处理器、输入多路转换器、储存由该一位处理器所产生数据的数据存储器、存储用于处理逻辑方程和算术运算的机器指令的公共程序存储器和指令解码器;
该组定序器装置的每个定序器作为独立于该组定序器装置内其它定序器的单独控制器运行,并且仅响应所述公共时钟和在其公共程序存储器内的机器指令;
上述指令解码器可响应所述公共程序存储器并控制所述输入多路转换器、一位处理器以及数据存储器的运行,所述指令解码器严格地按照序列顺序处理所述程序存储器内的每条指令;
所述一位处理器可响应所述指令解码器和输入多路转换器并产生输出数据;
所述数据存储器在所述指令解码器的控制下存储该输出数据。
根据本发明的又一个方面,提供一种产生用于并行处理逻辑方程组和算术运算的IC的系统,包括:一组可连续、同步且彼此独立地运行的定序器装置,该组定序器装置至少包括第一定序器和第二定序器;该组定序器装置的每一个定序器由一个一位处理器、输入多路转换器、程序存储器、数据存储器和指令解码器构成;所述第一定序器的第一输出信号线连接到所述第二定序器的输入多路转换器,所述第一输出信号线传送由所述第一定序器的一位处理器提供的输出数据;从硬件描述语言图产生逻辑结构的第一计算机程序子程序;第二计算机程序子程序,响应上述第一计算机程序子程序,并将该逻辑结构转换为该组定序器装置的机器指令;第三计算机程序子程序,用于在该组定序器装置之间按近似相等的比例将由上述第二计算机子程序产生的上述机器指令进行划分;第四计算机程序子程序,用于计算该组定序器装置内逻辑结构的执行时间;第五计算机程序子程序,用于产生输出数据读指令,并在所述程序存储器内这样一个位置将该读指令插入到所述第二定序器的程序存储器中,该位置是指当产生规定的输出数据并在所述第一定序器的输出端上临时可用时将执行该读指令的位置,所述输出数据读指令通过所述第二定序器的输入多路转换器从所述第一定序器捕获所述输出数据。
优选地,该系统进一步包括一个公共地址计数器,用于寻址该组定序器中的至少第一和第二定序器的程序存储器,并且通过同时寻址所述第一和第二定序器的所述程序存储器而同步由第一和第二定序器中每一个定序器对指令的执行。
优选地,该系统进一步包括一个第六计算机程序子程序,用于将一个程序结束机器指令插入到该组定序器之一中,该组定序器的至少一个定序器在所述指令解码器内具有一个程序结束识别装置,用于识别程序结束机器指令,所述程序结束识别装置在检测到所述程序结束机器指令时复位所述地址计数器。
优选地,其中该组定序器中的每一个定序器包括一个数据写控制器和一个数据存储器输入控制器;所述机器指令解码器用于检测设置/复位机器指令,所述机器指令解码器在检测到一个设置/复位指令时修改所述数据写控制器的操作,仅当所述一位处理器的输出处于预定逻辑状态时,所述数据写控制器产生一个写脉冲输出给所述数据存储器,所述机器指令解码器用于检测设置/复位机器指令,所述机器指令解码器在检测到一个设置/复位指令时修改所述数据存储器输入控制器的操作。
优选地,其中该组定序器在其程序存储器中包括有初始化指令,用于将数据存储器各位设置成预定逻辑状态,所述初始化指令在每个选择的定序器内与所述逻辑执行指令借助于所述程序结束机器指令而分开。
优选地,该组定序器中的所述第一和第二定序器进一步包括一个输入选择器和一个算术模块,所述输入选择器和算术模块均具有至少一个输入和至少一个输出,所述输入多路转换器和所述第一定序器的算术模块的输出连接到所述第二定序器的所述输入选择器的至少一个输入端,所述第二定序器的输入选择器的输出连接到所述算术模块的输入;所述第二定序器的输入多路转换器的输出连接到所述这算术模块的输入,所述这第二定序器的算术模块的输出连接到所述第二定序器的数据存储器,所述第一定序器的数据存储器、输入多路转换器以及算术模块响应于所述第一定序器的所述指令解码器,并在存储于所述第一定序器的程序存储器内的机器指令的控制下,对来自数据存储器、输入多路转换器以及算术模块的数据进行操作,所述第二定序器的所述输入选择器、算术模块以及数据存储器响应于所述第二定序器的指令解码器,并且并在存储于所述第二定序器的程序存储器内的机器指令的控制下,对输入数据进行操作。
首先,将一个原理图和VHDL、Verilog或者其他硬件描述语言文件形式的系统级描述转换为一组等价的布尔逻辑方程。其次,这些方程被数学优化处理,转换为二进制指令代码,并根据能简化不同定序器中设计部件之间通信的算法在各定序器之间进行分配。为了硅资源的最优利用,每个定序器中分配的指令数量大致相同。
每个定序器采用一个关联存储器来储存能对所分配的逻辑方程进行运算的二进制指令,并采用一个数据存储器来储存逻辑方程的处理结果。在设备编程过程中,每个定序器的关联存储器都装载它自己的、代表该关联逻辑方程的机器指令集。由于希望所有定序器和各关联程序存储器都由一个单独的公共地址寄存器驱动,所以它们能彼此同步地运算和执行逻辑方程。
因为定序器的同步运行,所以在它们之间分配逻辑方程的编译器能够提前算得该选定的定序器输出何时会提供逻辑运算结果。然后一个编译器在该互连的相邻定序器中安排指令,使得在这个输出出现时能够被方便地读出,而不需要任何通常用来促进处理器之间通信的额外控制信号。另一种方法是,该编译器可以在该互连的相邻定序器中插入一条类似中断的指令,它能将相邻定序器产生的数据保存在它的数据存储器中,然后再继续处理逻辑方程。
按照我的发明制造的开发数字电路设备的设计工具将是简单的,操作起来要比采用现有硅体系结构来设计设备的工具快大约两个数量级。准确地讲,只需要对该设计进行行为模拟。由于一个程序存储器中的指令数量和运行时钟速度决定了一个定序器中逻辑电路的采样速率,所以不需要进行计时分析。这一采样速率是该定序器对该外部信号的最大响应时间。降低一个定序器中的指令数量并提高它的时钟速度,就可以相应地提高这一采样速率。
由于按照我的发明制造的工具是基于数学算法,所以它们提供在硅表面面积上设计部件的最优布局。结果,很少再会出现某些设计性能不够标准,或者设计间的相互精细调整还能改善硅面积利用率或设备性能的情况。
附图说明
图1是一幅表示一位处理器的电路图。
图2表示一个定序器实施例。
图3表示一个设备内部的定序器连接。
图4是一幅设备编程示意图。
图5是一幅输入输出(I/O)控制器电路图。
图6是一幅符合本发明的一个逻辑处理器编译器的流程图。
图7是一幅表示算术运算的硬件实施例的电路图。
图8表示硬件实施例的实现。
具体实施方式
图1表示一位处理器的实施例。这个实施例便于逆波兰表示法(RPN)机器指令的执行。处理器20以对所有输入变量并行执行的两(2)个并行运算为基础。图1中借助一个示例将它们表示为AND寄存器26和OR寄存器27。由于处理器20允许借助反相器23进行一个反相运算,所以寄存器26和27的同时存在不会强制执行逻辑方程,这是因为反演定理(de Morgantheorem)允许采用反相器23将AND运算转换为OR运算或者作相反转换。用一个执行XOR或其他逻辑运算的程序块来代替AND寄存器26或者代替OR寄存器27也将在本发明的范围之内。
在每个逻辑方程执行的开始,AND寄存器26被设定为逻辑“1”。第一个“0”将寄存器26复位为“0”,并使它保持为“0”而与随后的逻辑值无关。在每个逻辑方程处理的开始,OR寄存器26被设定为逻辑“0”,并且被第一个出现在它的输入的逻辑“1”永久性地设定为“1”。在由关联机器指令所代表的每个新逻辑方程执行的开始,寄存器26和27都分别被自动设定到它们的初始值“1”和“0”。
一位处理器20具有输入信号选择器22,它可以选择信号线21上提供的该输入变量的真值,或者选择由反相器23以及关联信号线24上提供的“反”或“逆”。一位处理器20可以是如同美国专利号4,101,967所公布和描述的一种一位处理器,该专利于1978年7月18日发放给本文所公布发明的同一发明人并在此参考编入。选择器22和32受信号线29上提供的该指令字的位B1控制。选择器32在位B1的控制下通过信号线30来选择AND寄存器26的输出或者通过信号线31来选择OR寄存器27的输出,并在信号线33上提供选定的数据。
信号线28上的位B0控制一位处理器20的运行方式;如果B0=0,AND寄存器26和OR寄存器27就接收输入数据,并且并行执行AND和OR运算。这个指令被称为“输入指令”。如果B0=1,那么储存在寄存器26和27中的数据就被选择器32通过信号线33输出到由该指令字的位B2至Bn指定的设备。这一指令被称为“输出指令”。AND寄存器26和OR寄存器27被该输出指令或者输出指令之后的第一个输入指令分别预先设定为“1”和“0”。
一位处理器20的指令集如表1所示。
表1 逻辑运算指令
  B0   B1   布尔运算   B2-Bn
  0   0   TRUE输入   (操作数地址)
  0   1   NOT输入   (操作数地址)
  1   0   AND输出   (操作数地址)
  1   1   OR输出   (操作数地址)
F1=!X1*X2                          (1)
处理器20(见图1)的运算可以参考逻辑方程(1)来解释,其中“!”表示对其后的变量求逆或逻辑NOT。根据RBN方法,由右向左从方程(1)的第一个自变量开始进行这一处理。首先,通过信号线21和选择器22取出自变量X2,并通过信号线25馈送以供AND寄存器26和OR寄存器27进行处理。
然后,由反相器23提供X1逻辑值的逆,并通过信号线24、选择器22和信号线25馈送到寄存器26和27。处理F1逻辑方程(1)的最后一步是通过信号线30、选择器32和信号线33输出AND寄存器26的值。采用表1的指令代码,执行F1逻辑方程需要下面的指令:
(A)IN X2-    取出X2;    二进制:00+X2地址
(B)IN Not X1-取出Not X1;二进制:01+X1地址
(C)OUT F1-  输出AND结果;二进制:10+F1地址
具有多层括号的嵌套逻辑方程从最低层括号开始处理。譬如逻辑方程F4=(((!X1*X2)+!X3+X4)*!X5)+X6必须分四(4)步处理:首先如上所示计算F1=!X1*X2。然后计算F2=F1+!X3+X4、F3=F2*!X5和F4=F3+X6。
定序器是一个以严格的预定次序来执行所有运算的处理器。所以它不处理诸如分支或转移这样的指令。定序器设计的技术已十分完善。具体地讲,定序器9包括储存执行逻辑方程所需机器指令的分布式程序存储器10、检测程序存储器9输出端所提供指令的指令解码器13、储存处理器20所生成输出的数据存储器14和与外界通信的输入多路转换器42以及输出寄存器46。输出寄存器46是一个一位编址(addressing)的寄存器,数据可以独立地储存在寄存器46的每一个位。输出寄存器46的运行类似于德克萨斯仪器公司(Texas Instruments)制造的74LS259。
信号线33上提供的数据可以被用来直接与其他定序器通信。
写控制器15和输入控制器19被用来将数据储存到数据存储器和输出寄存器46。它们可以被认为是指令解码器13的一部分,但为了更清晰起见一直采用显式表示方法。
图2中的程序存储器10是分布式程序存储器,它在能于信号线12以及12′上产生指令字的地址线11的控制下运行。信号线12携带被解码器13用来对操作数地址进行解码的位B0至Bn以及特殊指令,譬如表3所列的NOOP或“无操作(no-operation)”、运行程序的END等等。信号线12′只携带控制一位处理器20运行的初始位B0和B1。
由于定序器9-1至9-n的程序存储器10完全一样,并由同一个地址计数器4编址,所以它们可以被组合为一个公共物理程序存储器10″,最好如图8所示位于设备1的中央。一个定序器中各部件的实际布置可以用图8的定序器1作示例来表示。
公共程序存储器10″的输出被划分为信号线12-S1至12-Sn上提供的独立指令字。地址寄存器3的位置紧靠公共程序存储器10″,并通过信号线11上的信号对它的输出编址。
由于定序器9-1至9-n的指令解码器13和数据存储器14通常直接由关联公共程序存储器10″的各输出位编址,所以希望指令解码器13和数据存储器14的位置紧靠能在相应信号线12-S1至12-Sn上产生信号的公共程序存储器10″。
图8中设备1的实际布局意味着输入多路转换器42-1至42-n以及输出寄存器46-1至46-n的位置最好在设备1的外围,并靠近它的输入/输出连接插针。
输入多路转换器42可以采用德克萨斯仪器公司生产的型号74LS251或类似设备,它被用来向处理器20馈送外部数据。在实际应用中,多路转换器42和44最好组合成一个单一多路转换器。之所以画出数据多路转换器44仅仅是为了明确说明处理器20的输入如何在数据存储器14的输出、输入多路转换器42的数据和信号线49-L和49-R上提供的相邻定序器数据之间进行切换。
一位处理器20的输出数据通过信号线33被送到输出缓冲寄存器48。输出缓冲寄存器48在B0=1的控制下由信号线58的信号计时。这就意味着定序器9每执行一次储存操作,输出缓冲寄存器48都要装载新数据,只要定序器9执行读指令,输出缓冲寄存器48的数据就保持不变。来自输出缓冲寄存器48的数据就是信号线49-L上的输出,它可以被图3所示的相邻定序器9-2至9-n用来交换数据。之所以需要输出缓冲寄存器48主要是为了在连接到定序器9-1至9-n中输入多路转换器42的信号线49-L和49-R上进行数据传输。直接连接到相邻定序器9-1至9-n中数据选择器35上的信号线49-K可以直接连接到信号线33,从而不需要输出缓冲寄存器48。信号线49-L、49-R和49-K被从每个定序器连接到它的4个、6个或其他数量的相邻定序器9-1至9-n,从而形成定序器之间的一个矩阵连接也在本发明的范围之内。
信号线49-K上提供的相邻定序器的输出数据可以在信号线58的控制下直接装载到输出缓冲寄存器48,并通过选择器35、信号线59、输入控制器19和信号线36直接装载到数据存储器14。选择器35受信号线58的信号控制,解码器13则根据指定这种传输的程序存储器10的输出来产生这一信号。有许多方法可以进行这种传输。譬如,数据存储器14中较低的“m”个位可以专用于传输来自相邻定序器的数据。在储存操作寻址到数据存储器14这一部分的任何时刻,信号线49-K上的数据都会被自动读入数据存储器14。信号线49-K代表多路信号线,譬如由各相邻定序器的输出缓冲寄存器48提供的49-1、49-2等等。
逻辑定序器9最好采用输入/输出(I/O)存储器映射技术。采用这一技术,位B2至Bn就可以对在输入多路转换器42和44、数据寄存器46和数据存储器14的数据之间进行分配的一个空间编址。举例来说,如果信号线12上指令字的地址部分宽度为10位,那么它就可以总共编址1024个单元,譬如从0到1023。如果最高的16位1008到1023被分配给输入多路转换器42,那么解码器13将会在检测到这16个地址之一的任何时刻在信号线51上产生一个多路转换器42的启动信号。类似地,如果从1016到1023的8位已经被分配给输出寄存器46,并且指令解码器13已经检测到向输出寄存器46的一次储存操作,那么输出寄存器46中恰当的位将会通过信号线52被选中,信号线36上提供的数据将会在信号线34提供的写信号控制下被储存。表3提供具有16位输入多路转换器和12位输出解码器的定序器的一个示例。
指令解码器13产生信号线50上的RAM(随机存取存储器)地址信号,这些信号能启动内部数据存储器14来将一位处理器20的输出储存到指定的单元。在上述I/O存储器映射的编址方案情况下,该指令字的地址部分可以直接加到数据存储器14。
如果输入多路转换器42和44以及输出寄存器46是“模2”配置,即具有2、4、8、16或32个输入或输出,那么信号线12中适当的低位地址线可以分别通过信号线51、56和52直接连接到多路转换器42和44以及输出寄存器46。实际将数据写入数据存储器14和输出寄存器46是在数据写控制器15的控制下进行的,数据写控制器15对表2指令解码,并通过信号线16和34分别控制数据写到数据存储器14以及输出寄存器46。
表2 运算和地址解码
  B0,B1   B2-B(n-4)  B(n-3)   B(n-2)-Bn   指令
  0,0/1   不全为11111  x   x,x,x   Input;RAM操作数地址
  0,0/1   全为11111  x   x,x,x   Input;MUX操作数地址(16)
  1,0/1   不全为11111  x   x,x,x   Output;RAM操作数地址,output
  1,0/1   全为11111  0   x,x,x   Output;DEC操作数地址(8)
  1,1   全为11111   1   0,x,x   Output;DEC操作数地址(4)
  1,1   全为11111   1   1,x,x   特殊指令(见表3)
注:
1-逻辑“1”                   0-逻辑“0”
0/1-可以是逻辑“0”或“1”    x-地址位
MUX-输入多路转换器            DEC-输出解码器
RAM-指定数据存储器
写控制器15控制数据向存储器14和输出寄存器46的写入。指令解码器13为输入多路转换器42和44、数据存储器14和输出寄存器46进行地址解码。如果指令解码器13检测到一个无操作(NOOP)指令,它就暂停处理器20的运行,并借助信号线55使写控制器15失效。当指令解码器13检测到一个程序结束或者END指令时,它就通过信号线54-1激活图3的复位控制器5-1。复位控制器5-1通过信号线66使地址计数器3复位,迫使它从“0”开始计数。作为另一种可选择的方法,复位控制器5-1也可以预先将计数器3设定为一个预定的计数来作为程序执行的开始。由指令解码器13解码的特殊指令如表3所列。如果希望的话,指令解码器13、写控制器15和输入控制器19也可以被组合成一个单一的指令解码器。
表3 特殊指令解码器
  B0-B(n-3)   B(n-2)   B(n-1)   Bn   名称   说明
  11111...1111   1   1   1   NOOP   无操作
  11111...1111   1   1   0   END   程序结束
  11111...1111   1   0   1   S/R   S/R运算
  11111...1111   1   0   0   AEO   AE运算
利用表1的指令可以模拟一个同步触发器,如下列方程(2)所示:
Qn=Set+!Reset*Q(n-1)                            (2)
然而,方程(2)需要6条机器指令来计算Qn。另外,变量Q(n-1)也必须储存到数据存储器14,这需要两条额外的指令。当检测到一条特殊的同步S/R(设定/复位)指令时,通过改变一位处理器20的运算可以更有效地模拟该同步触发器。S/R指令可以用最少的机器指令在数据存储器14和输出寄存器46中模拟同步触发器,而且也不需要在数据存储器14中保留一份输出寄存器46中数据的副本。
当定序器9按照表1和表2运行时,一位处理器20的输出数据通过信号线33被送到选择器35,然后通过信号线59、输入控制器19和信号线36传输到数据存储器14和输出寄存器46。类似地,当定序器9按照表1和表2运行时,写控制器15在连接到数据存储器14的信号线16和连接到输出寄存器46的信号线34上产生一个写脉冲。每当B0=1时,除了表3的特殊指令外,控制器15也产生一个写脉冲将一位处理器20的输出数据储存到数据存储器14和输出寄存器46。
如果指令解码器13检测到表3所列的S/R指令,它就通过信号线53将S/R信号送到写控制器15和输入控制器19,并永久性地禁止在存储器14和输出寄存器46中储存信号线33上提供的数据。只是在AND寄存器输出为“1”时,写控制器15才会发出一个写脉冲到信号线16和34。输入控制器19将按照表4运行,它在信号线36产生“1”表示SET指令,产生“0”表示RESET指令。这个数据将在控制器15产生的写脉冲的控制下被储存到数据存储器14和输出寄存器46。譬如,如果B0=1和B1=0,这表示一个SET指令,那么AND寄存器26上的“1”将会激活该设定操作,这将在存储器14或输出寄存器46的指定单元写入逻辑“1”。不过,如果AND寄存器26的输出是“0”,那么写控制器15就不发出写脉冲,指定的存储器14和输出寄存器46的单元就保持不变。表4中的RESET指令按类似方法运行。但是,如果AND寄存器26的输出是“1”,那么它就将“0”写到存储器14的指定单元或输出寄存器46的单元。如果AND寄存器26的输出是“0”,那么就不产生写脉冲,并且不进行复位操作。这里用AND寄存器26作为示例。也可以用OR寄存器27来代替。
表4 S/R指令清单
  B0   B1   S/R操作   B2-Bn
  0   0   TRUE输入   (操作数地址)
  0   1   NOT输入   (操作数地址)
  1   0   SET指令   (操作数地址)
  1   1   RESET指令   (操作数地址)
表4的S/R(设定/复位)指令将定序器9设定为S/R方式,并永久性地改变它的运行。从现在开始,定序器9将按照表4运行,由于这个理由,该S/R指令最好放置在这些由表1和表2来控制的、与逻辑有关的机器指令之后。该S/R方式可以由END指令、信号线63上的硬件系统复位信号或者被另一个S/R指令触发切换的开关信号加以终止。
在使用XOR和其他运算进行信息编码和解码极为普通的各种通信设备之中,正越来越多地使用逻辑设备。而且,基本的算术运算也被用于信息处理。为加速算术和解码运算,已经在定序器9-1中增加了输入选择器98-1和算术逻辑块(ALB)92-1,如图7所示。
当指令解码器13检测到表3所列的算术和编码运算(AEO)指令时,它通过信号线57修改写控制器15和输入控制器19的运算来改变定序器9的运行。当定序器9-1进入AEO方式时,指令解码器13就向信号线57发出一个修改控制器15和19运行的AEO信号,迫使它们执行表5所列的运算。紧接AEO之后的第一条指令向算术逻辑块92-1提供硬件组态数据。这一组态被指令解码器13解码,并通过信号线95-1被馈送到ALB模块92-1。信号线95-1上的数据可以将ALB模块92-1组态为XOR逻辑门、XNOR、半加器或者全加器。选择其他逻辑或算术块也在本发明的范围之内。在ALB块92-1组态指令之后的指令执行希望的算术、逻辑或编码运算。采用其他ALB组态方法,譬如将ALB永久性地组态为一个全加器或XOR元件,也在本发明的范围之内。另一个可以选用的方法是采用为S/R操作所保留的代码来作为ALB组态指令。9-1至9-n中每个定序器都可以独立于同一设备中或者互连设备中的其他定序器而被设定成它自己的运行方式。为退出AEO方式并返回基本逻辑运算方式,该程序发出另一个能将定序器9-1切换返回表1和表2所述运行方式的AEO指令。
表5 算术和编码运算
  B0   B1   B2-Bn   运算
  0   0   地址   组合通道A+W/内部数据
  0   1   地址   组合通道B+W/内部数据
  1   0   地址   将ALB输出存入本地RAM
  1   1   地址   将通道B存入本地RAM
表5中的术语“内部数据”(internal data)指关联多路转换器44-1在信号线45-1上提供的数据;“组合”(combine)表示执行由ALB算术逻辑块92-1指定的算术或逻辑运算。“通道A”(channel A)指信号线91-n提供的数据,“通道B”(channel B)指信号线94-n提供的数据。
图7描述了两个定序器9-1和9-2在算术和编码组态中的结构。为更加清楚起见,只画出了图2中必要的块和信号来解释这一组态的运行。应当记住,这一组态也要用到图2所列的其他块(如解码器13)和各种信号。定序器9-1和9-2中的信号线和块已经附加了该定序器的序号。譬如,定序器9-1中的数据存储器14被称为14-1,定序器9-2中的数据存储器14被称为14-2。对所有信号线都采用了类似的命名约定。图2所示的所有块和信号在图3和图7中对它们加以论述时都附加了该定序器的序号。为了避免混淆,当信号线跨接在定序器之间时,连接定序器9-1和9-2的输出信号线被分配了新的号码以便保持定序器9-1中原有信号线的编号。譬如,信号线45-1在定序器9-1之外被称为91-1。
按照表5,条件B0=0和B1=0可将信号线91-n上的数据选通成为输入选择器98-1的输出数据,它又通过信号线110-1连接到块92-1。指令解码器13在信号线95-1上发出一个信号,迫使块92-1对外部信号线91-n和内部信号线45-1上的数据执行一次运算。这样,块92-1可以对储存在不同定序器(譬如9-1至9-n)中的数据执行一种算术或逻辑运算。为了进一步解释ALB块92-1的运行,可以假设它已经被设定为XOR组态,信号线91-n上的数据为“1”,信号线94-n上的数据为“0”,并且信号线45-1上的内部数据为“1”。从表5我们可以推导出,对B0=0和B1=0,信号线93-1上的数据将为“0”。但是对B0=0和B1=1,信号线93-1提供的块92-1的输出将为“1”。
信号线93-1上由该ALB块产生的信号被馈送到受AEO信号线57-1控制的数据选择器35-1。如果B0=1和B1=0,那么信号线93-1上的信号就在能控制选择器35-1和控制器15-1运行的信号线57-1的控制下储存在本地存储器14-1。该数据储存在位B2-Bn指定的地址中。如果B0=1和B1=1,那么信号线12′-1在信号线110-1上选择由信号线94-n提供的数据。信号线57-1通过选择器35-1、信号线59-1、控制器19-1和信号线36-1来控制信号线110-1上的数据向数据存储器14-1的装载。
选用程序块92-1中的一个一位全加器将有利于算术运算。如果B0=1和B1=0,那么将会对信号线45-1提供的定序器9-1数据和信号线91-n上由其他定序器提供的数据进行一次“加”运算。这个“加”运算的结果将被块92-1储存一个时钟循环并提供到信号线93-1。信号线93-1上的数据可以被定序器9-1内的下一条指令利用,或者在下一个时钟循环被相邻的定序器9-2利用。对表5所列的运算可以作无数的修改,但它们均在本发明的范围之内。
由VHDL、Verilog、EDIF连线表和类似文件描述的系统级设计可以被转换为具有几千逻辑方程的一个或多个文件。由于用一个单独定序器来处理这样大量的方程要花费很长时间,所以图3表示了一个共同负担逻辑方程处理的多定序器9-1至9-n的结构。定序器9-1至9-n由一些公共块驱动,譬如地址计数器3、写程序存储器解码器4、输出端口控制器80和复位解码器5-1。地址计数器3在系统时钟62的控制下递增其数值,并借助地址信号线11为定序器9-1至9-n中程序存储器10内的连续单元编址。复位控制器5-1通过在信号线66上发出一个信号来复位计数器3。复位控制器5-1在任何时刻一旦检测到信号线63上的一个系统复位条件、信号线54-1上的END信号,或者在信号线54-2和54-m上的外部设备中的任何一个成为系统级设备时检测到外部设备复位条件,它就发出一个复位命令。该系统级复位设备是已经用END指令为整个这组设备1-1至1-m编程的设备。复位操作通常在装载程序存储器10之前和设备#1的第一个操作循环开始之前执行。
设备#1的运行由信号线64上提供的允许计数器3进行计数的“系统启动”信号启动。信号线64上的信号可以在任何程序点停止指令执行,并可以用于设备#1的诊断。
当程序存储器10(图2)中的最后一条指令已被执行时,定序器9就开始从地址“0”为存储器10编址。这需要将计数器3复位。通常,软件子程序122(图6)安插该END指令作为预选定序器(譬如定序器9-1)中的最后一条可执行指令。指令解码器13检测到该END指令,就将END信号提供到信号线54-1,启动复位控制器5-1,并终止设备#1中定序器9-1至9-n的程序执行。信号线54-1也被连接到一个外部的引线插针来使设备1-1与那些涉及关联逻辑方程处理的其他设备(譬如1-2至1-m)同步。
如果逻辑方程数太大,以至于无法装入一个单独设备#1,那么就可以将另外的设备(譬如设备#2至#m)连接到一起来获得更高的逻辑方程处理能力。如图3所示,所有设备1-1、1-2和1-m共同使用信号线62提供的同一个时钟信号、信号线63提供的系统复位信号和信号线64提供的系统启动信号。另外,设备1-2至1-m的复位控制器5-2至5-m都连接到执行该系统主复位功能的END信号线54-1。
图3中的每个定序器可以与它的相邻定序器互相作用来处理和交换数据。譬如,定序器9-1可以分别直接操作信号线49-R和49-L上由定序器9-2和9-n提供的数据,它们可以代表两个或多个相邻的定序器。另外,每个定序器可以直接在数据存储器14中保存信号线49-K上由其他定序器提供的数据。信号线49-K有利于定序器之间的快速数据传输,举例来说,它可以包括信号线49-L、49-R、91-n和94-n。
图4所示为设备#1的编程过程。程序编制器18拥有一个设备程序编制器69和一个能接插被编程设备#1的插座70。计算机系统8可以是奔腾或类似型号的任何个人计算机,它通过信号线71控制设备程序编制器69。设备程序编制器69类似于加利福尼亚州虚拟计算机公司(Virtual ComputerCorporation,Reseda,California)和华盛顿州数据输入输出公司(Data I/OCorporation,Redmond,Washington)生产的PLD和FPGA程序编制器。设备#1的编程通过设备程序编制器69提供的一组信号实现,并由信号线60至65送到插座70。这些信号通过与插座70互联的插针被馈送到设备#1。如果设备#1是内部电路编程,那么插座70的作用可以由设备#1与该印刷电路板之间的焊球或网格球连接来实现。
该设备编程过程由驻留在计算机系统8内部并能在信号线71上产生适当信号的设备编程软件73控制。设备编程软件73控制由设备程序编制器69发出的、提供到信号线60至65上的信号。首先,设备程序编制器69在信号线63上发出系统复位信号。这一操作将计数器3复位为“000”。然后,在信号线60上提供要被编程到定序器9-1的第一个指令字。为了从信号线60向定序器9-1的程序存储器10装载数据,设备程序编制器69在信号线61上发出该定序器地址。这个地址被能选择并启动定序器9-1来进行数据装载的写程序存储器解码器4(图3)检测。在设备程序编制器69发出的、信号线65上的写脉冲的控制下,信号线60上的数据被装载到定序器9-1的程序存储器10。
在数据被装载到定序器9-1之后,设备程序编制器69在信号线60上提供将要向定序器9-2的程序存储器10装载的数据,并在信号线61上发出定序器9-2的地址。然后,程序编制器69在信号线65上产生一个写脉冲,它将信号线60上的数据储存到定序器9-2中的单元“000”。在最后一个定序器9-n的单元“000”已经被装载数据之后,设备程序编制器69在信号线62上发出一个时钟信号,地址计数器3进位到“001”。设备程序编制器69在信号线60上为定序器9-1发出数据,然后在信号线61上发出设备地址,并在信号线65上发出写脉冲。来自信号线60的数据将被储存在定序器9-1内的存储器单元“001”。这一过程一直继续到所有数据都被装载到定序器9-1至9-n为止。
由于分别属于定序器9-1至9-n的程序存储器10-1至10-n由同一个程序计数器3编址,所以它们最好应当组合起来构成一个公共存储器10″。然后定序器9-1至9-n中的每一个都会使用同一个公共存储器10″的不同的关联部分。
效率高的设备I/O引线插针分配方案对有效利用设备资源至关重要。图5表示一个希望的I/O引线插针排列示例。为了有效利用输入引线插针,输入多路转换器42-2和42-3只有某些输入引线插针,譬如42-2-2,被永久性地分配给多路转换器42-2。但是,像42-2-0、42-2-1、42-2-6和42-2-7这些引线插针可以和相邻的定序器42-1与42-3共用。被定序器9-2和9-3共同使用的输入信号应当被分配给公共引线插针42-2-6和42-2-7。
引线插针共用方法最好能被用于寄存器(譬如46-2、42-3等等)的输出引线插针。这一方法的一个示例已表示在图5之中。寄存器输出47-2-6、47-2-7、47-3-0和47-3-1通过关联驱动器87-2-6、87-2-7、87-3-0和87-3-1而具有三个状态,每对驱动器只分配一个引线插针与外部电路连接。为防止输出已连接的驱动器产生逻辑级的冲突,每个时刻只能有一个驱动器被启动。实现的方法是启动带有从同一信号源导出的相反信号的互连驱动器,譬如87-2-6和87-3-0。举例来说,接口控制器80通过信号线82-2启动驱动器87-2-6。信号线82-2上的信号被反相器83-2反相,并在信号线84-2上直接被送到其输出与驱动器87-2-6输出相连的驱动器87-3-0的启动引线插针。
输出端口控制器80是一个在逻辑方程执行前就已装载的寄存器,装载方法与装载定序器9-1的程序存储器10类似。写程序解码器4(见图3)通过信号线81启动寄存器80的装载操作。信号线65上由设备程序编制器69提供的一个写脉冲将程序编制器69通过信号线60提供的数据装载到寄存器80。
输出信号线47-2-0至47-3-7也可以借助可编程熔丝连接到设备#1的引线插针。可以理解,具有各自输入和输出47-1-0和47-n-7的定序器#1和#n(未画)是隐含的。现行FPGA和CPLD技术采用了这种解决方法,该方法属于本发明的范围之内。
设备1的体系结构已经被设计得能够简化软件编译。处理设计并将它们装载到设备1的软件子程序如图6所示。HDL设计块97代表能产生硬件描述语言文件的硬件描述语言编辑器和语言转换器,譬如VHDL、Verilog、Superlog、SystemC、SpecC、C、Java等等。这些文件通过信号线98被馈送到算术逻辑运算分析器99,它将面向逻辑的构成与算术构成分离。逻辑构成通过信号线100被送到产生逻辑方程的子程序112。算术构成通过信号线101被送到已被优化的算术硬件选择子程序102,它根据表3和表5产生一组供定序器9-1至9-n进行在线组态的指令以获得最优算术运算。
子程序102在信号线103上提供与所需算术运算以及所选硬件组态有关的信息。算术指令生成器子程序104对信号线103上的数据作出响应,并在信号线105上产生一组供定序器9-1至9-n执行所需算术运算的机器语言指令。
子程序112产生的布尔方程在信号线103上被提供给一个按适当顺序排列所有方程、优化各表达式并将它们转换为定序器9的机器语言的软件子程序114。
设计编辑器106代表能产生设计连线表的原理图编辑器、方框图编辑器和逻辑综合工具。通常这样一个连线表是以EDIF格式给出的,并在信号线107上被馈送到能将所提供的连线表直接转换为布尔方程的连线表转换器108。将连线表转换为布尔方程的技术已广为人知,许多软件包能够将连线表转换为布尔方程,如位于内华达州汉德森的ALDEC公司(ALDECINC.,Henderson,Nevada)生产的SUSIE模拟器。子程序108产生的逻辑方程在信号线109上被馈送到早先描述过的软件子程序114。软件子程序114在信号线115上以机器语言代码的形式为在定序器9-1至9-n之间分配指令的软件子程序116提供指令。子程序116将与同一逻辑方程或者算术运算有关的机器代码分成由不同定序器执行、或者虽由同一定序器但在不同时间段执行的模块是在本发明的范围之内。由于逻辑方程可以一对一地被翻译成汇编语言,所以在定序器之间分配逻辑方程,然后再将它们转换为机器指令也在本发明的范围之内。
软件子程序118阅读信号线117上的机器指令,并计算选定的逻辑方程结果或者输出数据将会在什么时刻出现在定序器9-1至9-n的输出而且能够被相邻定序器读入。数据读出指令子程序120读出信号线119上的数据,并将适当的读出指令插入该接收定序器的程序以方便定序器之间的数据传输。在难以消除计时失配时,可以插入无操作或NOOP指令来延长定序器9-1至9-n的输出持续时间。有时,逻辑方程处理结果可以储存到本地数据存储器14,然后在适当的时刻输出以便和相邻定序器的定时相匹配。这样一种操作被称为本地保存指令,这是匹配相邻定序器输出定时的最有效方法之一。软件子程序120有一个可选的选项能产生在定序器9-1至9-n之间通过信号线49-K直接传输数据的代码。如果这一选项被启动,那么当需要从另一个定序器进行一次数据传输操作时,子程序120就在该相邻定序器中插入“瞬时读出”指令。这些“瞬时读出”指令暂停该接收定序器中处理器20的运行,并产生一次直接将信号线49-K上提供的数据写入数据存储器14的操作。指令解码器13检测到该瞬时读出指令,并在信号线58-1上产生控制数据选择器35和输入控制器19的直接写入信号。
软件END指令子程序122阅读信号线121上提供的数据文件,并将一条END机器指令插到该预定义定序器(譬如9-1)中程序存储器10的终点。这些文件然后通过信号线123被馈送到设备编程软件子程序73以便按图4所示直接装载到定序器9-1至9-n。有几种方法可以初始化存储器14中代表初始设计状态的内容。最简单的一种就是通过信号线74向设备编程软件73提供初始化设计文件72。存储器14的初始化一开始是向存储器10装载一条输出指令,接着是信号线62上的一个时钟信号。如果该地址计数器被禁止为信号线62上的时钟信号计数,那么定序器9-1就执行当前已装载的指令,并将AND寄存器26设定为逻辑“1”,将OR寄存器27设定为逻辑“0”。然后,设备编程软件子程序73在初始化数据文件72的控制下将输出指令装载到为数据存储器14中希望单元编址的程序存储器10。此后,每个AND输出指令将在指定的存储器14地址设置“1”,每个OR输出指令将在指定的存储器14地址设置“0”。
定序器9的初始化也能够通过将初始化程序72直接装载到程序存储器10的END指令之前来实现。带有初始化指令开始地址以及信号线62上馈给时钟信号的装载地址计数器3将会执行该初始化指令。还有一个可选的初始化方法是采用一个可逆地址计数器3,并从存储器10顶部开始装载该初始化指令。为了开始初始化,该地址计数器应当被设定为递减计数。为执行与布尔方程有关的指令,计数器3应当被设定为递增计数。
如果子程序104、114、120和122提供的机器指令不能装入一个单独设备1,那么它们就在其他设备的程序存储器之间分配,譬如图3的设备1-1、1-2和1-m。多个设备间的机器代码分配由图6的软件子程序执行。譬如,如果有6个设备,每个设备有16个定序器,那么参与逻辑方程处理的定序器总数将为96,分配子程序116将会在96个定序器之间分配机器指令,而不是在单个设备的16个定序器之间分配。
可以连接的设备1-1至1-m的数量实际不受限制。但是它们需要如图3所示那样进行同步。储存END指令的设备(譬如设备1-1)通过在信号线54-1上发布END复位信号来同步所有设备(譬如1-2至1-m),并分别复位设备复位控制器5-2至5-m。
按照此处公布的发明,该处理设备的体系结构不限于ASIC、FPGA或类似设备,而且也适用于采用毫微技术和其他技术分析的、采用相同的多处理单元同步处理与信息传输原理的设备。
本发明不应局限于例图所示的、并由通过示例给出的说明加以描述的实施例,该实施例不是极限,只不过是符合所附权利要求的范围。

Claims (25)

1、一种用于并行处理逻辑方程和算术运算的并行处理器,包括:
一组定序器装置,具有使该组定序器装置中每个定序器同步运行的共同时钟;
该组定序器装置中每个定序器具有一个一位处理器、输入多路转换器、储存由该一位处理器所产生数据的数据存储器和一个机器指令解码器;
公共程序存储器,用于存储可处理逻辑方程的机器指令,所述公共程序存储器包括该组定序器中的每个定序器内的分布式程序存储器,从逻辑方程转换所得的机器指令被储存在上述分布式程序存储器中;上述机器指令按近似相等的比例在该组定序器中每个定序器内的上述分布式程序存储器之间进行分配;
公共地址计数器,用于寻址该组定序器中至少两个定序器的所述分布式程序存储器;
公共复位线,用于复位该组定序器中的每个定序器;
其中该组定序器中被选定的定序器具有程序结束识别装置,用于识别一条程序结束机器指令,上述程序结束识别装置在检测到上述程序结束机器指令时将上述公共地址计数器复位;
每个上述定序器装置中的上述指令解码器包含无操作识别装置来识别一个无操作机器指令,并禁止该组定序器中该无操作机器指令已被识别的定序器进行任何运算;
该组定序器中每个定序器包括一个数据写控制器和一个输入控制器;
上述机器指令解码器被构造成可检测设定/复位机器指令,上述机器指令解码器在检测到一条设定/复位指令时修改上述数据写控制器的运行;
上述数据写控制器只是在上述一位处理器的输出处于预定的逻辑状态时才向上述数据存储器产生一个写脉冲输出;
上述机器指令解码器在检测到一条设定/复位指令时修改上述输入控制器的运行;
上述输入控制器根据当前机器指令中选定位的状态来产生一个逻辑“1”和“0”;
上述多个定序器在它们的上述程序存储器中含有将数据存储器的各个位设置为预定逻辑状态的初始化指令;该初始化指令被上述程序结束机器指令从该逻辑执行指令分散到每个上述选定的定序器中;
上述指令解码器可响应所述公共程序存储器并控制所述输入多路转换器、一位处理器以及数据存储器的运行;
所述一位处理器可响应所述指令解码器和输入多路转换器并产生输出数据;
所述数据存储器在所述指令解码器的控制下存储该输出数据。
2、一种用于并行处理逻辑方程和算术运算的并行处理器,包括:
一组定序器装置,具有使该组定序器装置中每个定序器同步运行的共同时钟;
该组定序器装置中每个定序器具有一个一位处理器、输入多路转换器、储存由该一位处理器所产生数据的数据存储器和一个机器指令解码器;
公共程序存储器,用于存储可处理逻辑方程的机器指令;
所述公共程序存储器包括该组定序器中的每个定序器内的分布式程序存储器,从逻辑方程转换所得的机器指令被储存在上述分布式程序存储器中;上述机器指令按近似相等的比例在该组定序器中每个定序器内的上述分布式程序存储器之间进行分配;
该组定序器装置中第一定序器内的上述输入多路转换器被连接得能从该组定序器中第二定序器内的上述一位处理器接收第一个选定的输出数据信号;
第一定序器的上述程序存储器包括一个读出机器指令,它代表计算所得的上述第一个选定的输出数据信号的执行时间和出现时间,以便通过上述第一定序器内的上述输入多路转换器读出上述第一个选定的输出数据信号;
上述第一个选定的输出数据信号被储存在该组定序器装置中上述第一定序器内的数据存储器之中;
上述指令解码器可响应所述公共程序存储器并控制所述输入多路转换器、一位处理器以及数据存储器的运行;
所述一位处理器可响应所述指令解码器和输入多路转换器并产生输出数据;
所述数据存储器在所述指令解码器的控制下存储该输出数据。
3、一种在公共时钟的控制下可并行处理逻辑方程和算术运算的并行处理器,包括:
可连续并彼此独立地运行的一组定序器装置,具有使该组定序器装置中每个定序器同步运行的共同时钟;
该组定序器装置中每个定序器具有一个一位处理器、输入多路转换器、储存由该一位处理器所产生数据的数据存储器、存储用于处理逻辑方程和算术运算的机器指令的公共程序存储器和指令解码器;
该组定序器装置的每个定序器作为独立于该组定序器装置内其它定序器的单独控制器运行,并且仅响应所述公共时钟和在其公共程序存储器内的机器指令;
上述指令解码器可响应所述公共程序存储器并控制所述输入多路转换器、一位处理器以及数据存储器的运行,所述指令解码器严格地按照序列顺序处理所述程序存储器内的每条指令;
所述一位处理器可响应所述指令解码器和输入多路转换器并产生输出数据;
所述数据存储器在所述指令解码器的控制下存储该输出数据。
4、如权利要求3的处理器,包括一个公共地址计数器,用于寻址所述的公共程序存储器。
5、如权利要求4的处理器,其中该组定序器装置中的第一和第二定序器另外还具有一个输入选择器和算术模块;
上述第一定序器内的上述算术模块和上述输入多路转换器的输出被连接到上述第二定序器的上述输入选择器的输入;
上述第二定序器内的上述输入选择器的一个输出被连接到上述算术模块的输入;
上述第二定序器内的上述输入多路转换器的一个输出被连接到上述算术模块的输入;
上述第二定序器的上述算术模块有一个输出被连接到上述第二定序器的上述数据存储器;
上述第一定序器的上述输入多路转换器、算术模块和数据存储器对上述第一定序器的指令解码器作出响应,并在储存于上述第一定序器内上述程序存储器中的机器指令的控制下对来自上述数据存储器、输入多路转换器和算术模块的数据进行运算;
上述第二定序器的上述输入选择器、算术模块和数据存储器对上述第二定序器的指令解码器作出响应,并在储存于上述第二定序器内上述程序存储器中的机器指令的控制下对输入数据进行运算。
6、如权利要求5的处理器,其中上述算术模块是一个可编程算术模块:
上述指令解码器检测算术重新配置指令并重新配置该可编程算术模块。
7、如权利要求3的处理器,其中所述公共程序存储器包括该组定序器中的每个定序器内的分布式程序存储器,上述分布式程序存储器接收和存储从逻辑方程和算术运算转换所得的机器指令;上述机器指令按近似相等的比例在该组定序器中每个定序器内的上述分布式程序存储器之间进行分配。
8、如权利要求7的处理器,包括一个公共地址计数器,用于寻址该组定序器的至少两个定序器中的上述分布式程序存储器。
9、如权利要求8的处理器,包括一个用于复位该组定序器内每个定序器的公共复位线。
10、如权利要求9的处理器,其中该组定序器中一个选定的定序器具有程序结束识别装置,用于识别一条程序结束机器指令,上述程序结束识别装置在检测到上述程序结束机器指令时将上述公共地址计数器复位;
11、如权利要求9的处理器,其中该组定序器中一个选定的定序器具有程序结束识别装置,用于识别一条程序结束机器指令,上述程序结束识别装置在检测到上述程序结束机器指令时将上述公共地址计数器复位至一个预定的计数。
12、如权利要求11的处理器,其中上述该组定序器在其程序存储器内包括用于将数据存储器各位设置成预定逻辑状态的初始化指令;所述初始化指令在每个选定的定序器中被所述程序结束机器指令将其与逻辑执行指令间隔开。
13、如权利要求9的处理器,其中每个上述定序器装置中的上述指令解码器包含无操作识别装置来识别一个无操作机器指令,并禁止该组定序器中该无操作机器指令已被识别的定序器内的一位处理器进行任何运算。
14、如权利要求13的处理器,其中该组定序器中每个定序器包括一个数据写控制器和一个输入控制器;
上述机器指令解码器被构造成可检测设定/复位机器指令,上述机器指令解码器在检测到一条设定/复位指令时修改上述数据写控制器的运行;
上述数据写控制器只是在上述一位处理器的输出处于预定的逻辑状态时才向上述数据存储器产生一个写脉冲输出;
上述机器指令解码器在检测到一条设定/复位指令时修改上述输入控制器的运行;
上述输入控制器根据当前机器指令中选定位的状态来产生一个逻辑“1”和“0”。
15、如权利要求8的处理器,其中所述公共地址计数器是一个可逆计数器。
16、如权利要求3的处理器,其中在该组定序器装置中的至少一个第一定序器具有一个数据选择器;连接上述第一定序器内的上述数据选择器以接收该组定序器内一个第二定序器内的一位处理器的第一选定输出数据信号;上述至少第一定序器的上述程序存储器包括一个读出机器指令,它代表计算所得的上述第一个选定的输出数据信号的执行时间和出现时间,以便通过上述第一定序器内的上述数据选择器读出上述第一个选定的输出数据信号。
17、如权利要求16的处理器,其中所述第一选定输出数据信号在该组定序器的第一定序器的指令解码器的控制下,存储在该组定序器装置的上述第一定序器的数据存储器内。
18、如权利要求16的处理器,其中所述程序结束识别装置在检测到所述程序结束机器指令时预置所述公共地址计数器为一个预定的计数。
19、如权利要求3的处理器,其中该组定序器装置的第一定序器的输入多路转换器被连接以接收从该组定序器的第二定序器的所述一位处理器输出的第一选定输出数据信号;
第一定序器的上述程序存储器包括一个读出机器指令,它代表计算所得的上述第一个选定的输出数据信号的执行时间和出现时间,以便通过上述第一定序器内的上述输入多路转换器读出上述第一个选定的输出数据信号;
上述第一个选定的输出数据信号被储存在该组定序器装置中上述第一定序器内的数据存储器之中。
20、一种产生用于并行处理逻辑方程组和算术运算的IC的系统,包括:
一组可连续、同步且彼此独立地运行的定序器装置,该组定序器装置至少包括第一定序器和第二定序器;
该组定序器装置的每一个定序器由一个一位处理器、输入多路转换器、程序存储器、数据存储器和指令解码器构成;
所述第一定序器的第一输出信号线连接到所述第二定序器的输入多路转换器,所述第一输出信号线传送由所述第一定序器的一位处理器提供的输出数据;
从硬件描述语言图产生逻辑结构的第一计算机程序子程序;
第二计算机程序子程序,响应上述第一计算机程序子程序,并将该逻辑结构转换为该组定序器装置的机器指令;
第三计算机程序子程序,用于在该组定序器装置之间按近似相等的比例将由上述第二计算机子程序产生的上述机器指令进行划分;
第四计算机程序子程序,用于计算该组定序器装置内逻辑结构的执行时间;
第五计算机程序子程序,用于产生输出数据读指令,并在所述程序存储器内这样一个位置将该读指令插入到所述第二定序器的程序存储器中,该位置是指当产生规定的输出数据并在所述第一定序器的输出端上临时可用时将执行该读指令的位置,所述输出数据读指令通过所述第二定序器的输入多路转换器从所述第一定序器捕获所述输出数据。
21、如权利要求20所述的用于产生并行处理逻辑方程组和算术运算的IC的系统,进一步包括一个公共地址计数器,用于寻址该组定序器中的至少第一和第二定序器的程序存储器,并且通过同时寻址所述第一和第二定序器的所述程序存储器而同步由第一和第二定序器中每一个定序器对指令的执行。
22、如权利要求21所述的用于产生并行处理逻辑方程组和算术运算的IC的系统,进一步包括一个第六计算机程序子程序,用于将一个程序结束机器指令插入到该组定序器之一中,
该组定序器的至少一个定序器在所述指令解码器内具有一个程序结束识别装置,用于识别程序结束机器指令,所述程序结束识别装置在检测到所述程序结束机器指令时复位所述地址计数器。
23、如权利要求20所述的用于产生并行处理逻辑方程组和算术运算的IC的系统,其中该组定序器中的每一个定序器包括一个数据写控制器和一个数据存储器输入控制器;
所述机器指令解码器用于检测设置/复位机器指令,所述机器指令解码器在检测到一个设置/复位指令时修改所述数据写控制器的操作,
仅当所述一位处理器的输出处于预定逻辑状态时,所述数据写控制器产生一个写脉冲输出给所述数据存储器,
所述机器指令解码器用于检测设置/复位机器指令,所述机器指令解码器在检测到一个设置/复位指令时修改所述数据存储器输入控制器的操作。
24、如权利要求22所述的用于产生并行处理逻辑方程组和算术运算的IC的系统,其中该组定序器在其程序存储器中包括有初始化指令,用于将数据存储器各位设置成预定逻辑状态,所述初始化指令在每个选择的定序器内与所述逻辑执行指令借助于所述程序结束机器指令而分开。
25、如权利要求20所述的用于产生并行处理逻辑方程组和算术运算的IC的系统,该组定序器中的所述第一和第二定序器进一步包括一个输入选择器和一个算术模块,所述输入选择器和算术模块均具有至少一个输入和至少一个输出,
所述输入多路转换器和所述第一定序器的算术模块的输出连接到所述第二定序器的所述输入选择器的至少一个输入端,
所述第二定序器的输入选择器的输出连接到所述算术模块的输入;
所述第二定序器的输入多路转换器的输出连接到所述这算术模块的输入,
所述这第二定序器的算术模块的输出连接到所述第二定序器的数据存储器,
所述第一定序器的数据存储器、输入多路转换器以及算术模块响应于所述第一定序器的所述指令解码器,并在存储于所述第一定序器的程序存储器内的机器指令的控制下,对来自数据存储器、输入多路转换器以及算术模块的数据进行操作,
所述第二定序器的所述输入选择器、算术模块以及数据存储器响应于所述第二定序器的指令解码器,并且并在存储于所述第二定序器的程序存储器内的机器指令的控制下,对输入数据进行操作。
CNB018078346A 2000-02-24 2001-02-09 借助并行定序器的数字电路实现 Expired - Lifetime CN1229741C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/512,091 2000-02-24
US09/512,091 US6578133B1 (en) 2000-02-24 2000-02-24 MIMD array of single bit processors for processing logic equations in strict sequential order

Publications (2)

Publication Number Publication Date
CN1422406A CN1422406A (zh) 2003-06-04
CN1229741C true CN1229741C (zh) 2005-11-30

Family

ID=24037631

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018078346A Expired - Lifetime CN1229741C (zh) 2000-02-24 2001-02-09 借助并行定序器的数字电路实现

Country Status (6)

Country Link
US (2) US6578133B1 (zh)
EP (1) EP1269337A4 (zh)
KR (1) KR100759600B1 (zh)
CN (1) CN1229741C (zh)
AU (1) AU2001236872A1 (zh)
WO (1) WO2001063647A2 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829695B1 (en) * 1999-09-03 2004-12-07 Nexql, L.L.C. Enhanced boolean processor with parallel input
US20040225865A1 (en) * 1999-09-03 2004-11-11 Cox Richard D. Integrated database indexing system
JP3900485B2 (ja) * 2002-07-29 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体
US7509246B1 (en) * 2003-06-09 2009-03-24 Altera Corporation System level simulation models for hardware modules
EP1766544B1 (en) * 2004-06-30 2019-12-04 Coherent Logix Incorporated Execution of hardware description language (hdl) programs
JP4100379B2 (ja) * 2004-08-09 2008-06-11 セイコーエプソン株式会社 電気光学装置および電気光学装置の表示方法
US7080755B2 (en) * 2004-09-13 2006-07-25 Michael Handfield Smart tray for dispensing medicaments
US7418676B2 (en) * 2005-01-19 2008-08-26 Seiko Epson Corporation Asynchronous circuit design tool and computer program product
US7743233B2 (en) * 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
CN100442224C (zh) * 2006-01-11 2008-12-10 大同股份有限公司 将硬件元件图转换为硬件描述语言的方法
CN100465884C (zh) * 2006-01-13 2009-03-04 大同股份有限公司 高级语言的函式转换为硬件组件图的方法
US7761817B2 (en) * 2006-05-22 2010-07-20 Coherent Logix, Incorporated Designing an ASIC based on execution of a software program on a processing system
US20090300570A1 (en) * 2006-07-17 2009-12-03 Syncira Corporation Interactive hierarchical analog layout synthesis for integrated circuits
US20080016476A1 (en) * 2006-07-17 2008-01-17 Shufan Chan Hierarchical analog layout synthesis and optimization for integrated circuits
US7823116B2 (en) * 2006-07-17 2010-10-26 Syncira Corporation Hierarchical analog layout synthesis and optimization for integrated circuits
US8145650B2 (en) * 2006-08-18 2012-03-27 Stanley Hyduke Network of single-word processors for searching predefined data in transmission packets and databases
KR100834412B1 (ko) * 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서
US20090145306A1 (en) 2007-12-05 2009-06-11 Sara Lee Corporation System and method for manufacturing and processing a food product
US8281274B1 (en) * 2010-01-08 2012-10-02 Altera Corporation Method and apparatus for performing efficient incremental compilation
WO2012051577A1 (en) 2010-10-15 2012-04-19 Coherent Logix, Incorporated Disabling communication in a multiprocessor system
CN102298516B (zh) * 2011-09-20 2013-11-20 北京航天自动控制研究所 一种plc梯形图硬件处理器
US9553590B1 (en) * 2012-10-29 2017-01-24 Altera Corporation Configuring programmable integrated circuit device resources as processing elements
US20150035876A1 (en) * 2013-08-05 2015-02-05 Brass Roots Technologies, LLC Independent color stretch in color-sequential displays
US11544203B2 (en) 2019-12-30 2023-01-03 Micron Technology, Inc. Sequencer chaining circuitry
US11029920B1 (en) 2020-10-21 2021-06-08 Chariot Technologies Lab, Inc. Execution of a conditional statement by an arithmetic and/or bitwise unit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1445714A (en) * 1973-04-13 1976-08-11 Int Computers Ltd Array processors
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US4306286A (en) * 1979-06-29 1981-12-15 International Business Machines Corporation Logic simulation machine
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US4914612A (en) * 1988-03-31 1990-04-03 International Business Machines Corporation Massively distributed simulation engine
CA2021192A1 (en) * 1989-07-28 1991-01-29 Malcolm A. Mumme Simplified synchronous mesh processor
US5802290A (en) * 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
US5511212A (en) * 1993-06-10 1996-04-23 Rockoff; Todd E. Multi-clock SIMD computer and instruction-cache-enhancement thereof
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5615127A (en) * 1994-11-30 1997-03-25 International Business Machines Corporation Parallel execution of a complex task partitioned into a plurality of entities

Also Published As

Publication number Publication date
CN1422406A (zh) 2003-06-04
WO2001063647A2 (en) 2001-08-30
EP1269337A4 (en) 2006-02-15
WO2001063647A3 (en) 2001-12-20
US6915410B2 (en) 2005-07-05
US6578133B1 (en) 2003-06-10
KR20020079906A (ko) 2002-10-19
KR100759600B1 (ko) 2007-09-17
US20030149859A1 (en) 2003-08-07
AU2001236872A1 (en) 2001-09-03
EP1269337A2 (en) 2003-01-02

Similar Documents

Publication Publication Date Title
CN1229741C (zh) 借助并行定序器的数字电路实现
US10970245B2 (en) Processor with reconfigurable pipelined core and algorithmic compiler
Jo et al. DSIP: A scalable inference accelerator for convolutional neural networks
Sharma et al. Dnnweaver: From high-level deep network models to fpga acceleration
CN107229463B (zh) 计算设备和相应计算方法
US9135387B2 (en) Data processing apparatus including reconfiguarable logic circuit
CN109144702B (zh) 一种用于行列并行粗粒度可重构阵列多目标优化自动映射调度方法
JP2020537784A (ja) ニューラルネットワークアクセラレーションのための機械学習ランタイムライブラリ
CN1781092A (zh) 数据流机
CN1434380A (zh) 图像处理装置和方法以及用于该装置的编译程序
CN1518798A (zh) 集成电路器件
CN1321270A (zh) 程序产品及数据处理系统
US20160239461A1 (en) Reconfigurable graph processor
Amano et al. MuCCRA chips: Configurable dynamically-reconfigurable processors
CN110998513A (zh) 高吞吐量处理器
TW544603B (en) Designer configurable multi-processor system
Garofalo et al. Darkside: A heterogeneous risc-v compute cluster for extreme-edge on-chip dnn inference and training
Ushiroyama et al. Convolutional neural network implementations using Vitis AI
Ramakrishna et al. Embedded computer architecture and automation
Santoro et al. Energy-performance design exploration of a low-power microprogrammed deep-learning accelerator
Mayer-Lindenberg High-level FPGA programming through mapping process networks to FPGA resources
Kao Optimizing FPGA-Based Convolutional Neural Network Performance
CN102393814B (zh) 一种由软件方式生成动态可重构处理器配置信息的系统
Cervero et al. Survey of reconfigurable architectures for multimedia applications
Boppu Code Generation for Tightly Coupled Processor Arrays

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
CX01 Expiry of patent term

Granted publication date: 20051130

CX01 Expiry of patent term