装置のエンディアンモードを管理するためのシステムおよび方法
エンディアン性を管理するためのシステム、方法、および装置が開示される。
一実施形態において、装置が、ビッグエンディアン動作モードまたはリトルエンディアン動作モードのうちの1つで選択的に動作するように構成される。その装置は、その装置の現在のエンディアンモードがレジスタ内の少なくとも2つの異なるビット位置で指示されるレジスタを含んでよい。その少なくとも2つのビット位置は、もしその装置およびシステムが同じエンディアンモードで動作するならば、そのシステムによってそのビット位置のうちの1つでデータが読まれるように選択され、もしその装置とシステムが互いに異なるエンディアンモードで動作するならば、選択されたビット位置の他方のデータビットがそのシステムによって読み出される。幾つかの実施形態において、その装置のエンディアンモードは、ハードウェア入力またはソフトウェア入力によって制御される。
一実施形態において、装置が、ビッグエンディアン動作モードまたはリトルエンディアン動作モードのうちの1つで選択的に動作するように構成される。その装置は、その装置の現在のエンディアンモードがレジスタ内の少なくとも2つの異なるビット位置で指示されるレジスタを含んでよい。その少なくとも2つのビット位置は、もしその装置およびシステムが同じエンディアンモードで動作するならば、そのシステムによってそのビット位置のうちの1つでデータが読まれるように選択され、もしその装置とシステムが互いに異なるエンディアンモードで動作するならば、選択されたビット位置の他方のデータビットがそのシステムによって読み出される。幾つかの実施形態において、その装置のエンディアンモードは、ハードウェア入力またはソフトウェア入力によって制御される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概して、デジタルデータ処理に関し、より詳細には、ある実施形態において、電子装置またはシステムのエンディアンモードの管理に関する。
【背景技術】
【0002】
コンピューティングの分野においては、パターン認識タスクは、ますます性能が試される。大量のデータさえコンピュータ間で伝送され、ユーザが識別を望むパターンの数は増加している。例えば、スパムもしくはマルウェアは、しばしば、データストリームにおけるパターン(例えば、特定の句もしくはコードの一部)を検索することによって検出される。新規の変異形を検索するために新規のパターンが実施される可能性があるため、パターンの数は、スパムおよびマルウェアの多様性によって増加する。これらのパターンの各々に対してデータストリームを検索することは、コンピューティングボトルネック(障害)を形成する可能性がある。しばしば、データストリームが受信されると、一つずつ、各パターンを検索される。システムより前の遅延は、パターン数に伴うデータストリームの増加の次の部分を検索する状態にある。したがって、パターン認識は、データの受信を遅延させる可能性がある。
【0003】
上述したようなパターン認識タスクを実行するハードウェアのようなコンピューティングハードウェアは、多くの他の装置とインタフェース接続する可能性がある。例えば、パターン認識ハードウェアは、異なるタイプのマイクロプロセッサのような様々なプロセッサと結合されるかもしれない。これらの異なるタイプのマイクロプロセッサは、データのシーケンスをお互いに異なって解釈しストアする。例えば、幾つかのマイクロプロセッサまたは他の装置は、“ビッグエンディアン”モードで動作する。そのモードでは、あるデータシーケンスの最上位部分(例えば、ビッグエンディアンバイトオーダモードにおける最上位バイト)が、最初に読まれ、ストアされ、解釈されるべきである。他のマイクロプロセッサやデバイスは、“リトルエンディアン”モードで動作する。そのモードでは、あるデータシーケンスの最下位部分(例えば、リトルエンディアンバイトオーダモードにおける最下位バイト)が、最初に読まれ、ストアされ、解釈されるべきである。そのような装置において適切に動作する機能は、それらがデータを解釈した順に応答するので、システムはしばしば、そのようなデバイスに対して受信されまたは送信されたデータを、ハードウェアまたはソフトウェアを介して翻訳(変換)するように設計されている。システムによるそのような翻訳は、しかしながら、システムの設計コストに加算されてしまうと思われ、またシステム性能に強い影響を及ぼす。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの一実施例を示す。
【図2】図1のシステムにおけるパターン認識プロセッサの一実施例を示す。
【図3】図2のパターン認識プロセッサにおける検索タームセルの一実施例を示す。
【図4】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図5】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図6】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図7】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図8】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図9】二語に対してパラレルにデータストリームを検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図13】本発明の実施形態に従って複数のデータストリームを受信する図1のシステムを示す。
【図14】本発明の実施形態に従う図2のパターン認識プロセッサのデータフロー識別レジスタおよびリザルトバッファを示す。
【図15】本発明の実施形態に従う図2のパターン認識プロセッサにおける多数のデータフローを処理するためのプロセスのフローチャートを示す。
【図16】本発明の実施形態に従う図14の装置のエンディアンモードを変える方法のフローチャートを示す。
【図17】本発明の実施形態に従う図14の装置の状態レジスタの特徴を示す図である。
【図18】本発明の実施形態に従う図14の装置の制御レジスタの特徴を示す図である。
【発明を実施するための最良の形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準16に従ってデータストリーム12を検索するパターン認識プロセッサ14を含んでもよい。
【0006】
各検索基準は、一つ以上の対象表現、すなわちパターンを特定してもよい。“対象表現”という用語は、パターン認識プロセッサ14が検索するためのデータシーケンスのことを称する。対象表現の例は、ある単語を綴る文字シーケンス、遺伝子を特定する遺伝子塩基対シーケンス、画像の一部を形成する画像ファイルもしくはビデオファイルにおけるビットシーケンス、プログラムの一部を形成する実行可能ファイルにおけるビットシーケンス、または、歌もしくは口語表現の一部を形成するオーディオファイルにおけるビットシーケンスを含む。
【0007】
検索基準は、一つ以上の対象表現を特定してもよい。例えば、検索基準は、文字列“cl”で始まる全5文字の単語、文字列“cl”で始まるあらゆる単語、3回以上“cloud”という単語を含む段落などを特定してもよい。対象表現のうちで生じうる組の数は、任意の大きさであり、例えば、データストリームが存在することが可能であるデータの順列が存在するのと同一数の対象表現が存在する可能性がある。検索基準は、種々のフォーマットで表現されてもよく、そのフォーマットは、正規表現として、各対象表現を必ずしも記載することなく、対象表現の組を簡潔に特定するプログラミング言語を含む。
【0008】
各検索基準は、一つ以上の検索タームから構成されてもよい。したがって、検索基準の各対象表現は一つ以上の検索タームを含み、幾つかの対象表現は、共通の検索タームを使用してもよい。本明細書で使用されるように、“検索ターム”という用語は、単一の検索周期の間に検索されるデータのシーケンスのことを称する。データのシーケンスは、バイナリフォーマットもしくは、例えば、10進法、ASCIIなどの他のフォーマットにおける複数ビットのデータを含んでもよい。シーケンスは、単一のディジットもしくは複数のディジット(例えば幾つかのバイナリディジット)でデータをエンコードしてもよい。例えば、パターン認識プロセッサ14は、一度に一文字をテキストデータストリーム12から検索し、検索タームは、例えば、文字“a”、文字“a”か“e”のいずれか、または、全ての単一文字の組を特定するワイルドカード検索タームなど、単一文字の組を特定してもよい。
【0009】
検索タームは、文字(もしくは、データストリームによって表現される情報の他の書記素、すなわち基本単位、例えば、音符、遺伝子塩基対、10進法のディジット、サブピクセル)を特定するビット数よりも小さいか、または大きくてもよい。例えば、検索タームは8ビットであり、単一文字は16ビットであり、この場合には、二つの連続した検索タームは単一文字を特定してもよい。
【0010】
検索基準16は、コンパイラ18によってパターン認識プロセッサ14のためにフォーマットされてもよい。フォーマットするステップは、検索基準から検索タームを分解するステップを含んでもよい。例えば、データストリーム12によって表現された書記素が検索タームよりも大きい場合、コンパイラは単一の書記素を検索するために、複数の検索タームへと検索基準を分解してもよい。同様に、データストリーム12によって表現された書記素(grapheme)が検索タームよりも小さい場合、コンパイラ18は、各個別の書記素に対して、使用されていないビットを伴う単一の検索タームを提供してもよい。コンパイラ18は、パターン認識プロセッサ14によって本来サポートされていない種々の正規表現演算子をサポートするために、検索基準16をフォーマットしてもよい。
【0011】
パターン認識プロセッサ14は、データストリーム12から各新規タームを評価することによって、データストリーム12を検索してもよい。本明細書における“ターム”という用語は、検索タームに一致しうるデータ量のことを称する。検索周期の間、パターン認識プロセッサ14は、現在提示されているタームが検索基準において現在の検索タームに一致するかどうかを決定してもよい。タームが検索タームと一致する場合には、評価は“進行”し、すなわち、次のタームが検索基準における次の検索タームと比較される。そのタームが一致しない場合には、次のタームは、検索基準における第一のタームと比較され、それによって検索をリセットする。
【0012】
各検索基準は、パターン認識プロセッサ14における異なる有限ステートマシンへとコンパイルされてもよい。有限ステートマシンは、パラレルに(並行して)実行してもよく、検索基準16に従ってデータストリーム12を検索する。有限ステートマシンは、先行する検索タームがデータストリーム12によって一致する場合に検索基準における連続する各検索タームへと進んでもよい。または、検索タームが一致しない場合には、有限ステートマシンは検索基準における第一の検索タームの検索を開始してもよい。
【0013】
パターン認識プロセッサ14は、幾つかの検索基準に従って各新規タームを評価し、ほぼ同時に、例えば、単一のデバイス周期の間に其々の検索タームを評価してもよい。パラレルな有限ステートマシンは、ほぼ同時にデータストリーム12からタームを各々受信し、パラレルな有限ステートマシンの各々は、そのタームが、パラレルな有限ステートマシンを検索基準における次の検索タームへと進めるかどうかを決定してもよい。パラレルな有限ステートマシンは、比較的多数の検索基準(例えば、100以上、1000以上、もしくは10000以上)に従って、タームを評価してもよい。それらはパラレルに動作するため、データストリームを遅延させることなく、比較的高いバンド幅を有するデータストリーム12(例えば、64MB毎秒もしくは128MB毎秒より大きいかほぼ同一のデータストリーム12)に対して検索基準を適用してもよい。幾つかの実施形態においては、検索周期の継続期間は、検索基準の数によって増減しないため、検索基準の数はパターン認識プロセッサ14の性能にあまり影響を与えることはない。
【0014】
検索基準が満足されるとき(すなわち、最後の検索タームに進行してそれが一致した後)、パターン認識プロセッサ14は、中央処理装置(CPU)20などの処理装置に対して基準を満足したことを報告してもよい。中央処理装置20は、パターン認識プロセッサ14およびシステム10の他の部分を制御してもよい。
【0015】
システム10は、データのストリームを検索する種々のシステムもしくはデバイスのうちのいずれであってもよい。例えば、システム10は、データストリーム12を監視するデスクトップ、ラップトップ、ハンドヘルドもしくは他のタイプのコンピュータであってもよい。システム10は、ルータ、サーバ、もしくはクライアント(例えば、前述されたタイプのコンピュータのうちの一つ)などのネットワークノードであってもよい。システム10は、コピー機、スキャナ、プリンタ、ゲーム機、テレビ、セットトップビデオ分配もしくは録画システム、ケーブルボックス、パーソナルデジタルメディアプレイヤー、工場自動化システム、自動車用コンピュータシステムもしくは医療デバイスなどの他の種類の何らかの電子デバイスであってもよい。(これらの種々のシステムの実施例を記述するために使用される用語は、本明細書で使用される他の多くの用語と同様に、幾つかの指示対象を共有し、それ自体は、列挙された他の項目によって、範囲を狭めて構成されるべきではない。)
【0016】
データストリーム12は、ユーザもしくは他の存在が検索を望む可能性のある、種々のタイプの一つ以上のデータストリームであってもよい。例えば、データストリーム12は、インターネットを介して受信されたパケット、または、携帯電話ネットワークを介して受信された音声もしくはデータなど、ネットワークを介して受信されたデータのストリームであってもよい。データストリーム12は、画像センサ、温度センサ、加速度計などもしくはその組み合わせなど、システム10と連通するセンサから受信されたデータであってもよい。データストリーム12は、シリアルデータストリームとしてシステム10によって受信され、データは、時間的、語彙的、もしくは意味的に意義のある順序など、意味のある順序で受信される。または、データストリーム12は、パラレルにもしくはバラバラの順序で受信され、その後、例えば、インターネットを介して受信されたパケットを順序づけることによって、シリアルデータストリームへと変換される。幾つかの実施形態においては、データストリーム12は、タームをシリアルに提示してもよいが、各タームを表すビットはパラレルに受信されてもよい。データストリーム12は、システム10に対して外部ソースから受信されてもよいか、または、メモリデバイスにインテロゲート(伝送)し、格納されたデータからデータストリーム12を形成することによって形成されてもよい。
【0017】
データストリーム12におけるデータのタイプに依存して、異なるタイプの検索基準が設計者によって選択されてもよい。例えば、検索基準16は、ウイルス定義ファイルであってもよい。ウイルスもしくは他のマルウェアは特徴づけられ、マルウェアの態様は、データストリーム12がマルウェアを伝送しうるかどうかを示す検索基準を形成するために使用されてもよい。結果として生じる検索基準はサーバに格納され、クライアントシステムのオペレータはシステム10へと検索基準をダウンロードするサービスに登録してもよい。検索基準16は、異なるタイプのマルウェアが現れたとき、サーバから定期的にアップデートされてもよい。検索基準は、ネットワークを介して受信される可能性のある望ましくないコンテンツ(例えば、(スパムとしてよく知られている)迷惑電子メールもしくはユーザが望まない他のコンテンツ)を特定するために使用されてもよい。
【0018】
データストリーム12はシステム10によって受信されたデータに対して関心を持って、第三者によって検索されてもよい。例えば、データストリーム12は、著作物において生じる文字列、音声シーケンス、ビデオシーケンスに関して監視されてもよい。データストリーム12は、強制捜査もしくは民事手続きに関係する発話、もしくは使用者にとって関心のある発話に対して監視されてもよい。
【0019】
検索基準16は、例えば、CPU20もしくはパターン認識プロセッサ14によってアドレス可能なメモリにおいて、翻訳が可能であるデータストリーム12におけるパターンを含んでもよい。例えば、検索基準16は、対応するスペイン語がメモリに格納された英単語を各々特定してもよい。別の実施例においては、検索基準16は、例えば、デコードされたバージョンのデータストリーム12が使用可能であるMP3、MPEG4、FLAC、Ogg Vorbisなど、エンコードされたバージョンのデータストリーム12を特定してもよいし、その逆を特定してもよい。
【0020】
パターン認識プロセッサ14は、CPU20と共に(単一のデバイスなどの)単一の構成部分に統合されたハードウェアであってもよいし、別個の構成部分として形成されてもよい。例えば、パターン認識プロセッサ14は別個の集積回路であってもよい。パターン認識プロセッサ14は、“コプロセッサ”もしくは“パターン認識コプロセッサ”と称されてもよい。
【0021】
図2は、パターン認識プロセッサ14の一実施例を示す。パターン認識プロセッサ14は、認識モジュール22および出力バッファ51を有する集約モジュール24を含んでもよい。出力バッファ51は、リザルトバッファ25を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、検索タームとタームが一致することが検索基準を満足するかどうかを決定するように協力してもよい。
【0022】
認識モジュール22は、行デコーダ28および複数のフィーチャセル30を含んでもよい。各フィーチャセル30は検索タームを特定し、フィーチャセル30のグループは、検索基準を形成するパラレルな有限ステートマシンを形成してもよい。フィーチャセル30のコンポーネントは、検索タームアレイ32、検出アレイ34およびアクティブ化ルーティングマトリクス36を形成してもよい。検索タームアレイ32は複数の入力導体37を含み、入力導体37の各々は、行デコーダ28と通信する各フィーチャセル30を配置してもよい。
【0023】
行デコーダ28は、データストリーム12のコンテンツに基づいて、複数の入力導体37中の特定の導体を選択してもよい。例えば、行デコーダ28は、1タームを表現する可能性がある受信されたバイトの値に基づいて、256行のうちの1つをアクティブ化する1バイトから256への行デコーダであってもよい。00000000の1バイトタームは、複数の入力導体37のうち最も上の行に対応し、11111111の1バイトタームは、複数の入力導体37のうちの最も下の行に対応してもよい。したがって、異なる入力導体37は、どのタームがデータストリーム12から受信されるかに依存して選択されてもよい。異なるタームが受信されると、行デコーダ28は、前のタームに対応する行を非アクティブ化し、新規タームに対応する行をアクティブ化してもよい。
【0024】
検出アレイ34は、検索基準を完全にもしくは部分的に満足することを示す信号を集約モジュール24に対して出力する検出バス38に結合してもよい。アクティブ化ルーティングマトリクス36は、一致した検索基準における検索ターム数に基づいて、フィーチャセル30を選択的にアクティブ化する、ならびに非アクティブ化してもよい。
【0025】
集約モジュール24は、ラッチマトリクス40、集約ルーティングマトリクス42、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48および初期化ルーティングマトリクス50を含んでもよい。
【0026】
ラッチマトリクス40は、ある検索基準の一部を実施してもよい。例えば、幾つかの正規表現などの幾つかの検索基準は、最初に一致(もしくは複数の一致)が発生したときのみ計算する。ラッチマトリクス40は、一致が生じたかどうかを記録するラッチを含んでもよい。検索基準が満足されたとき、もしくはそれ以上満足されないと判定された、すなわち、その検索基準が満足されるより前に前の検索タームを再度マッチングさせる必要があるとき、ラッチは初期化の間にクリアされ、動作中に定期的に再初期化されてもよい。
【0027】
集約ルーティングマトリクス42は、アクティブ化ルーティングマトリクス36と類似した機能を果たしてもよい。集約ルーティングマトリクス42は、検出バス38における一致を示す信号を受信し、閾値論理マトリクス44に接続する異なるグループ論理ライン53へと信号を送信してもよい。集約ルーティングマトリクス42は、検索基準が満足された、もしくはこれ以上満足されないと判定されたとき、検出アレイ34の一部をリセットするために、検出アレイ34へと初期化ルーティングマトリクス50の出力を送信してもよい。
【0028】
閾値論理マトリクス44は、例えば、数を数える(カウントアップする)、または数を逆に数える(カウントダウンする)ように構成された32ビットカウンタなどの、複数のカウンタを含んでもよい。閾値論理マトリクス44は、初期カウントでロードされ、認識モジュールによって信号通知された一致時のカウント値から、カウントアップもしくはカウントダウンしてもよい。例えば、閾値論理マトリクス44は、ある長さの文字列の単語が現れた数を数えてもよい。
【0029】
閾値論理マトリクス44の出力は、論理積マトリクス46に対する入力であってもよい。論理積マトリクス46は、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してもよい。論理積マトリクス46は、正方行列として実施され、出力積の数は、閾値論理マトリクス44からの入力ラインの数と同一であるか、または、論理積マトリクス46は、出力とは異なる数の入力を有してもよい。結果として生じる積の値は、論理和マトリクス48に対する出力であってもよい。
【0030】
論理和マトリクス48は、和(例えば、ブール論理における“OR”関数)を選択的に生成してもよい。論理和マトリクス48もまた、正方行列として実施されるか、または、論理和マトリクス48は、出力とは異なる数の入力を有してもよい。入力は論理積であるため、論理和マトリクス48の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
【0031】
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス50は、正方行列として実行されるか、または、初期化ルーティングマトリクス50は、出力とは異なる数の入力を有してもよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの信号に応じて、例えば、検索基準が満足されたとき、または、検索基準がこれ以上満足されないと判定されたとき、パターン認識プロセッサ14の他の部分を再初期化してもよい。
【0032】
集約モジュール24は、閾値論理マトリクス44、集約ルーティングマトリクス42、および論理和マトリクス48の出力を受信する出力バッファ51を含んでもよい。集約モジュール24の出力は、出力バッファ51から出力バス26上のCPU20(図1)へと伝送されてもよい。幾つかの実施形態においては、出力マルチプレクサは、これらのコンポーネント42、44および48からの信号を多重化し、基準を満足したことを示す信号、もしくは検索タームの一致を示す信号をCPU20(図1)へと出力してもよい。他の実施形態においては、パターン認識プロセッサ14からのリザルトは、出力マルチプレクサを介して信号を伝送することなく報告されてもよいが、このことは、本明細書で記述されたあらゆる他の特性が省略される可能性がないことを示唆するものではない。例えば、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48もしくは初期化ルーティングマトリクス50からの信号は、出力バス26上をパラレルにCPUへと伝送されてもよい。
【0033】
図3は、検索タームセル54として本明細書で称されるコンポーネントである、検索タームアレイ32(図2)における単一のフィーチャセル30の一部を示す。検索タームセル54は、出力導体56および複数のメモリセル58を含んでもよい。各メモリセル58は、出力導体56および複数の入力導体37の中の導体の一つの両方へと結合されてもよい。入力導体37が選択されるのに応じて、各メモリセル58は、格納された値を示す値を出力し、出力導体56を介してデータを出力する。幾つかの実施形態においては、複数の入力導体37は“ワード線”と称され、出力導体56は“データ線”と称されてもよい。
【0034】
メモリセル58は、種々のタイプのメモリセルのうちのいずれを含んでもよい。例えば、メモリセル58は、トランジスタとキャパシタを有するダイナミックランダムアクセスメモリ(DRAM)セルなどの揮発性メモリであってもよい。トランジスタのソースおよびドレインは、其々、キャパシタのプレートおよび出力導体56へと接続され、トランジスタのゲートは入力導体37のうちの一つへと接続されてもよい。揮発性メモリの別の実施例においては、各メモリセル58は、スタティックランダムアクセスメモリ(SRAM)セルを含んでもよい。SRAMセルは、入力導体37の一つによって制御されるアクセストランジスタによって、出力導体56へと選択的に結合された出力を有してもよい。メモリセル58は、相変化メモリ(例えば、オボニックデバイス)、フラッシュメモリ、シリコン・酸化物・窒化物・酸化物・シリコン(SONOS)メモリ、磁気抵抗メモリもしくは他のタイプの不揮発性メモリなどの不揮発性メモリをも含んでもよい。メモリセル58は、フリップフロップ、例えば、論理ゲートによって形成されたメモリセルをも含んでもよい。
【0035】
図4および図5は、動作における検索タームセル54の一実施例を示す。図4は、セルの検索タームに一致しないタームを受信する検索タームセル54を示し、図5は、セルの検索タームに一致するタームを受信する検索タームセル54を示す。
【0036】
図4によって示されるように、検索タームセル54は、メモリセル58にデータを格納することによって、一つ以上のタームを検索するように構成されてもよい。メモリセル58は、例えば図3において、データストリーム12が提示する可能性のあるタームを各々表し、各メモリセル58は文字“a”で開始し、数字“9”で終了する単一の文字もしくは数字を表す。検索タームを満足するタームを表すメモリセル58は、第一の値を格納するようにプログラムされ、検索タームを満足するタームを表していないメモリセル58は、異なる値を格納するようにプログラムされてもよい。示された実施例においては、検索タームセル54は、文字“b”を検索するように構成される。“b”を表すメモリセル58は、1もしくは論理的なハイを格納し、“b”を表していないメモリセル58は、0、もしくは論理的なロウを格納するようにプログラムされてもよい。
【0037】
データストリーム12からのタームを検索タームと比較するために、行デコーダ28は、受信されたタームを表すメモリセル58に結合された入力導体37を選択してもよい。図4においては、データストリーム12は、小文字の“e”を示す。このタームは、8ビットASCIIコード形式でデータストリーム12によって示され、行デコーダ28は、行アドレスとしてこのバイトを解釈し、導体60に電圧を印加することによって、導体60上に信号を出力する。
【0038】
それに応じて、導体60によって制御されるメモリセル58は、メモリセル58が格納するデータを示す信号を出力し、その信号は出力導体56によって伝送されてもよい。この場合には、文字“e”は、検索タームセル54によって特定されたタームのうちの一つではないため、検索タームとは一致せず、検索タームセル54は0値を出力し、それは一致が見つからなかったことを示している。
【0039】
図5においては、データストリーム12は、文字“b”を示す。再度、行デコーダ28はこのタームをアドレスとして解釈し、行デコーダ28は導体62を選択してもよい。それに応じて、文字“b”を表すメモリセル58は、格納された値を出力し、この場合には、それは1であり、一致を示している。
【0040】
検索タームセル54は一度に一つ以上のタームを検索するように構成されてもよい。複数のメモリセル58は、1を格納するようにプログラムされ、一つ以上のタームと一致する検索タームを特定する。例えば、小文字“a”および大文字“A”を表すメモリセル58は、1を格納するようにプログラムされ、検索タームセル54は、いずれかのタームを検索してもよい。別の実施例においては、検索タームセル54は、いかなる文字が受信された場合にも一致を出力するように構成されてもよい。全メモリセル58は、1を格納するようにプログラムされてもよく、検索タームセル54は、検索基準におけるワイルドカードタームとして機能してもよい。
【0041】
図6−図8は、例えば一単語など複数ターム検索基準に従って検索する認識モジュール22を示す。具体的には、図6は一単語の最初の文字を検出する認識モジュール22を示し、図7は、第二の文字の検出を示し、図8は、最後の文字の検出を示す。
【0042】
図6によって示されるように、認識モジュール22は、単語“big”を検索するように構成されてもよい。3個の隣接するフィーチャセル63、64および66が示される。フィーチャセル63は、文字“b”を検出するように構成される。フィーチャセル64は、文字“i”を検出するように構成される。フィーチャセル66は、文字“g”を検出し、検索基準が満足されたことを示すように構成される。
【0043】
図6は、検出アレイ34のさらなる詳細をも示す。検出アレイ34は、各フィーチャセル63、64および66における検出セル68を含んでもよい。各検出セル68は、上述されたタイプのメモリセルのうちの一つ(例えば、フリップフロップ)のような、メモリセル70を含んでもよく、メモリセル70は、フィーチャセル63、64もしくは66がアクティブか非アクティブかを示す。検出セル68は、両方の検出セルがアクティブであり、一致を示す関連付けられた検索タームセル54から信号を受信したかどうかを示す信号を、アクティブ化ルーティングマトリクス36へと出力するように構成されてもよい。非アクティブなフィーチャセル63、64および66は、一致を無視してもよい。各検出セル68は、メモリセル70および出力導体56からの入力を有する、ANDゲートを含んでもよい。ANDゲートの出力は、検出バス38およびアクティブ化ルーティングマトリクス36の両方へ、またはそのどちらか一方へと送信されてもよい。
【0044】
今度は、アクティブ化ルーティングマトリクス36は、検出アレイ34におけるメモリセル70へと書き込むことによって、フィーチャセル63、64および66を選択的にアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、検索基準ならびに次にどの検索タームがデータストリーム12において検索されるかに従って、フィーチャセル63、64もしくは66をアクティブ化してもよい。
【0045】
図6においては、データストリーム12は文字“b”を示す。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“b”を表す導体62に接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル63は文字“b”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル63における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力して、検索基準のうちの第一の検索タームが一致したことを示す。
【0046】
図7によって示されるように、第一の検索タームが一致した後、アクティブ化ルーティングマトリクス36は、検出セル68におけるメモリセル70へと1を書き込むことによって、次のフィーチャセル64をアクティブ化してもよい。次のタームが第一の検索タームを満足する場合(例えば、タームのシーケンス“bbig”が受信された場合)アクティブ化ルーティングマトリクス36はフィーチャセル63のアクティブ状態を維持してもよい。検索基準のうちの第一の検索タームは、データストリーム12が検索される時間のうちの一部もしくは実質的に全期間の間、アクティブ状態に維持されてもよい。
【0047】
図7においては、データストリーム12は認識モジュール22へ文字“i”を出力する。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“i”を表す導体72へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル64は文字“i”を検出するように構成され、メモリセル70によって示されるようにアクティブであるため、フィーチャセル64における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力し、検索基準の次の検索タームが一致したことを示す。
【0048】
続いて、図8に示されるように、アクティブ化ルーティングマトリクス36はフィーチャセル66をアクティブ化してもよい。次のタームを評価する前に、フィーチャセル64は非アクティブ化されてもよい。フィーチャセル64は、その検出セル68によって非アクティブ化され、検出周期の間そのメモリセル70をリセットするか、または、例えば、アクティブ化ルーティングマトリクス36はフィーチャセル64を非アクティブ化してもよい。
【0049】
図8においては、データストリーム12は行デコーダ28へと、ターム“g”を出力し、行デコーダ28はターム“g”を表す導体74を選択する。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“g”を表す導体74へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル66は文字“g”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル66における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力し、検索基準の最後の検索タームが一致したことを示す。
【0050】
検索基準の終わりもしくは検索基準の一部は、アクティブ化ルーティングマトリクス36もしくは検出セル68によって識別されてもよい。これらのコンポーネント36もしくは68は、そのフィーチャセル63、64もしくは66が検索基準の最終検索タームか検索基準のコンポーネントかを識別するかを示すメモリを含んでもよい。例えば、検索基準は、“cattle”という単語が二度現れる全ての文を特定し、認識モジュールは、“cattle”の出現回数を数える集約モジュールへと、文内の各々の“cattle”の出現を示す信号を出力し、検索基準が満足されたかどうかを判定する。
【0051】
フィーチャセル63、64もしくは66は幾つかの条件下でアクティブ化されてもよい。フィーチャセル63、64もしくは66は、“常にアクティブ”であってもよく、それは、全検索の間、もしくは実質的に全ての検索の間アクティブ状態のままであることを意味する。常にアクティブなフィーチャセル63、64もしくは66の一実施例は、検索基準の第一のフィーチャセル、例えば、フィーチャセル63である。
【0052】
フィーチャセル63、64もしくは66は、“要求されたときアクティブ”であってもよく、それは、幾つかの先行する条件が一致したとき、例えば、検索基準における先行する検索タームが一致したときに、フィーチャセル63、64もしくは66がアクティブであることを意味する。一実施例は、図6−図8におけるフィーチャセル63によって要求されたときにアクティブであるフィーチャセル64と、フィーチャセル64によって要求されたときにアクティブであるフィーチャセル66である。
【0053】
フィーチャセル63、64もしくは66は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、それ自身をアクティブ化することを意味する。例えば、いかなる数のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、文字“x”に到達するまで、文章“123456xy”をアクティブ化したままであってもよい。自己アクティブ化されたフィーチャセルの検索タームが一致するたび、自己アクティブ化されたフィーチャセルは検索基準における次のフィーチャセルをアクティブ化してもよい。したがって、常にアクティブなフィーチャセルは、自己アクティブ化するフィーチャセルおよび要求されたときにアクティブなフィーチャセルから形成されてもよい。自己アクティブ化フィーチャセルは、1を格納するメモリセル58の全てにプログラムされてもよく、各ターム後に要求されたときアクティブなフィーチャセルを繰り返しアクティブ化してもよい。幾つかの実施形態においては、各フィーチャセル63、64および66は、フィーチャセルが常にアクティブかどうかを識別する検出セル68もしくはアクティブ化ルーティングマトリクス36におけるメモリセルを含んでもよく、それによって、単一のフィーチャセルから常にアクティブなフィーチャセルを形成する。
【0054】
図9は、第一の検索基準75および第二の検索基準76に従ってパラレルに検索するように構成された認識モジュール22の一実施例を示す。本実施例においては、第一の検索基準75は、単語“big”を識別し、第二の検索基準76は、単語“cab”を識別する。データストリーム12からの現在のタームを示す信号は、ほぼ同時に各検索基準75および76におけるフィーチャセルへと通信されてもよい。各入力導体37は、検索基準75および76の双方へと及ぶ。結果として、幾つかの実施形態においては、検索基準75および76の双方は、ほぼ同時に現在のタームを評価してもよい。このことによって、検索基準の評価が加速すると考えられる。他の実施形態は、より多くの検索基準をパラレルに評価するように構成されたより多くのフィーチャセルを含んでもよい。例えば、幾つかの実施形態は、パラレルに動作する100、500、1000、5000もしくは10000以上のフィーチャセルを含んでもよい。これらのフィーチャセルは、ほぼ同時に何百、もしくは何千もの検索基準を評価してもよい。
【0055】
異なる数の検索タームを有する検索基準は、より多くのもしくはより少ないフィーチャセルを検索基準へと割り当てることによって形成されてもよい。単純な検索基準は、フィーチャセルの形式で、複雑な検索基準よりも、より少ないリソースを消費してもよい。このことによって、ほぼ同一の多数のコアを有し、複雑な検索基準を評価するように全て構成されたプロセッサと比較して、パターン認識プロセッサ14(図2)のコストを低減すると考えられる。
【0056】
図10−図12は、アクティブ化ルーティングマトリクス36のより複雑な検索基準とフィーチャの一実施例の双方を示す。アクティブ化ルーティングマトリクス36は、複数のアクティブ化ルーティングセル78を含んでもよく、アクティブ化ルーティングセル78のグループは、各フィーチャセル63、64、66、80、82、84および86に関連付けられてもよい。例えば、各フィーチャセルは、5、10、20、50個もしくはそれ以上のアクティブ化ルーティングセル78を含んでもよい。アクティブ化ルーティングセル78は、先行する検索タームが一致するとき、検索基準における次の検索タームへとアクティブ化信号を送信するように構成されてもよい。アクティブ化ルーティングセル78は、同一のフィーチャセル内の隣接するフィーチャセルもしくは他のアクティブ化ルーティングセル78へとアクティブ化信号を送信するように構成されてもよい。アクティブ化ルーティングセル78は、どのフィーチャセルが検索基準における次の検索タームに対応するかを示すメモリを含んでもよい。
【0057】
図10−図12に示されるように、認識モジュール22は、単一の単語を特定する基準よりも複雑な検索基準に従って検索するように構成されてもよい。例えば、認識モジュール22は、接頭辞88で開始し、2つの接尾辞90もしくは92のうちの一つで終了する単語を検索するように構成されてもよい。示された検索基準は、文字“c”および“l”のシーケンスで開始し、文字シーケンス“ap”もしくは文字シーケンス“oud”のいずれかで終了する単語を特定する。これは、複数の対象表現、例えば、単語“clap”もしくは単語“cloud”を特定する検索基準の一実施例である。
【0058】
図10においては、データストリーム12は、認識モジュール22に対して文字“c”を示し、フィーチャセル63は両方アクティブであり、一致を検出する。それに応じて、アクティブ化ルーティングマトリクス36は、次のフィーチャセル64をアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、フィーチャセル63が検索基準における第一の検索タームであるとき、フィーチャセル63のアクティブ状態を維持してもよい。
【0059】
図11においては、データストリーム12は、文字“l”を示し、フィーチャセル64は、一致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第一の接尾辞90の第一のフィーチャセル66および第二の接尾辞92の第一のフィーチャセル82の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞は一つ以上の接尾辞をアクティブ化してもよい。
【0060】
続いて、図12においては、データストリーム12は、認識モジュール22に対して文字“o”を示し、第二の接尾辞92のフィーチャセル82は、一致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66が非アクティブになると認められると、第一の接尾辞90の検索は終了してもよい。図10−図12に示されたステップは、文字“u”および“d”へと継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
【0061】
図13は、一実施形態に従う電子装置またはシステムのブロック図である。参照数字100によって一般的に参照されるその電子装置またはシステムは、図13に示される幾つかのまたは全ての構成部分を有する任意の様々なタイプのシステムである。例えば、様々は実施形態において、システム100は、様々なコンピュータ(例えば、パーソナルコンピュータ、サーバ、またはネットワーク設備)、ネットワーク装置(例えば、アクセスポイント、ルータ、またはモデム)、個人用整理手帳、携帯電話などのようなもののいずれでもよい。
【0062】
システム100は、電源104を含んでよい。それは例えば、バッテリ、AC電源アダプタ、またはDC電源アダプタである。他の様々な装置は、システム100が実行する機能に依存して、プロセッサ102に接続されてよい。例えば、入力装置106は、プロセッサ102に接続されて、ユーザからの入力を受信する。入力装置106は、ユーザインタフェースを含んでよい。それは、ボタン、スイッチ、キーボード、ライトペン、マウス、デジタイザ、音声認識システム、あるいはその他の多くの入力装置のいずれでもよい。ディスプレイ108はまた、プロセッサ102に接続され、ユーザに情報を提供する。ディスプレイ108は、例えば、LCDディスプレイ、CRTディスプレイ、LEDを含んでよい。
【0063】
RFサブシステム/ベースバンドプロセッサ110は、プロセッサ102に接続されて無線通信機能を提供することができる。RFサブシステム/ベースバンドプロセッサ110は、RF受信機およびRF送信器(示されない)に接続されるアンテナを含んでよい。さらに、通信ポート112は、電子システム100と周辺装置114との間の通信インタフェースを与えるように適合されてよい。周辺装置114は、ドッキングステーション、拡張ベイ、または他の外部構成部分を含んでよい。幾つかの実施形態において、周辺装置114は、図1−図12に関連して上述されたようなパターン認識機能を含んでよい。
【0064】
プロセッサ102は、その動作を容易にする様々なタイプのメモリ装置に接続される。例えば、プロセッサ102は、揮発性メモリ116、不揮発性メモリ118、またはその両方のような様々なメモリ装置に接続される。揮発性メモリ116は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダミアクセスメモリ(DRAM)、またはダブルデータレート(DDR)メモリ世代(例えば、DDR1、DDR2、DDR3等)のような様々なメモリを含んでよい。不揮発性メモリ118は、例えば、電子的プログラム可能リードオンリーメモリ(EPROM)またはフラッシュメモリのような様々なタイプのメモリを含んでよい。加えて、不揮発性メモリは、ソリッドステートメモリ記憶装置の代わりにまたはそれに加えて、テープまたはディスクドライブメモリのような光学的または磁気的記憶装置を含んでよい。そのような記憶メディアは、プロセッサ102によって実行される様々な応用命令を含んで、以下に議論されるような装置のエンディアン性(endian)の管理に関する機能を含む多数の機能を可能にし実行する。
【0065】
幾つかの実施形態において、システム100は、一般的に図14に図示されるような追加装置122と通信することができる。幾つかの実施形態において、追加装置122は、他の装置もまた想定できるが、ルータ、モデム、または幾つかの他のネットワーク装置であってよい。システム100(またはその構成部分)と装置122の間の通信は、任意の適切なデータバス124を通して実行される。幾つかの実施形態において、データバス124は、それらに限定されないが、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)バス、DDRメモリバス(例えば、DDR1バス、DDR2バス、DDR3バス等)、または幾つかの他のマルチバイト並列バスを含んでよい。装置122は、ここで図示される実施形態においては、システム100とは明確に区別されて示されているが、装置122およびシステム100(または装置122またはシステム100の様々な構成部分)は、共通の装置またはシステムに統合されてもよい。例えば、一実施形態においては、システム100は、モデムを含む装置122と通信するコンピュータを含んでよい。他の実施形態においては、しかしながら、装置122は、コンピュータシステム100に統合されてもよい。
【0066】
装置122は、1つのコア論理モジュール126、および装置122と協働してその意図した機能の実行を可能にする1つ以上のレジスタを含むことができる。例えば、一実施形態において、装置122は、コア論理モジュール126およびレジスタ128が、その他の機能を含み、図1−図12に関連する上述した機能を提供するパターン認識装置を含んでよい。
【0067】
一般的に上述したように、様々な電子装置は、ビッグエンディアンモードまたはリトルエンディアンモードに従ってデータのシーケンスを読み、書き、そして解釈することができる。ここに提供された例は、ビッグエンディアンおよびリトルエンディアンバイトオーダに関連して記述され図示されているが、これらの例から本技術はビッグエンディアンおよびリトルエンディアンビットオーダ、ワードオーダのようなものにもまた適用してもよいことを理解されたい。
【0068】
一実施形態において、コア論理モジュール126は、以下にさらに詳細に議論されるようにハードウェア入力に基づいてまたはソフトウェアを介して選択される様々な装置エンディアンモードに従って、データをレジスタ128に対して書き込みまたは読み出されることを可能にするレジスタインタフェース130を含む。ここで図示される実施形態では、入力/出力回路132は、データバス124を介して、装置122とシステム100の構成部分との間の通信を容易にする。ここで再び言及するが、装置122(またはその構成部分)は、システム100に対して分離されまたは総合することができる。そして、入力/出力回路132は、上述したような並列バスを含む任意の様々なタイプの内蔵または外付けデータバスを介して通信するように構成されてよいことを理解されたい。
【0069】
装置122は、コア論理モジュール126または装置122の他の構成部分に制御信号を供給するように構成されるハードウェア入力ピン134を含むことができる。さらに、一実施形態において、ハードウェア入力ピン134は、装置122のエンディアンモードを制御する“エンディアン性”入力ピン136を含むことができる。例えば、装置122は、もし“エンディアン性”入力ピン136上の信号が“ロウ”(例えば接地)であるときにはリトルエンディアンモードで動作し、もしその信号が“ハイ”であるときにはビッグエンディアンモードで動作するように構成してよい。
【0070】
説明のために、32ビットデータ値142がビッグエンディアンモードおよびリトルエンディアンモードのそれぞれに従ってどのようにストアされるかの例が図15に示される。本例では、値142は、16進フォーマット:0x0a0b0c0dというフォーマットで記述されている。一般的にテーブル144に示されるように、そのような値をストアするために、ビッグエンディアンシステムは、典型的には、最上位バイト(すなわち、0x0a)を1つのバイトアドレスにストアし、他のバイト(すなわち、0x0b、0x0c、0x0d)が引き続いて増加するバイトアドレスにストアされる。反対に、一般的にテーブル146に示されるように、リトルエンディアンシステムは、典型的には、最下位バイト(すなわち、0x0d)を特定のバイトアドレスにストアし、それから、残りのバイトを、相対的な位の高さに従って、引き続いて増加するバイトアドレスにストアする。
【0071】
ビッグエンディアンおよびリトルエンディアンシステムは、シーケンシャルデータが異なる順番で書かれ、読まれ、そして解釈されることを期待しているため、もしシステム100および装置122が互いに異なるエンディアンモードで動作するときには、システム100または装置122の一つからのデータ伝送は、他方によって誤解釈される可能性がある。例えば、値142がシーケンシャルに(例えば、一度に1バイトまたは一度に1ビットで)送信される一実施形態において、ビッグエンディアン装置122はデータバスを介して値142の0x0a構成要素(すなわち、最上位バイト)を最初に送信し、それに0x0b、0x0c、および0x0d構成要素が続く(それらは位の高さが低くなってゆく)。しかしながら、もしシステム100がリトルエンディアンモードで動作するならば、そのシステムは、最初に0x0a構成要素を受信するが、このバイトを(ビッグエンディアン装置122によって解釈される最上位バイトではなく)最下位バイトとして解釈し、0x0b、0x0c、0x0dを(位が低くなってゆくのではなく)位が高くなってゆく構成要素であると解釈する。このように、ある修正がない形態では、ビッグエンディアン装置122は、送信データを0x0a0b0c0dと解釈したのに対して、リトルエンディアンシステム100は受信データが値:0x0d0c0b0aを有するとして解釈する。
【0072】
幾つかの実施形態において、装置122のレジスタインタフェース130は、異なるエンディアンモードで動作するシステム100と装置122の間で通信されるデータを翻訳するように構成することができる。一実施形態においては、装置122のエンディアンモードは、一般的に図16に図示されるように、方法148に従って処理される。この方法148は、一般的に、装置122の1つ以上のレジスタ128にアクセスするステップ150を含んでよく、そして、ステップ152において、図17および図18に関連して以下でさらに詳しく議論されるように、装置122が動作する現在のエンディアンモードを決定することができる。以下でまた議論されるように、ひとたび装置122のエンディアンモードが決定されれば、装置122のエンディアンモードが変更されるようにすることができる。
【0073】
一実施形態に従えば、ステップ150においてアクセスされる1つ以上のレジスタは、一般的に図17に図示されるステータスレジスタ156を含んでよい。本技術に十分に従えば、他のレジスタ幅を用いてよいことを理解されたいが、ステータスレジスタ156は、32ビットレジスタとして図示されている。ステータスレジスタ156は、32ビット位置(ビット位置0からビット位置31)を含み、それぞれは各データビットE0−E31をストア可能なメモリセルに関連付けられる。一実施形態においては、データビットE0−E31は、図示されている仕方でバイト158、160、162、および164にグループ化され、1バイト増加のような任意の適当な増加量で、読み出しまたは書き込まれてよい。
【0074】
ステータスレジスタ156の各ビット位置および/またはビット位置のグループは、特定の特性または機能と関連付けられてよい。例えば、テーブル166に一般的に示されるように、ビット位置7は、データビットE7の値が現在の装置エンディアンモードを指し示すように、装置122の現在のエンディアンモードと関連付けられてよい。本実施形態において、データビットE7は、“0”にセットされてその装置がリトルエンディアンモードで動作することを示し、あるいは、“1”にセットされてその装置がビッグエンディアンモードで動作することを示すようにしてよい。上述のように、もしシステム100および装置122が同じエンディアンモードで動作するときには、データバイト158、160、162、および164はシステム100に転送され、そのシステムはデータビットE7がステータスレジスタ156のビット位置7にストアされると認識する。しかしながら、システム100および装置122が異なるエンディアンモードで動作するときには、システム100は、そのデータを受信したときに、これらのバイトを逆順に解釈し、データビットE7をビット位置31に関連付ける。このように、もしシステム100と装置122が異なるエンディアンモードで動作せずシステム100と装置122が共通のエンディアンモードを合意すれば、システム100による装置122からのステータスレジスタ156のビット位置7におけるデータビットの読出しの試みは、データビットE7を正確に返すことができる。
【0075】
従って、一実施形態において、一般的にテーブル168に示されるように、ステータスレジスタ156は、ビット位置31において二重の現在の装置エンディアンモードビットを含むことができる。この方法では、バイト158、160、162、および164のバイトの順番がシステム100によってたとえ異なって(例えば、位の高さを反対の順番で)解釈されたとしても、システム100によるビット位置7の読出しのどの試みも、それぞれがまったく同様に装置122の現在のエンディアンモードを識別するように指し示すデータビットE7またはデータビットE31の何れかを返す。このように、システム100は、バイトオーダエンディアン性の相違にかかわらず、ビット位置7におけるデータの値の読出しの試みに基づいて、装置122のエンディアンモードを検出することができる。同様に、他の実施形態においては、装置の現在のエンディアンモードがさらに他のビット位置によって与えられて、ビットオーダエンディアン性のような他のタイプのエンディアン性を記述するようにしてもよい。
【0076】
上述のように、異なるエンディアンモードにおける装置122とシステム100の動作は、結果として通信エラーを生じる可能性がある。そのうえ、第1のエンディアンモードで動作するシステムが異なるエンディアンモードで動作する装置122を(例えば、レジスタ128に値を書き込むことによって)構成しようとした場合、装置122はシステム100からの構成データを誤解釈し、装置122に意図するものとは正反対の仕方で構成させる結果を生ずる可能性がある。従って、一実施形態において、装置122は、パワーオンまたはリセットして、その装置への何れの構成の書込みをも実行する必要なく、(システム100によるような)ステータスレジスタ156の読出しを可能にするデフォルトモードになるように構成される。特に、このことは、システム100による装置122のエンディアン性の早期の決定を容易にし、また、一般的に装置122の構成を容易にする。一方では、エンディアン性のミスマッチによる構成上のエラーの起こりやすさを減少させることができる。
【0077】
ステータスレジスタ156は、他の機能や特性の指示をもまた与えてもよい。幾つかの実施形態において、装置122のエンディアン性は、ハードウェア入力(ここではハードウェアエンディアンモードと称される)、またはソフトウェア入力(ここではソフトウェアエンディアンモードと称される)の何れかによってコントロールされてもよい。そして、ステータスレジスタ156の他のビット位置は、現在の制御方法の詳細を指示してもよい。例えば、一般的にテーブル170として示されるように、ステータスレジスタ156のビット位置29は、装置122のエンディアン性がハードウェアによって(例えば入力ピン136によって)制御されるのか、ソフトウェアレジスタビットによって制御されるのかを決定するために読み出されてもよい。他の実施形態では、ソフトウェアレジスタビットの制御が、図18に関連して以下に議論される制御レジスタ186のような異なるレジスタに含まれる。あるいは、他の実施形態では、そのような制御レジスタビットは、ステータスレジスタ156に含まれることができる。
【0078】
ステータスレジスタ156のビット位置28および30は、それぞれソフトウェアおよびハードウェアエンディアンモードを決定するために読み出されてもよい。そのような実施形態においては、データビットE7およびE31の装置エンディアンモードは、もしデータビットデータビットE29が“0”にセットされた場合(装置エンディアン性のハードウェア制御を指示している場合)にはE30にマッチし、もしデータビットデータビットE29が“1”にセットされた場合(装置エンディアン性のソフトウェア制御を指示している場合)にはE28にマッチする。テーブル176および178として図示されるように、ステータスレジスタ156の他のデータビットは、他の機能や特性のために使用され、あるいは未使用とされる(または将来の使用のために予約される)。
【0079】
上述のように、装置122は、ビッグエンディアンモードまたはリトルエンディアンモードの何れかで動作するように構成してよい。幾つかの実施形態において、レジスタインタフェース130は、選択された装置エンディアンモードに基づいて、デバイス122に対するデータ入力および出力のハードウェアによる変換を提供する。装置エンディアンモードは、装置122へのハードウェア入力(例えば、エンディアン性入力ピン136)によって、またはデバイス122へのソフトウェア入力によって、あるいはその両方によって選択されてよい。例えば、装置122は、装置122に対するエンディアンモードを選択するための、そして装置エンディアンモードがハードウェア入力によって制御されるのかソフトウェア入力によって制御されるのかを指示するためのレジスタ128中の1つ以上のレジスタビットを含んでよい。
【0080】
さらなる例として、レジスタ128は一実施形態に従って図18に一般的に図示されるようなレジスタビットを有する制御レジスタ186を含んでよい。制御レジスタ186もまた、説明のために32ビットレジスタとして図示されているが、他の実施形態においては他のレジスタ幅も選択できる。加えて、ステータスレジスタ156および制御レジスタ186のある例がここでは説明のために与えられているが、これらのレジスタのビット位置に関連する様々な特性および機能は、各レジスタの中で変更され、異なるレジスタに切り替えられ、あるいは単一のレジスタに結合されるようにすることができることに留意されたい。図示された制御レジスタ186は、それぞれのデータビットF0−F31のストアを可能とする32ビット位置(ビット位置0からビット位置31)を含む。本実施形態においては、制御レジスタ186のデータビットは、バイト188、190、および194にグループ化される。これらのデータバイトは、1バイト増加量で、あるいは任意の他の適当な増加量(例えば、1ビット以上の増加量、1ニブル以上の増加量、または複数バイトの増加量)で、制御レジスタ186に対して書き込まれまたは読み出されてよい。
【0081】
テーブル196に一般的に示されるように、データビットF29は、(システム100によるようにして)、一実施形態において、“0”にセットされることで装置のエンディアンモードがハードウェア入力によって(例えば、エンディアン性入力ピン136の信号レベルに基づいて)制御され、“1”にセットされることで装置のエンディアンモードがソフトウェアによって(例えば、他のレジスタビットをセットして装置122のエンディアンモードを選択することにより)制御されるようにしてもよい。例えば、一般的にテーブル198に示されるように、データビットF28は、“0”にセットされることで装置122のリトルエンディアン動作を選択し、“1”にセットされることで装置122のビッグエンディアン動作を選択するようにしてもよい。そのような実施形態において、もしデータビットF29が“0”にセットされているなら、装置122は、エンディアン性入力ピン136上の信号に従って制御されるデフォルトエンディアンモードに従って動作してよい。しかし、このデフォルトモードはデータビットF29を“1”にセットすることによってオーバーライドされることができる。一般的にテーブル200および202に示されるように、制御レジスタ186の他のデータビットは、他の機能を制御するために使用されてもよい、あるいは、未使用にされおよび将来の使用のために予約されてもよい。加えて、レジスタ128のデータビットF28、または任意の他のデータビットは、システム100または装置122のソフトウェアドライバ、ファームウェア、または他のソフトウェアによって自動的にセットされてもよく、あるいは、そのようなソフトウェアを介してユーザによって手動でセットされてもよい。
【0082】
幾つかの実施形態のレジスタインタフェース130は、装置122のエンディアンモードを制御するように構成できるため、そのような実施形態は、システム100や他の装置に通信データのソフトウェアまたはハードウェアによる変換を実行することを要求することなく、装置122とシステム100の間の効率的な通信を可能にすることを認識されたい。さらに、そのような実施形態は、一般的に、装置122のエンディアン性を制御する柔軟な方法を提供し、ビッグエンディアンシステムまたはリトルエンディアンシステムの何れかと接続して効率的に動作することを可能にすることができる。
【0083】
本発明は、種々の改変および代替形式を受け入れる余地があるが、本明細書では、例示の目的のために、具体的な実施形態が図面において示され、詳細に説明されてきた。しかしながら、本発明は、開示された特定の形式に限定されることを意図されるものではないことを理解されたい。それよりもむしろ、本発明は、以下に添付された請求項によって定義されるような、本発明の趣旨および範囲内にある全ての改変、均等物および代替物を包含するものである。
【技術分野】
【0001】
本発明の実施形態は、概して、デジタルデータ処理に関し、より詳細には、ある実施形態において、電子装置またはシステムのエンディアンモードの管理に関する。
【背景技術】
【0002】
コンピューティングの分野においては、パターン認識タスクは、ますます性能が試される。大量のデータさえコンピュータ間で伝送され、ユーザが識別を望むパターンの数は増加している。例えば、スパムもしくはマルウェアは、しばしば、データストリームにおけるパターン(例えば、特定の句もしくはコードの一部)を検索することによって検出される。新規の変異形を検索するために新規のパターンが実施される可能性があるため、パターンの数は、スパムおよびマルウェアの多様性によって増加する。これらのパターンの各々に対してデータストリームを検索することは、コンピューティングボトルネック(障害)を形成する可能性がある。しばしば、データストリームが受信されると、一つずつ、各パターンを検索される。システムより前の遅延は、パターン数に伴うデータストリームの増加の次の部分を検索する状態にある。したがって、パターン認識は、データの受信を遅延させる可能性がある。
【0003】
上述したようなパターン認識タスクを実行するハードウェアのようなコンピューティングハードウェアは、多くの他の装置とインタフェース接続する可能性がある。例えば、パターン認識ハードウェアは、異なるタイプのマイクロプロセッサのような様々なプロセッサと結合されるかもしれない。これらの異なるタイプのマイクロプロセッサは、データのシーケンスをお互いに異なって解釈しストアする。例えば、幾つかのマイクロプロセッサまたは他の装置は、“ビッグエンディアン”モードで動作する。そのモードでは、あるデータシーケンスの最上位部分(例えば、ビッグエンディアンバイトオーダモードにおける最上位バイト)が、最初に読まれ、ストアされ、解釈されるべきである。他のマイクロプロセッサやデバイスは、“リトルエンディアン”モードで動作する。そのモードでは、あるデータシーケンスの最下位部分(例えば、リトルエンディアンバイトオーダモードにおける最下位バイト)が、最初に読まれ、ストアされ、解釈されるべきである。そのような装置において適切に動作する機能は、それらがデータを解釈した順に応答するので、システムはしばしば、そのようなデバイスに対して受信されまたは送信されたデータを、ハードウェアまたはソフトウェアを介して翻訳(変換)するように設計されている。システムによるそのような翻訳は、しかしながら、システムの設計コストに加算されてしまうと思われ、またシステム性能に強い影響を及ぼす。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの一実施例を示す。
【図2】図1のシステムにおけるパターン認識プロセッサの一実施例を示す。
【図3】図2のパターン認識プロセッサにおける検索タームセルの一実施例を示す。
【図4】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図5】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図6】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図7】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図8】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図9】二語に対してパラレルにデータストリームを検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図13】本発明の実施形態に従って複数のデータストリームを受信する図1のシステムを示す。
【図14】本発明の実施形態に従う図2のパターン認識プロセッサのデータフロー識別レジスタおよびリザルトバッファを示す。
【図15】本発明の実施形態に従う図2のパターン認識プロセッサにおける多数のデータフローを処理するためのプロセスのフローチャートを示す。
【図16】本発明の実施形態に従う図14の装置のエンディアンモードを変える方法のフローチャートを示す。
【図17】本発明の実施形態に従う図14の装置の状態レジスタの特徴を示す図である。
【図18】本発明の実施形態に従う図14の装置の制御レジスタの特徴を示す図である。
【発明を実施するための最良の形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準16に従ってデータストリーム12を検索するパターン認識プロセッサ14を含んでもよい。
【0006】
各検索基準は、一つ以上の対象表現、すなわちパターンを特定してもよい。“対象表現”という用語は、パターン認識プロセッサ14が検索するためのデータシーケンスのことを称する。対象表現の例は、ある単語を綴る文字シーケンス、遺伝子を特定する遺伝子塩基対シーケンス、画像の一部を形成する画像ファイルもしくはビデオファイルにおけるビットシーケンス、プログラムの一部を形成する実行可能ファイルにおけるビットシーケンス、または、歌もしくは口語表現の一部を形成するオーディオファイルにおけるビットシーケンスを含む。
【0007】
検索基準は、一つ以上の対象表現を特定してもよい。例えば、検索基準は、文字列“cl”で始まる全5文字の単語、文字列“cl”で始まるあらゆる単語、3回以上“cloud”という単語を含む段落などを特定してもよい。対象表現のうちで生じうる組の数は、任意の大きさであり、例えば、データストリームが存在することが可能であるデータの順列が存在するのと同一数の対象表現が存在する可能性がある。検索基準は、種々のフォーマットで表現されてもよく、そのフォーマットは、正規表現として、各対象表現を必ずしも記載することなく、対象表現の組を簡潔に特定するプログラミング言語を含む。
【0008】
各検索基準は、一つ以上の検索タームから構成されてもよい。したがって、検索基準の各対象表現は一つ以上の検索タームを含み、幾つかの対象表現は、共通の検索タームを使用してもよい。本明細書で使用されるように、“検索ターム”という用語は、単一の検索周期の間に検索されるデータのシーケンスのことを称する。データのシーケンスは、バイナリフォーマットもしくは、例えば、10進法、ASCIIなどの他のフォーマットにおける複数ビットのデータを含んでもよい。シーケンスは、単一のディジットもしくは複数のディジット(例えば幾つかのバイナリディジット)でデータをエンコードしてもよい。例えば、パターン認識プロセッサ14は、一度に一文字をテキストデータストリーム12から検索し、検索タームは、例えば、文字“a”、文字“a”か“e”のいずれか、または、全ての単一文字の組を特定するワイルドカード検索タームなど、単一文字の組を特定してもよい。
【0009】
検索タームは、文字(もしくは、データストリームによって表現される情報の他の書記素、すなわち基本単位、例えば、音符、遺伝子塩基対、10進法のディジット、サブピクセル)を特定するビット数よりも小さいか、または大きくてもよい。例えば、検索タームは8ビットであり、単一文字は16ビットであり、この場合には、二つの連続した検索タームは単一文字を特定してもよい。
【0010】
検索基準16は、コンパイラ18によってパターン認識プロセッサ14のためにフォーマットされてもよい。フォーマットするステップは、検索基準から検索タームを分解するステップを含んでもよい。例えば、データストリーム12によって表現された書記素が検索タームよりも大きい場合、コンパイラは単一の書記素を検索するために、複数の検索タームへと検索基準を分解してもよい。同様に、データストリーム12によって表現された書記素(grapheme)が検索タームよりも小さい場合、コンパイラ18は、各個別の書記素に対して、使用されていないビットを伴う単一の検索タームを提供してもよい。コンパイラ18は、パターン認識プロセッサ14によって本来サポートされていない種々の正規表現演算子をサポートするために、検索基準16をフォーマットしてもよい。
【0011】
パターン認識プロセッサ14は、データストリーム12から各新規タームを評価することによって、データストリーム12を検索してもよい。本明細書における“ターム”という用語は、検索タームに一致しうるデータ量のことを称する。検索周期の間、パターン認識プロセッサ14は、現在提示されているタームが検索基準において現在の検索タームに一致するかどうかを決定してもよい。タームが検索タームと一致する場合には、評価は“進行”し、すなわち、次のタームが検索基準における次の検索タームと比較される。そのタームが一致しない場合には、次のタームは、検索基準における第一のタームと比較され、それによって検索をリセットする。
【0012】
各検索基準は、パターン認識プロセッサ14における異なる有限ステートマシンへとコンパイルされてもよい。有限ステートマシンは、パラレルに(並行して)実行してもよく、検索基準16に従ってデータストリーム12を検索する。有限ステートマシンは、先行する検索タームがデータストリーム12によって一致する場合に検索基準における連続する各検索タームへと進んでもよい。または、検索タームが一致しない場合には、有限ステートマシンは検索基準における第一の検索タームの検索を開始してもよい。
【0013】
パターン認識プロセッサ14は、幾つかの検索基準に従って各新規タームを評価し、ほぼ同時に、例えば、単一のデバイス周期の間に其々の検索タームを評価してもよい。パラレルな有限ステートマシンは、ほぼ同時にデータストリーム12からタームを各々受信し、パラレルな有限ステートマシンの各々は、そのタームが、パラレルな有限ステートマシンを検索基準における次の検索タームへと進めるかどうかを決定してもよい。パラレルな有限ステートマシンは、比較的多数の検索基準(例えば、100以上、1000以上、もしくは10000以上)に従って、タームを評価してもよい。それらはパラレルに動作するため、データストリームを遅延させることなく、比較的高いバンド幅を有するデータストリーム12(例えば、64MB毎秒もしくは128MB毎秒より大きいかほぼ同一のデータストリーム12)に対して検索基準を適用してもよい。幾つかの実施形態においては、検索周期の継続期間は、検索基準の数によって増減しないため、検索基準の数はパターン認識プロセッサ14の性能にあまり影響を与えることはない。
【0014】
検索基準が満足されるとき(すなわち、最後の検索タームに進行してそれが一致した後)、パターン認識プロセッサ14は、中央処理装置(CPU)20などの処理装置に対して基準を満足したことを報告してもよい。中央処理装置20は、パターン認識プロセッサ14およびシステム10の他の部分を制御してもよい。
【0015】
システム10は、データのストリームを検索する種々のシステムもしくはデバイスのうちのいずれであってもよい。例えば、システム10は、データストリーム12を監視するデスクトップ、ラップトップ、ハンドヘルドもしくは他のタイプのコンピュータであってもよい。システム10は、ルータ、サーバ、もしくはクライアント(例えば、前述されたタイプのコンピュータのうちの一つ)などのネットワークノードであってもよい。システム10は、コピー機、スキャナ、プリンタ、ゲーム機、テレビ、セットトップビデオ分配もしくは録画システム、ケーブルボックス、パーソナルデジタルメディアプレイヤー、工場自動化システム、自動車用コンピュータシステムもしくは医療デバイスなどの他の種類の何らかの電子デバイスであってもよい。(これらの種々のシステムの実施例を記述するために使用される用語は、本明細書で使用される他の多くの用語と同様に、幾つかの指示対象を共有し、それ自体は、列挙された他の項目によって、範囲を狭めて構成されるべきではない。)
【0016】
データストリーム12は、ユーザもしくは他の存在が検索を望む可能性のある、種々のタイプの一つ以上のデータストリームであってもよい。例えば、データストリーム12は、インターネットを介して受信されたパケット、または、携帯電話ネットワークを介して受信された音声もしくはデータなど、ネットワークを介して受信されたデータのストリームであってもよい。データストリーム12は、画像センサ、温度センサ、加速度計などもしくはその組み合わせなど、システム10と連通するセンサから受信されたデータであってもよい。データストリーム12は、シリアルデータストリームとしてシステム10によって受信され、データは、時間的、語彙的、もしくは意味的に意義のある順序など、意味のある順序で受信される。または、データストリーム12は、パラレルにもしくはバラバラの順序で受信され、その後、例えば、インターネットを介して受信されたパケットを順序づけることによって、シリアルデータストリームへと変換される。幾つかの実施形態においては、データストリーム12は、タームをシリアルに提示してもよいが、各タームを表すビットはパラレルに受信されてもよい。データストリーム12は、システム10に対して外部ソースから受信されてもよいか、または、メモリデバイスにインテロゲート(伝送)し、格納されたデータからデータストリーム12を形成することによって形成されてもよい。
【0017】
データストリーム12におけるデータのタイプに依存して、異なるタイプの検索基準が設計者によって選択されてもよい。例えば、検索基準16は、ウイルス定義ファイルであってもよい。ウイルスもしくは他のマルウェアは特徴づけられ、マルウェアの態様は、データストリーム12がマルウェアを伝送しうるかどうかを示す検索基準を形成するために使用されてもよい。結果として生じる検索基準はサーバに格納され、クライアントシステムのオペレータはシステム10へと検索基準をダウンロードするサービスに登録してもよい。検索基準16は、異なるタイプのマルウェアが現れたとき、サーバから定期的にアップデートされてもよい。検索基準は、ネットワークを介して受信される可能性のある望ましくないコンテンツ(例えば、(スパムとしてよく知られている)迷惑電子メールもしくはユーザが望まない他のコンテンツ)を特定するために使用されてもよい。
【0018】
データストリーム12はシステム10によって受信されたデータに対して関心を持って、第三者によって検索されてもよい。例えば、データストリーム12は、著作物において生じる文字列、音声シーケンス、ビデオシーケンスに関して監視されてもよい。データストリーム12は、強制捜査もしくは民事手続きに関係する発話、もしくは使用者にとって関心のある発話に対して監視されてもよい。
【0019】
検索基準16は、例えば、CPU20もしくはパターン認識プロセッサ14によってアドレス可能なメモリにおいて、翻訳が可能であるデータストリーム12におけるパターンを含んでもよい。例えば、検索基準16は、対応するスペイン語がメモリに格納された英単語を各々特定してもよい。別の実施例においては、検索基準16は、例えば、デコードされたバージョンのデータストリーム12が使用可能であるMP3、MPEG4、FLAC、Ogg Vorbisなど、エンコードされたバージョンのデータストリーム12を特定してもよいし、その逆を特定してもよい。
【0020】
パターン認識プロセッサ14は、CPU20と共に(単一のデバイスなどの)単一の構成部分に統合されたハードウェアであってもよいし、別個の構成部分として形成されてもよい。例えば、パターン認識プロセッサ14は別個の集積回路であってもよい。パターン認識プロセッサ14は、“コプロセッサ”もしくは“パターン認識コプロセッサ”と称されてもよい。
【0021】
図2は、パターン認識プロセッサ14の一実施例を示す。パターン認識プロセッサ14は、認識モジュール22および出力バッファ51を有する集約モジュール24を含んでもよい。出力バッファ51は、リザルトバッファ25を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、検索タームとタームが一致することが検索基準を満足するかどうかを決定するように協力してもよい。
【0022】
認識モジュール22は、行デコーダ28および複数のフィーチャセル30を含んでもよい。各フィーチャセル30は検索タームを特定し、フィーチャセル30のグループは、検索基準を形成するパラレルな有限ステートマシンを形成してもよい。フィーチャセル30のコンポーネントは、検索タームアレイ32、検出アレイ34およびアクティブ化ルーティングマトリクス36を形成してもよい。検索タームアレイ32は複数の入力導体37を含み、入力導体37の各々は、行デコーダ28と通信する各フィーチャセル30を配置してもよい。
【0023】
行デコーダ28は、データストリーム12のコンテンツに基づいて、複数の入力導体37中の特定の導体を選択してもよい。例えば、行デコーダ28は、1タームを表現する可能性がある受信されたバイトの値に基づいて、256行のうちの1つをアクティブ化する1バイトから256への行デコーダであってもよい。00000000の1バイトタームは、複数の入力導体37のうち最も上の行に対応し、11111111の1バイトタームは、複数の入力導体37のうちの最も下の行に対応してもよい。したがって、異なる入力導体37は、どのタームがデータストリーム12から受信されるかに依存して選択されてもよい。異なるタームが受信されると、行デコーダ28は、前のタームに対応する行を非アクティブ化し、新規タームに対応する行をアクティブ化してもよい。
【0024】
検出アレイ34は、検索基準を完全にもしくは部分的に満足することを示す信号を集約モジュール24に対して出力する検出バス38に結合してもよい。アクティブ化ルーティングマトリクス36は、一致した検索基準における検索ターム数に基づいて、フィーチャセル30を選択的にアクティブ化する、ならびに非アクティブ化してもよい。
【0025】
集約モジュール24は、ラッチマトリクス40、集約ルーティングマトリクス42、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48および初期化ルーティングマトリクス50を含んでもよい。
【0026】
ラッチマトリクス40は、ある検索基準の一部を実施してもよい。例えば、幾つかの正規表現などの幾つかの検索基準は、最初に一致(もしくは複数の一致)が発生したときのみ計算する。ラッチマトリクス40は、一致が生じたかどうかを記録するラッチを含んでもよい。検索基準が満足されたとき、もしくはそれ以上満足されないと判定された、すなわち、その検索基準が満足されるより前に前の検索タームを再度マッチングさせる必要があるとき、ラッチは初期化の間にクリアされ、動作中に定期的に再初期化されてもよい。
【0027】
集約ルーティングマトリクス42は、アクティブ化ルーティングマトリクス36と類似した機能を果たしてもよい。集約ルーティングマトリクス42は、検出バス38における一致を示す信号を受信し、閾値論理マトリクス44に接続する異なるグループ論理ライン53へと信号を送信してもよい。集約ルーティングマトリクス42は、検索基準が満足された、もしくはこれ以上満足されないと判定されたとき、検出アレイ34の一部をリセットするために、検出アレイ34へと初期化ルーティングマトリクス50の出力を送信してもよい。
【0028】
閾値論理マトリクス44は、例えば、数を数える(カウントアップする)、または数を逆に数える(カウントダウンする)ように構成された32ビットカウンタなどの、複数のカウンタを含んでもよい。閾値論理マトリクス44は、初期カウントでロードされ、認識モジュールによって信号通知された一致時のカウント値から、カウントアップもしくはカウントダウンしてもよい。例えば、閾値論理マトリクス44は、ある長さの文字列の単語が現れた数を数えてもよい。
【0029】
閾値論理マトリクス44の出力は、論理積マトリクス46に対する入力であってもよい。論理積マトリクス46は、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してもよい。論理積マトリクス46は、正方行列として実施され、出力積の数は、閾値論理マトリクス44からの入力ラインの数と同一であるか、または、論理積マトリクス46は、出力とは異なる数の入力を有してもよい。結果として生じる積の値は、論理和マトリクス48に対する出力であってもよい。
【0030】
論理和マトリクス48は、和(例えば、ブール論理における“OR”関数)を選択的に生成してもよい。論理和マトリクス48もまた、正方行列として実施されるか、または、論理和マトリクス48は、出力とは異なる数の入力を有してもよい。入力は論理積であるため、論理和マトリクス48の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
【0031】
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス50は、正方行列として実行されるか、または、初期化ルーティングマトリクス50は、出力とは異なる数の入力を有してもよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの信号に応じて、例えば、検索基準が満足されたとき、または、検索基準がこれ以上満足されないと判定されたとき、パターン認識プロセッサ14の他の部分を再初期化してもよい。
【0032】
集約モジュール24は、閾値論理マトリクス44、集約ルーティングマトリクス42、および論理和マトリクス48の出力を受信する出力バッファ51を含んでもよい。集約モジュール24の出力は、出力バッファ51から出力バス26上のCPU20(図1)へと伝送されてもよい。幾つかの実施形態においては、出力マルチプレクサは、これらのコンポーネント42、44および48からの信号を多重化し、基準を満足したことを示す信号、もしくは検索タームの一致を示す信号をCPU20(図1)へと出力してもよい。他の実施形態においては、パターン認識プロセッサ14からのリザルトは、出力マルチプレクサを介して信号を伝送することなく報告されてもよいが、このことは、本明細書で記述されたあらゆる他の特性が省略される可能性がないことを示唆するものではない。例えば、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48もしくは初期化ルーティングマトリクス50からの信号は、出力バス26上をパラレルにCPUへと伝送されてもよい。
【0033】
図3は、検索タームセル54として本明細書で称されるコンポーネントである、検索タームアレイ32(図2)における単一のフィーチャセル30の一部を示す。検索タームセル54は、出力導体56および複数のメモリセル58を含んでもよい。各メモリセル58は、出力導体56および複数の入力導体37の中の導体の一つの両方へと結合されてもよい。入力導体37が選択されるのに応じて、各メモリセル58は、格納された値を示す値を出力し、出力導体56を介してデータを出力する。幾つかの実施形態においては、複数の入力導体37は“ワード線”と称され、出力導体56は“データ線”と称されてもよい。
【0034】
メモリセル58は、種々のタイプのメモリセルのうちのいずれを含んでもよい。例えば、メモリセル58は、トランジスタとキャパシタを有するダイナミックランダムアクセスメモリ(DRAM)セルなどの揮発性メモリであってもよい。トランジスタのソースおよびドレインは、其々、キャパシタのプレートおよび出力導体56へと接続され、トランジスタのゲートは入力導体37のうちの一つへと接続されてもよい。揮発性メモリの別の実施例においては、各メモリセル58は、スタティックランダムアクセスメモリ(SRAM)セルを含んでもよい。SRAMセルは、入力導体37の一つによって制御されるアクセストランジスタによって、出力導体56へと選択的に結合された出力を有してもよい。メモリセル58は、相変化メモリ(例えば、オボニックデバイス)、フラッシュメモリ、シリコン・酸化物・窒化物・酸化物・シリコン(SONOS)メモリ、磁気抵抗メモリもしくは他のタイプの不揮発性メモリなどの不揮発性メモリをも含んでもよい。メモリセル58は、フリップフロップ、例えば、論理ゲートによって形成されたメモリセルをも含んでもよい。
【0035】
図4および図5は、動作における検索タームセル54の一実施例を示す。図4は、セルの検索タームに一致しないタームを受信する検索タームセル54を示し、図5は、セルの検索タームに一致するタームを受信する検索タームセル54を示す。
【0036】
図4によって示されるように、検索タームセル54は、メモリセル58にデータを格納することによって、一つ以上のタームを検索するように構成されてもよい。メモリセル58は、例えば図3において、データストリーム12が提示する可能性のあるタームを各々表し、各メモリセル58は文字“a”で開始し、数字“9”で終了する単一の文字もしくは数字を表す。検索タームを満足するタームを表すメモリセル58は、第一の値を格納するようにプログラムされ、検索タームを満足するタームを表していないメモリセル58は、異なる値を格納するようにプログラムされてもよい。示された実施例においては、検索タームセル54は、文字“b”を検索するように構成される。“b”を表すメモリセル58は、1もしくは論理的なハイを格納し、“b”を表していないメモリセル58は、0、もしくは論理的なロウを格納するようにプログラムされてもよい。
【0037】
データストリーム12からのタームを検索タームと比較するために、行デコーダ28は、受信されたタームを表すメモリセル58に結合された入力導体37を選択してもよい。図4においては、データストリーム12は、小文字の“e”を示す。このタームは、8ビットASCIIコード形式でデータストリーム12によって示され、行デコーダ28は、行アドレスとしてこのバイトを解釈し、導体60に電圧を印加することによって、導体60上に信号を出力する。
【0038】
それに応じて、導体60によって制御されるメモリセル58は、メモリセル58が格納するデータを示す信号を出力し、その信号は出力導体56によって伝送されてもよい。この場合には、文字“e”は、検索タームセル54によって特定されたタームのうちの一つではないため、検索タームとは一致せず、検索タームセル54は0値を出力し、それは一致が見つからなかったことを示している。
【0039】
図5においては、データストリーム12は、文字“b”を示す。再度、行デコーダ28はこのタームをアドレスとして解釈し、行デコーダ28は導体62を選択してもよい。それに応じて、文字“b”を表すメモリセル58は、格納された値を出力し、この場合には、それは1であり、一致を示している。
【0040】
検索タームセル54は一度に一つ以上のタームを検索するように構成されてもよい。複数のメモリセル58は、1を格納するようにプログラムされ、一つ以上のタームと一致する検索タームを特定する。例えば、小文字“a”および大文字“A”を表すメモリセル58は、1を格納するようにプログラムされ、検索タームセル54は、いずれかのタームを検索してもよい。別の実施例においては、検索タームセル54は、いかなる文字が受信された場合にも一致を出力するように構成されてもよい。全メモリセル58は、1を格納するようにプログラムされてもよく、検索タームセル54は、検索基準におけるワイルドカードタームとして機能してもよい。
【0041】
図6−図8は、例えば一単語など複数ターム検索基準に従って検索する認識モジュール22を示す。具体的には、図6は一単語の最初の文字を検出する認識モジュール22を示し、図7は、第二の文字の検出を示し、図8は、最後の文字の検出を示す。
【0042】
図6によって示されるように、認識モジュール22は、単語“big”を検索するように構成されてもよい。3個の隣接するフィーチャセル63、64および66が示される。フィーチャセル63は、文字“b”を検出するように構成される。フィーチャセル64は、文字“i”を検出するように構成される。フィーチャセル66は、文字“g”を検出し、検索基準が満足されたことを示すように構成される。
【0043】
図6は、検出アレイ34のさらなる詳細をも示す。検出アレイ34は、各フィーチャセル63、64および66における検出セル68を含んでもよい。各検出セル68は、上述されたタイプのメモリセルのうちの一つ(例えば、フリップフロップ)のような、メモリセル70を含んでもよく、メモリセル70は、フィーチャセル63、64もしくは66がアクティブか非アクティブかを示す。検出セル68は、両方の検出セルがアクティブであり、一致を示す関連付けられた検索タームセル54から信号を受信したかどうかを示す信号を、アクティブ化ルーティングマトリクス36へと出力するように構成されてもよい。非アクティブなフィーチャセル63、64および66は、一致を無視してもよい。各検出セル68は、メモリセル70および出力導体56からの入力を有する、ANDゲートを含んでもよい。ANDゲートの出力は、検出バス38およびアクティブ化ルーティングマトリクス36の両方へ、またはそのどちらか一方へと送信されてもよい。
【0044】
今度は、アクティブ化ルーティングマトリクス36は、検出アレイ34におけるメモリセル70へと書き込むことによって、フィーチャセル63、64および66を選択的にアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、検索基準ならびに次にどの検索タームがデータストリーム12において検索されるかに従って、フィーチャセル63、64もしくは66をアクティブ化してもよい。
【0045】
図6においては、データストリーム12は文字“b”を示す。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“b”を表す導体62に接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル63は文字“b”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル63における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力して、検索基準のうちの第一の検索タームが一致したことを示す。
【0046】
図7によって示されるように、第一の検索タームが一致した後、アクティブ化ルーティングマトリクス36は、検出セル68におけるメモリセル70へと1を書き込むことによって、次のフィーチャセル64をアクティブ化してもよい。次のタームが第一の検索タームを満足する場合(例えば、タームのシーケンス“bbig”が受信された場合)アクティブ化ルーティングマトリクス36はフィーチャセル63のアクティブ状態を維持してもよい。検索基準のうちの第一の検索タームは、データストリーム12が検索される時間のうちの一部もしくは実質的に全期間の間、アクティブ状態に維持されてもよい。
【0047】
図7においては、データストリーム12は認識モジュール22へ文字“i”を出力する。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“i”を表す導体72へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル64は文字“i”を検出するように構成され、メモリセル70によって示されるようにアクティブであるため、フィーチャセル64における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力し、検索基準の次の検索タームが一致したことを示す。
【0048】
続いて、図8に示されるように、アクティブ化ルーティングマトリクス36はフィーチャセル66をアクティブ化してもよい。次のタームを評価する前に、フィーチャセル64は非アクティブ化されてもよい。フィーチャセル64は、その検出セル68によって非アクティブ化され、検出周期の間そのメモリセル70をリセットするか、または、例えば、アクティブ化ルーティングマトリクス36はフィーチャセル64を非アクティブ化してもよい。
【0049】
図8においては、データストリーム12は行デコーダ28へと、ターム“g”を出力し、行デコーダ28はターム“g”を表す導体74を選択する。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“g”を表す導体74へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル66は文字“g”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル66における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力し、検索基準の最後の検索タームが一致したことを示す。
【0050】
検索基準の終わりもしくは検索基準の一部は、アクティブ化ルーティングマトリクス36もしくは検出セル68によって識別されてもよい。これらのコンポーネント36もしくは68は、そのフィーチャセル63、64もしくは66が検索基準の最終検索タームか検索基準のコンポーネントかを識別するかを示すメモリを含んでもよい。例えば、検索基準は、“cattle”という単語が二度現れる全ての文を特定し、認識モジュールは、“cattle”の出現回数を数える集約モジュールへと、文内の各々の“cattle”の出現を示す信号を出力し、検索基準が満足されたかどうかを判定する。
【0051】
フィーチャセル63、64もしくは66は幾つかの条件下でアクティブ化されてもよい。フィーチャセル63、64もしくは66は、“常にアクティブ”であってもよく、それは、全検索の間、もしくは実質的に全ての検索の間アクティブ状態のままであることを意味する。常にアクティブなフィーチャセル63、64もしくは66の一実施例は、検索基準の第一のフィーチャセル、例えば、フィーチャセル63である。
【0052】
フィーチャセル63、64もしくは66は、“要求されたときアクティブ”であってもよく、それは、幾つかの先行する条件が一致したとき、例えば、検索基準における先行する検索タームが一致したときに、フィーチャセル63、64もしくは66がアクティブであることを意味する。一実施例は、図6−図8におけるフィーチャセル63によって要求されたときにアクティブであるフィーチャセル64と、フィーチャセル64によって要求されたときにアクティブであるフィーチャセル66である。
【0053】
フィーチャセル63、64もしくは66は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、それ自身をアクティブ化することを意味する。例えば、いかなる数のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、文字“x”に到達するまで、文章“123456xy”をアクティブ化したままであってもよい。自己アクティブ化されたフィーチャセルの検索タームが一致するたび、自己アクティブ化されたフィーチャセルは検索基準における次のフィーチャセルをアクティブ化してもよい。したがって、常にアクティブなフィーチャセルは、自己アクティブ化するフィーチャセルおよび要求されたときにアクティブなフィーチャセルから形成されてもよい。自己アクティブ化フィーチャセルは、1を格納するメモリセル58の全てにプログラムされてもよく、各ターム後に要求されたときアクティブなフィーチャセルを繰り返しアクティブ化してもよい。幾つかの実施形態においては、各フィーチャセル63、64および66は、フィーチャセルが常にアクティブかどうかを識別する検出セル68もしくはアクティブ化ルーティングマトリクス36におけるメモリセルを含んでもよく、それによって、単一のフィーチャセルから常にアクティブなフィーチャセルを形成する。
【0054】
図9は、第一の検索基準75および第二の検索基準76に従ってパラレルに検索するように構成された認識モジュール22の一実施例を示す。本実施例においては、第一の検索基準75は、単語“big”を識別し、第二の検索基準76は、単語“cab”を識別する。データストリーム12からの現在のタームを示す信号は、ほぼ同時に各検索基準75および76におけるフィーチャセルへと通信されてもよい。各入力導体37は、検索基準75および76の双方へと及ぶ。結果として、幾つかの実施形態においては、検索基準75および76の双方は、ほぼ同時に現在のタームを評価してもよい。このことによって、検索基準の評価が加速すると考えられる。他の実施形態は、より多くの検索基準をパラレルに評価するように構成されたより多くのフィーチャセルを含んでもよい。例えば、幾つかの実施形態は、パラレルに動作する100、500、1000、5000もしくは10000以上のフィーチャセルを含んでもよい。これらのフィーチャセルは、ほぼ同時に何百、もしくは何千もの検索基準を評価してもよい。
【0055】
異なる数の検索タームを有する検索基準は、より多くのもしくはより少ないフィーチャセルを検索基準へと割り当てることによって形成されてもよい。単純な検索基準は、フィーチャセルの形式で、複雑な検索基準よりも、より少ないリソースを消費してもよい。このことによって、ほぼ同一の多数のコアを有し、複雑な検索基準を評価するように全て構成されたプロセッサと比較して、パターン認識プロセッサ14(図2)のコストを低減すると考えられる。
【0056】
図10−図12は、アクティブ化ルーティングマトリクス36のより複雑な検索基準とフィーチャの一実施例の双方を示す。アクティブ化ルーティングマトリクス36は、複数のアクティブ化ルーティングセル78を含んでもよく、アクティブ化ルーティングセル78のグループは、各フィーチャセル63、64、66、80、82、84および86に関連付けられてもよい。例えば、各フィーチャセルは、5、10、20、50個もしくはそれ以上のアクティブ化ルーティングセル78を含んでもよい。アクティブ化ルーティングセル78は、先行する検索タームが一致するとき、検索基準における次の検索タームへとアクティブ化信号を送信するように構成されてもよい。アクティブ化ルーティングセル78は、同一のフィーチャセル内の隣接するフィーチャセルもしくは他のアクティブ化ルーティングセル78へとアクティブ化信号を送信するように構成されてもよい。アクティブ化ルーティングセル78は、どのフィーチャセルが検索基準における次の検索タームに対応するかを示すメモリを含んでもよい。
【0057】
図10−図12に示されるように、認識モジュール22は、単一の単語を特定する基準よりも複雑な検索基準に従って検索するように構成されてもよい。例えば、認識モジュール22は、接頭辞88で開始し、2つの接尾辞90もしくは92のうちの一つで終了する単語を検索するように構成されてもよい。示された検索基準は、文字“c”および“l”のシーケンスで開始し、文字シーケンス“ap”もしくは文字シーケンス“oud”のいずれかで終了する単語を特定する。これは、複数の対象表現、例えば、単語“clap”もしくは単語“cloud”を特定する検索基準の一実施例である。
【0058】
図10においては、データストリーム12は、認識モジュール22に対して文字“c”を示し、フィーチャセル63は両方アクティブであり、一致を検出する。それに応じて、アクティブ化ルーティングマトリクス36は、次のフィーチャセル64をアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、フィーチャセル63が検索基準における第一の検索タームであるとき、フィーチャセル63のアクティブ状態を維持してもよい。
【0059】
図11においては、データストリーム12は、文字“l”を示し、フィーチャセル64は、一致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第一の接尾辞90の第一のフィーチャセル66および第二の接尾辞92の第一のフィーチャセル82の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞は一つ以上の接尾辞をアクティブ化してもよい。
【0060】
続いて、図12においては、データストリーム12は、認識モジュール22に対して文字“o”を示し、第二の接尾辞92のフィーチャセル82は、一致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66が非アクティブになると認められると、第一の接尾辞90の検索は終了してもよい。図10−図12に示されたステップは、文字“u”および“d”へと継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
【0061】
図13は、一実施形態に従う電子装置またはシステムのブロック図である。参照数字100によって一般的に参照されるその電子装置またはシステムは、図13に示される幾つかのまたは全ての構成部分を有する任意の様々なタイプのシステムである。例えば、様々は実施形態において、システム100は、様々なコンピュータ(例えば、パーソナルコンピュータ、サーバ、またはネットワーク設備)、ネットワーク装置(例えば、アクセスポイント、ルータ、またはモデム)、個人用整理手帳、携帯電話などのようなもののいずれでもよい。
【0062】
システム100は、電源104を含んでよい。それは例えば、バッテリ、AC電源アダプタ、またはDC電源アダプタである。他の様々な装置は、システム100が実行する機能に依存して、プロセッサ102に接続されてよい。例えば、入力装置106は、プロセッサ102に接続されて、ユーザからの入力を受信する。入力装置106は、ユーザインタフェースを含んでよい。それは、ボタン、スイッチ、キーボード、ライトペン、マウス、デジタイザ、音声認識システム、あるいはその他の多くの入力装置のいずれでもよい。ディスプレイ108はまた、プロセッサ102に接続され、ユーザに情報を提供する。ディスプレイ108は、例えば、LCDディスプレイ、CRTディスプレイ、LEDを含んでよい。
【0063】
RFサブシステム/ベースバンドプロセッサ110は、プロセッサ102に接続されて無線通信機能を提供することができる。RFサブシステム/ベースバンドプロセッサ110は、RF受信機およびRF送信器(示されない)に接続されるアンテナを含んでよい。さらに、通信ポート112は、電子システム100と周辺装置114との間の通信インタフェースを与えるように適合されてよい。周辺装置114は、ドッキングステーション、拡張ベイ、または他の外部構成部分を含んでよい。幾つかの実施形態において、周辺装置114は、図1−図12に関連して上述されたようなパターン認識機能を含んでよい。
【0064】
プロセッサ102は、その動作を容易にする様々なタイプのメモリ装置に接続される。例えば、プロセッサ102は、揮発性メモリ116、不揮発性メモリ118、またはその両方のような様々なメモリ装置に接続される。揮発性メモリ116は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダミアクセスメモリ(DRAM)、またはダブルデータレート(DDR)メモリ世代(例えば、DDR1、DDR2、DDR3等)のような様々なメモリを含んでよい。不揮発性メモリ118は、例えば、電子的プログラム可能リードオンリーメモリ(EPROM)またはフラッシュメモリのような様々なタイプのメモリを含んでよい。加えて、不揮発性メモリは、ソリッドステートメモリ記憶装置の代わりにまたはそれに加えて、テープまたはディスクドライブメモリのような光学的または磁気的記憶装置を含んでよい。そのような記憶メディアは、プロセッサ102によって実行される様々な応用命令を含んで、以下に議論されるような装置のエンディアン性(endian)の管理に関する機能を含む多数の機能を可能にし実行する。
【0065】
幾つかの実施形態において、システム100は、一般的に図14に図示されるような追加装置122と通信することができる。幾つかの実施形態において、追加装置122は、他の装置もまた想定できるが、ルータ、モデム、または幾つかの他のネットワーク装置であってよい。システム100(またはその構成部分)と装置122の間の通信は、任意の適切なデータバス124を通して実行される。幾つかの実施形態において、データバス124は、それらに限定されないが、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)バス、DDRメモリバス(例えば、DDR1バス、DDR2バス、DDR3バス等)、または幾つかの他のマルチバイト並列バスを含んでよい。装置122は、ここで図示される実施形態においては、システム100とは明確に区別されて示されているが、装置122およびシステム100(または装置122またはシステム100の様々な構成部分)は、共通の装置またはシステムに統合されてもよい。例えば、一実施形態においては、システム100は、モデムを含む装置122と通信するコンピュータを含んでよい。他の実施形態においては、しかしながら、装置122は、コンピュータシステム100に統合されてもよい。
【0066】
装置122は、1つのコア論理モジュール126、および装置122と協働してその意図した機能の実行を可能にする1つ以上のレジスタを含むことができる。例えば、一実施形態において、装置122は、コア論理モジュール126およびレジスタ128が、その他の機能を含み、図1−図12に関連する上述した機能を提供するパターン認識装置を含んでよい。
【0067】
一般的に上述したように、様々な電子装置は、ビッグエンディアンモードまたはリトルエンディアンモードに従ってデータのシーケンスを読み、書き、そして解釈することができる。ここに提供された例は、ビッグエンディアンおよびリトルエンディアンバイトオーダに関連して記述され図示されているが、これらの例から本技術はビッグエンディアンおよびリトルエンディアンビットオーダ、ワードオーダのようなものにもまた適用してもよいことを理解されたい。
【0068】
一実施形態において、コア論理モジュール126は、以下にさらに詳細に議論されるようにハードウェア入力に基づいてまたはソフトウェアを介して選択される様々な装置エンディアンモードに従って、データをレジスタ128に対して書き込みまたは読み出されることを可能にするレジスタインタフェース130を含む。ここで図示される実施形態では、入力/出力回路132は、データバス124を介して、装置122とシステム100の構成部分との間の通信を容易にする。ここで再び言及するが、装置122(またはその構成部分)は、システム100に対して分離されまたは総合することができる。そして、入力/出力回路132は、上述したような並列バスを含む任意の様々なタイプの内蔵または外付けデータバスを介して通信するように構成されてよいことを理解されたい。
【0069】
装置122は、コア論理モジュール126または装置122の他の構成部分に制御信号を供給するように構成されるハードウェア入力ピン134を含むことができる。さらに、一実施形態において、ハードウェア入力ピン134は、装置122のエンディアンモードを制御する“エンディアン性”入力ピン136を含むことができる。例えば、装置122は、もし“エンディアン性”入力ピン136上の信号が“ロウ”(例えば接地)であるときにはリトルエンディアンモードで動作し、もしその信号が“ハイ”であるときにはビッグエンディアンモードで動作するように構成してよい。
【0070】
説明のために、32ビットデータ値142がビッグエンディアンモードおよびリトルエンディアンモードのそれぞれに従ってどのようにストアされるかの例が図15に示される。本例では、値142は、16進フォーマット:0x0a0b0c0dというフォーマットで記述されている。一般的にテーブル144に示されるように、そのような値をストアするために、ビッグエンディアンシステムは、典型的には、最上位バイト(すなわち、0x0a)を1つのバイトアドレスにストアし、他のバイト(すなわち、0x0b、0x0c、0x0d)が引き続いて増加するバイトアドレスにストアされる。反対に、一般的にテーブル146に示されるように、リトルエンディアンシステムは、典型的には、最下位バイト(すなわち、0x0d)を特定のバイトアドレスにストアし、それから、残りのバイトを、相対的な位の高さに従って、引き続いて増加するバイトアドレスにストアする。
【0071】
ビッグエンディアンおよびリトルエンディアンシステムは、シーケンシャルデータが異なる順番で書かれ、読まれ、そして解釈されることを期待しているため、もしシステム100および装置122が互いに異なるエンディアンモードで動作するときには、システム100または装置122の一つからのデータ伝送は、他方によって誤解釈される可能性がある。例えば、値142がシーケンシャルに(例えば、一度に1バイトまたは一度に1ビットで)送信される一実施形態において、ビッグエンディアン装置122はデータバスを介して値142の0x0a構成要素(すなわち、最上位バイト)を最初に送信し、それに0x0b、0x0c、および0x0d構成要素が続く(それらは位の高さが低くなってゆく)。しかしながら、もしシステム100がリトルエンディアンモードで動作するならば、そのシステムは、最初に0x0a構成要素を受信するが、このバイトを(ビッグエンディアン装置122によって解釈される最上位バイトではなく)最下位バイトとして解釈し、0x0b、0x0c、0x0dを(位が低くなってゆくのではなく)位が高くなってゆく構成要素であると解釈する。このように、ある修正がない形態では、ビッグエンディアン装置122は、送信データを0x0a0b0c0dと解釈したのに対して、リトルエンディアンシステム100は受信データが値:0x0d0c0b0aを有するとして解釈する。
【0072】
幾つかの実施形態において、装置122のレジスタインタフェース130は、異なるエンディアンモードで動作するシステム100と装置122の間で通信されるデータを翻訳するように構成することができる。一実施形態においては、装置122のエンディアンモードは、一般的に図16に図示されるように、方法148に従って処理される。この方法148は、一般的に、装置122の1つ以上のレジスタ128にアクセスするステップ150を含んでよく、そして、ステップ152において、図17および図18に関連して以下でさらに詳しく議論されるように、装置122が動作する現在のエンディアンモードを決定することができる。以下でまた議論されるように、ひとたび装置122のエンディアンモードが決定されれば、装置122のエンディアンモードが変更されるようにすることができる。
【0073】
一実施形態に従えば、ステップ150においてアクセスされる1つ以上のレジスタは、一般的に図17に図示されるステータスレジスタ156を含んでよい。本技術に十分に従えば、他のレジスタ幅を用いてよいことを理解されたいが、ステータスレジスタ156は、32ビットレジスタとして図示されている。ステータスレジスタ156は、32ビット位置(ビット位置0からビット位置31)を含み、それぞれは各データビットE0−E31をストア可能なメモリセルに関連付けられる。一実施形態においては、データビットE0−E31は、図示されている仕方でバイト158、160、162、および164にグループ化され、1バイト増加のような任意の適当な増加量で、読み出しまたは書き込まれてよい。
【0074】
ステータスレジスタ156の各ビット位置および/またはビット位置のグループは、特定の特性または機能と関連付けられてよい。例えば、テーブル166に一般的に示されるように、ビット位置7は、データビットE7の値が現在の装置エンディアンモードを指し示すように、装置122の現在のエンディアンモードと関連付けられてよい。本実施形態において、データビットE7は、“0”にセットされてその装置がリトルエンディアンモードで動作することを示し、あるいは、“1”にセットされてその装置がビッグエンディアンモードで動作することを示すようにしてよい。上述のように、もしシステム100および装置122が同じエンディアンモードで動作するときには、データバイト158、160、162、および164はシステム100に転送され、そのシステムはデータビットE7がステータスレジスタ156のビット位置7にストアされると認識する。しかしながら、システム100および装置122が異なるエンディアンモードで動作するときには、システム100は、そのデータを受信したときに、これらのバイトを逆順に解釈し、データビットE7をビット位置31に関連付ける。このように、もしシステム100と装置122が異なるエンディアンモードで動作せずシステム100と装置122が共通のエンディアンモードを合意すれば、システム100による装置122からのステータスレジスタ156のビット位置7におけるデータビットの読出しの試みは、データビットE7を正確に返すことができる。
【0075】
従って、一実施形態において、一般的にテーブル168に示されるように、ステータスレジスタ156は、ビット位置31において二重の現在の装置エンディアンモードビットを含むことができる。この方法では、バイト158、160、162、および164のバイトの順番がシステム100によってたとえ異なって(例えば、位の高さを反対の順番で)解釈されたとしても、システム100によるビット位置7の読出しのどの試みも、それぞれがまったく同様に装置122の現在のエンディアンモードを識別するように指し示すデータビットE7またはデータビットE31の何れかを返す。このように、システム100は、バイトオーダエンディアン性の相違にかかわらず、ビット位置7におけるデータの値の読出しの試みに基づいて、装置122のエンディアンモードを検出することができる。同様に、他の実施形態においては、装置の現在のエンディアンモードがさらに他のビット位置によって与えられて、ビットオーダエンディアン性のような他のタイプのエンディアン性を記述するようにしてもよい。
【0076】
上述のように、異なるエンディアンモードにおける装置122とシステム100の動作は、結果として通信エラーを生じる可能性がある。そのうえ、第1のエンディアンモードで動作するシステムが異なるエンディアンモードで動作する装置122を(例えば、レジスタ128に値を書き込むことによって)構成しようとした場合、装置122はシステム100からの構成データを誤解釈し、装置122に意図するものとは正反対の仕方で構成させる結果を生ずる可能性がある。従って、一実施形態において、装置122は、パワーオンまたはリセットして、その装置への何れの構成の書込みをも実行する必要なく、(システム100によるような)ステータスレジスタ156の読出しを可能にするデフォルトモードになるように構成される。特に、このことは、システム100による装置122のエンディアン性の早期の決定を容易にし、また、一般的に装置122の構成を容易にする。一方では、エンディアン性のミスマッチによる構成上のエラーの起こりやすさを減少させることができる。
【0077】
ステータスレジスタ156は、他の機能や特性の指示をもまた与えてもよい。幾つかの実施形態において、装置122のエンディアン性は、ハードウェア入力(ここではハードウェアエンディアンモードと称される)、またはソフトウェア入力(ここではソフトウェアエンディアンモードと称される)の何れかによってコントロールされてもよい。そして、ステータスレジスタ156の他のビット位置は、現在の制御方法の詳細を指示してもよい。例えば、一般的にテーブル170として示されるように、ステータスレジスタ156のビット位置29は、装置122のエンディアン性がハードウェアによって(例えば入力ピン136によって)制御されるのか、ソフトウェアレジスタビットによって制御されるのかを決定するために読み出されてもよい。他の実施形態では、ソフトウェアレジスタビットの制御が、図18に関連して以下に議論される制御レジスタ186のような異なるレジスタに含まれる。あるいは、他の実施形態では、そのような制御レジスタビットは、ステータスレジスタ156に含まれることができる。
【0078】
ステータスレジスタ156のビット位置28および30は、それぞれソフトウェアおよびハードウェアエンディアンモードを決定するために読み出されてもよい。そのような実施形態においては、データビットE7およびE31の装置エンディアンモードは、もしデータビットデータビットE29が“0”にセットされた場合(装置エンディアン性のハードウェア制御を指示している場合)にはE30にマッチし、もしデータビットデータビットE29が“1”にセットされた場合(装置エンディアン性のソフトウェア制御を指示している場合)にはE28にマッチする。テーブル176および178として図示されるように、ステータスレジスタ156の他のデータビットは、他の機能や特性のために使用され、あるいは未使用とされる(または将来の使用のために予約される)。
【0079】
上述のように、装置122は、ビッグエンディアンモードまたはリトルエンディアンモードの何れかで動作するように構成してよい。幾つかの実施形態において、レジスタインタフェース130は、選択された装置エンディアンモードに基づいて、デバイス122に対するデータ入力および出力のハードウェアによる変換を提供する。装置エンディアンモードは、装置122へのハードウェア入力(例えば、エンディアン性入力ピン136)によって、またはデバイス122へのソフトウェア入力によって、あるいはその両方によって選択されてよい。例えば、装置122は、装置122に対するエンディアンモードを選択するための、そして装置エンディアンモードがハードウェア入力によって制御されるのかソフトウェア入力によって制御されるのかを指示するためのレジスタ128中の1つ以上のレジスタビットを含んでよい。
【0080】
さらなる例として、レジスタ128は一実施形態に従って図18に一般的に図示されるようなレジスタビットを有する制御レジスタ186を含んでよい。制御レジスタ186もまた、説明のために32ビットレジスタとして図示されているが、他の実施形態においては他のレジスタ幅も選択できる。加えて、ステータスレジスタ156および制御レジスタ186のある例がここでは説明のために与えられているが、これらのレジスタのビット位置に関連する様々な特性および機能は、各レジスタの中で変更され、異なるレジスタに切り替えられ、あるいは単一のレジスタに結合されるようにすることができることに留意されたい。図示された制御レジスタ186は、それぞれのデータビットF0−F31のストアを可能とする32ビット位置(ビット位置0からビット位置31)を含む。本実施形態においては、制御レジスタ186のデータビットは、バイト188、190、および194にグループ化される。これらのデータバイトは、1バイト増加量で、あるいは任意の他の適当な増加量(例えば、1ビット以上の増加量、1ニブル以上の増加量、または複数バイトの増加量)で、制御レジスタ186に対して書き込まれまたは読み出されてよい。
【0081】
テーブル196に一般的に示されるように、データビットF29は、(システム100によるようにして)、一実施形態において、“0”にセットされることで装置のエンディアンモードがハードウェア入力によって(例えば、エンディアン性入力ピン136の信号レベルに基づいて)制御され、“1”にセットされることで装置のエンディアンモードがソフトウェアによって(例えば、他のレジスタビットをセットして装置122のエンディアンモードを選択することにより)制御されるようにしてもよい。例えば、一般的にテーブル198に示されるように、データビットF28は、“0”にセットされることで装置122のリトルエンディアン動作を選択し、“1”にセットされることで装置122のビッグエンディアン動作を選択するようにしてもよい。そのような実施形態において、もしデータビットF29が“0”にセットされているなら、装置122は、エンディアン性入力ピン136上の信号に従って制御されるデフォルトエンディアンモードに従って動作してよい。しかし、このデフォルトモードはデータビットF29を“1”にセットすることによってオーバーライドされることができる。一般的にテーブル200および202に示されるように、制御レジスタ186の他のデータビットは、他の機能を制御するために使用されてもよい、あるいは、未使用にされおよび将来の使用のために予約されてもよい。加えて、レジスタ128のデータビットF28、または任意の他のデータビットは、システム100または装置122のソフトウェアドライバ、ファームウェア、または他のソフトウェアによって自動的にセットされてもよく、あるいは、そのようなソフトウェアを介してユーザによって手動でセットされてもよい。
【0082】
幾つかの実施形態のレジスタインタフェース130は、装置122のエンディアンモードを制御するように構成できるため、そのような実施形態は、システム100や他の装置に通信データのソフトウェアまたはハードウェアによる変換を実行することを要求することなく、装置122とシステム100の間の効率的な通信を可能にすることを認識されたい。さらに、そのような実施形態は、一般的に、装置122のエンディアン性を制御する柔軟な方法を提供し、ビッグエンディアンシステムまたはリトルエンディアンシステムの何れかと接続して効率的に動作することを可能にすることができる。
【0083】
本発明は、種々の改変および代替形式を受け入れる余地があるが、本明細書では、例示の目的のために、具体的な実施形態が図面において示され、詳細に説明されてきた。しかしながら、本発明は、開示された特定の形式に限定されることを意図されるものではないことを理解されたい。それよりもむしろ、本発明は、以下に添付された請求項によって定義されるような、本発明の趣旨および範囲内にある全ての改変、均等物および代替物を包含するものである。
【特許請求の範囲】
【請求項1】
装置であって、
複数のメモリセルを含み、複数のデータビットを受信してストアするように構成され、前記装置のエンディアンモードが2つの各ビット位置にストアされた少なくとも2つのデータビットの各々によって表されるレジスタと、
前記装置からの複数のデータビットの通信を容易にするように構成された入力/出力回路と、
を含むことを特徴とする装置。
【請求項2】
前記装置は、前記装置を構成することなく前記レジスタの読出しを可能とするデフォルトモードへとパワーオンまたはリセットするように構成される、
ことを特徴とする請求項1に記載の装置。
【請求項3】
前記少なくとも2つの各ビット位置は、構成部分に対して、前記装置からの複数のデータビットを受信して、もし前記構成部分が第1のエンディアンモードで動作するときには、前記少なくとも2つの同様のデータビットの第1のデータビットが前記装置のエンディアンモードを表していると認識することを可能にし、および/または、もし前記構成部分が第2のエンディアンモードで動作するときには、前記少なくとも2つの同様のデータビットの第2のデータが前記装置のエンディアンモードを表していると認識することを可能にする、
ことを特徴とする請求項1に記載の装置。
【請求項4】
前記第1のエンディアンモードはリトルエンディアンモードであり、前記第2のエンディアンモードはビッグエンディアンモードである、
ことを特徴とする請求項3に記載の装置。
【請求項5】
前記装置は、2つの異なるエンディアンモードのうちの1つで選択的に動作するように構成される、
ことを特徴とする請求項1に記載の装置。
【請求項6】
前記装置は、前記装置のハードウェア入力上で受信された信号に応答して、前記2つの異なるエンディアンモードのうちの選択された1つで動作するように構成される、
ことを特徴とする請求項5に記載の装置。
【請求項7】
前記装置は、前記ハードウェア入力上で受信された前記信号のソフトウェアによるオーバーライドを可能にする、
ことを特徴とする請求項6に記載の装置。
【請求項8】
前記ハードウェア入力上で受信された前記信号をオーバーライドするように構成された実行可能ルーチンを含むメモリ媒体を含む、
ことを特徴とする請求項7に記載の装置。
【請求項9】
前記装置は、前記レジスタの所定のビット位置、および/または追加的なレジスタの所定のビット位置にストアされたソフトウェアオーバーライドデータに従って、前記ソフトウェアオーバーライドが有効にされるように構成される、
ことを特徴とする請求項7に記載の装置。
【請求項10】
前記装置は、もし前記ソフトウェアオーバーライド有効にされた場合に、前記装置のエンディアンモードがソフトウェアエンディアン選択ビットに従って制御されるように構成される、
ことを特徴とする請求項9に記載の装置。
【請求項11】
前記ソフトウェアエンディアン選択ビットは、前記追加的なレジスタの1つのビット位置にストアされる、
ことを特徴とする請求項10に記載の装置。
【請求項12】
前記入力/出力回路は、データバスに接続されるように構成される、
ことを特徴とする請求項1に記載の装置。
【請求項13】
前記データバスは、シンクロナスダイナミックランダムアクセスメモリバス、ダブルデータレートメモリバス、または幾つかの他の複数バイト並列バスのうちの少なくとも1つを含む、
ことを特徴とする請求項12に記載の装置。
【請求項14】
前記装置は、パターン認識装置を含む、
ことを特徴とする請求項1に記載の装置。
【請求項15】
装置であって、
複数のレジスタと、
前記複数のレジスタに対してデータを読出し、およびデータを書き込み、リトルエンディアンモードまたはビッグエンディアンモードのうちの1つで選択的に動作するように構成されたレジスタインタフェースと、
を含むことを特徴とする装置。
【請求項16】
エンディアンモードハードウェアピンを含み、前記レジスタインタフェースは前記エンディアンモードハードウェアピン上で受信された信号に基づくデフォルトエンディアンモードで動作する、
ことを特徴とする請求項15に記載の装置。
【請求項17】
前記装置は、前記デフォルトエンディアンモードとは異なるエンディアンモードにおける前記レジスタインタフェースの動作のために、前記デフォルトエンディアンモードがオーバーライドされることを可能にするように構成される、
ことを特徴とする請求項16に記載の装置。
【請求項18】
前記複数のレジスタのうちの1つのレジスタが前記デフォルトエンディアンモードのオーバーライドを制御するためのレジスタビットを含む、
ことを特徴とする請求項17に記載の装置。
【請求項19】
前記レジスタインタフェースは、選択された装置エンディアンモードに基づいて前記複数のレジスタに対して読み出されおよび/または書き込まれるデータを翻訳するように構成される、
ことを特徴とする請求項15に記載の装置。
【請求項20】
システムであって、
プロセッサと、
前記プロセッサによる実行のためにそこにストアされるアプリケーション命令を含む記憶装置と、
データバスによって前記プロセッサに通信可能に接続された追加的な装置と、
前記プロセッサおよび前記データバスは所定のエンディアンモードに従って動作するように構成され、前記追加的な装置は前記所定のエンディアンモードまたは異なるエンディアンモードの何れかで動作するように構成され、前記システムは前記追加的な装置が前記所定のエンディアンモードで動作するように自動的に構成するように構成される、
ことを特徴とするシステム。
【請求項21】
前記プロセッサを含むコンピュータを含む、
ことを特徴とする請求項20に記載のシステム。
【請求項22】
前記追加的な装置は、前記コンピュータに通信可能に接続されたルータまたはモデムの少なくとも1つを含む、
ことを特徴とする請求項21に記載のシステム。
【請求項23】
前記コンピュータは前記記憶装置を含む、
ことを特徴とする請求項21に記載のシステム。
【請求項24】
前記コンピュータは前記追加的な装置を含む、
ことを特徴とする請求項21に記載のシステム。
【請求項25】
前記記憶装置内にストアされた前記アプリケーション命令は前記追加的な装置の現在のエンディアンモードを検出するための命令を含む、
ことを特徴とする請求項20に記載のシステム。
【請求項26】
前記記憶装置内にストアされた前記アプリケーション命令は前記追加的な装置のハードウェアピン上に入力されたエンディアンモード選択信号をオーバーライドするための命令を含む、
ことを特徴とする請求項20に記載のシステム。
【請求項27】
装置のレジスタにストアされたデータにアクセスし、
前記レジスタにストアされた複数のエンディアンモードデータビットのうちの少なくとも1つのエンディアンモードデータビットから前記装置のエンディアンモードを決定する、
ことを含むことを特徴とする方法。
【請求項28】
前記装置のエンディアンモードを決定することは、前記アクセスされたデータのエンディアンモードビット位置から少なくとも1つの前記エンディアンモードデータビットをプロセッサを介して読み出すことを含む、
ことを特徴とする請求項27に記載の方法。
【請求項29】
前記装置のエンディアンモードを決定することは、もし前記アクセスされたデータが第1のエンディアンモードに従って読み出された場合には第1のエンディアンモードデータビットを読み出し、もし前記アクセスされたデータが第2のエンディアンモードに従って読み出された場合には第2のエンディアンモードデータビットを読み出すことを含む、
ことを特徴とする請求項28に記載の方法。
【請求項30】
前記装置のエンディアンモードを変更することを含む、
ことを特徴とする請求項27に記載の方法。
【請求項31】
前記装置のエンディアンモードを変更することは、ソフトウェアによってデフォルトエンディアンモードをオーバーライドすることを含む、
ことを特徴とする請求項30に記載の方法。
【請求項32】
デフォルトエンディアンモードをオーバーライドすることは、前記装置のハードウェア入力上の信号によって選択されたデフォルトエンディアンモードをオーバーライドすることを含む、
ことを特徴とする請求項31に記載の方法。
【請求項33】
前記装置のエンディアンモードを変更することは、前記レジスタまたは追加的なレジスタにストアされた追加的なデータビットの値に従って前記エンディアンモードを変更することを含む、
ことを特徴とする請求項30に記載の方法。
【請求項34】
ソフトウェアドライバ、ファームウェア、または他のソフトウェアを介して前記追加的なデータビットの値を自動的にセットすることを含む、
ことを特徴とする請求項33に記載の方法。
【請求項35】
ソフトウェアドライバ、ファム、または他のソフトウェアを介して前記追加的なデータビットの値を手動でセットすることを含む、
ことを特徴とする請求項33に記載の方法。
【請求項1】
装置であって、
複数のメモリセルを含み、複数のデータビットを受信してストアするように構成され、前記装置のエンディアンモードが2つの各ビット位置にストアされた少なくとも2つのデータビットの各々によって表されるレジスタと、
前記装置からの複数のデータビットの通信を容易にするように構成された入力/出力回路と、
を含むことを特徴とする装置。
【請求項2】
前記装置は、前記装置を構成することなく前記レジスタの読出しを可能とするデフォルトモードへとパワーオンまたはリセットするように構成される、
ことを特徴とする請求項1に記載の装置。
【請求項3】
前記少なくとも2つの各ビット位置は、構成部分に対して、前記装置からの複数のデータビットを受信して、もし前記構成部分が第1のエンディアンモードで動作するときには、前記少なくとも2つの同様のデータビットの第1のデータビットが前記装置のエンディアンモードを表していると認識することを可能にし、および/または、もし前記構成部分が第2のエンディアンモードで動作するときには、前記少なくとも2つの同様のデータビットの第2のデータが前記装置のエンディアンモードを表していると認識することを可能にする、
ことを特徴とする請求項1に記載の装置。
【請求項4】
前記第1のエンディアンモードはリトルエンディアンモードであり、前記第2のエンディアンモードはビッグエンディアンモードである、
ことを特徴とする請求項3に記載の装置。
【請求項5】
前記装置は、2つの異なるエンディアンモードのうちの1つで選択的に動作するように構成される、
ことを特徴とする請求項1に記載の装置。
【請求項6】
前記装置は、前記装置のハードウェア入力上で受信された信号に応答して、前記2つの異なるエンディアンモードのうちの選択された1つで動作するように構成される、
ことを特徴とする請求項5に記載の装置。
【請求項7】
前記装置は、前記ハードウェア入力上で受信された前記信号のソフトウェアによるオーバーライドを可能にする、
ことを特徴とする請求項6に記載の装置。
【請求項8】
前記ハードウェア入力上で受信された前記信号をオーバーライドするように構成された実行可能ルーチンを含むメモリ媒体を含む、
ことを特徴とする請求項7に記載の装置。
【請求項9】
前記装置は、前記レジスタの所定のビット位置、および/または追加的なレジスタの所定のビット位置にストアされたソフトウェアオーバーライドデータに従って、前記ソフトウェアオーバーライドが有効にされるように構成される、
ことを特徴とする請求項7に記載の装置。
【請求項10】
前記装置は、もし前記ソフトウェアオーバーライド有効にされた場合に、前記装置のエンディアンモードがソフトウェアエンディアン選択ビットに従って制御されるように構成される、
ことを特徴とする請求項9に記載の装置。
【請求項11】
前記ソフトウェアエンディアン選択ビットは、前記追加的なレジスタの1つのビット位置にストアされる、
ことを特徴とする請求項10に記載の装置。
【請求項12】
前記入力/出力回路は、データバスに接続されるように構成される、
ことを特徴とする請求項1に記載の装置。
【請求項13】
前記データバスは、シンクロナスダイナミックランダムアクセスメモリバス、ダブルデータレートメモリバス、または幾つかの他の複数バイト並列バスのうちの少なくとも1つを含む、
ことを特徴とする請求項12に記載の装置。
【請求項14】
前記装置は、パターン認識装置を含む、
ことを特徴とする請求項1に記載の装置。
【請求項15】
装置であって、
複数のレジスタと、
前記複数のレジスタに対してデータを読出し、およびデータを書き込み、リトルエンディアンモードまたはビッグエンディアンモードのうちの1つで選択的に動作するように構成されたレジスタインタフェースと、
を含むことを特徴とする装置。
【請求項16】
エンディアンモードハードウェアピンを含み、前記レジスタインタフェースは前記エンディアンモードハードウェアピン上で受信された信号に基づくデフォルトエンディアンモードで動作する、
ことを特徴とする請求項15に記載の装置。
【請求項17】
前記装置は、前記デフォルトエンディアンモードとは異なるエンディアンモードにおける前記レジスタインタフェースの動作のために、前記デフォルトエンディアンモードがオーバーライドされることを可能にするように構成される、
ことを特徴とする請求項16に記載の装置。
【請求項18】
前記複数のレジスタのうちの1つのレジスタが前記デフォルトエンディアンモードのオーバーライドを制御するためのレジスタビットを含む、
ことを特徴とする請求項17に記載の装置。
【請求項19】
前記レジスタインタフェースは、選択された装置エンディアンモードに基づいて前記複数のレジスタに対して読み出されおよび/または書き込まれるデータを翻訳するように構成される、
ことを特徴とする請求項15に記載の装置。
【請求項20】
システムであって、
プロセッサと、
前記プロセッサによる実行のためにそこにストアされるアプリケーション命令を含む記憶装置と、
データバスによって前記プロセッサに通信可能に接続された追加的な装置と、
前記プロセッサおよび前記データバスは所定のエンディアンモードに従って動作するように構成され、前記追加的な装置は前記所定のエンディアンモードまたは異なるエンディアンモードの何れかで動作するように構成され、前記システムは前記追加的な装置が前記所定のエンディアンモードで動作するように自動的に構成するように構成される、
ことを特徴とするシステム。
【請求項21】
前記プロセッサを含むコンピュータを含む、
ことを特徴とする請求項20に記載のシステム。
【請求項22】
前記追加的な装置は、前記コンピュータに通信可能に接続されたルータまたはモデムの少なくとも1つを含む、
ことを特徴とする請求項21に記載のシステム。
【請求項23】
前記コンピュータは前記記憶装置を含む、
ことを特徴とする請求項21に記載のシステム。
【請求項24】
前記コンピュータは前記追加的な装置を含む、
ことを特徴とする請求項21に記載のシステム。
【請求項25】
前記記憶装置内にストアされた前記アプリケーション命令は前記追加的な装置の現在のエンディアンモードを検出するための命令を含む、
ことを特徴とする請求項20に記載のシステム。
【請求項26】
前記記憶装置内にストアされた前記アプリケーション命令は前記追加的な装置のハードウェアピン上に入力されたエンディアンモード選択信号をオーバーライドするための命令を含む、
ことを特徴とする請求項20に記載のシステム。
【請求項27】
装置のレジスタにストアされたデータにアクセスし、
前記レジスタにストアされた複数のエンディアンモードデータビットのうちの少なくとも1つのエンディアンモードデータビットから前記装置のエンディアンモードを決定する、
ことを含むことを特徴とする方法。
【請求項28】
前記装置のエンディアンモードを決定することは、前記アクセスされたデータのエンディアンモードビット位置から少なくとも1つの前記エンディアンモードデータビットをプロセッサを介して読み出すことを含む、
ことを特徴とする請求項27に記載の方法。
【請求項29】
前記装置のエンディアンモードを決定することは、もし前記アクセスされたデータが第1のエンディアンモードに従って読み出された場合には第1のエンディアンモードデータビットを読み出し、もし前記アクセスされたデータが第2のエンディアンモードに従って読み出された場合には第2のエンディアンモードデータビットを読み出すことを含む、
ことを特徴とする請求項28に記載の方法。
【請求項30】
前記装置のエンディアンモードを変更することを含む、
ことを特徴とする請求項27に記載の方法。
【請求項31】
前記装置のエンディアンモードを変更することは、ソフトウェアによってデフォルトエンディアンモードをオーバーライドすることを含む、
ことを特徴とする請求項30に記載の方法。
【請求項32】
デフォルトエンディアンモードをオーバーライドすることは、前記装置のハードウェア入力上の信号によって選択されたデフォルトエンディアンモードをオーバーライドすることを含む、
ことを特徴とする請求項31に記載の方法。
【請求項33】
前記装置のエンディアンモードを変更することは、前記レジスタまたは追加的なレジスタにストアされた追加的なデータビットの値に従って前記エンディアンモードを変更することを含む、
ことを特徴とする請求項30に記載の方法。
【請求項34】
ソフトウェアドライバ、ファームウェア、または他のソフトウェアを介して前記追加的なデータビットの値を自動的にセットすることを含む、
ことを特徴とする請求項33に記載の方法。
【請求項35】
ソフトウェアドライバ、ファム、または他のソフトウェアを介して前記追加的なデータビットの値を手動でセットすることを含む、
ことを特徴とする請求項33に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公表番号】特表2012−510669(P2012−510669A)
【公表日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2011−538638(P2011−538638)
【出願日】平成21年11月19日(2009.11.19)
【国際出願番号】PCT/US2009/065197
【国際公開番号】WO2010/065331
【国際公開日】平成22年6月10日(2010.6.10)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【公表日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願日】平成21年11月19日(2009.11.19)
【国際出願番号】PCT/US2009/065197
【国際公開番号】WO2010/065331
【国際公開日】平成22年6月10日(2010.6.10)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
[ Back to top ]