(57)【要約】【課題】イメージ、ビジョン及びニューラルネットワークに関する処理のために、制御が容易であると同時にデータの使用効率を高めた、統合された処理環境を備える半導体装置を提供する。【解決手段】本発明の半導体装置は、第１レジスタを含み、前記第１レジスタを用いてＲＯＩ（Ｒｅｇｉｏｎ  Ｏｎ  Ｉｎｔｅｒｅｓｔ）演算を行う第１プロセッサと、第２レジスタを含み、前記第２レジスタを用いて算術演算を行う第２プロセッサとを含み、前記第１レジスタは前記第２プロセッサによって共有され、前記第２レジスタは前記第１プロセッサによって共有される。【選択図】図１
2018173956.tif 000002
【特許請求の範囲】
【請求項１】
第１レジスタを含み、前記第１レジスタを用いてＲＯＩ（Ｒｅｇｉｏｎ  Ｏｎ  Ｉｎｔｅｒｅｓｔ）演算を行う第１プロセッサと、
第２レジスタを含み、前記第２レジスタを用いて算術演算を行う第２プロセッサと、を含み、
前記第１レジスタは前記第２プロセッサによって共有され、前記第２レジスタは前記第１プロセッサによって共有されることを特徴とする半導体装置。
【請求項２】
前記第１プロセッサ及び前記第２プロセッサは同じＩＳＡ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を共有することを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記第１プロセッサと前記第２プロセッサは互いに独立した電源によって駆動されることを特徴とする請求項１に記載の半導体装置。
【請求項４】
前記第１プロセッサ及び前記第２プロセッサのうち未使用のプロセッサに対する電源は遮断されることを特徴とする請求項３に記載の半導体装置。
【請求項５】
前記第１プロセッサは、１次元フィルタ演算、２次元フィルタ演算、センサス変換（Ｃｅｎｓｕｓ  Ｔｒａｎｓｆｏｒｍ）演算、最小／最大（Ｍｉｎ／Ｍａｘ）フィルタ演算、ＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）演算、ＳＳＤ（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ）演算、ＮＭＳ（Ｎｏｎ  Ｍａｘｉｍｕｍ  Ｓｕｐｐｒｅｓｓｉｏｎ）演算、及びマトリクス乗算演算のうちの少なくとも一つを行い、
前記第２プロセッサは、予測（ｐｒｅｄｉｃｔｉｏｎ）演算、ベクトルパーミュート（ｖｅｃｔｏｒ  ｐｅｒｍｕｔｅ）演算、ベクトルビット操作（ｖｅｃｔｏｒ  ｂｉｔ  ｍａｎｉｐｕｌａｔｉｏｎ）演算、バタフライ（ｂｕｔｔｅｒｆｌｙ）演算、及び並べ替え（ｓｏｒｔｉｎｇ）演算のうち少なくとも一つを行うことを特徴とする請求項１に記載の半導体装置。
【請求項６】
第１レジスタを含み、前記第１レジスタを用いてＲＯＩ（Ｒｅｇｉｏｎ  Ｏｎ  Ｉｎｔｅｒｅｓｔ）演算を行う第１プロセッサと、
第２レジスタを含み、前記第２レジスタを用いて算術演算を行う第２プロセッサと、を含み、
前記第１プロセッサ及び前記第２プロセッサは同じＩＳＡ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を共有することを特徴とする半導体装置。
【請求項７】
前記第１レジスタは前記第２プロセッサによって共有され、前記第２レジスタは前記第１プロセッサによって共有されることを特徴とする請求項６に記載の半導体装置。
【請求項８】
前記第１レジスタはＩＲ（Ｉｍａｇｅ  Ｒｅｇｉｓｔｅｒ）、ＣＲ（Ｃｏｅｆｆｉｃｉｅｎｔ  Ｒｅｇｉｓｔｅｒ）、及びＯＲ（Ｏｕｔｐｕｔ  Ｒｅｇｉｓｔｅｒ）のうちの少なくとも一つを含む、ことを特徴とする請求項１又は６に記載の半導体装置。
【請求項９】
前記第２レジスタはＳＲ（Ｓｃａｌａｒ  Ｒｅｇｉｓｔｅｒ）及びＶＲ（Ｖｅｃｔｏｒ  Ｒｅｇｉｓｔｅｒ）のうちの少なくとも一つを含むことを特徴とする請求項６に記載の半導体装置。
【請求項１０】
前記第１プロセッサは、処理するデータを再並列するデータ配置ユニット（ｄａｔａ  ａｒｒａｎｇｅ  ｕｎｉｔ）を含むことを特徴とする請求項６に記載の半導体装置。
【請求項１１】
前記第１プロセッサは、互いに並列に配置された複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）を含み、
前記複数のＡＬＵは、前記データ配置ユニットによって再配列された前記データを並列処理することを特徴とする請求項１０に記載の半導体装置。
【請求項１２】
前記第２プロセッサは、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）に基づくインストラクションを処理することを特徴とする請求項１又は６に記載の半導体装置。
【請求項１３】
前記第２プロセッサは、
ＶＬＩＷインストラクションを提供するフェッチユニットと、
前記ＶＬＩＷインストラクションを複数のインストラクションにデコードするデコーダを含むことを特徴とする請求項１２に記載の半導体装置。
【請求項１４】
前記第２プロセッサによって処理されるインストラクションは２つ以上のスロット（ｓｌｏｔ）を含むことを特徴とする請求項１２に記載の半導体装置。
【請求項１５】
前記２つ以上のスロットのうちの少なくとも一つのスロットは前記第１プロセッサを用いて実行されることを特徴とする請求項１４に記載の半導体装置。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関する。
【背景技術】
【０００２】
イメージ、ビジョン及びニューラルネットワークに関するアプリケーションは、例えば、マトリクス演算のために特化した命令語とメモリ構造を有するシステム上で実行できる。ところが、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションは、類似する方式の演算を行う場合が多いにも拘らず、イメージ、ビジョン及びニューラルネットワーク各々を独立して処理するためのプロセッサが個別に具現される場合が多かった。その理由は、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションの機能的類似性にも拘らず、イメージ、ビジョン及びニューラルネットワークアプリケーションを統合処理できるプロセッサを実現するためには、データスループット、メモリ帯域幅、同期化などにおいて各々のアプリケーションに必要な要求事項が異なることにある。
【０００３】
特に、イメージ、ビジョン及びニューラルネットワークに関する処理が全て必要なシステムの場合、これらのアプリケーションに対する各々の要求事項を充足できる、統合された処理環境を提供するための方案が求められる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする技術的課題は、イメージ、ビジョン及びニューラルネットワークに関する処理のために、制御が容易であると同時にデータの使用効率を高めた、統合された処理環境を提供できる半導体装置を提供することにある。
【０００５】
本発明の技術的課題は上述した技術的課題に限定されず、上述していない別の技術的課題の存在することは以降の記載から当該技術分野における通常の技術者に明確に理解できるであろう。
【課題を解決するための手段】
【０００６】
上記の技術的課題を達成するための本発明の一実施形態に係る半導体装置は、第１レジスタを含み、前記第１レジスタを用いてＲＯＩ（Ｒｅｇｉｏｎ  Ｏｎ  Ｉｎｔｅｒｅｓｔ）演算を行う第１プロセッサと、第２レジスタを含み、前記第２レジスタを用いて算術演算を行う第２プロセッサと、を含み、前記第１レジスタは前記第２プロセッサによって共有され、前記第２レジスタは前記第１プロセッサによって共有される。
【０００７】
上記の技術的課題を達成するための本発明の一実施形態に係る半導体システムは、第１レジスタを含み、前記第１レジスタを用いてＲＯＩ（Ｒｅｇｉｏｎ  Ｏｎ  Ｉｎｔｅｒｅｓｔ）演算を行う第１プロセッサと、第２レジスタを含み、前記第２レジスタを用いて算術演算を行う第２プロセッサと、を含み、前記第１プロセッサ及び前記第２プロセッサは同じＩＳＡ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を共有する。
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。
【発明の効果】
【０００８】
本発明に係る半導体装置においては、ＲＯＩ演算を行う第１プロセッサと算術演算を行う第２プロセッサとが、互いのレジスタの一部を共有しているので、メモリアクセスを最小限に抑制してデータの使用効率を高め性能を向上できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係る半導体装置を説明するための概略図である。
【図２】本発明の一実施形態に係る半導体装置の第１プロセッサを説明するための概略図である。
【図３】本発明の一実施形態に係る半導体装置の第２プロセッサを説明するための図である。
【図４】本発明の一実施形態に係る半導体装置が提供するアーキテクチャを説明するための概略図である。
【図５】本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。
【図６】本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。
【図７】本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。
【図８】本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。
【図９】本発明の一実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。
【図１０】本発明の他の実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。
【図１１】様々なサイズのマトリクスに対してＲＯＩ演算を行うためのデータパターンを説明するための概略図である。
【図１２】本発明の一実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図である。
【図１３】本発明の一実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図である。
【図１４】本発明の他の実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図である。
【図１５】本発明の他の実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図である。
【図１６】本発明の他の実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図である。
【図１７】本発明の他の実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図である。
【図１８】本発明の一実施形態に係る半導体装置が提供するシフトアップ演算を説明するための概略図である。
【図１９】本発明の様々な実施形態に係る半導体装置を用いてＨａｒｒｉｓコーナー検出（Ｈａｒｒｉｓ  ｃｏｒｎｅｒ  ｄｅｔｅｃｔｉｏｎ）を行う動作例を説明するためのフローチャートである。
【図２０】本発明の一実施形態に係る半導体装置で支援する、ビジョン及びニューラルネットワークに関するアプリケーションで使用されるマトリクス演算を効率よく処理するための命令の具現例を説明するための図である。
【図２１】図１４の５×５マトリクスの畳み込み（ｃｏｎｖｏｌｕｔｉｏｎ）演算のための実際アセンブリ命令の例を説明するための図である。
【図２２】図１４の５×５マトリクスの畳み込み（ｃｏｎｖｏｌｕｔｉｏｎ）演算のための実際アセンブリ命令の例を説明するための図である。
【発明を実施するための形態】
【００１０】
図１は本発明の一実施形態に係る半導体装置を説明するための概略図である。
【００１１】
図１を参照すると、本発明の一実施形態に係る半導体装置１は、第１プロセッサ１００、第２プロセッサ２００、コントローラ３００及びメモリバス４００を含む。
【００１２】
第１プロセッサ１００は、イメージ、ビジョン及びニューラルネットワークに関する処理のために主に使用されるＲＯＩ（Ｒｅｇｉｏｎ  Ｏｎ  Ｉｎｔｅｒｅｓｔ）演算に特化したプロセッサである。例えば、第１プロセッサ１００は、１次元フィルタ演算、２次元フィルタ演算、センサス変換（Ｃｅｎｓｕｓ  Ｔｒａｎｓｆｏｒｍ）演算、最小／最大（Ｍｉｎ／Ｍａｘ）フィルタ演算、ＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ、差の絶対値の和）演算、ＳＳＤ（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ、差の二乗の和）演算、ＮＭＳ（Ｎｏｎ  Ｍａｘｉｍｕｍ  Ｓｕｐｐｒｅｓｓｉｏｎ）演算、マトリクス乗算演算などを行う。
【００１３】
第１プロセッサ１００は、第１レジスタ１１２、１１４、１１６を含み、第１レジスタ１１２、１１４、１１６を用いて前記ＲＯＩ演算を行う。本発明の幾つかの実施形態において、第１レジスタはＩＲ（Ｉｍａｇｅ  Ｒｅｇｉｓｔｅｒ、イメージレジスタ）１１２、ＣＲ（Ｃｏｅｆｆｉｃｉｅｎｔ  Ｒｅｇｉｓｔｅｒ、係数レジスタ）１１４及びＯＲ（Ｏｕｔｐｕｔ  Ｒｅｇｉｓｔｅｒ、出力レジスタ）１１６のうちの少なくとも一つを含む。
【００１４】
ここで例えば、ＩＲ１１２は、第１プロセッサ１００が処理するために入力を受けたイメージデータを保存し、ＣＲ１１４は、前記イメージデータに演算するフィルタの係数を保存し、ＯＲ１１６は、第１プロセッサ１００が前記イメージデータを処理した演算結果を保存する。
【００１５】
一方、第１プロセッサ１００は、第１プロセッサ１００によって処理できるデータパターンを生成するデータ配置モジュール（Ｄａｔａ  Ａｒｒａｎｇｅ  ｍｏｄｕｌｅ、ＤＡ）１９０をさらに含む。データ配置モジュール１９０は、様々なサイズのマトリクスに対してＲＯＩ演算を効率よく行うためのデータパターンを生成する。
【００１６】
具体的に、本発明の幾つかの実施形態において、データ配置モジュール１９０は、例えば、ＩＲ１１２に保存された、第１プロセッサ１００が処理するために入力を受けたイメージデータを配置して、第１プロセッサ１００がＲＯＩ演算を効率よく行うためのデータパターンを生成するＩＤＡ（Ｉｍａｇｅ  ＤＡ）１９２を含むことができる。また、データ配置モジュール１９０は、例えば、ＣＲ１１４に保存された、前記イメージデータに演算するフィルタの係数データを配置して、第１プロセッサ１００がＲＯＩ演算を効率よく行うためのデータパターンを生成するＣＤＡ（Ｃｏｅｆｆｉｃｉｅｎｔ  ＤＡ）１９４を含むことができる。データ配置モジュール１９０から生成されるデータパターンに関する具体的な内容は、図９乃至図１５に関連して後述する。
【００１７】
第２プロセッサ２００は、算術演算を行う汎用プロセッサである。本発明の幾つかの実施形態において、第２プロセッサ２００は、予測（ｐｒｅｄｉｃｔｉｏｎ）演算、ベクトルパーミュート（ｖｅｃｔｏｒ  ｐｅｒｍｕｔｅ）演算、ベクトルビット操作（ｖｅｃｔｏｒ  ｂｉｔ  ｍａｎｉｐｕｌａｔｉｏｎ）演算、バタフライ（ｂｕｔｔｅｒｆｌｙ）演算、並べ替え（ｓｏｒｔｉｎｇ）演算などのベクトル特化命令語を含むベクトル演算処理に特化したベクトルプロセッサとして具現される。本発明の幾つかの実施形態において、第２プロセッサ２００は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）及び多重スロットＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）構造を採用する。
【００１８】
第２プロセッサ２００は、第２レジスタ２１２、２１４を含み、第２レジスタ２１２、２１４を用いて前記算術演算を行う。本発明の幾つかの実施形態において、第２レジスタは、ＳＲ（Ｓｃａｌａｒ  Ｒｅｇｉｓｔｅｒ）２１２及びＶＲ（Ｖｅｃｔｏｒ  Ｒｅｇｉｓｔｅｒ）２１４のうちの少なくとも一つを含む。
【００１９】
ここで、ＳＲ２１２は第２プロセッサ２００のスカラー演算に使用されるレジスタであり、ＶＲ２１４は第２プロセッサ２００のベクトル演算に使用されるレジスタである。
【００２０】
本発明の幾つかの実施形態において、第１プロセッサ１００及び第２プロセッサ２００は、同じＩＳＡ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を共有する。これにより、ＲＯＩ演算に特化した第１プロセッサ１００と算術演算に特化した第２プロセッサ２００がインストラクション（ｉｎｓｔｒｕｃｔｉｏｎ）レベルで共有されることにより制御が容易になる。
【００２１】
一方、本発明の幾つかの実施形態において、第１プロセッサ１００及び第２プロセッサ２００はレジスタを共有する。即ち、第１レジスタ１１２、１１４、１１６は第２プロセッサ２００によって共有され、第２レジスタ２１２、２１４は第１プロセッサ１００によって共有され得る。これにより、ＲＯＩ演算に特化した第１プロセッサ１００と算術演算に特化した第２プロセッサ２００が各々の内部レジスタを共有することにより、データの使用効率を増大し、メモリアクセス回数を減少できる。
【００２２】
一方、本発明の幾つかの実施形態において、第１プロセッサ１００と第２プロセッサ２００は、別個の独立した電源によって駆動されるように具現される。これにより、具体的な動作状況に応じて、未使用のプロセッサに対する電源を遮断できる。
【００２３】
図２は本発明の一実施形態に係る半導体装置の第１プロセッサを説明するための概略図である。
【００２４】
図２を参照すると、本発明の一実施形態に係る半導体装置の第１プロセッサ１００は、内部レジスタ１１０、ロードストアユニット（ｌｏａｄ  ｓｔｏｒｅ  ｕｎｉｔ、ＬＳＵ）１２０、データ配置レイヤ１３０、マップレイヤ１４０及びリデュースレイヤ１５０を含む。
【００２５】
内部レジスタ１１０は、図１に関連して先立って説明したＩＲ１１２、ＣＲ１１４及びＯＲ１１６を含む。
【００２６】
ロードストアユニット１２０は、メモリ装置との間でデータをやり取りする。例えば、ロードストアユニット１２０は、メモリバス４００を介して、メモリ装置に保存されたデータにアクセスする。前記ロードストアユニット１２０及びメモリバス４００は、図４に関連して後述するメモリ階層１０５に対応する。
【００２７】
本発明の幾つかの実施形態において、ロードストアユニット１２０は、１０２４ビットのデータに同時にアクセスする。一方、本発明の幾つかの実施形態において、ロードストアユニット１２０は、ｎ個（ｎは例えば２、４、８など）のポート（ｐｏｒｔ）を支援して、１０２４×ｎビットのデータに同時にアクセス。ロードストアユニット１２０が１０２４ビット単位でデータに同時にアクセスできるので、後述するデータ配置レイヤ１３０は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）に応じて、１行が１０２４ビットからなる配列形態でデータを再配列する。
【００２８】
データ配置レイヤ１３０は、図１にデータ配置モジュール１９０として示された要素に対応し、第１プロセッサ１００が処理するデータを再配置する。具体的に、データ配置レイヤ１３０は、第１プロセッサ１００が処理する様々なサイズのデータ（例えば、マトリクス）に対するＲＯＩ演算を効率よく行うためのデータパターンを生成する。データパターンで生成されるデータの種類に応じて、データ配置レイヤ１３０は、図１にＩＤＡ１９２及びＣＤＡ１９４として示された要素と各々に対応する下位ユニットを含む。
【００２９】
具体的に、データ配置レイヤ１３０は、第１プロセッサ１００が処理するデータを、ＳＩＭＤに応じて、各々、複数のデータを含む複数のデータ行の形態で再配置する。例えば、データ配置レイヤ１３０は、第１プロセッサ１００がＲＯＩ演算を効率よく行うことができるように、イメージデータを、ＳＩＭＤに応じて、各々、複数のデータを含む複数のデータ行の形態で再配列し、一方、イメージデータに演算するフィルタの係数データも、ＳＩＭＤに応じて、各々、複数のデータを含む複数のデータ行の形態で再配列する。
【００３０】
第１プロセッサ１００は、各々、複数のデータ行に対応するように互いに並列に配置された複数のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）１６０を含み、複数のＡＬＵ１６０は、マップレイヤ１４０及びリデュースレイヤ１５０を含む。ＡＬＵ１６０は、マップレイヤ１４０及びリデュースレイヤ１５０を用いて、各々、複数のデータ行に保存されたデータを並列処理するためにマップ演算、リデュース演算などを行う。
【００３１】
このようにデータを再配列する構造を採用することにより、イメージ、ビジョン及びニューラルネットワークに関する処理で頻繁に使用される３×３、４×４、５×５、７×７、８×８、９×９、１１×１１マトリクスに対して特に効率のよい処理が可能である。これに関連した具体的な内容は、図４、図９及び図１０に関連して後述する。
【００３２】
図３は本発明の一実施形態に係る半導体装置の第２プロセッサを説明するための図である。
【００３３】
図３を参照すると、第２プロセッサ２００はフェッチユニット２２０及びデコーダ２３０を含む。
【００３４】
デコーダ２３０は、フェッチユニット２２０から提供されたインストラクションをデコードする。本発明の幾つかの実施形態において、前記インストラクションは、ＶＬＩＷに応じて、４つのスロット（ｓｌｏｔ）２４０ａ、２４０ｂ、２４０ｃ、２４０ｄによって処理される。例えば、フェッチユニット２２０からフェッチされたインストラクションが１２８ビットである場合、デコーダ２３０は、前記フェッチされたインストラクションを、各々、３２ビットからなる４つのインストラクションにデコードし、４つのインストラクションは、各々、スロット２４０ａ、２４０ｂ、２４０ｃ、２４０ｄによって処理される。
【００３５】
本実施形態では、説明のための一例として、フェッチされたインストラクションが４つのインストラクションにデコードされて４つのスロットによって処理できる場合を示したが、本発明の範囲はこれらに限定されず、前記インストラクションは２つ以上の任意の数のスロットによって処理するように具現できる。
【００３６】
本実施形態において、４つのスロット２４０ａ、２４０ｂ、２４０ｃ、２４０ｄは、後述の制御命令（ＣｏｎＴｒｏｌ、ＣＴ）ユニット２４４ｄを除いては全て同時に実行可能であり、このような並列処理を効率よく行うために、スカラー機能ユニット（Ｓｃａｌａｒ  Ｆｕｎｃｔｉｏｎａｌ  Ｕｎｉｔ、ＳＦＵ）２４２ａ、２４２ｂ、２４２ｄ、ベクトル機能ユニット（Ｖｅｃｔｏｒ  Ｆｕｎｃｔｉｏｎａｌ  ｕｎｉｔ、ＶＦＵ）２４４ａ、２４４ｂ、２４４ｃ、移動ユニット（Ｍｏｖｅ  ｕｎｉｔ、ＭＶ）２４６ａ、２４６ｂ、２４６ｃ、２４６ｄが４つのスロット２４０ａ、２４０ｂ、２４０ｃ、２４０ｄに効率よく配置される。
【００３７】
具体的に、第１スロット２４０ａは、ＳＦＵ２４２ａ、ＶＦＵ２４４ａ及びＭＶ２４６ａを含み、第２スロット２４０ｂは、ＳＦＵ２４２ｂ、ＶＦＵ２４４ｂ及びＭＶ２４６ｂを含む。一方、第３スロット２４０ｃは、第１プロセッサ１００を用いて処理することが可能な命令に該当するＦＣＥ（Ｆｌｅｘｉｂｌｅ  Ｃｏｎｖｏｌｕｔｉｏｎ  Ｅｎｇｉｎｅ、フレキシブル畳み込みエンジン）ユニット２４２ｃ、ＶＦＵ２４４ｃ、及びＭＶ２４６ｃを含み、第４スロット２４０ｄは、ＳＦＵ２４２ｄ、制御命令に対応する制御命令（ＣｏｎＴｒｏｌ、ＣＴ）ユニット２４４ｄ及びＭＶ２４６ｄを含む。
【００３８】
ここで、第３スロット２４０ｃのＦＣＥユニット２４２ｃは第１プロセッサ１００に対応する。そして、第３スロット２４０ｃの残り、第１スロット２４０ａ、第２スロット２４０ｂ及び第４スロット２４０ｄは第２プロセッサ２００に対応する。例えば、第３スロット２４０ｃのＦＣＥユニット２４２ｃに配置されたインストラクションは第１プロセッサ１００によって実行され、第２スロット２４０ｂに配置されたインストラクションは第２プロセッサ２００によって実行される。
【００３９】
そして、第１プロセッサ１００及び第２プロセッサ２００は、各スロット２４０ａ、２４０ｂ、２４０ｃ、２４０ｄに含まれているＭＶ２４６ａ、２４６ｂ、２４６ｃ、２４６ｄを用いて互いのデータを共有する。これにより、第２プロセッサ２００で処理されていた作業は、必要に応じて、第３スロット２４０ｃのＦＣＥユニット２４２ｃを介して第１プロセッサ１００によって処理できる。この場合、第２プロセッサ２００で処理されていたデータも第１プロセッサ１００に共有できる。
【００４０】
一方、ＳＦＵ２４２ａ、２４２ｂ、２４２ｄによって処理された結果は、図１にも言及したＳＲ２１２に保存され、ＶＦＵ２４４ａ、２４４ｂ、２４４ｃによって処理された結果は、図１にも言及したＶＲ２１４に保存される。勿論、ＳＲ２１２及びＶＲ２１４に保存された結果は、必要に応じて、第１プロセッサ１００及び第２プロセッサ２００の少なくとも一つによって使用できる。
【００４１】
しかし、図３に示された構成は、以下で本発明の様々な実施形態についての説明の便宜のための一例に過ぎず、本発明の範囲がこれに限定されないのは、当該技術分野における通常の技術者にとって自明であろう。
【００４２】
図４は本発明の一実施形態に係る半導体装置が提供するアーキテクチャを説明するための概略図である。
【００４３】
図４を参照すると、本発明の一実施形態に係る半導体装置が提供する第１プロセッサ１００のアーキテクチャは、メモリ階層１０５、レジスタファイル１１０、データ配置レイヤ１３０、複数のＡＬＵ１６０、及びこれらの要素を全体的に制御する制御部１７０を含む。
【００４４】
ここで、メモリ階層１０５は、メモリインタフェース（ｍｅｍｏｒｙ  ｉｎｔｅｒｆａｃｅ）を提供する。メモリ階層１０５は、先立って図１及び図２に関連して説明したメモリ装置、メモリバス４００及びロードストアユニット１２０などに対応できる。
【００４５】
レジスタファイル１１０は、図２に関連して先立って説明した、ＩＲ１１２、ＣＲ１１４及びＯＲ１１６を含む内部レジスタ１１０に対応する。また、レジスタファイル１１０は、図５乃至図８に関連して後述する例示的な構造を含む。
【００４６】
データ配置レイヤ１３０は、図２に関連して先立って説明したデータ配置レイヤ１３０に対応し、第１プロセッサ１００が処理する様々なサイズのデータ（例えば、マトリクス）に対するＲＯＩ演算を効率よく行うためのデータパターンを生成する。
【００４７】
複数のＡＬＵ１６０は、図２に関連して先立って説明した複数のＡＬＵ１６０に対応し、マップレイヤ１４０及びリデュースレイヤ１５０を含み、マップ演算、リデュース演算などを行う。
【００４８】
前記アーキテクチャは、複数のＡＬＵ１６０が共有することが可能なレジスタファイル１１０を用いて、精巧なフロー制御および複雑な算術演算の実行を可能にすると共に、データ配置レイヤ１３０を用いて、レジスタファイル１１０に保存されたデータをパターン化することにより、入力データの再使用性を向上する。
【００４９】
例えば、データ配置レイヤ１３０は、処理するデータ（特にＲＯＩ演算を行うためのデータ）を、第１ＡＬＵグループ１６０ａ、第２ＡＬＵグループ１６０ｂ、・・・、第８ＡＬＵグループ１６０ｃ及び第９ＡＬＵグループ１６０ｄの各々に属したＡＬＵが処理できるように、データパターンを生成する。ここで、ＡＬＵグループ１６０ａ、１６０ｂ、１６０ｃ、１６０ｄは、各々、例えば６４個のＡＬＵを含む場合がが示されているが、本発明の範囲はこれに限定されない。マトリクスから例えば計９個の第１乃至第９ＡＬＵグループＡＬＵグループ１６０ａ、１６０ｂ、・・・、１６０ｃ、１６０ｄによる処理に適したデータパターンを生成する具体的な説明は、図９乃至図１５に関連して後述する。
【００５０】
図５乃至図８は本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。
【００５１】
図５を参照すると、ＩＲ１１２は、第１プロセッサ１００が特にＲＯＩ演算を処理するための入力イメージデータを保存するためのものであり、ＩＲ（Ｉｍａｇｅ  Ｒｅｇｉｓｔｅｒ）という名称は、具体的な実現又は命令に応じて任意に変更され得る。
【００５２】
本実施形態において、ＩＲ１１２は、例えば、１６個のエントリ（ｅｎｔｒｙ）を含むように具現される。そして、エントリＩＲ［ｉ］（但し、ｉは０以上１５以下の整数）各々のサイズは例えば１０２４ビットで具現される。
【００５３】
このうち、エントリＩＲ［０］乃至エントリＩＲ［７］は、様々なサイズの、ＲＯＩ演算のためのイメージデータを支援するためのレジスタファイル（ｒｅｇｉｓｔｅｒ  ｆｉｌｅ）ＩＳＲ０として定義されて利用できる。同様に、エントリＩＲ［８］乃至エントリＩＲ［１５］は、様々なサイズの、ＲＯＩ演算のためのイメージデータを支援するためのレジスタファイルＩＳＲ１として定義されて利用できる。
【００５４】
但し、留意すべきは、ＩＳＲ０、ＩＳＲ１の定義はこれに限定されず、具体的に処理するデータのサイズに応じて可変的にグループ化して定義できる点である。即ち、ＩＳＲ０、ＩＳＲ１は、イメージデータのサイズ、マトリクス演算の特性、フィルタ演算の特性などを考慮して、図５に示されたのと異なる構造で定義され得る。
【００５５】
次いで、図６を参照すると、ＣＲ１１４は、ＩＲ１１２に保存されたイメージデータに演算するためのフィルタの係数を保存するためのものであり、ＣＲ（Ｃｏｅｆｆｉｃｉｅｎｔ  Ｒｅｇｉｓｔｅｒ）という名称は、具体的な実現又は命令に応じて任意に変更され得る。
【００５６】
本実施形態において、ＣＲ１１４は、例えば１６個のエントリを含むように具現される。そして、エントリＣＲ［ｉ］（但し、ｉは０以上１５以下の整数）各々のサイズは、例えば１０２４ビットで具現される。
【００５７】
このうち、エントリＣＲ［０］乃至エントリＣＲ［７］は、ＩＲ１１２の場合と同様に、様々なサイズの、ＲＯＩ演算のための係数データを支援するためのレジスタファイルＣＳＲ０として定義されて利用できる。同様に、エントリＣＲ［８］乃至エントリＣＲ［１５］は、様々なサイズの、ＲＯＩ演算のための係数データを支援するためのレジスタファイルＣＳＲ１として定義されて利用できる。
【００５８】
但し、留意すべきは、ＣＳＲ０、ＣＳＲ１の定義は、これに限定されず、具体的に処理するデータのサイズに応じて可変的にグループ化して定義できる点である。即ち、ＣＳＲ０、ＣＳＲ１は、イメージデータのサイズ、マトリクス演算の特性、フィルタ演算の特性などを考慮して、図６に示されたのとは異なる構造で定義され得る。
【００５９】
次いで、図７を参照すると、ＯＲ１１６は、第１プロセッサ１００がイメージデータを処理した演算結果を貯蔵するためのもので、ＯＲ（Ｏｕｔｐｕｔ  Ｒｅｇｉｓｔｅｒ）という名称は、具体的な実現又は命令に応じて任意に変更され得る。
【００６０】
本実施例形態において、ＯＲ１１６は、例えば１６個のエントリを含むように具現される。そして、エントリＯＲ［ｉ］（但し、ｉは０以上１５以下の整数）各々のサイズは例えば２０４８ビットで具現される。
【００６１】
本発明の幾つかの実施形態において、ＯＲ１１６は、再び、データ配置レイヤ１３０の入力レジスタとして使用され得る。この場合、ＯＲ１１６に保存された演算結果を効率よく再使用することができるように、ＯＲ１１６の各々のエントリＯＲ［ｉ］は上部パーツＯＲｈ［ｉ］と下部パーツＯＲｌ［０］に区分して使用される。例えば、エントリＯＲ［０］は、１０２４ビットを有する上部パーツＯＲｈ［０］と、１０２４ビットを有する下部パーツＯＲｌ［０］を含む。このようにＯＲ１１６の各々のエントリＯＲ［ｉ］が上部パーツＯＲｈ［ｉ］と下部パーツＯＲｌ［０］に区分されたのは、図８と関連して後述するＷレジスタとの互換性のためである。Ｗレジスタは、図８に示されたように、レジスタファイルＶｅに含まれるエントリと、レジスタファイルＶｏに含まれるエントリを一つのエントリとして定義したものである。
【００６２】
このようにＩＲ１１２およびＣＲ１１４の各々のエントリと同じサイズを持つようにＯＲ１１６のエントリを定義することにより、ＩＲ１１２、ＣＲ１１４及びＯＲ１１６の間のデータ移動が容易になる。
【００６３】
このうち、エントリＯＲ［０］乃至エントリＯＲ［７］は、ＩＲ１１２、ＣＲ１１４の場合と同様に、様々なサイズの、ＲＯＩ演算のためのイメージデータを支援するためのレジスタファイルＯＳＲ０として定義されて利用できる。同様に、エントリＯＲ［８］乃至エントリＯＲ［１５］は、様々なサイズの、ＲＯＩ演算のためのイメージデータを支援するためのレジスタファイルＯＳＲ１として定義されて利用できる。
【００６４】
但し、留意すべきは、ＯＳＲ０、ＯＳＲ１の定義はこれに限定されるものではなく、具体的に、処理するデータのサイズに応じて可変的にグループ化して定義できる点である。即ち、ＯＳＲ０、ＯＳＲ１は、イメージデータのサイズ、マトリクス演算の特性、フィルタ演算の特性などを考慮して、図７に示されたのとは異なる構造で定義され得る。
【００６５】
また、ＩＲ１１２、ＣＲ１１４及びＯＲ１１６に対するエントリのサイズや、レジスタファイルを構成するエントリの数は、これまで説明した実施形態に限定されず、具体的な実現目的に応じて、そのエントリのサイズや数は任意に変更され得る。
【００６６】
一方、図５乃至図７で説明したように、ＩＲ１１２、ＣＲ１１４及びＯＲ１１６は、その用途に応じて区分して説明されたが、本発明の幾つかの実施形態において、第１プロセッサ１００の観点からは、互いに同一のサイズを有するレジスタが４セット存在するかの如く認識するように、レジスタ仮想化を具現できる。
【００６７】
図８を参照すると、ＶＲ２１４は、第２プロセッサ２００がベクトル演算を行うためのデータを保存するためのものである。
【００６８】
本実施形態において、ＶＲ２１４は、１６個のエントリを含むように具現される。そして、各々のエントリＶＲ［ｉ］（但し、ｉは０以上１５以下の整数）のサイズは、例えば１０２４ビットで具現する。
【００６９】
本実施形態において、１６個のエントリのうち、そのインデクスが偶数に該当する８個のエントリをレジスタファイルＶｅとして、１６個のエントリのうち、そのインデクスが奇数に該当する８個のエントリをレジスタファイルＶｏとして定義する。そして、レジスタファイルＶｅに含まれるエントリとレジスタファイルＶｏに含まれるエントリを一つのエントリとして定義してＷレジスタを具現する。
【００７０】
例えば、エントリＶｅ［０］及びエントリＶｏ［１］を含む一つのエントリＷ［０］を定義し、エントリＶｅ［２］及びエントリＶｏ［３］を含む一つのエントリＷ［１］を定義する方式で、合計８個のエントリＷ［ｉ］（ただし、ｉは０以上７以下の整数）を含むＷレジスタを具現する。
【００７１】
ＶＲ２１４に対するエントリのサイズや、レジスタファイルを構成するエントリの数は、これまで説明した実施形態に限定されず、具体的な実現目的に応じて、そのエントリのサイズや数は任意に変更できる。
【００７２】
一方、図５乃至図７で説明した、ＩＲ１１２、ＣＲ１１４及びＯＲ１１６と一緒に、ＶＲ２１４は、第１プロセッサ１００及び第２プロセッサ２００の観点から、互いに同一のサイズを有するレジスタが５セット存在するかの如く認識するように、レジスタ仮想化を具現できる。
【００７３】
この場合、仮想化されたレジスタに保存されたデータは、図３に示されたＭＶ２４６ａ、２４６ｂ、２４６ｃ、２４６ｄを介してＩＲ１１２、ＣＲ１１４、ＯＲ１１６及びＶＲ２１４の間で移動できる。これにより、第１プロセッサ１００及び第２プロセッサ２００は、メモリ装置ではなく、レジスタを用いてデータを共有し、保存されたデータを再活用できる。
【００７４】
図９は本発明の一実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。
【００７５】
図９を参照すると、データ配置レイヤ１３０によって再配列されたデータは、並列に配置された９個のデータ行ＤＡＴＡ１乃至ＤＡＴＡ９を構成する。
【００７６】
各々のデータ行ＤＡＴＡ１乃至ＤＡＴＡ９は、縦方向に複数のレーン（ｌａｎｅ）を有する。例えば、第１データ行ＤＡＴＡ１の第１要素Ａ１、第２データ行ＤＡＴＡ２の第１要素Ｂ１、・・・、第９データ行ＤＡＴＡ９の第１要素Ｄ１は、第１レーンを形成し、第１データ行ＤＡＴＡ１の第２要素Ａ２、第２データ行ＤＡＴＡ２の第２要素Ｂ２、・・・、第９データ行ＤＡＴＡ９の第２要素Ｄ２は、第２レーンを形成する。
【００７７】
本発明の一実施形態において、各レーンの幅は例えば１６ビットである。即ち、第１データ行ＤＡＴＡ１の第１要素Ａ１は１６ビットのデータ形態で保存される。この場合、第１データ行ＤＡＴＡ１は、１６ビットのデータ形態を有する要素を６４個含む。
【００７８】
一方、第１プロセッサ１００は、データ配置レイヤ１３０によって再配列されたデータを処理するための複数のＡＬＵを含み、複数のＡＬＵは、９つのデータ行ＤＡＴＡ１乃至ＤＡＴＡ９の各々に対応する９×６４個のＡＬＵを含むことができる。例えば、図４の第１ＡＬＵグループ１６０ａは第１データ行ＤＡＴＡ１に対応し、図４の第２ＡＬＵグループ１６０ｂは第２データ行ＤＡＴＡ２に対応する。そして、図４の第９ＡＬＵグループ１６０ｄは第９データ行ＤＡＴＡ９に対応する。
【００７９】
第１ＡＬＵグループ１６０ａの６４個のＡＬＵは、各々、第１データ行ＤＡＴＡ１の６４個の要素に該当するデータを並列処理し、第２ＡＬＵグループ１６０ｂの６４個のＡＬＵは、各々、第２データ行ＤＡＴＡ２の６４個の要素に該当するデータを並列処理する。そして、第９ＡＬＵグループ１６０ｄの６４個のＡＬＵは、各々、第９データ行ＤＡＴＡ９の６４個の要素に該当するデータを並列処理する。
【００８０】
本発明の様々な実施形態に係るデータ配置レイヤ１３０によって再配列されたデータのデータ行の数は、９個に限定されるものではなく、具体的な実現目的に応じて任意に変更され得る。そして、複数のデータ行の各々に対応する複数のＡＬＵ数もそれに応じて変更される。
【００８１】
ところが、図１１に関連して後述するように、データ配置レイヤ１３０によって再配列されたデータのデータ行の数が９個である場合、特に、様々なサイズのマトリクスに対するＲＯＩ演算の際にその効率性を特に発揮できる。
【００８２】
図１０は本発明の他の実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。
【００８３】
図１０を参照すると、データ配置レイヤ１３０によって再配列されたデータは、並列に配置された９個のデータ行ＤＡＴＡ１乃至ＤＡＴＡ９を構成する。
【００８４】
図９と異なる点のみを説明すると、本実施形態において、各々のデータ行ＤＡＴＡ１乃至ＤＡＴＡ９は縦方向に複数のレーンを有するが、各レーンの幅は８ビットであり得る。即ち、第１データ行ＤＡＴＡ１の第１要素Ａ１は８ビットのデータ形態で保存される。この場合、第１データ行ＤＡＴＡ１は、８ビットのデータ形態を持つ要素を１２８個含む。
【００８５】
一方、第１プロセッサ１００は、データ配置レイヤ１３０によって再配列されたデータを処理するための複数のＡＬＵを含み、複数のＡＬＵは、９つのデータ行ＤＡＴＡ１乃至ＤＡＴＡ９の各々に対応する９×１２８個のＡＬＵを含む。
【００８６】
本発明の様々な実施形態に係るデータ配置レイヤ１３０によって再配列されたデータのデータ行の数は、９個に限定されるものではなく、具体的な実現目的に応じて任意に変更され得る。そして、複数のデータ行の各々に対応する複数のＡＬＵ数もそれに応じて変更される。
【００８７】
ところが、図１１に関連して後述するように、データ配置レイヤ１３０によって再配列されたデータのデータ行の数が９個である場合、特に、様々なサイズのマトリクスに対するＲＯＩ演算の際にその効率性を特に発揮できる。
【００８８】
図１１は様々なサイズのマトリクスに対してＲＯＩ演算を行うためのデータパターンを説明するための概略図であり、図１２及び図１３は本発明の一実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図であり、図１４乃至図１７は本発明の他の実施形態に係るＲＯＩ演算を行うためのデータパターンを説明するための概略図である。これらの図１１乃至図１７を参照すると、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションで最もよく使用されるマトリクスサイズに応じて、データ配置レイヤ１３０によって再配列されたデータが用いられるパターンを知ることができる。
【００８９】
図１１において、マトリクスＭ１は、ＲＯＩ演算の対象となるイメージのサイズが３×３である場合に必要なイメージデータを含み、マトリクスＭ２は、ＲＯＩ演算の対象となるイメージのサイズが４×４である場合に必要なイメージデータを含む。これと同様に、マトリクスＭ６は、ＲＯＩ演算の対象となるイメージのサイズが９×９である場合に必要なイメージデータを含み、マトリクスＭ７は、ＲＯＩ演算の対象となるイメージのサイズが１１×１１である場合に必要なイメージデータを含む。例えば、メモリ装置に、図１１に示されたようなイメージデータが保存されていると仮定しよう。図１２に示すように、もしサイズ３×３のマトリクスＭ１１、Ｍ１２、Ｍ１３に対してＲＯＩ演算を行わなければならない場合、第１プロセッサ１００は、メモリ装置に保存されている図１１のイメージデータを読み取ってＩＲ１１２に保存する。
【００９０】
この場合、図１３を参照すると、並列に配置された９個のデータ行ＤＡＴＡ１乃至ＤＡＴＡ９における縦方向の一番目のレーンには、マトリクスＭ１１に該当するイメージデータＮ１１乃至Ｎ１９が配置される。次に、二番目のレーンには、マトリクスＭ１２に該当するイメージデータＮ１２、Ｎ１３、Ｎ２１、Ｎ１５、Ｎ１６、Ｎ２２、Ｎ１８、Ｎ１９、Ｎ２３が配置され、三番目のレーンには、マトリクスＭ１３に該当するイメージデータＮ１３、Ｎ２１、Ｎ３１、Ｎ１６、Ｎ２２、Ｎ３２、Ｎ１９、Ｎ２３、Ｎ３３が配置される。
【００９１】
これにより、複数のＡＬＵ（ＡＬＵ１＿１乃至ＡＬＵ９＿１）は、マトリクスＭ１１に該当するイメージデータを含む一番目のレーンを演算し、複数のＡＬＵ（ＡＬＵ１＿２乃至ＡＬＵ９＿２）はマトリクスＭ１２に該当するイメージデータを含む二番目のレーンを演算する。そして、複数のＡＬＵ（ＡＬＵ１＿３乃至ＡＬＵ９＿３）は、マトリクスＭ１３に該当するイメージデータを含む三番目のレーンを演算する。
【００９２】
このような方式でイメージデータを処理することにより、本実施形態において、ＲＯＩ演算の対象となるマトリクスが３×３のサイズを持つと仮定すると、第１プロセッサ１００は、１サイクルに３つのイメージラインに対してマトリクス演算ができる。このとき、９個のデータ行ＤＡＴＡ１乃至ＤＡＴＡ９を並列処理する複数のＡＬＵの使用効率は１００％になる。
【００９３】
一方、図１４に示すように、もしサイズ５×５のマトリクスＭ３１、Ｍ３２に対してＲＯＩ演算を行わなければならない場合、第１プロセッサ１００は、メモリ装置に保存されている図１１のイメージデータを読み取ってＩＲ１１２に保存する。
【００９４】
この場合、図１５乃至図１７を参照すると、５×５マトリクス演算は、合計３サイクルにわたって演算が行われる。図１５による一番目のサイクルでは、３×３マトリクスと同様の方式で演算が行われる。図１６による二番目のサイクルでは、図１１のマトリクスＭ２から図１１のマトリクスＭ１を除いたイメージデータＮ２１乃至Ｎ２４がＡＬＵ（ＡＬＵ１＿１乃至ＡＬＵ９＿１）又は一番目のベクトルレーンに割り当てられ、イメージデータＮ３１、Ｎ３２、Ｎ３３、Ｎ３４、Ｎ２７、Ｎ２６、Ｎ２５のデータは、ＡＬＵ（ＡＬＵ２＿２乃至ＡＬＵ９＿２）又は二番目のベクトルレーンに割り当てられる。三番目以降のレーンに対しても同様の方法でデータが割り当てられる。図１７による三番目のサイクルでは、マトリクスＭ３からマトリクスＭ２を除いたデータＮ３１乃至Ｎ２８がＡＬＵ（ＡＬＵ１＿１乃至ＡＬＵ９＿１）又は一番目のベクトルレーンに割り当てられ、以降のレーンにも同様の方式で割り当てられて処理される。
【００９５】
このような方式でイメージデータを処理することにより、本実施形態において、ＲＯＩ演算の対象となるマトリクスが５×５のサイズを持つと仮定すると、第１プロセッサ１００は二番目のサイクルで２つのデータに対してのみ演算を行わないため、ＡＬＵの使用効率は９３％（（６４ｌａｎｅ×９ｃｏｌｕｍｎ×３ｃｙｃｌｅ−６４ｌａｎｅ×２ｃｏｌｕｍｎ）×１００／６４×９×３）となる。
【００９６】
このような方式によれば、ＲＯＩ演算の対象となるマトリクスが４×４のサイズを持つと仮定すると、第１プロセッサ１００は、２サイクルにわたってマトリクス演算が行われる。このとき、２つのデータのみを使用しないので、ＡＬＵの使用効率は８９％となる。
【００９７】
ＲＯＩ演算の対象となる行列が７×７のサイズを持つと仮定すると、第１プロセッサ１００は、６サイクルにわたってマトリクス演算を行い、５つのデータのみを使用しないので、ＡＬＵの使用効率は９１％となる。
【００９８】
ＲＯＩ演算の対象となるマトリクスが８×８のサイズを持つと仮定すると、第１プロセッサ１００は、８サイクルの間にマトリクス演算を行い、８つのデータのみを使用しないので、ＡＬＵの使用効率は８９％となる。
【００９９】
ＲＯＩ演算の対象となるマトリクスが９×９のサイズを持つと仮定すると、第１プロセッサ１００は、９サイクルにわたって９個のイメージラインに対して９×９マトリクス演算を行い、全てのデータが全て使用されるので、ＡＬＵの使用効率は１００％となる。
【０１００】
ＲＯＩ演算の対象となるマトリクスが１１×１１のサイズを持つと仮定すると、第１プロセッサ１００は、１４サイクルにわたってマトリクス演算が行われ、１１個のイメージラインのうち、８つのデータだけを使用しないので、ＡＬＵの使用効率は９６％となる。
【０１０１】
図１１乃至図１７で考察したように、データ配置レイヤ１３０によって再配列されたデータのデータ行の数が９個である場合、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションで最もよく使用される３×３、４×４、５×５、７×７、８×８、９×９、１１×１１のサイズを始めとする様々なサイズのマトリクスに対するＲＯＩ演算の際に、第１プロセッサ１００のＡＬＵの使用効率が約９０％のレベルを維持できる。
【０１０２】
本発明の幾つかの実施形態において、演算するマトリクスのサイズが大きくなると、既存のマトリクスサイズよりも大きくなった部分に対してのみデータ配置が行われる。例えば、マトリクスＭ１に対して第１演算を行った後、マトリクスＭ２に対して第２演算を行わなければならない場合、第２演算のために必要なイメージデータＮ２１乃至Ｎ２７に対してのみ追加のデータ配置が行われる。
【０１０３】
一方、本発明の幾つかの実施形態において、複数のＡＬＵは、ＩＲ１１２に保存されたイメージデータ、及びＣＲ１１４に保存されたフィルタ係数を用いて演算を行った後、ＯＲ１１６にその結果を保存する。
【０１０４】
図１８は本発明の一実施形態に係る半導体装置が提供するシフトアップ演算を説明するための概略図である。
【０１０５】
図１８を参照すると、本発明の一実施形態に係る半導体装置が提供するシフトアップ演算は、メモリ装置から予めＩＲ１１２に保存したイメージデータを効率よく処理するために、ＩＲ１１２に保存されたデータを読み取る方法を制御する。
【０１０６】
具体的に、シフトアップ演算は、もし、図１４に示すようなサイズ５×５のマトリクスＭ３１、Ｍ３２に対してＲＯＩ演算を行わなければならない場合、図１８において第１領域Ｒ１に該当するイメージデータを全て処理した。その後、第２領域Ｒ２に該当するイメージデータを処理しなければならない場合、さらに必要な第６行のデータのみメモリからＩＲ１１２に読み取る。
【０１０７】
例えば、第１領域Ｒ１に該当する第１行乃至第５行のデータが各々、図５のＩＲ［０］乃至ＩＲ［４］に保存されていた場合、ＩＲ［５］には第６行のデータが予め保存されているようにすることにより、追加のメモリアクセスを回避しながら、ＩＲ１１２の読み取り領域を第２領域Ｒ２に調節するだけで、第２行乃至第６行に対するサイズ５×５のマトリクスＭ３１、Ｍ３２に対してＲＯＩ演算を続行できる。
【０１０８】
図１９は本発明の様々な実施形態に係る半導体装置を用いてＨａｒｒｉｓコーナー検出（Ｈａｒｒｉｓ  ｃｏｒｎｅｒ  ｄｅｔｅｃｔｉｏｎ）を行う動作例を説明するためのフローチャートである。Ｈａｒｒｉｓコーナー検出方法は、当該技術分野における通常の技術者に広く知られているので、その詳細な内容は省略する。
【０１０９】
図１９を参照すると、Ｈａｒｒｉｓコーナー検出方法の一例は、段階Ｓ９０１でイメージの入力を受けることを含む。具体的に、第１プロセッサ１００が図１のメモリバス４００を介してコーナー検出をするべきイメージの入力を受ける。
【０１１０】
段階Ｓ９０３において、前記方法は、微分値（Ｄｅｒｉｖａｔｉｖｅ  Ｖａｌｕｅ、ＤＶ）を演算する。具体的に、第１プロセッサ１００は、必要に応じてデータ配置レイヤ１３０を介して再配列されたイメージデータから、例えば、Ｘ軸とＹ軸にピクセルに対する微分値ＤＶを演算する。このとき、微分は、Ｓｏｂｅｌフィルタと呼ばれる１次元フィルタを用いて、ｘ軸（Ｉｘ＝Ｇｘ＊Ｉ）とｙ軸（Ｉｙ＝Ｇｙ＊Ｉ）方向に各イメージに微分係数を乗じることにより容易に求められる。入力されたイメージはＩＲ１１２に保存され、微分係数はＣＲ１１４に保存され、乗算結果はＯＲ１１６に保存される。
【０１１１】
次に、段階Ｓ９０５で、前記方法は、微分積（Ｄｅｒｉｖａｔｉｖｅ  Ｐｒｏｄｕｃｔ、ＤＰ）を演算する。具体的に、第１プロセッサ１００は、必要に応じて、データ配置レイヤ１３０を介して再配列された微分値ＤＶから、全てのピクセルに対する微分積ＤＰを演算する。段階Ｓ９０３の結果を基に、ｘ軸、ｙ軸の結果を二乗（Ｉｘ）２、（Ｉｙ）２し、ｘ軸とｙ軸の結果を互いに乗算（Ｉｘｙ＝Ｉｘ＊Ｉｙ）してＤＶ値を求める。このとき、ｘ軸とｙ軸の結果は、段階Ｓ９０３の結果、ＯＲ１１６に保存された結果を再活用して、ＯＲ１１６でＩＤＡ／ＣＤＡパターンを用いてベクトルＡＬＵ入力として使用して演算結果を再びＯＲ１１６に保存する。
【０１１２】
次に、段階Ｓ９０７において、前記方法は、ＳＳＤ（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ）を演算する。具体的に、第１プロセッサ１００は、微分積ＤＰを用いてＳＳＤを演算する。ＳＳＤ演算（Ｓｘ）２＝Ｇｘ＊（Ｉｘ）２、（Ｓｙ）２＝Ｇｙ＊（Ｉｙ）２、Ｓｘｙ＝Ｇｘｙ＊Ｉｘ＊Ｉｙ）も、段階Ｓ９０５と同様の方法で、段階Ｓ９０５の結果であるＯＲ１１６からＩＤＡを経てベクトルＦＵにデータを割り当て、ＣＲ１１４に保存された微分係数を乗じて再びＯＲ１１６に保存される。
【０１１３】
以後、段階Ｓ９０９で、前記方法は特徴点マトリクス（ｋｅｙ  ｐｏｉｎｔ  ｍａｔｒｉｘ）を定義する。ところが、特徴点マトリクスを決定することは、ＲＯＩ処理に特化した第１プロセッサ１００だけでは実行が難しいので、第２プロセッサ２００を介して処理する。
【０１１４】
この場合、第１プロセッサ１００のＯＲ１１６に保存された結果値は、第２プロセッサ２００に共有されて再使用される。例えば、第１プロセッサ１００のＯＲ１１６に保存された結果値は、図３のＭＶを用いて第２プロセッサ２００のＶＲ２１４へ移動される。又は、ＯＲ１１６値の入力を直ちに受けることが可能なＦＵは、ＭＶを経ることなく、第１プロセッサ１００の結果を使用する。
【０１１５】
次に、段階Ｓ９１１で、前記の方法は、応答関数（Ｒ＝Ｄｅｔ（Ｈ）−ｋ（Ｔｒａｃｅ（Ｈ）２））を演算する。具体的に、第２プロセッサ２００は、ＶＲ２１４に保存された段階Ｓ９０９の結果値を用いて応答関数を演算する。この段階では第２プロセッサ２００のみを使用するので、全ての演算の中間及び最終結果はＶＲ２１４に保存される。
【０１１６】
以後、段階Ｓ９１３において、前記方法は、ＮＭＳ（Ｎｏｎ  Ｍａｘｉｍｕｍ  Ｓｕｐｐｒｅｓｓｉｏｎ）演算を行って特徴点（キーポイント）を検出する。本段階Ｓ９１３は、再び第１プロセッサ１００によって処理される。
【０１１７】
この場合、第２プロセッサ２００のＶＲ２１４に保存された結果値は、第１プロセッサ１００に共有されて再使用される。例えば、第２プロセッサ２００のＶＲ２１４に保存された結果値は、図３のＭＶを用いて第１プロセッサ１００のＯＲ１１６へ移動される。又は、ＶＲ２１４から直ちにＩＤＡ／ＣＤＡを介してベクトルＦＵに割り当てられる。
【０１１８】
このような方式で、入力されたイメージのコーナー検出作業が完了するまで、第１プロセッサ１００と第２プロセッサ２００のレジスタのみを使用するので、メモリ装置をアクセスする必要がない。これにより、メモリ装置をアクセスするために必要とされるオーバヘッド、消費電力などのコストを大幅に削減できる。
【０１１９】
図２０は本発明の一実施形態に係る半導体装置で支援する、ビジョン及びニューラルネットワークに関するアプリケーションで使用されるマトリクス演算を効率よく処理するための命令の具現例を説明するための図である。
【０１２０】
図２０を参照すると、第１プロセッサ１００は、ビジョン及びニューラルネットワークに関するアプリケーションにおいて使用されるマトリクス演算を効率よく処理するための命令を支援する。これらの命令は、大きく３種類の命令に区分できる。
【０１２１】
マップ（ＭＡＰ）命令は、例えば、複数のＡＬＵ１６０を用いてデータを演算するための命令であって、Ａｄｄ、Ｓｕｂ、Ａｂｓ、ＡｂｓＤｉｆｆ、Ｃｍｐ、Ｍｕｌ、Ｓｑｒなどの演算を支援する。マップ（ＭＡＰ）命令は、第１プロセッサ１００のＯＲ１１６をターゲットレジスタとし、被演算子としてＩＤＡ１９２及びＣＤＡ１９４のうちの少なくとも一つによるデータパターンを用いる。さらに、処理データの単位が８ビットなのか１６ビットなのかを示すフィールドを含む。
【０１２２】
リデュース（ＲＥＤＵＣＥ）命令は、例えばツリー演算のための命令であって、Ａｄｄツリー、最小ツリー、最大ツリーなどの演算を支援する。リデュース（ＲＥＤＵＣＥ）命令は、第１プロセッサ１００のＯＲ１１６と第２プロセッサ２００のＶＲ２１４のうちの少なくとも一つをターゲットレジスタとし、ＩＤＡ１９２及びＣＤＡ１９４のうちの少なくとも一つによるデータパターンを用いる。さらに、処理データの単位が８ビットなのか１６ビットなのかを示すフィールドを含む。
【０１２３】
マップリデュース（ＭＡＰ＿ＲＥＤＵＣＥ）命令は、マップ演算とリデュース演算とを組み合わせた命令をいう。マップリデュース（ＭＡＰ＿ＲＥＤＵＣＥ）命令は、第１プロセッサ１００のＯＲ１１６と第２プロセッサ２００のＶＲ２１４のうちの少なくとも一つをターゲットレジスタとし、ＩＤＡ１９２及びＣＤＡ１９４のうちの少なくとも１つによるデータパターンを用いる。さらに、処理データの単位が８ビットなのか１６ビットなのかを示すフィールドを含むる。
【０１２４】
これまで説明した本発明の様々な実施形態によれば、第１プロセッサ１００及び第２プロセッサ２００は、同じＩＳＡ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を共有することにより、ＲＯＩ演算に特化した第１プロセッサ１００と算術演算に特化した第２プロセッサ２００がインストラクション（ｉｎｓｔｒｕｃｔｉｏｎ）レベルで共有されることにより制御が容易になる。また、第１プロセッサ１００及び第２プロセッサ２００は、レジスタを共有することにより、データの使用効率を増大し、メモリアクセス回数を低減できる。それだけでなく、第１プロセッサ１００が処理する様々なサイズのデータ（例えば、マトリクス）に対するＲＯＩ演算を効率よく行うためのデータパターンを用いることにより、イメージ、ビジョン及びニューラルネットワークに関する処理でよく使用される３×３、４×４、５×５、７×７、８×８、９×９、１１×１１のマトリクスに対して特に効率のよい処理が可能である。
【０１２５】
図２１及び図２２は、図１４の５×５マトリクスの畳み込み演算のための実際のアセンブリ命令の例を説明するための図である。
【０１２６】
図２０及び図２１を参照すると、一番目のラインのＭＡＰＭＵＬ＿ＲｅｄｕｃｅＡｃｃ１６（ＩＤＡ＿Ｃｏｎｖ３（ＩＲ）、ＣＤＡ＿Ｃｏｎｖ３（ＣＲ、ｗ１６））命令におけるＭＡＰＭＵＬ＿ＲｅｄｕｃｅＡｃｃ１６は、図２０のステージ、ターゲットレジスタ、被演算子１、被演算子２及びオペコード（Ｏｐｃｏｄｅ）に基づいてＭＡＰステージとＲｅｄｕｃｅステージで行われる命令語を意味する。従って、１６ビットのデータに対して、ＭＡＰステージではＭｕｌ命令語を実行し、Ｒｅｄｕｃｅステージではａｄｄツリーを実行するが、以前の加算結果をアキュムレーション（ａｃｃｕｍｕｌａｔｉｏｎ）するため、Ａｃｃ命令語を使用する。各々のラインにおける演算子「：」は、第１プロセッサ１００及び第２プロセッサ２００の各スロット２４０ａ、２４０ｂ、２４０ｃ、２４０ｄで処理される命令語を区別する演算子である。従って、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）、及び多重スロットＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）構造の命令語セットを用いて第１プロセッサ１００及び第２プロセッサ２００で演算動作を行う。例えば、ＭＡＰＭｕｌ＿ＲｅｄｕｃｅＡｃｃ１６は、第１プロセッサ１００に該当するスロットに割り当てられ、命令語ＳｈｕｐＲｅｇ＝１は、第２プロセッサ２００に該当するスロットに割り当てられる。命令語ＳｈｕｐＲｅｇはＳｈｉｆｔｕｐ  ｒｅｇｉｓｔｅｒ命令語であり、図１６で説明したとおりに演算に使用されるレジスタデータ領域（レジスタウィンドウ）を変更する命令語であり、第１プロセッサ１００又は第２プロセッサ２００で実行されるように実現できる。ＭＡＰＭｕｌ＿ＲｅｄｕｃｅｄＡｃｃ１６命令を除いたその他の命令語は、第２プロセッサ２００に該当するスロットで実行でき、実現方法に応じて、これに限定されずに第１プロセッサ１００でも実行できる。
【０１２７】
このとき、ＩＤＡ＿Ｃｏｎｖ３（ＩＲ）、ＣＤＡ＿Ｃｏｎｖ３（ＣＲ、ｗ１６）という仮想のレジスタから入力値を受ける。Ｃｏｎｖ３は、図１２の３×３マトリクスのデータパターンの入力をＩＲ１１２とＣＲ１１４から受けることを意味する。前記アセンブリ命令が実行されると、ＯＲ１１６の一番目のレーンには図１２のマトリクスＭ１１の結果が保存され、二番目のレーンにはマトリクスＭ１２、三番目のレーンにはマトリクスＭ１３の結果が保存され、以降のレーンにも同様の方法で結果が保存される。
二番目のアセンブリ命令ＭＡＰＭＵＬ＿ＲｅｄｕｃｅＡｃｃ１６（ＩＤＡ＿Ｃｏｎｖ４（ＩＲ）、ＣＤＡ＿Ｃｏｎｖ４（ＣＲ、ｗ１６））は、入力データパターンのみを異ならせて同様の方法で演算される。このとき、入力は、前の５×５マトリクス演算で説明したように、４×４マトリクスから３×３マトリクスのデータを除いた残りのデータ（図２２におけるＤ２領域からＤ１領域を除いた領域のイメージデータ）ＦＵの各レーンに入力され、３×３の結果と一緒にａｄｄツリーに乗ってＯＲ１１６に該当結果を保存する。この結果は、サイズ４×４の畳み込み（ｃｏｎｖｏｌｕｌｔｉｏｎ）演算結果を意味する。
【０１２８】
最後のＭＡＰＭＵＬ＿ＲｅｄｕｃｅＡｃｃ１６（ＩＤＡ＿Ｃｏｎｖ５（ＩＲ）、ＣＤＡ＿Ｃｏｎｖ５（ＣＲ、ｗ１６））は、５×５マトリクスから４×４マトリックスのデータを除いた残りのデータに対して前の演算と同一の演算を実行する。
【０１２９】
この３つの命令語を実行すると、入力された５行の５×５マトリクスに対して畳み込みフィルタの結果がＯＲ１１６に保存される。その後、演算ウィンドウが１ライン下りてきて第１行乃至第５行に該当する５×５マトリクス演算を再び実行するが、このために第５行のみ新たに入力を受け、以前に使用された第１行乃至第４行は図１８に関連して説明したレジスタシフトアップ命令語を介して再使用する。
【０１３０】
本実施形態によれば、一度入力されたデータは、メモリ装置から再び読み取られないので、メモリアクセス頻度を減らして性能とパワー効率を極大化できる。
【０１３１】
以上、添付図面を参照して本発明の実施形態を説明したが、本発明は、前記実施形態に限定されず、互いに異なる多様な形態で製造でき、本発明の属する技術分野における通常の知識を有する者は、本発明の技術的思想や必須の特徴を変更せず、他の具体的な形態で実施できることを理解できるであろう。従って、上述した実施形態は、あらゆる面で例示的であって、限定的ではないと理解されるべきである。
【符号の説明】
【０１３２】
１    半導体装置
１００    第１プロセッサ
１０５    メモリ階層
１１０    内部レジスタ、レジスタファイル
１１２    第１レジスタ、ＩＲ（Ｉｍａｇｅ  Ｒｅｇｉｓｔｅｒ）
１１４    第１レジスタ、ＣＲ（Ｃｏｅｆｆｉｃｉｅｎｔ  Ｒｅｇｉｓｔｅｒ）
１１６    第１レジスタ、ＯＲ（Ｏｕｔｐｕｔ  Ｒｅｇｉｓｔｅｒ）
１２０    ロードストアユニット（ｌｏａｄ  ｓｔｏｒｅ  ｕｎｉｔ、ＬＳＵ）
１３０    データ配置レイヤ
１４０    マップレイヤ
１５０    リデュースレイヤ
１６０    ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）
１６０ａ、１６０ｂ、・・・、１６０ｃ、１６０ｄ    第１〜第９ＡＬＵグループ
１７０    制御部
１９０    ＤＡ（Ｄａｔａ  Ａｒｒａｎｇｅ）モジュール
１９２    ＩＤＡ（Ｉｍａｇｅ  ＤＡ）
１９４    ＣＤＡ（Ｃｏｅｆｆｉｃｉｅｎｔ  ＤＡ）
２００    第２プロセッサ
２１２    第２レジスタ、ＳＲ（Ｓｃａｌａｒ  Ｒｅｇｉｓｔｅｒ）
２１４    第２レジスタ、ＶＲ（Ｖｅｃｔｏｒ  Ｒｅｇｉｓｔｅｒ）
２２０    フェッチユニット
２３０    デコーダ
２４０ａ、２４０ｂ、２４０ｃ、２４０ｄ    スロット（ｓｌｏｔ）
２４２ａ、２４２ｂ、２４２ｄ    スカラー機能ユニット（Ｓｃａｌａｒ  Ｆｕｎｃｔｉｏｎａｌ  Ｕｎｉｔ、ＳＦＵ）
２４２ｃ    ＦＣＥ（Ｆｌｅｘｉｂｌｅ  Ｃｏｎｖｏｌｕｔｉｏｎ  Ｅｎｇｉｎｅ、フレキシブル畳み込みエンジン）ユニット
２４４ａ、２４４ｂ、２４４ｃ    ベクトル機能ユニット（Ｖｅｃｔｏｒ  Ｆｕｎｃｔｉｏｎａｌ  ｕｎｉｔ、ＶＦＵ）
２４４ｄ    制御命令（ＣｏｎＴｒｏｌ、ＣＴ）ユニット
２４６ａ、２４６ｂ、２４６ｃ、２４６ｄ    移動ユニット（Ｍｏｖｅ  ｕｎｉｔ、ＭＶ）
３００    コントローラ
４００    メモリバス
【図１】
2018173956.tif 000003
【図２】
2018173956.tif 000004
【図３】
2018173956.tif 000005
【図４】
2018173956.tif 000006
【図５】
2018173956.tif 000007
【図６】
2018173956.tif 000008
【図７】
2018173956.tif 000009
【図８】
2018173956.tif 000010
【図９】
2018173956.tif 000011
【図１０】
2018173956.tif 000012
【図１１】
2018173956.tif 000013
【図１２】
2018173956.tif 000014
【図１３】
2018173956.tif 000015
【図１４】
2018173956.tif 000016
【図１５】
2018173956.tif 000017
【図１６】
2018173956.tif 000018
【図１７】
2018173956.tif 000019
【図１８】
2018173956.tif 000020
【図１９】
2018173956.tif 000021
【図２０】
2018173956.tif 000022
【図２１】
2018173956.tif 000023
【図２２】
2018173956.tif 000024