JP7208920B2 - ラインバッファユニット単位メモリ割り当ての決定 - Google Patents
ラインバッファユニット単位メモリ割り当ての決定 Download PDFInfo
- Publication number
- JP7208920B2 JP7208920B2 JP2019559299A JP2019559299A JP7208920B2 JP 7208920 B2 JP7208920 B2 JP 7208920B2 JP 2019559299 A JP2019559299 A JP 2019559299A JP 2019559299 A JP2019559299 A JP 2019559299A JP 7208920 B2 JP7208920 B2 JP 7208920B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- line buffer
- execution
- simulated
- image
- 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.)
- Active
Links
- 239000000872 buffer Substances 0.000 title claims description 224
- 230000015654 memory Effects 0.000 title claims description 149
- 238000000034 method Methods 0.000 claims description 87
- 238000012545 processing Methods 0.000 claims description 79
- 238000004088 simulation Methods 0.000 claims description 48
- 238000012546 transfer Methods 0.000 claims description 37
- 238000003860 storage Methods 0.000 claims description 21
- 230000006399 behavior Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 9
- 238000003491 array Methods 0.000 claims description 6
- 230000001934 delay Effects 0.000 claims 2
- 230000003449 preventive effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 15
- 125000001475 halogen functional group Chemical group 0.000 description 15
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 230000005574 cross-species transmission Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/08—HW-SW co-design, e.g. HW-SW partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
Description
本発明の分野は、一般に、計算科学に関し、より具体的には、ラインバッファユニット単位メモリ割り当ての決定に関する。
画像処理には、通常、アレイに編成された画素値の処理が伴う。ここで、空間的に編成された2次元アレイは、画像の2次元の特性をキャプチャする(さらなる次元として、時間(たとえば、一続きの2次元画像)およびデータ型(たとえば、色)を含み得る)。通常のシナリオでは、配列された画素値は、静止画像または動きを撮影するための一続きのフレームを生成したカメラによって提供される。従来の画像処理プロセッサは、通常、両極端に分かれる。
ある方法について記載する。この方法は、画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることを含む。シミュレートすることは、生成カーネルのモデルから消費カーネルのモデルに通信される画像データのラインを格納および転送するシミュレートされたラインバッファメモリでカーネル間通信をインターセプトすることを含む。シミュレートすることは、シミュレーションランタイムにわたって、それぞれのラインバッファメモリに格納されるそれぞれの画像データの量を追跡することをさらに含む。この方法は、追跡されたそれぞれの画像データの量から、対応するハードウェアラインバッファメモリのそれぞれのハードウェアメモリ割り当てを決定することも含む。この方法は、画像処理アプリケーションソフトウェアプログラムを実行するために、画像プロセッサのために構成情報を生成することも含む。構成情報は、画像プロセッサのハードウェアラインバッファメモリのハードウェアメモリ割り当てを記述する。
1.0 ユニークな画像処理プロセッサのアーキテクチャ
当技術分野において周知であるように、プログラムコードを実行するための基本的な回路構成は、実行ステージと、レジスタ空間とを含む。実行ステージは、命令を実行するための実行部を含んでいる。実行される命令のための入力オペランドがレジスタ空間から実行ステージに提供される。実行ステージが命令を実行することによって生成される結果は、レジスタ空間に書き戻される。
上記の説明から理解することができるように、ハードウェアプラットフォームは無数の異なるアプリケーションソフトウェアプログラム構造をサポートすることができる。つまり、実質的に無制限の数の異なる複雑なカーネル間接続をサポートすることができる。
図8a~図8e~図12は、上述した画像処理プロセッサおよび関連するステンシルプロセッサの様々な実施形態のより詳細な動作および設計を提供する図である。ライングループをステンシルプロセッサの関連するシート生成部にラインバッファ部が送るという図2の説明を思い返すと、図8a~図8eは、ラインバッファ部201の解析アクティビティ、シート生成部203の細粒度の解析アクティビティ、およびシート生成部203に連結されるステンシルプロセッサ702のステンシル処理アクティビティの実施形態をハイレベルで示す図である。
上述した様々な画像処理プロセッサのアーキテクチャの特徴は、必ずしも従来の意味での画像処理に限られないため、画像処理プロセッサを新たに特徴付け得る(または、させ得ない)その他のアプリケーションに適用してもよいことを指摘することが適切である。たとえば、上述した様々な画像処理プロセッサのアーキテクチャの特徴のうちのいずれかが、実際のカメラ画像の処理とは対照的に、アニメーションの作成ならびに/または生成および/もしくは描画に使用される場合、画像処理プロセッサは、GPU(Graphics Processing Unit)として特徴付けられてもよい。これに加えて、上述した画像処理プロセッサアーキテクチャの特徴を、映像処理、ビジョンプロセッシング、画像認識および/または機械学習など、その他の技術用途に適用してもよい。このように適用すると、画像処理プロセッサは、(たとえば、コプロセッサとして)、(たとえば、コンピューティングシステムのCPU:Central Processing Unitまたはその一部である)より汎用的なプロセッサと統合されてもよく、または、コンピューティングシステム内のスタンドアロン型のプロセッサであってもよい。
例1:コンピューティングシステムによって処理されると、上記コンピューティングシステムに方法を実行させるプログラムコードを含む機械可読記憶媒体であって、上記方法は、
a)画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることを含み、上記シミュレートすることは、生成カーネルのモデルから消費カーネルのモデルに通信される画像データのラインを格納および転送するシミュレートされたラインバッファメモリでカーネル間通信をインターセプトすることを含み、上記シミュレートすることは、さらに、シミュレーションランタイムにわたって、それぞれのラインバッファメモリに格納されるそれぞれの画像データの量を追跡することを含み、上記方法はさらに、
b)追跡されたそれぞれの画像データの量から、対応するハードウェアラインバッファメモリのそれぞれのハードウェアメモリ割り当てを決定することと、
c)上記画像処理アプリケーションソフトウェアプログラムを実行するよう、画像プロセッサのために構成情報を生成することとを含み、上記構成情報は、上記画像プロセッサのハードウェアラインバッファメモリのハードウェアメモリ割り当てを記述する、機械可読記憶媒体。
中央処理ユニットと、
システムメモリと、
上記システムメモリと上記中央処理ユニットとの間のシステムメモリコントローラと、
上記コンピューティングシステムによって処理されると上記コンピューティングシステムに方法を実行させるプログラムコードを含む機械可読記憶媒体とを備え、上記方法は、
a)画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることを含み、上記シミュレートすることは、生成カーネルのモデルから消費カーネルのモデルに通信される画像データのラインを格納および転送するシミュレートされたラインバッファメモリでカーネル間通信をインターセプトすることを含み、上記シミュレートすることは、さらに、シミュレーションランタイムにわたって、それぞれのラインバッファメモリに格納されるそれぞれの画像データの量を追跡することを含み、上記方法はさらに、
b)追跡されたそれぞれの画像データの量から、対応するハードウェアラインバッファメモリのそれぞれのハードウェアメモリ割り当てを決定することと、
c)上記画像処理アプリケーションソフトウェアプログラムを実行するよう、画像プロセッサのために構成情報を生成することとを含み、上記構成情報は、上記画像プロセッサのハードウェアラインバッファメモリのハードウェアメモリ割り当てを記述する、コンピューティングシステム。
a)画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることを備え、上記シミュレートすることは、生成カーネルのモデルから消費カーネルのモデルに通信される画像データのラインを格納および転送するシミュレートされたラインバッファメモリでカーネル間通信をインターセプトすることを含み、上記シミュレートすることは、さらに、シミュレーションランタイムにわたって、それぞれのラインバッファメモリに格納されるそれぞれの画像データの量を追跡することを含み、上記方法はさらに、
b)追跡されたそれぞれの画像データの量から、対応するハードウェアラインバッファメモリのそれぞれのハードウェアメモリ割り当てを決定することと、
c)上記画像処理アプリケーションソフトウェアプログラムを実行するよう、画像プロセッサのために構成情報を生成することとを備え、上記構成情報は、上記画像プロセッサのハードウェアラインバッファメモリのハードウェアメモリ割り当てを記述する、方法。
Claims (29)
- 方法であって、
a)コンピューティングシステムが、複数のカーネルを含む画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることを含み、各カーネルは、ラインバッファから他のカーネルによって生成された格納データを読み出すロード命令、または、ラインバッファに他のカーネルによって消費される格納データを書き込むストア命令、または両方を備え、前記画像処理アプリケーションソフトウェアプログラムの前記実行をシミュレートすることは、生成カーネルのモデルから消費カーネルのモデルに通信される画像データのラインを格納および転送するシミュレートされたラインバッファでカーネルモデル間通信をインターセプトすることによって、複数のラインバッファの動作を複数のシミュレートされたラインバッファを用いてシミュレートすることを含み、前記シミュレートすることは、さらに、シミュレーションランタイムにわたって、以下の動作を実行することによってそれぞれの前記シミュレートされたラインバッファに格納されるそれぞれの画像データの量を追跡することを含み、前記以下の動作は、
前記ロード命令によって参照されるラインバッファをシミュレートするそれぞれのシミュレートされたラインバッファに対するそれぞれの読み出しポインタを更新することを含めて、複数のカーネルに生じる各ロード命令をシミュレートすることと、
前記ストア命令によって参照されるラインバッファをシミュレートするそれぞれのシミュレートされたラインバッファに対するそれぞれの書き込みポインタを更新することを含めて、複数のカーネルに生じる各ストア命令をシミュレートすることとを含み、各読み出しポインタは、対応するシミュレートされたラインバッファからこれまでにどれだけのデータが読み出されたかを特定し、各書き込みポインタは、対応するシミュレートされたラインバッファにこれまでにどれだけのデータが書き込まれたかを特定し、前記方法はさらに、
b)前記コンピューティングシステムが、前記シミュレートされたラインバッファの各々に対して、前記シミュレーションの間に遭遇する前記シミュレートされたラインバッファのそれぞれの読み出しポインタとそれぞれの書き込みポインタとの間のそれぞれの最大差を計算することによって、追跡されたそれぞれの画像データの量から、対応するハードウェアラインバッファのそれぞれのハードウェアメモリ割り当てを決定することと、
c)前記コンピューティングシステムが、前記シミュレートされたラインバッファの各々に対して計算された前記それぞれの最大差に基づいて、画像プロセッサの前記ラインバッファの各々に割り当てるそれぞれメモリサイズを生成することによって、前記画像処理アプリケーションソフトウェアプログラムを実行するための前記画像プロセッサの構成情報を生成することとを含み、前記構成情報は、前記画像プロセッサのハードウェアラインバッファのハードウェアメモリ割り当てを記述する、方法。 - 前記画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることは、前記画像データを消費するカーネルの1つ以上のモデルが次の画像データのユニットを受け取るべく待機状態となるまで、前記次の画像データのユニットがシミュレートされたラインバッファに書き込まれることを防ぐ書き込みポリシーを課すことをさらに含む、請求項1に記載の方法。
- 前記書き込みポリシーは、前記次の画像データのユニットを生成する生成カーネルのモデルで実施される、請求項2に記載の方法。
- 前記方法は、さらに、前記画像処理アプリケーションソフトウェアプログラムのシミュレートされた実行がデッドロックする場合に、前記書き込みポリシーに違反することを許可することを含む、請求項2または請求項3に記載の方法。
- 前記カーネルは、ハードウェア画像プロセッサの異なる処理コア上で動作し、前記ハードウェア画像プロセッサは、前記処理コア間で渡されるライングループを格納および転送するハードウェアラインバッファユニットを含む、請求項1~請求項4のいずれか1項に記載の方法。
- 前記異なる処理コアは、2次元実行レーンおよび2次元シフトレジスタアレイを含む、請求項5に記載の方法。
- 前記生成カーネルのモデルおよび前記消費カーネルのモデルは、画像データをシミュレートされたラインバッファに送る命令を含み、シミュレートされたラインバッファから画像データを読み出す命令を含むが、画像データを実質的に処理する命令は含まない、請求項1~請求項6のいずれか1項に記載の方法。
- 前記画像プロセッサのアーキテクチャが、2次元シフトレジスタアレイに結合された実行のアレイを含む、請求項1~請求項7のいずれか1項に記載の方法。
- 前記画像プロセッサのアーキテクチャは、ラインバッファ、シート生成部、および/またはステンシルプロセッサのうちの少なくとも1つを含む、請求項1~請求項8のいずれか1項に記載の方法。
- 前記ステンシルプロセッサは、重複するステンシルを処理するように構成される、請求項9に記載の方法。
- データ計算ユニットが、実行レーンアレイよりも広い次元を有するシフトレジスタ構造を備え、特に前記実行レーンアレイの外側にレジスタがある、請求項1~請求項10のいずれか1項に記載の方法。
- コンピューティングシステムであって、
中央処理ユニットと、
システムメモリと、
前記システムメモリと前記中央処理ユニットとの間のシステムメモリコントローラと、
前記コンピューティングシステムによって処理されると前記コンピューティングシステムに方法を実行させるプログラムコードを含む機械可読記憶媒体とを備え、前記方法は、
a)複数のカーネルを含む画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることを含み、各カーネルは、ラインバッファから他のカーネルによって生成された格納データを読み出すロード命令、または、ラインバッファに他のカーネルによって消費される格納データを書き込むストア命令、または両方を備え、前記画像処理アプリケーションソフトウェアプログラムの前記実行をシミュレートすることは、生成カーネルのモデルから消費カーネルのモデルに通信される画像データのラインを格納および転送するシミュレートされたラインバッファでカーネルモデル間通信をインターセプトすることによって、複数のラインバッファの動作を複数のシミュレートされたラインバッファを用いてシミュレートすることを含み、前記シミュレートすることは、さらに、シミュレーションランタイムにわたって、以下の動作を実行することによってそれぞれの前記シミュレートされたラインバッファに格納されるそれぞれの画像データの量を追跡することを含み、前記以下の動作は、
前記ロード命令によって参照されるラインバッファをシミュレートするそれぞれのシミュレートされたラインバッファに対するそれぞれの読み出しポインタを更新することを含めて、複数のカーネルに生じる各ロード命令をシミュレートすることと、
前記ストア命令によって参照されるラインバッファをシミュレートするそれぞれのシミュレートされたラインバッファに対するそれぞれの書き込みポインタを更新することを含めて、複数のカーネルに生じる各ストア命令をシミュレートすることとを含み、各読み出しポインタは、対応するシミュレートされたラインバッファからこれまでにどれだけのデータが読み出されたかを特定し、各書き込みポインタは、対応するシミュレートされたラインバッファにこれまでにどれだけのデータが書き込まれたかを特定し、前記方法はさらに、
b)前記シミュレートされたラインバッファの各々に対して、前記シミュレーションの間に遭遇する前記シミュレートされたラインバッファのそれぞれの読み出しポインタとそれぞれの書き込みポインタとの間のそれぞれの最大差を計算することによって、追跡されたそれぞれの画像データの量から、対応するハードウェアラインバッファのそれぞれのハードウェアメモリ割り当てを決定することと、
c)前記シミュレートされたラインバッファの各々に対して計算された前記それぞれの最大差に基づいて、画像プロセッサの前記ラインバッファの各々に割り当てるそれぞれメモリサイズを生成することによって、前記画像処理アプリケーションソフトウェアプログラムを実行するための前記画像プロセッサの構成情報を生成することとを含み、前記構成情報は、前記画像プロセッサのハードウェアラインバッファのハードウェアメモリ割り当てを記述する、コンピューティングシステム。 - 前記画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることは、前記画像データを消費するカーネルの1つ以上のモデルが次の画像データのユニットを受け取るべく待機状態となるまで、前記次の画像データのユニットがシミュレートされたラインバッファに書き込まれることを防ぐ書き込みポリシーを課すことをさらに含む、請求項12に記載のコンピューティングシステム。
- 前記書き込みポリシーは、前記次の画像データのユニットを生成する生成カーネルのモデルで実施される、請求項13に記載のコンピューティングシステム。
- 前記方法は、さらに、前記画像処理アプリケーションソフトウェアプログラムのシミュレートされた実行がデッドロックする場合に、前記書き込みポリシーに違反することを許可することを含む、請求項13または請求項14に記載のコンピューティングシステム。
- 前記画像プロセッサのアーキテクチャが、2次元シフトレジスタアレイに結合された実行のアレイを含む、請求項12~請求項15のいずれか1項に記載のコンピューティングシステム。
- 前記画像プロセッサのアーキテクチャは、ラインバッファ、シート生成部、および/またはステンシルプロセッサのうちの少なくとも1つを含む、請求項12~請求項16のいずれか1項に記載のコンピューティングシステム。
- 前記ステンシルプロセッサは、重複するステンシルを処理するように構成される、請求項17に記載のコンピューティングシステム。
- データ計算ユニットが、実行レーンアレイよりも広い次元を有するシフトレジスタ構造を備え、特に前記実行レーンアレイの外側にレジスタがある、請求項12~請求項18のいずれか1項に記載のコンピューティングシステム。
- 前記画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることは、1つ以上のシミュレートされたロード命令がストールされるまで次の画像データのユニットが特定のシミュレートされたラインバッファに書き込まれることを防ぐ書き込みポリシーを、前記特定のシミュレートされたラインバッファに対して課すことを含む、請求項1~請求項11のいずれか1項に記載の方法。
- 前記コンピューティングシステムが、前記複数のカーネルのうちの1つ以上からロード命令でもストア命令でもない1つ以上の命令を取り除くことをさらに含む、請求項1~請求項11および請求項20のいずれか1項に記載の方法。
- 前記画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることは、前記複数のカーネルのうちの1つ以上から取り除かれた命令に対するそれぞれの遅延をシミュレートすることを含む、請求項21に記載の方法。
- 前記複数のシミュレートされたラインバッファの各々は、前記画像プロセッサの複数の処理コア間のデータをバッファリングするように構成された複数のラインバッファを有する画像プロセッサのそれぞれのラインバッファに対応する、請求項1~請求項11および請求項20~請求項22のいずれか1項に記載の方法。
- 前記画像処理アプリケーションソフトウェアプログラムは、2次元実行レーンアレイおよび2次元シフトレジスタアレイを有する処理コアによって実行されるようにコンパイルされたコードである、請求項23に記載の方法。
- 前記複数のシミュレートされたラインバッファの各々は、メモリの無制限の部分を備える、請求項1~請求項11および請求項20~請求項24のいずれか1項に記載の方法。
- 前記画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることは、1つ以上のシミュレートされたロード命令がストールされるまで次の画像データのユニットが特定のシミュレートされたラインバッファに書き込まれることを防ぐ書き込みポリシーを、前記特定のシミュレートされたラインバッファに対して課すことを含む、請求項12~請求項19のいずれか1項に記載のコンピューティングシステム。
- 前記方法は、前記複数のカーネルのうちの1つ以上からロード命令でもストア命令でもない1つ以上の命令を取り除くことをさらに含む、請求項12~請求項19および請求項26のいずれか1項に記載のコンピューティングシステム。
- 前記画像処理アプリケーションソフトウェアプログラムの実行をシミュレートすることは、前記複数のカーネルのうちの1つ以上から取り除かれた命令に対するそれぞれの遅延をシミュレートすることを含む、請求項27に記載のコンピューティングシステム。
- コンピューティングシステムによって処理されると、前記コンピューティングシステムに請求項1~請求項11および請求項20から請求項25のいずれか1項に記載の方法を実行させるプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/594,512 US10430919B2 (en) | 2017-05-12 | 2017-05-12 | Determination of per line buffer unit memory allocation |
US15/594,512 | 2017-05-12 | ||
PCT/US2018/012875 WO2018208334A1 (en) | 2017-05-12 | 2018-01-09 | Determination of per line buffer unit memory allocation |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2020519993A JP2020519993A (ja) | 2020-07-02 |
JP2020519993A5 JP2020519993A5 (ja) | 2020-08-13 |
JP7208920B2 true JP7208920B2 (ja) | 2023-01-19 |
Family
ID=61599563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019559299A Active JP7208920B2 (ja) | 2017-05-12 | 2018-01-09 | ラインバッファユニット単位メモリ割り当ての決定 |
Country Status (7)
Country | Link |
---|---|
US (2) | US10430919B2 (ja) |
EP (1) | EP3622399B1 (ja) |
JP (1) | JP7208920B2 (ja) |
KR (1) | KR102279120B1 (ja) |
CN (1) | CN110574011B (ja) |
TW (2) | TWI750557B (ja) |
WO (1) | WO2018208334A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387988B2 (en) * | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US10489878B2 (en) * | 2017-05-15 | 2019-11-26 | Google Llc | Configurable and programmable image processor unit |
US10534639B2 (en) * | 2017-07-06 | 2020-01-14 | Bitfusion.io, Inc. | Virtualization of multiple coprocessors |
CN110706147B (zh) * | 2019-09-29 | 2023-08-11 | 阿波罗智联(北京)科技有限公司 | 图像处理的环境确定方法、装置、电子设备和存储介质 |
US11093400B2 (en) * | 2019-10-15 | 2021-08-17 | Sling Media Pvt. Ltd. | Lock-free sharing of live-recorded circular buffer resources |
CN114168524B (zh) * | 2021-12-07 | 2023-10-20 | 平头哥(上海)半导体技术有限公司 | 行缓存单元、加速单元、片上系统和行缓存配置方法 |
CN114333930B (zh) * | 2021-12-23 | 2024-03-08 | 合肥兆芯电子有限公司 | 多通道存储器存储装置、控制电路单元及其数据读取方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140040855A1 (en) | 2011-07-28 | 2014-02-06 | National Instruments Corporation | Optimization of a Data Flow Program Based on Access Pattern Information |
US20160313980A1 (en) | 2015-04-23 | 2016-10-27 | Google Inc. | Virtual Image Processor Instruction Set Architecture (ISA) And Memory Model And Exemplary Target Hardware Having A Two-Dimensional Shift Array Structure |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5398079A (en) * | 1993-01-27 | 1995-03-14 | General Instrument Corporation | Half-pixel interpolation for a motion compensated digital video system |
US7499960B2 (en) | 2001-10-01 | 2009-03-03 | Oracle International Corporation | Adaptive memory allocation |
EP1759380B1 (en) | 2004-05-14 | 2011-11-16 | NVIDIA Corporation | Low power programmable processor |
US7331037B2 (en) | 2004-08-12 | 2008-02-12 | National Instruments Corporation | Static memory allocation in a graphical programming system |
US8024549B2 (en) * | 2005-03-04 | 2011-09-20 | Mtekvision Co., Ltd. | Two-dimensional processor array of processing elements |
US7818725B1 (en) | 2005-04-28 | 2010-10-19 | Massachusetts Institute Of Technology | Mapping communication in a parallel processing environment |
JP4923602B2 (ja) | 2006-02-10 | 2012-04-25 | 富士ゼロックス株式会社 | 画像形成処理シミュレーション装置及び画像形成処理シミュレーション方法 |
US7890314B2 (en) | 2007-12-05 | 2011-02-15 | Seagate Technology Llc | Method for modeling performance of embedded processors having combined cache and memory hierarchy |
US20110191758A1 (en) | 2010-01-29 | 2011-08-04 | Michael Scharf | Optimized Memory Allocator By Analyzing Runtime Statistics |
US9256915B2 (en) * | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
US20150055861A1 (en) * | 2013-08-23 | 2015-02-26 | Amlogic Co., Ltd | Methods and Systems for Image Demosaicing |
US10055342B2 (en) | 2014-03-19 | 2018-08-21 | Qualcomm Incorporated | Hardware-based atomic operations for supporting inter-task communication |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
US11016742B2 (en) | 2015-06-24 | 2021-05-25 | Altera Corporation | Channel sizing for inter-kernel communication |
-
2017
- 2017-05-12 US US15/594,512 patent/US10430919B2/en active Active
-
2018
- 2018-01-09 CN CN201880028856.6A patent/CN110574011B/zh active Active
- 2018-01-09 EP EP18709813.2A patent/EP3622399B1/en active Active
- 2018-01-09 JP JP2019559299A patent/JP7208920B2/ja active Active
- 2018-01-09 KR KR1020197032090A patent/KR102279120B1/ko active IP Right Grant
- 2018-01-09 WO PCT/US2018/012875 patent/WO2018208334A1/en active Application Filing
- 2018-02-01 TW TW108147270A patent/TWI750557B/zh active
- 2018-02-01 TW TW107103560A patent/TWI684132B/zh active
-
2019
- 2019-09-27 US US16/585,834 patent/US10685423B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140040855A1 (en) | 2011-07-28 | 2014-02-06 | National Instruments Corporation | Optimization of a Data Flow Program Based on Access Pattern Information |
US20160313980A1 (en) | 2015-04-23 | 2016-10-27 | Google Inc. | Virtual Image Processor Instruction Set Architecture (ISA) And Memory Model And Exemplary Target Hardware Having A Two-Dimensional Shift Array Structure |
Also Published As
Publication number | Publication date |
---|---|
CN110574011A (zh) | 2019-12-13 |
TWI684132B (zh) | 2020-02-01 |
TW202014888A (zh) | 2020-04-16 |
KR20190135034A (ko) | 2019-12-05 |
JP2020519993A (ja) | 2020-07-02 |
TW201907298A (zh) | 2019-02-16 |
EP3622399A1 (en) | 2020-03-18 |
US20200098083A1 (en) | 2020-03-26 |
TWI750557B (zh) | 2021-12-21 |
US10685423B2 (en) | 2020-06-16 |
US20180330467A1 (en) | 2018-11-15 |
WO2018208334A1 (en) | 2018-11-15 |
US10430919B2 (en) | 2019-10-01 |
CN110574011B (zh) | 2023-06-27 |
KR102279120B1 (ko) | 2021-07-20 |
EP3622399B1 (en) | 2023-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6858239B2 (ja) | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 | |
JP7208920B2 (ja) | ラインバッファユニット単位メモリ割り当ての決定 | |
JP7202987B2 (ja) | 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ | |
JP6967570B2 (ja) | 画像プロセッサのためのエネルギ効率的なプロセッサコアアーキテクチャ | |
JP6793162B2 (ja) | 画像プロセッサのためのラインバッファユニット | |
JP6793228B2 (ja) | 画像プロセッサのためのシート生成部 | |
CN107430760B (zh) | 用于图像处理器的二维移位阵列 | |
CN107533750B (zh) | 虚拟图像处理器及在其上处理图像数据的方法和系统 | |
JP6775088B2 (ja) | 画像プロセッサランタイム効率を向上するためのプログラムコード変形 | |
JP6967597B2 (ja) | 設定可能な数のアクティブなコアを有する画像処理プロセッサおよびサポートする内部ネットワーク | |
TWI752343B (zh) | 用於執行絕對差計算之加總的執行單元電路、影像處理器以及方法 | |
JP6820428B2 (ja) | マルチコア画像プロセッサ上のアプリケーションソフトウェアの構成 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200608 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200608 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210719 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210803 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211104 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20211116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220316 |
|
C60 | Trial request (containing other claim documents, opposition documents) |
Free format text: JAPANESE INTERMEDIATE CODE: C60 Effective date: 20220316 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20220331 |
|
C21 | Notice of transfer of a case for reconsideration by examiners before appeal proceedings |
Free format text: JAPANESE INTERMEDIATE CODE: C21 Effective date: 20220405 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20220415 |
|
C211 | Notice of termination of reconsideration by examiners before appeal proceedings |
Free format text: JAPANESE INTERMEDIATE CODE: C211 Effective date: 20220420 |
|
C22 | Notice of designation (change) of administrative judge |
Free format text: JAPANESE INTERMEDIATE CODE: C22 Effective date: 20220726 |
|
C22 | Notice of designation (change) of administrative judge |
Free format text: JAPANESE INTERMEDIATE CODE: C22 Effective date: 20221025 |
|
C23 | Notice of termination of proceedings |
Free format text: JAPANESE INTERMEDIATE CODE: C23 Effective date: 20221115 |
|
C03 | Trial/appeal decision taken |
Free format text: JAPANESE INTERMEDIATE CODE: C03 Effective date: 20221213 |
|
C30A | Notification sent |
Free format text: JAPANESE INTERMEDIATE CODE: C3012 Effective date: 20221213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230106 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7208920 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |