(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-14
(54)【発明の名称】同時処理を用いた可変長文字の符号化
(51)【国際特許分類】
G06F 40/126 20200101AFI20240806BHJP
【FI】
G06F40/126
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023577453
(86)(22)【出願日】2022-05-26
(85)【翻訳文提出日】2024-02-06
(86)【国際出願番号】 US2022031201
(87)【国際公開番号】W WO2022265840
(87)【国際公開日】2022-12-22
(32)【優先日】2021-06-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521550194
【氏名又は名称】タブロー ソフトウェア,エルエルシー
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】シール,クラーク,リチャード
【テーマコード(参考)】
5B109
【Fターム(参考)】
5B109TA11
5B109VC03
(57)【要約】
実施形態は、文字符号化を管理することを対象とする。文字コードに基づいてコード単位として各々符号化される複数の文字は、各文字のコード単位が文字符号化方式のコードポイントを表すように提供され得る。符号化モデルは、文字コード、1つ以上のプロセッサ機能、及びターゲット文字コードに基づいて決定され得る。ターゲットコード単位がターゲット文字コードに基づくように、かつターゲットコード単位が各文字のコードポイントを符号化するように、符号化モデルに基づいてコード単位をターゲットコード単位に変換するために、プロセス機能が使用され得る。複数のターゲット文字は、各ターゲット文字がターゲットコード単位として符号化され得るように、ターゲットストリームに提供され得る。
【特許請求の範囲】
【請求項1】
アクションを実行する1つ以上のプロセッサを含む1つ以上のネットワークコンピュータを使用して文字符号化を管理するための方法であって、
文字コードに基づいて1つ以上のコード単位として各々符号化される複数の文字を提供することであって、各文字についての前記1つ以上のコード単位は、文字符号化方式のコードポイントを表す、ことと、
前記1つ以上のプロセッサにおける1つ以上のプロセッサ機能を決定することであって、前記1つ以上のプロセッサ機能は、前記1つ以上のコード単位の並列処理を同時に可能にする、ことと、
前記文字コード、前記1つ以上のプロセッサ機能、及びターゲット文字コードに基づいて符号化モデルを決定することと、前記符号化モデルに基づいて前記1つ以上のコード単位を1つ以上のターゲットコード単位に変換するために前記1つ以上のプロセッサ機能を使用することであって、前記1つ以上のターゲットコード単位が前記ターゲット文字コードに基づき、前記1つ以上のターゲットコード単位が文字ごとに前記コードポイントを符号化する、ことと、
複数のターゲット文字をターゲットストリームに提供することであって、各ターゲット文字は、前記1つ以上のターゲットコード単位として符号化される、ことと、を含む、方法。
【請求項2】
前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に変換するために前記1つ以上のプロセッサ機能を使用することが、
前記符号化モデルに基づいて、前記1つ以上のプロセッサ機能に関連付けられた1つ以上の命令を決定することと、
前記1つ以上の命令を実行して、前記1つ以上のコード単位の1つ以上の部分を前記1つ以上のターゲットコード単位の1つ以上の部分に同時に変換することと、を更に含む、請求項1に記載の方法。
【請求項3】
前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に前記変換することが、
第1のレジスタに前記1つ以上のコード単位の第1の部分をロードすることであって、各コード単位が2バイト幅である、ことと、
第2のレジスタに前記1つ以上のコード単位の第2の部分をロードすることであって、各コード単位が2バイト幅であり、前記第2のレジスタが前記第1のレジスタと同じ幅である、ことと、
前記1つ以上のコード単位の前記第1の部分及び前記1つ以上のコード単位の前記第2の部分を第3のレジスタにパッキングすることに基づいて前記1つ以上のターゲットコード単位を提供することであって、各ターゲットコード単位は1バイト幅であり、前記第3のレジスタは前記レジスタと同じ幅である、ことと、を更に含む、請求項1に記載の方法。
【請求項4】
前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に前記変換することが、
前記1つ以上のコード単位をレジスタにロードすることであって、各コード単位は1バイト幅であり、各文字を表す各コードポイントを符号化するために3つ以上のコード単位が使用される、ことと、
前記符号化モデルに基づいて前記レジスタ内に前記1つ以上のターゲットコード単位を生成することであって、各ターゲットコード単位は2バイト幅であり、各ターゲットコード単位は各文字を表す前記コードポイントを符号化する、ことと、を更に含む、請求項1に記載の方法。
【請求項5】
前記文字符号化方式がユニコードであり、前記文字コードが、Unicode Transformation Format-8ビット(UTF-8)、Unicode Transformation Format-16ビット(UTF-16)、又はUnicode Transformation Format-32ビット(UTF-32)のうちの1つ以上であり、前記ターゲット文字コードが、UTF-8、UTF-16、又はUTF-32のうちの1つ以上である、請求項1に記載の方法。
【請求項6】
前記文字コードに基づいて前記符号化モデルを決定することは、
各文字を表すために使用されるバイト数に基づいて、前記1つ以上のコード単位又は前記1つ以上のターゲットコード単位を分類することであって、各カテゴリは、各文字を表すために前記バイト数を使用する、ことと、
前記1つ以上のコード単位又は前記1つ以上のターゲットコード単位の前記カテゴリに基づいて前記符号化モデルを更に決定することと、を更に含む、請求項1に記載の方法。
【請求項7】
ラベル、記述、マーク、又はメタデータのうちの1つ以上に関する視覚化において、前記1つ以上の符号化されたターゲットコード単位を表示することを更に含む、請求項1に記載の方法。
【請求項8】
文字符号化を管理するための命令を含むプロセッサ可読非一時的記憶媒体であって、1つ以上のハードウェアプロセッサによる前記命令の実行が、
文字コードに基づいて1つ以上のコード単位として各々符号化される複数の文字を提供することであって、各文字についての前記1つ以上のコード単位は、文字符号化方式のコードポイントを表す、ことと、
前記1つ以上のプロセッサにおける1つ以上のプロセッサ機能を決定することであって、前記1つ以上のプロセッサ機能は、前記1つ以上のコード単位の並列処理を可能にする、ことと、
前記文字コード、前記1つ以上のプロセッサ機能、及びターゲット文字コードに基づいて符号化モデルを決定することと、
前記1つ以上の幅レジスタを使用して、前記1つ以上のコード単位を、前記符号化モデルに基づいて前記1つ以上のプロセッサ機能に記憶される1つ以上のターゲットコード単位に変換することであって、前記1つ以上のターゲットコード単位が前記ターゲット文字コードに基づき、前記1つ以上のターゲットコード単位が文字ごとに前記コードポイントを符号化する、ことと、
複数のターゲット文字をターゲットストリームに提供することであって、各ターゲット文字は、前記1つ以上のターゲットコード単位として符号化される、ことと、を含む、プロセッサ可読非一時的記憶媒体。
【請求項9】
前記1つ以上のプロセッサ機能を使用して、前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に変換することが、
前記符号化モデルに基づいて、前記1つ以上のプロセッサ機能に関連付けられた1つ以上の命令を決定することと、
前記1つ以上の命令を実行して、前記1つ以上のコード単位の1つ以上の部分を前記1つ以上のターゲットコード単位の1つ以上の部分に同時に変換することと、を更に含む、請求項8に記載の媒体。
【請求項10】
前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に前記変換することが、
第1のレジスタに前記1つ以上のコード単位の第1の部分をロードすることであって、各コード単位が2バイト幅である、ことと、
第2のレジスタに前記1つ以上のコード単位の第2の部分をロードすることであって、各コード単位が2バイト幅であり、前記第2のレジスタが前記第1のレジスタと同じ幅である、ことと、
前記1つ以上のコード単位の前記第1の部分及び前記1つ以上のコード単位の前記第2の部分を第3のレジスタにパッキングすることに基づいて前記1つ以上のターゲットコード単位を提供することであって、各ターゲットコード単位は1バイト幅であり、前記第3のレジスタは前記第1のレジスタと同じ幅である、ことと、を更に含む、請求項8に記載の媒体。
【請求項11】
前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に前記変換することが、
前記1つ以上のコード単位をレジスタにロードすることであって、各コード単位は1バイト幅であり、各文字を表す各コードポイントを符号化するために3つ以上のコード単位が使用される、ことと、
前記符号化モデルに基づいて前記レジスタ内に前記1つ以上のターゲットコード単位を生成することであって、各ターゲットコード単位は2バイト幅であり、各ターゲットコード単位は各文字を表す前記コードポイントを符号化する、ことと、を更に含む、請求項8に記載の媒体。
【請求項12】
前記文字符号化方式がユニコードであり、前記文字コードが、Unicode Transformation Format-8ビット(UTF-8)、Unicode Transformation Format-16ビット(UTF-16)、又はUnicode Transformation Format-32ビット(UTF-32)のうちの1つ以上であり、前記ターゲット文字コードが、UTF-8、UTF-16、又はUTF-32のうちの1つ以上である、請求項8に記載の媒体。
【請求項13】
前記文字コードに基づいて前記符号化モデルを決定することは、
各文字を表すために使用されるバイト数に基づいて、前記1つ以上のコード単位又は前記1つ以上のターゲットコード単位を分類することであって、各カテゴリは、各文字を表すために前記バイト数を使用する、ことと、
前記1つ以上のコード単位又は前記1つ以上のターゲットコード単位の前記カテゴリに基づいて前記符号化モデルを更に決定することと、を更に含む、請求項8に記載の媒体。
【請求項14】
文字符号化を管理するためのシステムであって、
ネットワークコンピュータであって、
少なくとも命令を記憶するメモリと、
文字コードに基づいて1つ以上のコード単位として各々符号化される複数の文字を提供することであって、各文字についての前記1つ以上のコード単位は、文字符号化方式のコードポイントを表す、ことと、
前記1つ以上のプロセッサにおける1つ以上のプロセッサ機能を決定することであって、前記1つ以上のプロセッサ機能は、前記1つ以上のコード単位の並列処理を可能にする、ことと、
前記文字コード、前記1つ以上の幅レジスタ、及びターゲット文字コードに基づいて符号化モデルを決定することと、
前記1つ以上のプロセス機能を使用して、前記1つ以上のコード単位を、前記符号化モデルに基づいて前記1つ以上のプロセス機能に記憶される1つ以上のターゲットコード単位に変換することであって、前記1つ以上のターゲットコード単位は、前記ターゲット文字コードに基づき、前記1つ以上のターゲットコード単位は、文字ごとに前記コードポイントを符号化する、ことと、
複数のターゲット文字をターゲットストリームに提供することであって、各ターゲット文字が前記1つ以上のターゲットコード単位として符号化される、ことと、を含むアクションを実行する命令を実行する、1つ以上のプロセッサと、を含む、ネットワックコンピュータと、
クライアントコンピュータであって、
少なくとも命令を記憶する別のメモリと、
前記複数の文字又は前記ターゲットストリームのうちの1つ以上を提供すること、を含む、アクションを実行する命令を実行する1つ以上の他のプロセッサと、を含む、クライアントコンピュータと、を含む、システム。
【請求項15】
前記1つ以上のプロセッサ機能を使用して、前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に変換することが、
前記符号化モデルに基づいて、前記1つ以上のプロセッサ機能に関連付けられた1つ以上の命令を決定することと、
前記1つ以上の命令を実行して、前記1つ又はコード単位の1つ以上の部分を前記1つ以上のターゲットコード単位の1つ以上の部分に同時に変換することと、を更に含む、請求項14に記載のシステム。
【請求項16】
前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に前記変換することは、
第1のレジスタに前記1つ以上のコード単位の第1の部分をロードすることであって、各コード単位が2バイト幅である、ことと、
第2のレジスタに前記1つ以上のコード単位の第2の部分をロードすることであって、各コード単位が2バイト幅であり、前記第2のレジスタが前記第1のレジスタと同じ幅である、ことと、
前記1つ以上のコード単位の前記第1の部分及び前記1つ以上のコード単位の前記第2の部分を第3のレジスタにパッキングすることに基づいて前記1つ以上のターゲットコード単位を提供することであって、各ターゲットコード単位は1バイト幅であり、前記第3のレジスタは前記第1のレジスタと同じ幅である、ことと、を更に含む、請求項14に記載のシステム。
【請求項17】
前記1つ以上のコード単位を前記1つ以上のターゲットコード単位に前記変換することが、
前記1つ以上のコード単位をレジスタにロードすることであって、各コード単位は1バイト幅であり、各文字を表す各コードポイントを符号化するために3つ以上のコード単位が使用される、ことと、
前記符号化モデルに基づいて前記レジスタ内に前記1つ以上のターゲットコード単位を生成することであって、各ターゲットコード単位は2バイト幅であり、各ターゲットコード単位は各文字を表す前記コードポイントを符号化する、ことと、を更に含む、請求項14に記載のシステム。
【請求項18】
前記文字符号化方式がユニコードであり、前記文字コードが、Unicode Transformation Format-8ビット(UTF-8)、Unicode Transformation Format-16ビット(UTF-16)、又はUnicode Transformation Format-32ビット(UTF-32)のうちの1つ以上であり、前記ターゲット文字コードが、UTF-8、UTF-16、又はUTF-32のうちの1つ以上である、請求項14に記載のシステム。
【請求項19】
前記文字コードに基づいて前記符号化モデルを決定することは、
各文字を表すために使用されるバイト数に基づいて、前記1つ以上のコード単位又は前記1つ以上のターゲットコード単位を分類することであって、各カテゴリは、各文字を表すために前記バイト数を使用する、ことと、
前記1つ以上のコード単位又は前記1つ以上のターゲットコード単位の前記カテゴリに基づいて前記符号化モデルを更に決定することと、を更に含む、請求項14に記載のシステム。
【請求項20】
ラベル、記述、マーク、又はメタデータのうちの1つ以上について、前記1つ以上の符号化されたターゲットコード単位を視覚化で表示することを更に含む、請求項14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般に文字符号化に関し、より詳細には、符号化/復号化性能を改善するために同時処理を使用することに関するが、これに限定されない。
【背景技術】
【0002】
組織は、絶えず増加する量のデータを生成及び収集している。このデータは、消費者活動、製造活動、顧客サービス、サーバログなどの組織の異なる部分に関連付けられてもよい。様々な理由により、そのような組織にとって、膨大なデータの集まりを効果的に利用することは不便な場合がある。ある場合には、データの量は、ビジネスプラクティスを改善するために収集されたデータを効果的に利用することを困難にし得る。場合によっては、組織は、それらのデータの一部又は全部の視覚化を生成し得る。このデータを表すために視覚化を使用することは、組織が、重要なビジネスオペレーションの理解を改善し、彼らが主要な性能インジケータを監視するのを助けることを可能にし得る。場合によっては、視覚化、構成情報、又は他の情報は、様々な文字符号化方式を使用して記憶することができる注釈、ラベリング、ナラティブ、フィールド名などの文字データを含むことができる。場合によっては、1つの文字コードで符号化された文字を別の文字コードに変換することが有利な場合がある。したがって、文字をオンザフライ又は他の方法で変換することに関連し得るリソースコストを低減することが有利であり得る。したがって、本発明がなされたのは、これらの考察及び他の考察に関してである。
【図面の簡単な説明】
【0003】
本発明の非限定的かつ非網羅的な実施形態が、以下の図面を参照しながら説明される。図面では、同様の参照番号は、別段の指定をしない限り、様々な図全体を通して同様の部分を指す。本発明をよりよく理解するために、添付の図面と併せて読まれるべきである、以下の発明を実施するための形態について言及する。
【
図1】様々な実施形態が実装され得るシステム環境を示す図である。
【
図2】クライアントコンピュータの概略的な実施形態を示す。
【
図3】ネットワークコンピュータの概略的な実施形態を示す。
【
図4】種々の実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するためのシステムの論理アーキテクチャを示す。
【
図5】種々の実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するためのシステムの一部の論理概略図を示す。
【
図6】種々の実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するための符号化エンジンの一部の論理概略図を示す。
【
図7】様々な実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するための文字コードを比較する表の論理概略図を示す。
【
図8】種々の実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するためのプロセスの概要フローチャートを示す。
【
図9】様々な実施形態のうちの1つ以上による、UTF-16符号化されたアスキー文字をUTF-8に変換するためのプロセスのフローチャートを示す。
【
図10】様々な実施形態のうちの1つ以上による、UTF-8符号化CJK文字をUTF-16符号化CJK文字に変換するためのプロセスのフローチャートを示す。
【
図11】種々の実施形態のうちの1つ以上に従ってもよい、文字符号化規格の一部の概要を示す。
【
図12】種々の実施形態のうちの1つ以上による、順次単一コード単位UTF-8ソースからターゲット(任意)へのプロセスのためのフローチャートを示す。
【
図13】種々の実施形態のうちの1つ以上による、シグネチャ32ビットUTF-8ソースからターゲット(任意)へのためのプロセスのためのフローチャートを示す。
【
図14】種々の実施形態のうちの1つ以上による、SSE4 128ビットUTF_8ソースからターゲット(任意)へのプロセスのためのフローチャートを示す。
【
図15】種々の実施形態のうちの1つ以上による、AVX-512 512ビットUTF-8ソースから(任意の)ターゲットへのプロセスのためのフローチャートを示す。
【
図16】順次単一コード単位(現在)UTF-16ソースからUTF-8ターゲットへのプロセスのフローチャートを示す。
【
図17】SSE4 128ビットUTF-16ソースからUTF-8ターゲットへのプロセスのフローチャートを示す。
【
図18】種々の実施形態のうちの1つ以上による、AVX-512 512ビットUTF-16ソースからUTF-8ターゲットのためのプロセスのフローチャートを示す。
【
図19】順次単一コード単位(現在)UTF-32ソースからUTF-8ターゲットのためのプロセスのフローチャートを示す。
【
図20】種々の実施形態のうちの1つ以上による、SSE4 128ビットUTF-32ソースからUTF-8ターゲットのためのプロセスのフローチャートを示す。
【
図21】種々の実施形態のうちの1つ以上による、AVX 512ビットUTF-32ソースからUTF-8ターゲットへのプロセスのためのフローチャートを示す。
【
図22】順次単一コード単位(現在)UTF-16ソースからUTF-32ターゲットへのプロセス0のフローチャートを示す。
【
図23】SSE2 128ビットUTF-16ソースからUTF-32ターゲットへのプロセスのフローチャートを示す。
【
図24】種々の実施形態のうちの1つ以上による、AVX-512 512ビットUTF-16ソースからUTF-32ターゲットのためのプロセスのフローチャートを示す。
【
図25】順次単一コード単位UTF-32ソースからUTF-16ターゲットへのプロセスのフローチャートを示す。
【
図26】様々な実施形態のうちの1つ以上による、SSE2 128ビットUTF-32ソースからUTF-16ターゲットへのプロセスのフローチャートを示す。
【
図27】種々の実施形態のうちの1つ以上による、AVX-512 512ビットUTF-32ソースからUTF-16ターゲットのためのプロセスのためのフローチャートを示す。
【発明を実施するための形態】
【0004】
次に、本明細書の一部を形成し、本発明を実施することができる特定の例示的な実施形態を実例として示す添付の図面を参照して、様々な実施形態を以下でより完全に説明する。しかしながら、実施形態は、多くの異なる形態で具現化され得、本明細書に記載される実施形態に限定されると解釈されるべきではない。むしろ、これらの実施形態は、本開示が徹底的かつ完全であり、実施形態の範囲を当業者に十分に伝えるように提供される。とりわけ、様々な実施形態は、方法、システム、媒体、又は装置であり得る。したがって、様々な実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態をとることができる。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【0005】
本明細書及び特許請求の範囲を通じて、以下の用語は、文脈が明確に別段の指示をしない限り、本明細書に明示的に関連付けられた意味をとる。本明細書で使用される「一実施形態では」という句は、同じ実施形態を指す場合もあるが、必ずしも同じ実施形態を指すわけではない。更に、本明細書で使用される「別の実施形態では」という句は、異なる実施形態を指す場合もあるが、必ずしも異なる実施形態を指すわけではない。したがって、以下で説明するように、本発明の範囲又は趣旨から逸脱することなく、様々な実施形態を容易に組み合わせることができる。
【0006】
加えて、本明細書で使用される場合、「又は」という用語は、包括的な「又は」演算子であり、文脈が明確に別段の指示をしない限り、「及び/又は」という用語と同等である。「に基づいて」という用語は排他的なものではなく、文脈が明確に別段の指示をしない限り、記載されていない追加の要因に基づくことを可能にする。更に、本明細書全体を通して、「a」、「an」、及び「the」の意味は、複数の言及を含む。「in」の意味は、「in」及び「on」を含む。
【0007】
例えば、例示的な実施形態に関して、以下の用語もまた、文脈が明確に別段の指示をしない限り、対応する意味に従って本明細書で使用される。
【0008】
本明細書で使用される場合、「エンジン」という用語は、C、C++、Objective-C、COBOL、Java(商標)、PHP、Perl、JavaScript、Ruby、VBScript、C#などのMicrosoft.NET(商標)言語などのプログラミング言語で書くことができるハードウェア又はソフトウェア命令で具現化された論理を指す。エンジンは、実行可能プログラムにコンパイルされてもよく、又は解釈されたプログラミング言語で書かれてもよい。ソフトウェアエンジンは、他のエンジンから、又はそれら自体から呼び出すことができる。本明細書で説明されるエンジンは、他のエンジン又はアプリケーションとマージされ得るか、又はサブエンジンに分割され得る、1つ以上の論理モジュールを指す。エンジンは、非一時的コンピュータ可読媒体又はコンピュータ記憶装置内に記憶され、1つ以上の汎用コンピュータ上に記憶され、それによって実行され、したがって、エンジンを提供するように構成された専用コンピュータを作成することができる。
【0009】
本明細書で使用される場合、「データソース」という用語は、組織のための情報を記憶又は提供するデータベース、アプリケーション、サービス、ファイルシステムなどを指す。データソースの例は、RDBMSデータベース、グラフデータベース、スプレッドシート、ファイルシステム、文書管理システム、ローカル又はリモートデータストリームなどを含むことができる。場合によっては、データソースは、1つ以上のテーブル又はテーブル状の構造の周りに編成される。他の場合には、データソースは、グラフ又はグラフ様構造として編成される。
【0010】
本明細書で使用される場合、「データモデル」という用語は、基礎となるデータソースの1つ以上の部分の表現を提供する1つ以上のデータ構造を指す。場合によっては、データモデルは、特定のアプリケーションのためのデータソースのビューを提供することができる。データモデルは、基礎となるデータソースへのビュー又はインターフェースと見なされ得る。場合によっては、データモデルはデータソースに直接マッピングされてもよい(例えば、実際には論理パススルー)。また、場合によっては、データモデルはデータソースによって提供されてもよい。データモデルは、組織が、より便利な、より意味のある(例えば、推論するのがより容易な)、より安全ななどであり得る方法で、データソースからの情報を編成又は提示することを可能にする。
【0011】
本明細書で使用される場合、「データオブジェクト」という用語は、データモデルを含む1つ以上のデータ構造を指す。場合によっては、データオブジェクトは、データモデルの部分と見なされてもよい。データオブジェクトは、アイテムの個々のインスタンス又はアイテムのクラス若しくは種類を表し得る。
【0012】
本明細書で使用される場合、「パネル」という用語は、グラフィカルユーザインターフェース(GUI)内で定義されたジオメトリ(例えば、x、y、z順序)を有するGUI内の領域を指す。パネルは、ユーザに情報を表示するように、又は1つ以上のインタラクティブ制御をホストするように構成されてもよい。パネルに関連付けられたジオメトリ又はスタイルは、動的規則を含む構成情報を使用して定義することができる。また、場合によっては、ユーザは、1つ以上のパネル上で、移動、表示、非表示、サイズ変更、順序変更などのアクションを実行することが可能にされ得る。
【0013】
本明細書で使用される場合、「視覚化モデル」という用語は、1つ以上のハードウェアディスプレイ上に表示される視覚化において使用するのに適し得るデータモデルの1つ以上の表現を表す1つ以上のデータ構造を指す。視覚化モデルは、非オーサリングユーザに利用可能にされ得るスタイリング又はユーザインターフェース機能を定義し得る。
【0014】
本明細書で使用される場合、「表示オブジェクト」という用語は、視覚化モデルを含む1つ以上のデータ構造を指す。場合によっては、表示オブジェクトは、視覚化モデルの部分と見なされ得る。表示オブジェクトは、アイテムの個々のインスタンス、又は視覚化において表示され得るアイテムのクラス若しくは種類全体を表し得る。いくつかの実施形態では、表示オブジェクトは、データモデルのある部分のビューを提供するため、ビューと見なされるか、又はビューと呼ばれる場合がある。
【0015】
本明細書で使用される場合、「文字符号化」、「文字符号化方式」、又は「符号化文字」という用語は、表示又は情報処理で使用する文字を表すために使用することができるコンピュータ可読情報を指す。文字符号化方式を使用して、1つ以上の人間の言語からの文字をコンピュータ可読値にマッピングすることができる。また、文字符号化を使用して、記号、グリフ、絵文字などをコンピュータ可読値にマッピングすることができる。標準化された文字符号化は、異なるコンピュータアプリケーション又はサービスが、コンピュータ可読値を同じ/正しい文字にマッピングすることを可能にする。例えば、ユニコードは、異なるアプリケーション又はサービスにわたって文字を一貫して表すことを可能にするために、多くのコンピュータアプリケーションに包含されている文字符号化規格である。
【0016】
本明細書で使用される場合、「コードポイント」という用語は、所与の文字符号化に対する特定の文字の符号化値を指す。例えば、文字符号化方式のコードポイントは、特定の文字、グリフ、又は記号を参照することができる。
【0017】
本明細書で使用される場合、「文字コード」という用語は、文字符号化方式のためのコードポイントを符号化するための符号化方式を指す。例えば、UTF-8、UTF-16、及びUTF-32は、ユニコードコードポイントを表すための文字コードである。
【0018】
本明細書で使用される場合、「コード単位」という用語は、文字符号化方式のコードポイントを表すために使用される文字コードの最小サイズのワード又は要素を指す。例えば、UTF-8は8ビットコード単位を有する。UTF-16は16ビットのコード単位を有し、UTF-32は32ビットのコード単位を有する。
【0019】
本明細書で使用される場合、「符号化モデル」という用語は、1つ以上の文字コードで符号化された文字を1つ以上の他の文字コードで符号化された文字に変換する動作を実行する規則、命令、コードを含むか又は定義するデータ構造を指す。符号化モデルは、1つの文字コードを別の文字コードから区別するための1つ以上のシグネチャ、パターン、命令、条件などを含むことができる。同様に、符号化モデルは、文字コードを確認又は検証するためのシグネチャ、パターン、命令、条件などを含むことができる。したがって、新しい又は追加の文字コードが予想される場合、当業者は、新しい又は追加の文字コードをサポートする符号化モデルを提供することができる。
【0020】
本明細書で使用される場合、「プロセッサ機能」、「並列処理機能」という用語は、並列処理を可能にする専用命令、レジスタ、APIなどを指す。場合によっては、プロセッサは、より多くの又はより少ないプロセッサ機能を有してもよい。場合によっては、異なるプロセッサが異なるプロセッサ機能を有してもよい。同様に、場合によっては、いくつかのプロセッサは、並列処理のためのサポートを提供するプロセッサ機能を有しないことがある。
【0021】
本明細書で使用される場合、「構成情報」という用語は、構成ファイル、データベース、ユーザ入力、組み込みデフォルトなど、又はそれらの組み合わせを含む様々なソースから提供され得る、ルールベースのポリシー、パターンマッチング、スクリプト(例えば、コンピュータ可読命令)などを含み得る情報を指す。
【0022】
以下は、本発明のいくつかの態様の基本的な理解を提供するために、本発明の実施形態を簡単に説明する。この簡単な説明は、広範な概観を意図するものではない。それは、主要な又は重要な要素を識別すること、又は範囲を線引きすること、又はさもなければ範囲を狭めることを意図するものではない。その目的は、後で提示されるより詳細な説明の前置きとして、簡略化された形式でいくつかの概念を単に提供することである。
【0023】
簡単に述べると、様々な実施形態は、1つ以上のプロセッサを含む1つ以上のネットワークコンピュータを使用して文字符号化を管理することを対象とする。種々の実施形態のうちの1つ以上において、文字コードに基づいて1つ以上のコード単位として各々符号化された複数の文字は、各文字に対する1つ以上のコード単位が文字符号化方式のコードポイントを表すように提供することができる。
【0024】
種々の実施形態のうちの1つ以上において、1つ以上のプロセッサにおける1つ以上のプロセッサ機能は、1つ以上のプロセッサ機能が1つ以上のプロセッサと同時に1つ以上のコード単位の並列処理を可能にすることができるように決定することができる。
【0025】
様々な実施形態のうちの1つ以上において、符号化モデルは、文字コード、1つ以上のプロセッサ機能、及びターゲット文字コードに基づいて決定することができる。
【0026】
種々の実施形態のうちの1つ以上において、1つ以上のターゲットコード単位がターゲット文字コードに基づき、1つ以上のターゲットコード単位が各文字のコードポイントを符号化するように、1つ以上のプロセッサ機能を使用して、1つ以上のコード単位を符号化モデルに基づいて1つ以上のプロセッサ機能に記憶された1つ以上のターゲットコード単位に変換することができる。
【0027】
種々の実施形態のうちの1つ以上において、複数のターゲット文字は、各ターゲット文字を1つ以上のターゲットコード単位として符号化することができるように、ターゲットストリームに提供することができる。
【0028】
種々の実施形態のうちの1つ以上において、1つ以上のプロセッサ機能を用いて1つ以上のコード単位を1つ以上のターゲットコード単位に変換することは、符号化モデルに基づいて1つ以上の命令を決定することと、1つ以上の命令を実行して、1つ以上のコード単位の1つ以上の部分を1つ以上のターゲットコード単位の部分に同時に変換することと、を含むことができる。
【0029】
種々の実施形態のうちの1つ以上において、1つ以上のコード単位を1つ以上のターゲットコード単位に変換することは、各コード単位が2バイト幅となるように、1つ以上のコード単位の第1の部分を第1のレジスタにロードすることと、各コード単位の幅が2バイトであり、第2のレジスタが第1のレジスタと同じ幅になるように、第2のレジスタに1つ以上のコード単位の第2の部分をロードすることと、各ターゲットコード単位が1バイト幅となるように、1つ以上のコード単位の第1の部分及び1つ以上のコード単位の第2の部分を第3のレジスタにパッキングすることに基づいて、1つ以上のターゲットコード単位を提供することと、を含み得、第3のレジスタは第1のレジスタと同じ幅である。
【0030】
様々な実施形態のうちの1つ以上において、1つ以上のコード単位を1つ以上のターゲットコード単位に変換することは、各コード単位が1バイト幅であり、3つ以上のコード単位が各文字を表す各コードポイントを符号化するために使用されるように、1つ以上のコード単位をレジスタにロードすることと、各ターゲットコード単位が2バイト幅であり、各ターゲットコード単位が各文字を表すコードポイントを符号化するように、符号化モデルに基づいてレジスタ内に1つ以上のターゲットコード単位を生成することと、を含み得る。
【0031】
種々の実施形態のうちの1つ以上において、文字コードがUnicode Transformation Format-8ビット(UTF-8)、Unicode Transformation Format-16ビット(UTF-16)、又はUnicode Transformation Format-32ビット(UTF-32)のうちの1つ以上であり、ターゲット文字コードがUTF-8、UTF-16、又はUTF-32のうちの1つ以上であるように、文字符号化方式はユニコードである。
【0032】
例示的な動作環境
図1は、本発明の実施形態が実施され得る環境の一実施形態のコンポーネントを示す。本発明を実施するためにコンポーネントのすべてが必要とされるわけではなく、コンポーネントの配置及びタイプの変更が、本発明の趣旨又は範囲から逸脱することなく行われてもよい。示されるように、
図1のシステム100は、ローカルエリアネットワーク(LAN)/広域ネットワーク(WAN)-(ネットワーク)110、無線ネットワーク108、クライアントコンピュータ102~105、視覚化サーバコンピュータ116、データソースサーバコンピュータ118などを含む。
【0033】
クライアントコンピュータ102~105の少なくとも1つの実施形態は、
図2に関連して以下でより詳細に説明される。一実施形態では、クライアントコンピュータ102~105のうちの少なくともいくつかは、ネットワーク108又は110などの1つ以上の有線又は無線ネットワーク上で動作することができる。一般に、クライアントコンピュータ102~105は、情報を送受信し、様々なオンラインアクティビティ、オフラインアクションなどを実行するためにネットワークを介して通信することができる実質的に任意のコンピュータを含むことができる。一実施形態では、クライアントコンピュータ102~105のうちの1つ以上は、ビジネス又は他のエンティティのための様々なサービスを実行するために、ビジネス又は他のエンティティ内で動作するように構成され得る。例えば、クライアントコンピュータ102~105は、ウェブサーバ、ファイアウォール、クライアントアプリケーション、メディアプレーヤ、携帯電話、ゲームコンソール、デスクトップコンピュータなどとして動作するように構成されてもよい。しかしながら、クライアントコンピュータ102~105はまた、これらのサービスに制約されず、例えば、他の実施形態におけるエンドユーザコンピューティングに関して使用されてもよい。より多くの又はより少ないクライアントコンピュータ(
図1に示されるように)が、本明細書に説明されるようなシステム内に含まれてもよく、したがって、実施形態は、採用されるクライアントコンピュータの数又はタイプによって制約されないことを認識されたい。
【0034】
クライアントコンピュータ102として動作することができるコンピュータは、パーソナルコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な電子装置、ネットワークPCなど有線又は無線通信媒体を使用して通常接続するコンピュータを含むことができる。いくつかの実施形態では、クライアントコンピュータ102~105は、ラップトップコンピュータ103、モバイルコンピュータ104、タブレットコンピュータ105など、別のコンピュータに接続し、情報を受信することができる事実上任意のポータブルコンピュータを含むことができる。しかしながら、ポータブルコンピュータは、そのように限定されず、セルラー電話、ディスプレイページャ、無線周波数(RF)装置、赤外線(IR)装置、携帯情報端末(PDA)、ハンドヘルドコンピュータ、ウェアラブルコンピュータ、前述のコンピュータのうちの1つ以上を組み合わせた統合装置などの他のポータブルコンピュータも含み得る。したがって、クライアントコンピュータ102~105は、通常、能力及び機能に関して広範囲にわたる。更に、クライアントコンピュータ102~105は、ブラウザ又は他のウェブベースのアプリケーションを含む様々なコンピューティングアプリケーションにアクセスすることができる。
【0035】
ウェブ対応クライアントコンピュータは、ウェブを介して要求を送信し、応答を受信するように構成されたブラウザアプリケーションを含むことができる。ブラウザアプリケーションは、実質的に任意のウェブベースの言語を使用して、グラフィックス、テキスト、マルチメディアなどを受信及び表示するように構成され得る。一実施形態では、ブラウザアプリケーションは、JavaScript、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、JavaScriptオブジェクト表記法(JSON)、カスケーディングスタイルシート(CSS)など、又はそれらの組み合わせを使用して、メッセージを表示及び送信することができる。一実施形態では、クライアントコンピュータのユーザは、ブラウザアプリケーションを使用して、ネットワーク(オンライン)を介して様々なアクティビティを実行することができる。しかし、別のアプリケーションを使用して、様々なオンラインアクティビティを実行することもできる。
【0036】
クライアントコンピュータ102~105は、別のコンピュータとの間でコンテンツを受信又は送信するように構成された少なくとも1つの他のクライアントアプリケーションを含むこともできる。クライアントアプリケーションは、コンテンツなどを送信又は受信する能力を含むことができる。クライアントアプリケーションは更に、タイプ、能力、名前などを含む、それ自体を識別する情報を提供することができる。一実施形態では、クライアントコンピュータ102~105は、インターネットプロトコル(IP)アドレス、電話番号、モバイル識別番号(MIN)、電子シリアル番号(ESN)、クライアント証明書、又は他の装置識別子を含む様々な機構のいずれかを介して、それら自体を一意に識別することができる。そのような情報は、他のクライアントコンピュータ、視覚化サーバコンピュータ116、データソースサーバコンピュータ118、又は他のコンピュータの間で送信される1つ以上のネットワークパケットなどで提供され得る。
【0037】
クライアントコンピュータ102~105は更に、視覚化サーバコンピュータ116、データソースサーバコンピュータ118などの別のコンピュータによって管理され得るエンドユーザアカウントにエンドユーザがログインすることを可能にするクライアントアプリケーションを含むように構成され得る。そのようなエンドユーザアカウントは、非限定的な一例では、エンドユーザが、非限定的な一例では、プロジェクト管理、ソフトウェア開発、システム管理、構成管理、検索アクティビティ、ソーシャルネットワーキングアクティビティ、様々なウェブサイトの閲覧、他のユーザとの通信などを含む1つ以上のオンラインアクティビティを管理することを可能にするように構成され得る。また、クライアントコンピュータは、ユーザがレポート、対話型ユーザインターフェース、又は視覚化サーバコンピュータ116、データソースサーバコンピュータ118によって提供される結果を表示することを可能にするように構成されてもよい。
【0038】
無線ネットワーク108は、クライアントコンピュータ103~105及びそのコンポーネントをネットワーク110に結合するように構成される。無線ネットワーク108は、クライアントコンピュータ103~105にインフラストラクチャ指向接続を提供するために、スタンドアロンアドホックネットワークなどを更にオーバーレイすることができる様々な無線サブネットワークのいずれかを含むことができる。そのようなサブネットワークは、メッシュネットワーク、無線LAN(WLAN)ネットワーク、セルラーネットワークなどを含み得る。一実施形態では、システムは1つ以上の無線ネットワークを含むことができる。
【0039】
無線ネットワーク108は、ワイヤレス無線リンクなどによって接続された端末、ゲートウェイ、ルータなどの自律システムを更に含むことができる。これらのコネクタは、無線ネットワーク108のトポロジが急速に変化し得るように、自由かつランダムに移動し、それら自体を任意に編成するように構成され得る。
【0040】
無線ネットワーク108は、セルラーシステム、WLAN、無線ルータ(WR)メッシュなどのための第2(2G)、第3(3G)、第4(4G)、第5(5G)世代無線アクセスを含む複数のアクセス技術を更に採用し得る。2G、3G、4G、5G、及び将来のアクセスネットワークなどのアクセス技術は、様々な程度のモビリティを有するクライアントコンピュータ103~105などのモバイルコンピュータのための広いエリアカバレージを可能にし得る。1つの非限定的な例では、無線ネットワーク108は、モバイル通信用グローバルシステム(GSM)、汎用パケット無線サービス(GPRS)、拡張データGSM環境(EDGE)、コード分割多元接続(CDMA)、時分割多元接続(TDMA)、広帯域コード分割多元接続(WCDMA)、高速ダウンリンクパケットアクセス(HSDPA)、ロングタームエボリューション(LTE)などの無線ネットワークアクセスを介して無線接続を可能にすることができる。本質的に、無線ネットワーク108は、情報がクライアントコンピュータ103~105と別のコンピュータ、ネットワーク、クラウドベースのネットワーク、クラウドインスタンスなどとの間で移動することができる実質的に任意の無線通信機構を含むことができる。
【0041】
ネットワーク110は、ネットワークコンピュータを、視覚化サーバコンピュータ116、データソースサーバコンピュータ118、クライアントコンピュータ102、及びクライアントコンピュータ103~105を含む他のコンピュータと、無線ネットワーク108などを介して結合するように構成される。ネットワーク110は、1つの電子装置から別の電子装置に情報を通信するための任意の形態のコンピュータ可読媒体を使用することが可能である。また、ネットワーク110は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、ユニバーサルシリアルバス(USB)ポート、イーサネットポート、他の形態のコンピュータ可読媒体を介するなどの直接接続、又はそれらの任意の組み合わせに加えて、インターネットを含むことができる。異なるアーキテクチャ及びプロトコルに基づくものを含むLANの相互接続されたセット上で、ルータは、LAN間のリンクとして働き、メッセージを一方から他方に送信することを可能にする。更に、LAN内の通信リンクは、通常、ツイスト対線又は同軸ケーブルを含むが、ネットワーク間の通信リンクは、アナログ電話回線、T1、T2、T3、及びT4を含むフル又はフラクショナル専用デジタル回線、又は、例えば、Eキャリア、統合サービスデジタルネットワーク(ISDN)、デジタル加入者回線(DSL)、衛星リンクを含む無線リンク、又は当業者に知られている他の通信リンクを含む他のキャリア機構を利用することができる。更に、通信リンクは、限定はしないが、例えば、DS-0、DS-1、DS-2、DS-3、DS-4、OC-3、OC-12、OC-48などを含む、様々なデジタルシグナリング技術のいずれかを更に使用することができる。更に、リモートコンピュータ及び他の関連電子装置は、モデム及び一時的な電話リンクを介してLAN又はWANのいずれかにリモート的に接続することができる。一実施形態では、ネットワーク110は、インターネットプロトコル(IP)の情報をトランスポートするように構成され得る。
【0042】
加えて、通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のトランスポート機構を具現化し、任意の情報非一時的配信媒体又は一時的配信媒体を含む。例として、通信媒体は、ツイスト対、同軸ケーブル、光ファイバ、導波管、及び他の有線媒体などの有線媒体、並びに音響、RF、赤外線、及び他の無線媒体などの無線媒体を含む。
【0043】
また、視覚化サーバコンピュータ116、データソースサーバコンピュータ118の一実施形態は、
図3に関連して以下でより詳細に説明される。
図1は、視覚化サーバコンピュータ116、データソースサーバコンピュータ118などをそれぞれ単一のコンピュータとして示しているが、本発明又は実施形態はそのように限定されない。例えば、視覚化サーバコンピュータ116、データソースサーバコンピュータ118などの1つ以上の機能は、1つ以上の別個のネットワークコンピュータにわたって分散されてもよい。更に、1つ以上の実施形態では、視覚化サーバコンピュータ116、データソースサーバコンピュータ118は、複数のネットワークコンピュータを使用して実装することができる。更に、様々な実施形態のうちの1つ以上において、視覚化サーバコンピュータ116、データソースサーバコンピュータ118などは、1つ以上のクラウドネットワーク内の1つ以上のクラウドインスタンスを使用して実装することができる。したがって、これらの本発明及び実施形態は、単一の環境に限定されるものとして解釈されるべきではなく、他の構成及び他のアーキテクチャも想定される。
【0044】
例示的なクライアントコンピュータ
図2は、図示されたものよりも多くの又は少ないコンポーネントを含むことができるクライアントコンピュータ200の一実施形態を示す。クライアントコンピュータ200は、例えば、
図1に示すモバイルコンピュータ又はクライアントコンピュータの1つ以上の実施形態を表すことができる。
【0045】
クライアントコンピュータ200は、バス228を介してメモリ204と通信するプロセッサ202を含んでもよい。クライアントコンピュータ200はまた、電源230、ネットワークインターフェース232、オーディオインターフェース256、ディスプレイ250、キーパッド252、照明器254、ビデオインターフェース242、入力/出力インターフェース238、触覚インターフェース264、全地球測位システム(GPS)受信機258、オープンエアジェスチャインターフェース260、温度インターフェース262、カメラ240、プロジェクタ246、ポインティング装置インターフェース266、プロセッサ可読固定記憶装置234、及びプロセッサ可読リムーバブル記憶装置236を含んでもよい。クライアントコンピュータ200は、任意選択で、基地局(図示せず)と通信するか、又は別のコンピュータと直接通信することができる。また、一実施形態では、図示されていないが、ジャイロスコープをクライアントコンピュータ200内で使用して、クライアントコンピュータ200の向きを測定又は維持することができる。
【0046】
電源230は、クライアントコンピュータ200に電力を供給することができる。充電式又は非充電式バッテリが、電力を提供するために使用されてもよい。電力はまた、ACアダプタ又はバッテリを補充若しくは再充電する電動ドッキングクレードル等の外部電源によって提供されてもよい。
【0047】
ネットワークインターフェース232は、クライアントコンピュータ200を1つ以上のネットワークに結合するための回路を含み、モバイル通信(GSM)、CDMA、時分割多元接続(TDMA)、UDP、TCP/IP、SMS、MMS、GPRS、WAP、UWB、WiMAX、SIP/RTP、GPRS、EDGE、WCDMA、LTE、UMTS、OFDM、CDMA2000、EV-DO、HSDPA、又は様々な他の無線通信プロトコルのいずれかのためのOSIモデルの任意の部分を実装するプロトコル及び技術を含むがこれらに限定されない1つ以上の通信プロトコル及び技術とともに使用するために構築される。ネットワークインターフェース232は、トランシーバ、送受信装置、又はネットワークインターフェースカード(NIC)として知られることもある。
【0048】
オーディオインターフェース256は、人間の声の音などのオーディオ信号を生成及び受信するように構成されてもよい。例えば、オーディオインターフェース256は、スピーカ及びマイクロフォン(図示せず)に結合されて、他者との電気通信を可能にし、又は何らかのアクションのためのオーディオ肯定応答を生成することができる。オーディオインターフェース256内のマイクロフォンは、例えば、音声認識を使用し、音に基づいてタッチを検出するなど、クライアントコンピュータ200への入力又はその制御のために使用することもできる。
【0049】
ディスプレイ250は、液晶ディスプレイ(LCD)、ガスプラズマ、電子インク、発光ダイオード(LED)、有機LED(OLED)、又はコンピュータとともに使用することができる任意の他のタイプの光反射型若しくは光透過型ディスプレイであってもよい。ディスプレイ250はまた、スタイラス又は人間の手からの指などのオブジェクトから入力を受信するように構成されたタッチインターフェース244を含むことができ、抵抗性、容量性、表面弾性波(SAW)、赤外線、レーダー、又は他の技術を使用してタッチ又はジェスチャを感知することができる。
【0050】
プロジェクタ246は、リモートハンドヘルドプロジェクタであってもよいし、リモート壁又はリモートスクリーンなどの任意の他の反射オブジェクトに画像を投影することができる一体型プロジェクタであってもよい。
【0051】
ビデオインターフェース242は、静止写真、ビデオセグメント、赤外線ビデオなどのビデオ画像をキャプチャするように構成され得る。例えば、ビデオインターフェース242は、デジタルビデオカメラ、ウェブカメラ等に結合されてもよい。ビデオインターフェース242は、レンズ、画像センサ、及び他の電子機器を備え得る。画像センサは、相補型金属酸化膜半導体(CMOS)集積回路、電荷結合素子(CCD)、又は光を感知するための任意の他の集積回路を含んでもよい。
【0052】
キーパッド252は、ユーザからの入力を受け取るように構成された任意の入力装置を備えることができる。例えば、キーパッド252は、押しボタン式数字ダイヤル又はキーボードを含んでもよい。キーパッド252はまた、画像の選択及び送信に関連付けられたコマンドボタンを含んでもよい。
【0053】
照明器254は、状態表示を提供してもよいし、光を提供してもよい。照明器254は、特定の期間にわたって、又はイベントメッセージに応答してアクティブのままであってもよい。例えば、照明器254は、アクティブであるとき、キーパッド252上のボタンをバックライトし、クライアントコンピュータが電力供給されている間、オンのままであってもよい。また、照明器254は、別のクライアントコンピュータをダイヤルするなどの特定のアクションが実行されるときに、これらのボタンを様々なパターンで背面照明することができる。照明器254は、クライアントコンピュータの透明又は半透明のケース内に配置された光源を、アクションに応答して点灯させることもできる。
【0054】
更に、クライアントコンピュータ200は、鍵、デジタル証明書、パスワード、パスフレーズ、二要素認証情報などのセキュリティ/暗号情報を生成、記憶、又は使用するための追加の耐タンパー性保護手段を提供するハードウェアセキュリティモジュール(HSM)268も備えることができる。いくつかの実施形態では、ハードウェアセキュリティモジュールは、1つ以上の標準公開鍵インフラストラクチャ(PKI)をサポートするために採用されてもよく、鍵対等を生成、管理、又は記憶するために採用されてもよい。いくつかの実施形態では、HSM 268は、スタンドアロンコンピュータであってもよく、他の場合には、HSM 268は、クライアントコンピュータに追加され得るハードウェアカードとして構成されてもよい。
【0055】
クライアントコンピュータ200はまた、外部周辺装置又は他のクライアントコンピュータ及びネットワークコンピュータ等の他のコンピュータと通信するための入力/出力インターフェース238を備えてもよい。周辺装置は、オーディオヘッドセット、バーチャルリアリティヘッドセット、ディスプレイスクリーングラス、リモートスピーカーシステム、リモートスピーカー及びマイクロフォンシステムなどを含み得る。入力/出力インターフェース238は、ユニバーサルシリアルバス(USB)、赤外線、WiFi、WiMAX、Bluetooth(商標)などの1つ以上の技術を利用することができる。
【0056】
入力/出力インターフェース238はまた、地理的位置情報(例えば、GPS)を決定するため、電力状態(例えば、電圧センサ、電流センサ、周波数センサなど)を監視するため、天候(例えば、サーモスタット、気圧計、風速計、湿度検出器、降水量スケールなど)を監視するためなどの1つ以上のセンサを含んでもよい。センサは、クライアントコンピュータ200の外部にあるデータを収集又は測定する1つ以上のハードウェアセンサであってもよい。
【0057】
触覚インターフェース264は、クライアントコンピュータのユーザに触覚フィードバックを提供するように構成されてもよい。例えば、触覚インターフェース264は、コンピュータの別のユーザが電話をかけているときに特定の方法でクライアントコンピュータ200を振動させるために使用されてもよい。温度インターフェース262は、温度測定入力又は温度変化出力をクライアントコンピュータ200のユーザに提供するために使用され得る。オープンエアジェスチャインターフェース260は、例えば、単一又はステレオビデオカメラ、レーダー、ユーザによって保持又は装着されるコンピュータ内のジャイロスコープセンサーなどを使用することによって、クライアントコンピュータ200のユーザの物理的ジェスチャを感知し得る。カメラ240は、クライアントコンピュータ200のユーザの物理的な目の動きを追跡するために使用され得る。
【0058】
GPSトランシーバ258は、地球の表面上のクライアントコンピュータ200の物理座標を決定することができ、これは通常、緯度及び経度の値として位置を出力する。GPSトランシーバ258はまた、地球の表面上のクライアントコンピュータ200の物理的位置を更に決定するために、三角測量、アシストGPS(AGPS)、拡張観測時間差(E-OTD)、セル識別子(CI)、サービスエリア識別子(SAI)、拡張タイミングアドバンス(ETA)、基地局サブシステム(BSS)などを含むがこれらに限定されない他の地理的測位機構を使用することができる。異なる条件下で、GPSトランシーバ258はクライアントコンピュータ200の物理的位置を決定することができることが理解される。しかしながら、1つ以上の実施形態では、クライアントコンピュータ200は、他のコンポーネントを介して、例えば、メディアアクセス制御(MAC)アドレス、IPアドレス等を含む、クライアントコンピュータの物理的位置を決定するために使用され得る他の情報を提供し得る。
【0059】
様々な実施形態のうちの少なくとも1つにおいて、オペレーティングシステム206、他のクライアントアプリ224、ウェブブラウザ226などのアプリケーションは、地理的位置情報を使用して、時間帯、言語、通貨、カレンダフォーマッティングなどの1つ以上の位置特定機能を選択するように構成されてもよい。位置特定機能は、ディスプレイオブジェクト、データモデル、データオブジェクト、ユーザインターフェース、レポート、並びに内部プロセス又はデータベースにおいて使用され得る。様々な実施形態のうちの少なくとも1つにおいて、位置特定情報を選択するために使用される地理的位置情報は、GPS 258によって提供され得る。また、いくつかの実施形態では、地理的位置情報は、無線ネットワーク108又はネットワーク111などのネットワーク上で1つ以上の地理的位置プロトコルを使用して提供される情報を含むことができる。
【0060】
ヒューマンインターフェースコンポーネントは、クライアントコンピュータ200から物理的に分離された周辺装置であり得、クライアントコンピュータ200へのリモート入力又は出力を可能にする。例えば、ディスプレイ250又はキーボード252などのヒューマンインターフェースコンポーネントを介して本明細書で説明されるようにルーティングされる情報は、代わりに、ネットワークインターフェース232を介して、リモートに位置する適切なヒューマンインターフェースコンポーネントにルーティングされ得る。リモートであり得るヒューマンインターフェース周辺コンポーネントの例は、オーディオ装置、ポインティング装置、キーパッド、ディスプレイ、カメラ、プロジェクタなどを含むが、これらに限定されない。これらの周辺コンポーネントは、Bluetooth(商標)、Zigbee(商標)などのピコネットワークを介して通信することができる。そのような周辺ヒューマンインターフェースコンポーネントを有するクライアントコンピュータの1つの非限定的な例は、ウェアラブルコンピュータであり、これは、壁又はユーザの手などの反射面上にピコプロジェクタによって投影された画像の部分に向かうユーザのジェスチャを感知するために、別個に位置するクライアントコンピュータとリモートで通信する1つ以上のカメラとともにリモートピコプロジェクタを含み得る。
【0061】
クライアントコンピュータは、ウェブページ、ウェブベースのメッセージ、グラフィックス、テキスト、マルチメディアなどを送受信するように構成されたウェブブラウザアプリケーション226を含むことができる。クライアントコンピュータのブラウザアプリケーションは、無線アプリケーションプロトコルメッセージ(WAP)などを含む、事実上任意のプログラミング言語を使用することができる。1つ以上の実施形態では、ブラウザアプリケーションは、ハンドヘルド装置マークアップ言語(HDML)、無線マークアップ言語(WML)、WMLScript、JavaScript、標準汎用マークアップ言語(SGML)、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、HTML5などを使用することができる。
【0062】
メモリ204は、RAM、ROM、又は他のタイプのメモリを含み得る。メモリ204は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するためのコンピュータ可読記憶媒体(装置)の一例を示す。メモリ204は、クライアントコンピュータ200の低レベル動作を制御するためのBIOS 208を記憶してもよい。メモリはまた、クライアントコンピュータ200の動作を制御するためのオペレーティングシステム206を記憶してもよい。このコンポーネントは、UNIX若しくはLinux(商標)のバージョンなどの汎用オペレーティングシステム、又はWindows Phone(商標)もしくはSymbian(登録商標)オペレーティングシステムなどの専用クライアントコンピュータ通信オペレーティングシステムを含むことができることが理解されよう。オペレーティングシステムは、Javaアプリケーションプログラムを介してハードウェア・コンポーネント又はオペレーティングシステム動作の制御を可能にするJava仮想マシン・モジュールを含むか、又はそれとインターフェースすることができる。
【0063】
メモリ204は、とりわけ、アプリケーション220又は他のデータを記憶するためにクライアントコンピュータ200によって利用され得る1つ以上のデータ記憶装置210を更に含み得る。例えば、データ記憶装置210はまた、クライアントコンピュータ200の様々な能力を記述する情報を記憶するために使用されてもよい。次いで、情報は、通信中にヘッダの一部として送信されること、要求に応じて送信されることなどを含む、様々な方法のいずれかに基づいて別の装置又はコンピュータに提供され得る。データ記憶装置210はまた、アドレス帳、バディリスト、エイリアス、ユーザプロファイル情報などを含むソーシャルネットワーキング情報を記憶するために使用され得る。データ記憶装置210は、アクションを実行及び実施するためにプロセッサ202などのプロセッサによって使用されるプログラムコード、データ、アルゴリズムなどを更に含むことができる。一実施形態では、データ記憶装置210の少なくともいくつかは、非一時的プロセッサ可読リムーバブル記憶装置236、プロセッサ可読固定記憶装置234、又はクライアントコンピュータの外部さえも含むがこれらに限定されない、クライアントコンピュータ200の別のコンポーネント上に記憶されてもよい。
【0064】
アプリケーション220は、クライアントコンピュータ200によって実行されると、命令及びデータを送信、受信、又は他の方法で処理するコンピュータ実行可能命令を含むことができる。アプリケーション220は、例えば、クライアント視覚化エンジン222、他のクライアントアプリケーション224、ウェブブラウザ226などを含むことができる。クライアントコンピュータは、1つ以上のサーバと通信を交換するように構成されてもよい。
【0065】
アプリケーションプログラムの他の例は、カレンダ、検索プログラム、電子メールクライアントアプリケーション、IMアプリケーション、SMSアプリケーション、ボイスオーバインターネットプロトコル(VOIP)アプリケーション、コンタクトマネージャ、タスクマネージャ、トランスコーダ、データベースプログラム、ワードプロセッシングプログラム、セキュリティアプリケーション、スプレッドシートプログラム、ゲーム、検索プログラム、視覚化アプリケーションなどを含む。
【0066】
更に、1つ以上の実施形態(図示せず)では、クライアントコンピュータ200は、CPUの代わりに、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルアレイロジック(PAL)など、又はそれらの組み合わせなどの埋め込み論理ハードウェア装置を含むことができる。埋め込み論理ハードウェア装置は、その埋め込み論理を直接実行してアクションを実行することができる。また、1つ以上の実施形態(図示せず)では、クライアントコンピュータ200は、CPUの代わりに1つ以上のハードウェアマイクロコントローラを含んでもよい。1つ以上の実施形態において、1つ以上のマイクロコントローラは、自身の埋め込みロジックを直接実行してアクションを実行し、自身の内部メモリ及び自身の外部入出力インターフェース(例えば、ハードウェアピン又は無線トランシーバ)にアクセスして、システムオンチップ(SOC)等のアクションを実行してもよい。
【0067】
例示的なネットワークコンピュータ
図3は、様々な実施形態のうちの1つ以上を実装するシステムに含まれ得るネットワークコンピュータ300の一実施形態を示す。ネットワークコンピュータ300は、
図3に示されるものよりも多くの又は少ないコンポーネントを含んでもよい。しかしながら、示されたコンポーネントは、これらの本発明を実施するための例示的な実施形態を開示するのに十分である。ネットワークコンピュータ300は、例えば、
図1の視覚化サーバコンピュータ116、データソースサーバコンピュータ118などのうちの少なくとも1つの一実施形態を表すことができる。
【0068】
ネットワークコンピュータ300などのネットワークコンピュータは、バス328を介してメモリ304と通信することができるプロセッサ302を含むことができる。いくつかの実施形態では、プロセッサ302は、1つ以上のハードウェアプロセッサ、又は1つ以上のプロセッサコアから構成されてもよい。場合によっては、1つ以上のプロセッサのうちの1つ以上は、本明細書に説明されるもの等の1つ以上の特殊アクションを行うように設計された特殊プロセッサであってもよい。更に、いくつかの実施形態では、プロセッサ302などのプロセッサは、様々なサイズのデータ又はデータタイプの並列処理を可能にする1つ以上のプロセス機能をサポート又は提供することができる。ネットワークコンピュータ300はまた、電源330、ネットワークインターフェース332、オーディオインターフェース356、ディスプレイ350、キーボード352、入力/出力インターフェース338、プロセッサ可読固定記憶装置334、及びプロセッサ可読リムーバブル記憶装置336を含む。電源330は、ネットワークコンピュータ300に電力を供給する。
【0069】
ネットワークインターフェース332は、ネットワークコンピュータ300を1つ以上のネットワークに結合するための回路を含み、限定はしないが、開放型システム間相互接続モデル(OSIモデル)、モバイル通信用グローバルシステム(GSM)、コード分割多元接続(CDMA)、時分割多元接続(TDMA)、ユーザデータグラムプロトコル(UDP)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ショートメッセージサービス(SMS)、マルチメディアメッセージングサービス(MMS)、汎用パケット無線サービス(GPRS)、WAP、超広帯域(UWB)、IEEE 802.16 Worldwide Interoperability for Microwave Access(WiMAX)、セッション開始プロトコル/リアルタイムトランスポートプロトコル(SIP/RTP)、又は様々な他の有線及び無線通信プロトコルのいずれかの任意の部分を実装するプロトコル及び技術を含む、1つ以上の通信プロトコル及び技術とともに使用するために構築される。ネットワークインターフェース332は、トランシーバ、送受信装置、又はネットワークインターフェースカード(NIC)として知られることもある。ネットワークコンピュータ300は、任意選択で、基地局(図示せず)と通信してもよいし、別のコンピュータと直接通信してもよい。
【0070】
オーディオインターフェース356は、人間の声の音などのオーディオ信号を生成及び受信するように構成されている。例えば、オーディオインターフェース356は、スピーカ及びマイクロフォン(図示せず)に結合されて、他者との電気通信を可能にし、又は何らかのアクションのためのオーディオ肯定応答を生成することができる。オーディオインターフェース356内のマイクロフォンは、例えば、音声認識を使用して、ネットワークコンピュータ300への入力又はネットワークコンピュータ300の制御のために使用することもできる。
【0071】
ディスプレイ350は、液晶ディスプレイ(LCD)、ガスプラズマ、電子インク、発光ダイオード(LED)、有機LED(OLED)、又はコンピュータとともに使用することができる任意の他のタイプの光反射型若しくは光透過型ディスプレイであってもよい。いくつかの実施形態では、ディスプレイ350は、壁又は他のオブジェクト上に画像を投影することができるハンドヘルドプロジェクタ又はピコプロジェクタであってもよい。
【0072】
ネットワークコンピュータ300はまた、
図3に示されない外部装置又はコンピュータと通信するための入力/出力インターフェース338を備えてもよい。入力/出力インターフェース338は、USB(商標)、Firewire(商標)、WiFi、WiMAX、Thunderbolt(商標)、赤外線、Bluetooth(商標)、Zigbee(商標)、シリアルポート、パラレルポートなどの1つ以上の有線又は無線通信技術を利用することができる。
【0073】
また、入力/出力インターフェース338は、地理的位置情報(例えば、GPS)を決定するため、電力状態(例えば、電圧センサ、電流センサ、周波数センサなど)を監視するため、天候(例えば、サーモスタット、気圧計、風速計、湿度検出器、降水スケールなど)を監視するためなどの1つ以上のセンサを含むこともできる。センサは、ネットワークコンピュータ300の外部にあるデータを収集又は測定する1つ以上のハードウェアセンサであってもよい。ヒューマンインターフェースコンポーネントは、ネットワークコンピュータ300から物理的に分離することができ、ネットワークコンピュータ300へのリモート入力又はリモート出力を可能にする。例えば、ディスプレイ350又はキーボード352などのヒューマンインターフェースコンポーネントを介して本明細書で説明されるようにルーティングされる情報は、代わりに、ネットワークインターフェース332を介して、ネットワーク上の他の場所に位置する適切なヒューマンインターフェースコンポーネントにルーティングされ得る。ヒューマンインターフェースコンポーネントは、コンピュータがコンピュータの人間のユーザから入力を受け取ること、又はコンピュータの人間のユーザに出力を送ることを可能にする任意のコンポーネントを含む。したがって、マウス、スタイラス、トラックボールなどのポインティング装置は、ポインティング装置インターフェース358を介して通信して、ユーザ入力を受け取ることができる。
【0074】
GPSトランシーバ340は、地球の表面上のネットワークコンピュータ300の物理座標を決定することができ、これは通常、緯度及び経度の値として位置を出力する。GPSトランシーバ340はまた、地球の表面上のネットワークコンピュータ300の物理的位置を更に決定するために、三角測量、アシストGPS(AGPS)、拡張観測時間差(E-OTD)、セル識別子(CI)、サービスエリア識別子(SAI)、拡張タイミングアドバンス(ETA)、基地局サブシステム(BSS)などを含むがこれらに限定されない他の地理的測位機構を使用することができる。異なる条件下で、GPSトランシーバ340はネットワークコンピュータ300の物理的位置を決定することができることが理解される。しかし、1つ以上の実施形態では、ネットワークコンピュータ300は、他のコンポーネントを介して、例えば、メディアアクセス制御(MAC)アドレス、IPアドレスなどを含む、クライアントコンピュータの物理的位置を決定するために使用することができる他の情報を提供することができる。
【0075】
様々な実施形態のうちの少なくとも1つにおいて、オペレーティングシステム306、符号化エンジン322、視覚化エンジン324、モデリングエンジン326、他のアプリケーション329などのアプリケーションは、地理的位置情報を用いて、時間帯、言語、通貨、通貨フォーマッティング、カレンダフォーマッティングなどの1つ以上の位置特定機能を選択するように構成されてもよい。位置特定機能は、ユーザインターフェース、ダッシュボード、視覚化、報告、並びに内部プロセス又はデータベースにおいて使用され得る。様々な実施形態のうちの少なくとも1つにおいて、位置特定情報を選択するために使用される地理的位置情報は、GPS 340によって提供され得る。また、いくつかの実施形態では、地理的位置情報は、無線ネットワーク108又はネットワーク111などのネットワーク上で1つ以上の地理的位置プロトコルを使用して提供される情報を含むことができる。
【0076】
メモリ304は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、又は他のタイプのメモリを含み得る。メモリ304は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するためのコンピュータ可読記憶媒体(装置)の一例を示す。メモリ304は、ネットワークコンピュータ300の低レベル動作を制御するための基本入出力システム(BIOS)308を記憶する。メモリはまた、ネットワークコンピュータ300の動作を制御するためのオペレーティングシステム306を記憶する。このコンポーネントは、UNIX(登録商標)もしくはLinux(登録商標)のバージョンなどの汎用オペレーティングシステム、又はMicrosoft CorporationのWindows(登録商標)オペレーティングシステム若しくはApple CorporationのOSX(登録商標)オペレーティングシステムなどの専用オペレーティングシステムを含んでもよいことが理解されよう。オペレーティングシステムは、Javaアプリケーションプログラムを介してハードウェア・コンポーネント又はオペレーティングシステム動作の制御を可能にするJava仮想マシン・モジュールなどの1つ以上の仮想マシン・モジュールを含むか、又はそれとインターフェースすることができる。同様に、他のランタイム環境が含まれてもよい。
【0077】
メモリ304は、とりわけ、アプリケーション320又は他のデータを記憶するためにネットワークコンピュータ300によって利用され得る1つ以上のデータ記憶装置310を更に含み得る。例えば、データ記憶装置310はまた、ネットワークコンピュータ300の様々な能力を記述する情報を記憶するために使用されてもよい。次いで、情報は、通信中にヘッダの一部として送信されること、要求に応じて送信されることなどを含む、様々な方法のいずれかに基づいて別の装置又はコンピュータに提供され得る。データ記憶装置310はまた、アドレス帳、バディリスト、エイリアス、ユーザプロファイル情報などを含むソーシャルネットワーキング情報を記憶するために使用され得る。データ記憶装置310は、以下で説明するアクションなどのアクションを実行及び実施するために、プロセッサ302などのプロセッサによって使用されるプログラムコード、データ、アルゴリズムなどを更に含むことができる。一実施形態では、データ記憶装置310の少なくとも一部は、プロセッサ可読リムーバブル記憶装置336内の非一時的媒体、プロセッサ可読固定記憶装置334、又はネットワークコンピュータ300内の、若しくはネットワークコンピュータ300の外部の任意の他のコンピュータ可読記憶装置を含むがこれらに限定されない、ネットワークコンピュータ300の別のコンポーネント上に記憶されてもよい。データ記憶装置310は、例えば、データモデル314、データソース316、視覚化モデル318、評価モデル319などを含むことができる。
【0078】
アプリケーション320は、ネットワークコンピュータ300によって実行されると、メッセージ(例えば、SMS、マルチメディアメッセージングサービス(MMS)、インスタントメッセージ(IM)、電子メール、又は他のメッセージ)、オーディオ、ビデオを送信、受信、又は他の方法で処理し、別のモバイルコンピュータの別のユーザとの電気通信を可能にするコンピュータ実行可能命令を含むことができる。アプリケーションプログラムの他の例は、カレンダ、検索プログラム、電子メールクライアントアプリケーション、IMアプリケーション、SMSアプリケーション、ボイスオーバインターネットプロトコル(VOIP)アプリケーション、コンタクトマネージャ、タスクマネージャ、トランスコーダ、データベースプログラム、ワードプロセッシングプログラム、セキュリティアプリケーション、スプレッドシートプログラム、ゲーム、検索プログラムなどを含む。アプリケーション320は、符号化エンジン322、視覚化エンジン324、モデリングエンジン326、他のアプリケーション329などを含むことができ、これらは、以下で説明する実施形態のアクションを実行するように構成することができる。種々の実施形態のうちの1つ以上において、アプリケーションのうちの1つ以上は、別のアプリケーションのモジュール又はコンポーネントとして実施することができる。更に、様々な実施形態のうちの1つ以上において、アプリケーションは、オペレーティングシステム拡張、モジュール、プラグイン等として実装されてもよい。
【0079】
更に、様々な実施形態のうちの1つ以上において、符号化エンジン322、視覚化エンジン324、モデリングエンジン326、他のアプリケーション329などは、クラウドベースのコンピューティング環境において動作することができる。様々な実施形態のうちの1つ以上において、管理プラットフォームを構成するこれらのアプリケーション及び他のアプリケーションは、クラウドベースのコンピューティング環境において管理することができる仮想マシン又は仮想サーバ内で実行することができる。様々な実施形態のうちの1つ以上において、このコンテキストでは、アプリケーションは、クラウドコンピューティング環境によって自動的に管理される性能及びスケーリングの考慮事項に応じて、クラウドベース環境内の1つの物理ネットワークコンピュータから別の物理ネットワークコンピュータに進むことができる。同様に、様々な実施形態のうちの1つ以上において、符号化エンジン322、視覚化エンジン324、モデリングエンジン326、他のアプリケーション329等に専用の仮想マシン又は仮想サーバは、自動的にプロビジョニング及びデコミッショニングされ得る。
【0080】
また、様々な実施形態のうちの1つ以上において、符号化エンジン322、視覚化エンジン324、モデリングエンジン326、他のアプリケーション329などは、1つ以上の特定の物理ネットワークコンピュータに結び付けられるのではなく、クラウドベースのコンピューティング環境において実行される仮想サーバに配置されてもよい。
【0081】
更に、ネットワークコンピュータ300は、鍵、デジタル証明書、パスワード、パスフレーズ、二要素認証情報などのセキュリティ/暗号情報を生成、記憶、又は使用するための追加の耐タンパー性保護手段を提供するハードウェアセキュリティモジュール(HSM)360も備えることができる。いくつかの実施形態では、ハードウェアセキュリティモジュールは、1つ以上の標準公開鍵インフラストラクチャ(PKI)をサポートするために採用されてもよく、鍵対等を生成、管理、又は記憶するために採用されてもよい。いくつかの実施形態では、HSM 360は、独立型ネットワークコンピュータであってもよく、他の場合には、HSM 360は、ネットワークコンピュータにインストールされ得るハードウェアカードとして構成されてもよい。
【0082】
更に、1つ以上の実施形態(図示せず)では、ネットワークコンピュータ300は、CPUの代わりに、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルアレイロジック(PAL)など、又はそれらの組み合わせなどの埋め込み論理ハードウェア装置を含むことができる。埋め込み論理ハードウェア装置は、その埋め込み論理を直接実行してアクションを実行することができる。また、1つ以上の実施形態(図示せず)では、ネットワークコンピュータは、CPUの代わりに1つ以上のハードウェアマイクロコントローラを含んでもよい。1つ以上の実施形態において、1つ以上のマイクロコントローラは、自身の埋め込みロジックを直接実行してアクションを実行し、自身の内部メモリ及び自身の外部入出力インターフェース(例えば、ハードウェアピン又は無線トランシーバ)にアクセスして、システムオンチップ(SOC)等のアクションを実行してもよい。
【0083】
例示的な論理システムアーキテクチャ
図4は、様々な実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するためのシステム400の論理アーキテクチャを示す。種々の実施形態のうちの1つ以上において、システム400は、モデリングエンジン402のような1つ以上のモデリングエンジン、視覚化エンジン404などの1つ以上の視覚化エンジン、視覚化406などの1つ以上の視覚化、データソース410などの1つ以上のデータソース、視覚化モデル408などの1つ以上の視覚化モデル、符号化エンジン412などの1つ以上の符号化エンジン、又は、符号化モデル414などの1つ以上の符号化モデルを含む種々のコンポーネントで構成することができる。
【0084】
様々な実施形態のうちの1つ以上において、モデリングエンジン402は、視覚化エンジン404に提供することができる1つ以上の視覚化モデルをユーザが設計することを可能にするように構成することができる。したがって、様々な実施形態のうちの1つ以上において、視覚化エンジン404は、視覚化モデルに基づいて1つ以上の視覚化を生成するように構成することができる。
【0085】
様々な実施形態のうちの1つ以上において、モデリングエンジンは、データソース410などの1つ以上のデータソースにアクセスするように構成することができる。いくつかの実施形態では、モデリングエンジンは、ユーザが様々なデータソース情報、データオブジェクトなどをブラウズして、データソースに記憶された情報の視覚化を生成するために使用され得る視覚化モデルを設計することを可能にするユーザインターフェースを含むように構成され得る。
【0086】
したがって、いくつかの実施形態では、視覚化モデルは、チャート、プロット、グラフ、表、グラフィックス、スタイリング、説明文、対話型要素、ユーザインターフェース機能などを含む視覚化を提供するように設計され得る。いくつかの実施形態では、ユーザは、可視化モデル内の種々の要素又は表示オブジェクトが、データソース410等の1つ以上のデータソースからのデータと関連付けられ得るように、可視化モデルを相互作用的に設計することを可能にする、グラフィカルユーザインターフェースを提供されてもよい。
【0087】
種々の実施形態のうちの1つ以上において、データソース410などのデータソースは、ローカルに又はリモートに配置することができるデータベース、データストア、ファイルシステムなどのうちの1つ以上を含むことができる。いくつかの実施形態では、データソースは、ネットワークを介して別のサービスによって提供され得る。いくつかの実施形態では、データソース内のデータへの管理ビュー又は管理アクセスをフィルタリングするか、又は別様に提供する、1つ以上のコンポーネント(図示せず)が存在してもよい。
【0088】
種々の実施形態のうちの1つ以上において、視覚化モデルは、視覚化モデル記憶装置408のような1つ以上のデータストアに記憶することができる。この例では、いくつかの実施形態について、視覚化モデル記憶装置408は、視覚化モデルを記憶し、保護し、又はインデックス付けするための1つ以上のデータベース、ファイルシステムなどを表す。
【0089】
様々な実施形態のうちの1つ以上において、視覚化エンジン404などの視覚化エンジンは、ユーザに表示することができる1つ以上の視覚化を生成するために、データソースからの視覚化モデル及びデータを構文解析又は他の方法で解釈するように構成することができる。
【0090】
様々な実施形態のうちの1つ以上において、視覚化モデル、データモデル、又は視覚化は、注釈、ラベリング、ナラティブ、構成情報などに使用することができる符号化された文字を含むように構成することができる。いくつかの実施形態では、データモデル、視覚化モデル、データソースなどに記憶された文字は、文字がディスプレイ装置上に表示され得る前に、異なる文字コードへの復号又は変換を必要とし得る文字コードを使用して符号化され得る。したがって、いくつかの実施形態では、視覚化エンジンなどは、文字を符号化又は復号するために符号化エンジン412などの符号化エンジンを使用するように構成することができる。
【0091】
したがって、いくつかの実施形態では、視覚化エンジンなどは、1つの文字コードから別の文字コードへの文字を選択的に符号化又は復号するように構成され得る。いくつかの実施形態では、視覚化エンジン又は符号化エンジンは、ソース内で使用されている文字コードを決定して、その文字コードが1つ以上のターゲットと互換性があり得るかどうかを決定するために、1つ以上のテスト又は比較を使用するように構成され得る。例えば、いくつかの実施形態では、ソース又はターゲットは、データソース、データモデル、視覚化モデル、構成情報、表示システムなどのうちの1つ以上を含み得る。
【0092】
様々な実施形態のうちの1つ以上において、符号化エンジンは、文字コードを識別するための符号化モデルを使用するように構成することができる。同様に、様々な実施形態のうちの1つ以上において、符号化エンジンは、符号化モデルを用いて文字を1つ以上の文字コードから1つ以上の他の文字コードに変換するように構成することができる。例えば、いくつかの実施形態では、視覚化プラットフォームは、UTF-8、UTF-16、UTF-32などの1つ以上のユニコード文字コードをサポートするように構成されてもよい。しかしながら、ユニコード文字コードは、多くのシステムにおいて従来使用され得るが、当業者は、本明細書に開示される本発明の範囲から逸脱することなく、他の符号化規格又は文字コードが使用され得ることを理解するであろう。したがって、いくつかの実施形態では、異なる文字コード、オペレーティングシステム機能の可用性、プロセッサ機能の可用性、ローカル環境、ローカル要件などを考慮するために、1つ以上の符号化モデルが提供され得る。
【0093】
様々な実施形態のうちの1つ以上において、符号化モデルは、構成情報などによって提供されるパラメータ又は引数に基づいてオンザフライで決定することができる。また、いくつかの実施形態では、1つ以上の符号化モデルは、文字が所与の符号化モデルによってサポートされる文字コードで符号化され得るかどうかをテストすることができる規則、命令、パターンマッチングなどを含むことができる。例えば、いくつかの実施形態では、UTF-16で符号化されたアスキー文字をUTF-8に変換するための符号化モデルは、提供された文字が符号化モデルによって変換され得ることを確認するために、UTF-16ワードの第1のバイトが0に設定され、ワードの第2のバイトが有効なアスキー値であることを確認し得る。
【0094】
様々な実施形態のうちの1つ以上において、符号化モデルは、様々な従来の文字コード又はカスタム文字コードを符号化エンジン412などによってサポートすることを可能にすることができる。したがって、いくつかの実施形態では、新しい又は追加の文字コードが導入され得るとき、対応する符号化モデルが、新しい又は追加の文字をサポートするために提供され得る。
【0095】
図5は、様々な実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するためのシステム500の一部の論理概略図を示す。様々な実施形態のうちの1つ以上において、システム500は、文字を1つの文字コードから別の文字コードに符号化、復号化、又は変換するための符号化エンジン502と、文字コード検証又は変換を実行するための特定の規則、命令などを提供するための符号化モデル510と、文字マップ、コードポイントテーブルなどを記憶するためのデータストア504などの1つ以上のデータストアと、を含み得る。更に、この例では、ソースストリーム506は、符号化又は復号のために符号化エンジン502に提供されている文字を表し、ターゲットストリーム508は、符号化エンジン502によって1つの文字コードから別の文字コードに変換された可能性がある文字を表す。
【0096】
様々な実施形態のうちの1つ以上において、符号化エンジンは、ここではソースストリーム506によって表されるソース文字のストリームを受信するように構成することができる。したがって、いくつかの実施形態では、符号化エンジンは、ソースストリーム506によって提供される着信文字を評価するために符号化モデルを採用するように構成されてもよい。様々な実施形態のうちの1つ以上において、1つ以上の符号化モデルが要求された変換をサポートする場合、符号化エンジン502は、ソースストリーム506によって提供されるソース文字をターゲットストリーム508に提供され得るターゲット文字にマッピングするために、データストア504に記憶され得る1つ以上の文字コードブックなどを使用するように構成され得る。
【0097】
様々な実施形態のうちの1つ以上において、符号化エンジン502は、1つ以上の符号化モデルを使用して、符号化モデルに含まれる1つ以上の規則、命令、パターンなどに基づいてソース文字又はターゲット文字に使用される特定の文字コードを自動的に決定するように構成することができる。
【0098】
いくつかの実施形態では、符号化エンジンは、構成情報に基づいて利用可能な符号化モデルを決定するように構成されてもよい。例えば、いくつかの実施形態では、様々な文字コードは、符号化エンジン又は符号化モデルが符号化された文字から異なる文字コードを識別することを可能にする、いくつかの文字内の1つ以上のマーカ又は信号を定義し得る。代替的に、いくつかの実施形態では、文字のための文字コードは、ソースストリーム又はターゲットストリームに基づいて決定され得る。例えば、いくつかの実施形態では、ソースストリームは、関心のある文字コードを識別することができるメタデータを含む1つ以上の文書又は文書部分からの文字を提供することができる。
【0099】
様々な実施形態のうちの1つ以上において、ソースストリーム506又はターゲットストリーム508のうちの1つ以上は、文字を表すために可変数のバイト又はワードを使用することができる文字コードをサポートするように構成することができる。いくつかの実施形態では、文字コードは、表現されている文字に応じて1つ以上のコード単位を使用して文字を構成するように構成され得る。例えば、アスキーなどの限られた数の文字をサポートする文字コードは、アスキーによってサポートされない1つ以上の文字を含む言語をサポートすることができる文字コードなどの、より多くの又は異なる文字をサポートすることができる他の文字コードよりも少ないコード値を必要とすることがある。
【0100】
当業者であれば、ユニコード及びその文字コード(UTF-8、UTF-16、及びUTF-32など)などの1つ以上の標準的な文字符号化規格に精通しているであろう。したがって、簡潔さ及び明確さのために、このよく知られている文字符号化方式からのいくつかの用語が本明細書で使用されることがある。例えば、コードポイントは、ユニコードによって提供される定義に類似する文字コードブック内の文字を識別するために使用され得る特定の値であると見なされ得る。同様に、いくつかの実施形態では、コード単位という用語は、特定の文字コードを有する文字を表すための最小メモリ量を表すために使用され得る。例えば、周知の可変長文字コードUTF-8は8ビットのコード単位を有する文字コードであり、一方、周知の可変長文字コードUTF-16は16ビットのコード単位を有する文字コードである。
【0101】
様々な実施形態のうちの1つ以上において、可変長文字コードは、幾つかの文字を表すために追加のコード単位を必要とするように構成することができる。例えば、8ビットのコード単位を有する文字コードは、1つのコード単位で256個の値を表すことができる。例えば、UTF-8は、単一のコード単位でアスキー値を表すことができるが、アスキー以外の文字を表すためには、追加のコード単位が必要である。同様に、いくつかの実施形態では、UTF-16は、単一のUTF-16コード単位が単一のUTF-8コード単位よりも多くの文字を表すことを可能にする16ビットコード単位を有する。しかしながら、いくつかの実施形態では、コード単位は、より多くの文字が表されることを可能にする順序付けられたシーケンスに組み合わせられてもよい。したがって、例えば、UTF-8文字コードは、より多くのコード単位を使用することによって、UTF-16又はUTF-32と同じ数の文字を表すことができる。したがって、いくつかの実施形態では、所与の文字コードの1つ以上のコード単位を組み合わせて、必要とされる文字コードブック内の特定の文字を識別するために使用することができるコードポイントを表すことができる。完全性のために、文字コードUTF-32はまた、それぞれがユニコード文字にマッピングする完全なコードポイントを記憶することができる32ビットコード単位を使用してユニコード文字を符号化することに留意されたい。対照的に、UTF-8は、1つのUTF-32コード単位が表す単一文字を表すために4つまでのコード単位を必要とし得る。同様に、UTF-16は、単一のUTF-32コード単位と同じ文字を表すために、2つまでの16ビットコード単位を必要とし得る。
【0102】
種々の実施形態のうちの1つ以上において、可変長文字コードは、幾つかの文字を表すのに必要なコード単位数を最小にするか又は減少させるように構成することができる。例えば、ユニコードでは、最初の128個のコードポイントがアスキー文字を表し、したがって、8ビット(1バイト)の単一のUTF-8コード単位を使用して標準アスキー文字を表すことができる。対照的に、例えば、UTF-16は、各アスキー文字を表すのに16ビット(2バイト)を必要とし、UTF-32は、各アスキー文字を表すのに32ビットを必要とする。また、例えば、UTF-8は、日本語文字に対して3つのコード単位を必要とする場合がある。UTF-16は、1つのコード単位のみを必要とする。したがって、この状況では、UTF-16は、UTF-8(3バイト)よりも少ないメモリ(2バイト)を使用し得る。したがって、状況に応じて、UTF-8は、UTF-16よりも少ないメモリを使用してもしなくてもよい。また、UTF-32は、UTF-8又はUTF-16よりも少ないメモリを決して使用せず、常にそれ以上である(すべてのコードポイントが16ビットよりも大きい値を有するときのみ、等しいことはめったに真ではない)ことにも留意されたい。
【0103】
したがって、いくつかの実施形態では、アプリケーション又はローカル環境に応じた様々な理由で、異なるコード単位を有する文字コード間で変換することが有利であり得る。例えば、より大きなコード単位を有する文字コードを使用することにより、より大きな文字セットを1つのコード単位で符号化することができる。しかしながら、いくつかの実施形態では、符号化されている文字のためのコードポイントが、より小さいコード単位に適合することができる場合、より大きいコード単位は、対象の文字を表すために要求されないので、より大きいコード単位を使用することは、必要以上にメモリを使用し得る。例えば、視覚化プラットフォームによって使用される文字のすべて又はほとんどがアスキー文字である場合、8ビットよりも大きいコード単位を有する文字コードを使用することは、メモリ又は記憶空間が問題である場合に不利であり得る。また、いくつかの実施形態では、可視化プラットフォームは、ファイルシステム上にファイルを記憶するとき等、データ記憶のコストが安価である場合、文字を記憶するときにより大きいコード単位を有する文字コードを使用するように構成されてもよい。しかしながら、いくつかの実施形態では、より大きいコード単位で符号化された文字コードが高価な又は乏しいメモリに記憶される場合、必要なコード単位よりも大きい文字コードを使用することは不利であり得る。
【0104】
加えて、様々な実施形態のうちの1つ以上において、メモリ量又はバイト数を低減することにより、1つ以上のネットワークを介して文字ストリームを送信する費用を低減することができる。例えば、完全にアスキー文字(XMLにおいて一般的である)から構成されるXMLファイル/ストリームを送信することは、UTF-16におけるメモリの半分をUTF-8において必要とし、UTF-16はUTF-32の半分の費用であり得る。したがって、送信されるデータの量を2分の1又は4分の1に低減することは、送信を完了するためにかかり得る時間を低減するか、又は送信を完了するためのコストを低減し得る。
【0105】
したがって、様々な実施形態のうちの1つ以上において、視覚化エンジンなどは、符号化エンジンを用いて異なる文字コード間で変換するように構成されてもよい。例えば、いくつかの実施形態では、視覚化プラットフォームは、UTF-16を使用してファイルに記憶された文字を符号化し、次いで、視覚化を生成することの一部として不十分な又は高価なメモリ(例えば、RAM)に読み込まれる場合、符号化された文字をUTF-8に変換するように構成されてもよい。
【0106】
図6は、様々な実施形態のうちの1つ以上による同時処理を使用して可変長文字を符号化するための符号化エンジン600の一部の論理概略図を示す。
【0107】
上述したように、様々な実施形態のうちの1つ以上において、符号化エンジンは、様々な文字コードを符号化又は復号化するように構成されてもよい。いくつかの実施形態では、符号化エンジンは、文字を1つ以上の文字コードから1つ以上の別の文字コードに変換するように構成されてもよい。
【0108】
この例では、いくつかの実施形態について、文字ストリーム602A及び602Bは、符号化された文字のソースストリームを表すことができる。いくつかの実施形態では、文字ストリーム602A及び602Bは、1つ以上の他のサービス又はプロセス(例えば、オペレーティングシステム、ファイルシステム、ネットワークスタック等)によって提供されるI/Oストリームと見なされてもよい。
【0109】
従来の符号化エンジンでは、文字ストリームは、CPUのワードサイズに対応するCPUレジスタを使用して処理され得る。例えば、いくつかの実施形態では、32ビットCPUのワードサイズは32ビットであってもよく、又は64ビットCPUのワードサイズは64ビットであってもよい。いくつかの実施形態では、従来、文字ストリームからの文字は、コード単位ごとに処理され得る。したがって、いくつかの従来技術の実施形態では、コード単位は、一度に1つのコード単位で復号/符号化され得る。典型的には、これは、各コードポイントが復号/符号化されるまで各コード単位が個々に評価され得るように、各個々のコード単位を通してループすることを必要とする。したがって、全体的な符号化/復号性能は、コード単位を個々に処理する際に固有であり得る1つ以上のキャッシュミス、ジャンプ、分岐などによって影響を受ける場合がある。
【0110】
対照的に、いくつかのCPUは、CPUワードサイズよりも大きい可能性がある物理又は論理幅レジスタを提供する専用データパスを提供し得る1つ以上のプロセッサ機能をサポートし得る。例えば、64ビットワードサイズを有するCPUは、64ビットレジスタに限定されるのではなく、本明細書で幅レジスタと呼ばれる128ビットレジスタを提供する、より広いデータパスを提供し得る。したがって、この例では、幅レジスタが使用される場合、CPUは、単一のコード単位を処理することに限定されるのではなく、1回の演算で128ビットを処理することができる。更に、いくつかのCPUは、プロセッサ内の1つ以上のレジスタ又は同様の位置に記憶されたデータに対する並列処理をサポートすることができる専用API、命令セットなどを提供することができる。
【0111】
この例では、従来の符号化エンジン604は、文字コードがコード単位で処理されることを可能にし得る。したがって、この例では、ワード606は、コード単位を順次処理し、ターゲットコード単位に変換する前に、それらを単一のコードポイントにロードすることを表す。様々な実施形態のうちの1つ以上において、従来の符号化エンジン604は、文字ストリーム602Aからの文字を文字ストリーム608Aのための文字に復号/符号化することを可能にすることができる。
【0112】
対照的に、いくつかの実施形態では、符号化エンジン610は、従来のCPUデータパスに限定されるのではなく、幅データパス、物理幅レジスタ、論理幅レジスタなどを利用し得るプロセッサ機能を採用するように構成され得る。例えば、いくつかの実施形態では、より多くのコード単位が、幅レジスタ612などの幅レジスタにロードされ得る。したがって、いくつかの実施形態では、より多くのコード単位を同時に並列に処理することができる。この例では、幅レジスタ612は、4つの従来のレジスタ(例えば、レジスタ606)のサイズ/長さを有すると見なされ得る。したがって、UTF-8の場合、128ビット幅のレジスタは、16個のコード単位を並列に処理することができる。512ビット幅のレジスタは、64個のUTF-8コード単位を並列に処理することができる。また、UTF-16及びUTF-32は、それぞれ2及び4倍にスケールダウンされるが、UTF-16又はUTF-32コード単位を処理することは、各コード単位を順次処理することよりも著しく高速であり得る。いくつかの実施形態では、符号化エンジン610が、符号化された文字を変換するために幅レジスタ612などの幅レジスタを使用する場合、それらは、従来の符号化エンジンと同様の出力ストリーム608Bなどの従来の出力ストリームに提供され得る。
【0113】
この例では、簡潔さ及び明確さのために、従来の符号化エンジン604及び符号化エンジン610は、3つのレジスタを使用するものとして示されていることに留意されたい。当業者は、CPUが、1つ以上の汎用レジスタ又は1つ以上の専用/限定目的レジスタを含む、いくつかのレジスタを含んでもよいことを理解するであろう。しかしながら、レジスタ606及び幅レジスタ612は、本明細書で開示される本発明を開示するのに少なくとも十分である。
【0114】
種々の実施形態のうちの1つ以上において、符号化エンジンは、並列処理をサポートするプロセッサ機能の利用可能性を決定するように構成することができる。いくつかの実施形態では、符号化エンジンは、API、システムコール、構成情報を使用して、所与のCPUによってサポートされる機能を決定することができる。したがって、いくつかの実施形態では、符号化エンジンは、CPUの能力に基づいて、異なる命令又は符号化モデルの中から選択するように構成され得る。例えば、CPUが並列演算をサポートするプロセッサ機能を提供しない場合、符号化エンジンは、並列演算ではなく逐次演算を用いる符号化モデルを選択するように構成されてもよい。
【0115】
図7は、様々な実施形態のうちの1つ以上による同時処理を使用して可変長文字を符号化するための文字コードを比較する表700の論理概略図を示す。
【0116】
様々な実施形態のうちの1つ以上において、符号化エンジンは、ユニコード、アスキー、ECMA-6、EBCDIC、カスタム符号化方式などを含む様々な文字符号化方式をサポートすることができる様々な文字コードの同時処理を使用して可変長文字を符号化/復号するように構成することができる。この例では、簡潔さ及び明確さのために、ユニコード文字を符号化する文字コードUTF-8、UTF-16、及びUTF-32が示されているが、同時処理を使用して可変長文字を符号化するための他の符号化方式をサポートするように符号化エンジンが構成されてもよいことを当業者は理解するであろう。
【0117】
この例では、表700は、文字を記憶するための列702、文字コードタイプを示す列704、文字のコード単位を示す列706、などを含む。この例では、列706は更に、異なる文字コードに対する個々のバイトサイズの単位に分解される。この例では、列706は、文字を表すために使用され得るコード単位に対応するサブ列に分割される。この例では、UTF-8は、8ビットのコード単位を有する文字コードである。したがって、各サブ列はコード単位を表す。同様に、例えば、UTF-16は、16ビットのコード単位を有する文字コードであり、したがって、各コード単位に対して2バイトが必要とされ得る。また、例えば、UTF-32は32ビットのコード単位を有する文字コードであるので、UTF-32を用いて文字を表現するためには4バイトが必要である。
【0118】
様々な実施形態のうちの1つ以上において、幾つかの文字コードは、表現される文字に応じて可変数のコード単位を使用するように構成することができる。例えば、表700において、文字716は、単一のUTF-8、UTF-16、又はUTF-32コード単位によって表されてもよく、一方、文字718は、使用されている文字コードに応じて1つ以上のコード単位を必要としてもよい。いくつかの実施形態では、文字のためのコードポイントが1つのコード単位で表され得る場合、1つの単一コード単位が必要とされ得る。例えば、文字716のコードポイントは65(10進数)、又はバイナリ表現では0x01000001であると見なされ得、したがって、この文字のコードポイントは0x01000001を1つのコード単位に収めることができるため、1つのUTF-8、UTF-16、又はUTF-32コード単位を使用して表すことができる。対照的に、この例では、文字718は、8ビットコード単位で記憶するには大きすぎるコードポイント値を有する文字と見なすことができる。したがって、この例に示されるように、UTF-8で文字718を表すことは、1つ以上のコード単位を必要とするが、UTF-16又はUTF-32で文字718を表すことは、1つのコード単位を必要とする。
【0119】
しかしながら、いくつかの実施形態では、ここに示されるように、1つの文字コード内の所与の文字を表すために文字コードを使用することは、別の文字コード内の同じ文字を表すよりも多くのメモリを消費し得る。例えば、UTF-8を使用して文字716を表すことは、8ビットを必要とし得るが、UTF-16又はUTF-32を使用して文字716を表すことは、それぞれ16ビット又は32ビットを必要とし得る。同様に、例えば、UTF-16を使用して文字718を表すことは、16ビットを必要とし得るが、UTF-8又はUTF-32を使用することは、それぞれ24ビット又は32ビットを必要とし得る。
【0120】
更に、いくつかの実施形態では、コード単位に含まれる32ビットシグネチャは、コードポイントグループを決定し、したがってコード単位に関連付けられるべきテールバイトの数を決定するためにUTF-16又はUTF-32ターゲットに変換するときにUTF-8コード単位組み合わせを分類するために使用され得るので、順次コード単位処理の条件付きループ並びに並列処理のための方向分類は、選択的に最適化され得る。分類自体は、並列処理が存在しない場合であっても、現在の順次方法と比較して著しい速度改善を提供することができる。最適化された分類を並列処理と組み合わせることにより、処理時間の短縮において更に改善がもたらされる。
【0121】
一般化された動作
図8~
図10は、様々な実施形態のうちの1つ以上による同時処理を使用して可変長文字を符号化するための一般化された動作を表す。様々な実施形態のうちの1つ以上において、
図8~
図10に関連して説明されるプロセス800、900、及び1000は、
図3のネットワークコンピュータ300などの単一のネットワークコンピュータ(又はネットワーク監視コンピュータ)上の1つ以上のプロセッサによって実装又は実行され得る。他の実施形態では、これらのプロセス又はその一部は、
図3のネットワークコンピュータ300などの複数のネットワークコンピュータによって実装されてもよく、又は複数のネットワークコンピュータ上で実行されてもよい。更に他の実施形態では、これらのプロセス又はその一部は、クラウドベース環境内のもの等の1つ以上の仮想化コンピュータによって実装されてもよく、又はその上で実行されてもよい。しかしながら、実施形態はそのように限定されず、ネットワークコンピュータ、クライアントコンピュータなどの様々な組み合わせを利用することができる。更に、様々な実施形態のうちの1つ以上では、
図8~
図10に関連して説明されるプロセスは、
図4~
図7に関連して説明されるものなどの様々な実施形態又はアーキテクチャのうちの少なくとも1つによる同時処理を使用して可変長文字を符号化するために使用され得る。更に、様々な実施形態のうちの1つ以上において、プロセス800、900、及び1000によって実行されるアクションの一部又は全部は、符号化エンジン322、視覚化エンジン324、モデリングエンジン326などによって部分的に実行され得る。
【0122】
図8は、様々な実施形態のうちの1つ以上による、同時処理を使用して可変長文字を符号化するためのプロセス800の概要フローチャートを示す。開始ブロックの後、ブロック802において、様々な実施形態のうちの1つ以上において、ソースストリーム及びターゲットストリームは、1つ以上の符号化エンジンに提供され得る。
【0123】
様々な実施形態のうちの1つ以上において、ソースストリームは、様々なソースから符号化エンジンに提供することができる。いくつかの実施形態では、ソースストリームは、ファイル、データベース、ネットワークエンドポイント、メモリバッファ、ユーザ入力などのために提供され得る。様々な実施形態のうちの1つ以上において、当業者は、ソースストリームが、オペレーティングシステムなどが符号化エンジンに、又はより一般的には視覚化プラットフォームに提供することができる入力ストリームであり得ることを理解するであろう。多くの場合、ソースストリームは、符号化エンジンを含む他のサービスから符号化されたソース文字を提供する生の入力ソースを分離する抽象化層を提供するように構成することができる。
【0124】
同様に、いくつかの実施形態では、ターゲットストリームは、ファイル、データベース、ネットワークエンドポイント、メモリバッファ、ユーザインターフェース/ディスプレイなど、変換された文字を受信又は消費し得るサービスから符号化エンジンを分離する抽象化層を提供するオペレーティングシステムなどによって提供される出力ストリームであってもよい。
【0125】
ブロック804において、様々な実施形態のうちの1つ以上において、符号化エンジンは、ソース文字コード及びターゲット文字コードを決定するように構成されてもよい。いくつかの実施形態では、ソースストリーム又はターゲットストリームは、ソース文字コード又はターゲット文字コードを示し得るパラメータ、タグ、メタデータなどに関連付けられ得る。例えば、様々な実施形態のうちの1つ以上において、ソースストリームがファイルである場合、ソースストリームは、そのコンテンツを符号化するために使用された文字コードを報告するメタデータに関連付けることができる。同様に、例えば、ターゲットストリームがユーザインターフェースディスプレイである場合、ユーザインターフェースは、好ましい又はサポートされる文字コードを示し得るメタデータに関連付けられ得る。いくつかの実施形態では、符号化エンジンは、呼び出しサービスがソース文字コードを明示的に宣言するか、又はターゲット文字コードを要求することを可能にする1つ以上のAPIを提供するように構成され得る。
【0126】
決定ブロック806において、様々な実施形態のうちの1つ以上において、符号化エンジンのための命令を実行するプロセッサが並列動作を可能にするプロセス機能を含むことができ、ソースストリームが十分なコード単位を含む場合、制御はブロック808に進むことができる。そうでない場合、制御はブロック816に進んでもよい。
【0127】
様々な実施形態のうちの1つ以上において、コード単位の並列処理のためのプロセッサ機能は、一部のプロセッサ(CPU)によってサポート又は提供され、他のプロセッサによってはサポート又は提供されない場合がある。また、場合によっては、並列処理機能をサポートするCPUは、それらの機能を無効にすることができる。同様に、いくつかの実施形態では、CPU及びオペレーティングシステムの両方をチェックして、1つ以上の必要な並列処理機能がサポートされ得るかどうかを決定することができる。例えば、いくつかの実施形態では、CPUが並列処理機能をサポートし、オペレーティングシステムが並列処理機能をサポートしない場合、並列処理機能は利用不可能であり得る。いくつかの実施形態では、並列処理機能が利用不可能であり得る場合、符号化エンジンは、文字を変換するために従来の処理機能を採用するように構成され得る。
【0128】
様々な実施形態のうちの1つ以上において、CPUは、並列処理機能の1つ以上のバージョンをサポートすることができる。したがって、様々な実施形態のうちの1つ以上において、古いCPUは、新しいCPUよりも少ない又は異なるプロセッサ機能をサポートすることができる。同様に、いくつかの実施形態では、異なる製造業者からのCPU又は異なるアーキテクチャを有するCPUは、異なるプロセッサ機能をサポートし得る。
【0129】
したがって、いくつかの実施形態では、符号化エンジンは、十分なプロセッサ機能の存在を確認するために1つ以上のテストを実行するように構成され得る。いくつかの実施形態では、利用可能なプロセッサ機能を決定するためのテストは、符号化エンジンの汎用命令ではなく、符号化モデルに含まれ得る。
【0130】
また、いくつかの実施形態では、新しいCPU、オペレーティングシステムなどが提供され得るので、異なるプロセッサ機能が利用可能になり得る。したがって、いくつかの実施形態では、符号化エンジンは、プロセッサ機能の存在又は範囲をテストするために構成情報を介して提供される規則、命令、条件、テストなどを使用するように構成され得る。
【0131】
当業者は、CPUによって提供されるか、又はオペレーティングシステムによって可能にされる1つ以上の並列処理機能に対応し得る特定のシステムコール、機能フラグ、バージョンIDなどを認識するであろう。
【0132】
更に、いくつかの実施形態では、符号化エンジンは、ソース内のコード単位の数が最小値を超えるかどうかをテストするか、又は他の方法で決定するように構成され得る。例えば、並列処理のためのサポートがあり得る場合であっても、ソースストリームは、並列コード単位処理を採用するのに十分なコード単位を含まないことがある。
【0133】
ブロック808において、様々な実施形態のうちの1つ以上において、符号化エンジンは、ソース文字コード及びターゲット文字コードに基づいて符号化モデルを決定するように構成されてもよい。上記で説明したように、符号化モデルは、1つ以上のソース文字コードを1つ以上のターゲット文字コードに変換することをサポートするように構成され得る。
【0134】
更に、上述したように、並列処理機能のためのCPU/オペレーティングシステムサポートは、製造業者、モデル、バージョンなどに応じて変化し得る。したがって、いくつかの実施形態では、同じ文字コード変換をサポートし得る2つ以上の符号化モデルは、異なるプロセッサ機能をサポートし得る。例えば、第1の符号化モデル及び第2の符号化モデルは、同じ変換をサポートすることができるが、第1の符号化モデルは、より性能の低いプロセッサ機能をサポートすることに限定されることがあり、第2の符号化モデルは、より新しいより性能の高いプロセッサ機能をサポートすることがある。したがって、様々な実施形態のうちの1つ以上において、符号化エンジンは、要求された変換をサポートし得る符号化モデルの中から1つ以上の符号化モデルを選択的に決定するように構成され得る。したがって、いくつかの実施形態では、符号化モデルをランク付けすることなどができる。いくつかの実施形態では、符号化エンジンは、ローカル環境又はローカル要件を考慮するために構成情報を介して提供される規則、命令、条件などに基づいて1つ以上の適格符号化モデルの中から選択された符号化モデルを採用するように構成され得る。
【0135】
ブロック810において、様々な実施形態のうちの1つ以上において、符号化エンジンは、ソース文字をターゲット文字コードを使用して符号化された文字に変換するために、決定された符号化モデルを使用するように構成され得る。
【0136】
上述したように、符号化モデルは、文字を1つの文字コードから別の文字コードに変換するための特定の命令、規則、条件などを含むデータ構造、ライブラリなどから構成することができる。
【0137】
したがって、いくつかの実施形態では、符号化エンジンは、選択された符号化モデルを使用して、ソース文字コードのソース文字を、ターゲット文字コードを使用して符号化された文字に変換するように構成することができる。
【0138】
種々の実施形態のうちの1つ以上において、符号化モデルは、並列処理機能を活用して1つ以上の変換を並列に生じさせて分岐、ルーピングなどを減少させることを可能にする命令を提供するよう構成することができる。いくつかの実施形態では、同時/並列処理を使用して可変長文字を符号化するための符号化モデルは、複数のコード単位をレジスタにロードし、次いで、より多くのコード単位が同時に処理されることを可能にするレジスタ上で直接動作する、マスキング、シフトなどの1つ以上のレジスタ動作を採用することを含み得る。例えば、レジスタが16バイト幅である場合、16個のUTF-8コード単位が、処理のために単一のレジスタに読み込まれ得る。対照的に、コード単位の逐次処理は、ルーピング決定論的有限オートマトンなどを使用して各コード単位を個別に処理することを必要とし得る。いくつかの実施形態では、特定の符号化モデルによって定義される命令又は動作は、変換に関与するソース文字コード及びターゲット文字コード、並びにプロセッサ機能の利用可能性に依存し得ることに留意されたい。いくつかの実施形態では、1つ以上の変換は、プロセッサ機能の利用可能性に応じて並列処理最適化に不適格であり得る。
【0139】
ブロック812において、様々な実施形態のうちの1つ以上において、符号化エンジンは、ターゲット文字コードにおいて符号化された文字をターゲットストリームに提供するように構成され得る。種々の実施形態のうちの1つ以上において、符号化エンジンが文字のセットに対する変換動作を完了した場合、符号化エンジンは、変換されたコード単位をターゲットストリームに関連付けられた従来のレジスタ又はメモリに移動させるように構成することができる。したがって、いくつかの実施形態では、他のサービスは、変換された文字(例えば、ユーザインターフェース、ディスプレイ、ファイル、データベースなど)を使用することができ、ターゲット文字コードで符号化された文字を受信することができる。
【0140】
決定ブロック814において、様々な実施形態のうちの1つ以上において、ソースストリームがより多くの利用可能な文字を有し、コード単位の数が並列変換を使用するのに十分である場合、制御はブロック810にループバックすることができる。そうでない場合、制御はブロック816に進んでもよい。
【0141】
種々の実施形態のうちの1つ以上において、符号化エンジンは、ソースストリームからの符号化された文字のチャンクを処理するように構成することができる。いくつかの実施形態では、各チャンク内の符号化された文字の数は、選択された符号化モデル、ソース/ターゲット文字コード、又は利用可能なプロセッサ機能のうちの1つ以上に応じて変動し得る。例えば、いくつかの実施形態では、CPUが、512ビット幅レジスタを有効にするプロセッサ機能を有する場合、一度に64個のUTF-8コード単位、又は一度に16個のUTF-32コード単位を処理し得る。対照的に、例えば、128ビット幅のレジスタを提供するプロセッサ機能を有するCPUは、一度に16個のUTF-8コード単位又は4個のUTF-32コード単位を処理し得る。
【0142】
ブロック816において、様々な実施形態のうちの1つ以上において、任意選択的に、符号化エンジンは、並列処理機能が存在しない1つ以上の残りのソース文字を変換するように構成されてもよい。したがって、いくつかの実施形態では、並列処理機能が利用できない可能性がある場合、又はソースコード単位の数が並列処理には少なすぎる場合、従来のプロセッサ機能を使用してコード単位ごとに順次変換を実行することができる。
【0143】
いくつかの実施形態のいくつかのケースでは、すべてのソース文字が並列処理機能を使用して処理されている可能性があるので、このブロックはオプションとして示されていることに留意されたい。
【0144】
次に、様々な実施形態のうちの1つ以上において、制御を呼び出しプロセスに戻すことができる。
【0145】
図9は、様々な実施形態のうちの1つ以上による、UTF-16符号化アスキー文字をUTF-8に変換するために符号化モデルを使用するためのプロセス900のフローチャートを示す。
【0146】
開始ブロックの後、決定ブロック902において、様々な実施形態のうちの1つ以上において、符号化エンジンを用いてUTF-16で符号化されたアスキー文字をUTF-8に変換することができる場合、制御はブロック904に進むことができる。そうでない場合、制御を呼び出しプロセスに戻すことができる。
【0147】
上記で説明したように、いくつかの実施形態では、符号化エンジンは、符号化された文字を1つ以上の文字コードから1つ以上の他の文字コードに変換する要求などを受信することができる。
【0148】
この例では、符号化エンジンは、ユニコードコードポイント0~127に対応し得ることを意味するアスキー文字であり得るか、又はアスキー文字であると想定されるUTF-16符号化文字を変換する要求を受信すると考えられ得る。ユニコードコードポイント0~127は、一般的なアスキー文字符号化との互換性をサポートするために、アスキーコードポイントにマッピングされる。
【0149】
様々な実施形態のうちの1つ以上において、UTF-16文字として符号化されたアスキー文字を変換することは、UTF-16の最小コード単位が16ビット(2バイト)であるので、有利であり得る。したがって、この例では、8ビット(1バイト)を使用して表すことができる文字を表すために16ビット(2バイト)が必要とされる。この例では、127を超える値を持つユニコードコードポイントなどの非アスキーコードポイントがUTF-16からUTF-8に変換される場合、複数のUTF-8コード単位が必要になり、そうでない場合、文字は印刷不可能と見なされることに留意されたい。
【0150】
種々の実施形態のうちの1つ以上において、ソース文字がアスキーでない場合、符号化エンジンは、プロセス900を終了することができ、したがって、ソース文字を評価して、異なる変換を適用することができるかどうかを決定することができる。
【0151】
ブロック904において、様々な実施形態のうちの1つ以上において、符号化エンジンは、要求された変換を実行するために採用され得る符号化モデルを決定するように構成され得る。
【0152】
様々な実施形態のうちの1つ以上において、符号化エンジンは、ソース文字コード及びターゲット文字コード、並びにターゲット文字がアスキー互換であることを要求するなどの他の要因に基づいて符号化モデルを選択するように構成することができる。この例では、いくつかの実施形態について、ソース文字コードはUTF-16であり、ターゲット文字コードはUTF-8であり、ソース文字が単一のUTF-8コード単位に変換されるという更なる要件又は予想を伴う。したがって、この例では、アスキー互換コードポイントを使用して表すことができないソース文字は、それらを表すために追加のコード単位を使用するのではなく、印刷不可能文字として扱うことができる。
【0153】
例えば、ユーザが、UTF-16符号化を使用して記憶されたファイルがアスキー互換文字のみ、又はほとんどアスキー互換文字を含むことを知っている場合、ユーザは、ファイル内の文字を表すために使用されるメモリ/空間の量を低減するために、ファイル内の文字がUTF-8に変換されることを要求してもよい。
【0154】
更に、上述したように、いくつかの実施形態実施形態では、符号化モデルは、使用されているCPU/オペレーティングシステムによって提供される利用可能な並列処理機能に基づいて選択され得る。
【0155】
ブロック906において、様々な実施形態のうちの1つ以上において、符号化エンジンには、UTF-16で符号化された1つ以上のソース文字が提供され得る。様々な実施形態のうちの1つ以上において、UTF-16を使用して符号化された文字を提供するソースストリームを提供することができる。同様に、いくつかの実施形態では、UTF-8文字を記憶するのに適切であり得るターゲットストリームが提供され得る。
【0156】
ブロック908において、様々な実施形態のうちの1つ以上において、符号化エンジンは、1つ以上のソース文字に対応するコード単位の第1の部分を第1のレジスタ又は他のメモリ位置(本明細書ではレジスタと呼ぶ)にロードするように構成することができる。
【0157】
種々の実施形態のうちの1つ以上において、符号化エンジンは、レジスタに収まることができる多数のUTF-16文字をロードするよう構成することができる。例えば、いくつかの実施形態では、プロセッサ機能が128ビット(16バイト)のレジスタ幅を有効にする場合、8つの2バイト幅のUTF-16コード単位が第1のレジスタにロードされ得る。
【0158】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0159】
【0160】
ブロック910において、様々な実施形態のうちの1つ以上において、符号化エンジンは、1つ以上のソース文字に対応するコード単位の第2の部分を第2のレジスタにロードするように構成され得る。ここで、ブロック910は、UTF-16文字の次のセットがソースストリームから別のレジスタにロードされ得ることを除いて、ブロック908と同様であると考えられ得る。
【0161】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0162】
【0163】
したがって、この例では、符号化モデルは、16個のUTF-16文字を読み取るように構成され、8個が第1のレジスタに、8個が第2のレジスタに読み込まれる。
【0164】
ブロック912において、様々な実施形態のうちの1つ以上において、符号化エンジンは、ソース文字コード単位を結果幅レジスタにパックするように構成され得る。
【0165】
いくつかの実施形態では、符号化エンジンは、第1のレジスタ及び第2のレジスタに記憶された2バイトのUTF-16コード単位を単一の結果レジスタにパックするレジスタ命令を実行するように構成されてもよい。この例では、2つのレジスタをパックすることは、第1及び第2の幅レジスタ中の各2バイトを、幅結果レジスタ中に記憶される8ビットにパックされ得る16ビット整数として扱うことを備え得る。この例では、第1のレジスタ内の8つのUTF-16コード単位及び第2のレジスタ内の8つのUTF-16コード単位は、8ビット整数として結果レジスタ内にパックされる16ビット整数として扱われる。この例では、レジスタパッキング機能は、16ビット整数中に保持された値が8ビット整数によって表され得ない場合、パックド値をデータタイプの最大値に設定する飽和パッキングを採用し得る。例えば、0x0041などの16ビットUTF-16コード単位は、0x41の値を持つ8ビット整数にパックされ得る。また、例えば、0x0A41の値を有する16ビットのUTF-16コード単位は、0xFFの値を有する8ビットの整数にパックされ得る。なぜなら、16ビットの値0x0A41は、8ビットの整数に収まることができないからである。
【0166】
特に、アスキー互換文字を表すUTF-16文字は、0~127(0x0001~0x007F)の値を有し、問題なく8ビット整数にパックすることを可能にする。
【0167】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0168】
【0169】
ブロック914において、様々な実施形態のうちの1つ以上において、符号化エンジンは、結果レジスタ内に存在し得るアスキー文字の数を決定するように構成され得る。
【0170】
この例では、結果レジスタが、アスキー互換コードポイントを有するUTF-16文字から生成された場合、結果レジスタは、ここで、それぞれがアスキー文字に対応する16個のUTF-8コード単位を記憶している。対照的に、何らかの理由で、ソースストリームが、非アスキー文字含むUTF-16コード単位を提供した場合、結果レジスタ内の1つ以上の整数は、アスキーコードポイントではない0xFFの値を有する。
【0171】
この例では、0x00と0x7Fとの間にある結果レジスタ内の8ビット整数の数をカウントすることにより、変換されたアスキー文字の数が決定される。また、この例では、0XFFの値を有する結果レジスタ内の8ビット整数の数をカウントすることは、アスキー文字に分解されないソースストリームからのUTF-16文字を示す。
【0172】
いくつかの実施形態では、並列処理機能は、レジスタ内に保持される8ビット整数内の各最上位ビットの値(0又は1)に基づいてレジスタからマスクを生成する単一演算をサポートしてもよい。したがって、様々な実施形態のうちの1つ以上において、結果レジスタがアスキー文字を保持している場合、それらの対応する8ビット整数のMSBは0に設定される。最終ステップとして、結果レジスタから生成されたマスクは、結果マスクが32ビット整数になるように、それ自体が0xFFFF0000とOR演算され得る。
【0173】
次に、マスク内の最下位ビットの位置に基づいてアスキー文字の数を決定することができる。
【0174】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0175】
【0176】
ブロック916において、様々な実施形態のうちの1つ以上において、符号化エンジンは、結果内の変換された文字をターゲットストリームに提供するように構成され得る。
【0177】
したがって、いくつかの実施形態では、結果レジスタ内の8ビットUTF-8コードポイントは、通常の(例えば、非幅レジスタ)メモリとして呼び出しプロセスに渡されてもよい。
【0178】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の命令を含んでもよい。
【0179】
【0180】
決定ブロック918において、様々な実施形態のうちの1つ以上において、処理を続けるべきである場合、制御はブロック906にループバックすることができる。そうでない場合、制御を呼び出しプロセスに戻すことができる。
【0181】
様々な実施形態のうちの1つ以上において、並列処理を継続するためにソース及びターゲットの両方について十分な残りの長さが存在する必要がある。そうでない場合、並列構造はメモリ場外を参照することがあり、潜在的に例外フォールトを引き起こす。また、いくつかの実施形態では、第1のコードポイントがアスキーでない場合、プロセスは、無限ループの可能性を回避するために終了すべきである。
【0182】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0183】
【0184】
図10は、様々な実施形態のうちの1つ以上による、UTF-8符号化されたCJK文字をUTF-16符号化されたCJK文字に変換するために符号化モデルを使用するためのプロセス1000のフローチャートを示す。開始ブロックの後、決定ブロック1002において、様々な実施形態のうちの1つ以上において、UTF-8を使用して符号化されたユニコードCJK文字をUTF-16文字に変換するために符号化エンジンを使用することができる場合、制御はブロック1004に進むことができる。そうでない場合、制御を呼び出しプロセスに戻すことができる。
【0185】
プロセス900などについて上述したのと同様に、ソース文字コード又はターゲット文字コードを決定することができる。
【0186】
ブロック1004において、様々な実施形態のうちの1又は複数において、符号化エンジンは、要求された変換を実行するために採用され得る符号化モデルを決定するように構成され得る。上述したのと同様に、符号化エンジンは、ソース文字コードをターゲット文字コードに変換するのに好適であり得る符号化モデルを選択するように構成され得る。
【0187】
ブロック1006において、様々な実施形態のうちの1つ以上において、符号化エンジンには、UTF-8で符号化された1つ以上のソース文字が提供され得る。
【0188】
いくつかの実施形態では、CPUに関連付けられた並列処理機能が128ビット幅のレジスタをサポートする場合、16個のUTF-8コード単位がレジスタに読み込まれ得る。
【0189】
更に、いくつかの実施形態では、符号化モデルは、UTF-8をUTF-16に変換するのに適した1つ以上のマスクを生成するための命令を含んでもよい。この例では、符号化モデルは、UTF-8を使用して表されるCJK文字を変換するように設計される。したがって、CJK文字ごとに3つのUTF-8コード単位が必要になる。ユニコードは、UTF-8、UTF-16、又はUTF-32の間で変換するためのアルゴリズムを定義することに留意されたい。当業者であれば、これらが、少なくともRFC-3629、RFC-2781などを含むユニコード文書で記述され得ることを認識するであろう。しかしながら、並列処理機能を採用する本明細書で説明される本発明は、ユニコード規格又は関連するRFCによって開示されていない。
【0190】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0191】
【0192】
ブロック1008において、様々な実施形態のうちの1つ以上において、符号化エンジンは、ソース文字のヘッドバイト及びテールバイトを変換するように構成されてよい。
【0193】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0194】
【0195】
ブロック1010において、様々な実施形態のうちの1つ以上において、符号化エンジンは、レジスタ内のヘッドバイト及びテールバイトを組み合わせるように構成され得る。
【0196】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0197】
【0198】
ブロック1012において、様々な実施形態のうちの1つ以上において、符号化エンジンは、変換されたUTF-16コード単位をターゲットストリームに提供するように構成されてもよい。
【0199】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0200】
【0201】
決定ブロック1014において、様々な実施形態のうちの1つ以上において、処理を継続することができる場合、制御はブロック1006にループバックすることができる。そうでない場合、制御を呼び出しプロセスに戻すことができる。
【0202】
また、様々な実施形態のうちの1つ以上において、並列処理を継続するために、ソース及びターゲットの両方について十分な残りの長さがある必要がある。そうでない場合、並列構造はメモリ場外を参照することがあり、潜在的に例外フォールトを引き起こす。また、いくつかの実施形態では、第1のコードポイントがCJKでない場合、プロセスは、無限ループの可能性を回避するために終了すべきである。
【0203】
例えば、Intelプロセッサをサポートするように構成された符号化モデルは、以下と同様の1つ以上の命令を含み得る。
【0204】
【0205】
各フローチャート図における各ブロック、及び各フローチャート図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることが理解されるであろう。これらのプログラム命令は、プロセッサ上で実行される命令が、各フローチャートの1つ以上のブロックにおいて指定されたアクションを実装するための手段を作成するように、機械を生成するためにプロセッサに提供され得る。コンピュータプログラム命令は、プロセッサによって実行されて、一連の動作ステップをプロセッサによって実行させて、上で実行される命令が、各フローチャートブロック(複数可)において指定されたアクションを実装するためのステップを提供するように、コンピュータ実装プロセスを生成することができる。コンピュータプログラム命令はまた、各フローチャートのブロックに示される動作ステップのうちの少なくともいくつかを並行して実行させ得る。更に、ステップのいくつかは、マルチプロセッサコンピュータシステムにおいて生じ得るように、1つ以上のプロセッサにわたって実行されてもよい。更に、各フローチャート図における1つ以上のブロック又はブロックの組み合わせは、本発明の範囲又は趣旨から逸脱することなく、他のブロック又はブロックの組み合わせと同時に、あるいは図示されたものとは異なる順序で実行することもできる。
【0206】
したがって、各フローチャート図の各ブロックは、指定された動作を実行するための手段の組み合わせ、指定された動作を実行するためのステップの組み合わせ、及び指定された動作を実行するためのプログラム命令手段をサポートする。各フローチャート図、及び各フローチャート図内のブロックの組み合わせは、指定されたアクション又は工程を遂行する専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることも理解されたい。前述の例は、限定又は網羅的であると解釈されるべきではなく、むしろ、本発明の種々の実施形態のうちの少なくとも1つの実装を示すための例証的使用事例として解釈されるべきである。
【0207】
更に、1つ以上の実施形態(図示せず)では、例示的なフローチャートのロジックは、CPUの代わりに、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルアレイロジック(PAL)など、又はそれらの組み合わせなどの埋め込みロジックハードウェア装置を使用して実行することができる。埋め込み論理ハードウェア装置は、その埋め込み論理を直接実行してアクションを実行することができる。1つ以上の実施形態では、マイクロコントローラは、それ自体の埋め込み論理を直接実行してアクションを実行し、それ自体の内部メモリ及びそれ自体の外部入力及び出力インターフェース(例えば、ハードウェアピン又は無線トランシーバ)にアクセスして、システムオンチップ(SOC)などのアクションを実行するように構成され得る。
【0208】
例示的な使用事例
図11~
図27は、特定の製造業者によって提供されるいくつかのプロセッサにおいて利用可能であり得る様々なプロセッサ機能を使用する特定の文字符号化(ユニコード)に関して説明されるユースケースを表す。当業者であれば、本明細書で開示される本発明が他の文字符号化規格又は他のプロセッサ機能を予想することを理解することに留意されたい。したがって、簡潔かつ明確にするために、他の文字符号化規格又はプロセッサの追加の使用事例又は例は省略される。
【0209】
図11は、様々な実施形態のうちの1つ以上に従うことができる文字符号化規格の一部の概要を示す。この例では、対象の文字符号化規格はユニコードである。この表は、上記及び下記に含まれるユニコード関連の例のコンテキストを提供するために、ユニコード文字符号化規格についての情報を提供する。しかし、当業者であれば、一般に文字符号化規格に精通しており、特にユニコードにも精通していると仮定する。
【0210】
この例では、表1102は、ユニコード文字マップ又は文字コードブックの異なる部分の非公式な分類を表す。場合によっては、文字符号化規格は、様々な特性に基づいてコードブック内の文字を順序付けることができる。文字符号化規格は、文字符号化規格の設計者にとって重要であり得る様々な考慮事項が与えられた場合に符号化が有利であり得るように文字符号化を分類するように構成され得る。
【0211】
この例では、列1104は、カテゴリの非公式ラベルのニックネームを表す。この例では、カテゴリ又はそれらのラベルがユニコードに正式に含まれない可能性があるので、列1104はニックネームを含むものとして説明されていることに留意されたい。他の文字符号化規格などの他の場合には、様々な実施形態のうちの1つ以上による1つ以上のカテゴリを正式に宣言することができる。したがって、場合によっては、列1104は正式なカテゴリラベルを表す。
【0212】
この例では、列1106は、所与のカテゴリに含まれる文字にマッピングするコードポイントの範囲を表す。また、この例では、コードポイントは、16進値を使用して表される。
【0213】
この例では、行1106は、0x0000~0x007Fの範囲に入るコードポイントにアスキーのニックネームを宣言する。アスキー文字符号化によってサポートされるユニコード文字は、このカテゴリに含まれる。行1108は、別の範囲の文字(0x0080-0x07FF)を表すギリシャカテゴリを宣言する。行1110は、多くのアジア言語文字を表すコードポイントの範囲を表すCJK(中国語文字、日本語文字、及び韓国語文字)カテゴリを宣言する。更に、この例では、行1110は、そのほとんどが一般に絵文字と呼ばれる別の範囲の文字(0x0001000~0x0010FFFF)を表す絵文字カテゴリを宣言する。
【0214】
これらの非公式カテゴリに関して例外又は省略があり得るが、当業者であれば、これらの非公式カテゴリが、文字を類似の特性を有するカテゴリにグループ化する有用な簡易方法を提供することを理解することに留意されたい。
【0215】
この例では、表1114は、1つのユニコード文字コードから別のユニコード文字コードへの変換に関連する利点、制限などのいくつかを示す。列1116はソース文字コードを表し、列1118は文字コードUTF-8がターゲットであるかどうかを表し、列1120は文字コードUTF-16がターゲットであるかどうかを表し、列1122は文字コードUTF-32がターゲットであるかどうかを表す。したがって、行1124はUTF-8のソース文字コードを表し、行1126はUTF-16のソース文字コードを表し、行1128はUTF-32のソース文字コードを表す。
【0216】
図12~
図27は、様々な実施形態のうちの1つ以上による同時処理を使用して可変長文字を符号化するための一般化された動作を表す。特に、
図12~
図27は、同時処理を使用して可変長文字を符号化するために採用され得る1つ以上の符号化モデルに含まれ得るアクション又は動作を表し得る。したがって、様々な実施形態のうちの1つ以上において、
図12~
図27に関連して説明したプロセス1200、1300、1400、1500、1660、1700、1800、1900、2000、2100、2200、2300、2400、2500、2600、及び2700は、
図3のネットワークコンピュータ300などの単一のネットワークコンピュータ(又はネットワーク監視コンピュータ)上の1つ以上のプロセッサによって実装又は実行することができる。他の実施形態では、これらのプロセス又はその一部は、
図3のネットワークコンピュータ300などの複数のネットワークコンピュータによって実装されてもよく、又は複数のネットワークコンピュータ上で実行されてもよい。更に他の実施形態では、これらのプロセス又はその一部は、クラウドベース環境内のもの等の1つ以上の仮想化コンピュータによって実装されてもよく、又はその上で実行されてもよい。しかしながら、実施形態はそのように限定されず、ネットワークコンピュータ、クライアントコンピュータなどの様々な組み合わせを利用することができる。更に、様々な実施形態のうちの1つ以上では、
図12~
図27に関連して説明されるプロセスは、
図4~
図7に関連して説明されるものなどの様々な実施形態又はアーキテクチャのうちの少なくとも1つによる同時処理を使用して可変長文字を符号化するために使用され得る。更に、様々な実施形態のうちの1つ以上において、プロセス1200、1300、1400、1500、1660、1700、1800、1900、2000、2100、2200、2300、2400、2500、2600、及び2700によって実行されるアクションの一部又は全部は、符号化エンジン322、視覚化エンジン324、モデリングエンジン326などによって部分的に実行されてもよい。
【0217】
図12は、様々な実施形態のうちの1つ以上による、順次単一コード単位UTF-8ソースからターゲット(任意)へのプロセス1200のフローチャートを示す。開始ブロックの後、ブロック1202において、様々な実施形態のうちの1つ以上において、ソースストリーム及びターゲットストリームを提供する。ブロック1204において、UTF-16又はUTF-32ターゲットを決定する。決定ブロック1206において、ソースコード単位が残っている場合、制御は決定ブロック1208に進むことができる。そうでない場合、制御を呼び出しプロセスに戻すことができる。決定ブロック1208において、ターゲットメモリが残っている可能性がある場合、制御は決定ブロック1208に進むことができる。そうでない場合、制御を呼び出しプロセスに戻すことができる。種々の実施形態のうちの1つ以上において、分類ブロック1210では、現在のヘッドバイトのコード単位から必要なテールバイトの数を分類する。以下のアクションは、処理される文字(複数可)又はコード単位のカテゴリに基づいて選択され得る。ブロック1212において、カテゴリがアスキーであり、追加のテールバイトがない場合、制御はブロック1224に進むことができる。カテゴリブロック1214において、カテゴリがギリシャであり、更に1つ以上のテールバイトがあり得る場合、制御は決定ブロック1222に進むことができる。カテゴリブロック1216において、カテゴリがCJKである場合、更に2つの追加のテールバイトがあり得るので、制御は決定ブロック1222に進むことができる。カテゴリブロック1218において、カテゴリが絵文字である場合、3つの追加のテールバイトが存在し得るので、制御は決定ブロック1222に進み得る。カテゴリブロック1220において、文字が無効である場合。制御はブロック1226に進み得る。決定ブロック1222において、符号化エンジンが必要とされるテールバイトコード単位を成功裏にウォークすることができる場合、制御はブロック1224に進むことができる。そうでない場合、制御はブロック1226に進んでもよい。ブロック1224において、符号化エンジンは、変換された文字をターゲットストリームに提供することができる。ブロック1226において、符号化エンジンは、文字を、無効な文字又は失敗した変換を表す置換文字0xFFDに変換することができる。
【0218】
図13は、様々な実施形態のうちの1つ以上による、シグネチャ32ビットUTF-8ソースから(任意の)ターゲットへのプロセス1300のフローチャートを示す。開始ブロックの後、ブロック1302において、ソースストリーム及びターゲットストリームを提供する。ブロック1304において、UTF-16又はUTF-32ターゲットを決定する。決定ブロック1306において、4つのソースコード単位が残っている場合、制御はブロック決定ブロック1308に進むことができる。そうでない場合、制御を別のプロセスに戻すことができる。決定ブロック1308において、ターゲットメモリが残っている可能性がある場合、制御は分類ブロック1310に進むことができる。そうでない場合、制御を別のプロセスに戻すことができる。分類ブロック131において、32ビットシグネチャからコードポイントを分類する。カテゴリブロック1312において、カテゴリがアスキー(1バイト)である場合、ビット操作はない。制御はブロック1324に進み得る。カテゴリブロック1314において、カテゴリがギリシャの2バイトビット操作である場合、制御は決定ブロック1322に進むことができる。カテゴリブロック1316において、カテゴリがCJK3バイトビット操作である場合、制御は決定ブロック1322に進むことができる。カテゴリブロック1318において、カテゴリが絵文字4バイトビット操作である場合、制御は決定ブロック1322に進むことができる。ブロック1320で、文字が無効で、コード単位誤り長を見つける場合、制御はブロック1326に進み得る。ブロック1322において、コードポイント値がオーバーコミットされ得る場合、制御はブロック1326に進み得る。制御はブロック1324に進み得る。ブロック1324において、変換された文字をターゲットストリームに移動することができる。ブロック1326で、文字を置換文字0xFFDに変換する。
【0219】
図14は、様々な実施形態のうちの1つ以上による、SSE4 128ビットUTF_8ソースからターゲット(いずれか)へのプロセス1400のフローチャートを示す。ブロック1402において、ソースストリーム及びターゲットストリームを提供する。ブロック1404において、UTF-16又はUTF-32ターゲットを決定する。ブロック1406において、16個のソースバイトが残っているか?ブロック1408において、十分なターゲットメモリ?ブロック1410において、32ビットシグネチャを使用してコードポイントを分類する。ブロック1412において、アスキー潜在的な16コードポイント。ブロック1414において、ギリシャ潜在的な8コードポイント。ブロック1416において、CJK潜在的な5コードポイント。ブロック1418において、絵文字潜在的な4コードポイント。ブロック1420において、無効コード単位誤り長を見つける。ブロック1422において、SSE2及びSSE4 SIMD命令を使用して潜在的コードポイントを処理する。発見された連続した関連コードポイントの数に従ってソース及びターゲットを進める。ブロック1424で、置換文字0xFFDに変換する。
【0220】
図15は、様々な実施形態のうちの1つ以上による、AVX 512ビットUTF-8ソースから(任意の)ターゲットへのプロセス1500のフローチャートを示す。ブロック1502において、ソースストリーム及びターゲットストリームを提供する。ブロック1504において、UTF-16又はUTF-32ターゲットを決定する。ブロック1506において、64のソースバイトが残っているか?ブロック1508において、十分なターゲットメモリ?ブロック1510において、32ビットシグネチャを使用してコードポイントを分類する。ブロック1512において、アスキー潜在的な64コードポイント。ブロック1514において、ギリシャ潜在的な32コードポイント。ブロック1516において、CJK潜在的な21コードポイント。ブロック1518において、絵文字潜在的な16コードポイント。ブロック1520では、無効コード単位誤り長を見つける。ブロック1522で、AVX512 SIMD命令を使用して潜在的なコードポイントを処理する。発見された連続した関連コードポイントの数に従ってソース及びターゲットを進める。ブロック1524で、置換文字0xFFDに変換する。
【0221】
図16は、順次単一コード単位(現在)UTF-16ソースからUTF-8ターゲットへのプロセス1600のフローチャートを示す。ブロック1602において、ソースストリーム及びターゲットストリームを提供する。ブロック1604において、ソースコード単位が残っているか?ブロック1606において、残りのターゲットメモリ?ブロック1608において、全体のコードポイント又はコード対に基づいてコード単位を分類する。ブロック1610において、アスキーヘッドバイトのみ。ブロック1612において、ギリシャヘッドバイト及び1テールバイト。ブロック1614において、CJKヘッドバイト及び2テールバイト。ブロック1616において、第1のコード対、第2のコード対が存在する(ヘッド1バイトとテール3バイト)。ブロック1618において、第2のコード対、先頭の第1のコード対なしで無効。ブロック1620において、ヘッドバイト及びテールバイトに変換する。ブロック1622において、ターゲットストリームにコピーする。ブロック1624で、3バイトを使用して置換文字0xFFDに変換する。
【0222】
図17は、SSE4 128ビットUTF-16ソースからUTF-8ターゲットへのプロセス1700のフローチャートを示す。ブロック1702において、ソースストリーム及びターゲットストリームを提供する。ブロック1704において、16個のソースコード単位が残っているか?ブロック1706において、残りのターゲットメモリ?ブロック1708において、全体のコードポイント又はコード対に基づいてコード単位を分類する。ブロック1710において、アスキー、潜在的な16コードポイント。ブロック1712において、ギリシャ、潜在的な8コードポイント。ブロック1714において、CJK、潜在的な5コードポイント。ブロック1716において、第1のコード対、第2のコード対が存在する。ブロック1718において、第2のコード対、先行する第1のコード対なしで無効。ブロック1720において、絵文字、潜在的な4コードポイント。ブロック1722において、SSE2及びSSE4 SIMD命令を使用して潜在的コードポイントを処理する。発見された連続した関連コードポイントの数に従ってソース及びターゲットを進める。ブロック1724で、3バイトを使用して置換文字0xFFDに変換する。
【0223】
図18は、様々な実施形態のうちの1つ以上による、AVX 512ビットUTF-16ソースからUTF-8ターゲットへのプロセス1800のフローチャートを示す。ブロック1802において、ソースストリーム及びターゲットストリームを提供する。ブロック1804において、64個のソースコード単位が残っているか?ブロック1806において、残りのターゲットメモリ?ブロック1808において、全体のコードポイント又はコード対に基づいてコード単位を分類する。ブロック1810において、アスキー、潜在的な64コードポイント。ブロック1812において、ギリシャ、潜在的な32コードポイント。ブロック1814において、CJK、潜在的な20コードポイント。ブロック1816において、第1のコード対、第2のコード対が存在する。ブロック1818において、第2のコード対、先頭の第1のコード対なしで無効。ブロック1820において、絵文字、潜在的な16コードポイント。ブロック1822において、AVX512 SIMD命令を使用して潜在的コードポイントを処理する。発見された連続した関連コードポイントの数に従ってソース及びターゲットを進める。ブロック1824で、3バイトを使用して置換文字0xFFDに変換する。
【0224】
図19は、順次単一コード単位(現在)UTF-32ソースからUTF-8ターゲットへのプロセス1900のフローチャートを示す。ブロック1902において、ソースストリーム及びターゲットストリームを提供する。ブロック1904において、ソースコード単位が残っているか?ブロック1906において、残りのターゲットメモリ?ブロック1908において、1つのコード単位に基づいて分類する。ブロック1910において、アスキー、ヘッドバイトのみ。ブロック1912において、ギリシャ、ヘッドバイト及び1テールバイト。ブロック1914において、CJK、ヘッドバイト及び2テールバイト。ブロック1916において、絵文字、ヘッドバイト及び3テールバイト。ブロック1918で、無効、0x0010FFFFより大きい。ブロック1920で、ヘッドバイト及びテールバイトに変換する。ブロック1922において、ターゲットストリームにコピーする。ブロック1924で、3バイトを使用して置換文字0xFFDに変換する。
【0225】
図20は、様々な実施形態のうちの1つ以上による、SSE4 128ビットUTF-32ソースからUTF-8ターゲットへのプロセス2000のフローチャートを示す。ブロック2002において、ソースストリーム及びターゲットストリームを提供する。ブロック2004において、16個のソースコード単位が残っているか?ブロック2006において、残りのターゲットメモリ?ブロック2008において、1つのコード単位に基づいて分類する。ブロック2010において、アスキー、潜在的な16コードポイント。ブロック2012において、ギリシャ、潜在的な8のコードポイント。ブロック2014において、CJK、潜在的な4コードポイント。ブロック2016において、絵文字、潜在的な4コードポイント。ブロック2018で、無効値、0x0010FFFFより大きい。ブロック2020において、SSE2及びSSE4 SIMD命令を使用して潜在的コードポイントを処理する。発見された連続した関連コードポイントの数に従ってソース及びターゲットを進める。ブロック2022で、3バイトを使用して置換文字0xFFDに変換する。
【0226】
図21は、様々な実施形態のうちの1つ以上による、AVX 512ビットUTF-32ソースからUTF-8ターゲットへのプロセス2100のフローチャートを示す。ブロック2102において、ソースストリーム及びターゲットストリームを提供する。ブロック2104において、64個のソースコード単位が残っているか?ブロック2106において、残りのターゲットメモリ?ブロック2108において、1つのコード単位に基づいて分類する。ブロック2110において、アスキー、潜在的な64コードポイント。ブロック2112において、ギリシャ、潜在的な32コードポイント。ブロック2114において、CJK、潜在的な8コードポイント。ブロック2116において、絵文字、潜在的な8コードポイント。ブロック2118で、無効値、0x0010FFFFより大きい。ブロック2120において、SSE2及びSSE4 SIMD命令を使用して潜在的コードポイントを処理する。発見された連続した関連コードポイントの数に従ってソース及びターゲットを進める。ブロック2122で、3バイトを使用して置換文字0xFFDに変換する。
【0227】
図22は、順次単一コード単位(現在)UTF-16ソースからUTF-32ターゲットへのプロセス2200のフローチャートを示す。ブロック2202において、ソースストリーム及びターゲットストリームを提供する。ブロック2204において、ソースコード単位が残っているか?ブロック2206において、残りのターゲットメモリ?ブロック2208において、それはアスキー、ギリシャ又はCJKであるか?ブロック2210において、それは第1のコード対であるか?ブロック2212において、次のコード単位は第2のコード対であるか?ブロック2214において、第2のコード対は、先頭の第1のコード対なしで無効。ブロック2216において、絵文字に変換する。ブロック2218において、置換文字0xFFDに変換する。ブロック2220において、ターゲットストリームにコピーする。
【0228】
図23は、SSE2 128ビットUTF-16ソースからUTF-32ターゲットへのプロセス2300のフローチャートを示す。ブロック2302において、ソースストリーム及びターゲットストリームを提供する。ブロック2304において、8個のソースコード単位があるか?ブロック2306において、ターゲットメモリが十分に残っているか?ブロック2308において、SSE2 UTF-16からUTF-32への単一単位変換。ブロック2310において、0より多いコード単位が変換されたか?ブロック2312において、SSE2 UTF-16からUTF-32へのコード対単位変換。ブロック2314において、0より多いコードポイントが変換されたか?ブロック2316において、対を持たない単一のコード単位のため無効。単一コードポイントを置換文字0xFFDに変換する。
【0229】
図24は、様々な実施形態のうちの1つ以上による、AVX 512ビットUTF-16ソースからUTF-32ターゲットへのプロセス2400のフローチャートを示す。ブロック2402において、ソースストリーム及びターゲットストリームを提供する。ブロック2404において、32個のソースコード単位があるか?ブロック2406において、ターゲットメモリが十分に残っているか?ブロック2408において、AVX512 UTF-16からUTF-32への単一単位変換。ブロック2410において、0より多いコード単位が変換されたか?ブロック2412において、AVX512 UTF-16からUTF-32へのコード対単位変換。ブロック2414において、0より多いコードポイントが変換されたか?ブロック2416において、対を持たない単一のコード単位のため無効。単一コードポイントを置換文字0xFFDに変換する。
【0230】
図25は、順次単一コード単位UTF-32ソースからUTF-16ターゲットへのプロセス2500のフローチャートを示す。ブロック2502において、ソースストリーム及びターゲットストリームを提供する。ブロック2504において、ソースコード単位が残っているか?ブロック2506において、残りのターゲットメモリ?ブロック2508において、コード単位0xFFFF以下か?ブロック2510では、絵文字か?ブロック2512において、コード単位対に変換する。ブロック2514において、0x0010FFFFより大きい。置換文字0xFFDに変換する。ブロック2516において、ターゲットストリームにコピーする。
【0231】
図26は、様々な実施形態のうちの1つ以上による、SSE2 128ビットUTF-32ソースからUTF-16ターゲットへのプロセス2600のフローチャートを示す。ブロック2602において、ソースストリーム及びターゲットストリームを提供する。ブロック2604において、8個のソースコード単位があるか?ブロック2606において、ターゲットメモリが十分に残っているか?ブロック2608において、SSE2 UTF-32からUTF-16への単一単位変換。ブロック2610において、0より多いコード単位が変換されるか?ブロック2612において、SSE2 UTF-32からUTF-16へのコード対単位変換。ブロック2614において、0より多いコードポイントが変換されたか?ブロック2616において、0x0010FFFFより大きいので無効。単一コードポイントを置換文字0xFFDに変換する。
【0232】
図27は、様々な実施形態のうちの1つ以上による、AVX512 128ビットUTF-32ソースからUTF-16ターゲットへのプロセス2700のフローチャートを示す。ブロック2702において、ソースストリーム及びターゲットストリームを提供する。ブロック2704において、32個のソースコード単位があるか?ブロック2706において、ターゲットメモリが十分に残っているか?ブロック2708において、SAVX51 UTF-32からUTF-16への単一単位変換。ブロック2710において、0より多いコード単位が変換されたか?ブロック2712において、AVX512 UTF-32からUTF-16へのコード対単位変換が行われる。ブロック2714において、0より多いコードポイントが変換されるか?ブロック2716において、0x0010FFFFより大きいので無効。単一コードポイントを置換文字0xFFDに変換する。
【0233】
各フローチャート図における各ブロック、及び各フローチャート図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることが理解されるであろう。これらのプログラム命令は、プロセッサ上で実行される命令が、各フローチャートの1つ以上のブロックにおいて指定されたアクションを実装するための手段を作成するように、機械を生成するためにプロセッサに提供され得る。コンピュータプログラム命令は、プロセッサによって実行されて、一連の動作ステップをプロセッサによって実行させて、プロセッサ上で実行される命令が、各フローチャートブロック(複数可)において指定されたアクションを実装するためのステップを提供するように、コンピュータ実装プロセスを生成することができる。コンピュータプログラム命令はまた、各フローチャートのブロックに示される動作ステップのうちの少なくともいくつかを並行して実行させ得る。更に、ステップのいくつかはまた、マルチプロセッサコンピュータシステムにおいて生じ得るように、1つ以上のプロセッサにわたって実行されてもよい。更に、各フローチャート図における1つ以上のブロック又はブロックの組み合わせは、本発明の範囲又は趣旨から逸脱することなく、他のブロック又はブロックの組み合わせと同時に、あるいは図示されたものとは異なる順序で実行することもできる。
【0234】
したがって、各フローチャート図の各ブロックは、指定された動作を実行するための手段の組み合わせ、指定された動作を実行するためのステップの組み合わせ、及び指定された動作を実行するためのプログラム命令手段をサポートする。各フローチャート図の各ブロック、及び各フローチャート図のブロックの組み合わせは、指定されたアクション若しくはステップを遂行する専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることにも理解されたい。前述の例は、限定又は網羅的であると解釈されるべきではなく、むしろ、本発明の種々の実施形態のうちの少なくとも1つの実装を示すための例証的使用事例として解釈されるべきである。
【0235】
更に、1つ以上の実施形態(図示せず)では、例示的なフローチャートのロジックは、CPUの代わりに、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルアレイロジック(PAL)など、又はそれらの組み合わせなどの埋め込みロジックハードウェア装置を使用して実行することができる。埋め込み論理ハードウェア装置は、その埋め込み論理を直接実行してアクションを実行することができる。1つ以上の実施形態では、マイクロコントローラは、それ自体の埋め込み論理を直接実行してアクションを実行し、それ自体の内部メモリ及びそれ自体の外部入力及び出力インターフェース(例えば、ハードウェアピン又は無線トランシーバ)にアクセスして、システムオンチップ(SOC)などのアクションを実行するように構成され得る。
【国際調査報告】