CN113377704B - 人工智能芯片以及数据操作方法 - Google Patents

人工智能芯片以及数据操作方法 Download PDF

Info

Publication number
CN113377704B
CN113377704B CN202110653770.6A CN202110653770A CN113377704B CN 113377704 B CN113377704 B CN 113377704B CN 202110653770 A CN202110653770 A CN 202110653770A CN 113377704 B CN113377704 B CN 113377704B
Authority
CN
China
Prior art keywords
data
processor
extended address
address space
chip
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.)
Active
Application number
CN202110653770.6A
Other languages
English (en)
Other versions
CN113377704A (zh
Inventor
不公告发明人
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.)
Shanghai Bi Ren Technology Co ltd
Original Assignee
Shanghai Biren Intelligent Technology Co Ltd
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 Shanghai Biren Intelligent Technology Co Ltd filed Critical Shanghai Biren Intelligent Technology Co Ltd
Priority to CN202110653770.6A priority Critical patent/CN113377704B/zh
Priority to US17/468,682 priority patent/US11809221B2/en
Publication of CN113377704A publication Critical patent/CN113377704A/zh
Priority to EP22151539.8A priority patent/EP4102372A1/en
Application granted granted Critical
Publication of CN113377704B publication Critical patent/CN113377704B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供一种人工智能芯片以及数据操作方法。人工智能芯片接收携带有第一数据及地址信息的命令。人工智能芯片包括芯片内存、运算处理器、基址寄存器以及扩展地址处理器。基址寄存器被分配以用于访问芯片内存的扩展地址空间。扩展地址处理器接收命令。扩展地址处理器依据地址信息来判断对第一数据的操作方式。当地址信息指向扩展地址空间的第一区段时,扩展地址处理器对第一数据进行第一操作。当地址信息指向扩展地址空间的第一区段以外的其他区段时,扩展地址处理器将操作方式通知给运算处理器,运算处理器对第一数据进行第二操作。

Description

人工智能芯片以及数据操作方法
技术领域
本发明涉及一种多芯片集群并行计算领域,尤其涉及一种人工智能芯片以及数据操作方法。
背景技术
在当前的多芯片集群并行计算领域,工业界普遍使用集合通信(CollectiveCommunication)方案来实现多个节点间共享数据和传输数据的操作。在当前的集合通信中,所述“节点1的芯片A发送数据给节点2的芯片B”的过程可以分为四个步骤。步骤1:节点1上的芯片A把数据发送到节点1的系统内存(system memory)。步骤2:节点1上的芯片A向节点1上的网卡发送网络请求,节点1上的网卡从节点1的系统内存读取所述“步骤1中芯片A复制到系统内存的数据”,并且将此数据发送到节点2的网卡。步骤3:节点2的网卡收到了节点1的网卡的数据,并且将此数据存储到节点2的系统内存中。步骤4:节点2的芯片B从节点2的系统内存中读取所述“来自节点1的芯片A的数据”。如何简化上述的步骤并进一步优化集合通信的性能,是本领域的诸多技术课题之一。
发明内容
本发明提供一种人工智能芯片及其操作方法,以有效率地进行集合通信(Collective Communication)。
在本发明的一实施例中,人工智能芯片适于接收携带有第一数据及地址信息的命令。人工智能芯片包括芯片内存、运算处理器、基址寄存器以及扩展地址处理器。运算处理器耦接于芯片内存。基址寄存器被分配以用于访问芯片内存的扩展地址空间。扩展地址空间大于芯片内存的物理内存地址空间。扩展地址处理器耦接于运算处理器以及基址寄存器。扩展地址处理器接收命令。扩展地址处理器依据地址信息指向扩展地址空间所包括的多个区段中的一个来判断对第一数据的操作方式。当地址信息指向扩展地址空间的第一区段时,扩展地址处理器对第一数据进行第一操作。当地址信息指向扩展地址空间的第一区段以外的其他区段时,扩展地址处理器将所述操作方式通知给所述运算处理器,运算处理器对第一数据进行第二操作。第一区段对应于物理内存地址空间。
在本发明的一实施例中,数据操作方法用于人工智能芯片。人工智能芯片包括芯片内存、基址寄存器、扩展地址处理器以及运算处理器。数据操作方法包括:将用于访问芯片内存的扩展地址空间分配于基址寄存器,其中扩展地址空间大于芯片内存的物理内存地址空间;由扩展地址处理器接收携带有第一数据及地址信息的命令;由扩展地址处理器依据地址信息指向扩展地址空间所包括的多个区段中的一个来判断对第一数据的操作方式;当地址信息指向扩展地址空间的第一区段时,由扩展地址处理器对第一数据进行第一操作;以及当地址信息指向扩展地址空间的第一区段以外的其他区段时,由扩展地址处理器将操作方式通知给运算处理器,并由运算处理器对第一数据进行第二操作。第一区段对应于物理内存地址空间。
基于上述,本发明诸实施例中,人工智能芯片接收携带有第一数据及地址信息的命令并依据扩展地址指向扩展地址空间的多个区段中的其中一者来判断第一数据的集合通信操作。因此,人工智能芯片可以有效率地进行集合通信操作。
附图说明
图1是依照本发明一实施例所绘示的集合通信的系统示意图;
图2是依照本发明的一实施例的另一种集合通信的系统示意图;
图3是依照本发明一实施例所绘示的人工智能芯片的电路方块示意图;
图4是依照本发明一实施例所绘示的数据操作方法的流程示意图;
图5是依照本发明另一实施例所绘示的人工智能芯片的电路方块示意图。
附图标记说明
10、20:节点;
11、21、100_1、100_2、100_3、200:人工智能芯片;
12、22、140、240:芯片内存;
13、23:芯片组;
14、24:中央处理器;
15、25:系统内存;
16、26、30:网卡;
110、210:基址寄存器;
120、220:扩展地址处理器;
130、230:运算处理器;
140、240:芯片内存;
250:地址异常处理模块;
40:总线;
S1、S2、S3、S4、S5、S6:步骤;
S110、S120、S130、S140、S150:步骤。
具体实施方式
现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同组件符号在图式和描述中用来表示相同或相似部分。
在本案说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以透过其他装置或某种连接手段而间接地连接至该第二装置。本案说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名组件(element)的名称,或区别不同实施例或范围,而并非用来限制组件数量的上限或下限,亦非用来限制组件的次序。另外,凡可能之处,在图式及实施方式中使用相同标号的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的组件/构件/步骤可以相互参照相关说明。
图1是依照本发明的一实施例的一种集合通信(Collective Communication)的系统示意图。在本实施例中,图1所示的集合通信系统包括节点10、20。节点10、20可以是计算机或是其他计算平台。在当前的集合通信方案中,节点10的人工智能芯片11将数据发送到节点20的人工智能芯片21的过程可以分为四个步骤。步骤S1:节点10上的人工智能芯片11将存储到芯片内存12的数据通过芯片组(chip set)13与中央处理器(Central ProcessingUnit,CPU)14发送到节点10的系统内存(system memory)15。在本实施例中,人工智能芯片11可以包括图形处理单元(graphics processing unit,GPU)与(或)具有其他数据运算功能的芯片。芯片内存12可以包括GPU内存与(或)其他芯片内存。步骤S2:节点10上的人工智能芯片11向节点10上的网卡(network interface controller,NIC)16发送网络请求,节点10上的网卡16从节点10的系统内存15读取在上述步骤S1中被复制到系统内存15的数据,并且网卡16将此数据发送到节点20的网卡26。步骤S3:节点20的网卡26收到了节点10的网卡16的数据,并且将此数据存储到节点20的系统内存25中。步骤S4:节点20的人工智能芯片21从节点20的系统内存25中读取来自节点10的人工智能芯片11的数据。这四个步骤实质上经历了1次数据传输和2次数据拷贝。
图2是依照本发明的一实施例的另一种集合通信的系统示意图。为了缩减集合通信的传输时延,远程直接内存访问(Remote Direct Memory Access,RDMA)技术可以被应用至图2所示集合通信系统。在需要数据传输时,网卡会直接访问人工智能芯片(例如GPU),以缩短不同节点的芯片之间数据通信的时延,进而提高性能。具体来说,基于图2所示的集合通信系统架构,RDMA技术可分为两个步骤。步骤S5:节点10上的人工智能芯片(例如GPU)11向网卡16发送数据传输请求。节点10的网卡16根据数据传输请求从芯片内存12读取人工智能芯片11所需要传输的数据并发送到节点20的网卡26。步骤S6:节点20的网卡26收到了节点10的网卡16的数据,并直接写入到节点20的人工智能芯片21的芯片内存22中。因此,RDMA技术可以省略了2次数据拷贝,并且将数据传输缩减为2步骤。
以上仅仅说明在2个人工智能芯片(例如GPU)11与21之间进行数据传输。在实际应用中,尤其例如是在人工智能运算中的权重(WEIGHT)值的计算,节点20的人工智能芯片21在接收到网卡26的数据之后,需要将接收到的数据跟本地数据进行集合通信操作,然后再被利用。因此,基于RDMA技术的跨节点集合通信需要经历如下三个步骤。步骤S5:节点10的人工智能芯片(例如GPU)11向网卡16发送数据传输请求(如,读请求),以及节点10的网卡16根据数据传输请求从芯片内存12读取人工智能芯片11所需要传输的数据并发送到节点20的网卡26。步骤S6:节点20的网卡26收到了节点10的网卡16的数据,并直接写入到节点20的人工智能芯片(例如GPU)21的芯片内存22中。步骤S7(附图未示出):节点20的人工智能芯片21对来自于节点10的数据以及存储于芯片内存22的数据进行集合通信处理(根据集合通信的类型,人工智能芯片21做不同的对应处理),并将结果数据保存在人工智能芯片21的芯片内存22中。
其中,步骤S6做完之后需要进行同步,之后再做步骤S7。步骤S7需要再一次对来自于芯片内存22读取节点10的数据再和本地数据进行集合通信处理。步骤S6与步骤S7存在一次额外操作,即节点10的数据写入芯片内存22之后再从芯片内存22读出,以便和本地数据进行集合通信处理。本次额外操作带来以下的开销:1、增加了整个过程的时间(其中步骤S6做完之后需要同步,很大程度增加了时延);2、步骤S6对节点20的芯片内存22有一次写操作(节点10的数据写入芯片内存22),而步骤S7需要再次对芯片内存22进行一次读操作(从芯片内存22读取节点10的数据)和一次写操作(集合通信处理的结果数据写入芯片内存22)。因此,芯片内存22读写的负担会增加,更多的内存读写操作带宽会被占用。由此可知,考虑到来自于芯片内存22读取节点10的数据再和本地数据所进行的集合通信处理,跨节点的RDMA技术还需要被改良。
本实施例提供一种基于地址扩展的数据操作技术。这样的数据操作技术能够将前述实施例(亦即,将RDMA技术应用至跨节点集合通信操作)中所需要经历的三个步骤缩短至两个步骤,即下述步骤A与步骤B。步骤A:节点10的人工智能芯片11向网卡16发送数据传输请求(如,读请求)。节点10的网卡16根据数据传输请求从芯片内存12读取人工智能芯片11所需要传输的数据并将传输的数据发送到节点20的网卡26。步骤B:节点20的人工智能芯片21通过网卡26收到来自于节点10的人工智能芯片11的第一数据,并对来自于节点10的人工智能芯片11的数据进行写入到节点20的芯片内存22,人工智能芯片21还能够将来自于节点10的第一数据以及已经被存储到芯片内存22的第二数据进行处理,再将处理后所产生的经运算数据写入到芯片内存22。
本实施例将上述跨节点的RDMA技术中的步骤S6和步骤S7合并为单一步骤B。为了实现步骤B,我们需要解决一个通用性的问题。这需要考虑到从节点10、20可能发生的多种不同操作。本实施例将上述的多种不同操作分类为第一操作以及第二操作。以节点20的人工智能芯片21为例,人工智能芯片21的第一操作是接收来自于人工智能芯片11的数据,并将来自于人工智能芯片11的数据直接写入到芯片内存22,而不需要对存储于芯片内存22的数据进行任何操作。换句话说,第一操作可例如是对来自于外部节点的数据进行直接写入的操作。
同样以节点20的人工智能芯片21为例,人工智能芯片21的第二操作是接收来自于人工智能芯片11的第一数据,并对来自于人工智能芯片11的第一数据以及存储于芯片内存22的第二数据进行处理。基于第一数据以及对第二数据的不同数据类型,如float(浮点数)、half(半精确度浮点数)数据类型等。上述的处理项目可以是一种或多种。
本实施例能够在步骤B中区分并同时动态支持完成以上几种操作。因此,本实施例能够支持上述跨节点的RDMA技术中的步骤S6和步骤S7,并且支持不同数据类型的处理。此外,本实施例中也能够支持在同一节点内的多个人工智能芯片之间进行以上各种操作。
具体来说明,请参考图3,图3是依照本发明一实施例所绘示的人工智能芯片的电路方块示意图。图3的架构相当于图1的节点1以及节点2的其中一者的至少一部分。在本实施例中,单一节点包括人工智能芯片100_1、100_2、100_3。在图3所示实施例中,人工智能芯片100_1、100_2、100_3分别接收来自于网卡30的外部数据。人工智能芯片100_1、100_2、100_3也可以进行通信。此外,人工智能芯片100_1、100_2、100_3也可以将数据提供到网卡30。举例来说,人工智能芯片100_1、100_2、100_3可以通过总线40连接至网卡30。依据实际设计,总线40可以是高速周边组件互连(Peripheral Component Interconnect Express,PCIe)总线或是其他总线。人工智能芯片100_1、100_2、100_3分别可以通过总线40接收来自于网卡30的数据。人工智能芯片100_1、100_2、100_3也可以通过总线40来进行通信。此外,人工智能芯片100_1、100_2、100_3也可以通过总线40将数据提供到网卡30。网卡30相当于图1所示的网卡26(或网卡16)。人工智能芯片100_1、100_2、100_3分别相当于图1所示的人工智能芯片21(或人工智能芯片11)。
本发明的单一节点中人工智能芯片的数量可以是一个或多个,并不以本实施例为限。
在本实施例中,以人工智能芯片100_1为例,人工智能芯片100_1适于接收携带有第一数据及地址信息的命令。人工智能芯片100_1包括基址寄存器(Base AddressRegister,BAR)110、扩展地址处理器120、运算处理器130以及芯片内存140。运算处理器130耦接于芯片内存140。扩展地址处理器120耦接于运算处理器130以及基址寄存器110。在本实施例中,扩展地址处理器120以及运算处理器130分别可以用硬件方式(物理电路)来实现。在其他实施例中,集合通信引擎220可以用固件(或软件)方式来实现。
请同时参考图3以及图4,图4是依照本发明一实施例所绘示的数据操作方法的流程示意图。在步骤S110中,基址寄存器110会被分配以用于访问芯片内存140的扩展地址空间。在本实施例中,扩展地址空间大于芯片内存140的物理内存地址空间。
在本实施例中,假定人工智能芯片100_1的芯片内存140的物理内存地址空间、人工智能芯片100_2的芯片内存(未示出)的物理内存地址空间、以及人工智能芯片100_3的芯片内存(未示出)的物理内存地址空间都是SZ。因此,芯片内存的物理内存地址空间定义如表1所示。
表1:芯片内存的物理内存地址空间定义
人工智能芯片 芯片内存的起始地址 芯片内存的结束地址
100_1 GPU1_BA GPU1_BA+SZ-1
100_2 GPU2_BA GPU2_BA+SZ-1
100_3 GPU3_BA GPU3_BA+SZ-1
如表1,芯片内存140的起始地址为(GPU1_BA)。芯片内存140的结束地址为(GPU1_BA+SZ–1)。人工智能芯片100_2的芯片内存的起始地址为(GPU2_BA)。人工智能芯片100_2的芯片内存的结束地址为(GPU2_BA+SZ–1)。人工智能芯片100_3的芯片内存的起始地址为(GPU3_BA)。人工智能芯片100_3的芯片内存的结束地址为(GPU3_BA+SZ–1)。
人工智能芯片100_1、100_2、100_3分别占用了大小为SZ的系统地址空间。除此之外,系统地址空间保证了地址空间的唯一性。也就是,任何2个系统地址空间没有任何重叠。因此,当网卡或者人工智能芯片100_1、100_2、100_3以外的处理单元使用一个给定地址进行访问时,对应于给定地址的命令能够正确地送给对应于给定地址的芯片内存。
一般来说,当前X86的中央处理单元使用了48位、52位的地址总线。以48位的地址总线为例,中央处理单元有256TB的地址。现有的系统中所有硬件真正使用到的地址空间则远远低于256TB。大量地址并没有被使用到。
当对N种数据类型的操作被需要时,基址寄存器110的内存地址空间SZ扩展为大于或等于(N+1)x SZ的扩展地址空间,如表2所示。N为大于等于1的整数。因此,在步骤S110中,基址寄存器110被设定以将基址寄存器110的第一地址空间定义扩展为第二地址空间定义。第一地址空间定义对应芯片内存的物理内存地址空间。第二地址空间定义对应扩展地址空间。扩展地址空间为物理内存地址空间的整数倍,如(N+1)。如此一来,原本256TB中的未用地址空间能够被运用。除此之外,被扩展的系统地址空间也保证了地址空间的唯一性。也就是,任何2个被扩展的系统地址空间没有任何重叠。
表2:芯片内存的扩展地址空间定义
Figure BDA0003112946140000071
Figure BDA0003112946140000081
其中,N关联于需要支持的集合通信操作的数据类型。如果要支持两种数据类型的数据归约(REDUCE)操作,N大于或等于2。两种数据类型例如是float(第一数据类型)以及half(第二数据类型)。举例来说,以N=3来支持的float以及half的REDUCE操作为例,扩展地址空间的规划如表3所示:
表3:扩展地址空间定义
区段 扩展地址空间 对应的操作
区段1 GPU_BA~GPU_BA+SZ-1 现有的正常读写操作
区段2 GPU_BA+SZ~GPU_BA+2x SZ-1 float的REDUCE操作
区段3 GPU_BA+2x SZ~GPU_BA+3x SZ-1 half的REDUCE操作
区段4 GPU_BA+3x SZ~GPU_BA+4x SZ-1 其他操作
在表3中,扩展地址空间包括4个区段。所述4个区段分别为区段1、区段2、区段3以及区段4。区段1~区段4可以用来标识不同的操作。举例来说,区段1的扩展地址空间为(GPU_BA~GPU_BA+SZ–1)。区段1应用于现有的正常读写操作。区段2的扩展地址空间为(GPU_BA+SZ~GPU_BA+2x SZ–1)。区段2应用于第一数据类型(如,float数据类型)的REDUCE操作。区段3的扩展地址空间为(GPU_BA+2x SZ~GPU_BA+3x SZ–1)。区段3应用于第二数据类型(如,half数据类型)的REDUCE操作。此外,区段4的扩展地址空间为(GPU_BA+2x SZ~GPU_BA+3x SZ–1)。区段4是被预留为于其他的操作,例如是其他数据类型(如,INT32数据类型)的REDUCE操作或者是对未定义数据类型的非法(illegal)操作。区段1、区段2、区段3以及区段4的任一区段不与其余区段重叠。
因此,通过步骤S110,地址空间扩展的程度由需要操作的种类个数来决定,可以进行扩展并保持向后兼容。
在步骤S120中,扩展地址处理器120接收携带有第一数据及地址信息的命令。在步骤S130中,扩展地址处理器120会依据地址信息指向扩展地址空间的多个区段(如表3中的区段1~区段4)中的一个来判断对第一数据的操作方式。
如以表3所支持的数据类型REDUCE操作为例,扩展地址处理器120对地址信息解析以后的具体行为如下表4所示:
表4:扩展地址处理器对地址信息解析以后的具体行为
Figure BDA0003112946140000091
当地址信息指向扩展地址空间的第一区段(如,区段1)时,扩展地址处理器120会在步骤S140中会对第一数据进行第一操作。第一区段对应于所述物理内存地址空间。在本实施例中,第一操作例如包括未经运算处理器130的进一步处理而直接将第一数据存储到芯片内存140,也就是直接写入操作。当地址信息指向扩展地址空间的第一区段以外的其他区段(即,区段2~4的其中之一)时,运算处理器130会在步骤S150中对第一数据进行第二操作。进一步来说,在步骤S150中,扩展地址处理器120在会将操作方式通知给运算处理器130。因此,运算处理器130会基于来自于扩展地址处理器120的通知获知操作方式,并据以对第一数据进行第二操作。在本实施例中,第二操作例如包括对第一数据进行运算以产生经运算数据,以及将经运算数据存储到芯片内存140。
以表4为例,第二操作可以是REDUCE操作。进一步以REDUCE操作为例,运算处理器130在步骤S150中会依据扩展地址从芯片内存提取出第二数据,对第一数据以及第二数据进行运算以产生经运算数据。接下来,运算处理器130将经运算数据一次性地存储到芯片内存140。
在一些实施例中,第二操作的操作类型并不仅限于REDUCE操作。在这些实施例中,第二操作的操作类型可至少包括比较(COMPARE)操作、REDUCE操作以及非集合通信操作的至少其中之一。在这些实施例中,运算处理器130可例如将第一数据以及第二数据进行COMPARE操作以获得例如大于、小于、相等的比较结果,并将比较结果记录到本地的芯片内存140。举例来说,扩展地址空间的所述多个区段可对应于不同的操作类型。因此,扩展地址处理器120可通过所述地址信息指向所述扩展地址空间的所述多个区段中的一个来确定对第一数据所执行的操作类型。
为了便于说明,本实施例以的扩展地址空间包括4个区段来示例。本发明的区段的数量可以是多个,并不以本实施例为限。
另举例来说,在一实施例中,区段的数量可以是(M+1)个。这实施例可支持M种不同的操作类型。也因此,当所述地址信息指向扩展地址空间的第(M+1)区段时,扩展地址处理器120会确定对第一数据所执行的操作类型为第M操作类型。其中,M为大于等于1的整数。在此顺带一提的是,人工智能芯片100_1接收携带有第一数据及地址信息的命令并依据扩展地址指向扩展地址空间的多个区段中的其中一者来判断第一数据的集合通信操作。因此,人工智能芯片100_1可以有效率地进行集合通信操作。进一步来说,本实施例所提供的基于地址扩展的集合通信操作能够大幅提高大规模集群场景下跨节点的操作性能,包括了不同数据类型的REDUCE操作的支持。对于人工智能训练等应用场合,REDUCE操作大量被执行,此外和跨节点间的全REDUCE操作会被执行。基于本实施例的上述操作,REDUCE操作和跨节点间的全REDUCE操作性能能够有效地被提升,从而进一步提升整体的系统运算效能。
扩展地址处理器120通过扩展地址指向扩展地址空间的多个区段中的一个来进一步确定出第一数据所对应的数据类型。当扩展地址指向扩展地址空间的第二区段(区段2)时,第一数据会被确定为第一数据类型(如,float数据类型)。因此,float数据类型的第一数据以及第二数据)会被发往运算处理器130。运算处理器130会对float数据类型的第一数据以及第二数据进行REDUCE操作,以产生经运算数据。接下来,运算处理器130将经运算数据一次性地写入到本地的芯片内存140。
当扩展地址指向扩展地址空间的第三区段(区段3)时,第一数据则会被确定为第二数据类型(如,half数据类型)。因此,half数据类型的第一数据以及第二数据)会被发往运算处理器130。运算处理器130会对half数据类型的第一数据以及第二数据进行REDUCE操作,以产生经运算数据。接下来,运算处理器130将经运算数据一次性地写入到本地的芯片内存140。在一实施例中,区段的数量可以是(N+1)个。因此,这实施例可支持N种不同的数据类型。也因此,当所述地址信息指向扩展地址空间的第(N+1)区段时,扩展地址处理器120会确定第一数据为第N数据类型。其中,N为大于等于1的整数。
本发明的扩展地址空间的第一区段以外的其他区段可以被用来定义为不同的数据类型,或者被定义为不同的操作类型,或者同时定义不同的数据类型以及不同的操作类型。举例来说,第二区段判断为第一数据类型且执行第一操作,第三区段判断为第二数据类型且执行第二操作等多种组合。
另举例来说,对于N种数据类型和M种操作类型,并加上第一区段的操作,则本发明可支持共有(1+N×M)种组合的可能情况。
除此之外,当扩展地址指向扩展地址空间的第四区段(区段4)时,第一数据则会被确定为未定义数据类型。未定义数据类型无法被识别数据类型,或者是不被接受的数据类型。因此,未定义数据类型的第一数据会被发往预留区段。请同时参考图5以及表4,图5是依照本发明另一实施例所绘示的人工智能芯片的电路方块示意图。在本实施例中,人工智能芯片200包括基址寄存器210、扩展地址处理器220、运算处理器230、芯片内存240以及地址异常处理模块250。地址异常处理模块250耦接于扩展地址处理器220。在本实施例中,当扩展地址指向扩展地址空间的第四区段(区段4)时,第一数据则会被确定为未定义数据类型,并且被发往地址异常处理模块250。地址异常处理模块250会对第一数据进行非法操作。在本实施例中,基址寄存器210、扩展地址处理器220、运算处理器230与芯片内存240之间的协同操作可以在图3以及图4的实施例中获的足够的教示。因此恕不在此重述。
综上所述,人工智能芯片接收携带有第一数据及地址信息的命令并依据扩展地址指向扩展地址空间的多个区段中的其中一者来判断第一数据的集合通信操作。如此一来,人工智能芯片可以有效率地进行集合通信操作。对于人工智能训练等应用场合,REDUCE操作大量被执行,此外和跨节点间的全REDUCE操作会被执行。基于本实施例的上述操作,REDUCE操作和跨节点间的全REDUCE操作性能能够有效地被提升,从而提升系统运算效能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (12)

1.一种人工智能芯片,适于接收携带有第一数据及地址信息的命令,其特征在于,所述人工智能芯片包括:
芯片内存;
运算处理器,耦接于所述芯片内存;
基址寄存器,被分配以用于访问所述芯片内存的扩展地址空间,其中所述扩展地址空间大于所述芯片内存的物理内存地址空间;以及
扩展地址处理器,耦接于所述运算处理器以及所述基址寄存器,经配置以接收所述命令,其中所述扩展地址处理器依据所述地址信息指向所述扩展地址空间所包括的多个区段中的一个来判断对所述第一数据的操作方式;
其中当所述地址信息指向所述扩展地址空间的第一区段时,所述扩展地址处理器对所述第一数据进行第一操作,以及
其中当所述地址信息指向所述扩展地址空间的第一区段以外的其他区段时,所述扩展地址处理器将所述操作方式通知给所述运算处理器,所述运算处理器对所述第一数据进行第二操作;
其中所述第一区段对应于所述物理内存地址空间;
其中,所述第一操作包括,未经所述运算处理器的进一步处理而直接将所述第一数据存储到所述芯片内存;以及
所述第二操作包括,对所述第一数据进行运算以产生经运算数据,以及将所述经运算数据存储到所述芯片内存。
2.根据权利要求1所述的人工智能芯片,其特征在于,所述扩展地址处理器通过所述地址信息指向所述扩展地址空间的所述多个区段中的一个来确定所述第一数据所对应的数据类型,
当所述地址信息指向所述扩展地址空间的第(N+1)区段时,所述第一数据被确定为第N数据类型;
其中,N为大于等于1的整数。
3.根据权利要求1所述的人工智能芯片,其特征在于,所述扩展地址空间为所述内存地址空间的整数倍。
4.根据权利要求1所述的人工智能芯片,其特征在于,所述人工智能芯片经由PCIe接口与其他人工智能芯片进行通信。
5.根据权利要求1所述的人工智能芯片,其特征在于,所述扩展地址处理器通过所述地址信息指向所述扩展地址空间的所述多个区段中的一个来确定对所述第一数据所执行的操作类型;
当所述地址信息指向所述扩展地址空间的第(M+1)区段时,对所述第一数据所执行的操作类型被确定为第M操作类型;
其中,M为大于等于1的整数。
6.根据权利要求1所述的人工智能芯片,其特征在于,所述运算处理器还经配置以依据所述地址信息从所述芯片内存提取第二数据,所述运算处理器对所述第一数据以及所述第二数据进行运算以产生经运算数据,以及将所述经运算数据存储到所述芯片内存。
7.一种用于人工智能芯片的数据操作方法,其特征在于,所述人工智能芯片包括芯片内存、基址寄存器、扩展地址处理器以及运算处理器,其中所述数据操作方法包括:
将用于访问所述芯片内存的扩展地址空间分配于所述基址寄存器,其中所述扩展地址空间大于所述芯片内存的物理内存地址空间;
由所述扩展地址处理器接收携带有第一数据及地址信息的命令;
由所述扩展地址处理器依据所述地址信息指向所述扩展地址空间所包括的多个区段中的一个来判断对所述第一数据的操作方式;
其中当所述地址信息指向所述扩展地址空间的第一区段时,由所述扩展地址处理器对所述第一数据进行第一操作;以及
其中当所述地址信息指向所述扩展地址空间的第一区段以外的其他区段时,由所述扩展地址处理器将所述操作方式通知给所述运算处理器,并由所述运算处理器对所述第一数据进行第二操作;
其中所述第一区段对应于所述物理内存地址空间;
其中,所述第一操作包括,未经所述运算处理器的进一步处理而直接将所述第一数据存储到所述芯片内存;以及
所述第二操作包括,对所述第一数据进行运算以产生经运算数据,以及将所述经运算数据存储到所述芯片内存。
8.根据权利要求7所述的数据操作方法,其特征在于,所述数据操作方法还包括:
由所述扩展地址处理器通过所述地址信息指向所述扩展地址空间的所述多个区段中的一个来确定所述第一数据所对应的数据类型;
当所述地址信息指向所述扩展地址空间的第(N+1)区段时,确定所述第一数据为第N数据类型;
其中,N为大于等于1的整数。
9.根据权利要求7所述的数据操作方法,其特征在于,所述扩展地址空间为所述物理内存地址空间的整数倍。
10.根据权利要求7所述的数据操作方法,其特征在于,所述数据操作方法还包括:
使所述人工智能芯片经由PCIe接口与其他人工智能芯片进行通信。
11.根据权利要求7所述的数据操作方法,其特征在于,所述扩展地址处理器通过所述地址信息指向所述扩展地址空间的所述多个区段中的一个来确定对所述第一数据所执行的操作类型;
当所述地址信息指向所述扩展地址空间的第(M+1)区段时,将对所述第一数据所执行的操作类型确定为第M操作类型;
其中,M为大于等于1的整数。
12.根据权利要求7所述的数据操作方法,其特征在于,所述数据操作方法还包括:
由所述运算处理器依据所述地址信息从所述芯片内存提取第二数据;
对所述第一数据以及所述第二数据进行运算以产生经运算数据;以及
将所述经运算数据存储到所述芯片内存。
CN202110653770.6A 2021-06-11 2021-06-11 人工智能芯片以及数据操作方法 Active CN113377704B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110653770.6A CN113377704B (zh) 2021-06-11 2021-06-11 人工智能芯片以及数据操作方法
US17/468,682 US11809221B2 (en) 2021-06-11 2021-09-08 Artificial intelligence chip and data operation method
EP22151539.8A EP4102372A1 (en) 2021-06-11 2022-01-14 Artificial intelligence chip and data operation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110653770.6A CN113377704B (zh) 2021-06-11 2021-06-11 人工智能芯片以及数据操作方法

Publications (2)

Publication Number Publication Date
CN113377704A CN113377704A (zh) 2021-09-10
CN113377704B true CN113377704B (zh) 2022-04-12

Family

ID=77574008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110653770.6A Active CN113377704B (zh) 2021-06-11 2021-06-11 人工智能芯片以及数据操作方法

Country Status (3)

Country Link
US (1) US11809221B2 (zh)
EP (1) EP4102372A1 (zh)
CN (1) CN113377704B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959659A (zh) * 2006-09-21 2007-05-09 重庆禾兴江源科技发展有限公司 实现存储设备专用命令的方法及存储设备
CN110059020A (zh) * 2015-04-23 2019-07-26 华为技术有限公司 扩展内存的访问方法、设备以及系统
CN110865945A (zh) * 2018-08-28 2020-03-06 上海天王星智能科技有限公司 存储设备的扩展地址空间

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6467680A (en) * 1987-09-09 1989-03-14 Hitachi Ltd Vector processor
US6519690B1 (en) 1999-08-23 2003-02-11 Advanced Micro Devices, Inc. Flexible address programming with wrap blocking
US7080210B2 (en) * 2002-02-12 2006-07-18 Ip-First, Llc Microprocessor apparatus and method for exclusive prefetch of a cache line from memory
US7492723B2 (en) 2005-07-07 2009-02-17 International Business Machines Corporation Mechanism to virtualize all address spaces in shared I/O fabrics
US7657663B2 (en) 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
US8161209B2 (en) 2008-03-31 2012-04-17 Advanced Micro Devices, Inc. Peer-to-peer special purpose processor architecture and method
CN103116470B (zh) * 2011-11-16 2016-04-13 群联电子股份有限公司 存储器储存装置、存储器控制器及数据串传送与识别方法
CN103929415B (zh) * 2014-03-21 2018-03-06 华为技术有限公司 Rdma下数据读写的方法、装置和网络系统
TWI502348B (zh) * 2014-05-02 2015-10-01 Via Tech Inc 延伸唯讀記憶體管理系統、方法及其管理主機
CN111831591B (zh) * 2019-04-19 2022-06-07 澜起科技股份有限公司 用于对存储模块进行访问控制的装置及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959659A (zh) * 2006-09-21 2007-05-09 重庆禾兴江源科技发展有限公司 实现存储设备专用命令的方法及存储设备
CN110059020A (zh) * 2015-04-23 2019-07-26 华为技术有限公司 扩展内存的访问方法、设备以及系统
CN110865945A (zh) * 2018-08-28 2020-03-06 上海天王星智能科技有限公司 存储设备的扩展地址空间

Also Published As

Publication number Publication date
US20220398102A1 (en) 2022-12-15
CN113377704A (zh) 2021-09-10
EP4102372A1 (en) 2022-12-14
US11809221B2 (en) 2023-11-07

Similar Documents

Publication Publication Date Title
CN112463714B (zh) 远程直接内存访问方法、异构计算系统及电子设备
CN114860329B (zh) 动态一致性偏置配置引擎及方法
US9213662B2 (en) I/O bus system
EP3657337B1 (en) Method, apparatus, device and storage medium for accessing static random access memory
US9697111B2 (en) Method of managing dynamic memory reallocation and device performing the method
CN114691037A (zh) 卸载卡命名空间管理、输入输出请求处理系统和方法
CN115729849A (zh) 内存管理方法及计算设备
CN215769533U (zh) 一种基于cxl加速计算的板卡
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
CN117056249B (zh) 一种mdio到ahb的转换方法、系统、设备及介质
US20120303848A1 (en) System and method for allocating transaction id in a system with a plurality of processing modules
CN113377704B (zh) 人工智能芯片以及数据操作方法
US11275683B2 (en) Method, apparatus, device and computer-readable storage medium for storage management
CN117135055A (zh) 带宽资源的控制方法及装置、存储介质及电子装置
CN101599049B (zh) 控制dma访问不连续物理地址的方法及dma控制器
CN115994115A (zh) 芯片控制方法、芯片组及电子设备
US5666556A (en) Method and apparatus for redirecting register access requests wherein the register set is separate from a central processing unit
CN116932451A (zh) 一种数据处理方法、主机及相关设备
CN109144578B (zh) 一种基于龙芯计算机的显卡资源配置方法及装置
KR20040073167A (ko) 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
CN113297111B (zh) 人工智能芯片及其操作方法
US20030088750A1 (en) Control chip with mutliple-layer defer queue
US20050144331A1 (en) On-chip serialized peripheral bus system and operating method thereof
CN113419989B (zh) 人工智能芯片及其操作方法
US12073490B2 (en) Processing system that increases the capacity of a very fast memory

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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Country or region after: China

Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address