发明内容
根据第一方面,提供一种系统芯片,包括:AI模块,包括排列成二维阵列的多个处理单元,各处理单元能够完成逻辑和/或乘加运算;FPGA模块,其中,FPGA模块经接口模块与AI模块连通;FPGA模块中部分模块配置为对AI模块进行检测的检测功能;和,JTAG接口,用于根据指令启动检测功能,以便对AI模块进行测试。
优选地,所述被配置为检测功能的模块包括测试激励生成部分,用于产生测试向量加载到待测试的AI模块;测试结果分析部分,用于对待测AI模块的测试响应信号进行压缩,产生特征向量,根据特征向量来判定AI模块有无故障;测试过程控制部分,用于启动和中止测试过程。
优选地,AI模块嵌入FPGA模块中以便复用FPGA模块的绕线架构,以便自AI模块发送数据或者接收数据,皆经由所述的复用的FPGA的绕线架构。
优选地,所述配置对AI模块进行检测的检测功能的部分FPGA模块,是FPGA模块在配置用户电路后所剩余的FPGA资源。
优选地,所述配置对AI模块进行检测的检测功能的部分FPGA模块经配置,定期中断AI模块的运算操作,而实行对AI模块的测试。
根据第二方面,提供一种测试系统芯片中AI模块的方法,系统芯片还包括FPGA模块和JTAG接口;其中,FPGA模块经接口模块与AI模块连通;所述方法包括:
把FPGA配成测试AI模块的控制电路;第一功能块配置为测试激励模块,第二功能块配置为测试过程控制模块,第三功能块配置为测试结果分析模块;
经由JTAG接口利用测试激励部分向AI模块发送测试激励;
测试结果分析模块从AI模块接收测试结果;
测试结果分析模块将测试结果压缩产生特征向量;根据特征向量来判定AI模块的各单元有无故障;
当AI模块测试完成后,再把FPGA模块配成正常功能。
优选地,其特征在于,定期中断AI模块正常操作,而实行对AI模块的测试。
通过配置FPGA为测试电路,由此可以节约成本和提高测试速度。
具体实施方式
为使本发明实施例的技术方案以及优点表达的更清楚,下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
在本申请的描述中,术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“东”、“南”、“西”、“北”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
图1是根据本发明实施例的测试系统芯片上的人工智能模块的电路结构示意图。如图1所示,系统芯片上集成有至少一个FPGA模块和至少一个人工智能模块。
FPGA模块可实现逻辑、计算、控制等各种功能。FPGA利用小型查找表(例如,16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能。
人工智能AI模块可实现或加速经预先选定的特定AI功能,包括人工智能(Artificial Intelligence AI),深度学习(Deep Learning DL),机器学习(MachineLearning ML)等各种算法或加速算法中某一步骤的特定功能(如卷积Convolution,矩阵Matrix/张量运算Tensor Operation等)。在一个例子中,人工智能(AI)部分包含由多个功能模块(FU)组成的阵列。
FPGA模块和AI模块通过接口模块连通。接口模块可以是XBAR模块,XBAR模块例如由多个选择器(Multiplexer)和选择位元组成。接口模块也可以是FIFO(先进先出)。接口模块还可以是同步器(Synchronizer),同步器例如由2个触发器(Flip-Flop或FF)串连而成。FPGA模块可以为AI模块传输数据,提供控制。
FPGA模块和人工智能模块的大小并无限定,在设计时由实际应用决定。
在占用芯片布局方面,一般是安排FPGA模块与人工智能模块相邻。FPGA模块和AI模块可以并排放置,此时FPGA模块可以为AI模块传输数据,提供控制。AI模块也可以嵌入FPGA模块之中;比如,FPGA模块较大,人工智能模块较小的情况时,亦可在大片的FPGA模块中挖空一窗口,内置入人工智能模块;此时,AI模块需要复用FPGA模块的绕线架构,以便通过复用的FPGA模块的绕线架构接收和发送数据。
在实施例中,AI模块的自测(Built-In Self-Test)功能由FPGA内电路实现。此自测电路与片上的测试接口(JTAG,Joint Test Action Group,联合测试工作组)相连。经由JTAG接口,可以起动该自测电路,提供必要的输入,收集测试输出,并分析测试结果。在需要时,AI模块的自测功能由FPGA内电路配置实现,测试完成后可以将FPGA模块回复原有的功能。由此,可以节约芯片空间。
在一个例子中,FPGA模块实现自测电路的电路,是FPGA模块在配置用户电路后所剩余的FPGA资源。可以配置FPGA内的这个电路,以便定期中断AI模块正常操作,而实行对AI模块的测试,以保证AI模块的可靠性。
此外,AI模块一般需要大量的数据输入/输出信号来满足其高带宽的数据处理能力。FPGA模块在其四周边界拥有非常大量的绕线点,可以当做FPGA的输出/输入点。将FPGA与AI模块集成在同一芯片上时,AI模块的输出/输入信号可以很好的找到相应的FPGA连接点。FPGA可以高速提供大量的数据到AI模块,配合其高带宽处理能力。
图2是FPGA电路的结构示意图。如图2所示,FPGA电路可包含有多个可编程逻辑模块(LOGIC)、嵌入式存储块(EMB)、乘累加器(MAC)等模块和相应的绕线(XBAR)。当然,FPGA电路还设有时钟/配置模块(支干seam/主干spine)等相关资源。若需要EMB或MAC模块时,因其面积比PLB大许多,故以此EMB/MAC模块取代若干PLB模块。
LOGIC模块可以包含,例如,8个6输入查找表,18个寄存器。EMB模块可以是,例如,36k比特或2个18k比特的存储单元。MAC模块可以是,例如,25x18乘法器,或2个18x18乘法器。FPGA阵列中LOGIC、MAC、EMB各模块数量的占比并无限制,阵列的大小也根据需要,在设计时由实际应用决定。
绕线资源XBAR是各模块间互联的接点,均匀地分布在FPGA模块内。FPGA模块内所有的资源,PLB、EMB、MAC、IO相互之间的绕线都是经有一个相同的界面XBAR单元来实现。由绕线方式来看,整个阵列是相同一致,整齐排列的XBAR单元形成网格,将FPGA内所有模块相连。
FPGA电路或者其部分电路可以被配置为对AI模块进行检测的功能块。
图3是人工智能模块的结构示意图。如图3所示,人工智能AI模块是一个二维阵列并且包括,例如,4X4个处理单元PE。AI模块可分为两个维度,彼此垂直的第一维度和第二维度。以第一处理器、第二处理器和第三处理器为例,第一处理器和第二处理器沿第一维度沿第一方向相邻排列,第一处理器的第一输出端耦合到第一处理器的第一输入端;第一处理器和第三处理器沿第二维度沿第二方向相邻排列,第一处理器的第二输出端耦合到第三处理器的第二输入端。为理解方便起见,下文将以水平维度为第一维度、左向右为第一方向,以垂直维度为第二维度、上向下为第二方向。
数据a可以沿第一维度双向流动;例如,既可以在同一时钟下沿第一方向依次输入具有相同第二维度值的各处理单元,也可以沿第一方向的相反方向依次输入具有相同第二维度值的各处理单元;可以在第二维度双向流动,既可以在同一时钟下沿第二方向依次输入具有相同第一维度值的各处理单元,也可以沿第二方向的相反方向依次输入具有相同第一维度值的各处理单元。当然,通过控制,同一个数据或者由其衍生的数据可以在不同的时钟下流经所有的PE单元。
需要注意,图3中的每条数据线既可代表单比特的信号,也可代表8(或16、32)比特的信号。
在输入处理单元后,数据在处理单元中进行各种运算,例如加减乘除,逻辑运算等等。
在一个例子中,人工智能模块可以实现矩阵乘法。在另一个例子中,二维阵列可以实现卷积算法。
图4是处理单元的示意图。如图4所示,处理单元(PE)包括可编程功能单元(programmable functional unit,PFU)。处理单元可以设置至少一个IMUX(例如,IMUX1和IMUX2),以及一个OMUX。IMUX1和IMUX2接收相同的输入数据,即来自第一维度和第二维度不同方向(例如,东南西北)四个方向的输入数据E、S、W、N。IMUX1可以选通至少一路数据,送入PFU的一个输入端;IMUX2可以选通至少一路数据,送入PFU的另一个输入端。当然,PFU可以有两个以上的输入端,因此IMUX的数量可以是多于两个,或者IMUX1和IMUX各自可以提供多于一路的数据给PFU。
PFU实现各种功能,一般包括逻辑、乘法、加法等运算,比如乘、加、减、计数(加一、减一)、异或XOR、移位SHIFT、旋转ROTATE、比较等等。在PFU,对输入的数据进行运算;然后,该运算结果寄存在寄存器REG中。在下一个时钟CK时,运算结果经OMUX输出。OMUX可以有东南西北四个方向的输出。在选通信号的控制下,OMUX选择相应的方向输出运算结果,用以当作四个相邻PE的输入数据。
此外,IMUX1的输出端还耦合到OMUX的一个输入端。因此,可以将IMUX1所选通的数据直接经OMUX选通输出。这样的操作,实际上实现了跳线功能,用以跳过当前PE的处理功能,由选定的输入直接送到输出。跳线功能有助于有针对性地对处理单元进行测试、也有助于将出错的处理单元进行隔离。
图5是测试AI模块的详细电路结构图。如图5所示,FPGA可以将一部分功能块分别配置为下面3种功能:测试激励,测试结果分析,测试过程控制。测试激励可以产生大量的测试向量加载到待测试的AI模块,测试结果分析功能用于对待测AI模块的测试响应信号进行压缩产生特征向量,根据特征向量来判定AI模块有无故障。测试过程控制则用于启动和中止测试过程。在配置完成后,FPGA可以充当AI模块的测试控制电路。
由于测试功能集成到芯片的FPGA模块中,大大减少了测试过程中与外部交互的数据量。
图6是LFSR的电路示意图。如图6所示,这是一个长度为8的LFSR。它的输出Q做为PE的测试向量。在图6中的LFSR电路的多项式(polynominal)为:X8+X7+X4+X3+X+1。LFSR可以由FPGA模块编程实现。
图7是MISR的电路示意图。图7中示意的是一个16位的MISR。其输入D来自PE的输出,MISR的分析结果由Q输出。在图7中,MISR电路的多项式(polynominal)为:X16+X12+X5+1。MISR可以由FPGA模块编程实现。
图8示意了测试AI模块的方法流程图。如图6所示,在步骤S602,把FPGA配成测试AI模块的控制电路,其中第一功能块配置为测试激励模块,第二功能块配置为测试过程控制模块,第三功能块配置为测试结果分析模块。
在步骤S604,利用测试激励模块向AI模块发送测试激励。
在步骤S606,测试结果分析模块从AI模块接收测试结果,并且将其压缩产生特征向量,根据特征向量来判定AI模块有无故障。
当AI模块测试完成后,再把FPGA配成正常功能使用。如此可节省AI模块的测试电路所需资源。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。