多处理器系统中的处理器间协议的制作方法

文档序号:6497524阅读:108来源:国知局
多处理器系统中的处理器间协议的制作方法
【专利摘要】在多处理器系统中,主处理器可存储用于二级处理器的可执行映像。通信协议有助于将所述可执行映像的映像标头和数据片段从所述主处理器传送到所述二级处理器。所述主处理器与二级处理器之间的消息指示成功地接收到所传送的数据、终止传送进程和确认传送进程。
【专利说明】多处理器系统中的处理器间协议
[0001]相关申请案的交叉参考
[0002]本申请案是2011年3月21日提交的古普塔(GUPTA)等人的第13/052,516号美国专利申请案的部分继续申请案,所述美国专利申请案主张2010年3月22日提交的马拉玛特(MALAMANT)等人的第61/316,369号美国临时专利申请案、2010年4月14日提交的古普塔等人的第61/324,035号美国临时专利申请案、2010年4月14日提交的古普塔等人的第61/324,122号美国临时专利申请案,和2010年4月19日提交的古普塔等人的第61/325,519号美国临时专利申请案的权益,这些专利申请案的全部揭示内容明确地以引用的方式并入本文中。
【技术领域】
[0003]以下描述大体上涉及多处理器系统,且更具体来说涉及如下多处理器系统,其中主处理器耦合到存储系统中的一或多个其它处理器(在本文中称为“二级”处理器)的可执行软件映像的非易失性存储器,所述一或多个其它处理器各自耦合到专用易失性存储器,其中以分段式格式(例如,使用直接分散加载程序)将可执行软件映像从主处理器有效地传达到二级处理器。
【背景技术】
[0004]处理器执行软件代码以执行操作。处理器可使用待执行以用于启动的特定软件代码(统称为启动代码)。在多处理器系统中,每一处理器可使用相应启动代码以用于启动。作为一实例,在包含应用处理器和调制解调器处理器的智能电话装置中,处理器中的每一者可使用相应启动代码以用于启动。
[0005]并入有多个处理器(例如,集成有单独的调制解调器处理器芯片的独立应用处理器芯片)的大量装置(例如,智能电话)中存在问题。快闪/非易失性存储器组件可用于处理器中的每一者,这是因为每一处理器均具有可执行映像和文件系统的非易失性存储器(例如,永久性存储装置)。举例来说,可将处理器的启动代码存储到处理器的相应非易失性存储器(例如,快闪存储器、只读存储器(ROM)等),且在加电之后,从其相应非易失性存储器加载启动代码软件以供处理器执行。因此,在这种类型的架构中,并不要求将可执行软件(例如,处理器的启动代码)从系统中的另一处理器加载到所述处理器。
[0006]然而,将专用非易失性存储器添加到每一处理器占据较多电路板空间,从而增加了电路板大小。一些设计可使用随机存取存储器(RAM)与快闪存储器的组合式芯片(其中RAM和快闪装置堆叠为一个封装以减少大小)来减少板大小。虽然多芯片封装解决方案确实在一定程度上减少了所需要的电路板覆盖面积,但这可能增加成本。
[0007]在一些多处理器系统中,可将软件从另一处理器加载到一个处理器。举例来说,假设多处理器系统中的第一处理器负责将用于系统中的一或多个其它处理器的启动代码存储到其非易失性存储器;其中在加电之后,不同于此类启动代码驻留于其它处理器的非易失性存储器中,第一处理器的任务为将相应启动代码加载到其它处理器。在这种类型的系统中,将软件(例如,启动映像)从第一处理器下载到其它处理器(例如,其它处理器的易失性存储器),且之后,接收处理器使用所下载映像进行启动。
[0008]常常,待加载的软件映像为二进制多段式映像。举例来说,软件映像可包含一标头后面跟着多个代码片段。当将软件映像从外部装置(例如,从另一处理器)加载到目标装置(例如,目标处理器)上时,可存在通过启动加载程序将二进制多段式映像传送到系统存储器中,且接着稍后传送到目标位置的中间步骤。
[0009]在将软件映像从第一 “主”处理器加载到目标“二级”处理器上的系统中,执行此加载的一种方式为分配接收每一包的临时缓冲区,且每一包将具有相关联的包标头信息以及有效负载。在此状况下,有效负载将是实际映像数据。从临时缓冲区可对有效负载进行一些处理,且接着可将有效负载复制到最后目的地。临时缓冲区可位于系统存储器中,例如内部随机存取存储器(RAM)或双数据速率(DDR)存储器中。
[0010]因此,在使用中间缓冲区的情况下,将从主处理器下载到二级处理器的数据复制到中间缓冲区中。以此方式,缓冲区用于从主处理器接收映像数据的部分,且可将映像数据从缓冲区分散到二级处理器的存储器(例如,易失性存储器)中。
[0011]可在不同于实施二级处理器的芯片的芯片上实施主处理器和存储用于二级处理器的启动映像的其非易失性存储器。因此,为了将数据从主处理器的非易失性存储器传送到二级处理器(例如,二级处理器的易失性存储器),可利用基于包的通信,其中包标头包含于传达到二级处理器的每一包中。将包存储于中间缓冲区中,并对所接收的包执行一些处理,使得可将数据存储于其最后目的地中(例如,二级处理器的易失性存储器内)。

【发明内容】

[0012]提供一种多处理器系统中的两个处理器之间的通信方法。所述方法包含由二级处理器起始与主处理器的通信。所述方法还包含由所述二级处理器指令所述主处理器,以传送用于可执行软件映像的映像标头。所述可执行软件映像包含所述映像标头和数据片段。所述方法进一步包含由所述二级处理器接收所述映像标头和数据片段。所述方法又包含由所述二级处理器向所述主处理器指示成功地接收到所述映像标头和数据片段。所述方法进一步包含由所述二级处理器从所述主处理器接收终止所述可执行软件映像传送的指示。所述方法还包含由所述二级处理器向所述主处理器确认接收到终止传送的所述指示。
[0013]提供一种多处理器装置。所述装置包含用于由二级处理器起始与主处理器的通信的装置。所述装置还包含用于由所述二级处理器指令所述主处理器传送用于可执行软件映像的映像标头的装置。所述可执行软件映像包含所述映像标头和数据片段。所述装置进一步包含用于由所述二级处理器接收所述映像标头和数据片段的装置。所述装置又包含用于由所述二级处理器向所述主处理器指示成功地接收到所述映像标头和数据片段的装置。所述装置进一步包含用于由所述二级处理器从所述主处理器接收终止所述可执行软件映像传送的指示的装置。所述装置还包含用于由所述二级处理器向所述主处理器确认接收到终止传送的所述指示的装置。
[0014]提供一种计算机程序产品。所述计算机程序产品包含其上记录有非暂时性程序代码的非暂时性计算机可读媒体。所述非暂时性程序代码包含用以由二级处理器起始与主处理器的通信的程序代码。所述非暂时性程序代码进一步包含用以由所述二级处理器指令所述主处理器传送用于可执行软件映像的映像标头的程序代码。所述可执行软件映像包含映像标头和数据片段。所述非暂时性程序代码进一步包含用以由所述二级处理器接收所述映像标头和数据片段的程序代码。所述非暂时性程序代码又包含用以由所述二级处理器向所述主处理器指示成功地接收到所述映像标头和至少一个数据片段的程序代码。所述非暂时性程序代码进一步包含用以由所述二级处理器从所述主处理器接收终止所述可执行软件映像传送的指示的程序代码。所述非暂时性程序代码还包含用以由所述二级处理器向所述主处理器确认接收到终止传送的所述指示的程序代码。
[0015]提供一种多处理器系统中的两个处理器之间的通信方法。所述方法包含由主处理器接收传送用于可执行软件映像的映像标头的指令。所述可执行软件映像包含所述映像标头和数据片段。所述方法还包含由所述主处理器将所述映像标头和数据片段发送到二级处理器。所述方法进一步包含由所述主处理器从所述二级处理器接收成功地接收到所述映像标头和数据片段的指示。所述方法又进一步包含由所述主处理器发送终止所述可执行映像传送的指示。所述方法还包含由所述主处理器从所述二级处理器接收对接收到所述终止传送指示的确认。
[0016]提供一种多处理器装置。所述装置包含用于由主处理器接收传送用于可执行软件映像的映像标头的指令的装置。所述可执行软件映像包含所述映像标头和数据片段。所述装置还包含用于由所述主处理器将所述映像标头和数据片段发送到二级处理器的装置。所述方法进一步包含用于由所述主处理器从所述二级处理器接收成功地接收到所述映像标头和数据片段的指示的装置。所述装置又进一步包含用于由所述主处理器发送终止所述可执行映像传送的指示的装置。所述装置还包含用于由所述主处理器从所述二级处理器接收对接收到所述终止传送指示的确认的装置。
[0017]提供一种计算机程序产品。所述计算机程序产品包含其上记录有非暂时性程序代码的非暂时性计算机可读媒体。所述非暂时性程序代码包含用以由主处理器接收传送用于可执行软件映像的映像标头的指令的程序代码,所述可执行软件映像包括所述映像标头和数据片段。所述非暂时性程序代码还包含用以由所述主处理器将所述映像标头和数据片段发送到二级处理器的程序代码。所述非暂时性程序代码进一步包含用以由所述主处理器从所述二级处理器接收成功地接收到所述映像标头和至少一个数据片段的指示的程序代码。所述非暂时性程序代码又进一步包含用以由所述主处理器发送终止所述可执行映像传送的指示的程序代码。所述非暂时性程序代码又进一步包含用以由所述主处理器从所述二级处理器接收对接收到所述终止传送指示的确认的程序代码。
【专利附图】

【附图说明】
[0018]为了更完整地理解本发明教示,现结合随附图式参考以下描述。
[0019]图1为其内可实施本发明的方面的示范性装置的说明。
[0020]图2为其内可实施本发明的方面的示范性装置的说明。
[0021]图3为根据本发明的一个方面的用于将可执行映像从主处理器加载到二级处理器的示范性加载程序的操作流程的说明。
[0022]图4为根据本发明的一个方面的两个处理器之间的包流的说明。
[0023]图5为展示可有利地利用本发明的方面的示范性无线通信系统的框图。[0024]图6为说明根据本发明的一个方面的关于可执行软件映像传送的通信的框图。
[0025]图7为说明根据本发明的一个方面的关于可执行软件映像传送的通信的框图。
【具体实施方式】
[0026]词语“示范性”在本文中用于意味“充当实例、个例或说明”。不必将本文中描述为“示范性”的任何方面解释为与其它方面相比为优选或有利的。
[0027]本文中所揭示的某些方面涉及多处理器系统,其中一个主处理器连接到存储系统中的一或多个其它处理器(在本文中称为“二级”处理器)的可执行映像的非易失性存储器。在此多处理器系统中,二级处理器中的每一者可连接到用于存储可执行映像、运行时间数据和(任选地)文件系统镜像的专用易失性存储器。
[0028]常常以分段式格式存储可执行映像,其中可将每一片段加载到不同存储器区域中。可执行片段的目标存储器位置可相对于彼此邻接或可并不邻接。多段式映像格式的一个实例为可执行和链接格式(ELF),所述格式允许可执行映像分裂成多个片段,且可将这些片段中的每一者加载到不同系统存储器位置。
[0029]在一个示范性方面中,揭示用于将分段式映像从主处理器的非易失性存储器加载到二级处理器的易失性存储器的直接分散加载技术。如下文进一步所论述,直接分散加载技术避免使用临时缓冲区。举例来说,在一个方面中,将原始映像数据从主处理器加载到二级处理器,而非利用经由各自包含相应标头的包传达映像的基于包的通信。在另一方面中,使用包含用于确定数据的目标位置信息的信息的标头。
[0030]具有集中式非易失性存储器的示范性多处理器架构——具有用于文件系统的减少的局部非易失性存储器
[0031]图1说明第一多处理器架构102的框图,其中主处理器(应用处理器104)代管主(较大)非易失性存储器106(例如,NAND快闪存储器),同时第二处理器(例如,调制解调器处理器110)具有二级(减小或最小的)非易失性存储器114(例如,NOR快闪存储器)。
[0032]在通信装置架构102中,应用处理器104耦合到主非易失性存储器106和应用处理器易失性存储器108 (例如,随机存取存储器)。调制解调器处理器110耦合到二级非易失性存储器114和调制解调器处理器易失性存储器112。处理器间通信总线134允许应用处理器104与调制解调器处理器110之间的通信。
[0033]用于调制解调器处理器110的调制解调器可执行映像120可与AP可执行映像118和AP文件系统116 —起存储于应用处理器(AP)非易失性存储器106中。应用处理器104可将其AP可执行映像118加载到应用处理器易失性存储器108中,并将其存储为AP可执行映像122。应用处理器易失性存储器108还可用于存储AP运行时间数据124。
[0034]调制解调器处理器110具有用于其文件系统128存储的专用二级(减小或最小的)非易失性存储器114(例如,NOR快闪)。相比于能够存储运行时间调制解调器可执行映像120和文件系统128两者的快闪装置,此二级(减小或最小的)非易失性存储器114较小且成本较低。
[0035]在系统加电之后,调制解调器处理器110从硬件启动R0M126(小型只读芯片上存储器)执行其主启动加载程序(PBL)。调制解调器PBL可适于从应用处理器104下载调制解调器可执行文件120。也就是说,由调制解调器处理器110向应用处理器104请求调制解调器可执行映像120 (最初存储于主非易失性存储器106中)。应用处理器104检索调制解调器可执行映像120,并经由处理器间通信总线134(例如,处理器间通信总线)将其提供到调制解调器处理器110。调制解调器处理器110直接将调制解调器可执行映像132存储到调制解调器处理器RAM (随机存取存储器)112中的最后目的地,而无需将数据复制到调制解调器处理器RAM112中的临时缓冲区。处理器间通信总线134可为(例如)HSIC总线(基于USB的高速芯片间)、HSI总线(MIPI高速同步接口 )、SDIO总线(安全数字I/O接口)、UART总线(通用异步接收器/发射器)、SPI总线(串行外围接口)、12C总线(集成电路间),或适于调制解调器处理器110和应用处理器104两者上可用的芯片间通信的任何其它硬件接口。
[0036]一旦将调制解调器可执行映像120下载到调制解调器处理器RAM112中并对其进行认证,就将所述调制解调器可执行映像维持为调制解调器可执行映像132。另外,调制解调器处理器易失性存储器112还可存储调制解调器运行时间数据130。接着,调制解调器启动ROM代码126可跳转到所述调制解调器可执行映像132中,并开始执行来自调制解调器处理器RAM112的主要调制解调器程序。可使用附接到调制解调器处理器110的二级(减小或最小的)非易失性存储器114将任何持久性(非易失性)数据(例如,射频(RF)校准和系统参数)存储于调制解调器文件系统128上。
[0037]具有集中式非易失性存储器的示范性多处理器架构——没有用于文件系统的局部非易失性存储器
[0038]图2说明第二多处理器架构202的框图,其中主处理器(应用处理器204)代管主(较大)非易失性存储器206 (例如,NAND快闪存储器)。主非易失性存储器206可存储用于二级处理器(调制解调器处理器210)的调制解调器可执行映像214和/或调制解调器文件系统220。二级处理器(调制解调器处理器210)可经配置以向主处理器204请求调制解调器可执行映像214和/或调制解调器文件系统220。接着,主处理器204从非易失性存储器206检索所请求的调制解调器可执行映像214和/或调制解调器文件系统220,并经由处理器间通信总线234将其提供到二级处理器210。
[0039]在此架构202中,应用处理器204耦合到非易失性存储器206和应用处理器易失性存储器208 (例如,随机存取存储器)。调制解调器处理器210耦合到调制解调器处理器易失性存储器212,但并不具有其自身的非易失性存储器。调制解调器处理器易失性存储器212存储文件系统镜像228、调制解调器可执行映像236和调制解调器运行时间数据230。处理器间通信总线234允许应用处理器204与调制解调器处理器210之间的通信。
[0040]用于调制解调器处理器210的所有可执行映像214和文件系统220可与AP可执行映像218和AP文件系统216 —起存储于非易失性存储器206中。应用处理器204可将其AP可执行映像218加载到应用处理器易失性存储器208中,并将其存储为AP可执行映像222。应用处理器易失性存储器208还可用于存储AP运行时间数据224。可使用调制解调器处理器的私用密钥将调制解调器文件系统加密,以用于隐私保护并防止用户身份仿冒。
[0041]在系统加电之后,调制解调器启动ROM代码226将调制解调器可执彳丁映像214和调制解调器文件系统220两者从应用处理器204下载到调制解调器处理器易失性存储器212中。在正常操作期间,从调制解调器处理器易失性存储器212提供对调制解调器文件系统228的任何读取存取的服务。任何写入存取也在调制解调器处理器易失性存储器212中执行。另外,调制解调器处理器210和应用处理器204上可能有后台进程在运行,以同步调制解调器处理器易失性存储器212中的文件系统228与非易失性存储器206上所存储的调制解调器文件系统220的内容。
[0042]主处理器和二级处理器可周期性地同步用于二级处理器的易失性存储器中的文件系统与主非易失性存储器中的对应文件系统。到调制解调器文件系统228的第一写入可开始调制解调器处理器210中的计时器(例如,十分钟计时器)。当此计时器在运行时,到文件系统228的所有写入合并到调制解调器处理器易失性存储器212中。在计时器到期之后,调制解调器处理器210从易失性存储器212复制文件系统映像228,对其进行加密,并警告应用处理器204新数据可用。应用处理器204读取经加密复本,并将其写入到非易失性存储器206的调制解调器文件系统220中。接着,应用处理器204用信号向调制解调器处理器210表示写入操作已完成。如果同步操作失败,那么可使用调制解调器文件系统的目前版本,这意味着调制解调器处理器210可继续使用当前驻留于其自身易失性存储器中的映像进行执行,而非从应用处理器204重新加载映像。同步可周期性地发生(例如,每90秒),或在调制解调器进行到其文件系统的写入操作之后的一定时间之后发生。为防止因为例如突然性移除电力等情况造成破坏,可存储调制解调器文件系统220的两个复本。
[0043]调制解调器处理器210还可向应用处理器的非易失性存储器206起始文件系统镜像228的“清空”操作。出于若干原因可发生此情况,包含电话关机以及将确认消息发送到网络以指示接受并存储传入的SMS消息。
[0044]反映调制解调器文件系统的当前状态的调制解调器处理器易失性存储器212服务于对调制解调器处理器210的文件系统读取操作。因为读取操作比写入操作频繁,且写入操作倾向于在活动“突发”时发生,所以可减少总系统负载和功率消耗。
[0045]应用处理器204、调制解调器处理器210和启动加载程序采取特定措施,以确保在所有时间非易失性存储器206中都有至少一个完整文件系统映像可供使用。此情况提供对电力丢失或突然性复位情境的抗扰性。
[0046]本文中所揭示的概念的应用并不限于上文所展示的示范性系统,而同样可结合各种其它多处理器系统进行利用。
[0047]零复本输送流
[0048]本发明的方面提供用于将可执行软件映像从主处理器的非易失性存储器有效地加载到二级处理器的易失性存储器的技术。如上文所提及,常规加载进程要求缓冲二进制多段式映像(例如,传送到系统存储器中)且接着稍后将其分散到目标位置中(例如,通过启动加载程序)的中间步骤。本发明的方面提供取消常规加载进程中所要求的缓冲中间步骤的技术。因此,本发明的方面避免了额外的存储器复制操作,从而改善了性能(例如,减少了启动多处理器系统中的二级处理器所要求的时间)。
[0049]如下文进一步所论述,本发明的一个示范性方面利用用于将可执行软件映像从主处理器的非易失性存储器加载到二级处理器的易失性存储器的直接分散加载技术。本发明的某些方面还能实现同时进行映像传送与传送后数据处理(例如,认证),此情况可进一步改善效率,如下文进一步所论述。
[0050]在一个方面中,主机主处理器并不处理或提取来自实际映像数据的任何信息一其仅将映像数据作为“原始”数据发送到目标,而不将任何包标头附接到包。因为目标二级处理器起始数据传送请求,所以其准确地知道要接收多少数据。此情况使得主机能够发送没有包标头的数据,且目标能够直接接收并存储数据。在所述方面中,目标视需要向主机请求数据。其请求的第一数据项为用于给定映像传送的映像标头。一旦目标已处理映像标头,其就知道映像中的每一数据片段的位置和大小。映像标头还指定映像在目标存储器中的目的地地址。在具有此信息的情况下,目标可针对每一片段向主机请求数据,并将数据直接传送到目标存储器中的适当位置。用于应用处理器上的处理器间通信总线的硬件控制器可添加其自身的低级协议标头,将由调制解调器处理器处理并剥除所述标头。这些低级标头对于运行于这两个处理器上的软件来说可以是透明的。
[0051]在本发明的一个方面中,将加载进程划分成两个阶段,如图3中所展示的示范性流程中所说明。图3展示主处理器301 (其可为具有其非易失性存储器106或206的图1或图2的应用处理器104或204)和二级处理器302 (其可为具有其易失性存储器112或212的图1或图2的调制解调器处理器110或210)的框图。在图3中,将用于二级处理器302的示范性软件映像存储到主处理器301的非易失性存储器。如此实例中所展示,示范性软件映像303为包含映像标头部分和多个数据片段(在此实例中展示为数据片段I到5)的多片段映像。主处理器301和二级处理器302可位于不同物理硅芯片上(即,不同芯片封装上),或可位于相同封装上。
[0052]在图3的示范性加载进程的第一阶段中,将映像标头信息传送到二级处理器302。主处理器301从映像标头开始从主处理器的非易失性存储器306检索数据映像片段。主处理器301解析映像标头,以将个别映像片段从主处理器的非易失性存储器306加载到主处理器的系统存储器307。映像标头包含用于识别最终将调制解调器映像可执行数据放置于二级处理器的系统存储器305中的哪个位置的信息。由二级处理器302使用标头信息对分散加载程序/直接存储器存取控制器304进行编程以在接收实际可执行数据时接收地址。接着,将数据片段从系统存储器307发送到主硬件输送机构308。接着,将片段从主处理器301的硬件输送机构308经由处理器间通信总线310(例如,HS-USB缆线)发送到二级处理器302的硬件输送机构309。所传送的第一片段可为映像标头,其含有由二级处理器所使用以将数据片段定位于二级处理器的系统存储器305中的目标位置中的信息。映像标头可包含用于确定数据的目标位置信息的信息。
[0053]在一个方面中,目标位置并非预定的,而是作为分散加载进程的部分由在二级处理器中执行的软件所确定。来自映像标头的信息可用于确定目标位置。在此方面中,二级处理器的启动加载程序首先向主处理器请求映像标头(主处理器CPU根本不处理映像标头)。二级处理器通过查看映像标头(除RAM地址/大小之外,标头还包含每一片段相对于映像文件的开始在非易失性存储器中的相对位置)知道数据片段如何布置于非易失性存储器中。由二级处理器驱动对数据片段的后续请求。
[0054]在另一方面中,主处理器可通过如下方式指示将片段放置于二级处理器的易失性存储器中的哪个位置:解析映像标头,且接着对二级处理器的控制器进行编程,以将接下来的数据片段放置于映像标头中所规定的指定地址中。此情况可涉及额外硬件,以允许二级处理器的控制器的此外部控制。
[0055]映像标头大体上包含定义片段中的每一者应加载于二级处理器的系统存储器305中的哪个位置的片段开始地址和大小列表。二级处理器302包含一个包含分散加载程序控制器304的硬件输送机构309 (例如,USB控制器)。在加载进程的第二阶段中,启动加载程序对处理器间连接控制器的引擎进行设计,以接收传入的数据并根据第一阶段中所接收的标头信息将传入的数据分散加载到二级处理器的对应目标存储器区域305中。
[0056]在USB或HSIC总线的情况下,可将映像的每一片段作为处理器间通信总线310上的单一 USB传送予以传送。知道片段大小和目的地地址允许软件对二级处理器302的分散加载程序控制器304进行编程,以用于在二级处理器302的最少的软件干预的情况下,将整个片段直接传送到目标存储器位置(系统存储器305内)中。当片段显著较大(例如,超过I兆字节(MB))时,此情况可使得USB/HSIC总线上的性能增加。
[0057]如图3中所展示,数据片段未必放置于二级处理器的系统存储器305内的连续位置中。实际上,片段可散布于存储器的不同位置中。图3的示范性加载进程使得能够将二级处理器的软件复本(即,映像303)从主处理器301直接发送到二级处理器的系统存储器305上的最后片段目的地。另外,可仅存在所传送的单一数据片段。
[0058]将映像标头从主处理器301加载到二级处理器302的分散加载程序控制器304。所述映像标头提供关于数据片段位于系统存储器305中的哪个位置的信息。因此,分散加载程序控制器304直接将映像片段传送到二级处理器的系统存储器305中的其相应目标位置。也就是说,一旦二级处理器的CPU处理其存储器305中的映像标头,并对分散加载程序控制器304进行编程,分散加载程序控制器304就准确地知道映像数据片段去往二级处理器的系统存储器305内的哪个位置,且因此,接着相应地对硬件分散加载程序控制器304进行编程,以将数据片段直接传送到其目标目的地中。在图3的实例中,分散加载程序控制器304接收数据片段,并将其分散到系统存储器305中的不同位置。在一个方面中,在无需将整个可执行软件映像存储于二级处理器的硬件缓冲区中的情况下,将可执行软件映像加载到二级处理器的系统存储器中。在一个方面中,待传送的映像数据片段位于存储器306中的非邻接位置中。在另一方面中,仅传送单一映像数据片段。在另一方面中,传送多个映像数据片段。
[0059]因此,在上文的方面中,二级处理器中并未发生额外的存储器复制操作。因此,为支持更有效的直接加载进程,避免利用用于整个映像的临时缓冲区和包标头处理等的常规技术。因此,图3的示范性加载进程并不要求将软件映像从主处理器加载到二级处理器所传统地要求的中间缓冲区操作。图3的示范性加载进程允许将映像片段从硬件直接分散加载到系统存储器的其相应目标目的地,而非从保存整个映像的临时缓冲区进行分散加载。一旦处理映像标头,直接将可执行映像分散加载到目标存储器,从而避免进一步的CPU参与。
[0060]常规地,当涉及外部接口(例如,如在将映像数据从主处理器传达到二级处理器时所使用)时,要求某一机构以输送数据,使得两个处理器都知道实际数据的内容和读取数据的方式。常常地,将待经由外部接口传送的数据包化,其中每一包包含描述包内含有的数据的标头。举例来说,在经由网络传送数据的传输控制协议/因特网协议(TCP/IP)系统中,出现与处理包标头相关联的开销。
[0061]根据本发明的某些方面(例如,如图3的实例中),输送原始映像数据。举例来说,图3的示范性加载进程根据与整个映像相关联的标头来确定关于数据的所要信息,而非输送具有包标头的映像数据的每一片段。因此,可初始地传送映像标头,且用于确定将数据存储于系统存储器305的方式的所有处理可在(基于映像标头)传送片段之前发生,且接着将片段作为原始数据传送,而非在传送片段时,要求处理用于每一片段的包标头。因此,在图3的实例中,将原始映像数据从主处理器传达到二级处理器,且接着由可剥离任何USB包标头等的硬件对其进行处理。在此示范性方面中,未对实际数据片段进行CPU处理,从而改善加载进程的效率。
[0062]当必须将多个映像加载到同一二级处理器的易失性存储器中时,根据本发明的一个方面,可将图3的上文序列重复与所传送的映像数目一样多的次数。在某些方面中,在主处理器301内,从非易失性存储器到系统存储器的传送可与将数据从主处理器发送到二级处理器并行地发生。
[0063]在一个方面中,在完成每一片段传送之后,二级处理器302对分散加载程序控制器304进行编程以传送下一片段,并开始认证刚传送的片段。此情况使得分散加载程序控制器304能够在二级处理器302执行认证时传送数据。此处的认证大体上指代检查所接收数据的完整性和真实性。认证机制的细节不在本发明的范围内,且如给定实施方案中可能需要的,可利用任何合适的认证机制(包含所属领域中众所周知的那些机制)。上文所提及的并行性也可适用于在给定实施方案中可能需要由二级处理器302执行的其它传送后处理。
[0064]一传送和认证最后映像的最后片段,二级处理器302就可继续启动进程并执行所传送的映像。
[0065]处理器间通信协议
[0066]还揭示处理器间通信协议。在本发明的一个方面中,提供从二级处理器所驱动的示范性协议。举例来说,二级处理器可从主处理器起始其需要的任何数据传送。换句话说,二级处理器向主处理器指令二级处理器想要接收的数据内容。因此,在某些方面中,主处理器可具有驻留于某处(例如,主处理器所耦合的非易失性存储器上)的可执行软件映像(文件),且一识别符可与所述文件相关联。二级处理器(或“目标”)可将所述识别符发送到主处理器,并指令主处理器发送驻留于文件内的指定偏移处的对应数据。作为响应,主处理器可将所述原始数据发送到二级处理器。因此,并不要求传回数据中存在包标头,而实际上直接将传回数据从主处理器发送到二级处理器,二级处理器将在接收到数据之后即刻将其推送到二级处理器的系统存储器中的适当位置。
[0067]以下内容描述处理器间通信协议的示范性实施例的进一步细节。虽然描述下文示范性实施例的特定细节,但应理解本文中针对处理器间通信协议所描述的概念并不限于下文所描述的特定细节。
[0068]企塑
[0069]此以下描述提供关于可用于从存储器传送数据/将数据传送到存储器的示范性处理器间通信协议的信息。所述描述包含关于协议的包结构、包流和示范性使用的信息。下文所描述的示范性协议的特定实施方案并不提供用于认证/验证使用协议所发送的数据的机制。此类机制超出本文中所提供的示范性协议描述的范围,但如给定应用可能需要的,可在传送数据时,结合此协议实施任何合适的认证和/或验证机构。
[0070]示范件协议的概沭
[0071]下文所描述的处理器间通信协议的示范性方面主要经设计以用于将软件映像从主机(例如,“主处理器”)传送到目标(例如,“二级处理器”)。协议提供用于请求经由任何物理链路传送数据的简单机制。
[0072]所述协议的此示范性方面支持两种基本包类型:命令包和数据包。在主机与目标之间发送命令包以设置数据包的传送。
[0073]目标驱动的协议。所述协议的此示范性方面通过减少在主机与目标之间所发送的命令包数目而减少数据传送开销。通过使所述协议为目标驱动且通过使目标执行数据处理而实现此情况。主机等待数据传送请求,所述请求含有以下信息:
[0074]?用以传送的数据映像
[0075].映像中开始读取的偏移
[0076].数据传送长度
[0077]主机并不处理或提取来自实际映像数据的任何信息一其将映像数据作为“原始”数据发送到目标,而不将任何包标头附接到包。因为目标起始数据传送请求,所以其准确地知道要接收多少数据。此情况使得主机能够发送没有包标头的数据,且目标能够直接接收并存储数据。
[0078]目标可视需要向主机请求数据。其在所述协议的此示范性方面中请求的第一数据项为用于给定软件映像传送的映像标头。一旦目标已处理映像标头,其便知道映像中的每一数据片段的位置和大小。映像标头还指定映像在目标存储器中的目的地地址。在具有此信息的情况下,目标可针对每一片段向主机请求数据,并将数据直接传送到目标存储器中的适当位置。
[0079]包处理。所述协议的此示范性方面通过使用物理输送层来提供可靠的数据传送而减少包处理。并未在协议层级处将成帧、HDLC(高级数据链路控制)编码或CRC(循环冗余检查)应用于包。
[0080]每一命令包类型具有可含有命令ID和包长度的经定义结构。使用此信息,可通过比较所接收的命令包的长度与以下两值中的任一者而验证每一命令包的长度:
[0081]?给定命令ID的预期包长度
[0082]?包自身中所含有的长度字段
[0083]可通过将CRC字段添加到每一包的末端而容易地扩展所述协议的此示范性方面,以支持命令包验证。还可使用各种认证方法来验证数据包的数据完整性;然而,此情况超出所述协议的此示范性方面的本描述的范围。
[0084]已确以通信。根据所述协议的此示范性方面,确认主机与目标之间的通信。用从主机发送回到目标的命令或数据包确认从目标发送到主机的命令包。类似地,用从目标到主机的命令或数据包确认从主机发送到目标的命令包。
[0085]尽管预期主机与目标之间的链路是可靠的,但如果在将命令包从主机传输到目标期间发生错误,且结果目标接收到不正确的包,那么目标将把错误响应发送到主机。
[0086]可在主机和目标两者上实施计时器机构,以在传输失败的情况下支持包的重新传输。然而,此类机构的实施方案超出所述协议的此示范性方面的本描述的范围——其仅指定当在目标侧上接收到非预期或不正确的包时会发生的情况。
[0087]扩展性。所述协议的此示范性方面定义命令结构和包流的固定集合。然而,可容易地扩展所述集合,以支持额外的命令结构和状态转变(如下文进一步所描述)。[0088]梓口
[0089]概述。所述协议的此示范性方面定义两种类型的包:
[0090].命令包
[0091]?数据包
[0092]下文根据所述协议的此示范性方面展示这些包的结构:
[0093]命令包
[0094]
【权利要求】
1.一种在多处理器系统中的两个处理器之间的通信方法,所述方法包括: 由二级处理器起始与主处理器的通信; 由所述二级处理器指令所述主处理器传送用于可执行软件映像的映像标头,所述可执行软件映像包括所述映像标头和至少一个数据片段; 由所述二级处理器接收所述映像标头和至少一个数据片段; 由所述二级处理器向所述主处理器指示成功地接收到所述映像标头和至少一个数据片段; 由所述二级处理器从所述主处理器接收终止所述可执行软件映像传送的指示;和 由所述二级处理器向所述主处理器确认接收到所述终止传送指示。
2.根据权利要求1所述的方法,其中所述映像标头包括映像数据所在的存储器中的映像大小和位置。
3.根据权利要求1所述的方法,其进一步包括由所述二级处理器向所述主处理器发送对所述至少一个数据片 段中的每一者的传送请求。
4.根据权利要求1所述的方法,其中所述指令包括由所述二级处理器向所述主处理器发送包括映像识别符、数据偏移和数据长度的消息。
5.根据权利要求1所述的方法,其进一步包括由所述二级处理器将用于传入数据片段的接收缓冲区设定为所述二级处理器的存储器中的目的地地址。
6.一种多处理器装置,其包括: 用于由二级处理器起始与主处理器的通信的装置; 用于由所述二级处理器指令所述主处理器传送用于可执行软件映像的映像标头的装置,所述可执行软件映像包括所述映像标头和至少一个数据片段; 用于由所述二级处理器接收所述映像标头和至少一个数据片段的装置; 用于由所述二级处理器向所述主处理器指示成功地接收到所述映像标头和至少一个数据片段的装置; 用于由所述二级处理器从所述主处理器接收终止所述可执行软件映像传送的指示的装置;和 用于由所述二级处理器向所述主处理器确认接收到所述终止传送指示的装置。
7.根据权利要求6所述的多处理器装置,其中所述映像标头包括映像数据所在的存储器中的映像大小和位置。
8.根据权利要求6所述的多处理器装置,其进一步包括用于由所述二级处理器向所述主处理器发送对所述至少一个数据片段中的每一者的传送请求的装置。
9.根据权利要求6所述的多处理器装置,其中所述用于指令的装置包括用于由所述二级处理器向所述主处理器发送包括映像识别符、数据偏移和数据长度的消息的装置。
10.根据权利要求6所述的多处理器装置,其进一步包括用于由所述二级处理器将用于传入数据片段的接收缓冲区设定为所述二级处理器的存储器中的目的地地址的装置。
11.一种计算机程序产品,其包括: 其上记录有非暂时性程序代码的非暂时性计算机可读媒体,所述非暂时性程序代码包括: 用以由二级处理器起始与主处理器的通信的程序代码;用以由所述二级处理器指令所述主处理器传送用于可执行软件映像的映像标头的程序代码,所述可执行软件映像包括所述映像标头和至少一个数据片段; 用以由所述二级处理器接收所述映像标头和至少一个数据片段的程序代码; 用以由所述二级处理器向所述主处理器指示成功地接收到所述映像标头和至少一个数据片段的程序代码; 用以由所述二级处理器从所述主处理器接收终止所述可执行软件映像传送的指示的程序代码;和 用以由所述二级处理 器向所述主处理器确认接收到所述终止传送指示的程序代码。
12.根据权利要求11所述的计算机程序产品,其中所述映像标头包括映像数据所在的存储器中的映像大小和位置。
13.根据权利要求11所述的计算机程序产品,其中所述非暂时性程序代码进一步包括用以由所述二级处理器向所述主处理器发送对所述至少一个数据片段中的每一者的传送请求的程序代码。
14.根据权利要求11所述的计算机程序产品,其中所述用以指令的程序代码包括用以由所述二级处理器向所述主处理器发送包括映像识别符、数据偏移和数据长度的消息的程序代码。
15.根据权利要求11所述的计算机程序产品,其中所述非暂时性程序代码进一步包括用以由所述二级处理器将用于传入数据片段的接收缓冲区设定为所述二级处理器的存储器中的目的地地址的程序代码。
16.一种在多处理器系统中的两个处理器之间的通信方法,所述方法包括: 由主处理器接收传送用于可执行软件映像的映像标头的指令,所述可执行软件映像包括所述映像标头和至少一个数据片段; 由所述主处理器将所述映像标头和至少一个数据片段发送到二级处理器; 由所述主处理器从所述二级处理器接收成功地接收到所述映像标头和至少一个数据片段的指示; 由所述主处理器发送终止所述可执行映像传送的指示;和 由所述主处理器从所述二级处理器接收对接收到所述终止传送指示的确认。
17.根据权利要求16所述的方法,其中所述映像标头包括映像数据所在的存储器中的映像大小和位置。
18.根据权利要求16所述的方法,其进一步包括由所述主处理器接收对所述主处理器的对所述至少一个数据片段中的每一者的传送请求。
19.根据权利要求16所述的方法,其进一步包括由所述主处理器从所述二级处理器接收包括映像识别符、数据偏移和数据长度的消息。
20.根据权利要求19所述的方法,其进一步包括基于所述消息发送数据。
21.一种多处理器装置,其包括: 用于由主处理器接收传送用于可执行软件映像的映像标头的指令的装置,所述可执行软件映像包括所述映像标头和至少一个数据片段; 用于由所述主处理器将所述映像标头和至少一个数据片段发送到二级处理器的装置;用于由所述主处理器从所述二级处理器接收成功地接收到所述映像标头和至少一个数据片段的指示的装置; 用于由所述主处理器发送终止所述可执行映像传送的指示的装置;和 用于由所述主处理器从所述二级处理器接收对接收到所述终止传送指示的确认的装置。
22.根据权利要求21所述的多处理器装置,其中所述映像标头包括定位映像数据的存储器中的映像大小和位置。
23.根据权利要求21所述的多处理器装置,其进一步包括用于由所述主处理器接收对所述主处理器的对所述至少一个数据片段中的每一者的传送请求的装置。
24.根据权利要求21所述的多处理器装置,进一步包括用于由所述主处理器从所述二级处理器接收包括映像识别符、数据偏移和数据长度的消息的装置。
25.根据权利要求24所述的方法,其进一步包括用于基于所述消息而发送数据的装置。
26.一种计算机程序产品,其包括: 其上记录有非暂时性程序代码的非暂时性计算机可读媒体,所述非暂时性程序代码包 括: 用以由主处理器接收传送用于可执行软件映像的映像标头的指令的程序代码,所述可执行软件映像包括所述映像标头和至少一个数据片段; 用以由所述主处理器将所述映像标头和至少一个数据片段发送到二级处理器的程序代码; 用以由所述主处理器从所述二级处理器接收成功地接收到所述映像标头和至少一个数据片段的指示的程序代码; 用以由所述主处理器发送终止所述可执行映像传送的指示的程序代码;和用以由所述主处理器从所述二级处理器接收对接收到所述终止传送指示的确认的程序代码。
27.根据权利要求26所述的计算机程序产品,其中所述映像标头包括映像数据所在的存储器中的映像大小和位置。
28.根据权利要求26所述的计算机程序产品,其中所述非暂时性程序代码进一步包括用以由所述主处理器接收对所述主处理器的对所述至少一个数据片段中的每一者的传送请求的程序代码。
29.根据权利要求26所述的计算机程序产品,其中所述非暂时性程序代码进一步包括用以由所述主处理器从所述二级处理器接收包括映像识别符、数据偏移和数据长度的消息的程序代码。
30.根据权利要求29所述的计算机程序产品,其中所述非暂时性程序代码进一步包括用以基于所述消息发送数据的程序代码。
【文档编号】G06F9/445GK103975305SQ201280059732
【公开日】2014年8月6日 申请日期:2012年12月5日 优先权日:2011年12月5日
【发明者】尼丁·古谱塔, 丹尼尔·H·金, 伊戈尔·马拉曼特, 史蒂夫·黑尼辰 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1