CN114253741B - 多核微处理器的核间通信方法和多核微处理器 - Google Patents
多核微处理器的核间通信方法和多核微处理器 Download PDFInfo
- Publication number
- CN114253741B CN114253741B CN202111461924.8A CN202111461924A CN114253741B CN 114253741 B CN114253741 B CN 114253741B CN 202111461924 A CN202111461924 A CN 202111461924A CN 114253741 B CN114253741 B CN 114253741B
- Authority
- CN
- China
- Prior art keywords
- message block
- core
- message
- block
- target
- 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
Links
Images
Classifications
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
- G06F15/163—Interprocessor communication
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multi Processors (AREA)
Abstract
本申请提供一种多核微处理器的核间通信方法和多核微处理器。该方法包括:当发送核需要发送消息时,该发送核可以向消息块处理核发送消息块获取请求。该消息块处理核可以根据该消息块获取请求中的参数从共享存储空间中选择目标消息块。消息块处理核可以将该目标消息块的地址反馈到发送核。发送核确定目标消息块的地址后,可以通过该地址访问该目标消息块,并将数据内容写入目标消息块中。该发送核可以将该目标消息块写入第一通信消息队列中。接收核从共享存储空间的第一通信消息队列中获取目标消息块。接收核读取并处理目标消息块中的数据内容。本申请的方法,提高了内存空间的利用率,提高了数据处理效率。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种多核微处理器的核间通信方法和多核微处理器。
背景技术
随着信息技术的发展和汽车生产的现实需求,提高微处理器的功能、算力和可靠性成为研究的重点。目前,单核微处理器已经无法满足汽车等产品中对数据处理的需求。为了满足汽车等产品中的数据处理需求,目前市面上出现了很多多核微处理器。在多核微处理器运转过程中,多核微处理器的多个核之间需要大量的信息交换以实现具体功能。
目前,多核微处理器的核间通信一般使用共享内存进行数据交换。通常多核微处理器会在共享存储空间中规划出一定的专属空间。在此专属空间内,多核微处理器可以预先设置多个固定大小的消息队列,消息队列中可以包括若干个固定大小的消息块。发送核可以把消息拷贝到接收核对应的消息队列的消息块中。接收核可以将数据从该消息队列的消息块中复制到本地空间,并进行数据处理。
然而,数据内容的长度通常较为随机,使用固定大小的消息块存容易导致内存空间的浪费,在内存使用效率低的问题。
发明内容
本申请提供一种多核微处理器的核间通信方法和多核微处理器,用以解决现有技术中,多核微处理器的核间通信时内存使用效率低的问题。
第一方面,本申请提供一种多核微处理器的核间通信方法,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述方法应用于所述发送核,所述方法包括:
所述发送核向所述消息块处理核发送消息块获取请求,以使所述消息块处理核根据所述消息块获取请求从所述共享存储空间的空闲消息队列中获取目标消息块;
所述发送核根据所述消息块处理核反馈的所述目标消息块的地址,将数据内容写入所述目标消息块中;
所述发送核将所述目标消息块***所述共享存储空间中所述接收核对应的第一通信消息队列中,以使所述接收核通过所述第一通信消息队列读取所述数据内容。
可选地,所述共享存储空间中包括消息块申请表,所述消息块申请表中的一行用于指示一个通信消息队列消息块的申请参数,每一通信消息队列唯一对应于一个发送核的标识和一个接收核的标识;
所述向所述消息块处理核发送消息块获取请求,包括:
所述发送核根据所述接收核的标识,确定所述第一通信消息队列;
所述发送核将所述消息块申请表中所述第一通信消息队列对应的申请参数修改为提交申请;
所述发送核将所述消息块申请表中所述第一通信消息队列对应的地址参数修改为空地址,所述空地址不指向任一消息块。
可选地,所述方法,还包括:
所述发送核根据所述数据内容的数据长度和预设长度阈值,确定目标消息块的消息类型,并将所述消息块申请表中所述第一通信消息队列对应的类型参数修改为所述目标消息块的消息类型。
可选地,所述根据所述数据内容的数据长度和预设长度阈值,确定目标消息块的消息类型,包括:
当所述数据内容的数据长度小于等于第一长度阈值时,所述发送核确定所述目标消息块的消息类型为数据型;
当所述数据内容的数据长度大于第一长度阈值,且小于等于所述第二长度阈值时,所述发送核确定所述目标消息块的消息类型为共享地址型;
当所述数据内容的数据长度大于第二长度阈值时,所述发送核确定所述目标消息块的消息类型为自定义地址型。
可选地,当目标消息块的消息类型为数据型时,所述将数据内容写入所述目标消息块中,包括:
所述发送核将所述数据内容写入所述目标消息块的内存空间中。
可选地,当目标消息块的消息类型为共享地址型时,所述将数据内容写入所述目标消息块中,包括:
所述发送核根据所述目标消息块的内存空间中地址,确定目标数据块;
所述发送核将所述数据内容写入所述目标数据块;
可选地,当目标消息块的消息类型为自定义地址型时,所述将数据内容写入所述目标消息块中,包括:
所述发送核将存储有所述数据内容的内存地址写入所述目标消息块对应的内存空间中,所述内存地址指向所述共享存储空间中所述发送核的专属存储空间中的内存。
可选地,所述方法,还包括:
当所述发送核从所述共享存储空间中所述发送核对应的第二通信消息队列中读取到所述目标消息块时,释放所述内存地址指向的内存空间;
所述发送核生成并发送消息块释放请求,以使所述消息块处理核将所述目标消息块重新***所述共享存储空间的空闲消息队列中,以及以使所述发送核得以继续利用所述内存地址指向的所述内存空间。
可选地,所述共享存储空间中包括消息块释放表,所述消息块释放表中每一行的用于指示一个通信消息队列消息块的释放参数;
所述生成并发送消息块释放请求,包括:
所述发送核将所述消息块释放表中所述第一通信消息队列对应的释放参数修改为提交释放申请;
所述发送核将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为所述目标消息块对应的地址。
第二方面,本申请提供一种多核微处理器的核间通信方法,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述方法应用于消息块处理核,所述方法包括:
所述消息块处理核接收所述发送核发送的消息块获取请求;
所述消息块处理核根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取目标消息块;
所述消息块处理核将所述目标消息块的地址反馈到发送核,所述目标消息块的地址用于使发送核将数据内容写入所述目标消息块中,并将所述目标消息块***所述共享存储空间中所述接收核对应的第一通信消息队列中,以使所述接收核通过所述第一通信消息队列读取所述数据内容。
可选地,所述共享存储空间中包括消息块申请表,所述消息块申请表中每一行用于指示一个通信消息队列消息块申请参数,所述消息块处理核根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取目标消息块,包括:
所述消息块处理核读取所述消息块申请表;
当所述消息块申请表中存在一通信消息队列的申请参数为提交申请、地址参数为空地址时,所述消息块处理核从所述共享存储空间的空闲消息队列中获取目标消息块;
所述消息块处理核将所述消息块申请表中第一通信消息队列对应的地址参数修改为目标消息块的地址;
所述消息块处理核将所述消息块申请表中所述第一通信消息队列对应的申请参数修改为已分配。
可选地,所述共享存储空间中包括至少一个空闲消息队列,每一所述空闲消息队列中的消息块对应于一种消息块类型;
所述从所述共享存储空间的空闲消息队列中获取目标消息块,包括:
所述消息块处理核根据所述第一通信消息队列对应的类型参数,确定目标消息块的消息类型;
所述消息块处理核根据所述目标消息块的消息类型,从对应的空闲消息队列中获取一目标消息块。
可选地,当目标消息块的消息类型为共享地址型时,所述方法,还包括:
所述消息块处理核从对应的空闲数据块队列中获取一目标数据块;
所述消息块处理核将所述目标数据块的地址写入所述目标消息块对应的内存空间中。
可选地,所述方法,还包括:
当所述消息块处理核获取消息块释放请求时,所述消息块处理核根据所述消息块释放请求将所述目标消息块重新***所述共享存储空间的空闲消息队列中。
可选地,所述共享存储空间中包括消息块释放表,所述消息块释放表中每一行的用于指示一个通信消息队列消息块申请情况;所述方法,还包括:
所述消息块处理核将所述消息块释放表中第一通信消息队列对应的释放参数修改为已释放;
所述消息块处理核将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为空地址。
可选地,当目标消息块的消息类型为共享地址型时,所述方法,还包括:
所述消息块处理核根据所述目标消息块的内存空间中地址,确定目标数据块;
所述消息块处理核将所述目标数据块重新***所述共享存储空间的空闲数据块队列中。
第三方面,本申请提供一种多核微处理器的核间通信方法,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述方法应用于接收核,所述方法包括:
所述接收核从所述共享存储空间的第一通信消息队列中获取目标消息块;其中,所述目标消息块是所述消息块处理核根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取的,所述消息块获取请求是所述发送核发送的;所述目标消息块的地址是所述消息块处理核向所述发送核发送的,所述目标消息块的地址用于使发送核将数据内容写入所述目标消息块中;
所述接收核读取并处理所述目标消息块中的数据内容。
可选地,所述共享存储空间中的消息块类型包括数据型、共享地址型和自定义地址型,当目标消息块的消息类型为数据型时,所述读取并处理所述目标消息块中的数据内容,包括:
所述接收核获取所述目标消息块的内存空间中的数据内容。
可选地,所述共享存储空间中的消息块类型包括数据型、共享地址型和自定义地址型,当目标消息块的消息类型为共享地址型和自定义地址型时,所述读取并处理所述目标消息块中的数据内容,包括:
所述接收核获取所述目标消息块的内存空间中的地址,所述地址为目标数据块地址或者所述共享存储空间中所述发送核的专属存储空间中的内存地址;
所述接收核读取并处理所述地址对应的数据内容。
可选地,当目标消息块的消息类型为数据型或者共享地址型时,所述方法,还包括:
所述接收核将消息块释放表中所述第一通信消息队列对应的释放参数修改为提交释放申请;
所述接收核将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为所述目标消息块对应的地址。
可选地,当目标消息块的消息类型为自定义地址型时,所述方法,还包括:
所述接收核在所述目标消息块的消息头中添加释放标记,所述释放标记用于指示所述目标消息块已经完成使用;
所述接收核将所述目标消息块***所述共享存储空间中所述发送核对应的第二通信消息队列中,以使所述发送核在读取到所述目标消息块时释放所述目标消息块和所述内存地址对应的内存空间。
第四方面,本申请提供一种多核微处理器的核间通信装置,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述装置应用于所述发送核,所述装置包括:
发送模块,用于向所述消息块处理核发送消息块获取请求,以使所述消息块处理核根据所述消息块获取请求从所述共享存储空间的空闲消息队列中获取目标消息块;
处理模块,用于根据所述消息块处理核反馈的所述目标消息块的地址,将数据内容写入所述目标消息块中;
处理模块,还用于将所述目标消息块***所述共享存储空间中所述接收核对应的第一通信消息队列中,以使所述接收核通过所述第一通信消息队列读取所述数据内容。
可选地,所述共享存储空间中包括消息块申请表,所述消息块申请表中的一行用于指示一个通信消息队列消息块的申请参数,每一通信消息队列唯一对应于一个发送核的标识和一个接收核的标识;
所述处理模块,具体用于:
根据所述接收核的标识,确定所述第一通信消息队列;
将所述消息块申请表中所述第一通信消息队列对应的申请参数修改为提交申请;
将所述消息块申请表中所述第一通信消息队列对应的地址参数修改为空地址,所述空地址不指向任一消息块。
可选地,所述处理模块,具体用于:
根据所述数据内容的数据长度和预设长度阈值,确定目标消息块的消息类型,并将所述消息块申请表中所述第一通信消息队列对应的类型参数修改为所述目标消息块的消息类型。
可选地,所述处理模块,具体用于:
当所述数据内容的数据长度小于等于第一长度阈值时,确定所述目标消息块的消息类型为数据型;
当所述数据内容的数据长度大于第一长度阈值,且小于等于所述第二长度阈值时,确定所述目标消息块的消息类型为共享地址型;
当所述数据内容的数据长度大于第二长度阈值时,确定所述目标消息块的消息类型为自定义地址型。
可选地,当目标消息块的消息类型为数据型时,所述处理模块,具体用于:
将所述数据内容写入所述目标消息块的内存空间中。
可选地,当目标消息块的消息类型为共享地址型时,所述处理模块,具体用于:
根据所述目标消息块的内存空间中地址,确定目标数据块;
将所述数据内容写入所述目标数据块;
可选地,当目标消息块的消息类型为自定义地址型时,所述处理模块,具体用于:
将存储有所述数据内容的内存地址写入所述目标消息块对应的内存空间中,所述内存地址指向所述共享存储空间中所述发送核的专属存储空间中的内存。
可选地,所述处理模块,还用于:
从所述共享存储空间中所述发送核对应的第二通信消息队列中读取到所述目标消息块时,释放所述内存地址指向的内存空间;
生成并发送消息块释放请求,以使所述消息块处理核将所述目标消息块重新***所述共享存储空间的空闲消息队列中,以及以使所述发送核得以继续利用所述内存地址指向的所述内存空间。
可选地,所述共享存储空间中包括消息块释放表,所述消息块释放表中每一行的用于指示一个通信消息队列消息块的释放参数;
所述处理模块,具体用于:
将所述消息块释放表中所述第一通信消息队列对应的释放参数修改为提交释放申请;
将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为所述目标消息块对应的地址。
第五方面,本申请提供一种多核微处理器的核间通信装置,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述装置应用于消息块处理核,所述装置包括:
接收模块,用于接收所述发送核发送的消息块获取请求;
处理模块,用于根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取目标消息块;
发送模块,用于将所述目标消息块的地址反馈到发送核,所述目标消息块的地址用于使发送核将数据内容写入所述目标消息块中,并将所述目标消息块***所述共享存储空间中所述接收核对应的第一通信消息队列中,以使所述接收核通过所述第一通信消息队列读取所述数据内容。
可选地,所述共享存储空间中包括消息块申请表,所述消息块申请表中每一行用于指示一个通信消息队列消息块申请参数,所述处理模块,具体用于:
读取所述消息块申请表;
当所述消息块申请表中存在一通信消息队列的申请参数为提交申请、地址参数为空地址时,从所述共享存储空间的空闲消息队列中获取目标消息块;
将所述消息块申请表中第一通信消息队列对应的地址参数修改为目标消息块的地址;
将所述消息块申请表中所述第一通信消息队列对应的申请参数修改为已分配。
可选地,所述共享存储空间中包括至少一个空闲消息队列,每一所述空闲消息队列中的消息块对应于一种消息块类型;
所述处理模块,具体用于:
根据所述第一通信消息队列对应的类型参数,确定目标消息块的消息类型;
根据所述目标消息块的消息类型,从对应的空闲消息队列中获取一目标消息块。
可选地,当目标消息块的消息类型为共享地址型时,所述处理模块,具体用于:
从对应的空闲数据块队列中获取一目标数据块;
将所述目标数据块的地址写入所述目标消息块对应的内存空间中。
可选地,所述处理模块,还用于:
当所述消息块处理核获取消息块释放请求时,根据所述消息块释放请求将所述目标消息块重新***所述共享存储空间的空闲消息队列中。
可选地,所述共享存储空间中包括消息块释放表,所述消息块释放表中每一行的用于指示一个通信消息队列消息块申请情况;所述处理模块,具体用于:
将所述消息块释放表中第一通信消息队列对应的释放参数修改为已释放;
将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为空地址。
可选地,当目标消息块的消息类型为共享地址型时,所述处理模块,具体用于:
根据所述目标消息块的内存空间中地址,确定目标数据块;
将所述目标数据块重新***所述共享存储空间的空闲数据块队列中。
第六方面,本申请提供一种多核微处理器的核间通信装置,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述装置应用于接收核,所述装置包括:
获取模块,用于从所述共享存储空间的第一通信消息队列中获取目标消息块;其中,所述目标消息块是所述消息块处理核根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取的,所述消息块获取请求是所述发送核发送的;所述目标消息块的地址是所述消息块处理核向所述发送核发送的,所述目标消息块的地址用于使发送核将数据内容写入所述目标消息块中;
处理模块,用于读取并处理所述目标消息块中的数据内容。
可选地,所述共享存储空间中的消息块类型包括数据型、共享地址型和自定义地址型,当目标消息块的消息类型为数据型时,所述读取并处理所述目标消息块中的数据内容,包括:
所述接收核获取所述目标消息块的内存空间中的数据内容。
可选地,所述共享存储空间中的消息块类型包括数据型、共享地址型和自定义地址型,当目标消息块的消息类型为共享地址型和自定义地址型时,所述读取并处理所述目标消息块中的数据内容,包括:
获取所述目标消息块的内存空间中的地址,所述地址为目标数据块地址或者所述共享存储空间中所述发送核的专属存储空间中的内存地址;
所述接收核读取并处理所述地址对应的数据内容。
可选地,当目标消息块的消息类型为数据型或者共享地址型时,所述处理模块,还用于:
将消息块释放表中所述第一通信消息队列对应的释放参数修改为提交释放申请;
将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为所述目标消息块对应的地址。
可选地,当目标消息块的消息类型为自定义地址型时,所述处理模块,还用于:
在所述目标消息块的消息头中添加释放标记,所述释放标记用于指示所述目标消息块已经完成使用;
将所述目标消息块***所述共享存储空间中所述发送核对应的第二通信消息队列中,以使所述发送核在读取到所述目标消息块时释放所述目标消息块和所述内存地址对应的内存空间。
第七方面,本申请提供一种发送核,包括:存储器和处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序执行第一方面及第一方面任一种可能的设计中的多核微处理器的核间通信方法。
第八方面,本申请提供一种消息块处理核,包括:存储器和处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序执行第二方面及第二方面任一种可能的设计中的多核微处理器的核间通信方法。
第九方面,本申请提供一种接收核,包括:存储器和处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序执行第三方面及第三方面任一种可能的设计中的多核微处理器的核间通信方法。
第十方面,本申请提供一种多核微处理器,所述多核微处理器包括共享存储空间、至少一个如第七方面及第七方面任一种可能的设计中的发送核、至少一个如第九方面及第九方面任一种可能的设计中的接收核和一个第八方面及第八方面任一种可能的设计中的消息块处理核。
本申请提供的多核微处理器的核间通信方法,当发送核需要发送消息时,该发送核可以向消息块处理核发送消息块获取请求;该消息块处理核可以获取该消息块获取请求中的参数,并根据该参数从共享存储空间中选择目标消息块;消息块处理核在获取目标消息块后,获取该目标消息块的地址;该消息块处理核可以将该目标消息块的地址反馈到发送核;发送核确定目标消息块的地址后,可以通过该地址访问该目标消息块,并将数据内容写入目标消息块中;该发送核可以将该目标消息块写入第一通信消息队列中;接收核从共享存储空间的第一通信消息队列中获取目标消息块;接收核读取并处理目标消息块中的数据内容,实现了消息块缓存区域中消息块的合理利用,实现了共享存储空间中内存的合理利用,避免出现空间碎片化问题,提高共享存储空间中内存的使用效率,减少在通信过程中数据内容的复制,降低该多核微处理器在数据内容的复制中产生的不必要消耗,提高该多核微处理器的数据处理效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种共享存储空间的空间分配示意图;
图2为本申请一实施例提供的一种消息块的结构示意图;
图3为本申请一实施例提供的一种消息队列的结构示意图;
图4为本申请一实施例提供的一种多核微处理器的核间通信方法的信令交互图;
图5为本申请一实施例提供的一种消息块***过程示意图;
图6为本申请一实施例提供的一种消息块读取过程示意图;
图7为本申请一实施例提供的一种多核微处理器的核间通信方法的信令交互图;
图8为本申请一实施例提供的一种发送核的硬件结构示意图;
图9为本申请一实施例提供的一种消息块处理核的硬件结构示意图;
图10为本申请一实施例提供的一种接收核的硬件结构示意图
图11为本申请一实施例提供的一种多核微处理器的硬件结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。
应当进一步理解,术语“包含”、“包括”表明存在的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。
此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
微处理器即为应用于车辆终端等终端设备中的芯片。微处理器还可以称为微控制单元(Microcontroller Unit,MCU)、单片微型计算机(Single Chip Microcomputer)、单片机等。MCU中通常把中央处理器(Central Process Unit,CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、通用串行总线(Universal Serial Bus,USB)、A/D转换、通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)、可编程逻辑控制器(Programmable Logic Controller,PLC)、直接存储器访问(Direct MemoryAccess,DMA)等周边接口整合在单一芯片上形成芯片级的计算机。
随着信息技术的发展,以及和汽车产业中减少零部件的现实需求,业界对微处理器的功能、算力、可靠性提出了越来越高的要求。单核微处理器已经无法满足实际应用需求。为了应对使用需求,多核微处理器被提出并应用到了实际中。在多核微处理器的运行过程中,多个核之间通常需要进行大量的信息交换以实现数据处理的需求。这就涉及到核间通信问题。
为了核间有效通信,目前通常使用共享内存进行数据交换。在该多核微处理器的共享内存中,可以预先规划好一定的专属空间。在该专属空间内,内存空间被预先划分为多个固定大小消息队列和消息块。发送核可以把数据内容拷贝到接收核对应的消息队列的消息块中。接收核从该消息队列的消息块中读取该数据内容。该接收核还可以将数据内容复制到本地空间中,进行数据处理。然而,数据内容的数据长度取决于数据内容。使用固定大小的消息块存在极大的资源浪费。例如,当一个消息块的大小为10时,假设数据内容的数据量为1。发送核需要使用一个数据块来存放该数据量为1的数据内容。该消息块中9的剩余存储空间将在该数据块被使用时被浪费。又如,假设数据内容的数据量为11时,发送核无法在一个数据块中存储该数据内容,容易导致数据内容丢失的问题。
针对上述问题,现有技术提出了一种更优的方案。该现有技术中,设置有固定大小的消息队列和动态分配的消息块。其中消息块中动态分配的内存来自数据缓存区或者静态数据缓存区的。该固定大小的消息队列需要根据某个特定通道提前预估并使用,存在内存使用效率低的问题。并且,固定大小的消息队列通常不能满足传递大量数据的使用需求,通常需要额外的通信协议来辅助完成。该数据块在动态申请内存空间时,每次都需要从共享存储空间中找出与申请大小相当的内存空间,并将该内存空间分配给数据块。然而,随着申请次数的增加,共享存储空间的空间碎片化问题会逐渐加剧。空间碎片化问题容易导致发送核在申请数据块时,共享存储空间中存在足够的空闲内存,但是共享存储空间无法为该数据块分配内存空间的情况,导致该共享存储空间的内存使用效率降低。
此外,在上述现有技术中,发送核向接收核发送消息时,均需要发送核把数据内容拷贝到共享存储空间或者数据缓存区中。同时,由于消息队列通常为固定大小,因此,为了避免该接收核的消息通道被占满,即该接收核对应的消息队列被占满,接收核需要及时把消息队列的消息块中的数据内容拷贝到本地缓存区中。在该多核微处理器的使用中,该数据拷贝的过程会消耗该接收核较大的处理时间,从而导致该接收核的对数据的处理效率降低。
并且,考虑到本申请的多核微处理器多应用于汽车的嵌入式***中,因此,会对该多核微处理器上的***的稳定性和安全性有更多偏重。即,需要在该多核微处理器的性能和资源使用上找到一个平衡。
为此,本申请提出了一种多核微处理器的核间通信方法。本申请通过使用动态消息队列和预分配消息块的方式,在保证***原有性能的基础上,提高了共享存储空间中内存的使用效率。此外,本申请还通过设置不同模式的消息块,使消息块中数据内容对应的内存空间与消息块本身分离,减少数据拷贝次数,从而提升多核微处理器的使用效率,降低内存空间的浪费。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1示出了本申请一实施例提供的一种共享存储空间的空间分配示意图。如图1所示,该共享存储空间中可以包括消息块缓存区和数据块缓存区。
其中,消息块缓存区中存储有多个消息块。其中,每一消息块可以如图2所示。每一消息块中包括消息头和消息内容。消息头中可以包括消息类型、消息ID、应答模式等参数。该消息头中的消息类型与该消息块的消息内容相关。该消息类型可以包括数据型、共享地址型和自定义地址型。当该消息块的消息类型为数据型时,该消息内容中自带的内存空间用于存放简单指令。该消息内容中自带的内存空间通常较小。该内存空间的具体大小可以根据实际需要进行配置。该共享存储空间中的数据型消息块可以具有相同大小的内存空间。当该消息块的消息类型为共享地址型时,该消息内容中自带的内存空间用于存储数据块的地址。该数据块为共享存储空间中的数据块缓存区中的一个数据块。当该消息块的消息类型为自定义地址型时,该消息内容中自带的内存空间用于存储共享存储空间中发送核的专属存储空间中的内存的内存地址。
该共享存储空间中还可以存储有多个队列。该队列可以根据用途分为通信消息队列和空闲消息队列两种。该共享存储空间中存储有每一消息队列的队列头。当一个消息块被***一个队列时,该队列的指针用于指向该存储于消息块缓存区的消息块。
其中,通信消息队列是用于核间通信的消息队列。每一个发送核和一个接收核可以对应于多个通信消息队列。每一个通信消息队列唯一对应于一个发送核的标识和一个接收核的标识。例如,多核微处理器中可以包括核1、核2和核3。当核1中对应有两个通信消息队列时,通信消息队列A可以用于存储核2发送给核1的消息块,通信消息队列B可以用于存储核3发送给核1的消息块。同样,核2中可以对应有两个通信消息队列时,通信消息队列C可以用于存储核1发送给核2的消息块,通信消息队列D可以用于存储核3发送给核2的消息块。又如,当核1为接收核,核2为发送核时,可以对应于核1中的2个通信消息队列,该两个通信消息队列对应于不同的业务。通信消息队列A可以用于存储核2发送给核1的计算类业务的消息块,通信消息队列B可以用于存储核2发送给核1的判断类业务的消息块。
其中,空闲消息队列是用于存放空闲未被使用的消息块的消息队列。由于在该共享存储空间中包括多种不同类型的消息块,因此,每一类型的消息块可以对应于至少一个空闲消息队列。该空闲消息队列用于存储该类消息块。当发送核需要发送消息时,消息块处理核可以根据发送核需要的目标消息块的类型从对应的空闲消息队列中获取一个消息块。当该目标消息块被释放时,消息块处理核可以将该目标消息块重新***该空闲消息队列中。
该空闲消息队列中还可以存储有空闲数据块队列。由于共享存储空间的数据块缓存区域中可以存储有多种不同大小的数据块,因此,每一种大小的数据块可以对应于至少一个空闲数据块队列。一个空闲数据块队列用于存储一种大小的数据块。当发送核需要使用共享地址型消息块时,消息块处理核可以根据发送核需要的数据块大小,分配该数据块。在消息块处理核分配该数据块时,可以将该数据块的地址写入该共享地址型消息块的消息内容。当接收核获取该消息块后,该接收核可以直接从消息块中获取该数据块的地址,并通过该地址访问该数据块中数据。在接收核对数据块中数据处理过程中,该接收核可以直接通过访问数据块中数据,实现对数据的获取和处理,而不需要将该数据复制到接收核的内存空间中使用。该数据块的使用提高了该接收核的数据处理效率,节省了内存空间的使用。本申请通过使用该预先分配的消息块和数据块,避免了内存空间动态分配过程中导致的内存空间碎片化问题。
此外,共享存储空间中还可以包括分配给该多核微处理器的各个核的专属内存空间。在默认情况下,每一核的专属内存空间仅为该核可以访问。本申请中为了提高处理效率,服务器可以在自定义地址型的消息块中写入发送核的专属内存空间。接收核可以通过该自定义地址型的消息块中的内存地址访问发送核的专属内存空间。
本申请中,以电子设备为执行主体,执行如下实施例的多核微处理器的核间通信方法。具体地,该执行主体可以为电子设备的硬件装置,或者为电子设备中实现下述实施例的软件应用,或者为安装有实现下述实施例的软件应用的计算机可读存储介质,或者为实现下述实施例的软件应用的代码。
图4示出了本申请一实施例提供的一种多核微处理器的核间通信方法的信令交互图。在图1至图3所示实施例的基础上,如图4所示,以多核微处理器发送核、接收核和消息块处理核为执行主体,本实施例的方法可以包括如下步骤:
S101、发送核向消息块处理核发送消息块获取请求,以使消息块处理核根据消息块获取请求从共享存储空间的空闲消息队列中获取目标消息块。
本实施例中,当发送核需要发送消息时,该发送核可以向消息块处理核发送消息块获取请求。该消息块获取请求中包括目标消息块的参数信息。消息块获取请求可以根据该消息块获取请求选择目标消息块。
一种示例中,共享存储空间中包括消息块申请表。该消息块申请表可以如表1所示。该消息块申请表中的每一行用于指示一个通信消息队列消息块的申请参数。该消息块申请表中可以包括队列ID、申请参数和地址参数。
表1
队列ID | 申请参数 | 地址参数 |
0001 | 提交申请 | 0x0 |
0002 | 已分配 | 0x1000xxxx |
0003 | 提交申请 | 0x0 |
其中,队列ID用于指示接收核对应的通信消息队列的队列ID。每一队列ID用于唯一标识一个通信消息队列。每一通信消息队列唯一对应于一个发送核的标识和一个接收核的标识。
其中,申请参数用于指示该通信消息队列的消息块申请情况。该申请参数可以包括“提交申请”和“已分配”。当发送核需要针对一通信消息队列获取一个消息块时,该发送核可以将该通信消息队列对应的申请参数修改为“提交申请”。当消息块处理核完成该通信消息队列的消息块的分配后,消息块处理核可以将该通信消息队列对应的申请参数修改为“已分配”。
其中,地址参数用于指示目标消息块的地址。当未分配目标消息块时,发送核可以将该地址参数设置为空地址。该空地址不指向任意消息块。例如,空地址可以为0x0。当消息块处理核完成消息块的分配后,该地址参数为该目标消息块的地址。
一种示例中,发送核修改该消息块申请表,实现消息块获取请求的发送的具体过程可以包括如下步骤:
步骤1、发送核根据接收核的标识,确定第一通信消息队列。
本步骤中,发送核可以确定其本身的标识。发送核还可以获取接收核的标识。发送核可以根据其本身的标识和接收核的标识,确定其对应的第一通信消息队列,以及该第一通信消息队列的队列ID。该第一通信消息队列中的消息块均为发送核发送到该接收核的消息块。例如,当多核微处理器中包括核1、核2和核3时,该第一通信消息队列中存储的可以为核1发送到核2的消息块。核2发送到核1的消息块可以存储在第二通信消息队列中。核3发送到核2的消息块可以存储在第三通信消息队列中。
一种实现方式中,当一个发送核和一个接收核对应于多个通信消息队列时,该发送核还可以根据业务类型确定本次通信所使用的第一通信消息队列。例如,当多核微处理器中包括核1和核2。第一通信消息队列用于存储核1发送到核2的计算业务的消息块。第四通信消息队列用于存储核1发送到核2的判断业务的消息块。发送核可以根据业务类型,确定当前消息需要使用的通信消息队列。
一种实现方式中,该发送核可以用于同时向多个接收核发送当前消息。该发送核可以根据该多个接收核的标识,确定多个通信消息队列的队列ID。或者,该发送核可以用于向一个接收核的多个业务发送当前消息。该发送核可以根据该多个业务,确定多个通信消息队列的队列ID。
步骤2、发送核将消息块申请表中第一通信消息队列对应的申请参数修改为提交申请。
本步骤中,当确定第一通信消息队列后,该发送核可以将第一通信消息队列中的申请参数修改为“提交申请”。例如,如表1所示,假设第一通信消息队列的队列ID为0001的,发送核可以将该行的申请参数修改为“提交申请”。
一种实现方式中,当该发送核同时向多个接收核发送当前消息,或者,该发送核向一个接收核的多个业务发送当前消息时,该发送核可以将多个通信消息队列的队列ID对应行的申请参数修改为“提交申请”。例如,该发送核可以将0001和0002对应的申请参数修改为“提交申请”。
一种实现方式中,当该发送核在修改0001对应的申请参数之前,获取该0001对应的申请参数为“提交申请”时,该发送核停止修改该申请参数,帮上报异常。当该发送核在修改0001对应的申请参数之前,获取该0001对应的申请参数为“提交申请”时,说明该发送核在上一次通信中企图与接收核通信,但是通信失败。由于当前时刻该发送核需要发送的数据内容,与该发送核修改该申请参数的上一时刻的数据内容不一定相同,因此,该发送核可以直接上报上一次通信异常。即,发送核在修改申请参数时,实际是将该申请参数从“已分配”修改为“提交申请”。
步骤3、发送核将消息块申请表中第一通信消息队列对应的地址参数修改为空地址,空地址不指向任一消息块。
本步骤中,当确定第一通信消息队列后,该发送核可以将第一通信消息队列中的地址参数修改为空地址。该空地址不指向任一消息块。例如,如表1所示,该消息块可以为0x0。
一种示例中,共享存储空间中可以具有不同消息类型的消息块。该消息块申请表中还可以包括设置目标消息块的消息类型的类型参数。包括类型参数的消息块申请表可以如表2所示。
表2
队列ID | 申请参数 | 地址参数 | 类型参数 |
0001 | 提交申请 | 0x0 | 数据型 |
0002 | 已分配 | 0x1000xxxx | 共享地址型 |
0003 | 提交申请 | 0x0 | 自定义地址型 |
因此,发送核修改该消息块申请表,实现消息块获取请求的发送的步骤还包括:
步骤4、发送核根据数据内容的数据长度和预设长度阈值,确定目标消息块的消息类型,将消息块申请表中第一通信消息队列对应的类型参数修改为目标消息块的消息类型。
本步骤中,发送核可以获取当前消息的数据内容。发送核可以根据该数据内容的数据长度,确定目标消息块的类型。当数据长度非常小时,发送核可以使用数据型的消息块直接将该数据内容写入消息块的内存空间中。当数据长度非常长时,为了减少数据的读写,发送核可以使用自定义地址型消息块。发送核可以直接将共享存储空间中该发送核的专属存储空间的内存地址写入该自定义地址型的消息块的内存空间中。此外,发送核还可以使用共享地址型消息块,将数据内容写入共享存储空间的数据块中。当发送核确定该目标消息块的消息类型候,该发送核可以将该目标消息块的消息类型候写入该第一通信消息队列对应的类型参数中。
其中,发送核确定目标消息块的具体过程可以包括如下判断:
当数据内容的数据长度小于等于第一长度阈值时,发送核确定目标消息块的消息类型为数据型。
当数据内容的数据长度大于第一长度阈值,且小于等于第二长度阈值时,发送核确定目标消息块的消息类型为共享地址型。
当数据内容的数据长度大于第二长度阈值时,发送核确定目标消息块的消息类型为自定义地址型。
其中,第一长度阈值和第二长度阈值为经验值,可以根据实际需要设定。
一种实现方式中,共享存储空间中可以包括不同大小的数据块。当发送核确定需要获取共享地址型消息块时,该发送核还可以根据数据内容确定数据块的大小。
一种实现方式中,发送核可以将该数据内容的数据长度添加到该类型参数中。例如,该类型参数可以为“共享地址型-500M”,即该数据长度为500兆。消息块处理核可以根据该类型参数中的数据长度,选择合适的数据块分配给该发送核。
另一种实现方式中,发送核还可以根据数据长度确定数据块的分类,并将该数据块的分类添加到该类型参数中。例如,该类型参数可以为“共享地址型-1”、“共享地址型-2”等。其中,“-1”和“-2”可以对应于不同大小的数据块类型。消息块处理核可以根据“-1”、“-2”等参数,为该发送核分配数据块。
S102、消息块处理核接收发送核发送的消息块获取请求。
本实施例中,消息块处理核可以接收发送核发送的消息块获取请求。该消息块处理核可以获取该消息块获取请求中的参数,并根据该参数从共享存储空间中选择目标消息块。
一种示例中,该消息块处理核可以通过读取该消息块申请表,确定该消息块获取请求。该消息块处理核可以访问该消息块申请表,并顺序读取该消息块申请表中的数据。当该消息块处理核读取到一行的申请参数为“提交申请”、地址参数为空地址时,该消息块处理核确定该行信息对应于一个消息块获取请求。
一种示例中,该消息块处理核可以根据预设频率访问该消息块申请表。例如,该消息块处理核可以每100ms访问一次消息块申请表。
另一种示例中,该消息块处理核可以接收发送核发送的查看提醒。当发送核完成该消息块申请表的修改后,该发送核可以向该消息块处理核发送查看提醒。例如,该查看提醒可以为一个软中断。当该消息块处理核接收到该查看提醒后,该消息块处理核访问该消息块申请表。
S103、消息块处理核根据消息块获取请求,从共享存储空间的空闲消息队列中获取目标消息块。
本实施例中,当该消息块处理核获取到一个消息块获取请求后,该消息块处理核可以根据该消息块获取请求,为该通信消息队列分配消息块。由于在共享存储空间中,空闲的消息块被存储在空闲消息队列中,因此,该消息块处理核可以根据先进先出的原则,从该空闲消息队列中获取一个消息块,该消息块即为目标消息块。
一种示例中,当共享存储空间中包括消息块申请表时,消息块处理核确定该目标消息块的具体过程可以包括如下步骤:
步骤1、消息块处理核读取消息块申请表。
本步骤中,当该消息块处理核访问该消息块申请表时,该消息块处理核可以顺序读取该消息块申请表中的每一行数据。每读取一行数据,该消息块处理核执行一次下述步骤。
一种实现方式中,当该消息块处理核完成为一行数据对应的操作后,该消息块处理核继续读取下一行的数据。该操作可以包括下述步骤。
步骤2、当消息块申请表中存在一通信消息队列的申请参数为提交申请、地址参数为空地址时,消息块处理核从共享存储空间的空闲消息队列中获取目标消息块。
本步骤中,当该消息块处理核读取到一行数据后,该消息块处理核可以获取其中的申请参数和地址参数。当申请参数为“提交申请”、地址参数为空地址时,该消息块处理核确定该行的通信消息队列需要分配消息块。当该行的通信消息队列需要分配消息块时,该消息块处理核继续执行下述步骤。否则,该消息块处理核返回步骤1,并继续读取下一行数据。
一种实现方式中,当该消息块处理核确定该行的通信消息队列需要分配消息块时,该消息块处理核从空闲消息队列中获取一个消息块,并确定该消息块为目标消息块。
步骤3、消息块处理核将消息块申请表中第一通信消息队列对应的地址参数修改为目标消息块的地址。
本步骤中,消息块处理核可以获取该目标消息块的地址。该消息块处理核可以将该目标消息块的地址写入该行的地址参数中。例如,如表1所示,0002对应的地址参数被修改为目标消息块的地址。
步骤4、消息块处理核将消息块申请表中第一通信消息队列对应的申请参数修改为已分配。
本步骤中,该消息块处理核还可以将该行对应的申请参数修改为“已分配”。发送核可以根据该申请参数,确定该通信消息队列的消息块分配成功。进而,该发送核可以根据该地址参数获取该消息块并进行对应的处理。
一种示例中,共享存储空间中可以具有不同消息类型的消息块。该消息块申请表中还可以包括设置目标消息块的消息类型的类型参数。当消息块处理核获取该行的数据后,该小块处理核还可以根据该行的类型参数,选择对应类型的目标消息块。其具体过程还可以包括如下步骤:
步骤5、消息块处理核根据第一通信消息队列对应的类型参数,确定目标消息块的消息类型。
步骤6、消息块处理核根据目标消息块的消息类型,从对应的空闲消息队列中获取一目标消息块。
本步骤中,不同的消息类型可以对应于共享存储空间中不同的空闲消息队列。因此,当消息块处理核获取该消息类型后,该消息块处理核可以确定其对应的空闲消息队列。该消息块处理核可以从该空闲消息队列中获取一个消息块作为目标消息块。
一种示例中,当消息块类型为共享地址型时,该消息块处理核出了需要分配消息块还需要分配数据块。因此,其具体过程还可以包括:
步骤7、消息块处理核从对应的空闲数据块队列中获取一目标数据块。
本步骤中,消息块处理核可以在确定消息块的类型参数为共享地址型时,从该共享存储空间的空闲数据块队列中获取一个数据块作为目标数据块。在后续使用中,发送核可以将数据内容写入该目标数据块中。接收核可以直接通过该目标数据块的地址使用该数据块,并在该目标数据块中数据使用完成后释放该目标数据块。
一种实现方式中,该共享存储空间中可以包括多种不同大小的数据块。每一个空闲数据块队列中可以包括一种大小的数据块。例如,该共享存储空间中可以包括两种大小的数据块。一种数据块可以写入500M的数据。另一种数据块可以写入1GB的数据。
一种实现方式中,消息块处理核可以根据该类型参数获取需要写入的数据长度。消息块处理核可以根据该数据长度确定需要分配的数据块大小。例如,该类型参数可以为“共享地址型-400M”,该消息块处理核可以为该消息块分配一个500M的数据块。
另一种实现方式中,消息块处理核可以根据该类型参数中指示的数据块类型,确定需要分配的数据块的大小。例如,该类型参数可以为“共享地址型-1”,该消息块处理核可以为该消息块分配一个500M的数据块。又如,该类型参数可以为“共享地址型-2”,该消息块处理核可以为该消息块分配一个1GB的数据块。
一种实现方式中,消息块处理核可以根据需要写入的数据长度,为该消息块分配多个数据块。例如,当需要写入的数据长度为400M时,该消息块处理核可以为该消息块分配两个200M的数据块。
步骤8、消息块处理核将目标数据块的地址写入目标消息块对应的内存空间中。
本步骤中,消息块处理核可以将该目标数据块的地址写入该目标消息块的内存空间中。当发送核获取到该目标消息块后,该发送核可以从该目标消息块的内存空间中读取该目标数据块的地址。其后,该发送核可以根据该目标数据块的地址访问该目标数据块。同理,当接收核从该目标消息块的内存空间中读取该目标数据块的地址后,该接收核可以根据该目标数据块的地址访问该目标数据块。
S104、消息块处理核将目标消息块的地址反馈到发送核。
本实施例中,消息块处理核在获取目标消息块后,获取该目标消息块的地址。该消息块处理核可以将该目标消息块的地址反馈到发送核。该发送核可以根据该目标消息块的地址访问该目标消息块。
一种示例中,当共享存储空间中包括消息块申请表时,当该消息块处理核完成对该消息块申请表的修改后,该消息块处理核已经完成该目标消息块的反馈操作。发送核将通过读取该消息块申请表确定该消息块处理核为其分配的目标消息块。
一种示例中,当该发送核修改完成该消息块申请表中的参数后,该发送核可以以固定的频率访问该消息块申请表的该行数据。当该发送核确定该消息块申请表中发送核修改的行对应的申请参数为“已分配”时,该发送核根据该地址参数,获取目标消息块。
另一种示例中,发送核可以接收消息块处理核发送的查看提醒。当该消息块处理核完成该消息块申请表的修改后,该消息块处理核可以向该发送核发送查看提醒。例如,该查看提醒可以为一个软中断。当该发送核接收到该查看提醒后,该发送核可以访问该消息块申请表中通信消息队列对应的行。
S105、发送核根据消息块处理核反馈的目标消息块的地址,将数据内容写入目标消息块中。
本实施例中,发送核确定目标消息块的地址后,可以通过该地址访问该目标消息块。该目标消息块实际存储与共享存储空间的消息块缓存区域中。该目标消息块通过其地址实现被访问、被***第一通信消息队列等操作。
由于消息块具有不同的消息类型,因此,针对不同类型的消息块,发送核可以使用不同的数据写入方法,写入不同的数据内容。
一种示例中,当目标消息块的消息类型为数据型时,发送核可以将数据内容直接写入目标消息块的内存空间中。当消息类型为数据型时,该发送核需要写入的数据内容的数据长度小于第一长度阈值。并且,该数据内容通常较为简单。例如,该数据内容可以为指令。
另一种示例中,当目标消息块的消息类型为共享地址型时,发送核根据目标消息块的内存空间中地址,获取目标数据块的地址。发送核根据该目标数据块的地址访问该目标数据块。发送核将数据内容写入该目标数据块中。
再一种示例中,当目标消息块的消息类型为自定义地址型时,发送核将存储有数据内容的专属存储空间的地址写入目标消息块对应的内存空间中。该数据内容的数据长度通常较长。将该数据内容复制到数据块中耗时较久。接收核可以直接通过该消息块中的地址,访问该发送核的专属存储空间,从而获取该数据内容。该自定义地址型消息块的使用,可以有效减少在数据复制过程中产生的不必要的资源消耗。
S106、发送核将目标消息块***共享存储空间中接收核对应的第一通信消息队列中,以使接收核通过第一通信消息队列读取数据内容。
本实施例中,当发送核将数据内容写入该目标消息块后,该发送核可以将该目标消息块写入第一通信消息队列中。在该第一通信消息队列中,该消息块以尾插法***该第一通信消息队列中。进入该第一通信消息队列的消息块以先进先出的顺序被接收核读取。例如,如图5所示,消息块0至消息块7为共享存储空间的消息块缓存区域中存储的消息块。当发送核确定消息块0为目标消息块时,该发送核可以将该消息块0***第一通信队列中。其后,当发送核再次确定消息块5为目标消息块时,该发送核可以将该消息块5***第一通信队列中。
S107、接收核从共享存储空间的第一通信消息队列中获取目标消息块。
本实施例中,第一通信消息队列中的消息块为其他发送核发送到该接收核的消息。因此,该接收核可以根据预设频率查看该第一通信消息队列中是否存在未被处理的消息块。当该第一通信消息队列中存在未被处理的消息块时,该接收核可以获取该第一通信消息队列中的消息块,并进行处理。在该接收核获取该第一通信队列中的消息块时,遵循先进先出原则,从该第一通信消息队列的头部开始顺序读取该第一通信消息队列中的消息。
其中,该接收核从第一通信消息队列中获取目标消息块的过程可以如图6所示。该接收核的本地消息指针将指向该第一通信消息队列中的第一个消息块。即,该接收核的本地消息指针将指向该消息块0。同时,该第一通信消息队列的队列头将指针指向该第一通信消息队列第二个消息块。即,该第一通信消息队列的队列头将指针指向消息块5。该消息块0脱离该第一通信消息队列。该接收核可以通过该本地消息指针访问该消息块0。
一种示例中,该共享存储空间中,该接收核可以对应于多个通信消息队列。例如,多核微处理器中可以包括核1、核2和核3。其中,核1可以对应于2个通信消息队列。通信消息队列A可以用于存储核2发送给核1的消息块,通信消息队列B可以用于存储核3发送给核1的消息块。
一种示例中,该接收核可以根据预设顺序逐一查看各个通信消息队列。接收核可以在确定一通信消息队列中存在消息块时,从该通信消息队列中获取一个消息块进行处理。当该接收核处理完该消息块后,该接收核可以继续查看下一通信消息队列。例如,通信消息队列A中包括消息块1、消息2和消息块3。通信消息队列B中包括消息块4、消息5和消息块6。该接收核可以获取消息块1并处理后,获取消息块4进行处理。当该接收核完成该消息1和消息块4的处理后,该接收核可以开始下一轮通信消息队列的查看。
一种示例中,该接收核可以根据预设优先级处理各个通信消息队列的消息块。例如,通信消息队列A中包括消息块1、消息2和消息块3。通信消息队列B中包括消息块4、消息5和消息块6。并且,通信消息队列A的优先级高于通信消息队列B。则该接收核可以根据该优先级,优先处理完该通信消息队列A中的消息块1、消息2和消息块3。其后,该接收核继续处理通信消息队列B中的消息块4、消息5和消息块6。
S108、接收核读取并处理目标消息块中的数据内容。
本实施例中,当该接收核的本地消息指针指向该目标消息块所在的节点后,该接收核可以根据该本地消息指针获取该目标消息块。由于该目标消息块可能为不同消息类型的消息块,因此针对不同的消息块可以具有不同的数据内容读取方式。
一种示例中,当目标消息块的消息类型为数据型时,接收核可以通过把数据复制到本地,实现目标消息块的内存空间中的数据内容的获取。由于该数据型消息块中的数据内容较为简单,因此,复制该数据内容对于数据处理影响不大。
另一种示例中,当目标消息块的消息类型为共享地址型和自定义地址型时,接收核可以从目标消息块的内存空间中的获取地址。该地址为目标数据块的地址或者发送核的专属存储空间中的内存地址。接收核可以根据该地址访问对应的内存空间,并从该内存空间中读取对应的数据内容。在该接收核处理该数据内容过程中,该接收核可以不将该数据内容复制到该接收核的本地内存空间中,直接使用该地址对应的内存空间进行读取。
本申请提供的多核微处理器的核间通信方法,当发送核需要发送消息时,该发送核可以向消息块处理核发送消息块获取请求。该消息块处理核可以获取该消息块获取请求中的参数,并根据该参数从共享存储空间中选择目标消息块。消息块处理核在获取目标消息块后,获取该目标消息块的地址。该消息块处理核可以将该目标消息块的地址反馈到发送核。发送核确定目标消息块的地址后,可以通过该地址访问该目标消息块,并将数据内容写入目标消息块中。该发送核可以将该目标消息块写入第一通信消息队列中。接收核从共享存储空间的第一通信消息队列中获取目标消息块。接收核读取并处理目标消息块中的数据内容。本申请中,通过空闲消息队列,实现了消息块缓存区域中消息块的合理利用。本申请,还通过使用数据块和空闲数据块队列,实现了共享存储空间中内存的合理利用,避免出现空间碎片化问题,提高共享存储空间中内存的使用效率。本申请,还通过使用自定义内存地址,减少在通信过程中数据内容的复制,降低该多核微处理器在数据内容的复制中产生的不必要消耗,提高该多核微处理器的数据处理效率。
图7示出了本申请一实施例提供的一种多核微处理器的核间通信方法的信令交互图。在图1至图6实施例的基础上,本实施例还能够释放目标消息块。如图7所示,以多核微处理器发送核、接收核和消息块处理核为执行主体,本实施例的方法可以包括如下步骤:
S201、当目标消息块的消息类型为数据型或者共享地址型时,接收核将消息块释放表中第一通信消息队列对应的释放参数修改为提交释放申请。
本实施例中,当接收核处理完该目标消息块中的数据内容后,该接收核可以释放该目标消息块。当目标消息块的消息类型为数据型或者共享地址型时,该接收核可以直接完成该目标消息块的释放请求操作。该共享存储空间中可以包括消息块释放表。该消息块释放表可以如表3所示。
表3
队列ID | 释放参数 | 地址参数 |
0001 | 提交释放申请 | 0x1000xxxx |
0002 | 已经回收 | 0x0 |
0003 | 提交释放申请 | 0x1000xxxx |
当该接收核确定该消息块需要被释放时,该接收核可以根据该第一通信消息队列的队列ID,将该消息块释放表中该队列ID对应行中的释放参数修改为“提交释放申请”。例如,如队列0001所示。
S202、接收核将消息块释放表中第一通信消息队列对应的地址参数修改为目标消息块对应的地址。
本实施例中,当接收核修改完该第一通信消息队列的队列ID对应行中的释放参数后,该接收核还需要将该行的地址参数修改为该目标消息块的地址。
S203、当消息块处理核获取消息块释放请求时,消息块处理核根据消息块释放请求将目标消息块重新***共享存储空间的空闲消息队列中。
本实施例中,共享存储空间中包括消息块释放表,消息块释放表中每一行的用于指示一个通信消息队列消息块释放情况。
一种示例中,该消息块处理核可以根据预设频率访问消息块释放表。例如,该消息块处理核可以每100ms访问一次消息块释放表。
另一种示例中,该消息块处理核可以接收接收核发送的查看提醒。当接收核完成该消息块释放表的修改后,该接收核可以向该消息块处理核发送查看提醒。例如,该查看提醒可以为一个软中断。当该消息块处理核接收到该查看提醒后,该消息块处理核访问该消息块释放表。
当消息块处理核读取该消息块释放表后,该消息块处理核可以顺序读取该消息块申请表中的每一行数据。针对一行数据,消息块处理核可以判断该行的释放参数是否为“提交释放申请”。当该行的参数为“提交释放申请”时,该消息块处理核可以根据地址参数中指示的目标消息块的地址,获取该目标消息块。该消息块处理核可以将该目标消息块***共享存储空间的空闲消息队列中。该消息块处理核可以采用尾插法将该目标消息块***该空闲消息队列的队尾。
一种示例中,该消息块处理核还可以根据该目标消息块的消息类型,将该目标消息块***不同的空闲消息队列中。
一种示例中,当该消息块处理核完成该行的目标消息块的释放后,该消息块处理核还需要修改该消息块释放表中的信息。该修改过程具体可以包括如下步骤:
步骤1、消息块处理核将消息块释放表中第一通信消息队列对应的释放参数修改为已释放。
本步骤中,该消息块处理核可以将该行对应的释放参数修改为“已释放”。
步骤2、消息块处理核将消息块释放表中第一通信消息队列对应的地址参数修改为空地址。
本步骤中,该消息块处理核可以将该行对应的地址参数修改为空地址。该空地址可以为0x0。
一种示例中,当目标消息块的消息类型为共享地址型时,该释放过程还包括如下步骤:
步骤3、消息块处理核根据目标消息块的内存空间中地址,确定目标数据块。
本步骤中,该消息块处理核还需要从该目标消息块的内存空间中获取目标数据块的地址。当该消息块处理核从该目标消息块的内存空间中获取该目标数据块的地址后,该消息块处理核还可以将该目标消息块的内存空间中的内容删除。
步骤4、消息块处理核将目标数据块重新***共享存储空间的空闲数据块队列中。
本步骤中,该消息块处理核还可以将该目标数据块***共享存储空间中的空闲数据块队列中。
当消息块处理核完成一行数据的处理后,该消息块处理核可以读取下一行数据,并对下一行数据进行处理。一次消息块释放表的读取将该消息块释放表中每一行均被读取后结束。
S204、当目标消息块的消息类型为自定义地址型时,接收核在目标消息块的消息头中添加释放标记,释放标记用于指示目标消息块已经完成使用。
本实施例中,当接收核处理完该目标消息块中的数据内容后,该接收核需要释放该目标消息块。但是,当该目标消息块的消息类型为自定义地址型时,该目标消息块的内存空间中的地址指向发送核的专属存储空间。该发送核的专属存储空间中的内存空间无法由消息块处理核进行释放。并且,该发送核可能需要重新利用该专属存储空间中的该内存空间。因此,当目标消息块的消息类型为自定义地址型时,接收核在完成该消息块中数据内容的处理后,可以在该消息块的消息头中添加释放标记。该释放标记可以为ACK标记。该释放标记用于指示目标消息块以及该目标消息块中的地址所对应的专属存储空间已经完成使用。
S205、接收核将目标消息块***共享存储空间中发送核对应的第二通信消息队列中,以使发送核在读取到目标消息块时释放目标消息块。
本实施例中,接收核可以根据发送核的标识和其本身的标识确定第二通信消息队列。该第二通信消息队列为共享存储空间中存储的发送核对应的通信消息队列。接收核可以将该目标消息块***第二通信消息队列中。
S206、当发送核从共享存储空间中该发送核对应的第二通信消息队列中读取到目标消息块时,释放该地址对应的专属存储空间中的内存。
本实施例中,第二通信消息队列中的消息块为其他核发送到该发送核的消息。因此,该发送核可以根据预设频率查看该第二通信消息队列中是否存在未被处理的消息块。当该第二通信消息队列中存在未被处理的消息块时,该发送核可以获取该第二通信消息队列中的消息块,并进行处理。在该发送核获取该第二通信队列中的消息块时,遵循先进先出原则,从该第二通信消息队列的头部开始顺序读取该第二通信消息队列中的消息。当该发送核获取到该目标消息块,并从该目标消息块的消息头中读取到释放标记时,该发送核可以从该目标消息块中获取该专属存储空间中内存空间的地址。该发送核可以根据该专属存储空间中内存空间的地址释放该专属存储空间中的内存空间,以使该专属存储空间中的该内存空间可以重新被使用。该发送核还可以删除该目标消息块的内存空间中的地址。
S207、发送核生成并发送消息块释放请求,以使消息块处理核将目标消息块重新***共享存储空间的空闲消息队列中,以及以使发送核得以继续利用专属数据块的内存空间。
本实施例中,发送核还可以生成消息块释放请求,并向消息块处理核发送该消息块释放请求,以使该消息块处理核释放该消息块。
一种示例中,当共享存储空间中包括消息块释放表时,该发送核还可以执行如下步骤,以完成该消息块释放请求的生成:
步骤1、发送核将消息块释放表中第一通信消息队列对应的释放参数修改为提交释放申请。
步骤2、发送核将消息块释放表中第一通信消息队列对应的地址参数修改为目标消息块对应的地址。
S208、当消息块处理核获取消息块释放请求时,消息块处理核根据消息块释放请求将目标消息块重新***共享存储空间的空闲消息队列中。
其中,步骤S208与上述步骤S203的实现方式相同,此处不再赘述。
本申请提供的多核微处理器的核间通信方法,当接收核处理完该目标消息块中的数据内容后,该接收核可以释放该目标消息块。当目标消息块的消息类型为数据型或者共享地址型时,该接收核可以根据该第一通信消息队列的队列ID,将该消息块释放表中该队列ID对应行中的释放参数修改为“提交释放申请”。该接收核还需要将该行的地址参数修改为该目标消息块的地址。消息块处理核可以判断该行的释放参数是否为“提交释放申请”。当该行的参数为“提交释放申请”时,该消息块处理核可以根据地址参数中指示的目标消息块的地址,获取该目标消息块。该消息块处理核可以将该目标消息块***共享存储空间的空闲消息队列中。当该目标消息块的消息类型为自定义地址型时接收核在完成该消息块中数据内容的处理后,可以在该消息块的消息头中添加释放标记。接收核将目标消息块***共享存储空间中发送核对应的第二通信消息队列中,以使发送核在读取到目标消息块时释放目标消息块。当发送核从共享存储空间中该发送核对应的第二通信消息队列中读取到目标消息块时,释放该地址对应的发送核的专属存储空间中的内存空间。发送核还可以生成消息块释放请求,并向消息块处理核发送该消息块释放请求,以使该消息块处理核释放该消息块。当消息块处理核获取消息块释放请求时,消息块处理核根据消息块释放请求将目标消息块重新***共享存储空间的空闲消息队列中。本申请中,通过释放该消息块、数据块和发送核的专属存储空间中的内存空间,实现消息块、数据块和发送核的专属存储空间中的内存空间的重复利用,提高了内存空间的利用率。
图8示出了本申请实施例提供的一种发送核的硬件结构示意图。如图8所示,该发送核10,用于实现上述任一方法实施例中对应于发送核的操作,本实施例的发送核10可以包括:存储器11,处理器12。
存储器11,用于存储计算机程序。该存储器11可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
处理器12,用于执行存储器存储的计算机程序,以实现上述实施例中的多核微处理器的核间通信方法。具体可以参见前述方法实施例中的相关描述。该处理器12可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可选地,存储器11既可以是独立的,也可以跟处理器12集成在一起。
当存储器11是独立于处理器12之外的器件时,发送核10还可以包括总线13。该总线13用于连接存储器11和处理器12。该总线13可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本实施例提供的发送核可用于执行上述的多核微处理器的核间通信方法,其实现方式和技术效果类似,本实施例此处不再赘述。
图9示出了本申请实施例提供的一种消息块处理核的硬件结构示意图。如图9所示,该消息块处理核20,用于实现上述任一方法实施例中对应于发送核的操作,本实施例的消息块处理核20可以包括:存储器21,处理器22。
存储器21,用于存储计算机程序。该存储器21可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
处理器22,用于执行存储器存储的计算机程序,以实现上述实施例中的多核微处理器的核间通信方法。具体可以参见前述方法实施例中的相关描述。该处理器22可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。
当存储器21是独立于处理器22之外的器件时,消息块处理核20还可以包括总线23。该总线23用于连接存储器21和处理器22。该总线23可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本实施例提供的消息块处理核可用于执行上述的多核微处理器的核间通信方法,其实现方式和技术效果类似,本实施例此处不再赘述。
图10示出了本申请实施例提供的一种接收核的硬件结构示意图。如图10所示,该接收核30,用于实现上述任一方法实施例中对应于发送核的操作,本实施例的接收核30可以包括:存储器31,处理器32。
存储器31,用于存储计算机程序。该存储器31可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
处理器32,用于执行存储器存储的计算机程序,以实现上述实施例中的多核微处理器的核间通信方法。具体可以参见前述方法实施例中的相关描述。该处理器32可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可选地,存储器31既可以是独立的,也可以跟处理器32集成在一起。
当存储器31是独立于处理器32之外的器件时,接收核30还可以包括总线33。该总线33用于连接存储器31和处理器32。该总线33可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本实施例提供的接收核可用于执行上述的多核微处理器的核间通信方法,其实现方式和技术效果类似,本实施例此处不再赘述。
图11示出了本申请实施例提供的一种多核微处理器的硬件结构示意图。如图11所示,多核微处理器40中包括共享存储空间41、至少一个如图8所示的发送核42、至少一个如图10所示的接收核43和一个如图9所示的消息块处理核44。其中,发送核和接收核仅针对一条消息发送和接收定义。当多核微处理器中包括核1和核2时,当核1需要发送消息到核2时,核1为发送核,核2为接收核。当核2需要发送消息到核1时,核2为发送核,核1为接收核。其中,消息块处理核用于固定处理共享存储空间中消息块的分配与释放。该消息块处理核不可以作为消息发送方或者消息接收方。
本实施例提供的多核微处理器可用于执行上述的多核微处理器的核间通信方法,其实现方式和技术效果类似,本实施例此处不再赘述。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
其中,计算机可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,计算机可读存储介质耦合至处理器,从而使处理器能够从该计算机可读存储介质读取信息,且可向该计算机可读存储介质写入信息。当然,计算机可读存储介质也可以是处理器的组成部分。处理器和计算机可读存储介质可以位于专用集成电路(Application Specific Integrated Circuits,ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和计算机可读存储介质也可以作为分立组件存在于通信设备中。
具体地,该计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable read-only memory,PROM),只读存储器(Read-OnlyMemory,ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
本申请还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质中读取该计算机程序,至少一个处理器执行该计算机程序使得设备实施上述的各种实施方式提供的方法。
本申请实施例还提供一种芯片,该芯片包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片的设备执行如上各种可能的实施方式中的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
其中,各个模块可以是物理上分开的,例如安装于一个的设备的不同位置,或者安装于不同的设备上,或者分布到多个网络单元上,或者分布到多个处理器上。各个模块也可以是集成在一起的,例如,安装于同一个设备中,或者,集成在一套代码中。各个模块可以以硬件的形式存在,或者也可以以软件的形式存在,或者也可以采用软件加硬件的形式实现。本申请可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
当各个模块以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。
应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (18)
1.一种多核微处理器的核间通信方法,其特征在于,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述方法应用于所述发送核,所述方法包括:
所述发送核向所述消息块处理核发送消息块获取请求,以使所述消息块处理核根据所述消息块获取请求从所述共享存储空间的空闲消息队列中获取目标消息块;
所述发送核根据所述消息块处理核反馈的所述目标消息块的地址,将数据内容写入所述目标消息块中;
所述发送核将所述目标消息块***所述共享存储空间中所述接收核对应的第一通信消息队列中,以使所述接收核通过所述第一通信消息队列读取所述数据内容;
当目标消息块的消息类型为数据型时,所述将数据内容写入所述目标消息块中,包括:
所述发送核将所述数据内容写入所述目标消息块的内存空间中;
当目标消息块的消息类型为共享地址型时,所述将数据内容写入所述目标消息块中,包括:
所述发送核根据所述目标消息块的内存空间中地址,确定目标数据块;
所述发送核将所述数据内容写入所述目标数据块;
当目标消息块的消息类型为自定义地址型时,所述将数据内容写入所述目标消息块中,包括:
所述发送核将存储有所述数据内容的内存地址写入所述目标消息块对应的内存空间中,所述内存地址指向所述共享存储空间中所述发送核的专属存储空间中的内存。
2.根据权利要求1所述的方法,其特征在于,所述共享存储空间中包括消息块申请表,所述消息块申请表中的一行用于指示一个通信消息队列消息块的申请参数,每一通信消息队列唯一对应于一个发送核的标识和一个接收核的标识;
所述向所述消息块处理核发送消息块获取请求,包括:
所述发送核根据所述接收核的标识,确定所述第一通信消息队列;
所述发送核将所述消息块申请表中所述第一通信消息队列对应的申请参数修改为提交申请;
所述发送核将所述消息块申请表中所述第一通信消息队列对应的地址参数修改为空地址,所述空地址不指向任一消息块。
3.根据权利要求2所述的方法,其特征在于,所述方法,还包括:
所述发送核根据所述数据内容的数据长度和预设长度阈值,确定目标消息块的消息类型,并将所述消息块申请表中所述第一通信消息队列对应的类型参数修改为所述目标消息块的消息类型。
4.根据权利要求3所述的方法,其特征在于,所述根据所述数据内容的数据长度和预设长度阈值,确定目标消息块的消息类型,包括:
当所述数据内容的数据长度小于等于第一长度阈值时,所述发送核确定所述目标消息块的消息类型为数据型;
当所述数据内容的数据长度大于第一长度阈值,且小于等于第二长度阈值时,所述发送核确定所述目标消息块的消息类型为共享地址型;
当所述数据内容的数据长度大于所述第二长度阈值时,所述发送核确定所述目标消息块的消息类型为自定义地址型。
5.根据权利要求1所述的方法,其特征在于,当目标消息块的消息类型为自定义地址型时,所述方法,还包括:
当所述发送核从所述共享存储空间中所述发送核对应的第二通信消息队列中读取到所述目标消息块时,释放所述内存地址指向的内存空间;
所述发送核生成并发送消息块释放请求,以使所述消息块处理核将所述目标消息块重新***所述共享存储空间的空闲消息队列中,以及以使所述发送核得以继续利用所述内存地址指向的所述内存空间。
6.根据权利要求5所述的方法,其特征在于,所述共享存储空间中包括消息块释放表,所述消息块释放表中每一行的用于指示一个通信消息队列消息块的释放参数;
所述生成并发送消息块释放请求,包括:
所述发送核将所述消息块释放表中所述第一通信消息队列对应的释放参数修改为提交释放申请;
所述发送核将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为所述目标消息块对应的地址。
7.一种多核微处理器的核间通信方法,其特征在于,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述方法应用于消息块处理核,所述方法包括:
所述消息块处理核接收所述发送核发送的消息块获取请求;
所述消息块处理核根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取目标消息块;
所述消息块处理核将所述目标消息块的地址反馈到发送核,所述目标消息块的地址用于使发送核将数据内容写入所述目标消息块中,并将所述目标消息块***所述共享存储空间中所述接收核对应的第一通信消息队列中,以使所述接收核通过所述第一通信消息队列读取所述数据内容;
所述方法,还包括:
当所述消息块处理核获取消息块释放请求时,所述消息块处理核根据所述消息块释放请求将所述目标消息块重新***所述共享存储空间的空闲消息队列中;
当目标消息块的消息类型为共享地址型时,所述方法,还包括:
所述消息块处理核根据所述目标消息块的内存空间中地址,确定目标数据块;
所述消息块处理核将所述目标数据块重新***所述共享存储空间的空闲数据块队列中。
8.根据权利要求7所述的方法,其特征在于,所述共享存储空间中包括消息块申请表,所述消息块申请表中每一行用于指示一个通信消息队列消息块申请参数,所述消息块处理核根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取目标消息块,包括:
所述消息块处理核读取所述消息块申请表;
当所述消息块申请表中存在一通信消息队列的申请参数为提交申请、地址参数为空地址时,所述消息块处理核从所述共享存储空间的空闲消息队列中获取目标消息块;
所述消息块处理核将所述消息块申请表中第一通信消息队列对应的地址参数修改为目标消息块的地址;
所述消息块处理核将所述消息块申请表中所述第一通信消息队列对应的申请参数修改为已分配。
9.根据权利要求8所述的方法,其特征在于,所述共享存储空间中包括至少一个空闲消息队列,每一所述空闲消息队列中的消息块对应于一种消息块类型;
所述从所述共享存储空间的空闲消息队列中获取目标消息块,包括:
所述消息块处理核根据所述第一通信消息队列对应的类型参数,确定目标消息块的消息类型;
所述消息块处理核根据所述目标消息块的消息类型,从对应的空闲消息队列中获取一目标消息块。
10.根据权利要求9所述的方法,其特征在于,当目标消息块的消息类型为共享地址型时,所述方法,还包括:
所述消息块处理核从对应的空闲数据块队列中获取一目标数据块;
所述消息块处理核将所述目标数据块的地址写入所述目标消息块对应的内存空间中。
11.根据权利要求7所述的方法,其特征在于,所述共享存储空间中包括消息块释放表,所述消息块释放表中每一行的用于指示一个通信消息队列消息块申请情况;所述方法,还包括:
所述消息块处理核将所述消息块释放表中第一通信消息队列对应的释放参数修改为已释放;
所述消息块处理核将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为空地址。
12.一种多核微处理器的核间通信方法,其特征在于,多核微处理器中包括至少一个发送核、至少一个接收核、一个消息块处理核和共享存储空间,所述方法应用于接收核,所述方法包括:
所述接收核从所述共享存储空间的第一通信消息队列中获取目标消息块;其中,所述目标消息块是所述消息块处理核根据所述消息块获取请求,从所述共享存储空间的空闲消息队列中获取的,所述消息块获取请求是所述发送核发送的;所述目标消息块的地址是所述消息块处理核向所述发送核发送的,所述目标消息块的地址用于使发送核将数据内容写入所述目标消息块中;
所述接收核读取并处理所述目标消息块中的数据内容;
所述共享存储空间中的消息块类型包括数据型、共享地址型和自定义地址型;
当目标消息块的消息类型为数据型时,所述读取并处理所述目标消息块中的数据内容,包括:
所述接收核获取所述目标消息块的内存空间中的数据内容;
当目标消息块的消息类型为共享地址型和自定义地址型时,所述读取并处理所述目标消息块中的数据内容,包括:
所述接收核获取所述目标消息块的内存空间中的地址,所述地址为目标数据块地址或者所述共享存储空间中所述发送核的专属存储空间中的内存地址;
所述接收核读取并处理所述地址对应的数据内容。
13.根据权利要求12所述的方法,其特征在于,当目标消息块的消息类型为数据型或者共享地址型时,所述方法,还包括:
所述接收核将消息块释放表中所述第一通信消息队列对应的释放参数修改为提交释放申请;
所述接收核将所述消息块释放表中所述第一通信消息队列对应的地址参数修改为所述目标消息块对应的地址。
14.根据权利要求12所述的方法,其特征在于,当目标消息块的消息类型为自定义地址型时,所述方法,还包括:
所述接收核在所述目标消息块的消息头中添加释放标记,所述释放标记用于指示所述目标消息块已经完成使用;
所述接收核将所述目标消息块***所述共享存储空间中所述发送核对应的第二通信消息队列中,以使所述发送核在读取到所述目标消息块时释放所述目标消息块和所述内存地址对应的内存空间。
15.一种发送核,其特征在于,所述发送核,包括:存储器,处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序,实现如权利要求1-6中任意一项所述的多核微处理器的核间通信方法。
16.一种消息块处理核,其特征在于,所述消息块处理核,包括:存储器,处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序,实现如权利要求7-11中任意一项所述的多核微处理器的核间通信方法。
17.一种接收核,其特征在于,所述接收核,包括:存储器,处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序,实现如权利要求12-14中任意一项所述的多核微处理器的核间通信方法。
18.一种多核微处理器,其特征在于,所述多核微处理器包括共享存储空间、至少一个如权利要求15所示的发送核、至少一个如权利要求17所示的接收核和一个如权利要求16所示的消息块处理核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111461924.8A CN114253741B (zh) | 2021-12-02 | 2021-12-02 | 多核微处理器的核间通信方法和多核微处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111461924.8A CN114253741B (zh) | 2021-12-02 | 2021-12-02 | 多核微处理器的核间通信方法和多核微处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114253741A CN114253741A (zh) | 2022-03-29 |
CN114253741B true CN114253741B (zh) | 2022-11-08 |
Family
ID=80793874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111461924.8A Active CN114253741B (zh) | 2021-12-02 | 2021-12-02 | 多核微处理器的核间通信方法和多核微处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114253741B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019024727A1 (zh) * | 2017-07-31 | 2019-02-07 | 华为技术有限公司 | 消息处理方法以及基站 |
CN111427816A (zh) * | 2020-03-04 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种amp***核间通讯方法、计算机设备及存储介质 |
CN112328533A (zh) * | 2020-11-09 | 2021-02-05 | 哲库科技(上海)有限公司 | 多核处理***及其核间通信方法、存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8279886B2 (en) * | 2004-12-30 | 2012-10-02 | Intel Corporation | Dataport and methods thereof |
CN100458757C (zh) * | 2005-07-28 | 2009-02-04 | 大唐移动通信设备有限公司 | 嵌入式实时操作***中多核处理器的核间通信方法及装置 |
US8155134B2 (en) * | 2007-09-29 | 2012-04-10 | Applied Micro Circuits Corporation | System-on-chip communication manager |
CN101504617B (zh) * | 2009-03-23 | 2011-05-11 | 华为技术有限公司 | 一种基于处理器共享内存的数据发送方法及装置 |
US20130160028A1 (en) * | 2011-12-14 | 2013-06-20 | John E. Black | Method and apparatus for low latency communication and synchronization for multi-thread applications |
CN106095604A (zh) * | 2016-06-21 | 2016-11-09 | 京信通信技术(广州)有限公司 | 一种多核处理器的核间通信方法及装置 |
US10210095B2 (en) * | 2017-07-06 | 2019-02-19 | International Business Machines Corporation | Configurable hardware queue management and address translation |
CN112698959A (zh) * | 2019-10-23 | 2021-04-23 | 普天信息技术有限公司 | 一种多核通信方法和装置 |
CN112486681A (zh) * | 2020-11-26 | 2021-03-12 | 迈普通信技术股份有限公司 | 通信方法及网络设备 |
-
2021
- 2021-12-02 CN CN202111461924.8A patent/CN114253741B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019024727A1 (zh) * | 2017-07-31 | 2019-02-07 | 华为技术有限公司 | 消息处理方法以及基站 |
CN111427816A (zh) * | 2020-03-04 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种amp***核间通讯方法、计算机设备及存储介质 |
CN112328533A (zh) * | 2020-11-09 | 2021-02-05 | 哲库科技(上海)有限公司 | 多核处理***及其核间通信方法、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114253741A (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112328533A (zh) | 多核处理***及其核间通信方法、存储介质 | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
CN112698959A (zh) | 一种多核通信方法和装置 | |
CN111949568A (zh) | 一种报文处理方法、装置及网络芯片 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN115357540B (zh) | 存储***及其计算存储处理器、固体硬盘和数据读写方法 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN114710467A (zh) | Ip地址存储方法、装置和硬件网关 | |
CN112040001A (zh) | 一种基于分布式存储的请求处理方法及装置 | |
CN115827506A (zh) | 数据写入方法、数据读取方法、装置、处理核和处理器 | |
CN114253741B (zh) | 多核微处理器的核间通信方法和多核微处理器 | |
CN112328520B (zh) | 一种pcie设备、基于pcie设备的数据传输方法和*** | |
US11972110B2 (en) | Storage device and storage system | |
CN112328519B (zh) | 一种pcie设备、基于sr-iov的数据包有序传输方法和*** | |
CN116009770A (zh) | 读响应电路、方法、数据传输***及相关设备 | |
CN210804421U (zh) | 一种服务器*** | |
CN115168012A (zh) | 一种线程池并发线程数确定方法及相关产品 | |
CN110673931A (zh) | 单证合成的分布式计算方法、单证合成***及其控制装置 | |
US11928345B1 (en) | Method for efficiently processing instructions in a computational storage device | |
CN113419988B (zh) | 异构多核数据的传输方法、装置、设备及存储介质 | |
CN117331511B (zh) | 一种存储设备及其数据传输方法、装置、***和存储介质 | |
CN109474543B (zh) | 一种队列资源管理方法、装置及存储介质 | |
CN117648128A (zh) | 指令的分配方法、装置、电子设备及存储介质 | |
CN118113490A (zh) | 用于设备的内存管理方法、装置、设备、存储介质及车辆 | |
CN111124987B (zh) | 一种基于pcie的数据传输控制***和方法 |
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 |