(57)【要約】  方法は、少なくとも１つのメモリ（４１２）から少なくとも１つの内部レジスタにデータ要素をロードするステップ（３０１）を含む。本方法は、ネットワーク標準化フォーマットからデバイスネイティブフォーマットにデータ要素をコンバートするステップ（３０３）をも含む。本方法は、データ値に対する演算を実施するステップ（３０５）をさらに含む。本方法は、デバイスネイティブフォーマットからネットワーク標準化フォーマットにデータ要素をデコンバートするステップ（３０７）をも含む。さらに、本方法は、少なくとも１つのメモリにデータ要素を記憶するステップ（３０９）を含む。
2019526085.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのメモリ（４１２）から少なくとも１つの内部レジスタにデータ要素をロードするステップ（３０１）と、
ネットワーク標準化フォーマットからデバイスネイティブフォーマットに前記データ要素をコンバートするステップ（３０３）と、
データ値に対する演算を実施するステップ（３０５）と、
前記デバイスネイティブフォーマットから前記ネットワーク標準化フォーマットに前記データ要素をデコンバートするステップ（３０７）と、
前記少なくとも１つのメモリに前記データ要素を記憶するステップ（３０９）と
を含む、方法。
【請求項２】
前記実施された演算が基本的な数学演算である、請求項１に記載の方法。
【請求項３】
前記データ値をコンバートすることが、エンディアンコンバージョンまたは浮動小数点値フォーマットコンバージョンのうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項４】
前記ネットワーク標準化フォーマットが、ビッグエンディアンまたはリトルエンディアンのうちの一方であり、
前記デバイスネイティブフォーマットが、ビッグエンディアンまたはリトルエンディアンのうちの他方である、
請求項３に記載の方法。
【請求項５】
前記ネットワーク標準化フォーマットが、第１の浮動小数点値フォーマットを使用し、
前記デバイスネイティブフォーマットが、異なる第２の浮動小数点値フォーマットを使用する、
請求項３に記載の方法。
【請求項６】
前記コンバートするステップおよび前記デコンバートするステップを実施するための命令が、より高水準のプログラミング言語のソースコードのコンパイル中に、機械アセンブリ言語コードに追加される、請求項１に記載の方法。
【請求項７】
データ要素を記憶するように構成された少なくとも１つのメモリ（４１２）と、
前記少なくとも１つのメモリから少なくとも１つの内部レジスタに前記データ要素をロードすることと、
ネットワーク標準化フォーマットからデバイスネイティブフォーマットに前記データ要素をコンバートすることと、
データ値に対する演算を実施することと、
前記デバイスネイティブフォーマットから前記ネットワーク標準化フォーマットに前記データ要素をデコンバートすることと、
前記少なくとも１つのメモリに前記データ要素を記憶することと
を行うように構成された少なくとも１つの処理デバイス（４０４）と
を備える装置。
【請求項８】
前記実施された演算が基本的な数学演算である、請求項７に記載の装置。
【請求項９】
前記少なくとも１つの処理デバイスが、エンディアンコンバージョンまたは浮動小数点値フォーマットコンバージョンのうちの少なくとも１つを実施することによって、前記データ値をコンバートするように構成された、請求項７に記載の装置。
【請求項１０】
少なくとも１つの処理デバイスによって実行されたとき、前記少なくとも１つの処理デバイスに、
少なくとも１つのメモリ（４１２）から少なくとも１つの内部レジスタにデータ要素をロードすること（３０１）と、
ネットワーク標準化フォーマットからデバイスネイティブフォーマットに前記データ要素をコンバートすること（３０３）と、
データ値に対する演算を実施すること（３０５）と、
前記デバイスネイティブフォーマットから前記ネットワーク標準化フォーマットに前記データ要素をデコンバートすること（３０７）と、
前記少なくとも１つのメモリに前記データ要素を記憶すること（３０９）と
を行わせる、命令を含んでいる非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、一般に、機械アーキテクチャにわたるデータ互換性を取得するための技法に関する。より詳細には、本開示は、異種機械アーキテクチャにわたるデータ互換性のためのシステムおよび方法に関する。
【背景技術】
【０００２】
[0002]「エンディアン」という用語は、コンピュータメモリに記憶されたとき、データワードまたはメッセージを構成している２つまたはそれ以上のバイトを記憶し、解釈するために使用される規約を指す。メモリ中のデータの各バイトは、一般にそれ自体のアドレスを有する。複数のバイトを含んでいるデータワードを読み取るかまたは書き込むとき、メモリに記憶されたバイトの順序がデータワードの解釈を決定する。
【０００３】
[0003]ビッグエンディアンシステム(Big-endian system)は、最小アドレスにデータワードの最上位バイトを記憶し、最大アドレスにデータワードの最下位バイトを記憶する。対照的に、リトルエンディアンシステム(little-endian system)は、最小アドレスにデータワードの最下位バイトを記憶し、最大アドレスにデータワードの最上位バイトを記憶する。データがビッグエンディアンデバイスまたはシステムからリトルエンディアンデバイスまたはシステムに（またはその逆に）移動されたとき、データが、適切な「エンディアンネス」にコンバートされる必要があるか、または、受信デバイスまたはシステムが差異を考慮する必要がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
[0004]本開示は、異種機械アーキテクチャにわたるデータ互換性のためのシステムおよび方法を提供する。
[0005]第１の実施形態では、方法は、少なくとも１つのメモリから少なくとも１つの内部レジスタにデータ要素をロードするステップを含む。本方法は、ネットワーク標準化フォーマットからデバイスネイティブフォーマットにデータ要素をコンバートするステップをも含む。本方法は、データ値に対する演算を実施するステップをさらに含む。本方法は、デバイスネイティブフォーマットからネットワーク標準化フォーマットにデータ要素をデコンバートするステップをも含む。さらに、本方法は、少なくとも１つのメモリにデータ要素を記憶するステップを含む。
【０００５】
[0006]第２の実施形態では、装置は、少なくとも１つのメモリと少なくとも１つのプロセッサとを含む。少なくとも１つのメモリはデータ要素を記憶するように構成される。少なくとも１つの処理デバイスは、少なくとも１つのメモリから少なくとも１つの内部レジスタにデータ要素をロードするように構成される。少なくとも１つの処理デバイスはまた、ネットワーク標準化フォーマットからデバイスネイティブフォーマットにデータ要素をコンバートするように構成される。少なくとも１つの処理デバイスは、データ値に対する演算を実施するようにさらに構成される。少なくとも１つの処理デバイスはまた、デバイスネイティブフォーマットからネットワーク標準化フォーマットにデータ要素をデコンバートするように構成される。さらに、少なくとも１つの処理デバイスは、少なくとも１つのメモリにデータ要素を記憶するように構成される。
【０００６】
[0007]第３の実施形態では、非一時的コンピュータ可読媒体は、少なくとも１つの処理デバイスによって実行されたとき、少なくとも１つの処理デバイスに、少なくとも１つのメモリから少なくとも１つの内部レジスタにデータ要素をロードさせる命令を含んでいる。媒体は、少なくとも１つの処理デバイスによって実行されたとき、少なくとも１つの処理デバイスに、ネットワーク標準化フォーマットからデバイスネイティブフォーマットにデータ要素をコンバートさせる命令をも含んでいる。媒体は、少なくとも１つの処理デバイスによって実行されたとき、少なくとも１つの処理デバイスに、データ値に対する演算を実施させる命令をさらに含んでいる。媒体はまた、少なくとも１つの処理デバイスによって実行されたとき、少なくとも１つの処理デバイスに、デバイスネイティブフォーマットからネットワーク標準化フォーマットにデータ要素をデコンバートさせる命令を含んでいる。さらに、媒体は、少なくとも１つの処理デバイスによって実行されたとき、少なくとも１つの処理デバイスに、少なくとも１つのメモリにデータ要素を記憶させる命令を含んでいる。
【０００７】
[0008]他の技術的特徴は、以下の図、説明、および特許請求の範囲から当業者には容易に明らかであり得る。
[0009]本開示のより完全な理解のために、次に、添付の図面とともに与えられる、以下の説明が参照される。
【図面の簡単な説明】
【０００８】
【図１】[0010]本開示による、例示的な異種システムを示す図である。
【図２】[0011]本開示による、異種機械アーキテクチャにわたるデータ互換性のための例示的なシステムを示す図である。
【図３】[0012]本開示による、異種システムにおける異種機械アーキテクチャにわたるデータ互換性のための例示的な方法を示す図である。
【図４】[0013]本開示による、異種機械アーキテクチャにわたるデータ互換性のための例示的なデバイスを示す図である。
【発明を実施するための形態】
【０００９】
[0014]以下で説明される図１〜図４、および本特許文献において本発明の原理について説明するために使用される様々な実施形態は、例示的なものにすぎず、いかなる形でも本発明の範囲を制限するものと解釈されるべきではない。本発明の原理が、任意のタイプの適切に構成されたデバイスまたはシステムで実装され得ることを、当業者は理解されよう。
【００１０】
[0015]モデムコンピュータシステムでは、複数のコンピュータまたは他のデバイスが、それらのデバイスがデータを交換および共有することを可能にする１つまたは複数の通信ネットワークによって互いに接続され得る。コンピュータまたは他のデバイスのシステムまたはネットワークでは、異なる製造業者によって製造されるか、または異なるオペレーティングシステムを使用して動作する様々なデバイスがあり得る。たとえば、いくつかのデバイスは、ＩＮＴＥＬによるｘ８６プロセッサを含む汎用コンピュータを表し得る。他のデバイスは、（精練所、化学プラント、または工場のような）工業製造または処理システムにおいて使用されるコントローラなど、工業プロセス制御および自動化システムにおけるコントローラを表し得る。そのようなコントローラは、ＭＯＴＯＲＯＬＡによる６８０００ファミリープロセッサを含み得る。混合ネットワークにおける異なるタイプのデバイスがデータを交換するとき、データは、一般に、両方のデバイスとの互換性がある形式に構成される必要がある。
【００１１】
[0016]一例として、いくつかのシステムでは、いくつかのデバイスはビッグエンディアンでもよく、他のデバイスはリトルエンディアンでもよい。複雑なデータ構造を有するデータメッセージが異なるエンディアンアーキテクチャのデバイス間で共有されるとき、それらのデバイスは、数値のバイト順序付けの差異により直接データを共有することができないことがある。たとえば、メッセージは、数百個または数千個の整数または浮動小数点値を潜在的に有することができる。そのようなメッセージは、送信機においてビッグエンディアンフォーマットで記憶され得、意図された受信機が、リトルエンディアンフォーマットで記憶された値を解釈するように構成され得る（またはその逆も同様である）。本明細書で使用される「メッセージ」は、概して、シーケンスで構成されたデータのタイプを指し、特定の記録または構造を必ずしも指すとは限らない。
【００１２】
[0017]別の例として、いくつかのシステムでは、いくつかのデバイスは、浮動小数点値の表現のためにＩＥＥＥ７５４標準浮動小数点フォーマットを使用することができ、他のデバイスは、浮動小数点値の、より古い、以前の標準表現を使用することができる。ビッグエンディアン／リトルエンディアン差異の場合と同様に、システムにおけるデバイス間の浮動小数点表現の差異が、異なるデバイス間でデータまたはデータメッセージを共有する際に困難を生じることがある。
【００１３】
[0018]いくつかのシステムは、データメッセージを受け取り、それを構成要素に分割され、それの現在のエンディアンフォーマットについて各構成要素を検査し、現在の正しいエンディアンフォーマットにない各構成要素を正しいフォーマットにコンバートすることによって、異なるエンディアンアーキテクチャに対する解決策を与える。このプロセスは、正確なメッセージレイアウトのテンプレートが知られているメッセージの場合はうまく動作するが、メッセージテンプレートは、いくつかの状況では利用可能でないことがある。また、いくつかの複雑なデータメッセージの場合、テンプレートは、複雑であり、保守することが困難であり得る。代替手法は、プログラマーに、コンバージョンの負担をかけ、プログラマーは、プログラム中のデータの各使用を識別し、正しいエンディアンフォーマットにないデータを扱うためにプログラムを変更しなければならない。この手法は、実質的なエンジニアリング労力を必要とすることがあり、それが、プログラマーがプログラム中のあらゆるエンディアンに依存する推測を正しく識別することに依拠するので、本質的にエラーを起こしやすい。
【００１４】
[0019]これらの問題および他の問題に対処するために、本開示の実施形態は、データ構造にかかわらず、異種機械アーキテクチャにわたるデータ互換性のためのプロセスを提供する。それにより、プロセスは、異なるエンディアンアーキテクチャ、異なる浮動小数点表現、または他の同様の差異を有するデバイスの間でデータ構造を共有することを可能にする。
【００１５】
[0020]図１は、本開示による、例示的な異種システム１００を示す。図１に示されているように、異種システム１００は、スイッチまたはハブ１２５に結合された第１のネットワーク１１０と第２のネットワーク１２０とを含む。ネットワーク１１０は、ノード１１１〜１１２を含む、いくつかのノードを含む。同様に、ネットワーク１２０は、ノード１２１〜１２２を含む、いくつかのノードを含む。
【００１６】
[0021]この例示的な実施形態では、異種システム１００は、工業プロセス制御および自動化システムの全部または一部分を表すことができる。たとえば、ノード１１１〜１１２は、多種多様な機能のいずれかを実施し得るプロセスまたは製造システムにおけるプロセス要素を制御するように構成された１つまたは複数の工業プロセスコントローラを含むことができる。特定の例として、ノード１１１〜１１２は、化学製品、製剤製品、紙製品、または石油化学製品を製造するために使用される要素または機器を処理するための制御信号を与えるように構成され得る。各ノード１１１〜１１２は、プロセスまたは製造システムにおいて１つまたは複数の機能を実施するための任意の好適な構造を含む。ノード１１１〜１１２は、たとえば、１つまたは複数の処理デバイス１１３、ならびに（１つまたは複数の）処理デバイス１１３によって使用、収集、または生成される命令およびデータを記憶する１つまたは複数のメモリ１１４を含むことができる。特定の例として、処理デバイス１１３は、ＭＯＴＯＲＯＬＡ  ６８０００プロセッサファミリーにおけるプロセッサを含むことができる。
【００１７】
[0022]別の例として、ノード１２１〜１２２は、プロセス制御および自動化システムのユーザアクセスおよび制御のために構成された１つまたは複数のオペレータステーションを含むことができる。ノード１２１〜１２２の各々は、たとえば、１つまたは複数の処理デバイス１２３、ならびに、ノード１２１〜１２２によって実行されるソフトウェアなど、（１つまたは複数の）処理デバイス１２３によって使用、収集、または生成される命令およびデータを記憶する１つまたは複数のメモリ１２４を含むことができる。特定の実施形態では、ノード１２１〜１２２は、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティングシステムを実行するパーソナルコンピュータを表すことができ、処理デバイス１２３は、ＩＮＴＥＬ  ｘ８６プロセッサファミリーにおけるプロセッサを含むことができる。
【００１８】
[0023]ノード１１１〜１１２と１２１〜１２２とは、ネットワーク１１０〜１２０を通して互いにおよびシステム１００の他の構成要素に結合される。各ネットワーク１１０〜１２０は、システム１００における様々な構成要素間の通信を可能にする。各ネットワーク１１０〜１２０は、システム１００における構成要素間の通信を可能にするネットワークまたはネットワークの組合せを表す。たとえば、ネットワーク１１０は、同軸ケーブルネットワークまたはイーサネットネットワークなど、プロセス制御システムにおけるコントローラネットワークを表すことができる。別の例として、ネットワーク１２０はイーサネットネットワークを表すことができる。
【００１９】
[0024]これらの実施形態では、ノード１１１〜１１２、１２１〜１２２は、異なる機械アーキテクチャを有し得、異なるデータ構造またはデータフォーマットをサポートし得る。たとえば、ノード１１１〜１１２は、データ記憶のためにビッグエンディアンフォーマットを使用し得、ノード１２１〜１２２は、データ記憶のためにリトルエンディアンフォーマットを使用し得る。同様に、ノード１１１〜１１２、１２１〜１２２のうちのいくつかのノードは、ＩＥＥＥ７５４標準浮動小数点表現を使用し得、ノード１１１〜１１２、１２１〜１２２のうちの他のノードは、非標準浮動小数点表現を使用し得る。したがって、（ノード１２１からノード１１１に送信される命令またはデータあるいはノード１１２からノード１２２に送信される動作ステータスデータなど、）ネットワーク１１０とネットワーク１２０との間で送られるデータは、処理ノードの機械アーキテクチャに応じて、別様に処理される必要があり得る。
【００２０】
[0025]これを達成するために、システム１００は、メンバーデバイスの機械アーキテクチャにかかわらず、データ共有者のネットワーク全体にわたってマルチバイトデータのカノニカル表現の概念を使用する。システム１００では、（カノニカルフォーマットとも呼ばれる）ネットワーク標準フォーマットが、すべての共有データのために選択される。たとえば、カノニカルフォーマットは、ビッグエンディアンおよび標準浮動小数点であり得る。別の例として、カノニカルフォーマットは、リトルエンディアンおよび標準浮動小数点であり得る。カノニカルフォーマットが決定されると、ノード１１１〜１１２、１２１〜１２２間で送信および受信されるすべてのデータは、個々のネットワークノードのアーキテクチャにかかわらず、カノニカルフォーマットで保守される。カノニカルフォーマットとは異なるフォーマットを使用してネイティブに動作する（ノード１１１〜１１２、１２１〜１２２のうちの１つのノードなど）ネットワークデバイスが、カノニカルフォーマットを使用して他のデバイスにデータを受信および送信する。ただし、そのようなデバイスにおける内部計算および処理は、ネイティブ非カノニカルフォーマットで実施されるので、カノニカルフォーマットからネイティブフォーマットへの（またはその逆の）データの変換が実施される。データコンバージョンを実施することの必要性は、それがネットワークカノニカルデータフォーマットに従うのかまたはそれとは異なるのかを本質的に知っている各個々のデバイスによって決定することができる。
【００２１】
[0026]一例として、システム１００のためのカノニカルフォーマットが、ビッグエンディアンおよびＩＥＥＥ７５４標準浮動小数点表現であり、ノード１２１のためのネイティブフォーマットが、リトルエンディアンおよび非標準浮動小数点表現であると仮定する。ノード１２１がデータに対する算術演算を実施するとき、ノード１２１は、通常通り該ノードのメモリから内部算術レジスタにデータを移動する。さらに、ノード１２１は、ビッグエンディアン／標準浮動小数点からリトルエンディアン／非標準浮動小数点へのデータコンバージョンを実施する。ノード１２１はまた、算術レジスタからメモリにデータを移動するとき、（リトルエンディアン／非標準浮動小数点からビッグエンディアン／標準浮動小数点への）リバースコンバージョンまたは「デコンバージョン（ｄｅｃｏｎｖｅｒｓｉｏｎ）」を実施する。したがって、メモリ中のデータは、算術演算を実施するためにデータがレジスタ中で非カノニカルフォーマットにある場合でも、カノニカルフォーマットに保たれる。データ表現のこの不変量を用いて、他のネットワークノードからの着信データはネットワークカノニカルフォーマットにあり、ノード１２１は、そのデータを適切に解釈することが可能である。したがって、ノード１２１は、そのデータの元の送信側の特定のネイティブフォーマットに無関心なままでもよい。
【００２２】
[0027]いくつかの実施形態では、カノニカルフォーマットとネイティブフォーマットとの間のデータの変換は、デバイスのメモリ中のデータについて「間違った」フォーマットを有することを許容することが可能であるようにコンピュータ命令を修正する変換ルーチンを使用して可能にされる。たとえば、機械動作が実行されると、特定のデバイスのための、カノニカルフォーマットからネイティブフォーマットへのデータのスワッピングを与えるために、ソフトウェア変換ルーチンが、通常の機械アセンブリコードを変更することができる。（ノード１１２がビッグエンディアン／標準浮動小数点であるときなど）カノニカルフォーマットを本質的に選好するネットワークデバイスの場合、データ表現変換はヌルである（ただし、デバイスは、処理のこの変換段階中に他の目的のために他の変換を実施し得る）。変換に関するさらなる詳細が以下で与えられる。
【００２３】
[0028]図１は異種システム１００の一例を示しているが、図１に対する様々な変更を行うことができる。たとえば、特定の要求に従って他の構成において、構成要素が追加、省略、合成、または配置され得る。また、異種システム１００はプロセス制御および自動化システムの全部または一部分を表すものとして説明されたが、他の様式で使用され得る。さらに、図１に示されている特定のタイプのプロセッサ（６８０００およびｘ８６）は例にすぎず、（１つまたは複数の）任意の他のまたは追加のタイプの（１つまたは複数の）プロセッサが、各ノードにおいて使用され得る。さらに、図１は、異種機械アーキテクチャにわたるデータ互換性のための方法が使用され得る１つの動作環境を示す。ここで説明されるデータ互換性方法は、任意の他のデバイスまたはシステムにおいて使用することができる。
【００２４】
[0029]図２は、本開示による、異種機械アーキテクチャにわたるデータ互換性のための例示的なシステム２００を示す。図２に示されているように、システム２００は、構築環境２０２とランタイム環境２０４とを含む。ランタイム環境２０４は、図１に示され、上記で説明されたシステム１００の構成要素の全部または一部分を含むかまたは表すことができる。
【００２５】
[0030]構築環境２０２において、（システムエンジニア、プログラマー、またはデータ管理者など）１人または複数のオペレータが、ランタイム環境２０４における実行中にノード１１１〜１１２、１２１〜１２２によって使用されるソフトウェアを開発し、保守する。たとえば、オペレータは、Ｃまたはそのいくつかのバージョンなど、高水準プログラミング言語で書かれたソースファイル２１０を開発し、保守することができる。ソフトウェアコンパイラ２２０は、ソースファイル２１０を、ランタイム環境２０４におけるノード１１１〜１１２、１２１〜１２２のうちの１つまたは複数によって実行可能である機械アセンブリ言語命令２３０にコンパイルする。一般に、実行可能な命令２３０は、（１つまたは複数の）ノードの（１つまたは複数の）処理デバイス１１３、１２３が実行するために、少なくとも１つのノード１１１〜１１２、１２１〜１２２のメモリ１１４、１２４にロードされる。
【００２６】
[0031]ランタイム環境２０４におけるノード１１１〜１１２、１２１〜１２２は、構築環境２０２において準備された機械アセンブリ言語命令２３０を使用する。たとえば、各ノード１１１〜１１２、１２１〜１２２は、他のノード１１１〜１１２、１２１〜１２２から送信されたデータメッセージを検出および受信するために機械アセンブリ言語命令２３０を実行し、データメッセージ中のデータを使用して様々な演算を実施することができる。
【００２７】
[0032]システム２００では、各データメッセージの「高次」構造は無視される。すなわち、システム２００は、（どれくらいのデータフィールドが存在するか、および、各データフィールドが何を表すかなどの）各データメッセージの構造フォーマットに注意を払わない。代わりに、システム２００は、浮動小数点数、（８バイト整数、４バイト整数、２バイト整数などの）整数、および文字列を含む、データの基本的な機械フォーマットに関心がある。システム２００はまた、各ノード１１１〜１１２、１２１〜１２２のネイティブフォーマットに関心がある。機械アセンブリ言語命令２３０がそれについて作成されたノード１１１〜１１２、１２１〜１２２のネイティブフォーマットに応じて、コンパイラ２２０は、実行可能な命令２３０に適切なデータコンバージョンおよびデコンバージョン演算を追加する。
【００２８】
[0033]システム２００の演算をより良く示すために、一般的な処理システムとの比較が役立つ。コンピューティングデバイスによって実施されるべき現在の演算がデータフィールド中の値に「１」の値を数値的に加算することであると仮定する。一般的な処理システムでは、コンピューティングデバイスは、デバイスメモリから内部レジスタにデータフィールド値をロードし、レジスタ中の値を１だけ増分し、次いで、その値をデバイスメモリに記憶するために、機械アセンブリ言語命令を実行することになる。（ロード、加算、および記憶などの）そのような命令は、コンパイル演算中にソースコードから生成され得る。
【００２９】
[0034]次に、同じ例がシステム２００において考慮される。再び、現在の演算がデータフィールド中の値を「１」だけ増分することであると仮定する。また、システム２００のカノニカルフォーマットがビッグエンディアン／標準浮動小数点であり、ノード１２２が演算を実施するコンピューティングデバイスであり、ノード１２２のためのネイティブフォーマットがリトルエンディアン／標準浮動小数点であると仮定する。４バイト整数データ値がノード１２２によって増分されるべきである場合、ノード１２２は、データレジスタに整数を読み取り、カノニカルフォーマット（ビッグエンディアン）からネイティブフォーマット（リトルエンディアン）へのコンバージョンである、バイトスワップを実施する。ノード１２２はまた、リトルエンディアンフォーマットを使用してレジスタ中の値に１を加算し、ビッグエンディアンにコンバートするために別のバイトスワップを実施し、メモリにデータを記憶する。したがって、ノード１２２によって実施される命令は、ロード、コンバート、加算、デコンバート、および記憶である。
【００３０】
[0035]一般的なコンピューティングデバイスとは対照的に、ノード１２２は、コンパイラ２２０によって生成された機械アセンブリ言語命令２３０の一部であるコンバートおよびデコンバート命令を実施する。コンバートおよびデコンバート命令は、ソースファイル２１０がコンパイルされたとき、必要に応じて機械アセンブリ言語命令２３０中に含まれることがある。これは、コンパイラ２２０によって実施されるコンパイルルーチンの一部となることがある。言い換えれば、コンパイルのときに、コンパイラ２２０は、機械アセンブリ言語命令２３０に、コンバートおよびデコンバート命令を追加する。
【００３１】
[0036]いくつかの実施形態では、コンパイラ２２０は、ノード１２２のネイティブフォーマットを知っているかまたは決定することができる。たとえば、各ノード１１１〜１１２、１２１〜１２２のためのネイティブフォーマットは、データテーブルまたは（１つまたは複数の）他の構造に記憶され得、コンパイラ２２０が特定のノードのためのコードをコンパイルするとき、コンパイラ２２０は、特定のノードのための正しいネイティブフォーマットを読み取ることができる。他の実施形態では、（プログラマーなどの）オペレータが、ネイティブフォーマットをコンパイラ２２０に命令する。たとえば、オペレータは、リトルエンディアンおよび標準浮動小数点または機械のいくつかの他の特定のタイプである機械のためのソースコードをコンパイルするようにコンパイラ２２０に命令してもよい。コンパイラ２２０は、機械アセンブリ言語命令２３０が生成されたとき、適切なコンバートおよびデコンバート命令を追加する。いくつかの場合には、ノードがネットワークカノニカルフォーマットを使用してデータをすでに処理したときなど、コンバージョンが必要とされない場合、これらの命令はヌルであってもよい。
【００３２】
[0037]いくつかの実施形態では、カノニカルフォーマットは、ビッグエンディアンおよび標準浮動小数点、リトルエンディアンおよび標準浮動小数点、ビッグエンディアンおよび非標準浮動小数点、またはリトルエンディアンおよび非標準浮動小数点である。したがって、コンピューティングデバイスのネイティブフォーマットに応じて、コンバート命令は、「ビッグエンディアンからリトルエンディアンへのコンバート」演算（またはその逆）、「標準浮動小数点から非標準浮動小数点へのコンバート」演算（またはその逆）、またはその両方を含み得る。デコンバート命令はコンバート命令の逆を示す。また、カノニカルフォーマットは、エンディアンフォーマットおよび浮動小数点フォーマットのみに制限されるとは限らない。他のデータ関係特性が可能であり、コンバージョンおよびデコンバージョンは、特定のデバイスのネイティブフォーマットに応じて、データ関係特性のうちの１つ、一部、またはすべてを含むことができる。
【００３３】
[0038]値を１だけ増分することの一例が上記で説明されたが、コンバートおよびデコンバート命令は、（加算、減算、ロード、記憶を含む）任意の基本的なデータ演算について、（浮動小数点数、整数、および文字列を含む）データの基本的な機械フォーマットを有する任意のデータ値について追加され得る。システム２００を使用して、メモリ中のデータおよびネットワーク１１０〜１２０にわたって送信されるデータは、カノニカルフォーマットのままであり得る。したがって、多くのメッセージ構造のフォーマットを知ることが必要とされるのではなく、システム２００は、データの基本的な機械フォーマットのためのフォーマットのみを知る必要がある。いくつかの実施形態では、プログラマーでさえ、それらを知る必要がない。代わりに、コンパイラ２２０は、実行デバイスを自動的に識別することができ、必要に応じてコンパイル中にコンバートおよびデコンバート命令を追加することができる。
【００３４】
[0039]図２は異種機械アーキテクチャにわたるデータ互換性のためのシステム２００の一例を示しているが、図２に対する様々な変更を行うことができる。たとえば、図２中の様々な構成要素が、合成、さらに再分割、または省略され得、追加の構成要素が特定の必要に応じて追加され得る。また、システム構築環境およびランタイム環境は、多種多様な構成で使われ得、図２は本開示を特定の構成に限定しない。
【００３５】
[0040]図３は、本開示による、異種システムにおける異種機械アーキテクチャにわたるデータ互換性のための例示的な方法３００を示す。説明を簡単にするために、方法３００は、図２のシステム２００を使用して実施されるものとして説明される。ただし、方法３００は、任意の好適なデバイスまたはシステムを用いて使用され得る。
【００３６】
[0041]ステップ３０１において、システム２００は、メモリから内部レジスタにデータ要素をロードする。これは、たとえば、ノード１１１〜１１２、１２１〜１２２が、内部メモリから内部レジスタにデータメッセージのデータ要素をロードすることを含むことができる。データメッセージは、ネットワーク１１０〜１２０のうちの１つまたは複数にわたって別のノード１１１〜１１２、１２１〜１２２から受信されることができる。
【００３７】
[0042]ステップ３０３において、システム２００は、ネットワーク標準化フォーマットからデバイスネイティブフォーマットにデータ要素をコンバートする。これは、たとえば、ノード１１１〜１１２、１２１〜１２２が、エンディアンコンバージョン、浮動小数点フォーマットコンバージョン、またはその両方を実施することを含み得る。特に、これは、ノード１１１〜１１２、１２１〜１２２が、ビッグエンディアン（ネットワーク標準化またはカノニカルフォーマット）からリトルエンディアン（デバイスネイティブフォーマット）にデータ要素をコンバートすることを含むことができる。
【００３８】
[0043]ステップ３０５において、システム２００は、データ値に対する演算を実施する。これは、たとえば、ノード１１１〜１１２、１２１〜１２２が、内部レジスタ中のデータ値に対する演算を実施することを含み得る。いくつかの実施形態では、演算は、１だけの増分など、基本的な数学演算である。
【００３９】
[0044]ステップ３０７において、システム２００は、デバイスネイティブフォーマットからネットワーク標準化フォーマットにデータ要素をデコンバートする。これは、たとえば、ノード１１１〜１１２、１２１〜１２２が、エンディアンデコンバージョン、浮動小数点フォーマットデコンバージョン、またはその両方を実施することを含み得る。特に、これは、ノード１１１〜１１２、１２１〜１２２が、リトルエンディアンからビッグエンディアンにデータ要素をデコンバートすることを含み得る。
【００４０】
[0045]ステップ３０９において、システム２００は、メモリにデータ要素を記憶する。これは、たとえば、ノード１１１〜１１２、１２１〜１２２が、内部レジスタから内部メモリにデータ要素を記憶することを含み得る。
【００４１】
[0046]いくつかの実施形態では、コンバート演算およびデコンバート演算を実施するための命令は、より高水準のプログラミング言語のソースコード２１０のコンパイル中に、コンパイラ２２０によって機械アセンブリ言語命令２３０に追加される。
【００４２】
[0047]図３は異種機械アーキテクチャにわたるデータ互換性のための方法３００の一例を示しているが、図３に対する様々な変更を行うことができる。たとえば、図３に示されている様々なステップは、一連のステップとして示されているが、重複するか、並行して行われるか、異なる順序で行われるか、または複数回行われることができる。その上、いくつかのステップは、組み合わせられるかまたは除去され得、特定の必要に応じて追加のステップが追加され得る。さらに、工業プロセス制御および自動化システムに関して説明された、システム２００に関して方法３００が説明されたが、方法３００は、他のタイプのデバイスおよびシステムとともに使用されることができる。
【００４３】
[0048]図４は、本開示による、異種機械アーキテクチャにわたるデータ互換性のための例示的なデバイス４００を示す。デバイス４００は、たとえば、ノード１１１〜１１２、１２１〜１２２のうちの１つまたはコンパイラ２２０など、図２のシステム２００におけるコンピューティングデバイスを表すことができる。デバイス４００は、異種機械アーキテクチャにわたるデータ互換性のための任意の他の好適なデバイスを表すことができる。
【００４４】
[0049]図４に示されているように、デバイス４００は、少なくとも１つの処理デバイス４０４と、少なくとも１つの記憶デバイス４０６と、少なくとも１つの通信ユニット４０８と、少なくとも１つの入出力（Ｉ／Ｏ）ユニット４１０との間の通信をサポートする、バスシステム４０２を含むことができる。処理デバイス４０４は、メモリ４１２にロードされ得る命令を実行する。処理デバイス４０４は、任意の好適な構成における任意の好適な数およびタイプのプロセッサまたは他のデバイスを含み得る。処理デバイス４０４の例示的なタイプとしては、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ、特定用途向け集積回路、およびディスクリート回路があり得る。
【００４５】
[0050]メモリ４１２および永続記憶装置４１４は、（一時的または永続的にデータ、プログラムコード、および／または他の好適な情報などの）情報を記憶し、それらの検索を可能にすることが可能な（１つまたは複数の）任意の構造を表す、記憶デバイス４０６の例である。メモリ４１２は、ランダムアクセスメモリあるいは（１つまたは複数の）他の好適な揮発性または不揮発性記憶デバイスを表し得る。永続記憶装置４１４は、リードオンリーメモリ、ハードドライブ、フラッシュメモリ、または光ディスクなど、データのより長期の記憶をサポートする１つまたは複数の構成要素またはデバイスを含んでいることがある。本開示によれば、メモリ４１２および永続記憶装置４１４は、異種機械アーキテクチャにわたるデータ互換性を保証することに関連する命令を記憶するように構成され得る。
【００４６】
[0051]通信ユニット４０８は、ネットワーク１１０〜１２０など、他のシステム、デバイス、またはネットワークとの通信をサポートする。たとえば、通信ユニット４０８は、少なくとも１つのイーサネットネットワークを介した通信を可能にするネットワークインターフェースを含むことができる。通信ユニット４０８は、少なくとも１つのワイヤレスネットワークを介した通信を可能にするワイヤレストランシーバをも含むことができる。通信ユニット４０８は、（１つまたは複数の）任意の好適な物理リンクまたはワイヤレス通信リンクを通した通信をサポートし得る。
【００４７】
[0052]Ｉ／Ｏユニット４１０は、データの入力および出力を可能にする。たとえば、Ｉ／Ｏユニット４１０は、キーボード、マウス、キーパッド、タッチスクリーン、または他の好適な入力デバイスを通したユーザ入力のための接続を与え得る。Ｉ／Ｏユニット４１０はまた、ディスプレイ、プリンタ、または他の好適な出力デバイスに出力を送ることができる。
【００４８】
[0053]図４は異種機械アーキテクチャにわたるデータ互換性のためのデバイス４００の一例を示しているが、図４に対する様々な変更を行うことができる。たとえば、図４中の様々な構成要素が、合成、さらに再分割、または省略され得、追加の構成要素が特定の必要に応じて追加され得る。また、コンピューティングデバイスは多種多様な構成で使われ得、図４は本開示をデバイスの特定の構成に限定しない。
【００４９】
[0054]いくつかの実施形態では、上記で説明された様々な機能は、コンピュータ可読プログラムコードから形成され、コンピュータ可読媒体において実施される、コンピュータプログラムによって実装またはサポートされる。「コンピュータ可読プログラムコード」という句は、ソースコード、オブジェクトコード、および実行可能コードを含む、任意のタイプのコンピュータコードを含む。「コンピュータ可読媒体」という句は、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、または他のタイプのメモリなど、コンピュータによってアクセスされることが可能な任意のタイプの媒体を含む。「非一時的」コンピュータ可読媒体は、一時的な電気信号または他の信号をトランスポートする、ワイヤード、ワイヤレス、光、または他の通信リンクを除外する。非一時的コンピュータ可読媒体は、データが永続的に記憶され得るメディアと、書き換え可能な光ディスクまたは消去可能メモリデバイスなど、データが記憶され、後で上書きされ得るメディアとを含む。
【００５０】
[0055]本特許文献全体にわたって使用されるいくつかの語および句の定義を記載することが有利であり得る。「アプリケーション」および「プログラム」という用語は、１つまたは複数のコンピュータプログラム、ソフトウェア構成要素、命令のセット、プロシージャ、関数、オブジェクト、クラス、インスタンス、関係するデータ、または（ソースコード、オブジェクトコード、または実行可能コードを含む）好適なコンピュータコードにおける実装のために適応されたそれらの一部分を指す。「送信する」、「受信する」、および「通信する」という用語ならびにそれの派生語は、直接的通信と間接的通信の両方を包含する。「含む（ｉｎｃｌｕｄｅ）」および「備える、含む（ｃｏｍｐｒｉｓｅ）」という用語ならびにそれの派生語は、限定はしないが含むことを意味する。「または（ｏｒ）」という用語は包含的であり、および／または（ａｎｄ／ｏｒ）を意味する。「〜に関連する（ａｓｓｏｃｉａｔｅｄ  ｗｉｔｈ）」という句ならびにそれの派生語は、含むこと、〜内に含まれること、〜と相互接続すること、含んでいること、〜内に含まれていること、〜にまたは〜と接続すること、〜にまたは〜と結合すること、〜と通信可能であること、〜と協働すること、インターリーブすること、並置すること、〜に近接すること、〜にまたは〜と結び付けられること、有すること、〜のプロパティを有すること、〜へのまたは〜との関係を有することなどを意味し得る。「コントローラ」という用語は、任意のデバイス、システム、または少なくとも１つの演算を制御するそれの一部を意味する。コントローラは、ハードウェア、またはハードウェアとソフトウェア／ファームウェアの組合せにおいて実装され得る。特定のコントローラに関連する機能は、ローカルまたはリモートのいずれかで、集中化されるか分散され得る。「のうちの少なくとも１つ」という句は、項目の列挙とともに使用されるとき、列挙された項目のうちの１つまたは複数の異なる組合せが使用され得ること、および列挙中の１つの項目のみが必要とされ得ることを意味する。たとえば、「Ａ、Ｂ、およびＣのうちの少なくとも１つ」は、以下の組合せ、すなわち、Ａ、Ｂ、Ｃ、ＡおよびＢ、ＡおよびＣ、ＢおよびＣ、ならびにＡおよびＢおよびＣのいずれをも含む。
【００５１】
[0056]本開示は、いくつかの実施形態および概して関連する方法について説明したが、これらの実施形態および方法の改変および置換は当業者にとって明らかであろう。したがって、例示的な実施形態の上記の説明は本開示を定義または制約しない。他の変更、代替、および改変も、以下の特許請求の範囲によって定義される本開示の趣旨および範囲から逸脱することなく可能である。
【図１】
2019526085.tif 000003
【図２】
2019526085.tif 000004
【図３】
2019526085.tif 000005
【図４】
2019526085.tif 000006
【手続補正書】
【提出日】平成30年11月27日(2018.11.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのメモリ（４１２）から少なくとも１つの内部レジスタにデータ要素をロードするステップ（３０１）と、
ネットワーク標準化フォーマットからデバイスネイティブフォーマットに前記データ要素をコンバートするステップ（３０３）と、
データ値に対する演算を実施するステップ（３０５）と、
前記デバイスネイティブフォーマットから前記ネットワーク標準化フォーマットに前記データ要素をデコンバートするステップ（３０７）と、
前記少なくとも１つのメモリに前記データ要素を記憶するステップ（３０９）と
を含む、方法。
【請求項２】
前記データ値をコンバートすることが、エンディアンコンバージョンまたは浮動小数点値フォーマットコンバージョンのうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項３】
前記ネットワーク標準化フォーマットが、ビッグエンディアンまたはリトルエンディアンのうちの一方であり、
前記デバイスネイティブフォーマットが、ビッグエンディアンまたはリトルエンディアンのうちの他方である、
請求項２に記載の方法。
【請求項４】
データ要素を記憶するように構成された少なくとも１つのメモリ（４１２）と、
前記少なくとも１つのメモリから少なくとも１つの内部レジスタに前記データ要素をロードすることと、
ネットワーク標準化フォーマットからデバイスネイティブフォーマットに前記データ要素をコンバートすることと、
データ値に対する演算を実施することと、
前記デバイスネイティブフォーマットから前記ネットワーク標準化フォーマットに前記データ要素をデコンバートすることと、
前記少なくとも１つのメモリに前記データ要素を記憶することと
を行うように構成された少なくとも１つの処理デバイス（４０４）と
を備える装置。
【請求項５】
少なくとも１つの処理デバイスによって実行されたとき、前記少なくとも１つの処理デバイスに、
少なくとも１つのメモリ（４１２）から少なくとも１つの内部レジスタにデータ要素をロードすること（３０１）と、
ネットワーク標準化フォーマットからデバイスネイティブフォーマットに前記データ要素をコンバートすること（３０３）と、
データ値に対する演算を実施すること（３０５）と、
前記デバイスネイティブフォーマットから前記ネットワーク標準化フォーマットに前記データ要素をデコンバートすること（３０７）と、
前記少なくとも１つのメモリに前記データ要素を記憶すること（３０９）と
を行わせる、命令を含んでいる非一時的コンピュータ可読媒体。
【国際調査報告】
2019526085.tif 000007
2019526085.tif 000008
2019526085.tif 000009
2019526085.tif 000010
2019526085.tif 000011
2019526085.tif 000012