(57)【特許請求の範囲】
【請求項１】
複数のベクトルプロセッサであって、該複数のベクトルプロセッサのうちの第一ベクトルプロセッサは第一値アレイについて作用し、該第一ベクトルプロセッサは第一パワーアイランドから電力を受ける、複数のベクトルプロセッサと、
第二値アレイについてフィルタリングオペレーションを実行するハードウェアアクセラレータであって、該ハードウェアアクセラレータは第二パワーアイランドから電力を受ける、ハードウェアアクセラレータと、
前記第一値アレイと前記第二値アレイとを記憶する複数のメモリスライスを含むメモリファブリックであって、該メモリファブリックは第一インタフェースを介して前記第一ベクトルプロセッサと通信し、第二インタフェースを介して前記ハードウェアアクセラレータと通信する、メモリファブリックと、
前記メモリファブリックに前記第一インタフェースを介して前記第一値アレイを前記第一ベクトルプロセッサに提供させ、前記メモリファブリックに前記第二インタフェースを介して前記第二値アレイを前記ハードウェアアクセラレータに提供させるホストプロセッサと、
複数の入出力（Ｉ／Ｏ）ピンに結合された周辺デバイスであって、該周辺デバイスは第一ベクトルプロセッサと外部デバイスの間に通信チャネルを提供し、前記周辺デバイスは該複数のＩ／Ｏピンのうちの少なくともいくつかを介して複数の標準プロトコルインタフェースの機能をエミュレートする、周辺デバイスと、
を含むコンピュータデバイス。
【請求項２】
前記第一パワーアイランドを介して前記第一ベクトルプロセッサに電力が供給されるとき、及び前記第二パワーアイランドを介して前記ハードウェアアクセラレータに電力が供給されるときを、前記外部デバイスによって供給された情報に基づいて制御する電力マネージャをさらに含み、前記外部デバイスは前記周辺デバイスを介して前記コンピュータデバイスと通信する、請求項１に記載のコンピュータデバイス。
【請求項３】
前記第一パワーアイランドは、第一スイッチを介して第一供給電圧を供給される回路に関連付けられるものであり、前記第二パワーアイランドは、第二スイッチを介して第二供給電圧を供給される回路に関連付けられるものであり、前記電力マネージャは、前記第一スイッチを動作させることによって前記第一ベクトルプロセッサに電力が供給されるときを制御し、前記第二スイッチを動作させることによって前記ハードウェアアクセラレータに電力が供給されるときを制御する、請求項２に記載のコンピュータデバイス。
【請求項４】
前記電力マネージャは、前記第一スイッチに供給されるイネイブル信号を介して前記第一ベクトルプロセッサをアクティブ電力モードにする、請求項３に記載のコンピュータデバイス。
【請求項５】
前記第一ベクトルプロセッサは、前記第一値アレイを処理する論理回路と、前記第一値アレイの少なくともサブセットを記憶するローカルメモリとを含み、該論理回路は前記第一供給電圧により電力を受け、該ローカルメモリは第三供給電圧により電力を受け、前記電力マネージャは、前記第一供給電圧が前記論理回路に供給されるようにし、前記電力マネージャは、前記第三供給電圧が前記ローカルメモリに供給されるようにし、前記論理回路への電力の供給は前記ローカルメモリへの電力の供給とは独立して制御される、請求項４に記載のコンピュータデバイス。
【請求項６】
前記電力マネージャは、前記第一パワーアイランドと前記第一供給電圧の間の前記第一スイッチを制御することによって前記第一ベクトルプロセッサを低電力モードにする、請求項４に記載のコンピュータデバイス。
【請求項７】
前記電力マネージャは、前記第一パワーアイランド内の前記第一ベクトルプロセッサに関連付けられた回路が入力データを処理するようにパワーオンされるとき、スイッチのデイジーチェインを用いて有効信号を生成する、請求項４に記載のコンピュータデバイス。
【請求項８】
前記周辺デバイスは、常時パワーオンされているパワーアイランドに関連付けられている、請求項４に記載のコンピュータデバイス。
【請求項９】
前記周辺デバイスは、前記第一ベクトルプロセッサが応答すべきイベントを検出するために前記外部デバイスからの信号を監視するイベントモニタを含み、前記周辺デバイスは、該イベントが検出されたときに前記電力マネージャに警告を出し、前記電力マネージャは、前記第一ベクトルプロセッサをアクティブモードにすることによって該警告に応答する、請求項８に記載のコンピュータデバイス。
【請求項１０】
前記複数のＩ／Ｏピンが、モバイルインダストリプロセッサインタフェース（ＭＩＰＩ）レーンの差動対を含む、請求項１に記載のコンピュータデバイス。
【請求項１１】
前記周辺デバイスは、入力Ｉ／Ｏピンと出力Ｉ／Ｏピンの間でバイパスを実行するバイパスバッファを含み、該バイパスは、前記第一ベクトルプロセッサをアクティブモードにすることなく、該入力Ｉ／Ｏピンと該出力Ｉ／Ｏピンの間に通信チャネルを提供する、請求項１から１０のいずれか一項に記載のコンピュータデバイス。
【請求項１２】
第一ベクトルプロセッサで命令を実行することによって、第一値アレイについて作用するステップであって、該第一値アレイはメモリファブリックのメモリスライスから供給され、該メモリファブリックは相互接続システムの第一インタフェースを介して第一ベクトルプロセッサと通信する、作用するステップと、
ハードウェアアクセラレータで、第二値アレイについてフィルタリングオペレーションを実行するステップであって、該第二値アレイは前記メモリファブリックのメモリスライスから供給され、該メモリファブリックは前記相互接続システムの第二インタフェースを介して該ハードウェアアクセラレータと通信する、実行するステップと、
周辺デバイスで、入出力（Ｉ／Ｏ）ピンのセットを介して複数の標準プロトコルインタフェースの機能をエミュレートするステップであって、前記Ｉ／Ｏピンは前記周辺デバイスに関連付けられ、前記周辺デバイスは前記第一ベクトルプロセッサと外部デバイスの間に通信チャネルを提供する、エミュレートするステップと、
第一パワーアイランドを介して前記第一ベクトルプロセッサに電力が供給されるとき、及び第二パワーアイランドを介して前記ハードウェアアクセラレータに電力が供給されるときを、前記外部デバイスによって供給される情報に基づいて制御するステップと、を含む方法。
【請求項１３】
前記第一ベクトルプロセッサに電力が供給されるときを制御する第一スイッチを動作させるステップと、
前記ハードウェアアクセラレータに電力が供給されるときを制御する第二スイッチを動作させるステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記第一スイッチを第一状態にすることによって前記第一ベクトルプロセッサをアクティブモードにするステップをさらに含む、請求項１３に記載の方法。
【請求項１５】
スイッチのデイジーチェインを使用して有効信号を生成するステップであって、該有効信号は、前記第一ベクトルプロセッサ内の回路ブロックが入力データを処理するために電力を供給される時間を示す、生成するステップをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記第一ベクトルプロセッサが応答すべきイベントを検出するために前記外部デバイスからの信号を監視するステップと、前記イベントの検出に応じて前記第一ベクトルプロセッサをアクティブモードにするステップと、をさらに含む、請求項１２に記載の方法。
【請求項１７】
前記周辺デバイスは、前記複数のＩ／Ｏピンの差動対と通信し、当該方法は、極性制御信号に基づいて前記差動対の極性を変更するステップをさらに含む、請求項１２に記載の方法。
【請求項１８】
入力Ｉ／Ｏピンと出力Ｉ／Ｏピンの間でバイパスを実行するステップをさらに含み、前記バイパスの実行は、前記第一ベクトルプロセッサをアクティブモードにすることなく、該入力Ｉ／Ｏピンと該出力Ｉ／Ｏピンの間に通信チャネルを提供する、請求項１７に記載の方法。
【請求項１９】
コンピュータデバイスであって、
第一値アレイについて作用するプロセッサと、
第二値アレイについてフィルタリングオペレーションを実行するハードウェアロジック
と、
複数のメモリスライスと、
前記プロセッサ及び前記複数のメモリスライスと通信する第一インタフェースと、
前記ハードウェアロジック及び前記複数のメモリスライスと通信する第二インタフェースと、
前記プロセッサに電力が供給されるとき、及び前記ハードウェアロジックに電力が供給されるときを、外部デバイスによって供給された情報に基づいて制御する電源管理手段であって、前記外部デバイスは周辺デバイスを介して当該コンピュータデバイスに結合され、前記周辺デバイスは、入力／出力（Ｉ／Ｏ）ピンのセットを介して複数の標準プロトコルインタフェースの機能をエミュレートする、電力管理手段と、
を含むコンピュータデバイス。
【請求項２０】
各々が少なくとも１つの電力ドメインを含む複数のパワーアイランドをさらに含み、前記複数のパワーアイランドのうちの第一パワーアイランドは第一供給電圧に結合され、該第一パワーアイランドは前記プロセッサに該第一供給電圧を供給し、前記複数のパワーアイランドのうちの第二パワーアイランドは第二供給電圧に結合され、該第二パワーアイランドは前記ハードウェアロジックに該第二供給電圧を供給する、請求項１９に記載のコンピュータデバイス。
【請求項２１】
前記電力管理手段は、イネイブル信号をスイッチング手段に供給し、該スイッチング手段は前記第一パワーアイランドを前記第一供給電圧に結合し、該イネイブル信号は前記プロセッサをアクティブモードにする、請求項２０に記載のコンピュータデバイス。
【請求項２２】
前記プロセッサは、前記第一値アレイを処理する論理回路と、前記第一値アレイの少なくともサブセットを記憶するローカルメモリとを含み、前記電力管理手段は、該論理回路への電力の供給を該ローカルメモリへの電力の供給とは独立して制御する、請求項２１に記載のコンピュータデバイス。
【請求項２３】
前記電力管理手段は、前記スイッチング手段をオフにして前記第一パワーアイランドを前記第一供給電圧から切り離し、前記第一供給電圧からの前記第一パワーアイランドの切り離しにより前記プロセッサを低電力モードにする、請求項２１に記載のコンピュータデバイス。
【請求項２４】
コンピュータデバイスに電力を供給する方法であって、
周辺デバイスで、イベント情報のために外部デバイスを監視するステップであって、該周辺デバイスは前記外部デバイス及び前記コンピュータデバイスと通信し、該周辺デバイスは、複数の入出力（Ｉ／Ｏ）ピンに結合された、監視するステップと、
前記イベント情報の検出に応答して、ベクトルプロセッサに電力を供給するかどうかを決定するステップであって、該ベクトルプロセッサは前記複数のＩ／Ｏピンで第一プロトコルを用いて前記周辺デバイスと通信し、該ベクトルプロセッサは、第一インタフェースを介してメモリファブリックと通信し、該ベクトルプロセッサは第一パワーアイランドに関連付けられる、決定するステップと、
前記ベクトルプロセッサに電力を供給するかどうかの決定に基づいて、前記第一パワーアイランドを第一供給電圧に結合することによって前記ベクトルプロセッサに電力を供給するステップと、
前記イベント情報の検出に応答して、ハードウェアロジックに電力を供給するかどうかを決定するステップであって、該ハードウェアロジックは前記複数のＩ／Ｏピンで第二プロトコルを用いて前記周辺デバイスと通信し、該ハードウェアロジックは第二インタフェースを介して前記メモリファブリックと通信し、該ハードウェアロジックは第二パワーアイランドに関連づけられる、決定するステップと、
前記ハードウェアロジックに電力を供給するかどうかの決定に基づいて、前記第二パワーアイランドを第二供給電圧に結合することによって前記ハードウェアロジックに電力を供給するステップであって、前記ベクトルプロセッサ及び前記ハードウェアロジックへの
電力の供給は独立して制御される、供給するステップと、
を含む方法。
【請求項２５】
前記第一パワーアイランドは、第一スイッチによって前記第一供給電圧に結合され、前記第二パワーアイランドは、第二スイッチによって前記第二供給電圧に結合され、前記ベクトルプロセッサ及び前記ハードウェアロジックへの電力の供給は、該第一スイッチ及び該第二スイッチをそれぞれ閉じることを含む、請求項２４に記載の方法。
【請求項２６】
前記ベクトルプロセッサは、値アレイを処理する論理回路と、前記値アレイの少なくともサブセットを記憶するメモリとを含み、該論理回路は前記第一供給電圧から電力を受け、該メモリは第三供給電圧から電力を受け、
当該方法は、
前記論理回路及び前記メモリのそれぞれに対して電力を供給するかどうかの決定に基づき、前記メモリに電力を供給することとは独立して前記論理回路に電力を供給するステップをさらに含む、請求項２５に記載の方法。
【請求項２７】
前記周辺デバイスは、常にパワーオンされているパワーアイランドに関連付けられている、請求項２４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、2014年8月12日に出願された、「APPARATUS,  SYSTEMS,  AND  METHODS  FOR  LOW  POWER  COMPUTATIONAL  IMAGING」と題する米国特許出願第14/458,014号の優先権を主張する。第14/458,014号の出願は、2014年７月30日に出願された、「LOW  POWER COMPUTATIONAL  IMAGING  COMPUTING  DEVICE」と題する米国仮特許出願第62/030,913号及び2013年11月18日に出願された、「APPARATUS,  SYSTEMS,  AND  METHODS  FOR  PROVIDING  COMPUTATIONAL  IMAGING  PIPELINE」と題する米国特許出願第14/082,396号の優先権を主張する。第14/082,396号の出願は、2013年11月6日に出願された、「APPARATUS,  SYSTEMS,  AND  METHODS  FOR  PROVIDING  CONFIGURABLE  AND  COMPOSABLE  COMPUTATIONAL  IMAGING  PIPELINE」と題するルーマニア特許出願第A/00812号及び、2013年8月8日に出願された、「CONFIGURABLE  AND  COMPOSABLE  COMPUTATIONAL  IMAGING  PIPELINE」と題する英国特許出願第1314263.3号の優先権を主張する。本願は、また、2014年8月12日に出願された、「APPARATUS,  SYSTEMS,  AND  METHODS  FOR  LOW  POWER  COMPUTATIONAL  IMAGING」と題する米国特許出願第14/458,052号の優先権を主張する。第14/458,052号の出願は、2014年７月30日に出願された、「LOW  POWER COMPUTATIONAL  IMAGING  COMPUTING  DEVICE」と題する米国仮特許出願第62/030,913号及び2013年11月18日に出願された、「APPARATUS,  SYSTEMS,  AND  METHODS  FOR  PROVIDING  COMPUTATIONAL  IMAGING  PIPELINE」と題する米国特許出願第14/082,396号の優先権を主張する。第14/082,396号の出願は、2013年11月6日に出願された、「APPARATUS,  SYSTEMS,  AND  METHODS  FOR  PROVIDING  CONFIGURABLE  AND  COMPOSABLE  COMPUTATIONAL  IMAGING  PIPELINE」と題するルーマニア特許出願第A/00812号及び、2013年8月8日に出願された、「CONFIGURABLE  AND  COMPOSABLE  COMPUTATIONAL  IMAGING  PIPELINE」と題する英国特許出願第1314263.3号の優先権を主張する。これらの各出願は、全て参照によりここに援用される。
【０００２】
本願は、概して、低電力コンピュータイメージングのコンピュータデバイスを提供することに関連する。
【背景技術】
【０００３】
コンピュータイメージング（computational  imaging）は、画像及び動画に基づいた、今までにないユーザ経験と情報を提供することのできる新たなイメージングパラダイムである。例えば、コンピュータイメージングは、画像及び／又は動画を処理することができ、シーンの深度図を提供する、シーンのパノラマビューを提供する、画像及び／又は動画から顔を抽出する、画像及び／又は動画からテキスト、特徴及びメタデータを抽出する、並びに物体及びシーン認識特徴に基づいた自動視覚認識能力でさえも提供する。
【０００４】
コンピュータイメージングは、興味深い性能を提供することができるが、広く採用されてはいない。コンピュータイメージングの採用が遅いのは、コンピュータイメージングが基本的なデータ処理課題を伴うという事実によるものである可能性がある。しばしば、画像解像度及び動画フレームレートが高いのである。このため、コンピュータイメージングは、概して、数百ギガフロップのコンピュータリソースを必要とし、特に、そのパフォーマンスが低電力消費で高いメモリ帯域幅によって維持可能であり、バックアップされなくてはならない場合には、標準的なプロセッサではそれを得ることは難しい可能性がある。さらに、コンピュータイメージングは、概して、待ち時間に対して敏感である。ユーザは、カメラが物体を認識するのに数分も待たないので、コンピュータイメージングのカメラは、概して、画像及び動画を迅速に処理するように設計されており、それがさらに、コンピュータイメージングの計算要件（computational  requirement）に負荷となっている。
【０００５】
残念ながら、カスタマイズされたハードウェアでコンピュータイメージング技術を実装することは難しい。コンピュータイメージングの分野は相対的に初期段階にあるため、実装技術は常に変化している。このため、実装技術についての変更はハードウェア全体の再設計を必要とするため、ハードウェアで完全にコンピュータイメージングをカスタマイズするのは難しいのである。したがって、概して、フレキシブルなハードウェアアーキテクチャ及びフレキシブルなハードウェアインフラストラクチャ（flexible  hardware  infrastructure）を提供することが望ましい。
【０００６】
同時に、そのような動画及び画像処理に対する要望が、電力消費が肝要な検討事項であるポータブル電子デバイス、例えば、タブレットコンピュータ及びモバイルデバイスから来ている。結果として、概して、制約された電力量であっても動作することのできるフレキシブルなコンピュータイメージングインフラストラクチャの必要性がある。
【発明の概要】
【０００７】
開示された主題に従って、低電力コンピュータイメージングを提供するシステム及び方法が提供される。
【０００８】
開示された主題は、コンピュータデバイスを含む。当該コンピュータデバイスは、複数のベクトルプロセッサであって、該複数のベクトルプロセッサの一つが、第一値アレイについて作用する命令を実行するように構成された、複数のベクトルプロセッサを含むことができる。当該コンピュータデバイスは、第二値アレイについてフィルタリングオペレーションを行うように構成されたハードウェアアクセラレータを含むこともできる。当該コンピュータデバイスは、複数のメモリスライスと、第一インタフェース及び第二インタフェースを有する相互接続システムと、を含むメモリファブリックであって、該第一インタフェースは前記複数のベクトルプロセッサを該複数のメモリスライスに結合するように構成され、該第二インタフェースは前記ハードウェアアクセラレータを該複数のメモリスライスに結合するように構成された、メモリファブリックを含むこともできる。さらに、当該コンピュータデバイスは、前記メモリファブリックに、前記第一インタフェースを介して前記複数のベクトルプロセッサの一つに前記第一値アレイを提供させ、前記第二インタフェースを介して前記ハードウェアアクセラレータに前記第二値アレイを提供させて、前記複数のベクトルプロセッサの一つが前記命令に従って前記第一値アレイを処理することを可能にし、前記ハードウェアアクセラレータが前記フィルタリングオペレーションに従って前記第二値アレイを処理することを可能にするように構成されたホストプロセッサを含むことができる。
【０００９】
いくつかの実施形態においては、当該コンピュータデバイスは、それぞれが少なくとも一つの電力ドメインを含む複数のパワーアイランドをさらに含むことができ、前記複数のパワーアイランドのうちの第一のものは、第一供給電圧に結合されて、前記複数のベクトルプロセッサの一つに該第一供給電圧を提供し、前記複数のパワーアイランドのうちの第二のものは、第二供給電圧に結合されて、前記ハードウェアアクセラレータに該第二供給電圧を提供する。
【００１０】
いくつかの実施形態においては、当該コンピュータデバイスは、前記複数のパワーアイランドの第一のものを前記第一供給電圧に結合するスイッチにイネイブル信号を提供して、前記複数のベクトルプロセッサの一つをアクティブモードにするように構成された電力管理モジュールをさらに含むことができる。
【００１１】
いくつかの実施形態においては、前記複数のベクトルプロセッサの一つは、前記第一値アレイを処理する論理回路領域と、前記第一値アレイの少なくともサブセットを記憶するローカルメモリと、を含むことができ、前記電力管理モジュールは、前記第一供給電圧が前記論理回路領域に供給されるようにし、第三供給電圧が前記ローカルメモリに供給されるようにして、前記論理回路領域及び前記ローカルメモリの電力消費を独立的に制御するように構成されることができる。
【００１２】
いくつかの実施形態においては、前記電力管理モジュールは、前記スイッチをオフにし、前記複数のパワーアイランドの第一のものを前記第一供給電圧から切り離して、前記複数のベクトルプロセッサの一つを低電力モードにするように構成されることができる。
【００１３】
いくつかの実施形態においては、前記電力管理モジュールは、有効信号を生成するように構成された有効信号生成器を含むことができ、前記有効信号は、前記複数のパワーアイランドの第一のものの回路ブロックが入力データを処理する準備が整うタイムインスタンスを示し、前記有効信号生成器は、前記複数のパワーアイランドの第一のものにある前記回路ブロックに前記第一供給電圧を提供する、スイッチ連鎖を含む。
【００１４】
いくつかの実施形態においては、当該コンピュータデバイスは、複数の入出力（Ｉ／Ｏ）ピンに結合された周辺デバイスをさらに含むことができ、前記周辺デバイスは、前記複数のベクトルプロセッサの少なくとも一つと外部デバイスとの間の通信チャネルを提供するように構成される。
【００１５】
いくつかの実施形態においては、前記周辺デバイスは、常時パワーオンのパワーアイランド内にあることができる。
【００１６】
いくつかの実施形態においては、前記周辺デバイスは、前記外部デバイスからの信号を監視して、前記複数のベクトルプロセッサの一つが応答するべきイベントを検出し、前記周辺デバイスが前記イベントを検出したときは、前記複数のベクトルプロセッサの一つを前記アクティブモードにするように前記電力管理モジュールにさせるように構成されることができる。
【００１７】
いくつかの実施形態においては、前記周辺デバイスは、前記Ｉ／Ｏピンの共通セットを介して複数の標準プロトコルインタフェースの機能をエミュレートするように前記周辺デバイスにさせるように構成されたエミュレーションモジュールを含むことができる。
【００１８】
いくつかの実施形態においては、前記周辺デバイスは、Ｉ／Ｏピンの差動対に結合されていることができ、前記周辺デバイスは、極性制御信号に基づき、該差動対の極性を変更するように構成される。
【００１９】
いくつかの実施形態においては、前記Ｉ／Ｏピンの差動対は、モバイルインダストリプロセッサインタフェース（ＭＩＰＩ）のレーンの差動対を含むことができる。
【００２０】
いくつかの実施形態においては、前記周辺デバイスは、入力Ｉ／Ｏピンと出力Ｉ／Ｏピンとの間のバイパスを行うように構成されたバイパスバッファを含むことができ、前記複数のベクトルプロセッサの一つをアクティブモードにすることなく、該入力Ｉ／Ｏピンと該出力Ｉ／Ｏピンとの間に通信チャネルを提供する。
【００２１】
開示された主題は、方法を含む。当該方法は、複数のメモリスライスと、第一インタフェース及び第二インタフェースを有する相互接続システムを含むメモリファブリックを提供する工程を含むことができる。当該方法は、前記第一インタフェースを用いて、前記複数のメモリスライスと複数のベクトルプロセッサとを結合する工程と、前記第二インタフェースを用いて、前記複数のメモリスライスとハードウェアアクセラレータとを結合する工程と、を含むことができる。当該方法は、前記メモリファブリックによって、前記第一インタフェースを介して前記複数のベクトルプロセッサの一つに第一値アレイを提供し、前記第二インタフェースを介して前記ハードウェアアクセラレータに第二値アレイを提供する工程と、前記複数のベクトルプロセッサの一つで、前記第一値アレイについて作用する命令を実行する工程と、前記ハードウェアアクセラレータによって、前記第二値アレイについてフィルタリングオペレーションを行う工程と、をさらに含むことができる。
【００２２】
いくつかの実施形態においては、当該方法は、前記複数のベクトルプロセッサの一つに第一供給電圧を提供する工程と、前記ハードウェアアクセラレータに第二供給電圧を提供する工程と、を含むことができ、前記複数のベクトルプロセッサの一つ及び前記ハードウェアアクセラレータは、それぞれ第一パワーアイランド及び第二パワーアイランドに関連付けられる。
【００２３】
いくつかの実施形態においては、当該方法は、電力管理モジュールによって、前記第一パワーアイランドを前記第一供給電圧に結合するスイッチにイネイブル信号を提供して、前記複数のベクトルプロセッサの一つをアクティブモードにする工程を含むことができる。
【００２４】
いくつかの実施形態においては、当該方法は、前記複数のベクトルプロセッサの一つの回路ブロックに前記第一供給電圧を提供するスイッチ連鎖を用いて、前記第一パワーアイランドの回路ブロックが入力データを処理する準備が整うタイムインスタンスを示す有効信号を生成する工程を含むことができる。
【００２５】
いくつかの実施形態においては、当該方法は、複数の入出力（Ｉ／Ｏ）ピンに結合された周辺デバイスを含むことができ、前記周辺デバイスは、常時パワーオンのパワーアイランドに関連付けられる。
【００２６】
いくつかの実施形態においては、当該方法は、外部デバイスからの信号を監視して、前記複数のベクトルプロセッサの一つが応答するべきイベントを検出する工程と、前記複数のベクトルプロセッサの一つをアクティブモードにするように電力管理モジュールにさせる工程と、を含むことができる。
【００２７】
いくつかの実施形態においては、当該方法は、前記周辺デバイスによって、前記Ｉ／Ｏピンの共通セット介して複数の標準プロトコルインタフェースの機能をエミュレートする工程を含むことができる。
【００２８】
いくつかの実施形態においては、前記周辺デバイスは、Ｉ／Ｏピンの差動対に結合されており、当該方法は、極性制御信号に基づき、前記差動対の極性を変更する工程をさらに含む。
【００２９】
いくつかの実施形態においては、当該方法は、バイパスバッファを用いて、入力Ｉ／Ｏピンと出力Ｉ／Ｏピンとの間のバイパスを行って、前記複数のベクトルプロセッサの一つをアクティブモードにすることなく、該入力Ｉ／Ｏピンと該出力Ｉ／Ｏピンとの間に通信チャネルを提供する工程を含むことができる。
【００３０】
開示された主題は、電子デバイスを含む。当該電子デバイスは、複数のベクトルプロセッサであって、該複数のベクトルプロセッサの一つが、第一値アレイについて作用する命令を実行するように構成された、複数のベクトルプロセッサを含むことができる。当該電子デバイスは、ソフトウェアモジュールから受けた設定情報を用いてプログラムされたプログラマブルデータパスパイプラインを含み、該プログラマブルデータパスパイプラインは、該設定情報に従って第二値アレイについてのフィルタリングオペレーションを行うように構成された、ハードウェアアクセラレータを含むこともできる。当該電子デバイスは、複数のメモリスライスを含むメモリファブリックを含むこともできる。当該電子デバイスは、前記メモリファブリックに、前記複数のベクトルプロセッサの一つに前記第一値アレイを提供させ、前記ハードウェアアクセラレータに前記第二値アレイを提供させて、前記複数のベクトルプロセッサの一つが前記命令に従って前記第一値アレイを処理することを可能にし、前記ハードウェアアクセラレータが前記設定情報に従って前記第二値アレイを処理することを可能にするように構成されたホストプロセッサと、をさらに含むことができる。
【００３１】
いくつかの実施形態においては、前記ハードウェアアクセラレータは、前記プログラマブルデータパスパイプラインにより処理された画像の走査ラインを受ける出力バッファと、前記出力バッファがフルであるときに、前記プログラマブルデータパスパイプラインのオペレーションをストールするように構成されたパイプラインストールコントローラと、を含むことができる。
【００３２】
いくつかの実施形態においては、前記ハードウェアアクセラレータは、前記フィルタリングオペレーションを行うのにまとめてつなげられた複数の機能ユニットを含むことができる。
【００３３】
いくつかの実施形態においては、前記複数の機能ユニットがまとめてつなげられた順序は、前記ソフトウェアモジュールから受けた前記設定情報を用いて決定される。
【００３４】
いくつかの実施形態においては、前記複数の機能ユニットの第一のものの出力は、前記メモリファブリック内のバッファに提供され、前記複数の機能ユニットの第二のものの入力は、該バッファから受けられる。
【００３５】
いくつかの実施形態においては、前記ハードウェアアクセラレータは、前記画像の走査ライン内の画素によって表される物体の深さを示す深度情報を受けるように構成された深度マップクライアントを含むことができる。
【００３６】
いくつかの実施形態においては、前記ハードウェアアクセラレータは、前記深度情報の解像度を前記画像の走査ラインの解像度に合致させるように前記深度情報を処理するように構成された深度マップモジュールを含むことができる。
【００３７】
いくつかの実施形態においては、前記深度マップモジュールは、前記深度情報を前記画像の走査ラインに時間的に同期させるようにさらに構成される。
【００３８】
いくつかの実施形態においては、前記メモリファブリックは、前記複数のベクトルプロセッサの一つにより、共有リソースへの排他的アクセスを要求する排他的アクセス要求の状況を監視し、前記複数のベクトルプロセッサの一つが前記共有リソースへの排他的アクセスを受けたときは、該複数のベクトルプロセッサの一つに、該複数のベクトルプロセッサの一つが前記共有リソースへの前記排他的アクセスを有することを示す認メッセージを送るように構成されたミューテックスコントローラを含むことができる。
【００３９】
いくつかの実施形態においては、前記メモリファブリックは、複数のバッファを含むことができ、前記複数のバッファの第一のものは、前記複数のベクトルプロセッサの第一のものに関連付けられ、前記複数のベクトルプロセッサの第二のものは、前記複数のバッファの第一のもの内にデータを記憶することによって、前記複数のベクトルプロセッサの第一のものに該データを送るように構成される。
【００４０】
いくつかの実施形態においては、前記メモリファブリックは、前記複数のベクトルプロセッサの第一のものに伝えられたデータ量に基づいて、前記複数のバッファの第一もののキャパシティを動的に修正するように構成されることができる。
【００４１】
いくつかの実施形態においては、前記メモリファブリックは、前記複数のベクトルプロセッサの第一のものに伝えられたデータ量に基づいて、前記複数のバッファの二つ以上を前記複数のベクトルプロセッサの第一のものに動的に関連付けるように構成されることができる。
【００４２】
いくつかの実施形態においては、前記複数のバッファは、前記メモリファブリック内の前記複数のメモリスライスの一つの一部であることができる。
【００４３】
いくつかの実施形態においては、前記メモリファブリックは、前記複数のベクトルプロセッサの一つが低電力モードに入ったときは、該複数のベクトルプロセッサの一つの状態情報を記憶するように構成されることができる。
【００４４】
いくつかの実施形態においては、前記状態情報は、前記メモリファブリック内のスタティックランダムアクセスメモリ内に記憶される。
【００４５】
いくつかの実施形態においては、前記メモリファブリックは、直接メモリアクセス（ＤＭＡ）コントローラを含むことができ、前記ＤＭＡコントローラは、複数のＤＭＡオペレーションが実行される順番を示すオペレーションリストを含む。
【００４６】
いくつかの実施形態においては、前記ＤＭＡコントローラは、イネイブルバッファに基づいて、前記オペレーションリスト内のＤＭＡオペレーションのサブセットを行うように構成されることができ、前記イネイブルバッファは複数のビットを含み、前記複数のビットの一つは、前記ＤＭＡオペレーションの一つに関連付けられており、前記複数のビットの一つの値は、前記ＤＭＡオペレーションの一つが前記ＤＭＡコントローラによって行われるか否かを示す。
【００４７】
開示された主題は、方法を含む。当該方法は、複数のメモリスライスを含むメモリファブリックによって、複数のベクトルプロセッサの一つに第一値アレイを提供する工程を含むことができる。当該方法は、前記メモリファブリックによって、プログラマブルデータパスパイプラインを含むハードウェアアクセラレータに第二値アレイを提供する工程と、前記複数のベクトルプロセッサの一つによって、前記第一値アレイに作用する命令を実行する工程と、設定情報を用いて、前記ハードウェアアクセラレータ内のプログラマブルデータパスパイプラインを構成する工程と、前記ハードウェアアクセラレータ内のデータパスパイプラインを用いて、前記設定情報に従い、前記第二値アレイについてフィルタリングオペレーションを行う工程と、を含むこともできる。
【００４８】
いくつかの実施形態においては、当該方法は、出力バッファで、前記プログラマブルデータパスパイプラインによって処理された画像の走査ラインを受ける工程と、パイプラインストールコントローラによって、前記出力バッファがフルであるときは、前記プログラマブルデータパスパイプラインのオペレーションをストールする工程と、を含むことができる。
【００４９】
いくつかの実施形態においては、前記ハードウェアアクセラレータは、複数の機能ユニットを含み、当該方法は、前記設定情報に従って前記複数の機能ユニットをつないで、前記フィルタリングオペレーションを行う。
【００５０】
いくつかの実施形態においては、前記複数の機能ユニットは、第一機能ユニット及び第二機能ユニットを含み、前記複数の機能ユニットをつなぐ工程は、前記第一機能ユニットの出力を前記第二機能ユニットの入力につなぐ工程を含む。
【００５１】
いくつかの実施形態においては、当該方法は、前記画像の走査ライン内の画素によって表される物体の深さを示す深度情報を受ける工程と、前記深度情報と前記画像の走査ラインとを同期させる工程と、を含むことができる。
【００５２】
いくつかの実施形態においては、当該方法は、前記メモリファブリック内のメモリコントローラによって、前記複数のベクトルプロセッサの一つにより、共有リソースへの排他的アクセスを要求する排他的アクセス要求の状況を監視する工程と、前記複数のベクトルプロセッサの一つが前記共有リソースへの排他的なアクセスを受けたときは、該複数のベクトルプロセッサの一つに、該複数のベクトルプロセッサの一つが前記共有リソースへの前記排他的アクセスを有することを示す確認メッセージを送る工程と、を含むことができる。
【００５３】
いくつかの実施形態においては、前記メモリファブリックは、複数のバッファを含むことができ、前記複数のバッファの第一のものは、前記複数のベクトルプロセッサの第一のものに関連付けられ、当該方法は、前記複数のベクトルプロセッサの第二のものによって、前記複数のバッファの第一のもの内にデータを記憶することによって、前記複数のベクトルプロセッサの第一のものに該データを送る工程を含む。
【００５４】
いくつかの実施形態においては、当該方法は、前記複数のベクトルプロセッサの第一のものに伝えられたデータ量に基づいて、前記複数のバッファの第一もののキャパシティを動的に修正する工程を含むことができる。
【００５５】
いくつかの実施形態においては、当該方法は、前記複数のベクトルプロセッサの第一のものに伝えられたデータ量に基づいて、前記複数のバッファの二つ以上を前記複数のベクトルプロセッサの第一のものに動的に関連付ける工程を含むことができる。
【００５６】
いくつかの実施形態においては、当該方法は、前記複数のベクトルプロセッサの一つが低電力モードに入ったときは、前記メモリファブリック内の該複数のベクトルプロセッサの一つの状態情報を記憶する工程をさらに含むことができる。
【００５７】
いくつかの実施形態においては、前記状態情報は、前記メモリファブリック内のスタティックランダムアクセスメモリ内に記憶される。
【００５８】
いくつかの実施形態においては、当該方法は、直接メモリアクセス（ＤＭＡ）コントローラで、複数のＤＭＡオペレーションが実行される順番を示すオペレーションリストを保持する工程を含むことができる。
【００５９】
いくつかの実施形態においては、当該方法は、イネイブルバッファに基づいて、前記オペレーションリスト内のＤＭＡオペレーションのサブセットを行う工程を含むことができ、前記イネイブルバッファは複数のビットを含み、前記複数のビットの一つは、前記ＤＭＡオペレーションの一つに関連付けられており、前記複数のビットの一つの値は、前記ＤＭＡオペレーションの一つが前記ＤＭＡコントローラによって行われるか否かを示す。
【図面の簡単な説明】
【００６０】
開示された主題の様々な目的、特徴及び効果は、次の図面に関連して考慮される、開示された主題の次の発明を実施するための形態を参照することで、より十分に理解されることができる。ここで、類似する参照番号は、類似する要素を特定する。添付の図面は概略的であり、縮尺通りに描かれることは意図されていない。明確性のため、全てのコンポーネントが全ての図面でラベル付けされているわけではない。開示された主題の各実施形態の全てのコンポーネントが示されているわけでもない。図示は、必ずしも、当業者が開示された主題を理解することができるようにすることが必要ではない。
【００６１】
【図１】図１は、いくつかの実施形態に従うコンピュータデバイスのハイレベルな図である。
【００６２】
【図２】図２は、いくつかの実施形態に従うコンピュータデバイスの詳細図を図示する。
【００６３】
【図３】図３は、いくつかの実施形態に従うハードウェアアクセラレータを図示する。
【００６４】
【図４】図４は、いくつかの実施形態に従う、深度情報に基づいたフィルタリングオペレーションを適用することができるハードウェアアクセラレータを図示する。
【００６５】
【図５】図５は、ハードウェアアクセラレータを図示する。
【００６６】
【図６】図６は、いくつかの実施形態に従う、汎用機能に基づいたハードウェアアクセラレータを図示する。
【００６７】
【図７】図７は、いくつかの実施形態に従う、画像信号処理（ＩＳＰ）機能モジュール間の通信のための先入れ先出し（ＦＩＦＯ）バッファを含むハードウェアアクセラレータを図示する。
【００６８】
【図８】図８は、いくつかの実施形態に従う、パワーアイランドの電力供給ゲーティングを図示する。
【００６９】
【図９】図９は、いくつかの実施形態に従う有効信号生成器を図示する。
【００７０】
【図１０】図１０は、いくつかの実施形態に従うイベント信号監視メカニズムを図示する。
【００７１】
【図１１】図１１は、いくつかの実施形態に従うソフトウェア定義インタフェースを示す。
【００７２】
【図１２】図１２は、いくつかの実施形態に従うソフトウェア定義インタフェースの詳細な実装を示す。
【００７３】
【図１３】図１３は、いくつかの実施形態に従うイベントプロセッサを図示する。
【００７４】
【図１４】図１４は、いくつかの実施形態に従う、イベントプロセッサ内のイベントフィルタを図示する。
【００７５】
【図１５】図１５は、いくつかの実施形態に従う、周辺デバイスのバイパスモードを示す。
【００７６】
【図１６】図１６は、いくつかの実施形態に従う、プログラマブルモバイルインダストリプロセッサインタフェース（ＭＩＰＩ）のインタフェースを示す。
【００７７】
【図１７】図１７は、いくつかの実施形態に従う、入出力インタフェースのための極性反転メカニズムの適用を図示する。
【００７８】
【図１８】図１８は、いくつかの実施形態に従う、ハードウェアベースの相互排他的（ミューテックス）コントローラを有するメモリファブリックを図示する。
【００７９】
【図１９】図１９は、いくつかの実施形態に従う、バッファの動的割り当てを図示する。
【００８０】
【図２０】図２０は、いくつかの実施形態に従う、異なる電圧をロジック回路メモリデバイスに提供する電力管理メカニズムを図示する。
【００８１】
【図２１】図２１は、いくつかの実施形態に従う、バッファベースのＤＭＡデータ構造イネイブルメカニズムを実装する直接メモリアクセス（ＤＭＡ）エンジンを図示する。
【００８２】
【図２２】図２２は、いくつかの実施形態に従うコンピュータデバイスを含む電子デバイスを示す。
【発明を実施するための形態】
【００８３】
次の記載においては、開示された主題のシステム及び方法並びにそのようなシステム及び方法が動作し得る環境等に関して、多くの具体的な詳細が説明される。これは、開示された主題の十分な理解を提供するためである。しかし、開示された主題がそのような具体的な詳細がなくとも実施され得ることや、本技術分野で周知である所定の特徴が開示された主題の複雑性を回避するため、詳細には記載されないことは、当業者には明らかなものである。さらに、当然のことながら、下記に提供される例は、例示的なものであり、開示された主題の範囲内にある他のシステム及び方法があると予期される。
【００８４】
コンピュータイメージングは、マシンが物理世界を撮り、これと相互作用するやり方を変換することができる。例えば、コンピュータイメージングを介して、マシンは伝統的なイメージング技術を用いて撮ること極めて難しかった画像を撮ることができる。他の例として、コンピュータイメージングを介して、マシンは、その周囲を理解し、その周囲に従った応答をすることができる。
【００８５】
コンピュータイメージングを大衆市場に投入する際の課題の一つは、コンピュータイメージングが本質的かつ計算的に高くつくことである。コンピュータイメージングは、高い解像度での大量の画像及び／又は高いフレームレートでの大量の動画をしばしば用いる。このため、コンピュータイメージングは、パワフルな計算プラットフォームのサポートを必要とする。さらに、コンピュータイメージングは、例えば、スマートフォン又はタブレットコンピュータを用いたモバイル設定において用いられることが多く、コンピュータイメージングは、低電力消費で動作することのできるパワフルな計算プラットフォームのサポートを必要とすることが多い。
【００８６】
本願は、コンピュータイメージングのための低電力で、優秀な計算プラットフォームを提供することができるコンピュータデバイスを開示し、プラットフォームの性能に寄与することができるベクトルプロセッサの特定の特徴を特定する。図１は、いくつかの実施形態に従うコンピュータデバイスの高レベルな図である。コンピュータデバイス１００は、例えば、一つ以上のベクトルプロセッサ１０２と、一つ以上のハードウェアアクセラレータ１０４と、知的なメモリファブリック１０６（intelligent  memory  fabric）と、周辺デバイス１０８と、電力管理モジュール１１０と、を含むことができる。
【００８７】
一つ以上のベクトルプロセッサ１０２は、ベクトルと呼ばれるデータアレイに作用する命令を含む命令セットを実装する中央処理ユニット（ＣＰＵ）を含む。より詳細には、一つ以上のベクトルプロセッサ１０２は、同時に大量のデータの一般的な演算オペレーションを行うように構成されることができる。いくつかの実施形態においては、一つ以上のベクトルプロセッサ１０２は、シングルインストラクションマルチプルデータの超長命令ワード（ＳＩＭＤ−ＶＬＩＷ）プロセッサを含むことができる。いくつかの実施形態においては、一つ以上のベクトルプロセッサ１０２は、コンピュータビジョン及びイメージングアプリケーションに関連した命令を実行するように設計されることができる。
【００８８】
一つ以上のハードウェアアクセラレータ１０４は、より汎用のＣＰＵ上で動作するソフトウェアでも行うことが可能な機能と同じ機能をより高速に行うコンピュータハードウェアを含む。非ビジョン（non-vision）アプリケーションにおけるハードウェアアクセラレータの例としては、ラスタオペレータ（raster  operator）を用いて複数のビットマップを一つに組み合わせるように構成されたグラフィクス処理ユニット（ＧＰＵ）内のビリッティングアクセラレイション（blitting  acceleration）モジュールを含む。
【００８９】
いくつかの実施形態においては、一つ以上のハードウェアアクセラレータ１０４は、画像処理及びコンピュータビジョンアプリケーションに合わせた構成可能なインフラストラクチャを提供することができる。ハードウェアアクセラレータ１０４は、アプリケーション特有の計算コアを取り巻く画像処理及びコンピュータビジョンオペレーションを加速する（accelerate）汎用ラッパーハードウェア（wrapper  hardware）を含むとみなされることができる。例えば、ハードウェアアクセラレータ１０４は、画像フィルタリングオペレーションを行う専用フィルタモジュールを含むことができる。フィルタモジュールは、画像にわたってカスタマイズされたフィルタカーネル（filter  kernel）を効率のよいやり方で動作させるように構成されることができる。いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、一クロック周期で十分に計算された一つの出力画素を出力することができる。
【００９０】
知的なメモリファブリック１０６は、短い待ち時間（latency）で低電力メモリシステムを提供するように構成されることができる。画像及び動画は大量のデータを含むため、メモリと処理ユニット間に高速インタフェースを提供することは重要である。いくつか実施形態においては、知的なメモリファブリック１０６は、例えば、６４ブロックのメモリで、それぞれが６４ビットインタフェースを含むことができるものを含むことができる。そのような実施形態においては、６００ＭＨｚで動作する知的なメモリファブリック１０６は、３０７．２ＧＢ／秒でデータを転送することができる。別の実施形態においては、知的なメモリファブリック１０６は、任意の数のブロックのメモリで、それぞれが一つ以上のインタフェースプロトコルを実装する任意の数のインタフェースを含むことができるものを含むことができる。
【００９１】
周辺デバイス１０８は、画像センサ、加速度計等の外部デバイスとデータビットを送受信するための通信チャネルを提供するように構成されることができる。周辺デバイス１０８は、ベクトルプロセッサ１０２、ハードウェアアクセラレータ１０４及びメモリファブリック１０６が外部デバイスと通信するための通信メカニズムを提供することできる。
【００９２】
電力管理モジュール１１０は、コンピュータデバイス１００内の指定ブロックの活動を制御するように構成されることができる。より詳細には、電力管理モジュール１１０は、コンピュータデバイス１００内のパワーアイランド（power  island）とも呼ばれる、指定ブロックの電力供給電圧を制御するように構成されることができる。例えば、電力管理モジュール１１０がパワーアイランドの電力供給を可能にすると、コンピュータデバイス１００は、そのパワーアイランドに適切な電力供給電圧を提供するようにトリガされることができる。いくつかの実施形態においては、各パワーアイランドは独立した電力ドメインを含むことができる。このため、パワーアイランドの電力供給は独立して制御されることができる。いくつかの実施形態においては、電力管理モジュール１１０は、コンピュータデバイス１００内の一つ以上の入出力ピンを介してコンピュータデバイス１００に外部連結（externally  attached  to）されたパワーアイランドの活動も制御するように構成されることもできる。
【００９３】
図２は、いくつかの実施形態に従うコンピュータデバイスの詳細図を示す。コンピュータデバイス１００は、複数のベクトルプロセッサ１０２を含むことができる。この図示において、コンピュータデバイス１００は、１２個のベクトルプロセッサ１０２を含む。ベクトルプロセッサ１０２は、プロセッサ間相互接続（ＩＰＩ）２０２を介して互いに通信することができる。ベクトルプロセッサ１０２は、ＩＰＩ２０２とアクセラレータメモリコントローラ（ＡＭＣ）クロスバー２０４又はメモリマッププロセッサバス２０８を介して、メモリファブリック１０６及び／又はハードウェアアクセラレータ１０４を含む、コンピュータデバイス１００内の他のコンポーネントと通信することもできる。
【００９４】
いくつかの実施形態においては、一つ以上のベクトルプロセッサ１０２は、プロプライエタリ命令（proprietary  instruction）セットを実行するように設計されることができる。プロプライエタリ命令セットは、プロプライエタリ命令を含むことができる。プロプライエタリ命令は、命令ヘッダと一つ以上のユニット命令を含む可変長のバイナリ列である。命令ヘッダは、関連するプロプライエタリ命令用の命令長と、アクティブユニットの情報を含むことができる。ユニット命令は、固定又は可変のいずれかである多くのフィールドを含む可変長のバイナリ列であることができる。ユニット命令におけるフィールドは、命令を特定するオペコードと、ユニット命令実行の際に用いる値を特定するオペランドを含むことができる。
【００９５】
ベクトルプロセッサ１０２の詳細については、本願と同日に出願された、代理人整理番号第2209599.127US1号で特定される、「VECTOR  PROCESSOR」と題する、出願番号未定の米国特許出願で提供される。この出願の全ては参照により本願に援用される。
【００９６】
コンピュータデバイス１００は、複数のハードウェアアクセラレータ１０４を含むことができる。ハードウェアアクセラレータ１０４は、所定の処理機能を実行するように構成された様々なアクセラレータモジュールを含むことができる。いくつかの実施形態においては、所定の処理機能はフィルタリングオペレーションを含むことができる。例えば、ハードウェアアクセラレータ１０４は、ロー（raw）画像処理モジュール、レンズシェーディング補正（ＬＳＣ）モジュール、ベイヤパターンデモザイクモジュール、シャープ化フィルタモジュール、多相スカラモジュール、ハリスコーナー（Harris  Corner）検出モジュール、色合成モジュール、輝度チャネルノイズ除去モジュール、彩度チャネルノイズ除去モジュール、メジアンフィルタモジュール、検索（look-up）テーブル、畳み込みモジュール、エッジ検出モジュール及び／若しくは他の好適なモジュール又はモジュールの組み合わせを含むことができる。ハードウェアアクセラレータ１０４は、メモリファブリック１０６内に存するメモリデバイス内のデータを取り出す、及び記憶するように構成されることができる。
【００９７】
メモリファブリック１０６は、コンピュータデバイス１００内でメモリオペレーションをコーディネイト（coordinate）する中央メモリシステムを含むことができる。メモリファブリック１０６は、ベクトルプロセッサ１０２、ハードウェアアクセラレータ１０４等の処理ユニット間の不必要なデータ転送を低減するように設計されることができる。メモリファブリック１０６は、複数の処理ユニットが、データ及びストーリング（stalling）なしにプログラムコードメモリに並列的にアクセスすることができるように構築される。さらに、メモリファブリック１０６は、ホストプロセッサが、アドバンストエクステンシブルインタフェース（ＡＸＩ）等の並列バス又は他の好適なバス２０８を介して、メモリファブリック１０６内のメモリシステムにアクセスするための準備をすることができる。
【００９８】
いくつかの実施形態においては、処理ユニットは、ロードストアユニット（ＬＳＵ）ポートを通じて一周期で１２８ビットまで読み書きすることができ、その命令ポートを通じて一周期で１２８ビットまでのプログラムコードを読むことができる。プロセッサ１０２及びハードウェアアクセラレータ１０４それぞれのためのＩＰＩ２０２及びＡＭＣ２０４のインタフェースに追加して、メモリファブリック１０６は、アドバンストマイクロコントローラバスアーキテクチャ（ＡＭＢＡ）高性能バス（ＡＨＢ）及びＡＸＩバスインタフェースを通じてメモリシステムに同時的な読み書きアクセスを提供することができる。ＡＨＢ及びＡＸＩは、処理ユニット、メモリシステム、周辺デバイスが共有バスインフラストラクチャを用いて接続されることを可能にする標準的な並列インタフェースバスである。他の任意の好適なバスが用いられることができる。いくつかの実施形態においては、メモリファブリック１０６は一クロック周期でピークには１８ｘ１２８ビットのメモリアクセスを扱うように構成されることができる。別の実施形態において、メモリファブリック１０６は高速インタフェースを用いて、一クロック周期で大量のビットで任意の数のメモリアクセスを扱うように設計されることができる。
【００９９】
メモリファブリック１０６内のメモリシステムは、複数のメモリスライスを有することができ、各メモリスライスは複数のベクトルプロセッサ１０２の一つに関連付けられており、他のベクトルプロセッサ１０２に対してそのプロセッサへの優先アクセスを与える。各メモリスライスは、複数のランダムアクセスメモリ（ＲＡＭ）タイルを有することができ、各ＲＡＭタイルは読みポートと書きポートを含むことができる。いくつかの場合においては、各メモリスライスは、関連するメモリスライスへのアクセスを提供するメモリスライスコントローラを設けてよい。
【０１００】
プロセッサ及びＲＡＭタイルはＩＰＩ２０２とも呼ばれるバスを介して互いに結合されることができる。いくつかの場合において、ＩＰＩ２０２は、任意のベクトルプロセッサ１０２と任意のメモリスライスとを結合することができる。好適には、各ＲＡＭタイルは、そのタイルへのアクセスを許可するタイル制御ロジックブロックを含むことができる。タイル制御ロジックブロックは、タイル制御ロジック又はアービトレーション（arbitration）ブロックと呼ばれるときがある。
【０１０１】
いくつかの実施形態において、各メモリスライスは、複数のＲＡＭタイル又は物理的ＲＡＭブロックを含むことができる。例えば、１２８ｋＢのサイズを有するメモリスライスは、４ｋｘ３２ビットワードとして組織化された４つの３２ｋＢの単一ポートＲＡＭタイル（例えば、物理的ＲＡＭ要素）を有することができる。他の実例としては、２５６ｋＢのサイズを有するメモリスライスが、８ｋｘ３２ビットワードとして組織化された８つの３２ｋＢの単一ポートＲＡＭタイル（例えば、物理的ＲＡＭ要素）を有することができる。いくつかの実施形態においては、メモリスライスは１６ｋＢ位小さい容量を有することもあれば、１６ＭＢ位大きい容量を有することもある。別の実施形態においては、メモリスライスは、コンピュータデバイスによって扱われる様々なアプリケーションを収容する必要とされるだけの容量を有するように構成されることができる。
【０１０２】
いくつかの実施形態において、ＲＡＭタイルは、単一ポートの相補型金属酸化物半導体（ＣＭＯＳ）ＲＡＭを含むことができる。単一ポートのＣＭＯＳ  ＲＡＭの利点は、概して、大体の半導体プロセスにおいて利用可能であることである。別の実施形態において、ＲＡＭタイルは、マルチポートのＣＭＯＳ  ＲＡＭを含むことができる。いくつかの実施形態において、各ＲＡＭタイルは、１６ビット幅、３２ビット幅、６４ビット幅、１２８ビット幅又はコンピュータデバイスの特定のアプリケーションによって必要とされるだけの幅であることができる。
【０１０３】
単一ポートのメモリデバイスの使用は、メモリサブシステムの電力及び領域効率を上げる可能性があるが、メモリシステムのバンド幅を制限する可能性がある。いくつかの実施形態において、メモリファブリックは、これらのメモリデバイスが、複数のソース（プロセッサ及びハードウェアブロック）からの複数の同時的な読み書き要求をサービスすることのできる仮想的なマルチポートのメモリサブシステムとして振る舞うことができるように設計されることができる。これは、複数の物理的ＲＡＭインスタンス（instance）を用いること、及び複数のソースにサービスするため、それらへの任意のアクセスを提供することによって達成されることができる。
【０１０４】
いくつかの実施形態においては、各ＲＡＭタイルは、タイル制御ロジックに関連付けられることができる。タイル制御ロジックは、ベクトルプロセッサ１０２又はハードウェアアクセラレータ１０４からの要求を受けるとともに、関連するＲＡＭタイルの個別の読み書きポートへのアクセスを提供するように構成される。例えば、ベクトルプロセッサ１０２がＲＡＭタイル内のデータにアクセスする準備が整うと、ベクトルプロセッサ１０２がＲＡＭタイルにメモリデータ要求を直接送る前に、ベクトルプロセッサ１０２は、そのＲＡＭタイルに関連付けられたタイル制御ロジックにメモリアクセス要求を送ることができる。メモリアクセス要求は、処理要素によって要求されたデータのメモリアドレスを含むことができる。それに続き、タイル制御ロジックはメモリアクセス要求を分析し、ベクトルプロセッサ１０２がその要求されたＲＡＭタイルにアクセスすることができるか否かを決定する。ベクトルプロセッサ１０２がその要求されたＲＡＭタイルにアクセスできる場合には、タイル制御ロジックは、アクセス許可メッセージをベクトルプロセッサ１０２に送ることができ、それに続いて、ベクトルプロセッサ１０２はメモリデータ要求をＲＡＭタイルに送ることができる。
【０１０５】
いくつかの実施形態においては、タイル制御ロジックは、多くの処理ユニット（例えば、ベクトルプロセッサ及びハードウェアアクセラレータ）が同一のＲＡＭタイルにアクセスする順序を決定し、実施するように構成される。例えば、タイル制御ロジックが衝突検出器を含むことができ、その衝突検出器は、二つ以上の処理ユニットがＲＡＭタイルに同時にアクセスしようとするインスタンスを検出するように構成される。衝突検出器は、アクセス衝突が発生し、そのアクセス衝突は解決されるべきであることをランタイムスケジューラに報告するように構成されることができる。
【０１０６】
メモリファブリック１０６は、メモリからベクトルプロセッサ１０２若しくはハードウェアアクセラレータ１０４への、又はベクトルプロセッサ１０２若しくはハードウェアアクセラレータ１０４からメモリへのデータビットを転送するためのメモリバスを含むこともできる。メモリファブリック１０６は、ベクトルプロセッサ１０２、ハードウェアアクセラレータ１０４及びメモリ間のデータ転送をコーディネイトする直接メモリアクセス（ＤＭＡ）コントローラを含むこともできる。
【０１０７】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、別々のバスを介してメモリファブリック１０６に結合されることができる。別々のバスは、アクセラレータメモリコントローラ（ＡＭＣ）を含むことができ、これは、少なくとも一つハードウェアアクセラレータからの要求を受け、関連するメモリスライスコントローラを介して、メモリスライスへのアクセスをハードウェアアクセラレータに対して許可するように構成される。ハードウェアアクセラレータ１０４により採用されるメモリアクセスパスは、ベクトルプロセッサ１０２により採用されるパスとは異なる可能性があることが理解されるだろう。実際、ＡＭＣ２０４は、アドレスフィルタリング、アービトレーション（arbitration）及び多重化を行うことができる。いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、メモリファブリック１０６にアクセスする際の遅延を考慮する内部バッファ（例えば、ＦＩＦＯメモリ）を含むことができる。
【０１０８】
いくつかの実施形態においては、ＡＭＣ２０４は、例えば、複数のモバイルインダストリプロセッサインタフェース（ＭＩＰＩ：Mobile  Industry  Processor  Interface）カメラインタフェースを含む一つ以上の周辺デバイス１０８に結合されることができる。ＡＭＣ２０４は、二つのシステムＲＩＳＣプロセッサがＡＭＣ２０４を介してメモリファブリック１０６内のメモリスライスにアクセスするのを可能にするＡＸＩインタフェース及びＡＰＢインタフェースに接続されることもできる。
【０１０９】
いくつかの実施形態において、ＡＭＣ２０４は、メモリファブリック１０６の各メモリスライスへの一対の６４ビットポートを含むことができる。ＡＭＣ２０４は、ハードウェアアクセラレータ１０４からの要求を部分アドレス復号化によって、適切なメモリスライスに転送する（route）ように構成されることができる。
【０１１０】
いくつかの実施形態において、ＡＭＣ２０４は、様々な処理ユニットに結合されて、メモリファブリック１０６内のメモリスライスへのアクセスを提供することができる。例えば、任意のタイプのハードウェアアクセラレータ又はサードパーティー要素に結合されて、メモリファブリック１０６内のメモリスライスへのアクセスを提供することができる。ＡＭＣ２０４は、コンピュータデバイス１００の外部にあるメモリデバイスを含む、コンピューティングシステムのより広いメモリ空間へのアクセスを提供するように構成されることもできる。
【０１１１】
いくつかの実施形態において、ＡＭＣ２０４は、同一のメモリスライスへの同時のメモリアクセス要求をラウンドロビン方式で調停する（arbitrate）ことができる。例えば、ハードウェアアクセラレータ１０４等の処理ユニットは、ＡＭＣ２０４にメモリアドレスを含むメモリアクセス要求を送ることができる。ＡＭＣ２０４がメモリアクセス要求を受けると、ＡＭＣ２０４はメモリアクセス要求内のメモリアドレスが、メモリファブリック１０６内のメモリスライスに関連付けられているかを決定する。メモリアクセス要求内のメモリアドレスがメモリファブリック１０６内のメモリスライスに関連付けられていない場合は、ＡＭＣ２０４はそのメモリ要求をＡＭＣのＡＸＩマスタに転送する（forward）ことができる。メモリアクセス要求内のメモリアドレスがメモリファブリック１０６内のメモリスライスに関連付けられている場合、ＡＭＣ２０４はメモリアクセス要求を調停して、所望のメモリロケーションへのアクセスを提供する。
【０１１２】
周辺デバイス１０８は、複数の異機種環境にある画像センサ、加速度計等の外部デバイスとデータビットを送受信する通信チャネルを提供するように構成されることができる。周辺デバイス１０８は、ベクトルプロセッサ１０２、ハードウェアアクセラレータ１０４及びメモリファブリック１０６が外部デバイスと通信するための通信メカニズムを提供することができる。
【０１１３】
伝統的に、周辺デバイスの機能は固定的であり、ハードコード化（hard-code）されている。例えば、モバイルインダストリプロセッサインタフェース（ＭＩＰＩ）の周辺デバイスは、ＳＰＩ、Ｉ２Ｃ、Ｉ２Ｓ、その他の好適な規格等の低速（lower-rate）なデジタルインタフェースも実装する外部デバイスと適合する（interface  with）ことしかできなかった。
【０１１４】
しかし、本開示のいくつかの実施形態においては、周辺デバイス１０８の機能はソフトウェアを用いて規定されることができる。より詳細には、周辺デバイス１０８は、ＳＰＩ、Ｉ２Ｃ、Ｉ２Ｓ、その他の好適なプロトコル等の標準インタフェースプロトコルの機能をエミュレートすることができるエミュレーションモジュールを含むことができる。
【０１１５】
電力管理モジュール１１０は、コンピュータデバイス１００内のブロックの活動を制御するように構成される。より詳細には、電力管理モジュール１１０は、パワーアイランド（power  island）とも呼ばれる、指定ブロックの電力供給電圧を制御するように構成されることができる。例えば、電力管理モジュール１１０がパワーアイランドの電力供給を可能にすると、コンピュータデバイス１００は、そのパワーアイランドに適切な電力供給電圧を提供するように構成される。電力管理モジュール１１０は、レジスタ内又はバス上の信号ラインにイネイブル信号（enable  signal）を印加することによって、パワーアイランドの電力供給を可能にするように構成されることができる。いくつかの実施形態においては、電力管理モジュール１１０は、コンピュータデバイス１００内の一つ以上の入出力ピンを介して外部デバイスの活動を制御するように構成されることもできる。
【０１１６】
いくつかの実施形態においては、あるパワーアイランドは常にパワーオン（powered-on）されていることができる（例えば、電力供給電圧がパワーアイランドに常に供給されている）。そのようなパワーアイランドは、常時オンパワーアイランドと呼ばれることができる。いくつかの実施形態においては、常時オンパワーアイランドは、例えば、汎用入出力（ＧＰＩＯ）ピン、外部インタフェース及び／又は低周波タイマ、パワーオンリセット等の内部機能ブロックからの信号を監視するのに用いられることができる。このように、コンピュータデバイス１００は、イベント又は一連のイベントに対応し、そのイベント又はそれら一連のイベントに対応するのに必要とされるパワーアイランドのみを適応的にパワーオンすることができる。
【０１１７】
図３は、いくつかの実施形態に従うハードウェアアクセラレータを示す。ハードウェアアクセラレータ１０４は、ハードウェア画像処理フィルタの一群を含むことができる。ハードウェアアクセラレータ１０４は、いくつかの計算的に集約された機能をベクトルプロセッサ１０２から解放する（offloaded）ことを可能にする。ハードウェアアクセラレータ１０４は、ＡＭＣ２０に結合されることができ、高帯域でメモリファブリック１０６内のメモリスライスにアクセスする。
【０１１８】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、ＡＭＣ２０４を介してメモリファブリック１０６に結合されることができる。いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、ＭＩＰＩ受信フィルタ及びＭＩＰＩ送信フィルタを含む一つ以上のフィルタモジュール（例えば、２０個のフィルタモジュール）を含むことができる。いくつかの実施形態において、フィルタモジュールは、一つの読み出し専用ＡＭＣインタフェース（読み出しクライアントインタフェース）と、一つの書き込み専用ＡＭＣインタフェース（書き込みクライアントインタフェース）と、を含んでよい。別の実施形態においては、フィルタモジュールは、複数の読み出し専用ＡＭＣインタフェースを有することもできる。例えば、フィルタモジュールは、複数の入力バッファ、（同一バッファからの）複数のプレーン（plane）への並列アクセスのための複数の読み出し専用ＡＭＣインタフェースを有してよい。複数の読み出し専用ＡＭＣインタフェースは、フィルタモジュールの処理スループットを維持するための追加の（extra）メモリ読み出し帯域を提供するに用いられることができる。ハードウェアアクセラレータ１０４は単一のフィルタモジュールのみを有する可能性があるため、ハードウェアアクセラレータ１０４の説明は、各フィルタモジュールに等しく適用可能であることができる。同様に、そのフィルタモジュールがハードウェアアクセラレータ内の唯一のフィルタモジュールである可能性があるため、フィルタモジュールの説明は、ハードウェアアクセラレータに等しく適用可能であることができる。
【０１１９】
いくつかの実施形態においては、ＡＭＣ２０４は、メモリファブリック１０６内の各メモリスライスへの一つ以上の両方向（例えば、読み出し／書き込み）ポートを有する。ポートは、多数のビットに対応する(accommodate)ことができる。例えば、ポートは６４ビット通信を対応することができる。いくつかの実施形態においては、ＡＭＣ２０４は、外部ＤＲＡＭデバイスへの直接的な接続を提供するＡＸＩマスタを含むこともできる。
【０１２０】
いくつかの実施形態においては、フィルタモジュールは、主に、メモリファブリック１０６内のバッファを処理するように設計されることができる。例えば、ＭＩＰＩ受信フィルタ及びＭＩＰＩ送信フィルタの例外（exception）により、フィルタモジュールはＡＭＣクライアントを介してのみデータを入出力することができる。バッファベースアドレスを含む、フィルタモジュールの構成は、複数のＡＰＢスレーブインタフェースを介して達成されることができる。
【０１２１】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、ＭＩＰＩ受信フィルタモジュール及びＭＩＰＩ送信フィルタモジュールを介して画像を受けることができる。ＭＩＰＩ受信フィルタモジュール及びＭＩＰＩ送信フィルタモジュールは、ハードウェアアクセラレータ１０４内の他のフィルタモジュールがＭＩＰＩ受信コントローラ及びＭＩＰＩ送信コントローラへの直接的な接続を確立することができるようにすることができる。ＭＩＰＩ受信フィルタモジュール及びＭＩＰＩ送信フィルタモジュールは並列インタフェースを介して、ＭＩＰＩコントローラに接続することができ、メモリファブリック１０６からＭＩＰＩコントローラへ及びＭＩＰＩコントローラからメモリファブリック１０６に直接的にデータを流すのに用いられることができる。
【０１２２】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、ＡＭＣ２０４を介してアクセスされた、メモリファブリック１０６内にバッファされた画像データの走査ラインに作用することができる。ＡＭＣ２０４は、クライアントインタフェースからのトランザクションを対象のメモリスライス（又はＡＸＩマスタ）に転送し、各メモリスライスでの異なるクライアントからの同時に起こるトランザクション間の調停をすることができる。いくつかの実施形態においては、ハードウェアアクセラレータ１０４内の複数のフィルタモジュールは、一つ以上のフィルタモジュール（プロデューサ／ペアレントとも呼ばれる）の出力バッファを他のフィルタモジュール（コンシューマ／チルドレンとも呼ばれる）の入力バッファに結合することによって、ストリーミング形式で互いに接続されることができる。
【０１２３】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４内のフィルタモジュールは、現画素（current  pixel）を中心とする複数の画素についての２次元カーネルを作用させることができる。カーネル内の全ての画素が、現画素を中心とする複数の画素を処理するのに貢献する。
【０１２４】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４内のフィルタモジュールは、ラインごとに画像を処理することができる。例えば、フィルタモジュールは、上から下に向かって画像を走査することができ、画像の走査ラインを生成する。そして、それらの走査ラインを処理する。例えば、左から右に移動させることがある。別の例においては、フィルタモジュールは、フィルタリング処理に好適な任意の方向／順序で画像を走査することによって画像の走査ラインを生成することができる。
【０１２５】
いくつかの実施形態においては、フィルタモジュールは、データを読み込むことによって画像の走査ラインを処理して、走査ライン上の第一画素に対するカーネルを形成することができる。フィルタモジュールは、スライディングウィンドウ方式で、カーネルをスライドさせることによって走査ラインを処理することができる。一旦処理が完了すると、フィルタモジュールは出力画素を出力バッファ又はメモリロケーションに書き込むことができる。
【０１２６】
いくつかの実施形態においては、フィルタリングのためのカーネルは、代表的には、正方であり、各辺に奇数個の画素を有することが多い。例えば、３×３、５×５又は７×７である。フィルタモジュールがＫ×Ｋ画素カーネルを用いる場合、処理される画像データの各ラインに対して、Ｋ本の画像の走査ラインが入力バッファから読み出され、出力バッファに書き出されることができる。
【０１２７】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４はサーキュラー入力バッファを有することができる。ここで、対象のフィルタモジュールが他のフィルタモジュール（ペアレントフィルタモジュールとも呼ばれる）の出力走査ラインを入力して受けるように構成されていると想定する。また、対象のフィルタモジュールはＫ×Ｋ画素カーネルを用いると想定する。すると、対象のフィルタモジュールのための入力バッファは、画像データの少なくとも（Ｋ＋１）本の走査ラインを維持するように設計されることができる。つまり、フィルタモジュールのためのＫ本の走査ラインと、同時にペアレントフィルタモジュールの出力走査ラインを受け取るための一本（以上の）走査ラインである。ほとんどの場合においては、ペアレントフィルタモジュールは、入力画像内の現ライン番号の観点からは対象のフィルタモジュールに先んじている（be  ahead  of）。初期設定（initial  configuration）の後、フィルタモジュールによるＡＭＣクライアントへの読み書きは、フィルタモジュールの入出力バッファにアクセスするときに、サーキュラーバッファアドレスラッピング（wrapping）に対処することができる。
【０１２８】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４内のバッファは、所定バイト数で調整されることができる。例えば、ハードウェアアクセラレータ１０４内のバッファは８バイト境界で調整されることができる。トランザクションのルーチンを簡単にするため、読み出し及び買い込みクライアント並びにＡＭＣは、調整されたバッファアクセスのみを提供するように構成されることができる。画像の幅が所定バイト数の倍数でないときは、ハードウェアアクセラレータ１０４は、ヌルバイト（null  byte）を書き込んで、（調整されてない）走査ラインの端と次のバイト境界との間のバッファの間のバッファを出力するように構成されることができる。
【０１２９】
図３は、入力データストリーム（例えば、一つ以上の画像の走査ライン）について、フィルタカーネルレジスタ３０２内に記憶されたフィルタカーネルを作用させるハードウェアアクセラレータの実装を示す。入力データストリームは、一つ以上の画像の画素に対応することができる。ハードウェアアクセラレータ１０４は、データパスパイプライン３０４、パイプラインストールコントローラ３０６、ラインバッファクライアント読み出しクライアント３０８、ライン開始コントローラ３１０、ラインバッファ書き込みクライアント３１２と、を含むことができる。いくつかの実施形態においては、ハードウェアクライアント１−４は、メモリファブリック内のメモリスライスにアクセスするための、少なくとも一つのＡＭＣ読み出しクライアントインタフェース３１４及び／又は少なくとも一つのＡＭＣ書き込みクライアントインタフェース３１６を含む。ＡＭＣ２０４上の読み出し／書き込みクライアントインタフェースの数は、好適に構成されることができる。
【０１３０】
いくつかの実施形態においては、フィルタカーネルレジスタ３２０は、入力データストリームについて作用するカーネルを修正するようにプログラムされることができる。フィルタカーネルレジスタ３０２は、様々なカーネルサイズを収容することができる。例えば、フィルタカーネルレジスタ３０２は、３×３カーネル、５×５カーネル、７×７カーネル、９×９カーネル、その他のｍ×ｎで表されるカーネルサイズを収容することができる。いくつかの場合においては、ｍはｎと同じであることができ、その他の場合においては、ｍはｎと異なることができる。いくつかの実施形態においては、フィルタカーネルレジスタ３０２は様々な次元のカーネルを収容することができる。例えば、フィルタカーネルレジスタ３０２は１次元フィルタ、２次元フィルタ、３次元フィルタ、その他の任意の整数次元フィルタを含むように構成されることができる。
【０１３１】
いくつかの実施形態においては、ラインバッファ読み出しクライアント３０８は、画像の走査ライン（例えば、画像グリッド上での画像の行又は列）を受け、走査ラインをデータパスパイプライン３０４に提供するように構成されることができる。ラインバッファ読み出しクライアント３０８は、ＡＭＣ読み出しインタフェース３１４を介して画像の走査ラインを受けることができる。一旦、データパスパイプライン３０４はカーネル及び画像の走査ラインを受けると、データパスパイプライン３０４は、フィルタリングオペレーションを行うことができる。一旦、データパスパイプライン３０４はフィルタリングオペレーションを完了すると、データパスパイプライン３０４は、ラインバッファ書き出しクライアント３１２内に結果ラインを記憶することができる。ラインバッファ書き込みクライアント３１２は、任意で、ＡＭＣ書き込みインタフェース３１６を介してメモリスライス内に結果ラインを記憶することができる。パイプラインストールコントローラ３０６は、パイプラインの所定の部分をストールして、ラインバッファ書きこみクライアント３１２がオーバーフローしないことを保証することができる。
【０１３２】
いくつかの実施形態においては、ライン開始コントローラ３１０は、データパスパイプライン３０４が、画像の受けた走査ラインの処理を開始するタイムインスタンスを制御することができる。ライン開始コントローラ３１０は、選択的に、データパスパイプライン３０４の一つ以上の部分がカスタムされたオペレーションを行えるようにするように構成される。いくつかの場合においては、ライン開始コントローラ３１０は、データパスパイプライン３０４によってフィルタリングオペレーション時に用いられる係数を制御することもできる。
【０１３３】
いくつかの実施形態においては、データパスパイプライン３０４及びライン開始コントローラ３１０はプログラマブルであることができる。データパスパイプライン３０４及びライン開始コントローラ３１０は、様々なタイプのフィルタリングオペレーションがハードウェアアクセラレータ１０４により行われることができるようにプログラムされることができる。例えば、データパスパイプライン３０４及びライン開始コントローラ３１０は、係数セット、閾値等のフィルタリングオペレーションパラメータでプログラムされることができ、これによりカスタムされたフィルタリングオペレーションがハードウェアアクセラレータ１０４により実行されることができる。フィルタリングオペレーションパラメータは、フィルタカーネルサイズ、係数、拡大率、ゲイン、閾値、ルックアップテーブル、その他の好適なパラメータを含むこともできる。このため、ハードウェアアクセラレータ１０４は、様々なフィルタリングオペレーションを収容する汎用ラッパー（wrapper）と見なされることができる。
【０１３４】
いくつかの実施形態においては、データパスパイプライン３０４は一つ以上の数値フォーマットで表された数を処理するように構成されることができる。例えば、データパスパイプライン３０４は、例えば、ｆｐ１６（ＩＥＥＥ７５４のような１６ビット浮動小数点数フォーマット）である浮動小数点数、整数、固定小数点数、その他の画像処理に好適な数値フォーマットで動作するように設計されることができる。
【０１３５】
ハードウェアアクセラレータ１０４は、データパスパイプライン３０４が入力データバッファ３０８からの走査ラインをどのように消費するか、及び、データパスパイプライン３０４が処理された走査ラインを出力データバッファ３１２にどのように記憶するかを制御するように構成されることができる。ハードウェアアクセラレータ１０４は、２つの制御モードのうち一つを実装するように構成されることができる。それは、バッファフィル制御（ＢＦＣ）（Buffer  fill  control）モード及び同期モード（synchronous  mode）
【０１３６】
いくかの実施形態において、ＢＦＣモードでは、ハードウェアアクセラレータ１０４は、フィルイベント（例えば、入力バッファ内に記憶される走査ライン数）の内部カウントを維持するように構成されることができる。ハードウェアアクセラレータ１０４は、（１）ハードウェアアクセラレータがイネイブル（enabled）され、（２）その入力バッファが十分な走査ラインを有し、かつ（３）その出力バッファ内に処理された走査ラインを記憶するスペースがあるときにその入力バッファからの走査ラインを自律的に処理するように構成されることができる。いくつかの場合において、データパスパイプライン３０４を動作させるに必要なバッファフィルレベルは、カーネルの高さに依存することができる。例えば、カーネルが３×３であるときは、ハードウェアアクセラレータ１０４は、フィルタを作用させるため、少なくとも３本の走査ラインを必要とすることができる。
【０１３７】
いくつかの実施形態において、同期制御モードでは、ハードウェアアクセラレータ内のフィルタモジュールは、フィルタモジュールに対する開始ビットがオンにされたときに動作するように構成されることができる。開始ビットは、例えば、ソフトウェアモジュールを用いてオンにされることができる。同期制御では、ソフトウェアモジュールは、フィルタモジュールに対する入力バッファが十分な走査ライン数を有し、そのフィルタモジュールに対する出力バッファが、フィルタモジュールから処理された走査ラインを記憶するのに十分なスペースを有しているかを決定するように構成されることができる。一旦、これらの条件が満たされると、ソフトウェアモジュールはフィルタモジュールの開始ビットをオンにすることができる。
【０１３８】
いずれのモードでも、一旦、フィルタモジュールが走査ラインを処理すると、そのフィルタモジュールは、バッファ内及び入力画像内での現ラインインデクスを更新する。いくつかの実施形態においては、出力画像が入力画像と同一のサイズを有していないときは、フィルタモジュールは、その上、出力画像内の現ラインインデクスを更新することができる。ラインインデクス（及びバッファフィル制御に対するバッファフィルレベル）の値は、フィルタモジュールの内部状態を表すことができる。この内部状態は、ソフトウェアモジュールによってアクセスされることができ、フィルタモジュールの次の周期での動作の前にフィルタモジュールの内容が切り替わることができるように、記憶、更新及び回復されることができる。
【０１３９】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４内のバッファは、複数のデータプレーンを維持するように構成されることができる。例えば、ハードウェアアクセラレータ１０４内のバッファは、別々のプレーン内で画像の赤チャネル、緑チャネル、青チャネルを維持するように構成されることができる。いくつかの例においては、ハードウェアアクセラレータ１０４内のバッファは１６までのプレーンをサポートするように構成されることができる。各プレーン内の画像データの走査ラインは、継続的に記憶されることができ、それらの数及びプレーンストライド（plane  stride）によってプレーンが規定されることができる。
【０１４０】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４内のフィルタモジュールは、一度に連続して各データプレーンからの走査ラインを処理するように構成されることができる。連続的な処理のため、制御の観点からは、全てのプレーンからの走査ラインは、同一のタイムスタンプを有すると見なされることができる。他の実施形態においては、ハードウェアアクセラレータ１０４内のフィルタモジュールは、複数のデータプレーンを並列で処理するように構成されることができる。
【０１４１】
いくつかの実施形態においては、画像／動画ストリームを処理する前に、又はコンテンツが切り替えられた場合に、フィルタモジュールが適切に構成され、イネイブルされることができる。各フィルタモジュールは、入力バッファ及び出力バッファ構成を規定するソフトウェアプログラマブルなレジスタのセットを含むことができる。
【０１４２】
いくつかの実施形態においては、フィルタモジュール内のバッファは、一つ以上の次のパラメータを用いてプログラムされることができる。
・  ｂａｓｅ：このパラメータは、バッファのベースアドレスを特定することができる。アドレスはバイト境界（例えば、ＡＭＣクライアントデータバスの幅）で調整されることができる。
・  ｎｌ：スキャンライン数。サーキュラーバッファモードにおいては、このパラメータは、スキャンラインにおけるサーキュラーバッファのサイズを特定することができる。サーキュラーバッファに対する最大走査ライン数は、１０２３であることができる。しかし、他の上限境界も可能である。バッファがｎｌ＝０で構成される場合、バッファが非サーキュラーモードであることを示す。このため、ｎｌ＝０では、読み出し／書きこみクライアントが、非サーキューラー又は非ラップ（no-wrap）モードでバッファにアクセスする。ここでは、バッファ内の走査ライン数が画像の高さに対応し、サーキュラーバッファポインタラッピング（pointer  wrapping）が起きない。
・  ｌｓ：ラインストライド。ラインストライドは、例えば、８バイトである、固定バイト数の倍数（a  multiple  of）であることができる。最大ラインストライドは、予め決められることができる。例えば、最大ラインストライドは、（３２ＭＢ−８）バイトであることができる。ラインストライド及びライン数は、サーキュラーバッファポインタ演算を行う読み出し／書き込みクライアントに用いられることができる。ラインストライドは、画像の幅よりも大きい又はこれと等しくあることができる。
・  ｎｐ：プレーン数。このパラメータは、バッファによって表されるプレーン数を示す。ｎｐ＝０であるときは、バッファが非プレーンデータを表すことを示す（たとえば、単一プレーンデータ）。バッファ内のラインバッファストレージ量はプレーン数を乗じることができる。
・  ｐｓ：プレーンストライド。プレーンストライドは、例えば、８バイトである、固定バイト数の倍数である。最大プレーンストライドは、予め決められることができる。例えば、最大プレーンストライドは、（３２ＭＢ−８）バイトであることができる。通常、プレーンストライドは、ｌｓを乗ずるｎｌよりも大きい又はこれと等しくあることができる。しかし、他のプレーンストライドが可能である。
・  ｆｏｒｍａｔ：バッファデータフォーマット。このパラメータは、バイトで画素データのサイズを特定することができる。例えば、ＦＰ１６バッファに対しては、画素当たり２バイトを示す、２にフォーマットは設定されることができる。
【０１４３】
いくつかの実施形態においては、バッファモジュール内の出力バッファは、次の一つ以上のパラメータを用いてプログラムされることができる。
・  ｏｆｆｓｅｔ：オフセットは、ベースアドレス（及び各ラインの開始）から第一画素までのオフセットを特定することができる。このパラメータは、バイト境界で調整されたバッファの制限に対処する（work-around）のに用いられることができる。オフセットを用いると、出力バッファコンシューマによって、例えば、水平方向の画素パディング（padding）に対して、走査ラインの左側でスペースが予約されることができる。デフォルトのオフセットはゼロである。非ゼロのオフセットが特定される場合、ヌルバイトが、第一出力ピクセルの前の各出力走査ラインに書き込まれることができる。
【０１４４】
いくつかの実施形態においては、フィルタモジュールは種々なデータタイプをサポートすることができる。フィルタモジュールによってサポートされる最も一般的なデータタイプは、以下に挙げられる。
・  Ｕ８：符号なし８ビット整数データ
・  Ｕ８Ｆ：符号なし８ビット小数データ。範囲［０，１．０］
・  Ｕ１６：符号なし１６ビット整数データ
・  Ｕ３２：符号なし３２ビット整数データ
・  ＦＰ１６：半精度（１６ビット）浮動小数点
・  ＦＰ３２：全精度（３２ビット）（full-precision）浮動小数点
【０１４５】
いくつかの実施形態においては、フィルタモジュールのデータパスパイプラインは、その動作に対して最適化されることができる。つまり、半精度浮動小数（ＦＰ１６）演算は、高ダイナミックレンジを含むオペレーションに用いられることができ、最適化された固定浮動小数点演算は、高い精度を維持することがより重要である場合に用いられることができる。
【０１４６】
いくつかの実施形態においては、ＦＰ１６演算を用いて実装されたフィルタモジュールは、ＦＰ１６バッファのみの読み出し／書き込みに制限されなくてよい。Ｕ８ＦバッファがＦＰ１６との変換によりアクセスされてもよく、それはフィルタモジュール内で自動的に起きる。
【０１４７】
いくつかの実施形態においては、フィルタモジュールがＦＰ１６演算を用いて実装された場合、バッファはＦＰ１６又はＵ８Ｆのいずれかになる。バッファがＦＰ１６であるときは、バッファ構成フォーマットは、２に設定されることができる。バッファがＵ８Ｆである場合は、バッファ構成フォーマットは１に設定されることができる。ＦＰ１６データパスパイプラインでのフィルタモジュールに対して、入力バッファフォーマットが１である場合、読み出しクライアントは、処理前にＵ８Ｆ入力データをＦＰ１６に自動的に変換することができる。出力バッファフォーマットが１である場合、書き込みクライアントは、ストレージ前にデータパスパイプラインからのＦＰ１６をＵ８Ｆに変換することができる。
【０１４８】
いくつかの実施形態においては、Ｕ８Ｆは、１．０／２５５を乗ずることによって範囲［０，１．０］内で正規化ＦＰ１６に変換される。正規化ＦＰ１６は、２５５を乗じて、丸めることによってＵ８Ｆに変換されることができ、浮動小数点数を８ビットに効率的に量子化する。いくつかの実施形態において、ＦＰ１６データパスパイプラインでのフィルタモジュールからの出力データは、任意で、正規化範囲［０，１．０］に固定される（clamped）ことができる。Ｕ８Ｆへの変換が有効（enabled）である場合は、正規化範囲への固定は暗黙的に有効であり、上述したＵ８Ｆへの変換の前に行われる。ＦＰ１６データパスパイプラインを用いて実装されたフィルタモジュールは正規化範囲［０，１．０］内のデータを処理するのに制限されず、ＦＰ１６の全範囲もサポートされることができる。
【０１４９】
いくつかの実施形態においては、フィルタモジュールは入力画像内の垂直方向での位置を追跡するように構成される。フィルタモジュールはこの情報を用いて、ライン複製又は反射（reflection）により画像の上端及び下端での垂直方向パディングを行うことができる。垂直方向パディングを行わないフィルタモジュールは、入力画像より小さい出力画像を生成することができるが、いくつかの場合においては望ましくない可能性がある。
【０１５０】
いくつかの実施形態においては、フィルタモジュールが垂直パディングを行うように構成されたとき、入力バッファにより維持されることができる最小走査ラインＭは、
Ｍ＝（Ｋ＞＞１）＋１
であることができる。ここで、＞＞は右シフト演算子を示す。画像の上端では、（走査ラインの観点での）入力バッファの容量がＭより小さいとき、フィルタリングオペレーションを行うのに十分なバッファ内の走査ラインがない。（走査ラインの観点での）入力バッファの容量がＭより大きい又はこれと等しいとき、垂直パディングが行われる場合にデータは処理されることができる。同様に、画像の下端では、最後（Ｋ＞＞１）ラインを処理するときに、フィルタモジュールはラインＮ−１の複製（又は、ラインＮ−１及びそれの上方のラインの反射）を行うことができる。
【０１５１】
いくつかの実施形態においては、垂直方向パディングはカーネルが偶数次元を有するときに行われる。偶数次元を備えたカーネルに対する垂直方向パディングは、奇数次元を備えたカーネルに対する垂直方向パディングと実質的に同一であることができるが、一つ少ないラインが下端でパディングされるべきであることを除く。
【０１５２】
いくつかの実施形態においては、フィルタモジュールは、水平方向パディングを行うことができる。画素カーネルの水平方向パディングは、データが入力バッファから読み出され、画素カーネルレジスタに書き込まれるときに行われることができる。そのフィルタモジュールは、現ラインでの位置及びラインの開始と終了を知っていることができる。このため、有効な画素カーネルレジスタは、有効データを保持しないものに複製されることができる。垂直パディングのように、水平方向パディングが行われるか否かは、所与のフィルタモジュールの特定の機能及び要件に依存する可能性がある。
【０１５３】
いくつかの実施形態において、サーキュラーバッファモードにおいては、フィルタモジュールはその入力バッファから一本の走査ラインを処理して、処理された走査ラインをその出力バッファに書き込むように構成されることができる。このオペレーションセットは、フィルタ動作（filter  run）として参照されることができる。
【０１５４】
いくつかの実施形態においては、フレキシビリティについて、フィルタ動作が制御される２つの異なる制御メカニズムが提供されることができる。一つ目のメカニズムにおいては、バッファフィルコントロールと呼ばれ、フィルタモジュールはその現バッファのフィルイベントを追跡することができ、それ自身において、それが動作することができるか否かを決定することができる。このアプローチは、事実上、非同期である。フィルタモジュールは、要求された条件が満たされる限り、場合により繰り返し動作することができる。レジスタ内に制御ビットが提供されて、ソフトウェアは、走査ラインが入力バッファに加えられた又は出力バッファから除かれたときにフィルタモジュールに知らせることができる。走査ラインが入力バッファに加えられたときは、フィルレベルは上げることができる。走査ラインが出力バッファから除かれたときは、フィルレベルは下げることができる。このモードにおいては、フィルタモジュールは、入出力バッファとまとめて、走査ラインがエントリを占有し、走査ライン数により構成されるＦＩＦＯの深さを備えた、入出力バッファについてプログラムされたＦＩＦＯとして捉えられることができる。
【０１５５】
いくつかの実施形態においては、フィルタモジュールの入力バッファがフルでない場合には、他のフィルタモジュールがＦＩＦＯに走査ラインを加えることができる。他のフィルタモジュールが入力バッファに走査ラインを加えるのを許可する前に、ソフトウェアは入力バッファのフィルレベルをチェックする。それに続いて、ソフトウェア又はフィルタモジュールは入力バッファに関連したフィルレベルを上げることができる。出力側では、出力バッファのフィルレベルを下げる前に（例えば、フィルタの出力バッファ内のラインが他のフィルタがより処理された後、ＦＩＦＯを読み出す等）、ソフトウェアは出力バッファのフィルレベルをチェックする、又はフィルタモジュールが新たな走査ラインをその出力バッファに加えたことを示す割り込みイベントに応答することができる。
【０１５６】
二つ目のメカニズムは、同期モードと呼ばれ、ソフトウェアに依存して、各フィルタ動作の予定を明確に立てる。各フィルタモジュールについての開始ビットが、ソフトウェアが書き込むことができるレジスタ内に提供されることでフィルタ動作を即座に開始する。このメカニズムによって開始されると、フィルタモジュールは厳密に一度だけ実行されることができる。
【０１５７】
いくつかの実施形態においては、フィルタモジュールは、それが割り込み要求を受けたときに中断されることができる。いくつかの場合においては、外部の割り込み要求ラインにマップされ、中断コントローラにより転送される（routed）複数の割り込み要求ソースを有することができる。フィルタモジュールが割り込みにフラグを立てて、その割り込みが使用可能であるときは、対応する外部割り込み要求ラインがフラグ付けされることができる。
【０１５８】
いくつかの実施形態においては、複数の割り込み要求ソースは、
・  入力バッファのフィルレベルのデクリメント割り込み
・  出力バッファのフィルレベルのインクリメント割り込み
・  フレーム完了（frame  done）割り込み
出力バッファのフィルレベルのデクリメント割り込みは、フレームモジュールが、同期モードで作用するように構成されているとき、フィルタモジュールがそのフィルタ動作を完了したことを示すものとみなされることもできる。
【０１５９】
いくつかの実施形態において、ハードウェアアクセラレータ１０４は、深度情報に基づいたフィルタリングオペレーションを適用することができる。例えば、ハードウェアアクセラレータ１０４は、３０ヤードよりも離れた物体に関連付けられた画素のみを条件的にぼやかす、又は５ヤードを超える画素は、１０ヤードを超える画素よりも少なめにぼやかされるようにする等となるように構成されることができる。
【０１６０】
図４は、いくつかの実施形態に従う、深度情報に基づいたフィルタリングオペレーションを適用することができるハードウェアアクセラレータを示す。深度認識ハードウェアアクセラレータ４０２は、図３のハードウェアアクセラレータのモジュール内のモジュールに加えて、深度マップ読み出しクライアント４０４と、深度マップモジュール４０６と、を含む。深度マップ読み出しクライアント４０４は、対応する画像内の画素で表される物体の深さを示す深度マップを受けるように構成される。例えば、ラインバッファ読み出しクライアント３０８は、画像の走査ラインを受け、深度マップ読み出しクライアント４０４は、その画像の走査ラインに対応する深度マップを受けるように構成されることができる。
【０１６１】
それに続いて、深度マップ読み出しクライアント４０４は、深度マップを深度マップモジュール４０６に提供することができる。深度マップの解像度が画像の走査ラインの解像度よりも低いときは、深度マップモジュール４０６は、深度マップをアップサンプルして、深度マップの解像度と走査ラインの解像度とを合致させるように構成されることができる。深度マップが画像の走査ラインと時間的に同期していないときは、深度マップモジュール４０６は、深度マップと走査ラインとを同期させるように構成されることができる。それに続いて、深度マップモジュール４０６は、ライン開始コントローラ３１０がデータパスパイプライン３０４の動作を制御することができるように、処理された深度マップをライン開始コントローラ３１０に提供することができる。より一般的には、演算機能は、比較器を用いた、画素位置での深さと一つ以上の閾値との比較に基づく、あるいは、バイパスマルチプレクサを用いて出力される比較器の代わりに適用されることができる各画素に関連したバイナリ制御ビットをもちって直接的に、のいずれかによって条件的に適用されることができる。
【０１６２】
伝統的には、画像処理オペレーションのためのハードウェアアクセラレータは、予め定められた順序でアレンジされたハードワイヤードの画像信号処理（ＩＳＰ）機能の固定セットを含んでいた。図５は、伝統的なハードウェアアクセラレータを示す。伝統的なハードウェアアクセラレータ５００は、メモリデバイス５０４から画像を受け、設計時に予め定められた順序のＩＳＰ機能５０２Ａ〜５０２Ｈを用いて受けた画像を処理する。図５に示された例においては、ハードウェアアクセラレータ５００は図示された順序の８つのＩＳＰ機能を用いて、受けた画像を処理する。このアプローチは、かなり非フレキシブルであり、ハードウェアアクセラレータ５００が用いられることができる用途領域を限ってしまう。画像センサ技術は、高速に進展し、現在及び詳細の全てのセンサに対して単一の固定のＩＳＰパイプラインを用いることを予測するのは難しい。さらに、ＩＳＰ機能が複数の走査ラインについてのフィルタを作用させるときは、ＩＳＰ機能はバッファ内に、十分な数の走査ラインが存在するまで到来する走査ラインを記憶しなくてはならない。これらのバッファは、代表的には、画像の解像度に従ったサイズのＲＡＭデバイスを用いて実装される。そして、バッファのサイズは、ハードウェアアクセラレータ５００の設計時に予め定められる。このため、ＩＳＰに対するバッファは、ハードウェアアクセラレータ５００により扱われることのできる画像の解像度に厳しい制約を効果的に課す可能性がある。追加的に、バッファはＩＳＰ機能にプライベートなものであるため、バッファは、他の状況（例えば、ソフトウェアによって）で用いられることができず、大量のダイ（die）領域を消費する可能性がある。
【０１６３】
いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、汎用的で主要なＩＳＰ機能をつなぐことによって、伝統的なハードウェアアクセラレータの非フレキシブル性に対処する。しばしば、ハードウェアアクセラレータの間の違いはハードウェアアクセラレータにより実装されたＩＳＰ機能の機能性にはあまりなく、ＩＳＰ機能が呼び出される順序（及び、いくつかの場合においては、回数）にある。このため、ハードウェアアクセラレータ１０４は、効率的に実装された一つ以上の汎用的で主要なＩＳＰ機能モジュールをつなぐことによって所望の機能を行うように構成されることができる。
【０１６４】
例えば、畳み込みオペレーションは掛け算及び足し算として表されることができる。同様に、有限インパルス応答（ＦＩＲ）フィルタリングオペレーションも掛け算及び足し算として表されることができるが、ＦＩＲフィルタリングオペレーションが掛け算及び足し算を行う順序は、畳み込みオペレーションのものとは異なり得る。畳み込みオペレーションとＦＩＲフィルタリングオペレーションとの間には違いがあるにもかかわらず、掛け算オペレーション及び足し算オペレーションは、畳み込みオペレーション及び有限インパルス応答オペレーションに対して主要な機能である。このため、ハードウェアアクセラレータ１０４は、同一の掛け算モジュール及び同一の足し算モジュールを用いて、畳み込みオペレーション及び有限インパルス応答フィルタリングオペレーションを行うように設計されることができる。
【０１６５】
いくつかの実施形態においては、汎用的で主要な機能が呼び出される順序はソフトウェアを用いて決定されることができる。例えば、ソフトウェアは、ハードウェアアクセラレータをプログラムして、掛け算モジュール及び足し算モジュールを呼び出し、その掛け算モジュール及びその足し算モジュールを異なる順序でつなぐことによって、畳み込みオペレーション又はＦＩＲフィルタリングオペレーションのいずれかを行うことができる。
【０１６６】
図６は、いくつかの実施形態に従う、汎用機能に基づいたハードウェアアクセラレータを図示する。ハードウェアアクセラレータ１０４は、複数の汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈと、処理のための画像の一本以上の走査ラインを受けるデータ受信モジュール６０４と、一つ以上の汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈにより処理された一本以上の走査ラインを出力するデータ出力モジュール６０６と、を含む。いくつかの実施形態においては、一つ以上の汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈは、構成レジスタ及び制御レジスタを含むことができる。これらのレジスタに対する値は、ソフトウェアを用いて制御されることができる。いくつかの実施形態においては、複数の汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈはデータパスパイプライン３０４の一部であることができる。
【０１６７】
いくつかの実施形態においては、汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈの一つ以上は、直接メモリアクセス（ＤＭＡ）能力も含む自己完結型のハードウェアフィルタを含むことができる。汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈの一つ以上は、ＤＭＡ能力を用いて、メモリファブリック１０６内のメモリスライスからデータを読み込む又はこれにデータを記憶することができる。ＤＭＡ能力はソフトウェアを用いて制御されることができる。
【０１６８】
いくつかの実施形態においては、データ受信モジュール６０４は、画像の一本以上の走査ラインを読み込む（retrieve）ＤＭＡモジュールを含むことができる。他の実施形態においては、データ受信モジュール６０４は、ＭＩＰＩモジュール等のセンサインタフェースモジュールを含むことができる。いくつかの実施形態においては、データ出力モジュールは、画像の一本以上の処理された走査ラインを記憶するＤＭＡモジュールを含むことができる。他の実施形態においては、データ出力モジュール６０６は、ディスプレイデバイスを含むことができる。
【０１６９】
いくつかの実施形態においては、ハードウェアアクセラレータ１０２は、ＩＳＰテーブルを含むメモリファブリック１０６に結合されることができる。ＩＳＰテーブルは、一つ以上のバッファ６０８を含むことができる。各バッファは、汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈの一つへのポインタを含むことができる。メモリファブリック１０６はマルチポートの共通（又は単一）メモリを有することができるので、複数のデバイスがＩＳＰテーブル内の一つ以上のバッファ６０８にアクセスして、利用可能な汎用ＩＳＰ機能モジュールを特定することができる。
【０１７０】
いくつかの実施形態において、プロセッサ６１０上で動作するソフトウェアＩＳＰ機能６１２Ａ〜６１２Ｃは、ハードウェアアクセラレータ１０２内の一つ以上の汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈを実行するように設計されることができる。例えば、ソフトウェアＩＳＰ機能６１２Ａは、（１）所望の機能を行うために実行される汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈのリストと、（２）その汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈのリストが実行されるべき順序と、を決定することができる。次いで、ソフトウェアＩＳＰ機能６１２Ａは、汎用ＩＳＰ機能モジュール６０２Ａ〜６０２Ｈのリストに対応する一つ以上のバッファ６０８を用いて、汎用ＩＳＰ機能モジュールをつなぎ、これにより、所望の機能を行う。基本的には、ハードウェアアクセラレータの機能は、ＩＳＰテーブル内のバッファ６０８の検索においてソフトウェアにより決定されることができる。
【０１７１】
いくつかの実施形態においては、ＩＳＰ機能モジュールの入力インタフェースは、小さいメモリマップ先入れ先出し（ＦＩＦＯ）バッファを用いて他のＩＳＰ機能モジュールの出力インタフェースに直接的に結合されることができる。図７は、いくつかの実施形態に従う、ＩＳＰ機能モジュール間の通信のためのＦＩＦＯバッファを含むハードウェアアクセラレータを図示する。ＩＳＰ機能モジュール６０２は、メモリバスインタフェース７０２に結合されることができ、そのメモリバスインタフェースが今度はＦＩＦＯバッファ７０４及びメモリファブリック１０６に結合される。
【０１７２】
第一ＩＳＰ機能モジュール６０２Ａが画像の走査ラインについての処理を完了したときは、第一ＩＳＰ機能モジュール６０２Ａは処理された走査ラインをＦＩＦＯバッファ７０４内に記憶することができる。第一ＩＳＰ機能モジュール６０２Ａは追加の走査ラインを引き続き処理するので、第一ＩＳＰ機能モジュール６０２Ａは、ＦＩＦＯバッファ７０４がフルとなるまでは、処理された走査ラインをＦＩＦＯバッファ７０４に引き続き記憶することができる。ＦＩＦＯバッファ７０４がフルであるときは、第一ＩＳＰ機能モジュール６０２Ａは、ＦＩＦＯバッファ７０４がフルでなくなるまでストールされることができる。その間、第二ＩＳＰ機能モジュール６０２Ｂが、ＦＩＦＯバッファが空となるまで、さらなる処理のためにＦＩＦＯバッファ７０４から、処理された走査ラインを回収する。実際には、第一ＩＳＰ機能モジュール６０２Ａはデータのプロデューサ−とみなされることができ、第二ＩＳＰ機能モジュール６０２Ｂはデータのコンシューマとみなされることができ、ＦＩＦＯバッファ７０４は調停人とみなされることができる。第二ＩＳＰ機能モジュール６０２Ｂは、ＦＩＦＯバッファ７０４から、処理された走査ラインを回収することができる。そのＦＩＦＯバッファは、メモリファブリック１０６内のメモリスライスと比較して待ち時間が短く、ＦＩＦＯバッファ７０４はＩＳＰ機能モジュール６０２のつなぎの待ち時間を短くすることができる。
【０１７３】
いくつかの実施形態においては、コンピュータデバイス１００は、複数のパワーアイランドを含むことができる。各パワーアイランドは、専用電力ドメインに関連付けられることができる。このため、各パワーアイランドの電力供給電圧は独立して制御されることができる。例えば、コンピュータデバイス１００はあるオペレーションを行うのにどのパワーアイランドが必要とされるかを決定することができ、必要とされるそのパワーアイランドのみの電力供給電圧をオンにする。このようにし、コンピュータデバイス１００は、漏れ電力消費を低減することができる。
【０１７４】
いくつかの実施形態においては、コンピュータデバイス１００は、あるパワーアイランドが現在、低電力モードにあり（例えば、電力供給電圧が提供されていない）、そのパワーアイランドが特定のオペレーションに必要であると決定すると、コンピュータデバイス１００は、そのパワーアイランドのための起動（power-up）シーケンスを呼び出して、そのパワーアイランドに電力供給電圧を提供することができる。
【０１７５】
いくつかの実施形態においては、各ベクトルプロセッサは、固有の（unique）パワーアイランドに関連付けられることができる。いくつかの実施形態においては、ハードウェアアクセラレータ１０４は、固有のパワーアイランドに関連付けられることができる。いくつかの実施形態においては、メモリファブリック１０６は、固有のパワーアイランドに関連付けられることができる。いくつかの実施形態においては、周辺デバイス１０８は、固有のパワーアイランドに関連付けられることができる。
【０１７６】
いくつかの実施形態においては、コンピュータデバイス１００は、イネイブル信号をパワーアイランドに提供することによって、起動シーケンスを呼び出すことができる。それに続いて、イネイブル信号は、電力供給電圧とパワーアイランドとの間に位置するスイッチを閉じることができ、それにより、電力供給電圧をパワーアイランドに提供する。このオペレーションは、電力供給ゲーティングと呼ばれることがある。
【０１７７】
図８は、いくつかの実施形態に従う、パワーアイランドの電力供給ゲーティングを図示する。図８は、パワーアイランド８０２を示す。そのパワーアイランドは、入力データを処理する回路ブロックと、パワーアイランド８０２に電力供給電圧又はグラウンド信号を提供するための一つ以上のスイッチ８０４Ａ〜８０４Ｂと、パワーアイランド８０２が入力データを処理する準備が整うまで入力データを保持する入力レジスタ８０６と、を含むことができる。いくつかの実施形態においては、入力レジスタ８０６が有効信号生成器８０８から、パワーアイランド８０２が入力データを処理する準備が整ったことを示す有効信号を受けたときは、パワーアイランド８０２に入力データを提供するようにトリガされる。
【０１７８】
いくつかの実施形態においては、コンピュータデバイス１００は、パワーアイランドの電力供給電圧が適切な動作電圧に達したことを示す有効信号を生成するように構成される。有効信号は、パワーアイランド内の回路が所望のオペレーションを行うのに用いられることができるタイムインスタンスを示すことができる。有効信号は有効信号生成器８０８によって生成されることができる。
【０１７９】
有効信号生成器８０８は、タイマを用いて有効信号を生成することができる。例えば、有効信号生成器８０８は、イネイブル信号がパワーアイランドに印加されたタイムインスタンスを決定し、タイマを用いて予め決められた量の時間待機し、次いで有効信号を生成する。しかし、設計時にその予め決められた量の時間を決定することは難しい。これは、パワーアイランドの電力供給電圧を上昇させるにかかる時間の量は、プロセス−電圧―温度（ＰＶＴ）変化次第であるからである。ＰＶＴ変化に対処するためには、最悪のＰＶＴコーナー（corners）を包含する予め決められた量の時間が伝統的に設定されることが多く、起動シーケンスに不必要に待ち時間を加えてしまう可能性がある。
【０１８０】
この問題に対処するため、いくつかの実施形態においては、有効信号生成器８０８は有効信号を適応的に生成するように構成されることができる。より詳細には、パワーアイランドは、パワーアイランドに提供されるイネイブル信号を適応的に遅らせることによって有効信号を生成するように構成されることができる。
【０１８１】
図９は、いくつかの実施形態に従う有効信号生成器を図示する。有効信号生成器８０８は、複数の電力スイッチを含むことができる。その複数の電力スイッチは、その複数の電力スイッチに結合された論理セルに電力供給電圧を提供するように構成される。いくつかの実施形態においては、電力スイッチは各論理セルの一部であることができる。例えば、電力スイッチは正の供給に直列に存在する一つ以上のＰチャネルデバイス及び／又は負の供給（グラウンド）に直列に存在する１つ以上のＮチャネルデバイスを含むことができる。これらの電力スイッチ、パワーアイランドを備える論理ブロックのいたるところに分散されていることができる。図９においては、簡潔性のため、Ｎ及びＰチャネル電力スイッチは、各論理セルに関連付けられた単一の電力スイッチブロックとして示されている。
【０１８２】
いくつかの実施形態において、有効信号生成器８０８は電力スイッチの連鎖にイネイブル信号に印加し、イネイブル信号が電力スイッチの連鎖の最後に到達するまで待機することができる。一旦、イネイブル信号が電力スイッチの最後に到達すると、パワーアイランドの全ての論理セルが適切にパワーオンされることが保証される。このため、有効信号生成器８０８は、電力スイッチの連鎖により遅延したイネイブル信号を有効信号として用いることができる。この自己キャリブレーションメカニズムは、特定のコンピュータデバイスの任意の処理−電圧−温度（ＰＶＴ）変化を適応的に捉えることができる。このように、コンピュータデバイスは、パワーアイランドが起動するために不必要に長い時間待つ必要はない。コンピュータデバイスは、パワーアイランドを適切に起動するのに必要な時間の量だけを待つことができる。
【０１８３】
いくつかの実施形態においては、パワーアイランドは常時パワーオンであることができる。言い換えると、パワーアイランドは、電力供給電圧が供給されない低電力モードに入らないように設計されることができる。そのようなパワーアイランドは、常時オンパワーアイランドと呼ばれることができる。
【０１８４】
いくつかの実施形態においては、常時オンパワーアイランドは外部信号を監視するのに用いられることができる。例えば、常時オンパワーアイランドは、汎用入出力（ＧＰＩＯ）ピン、外部インタフェース及び／又は低周波タイマ又は電力オンリセット等の内部機能ブロックからの信号を監視するのに用いられることができる。このように、コンピュータデバイス１００は、外部信号を分析し、外部信号に応答するため一つ以上のパワーアイランドが起動される必要があるか否かを決定し、外部信号に応答するのに必要とされるパワーアイランドのみを適応的に起動することができる。
【０１８５】
図１０は、いくつかの実施形態に従うイベント信号監視メカニズムを図示する。図１０は、常時オンパワーアイランド８０２及び電力管理モジュール１１０を示す。常時オンパワーアイランド８０２は、周辺デバイス１０８に対する電力ドメインを含むことができる。常時オンパワーアイランド８０２は低電力モードに入らないので、常時オンパワーアイランド８０２内の周辺デバイス１０８は、コンピュータデバイス１００のクロックとは非同期の信号を監視することができる。周辺デバイス１０８が、コンピュータデバイス１００が応答するべきイベント信号を検出したときは、周辺デバイス１０８は電力管理モジュール１１０に警告を出すことができる。今度は、電力管理モジュール１１０は、コンピュータデバイス１００内のどのパワーアイランドの一つがオンされるべきかを決定することができる。それに続いて、電力管理モジュール１１０は一つ以上のパワーアイランドがパワーオンされるようにすることができる。
【０１８６】
いくつかの実施形態においては、周辺デバイス１０８は、ソフトウェア定義インタフェースを含むことができる。そのソフトウェア定義インタフェースの機能は、ソフトウェアを用いて定義されることができる。より詳細には、周辺デバイス１０８は、ＳＰＩ、Ｉ２Ｃ、Ｉ２Ｓ、その他の好適なプロトコル等の標準インタフェースプロトコルの機能をエミュレートすることができるインタフェースプロトコルエミュレーション（ＩＰＥ）を含むことができる。周辺デバイス１０８が、一つの特定インタフェースプロトコルにそれぞれ専用の複数のインタフェースを維持する代わりに、複数のインタフェースプロトコルに対応するようにプログラムされることができる単一ソフトウェア定義インタフェースのみを維持することができるため、ソフトウェア定義インタフェースは有益である。単一ソフトウェア定義インタフェースは、複数の専用インタフェースに比べてかなり少ないダイ領域を消費することができるので、単一ソフトウェア定義インタフェースは、インタフェースに関連付けられたコストを劇的に低減することができる。
【０１８７】
図１１は、いくつかの実施形態に従うソフトウェア定義インタフェースを示す。図１１は、汎用入出力（Ｉ／Ｏ）インタフェース１１０４と、ＩＰＥモジュール１１０６と、コンピュータデバイス１００のための内部バス１１０８と、を含むソフトウェア定義インタフェースを示す。汎用入出力インタフェース１１０４は、センサ、カメラモジュール等の外部デバイスと通信するためのインタフェースを含むことができる。
【０１８８】
Ｉ／Ｏインタフェース１１０４の機能は、ＩＰＥモジュール１１０６を用いて構成されることができる。例えば、Ｉ／Ｏインタフェース１１０４がＩ２Ｃインタフェースとして動作すべきとＩＰＥモジュール１１０６が決定したときは、ＩＰＥモジュール１１０６はＩ／Ｏインタフェース１１０４をプログラムして、外部デバイスとの通信のためのＩ２Ｃインタフェースプロトコルを用いることができる。いくつかの実施形態においては、ＩＰＥモジュール１１０６は、ソフトウェアを用いてプログラムされることができる。ＩＰＥモジュール１１０６がＩ／Ｏインタフェース１１０４を構成して、ＳＰＩ、Ｉ２Ｃ、Ｉ２Ｓ、その他の好適な標準のもの等の標準インタフェースプロトコルを実施することができるように、ＩＰＥモジュール１１０６はプログラムされることができる。
【０１８９】
図１２は、いくつかの実施形態に従うソフトウェア定義インタフェースの詳細な実装を示す。ソフトウェア定義インタフェース１１０２は、汎用入出力（ＧＰＩＯ）インタフェース１２０２と、そのレジスタ１２０４と、を含むことができる。ホストプロセッサは、ＧＰＩＯレジスタ１２０４内のビットを設定することによって、ＧＰＩＯ１２０２の動作を制御することができる。ＧＰＩＯ１２０２は、Ｉ／Ｏインタフェース１１０４内のいくつかのピンを制御して、加速度計、環境光センサ、音響センサ等の外部デバイスと通信することができる。
【０１９０】
ソフトウェア定義インタフェース１１０２は、ＩＥＰモジュール１１０６と、そのレジスタ１２０６と、を含むこともできる。ホストプロセッサは、ＩＰＥレジスタ１２０６内のビットを設定することによって、ＩＰＥモジュール１１０６の動作を制御することができる。ＩＰＥモジュール１１０６は、（１）ソフトウェア定義インタフェース１１０２により実装されるインタフェースプロトコル及び（２）そのインタフェースプロトコルを実装するのに用いられるＩ／Ｏインタフェースピンを決定するように構成されることができる。一旦、ＩＰＥモジュール１１０６がインタフェースプロトコルを実装するのに用いられるＩ／Ｏインタフェースピンを決定すると、ＩＰＥモジュール１１０６は、ＩＰＥモジュール１１０６に対して選択されたＩ／Ｏインタフェースピンを多重化するマルチプレクサ１２０８に制御信号を送ることができる。ＩＰＥモジュール１１０６は、インタフェースプロトコルに従って、制御信号及びデータをＩ／Ｏインタフェースピンに送信させることによって、Ｉ／Ｏインタフェースピンがインタフェースプロトコルをエミュレートするようにさせる。
【０１９１】
いくつかの実施形態においては、タイマ１２１４及び／又はプレスケーラ１２１６は、高周波基準信号（例えば、数百メガヘルツの範囲内）を低周波クロック（例えば、数百キロヘルツの範囲内）に変換して、ＩＰＥに十分なクロック信号を提供するのに用いられることができる。いくつかの実施形態においては、プレスケーラ１２１６からの出力クロックの周波数に整数値を乗じて所定のインタフェースをエミュレートする。例えば、プレスケーラ１２１６の出力クロックが５００ｋＨｚで動作するときは、プレスケーラ１２１６からの出力クロックの周波数に３を乗じてＩ２Ｃインタフェースをエミュレートする。このように、５００ｋＨｚクロックは、ＩＰＥロジックを動作させ、Ｉ／Ｏピンに接続された出力レジスタをサンプルするのに用いられることができる。
【０１９２】
いくつかの実施形態においては、周辺デバイス１０８内のＩＰＥモジュール１１０６は、Ｉ／Ｏインタフェース１１０４の入力ピンと出力ピンとの間のバイパスを行うことができ、それにより、実際に処理ユニットを起動することなく、コンピュータデバイス１００の一方側の入力及びコンピュータデバイス１００の他方側の出力をエミュレートする。これにより、コンピュータデバイス１００にＩ２Ｃを介して接続される加速度計等の第一外部デバイスが、コンピュータデバイス１００の処理ユニットを起こすことなく、アプリケーションプロセッサＳｏＣ等の第二外部デバイスと通信することができる。
【０１９３】
ソフトウェア定義インタフェース１１０２は、イベントプロセッサ１２１０と、そのレジスタ１２１２と、を含むこともできる。イベントプロセッサ１２１０は、外部信号を受信して、コンピュータデバイス１００が応答するべき任意のイベントを検出する。イベントプロセッサ１２１０の機能は、ＥＰレジスタ１２１２を用いて構成されることができる。いくつかの実施形態においては、一旦、イベントプロセッサが応答するイベントを検出すると、イベントプロセッサ１２１０は、そのイベントに応答するのに必要な、ベクトルプロセッサ１０２、ハードウェアアクセラレータ１０４及び／又はメモリファブリック１０６を決定し、その決定されたベクトルプロセッサ１０２、ハードウェアアクセラレータ１０４及び／又はメモリファブリック１０６に関連付けられたパワーアイランドに電力イネイブル信号を送る。
【０１９４】
図１３は、いくつかの実施形態に従うイベントプロセッサを図示する。上述したように、イベントプロセッサ１２１０は、外部デバイスと通信し、外部デバイスから信号を受信することができる。信号は、音響サンプル、加速度計値、環境光センサ値又はＧＰＩＯ等の通信インタフェースを介して提供されることができる他の入力を含むことができる。イベントプロセッサ１２１０は、受信した信号を特定の構成と比較して、イベント又はイベントシーケンスを理解するように構成されることができる。一旦、イベントプロセッサ１２１０がイベント又はイベントシーケンスを理解すると、イベントプロセッサ１２１０は、低電力モードから起き、オペレーションを開始するようにコンピュータデバイス１００内の一つ以上コンポーネントにさせることができる。
【０１９５】
いくつかの実施形態においては、イベントプロセッサ１２１０は、一つ以上のフィルタ１３０２Ａ〜１３０２Ｎを含むことができる。イベントフィルタ１３０２は、インタフェース１１０４から入力信号を受け取るように構成され、特定のイベントが起きたか否かを決定する。特定のイベントが起きた場合は、イベントフィルタ１３０２は、コンピュータデバイス１００内の複数のパワーアイランドの一つに、制御信号及び／又はパワーアイランドイネイブルを送ることができる。
【０１９６】
図１４は、いくつかの実施形態に従うイベントフィルタの実装を示す。イベントフィルタ１３０２は、レジスタ１４０２と、比較器１４０４と、ブーリンアンオペレータ１４０６と、を含むことができる。イベントフィルタ１３０２は、イベントプロセッサ制御レジスタ１２１２及びタイマ１２１４を介して制御されることができる。
【０１９７】
入力レジスタ１４０２は、一つ以上の外部デバイスから入力信号を受信し、受信された入力信号を比較器１４０４のバンクに提供するように構成されることができる。比較器１４０４は、ブーリアン、整数、固定小数及び浮動小数の表現を含む幅広い入力信号の表現をサポートするように構成されることができる。
【０１９８】
次いで、比較器１４０４からの出力は、特定のイベント又はイベントシーケンスが起きたか否かを決定するために、ＥＰタイマ１２１４からのタイマ値に基づいて論理的に組み合わせられることができる。いくつかの場合においては、比較器の出力間の特定の関係が予め定められた期間で持続するときは、特定のイベント又はイベントシーケンスが起きたと見なされる。一旦、イベントフィルタ１３０２が、特定のイベント又はイベントシーケンスが起きたと決定すると、イベントフィルタ１３０２はベクトルプロセッサ１０２、ハードウェアアクセラレータ１０４、周辺デバイス１０８に結合された外部デバイス等の、コンピュータデバイス１００内の他のコンポーネントを制御する制御信号を出力することができる。
【０１９９】
イベントプロセッサ１２１０は、ユーザが電子デバイスの使用を開始したイベントを検出するように構成されることができる。それに続いて、イベントプロセッサ１２１０は、コンピュータデバイス１００内のコンポーネントをオンにして、スタートアップイベントに応答することができる。例えば、イベントプロセッサ１２１０は、電子デバイスがポケットから取り出されたことを示す、環境光における変化を検出するように構成されることができる。環境光が数ミリ秒以上にわたって高いレベルのままであるときは、イベントプロセッサ１２１０は音響入力をチェックして、入力音響信号に変化があるか否かを決定することができる。イベントプロセッサ１２１０が入力音響信号における変化を検出したときは、イベントプロセッサ１２１０は、コンピュータデバイス１００内のデジタル信号プロセッサが音声指示を検出できるようにすることができる。このように、イベントプロセッサ１２１０により、コンピュータデバイス１００内のコンポーネントは低電力モードを維持し、イベント又はイベントシーケンスが起きたときのみオペレーションを行うことができる。このため、イベントプロセッサ１２１０はコンピュータデバイス１００の平均的な待機電力を著しく低減することができる。
【０２００】
図１５は、いくつかの実施形態に従う、周辺デバイスのバイパスモードを示す。図１５においては、コンピュータデバイス１００は、一つ以上のパワーアイランドが低電力モードにある（例えば、一つ以上のパワーアイランドに電力供給電圧が印加されていない）低電力モードにあることができる。この場合、ＩＰＥモジュール１１０６が、入力ＭＩＰＩレーン１５０２と出力ＭＩＰＩレーン１５０４等、Ｉ／Ｏインタフェース１１０４の入力ピンと出力ピンとの間のバイパスを行うように構成されることができる。この例において、入力ＭＩＰＩレーン１５０２は、カメラモジュールに結合され、出力ＭＩＰＩレーン１５０４はアプリケーションプロセッサに結合される。このため、カメラモジュールは、低電力モードにある一つ以上のパワーアイランドを実際に起こすことなくアプリケーションプロセッサに結合されることができる。
【０２０１】
いくつかの実施形態において、異なるインタフェースプロトコルに対する周辺デバイス１０８は、コンピュータデバイス１００の物理ピン（又はパッド）を共有することができる。例えば、周辺デバイス１０８は、第一通信プロトコルのための第一インタフェースと、第二通信プロトコルのための第二インタフェースと、を含むことができる。第一インタフェース及び第二インタフェースは、周辺デバイス１０８に専用のＩ／Ｏピンの数が低減されることができるように、物理的Ｉ／Ｏピンを時分割多重にするように構成されることができる。いくつかの場合において、周辺デバイス１０８は、第一及び第二インタフェース内の信号と物理ピンとの間のマッピングを含むテーブルを含むことができる。
【０２０２】
コンピュータデバイス１００が、カメラ、ディスプレイ等のＭＩＰＩデバイスの範囲又はアプリケーションプロセッサ若しくはコンピュータデバイス１００がカメラとして表れる他のデバイスに接続されるアプリケーションにおいては、コンピュータデバイス１００の構成は、ＭＩＰＩインタフェースブロック及びこれに関連するピンの数の観点について、設計時にはわからない可能性がある。この理由のため、特定のＭＩＰＩ使用ケースをサポートするのに必要とされるＭＩＰＩ入力及び出力の数がソフトウェアを介してランタイムで構成されることができるように、ＭＩＰＩ  Ｉ／Ｏピンのセットを、複数のプログラマブルＭＩＰＩ  Ｉ／Ｏプロトコル制御ブロックに接続することが有利である。
【０２０３】
図１６は、いくつかの実施形態に従うプログラマブルＭＩＰＩインタフェースを示す。プログラマブルＭＩＭＰインタフェース１６００は、図１５に関して図示されるように、ＭＩＰＩメディアアクセス制御（ＭＡＣ）プロトコルブロック１６０２と、ＭＩＰＩ送信機１６０４と、ＭＩＰＩ受信機１６０６と、ＭＩＰＩ送信機１６０４又はＭＩＰＩ受信機１６０６のいずれかからの信号をチャネルするように構成されたマルチプレクサ１６０８と、差動ＭＩＰＩ  Ｉ／Ｏ  パッド１６１２の極性を変更するように構成されたＭＩＰＩ極性スイッチ１６１０と、バイパスマルチプレクサ１６１４と、Ｉ／Ｏインタフェース１１０４の入力ピンと出力ピンとの間のバイパスを行うバイパスバッファ１６１６と、を含むことができる。
【０２０４】
いくつかの実施形態においては、ＭＩＰＩ  ＭＡＣプロトコルブロック１６０２は、ＭＩＰＩ送信機１６０４及び／又はＭＩＰＩ受信機１６０６のオペレーションがＭＩＰＩプロトコルに準拠する（conforms  with）ようにＭＩＰＩ送信機１６０４及び／又はＭＩＰＩ受信機１６０６のオペレーションを制御するように設計される。
【０２０５】
いくつかの実施形態においては、プログラマブルＭＩＰＩインタフェース１６００により、ＭＩＰＩ送信機１６０４又はＭＩＰＩ受信機１６０６の一つのみが特定のタイムインスタンスでＭＩＰＩ  Ｉ／Ｏパッド１６１２を介して通信することができることを可能にする。例えば、プログラマブルＭＩＰＩインタフェース１６００は、ＭＩＰＩ送信機１６０４又はＭＩＰＩ受信機１６０６の一つのみをマルチプレクサ１６０８を介してＭＩＰＩ  Ｉ／Ｏパッド１６１２と結合することができる。このように、外部デバイスに対して、ＭＩＰＩ  Ｉ／Ｏ  パッド１６１２は両方向ＭＩＰＩインタフェースと見なされることができる。
【０２０６】
いくつかの実施形態においては、プログラマブルＭＩＰＩインタフェース１６００は、ＭＩＰＩ極性スイッチ１６１０を用いて、差動ＭＩＰＩ  Ｉ／Ｏパッドの極性を反転させることができる。これにより、ネットワークなしでの外部ＰＣＢ設計における、よりよいインピーダンスマッチングを達成する、又はエラーを訂正するように差動ＭＩＰＩ  Ｉ／Ｏパッドの極性が、ランタイムで反転させられることができる。図１７は、いくつかの実施形態に従って、入出力インタフェースのための極性反転メカニズムの適用を図示する。図１７は、ＭＩＰＩ  Ｉ／Ｏパッドのための極性反転メカニズムの適用を図示するが、極性反転メカニズムは、信号ラインの差動対を用いる様々な他のインタフェースにおいて用いられることができる。
【０２０７】
いくつかの実施形態において、図１５に関して概して上述されているように、プログラマブルＭＩＰＩインタフェース１６００は、コンピュータデバイス１００の処理ユニットが起動されることを必要とせずに、ＭＩＰＩ  Ｉ／Ｏパッド１６１２が出力に接続されることを可能にするＭＩＰＩマルチプレクサ１６１４及びバッファ１６１６を提供することにより、低電力ＭＩＰＩバイパスモードを提供することができる。この特徴は、複数のカメラがコンピュータデバイス１００に接続されて、他の場合においては、コンピュータデバイス１００は必要とされず、アプリケーションプロセッサが同一のセンサセットを用いて静止画又は動画のキャプチャを行うとともに、コンピュータビジョンタスクを実行するモードにおいて望ましい。内部ＭＩＰＩマルチプレクサ１６１４を用意しておくことにより、そのような使用ケースは外部コンポーネントを用いるのではなく内部バイパスマルチプレクサ１６１４を介してサポートされることができ、チップが組み込まれるＰＣＢのコスト及び複雑性をかなり簡潔にすることができる。
【０２０８】
いくつかの実施形態においては、メモリファブリック１０６は、空間的及び時間的な局所性のいずれもの観点から、データを局所的に利用するように設計されたキャッシュメモリを含むことができる。コンピュータデバイス１００が外部メモリデバイスに結合されていないときは、メモリファブリック１０６により、ベクトルプロセッサ１０２及びハードウェアアクセラレータ１０４は、汎用メモリデバイスとしてキャッシュメモリを用いることができる。いくつかの実施形態においては、キャッシュメモリは複数のセクションに分割される。各セクションは、複数のベクトルプロセッサの一つ又は複数のハードウェアアクセラレータの一つにより排他的に用いられるようになっている。
【０２０９】
いくつかの実施形態においては、メモリファブリック１０６は、コンピュータデバイス１００が節電モードにあるときに、コンピュータデバイス１００の状態情報を保持するように構成される。このように、コンピュータデバイス１００は再び切り替えられるときに、コンピュータデバイス１００は、「起動（wake-up）」プロシージャに関連した遅延が低減されるように、状態情報を適切なデバイス再分配することができる。
【０２１０】
いくつかの場合においては、状態情報はキャッシュメモリに保持（maintained）される。そのような場合においては、状態情報を記憶するキャッシュメモリは、コンピュータデバイス１００が節電モードに入ったときでさえもパワーオンされていることができる。状態情報は、ブート時又はランタイム中にロードされるアプリケーションのバイナリを含む。状態情報は、ブート時又はランタイム中にロードされる、それ以外の場合は、外部不揮発性メモリに記憶され、停止又は起動シーケンスのイベントの際に読み出される、レジスタ設定、動作モード、パイプライン構成、ラインタイム環境設定等の設定情報を含むこともできる。状態情報は、画像データ等のデータ及び他のセンサからの値を含むこともできる。状態情報は、外部不揮発性メモリに記憶され、停止又は起動シーケンスのイベントの際に読みされる必要がある、コンピュータデバイス１００と他のシステムコンポーネントとの間の通信プロトコルの状態を含むこともできる。
【０２１１】
いくつかの実施形態においては、メモリファブリックは、ハードウェアベースの相互排他的（ミューテックス）コントローラ２０６を含むことができる。図１８は、いくつかの実施形態に従うハードウェアベースのミューテックスコントローラを含むメモリファブリックを図示する。図１８は、複数の処理ユニット１８０２Ａ〜１８０２Ｐ、メモリファブリック１０６及びミューテックスコントローラ２０６を示す。処理ユニット１８０２は、ベクトルプロセッサ１０２又はハードウェアアクセラレータ１０４を含むことができる。ミューテックスコントローラ２０６は、データ要素を共有する処理ユニット１８０２のマルチタスクをコーディネートするように構成された、独立してアドレス可能な一つ以上のミューテックス要素を含むことができる。より詳細には、ミューテックス要素は、メモリファブリック１０６又はコンピュータデバイス１００の他の部分内に記憶された共有データ要素を第一処理ユニット１８０２Ａのためにロックし、その共有データ要素を用いる他の処理ユニット１８０２Ｐが、第一処理ユニット１８０２Ａがその共有データ要素を解放するまでは待機することができるようにする。ミューテックスコントローラ２０６は、メモリファブリック内に存在し、共有リソースを解放又はロックする時間が、共有バス又は他の手段を用いるのと比べて低減される。
【０２１２】
伝統的には、ミューテックスコントローラが共有リソースへの排他的アクセスの要求を受けるときは、ミューテックスコントローラは、要求している処理ユニットがその共有リソースへの排他的アクセスを取得することができるか否かを示すものを、その要求に対して即座に応答する。このため、要求している処理ユニットが排他的アクセスを取得しない場合、その要求している処理ユニットは、その要求している処理ユニットがミューテックスコントローラから排他的アクセスを受けるまでは、ミューテックスコントローラに継続的に要求しなくてはならない。これは、伝統的なミューテックスコントローラと処理ユニットとの間のバス上のトラフィックを増加させる可能性がある。
【０２１３】
この問題に対処するため、いくつかの実施形態においては、処理ユニット１８０２Ａが、共有リソースへの排他的アクセスを要求する排他的アクセス要求を送るとき、ミューテックスコントローラ２０６は、自分でその要求の状態（status）を監視することができる。一旦、ミューテックスコントローラ２０６が、処理ユニット１８０２Ａに排他的アクセスが認められると決定すると、ミューテックスコントローラ２０６は、処理ユニット１８０２Ａが共有リソースへの排他的アクセスを有することを示す確認メッセージを処理ユニット１８０２Ａに送ることができる。このように、処理ユニット１８０２Ａは、処理ユニット１８０２Ａが排他的アクセスを受けるまでに何度も排他的アクセス要求を送る必要がなく、処理ユニット１８０２Ａは、排他的アクセス要求を一度だけ送り、ミューテックスコントローラ２０６からの排他的アクセスを受けるのを待つことができる。このメッセージメカニズムは、メモリファブリック１０６上の通信負荷を減らすことができる。
【０２１４】
いくつかの実施形態においては、メモリファブリック１０６は、処理ユニット間の通信を提供するフレキシブルなバスアーキテクチャを含むことができる。しばしば、処理ユニット間での通信のためのインタフェースは先入れ先出し（ＦＩＦＯ）等のバッファを含む。例えば、第一処理ユニットが第二処理ユニットにメッセージを送る準備が整ったときは、第一処理ユニットは、第二処理ユニットに割り当てられたバッファにそのメッセージを送信することができる。第二処理ユニットがメッセージを受信する準備が整ったときは、第二処理ユニットはバッファからメッセージを読み出すことができる。
【０２１５】
しかし、伝統的なインタフェースにおけるバッファは制限されたストレージキャパシティを有する。このため、伝統的なインタフェースにおけるバッファは、制御メッセージを記憶するのに制限されることが多く、画像及び動画データ等の大量のデータを収容することができない。さらに、各バッファは、恒久的に複数の処理ユニットの一つに割り当てられる。このため、第一処理ユニットに割り当てられた第一バッファがオーバーフローしている可能性がある一方で、第二処理ユニットに割り当てられた第二バッファは空っぽである可能性がある。ゆにえ、バッファのキャパシティはシステムレベルで十分に利用されていない可能性がある。
【０２１６】
メモリファブリック１０６は、バッファのキャパシティを増加させ、通信のためのリアルタイムのニーズに基づいて処理ユニットにバッファを動的に割り当てることによって、伝統的なインタフェースのこれらの欠点に対処する。メモリファブリック１０６は、バッファを生成する、管理する及び解放するのにフレキシブルなメカニズムを提供する。バッファは、プロセスの継続のために作成されることができ、一旦その処理が完了すると解放されることができる。解放されたバッファは、ソフトウェアプログラムの制御下で他のアプリケーション又は処理ユニットに利用可能にされることができる。
【０２１７】
図１９は、いくつかの実施形態に従うバッファの動的割り当てを図示する。メモリファブリック１０６は、複数のバッファ１９０２Ａ〜１９０２Ｐを含むことができ、それぞれ、ベクトルプロセッサ又はハードウェアアクセラレータ等の複数の処理ユニットの一つに排他的に割り当てられることができる。いくつかの場合においては、複数のバッファ１９０２は同じ処理ユニットに割り当てられることができる。
【０２１８】
いくつかの実施形態においては、複数のバッファ１９０２は、分割され、複数の処理ユニットの一つに排他的に割り当てられることができるバッファのリポジトリ（repository）の一部であることができる。リポジトリは、メモリファブリック１０６からのメモリスライスを含むことができる。いくつかの実施形態においては、複数のバッファ１９０２の各々は、同じキャパシティを有することができる。他の実施形態においては、複数のバッファ１９０２の一つ以上は、可変のキャパシティを有することができる。例えば、第一処理ユニット１８０２Ｎが少ない数の制御メッセージを第二処理ユニット１８０２Ｃに送ろうとするとき、メモリファブリック１０６は、第二処理ユニット１８０２Ｃがその少ない数の制御メッセージを受けることができるように、第二処理ユニット１８０２Ｃに対して小さいバッファ１９０２Ｃを割り当てることができる。しかし、第一処理ユニット１８０２Ｎが大量の動画データを第二処理ユニット１８０２Ｍに送ろうとするとき、メモリファブリック１０６は、第二処理ユニット１８０２Ｍが大量の動画を受けることができるように、第二処理ユニット１８０２Ｍに対して大きいキャパシティを有するバッファを割り当てることができる。
【０２１９】
いくつかの実施形態においては、複数のバッファの一つ以上は、デバイス（システムオンチップ）設計時に想定されることができる、ＵＳＢ、ＭＩＰＩ又はＥｔｈｅｒｎｅｔ（登録商標）を含む通信コミュニケーション等の特定のアプリケーションに関連付けられることができる。
【０２２０】
いくつかの実施形態においては、電力管理モジュール１１０は、論理回路及びメモリデバイスに異なる電力供給電圧を提供するように構成されることができる。図２０は、いくつかの実施形態に従う論理回路メモリデバイスに異なる電圧を提供する電力管理メカニズムを図示する。単一パワーアイランド２００２Ａは、論理回路領域２００４と、メモリ領域２００６と、を含むことができる。電力管理モジュール１１０は、第一電圧Ｖ１を論理回路領域２００４に、第二電圧Ｖ２をメモリ領域２００６に提供するように構成されることができる。いくつかの実施形態においては、第一電圧及び第二電圧は、異なる電力レギュレータによって提供されることができる。このため、第一電圧及び第二電圧は独立して制御されることができる。
【０２２１】
いくつかの実施形態においては、論理回路領域２００４及びメモリ領域２００６は、低電力モードに独立して入ることができる。例えば、電力管理モジュール１１０は、ローカルスイッチ２００８、２０１０を用いて、論理回路領域２００４及びメモリ領域２００６への電力供給電圧をそれぞれ切断することができる。いくつかの実施形態においては、電力管理モジュール１１０は、グローバルスイッチ２０１２を用いて、一つ以上のパワーアイランド２００２Ａ〜２００２Ｎ内のメモリ領域２００６への電力供給電圧を切断することができる。
【０２２２】
いくつかの実施形態においては、メモリファブリックは、直接メモリアクセス（ＤＭＡ）エンジンを含むことができる。ＤＭＡエンジンは、ＤＭＡデータ構造のダブルリンクリストを含むオペレーションリストを保持することができる。各ＤＭＡデータ構造は、ＤＭＡエンジンにより実行される特定のオペレーションを示す。ＤＭＡデータ構造は、ＤＭＡエンジンがＤＭＡデータ構造に関連付けられたオペレーションを実行すべき順序で保持される。
【０２２３】
オペレーションリストは、ＤＭＡデータ構造のダブルリンクリストを含むので、ダブルリンクリストにより表されたオペレーションシーケンスにＤＭＡオペレーションを取り除くのはかなりの時間を要する。いくつかの実施形態においては、ＤＭＡエンジンは、ＤＭＡ構造データが実行されるべきであるか否かを示すバッファを保持することによってこの問題に対処することができる。バッファ内の各ビットは、関連付けられたＤＭＡデータ構造のためのイネイブル信号と見なされることができる。
【０２２４】
図２１は、いくつかの実施形態に従うバッファベースのＤＭＡデータ構造イネイブルメカニズムを実装するＤＭＡエンジンを図示する。ＤＭＡエンジンは、複数のＤＭＡデータ構造２１０４を有するオペレーションリスト２１０２を含む。複数のＤＭＡデータ構造２１０４は、互いにダブルリンクリストとして結合されることができる。ＤＭＡエンジンはイネイブルバッファ２１０６も含む。イネイブルバッファ２１０６は複数のビットを含むことができる。イネイブルバッファ２１０６内ビット数は、オペレーションリスト内のＤＭＡデータ構造の数と同一であることができる。イネイブルバッファ２１０６内の各ビットは、ビットに関連づけられたＤＭＡデータ構造がイネイブルであるか否かを示すことができる。例えば、バッファ内の第一ビットが１であるときは、ＤＭＡエンジンは第一ＤＭＡデータ構造がイネイブルであると決定し、第一ＤＭＡデータ構造を実行することができる。バッファ内の第二ビットが０であるときは、ＤＭＡエンジンは第二ＤＭＡデータ構造がイネイブルではないと決定し、第二ＤＭＡデータ構造を実行することができない。このように、ＤＭＡエンジンは実際にＤＭＡデータ構造をオペレーションリストから実際に取り除くことなく、オペレーションリスト内のＤＭＡデータ構造のサブセットを選択的に実行することができる。ＤＭＡエンジンはＤＭＡデータ構造を取り除く必要はないので、一つ以上のＤＭＡデータ構造を無効かするのに関連付けられた治安は小さくすることができる。
【０２２５】
いくつかの実施形態において、並列コンピュータデバイス１００は、電子デバイス内に存する。図２２は、いくつかの実施形態に従うコンピュータデバイスを含む電子デバイスを示す。電子デバイス２２００は、プロセッサ２２０２と、メモリ２２０４と、一つ以上のインタフェース２２０６と、コンピュータデバイス１００と、を含むことができる。
【０２２６】
電子デバイス２２００は、コンピュータ読み取り可能媒体、フラッシュメモリ、磁気ディスクドライブ、光学ドライブ、プログラマブルリードオンリーメモリ（ＰＲＯＭ）、リードオンリーメモリ（ＲＯＭ）等のメモリ２２０４を有することができる。電子デバイス２２００は、メモリ内に記憶されることができる、命令を処理しかつソフトウェアを動作させる一つ以上のプロセッサ２２０２を備えて構成されることができる。プロセッサ２２０２は、メモリ２２０４及び他のデバイスと通信するためのインタフェース２２０６とも通信することができる。プロセッサ２２０２は、ＣＰＵ、アプリケーションプロセッサ及びフラッシュメモリを組み合わせたシステムオンチップ等の任意の適用可能なプロセッサ又は縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサであることができる。
【０２２７】
メモリ２２０４は、非一時的なコンピュータ読み取り可能媒体、フラッシュメモリ、磁気ディスクドライブ、光学ドライブ、プログラマブルリードオンリーメモリ（ＰＲＯＭ）、リードオンリーメモリ（ＲＯＭ）、その他のメモリ又はメモリの組み合わせであることができる。ソフトウェアは、コンピュータ命令又はコンピュータコードを実行することができるプロセッサ上で動作することができる。プロセッサは、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックアレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、その他の集積回路を用いてハードウェアで実装されてもよい。
【０２２８】
インタフェース２２０６は、ハードウェア又はソフトウェアで実装されることができる。インタフェース２２０６は、テレビへのリモート制御等、ローカルソース及びネットワークからのデータ及び制御情報のいずれも受信するのに用いられることできる。電子デバイスは、キーボード、タッチスクリーン、トラックボール、タッチパッド、マウス等の様々なユーザインタフェースを提供することもできる。電子デバイスは、いくつかの実施形態においては、スピーカ及びディスプレイデバイスを含んでもよい。
【０２２９】
いくつかの実施形態においては、コンピュータデバイス１００内のベクトルプロセッサ１０２及びハードウェアアクセラレータ１０４等の処理ユニットは、コンピュータ命令又はコンピュータコードを実行することができる集積回路を含むことができる。プロセッサは、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックアレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、その他の集積回路を用いてハードウェアで実装されてもよい。
【０２３０】
いくつかの実施形態においては、コンピュータデバイス１００は、システムオンチップ（ＳＯＣ）上のシステムとして実装されることができる。別の実施形態においては、並列コンピュータデバイス内の一つ以上のブロックが別々のチップとして実装されることができ、並列コンピュータデバイスがシステムインパッケージ（ＳＩＰ）でパッケージされることができる。いくつかの実施形態においては、並列コンピュータデバイス４００はデータ処理アプリケーションに用いられることができる。データ処理アプリケーションは、画像処理アプリケーション及び／又は動画処理アプリケーションを含むことができる。画像処理アプリケーションは、画像フィルタリングプロセスを含む画像処理プロセスを含むことができる。動画処理アプリケーションは、動画復号化オペレーション、動画符号化オペレーション及び、動画内の動き又は物体を検出する動画分析オペレーションを含むことができる。本発明の追加的なアプリケーションは、画像列、複数の物体又は動画に基づいたマシンラーニング及び分類と、深度可能（depth  enabled）カメラを含む複数のカメラビューからのジオメトリを抽出し、ワイヤフレームジエオメトリ（例えば、ポイントクラウドを介して）がその後のＧＰＵによる頂点シェーディング（vertex  shading）のために抽出されることができる複数のビューから特徴を抽出するゲームアプリケーションを含む拡張現実アプリケーションと、を含む。
【０２３１】
電子デバイス２２００は、携帯電話等のモバイルデバイスを含むことができる。モバイルデバイスは、複数のアクセス技術を用いた複数の無線アクセスネットワーク及び無線通信ネットワークと通信することができる。モバイルデバイスは、文書処理、ウェブブラウズ、ゲーム、e-book能力、オペレーティングシステム、フルキーボード等の進化した能力を提示するスマートフォンであることができる。モバイルデバイスは、Symbian（登録商標）  OS、iPhone（登録商標）  OS、RIM’s  BlackBerry（登録商標）、Windows  Mobile（登録商標）、Linux（登録商標）、Palm（登録商標）  WebOS、Android（登録商標）等のオペレーティングシステムで動作することができる。スクリーンは、データをモバイルデバイスに入力するのに用いられることができるタッチスクリーンであってよく、スクリーンはフルキーボードの代わりに用いられることができる。モバイルデバイスは、アプリケーションを動作させる又は通信ネットワーク内のサーバによって提供されるアプリケーションと通信する能力を有してもよい。モバイルデバイスは、ネットワーク上のこれらのアプリケーションからアップデート及び他の情報を受信することができる。
【０２３２】
電子デバイス２２００は、テレビ（ＴＶ）、ビデオプロジェクタ、セットトップボックス又はセットトップユニット、デジタルビデオレコーダ（ＤＶＲ）、コンピュータ、ネットブック、ラップトップ、タブレットコンピュータ、ネットワークで通信することができる他の聴覚／視覚イクイップメント等の多くの他の装置を収容することができる。電子デバイスは、全地球測位システム、プロファイル情報、又はスタック若しくはメモリ内に他のロケーション情報を保持することもできる。
【０２３３】
複数の異なるアレンジメントが本開示において記載されているが、それぞれの特徴が有利的には様々な形式でまとまって組み合わせられてよく、それにより利点を得るものと理解される。
【０２３４】
前述の明細書においては、本願は特定の例を参照して記載されている。しかし、様々な修正及ぶ変更が、添付の特許請求の範囲に明記されるような発明の広い精神及び範囲を逸脱することなく本願においてなされてよいことは明らかである。例えば、接続は、例えば、中間ノードを介した、各ノード、ユニット又はデバイスとの信号を転送するのに適した任意のタイプの接続であることができる。従って、黙示的に又は明示的にそうであるとされない限り、接続は、例えば、直接接続又は間接接続であってよい。
【０２３５】
本開示で示されたアーキテクチャは例示的に過ぎず、事実、同一の機能性を達成する多くの他のアーキテクチャが実装されることができると理解されるものである。抽象的ではあるが依然として確定された意味においては、同一の機能を達成するためのコンポーネントの任意のアレンジメントは、所望の機能が達成されるように効果的に関連付けられる（associated）。つまり、特定の機能を達成するため、本開示において組み合わせられた任意の２つのコンポーネントは、アーキテクチャ又は中間コンポーネントに関わらず、その所望の機能が達成されるように互いに「関連付けられた」とみることができる。同様に、そのように関連付けられた２つのコンポーネントは、所望の機能を達成するため、「動作可能に接続された」又は「動作可能に結合された」とみることもできる。
【０２３６】
さらに、当業者であれば、上述されたオペレーションの機能間の境界は例示に過ぎないと理解するものである。複数のオペレーションの機能は、単一のオペレーションに組み合わせられてよく、及び／又は単一のオペレーションの機能は、追加のオペレーションに分散されてよい。さらに、別の実施形態が特定のオペレーションの複数のインスタンスを含んでよく、オペレーションの順序が種々の他の実施形態で変更されてよい。
【０２３７】
他の修正、バリエーション及び変更も可能である。従って、明細書及び図面は、限定的な意味ではなく例示的なものとみなされる。
【０２３８】
特許請求の範囲において、丸括弧の間にある任意の符号は、請求項を限定するものと解釈されるべきではない。文言「含む（comprising）」は、請求項内に挙げられたもの以外の他の要素又は工程の存在を排除しない。さらに、本開示で用いられるような文言「ある（a  or  an）」は、一つ以上として定義される。また、請求項内にある「少なくとも一つ」、「一つ以上」等の導入句の使用は、同一の請求項が「一つ以上」又は「少なくとも一つ」の導入句と「ある（a  or  an）」等の非限定的な冠詞を含む場合も含め、他のクレーム要素が非限定的冠詞「ある（a  or  an）」を導入したものとすると、そのように導入されたクレーム要素を含む特定の請求項が、ただ一つしかそのような要素を含まない発明に限定されることを示唆していると解釈されるべきではない。同じことが、定冠詞を用いることに対しても当てはまる。明示される場合を除き、「第一」、「第二」等の文言は、そのような文言が記載する要素同士を任意に区別するのに用いられる。つまり、これらの文言は、そのような要素の経時性又は他の優先順位付けを示すことを必ずしも意図していない。所定の手段が相互に異なる請求項に規定されるという事実だけでは、これらの手段の組み合わせが効果を有するように用いられることができないということを示さない。
【図１】
0006695320.tif 000002
【図２】
0006695320.tif 000003
【図３】
0006695320.tif 000004
【図４】
0006695320.tif 000005
【図５】
0006695320.tif 000006
【図６】
0006695320.tif 000007
【図７】
0006695320.tif 000008
【図８】
0006695320.tif 000009
【図９】
0006695320.tif 000010
【図１０】
0006695320.tif 000011
【図１１】
0006695320.tif 000012
【図１２】
0006695320.tif 000013
【図１３】
0006695320.tif 000014
【図１４】
0006695320.tif 000015
【図１５】
0006695320.tif 000016
【図１６】
0006695320.tif 000017
【図１７】
0006695320.tif 000018
【図１８】
0006695320.tif 000019
【図１９】
0006695320.tif 000020
【図２０】
0006695320.tif 000021
【図２１】
0006695320.tif 000022
【図２２】
0006695320.tif 000023