CN110825435B - 用于处理数据的方法和装置 - Google Patents

用于处理数据的方法和装置 Download PDF

Info

Publication number
CN110825435B
CN110825435B CN201810910200.9A CN201810910200A CN110825435B CN 110825435 B CN110825435 B CN 110825435B CN 201810910200 A CN201810910200 A CN 201810910200A CN 110825435 B CN110825435 B CN 110825435B
Authority
CN
China
Prior art keywords
data
address
memory
operand
executed
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
CN201810910200.9A
Other languages
English (en)
Other versions
CN110825435A (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.)
Kunlun Core Beijing Technology Co ltd
Original Assignee
Kunlun Core Beijing 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 Kunlun Core Beijing Technology Co ltd filed Critical Kunlun Core Beijing Technology Co ltd
Priority to CN201810910200.9A priority Critical patent/CN110825435B/zh
Publication of CN110825435A publication Critical patent/CN110825435A/zh
Application granted granted Critical
Publication of CN110825435B publication Critical patent/CN110825435B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30003Arrangements for executing specific machine instructions

Abstract

本申请实施例公开了用于处理数据的方法和装置。该方法的一具体实施方式包括:获取待执行指令,待执行指令包括数据标识;对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址;根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址;根据第二地址在存储器中读/写操作数。该实施方式提高了存储器的存储利用率。

Description

用于处理数据的方法和装置
技术领域
本申请实施例涉及计算机技术领域,尤其涉及用于处理数据的方法和装置。
背景技术
近年来,随着以深度学习为代表的模型算法的兴起和发展,神经网络模型已经广泛应用于各个领域,例如,语音识别、图像识别、自然语言处理等领域。神经网络模型中存在大量的计算密集型算子,例如,矩阵计算、卷积、池化、激活、标准化等等。由于这些运算非常耗时,传统CPU(Central Processing Unit,中央处理单元)的运算能力难以满足需求,从而使得异构运算成为主流。并且因此开发出了各种神经网络专用处理器,诸如,GPU(GraphicsProcessing Unit,图形处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuits,专用集成电路)等神经网络专用处理器。
目前,在通用处理器或者是针对一些有计算密集型特点的例如深度学习领域的处理器中,访问存储器的地址对软件编程人员来说有很强的限制,例如,在总线数据位宽为64byte的设置下,访存地址需要64byte对齐。出现非对齐地址的情况下,硬件会自动忽略非对齐部分,返回错误数据,并向软件报告中断异常。为了保证存储对齐限制下访问数据的正确性,需要对不规则的数据结构进行无效数据的填充。
发明内容
本申请实施例提出了用于处理数据的方法和装置。
第一方面,本申请实施例提供了一种用于处理数据的方法,该方法包括:获取待执行指令,待执行指令包括数据标识;对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址;根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址;根据第二地址在存储器中读/写操作数。
在一些实施例中,根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址之后,方法还包括:计算对齐操作的移位信息。
在一些实施例中,根据第二地址在存储器中读/写操作数,包括:向存储器发送数据读取请求,数据读取请求包括第二地址;获取存储器响应于接收到数据读取请求返回的第一数据;根据移位信息对第一数据进行移位操作得到操作数;输出操作数。
在一些实施例中,根据移位信息对第一数据进行移位操作得到操作数,包括:根据移位信息对第一数据进行移位操作得到第二数据;根据预先定义的操作数的数据长度截取第二数据得到操作数。
在一些实施例中,根据第二地址在存储器中读/写操作数,包括:根据第一地址与预先定义的操作数的数据长度,确定第二地址所指示的待写入数据的有效位;将待写入数据中有效位上的数据写入存储器。
第二方面,本申请实施例提供了一种用于处理数据的装置,该装置包括:获取单元,被配置成获取待执行指令,待执行指令包括数据标识;译码单元,被配置成对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址;对齐单元,被配置成根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址;读写单元,被配置成根据第二地址在存储器中读/写操作数。
在一些实施例中,装置还包括:计算单元,被配置成计算对齐操作的移位信息。
在一些实施例中,读写单元,包括:发送子单元,被配置成向存储器发送数据读取请求,数据读取请求包括第二地址;获取子单元,被配置成获取存储器响应于接收到数据读取请求返回的第一数据;移位子单元,被配置成根据移位信息对第一数据进行移位操作得到操作数;输出子单元,被配置成输出操作数。
在一些实施例中,移位子单元,进一步配置用于:根据移位信息对第一数据进行移位操作得到第二数据;根据预先定义的操作数的数据长度截取第二数据得到操作数。
在一些实施例中,读写单元,包括:确定子单元,被配置成根据第一地址与预先定义的操作数的数据长度,确定第二地址所指示的待写入数据的有效位;写入子单元,被配置成将待写入数据中有效位上的数据写入存储器。
第三方面,本申请实施例提供了一种人工智能芯片,包括:一个或多个处理器核;存储装置,其上存储有一个或多个程序;当一个或多个程序被一个或多个处理器核执行时,使得一个或多个处理器核实现如第一方面上述的方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被人工智能芯片执行时实现如第一方面上述的方法。
第五方面,本申请实施例提供了一种电子设备,包括:处理器、存储装置和至少一个如第三方面上述的人工智能芯片。
本申请实施例提供的用于处理数据的方法和装置,通过获取待执行指令,而后对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址,并根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址,最后根据第二地址在存储器中读/写操作数,提高了存储器的存储利用率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本申请的用于处理数据的方法的一个实施例的流程图;
图3A是根据本申请的用于处理数据的方法的一个实施例中写入待写入数据前存储器中起始地址为第二地址的存储空间的一个示意图;
图3B是根据本申请的用于处理数据的方法的一个实施例中起始地址为第二地址的待写入数据的一个示意图;
图3C是根据本申请的用于处理数据的方法的一个实施例中用于指示待写入数据中有效位的信号的一个示意图;
图3D是根据本申请的用于处理数据的方法的一个实施例中写入待写入数据后存储器中起始地址为第二地址的存储空间的一个示意图;
图4是根据本申请的用于处理数据的方法的又一个实施例的流程图;
图5A是根据本申请的用于处理数据的方法的一个实施例中存储器返回的起始地址为第二地址的存储空间中第一数据的一个示意图;
图5B是根据本申请的用于处理数据的方法的一个实施例中进行移位以及截取操作得到的操作数的一个示意图;
图6是根据本申请的用于处理数据的装置的一个实施例的结构示意图;
图7是根据本申请的电子设备的一个实施例的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于处理数据的方法或用于处理数据的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括CPU(Central Processing Unit,中央处理器)101,总线102和AI(Artificial Intelligence)芯片103。总线102用以在CPU 101和AI芯片103之间提供通信链路的介质。总线102可以包括各种总线类型,例如PCIE(peripheralcomponent interconnect express)总线,AMBA(Advanced Microcontroller BusArchitecture)总线、OCP(Open Core Protocol)总线等等。
AI芯片,即人工智能芯片,也被称为AI加速器或计算卡,是指专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。AI计算中运算的需求是巨大的,特别是复杂的运算需求对计算性能影响较大。复杂运算,虽然可以用基本运算指令来实现,但会降低复杂运算(如浮点开方运算、浮点求幂运算、三角函数运算等)执行效率。
AI芯片103可以包括处理器核1031、1032、1033,总线1034和存储器1035。总线1034用于在处理器核1031、1032、1033和存储器1035之间提供通信链路的介质。总线1034可以包括各种总线类型,例如PCI总线、PCIE总线、支持片上互连(Network On Chip)协议的AMBA总线、OCP总线以及其他片上互连总线等等。
需要说明的是,本申请实施例所提供的用于处理数据的方法可以由AI芯片103执行,相应的用于处理数据的装置可以设置于AI芯片中。
应该理解,图1中的CPU、总线、AI芯片的数目仅仅是示意性的。根据实现需要,可以具有任意数目的CPU、总线和AI芯片。同理,AI芯片103中处理器核、总线和存储器的数目也仅仅是示意性的。根据实现需要,AI芯片103中可以具有任意数目的处理器核、总线和存储器。另外,根据实现需要,系统架构100中还可以包括输入设备(比如鼠标、键盘等)、输出设备(比如显示器、扬声器等)、输入/输出接口等等。
继续参考图2,示出了根据本申请的用于处理数据的方法的一个实施例的流程200。该用于处理数据的方法,包括以下步骤:
步骤201,获取待执行指令。
在本实施例中,用于处理数据的方法执行主体(例如图1所示的AI芯片)可以首先获取待执行指令,待执行指令包括数据标识。人工智能芯片可以与CPU通信连接,作为示例,人工智能芯片可以通过PCIE与CPU通信连接,以从CPU读取待执行指令。待执行指令包括数据标识,数据标识可以是数据名等可以标识操作数的信息。操作数可以是待对其进行处理的数据,例如待读取或待写入的数据。
步骤202,对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址。
在本实施例中,上述执行主体可以对步骤201中获取的待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址,第一地址可以是定义操作数时为其分配的地址。第一地址可以包括操作数在存储器中的首地址,也可以包括操作数在存储器中地址段,第一地址为操作数在存储器中的首地址时,第一地址指示的存储空间可以包括以第一地址为首地址的存储空间,存储空间的大小可以是预先设置的,也可以根据操作数长度决定。
这里,人工智能芯片的存储器可以包括以下至少一项:静态随机存取存储器(SRAM,Static Random-Access Memory)、动态随机存取存储器(DRAM,Dynamic RandomAccess Memory)和Flash存储器(Flash Memory)。
根据存储层次,存储器可以分为:寄存器、局部存储(Local Memory,LM),共享存储(Share Memory,SM),全局存储(Global Memory,GM),作为示例,数据标识所指示的操作数可以存储于全局存储(Global Memory,GM)。
这里,上述执行主体可以在获取到待执行指令的情况下,可以在至少一个处理器核中选取执行待执行指令的处理器核作为目标处理器核。例如,可以根据每个处理器核的当前工作状态在至少一个处理器核中选取执行待执行指令的处理器核作为目标处理器核。又例如,也可以按照轮询的方式在至少一个处理器核中选取执行待执行指令的处理器核作为目标处理器核。
这样,目标处理器核可以在获取到待执行指令的情况下,对待执行指令进行译码,得到操作码和地址。译码指的是按预定的指令格式对获取的待执行指令进行拆分和解译。操作码表示要执行的操作性质,即执行什么操作,或做什么。地址是操作码执行时的操作数的地址。计算机执行一条指定的指令时,必须首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能。
步骤203,根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址。
在本实施例中,上述执行主体可以根据预先设置的存储器的数据位宽对步骤202中得到的第一地址进行对齐操作,得到第二地址。第二地址也可以包括操作数在存储器中的首地址,也可以包括操作数在存储器中地址段。
数据位宽可以是存储器一次能传输的数据量,即一次能传递的数据宽度。作为示例,AI芯片中全局存储可以采用高带宽显存(High Bandwidth Memory,HBM)技术,访存接口可以使用标准AXI(Advanced eXtensible Interface)总线协议,由于HBM本身接口的特性和AXI总线协议的限制,访问内存的地址对软件编程人员来说有很强的限制,例如:在AXI总线数据位宽为64byte的设置下,访存地址需要64byte对齐。虽然AXI总线协议支持传输的粒度是1byte,但是在同样的时钟频率条件下,数据位宽和访存带宽成正比,为了提高AI芯片的访存带宽,避免访存瓶颈,AXI总线位宽设置为64byte,从而引发访存地址的对齐限制。
在这里,对齐操作可以是向下对齐,根据预先设置的存储器的数据位宽对第一地址进行对齐操作,可以是将第一地址对齐到在它之前的一个数据位宽的起始位置,例如可以将第一地址0x21000004对齐变成第二地址0x21000000。
步骤204,根据第二地址在存储器中读/写操作数。
在本实施例中,上述执行主体可以根据步骤203中得到的第二地址在存储器中读/写操作数。执行主体可以读取第二地址指示的存储空间中的数据,或将操作数写入第二地址指示的存储空间。
在本实施例的一些可选实现方式中,根据第二地址在存储器中读/写操作数,包括:根据第一地址与预先定义的操作数的数据长度,确定第二地址所指示的待写入数据的有效位;将待写入数据中有效位上的数据写入存储器。作为示例,在AXI数据通道传输可以通过wstrb信号实现将待写入数据中有效位上的数据写入存储器,wrtrb信号用于指示数据有效位是哪些。
在本实现方式中,操作数的数据长度可以是在定义操作数时确定的,作为示例,操作数是数组A,定义的数据类型是浮点32bit,数组长度8,数组A的数据长度为32byte。
如图3A所示,数组A写入存储器之前,存储器中起始地址为第二地址的存储空间中存储有数组C与数组B。如图3B所示,起始地址为第二地址的待写入数据中操作数即数组A的起始地址实际为第一地址,根据第一地址与预先定义的操作数的数据长度,可以确定第二地址所指示的待写入数据的有效位,用于指示有效位的信号可以如图3C所示。而后可以将待写入数据中有效位上的数据写入存储器中,存储器起始地址为第二地址的存储空间中写入操作数数组A后的结果如图3D所示。
本申请的上述实施例提供的方法通过获取待执行指令,待执行指令包括数据标识;对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址;根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址;根据第二地址在存储器中读/写操作数,避免了无效数据的填充,提高了存储器的存储利用率。
进一步参考图4,其示出了用于处理数据的方法的又一个实施例的流程400。该用于处理数据的方法的流程400,包括以下步骤:
步骤401,获取待执行指令。
在本实施例中,用于处理数据的方法执行主体(例如图1所示的AI芯片)可以首先获取待执行指令,待执行指令包括数据标识。
步骤402,对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址。
在本实施例中,上述执行主体可以对步骤401中获取的待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址。
步骤403,根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址。
在本实施例中,上述执行主体可以根据预先设置的存储器的数据位宽对步骤402中得到的第一地址进行对齐操作,得到第二地址。
步骤404,计算对齐操作的移位信息。
在本实施例中,上述执行主体可以计算步骤403中对齐操作的移位信息。移位信息可以包括移位数和移位方向。作为示例,将地址0x21000004对齐变成0x21000000,则移位数可以为4。
步骤405,向存储器发送数据读取请求,数据读取请求包括第二地址。
在本实施例中,上述执行主体可以向存储器发送数据读取请求,数据读取请求包括步骤403中得到的第二地址。由于第二地址为对齐后的地址,存储器可以根据第二地址返回正确的数据。
步骤406,获取存储器响应于接收到数据读取请求返回的第一数据。
在本实施例中,上述执行主体可以获取存储器响应于接收到步骤405中发送的数据读取请求返回的第一数据。第一数据中包括所需的操作数。
步骤407,根据移位信息对第一数据进行移位操作得到操作数。
在本实施例中,上述执行主体可以根据步骤404中计算出的移位信息对第一数据进行移位操作得到操作数。由于第二地址是第一地址进行对齐操作后的地址,第二地址指示的数据移位后为第一地址指示的数据,即包括操作数的数据。
在本实施例的一些可选实现方式中,根据移位信息对第一数据进行移位操作得到操作数,包括:根据移位信息对第一数据进行移位操作得到第二数据;根据预先定义的操作数的数据长度截取第二数据得到操作数。本实现方式通过预先定义的操作数的数据长度截取第二数据,得到操作数,进一步提高了输出的操作数的精准度,后续使用存储器输出数据的模块可以直接使用,不用进一步处理。
作为示例,存储器返回的起始地址为第二地址的存储空间中的第一数据如图5A所示,针对第一数据,根据移位信息进行移位操作,并根据预先定义的操作数的数据长度进行截取,得到如图5B所示的操作数。
步骤408,输出操作数。
在本实施例中,上述执行主体可以输出步骤407中得到的操作数。
在本实施例中,步骤401、步骤402、步骤403的操作与步骤201、步骤202、步骤203的操作基本相同,在此不再赘述。
从图4中可以看出,与图2对应的实施例相比,本实施例中的用于处理数据的方法的流程400中通过计算对齐操作的移位信息,并根据移位信息对第一数据进行移位操作,由此,本实施例描述的方案中输出了更为精准的操作数,便于读取存储器数据的模块使用输出的操作数。
进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种用于处理数据的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例的用于处理数据的装置600包括:获取单元601、译码单元602、对齐单元603、读写单元604。其中,获取单元,被配置成获取待执行指令,待执行指令包括数据标识;译码单元,被配置成对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址;对齐单元,被配置成根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址;读写单元,被配置成根据第二地址在存储器中读/写操作数。
在本实施例中,用于处理数据的装置600的获取单元601、译码单元602、对齐单元603、读写单元604的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203和步骤204。
在本实施例的一些可选实现方式中,装置还包括:计算单元,被配置成计算对齐操作的移位信息。
在本实施例的一些可选实现方式中,读写单元,包括:发送子单元,被配置成向存储器发送数据读取请求,数据读取请求包括第二地址;获取子单元,被配置成获取存储器响应于接收到数据读取请求返回的第一数据;移位子单元,被配置成根据移位信息对第一数据进行移位操作得到操作数;输出子单元,被配置成输出操作数。
在本实施例的一些可选实现方式中,移位子单元,进一步配置用于:根据移位信息对第一数据进行移位操作得到第二数据;根据预先定义的操作数的数据长度截取第二数据得到操作数。
在本实施例的一些可选实现方式中,读写单元,包括:确定子单元,被配置成根据第一地址与预先定义的操作数的数据长度,确定第二地址所指示的待写入数据的有效位;写入子单元,被配置成将待写入数据中有效位上的数据写入存储器。
本申请的上述实施例提供的装置,通过获取待执行指令,待执行指令包括数据标识;对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址;根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址;根据第二地址在存储器中读/写操作数,提高了存储器的存储利用率。
本申请实施例还提供了一种电子设备。该电子设备的结构可以参考图7,其示出了本申请的电子设备的一个实施例的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括一个或多个中央处理单元(CPU)701以及一个或多个人工智能芯片704。CPU 701可以根据存储在只读存储器(ROM)702中的程序或者从存储部分707加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。人工智能芯片704包括一个或多个通用执行部件以及一个或多个专用执行部件,人工智能芯片704可以根据从CPU 701接收的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702、RAM 703以及人工智能芯片704通过总线705彼此相连。输入/输出(I/O)接口706也连接至总线705。
以下部件连接至I/O接口706:包括硬盘等的存储部分707;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分708。通信部分708经由诸如因特网的网络执行通信处理。驱动器709也根据需要连接至I/O接口706。可拆卸介质710,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器709上,以便于从其上读出的计算机程序根据需要被安装入存储部分707。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分708从网络上被下载和安装,和/或从可拆卸介质710被安装。在该计算机程序被人工智能芯片704的通用执行部件执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在AI芯片中,例如,可以描述为:一种AI芯片包括获取单元、译码单元、对齐单元和读写单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“被配置成获取待执行指令的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的AI芯片中所包含的;也可以是单独存在,而未装配入该AI芯片中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该AI芯片执行时,使得该AI芯片:获取待执行指令,待执行指令包括数据标识;对待执行指令进行译码,得到数据标识所指示的操作数在存储器中的第一地址;根据预先设置的存储器的数据位宽对第一地址进行对齐操作,得到第二地址;根据第二地址在存储器中读/写操作数。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (9)

1.一种用于处理数据的方法,包括:
获取待执行指令,所述待执行指令包括数据标识;
对所述待执行指令进行译码,得到所述数据标识所指示的操作数在存储器中的第一地址;
根据预先设置的所述存储器的数据位宽对所述第一地址进行对齐操作,得到第二地址,所述根据预先设置的所述存储器的数据位宽对所述第一地址进行对齐操作包括:将所述第一地址对齐到在所述第一地址之前的一个数据位宽的起始位置;
计算所述对齐操作的移位信息,所述移位信息包括移位数和移位方向;
根据所述第二地址在所述存储器中读/写所述操作数;所述根据所述第二地址在所述存储器中读/写所述操作数,包括:
向所述存储器发送数据读取请求,所述数据读取请求包括所述第二地址;
获取所述存储器响应于接收到所述数据读取请求返回的第一数据;
根据所述移位信息对所述第一数据进行移位操作得到所述操作数;
输出所述操作数。
2.根据权利要求1所述的方法,其中,所述根据所述移位信息对所述第一数据进行移位操作得到所述操作数,包括:
根据所述移位信息对所述第一数据进行移位操作得到第二数据;
根据预先定义的所述操作数的数据长度截取所述第二数据得到所述操作数。
3.根据权利要求1或2所述的方法,其中,所述根据所述第二地址在所述存储器中读/写所述操作数,包括:
根据所述第一地址与预先定义的所述操作数的数据长度,确定所述第二地址所指示的待写入数据的有效位;
将所述待写入数据中有效位上的数据写入所述存储器。
4.一种用于处理数据的装置,包括:
获取单元,被配置成获取待执行指令,所述待执行指令包括数据标识;
译码单元,被配置成对所述待执行指令进行译码,得到所述数据标识所指示的操作数在存储器中的第一地址;
对齐单元,被配置成根据预先设置的所述存储器的数据位宽对所述第一地址进行对齐操作,得到第二地址,所述对齐单元进一步被配置成将所述第一地址对齐到在所述第一地址之前的一个数据位宽的起始位置;
计算单元,被配置成计算所述对齐操作的移位信息,所述移位信息包括移位数和移位方向;
读写单元,被配置成根据所述第二地址在所述存储器中读/写所述操作数;所述读写单元,包括:发送子单元,被配置成向所述存储器发送数据读取请求,所述数据读取请求包括所述第二地址;
获取子单元,被配置成获取所述存储器响应于接收到所述数据读取请求返回的第一数据;
移位子单元,被配置成根据所述移位信息对所述第一数据进行移位操作得到所述操作数;
输出子单元,被配置成输出所述操作数。
5.根据权利要求4所述的装置,其中,所述移位子单元,进一步配置用于:
根据所述移位信息对所述第一数据进行移位操作得到第二数据;
根据预先定义的所述操作数的数据长度截取所述第二数据得到所述操作数。
6.根据权利要求4或5所述的装置,其中,所述读写单元,包括:
确定子单元,被配置成根据所述第一地址与预先定义的所述操作数的数据长度,确定所述第二地址所指示的待写入数据的有效位;
写入子单元,被配置成将所述待写入数据中有效位上的数据写入所述存储器。
7.一种人工智能芯片,包括:
一个或多个处理器核;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器核执行时,使得所述一个或多个处理器核实现如权利要求1-3中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,该程序被人工智能芯片执行时实现如权利要求1-3中任一所述的方法。
9.一种电子设备,包括:处理器、存储装置和至少一个如权利要求7所述的人工智能芯片。
CN201810910200.9A 2018-08-10 2018-08-10 用于处理数据的方法和装置 Active CN110825435B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810910200.9A CN110825435B (zh) 2018-08-10 2018-08-10 用于处理数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810910200.9A CN110825435B (zh) 2018-08-10 2018-08-10 用于处理数据的方法和装置

Publications (2)

Publication Number Publication Date
CN110825435A CN110825435A (zh) 2020-02-21
CN110825435B true CN110825435B (zh) 2023-01-24

Family

ID=69541343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810910200.9A Active CN110825435B (zh) 2018-08-10 2018-08-10 用于处理数据的方法和装置

Country Status (1)

Country Link
CN (1) CN110825435B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782580B (zh) * 2020-06-30 2024-03-01 北京百度网讯科技有限公司 复杂计算装置、方法、人工智能芯片和电子设备
CN114398011B (zh) * 2022-01-17 2023-09-22 安谋科技(中国)有限公司 数据存储方法、设备和介质
CN114443143A (zh) * 2022-01-30 2022-05-06 上海阵量智能科技有限公司 指令处理方法、装置、芯片、电子设备以及存储介质
CN116597886B (zh) * 2023-07-18 2023-10-24 深圳中安辰鸿技术有限公司 对npu中的lsu进行验证的方法及相关设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4396982A (en) * 1979-11-19 1983-08-02 Hitachi, Ltd. Microinstruction controlled data processing system including microinstructions with data align control feature
CN101876892A (zh) * 2010-05-20 2010-11-03 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
CN103984530A (zh) * 2014-05-15 2014-08-13 中国航天科技集团公司第九研究院第七七一研究所 一种提高store指令执行效率的流水线结构及方法
CN104407880A (zh) * 2014-10-27 2015-03-11 杭州中天微系统有限公司 支持硬件非对齐存储访问的risc处理器加载/存储单元
CN108228235A (zh) * 2016-12-21 2018-06-29 龙芯中科技术有限公司 基于mips架构的数据操作处理方法和装置
CN108334276A (zh) * 2017-01-20 2018-07-27 宇瞻科技股份有限公司 快闪记忆体的动态对齐数据方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106883A1 (en) * 2005-11-07 2007-05-10 Choquette Jack H Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction
CN103761075B (zh) * 2014-02-10 2017-01-25 东南大学 一种粗粒度动态可重构数据规整控制单元结构

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4396982A (en) * 1979-11-19 1983-08-02 Hitachi, Ltd. Microinstruction controlled data processing system including microinstructions with data align control feature
CN101876892A (zh) * 2010-05-20 2010-11-03 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
CN103984530A (zh) * 2014-05-15 2014-08-13 中国航天科技集团公司第九研究院第七七一研究所 一种提高store指令执行效率的流水线结构及方法
CN104407880A (zh) * 2014-10-27 2015-03-11 杭州中天微系统有限公司 支持硬件非对齐存储访问的risc处理器加载/存储单元
CN108228235A (zh) * 2016-12-21 2018-06-29 龙芯中科技术有限公司 基于mips架构的数据操作处理方法和装置
CN108334276A (zh) * 2017-01-20 2018-07-27 宇瞻科技股份有限公司 快闪记忆体的动态对齐数据方法

Also Published As

Publication number Publication date
CN110825435A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN110825435B (zh) 用于处理数据的方法和装置
US10942716B1 (en) Dynamic computational acceleration using a heterogeneous hardware infrastructure
US10025643B2 (en) System and method for compiler support for kernel launches in device code
CN110825436B (zh) 应用于人工智能芯片的计算方法和人工智能芯片
JP2020027616A (ja) コマンド実行方法及び装置
CN111208933A (zh) 数据访问的方法、装置、设备和存储介质
CN110825514B (zh) 人工智能芯片以及用于人工智能芯片的指令执行方法
CN115098412A (zh) 外设访问控制器、数据访问装置及对应方法、介质和芯片
KR900004291B1 (ko) 데이터 프로세서
CN113254073B (zh) 数据处理方法及装置
KR20210080009A (ko) 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
CN112631657A (zh) 用于字符串处理的字节比较方法以及指令处理装置
WO2023232006A1 (zh) 仿真装置、仿真系统及其仿真方法、存储介质
EP4134827A1 (en) Hardware interconnect with memory coherence
US8593472B1 (en) System and method for accessing a frame buffer via a storage driver
US20140157237A1 (en) Overriding System Attributes and Function Returns in a Software Subsystem
CN111552652B (zh) 基于人工智能芯片的数据处理方法、装置和存储介质
US11392406B1 (en) Alternative interrupt reporting channels for microcontroller access devices
CN115297169B (zh) 数据处理方法、装置、电子设备及介质
US20140244232A1 (en) Simulation apparatus and simulation method
US20240111694A1 (en) Node identification allocation in a multi-tile system with multiple derivatives
CN111625281A (zh) 一种数据处理方法、装置、设备及存储介质
CN116991593B (zh) 操作指令处理方法、装置、设备及存储介质
CN115617732B (zh) Apb总线结构、片上系统、车辆及访问方法
CN110825461A (zh) 数据处理方法和装置

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210927

Address after: Baidu building, No. 10, Shangdi 10th Street, Haidian District, Beijing 100086

Applicant after: Kunlun core (Beijing) Technology Co.,Ltd.

Address before: 2 / F, baidu building, 10 Shangdi 10th Street, Haidian District, Beijing 100085

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant