(57)【要約】【課題】マルチプロセッサシステム内の2つのプロセッサ間の通信方法を提供する。【解決手段】マルチプロセッサシステムでは、1次プロセッサが2次プロセッサ用の実行可能イメージを記憶することができる。通信プロトコルは、1次プロセッサから2次プロセッサへの実行可能イメージのイメージヘッダおよびデータセグメントの転送を支援する。1次プロセッサと2次プロセッサとの間のメッセージは、転送されたデータの成功した受信、転送プロセスの終了、および転送プロセスの終了の確認応答を示す。【選択図】図４
2018045718.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステム内の2つのプロセッサ間の通信方法であって、
2次プロセッサにより、1次プロセッサとの通信を開始するステップと、
前記2次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントを含む実行可能ソフトウェアイメージ用の前記イメージヘッダを転送するように、前記1次プロセッサに命令するステップと、
前記2次プロセッサにより、前記1次プロセッサから、前記イメージヘッダおよび少なくとも1つのデータセグメントを受信するステップと、
前記2次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信を、前記1次プロセッサに示すステップと、
前記2次プロセッサにより、前記2次プロセッサのシステムメモリのターゲットロケーション内に前記実行可能ソフトウェアイメージの前記少なくとも1つのデータセグメントを直接記憶するステップであって、前記ターゲットロケーションは、前記イメージヘッダに従って前記2次プロセッサにより割り当てられる、ステップと、
前記2次プロセッサにより、転送終了の指示の受信を、前記1次プロセッサに確認応答するステップであって、前記確認応答は、前記2次プロセッサが、別の実行可能ソフトウェアイメージを前記1次プロセッサにより転送されることを期待するかどうかを示す、ステップと、
前記2次プロセッサにより、前記2次プロセッサのシステムメモリ内の連続していないターゲットロケーションに前記実行可能ソフトウェアイメージの複数のデータセグメントを直接記憶するステップと
を含み、
前記複数のデータセグメントを直接記憶するステップは、
前記2次プロセッサにより、前記複数のデータセグメントの各々について、前記1次プロセッサに転送要求を送るステップと、
前記2次プロセッサにより、前記1次プロセッサから、前記複数のデータセグメントの各々を受信するステップと
を含む、方法。
【請求項２】
前記イメージヘッダが、イメージサイズと、イメージデータが位置するメモリ内のロケーションとを含む、請求項1に記載の方法。
【請求項３】
前記命令するステップが、前記2次プロセッサにより、イメージ識別情報、データオフセット、およびデータ長を含むメッセージを、前記1次プロセッサに送るステップを含む、請求項1に記載の方法。
【請求項４】
前記2次プロセッサにより、着信データセグメント用の受信バッファを、前記2次プロセッサの前記システムメモリ内の宛先アドレスになるようにセットするステップをさらに含む、請求項1に記載の方法。
【請求項５】
2次プロセッサにより、1次プロセッサとの通信を開始するための手段と、
前記2次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントを含む実行可能ソフトウェアイメージ用の前記イメージヘッダを転送するように、前記1次プロセッサに命令するための手段と、
前記2次プロセッサにより、前記1次プロセッサから、前記イメージヘッダおよび少なくとも1つのデータセグメントを受信するための手段と、
前記2次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信を、前記1次プロセッサに示すための手段と、
前記2次プロセッサにより、前記2次プロセッサのシステムメモリのターゲットロケーション内に前記実行可能ソフトウェアイメージの前記少なくとも1つのデータセグメントを直接記憶するための手段であって、前記ターゲットロケーションは前記イメージヘッダに従って前記2次プロセッサにより割り当てられる、手段と、
前記2次プロセッサにより、転送終了の指示の受信を、前記1次プロセッサに確認応答するための手段であって、前記確認応答は、前記2次プロセッサが、別の実行可能ソフトウェアイメージを前記1次プロセッサにより転送されることを期待するかどうかを示す、手段と、
前記2次プロセッサにより、前記2次プロセッサのシステムメモリ内の連続していないターゲットロケーションに前記実行可能ソフトウェアイメージの複数のデータセグメントを直接記憶するための手段と
を備え、
前記複数のデータセグメントを直接記憶するための手段は、
前記2次プロセッサにより、前記複数のデータセグメントの各々について、前記1次プロセッサに転送要求を送るための手段と、
前記2次プロセッサにより、前記1次プロセッサから、前記複数のデータセグメントの各々を受信するための手段と
を含む、マルチプロセッサデバイス。
【請求項６】
前記イメージヘッダが、イメージサイズと、イメージデータが位置するメモリ内のロケーションとを含む、請求項5に記載のマルチプロセッサデバイス。
【請求項７】
前記命令するための手段が、前記2次プロセッサにより、イメージ識別情報、データオフセット、およびデータ長を含むメッセージを、前記1次プロセッサに送るための手段を備える、請求項5に記載のマルチプロセッサデバイス。
【請求項８】
前記2次プロセッサにより、着信データセグメント用の受信バッファを、前記2次プロセッサの前記システムメモリ内の宛先アドレスになるようにセットするための手段をさらに備える、請求項5に記載のマルチプロセッサデバイス。
【請求項９】
プロセッサにより実行可能なプログラムコードを含むコンピュータプログラムであって、前記プログラムコードが、
2次プロセッサにより、1次プロセッサとの通信を開始するプログラムコードと、
前記2次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントを含む実行可能ソフトウェアイメージ用の前記イメージヘッダを転送するように、前記1次プロセッサに命令するプログラムコードと、
前記2次プロセッサにより、前記1次プロセッサから、前記イメージヘッダおよび少なくとも1つのデータセグメントを受信するプログラムコードと、
前記2次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信を、前記1次プロセッサに示すプログラムコードと、
前記2次プロセッサにより、前記2次プロセッサのシステムメモリのターゲットロケーション内に前記実行可能ソフトウェアイメージの前記少なくとも1つのデータセグメントを直接記憶するプログラムコードであって、前記ターゲットロケーションは前記イメージヘッダに従って前記2次プロセッサにより割り当てられる、プログラムコードと、
前記2次プロセッサにより、転送終了の指示の受信を、前記1次プロセッサに確認応答するプログラムコードであって、前記確認応答は、前記2次プロセッサが、別の実行可能ソフトウェアイメージを前記1次プロセッサにより転送されることを期待するかどうかを示す、プログラムコードと、
前記2次プロセッサにより、前記2次プロセッサのシステムメモリ内の連続していないターゲットロケーションに前記実行可能ソフトウェアイメージの複数のデータセグメントを直接記憶するプログラムコードと
を含み、
前記複数のデータセグメントを直接記憶するプログラムコードは、
前記2次プロセッサにより、前記複数のデータセグメントの各々について、前記1次プロセッサに転送要求を送るプログラムコードと、
前記2次プロセッサにより、前記1次プロセッサから、前記複数のデータセグメントの各々を受信するプログラムコードと
を含む、コンピュータプログラム。
【請求項１０】
前記イメージヘッダが、イメージサイズと、イメージデータが位置するメモリ内のロケーションとを含む、請求項9に記載のコンピュータプログラム。
【請求項１１】
前記命令するプログラムコードが、前記2次プロセッサにより、イメージ識別情報、データオフセット、およびデータ長を含むメッセージを、前記1次プロセッサに送るプログラムコードを含む、請求項9に記載のコンピュータプログラム。
【請求項１２】
前記プログラムコードが、前記2次プロセッサにより、着信データセグメント用の受信バッファを、前記2次プロセッサの前記システムメモリ内の宛先アドレスになるようにセットするプログラムコードをさらに含む、請求項9に記載のコンピュータプログラム。
【請求項１３】
マルチプロセッサシステム内の2つのプロセッサ間の通信方法であって、
1次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントを含む実行可能ソフトウェアイメージ用の前記イメージヘッダを転送する命令を受信するステップと、
前記1次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントを2次プロセッサに送るステップであって、前記実行可能ソフトウェアイメージの前記少なくとも1つのデータセグメントは、前記2次プロセッサのシステムメモリのターゲットロケーション内に直接記憶され、前記ターゲットロケーションは、前記イメージヘッダに従って割り当てられる、ステップと、
前記1次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信の前記2次プロセッサからの指示を受信するステップと、
前記1次プロセッサにより、前記実行可能ソフトウェアイメージの転送終了の指示を送るステップと、
前記1次プロセッサにより、前記転送終了の指示の受信の前記2次プロセッサからの確認応答を受信するステップであって、前記確認応答は、前記2次プロセッサが、別の実行可能ソフトウェアイメージを前記1次プロセッサにより転送されることを期待するかどうかを示す、ステップと、
前記1次プロセッサにより、複数のデータセグメントを前記2次プロセッサに送るステップであって、前記実行可能ソフトウェアイメージの複数のデータセグメントが、前記2次プロセッサのシステムメモリ内の連続していないターゲットロケーションに直接記憶される、ステップと
を含み、
前記複数のデータセグメントを送るステップは、
前記1次プロセッサにより、前記複数のデータセグメントの各々について、転送要求を受信するステップと、
前記1次プロセッサにより、前記2次プロセッサに、前記複数のデータセグメントの各々を送るステップと
を含む、方法。
【請求項１４】
前記イメージヘッダが、イメージサイズと、イメージデータが位置するメモリ内のロケーションとを含む、請求項13に記載の方法。
【請求項１５】
前記1次プロセッサにより、イメージ識別情報、データオフセット、およびデータ長を含む前記2次プロセッサからのメッセージを受信するステップをさらに含む、請求項13に記載の方法。
【請求項１６】
前記メッセージに基づいてデータを送るステップをさらに含む、請求項15に記載の方法。
【請求項１７】
1次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントを含む実行可能ソフトウェアイメージ用の前記イメージヘッダを転送する命令を受信するための手段と、
前記1次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントを2次プロセッサに送るための手段であって、前記実行可能ソフトウェアイメージの前記少なくとも1つのデータセグメントは、前記2次プロセッサのシステムメモリのターゲットロケーション内に直接記憶され、前記ターゲットロケーションは、前記イメージヘッダに従って割り当てられる、手段と、
前記1次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信の前記2次プロセッサからの指示を受信するための手段と、
前記1次プロセッサにより、前記実行可能ソフトウェアイメージの転送終了の指示を送るための手段と、
前記1次プロセッサにより、前記転送終了の指示の受信の前記2次プロセッサからの確認応答を受信するための手段であって、前記確認応答は、前記2次プロセッサが、別の実行可能ソフトウェアイメージを前記1次プロセッサにより転送されることを期待するかどうかを示す、手段と、
前記1次プロセッサにより、複数のデータセグメントを前記2次プロセッサに送るための手段であって、前記実行可能ソフトウェアイメージの複数のデータセグメントが、前記2次プロセッサのシステムメモリ内の連続していないターゲットロケーションに直接記憶される、手段と
を備え、
前記複数のデータセグメントを送るための手段は、
前記1次プロセッサにより、前記複数のデータセグメントの各々について、転送要求を受信するための手段と、
前記1次プロセッサにより、前記2次プロセッサに、前記複数のデータセグメントの各々を送るための手段と
を含む、マルチプロセッサデバイス。
【請求項１８】
前記イメージヘッダが、イメージサイズと、イメージデータが位置するメモリ内のロケーションとを含む、請求項17に記載のマルチプロセッサデバイス。
【請求項１９】
前記1次プロセッサにより、イメージ識別情報、データオフセット、およびデータ長を含む前記2次プロセッサからのメッセージを受信するための手段をさらに備える、請求項17に記載のマルチプロセッサデバイス。
【請求項２０】
メッセージに基づいてデータを送るための手段をさらに備える、請求項19に記載のマルチプロセッサデバイス。
【請求項２１】
プロセッサにより実行可能なプログラムコードを含むコンピュータプログラムであって、前記プログラムコードが、
1次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントを含む実行可能ソフトウェアイメージ用の前記イメージヘッダを転送する命令を受信するプログラムコードと、
前記1次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントを2次プロセッサに送るプログラムコードであって、前記実行可能ソフトウェアイメージの前記少なくとも1つのデータセグメントは、2次プロセッサのシステムメモリのターゲットロケーション内に直接記憶され、前記ターゲットロケーションは、前記イメージヘッダに従って割り当てられる、プログラムコードと、
前記1次プロセッサにより、前記イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信の前記2次プロセッサからの指示を受信するプログラムコードと、
前記1次プロセッサにより、前記実行可能ソフトウェアイメージの転送終了の指示を送るプログラムコードと、
前記1次プロセッサにより、前記転送終了の指示の受信の前記2次プロセッサからの確認応答を受信するプログラムコードであって、前記確認応答は、前記2次プロセッサが、別の実行可能ソフトウェアイメージを前記1次プロセッサにより転送されることを期待するかどうかを示す、プログラムコードと、
前記1次プロセッサにより、複数のデータセグメントを前記2次プロセッサに送るプログラムコードであって、前記実行可能ソフトウェアイメージの複数のデータセグメントが、前記2次プロセッサのシステムメモリ内の連続していないターゲットロケーションに直接記憶される、プログラムコードと
を含み、
前記複数のデータセグメントを送るプログラムコードは、
前記1次プロセッサにより、前記複数のデータセグメントの各々について、転送要求を受信するプログラムコードと、
前記1次プロセッサにより、前記2次プロセッサに、前記複数のデータセグメントの各々を送るプログラムコードと
を含む、コンピュータプログラム。
【請求項２２】
前記イメージヘッダが、イメージサイズと、イメージデータが位置するメモリ内のロケーションとを含む、請求項21に記載のコンピュータプログラム。
【請求項２３】
前記プログラムコードが、前記1次プロセッサにより、イメージ識別情報、データオフセット、およびデータ長を含む前記2次プロセッサからのメッセージを受信するプログラムコードをさらに含む、請求項21に記載のコンピュータプログラム。
【請求項２４】
前記プログラムコードが、前記メッセージに基づいてデータを送るプログラムコードをさらに含む、請求項23に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、それらの開示が全体として参照により明白に本明細書に組み込まれる、MALAMANTらの名前で2010年3月22日に出願された米国仮特許出願第61/316,369号、GUPTAらの名前で2010年4月14日に出願された米国仮特許出願第61/324,035号、GUPTAらの名前で2010年4月14日に出願された米国仮特許出願第61/324,122号、GUPTAらの名前で2010年4月19日に出願された米国仮特許出願第61/325,519号の利益を主張する、GUPTAらの名前で2011年3月21日に出願された米国特許出願第13/052,516号の一部継続出願である。
【０００２】
以下の説明は、一般に、マルチプロセッサシステムに関し、より詳細には、専用揮発性メモリに各々が結合されたシステム内の1つまたは複数の他のプロセッサ(本明細書では「2次」プロセッサと呼ぶ)の実行可能ソフトウェアイメージを記憶している不揮発性メモリに、1次プロセッサが結合されたマルチプロセッサシステムに関し、実行可能ソフトウェアイメージは、(たとえば、直接分散ロードプロセスを使用して)セグメント化されたフォーマットで1次プロセッサから2次プロセッサに効率的に通信される。
【背景技術】
【０００３】
プロセッサは、ソフトウェアコードを実行して動作を遂行する。プロセッサは、起動させるために実行されるべき、通常ブートコードと呼ばれる特定のソフトウェアコードを使用することができる。マルチプロセッサシステムでは、各プロセッサは、起動させるためのそれぞれのブートコードを使用することができる。一例として、アプリケーションプロセッサおよびモデムプロセッサを含むスマートフォンデバイスでは、プロセッサの各々は、起動させるためのそれぞれのブートコードを使用することができる。
【０００４】
複数のプロセッサ(たとえば、別個のモデムプロセッサチップと一体化した独立型アプリケーションプロセッサチップ)を組み込んだ(スマートフォンなどの)非常に多くのデバイスには、問題が存在する。各プロセッサが実行可能イメージおよびファイルシステムの不揮発性メモリ(たとえば、持続性ストレージ)を有するので、フラッシュ/不揮発性メモリ構成要素は、プロセッサの各々のために使用される場合がある。たとえば、プロセッサのブートコードは、プロセッサのそれぞれの不揮発性メモリ(たとえば、フラッシュメモリ、読取り専用メモリ(ROM)など)に記憶することができ、電源投入時に、ブートコードソフトウェアは、それぞれの不揮発性メモリからプロセッサによって実行されるためにロードされる。したがって、このタイプのアーキテクチャでは、プロセッサのブートコードなどの実行可能ソフトウェアは、プロセッサにシステム内の別のプロセッサからロードする必要はない。
【０００５】
しかしながら、各プロセッサに専用不揮発性メモリを追加すると、回路基板の空間がより多く占有され、それにより回路基板のサイズが大きくなる。いくつかの設計では、ランダムアクセスメモリ(RAM)およびフラッシュメモリ向けの結合されたチップ(RAMデバイスとフラッシュデバイスとを1つのパッケージとして積層してサイズを縮小している)を使用して、基板のサイズを縮小することができる。マルチチップパッケージの解決策により、必要な回路基板のフットプリントはある程度縮小されるが、コストが増大する可能性がある。
【０００６】
いくつかのマルチプロセッサシステムでは、1つのプロセッサに別のプロセッサからソフトウェアがロードされる場合がある。たとえば、マルチプロセッサシステム内の第1のプロセッサが、システム内の1つまたは複数の他のプロセッサのためのブートコードをその不揮発性メモリに記憶することを担当し、その場合、他のプロセッサの不揮発性メモリにそのようなブートコードが存在する場合とは異なり、電源投入時に第1のプロセッサが他のプロセッサにそれぞれのブートコードをロードする任務を負うと仮定する。このタイプのシステムでは、ソフトウェア(たとえば、ブートイメージ)が第1のプロセッサから他のプロセッサに(たとえば、他のプロセッサの揮発性メモリに)ダウンロードされ、その後、受信プロセッサがダウンロードされたイメージでブートする。
【０００７】
しばしば、ロードされるソフトウェアイメージは、バイナリのマルチセグメント化されたイメージである。たとえば、ソフトウェアイメージは、コードの複数のセグメントの前にヘッダを含む場合がある。ソフトウェアイメージが外部デバイスから(たとえば、別のプロセッサから)ターゲットデバイス(たとえば、ターゲットプロセッサ)にロードされるとき、バイナリのマルチセグメント化されたイメージがブートローダによってシステムメモリに転送され、次いで後ほどターゲットロケーションに転送される中間ステップが存在する場合がある。
【０００８】
ソフトウェアイメージが第1の「1次」プロセッサからターゲットの「2次」プロセッサにロードされるシステムでは、そのようなローディングを実施する1つの方法は、各パケットが受信される一時バッファを割り当てることであり、各パケットは、ペイロードとともに関連パケットヘッダ情報を有する。この場合のペイロードは、実際のイメージデータである。一時バッファから、処理の一部をペイロード上で実行することができ、次いでペイロードを最終的な宛先に上書きすることができる。一時バッファは、たとえば内部のランダムアクセスメモリ(RAM)またはダブルデータレート(DDR)メモリの中などのシステムメモリの中に位置する場合がある。
【０００９】
したがって、中間バッファが使用される場合、1次プロセッサから2次プロセッサにダウンロードされるデータは、中間バッファにコピーされる。このようにして、バッファを使用して、1次プロセッサからイメージデータの一部を受信し、バッファから、イメージデータを2次プロセッサのメモリ(たとえば、揮発性メモリ)に分散することができる。
【００１０】
1次プロセッサ、および2次プロセッサ用のブートイメージを記憶する1次プロセッサの不揮発性メモリは、2次プロセッサが実装されるチップとは異なるチップに実装される場合がある。したがって、1次プロセッサの不揮発性メモリから2次プロセッサに(たとえば、2次プロセッサの揮発性メモリに)データを転送するために、パケットベースの通信が利用される場合があり、その場合、2次プロセッサに通信される各パケットにパケットヘッダが含まれる。パケットは中間バッファに記憶され、データがその最終的な宛先(たとえば、2次プロセッサの揮発性メモリ内)に記憶されるように、受信パケットの何らかの処理が実行される。
【発明の概要】
【課題を解決するための手段】
【００１１】
マルチプロセッサシステム内の2つのプロセッサ間の通信方法が提供される。方法は、2次プロセッサにより、1次プロセッサとの通信を開始するステップを含む。方法はまた、2次プロセッサにより、実行可能ソフトウェアイメージ用のイメージヘッダを転送するように、1次プロセッサに命令するステップを含む。実行可能ソフトウェアイメージは、イメージヘッダおよびデータセグメントを含む。方法はさらに、2次プロセッサにより、イメージヘッダおよびデータセグメントを受信するステップを含む。方法はさらに、2次プロセッサにより、イメージヘッダおよびデータセグメントの成功した受信を、1次プロセッサに示すステップを含む。方法はさらに、2次プロセッサにより、実行可能ソフトウェアイメージの転送終了の指示を、1次プロセッサから受信するステップを含む。方法はまた、2次プロセッサにより、転送終了の指示の受信を、1次プロセッサに確認応答するステップを含む。
【００１２】
マルチプロセッサデバイスが提供される。デバイスは、2次プロセッサにより、1次プロセッサとの通信を開始するための手段を含む。デバイスはまた、2次プロセッサにより、実行可能ソフトウェアイメージ用のイメージヘッダを転送するように、1次プロセッサに命令するための手段を含む。実行可能ソフトウェアイメージは、イメージヘッダおよびデータセグメントを含む。デバイスはさらに、2次プロセッサにより、イメージヘッダおよびデータセグメントを受信するための手段を含む。デバイスはさらに、2次プロセッサにより、イメージヘッダおよびデータセグメントの成功した受信を、1次プロセッサに示すための手段を含む。デバイスはさらに、2次プロセッサにより、実行可能ソフトウェアイメージの転送終了の指示を、1次プロセッサから受信するための手段を含む。デバイスはまた、2次プロセッサにより、転送終了の指示の受信を、1次プロセッサに確認応答するための手段を含む。
【００１３】
コンピュータプログラム製品が提供される。コンピュータプログラム製品は、非一時的プログラムコードが記録された非一時的コンピュータ可読媒体を含む。非一時的プログラムコードは、2次プロセッサにより、1次プロセッサとの通信を開始するプログラムコードを含む。非一時的プログラムコードはさらに、2次プロセッサにより、実行可能ソフトウェアイメージ用のイメージヘッダを転送するように、1次プロセッサに命令するプログラムコードを含む。実行可能ソフトウェアイメージは、イメージヘッダおよびデータセグメントを含む。非一時的プログラムコードはさらに、2次プロセッサにより、イメージヘッダおよびデータセグメントを受信するプログラムコードを含む。非一時的プログラムコードはさらに、2次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信を、1次プロセッサに示すプログラムコードを含む。非一時的プログラムコードはさらに、2次プロセッサにより、実行可能ソフトウェアイメージの転送終了の指示を、1次プロセッサから受信するプログラムコードを含む。非一時的プログラムコードはまた、2次プロセッサにより、転送終了の指示の受信を、1次プロセッサに確認応答するプログラムコードを含む。
【００１４】
マルチプロセッサシステム内の2つのプロセッサ間の通信方法が提供される。方法は、1次プロセッサにより、実行可能ソフトウェアイメージ用のイメージヘッダを転送する命令を受信するステップを含む。実行可能ソフトウェアイメージは、イメージヘッダおよびデータセグメントを含む。方法はまた、1次プロセッサにより、イメージヘッダおよびデータセグメントを2次プロセッサに送るステップを含む。方法はさらに、1次プロセッサにより、イメージヘッダおよびデータセグメントの成功した受信の指示を、2次プロセッサから受信するステップを含む。方法はさらに、1次プロセッサにより、実行可能イメージの転送終了の指示を送るステップを含む。方法はまた、1次プロセッサにより、転送終了の指示の受信の2次プロセッサからの確認応答を受信するステップを含む。
【００１５】
マルチプロセッサデバイスが提供される。デバイスは、1次プロセッサにより、実行可能ソフトウェアイメージ用のイメージヘッダを転送する命令を受信するための手段を含む。実行可能ソフトウェアイメージは、イメージヘッダおよびデータセグメントを含む。デバイスはまた、1次プロセッサにより、イメージヘッダおよびデータセグメントを2次プロセッサに送るための手段を含む。デバイスはさらに、1次プロセッサにより、イメージヘッダおよびデータセグメントの成功した受信の指示を、2次プロセッサから受信するための手段を含む。デバイスはさらに、1次プロセッサにより、実行可能イメージの転送終了の指示を送るための手段を含む。デバイスはまた、1次プロセッサにより、転送終了の指示の受信の2次プロセッサからの確認応答を受信するための手段を含む。
【００１６】
コンピュータプログラム製品が提供される。コンピュータプログラム製品は、非一時的プログラムコードが記録された非一時的コンピュータ可読媒体を含む。非一時的プログラムコードは、1次プロセッサにより、実行可能ソフトウェアイメージ用のイメージヘッダを転送する命令を受信するプログラムコードを含み、前記実行可能ソフトウェアイメージは、前記イメージヘッダおよびデータセグメントを含む。非一時的プログラムコードはまた、1次プロセッサにより、イメージヘッダおよびデータセグメントを2次プロセッサに送るプログラムコードを含む。非一時的プログラムコードはさらに、1次プロセッサにより、イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信の指示を、2次プロセッサから受信するプログラムコードを含む。非一時的プログラムコードはさらに、1次プロセッサにより、実行可能イメージの転送終了の指示を送るプログラムコードを含む。非一時的プログラムコードはさらに、1次プロセッサにより、転送終了の指示の受信の2次プロセッサからの確認応答を受信するプログラムコードを含む。
【００１７】
本教示をより完全に理解するために、次に、添付図面とともに行われる以下の説明を参照する。
【図面の簡単な説明】
【００１８】
【図１】その内部で本開示の態様が実施され得る、例示的なデバイスを示す図である。
【図２】その内部で本開示の態様が実施され得る、例示的なデバイスを示す図である。
【図３】本開示の一態様による、1次プロセッサから2次プロセッサに実行可能イメージをロードするための、例示的なローディングプロセスの動作フローを示す図である。
【図４】本開示の一態様による、2つのプロセッサ間のパケットフローを示す図である。
【図５】その中で本開示の態様が有利に利用され得る、例示的なワイヤレス通信システムを示すブロック図である。
【図６】本開示の一態様による、実行可能ソフトウェアイメージの転送に関する通信を示すブロック図である。
【図７】本開示の一態様による、実行可能ソフトウェアイメージの転送に関する通信を示すブロック図である。
【発明を実施するための形態】
【００１９】
「例示的な」という単語は、「例、実例、または具体例としての役割を果たすこと」を意味するように本明細書では使用される。「例示的な」ものとして本明細書に記載されたいずれの態様も、必ずしも他の態様よりも好ましい、または有利であると解釈されるとは限らない。
【００２０】
本明細書で開示されるいくつかの態様は、1つの1次プロセッサが、システム内の1つまたは複数の他のプロセッサ(本明細書では「2次」プロセッサと呼ぶ)の実行可能イメージを記憶している不揮発性メモリに接続される、マルチプロセッサシステムに関する。そのようなマルチプロセッサシステムでは、2次プロセッサの各々を、実行可能イメージ、実行時データ、および場合によってはファイルシステムミラーを記憶するために使用される専用揮発性メモリに接続することができる。
【００２１】
実行可能イメージは、しばしばセグメント化されたフォーマットに記憶され、この場合、各セグメントを異なるメモリ領域にロードすることができる。実行可能セグメントのターゲットメモリロケーションは、互いに隣接している場合も、隣接していない場合もある。マルチセグメント化されたイメージフォーマットの一例はExecutable and Linking Format(ELF)であり、これにより実行可能イメージを複数のセグメントに分けることが可能になり、これらのセグメントの各々を異なるシステムメモリロケーションにロードすることができる。
【００２２】
1つの例示的な態様では、1次プロセッサの不揮発性メモリから2次プロセッサの揮発性メモリに、セグメント化されたイメージをロードするための直接分散ロード技法が開示される。以下でさらに記載されるように、直接分散ロード技法は一時バッファの使用を回避する。たとえば、一態様では、各々がそれぞれのヘッダを含むパケットを介してイメージが通信されるパケットベースの通信を使用するのではなく、1次プロセッサから2次プロセッサに生のイメージデータがロードされる。別の態様では、データ用のターゲットロケーション情報を特定するために使用される情報を含むヘッダが使用される。
ファイルシステム用の集中型不揮発性メモリを有し、縮小された局在化不揮発性メモリを有する、例示的なマルチプロセッサアーキテクチャ
【００２３】
図1は、1次プロセッサ(アプリケーションプロセッサ104)が1次(大型)不揮発性メモリ106(たとえば、NAND型フラッシュメモリ)のホストとして働き、2次プロセッサ(たとえば、モデムプロセッサ110)が2次(縮小または最小)不揮発性メモリ114(たとえば、NOR型フラッシュメモリ)を有する、第1のマルチプロセッサアーキテクチャ102のブロック図を示す。
【００２４】
通信デバイスアーキテクチャ102では、アプリケーションプロセッサ104は、1次不揮発性メモリ106およびアプリケーションプロセッサ揮発性メモリ108(たとえば、ランダムアクセスメモリ)に結合される。モデムプロセッサ110は、2次不揮発性メモリ114およびモデムプロセッサ揮発性メモリ112に結合される。プロセッサ間通信バス134は、アプリケーションプロセッサ104とモデムプロセッサ110との間の通信を可能にする。
【００２５】
モデムプロセッサ110用のモデム実行可能イメージ120は、アプリケーションプロセッサ(AP)不揮発性メモリ106の中に、AP実行可能イメージ118およびAPファイルシステム116とともに記憶することができる。アプリケーションプロセッサ104は、そのAP実行可能イメージ118をアプリケーションプロセッサ揮発性メモリ108にロードし、それをAP実行可能イメージ122として記憶することができる。アプリケーションプロセッサ揮発性メモリ108は、AP実行時データ124を記憶する役目を果たすこともできる。
【００２６】
モデムプロセッサ110は、そのファイルシステム128を記憶するための、専用2次(縮小または最小)不揮発性メモリ114(たとえば、NOR型フラッシュ)を有する。この2次(縮小または最小)不揮発性メモリ114は、実行時モデム実行可能イメージ120とファイルシステム128の両方を記憶することが可能なフラッシュデバイスよりも小さく、コストが低い。
【００２７】
システムの電源投入時に、モデムプロセッサ110は、ハードウェアブートROM126(小型読取り専用オンチップメモリ)から1次ブートローダ(PBL)を実行する。モデムPBLは、アプリケーションプロセッサ104からモデム実行可能ファイル120をダウンロードするようになされることができる。すなわち、(最初に1次不揮発性メモリ106に記憶される)モデム実行可能イメージ120は、アプリケーションプロセッサ104からモデムプロセッサ110によって要求される。アプリケーションプロセッサ104は、モデム実行可能イメージ120を取り出し、プロセッサ間通信バス134(たとえば、プロセッサ間通信バス)を介してモデムプロセッサ110にそれを提供する。モデムプロセッサ110は、モデム実行可能イメージ132を、モデムプロセッサRAM(ランダムアクセスメモリ)112内の一時バッファにデータをコピーすることなく、最終的な宛先であるモデムプロセッサRAM112に直接記憶する。プロセッサ間通信バス134は、たとえば、HSICバス(USBベースの高速インターチップ)、HSIバス(MIPI高速同期インターフェース)、SDIOバス(セキュアデジタルI/Oインターフェース)、UARTバス(汎用非同期受信機/送信機)、SPIバス(シリアルペリフェラルインターフェース)、I2Cバス(インター集積回路)、またはモデムプロセッサ110とアプリケーションプロセッサ104の両方で利用できるチップ間通信に適した任意の他のハードウェアインターフェースであり得る。
【００２８】
モデム実行可能イメージ120は、モデムプロセッサRAM112にダウンロードされ、認証されると、モデム実行可能イメージ132として維持される。加えて、モデムプロセッサ揮発性メモリ112は、モデム実行時データ130を記憶することもできる。次いで、モデムブートROMコード126は、そのモデム実行可能イメージ132にジャンプし、モデムプロセッサRAM112から主要なモデムプログラムの実行を開始することができる。無線周波数(RF)キャリブレーションおよびシステムパラメータなどの任意の持続性(不揮発性)データは、モデムプロセッサ110に取り付けられた2次(縮小または最小)不揮発性メモリ114を使用して、モデムファイルシステム128に記憶することができる。
ファイルシステム用の集中型不揮発性メモリを有し、局在化不揮発性メモリを有していない、例示的なマルチプロセッサアーキテクチャ
【００２９】
図2は、1次プロセッサ(アプリケーションプロセッサ204)が1次(大型)不揮発性メモリ206(たとえば、NAND型フラッシュメモリ)のホストとして働く、第2のマルチプロセッサアーキテクチャ202のブロック図を示す。1次不揮発性メモリ206は、2次プロセッサ(モデムプロセッサ210)のためのモデム実行可能イメージ214および/またはモデムファイルシステム220を記憶することができる。2次プロセッサ(モデムプロセッサ210)は、1次プロセッサ204からモデム実行可能イメージ214および/またはモデムファイルシステム220を要求するように構成することができる。次いで、1次プロセッサ204は、要求されたモデム実行可能イメージ214および/またはモデムファイルシステム220を不揮発性メモリ206から取り出し、プロセッサ間通信バス234を介して2次プロセッサ210にそれを提供する。
【００３０】
このアーキテクチャ202では、アプリケーションプロセッサ204は、不揮発性メモリ206およびアプリケーションプロセッサ揮発性メモリ208(たとえば、ランダムアクセスメモリ)に結合される。モデムプロセッサ210は、モデムプロセッサ揮発性メモリ212に結合されるが、それ自体の不揮発性メモリを有していない。モデムプロセッサ揮発性メモリ212は、ファイルシステムミラー228、モデム実行可能イメージ236およびモデム実行時データ230を記憶する。プロセッサ間通信バス234は、アプリケーションプロセッサ204とモデムプロセッサ210との間の通信を可能にする。
【００３１】
モデムプロセッサ210のためのすべての実行可能イメージ214およびファイルシステム220は、不揮発性メモリ206の中に、AP実行可能イメージ218およびAPファイルシステム216とともに記憶することができる。アプリケーションプロセッサ204は、そのAP実行可能イメージ218をアプリケーションプロセッサ揮発性メモリ208にロードし、それをAP実行可能イメージ222として記憶することができる。アプリケーションプロセッサ揮発性メモリ208は、AP実行時データ224を記憶する役目を果たすこともできる。モデムファイルシステムは、プライバシー保護および加入者識別情報の複製防止のために、モデムプロセッサの秘密鍵で暗号化することができる。
【００３２】
システムの電源投入時に、モデムブートROMコード226は、モデム実行可能イメージ214とモデムファイルシステム220の両方を、アプリケーションプロセッサ204からモデムプロセッサ揮発性メモリ212にダウンロードする。正常動作中には、モデムファイルシステム228へのいかなる読取りアクセスも、モデムプロセッサ揮発性メモリ212によって行われる。いかなる書込みアクセスも、モデムプロセッサ揮発性メモリ212内で実施される。加えて、モデムプロセッサ揮発性メモリ212内のファイルシステム228の内容を、不揮発性メモリ206に記憶されているモデムファイルシステム220と同期させるために、モデムプロセッサ210およびアプリケーションプロセッサ204で動作するバックグラウンドプロセスが存在する場合がある。
【００３３】
1次プロセッサおよび2次プロセッサは、2次プロセッサ用の揮発性メモリ内のファイルシステムを、1次不揮発性メモリ内の対応するファイルシステムと周期的に同期させることができる。モデムファイルシステム228への最初の書込みにより、モデムプロセッサ210内のタイマ(たとえば、10分のタイマ)が開始され得る。このタイマが作動している間、ファイルシステム228へのすべての書込みは、モデムプロセッサ揮発性メモリ212に一本化される。タイマの終了時に、モデムプロセッサ210は、揮発性メモリ212からファイルシステムイメージ228をコピーし、それを暗号化し、新たなデータが入手できることをアプリケーションプロセッサ204に警告する。アプリケーションプロセッサ204は、暗号化されたコピーを読み取り、それを不揮発性メモリ206のモデムファイルシステム220に書き込む。次いで、アプリケーションプロセッサ204は、書込み動作が完了したことをモデムプロセッサ210に通知する。同期化動作が失敗した場合、モデムファイルシステムの現在バージョンを使用することができ、モデムプロセッサ210が、アプリケーションプロセッサ204からイメージを再ロードするのではなく、それ自体の揮発性メモリに現在存在するイメージで実行を続けることができることを意味する。同期化は、周期的に(たとえば、90秒ごとに)、またはモデムによるそのファイルシステムへの書込み動作から一定の時間が経過した後に、起こる場合がある。突然の電力消失などの事態からの破損を防止するために、モデムファイルシステム220の2つのコピーを記憶することができる。
【００３４】
モデムプロセッサ210は、アプリケーションプロセッサの不揮発性メモリ206に対するファイルシステムミラー228の「フラッシュ」動作を開始することもできる。これは、電話の電源切断、ならびに、ネットワークに確認メッセージを送って着信SMSメッセージの受信および記憶を示すことを含む、いくつかの理由で起こる場合がある。
【００３５】
モデムプロセッサ210でのファイルシステム読取り動作は、モデムプロセッサ揮発性メモリ212によって行われ、これはモデムファイルシステムの現在の状態を反映する。読取り動作は書込み動作よりも頻度が高く、書込み動作は活動の「バースト」で起こる傾向があるので、全体的なシステムロードおよび電力消費を低減することができる。
【００３６】
アプリケーションプロセッサ204、モデムプロセッサ210およびブートローダは、利用できる少なくとも1つの完全なファイルシステムイメージが常に不揮発性メモリ206内にあることを確実にするために、具体的措置を講じている。これにより、電力喪失または突然のリセットシナリオの影響を受けずに済む。
【００３７】
本明細書で開示された概念の適用は、上記で示された例示的なシステムに限定されず、同様に様々な他のマルチプロセッサシステムで使用することができる。
ゼロコピー移送フロー
【００３８】
本開示の態様は、1次プロセッサの不揮発性メモリから2次プロセッサの揮発性メモリに、実行可能ソフトウェアイメージを効率的にロードするための技法を提供する。上述されたように、従来のローディングプロセスでは、(たとえば、ブートローダにより)バイナリのマルチセグメント化されたイメージがバッファリングされ(たとえば、システムメモリに転送され)、次いでターゲットロケーションに分散される中間ステップが必要である。本開示の態様は、従来のローディングプロセスで必要なバッファリングの中間ステップを軽減する技法を提供する。したがって、本開示の態様は、余分なメモリコピー動作を回避し、それにより性能が改善される(たとえば、マルチプロセッサシステムで2次プロセッサをブートするのに必要な時間が削減される)。
【００３９】
以下でさらに説明されるように、本開示の1つの例示的な態様は、1次プロセッサの不揮発性メモリから2次プロセッサの揮発性メモリに、実行可能ソフトウェアイメージをロードするための直接分散ロード技法を使用する。本開示のいくつかの態様はまた、以下でさらに説明されるように、認証などの転送後のデータ処理と同時のイメージ転送を可能にし、効率性をさらに高めることができる。
【００４０】
一態様では、ホストの1次プロセッサは、実際のイメージデータからのいかなる情報の処理または抽出も行わず、パケットにいかなるパケットヘッダも添付せずに、イメージデータを「生」データとしてターゲットに送るだけである。ターゲットの2次プロセッサは、データ転送要求を開始するので、どれだけのデータを受信するかを正確に把握している。これにより、ホストがパケットヘッダなしでデータを送ることが可能になり、ターゲットがデータを直接受信し記憶することが可能になる。この態様では、ターゲットは必要に応じてホストからデータを要求する。ターゲットが要求する第1のデータ項目は、所与のイメージ転送用のイメージヘッダである。ターゲットは、イメージヘッダを処理すると、イメージ内の各データセグメントのロケーションおよびサイズを把握する。イメージヘッダはまた、ターゲットメモリ内のイメージの宛先アドレスを指定する。この情報を用いて、ターゲットはセグメントごとにホストからデータを要求し、ターゲットメモリ内の適切なロケーションにデータを直接転送することができる。アプリケーションプロセッサ上のプロセッサ間通信バス用のハードウェアコントローラは、それ自体の低レベルプロトコルヘッダを追加することができ、これはモデムプロセッサによって処理され、取り除かれる。これらの低レベルヘッダは、両方のプロセッサで動作するソフトウェアに透過的であり得る。
【００４１】
本開示の一態様では、図3に示された例示的なフローで示されているように、ローディングプロセスは2つの段階に分けられる。図3は、(不揮発性メモリ106または206を有する、図1または図2のアプリケーションプロセッサ104または204であり得る)1次プロセッサ301、および(揮発性メモリ112または212を有する、図1または図2のモデムプロセッサ110または210であり得る)2次プロセッサ302のブロック図を示す。図3では、2次プロセッサ302用の例示的なソフトウェアイメージは、1次プロセッサ301の不揮発性メモリに記憶されている。この例で示されたように、例示的なソフトウェアイメージ303は、イメージヘッダ部分および(この例ではデータセグメント1〜5として示された)複数のデータセグメントを含むマルチセグメントイメージである。1次プロセッサ301および2次プロセッサ302は、異なる物理シリコンチップに(すなわち、異なるチップパッケージに)位置する場合も、同じパッケージに位置する場合もある。
【００４２】
図3の例示的なローディングプロセスの第1の段階では、イメージヘッダ情報が2次プロセッサ302に転送される。1次プロセッサ301は、1次プロセッサの不揮発性メモリ306から、イメージヘッダで始まるデータイメージセグメントを取り出す。1次プロセッサ301はイメージヘッダを解析して、1次プロセッサの不揮発性メモリ306から1次プロセッサのシステムメモリ307に、個々のイメージセグメントをロードする。イメージヘッダは、2次プロセッサのシステムメモリ305のどこにモデムイメージ実行可能データを最終的に入れるかを特定するために使用される情報を含む。ヘッダ情報は、実際の実行可能データを受信したときにアドレスを受信するように、分散ローダ/直接メモリアクセスコントローラ304をプログラミングするために、2次プロセッサ302によって使用される。次いで、データセグメントは、システムメモリ307から1次ハードウェア移送機構308に送られる。次いで、セグメントは、プロセッサ間通信バス310(たとえば、HS-USBケーブル)を介して、1次プロセッサ301のハードウェア移送機構308から2次プロセッサ302のハードウェア移送機構309に送られる。転送される第1のセグメントはイメージヘッダである場合があり、これは、2次プロセッサのシステムメモリ305内のターゲットロケーションにデータセグメントを位置付けるために、2次プロセッサによって使用される情報を含む。イメージヘッダは、データ用のターゲットロケーション情報を特定するために使用される情報を含む場合がある。
【００４３】
一態様では、ターゲットロケーションは事前に特定されているわけではなく、分散ローディングプロセスの一部として2次プロセッサでソフトウェアを実行することによって特定される。イメージヘッダからの情報を使用して、ターゲットロケーションを特定することができる。この態様では、2次プロセッサのブートローダが、最初に1次プロセッサからイメージヘッダを要求する(1次プロセッサのCPUは、イメージヘッダをまったく処理しない)。2次プロセッサは、イメージヘッダを見ることによって、不揮発性メモリ内でデータセグメントがどのように配置されているかを把握する(RAMのアドレス/サイズのほかに、ヘッダは、セグメントごとのイメージファイルの開始点に関する不揮発性メモリ内の相対ロケーションも含む)。その後のデータセグメントに対する要求は、2次プロセッサによって行われる。
【００４４】
別の態様では、1次プロセッサは、イメージヘッダを解析し、次いで、イメージヘッダで示される指定されたアドレスに後続するデータセグメントを配置するように2次プロセッサのコントローラをプログラミングすることによって、2次プロセッサの揮発性メモリ内のどこにセグメントを置くかを示すことができる。これは、2次プロセッサのコントローラをこのように外部から制御することを可能にする追加のハードウェアを伴うことがある。
【００４５】
イメージヘッダは、一般に、2次プロセッサのシステムメモリ305内のどこにセグメントの各々をロードすべきかを定めた、セグメントの開始アドレスおよびサイズのリストを含む。2次プロセッサ302は、分散ローダコントローラ304を含むハードウェア移送機構309(たとえば、USBコントローラ)を含む。ローディングプロセスの第2の段階では、ブートローダは、着信データを受信し、第1の段階で受信されたヘッダ情報に従って、それを2次プロセッサの対応するターゲットメモリ領域305に分散ロードするように、プロセッサ間接続コントローラのエンジンをプログラミングする。
【００４６】
USBまたはHSICバスの場合、イメージの各セグメントを、プロセッサ間通信バス310上の単一のUSB転送として転送することができる。セグメントのサイズおよび宛先アドレスを把握することにより、ソフトウェアが、2次プロセッサ302によるソフトウェア干渉を最小限に抑えて、(システムメモリ305内の)ターゲットメモリロケーションにセグメント全体を直接転送するために、2次プロセッサ302の分散ローダコントローラ304をプログラミングすることが可能になる。その結果、セグメントが著しく大きい(たとえば、1メガバイト(MB)を超える)ときのUSB/HSICバスの性能を向上することができる。
【００４７】
図3に示されたように、データセグメントは、必ずしも2次プロセッサのシステムメモリ305内の連続するロケーションに配置されるとは限らない。代わりに、セグメントはメモリの様々なロケーションに分散される場合がある。図3の例示的なローディングプロセスにより、2次プロセッサのソフトウェアのコピー(すなわち、イメージ303)を、1次プロセッサ301から2次プロセッサのシステムメモリ305上のセグメントの最終的な宛先に直接送ることが可能になる。さらに、単一のデータセグメントだけが転送される場合がある。
【００４８】
イメージヘッダは、1次プロセッサ301から2次プロセッサ302の分散ローダコントローラ304にロードされる。イメージヘッダは、システムメモリ305内のどこにデータセグメントを位置付けるかに関する情報を提供する。分散ローダコントローラ304は、それに応じて、イメージセグメントを2次プロセッサのシステムメモリ305内のそれぞれのターゲットロケーションに直接転送する。すなわち、2次プロセッサのCPUがそのメモリ305内のイメージヘッダを処理し、分散ローダコントローラ304をプログラミングすると、分散ローダコントローラ304は、2次プロセッサのシステムメモリ305内のどこにイメージデータセグメントが入るかを正確に把握し、そのため、次いでハードウェア分散ローダコントローラ304は、それに応じて、データセグメントをそれらのターゲットの宛先に直接転送するようにプログラミングされる。図3の例では、分散ローダコントローラ304は、データセグメントを受信し、それらをシステムメモリ305内の様々なロケーションに分散する。一態様では、実行可能ソフトウェアイメージ全体を2次プロセッサのハードウェアバッファに記憶することなく、実行可能ソフトウェアイメージが2次プロセッサのシステムメモリにロードされる。一態様では、転送されるべきイメージデータセグメントは、メモリ306内の連続していないロケーションに位置する。別の態様では、単一のイメージデータセグメントだけが転送される。別の態様では、複数のイメージデータセグメントが転送される。
【００４９】
したがって、上記の態様では、2次プロセッサ内で追加のメモリコピー動作は発生しない。そのため、イメージ全体のための一時バッファを使用する従来の技法、およびパケットヘッダ処理などは、より効率的な直接ローディングプロセスを優先してバイパスされる。そのため、図3の例示的なロードプロセスは、1次プロセッサから2次プロセッサにソフトウェアイメージをロードするのに従来必要とされた中間バッファ動作を必要としない。イメージ全体を保持する一時バッファから分散ロードする代わりに、図3の例示的なロードプロセスにより、それぞれのターゲットの宛先へのイメージセグメントを、ハードウェアからシステムメモリに直接分散ロードすることが可能になる。イメージヘッダが処理されると、実行可能イメージは、さらなるCPUの関与をバイパスして、ターゲットメモリに直接分散ロードされる。
【００５０】
従来、外部インターフェースが関与するとき(たとえば、1次プロセッサから2次プロセッサにイメージデータを通信する際に使用される場合)、両方のプロセッサが実際のデータの内容およびデータの読取り方法を把握するように当該データを移送するために何らかの機構が必要とされる。しばしば、外部インターフェースを介して転送されるデータはパケット化され、各パケットは、パケット内に含まれるデータを記述したヘッダを含む。たとえば、ネットワークを介してデータが転送されている伝送制御プロトコル/インターネットプロトコル(TCP/IP)システムでは、パケットヘッダの処理に関連するオーバーヘッドが生じる。
【００５１】
(たとえば、図3の例のような)本発明のいくつかの態様によれば、生のイメージデータが移送される。たとえば、パケットヘッダを有するイメージデータの各セグメントを移送するのではなく、図3の例示的なロードプロセスは、イメージ全体に関連するヘッダからデータに関する必要な情報を特定する。そのため、イメージヘッダを最初に転送することができ、(イメージヘッダに基づいて)セグメントの転送の前に、システムメモリ305にデータを記憶する方法を特定するためのすべての処理が生じることが可能で、次いで生データとしてセグメントが転送され、セグメントが転送されるのでセグメントごとのパケットヘッダの処理を必要としない。そのため、図3の例では、生のイメージデータが1次プロセッサから2次プロセッサに通信され、次いで、ハードウェアによって処理され、ハードウェアは任意のUSBパケットヘッダなどを取り除くことができる。この例示的な態様では、実際のデータセグメントに対するCPU処理が行われず、それにより、ロードプロセスの効率が改善される。
【００５２】
同じ2次プロセッサの揮発性メモリに複数のイメージをロードしなければならないとき、本開示の一態様により、図3の上記手順を、転送されるイメージの回数だけ繰り返すことができる。いくつかの態様では、1次プロセッサ301内において、不揮発性メモリからシステムメモリへの転送は、1次プロセッサから2次プロセッサにデータを送るのと並行して発生する場合がある。
【００５３】
一態様では、各セグメントの転送が完了すると、2次プロセッサ302は、次のセグメントを転送するように分散ローダコントローラ304をプログラミングし、転送されたばかりのセグメントの認証を開始する。これにより、2次プロセッサ302が認証を実行している間に、分散ローダコントローラ304がデータを転送することが可能になる。本明細書での認証は、一般に、受信データの完全性および信頼性をチェックすることを指す。認証メカニズムの詳細は本開示の範囲外であり、所与の実装形態で望まれ得るように、任意の適切な認証メカニズム(当技術分野でよく知られているものを含む)を使用することができる。上記の並行処理は、所与の実装形態で2次プロセッサ302によって実行されることが望まれ得る他の転送後の処理に適用することもできる。
【００５４】
最後のイメージの最後のセグメントが転送され認証されるとすぐに、2次プロセッサ302は、ブートプロセスを続行し、転送イメージを実行することができる。
プロセッサ間通信プロトコル
【００５５】
プロセッサ間通信プロトコルも開示される。本開示の一態様では、2次プロセッサから駆動される例示的なプロトコルが提供される。たとえば、2次プロセッサは、2次プロセッサが1次プロセッサから望むどのようなデータ転送も開始することができる。言い換えれば、2次プロセッサは、2次プロセッサが何のデータを受信したいかに関して、1次プロセッサに命令する。したがって、いくつかの態様では、1次プロセッサは、どこかに(たとえば、1次プロセッサが結合されている不揮発性メモリに)存在する実行可能ソフトウェアイメージ(ファイル)を有することができ、識別情報をそのファイルに関連付けることができる。2次プロセッサ(または「ターゲット」)は、その識別情報を1次プロセッサに送り、ファイル内の指定されたオフセットに存在している対応するデータを送るように、1次プロセッサに命令することができる。それに応答して、1次プロセッサは、その生データを2次プロセッサに送ることができる。そのため、返信されたデータにはパケットヘッダが必要ではなく、代わりに返信されたデータは、1次プロセッサから2次プロセッサに直接送られ、2次プロセッサは、データを受信すると、それを2次プロセッサのシステムメモリ内の適切なロケーションに入れる。
【００５６】
以下に、プロセッサ間通信プロトコルの例示的な実施形態についてさらなる詳細が記載される。下記の例示的な実施形態について具体的な詳細が記載されるが、プロセッサ間通信プロトコルについて本明細書に記載される概念は、下記に記載される特定の詳細には限定されないことを理解されたい。
【００５７】
序論
この以下の説明は、データをメモリに/から転送するために使用され得る、例示的なプロセッサ間通信プロトコルに関する情報を提供する。説明は、プロトコルのパケット構造、パケットフロー、および例示的な使用法に関する情報を含む。下記に記載される例示的なプロトコルの特定の実装形態は、プロトコルを使用して送られたデータを認証/検証するための機構を提供しない。そのような機構は、本明細書で提供される例示的なプロトコルの説明の範囲外であるが、所与の適用例に望まれる場合があるように、データが転送されているこのプロトコルと連携して、任意の適切な認証および/または検証の機構を実装することができる。
【００５８】
例示的なプロトコルの概要
下記に記載されるプロセッサ間通信プロトコルの例示的な態様は、主に、ホスト(たとえば、「1次プロセッサ」)からターゲット(たとえば、「2次プロセッサ」)にソフトウェアイメージを転送するために設計される。プロトコルは、任意の物理リンクを介して転送されるべきデータを要求するための簡単な機構を提供する。
【００５９】
このプロトコルの例示的な態様は、2つの基本的なパケットタイプ、コマンドパケットおよびデータパケットをサポートする。コマンドパケットは、ホストとターゲットとの間を送られて、データパケットの転送をセットアップする。
【００６０】
ターゲット駆動のプロトコル。このプロトコルの例示的な態様は、ホストとターゲットとの間を送られるコマンドパケットの数を減少させることによって、データ転送のオーバーヘッドを低減する。これは、プロトコルをターゲット駆動にすることによって、かつターゲットにデータ処理を実行させることによって達成される。ホストは、以下の情報を含んでいるデータ転送要求を待つ。
・転送するデータイメージ
・読取りを開始するイメージ内のオフセット
・データ転送の長さ
【００６１】
ホストは、実際のイメージデータからいかなる情報も処理または抽出せず、パケットにいかなるパケットヘッダも添付せずに、イメージデータを「生」データとしてターゲットに送る。ターゲットは、データ転送要求を開始するので、どれだけのデータを受信するかを正確に把握している。これにより、ホストがパケットヘッダなしでデータを送ること、およびターゲットがデータを直接受信して記憶することが可能になる。
【００６２】
ターゲットは、必要に応じてホストからデータを要求することができる。このプロトコルの例示的な態様においてターゲットが要求する第1のデータ項目は、所与のソフトウェアイメージの転送用のイメージヘッダである。ターゲットは、イメージヘッダを処理すると、イメージ内の各データセグメントのロケーションおよびサイズを把握する。イメージヘッダはまた、ターゲットメモリ内のイメージの宛先アドレスを指定する。この情報を用いて、ターゲットはセグメントごとにホストからデータを要求し、ターゲットメモリ内の適切なロケーションにデータを直接転送することができる。
【００６３】
パケット処理。このプロトコルの例示的な態様は、物理トランスポート層を使用して信頼できるデータ転送を提供することによって、パケット処理を削減する。フレーミング、HDLC(高レベルデータリンク制御)符号化、またはCRC(巡回冗長検査)は、プロトコルレベルでパケットに適用されない。
【００６４】
各コマンドパケットのタイプは、コマンドIDおよびパケット長を含むことができる、定義された構造を有する。この情報を使用して、各コマンドパケットの長さは、受信されたコマンドパケットの長さを2つの値のいずれかと比較することによって、検証することができる。
・所与のコマンドID用の予想パケット長
・パケット自体に含まれている長さフィールド
【００６５】
このプロトコルの例示的な態様は、各パケットの最後にCRCフィールドを追加することによって、コマンドパケットの検証をサポートするように、容易に拡張することができる。データパケットは、様々な認証方法を使用してデータの完全性について検証することもできるが、これはこのプロトコルの例示的な態様の本説明の範囲外である。
【００６６】
確認応答通信。このプロトコルの例示的な態様によれば、ホストとターゲットとの間の通信は確認応答される。ターゲットからホストに送られたコマンドパケットは、ホストからターゲットに送り返されたコマンドパケットまたはデータパケットで確認応答される。同様に、ホストからターゲットに送られたコマンドパケットは、ターゲットからホストへのコマンドパケットまたはデータパケットで確認応答される。
【００６７】
ホストとターゲットとの間のリンクは信頼できると予想されるが、ホストからターゲットへのコマンドパケットの送信中にエラーが発生し、結果としてターゲットが誤ったパケットを受信した場合、ターゲットはホストにエラー応答を送る。
【００６８】
送信失敗の場合パケットの再送信をサポートするために、ホストとターゲットの両方にタイマ機構を実装することができる。しかしながら、そのような機構の実装は、このプロトコルの例示的な態様の本説明の範囲外であり、プロトコルは、ターゲット側で予想外または誤ったパケットが受信されたときに何が起こるかだけを指定する。
【００６９】
拡張性。このプロトコルの例示的な態様は、コマンド構造およびパケットフローの固定セットを定義する。しかしながら、この固定セットは、(下記にさらに記載されるように)さらなるコマンド構造および状態遷移をサポートするように、容易に拡張することができる。
【００７０】
インターフェース
概要。このプロトコルの例示的な態様は、2つのタイプのパケットを定義する。
・コマンドパケット
・データパケット
【００７１】
このプロトコルの例示的な態様によるこれらのパケットの構造が下記に示される。
【００７２】
【表１】
2018045718.tif 000003
【００７３】
コマンドパケットは、コマンドIDおよびパケット長を含む。コマンドに応じて、パケットは追加のコマンド固有のフィールドを含む場合がある。コマンドパケットの構造により、プロトコルの将来の改訂版が、以前のプロトコルバージョンのパケット構造との互換性を保ちながら、パケットタイプの最後にフィールドを容易に追加することが可能になる。
【００７４】
コマンド。このプロトコルの例示的な態様のコマンドパケットで使用されるコマンドが、下記の表1に列記される。
【００７５】
【表２】
2018045718.tif 000004
【００７６】
ハローパケット。ターゲットがハローパケットを送るとき、ターゲットは下記の表2に示されたフォーマットを使用する。
【００７７】
【表３】
2018045718.tif 000005
【００７８】
ハローパケットは、ターゲットがホストに送る最初のパケットである。ホストが任意の他のパケットを受信した場合、ホストはターゲットにリセットコマンドを送る。
【００７９】
ホストが有効なハローパケットを受信したとき、ホストは最初に、ターゲットで実行しているプロトコルがホストで実行しているプロトコルと互換性があることを検証する。プロトコルが不適合である場合、ホストはターゲットにリセットコマンドを送る。
【００８０】
ターゲットはまた、ターゲットがサポートするコマンドパケットの最大長を送り、ホストはこの情報を使用して、ターゲットが受信コマンドバッファ内でサポートできるよりも多いバイトを送ることを回避する。
【００８１】
ハロー応答パケット。ホストがハロー応答パケットを送るとき、ホストは下記の表3に示されたフォーマットを使用する。
【００８２】
【表４】
2018045718.tif 000006
【００８３】
ホストがターゲットで実行しているプロトコルを検証すると、ホストは以下の情報をターゲットに送る。
・ホストが実行しているプロトコルバージョン
・ホストがサポートする最小プロトコルバージョン
【００８４】
ホスト側でエラーが発生しない場合、ホストはパケットステータスフィールドを「成功」にセットする。ターゲットがこのパケットを受信すると、ターゲットはデータ転送要求を進めることができる。
【００８５】
データ読取りパケット。ターゲットがデータ読取りパケットを送るとき、ターゲットは下記の表4に示されたフォーマットを使用する。
【００８６】
【表５】
2018045718.tif 000007
【００８７】
イメージ転送を開始するために、ターゲットはこのパケットを、ターゲットが受信したいイメージに対応するイメージIDで満たす。ターゲットはまた、イメージファイル内へのオフセット、およびターゲットがイメージから読み取りたいデータの長さ(バイト単位)を送る。
【００８８】
このパケットは、イメージデータがホストからターゲットに転送されるべきときの一般的なデータ転送パケットとして働く。データ読取りパケットは、イメージがホストからターゲットに転送される方法における柔軟性をもたせる。ターゲットはどのデータが転送されるかを制御するので、ターゲットはイメージのどの部分がどの順序で転送されるかを決定することができる。
【００８９】
ホストは、イメージの構造に関して何も把握することができず、単にファイルをオープンし、パケットで指定されたパラメータに基づいて、ターゲットへのデータ転送を開始するにすぎない。これにより、イメージがどのように転送され処理されるかについてのターゲットの制御が与えられる。
【００９０】
ホストがこのパケットを受信したとき、ホストはデータパケットで応答することを期待される。データパケットは、イメージデータのみを含まなければならず、データ読取りパケットで指定された長さでなければならない。
【００９１】
ホストがデータ読取りパケットで以下のいずれかを受信した場合、いくつかのエラー状態が発生する可能性がある。
・無効またはサポートされていないイメージID
・無効データオフセット
・無効データ長
【００９２】
上記のフィールドのいずれかが無効である場合、またはホストで任意の他のエラーが発生した場合、ホストは、ターゲットが予想していた長さと一致しない長さを有するデータパケットを送る可能性がある。生じたエラーは、ステータスフィールドにエラーコードを有するイメージ転送の終了パケット(表5の例示的なパケット構造を参照)をターゲットに送らせる。このトランザクションにより、ターゲットとホストの両方がエラー処理状態に入ることが可能になる。
【００９３】
このプロトコルの例示的な態様は、状態機械によって実装することができ、そこでは、発生する任意のエラーにより、ホストがリセットパケット(下記の「例示的なプロトコル実装」のさらなる説明を参照)を送る結果になる。プロトコルのいくつかの実装形態は、いくつかのエラーを処理するためにホストエラーパケットおよびホストエラー応答パケットを使用できる実装形態を提供することができる。
【００９４】
イメージ転送の終了パケット。ターゲットがイメージ転送の終了パケットを送るとき、ターゲットは下記の表5に示されたフォーマットを使用する。
【００９５】
【表６】
2018045718.tif 000008
【００９６】
イメージ転送が首尾よく完了した場合、ターゲットは、「成功」ステータスを有するイメージ転送の終了パケットをホストに送る。この時点で、ターゲットはホストが完了パケットを送るのを待つ。イメージデータの転送または処理の間にいずれかのエラーが発生した場合、ステータスは対応するエラーコードにセットされ、ターゲットは異なるコマンドパケットを待つ。
【００９７】
このプロトコルの例示的な態様は、状態機械によって実装することができ、そこでは、ターゲットはイメージ転送の終了パケット内でエラーが送られた後、ホストが常にリセットパケット(下記の「例示的なプロトコル実装」のさらなる説明を参照)を送ろうとすると見なす。プロトコルにより、イメージ転送の終了のエラーパケットに応答して、他のコマンドパケットがホストからターゲットに送られることが可能になる。
【００９８】
完了パケット。ホストが完了パケットを送るとき、ホストは下記の表6に示されたフォーマットを使用する。
【００９９】
【表７】
2018045718.tif 000009
【０１００】
ホストが「成功」ステータスを有するイメージ転送の終了パケットを受信した場合、ホストは、ホストがプロトコルを終了し実行を継続できることをターゲットに示すために、完了パケットを送ることに進む。ターゲットがホストから別のイメージの転送を望む場合、ターゲットは別のハローパケットから始めることによってプロトコルを再開する。
【０１０１】
完了応答パケット。ターゲットが完了応答パケットを送るとき、ターゲットは下記の表7に示されたフォーマットを使用する。
【０１０２】
【表８】
2018045718.tif 000010
【０１０３】
ターゲットが完了パケットを受信した場合、ターゲットはイメージ転送ステータスを含む完了応答パケットで応答する。
・すべてのイメージが転送された場合、ターゲットは「完了」ステータスを送ってホストがプロトコルを終了することを可能にする。
・すべてのイメージが転送されなかった場合、ターゲットは「保留」ステータスを送る。ターゲットは、ホストがプロトコルの実行を続け、別のハローパケットが届くのを待つと見なす。
【０１０４】
リセットパケット。ホストがリセットパケットを送るとき、ホストは下記の表8に示されたフォーマットを使用する。
【０１０５】
【表９】
2018045718.tif 000011
【０１０６】
ホストは、ターゲットをリセットしたいとき、リセットパケットを送る。ターゲットは、リセット要求が有効な状態にある場合、リセット要求を処理する。ターゲットが無効なリセット要求を受信した場合、ターゲットはイメージ転送の終了パケット内でエラーを送る。
【０１０７】
リセット応答パケット。ターゲットがリセット応答パケットを送るとき、ターゲットは下記の表9に示されたフォーマットを使用する。
【０１０８】
【表１０】
2018045718.tif 000012
【０１０９】
ターゲットが有効なリセット要求を受信した場合、ターゲットはリセットする直前にリセット応答パケットを送る。この応答の目的は、ターゲットがリセット要求を受信したことをホストに確認応答することである。ホストがターゲットからリセット応答コマンドを受信しなかった(または異なるコマンドを受信した)場合、ホストは要求を再送するように試みることができる。
【０１１０】
ホストエラーパケット。プロトコルの態様はこのパケットを使用して、ホストでいずれかのエラーが発生した場合、ホストがターゲットにエラーコードを送ることを可能にすることができる。
【０１１１】
ホストエラー応答パケット。プロトコルの態様はこのパケットを使用して、ターゲットがホストエラーパケットを確認応答することを可能にすることができる。このパケットは、ターゲットがホストエラーをどのように処理しているかに関する情報をホストに提供することができる。
【０１１２】
メモリダンプパケット。プロトコルの態様はこのパケットを使用して、ターゲットのシステムメモリのメモリダンプを開始する。このパケットは、ターゲットがメモリ読取り要求を受信してシステムメモリの内容を転送する準備ができていることをホストに示すことができる。
【０１１３】
メモリ読取りパケット。プロトコルの態様はこのパケットを使用して、ホストがターゲットからのメモリ読取り要求を発行することを可能にすることができる。このパケットは、メモリ転送の物理アドレスおよびサイズを含むことができる。ターゲットは、ホストが要求したメモリの内容だけを含むデータパケットで応答することができる。ターゲット側でいずれかのエラーが発生した場合、ターゲットはメモリ転送の要求されたサイズと一致しない長さを有するデータパケットを送ることができる。これにより、ホスト側でエラーが発生し、ホストが適切に応答することが可能になる。
【０１１４】
ステータスコード。下記の表10は、このプロトコルの例示的な態様によってサポートされるステータスおよびエラーコードを列記する。
【０１１５】
【表１１】
2018045718.tif 000013
【０１１６】
動作
概要。下記の説明は以下の話題をカバーする。
・ホストからターゲットにイメージを転送するために、このプロトコルの例示的な態様をどのように使用することができるか
・プロトコルを実装し、イメージ転送中に発生するエラーにどのように対処するかを示す例示的な状態機械
・システムがプロトコルをどのように使用してイメージ転送要求を並列化することができるか
【０１１７】
成功したイメージ転送シーケンス。図4は、成功したイメージ転送シーケンスについてのパケットフローを示す。パケットフローシーケンスは下記のように記載される。時刻402で、ハローパケットがターゲット450からホスト400に送られてプロトコルを開始する。ハローパケットを受信し、ターゲット450で実行しているプロトコルバージョンを検証すると、時刻404で、ホスト400は「成功」ステータスを有するハロー応答パケットを送る。
【０１１８】
ターゲット450がハロー応答を受信すると、時刻406で、ターゲット450は、データ読取りパケットを送ることによってイメージ転送要求を開始する。各データ読取りパケットは、ターゲット450がどのイメージを受信したいか、およびイメージのどの部分を転送すべきかを指定する。正常動作中、時刻406で、ターゲット450は最初に、その他のイメージを指定するイメージヘッダ情報(すなわち、イメージサイズおよびイメージデータが転送されるべきシステムメモリ内の場所)を要求する。データ読取り要求として送られる、イメージヘッダに対するこの要求を送るとき、ターゲット450は転送されるべきイメージのフォーマットを把握している。ホスト400は、イメージフォーマットに関して何も把握することができず、ホスト400がターゲット450によって要求されたようにイメージからデータを読み取り転送することだけが可能になる。要求に続いて、時刻408で、イメージヘッダがホスト400からターゲット450に送られる。
【０１１９】
イメージがデータ分割のない単独のバイナリイメージである(すなわち、データがターゲット450のシステムメモリに記憶ならびに転送されるとき完全に連続している)場合、ターゲット450は、イメージデータ全体が1回の転送で送られように要求することができる。イメージデータが分割され、データセグメントが連続していないシステムメモリロケーションに分散されることが必要な場合、ターゲット450は、(たとえば、時刻406、410、414、および418で)複数のデータ読取り要求を発行して、各データセグメントが(たとえば、時刻412、416、および420で)それぞれの宛先アドレスに直接転送されることを可能にすることができる。この分散情報はイメージヘッダに存在し、データ読取り要求を発行する前にターゲット450によって解析される。
【０１２０】
データ読取り要求を受信すると、ホスト400は、対応するイメージファイルからデータを転送するために、イメージID、データオフセット、およびデータ長を解析する。ホスト400は、パケットヘッダなしで要求されたデータを送る。ターゲット450は、システムメモリ内のデータのソフトウェア処理または一時的なバッファリングを行わずに、宛先アドレスにこのデータを直接転送する。これは、イメージヘッダをターゲット450に転送することによって、かつデータ用の受信バッファをシステムメモリ内の宛先アドレスになるようにセットすることによって可能になる。
【０１２１】
ターゲット450がイメージ用のすべてのセグメントの受信に成功した場合、時刻422で、ターゲット450は、対応するイメージのイメージIDおよび「成功」ステータスを有するイメージ転送の終了(END_IMAGE_TX)パケットを送る。これにより、ホスト400が読取りを停止し、イメージファイルをクローズすることが可能になる。成功したイメージ転送の終了を受信すると、時刻424で、ホスト400は、完了パケットを送ってターゲット450がプロトコルを終了することを可能にする。ターゲット450が完了パケットを受信すると、時刻426で、ターゲット450は、完了応答パケットをホスト400に送る。このパケット内で、ターゲット450は、別のイメージが転送されることを期待するかどうかを示す。別のイメージがターゲット450に転送されるべき場合、ホスト400はプロトコルの実行を続けることができる。
【０１２２】
例示的なプロトコル実装。このプロトコルの例示的な態様は、ターゲットとホストの両方向けの状態機械を使用して実装することができる。これらの状態機械の例は、図5、図6、および図7に示される。
【０１２３】
ターゲット状態機械。図5および図6は、図4に示されたパケットフローのターゲット側を実施する状態機械を示す。これは、2つのタイプのソフトウェアイメージフォーマットについて、実際のイメージデータがどのように転送され得るかを示す。
・単独のバイナリ
・実行可能およびリンク可能フォーマット(ELF)
【０１２４】
単独のバイナリフォーマットは、イメージデータ用のサイズおよび宛先アドレスを記述する簡単なイメージヘッダを使用する。ELFフォーマットにより、データが分割され、システムメモリの連続していないセクションに分散されることが可能になる。
【０１２５】
以下のリストは、図5および図6の状態機械における各状態、およびターゲットがこれらの状態にあるとき着信パケットにどのように反応するかを記載する。
【０１２６】
WAIT_HELLO_RESP:ターゲットがハローパケットを送った後、ターゲットはホストからハロー応答パケットを受信するまで待つ。無効パケットまたは誤ったパケットが受信された場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットをホストに送る。リセットパケットが受信された場合、ターゲットはリセット応答を送り、次いでリセットする。
【０１２７】
DATA_BINARY:ターゲットは、単独のバイナリイメージヘッダを受信している。イメージヘッダで何かが誤っている場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効なイメージヘッダが受信された場合、ターゲットはイメージデータを転送する単一のデータ読取り要求を送る。イメージデータが受信されると、データが有効である場合、ターゲットは「成功」ステータスを有するイメージ転送の終了を送る。イメージ転送中にいずれかのエラーが発生した場合、ターゲットは対応するエラーコードを有するイメージ転送の終了を送る。
【０１２８】
DATA_ELF_HDR:ターゲットは、ELFイメージ用のELFヘッダを受信している。ELFヘッダで何かが誤っている場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効なELFヘッダが受信された場合、ターゲットはELFイメージからのプログラムヘッダに対する単一のデータ読取り要求を送る。ELFイメージ内のプログラムヘッダのサイズおよびロケーションは、ELFヘッダに埋め込まれている。
【０１２９】
DATA_ELF_PROG_HDR:ターゲットは、ELFイメージ用のELFプログラムヘッダを受信している。プログラムヘッダで何かが誤っている場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効なプログラムヘッダが受信された場合、ターゲットはそれらを処理してハッシュテーブルセグメントのロケーションを特定する。ハッシュテーブルは、ハッシュ関数を各データセグメントに適用し、ハッシュ値をハッシュテーブルに記憶することによって、各データセグメントの完全性を検証するために使用することができる。各ELFデータセグメントをロードすると、ハッシュ関数は各セグメントに適用され、ハッシュ値をハッシュテーブルに格納されたハッシュ値と比較することができる。特定のハッシュアルゴリズムおよび認証ルーチンは、このプロトコルの範囲外なので本明細書では記載されない。
【０１３０】
DATA_ELF_SEGMENTS:プログラムヘッダから各データセグメントのロケーションおよびサイズが決定されると、ターゲットは、各データセグメントが転送されるまでデータ読取り要求を繰り返し送る。すべてのELFセグメントが受信されると、ターゲットは「成功」ステータスを有するイメージ転送の終了を送る。
【０１３１】
WAIT_DONE:単一のイメージ転送が完了すると、ターゲットは完了パケットが送られるのを待つ。無効または任意の他のパケットが受信された場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。有効な完了パケットが受信された場合、ターゲットはホストに完了応答を送り、イメージ転送ステータスフィールドは、別のイメージが転送されるべきか否かに基づいて、「完了」または「保留」にセットされる。
【０１３２】
WAIT_RESET:ターゲットでエラーが発生したときはいつでも、ターゲットはホストがリセットコマンドを送ることを期待する。ターゲットがリセットコマンドを受信した場合、ターゲットはホストにリセット応答を送り、次いでリセットする。無効または任意の他のコマンドが受信された場合、ターゲットは対応するエラーコードを有するイメージ転送の終了パケットを送る。
【０１３３】
ホスト側の状態機械。ホスト側の状態機械は、図4に示されたパケットフローのホスト側を実施するために使用することができる。以下のリストは、その状態機械の動作、およびホストがこれらの状態にあるとき着信パケットにどのように反応するかを記載する。
【０１３４】
WAIT_HELLO:ホストは、ターゲットがプロトコルを開始するのを待つ。ハローが受信され、プロトコルバージョンが検証されると、ホストは「成功」ステータスを有するハロー応答を送る。ホストが無効パケット(または任意の他のパケット)を受信した場合、ホストはターゲットにリセットパケットを送る。ホストは、ターゲットのプロトコルバージョンがホストと互換性がない場合もリセットパケットを送る。
【０１３５】
WAIT_COMMAND:ホストがデータ読取りパケットを受信した場合、ホストは対応するイメージからデータを読み取り、データパケット内で転送する。ホストが「成功」ステータスを有するイメージ転送の終了パケットを受信した場合、ホストは完了パケットを送る。ホストが無効コマンド(または任意の他のコマンド)を受信した場合、ホストはリセットパケットを送る。ホストは、エラーコードを有するイメージ転送の終了パケットを受信した場合もリセットパケットを送る。
【０１３６】
WAIT_DONE_RESP:ホストは完了応答を待つ。すべてのイメージが転送されていない場合、ホストは別のハローパケットを待つ。すべてのイメージが転送された場合、ホストはプロトコルを終了する。ホストが無効コマンド(または任意の他のコマンド)を受信した場合、ホストはリセットパケットを送る。
【０１３７】
WAIT_RESET_RESP:ホストがリセットパケットを送った後、ホストはターゲットがリセット応答を送るのを待つ。ホストがリセット応答を受信した場合、ホストはプロトコルを終了する。ホストが無効コマンド(または任意の他のコマンド)を受信した場合、ホストは別のリセットパケットを送る。
【０１３８】
エラー処理。「例示的なプロトコル実装」に続く上記の説明は、このプロトコルの例示的な態様を使用して、エラーをどのように報告および処理できるかを記載する。タイムアウトおよびパケットの再送信は、起こり得る送信または受信のエラーを処理するために、しばしば実施される。そのような戦略を実施するための技法を使用することができるが、それらの特定の技法のさらなる説明は、このプロトコルの例示的な態様の本説明の範囲外である。
【０１３９】
並行イメージ転送。以下に、マルチスレッド環境の使用を介して、どのように複数のイメージを並行して転送できるかが記載される。
【０１４０】
単一ホスト、複数ターゲット。ホストがハードウェアのトランスポート層でターゲットの間を区別し、プロトコルのパケットを対応するターゲットにルーティングできる場合、ホストは、別個のスレッド上のターゲットごとに状態機械を実行することができる。
・各ターゲットはそれ自体の状態機械を実行して、ターゲットが転送したいイメージを転送する
・ホストはスレッドマネージャを実行して、プロトコルのパケットを送受信し、それらを対応する状態機械にルーティングする
【０１４１】
データ読取り要求は、イメージID、データオフセット、およびデータ長を指定するので、ホストは対応するイメージファイルから読み取り、要求元のターゲットにデータを送る。
【０１４２】
複数ホスト、単一ターゲット。ターゲットが複数のホストからイメージを転送することを望む場合、各ホストからの接続を、ハードウェアのトランスポート層にカプセル化することができる。プロトコルに入ると、ターゲットは、どのハードウェアを使用して所与のイメージを転送したいかを指定することができる。ターゲットは、イメージごとにプロトコルからの出入りを選ぶことができ、イメージごとに使用するハードウェアのトランスポート層を選択することを可能にする(ディスパッチテーブルを使用することによって対応するソフトウェアドライバ内のホスト接続を事実上取り除く)。次いで、各ホストは別個の状態機械を実行することができる。
【０１４３】
単一ホスト、単一ターゲット、並行イメージ。ターゲットがホストから並行してイメージを転送することを望む場合、(上述されたスレッド環境と同様に)ターゲットでスレッド環境を使用することができる。違いは、スレッド環境がホストで関係していないことである。ターゲットは、イメージごとに状態機械へのパケットのルーティングを管理する。
【０１４４】
図5は、その中で本開示の態様が有利に利用され得る、例示的なワイヤレス通信システム500を示すブロック図である。例示のために、図5は、3つのリモートユニット520、530および550ならびに2つの基地局540を示す。ワイヤレス通信システムがはるかに多いリモートユニットおよび基地局を有する場合があることを認識されよう。リモートユニット520、530および550は、開示されたマルチプロセッサデバイスを含むICデバイス525A、525Cおよび525Bを含む。基地局、スイッチングデバイスおよびネットワーク機器などの他のデバイスも、開示されたマルチプロセッサデバイスを含む場合があることを認識されよう。図5は、基地局540からリモートユニット520、530および550への順方向リンク信号580、ならびにリモートユニット520、530および550から基地局540への逆方向リンク信号590を示す。
【０１４５】
図5では、リモートユニット520は携帯電話として示され、リモートユニット530はポータブルコンピュータとして示され、リモートユニット550はワイヤレスローカルループシステム内の固定ロケーションリモートユニットとして示される。たとえば、リモートユニットは、携帯電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、GPS対応デバイス、ナビゲーションデバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、メータ読取り機器などの固定ロケーションデータユニット、またはデータもしくはコンピュータ命令の記憶もしくは取り出しを行う任意の他のデバイス、またはそれらの任意の組合せであり得る。図5は、本開示の教示によるリモートユニットを示すが、本開示は、これらの例示的に示されたユニットには限定されない。本開示の態様は、マルチプロセッサシステムを含む任意のデバイスで適切に使用することができる。
【０１４６】
図6に示されたように、マルチプロセッサシステム内の2次プロセッサは、実行可能ソフトウェアイメージの転送用の方法を実行することができる。ブロック602で示されたように、2次プロセッサは、1次プロセッサとの通信を開始することができる。ブロック604で示されたように、2次プロセッサは、実行可能ソフトウェアイメージ用のイメージヘッダを転送するように、1次プロセッサに命令することができる。実行可能ソフトウェアイメージは、イメージヘッダおよび少なくとも1つのデータセグメントを含む。ブロック606で示されたように、2次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントを受信することができる。ブロック608で示されたように、2次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信を示すことができる。ブロック610で示されたように、2次プロセッサは、実行可能ソフトウェアイメージの転送終了の指示を受信することができる。ブロック612で示されたように、2次プロセッサは、転送終了の指示の受信を確認応答することができる。
【０１４７】
マルチプロセッサデバイスは、開始するための手段、命令するための手段、受信するための手段、示すための手段、および確認応答するための手段を備えることができる。手段は、アプリケーションプロセッサ104、204、2次プロセッサ302、プロセッサ間通信バス134、234、ハードウェア移送機構309、コントローラ304、および/または物理データパイプ310を含むことができる。別の態様では、上記の手段は、上記の手段によって列挙された機能を実行するように構成されたモジュールまたは任意の装置であり得る。
【０１４８】
図7に示されたように、マルチプロセッサシステム内の1次プロセッサは、ブロック702で示されたように、実行可能ソフトウェアイメージ用のイメージヘッダを転送する命令を受信することができ、前記実行可能ソフトウェアイメージは、前記イメージヘッダおよび少なくとも1つのデータセグメントを含む。ブロック704で示されたように、1次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントを2次プロセッサに送ることができる。ブロック706で示されたように、1次プロセッサは、イメージヘッダおよび少なくとも1つのデータセグメントの成功した受信の2次プロセッサからの指示を受信することができる。ブロック708で示されたように、1次プロセッサは、実行可能イメージの転送終了の指示を送ることができる。ブロック710で示されたように、1次プロセッサは、転送終了の指示の受信の2次プロセッサからの確認応答を受信することができる。
【０１４９】
マルチプロセッサデバイスは、受信するための手段、および送るための手段を備えることができる。手段は、モデムプロセッサ110、210、1次プロセッサ301、プロセッサ間通信バス134、234、ハードウェア移送機構308、システムメモリ307、および/または物理データパイプ310を含むことができる。別の態様では、上記の手段は、上記の手段によって列挙された機能を実行するように構成されたモジュールまたは任意の装置であり得る。
【０１５０】
ファームウェアおよび/またはソフトウェアの実装形態の場合、これらの方法を、本明細書に記載された機能を実行するモジュール(たとえば、プロシージャ、関数など)で実施することができる。本明細書に記載された方法を実施する際に、命令を有形に具現化する任意の機械可読媒体を使用することができる。たとえば、ソフトウェアコードをメモリに記憶し、プロセッサユニットによって実行することができる。メモリは、プロセッサユニット内に実装され得るか、またはプロセッサユニットの外部であり得る。本明細書で使用する「メモリ」という用語は、長期メモリ、短期メモリ、揮発性メモリ、不揮発性メモリ、または他のメモリのいずれかのタイプを指し、メモリのいかなる特定のタイプもしくはメモリの数、またはメモリが記憶される媒体のタイプには限定されない。
【０１５１】
ファームウェアおよび/またはソフトウェアに実装する場合、機能は、コンピュータ可読媒体に1つまたは複数の命令またはコードとして記憶することができる。これらの例には、データ構造で符号化されたコンピュータ可読媒体、およびコンピュータプログラムで符号化されたコンピュータ可読媒体が含まれる。コンピュータ可読媒体には、物理的コンピュータ記憶媒体が含まれる。記憶媒体は、コンピュータによってアクセスされ得る任意の入手可能な媒体であり得る。限定ではなく、例として、そのようなコンピュータ可読媒体には、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または所望のプログラムコードを命令もしくはデータ構造の形で記憶するのに使用することができ、かつコンピュータによってアクセスすることができる任意の他の媒体が含まれ得るし、本明細書で使用する場合、ディスク(diskおよびdisc)には、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フレキシブルディスク、およびブルーレイディスクが含まれ、ディスク(disk)は通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１５２】
命令および/またはデータは、コンピュータ可読媒体に記憶されることに加えて、通信装置に含まれる伝送媒体上の信号として提供される場合がある。たとえば、通信装置は、命令およびデータを示す信号を有する送受信機を含む場合がある。命令およびデータは、1つまたは複数のプロセッサに、特許請求の範囲において概説される機能を実施させるように構成される。
【０１５３】
特定の回路が説明されたが、当業者は、本開示を実施するために、開示された回路のすべてが必要とされるわけではないことを理解されよう。その上、本開示に対する注目を維持するために、いくつかのよく知られている回路は記載されなかった。
【０１５４】
本開示およびその利点が詳細に記載されたが、添付の特許請求の範囲によって規定される本開示の技術から逸脱することなく、本明細書において様々な変更、代用および改変が行われ得ることを理解されたい。たとえば、「上」および「下」などの関係用語が、基板または電子デバイスに関して使用される。もちろん、基板または電子デバイスが反転した場合、上は下に、下は上になる。加えて、横向きの場合、上および下は、基板または電子デバイスの側面を指す場合がある。さらに、本出願の範囲は、本明細書に記載されたプロセス、機械、製造、物質組成、手段、方法、およびステップの特定の実施形態に限定されるものではない。当業者が本開示から容易に諒解するように、本明細書に記載された対応する実施形態と実質的に同じ機能を実行するか、または実質的に同じ結果を実現する、既存または今後開発されるプロセス、機械、製造、物質組成、手段、方法、またはステップが、本開示に従って利用され得る。したがって、添付の特許請求の範囲は、そのようなプロセス、機械、製造、物質組成、手段、方法、またはステップをそれらの範囲内に含むものとする。
【符号の説明】
【０１５５】
102  第1のマルチプロセッサアーキテクチャ
104  アプリケーションプロセッサ
106  1次不揮発性メモリ
108  アプリケーションプロセッサ揮発性メモリ
110  モデムプロセッサ
112  モデムプロセッサ揮発性メモリ
114  2次不揮発性メモリ
116  APファイルシステム
118  AP実行可能イメージ
120  モデム実行可能イメージ
122  AP実行可能イメージ
124  AP実行時データ
126  ハードウェアブートROM
128  モデムファイルシステム
130  モデム実行時データ
132  モデム実行可能イメージ
134  プロセッサ間通信バス
202  第2のマルチプロセッサアーキテクチャ
204  アプリケーションプロセッサ
206  1次不揮発性メモリ
208  アプリケーションプロセッサ揮発性メモリ
210  モデムプロセッサ
212  モデムプロセッサ揮発性メモリ
214  モデム実行可能イメージ
216  APファイルシステム
218  AP実行可能イメージ
220  モデムファイルシステム
222  AP実行可能イメージ
224  AP実行時データ
226  モデムブートROMコード
228  ファイルシステムミラー
230  モデム実行時データ
234  プロセッサ間通信バス
236  モデム実行可能イメージ
301  1次プロセッサ
302  2次プロセッサ
303  ソフトウェアイメージ
304  分散ローダ/直接メモリアクセスコントローラ
305  2次プロセッサのシステムメモリ
306  1次プロセッサの不揮発性メモリ
307  1次プロセッサのシステムメモリ
308  1次プロセッサのハードウェア移送機構
309  2次プロセッサのハードウェア移送機構
310  プロセッサ間通信バス
400  ホスト
402  ハロー
404  ハロー応答
406  READ_DATA(イメージID、オフセット、イメージヘッダのサイズ)
408  RAW_DATA(イメージヘッダ)
410  READ_DATA(イメージID、セグメント0のオフセット、セグメント0のサイズ)
412  RAW_DATA(セグメント0)
414  READ_DATA(イメージID、セグメント1のオフセット、セグメント1のサイズ)
416  RAW_DATA(セグメント1)
418  READ_DATA(イメージID、セグメントNのオフセット、セグメントNのサイズ)
420  RAW_DATA(セグメントN)
422  END_IMG_TX
424  DONE
426  DONE_RESP
450  ターゲット
500  ワイヤレス通信システム
520  リモートユニット
525A  ICデバイス
525B  ICデバイス
525C  ICデバイス
530  リモートユニット
540  基地局
550  リモートユニット
580  順方向リンク信号
590  逆方向リンク信号
602  1次プロセッサとの通信を開始する
604  実行可能ソフトウェアイメージ用のイメージヘッダを転送するように、1次プロセッサに命令する
606  イメージヘッダおよびデータセグメントを受信する
608  イメージヘッダおよびデータセグメントの成功した受信を示す
610  転送終了の指示を受信する
610  転送終了の指示の受信を確認応答する
702  実行可能ソフトウェアイメージ用のイメージヘッダを転送する命令を受信する    704  イメージヘッダおよびデータセグメントを2次プロセッサに送る
706  イメージヘッダおよびデータセグメントの成功した受信の指示を受信する
708  実行可能イメージの転送終了の指示を送る
710  転送終了の指示の受信の確認応答を受信する
【図１】
2018045718.tif 000014
【図２】
2018045718.tif 000015
【図３】
2018045718.tif 000016
【図４】
2018045718.tif 000017
【図５】
2018045718.tif 000018
【図６】
2018045718.tif 000019
【図７】
2018045718.tif 000020
【外国語明細書】
2018045718000001.pdf