CN103324599A - 处理器间通信方法与***级芯片 - Google Patents
处理器间通信方法与***级芯片 Download PDFInfo
- Publication number
- CN103324599A CN103324599A CN2013102185188A CN201310218518A CN103324599A CN 103324599 A CN103324599 A CN 103324599A CN 2013102185188 A CN2013102185188 A CN 2013102185188A CN 201310218518 A CN201310218518 A CN 201310218518A CN 103324599 A CN103324599 A CN 103324599A
- Authority
- CN
- China
- Prior art keywords
- mailbox
- information
- processor
- passage
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供了一种处理器间通信方法与SOC,其中,所述方法包括:SOC中的第一处理器通过mailbox中的至少一个通道向存储空间写入信息;在写入信息完成后,配置mailbox的通道占用信息,并向第二处理器发送请求中断,致使第二处理器接收请求中断后,根据配置的mailbox的通道占用信息,确定写入信息的mailbox中的通道,并从确定的通道对应的存储空间中读取信息;接收第二处理器读取完信息并更新mailbox的通道占用信息后发送的处理完成中断,并根据更新后的mailbox的通道占用信息,解除对mailbox中已完成信息读取的通道的占用。通过本发明,提高了mailbox资源利用率。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种处理器间的通信方法与SOC(System On Chip,***级芯片)。
背景技术
SOC也称为***级芯片或者片上***,可以理解为包含了微处理器/微控制器、存储器以及其他专用功能逻辑的集成电路。随着芯片集成度的不断提高,SOC芯片设计中越来越多地集成多个处理器并行工作,以满足人们日益增长的数据处理能力的要求。
比如,一个典型的SOC中的无线通信处理器,除应用CPU以外,通常还需要集成基带相关的MCU(Micro Control Unit,微控制单元)、DSP(DigitalSignal Processor,数字信号处理器)、包括中央CPU和图形图像处理GPU(Graphic Processing Unit,图形处理器)的多媒体处理器等等。在实际工作中,这些不同的处理器之间常常需要协同工作,交换数据和控制信息,因此需要一个较好的机制来实现处理器之间的信息交互,目前的***设计中通常使用mailbox(邮箱)完成。
传统的mailbox结构中,通常不支持多通道,每个mailbox只能携带一组信息,这使得当两个处理器的不同进程之间通信时,需要使用不同的mailbox,进程通信的优先级难以保证。并且,相对于有限的资源,需要为每个mailbox指定源处理器ID和目的处理器ID,也即,为每个mailbox固定源处理器和目的处理器,而mailbox的结构决定了其本身消耗大量资源,设计需要限定mailbox个数。此外,执行效率受处理器信息量影响,处理器在使用mailbox之前需要先申请,如果mailbox资源被使用完,则处理器需要查询等待。而且,不易于扩展,当***增加处理器时,需要对mailbox的结构和设计进行较大的修改。
发明内容
本发明提供了一种处理器间的通信方法与SOC,以解决上述问题至少之一。
为了解决上述问题,本发明公开了一种处理器间通信方法,包括:***级芯片中的第一处理器通过与所述第一处理器对应的邮箱mailbox中的至少一个通道向对应的存储空间写入信息,其中,所述mailbox是所述***级芯片为所述第一处理器与所述***级芯片中的第二处理器之间的通信所分配的,每个mailbox包括多个通道;所述第一处理器在写入所述信息完成后,配置所述mailbox的通道占用信息,并向所述第二处理器发送请求中断,致使所述第二处理器接收所述请求中断后,根据配置的所述mailbox的通道占用信息,确定写入所述信息的mailbox中的通道,并从确定的所述通道对应的存储空间中读取信息;所述第一处理器接收所述第二处理器读取完所述信息并更新所述mailbox的通道占用信息后发送的处理完成中断,并根据更新后的所述mailbox的通道占用信息,解除对所述mailbox中已完成信息读取的通道的占用。
优选地,所述第一处理器配置所述mailbox的通道占用信息的步骤包括:所述第一处理器通过配置所述mailbox的、与所述第一处理器对应的寄存器的信息,来配置所述mailbox的通道占用信息;则,所述第二处理器更新所述mailbox的通道占用信息的步骤包括:所述第二处理器通过配置所述mailbox的、与所述第二处理器对应的寄存器的信息,来更新所述mailbox的通道占用信息。
优选地,所述第一处理器配置所述mailbox的、与所述第一处理器对应的寄存器的信息的步骤包括:所述第一处理器设置所述mailbox的发起请求寄存器中、与写入信息的通道相对应的比特位,以请求所述写入信息的通道的资源,其中,所述发起请求寄存器用于申请所述至少一个通道的资源;根据所述发起请求寄存器的设置,设置所述mailbox的状态寄存器中、与写入信息的通道相对应的比特位,以指示所述通道已被占用,其中,所述状态寄存器用于指示所述至少一个通道的状态。
优选地,所述第二处理器根据配置的所述mailbox的通道占用信息,确定写入所述信息的mailbox中的通道的步骤包括:所述第二处理器根据所述mailbox的状态寄存器的比特位的设置确定写入所述信息的mailbox中通道。
优选地,所述第二处理器配置所述mailbox的、与所述第二处理器对应的寄存器的信息的步骤包括:所述第二处理器设置所述mailbox的处理完成寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道的信息已读取完成,其中,所述处理完成寄存器用于指示所述多个通道的信息读取完成;所述第二处理器根据所述处理完成寄存器的设置,设置所述mailbox的状态寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道解除占用。
优选地,所述第一处理器根据更新后的所述mailbox的通道占用信息,解除对所述mailbox中已完成信息读取的通道的占用的步骤包括:所述第一处理器根据所述mailbox的状态寄存器的比特位的设置,确定所述mailbox中已完成信息读取的通道;解除对所述mailbox中已完成信息读取的通道的占用。
优选地,所述状态寄存器的比特位的个数、所述发起请求寄存器的比特位的个数、和所述处理完成寄存器的比特位的个数,均与所述mailbox的通道的个数相同。
为了解决上述问题,本发明还公开了一种***级芯片,包括:第一处理器、第二处理器和邮箱mailbox;其中,所述第一处理器包括:写入模块,用于通过与所述第一处理器对应的邮箱mailbox中的至少一个通道向对应的存储空间写入信息,其中,所述mailbox是所述***级芯片为所述第一处理器与所述***级芯片中的第二处理器之间的通信所分配的,每个mailbox包括多个通道;请求中断模块,用于在写入所述信息完成后,配置所述mailbox的通道占用信息,并向所述第二处理器发送请求中断,致使所述第二处理器接收所述请求中断后,根据配置的所述mailbox的通道占用信息,确定写入所述信息的mailbox中的通道,并从确定的所述通道对应的存储空间中读取信息;解除模块,用于接收所述第二处理器读取完所述信息并更新所述mailbox的通道占用信息后发送的处理完成中断,并根据更新后的所述mailbox的通道占用信息,解除对所述mailbox中已完成信息读取的通道的占用。
优选地,所述请求中断模块,具体用于在写入所述信息完成后,通过配置所述mailbox的、与所述第一处理器对应的寄存器的信息,来配置所述mailbox的通道占用信息,并向所述第二处理器发送请求中断;所述第二处理器,用于读取完所述信息并通过配置所述mailbox的、与所述第二处理器对应的寄存器的信息,来更新所述mailbox的通道占用信息。
优选地,所述请求中断模块,具体用于在写入所述信息完成后,设置所述mailbox的发起请求寄存器中、与写入信息的通道相对应的比特位,以请求所述写入信息的通道的资源,其中,所述发起请求寄存器用于申请所述至少一个通道的资源;并,根据所述发起请求寄存器的设置,设置所述mailbox的状态寄存器中、与写入信息的通道相对应的比特位,以指示所述通道已被占用,其中,所述状态寄存器用于指示所述至少一个通道的状态。
优选地,所述第二处理器,还用于根据所述mailbox的状态寄存器的比特位的设置确定写入所述信息的mailbox中通道。
优选地,所述第二处理器,具体用于设置所述mailbox的处理完成寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道的信息已读取完成,其中,所述处理完成寄存器用于指示所述多个通道的信息读取完成;并根据所述处理完成寄存器的设置,设置所述mailbox的状态寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道解除占用。
优选地,所述解除模块,具体用于根据所述mailbox的状态寄存器的比特位的设置,确定所述mailbox中已完成信息读取的通道;解除对所述mailbox中已完成信息读取的通道的占用。
与现有技术相比,本发明具有以下优点:
本发明中,SOC的mailbox包括多个通道;并且,在有处理器需要使用mailbox通信时,为处理器灵活指定可用的mailbox;mailbox的每个通道都对应有相应的存储空间,在处理器进行通信时,通过确定被占用的通道确定相应的存储空间,进而对该存储空间的信息进行相应的读写操作。因本发明的mailbox支持多通道,可以使两个处理器之间使用同一个mailbox进行进程通信,从而可以使通信的处理器之间明确区分出使用不同信息的进程,保证进程通信的优先级;因本发明中,处理器每次使用的mailbox由SOC灵活分配,每个mailbox不固定使用的处理器,因而节约了mailbox资源,提高了mailbox使用灵活性;因处理器每次使用的mailbox由SOC灵活分配,只要有闲置的mailbox资源,处理器即可申请获得,无须等待;此外,因处理器非固定使用固定的mailbox资源,因此,即使***增加处理器,也无须对mailbox结构和设计进行较大修改,节约了实现成本,提高了mailbox资源利用率。
附图说明
图1是根据本发明实施例一的一种处理器间通信方法的步骤流程图;
图2是根据本发明实施例二的一种处理器间通信方法的步骤流程图;
图3是根据本发明实施例三的一种处理器间通信方法的步骤流程图;
图4是图3所示实施例中的一种SOC中的mailbox的结构示意图;
图5是根据本发明实施例四的一种SOC的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例中,SOC中包括两个或两个以上的处理器。
实施例一
参照图1,示出了根据本发明实施例一的一种处理器间通信方法的步骤流程图。
本实施例的处理器间通信方法包括以下步骤:
步骤S102:SOC中的第一处理器通过与第一处理器对应的mailbox中的至少一个通道向对应的存储空间写入信息。
其中,mailbox是SOC为第一处理器与SOC中的第二处理器之间的通信所分配的,每个mailbox包括多个通道。
本实施例中,SOC包括多个处理器,该多个处理器包括第一处理器和第二处理器。在具体应用中,处理器的个数由***需求决定,在使用mailbox的SOC中,至少包括两个处理器。本发明中,不对SOC包括的处理器的具体个数作限制。
Mailbox是一种邮箱内核组件,用于在多处理器之间发送消息。邮箱内核含有两个互斥体,一个保证对共享存储器的唯一写访问,另一个保证对共享存储器的唯一读访问,它与独立共享存储器一起使用,实现处理器间的消息队列通信。邮箱内核适于双处理器间单方向的消息通信,功能相当于FIFO缓冲队列,其传送的消息往往是指向共享内存块结构体的指针,代替实际的数据传输,提高数据交换效率。
步骤S104:SOC中的第一处理器在写入信息完成后,配置mailbox的通道占用信息,并向SOC中的第二处理器发送请求中断,致使第二处理器接收请求中断后,根据配置的mailbox的通道占用信息,确定写入信息的mailbox中的通道,并从确定的通道对应的存储空间中读取信息。
如上所述,mailbox与共享存储器一起使用,每个mailbox对应于一定的存储空间,每个mailbox的每个通道在该存储空间中有对应的位置和存储空间。
当第一处理器通过mailbox向第二处理器发送信息时,发送的信息会占用多个通道中的部分甚至全部通道对应的存储空间。第一处理器在完成信息写入后,会配置通道占用信息并向第二处理器发送请求中断,以告知第二处理器接收信息。第二处理器会在收到请求中断后会根据通道占用信息确定写入信息的mailbox中的通道,并从确定的通道对应的存储空间中读取信息。
步骤S106:SOC中的第一处理器接收第二处理器读取完信息并更新mailbox的通道占用信息后发送的处理完成中断,并根据更新后的mailbox的通道占用信息,解除对mailbox中已完成信息读取的通道的占用。
SOC中的第二处理器在接收到请求中断后,会根据通道占用信息首先确定哪些通道被占用,这些通道对应的存储空间的位置,然后,从被占用的通道(也即,写入了信息的通道)对应的存储空间中读取信息。然后,更新该通道占用信息,以使第一处理器能够根据该更新后的通道占用信息,解除对mailbox中已完成信息读取的通道的占用。
本实施例中,SOC的mailbox包括多个通道;并且,在有处理器需要使用mailbox通信时,为处理器灵活指定可用的mailbox;mailbox的每个通道都对应有相应的存储空间,在处理器进行通信时,通过确定被占用的通道确定相应的存储空间,进而对该存储空间的信息进行相应的读写操作。因本实施例的mailbox支持多通道,可以使两个处理器之间使用同一个mailbox进行进程通信,从而可以使通信的处理器之间明确区分出使用不同信息的进程,保证进程通信的优先级;因本实施例中,处理器每次使用的mailbox由SOC灵活分配,每个mailbox不固定使用的处理器,因而节约了mailbox资源,提高了mailbox使用灵活性;因处理器每次使用的mailbox由SOC灵活分配,只要有闲置的mailbox资源,处理器即可申请获得,无须等待;此外,因处理器非固定使用固定的mailbox资源,因此,即使***增加处理器,也无须对mailbox结构和设计进行较大修改,节约了实现成本,提高了mailbox资源利用率。
本发明实施例中,第一处理器在写入信息完成后,需配置mailbox的通道占用信息,具体地,可通过多种方式来配置mailbox的通道占用信息,例如:通过配置mailbox的、与第一处理器对应的寄存器的信息,来配置mailbox的通道占用信息;或者,通过生成携带通道占用信息的消息,来配置mailbox的通道占用信息。
这样,第二处理器更新mailbox的通道占用信息包括:通过配置mailbox的、与第二处理器对应的寄存器的信息,来更新mailbox的通道占用信息,或者,直接更新携带通道占用信息的消息,来更新mailbox的通道占用信息。
当然,其他的配置或更新mailbox的通道占用信息方式可以应用与本发明实施例中,就不再一一列举了。
实施例二
参照图2,示出了根据本发明实施例二的一种处理器间通信方法的步骤流程图。
本实施例的处理器间通信方法包括以下步骤:
步骤S202:设置SOC中的mailbox。
本实施例中,设置mailbox包括多个通道、指示多个通道的状态的状态寄存器、申请多个通道的发起请求寄存器、和指示多个通道的信息读取完成的处理完成寄存器。其中,与写入数据的处理器(本实施例中为第一处理器)相对应的寄存器包括发起请求寄存器和状态寄存器;与读取数据的处理器(本实施例中为第二处理器)相对应的寄存器包括处理完成寄存器和状态寄存器。也即,状态寄存器由两个处理器共用,在两个处理器之间传递相关信息。
SOC中的mailbox设置完成后,即可在后续的多处理器通信过程中一直使用。需要说明的是,上述状态寄存器、发起请求寄存器和处理完成寄存器可以同时存在;也可以仅设置状态寄存器和发起请求寄存器,而处理完成寄存器由其它方式替代实现;还可以仅设置状态寄存器和处理完成寄存器,而发起请求寄存器由其它方式替代实现。
优选地,本实施例中,状态寄存器的比特位的个数、发起请求寄存器的比特位的个数、和处理完成寄存器的比特位的个数,均与mailbox的通道的个数相同。上述多个寄存器的比特位的个数设置为与mailbox的通道的个数相同,一方面可以清楚明确地指示mailbox的通道情况,另一方面这种明确的指示方式也加快了处理器通过mailbox进行进程通信的速度。但不限于此,在实际应用中,上述多个寄存器之间的比特位的个数可以相同或不同,上述多个寄存器的比特位的个数与mailbox的通道的个数也可以相同或不同。寄存器的比特位的个数的限定,能满足指示mailbox的通道的个数即可。
步骤S204:当SOC中的第一处理器和第二处理器需要通过mailbox进行通信时,SOC为第一处理器和第二处理器分配mailbox。
SOC中具有多个处理器,该多个处理器中包括第一处理器和第二处理器。SOC中还包括多个mailbox,mailbox的个数可以根据处理器的个数由本领域技术人员适当设定。每个mailbox具有单向通信的特性,例如,如果CPU1和CPU2相互之间都有通信需要,通常需要两个mailbox。但从CPU1到CPU2的通信量与从CPU2到CPU1的通信量是可能不同的,比如CPU1->CPU2有两个mailbox,CPU2->CPU1有一个mailbox。可以根据需要选择设定mailbox的个数,以最大程度地满足所有处理器同时需要进行通信时的需求。但不限于此,实际设置的mailbox的个数也可以大于需求,以方便SOC处理器的扩展;也可以略小于需求,以能够满足处理器通信的实际需求为原则,可以节省SOC资源和空间。当然,在某些情况下,也可能仅需设置一个mailbox。
当为需要通信的第一处理器和第二处理器分配mailbox时,从空闲的mailbox中任选一个即可。
步骤S206:SOC的第一处理器向mailbox的多个通道中的部分或全部通道对应的存储空间写入信息,并在写入完成后,配置mailbox的、与第一处理器对应的寄存器的信息,以及向第二处理器发送请求中断。
本实施例中,因设置的与第一处理器对应的寄存器包括:发起请求寄存器和状态寄存器,因此,本步骤可以包括:第一处理器向mailbox的多个通道中的部分或全部通道对应的存储空间写入信息;在写入完成后,设置发起请求寄存器中、与写入信息的通道相对应的比特位,以请求写入信息的通道的资源;进而,根据发起请求寄存器的设置,设置状态寄存器中、与写入信息的通道相对应的比特位,以指示所述通道已被占用;同时,产生请求中断并向第二处理器发送。设置发起请求寄存器中相应的比特位,可以使状态寄存器明确哪些通道被占用,进而根据发起请求寄存器中比特位的设置更改状态寄存器中相应比特位的状态,该状态寄存器中比特位的状态后续可提供给信息读取方,即第二处理器,以使第二处理器获知mailbox中的哪些通道中有信息供读取。
步骤S208:SOC的第二处理器接收请求中断,并根据配置后的mailbox的、与第一处理器对应的寄存器的信息,确定写入信息的通道,以及从确定的通道对应的存储空间中读取信息。
优选地,因与第一处理器对应的寄存器,以及与第二处理器对应的寄存器中都包含有状态寄存器,并且,上述步骤中,第一处理器在写入所述信息完成后配置了状态寄存器的信息,因此,第二处理器在确定写入信息的通道时,可以根据状态寄存器的比特位的设置确定写入信息的通道,进而从确定的通道对应的存储空间中读取信息。
步骤S210:SOC的第二处理器读取完信息后,配置mailbox的、与第二处理器对应的寄存器的信息,并向第一处理器发送处理完成中断。
因本实施例中与第二处理器对应的寄存器包含有状态寄存器和处理完成寄存器,因此,优选地,本步骤包括:第二处理器读取完信息后,设置处理完成寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道的信息已读取完成;根据处理完成寄存器的设置,设置状态寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道解除占用;同时,产生处理完成中断并向第一处理器发送。设置处理完成寄存器中相应的比特位,可以使状态寄存器明确哪些通道中的信息已被读取,可解除占用,进而根据处理完成寄存器中比特位的设置更改状态寄存器中相应比特位的状态,该状态寄存器中比特位的状态后续可提供给信息写入方,即第一处理器,以使第一处理器获知mailbox中的哪些通道中的信息已被读取,可以进行重新利用。
步骤S212:SOC的第一处理器接收处理完成中断,并根据配置后的mailbox的、与第二处理器对应的寄存器的信息,确定mailbox中已完成信息读取的通道,解除对mailbox中已完成信息读取的通道的占用。
优选地,本实施例中,与第一处理器对应的寄存器,以及与第二处理器对应的寄存器中都包含有状态寄存器,这样,第一处理器接收处理完成中断后,可以根据状态寄存器的比特位的设置,确定mailbox中已完成信息读取的通道,解除对mailbox中已完成信息读取的通道的占用。这些已完成信息读取的通道可以由第一处理器继续使用,写入信息,传递给第二处理器,与第二处理器继续通信。
需要说明的是,步骤S210至步骤S212为优选步骤,在实际应用中,mailbox通道中的信息已被读取以及确定已完成信息读取的通道也可采用其它适当方式实现,如在消息中携带相应已完成信息读取的通道的信息,进而根据该消息更新通道状态的方式等。
通过本实施例,实现了处理器通过mailbox的灵活通信,因本实施例的mailbox支持多通道,可以使两个处理器之间使用同一个mailbox进行进程通信,从而可以使通信的处理器之间明确区分出使用不同信息的进程,保证进程通信的优先级;因本实施例中,处理器每次使用的mailbox由SOC灵活分配,每个mailbox不固定使用的处理器,因而节约了mailbox资源,提高了mailbox使用灵活性;因处理器每次使用的mailbox由SOC灵活分配,只要有闲置的mailbox资源,处理器即可申请获得,无须等待;此外,因处理器非固定使用固定的mailbox资源,因此,即使***增加处理器,也无须对mailbox结构和设计进行较大修改,节约了实现成本,提高了mailbox资源利用率。
实施例三
参照图3,示出了根据本发明实施例三的一种处理器间通信方法的步骤流程图。
本实施例的处理器间通信方法包括以下步骤:
步骤S302:设置SOC中的mailbox。
本实施例中,设置SOC中的每个mailbox资源包括一个32位状态寄存器(CHNL_STTS),1位请求中断(REQ_INT)和1位处理完成中断(ACK_INT);此外,为了方便多个处理器完成对mailbox的请求和处理完成控制,需要额外实现两个32位接口寄存器,一个为发起请求寄存器(CHNL_SET),一个为处理完成寄存器(CHNL_CLR),设置的上述mailbox的结构如图4所示。其中,CHNL_STTS表示该mailbox对应的32个通道状态,设1表示有数据,0表示无数据,处理器通过操作CHNL_SET寄存器和CHNL_CLR寄存器来控制CHNL_STTS各个比特的置位和清0。
一般来说,对***总线的访问通常占用32位比特位,因此,本实施例中的mailbox设置为32个通道,设置的上述多个寄存器也相应的为32位。但不限于此,在实际应用中,本领域技术人员可以根据实际情况适当设置,如为64位或为16位或8位等等均可。
步骤S304:SOC为mailbox分配发送者和接收者。
当有处理器需要进行mailbox通信时,SOC为处理器分配mailbox,对于一个空闲的mailbox来说,也即SOC为mailbox分配发送者(即发送信息的处理器,如第一处理器)和接收者(即接收信息的处理器,如第二处理器)。
每个mailbox使用前,都需要为其指定一个发送者和接收者,对发送者来说,需要能够接收到mailbox的处理完成中断,对接收者来说,需要能够接收到mailbox的请求中断。在实现时,可以使用中断使能寄存器来屏蔽对于处理器所不关心的中断源。
步骤S306:发送者使用分配的mailbox的某个通道发送信息时,首先将信息写入预先约定好的该mailbox通道对应的共享存储器。
步骤S308:发送者向该mailbox对应的CHNL_SET发起写操作,将相对应的mailbox存在发送信息的通道位写1,其它位写0。
步骤S310:SOC会将CHNL_STTS中与CHNL_SET中写1的对应比特位置1,同时产生mailbox的请求中断。
步骤S312:接收者检测到该请求中断,进一步读取CHNL_STTS寄存器,查询哪个通道存在信息,然后从预先约定好的共享存储器读取信息。
步骤S314:接收者处理完信息后,向mailbox对应的CHNL_CLR发起写操作,将相对应的mailbox处理完成信息的通道位写1,其它位写0。
步骤S316:SOC会将CHNL_STTS中与CNNL_CLR中写1的对应比特位清0,同时产生mailbox的处理完成中断。
步骤S318:发送者检测到处理完成中断,读取CHNL_STTS寄存器,查询哪些通道处理完成,解除对mailbox中已完成信息读取的通道的占用。
通过本实施例,mailbox内部支持多通道,便于处理器的不同进程使用不同的通道交互信息,软件可以自由决定不同通道信息的优先级;资源简化,实现简单,每个mailbox只有32个寄存器,同时提供32个通道,大大降低了mailbox资源成本,通道携带的信息直接使用共享存储器,如DDR颗粒,不存在额外的资源,相对于传统实现方式在同样的硬件规模下,可以实现更多的mailbox,供多个处理器分配使用;执行效率较高,mailbox在使用之前确定好发送方处理器和接收方处理器,在一次通信过程中为这两个处理器专用,使用时不需要再次申请;同时,每个mailbox都可以任意指定发送者和接收者,使其在应用中十分灵活;易于扩展,当***增加更多处理器时,可以使用保留现有的mailbox资源不变,只添加新增处理器中断使能配置寄存器即可;当***需要增加mailbox资源时,可以在原设计上增加mailbox对应的寄存器,同时扩充处理器的中断使能配置寄存器,无需修改原有电路。
实施例四
参照图5,示出了根据本发明实施例四的一种SOC的结构框图。
本实施例的SOC在结构上采用了至少两个处理器,以及,一个、两个或多个mailbox,其中,多个处理器中包括本实施例中的第一处理器和第二处理器,每个mailbox均采用多通道结构。
以第一处理器和第二处理器通过mailbox进行通信为例,本实施例的SOC中的第一处理器包括:写入模块402,用于通过与第一处理器对应的mailbox中的至少一个通道向对应的存储空间写入信息,其中,mailbox是SOC为第一处理器与SOC中的第二处理器之间的通信所分配的,每个mailbox包括多个通道;请求中断模块404,用于在写入信息完成后,配置mailbox的通道占用信息,并向第二处理器发送请求中断,致使第二处理器接收请求中断后,根据配置的mailbox的通道占用信息,确定写入信息的mailbox中的通道,并从确定的通道对应的存储空间中读取信息;解除模块406,用于接收第二处理器读取完信息并更新mailbox的通道占用信息后发送的处理完成中断,并根据更新后的mailbox的通道占用信息,解除对mailbox中已完成信息读取的通道的占用。
优选地,请求中断模块404具体用于在写入信息完成后,通过配置mailbox的、与第一处理器对应的寄存器的信息,来配置mailbox的通道占用信息,并向第二处理器发送请求中断;第二处理器具体用于读取完信息并通过配置mailbox的、与第二处理器对应的寄存器的信息,来更新mailbox的通道占用信息。
优选地,请求中断模块404在写入信息完成后,配置mailbox的、与第一处理器对应的寄存器的信息时:在写入信息完成后,设置mailbox的发起请求寄存器中、与写入信息的通道相对应的比特位,以请求写入信息的通道的资源,其中,发起请求寄存器用于申请至少一个通道的资源;根据发起请求寄存器的设置,设置mailbox的状态寄存器中、与写入信息的通道相对应的比特位,以指示通道已被占用,其中,状态寄存器用于指示至少一个通道的状态。
优选地,第二处理器在根据配置的mailbox的通道占用信息,确定写入信息的mailbox中的通道时:第二处理器根据mailbox的状态寄存器的比特位的设置确定写入信息的mailbox中通道。
优选地,第二处理器在配置mailbox的、与第二处理器对应的寄存器的信息时:第二处理器设置mailbox的处理完成寄存器中、与读取完信息的通道相对应的比特位,以指示通道的信息已读取完成,其中,处理完成寄存器用于指示多个通道的信息读取完成;根据处理完成寄存器的设置,设置mailbox的状态寄存器中、与读取完信息的通道相对应的比特位,以指示通道解除占用。
优选地,解除模块406在根据更新后的mailbox的通道占用信息,解除对mailbox中已完成信息读取的通道的占用时:根据mailbox的状态寄存器的比特位的设置,确定mailbox中已完成信息读取的通道;解除对所述mailbox中已完成信息读取的通道的占用。
优选地,状态寄存器的比特位的个数、发起请求寄存器的比特位的个数、和处理完成寄存器的比特位的个数,均与mailbox的通道的个数相同。
本实施例的SOC用于实现前述多个方法实施例中相应的处理器间通信方法,并具有相应的方法实施例的有益效果,在此不再赘述。
本发明提供了一种SOC的处理器间的通信方案,在该方案中提出了一种mailbox电路结构,能够支持多个处理器之间,基于多通道的通信机制。这种mailbox电路结构采用多通道设计,通过通道发送请求中断与处理完成中断操作通信流程,能够灵活指定mailbox的发送者和接收者,资源小,易于扩展,从而具有低成本,使用灵活的特点,易于扩展为更多处理器的通信结构。经过实际测试验证,本发明的mailbox结构减少了设计资源,优化了软件流程,便于多处理器不同进程的通信控制,同时易于开发和集成,提高了应用的灵活性和设计可扩展性。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于SOC实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种处理器间通信方法与SOC进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种处理器间通信方法,其特征在于,包括:
***级芯片中的第一处理器通过与所述第一处理器对应的邮箱mailbox中的至少一个通道向对应的存储空间写入信息,其中,所述mailbox是所述***级芯片为所述第一处理器与所述***级芯片中的第二处理器之间的通信所分配的,每个mailbox包括多个通道;
所述第一处理器在写入所述信息完成后,配置所述mailbox的通道占用信息,并向所述第二处理器发送请求中断,致使所述第二处理器接收所述请求中断后,根据配置的所述mailbox的通道占用信息,确定写入所述信息的mailbox中的通道,并从确定的所述通道对应的存储空间中读取信息;
所述第一处理器接收所述第二处理器读取完所述信息并更新所述mailbox的通道占用信息后发送的处理完成中断,并根据更新后的所述mailbox的通道占用信息,解除对所述mailbox中已完成信息读取的通道的占用。
2.根据权利要求1所述的方法,其特征在于,所述第一处理器配置所述mailbox的通道占用信息的步骤包括:
所述第一处理器通过配置所述mailbox的、与所述第一处理器对应的寄存器的信息,来配置所述mailbox的通道占用信息;
则,所述第二处理器更新所述mailbox的通道占用信息的步骤包括:
所述第二处理器通过配置所述mailbox的、与所述第二处理器对应的寄存器的信息,来更新所述mailbox的通道占用信息。
3.根据权利要求2所述的方法,其特征在于,所述第一处理器配置所述mailbox的、与所述第一处理器对应的寄存器的信息的步骤包括:
所述第一处理器设置所述mailbox的发起请求寄存器中、与写入信息的通道相对应的比特位,以请求所述写入信息的通道的资源,其中,所述发起请求寄存器用于申请所述至少一个通道的资源;
根据所述发起请求寄存器的设置,设置所述mailbox的状态寄存器中、与写入信息的通道相对应的比特位,以指示所述通道已被占用,其中,所述状态寄存器用于指示所述至少一个通道的状态。
4.根据权利要求3所述的方法,其特征在于,所述第二处理器根据配置的所述mailbox的通道占用信息,确定写入所述信息的mailbox中的通道的步骤包括:
所述第二处理器根据所述mailbox的状态寄存器的比特位的设置确定写入所述信息的mailbox中通道。
5.根据权利要求2所述的方法,其特征在于,所述第二处理器配置所述mailbox的、与所述第二处理器对应的寄存器的信息的步骤包括:
所述第二处理器设置所述mailbox的处理完成寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道的信息已读取完成,其中,所述处理完成寄存器用于指示所述多个通道的信息读取完成;
所述第二处理器根据所述处理完成寄存器的设置,设置所述mailbox的状态寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道解除占用。
6.根据权利要求5所述的方法,其特征在于,所述第一处理器根据更新后的所述mailbox的通道占用信息,解除对所述mailbox中已完成信息读取的通道的占用的步骤包括:
所述第一处理器根据所述mailbox的状态寄存器的比特位的设置,确定所述mailbox中已完成信息读取的通道;
解除对所述mailbox中已完成信息读取的通道的占用。
7.根据权利要求5或6所述的方法,其特征在于,所述状态寄存器的比特位的个数、所述发起请求寄存器的比特位的个数、和所述处理完成寄存器的比特位的个数,均与所述mailbox的通道的个数相同。
8.一种***级芯片,其特征在于,包括:第一处理器、第二处理器和邮箱mailbox;
其中,所述第一处理器包括:
写入模块,用于通过与所述第一处理器对应的邮箱mailbox中的至少一个通道向对应的存储空间写入信息,其中,所述mailbox是所述***级芯片为所述第一处理器与所述***级芯片中的第二处理器之间的通信所分配的,每个mailbox包括多个通道;
请求中断模块,用于在写入所述信息完成后,配置所述mailbox的通道占用信息,并向所述第二处理器发送请求中断,致使所述第二处理器接收所述请求中断后,根据配置的所述mailbox的通道占用信息,确定写入所述信息的mailbox中的通道,并从确定的所述通道对应的存储空间中读取信息;
解除模块,用于接收所述第二处理器读取完所述信息并更新所述mailbox的通道占用信息后发送的处理完成中断,并根据更新后的所述mailbox的通道占用信息,解除对所述mailbox中已完成信息读取的通道的占用。
9.根据权利要求8所述的***级芯片,其特征在于,
所述请求中断模块,具体用于在写入所述信息完成后,通过配置所述mailbox的、与所述第一处理器对应的寄存器的信息,来配置所述mailbox的通道占用信息,并向所述第二处理器发送请求中断;
所述第二处理器,用于读取完所述信息并通过配置所述mailbox的、与所述第二处理器对应的寄存器的信息,来更新所述mailbox的通道占用信息。
10.根据权利要求9所述的***级芯片,其特征在于,
所述请求中断模块,具体用于在写入所述信息完成后,设置所述mailbox的发起请求寄存器中、与写入信息的通道相对应的比特位,以请求所述写入信息的通道的资源,其中,所述发起请求寄存器用于申请所述至少一个通道的资源;并,
根据所述发起请求寄存器的设置,设置所述mailbox的状态寄存器中、与写入信息的通道相对应的比特位,以指示所述通道已被占用,其中,所述状态寄存器用于指示所述至少一个通道的状态。
11.根据权利要求10所述的***级芯片,其特征在于,
所述第二处理器,还用于根据所述mailbox的状态寄存器的比特位的设置确定写入所述信息的mailbox中通道。
12.根据权利要求9所述的***级芯片,其特征在于,
所述第二处理器,具体用于设置所述mailbox的处理完成寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道的信息已读取完成,其中,所述处理完成寄存器用于指示所述多个通道的信息读取完成;并根据所述处理完成寄存器的设置,设置所述mailbox的状态寄存器中、与读取完信息的通道相对应的比特位,以指示所述通道解除占用。
13.根据权利要求12所述的***级芯片,其特征在于,
所述解除模块,具体用于根据所述mailbox的状态寄存器的比特位的设置,确定所述mailbox中已完成信息读取的通道;解除对所述mailbox中已完成信息读取的通道的占用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102185188A CN103324599A (zh) | 2013-06-04 | 2013-06-04 | 处理器间通信方法与***级芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102185188A CN103324599A (zh) | 2013-06-04 | 2013-06-04 | 处理器间通信方法与***级芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103324599A true CN103324599A (zh) | 2013-09-25 |
Family
ID=49193353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102185188A Pending CN103324599A (zh) | 2013-06-04 | 2013-06-04 | 处理器间通信方法与***级芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103324599A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372029A (zh) * | 2016-09-06 | 2017-02-01 | 北方电子研究院安徽有限公司 | 一种基于中断的点对点片内通信模块 |
CN108062234A (zh) * | 2017-12-07 | 2018-05-22 | 郑州云海信息技术有限公司 | 一种通过mailbox协议实现服务器主机访问BMC FLASH的***及方法 |
WO2020118721A1 (zh) * | 2018-12-14 | 2020-06-18 | 华为技术有限公司 | 一种多处理器***及处理器间通信方法 |
TWI703501B (zh) * | 2018-08-23 | 2020-09-01 | 慧榮科技股份有限公司 | 具有分散式信箱架構的多處理器系統及其溝通方法 |
CN111930676A (zh) * | 2020-09-17 | 2020-11-13 | 湖北芯擎科技有限公司 | 多处理器间的通信方法、装置、***及存储介质 |
CN113110950A (zh) * | 2021-05-18 | 2021-07-13 | 南方电网科学研究院有限责任公司 | 处理器及通信方法、存储介质及计算设备 |
CN115599459A (zh) * | 2022-12-13 | 2023-01-13 | 成都启英泰伦科技有限公司(Cn) | 一种跨电源域多处理器运行装置及其通信方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060200257A1 (en) * | 2005-03-03 | 2006-09-07 | Hans-Herbert Kirste | Microprocessor system for a machine controller in safety-certifiable applications |
CN1964285A (zh) * | 2006-12-13 | 2007-05-16 | 杭州华为三康技术有限公司 | 具有双cpu的主控设备及实现方法 |
CN101226519A (zh) * | 2007-01-17 | 2008-07-23 | 三星电子株式会社 | 多路径可访问半导体存储器设备及其邮箱访问控制方法 |
CN101788973A (zh) * | 2010-01-12 | 2010-07-28 | 深圳市同洲电子股份有限公司 | 双处理器之间进行通信的方法 |
-
2013
- 2013-06-04 CN CN2013102185188A patent/CN103324599A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060200257A1 (en) * | 2005-03-03 | 2006-09-07 | Hans-Herbert Kirste | Microprocessor system for a machine controller in safety-certifiable applications |
CN1964285A (zh) * | 2006-12-13 | 2007-05-16 | 杭州华为三康技术有限公司 | 具有双cpu的主控设备及实现方法 |
CN101226519A (zh) * | 2007-01-17 | 2008-07-23 | 三星电子株式会社 | 多路径可访问半导体存储器设备及其邮箱访问控制方法 |
CN101788973A (zh) * | 2010-01-12 | 2010-07-28 | 深圳市同洲电子股份有限公司 | 双处理器之间进行通信的方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372029A (zh) * | 2016-09-06 | 2017-02-01 | 北方电子研究院安徽有限公司 | 一种基于中断的点对点片内通信模块 |
CN108062234A (zh) * | 2017-12-07 | 2018-05-22 | 郑州云海信息技术有限公司 | 一种通过mailbox协议实现服务器主机访问BMC FLASH的***及方法 |
CN108062234B (zh) * | 2017-12-07 | 2021-07-27 | 郑州云海信息技术有限公司 | 一种通过mailbox协议实现服务器主机访问BMC FLASH的***及方法 |
TWI703501B (zh) * | 2018-08-23 | 2020-09-01 | 慧榮科技股份有限公司 | 具有分散式信箱架構的多處理器系統及其溝通方法 |
US11314571B2 (en) | 2018-08-23 | 2022-04-26 | Silicon Motion, Inc. | Multi-processor system with distributed mailbox architecture and communication method thereof |
WO2020118721A1 (zh) * | 2018-12-14 | 2020-06-18 | 华为技术有限公司 | 一种多处理器***及处理器间通信方法 |
CN111742306A (zh) * | 2018-12-14 | 2020-10-02 | 华为技术有限公司 | 一种多处理器***及处理器间通信方法 |
CN111930676A (zh) * | 2020-09-17 | 2020-11-13 | 湖北芯擎科技有限公司 | 多处理器间的通信方法、装置、***及存储介质 |
CN111930676B (zh) * | 2020-09-17 | 2020-12-29 | 湖北芯擎科技有限公司 | 多处理器间的通信方法、装置、***及存储介质 |
CN113110950A (zh) * | 2021-05-18 | 2021-07-13 | 南方电网科学研究院有限责任公司 | 处理器及通信方法、存储介质及计算设备 |
CN115599459A (zh) * | 2022-12-13 | 2023-01-13 | 成都启英泰伦科技有限公司(Cn) | 一种跨电源域多处理器运行装置及其通信方法 |
US11921563B1 (en) | 2022-12-13 | 2024-03-05 | Chipintelli Technology Co., Ltd | Operating device of cross-power domain multiprocessor and communication method thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103324599A (zh) | 处理器间通信方法与***级芯片 | |
CN110647480B (zh) | 数据处理方法、远程直接访存网卡和设备 | |
US8478926B1 (en) | Co-processing acceleration method, apparatus, and system | |
US8209690B2 (en) | System and method for thread handling in multithreaded parallel computing of nested threads | |
US11080220B2 (en) | System on chip having semaphore function and method for implementing semaphore function | |
CN105630731A (zh) | 一种多cpu环境下网卡数据处理方法和装置 | |
JP2007079789A (ja) | 計算機システム及びイベント処理方法 | |
CN104102542A (zh) | 一种网络数据包处理方法和装置 | |
CN101877666B (zh) | 基于零拷贝方式的多应用程序报文接收方法和装置 | |
CN110046050B (zh) | 一种核间数据传输的装置和方法 | |
JP2006309512A (ja) | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 | |
CN112131176B (zh) | 一种基于pcie的fpga快速局部重构方法 | |
CN102291298B (zh) | 一种高效的面向长消息的计算机网络通信方法 | |
CN111290983A (zh) | Usb传输设备及传输方法 | |
CN103106164A (zh) | 一种高效dma控制器 | |
US7216186B2 (en) | Controlling data flow between processor systems | |
WO2013148439A1 (en) | Hardware managed allocation and deallocation evaluation circuit | |
JP4856413B2 (ja) | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 | |
CN108241770B (zh) | 一种基于反射内存网的消息响应分布式仿真方法 | |
US8909823B2 (en) | Data processing device, chain and method, and corresponding recording medium for dividing a main buffer memory into used space and free space | |
CN115563038A (zh) | 基于dma控制器的数据处理***、方法和数据处理设备 | |
CN109032818A (zh) | 一种同构***核间同步与通信的方法 | |
CN114637594A (zh) | 多核处理设备、任务分配方法、装置及存储介质 | |
US8296481B2 (en) | Device and method for improving transfer efficiency of odd number of data blocks | |
WO2021179218A1 (zh) | 直接内存存取单元、处理器、设备、处理方法及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130925 |