CN116933698A - 用于计算设备的验证方法及装置、电子设备及存储介质 - Google Patents
用于计算设备的验证方法及装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116933698A CN116933698A CN202210364406.2A CN202210364406A CN116933698A CN 116933698 A CN116933698 A CN 116933698A CN 202210364406 A CN202210364406 A CN 202210364406A CN 116933698 A CN116933698 A CN 116933698A
- Authority
- CN
- China
- Prior art keywords
- computing device
- thread
- module
- queue
- computing
- 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.)
- Pending
Links
- 238000012795 verification Methods 0.000 title claims abstract description 126
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000012360 testing method Methods 0.000 claims abstract description 87
- 230000004044 response Effects 0.000 claims abstract description 30
- 238000005070 sampling Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 63
- 238000010200 validation analysis Methods 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 31
- 238000004891 communication Methods 0.000 claims description 19
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000004088 simulation Methods 0.000 abstract description 20
- 238000011161 development Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
一种用于计算设备的验证方法及装置、电子设备及存储介质,计算设备包括互连模块以及至少一个计算单元,该验证方法包括:提供用于验证计算设备的验证环境,其中,验证环境包括请求队列、回复队列以及主总线功能模块;以及,利用请求队列和回复队列,并行执行多个验证线程,其中,多个验证线程包括测试线程、主线程和计算设备线程,主线程运行主总线功能模块进行对于计算设备的接口驱动与采样操作,通过互连模块与至少一个计算单元通信,测试线程向计算设备发送驱动信号以及从计算设备接收响应信号,计算设备线程运行计算设备以进行运算。该方法具有多线程并行仿真的优势,能够加快仿真速度,明显加快芯片开发速度。
Description
技术领域
本公开的实施例涉及一种用于计算设备的验证方法、验证装置、电子设备以及计算机可读存储介质。
背景技术
随着集成电路产业的快速发展,芯片复杂度大大增加。例如,图形处理单元(Graphic Processing Unit,GPU)的规模越来越大,因此对于GPU的功能验证的要求越来越高,并且对其迭代周期的要求越来越短。目前,通用验证方法学(Universal VerificationMethodology,UVM)是以System Verilog类库为主体的验证平台开发框架,被广泛应用于GPU的验证中。例如,可以利用Synopsys或者Cadence等仿真工具进行设计的验证工作。
发明内容
本公开至少一个实施例提供一种用于计算设备的验证方法,计算设备包括互连模块以及至少一个计算单元,验证方法包括:提供用于验证计算设备的验证环境,其中,验证环境包括请求队列、回复队列以及主总线功能模块;以及,利用请求队列和回复队列,并行执行多个验证线程,其中,多个验证线程包括测试线程、主线程和计算设备线程,主线程运行主总线功能模块进行对于计算设备的接口驱动与采样操作,通过互连模块与至少一个计算单元通信,测试线程向计算设备发送驱动信号以及从计算设备接收响应信号,计算设备线程运行计算设备以进行运算。
例如,在本公开至少一实施例提供的验证方法中,利用请求队列和回复队列,并行执行多个验证线程,包括:利用请求队列和回复队列进行多个验证线程之间的数据通信。
例如,在本公开至少一实施例提供的验证方法中,利用请求队列和回复队列进行多个验证线程之间的数据通信,包括:测试线程使用请求队列通过主线程向计算设备发送驱动信号,以及使用回复队列通过主线程从计算设备接收响应信号。
例如,在本公开一实施例提供的验证方法中,验证环境还包括时钟发生器模块,验证方法还包括:运行时钟发生器模块以生成系统时钟信号,使用系统时钟信号以用于并行执行多个验证线程。
例如,在本公开一实施例提供的验证方法中,验证环境还包括系统软件接口模块,测试线程还运行系统软件接口模块以与系统软件通信,以从系统软件接收用于计算设备的验证的测试用例和驱动程序。
例如,在本公开一实施例提供的验证方法中,测试线程通过系统软件接口模块,将对应于测试用例和驱动程序的驱动信号通过请求队列发送给主总线功能模块,以及通过回复队列将主总线功能模块获取的计算设备的状态反馈给系统软件。
例如,在本公开一实施例提供的验证方法中,验证环境还包括从总线功能模块和存储器模块,主线程还运行从总线功能模块和存储器模块,从计算设备接收存储访问请求,通过从总线功能模块响应存储访问请求以访问存储器模块。
例如,在本公开一实施例提供的验证方法中,从总线功能模块提供从计算设备到存储器模块的从地址通道的采样以及从数据通道的驱动。
例如,在本公开一实施例提供的验证方法中,主总线功能模块和从总线功能模块符合高级可扩展接口规范或外围组件快速互连规范。
例如,在本公开一实施例提供的验证方法中,存储器模块符合高带宽内存规范或双倍速率同步动态随机存储器规范;测试线程还对计算设备进行初始化操作以及对至少一个计算单元进行触发操作。
例如,在本公开一实施例提供的验证方法中,计算设备还包括命令处理器模块,计算设备线程运行计算设备,包括:运行命令处理器模块,以与至少一个计算单元进行交互,初始化操作包括对命令处理器模块的初始化操作以及对于至少一个计算单元的初始化。
例如,在本公开一实施例提供的验证方法中,计算设备还包括多个寄存器模块,测试线程还对寄存器模块进行配置以对计算设备进行初始化操作以及对至少一个计算单元进行触发操作。
例如,在本公开一实施例提供的验证方法中,至少一个计算单元包括多个计算单元,计算设备线程包括多个计算设备子线程,多个计算设备子线程分别用于运行多个计算单元。
例如,在本公开一实施例提供的验证方法中,计算设备是单核图像处理单元或多核图像处理单元,计算单元为图像处理单元计算核心。
例如,在本公开一实施例提供的验证方法中,请求队列包括写地址队列和写数据队列,测试线程使用请求队列通过主线程向计算设备发送驱动信号,包括:测试线程向写地址队列发送地址信号,响应于主线程检测到写地址队列非空,根据总线时序将地址驱动到计算设备;测试线程向写数据队列发送数据信号,响应于主线程检测到写数据队列非空,根据总线时序将地址驱动到计算设备。
例如,在本公开一实施例提供的验证方法中,主总线功能模块提供对于地址信号的地址通道的驱动以及用于数据通道的驱动,以及进行对于地址通道的写响应通道采样。
例如,在本公开一实施例提供的验证方法中,回复队列包括写命令回复队列,使用写命令回复队列通过主线程接收来自计算设备的响应信号。
本公开至少一个实施例还提供一种验证方法,用于多个计算设备,多个计算设备之间耦接,每个计算设备包括互连模块以及至少一个计算单元,验证方法对于每个计算设备包括:提供用于验证计算设备的验证环境,其中,验证环境包括请求队列、回复队列以及主总线功能模块;利用请求队列和回复队列,并行执行多个验证线程,其中,多个验证线程包括测试线程、主线程和计算设备线程,主线程运行主总线功能模块进行对于计算设备的接口驱动与采样操作,通过互连模块与至少一个计算单元通信,测试线程向计算设备发送驱动信号以及从计算设备接收响应信号,计算设备线程运行计算设备以进行运算。
例如,在本公开一实施例提供的验证方法中,验证环境还包括系统软件接口模块,测试线程还运行系统软件接口模块以与系统软件通信,以从系统软件接收用于多个计算设备每个的验证的测试用例以及驱动程序。
本公开至少一个实施例还提供一种用于计算设备的验证装置,计算设备包括互连模块以及至少一个计算单元,验证装置包括验证环境单元和线程执行单元,其中,验证环境单元配置为提供用于验证计算设备的验证环境,验证环境包括请求队列、回复队列以及主总线功能模块;线程执行单元配置为利用请求队列和回复队列,并行执行多个验证线程,多个验证线程包括测试线程、主线程和计算设备线程,主线程运行主总线功能模块进行对于计算设备的接口驱动与采样操作,通过互连模块与至少一个计算单元通信,测试线程向计算设备发送驱动信号以及从计算设备接收响应信号,计算设备线程运行计算设备以进行运算。
本公开至少一个实施例还提供一种电子设备,包括:处理器;以及存储器,存储有计算机可执行指令,其中,计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的验证方法。
本公开至少一个实施例提供一种计算机可读存储介质,用于非暂时性地存储计算机可执行指令,其中,计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的验证方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A示出了一种图像处理单元的结构示意图;
图1B示出了本公开至少一个实施例提供的一种用于计算设备的验证方法的示意性流程图;
图2示出了根据本公开至少一实施例的计算设备的验证环境的结构示意图;
图3示出了根据本公开至少一实施例的对于计算设备并行执行多个验证线程的流程示意图;
图4示出了根据本公开至少一实施例的对于包括多个计算设备的系统的验证环境以及验证方法的一个示例的结构示意图;
图5示出了对于多个计算设备并行执行多个验证线程的流程示意图;
图6示出了本公开至少一实施例提供的一种用于计算设备的验证装置的示意框图;
图7为本公开一些实施例提供的一种电子设备的示意框图;
图8为本公开一些实施例提供的另一种电子设备的示意框图;
图9为本公开一些实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
对于大型芯片,例如超大规模的GPU芯片和多核GPU的片内互联、片间互联以及板间互联,如果利用VCS或者Cadence等仿真工具进行仿真,则仿真时间/内存消耗太大,往往需要一周、一个月甚至更长的时间才能完成一个测试用例的仿真。目前的仿真工具缺少有效的多线程仿真方案、加速效果不理想。
本公开至少一个实施例提供一种用于计算设备的验证方法,计算设备包括互连模块以及至少一个计算单元,该验证方法包括:提供用于验证计算设备的验证环境,其中,验证环境包括请求队列、回复队列以及主总线功能模块;以及,利用请求队列和回复队列,并行执行多个验证线程,其中,多个验证线程包括测试线程、主线程和计算设备线程,主线程运行主总线功能模块进行对于计算设备的接口驱动与采样操作,通过互连模块与至少一个计算单元通信,测试线程使用请求队列通过主线程向计算设备发送驱动信号,以及使用回复队列通过主线程从计算设备接收响应信号,计算设备线程运行计算设备以进行运算。
本公开上述实施例提供的用于计算设备的验证方法具有多线程并行仿真的优势,能够加快仿真速度,明显加快芯片开发速度,例如对大规模的多核GPU芯片仿真优势明显。
本公开至少一个实施例还提供对应于上述验证方法的验证装置、电子设备、非暂时性地存储用于实现上述验证方法的计算机可读存储介质。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图1A示出了一种示例性的图像处理单元100的结构示意图。如图1A所示,该图像处理单元100包括命令处理器模块111、一个或多个计算单元130等。例如,该图像处理单元100还可以包括存储器模块(未示出),该存储器模块例如是高宽带存储器(High BandwidthMemory,HBM)。例如,该图像处理单元100的存储器模块可以被图像处理单元100之外的装置(例如CPU)访问。
图1A中具体示出了2个计算单元130作为示例,而省略了其他可能的计算单元。每个计算单元130包括线程束调度/分发模块、多个计算核心(Kernel)、寄存器堆、共享L1缓存等。该寄存器堆包括多个寄存器,例如,通用寄存器或向量寄存器等。为了在多个计算单元130之间对执行计算任务的线程进行调度,该图像处理单元100还可以进一步包括线程块调度模块121。多个计算单元130例如通过片上互联(未示出)彼此耦接。
该图像处理单元100可以用于例如矩阵计算、图像渲染等计算任务,这些计算任务可以通过多个线程并行执行。例如,这些线程在执行前,在线程块调度模块121中被划分成多个线程块,然后这些线程块被分发到各个计算单元。一个线程块中的所有线程通常要分配到同一个计算单元上执行。同时,线程块会被拆分成线程束,例如,每个线程束包含了固定数量(或小于这个固定数量)的线程,例如,32个线程。多个线程块可以在同一个计算单元中执行,或者在不同计算单元中执行。
在每个计算单元中,线程束调度/分发模块对线程束进行调度、分配,以便该计算单元130的多个计算核心运行对应的线程束。每个计算核心包括算术逻辑单元(ALU)、浮点计算单元等。根据计算单元中计算核心的个数,一个线程块中的多个线程束可以同时执行或分时执行。每个线程束中的多个线程会执行相同的指令。
在执行计算任务的进行过程中,计算单元130需要获取将被处理的输入数据,也同样会产生结果数据,这些数据例如可以存储在该图像处理单元100的存储器模块(例如HBM)中。这些输入数据或结果数据可以通过直接内存操作方式进行传输(输入或输出),在这种情况下计算单元130将产生传输访问请求,用于进行直接内存操作。
上述图1A所示的示例性的图像处理单元100仅用于理解,本公开不限于所示的结构与组成,例如,本公开的实施例可以用于其他类型的图像处理单元。
图1B示出了本公开至少一个实施例提供的一种用于计算设备的验证方法的示意性流程图。例如,该计算设备包括互连模块以及至少一个计算单元。例如,在本公开的一些实施例中,计算设备可以是单核CPU或多核CPU,或者可以是单核GPU或多核GPU,相应地,计算单元可以为CPU中的处理器核,或者可以为GPU的计算单元;互连模块用于实现计算设备中多个组成部分之间的耦接与通信,例如,对于GPU而言,为实现计算单元、命令处理器(如下所述)等部件之间的耦接与通信,例如,互连模块可以包括片上网络(network on chip,NoC)。
如图1B所示,该验证方法包括如下的步骤S101~S102。
步骤S101:提供用于验证计算设备的验证环境。
上述验证环境包括请求队列、回复队列以及主总线功能模块。
步骤S102:利用请求队列和回复队列,并行执行多个验证线程。
该多个验证线程包括测试线程、主线程和计算设备线程,这些验证线程并行执行,由此可以提高验证效率。主线程运行主总线功能模块进行对于计算设备的接口驱动与采样操作,通过互连模块与至少一个计算单元通信,测试线程向计算设备发送驱动信号以及从计算设备接收响应信号,计算设备线程运行计算设备以进行运算。
例如,在上述验证方法的一些示例中,步骤S102可以包括:利用请求队列和回复队列进行多个验证线程之间的数据通信。例如,在至少一个示例中,利用请求队列和回复队列进行多个验证线程之间的数据通信,包括:测试线程使用请求队列通过主线程向计算设备发送驱动信号,以及使用回复队列通过主线程从计算设备接收响应信号。通过利用请求队列和回复队列进行数据通信,由此该多个验证线程,特别是测试线程和主线程,可以被更高效地并行执行,还可以降低系统对于存储资源的需求等。
例如,在本公开的一些实施例中,计算设备还包括多个寄存器模块。例如,CPU或GPU包括各种寄存器,这些寄存器中有的用于存储数据,有的用于存储指令,有的用于记录计算设备的工作状态等。例如,被验证的计算设备的多个寄存器模块对应于这些寄存器。
例如,在本公开的一些实施例中,计算设备还包括命令处理器模块。如上所述,对于GPU而言,命令处理器可以是GPU中用于获取从CPU(Central Processing Unit,中央处理单元)中生成的命令并进行解释的处理单元。例如,被验证的计算设备的命令处理器模块对应于该命令处理器。
图2示出了根据本公开至少一实施例的计算设备的验证环境的结构示意图;图2中仅示出了单个计算设备的验证环境作为示例。
对于图2所示的实施例,例如在至少一个示例中,需要被验证的计算设备是多核GPU,该多核GPU包括至少一个作为计算单元的GPU核0~GPU核X,X为正整数。该被验证的计算设备是多核GPU在这个阶段例如是使用硬件描述语言(HDL)等(例如Verilog、SystemVerilog、System C、C++等)表示的设备。同样地,上述验证环境例如也是通过硬件描述语言表达的。
用于验证计算设备的验证环境包括系统软件接口模块201、请求队列202、回复队列203、主总线功能模块204、时钟发生器模块205、存储器模块206以及从总线功能模块207。如图2所示,在至少一个示例中,计算设备还包括命令处理器模块208。
例如,请求队列202和回复队列203可以是FIFO(First In First Out,先入先出)队列。例如,请求队列202存储对应于测试用例和驱动程序的驱动信号,回复队列203存储主总线功能模块204获取的计算设备的状态。
例如,在本公开的一些实施例中,验证环境中的主总线功能模块204可以提供对于地址信号的地址通道的驱动以及数据通道的驱动,以及进行对于地址通道的写响应通道采样(如下面将结合图3所述)。
例如,在本公开的一些实施例中,系统软件(例如UVM系统)通过请求队列202将对应于测试用例和驱动程序的驱动信号发送给主总线功能模块204,以及通过回复队列203将主总线功能模块204获取的计算设备的状态反馈给系统软件。
例如,在本公开的一些实施例中,时钟发生器模块205可以用于生成系统时钟信号。
例如,在本公开的一些实施例中,系统软件接口模块201用于从系统软件接收用于计算设备的验证的测试用例和驱动程序,并将对应于测试用例和驱动程序的驱动信号发送给主总线功能模块204。
例如,在本公开的一些实施例中,从总线功能模块207可以提供从计算设备到存储器模块206的从地址通道的采样以及从数据通道的驱动(如下面将结合图3所述)。
例如,主总线功能模块204和从总线功能模块207符合高级可扩展接口(AdvancedExtensible Interface,AXI)规范或外围组件快速互连(Peripheral ComponentInterconnect Express,PCIE)规范,以及,主总线功能模块204和从总线功能模块用于提供AXI或PCIE接口。
例如,在至少一个示例中,存储器模块206符合高带宽内存(High BandwidthMemory,HBM)规范、双倍速率同步动态随机存储器(Double Data Rate SynchronousDynamic Random Access Memory,DDR SRAM)规范等,也即,存储器模块206对应于HBM存储器、DDR存储器,该DDR存储器可以是任选一种版本的,例如,DDR2、DDR3、DDR4或DDR5。
图2所示的示例中,片上网络例如为计算设备包括的互连模块,主总线功能模块204通过片上网络与至少一个计算单元通信。
例如,在本公开的实施例中,对于互连模块的具体类型、结果等不作限制,例如,片上网络可以包括交叉(switch)网络、树状(tree)网络、环形(ring)网络、网格(Mesh)网络或环面(Torus)网络或它们的任意组合。
如上所述,在验证阶段,上述各种模块都是集成电路设计过程中的硬件描述语言所描述的软件模块,在被计算机编译、运行时能够彼此配合模拟计算设备的操作,包括该计算设备自身的操作、与其他部件(例如验证系统)的交互等。
需要说明的是,图2所示的验证环境仅仅是一个示例,验证环境中包含的模块不限于上述模块,可以包括更多或更少的模块,本公开的实施例对此不作限制。
例如,本公开的实施例的验证方法可以使用基于C++的仿真环境和多CPU多线程机制实现,例如,该验证方法可以使用开源仿真工具Verilator来执行,Verilator对电路计算的最小单位是timescale(时间刻度),如果在一个线程中完成计算设备内部状态计算和测试程序(依赖时钟)会造成工具计算错误,可以通过将数据流分成三个线程进行并行操作,多个验证线程间数据通信可以通过请求队列和回复队列来实现。
需要说明的是,Verilator仿真工具仅仅是一个示例以便于理解,本公开的实施例不限于使用Verilator仿真工具,可以使用其它可以并行仿真的仿真工具。
如前所述,用于验证的系统软件(例如,UVM系统)可以通过请求队列202将对应于测试用例和驱动程序的驱动信号发送给主总线功能模块204,以及通过回复队列203将主总线功能模块204获取的计算设备的状态反馈给系统软件,用于实现多个验证线程的并行执行以及实现多个验证线程之间的并行通信。
例如,在本公开的一些实施例中,验证方法还可以包括:运行时钟发生器模块205以生成系统时钟信号,使用该系统时钟信号以用于并行执行上述多个验证线程。
例如,在本公开的一些实施例中,测试线程还运行系统软件接口模块201以与系统软件通信,例如,从系统软件接收用于计算设备的验证的测试用例和驱动程序。
在本公开的实施例中,利用请求队列202和回复队列204完成多个验证线程之间的数据通信,特别是对于例如多核GPU这样的规模较大的芯片,能够显著加快芯片的仿真速度,明显加快芯片开发速度。
下面,对本公开至少一实施例中如何利用请求队列和回复队列来并行执行多个验证线程进行更具体的示例性说明。
图3示出了根据本公开至少一实施例的对于计算设备并行执行多个验证线程的流程示意图。该验证流程对应于例如图1B所示的验证方法,以及例如图2所示的验证环境以及计算设备。
如图3所示,为了对于处于设计过程中的计算设备进行验证,首先启动主线程301,接着启动测试线程302和计算设备线程303,并与主线程301一起并行执行测试线程302和计算设备线程303。
例如,这里还可以启动时钟发生器模块生成系统时钟信号以用于并行执行上述多个验证线程,例如,主线程301、测试线程302和计算设备线程303。
如图3所示,测试线程302对计算设备中的多个寄存器模块进行配置,以对被验证的芯片(即计算设备芯片,例如GPU芯片)进行初始化操作。例如,计算设备中的寄存器模块用于存储对应于测试用例和驱动程序的驱动信号以及主总线功能模块获取的计算设备的状态。
例如,测试线程302将接收的驱动信号通过请求队列发送给主总线功能模块;计算设备的状态通过回复队列被反馈给测试线程302,测试线程302才将这些状态信息等反馈给例如系统软件。
主线程301运行主总线功能模块、从总线功能模块和存储器模块。例如,主总线功能模块可以提供到计算设备的地址通道驱动、数据通道驱动以及写响应通道采样等,主总线功能模块提供与计算设备之间的接口,如上所述,该接口可以符合已有的某种接口标准,例如PCIE。例如,从总线功能模块可以提供从计算设备到例如存储器模块的数据通道驱动以及进行地址通道采样等,从总线功能模块提供与计算设备之间的接口,如上所述,该接口可以符合已有的某种接口标准,例如PCIE。
例如,地址通道携带控制消息,用于描述被传输的数据属性,承载着对应传输的地址控制信息;例如,数据通道用于在计算设备与主总线功能模块或从总线功能模块之间传输数据。例如,数据通道可以有对应的地址通道,携带传输需要的地址和控制信息。例如,在测试线程302通过主总线功能模块向计算设备写入数据的操作中,计算设备通过写响应通道告诉主总线功能模块传输已经完成。
用于数据通道驱动的从总线功能模块和存储器模块相连接,从总线功能模块响应从计算设备接收的存储访问请求以访问存储器模块,例如,这里的访问操作是模拟GPU对于显存的访问。例如,访问操作可以包括读取操作、写入操作、查询操作等。
如图所示,计算设备线程304可以进一步包括多个计算设备子线程,如图3所述,计算设备子线程1~计算设备子线程n。该多个计算设备子线程分别用于运行对应于多个计算单元的代码,例如,一个计算设备子线程对应于一个计算单元,从而该多个计算设备子线程实现模拟运行该多个计算单元。例如,对于多核GPU,该多个计算设备子线程分别用于实现模拟运行GPU核0~GPU核n-1。
如图3所示,测试线程302和主线程301之间通过请求队列和回复队列进行通信。例如,请求队列包括写地址队列和写数据队列;对应地,使用请求队列通过主线程向计算设备发送驱动信号可以包括:使用写地址队列向主线程传输第一地址信号到计算设备;使用写数据队列向主总线传输第一数据信号到计算设备。
又例如,测试线程使用请求队列通过主线程向计算设备发送驱动信号,包括:测试线程向写地址队列发送地址信号,响应于主线程检测到写地址队列非空,根据总线时序将地址驱动到计算设备;测试线程向写数据队列发送数据信号,响应于主线程检测到写数据队列非空,根据总线时序将数据驱动到计算设备。
例如,回复队列包括写命令回复队列,主线程接收来自计算设备的响应信号,并通过写命令回复队列完成响应信号在测试线程与主线程之间的通信。
例如,如图3所示,在本公开的一些实施例中,测试线程302还对寄存器模块进行配置以对计算设备进行初始化操作以及对至少一个计算单元进行触发操作。
例如,如图3所示,在本公开的一些实施例中,主线程301还运行从总线功能模块和存储器模块,从计算设备接收存储访问请求,通过从总线功能模块响应存储访问请求以访问存储器模块。
例如,如图3所示,在本公开的一些实施例中,计算设备线程303运行计算设备可以包括:运行命令处理器模块,以与至少一个计算单元进行交互。例如,初始化操作可以包括对命令处理器模块的初始化操作以及对于至少一个计算单元的初始化。
在本公开的一些实施例的验证方法还可以用于多个计算设备,例如,多个计算设备之间相互耦接,每个计算设备可以是上面所述的实施例,每个包括互连模块以及至少一个计算单元。
图4示出了根据本公开至少一实施例的对于包括多个计算设备的系统的验证环境以及验证方法的一个示例的结构示意图。
单个计算设备的处理能力有限,为了提高数据处理效率,需要启用多个计算设备同时处理数据,进而产生了包括多个计算设备的系统的需求。例如,包括多个计算设备的系统可以是GPU互连系统或CPU互连系统等。
如图4所示,多个计算设备中的每个的验证环境具有如图2所示的单个计算设备的验证环境的结构,具体的可以参见图2相关的描述,在此不再赘述。多个计算设备进行并行仿真与单个计算设备进行仿真的区别在于,实例化多个计算设备的验证环境,并由一个共用的测试用例和驱动程序来管理测试用例的执行。
例如,在本公开的一些实施例中,多个计算设备的每个通过其系统软件接口模块接收用于多个计算设备的验证的测试用例以及驱动程序。
图5示出了对于多个计算设备并行执行多个验证线程的流程示意图。
如图5所示,例如,存在n个待验证的计算设备(n大于1且n为整数),对于每个计算设备,首先启动主线程,接着通过时钟发生器模块生成系统时钟信号以用于并行执行多个验证线程,接着启动测试线程和计算设备线程并与主线程一起并行执行,最后结束线程。由于对于每个计算设备,并行执行多个验证线程,其中,多个验证线程包括测试线程、主线程和计算设备线程,因此对于n个计算设备,并行执行n个测试线程(测试线程1~测试线程n)、n个主线程和n个计算设备线程(计算设备1线程~计算设备n线程)。测试线程、主线程和计算设备线程各自的操作以及线程之间的通信方式已经在图3中进行了说明,在此不再赘述。
图6示出了本公开至少一个实施例提供的一种用于计算设备的验证装置600的示意框图,该验证装置可以用于执行图1B所示的验证方法。
如图6所示,验证装置600包括验证环境单元601以及线程执行单元602。
验证环境单元601被配置为提供用于验证计算设备的验证环境,该验证环境包括请求队列、回复队列、主总线功能模块等。
线程执行单元602被配置为,利用请求队列和回复队列,并行执行多个验证线程,该多个验证线程包括测试线程、主线程和计算设备线程,主线程运行主总线功能模块进行对于计算设备的接口驱动与采样操作,通过互连模块与至少一个计算单元通信,测试线程向计算设备发送驱动信号以及从计算设备接收响应信号,计算设备线程运行计算设备以进行运算。
例如,在至少一个实施例中,线程执行单元602还被配置为,利用请求队列和回复队列进行多个验证线程之间的数据通信。例如,在至少一个示例中,利用请求队列和回复队列进行多个验证线程之间的数据通信,包括:测试线程使用请求队列通过主线程向计算设备发送驱动信号,以及使用回复队列通过主线程从计算设备接收响应信号。
例如,在至少一个实施例中,验证环境还包括时钟发生器模块,线程执行单元602还被配置为,运行时钟发生器模块以生成系统时钟信号,使用系统时钟信号以用于并行执行多个验证线程。
例如,在至少一个实施例中,验证环境还包括系统软件接口模块,线程执行单元602还被配置为,测试线程还运行系统软件接口模块以与系统软件通信,以从系统软件接收用于计算设备的验证的测试用例和驱动程序。
例如,在至少一个实施例中,线程执行单元602还被配置为,测试线程通过系统软件接口模块,将对应于测试用例和驱动程序的驱动信号通过请求队列发送给主总线功能模块,以及通过回复队列将主总线功能模块获取的计算设备的状态反馈给系统软件。
例如,在至少一个实施例中,验证环境还包括从总线功能模块和存储器模块,线程执行单元602还被配置为,主线程还运行从总线功能模块和存储器模块,从计算设备接收存储访问请求,通过从总线功能模块响应存储访问请求以访问存储器模块。
例如,在至少一个实施例中,线程执行单元602还被配置为,从总线功能模块提供从计算设备到存储器模块的从地址驱动通道的驱动以及从数据通道的驱动,以及进行对于从地址驱动通道的采样。
例如,在至少一个实施例中,线程执行单元602还被配置为,测试线程还对计算设备进行初始化操作以及对至少一个计算单元进行触发操作。
例如,在至少一个实施例中,计算设备还包括命令处理器模块,线程执行单元602还被配置为,运行命令处理器模块,以与至少一个计算单元进行交互。
例如,在至少一个实施例中,计算设备还包括多个寄存器模块,线程执行单元602还被配置为,测试线程还对寄存器模块进行配置以对计算设备进行初始化操作以及对至少一个计算单元进行触发操作。
例如,在至少一个实施例中,请求队列包括写地址队列和写数据队列,线程执行单元602还被配置为,使用写地址队列向主线程传输第一地址信号到计算设备;使用写数据队列向主总线传输第一数据信号到计算设备。
例如,在至少一个实施例中,回复队列包括写命令回复队列,线程执行单元602还被配置为,使用写命令回复队列通过主线程接收来自计算设备的响应信号。
例如,验证环境单元601和线程执行单元602可以采用硬件、软件、固件以及它们的任意可行的组合实现,本公开对此不作限制。
该验证装置600和图1B所示的验证方法的技术效果相同,在此不再赘述。
本公开的至少一个实施例还提供了一种电子设备,该电子设备包括处理器以及存储器,存储器中存储有计算机可执行指令,这些计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的验证方法。
图7为本公开一些实施例提供的一种电子设备700的示意框图。如图7所示,该电子设备700包括处理器710和存储器720。存储器720用于存储计算机可执行指令(例如一个或多个计算机程序模块)。处理器710用于运行计算机可执行指令,计算机可执行指令被处理器710运行时可以执行上文所述的验证方法中的一个或多个步骤。存储器720和处理器710可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器710可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为CISC或RISC结构,例如可以为X86或ARM架构等。处理器710可以为通用处理器或专用处理器,可以控制电子设备700中的其它组件以执行期望的功能。
例如,存储器720可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器710可以运行一个或多个计算机程序模块,以实现电子设备700的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备700的具体功能和技术效果可以参考上文中关于验证方法的描述,此处不再赘述。
图8为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备800例如适于用来实施本公开实施例提供的验证方法。电子设备800可以是终端设备等。需要注意的是,图8示出的电子设备800仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)810,其可以根据存储在只读存储器(ROM)820中的程序或者从存储装置880加载到随机访问存储器(RAM)830中的程序而执行各种适当的动作和处理。在RAM 830中,还存储有电子设备800操作所需的各种程序和数据。处理装置810、ROM 820以及RAM 830通过总线840彼此相连。输入/输出(I/O)接口850也连接至总线840。
通常,以下装置可以连接至I/O接口850:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置860;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置870;包括例如磁带、硬盘等的存储装置880;以及通信装置890。通信装置890可以允许电子设备800与其他电子设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但应理解的是,并不要求实施或具备所有示出的装置,电子设备800可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述验证方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述验证方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置890从网络上被下载和安装,或者从存储装置880安装,或者从ROM820安装。在该计算机程序被处理装置810执行时,可以实现本公开实施例提供的验证方法中限定的功能。
本公开至少一个实施例提供一种计算机可读存储介质,用于非暂时性地存储计算机可执行指令,其中,计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的验证方法。
图9为本公开一些实施例提供的一种存储介质的示意图。如图9所示,存储介质900用于存储计算机可执行指令910。例如,当计算机可执行指令910由计算机执行时可以执行根据上文所述的验证方法中的一个或多个步骤。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种用于计算设备的验证方法,所述计算设备包括互连模块以及至少一个计算单元,所述验证方法包括:
提供用于验证所述计算设备的验证环境,其中,所述验证环境包括请求队列、回复队列以及主总线功能模块;以及
利用所述请求队列和所述回复队列,并行执行多个验证线程,
其中,所述多个验证线程包括测试线程、主线程和计算设备线程,所述主线程运行所述主总线功能模块进行对于所述计算设备的接口驱动与采样操作,通过所述互连模块与所述至少一个计算单元通信,所述测试线程向所述计算设备发送驱动信号以及从所述计算设备接收响应信号,所述计算设备线程运行所述计算设备以进行运算。
2.根据权利要求1所述的验证方法,其中,利用所述请求队列和所述回复队列,并行执行所述多个验证线程,包括:
利用所述请求队列和所述回复队列进行所述多个验证线程之间的数据通信。
3.根据权利要求2所述的验证方法,其中,利用所述请求队列和所述回复队列进行所述多个验证线程之间的数据通信,包括:
所述测试线程使用所述请求队列通过所述主线程向所述计算设备发送驱动信号,以及使用所述回复队列通过所述主线程从所述计算设备接收响应信号。
4.根据权利要求1所述的验证方法,其中,所述验证环境还包括时钟发生器模块,
所述验证方法还包括:
运行所述时钟发生器模块以生成系统时钟信号,使用所述系统时钟信号以用于并行执行所述多个验证线程。
5.根据权利要求1所述的验证方法,其中,所述验证环境还包括系统软件接口模块,
所述测试线程还运行所述系统软件接口模块以与系统软件通信,以从所述系统软件接收用于所述计算设备的验证的测试用例和驱动程序。
6.根据权利要求5所述的验证方法,其中,所述测试线程通过所述系统软件接口模块,将对应于所述测试用例和驱动程序的驱动信号通过所述请求队列发送给所述主总线功能模块,以及通过所述回复队列将所述主总线功能模块获取的所述计算设备的状态反馈给所述系统软件。
7.根据权利要求1所述的验证方法,其中,所述验证环境还包括从总线功能模块和存储器模块,
所述主线程还运行所述从总线功能模块和所述存储器模块,从所述计算设备接收存储访问请求,通过所述从总线功能模块响应所述存储访问请求以访问所述存储器模块。
8.根据权利要求7所述的验证方法,其中,所述从总线功能模块提供从所述计算设备到所述存储器模块的从地址通道的采样以及从数据通道的驱动。
9.根据权利要求8所述的验证方法,其中,所述主总线功能模块和所述从总线功能模块符合高级可扩展接口规范或外围组件快速互连规范。
10.根据权利要求9所述的验证方法,其中,所述存储器模块符合高带宽内存规范或双倍速率同步动态随机存储器规范;
所述测试线程还对所述计算设备进行初始化操作以及对所述至少一个计算单元进行触发操作。
11.根据权利要求10所述的验证方法,其中,所述计算设备还包括命令处理器模块,
所述计算设备线程运行所述计算设备,包括:运行所述命令处理器模块,以与所述至少一个计算单元进行交互,
所述初始化操作包括对所述命令处理器模块的初始化操作以及对于所述至少一个计算单元的初始化。
12.根据权利要求11所述的验证方法,其中,所述计算设备还包括多个寄存器模块,
所述测试线程还对所述寄存器模块进行配置以对所述计算设备进行初始化操作以及对所述至少一个计算单元进行触发操作。
13.根据权利要求1所述的验证方法,其中,所述至少一个计算单元包括多个计算单元,
所述计算设备线程包括多个计算设备子线程,所述多个计算设备子线程分别用于运行所述多个计算单元。
14.根据权利要求1或13所述的验证方法,其中,所述计算设备是单核图像处理单元或多核图像处理单元,所述计算单元为图像处理单元计算核心。
15.根据权利要求3所述的验证方法,其中,所述请求队列包括写地址队列和写数据队列,
所述测试线程使用所述请求队列通过所述主线程向所述计算设备发送驱动信号,包括:
所述测试线程向所述写地址队列发送地址信号,响应于所述主线程检测到所述写地址队列非空,根据总线时序将地址驱动到所述计算设备;
所述测试线程向所述写数据队列发送数据信号,响应于所述主线程检测到所述写数据队列非空,根据总线时序将数据驱动到所述计算设备。
16.根据权利要求15所述的验证方法,其中,所述主总线功能模块提供对于所述地址信号的地址通道的驱动以及用于所述数据通道的驱动,以及进行对于所述地址通道的写响应通道采样。
17.根据权利要求1或15所述的验证方法,其中,所述回复队列包括写命令回复队列,
使用所述写命令回复队列通过所述主线程接收来自所述计算设备的响应信号。
18.一种验证方法,用于多个计算设备,所述多个计算设备之间耦接,每个所述计算设备包括互连模块以及至少一个计算单元,所述验证方法对于每个所述计算设备包括:
提供用于验证所述计算设备的验证环境,其中,所述验证环境包括请求队列、回复队列以及主总线功能模块;
利用所述请求队列和所述回复队列,并行执行多个验证线程,
其中,所述多个验证线程包括测试线程、主线程和计算设备线程,所述主线程运行所述主总线功能模块进行对于所述计算设备的接口驱动与采样操作,通过所述互连模块与所述至少一个计算单元通信,所述测试线程向所述计算设备发送驱动信号以及从所述计算设备接收响应信号,所述计算设备线程运行所述计算设备以进行运算。
19.根据权利要求18所述的验证方法,其中,所述验证环境还包括系统软件接口模块,
所述测试线程还运行所述系统软件接口模块以与系统软件通信,以从所述系统软件接收用于所述多个计算设备每个的验证的测试用例以及驱动程序。
20.一种用于计算设备的验证装置,所述计算设备包括互连模块以及至少一个计算单元,
所述验证装置包括验证环境单元和线程执行单元,其中,
所述验证环境单元配置为提供用于验证所述计算设备的验证环境,所述验证环境包括请求队列、回复队列以及主总线功能模块;
所述线程执行单元配置为,利用所述请求队列和所述回复队列,并行执行多个验证线程,
其中,所述多个验证线程包括测试线程、主线程和计算设备线程,所述主线程运行所述主总线功能模块进行对于所述计算设备的接口驱动与采样操作,通过所述互连模块与所述至少一个计算单元通信,所述测试线程向所述计算设备发送驱动信号以及从所述计算设备接收响应信号,所述计算设备线程运行所述计算设备以进行运算。
21.一种电子设备,包括:
处理器;以及
存储器,存储有计算机可执行指令,
其中,所述计算机可执行指令在被所述处理器执行时实现根据权利要求1-19中任一项所述的验证方法。
22.一种计算机可读存储介质,用于非暂时性地存储计算机可执行指令,
其中,所述计算机可执行指令在被处理器执行时实现根据权利要求1-19中任一项所述的验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210364406.2A CN116933698A (zh) | 2022-04-07 | 2022-04-07 | 用于计算设备的验证方法及装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210364406.2A CN116933698A (zh) | 2022-04-07 | 2022-04-07 | 用于计算设备的验证方法及装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116933698A true CN116933698A (zh) | 2023-10-24 |
Family
ID=88391336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210364406.2A Pending CN116933698A (zh) | 2022-04-07 | 2022-04-07 | 用于计算设备的验证方法及装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116933698A (zh) |
-
2022
- 2022-04-07 CN CN202210364406.2A patent/CN116933698A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111247533B (zh) | 用于神经网络加速的机器学习运行时库 | |
KR101855311B1 (ko) | 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘 | |
KR102219545B1 (ko) | 소프트웨어 지원 콘텍스트 스위치를 갖는 미드-쓰레드 선점 | |
US9378533B2 (en) | Central processing unit, GPU simulation method thereof, and computing system including the same | |
TW201351290A (zh) | 處理任務的工作分配控制 | |
CN113495865A (zh) | 异步数据移动管线 | |
CN114830135A (zh) | 算子的层次分区 | |
CN116783578A (zh) | 执行矩阵值指示 | |
US7831803B2 (en) | Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine | |
CN115146582A (zh) | 仿真方法及仿真装置、电子设备和计算机可读存储介质 | |
CN117217067A (zh) | 仿真装置、仿真系统及其仿真方法、存储介质 | |
WO2024108800A1 (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
US11366690B2 (en) | Scheduling commands in a virtual computing environment | |
CN118119924A (zh) | 用于利用可重用线程执行操作的应用程序编程接口 | |
RU2643622C1 (ru) | Вычислительный модуль | |
CN118043773A (zh) | 不受操作数在存储器中的存储位置限制对矩阵操作数进行运算 | |
CN116933698A (zh) | 用于计算设备的验证方法及装置、电子设备及存储介质 | |
CN116401039A (zh) | 异步的存储器解除分配 | |
US11500802B1 (en) | Data replication for accelerator | |
CN116802613A (zh) | 同步图形执行 | |
CN116724292A (zh) | 线程组的并行处理 | |
US10261817B2 (en) | System on a chip and method for a controller supported virtual machine monitor | |
JP2021096829A (ja) | 分散環境における深層学習トレーニングの最適化のためのランタイムにおけるサービスクラス属性の初期化及び管理 | |
Bhimani et al. | Design space exploration of GPU Accelerated cluster systems for optimal data transfer using PCIe bus | |
US7523264B1 (en) | Apparatus, system, and method for dependent computations of streaming multiprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Applicant after: Shanghai Bi Ren Technology Co.,Ltd. Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Applicant before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |