JP2018173956A - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP2018173956A
JP2018173956A JP2018060426A JP2018060426A JP2018173956A JP 2018173956 A JP2018173956 A JP 2018173956A JP 2018060426 A JP2018060426 A JP 2018060426A JP 2018060426 A JP2018060426 A JP 2018060426A JP 2018173956 A JP2018173956 A JP 2018173956A
Authority
JP
Japan
Prior art keywords
processor
register
data
semiconductor device
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018060426A
Other languages
English (en)
Other versions
JP7154788B2 (ja
Inventor
賢 弼 金
Hyun Pil Kim
賢 弼 金
ヒョン 宇 沈
Hyun Woo Sim
ヒョン 宇 沈
成 祐 安
Seong Woo Ahn
成 祐 安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018173956A publication Critical patent/JP2018173956A/ja
Application granted granted Critical
Publication of JP7154788B2 publication Critical patent/JP7154788B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20164Salient point detection; Corner detection
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

【課題】イメージ、ビジョン及びニューラルネットワークに関する処理のために、制御が容易であると同時にデータの使用効率を高めた、統合された処理環境を備える半導体装置を提供する。【解決手段】本発明の半導体装置は、第1レジスタを含み、前記第1レジスタを用いてROI(Region On Interest)演算を行う第1プロセッサと、第2レジスタを含み、前記第2レジスタを用いて算術演算を行う第2プロセッサとを含み、前記第1レジスタは前記第2プロセッサによって共有され、前記第2レジスタは前記第1プロセッサによって共有される。【選択図】図1

Description

本発明は、半導体装置に関する。
イメージ、ビジョン及びニューラルネットワークに関するアプリケーションは、例えば、マトリクス演算のために特化した命令語とメモリ構造を有するシステム上で実行できる。ところが、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションは、類似する方式の演算を行う場合が多いにも拘らず、イメージ、ビジョン及びニューラルネットワーク各々を独立して処理するためのプロセッサが個別に具現される場合が多かった。その理由は、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションの機能的類似性にも拘らず、イメージ、ビジョン及びニューラルネットワークアプリケーションを統合処理できるプロセッサを実現するためには、データスループット、メモリ帯域幅、同期化などにおいて各々のアプリケーションに必要な要求事項が異なることにある。
特に、イメージ、ビジョン及びニューラルネットワークに関する処理が全て必要なシステムの場合、これらのアプリケーションに対する各々の要求事項を充足できる、統合された処理環境を提供するための方案が求められる。
本発明が解決しようとする技術的課題は、イメージ、ビジョン及びニューラルネットワークに関する処理のために、制御が容易であると同時にデータの使用効率を高めた、統合された処理環境を提供できる半導体装置を提供することにある。
本発明の技術的課題は上述した技術的課題に限定されず、上述していない別の技術的課題の存在することは以降の記載から当該技術分野における通常の技術者に明確に理解できるであろう。
上記の技術的課題を達成するための本発明の一実施形態に係る半導体装置は、第1レジスタを含み、前記第1レジスタを用いてROI(Region On Interest)演算を行う第1プロセッサと、第2レジスタを含み、前記第2レジスタを用いて算術演算を行う第2プロセッサと、を含み、前記第1レジスタは前記第2プロセッサによって共有され、前記第2レジスタは前記第1プロセッサによって共有される。
上記の技術的課題を達成するための本発明の一実施形態に係る半導体システムは、第1レジスタを含み、前記第1レジスタを用いてROI(Region On Interest)演算を行う第1プロセッサと、第2レジスタを含み、前記第2レジスタを用いて算術演算を行う第2プロセッサと、を含み、前記第1プロセッサ及び前記第2プロセッサは同じISA(Instruction Set Architecture)を共有する。
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。
本発明に係る半導体装置においては、ROI演算を行う第1プロセッサと算術演算を行う第2プロセッサとが、互いのレジスタの一部を共有しているので、メモリアクセスを最小限に抑制してデータの使用効率を高め性能を向上できる。
本発明の一実施形態に係る半導体装置を説明するための概略図である。 本発明の一実施形態に係る半導体装置の第1プロセッサを説明するための概略図である。 本発明の一実施形態に係る半導体装置の第2プロセッサを説明するための図である。 本発明の一実施形態に係る半導体装置が提供するアーキテクチャを説明するための概略図である。 本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。 本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。 本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。 本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。 本発明の一実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。 本発明の他の実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。 様々なサイズのマトリクスに対してROI演算を行うためのデータパターンを説明するための概略図である。 本発明の一実施形態に係るROI演算を行うためのデータパターンを説明するための概略図である。 本発明の一実施形態に係るROI演算を行うためのデータパターンを説明するための概略図である。 本発明の他の実施形態に係るROI演算を行うためのデータパターンを説明するための概略図である。 本発明の他の実施形態に係るROI演算を行うためのデータパターンを説明するための概略図である。 本発明の他の実施形態に係るROI演算を行うためのデータパターンを説明するための概略図である。 本発明の他の実施形態に係るROI演算を行うためのデータパターンを説明するための概略図である。 本発明の一実施形態に係る半導体装置が提供するシフトアップ演算を説明するための概略図である。 本発明の様々な実施形態に係る半導体装置を用いてHarrisコーナー検出(Harris corner detection)を行う動作例を説明するためのフローチャートである。 本発明の一実施形態に係る半導体装置で支援する、ビジョン及びニューラルネットワークに関するアプリケーションで使用されるマトリクス演算を効率よく処理するための命令の具現例を説明するための図である。 図14の5×5マトリクスの畳み込み(convolution)演算のための実際アセンブリ命令の例を説明するための図である。 図14の5×5マトリクスの畳み込み(convolution)演算のための実際アセンブリ命令の例を説明するための図である。
図1は本発明の一実施形態に係る半導体装置を説明するための概略図である。
図1を参照すると、本発明の一実施形態に係る半導体装置1は、第1プロセッサ100、第2プロセッサ200、コントローラ300及びメモリバス400を含む。
第1プロセッサ100は、イメージ、ビジョン及びニューラルネットワークに関する処理のために主に使用されるROI(Region On Interest)演算に特化したプロセッサである。例えば、第1プロセッサ100は、1次元フィルタ演算、2次元フィルタ演算、センサス変換(Census Transform)演算、最小/最大(Min/Max)フィルタ演算、SAD(Sum of Absolute Difference、差の絶対値の和)演算、SSD(Sum of Squared Difference、差の二乗の和)演算、NMS(Non Maximum Suppression)演算、マトリクス乗算演算などを行う。
第1プロセッサ100は、第1レジスタ112、114、116を含み、第1レジスタ112、114、116を用いて前記ROI演算を行う。本発明の幾つかの実施形態において、第1レジスタはIR(Image Register、イメージレジスタ)112、CR(Coefficient Register、係数レジスタ)114及びOR(Output Register、出力レジスタ)116のうちの少なくとも一つを含む。
ここで例えば、IR112は、第1プロセッサ100が処理するために入力を受けたイメージデータを保存し、CR114は、前記イメージデータに演算するフィルタの係数を保存し、OR116は、第1プロセッサ100が前記イメージデータを処理した演算結果を保存する。
一方、第1プロセッサ100は、第1プロセッサ100によって処理できるデータパターンを生成するデータ配置モジュール(Data Arrange module、DA)190をさらに含む。データ配置モジュール190は、様々なサイズのマトリクスに対してROI演算を効率よく行うためのデータパターンを生成する。
具体的に、本発明の幾つかの実施形態において、データ配置モジュール190は、例えば、IR112に保存された、第1プロセッサ100が処理するために入力を受けたイメージデータを配置して、第1プロセッサ100がROI演算を効率よく行うためのデータパターンを生成するIDA(Image DA)192を含むことができる。また、データ配置モジュール190は、例えば、CR114に保存された、前記イメージデータに演算するフィルタの係数データを配置して、第1プロセッサ100がROI演算を効率よく行うためのデータパターンを生成するCDA(Coefficient DA)194を含むことができる。データ配置モジュール190から生成されるデータパターンに関する具体的な内容は、図9乃至図15に関連して後述する。
第2プロセッサ200は、算術演算を行う汎用プロセッサである。本発明の幾つかの実施形態において、第2プロセッサ200は、予測(prediction)演算、ベクトルパーミュート(vector permute)演算、ベクトルビット操作(vector bit manipulation)演算、バタフライ(butterfly)演算、並べ替え(sorting)演算などのベクトル特化命令語を含むベクトル演算処理に特化したベクトルプロセッサとして具現される。本発明の幾つかの実施形態において、第2プロセッサ200は、SIMD(Single Instruction Multiple Data)及び多重スロットVLIW(Very Long Instruction Word)構造を採用する。
第2プロセッサ200は、第2レジスタ212、214を含み、第2レジスタ212、214を用いて前記算術演算を行う。本発明の幾つかの実施形態において、第2レジスタは、SR(Scalar Register)212及びVR(Vector Register)214のうちの少なくとも一つを含む。
ここで、SR212は第2プロセッサ200のスカラー演算に使用されるレジスタであり、VR214は第2プロセッサ200のベクトル演算に使用されるレジスタである。
本発明の幾つかの実施形態において、第1プロセッサ100及び第2プロセッサ200は、同じISA(Instruction Set Architecture)を共有する。これにより、ROI演算に特化した第1プロセッサ100と算術演算に特化した第2プロセッサ200がインストラクション(instruction)レベルで共有されることにより制御が容易になる。
一方、本発明の幾つかの実施形態において、第1プロセッサ100及び第2プロセッサ200はレジスタを共有する。即ち、第1レジスタ112、114、116は第2プロセッサ200によって共有され、第2レジスタ212、214は第1プロセッサ100によって共有され得る。これにより、ROI演算に特化した第1プロセッサ100と算術演算に特化した第2プロセッサ200が各々の内部レジスタを共有することにより、データの使用効率を増大し、メモリアクセス回数を減少できる。
一方、本発明の幾つかの実施形態において、第1プロセッサ100と第2プロセッサ200は、別個の独立した電源によって駆動されるように具現される。これにより、具体的な動作状況に応じて、未使用のプロセッサに対する電源を遮断できる。
図2は本発明の一実施形態に係る半導体装置の第1プロセッサを説明するための概略図である。
図2を参照すると、本発明の一実施形態に係る半導体装置の第1プロセッサ100は、内部レジスタ110、ロードストアユニット(load store unit、LSU)120、データ配置レイヤ130、マップレイヤ140及びリデュースレイヤ150を含む。
内部レジスタ110は、図1に関連して先立って説明したIR112、CR114及びOR116を含む。
ロードストアユニット120は、メモリ装置との間でデータをやり取りする。例えば、ロードストアユニット120は、メモリバス400を介して、メモリ装置に保存されたデータにアクセスする。前記ロードストアユニット120及びメモリバス400は、図4に関連して後述するメモリ階層105に対応する。
本発明の幾つかの実施形態において、ロードストアユニット120は、1024ビットのデータに同時にアクセスする。一方、本発明の幾つかの実施形態において、ロードストアユニット120は、n個(nは例えば2、4、8など)のポート(port)を支援して、1024×nビットのデータに同時にアクセス。ロードストアユニット120が1024ビット単位でデータに同時にアクセスできるので、後述するデータ配置レイヤ130は、SIMD(Single Instruction Multiple Data)に応じて、1行が1024ビットからなる配列形態でデータを再配列する。
データ配置レイヤ130は、図1にデータ配置モジュール190として示された要素に対応し、第1プロセッサ100が処理するデータを再配置する。具体的に、データ配置レイヤ130は、第1プロセッサ100が処理する様々なサイズのデータ(例えば、マトリクス)に対するROI演算を効率よく行うためのデータパターンを生成する。データパターンで生成されるデータの種類に応じて、データ配置レイヤ130は、図1にIDA192及びCDA194として示された要素と各々に対応する下位ユニットを含む。
具体的に、データ配置レイヤ130は、第1プロセッサ100が処理するデータを、SIMDに応じて、各々、複数のデータを含む複数のデータ行の形態で再配置する。例えば、データ配置レイヤ130は、第1プロセッサ100がROI演算を効率よく行うことができるように、イメージデータを、SIMDに応じて、各々、複数のデータを含む複数のデータ行の形態で再配列し、一方、イメージデータに演算するフィルタの係数データも、SIMDに応じて、各々、複数のデータを含む複数のデータ行の形態で再配列する。
第1プロセッサ100は、各々、複数のデータ行に対応するように互いに並列に配置された複数のALU(Arithmetic Logic Unit)160を含み、複数のALU160は、マップレイヤ140及びリデュースレイヤ150を含む。ALU160は、マップレイヤ140及びリデュースレイヤ150を用いて、各々、複数のデータ行に保存されたデータを並列処理するためにマップ演算、リデュース演算などを行う。
このようにデータを再配列する構造を採用することにより、イメージ、ビジョン及びニューラルネットワークに関する処理で頻繁に使用される3×3、4×4、5×5、7×7、8×8、9×9、11×11マトリクスに対して特に効率のよい処理が可能である。これに関連した具体的な内容は、図4、図9及び図10に関連して後述する。
図3は本発明の一実施形態に係る半導体装置の第2プロセッサを説明するための図である。
図3を参照すると、第2プロセッサ200はフェッチユニット220及びデコーダ230を含む。
デコーダ230は、フェッチユニット220から提供されたインストラクションをデコードする。本発明の幾つかの実施形態において、前記インストラクションは、VLIWに応じて、4つのスロット(slot)240a、240b、240c、240dによって処理される。例えば、フェッチユニット220からフェッチされたインストラクションが128ビットである場合、デコーダ230は、前記フェッチされたインストラクションを、各々、32ビットからなる4つのインストラクションにデコードし、4つのインストラクションは、各々、スロット240a、240b、240c、240dによって処理される。
本実施形態では、説明のための一例として、フェッチされたインストラクションが4つのインストラクションにデコードされて4つのスロットによって処理できる場合を示したが、本発明の範囲はこれらに限定されず、前記インストラクションは2つ以上の任意の数のスロットによって処理するように具現できる。
本実施形態において、4つのスロット240a、240b、240c、240dは、後述の制御命令(ConTrol、CT)ユニット244dを除いては全て同時に実行可能であり、このような並列処理を効率よく行うために、スカラー機能ユニット(Scalar Functional Unit、SFU)242a、242b、242d、ベクトル機能ユニット(Vector Functional unit、VFU)244a、244b、244c、移動ユニット(Move unit、MV)246a、246b、246c、246dが4つのスロット240a、240b、240c、240dに効率よく配置される。
具体的に、第1スロット240aは、SFU242a、VFU244a及びMV246aを含み、第2スロット240bは、SFU242b、VFU244b及びMV246bを含む。一方、第3スロット240cは、第1プロセッサ100を用いて処理することが可能な命令に該当するFCE(Flexible Convolution Engine、フレキシブル畳み込みエンジン)ユニット242c、VFU244c、及びMV246cを含み、第4スロット240dは、SFU242d、制御命令に対応する制御命令(ConTrol、CT)ユニット244d及びMV246dを含む。
ここで、第3スロット240cのFCEユニット242cは第1プロセッサ100に対応する。そして、第3スロット240cの残り、第1スロット240a、第2スロット240b及び第4スロット240dは第2プロセッサ200に対応する。例えば、第3スロット240cのFCEユニット242cに配置されたインストラクションは第1プロセッサ100によって実行され、第2スロット240bに配置されたインストラクションは第2プロセッサ200によって実行される。
そして、第1プロセッサ100及び第2プロセッサ200は、各スロット240a、240b、240c、240dに含まれているMV246a、246b、246c、246dを用いて互いのデータを共有する。これにより、第2プロセッサ200で処理されていた作業は、必要に応じて、第3スロット240cのFCEユニット242cを介して第1プロセッサ100によって処理できる。この場合、第2プロセッサ200で処理されていたデータも第1プロセッサ100に共有できる。
一方、SFU242a、242b、242dによって処理された結果は、図1にも言及したSR212に保存され、VFU244a、244b、244cによって処理された結果は、図1にも言及したVR214に保存される。勿論、SR212及びVR214に保存された結果は、必要に応じて、第1プロセッサ100及び第2プロセッサ200の少なくとも一つによって使用できる。
しかし、図3に示された構成は、以下で本発明の様々な実施形態についての説明の便宜のための一例に過ぎず、本発明の範囲がこれに限定されないのは、当該技術分野における通常の技術者にとって自明であろう。
図4は本発明の一実施形態に係る半導体装置が提供するアーキテクチャを説明するための概略図である。
図4を参照すると、本発明の一実施形態に係る半導体装置が提供する第1プロセッサ100のアーキテクチャは、メモリ階層105、レジスタファイル110、データ配置レイヤ130、複数のALU160、及びこれらの要素を全体的に制御する制御部170を含む。
ここで、メモリ階層105は、メモリインタフェース(memory interface)を提供する。メモリ階層105は、先立って図1及び図2に関連して説明したメモリ装置、メモリバス400及びロードストアユニット120などに対応できる。
レジスタファイル110は、図2に関連して先立って説明した、IR112、CR114及びOR116を含む内部レジスタ110に対応する。また、レジスタファイル110は、図5乃至図8に関連して後述する例示的な構造を含む。
データ配置レイヤ130は、図2に関連して先立って説明したデータ配置レイヤ130に対応し、第1プロセッサ100が処理する様々なサイズのデータ(例えば、マトリクス)に対するROI演算を効率よく行うためのデータパターンを生成する。
複数のALU160は、図2に関連して先立って説明した複数のALU160に対応し、マップレイヤ140及びリデュースレイヤ150を含み、マップ演算、リデュース演算などを行う。
前記アーキテクチャは、複数のALU160が共有することが可能なレジスタファイル110を用いて、精巧なフロー制御および複雑な算術演算の実行を可能にすると共に、データ配置レイヤ130を用いて、レジスタファイル110に保存されたデータをパターン化することにより、入力データの再使用性を向上する。
例えば、データ配置レイヤ130は、処理するデータ(特にROI演算を行うためのデータ)を、第1ALUグループ160a、第2ALUグループ160b、・・・、第8ALUグループ160c及び第9ALUグループ160dの各々に属したALUが処理できるように、データパターンを生成する。ここで、ALUグループ160a、160b、160c、160dは、各々、例えば64個のALUを含む場合がが示されているが、本発明の範囲はこれに限定されない。マトリクスから例えば計9個の第1乃至第9ALUグループALUグループ160a、160b、・・・、160c、160dによる処理に適したデータパターンを生成する具体的な説明は、図9乃至図15に関連して後述する。
図5乃至図8は本発明の一実施形態に係る半導体装置が提供するレジスタの例示的な構造を説明するための概略図である。
図5を参照すると、IR112は、第1プロセッサ100が特にROI演算を処理するための入力イメージデータを保存するためのものであり、IR(Image Register)という名称は、具体的な実現又は命令に応じて任意に変更され得る。
本実施形態において、IR112は、例えば、16個のエントリ(entry)を含むように具現される。そして、エントリIR[i](但し、iは0以上15以下の整数)各々のサイズは例えば1024ビットで具現される。
このうち、エントリIR[0]乃至エントリIR[7]は、様々なサイズの、ROI演算のためのイメージデータを支援するためのレジスタファイル(register file)ISR0として定義されて利用できる。同様に、エントリIR[8]乃至エントリIR[15]は、様々なサイズの、ROI演算のためのイメージデータを支援するためのレジスタファイルISR1として定義されて利用できる。
但し、留意すべきは、ISR0、ISR1の定義はこれに限定されず、具体的に処理するデータのサイズに応じて可変的にグループ化して定義できる点である。即ち、ISR0、ISR1は、イメージデータのサイズ、マトリクス演算の特性、フィルタ演算の特性などを考慮して、図5に示されたのと異なる構造で定義され得る。
次いで、図6を参照すると、CR114は、IR112に保存されたイメージデータに演算するためのフィルタの係数を保存するためのものであり、CR(Coefficient Register)という名称は、具体的な実現又は命令に応じて任意に変更され得る。
本実施形態において、CR114は、例えば16個のエントリを含むように具現される。そして、エントリCR[i](但し、iは0以上15以下の整数)各々のサイズは、例えば1024ビットで具現される。
このうち、エントリCR[0]乃至エントリCR[7]は、IR112の場合と同様に、様々なサイズの、ROI演算のための係数データを支援するためのレジスタファイルCSR0として定義されて利用できる。同様に、エントリCR[8]乃至エントリCR[15]は、様々なサイズの、ROI演算のための係数データを支援するためのレジスタファイルCSR1として定義されて利用できる。
但し、留意すべきは、CSR0、CSR1の定義は、これに限定されず、具体的に処理するデータのサイズに応じて可変的にグループ化して定義できる点である。即ち、CSR0、CSR1は、イメージデータのサイズ、マトリクス演算の特性、フィルタ演算の特性などを考慮して、図6に示されたのとは異なる構造で定義され得る。
次いで、図7を参照すると、OR116は、第1プロセッサ100がイメージデータを処理した演算結果を貯蔵するためのもので、OR(Output Register)という名称は、具体的な実現又は命令に応じて任意に変更され得る。
本実施例形態において、OR116は、例えば16個のエントリを含むように具現される。そして、エントリOR[i](但し、iは0以上15以下の整数)各々のサイズは例えば2048ビットで具現される。
本発明の幾つかの実施形態において、OR116は、再び、データ配置レイヤ130の入力レジスタとして使用され得る。この場合、OR116に保存された演算結果を効率よく再使用することができるように、OR116の各々のエントリOR[i]は上部パーツORh[i]と下部パーツORl[0]に区分して使用される。例えば、エントリOR[0]は、1024ビットを有する上部パーツORh[0]と、1024ビットを有する下部パーツORl[0]を含む。このようにOR116の各々のエントリOR[i]が上部パーツORh[i]と下部パーツORl[0]に区分されたのは、図8と関連して後述するWレジスタとの互換性のためである。Wレジスタは、図8に示されたように、レジスタファイルVeに含まれるエントリと、レジスタファイルVoに含まれるエントリを一つのエントリとして定義したものである。
このようにIR112およびCR114の各々のエントリと同じサイズを持つようにOR116のエントリを定義することにより、IR112、CR114及びOR116の間のデータ移動が容易になる。
このうち、エントリOR[0]乃至エントリOR[7]は、IR112、CR114の場合と同様に、様々なサイズの、ROI演算のためのイメージデータを支援するためのレジスタファイルOSR0として定義されて利用できる。同様に、エントリOR[8]乃至エントリOR[15]は、様々なサイズの、ROI演算のためのイメージデータを支援するためのレジスタファイルOSR1として定義されて利用できる。
但し、留意すべきは、OSR0、OSR1の定義はこれに限定されるものではなく、具体的に、処理するデータのサイズに応じて可変的にグループ化して定義できる点である。即ち、OSR0、OSR1は、イメージデータのサイズ、マトリクス演算の特性、フィルタ演算の特性などを考慮して、図7に示されたのとは異なる構造で定義され得る。
また、IR112、CR114及びOR116に対するエントリのサイズや、レジスタファイルを構成するエントリの数は、これまで説明した実施形態に限定されず、具体的な実現目的に応じて、そのエントリのサイズや数は任意に変更され得る。
一方、図5乃至図7で説明したように、IR112、CR114及びOR116は、その用途に応じて区分して説明されたが、本発明の幾つかの実施形態において、第1プロセッサ100の観点からは、互いに同一のサイズを有するレジスタが4セット存在するかの如く認識するように、レジスタ仮想化を具現できる。
図8を参照すると、VR214は、第2プロセッサ200がベクトル演算を行うためのデータを保存するためのものである。
本実施形態において、VR214は、16個のエントリを含むように具現される。そして、各々のエントリVR[i](但し、iは0以上15以下の整数)のサイズは、例えば1024ビットで具現する。
本実施形態において、16個のエントリのうち、そのインデクスが偶数に該当する8個のエントリをレジスタファイルVeとして、16個のエントリのうち、そのインデクスが奇数に該当する8個のエントリをレジスタファイルVoとして定義する。そして、レジスタファイルVeに含まれるエントリとレジスタファイルVoに含まれるエントリを一つのエントリとして定義してWレジスタを具現する。
例えば、エントリVe[0]及びエントリVo[1]を含む一つのエントリW[0]を定義し、エントリVe[2]及びエントリVo[3]を含む一つのエントリW[1]を定義する方式で、合計8個のエントリW[i](ただし、iは0以上7以下の整数)を含むWレジスタを具現する。
VR214に対するエントリのサイズや、レジスタファイルを構成するエントリの数は、これまで説明した実施形態に限定されず、具体的な実現目的に応じて、そのエントリのサイズや数は任意に変更できる。
一方、図5乃至図7で説明した、IR112、CR114及びOR116と一緒に、VR214は、第1プロセッサ100及び第2プロセッサ200の観点から、互いに同一のサイズを有するレジスタが5セット存在するかの如く認識するように、レジスタ仮想化を具現できる。
この場合、仮想化されたレジスタに保存されたデータは、図3に示されたMV246a、246b、246c、246dを介してIR112、CR114、OR116及びVR214の間で移動できる。これにより、第1プロセッサ100及び第2プロセッサ200は、メモリ装置ではなく、レジスタを用いてデータを共有し、保存されたデータを再活用できる。
図9は本発明の一実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。
図9を参照すると、データ配置レイヤ130によって再配列されたデータは、並列に配置された9個のデータ行DATA1乃至DATA9を構成する。
各々のデータ行DATA1乃至DATA9は、縦方向に複数のレーン(lane)を有する。例えば、第1データ行DATA1の第1要素A1、第2データ行DATA2の第1要素B1、・・・、第9データ行DATA9の第1要素D1は、第1レーンを形成し、第1データ行DATA1の第2要素A2、第2データ行DATA2の第2要素B2、・・・、第9データ行DATA9の第2要素D2は、第2レーンを形成する。
本発明の一実施形態において、各レーンの幅は例えば16ビットである。即ち、第1データ行DATA1の第1要素A1は16ビットのデータ形態で保存される。この場合、第1データ行DATA1は、16ビットのデータ形態を有する要素を64個含む。
一方、第1プロセッサ100は、データ配置レイヤ130によって再配列されたデータを処理するための複数のALUを含み、複数のALUは、9つのデータ行DATA1乃至DATA9の各々に対応する9×64個のALUを含むことができる。例えば、図4の第1ALUグループ160aは第1データ行DATA1に対応し、図4の第2ALUグループ160bは第2データ行DATA2に対応する。そして、図4の第9ALUグループ160dは第9データ行DATA9に対応する。
第1ALUグループ160aの64個のALUは、各々、第1データ行DATA1の64個の要素に該当するデータを並列処理し、第2ALUグループ160bの64個のALUは、各々、第2データ行DATA2の64個の要素に該当するデータを並列処理する。そして、第9ALUグループ160dの64個のALUは、各々、第9データ行DATA9の64個の要素に該当するデータを並列処理する。
本発明の様々な実施形態に係るデータ配置レイヤ130によって再配列されたデータのデータ行の数は、9個に限定されるものではなく、具体的な実現目的に応じて任意に変更され得る。そして、複数のデータ行の各々に対応する複数のALU数もそれに応じて変更される。
ところが、図11に関連して後述するように、データ配置レイヤ130によって再配列されたデータのデータ行の数が9個である場合、特に、様々なサイズのマトリクスに対するROI演算の際にその効率性を特に発揮できる。
図10は本発明の他の実施形態に係る半導体装置にデータが保存される具現例を説明するための概略図である。
図10を参照すると、データ配置レイヤ130によって再配列されたデータは、並列に配置された9個のデータ行DATA1乃至DATA9を構成する。
図9と異なる点のみを説明すると、本実施形態において、各々のデータ行DATA1乃至DATA9は縦方向に複数のレーンを有するが、各レーンの幅は8ビットであり得る。即ち、第1データ行DATA1の第1要素A1は8ビットのデータ形態で保存される。この場合、第1データ行DATA1は、8ビットのデータ形態を持つ要素を128個含む。
一方、第1プロセッサ100は、データ配置レイヤ130によって再配列されたデータを処理するための複数のALUを含み、複数のALUは、9つのデータ行DATA1乃至DATA9の各々に対応する9×128個のALUを含む。
本発明の様々な実施形態に係るデータ配置レイヤ130によって再配列されたデータのデータ行の数は、9個に限定されるものではなく、具体的な実現目的に応じて任意に変更され得る。そして、複数のデータ行の各々に対応する複数のALU数もそれに応じて変更される。
ところが、図11に関連して後述するように、データ配置レイヤ130によって再配列されたデータのデータ行の数が9個である場合、特に、様々なサイズのマトリクスに対するROI演算の際にその効率性を特に発揮できる。
図11は様々なサイズのマトリクスに対してROI演算を行うためのデータパターンを説明するための概略図であり、図12及び図13は本発明の一実施形態に係るROI演算を行うためのデータパターンを説明するための概略図であり、図14乃至図17は本発明の他の実施形態に係るROI演算を行うためのデータパターンを説明するための概略図である。これらの図11乃至図17を参照すると、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションで最もよく使用されるマトリクスサイズに応じて、データ配置レイヤ130によって再配列されたデータが用いられるパターンを知ることができる。
図11において、マトリクスM1は、ROI演算の対象となるイメージのサイズが3×3である場合に必要なイメージデータを含み、マトリクスM2は、ROI演算の対象となるイメージのサイズが4×4である場合に必要なイメージデータを含む。これと同様に、マトリクスM6は、ROI演算の対象となるイメージのサイズが9×9である場合に必要なイメージデータを含み、マトリクスM7は、ROI演算の対象となるイメージのサイズが11×11である場合に必要なイメージデータを含む。例えば、メモリ装置に、図11に示されたようなイメージデータが保存されていると仮定しよう。図12に示すように、もしサイズ3×3のマトリクスM11、M12、M13に対してROI演算を行わなければならない場合、第1プロセッサ100は、メモリ装置に保存されている図11のイメージデータを読み取ってIR112に保存する。
この場合、図13を参照すると、並列に配置された9個のデータ行DATA1乃至DATA9における縦方向の一番目のレーンには、マトリクスM11に該当するイメージデータN11乃至N19が配置される。次に、二番目のレーンには、マトリクスM12に該当するイメージデータN12、N13、N21、N15、N16、N22、N18、N19、N23が配置され、三番目のレーンには、マトリクスM13に該当するイメージデータN13、N21、N31、N16、N22、N32、N19、N23、N33が配置される。
これにより、複数のALU(ALU1_1乃至ALU9_1)は、マトリクスM11に該当するイメージデータを含む一番目のレーンを演算し、複数のALU(ALU1_2乃至ALU9_2)はマトリクスM12に該当するイメージデータを含む二番目のレーンを演算する。そして、複数のALU(ALU1_3乃至ALU9_3)は、マトリクスM13に該当するイメージデータを含む三番目のレーンを演算する。
このような方式でイメージデータを処理することにより、本実施形態において、ROI演算の対象となるマトリクスが3×3のサイズを持つと仮定すると、第1プロセッサ100は、1サイクルに3つのイメージラインに対してマトリクス演算ができる。このとき、9個のデータ行DATA1乃至DATA9を並列処理する複数のALUの使用効率は100%になる。
一方、図14に示すように、もしサイズ5×5のマトリクスM31、M32に対してROI演算を行わなければならない場合、第1プロセッサ100は、メモリ装置に保存されている図11のイメージデータを読み取ってIR112に保存する。
この場合、図15乃至図17を参照すると、5×5マトリクス演算は、合計3サイクルにわたって演算が行われる。図15による一番目のサイクルでは、3×3マトリクスと同様の方式で演算が行われる。図16による二番目のサイクルでは、図11のマトリクスM2から図11のマトリクスM1を除いたイメージデータN21乃至N24がALU(ALU1_1乃至ALU9_1)又は一番目のベクトルレーンに割り当てられ、イメージデータN31、N32、N33、N34、N27、N26、N25のデータは、ALU(ALU2_2乃至ALU9_2)又は二番目のベクトルレーンに割り当てられる。三番目以降のレーンに対しても同様の方法でデータが割り当てられる。図17による三番目のサイクルでは、マトリクスM3からマトリクスM2を除いたデータN31乃至N28がALU(ALU1_1乃至ALU9_1)又は一番目のベクトルレーンに割り当てられ、以降のレーンにも同様の方式で割り当てられて処理される。
このような方式でイメージデータを処理することにより、本実施形態において、ROI演算の対象となるマトリクスが5×5のサイズを持つと仮定すると、第1プロセッサ100は二番目のサイクルで2つのデータに対してのみ演算を行わないため、ALUの使用効率は93%((64lane×9column×3cycle−64lane×2column)×100/64×9×3)となる。
このような方式によれば、ROI演算の対象となるマトリクスが4×4のサイズを持つと仮定すると、第1プロセッサ100は、2サイクルにわたってマトリクス演算が行われる。このとき、2つのデータのみを使用しないので、ALUの使用効率は89%となる。
ROI演算の対象となる行列が7×7のサイズを持つと仮定すると、第1プロセッサ100は、6サイクルにわたってマトリクス演算を行い、5つのデータのみを使用しないので、ALUの使用効率は91%となる。
ROI演算の対象となるマトリクスが8×8のサイズを持つと仮定すると、第1プロセッサ100は、8サイクルの間にマトリクス演算を行い、8つのデータのみを使用しないので、ALUの使用効率は89%となる。
ROI演算の対象となるマトリクスが9×9のサイズを持つと仮定すると、第1プロセッサ100は、9サイクルにわたって9個のイメージラインに対して9×9マトリクス演算を行い、全てのデータが全て使用されるので、ALUの使用効率は100%となる。
ROI演算の対象となるマトリクスが11×11のサイズを持つと仮定すると、第1プロセッサ100は、14サイクルにわたってマトリクス演算が行われ、11個のイメージラインのうち、8つのデータだけを使用しないので、ALUの使用効率は96%となる。
図11乃至図17で考察したように、データ配置レイヤ130によって再配列されたデータのデータ行の数が9個である場合、イメージ、ビジョン及びニューラルネットワークに関するアプリケーションで最もよく使用される3×3、4×4、5×5、7×7、8×8、9×9、11×11のサイズを始めとする様々なサイズのマトリクスに対するROI演算の際に、第1プロセッサ100のALUの使用効率が約90%のレベルを維持できる。
本発明の幾つかの実施形態において、演算するマトリクスのサイズが大きくなると、既存のマトリクスサイズよりも大きくなった部分に対してのみデータ配置が行われる。例えば、マトリクスM1に対して第1演算を行った後、マトリクスM2に対して第2演算を行わなければならない場合、第2演算のために必要なイメージデータN21乃至N27に対してのみ追加のデータ配置が行われる。
一方、本発明の幾つかの実施形態において、複数のALUは、IR112に保存されたイメージデータ、及びCR114に保存されたフィルタ係数を用いて演算を行った後、OR116にその結果を保存する。
図18は本発明の一実施形態に係る半導体装置が提供するシフトアップ演算を説明するための概略図である。
図18を参照すると、本発明の一実施形態に係る半導体装置が提供するシフトアップ演算は、メモリ装置から予めIR112に保存したイメージデータを効率よく処理するために、IR112に保存されたデータを読み取る方法を制御する。
具体的に、シフトアップ演算は、もし、図14に示すようなサイズ5×5のマトリクスM31、M32に対してROI演算を行わなければならない場合、図18において第1領域R1に該当するイメージデータを全て処理した。その後、第2領域R2に該当するイメージデータを処理しなければならない場合、さらに必要な第6行のデータのみメモリからIR112に読み取る。
例えば、第1領域R1に該当する第1行乃至第5行のデータが各々、図5のIR[0]乃至IR[4]に保存されていた場合、IR[5]には第6行のデータが予め保存されているようにすることにより、追加のメモリアクセスを回避しながら、IR112の読み取り領域を第2領域R2に調節するだけで、第2行乃至第6行に対するサイズ5×5のマトリクスM31、M32に対してROI演算を続行できる。
図19は本発明の様々な実施形態に係る半導体装置を用いてHarrisコーナー検出(Harris corner detection)を行う動作例を説明するためのフローチャートである。Harrisコーナー検出方法は、当該技術分野における通常の技術者に広く知られているので、その詳細な内容は省略する。
図19を参照すると、Harrisコーナー検出方法の一例は、段階S901でイメージの入力を受けることを含む。具体的に、第1プロセッサ100が図1のメモリバス400を介してコーナー検出をするべきイメージの入力を受ける。
段階S903において、前記方法は、微分値(Derivative Value、DV)を演算する。具体的に、第1プロセッサ100は、必要に応じてデータ配置レイヤ130を介して再配列されたイメージデータから、例えば、X軸とY軸にピクセルに対する微分値DVを演算する。このとき、微分は、Sobelフィルタと呼ばれる1次元フィルタを用いて、x軸(Ix=Gx*I)とy軸(Iy=Gy*I)方向に各イメージに微分係数を乗じることにより容易に求められる。入力されたイメージはIR112に保存され、微分係数はCR114に保存され、乗算結果はOR116に保存される。
次に、段階S905で、前記方法は、微分積(Derivative Product、DP)を演算する。具体的に、第1プロセッサ100は、必要に応じて、データ配置レイヤ130を介して再配列された微分値DVから、全てのピクセルに対する微分積DPを演算する。段階S903の結果を基に、x軸、y軸の結果を二乗(Ix)、(Iy)し、x軸とy軸の結果を互いに乗算(Ixy=Ix*Iy)してDV値を求める。このとき、x軸とy軸の結果は、段階S903の結果、OR116に保存された結果を再活用して、OR116でIDA/CDAパターンを用いてベクトルALU入力として使用して演算結果を再びOR116に保存する。
次に、段階S907において、前記方法は、SSD(Sum of Squared Difference)を演算する。具体的に、第1プロセッサ100は、微分積DPを用いてSSDを演算する。SSD演算(Sx)=Gx*(Ix)、(Sy)=Gy*(Iy)、Sxy=Gxy*Ix*Iy)も、段階S905と同様の方法で、段階S905の結果であるOR116からIDAを経てベクトルFUにデータを割り当て、CR114に保存された微分係数を乗じて再びOR116に保存される。
以後、段階S909で、前記方法は特徴点マトリクス(key point matrix)を定義する。ところが、特徴点マトリクスを決定することは、ROI処理に特化した第1プロセッサ100だけでは実行が難しいので、第2プロセッサ200を介して処理する。
この場合、第1プロセッサ100のOR116に保存された結果値は、第2プロセッサ200に共有されて再使用される。例えば、第1プロセッサ100のOR116に保存された結果値は、図3のMVを用いて第2プロセッサ200のVR214へ移動される。又は、OR116値の入力を直ちに受けることが可能なFUは、MVを経ることなく、第1プロセッサ100の結果を使用する。
次に、段階S911で、前記の方法は、応答関数(R=Det(H)−k(Trace(H)2))を演算する。具体的に、第2プロセッサ200は、VR214に保存された段階S909の結果値を用いて応答関数を演算する。この段階では第2プロセッサ200のみを使用するので、全ての演算の中間及び最終結果はVR214に保存される。
以後、段階S913において、前記方法は、NMS(Non Maximum Suppression)演算を行って特徴点(キーポイント)を検出する。本段階S913は、再び第1プロセッサ100によって処理される。
この場合、第2プロセッサ200のVR214に保存された結果値は、第1プロセッサ100に共有されて再使用される。例えば、第2プロセッサ200のVR214に保存された結果値は、図3のMVを用いて第1プロセッサ100のOR116へ移動される。又は、VR214から直ちにIDA/CDAを介してベクトルFUに割り当てられる。
このような方式で、入力されたイメージのコーナー検出作業が完了するまで、第1プロセッサ100と第2プロセッサ200のレジスタのみを使用するので、メモリ装置をアクセスする必要がない。これにより、メモリ装置をアクセスするために必要とされるオーバヘッド、消費電力などのコストを大幅に削減できる。
図20は本発明の一実施形態に係る半導体装置で支援する、ビジョン及びニューラルネットワークに関するアプリケーションで使用されるマトリクス演算を効率よく処理するための命令の具現例を説明するための図である。
図20を参照すると、第1プロセッサ100は、ビジョン及びニューラルネットワークに関するアプリケーションにおいて使用されるマトリクス演算を効率よく処理するための命令を支援する。これらの命令は、大きく3種類の命令に区分できる。
マップ(MAP)命令は、例えば、複数のALU160を用いてデータを演算するための命令であって、Add、Sub、Abs、AbsDiff、Cmp、Mul、Sqrなどの演算を支援する。マップ(MAP)命令は、第1プロセッサ100のOR116をターゲットレジスタとし、被演算子としてIDA192及びCDA194のうちの少なくとも一つによるデータパターンを用いる。さらに、処理データの単位が8ビットなのか16ビットなのかを示すフィールドを含む。
リデュース(REDUCE)命令は、例えばツリー演算のための命令であって、Addツリー、最小ツリー、最大ツリーなどの演算を支援する。リデュース(REDUCE)命令は、第1プロセッサ100のOR116と第2プロセッサ200のVR214のうちの少なくとも一つをターゲットレジスタとし、IDA192及びCDA194のうちの少なくとも一つによるデータパターンを用いる。さらに、処理データの単位が8ビットなのか16ビットなのかを示すフィールドを含む。
マップリデュース(MAP_REDUCE)命令は、マップ演算とリデュース演算とを組み合わせた命令をいう。マップリデュース(MAP_REDUCE)命令は、第1プロセッサ100のOR116と第2プロセッサ200のVR214のうちの少なくとも一つをターゲットレジスタとし、IDA192及びCDA194のうちの少なくとも1つによるデータパターンを用いる。さらに、処理データの単位が8ビットなのか16ビットなのかを示すフィールドを含むる。
これまで説明した本発明の様々な実施形態によれば、第1プロセッサ100及び第2プロセッサ200は、同じISA(Instruction Set Architecture)を共有することにより、ROI演算に特化した第1プロセッサ100と算術演算に特化した第2プロセッサ200がインストラクション(instruction)レベルで共有されることにより制御が容易になる。また、第1プロセッサ100及び第2プロセッサ200は、レジスタを共有することにより、データの使用効率を増大し、メモリアクセス回数を低減できる。それだけでなく、第1プロセッサ100が処理する様々なサイズのデータ(例えば、マトリクス)に対するROI演算を効率よく行うためのデータパターンを用いることにより、イメージ、ビジョン及びニューラルネットワークに関する処理でよく使用される3×3、4×4、5×5、7×7、8×8、9×9、11×11のマトリクスに対して特に効率のよい処理が可能である。
図21及び図22は、図14の5×5マトリクスの畳み込み演算のための実際のアセンブリ命令の例を説明するための図である。
図20及び図21を参照すると、一番目のラインのMAPMUL_ReduceAcc16(IDA_Conv3(IR)、CDA_Conv3(CR、w16))命令におけるMAPMUL_ReduceAcc16は、図20のステージ、ターゲットレジスタ、被演算子1、被演算子2及びオペコード(Opcode)に基づいてMAPステージとReduceステージで行われる命令語を意味する。従って、16ビットのデータに対して、MAPステージではMul命令語を実行し、Reduceステージではaddツリーを実行するが、以前の加算結果をアキュムレーション(accumulation)するため、Acc命令語を使用する。各々のラインにおける演算子「:」は、第1プロセッサ100及び第2プロセッサ200の各スロット240a、240b、240c、240dで処理される命令語を区別する演算子である。従って、SIMD(Single Instruction Multiple Data)、及び多重スロットVLIW(Very Long Instruction Word)構造の命令語セットを用いて第1プロセッサ100及び第2プロセッサ200で演算動作を行う。例えば、MAPMul_ReduceAcc16は、第1プロセッサ100に該当するスロットに割り当てられ、命令語ShupReg=1は、第2プロセッサ200に該当するスロットに割り当てられる。命令語ShupRegはShiftup register命令語であり、図16で説明したとおりに演算に使用されるレジスタデータ領域(レジスタウィンドウ)を変更する命令語であり、第1プロセッサ100又は第2プロセッサ200で実行されるように実現できる。MAPMul_ReducedAcc16命令を除いたその他の命令語は、第2プロセッサ200に該当するスロットで実行でき、実現方法に応じて、これに限定されずに第1プロセッサ100でも実行できる。
このとき、IDA_Conv3(IR)、CDA_Conv3(CR、w16)という仮想のレジスタから入力値を受ける。Conv3は、図12の3×3マトリクスのデータパターンの入力をIR112とCR114から受けることを意味する。前記アセンブリ命令が実行されると、OR116の一番目のレーンには図12のマトリクスM11の結果が保存され、二番目のレーンにはマトリクスM12、三番目のレーンにはマトリクスM13の結果が保存され、以降のレーンにも同様の方法で結果が保存される。
二番目のアセンブリ命令MAPMUL_ReduceAcc16(IDA_Conv4(IR)、CDA_Conv4(CR、w16))は、入力データパターンのみを異ならせて同様の方法で演算される。このとき、入力は、前の5×5マトリクス演算で説明したように、4×4マトリクスから3×3マトリクスのデータを除いた残りのデータ(図22におけるD2領域からD1領域を除いた領域のイメージデータ)FUの各レーンに入力され、3×3の結果と一緒にaddツリーに乗ってOR116に該当結果を保存する。この結果は、サイズ4×4の畳み込み(convolultion)演算結果を意味する。
最後のMAPMUL_ReduceAcc16(IDA_Conv5(IR)、CDA_Conv5(CR、w16))は、5×5マトリクスから4×4マトリックスのデータを除いた残りのデータに対して前の演算と同一の演算を実行する。
この3つの命令語を実行すると、入力された5行の5×5マトリクスに対して畳み込みフィルタの結果がOR116に保存される。その後、演算ウィンドウが1ライン下りてきて第1行乃至第5行に該当する5×5マトリクス演算を再び実行するが、このために第5行のみ新たに入力を受け、以前に使用された第1行乃至第4行は図18に関連して説明したレジスタシフトアップ命令語を介して再使用する。
本実施形態によれば、一度入力されたデータは、メモリ装置から再び読み取られないので、メモリアクセス頻度を減らして性能とパワー効率を極大化できる。
以上、添付図面を参照して本発明の実施形態を説明したが、本発明は、前記実施形態に限定されず、互いに異なる多様な形態で製造でき、本発明の属する技術分野における通常の知識を有する者は、本発明の技術的思想や必須の特徴を変更せず、他の具体的な形態で実施できることを理解できるであろう。従って、上述した実施形態は、あらゆる面で例示的であって、限定的ではないと理解されるべきである。
1 半導体装置
100 第1プロセッサ
105 メモリ階層
110 内部レジスタ、レジスタファイル
112 第1レジスタ、IR(Image Register)
114 第1レジスタ、CR(Coefficient Register)
116 第1レジスタ、OR(Output Register)
120 ロードストアユニット(load store unit、LSU)
130 データ配置レイヤ
140 マップレイヤ
150 リデュースレイヤ
160 ALU(Arithmetic Logic Unit)
160a、160b、・・・、160c、160d 第1〜第9ALUグループ
170 制御部
190 DA(Data Arrange)モジュール
192 IDA(Image DA)
194 CDA(Coefficient DA)
200 第2プロセッサ
212 第2レジスタ、SR(Scalar Register)
214 第2レジスタ、VR(Vector Register)
220 フェッチユニット
230 デコーダ
240a、240b、240c、240d スロット(slot)
242a、242b、242d スカラー機能ユニット(Scalar Functional Unit、SFU)
242c FCE(Flexible Convolution Engine、フレキシブル畳み込みエンジン)ユニット
244a、244b、244c ベクトル機能ユニット(Vector Functional unit、VFU)
244d 制御命令(ConTrol、CT)ユニット
246a、246b、246c、246d 移動ユニット(Move unit、MV)
300 コントローラ
400 メモリバス

Claims (15)

  1. 第1レジスタを含み、前記第1レジスタを用いてROI(Region On Interest)演算を行う第1プロセッサと、
    第2レジスタを含み、前記第2レジスタを用いて算術演算を行う第2プロセッサと、を含み、
    前記第1レジスタは前記第2プロセッサによって共有され、前記第2レジスタは前記第1プロセッサによって共有されることを特徴とする半導体装置。
  2. 前記第1プロセッサ及び前記第2プロセッサは同じISA(Instruction Set Architecture)を共有することを特徴とする請求項1に記載の半導体装置。
  3. 前記第1プロセッサと前記第2プロセッサは互いに独立した電源によって駆動されることを特徴とする請求項1に記載の半導体装置。
  4. 前記第1プロセッサ及び前記第2プロセッサのうち未使用のプロセッサに対する電源は遮断されることを特徴とする請求項3に記載の半導体装置。
  5. 前記第1プロセッサは、1次元フィルタ演算、2次元フィルタ演算、センサス変換(Census Transform)演算、最小/最大(Min/Max)フィルタ演算、SAD(Sum of Absolute Difference)演算、SSD(Sum of Squared Difference)演算、NMS(Non Maximum Suppression)演算、及びマトリクス乗算演算のうちの少なくとも一つを行い、
    前記第2プロセッサは、予測(prediction)演算、ベクトルパーミュート(vector permute)演算、ベクトルビット操作(vector bit manipulation)演算、バタフライ(butterfly)演算、及び並べ替え(sorting)演算のうち少なくとも一つを行うことを特徴とする請求項1に記載の半導体装置。
  6. 第1レジスタを含み、前記第1レジスタを用いてROI(Region On Interest)演算を行う第1プロセッサと、
    第2レジスタを含み、前記第2レジスタを用いて算術演算を行う第2プロセッサと、を含み、
    前記第1プロセッサ及び前記第2プロセッサは同じISA(Instruction Set Architecture)を共有することを特徴とする半導体装置。
  7. 前記第1レジスタは前記第2プロセッサによって共有され、前記第2レジスタは前記第1プロセッサによって共有されることを特徴とする請求項6に記載の半導体装置。
  8. 前記第1レジスタはIR(Image Register)、CR(Coefficient Register)、及びOR(Output Register)のうちの少なくとも一つを含む、ことを特徴とする請求項1又は6に記載の半導体装置。
  9. 前記第2レジスタはSR(Scalar Register)及びVR(Vector Register)のうちの少なくとも一つを含むことを特徴とする請求項6に記載の半導体装置。
  10. 前記第1プロセッサは、処理するデータを再並列するデータ配置ユニット(data arrange unit)を含むことを特徴とする請求項6に記載の半導体装置。
  11. 前記第1プロセッサは、互いに並列に配置された複数のALU(Arithmetic Logic Unit)を含み、
    前記複数のALUは、前記データ配置ユニットによって再配列された前記データを並列処理することを特徴とする請求項10に記載の半導体装置。
  12. 前記第2プロセッサは、VLIW(Very Long Instruction Word)に基づくインストラクションを処理することを特徴とする請求項1又は6に記載の半導体装置。
  13. 前記第2プロセッサは、
    VLIWインストラクションを提供するフェッチユニットと、
    前記VLIWインストラクションを複数のインストラクションにデコードするデコーダを含むことを特徴とする請求項12に記載の半導体装置。
  14. 前記第2プロセッサによって処理されるインストラクションは2つ以上のスロット(slot)を含むことを特徴とする請求項12に記載の半導体装置。
  15. 前記2つ以上のスロットのうちの少なくとも一つのスロットは前記第1プロセッサを用いて実行されることを特徴とする請求項14に記載の半導体装置。
JP2018060426A 2017-03-31 2018-03-27 半導体装置 Active JP7154788B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170042125A KR102235803B1 (ko) 2017-03-31 2017-03-31 반도체 장치
KR10-2017-0042125 2017-03-31

Publications (2)

Publication Number Publication Date
JP2018173956A true JP2018173956A (ja) 2018-11-08
JP7154788B2 JP7154788B2 (ja) 2022-10-18

Family

ID=63865574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018060426A Active JP7154788B2 (ja) 2017-03-31 2018-03-27 半導体装置

Country Status (5)

Country Link
US (4) US10409593B2 (ja)
JP (1) JP7154788B2 (ja)
KR (1) KR102235803B1 (ja)
CN (1) CN109447892B (ja)
TW (1) TWI776838B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11175915B2 (en) * 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US20220334634A1 (en) * 2021-04-16 2022-10-20 Maxim Integrated Products, Inc. Systems and methods for reducing power consumption in embedded machine learning accelerators

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0554116A (ja) * 1991-08-29 1993-03-05 Toshiba Corp 関心領域設定方法及び画像処理装置
JP2000020326A (ja) * 1998-04-28 2000-01-21 Nec Corp プロセッサにおけるレジスタ内容の継承装置
JP2012128805A (ja) * 2010-12-17 2012-07-05 Fujitsu Semiconductor Ltd グラフィックスプロセッサ
JP2013196672A (ja) * 2012-03-23 2013-09-30 Toshiba Corp マルチプロセッサシステムおよび電力制御方法
JP2015053617A (ja) * 2013-09-06 2015-03-19 キヤノン株式会社 画像処理装置、画像処理方法、プログラムおよび記憶媒体

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
JP2889842B2 (ja) 1994-12-01 1999-05-10 富士通株式会社 情報処理装置及び情報処理方法
US6362868B1 (en) * 1997-07-15 2002-03-26 Silverbrook Research Pty Ltd. Print media roll and ink replaceable cartridge
US6139498A (en) 1998-12-29 2000-10-31 Ge Diasonics Israel, Ltd. Ultrasound system performing simultaneous parallel computer instructions
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
JP2001014139A (ja) 1999-06-28 2001-01-19 Nec Corp ワークファイルを使用するマルチスレッドソート処理方式及び処理方法
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US6898691B2 (en) 2001-06-06 2005-05-24 Intrinsity, Inc. Rearranging data between vector and matrix forms in a SIMD matrix processor
JP3805314B2 (ja) * 2003-02-27 2006-08-02 Necエレクトロニクス株式会社 プロセッサ
US7162573B2 (en) 2003-06-25 2007-01-09 Intel Corporation Communication registers for processing elements
GB2409066B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7386842B2 (en) 2004-06-07 2008-06-10 International Business Machines Corporation Efficient data reorganization to satisfy data alignment constraints
JP2006011924A (ja) * 2004-06-28 2006-01-12 Fujitsu Ltd 再構成可能演算装置および半導体装置
CA2572954A1 (en) * 2004-07-13 2006-02-16 3Plus1 Technology, Inc. Programmable processor system with two types of sub-processors to execute multimedia applications
JP2006236715A (ja) 2005-02-23 2006-09-07 Matsushita Electric Works Ltd 照明器具
JP2007004542A (ja) * 2005-06-24 2007-01-11 Renesas Technology Corp 半導体信号処理装置
US20070116357A1 (en) * 2005-11-23 2007-05-24 Agfa-Gevaert Method for point-of-interest attraction in digital images
US7624250B2 (en) 2005-12-05 2009-11-24 Intel Corporation Heterogeneous multi-core processor having dedicated connections between processor cores
KR100739785B1 (ko) 2006-01-09 2007-07-13 삼성전자주식회사 관심 영역 기반 영상 부호화, 복호화 방법 및 장치
US20070239970A1 (en) * 2006-04-06 2007-10-11 I-Tao Liao Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File
US7697443B2 (en) * 2006-04-13 2010-04-13 International Business Machines Corporation Locating hardware faults in a parallel computer
TW200813724A (en) * 2006-07-28 2008-03-16 Samsung Electronics Co Ltd Multipath accessible semiconductor memory device with host interface between processors
CN101163240A (zh) * 2006-10-13 2008-04-16 国际商业机器公司 一种滤波装置及其方法
US8725991B2 (en) 2007-09-12 2014-05-13 Qualcomm Incorporated Register file system and method for pipelined processing
US8213515B2 (en) * 2008-01-11 2012-07-03 Texas Instruments Incorporated Interpolated skip mode decision in video compression
US8248422B2 (en) 2008-01-18 2012-08-21 International Business Machines Corporation Efficient texture processing of pixel groups with SIMD execution unit
JP2010015257A (ja) * 2008-07-01 2010-01-21 Canon Inc 画像処理装置、画像処理方法、及びプログラム
US9652231B2 (en) 2008-10-14 2017-05-16 International Business Machines Corporation All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture
EP2366144B1 (en) * 2008-10-15 2015-09-30 Hyperion Core, Inc. Sequential processor comprising an alu array
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
JP5445469B2 (ja) 2009-01-13 2014-03-19 日本電気株式会社 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント
JP2010192983A (ja) * 2009-02-16 2010-09-02 Renesas Electronics Corp フィルタ処理装置及び半導体装置
KR101110550B1 (ko) 2009-04-08 2012-02-08 한양대학교 산학협력단 프로세서 장치, 멀티 프로세서 시스템 및 멀티 프로세서 시스템의 공유메모리 접근 방법
KR101027906B1 (ko) 2009-04-28 2011-04-12 한국과학기술원 물체 인식 방법 및 장치
KR101662769B1 (ko) 2010-03-09 2016-10-05 삼성전자주식회사 고속 정렬 장치 및 방법
KR101079691B1 (ko) 2010-06-01 2011-11-04 공주대학교 산학협력단 데이터 정렬 방법과 상기 방법을 수행할 수 있는 장치들
KR101670958B1 (ko) 2010-11-30 2016-11-01 삼성전자주식회사 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치
GB2489914B (en) * 2011-04-04 2019-12-18 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector operations
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
JP5829331B2 (ja) * 2011-09-27 2015-12-09 ルネサスエレクトロニクス株式会社 Simdプロセッサシステムにおいて複数の対象領域(roi)を同時並列的にデータ転送するための装置
JP5708450B2 (ja) 2011-11-10 2015-04-30 富士通株式会社 マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム
CN102707931A (zh) * 2012-05-09 2012-10-03 刘大可 一种基于并行数据通道的数字信号处理器
US9405538B2 (en) 2012-12-28 2016-08-02 Intel Corporation Functional unit having tree structure to support vector sorting algorithm and other algorithms
KR20140092135A (ko) 2013-01-15 2014-07-23 한국전자통신연구원 빅 데이터를 위한 병렬 정렬 방법 및 장치
KR101482229B1 (ko) 2013-04-29 2015-01-14 주식회사 실리콘아츠 컴퓨터 실행 가능한 데이터 정렬 방법, 이를 수행하는 데이터 정렬 시스템 및 이를 저장하는 기록매체
KR102122406B1 (ko) 2013-11-06 2020-06-12 삼성전자주식회사 셔플 명령어 처리 장치 및 방법
KR102310246B1 (ko) 2014-04-23 2021-10-08 삼성전자주식회사 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
KR101573618B1 (ko) 2014-07-04 2015-12-01 한양대학교 산학협력단 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치
US9563953B2 (en) * 2014-08-28 2017-02-07 Qualcomm Incorporated Systems and methods for determining a seam
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
JP2016091488A (ja) 2014-11-11 2016-05-23 アズビル株式会社 データソート方法およびプログラム
JP2016112285A (ja) 2014-12-17 2016-06-23 日立アロカメディカル株式会社 超音波診断装置
KR102332523B1 (ko) * 2014-12-24 2021-11-29 삼성전자주식회사 연산 처리 장치 및 방법
KR101665207B1 (ko) 2014-12-31 2016-10-14 (주)베라시스 복수개의 검출윈도우를 통한 관심영역에서의 차량식별방법
KR101645517B1 (ko) * 2015-04-01 2016-08-05 주식회사 씨케이앤비 특징점 추출 장치 및 방법과 이를 이용한 콘텐츠의 온라인 유통 현황 분석을 위한 이미지 매칭 시스템
US9569661B2 (en) * 2015-05-21 2017-02-14 Futurewei Technologies, Inc. Apparatus and method for neck and shoulder landmark detection
JP2017037505A (ja) * 2015-08-11 2017-02-16 ルネサスエレクトロニクス株式会社 半導体装置
US20170337156A1 (en) * 2016-04-26 2017-11-23 Onnivation Llc Computing machine architecture for matrix and array processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0554116A (ja) * 1991-08-29 1993-03-05 Toshiba Corp 関心領域設定方法及び画像処理装置
JP2000020326A (ja) * 1998-04-28 2000-01-21 Nec Corp プロセッサにおけるレジスタ内容の継承装置
JP2012128805A (ja) * 2010-12-17 2012-07-05 Fujitsu Semiconductor Ltd グラフィックスプロセッサ
JP2013196672A (ja) * 2012-03-23 2013-09-30 Toshiba Corp マルチプロセッサシステムおよび電力制御方法
JP2015053617A (ja) * 2013-09-06 2015-03-19 キヤノン株式会社 画像処理装置、画像処理方法、プログラムおよび記憶媒体

Also Published As

Publication number Publication date
KR20180111321A (ko) 2018-10-11
US20180300128A1 (en) 2018-10-18
CN109447892B (zh) 2023-11-28
TW201837716A (zh) 2018-10-16
JP7154788B2 (ja) 2022-10-18
US20210216312A1 (en) 2021-07-15
KR102235803B1 (ko) 2021-04-06
US20190347096A1 (en) 2019-11-14
US11645072B2 (en) 2023-05-09
US10990388B2 (en) 2021-04-27
US20230236832A1 (en) 2023-07-27
CN109447892A (zh) 2019-03-08
US10409593B2 (en) 2019-09-10
TWI776838B (zh) 2022-09-11

Similar Documents

Publication Publication Date Title
KR102258414B1 (ko) 처리 장치 및 처리 방법
EP3798928A1 (en) Deep learning implementations using systolic arrays and fused operations
CN104838357B (zh) 向量化方法、系统及处理器
US11579880B2 (en) Systems for performing instructions to quickly convert and use tiles as 1D vectors
EP3623941B1 (en) Systems and methods for performing instructions specifying ternary tile logic operations
US10248384B2 (en) Arithmetic processing device and control method for arithmetic processing device
US10922077B2 (en) Apparatuses, methods, and systems for stencil configuration and computation instructions
US10649771B2 (en) Semiconductor device
US20230236832A1 (en) Semiconductor device
CN110058886A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
JP2005309499A (ja) プロセッサ
US11321092B1 (en) Tensor-based memory access
EP3329363B1 (en) Vector arithmethic instruction
US9690752B2 (en) Method and system for performing robust regular gridded data resampling
EP3929733A1 (en) Matrix transpose and multiply
JP6818010B2 (ja) ベクトル長クエリ命令
CN110914801B (zh) 在数据处理设备中的向量交叉
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
CN110826722A (zh) 用于通过排序来生成索引并基于排序对元素进行重新排序的系统、装置和方法
JP2004334297A (ja) 並列演算処理装置及び並列演算処理方法
CN116302117A (zh) 数据处理方法及装置、处理器、电子设备、存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180717

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220418

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221005

R150 Certificate of patent or registration of utility model

Ref document number: 7154788

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150